<?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>226143</bug_id>
          
          <creation_ts>2021-05-22 10:14:54 -0700</creation_ts>
          <short_desc>Convert DestinationColorSpace from an enum to class wrapping a platform color space (CGColorSpaceRef for CG ports, etc.)</short_desc>
          <delta_ts>2021-05-24 18:26:32 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>226182</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>alecflett</cc>
    
    <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1762821</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-22 10:14:54 -0700</bug_when>
    <thetext>Convert DestinationColorSpace from an enum to class wrapping a platform color space (CGColorSpaceRef for CG ports, etc.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762824</commentid>
    <comment_count>1</comment_count>
      <attachid>429418</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-22 10:29:38 -0700</bug_when>
    <thetext>Created attachment 429418
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762825</commentid>
    <comment_count>2</comment_count>
      <attachid>429419</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-22 10:36:46 -0700</bug_when>
    <thetext>Created attachment 429419
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762826</commentid>
    <comment_count>3</comment_count>
      <attachid>429420</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-22 10:39:10 -0700</bug_when>
    <thetext>Created attachment 429420
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762827</commentid>
    <comment_count>4</comment_count>
      <attachid>429421</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-22 11:02:28 -0700</bug_when>
    <thetext>Created attachment 429421
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762844</commentid>
    <comment_count>5</comment_count>
      <attachid>429426</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-22 15:17:07 -0700</bug_when>
    <thetext>Created attachment 429426
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762845</commentid>
    <comment_count>6</comment_count>
      <attachid>429427</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-22 15:32:11 -0700</bug_when>
    <thetext>Created attachment 429427
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762846</commentid>
    <comment_count>7</comment_count>
      <attachid>429428</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-22 15:33:01 -0700</bug_when>
    <thetext>Created attachment 429428
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762852</commentid>
    <comment_count>8</comment_count>
      <attachid>429431</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-22 15:50:03 -0700</bug_when>
    <thetext>Created attachment 429431
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762872</commentid>
    <comment_count>9</comment_count>
      <attachid>429444</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-22 18:15:45 -0700</bug_when>
    <thetext>Created attachment 429444
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762878</commentid>
    <comment_count>10</comment_count>
      <attachid>429450</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-22 19:25:34 -0700</bug_when>
    <thetext>Created attachment 429450
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762913</commentid>
    <comment_count>11</comment_count>
      <attachid>429466</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-23 08:50:32 -0700</bug_when>
    <thetext>Created attachment 429466
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762915</commentid>
    <comment_count>12</comment_count>
      <attachid>429467</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-23 09:50:59 -0700</bug_when>
    <thetext>Created attachment 429467
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762922</commentid>
    <comment_count>13</comment_count>
      <attachid>429470</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-23 12:20:44 -0700</bug_when>
    <thetext>Created attachment 429470
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762923</commentid>
    <comment_count>14</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-23 12:22:19 -0700</bug_when>
    <thetext>Ultimately, DestinationColorSpace should be renamed to ColorSpace, and the existing ColorSpace enum should find a new name (perhaps we can push it out of platform and into the Style layer and call it StyleColorSpace or CSSExposedColorSpace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762927</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-23 12:47:46 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #14)
&gt; Ultimately, DestinationColorSpace should be renamed to ColorSpace, and the
&gt; existing ColorSpace enum should find a new name (perhaps we can push it out
&gt; of platform and into the Style layer and call it StyleColorSpace or
&gt; CSSExposedColorSpace.

Usually the best practice is to rename the short one to a longer name sooner. Then we can claim the ColorSpace name after it’s free and clear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762943</commentid>
    <comment_count>16</comment_count>
      <attachid>429470</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-23 13:16:01 -0700</bug_when>
    <thetext>Comment on attachment 429470
Patch

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

Is it OK to make this code less optimal? Would love to stay super-efficient for cases where these are the most common color spaces.

&gt; Source/WebCore/Headers.cmake:1297
&gt; +    platform/graphics/PlatformColorSpace.h

Not a huge fan of the word &quot;platform&quot;. Always confused about what exactly it means.

&gt; Source/WebCore/platform/graphics/DestinationColorSpace.h:36
&gt; +    WEBCORE_EXPORT static DestinationColorSpace SRGB();

Sure would be nice if functional ike this could be super-efficient, like constexpr. But instead it’s a function that calls another function to fetch the value of a global variable. Still not too bad, but for an idiom where we are constantly calling this, seems like it would be nice if this was something that could compile down to nothing.

&gt; Source/WebCore/platform/graphics/DestinationColorSpace.h:44
&gt; +    WEBCORE_EXPORT explicit DestinationColorSpace(PlatformColorSpace);

Doesn’t seem like this needs to be explicit. It’s a lossless conversion.

But maybe the agenda is to make this class contain more over time, and eventually the explicit will make sense?

&gt; Source/WebCore/platform/graphics/DestinationColorSpace.h:45
&gt; +    PlatformColorSpaceValue platformColorSpace() const { return m_platformColorSpace.get(); }

Seems unfortunate that this function name has to repeat the words &quot;color space&quot;. But we don’t have a great naming scheme for this sort of thing: &quot;underlying platform-specific representation of this platform-independent wrapper&quot;.

&gt; Source/WebCore/platform/graphics/PlatformColorSpace.h:41
&gt; +using PlatformColorSpace = RetainPtr&lt;CGColorSpaceRef&gt;;
&gt; +using PlatformColorSpaceValue = CGColorSpaceRef;

Wish we had a better idiom to relate these pairs of types. The &quot;main type&quot; and the &quot;peek type&quot;, to use our hash table value parlance.

&gt; Source/WebCore/platform/graphics/PlatformColorSpace.h:47
&gt; +    enum class Name {

Maybe &quot;: uint8_t&quot;?

&gt; Source/WebCore/platform/graphics/PlatformColorSpace.h:85
&gt; +    return PlatformColorSpace { *name };

Could also use:

    return { { *name } };

&gt; Source/WebCore/platform/graphics/RemoteVideoSample.cpp:59
&gt; +    auto ioSurface =  IOSurface::create(size, DestinationColorSpace::SRGB(), IOSurface::Format::BGRA);

Extra space here after &quot;=&quot;?

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:890
&gt; +    BeginClipToDrawingCommands(const FloatRect&amp; destination, const DestinationColorSpace&amp; colorSpace)
&gt;          : m_destination(destination)
&gt;          , m_colorSpace(colorSpace)
&gt;      {
&gt;      }

Do we need this? it’s just convenience because the caller can copy and then call the rvalue reference version of the constructor. In fact, can also write this:

    BeginClipToDrawingCommands(const FloatRect&amp; destination, const DestinationColorSpace&amp; colorSpace)
        : BeginClipToDrawingCommands { destination, DestinationColorSpace { colorSpace } }
    {
    }

To avoid repeating anything at all. Might put the rvalue reference version first and treat it as the &quot;main&quot; version.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:1985
&gt; +    GetPixelBuffer(const PixelBufferFormat&amp; outputFormat, const IntRect&amp; srcRect)
&gt;          : m_srcRect(srcRect)
&gt;          , m_outputFormat(outputFormat)
&gt;      {
&gt;      }

Same here.

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:1996
&gt; +    ~GetPixelBuffer() { }

= default instead? Or does that not force a non-trivial destructor? Surprised that this qualifies as non-trivial.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762964</commentid>
    <comment_count>17</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-23 15:08:10 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #15)
&gt; (In reply to Sam Weinig from comment #14)
&gt; &gt; Ultimately, DestinationColorSpace should be renamed to ColorSpace, and the
&gt; &gt; existing ColorSpace enum should find a new name (perhaps we can push it out
&gt; &gt; of platform and into the Style layer and call it StyleColorSpace or
&gt; &gt; CSSExposedColorSpace.
&gt; 
&gt; Usually the best practice is to rename the short one to a longer name
&gt; sooner. Then we can claim the ColorSpace name after it’s free and clear.

Totally agree, just bogged down on not having a good name for it that I like.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762969</commentid>
    <comment_count>18</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-23 15:34:30 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #16)
&gt; Comment on attachment 429470 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=429470&amp;action=review
&gt; 
&gt; Is it OK to make this code less optimal? Would love to stay super-efficient
&gt; for cases where these are the most common color spaces.

I&apos;m pretty confident that none of this is in hot code. The biggest downside here is that a few places get an additional CFRetain/CFRelease, and I have a good way to remove the majority of those by making the constant accessors, DestinationColorSpace::SRGB() and friends, return a const reference singleton instead.

&gt; 
&gt; &gt; Source/WebCore/Headers.cmake:1297
&gt; &gt; +    platform/graphics/PlatformColorSpace.h
&gt; 
&gt; Not a huge fan of the word &quot;platform&quot;. Always confused about what exactly it
&gt; means.

I&apos;m not super into it either, but it seems pretty idiomatic at this point for type that is meant to wrap the port&apos;s builtin version of that concept:

PlatformImage -&gt; RetainPtr&lt;CGImageRef&gt;
PlatformColorSpace -&gt; RetainPtr&lt;CGColorSpaceRef&gt;
PlatformLayer -&gt; CALayer

Admittedly, this isn&apos;t as idiomatic as I thought when I started writing this response and there are some strong counter examples :). Any thoughts on a good naming convention for the &quot;wraps an underlying libraries object&quot;? In this case, I could probably avoid it entirely, but it made DestinationColorSpace much cleaner if I could remove much of the port specific gunk elsewhere.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/DestinationColorSpace.h:36
&gt; &gt; +    WEBCORE_EXPORT static DestinationColorSpace SRGB();
&gt; 
&gt; Sure would be nice if functional ike this could be super-efficient, like
&gt; constexpr. But instead it’s a function that calls another function to fetch
&gt; the value of a global variable. Still not too bad, but for an idiom where we
&gt; are constantly calling this, seems like it would be nice if this was
&gt; something that could compile down to nothing.

Getting it to nothing might be tricky, but I have a few ideas about how to make this better.

1) Make it return a &quot;const DestinationColorSpace&amp;&quot; that is backed by a constant global. e.g.:

const DestinationColorSpace&amp; DestinationColorSpace::SRGB()
{
#if USE(CG)
    static NeverDestroyed&lt;DestinationColorSpace&gt; colorSpace;
    static std::once_flag onceFlag;
    std::call_once(onceFlag, [] {
        colorSpace.get() = DestinationColorSpace(sRGBColorSpaceRef());
    });
    return colorSpace.get();
#else
    static NeverDestroyed&lt;DestinationColorSpace&gt; colorSpace(PlatformColorSpace::Name::SRGB);
    return colorSpace.get();
#endif
}

2) I don&apos;t think I can safely use a tagged pointer (since we don&apos;t allocate the CGColorSpaceRef, we really shouldn&apos;t), but if I could, we could a tagged pointer for the 3 or 4 common color spaces we reference. Alternatively, we could look at getting CG to use a tagged pointer for us, they already do this for common CGColorRefs.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/DestinationColorSpace.h:44
&gt; &gt; +    WEBCORE_EXPORT explicit DestinationColorSpace(PlatformColorSpace);
&gt; 
&gt; Doesn’t seem like this needs to be explicit. It’s a lossless conversion.
&gt; 
&gt; But maybe the agenda is to make this class contain more over time, and
&gt; eventually the explicit will make sense?

I&apos;d like to keep it explicit for a little bit to help me identify where conversions are happening. Once this get a bit cleaner, it might make sense to remove the explicit.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/DestinationColorSpace.h:45
&gt; &gt; +    PlatformColorSpaceValue platformColorSpace() const { return m_platformColorSpace.get(); }
&gt; 
&gt; Seems unfortunate that this function name has to repeat the words &quot;color
&gt; space&quot;. But we don’t have a great naming scheme for this sort of thing:
&gt; &quot;underlying platform-specific representation of this platform-independent
&gt; wrapper&quot;.

Yeah. maybe just platform() could work (like kit() and core() before it), but I am not sure how much I like &quot;platform&quot; in general now.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/PlatformColorSpace.h:41
&gt; &gt; +using PlatformColorSpace = RetainPtr&lt;CGColorSpaceRef&gt;;
&gt; &gt; +using PlatformColorSpaceValue = CGColorSpaceRef;
&gt; 
&gt; Wish we had a better idiom to relate these pairs of types. The &quot;main type&quot;
&gt; and the &quot;peek type&quot;, to use our hash table value parlance.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/PlatformColorSpace.h:47
&gt; &gt; +    enum class Name {
&gt; 
&gt; Maybe &quot;: uint8_t&quot;?

Fixed.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/PlatformColorSpace.h:85
&gt; &gt; +    return PlatformColorSpace { *name };
&gt; 
&gt; Could also use:
&gt; 
&gt;     return { { *name } };

Fixed.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/RemoteVideoSample.cpp:59
&gt; &gt; +    auto ioSurface =  IOSurface::create(size, DestinationColorSpace::SRGB(), IOSurface::Format::BGRA);
&gt; 
&gt; Extra space here after &quot;=&quot;?

Fixed.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:890
&gt; &gt; +    BeginClipToDrawingCommands(const FloatRect&amp; destination, const DestinationColorSpace&amp; colorSpace)
&gt; &gt;          : m_destination(destination)
&gt; &gt;          , m_colorSpace(colorSpace)
&gt; &gt;      {
&gt; &gt;      }
&gt; 
&gt; Do we need this? it’s just convenience because the caller can copy and then
&gt; call the rvalue reference version of the constructor. In fact, can also
&gt; write this:
&gt; 
&gt;     BeginClipToDrawingCommands(const FloatRect&amp; destination, const
&gt; DestinationColorSpace&amp; colorSpace)
&gt;         : BeginClipToDrawingCommands { destination, DestinationColorSpace {
&gt; colorSpace } }
&gt;     {
&gt;     }

I think I can have just a single one, since the const reference one is really always a copy:

    BeginClipToDrawingCommands(const FloatRect&amp; destination, DestinationColorSpace colorSpace)
        : m_destination(destination)
        , m_colorSpace(WTFMove(colorSpace))
    {
    }

Not sure why I added both.


&gt; 
&gt; &gt; Source/WebCore/platform/graphics/displaylists/DisplayListItems.h:1996
&gt; &gt; +    ~GetPixelBuffer() { }
&gt; 
&gt; = default instead? Or does that not force a non-trivial destructor?
&gt; Surprised that this qualifies as non-trivial.

Surprisingly &quot;= default&quot; keeps it trivial: https://en.cppreference.com/w/cpp/language/destructor#Trivial_destructor

Thanks for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762970</commentid>
    <comment_count>19</comment_count>
      <attachid>429480</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-23 15:37:44 -0700</bug_when>
    <thetext>Created attachment 429480
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762973</commentid>
    <comment_count>20</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-23 16:07:43 -0700</bug_when>
    <thetext>ChangeLog entry in Source/WebCore/PAL/ChangeLog contains OOPS!.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762980</commentid>
    <comment_count>21</comment_count>
      <attachid>429485</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-23 16:29:47 -0700</bug_when>
    <thetext>Created attachment 429485
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762986</commentid>
    <comment_count>22</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-23 17:31:36 -0700</bug_when>
    <thetext>Committed r277940 (238067@main): &lt;https://commits.webkit.org/238067@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 429485.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762987</commentid>
    <comment_count>23</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-23 17:32:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/78376248&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763140</commentid>
    <comment_count>24</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-24 08:29:44 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #18)
&gt; (In reply to Darin Adler from comment #16)
&gt; &gt; Comment on attachment 429470 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Sure would be nice if functional ike this could be super-efficient, like
&gt; &gt; constexpr. But instead it’s a function that calls another function to fetch
&gt; &gt; the value of a global variable. Still not too bad, but for an idiom where we
&gt; &gt; are constantly calling this, seems like it would be nice if this was
&gt; &gt; something that could compile down to nothing.
&gt; 
&gt; Getting it to nothing might be tricky, but I have a few ideas about how to
&gt; make this better.
&gt; 
&gt; 1) Make it return a &quot;const DestinationColorSpace&amp;&quot; that is backed by a
&gt; constant global. e.g.:
&gt; 
&gt; const DestinationColorSpace&amp; DestinationColorSpace::SRGB()
&gt; {
&gt; #if USE(CG)
&gt;     static NeverDestroyed&lt;DestinationColorSpace&gt; colorSpace;
&gt;     static std::once_flag onceFlag;
&gt;     std::call_once(onceFlag, [] {
&gt;         colorSpace.get() = DestinationColorSpace(sRGBColorSpaceRef());
&gt;     });
&gt;     return colorSpace.get();
&gt; #else
&gt;     static NeverDestroyed&lt;DestinationColorSpace&gt;
&gt; colorSpace(PlatformColorSpace::Name::SRGB);
&gt;     return colorSpace.get();
&gt; #endif
&gt; }
&gt; 
&gt; 2) I don&apos;t think I can safely use a tagged pointer (since we don&apos;t allocate
&gt; the CGColorSpaceRef, we really shouldn&apos;t), but if I could, we could a tagged
&gt; pointer for the 3 or 4 common color spaces we reference. Alternatively, we
&gt; could look at getting CG to use a tagged pointer for us, they already do
&gt; this for common CGColorRefs.
&gt; 

I did #1 with https://bugs.webkit.org/show_bug.cgi?id=226160.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763205</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-05-24 11:52:13 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 226182</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763354</commentid>
    <comment_count>26</comment_count>
      <attachid>429600</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-24 17:36:21 -0700</bug_when>
    <thetext>Created attachment 429600
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763355</commentid>
    <comment_count>27</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-24 17:36:52 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #26)
&gt; Created attachment 429600 [details]
&gt; Patch

Update patch with fix for nil color space in WebViewImpl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763370</commentid>
    <comment_count>28</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-24 18:26:26 -0700</bug_when>
    <thetext>Committed r277986 (238099@main): &lt;https://commits.webkit.org/238099@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 429600.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429418</attachid>
            <date>2021-05-22 10:29:38 -0700</date>
            <delta_ts>2021-05-22 10:38:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226143-20210522102937.patch</filename>
            <type>text/plain</type>
            <size>264117</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5NSBAQAorMjAyMS0wNS0yMiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdyYXBwaW5nIGEgcGxhdGZvcm0gY29sb3Ig
c3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0Yy4pCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxNDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIGVudW1lcmF0aW9uIGJh
c2VkIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB3aXRoIGEgc3RydWN0IHdyYXBwaW5nCisgICAgICAg
IGEgcGxhdGZvcm0gY29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0
Yy4pLiBGb3IgcG9ydHMKKyAgICAgICAgdGhhdCBkb24ndCBoYXZlIGEgcGxhdGZvcm0gbGV2ZWwg
Y29sb3Igc3BhY2UgdHlwZSwgYSBidWlsdGluIFBsYXRmb3JtQ29sb3JTcGFjZQorICAgICAgICB0
eXBlIGlzIHByb3ZpZGVkIHRoYXQgaXMganVzdCB0aGUgb2xkIGVudW0gcmVuYW1lZCB0byBQbGF0
Zm9ybUNvbG9yU3BhY2U6Ok5hbWUuCisKKyAgICAgICAgVGhlIGdvYWwgb2YgdGhpcyBjaGFuZ2Ug
aXMgdG8gdW5pZnkgdGhlIGN1cnJlbnRseSBiaWZyYWNhdGVkIGNvbmNlcHQgb2YgYW4KKyAgICAg
ICAgSW1hZ2VCdWZmZXIncyBjb2xvciBzcGFjZSwgd2hpY2ggcHJldmlvc2x5IGNvdWxkIGVpdGhl
ciBiZSBiYXNlZCBvbiB0aGUgCisgICAgICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgYW5kIHJl
ZmxlY3RlZCBpbiB0aGUgY29sb3JTcGFjZSgpIG1lbWJlciBmdW5jdGlvbiwKKyAgICAgICAgb3Ig
KGZvciBDRyBwb3J0cykgYmFzZWQgb24gYSBDR0NvbG9yU3BhY2VSZWYsIHdpdGggdGhlIGNvbG9y
U3BhY2UoKSBmdW5jdGlvbgorICAgICAgICByZXR1cm5pbmcgc1JHQiBldmVuIGlmIHRoZSBJbWFn
ZUJ1ZmZlciB3YXMgbm90LiAKKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICog
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpD
bGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXJ0d29ya0ltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogU291cmNl
cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBJbWFnZUJpdG1hcCk6CisgICAgICAgIChXZWJD
b3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEltYWdlQml0bWFwKToKKyAgICAgICAgKiBjc3Mv
Q1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXJJbWFn
ZVZhbHVlOjppbWFnZSk6CisgICAgICAgICogaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludENhbnZhczo6Y29waWVkSW1hZ2UgY29uc3QpOgor
ICAgICAgICAqIGh0bWwvQ3VzdG9tUGFpbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
dXN0b21QYWludEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6dG9NZWRp
YVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1h
Z2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGVCdWZmZXJGb3JQYWludGlu
ZyBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAgICog
aHRtbC9JbWFnZUJpdG1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJpdG1hcDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCaXRtYXA6OmNyZWF0ZVBy
b21pc2UpOgorICAgICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Y29tbWl0VG9QbGFjZWhvbGRlckNhbnZhcyk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojpjb2xvclNwYWNlIGNvbnN0KToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0OjpzZXRPdXRwdXRCaXRtYXApOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnRvRGVzdGluYXRpb25Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvUHJlZGVmaW5l
ZENvbG9yU3BhY2UpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNl
Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1
ZmZlckNhY2hlOjppbWFnZUJ1ZmZlcik6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbkltYWdlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6YnVpbGRBcnJheUZvckNhbnZhc1BhdHRlcm4p
OgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6
Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAg
ICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hv
dHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RGcmFtZVJlY3RXaXRoQ2xpcCk6
CisgICAgICAgICogcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNhbXBsZUNvbG9yKToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9Ib3N0V2luZG93Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1Db2xv
clNwYWNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db2xvclNwYWNlOjpn
ZXQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2NyZWVuUHJvcGVydGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVu
UHJvcGVydGllczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVlbkRhdGE6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5EYXRhOjpkZWNvZGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3UGF0dGVybik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29s
b3I6OnRvQ29sb3JDb21wb25lbnRzSW5Db2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJDb2xvckNvbXBvbmVudHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yU3BhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25j
cmV0ZUltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVy
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRl
ZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpk
cmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xv
clNwYWNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IpOgorICAgICAgICAoV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5l
YXJTUkdCKToKKyAgICAgICAgKFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxh
eVAzKToKKyAgICAgICAgKFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGVzdGluYXRp
b25Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAgICAo
V2ViQ29yZTo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OnBsYXRmb3JtQ29sb3JT
cGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OmRl
Y29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJCYWNrZW5kOjpnZXRQaXhlbEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OnB1dFBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyQmFja2VuZDo6dHJhbnNmb3JtQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbG9yU3BhY2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1BpeGVsQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6
ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckNvbnZlcnNp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZVZJbWFnZUNHSW1hZ2VGb3JtYXQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1hdDo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cmFuc2Zl
ckJHUkFQaXhlbEJ1ZmZlclRvSU9TdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZVZp
ZGVvU2FtcGxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGU6
OlJlbW90ZVZpZGVvU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxl
OjpzdXJmYWNlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRl
b1NhbXBsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6Z2V0U2NyYXRjaEJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRp
bGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpibHVyU2hhZG93QnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdTaGFkb3dMYXllcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBh
aW50UmVzdWx0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyb0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0Jh
Y2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQ29sb3JDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9DR0NvbXBh
dGlibGVDb21wb25lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNHQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6cGxhdGZvcm1Db252ZXJ0Q29sb3JDb21wb25lbnRzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaDoKKyAgICAgICAgKFdlYkNvcmU6
OmNhY2hlZENHQ29sb3JTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdXJmYWNlTWF0
Y2hlc1BhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlUG9vbDo6dGFrZVN1
cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjb3B5Q0dJbWFnZUZv
ckVuY29kaW5nIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6
c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJC
YWNraW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW06CisgICAgICAg
IChXZWJDb3JlOjpJT1N1cmZhY2U6OnN1cmZhY2VGcm9tUG9vbCk6CisgICAgICAgIChXZWJDb3Jl
OjpJT1N1cmZhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0
ZUZyb21TZW5kUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9t
U3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21JbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21QaXhlbEJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OklPU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJT1N1cmZhY2U6OmVuc3VyZVBsYXRmb3JtQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJ
T1N1cmZhY2U6Om1pZ3JhdGVDb2xvclNwYWNlVG9Qcm9wZXJ0aWVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6cmVuZGVy
VG9JbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFu
c2ZlclNlc3Npb25WVC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlVHJhbnNmZXJTZXNzaW9u
VlQ6OmNyZWF0ZVBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9Q
aXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVy
Q29uZm9ybWVyQ1Y6OmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyOjpjcmVhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OmRlc3Ryb3kp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5n
Q29tbWFuZHM6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczo6Y29sb3JTcGFjZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5nQ29t
bWFuZHM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVn
aW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6R2V0UGl4ZWxCdWZmZXI6OkdldFBpeGVsQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpHZXRQaXhlbEJ1ZmZlcjo6b3V0cHV0Rm9ybWF0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpHZXRQaXhlbEJ1ZmZlcjo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpHZXRQaXhlbEJ1ZmZlcjo6ZGVjb2Rl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNs
aXBUb0RyYXdpbmdDb21tYW5kcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlz
cGxhY2VtZW50TWFwOjpzZXRSZXN1bHRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRVRpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVs
QnVmZmVyVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29u
dmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVm
ZmVjdDo6Y29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0aW5hdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRQaXhlbEJ1ZmZlclRvRGVzdGluYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpyZXF1aXJlc1BpeGVsQnVmZmVy
Q29sb3JTcGFjZUNvbnZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojp0
cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpv
cGVyYXRpbmdDb2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6c2V0T3BlcmF0aW5nQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OnJlc3VsdENvbG9yU3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZm
ZWN0OjpzZXRSZXN1bHRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL1NvdXJjZUdyYXBoaWMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6
OlNvdXJjZUdyYXBoaWMpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5JT1MubW06CisgICAgICAgIChXZWJDb3JlOjpzY3Jl
ZW5Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RTY3JlZW5Qcm9wZXJ0aWVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5NYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpjb2xsZWN0U2NyZWVuUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpz
Y3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50
b0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNw
bGF5Q2FwdHVyZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5EaXNwbGF5Q2FwdHVy
ZXJNYWM6OmNyZWF0ZURpc3BsYXlTdHJlYW0pOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2U6OmltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9wbGF5
c3RhdGlvbi9QbGF0Zm9ybVNjcmVlblBsYXlTdGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNjcmVlbkNvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVl
bldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS93cGUvUGxhdGZvcm1TY3JlZW5XUEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oOgor
ICAgICAgICAoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YTo6ZGVjb2Rl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZpbHRlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
RmlsdGVyOjpidWlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmFsbG9jYXRlQmFj
a2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjphcHBseSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnBhdHRlcm5Gb3JEZXNjcmlwdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50U3lz
dGVtUHJldmlld0JhZGdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRQcm9ncmVzc0Jhcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
aGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VDbGlwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291
cmNlQ2xpcHBlcjo6YXBwbHlDbGlwcGluZ1RvQ29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1hc2tBbmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6ZHJhd0NvbnRlbnRJ
bnRvTWFza0ltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
TWFza2VyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRl
cm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpjcmVh
dGVUaWxlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5n
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVh
dGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0Ojpi
dWZmZXJGb3JlZ3JvdW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0Nv
bnRleHQuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUpOgorCiAyMDIxLTA1LTIyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiBDb21wb25lbnQgYXQgaW5kZXgg
MSBpcyAxLjAwMDAwMCBhbmQgaXMgZ3JlYXRlciB0aGFuIHRoZSBhbGxvd2VkIG1heGltdW0gMS4w
MDAwMDAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTE5Nyw2ICsxMTk3LDcg
QEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Rhc2hB
cnJheS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGVjb2RpbmdPcHRpb25zLmgKKyAgICBwbGF0
Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxh
eVJlZnJlc2hNb25pdG9yQ2xpZW50LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVm
cmVzaE1vbml0b3JGYWN0b3J5LmgKQEAgLTEyOTMsNiArMTI5NCw3IEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZl
ci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1BpeGVsRm9ybWF0LmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bUNvbG9yU3BhY2UuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE5
NTAsNiArMTk1MCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhU
ZXh0Q29udHJvbGxlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBi
b2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NE
YXRhU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2wKIAogICAgICAgICBhdXRvIGJpdG1hcElt
YWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgICAgICBiaXRtYXBJbWFnZS0+c2V0RGF0
YShXVEZNb3ZlKGJ1ZmZlclRvU2FuaXRpemUpLCB0cnVlKTsKLSAgICAgICAgYXV0byBpbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
LCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
ICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikgewogICAgICAgICAgICAgbV9kYXRhID0geyBudWxs
U3RyaW5nKCkgfTsKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1l
dGFkYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCB2b2lkIEFydHdvcmtJ
bWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyVG9TYW5pdGl6ZSA9IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBhdXRv
IGJpdG1hcEltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIGJpdG1hcEltYWdlLT5z
ZXREYXRhKFdURk1vdmUoYnVmZmVyVG9TYW5pdGl6ZSksIHRydWUpOwotICAgIGF1dG8gaW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJpdG1hcEltYWdlLT5zaXplKCksIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAg
ICBpZiAoIWltYWdlQnVmZmVyKSB7CiAgICAgICAgIG1fY2FsbGJhY2sobnVsbHB0cik7CiAgICAg
ICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjc3OTIwKQorKysg
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEz
IEBACisyMDIxLTA1LTIyICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAg
ICBDb252ZXJ0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBmcm9tIGFuIGVudW0gdG8gY2xhc3Mgd3Jh
cHBpbmcgYSBwbGF0Zm9ybSBjb2xvciBzcGFjZSAoQ0dDb2xvclNwYWNlUmVmIGZvciBDRyBwb3J0
cywgZXRjLikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyNjE0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDoKKyAgICAgICAgQWRkIGFkZGlvbmFsIFNQ
SSBmb3Igd29ya2luZyB3aXRoIENHQ29sb3JTcGFjZVJlZnMuCisKIDIwMjEtMDUtMjEgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBZG9w
dCBRTEl0ZW0gaW4gV0tJbWFnZUV4dHJhY3Rpb25QcmV2aWV3Q29udHJvbGxlcgpJbmRleDogU291
cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGlj
c1NQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDIsNiArMjQyLDcgQEAgdHlwZWRlZiB2b2lkICgq
Q0dTTm90aWZ5UHJvY1B0cikoQ0dTTm90aQogCiBXVEZfRVhURVJOX0NfQkVHSU4KIAorYm9vbCBD
R0NvbG9yVHJhbnNmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyhDR0NvbG9yVHJhbnNmb3JtUmVm
LCBDR0NvbG9yU3BhY2VSZWYsIENHQ29sb3JSZW5kZXJpbmdJbnRlbnQsIGNvbnN0IENHRmxvYXQg
c3JjQ29tcG9uZW50c1tdLCBDR0Zsb2F0IGRzdENvbXBvbmVudHNbXSk7CiBDR0NvbG9yUmVmIENH
Q29sb3JUcmFuc2Zvcm1Db252ZXJ0Q29sb3IoQ0dDb2xvclRyYW5zZm9ybVJlZiwgQ0dDb2xvclJl
ZiwgQ0dDb2xvclJlbmRlcmluZ0ludGVudCk7CiBDR0NvbG9yVHJhbnNmb3JtUmVmIENHQ29sb3JU
cmFuc2Zvcm1DcmVhdGUoQ0dDb2xvclNwYWNlUmVmLCBDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRl
cyk7CiAKQEAgLTI5MSw2ICsyOTIsOCBAQCBDR1N0eWxlUmVmIENHR1N0YXRlR2V0U3R5bGUoQ0dH
U3RhdGVSZWYpCiBDR1N0eWxlVHlwZSBDR1N0eWxlR2V0VHlwZShDR1N0eWxlUmVmKTsKIGNvbnN0
IHZvaWQgKkNHU3R5bGVHZXREYXRhKENHU3R5bGVSZWYpOwogQ0dDb2xvclJlZiBDR1N0eWxlR2V0
Q29sb3IoQ0dTdHlsZVJlZik7Citib29sIENHQ29sb3JTcGFjZUVxdWFsVG9Db2xvclNwYWNlKENH
Q29sb3JTcGFjZVJlZiwgQ0dDb2xvclNwYWNlUmVmKTsKK0NGU3RyaW5nUmVmIENHQ29sb3JTcGFj
ZUNvcHlJQ0NQcm9maWxlRGVzY3JpcHRpb24oQ0dDb2xvclNwYWNlUmVmKTsKIAogI2lmIEhBVkUo
Q0dQQVRIX0dFVF9OVU1CRVJfT0ZfRUxFTUVOVFMpCiBzaXplX3QgQ0dQYXRoR2V0TnVtYmVyT2ZF
bGVtZW50cyhDR1BhdGhSZWYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0zOTk2LDYgKzM5OTYsOCBAQAogCQlCQzIzRjBEQjBEQUZGNEE0MDA5RkRDOTEgLyogR2VuZXJh
dGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMjNGMERBMERBRkY0QTQwMDlGREM5MSAvKiBHZW5lcmF0ZWRJbWFnZS5oICovOyB9OwogCQlC
QzI3NEIyRjE0MEVCRUIyMDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI3NEIyRTE0MEVC
RUIyMDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggKi87IH07CiAJCUJDMkNC
RjRFMTQwRjFBQkQwMDM4NzlCRSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJDQkY0QjE0MEYxQTY1MDAzODc5
QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oICovOyB9OworCQlCQzJDQ0ExMDI2NTVEREIyMDBC
OEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJDQ0EwRTI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGlu
YXRpb25Db2xvclNwYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJQkMyQ0NBMTUyNjU1RUU1ODAwQjhDMDM1IC8qIFBsYXRmb3JtQ29sb3JTcGFj
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyQ0NB
MTQyNjU1RUU1ODAwQjhDMDM1IC8qIFBsYXRmb3JtQ29sb3JTcGFjZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMzA1QzdBMEMwNzZCQjMwMENE
MjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMwNUM3ODBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2Jq
ZWN0RWxlbWVudC5oICovOyB9OwogCQlCQzM0OEJENDBEQjdGODA0MDA0QUJBQjkgLyogSlNYTUxI
dHRwUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkMzNDhCRDIwREI3RjgwNDAwNEFCQUI5IC8qIEpTWE1MSHR0cFJlcXVlc3QuaCAqLzsgfTsK
IAkJQkMzNDhCRDQwREI3RjgwNDAwNEFCQUJBIC8qIFdlYkNvcmVKU0J1aWx0aW5zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzM0OEJEMjBEQjdGODA0
MDA0QUJBQkEgLyogV2ViQ29yZUpTQnVpbHRpbnMuaCAqLzsgfTsKQEAgLTE0MTM0LDYgKzE0MTM2
LDkgQEAKIAkJQkMyOTkzNUMxN0ExREQ1ODAwQkNFODgwIC8qIENvbG9ySW5wdXRUeXBlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9ySW5wdXRUeXBlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyQ0JGNEIxNDBGMUE2NTAwMzg3OUJFIC8q
IEpTV2ViR0xDb250ZXh0RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNXZWJHTENvbnRleHRFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJD
QkY3QTE0MEYxRDU4MDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMQ29udGV4dEV2ZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQ0NBMEUyNjU1RERCMjAwQjhDMDM1IC8qIERl
c3RpbmF0aW9uQ29sb3JTcGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQ0NBMEYyNjU1RERCMjAwQjhD
MDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJD
Q0ExNDI2NTVFRTU4MDBCOEMwMzUgLyogUGxhdGZvcm1Db2xvclNwYWNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBsYXRmb3JtQ29sb3JTcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
QzJFRDU1NDBDNkI5QkQzMDA5MjBCRkYgLyogSlNFbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRWxlbWVudEN1c3RvbS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMkVENkJCMEM2QkQyRjAwMDkyMEJGRiAvKiBKU0F0dHJD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBdHRyQ3Vz
dG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzMDVDNzcwQzA3NkJCMzAw
Q0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTSFRNTE9iamVjdEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjY5MjUsNiArMjY5MzAsOCBAQAogCQkJCTJEMkZDMDU1MTQ2MENENkYw
MDI2MzYzMyAvKiBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oICovLAogCQkJCUE4Q0I0MTAyMEU4
NUI4QTUwMDMyQzRGMCAvKiBEYXNoQXJyYXkuaCAqLywKIAkJCQk1NTUxMzAwMDFFN0NDQ0NBMDBB
NjlFMzggLyogRGVjb2RpbmdPcHRpb25zLmggKi8sCisJCQkJQkMyQ0NBMEYyNjU1RERCMjAwQjhD
MDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHAgKi8sCisJCQkJQkMyQ0NBMEUyNjU1RERC
MjAwQjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oICovLAogCQkJCTQ5RkM3QTRGMTQ0
NEFGNUYwMEE1RDg2NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwICovLAogCQkJCTQ5QUYy
RDY4MTQ0MzVEMDUwMDE2QTc4NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3IuaCAqLywKIAkJCQky
RDI5RUNDMTE5MkVDQzgzMDA5ODRCNzggLyogRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmNw
cCAqLywKQEAgLTI3OTk0LDYgKzI4MDAxLDcgQEAKIAkJCQkxQUY1RTREMzFFNTY3MzVBMDA0QTFG
MDEgLyogUGFzdGVib2FyZFdyaXRlckRhdGEuaCAqLywKIAkJCQkxREJDMUI1NTIzNDdCM0QyMDBC
OTAxQUYgLyogUGljdHVyZUluUGljdHVyZU9ic2VydmVyLmggKi8sCiAJCQkJMUQyQzgyQjYyMzZB
M0Y2QTAwNTVENkM1IC8qIFBpY3R1cmVJblBpY3R1cmVTdXBwb3J0LmggKi8sCisJCQkJQkMyQ0NB
MTQyNjU1RUU1ODAwQjhDMDM1IC8qIFBsYXRmb3JtQ29sb3JTcGFjZS5oICovLAogCQkJCUExNDk3
ODcwMUFCQUYzQTUwMENFRjdFNCAvKiBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaCAqLywKIAkJCQlC
QzVDNzYyOTE0OTdGRTE0MDBCQzQ3NzUgLyogUGxhdGZvcm1FdmVudC5oICovLAogCQkJCUE3MjNG
NzdBMTQ4NENBNEMwMDhDNkRCRSAvKiBQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oICovLApAQCAtMzIy
MzAsNiArMzIyMzgsNyBAQAogCQkJCTk0Nzk0OTI1MUUwMzA4QUYwMDAxOEQ4NSAvKiBEZXByZWNh
dGVkQ1NTT01WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTQ3OTQ5M0QxRTA0NjNCNjAwMDE4
RDg1IC8qIERlcHJlY2F0ZWRDU1NPTVZhbHVlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NC
RDEyOUUxRjk4QjkwRTAwMTI3RDI5IC8qIERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQkMyQ0NBMTAyNjU1RERCMjAwQjhDMDM1IC8qIERlc3RpbmF0aW9uQ29s
b3JTcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDExMjIzQzUyNjAzNTY3RDAwQjBBMEI2IC8q
IERldGFjaGVkUlRDRGF0YUNoYW5uZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QzlBQkY5MTM1
N0EzQkYwMEY1NTAzRiAvKiBEZXRhaWxzTWFya2VyQ29udHJvbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTFFRDc3OEQxQkUzMjk0MDAwREMxNzkxIC8qIERldmljZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0zNDUxOCw2ICszNDUyNyw3IEBACiAJCQkJNDk5QjNFQzUxMjhDQ0M0NzAwRTcyNkMyIC8qIFBs
YXRmb3JtQ0FMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDkzRTVFMDkxMkQ2NDIwNTAwMDIw
MDgxIC8qIFBsYXRmb3JtQ0FMYXllckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ3MEJB
MTMxODA3NERERjAwMDE5MDhBIC8qIFBsYXRmb3JtQ0FMYXllckNvY29hLmggaW4gSGVhZGVycyAq
LywKKwkJCQlCQzJDQ0ExNTI2NTVFRTU4MDBCOEMwMzUgLyogUGxhdGZvcm1Db2xvclNwYWNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBMTQ5Nzg3MTFBQkFGM0E1MDBDRUY3RTQgLyogUGxhdGZvcm1D
b250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVDNzYyQjE0OTdGRTE0MDBCQzQ3
NzUgLyogUGxhdGZvcm1FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjY2MDFFQkYxNEIzQjlB
RDAwMTJDMEZFIC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLmggaW4gSGVhZGVycyAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4Miw3ICsx
MDgyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlBy
ZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCIH07CisgICAgICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlw
bGljYXRpb246OlByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCkgfTsKICAgICAgICAgY29uc3QgSW50U2l6ZSYgbG9naWNhbFNpemUg
PSBidWZmZXItPmxvZ2ljYWxTaXplKCk7CiAgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBidWZm
ZXItPmdldFBpeGVsQnVmZmVyKGZvcm1hdCwgeyBJbnRQb2ludDo6emVybygpLCBsb2dpY2FsU2l6
ZSB9KTsKICAgICAgICAgaWYgKCFwaXhlbEJ1ZmZlcikgewpAQCAtMzE4Nyw3ICszMTg3LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgIH0KIAotICAg
ICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQ
cmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiB9OworICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRp
cGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBQaXhlbEJ1
ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1hdCwgaW1hZ2VEYXRhU2l6ZSwgYXJyYXlCdWZmZXIucmVsZWFz
ZU5vbk51bGwoKSk7CiAgICAgICAgIGlmICghcGl4ZWxCdWZmZXIpIHsKICAgICAgICAgICAgIGZh
aWwoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZh
bHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw3IEBAIFJlZlB0cjxJbWFnZT4g
Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6aW1hZ2UKIAogICAgIC8vIFRyYW5zZm9ybSBJbWFnZSBpbnRv
IEltYWdlQnVmZmVyLgogICAgIC8vIEZJWE1FICgxNDk0MjQpOiBUaGlzIGJ1ZmZlciBzaG91bGQg
bm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkLgotICAgIGF1dG8gdGV4dHVyZSA9
IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwg
MSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAg
IGF1dG8gdGV4dHVyZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CiAgICAgaWYgKCF0ZXh0dXJlKQogICAgICAgICByZXR1cm4gJkltYWdlOjpu
dWxsSW1hZ2UoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZh
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZh
cy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFp
bnRDYW52YXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBAIEltYWdlKiBDdXN0
b21QYWludENhbnZhczo6Y29waWVkSW1hZ2UoKSAKICAgICBpZiAoIXdpZHRoKCkgfHwgIWhlaWdo
dCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIG1fY29waWVkQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBudWxscHRy
KTsKKyAgICBtX2NvcGllZEJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBudWxscHRyKTsKICAgICBpZiAoIW1fY29waWVkQnVmZmVy
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9D
dXN0b21QYWludEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0N1
c3RvbVBhaW50SW1hZ2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0N1c3RvbVBhaW50SW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsNyArMTk4LDcg
QEAgdm9pZCBDdXN0b21QYWludEltYWdlOjpkcmF3UGF0dGVybihHcmFwaAogICAgIGFkanVzdGVk
UGF0dGVybkNUTS5zY2FsZSgxLjAgLyB4U2NhbGUsIDEuMCAvIHlTY2FsZSk7CiAgICAgYWRqdXN0
ZWRTcmNSZWN0LnNjYWxlKHhTY2FsZSwgeVNjYWxlKTsKIAotICAgIGF1dG8gYnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoYWRqdXN0ZWRTaXplLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IsIGRlc3RDb250ZXh0KTsKKyAgICBhdXRvIGJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGFkanVzdGVkU2l6ZSwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCksIGRlc3RDb250ZXh0KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuOwogICAgIGRvQ3VzdG9tUGFpbnQoYnVmZmVyLT5jb250ZXh0KCksIGFkanVzdGVk
U2l6ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyNSw3ICs4MjUsNyBAQCBSZWZQdHI8TWVkaWFTYW1w
bGU+IEhUTUxDYW52YXNFbGVtZW50Ojp0CiAgICAgLy8gRklYTUU6IFRoaXMgY2FuIGxpa2VseSBi
ZSBvcHRpbWl6ZWQgcXVpdGUgYSBiaXQsIGVzcGVjaWFsbHkgaW4gdGhlIGNhc2VzIHdoZXJlCiAg
ICAgLy8gdGhlIEltYWdlQnVmZmVyIGlzIGJhY2tlZCBieSBHUFUgbWVtb3J5IGFscmVhZHkgYW5k
L29yIGlzIGluIHRoZSBHUFUgcHJvY2VzcyBieQogICAgIC8vIHNwZWNpYWxpemluZyB0b01lZGlh
U2FtcGxlKCkgaW4gSW1hZ2VCdWZmZXJCYWNrZW5kIHRvIG5vdCB1c2UgZ2V0UGl4ZWxCdWZmZXIo
KS4KLSAgICBhdXRvIHBpeGVsQnVmZmVyID0gaW1hZ2VCdWZmZXItPmdldFBpeGVsQnVmZmVyKHsg
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6QkdS
QTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9LCB7IHsgfSwgaW1hZ2VCdWZmZXItPmxv
Z2ljYWxTaXplKCkgfSk7CisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5nZXRQ
aXhlbEJ1ZmZlcih7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4
ZWxGb3JtYXQ6OkJHUkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9LCB7IHsgfSwg
aW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkgfSk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTk1NSw3ICs5NTUsNyBAQCB2b2lkIEhUTUxDYW52
YXNFbGVtZW50OjpjcmVhdGVJbWFnZUJ1ZmZlCiAgICAgYXV0byBbY29sb3JTcGFjZSwgcGl4ZWxG
b3JtYXRdID0gWyZdIHsKICAgICAgICAgaWYgKG1fY29udGV4dCkKICAgICAgICAgICAgIHJldHVy
biBzdGQ6OnBhaXIgeyBtX2NvbnRleHQtPmNvbG9yU3BhY2UoKSwgbV9jb250ZXh0LT5waXhlbEZv
cm1hdCgpIH07Ci0gICAgICAgIHJldHVybiBzdGQ6OnBhaXIgeyBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCB9OworICAgICAgICByZXR1cm4gc3RkOjpwYWly
IHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCB9Owog
ICAgIH0oKTsKIAogICAgIHNldEltYWdlQnVmZmVyKEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgp
LCByZW5kZXJpbmdNb2RlLCB1c2VEaXNwbGF5TGlzdCwgUmVuZGVyaW5nUHVycG9zZTo6Q2FudmFz
LCAxLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgaG9zdFdpbmRvdykpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yODEsNyArMjgxLDcgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjptZWRpYVBsYXllckZpcnN0
VgogICAgICAgICByZW5kZXJlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKIH0KIAotUmVmUHRyPElt
YWdlQnVmZmVyPiBIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGVCdWZmZXJGb3JQYWludGluZyhjb25z
dCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgRGVzdGluYXRp
b25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KSBjb25zdAor
UmVmUHRyPEltYWdlQnVmZmVyPiBIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGVCdWZmZXJGb3JQYWlu
dGluZyhjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwg
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhl
bEZvcm1hdCkgY29uc3QKIHsKICAgICBhdXRvKiBob3N0V2luZG93ID0gZG9jdW1lbnQoKS52aWV3
KCkgJiYgZG9jdW1lbnQoKS52aWV3KCktPnJvb3QoKSA/IGRvY3VtZW50KCkudmlldygpLT5yb290
KCktPmhvc3RXaW5kb3coKSA6IG51bGxwdHI7CiAgICAgYXV0byBzaG91bGRVc2VEaXNwbGF5TGlz
dCA9IGRvY3VtZW50KCkuc2V0dGluZ3MoKS5kaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkKCkgPyBT
aG91bGRVc2VEaXNwbGF5TGlzdDo6WWVzIDogU2hvdWxkVXNlRGlzcGxheUxpc3Q6Ok5vOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMywxMiArMzMsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U7CiBjbGFzcyBIVE1MSW1hZ2VMb2FkZXI7CiBjbGFzcyBJbWFnZUJ1
ZmZlcjsKIGNsYXNzIFJlbmRlclZpZGVvOwogY2xhc3MgUGljdHVyZUluUGljdHVyZU9ic2VydmVy
OwogCi1lbnVtIGNsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7CiBlbnVtIGNs
YXNzIFBpeGVsRm9ybWF0IDogdWludDhfdDsKIGVudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJv
b2w7CiAKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1
bGxzY3JlZW4oKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgUmVmUHRyPEltYWdlQnVmZmVyPiBj
cmVhdGVCdWZmZXJGb3JQYWludGluZyhjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdDsKKyAgICBSZWZQdHI8SW1h
Z2VCdWZmZXI+IGNyZWF0ZUJ1ZmZlckZvclBhaW50aW5nKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRl
cmluZ01vZGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBpeGVsRm9ybWF0KSBjb25z
dDsKIAogICAgIC8vIFVzZWQgYnkgY2FudmFzIHRvIGdhaW4gcmF3IHBpeGVsIGFjY2VzcwogICAg
IHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0Jik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg0LDEyICs4NCwxMiBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQml0
bWFwOjpjcmVhdGVJCiAgICAgICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogICAgICAgICBpZiAoZG9jdW1lbnQudmlldygpICYm
IGRvY3VtZW50LnZpZXcoKS0+cm9vdCgpKSB7CiAgICAgICAgICAgICBhdXRvIGhvc3RXaW5kb3cg
PSBkb2N1bWVudC52aWV3KCktPnJvb3QoKS0+aG9zdFdpbmRvdygpOwotICAgICAgICAgICAgcmV0
dXJuIEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlz
cGxheUxpc3Q6Ok5vLCBSZW5kZXJpbmdQdXJwb3NlOjpDYW52YXMsIHJlc29sdXRpb25TY2FsZSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGhvc3RXaW5k
b3cpOworICAgICAgICAgICAgcmV0dXJuIEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVuZGVy
aW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3Q6Ok5vLCBSZW5kZXJpbmdQdXJwb3NlOjpDYW52
YXMsIHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVs
Rm9ybWF0OjpCR1JBOCwgaG9zdFdpbmRvdyk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBG
SVhNRSA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjE4NDgyPiBFbmFibGUgd29ya2VyIGJhc2VkIElt
YWdlQml0bWFwIGFuZCBPZmZzY3JlZW5DYW52YXMgZHJhd2luZyB0byB1c2UgR1BVIFByb2Nlc3Mg
cmVuZGVyaW5nCi0gICAgcmV0dXJuIEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVuZGVyaW5n
TW9kZSwgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CisgICAgcmV0dXJuIEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVu
ZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKIH0KIAogdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJv
bWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBJbWFn
ZUJpdG1hcDo6U291cmNlJiYgc291cmNlLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLCBJ
bWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCkBAIC01MDQsNyArNTA0LDcgQEAgdm9pZCBJ
bWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeAogICAgIGF1dG8gb3V0cHV0U2l6ZSA9
IG91dHB1dFNpemVGb3JTb3VyY2VSZWN0YW5nbGUoc291cmNlUmVjdGFuZ2xlLCBvcHRpb25zKTsK
IAogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgY29sb3Igc3BhY2VzIC8gcGl4ZWwgZm9y
bWF0cyB0byBJbWFnZUJpdG1hcC4KLSAgICBhdXRvIGJpdG1hcERhdGEgPSB2aWRlby0+Y3JlYXRl
QnVmZmVyRm9yUGFpbnRpbmcob3V0cHV0U2l6ZSwgYnVmZmVyUmVuZGVyaW5nTW9kZSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gYml0
bWFwRGF0YSA9IHZpZGVvLT5jcmVhdGVCdWZmZXJGb3JQYWludGluZyhvdXRwdXRTaXplLCBidWZm
ZXJSZW5kZXJpbmdNb2RlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKICAgICBpZiAoIWJpdG1hcERhdGEpIHsKICAgICAgICAgcmVzb2x2ZVdpdGhC
bGFua0ltYWdlQnVmZmVyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsICF0YWludHNPcmlnaW4oc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5zZWN1cml0eU9yaWdpbigpLCAqdmlkZW8pLCBXVEZNb3ZlKHBy
b21pc2UpKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9PZmZz
Y3JlZW5DYW52YXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2Ny
ZWVuQ2FudmFzLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9P
ZmZzY3JlZW5DYW52YXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTEsMTQgKzQ1MSwxNCBAQCB2
b2lkIE9mZnNjcmVlbkNhbnZhczo6Y29tbWl0VG9QbGFjZWhvbGRlCiAgICAgICAgIG1fY29udGV4
dC0+cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKTsKIAogICAgIGlmIChtX3BsYWNlaG9s
ZGVyRGF0YS0+YnVmZmVyUGlwZVNvdXJjZSkgewotICAgICAgICBhdXRvIGJ1ZmZlckNvcHkgPSBp
bWFnZUJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFn
ZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgaW1h
Z2VCdWZmZXItPmNvbnRleHQoKSk7CisgICAgICAgIGF1dG8gYnVmZmVyQ29weSA9IGltYWdlQnVm
ZmVyLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlQnVmZmVy
LT5sb2dpY2FsU2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGltYWdlQnVm
ZmVyLT5jb250ZXh0KCkpOwogICAgICAgICBpZiAoYnVmZmVyQ29weSkKICAgICAgICAgICAgIG1f
cGxhY2Vob2xkZXJEYXRhLT5idWZmZXJQaXBlU291cmNlLT5oYW5kbGUoV1RGTW92ZShidWZmZXJD
b3B5KSk7CiAgICAgfQogCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fcGxhY2Vob2xkZXJEYXRhLT5i
dWZmZXJMb2NrIH07CiAgICAgYm9vbCBzaG91bGRQdXNoQnVmZmVyID0gIW1fcGxhY2Vob2xkZXJE
YXRhLT5wZW5kaW5nQ29tbWl0QnVmZmVyOwotICAgIG1fcGxhY2Vob2xkZXJEYXRhLT5wZW5kaW5n
Q29tbWl0QnVmZmVyID0gaW1hZ2VCdWZmZXItPmNvcHlSZWN0VG9CdWZmZXIoRmxvYXRSZWN0KEZs
b2F0UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IsIGltYWdlQnVmZmVyLT5jb250ZXh0KCkpOworICAgIG1fcGxhY2Vob2xkZXJE
YXRhLT5wZW5kaW5nQ29tbWl0QnVmZmVyID0gaW1hZ2VCdWZmZXItPmNvcHlSZWN0VG9CdWZmZXIo
RmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7CiAgICAg
aWYgKG1fcGxhY2Vob2xkZXJEYXRhLT5wZW5kaW5nQ29tbWl0QnVmZmVyICYmIHNob3VsZFB1c2hC
dWZmZXIpCiAgICAgICAgIHB1c2hCdWZmZXJUb1BsYWNlaG9sZGVyKCk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3
LDYgQEAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVy
dHlQYXJzZXJIZWxwZXJzLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlQYXJzZXJXb3JrZXJTYWZl
LmgiCi0jaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkdyYWRpZW50LmgiCiAjaW5j
bHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQu
Y3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAog
CiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgiCi0j
aW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5o
IgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKQEAgLTkwLDcgKzkwLDcgQEAg
UGl4ZWxGb3JtYXQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6cGl4ZQogCiBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6Y29sb3JTcGFjZSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjsKKyAgICByZXR1cm4gRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiB9CiAKIGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6d291bGRUYWludE9yaWdpbihjb25zdCBDYW52YXNQYXR0ZXJuKiBwYXR0ZXJuKQpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMyArMzcsMTMgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FudmFzUGF0dGVybjsKK2NsYXNzIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIEhUTUxDYW52YXNFbGVtZW50OwogY2xhc3MgSFRNTElt
YWdlRWxlbWVudDsKIGNsYXNzIEhUTUxWaWRlb0VsZW1lbnQ7CiBjbGFzcyBJbWFnZUJpdG1hcDsK
IGNsYXNzIFR5cGVkT01DU1NJbWFnZVZhbHVlOwogY2xhc3MgV2ViR0xPYmplY3Q7Ci1lbnVtIGNs
YXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFBpeGVsRm9y
bWF0IDogdWludDhfdDsKIAogY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCA6IHB1YmxpYyBT
Y3JpcHRXcmFwcGFibGUgewpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VC
aXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiAyNzc5
MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0Nv
bnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgSW1hZ2VCaXRt
YXBSZW5kZXJpbmdDb250ZXh0OjpzZXRPdXQKICAgICAgICAgLy8gb25seSByZWFzb24gSSBjYW4g
dGhpbmsgb2YgaXMgdG9EYXRhVVJMKCksIGJ1dCB0aGF0IGRvZXNuJ3Qgc2VlbSBsaWtlCiAgICAg
ICAgIC8vIGEgZ29vZCBlbm91Z2ggYXJndW1lbnQgdG8gd2FzdGUgbWVtb3J5LgogCi0gICAgICAg
IGNhbnZhcygpLT5zZXRJbWFnZUJ1ZmZlckFuZE1hcmtEaXJ0eShJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KEZsb2F0U2l6ZShjYW52YXMoKS0+d2lkdGgoKSwgY2FudmFzKCktPmhlaWdodCgpKSwgYnVmZmVy
UmVuZGVyaW5nTW9kZSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1h
dDo6QkdSQTgpKTsKKyAgICAgICAgY2FudmFzKCktPnNldEltYWdlQnVmZmVyQW5kTWFya0RpcnR5
KEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKGNhbnZhcygpLT53aWR0aCgpLCBjYW52YXMo
KS0+aGVpZ2h0KCkpLCBidWZmZXJSZW5kZXJpbmdNb2RlLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CiAKICAgICAgICAgLy8gMS40LiBTZXQg
dGhlIG91dHB1dCBiaXRtYXAncyBvcmlnaW4tY2xlYW4gZmxhZyB0byB0cnVlLgogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2Uu
Y3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVk
ZWZpbmVkQ29sb3JTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcmVkZWZpbmVkQ29sb3JTcGFjZS5oIgogCi0j
aW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5o
IgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0z
NSwzMyArMzUsMjYgQEAgRGVzdGluYXRpb25Db2xvclNwYWNlIHRvRGVzdGluYXRpb25Db2xvcgog
ewogICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewogICAgIGNhc2UgUHJlZGVmaW5lZENvbG9yU3Bh
Y2U6OlNSR0I6Ci0gICAgICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I7Cisg
ICAgICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKICNpZiBFTkFCTEUo
REVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExBWV9QMykKICAgICBjYXNlIFByZWRlZmluZWRD
b2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0gICAgICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OkRpc3BsYXlQMzsKKyAgICAgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlz
cGxheVAzKCk7CiAjZW5kaWYKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOworICAgIHJldHVybiBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKIH0KIAotT3B0aW9uYWw8UHJlZGVmaW5lZENvbG9yU3Bh
Y2U+IHRvUHJlZGVmaW5lZENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3Bh
Y2UpCitPcHRpb25hbDxQcmVkZWZpbmVkQ29sb3JTcGFjZT4gdG9QcmVkZWZpbmVkQ29sb3JTcGFj
ZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpCiB7Ci0gICAgc3dpdGNo
IChjb2xvclNwYWNlKSB7Ci0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I6Cisg
ICAgaWYgKGNvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpCiAgICAg
ICAgIHJldHVybiBQcmVkZWZpbmVkQ29sb3JTcGFjZTo6U1JHQjsKLSNpZiBFTkFCTEUoREVTVElO
QVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OkxpbmVhclNSR0I6Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0jZW5kaWYK
ICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExBWV9QMykKLSAgICBjYXNl
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxheVAzOgorICAgIGlmIChjb2xvclNwYWNlID09
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxheVAzKCkpCiAgICAgICAgIHJldHVybiBQcmVk
ZWZpbmVkQ29sb3JTcGFjZTo6RGlzcGxheVAzOwogI2VuZGlmCi0gICAgfQogCi0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5oCShy
ZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVk
Q29sb3JTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotZW51bSBjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgOiB1aW50OF90
OworY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlOwogCiBlbnVtIGNsYXNzIFByZWRlZmluZWRD
b2xvclNwYWNlIHsKICAgICBTUkdCCkBAIC00MCw3ICs0MCw3IEBAIGVudW0gY2xhc3MgUHJlZGVm
aW5lZENvbG9yU3BhY2UgewogfTsKIAogRGVzdGluYXRpb25Db2xvclNwYWNlIHRvRGVzdGluYXRp
b25Db2xvclNwYWNlKFByZWRlZmluZWRDb2xvclNwYWNlKTsKLU9wdGlvbmFsPFByZWRlZmluZWRD
b2xvclNwYWNlPiB0b1ByZWRlZmluZWRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSk7
CitPcHRpb25hbDxQcmVkZWZpbmVkQ29sb3JTcGFjZT4gdG9QcmVkZWZpbmVkQ29sb3JTcGFjZShj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKIAogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNw
cAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2MjMsNyArNzYyMyw3
IEBAIEltYWdlQnVmZmVyKiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjoKICAgICB9CiAKICAg
ICAvLyBGSVhNRSAoMTQ5NDIzKTogU2hvdWxkIHRoaXMgSW1hZ2VCdWZmZXIgYmUgdW5jb25kaXRp
b25hbGx5IHVuYWNjZWxlcmF0ZWQ/Ci0gICAgYXV0byB0ZW1wID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byB0ZW1wID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAo
IXRlbXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIEFTU0VSVChtX2J1ZmZlcnMuc2l6
ZSgpID4gMCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xU
ZXh0VHJhY2tDb250YWluZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50LmNwcAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxOCw3
ICs0MTgsNyBAQCBSZWZQdHI8SW1hZ2U+IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhCiAgICAg
SW50UmVjdCBwYWludGluZ1JlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5zaXplKCkp
OwogCiAgICAgLy8gRklYTUUgKDE0OTQyMik6IFRoaXMgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5j
b25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQuCi0gICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKHBhaW50aW5nUmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsIGRldmljZVNjYWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHBh
aW50aW5nUmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIGRldmljZVNj
YWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJH
UkE4KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTE0OSw3ICsxMTQ5LDcgQEAgaW50IEluc3BlY3RvckNhbnZh
czo6aW5kZXhGb3JEYXRhKER1cGxpYwogICAgICAgICAgICAgaWYgKENhY2hlZEltYWdlKiBjYWNo
ZWRJbWFnZSA9IGltYWdlRWxlbWVudC0+Y2FjaGVkSW1hZ2UoKSkgewogICAgICAgICAgICAgICAg
IEltYWdlKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZSgpOwogICAgICAgICAgICAgICAgIGlm
IChpbWFnZSAmJiBpbWFnZSAhPSAmSW1hZ2U6Om51bGxJbWFnZSgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXpl
KCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBp
bWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBp
eGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgICAgICAgICAgICAgICAgIGltYWdlQnVmZmVyLT5jb250
ZXh0KCkuZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgICAgICAgICAg
ICAgICAgIGRhdGFVUkwgPSBpbWFnZUJ1ZmZlci0+dG9EYXRhVVJMKCJpbWFnZS9wbmciKTsKICAg
ICAgICAgICAgICAgICB9CkBAIC0xMTYzLDcgKzExNjMsNyBAQCBpbnQgSW5zcGVjdG9yQ2FudmFz
OjppbmRleEZvckRhdGEoRHVwbGljCiAKICAgICAgICAgICAgIHVuc2lnbmVkIHZpZGVvV2lkdGgg
PSB2aWRlb0VsZW1lbnQtPnZpZGVvV2lkdGgoKTsKICAgICAgICAgICAgIHVuc2lnbmVkIHZpZGVv
SGVpZ2h0ID0gdmlkZW9FbGVtZW50LT52aWRlb0hlaWdodCgpOwotICAgICAgICAgICAgYXV0byBp
bWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKHZpZGVvV2lkdGgsIHZp
ZGVvSGVpZ2h0KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgICAgICAgICAgYXV0byBp
bWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKHZpZGVvV2lkdGgsIHZp
ZGVvSGVpZ2h0KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgICAgICAgICBpZiAo
aW1hZ2VCdWZmZXIpIHsKICAgICAgICAgICAgICAgICB2aWRlb0VsZW1lbnQtPnBhaW50Q3VycmVu
dEZyYW1lSW5Db250ZXh0KGltYWdlQnVmZmVyLT5jb250ZXh0KCksIEZsb2F0UmVjdCgwLCAwLCB2
aWRlb1dpZHRoLCB2aWRlb0hlaWdodCkpOwogICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBpbWFn
ZUJ1ZmZlci0+dG9EYXRhVVJMKCJpbWFnZS9wbmciKTsKQEAgLTEyMDAsNyArMTIwMCw3IEBAIGlu
dCBJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YShEdXBsaWMKICAgICAgICAgICAgIGlmIChh
dXRvKiBjYWNoZWRJbWFnZSA9IGNzc0ltYWdlVmFsdWUtPmltYWdlKCkpIHsKICAgICAgICAgICAg
ICAgICBhdXRvKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZSgpOwogICAgICAgICAgICAgICAg
IGlmIChpbWFnZSAmJiBpbWFnZSAhPSAmSW1hZ2U6Om51bGxJbWFnZSgpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5z
aXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgICAgICAgICAgICAgYXV0
byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVy
aW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCks
IFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgICAgICAgICAgICAgICAgIGltYWdlQnVmZmVyLT5j
b250ZXh0KCkuZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgICAgICAg
ICAgICAgICAgIGRhdGFVUkwgPSBpbWFnZUJ1ZmZlci0+dG9EYXRhVVJMKCJpbWFnZS9wbmciKTsK
ICAgICAgICAgICAgICAgICB9CkBAIC0xNDQxLDcgKzE0NDEsNyBAQCBSZWY8SlNPTjo6QXJyYXlP
ZjxKU09OOjpWYWx1ZT4+IEluc3BlY3RvCiB7CiAgICAgYXV0byYgdGlsZUltYWdlID0gY2FudmFz
UGF0dGVybi5wYXR0ZXJuKCkudGlsZUltYWdlKCk7CiAgICAgRmxvYXRSZWN0IHJlY3QgPSB7IHsg
fSwgdGlsZUltYWdlLnNpemUoKSB9OwotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKHRpbGVJbWFnZS5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
IDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAg
ICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0aWxlSW1hZ2Uuc2l6ZSgp
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgp
LmRyYXdOYXRpdmVJbWFnZSh0aWxlSW1hZ2UsIHRpbGVJbWFnZS5zaXplKCksIHJlY3QsIHJlY3Qp
OwogCiAgICAgU3RyaW5nIHJlcGVhdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTI5LDcgKzUyOSw3IEBAIHZvaWQgQ2hyb21lOjpzZXRDdXJzb3JIaWRkZW5VbnRp
bE1vdXNlTW8KICAgICBtX2NsaWVudC5zZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMoaGlk
ZGVuVW50aWxNb3VzZU1vdmVzKTsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBDaHJvbWU6OmNy
ZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5k
ZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9y
bWF0KSBjb25zdAorUmVmUHRyPEltYWdlQnVmZmVyPiBDaHJvbWU6OmNyZWF0ZUltYWdlQnVmZmVy
KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBSZW5k
ZXJpbmdQdXJwb3NlIHB1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9jbGllbnQuY3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVuZGVy
aW5nTW9kZSwgcHVycG9zZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1h
dCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IEN1cnNvciYpIG92ZXJyaWRlOwogICAg
IHZvaWQgc2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGJvb2wpIG92ZXJyaWRlOwogCi0g
ICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
LCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0IG92ZXJyaWRlOworICAg
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwg
UmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCkgY29uc3Qgb3ZlcnJpZGU7
CiAKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVh
dGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKSBj
b25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzM5LDcgKzMzOSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIERp
c3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkqIGRpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3Rvcnko
KSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwg
UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUGl4ZWxGb3Jt
YXQpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwg
UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBp
eGVsRm9ybWF0KSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAKICNpZiBFTkFCTEUoV0VCR0wp
CiAgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29u
dGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFdlYkNvcmU6OlBsYXRm
b3JtRGlzcGxheUlEKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTExMSw3ICsxMTEsNyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0V2l0
CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQYWludFdpdGhJbnRlZ3JhbFNjYWxl
RmFjdG9yKQogICAgICAgICBzY2FsZUZhY3RvciA9IGNlaWxmKHNjYWxlRmFjdG9yKTsKIAotICAg
IGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBzY2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJh
dGVkLCBzY2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIGJ1ZmZlci0+Y29udGV4dCgpLnRyYW5zbGF0ZSgtaW1hZ2VSZWN0LngoKSwgLWltYWdlUmVj
dC55KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb2xvclNhbXBsZXIuY3BwCShy
ZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb2xvclNhbXBsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIE9wdGlvbmFsPExh
YjxmbG9hdD4+IHNhbXBsZUNvbG9yKAogICAgIGlmICghc25hcHNob3QpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAKLSAgICBhdXRvIHBpeGVsQnVmZmVyID0gc25hcHNob3QtPmdldFBp
eGVsQnVmZmVyKHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhl
bEZvcm1hdDo6QkdSQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9LCB7IHsgfSwgc25h
cHNob3QtPmxvZ2ljYWxTaXplKCkgfSk7CisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IHNuYXBzaG90
LT5nZXRQaXhlbEJ1ZmZlcih7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGll
ZCwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9LCB7
IHsgfSwgc25hcHNob3QtPmxvZ2ljYWxTaXplKCkgfSk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlQ29uc29sZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlQ29uc29sZUNsaWVudC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjYsNyAr
MzI2LDcgQEAgdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdChKU0M6OgogICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNhY2hlZEltYWdlID0gaW1hZ2VFbGVtZW50LmNh
Y2hlZEltYWdlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvKiBpbWFnZSA9
IGNhY2hlZEltYWdlLT5pbWFnZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChp
bWFnZSAmJiBpbWFnZSAhPSAmSW1hZ2U6Om51bGxJbWFnZSgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNuYXBzaG90ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZS0+c2l6
ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNuYXBzaG90ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c25hcHNob3QtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFBvaW50KDAsIDApKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9
CkBAIC0zNDMsNyArMzQzLDcgQEAgdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdChK
U0M6OgogICAgICAgICAgICAgICAgICAgICAgICAgYXV0byYgdmlkZW9FbGVtZW50ID0gZG93bmNh
c3Q8SFRNTFZpZGVvRWxlbWVudD4oKm5vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgdmlkZW9XaWR0aCA9IHZpZGVvRWxlbWVudC52aWRlb1dpZHRoKCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCB2aWRlb0hlaWdodCA9IHZpZGVvRWxlbWVudC52aWRlb0hl
aWdodCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgc25hcHNob3QgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKEZsb2F0U2l6ZSh2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCksIFJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNuYXBzaG90ID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShGbG9hdFNpemUodmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpLCBSZW5kZXJpbmdN
b2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvRWxlbWVudC5w
YWludEN1cnJlbnRGcmFtZUluQ29udGV4dChzbmFwc2hvdC0+Y29udGV4dCgpLCBGbG9hdFJlY3Qo
MCwgMCwgdmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpKTsKICAgICAgICAgICAgICAgICAgICAgfQog
I2VuZGlmCkBAIC0zNjgsNyArMzY4LDcgQEAgdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVu
c2hvdChKU0M6OgogICAgICAgICAgICAgdGFyZ2V0ID0gcG9zc2libGVUYXJnZXQ7CiAgICAgICAg
ICAgICBpZiAoVU5MSUtFTFkoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYXNGcm9udGVuZHMo
KSkpIHsKICAgICAgICAgICAgICAgICBhdXRvIHNvdXJjZVNpemUgPSBpbWFnZURhdGEtPnNpemUo
KTsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGUoc291cmNlU2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNvdXJjZVNp
emUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpKSB7CiAgICAgICAgICAgICAgICAgICAgIElu
dFJlY3Qgc291cmNlUmVjdChJbnRQb2ludCgpLCBzb3VyY2VTaXplKTsKICAgICAgICAgICAgICAg
ICAgICAgaW1hZ2VCdWZmZXItPnB1dFBpeGVsQnVmZmVyKGltYWdlRGF0YS0+cGl4ZWxCdWZmZXIo
KSwgc291cmNlUmVjdCk7CiAgICAgICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBpbWFnZUJ1ZmZl
ci0+dG9EYXRhVVJMKCJpbWFnZS9wbmciX3MsIFdURjo6bnVsbG9wdCwgUHJlc2VydmVSZXNvbHV0
aW9uOjpZZXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSwxMCArMzEsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQ3Vyc29yOworY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlOwogY2xhc3MgSW1hZ2VCdWZm
ZXI7CiAKIGVudW0gY2xhc3MgUGl4ZWxGb3JtYXQgOiB1aW50OF90OwotZW51bSBjbGFzcyBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgOiB1aW50OF90OwogZW51bSBjbGFzcyBSZW5kZXJpbmdNb2RlIDog
Ym9vbDsKIGVudW0gY2xhc3MgUmVuZGVyaW5nUHVycG9zZSA6IHVpbnQ4X3Q7CiAKQEAgLTY0LDcg
KzY0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSW50UG9pbnQgYWNjZXNzaWJpbGl0eVNjcmVl
blRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBJbnRS
ZWN0IHJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKGNvbnN0IEludFJlY3QmKSBjb25zdCA9
IDA7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVy
KGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUGl4ZWxGb3Jt
YXQpIGNvbnN0ID0gMDsKIAogI2lmIEVOQUJMRShXRUJHTCkKICAgICB2aXJ0dWFsIFJlZlB0cjxH
cmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3QgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1Db2xvclNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1Db2xvclNwYWNlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db2xvclNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKENHKQorI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KK3R5cGVkZWYgc3RydWN0IENHQ29sb3JTcGFjZSogQ0dD
b2xvclNwYWNlUmVmOworI2Vsc2UKKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorI2VuZGlm
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIFVTRShDRykKKwordXNpbmcgUGxhdGZvcm1D
b2xvclNwYWNlID0gUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj47Cit1c2luZyBQbGF0Zm9ybUNv
bG9yU3BhY2VWYWx1ZSA9IENHQ29sb3JTcGFjZVJlZjsKKworI2Vsc2UKKworc3RydWN0IFBsYXRm
b3JtQ29sb3JTcGFjZSB7CisgICAgZW51bSBjbGFzcyBOYW1lIHsKKyAgICAgICAgU1JHQgorI2lm
IEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKKyAgICAgICAgLCBM
aW5lYXJTUkdCCisjZW5kaWYKKyNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElT
UExBWV9QMykKKyAgICAgICAgLCBEaXNwbGF5UDMKKyNlbmRpZgorICAgIH07CisgICAgTmFtZSBu
YW1lOworICAgIE5hbWUgZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9Cit9OwordXNpbmcg
UGxhdGZvcm1Db2xvclNwYWNlVmFsdWUgPSBQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU7CisKKyNl
bmRpZgorCit9CisKK25hbWVzcGFjZSBXVEYgeworCisjaWYgIVVTRShDRykKKwordGVtcGxhdGU8
PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU+IHsK
KyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpQbGF0Zm9y
bUNvbG9yU3BhY2U6Ok5hbWUsCisgICAgICAgIFdlYkNvcmU6OlBsYXRmb3JtQ29sb3JTcGFjZTo6
TmFtZTo6U1JHQgorI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JH
QikKKyAgICAgICAgLCBXZWJDb3JlOjpQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU6OkxpbmVhclNS
R0IKKyNlbmRpZgorI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1Az
KQorICAgICAgICAsIFdlYkNvcmU6OlBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZTo6RGlzcGxheVAz
CisjZW5kaWYKKyAgICA+OworfTsKKworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdURgorCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmgJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dDb2xvclNwYWNlICpD
R0NvbG9yU3BhYwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEZsb2F0U2l6ZTsKIGNsYXNzIFdpZGdl
dDsKQEAgLTY4LDYgKzY5LDcgQEAgdXNpbmcgSU9SZWdpc3RyeUdQVUlEID0gaW50NjRfdDsgLy8g
R2xvYgogaW50IHNjcmVlbkRlcHRoKFdpZGdldCopOwogaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9u
ZW50KFdpZGdldCopOwogYm9vbCBzY3JlZW5Jc01vbm9jaHJvbWUoV2lkZ2V0Kik7CitXRUJDT1JF
X0VYUE9SVCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqID0g
bnVsbHB0cik7CiAKIGJvb2wgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMoKTsKIApAQCAtMTAwLDEw
ICsxMDIsNiBAQCBXRUJDT1JFX0VYUE9SVCBib29sIHNjcmVlblN1cHBvcnRzSGlnaER5CiBjb25z
dGV4cHIgYm9vbCBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UoV2lkZ2V0KiA9IG51bGxw
dHIpIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAotI2lmIFVTRShDRykKLVdFQkNPUkVfRVhQ
T1JUIENHQ29sb3JTcGFjZVJlZiBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCogPSBudWxscHRyKTsK
LSNlbmRpZgotCiBzdHJ1Y3QgU2NyZWVuUHJvcGVydGllczsKIHN0cnVjdCBTY3JlZW5EYXRhOwog
ICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NyZWVuUHJvcGVydGllcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjcmVlblByb3BlcnRpZXMuaAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NyZWVuUHJvcGVy
dGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0
cy5oPgpAQCAtMzIsMTQgKzMzLDEyIEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi10eXBlZGVmIHN0cnVjdCBDR0NvbG9yU3Bh
Y2UgKkNHQ29sb3JTcGFjZVJlZjsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgU2Ny
ZWVuRGF0YSB7CiAgICAgRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3Q7CiAgICAgRmxvYXRS
ZWN0IHNjcmVlblJlY3Q7Ci0gICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFj
ZTsKKyAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSB7IERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpIH07CiAgICAgaW50IHNjcmVlbkRlcHRoIHsgMCB9OwogICAgIGludCBz
Y3JlZW5EZXB0aFBlckNvbXBvbmVudCB7IDAgfTsKICAgICBib29sIHNjcmVlblN1cHBvcnRzRXh0
ZW5kZWRDb2xvciB7IGZhbHNlIH07CkBAIC01NiwxMyArNTUsMTIgQEAgc3RydWN0IFNjcmVlbkRh
dGEgewogICAgIGZsb2F0IHNjYWxlRmFjdG9yIHsgMSB9OwogI2VuZGlmCiAKLSAgICBlbnVtIGNs
YXNzIENvbG9yU3BhY2VUeXBlIDogdWludDhfdCB7IE5vbmUsIE5hbWUsIERhdGEgfTsKICAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFNjcmVlbkRhdGE+IGRlY29k
ZShEZWNvZGVyJik7CiB9OwogCi10eXBlZGVmIEhhc2hNYXA8UGxhdGZvcm1EaXNwbGF5SUQsIFNj
cmVlbkRhdGE+IFNjcmVlbkRhdGFNYXA7Ci0gICAgCit1c2luZyBTY3JlZW5EYXRhTWFwID0gSGFz
aE1hcDxQbGF0Zm9ybURpc3BsYXlJRCwgU2NyZWVuRGF0YT47CisKIHN0cnVjdCBTY3JlZW5Qcm9w
ZXJ0aWVzIHsKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBwcmltYXJ5RGlzcGxheUlEIHsgMCB9Owog
ICAgIFNjcmVlbkRhdGFNYXAgc2NyZWVuRGF0YU1hcDsKQEAgLTc0LDggKzcyLDcgQEAgc3RydWN0
IFNjcmVlblByb3BlcnRpZXMgewogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgU2NyZWVu
UHJvcGVydGllczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2Rl
ciA8PCBwcmltYXJ5RGlzcGxheUlEOwotICAgIGVuY29kZXIgPDwgc2NyZWVuRGF0YU1hcDsKKyAg
ICBlbmNvZGVyIDw8IHByaW1hcnlEaXNwbGF5SUQgPDwgc2NyZWVuRGF0YU1hcDsKIH0KIAogdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTk3LDcgKzk0LDcgQEAgT3B0aW9uYWw8U2NyZWVuUHJv
cGVydGllcz4gU2NyZWVuUHJvcGVydAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgU2Ny
ZWVuRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8
PCBzY3JlZW5BdmFpbGFibGVSZWN0IDw8IHNjcmVlblJlY3QgPDwgc2NyZWVuRGVwdGggPDwgc2Ny
ZWVuRGVwdGhQZXJDb21wb25lbnQgPDwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yIDw8IHNj
cmVlbkhhc0ludmVydGVkQ29sb3JzIDw8IHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZTsK
KyAgICBlbmNvZGVyIDw8IHNjcmVlbkF2YWlsYWJsZVJlY3QgPDwgc2NyZWVuUmVjdCA8PCBjb2xv
clNwYWNlIDw8IHNjcmVlbkRlcHRoIDw8IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50IDw8IHNjcmVl
blN1cHBvcnRzRXh0ZW5kZWRDb2xvciA8PCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycyA8PCBzY3Jl
ZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2U7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgZW5j
b2RlciA8PCBzY3JlZW5Jc01vbm9jaHJvbWUgPDwgZGlzcGxheU1hc2sgPDwgZ3B1SUQgPDwgcHJl
ZmVycmVkRHluYW1pY1JhbmdlTW9kZTsKQEAgLTEwNiwyOCArMTAzLDYgQEAgdm9pZCBTY3JlZW5E
YXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcgogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBlbmNvZGVyIDw8IHNjYWxlRmFjdG9yOwogI2VuZGlmCi0KLSAg
ICBpZiAoY29sb3JTcGFjZSkgewotICAgICAgICAvLyBUcnkgdG8gZW5jb2RlIHRoZSBuYW1lLgot
ICAgICAgICBpZiAoYXV0byBuYW1lID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDb3B5TmFtZShjb2xv
clNwYWNlLmdldCgpKSkpIHsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgQ29sb3JTcGFjZVR5cGU6
Ok5hbWU7Ci0gICAgICAgICAgICBlbmNvZGVyIDw8IFN0cmluZyhuYW1lLmdldCgpKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZhaWxpbmcgdGhhdCwganVz
dCBlbmNvZGUgdGhlIElDQyBkYXRhLgotICAgICAgICBpZiAoYXV0byBwcm9maWxlRGF0YSA9IGFk
b3B0Q0YoQ0dDb2xvclNwYWNlQ29weUlDQ0RhdGEoY29sb3JTcGFjZS5nZXQoKSkpKSB7Ci0gICAg
ICAgICAgICBWZWN0b3I8dWludDhfdD4gaWNjRGF0YTsKLSAgICAgICAgICAgIGljY0RhdGEuYXBw
ZW5kKENGRGF0YUdldEJ5dGVQdHIocHJvZmlsZURhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgo
cHJvZmlsZURhdGEuZ2V0KCkpKTsKLQotICAgICAgICAgICAgZW5jb2RlciA8PCBDb2xvclNwYWNl
VHlwZTo6RGF0YTsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgaWNjRGF0YTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIFRoZSBjb2xvciBzcGFjZSB3YXMg
bnVsbCBvciBmYWlsZWQgdG8gYmUgZW5jb2RlZC4KLSAgICBlbmNvZGVyIDw8IENvbG9yU3BhY2VU
eXBlOjpOb25lOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtMTQzLDYgKzExOCwx
MSBAQCBPcHRpb25hbDxTY3JlZW5EYXRhPiBTY3JlZW5EYXRhOjpkZWNvZGUoCiAgICAgaWYgKCFz
Y3JlZW5SZWN0KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAgT3B0aW9uYWw8
RGVzdGluYXRpb25Db2xvclNwYWNlPiBzY3JlZW5Db2xvclNwYWNlOworICAgIGRlY29kZXIgPj4g
c2NyZWVuQ29sb3JTcGFjZTsKKyAgICBpZiAoIXNjcmVlbkNvbG9yU3BhY2UpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKICAgICBPcHRpb25hbDxpbnQ+IHNjcmVlbkRlcHRoOwogICAg
IGRlY29kZXIgPj4gc2NyZWVuRGVwdGg7CiAgICAgaWYgKCFzY3JlZW5EZXB0aCkKQEAgLTE5Nyw0
MSArMTc3LDEwIEBAIE9wdGlvbmFsPFNjcmVlbkRhdGE+IFNjcmVlbkRhdGE6OmRlY29kZSgKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICNlbmRpZgogCi0gICAgQ29sb3JTcGFjZVR5cGUg
ZGF0YVR5cGU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhVHlwZSkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjZ0Nv
bG9yU3BhY2U7Ci0gICAgc3dpdGNoIChkYXRhVHlwZSkgewotICAgIGNhc2UgQ29sb3JTcGFjZVR5
cGU6Ok5vbmU6Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ29sb3JTcGFjZVR5cGU6Ok5hbWU6
IHsKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBjb2xvclNwYWNlTmFtZTsKLSAgICAgICAgZGVj
b2RlciA+PiBjb2xvclNwYWNlTmFtZTsKLSAgICAgICAgQVNTRVJUKGNvbG9yU3BhY2VOYW1lKTsK
LSAgICAgICAgaWYgKCFjb2xvclNwYWNlTmFtZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7Ci0KLSAgICAgICAgY2dDb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVh
dGVXaXRoTmFtZShjb2xvclNwYWNlTmFtZS0+Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwotICAg
ICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDb2xvclNwYWNlVHlwZTo6RGF0YTogewotICAg
ICAgICBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGljY0RhdGE7Ci0gICAgICAgIGRlY29kZXIg
Pj4gaWNjRGF0YTsKLSAgICAgICAgQVNTRVJUKGljY0RhdGEpOwotICAgICAgICBpZiAoIWljY0Rh
dGEpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgICAgIGF1dG8gY29s
b3JTcGFjZURhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBp
Y2NEYXRhLT5kYXRhKCksIGljY0RhdGEtPnNpemUoKSkpOwotICAgICAgICBjZ0NvbG9yU3BhY2Ug
PSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhJQ0NEYXRhKGNvbG9yU3BhY2VEYXRhLmdl
dCgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICB9Ci0KICAgICByZXR1cm4geyB7CiAg
ICAgICAgIFdURk1vdmUoKnNjcmVlbkF2YWlsYWJsZVJlY3QpLAogICAgICAgICBXVEZNb3ZlKCpz
Y3JlZW5SZWN0KSwKLSAgICAgICAgV1RGTW92ZShjZ0NvbG9yU3BhY2UpLAorICAgICAgICBXVEZN
b3ZlKCpzY3JlZW5Db2xvclNwYWNlKSwKICAgICAgICAgV1RGTW92ZSgqc2NyZWVuRGVwdGgpLAog
ICAgICAgICBXVEZNb3ZlKCpzY3JlZW5EZXB0aFBlckNvbXBvbmVudCksCiAgICAgICAgIFdURk1v
dmUoKnNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciksCkBAIC0yNTAsMTYgKzE5OSwzIEBAIE9w
dGlvbmFsPFNjcmVlbkRhdGE+IFNjcmVlbkRhdGE6OmRlY29kZSgKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRy
YWl0czxXZWJDb3JlOjpTY3JlZW5EYXRhOjpDb2xvclNwYWNlVHlwZT4gewotICAgIHVzaW5nIHZh
bHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgICAgIFdlYkNvcmU6OlNjcmVlbkRhdGE6OkNvbG9yU3Bh
Y2VUeXBlLAotICAgICAgICBXZWJDb3JlOjpTY3JlZW5EYXRhOjpDb2xvclNwYWNlVHlwZTo6Tm9u
ZSwKLSAgICAgICAgV2ViQ29yZTo6U2NyZWVuRGF0YTo6Q29sb3JTcGFjZVR5cGU6Ok5hbWUsCi0g
ICAgICAgIFdlYkNvcmU6OlNjcmVlbkRhdGE6OkNvbG9yU3BhY2VUeXBlOjpEYXRhCi0gICAgPjsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjQsNyArMTY0LDcgQEAgUmVmUHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6
cHJlVHJhbgogICAgICAgICByZXR1cm4gaW1hZ2U7CiAKICAgICBhdXRvIGNvcnJlY3RlZFNpemVG
bG9hdCA9IGNvcnJlY3RlZFNpemUgPyBGbG9hdFNpemUoY29ycmVjdGVkU2l6ZS52YWx1ZSgpKSA6
IHNpemUoKTsKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY29ycmVjdGVk
U2l6ZUZsb2F0LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBidWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvcnJlY3RlZFNpemVGbG9hdCwgUmVuZGVyaW5nTW9kZTo6VW5h
Y2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0
OjpCR1JBOCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBpbWFnZTsKIApAQCAt
MzUyLDcgKzM1Miw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ28K
ICAgICB9CiAKICAgICBpZiAoIW1fY2FjaGVkSW1hZ2UpIHsKLSAgICAgICAgYXV0byBidWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUodGls
ZVJlY3Quc2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBjdHh0KTsKKyAgICAg
ICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBh
bmRlZEludFNpemUodGlsZVJlY3Quc2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCksIGN0eHQpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNyArMTY4LDcgQEAgQ29sb3JDb21wb25lbnRzPGZsb2F0
LCA0PiBDb2xvcjo6dG9Db2xvcgogICAgIHJldHVybiBjb252ZXJDb2xvckNvbXBvbmVudHMoaW5w
dXRDb2xvclNwYWNlLCBjb21wb25lbnRzLCBvdXRwdXRDb2xvclNwYWNlKTsKIH0KIAotQ29sb3JD
b21wb25lbnRzPGZsb2F0LCA0PiBDb2xvcjo6dG9Db2xvckNvbXBvbmVudHNJbkNvbG9yU3BhY2Uo
RGVzdGluYXRpb25Db2xvclNwYWNlIG91dHB1dENvbG9yU3BhY2UpIGNvbnN0CitDb2xvckNvbXBv
bmVudHM8ZmxvYXQsIDQ+IENvbG9yOjp0b0NvbG9yQ29tcG9uZW50c0luQ29sb3JTcGFjZShjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIG91dHB1dENvbG9yU3BhY2UpIGNvbnN0CiB7CiAgICAg
YXV0byBbaW5wdXRDb2xvclNwYWNlLCBjb21wb25lbnRzXSA9IGNvbG9yU3BhY2VBbmRDb21wb25l
bnRzKCk7CiAgICAgcmV0dXJuIGNvbnZlckNvbG9yQ29tcG9uZW50cyhpbnB1dENvbG9yU3BhY2Us
IGNvbXBvbmVudHMsIG91dHB1dENvbG9yU3BhY2UpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3
IEBACiAjaW5jbHVkZSAiQ29sb3JDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiQ29sb3JTcGFjZS5o
IgogI2luY2x1ZGUgIkNvbG9yVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xv
clNwYWNlLmgiCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CkBAIC0xMjEsNyArMTIyLDcgQEAgcHVi
bGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPFQ+IHRvU1JHQkFMb3NzeSgpIGNv
bnN0IHsgcmV0dXJuIHRvQ29sb3JUeXBlTG9zc3k8U1JHQkE8VD4+KCk7IH0KIAogICAgIENvbG9y
Q29tcG9uZW50czxmbG9hdCwgND4gdG9Db2xvckNvbXBvbmVudHNJbkNvbG9yU3BhY2UoQ29sb3JT
cGFjZSkgY29uc3Q7Ci0gICAgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiB0b0NvbG9yQ29tcG9u
ZW50c0luQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpIGNvbnN0OworICAgIENvbG9y
Q29tcG9uZW50czxmbG9hdCwgND4gdG9Db2xvckNvbXBvbmVudHNJbkNvbG9yU3BhY2UoY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJikgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6
OnBhaXI8Q29sb3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0Pj4gY29sb3JTcGFjZUFu
ZENvbXBvbmVudHMoKSBjb25zdDsKIApAQCAtMjY3LDYgKzI2OCw3IEBAIGJvb2wgb3V0T2ZMaW5l
Q29tcG9uZW50c3NFcXVhbElnbm9yaW5nU2UKIAogI2lmIFVTRShDRykKIFdFQkNPUkVfRVhQT1JU
IENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYpOworV0VCQ09SRV9FWFBPUlQg
Q29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBwbGF0Zm9ybUNvbnZlcnRDb2xvckNvbXBvbmVudHMo
Q29sb3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJik7CiAjZW5kaWYKIAogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IENvbG9yJik7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yQ29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDkgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb2xvckNvbnZlcnNpb24uaCIKIAorI2luY2x1ZGUg
IkNvbG9yLmgiCiAjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgIkRlc3RpbmF0aW9u
Q29sb3JTcGFjZS5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTMxOCwxOCArMzIwLDIxIEBAIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4g
Y29udmVyQ29sb3JDb20KICAgICB9KTsKIH0KIAotQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBj
b252ZXJDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1dENvbG9yU3BhY2UsIENvbG9yQ29t
cG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVudHMsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSBvdXRwdXRDb2xvclNwYWNlKQorQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb252ZXJD
b2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1dENvbG9yU3BhY2UsIENvbG9yQ29tcG9uZW50
czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVudHMsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgb3V0cHV0Q29sb3JTcGFjZSkKIHsKKyNpZiBVU0UoQ0cpCisgICAgcmV0dXJuIHBsYXRm
b3JtQ29udmVydENvbG9yQ29tcG9uZW50cyhpbnB1dENvbG9yU3BhY2UsIGlucHV0Q29sb3JDb21w
b25lbnRzLCBvdXRwdXRDb2xvclNwYWNlKTsKKyNlbHNlCiAgICAgcmV0dXJuIGNhbGxXaXRoQ29s
b3JUeXBlKGlucHV0Q29sb3JDb21wb25lbnRzLCBpbnB1dENvbG9yU3BhY2UsIFtvdXRwdXRDb2xv
clNwYWNlXSAoY29uc3QgYXV0byYgaW5wdXRDb2xvcikgewotICAgICAgICBzd2l0Y2ggKG91dHB1
dENvbG9yU3BhY2UpIHsKLSAgICAgICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I6
CisgICAgICAgIHN3aXRjaCAob3V0cHV0Q29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSkg
eworICAgICAgICBjYXNlIFBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZTo6U1JHQjoKICAgICAgICAg
ICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhjb252ZXJ0Q29sb3I8U1JHQkE8ZmxvYXQ+Pihp
bnB1dENvbG9yKSk7CiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9T
UkdCKQotICAgICAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQjoKLSAg
ICAgICAgICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhjb252ZXJ0Q29sb3I8TGluZWFyU1JH
QkE8ZmxvYXQ+PihpbnB1dENvbG9yKSk7CisgICAgICAgIGNhc2UgUGxhdGZvcm1Db2xvclNwYWNl
OjpOYW1lOjpMaW5lYXJTUkdCOgorICAgICAgICAgICAgcmV0dXJuIGFzQ29sb3JDb21wb25lbnRz
KGNvbnZlcnRDb2xvcjxMaW5lYXJTUkdCPGZsb2F0Pj4oaW5wdXRDb2xvcikpOwogI2VuZGlmCiAj
aWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCi0gICAgICAgIGNh
c2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDM6CisgICAgICAgIGNhc2UgUGxhdGZv
cm1Db2xvclNwYWNlOjpOYW1lOjpEaXNwbGF5UDM6CiAgICAgICAgICAgICByZXR1cm4gYXNDb2xv
ckNvbXBvbmVudHMoY29udmVydENvbG9yPERpc3BsYXlQMzxmbG9hdD4+KGlucHV0Q29sb3IpKTsK
ICNlbmRpZgogICAgICAgICB9CkBAIC0zMzcsNiArMzQyLDcgQEAgQ29sb3JDb21wb25lbnRzPGZs
b2F0LCA0PiBjb252ZXJDb2xvckNvbQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgcmV0dXJuIGFzQ29sb3JDb21wb25lbnRzKGNvbnZlcnRDb2xvcjxTUkdCQTxmbG9hdD4+
KGlucHV0Q29sb3IpKTsKICAgICB9KTsKKyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ckNvbnZlcnNpb24uaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE1ICsy
OSwxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTsKKwogZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdDsKLWVudW0gY2xhc3MgRGVz
dGluYXRpb25Db2xvclNwYWNlIDogdWludDhfdDsKIAogLy8gQ29udmVyc2lvbiBmdW5jdGlvbiBm
b3IgdHlwZWQgY29sb3JzLgogdGVtcGxhdGU8dHlwZW5hbWUgT3V0cHV0LCB0eXBlbmFtZSBJbnB1
dD4gT3V0cHV0IGNvbnZlcnRDb2xvcihjb25zdCBJbnB1dCYgY29sb3IpOwogCiAvLyBDb252ZXJz
aW9uIGZ1bmN0aW9ucyBmb3IgcmF3IGNvbG9yIGNvbXBvbmVudHMgd2l0aCBhc3NvY2lhdGVkIGNv
bG9yIHNwYWNlcy4KIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gY29udmVyQ29sb3JDb21wb25l
bnRzKENvbG9yU3BhY2UgaW5wdXRDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+
IGlucHV0Q29sb3JDb21wb25lbnRzLCBDb2xvclNwYWNlIG91dHB1dENvbG9yU3BhY2UpOwotQ29s
b3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb252ZXJDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBp
bnB1dENvbG9yU3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBv
bmVudHMsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBvdXRwdXRDb2xvclNwYWNlKTsKK0NvbG9yQ29t
cG9uZW50czxmbG9hdCwgND4gY29udmVyQ29sb3JDb21wb25lbnRzKENvbG9yU3BhY2UgaW5wdXRD
b2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGlucHV0Q29sb3JDb21wb25lbnRz
LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIG91dHB1dENvbG9yU3BhY2UpOwogCiAKIC8v
IEFsbCBjb2xvciB0eXBlcywgb3RoZXIgdGhhbiBYWVpBIG9yIHRob3NlIGluaGVyaXRpbmcgZnJv
bSBSR0JUeXBlLCBtdXN0IGltcGxlbWVudApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3JTcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NCwyNCArNjQsNCBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBDCiAgICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkKLXsKLSAgICBzd2l0Y2gg
KGNvbG9yU3BhY2UpIHsKLSAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjoKLSAg
ICAgICAgdHMgPDwgInNSR0IiOwotICAgICAgICBicmVhazsKLSNpZiBFTkFCTEUoREVTVElOQVRJ
T05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OkxpbmVhclNSR0I6Ci0gICAgICAgIHRzIDw8ICJMaW5lYXJTUkdCIjsKLSAgICAgICAgYnJl
YWs7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExBWV9Q
MykKLSAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxheVAzOgotICAgICAgICB0
cyA8PCAiRGlzcGxheVAzIjsKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLSAgICB9Ci0gICAgcmV0
dXJuIHRzOwotfQotCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvclNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JTcGFjZS5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEwICsyOCw3
IEBACiAjaW5jbHVkZSAiQ29sb3JUeXBlcy5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5j
bHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBUZXh0U3Ry
ZWFtOwotfQorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNDcsMTggKzQ0LDcgQEAgZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdCB7CiAg
ICAgWFlaX0Q1MCwKIH07CiAKLWVudW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDogdWlu
dDhfdCB7Ci0gICAgU1JHQgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5F
QVJfU1JHQikKLSAgICAsIExpbmVhclNSR0IKLSNlbmRpZgotI2lmIEVOQUJMRShERVNUSU5BVElP
Tl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQotICAgICwgRGlzcGxheVAzCi0jZW5kaWYKLX07Ci0K
LVdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJl
YW0mLCBDb2xvclNwYWNlKTsKLVdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChXVEY6OlRleHRTdHJlYW0mLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UpOworV0VCQ09SRV9F
WFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgQ29sb3JTcGFjZSk7CiAK
IAogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBDb2xvclNwYWNlTWFwcGluZzsKQEAgLTEwMiwy
NSArODgsNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBGdW5jdG9yPiBjCiAgICAg
cmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFrZUZy
b21Db21wb25lbnRzPFNSR0JBPFQ+Pihjb21wb25lbnRzKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIEZ1bmN0b3I+IGNvbnN0ZXhwciBkZWNsdHlwZShhdXRvKSBjYWxsV2l0
aENvbG9yVHlwZShjb25zdCBDb2xvckNvbXBvbmVudHM8VCwgND4mIGNvbXBvbmVudHMsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBGdW5jdG9yJiYgZnVuY3RvcikKLXsKLSAgICBz
d2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QjoKLSAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5j
dG9yKSwgbWFrZUZyb21Db21wb25lbnRzPFNSR0JBPFQ+Pihjb21wb25lbnRzKSk7Ci0jaWYgRU5B
QkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQotICAgIGNhc2UgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCOgotICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uo
c3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8TGluZWFy
U1JHQkE8VD4+KGNvbXBvbmVudHMpKTsKLSNlbmRpZgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9D
T0xPUl9TUEFDRV9ESVNQTEFZX1AzKQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpE
aXNwbGF5UDM6Ci0gICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rv
cj4oZnVuY3RvciksIG1ha2VGcm9tQ29tcG9uZW50czxEaXNwbGF5UDM8VD4+KGNvbXBvbmVudHMp
KTsKLSNlbmRpZgotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIG1ha2VGcm9tQ29t
cG9uZW50czxTUkdCQTxUPj4oY29tcG9uZW50cykpOwotfQotCiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIApAQCAtMTQxLDE3ICsxMDgsNCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PFdlYkNvcmU6OkNvCiAgICAgPjsKIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiB7Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51
bVZhbHVlczwKLSAgICAgICAgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlLAotICAgICAg
ICBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IKLSNpZiBFTkFCTEUoREVTVElO
QVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgICAgICwgV2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCCi0jZW5kaWYKLSNpZiBFTkFCTEUoREVTVElOQVRJ
T05fQ09MT1JfU1BBQ0VfRElTUExBWV9QMykKLSAgICAgICAgLCBXZWJDb3JlOjpEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OkRpc3BsYXlQMwotI2VuZGlmCi0gICAgPjsKLX07Ci0KIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdl
QnVmZmVyLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQs
NyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4KIGNsYXNzIENvbmNyZXRlSW1hZ2VC
dWZmZXIgOiBwdWJsaWMgSW1hZ2VCdWZmZXIgewogcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEltYWdlQnVmZmVyVHlwZSA9IENvbmNyZXRlSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFy
Z3VtZW50cz4KLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5k
b3cqIGhvc3RXaW5kb3csIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKKyAgICBzdGF0aWMgUmVm
UHRyPEltYWdlQnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2Us
IFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93LCBB
cmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgewogICAgICAgICBhdXRvIHBhcmFtZXRlcnMg
PSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMgeyBzaXplLCByZXNvbHV0aW9uU2NhbGUs
IGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0IH07CiAgICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tl
bmRUeXBlOjpjcmVhdGUocGFyYW1ldGVycywgaG9zdFdpbmRvdyk7CkBAIC00Niw3ICs0Niw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbWFnZUJ1ZmZlclR5cGUgPSBDb25jcmV0
ZUltYWdlQnVmZmVyLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CiAgICAgc3RhdGljIFJlZlB0cjxJ
bWFnZUJ1ZmZlclR5cGU+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAgIHsKLSAg
ICAgICAgYXV0byBwYXJhbWV0ZXJzID0gSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzIHsg
c2l6ZSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgg
fTsKKyAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0gSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0
ZXJzIHsgc2l6ZSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0
OjpCR1JBOCB9OwogICAgICAgICBhdXRvIGJhY2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3JlYXRlKHBh
cmFtZXRlcnMsIGNvbnRleHQpOwogICAgICAgICBpZiAoIWJhY2tlbmQpCiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTE5NSw3ICsxOTUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNw
YWNlIHNyY0NvbG9yU3BhY2UsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBkZXN0Q29sb3JTcGFjZSkg
b3ZlcnJpZGUKKyAgICB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiBzcmNDb2xvclNwYWNlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGRl
c3RDb2xvclNwYWNlKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQg
PSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7CiAgICAgICAgICAgICBmbHVzaERyYXdpbmdDb250
ZXh0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVH
ZW5lcmF0ZWRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsNyBAQCBJbWFnZURyYXdSZXN1bHQg
Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6CiAKIHZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6
OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
cGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAg
YXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBjb250ZXh0LnJl
bmRlcmluZ01vZGUoKSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1h
dDo6QkdSQTgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNp
emUoKSwgY29udGV4dC5yZW5kZXJpbmdNb2RlKCksIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAg
ICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVz
dGluYXRpb25Db2xvclNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuY3BwCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCisKKyNpbmNs
dWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiQ29s
b3JTcGFjZUNHLmgiCisjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KKyNl
bmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKQoreworI2lmIFVTRShDRykKKyAgICByZXR1cm4gRGVz
dGluYXRpb25Db2xvclNwYWNlKHNSR0JDb2xvclNwYWNlUmVmKCkpOworI2Vsc2UKKyAgICByZXR1
cm4gRGVzdGluYXRpb25Db2xvclNwYWNlKFR5cGU6OlNSR0IpOworI2VuZGlmCit9CisKKyNpZiBF
TkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCitEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCkKK3sKKyNpZiBVU0Uo
Q0cpCisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZShsaW5lYXJTUkdCQ29sb3JTcGFj
ZVJlZigpKTsKKyNlbHNlCisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZShUeXBlOjpM
aW5lYXJTUkdCKTsKKyNlbmRpZgorfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoREVTVElOQVRJT05f
Q09MT1JfU1BBQ0VfRElTUExBWV9QMykKK0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OkRpc3BsYXlQMygpCit7CisjaWYgVVNFKENHKQorICAgIHJldHVybiBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UoZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpKTsKKyNlbHNlCisgICAg
cmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZShUeXBlOjpEaXNwbGF5UDMpOworI2VuZGlmCit9
CisjZW5kaWYKKworRGVzdGluYXRpb25Db2xvclNwYWNlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2Uo
UGxhdGZvcm1Db2xvclNwYWNlIHBsYXRmb3JtQ29sb3JTcGFjZSkKKyAgICA6IG1fcGxhdGZvcm1D
b2xvclNwYWNlIHsgV1RGTW92ZShwbGF0Zm9ybUNvbG9yU3BhY2UpIH0KK3sKKyNpZiBVU0UoQ0cp
CisgICAgQVNTRVJUKG1fcGxhdGZvcm1Db2xvclNwYWNlKTsKKyNlbmRpZgorfQorCitib29sIG9w
ZXJhdG9yPT0oY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBhLCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmIGIpCit7CisgICAgaWYgKGEucGxhdGZvcm1Db2xvclNwYWNlKCkgPT0gYi5w
bGF0Zm9ybUNvbG9yU3BhY2UoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyNpZiBVU0UoQ0cp
CisgICAgcmV0dXJuIENHQ29sb3JTcGFjZUVxdWFsVG9Db2xvclNwYWNlKGEucGxhdGZvcm1Db2xv
clNwYWNlKCksIGIucGxhdGZvcm1Db2xvclNwYWNlKCkpOworI2Vsc2UKKyAgICByZXR1cm4gZmFs
c2U7CisjZW5kaWYKK30KKworYm9vbCBvcGVyYXRvciE9KGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgYSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBiKQoreworICAgIHJldHVybiAh
KGEgPT0gYik7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkKK3sKKyAgICBpZiAoY29sb3JT
cGFjZSA9PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSkKKyAgICAgICAgdHMgPDwgInNS
R0IiOworI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKKyAg
ICBlbHNlIGlmIChjb2xvclNwYWNlID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JH
QigpKQorICAgICAgICB0cyA8PCAiTGluZWFyU1JHQiI7CisjZW5kaWYKKyNpZiBFTkFCTEUoREVT
VElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExBWV9QMykKKyAgICBlbHNlIGlmIChjb2xvclNwYWNl
ID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxheVAzKCkpCisgICAgICAgIHRzIDw8ICJE
aXNwbGF5UDMiOworI2VuZGlmCisjaWYgVVNFKENHKQorICAgIGVsc2UgaWYgKGF1dG8gZGVzY3Jp
cHRpb24gPSBhZG9wdENGKENHQ29sb3JTcGFjZUNvcHlJQ0NQcm9maWxlRGVzY3JpcHRpb24oY29s
b3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSkpKQorICAgICAgICB0cyA8PCBTdHJpbmcoZGVz
Y3JpcHRpb24uZ2V0KCkpOworI2VuZGlmCisKKyAgICByZXR1cm4gdHM7Cit9CisKK30KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0
aW9uQ29sb3JTcGFjZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlBsYXRmb3Jt
Q29sb3JTcGFjZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERlc3RpbmF0aW9u
Q29sb3JTcGFjZSB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIERlc3RpbmF0
aW9uQ29sb3JTcGFjZSBTUkdCKCk7CisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNF
X0xJTkVBUl9TUkdCKQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgTGluZWFyU1JHQigpOworI2VuZGlmCisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9S
X1NQQUNFX0RJU1BMQVlfUDMpCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIERlc3RpbmF0aW9u
Q29sb3JTcGFjZSBEaXNwbGF5UDMoKTsKKyNlbmRpZgorCisgICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgRGVzdGluYXRpb25Db2xvclNwYWNlKFBsYXRmb3JtQ29sb3JTcGFjZSk7CisgICAgUGxh
dGZvcm1Db2xvclNwYWNlVmFsdWUgcGxhdGZvcm1Db2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4g
bV9wbGF0Zm9ybUNvbG9yU3BhY2UuZ2V0KCk7IH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBkZWNvZGUoRGVjb2Rl
ciYpOworCitwcml2YXRlOgorICAgIFBsYXRmb3JtQ29sb3JTcGFjZSBtX3BsYXRmb3JtQ29sb3JT
cGFjZTsKK307CisKK1dFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKK1dFQkNPUkVf
RVhQT1JUIGJvb2wgb3BlcmF0b3IhPShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKKworV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CisK
K3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgRGVzdGluYXRpb25Db2xvclNwYWNlOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fcGxhdGZvcm1D
b2xvclNwYWNlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxEZXN0aW5h
dGlvbkNvbG9yU3BhY2U+IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCit7CisgICAgT3B0aW9uYWw8UGxhdGZvcm1Db2xvclNwYWNlPiBwbGF0Zm9ybUNvbG9y
U3BhY2U7CisgICAgZGVjb2RlciA+PiBwbGF0Zm9ybUNvbG9yU3BhY2U7CisgICAgaWYgKCFwbGF0
Zm9ybUNvbG9yU3BhY2UpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1
cm4gRGVzdGluYXRpb25Db2xvclNwYWNlIHsgV1RGTW92ZSgqcGxhdGZvcm1Db2xvclNwYWNlKSB9
OworfQorCit9CisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRp
ZW50SW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYWRpZW50SW1hZ2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzIsNyArNzIsNyBAQCB2b2lkIEdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzCiAg
ICAgdW5zaWduZWQgZ2VuZXJhdG9ySGFzaCA9IG1fZ3JhZGllbnQtPmhhc2goKTsKIAogICAgIGlm
ICghbV9jYWNoZWRJbWFnZSB8fCBtX2NhY2hlZEdlbmVyYXRvckhhc2ggIT0gZ2VuZXJhdG9ySGFz
aCB8fCBtX2NhY2hlZEFkanVzdGVkU2l6ZSAhPSBhZGp1c3RlZFNpemUgfHwgIWFyZUVzc2VudGlh
bGx5RXF1YWwoZGVzdENvbnRleHQuc2NhbGVGYWN0b3IoKSwgbV9jYWNoZWRTY2FsZUZhY3Rvcikp
IHsKLSAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRp
YmxlQnVmZmVyKGFkanVzdGVkU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBkZXN0
Q29udGV4dCk7CisgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpLCBkZXN0Q29udGV4dCk7CiAgICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgICAg
ICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODgzLDcgKzg4Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0Um91bmRl
ZFJlY3QKICAgICBjbGlwT3V0KHBhdGgpOwogfQogCi1HcmFwaGljc0NvbnRleHQ6OkNsaXBUb0Ry
YXdpbmdDb21tYW5kc1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0RyYXdpbmdDb21tYW5k
cyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29s
b3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBkcmF3aW5nRnVuY3Rp
b24pCitHcmFwaGljc0NvbnRleHQ6OkNsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBHcmFwaGlj
c0NvbnRleHQ6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZv
aWQoR3JhcGhpY3NDb250ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKQogewogICAgIGlmIChwYWlu
dGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1
bHQ6OlN1Y2Nlc3M7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDggKzI2LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJDb2xvclNwYWNlLmgi
CiAjaW5jbHVkZSAiRGFzaEFycmF5LmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNl
LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKICNp
bmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCkBAIC00MTAsNyArNDEwLDcgQEAgcHVibGljOgogICAg
IHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKTsK
IAogICAgIGVudW0gY2xhc3MgQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IDogYm9vbCB7IFN1
Y2Nlc3MsIEZhaWxlZFRvQ3JlYXRlSW1hZ2VCdWZmZXIgfTsKLSAgICBDbGlwVG9EcmF3aW5nQ29t
bWFuZHNSZXN1bHQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRl
eHQmKT4mJik7CisgICAgQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IGNsaXBUb0RyYXdpbmdD
b21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKTsKICAgICAKICAg
ICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpID0gMDsKICAg
ICB2aXJ0dWFsIEludFJlY3QgY2xpcEJvdW5kcygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xp
cFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250
ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsaXBUb0Ry
YXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmIGRyYXdp
bmdGdW5jdGlvbikgPSAwOwogI2lmIEVOQUJMRShWSURFTykKICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
bikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBjYW5QYWludEZyYW1lRm9yTWVkaWEoY29uc3QgTWVk
aWFQbGF5ZXImKSBjb25zdCA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIGNvbnN0IGZsb2F0
IE1heENsYW1wZWRMZW5ndGggPSA0MDk2Owogc3RhdGljIGNvbnN0IGZsb2F0IE1heENsYW1wZWRB
cmVhID0gTWF4Q2xhbXBlZExlbmd0aCAqIE1heENsYW1wZWRMZW5ndGg7CiAKLVJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRl
cmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3Qgc2hvdWxkVXNlRGlz
cGxheUxpc3QsIFJlbmRlcmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3Jt
YXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IElt
YWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJl
bmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0IHNob3VsZFVzZURpc3BsYXlMaXN0LCBS
ZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwg
Y29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+
IGltYWdlQnVmZmVyOwogICAgIApAQCAtNTksNyArNTksNyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+
IEltYWdlQnVmZmVyOjpjcmVhdGUoCiAgICAgcmV0dXJuIGltYWdlQnVmZmVyOwogfQogCi1SZWZQ
dHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVz
dGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBj
b25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJp
bmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cq
IGhvc3RXaW5kb3cpCiB7CiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKICAg
ICAKQEAgLTk1LDcgKzk1LDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlQwogICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRp
YmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiBjb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAg
aWYgKHNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTExMSw3ICsx
MTEsNyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDCiAgICAgcmV0
dXJuIGltYWdlQnVmZmVyOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpj
cmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBjb25zdCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgcmV0dXJuIEltYWdlQnVmZmVyOjpjcmVh
dGUoc2l6ZSwgY29udGV4dC5yZW5kZXJpbmdNb2RlKCksIHJlc29sdXRpb25TY2FsZSwgY29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKIH0KQEAgLTE2Nyw3ICsxNjcsNyBAQCBJbnRTaXpl
IEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVyU2l6CiAgICAgcmV0dXJuIGV4cGFuZGVkSW50
U2l6ZShzaXplICogY29udGV4dC5zY2FsZUZhY3RvcigpKTsKIH0KIAotUmVmUHRyPEltYWdlQnVm
ZmVyPiBJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjb3B5UmVjdFRvQnVm
ZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBj
b2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgaWYgKHJl
Y3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAkocmV2aXNpb24gMjc3OTE5
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNDUsMTMgKzQ1LDEzIEBAIHN0cnVjdCBJdGVtQnVmZmVySGFuZGxlOwog
Y2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VCdWZm
ZXI+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW1hZ2VCdWZmZXI+IHsKIHB1YmxpYzoKICAgICAv
LyBXaWxsIHJldHVybiBhIG51bGwgcG9pbnRlciBvbiBhbGxvY2F0aW9uIGZhaWx1cmUuCi0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZs
b2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQ
dXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUGl4
ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIFJl
bmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNl
LCBQaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXpl
JiwgUmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1cnBvc2Us
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUGl4
ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIFJl
bmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiwgUGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7CiAKICAg
ICAvLyBDcmVhdGUgYW4gaW1hZ2UgYnVmZmVyIGNvbXBhdGlibGUgd2l0aCB0aGUgY29udGV4dCwg
d2l0aCBzdWl0YWJsZSByZXNvbHV0aW9uIGZvciBkcmF3aW5nIGludG8gdGhlIGJ1ZmZlciBhbmQg
dGhlbiBpbnRvIHRoaXMgY29udGV4dC4KICAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBj
cmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYpOwotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVC
dWZmZXIoY29uc3QgRmxvYXRTaXplJiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBjb25zdCBHcmFw
aGljc0NvbnRleHQmKTsKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVz
dGluYXRpb25Db2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKyAgICBzdGF0aWMg
UmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6
ZSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
OworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
Y29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKIAogICAgIC8vIFRoZXNlIGZ1
bmN0aW9ucyBhcmUgdXNlZCB3aGVuIGNsYW1waW5nIHRoZSBJbWFnZUJ1ZmZlciB3aGljaCBpcyBj
cmVhdGVkIGZvciBmaWx0ZXIsIG1hc2tlciBvciBjbGlwcGVyLgogICAgIHN0YXRpYyBib29sIHNp
emVOZWVkc0NsYW1waW5nKGNvbnN0IEZsb2F0U2l6ZSYpOwpAQCAtMTA3LDcgKzEwNyw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gY29weUltYWdlKEJhY2tpbmdTdG9yZUNv
cHkgPSBDb3B5QmFja2luZ1N0b3JlLCBQcmVzZXJ2ZVJlc29sdXRpb24gPSBQcmVzZXJ2ZVJlc29s
dXRpb246Ok5vKSBjb25zdCA9IDA7CiAKICAgICAvLyBDcmVhdGUgYW4gaW1hZ2UgYnVmZmVyIGNv
bXBhdGlibGUgd2l0aCB0aGUgY29udGV4dCBhbmQgY29weSByZWN0IGZyb20gdGhpcyBidWZmZXIg
aW50byB0aGlzIG5ldyBvbmUuCi0gICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjb3B5UmVjdFRvQnVm
ZmVyKGNvbnN0IEZsb2F0UmVjdCYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0Jik7CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjb3B5UmVjdFRvQnVmZmVyKGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYpOwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxv
YXRSZWN0KDAsIDAsIC0xLCAtMSksIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0g
eyB9KSA9IDA7CkBAIC0xMjAsNyArMTIwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBj
bGlwVG9NYXNrKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpID0g
MDsKIAogICAgIHZpcnR1YWwgdm9pZCBjb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBz
cmNDb2xvclNwYWNlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgZHN0Q29sb3JTcGFjZSkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgc3JjQ29sb3JTcGFjZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBkc3RD
b2xvclNwYWNlKSA9IDA7CiAKICAgICB2aXJ0dWFsIFN0cmluZyB0b0RhdGFVUkwoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5ID0gV1RGOjpudWxsb3B0LCBQ
cmVzZXJ2ZVJlc29sdXRpb24gPSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBWZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IFdURjo6bnVsbG9wdCkgY29uc3QgPSAwOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
Myw2ICs1Myw4IEBAIEltYWdlQnVmZmVyQmFja2VuZDo6SW1hZ2VCdWZmZXJCYWNrZW5kKGMKIHsK
IH0KIAorSW1hZ2VCdWZmZXJCYWNrZW5kOjp+SW1hZ2VCdWZmZXJCYWNrZW5kKCkgPSBkZWZhdWx0
OworCiBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyQmFja2VuZDo6c2lua0ludG9OYXRp
dmVJbWFnZSgpCiB7CiAgICAgcmV0dXJuIGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdT
dG9yZSk7CkBAIC0xMTQsMTUgKzExNiwxNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gSW1hZ2VC
dWZmZXJCYWNrZW5kCiAgICAgaWYgKGRlc3RpbmF0aW9uUmVjdC5zaXplKCkgIT0gc291cmNlUmVj
dFNjYWxlZC5zaXplKCkpCiAgICAgICAgIHBpeGVsQnVmZmVyLT5kYXRhKCkuemVyb0ZpbGwoKTsK
IAotICAgIENvbnN0UGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBzb3VyY2U7Ci0gICAgc291cmNl
LmZvcm1hdCA9IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgcGl4ZWxG
b3JtYXQoKSwgY29sb3JTcGFjZSgpIH07Ci0gICAgc291cmNlLmJ5dGVzUGVyUm93ID0gYnl0ZXNQ
ZXJSb3coKTsKLSAgICBzb3VyY2Uucm93cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRh
dGEpICsgc291cmNlUmVjdENsaXBwZWQueSgpICogc291cmNlLmJ5dGVzUGVyUm93ICsgc291cmNl
UmVjdENsaXBwZWQueCgpICogNDsKKyAgICBDb25zdFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcg
c291cmNlIHsKKyAgICAgICAgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVk
LCBwaXhlbEZvcm1hdCgpLCBjb2xvclNwYWNlKCkgfSwKKyAgICAgICAgYnl0ZXNQZXJSb3coKSwK
KyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YSkgKyBzb3VyY2VSZWN0Q2xp
cHBlZC55KCkgKiBzb3VyY2UuYnl0ZXNQZXJSb3cgKyBzb3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0
CisgICAgfTsKICAgICAKLSAgICBQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IGRlc3RpbmF0aW9u
OwotICAgIGRlc3RpbmF0aW9uLmZvcm1hdCA9IGRlc3RpbmF0aW9uRm9ybWF0OwotICAgIGRlc3Rp
bmF0aW9uLmJ5dGVzUGVyUm93ID0gNCAqIHNvdXJjZVJlY3RTY2FsZWQud2lkdGgoKTsKLSAgICBk
ZXN0aW5hdGlvbi5yb3dzID0gcGl4ZWxCdWZmZXItPmRhdGEoKS5kYXRhKCkgKyBkZXN0aW5hdGlv
blJlY3QueSgpICogZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgKyBkZXN0aW5hdGlvblJlY3QueCgp
ICogNDsKKyAgICBQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IGRlc3RpbmF0aW9uIHsKKyAgICAg
ICAgZGVzdGluYXRpb25Gb3JtYXQsCisgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPig0ICog
c291cmNlUmVjdFNjYWxlZC53aWR0aCgpKSwKKyAgICAgICAgcGl4ZWxCdWZmZXItPmRhdGEoKS5k
YXRhKCkgKyBkZXN0aW5hdGlvblJlY3QueSgpICogZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgKyBk
ZXN0aW5hdGlvblJlY3QueCgpICogNAorICAgIH07CiAKICAgICBjb252ZXJ0SW1hZ2VQaXhlbHMo
c291cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb25SZWN0LnNpemUoKSk7CiAKQEAgLTE0Nywx
NSArMTUxLDE3IEBAIHZvaWQgSW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQaXhlbEJ1ZmZlcigKICAg
ICBkZXN0aW5hdGlvblJlY3QuaW50ZXJzZWN0KGJhY2tlbmRSZWN0KCkpOwogICAgIHNvdXJjZVJl
Y3RDbGlwcGVkLnNldFNpemUoZGVzdGluYXRpb25SZWN0LnNpemUoKSk7CiAKLSAgICBDb25zdFBp
eGVsQnVmZmVyQ29udmVyc2lvblZpZXcgc291cmNlOwotICAgIHNvdXJjZS5mb3JtYXQgPSBzb3Vy
Y2VQaXhlbEJ1ZmZlci5mb3JtYXQoKTsKLSAgICBzb3VyY2UuYnl0ZXNQZXJSb3cgPSA0ICogc291
cmNlUGl4ZWxCdWZmZXIuc2l6ZSgpLndpZHRoKCk7Ci0gICAgc291cmNlLnJvd3MgPSBzb3VyY2VQ
aXhlbEJ1ZmZlci5kYXRhKCkuZGF0YSgpICsgc291cmNlUmVjdENsaXBwZWQueSgpICogc291cmNl
LmJ5dGVzUGVyUm93ICsgc291cmNlUmVjdENsaXBwZWQueCgpICogNDsKLQotICAgIFBpeGVsQnVm
ZmVyQ29udmVyc2lvblZpZXcgZGVzdGluYXRpb247Ci0gICAgZGVzdGluYXRpb24uZm9ybWF0ID0g
eyBkZXN0aW5hdGlvbkFscGhhRm9ybWF0LCBwaXhlbEZvcm1hdCgpLCBjb2xvclNwYWNlKCkgfTsK
LSAgICBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyA9IGJ5dGVzUGVyUm93KCk7Ci0gICAgZGVzdGlu
YXRpb24ucm93cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEpICsgZGVzdGluYXRp
b25SZWN0LnkoKSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ICsgZGVzdGluYXRpb25SZWN0Lngo
KSAqIDQ7CisgICAgQ29uc3RQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IHNvdXJjZSB7CisgICAg
ICAgIHNvdXJjZVBpeGVsQnVmZmVyLmZvcm1hdCgpLAorICAgICAgICBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oNCAqIHNvdXJjZVBpeGVsQnVmZmVyLnNpemUoKS53aWR0aCgpKSwKKyAgICAgICAgc291
cmNlUGl4ZWxCdWZmZXIuZGF0YSgpLmRhdGEoKSArIHNvdXJjZVJlY3RDbGlwcGVkLnkoKSAqIHNv
dXJjZS5ieXRlc1BlclJvdyArIHNvdXJjZVJlY3RDbGlwcGVkLngoKSAqIDQKKyAgICB9OworCisg
ICAgUGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBkZXN0aW5hdGlvbiB7CisgICAgICAgIHsgZGVz
dGluYXRpb25BbHBoYUZvcm1hdCwgcGl4ZWxGb3JtYXQoKSwgY29sb3JTcGFjZSgpIH0sCisgICAg
ICAgIGJ5dGVzUGVyUm93KCksCisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRh
dGEpICsgZGVzdGluYXRpb25SZWN0LnkoKSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ICsgZGVz
dGluYXRpb25SZWN0LngoKSAqIDQKKyAgICB9OwogCiAgICAgY29udmVydEltYWdlUGl4ZWxzKHNv
dXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uUmVjdC5zaXplKCkpOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNr
ZW5kLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgIkRl
c3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzVHlwZXNHTC5oIgogI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCkBA
IC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICAgICAgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQ7
CiAgICAgfTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkltYWdlQnVmZmVyQmFja2Vu
ZCgpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbWFnZUJ1ZmZlckJh
Y2tlbmQoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJbnRTaXplIGNhbGN1bGF0ZUJh
Y2tlbmRTaXplKGNvbnN0IFBhcmFtZXRlcnMmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
c2l6ZV90IGNhbGN1bGF0ZU1lbW9yeUNvc3QoY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIHVu
c2lnbmVkIGJ5dGVzUGVyUm93KTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGNsaXBUb01hc2soR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikg
eyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsK
LSAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIHRyYW5zZm9y
bUNvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJikgeyB9CiAKICAgICB2aXJ0dWFsIFN0cmluZyB0b0RhdGFVUkwoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29s
dXRpb24pIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KSBjb25zdCA9IDA7
CkBAIC0xNDAsNyArMTQwLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgSW50U2l6ZSBsb2dpY2FsU2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUobV9wYXJhbWV0ZXJzLmxvZ2ljYWxTaXplKTsgfQog
ICAgIGZsb2F0IHJlc29sdXRpb25TY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5y
ZXNvbHV0aW9uU2NhbGU7IH0KLSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5jb2xvclNwYWNlOyB9CisgICAgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0
ZXJzLmNvbG9yU3BhY2U7IH0KICAgICBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFyYW1ldGVycy5waXhlbEZvcm1hdDsgfQogCiAgICAgSW50UmVjdCBsb2dpY2Fs
UmVjdCgpIGNvbnN0IHsgcmV0dXJuIEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgbG9naWNhbFNp
emUoKSk7IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1
ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bp
eGVsQnVmZmVyLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BpeGVsQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIgotI2lu
Y2x1ZGUgIkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIK
ICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXJGb3JtYXQuaCIKICNp
bmNsdWRlICJQaXhlbEZvcm1hdC5oIgpAQCAtODcsMTkgKzg3LDIxIEBAIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgUGl4ZWxCdWZmZXIKIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0
aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IHsKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShmb3JtYXQpKQorICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVyRm9ybWF0PiBmb3JtYXQ7CisgICAg
ZGVjb2RlciA+PiBmb3JtYXQ7CisgICAgaWYgKCFmb3JtYXQpCiAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAKICAgICAvLyBGSVhNRTogU3VwcG9ydCBub24tOCBiaXQgZm9ybWF0cy4KLSAg
ICBpZiAoIShmb3JtYXQucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OlJHQkE4IHx8IGZvcm1h
dC5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpKQorICAgIGlmICghKGZvcm1hdC0+
cGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OlJHQkE4IHx8IGZvcm1hdC0+cGl4ZWxGb3JtYXQg
PT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAot
ICAgIEludFNpemUgc2l6ZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNpemUpKQorICAgIE9w
dGlvbmFsPEludFNpemU+IHNpemU7CisgICAgZGVjb2RlciA+PiBzaXplOworICAgIGlmICghc2l6
ZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIGF1dG8gY29tcHV0ZWRCdWZm
ZXJTaXplID0gUGl4ZWxCdWZmZXI6OmNvbXB1dGVCdWZmZXJTaXplKGZvcm1hdCwgc2l6ZSk7Cisg
ICAgYXV0byBjb21wdXRlZEJ1ZmZlclNpemUgPSBQaXhlbEJ1ZmZlcjo6Y29tcHV0ZUJ1ZmZlclNp
emUoKmZvcm1hdCwgKnNpemUpOwogICAgIGlmIChjb21wdXRlZEJ1ZmZlclNpemUuaGFzT3ZlcmZs
b3dlZCgpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCkBAIC0xMDcsNyArMTA5LDcg
QEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8UGl4ZWxCdQogICAgIGlmICghZGVj
b2Rlci50ZW1wbGF0ZSBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluPHVpbnQ4X3Q+KGJ1ZmZl
clNpemUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgYXV0byByZXN1bHQg
PSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlRm9yRGVjb2RpbmcoZm9ybWF0LCBzaXplLCBidWZmZXJT
aXplKTsKKyAgICBhdXRvIHJlc3VsdCA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGVGb3JEZWNvZGlu
ZyhXVEZNb3ZlKCpmb3JtYXQpLCAqc2l6ZSwgYnVmZmVyU2l6ZSk7CiAgICAgaWYgKCFyZXN1bHQp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVyc2lvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNw
cAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTIgKzI3LDEx
IEBACiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmgiCiAKICNpbmNsdWRlICJBbHBo
YVByZW11bHRpcGxpY2F0aW9uLmgiCi0jaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUg
IkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRl
ICJQaXhlbEZvcm1hdC5oIgogCiAjaWYgVVNFKEFDQ0VMRVJBVEUpICYmIFVTRShDRykKLSNpbmNs
dWRlICJDb2xvclNwYWNlQ0cuaCIKICNpbmNsdWRlIDxBY2NlbGVyYXRlL0FjY2VsZXJhdGUuaD4K
ICNlbmRpZgogCkBAIC03MSw3ICs3MCw3IEBAIHN0YXRpYyBpbmxpbmUgdkltYWdlX0NHSW1hZ2VG
b3JtYXQgbWFrZVYKIAogICAgIHJlc3VsdC5iaXRzUGVyQ29tcG9uZW50ID0gYml0c1BlckNvbXBv
bmVudDsKICAgICByZXN1bHQuYml0c1BlclBpeGVsID0gYml0c1BlclBpeGVsOwotICAgIHJlc3Vs
dC5jb2xvclNwYWNlID0gY2FjaGVkQ0dDb2xvclNwYWNlKGZvcm1hdC5jb2xvclNwYWNlKTsKKyAg
ICByZXN1bHQuY29sb3JTcGFjZSA9IGZvcm1hdC5jb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFj
ZSgpOwogICAgIHJlc3VsdC5iaXRtYXBJbmZvID0gYml0bWFwSW5mbzsKICAgICByZXN1bHQudmVy
c2lvbiA9IDA7CiAgICAgcmVzdWx0LmRlY29kZSA9IG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0LmgJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVs
QnVmZmVyRm9ybWF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIgotI2luY2x1ZGUgIkNv
bG9yU3BhY2UuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRl
ICJQaXhlbEZvcm1hdC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CkBAIC01MSwxOSArNTEsMjIgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBQaXhlbEJ1ZmZlcgogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxQaXhl
bEJ1ZmZlckZvcm1hdD4gUGl4ZWxCdWZmZXJGb3JtYXQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogewotICAgIEFscGhhUHJlbXVsdGlwbGljYXRpb24gYWxwaGFGb3JtYXQ7Ci0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShhbHBoYUZvcm1hdCkpCisgICAgT3B0aW9uYWw8QWxwaGFQcmVtdWx0aXBs
aWNhdGlvbj4gYWxwaGFGb3JtYXQ7CisgICAgZGVjb2RlciA+PiBhbHBoYUZvcm1hdDsKKyAgICBp
ZiAoIWFscGhhRm9ybWF0KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgUGl4
ZWxGb3JtYXQgcGl4ZWxGb3JtYXQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShwaXhlbEZvcm1h
dCkpCisgICAgT3B0aW9uYWw8UGl4ZWxGb3JtYXQ+IHBpeGVsRm9ybWF0OworICAgIGRlY29kZXIg
Pj4gcGl4ZWxGb3JtYXQ7CisgICAgaWYgKCFwaXhlbEZvcm1hdCkKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKIAotICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlOwotICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoY29sb3JTcGFjZSkpCisgICAgT3B0aW9uYWw8RGVzdGluYXRp
b25Db2xvclNwYWNlPiBjb2xvclNwYWNlOworICAgIGRlY29kZXIgPj4gY29sb3JTcGFjZTsKKyAg
ICBpZiAoIWNvbG9yU3BhY2UpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBy
ZXR1cm4geyB7IGFscGhhRm9ybWF0LCBwaXhlbEZvcm1hdCwgY29sb3JTcGFjZSB9IH07CisgICAg
cmV0dXJuIHsgeyBXVEZNb3ZlKCphbHBoYUZvcm1hdCksIFdURk1vdmUoKnBpeGVsRm9ybWF0KSwg
V1RGTW92ZSgqY29sb3JTcGFjZSkgfSB9OwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVW
aWRlb1NhbXBsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgc3RhdGljIGlu
bGluZSBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPgogICAgIH0KIAogICAgIEludFNpemUgc2l6
ZSB7IHN0YXRpY19jYXN0PGludD4oQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoKHBpeGVsQnVmZmVyKSks
IHN0YXRpY19jYXN0PGludD4oQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodChwaXhlbEJ1ZmZlcikpIH07
Ci0gICAgYXV0byBpb1N1cmZhY2UgPSAgSU9TdXJmYWNlOjpjcmVhdGUoc2l6ZSwgc1JHQkNvbG9y
U3BhY2VSZWYoKSwgSU9TdXJmYWNlOjpGb3JtYXQ6OkJHUkEpOworICAgIGF1dG8gaW9TdXJmYWNl
ID0gIElPU3VyZmFjZTo6Y3JlYXRlKHNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBJT1N1cmZhY2U6OkZvcm1hdDo6QkdSQSk7CiAKICAgICBJT1N1cmZhY2U6OkxvY2tlciBsb2Nr
KCppb1N1cmZhY2UpOwogICAgIHZJbWFnZV9CdWZmZXIgc3JjOwpAQCAtMTEzLDcgKzExMyw4IEBA
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4gUmVtb3QKICAgICAgICAgc3VyZmFj
ZSA9IGlvU3VyZmFjZS0+c3VyZmFjZSgpOwogICAgIH0KIAotICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+KG5ldyBSZW1vdGVWaWRlb1NhbXBsZShzdXJmYWNlLCBz
UkdCQ29sb3JTcGFjZVJlZigpLCBzYW1wbGUucHJlc2VudGF0aW9uVGltZSgpLCBzYW1wbGUudmlk
ZW9Sb3RhdGlvbigpLCBzYW1wbGUudmlkZW9NaXJyb3JlZCgpKSk7CisgICAgLy8gRklYTUU6IFdo
eSBpcyB0aGlzIHVzaW5nIGhhcmRjb2RlZCBzUkdCPworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlVmlkZW9TYW1wbGU+KG5ldyBSZW1vdGVWaWRlb1NhbXBsZShzdXJmYWNlLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgc2FtcGxlLnByZXNlbnRhdGlvblRpbWUoKSwgc2Ft
cGxlLnZpZGVvUm90YXRpb24oKSwgc2FtcGxlLnZpZGVvTWlycm9yZWQoKSkpOwogfQogCiBzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUo
Q1ZQaXhlbEJ1ZmZlclJlZiBpbWFnZUJ1ZmZlciwgTWVkaWFUaW1lJiYgcHJlc2VudGF0aW9uVGlt
ZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24pCkBAIC0xMjQsMTAgKzEyNSwx
MSBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+IFJlbW90CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
VmlkZW9TYW1wbGU+KG5ldyBSZW1vdGVWaWRlb1NhbXBsZShzdXJmYWNlLCBzUkdCQ29sb3JTcGFj
ZVJlZigpLCBXVEZNb3ZlKHByZXNlbnRhdGlvblRpbWUpLCByb3RhdGlvbiwgZmFsc2UpKTsKKyAg
ICAvLyBGSVhNRTogV2h5IGlzIHRoaXMgdXNpbmcgaGFyZGNvZGVkIHNSR0I/CisgICAgcmV0dXJu
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4obmV3IFJlbW90ZVZpZGVvU2FtcGxl
KHN1cmZhY2UsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBXVEZNb3ZlKHByZXNlbnRh
dGlvblRpbWUpLCByb3RhdGlvbiwgZmFsc2UpKTsKIH0KIAotUmVtb3RlVmlkZW9TYW1wbGU6OlJl
bW90ZVZpZGVvU2FtcGxlKElPU3VyZmFjZVJlZiBzdXJmYWNlLCBDR0NvbG9yU3BhY2VSZWYgY29s
b3JTcGFjZSwgTWVkaWFUaW1lJiYgdGltZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90
YXRpb24sIGJvb2wgbWlycm9yZWQpCitSZW1vdGVWaWRlb1NhbXBsZTo6UmVtb3RlVmlkZW9TYW1w
bGUoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29s
b3JTcGFjZSwgTWVkaWFUaW1lJiYgdGltZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90
YXRpb24sIGJvb2wgbWlycm9yZWQpCiAgICAgOiBtX2lvU3VyZmFjZShXZWJDb3JlOjpJT1N1cmZh
Y2U6OmNyZWF0ZUZyb21TdXJmYWNlKHN1cmZhY2UsIGNvbG9yU3BhY2UpKQogICAgICwgbV9yb3Rh
dGlvbihyb3RhdGlvbikKICAgICAsIG1fdGltZShXVEZNb3ZlKHRpbWUpKQpAQCAtMTQwLDcgKzE0
Miw3IEBAIFJlbW90ZVZpZGVvU2FtcGxlOjpSZW1vdGVWaWRlb1NhbXBsZShJT1MKIElPU3VyZmFj
ZVJlZiBSZW1vdGVWaWRlb1NhbXBsZTo6c3VyZmFjZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lv
U3VyZmFjZSAmJiBtX3NlbmRSaWdodCkKLSAgICAgICAgY29uc3RfY2FzdDxSZW1vdGVWaWRlb1Nh
bXBsZSo+KHRoaXMpLT5tX2lvU3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJv
bVNlbmRSaWdodChXVEZNb3ZlKGNvbnN0X2Nhc3Q8UmVtb3RlVmlkZW9TYW1wbGUqPih0aGlzKS0+
bV9zZW5kUmlnaHQpLCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICAgICAgY29uc3RfY2FzdDxS
ZW1vdGVWaWRlb1NhbXBsZSo+KHRoaXMpLT5tX2lvU3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFj
ZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGNvbnN0X2Nhc3Q8UmVtb3RlVmlkZW9TYW1w
bGUqPih0aGlzKS0+bV9zZW5kUmlnaHQpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7
CiAKICAgICByZXR1cm4gbV9pb1N1cmZhY2UgPyBtX2lvU3VyZmFjZS0+c3VyZmFjZSgpIDogbnVs
bHB0cjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZp
ZGVvU2FtcGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUmVtb3RlVmlkZW9TYW1wbGUuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMTAzLDcgKzEwMyw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgUmVtb3Rl
VmlkZW9TYW1wbGUoSU9TdXJmYWNlUmVmLCBDR0NvbG9yU3BhY2VSZWYsIE1lZGlhVGltZSYmLCBN
ZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiwgYm9vbCk7CisgICAgUmVtb3RlVmlkZW9TYW1wbGUo
SU9TdXJmYWNlUmVmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBNZWRpYVRpbWUmJiwg
TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24sIGJvb2wpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OklPU3VyZmFjZT4gbV9pb1N1cmZhY2U7CiAgICAgV1RGOjpNYWNoU2VuZFJpZ2h0
IG1fc2VuZFJpZ2h0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvU2hhZG93Qmx1ci5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4
NSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2xlYXJTY3JhdGNoQnVmZmVyKCk7CiAKICAgICAgICAg
Ly8gU2hhZG93Qmx1ciBpcyBub3QgdXNlZCB3aXRoIGFjY2VsZXJhdGVkIGRyYXdpbmcsIHNvIGl0
J3MgT0sgdG8gbWFrZSBhbiB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZCBidWZmZXIuCi0g
ICAgICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJvdW5kZWRTaXplLCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKHJvdW5kZWRTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAg
ICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXI7CiAgICAgfQogCkBAIC02MDQsNyArNjA0LDcgQEAg
dm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3coY29uc3QgQQogCiB2b2lkIFNoYWRvd0Js
dXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBj
b25zdCBGbG9hdFJvdW5kZWRSZWN0JiBzaGFkb3dlZFJlY3QsIGNvbnN0IExheWVySW1hZ2VQcm9w
ZXJ0aWVzJiBsYXllckltYWdlUHJvcGVydGllcywgY29uc3QgRHJhd0J1ZmZlckNhbGxiYWNrJiBk
cmF3QnVmZmVyKQogewotICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
ZXhwYW5kZWRJbnRTaXplKGxheWVySW1hZ2VQcm9wZXJ0aWVzLmxheWVyU2l6ZSksIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGllcy5sYXllclNpemUpLCBSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWxheWVySW1hZ2UpCiAgICAgICAgIHJl
dHVybjsKIApAQCAtNjMyLDcgKzYzMiw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFk
b3dXaXRob3V0VGkKIAogdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGls
aW5nKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UmVjdCYgZnVsbFJlY3QsIGNv
bnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBMYXllckltYWdlUHJvcGVydGll
cyYgbGF5ZXJJbWFnZVByb3BlcnRpZXMsIGNvbnN0IERyYXdCdWZmZXJDYWxsYmFjayYgZHJhd0J1
ZmZlcikKIHsKLSAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFu
ZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGllcy5sYXllclNpemUpLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CisgICAgYXV0byBsYXllckltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShl
eHBhbmRlZEludFNpemUobGF5ZXJJbWFnZVByb3BlcnRpZXMubGF5ZXJTaXplKSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBp
eGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFsYXllckltYWdlKQogICAgICAgICByZXR1cm47
CiAKQEAgLTcwNSw3ICs3MDUsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0
aFRpbGluCiAjZW5kaWYKIAogICAgIGlmICghbGF5ZXJJbWFnZUJ1ZmZlcikgewotICAgICAgICBs
YXllckltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNpemUsIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwg
UGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAg
ICAgICAgaWYgKCFsYXllckltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTc2Myw3ICs3NjMsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhU
aWxpCiAjZW5kaWYKIAogICAgIGlmICghbGF5ZXJJbWFnZUJ1ZmZlcikgewotICAgICAgICBsYXll
ckltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNpemUsIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAg
ICAgaWYgKCFsYXllckltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTkwMyw3ICs5MDMsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmJsdXJTaGFkb3dCdWZmZXIoSW1hZ2VC
CiAgICAgaWYgKG1fdHlwZSAhPSBCbHVyU2hhZG93KQogICAgICAgICByZXR1cm47CiAKLSAgICBQ
aXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11
bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
IH07CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlv
bjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpIH07CiAgICAgSW50UmVjdCBibHVyUmVjdChJbnRQb2ludCgpLCB0ZW1wbGF0
ZVNpemUpOwogICAgIGF1dG8gbGF5ZXJEYXRhID0gbGF5ZXJJbWFnZS5nZXRQaXhlbEJ1ZmZlcihm
b3JtYXQsIGJsdXJSZWN0KTsKICAgICBpZiAoIWxheWVyRGF0YSkKQEAgLTkzMyw3ICs5MzMsNyBA
QCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdTaGFkb3dMYXllcihjb25zdCBBCiAKICAgICBhZGp1c3RC
bHVyUmFkaXVzKHRyYW5zZm9ybSk7CiAKLSAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGllcy0+bGF5ZXJTaXpl
KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoZXhwYW5kZWRJbnRTaXplKGxheWVySW1hZ2VQcm9wZXJ0aWVzLT5sYXll
clNpemUpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWxheWVySW1hZ2Up
CiAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5j
cHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3
ICs3OSw3IEBAIHN0YXRpYyB2b2lkIHdpcGVBbHBoYUNoYW5uZWxGcm9tUGl4ZWxzKGkKIAogT3B0
aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9y
UGFpbnRSZXN1bHRzKCkKIHsKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0
IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6
UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgYXV0byBwaXhlbEJ1
ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBnZXRJbnRlcm5hbEZyYW1lYnVm
ZmVyU2l6ZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDcg
QEAgdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6dHJhbnNmb3JtQwogICAgICAgICAgICAg
cmV0dXJuIGFycmF5OwogICAgICAgICB9KCk7CiAgICAgICAgIHBsYXRmb3JtVHJhbnNmb3JtQ29s
b3JTcGFjZShsaW5lYXJSZ2JMVVQpOwotICAgIH0gZWxzZSBpZiAoZGVzdENvbG9yU3BhY2UgPT0g
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKSB7CisgICAgfSBlbHNlIGlmIChkZXN0Q29sb3JT
cGFjZSA9PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSkgewogICAgICAgICBzdGF0aWMg
Y29uc3Qgc3RkOjphcnJheTx1aW50OF90LCAyNTY+IGRldmljZVJnYkxVVD0gW10gewogICAgICAg
ICAgICAgc3RkOjphcnJheTx1aW50OF90LCAyNTY+IGFycmF5OwogICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IDI1NjsgaSsrKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm9CYWNrZW5kLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGlwVG9NYXNrKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpIG92ZXJyaWRlOwogCi0gICAgdm9p
ZCB0cmFuc2Zvcm1Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNl
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgZGVzdENvbG9yU3BhY2UpIG92ZXJyaWRlOworICAgIHZv
aWQgdHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHNyY0Nv
bG9yU3BhY2UsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgZGVzdENvbG9yU3BhY2UpIG92
ZXJyaWRlOwogCiAgICAgU3RyaW5nIHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBP
cHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBP
cHRpb25hbDxkb3VibGU+IHF1YWxpdHkpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
MywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDEzICsyOSwx
NCBAQAogI2lmIFVTRShDRykKIAogI2luY2x1ZGUgIkNvbG9yU3BhY2VDRy5oIgorI2luY2x1ZGUg
IkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHBh
bC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4K
ICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNs
dWRlIDx3dGYvVGlueUxSVUNhY2hlLmg+Ci0jaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhp
Y3NTUEkuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1Rp
bnlMUlVDYWNoZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgUmV0YWluUHRyPENH
Q29sb3JSZWY+IGNyZWF0ZUNHQ29sb3IoY29uc3QgQ29sb3ImKTsKQEAgLTkxLDM0ICs5MiwzOCBA
QCBDb2xvcjo6Q29sb3IoQ0dDb2xvclJlZiBjb2xvciwgT3B0aW9uU2V0CiB7CiB9CiAKLXN0YXRp
YyBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY3JlYXRlQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3Ip
CitzdGF0aWMgc3RkOjpwYWlyPENHQ29sb3JTcGFjZVJlZiwgQ29sb3JDb21wb25lbnRzPGZsb2F0
LCA0Pj4gY29udmVydFRvQ0dDb21wYXRpYmxlQ29tcG9uZW50cyhDb2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gY29tcG9uZW50cykKIHsKLSAgICBhdXRvIFtj
b2xvclNwYWNlLCBjb21wb25lbnRzXSA9IGNvbG9yLmNvbG9yU3BhY2VBbmRDb21wb25lbnRzKCk7
Ci0KLSAgICBhdXRvIGNnQ29sb3JTcGFjZSA9IGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlKGNv
bG9yU3BhY2UpOwotCiAgICAgLy8gU29tZSBDRyBwb3J0cyBkb24ndCBzdXBwb3J0IGFsbCB0aGUg
Y29sb3Igc3BhY2VzIHJlcXVpcmVkIGFuZCByZXR1cm4KICAgICAvLyBudWxscHRyIGZvciB1bnN1
cHBvcnRlZCBjb2xvciBzcGFjZXMuIEluIHRob3NlIGNhc2VzLCB3ZSBlYWdlcmx5IGNvbnZlcnQK
ICAgICAvLyB0aGUgY29sb3IgaW50byBlaXRoZXIgZXh0ZW5kZWQgc1JHQiBvciBub3JtYWwgc1JH
QiwgaWYgZXh0ZW5kZWQgc1JHQiBpcwotICAgIC8vIG5vdCBzdXBwb3J0ZWQsIGJlZm9yZSBjcmVh
dGluZyB0aGUgQ0dDb2xvclJlZi4KKyAgICAvLyBub3Qgc3VwcG9ydGVkLgorCisgICAgYXV0byBj
Z0NvbG9yU3BhY2UgPSBjYWNoZWROdWxsYWJsZUNHQ29sb3JTcGFjZShjb2xvclNwYWNlKTsKICAg
ICBpZiAoIWNnQ29sb3JTcGFjZSkgewogI2lmIEhBVkUoQ09SRV9HUkFQSElDU19FWFRFTkRFRF9T
UkdCX0NPTE9SX1NQQUNFKQotICAgICAgICBhdXRvIGNvbG9yQ29udmVydGVkVG9FeHRlbmRlZFNS
R0JBID0gY2FsbFdpdGhDb2xvclR5cGUoY29tcG9uZW50cywgY29sb3JTcGFjZSwgW10gKGNvbnN0
IGF1dG8mIGNvbG9yKSB7Ci0gICAgICAgICAgICByZXR1cm4gY29udmVydENvbG9yPEV4dGVuZGVk
U1JHQkE8ZmxvYXQ+Pihjb2xvcik7CisgICAgICAgIGF1dG8gY2dDb21wYXRpYmxlQ29tcG9uZW50
cyA9IGNhbGxXaXRoQ29sb3JUeXBlKGNvbXBvbmVudHMsIGNvbG9yU3BhY2UsIFtdIChjb25zdCBh
dXRvJiBjb2xvcikgeworICAgICAgICAgICAgcmV0dXJuIGFzQ29sb3JDb21wb25lbnRzKGNvbnZl
cnRDb2xvcjxFeHRlbmRlZFNSR0JBPGZsb2F0Pj4oY29sb3IpKTsKICAgICAgICAgfSk7Ci0gICAg
ICAgIGNvbXBvbmVudHMgPSBhc0NvbG9yQ29tcG9uZW50cyhjb2xvckNvbnZlcnRlZFRvRXh0ZW5k
ZWRTUkdCQSk7Ci0gICAgICAgIGNnQ29sb3JTcGFjZSA9IGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VS
ZWYoKTsKKyAgICAgICAgcmV0dXJuIHsgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpLCBjZ0Nv
bXBhdGlibGVDb21wb25lbnRzIH07CiAjZWxzZQogICAgICAgICBhdXRvIGNvbG9yQ29udmVydGVk
VG9TUkdCQSA9IGNhbGxXaXRoQ29sb3JUeXBlKGNvbXBvbmVudHMsIGNvbG9yU3BhY2UsIFtdIChj
b25zdCBhdXRvJiBjb2xvcikgewotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxTUkdC
QTxmbG9hdD4+KGNvbG9yKTsKKyAgICAgICAgICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhj
b252ZXJ0Q29sb3I8U1JHQkE8ZmxvYXQ+Pihjb2xvcikpOwogICAgICAgICB9KTsKLSAgICAgICAg
Y29tcG9uZW50cyA9IGFzQ29sb3JDb21wb25lbnRzKGNvbG9yQ29udmVydGVkVG9TUkdCQSk7Ci0g
ICAgICAgIGNnQ29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7CisgICAgICAgIHJldHVy
biB7IHNSR0JDb2xvclNwYWNlUmVmKCksIGNnQ29tcGF0aWJsZUNvbXBvbmVudHMgfTsKICNlbmRp
ZgogICAgIH0KIAotICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gY29tcG9uZW50czsKLSAgICBDR0Zs
b2F0IGNnRmxvYXRDb21wb25lbnRzWzRdIHsgciwgZywgYiwgYSB9OworICAgIHJldHVybiB7IGNn
Q29sb3JTcGFjZSwgY29tcG9uZW50cyB9OworfQorCitzdGF0aWMgUmV0YWluUHRyPENHQ29sb3JS
ZWY+IGNyZWF0ZUNHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIGF1dG8gW2NvbG9y
U3BhY2UsIGNvbXBvbmVudHNdID0gY29sb3IuY29sb3JTcGFjZUFuZENvbXBvbmVudHMoKTsKKyAg
ICBhdXRvIFtjZ0NvbG9yU3BhY2UsIGNnQ29tcGF0aWJsZUNvbXBvbmVudHNdID0gY29udmVydFRv
Q0dDb21wYXRpYmxlQ29tcG9uZW50cyhjb2xvclNwYWNlLCBjb21wb25lbnRzKTsKKyAgICAKKyAg
ICBhdXRvIFtjMSwgYzIsIGMzLCBjNF0gPSBjZ0NvbXBhdGlibGVDb21wb25lbnRzOworICAgIENH
RmxvYXQgY2dGbG9hdENvbXBvbmVudHNbNF0geyBjMSwgYzIsIGMzLCBjNCB9OwogCiAgICAgcmV0
dXJuIGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShjZ0NvbG9yU3BhY2UsIGNnRmxvYXRDb21wb25lbnRz
KSk7CiB9CkBAIC0xNjEsNiArMTY2LDI0IEBAIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25z
dCBDb2xvciYgY28KICAgICByZXR1cm4gY2FjaGUuZ2V0KCkuZ2V0KGNvbG9yKS5nZXQoKTsKIH0K
IAorQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBwbGF0Zm9ybUNvbnZlcnRDb2xvckNvbXBvbmVu
dHMoQ29sb3JTcGFjZSBpbnB1dENvbG9yU3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4g
aW5wdXRDb2xvckNvbXBvbmVudHMsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgb3V0cHV0
Q29sb3JTcGFjZSkKK3sKKyAgICAvLyBGSVhNRTogSW52ZXN0aWdhdGUgb3B0aW1pemluZyB0aGlz
IHRvIHVzZSB0aGUgYnVpbHRpbiBjb2xvciBjb252ZXJzaW9uIGNvZGUgZm9yIHN1cHBvcnRlZCBj
b2xvciBzcGFjZXMuCisKKyAgICBhdXRvIFtjZ0lucHV0Q29sb3JTcGFjZSwgY2dDb21wYXRpYmxl
Q29tcG9uZW50c10gPSBjb252ZXJ0VG9DR0NvbXBhdGlibGVDb21wb25lbnRzKGlucHV0Q29sb3JT
cGFjZSwgaW5wdXRDb2xvckNvbXBvbmVudHMpOworICAgIGlmIChjZ0lucHV0Q29sb3JTcGFjZSA9
PSBvdXRwdXRDb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpKQorICAgICAgICByZXR1cm4g
Y2dDb21wYXRpYmxlQ29tcG9uZW50czsKKworICAgIGF1dG8gW2MxLCBjMiwgYzMsIGM0XSA9IGNn
Q29tcGF0aWJsZUNvbXBvbmVudHM7CisgICAgQ0dGbG9hdCBzb3VyY2VDb21wb25lbnRzWzRdIHsg
YzEsIGMyLCBjMywgYzQgfTsKKyAgICBDR0Zsb2F0IGRlc3RpbmF0aW9uQ29tcG9uZW50c1s0XSB7
IH07CisKKyAgICBhdXRvIHRyYW5zZm9ybSA9IGFkb3B0Q0YoQ0dDb2xvclRyYW5zZm9ybUNyZWF0
ZShvdXRwdXRDb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBudWxscHRyKSk7CisgICAg
YXV0byByZXN1bHQgPSBDR0NvbG9yVHJhbnNmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyh0cmFu
c2Zvcm0uZ2V0KCksIGNnSW5wdXRDb2xvclNwYWNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0
LCBzb3VyY2VDb21wb25lbnRzLCBkZXN0aW5hdGlvbkNvbXBvbmVudHMpOworICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCByZXN1bHQpOworICAgIHJldHVybiB7IHN0YXRpY19jYXN0PGZsb2F0Pihk
ZXN0aW5hdGlvbkNvbXBvbmVudHNbMF0pLCBzdGF0aWNfY2FzdDxmbG9hdD4oZGVzdGluYXRpb25D
b21wb25lbnRzWzFdKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRlc3RpbmF0aW9uQ29tcG9uZW50c1sy
XSksIHN0YXRpY19jYXN0PGZsb2F0PihkZXN0aW5hdGlvbkNvbXBvbmVudHNbM10pIH07Cit9CisK
IH0KIAogI2VuZGlmIC8vIFVTRShDRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE5LDIzICsxMTksNCBAQCBzdGF0aWMgaW5saW5lIENHQ29sb3JTcGFjZVJl
ZiBjYWNoZWROdWxsCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLS8vIE5PVEU6IFNpbmNlIHRo
aXMgZnVuY3Rpb24gaXMgZm9yICpkZXN0aW5hdGlvbiogY29sb3Igc3BhY2VzIHdob3NlIGNhbGxl
cnMgYWx3YXlzIGV4cGVjdCBhIG5vbi1udWxsIGNvbG9yIHNwYWNlLCB0aGlzIGZ1bmN0aW9uIGlz
IGd1YXJhbnRlZWQgdG8gcmV0dXJuIG5vbi1udWxsLCB1bmxpa2UgY2FjaGVkTnVsbGFibGVDR0Nv
bG9yU3BhY2UoKS4KLXN0YXRpYyBpbmxpbmUgQ0dDb2xvclNwYWNlUmVmIGNhY2hlZENHQ29sb3JT
cGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkKLXsKLSAgICBzd2l0Y2ggKGNv
bG9yU3BhY2UpIHsKLSAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAg
ICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NP
TE9SX1NQQUNFX0xJTkVBUl9TUkdCKQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpM
aW5lYXJTUkdCOgotICAgICAgICByZXR1cm4gbGluZWFyU1JHQkNvbG9yU3BhY2VSZWYoKTsKLSNl
bmRpZgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQotICAg
IGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0gICAgICAgIHJldHVybiBk
aXNwbGF5UDNDb2xvclNwYWNlUmVmKCk7Ci0jZW5kaWYKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlUmVmKCk7Ci19Ci0KIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dEdMQ0cuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTMyLDcgKzUzMiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBh
aW50VG9DYW4KICAgICB9KSk7CiAKICAgICBhdXRvIGltYWdlU2l6ZSA9IHBpeGVsQnVmZmVyLnNp
emUoKTsKLSAgICBhdXRvIGltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHSW1h
Z2VDcmVhdGUoaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIDQg
KiBpbWFnZVNpemUud2lkdGgoKSwgY2FjaGVkQ0dDb2xvclNwYWNlKHBpeGVsQnVmZmVyLmZvcm1h
dCgpLmNvbG9yU3BhY2UpLCBiaXRtYXBJbmZvLCBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNl
LCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSkpOworICAgIGF1dG8gaW1hZ2UgPSBOYXRpdmVJ
bWFnZTo6Y3JlYXRlKGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1h
Z2VTaXplLmhlaWdodCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBwaXhlbEJ1ZmZl
ci5mb3JtYXQoKS5jb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBiaXRtYXBJbmZvLCBk
YXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSkp
OwogCiAgICAgLy8gQ1NTIHN0eWxpbmcgbWF5IGNhdXNlIHRoZSBjYW52YXMncyBjb250ZW50IHRv
IGJlIHJlc2l6ZWQgb24KICAgICAvLyB0aGUgcGFnZS4gR28gYmFjayB0byB0aGUgQ2FudmFzIHRv
IGZpZ3VyZSBvdXQgdGhlIGNvcnJlY3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuY3BwCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgSEFWRShJT1NVUkZBQ0Up
CiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHRDRy5oIgogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KICNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTU5LDcgKzYwLDcgQEAgSU9TdXJmYWNl
UG9vbCYgSU9TdXJmYWNlUG9vbDo6c2hhcmVkUG9vbAogICAgIHJldHVybiBwb29sOwogfQogCi1z
dGF0aWMgYm9vbCBzdXJmYWNlTWF0Y2hlc1BhcmFtZXRlcnMoSU9TdXJmYWNlJiBzdXJmYWNlLCBJ
bnRTaXplIHJlcXVlc3RlZFNpemUsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlLCBJT1N1cmZh
Y2U6OkZvcm1hdCBmb3JtYXQpCitzdGF0aWMgYm9vbCBzdXJmYWNlTWF0Y2hlc1BhcmFtZXRlcnMo
SU9TdXJmYWNlJiBzdXJmYWNlLCBJbnRTaXplIHJlcXVlc3RlZFNpemUsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgSU9TdXJmYWNlOjpGb3JtYXQgZm9ybWF0KQogewog
ICAgIGlmIChmb3JtYXQgIT0gc3VyZmFjZS5mb3JtYXQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMTAyLDcgKzEwMyw3IEBAIHZvaWQgSU9TdXJmYWNlUG9vbDo6ZGlkVXNlU3VyZmFjZU9m
U2l6ZSgKICAgICBtX3NpemVzSW5QcnVuZU9yZGVyLmFwcGVuZChzaXplKTsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlUG9vbDo6dGFrZVN1cmZhY2UoSW50U2l6ZSBz
aXplLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwgSU9TdXJmYWNlOjpGb3JtYXQgZm9ybWF0
KQorc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlUG9vbDo6dGFrZVN1cmZhY2Uo
SW50U2l6ZSBzaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIElP
U3VyZmFjZTo6Rm9ybWF0IGZvcm1hdCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07
CiAgICAgQ2FjaGVkU3VyZmFjZU1hcDo6aXRlcmF0b3IgbWFwSXRlciA9IG1fY2FjaGVkU3VyZmFj
ZXMuZmluZChzaXplKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0lPU3VyZmFjZVBvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuaAkod29ya2luZyBjb3B5
KQpAQCAtMzksNiArMzksOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERlc3Rp
bmF0YXRpb25Db2xvclNwYWNlOworCiBjbGFzcyBJT1N1cmZhY2VQb29sIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShJT1N1cmZhY2VQb29sKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKQEAgLTQ3LDcgKzQ5LDcgQEAgY2xhc3MgSU9TdXJmYWNlUG9vbCB7CiBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIElPU3VyZmFjZVBvb2wmIHNoYXJlZFBvb2woKTsKIAotICAg
IHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IHRha2VTdXJmYWNlKEludFNpemUsIENHQ29sb3JT
cGFjZVJlZiwgSU9TdXJmYWNlOjpGb3JtYXQpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZh
Y2U+IHRha2VTdXJmYWNlKEludFNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIElP
U3VyZmFjZTo6Rm9ybWF0KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFN1cmZhY2Uoc3Rk
Ojp1bmlxdWVfcHRyPElPU3VyZmFjZT4pOwogCiAgICAgdm9pZCBkaXNjYXJkQWxsU3VyZmFjZXMo
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0dCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDYgKzEwMiw3IEBAIHN0YXRpYyBSZWZQdHI8SW1hZ2U+
IGNyZWF0ZUJpdG1hcEltYWdlQWYKICAgICBpZiAocmVzb2x1dGlvblNjYWxlID09IDEgfHwgcHJl
c2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKQogICAgICAgICBpbWFn
ZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoY3JlYXRlQ3JvcHBlZEltYWdlSWZOZWNlc3NhcnkoaW1h
Z2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgYmFja2VuZFNpemUpKTsKICAgICBlbHNlIHsKKyAg
ICAgICAgLy8gRklYTUU6IFdoeSBpcyB0aGlzIHVzaW5nIGhhcmRjb2RlZCBzUkdCPwogICAgICAg
ICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZSgwLCBsb2dpY2Fs
U2l6ZS53aWR0aCgpLCBsb2dpY2FsU2l6ZS5oZWlnaHQoKSwgOCwgNCAqIGxvZ2ljYWxTaXplLndp
ZHRoKCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmly
c3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QpKTsKICAgICAgICAgQ0dDb250ZXh0U2V0Qmxl
bmRNb2RlKGNvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkpOwogICAgICAgICBDR0NvbnRl
eHRDbGlwVG9SZWN0KGNvbnRleHQuZ2V0KCksIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCks
IGxvZ2ljYWxTaXplKSk7CkBAIC0xNzQsNyArMTc1LDcgQEAgUmV0YWluUHRyPENHSW1hZ2VSZWY+
IEltYWdlQnVmZmVyQ0dCYWNrZQogICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgYmUgdXNp
bmcgdGhlIHNhbWUgbG9naWMgYXMgSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRz8KIAogICAgICAgICAv
LyBKUEVHcyBkb24ndCBoYXZlIGFuIGFscGhhIGNoYW5uZWwsIHNvIHdlIGhhdmUgdG8gbWFudWFs
bHkgY29tcG9zaXRlIG9uIHRvcCBvZiBibGFjay4KLSAgICAgICAgUGl4ZWxCdWZmZXJGb3JtYXQg
Zm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4ZWxGb3Jt
YXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICAgICAgUGl4ZWxC
dWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGll
ZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9Owog
ICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gZ2V0UGl4ZWxCdWZmZXIoZm9ybWF0LCBsb2dpY2Fs
UmVjdCgpKTsKICAgICAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtMTkyLDcgKzE5Myw3IEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZUJ1
ZmZlckNHQmFja2UKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIGF1dG8g
aW1hZ2VTaXplID0gcGl4ZWxCdWZmZXItPnNpemUoKTsKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0Yo
Q0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCAz
MiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBjYWNoZWRDR0NvbG9yU3BhY2UocGl4ZWxCdWZmZXIt
PmZvcm1hdCgpLmNvbG9yU3BhY2UpLCBrQ0dCaXRtYXBCeXRlT3JkZXJEZWZhdWx0IHwga0NHSW1h
Z2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVu
ZGVyaW5nSW50ZW50RGVmYXVsdCkpOworICAgICAgICByZXR1cm4gYWRvcHRDRihDR0ltYWdlQ3Jl
YXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCA0ICogaW1h
Z2VTaXplLndpZHRoKCksIHBpeGVsQnVmZmVyLT5mb3JtYXQoKS5jb2xvclNwYWNlLnBsYXRmb3Jt
Q29sb3JTcGFjZSgpLCBrQ0dCaXRtYXBCeXRlT3JkZXJEZWZhdWx0IHwga0NHSW1hZ2VBbHBoYU5v
bmVTa2lwTGFzdCwgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50
ZW50RGVmYXVsdCkpOwogICAgIH0KIAogICAgIGlmIChyZXNvbHV0aW9uU2NhbGUoKSA9PSAxIHx8
IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykgewpAQCAtMjA2
LDYgKzIwNyw4IEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZUJ1ZmZlckNHQmFja2UKICAg
ICBpZiAoIW5hdGl2ZUltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvIGlt
YWdlID0gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKTsKKworICAgIC8vIEZJWE1FOiBXaHkg
aXMgdGhpcyB1c2luZyBoYXJkY29kZWQgc1JHQj8KICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENG
KENHQml0bWFwQ29udGV4dENyZWF0ZSgwLCBiYWNrZW5kU2l6ZSgpLndpZHRoKCksIGJhY2tlbmRT
aXplKCkuaGVpZ2h0KCksIDgsIDQgKiBiYWNrZW5kU2l6ZSgpLndpZHRoKCksIHNSR0JDb2xvclNw
YWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRl
T3JkZXIzMkhvc3QpKTsKICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUoY29udGV4dC5nZXQoKSwg
a0NHQmxlbmRNb2RlQ29weSk7CiAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LmdldCgp
LCBDR1JlY3RNYWtlKDAsIDAsIGJhY2tlbmRTaXplKCkud2lkdGgoKSwgYmFja2VuZFNpemUoKS5o
ZWlnaHQoKSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcAkocmV2
aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3
IEBAIHNpemVfdCBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y2FsY3UKICAgICByZXR1cm4g
SW1hZ2VCdWZmZXJCYWNrZW5kOjpjYWxjdWxhdGVNZW1vcnlDb3N0KGJhY2tlbmRTaXplLCBjYWxj
dWxhdGVCeXRlc1BlclJvdyhiYWNrZW5kU2l6ZSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVh
dGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgQ0dDb2xvclNwYWNlUmVmIGNnQ29sb3JT
cGFjZSwgY29uc3QgSG9zdFdpbmRvdyopCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFy
YW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgSG9zdFdpbmRvdyopCiB7CiAgICAgQVNTRVJUKHBh
cmFtZXRlcnMucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKIApAQCAtODEsNyAr
ODEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlCiAgICAgc2l6
ZV90IG51bUJ5dGVzID0gYmFja2VuZFNpemUuaGVpZ2h0KCkgKiBieXRlc1BlclJvdzsKICAgICB2
ZXJpZnlJbWFnZUJ1ZmZlcklzQmlnRW5vdWdoKGRhdGEsIG51bUJ5dGVzKTsKIAotICAgIGF1dG8g
Y2dDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoZGF0YSwgYmFja2VuZFNp
emUud2lkdGgoKSwgYmFja2VuZFNpemUuaGVpZ2h0KCksIDgsIGJ5dGVzUGVyUm93LCBjZ0NvbG9y
U3BhY2UsIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3Jk
ZXIzMkhvc3QpKTsKKyAgICBhdXRvIGNnQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0
Q3JlYXRlKGRhdGEsIGJhY2tlbmRTaXplLndpZHRoKCksIGJhY2tlbmRTaXplLmhlaWdodCgpLCA4
LCBieXRlc1BlclJvdywgcGFyYW1ldGVycy5jb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgp
LCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJI
b3N0KSk7CiAgICAgaWYgKCFjZ0NvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBA
IC05NiwxNSArOTYsMTQgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNr
ZQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IEltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywg
Y29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIGlmIChhdXRvIGNnQ29sb3JT
cGFjZSA9IGNvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkgPyBjb250ZXh0Q29sb3JTcGFjZShj
b250ZXh0KSA6IG51bGxwdHIpCi0gICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFj
a2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIGNnQ29sb3JTcGFjZS5nZXQoKSwgbnVsbHB0cik7Cisg
ICAgaWYgKGF1dG8gY2dDb2xvclNwYWNlID0gY29udGV4dC5oYXNQbGF0Zm9ybUNvbnRleHQoKSA/
IGNvbnRleHRDb2xvclNwYWNlKGNvbnRleHQpIDogbnVsbHB0cikgeworICAgICAgICBhdXRvIG92
ZXJyaWRlUGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7CisgICAgICAgIG92ZXJyaWRlUGFyYW1ldGVy
cy5jb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlIHsgY2dDb2xvclNwYWNlIH07CiAK
LSAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJz
LCBudWxscHRyKTsKLX0KKyAgICAgICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5k
OjpjcmVhdGUob3ZlcnJpZGVQYXJhbWV0ZXJzLCBudWxscHRyKTsKKyAgICB9CiAKLXN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBIb3N0V2lu
ZG93KiBob3N0V2luZG93KQotewotICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2Vu
ZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9y
U3BhY2UpLCBob3N0V2luZG93KTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tl
bmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBudWxscHRyKTsKIH0KIAogSW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQ6OkltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMsIHZvaWQqIGRhdGEsIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4mJiBkYXRh
UHJvdmlkZXIsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYgY29udGV4dCkKQEAg
LTE0Niw3ICsxNDUsNyBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyQ0dCaXRtYXBC
CiAgICAgICAgIGF1dG8gYmFja2VuZFNpemUgPSB0aGlzLT5iYWNrZW5kU2l6ZSgpOwogICAgICAg
ICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHSW1hZ2VDcmVhdGUoCiAgICAg
ICAgICAgICBiYWNrZW5kU2l6ZS53aWR0aCgpLCBiYWNrZW5kU2l6ZS5oZWlnaHQoKSwgOCwgMzIs
IGJ5dGVzUGVyUm93KCksCi0gICAgICAgICAgICBjYWNoZWRDR0NvbG9yU3BhY2UoY29sb3JTcGFj
ZSgpKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRl
cjMySG9zdCwgbV9kYXRhUHJvdmlkZXIuZ2V0KCksCisgICAgICAgICAgICBjb2xvclNwYWNlKCku
cGxhdGZvcm1Db2xvclNwYWNlKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBr
Q0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QsIG1fZGF0YVByb3ZpZGVyLmdldCgpLAogICAgICAgICAg
ICAgMCwgdHJ1ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpKTsKICAgICB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBC
YWNrZW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tl
bmQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksOCArMzksOSBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEludFNpemUgY2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKGNvbnN0IFBhcmFtZXRlcnMmKTsKICAg
ICBzdGF0aWMgc2l6ZV90IGNhbGN1bGF0ZU1lbW9yeUNvc3QoY29uc3QgUGFyYW1ldGVycyYpOwog
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4g
Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBDR0NvbG9yU3BhY2VSZWYsIGNvbnN0IEhvc3RXaW5k
b3cqKTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNr
ZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IEhvc3RXaW5kb3cqKTsKKworICAg
IC8vIEZJWE1FOiBSZW5hbWUgdG8gY3JlYXRlVXNpbmdDb2xvclNwYWNlT2ZHcmFwaGljc0NvbnRl
eHQoKSAob3Igc29tZXRoaW5nIGxpa2UgdGhhdCkuCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBj
b25zdCBHcmFwaGljc0NvbnRleHQmKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgp
IGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQu
Y3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
MSwxMyArODEsMTMgQEAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gSW1hZ2VCdWZmZXJJTwog
ICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29udGV4dENvbG9yU3BhY2UoY29udGV4
dCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IElt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMsIENHQ29sb3JTcGFjZVJlZiBjZ0NvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqIGhv
c3RXaW5kb3cpCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQogewogICAgIEludFNpemUgYmFj
a2VuZFNpemUgPSBjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUocGFyYW1ldGVycyk7CiAgICAgaWYg
KGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBh
dXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShiYWNrZW5kU2l6ZSwgYmFja2VuZFNpemUs
IGNnQ29sb3JTcGFjZSwgSU9TdXJmYWNlOjpmb3JtYXRGb3JQaXhlbEZvcm1hdChwYXJhbWV0ZXJz
LnBpeGVsRm9ybWF0KSk7CisgICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoYmFj
a2VuZFNpemUsIGJhY2tlbmRTaXplLCBwYXJhbWV0ZXJzLmNvbG9yU3BhY2UsIElPU3VyZmFjZTo6
Zm9ybWF0Rm9yUGl4ZWxGb3JtYXQocGFyYW1ldGVycy5waXhlbEZvcm1hdCkpOwogICAgIGlmICgh
c3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTEwMiwxNSArMTAyLDE0IEBA
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2sKIAogc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KQogewotICAgIGlmIChhdXRvIGNnQ29sb3JTcGFjZSA9IGNvbnRleHQu
aGFzUGxhdGZvcm1Db250ZXh0KCkgPyBjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0KSA6IG51bGxw
dHIpCi0gICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShw
YXJhbWV0ZXJzLCBjZ0NvbG9yU3BhY2UuZ2V0KCksIG51bGxwdHIpOworICAgIGlmIChhdXRvIGNn
Q29sb3JTcGFjZSA9IGNvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkgPyBjb250ZXh0Q29sb3JT
cGFjZShjb250ZXh0KSA6IG51bGxwdHIpIHsKKyAgICAgICAgYXV0byBvdmVycmlkZVBhcmFtZXRl
cnMgPSBwYXJhbWV0ZXJzOworICAgICAgICBvdmVycmlkZVBhcmFtZXRlcnMuY29sb3JTcGFjZSA9
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSB7IGNnQ29sb3JTcGFjZSB9OwogCi0gICAgcmV0dXJuIElt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIG51bGxwdHIpOwot
fQorICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUob3Zl
cnJpZGVQYXJhbWV0ZXJzLCBudWxscHRyKTsKKyAgICB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3Jl
YXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RX
aW5kb3cpCi17Ci0gICAgcmV0dXJuIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRl
KHBhcmFtZXRlcnMsIGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpLCBo
b3N0V2luZG93KTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVh
dGUocGFyYW1ldGVycywgbnVsbHB0cik7CiB9CiAKIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZDo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMsIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+JiYgc3VyZmFjZSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAko
d29ya2luZyBjb3B5KQpAQCAtNDIsOCArNDIsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHNpemVf
dCBjYWxjdWxhdGVNZW1vcnlDb3N0KGNvbnN0IFBhcmFtZXRlcnMmKTsKICAgICBzdGF0aWMgc2l6
ZV90IGNhbGN1bGF0ZUV4dGVybmFsTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJzJik7CiAgICAg
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+
IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgQ0dDb2xvclNwYWNlUmVmLCBjb25zdCBIb3N0V2lu
ZG93Kik7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgSG9zdFdpbmRvdyopOworICAg
IC8vIEZJWE1FOiBSZW5hbWUgdG8gY3JlYXRlVXNpbmdDb2xvclNwYWNlT2ZHcmFwaGljc0NvbnRl
eHQoKSAob3Igc29tZXRoaW5nIGxpa2UgdGhhdCkuCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQoY29uc3QgUGFyYW1ldGVycyYsIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+JiYpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRp
ZXNDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsNyArMTc3LDcgQEAgc3RhdGljIGJvb2wgZW5jb2RlKGNv
bnN0IFBpeGVsQnVmZmVyJiBzbwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8g
aW1hZ2VTaXplID0gc291cmNlLnNpemUoKTsKLSAgICBhdXRvIGltYWdlID0gYWRvcHRDRihDR0lt
YWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCA0
ICogaW1hZ2VTaXplLndpZHRoKCksIGNhY2hlZENHQ29sb3JTcGFjZShzb3VyY2UuZm9ybWF0KCku
Y29sb3JTcGFjZSksIGtDR0JpdG1hcEJ5dGVPcmRlckRlZmF1bHQgfCBkYXRhQWxwaGFJbmZvLCBk
YXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7
CisgICAgYXV0byBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgo
KSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBzb3Vy
Y2UuZm9ybWF0KCkuY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwga0NHQml0bWFwQnl0
ZU9yZGVyRGVmYXVsdCB8IGRhdGFBbHBoYUluZm8sIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFs
c2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKIAogICAgIHJldHVybiBlbmNvZGUoaW1h
Z2UuZ2V0KCksIGRlc3RpbmF0aW9uVVRJLmdldCgpLCBxdWFsaXR5LCBmdW5jdGlvbik7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRp
dmVJbWFnZUNHLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYg
KzQ5LDcgQEAgQ29sb3IgTmF0aXZlSW1hZ2U6OnNpbmdsZVBpeGVsU29saWRDb2xvcgogICAgIGlm
IChzaXplKCkgIT0gSW50U2l6ZSgxLCAxKSkKICAgICAgICAgcmV0dXJuIENvbG9yKCk7CiAKKyAg
ICAvLyBGSVhNRTogV2h5IGlzIHRoaXMgdXNpbmcgaGFyZGNvZGVkIHNSR0I/CiAgICAgdW5zaWdu
ZWQgY2hhciBwaXhlbFs0XTsgLy8gUkdCQQogICAgIGF1dG8gYml0bWFwQ29udGV4dCA9IGFkb3B0
Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsLCAxLCAxLCA4LCBzaXplb2YocGl4ZWwpLCBz
UkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QgfCBrQ0dC
aXRtYXBCeXRlT3JkZXIzMkJpZykpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29jb2EubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0JKHdv
cmtpbmcgY29weSkKQEAgLTU3MSw3ICs1NzEsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpyZXNoYXBlRGlzCiBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxvY2F0ZUFu
ZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpCiB7CiAgICAgQVNTRVJUKCFnZXRJbnRlcm5hbEZy
YW1lYnVmZmVyU2l6ZSgpLmlzRW1wdHkoKSk7Ci0gICAgYXV0byBiYWNraW5nID0gV2ViQ29yZTo6
SU9TdXJmYWNlOjpjcmVhdGUoZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSwgV2ViQ29yZTo6
c1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgYXV0byBiYWNraW5nID0gSU9TdXJmYWNlOjpjcmVh
dGUoZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCkpOwogICAgIGlmICghYmFja2luZykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZh
Y2UuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvSU9TdXJmYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDkgKzI3LDEwIEBACiAK
ICNpZiBIQVZFKElPU1VSRkFDRSkKIAorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5o
IgorI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlIDxvYmpjL29iamMuaD4KICNpbmNsdWRl
IDxwYWwvc3BpL2NvY29hL0lPU3VyZmFjZVNQSS5oPgotI2luY2x1ZGUgIkludFNpemUuaCIKIAog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkgJiYgIVBM
QVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQogI2RlZmluZSBIQVZFX0lPU1VSRkFDRV9SR0Ix
MCAxCkBAIC00NiwxMCArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdyYXBo
aWNzQ29udGV4dDsKIGNsYXNzIEhvc3RXaW5kb3c7Ci0gICAgCi0jaWYgVVNFKElPU1VSRkFDRV9D
QU5WQVNfQkFDS0lOR19TVE9SRSkKIGNsYXNzIEltYWdlQnVmZmVyOwotI2VuZGlmCiAKIGVudW0g
Y2xhc3MgUGl4ZWxGb3JtYXQgOiB1aW50OF90OwogZW51bSBjbGFzcyBWb2xhdGlsaXR5U3RhdGUg
OiB1aW50OF90OwpAQCAtMTAxLDEwICs5OSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHVpbnQzMl90
IG1fZmxhZ3M7CiAgICAgfTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGUoSW50U2l6ZSwgQ0dDb2xvclNwYWNlUmVmLCBGb3JtYXQg
PSBGb3JtYXQ6OkJHUkEpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8SU9TdXJmYWNlPiBjcmVhdGUoSW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xv
clNwYWNlUmVmLCBGb3JtYXQgPSBGb3JtYXQ6OkJHUkEpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGVGcm9tU2VuZFJpZ2h0KGNvbnN0
IFdURjo6TWFjaFNlbmRSaWdodCYmLCBDR0NvbG9yU3BhY2VSZWYpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGVGcm9tU3VyZmFjZShJ
T1N1cmZhY2VSZWYsIENHQ29sb3JTcGFjZVJlZik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZShJbnRTaXplLCBjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmLCBGb3JtYXQgPSBGb3JtYXQ6OkJHUkEpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGUoSW50U2l6ZSwgSW50
U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRm9ybWF0ID0g
Rm9ybWF0OjpCR1JBKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PElPU3VyZmFjZT4gY3JlYXRlRnJvbVNlbmRSaWdodChjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQm
JiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZUZyb21TdXJmYWNlKElPU3VyZmFj
ZVJlZiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZUZyb21JbWFnZShDR0ltYWdl
UmVmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFj
ZT4gY3JlYXRlRnJvbVBpeGVsQnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYpOwogICAgIApAQCAtMTQ2
LDcgKzE0NCw3IEBAIHB1YmxpYzoKICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBt
X3NpemU7IH0KICAgICBzaXplX3QgdG90YWxCeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxC
eXRlczsgfQogCi0gICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVy
biBtX2NvbG9yU3BhY2UuZ2V0KCk7IH0KKyAgICBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
IGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yU3BhY2U7IH0KICAgICBXRUJDT1JF
X0VYUE9SVCBGb3JtYXQgZm9ybWF0KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgSU9TdXJm
YWNlSUQgc3VyZmFjZUlEKCkgY29uc3Q7CiAgICAgc2l6ZV90IGJ5dGVzUGVyUm93KCkgY29uc3Q7
CkBAIC0xNjksMTQgKzE2NywxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBtaWdyYXRlQ29sb3JTcGFj
ZVRvUHJvcGVydGllcygpOwogCiBwcml2YXRlOgotICAgIElPU3VyZmFjZShJbnRTaXplLCBJbnRT
aXplIGNvbnRleHRTaXplLCBDR0NvbG9yU3BhY2VSZWYsIEZvcm1hdCwgYm9vbCYgc3VjY2Vzcyk7
Ci0gICAgSU9TdXJmYWNlKElPU3VyZmFjZVJlZiwgQ0dDb2xvclNwYWNlUmVmKTsKKyAgICBJT1N1
cmZhY2UoSW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiwgRm9ybWF0LCBib29sJiBzdWNjZXNzKTsKKyAgICBJT1N1cmZhY2UoSU9TdXJmYWNl
UmVmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKIAotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8SU9TdXJmYWNlPiBzdXJmYWNlRnJvbVBvb2woSW50U2l6ZSwgSW50U2l6ZSBjb250
ZXh0U2l6ZSwgQ0dDb2xvclNwYWNlUmVmLCBGb3JtYXQpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8SU9TdXJmYWNlPiBzdXJmYWNlRnJvbVBvb2woSW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0
U2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRm9ybWF0KTsKICAgICBJbnRTaXpl
IGNvbnRleHRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0U2l6ZTsgfQogICAgIHZvaWQg
c2V0Q29udGV4dFNpemUoSW50U2l6ZSk7CiAKLSAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVm
PiBtX2NvbG9yU3BhY2U7CisgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1fY29sb3JTcGFjZTsK
ICAgICBJbnRTaXplIG1fc2l6ZTsKICAgICBJbnRTaXplIG1fY29udGV4dFNpemU7CiAgICAgc2l6
ZV90IG1fdG90YWxCeXRlczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0lPU3VyZmFjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2ltcG9ydCAiSU9TdXJmYWNlLmgiCiAKICNpbXBvcnQg
IkNvcmVWaWRlb1NvZnRMaW5rLmgiCisjaW1wb3J0ICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIK
ICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRH
TC5oIgogI2ltcG9ydCAiSG9zdFdpbmRvdy5oIgpAQCAtNDMsNyArNDQsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZh
Y2U6OnN1cmZhY2VGcm9tUG9vbChJbnRTaXplIHNpemUsIEludFNpemUgY29udGV4dFNpemUsIENH
Q29sb3JTcGFjZVJlZiBjb2xvclNwYWNlLCBGb3JtYXQgcGl4ZWxGb3JtYXQpCitpbmxpbmUgc3Rk
Ojp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpzdXJmYWNlRnJvbVBvb2woSW50U2l6
ZSBzaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
IGNvbG9yU3BhY2UsIEZvcm1hdCBwaXhlbEZvcm1hdCkKIHsKICAgICBhdXRvIGNhY2hlZFN1cmZh
Y2UgPSBJT1N1cmZhY2VQb29sOjpzaGFyZWRQb29sKCkudGFrZVN1cmZhY2Uoc2l6ZSwgY29sb3JT
cGFjZSwgcGl4ZWxGb3JtYXQpOwogICAgIGlmICghY2FjaGVkU3VyZmFjZSkKQEAgLTUzLDEyICs1
NCwxMiBAQCBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmCiAgICAgcmV0
dXJuIGNhY2hlZFN1cmZhY2U7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3Vy
ZmFjZTo6Y3JlYXRlKEludFNpemUgc2l6ZSwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UsIEZv
cm1hdCBwaXhlbEZvcm1hdCkKK3N0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6
Y3JlYXRlKEludFNpemUgc2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNw
YWNlLCBGb3JtYXQgcGl4ZWxGb3JtYXQpCiB7CiAgICAgcmV0dXJuIElPU3VyZmFjZTo6Y3JlYXRl
KHNpemUsIHNpemUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKIH0KIAotc3RkOjp1bmlxdWVf
cHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGUoSW50U2l6ZSBzaXplLCBJbnRTaXplIGNv
bnRleHRTaXplLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwgRm9ybWF0IHBpeGVsRm9ybWF0
KQorc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGUoSW50U2l6ZSBz
aXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNv
bG9yU3BhY2UsIEZvcm1hdCBwaXhlbEZvcm1hdCkKIHsKICAgICBpZiAoYXV0byBjYWNoZWRTdXJm
YWNlID0gc3VyZmFjZUZyb21Qb29sKHNpemUsIGNvbnRleHRTaXplLCBjb2xvclNwYWNlLCBwaXhl
bEZvcm1hdCkpIHsKICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKElPU3VyZmFjZSwgc3RyZWFtIDw8
ICJJT1N1cmZhY2U6OmNyZWF0ZSB0b29rIGZyb20gcG9vbDogIiA8PCAqY2FjaGVkU3VyZmFjZSk7
CkBAIC03NSwxMyArNzYsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNl
OjpjcgogICAgIHJldHVybiBzdXJmYWNlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNl
PiBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoY29uc3QgTWFjaFNlbmRSaWdodCYmIHNl
bmRSaWdodCwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UpCitzdGQ6OnVuaXF1ZV9wdHI8SU9T
dXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoY29uc3QgTWFjaFNlbmRSaWdo
dCYmIHNlbmRSaWdodCwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQog
ewogICAgIGF1dG8gc3VyZmFjZSA9IGFkb3B0Q0YoSU9TdXJmYWNlTG9va3VwRnJvbU1hY2hQb3J0
KHNlbmRSaWdodC5zZW5kUmlnaHQoKSkpOwogICAgIHJldHVybiBJT1N1cmZhY2U6OmNyZWF0ZUZy
b21TdXJmYWNlKHN1cmZhY2UuZ2V0KCksIGNvbG9yU3BhY2UpOwogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TdXJmYWNlKElPU3VyZmFjZVJlZiBz
dXJmYWNlLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSkKK3N0ZDo6dW5pcXVlX3B0cjxJT1N1
cmZhY2U+IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVN1cmZhY2UoSU9TdXJmYWNlUmVmIHN1cmZhY2Us
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkKIHsKICAgICByZXR1cm4g
c3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4obmV3IElPU3VyZmFjZShzdXJmYWNlLCBjb2xvclNw
YWNlKSk7CiB9CkBAIC05NCw3ICs5NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElP
U3VyZmFjZTo6Y3IKICAgICBzaXplX3Qgd2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpOwog
ICAgIHNpemVfdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKTsKIAotICAgIGF1dG8g
c3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKEludFNpemUod2lkdGgsIGhlaWdodCksIENHSW1h
Z2VHZXRDb2xvclNwYWNlKGltYWdlKSk7CisgICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpj
cmVhdGUoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgRGVzdGluYXRpb25Db2xvclNwYWNlIHsgQ0dJ
bWFnZUdldENvbG9yU3BhY2UoaW1hZ2UpIH0pOwogICAgIGlmICghc3VyZmFjZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byBzdXJmYWNlQ29udGV4dCA9IHN1cmZhY2UtPmVuc3Vy
ZVBsYXRmb3JtQ29udGV4dCgpOwpAQCAtMTE2LDcgKzExNyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJ
T1N1cmZhY2U+IElPU3VyZmFjZTo6Y3IKICAgICBpZiAoIWNvbG9yU3BhY2UpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGNyZWF0ZUZyb21TdXJmYWNlKHN1cmZhY2UsIGNv
bG9yU3BhY2UpOworICAgIHJldHVybiBjcmVhdGVGcm9tU3VyZmFjZShzdXJmYWNlLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UgeyBjb2xvclNwYWNlIH0pOwogfQogCiB2b2lkIElPU3VyZmFjZTo6bW92
ZVRvUG9vbChzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiYmIHN1cmZhY2UpCkBAIC0xOTYsNyAr
MTk3LDcgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAqb3B0aW9uc0ZvcjMyQml0U3VyZgogCiB9CiAK
LUlPU3VyZmFjZTo6SU9TdXJmYWNlKEludFNpemUgc2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwg
Q0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UsIEZvcm1hdCBmb3JtYXQsIGJvb2wmIHN1Y2Nlc3Mp
CitJT1N1cmZhY2U6OklPU3VyZmFjZShJbnRTaXplIHNpemUsIEludFNpemUgY29udGV4dFNpemUs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgRm9ybWF0IGZvcm1hdCwg
Ym9vbCYgc3VjY2VzcykKICAgICA6IG1fY29sb3JTcGFjZShjb2xvclNwYWNlKQogICAgICwgbV9z
aXplKHNpemUpCiAgICAgLCBtX2NvbnRleHRTaXplKGNvbnRleHRTaXplKQpAQCAtMjMyLDcgKzIz
Myw3IEBAIElPU3VyZmFjZTo6SU9TdXJmYWNlKEludFNpemUgc2l6ZSwgSW50U2kKICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTGF5ZXJzLCAiSU9TdXJmYWNlIGNyZWF0aW9uIGZhaWxlZCBmb3Ig
c2l6ZTogKCVkICVkKSBhbmQgZm9ybWF0OiAoJWQpIiwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdo
dCgpLCBmb3JtYXQpOwogfQogCi1JT1N1cmZhY2U6OklPU3VyZmFjZShJT1N1cmZhY2VSZWYgc3Vy
ZmFjZSwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UpCitJT1N1cmZhY2U6OklPU3VyZmFjZShJ
T1N1cmZhY2VSZWYgc3VyZmFjZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNw
YWNlKQogICAgIDogbV9jb2xvclNwYWNlKGNvbG9yU3BhY2UpCiAgICAgLCBtX3N1cmZhY2Uoc3Vy
ZmFjZSkKIHsKQEAgLTM0Nyw3ICszNDgsNyBAQCBDR0NvbnRleHRSZWYgSU9TdXJmYWNlOjplbnN1
cmVQbGF0Zm9ybUNvCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKLSAgICBtX2NnQ29udGV4
dCA9IGFkb3B0Q0YoQ0dJT1N1cmZhY2VDb250ZXh0Q3JlYXRlKG1fc3VyZmFjZS5nZXQoKSwgbV9j
b250ZXh0U2l6ZS53aWR0aCgpLCBtX2NvbnRleHRTaXplLmhlaWdodCgpLCBiaXRzUGVyQ29tcG9u
ZW50LCBiaXRzUGVyUGl4ZWwsIG1fY29sb3JTcGFjZS5nZXQoKSwgYml0bWFwSW5mbykpOworICAg
IG1fY2dDb250ZXh0ID0gYWRvcHRDRihDR0lPU3VyZmFjZUNvbnRleHRDcmVhdGUobV9zdXJmYWNl
LmdldCgpLCBtX2NvbnRleHRTaXplLndpZHRoKCksIG1fY29udGV4dFNpemUuaGVpZ2h0KCksIGJp
dHNQZXJDb21wb25lbnQsIGJpdHNQZXJQaXhlbCwgbV9jb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JT
cGFjZSgpLCBiaXRtYXBJbmZvKSk7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKGF1dG8g
ZGlzcGxheU1hc2sgPSBwcmltYXJ5T3BlbkdMRGlzcGxheU1hc2soKSkgewpAQCAtNTE1LDcgKzUx
Niw3IEBAIHZvaWQgSU9TdXJmYWNlOjpzZXRPd25lcnNoaXBJZGVudGl0eSh0YXMKIAogdm9pZCBJ
T1N1cmZhY2U6Om1pZ3JhdGVDb2xvclNwYWNlVG9Qcm9wZXJ0aWVzKCkKIHsKLSAgICBhdXRvIGNv
bG9yU3BhY2VQcm9wZXJ0aWVzID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDb3B5UHJvcGVydHlMaXN0
KG1fY29sb3JTcGFjZS5nZXQoKSkpOworICAgIGF1dG8gY29sb3JTcGFjZVByb3BlcnRpZXMgPSBh
ZG9wdENGKENHQ29sb3JTcGFjZUNvcHlQcm9wZXJ0eUxpc3QobV9jb2xvclNwYWNlLnBsYXRmb3Jt
Q29sb3JTcGFjZSgpKSk7CiAgICAgSU9TdXJmYWNlU2V0VmFsdWUobV9zdXJmYWNlLmdldCgpLCBr
SU9TdXJmYWNlQ29sb3JTcGFjZSwgY29sb3JTcGFjZVByb3BlcnRpZXMuZ2V0KCkpOwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZm
ZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1t
CShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpy
ZW5kCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBhdXRvJiBzdXJmYWNlID0gZG93bmNhc3Q8
QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlcj4oKm1fb3V0cHV0SW1hZ2VCdWZmZXIpLnN1cmZhY2UoKTsK
LSAgICBbc2hhcmVkQ0lDb250ZXh0KCkuZ2V0KCkgcmVuZGVyOiBtX291dHB1dEltYWdlLmdldCgp
IHRvSU9TdXJmYWNlOiBzdXJmYWNlLnN1cmZhY2UoKSBib3VuZHM6ZGVzdFJlY3QobGFzdEVmZmVj
dCkgY29sb3JTcGFjZTpjYWNoZWRDR0NvbG9yU3BhY2UobGFzdEVmZmVjdC5yZXN1bHRDb2xvclNw
YWNlKCkpXTsKKyAgICBbc2hhcmVkQ0lDb250ZXh0KCkuZ2V0KCkgcmVuZGVyOiBtX291dHB1dElt
YWdlLmdldCgpIHRvSU9TdXJmYWNlOiBzdXJmYWNlLnN1cmZhY2UoKSBib3VuZHM6ZGVzdFJlY3Qo
bGFzdEVmZmVjdCkgY29sb3JTcGFjZTpsYXN0RWZmZWN0LnJlc3VsdENvbG9yU3BhY2UoKS5wbGF0
Zm9ybUNvbG9yU3BhY2UoKV07CiB9CiAgICAgCiBGbG9hdFJlY3QgRmlsdGVyRWZmZWN0UmVuZGVy
ZXJDb3JlSW1hZ2U6OmRlc3RSZWN0KGNvbnN0IEZpbHRlckVmZmVjdCYgbGFzdEVmZmVjdCkgY29u
c3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNm
ZXJTZXNzaW9uVlQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbQkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25W
VC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjExLDYgKzIxMSw4IEBAIFJldGFpblB0cjxDVlBpeGVs
QnVmZmVyUmVmPiBJbWFnZVRyYW5zZmUKICAgICBDVlBpeGVsQnVmZmVyTG9ja0Jhc2VBZGRyZXNz
KHJnYkJ1ZmZlciwgMCk7CiAgICAgdm9pZCogZGF0YSA9IENWUGl4ZWxCdWZmZXJHZXRCYXNlQWRk
cmVzcyhyZ2JCdWZmZXIpOwogICAgIGF1dG8gcmV0YWluZWRSR0JCdWZmZXIgPSBhZG9wdENGKHJn
YkJ1ZmZlcik7CisKKyAgICAvLyBGSVhNRTogV2h5IGlzIHRoaXMgdXNpbmcgaGFyZGNvZGVkIHNS
R0I/CiAgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoZGF0
YSwgaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSwgOCwgQ1ZQaXhlbEJ1ZmZl
ckdldEJ5dGVzUGVyUm93KHJnYkJ1ZmZlciksIHNSR0JDb2xvclNwYWNlUmVmKCksIChDR0JpdG1h
cEluZm8pIGtDR0ltYWdlQWxwaGFOb25lU2tpcEZpcnN0KSk7CiAgICAgaWYgKCFjb250ZXh0KSB7
CiAgICAgICAgIFJFTEVBU0VfTE9HKE1lZGlhLCAiSW1hZ2VUcmFuc2ZlclNlc3Npb25WVDo6Y3Jl
YXRlUGl4ZWxCdWZmZXI6IENHQml0bWFwQ29udGV4dENyZWF0ZSByZXR1cm5lZCBudWxscHRyIik7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNv
bmZvcm1lckNWLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJD
Vi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Miw2ICsxNzIsNyBAQCBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gUGl4ZWxCdWZmZXJDb25mb3JtCiAgICAgQ0dEYXRhUHJvdmlkZXJEaXJlY3RDYWxsYmFj
a3MgcHJvdmlkZXJDYWxsYmFja3MgPSB7IDAsIENWUGl4ZWxCdWZmZXJHZXRCeXRlUG9pbnRlckNh
bGxiYWNrLCBDVlBpeGVsQnVmZmVyUmVsZWFzZUJ5dGVQb2ludGVyQ2FsbGJhY2ssIDAsIENWUGl4
ZWxCdWZmZXJSZWxlYXNlSW5mb0NhbGxiYWNrIH07CiAgICAgUmV0YWluUHRyPENHRGF0YVByb3Zp
ZGVyUmVmPiBwcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVEaXJlY3QoaW5m
bywgYnl0ZUxlbmd0aCwgJnByb3ZpZGVyQ2FsbGJhY2tzKSk7CiAKKyAgICAvLyBGSVhNRTogV2h5
IGlzIHRoaXMgdXNpbmcgaGFyZGNvZGVkIHNSR0I/CiAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dJbWFn
ZUNyZWF0ZSh3aWR0aCwgaGVpZ2h0LCA4LCAzMiwgYnl0ZXNQZXJSb3csIHNSR0JDb2xvclNwYWNl
UmVmKCksIGJpdG1hcEluZm8sIHByb3ZpZGVyLmdldCgpLCBudWxscHRyLCBmYWxzZSwga0NHUmVu
ZGVyaW5nSW50ZW50RGVmYXVsdCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEltYWdlQnVmZmVyLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJs
aWMgQ29uY3JldGVJbWFnZQogICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpiYXNl
VHJhbnNmb3JtOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhv
c3RXaW5kb3cpCisgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9y
U3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2lu
ZG93KQogICAgIHsKICAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjp0ZW1w
bGF0ZSBjcmVhdGU8SW1hZ2VCdWZmZXI+KHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFj
ZSwgcGl4ZWxGb3JtYXQsIGhvc3RXaW5kb3cpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
QnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgSXRlbUhh
bmRsZTo6ZGVzdHJveSgpCiAgICAgICAgIGdldDxGaWxsUm91bmRlZFJlY3Q+KCkufkZpbGxSb3Vu
ZGVkUmVjdCgpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJdGVtVHlwZTo6R2V0UGl4ZWxC
dWZmZXI6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3Rp
YmxlPEdldFBpeGVsQnVmZmVyPjo6dmFsdWUpOworICAgICAgICBnZXQ8R2V0UGl4ZWxCdWZmZXI+
KCkufkdldFBpeGVsQnVmZmVyKCk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEl0ZW1UeXBl
OjpQdXRQaXhlbEJ1ZmZlcjoKICAgICAgICAgZ2V0PFB1dFBpeGVsQnVmZmVyPigpLn5QdXRQaXhl
bEJ1ZmZlcigpOwpAQCAtMzA3LDcgKzMwNyw3IEBAIHZvaWQgSXRlbUhhbmRsZTo6ZGVzdHJveSgp
CiAgICAgICAgIHJldHVybjsKICNlbmRpZgogICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5
X2Rlc3RydWN0aWJsZTxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz46OnZhbHVlKTsKKyAgICAg
ICAgZ2V0PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpLn5CZWdpbkNsaXBUb0RyYXdpbmdD
b21tYW5kcygpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFu
c3BhcmVuY3lMYXllcjoKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9k
ZXN0cnVjdGlibGU8QmVnaW5UcmFuc3BhcmVuY3lMYXllcj46OnZhbHVlKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAko
d29ya2luZyBjb3B5KQpAQCAtODgwLDIzICs4ODAsNTUgQEAgT3B0aW9uYWw8Q2xpcFBhdGg+IENs
aXBQYXRoOjpkZWNvZGUoRGVjbwogY2xhc3MgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMgewog
cHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUgPSBJdGVtVHlw
ZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGlzSW5saW5lSXRlbSA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5l
SXRlbSA9IGZhbHNlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RyYXdpbmdJdGVtID0g
ZmFsc2U7CiAKLSAgICBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkKKyAgICBCZWdp
bkNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpCiAgICAgICAgIDogbV9kZXN0aW5h
dGlvbihkZXN0aW5hdGlvbikKICAgICAgICAgLCBtX2NvbG9yU3BhY2UoY29sb3JTcGFjZSkKICAg
ICB7CiAgICAgfQogCisgICAgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlJiYgY29sb3JTcGFjZSkKKyAg
ICAgICAgOiBtX2Rlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKQorICAgICAgICAsIG1fY29sb3JTcGFj
ZShXVEZNb3ZlKGNvbG9yU3BhY2UpKQorICAgIHsKKyAgICB9CisKICAgICBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQotICAgIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvclNw
YWNlOyB9CisgICAgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKCkgY29u
c3QgeyByZXR1cm4gbV9jb2xvclNwYWNlOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIE9wdGlvbmFsPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPiBkZWNvZGUoRGVj
b2RlciYpOwogCiBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uOwogICAgIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSBtX2NvbG9yU3BhY2U7CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgordm9pZCBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX2Rlc3RpbmF0aW9uOworICAgIGVu
Y29kZXIgPDwgbV9jb2xvclNwYWNlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0
aW9uYWw8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+IEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+
IGRlc3RpbmF0aW9uOworICAgIGRlY29kZXIgPj4gZGVzdGluYXRpb247CisgICAgaWYgKCFkZXN0
aW5hdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPERl
c3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKKyAgICBkZWNvZGVyID4+IGNvbG9yU3Bh
Y2U7CisgICAgaWYgKCFjb2xvclNwYWNlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgcmV0dXJuIHt7ICpkZXN0aW5hdGlvbiwgV1RGTW92ZSgqY29sb3JTcGFjZSkgfX07Cit9
CisKIGNsYXNzIEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5n
Q29tbWFuZHM7CkBAIC0xOTM4LDIzICsxOTcwLDU1IEBAIHByaXZhdGU6CiBjbGFzcyBHZXRQaXhl
bEJ1ZmZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlw
ZSA9IEl0ZW1UeXBlOjpHZXRQaXhlbEJ1ZmZlcjsKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNJbmxpbmVJdGVtID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJ
dGVtID0gZmFsc2U7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSBm
YWxzZTsKIAotICAgIEdldFBpeGVsQnVmZmVyKFdlYkNvcmU6OlBpeGVsQnVmZmVyRm9ybWF0IG91
dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCkKKyAgICBHZXRQaXhl
bEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRS
ZWN0JiBzcmNSZWN0KQogICAgICAgICA6IG1fc3JjUmVjdChzcmNSZWN0KQogICAgICAgICAsIG1f
b3V0cHV0Rm9ybWF0KG91dHB1dEZvcm1hdCkKICAgICB7CiAgICAgfQogCi0gICAgUGl4ZWxCdWZm
ZXJGb3JtYXQgb3V0cHV0Rm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9vdXRwdXRGb3JtYXQ7IH0K
KyAgICBHZXRQaXhlbEJ1ZmZlcihQaXhlbEJ1ZmZlckZvcm1hdCYmIG91dHB1dEZvcm1hdCwgY29u
c3QgSW50UmVjdCYgc3JjUmVjdCkKKyAgICAgICAgOiBtX3NyY1JlY3Qoc3JjUmVjdCkKKyAgICAg
ICAgLCBtX291dHB1dEZvcm1hdChXVEZNb3ZlKG91dHB1dEZvcm1hdCkpCisgICAgeworICAgIH0K
KworICAgIGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQoKSBjb25zdCB7IHJl
dHVybiBtX291dHB1dEZvcm1hdDsgfQogICAgIEludFJlY3Qgc3JjUmVjdCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3JjUmVjdDsgfQogCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBP
cHRpb25hbDxHZXRQaXhlbEJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKKwogcHJpdmF0ZToKICAg
ICBJbnRSZWN0IG1fc3JjUmVjdDsKICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBtX291dHB1dEZvcm1h
dDsKIH07CiAKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEdldFBpeGVsQnVmZmVyOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fc3JjUmVj
dDsKKyAgICBlbmNvZGVyIDw8IG1fb3V0cHV0Rm9ybWF0OworfQorCit0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPgorT3B0aW9uYWw8R2V0UGl4ZWxCdWZmZXI+IEdldFBpeGVsQnVmZmVyOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxJbnRSZWN0PiBzcmNSZWN0OworICAg
IGRlY29kZXIgPj4gc3JjUmVjdDsKKyAgICBpZiAoIXNyY1JlY3QpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlckZvcm1hdD4gb3V0cHV0Rm9y
bWF0OworICAgIGRlY29kZXIgPj4gb3V0cHV0Rm9ybWF0OworICAgIGlmICghb3V0cHV0Rm9ybWF0
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIHt7IFdURk1vdmUo
Km91dHB1dEZvcm1hdCksICpzcmNSZWN0IH19OworfQorCiBjbGFzcyBQdXRQaXhlbEJ1ZmZlciB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1U
eXBlOjpQdXRQaXhlbEJ1ZmZlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDUyLDcgKzQ1Miw3IEBAIHZvaWQgUmVjb3JkZXI6OmNsaXBUb0ltYWdlQnVmZmVy
KEltYWdlQnUKICAgICBhcHBlbmQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KGltYWdlQnVmZmVyLnJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBkZXN0UmVjdCk7CiB9CiAKLXZvaWQgUmVjb3JkZXI6
OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRl
eHQmKT4mJiBkcmF3aW5nRnVuY3Rpb24pCit2b2lkIFJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29t
bWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiBjb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmIGRy
YXdpbmdGdW5jdGlvbikKIHsKICAgICBHcmFwaGljc0NvbnRleHQgbmVzdGVkQ29udGV4dChbJl0o
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgIGF1dG8gaW5pdGlhbENsaXAgPSBG
bG9hdFJlY3QoRmxvYXRQb2ludCgpLCBkZXN0aW5hdGlvbi5zaXplKCkpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNyArMTQ3LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSkgb3ZlcnJpZGU7CiAgICAgSW50UmVj
dCBjbGlwQm91bmRzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihXZWJD
b3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwotICAgIHZvaWQg
Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRnVuY3Rpb248dm9pZChH
cmFwaGljc0NvbnRleHQmKT4mJikgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHZv
aWQgcGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5QYWludEZyYW1lRm9yTWVkaWEoY29uc3Qg
TWVkaWFQbGF5ZXImKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRN
YXAuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjks
NyArNjksNyBAQCBib29sIEZFRGlzcGxhY2VtZW50TWFwOjpzZXRTY2FsZShmbG9hdCBzCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OnNldFJlc3VsdENvbG9y
U3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlKQordm9pZCBGRURpc3BsYWNlbWVudE1hcDo6c2V0
UmVzdWx0Q29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKQogewogICAgIC8v
IFNwZWM6IFRoZSAnY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzJyBwcm9wZXJ0eSBvbmx5IGFw
cGxpZXMgdG8gdGhlICdpbjInIHNvdXJjZSBpbWFnZQogICAgIC8vIGFuZCBkb2VzIG5vdCBhcHBs
eSB0byB0aGUgJ2luJyBzb3VyY2UgaW1hZ2UuIFRoZSAnaW4nIHNvdXJjZSBpbWFnZSBtdXN0IHJl
bWFpbiBpbiBpdHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVEaXNwbGFjZW1lbnRNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmgJKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFj
ZW1lbnRNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAg
ZmxvYXQgc2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3NjYWxlOyB9CiAgICAgYm9vbCBzZXRTY2Fs
ZShmbG9hdCk7CiAKLSAgICB2b2lkIHNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xv
clNwYWNlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFJlc3VsdENvbG9yU3BhY2UoY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB0cmFuc2Zvcm1SZXN1bHRD
b2xvclNwYWNlKEZpbHRlckVmZmVjdCosIGNvbnN0IGludCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFRmxvb2QuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDggKzQwLDgg
QEAgcHVibGljOgogI2lmICFVU0UoQ0cpCiAgICAgLy8gZmVGbG9vZCBkb2VzIG5vdCBwZXJmb3Jt
IGNvbG9yIGludGVycG9sYXRpb24gb2YgYW55IGtpbmQsIHNvIHRoZSByZXN1bHQgaXMgYWx3YXlz
IGluIHRoZSBjdXJyZW50CiAgICAgLy8gY29sb3Igc3BhY2UgcmVnYXJkbGVzcyBvZiB0aGUgdmFs
dWUgb2YgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzLgotICAgIHZvaWQgc2V0T3BlcmF0aW5n
Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpIG92ZXJyaWRlIHsgRmlsdGVyRWZmZWN0
OjpzZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7IH0KLSAg
ICB2b2lkIHNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlKSBvdmVycmlk
ZSB7IEZpbHRlckVmZmVjdDo6c2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IpOyB9CisgICAgdm9pZCBzZXRPcGVyYXRpbmdDb2xvclNwYWNlKGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYpIG92ZXJyaWRlIHsgRmlsdGVyRWZmZWN0OjpzZXRSZXN1bHRDb2xv
clNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsgfQorICAgIHZvaWQgc2V0UmVz
dWx0Q29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKSBvdmVycmlkZSB7IEZp
bHRlckVmZmVjdDo6c2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSk7IH0KICNlbmRpZgogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAkocmV2aXNpb24gMjc3OTE5
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUoKQogICAgICAgICB0aWxlUmVjdC5zY2FsZShmaWx0ZXIuZmlsdGVyUmVzb2x1
dGlvbigpLndpZHRoKCksIGZpbHRlci5maWx0ZXJSZXNvbHV0aW9uKCkuaGVpZ2h0KCkpOwogICAg
IH0KIAotICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1h
Z2VCdWZmZXIodGlsZVJlY3QsIHRpbGVSZWN0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Is
IGZpbHRlcigpLnJlbmRlcmluZ01vZGUoKSk7CisgICAgYXV0byB0aWxlSW1hZ2UgPSBTVkdSZW5k
ZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcih0aWxlUmVjdCwgdGlsZVJlY3QsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBmaWx0ZXIoKS5yZW5kZXJpbmdNb2RlKCkpOwogICAg
IGlmICghdGlsZUltYWdlKQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5j
cHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM5LDcgKzQzOSw3
IEBAIHN0YXRpYyB2b2lkIGNvcHlVbnByZW11bHRpcGx5aW5nQWxwaGEoY28KICNlbmRpZgogfQog
Ci1PcHRpb25hbDxQaXhlbEJ1ZmZlcj4gRmlsdGVyRWZmZWN0Ojpjb252ZXJ0UGl4ZWxCdWZmZXJU
b0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIHRhcmdldENvbG9yU3BhY2UsIFBpeGVs
QnVmZmVyJiBwaXhlbEJ1ZmZlcikKK09wdGlvbmFsPFBpeGVsQnVmZmVyPiBGaWx0ZXJFZmZlY3Q6
OmNvbnZlcnRQaXhlbEJ1ZmZlclRvQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmIHRhcmdldENvbG9yU3BhY2UsIFBpeGVsQnVmZmVyJiBwaXhlbEJ1ZmZlcikKIHsKICAgICAv
LyBGSVhNRTogVXNpbmcgYW4gSW1hZ2VCdWZmZXIgdG8gcGVyZm9ybSB0aGUgY29sb3Igc3BhY2Ug
Y29udmVyc2lvbiBpcyB1bm5lY2Vzc2FyeS4gV2UgY2FuIGRvIGl0IGRpcmVjdGx5LgogCkBAIC00
NTQsNyArNDU0LDcgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEZpbHRlckVmZmVjdDo6Y29udgog
ICAgIHJldHVybiBjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UodGFyZ2V0Q29sb3JTcGFj
ZSwgKmJ1ZmZlciwgZGVzdGluYXRpb25SZWN0LCBwaXhlbEJ1ZmZlci5mb3JtYXQoKS5hbHBoYUZv
cm1hdCk7CiB9CiAKLU9wdGlvbmFsPFBpeGVsQnVmZmVyPiBGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRJ
bWFnZUJ1ZmZlclRvQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UgdGFyZ2V0Q29sb3JT
cGFjZSwgSW1hZ2VCdWZmZXImIGlucHV0QnVmZmVyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBBbHBo
YVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEFscGhhRm9ybWF0KQorT3B0aW9uYWw8UGl4ZWxCdWZm
ZXI+IEZpbHRlckVmZmVjdDo6Y29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKGNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYgdGFyZ2V0Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXImIGlucHV0
QnVmZmVyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1
dEFscGhhRm9ybWF0KQogewogICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBiZSBkb25lIG1vcmUgZGly
ZWN0bHkgdXNpbmcgUGl4ZWxCdWZmZXJDb252ZXJzaW9uLgogCkBAIC00NzIsNyArNDcyLDcgQEAg
T3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEZpbHRlckVmZmVjdDo6Y29udgogICAgIHJldHVybiBjb252
ZXJ0ZWRCdWZmZXItPmdldFBpeGVsQnVmZmVyKGZvcm1hdCwgcmVjdCk7CiB9CiAKLXZvaWQgRmls
dGVyRWZmZWN0Ojpjb3B5Q29udmVydGVkSW1hZ2VCdWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xh
bXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2Us
IEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCkKK3ZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5Q29udmVydGVkSW1hZ2VCdWZmZXJUb0Rlc3Rp
bmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiBjb2xvclNwYWNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1h
dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgLy8gQ29udmVydHMgdGhlIGRhdGEg
c3RvcmVkIGluIG1faW1hZ2VCdWZmZXJSZXN1bHQsIGFuZCBzYXZlIHRvIGRlc3RpbmF0aW9uCiAg
ICAgYXV0byBjb252ZXJ0ZWRQaXhlbEJ1ZmZlciA9IGNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JT
cGFjZShjb2xvclNwYWNlLCAqbV9pbWFnZUJ1ZmZlclJlc3VsdCwgeyBJbnRQb2ludCgpLCBtX2Fi
c29sdXRlUGFpbnRSZWN0LnNpemUoKSB9LCBvdXRwdXRGb3JtYXQpOwpAQCAtNDgxLDcgKzQ4MSw3
IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5Q29udmVydGVkSW1hZ2VCdWYKICAgICBjb3B5SW1h
Z2VCeXRlcyhjb252ZXJ0ZWRQaXhlbEJ1ZmZlci0+ZGF0YSgpLCBkZXN0aW5hdGlvbiwgZGVzdFJl
Y3QpOwogfQogCi12b2lkIEZpbHRlckVmZmVjdDo6Y29weUNvbnZlcnRlZFBpeGVsQnVmZmVyVG9E
ZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIFBpeGVsQnVmZmVyJiBw
aXhlbEJ1ZmZlciwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0KQordm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRQaXhlbEJ1ZmZl
clRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBQaXhlbEJ1ZmZl
ciYgcGl4ZWxCdWZmZXIsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgLy8gQ29udmVydHMgdGhlIGRhdGEgc3Rv
cmVkIGluIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQvbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1
bHQsCiAgICAgLy8gd2hpY2hldmVyIGlzbid0IG51bGwsIGFuZCBzYXZlIHRvIGRlc3RpbmF0aW9u
CkBAIC02MjgsNyArNjI4LDcgQEAgYm9vbCBGaWx0ZXJFZmZlY3Q6OnJlcXVpcmVzUGl4ZWxCdWZm
ZXJDbwogICAgIC8vIFRoaXMgZnVuY3Rpb24gZGV0ZXJtaW5lcyB3aGV0aGVyIHdlIG5lZWQgdGhl
IHN0ZXAgb2YgYW4gZXh0cmEgY29sb3Igc3BhY2UgY29udmVyc2lvbgogICAgIC8vIFdlIG9ubHkg
bmVlZCBleHRyYSBjb2xvciBjb252ZXJzaW9uIHdoZW4gMSkgY29sb3Igc3BhY2UgaXMgZGlmZmVy
ZW50IGluIHRoZSBpbnB1dAogICAgIC8vIEFORCAyKSB0aGUgZmlsdGVyIGlzIG1hbmlwdWxhdGlu
ZyByYXcgcGl4ZWxzCi0gICAgcmV0dXJuIGRlc3RpbmF0aW9uQ29sb3JTcGFjZSAmJiByZXN1bHRD
b2xvclNwYWNlKCkgIT0gKmRlc3RpbmF0aW9uQ29sb3JTcGFjZTsKKyAgICByZXR1cm4gcmVzdWx0
Q29sb3JTcGFjZSgpICE9IGRlc3RpbmF0aW9uQ29sb3JTcGFjZTsKICNlbHNlCiAgICAgLy8gQWRk
aXRpb25hbCBjb2xvciBzcGFjZSBjb252ZXJzaW9uIGlzIG5vdCBuZWVkZWQgb24gbm9uLUNHCiAg
ICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uQ29sb3JTcGFjZSk7CkBAIC02MzYsNyArNjM2LDcg
QEAgYm9vbCBGaWx0ZXJFZmZlY3Q6OnJlcXVpcmVzUGl4ZWxCdWZmZXJDbwogI2VuZGlmCiB9CiAK
LXZvaWQgRmlsdGVyRWZmZWN0Ojp0cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9u
Q29sb3JTcGFjZSBkZXN0aW5hdGlvbkNvbG9yU3BhY2UpCit2b2lkIEZpbHRlckVmZmVjdDo6dHJh
bnNmb3JtUmVzdWx0Q29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGRlc3Rp
bmF0aW9uQ29sb3JTcGFjZSkKIHsKICNpZiBVU0UoQ0cpCiAgICAgLy8gQ0cgaGFuZGxlcyBjb2xv
ciBzcGFjZSBhZGp1c3RtZW50cyBpbnRlcm5hbGx5LgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlckVmZmVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkFscGhhUHJlbXVsdGlwbGljYXRpb24uaCIKLSNpbmNsdWRlICJD
b2xvclNwYWNlLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVk
ZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkludFJlY3RF
eHRlbnQuaCIKQEAgLTE2NSwxMyArMTY1LDEzIEBAIHB1YmxpYzoKICAgICBib29sIGNsaXBzVG9C
b3VuZHMoKSBjb25zdCB7IHJldHVybiBtX2NsaXBzVG9Cb3VuZHM7IH0KICAgICB2b2lkIHNldENs
aXBzVG9Cb3VuZHMoYm9vbCB2YWx1ZSkgeyBtX2NsaXBzVG9Cb3VuZHMgPSB2YWx1ZTsgfQogCi0g
ICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG9wZXJhdGluZ0NvbG9yU3BhY2UoKSBjb25zdCB7IHJl
dHVybiBtX29wZXJhdGluZ0NvbG9yU3BhY2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0T3BlcmF0
aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkgeyBtX29wZXJh
dGluZ0NvbG9yU3BhY2UgPSBjb2xvclNwYWNlOyB9Ci0gICAgRGVzdGluYXRpb25Db2xvclNwYWNl
IHJlc3VsdENvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdENvbG9yU3BhY2U7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgc2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UgY29sb3JTcGFjZSkgeyBtX3Jlc3VsdENvbG9yU3BhY2UgPSBjb2xvclNwYWNlOyB9CisgICAg
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBvcGVyYXRpbmdDb2xvclNwYWNlKCkgY29uc3Qg
eyByZXR1cm4gbV9vcGVyYXRpbmdDb2xvclNwYWNlOyB9CisgICAgdmlydHVhbCB2b2lkIHNldE9w
ZXJhdGluZ0NvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNl
KSB7IG1fb3BlcmF0aW5nQ29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7IH0KKyAgICBjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmIHJlc3VsdENvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3Jl
c3VsdENvbG9yU3BhY2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVzdWx0Q29sb3JTcGFjZShj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpIHsgbV9yZXN1bHRDb2xvclNw
YWNlID0gY29sb3JTcGFjZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHRyYW5zZm9ybVJlc3VsdENv
bG9yU3BhY2UoRmlsdGVyRWZmZWN0KiBpbiwgY29uc3QgaW50KSB7IGluLT50cmFuc2Zvcm1SZXN1
bHRDb2xvclNwYWNlKG1fb3BlcmF0aW5nQ29sb3JTcGFjZSk7IH0KLSAgICB2b2lkIHRyYW5zZm9y
bVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlKTsKKyAgICB2b2lkIHRyYW5z
Zm9ybVJlc3VsdENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CiAgICAg
CiAgICAgc3RhdGljIFZlY3RvcjxmbG9hdD4gbm9ybWFsaXplZEZsb2F0cyhjb25zdCBWZWN0b3I8
ZmxvYXQ+JiB2YWx1ZXMpCiAgICAgewpAQCAtMjAzLDExICsyMDMsMTEgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgPSAwOwogCiAgICAgdm9pZCBj
b3B5SW1hZ2VCeXRlcyhjb25zdCBVaW50OENsYW1wZWRBcnJheSYgc291cmNlLCBVaW50OENsYW1w
ZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmKSBjb25zdDsKLSAgICB2b2lkIGNv
cHlDb252ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEFscGhhUHJlbXVsdGlwbGljYXRpb24sIGNvbnN0IEludFJl
Y3QmKTsKLSAgICB2b2lkIGNvcHlDb252ZXJ0ZWRQaXhlbEJ1ZmZlclRvRGVzdGluYXRpb24oVWlu
dDhDbGFtcGVkQXJyYXkmLCBQaXhlbEJ1ZmZlciYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgY29u
c3QgSW50UmVjdCYpOworICAgIHZvaWQgY29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0aW5h
dGlvbihVaW50OENsYW1wZWRBcnJheSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEFs
cGhhUHJlbXVsdGlwbGljYXRpb24sIGNvbnN0IEludFJlY3QmKTsKKyAgICB2b2lkIGNvcHlDb252
ZXJ0ZWRQaXhlbEJ1ZmZlclRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmLCBQaXhlbEJ1
ZmZlciYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IEludFJlY3QmKTsKICAg
ICBib29sIHJlcXVpcmVzUGl4ZWxCdWZmZXJDb2xvclNwYWNlQ29udmVyc2lvbihPcHRpb25hbDxE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U+KTsKLSAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gY29udmVy
dEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgSW1hZ2VCdWZm
ZXImLCBjb25zdCBJbnRSZWN0JiwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbik7Ci0gICAgT3B0aW9u
YWw8UGl4ZWxCdWZmZXI+IGNvbnZlcnRQaXhlbEJ1ZmZlclRvQ29sb3JTcGFjZShEZXN0aW5hdGlv
bkNvbG9yU3BhY2UsIFBpeGVsQnVmZmVyJik7CisgICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGNv
bnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
LCBJbWFnZUJ1ZmZlciYsIGNvbnN0IEludFJlY3QmLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uKTsK
KyAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gY29udmVydFBpeGVsQnVmZmVyVG9Db2xvclNwYWNl
KGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBpeGVsQnVmZmVyJik7CiAgICAgCiAKICAg
ICBGaWx0ZXImIG1fZmlsdGVyOwpAQCAtMjQ0LDEzICsyNDQsMTEgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fY2xpcHNUb0JvdW5kcyB7IHRydWUgfTsKIAogI2lmIEVOQUJMRShERVNUSU5BVElPTl9D
T0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZGVmYXVs
dE9wZXJhdGluZ0NvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0I7
CisgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1fb3BlcmF0aW5nQ29sb3JTcGFjZSB7IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigpIH07CiAjZWxzZQotICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBkZWZhdWx0T3BlcmF0aW5nQ29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQjsKKyAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgbV9vcGVyYXRpbmdDb2xvclNw
YWNlIHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsKICNlbmRpZgotCi0gICAgRGVz
dGluYXRpb25Db2xvclNwYWNlIG1fb3BlcmF0aW5nQ29sb3JTcGFjZSB7IGRlZmF1bHRPcGVyYXRp
bmdDb2xvclNwYWNlIH07Ci0gICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1fcmVzdWx0Q29sb3JT
cGFjZSB7IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSBtX3Jlc3VsdENvbG9yU3BhY2UgeyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSB9OwogICAgIAogICAgIGNvbnN0IFR5cGUgbV9maWx0ZXJFZmZlY3RDbGFzc1R5cGU7CiB9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFw
aGljLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9Tb3VyY2VHcmFwaGljLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNiw3ICszNiw3IEBAIHByaXZhdGU6CiAgICAgU291cmNlR3JhcGhpYyhGaWx0ZXImIGZp
bHRlcikKICAgICAgICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCBUeXBlOjpTb3VyY2VHcmFwaGlj
KQogICAgIHsKLSAgICAgICAgc2V0T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IpOworICAgICAgICBzZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpKTsKICAgICB9CiAKICAgICBjb25zdCBjaGFyKiBmaWx0ZXJOYW1l
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlNvdXJjZUdyYXBoaWMiOyB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVl
bkd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDA2IE1pY2hhZWwgRW1tZWwgbWlrZS5lbW1lbEBnbWFpbC5jb20KICAqIENvcHly
aWdodCAoQykgMjAwOCBDaHJpc3RpYW4gRHl3YW4gPGNocmlzdGlhbkBpbWVuZGlvLmNvbT4KICAq
IENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLgpAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAKKyNpbmNsdWRl
ICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNs
dWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJHdGtVdGlsaXRpZXMuaCIKQEAgLTg1LDYgKzg2
LDExIEBAIGJvb2wgc2NyZWVuSXNNb25vY2hyb21lKFdpZGdldCogd2lkZ2V0KQogICAgIHJldHVy
biBzY3JlZW5EZXB0aCh3aWRnZXQpIDwgMjsKIH0KIAorRGVzdGluYXRpb25Db2xvclNwYWNlIHNj
cmVlbkNvbG9yU3BhY2UoV2lkZ2V0KikKK3sKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCk7Cit9CisKIGJvb2wgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMoKQogewogICAg
IHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9y
bVNjcmVlbklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGxhdGZvcm1TY3JlZW5JT1MubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNjcmVlbklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMTQgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIxIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTg4LDkgKzg4LDkgQEAgYm9vbCBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UoV2lkZwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotQ0dDb2xvclNwYWNlUmVmIHNjcmVlbkNvbG9yU3BhY2Uo
V2lkZ2V0KiB3aWRnZXQpCitEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc2NyZWVuQ29sb3JTcGFjZShX
aWRnZXQqIHdpZGdldCkKIHsKLSAgICByZXR1cm4gc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9y
KHdpZGdldCkgPyBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCkgOiBzUkdCQ29sb3JTcGFjZVJl
ZigpOworICAgIHJldHVybiBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3Iod2lkZ2V0KSA/IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSB7IGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKSB9IDogRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiB9CiAKIC8vIFRoZXNlIGZ1bmN0aW9ucyBzY2Fs
ZSBiZXR3ZWVuIHNjcmVlbiBhbmQgcGFnZSBjb29yZGluYXRlcyBiZWNhdXNlIEphdmFTY3JpcHQv
RE9NIG9wZXJhdGlvbnMKQEAgLTE5MywxNiArMTkzLDE0IEBAIFNjcmVlblByb3BlcnRpZXMgY29s
bGVjdFNjcmVlblByb3BlcnRpZXMKICAgICAgICAgRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJl
Y3QgPSBzY3JlZW4uYm91bmRzOwogICAgICAgICBzY3JlZW5BdmFpbGFibGVSZWN0LnNldFkoTlNN
YXhZKHNjcmVlbi5ib3VuZHMpIC0gKHNjcmVlbkF2YWlsYWJsZVJlY3QueSgpICsgc2NyZWVuQXZh
aWxhYmxlUmVjdC5oZWlnaHQoKSkpOyAvLyBmbGlwCiAgICAgICAgIEZsb2F0UmVjdCBzY3JlZW5S
ZWN0ID0gc2NyZWVuLl9yZWZlcmVuY2VCb3VuZHM7Ci0gICAgICAgIAotICAgICAgICBSZXRhaW5Q
dHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNlID0gc2NyZWVuQ29sb3JTcGFjZShudWxscHRy
KTsKLSAgICAgICAgCisgICAgICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlIHsg
c2NyZWVuQ29sb3JTcGFjZShudWxscHRyKSB9OwogICAgICAgICBpbnQgc2NyZWVuRGVwdGggPSBX
ZWJDb3JlOjpzY3JlZW5EZXB0aChudWxscHRyKTsKICAgICAgICAgaW50IHNjcmVlbkRlcHRoUGVy
Q29tcG9uZW50ID0gV2ViQ29yZTo6c2NyZWVuRGVwdGhQZXJDb21wb25lbnQobnVsbHB0cik7CiAg
ICAgICAgIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yID0gV2ViQ29yZTo6c2NyZWVu
U3VwcG9ydHNFeHRlbmRlZENvbG9yKG51bGxwdHIpOwogICAgICAgICBib29sIHNjcmVlbkhhc0lu
dmVydGVkQ29sb3JzID0gV2ViQ29yZTo6c2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMoKTsKICAgICAg
ICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBXZWJDb3JlOjpzY3JlZW5QUElGYWN0b3IoKTsKIAotICAg
ICAgICBzY3JlZW5Qcm9wZXJ0aWVzLnNjcmVlbkRhdGFNYXAuc2V0KCsrZGlzcGxheUlELCBTY3Jl
ZW5EYXRhIHsgc2NyZWVuQXZhaWxhYmxlUmVjdCwgc2NyZWVuUmVjdCwgY29sb3JTcGFjZSwgc2Ny
ZWVuRGVwdGgsIHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50LCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVk
Q29sb3IsIHNjcmVlbkhhc0ludmVydGVkQ29sb3JzLCBmYWxzZSwgc2NhbGVGYWN0b3IgfSk7Cisg
ICAgICAgIHNjcmVlblByb3BlcnRpZXMuc2NyZWVuRGF0YU1hcC5zZXQoKytkaXNwbGF5SUQsIFNj
cmVlbkRhdGEgeyBzY3JlZW5BdmFpbGFibGVSZWN0LCBzY3JlZW5SZWN0LCBXVEZNb3ZlKGNvbG9y
U3BhY2UpLCBzY3JlZW5EZXB0aCwgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQsIHNjcmVlblN1cHBv
cnRzRXh0ZW5kZWRDb2xvciwgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMsIGZhbHNlLCBzY2FsZUZh
Y3RvciB9KTsKICAgICAgICAgCiAgICAgICAgIGlmIChzY3JlZW4gPT0gW1BBTDo6Z2V0VUlTY3Jl
ZW5DbGFzcygpIG1haW5TY3JlZW5dKQogICAgICAgICAgICAgc2NyZWVuUHJvcGVydGllcy5wcmlt
YXJ5RGlzcGxheUlEID0gZGlzcGxheUlEOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1hYy5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzAsOSArMTMwLDcgQEAgU2NyZWVuUHJvcGVydGllcyBjb2xsZWN0U2NyZWVuUHJv
cGVydGllcwogICAgICAgICBGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxlUmVjdCA9IHNjcmVlbi52
aXNpYmxlRnJhbWU7CiAgICAgICAgIHNjcmVlbkF2YWlsYWJsZVJlY3Quc2V0WShOU01heFkoc2Ny
ZWVuLmZyYW1lKSAtIChzY3JlZW5BdmFpbGFibGVSZWN0LnkoKSArIHNjcmVlbkF2YWlsYWJsZVJl
Y3QuaGVpZ2h0KCkpKTsgLy8gZmxpcAogICAgICAgICBGbG9hdFJlY3Qgc2NyZWVuUmVjdCA9IHNj
cmVlbi5mcmFtZTsKLQotICAgICAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNw
YWNlID0gc2NyZWVuLmNvbG9yU3BhY2UuQ0dDb2xvclNwYWNlOwotCisgICAgICAgIERlc3RpbmF0
aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlIHsgc2NyZWVuLmNvbG9yU3BhY2UuQ0dDb2xvclNwYWNl
IH07CiAgICAgICAgIGludCBzY3JlZW5EZXB0aCA9IE5TQml0c1BlclBpeGVsRnJvbURlcHRoKHNj
cmVlbi5kZXB0aCk7CiAgICAgICAgIGludCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCA9IE5TQml0
c1BlclNhbXBsZUZyb21EZXB0aChzY3JlZW4uZGVwdGgpOwogICAgICAgICBib29sIHNjcmVlblN1
cHBvcnRzRXh0ZW5kZWRDb2xvciA9IFtzY3JlZW4gY2FuUmVwcmVzZW50RGlzcGxheUdhbXV0Ok5T
RGlzcGxheUdhbXV0UDNdOwpAQCAtMTYzLDcgKzE2MSw3IEBAIFNjcmVlblByb3BlcnRpZXMgY29s
bGVjdFNjcmVlblByb3BlcnRpZXMKICAgICAgICAgaWYgKGRpc3BsYXlNYXNrKQogICAgICAgICAg
ICAgZ3B1SUQgPSBncHVJREZvckRpc3BsYXlNYXNrKGRpc3BsYXlNYXNrKTsKIAotICAgICAgICBz
Y3JlZW5Qcm9wZXJ0aWVzLnNjcmVlbkRhdGFNYXAuc2V0KGRpc3BsYXlJRCwgU2NyZWVuRGF0YSB7
IHNjcmVlbkF2YWlsYWJsZVJlY3QsIHNjcmVlblJlY3QsIGNvbG9yU3BhY2UsIHNjcmVlbkRlcHRo
LCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yLCBz
Y3JlZW5IYXNJbnZlcnRlZENvbG9ycywgc2NyZWVuU3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlLCBz
Y3JlZW5Jc01vbm9jaHJvbWUsIGRpc3BsYXlNYXNrLCBncHVJRCwgZHluYW1pY1JhbmdlTW9kZSwg
c2NhbGVGYWN0b3IgfSk7CisgICAgICAgIHNjcmVlblByb3BlcnRpZXMuc2NyZWVuRGF0YU1hcC5z
ZXQoZGlzcGxheUlELCBTY3JlZW5EYXRhIHsgc2NyZWVuQXZhaWxhYmxlUmVjdCwgc2NyZWVuUmVj
dCwgV1RGTW92ZShjb2xvclNwYWNlKSwgc2NyZWVuRGVwdGgsIHNjcmVlbkRlcHRoUGVyQ29tcG9u
ZW50LCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IsIHNjcmVlbkhhc0ludmVydGVkQ29sb3Jz
LCBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UsIHNjcmVlbklzTW9ub2Nocm9tZSwgZGlz
cGxheU1hc2ssIGdwdUlELCBkeW5hbWljUmFuZ2VNb2RlLCBzY2FsZUZhY3RvciB9KTsKIAogICAg
ICAgICBpZiAoIXNjcmVlblByb3BlcnRpZXMucHJpbWFyeURpc3BsYXlJRCkKICAgICAgICAgICAg
IHNjcmVlblByb3BlcnRpZXMucHJpbWFyeURpc3BsYXlJRCA9IGRpc3BsYXlJRDsKQEAgLTM0MCwx
MyArMzM4LDEzIEBAIE5TU2NyZWVuICpzY3JlZW4oUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGwKICAg
ICByZXR1cm4gZmlyc3RTY3JlZW4oKTsKIH0KIAotQ0dDb2xvclNwYWNlUmVmIHNjcmVlbkNvbG9y
U3BhY2UoV2lkZ2V0KiB3aWRnZXQpCitEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc2NyZWVuQ29sb3JT
cGFjZShXaWRnZXQqIHdpZGdldCkKIHsKICAgICBpZiAoYXV0byBkYXRhID0gc2NyZWVuUHJvcGVy
dGllcyh3aWRnZXQpKQotICAgICAgICByZXR1cm4gZGF0YS0+Y29sb3JTcGFjZS5nZXQoKTsKKyAg
ICAgICAgcmV0dXJuIGRhdGEtPmNvbG9yU3BhY2U7CiAKICAgICBBU1NFUlQoaGFzUHJvY2Vzc1By
aXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5Db21tdW5pY2F0ZVdpdGhXaW5kb3dTZXJ2ZXIp
KTsKLSAgICByZXR1cm4gc2NyZWVuKHdpZGdldCkuY29sb3JTcGFjZS5DR0NvbG9yU3BhY2U7Cisg
ICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB7IHNjcmVlbih3aWRnZXQpLmNvbG9yU3Bh
Y2UuQ0dDb2xvclNwYWNlIH07CiB9CiAKIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9y
KFdpZGdldCogd2lkZ2V0KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1l
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1h
Yy5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Ro
ZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03MjYsNyArNzI2LDcgQEAgYm9vbCBUaGVtZU1h
Yzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaQogCiAgICAgaWYgKHVzZUltYWdlQnVmZmVyKSB7
CiAgICAgICAgIE5TUmVjdCBpbWFnZUJ1ZmZlckRyYXdSZWN0ID0gTlNSZWN0KEZsb2F0UmVjdChi
dXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwg
cmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKSk7Ci0gICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihyZWN0LnNpemUoKSArIDIgKiBG
bG9hdFNpemUoYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRs
aW5lV2lkdGgpLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
LCBjb250ZXh0KTsKKyAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVh
dGVDb21wYXRpYmxlQnVmZmVyKHJlY3Quc2l6ZSgpICsgMiAqIEZsb2F0U2l6ZShidXR0b25Gb2N1
c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCksIGRldmljZVNj
YWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY29udGV4dCk7CiAgICAg
ICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gbmVlZHNSZXBhaW50Owog
ICAgICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
U2NyZWVuRGlzcGxheUNhcHR1cmVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZXJNYWMubW0JKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9TY3JlZW5EaXNwbGF5Q2FwdHVyZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMyw2ICsx
MzMsNyBAQCBib29sIFNjcmVlbkRpc3BsYXlDYXB0dXJlck1hYzo6Y3JlYXRlRGlzCiAgICAgICAg
IGlmICghbV9jYXB0dXJlUXVldWUpCiAgICAgICAgICAgICBtX2NhcHR1cmVRdWV1ZSA9IGFkb3B0
T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJTY3JlZW5EaXNwbGF5Q2FwdHVyZXJNYWMg
Q2FwdHVyZSBRdWV1ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCkpOwogCisgICAgICAgIC8vIEZJ
WE1FOiBXaHkgaXMgdGhpcyB1c2luZyBoYXJkY29kZWQgc1JHQj8KICAgICAgICAgTlNEaWN0aW9u
YXJ5KiBzdHJlYW1PcHRpb25zID0gQHsKICAgICAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAq
KWtDR0Rpc3BsYXlTdHJlYW1NaW5pbXVtRnJhbWVUaW1lIDogQCgxIC8gZnJhbWVSYXRlKSwKICAg
ICAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDR0Rpc3BsYXlTdHJlYW1RdWV1ZURlcHRo
IDogQChzY3JlZW5RdWV1ZU1heGltdW1MZW5ndGgpLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTQsNyArNDU0LDcgQEAgSW1h
Z2VCdWZmZXIqIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjppbQogICAgIGlmIChtX2ltYWdlQnVm
ZmVyKQogICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsKIAotICAgIG1faW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNhcHR1cmVTaXplKCksIFJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKKyAgICBtX2ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjYXB0
dXJlU2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIW1faW1hZ2VC
dWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9wbGF5c3RhdGlvbi9QbGF0Zm9ybVNjcmVlblBsYXlTdGF0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wbGF5c3RhdGlvbi9QbGF0Zm9ybVNjcmVl
blBsYXlTdGF0aW9uLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcGxheXN0YXRpb24vUGxhdGZvcm1TY3JlZW5QbGF5U3RhdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVNjcmVlbi5oIgogCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAj
aW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKIApAQCAt
NzEsNCArNzIsOSBAQCBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcihXaWRnZXQqCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCitEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc2NyZWVuQ29sb3JT
cGFjZShXaWRnZXQqKQoreworICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1BsYXRmb3JtU2NyZWVuV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vUGxhdGZvcm1TY3JlZW5XaW4uY3BwCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGxhdGZvcm1TY3JlZW5XaW4uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKIAorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFj
ZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVk
ZSAiRnJhbWVWaWV3LmgiCkBAIC0xMDQsMTIgKzEwNSwxMCBAQCBGbG9hdFJlY3Qgc2NyZWVuQXZh
aWxhYmxlUmVjdChXaWRnZXQqIHdpCiAgICAgcmV0dXJuIG1vbml0b3JJbmZvLnJjV29yazsKIH0K
IAotI2lmIFVTRShDRykKLUNHQ29sb3JTcGFjZVJlZiBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCop
CitEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqKQogewotICAg
IHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOworICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKTsKIH0KLSNlbmRpZgogCiBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRD
b2xvcihXaWRnZXQqKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3BlL1BsYXRm
b3JtU2NyZWVuV1BFLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
cGUvUGxhdGZvcm1TY3JlZW5XUEUuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93cGUvUGxhdGZvcm1TY3JlZW5XUEUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1T
Y3JlZW4uaCIKIAorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUg
IkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiV2lk
Z2V0LmgiCkBAIC04MSw2ICs4MiwxMSBAQCBGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxlUmVjdChX
aWRnZXQqIHdpCiAgICAgcmV0dXJuIHNjcmVlblJlY3Qod2lkZ2V0KTsKIH0KIAorRGVzdGluYXRp
b25Db2xvclNwYWNlIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KikKK3sKKyAgICByZXR1cm4gRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7Cit9CisKIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRl
bmRlZENvbG9yKFdpZGdldCopCiB7CiAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw2
ICsxOSw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZsb2F0UG9pbnQzRC5oIgorI2lu
Y2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXNH
TC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCkBAIC0zMiw3
ICszMyw2IEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09B
KQotI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JTcGFjZUNHLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9J
T1N1cmZhY2UuaD4KICNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgogI2VuZGlmCkBAIC00
NDYsNyArNDQ2LDcgQEAgT3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YT4gRAog
ICAgIFdURjo6TWFjaFNlbmRSaWdodCBzdXJmYWNlU2VuZFJpZ2h0OwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoc3VyZmFjZVNlbmRSaWdodCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0gICAgbGF5ZXJEYXRhLnN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21T
ZW5kUmlnaHQoV1RGTW92ZShzdXJmYWNlU2VuZFJpZ2h0KSwgV2ViQ29yZTo6c1JHQkNvbG9yU3Bh
Y2VSZWYoKSk7CisgICAgbGF5ZXJEYXRhLnN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNy
ZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShzdXJmYWNlU2VuZFJpZ2h0KSwgV2ViQ29yZTo6RGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogI2VuZGlmCiAgICAgcmV0dXJuIGxheWVyRGF0
YTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTExLDkgKzExMSw5IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IENTU0Zp
bHRlcjo6YnVpbGRSZWYKICAgICAgICAgZWZmZWN0RWxlbWVudC5zZXRTdGFuZGFyZEF0dHJpYnV0
ZXMoZWZmZWN0LmdldCgpKTsKICAgICAgICAgaWYgKGVmZmVjdEVsZW1lbnQucmVuZGVyZXIoKSkg
ewogI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICAg
ICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShlZmZlY3RFbGVtZW50LnJlbmRl
cmVyKCktPnN0eWxlKCkuc3ZnU3R5bGUoKS5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzKCkgPT0g
Q29sb3JJbnRlcnBvbGF0aW9uOjpMaW5lYXJSR0IgPyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6Okxp
bmVhclNSR0IgOiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOworICAgICAgICAgICAgZWZm
ZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKGVmZmVjdEVsZW1lbnQucmVuZGVyZXIoKS0+c3R5
bGUoKS5zdmdTdHlsZSgpLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSA9PSBDb2xvckludGVy
cG9sYXRpb246OkxpbmVhclJHQiA/IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigp
IDogRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogI2Vsc2UKLSAgICAgICAgICAgIGVm
ZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Ip
OworICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpKTsKICNlbmRpZgogICAgICAgICB9CiAgICAgICAgIGJ1aWxkZXIt
PmFkZChlZmZlY3RFbGVtZW50LnJlc3VsdCgpLCBlZmZlY3QpOwpAQCAtMjk2LDcgKzI5Niw3IEBA
IGJvb2wgQ1NTRmlsdGVyOjpidWlsZChSZW5kZXJFbGVtZW50JiByZW4KICAgICAgICAgICAgIC8v
IFVubGlrZSBTVkcgRmlsdGVycyBhbmQgQ1NTRmlsdGVySW1hZ2VzLCBmaWx0ZXIgZnVuY3Rpb25z
IG9uIHRoZSBmaWx0ZXIKICAgICAgICAgICAgIC8vIHByb3BlcnR5IGFwcGxpZWQgaGVyZSBzaG91
bGQgbm90IGNsaXAgdG8gdGhlaXIgcHJpbWl0aXZlIHN1YnJlZ2lvbnMuCiAgICAgICAgICAgICBl
ZmZlY3QtPnNldENsaXBzVG9Cb3VuZHMoY29uc3VtZXIgPT0gRmlsdGVyQ29uc3VtZXI6OkZpbHRl
ckZ1bmN0aW9uKTsKLSAgICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOworICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVy
YXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgaWYgKGZpbHRlck9wZXJhdGlvbi50eXBlKCkgIT0gRmlsdGVyT3Bl
cmF0aW9uOjpSRUZFUkVOQ0UpIHsKICAgICAgICAgICAgICAgICBlZmZlY3QtPmlucHV0RWZmZWN0
cygpID0geyBXVEZNb3ZlKHByZXZpb3VzRWZmZWN0KSB9OwpAQCAtMzQ0LDExICszNDQsMTEgQEAg
dm9pZCBDU1NGaWx0ZXI6OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZQogICAgIEludFNpemUgbG9n
aWNhbFNpemUgeyBtX3NvdXJjZURyYXdpbmdSZWdpb24uc2l6ZSgpIH07CiAgICAgaWYgKCFzb3Vy
Y2VJbWFnZSgpIHx8IHNvdXJjZUltYWdlKCktPmxvZ2ljYWxTaXplKCkgIT0gbG9naWNhbFNpemUp
IHsKICNpZiBVU0UoRElSRUNUMkQpCi0gICAgICAgIHNldFNvdXJjZUltYWdlKEltYWdlQnVmZmVy
OjpjcmVhdGUobG9naWNhbFNpemUsIHJlbmRlcmluZ01vZGUoKSwgJnRhcmdldENvbnRleHQsIGZp
bHRlclNjYWxlKCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJH
UkE4KSk7CisgICAgICAgIHNldFNvdXJjZUltYWdlKEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNh
bFNpemUsIHJlbmRlcmluZ01vZGUoKSwgJnRhcmdldENvbnRleHQsIGZpbHRlclNjYWxlKCksIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpKTsKICNlbHNl
CiAgICAgICAgIFVOVVNFRF9QQVJBTSh0YXJnZXRDb250ZXh0KTsKICAgICAgICAgUmVuZGVyaW5n
TW9kZSBtb2RlID0gbV9maWx0ZXJSZW5kZXJlciA/IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVk
IDogcmVuZGVyaW5nTW9kZSgpOwotICAgICAgICBzZXRTb3VyY2VJbWFnZShJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKGxvZ2ljYWxTaXplLCBtb2RlLCBmaWx0ZXJTY2FsZSgpLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCkpOworICAgICAgICBzZXRTb3VyY2VJbWFn
ZShJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBtb2RlLCBmaWx0ZXJTY2FsZSgpLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CiAjZW5k
aWYKICAgICB9CiAgICAgbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkID0gdHJ1ZTsKQEAgLTM4Miwx
MiArMzgyLDEyIEBAIHZvaWQgQ1NTRmlsdGVyOjphcHBseSgpCiAgICAgaWYgKG1fZmlsdGVyUmVu
ZGVyZXIpIHsKICAgICAgICAgbV9maWx0ZXJSZW5kZXJlci0+YXBwbHlFZmZlY3RzKGVmZmVjdCk7
CiAgICAgICAgIGlmIChtX2ZpbHRlclJlbmRlcmVyLT5oYXNSZXN1bHQoKSkgewotICAgICAgICAg
ICAgZWZmZWN0LnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKTsKKyAgICAgICAgICAgIGVmZmVjdC50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgIH0KICAgICBlZmZlY3QuYXBwbHkoKTsKLSAgICBlZmZlY3QudHJhbnNmb3JtUmVz
dWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOworICAgIGVmZmVjdC50
cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsK
IH0KIAogTGF5b3V0UmVjdCBDU1NGaWx0ZXI6OmNvbXB1dGVTb3VyY2VJbWFnZVJlY3RGb3JEaXJ0
eVJlY3QoY29uc3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYg
ZGlydHlSZWN0KQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzYs
NyArODc2LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZQogICAg
ICAgICBtYXNrUmVjdC5pbnRlcnNlY3Qoc25hcHBlZEludFJlY3QocGFpbnRJbmZvLnJlY3QpKTsK
IAogICAgICAgICAvLyBOb3cgY3JlYXRlIHRoZSBtYXNrLgotICAgICAgICBtYXNrSW1hZ2UgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihtYXNrUmVjdC5zaXplKCksIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgY29udGV4dCk7CisgICAgICAgIG1hc2tJbWFnZSA9IElt
YWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNpemUoKSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNvbnRleHQpOwogICAgICAgICBpZiAoIW1hc2tJbWFn
ZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgcGFpbnRNYXNrRm9yVGV4dEZpbGxCb3go
bWFza0ltYWdlLmdldCgpLCBtYXNrUmVjdCwgYm94LCBzY3JvbGxlZFBhaW50UmVjdCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNjcsNyArMzI2Nyw3IEBAIHN0YXRpYyBS
ZWZQdHI8UGF0dGVybj4gcGF0dGVybkZvckRlc2NyaXAKIHsKICAgICBjb25zdCBGbG9hdFNpemUg
dGlsZVNpemUgeyAzMiwgMTggfTsKIAotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcih0aWxlU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCLCBkZXN0Q29udGV4dCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHRpbGVTaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgZGVzdENvbnRleHQpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5ODMsMTEgKzE5ODMsMTEgQEAg
dm9pZCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRTeXN0ZW1QcmV2aWV3QgogICAgIElPU3VyZmFjZVJl
ZiBzdXJmYWNlOwogICAgIGlmICh1c2VTbWFsbEJhZGdlKSB7CiAgICAgICAgIGlmICghbV9zbWFs
bEJhZGdlU3VyZmFjZSkKLSAgICAgICAgICAgIG1fc21hbGxCYWRnZVN1cmZhY2UgPSBJT1N1cmZh
Y2U6OmNyZWF0ZSh7IHNtYWxsQmFkZ2VEaW1lbnNpb24sIHNtYWxsQmFkZ2VEaW1lbnNpb24gfSwg
c1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgICAgICAgICBtX3NtYWxsQmFkZ2VTdXJmYWNlID0g
SU9TdXJmYWNlOjpjcmVhdGUoeyBzbWFsbEJhZGdlRGltZW5zaW9uLCBzbWFsbEJhZGdlRGltZW5z
aW9uIH0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICAgICAgc3VyZmFjZSA9
IG1fc21hbGxCYWRnZVN1cmZhY2UtPnN1cmZhY2UoKTsKICAgICB9IGVsc2UgewogICAgICAgICBp
ZiAoIW1fbGFyZ2VCYWRnZVN1cmZhY2UpCi0gICAgICAgICAgICBtX2xhcmdlQmFkZ2VTdXJmYWNl
ID0gSU9TdXJmYWNlOjpjcmVhdGUoeyBsYXJnZUJhZGdlRGltZW5zaW9uLCBsYXJnZUJhZGdlRGlt
ZW5zaW9uIH0sIHNSR0JDb2xvclNwYWNlUmVmKCkpOworICAgICAgICAgICAgbV9sYXJnZUJhZGdl
U3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKHsgbGFyZ2VCYWRnZURpbWVuc2lvbiwgbGFyZ2VC
YWRnZURpbWVuc2lvbiB9LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAg
IHN1cmZhY2UgPSBtX2xhcmdlQmFkZ2VTdXJmYWNlLT5zdXJmYWNlKCk7CiAgICAgfQogICAgIFtt
X2NpQ29udGV4dC5nZXQoKSByZW5kZXI6dHJhbnNsYXRlZEltYWdlIHRvSU9TdXJmYWNlOnN1cmZh
Y2UgYm91bmRzOmJhZGdlUmVjdCBjb2xvclNwYWNlOnNSR0JDb2xvclNwYWNlUmVmKCldOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzA5LDcgKzEzMDksNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpw
YWludFByb2dyZXNzQmFyKGNvCiAgICAgY29uc3QgYXV0byYgcmVuZGVyUHJvZ3Jlc3MgPSBkb3du
Y2FzdDxSZW5kZXJQcm9ncmVzcz4ocmVuZGVyT2JqZWN0KTsKICAgICBmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3RvciA9IHJlbmRlck9iamVjdC5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCk7CiAg
ICAgYm9vbCBpc0luZGV0ZXJtaW5hdGUgPSByZW5kZXJQcm9ncmVzcy5wb3NpdGlvbigpIDwgMDsK
LSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZm
ZXIoaW5mbGF0ZWRSZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQiwgcGFpbnRJbmZvLmNvbnRleHQoKSk7CisgICAgYXV0byBpbWFnZUJ1ZmZl
ciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGluZmxhdGVkUmVjdC5zaXpl
KCksIGRldmljZVNjYWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgcGFp
bnRJbmZvLmNvbnRleHQoKSk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3Bw
CShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1No
YXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDcgKzE4MSw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVJhc3QKICAgICBJbnRSZWN0IG1hcmdpblJlY3QgPSBzbmFw
cGVkSW50UmVjdChtYXJnaW5SKTsKICAgICBhdXRvIGludGVydmFscyA9IG1ha2VVbmlxdWU8UmFz
dGVyU2hhcGVJbnRlcnZhbHM+KG1hcmdpblJlY3QuaGVpZ2h0KCksIC1tYXJnaW5SZWN0LnkoKSk7
CiAgICAgLy8gRklYTUUgKDE0OTQyMCk6IFRoaXMgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25k
aXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQuCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwor
ICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXpl
KCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogCiAgICAgYXV0byBjcmVhdGVTaGFwZSA9
IFsmXSgpIHsKICAgICAgICAgYXV0byByYXN0ZXJTaGFwZSA9IG1ha2VVbmlxdWU8UmFzdGVyU2hh
cGU+KFdURk1vdmUoaW50ZXJ2YWxzKSwgbWFyZ2luUmVjdC5zaXplKCkpOwpAQCAtMTk3LDcgKzE5
Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVJhc3QKICAgICBpZiAo
aW1hZ2UpCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBJbnRSZWN0
KEludFBvaW50KCksIGltYWdlUmVjdC5zaXplKCkpKTsKIAotICAgIFBpeGVsQnVmZmVyRm9ybWF0
IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxG
b3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICBQaXhlbEJ1
ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxp
ZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsK
ICAgICBhdXRvIHBpeGVsQnVmZmVyID0gaW1hZ2VCdWZmZXItPmdldFBpeGVsQnVmZmVyKGZvcm1h
dCwgeyBJbnRQb2ludCgpLCBpbWFnZVJlY3Quc2l6ZSgpIH0pOwogICAgIAogICAgIC8vIFdlIGNv
dWxkIGdldCB0byBhIHZhbHVlIHdoZXJlIFBpeGVsQnVmZmVyIGNvdWxkIGJlIG51bGxvcHQuIEEg
Y2FzZSB3aGVyZSBJbWFnZVJlY3Quc2l6ZSgpIGlzIGh1Z2UsIFBpeGVsQnVmZmVyOjp0cnlDcmVh
dGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VD
bGlwcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ2LDcgKzE0Niw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVy
OjphcHBseUNsaXAKICAgICBBZmZpbmVUcmFuc2Zvcm0gYWJzb2x1dGVUcmFuc2Zvcm0gPSBTVkdS
ZW5kZXJpbmdDb250ZXh0OjpjYWxjdWxhdGVUcmFuc2Zvcm1hdGlvblRvT3V0ZXJtb3N0Q29vcmRp
bmF0ZVN5c3RlbShyZW5kZXJlcik7CiAgICAgaWYgKCFjbGlwcGVyRGF0YS5pc1ZhbGlkRm9yR2Vv
bWV0cnkob2JqZWN0Qm91bmRpbmdCb3gsIGFic29sdXRlVHJhbnNmb3JtKSkgewogICAgICAgICAv
LyBGSVhNRSAoMTQ5NDY5KTogVGhpcyBpbWFnZSBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRp
dGlvbmFsbHkgdW5hY2NlbGVyYXRlZC4gTWFraW5nIGl0IG1hdGNoIHRoZSBjb250ZXh0IGJyZWFr
cyBuZXN0ZWQgY2xpcHBpbmcsIHRob3VnaC4KLSAgICAgICAgYXV0byBtYXNrSW1hZ2UgPSBTVkdS
ZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihvYmplY3RCb3VuZGluZ0JveCwgYWJz
b2x1dGVUcmFuc2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgJmNvbnRleHQpOworICAgICAgICBhdXRvIG1hc2tJbWFnZSA9IFNW
R1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKG9iamVjdEJvdW5kaW5nQm94LCBh
YnNvbHV0ZVRyYW5zZm9ybSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsICZjb250ZXh0KTsKICAgICAgICAgaWYgKCFtYXNrSW1hZ2Up
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlRmlsdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDkgKzEwNCw5IEBAIHN0ZDo6
dW5pcXVlX3B0cjxTVkdGaWx0ZXJCdWlsZGVyPiBSZW5kZXIKICAgICAgICAgZWZmZWN0LT5zZXRF
ZmZlY3RCb3VuZGFyaWVzKFNWR0xlbmd0aENvbnRleHQ6OnJlc29sdmVSZWN0YW5nbGU8U1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPigmZWxlbWVudCwgZmlsdGVyRWxlbWVudCgp
LnByaW1pdGl2ZVVuaXRzKCksIHRhcmdldEJvdW5kaW5nQm94KSk7CiAgICAgICAgIGlmIChlbGVt
ZW50LnJlbmRlcmVyKCkpIHsKICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElO
RUFSX1NSR0IpCi0gICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoZWxl
bWVudC5yZW5kZXJlcigpLT5zdHlsZSgpLnN2Z1N0eWxlKCkuY29sb3JJbnRlcnBvbGF0aW9uRmls
dGVycygpID09IENvbG9ySW50ZXJwb2xhdGlvbjo6TGluZWFyUkdCID8gRGVzdGluYXRpb25Db2xv
clNwYWNlOjpMaW5lYXJTUkdCIDogRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKKyAgICAg
ICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShlbGVtZW50LnJlbmRlcmVyKCkt
PnN0eWxlKCkuc3ZnU3R5bGUoKS5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzKCkgPT0gQ29sb3JJ
bnRlcnBvbGF0aW9uOjpMaW5lYXJSR0IgPyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNS
R0IoKSA6IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICNlbHNlCi0gICAgICAgICAg
ICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKTsKKyAgICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAjZW5kaWYKICAgICAgICAgfQogICAgICAgICBidWls
ZGVyLT5hZGQoZWxlbWVudC5yZXN1bHQoKSwgV1RGTW92ZShlZmZlY3QpKTsKQEAgLTE5OCw5ICsx
OTgsOSBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291CiAKICAgICBh
dXRvIHJlbmRlcmluZ01vZGUgPSByZW5kZXJlci5zZXR0aW5ncygpLmFjY2VsZXJhdGVkRmlsdGVy
c0VuYWJsZWQoKSA/IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIDogUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZDsKICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFS
X1NSR0IpCi0gICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5l
YXJTUkdCOworICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGlu
ZWFyU1JHQigpOwogI2Vsc2UKLSAgICBhdXRvIGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0I7CisgICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCk7CiAjZW5kaWYKICAgICBhdXRvIHNvdXJjZUdyYXBoaWMgPSBTVkdSZW5kZXJpbmdD
b250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihmaWx0ZXJEYXRhLT5kcmF3aW5nUmVnaW9uLCBlZmZl
Y3RpdmVUcmFuc2Zvcm0sIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUsIGNvbnRleHQpOwogICAg
IGlmICghc291cmNlR3JhcGhpYykgewpAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVIKICAgICAgICAgICAgIGZpbHRlckRhdGEuc3RhdGUg
PSBGaWx0ZXJEYXRhOjpBcHBseWluZzsKICAgICAgICAgICAgIGxhc3RFZmZlY3QtPmFwcGx5KCk7
CiAgICAgICAgICAgICBsYXN0RWZmZWN0LT5jb3JyZWN0RmlsdGVyUmVzdWx0SWZOZWVkZWQoKTsK
LSAgICAgICAgICAgIGxhc3RFZmZlY3QtPnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKTsKKyAgICAgICAgICAgIGxhc3RFZmZlY3QtPnRyYW5zZm9y
bVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgICAg
ICB9CiAgICAgICAgIGZpbHRlckRhdGEuc3RhdGUgPSBGaWx0ZXJEYXRhOjpCdWlsdDsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlR3JhZGllbnQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjcmVhdGVNYXNrQW5kU3dh
cENvbnQKICAgICBBZmZpbmVUcmFuc2Zvcm0gYWJzb2x1dGVUcmFuc2Zvcm0gPSBTVkdSZW5kZXJp
bmdDb250ZXh0OjpjYWxjdWxhdGVUcmFuc2Zvcm1hdGlvblRvT3V0ZXJtb3N0Q29vcmRpbmF0ZVN5
c3RlbSgqdGV4dFJvb3RCbG9jayk7CiAgICAgRmxvYXRSZWN0IHJlcGFpbnRSZWN0ID0gdGV4dFJv
b3RCbG9jay0+cmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKTsKIAotICAgIGF1dG8gbWFz
a0ltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIocmVwYWludFJl
Y3QsIGFic29sdXRlVHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGNvbnRl
eHQtPnJlbmRlcmluZ01vZGUoKSk7CisgICAgYXV0byBtYXNrSW1hZ2UgPSBTVkdSZW5kZXJpbmdD
b250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihyZXBhaW50UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0s
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBjb250ZXh0LT5yZW5kZXJpbmdNb2RlKCkp
OwogICAgIGlmICghbWFza0ltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VNYXNrZXIuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEs
OSArNzEsOSBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBseVJlc291CiAgICAg
ICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IHN0eWxlKCkuc3ZnU3R5bGUoKTsK
IAogI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICAg
ICAgYXV0byBjb2xvclNwYWNlID0gc3ZnU3R5bGUuY29sb3JJbnRlcnBvbGF0aW9uKCkgPT0gQ29s
b3JJbnRlcnBvbGF0aW9uOjpMaW5lYXJSR0IgPyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVh
clNSR0IgOiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I7CisgICAgICAgIGF1dG8gY29sb3JT
cGFjZSA9IHN2Z1N0eWxlLmNvbG9ySW50ZXJwb2xhdGlvbigpID09IENvbG9ySW50ZXJwb2xhdGlv
bjo6TGluZWFyUkdCID8gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCkgOiBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKICNlbHNlCi0gICAgICAgIGF1dG8gY29sb3JTcGFj
ZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjsKKyAgICAgICAgYXV0byBjb2xvclNwYWNl
ID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiAjZW5kaWYKIAogICAgICAgICAvLyBG
SVhNRSAoMTQ5NDcwKTogVGhpcyBpbWFnZSBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlv
bmFsbHkgdW5hY2NlbGVyYXRlZC4gTWFraW5nIGl0IG1hdGNoIHRoZSBjb250ZXh0IGJyZWFrcyBh
bHBoYSBtYXNraW5nLCB0aG91Z2guCkBAIC05Miw3ICs5Miw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVz
b3VyY2VNYXNrZXI6OmFwcGx5UmVzb3UKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBSZW5k
ZXJTVkdSZXNvdXJjZU1hc2tlcjo6ZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdlKE1hc2tlckRhdGEq
IG1hc2tlckRhdGEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW5kZXJPYmpl
Y3QqIG9iamVjdCkKK2Jvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250ZW50SW50
b01hc2tJbWFnZShNYXNrZXJEYXRhKiBtYXNrZXJEYXRhLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmIGNvbG9yU3BhY2UsIFJlbmRlck9iamVjdCogb2JqZWN0KQogewogICAgIEdyYXBoaWNz
Q29udGV4dCYgbWFza0ltYWdlQ29udGV4dCA9IG1hc2tlckRhdGEtPm1hc2tJbWFnZS0+Y29udGV4
dCgpOwogCkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6
ZHJhd0NvbnRlbgogICAgIH0KIAogI2lmICFVU0UoQ0cpCi0gICAgbWFza2VyRGF0YS0+bWFza0lt
YWdlLT50cmFuc2Zvcm1Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgY29s
b3JTcGFjZSk7CisgICAgbWFza2VyRGF0YS0+bWFza0ltYWdlLT50cmFuc2Zvcm1Db2xvclNwYWNl
KERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBjb2xvclNwYWNlKTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKGNvbG9yU3BhY2UpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlTWFza2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToK
IAogICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAi
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIiOyB9CiAKLSAgICBib29sIGRyYXdDb250ZW50SW50b01h
c2tJbWFnZShNYXNrZXJEYXRhKiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBSZW5kZXJPYmplY3Qq
KTsKKyAgICBib29sIGRyYXdDb250ZW50SW50b01hc2tJbWFnZShNYXNrZXJEYXRhKiwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiwgUmVuZGVyT2JqZWN0Kik7CiAgICAgdm9pZCBjYWxjdWxh
dGVNYXNrQ29udGVudFJlcGFpbnRSZWN0KCk7CiAKICAgICBGbG9hdFJlY3QgbV9tYXNrQ29udGVu
dEJvdW5kYXJpZXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlUGF0dGVybi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCShyZXZpc2lvbiAyNzc5MTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Myw3ICsyNTMsNyBAQCBib29sIFJlbmRlclNWR1Jlc291
cmNlUGF0dGVybjo6YnVpbGRUaWxlCiBSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbmRlclNWR1Jlc291
cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdlKGNvbnN0IFBhdHRlcm5BdHRyaWJ1dGVzJiBhdHRy
aWJ1dGVzLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVCb3VuZGFyaWVzLCBjb25zdCBGbG9hdFJlY3Qm
IGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdGlsZUltYWdl
VHJhbnNmb3JtLCBGbG9hdFJlY3QmIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBSZW5k
ZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUpIGNvbnN0CiB7CiAgICAgY2xhbXBlZEFic29sdXRlVGls
ZUJvdW5kYXJpZXMgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFJlY3QoYWJzb2x1dGVUaWxlQm91bmRh
cmllcyk7Ci0gICAgYXV0byB0aWxlSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJ
bWFnZUJ1ZmZlcihhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjbGFtcGVkQWJzb2x1dGVUaWxlQm91
bmRhcmllcywgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCByZW5kZXJpbmdNb2RlKTsKKyAg
ICBhdXRvIHRpbGVJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVy
KGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgcmVuZGVyaW5nTW9kZSk7CiAgICAgaWYgKCF0
aWxlSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5n
Q29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNiw3ICsyMzYsNyBAQCBBZmZpbmVUcmFu
c2Zvcm0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsCiAgICAgcmV0dXJuIGFic29sdXRlVHJhbnNm
b3JtOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0
ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJ
bWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29s
b3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQpCiB7CiAgICAgSW50UmVjdCBwYWludFJlY3QgPSBjYWxjdWxhdGVJbWFnZUJ1
ZmZlclJlY3QodGFyZ2V0UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0pOwogICAgIC8vIERvbid0IGNy
ZWF0ZSBlbXB0eSBJbWFnZUJ1ZmZlcnMuCkBAIC0yNjQsNyArMjY0LDcgQEAgUmVmUHRyPEltYWdl
QnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OgogICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0K
IAotUmVmUHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBl
ZFJlY3QsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJl
bmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxJbWFn
ZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxv
YXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRSZWN0LCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5n
TW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogewogICAgIEludFNpemUgY2xh
bXBlZFNpemUgPSByb3VuZGVkSW50U2l6ZShjbGFtcGVkUmVjdC5zaXplKCkpOwogICAgIEZsb2F0
U2l6ZSB1bmNsYW1wZWRTaXplID0gcm91bmRlZEludFNpemUodGFyZ2V0UmVjdC5zaXplKCkpOwpA
QCAtMzUwLDcgKzM1MCw3IEBAIGJvb2wgU1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRm9yZWdy
b3UKIAogICAgIC8vIENyZWF0ZSBhIG5ldyBidWZmZXIgYW5kIHBhaW50IHRoZSBmb3JlZ3JvdW5k
IGludG8gaXQuCiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikgewotICAgICAgICBpbWFnZUJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShib3Vu
ZGluZ0JveC5zaXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIG1fcGFpbnRJbmZv
LT5jb250ZXh0KCkpOworICAgICAgICBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShib3VuZGluZ0JveC5zaXplKCkpLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgbV9wYWludEluZm8tPmNvbnRleHQoKSk7CiAgICAg
ICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdD
b250ZXh0LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw4ICs2MCw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIHByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQoUmVuZGVyRWxlbWVu
dCYsIFBhaW50SW5mbyYsIE5lZWRzR3JhcGhpY3NDb250ZXh0U2F2ZSA9IERvbnRTYXZlR3JhcGhp
Y3NDb250ZXh0KTsKICAgICBib29sIGlzUmVuZGVyaW5nUHJlcGFyZWQoKSBjb25zdCB7IHJldHVy
biBtX3JlbmRlcmluZ0ZsYWdzICYgUmVuZGVyaW5nUHJlcGFyZWQ7IH0KIAotICAgIHN0YXRpYyBS
ZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFy
Z2V0UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0g
bnVsbHB0cik7Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRS
ZWN0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNz
Q29udGV4dCogPSBudWxscHRyKTsKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVh
dGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYs
IFJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKTsKKyAgICBz
dGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJl
Y3QmIHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZFJlY3QsIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCog
PSBudWxscHRyKTsKIAogICAgIHN0YXRpYyB2b2lkIHJlbmRlclN1YnRyZWVUb0NvbnRleHQoR3Jh
cGhpY3NDb250ZXh0JiwgUmVuZGVyRWxlbWVudCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwog
ICAgIHN0YXRpYyB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgdGFy
Z2V0UmVjdCwgUmVmUHRyPEltYWdlQnVmZmVyPiYsIGJvb2wgc2FmZVRvQ2xlYXIpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMTcsNyArMjE3LDcgQEAgUmVmUHRyPE5hdGl2ZUltYWdlPiBTVkdJbWFnZTo6bmF0
aXZlSW1hZwogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKHNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFpbWFnZUJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lk
IFNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHCiAgICAgRmxvYXRSZWN0IGltYWdl
QnVmZmVyU2l6ZSA9IHpvb21lZENvbnRhaW5lclJlY3Q7CiAgICAgaW1hZ2VCdWZmZXJTaXplLnNj
YWxlKGltYWdlQnVmZmVyU2NhbGUud2lkdGgoKSwgaW1hZ2VCdWZmZXJTY2FsZS5oZWlnaHQoKSk7
CiAKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVy
KGV4cGFuZGVkSW50U2l6ZShpbWFnZUJ1ZmZlclNpemUuc2l6ZSgpKSwgMSwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCLCBjb250ZXh0KTsKKyAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShpbWFnZUJ1ZmZlclNpemUu
c2l6ZSgpKSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNvbnRleHQpOwogICAg
IGlmICghYnVmZmVyKSAvLyBGYWlsZWQgdG8gYWxsb2NhdGUgYnVmZmVyLgogICAgICAgICByZXR1
cm47CiAgICAgZHJhd0ZvckNvbnRhaW5lcihidWZmZXItPmNvbnRleHQoKSwgY29udGFpbmVyU2l6
ZSwgY29udGFpbmVyWm9vbSwgaW5pdGlhbEZyYWdtZW50VVJMLCBpbWFnZUJ1ZmZlclNpemUsIHpv
b21lZENvbnRhaW5lclJlY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05Myw4ICs5Myw4IEBAIHZvaWQgRkVJbWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJl
KCkKICAgICBpZiAoIW1faW1hZ2UgJiYgIXJlbmRlcmVyKQogICAgICAgICByZXR1cm47CiAKLSAg
ICAvLyBGRUltYWdlIHJlc3VsdHMgYXJlIGFsd2F5cyBpbiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IKLSAgICBzZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
Qik7CisgICAgLy8gRkVJbWFnZSByZXN1bHRzIGFyZSBhbHdheXMgaW4gRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCkKKyAgICBzZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpKTsKIAogICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0ZUlt
YWdlQnVmZmVyUmVzdWx0KCk7CiAgICAgaWYgKCFyZXN1bHRJbWFnZSkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNzc5MjApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDg5IEBACisyMDIxLTA1LTIyICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxl
LmNvbT4KKworICAgICAgICBDb252ZXJ0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBmcm9tIGFuIGVu
dW0gdG8gY2xhc3Mgd3JhcHBpbmcgYSBwbGF0Zm9ybSBjb2xvciBzcGFjZSAoQ0dDb2xvclNwYWNl
UmVmIGZvciBDRyBwb3J0cywgZXRjLikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNjE0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtXSVBdCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyOjpj
cmVhdGUpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0
ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRlByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZG
UHJveHk6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBT
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZl
cik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjphcHBseUJhY2tp
bmdTdG9yZVRvTGF5ZXIpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb246OmVuY29kZSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbjo6
ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmg6CisgICAgICAgICog
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5oOgorICAgICAgICAqIFNoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OmNvbG9yU3BhY2UpOgorICAgICAgICAqIFNoYXJlZC9tYWMvQ29sb3JT
cGFjZURhdGEuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWQvbWFjL0NvbG9yU3BhY2VEYXRh
Lm1tOiBSZW1vdmVkLgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Rh
a2VWaWV3U25hcHNob3RdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zbmFwc2hvdFJlY3Q6aW50
b0ltYWdlT2ZXaWR0aDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjb2xvclNwYWNlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbToKKyAgICAgICAgKFdlYktpdDo6cmVjdXJz
aXZlbHlNYXBJT1N1cmZhY2VCYWNraW5nU3RvcmUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmg6
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbToKKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNvbG9yU3BhY2UpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbToKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5Ojpjb2xvclNwYWNlKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNo
YXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNvbmZpZ3VyYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwcmVwYXJlRm9yRGlzcGxh
eSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJm
YWNlQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVJbWFnZURlY29kZXJBVkYuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZURlY29k
ZXJBVkY6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9tZWRpYS9jb2NvYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRU
aW1lKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwaXhlbEJ1
ZmZlckZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpQREZQbHVnaW4pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlU2hhcmVhYmxlQml0bWFwKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToK
KyAgICAgICAgKFdlYktpdDo6Y29udmVydERyYWdJbWFnZVRvQml0bWFwKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2lu
Z0FyZWE6OnNldENvbG9yU3BhY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3
aW5nQXJlYS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNuYXBzaG90T3B0aW9uc1RvQml0bWFwQ29uZmlndXJh
dGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhOjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSk6CisgICAg
ICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRDb2xvclNwYWNl
KToKKwogMjAyMS0wNS0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2NhbCB2YXJpYWJsZXMKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjAzLDcgKzIwMyw2IEBAIFNo
YXJlZC9pb3MvV2ViVG91Y2hFdmVudElPUy5jcHAKIAogU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9j
ZXNzTWFjLm1tCiBTaGFyZWQvbWFjL0NvZGVTaWduaW5nLm1tCi1TaGFyZWQvbWFjL0NvbG9yU3Bh
Y2VEYXRhLm1tCiBTaGFyZWQvbWFjL0hhbmdEZXRlY3Rpb25EaXNhYmxlck1hYy5tbQogU2hhcmVk
L21hYy9OYXRpdmVXZWJHZXN0dXJlRXZlbnRNYWMubW0KIFNoYXJlZC9tYWMvTmF0aXZlV2ViS2V5
Ym9hcmRFdmVudE1hYy5tbQpJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFJlbW90ZUltYWdlQnVmZmVyIDogcHVi
bGljIFdlYkNvcmUKICAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6cHV0UGl4ZWxC
dWZmZXI7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0
aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1h
dCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCwgV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cikKKyAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXpl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgY29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQsIFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAg
ewogICAgICAgICByZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnRlbXBsYXRlIGNyZWF0
ZTxSZW1vdGVJbWFnZUJ1ZmZlcj4oc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBw
aXhlbEZvcm1hdCwgbnVsbHB0ciwgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCwgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCShy
ZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw3ICsxNTIsNyBA
QCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZEZsdXNoKERpCiAgICAgc2VuZChNZXNz
YWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpEaWRGbHVzaChmbHVzaElkZW50aWZp
ZXIsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50
aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5n
TW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFJlbmRl
cmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VSVChyZW5kZXJpbmdN
b2RlID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIHx8IHJlbmRlcmluZ01vZGUgPT0gUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDE0ICs0NCwxOCBAQAog
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKwogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIGNsYXNz
IERpc3BsYXlMaXN0OwogY2xhc3MgSXRlbTsKIH0KKworY2xhc3MgRGVzdGluYXRpb25Db2xvclNw
YWNlOwogY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgTmF0aXZlSW1hZ2U7Ci1lbnVtIGNsYXNzIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7CisKIGVudW0gY2xhc3MgUmVuZGVyaW5nTW9k
ZSA6IGJvb2w7CisKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMjEsNyArMTI1LDcgQEAg
cHJpdmF0ZToKICAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwogCiAg
ICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCi0gICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZl
cihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJp
bmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JT
cGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7CisgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFdlYkNvcmU6
OlBpeGVsRm9ybWF0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAg
IHZvaWQgd2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChjb25zdCBHUFVQcm9jZXNzV2FrZXVwTWVz
c2FnZUFyZ3VtZW50cyYpOwogICAgIHZvaWQgdXBkYXRlU2hhcmVkTWVtb3J5Rm9yR2V0UGl4ZWxC
dWZmZXIodWludDMyX3QgYnl0ZUNvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFNo
YXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+JiYpOwogICAgIHZvaWQgc2VtYXBob3JlRm9yR2V0UGl4
ZWxCdWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNlbWFwaG9yZSYpPiYm
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29k
ZXJBVkZQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDI4ICsxMTMsMjggQEAgdm9pZCBSZW1vdGVJbWFn
ZURlY29kZXJBVkZQcm94eTo6c2V0RGF0YQogICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lQ291
bnQsIGltYWdlRGVjb2Rlci0+c2l6ZSgpLCBpbWFnZURlY29kZXItPmhhc1RyYWNrKCksIFdURk1v
dmUoZnJhbWVJbmZvcykpOwogfQogCi12b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5Ojpj
cmVhdGVGcmFtZUltYWdlQXRJbmRleChJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IHNpemVfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXVEY6Ok1hY2hT
ZW5kUmlnaHQ+JiYsIENvbG9yU3BhY2VEYXRhJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoSW1h
Z2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBzaXplX3QgaW5kZXgsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJpZ2h0PiYmLCBPcHRpb25hbDxXZWJD
b3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIEFTU0VSVChtX2ltYWdlRGVjb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOwogICAgIE9w
dGlvbmFsPFdURjo6TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0OwotICAgIENvbG9yU3BhY2VEYXRh
IGNvbG9yU3BhY2VEYXRhOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JT
cGFjZT4gY29sb3JTcGFjZTsKICAgICBpZiAoIW1faW1hZ2VEZWNvZGVycy5jb250YWlucyhpZGVu
dGlmaWVyKSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHNlbmRSaWdodCks
IFdURk1vdmUoY29sb3JTcGFjZURhdGEpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShzZW5kUmlnaHQpLCBXVEZNb3ZlKGNvbG9yU3BhY2UpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGF1dG8gZnJhbWVJbWFnZSA9IG1faW1hZ2VEZWNvZGVycy5nZXQoaWRlbnRp
ZmllciktPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4KTsKICAgICBpZiAoIWZyYW1lSW1h
Z2UpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShzZW5kUmlnaHQpLCBXVEZN
b3ZlKGNvbG9yU3BhY2VEYXRhKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
c2VuZFJpZ2h0KSwgV1RGTW92ZShjb2xvclNwYWNlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKICAgICBpZiAoYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGVGcm9tSW1hZ2UoZnJh
bWVJbWFnZS5nZXQoKSkpIHsKICAgICAgICAgc2VuZFJpZ2h0ID0gc3VyZmFjZS0+Y3JlYXRlU2Vu
ZFJpZ2h0KCk7Ci0gICAgICAgIGNvbG9yU3BhY2VEYXRhLmNnQ29sb3JTcGFjZSA9IHN1cmZhY2Ut
PmNvbG9yU3BhY2UoKTsKKyAgICAgICAgY29sb3JTcGFjZSA9IHN1cmZhY2UtPmNvbG9yU3BhY2Uo
KTsKICAgICB9CiAKLSAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHNlbmRSaWdodCksIFdU
Rk1vdmUoY29sb3JTcGFjZURhdGEpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHNl
bmRSaWdodCksIFdURk1vdmUoY29sb3JTcGFjZSkpOwogfQogCiB2b2lkIFJlbW90ZUltYWdlRGVj
b2RlckFWRlByb3h5OjpjbGVhckZyYW1lQnVmZmVyQ2FjaGUoSW1hZ2VEZWNvZGVySWRlbnRpZmll
ciBpZGVudGlmaWVyLCBzaXplX3QgaW5kZXgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRlByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAK
IAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgSEFWRShBVkFTU0VUUkVBREVSKQogCi0jaW5j
bHVkZSAiQ29sb3JTcGFjZURhdGEuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5j
bHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZURlY29kZXJB
VkZPYmpDLmg+CkBAIC01Nyw3ICs1Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWxldGVEZWNv
ZGVyKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIpOwogICAgIHZvaWQgc2V0RXhwZWN0
ZWRDb250ZW50U2l6ZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyLCBsb25nIGxvbmcg
ZXhwZWN0ZWRDb250ZW50U2l6ZSk7CiAgICAgdm9pZCBzZXREYXRhKFdlYkNvcmU6OkltYWdlRGVj
b2RlcklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHNpemVfdCBmcmFtZUNvdW50LCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBzaXplLCBib29sIGhhc1RyYWNrLCBPcHRpb25hbDxWZWN0b3I8V2Vi
Q29yZTo6SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+PiYmKT4mJik7Ci0gICAgdm9pZCBjcmVhdGVG
cmFtZUltYWdlQXRJbmRleChXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyLCBzaXplX3Qg
aW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJpZ2h0
PiYmLCBDb2xvclNwYWNlRGF0YSYmKT4mJik7CisgICAgdm9pZCBjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyLCBzaXplX3QgaW5kZXgsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJpZ2h0PiYmLCBPcHRpb25h
bDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+JiYpPiYmKTsKICAgICB2b2lkIGNsZWFy
RnJhbWVCdWZmZXJDYWNoZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyLCBzaXplX3Qg
aW5kZXgpOwogCiAgICAgdm9pZCBlbmNvZGVkRGF0YVN0YXR1c0NoYW5nZWQoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVySWRlbnRpZmllcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5
Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDcgKzMyLDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
UHJveHkgTgogICAgIERlbGV0ZURlY29kZXIoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmll
ciBpZGVudGlmaWVyKQogICAgIFNldEV4cGVjdGVkQ29udGVudFNpemUoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6
ZSkKICAgICBTZXREYXRhKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2Vp
dmVkKSAtPiAoc2l6ZV90IGZyYW1lQ291bnQsIFdlYkNvcmU6OkludFNpemUgc2l6ZSwgYm9vbCBo
YXNUcmFjaywgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6RnJhbWVJbmZv
Pj4gZnJhbWVJbmZvcykgU3luY2hyb25vdXMKLSAgICBDcmVhdGVGcmFtZUltYWdlQXRJbmRleChX
ZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCkg
LT4gKE9wdGlvbmFsPE1hY2hTZW5kUmlnaHQ+IHNlbmRSaWdodCwgc3RydWN0IFdlYktpdDo6Q29s
b3JTcGFjZURhdGEgY29sb3JTcGFjZSkgU3luY2hyb25vdXMKKyAgICBDcmVhdGVGcmFtZUltYWdl
QXRJbmRleChXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVf
dCBpbmRleCkgLT4gKE9wdGlvbmFsPE1hY2hTZW5kUmlnaHQ+IHNlbmRSaWdodCwgT3B0aW9uYWw8
V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlKSBTeW5jaHJvbm91cwog
ICAgIENsZWFyRnJhbWVCdWZmZXJDYWNoZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCkKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9TaGFy
ZWQvU2hhcmVhYmxlQml0bWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9TaGFyZWFibGVCaXRtYXAuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCwxMCArNzQs
NyBAQCB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlOjpjbGVhcigpCiAKIHZvaWQgU2hhcmVh
YmxlQml0bWFwOjpDb25maWd1cmF0aW9uOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogewotICAgIGVuY29kZXIgPDwgaXNPcGFxdWU7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgZW5jb2RlciA8PCBjb2xvclNwYWNlOwotI2VuZGlmCisgICAgZW5jb2RlciA8PCBjb2xvclNw
YWNlIDw8IGlzT3BhcXVlOwogI2lmIFVTRShESVJFQ1QyRCkKICAgICBTaGFyZWRNZW1vcnk6Okhh
bmRsZTo6ZW5jb2RlSGFuZGxlKGVuY29kZXIsIHNoYXJlZFJlc291cmNlSGFuZGxlKTsKIApAQCAt
ODgsMjEgKzg1LDI4IEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uOjplbmMK
ICNlbmRpZgogfQogCi1ib29sIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbjo6ZGVjb2Rl
KElQQzo6RGVjb2RlciYgZGVjb2RlciwgQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK2Jv
b2wgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBk
ZWNvZGVyLCBDb25maWd1cmF0aW9uJiByZXN1bHQpCiB7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShjb25maWd1cmF0aW9uLmlzT3BhcXVlKSkKKyAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJDb3Jl
OjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+PiBjb2xvclNwYWNlOworICAgIGRlY29kZXIgPj4gY29s
b3JTcGFjZTsKKyAgICBpZiAoIWNvbG9yU3BhY2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSNp
ZiBQTEFURk9STShDT0NPQSkKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbmZpZ3VyYXRpb24u
Y29sb3JTcGFjZSkpCisKKyAgICBPcHRpb25hbDxib29sPiBpc09wYXF1ZTsKKyAgICBkZWNvZGVy
ID4+IGlzT3BhcXVlOworICAgIGlmICghaXNPcGFxdWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSNlbmRpZgorCisgICAgcmVzdWx0ID0gQ29uZmlndXJhdGlvbiB7IFdURk1vdmUoKmNvbG9yU3Bh
Y2UpLCAqaXNPcGFxdWUgfTsKKwogI2lmIFVTRShESVJFQ1QyRCkKICAgICBhdXRvIHByb2Nlc3NT
cGVjaWZpY0hhbmRsZSA9IFNoYXJlZE1lbW9yeTo6SGFuZGxlOjpkZWNvZGVIYW5kbGUoZGVjb2Rl
cik7CiAgICAgaWYgKCFwcm9jZXNzU3BlY2lmaWNIYW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGNvbmZpZ3VyYXRpb24uc2hhcmVkUmVzb3VyY2VIYW5kbGUgPSBwcm9jZXNzU3Bl
Y2lmaWNIYW5kbGUudmFsdWUoKTsKKyAgICByZXN1bHQuc2hhcmVkUmVzb3VyY2VIYW5kbGUgPSBw
cm9jZXNzU3BlY2lmaWNIYW5kbGUudmFsdWUoKTsKICNlbmRpZgorCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAkod29y
a2luZyBjb3B5KQpAQCAtMjYsMTUgKzI2LDEyIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0
Zm9ybUltYWdlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJl
YWRTYWZlUmVmQ291bnRlZC5oPgogCi0jaWYgVVNFKENHKQotI2luY2x1ZGUgIkNvbG9yU3BhY2VE
YXRhLmgiCi0jZW5kaWYKLQogI2lmIFVTRShESVJFQ1QyRCkKIGludGVyZmFjZSBJRDJEMUJpdG1h
cDsKIGludGVyZmFjZSBJRDJEMVJlbmRlclRhcmdldDsKQEAgLTU1LDEwICs1Miw4IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogY2xhc3MgU2hhcmVhYmxlQml0bWFwIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFNoYXJlYWJsZUJpdG1hcD4gewogcHVibGljOgogICAgIHN0cnVjdCBDb25maWd1
cmF0aW9uIHsKKyAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNl
PiBjb2xvclNwYWNlOwogICAgICAgICBib29sIGlzT3BhcXVlIHsgZmFsc2UgfTsKLSNpZiBQTEFU
Rk9STShDT0NPQSkKLSAgICAgICAgQ29sb3JTcGFjZURhdGEgY29sb3JTcGFjZTsKLSNlbmRpZgog
I2lmIFVTRShESVJFQ1QyRCkKICAgICAgICAgbXV0YWJsZSBIQU5ETEUgc2hhcmVkUmVzb3VyY2VI
YW5kbGUgeyBudWxscHRyIH07CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtODIs
NiArODIsOCBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJBcmd1
bWVudENvZGVyc0NGLmgiCisKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWFjaFNlbmRSaWdodDsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI1LDggKzMy
NSwxMSBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQCiAgICAgcGFy
YW1ldGVycy5oYXNSZXNvdXJjZUxvYWRDbGllbnQgPSBXVEZNb3ZlKCpoYXNSZXNvdXJjZUxvYWRD
bGllbnQpOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFy
YW1ldGVycy5jb2xvclNwYWNlKSkKKyAgICBPcHRpb25hbDxPcHRpb25hbDxEZXN0aW5hdGlvbkNv
bG9yU3BhY2U+PiBjb2xvclNwYWNlOworICAgIGRlY29kZXIgPj4gY29sb3JTcGFjZTsKKyAgICBp
ZiAoIWNvbG9yU3BhY2UpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcGFyYW1l
dGVycy5jb2xvclNwYWNlID0gV1RGTW92ZSgqY29sb3JTcGFjZSk7CiAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYXJhbWV0ZXJzLnVzZVN5c3RlbUFwcGVhcmFuY2UpKQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9GbG9hdFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0xheW91dE1pbGVzdG9uZS5oPgpAQCAtNDksMTAgKzUwLDYgQEAKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0j
aWYgUExBVEZPUk0oTUFDKQotI2luY2x1ZGUgIkNvbG9yU3BhY2VEYXRhLmgiCi0jZW5kaWYKLQog
I2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxp
Y2F0aW9uTWFuaWZlc3QuaD4KICNlbmRpZgpAQCAtMTQ2LDcgKzE0Myw3IEBAIHN0cnVjdCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBib29sIHVzZUVsZXZhdGVkVXNlckludGVyZmFj
ZUxldmVsIHsgZmFsc2UgfTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBDb2xvclNwYWNlRGF0
YSBjb2xvclNwYWNlOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFj
ZT4gY29sb3JTcGFjZTsKICAgICBib29sIHVzZVN5c3RlbUFwcGVhcmFuY2U7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoTUVUQV9WSUVXUE9SVCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUu
bW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjEyLDE5
ICsyMTIsMTkgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaQogICAg
IHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBUeXBlOjpJT1N1cmZhY2U6CiAgICAgICAgIGlm
IChzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmcpCi0gICAgICAgICAgICBtX2Zyb250QnVmZmVyLmlt
YWdlQnVmZmVyID0gbV9sYXllci0+Y29udGV4dCgpLT5lbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkoKS5jcmVhdGVJbWFnZUJ1ZmZlcihtX3NpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01v
ZGU6OkFjY2VsZXJhdGVkLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IsIHBpeGVsRm9ybWF0KCkpOworICAgICAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1
ZmZlciA9IG1fbGF5ZXItPmNvbnRleHQoKS0+ZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5KCkuY3JlYXRlSW1hZ2VCdWZmZXIobV9zaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpB
Y2NlbGVyYXRlZCwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCksIHBpeGVsRm9ybWF0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Zyb250QnVm
ZmVyLmltYWdlQnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxBY2NlbGVyYXRl
ZEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkQmFja2VuZD46OmNyZWF0ZShtX3NpemUsIG1fc2Nh
bGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSwg
bnVsbHB0cik7CisgICAgICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0gV2ViQ29y
ZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlTWFw
cGVkQmFja2VuZD46OmNyZWF0ZShtX3NpemUsIG1fc2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpLCBwaXhlbEZvcm1hdCgpLCBudWxscHRyKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBUeXBlOjpCaXRtYXA6CiAgICAgICAgIGlmIChzaG91bGRVc2VSZW1vdGVS
ZW5kZXJpbmcpCi0gICAgICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0gbV9sYXll
ci0+Y29udGV4dCgpLT5lbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKS5jcmVhdGVJ
bWFnZUJ1ZmZlcihtX3NpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
IG1fc2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3Jt
YXQoKSk7CisgICAgICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0gbV9sYXllci0+
Y29udGV4dCgpLT5lbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKS5jcmVhdGVJbWFn
ZUJ1ZmZlcihtX3NpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIG1f
c2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBwaXhlbEZvcm1h
dCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZl
ciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8VW5hY2NlbGVyYXRlZEltYWdlQnVmZmVy
U2hhcmVhYmxlQmFja2VuZD46OmNyZWF0ZShtX3NpemUsIG1fc2NhbGUsIFdlYkNvcmU6OkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0cik7CisgICAgICAg
ICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1
ZmZlcjxVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kPjo6Y3JlYXRlKG1f
c2l6ZSwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHBp
eGVsRm9ybWF0KCksIG51bGxwdHIpOwogICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoQ0dfRElT
UExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCiAgICAgY2FzZSBUeXBlOjpDR0Rpc3BsYXlM
aXN0OgotICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0gV2ViQ29yZTo6Q29uY3Jl
dGVJbWFnZUJ1ZmZlcjxDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kPjo6Y3JlYXRlKG1f
c2l6ZSwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBwaXhl
bEZvcm1hdCgpLCBudWxscHRyKTsKKyAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9
IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFj
a2VuZD46OmNyZWF0ZShtX3NpemUsIG1fc2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpLCBwaXhlbEZvcm1hdCgpLCBudWxscHRyKTsKICAgICAgICAgYnJlYWs7CiAj
ZW5kaWYKICAgICB9CkBAIC0zOTcsNyArMzk3LDcgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdT
dG9yZTo6YXBwbHlCYWNraQogICAgICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpJT1N1
cmZhY2UpOwogICAgICAgICAgICAgc3dpdGNoIChjb250ZW50c1R5cGUpIHsKICAgICAgICAgICAg
IGNhc2UgTGF5ZXJDb250ZW50c1R5cGU6OklPU3VyZmFjZTogewotICAgICAgICAgICAgICAgIGF1
dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZN
b3ZlKG1hY2hTZW5kUmlnaHQpLCBXZWJDb3JlOjpzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICAg
ICAgICAgICAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21T
ZW5kUmlnaHQoV1RGTW92ZShtYWNoU2VuZFJpZ2h0KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCkpOwogICAgICAgICAgICAgICAgIGxheWVyLmNvbnRlbnRzID0gc3VyZmFj
ZSA/IHN1cmZhY2UtPmFzTGF5ZXJDb250ZW50cygpIDogbmlsOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVh
YmxlQml0bWFwQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1No
YXJlYWJsZUJpdG1hcENHLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9T
aGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0
MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIAogc3RhdGljIENHQ29sb3JTcGFj
ZVJlZiBjb2xvclNwYWNlKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiYgY29u
ZmlndXJhdGlvbikKIHsKLSAgICByZXR1cm4gY29uZmlndXJhdGlvbi5jb2xvclNwYWNlLmNnQ29s
b3JTcGFjZS5nZXQoKSA/OiBzUkdCQ29sb3JTcGFjZVJlZigpOworICAgIHJldHVybiBjb25maWd1
cmF0aW9uLmNvbG9yU3BhY2UgPyBjb25maWd1cmF0aW9uLmNvbG9yU3BhY2UtPnBsYXRmb3JtQ29s
b3JTcGFjZSgpIDogV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKTsKIH0KIAogc3RhdGljIGJv
b2wgd2FudHNFeHRlbmRlZFJhbmdlKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlv
biYgY29uZmlndXJhdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9Db2xvclNw
YWNlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9Db2xvclNw
YWNlRGF0YS5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
Q29sb3JTcGFjZURhdGEuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZuZGVmIENvbG9yU3BhY2VEYXRhX2gKLSNkZWZpbmUgQ29sb3JTcGFjZURhdGFfaAot
Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERl
Y29kZXI7Ci1jbGFzcyBFbmNvZGVyOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RydWN0
IENvbG9yU3BhY2VEYXRhIHsKLSAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsK
LSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYs
IENvbG9yU3BhY2VEYXRhJik7Ci0KLSAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjZ0Nv
bG9yU3BhY2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIENvbG9y
U3BhY2VEYXRhX2gKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJLaXQvU2hhcmVkL21h
Yy9Db2xvclNwYWNlRGF0YS5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAt
MSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDog
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvbG9yU3BhY2VEYXRhLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9Db2xvclNwYWNlRGF0YS5tbQkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvbG9yU3BhY2VEYXRhLm1tCShub25l
eGlzdGVudCkKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5o
IgotI2ltcG9ydCAiQ29sb3JTcGFjZURhdGEuaCIKLQotI2ltcG9ydCAiQXJndW1lbnRDb2RlcnND
Ri5oIgotI2ltcG9ydCAiRGVjb2Rlci5oIgotI2ltcG9ydCAiRW5jb2Rlci5oIgotI2ltcG9ydCA8
d3RmL0VudW1UcmFpdHMuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQgQ29sb3JTcGFj
ZURhdGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2Rl
ciA8PCBzdGF0aWNfY2FzdDxib29sPihjZ0NvbG9yU3BhY2UpOwotICAgIGlmIChjZ0NvbG9yU3Bh
Y2UpCi0gICAgICAgIGVuY29kZXIgPDwgY2dDb2xvclNwYWNlOwotfQotCi1ib29sIENvbG9yU3Bh
Y2VEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb2xvclNwYWNlRGF0YSYgY29s
b3JTcGFjZURhdGEpCi17Ci0gICAgYm9vbCBoYXNDR0NvbG9yU3BhY2U7Ci0gICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShoYXNDR0NvbG9yU3BhY2UpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBpZiAoIWhhc0NHQ29sb3JTcGFjZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBSZXRh
aW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNlOwotICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoY29sb3JTcGFjZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBjb2xvclNw
YWNlRGF0YS5jZ0NvbG9yU3BhY2UgPSBXVEZNb3ZlKGNvbG9yU3BhY2UpOwotICAgIHJldHVybiB0
cnVlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BhZ2VDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTMsNiArOTMsNyBAQCBjbGFzcyBT
ZWN1cml0eU9yaWdpbjsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvbG9yOwogY2xhc3Mg
Q3Vyc29yOworY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlOwogY2xhc3MgRmxvYXRRdWFkOwog
Y2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgUmVnaW9uOwpAQCAtMTg4LDEwICsxODksNiBAQCBjbGFz
cyBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50OwogY2xhc3MgSW5zdGFsbE1pc3NpbmdN
ZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09D
T0EpCi1zdHJ1Y3QgQ29sb3JTcGFjZURhdGE7Ci0jZW5kaWYKLQogI2lmIEhBVkUoVklTSUJJTElU
WV9QUk9QQUdBVElPTl9WSUVXKQogdXNpbmcgTGF5ZXJIb3N0aW5nQ29udGV4dElEID0gdWludDMy
X3Q7CiAjZW5kaWYKQEAgLTQyNiw3ICs0MjMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIENH
UmVjdCBib3VuZHNPZkxheWVySW5MYXllckJhY2tlZFdpbmRvd0Nvb3JkaW5hdGVzKENBTGF5ZXIg
KikgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlKCkg
PSAwOworICAgIHZpcnR1YWwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3Bh
Y2UoKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXRmb3JtQ29udGV4dE1lbnUoTlNN
ZW51ICosIFdlYkNvcmU6OkludFBvaW50KSA9IDA7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTk4LDYgKzE5OCw3IEBA
IG5hbWVzcGFjZSBBUEkgewogY2xhc3MgQXR0YWNobWVudDsKIGNsYXNzIENvbnRlbnRXb3JsZDsK
IGNsYXNzIENvbnRleHRNZW51Q2xpZW50OworY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlOwog
Y2xhc3MgRXJyb3I7CiBjbGFzcyBGaW5kQ2xpZW50OwogY2xhc3MgRmluZE1hdGNoZXNDbGllbnQ7
CkBAIC0zNzcsNyArMzc4LDYgQEAgY2xhc3MgV2ViV2hlZWxFdmVudENvYWxlc2NlcjsKIGNsYXNz
IFdlYnNpdGVEYXRhU3RvcmU7CiAKIHN0cnVjdCBBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0
YTsKLXN0cnVjdCBDb2xvclNwYWNlRGF0YTsKIHN0cnVjdCBEYXRhRGV0ZWN0aW9uUmVzdWx0Owog
c3RydWN0IERvY3VtZW50RWRpdGluZ0NvbnRleHQ7CiBzdHJ1Y3QgRG9jdW1lbnRFZGl0aW5nQ29u
dGV4dFJlcXVlc3Q7CkBAIC0xMTMyLDcgKzExMzIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYWtl
Rmlyc3RSZXNwb25kZXIoKTsKICAgICB2b2lkIGFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RS
ZXNwb25kZXIoKTsKIAotICAgIENvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2UoKTsKKyAgICBXZWJD
b3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpOwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoU0VSVklDRV9DT05UUk9MUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9pb3MvV0tXZWJWaWV3SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTAxNCw3ICsxMDE0LDcgQEAgLSAoUmVmUHRyPFdlYktpdDo6Vmlld1NuYXBzaG90PilfdGFr
ZVZpZQogI2Vsc2UKICAgICBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdCBzbmFwc2hvdEZvcm1h
dCA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0OjpCR1JBOwogI2VuZGlmCi0gICAgYXV0byBz
dXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGUoV2ViQ29yZTo6ZXhwYW5kZWRJbnRT
aXplKHNuYXBzaG90U2l6ZSksIFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCksIHNuYXBzaG90
Rm9ybWF0KTsKKyAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZShX
ZWJDb3JlOjpleHBhbmRlZEludFNpemUoc25hcHNob3RTaXplKSwgV2ViQ29yZTo6RGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCksIHNuYXBzaG90Rm9ybWF0KTsKICAgICBpZiAoIXN1cmZhY2Up
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIENBUmVuZGVyU2VydmVyUmVuZGVyTGF5ZXJX
aXRoVHJhbnNmb3JtKE1BQ0hfUE9SVF9OVUxMLCBzZWxmLmxheWVyLmNvbnRleHQuY29udGV4dElk
LCByZWludGVycHJldF9jYXN0PHVpbnQ2NF90PihzZWxmLmxheWVyKSwgc3VyZmFjZS0+c3VyZmFj
ZSgpLCAwLCAwLCAmdHJhbnNmb3JtKTsKQEAgLTMwNzksNyArMzA3OSw3IEBAIC0gKHZvaWQpX3Nu
YXBzaG90UmVjdDooQ0dSZWN0KXJlY3RJblZpZXcKICAgICBOU1N0cmluZyAqZGlzcGxheU5hbWUg
PSBzZWxmLndpbmRvdy5zY3JlZW4uZGlzcGxheUNvbmZpZ3VyYXRpb24ubmFtZTsKICAgICBpZiAo
ZGlzcGxheU5hbWUgJiYgIXNlbGYud2luZG93LmhpZGRlbikgewogICAgICAgICBUcmFjZVNjb3Bl
IHNuYXBzaG90U2NvcGUoUmVuZGVyU2VydmVyU25hcHNob3RTdGFydCwgUmVuZGVyU2VydmVyU25h
cHNob3RFbmQpOwotICAgICAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNy
ZWF0ZShXZWJDb3JlOjpleHBhbmRlZEludFNpemUoV2ViQ29yZTo6RmxvYXRTaXplKGltYWdlU2l6
ZSkpLCBXZWJDb3JlOjpzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICAgICAgYXV0byBzdXJmYWNl
ID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGUoV2ViQ29yZTo6ZXhwYW5kZWRJbnRTaXplKFdl
YkNvcmU6OkZsb2F0U2l6ZShpbWFnZVNpemUpKSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCkpOwogICAgICAgICBpZiAoIXN1cmZhY2UpIHsKICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC05NCw2ICs5NCw3IEBAIGNsYXNzIFBhZ2VDb25maWd1cmF0aW9uOwogfQogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7CiBjbGFzcyBJ
bnRQb2ludDsKIHN0cnVjdCBTaGFyZURhdGFXaXRoUGFyc2VkVVJMOwogCkBAIC0xNjgsNyArMTY5
LDYgQEAgY2xhc3MgV2ViRnJhbWVQcm94eTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdl
YlByb2Nlc3NQb29sOwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5Owotc3RydWN0IENvbG9yU3BhY2VE
YXRhOwogc3RydWN0IFdlYkhpdFRlc3RSZXN1bHREYXRhOwogCiBlbnVtIGNsYXNzIENvbnRpbnVl
VW5zYWZlTG9hZCA6IGJvb2w7CkBAIC0zMTMsNyArMzEzLDcgQEAgcHVibGljOgogCiAgICAgTlNW
aWV3ICpoaXRUZXN0KENHUG9pbnQpOwogCi0gICAgQ29sb3JTcGFjZURhdGEgY29sb3JTcGFjZSgp
OworICAgIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKCk7CiAKICAg
ICB2b2lkIHNldFVuZGVybGF5Q29sb3IoTlNDb2xvciAqKTsKICAgICBOU0NvbG9yICp1bmRlcmxh
eUNvbG9yKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAK
ICNpbXBvcnQgIkFQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmgiCiAjaW1wb3J0ICJBUElO
YXZpZ2F0aW9uLmgiCiAjaW1wb3J0ICJBcHBLaXRTUEkuaCIKLSNpbXBvcnQgIkNvbG9yU3BhY2VE
YXRhLmgiCiAjaW1wb3J0ICJDb3JlVGV4dEhlbHBlcnMuaCIKICNpbXBvcnQgIkZvbnRJbmZvLmgi
CiAjaW1wb3J0ICJGdWxsc2NyZWVuQ2xpZW50LmgiCkBAIC05MCw2ICs4OSw3IEBACiAjaW1wb3J0
IDxXZWJDb3JlL0NvbG9yTWFjLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yU2VyaWFsaXphdGlv
bi5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db21wb3NpdGlvbkhpZ2hsaWdodC5oPgorI2ltcG9ydCA8
V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGljdGlv
bmFyeUxvb2t1cC5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnRGF0YS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9EcmFnSXRlbS5oPgpAQCAtMjUwMCw3ICsyNTAwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6
cG9zdEZha2VNb3VzZU1vdmVkRXZlbgogICAgIG1fcGFnZS0+aGFuZGxlTW91c2VFdmVudCh3ZWJF
dmVudCk7CiB9CiAKLUNvbG9yU3BhY2VEYXRhIFdlYlZpZXdJbXBsOjpjb2xvclNwYWNlKCkKK1dl
YkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBXZWJWaWV3SW1wbDo6Y29sb3JTcGFjZSgpCiB7
CiAgICAgaWYgKCFtX2NvbG9yU3BhY2UpIHsKICAgICAgICAgaWYgKG1fdGFyZ2V0V2luZG93Rm9y
TW92ZVByZXBhcmF0aW9uKQpAQCAtMjUxMSwxMCArMjUxMSw3IEBAIENvbG9yU3BhY2VEYXRhIFdl
YlZpZXdJbXBsOjpjb2xvclNwYWNlKCkKICAgICAgICAgICAgIG1fY29sb3JTcGFjZSA9IFtOU1Nj
cmVlbiBtYWluU2NyZWVuXS5jb2xvclNwYWNlOwogICAgIH0KIAotICAgIENvbG9yU3BhY2VEYXRh
IGNvbG9yU3BhY2VEYXRhOwotICAgIGNvbG9yU3BhY2VEYXRhLmNnQ29sb3JTcGFjZSA9IFttX2Nv
bG9yU3BhY2UgQ0dDb2xvclNwYWNlXTsKLQotICAgIHJldHVybiBjb2xvclNwYWNlRGF0YTsKKyAg
ICByZXR1cm4gV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIHsgW21fY29sb3JTcGFjZSBD
R0NvbG9yU3BhY2VdIH07CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnNldFVuZGVybGF5Q29sb3Io
TlNDb2xvciAqdW5kZXJsYXlDb2xvcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1t
CShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUs
NyBAQAogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHku
aCIKICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9E
ZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0
Q0cuaD4KICNpbXBvcnQgPFdlYkNvcmUvSU9TdXJmYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Bs
YXRmb3JtTGF5ZXIuaD4KQEAgLTMxNyw3ICszMTgsNyBAQCBzdGF0aWMgdm9pZCByZWN1cnNpdmVs
eU1hcElPU3VyZmFjZUJhY2tpCiB7CiAgICAgaWYgKGxheWVyLmNvbnRlbnRzICYmIENGR2V0VHlw
ZUlEKChfX2JyaWRnZSBDRlR5cGVSZWYpbGF5ZXIuY29udGVudHMpID09IENBTWFjaFBvcnRHZXRU
eXBlSUQoKSkgewogICAgICAgICBNYWNoU2VuZFJpZ2h0IHBvcnQgPSBNYWNoU2VuZFJpZ2h0Ojpj
cmVhdGUoQ0FNYWNoUG9ydEdldFBvcnQoKF9fYnJpZGdlIENBTWFjaFBvcnRSZWYpbGF5ZXIuY29u
dGVudHMpKTsKLSAgICAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVh
dGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUocG9ydCksIHNSR0JDb2xvclNwYWNlUmVmKCkpOworICAg
ICAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmln
aHQoV1RGTW92ZShwb3J0KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkp
OwogICAgICAgICBsYXllci5jb250ZW50cyA9IHN1cmZhY2UgPyBzdXJmYWNlLT5hc0xheWVyQ29u
dGVudHMoKSA6IG5pbDsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9QYWdlQ2xpZW50SW1wbE1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAkod29ya2luZyBjb3B5KQpA
QCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNWaWV3SW5XaW5kb3coKSBvdmVy
cmlkZTsKICAgICBib29sIGlzVmlzdWFsbHlJZGxlKCkgb3ZlcnJpZGU7CiAgICAgTGF5ZXJIb3N0
aW5nTW9kZSB2aWV3TGF5ZXJIb3N0aW5nTW9kZSgpIG92ZXJyaWRlOwotICAgIENvbG9yU3BhY2VE
YXRhIGNvbG9yU3BhY2UoKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgY29sb3JTcGFjZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UmVtb3RlTGF5ZXJUcmVl
Um9vdE5vZGUoUmVtb3RlTGF5ZXJUcmVlTm9kZSopIG92ZXJyaWRlOwogICAgIENBTGF5ZXIgKmFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKIApJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGll
bnRJbXBsTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2IEBACiAKICNpbXBvcnQg
IkFQSUhpdFRlc3RSZXN1bHQuaCIKICNpbXBvcnQgIkFwcEtpdFNQSS5oIgotI2ltcG9ydCAiQ29s
b3JTcGFjZURhdGEuaCIKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIkRvd25s
b2FkUHJveHkuaCIKICNpbXBvcnQgIkRyYXdpbmdBcmVhUHJveHkuaCIKQEAgLTY2LDYgKzY1LDcg
QEAKICNpbXBvcnQgPFdlYkNvcmUvQml0bWFwSW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29s
b3JNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ3Vyc29yLmg+CisjaW1wb3J0IDxXZWJDb3JlL0Rl
c3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5TG9va3Vw
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdJdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0
UmVjdC5oPgpAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnZpZXdXaWxs
TW92ZVRvQW5vdGgKICAgICBjbGVhckFsbEVkaXRDb21tYW5kcygpOwogfQogCi1Db2xvclNwYWNl
RGF0YSBQYWdlQ2xpZW50SW1wbDo6Y29sb3JTcGFjZSgpCitXZWJDb3JlOjpEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgUGFnZUNsaWVudEltcGw6OmNvbG9yU3BhY2UoKQogewogICAgIHJldHVybiBtX2lt
cGwtPmNvbG9yU3BhY2UoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9U
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5
Lm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgs
NyArMjgsNiBAQAogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKLSNpbXBvcnQgIkNvbG9y
U3BhY2VEYXRhLmgiCiAjaW1wb3J0ICJEcmF3aW5nQXJlYU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJE
cmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCIKICNpbXBvcnQgIkxheWVyVHJlZUNvbnRleHQuaCIK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogI2lmIFBMQVRG
T1JNKE1BQykKIAogI2ltcG9ydCAiQVBJVUlDbGllbnQuaCIKLSNpbXBvcnQgIkNvbG9yU3BhY2VE
YXRhLmgiCiAjaW1wb3J0ICJDb25uZWN0aW9uLmgiCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgi
CiAjaW1wb3J0ICJFZGl0b3JTdGF0ZS5oIgpAQCAtNTIsNiArNTEsNyBAQAogI2ltcG9ydCAiV2Vi
UHJlZmVyZW5jZXNLZXlzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQg
PFdlYkNvcmUvQXR0cmlidXRlZFN0cmluZy5oPgorI2ltcG9ydCA8V2ViQ29yZS9EZXN0aW5hdGlv
bkNvbG9yU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGljdGlvbmFyeUxvb2t1cC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9EcmFnSXRlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0xheWVy
Lmg+CkBAIC0zNDQsNyArMzQ0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmFzc2lzdGl2ZVRlY2hu
b2xvZ3lNYQogICAgIHBhZ2VDbGllbnQoKS5hc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVz
cG9uZGVyKCk7CiB9CiAKLUNvbG9yU3BhY2VEYXRhIFdlYlBhZ2VQcm94eTo6Y29sb3JTcGFjZSgp
CitXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgV2ViUGFnZVByb3h5Ojpjb2xvclNwYWNl
KCkKIHsKICAgICByZXR1cm4gcGFnZUNsaWVudCgpLmNvbG9yU3BhY2UoKTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjYzNCw4ICsyNjM0LDYgQEAKIAkJMUEyNTZFMzYxOEEx
QTc4ODAwNkZCOTIyIC8qIFdLTmF2aWdhdGlvbkFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXS05hdmlnYXRpb25BY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUEyNTZFMzkxOEExQTdERjAwNkZCOTIyIC8qIFdLTmF2aWdhdGlvbkFjdGlvbklu
dGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLTmF2aWdhdGlvbkFj
dGlvbkludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMjhCOENCMUM4
MEVENTkwMDZGRDc0MyAvKiBXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMUEyQTRBRkQxNTg2OTM5MjAwOTBDOUU5IC8qIENvbG9yU3BhY2VE
YXRhLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29sb3JTcGFj
ZURhdGEubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBMkE0QUZFMTU4NjkzOTIw
MDkwQzlFOSAvKiBDb2xvclNwYWNlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDb2xvclNwYWNlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTJC
QjZDQzE0MTE3QTVGMDAwRjM1RDQgLyogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMu
aW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMkJCNkNFMTQxMTdCNEQwMDBG
MzVENCAvKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1l
c3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1BsdWdpblBy
b2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKIAkJMUEyQkI2Q0YxNDExN0I0RDAwMEYzNUQ0IC8qIFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBC
VUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC0xMDQzMCw4ICsxMDQyOCw2IEBACiAJCQkJOUY1NEY4
OEUxNjQ4OEU4NzAwN0RGODFBIC8qIEF1eGlsaWFyeVByb2Nlc3NNYWMubW0gKi8sCiAJCQkJQ0Ux
MUFENTExQ0JDNDgyRjAwNjgxRUU1IC8qIENvZGVTaWduaW5nLmggKi8sCiAJCQkJQ0UxMUFENEYx
Q0JDNDdGODAwNjgxRUU1IC8qIENvZGVTaWduaW5nLm1tICovLAotCQkJCTFBMkE0QUZFMTU4Njkz
OTIwMDkwQzlFOSAvKiBDb2xvclNwYWNlRGF0YS5oICovLAotCQkJCTFBMkE0QUZEMTU4NjkzOTIw
MDkwQzlFOSAvKiBDb2xvclNwYWNlRGF0YS5tbSAqLywKIAkJCQkxQUM3NUExQzFCMzM2OTVFMDA1
Njc0NUIgLyogSGFuZ0RldGVjdGlvbkRpc2FibGVyTWFjLm1tICovLAogCQkJCTJENTAzNjVEMUJD
Qzc5M0YwMEUyMEJCMyAvKiBOYXRpdmVXZWJHZXN0dXJlRXZlbnRNYWMubW0gKi8sCiAJCQkJQzAy
QkZGMUQxMjUxNTAyRTAwOUNDQkVBIC8qIE5hdGl2ZVdlYktleWJvYXJkRXZlbnRNYWMubW0gKi8s
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQu
Y3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDExICs0NSw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJbWFnZUJ1
ZmZlclMKIAogU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIEltYWdlQnVmZmVyU2hhcmVh
YmxlQml0bWFwQmFja2VuZDo6Y29uZmlndXJhdGlvbihjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQogewotICAgIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9u
OwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZSA9IHsg
Y2FjaGVkQ0dDb2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JTcGFjZSkgfTsKLSNlbmRpZgotICAg
IHJldHVybiBjb25maWd1cmF0aW9uOworICAgIHJldHVybiB7IHBhcmFtZXRlcnMuY29sb3JTcGFj
ZSB9OwogfQogCiBJbnRTaXplIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y2Fs
Y3VsYXRlU2FmZUJhY2tlbmRTaXplKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDcgQEAg
dm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwcmVwYQogICAgICAgICBtYXJrQ29u
dGV4dExvc3QoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvIGRpc3BsYXlCdWZm
ZXIgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShkaXNwbGF5QnVmZmVy
U2VuZFJpZ2h0KSwgc1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgYXV0byBkaXNwbGF5QnVmZmVy
ID0gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoZGlzcGxheUJ1ZmZlclNl
bmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICBp
ZiAoZGlzcGxheUJ1ZmZlcikgewogICAgICAgICBhdXRvJiBzYyA9IHBsYXRmb3JtU3dhcENoYWlu
KCk7CiAgICAgICAgIHNjLnJlY3ljbGVCdWZmZXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eS5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAt
NTUsNyArNTUsNyBAQCBjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IDogcHVibGljIFdlCiAg
ICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXI6OnJlc29sdXRpb25TY2FsZTsKIAog
cHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4gY3JlYXRl
KGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBX
ZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxG
b3JtYXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5KQorICAgIHN0YXRpYyBSZWZQdHI8UmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBjb25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3Bh
Y2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKICAgICB7CiAgICAgICAgIGF1
dG8gcGFyYW1ldGVycyA9IFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyB7
IHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQgfTsKICAgICAg
ICAgaWYgKEJhY2tlbmRUeXBlOjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUocGFyYW1ldGVycyku
aXNFbXB0eSgpKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNw
cAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzAsNyArMTMwLDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZQog
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNyZWF0ZUltYWdlQnVm
ZmVyKGltYWdlQnVmZmVyLmxvZ2ljYWxTaXplKCksIGltYWdlQnVmZmVyLnJlbmRlcmluZ01vZGUo
KSwgaW1hZ2VCdWZmZXIucmVzb2x1dGlvblNjYWxlKCksIGltYWdlQnVmZmVyLmNvbG9yU3BhY2Uo
KSwgaW1hZ2VCdWZmZXIucGl4ZWxGb3JtYXQoKSwgaW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKCkpLCByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigpLCBJUEM6OlNlbmRP
cHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiB9CiAK
LVJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJ
bWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5n
TW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBw
aXhlbEZvcm1hdCkKIHsKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgJKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDE1ICs0MywxOSBAQAogI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKwogbmFtZXNwYWNl
IERpc3BsYXlMaXN0IHsKIGNsYXNzIERpc3BsYXlMaXN0OwogY2xhc3MgSXRlbTsKIH0KKworY2xh
c3MgRGVzdGluYXRpb25Db2xvclNwYWNlOwogY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgUGl4ZWxC
dWZmZXI7CisKIGVudW0gY2xhc3MgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiA6IHVpbnQ4X3Q7Ci1l
bnVtIGNsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFJl
bmRlcmluZ01vZGUgOiBib29sOworCiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtOTIsNyAr
OTYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNl
bnQuCi0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSwgV2ViQ29yZTo6
UGl4ZWxGb3JtYXQpOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1h
Z2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9k
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCk7CiAgICAgU3RyaW5nIGdldERhdGFVUkxGb3JJ
bWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxp
dHksIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKICAgICBWZWN0b3I8dWludDhfdD4gZ2V0RGF0YUZvckltYWdlQnVmZmVy
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoY29uc3QgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
Y29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0lt
YWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHAJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1h
Z2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDUsNyArNDUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVN
YXBwCiAgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShiYWNrZW5kU2l6ZSwg
YmFja2VuZFNpemUsIGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpLCBJ
T1N1cmZhY2U6OmZvcm1hdEZvclBpeGVsRm9ybWF0KHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQpKTsK
KyAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShiYWNrZW5kU2l6ZSwgYmFja2Vu
ZFNpemUsIHBhcmFtZXRlcnMuY29sb3JTcGFjZSwgSU9TdXJmYWNlOjpmb3JtYXRGb3JQaXhlbEZv
cm1hdChwYXJhbWV0ZXJzLnBpeGVsRm9ybWF0KSk7CiAgICAgaWYgKCFzdXJmYWNlKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIApAQCAtNjUsNyArNjUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJTaGFyZWFibGVNYXBwCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAot
ICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3Zl
KFdURjo6Z2V0PE1hY2hTZW5kUmlnaHQ+KGhhbmRsZSkpLCBjYWNoZWRDR0NvbG9yU3BhY2UocGFy
YW1ldGVycy5jb2xvclNwYWNlKSk7CisgICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVh
dGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoV1RGOjpnZXQ8TWFjaFNlbmRSaWdodD4oaGFuZGxlKSks
IHBhcmFtZXRlcnMuY29sb3JTcGFjZSk7CiAgICAgaWYgKCFzdXJmYWNlKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMyArMjgsMTIgQEAKIAogI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgSEFWRShBVkFTU0VUUkVBREVSKQogCi0jaW5jbHVkZSAiQ29s
b3JTcGFjZURhdGEuaCIKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1
ZGUgIlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQVZBc3NldE1JTUVUeXBlQ2FjaGUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Nv
bG9yU3BhY2VDRy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdl
VHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KQEAgLTE2OCwx
NCArMTY3LDE0IEBAIFBsYXRmb3JtSW1hZ2VQdHIgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjoKICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBPcHRpb25hbDxNYWNoU2VuZFJpZ2h0PiBzZW5k
UmlnaHQ7Ci0gICAgICAgIENvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2U7CisgICAgICAgIE9wdGlv
bmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKICAgICAgICAgaWYgKCFtX2dw
dVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUltYWdlRGVjb2RlckFWRlByb3h5OjpDcmVhdGVGcmFtZUltYWdlQXRJbmRleChtX2lkZW50aWZp
ZXIsIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpDcmVhdGVG
cmFtZUltYWdlQXRJbmRleDo6UmVwbHkoc2VuZFJpZ2h0LCBjb2xvclNwYWNlKSwgMCkpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKCFzZW5kUmlnaHQpCisgICAgICAgIGlmICgh
c2VuZFJpZ2h0IHx8ICFjb2xvclNwYWNlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChX
VEZNb3ZlKCpzZW5kUmlnaHQpLCBjb2xvclNwYWNlLmNnQ29sb3JTcGFjZS5nZXQoKSk7CisgICAg
ICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdo
dChXVEZNb3ZlKCpzZW5kUmlnaHQpLCBXVEZNb3ZlKCpjb2xvclNwYWNlKSk7CiAgICAgICAgIGlm
ICghc3VyZmFjZSkKICAgICAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9jb2NvYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVDb2NvYS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29h
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNvY29hLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL01lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIFJlZlB0cjxO
YXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXJQcml2YXRlUmUKICAgICBpZiAoIXNlbmRSaWdodCkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1
cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZSgqc2VuZFJpZ2h0KSwgc1JHQkNvbG9y
U3BhY2VSZWYoKSk7CisgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVh
dGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoKnNlbmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpKTsKICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCkBAIC05MSw3ICs5MSw3IEBAIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBN
ZWRpYVBsYXllclAKICAgICBpZiAoIXNlbmRSaWdodCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5k
UmlnaHQoV1RGTW92ZSgqc2VuZFJpZ2h0KSwgbnVsbHB0cik7CisgICAgYXV0byBzdXJmYWNlID0g
V2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoKnNlbmRSaWdo
dCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICBpZiAoIXN1
cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0JKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0J
KHdvcmtpbmcgY29weSkKQEAgLTY0Niw3ICs2NDYsNyBAQCBpbmxpbmUgUERGUGx1Z2luOjpQREZQ
bHVnaW4oV2ViRnJhbWUmIGZyCiAgICAgW21fY29udGFpbmVyTGF5ZXIgYWRkU3VibGF5ZXI6bV9z
Y3JvbGxDb3JuZXJMYXllci5nZXQoKV07CiAgICAgaWYgKFttX3BkZkxheWVyQ29udHJvbGxlciBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldERldmljZUNvbG9yU3BhY2U6KV0pIHsKICAg
ICAgICAgYXV0byB2aWV3ID0gZnJhbWUuY29yZUZyYW1lKCktPnZpZXcoKTsKLSAgICAgICAgW21f
cGRmTGF5ZXJDb250cm9sbGVyIHNldERldmljZUNvbG9yU3BhY2U6c2NyZWVuQ29sb3JTcGFjZSh2
aWV3KV07CisgICAgICAgIFttX3BkZkxheWVyQ29udHJvbGxlciBzZXREZXZpY2VDb2xvclNwYWNl
OnNjcmVlbkNvbG9yU3BhY2UodmlldykucGxhdGZvcm1Db2xvclNwYWNlKCldOwogICAgIH0KIAog
I2lmIEhBVkUoSU5DUkVNRU5UQUxfUERGX0FQSVMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxl
Qml0bWFwVXRpbGl0aWVzLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU3LDEyICs1Nyw3IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNy
ZWF0ZVNoYXJlYWJsZUIKICAgICB9CiAKICAgICAvLyBGSVhNRTogT25seSBzZWxlY3QgRXh0ZW5k
ZWRDb2xvciBvbiBpbWFnZXMga25vd24gdG8gbmVlZCB3aWRlIGdhbXV0LgotICAgIFNoYXJlYWJs
ZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBiaXRtYXBDb25maWd1cmF0aW9uOwotI2lmIFVTRShDRykK
LSAgICBiaXRtYXBDb25maWd1cmF0aW9uLmNvbG9yU3BhY2UuY2dDb2xvclNwYWNlID0gc2NyZWVu
Q29sb3JTcGFjZShyZW5kZXJJbWFnZS5mcmFtZSgpLm1haW5GcmFtZSgpLnZpZXcoKSk7Ci0jZW5k
aWYKLQotICAgIGF1dG8gc2hhcmVkQml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFy
ZWFibGUoSW50U2l6ZShiaXRtYXBTaXplKSwgYml0bWFwQ29uZmlndXJhdGlvbik7CisgICAgYXV0
byBzaGFyZWRCaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXpl
KGJpdG1hcFNpemUpLCB7IHNjcmVlbkNvbG9yU3BhY2UocmVuZGVySW1hZ2UuZnJhbWUoKS5tYWlu
RnJhbWUoKS52aWV3KCkpIH0pOwogICAgIGlmICghc2hhcmVkQml0bWFwKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MjcsNyArOTI3LDcgQEAgV2ViQ29yZTo6RGlz
cGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeSogVwogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQog
Ci1SZWZQdHI8SW1hZ2VCdWZmZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIFJlbmRl
cmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CitSZWZQ
dHI8SW1hZ2VCdWZmZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3Qg
RmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1
cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KSBjb25zdAogewog
ICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5n
Rm9yKHB1cnBvc2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ0LDcgKzI0
NCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9y
eSogZGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeSgpIGNvbnN0IGZpbmFsOwogCiAjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQotICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5n
TW9kZSwgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBX
ZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0KSBjb25z
dCBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIFdl
YkNvcmU6OlJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgV2Vi
Q29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQpIGNvbnN0
IGZpbmFsOwogI2lmIEVOQUJMRShXRUJHTCkKICAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMQXR0cmlidXRlcyYsIFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEIGhvc3RXaW5k
b3dEaXNwbGF5SUQpIGNvbnN0IGZpbmFsOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFn
Q2xpZW50TWFjLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTY4LDkgKzY4LDcgQEAgdXNpbmcgRHJhZ0ltYWdlID0gQ0dJbWFnZVJlZjsKIAogc3RhdGlj
IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnREcmFnSW1hZ2VUb0JpdG1hcChEcmFnSW1h
Z2UgaW1hZ2UsIGNvbnN0IEludFNpemUmIHNpemUsIEZyYW1lJiBmcmFtZSkKIHsKLSAgICBTaGFy
ZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmlndXJhdGlvbjsKLSAgICBiaXRt
YXBDb25maWd1cmF0aW9uLmNvbG9yU3BhY2UuY2dDb2xvclNwYWNlID0gc2NyZWVuQ29sb3JTcGFj
ZShmcmFtZS5tYWluRnJhbWUoKS52aWV3KCkpOwotICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc2l6ZSwgYml0bWFwQ29uZmlndXJhdGlvbik7CisgICAg
YXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzaXplLCB7IHNj
cmVlbkNvbG9yU3BhY2UoZnJhbWUubWFpbkZyYW1lKCkudmlldygpKSB9KTsKICAgICBpZiAoIWJp
dG1hcCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAkod29ya2luZyBj
b3B5KQpAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBEZWNvZGVyOwogfQogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7CiBjbGFzcyBEaXNwbGF5UmVmcmVz
aE1vbml0b3I7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lVmlldzsKQEAgLTYwLDcgKzYxLDYg
QEAgc3RydWN0IFZpZXdwb3J0QXR0cmlidXRlczsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0
cnVjdCBDb2xvclNwYWNlRGF0YTsKIGNsYXNzIExheWVyVHJlZUhvc3Q7CiBzdHJ1Y3QgV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0b3JlOwpAQCAtMTgw
LDcgKzE4MCw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLy8gVXNlZCBi
eSBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS4KICAgICB2aXJ0dWFsIHZvaWQgc2V0RGV2
aWNlU2NhbGVGYWN0b3IoZmxvYXQpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRDb2xvclNwYWNl
KGNvbnN0IENvbG9yU3BhY2VEYXRhJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldENvbG9yU3Bh
Y2UoT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPikgeyB9CiAKICAgICB2
aXJ0dWFsIHZvaWQgYWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZs
b2F0UG9pbnQgb3JpZ2luKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0VHJhbnNpZW50Wm9v
bShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSB7IH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzEs
NyArMzEsNyBAQCBtZXNzYWdlcyAtPiBEcmF3aW5nQXJlYSBOb3RSZWZDb3VudGVkIHsKICAgICAv
LyBVc2VkIGJ5IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLgogICAgIFVwZGF0ZUdlb21l
dHJ5KFdlYkNvcmU6OkludFNpemUgdmlld1NpemUsIGJvb2wgZmx1c2hTeW5jaHJvbm91c2x5LCBN
YWNoU2VuZFJpZ2h0IGZlbmNlUG9ydCkKICAgICBTZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBk
ZXZpY2VTY2FsZUZhY3RvcikKLSAgICBTZXRDb2xvclNwYWNlKHN0cnVjdCBXZWJLaXQ6OkNvbG9y
U3BhY2VEYXRhIGNvbG9yU3BhY2UpCisgICAgU2V0Q29sb3JTcGFjZShzdHJ1Y3QgT3B0aW9uYWw8
V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlKQogICAgIFNldFZpZXdF
eHBvc2VkUmVjdChPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCkK
IAogICAgIEFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBv
aW50IG9yaWdpbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU5OCw3ICsyNTk4LDcgQEAg
c3RhdGljIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBzbgogICAgIFNoYXJlYWJsZUJp
dG1hcDo6Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwogI2lmIFVTRShDRykKICAgICBpZiAo
b3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc1VzZVNjcmVlbkNvbG9yU3BhY2UpCi0gICAgICAgIGNv
bmZpZ3VyYXRpb24uY29sb3JTcGFjZS5jZ0NvbG9yU3BhY2UgPSBzY3JlZW5Db2xvclNwYWNlKHBh
Z2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpKTsKKyAgICAgICAgY29uZmlndXJhdGlv
bi5jb2xvclNwYWNlID0gc2NyZWVuQ29sb3JTcGFjZShwYWdlLmNvcmVQYWdlKCktPm1haW5GcmFt
ZSgpLnZpZXcoKSk7CiAjZW5kaWYKICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWEuaAkod29ya2luZyBjb3B5KQpAQCAtOTgsNyArOTgsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc3VzcGVuZFBhaW50aW5nKCk7CiAgICAgdm9pZCByZXN1bWVQYWludGluZygp
OwogICAgIHZvaWQgc2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3RpbmdNb2RlKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHNldENvbG9yU3BhY2UoY29uc3QgQ29sb3JTcGFjZURhdGEmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHNldENvbG9yU3BhY2UoT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25D
b2xvclNwYWNlPikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGRGZW5jZShjb25zdCBXVEY6Ok1hY2hT
ZW5kUmlnaHQmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYWRkVHJhbnNhY3Rpb25DYWxsYmFja0lE
KENhbGxiYWNrSUQpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYS5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBQTEFURk9STShNQUMpCiAKLSNpbXBvcnQg
IkNvbG9yU3BhY2VEYXRhLmgiCiAjaW1wb3J0ICJEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaCIK
ICNpbXBvcnQgIkRyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oIgogI2ltcG9ydCAiTGF5ZXJIb3N0
aW5nQ29udGV4dC5oIgpAQCAtNDUsNiArNDQsNyBAQAogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9R
dWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRGVidWdQYWdlT3ZlcmxheXMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGVzdGlu
YXRpb25Db2xvclNwYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0ZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4K
QEAgLTkxLDYgKzkxLDcgQEAgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OlRpbGVkQ29y
ZQogICAgIH0pOwogCiAgICAgdXBkYXRlTGF5ZXJIb3N0aW5nQ29udGV4dCgpOworICAgIAogICAg
IHNldENvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKTsKIAogICAgIGlmIChhdXRvIHZp
ZXdFeHBvc2VkUmVjdCA9IHBhcmFtZXRlcnMudmlld0V4cG9zZWRSZWN0KQpAQCAtNjUwLDkgKzY1
MSw5IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldEwKICAgICBzZW5k
KE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5OjpVcGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5n
TW9kZSgwLCBsYXllclRyZWVDb250ZXh0KSk7CiB9CiAKLXZvaWQgVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWE6OnNldENvbG9yU3BhY2UoY29uc3QgQ29sb3JTcGFjZURhdGEmIGNvbG9yU3Bh
Y2UpCit2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRDb2xvclNwYWNlKE9w
dGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZSkKIHsKLSAg
ICBtX2xheWVySG9zdGluZ0NvbnRleHQtPnNldENvbG9yU3BhY2UoY29sb3JTcGFjZS5jZ0NvbG9y
U3BhY2UuZ2V0KCkpOworICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0Q29sb3JTcGFjZShj
b2xvclNwYWNlID8gY29sb3JTcGFjZS0+cGxhdGZvcm1Db2xvclNwYWNlKCkgOiBudWxscHRyKTsK
IH0KIAogUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4gVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWE6OmNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRvcihQbGF0Zm9ybURp
c3BsYXlJRCBkaXNwbGF5SUQpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNzc5MjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wNS0yMiAgU2FtIFdlaW5pZyAgPHdlaW5p
Z0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgZnJv
bSBhbiBlbnVtIHRvIGNsYXNzIHdyYXBwaW5nIGEgcGxhdGZvcm0gY29sb3Igc3BhY2UgKENHQ29s
b3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0Yy4pCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xp
ZW50Lm1tOgorICAgICAgICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6OmltYWdlRm9yQ3VycmVudFNo
YXJpbmdTZXJ2aWNlUGlja2VySXRlbSk6CisgICAgICAgIFVwZGF0ZSBmb3IgbmV3IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSBjbGFzcy4KKwogMjAyMS0wNS0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBs
b2NhbCB2YXJpYWJsZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
b250ZXh0TWVudUNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAogI2lt
cG9ydCA8V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db250ZXh0TWVu
dS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3Vt
ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1l
Vmlldy5oPgpAQCAtMjEzLDcgKzIxNCw3IEBAIFJldGFpblB0cjxOU0ltYWdlPiBXZWJDb250ZXh0
TWVudUNsaWVudDoKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIC8vIFRoaXMgaXMgZWZmZWN0
aXZlbHkgYSBzbmFwc2hvdCwgYW5kIHdpbGwgYmUgcGFpbnRlZCBpbiBhbiB1bmFjY2VsZXJhdGVk
IGZhc2hpb24gaW4gbGluZSB3aXRoIEZyYW1lU25hcHNob3R0aW5nLgotICAgIGF1dG8gYnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShyZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdS
QTgpOworICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShyZWN0LnNpemUoKSwg
UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJl
dHVybiBuaWw7CiAKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI3NzkyMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA1LTIyICBTYW0gV2VpbmlnICA8d2VpbmlnQGFw
cGxlLmNvbT4KKworICAgICAgICBDb252ZXJ0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBmcm9tIGFu
IGVudW0gdG8gY2xhc3Mgd3JhcHBpbmcgYSBwbGF0Zm9ybSBjb2xvciBzcGFjZSAoQ0dDb2xvclNw
YWNlUmVmIGZvciBDRyBwb3J0cywgZXRjLikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNjE0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3Bs
YXlMaXN0VGVzdHNDRy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAg
ICAgVXBhdGUgdGVzdCB0byB1c2UgbmV3IERlc3RpbmF0aW9uQ29sb3JTcGFjZSB0eXBlLgorCiAy
MDIxLTA1LTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVw
bGFjZSBMb2NrSG9sZGVyIHdpdGggTG9ja2VyIGluIGxvY2FsIHZhcmlhYmxlcwpJbmRleDogVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3Bs
YXlMaXN0VGVzdHNDRy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBVU0UoQ0cpCiAKKyNpbmNsdWRlIDxXZWJDb3JlL0Rl
c3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SXRlbXMuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaD4KQEAgLTQ2LDggKzQ3LDggQEAgVEVTVChEaXNwbGF5TGlz
dFRlc3RzLCBSZXBsYXlXaXRoTWlzc2luZwogewogICAgIEZsb2F0UmVjdCBjb250ZXh0Qm91bmRz
IHsgMCwgMCwgY29udGV4dFdpZHRoLCBjb250ZXh0SGVpZ2h0IH07CiAKLSAgICBhdXRvIGNvbG9y
U3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VT
UkdCKSk7Ci0gICAgYXV0byBjZ0NvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0
ZShudWxscHRyLCBjb250ZXh0V2lkdGgsIGNvbnRleHRIZWlnaHQsIDgsIDQgKiBjb250ZXh0V2lk
dGgsIGNvbG9yU3BhY2UuZ2V0KCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkpOwor
ICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOworICAg
IGF1dG8gY2dDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUobnVsbHB0ciwg
Y29udGV4dFdpZHRoLCBjb250ZXh0SGVpZ2h0LCA4LCA0ICogY29udGV4dFdpZHRoLCBjb2xvclNw
YWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3Qp
KTsKICAgICBHcmFwaGljc0NvbnRleHQgY29udGV4dCB7IGNnQ29udGV4dC5nZXQoKSB9OwogCiAg
ICAgYXV0byBpbWFnZUJ1ZmZlcklkZW50aWZpZXIgPSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXI6OmdlbmVyYXRlKCk7CkBAIC02OSw3ICs3MCw3IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywg
UmVwbGF5V2l0aE1pc3NpbmcKICAgICB9CiAKICAgICB7Ci0gICAgICAgIGF1dG8gaW1hZ2VCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHsgMTAwLCAxMDAgfSwgUmVuZGVyaW5nTW9kZTo6VW5h
Y2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6
QkdSQTgpOworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh7
IDEwMCwgMTAwIH0sIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIGNvbG9yU3BhY2Us
IFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgICAgIEltYWdlQnVmZmVySGFzaE1hcCBpbWFnZUJ1
ZmZlck1hcDsKICAgICAgICAgaW1hZ2VCdWZmZXJNYXAuc2V0KGltYWdlQnVmZmVySWRlbnRpZmll
ciwgaW1hZ2VCdWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CiAK
</data>
<flag name="commit-queue"
          id="450608"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429419</attachid>
            <date>2021-05-22 10:36:46 -0700</date>
            <delta_ts>2021-05-22 10:42:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226143-20210522103645.patch</filename>
            <type>text/plain</type>
            <size>269993</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5NSBAQAorMjAyMS0wNS0yMiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdyYXBwaW5nIGEgcGxhdGZvcm0gY29sb3Ig
c3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0Yy4pCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxNDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIGVudW1lcmF0aW9uIGJh
c2VkIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB3aXRoIGEgc3RydWN0IHdyYXBwaW5nCisgICAgICAg
IGEgcGxhdGZvcm0gY29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0
Yy4pLiBGb3IgcG9ydHMKKyAgICAgICAgdGhhdCBkb24ndCBoYXZlIGEgcGxhdGZvcm0gbGV2ZWwg
Y29sb3Igc3BhY2UgdHlwZSwgYSBidWlsdGluIFBsYXRmb3JtQ29sb3JTcGFjZQorICAgICAgICB0
eXBlIGlzIHByb3ZpZGVkIHRoYXQgaXMganVzdCB0aGUgb2xkIGVudW0gcmVuYW1lZCB0byBQbGF0
Zm9ybUNvbG9yU3BhY2U6Ok5hbWUuCisKKyAgICAgICAgVGhlIGdvYWwgb2YgdGhpcyBjaGFuZ2Ug
aXMgdG8gdW5pZnkgdGhlIGN1cnJlbnRseSBiaWZyYWNhdGVkIGNvbmNlcHQgb2YgYW4KKyAgICAg
ICAgSW1hZ2VCdWZmZXIncyBjb2xvciBzcGFjZSwgd2hpY2ggcHJldmlvc2x5IGNvdWxkIGVpdGhl
ciBiZSBiYXNlZCBvbiB0aGUgCisgICAgICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgYW5kIHJl
ZmxlY3RlZCBpbiB0aGUgY29sb3JTcGFjZSgpIG1lbWJlciBmdW5jdGlvbiwKKyAgICAgICAgb3Ig
KGZvciBDRyBwb3J0cykgYmFzZWQgb24gYSBDR0NvbG9yU3BhY2VSZWYsIHdpdGggdGhlIGNvbG9y
U3BhY2UoKSBmdW5jdGlvbgorICAgICAgICByZXR1cm5pbmcgc1JHQiBldmVuIGlmIHRoZSBJbWFn
ZUJ1ZmZlciB3YXMgbm90LiAKKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICog
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpD
bGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXJ0d29ya0ltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogU291cmNl
cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBJbWFnZUJpdG1hcCk6CisgICAgICAgIChXZWJD
b3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEltYWdlQml0bWFwKToKKyAgICAgICAgKiBjc3Mv
Q1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXJJbWFn
ZVZhbHVlOjppbWFnZSk6CisgICAgICAgICogaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludENhbnZhczo6Y29waWVkSW1hZ2UgY29uc3QpOgor
ICAgICAgICAqIGh0bWwvQ3VzdG9tUGFpbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
dXN0b21QYWludEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6dG9NZWRp
YVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1h
Z2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGVCdWZmZXJGb3JQYWludGlu
ZyBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAgICog
aHRtbC9JbWFnZUJpdG1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJpdG1hcDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCaXRtYXA6OmNyZWF0ZVBy
b21pc2UpOgorICAgICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Y29tbWl0VG9QbGFjZWhvbGRlckNhbnZhcyk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojpjb2xvclNwYWNlIGNvbnN0KToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0OjpzZXRPdXRwdXRCaXRtYXApOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnRvRGVzdGluYXRpb25Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvUHJlZGVmaW5l
ZENvbG9yU3BhY2UpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNl
Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1
ZmZlckNhY2hlOjppbWFnZUJ1ZmZlcik6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbkltYWdlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6YnVpbGRBcnJheUZvckNhbnZhc1BhdHRlcm4p
OgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6
Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAg
ICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hv
dHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RGcmFtZVJlY3RXaXRoQ2xpcCk6
CisgICAgICAgICogcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNhbXBsZUNvbG9yKToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9Ib3N0V2luZG93Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1Db2xv
clNwYWNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db2xvclNwYWNlOjpn
ZXQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2NyZWVuUHJvcGVydGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVu
UHJvcGVydGllczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVlbkRhdGE6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5EYXRhOjpkZWNvZGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3UGF0dGVybik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29s
b3I6OnRvQ29sb3JDb21wb25lbnRzSW5Db2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJDb2xvckNvbXBvbmVudHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yU3BhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25j
cmV0ZUltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVy
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRl
ZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpk
cmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xv
clNwYWNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IpOgorICAgICAgICAoV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5l
YXJTUkdCKToKKyAgICAgICAgKFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxh
eVAzKToKKyAgICAgICAgKFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGVzdGluYXRp
b25Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAgICAo
V2ViQ29yZTo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OnBsYXRmb3JtQ29sb3JT
cGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OmRl
Y29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJCYWNrZW5kOjpnZXRQaXhlbEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OnB1dFBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyQmFja2VuZDo6dHJhbnNmb3JtQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbG9yU3BhY2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1BpeGVsQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6
ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckNvbnZlcnNp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZVZJbWFnZUNHSW1hZ2VGb3JtYXQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1hdDo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cmFuc2Zl
ckJHUkFQaXhlbEJ1ZmZlclRvSU9TdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZVZp
ZGVvU2FtcGxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGU6
OlJlbW90ZVZpZGVvU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxl
OjpzdXJmYWNlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRl
b1NhbXBsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6Z2V0U2NyYXRjaEJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRp
bGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpibHVyU2hhZG93QnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdTaGFkb3dMYXllcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBh
aW50UmVzdWx0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyb0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0Jh
Y2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQ29sb3JDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9DR0NvbXBh
dGlibGVDb21wb25lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNHQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6cGxhdGZvcm1Db252ZXJ0Q29sb3JDb21wb25lbnRzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaDoKKyAgICAgICAgKFdlYkNvcmU6
OmNhY2hlZENHQ29sb3JTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdXJmYWNlTWF0
Y2hlc1BhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlUG9vbDo6dGFrZVN1
cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjb3B5Q0dJbWFnZUZv
ckVuY29kaW5nIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6
c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJC
YWNraW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW06CisgICAgICAg
IChXZWJDb3JlOjpJT1N1cmZhY2U6OnN1cmZhY2VGcm9tUG9vbCk6CisgICAgICAgIChXZWJDb3Jl
OjpJT1N1cmZhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0
ZUZyb21TZW5kUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9t
U3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21JbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21QaXhlbEJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OklPU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJT1N1cmZhY2U6OmVuc3VyZVBsYXRmb3JtQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJ
T1N1cmZhY2U6Om1pZ3JhdGVDb2xvclNwYWNlVG9Qcm9wZXJ0aWVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6cmVuZGVy
VG9JbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFu
c2ZlclNlc3Npb25WVC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlVHJhbnNmZXJTZXNzaW9u
VlQ6OmNyZWF0ZVBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9Q
aXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVy
Q29uZm9ybWVyQ1Y6OmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyOjpjcmVhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OmRlc3Ryb3kp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5n
Q29tbWFuZHM6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczo6Y29sb3JTcGFjZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5nQ29t
bWFuZHM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVn
aW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6R2V0UGl4ZWxCdWZmZXI6OkdldFBpeGVsQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpHZXRQaXhlbEJ1ZmZlcjo6b3V0cHV0Rm9ybWF0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpHZXRQaXhlbEJ1ZmZlcjo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpHZXRQaXhlbEJ1ZmZlcjo6ZGVjb2Rl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNs
aXBUb0RyYXdpbmdDb21tYW5kcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlz
cGxhY2VtZW50TWFwOjpzZXRSZXN1bHRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRVRpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVs
QnVmZmVyVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29u
dmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVm
ZmVjdDo6Y29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0aW5hdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRQaXhlbEJ1ZmZlclRvRGVzdGluYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpyZXF1aXJlc1BpeGVsQnVmZmVy
Q29sb3JTcGFjZUNvbnZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojp0
cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpv
cGVyYXRpbmdDb2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6c2V0T3BlcmF0aW5nQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OnJlc3VsdENvbG9yU3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZm
ZWN0OjpzZXRSZXN1bHRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL1NvdXJjZUdyYXBoaWMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6
OlNvdXJjZUdyYXBoaWMpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5JT1MubW06CisgICAgICAgIChXZWJDb3JlOjpzY3Jl
ZW5Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RTY3JlZW5Qcm9wZXJ0aWVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5NYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpjb2xsZWN0U2NyZWVuUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpz
Y3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50
b0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNw
bGF5Q2FwdHVyZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5EaXNwbGF5Q2FwdHVy
ZXJNYWM6OmNyZWF0ZURpc3BsYXlTdHJlYW0pOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2U6OmltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9wbGF5
c3RhdGlvbi9QbGF0Zm9ybVNjcmVlblBsYXlTdGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNjcmVlbkNvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVl
bldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS93cGUvUGxhdGZvcm1TY3JlZW5XUEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oOgor
ICAgICAgICAoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YTo6ZGVjb2Rl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZpbHRlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
RmlsdGVyOjpidWlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmFsbG9jYXRlQmFj
a2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjphcHBseSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnBhdHRlcm5Gb3JEZXNjcmlwdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50U3lz
dGVtUHJldmlld0JhZGdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRQcm9ncmVzc0Jhcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
aGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VDbGlwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291
cmNlQ2xpcHBlcjo6YXBwbHlDbGlwcGluZ1RvQ29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1hc2tBbmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6ZHJhd0NvbnRlbnRJ
bnRvTWFza0ltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
TWFza2VyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRl
cm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpjcmVh
dGVUaWxlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5n
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVh
dGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0Ojpi
dWZmZXJGb3JlZ3JvdW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0Nv
bnRleHQuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUpOgorCiAyMDIxLTA1LTIyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiBDb21wb25lbnQgYXQgaW5kZXgg
MSBpcyAxLjAwMDAwMCBhbmQgaXMgZ3JlYXRlciB0aGFuIHRoZSBhbGxvd2VkIG1heGltdW0gMS4w
MDAwMDAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTE5Nyw2ICsxMTk3LDcg
QEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Rhc2hB
cnJheS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGVjb2RpbmdPcHRpb25zLmgKKyAgICBwbGF0
Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxh
eVJlZnJlc2hNb25pdG9yQ2xpZW50LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVm
cmVzaE1vbml0b3JGYWN0b3J5LmgKQEAgLTEyOTMsNiArMTI5NCw3IEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZl
ci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1BpeGVsRm9ybWF0LmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bUNvbG9yU3BhY2UuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE5
NTAsNiArMTk1MCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhU
ZXh0Q29udHJvbGxlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBi
b2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NE
YXRhU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2wKIAogICAgICAgICBhdXRvIGJpdG1hcElt
YWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgICAgICBiaXRtYXBJbWFnZS0+c2V0RGF0
YShXVEZNb3ZlKGJ1ZmZlclRvU2FuaXRpemUpLCB0cnVlKTsKLSAgICAgICAgYXV0byBpbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
LCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
ICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikgewogICAgICAgICAgICAgbV9kYXRhID0geyBudWxs
U3RyaW5nKCkgfTsKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1l
dGFkYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCB2b2lkIEFydHdvcmtJ
bWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyVG9TYW5pdGl6ZSA9IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBhdXRv
IGJpdG1hcEltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIGJpdG1hcEltYWdlLT5z
ZXREYXRhKFdURk1vdmUoYnVmZmVyVG9TYW5pdGl6ZSksIHRydWUpOwotICAgIGF1dG8gaW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJpdG1hcEltYWdlLT5zaXplKCksIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAg
ICBpZiAoIWltYWdlQnVmZmVyKSB7CiAgICAgICAgIG1fY2FsbGJhY2sobnVsbHB0cik7CiAgICAg
ICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjc3OTIwKQorKysg
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEz
IEBACisyMDIxLTA1LTIyICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAg
ICBDb252ZXJ0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBmcm9tIGFuIGVudW0gdG8gY2xhc3Mgd3Jh
cHBpbmcgYSBwbGF0Zm9ybSBjb2xvciBzcGFjZSAoQ0dDb2xvclNwYWNlUmVmIGZvciBDRyBwb3J0
cywgZXRjLikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyNjE0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDoKKyAgICAgICAgQWRkIGFkZGlvbmFsIFNQ
SSBmb3Igd29ya2luZyB3aXRoIENHQ29sb3JTcGFjZVJlZnMuCisKIDIwMjEtMDUtMjEgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBZG9w
dCBRTEl0ZW0gaW4gV0tJbWFnZUV4dHJhY3Rpb25QcmV2aWV3Q29udHJvbGxlcgpJbmRleDogU291
cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGlj
c1NQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDIsNiArMjQyLDcgQEAgdHlwZWRlZiB2b2lkICgq
Q0dTTm90aWZ5UHJvY1B0cikoQ0dTTm90aQogCiBXVEZfRVhURVJOX0NfQkVHSU4KIAorYm9vbCBD
R0NvbG9yVHJhbnNmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyhDR0NvbG9yVHJhbnNmb3JtUmVm
LCBDR0NvbG9yU3BhY2VSZWYsIENHQ29sb3JSZW5kZXJpbmdJbnRlbnQsIGNvbnN0IENHRmxvYXQg
c3JjQ29tcG9uZW50c1tdLCBDR0Zsb2F0IGRzdENvbXBvbmVudHNbXSk7CiBDR0NvbG9yUmVmIENH
Q29sb3JUcmFuc2Zvcm1Db252ZXJ0Q29sb3IoQ0dDb2xvclRyYW5zZm9ybVJlZiwgQ0dDb2xvclJl
ZiwgQ0dDb2xvclJlbmRlcmluZ0ludGVudCk7CiBDR0NvbG9yVHJhbnNmb3JtUmVmIENHQ29sb3JU
cmFuc2Zvcm1DcmVhdGUoQ0dDb2xvclNwYWNlUmVmLCBDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRl
cyk7CiAKQEAgLTI5MSw2ICsyOTIsOCBAQCBDR1N0eWxlUmVmIENHR1N0YXRlR2V0U3R5bGUoQ0dH
U3RhdGVSZWYpCiBDR1N0eWxlVHlwZSBDR1N0eWxlR2V0VHlwZShDR1N0eWxlUmVmKTsKIGNvbnN0
IHZvaWQgKkNHU3R5bGVHZXREYXRhKENHU3R5bGVSZWYpOwogQ0dDb2xvclJlZiBDR1N0eWxlR2V0
Q29sb3IoQ0dTdHlsZVJlZik7Citib29sIENHQ29sb3JTcGFjZUVxdWFsVG9Db2xvclNwYWNlKENH
Q29sb3JTcGFjZVJlZiwgQ0dDb2xvclNwYWNlUmVmKTsKK0NGU3RyaW5nUmVmIENHQ29sb3JTcGFj
ZUNvcHlJQ0NQcm9maWxlRGVzY3JpcHRpb24oQ0dDb2xvclNwYWNlUmVmKTsKIAogI2lmIEhBVkUo
Q0dQQVRIX0dFVF9OVU1CRVJfT0ZfRUxFTUVOVFMpCiBzaXplX3QgQ0dQYXRoR2V0TnVtYmVyT2ZF
bGVtZW50cyhDR1BhdGhSZWYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0zOTk2LDYgKzM5OTYsOCBAQAogCQlCQzIzRjBEQjBEQUZGNEE0MDA5RkRDOTEgLyogR2VuZXJh
dGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMjNGMERBMERBRkY0QTQwMDlGREM5MSAvKiBHZW5lcmF0ZWRJbWFnZS5oICovOyB9OwogCQlC
QzI3NEIyRjE0MEVCRUIyMDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI3NEIyRTE0MEVC
RUIyMDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggKi87IH07CiAJCUJDMkNC
RjRFMTQwRjFBQkQwMDM4NzlCRSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJDQkY0QjE0MEYxQTY1MDAzODc5
QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oICovOyB9OworCQlCQzJDQ0ExMDI2NTVEREIyMDBC
OEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJDQ0EwRTI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGlu
YXRpb25Db2xvclNwYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJQkMyQ0NBMTUyNjU1RUU1ODAwQjhDMDM1IC8qIFBsYXRmb3JtQ29sb3JTcGFj
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyQ0NB
MTQyNjU1RUU1ODAwQjhDMDM1IC8qIFBsYXRmb3JtQ29sb3JTcGFjZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMzA1QzdBMEMwNzZCQjMwMENE
MjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMwNUM3ODBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2Jq
ZWN0RWxlbWVudC5oICovOyB9OwogCQlCQzM0OEJENDBEQjdGODA0MDA0QUJBQjkgLyogSlNYTUxI
dHRwUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkMzNDhCRDIwREI3RjgwNDAwNEFCQUI5IC8qIEpTWE1MSHR0cFJlcXVlc3QuaCAqLzsgfTsK
IAkJQkMzNDhCRDQwREI3RjgwNDAwNEFCQUJBIC8qIFdlYkNvcmVKU0J1aWx0aW5zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzM0OEJEMjBEQjdGODA0
MDA0QUJBQkEgLyogV2ViQ29yZUpTQnVpbHRpbnMuaCAqLzsgfTsKQEAgLTE0MTM0LDYgKzE0MTM2
LDkgQEAKIAkJQkMyOTkzNUMxN0ExREQ1ODAwQkNFODgwIC8qIENvbG9ySW5wdXRUeXBlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9ySW5wdXRUeXBlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyQ0JGNEIxNDBGMUE2NTAwMzg3OUJFIC8q
IEpTV2ViR0xDb250ZXh0RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNXZWJHTENvbnRleHRFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJD
QkY3QTE0MEYxRDU4MDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMQ29udGV4dEV2ZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQ0NBMEUyNjU1RERCMjAwQjhDMDM1IC8qIERl
c3RpbmF0aW9uQ29sb3JTcGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQ0NBMEYyNjU1RERCMjAwQjhD
MDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJD
Q0ExNDI2NTVFRTU4MDBCOEMwMzUgLyogUGxhdGZvcm1Db2xvclNwYWNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBsYXRmb3JtQ29sb3JTcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
QzJFRDU1NDBDNkI5QkQzMDA5MjBCRkYgLyogSlNFbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRWxlbWVudEN1c3RvbS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMkVENkJCMEM2QkQyRjAwMDkyMEJGRiAvKiBKU0F0dHJD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBdHRyQ3Vz
dG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzMDVDNzcwQzA3NkJCMzAw
Q0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTSFRNTE9iamVjdEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjY5MjUsNiArMjY5MzAsOCBAQAogCQkJCTJEMkZDMDU1MTQ2MENENkYw
MDI2MzYzMyAvKiBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oICovLAogCQkJCUE4Q0I0MTAyMEU4
NUI4QTUwMDMyQzRGMCAvKiBEYXNoQXJyYXkuaCAqLywKIAkJCQk1NTUxMzAwMDFFN0NDQ0NBMDBB
NjlFMzggLyogRGVjb2RpbmdPcHRpb25zLmggKi8sCisJCQkJQkMyQ0NBMEYyNjU1RERCMjAwQjhD
MDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHAgKi8sCisJCQkJQkMyQ0NBMEUyNjU1RERC
MjAwQjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oICovLAogCQkJCTQ5RkM3QTRGMTQ0
NEFGNUYwMEE1RDg2NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwICovLAogCQkJCTQ5QUYy
RDY4MTQ0MzVEMDUwMDE2QTc4NCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3IuaCAqLywKIAkJCQky
RDI5RUNDMTE5MkVDQzgzMDA5ODRCNzggLyogRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmNw
cCAqLywKQEAgLTI3OTk0LDYgKzI4MDAxLDcgQEAKIAkJCQkxQUY1RTREMzFFNTY3MzVBMDA0QTFG
MDEgLyogUGFzdGVib2FyZFdyaXRlckRhdGEuaCAqLywKIAkJCQkxREJDMUI1NTIzNDdCM0QyMDBC
OTAxQUYgLyogUGljdHVyZUluUGljdHVyZU9ic2VydmVyLmggKi8sCiAJCQkJMUQyQzgyQjYyMzZB
M0Y2QTAwNTVENkM1IC8qIFBpY3R1cmVJblBpY3R1cmVTdXBwb3J0LmggKi8sCisJCQkJQkMyQ0NB
MTQyNjU1RUU1ODAwQjhDMDM1IC8qIFBsYXRmb3JtQ29sb3JTcGFjZS5oICovLAogCQkJCUExNDk3
ODcwMUFCQUYzQTUwMENFRjdFNCAvKiBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaCAqLywKIAkJCQlC
QzVDNzYyOTE0OTdGRTE0MDBCQzQ3NzUgLyogUGxhdGZvcm1FdmVudC5oICovLAogCQkJCUE3MjNG
NzdBMTQ4NENBNEMwMDhDNkRCRSAvKiBQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oICovLApAQCAtMzIy
MzAsNiArMzIyMzgsNyBAQAogCQkJCTk0Nzk0OTI1MUUwMzA4QUYwMDAxOEQ4NSAvKiBEZXByZWNh
dGVkQ1NTT01WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTQ3OTQ5M0QxRTA0NjNCNjAwMDE4
RDg1IC8qIERlcHJlY2F0ZWRDU1NPTVZhbHVlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NC
RDEyOUUxRjk4QjkwRTAwMTI3RDI5IC8qIERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQkMyQ0NBMTAyNjU1RERCMjAwQjhDMDM1IC8qIERlc3RpbmF0aW9uQ29s
b3JTcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDExMjIzQzUyNjAzNTY3RDAwQjBBMEI2IC8q
IERldGFjaGVkUlRDRGF0YUNoYW5uZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QzlBQkY5MTM1
N0EzQkYwMEY1NTAzRiAvKiBEZXRhaWxzTWFya2VyQ29udHJvbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTFFRDc3OEQxQkUzMjk0MDAwREMxNzkxIC8qIERldmljZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0zNDUxOCw2ICszNDUyNyw3IEBACiAJCQkJNDk5QjNFQzUxMjhDQ0M0NzAwRTcyNkMyIC8qIFBs
YXRmb3JtQ0FMYXllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDkzRTVFMDkxMkQ2NDIwNTAwMDIw
MDgxIC8qIFBsYXRmb3JtQ0FMYXllckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ3MEJB
MTMxODA3NERERjAwMDE5MDhBIC8qIFBsYXRmb3JtQ0FMYXllckNvY29hLmggaW4gSGVhZGVycyAq
LywKKwkJCQlCQzJDQ0ExNTI2NTVFRTU4MDBCOEMwMzUgLyogUGxhdGZvcm1Db2xvclNwYWNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBMTQ5Nzg3MTFBQkFGM0E1MDBDRUY3RTQgLyogUGxhdGZvcm1D
b250ZW50RmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVDNzYyQjE0OTdGRTE0MDBCQzQ3
NzUgLyogUGxhdGZvcm1FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjY2MDFFQkYxNEIzQjlB
RDAwMTJDMEZFIC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5SU9TLmggaW4gSGVhZGVycyAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4Miw3ICsx
MDgyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlBy
ZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCIH07CisgICAgICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlw
bGljYXRpb246OlByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCkgfTsKICAgICAgICAgY29uc3QgSW50U2l6ZSYgbG9naWNhbFNpemUg
PSBidWZmZXItPmxvZ2ljYWxTaXplKCk7CiAgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBidWZm
ZXItPmdldFBpeGVsQnVmZmVyKGZvcm1hdCwgeyBJbnRQb2ludDo6emVybygpLCBsb2dpY2FsU2l6
ZSB9KTsKICAgICAgICAgaWYgKCFwaXhlbEJ1ZmZlcikgewpAQCAtMzE4Nyw3ICszMTg3LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgIH0KIAotICAg
ICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQ
cmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiB9OworICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRp
cGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBQaXhlbEJ1
ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1hdCwgaW1hZ2VEYXRhU2l6ZSwgYXJyYXlCdWZmZXIucmVsZWFz
ZU5vbk51bGwoKSk7CiAgICAgICAgIGlmICghcGl4ZWxCdWZmZXIpIHsKICAgICAgICAgICAgIGZh
aWwoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZh
bHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDcgKzExNiw3IEBAIFJlZlB0cjxJbWFnZT4g
Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6aW1hZ2UKIAogICAgIC8vIFRyYW5zZm9ybSBJbWFnZSBpbnRv
IEltYWdlQnVmZmVyLgogICAgIC8vIEZJWE1FICgxNDk0MjQpOiBUaGlzIGJ1ZmZlciBzaG91bGQg
bm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkLgotICAgIGF1dG8gdGV4dHVyZSA9
IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwg
MSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAg
IGF1dG8gdGV4dHVyZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CiAgICAgaWYgKCF0ZXh0dXJlKQogICAgICAgICByZXR1cm4gJkltYWdlOjpu
dWxsSW1hZ2UoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZh
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZh
cy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFp
bnRDYW52YXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBAIEltYWdlKiBDdXN0
b21QYWludENhbnZhczo6Y29waWVkSW1hZ2UoKSAKICAgICBpZiAoIXdpZHRoKCkgfHwgIWhlaWdo
dCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIG1fY29waWVkQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBudWxscHRy
KTsKKyAgICBtX2NvcGllZEJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBudWxscHRyKTsKICAgICBpZiAoIW1fY29waWVkQnVmZmVy
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9D
dXN0b21QYWludEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0N1
c3RvbVBhaW50SW1hZ2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0N1c3RvbVBhaW50SW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsNyArMTk4LDcg
QEAgdm9pZCBDdXN0b21QYWludEltYWdlOjpkcmF3UGF0dGVybihHcmFwaAogICAgIGFkanVzdGVk
UGF0dGVybkNUTS5zY2FsZSgxLjAgLyB4U2NhbGUsIDEuMCAvIHlTY2FsZSk7CiAgICAgYWRqdXN0
ZWRTcmNSZWN0LnNjYWxlKHhTY2FsZSwgeVNjYWxlKTsKIAotICAgIGF1dG8gYnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoYWRqdXN0ZWRTaXplLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IsIGRlc3RDb250ZXh0KTsKKyAgICBhdXRvIGJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGFkanVzdGVkU2l6ZSwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCksIGRlc3RDb250ZXh0KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuOwogICAgIGRvQ3VzdG9tUGFpbnQoYnVmZmVyLT5jb250ZXh0KCksIGFkanVzdGVk
U2l6ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyNSw3ICs4MjUsNyBAQCBSZWZQdHI8TWVkaWFTYW1w
bGU+IEhUTUxDYW52YXNFbGVtZW50Ojp0CiAgICAgLy8gRklYTUU6IFRoaXMgY2FuIGxpa2VseSBi
ZSBvcHRpbWl6ZWQgcXVpdGUgYSBiaXQsIGVzcGVjaWFsbHkgaW4gdGhlIGNhc2VzIHdoZXJlCiAg
ICAgLy8gdGhlIEltYWdlQnVmZmVyIGlzIGJhY2tlZCBieSBHUFUgbWVtb3J5IGFscmVhZHkgYW5k
L29yIGlzIGluIHRoZSBHUFUgcHJvY2VzcyBieQogICAgIC8vIHNwZWNpYWxpemluZyB0b01lZGlh
U2FtcGxlKCkgaW4gSW1hZ2VCdWZmZXJCYWNrZW5kIHRvIG5vdCB1c2UgZ2V0UGl4ZWxCdWZmZXIo
KS4KLSAgICBhdXRvIHBpeGVsQnVmZmVyID0gaW1hZ2VCdWZmZXItPmdldFBpeGVsQnVmZmVyKHsg
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6QkdS
QTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9LCB7IHsgfSwgaW1hZ2VCdWZmZXItPmxv
Z2ljYWxTaXplKCkgfSk7CisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5nZXRQ
aXhlbEJ1ZmZlcih7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4
ZWxGb3JtYXQ6OkJHUkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9LCB7IHsgfSwg
aW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkgfSk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTk1NSw3ICs5NTUsNyBAQCB2b2lkIEhUTUxDYW52
YXNFbGVtZW50OjpjcmVhdGVJbWFnZUJ1ZmZlCiAgICAgYXV0byBbY29sb3JTcGFjZSwgcGl4ZWxG
b3JtYXRdID0gWyZdIHsKICAgICAgICAgaWYgKG1fY29udGV4dCkKICAgICAgICAgICAgIHJldHVy
biBzdGQ6OnBhaXIgeyBtX2NvbnRleHQtPmNvbG9yU3BhY2UoKSwgbV9jb250ZXh0LT5waXhlbEZv
cm1hdCgpIH07Ci0gICAgICAgIHJldHVybiBzdGQ6OnBhaXIgeyBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCB9OworICAgICAgICByZXR1cm4gc3RkOjpwYWly
IHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCB9Owog
ICAgIH0oKTsKIAogICAgIHNldEltYWdlQnVmZmVyKEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgp
LCByZW5kZXJpbmdNb2RlLCB1c2VEaXNwbGF5TGlzdCwgUmVuZGVyaW5nUHVycG9zZTo6Q2FudmFz
LCAxLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgaG9zdFdpbmRvdykpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yODEsNyArMjgxLDcgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjptZWRpYVBsYXllckZpcnN0
VgogICAgICAgICByZW5kZXJlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKIH0KIAotUmVmUHRyPElt
YWdlQnVmZmVyPiBIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGVCdWZmZXJGb3JQYWludGluZyhjb25z
dCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgRGVzdGluYXRp
b25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KSBjb25zdAor
UmVmUHRyPEltYWdlQnVmZmVyPiBIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGVCdWZmZXJGb3JQYWlu
dGluZyhjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwg
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhl
bEZvcm1hdCkgY29uc3QKIHsKICAgICBhdXRvKiBob3N0V2luZG93ID0gZG9jdW1lbnQoKS52aWV3
KCkgJiYgZG9jdW1lbnQoKS52aWV3KCktPnJvb3QoKSA/IGRvY3VtZW50KCkudmlldygpLT5yb290
KCktPmhvc3RXaW5kb3coKSA6IG51bGxwdHI7CiAgICAgYXV0byBzaG91bGRVc2VEaXNwbGF5TGlz
dCA9IGRvY3VtZW50KCkuc2V0dGluZ3MoKS5kaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkKCkgPyBT
aG91bGRVc2VEaXNwbGF5TGlzdDo6WWVzIDogU2hvdWxkVXNlRGlzcGxheUxpc3Q6Ok5vOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMywxMiArMzMsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U7CiBjbGFzcyBIVE1MSW1hZ2VMb2FkZXI7CiBjbGFzcyBJbWFnZUJ1
ZmZlcjsKIGNsYXNzIFJlbmRlclZpZGVvOwogY2xhc3MgUGljdHVyZUluUGljdHVyZU9ic2VydmVy
OwogCi1lbnVtIGNsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7CiBlbnVtIGNs
YXNzIFBpeGVsRm9ybWF0IDogdWludDhfdDsKIGVudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJv
b2w7CiAKQEAgLTcyLDcgKzcyLDcgQEAgcHVibGljOgogICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1
bGxzY3JlZW4oKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgUmVmUHRyPEltYWdlQnVmZmVyPiBj
cmVhdGVCdWZmZXJGb3JQYWludGluZyhjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdDsKKyAgICBSZWZQdHI8SW1h
Z2VCdWZmZXI+IGNyZWF0ZUJ1ZmZlckZvclBhaW50aW5nKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRl
cmluZ01vZGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBpeGVsRm9ybWF0KSBjb25z
dDsKIAogICAgIC8vIFVzZWQgYnkgY2FudmFzIHRvIGdhaW4gcmF3IHBpeGVsIGFjY2VzcwogICAg
IHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0Jik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg0LDEyICs4NCwxMiBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQml0
bWFwOjpjcmVhdGVJCiAgICAgICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogICAgICAgICBpZiAoZG9jdW1lbnQudmlldygpICYm
IGRvY3VtZW50LnZpZXcoKS0+cm9vdCgpKSB7CiAgICAgICAgICAgICBhdXRvIGhvc3RXaW5kb3cg
PSBkb2N1bWVudC52aWV3KCktPnJvb3QoKS0+aG9zdFdpbmRvdygpOwotICAgICAgICAgICAgcmV0
dXJuIEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlz
cGxheUxpc3Q6Ok5vLCBSZW5kZXJpbmdQdXJwb3NlOjpDYW52YXMsIHJlc29sdXRpb25TY2FsZSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGhvc3RXaW5k
b3cpOworICAgICAgICAgICAgcmV0dXJuIEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVuZGVy
aW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3Q6Ok5vLCBSZW5kZXJpbmdQdXJwb3NlOjpDYW52
YXMsIHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVs
Rm9ybWF0OjpCR1JBOCwgaG9zdFdpbmRvdyk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBG
SVhNRSA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjE4NDgyPiBFbmFibGUgd29ya2VyIGJhc2VkIElt
YWdlQml0bWFwIGFuZCBPZmZzY3JlZW5DYW52YXMgZHJhd2luZyB0byB1c2UgR1BVIFByb2Nlc3Mg
cmVuZGVyaW5nCi0gICAgcmV0dXJuIEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVuZGVyaW5n
TW9kZSwgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CisgICAgcmV0dXJuIEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVu
ZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKIH0KIAogdm9pZCBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJv
bWlzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBJbWFn
ZUJpdG1hcDo6U291cmNlJiYgc291cmNlLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLCBJ
bWFnZUJpdG1hcDo6UHJvbWlzZSYmIHByb21pc2UpCkBAIC01MDQsNyArNTA0LDcgQEAgdm9pZCBJ
bWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlzZShTY3JpcHRFeAogICAgIGF1dG8gb3V0cHV0U2l6ZSA9
IG91dHB1dFNpemVGb3JTb3VyY2VSZWN0YW5nbGUoc291cmNlUmVjdGFuZ2xlLCBvcHRpb25zKTsK
IAogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgY29sb3Igc3BhY2VzIC8gcGl4ZWwgZm9y
bWF0cyB0byBJbWFnZUJpdG1hcC4KLSAgICBhdXRvIGJpdG1hcERhdGEgPSB2aWRlby0+Y3JlYXRl
QnVmZmVyRm9yUGFpbnRpbmcob3V0cHV0U2l6ZSwgYnVmZmVyUmVuZGVyaW5nTW9kZSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gYml0
bWFwRGF0YSA9IHZpZGVvLT5jcmVhdGVCdWZmZXJGb3JQYWludGluZyhvdXRwdXRTaXplLCBidWZm
ZXJSZW5kZXJpbmdNb2RlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKICAgICBpZiAoIWJpdG1hcERhdGEpIHsKICAgICAgICAgcmVzb2x2ZVdpdGhC
bGFua0ltYWdlQnVmZmVyKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsICF0YWludHNPcmlnaW4oc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5zZWN1cml0eU9yaWdpbigpLCAqdmlkZW8pLCBXVEZNb3ZlKHBy
b21pc2UpKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9PZmZz
Y3JlZW5DYW52YXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2Ny
ZWVuQ2FudmFzLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9P
ZmZzY3JlZW5DYW52YXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTEsMTQgKzQ1MSwxNCBAQCB2
b2lkIE9mZnNjcmVlbkNhbnZhczo6Y29tbWl0VG9QbGFjZWhvbGRlCiAgICAgICAgIG1fY29udGV4
dC0+cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKTsKIAogICAgIGlmIChtX3BsYWNlaG9s
ZGVyRGF0YS0+YnVmZmVyUGlwZVNvdXJjZSkgewotICAgICAgICBhdXRvIGJ1ZmZlckNvcHkgPSBp
bWFnZUJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFn
ZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgaW1h
Z2VCdWZmZXItPmNvbnRleHQoKSk7CisgICAgICAgIGF1dG8gYnVmZmVyQ29weSA9IGltYWdlQnVm
ZmVyLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlQnVmZmVy
LT5sb2dpY2FsU2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGltYWdlQnVm
ZmVyLT5jb250ZXh0KCkpOwogICAgICAgICBpZiAoYnVmZmVyQ29weSkKICAgICAgICAgICAgIG1f
cGxhY2Vob2xkZXJEYXRhLT5idWZmZXJQaXBlU291cmNlLT5oYW5kbGUoV1RGTW92ZShidWZmZXJD
b3B5KSk7CiAgICAgfQogCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fcGxhY2Vob2xkZXJEYXRhLT5i
dWZmZXJMb2NrIH07CiAgICAgYm9vbCBzaG91bGRQdXNoQnVmZmVyID0gIW1fcGxhY2Vob2xkZXJE
YXRhLT5wZW5kaW5nQ29tbWl0QnVmZmVyOwotICAgIG1fcGxhY2Vob2xkZXJEYXRhLT5wZW5kaW5n
Q29tbWl0QnVmZmVyID0gaW1hZ2VCdWZmZXItPmNvcHlSZWN0VG9CdWZmZXIoRmxvYXRSZWN0KEZs
b2F0UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IsIGltYWdlQnVmZmVyLT5jb250ZXh0KCkpOworICAgIG1fcGxhY2Vob2xkZXJE
YXRhLT5wZW5kaW5nQ29tbWl0QnVmZmVyID0gaW1hZ2VCdWZmZXItPmNvcHlSZWN0VG9CdWZmZXIo
RmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7CiAgICAg
aWYgKG1fcGxhY2Vob2xkZXJEYXRhLT5wZW5kaW5nQ29tbWl0QnVmZmVyICYmIHNob3VsZFB1c2hC
dWZmZXIpCiAgICAgICAgIHB1c2hCdWZmZXJUb1BsYWNlaG9sZGVyKCk7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3
LDYgQEAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVy
dHlQYXJzZXJIZWxwZXJzLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlQYXJzZXJXb3JrZXJTYWZl
LmgiCi0jaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkdyYWRpZW50LmgiCiAjaW5j
bHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQu
Y3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAog
CiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgiCi0j
aW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5o
IgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKQEAgLTkwLDcgKzkwLDcgQEAg
UGl4ZWxGb3JtYXQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6cGl4ZQogCiBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDo6Y29sb3JTcGFjZSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjsKKyAgICByZXR1cm4gRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiB9CiAKIGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDo6d291bGRUYWludE9yaWdpbihjb25zdCBDYW52YXNQYXR0ZXJuKiBwYXR0ZXJuKQpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMyArMzcsMTMgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FudmFzUGF0dGVybjsKK2NsYXNzIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIEhUTUxDYW52YXNFbGVtZW50OwogY2xhc3MgSFRNTElt
YWdlRWxlbWVudDsKIGNsYXNzIEhUTUxWaWRlb0VsZW1lbnQ7CiBjbGFzcyBJbWFnZUJpdG1hcDsK
IGNsYXNzIFR5cGVkT01DU1NJbWFnZVZhbHVlOwogY2xhc3MgV2ViR0xPYmplY3Q7Ci1lbnVtIGNs
YXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFBpeGVsRm9y
bWF0IDogdWludDhfdDsKIAogY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCA6IHB1YmxpYyBT
Y3JpcHRXcmFwcGFibGUgewpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VC
aXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiAyNzc5
MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0Nv
bnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgSW1hZ2VCaXRt
YXBSZW5kZXJpbmdDb250ZXh0OjpzZXRPdXQKICAgICAgICAgLy8gb25seSByZWFzb24gSSBjYW4g
dGhpbmsgb2YgaXMgdG9EYXRhVVJMKCksIGJ1dCB0aGF0IGRvZXNuJ3Qgc2VlbSBsaWtlCiAgICAg
ICAgIC8vIGEgZ29vZCBlbm91Z2ggYXJndW1lbnQgdG8gd2FzdGUgbWVtb3J5LgogCi0gICAgICAg
IGNhbnZhcygpLT5zZXRJbWFnZUJ1ZmZlckFuZE1hcmtEaXJ0eShJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KEZsb2F0U2l6ZShjYW52YXMoKS0+d2lkdGgoKSwgY2FudmFzKCktPmhlaWdodCgpKSwgYnVmZmVy
UmVuZGVyaW5nTW9kZSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1h
dDo6QkdSQTgpKTsKKyAgICAgICAgY2FudmFzKCktPnNldEltYWdlQnVmZmVyQW5kTWFya0RpcnR5
KEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKGNhbnZhcygpLT53aWR0aCgpLCBjYW52YXMo
KS0+aGVpZ2h0KCkpLCBidWZmZXJSZW5kZXJpbmdNb2RlLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CiAKICAgICAgICAgLy8gMS40LiBTZXQg
dGhlIG91dHB1dCBiaXRtYXAncyBvcmlnaW4tY2xlYW4gZmxhZyB0byB0cnVlLgogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2Uu
Y3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVk
ZWZpbmVkQ29sb3JTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcmVkZWZpbmVkQ29sb3JTcGFjZS5oIgogCi0j
aW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5o
IgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0z
NSwzMyArMzUsMjYgQEAgRGVzdGluYXRpb25Db2xvclNwYWNlIHRvRGVzdGluYXRpb25Db2xvcgog
ewogICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewogICAgIGNhc2UgUHJlZGVmaW5lZENvbG9yU3Bh
Y2U6OlNSR0I6Ci0gICAgICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I7Cisg
ICAgICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKICNpZiBFTkFCTEUo
REVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExBWV9QMykKICAgICBjYXNlIFByZWRlZmluZWRD
b2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0gICAgICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OkRpc3BsYXlQMzsKKyAgICAgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlz
cGxheVAzKCk7CiAjZW5kaWYKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOworICAgIHJldHVybiBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKIH0KIAotT3B0aW9uYWw8UHJlZGVmaW5lZENvbG9yU3Bh
Y2U+IHRvUHJlZGVmaW5lZENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3Bh
Y2UpCitPcHRpb25hbDxQcmVkZWZpbmVkQ29sb3JTcGFjZT4gdG9QcmVkZWZpbmVkQ29sb3JTcGFj
ZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpCiB7Ci0gICAgc3dpdGNo
IChjb2xvclNwYWNlKSB7Ci0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I6Cisg
ICAgaWYgKGNvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpCiAgICAg
ICAgIHJldHVybiBQcmVkZWZpbmVkQ29sb3JTcGFjZTo6U1JHQjsKLSNpZiBFTkFCTEUoREVTVElO
QVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OkxpbmVhclNSR0I6Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0jZW5kaWYK
ICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExBWV9QMykKLSAgICBjYXNl
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxheVAzOgorICAgIGlmIChjb2xvclNwYWNlID09
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxheVAzKCkpCiAgICAgICAgIHJldHVybiBQcmVk
ZWZpbmVkQ29sb3JTcGFjZTo6RGlzcGxheVAzOwogI2VuZGlmCi0gICAgfQogCi0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5oCShy
ZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVk
Q29sb3JTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotZW51bSBjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgOiB1aW50OF90
OworY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlOwogCiBlbnVtIGNsYXNzIFByZWRlZmluZWRD
b2xvclNwYWNlIHsKICAgICBTUkdCCkBAIC00MCw3ICs0MCw3IEBAIGVudW0gY2xhc3MgUHJlZGVm
aW5lZENvbG9yU3BhY2UgewogfTsKIAogRGVzdGluYXRpb25Db2xvclNwYWNlIHRvRGVzdGluYXRp
b25Db2xvclNwYWNlKFByZWRlZmluZWRDb2xvclNwYWNlKTsKLU9wdGlvbmFsPFByZWRlZmluZWRD
b2xvclNwYWNlPiB0b1ByZWRlZmluZWRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSk7
CitPcHRpb25hbDxQcmVkZWZpbmVkQ29sb3JTcGFjZT4gdG9QcmVkZWZpbmVkQ29sb3JTcGFjZShj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKIAogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNw
cAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2MjMsNyArNzYyMyw3
IEBAIEltYWdlQnVmZmVyKiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjoKICAgICB9CiAKICAg
ICAvLyBGSVhNRSAoMTQ5NDIzKTogU2hvdWxkIHRoaXMgSW1hZ2VCdWZmZXIgYmUgdW5jb25kaXRp
b25hbGx5IHVuYWNjZWxlcmF0ZWQ/Ci0gICAgYXV0byB0ZW1wID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byB0ZW1wID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAo
IXRlbXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIEFTU0VSVChtX2J1ZmZlcnMuc2l6
ZSgpID4gMCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xU
ZXh0VHJhY2tDb250YWluZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50LmNwcAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxOCw3
ICs0MTgsNyBAQCBSZWZQdHI8SW1hZ2U+IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhCiAgICAg
SW50UmVjdCBwYWludGluZ1JlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5zaXplKCkp
OwogCiAgICAgLy8gRklYTUUgKDE0OTQyMik6IFRoaXMgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5j
b25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQuCi0gICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKHBhaW50aW5nUmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsIGRldmljZVNjYWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHBh
aW50aW5nUmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIGRldmljZVNj
YWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJH
UkE4KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTE0OSw3ICsxMTQ5LDcgQEAgaW50IEluc3BlY3RvckNhbnZh
czo6aW5kZXhGb3JEYXRhKER1cGxpYwogICAgICAgICAgICAgaWYgKENhY2hlZEltYWdlKiBjYWNo
ZWRJbWFnZSA9IGltYWdlRWxlbWVudC0+Y2FjaGVkSW1hZ2UoKSkgewogICAgICAgICAgICAgICAg
IEltYWdlKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZSgpOwogICAgICAgICAgICAgICAgIGlm
IChpbWFnZSAmJiBpbWFnZSAhPSAmSW1hZ2U6Om51bGxJbWFnZSgpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXpl
KCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBp
bWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBp
eGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgICAgICAgICAgICAgICAgIGltYWdlQnVmZmVyLT5jb250
ZXh0KCkuZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgICAgICAgICAg
ICAgICAgIGRhdGFVUkwgPSBpbWFnZUJ1ZmZlci0+dG9EYXRhVVJMKCJpbWFnZS9wbmciKTsKICAg
ICAgICAgICAgICAgICB9CkBAIC0xMTYzLDcgKzExNjMsNyBAQCBpbnQgSW5zcGVjdG9yQ2FudmFz
OjppbmRleEZvckRhdGEoRHVwbGljCiAKICAgICAgICAgICAgIHVuc2lnbmVkIHZpZGVvV2lkdGgg
PSB2aWRlb0VsZW1lbnQtPnZpZGVvV2lkdGgoKTsKICAgICAgICAgICAgIHVuc2lnbmVkIHZpZGVv
SGVpZ2h0ID0gdmlkZW9FbGVtZW50LT52aWRlb0hlaWdodCgpOwotICAgICAgICAgICAgYXV0byBp
bWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKHZpZGVvV2lkdGgsIHZp
ZGVvSGVpZ2h0KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgICAgICAgICAgYXV0byBp
bWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKHZpZGVvV2lkdGgsIHZp
ZGVvSGVpZ2h0KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgICAgICAgICBpZiAo
aW1hZ2VCdWZmZXIpIHsKICAgICAgICAgICAgICAgICB2aWRlb0VsZW1lbnQtPnBhaW50Q3VycmVu
dEZyYW1lSW5Db250ZXh0KGltYWdlQnVmZmVyLT5jb250ZXh0KCksIEZsb2F0UmVjdCgwLCAwLCB2
aWRlb1dpZHRoLCB2aWRlb0hlaWdodCkpOwogICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBpbWFn
ZUJ1ZmZlci0+dG9EYXRhVVJMKCJpbWFnZS9wbmciKTsKQEAgLTEyMDAsNyArMTIwMCw3IEBAIGlu
dCBJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YShEdXBsaWMKICAgICAgICAgICAgIGlmIChh
dXRvKiBjYWNoZWRJbWFnZSA9IGNzc0ltYWdlVmFsdWUtPmltYWdlKCkpIHsKICAgICAgICAgICAg
ICAgICBhdXRvKiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZSgpOwogICAgICAgICAgICAgICAg
IGlmIChpbWFnZSAmJiBpbWFnZSAhPSAmSW1hZ2U6Om51bGxJbWFnZSgpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5z
aXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgICAgICAgICAgICAgYXV0
byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVy
aW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCks
IFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgICAgICAgICAgICAgICAgIGltYWdlQnVmZmVyLT5j
b250ZXh0KCkuZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgICAgICAg
ICAgICAgICAgIGRhdGFVUkwgPSBpbWFnZUJ1ZmZlci0+dG9EYXRhVVJMKCJpbWFnZS9wbmciKTsK
ICAgICAgICAgICAgICAgICB9CkBAIC0xNDQxLDcgKzE0NDEsNyBAQCBSZWY8SlNPTjo6QXJyYXlP
ZjxKU09OOjpWYWx1ZT4+IEluc3BlY3RvCiB7CiAgICAgYXV0byYgdGlsZUltYWdlID0gY2FudmFz
UGF0dGVybi5wYXR0ZXJuKCkudGlsZUltYWdlKCk7CiAgICAgRmxvYXRSZWN0IHJlY3QgPSB7IHsg
fSwgdGlsZUltYWdlLnNpemUoKSB9OwotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKHRpbGVJbWFnZS5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
IDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAg
ICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0aWxlSW1hZ2Uuc2l6ZSgp
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgp
LmRyYXdOYXRpdmVJbWFnZSh0aWxlSW1hZ2UsIHRpbGVJbWFnZS5zaXplKCksIHJlY3QsIHJlY3Qp
OwogCiAgICAgU3RyaW5nIHJlcGVhdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTI5LDcgKzUyOSw3IEBAIHZvaWQgQ2hyb21lOjpzZXRDdXJzb3JIaWRkZW5VbnRp
bE1vdXNlTW8KICAgICBtX2NsaWVudC5zZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMoaGlk
ZGVuVW50aWxNb3VzZU1vdmVzKTsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBDaHJvbWU6OmNy
ZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5k
ZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9y
bWF0KSBjb25zdAorUmVmUHRyPEltYWdlQnVmZmVyPiBDaHJvbWU6OmNyZWF0ZUltYWdlQnVmZmVy
KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBSZW5k
ZXJpbmdQdXJwb3NlIHB1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9jbGllbnQuY3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVuZGVy
aW5nTW9kZSwgcHVycG9zZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1h
dCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IEN1cnNvciYpIG92ZXJyaWRlOwogICAg
IHZvaWQgc2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGJvb2wpIG92ZXJyaWRlOwogCi0g
ICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
LCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0IG92ZXJyaWRlOworICAg
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwg
UmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCkgY29uc3Qgb3ZlcnJpZGU7
CiAKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVh
dGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKSBj
b25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzM5LDcgKzMzOSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIERp
c3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkqIGRpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3Rvcnko
KSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwg
UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUGl4ZWxGb3Jt
YXQpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwg
UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBp
eGVsRm9ybWF0KSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CiAKICNpZiBFTkFCTEUoV0VCR0wp
CiAgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29u
dGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFdlYkNvcmU6OlBsYXRm
b3JtRGlzcGxheUlEKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTExMSw3ICsxMTEsNyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0V2l0
CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNQYWludFdpdGhJbnRlZ3JhbFNjYWxl
RmFjdG9yKQogICAgICAgICBzY2FsZUZhY3RvciA9IGNlaWxmKHNjYWxlRmFjdG9yKTsKIAotICAg
IGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBzY2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJh
dGVkLCBzY2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIGJ1ZmZlci0+Y29udGV4dCgpLnRyYW5zbGF0ZSgtaW1hZ2VSZWN0LngoKSwgLWltYWdlUmVj
dC55KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb2xvclNhbXBsZXIuY3BwCShy
ZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb2xvclNhbXBsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIE9wdGlvbmFsPExh
YjxmbG9hdD4+IHNhbXBsZUNvbG9yKAogICAgIGlmICghc25hcHNob3QpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAKLSAgICBhdXRvIHBpeGVsQnVmZmVyID0gc25hcHNob3QtPmdldFBp
eGVsQnVmZmVyKHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhl
bEZvcm1hdDo6QkdSQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9LCB7IHsgfSwgc25h
cHNob3QtPmxvZ2ljYWxTaXplKCkgfSk7CisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IHNuYXBzaG90
LT5nZXRQaXhlbEJ1ZmZlcih7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGll
ZCwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9LCB7
IHsgfSwgc25hcHNob3QtPmxvZ2ljYWxTaXplKCkgfSk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlQ29uc29sZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlQ29uc29sZUNsaWVudC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjYsNyAr
MzI2LDcgQEAgdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdChKU0M6OgogICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNhY2hlZEltYWdlID0gaW1hZ2VFbGVtZW50LmNh
Y2hlZEltYWdlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvKiBpbWFnZSA9
IGNhY2hlZEltYWdlLT5pbWFnZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChp
bWFnZSAmJiBpbWFnZSAhPSAmSW1hZ2U6Om51bGxJbWFnZSgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNuYXBzaG90ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZS0+c2l6
ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNuYXBzaG90ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c25hcHNob3QtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFBvaW50KDAsIDApKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9
CkBAIC0zNDMsNyArMzQzLDcgQEAgdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdChK
U0M6OgogICAgICAgICAgICAgICAgICAgICAgICAgYXV0byYgdmlkZW9FbGVtZW50ID0gZG93bmNh
c3Q8SFRNTFZpZGVvRWxlbWVudD4oKm5vZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgdmlkZW9XaWR0aCA9IHZpZGVvRWxlbWVudC52aWRlb1dpZHRoKCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCB2aWRlb0hlaWdodCA9IHZpZGVvRWxlbWVudC52aWRlb0hl
aWdodCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgc25hcHNob3QgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKEZsb2F0U2l6ZSh2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCksIFJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNuYXBzaG90ID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShGbG9hdFNpemUodmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpLCBSZW5kZXJpbmdN
b2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvRWxlbWVudC5w
YWludEN1cnJlbnRGcmFtZUluQ29udGV4dChzbmFwc2hvdC0+Y29udGV4dCgpLCBGbG9hdFJlY3Qo
MCwgMCwgdmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpKTsKICAgICAgICAgICAgICAgICAgICAgfQog
I2VuZGlmCkBAIC0zNjgsNyArMzY4LDcgQEAgdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVu
c2hvdChKU0M6OgogICAgICAgICAgICAgdGFyZ2V0ID0gcG9zc2libGVUYXJnZXQ7CiAgICAgICAg
ICAgICBpZiAoVU5MSUtFTFkoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYXNGcm9udGVuZHMo
KSkpIHsKICAgICAgICAgICAgICAgICBhdXRvIHNvdXJjZVNpemUgPSBpbWFnZURhdGEtPnNpemUo
KTsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGUoc291cmNlU2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNvdXJjZVNp
emUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpKSB7CiAgICAgICAgICAgICAgICAgICAgIElu
dFJlY3Qgc291cmNlUmVjdChJbnRQb2ludCgpLCBzb3VyY2VTaXplKTsKICAgICAgICAgICAgICAg
ICAgICAgaW1hZ2VCdWZmZXItPnB1dFBpeGVsQnVmZmVyKGltYWdlRGF0YS0+cGl4ZWxCdWZmZXIo
KSwgc291cmNlUmVjdCk7CiAgICAgICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBpbWFnZUJ1ZmZl
ci0+dG9EYXRhVVJMKCJpbWFnZS9wbmciX3MsIFdURjo6bnVsbG9wdCwgUHJlc2VydmVSZXNvbHV0
aW9uOjpZZXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSwxMCArMzEsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgQ3Vyc29yOworY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlOwogY2xhc3MgSW1hZ2VCdWZm
ZXI7CiAKIGVudW0gY2xhc3MgUGl4ZWxGb3JtYXQgOiB1aW50OF90OwotZW51bSBjbGFzcyBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgOiB1aW50OF90OwogZW51bSBjbGFzcyBSZW5kZXJpbmdNb2RlIDog
Ym9vbDsKIGVudW0gY2xhc3MgUmVuZGVyaW5nUHVycG9zZSA6IHVpbnQ4X3Q7CiAKQEAgLTY0LDcg
KzY0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSW50UG9pbnQgYWNjZXNzaWJpbGl0eVNjcmVl
blRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBJbnRS
ZWN0IHJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKGNvbnN0IEludFJlY3QmKSBjb25zdCA9
IDA7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVy
KGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUGl4ZWxGb3Jt
YXQpIGNvbnN0ID0gMDsKIAogI2lmIEVOQUJMRShXRUJHTCkKICAgICB2aXJ0dWFsIFJlZlB0cjxH
cmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3ND
b250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3QgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGxhdGZvcm1Db2xvclNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1Db2xvclNwYWNlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Db2xvclNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKENHKQorI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KK3R5cGVkZWYgc3RydWN0IENHQ29sb3JTcGFjZSogQ0dD
b2xvclNwYWNlUmVmOworI2Vsc2UKKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorI2VuZGlm
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIFVTRShDRykKKwordXNpbmcgUGxhdGZvcm1D
b2xvclNwYWNlID0gUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj47Cit1c2luZyBQbGF0Zm9ybUNv
bG9yU3BhY2VWYWx1ZSA9IENHQ29sb3JTcGFjZVJlZjsKKworI2Vsc2UKKworc3RydWN0IFBsYXRm
b3JtQ29sb3JTcGFjZSB7CisgICAgZW51bSBjbGFzcyBOYW1lIHsKKyAgICAgICAgU1JHQgorI2lm
IEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKKyAgICAgICAgLCBM
aW5lYXJTUkdCCisjZW5kaWYKKyNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElT
UExBWV9QMykKKyAgICAgICAgLCBEaXNwbGF5UDMKKyNlbmRpZgorICAgIH07CisgICAgTmFtZSBu
YW1lOworICAgIE5hbWUgZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9Cit9OwordXNpbmcg
UGxhdGZvcm1Db2xvclNwYWNlVmFsdWUgPSBQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU7CisKKyNl
bmRpZgorCit9CisKK25hbWVzcGFjZSBXVEYgeworCisjaWYgIVVTRShDRykKKwordGVtcGxhdGU8
PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU+IHsK
KyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpQbGF0Zm9y
bUNvbG9yU3BhY2U6Ok5hbWUsCisgICAgICAgIFdlYkNvcmU6OlBsYXRmb3JtQ29sb3JTcGFjZTo6
TmFtZTo6U1JHQgorI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JH
QikKKyAgICAgICAgLCBXZWJDb3JlOjpQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU6OkxpbmVhclNS
R0IKKyNlbmRpZgorI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1Az
KQorICAgICAgICAsIFdlYkNvcmU6OlBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZTo6RGlzcGxheVAz
CisjZW5kaWYKKyAgICA+OworfTsKKworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdURgorCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmgJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dDb2xvclNwYWNlICpD
R0NvbG9yU3BhYwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEZsb2F0U2l6ZTsKIGNsYXNzIFdpZGdl
dDsKQEAgLTY4LDYgKzY5LDcgQEAgdXNpbmcgSU9SZWdpc3RyeUdQVUlEID0gaW50NjRfdDsgLy8g
R2xvYgogaW50IHNjcmVlbkRlcHRoKFdpZGdldCopOwogaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9u
ZW50KFdpZGdldCopOwogYm9vbCBzY3JlZW5Jc01vbm9jaHJvbWUoV2lkZ2V0Kik7CitXRUJDT1JF
X0VYUE9SVCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqID0g
bnVsbHB0cik7CiAKIGJvb2wgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMoKTsKIApAQCAtMTAwLDEw
ICsxMDIsNiBAQCBXRUJDT1JFX0VYUE9SVCBib29sIHNjcmVlblN1cHBvcnRzSGlnaER5CiBjb25z
dGV4cHIgYm9vbCBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UoV2lkZ2V0KiA9IG51bGxw
dHIpIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAotI2lmIFVTRShDRykKLVdFQkNPUkVfRVhQ
T1JUIENHQ29sb3JTcGFjZVJlZiBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCogPSBudWxscHRyKTsK
LSNlbmRpZgotCiBzdHJ1Y3QgU2NyZWVuUHJvcGVydGllczsKIHN0cnVjdCBTY3JlZW5EYXRhOwog
ICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NyZWVuUHJvcGVydGllcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjcmVlblByb3BlcnRpZXMuaAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NyZWVuUHJvcGVy
dGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0
cy5oPgpAQCAtMzIsMTQgKzMzLDEyIEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi10eXBlZGVmIHN0cnVjdCBDR0NvbG9yU3Bh
Y2UgKkNHQ29sb3JTcGFjZVJlZjsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgU2Ny
ZWVuRGF0YSB7CiAgICAgRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3Q7CiAgICAgRmxvYXRS
ZWN0IHNjcmVlblJlY3Q7Ci0gICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFj
ZTsKKyAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSB7IERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpIH07CiAgICAgaW50IHNjcmVlbkRlcHRoIHsgMCB9OwogICAgIGludCBz
Y3JlZW5EZXB0aFBlckNvbXBvbmVudCB7IDAgfTsKICAgICBib29sIHNjcmVlblN1cHBvcnRzRXh0
ZW5kZWRDb2xvciB7IGZhbHNlIH07CkBAIC01NiwxMyArNTUsMTIgQEAgc3RydWN0IFNjcmVlbkRh
dGEgewogICAgIGZsb2F0IHNjYWxlRmFjdG9yIHsgMSB9OwogI2VuZGlmCiAKLSAgICBlbnVtIGNs
YXNzIENvbG9yU3BhY2VUeXBlIDogdWludDhfdCB7IE5vbmUsIE5hbWUsIERhdGEgfTsKICAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFNjcmVlbkRhdGE+IGRlY29k
ZShEZWNvZGVyJik7CiB9OwogCi10eXBlZGVmIEhhc2hNYXA8UGxhdGZvcm1EaXNwbGF5SUQsIFNj
cmVlbkRhdGE+IFNjcmVlbkRhdGFNYXA7Ci0gICAgCit1c2luZyBTY3JlZW5EYXRhTWFwID0gSGFz
aE1hcDxQbGF0Zm9ybURpc3BsYXlJRCwgU2NyZWVuRGF0YT47CisKIHN0cnVjdCBTY3JlZW5Qcm9w
ZXJ0aWVzIHsKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBwcmltYXJ5RGlzcGxheUlEIHsgMCB9Owog
ICAgIFNjcmVlbkRhdGFNYXAgc2NyZWVuRGF0YU1hcDsKQEAgLTc0LDggKzcyLDcgQEAgc3RydWN0
IFNjcmVlblByb3BlcnRpZXMgewogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgU2NyZWVu
UHJvcGVydGllczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2Rl
ciA8PCBwcmltYXJ5RGlzcGxheUlEOwotICAgIGVuY29kZXIgPDwgc2NyZWVuRGF0YU1hcDsKKyAg
ICBlbmNvZGVyIDw8IHByaW1hcnlEaXNwbGF5SUQgPDwgc2NyZWVuRGF0YU1hcDsKIH0KIAogdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTk3LDcgKzk0LDcgQEAgT3B0aW9uYWw8U2NyZWVuUHJv
cGVydGllcz4gU2NyZWVuUHJvcGVydAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgU2Ny
ZWVuRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8
PCBzY3JlZW5BdmFpbGFibGVSZWN0IDw8IHNjcmVlblJlY3QgPDwgc2NyZWVuRGVwdGggPDwgc2Ny
ZWVuRGVwdGhQZXJDb21wb25lbnQgPDwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yIDw8IHNj
cmVlbkhhc0ludmVydGVkQ29sb3JzIDw8IHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZTsK
KyAgICBlbmNvZGVyIDw8IHNjcmVlbkF2YWlsYWJsZVJlY3QgPDwgc2NyZWVuUmVjdCA8PCBjb2xv
clNwYWNlIDw8IHNjcmVlbkRlcHRoIDw8IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50IDw8IHNjcmVl
blN1cHBvcnRzRXh0ZW5kZWRDb2xvciA8PCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycyA8PCBzY3Jl
ZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2U7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgZW5j
b2RlciA8PCBzY3JlZW5Jc01vbm9jaHJvbWUgPDwgZGlzcGxheU1hc2sgPDwgZ3B1SUQgPDwgcHJl
ZmVycmVkRHluYW1pY1JhbmdlTW9kZTsKQEAgLTEwNiwyOCArMTAzLDYgQEAgdm9pZCBTY3JlZW5E
YXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcgogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBlbmNvZGVyIDw8IHNjYWxlRmFjdG9yOwogI2VuZGlmCi0KLSAg
ICBpZiAoY29sb3JTcGFjZSkgewotICAgICAgICAvLyBUcnkgdG8gZW5jb2RlIHRoZSBuYW1lLgot
ICAgICAgICBpZiAoYXV0byBuYW1lID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDb3B5TmFtZShjb2xv
clNwYWNlLmdldCgpKSkpIHsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgQ29sb3JTcGFjZVR5cGU6
Ok5hbWU7Ci0gICAgICAgICAgICBlbmNvZGVyIDw8IFN0cmluZyhuYW1lLmdldCgpKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZhaWxpbmcgdGhhdCwganVz
dCBlbmNvZGUgdGhlIElDQyBkYXRhLgotICAgICAgICBpZiAoYXV0byBwcm9maWxlRGF0YSA9IGFk
b3B0Q0YoQ0dDb2xvclNwYWNlQ29weUlDQ0RhdGEoY29sb3JTcGFjZS5nZXQoKSkpKSB7Ci0gICAg
ICAgICAgICBWZWN0b3I8dWludDhfdD4gaWNjRGF0YTsKLSAgICAgICAgICAgIGljY0RhdGEuYXBw
ZW5kKENGRGF0YUdldEJ5dGVQdHIocHJvZmlsZURhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5ndGgo
cHJvZmlsZURhdGEuZ2V0KCkpKTsKLQotICAgICAgICAgICAgZW5jb2RlciA8PCBDb2xvclNwYWNl
VHlwZTo6RGF0YTsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgaWNjRGF0YTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIFRoZSBjb2xvciBzcGFjZSB3YXMg
bnVsbCBvciBmYWlsZWQgdG8gYmUgZW5jb2RlZC4KLSAgICBlbmNvZGVyIDw8IENvbG9yU3BhY2VU
eXBlOjpOb25lOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtMTQzLDYgKzExOCwx
MSBAQCBPcHRpb25hbDxTY3JlZW5EYXRhPiBTY3JlZW5EYXRhOjpkZWNvZGUoCiAgICAgaWYgKCFz
Y3JlZW5SZWN0KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAgT3B0aW9uYWw8
RGVzdGluYXRpb25Db2xvclNwYWNlPiBzY3JlZW5Db2xvclNwYWNlOworICAgIGRlY29kZXIgPj4g
c2NyZWVuQ29sb3JTcGFjZTsKKyAgICBpZiAoIXNjcmVlbkNvbG9yU3BhY2UpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKICAgICBPcHRpb25hbDxpbnQ+IHNjcmVlbkRlcHRoOwogICAg
IGRlY29kZXIgPj4gc2NyZWVuRGVwdGg7CiAgICAgaWYgKCFzY3JlZW5EZXB0aCkKQEAgLTE5Nyw0
MSArMTc3LDEwIEBAIE9wdGlvbmFsPFNjcmVlbkRhdGE+IFNjcmVlbkRhdGE6OmRlY29kZSgKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICNlbmRpZgogCi0gICAgQ29sb3JTcGFjZVR5cGUg
ZGF0YVR5cGU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhVHlwZSkpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjZ0Nv
bG9yU3BhY2U7Ci0gICAgc3dpdGNoIChkYXRhVHlwZSkgewotICAgIGNhc2UgQ29sb3JTcGFjZVR5
cGU6Ok5vbmU6Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ29sb3JTcGFjZVR5cGU6Ok5hbWU6
IHsKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBjb2xvclNwYWNlTmFtZTsKLSAgICAgICAgZGVj
b2RlciA+PiBjb2xvclNwYWNlTmFtZTsKLSAgICAgICAgQVNTRVJUKGNvbG9yU3BhY2VOYW1lKTsK
LSAgICAgICAgaWYgKCFjb2xvclNwYWNlTmFtZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7Ci0KLSAgICAgICAgY2dDb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVh
dGVXaXRoTmFtZShjb2xvclNwYWNlTmFtZS0+Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwotICAg
ICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDb2xvclNwYWNlVHlwZTo6RGF0YTogewotICAg
ICAgICBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGljY0RhdGE7Ci0gICAgICAgIGRlY29kZXIg
Pj4gaWNjRGF0YTsKLSAgICAgICAgQVNTRVJUKGljY0RhdGEpOwotICAgICAgICBpZiAoIWljY0Rh
dGEpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgICAgIGF1dG8gY29s
b3JTcGFjZURhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBp
Y2NEYXRhLT5kYXRhKCksIGljY0RhdGEtPnNpemUoKSkpOwotICAgICAgICBjZ0NvbG9yU3BhY2Ug
PSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhJQ0NEYXRhKGNvbG9yU3BhY2VEYXRhLmdl
dCgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICB9Ci0KICAgICByZXR1cm4geyB7CiAg
ICAgICAgIFdURk1vdmUoKnNjcmVlbkF2YWlsYWJsZVJlY3QpLAogICAgICAgICBXVEZNb3ZlKCpz
Y3JlZW5SZWN0KSwKLSAgICAgICAgV1RGTW92ZShjZ0NvbG9yU3BhY2UpLAorICAgICAgICBXVEZN
b3ZlKCpzY3JlZW5Db2xvclNwYWNlKSwKICAgICAgICAgV1RGTW92ZSgqc2NyZWVuRGVwdGgpLAog
ICAgICAgICBXVEZNb3ZlKCpzY3JlZW5EZXB0aFBlckNvbXBvbmVudCksCiAgICAgICAgIFdURk1v
dmUoKnNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciksCkBAIC0yNTAsMTYgKzE5OSwzIEBAIE9w
dGlvbmFsPFNjcmVlbkRhdGE+IFNjcmVlbkRhdGE6OmRlY29kZSgKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRy
YWl0czxXZWJDb3JlOjpTY3JlZW5EYXRhOjpDb2xvclNwYWNlVHlwZT4gewotICAgIHVzaW5nIHZh
bHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgICAgIFdlYkNvcmU6OlNjcmVlbkRhdGE6OkNvbG9yU3Bh
Y2VUeXBlLAotICAgICAgICBXZWJDb3JlOjpTY3JlZW5EYXRhOjpDb2xvclNwYWNlVHlwZTo6Tm9u
ZSwKLSAgICAgICAgV2ViQ29yZTo6U2NyZWVuRGF0YTo6Q29sb3JTcGFjZVR5cGU6Ok5hbWUsCi0g
ICAgICAgIFdlYkNvcmU6OlNjcmVlbkRhdGE6OkNvbG9yU3BhY2VUeXBlOjpEYXRhCi0gICAgPjsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjQsNyArMTY0LDcgQEAgUmVmUHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFnZTo6
cHJlVHJhbgogICAgICAgICByZXR1cm4gaW1hZ2U7CiAKICAgICBhdXRvIGNvcnJlY3RlZFNpemVG
bG9hdCA9IGNvcnJlY3RlZFNpemUgPyBGbG9hdFNpemUoY29ycmVjdGVkU2l6ZS52YWx1ZSgpKSA6
IHNpemUoKTsKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY29ycmVjdGVk
U2l6ZUZsb2F0LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBidWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvcnJlY3RlZFNpemVGbG9hdCwgUmVuZGVyaW5nTW9kZTo6VW5h
Y2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0
OjpCR1JBOCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBpbWFnZTsKIApAQCAt
MzUyLDcgKzM1Miw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ28K
ICAgICB9CiAKICAgICBpZiAoIW1fY2FjaGVkSW1hZ2UpIHsKLSAgICAgICAgYXV0byBidWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUodGls
ZVJlY3Quc2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBjdHh0KTsKKyAgICAg
ICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBh
bmRlZEludFNpemUodGlsZVJlY3Quc2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCksIGN0eHQpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNyArMTY4LDcgQEAgQ29sb3JDb21wb25lbnRzPGZsb2F0
LCA0PiBDb2xvcjo6dG9Db2xvcgogICAgIHJldHVybiBjb252ZXJDb2xvckNvbXBvbmVudHMoaW5w
dXRDb2xvclNwYWNlLCBjb21wb25lbnRzLCBvdXRwdXRDb2xvclNwYWNlKTsKIH0KIAotQ29sb3JD
b21wb25lbnRzPGZsb2F0LCA0PiBDb2xvcjo6dG9Db2xvckNvbXBvbmVudHNJbkNvbG9yU3BhY2Uo
RGVzdGluYXRpb25Db2xvclNwYWNlIG91dHB1dENvbG9yU3BhY2UpIGNvbnN0CitDb2xvckNvbXBv
bmVudHM8ZmxvYXQsIDQ+IENvbG9yOjp0b0NvbG9yQ29tcG9uZW50c0luQ29sb3JTcGFjZShjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIG91dHB1dENvbG9yU3BhY2UpIGNvbnN0CiB7CiAgICAg
YXV0byBbaW5wdXRDb2xvclNwYWNlLCBjb21wb25lbnRzXSA9IGNvbG9yU3BhY2VBbmRDb21wb25l
bnRzKCk7CiAgICAgcmV0dXJuIGNvbnZlckNvbG9yQ29tcG9uZW50cyhpbnB1dENvbG9yU3BhY2Us
IGNvbXBvbmVudHMsIG91dHB1dENvbG9yU3BhY2UpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3
IEBACiAjaW5jbHVkZSAiQ29sb3JDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiQ29sb3JTcGFjZS5o
IgogI2luY2x1ZGUgIkNvbG9yVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xv
clNwYWNlLmgiCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CkBAIC0xMjEsNyArMTIyLDcgQEAgcHVi
bGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPFQ+IHRvU1JHQkFMb3NzeSgpIGNv
bnN0IHsgcmV0dXJuIHRvQ29sb3JUeXBlTG9zc3k8U1JHQkE8VD4+KCk7IH0KIAogICAgIENvbG9y
Q29tcG9uZW50czxmbG9hdCwgND4gdG9Db2xvckNvbXBvbmVudHNJbkNvbG9yU3BhY2UoQ29sb3JT
cGFjZSkgY29uc3Q7Ci0gICAgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiB0b0NvbG9yQ29tcG9u
ZW50c0luQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpIGNvbnN0OworICAgIENvbG9y
Q29tcG9uZW50czxmbG9hdCwgND4gdG9Db2xvckNvbXBvbmVudHNJbkNvbG9yU3BhY2UoY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJikgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6
OnBhaXI8Q29sb3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0Pj4gY29sb3JTcGFjZUFu
ZENvbXBvbmVudHMoKSBjb25zdDsKIApAQCAtMjY3LDYgKzI2OCw3IEBAIGJvb2wgb3V0T2ZMaW5l
Q29tcG9uZW50c3NFcXVhbElnbm9yaW5nU2UKIAogI2lmIFVTRShDRykKIFdFQkNPUkVfRVhQT1JU
IENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYpOworV0VCQ09SRV9FWFBPUlQg
Q29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBwbGF0Zm9ybUNvbnZlcnRDb2xvckNvbXBvbmVudHMo
Q29sb3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJik7CiAjZW5kaWYKIAogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IENvbG9yJik7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yQ29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDkgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb2xvckNvbnZlcnNpb24uaCIKIAorI2luY2x1ZGUg
IkNvbG9yLmgiCiAjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgIkRlc3RpbmF0aW9u
Q29sb3JTcGFjZS5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTMxOCwxOCArMzIwLDIxIEBAIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4g
Y29udmVyQ29sb3JDb20KICAgICB9KTsKIH0KIAotQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBj
b252ZXJDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1dENvbG9yU3BhY2UsIENvbG9yQ29t
cG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVudHMsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSBvdXRwdXRDb2xvclNwYWNlKQorQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb252ZXJD
b2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1dENvbG9yU3BhY2UsIENvbG9yQ29tcG9uZW50
czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVudHMsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgb3V0cHV0Q29sb3JTcGFjZSkKIHsKKyNpZiBVU0UoQ0cpCisgICAgcmV0dXJuIHBsYXRm
b3JtQ29udmVydENvbG9yQ29tcG9uZW50cyhpbnB1dENvbG9yU3BhY2UsIGlucHV0Q29sb3JDb21w
b25lbnRzLCBvdXRwdXRDb2xvclNwYWNlKTsKKyNlbHNlCiAgICAgcmV0dXJuIGNhbGxXaXRoQ29s
b3JUeXBlKGlucHV0Q29sb3JDb21wb25lbnRzLCBpbnB1dENvbG9yU3BhY2UsIFtvdXRwdXRDb2xv
clNwYWNlXSAoY29uc3QgYXV0byYgaW5wdXRDb2xvcikgewotICAgICAgICBzd2l0Y2ggKG91dHB1
dENvbG9yU3BhY2UpIHsKLSAgICAgICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I6
CisgICAgICAgIHN3aXRjaCAob3V0cHV0Q29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSkg
eworICAgICAgICBjYXNlIFBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZTo6U1JHQjoKICAgICAgICAg
ICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhjb252ZXJ0Q29sb3I8U1JHQkE8ZmxvYXQ+Pihp
bnB1dENvbG9yKSk7CiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9T
UkdCKQotICAgICAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQjoKLSAg
ICAgICAgICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhjb252ZXJ0Q29sb3I8TGluZWFyU1JH
QkE8ZmxvYXQ+PihpbnB1dENvbG9yKSk7CisgICAgICAgIGNhc2UgUGxhdGZvcm1Db2xvclNwYWNl
OjpOYW1lOjpMaW5lYXJTUkdCOgorICAgICAgICAgICAgcmV0dXJuIGFzQ29sb3JDb21wb25lbnRz
KGNvbnZlcnRDb2xvcjxMaW5lYXJTUkdCPGZsb2F0Pj4oaW5wdXRDb2xvcikpOwogI2VuZGlmCiAj
aWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCi0gICAgICAgIGNh
c2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDM6CisgICAgICAgIGNhc2UgUGxhdGZv
cm1Db2xvclNwYWNlOjpOYW1lOjpEaXNwbGF5UDM6CiAgICAgICAgICAgICByZXR1cm4gYXNDb2xv
ckNvbXBvbmVudHMoY29udmVydENvbG9yPERpc3BsYXlQMzxmbG9hdD4+KGlucHV0Q29sb3IpKTsK
ICNlbmRpZgogICAgICAgICB9CkBAIC0zMzcsNiArMzQyLDcgQEAgQ29sb3JDb21wb25lbnRzPGZs
b2F0LCA0PiBjb252ZXJDb2xvckNvbQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgcmV0dXJuIGFzQ29sb3JDb21wb25lbnRzKGNvbnZlcnRDb2xvcjxTUkdCQTxmbG9hdD4+
KGlucHV0Q29sb3IpKTsKICAgICB9KTsKKyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ckNvbnZlcnNpb24uaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE1ICsy
OSwxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTsKKwogZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdDsKLWVudW0gY2xhc3MgRGVz
dGluYXRpb25Db2xvclNwYWNlIDogdWludDhfdDsKIAogLy8gQ29udmVyc2lvbiBmdW5jdGlvbiBm
b3IgdHlwZWQgY29sb3JzLgogdGVtcGxhdGU8dHlwZW5hbWUgT3V0cHV0LCB0eXBlbmFtZSBJbnB1
dD4gT3V0cHV0IGNvbnZlcnRDb2xvcihjb25zdCBJbnB1dCYgY29sb3IpOwogCiAvLyBDb252ZXJz
aW9uIGZ1bmN0aW9ucyBmb3IgcmF3IGNvbG9yIGNvbXBvbmVudHMgd2l0aCBhc3NvY2lhdGVkIGNv
bG9yIHNwYWNlcy4KIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gY29udmVyQ29sb3JDb21wb25l
bnRzKENvbG9yU3BhY2UgaW5wdXRDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+
IGlucHV0Q29sb3JDb21wb25lbnRzLCBDb2xvclNwYWNlIG91dHB1dENvbG9yU3BhY2UpOwotQ29s
b3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb252ZXJDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBp
bnB1dENvbG9yU3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBv
bmVudHMsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBvdXRwdXRDb2xvclNwYWNlKTsKK0NvbG9yQ29t
cG9uZW50czxmbG9hdCwgND4gY29udmVyQ29sb3JDb21wb25lbnRzKENvbG9yU3BhY2UgaW5wdXRD
b2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGlucHV0Q29sb3JDb21wb25lbnRz
LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIG91dHB1dENvbG9yU3BhY2UpOwogCiAKIC8v
IEFsbCBjb2xvciB0eXBlcywgb3RoZXIgdGhhbiBYWVpBIG9yIHRob3NlIGluaGVyaXRpbmcgZnJv
bSBSR0JUeXBlLCBtdXN0IGltcGxlbWVudApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3JTcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NCwyNCArNjQsNCBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBDCiAgICAgcmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkKLXsKLSAgICBzd2l0Y2gg
KGNvbG9yU3BhY2UpIHsKLSAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjoKLSAg
ICAgICAgdHMgPDwgInNSR0IiOwotICAgICAgICBicmVhazsKLSNpZiBFTkFCTEUoREVTVElOQVRJ
T05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OkxpbmVhclNSR0I6Ci0gICAgICAgIHRzIDw8ICJMaW5lYXJTUkdCIjsKLSAgICAgICAgYnJl
YWs7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExBWV9Q
MykKLSAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxheVAzOgotICAgICAgICB0
cyA8PCAiRGlzcGxheVAzIjsKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLSAgICB9Ci0gICAgcmV0
dXJuIHRzOwotfQotCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvclNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JTcGFjZS5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEwICsyOCw3
IEBACiAjaW5jbHVkZSAiQ29sb3JUeXBlcy5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5j
bHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBUZXh0U3Ry
ZWFtOwotfQorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNDcsMTggKzQ0LDcgQEAgZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdCB7CiAg
ICAgWFlaX0Q1MCwKIH07CiAKLWVudW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDogdWlu
dDhfdCB7Ci0gICAgU1JHQgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5F
QVJfU1JHQikKLSAgICAsIExpbmVhclNSR0IKLSNlbmRpZgotI2lmIEVOQUJMRShERVNUSU5BVElP
Tl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQotICAgICwgRGlzcGxheVAzCi0jZW5kaWYKLX07Ci0K
LVdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJl
YW0mLCBDb2xvclNwYWNlKTsKLVdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChXVEY6OlRleHRTdHJlYW0mLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UpOworV0VCQ09SRV9F
WFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgQ29sb3JTcGFjZSk7CiAK
IAogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBDb2xvclNwYWNlTWFwcGluZzsKQEAgLTEwMiwy
NSArODgsNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBGdW5jdG9yPiBjCiAgICAg
cmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFrZUZy
b21Db21wb25lbnRzPFNSR0JBPFQ+Pihjb21wb25lbnRzKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIEZ1bmN0b3I+IGNvbnN0ZXhwciBkZWNsdHlwZShhdXRvKSBjYWxsV2l0
aENvbG9yVHlwZShjb25zdCBDb2xvckNvbXBvbmVudHM8VCwgND4mIGNvbXBvbmVudHMsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBGdW5jdG9yJiYgZnVuY3RvcikKLXsKLSAgICBz
d2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QjoKLSAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5j
dG9yKSwgbWFrZUZyb21Db21wb25lbnRzPFNSR0JBPFQ+Pihjb21wb25lbnRzKSk7Ci0jaWYgRU5B
QkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQotICAgIGNhc2UgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCOgotICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uo
c3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8TGluZWFy
U1JHQkE8VD4+KGNvbXBvbmVudHMpKTsKLSNlbmRpZgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9D
T0xPUl9TUEFDRV9ESVNQTEFZX1AzKQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpE
aXNwbGF5UDM6Ci0gICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rv
cj4oZnVuY3RvciksIG1ha2VGcm9tQ29tcG9uZW50czxEaXNwbGF5UDM8VD4+KGNvbXBvbmVudHMp
KTsKLSNlbmRpZgotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIG1ha2VGcm9tQ29t
cG9uZW50czxTUkdCQTxUPj4oY29tcG9uZW50cykpOwotfQotCiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIApAQCAtMTQxLDE3ICsxMDgsNCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PFdlYkNvcmU6OkNvCiAgICAgPjsKIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiB7Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51
bVZhbHVlczwKLSAgICAgICAgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlLAotICAgICAg
ICBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IKLSNpZiBFTkFCTEUoREVTVElO
QVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgICAgICwgV2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCCi0jZW5kaWYKLSNpZiBFTkFCTEUoREVTVElOQVRJ
T05fQ09MT1JfU1BBQ0VfRElTUExBWV9QMykKLSAgICAgICAgLCBXZWJDb3JlOjpEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OkRpc3BsYXlQMwotI2VuZGlmCi0gICAgPjsKLX07Ci0KIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdl
QnVmZmVyLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQs
NyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4KIGNsYXNzIENvbmNyZXRlSW1hZ2VC
dWZmZXIgOiBwdWJsaWMgSW1hZ2VCdWZmZXIgewogcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEltYWdlQnVmZmVyVHlwZSA9IENvbmNyZXRlSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFy
Z3VtZW50cz4KLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5k
b3cqIGhvc3RXaW5kb3csIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKKyAgICBzdGF0aWMgUmVm
UHRyPEltYWdlQnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2Us
IFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93LCBB
cmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgewogICAgICAgICBhdXRvIHBhcmFtZXRlcnMg
PSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMgeyBzaXplLCByZXNvbHV0aW9uU2NhbGUs
IGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0IH07CiAgICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tl
bmRUeXBlOjpjcmVhdGUocGFyYW1ldGVycywgaG9zdFdpbmRvdyk7CkBAIC00Niw3ICs0Niw3IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbWFnZUJ1ZmZlclR5cGUgPSBDb25jcmV0
ZUltYWdlQnVmZmVyLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CiAgICAgc3RhdGljIFJlZlB0cjxJ
bWFnZUJ1ZmZlclR5cGU+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAgIHsKLSAg
ICAgICAgYXV0byBwYXJhbWV0ZXJzID0gSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzIHsg
c2l6ZSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgg
fTsKKyAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0gSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0
ZXJzIHsgc2l6ZSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0
OjpCR1JBOCB9OwogICAgICAgICBhdXRvIGJhY2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3JlYXRlKHBh
cmFtZXRlcnMsIGNvbnRleHQpOwogICAgICAgICBpZiAoIWJhY2tlbmQpCiAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTE5NSw3ICsxOTUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNw
YWNlIHNyY0NvbG9yU3BhY2UsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBkZXN0Q29sb3JTcGFjZSkg
b3ZlcnJpZGUKKyAgICB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiBzcmNDb2xvclNwYWNlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGRl
c3RDb2xvclNwYWNlKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQg
PSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7CiAgICAgICAgICAgICBmbHVzaERyYXdpbmdDb250
ZXh0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVH
ZW5lcmF0ZWRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsNyBAQCBJbWFnZURyYXdSZXN1bHQg
Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6CiAKIHZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6
OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
cGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAg
YXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBjb250ZXh0LnJl
bmRlcmluZ01vZGUoKSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1h
dDo6QkdSQTgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNp
emUoKSwgY29udGV4dC5yZW5kZXJpbmdNb2RlKCksIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAg
ICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVz
dGluYXRpb25Db2xvclNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuY3BwCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCisKKyNpbmNs
dWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiQ29s
b3JTcGFjZUNHLmgiCisjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KKyNl
bmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKQoreworI2lmIFVTRShDRykKKyAgICByZXR1cm4gRGVz
dGluYXRpb25Db2xvclNwYWNlKHNSR0JDb2xvclNwYWNlUmVmKCkpOworI2Vsc2UKKyAgICByZXR1
cm4gRGVzdGluYXRpb25Db2xvclNwYWNlKFR5cGU6OlNSR0IpOworI2VuZGlmCit9CisKKyNpZiBF
TkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCitEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCkKK3sKKyNpZiBVU0Uo
Q0cpCisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZShsaW5lYXJTUkdCQ29sb3JTcGFj
ZVJlZigpKTsKKyNlbHNlCisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZShUeXBlOjpM
aW5lYXJTUkdCKTsKKyNlbmRpZgorfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoREVTVElOQVRJT05f
Q09MT1JfU1BBQ0VfRElTUExBWV9QMykKK0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OkRpc3BsYXlQMygpCit7CisjaWYgVVNFKENHKQorICAgIHJldHVybiBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UoZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpKTsKKyNlbHNlCisgICAg
cmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZShUeXBlOjpEaXNwbGF5UDMpOworI2VuZGlmCit9
CisjZW5kaWYKKworRGVzdGluYXRpb25Db2xvclNwYWNlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2Uo
UGxhdGZvcm1Db2xvclNwYWNlIHBsYXRmb3JtQ29sb3JTcGFjZSkKKyAgICA6IG1fcGxhdGZvcm1D
b2xvclNwYWNlIHsgV1RGTW92ZShwbGF0Zm9ybUNvbG9yU3BhY2UpIH0KK3sKKyNpZiBVU0UoQ0cp
CisgICAgQVNTRVJUKG1fcGxhdGZvcm1Db2xvclNwYWNlKTsKKyNlbmRpZgorfQorCitib29sIG9w
ZXJhdG9yPT0oY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBhLCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmIGIpCit7CisgICAgaWYgKGEucGxhdGZvcm1Db2xvclNwYWNlKCkgPT0gYi5w
bGF0Zm9ybUNvbG9yU3BhY2UoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyNpZiBVU0UoQ0cp
CisgICAgcmV0dXJuIENHQ29sb3JTcGFjZUVxdWFsVG9Db2xvclNwYWNlKGEucGxhdGZvcm1Db2xv
clNwYWNlKCksIGIucGxhdGZvcm1Db2xvclNwYWNlKCkpOworI2Vsc2UKKyAgICByZXR1cm4gZmFs
c2U7CisjZW5kaWYKK30KKworYm9vbCBvcGVyYXRvciE9KGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgYSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBiKQoreworICAgIHJldHVybiAh
KGEgPT0gYik7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkKK3sKKyAgICBpZiAoY29sb3JT
cGFjZSA9PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSkKKyAgICAgICAgdHMgPDwgInNS
R0IiOworI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKKyAg
ICBlbHNlIGlmIChjb2xvclNwYWNlID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JH
QigpKQorICAgICAgICB0cyA8PCAiTGluZWFyU1JHQiI7CisjZW5kaWYKKyNpZiBFTkFCTEUoREVT
VElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExBWV9QMykKKyAgICBlbHNlIGlmIChjb2xvclNwYWNl
ID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxheVAzKCkpCisgICAgICAgIHRzIDw8ICJE
aXNwbGF5UDMiOworI2VuZGlmCisjaWYgVVNFKENHKQorICAgIGVsc2UgaWYgKGF1dG8gZGVzY3Jp
cHRpb24gPSBhZG9wdENGKENHQ29sb3JTcGFjZUNvcHlJQ0NQcm9maWxlRGVzY3JpcHRpb24oY29s
b3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSkpKQorICAgICAgICB0cyA8PCBTdHJpbmcoZGVz
Y3JpcHRpb24uZ2V0KCkpOworI2VuZGlmCisKKyAgICByZXR1cm4gdHM7Cit9CisKK30KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0
aW9uQ29sb3JTcGFjZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlBsYXRmb3Jt
Q29sb3JTcGFjZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERlc3RpbmF0aW9u
Q29sb3JTcGFjZSB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIERlc3RpbmF0
aW9uQ29sb3JTcGFjZSBTUkdCKCk7CisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNF
X0xJTkVBUl9TUkdCKQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgTGluZWFyU1JHQigpOworI2VuZGlmCisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9S
X1NQQUNFX0RJU1BMQVlfUDMpCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIERlc3RpbmF0aW9u
Q29sb3JTcGFjZSBEaXNwbGF5UDMoKTsKKyNlbmRpZgorCisgICAgV0VCQ09SRV9FWFBPUlQgZXhw
bGljaXQgRGVzdGluYXRpb25Db2xvclNwYWNlKFBsYXRmb3JtQ29sb3JTcGFjZSk7CisgICAgUGxh
dGZvcm1Db2xvclNwYWNlVmFsdWUgcGxhdGZvcm1Db2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4g
bV9wbGF0Zm9ybUNvbG9yU3BhY2UuZ2V0KCk7IH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBkZWNvZGUoRGVjb2Rl
ciYpOworCitwcml2YXRlOgorICAgIFBsYXRmb3JtQ29sb3JTcGFjZSBtX3BsYXRmb3JtQ29sb3JT
cGFjZTsKK307CisKK1dFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKK1dFQkNPUkVf
RVhQT1JUIGJvb2wgb3BlcmF0b3IhPShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKKworV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CisK
K3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgRGVzdGluYXRpb25Db2xvclNwYWNlOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fcGxhdGZvcm1D
b2xvclNwYWNlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxEZXN0aW5h
dGlvbkNvbG9yU3BhY2U+IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCit7CisgICAgT3B0aW9uYWw8UGxhdGZvcm1Db2xvclNwYWNlPiBwbGF0Zm9ybUNvbG9y
U3BhY2U7CisgICAgZGVjb2RlciA+PiBwbGF0Zm9ybUNvbG9yU3BhY2U7CisgICAgaWYgKCFwbGF0
Zm9ybUNvbG9yU3BhY2UpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1
cm4gRGVzdGluYXRpb25Db2xvclNwYWNlIHsgV1RGTW92ZSgqcGxhdGZvcm1Db2xvclNwYWNlKSB9
OworfQorCit9CisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRp
ZW50SW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYWRpZW50SW1hZ2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzIsNyArNzIsNyBAQCB2b2lkIEdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzCiAg
ICAgdW5zaWduZWQgZ2VuZXJhdG9ySGFzaCA9IG1fZ3JhZGllbnQtPmhhc2goKTsKIAogICAgIGlm
ICghbV9jYWNoZWRJbWFnZSB8fCBtX2NhY2hlZEdlbmVyYXRvckhhc2ggIT0gZ2VuZXJhdG9ySGFz
aCB8fCBtX2NhY2hlZEFkanVzdGVkU2l6ZSAhPSBhZGp1c3RlZFNpemUgfHwgIWFyZUVzc2VudGlh
bGx5RXF1YWwoZGVzdENvbnRleHQuc2NhbGVGYWN0b3IoKSwgbV9jYWNoZWRTY2FsZUZhY3Rvcikp
IHsKLSAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRp
YmxlQnVmZmVyKGFkanVzdGVkU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBkZXN0
Q29udGV4dCk7CisgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpLCBkZXN0Q29udGV4dCk7CiAgICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgICAg
ICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODgzLDcgKzg4Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0Um91bmRl
ZFJlY3QKICAgICBjbGlwT3V0KHBhdGgpOwogfQogCi1HcmFwaGljc0NvbnRleHQ6OkNsaXBUb0Ry
YXdpbmdDb21tYW5kc1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0RyYXdpbmdDb21tYW5k
cyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29s
b3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBkcmF3aW5nRnVuY3Rp
b24pCitHcmFwaGljc0NvbnRleHQ6OkNsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBHcmFwaGlj
c0NvbnRleHQ6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZv
aWQoR3JhcGhpY3NDb250ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKQogewogICAgIGlmIChwYWlu
dGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1
bHQ6OlN1Y2Nlc3M7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDggKzI2LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJDb2xvclNwYWNlLmgi
CiAjaW5jbHVkZSAiRGFzaEFycmF5LmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNl
LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKICNp
bmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCkBAIC00MTAsNyArNDEwLDcgQEAgcHVibGljOgogICAg
IHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKTsK
IAogICAgIGVudW0gY2xhc3MgQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IDogYm9vbCB7IFN1
Y2Nlc3MsIEZhaWxlZFRvQ3JlYXRlSW1hZ2VCdWZmZXIgfTsKLSAgICBDbGlwVG9EcmF3aW5nQ29t
bWFuZHNSZXN1bHQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRl
eHQmKT4mJik7CisgICAgQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IGNsaXBUb0RyYXdpbmdD
b21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKTsKICAgICAKICAg
ICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpID0gMDsKICAg
ICB2aXJ0dWFsIEludFJlY3QgY2xpcEJvdW5kcygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xp
cFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250
ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsaXBUb0Ry
YXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmIGRyYXdp
bmdGdW5jdGlvbikgPSAwOwogI2lmIEVOQUJMRShWSURFTykKICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
bikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBjYW5QYWludEZyYW1lRm9yTWVkaWEoY29uc3QgTWVk
aWFQbGF5ZXImKSBjb25zdCA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIGNvbnN0IGZsb2F0
IE1heENsYW1wZWRMZW5ndGggPSA0MDk2Owogc3RhdGljIGNvbnN0IGZsb2F0IE1heENsYW1wZWRB
cmVhID0gTWF4Q2xhbXBlZExlbmd0aCAqIE1heENsYW1wZWRMZW5ndGg7CiAKLVJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRl
cmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3Qgc2hvdWxkVXNlRGlz
cGxheUxpc3QsIFJlbmRlcmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3Jt
YXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IElt
YWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJl
bmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0IHNob3VsZFVzZURpc3BsYXlMaXN0LCBS
ZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwg
Y29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+
IGltYWdlQnVmZmVyOwogICAgIApAQCAtNTksNyArNTksNyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+
IEltYWdlQnVmZmVyOjpjcmVhdGUoCiAgICAgcmV0dXJuIGltYWdlQnVmZmVyOwogfQogCi1SZWZQ
dHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVz
dGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBj
b25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJp
bmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cq
IGhvc3RXaW5kb3cpCiB7CiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKICAg
ICAKQEAgLTk1LDcgKzk1LDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlQwogICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRp
YmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiBjb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAg
aWYgKHNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTExMSw3ICsx
MTEsNyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDCiAgICAgcmV0
dXJuIGltYWdlQnVmZmVyOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpj
cmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBjb25zdCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgcmV0dXJuIEltYWdlQnVmZmVyOjpjcmVh
dGUoc2l6ZSwgY29udGV4dC5yZW5kZXJpbmdNb2RlKCksIHJlc29sdXRpb25TY2FsZSwgY29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKIH0KQEAgLTE2Nyw3ICsxNjcsNyBAQCBJbnRTaXpl
IEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVyU2l6CiAgICAgcmV0dXJuIGV4cGFuZGVkSW50
U2l6ZShzaXplICogY29udGV4dC5zY2FsZUZhY3RvcigpKTsKIH0KIAotUmVmUHRyPEltYWdlQnVm
ZmVyPiBJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjb3B5UmVjdFRvQnVm
ZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBj
b2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgaWYgKHJl
Y3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAkocmV2aXNpb24gMjc3OTE5
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNDUsMTMgKzQ1LDEzIEBAIHN0cnVjdCBJdGVtQnVmZmVySGFuZGxlOwog
Y2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VCdWZm
ZXI+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW1hZ2VCdWZmZXI+IHsKIHB1YmxpYzoKICAgICAv
LyBXaWxsIHJldHVybiBhIG51bGwgcG9pbnRlciBvbiBhbGxvY2F0aW9uIGZhaWx1cmUuCi0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZs
b2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQ
dXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUGl4
ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIFJl
bmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNl
LCBQaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXpl
JiwgUmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1cnBvc2Us
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUGl4
ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIFJl
bmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiwgUGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7CiAKICAg
ICAvLyBDcmVhdGUgYW4gaW1hZ2UgYnVmZmVyIGNvbXBhdGlibGUgd2l0aCB0aGUgY29udGV4dCwg
d2l0aCBzdWl0YWJsZSByZXNvbHV0aW9uIGZvciBkcmF3aW5nIGludG8gdGhlIGJ1ZmZlciBhbmQg
dGhlbiBpbnRvIHRoaXMgY29udGV4dC4KICAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBj
cmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYpOwotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVC
dWZmZXIoY29uc3QgRmxvYXRTaXplJiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBjb25zdCBHcmFw
aGljc0NvbnRleHQmKTsKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVz
dGluYXRpb25Db2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKyAgICBzdGF0aWMg
UmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6
ZSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
OworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
Y29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKIAogICAgIC8vIFRoZXNlIGZ1
bmN0aW9ucyBhcmUgdXNlZCB3aGVuIGNsYW1waW5nIHRoZSBJbWFnZUJ1ZmZlciB3aGljaCBpcyBj
cmVhdGVkIGZvciBmaWx0ZXIsIG1hc2tlciBvciBjbGlwcGVyLgogICAgIHN0YXRpYyBib29sIHNp
emVOZWVkc0NsYW1waW5nKGNvbnN0IEZsb2F0U2l6ZSYpOwpAQCAtMTA3LDcgKzEwNyw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gY29weUltYWdlKEJhY2tpbmdTdG9yZUNv
cHkgPSBDb3B5QmFja2luZ1N0b3JlLCBQcmVzZXJ2ZVJlc29sdXRpb24gPSBQcmVzZXJ2ZVJlc29s
dXRpb246Ok5vKSBjb25zdCA9IDA7CiAKICAgICAvLyBDcmVhdGUgYW4gaW1hZ2UgYnVmZmVyIGNv
bXBhdGlibGUgd2l0aCB0aGUgY29udGV4dCBhbmQgY29weSByZWN0IGZyb20gdGhpcyBidWZmZXIg
aW50byB0aGlzIG5ldyBvbmUuCi0gICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjb3B5UmVjdFRvQnVm
ZmVyKGNvbnN0IEZsb2F0UmVjdCYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0Jik7CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjb3B5UmVjdFRvQnVmZmVyKGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYpOwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxv
YXRSZWN0KDAsIDAsIC0xLCAtMSksIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0g
eyB9KSA9IDA7CkBAIC0xMjAsNyArMTIwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBj
bGlwVG9NYXNrKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpID0g
MDsKIAogICAgIHZpcnR1YWwgdm9pZCBjb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBz
cmNDb2xvclNwYWNlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgZHN0Q29sb3JTcGFjZSkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgc3JjQ29sb3JTcGFjZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBkc3RD
b2xvclNwYWNlKSA9IDA7CiAKICAgICB2aXJ0dWFsIFN0cmluZyB0b0RhdGFVUkwoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5ID0gV1RGOjpudWxsb3B0LCBQ
cmVzZXJ2ZVJlc29sdXRpb24gPSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBWZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IFdURjo6bnVsbG9wdCkgY29uc3QgPSAwOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
Myw2ICs1Myw4IEBAIEltYWdlQnVmZmVyQmFja2VuZDo6SW1hZ2VCdWZmZXJCYWNrZW5kKGMKIHsK
IH0KIAorSW1hZ2VCdWZmZXJCYWNrZW5kOjp+SW1hZ2VCdWZmZXJCYWNrZW5kKCkgPSBkZWZhdWx0
OworCiBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyQmFja2VuZDo6c2lua0ludG9OYXRp
dmVJbWFnZSgpCiB7CiAgICAgcmV0dXJuIGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdT
dG9yZSk7CkBAIC0xMTQsMTUgKzExNiwxNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gSW1hZ2VC
dWZmZXJCYWNrZW5kCiAgICAgaWYgKGRlc3RpbmF0aW9uUmVjdC5zaXplKCkgIT0gc291cmNlUmVj
dFNjYWxlZC5zaXplKCkpCiAgICAgICAgIHBpeGVsQnVmZmVyLT5kYXRhKCkuemVyb0ZpbGwoKTsK
IAotICAgIENvbnN0UGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBzb3VyY2U7Ci0gICAgc291cmNl
LmZvcm1hdCA9IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgcGl4ZWxG
b3JtYXQoKSwgY29sb3JTcGFjZSgpIH07Ci0gICAgc291cmNlLmJ5dGVzUGVyUm93ID0gYnl0ZXNQ
ZXJSb3coKTsKLSAgICBzb3VyY2Uucm93cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRh
dGEpICsgc291cmNlUmVjdENsaXBwZWQueSgpICogc291cmNlLmJ5dGVzUGVyUm93ICsgc291cmNl
UmVjdENsaXBwZWQueCgpICogNDsKKyAgICBDb25zdFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcg
c291cmNlIHsKKyAgICAgICAgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVk
LCBwaXhlbEZvcm1hdCgpLCBjb2xvclNwYWNlKCkgfSwKKyAgICAgICAgYnl0ZXNQZXJSb3coKSwK
KyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YSkgKyBzb3VyY2VSZWN0Q2xp
cHBlZC55KCkgKiBzb3VyY2UuYnl0ZXNQZXJSb3cgKyBzb3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0
CisgICAgfTsKICAgICAKLSAgICBQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IGRlc3RpbmF0aW9u
OwotICAgIGRlc3RpbmF0aW9uLmZvcm1hdCA9IGRlc3RpbmF0aW9uRm9ybWF0OwotICAgIGRlc3Rp
bmF0aW9uLmJ5dGVzUGVyUm93ID0gNCAqIHNvdXJjZVJlY3RTY2FsZWQud2lkdGgoKTsKLSAgICBk
ZXN0aW5hdGlvbi5yb3dzID0gcGl4ZWxCdWZmZXItPmRhdGEoKS5kYXRhKCkgKyBkZXN0aW5hdGlv
blJlY3QueSgpICogZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgKyBkZXN0aW5hdGlvblJlY3QueCgp
ICogNDsKKyAgICBQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IGRlc3RpbmF0aW9uIHsKKyAgICAg
ICAgZGVzdGluYXRpb25Gb3JtYXQsCisgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPig0ICog
c291cmNlUmVjdFNjYWxlZC53aWR0aCgpKSwKKyAgICAgICAgcGl4ZWxCdWZmZXItPmRhdGEoKS5k
YXRhKCkgKyBkZXN0aW5hdGlvblJlY3QueSgpICogZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgKyBk
ZXN0aW5hdGlvblJlY3QueCgpICogNAorICAgIH07CiAKICAgICBjb252ZXJ0SW1hZ2VQaXhlbHMo
c291cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb25SZWN0LnNpemUoKSk7CiAKQEAgLTE0Nywx
NSArMTUxLDE3IEBAIHZvaWQgSW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQaXhlbEJ1ZmZlcigKICAg
ICBkZXN0aW5hdGlvblJlY3QuaW50ZXJzZWN0KGJhY2tlbmRSZWN0KCkpOwogICAgIHNvdXJjZVJl
Y3RDbGlwcGVkLnNldFNpemUoZGVzdGluYXRpb25SZWN0LnNpemUoKSk7CiAKLSAgICBDb25zdFBp
eGVsQnVmZmVyQ29udmVyc2lvblZpZXcgc291cmNlOwotICAgIHNvdXJjZS5mb3JtYXQgPSBzb3Vy
Y2VQaXhlbEJ1ZmZlci5mb3JtYXQoKTsKLSAgICBzb3VyY2UuYnl0ZXNQZXJSb3cgPSA0ICogc291
cmNlUGl4ZWxCdWZmZXIuc2l6ZSgpLndpZHRoKCk7Ci0gICAgc291cmNlLnJvd3MgPSBzb3VyY2VQ
aXhlbEJ1ZmZlci5kYXRhKCkuZGF0YSgpICsgc291cmNlUmVjdENsaXBwZWQueSgpICogc291cmNl
LmJ5dGVzUGVyUm93ICsgc291cmNlUmVjdENsaXBwZWQueCgpICogNDsKLQotICAgIFBpeGVsQnVm
ZmVyQ29udmVyc2lvblZpZXcgZGVzdGluYXRpb247Ci0gICAgZGVzdGluYXRpb24uZm9ybWF0ID0g
eyBkZXN0aW5hdGlvbkFscGhhRm9ybWF0LCBwaXhlbEZvcm1hdCgpLCBjb2xvclNwYWNlKCkgfTsK
LSAgICBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyA9IGJ5dGVzUGVyUm93KCk7Ci0gICAgZGVzdGlu
YXRpb24ucm93cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEpICsgZGVzdGluYXRp
b25SZWN0LnkoKSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ICsgZGVzdGluYXRpb25SZWN0Lngo
KSAqIDQ7CisgICAgQ29uc3RQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IHNvdXJjZSB7CisgICAg
ICAgIHNvdXJjZVBpeGVsQnVmZmVyLmZvcm1hdCgpLAorICAgICAgICBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oNCAqIHNvdXJjZVBpeGVsQnVmZmVyLnNpemUoKS53aWR0aCgpKSwKKyAgICAgICAgc291
cmNlUGl4ZWxCdWZmZXIuZGF0YSgpLmRhdGEoKSArIHNvdXJjZVJlY3RDbGlwcGVkLnkoKSAqIHNv
dXJjZS5ieXRlc1BlclJvdyArIHNvdXJjZVJlY3RDbGlwcGVkLngoKSAqIDQKKyAgICB9OworCisg
ICAgUGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBkZXN0aW5hdGlvbiB7CisgICAgICAgIHsgZGVz
dGluYXRpb25BbHBoYUZvcm1hdCwgcGl4ZWxGb3JtYXQoKSwgY29sb3JTcGFjZSgpIH0sCisgICAg
ICAgIGJ5dGVzUGVyUm93KCksCisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRh
dGEpICsgZGVzdGluYXRpb25SZWN0LnkoKSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ICsgZGVz
dGluYXRpb25SZWN0LngoKSAqIDQKKyAgICB9OwogCiAgICAgY29udmVydEltYWdlUGl4ZWxzKHNv
dXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uUmVjdC5zaXplKCkpOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNr
ZW5kLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgIkRl
c3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzVHlwZXNHTC5oIgogI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25zLmgiCkBA
IC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICAgICAgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQ7
CiAgICAgfTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkltYWdlQnVmZmVyQmFja2Vu
ZCgpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbWFnZUJ1ZmZlckJh
Y2tlbmQoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJbnRTaXplIGNhbGN1bGF0ZUJh
Y2tlbmRTaXplKGNvbnN0IFBhcmFtZXRlcnMmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
c2l6ZV90IGNhbGN1bGF0ZU1lbW9yeUNvc3QoY29uc3QgSW50U2l6ZSYgYmFja2VuZFNpemUsIHVu
c2lnbmVkIGJ5dGVzUGVyUm93KTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGNsaXBUb01hc2soR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikg
eyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnZlcnRUb0x1bWluYW5jZU1hc2soKTsK
LSAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIHRyYW5zZm9y
bUNvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJikgeyB9CiAKICAgICB2aXJ0dWFsIFN0cmluZyB0b0RhdGFVUkwoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29s
dXRpb24pIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KSBjb25zdCA9IDA7
CkBAIC0xNDAsNyArMTQwLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgSW50U2l6ZSBsb2dpY2FsU2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUobV9wYXJhbWV0ZXJzLmxvZ2ljYWxTaXplKTsgfQog
ICAgIGZsb2F0IHJlc29sdXRpb25TY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5y
ZXNvbHV0aW9uU2NhbGU7IH0KLSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5jb2xvclNwYWNlOyB9CisgICAgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0
ZXJzLmNvbG9yU3BhY2U7IH0KICAgICBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFyYW1ldGVycy5waXhlbEZvcm1hdDsgfQogCiAgICAgSW50UmVjdCBsb2dpY2Fs
UmVjdCgpIGNvbnN0IHsgcmV0dXJuIEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgbG9naWNhbFNp
emUoKSk7IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1
ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bp
eGVsQnVmZmVyLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BpeGVsQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIgotI2lu
Y2x1ZGUgIkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIK
ICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXJGb3JtYXQuaCIKICNp
bmNsdWRlICJQaXhlbEZvcm1hdC5oIgpAQCAtODcsMTkgKzg3LDIxIEBAIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgUGl4ZWxCdWZmZXIKIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0
aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IHsKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShmb3JtYXQpKQorICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVyRm9ybWF0PiBmb3JtYXQ7CisgICAg
ZGVjb2RlciA+PiBmb3JtYXQ7CisgICAgaWYgKCFmb3JtYXQpCiAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAKICAgICAvLyBGSVhNRTogU3VwcG9ydCBub24tOCBiaXQgZm9ybWF0cy4KLSAg
ICBpZiAoIShmb3JtYXQucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OlJHQkE4IHx8IGZvcm1h
dC5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpKQorICAgIGlmICghKGZvcm1hdC0+
cGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OlJHQkE4IHx8IGZvcm1hdC0+cGl4ZWxGb3JtYXQg
PT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAot
ICAgIEludFNpemUgc2l6ZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNpemUpKQorICAgIE9w
dGlvbmFsPEludFNpemU+IHNpemU7CisgICAgZGVjb2RlciA+PiBzaXplOworICAgIGlmICghc2l6
ZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIGF1dG8gY29tcHV0ZWRCdWZm
ZXJTaXplID0gUGl4ZWxCdWZmZXI6OmNvbXB1dGVCdWZmZXJTaXplKGZvcm1hdCwgc2l6ZSk7Cisg
ICAgYXV0byBjb21wdXRlZEJ1ZmZlclNpemUgPSBQaXhlbEJ1ZmZlcjo6Y29tcHV0ZUJ1ZmZlclNp
emUoKmZvcm1hdCwgKnNpemUpOwogICAgIGlmIChjb21wdXRlZEJ1ZmZlclNpemUuaGFzT3ZlcmZs
b3dlZCgpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCkBAIC0xMDcsNyArMTA5LDcg
QEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8UGl4ZWxCdQogICAgIGlmICghZGVj
b2Rlci50ZW1wbGF0ZSBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluPHVpbnQ4X3Q+KGJ1ZmZl
clNpemUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgYXV0byByZXN1bHQg
PSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlRm9yRGVjb2RpbmcoZm9ybWF0LCBzaXplLCBidWZmZXJT
aXplKTsKKyAgICBhdXRvIHJlc3VsdCA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGVGb3JEZWNvZGlu
ZyhXVEZNb3ZlKCpmb3JtYXQpLCAqc2l6ZSwgYnVmZmVyU2l6ZSk7CiAgICAgaWYgKCFyZXN1bHQp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVyc2lvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNw
cAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTIgKzI3LDEx
IEBACiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmgiCiAKICNpbmNsdWRlICJBbHBo
YVByZW11bHRpcGxpY2F0aW9uLmgiCi0jaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUg
IkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRl
ICJQaXhlbEZvcm1hdC5oIgogCiAjaWYgVVNFKEFDQ0VMRVJBVEUpICYmIFVTRShDRykKLSNpbmNs
dWRlICJDb2xvclNwYWNlQ0cuaCIKICNpbmNsdWRlIDxBY2NlbGVyYXRlL0FjY2VsZXJhdGUuaD4K
ICNlbmRpZgogCkBAIC03MSw3ICs3MCw3IEBAIHN0YXRpYyBpbmxpbmUgdkltYWdlX0NHSW1hZ2VG
b3JtYXQgbWFrZVYKIAogICAgIHJlc3VsdC5iaXRzUGVyQ29tcG9uZW50ID0gYml0c1BlckNvbXBv
bmVudDsKICAgICByZXN1bHQuYml0c1BlclBpeGVsID0gYml0c1BlclBpeGVsOwotICAgIHJlc3Vs
dC5jb2xvclNwYWNlID0gY2FjaGVkQ0dDb2xvclNwYWNlKGZvcm1hdC5jb2xvclNwYWNlKTsKKyAg
ICByZXN1bHQuY29sb3JTcGFjZSA9IGZvcm1hdC5jb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFj
ZSgpOwogICAgIHJlc3VsdC5iaXRtYXBJbmZvID0gYml0bWFwSW5mbzsKICAgICByZXN1bHQudmVy
c2lvbiA9IDA7CiAgICAgcmVzdWx0LmRlY29kZSA9IG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0LmgJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVs
QnVmZmVyRm9ybWF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIgotI2luY2x1ZGUgIkNv
bG9yU3BhY2UuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRl
ICJQaXhlbEZvcm1hdC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CkBAIC01MSwxOSArNTEsMjIgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBQaXhlbEJ1ZmZlcgogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxQaXhl
bEJ1ZmZlckZvcm1hdD4gUGl4ZWxCdWZmZXJGb3JtYXQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogewotICAgIEFscGhhUHJlbXVsdGlwbGljYXRpb24gYWxwaGFGb3JtYXQ7Ci0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShhbHBoYUZvcm1hdCkpCisgICAgT3B0aW9uYWw8QWxwaGFQcmVtdWx0aXBs
aWNhdGlvbj4gYWxwaGFGb3JtYXQ7CisgICAgZGVjb2RlciA+PiBhbHBoYUZvcm1hdDsKKyAgICBp
ZiAoIWFscGhhRm9ybWF0KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgUGl4
ZWxGb3JtYXQgcGl4ZWxGb3JtYXQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShwaXhlbEZvcm1h
dCkpCisgICAgT3B0aW9uYWw8UGl4ZWxGb3JtYXQ+IHBpeGVsRm9ybWF0OworICAgIGRlY29kZXIg
Pj4gcGl4ZWxGb3JtYXQ7CisgICAgaWYgKCFwaXhlbEZvcm1hdCkKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKIAotICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlOwotICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoY29sb3JTcGFjZSkpCisgICAgT3B0aW9uYWw8RGVzdGluYXRp
b25Db2xvclNwYWNlPiBjb2xvclNwYWNlOworICAgIGRlY29kZXIgPj4gY29sb3JTcGFjZTsKKyAg
ICBpZiAoIWNvbG9yU3BhY2UpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBy
ZXR1cm4geyB7IGFscGhhRm9ybWF0LCBwaXhlbEZvcm1hdCwgY29sb3JTcGFjZSB9IH07CisgICAg
cmV0dXJuIHsgeyBXVEZNb3ZlKCphbHBoYUZvcm1hdCksIFdURk1vdmUoKnBpeGVsRm9ybWF0KSwg
V1RGTW92ZSgqY29sb3JTcGFjZSkgfSB9OwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVW
aWRlb1NhbXBsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgc3RhdGljIGlu
bGluZSBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPgogICAgIH0KIAogICAgIEludFNpemUgc2l6
ZSB7IHN0YXRpY19jYXN0PGludD4oQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoKHBpeGVsQnVmZmVyKSks
IHN0YXRpY19jYXN0PGludD4oQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodChwaXhlbEJ1ZmZlcikpIH07
Ci0gICAgYXV0byBpb1N1cmZhY2UgPSAgSU9TdXJmYWNlOjpjcmVhdGUoc2l6ZSwgc1JHQkNvbG9y
U3BhY2VSZWYoKSwgSU9TdXJmYWNlOjpGb3JtYXQ6OkJHUkEpOworICAgIGF1dG8gaW9TdXJmYWNl
ID0gIElPU3VyZmFjZTo6Y3JlYXRlKHNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBJT1N1cmZhY2U6OkZvcm1hdDo6QkdSQSk7CiAKICAgICBJT1N1cmZhY2U6OkxvY2tlciBsb2Nr
KCppb1N1cmZhY2UpOwogICAgIHZJbWFnZV9CdWZmZXIgc3JjOwpAQCAtMTEzLDcgKzExMyw4IEBA
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4gUmVtb3QKICAgICAgICAgc3VyZmFj
ZSA9IGlvU3VyZmFjZS0+c3VyZmFjZSgpOwogICAgIH0KIAotICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+KG5ldyBSZW1vdGVWaWRlb1NhbXBsZShzdXJmYWNlLCBz
UkdCQ29sb3JTcGFjZVJlZigpLCBzYW1wbGUucHJlc2VudGF0aW9uVGltZSgpLCBzYW1wbGUudmlk
ZW9Sb3RhdGlvbigpLCBzYW1wbGUudmlkZW9NaXJyb3JlZCgpKSk7CisgICAgLy8gRklYTUU6IFdo
eSBpcyB0aGlzIHVzaW5nIGhhcmRjb2RlZCBzUkdCPworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9w
dHI8UmVtb3RlVmlkZW9TYW1wbGU+KG5ldyBSZW1vdGVWaWRlb1NhbXBsZShzdXJmYWNlLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgc2FtcGxlLnByZXNlbnRhdGlvblRpbWUoKSwgc2Ft
cGxlLnZpZGVvUm90YXRpb24oKSwgc2FtcGxlLnZpZGVvTWlycm9yZWQoKSkpOwogfQogCiBzdGQ6
OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUo
Q1ZQaXhlbEJ1ZmZlclJlZiBpbWFnZUJ1ZmZlciwgTWVkaWFUaW1lJiYgcHJlc2VudGF0aW9uVGlt
ZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24pCkBAIC0xMjQsMTAgKzEyNSwx
MSBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+IFJlbW90CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3Rl
VmlkZW9TYW1wbGU+KG5ldyBSZW1vdGVWaWRlb1NhbXBsZShzdXJmYWNlLCBzUkdCQ29sb3JTcGFj
ZVJlZigpLCBXVEZNb3ZlKHByZXNlbnRhdGlvblRpbWUpLCByb3RhdGlvbiwgZmFsc2UpKTsKKyAg
ICAvLyBGSVhNRTogV2h5IGlzIHRoaXMgdXNpbmcgaGFyZGNvZGVkIHNSR0I/CisgICAgcmV0dXJu
IHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4obmV3IFJlbW90ZVZpZGVvU2FtcGxl
KHN1cmZhY2UsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBXVEZNb3ZlKHByZXNlbnRh
dGlvblRpbWUpLCByb3RhdGlvbiwgZmFsc2UpKTsKIH0KIAotUmVtb3RlVmlkZW9TYW1wbGU6OlJl
bW90ZVZpZGVvU2FtcGxlKElPU3VyZmFjZVJlZiBzdXJmYWNlLCBDR0NvbG9yU3BhY2VSZWYgY29s
b3JTcGFjZSwgTWVkaWFUaW1lJiYgdGltZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90
YXRpb24sIGJvb2wgbWlycm9yZWQpCitSZW1vdGVWaWRlb1NhbXBsZTo6UmVtb3RlVmlkZW9TYW1w
bGUoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29s
b3JTcGFjZSwgTWVkaWFUaW1lJiYgdGltZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90
YXRpb24sIGJvb2wgbWlycm9yZWQpCiAgICAgOiBtX2lvU3VyZmFjZShXZWJDb3JlOjpJT1N1cmZh
Y2U6OmNyZWF0ZUZyb21TdXJmYWNlKHN1cmZhY2UsIGNvbG9yU3BhY2UpKQogICAgICwgbV9yb3Rh
dGlvbihyb3RhdGlvbikKICAgICAsIG1fdGltZShXVEZNb3ZlKHRpbWUpKQpAQCAtMTQwLDcgKzE0
Miw3IEBAIFJlbW90ZVZpZGVvU2FtcGxlOjpSZW1vdGVWaWRlb1NhbXBsZShJT1MKIElPU3VyZmFj
ZVJlZiBSZW1vdGVWaWRlb1NhbXBsZTo6c3VyZmFjZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lv
U3VyZmFjZSAmJiBtX3NlbmRSaWdodCkKLSAgICAgICAgY29uc3RfY2FzdDxSZW1vdGVWaWRlb1Nh
bXBsZSo+KHRoaXMpLT5tX2lvU3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJv
bVNlbmRSaWdodChXVEZNb3ZlKGNvbnN0X2Nhc3Q8UmVtb3RlVmlkZW9TYW1wbGUqPih0aGlzKS0+
bV9zZW5kUmlnaHQpLCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICAgICAgY29uc3RfY2FzdDxS
ZW1vdGVWaWRlb1NhbXBsZSo+KHRoaXMpLT5tX2lvU3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFj
ZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGNvbnN0X2Nhc3Q8UmVtb3RlVmlkZW9TYW1w
bGUqPih0aGlzKS0+bV9zZW5kUmlnaHQpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7
CiAKICAgICByZXR1cm4gbV9pb1N1cmZhY2UgPyBtX2lvU3VyZmFjZS0+c3VyZmFjZSgpIDogbnVs
bHB0cjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZp
ZGVvU2FtcGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUmVtb3RlVmlkZW9TYW1wbGUuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMTAzLDcgKzEwMyw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgUmVtb3Rl
VmlkZW9TYW1wbGUoSU9TdXJmYWNlUmVmLCBDR0NvbG9yU3BhY2VSZWYsIE1lZGlhVGltZSYmLCBN
ZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiwgYm9vbCk7CisgICAgUmVtb3RlVmlkZW9TYW1wbGUo
SU9TdXJmYWNlUmVmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBNZWRpYVRpbWUmJiwg
TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24sIGJvb2wpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OklPU3VyZmFjZT4gbV9pb1N1cmZhY2U7CiAgICAgV1RGOjpNYWNoU2VuZFJpZ2h0
IG1fc2VuZFJpZ2h0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvU2hhZG93Qmx1ci5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4
NSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2xlYXJTY3JhdGNoQnVmZmVyKCk7CiAKICAgICAgICAg
Ly8gU2hhZG93Qmx1ciBpcyBub3QgdXNlZCB3aXRoIGFjY2VsZXJhdGVkIGRyYXdpbmcsIHNvIGl0
J3MgT0sgdG8gbWFrZSBhbiB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZCBidWZmZXIuCi0g
ICAgICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJvdW5kZWRTaXplLCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKHJvdW5kZWRTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAg
ICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXI7CiAgICAgfQogCkBAIC02MDQsNyArNjA0LDcgQEAg
dm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3coY29uc3QgQQogCiB2b2lkIFNoYWRvd0Js
dXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBj
b25zdCBGbG9hdFJvdW5kZWRSZWN0JiBzaGFkb3dlZFJlY3QsIGNvbnN0IExheWVySW1hZ2VQcm9w
ZXJ0aWVzJiBsYXllckltYWdlUHJvcGVydGllcywgY29uc3QgRHJhd0J1ZmZlckNhbGxiYWNrJiBk
cmF3QnVmZmVyKQogewotICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
ZXhwYW5kZWRJbnRTaXplKGxheWVySW1hZ2VQcm9wZXJ0aWVzLmxheWVyU2l6ZSksIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGllcy5sYXllclNpemUpLCBSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWxheWVySW1hZ2UpCiAgICAgICAgIHJl
dHVybjsKIApAQCAtNjMyLDcgKzYzMiw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFk
b3dXaXRob3V0VGkKIAogdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGls
aW5nKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UmVjdCYgZnVsbFJlY3QsIGNv
bnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBMYXllckltYWdlUHJvcGVydGll
cyYgbGF5ZXJJbWFnZVByb3BlcnRpZXMsIGNvbnN0IERyYXdCdWZmZXJDYWxsYmFjayYgZHJhd0J1
ZmZlcikKIHsKLSAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFu
ZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGllcy5sYXllclNpemUpLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CisgICAgYXV0byBsYXllckltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShl
eHBhbmRlZEludFNpemUobGF5ZXJJbWFnZVByb3BlcnRpZXMubGF5ZXJTaXplKSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBp
eGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFsYXllckltYWdlKQogICAgICAgICByZXR1cm47
CiAKQEAgLTcwNSw3ICs3MDUsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0
aFRpbGluCiAjZW5kaWYKIAogICAgIGlmICghbGF5ZXJJbWFnZUJ1ZmZlcikgewotICAgICAgICBs
YXllckltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNpemUsIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwg
UGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAg
ICAgICAgaWYgKCFsYXllckltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTc2Myw3ICs3NjMsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhU
aWxpCiAjZW5kaWYKIAogICAgIGlmICghbGF5ZXJJbWFnZUJ1ZmZlcikgewotICAgICAgICBsYXll
ckltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNpemUsIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAg
ICAgaWYgKCFsYXllckltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTkwMyw3ICs5MDMsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmJsdXJTaGFkb3dCdWZmZXIoSW1hZ2VC
CiAgICAgaWYgKG1fdHlwZSAhPSBCbHVyU2hhZG93KQogICAgICAgICByZXR1cm47CiAKLSAgICBQ
aXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11
bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
IH07CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlv
bjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpIH07CiAgICAgSW50UmVjdCBibHVyUmVjdChJbnRQb2ludCgpLCB0ZW1wbGF0
ZVNpemUpOwogICAgIGF1dG8gbGF5ZXJEYXRhID0gbGF5ZXJJbWFnZS5nZXRQaXhlbEJ1ZmZlcihm
b3JtYXQsIGJsdXJSZWN0KTsKICAgICBpZiAoIWxheWVyRGF0YSkKQEAgLTkzMyw3ICs5MzMsNyBA
QCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdTaGFkb3dMYXllcihjb25zdCBBCiAKICAgICBhZGp1c3RC
bHVyUmFkaXVzKHRyYW5zZm9ybSk7CiAKLSAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGllcy0+bGF5ZXJTaXpl
KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoZXhwYW5kZWRJbnRTaXplKGxheWVySW1hZ2VQcm9wZXJ0aWVzLT5sYXll
clNpemUpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWxheWVySW1hZ2Up
CiAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5j
cHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3
ICs3OSw3IEBAIHN0YXRpYyB2b2lkIHdpcGVBbHBoYUNoYW5uZWxGcm9tUGl4ZWxzKGkKIAogT3B0
aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9y
UGFpbnRSZXN1bHRzKCkKIHsKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0
IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6
UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgYXV0byBwaXhlbEJ1
ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBnZXRJbnRlcm5hbEZyYW1lYnVm
ZmVyU2l6ZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSwxOSArODksMTkg
QEAgdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6Y2xpcFRvTWFzawogICAgICAgICBDYWly
bzo6Y2xpcFRvSW1hZ2VCdWZmZXIoKmRlc3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBpbWFn
ZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBkZXN0UmVjdCk7CiB9CiAKLXZvaWQgSW1hZ2VCdWZm
ZXJDYWlyb0JhY2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNl
IHNyY0NvbG9yU3BhY2UsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBkZXN0Q29sb3JTcGFjZSkKK3Zv
aWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiBzcmNDb2xvclNwYWNlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmIGRlc3RDb2xvclNwYWNlKQogewogICAgIGlmIChzcmNDb2xvclNwYWNlID09IGRlc3RD
b2xvclNwYWNlKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBvbmx5IHNSR0IgPC0+IGxpbmVh
clJHQiBhcmUgc3VwcG9ydGVkIGF0IHRoZSBtb21lbnQKLSAgICBpZiAoKHNyY0NvbG9yU3BhY2Ug
IT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCICYmIHNyY0NvbG9yU3BhY2UgIT0g
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKQotICAgICAgICB8fCAoZGVzdENvbG9yU3BhY2Ug
IT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCICYmIGRlc3RDb2xvclNwYWNlICE9
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQikpCisgICAgaWYgKChzcmNDb2xvclNwYWNlICE9
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigpICYmIHNyY0NvbG9yU3BhY2UgIT0g
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpCisgICAgICAgIHx8IChkZXN0Q29sb3JTcGFj
ZSAhPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKSAmJiBkZXN0Q29sb3JTcGFj
ZSAhPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIG1fcGFyYW1ldGVycy5jb2xvclNwYWNlID0gZGVzdENvbG9yU3BhY2U7CiAKLSAgICBpZiAo
ZGVzdENvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKSB7Cisg
ICAgaWYgKGRlc3RDb2xvclNwYWNlID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JH
QigpKSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4gbGlu
ZWFyUmdiTFVUID0gW10gewogICAgICAgICAgICAgc3RkOjphcnJheTx1aW50OF90LCAyNTY+IGFy
cmF5OwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI1NjsgaSsrKSB7CkBA
IC0xMTIsNyArMTEyLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6dHJhbnNmb3Jt
QwogICAgICAgICAgICAgcmV0dXJuIGFycmF5OwogICAgICAgICB9KCk7CiAgICAgICAgIHBsYXRm
b3JtVHJhbnNmb3JtQ29sb3JTcGFjZShsaW5lYXJSZ2JMVVQpOwotICAgIH0gZWxzZSBpZiAoZGVz
dENvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKSB7CisgICAgfSBlbHNl
IGlmIChkZXN0Q29sb3JTcGFjZSA9PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSkgewog
ICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjphcnJheTx1aW50OF90LCAyNTY+IGRldmljZVJnYkxV
VD0gW10gewogICAgICAgICAgICAgc3RkOjphcnJheTx1aW50OF90LCAyNTY+IGFycmF5OwogICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI1NjsgaSsrKSB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2Vu
ZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGlw
VG9NYXNrKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpIG92ZXJy
aWRlOwogCi0gICAgdm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSBzcmNDb2xvclNwYWNlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgZGVzdENvbG9yU3BhY2UpIG92
ZXJyaWRlOworICAgIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmIHNyY0NvbG9yU3BhY2UsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgZGVz
dENvbG9yU3BhY2UpIG92ZXJyaWRlOwogCiAgICAgU3RyaW5nIHRvRGF0YVVSTChjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFByZXNlcnZlUmVzb2x1dGlv
bikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpIGNvbnN0IG92ZXJyaWRlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5j
cHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0NvbG9yQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI5LDEzICsyOSwxNCBAQAogI2lmIFVTRShDRykKIAogI2luY2x1ZGUgIkNvbG9yU3BhY2VD
Ry5oIgorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgPG11dGV4
PgorI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW5jbHVkZSA8d3Rm
L0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvVGlueUxSVUNhY2hlLmg+Ci0jaW5jbHVkZSA8cGFsL3Nw
aS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Cisj
aW5jbHVkZSA8d3RmL1RpbnlMUlVDYWNoZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0
aWMgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNyZWF0ZUNHQ29sb3IoY29uc3QgQ29sb3ImKTsKQEAg
LTkxLDM0ICs5MiwzOCBAQCBDb2xvcjo6Q29sb3IoQ0dDb2xvclJlZiBjb2xvciwgT3B0aW9uU2V0
CiB7CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY3JlYXRlQ0dDb2xvcihjb25z
dCBDb2xvciYgY29sb3IpCitzdGF0aWMgc3RkOjpwYWlyPENHQ29sb3JTcGFjZVJlZiwgQ29sb3JD
b21wb25lbnRzPGZsb2F0LCA0Pj4gY29udmVydFRvQ0dDb21wYXRpYmxlQ29tcG9uZW50cyhDb2xv
clNwYWNlIGNvbG9yU3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gY29tcG9uZW50cykK
IHsKLSAgICBhdXRvIFtjb2xvclNwYWNlLCBjb21wb25lbnRzXSA9IGNvbG9yLmNvbG9yU3BhY2VB
bmRDb21wb25lbnRzKCk7Ci0KLSAgICBhdXRvIGNnQ29sb3JTcGFjZSA9IGNhY2hlZE51bGxhYmxl
Q0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpOwotCiAgICAgLy8gU29tZSBDRyBwb3J0cyBkb24ndCBz
dXBwb3J0IGFsbCB0aGUgY29sb3Igc3BhY2VzIHJlcXVpcmVkIGFuZCByZXR1cm4KICAgICAvLyBu
dWxscHRyIGZvciB1bnN1cHBvcnRlZCBjb2xvciBzcGFjZXMuIEluIHRob3NlIGNhc2VzLCB3ZSBl
YWdlcmx5IGNvbnZlcnQKICAgICAvLyB0aGUgY29sb3IgaW50byBlaXRoZXIgZXh0ZW5kZWQgc1JH
QiBvciBub3JtYWwgc1JHQiwgaWYgZXh0ZW5kZWQgc1JHQiBpcwotICAgIC8vIG5vdCBzdXBwb3J0
ZWQsIGJlZm9yZSBjcmVhdGluZyB0aGUgQ0dDb2xvclJlZi4KKyAgICAvLyBub3Qgc3VwcG9ydGVk
LgorCisgICAgYXV0byBjZ0NvbG9yU3BhY2UgPSBjYWNoZWROdWxsYWJsZUNHQ29sb3JTcGFjZShj
b2xvclNwYWNlKTsKICAgICBpZiAoIWNnQ29sb3JTcGFjZSkgewogI2lmIEhBVkUoQ09SRV9HUkFQ
SElDU19FWFRFTkRFRF9TUkdCX0NPTE9SX1NQQUNFKQotICAgICAgICBhdXRvIGNvbG9yQ29udmVy
dGVkVG9FeHRlbmRlZFNSR0JBID0gY2FsbFdpdGhDb2xvclR5cGUoY29tcG9uZW50cywgY29sb3JT
cGFjZSwgW10gKGNvbnN0IGF1dG8mIGNvbG9yKSB7Ci0gICAgICAgICAgICByZXR1cm4gY29udmVy
dENvbG9yPEV4dGVuZGVkU1JHQkE8ZmxvYXQ+Pihjb2xvcik7CisgICAgICAgIGF1dG8gY2dDb21w
YXRpYmxlQ29tcG9uZW50cyA9IGNhbGxXaXRoQ29sb3JUeXBlKGNvbXBvbmVudHMsIGNvbG9yU3Bh
Y2UsIFtdIChjb25zdCBhdXRvJiBjb2xvcikgeworICAgICAgICAgICAgcmV0dXJuIGFzQ29sb3JD
b21wb25lbnRzKGNvbnZlcnRDb2xvcjxFeHRlbmRlZFNSR0JBPGZsb2F0Pj4oY29sb3IpKTsKICAg
ICAgICAgfSk7Ci0gICAgICAgIGNvbXBvbmVudHMgPSBhc0NvbG9yQ29tcG9uZW50cyhjb2xvckNv
bnZlcnRlZFRvRXh0ZW5kZWRTUkdCQSk7Ci0gICAgICAgIGNnQ29sb3JTcGFjZSA9IGV4dGVuZGVk
U1JHQkNvbG9yU3BhY2VSZWYoKTsKKyAgICAgICAgcmV0dXJuIHsgZXh0ZW5kZWRTUkdCQ29sb3JT
cGFjZVJlZigpLCBjZ0NvbXBhdGlibGVDb21wb25lbnRzIH07CiAjZWxzZQogICAgICAgICBhdXRv
IGNvbG9yQ29udmVydGVkVG9TUkdCQSA9IGNhbGxXaXRoQ29sb3JUeXBlKGNvbXBvbmVudHMsIGNv
bG9yU3BhY2UsIFtdIChjb25zdCBhdXRvJiBjb2xvcikgewotICAgICAgICAgICAgcmV0dXJuIGNv
bnZlcnRDb2xvcjxTUkdCQTxmbG9hdD4+KGNvbG9yKTsKKyAgICAgICAgICAgIHJldHVybiBhc0Nv
bG9yQ29tcG9uZW50cyhjb252ZXJ0Q29sb3I8U1JHQkE8ZmxvYXQ+Pihjb2xvcikpOwogICAgICAg
ICB9KTsKLSAgICAgICAgY29tcG9uZW50cyA9IGFzQ29sb3JDb21wb25lbnRzKGNvbG9yQ29udmVy
dGVkVG9TUkdCQSk7Ci0gICAgICAgIGNnQ29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7
CisgICAgICAgIHJldHVybiB7IHNSR0JDb2xvclNwYWNlUmVmKCksIGNnQ29tcGF0aWJsZUNvbXBv
bmVudHMgfTsKICNlbmRpZgogICAgIH0KIAotICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gY29tcG9u
ZW50czsKLSAgICBDR0Zsb2F0IGNnRmxvYXRDb21wb25lbnRzWzRdIHsgciwgZywgYiwgYSB9Owor
ICAgIHJldHVybiB7IGNnQ29sb3JTcGFjZSwgY29tcG9uZW50cyB9OworfQorCitzdGF0aWMgUmV0
YWluUHRyPENHQ29sb3JSZWY+IGNyZWF0ZUNHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQorewor
ICAgIGF1dG8gW2NvbG9yU3BhY2UsIGNvbXBvbmVudHNdID0gY29sb3IuY29sb3JTcGFjZUFuZENv
bXBvbmVudHMoKTsKKyAgICBhdXRvIFtjZ0NvbG9yU3BhY2UsIGNnQ29tcGF0aWJsZUNvbXBvbmVu
dHNdID0gY29udmVydFRvQ0dDb21wYXRpYmxlQ29tcG9uZW50cyhjb2xvclNwYWNlLCBjb21wb25l
bnRzKTsKKyAgICAKKyAgICBhdXRvIFtjMSwgYzIsIGMzLCBjNF0gPSBjZ0NvbXBhdGlibGVDb21w
b25lbnRzOworICAgIENHRmxvYXQgY2dGbG9hdENvbXBvbmVudHNbNF0geyBjMSwgYzIsIGMzLCBj
NCB9OwogCiAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShjZ0NvbG9yU3BhY2UsIGNn
RmxvYXRDb21wb25lbnRzKSk7CiB9CkBAIC0xNjEsNiArMTY2LDI0IEBAIENHQ29sb3JSZWYgY2Fj
aGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY28KICAgICByZXR1cm4gY2FjaGUuZ2V0KCkuZ2V0KGNv
bG9yKS5nZXQoKTsKIH0KIAorQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBwbGF0Zm9ybUNvbnZl
cnRDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1dENvbG9yU3BhY2UsIENvbG9yQ29tcG9u
ZW50czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVudHMsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgb3V0cHV0Q29sb3JTcGFjZSkKK3sKKyAgICAvLyBGSVhNRTogSW52ZXN0aWdhdGUg
b3B0aW1pemluZyB0aGlzIHRvIHVzZSB0aGUgYnVpbHRpbiBjb2xvciBjb252ZXJzaW9uIGNvZGUg
Zm9yIHN1cHBvcnRlZCBjb2xvciBzcGFjZXMuCisKKyAgICBhdXRvIFtjZ0lucHV0Q29sb3JTcGFj
ZSwgY2dDb21wYXRpYmxlQ29tcG9uZW50c10gPSBjb252ZXJ0VG9DR0NvbXBhdGlibGVDb21wb25l
bnRzKGlucHV0Q29sb3JTcGFjZSwgaW5wdXRDb2xvckNvbXBvbmVudHMpOworICAgIGlmIChjZ0lu
cHV0Q29sb3JTcGFjZSA9PSBvdXRwdXRDb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpKQor
ICAgICAgICByZXR1cm4gY2dDb21wYXRpYmxlQ29tcG9uZW50czsKKworICAgIGF1dG8gW2MxLCBj
MiwgYzMsIGM0XSA9IGNnQ29tcGF0aWJsZUNvbXBvbmVudHM7CisgICAgQ0dGbG9hdCBzb3VyY2VD
b21wb25lbnRzWzRdIHsgYzEsIGMyLCBjMywgYzQgfTsKKyAgICBDR0Zsb2F0IGRlc3RpbmF0aW9u
Q29tcG9uZW50c1s0XSB7IH07CisKKyAgICBhdXRvIHRyYW5zZm9ybSA9IGFkb3B0Q0YoQ0dDb2xv
clRyYW5zZm9ybUNyZWF0ZShvdXRwdXRDb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBu
dWxscHRyKSk7CisgICAgYXV0byByZXN1bHQgPSBDR0NvbG9yVHJhbnNmb3JtQ29udmVydENvbG9y
Q29tcG9uZW50cyh0cmFuc2Zvcm0uZ2V0KCksIGNnSW5wdXRDb2xvclNwYWNlLCBrQ0dSZW5kZXJp
bmdJbnRlbnREZWZhdWx0LCBzb3VyY2VDb21wb25lbnRzLCBkZXN0aW5hdGlvbkNvbXBvbmVudHMp
OworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworICAgIHJldHVybiB7IHN0YXRp
Y19jYXN0PGZsb2F0PihkZXN0aW5hdGlvbkNvbXBvbmVudHNbMF0pLCBzdGF0aWNfY2FzdDxmbG9h
dD4oZGVzdGluYXRpb25Db21wb25lbnRzWzFdKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRlc3RpbmF0
aW9uQ29tcG9uZW50c1syXSksIHN0YXRpY19jYXN0PGZsb2F0PihkZXN0aW5hdGlvbkNvbXBvbmVu
dHNbM10pIH07Cit9CisKIH0KIAogI2VuZGlmIC8vIFVTRShDRykKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNw
YWNlQ0cuaAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDIzICsxMTksNCBAQCBzdGF0aWMgaW5saW5l
IENHQ29sb3JTcGFjZVJlZiBjYWNoZWROdWxsCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLS8v
IE5PVEU6IFNpbmNlIHRoaXMgZnVuY3Rpb24gaXMgZm9yICpkZXN0aW5hdGlvbiogY29sb3Igc3Bh
Y2VzIHdob3NlIGNhbGxlcnMgYWx3YXlzIGV4cGVjdCBhIG5vbi1udWxsIGNvbG9yIHNwYWNlLCB0
aGlzIGZ1bmN0aW9uIGlzIGd1YXJhbnRlZWQgdG8gcmV0dXJuIG5vbi1udWxsLCB1bmxpa2UgY2Fj
aGVkTnVsbGFibGVDR0NvbG9yU3BhY2UoKS4KLXN0YXRpYyBpbmxpbmUgQ0dDb2xvclNwYWNlUmVm
IGNhY2hlZENHQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkKLXsK
LSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQjoKLSAgICAgICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jaWYgRU5BQkxF
KERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQotICAgIGNhc2UgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpMaW5lYXJTUkdCOgotICAgICAgICByZXR1cm4gbGluZWFyU1JHQkNvbG9y
U3BhY2VSZWYoKTsKLSNlbmRpZgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9E
SVNQTEFZX1AzKQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0g
ICAgICAgIHJldHVybiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCk7Ci0jZW5kaWYKLSAgICB9Ci0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlUmVmKCk7
Ci19Ci0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dEdMQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENH
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMyLDcgKzUzMiw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnBhaW50VG9DYW4KICAgICB9KSk7CiAKICAgICBhdXRvIGltYWdlU2l6ZSA9
IHBpeGVsQnVmZmVyLnNpemUoKTsKLSAgICBhdXRvIGltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0
ZShhZG9wdENGKENHSW1hZ2VDcmVhdGUoaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWln
aHQoKSwgOCwgMzIsIDQgKiBpbWFnZVNpemUud2lkdGgoKSwgY2FjaGVkQ0dDb2xvclNwYWNlKHBp
eGVsQnVmZmVyLmZvcm1hdCgpLmNvbG9yU3BhY2UpLCBiaXRtYXBJbmZvLCBkYXRhUHJvdmlkZXIu
Z2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSkpOworICAgIGF1dG8g
aW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNp
emUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0
aCgpLCBwaXhlbEJ1ZmZlci5mb3JtYXQoKS5jb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgp
LCBiaXRtYXBJbmZvLCBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJ
bnRlbnREZWZhdWx0KSkpOwogCiAgICAgLy8gQ1NTIHN0eWxpbmcgbWF5IGNhdXNlIHRoZSBjYW52
YXMncyBjb250ZW50IHRvIGJlIHJlc2l6ZWQgb24KICAgICAvLyB0aGUgcGFnZS4gR28gYmFjayB0
byB0aGUgQ2FudmFzIHRvIGZpZ3VyZSBvdXQgdGhlIGNvcnJlY3QKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuY3BwCShy
ZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
T1N1cmZhY2VQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYg
SEFWRShJT1NVUkZBQ0UpCiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3Jl
R3JhcGhpY3MuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTU5LDcgKzYw
LDcgQEAgSU9TdXJmYWNlUG9vbCYgSU9TdXJmYWNlUG9vbDo6c2hhcmVkUG9vbAogICAgIHJldHVy
biBwb29sOwogfQogCi1zdGF0aWMgYm9vbCBzdXJmYWNlTWF0Y2hlc1BhcmFtZXRlcnMoSU9TdXJm
YWNlJiBzdXJmYWNlLCBJbnRTaXplIHJlcXVlc3RlZFNpemUsIENHQ29sb3JTcGFjZVJlZiBjb2xv
clNwYWNlLCBJT1N1cmZhY2U6OkZvcm1hdCBmb3JtYXQpCitzdGF0aWMgYm9vbCBzdXJmYWNlTWF0
Y2hlc1BhcmFtZXRlcnMoSU9TdXJmYWNlJiBzdXJmYWNlLCBJbnRTaXplIHJlcXVlc3RlZFNpemUs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgSU9TdXJmYWNlOjpGb3Jt
YXQgZm9ybWF0KQogewogICAgIGlmIChmb3JtYXQgIT0gc3VyZmFjZS5mb3JtYXQoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMTAyLDcgKzEwMyw3IEBAIHZvaWQgSU9TdXJmYWNlUG9vbDo6
ZGlkVXNlU3VyZmFjZU9mU2l6ZSgKICAgICBtX3NpemVzSW5QcnVuZU9yZGVyLmFwcGVuZChzaXpl
KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlUG9vbDo6dGFrZVN1
cmZhY2UoSW50U2l6ZSBzaXplLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwgSU9TdXJmYWNl
OjpGb3JtYXQgZm9ybWF0KQorc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlUG9v
bDo6dGFrZVN1cmZhY2UoSW50U2l6ZSBzaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
IGNvbG9yU3BhY2UsIElPU3VyZmFjZTo6Rm9ybWF0IGZvcm1hdCkKIHsKICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9sb2NrIH07CiAgICAgQ2FjaGVkU3VyZmFjZU1hcDo6aXRlcmF0b3IgbWFwSXRlciA9
IG1fY2FjaGVkU3VyZmFjZXMuZmluZChzaXplKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmgJKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wu
aAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIERlc3RpbmF0YXRpb25Db2xvclNwYWNlOworCiBjbGFzcyBJT1N1cmZhY2VQb29s
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJT1N1cmZhY2VQb29sKTsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQ3LDcgKzQ5LDcgQEAgY2xhc3MgSU9TdXJmYWNlUG9vbCB7
CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIElPU3VyZmFjZVBvb2wmIHNoYXJl
ZFBvb2woKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IHRha2VTdXJmYWNlKElu
dFNpemUsIENHQ29sb3JTcGFjZVJlZiwgSU9TdXJmYWNlOjpGb3JtYXQpOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxJT1N1cmZhY2U+IHRha2VTdXJmYWNlKEludFNpemUsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYsIElPU3VyZmFjZTo6Rm9ybWF0KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFkZFN1cmZhY2Uoc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4pOwogCiAgICAgdm9pZCBkaXNj
YXJkQWxsU3VyZmFjZXMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAJKHJldmlzaW9u
IDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDYgKzEwMiw3IEBAIHN0YXRp
YyBSZWZQdHI8SW1hZ2U+IGNyZWF0ZUJpdG1hcEltYWdlQWYKICAgICBpZiAocmVzb2x1dGlvblNj
YWxlID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVz
KQogICAgICAgICBpbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoY3JlYXRlQ3JvcHBlZEltYWdl
SWZOZWNlc3NhcnkoaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgYmFja2VuZFNpemUpKTsK
ICAgICBlbHNlIHsKKyAgICAgICAgLy8gRklYTUU6IFdoeSBpcyB0aGlzIHVzaW5nIGhhcmRjb2Rl
ZCBzUkdCPwogICAgICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENy
ZWF0ZSgwLCBsb2dpY2FsU2l6ZS53aWR0aCgpLCBsb2dpY2FsU2l6ZS5oZWlnaHQoKSwgOCwgNCAq
IGxvZ2ljYWxTaXplLndpZHRoKCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQ
cmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QpKTsKICAgICAgICAg
Q0dDb250ZXh0U2V0QmxlbmRNb2RlKGNvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkpOwog
ICAgICAgICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQuZ2V0KCksIEZsb2F0UmVjdChGbG9h
dFBvaW50Ojp6ZXJvKCksIGxvZ2ljYWxTaXplKSk7CkBAIC0xNzQsNyArMTc1LDcgQEAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IEltYWdlQnVmZmVyQ0dCYWNrZQogICAgICAgICAvLyBGSVhNRTogU2hv
dWxkIHRoaXMgYmUgdXNpbmcgdGhlIHNhbWUgbG9naWMgYXMgSW1hZ2VCdWZmZXJVdGlsaXRpZXND
Rz8KIAogICAgICAgICAvLyBKUEVHcyBkb24ndCBoYXZlIGFuIGFscGhhIGNoYW5uZWwsIHNvIHdl
IGhhdmUgdG8gbWFudWFsbHkgY29tcG9zaXRlIG9uIHRvcCBvZiBibGFjay4KLSAgICAgICAgUGl4
ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlw
bGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsK
KyAgICAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlv
bjo6UHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSB9OwogICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gZ2V0UGl4ZWxCdWZmZXIo
Zm9ybWF0LCBsb2dpY2FsUmVjdCgpKTsKICAgICAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTkyLDcgKzE5Myw3IEBAIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBJbWFnZUJ1ZmZlckNHQmFja2UKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgICAgIGF1dG8gaW1hZ2VTaXplID0gcGl4ZWxCdWZmZXItPnNpemUoKTsKLSAgICAgICAg
cmV0dXJuIGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXpl
LmhlaWdodCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBjYWNoZWRDR0NvbG9yU3Bh
Y2UocGl4ZWxCdWZmZXItPmZvcm1hdCgpLmNvbG9yU3BhY2UpLCBrQ0dCaXRtYXBCeXRlT3JkZXJE
ZWZhdWx0IHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0YVByb3ZpZGVyLmdldCgpLCAw
LCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOworICAgICAgICByZXR1cm4gYWRv
cHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCks
IDgsIDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCksIHBpeGVsQnVmZmVyLT5mb3JtYXQoKS5jb2xv
clNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBrQ0dCaXRtYXBCeXRlT3JkZXJEZWZhdWx0IHwg
a0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwg
a0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwogICAgIH0KIAogICAgIGlmIChyZXNvbHV0aW9u
U2NhbGUoKSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246
OlllcykgewpAQCAtMjA2LDYgKzIwNyw4IEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZUJ1
ZmZlckNHQmFja2UKICAgICBpZiAoIW5hdGl2ZUltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICBhdXRvIGltYWdlID0gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKTsKKworICAg
IC8vIEZJWE1FOiBXaHkgaXMgdGhpcyB1c2luZyBoYXJkY29kZWQgc1JHQj8KICAgICBhdXRvIGNv
bnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZSgwLCBiYWNrZW5kU2l6ZSgpLndp
ZHRoKCksIGJhY2tlbmRTaXplKCkuaGVpZ2h0KCksIDgsIDQgKiBiYWNrZW5kU2l6ZSgpLndpZHRo
KCksIHNSR0JDb2xvclNwYWNlUmVmKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3Qg
fCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QpKTsKICAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUo
Y29udGV4dC5nZXQoKSwga0NHQmxlbmRNb2RlQ29weSk7CiAgICAgQ0dDb250ZXh0Q2xpcFRvUmVj
dChjb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIGJhY2tlbmRTaXplKCkud2lkdGgoKSwg
YmFja2VuZFNpemUoKS5oZWlnaHQoKSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBC
YWNrZW5kLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02Miw3ICs2Miw3IEBAIHNpemVfdCBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y2Fs
Y3UKICAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kOjpjYWxjdWxhdGVNZW1vcnlDb3N0KGJh
Y2tlbmRTaXplLCBjYWxjdWxhdGVCeXRlc1BlclJvdyhiYWNrZW5kU2l6ZSkpOwogfQogCi1zdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRt
YXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgQ0dDb2xvclNw
YWNlUmVmIGNnQ29sb3JTcGFjZSwgY29uc3QgSG9zdFdpbmRvdyopCitzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpj
cmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgSG9zdFdpbmRvdyopCiB7
CiAgICAgQVNTRVJUKHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4
KTsKIApAQCAtODEsNyArODEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlCiAgICAgc2l6ZV90IG51bUJ5dGVzID0gYmFja2VuZFNpemUuaGVpZ2h0KCkgKiBieXRl
c1BlclJvdzsKICAgICB2ZXJpZnlJbWFnZUJ1ZmZlcklzQmlnRW5vdWdoKGRhdGEsIG51bUJ5dGVz
KTsKIAotICAgIGF1dG8gY2dDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUo
ZGF0YSwgYmFja2VuZFNpemUud2lkdGgoKSwgYmFja2VuZFNpemUuaGVpZ2h0KCksIDgsIGJ5dGVz
UGVyUm93LCBjZ0NvbG9yU3BhY2UsIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBr
Q0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QpKTsKKyAgICBhdXRvIGNnQ29udGV4dCA9IGFkb3B0Q0Yo
Q0dCaXRtYXBDb250ZXh0Q3JlYXRlKGRhdGEsIGJhY2tlbmRTaXplLndpZHRoKCksIGJhY2tlbmRT
aXplLmhlaWdodCgpLCA4LCBieXRlc1BlclJvdywgcGFyYW1ldGVycy5jb2xvclNwYWNlLnBsYXRm
b3JtQ29sb3JTcGFjZSgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0
bWFwQnl0ZU9yZGVyMzJIb3N0KSk7CiAgICAgaWYgKCFjZ0NvbnRleHQpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCkBAIC05NiwxNSArOTYsMTQgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVy
cyYgcGFyYW1ldGVycywgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIGlm
IChhdXRvIGNnQ29sb3JTcGFjZSA9IGNvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkgPyBjb250
ZXh0Q29sb3JTcGFjZShjb250ZXh0KSA6IG51bGxwdHIpCi0gICAgICAgIHJldHVybiBJbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIGNnQ29sb3JTcGFjZS5nZXQo
KSwgbnVsbHB0cik7CisgICAgaWYgKGF1dG8gY2dDb2xvclNwYWNlID0gY29udGV4dC5oYXNQbGF0
Zm9ybUNvbnRleHQoKSA/IGNvbnRleHRDb2xvclNwYWNlKGNvbnRleHQpIDogbnVsbHB0cikgewor
ICAgICAgICBhdXRvIG92ZXJyaWRlUGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7CisgICAgICAgIG92
ZXJyaWRlUGFyYW1ldGVycy5jb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlIHsgY2dD
b2xvclNwYWNlIH07CiAKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNy
ZWF0ZShwYXJhbWV0ZXJzLCBudWxscHRyKTsKLX0KKyAgICAgICAgcmV0dXJuIEltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUob3ZlcnJpZGVQYXJhbWV0ZXJzLCBudWxscHRyKTsKKyAg
ICB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQotewotICAgIHJldHVybiBJbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIGNhY2hlZENHQ29sb3JTcGFjZShw
YXJhbWV0ZXJzLmNvbG9yU3BhY2UpLCBob3N0V2luZG93KTsKKyAgICByZXR1cm4gSW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBudWxscHRyKTsKIH0KIAogSW1h
Z2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OkltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKGNvbnN0
IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIHZvaWQqIGRhdGEsIFJldGFpblB0cjxDR0RhdGFQcm92
aWRlclJlZj4mJiBkYXRhUHJvdmlkZXIsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+
JiYgY29udGV4dCkKQEAgLTE0Niw3ICsxNDUsNyBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdl
QnVmZmVyQ0dCaXRtYXBCCiAgICAgICAgIGF1dG8gYmFja2VuZFNpemUgPSB0aGlzLT5iYWNrZW5k
U2l6ZSgpOwogICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHSW1h
Z2VDcmVhdGUoCiAgICAgICAgICAgICBiYWNrZW5kU2l6ZS53aWR0aCgpLCBiYWNrZW5kU2l6ZS5o
ZWlnaHQoKSwgOCwgMzIsIGJ5dGVzUGVyUm93KCksCi0gICAgICAgICAgICBjYWNoZWRDR0NvbG9y
U3BhY2UoY29sb3JTcGFjZSgpKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtD
R0JpdG1hcEJ5dGVPcmRlcjMySG9zdCwgbV9kYXRhUHJvdmlkZXIuZ2V0KCksCisgICAgICAgICAg
ICBjb2xvclNwYWNlKCkucGxhdGZvcm1Db2xvclNwYWNlKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0
aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QsIG1fZGF0YVByb3ZpZGVyLmdl
dCgpLAogICAgICAgICAgICAgMCwgdHJ1ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpKTsK
ICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksOCArMzksOSBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIEludFNpemUgY2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKGNvbnN0IFBh
cmFtZXRlcnMmKTsKICAgICBzdGF0aWMgc2l6ZV90IGNhbGN1bGF0ZU1lbW9yeUNvc3QoY29uc3Qg
UGFyYW1ldGVycyYpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBDR0NvbG9yU3BhY2VSZWYs
IGNvbnN0IEhvc3RXaW5kb3cqKTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IEhvc3RX
aW5kb3cqKTsKKworICAgIC8vIEZJWE1FOiBSZW5hbWUgdG8gY3JlYXRlVXNpbmdDb2xvclNwYWNl
T2ZHcmFwaGljc0NvbnRleHQoKSAob3Igc29tZXRoaW5nIGxpa2UgdGhhdCkuCiAgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0
IFBhcmFtZXRlcnMmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKIAogICAgIEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCgpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklP
U3VyZmFjZUJhY2tlbmQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MSwxMyArODEsMTMgQEAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4g
SW1hZ2VCdWZmZXJJTwogICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29udGV4dENv
bG9yU3BhY2UoY29udGV4dCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMsIENHQ29sb3JTcGFjZVJlZiBjZ0NvbG9yU3BhY2UsIGNvbnN0
IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQ
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQogewog
ICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUocGFyYW1l
dGVycyk7CiAgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShiYWNrZW5kU2l6
ZSwgYmFja2VuZFNpemUsIGNnQ29sb3JTcGFjZSwgSU9TdXJmYWNlOjpmb3JtYXRGb3JQaXhlbEZv
cm1hdChwYXJhbWV0ZXJzLnBpeGVsRm9ybWF0KSk7CisgICAgYXV0byBzdXJmYWNlID0gSU9TdXJm
YWNlOjpjcmVhdGUoYmFja2VuZFNpemUsIGJhY2tlbmRTaXplLCBwYXJhbWV0ZXJzLmNvbG9yU3Bh
Y2UsIElPU3VyZmFjZTo6Zm9ybWF0Rm9yUGl4ZWxGb3JtYXQocGFyYW1ldGVycy5waXhlbEZvcm1h
dCkpOwogICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTEw
MiwxNSArMTAyLDE0IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2sK
IAogc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywg
Y29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIGlmIChhdXRvIGNnQ29sb3JT
cGFjZSA9IGNvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkgPyBjb250ZXh0Q29sb3JTcGFjZShj
b250ZXh0KSA6IG51bGxwdHIpCi0gICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBjZ0NvbG9yU3BhY2UuZ2V0KCksIG51bGxwdHIpOwor
ICAgIGlmIChhdXRvIGNnQ29sb3JTcGFjZSA9IGNvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkg
PyBjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0KSA6IG51bGxwdHIpIHsKKyAgICAgICAgYXV0byBv
dmVycmlkZVBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzOworICAgICAgICBvdmVycmlkZVBhcmFtZXRl
cnMuY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZSB7IGNnQ29sb3JTcGFjZSB9Owog
Ci0gICAgcmV0dXJuIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRl
cnMsIG51bGxwdHIpOwotfQorICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kOjpjcmVhdGUob3ZlcnJpZGVQYXJhbWV0ZXJzLCBudWxscHRyKTsKKyAgICB9CiAKLXN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEhv
c3RXaW5kb3cqIGhvc3RXaW5kb3cpCi17Ci0gICAgcmV0dXJuIEltYWdlQnVmZmVySU9TdXJmYWNl
QmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJz
LmNvbG9yU3BhY2UpLCBob3N0V2luZG93KTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgbnVsbHB0cik7CiB9CiAKIEltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kKGNvbnN0IFBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMsIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+JiYgc3VyZmFjZSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsOCArNDIsOCBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIHNpemVfdCBjYWxjdWxhdGVNZW1vcnlDb3N0KGNvbnN0IFBhcmFtZXRlcnMmKTsK
ICAgICBzdGF0aWMgc2l6ZV90IGNhbGN1bGF0ZUV4dGVybmFsTWVtb3J5Q29zdChjb25zdCBQYXJh
bWV0ZXJzJik7CiAgICAgCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklP
U3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgQ0dDb2xvclNwYWNlUmVm
LCBjb25zdCBIb3N0V2luZG93Kik7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgSG9z
dFdpbmRvdyopOworICAgIC8vIEZJWE1FOiBSZW5hbWUgdG8gY3JlYXRlVXNpbmdDb2xvclNwYWNl
T2ZHcmFwaGljc0NvbnRleHQoKSAob3Igc29tZXRoaW5nIGxpa2UgdGhhdCkuCiAgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25z
dCBQYXJhbWV0ZXJzJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICBJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYsIHN0ZDo6dW5pcXVlX3B0cjxJT1N1
cmZhY2U+JiYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
VXRpbGl0aWVzQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsNyArMTc3LDcgQEAgc3RhdGlj
IGJvb2wgZW5jb2RlKGNvbnN0IFBpeGVsQnVmZmVyJiBzbwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIGF1dG8gaW1hZ2VTaXplID0gc291cmNlLnNpemUoKTsKLSAgICBhdXRvIGltYWdl
ID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVp
Z2h0KCksIDgsIDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCksIGNhY2hlZENHQ29sb3JTcGFjZShz
b3VyY2UuZm9ybWF0KCkuY29sb3JTcGFjZSksIGtDR0JpdG1hcEJ5dGVPcmRlckRlZmF1bHQgfCBk
YXRhQWxwaGFJbmZvLCBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJ
bnRlbnREZWZhdWx0KSk7CisgICAgYXV0byBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShp
bWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6
ZS53aWR0aCgpLCBzb3VyY2UuZm9ybWF0KCkuY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2Uo
KSwga0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8IGRhdGFBbHBoYUluZm8sIGRhdGFQcm92aWRl
ci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKIAogICAgIHJl
dHVybiBlbmNvZGUoaW1hZ2UuZ2V0KCksIGRlc3RpbmF0aW9uVVRJLmdldCgpLCBxdWFsaXR5LCBm
dW5jdGlvbik7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9O
YXRpdmVJbWFnZUNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAgQ29sb3IgTmF0aXZlSW1hZ2U6OnNpbmdsZVBpeGVsU29s
aWRDb2xvcgogICAgIGlmIChzaXplKCkgIT0gSW50U2l6ZSgxLCAxKSkKICAgICAgICAgcmV0dXJu
IENvbG9yKCk7CiAKKyAgICAvLyBGSVhNRTogV2h5IGlzIHRoaXMgdXNpbmcgaGFyZGNvZGVkIHNS
R0I/CiAgICAgdW5zaWduZWQgY2hhciBwaXhlbFs0XTsgLy8gUkdCQQogICAgIGF1dG8gYml0bWFw
Q29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKHBpeGVsLCAxLCAxLCA4LCBz
aXplb2YocGl4ZWwpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlw
bGllZExhc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkJpZykpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29h
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTU3MSw3ICs1NzEsNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzCiBib29sIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjphbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpCiB7CiAgICAgQVNTRVJU
KCFnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLmlzRW1wdHkoKSk7Ci0gICAgYXV0byBiYWNr
aW5nID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGUoZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNp
emUoKSwgV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgYXV0byBiYWNraW5nID0g
SU9TdXJmYWNlOjpjcmVhdGUoZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgIGlmICghYmFja2luZykKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9J
T1N1cmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9JT1N1cmZhY2UuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDkgKzI3LDEwIEBACiAKICNpZiBIQVZFKElPU1VSRkFDRSkKIAorI2luY2x1ZGUgIkRlc3RpbmF0
aW9uQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlIDxvYmpjL29i
amMuaD4KICNpbmNsdWRlIDxwYWwvc3BpL2NvY29hL0lPU3VyZmFjZVNQSS5oPgotI2luY2x1ZGUg
IkludFNpemUuaCIKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShNQUND
QVRBTFlTVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQogI2RlZmluZSBIQVZF
X0lPU1VSRkFDRV9SR0IxMCAxCkBAIC00NiwxMCArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEhvc3RXaW5kb3c7Ci0gICAgCi0jaWYg
VVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKIGNsYXNzIEltYWdlQnVmZmVyOwot
I2VuZGlmCiAKIGVudW0gY2xhc3MgUGl4ZWxGb3JtYXQgOiB1aW50OF90OwogZW51bSBjbGFzcyBW
b2xhdGlsaXR5U3RhdGUgOiB1aW50OF90OwpAQCAtMTAxLDEwICs5OSwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIHVpbnQzMl90IG1fZmxhZ3M7CiAgICAgfTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGUoSW50U2l6ZSwgQ0dDb2xvclNw
YWNlUmVmLCBGb3JtYXQgPSBGb3JtYXQ6OkJHUkEpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGUoSW50U2l6ZSwgSW50U2l6ZSBjb250
ZXh0U2l6ZSwgQ0dDb2xvclNwYWNlUmVmLCBGb3JtYXQgPSBGb3JtYXQ6OkJHUkEpOwotICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGVGcm9t
U2VuZFJpZ2h0KGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYmLCBDR0NvbG9yU3BhY2VSZWYpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVh
dGVGcm9tU3VyZmFjZShJT1N1cmZhY2VSZWYsIENHQ29sb3JTcGFjZVJlZik7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZShJbnRTaXpl
LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGb3JtYXQgPSBGb3JtYXQ6OkJHUkEpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVh
dGUoSW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiwgRm9ybWF0ID0gRm9ybWF0OjpCR1JBKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlRnJvbVNlbmRSaWdodChjb25zdCBXVEY6
Ok1hY2hTZW5kUmlnaHQmJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZUZyb21T
dXJmYWNlKElPU3VyZmFjZVJlZiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZUZy
b21JbWFnZShDR0ltYWdlUmVmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlRnJvbVBpeGVsQnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYp
OwogICAgIApAQCAtMTQ2LDcgKzE0NCw3IEBAIHB1YmxpYzoKICAgICBJbnRTaXplIHNpemUoKSBj
b25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICBzaXplX3QgdG90YWxCeXRlcygpIGNvbnN0IHsg
cmV0dXJuIG1fdG90YWxCeXRlczsgfQogCi0gICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2Uo
KSBjb25zdCB7IHJldHVybiBtX2NvbG9yU3BhY2UuZ2V0KCk7IH0KKyAgICBjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yU3BhY2U7
IH0KICAgICBXRUJDT1JFX0VYUE9SVCBGb3JtYXQgZm9ybWF0KCkgY29uc3Q7CiAgICAgV0VCQ09S
RV9FWFBPUlQgSU9TdXJmYWNlSUQgc3VyZmFjZUlEKCkgY29uc3Q7CiAgICAgc2l6ZV90IGJ5dGVz
UGVyUm93KCkgY29uc3Q7CkBAIC0xNjksMTQgKzE2NywxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBt
aWdyYXRlQ29sb3JTcGFjZVRvUHJvcGVydGllcygpOwogCiBwcml2YXRlOgotICAgIElPU3VyZmFj
ZShJbnRTaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBDR0NvbG9yU3BhY2VSZWYsIEZvcm1hdCwg
Ym9vbCYgc3VjY2Vzcyk7Ci0gICAgSU9TdXJmYWNlKElPU3VyZmFjZVJlZiwgQ0dDb2xvclNwYWNl
UmVmKTsKKyAgICBJT1N1cmZhY2UoSW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiwgRm9ybWF0LCBib29sJiBzdWNjZXNzKTsKKyAgICBJT1N1
cmZhY2UoSU9TdXJmYWNlUmVmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKIAotICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBzdXJmYWNlRnJvbVBvb2woSW50U2l6
ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xvclNwYWNlUmVmLCBGb3JtYXQpOworICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBzdXJmYWNlRnJvbVBvb2woSW50U2l6ZSwg
SW50U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRm9ybWF0
KTsKICAgICBJbnRTaXplIGNvbnRleHRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0U2l6
ZTsgfQogICAgIHZvaWQgc2V0Q29udGV4dFNpemUoSW50U2l6ZSk7CiAKLSAgICBSZXRhaW5QdHI8
Q0dDb2xvclNwYWNlUmVmPiBtX2NvbG9yU3BhY2U7CisgICAgRGVzdGluYXRpb25Db2xvclNwYWNl
IG1fY29sb3JTcGFjZTsKICAgICBJbnRTaXplIG1fc2l6ZTsKICAgICBJbnRTaXplIG1fY29udGV4
dFNpemU7CiAgICAgc2l6ZV90IG1fdG90YWxCeXRlczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0JKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFj
ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgi
CiAjaW1wb3J0ICJJT1N1cmZhY2UuaCIKIAotI2ltcG9ydCAiQ29yZVZpZGVvU29mdExpbmsuaCIK
KyNpbXBvcnQgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250
ZXh0Q0cuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMLmgiCiAjaW1wb3J0ICJIb3N0V2lu
ZG93LmgiCkBAIC00MSw5ICs0MSwxMSBAQAogI2ltcG9ydCA8d3RmL01hdGhFeHRyYXMuaD4KICNp
bXBvcnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAorI2ltcG9ydCAiQ29yZVZpZGVvU29mdExp
bmsuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgc3RkOjp1bmlxdWVfcHRyPElP
U3VyZmFjZT4gSU9TdXJmYWNlOjpzdXJmYWNlRnJvbVBvb2woSW50U2l6ZSBzaXplLCBJbnRTaXpl
IGNvbnRleHRTaXplLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwgRm9ybWF0IHBpeGVsRm9y
bWF0KQoraW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6c3VyZmFj
ZUZyb21Qb29sKEludFNpemUgc2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGb3JtYXQgcGl4ZWxGb3JtYXQpCiB7CiAgICAg
YXV0byBjYWNoZWRTdXJmYWNlID0gSU9TdXJmYWNlUG9vbDo6c2hhcmVkUG9vbCgpLnRha2VTdXJm
YWNlKHNpemUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKICAgICBpZiAoIWNhY2hlZFN1cmZh
Y2UpCkBAIC01MywxMiArNTUsMTIgQEAgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+
IElPU3VyZgogICAgIHJldHVybiBjYWNoZWRTdXJmYWNlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZShJbnRTaXplIHNpemUsIENHQ29sb3JTcGFjZVJl
ZiBjb2xvclNwYWNlLCBGb3JtYXQgcGl4ZWxGb3JtYXQpCitzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJm
YWNlPiBJT1N1cmZhY2U6OmNyZWF0ZShJbnRTaXplIHNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgY29sb3JTcGFjZSwgRm9ybWF0IHBpeGVsRm9ybWF0KQogewogICAgIHJldHVybiBJ
T1N1cmZhY2U6OmNyZWF0ZShzaXplLCBzaXplLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCk7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6Y3JlYXRlKEludFNpemUg
c2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UsIEZv
cm1hdCBwaXhlbEZvcm1hdCkKK3N0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6
Y3JlYXRlKEludFNpemUgc2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGb3JtYXQgcGl4ZWxGb3JtYXQpCiB7CiAgICAgaWYg
KGF1dG8gY2FjaGVkU3VyZmFjZSA9IHN1cmZhY2VGcm9tUG9vbChzaXplLCBjb250ZXh0U2l6ZSwg
Y29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpKSB7CiAgICAgICAgIExPR19XSVRIX1NUUkVBTShJT1N1
cmZhY2UsIHN0cmVhbSA8PCAiSU9TdXJmYWNlOjpjcmVhdGUgdG9vayBmcm9tIHBvb2w6ICIgPDwg
KmNhY2hlZFN1cmZhY2UpOwpAQCAtNzUsMTMgKzc3LDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxJT1N1
cmZhY2U+IElPU3VyZmFjZTo6Y3IKICAgICByZXR1cm4gc3VyZmFjZTsKIH0KIAotc3RkOjp1bmlx
dWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KGNvbnN0IE1h
Y2hTZW5kUmlnaHQmJiBzZW5kUmlnaHQsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKQorc3Rk
Ojp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KGNv
bnN0IE1hY2hTZW5kUmlnaHQmJiBzZW5kUmlnaHQsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYgY29sb3JTcGFjZSkKIHsKICAgICBhdXRvIHN1cmZhY2UgPSBhZG9wdENGKElPU3VyZmFjZUxv
b2t1cEZyb21NYWNoUG9ydChzZW5kUmlnaHQuc2VuZFJpZ2h0KCkpKTsKICAgICByZXR1cm4gSU9T
dXJmYWNlOjpjcmVhdGVGcm9tU3VyZmFjZShzdXJmYWNlLmdldCgpLCBjb2xvclNwYWNlKTsKIH0K
IAotc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU3VyZmFj
ZShJT1N1cmZhY2VSZWYgc3VyZmFjZSwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UpCitzdGQ6
OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TdXJmYWNlKElPU3Vy
ZmFjZVJlZiBzdXJmYWNlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2Up
CiB7CiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+KG5ldyBJT1N1cmZhY2Uo
c3VyZmFjZSwgY29sb3JTcGFjZSkpOwogfQpAQCAtOTQsNyArOTYsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyCiAgICAgc2l6ZV90IHdpZHRoID0gQ0dJbWFnZUdl
dFdpZHRoKGltYWdlKTsKICAgICBzaXplX3QgaGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChpbWFn
ZSk7CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShJbnRTaXplKHdpZHRo
LCBoZWlnaHQpLCBDR0ltYWdlR2V0Q29sb3JTcGFjZShpbWFnZSkpOworICAgIGF1dG8gc3VyZmFj
ZSA9IElPU3VyZmFjZTo6Y3JlYXRlKEludFNpemUod2lkdGgsIGhlaWdodCksIERlc3RpbmF0aW9u
Q29sb3JTcGFjZSB7IENHSW1hZ2VHZXRDb2xvclNwYWNlKGltYWdlKSB9KTsKICAgICBpZiAoIXN1
cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8gc3VyZmFjZUNvbnRleHQg
PSBzdXJmYWNlLT5lbnN1cmVQbGF0Zm9ybUNvbnRleHQoKTsKQEAgLTExNiw3ICsxMTgsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyCiAgICAgaWYgKCFjb2xvclNw
YWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBjcmVhdGVGcm9tU3Vy
ZmFjZShzdXJmYWNlLCBjb2xvclNwYWNlKTsKKyAgICByZXR1cm4gY3JlYXRlRnJvbVN1cmZhY2Uo
c3VyZmFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIHsgY29sb3JTcGFjZSB9KTsKIH0KIAogdm9p
ZCBJT1N1cmZhY2U6Om1vdmVUb1Bvb2woc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4mJiBzdXJm
YWNlKQpAQCAtMTk2LDcgKzE5OCw3IEBAIHN0YXRpYyBOU0RpY3Rpb25hcnkgKm9wdGlvbnNGb3Iz
MkJpdFN1cmYKIAogfQogCi1JT1N1cmZhY2U6OklPU3VyZmFjZShJbnRTaXplIHNpemUsIEludFNp
emUgY29udGV4dFNpemUsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlLCBGb3JtYXQgZm9ybWF0
LCBib29sJiBzdWNjZXNzKQorSU9TdXJmYWNlOjpJT1N1cmZhY2UoSW50U2l6ZSBzaXplLCBJbnRT
aXplIGNvbnRleHRTaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2Us
IEZvcm1hdCBmb3JtYXQsIGJvb2wmIHN1Y2Nlc3MpCiAgICAgOiBtX2NvbG9yU3BhY2UoY29sb3JT
cGFjZSkKICAgICAsIG1fc2l6ZShzaXplKQogICAgICwgbV9jb250ZXh0U2l6ZShjb250ZXh0U2l6
ZSkKQEAgLTIzMiw3ICsyMzQsNyBAQCBJT1N1cmZhY2U6OklPU3VyZmFjZShJbnRTaXplIHNpemUs
IEludFNpCiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKExheWVycywgIklPU3VyZmFjZSBjcmVh
dGlvbiBmYWlsZWQgZm9yIHNpemU6ICglZCAlZCkgYW5kIGZvcm1hdDogKCVkKSIsIHNpemUud2lk
dGgoKSwgc2l6ZS5oZWlnaHQoKSwgZm9ybWF0KTsKIH0KIAotSU9TdXJmYWNlOjpJT1N1cmZhY2Uo
SU9TdXJmYWNlUmVmIHN1cmZhY2UsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKQorSU9TdXJm
YWNlOjpJT1N1cmZhY2UoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgY29sb3JTcGFjZSkKICAgICA6IG1fY29sb3JTcGFjZShjb2xvclNwYWNlKQogICAg
ICwgbV9zdXJmYWNlKHN1cmZhY2UpCiB7CkBAIC0zNDcsNyArMzQ5LDcgQEAgQ0dDb250ZXh0UmVm
IElPU3VyZmFjZTo6ZW5zdXJlUGxhdGZvcm1DbwogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
Ci0gICAgbV9jZ0NvbnRleHQgPSBhZG9wdENGKENHSU9TdXJmYWNlQ29udGV4dENyZWF0ZShtX3N1
cmZhY2UuZ2V0KCksIG1fY29udGV4dFNpemUud2lkdGgoKSwgbV9jb250ZXh0U2l6ZS5oZWlnaHQo
KSwgYml0c1BlckNvbXBvbmVudCwgYml0c1BlclBpeGVsLCBtX2NvbG9yU3BhY2UuZ2V0KCksIGJp
dG1hcEluZm8pKTsKKyAgICBtX2NnQ29udGV4dCA9IGFkb3B0Q0YoQ0dJT1N1cmZhY2VDb250ZXh0
Q3JlYXRlKG1fc3VyZmFjZS5nZXQoKSwgbV9jb250ZXh0U2l6ZS53aWR0aCgpLCBtX2NvbnRleHRT
aXplLmhlaWdodCgpLCBiaXRzUGVyQ29tcG9uZW50LCBiaXRzUGVyUGl4ZWwsIG1fY29sb3JTcGFj
ZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwgYml0bWFwSW5mbykpOwogCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIGlmIChhdXRvIGRpc3BsYXlNYXNrID0gcHJpbWFyeU9wZW5HTERpc3BsYXlNYXNrKCkp
IHsKQEAgLTUxNSw3ICs1MTcsNyBAQCB2b2lkIElPU3VyZmFjZTo6c2V0T3duZXJzaGlwSWRlbnRp
dHkodGFzCiAKIHZvaWQgSU9TdXJmYWNlOjptaWdyYXRlQ29sb3JTcGFjZVRvUHJvcGVydGllcygp
CiB7Ci0gICAgYXV0byBjb2xvclNwYWNlUHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNl
Q29weVByb3BlcnR5TGlzdChtX2NvbG9yU3BhY2UuZ2V0KCkpKTsKKyAgICBhdXRvIGNvbG9yU3Bh
Y2VQcm9wZXJ0aWVzID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDb3B5UHJvcGVydHlMaXN0KG1fY29s
b3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSkpOwogICAgIElPU3VyZmFjZVNldFZhbHVlKG1f
c3VyZmFjZS5nZXQoKSwga0lPU3VyZmFjZUNvbG9yU3BhY2UsIGNvbG9yU3BhY2VQcm9wZXJ0aWVz
LmdldCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29y
ZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5k
ZXJlckNvcmVJbWFnZS5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBGaWx0ZXJFZmZlY3RSZW5k
ZXJlckNvcmVJbWFnZTo6cmVuZAogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgYXV0byYgc3Vy
ZmFjZSA9IGRvd25jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI+KCptX291dHB1dEltYWdlQnVm
ZmVyKS5zdXJmYWNlKCk7Ci0gICAgW3NoYXJlZENJQ29udGV4dCgpLmdldCgpIHJlbmRlcjogbV9v
dXRwdXRJbWFnZS5nZXQoKSB0b0lPU3VyZmFjZTogc3VyZmFjZS5zdXJmYWNlKCkgYm91bmRzOmRl
c3RSZWN0KGxhc3RFZmZlY3QpIGNvbG9yU3BhY2U6Y2FjaGVkQ0dDb2xvclNwYWNlKGxhc3RFZmZl
Y3QucmVzdWx0Q29sb3JTcGFjZSgpKV07CisgICAgW3NoYXJlZENJQ29udGV4dCgpLmdldCgpIHJl
bmRlcjogbV9vdXRwdXRJbWFnZS5nZXQoKSB0b0lPU3VyZmFjZTogc3VyZmFjZS5zdXJmYWNlKCkg
Ym91bmRzOmRlc3RSZWN0KGxhc3RFZmZlY3QpIGNvbG9yU3BhY2U6bGFzdEVmZmVjdC5yZXN1bHRD
b2xvclNwYWNlKCkucGxhdGZvcm1Db2xvclNwYWNlKCldOwogfQogICAgIAogRmxvYXRSZWN0IEZp
bHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpkZXN0UmVjdChjb25zdCBGaWx0ZXJFZmZlY3Qm
IGxhc3RFZmZlY3QpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNmZXJTZXNzaW9uVlQubW0JKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdl
VHJhbnNmZXJTZXNzaW9uVlQubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxMSw2ICsyMTEsOCBAQCBS
ZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gSW1hZ2VUcmFuc2ZlCiAgICAgQ1ZQaXhlbEJ1ZmZl
ckxvY2tCYXNlQWRkcmVzcyhyZ2JCdWZmZXIsIDApOwogICAgIHZvaWQqIGRhdGEgPSBDVlBpeGVs
QnVmZmVyR2V0QmFzZUFkZHJlc3MocmdiQnVmZmVyKTsKICAgICBhdXRvIHJldGFpbmVkUkdCQnVm
ZmVyID0gYWRvcHRDRihyZ2JCdWZmZXIpOworCisgICAgLy8gRklYTUU6IFdoeSBpcyB0aGlzIHVz
aW5nIGhhcmRjb2RlZCBzUkdCPwogICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlKGRhdGEsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCks
IDgsIENWUGl4ZWxCdWZmZXJHZXRCeXRlc1BlclJvdyhyZ2JCdWZmZXIpLCBzUkdCQ29sb3JTcGFj
ZVJlZigpLCAoQ0dCaXRtYXBJbmZvKSBrQ0dJbWFnZUFscGhhTm9uZVNraXBGaXJzdCkpOwogICAg
IGlmICghY29udGV4dCkgewogICAgICAgICBSRUxFQVNFX0xPRyhNZWRpYSwgIkltYWdlVHJhbnNm
ZXJTZXNzaW9uVlQ6OmNyZWF0ZVBpeGVsQnVmZmVyOiBDR0JpdG1hcENvbnRleHRDcmVhdGUgcmV0
dXJuZWQgbnVsbHB0ciIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5jcHAJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVs
QnVmZmVyQ29uZm9ybWVyQ1YuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNiArMTcyLDcgQEAg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IFBpeGVsQnVmZmVyQ29uZm9ybQogICAgIENHRGF0YVByb3Zp
ZGVyRGlyZWN0Q2FsbGJhY2tzIHByb3ZpZGVyQ2FsbGJhY2tzID0geyAwLCBDVlBpeGVsQnVmZmVy
R2V0Qnl0ZVBvaW50ZXJDYWxsYmFjaywgQ1ZQaXhlbEJ1ZmZlclJlbGVhc2VCeXRlUG9pbnRlckNh
bGxiYWNrLCAwLCBDVlBpeGVsQnVmZmVyUmVsZWFzZUluZm9DYWxsYmFjayB9OwogICAgIFJldGFp
blB0cjxDR0RhdGFQcm92aWRlclJlZj4gcHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVy
Q3JlYXRlRGlyZWN0KGluZm8sIGJ5dGVMZW5ndGgsICZwcm92aWRlckNhbGxiYWNrcykpOwogCisg
ICAgLy8gRklYTUU6IFdoeSBpcyB0aGlzIHVzaW5nIGhhcmRjb2RlZCBzUkdCPwogICAgIHJldHVy
biBhZG9wdENGKENHSW1hZ2VDcmVhdGUod2lkdGgsIGhlaWdodCwgOCwgMzIsIGJ5dGVzUGVyUm93
LCBzUkdCQ29sb3JTcGFjZVJlZigpLCBiaXRtYXBJbmZvLCBwcm92aWRlci5nZXQoKSwgbnVsbHB0
ciwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VC
dWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCShyZXZpc2lvbiAyNzc5MTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIElt
YWdlQnVmZmVyIDogcHVibGljIENvbmNyZXRlSW1hZ2UKICAgICB1c2luZyBCYXNlQ29uY3JldGVJ
bWFnZUJ1ZmZlcjo6YmFzZVRyYW5zZm9ybTsKIAogcHVibGljOgotICAgIHN0YXRpYyBhdXRvIGNy
ZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25z
dCBIb3N0V2luZG93KiBob3N0V2luZG93KQorICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBG
bG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9z
dFdpbmRvdyogaG9zdFdpbmRvdykKICAgICB7CiAgICAgICAgIHJldHVybiBCYXNlQ29uY3JldGVJ
bWFnZUJ1ZmZlcjo6dGVtcGxhdGUgY3JlYXRlPEltYWdlQnVmZmVyPihzaXplLCByZXNvbHV0aW9u
U2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBob3N0V2luZG93KTsKICAgICB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MSw3ICsyODEs
NyBAQCB2b2lkIEl0ZW1IYW5kbGU6OmRlc3Ryb3koKQogICAgICAgICBnZXQ8RmlsbFJvdW5kZWRS
ZWN0PigpLn5GaWxsUm91bmRlZFJlY3QoKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSXRl
bVR5cGU6OkdldFBpeGVsQnVmZmVyOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJp
dmlhbGx5X2Rlc3RydWN0aWJsZTxHZXRQaXhlbEJ1ZmZlcj46OnZhbHVlKTsKKyAgICAgICAgZ2V0
PEdldFBpeGVsQnVmZmVyPigpLn5HZXRQaXhlbEJ1ZmZlcigpOwogICAgICAgICByZXR1cm47CiAg
ICAgY2FzZSBJdGVtVHlwZTo6UHV0UGl4ZWxCdWZmZXI6CiAgICAgICAgIGdldDxQdXRQaXhlbEJ1
ZmZlcj4oKS5+UHV0UGl4ZWxCdWZmZXIoKTsKQEAgLTMwNyw3ICszMDcsNyBAQCB2b2lkIEl0ZW1I
YW5kbGU6OmRlc3Ryb3koKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKICAgICBjYXNlIEl0ZW1U
eXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+
Ojp2YWx1ZSk7CisgICAgICAgIGdldDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oKS5+QmVn
aW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSXRl
bVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3Rk
Ojppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI+Ojp2YWx1
ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgJKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmgJKHdvcmtpbmcgY29weSkKQEAgLTg4MCwyMyArODgwLDU1IEBAIE9wdGlv
bmFsPENsaXBQYXRoPiBDbGlwUGF0aDo6ZGVjb2RlKERlY28KIGNsYXNzIEJlZ2luQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIEl0ZW1UeXBlIGl0
ZW1UeXBlID0gSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOwotICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc0lubGluZUl0ZW0gPSBmYWxzZTsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNEcmF3aW5nSXRlbSA9IGZhbHNlOwogCi0gICAgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMo
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9y
U3BhY2UpCisgICAgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQogICAg
ICAgICA6IG1fZGVzdGluYXRpb24oZGVzdGluYXRpb24pCiAgICAgICAgICwgbV9jb2xvclNwYWNl
KGNvbG9yU3BhY2UpCiAgICAgewogICAgIH0KIAorICAgIEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSYm
IGNvbG9yU3BhY2UpCisgICAgICAgIDogbV9kZXN0aW5hdGlvbihkZXN0aW5hdGlvbikKKyAgICAg
ICAgLCBtX2NvbG9yU3BhY2UoV1RGTW92ZShjb2xvclNwYWNlKSkKKyAgICB7CisgICAgfQorCiAg
ICAgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGlu
YXRpb247IH0KLSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY29sb3JTcGFjZTsgfQorICAgIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYg
Y29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JTcGFjZTsgfQorCisgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxCZWdpbkNsaXBUb0RyYXdpbmdDb21t
YW5kcz4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV9kZXN0
aW5hdGlvbjsKICAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgbV9jb2xvclNwYWNlOwogfTsKIAor
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9kZXN0
aW5hdGlvbjsKKyAgICBlbmNvZGVyIDw8IG1fY29sb3JTcGFjZTsKK30KKwordGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KK09wdGlvbmFsPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPiBCZWdpbkNs
aXBUb0RyYXdpbmdDb21tYW5kczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0
aW9uYWw8RmxvYXRSZWN0PiBkZXN0aW5hdGlvbjsKKyAgICBkZWNvZGVyID4+IGRlc3RpbmF0aW9u
OworICAgIGlmICghZGVzdGluYXRpb24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CisgICAgZGVj
b2RlciA+PiBjb2xvclNwYWNlOworICAgIGlmICghY29sb3JTcGFjZSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiB7eyAqZGVzdGluYXRpb24sIFdURk1vdmUoKmNv
bG9yU3BhY2UpIH19OworfQorCiBjbGFzcyBFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMgewogcHVi
bGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUgPSBJdGVtVHlwZTo6
RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOwpAQCAtMTkzOCwyMyArMTk3MCw1NSBAQCBwcml2YXRl
OgogY2xhc3MgR2V0UGl4ZWxCdWZmZXIgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIg
SXRlbVR5cGUgaXRlbVR5cGUgPSBJdGVtVHlwZTo6R2V0UGl4ZWxCdWZmZXI7Ci0gICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBib29sIGlzSW5saW5lSXRlbSA9IGZhbHNlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBp
c0RyYXdpbmdJdGVtID0gZmFsc2U7CiAKLSAgICBHZXRQaXhlbEJ1ZmZlcihXZWJDb3JlOjpQaXhl
bEJ1ZmZlckZvcm1hdCBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1Jl
Y3QpCisgICAgR2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZv
cm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkKICAgICAgICAgOiBtX3NyY1JlY3Qoc3JjUmVj
dCkKICAgICAgICAgLCBtX291dHB1dEZvcm1hdChvdXRwdXRGb3JtYXQpCiAgICAgewogICAgIH0K
IAotICAgIFBpeGVsQnVmZmVyRm9ybWF0IG91dHB1dEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1f
b3V0cHV0Rm9ybWF0OyB9CisgICAgR2V0UGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXJGb3JtYXQmJiBv
dXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpCisgICAgICAgIDogbV9zcmNSZWN0
KHNyY1JlY3QpCisgICAgICAgICwgbV9vdXRwdXRGb3JtYXQoV1RGTW92ZShvdXRwdXRGb3JtYXQp
KQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9y
bWF0KCkgY29uc3QgeyByZXR1cm4gbV9vdXRwdXRGb3JtYXQ7IH0KICAgICBJbnRSZWN0IHNyY1Jl
Y3QoKSBjb25zdCB7IHJldHVybiBtX3NyY1JlY3Q7IH0KIAorICAgIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8R2V0UGl4ZWxCdWZmZXI+IGRlY29kZShEZWNvZGVyJik7
CisKIHByaXZhdGU6CiAgICAgSW50UmVjdCBtX3NyY1JlY3Q7CiAgICAgUGl4ZWxCdWZmZXJGb3Jt
YXQgbV9vdXRwdXRGb3JtYXQ7CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBH
ZXRQaXhlbEJ1ZmZlcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5j
b2RlciA8PCBtX3NyY1JlY3Q7CisgICAgZW5jb2RlciA8PCBtX291dHB1dEZvcm1hdDsKK30KKwor
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPEdldFBpeGVsQnVmZmVyPiBHZXRQaXhl
bEJ1ZmZlcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8SW50UmVj
dD4gc3JjUmVjdDsKKyAgICBkZWNvZGVyID4+IHNyY1JlY3Q7CisgICAgaWYgKCFzcmNSZWN0KQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXJG
b3JtYXQ+IG91dHB1dEZvcm1hdDsKKyAgICBkZWNvZGVyID4+IG91dHB1dEZvcm1hdDsKKyAgICBp
ZiAoIW91dHB1dEZvcm1hdCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJl
dHVybiB7eyBXVEZNb3ZlKCpvdXRwdXRGb3JtYXQpLCAqc3JjUmVjdCB9fTsKK30KKwogY2xhc3Mg
UHV0UGl4ZWxCdWZmZXIgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUg
aXRlbVR5cGUgPSBJdGVtVHlwZTo6UHV0UGl4ZWxCdWZmZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1Miw3ICs0NTIsNyBAQCB2b2lkIFJlY29yZGVyOjpj
bGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1CiAgICAgYXBwZW5kPENsaXBUb0ltYWdlQnVmZmVyPihp
bWFnZUJ1ZmZlci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgZGVzdFJlY3QpOwogfQog
Ci12b2lkIFJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZv
aWQoR3JhcGhpY3NDb250ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKQordm9pZCBSZWNvcmRlcjo6
Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGlj
c0NvbnRleHQmKT4mJiBkcmF3aW5nRnVuY3Rpb24pCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0IG5l
c3RlZENvbnRleHQoWyZdKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICBhdXRv
IGluaXRpYWxDbGlwID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgZGVzdGluYXRpb24uc2l6ZSgp
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDcgKzE0Nyw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpIG92ZXJy
aWRlOwogICAgIEludFJlY3QgY2xpcEJvdW5kcygpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFRv
SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3ND
b250ZXh0Jik+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYs
IEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpIG92ZXJyaWRlOwogI2lmIEVOQUJM
RShWSURFTykKICAgICB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pIG92ZXJyaWRlOwogICAgIGJvb2wgY2FuUGFpbnRGcmFt
ZUZvck1lZGlhKGNvbnN0IE1lZGlhUGxheWVyJikgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFRGlzcGxhY2VtZW50TWFwLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgYm9vbCBGRURpc3BsYWNlbWVudE1hcDo6c2V0U2Nh
bGUoZmxvYXQgcwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEZFRGlzcGxhY2VtZW50TWFw
OjpzZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSkKK3ZvaWQgRkVEaXNw
bGFjZW1lbnRNYXA6OnNldFJlc3VsdENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJikKIHsKICAgICAvLyBTcGVjOiBUaGUgJ2NvbG9yLWludGVycG9sYXRpb24tZmlsdGVycycg
cHJvcGVydHkgb25seSBhcHBsaWVzIHRvIHRoZSAnaW4yJyBzb3VyY2UgaW1hZ2UKICAgICAvLyBh
bmQgZG9lcyBub3QgYXBwbHkgdG8gdGhlICdpbicgc291cmNlIGltYWdlLiBUaGUgJ2luJyBzb3Vy
Y2UgaW1hZ2UgbXVzdCByZW1haW4gaW4gaXRzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5o
CShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcg
QEAgcHVibGljOgogICAgIGZsb2F0IHNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9zY2FsZTsgfQog
ICAgIGJvb2wgc2V0U2NhbGUoZmxvYXQpOwogCi0gICAgdm9pZCBzZXRSZXN1bHRDb2xvclNwYWNl
KERlc3RpbmF0aW9uQ29sb3JTcGFjZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRSZXN1bHRDb2xv
clNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpIG92ZXJyaWRlOwogICAgIHZvaWQg
dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBpbnQpIG92ZXJy
aWRlOwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUZsb29kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MCw4ICs0MCw4IEBAIHB1YmxpYzoKICNpZiAhVVNFKENHKQogICAgIC8vIGZlRmxvb2Qg
ZG9lcyBub3QgcGVyZm9ybSBjb2xvciBpbnRlcnBvbGF0aW9uIG9mIGFueSBraW5kLCBzbyB0aGUg
cmVzdWx0IGlzIGFsd2F5cyBpbiB0aGUgY3VycmVudAogICAgIC8vIGNvbG9yIHNwYWNlIHJlZ2Fy
ZGxlc3Mgb2YgdGhlIHZhbHVlIG9mIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycy4KLSAgICB2
b2lkIHNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlKSBvdmVycmlk
ZSB7IEZpbHRlckVmZmVjdDo6c2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IpOyB9Ci0gICAgdm9pZCBzZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29s
b3JTcGFjZSkgb3ZlcnJpZGUgeyBGaWx0ZXJFZmZlY3Q6OnNldFJlc3VsdENvbG9yU3BhY2UoRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsgfQorICAgIHZvaWQgc2V0T3BlcmF0aW5nQ29sb3JT
cGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKSBvdmVycmlkZSB7IEZpbHRlckVmZmVj
dDo6c2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7IH0K
KyAgICB2b2lkIHNldFJlc3VsdENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
Jikgb3ZlcnJpZGUgeyBGaWx0ZXJFZmZlY3Q6OnNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCkpOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVUaWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCB2b2lkIEZF
VGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgdGlsZVJlY3Quc2NhbGUoZmls
dGVyLmZpbHRlclJlc29sdXRpb24oKS53aWR0aCgpLCBmaWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigp
LmhlaWdodCgpKTsKICAgICB9CiAKLSAgICBhdXRvIHRpbGVJbWFnZSA9IFNWR1JlbmRlcmluZ0Nv
bnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHRpbGVSZWN0LCB0aWxlUmVjdCwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCLCBmaWx0ZXIoKS5yZW5kZXJpbmdNb2RlKCkpOworICAgIGF1dG8gdGls
ZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIodGlsZVJlY3Qs
IHRpbGVSZWN0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgZmlsdGVyKCkucmVuZGVy
aW5nTW9kZSgpKTsKICAgICBpZiAoIXRpbGVJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJFZmZlY3QuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQzOSw3ICs0MzksNyBAQCBzdGF0aWMgdm9pZCBjb3B5VW5wcmVtdWx0aXBseWluZ0FscGhh
KGNvCiAjZW5kaWYKIH0KIAotT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEZpbHRlckVmZmVjdDo6Y29u
dmVydFBpeGVsQnVmZmVyVG9Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSB0YXJnZXRD
b2xvclNwYWNlLCBQaXhlbEJ1ZmZlciYgcGl4ZWxCdWZmZXIpCitPcHRpb25hbDxQaXhlbEJ1ZmZl
cj4gRmlsdGVyRWZmZWN0Ojpjb252ZXJ0UGl4ZWxCdWZmZXJUb0NvbG9yU3BhY2UoY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiB0YXJnZXRDb2xvclNwYWNlLCBQaXhlbEJ1ZmZlciYgcGl4ZWxC
dWZmZXIpCiB7CiAgICAgLy8gRklYTUU6IFVzaW5nIGFuIEltYWdlQnVmZmVyIHRvIHBlcmZvcm0g
dGhlIGNvbG9yIHNwYWNlIGNvbnZlcnNpb24gaXMgdW5uZWNlc3NhcnkuIFdlIGNhbiBkbyBpdCBk
aXJlY3RseS4KIApAQCAtNDU0LDcgKzQ1NCw3IEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBGaWx0
ZXJFZmZlY3Q6OmNvbnYKICAgICByZXR1cm4gY29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNl
KHRhcmdldENvbG9yU3BhY2UsICpidWZmZXIsIGRlc3RpbmF0aW9uUmVjdCwgcGl4ZWxCdWZmZXIu
Zm9ybWF0KCkuYWxwaGFGb3JtYXQpOwogfQogCi1PcHRpb25hbDxQaXhlbEJ1ZmZlcj4gRmlsdGVy
RWZmZWN0Ojpjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNw
YWNlIHRhcmdldENvbG9yU3BhY2UsIEltYWdlQnVmZmVyJiBpbnB1dEJ1ZmZlciwgY29uc3QgSW50
UmVjdCYgcmVjdCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRBbHBoYUZvcm1hdCkKK09w
dGlvbmFsPFBpeGVsQnVmZmVyPiBGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29s
b3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHRhcmdldENvbG9yU3BhY2UsIElt
YWdlQnVmZmVyJiBpbnB1dEJ1ZmZlciwgY29uc3QgSW50UmVjdCYgcmVjdCwgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbiBvdXRwdXRBbHBoYUZvcm1hdCkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBjYW4g
YmUgZG9uZSBtb3JlIGRpcmVjdGx5IHVzaW5nIFBpeGVsQnVmZmVyQ29udmVyc2lvbi4KIApAQCAt
NDcyLDcgKzQ3Miw3IEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBGaWx0ZXJFZmZlY3Q6OmNvbnYK
ICAgICByZXR1cm4gY29udmVydGVkQnVmZmVyLT5nZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIHJlY3Qp
OwogfQogCi12b2lkIEZpbHRlckVmZmVjdDo6Y29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0
aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSBjb2xvclNwYWNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEZpbHRlckVmZmVjdDo6Y29weUNvbnZlcnRlZElt
YWdlQnVmZmVyVG9EZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewogICAgIC8vIENv
bnZlcnRzIHRoZSBkYXRhIHN0b3JlZCBpbiBtX2ltYWdlQnVmZmVyUmVzdWx0LCBhbmQgc2F2ZSB0
byBkZXN0aW5hdGlvbgogICAgIGF1dG8gY29udmVydGVkUGl4ZWxCdWZmZXIgPSBjb252ZXJ0SW1h
Z2VCdWZmZXJUb0NvbG9yU3BhY2UoY29sb3JTcGFjZSwgKm1faW1hZ2VCdWZmZXJSZXN1bHQsIHsg
SW50UG9pbnQoKSwgbV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkgfSwgb3V0cHV0Rm9ybWF0KTsK
QEAgLTQ4MSw3ICs0ODEsNyBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weUNvbnZlcnRlZEltYWdl
QnVmCiAgICAgY29weUltYWdlQnl0ZXMoY29udmVydGVkUGl4ZWxCdWZmZXItPmRhdGEoKSwgZGVz
dGluYXRpb24sIGRlc3RSZWN0KTsKIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0
ZWRQaXhlbEJ1ZmZlclRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9u
LCBQaXhlbEJ1ZmZlciYgcGl4ZWxCdWZmZXIsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNw
YWNlLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5Q29u
dmVydGVkUGl4ZWxCdWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5h
dGlvbiwgUGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmIGNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewogICAgIC8vIENvbnZl
cnRzIHRoZSBkYXRhIHN0b3JlZCBpbiBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0L21fcHJlbXVs
dGlwbGllZEltYWdlUmVzdWx0LAogICAgIC8vIHdoaWNoZXZlciBpc24ndCBudWxsLCBhbmQgc2F2
ZSB0byBkZXN0aW5hdGlvbgpAQCAtNjI4LDcgKzYyOCw3IEBAIGJvb2wgRmlsdGVyRWZmZWN0Ojpy
ZXF1aXJlc1BpeGVsQnVmZmVyQ28KICAgICAvLyBUaGlzIGZ1bmN0aW9uIGRldGVybWluZXMgd2hl
dGhlciB3ZSBuZWVkIHRoZSBzdGVwIG9mIGFuIGV4dHJhIGNvbG9yIHNwYWNlIGNvbnZlcnNpb24K
ICAgICAvLyBXZSBvbmx5IG5lZWQgZXh0cmEgY29sb3IgY29udmVyc2lvbiB3aGVuIDEpIGNvbG9y
IHNwYWNlIGlzIGRpZmZlcmVudCBpbiB0aGUgaW5wdXQKICAgICAvLyBBTkQgMikgdGhlIGZpbHRl
ciBpcyBtYW5pcHVsYXRpbmcgcmF3IHBpeGVscwotICAgIHJldHVybiBkZXN0aW5hdGlvbkNvbG9y
U3BhY2UgJiYgcmVzdWx0Q29sb3JTcGFjZSgpICE9ICpkZXN0aW5hdGlvbkNvbG9yU3BhY2U7Cisg
ICAgcmV0dXJuIHJlc3VsdENvbG9yU3BhY2UoKSAhPSBkZXN0aW5hdGlvbkNvbG9yU3BhY2U7CiAj
ZWxzZQogICAgIC8vIEFkZGl0aW9uYWwgY29sb3Igc3BhY2UgY29udmVyc2lvbiBpcyBub3QgbmVl
ZGVkIG9uIG5vbi1DRwogICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvbkNvbG9yU3BhY2UpOwpA
QCAtNjM2LDcgKzYzNiw3IEBAIGJvb2wgRmlsdGVyRWZmZWN0OjpyZXF1aXJlc1BpeGVsQnVmZmVy
Q28KICNlbmRpZgogfQogCi12b2lkIEZpbHRlckVmZmVjdDo6dHJhbnNmb3JtUmVzdWx0Q29sb3JT
cGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UgZGVzdGluYXRpb25Db2xvclNwYWNlKQordm9pZCBG
aWx0ZXJFZmZlY3Q6OnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiBkZXN0aW5hdGlvbkNvbG9yU3BhY2UpCiB7CiAjaWYgVVNFKENHKQogICAgIC8v
IENHIGhhbmRsZXMgY29sb3Igc3BhY2UgYWRqdXN0bWVudHMgaW50ZXJuYWxseS4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJFZmZlY3QuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyAr
MjMsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBbHBoYVByZW11bHRpcGxpY2F0aW9u
LmgiCi0jaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JT
cGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNp
bmNsdWRlICJJbnRSZWN0RXh0ZW50LmgiCkBAIC0xNjUsMTMgKzE2NSwxMyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBjbGlwc1RvQm91bmRzKCkgY29uc3QgeyByZXR1cm4gbV9jbGlwc1RvQm91bmRzOyB9
CiAgICAgdm9pZCBzZXRDbGlwc1RvQm91bmRzKGJvb2wgdmFsdWUpIHsgbV9jbGlwc1RvQm91bmRz
ID0gdmFsdWU7IH0KIAotICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBvcGVyYXRpbmdDb2xvclNw
YWNlKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYXRpbmdDb2xvclNwYWNlOyB9Ci0gICAgdmlydHVh
bCB2b2lkIHNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9y
U3BhY2UpIHsgbV9vcGVyYXRpbmdDb2xvclNwYWNlID0gY29sb3JTcGFjZTsgfQotICAgIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSByZXN1bHRDb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXN1
bHRDb2xvclNwYWNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFJlc3VsdENvbG9yU3BhY2UoRGVz
dGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpIHsgbV9yZXN1bHRDb2xvclNwYWNlID0gY29s
b3JTcGFjZTsgfQorICAgIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgb3BlcmF0aW5nQ29s
b3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW5nQ29sb3JTcGFjZTsgfQorICAgIHZp
cnR1YWwgdm9pZCBzZXRPcGVyYXRpbmdDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgY29sb3JTcGFjZSkgeyBtX29wZXJhdGluZ0NvbG9yU3BhY2UgPSBjb2xvclNwYWNlOyB9
CisgICAgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiByZXN1bHRDb2xvclNwYWNlKCkgY29u
c3QgeyByZXR1cm4gbV9yZXN1bHRDb2xvclNwYWNlOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFJl
c3VsdENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKSB7
IG1fcmVzdWx0Q29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB0
cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKEZpbHRlckVmZmVjdCogaW4sIGNvbnN0IGludCkgeyBp
bi0+dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShtX29wZXJhdGluZ0NvbG9yU3BhY2UpOyB9Ci0g
ICAgdm9pZCB0cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSk7
CisgICAgdm9pZCB0cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYpOwogICAgIAogICAgIHN0YXRpYyBWZWN0b3I8ZmxvYXQ+IG5vcm1hbGl6ZWRGbG9h
dHMoY29uc3QgVmVjdG9yPGZsb2F0PiYgdmFsdWVzKQogICAgIHsKQEAgLTIwMywxMSArMjAzLDEx
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpID0g
MDsKIAogICAgIHZvaWQgY29weUltYWdlQnl0ZXMoY29uc3QgVWludDhDbGFtcGVkQXJyYXkmIHNv
dXJjZSwgVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JikgY29u
c3Q7Ci0gICAgdm9pZCBjb3B5Q29udmVydGVkSW1hZ2VCdWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4
Q2xhbXBlZEFycmF5JiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBBbHBoYVByZW11bHRpcGxpY2F0
aW9uLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdm9pZCBjb3B5Q29udmVydGVkUGl4ZWxCdWZmZXJU
b0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiwgUGl4ZWxCdWZmZXImLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2b2lkIGNvcHlDb252ZXJ0ZWRJbWFn
ZUJ1ZmZlclRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmLCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uLCBjb25zdCBJbnRSZWN0Jik7Cisg
ICAgdm9pZCBjb3B5Q29udmVydGVkUGl4ZWxCdWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBl
ZEFycmF5JiwgUGl4ZWxCdWZmZXImLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25z
dCBJbnRSZWN0Jik7CiAgICAgYm9vbCByZXF1aXJlc1BpeGVsQnVmZmVyQ29sb3JTcGFjZUNvbnZl
cnNpb24oT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPik7Ci0gICAgT3B0aW9uYWw8UGl4
ZWxCdWZmZXI+IGNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9y
U3BhY2UsIEltYWdlQnVmZmVyJiwgY29uc3QgSW50UmVjdCYsIEFscGhhUHJlbXVsdGlwbGljYXRp
b24pOwotICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBjb252ZXJ0UGl4ZWxCdWZmZXJUb0NvbG9y
U3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlLCBQaXhlbEJ1ZmZlciYpOworICAgIE9wdGlvbmFs
PFBpeGVsQnVmZmVyPiBjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UoY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiwgSW1hZ2VCdWZmZXImLCBjb25zdCBJbnRSZWN0JiwgQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbik7CisgICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGNvbnZlcnRQaXhlbEJ1
ZmZlclRvQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEJ1ZmZl
ciYpOwogICAgIAogCiAgICAgRmlsdGVyJiBtX2ZpbHRlcjsKQEAgLTI0NCwxMyArMjQ0LDExIEBA
IHByaXZhdGU6CiAgICAgYm9vbCBtX2NsaXBzVG9Cb3VuZHMgeyB0cnVlIH07CiAKICNpZiBFTkFC
TEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgc3RhdGljIGNvbnN0
ZXhwciBhdXRvIGRlZmF1bHRPcGVyYXRpbmdDb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNw
YWNlOjpMaW5lYXJTUkdCOworICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBtX29wZXJhdGluZ0Nv
bG9yU3BhY2UgeyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKSB9OwogI2Vsc2UK
LSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZGVmYXVsdE9wZXJhdGluZ0NvbG9yU3BhY2UgPSBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I7CisgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1f
b3BlcmF0aW5nQ29sb3JTcGFjZSB7IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAj
ZW5kaWYKLQotICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBtX29wZXJhdGluZ0NvbG9yU3BhY2Ug
eyBkZWZhdWx0T3BlcmF0aW5nQ29sb3JTcGFjZSB9OwotICAgIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSBtX3Jlc3VsdENvbG9yU3BhY2UgeyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAg
ICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgbV9yZXN1bHRDb2xvclNwYWNlIHsgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCkgfTsKICAgICAKICAgICBjb25zdCBUeXBlIG1fZmlsdGVyRWZmZWN0
Q2xhc3NUeXBlOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvU291cmNlR3JhcGhpYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oCShyZXZpc2lvbiAyNzc5MTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMu
aAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBwcml2YXRlOgogICAgIFNvdXJjZUdy
YXBoaWMoRmlsdGVyJiBmaWx0ZXIpCiAgICAgICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlciwgVHlw
ZTo6U291cmNlR3JhcGhpYykKICAgICB7Ci0gICAgICAgIHNldE9wZXJhdGluZ0NvbG9yU3BhY2Uo
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKKyAgICAgICAgc2V0T3BlcmF0aW5nQ29sb3JT
cGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgfQogCiAgICAgY29uc3Qg
Y2hhciogZmlsdGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJTb3VyY2VHcmFwaGljIjsg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAv
Tmljb3NpYUdDR0xMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDR0xMYXllci5jcHAJKHJldmlzaW9u
IDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4
bWFwL05pY29zaWFHQ0dMTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBA
IHZvaWQgR0NHTExheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKICAgICBJbnRTaXplIHRleHR1
cmVTaXplKG1fY29udGV4dC5tX2N1cnJlbnRXaWR0aCwgbV9jb250ZXh0Lm1fY3VycmVudEhlaWdo
dCk7CiAgICAgVGV4dHVyZU1hcHBlckdMOjpGbGFncyBmbGFncyA9IG1fY29udGV4dC5jb250ZXh0
QXR0cmlidXRlcygpLmFscGhhID8gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCA6IDA7CiAj
aWYgVVNFKEFOR0xFKQotICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRleHR1cmVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFj
Y2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUodGV4dHVyZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgp
OwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIHsKLSAgICBQaXhlbEJ1ZmZlckZv
cm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBp
eGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgUGl4
ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0
aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
IH07CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0
LCBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTEVTLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlYWRuUGl4ZWwKIAogT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIHsKLSAgICBQaXhlbEJ1ZmZlckZv
cm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBp
eGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgUGl4
ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0
aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
IH07CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0
LCBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcAkocmV2
aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0JpdG1hcFRleHR1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHZvaWQg
Qml0bWFwVGV4dHVyZTo6dXBkYXRlQ29udGVudHMoR3JhcGgKIHsKICAgICAvLyBNYWtpbmcgYW4g
dW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQgYnVmZmVyIGhlcmUgaXMgT0sgYmVjYXVzZSB0
aGlzIGNvZGUKICAgICAvLyBpc24ndCB1c2VkIGJ5IGFueSBwbGF0Zm9ybXMgdGhhdCByZXNwZWN0
IHRoZSBhY2NlbGVyYXRlZCBiaXQuCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUodGFyZ2V0UmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
IDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAg
ICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0YXJnZXRSZWN0LnNpemUo
KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZv
cm1TY3JlZW5HdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IE1pY2hhZWwgRW1tZWwg
bWlrZS5lbW1lbEBnbWFpbC5jb20KICAqIENvcHlyaWdodCAoQykgMjAwOCBDaHJpc3RpYW4gRHl3
YW4gPGNocmlzdGlhbkBpbWVuZGlvLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJv
cmEgTHRkLgpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtU2NyZWVuLmgiCiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIK
ICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRl
ICJHdGtVdGlsaXRpZXMuaCIKQEAgLTg1LDYgKzg2LDExIEBAIGJvb2wgc2NyZWVuSXNNb25vY2hy
b21lKFdpZGdldCogd2lkZ2V0KQogICAgIHJldHVybiBzY3JlZW5EZXB0aCh3aWRnZXQpIDwgMjsK
IH0KIAorRGVzdGluYXRpb25Db2xvclNwYWNlIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KikKK3sK
KyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7Cit9CisKIGJvb2wgc2Ny
ZWVuSGFzSW52ZXJ0ZWRDb2xvcnMoKQogewogICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNjcmVlbklPUy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5JT1MubW0JKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNjcmVl
bklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDYsIDIwMTQgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwNi0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg4LDkgKzg4LDkgQEAgYm9vbCBzY3JlZW5T
dXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UoV2lkZwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotQ0dD
b2xvclNwYWNlUmVmIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KiB3aWRnZXQpCitEZXN0aW5hdGlv
bkNvbG9yU3BhY2Ugc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqIHdpZGdldCkKIHsKLSAgICByZXR1
cm4gc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKHdpZGdldCkgPyBleHRlbmRlZFNSR0JDb2xv
clNwYWNlUmVmKCkgOiBzUkdCQ29sb3JTcGFjZVJlZigpOworICAgIHJldHVybiBzY3JlZW5TdXBw
b3J0c0V4dGVuZGVkQ29sb3Iod2lkZ2V0KSA/IERlc3RpbmF0aW9uQ29sb3JTcGFjZSB7IGV4dGVu
ZGVkU1JHQkNvbG9yU3BhY2VSZWYoKSB9IDogRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7
CiB9CiAKIC8vIFRoZXNlIGZ1bmN0aW9ucyBzY2FsZSBiZXR3ZWVuIHNjcmVlbiBhbmQgcGFnZSBj
b29yZGluYXRlcyBiZWNhdXNlIEphdmFTY3JpcHQvRE9NIG9wZXJhdGlvbnMKQEAgLTE5MywxNiAr
MTkzLDE0IEBAIFNjcmVlblByb3BlcnRpZXMgY29sbGVjdFNjcmVlblByb3BlcnRpZXMKICAgICAg
ICAgRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QgPSBzY3JlZW4uYm91bmRzOwogICAgICAg
ICBzY3JlZW5BdmFpbGFibGVSZWN0LnNldFkoTlNNYXhZKHNjcmVlbi5ib3VuZHMpIC0gKHNjcmVl
bkF2YWlsYWJsZVJlY3QueSgpICsgc2NyZWVuQXZhaWxhYmxlUmVjdC5oZWlnaHQoKSkpOyAvLyBm
bGlwCiAgICAgICAgIEZsb2F0UmVjdCBzY3JlZW5SZWN0ID0gc2NyZWVuLl9yZWZlcmVuY2VCb3Vu
ZHM7Ci0gICAgICAgIAotICAgICAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNw
YWNlID0gc2NyZWVuQ29sb3JTcGFjZShudWxscHRyKTsKLSAgICAgICAgCisgICAgICAgIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlIHsgc2NyZWVuQ29sb3JTcGFjZShudWxscHRyKSB9
OwogICAgICAgICBpbnQgc2NyZWVuRGVwdGggPSBXZWJDb3JlOjpzY3JlZW5EZXB0aChudWxscHRy
KTsKICAgICAgICAgaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50ID0gV2ViQ29yZTo6c2NyZWVu
RGVwdGhQZXJDb21wb25lbnQobnVsbHB0cik7CiAgICAgICAgIGJvb2wgc2NyZWVuU3VwcG9ydHNF
eHRlbmRlZENvbG9yID0gV2ViQ29yZTo6c2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKG51bGxw
dHIpOwogICAgICAgICBib29sIHNjcmVlbkhhc0ludmVydGVkQ29sb3JzID0gV2ViQ29yZTo6c2Ny
ZWVuSGFzSW52ZXJ0ZWRDb2xvcnMoKTsKICAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBXZWJD
b3JlOjpzY3JlZW5QUElGYWN0b3IoKTsKIAotICAgICAgICBzY3JlZW5Qcm9wZXJ0aWVzLnNjcmVl
bkRhdGFNYXAuc2V0KCsrZGlzcGxheUlELCBTY3JlZW5EYXRhIHsgc2NyZWVuQXZhaWxhYmxlUmVj
dCwgc2NyZWVuUmVjdCwgY29sb3JTcGFjZSwgc2NyZWVuRGVwdGgsIHNjcmVlbkRlcHRoUGVyQ29t
cG9uZW50LCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IsIHNjcmVlbkhhc0ludmVydGVkQ29s
b3JzLCBmYWxzZSwgc2NhbGVGYWN0b3IgfSk7CisgICAgICAgIHNjcmVlblByb3BlcnRpZXMuc2Ny
ZWVuRGF0YU1hcC5zZXQoKytkaXNwbGF5SUQsIFNjcmVlbkRhdGEgeyBzY3JlZW5BdmFpbGFibGVS
ZWN0LCBzY3JlZW5SZWN0LCBXVEZNb3ZlKGNvbG9yU3BhY2UpLCBzY3JlZW5EZXB0aCwgc2NyZWVu
RGVwdGhQZXJDb21wb25lbnQsIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciwgc2NyZWVuSGFz
SW52ZXJ0ZWRDb2xvcnMsIGZhbHNlLCBzY2FsZUZhY3RvciB9KTsKICAgICAgICAgCiAgICAgICAg
IGlmIChzY3JlZW4gPT0gW1BBTDo6Z2V0VUlTY3JlZW5DbGFzcygpIG1haW5TY3JlZW5dKQogICAg
ICAgICAgICAgc2NyZWVuUHJvcGVydGllcy5wcmltYXJ5RGlzcGxheUlEID0gZGlzcGxheUlEOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1h
Yy5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bs
YXRmb3JtU2NyZWVuTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsOSArMTMwLDcgQEAgU2Ny
ZWVuUHJvcGVydGllcyBjb2xsZWN0U2NyZWVuUHJvcGVydGllcwogICAgICAgICBGbG9hdFJlY3Qg
c2NyZWVuQXZhaWxhYmxlUmVjdCA9IHNjcmVlbi52aXNpYmxlRnJhbWU7CiAgICAgICAgIHNjcmVl
bkF2YWlsYWJsZVJlY3Quc2V0WShOU01heFkoc2NyZWVuLmZyYW1lKSAtIChzY3JlZW5BdmFpbGFi
bGVSZWN0LnkoKSArIHNjcmVlbkF2YWlsYWJsZVJlY3QuaGVpZ2h0KCkpKTsgLy8gZmxpcAogICAg
ICAgICBGbG9hdFJlY3Qgc2NyZWVuUmVjdCA9IHNjcmVlbi5mcmFtZTsKLQotICAgICAgICBSZXRh
aW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNlID0gc2NyZWVuLmNvbG9yU3BhY2UuQ0dD
b2xvclNwYWNlOwotCisgICAgICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlIHsg
c2NyZWVuLmNvbG9yU3BhY2UuQ0dDb2xvclNwYWNlIH07CiAgICAgICAgIGludCBzY3JlZW5EZXB0
aCA9IE5TQml0c1BlclBpeGVsRnJvbURlcHRoKHNjcmVlbi5kZXB0aCk7CiAgICAgICAgIGludCBz
Y3JlZW5EZXB0aFBlckNvbXBvbmVudCA9IE5TQml0c1BlclNhbXBsZUZyb21EZXB0aChzY3JlZW4u
ZGVwdGgpOwogICAgICAgICBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciA9IFtzY3Jl
ZW4gY2FuUmVwcmVzZW50RGlzcGxheUdhbXV0Ok5TRGlzcGxheUdhbXV0UDNdOwpAQCAtMTYzLDcg
KzE2MSw3IEBAIFNjcmVlblByb3BlcnRpZXMgY29sbGVjdFNjcmVlblByb3BlcnRpZXMKICAgICAg
ICAgaWYgKGRpc3BsYXlNYXNrKQogICAgICAgICAgICAgZ3B1SUQgPSBncHVJREZvckRpc3BsYXlN
YXNrKGRpc3BsYXlNYXNrKTsKIAotICAgICAgICBzY3JlZW5Qcm9wZXJ0aWVzLnNjcmVlbkRhdGFN
YXAuc2V0KGRpc3BsYXlJRCwgU2NyZWVuRGF0YSB7IHNjcmVlbkF2YWlsYWJsZVJlY3QsIHNjcmVl
blJlY3QsIGNvbG9yU3BhY2UsIHNjcmVlbkRlcHRoLCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCwg
c2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yLCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycywgc2Ny
ZWVuU3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlLCBzY3JlZW5Jc01vbm9jaHJvbWUsIGRpc3BsYXlN
YXNrLCBncHVJRCwgZHluYW1pY1JhbmdlTW9kZSwgc2NhbGVGYWN0b3IgfSk7CisgICAgICAgIHNj
cmVlblByb3BlcnRpZXMuc2NyZWVuRGF0YU1hcC5zZXQoZGlzcGxheUlELCBTY3JlZW5EYXRhIHsg
c2NyZWVuQXZhaWxhYmxlUmVjdCwgc2NyZWVuUmVjdCwgV1RGTW92ZShjb2xvclNwYWNlKSwgc2Ny
ZWVuRGVwdGgsIHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50LCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVk
Q29sb3IsIHNjcmVlbkhhc0ludmVydGVkQ29sb3JzLCBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWlj
UmFuZ2UsIHNjcmVlbklzTW9ub2Nocm9tZSwgZGlzcGxheU1hc2ssIGdwdUlELCBkeW5hbWljUmFu
Z2VNb2RlLCBzY2FsZUZhY3RvciB9KTsKIAogICAgICAgICBpZiAoIXNjcmVlblByb3BlcnRpZXMu
cHJpbWFyeURpc3BsYXlJRCkKICAgICAgICAgICAgIHNjcmVlblByb3BlcnRpZXMucHJpbWFyeURp
c3BsYXlJRCA9IGRpc3BsYXlJRDsKQEAgLTM0MCwxMyArMzM4LDEzIEBAIE5TU2NyZWVuICpzY3Jl
ZW4oUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGwKICAgICByZXR1cm4gZmlyc3RTY3JlZW4oKTsKIH0K
IAotQ0dDb2xvclNwYWNlUmVmIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KiB3aWRnZXQpCitEZXN0
aW5hdGlvbkNvbG9yU3BhY2Ugc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqIHdpZGdldCkKIHsKICAg
ICBpZiAoYXV0byBkYXRhID0gc2NyZWVuUHJvcGVydGllcyh3aWRnZXQpKQotICAgICAgICByZXR1
cm4gZGF0YS0+Y29sb3JTcGFjZS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIGRhdGEtPmNvbG9yU3Bh
Y2U7CiAKICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpD
YW5Db21tdW5pY2F0ZVdpdGhXaW5kb3dTZXJ2ZXIpKTsKLSAgICByZXR1cm4gc2NyZWVuKHdpZGdl
dCkuY29sb3JTcGFjZS5DR0NvbG9yU3BhY2U7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSB7IHNjcmVlbih3aWRnZXQpLmNvbG9yU3BhY2UuQ0dDb2xvclNwYWNlIH07CiB9CiAKIGJv
b2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKFdpZGdldCogd2lkZ2V0KQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC03MjYsNyArNzI2LDcgQEAgYm9vbCBUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhW
aQogCiAgICAgaWYgKHVzZUltYWdlQnVmZmVyKSB7CiAgICAgICAgIE5TUmVjdCBpbWFnZUJ1ZmZl
ckRyYXdSZWN0ID0gTlNSZWN0KEZsb2F0UmVjdChidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgs
IGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgp
KSk7Ci0gICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0
aWJsZUJ1ZmZlcihyZWN0LnNpemUoKSArIDIgKiBGbG9hdFNpemUoYnV0dG9uRm9jdXNSZWN0T3V0
bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgpLCBkZXZpY2VTY2FsZUZhY3Rv
ciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBjb250ZXh0KTsKKyAgICAgICAgYXV0byBp
bWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHJlY3Quc2l6
ZSgpICsgMiAqIEZsb2F0U2l6ZShidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZv
Y3VzUmVjdE91dGxpbmVXaWR0aCksIGRldmljZVNjYWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSwgY29udGV4dCk7CiAgICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAg
ICAgICAgICByZXR1cm4gbmVlZHNSZXBhaW50OwogICAgICAgICB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2VHU3RyZWFtZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lci5jcHAJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJl
YW1lcjo6dQogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1
dG8gcGl4ZWxCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoeyBBbHBoYVByZW11
bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCIH0sIHsgeyB9LCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUo
KSB9KTsKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gaW1hZ2VCdWZmZXItPmdldFBpeGVsQnVmZmVy
KHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6
QkdSQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH0sIHsgeyB9LCBpbWFnZUJ1ZmZl
ci0+bG9naWNhbFNpemUoKSB9KTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1
cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3Jl
ZW5EaXNwbGF5Q2FwdHVyZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL1NjcmVlbkRpc3BsYXlDYXB0dXJlck1hYy5tbQkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1Nj
cmVlbkRpc3BsYXlDYXB0dXJlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTMzLDYgKzEzMyw3
IEBAIGJvb2wgU2NyZWVuRGlzcGxheUNhcHR1cmVyTWFjOjpjcmVhdGVEaXMKICAgICAgICAgaWYg
KCFtX2NhcHR1cmVRdWV1ZSkKICAgICAgICAgICAgIG1fY2FwdHVyZVF1ZXVlID0gYWRvcHRPU09i
amVjdChkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIlNjcmVlbkRpc3BsYXlDYXB0dXJlck1hYyBDYXB0
dXJlIFF1ZXVlIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKSk7CiAKKyAgICAgICAgLy8gRklYTUU6
IFdoeSBpcyB0aGlzIHVzaW5nIGhhcmRjb2RlZCBzUkdCPwogICAgICAgICBOU0RpY3Rpb25hcnkq
IHN0cmVhbU9wdGlvbnMgPSBAewogICAgICAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NH
RGlzcGxheVN0cmVhbU1pbmltdW1GcmFtZVRpbWUgOiBAKDEgLyBmcmFtZVJhdGUpLAogICAgICAg
ICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NHRGlzcGxheVN0cmVhbVF1ZXVlRGVwdGggOiBA
KHNjcmVlblF1ZXVlTWF4aW11bUxlbmd0aCksCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1NCw3ICs0NTQsNyBAQCBJbWFnZUJ1
ZmZlciogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmltCiAgICAgaWYgKG1faW1hZ2VCdWZmZXIp
CiAgICAgICAgIHJldHVybiBtX2ltYWdlQnVmZmVyLmdldCgpOwogCi0gICAgbV9pbWFnZUJ1ZmZl
ciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2FwdHVyZVNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5h
Y2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6
QkdSQTgpOworICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNhcHR1cmVT
aXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghbV9pbWFnZUJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3BsYXlzdGF0aW9uL1BsYXRmb3JtU2NyZWVuUGxheVN0YXRpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3BsYXlzdGF0aW9uL1BsYXRmb3JtU2NyZWVuUGxh
eVN0YXRpb24uY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9wbGF5c3RhdGlvbi9QbGF0Zm9ybVNjcmVlblBsYXlTdGF0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU2NyZWVuLmgiCiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNs
dWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogCkBAIC03MSw0
ICs3Miw5IEBAIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKFdpZGdldCoKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKK0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBzY3JlZW5Db2xvclNwYWNl
KFdpZGdldCopCit7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vUGxhdGZvcm1TY3JlZW5XaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVlbldpbi5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVlbldpbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybVNjcmVlbi5oIgogCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgi
CiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJG
cmFtZVZpZXcuaCIKQEAgLTEwNCwxMiArMTA1LDEwIEBAIEZsb2F0UmVjdCBzY3JlZW5BdmFpbGFi
bGVSZWN0KFdpZGdldCogd2kKICAgICByZXR1cm4gbW9uaXRvckluZm8ucmNXb3JrOwogfQogCi0j
aWYgVVNFKENHKQotQ0dDb2xvclNwYWNlUmVmIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KikKK0Rl
c3RpbmF0aW9uQ29sb3JTcGFjZSBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCopCiB7Ci0gICAgcmV0
dXJuIHNSR0JDb2xvclNwYWNlUmVmKCk7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpOwogfQotI2VuZGlmCiAKIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9y
KFdpZGdldCopCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93cGUvUGxhdGZvcm1T
Y3JlZW5XUEUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dwZS9Q
bGF0Zm9ybVNjcmVlbldQRS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dwZS9QbGF0Zm9ybVNjcmVlbldQRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVl
bi5oIgogCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiRmxv
YXRSZWN0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJXaWRnZXQu
aCIKQEAgLTgxLDYgKzgyLDExIEBAIEZsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0KFdpZGdl
dCogd2kKICAgICByZXR1cm4gc2NyZWVuUmVjdCh3aWRnZXQpOwogfQogCitEZXN0aW5hdGlvbkNv
bG9yU3BhY2Ugc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqKQoreworICAgIHJldHVybiBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKK30KKwogYm9vbCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVk
Q29sb3IoV2lkZ2V0KikKIHsKICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4LDYgKzE4
LDcgQEAKICAqLwogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UuaCIKICNpbmNsdWRlICJGbG9hdFBvaW50M0QuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVz
R0wuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC0zMiw4ICszMyw3IEBACiAjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgPFdlYkNvcmUv
Q29sb3JTcGFjZUNHLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KKyNpbmNsdWRl
ICJJT1N1cmZhY2UuaCIKICNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgogI2VuZGlmCiAK
QEAgLTQ0Niw3ICs0NDYsNyBAQCBPcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6TGF5ZXJEYXRh
PiBECiAgICAgV1RGOjpNYWNoU2VuZFJpZ2h0IHN1cmZhY2VTZW5kUmlnaHQ7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShzdXJmYWNlU2VuZFJpZ2h0KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLSAgICBsYXllckRhdGEuc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRl
RnJvbVNlbmRSaWdodChXVEZNb3ZlKHN1cmZhY2VTZW5kUmlnaHQpLCBXZWJDb3JlOjpzUkdCQ29s
b3JTcGFjZVJlZigpKTsKKyAgICBsYXllckRhdGEuc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFj
ZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKHN1cmZhY2VTZW5kUmlnaHQpLCBXZWJDb3Jl
OjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAjZW5kaWYKICAgICByZXR1cm4gbGF5
ZXJEYXRhOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsOSArMTExLDkgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
Q1NTRmlsdGVyOjpidWlsZFJlZgogICAgICAgICBlZmZlY3RFbGVtZW50LnNldFN0YW5kYXJkQXR0
cmlidXRlcyhlZmZlY3QuZ2V0KCkpOwogICAgICAgICBpZiAoZWZmZWN0RWxlbWVudC5yZW5kZXJl
cigpKSB7CiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQot
ICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKGVmZmVjdEVsZW1lbnQu
cmVuZGVyZXIoKS0+c3R5bGUoKS5zdmdTdHlsZSgpLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMo
KSA9PSBDb2xvckludGVycG9sYXRpb246OkxpbmVhclJHQiA/IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6TGluZWFyU1JHQiA6IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CisgICAgICAgICAg
ICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoZWZmZWN0RWxlbWVudC5yZW5kZXJlcigp
LT5zdHlsZSgpLnN2Z1N0eWxlKCkuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpID09IENvbG9y
SW50ZXJwb2xhdGlvbjo6TGluZWFyUkdCID8gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJT
UkdCKCkgOiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAjZWxzZQotICAgICAgICAg
ICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQik7CisgICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgYnVp
bGRlci0+YWRkKGVmZmVjdEVsZW1lbnQucmVzdWx0KCksIGVmZmVjdCk7CkBAIC0yOTYsNyArMjk2
LDcgQEAgYm9vbCBDU1NGaWx0ZXI6OmJ1aWxkKFJlbmRlckVsZW1lbnQmIHJlbgogICAgICAgICAg
ICAgLy8gVW5saWtlIFNWRyBGaWx0ZXJzIGFuZCBDU1NGaWx0ZXJJbWFnZXMsIGZpbHRlciBmdW5j
dGlvbnMgb24gdGhlIGZpbHRlcgogICAgICAgICAgICAgLy8gcHJvcGVydHkgYXBwbGllZCBoZXJl
IHNob3VsZCBub3QgY2xpcCB0byB0aGVpciBwcmltaXRpdmUgc3VicmVnaW9ucy4KICAgICAgICAg
ICAgIGVmZmVjdC0+c2V0Q2xpcHNUb0JvdW5kcyhjb25zdW1lciA9PSBGaWx0ZXJDb25zdW1lcjo6
RmlsdGVyRnVuY3Rpb24pOwotICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNw
YWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CisgICAgICAgICAgICBlZmZlY3QtPnNl
dE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBpZiAoZmlsdGVyT3BlcmF0aW9uLnR5cGUoKSAhPSBGaWx0
ZXJPcGVyYXRpb246OlJFRkVSRU5DRSkgewogICAgICAgICAgICAgICAgIGVmZmVjdC0+aW5wdXRF
ZmZlY3RzKCkgPSB7IFdURk1vdmUocHJldmlvdXNFZmZlY3QpIH07CkBAIC0zNDQsMTEgKzM0NCwx
MSBAQCB2b2lkIENTU0ZpbHRlcjo6YWxsb2NhdGVCYWNraW5nU3RvcmVJZk5lCiAgICAgSW50U2l6
ZSBsb2dpY2FsU2l6ZSB7IG1fc291cmNlRHJhd2luZ1JlZ2lvbi5zaXplKCkgfTsKICAgICBpZiAo
IXNvdXJjZUltYWdlKCkgfHwgc291cmNlSW1hZ2UoKS0+bG9naWNhbFNpemUoKSAhPSBsb2dpY2Fs
U2l6ZSkgewogI2lmIFVTRShESVJFQ1QyRCkKLSAgICAgICAgc2V0U291cmNlSW1hZ2UoSW1hZ2VC
dWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVuZGVyaW5nTW9kZSgpLCAmdGFyZ2V0Q29udGV4
dCwgZmlsdGVyU2NhbGUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1h
dDo6QkdSQTgpKTsKKyAgICAgICAgc2V0U291cmNlSW1hZ2UoSW1hZ2VCdWZmZXI6OmNyZWF0ZShs
b2dpY2FsU2l6ZSwgcmVuZGVyaW5nTW9kZSgpLCAmdGFyZ2V0Q29udGV4dCwgZmlsdGVyU2NhbGUo
KSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCkpOwog
I2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHRhcmdldENvbnRleHQpOwogICAgICAgICBSZW5k
ZXJpbmdNb2RlIG1vZGUgPSBtX2ZpbHRlclJlbmRlcmVyID8gUmVuZGVyaW5nTW9kZTo6QWNjZWxl
cmF0ZWQgOiByZW5kZXJpbmdNb2RlKCk7Ci0gICAgICAgIHNldFNvdXJjZUltYWdlKEltYWdlQnVm
ZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIG1vZGUsIGZpbHRlclNjYWxlKCksIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CisgICAgICAgIHNldFNvdXJj
ZUltYWdlKEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIG1vZGUsIGZpbHRlclNjYWxl
KCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpKTsK
ICNlbmRpZgogICAgIH0KICAgICBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQgPSB0cnVlOwpAQCAt
MzgyLDEyICszODIsMTIgQEAgdm9pZCBDU1NGaWx0ZXI6OmFwcGx5KCkKICAgICBpZiAobV9maWx0
ZXJSZW5kZXJlcikgewogICAgICAgICBtX2ZpbHRlclJlbmRlcmVyLT5hcHBseUVmZmVjdHMoZWZm
ZWN0KTsKICAgICAgICAgaWYgKG1fZmlsdGVyUmVuZGVyZXItPmhhc1Jlc3VsdCgpKSB7Ci0gICAg
ICAgICAgICBlZmZlY3QudHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IpOworICAgICAgICAgICAgZWZmZWN0LnRyYW5zZm9ybVJlc3VsdENvbG9yU3Bh
Y2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgfQogICAgIGVmZmVjdC5hcHBseSgpOwotICAgIGVmZmVjdC50cmFuc2Zv
cm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CisgICAgZWZm
ZWN0LnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCkpOwogfQogCiBMYXlvdXRSZWN0IENTU0ZpbHRlcjo6Y29tcHV0ZVNvdXJjZUltYWdlUmVjdEZv
ckRpcnR5UmVjdChjb25zdCBMYXlvdXRSZWN0JiBmaWx0ZXJCb3hSZWN0LCBjb25zdCBMYXlvdXRS
ZWN0JiBkaXJ0eVJlY3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg3Niw3ICs4NzYsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXll
CiAgICAgICAgIG1hc2tSZWN0LmludGVyc2VjdChzbmFwcGVkSW50UmVjdChwYWludEluZm8ucmVj
dCkpOwogCiAgICAgICAgIC8vIE5vdyBjcmVhdGUgdGhlIG1hc2suCi0gICAgICAgIG1hc2tJbWFn
ZSA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNpemUoKSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBjb250ZXh0KTsKKyAgICAgICAgbWFza0ltYWdl
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIobWFza1JlY3Quc2l6ZSgpLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY29udGV4dCk7CiAgICAgICAgIGlmICghbWFz
a0ltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBwYWludE1hc2tGb3JUZXh0Rmls
bEJveChtYXNrSW1hZ2UuZ2V0KCksIG1hc2tSZWN0LCBib3gsIHNjcm9sbGVkUGFpbnRSZWN0KTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI2Nyw3ICszMjY3LDcgQEAgc3Rh
dGljIFJlZlB0cjxQYXR0ZXJuPiBwYXR0ZXJuRm9yRGVzY3JpcAogewogICAgIGNvbnN0IEZsb2F0
U2l6ZSB0aWxlU2l6ZSB7IDMyLCAxOCB9OwogCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHRpbGVTaXplLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IsIGRlc3RDb250ZXh0KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIodGlsZVNpemUsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpLCBkZXN0Q29udGV4dCk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVJT1MubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTk4MywxMSArMTk4Mywx
MSBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjpwYWludFN5c3RlbVByZXZpZXdCCiAgICAgSU9TdXJm
YWNlUmVmIHN1cmZhY2U7CiAgICAgaWYgKHVzZVNtYWxsQmFkZ2UpIHsKICAgICAgICAgaWYgKCFt
X3NtYWxsQmFkZ2VTdXJmYWNlKQotICAgICAgICAgICAgbV9zbWFsbEJhZGdlU3VyZmFjZSA9IElP
U3VyZmFjZTo6Y3JlYXRlKHsgc21hbGxCYWRnZURpbWVuc2lvbiwgc21hbGxCYWRnZURpbWVuc2lv
biB9LCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICAgICAgICAgIG1fc21hbGxCYWRnZVN1cmZh
Y2UgPSBJT1N1cmZhY2U6OmNyZWF0ZSh7IHNtYWxsQmFkZ2VEaW1lbnNpb24sIHNtYWxsQmFkZ2VE
aW1lbnNpb24gfSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgICAgICBzdXJm
YWNlID0gbV9zbWFsbEJhZGdlU3VyZmFjZS0+c3VyZmFjZSgpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIGlmICghbV9sYXJnZUJhZGdlU3VyZmFjZSkKLSAgICAgICAgICAgIG1fbGFyZ2VCYWRnZVN1
cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZSh7IGxhcmdlQmFkZ2VEaW1lbnNpb24sIGxhcmdlQmFk
Z2VEaW1lbnNpb24gfSwgc1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgICAgICAgICBtX2xhcmdl
QmFkZ2VTdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoeyBsYXJnZUJhZGdlRGltZW5zaW9uLCBs
YXJnZUJhZGdlRGltZW5zaW9uIH0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAg
ICAgICAgc3VyZmFjZSA9IG1fbGFyZ2VCYWRnZVN1cmZhY2UtPnN1cmZhY2UoKTsKICAgICB9CiAg
ICAgW21fY2lDb250ZXh0LmdldCgpIHJlbmRlcjp0cmFuc2xhdGVkSW1hZ2UgdG9JT1N1cmZhY2U6
c3VyZmFjZSBib3VuZHM6YmFkZ2VSZWN0IGNvbG9yU3BhY2U6c1JHQkNvbG9yU3BhY2VSZWYoKV07
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMDksNyArMTMwOSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVN
YWM6OnBhaW50UHJvZ3Jlc3NCYXIoY28KICAgICBjb25zdCBhdXRvJiByZW5kZXJQcm9ncmVzcyA9
IGRvd25jYXN0PFJlbmRlclByb2dyZXNzPihyZW5kZXJPYmplY3QpOwogICAgIGZsb2F0IGRldmlj
ZVNjYWxlRmFjdG9yID0gcmVuZGVyT2JqZWN0LmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3Io
KTsKICAgICBib29sIGlzSW5kZXRlcm1pbmF0ZSA9IHJlbmRlclByb2dyZXNzLnBvc2l0aW9uKCkg
PCAwOwotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJs
ZUJ1ZmZlcihpbmZsYXRlZFJlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCLCBwYWludEluZm8uY29udGV4dCgpKTsKKyAgICBhdXRvIGltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoaW5mbGF0ZWRSZWN0
LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBwYWludEluZm8uY29udGV4dCgpKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFw
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFw
ZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvU2hhcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODEsNyArMTgxLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlUmFzdAogICAgIEludFJlY3QgbWFyZ2luUmVjdCA9
IHNuYXBwZWRJbnRSZWN0KG1hcmdpblIpOwogICAgIGF1dG8gaW50ZXJ2YWxzID0gbWFrZVVuaXF1
ZTxSYXN0ZXJTaGFwZUludGVydmFscz4obWFyZ2luUmVjdC5oZWlnaHQoKSwgLW1hcmdpblJlY3Qu
eSgpKTsKICAgICAvLyBGSVhNRSAoMTQ5NDIwKTogVGhpcyBidWZmZXIgc2hvdWxkIG5vdCBiZSB1
bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZC4KLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JB
OCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VSZWN0
LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAKICAgICBhdXRvIGNyZWF0ZVNo
YXBlID0gWyZdKCkgewogICAgICAgICBhdXRvIHJhc3RlclNoYXBlID0gbWFrZVVuaXF1ZTxSYXN0
ZXJTaGFwZT4oV1RGTW92ZShpbnRlcnZhbHMpLCBtYXJnaW5SZWN0LnNpemUoKSk7CkBAIC0xOTcs
NyArMTk3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlUmFzdAogICAg
IGlmIChpbWFnZSkKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIElu
dFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VSZWN0LnNpemUoKSkpOwogCi0gICAgUGl4ZWxCdWZmZXJG
b3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQ
aXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgIFBp
eGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVs
dGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSB9OwogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIo
Zm9ybWF0LCB7IEludFBvaW50KCksIGltYWdlUmVjdC5zaXplKCkgfSk7CiAgICAgCiAgICAgLy8g
V2UgY291bGQgZ2V0IHRvIGEgdmFsdWUgd2hlcmUgUGl4ZWxCdWZmZXIgY291bGQgYmUgbnVsbG9w
dC4gQSBjYXNlIHdoZXJlIEltYWdlUmVjdC5zaXplKCkgaXMgaHVnZSwgUGl4ZWxCdWZmZXI6OnRy
eUNyZWF0ZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUNsaXBwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDYsNyArMTQ2LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNs
aXBwZXI6OmFwcGx5Q2xpcAogICAgIEFmZmluZVRyYW5zZm9ybSBhYnNvbHV0ZVRyYW5zZm9ybSA9
IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RD
b29yZGluYXRlU3lzdGVtKHJlbmRlcmVyKTsKICAgICBpZiAoIWNsaXBwZXJEYXRhLmlzVmFsaWRG
b3JHZW9tZXRyeShvYmplY3RCb3VuZGluZ0JveCwgYWJzb2x1dGVUcmFuc2Zvcm0pKSB7CiAgICAg
ICAgIC8vIEZJWE1FICgxNDk0NjkpOiBUaGlzIGltYWdlIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVu
Y29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkLiBNYWtpbmcgaXQgbWF0Y2ggdGhlIGNvbnRleHQg
YnJlYWtzIG5lc3RlZCBjbGlwcGluZywgdGhvdWdoLgotICAgICAgICBhdXRvIG1hc2tJbWFnZSA9
IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKG9iamVjdEJvdW5kaW5nQm94
LCBhYnNvbHV0ZVRyYW5zZm9ybSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBSZW5kZXJp
bmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAmY29udGV4dCk7CisgICAgICAgIGF1dG8gbWFza0ltYWdl
ID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIob2JqZWN0Qm91bmRpbmdC
b3gsIGFic29sdXRlVHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgJmNvbnRleHQpOwogICAgICAgICBpZiAoIW1hc2tJ
bWFnZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsOSArMTA0LDkgQEAg
c3RkOjp1bmlxdWVfcHRyPFNWR0ZpbHRlckJ1aWxkZXI+IFJlbmRlcgogICAgICAgICBlZmZlY3Qt
PnNldEVmZmVjdEJvdW5kYXJpZXMoU1ZHTGVuZ3RoQ29udGV4dDo6cmVzb2x2ZVJlY3RhbmdsZTxT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+KCZlbGVtZW50LCBmaWx0ZXJFbGVt
ZW50KCkucHJpbWl0aXZlVW5pdHMoKSwgdGFyZ2V0Qm91bmRpbmdCb3gpKTsKICAgICAgICAgaWYg
KGVsZW1lbnQucmVuZGVyZXIoKSkgewogI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFD
RV9MSU5FQVJfU1JHQikKLSAgICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFj
ZShlbGVtZW50LnJlbmRlcmVyKCktPnN0eWxlKCkuc3ZnU3R5bGUoKS5jb2xvckludGVycG9sYXRp
b25GaWx0ZXJzKCkgPT0gQ29sb3JJbnRlcnBvbGF0aW9uOjpMaW5lYXJSR0IgPyBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OkxpbmVhclNSR0IgOiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOwor
ICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKGVsZW1lbnQucmVuZGVy
ZXIoKS0+c3R5bGUoKS5zdmdTdHlsZSgpLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSA9PSBD
b2xvckludGVycG9sYXRpb246OkxpbmVhclJHQiA/IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGlu
ZWFyU1JHQigpIDogRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogI2Vsc2UKLSAgICAg
ICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IpOworICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICNlbmRpZgogICAgICAgICB9CiAgICAgICAg
IGJ1aWxkZXItPmFkZChlbGVtZW50LnJlc3VsdCgpLCBXVEZNb3ZlKGVmZmVjdCkpOwpAQCAtMTk4
LDkgKzE5OCw5IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3UKIAog
ICAgIGF1dG8gcmVuZGVyaW5nTW9kZSA9IHJlbmRlcmVyLnNldHRpbmdzKCkuYWNjZWxlcmF0ZWRG
aWx0ZXJzRW5hYmxlZCgpID8gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQgOiBSZW5kZXJpbmdN
b2RlOjpVbmFjY2VsZXJhdGVkOwogI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9M
SU5FQVJfU1JHQikKLSAgICBhdXRvIGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OkxpbmVhclNSR0I7CisgICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNl
OjpMaW5lYXJTUkdCKCk7CiAjZWxzZQotICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQjsKKyAgICBhdXRvIGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKTsKICNlbmRpZgogICAgIGF1dG8gc291cmNlR3JhcGhpYyA9IFNWR1JlbmRl
cmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGZpbHRlckRhdGEtPmRyYXdpbmdSZWdpb24s
IGVmZmVjdGl2ZVRyYW5zZm9ybSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZSwgY29udGV4dCk7
CiAgICAgaWYgKCFzb3VyY2VHcmFwaGljKSB7CkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UgogICAgICAgICAgICAgZmlsdGVyRGF0YS5z
dGF0ZSA9IEZpbHRlckRhdGE6OkFwcGx5aW5nOwogICAgICAgICAgICAgbGFzdEVmZmVjdC0+YXBw
bHkoKTsKICAgICAgICAgICAgIGxhc3RFZmZlY3QtPmNvcnJlY3RGaWx0ZXJSZXN1bHRJZk5lZWRl
ZCgpOwotICAgICAgICAgICAgbGFzdEVmZmVjdC0+dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOworICAgICAgICAgICAgbGFzdEVmZmVjdC0+dHJh
bnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAg
ICAgICAgIH0KICAgICAgICAgZmlsdGVyRGF0YS5zdGF0ZSA9IEZpbHRlckRhdGE6OkJ1aWx0Owog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3Jh
ZGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgc3RhdGljIGlubGluZSBib29sIGNyZWF0ZU1hc2tB
bmRTd2FwQ29udAogICAgIEFmZmluZVRyYW5zZm9ybSBhYnNvbHV0ZVRyYW5zZm9ybSA9IFNWR1Jl
bmRlcmluZ0NvbnRleHQ6OmNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RDb29yZGlu
YXRlU3lzdGVtKCp0ZXh0Um9vdEJsb2NrKTsKICAgICBGbG9hdFJlY3QgcmVwYWludFJlY3QgPSB0
ZXh0Um9vdEJsb2NrLT5yZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpOwogCi0gICAgYXV0
byBtYXNrSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihyZXBh
aW50UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwg
Y29udGV4dC0+cmVuZGVyaW5nTW9kZSgpKTsKKyAgICBhdXRvIG1hc2tJbWFnZSA9IFNWR1JlbmRl
cmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBhYnNvbHV0ZVRyYW5z
Zm9ybSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNvbnRleHQtPnJlbmRlcmluZ01v
ZGUoKSk7CiAgICAgaWYgKCFtYXNrSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZU1hc2tlci5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03MSw5ICs3MSw5IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3UK
ICAgICAgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUmIHN2Z1N0eWxlID0gc3R5bGUoKS5zdmdTdHls
ZSgpOwogCiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQot
ICAgICAgICBhdXRvIGNvbG9yU3BhY2UgPSBzdmdTdHlsZS5jb2xvckludGVycG9sYXRpb24oKSA9
PSBDb2xvckludGVycG9sYXRpb246OkxpbmVhclJHQiA/IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
TGluZWFyU1JHQiA6IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjsKKyAgICAgICAgYXV0byBj
b2xvclNwYWNlID0gc3ZnU3R5bGUuY29sb3JJbnRlcnBvbGF0aW9uKCkgPT0gQ29sb3JJbnRlcnBv
bGF0aW9uOjpMaW5lYXJSR0IgPyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKSA6
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOwogI2Vsc2UKLSAgICAgICAgYXV0byBjb2xv
clNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOworICAgICAgICBhdXRvIGNvbG9y
U3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKICNlbmRpZgogCiAgICAgICAg
IC8vIEZJWE1FICgxNDk0NzApOiBUaGlzIGltYWdlIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29u
ZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkLiBNYWtpbmcgaXQgbWF0Y2ggdGhlIGNvbnRleHQgYnJl
YWtzIGFscGhhIG1hc2tpbmcsIHRob3VnaC4KQEAgLTkyLDcgKzkyLDcgQEAgYm9vbCBSZW5kZXJT
VkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UoTWFza2Vy
RGF0YSogbWFza2VyRGF0YSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbmRl
ck9iamVjdCogb2JqZWN0KQorYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6ZHJhd0NvbnRl
bnRJbnRvTWFza0ltYWdlKE1hc2tlckRhdGEqIG1hc2tlckRhdGEsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgR3Jh
cGhpY3NDb250ZXh0JiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza2VyRGF0YS0+bWFza0ltYWdlLT5j
b250ZXh0KCk7CiAKQEAgLTExOSw3ICsxMTksNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFz
a2VyOjpkcmF3Q29udGVuCiAgICAgfQogCiAjaWYgIVVTRShDRykKLSAgICBtYXNrZXJEYXRhLT5t
YXNrSW1hZ2UtPnRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
LCBjb2xvclNwYWNlKTsKKyAgICBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UtPnRyYW5zZm9ybUNvbG9y
U3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNvbG9yU3BhY2UpOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0oY29sb3JTcGFjZSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VNYXNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBwcml2
YXRlOgogCiAgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICJSZW5kZXJTVkdSZXNvdXJjZU1hc2tlciI7IH0KIAotICAgIGJvb2wgZHJhd0NvbnRlbnRJ
bnRvTWFza0ltYWdlKE1hc2tlckRhdGEqLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFJlbmRlck9i
amVjdCopOworICAgIGJvb2wgZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdlKE1hc2tlckRhdGEqLCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBSZW5kZXJPYmplY3QqKTsKICAgICB2b2lkIGNh
bGN1bGF0ZU1hc2tDb250ZW50UmVwYWludFJlY3QoKTsKIAogICAgIEZsb2F0UmVjdCBtX21hc2tD
b250ZW50Qm91bmRhcmllczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAJKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0
ZXJuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUzLDcgKzI1Myw3IEBAIGJvb2wgUmVuZGVyU1ZH
UmVzb3VyY2VQYXR0ZXJuOjpidWlsZFRpbGUKIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVuZGVyU1ZH
UmVzb3VyY2VQYXR0ZXJuOjpjcmVhdGVUaWxlSW1hZ2UoY29uc3QgUGF0dGVybkF0dHJpYnV0ZXMm
IGF0dHJpYnV0ZXMsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZUJvdW5kYXJpZXMsIGNvbnN0IEZsb2F0
UmVjdCYgYWJzb2x1dGVUaWxlQm91bmRhcmllcywgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0aWxl
SW1hZ2VUcmFuc2Zvcm0sIEZsb2F0UmVjdCYgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMs
IFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSkgY29uc3QKIHsKICAgICBjbGFtcGVkQWJzb2x1
dGVUaWxlQm91bmRhcmllcyA9IEltYWdlQnVmZmVyOjpjbGFtcGVkUmVjdChhYnNvbHV0ZVRpbGVC
b3VuZGFyaWVzKTsKLSAgICBhdXRvIHRpbGVJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNy
ZWF0ZUltYWdlQnVmZmVyKGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIGNsYW1wZWRBYnNvbHV0ZVRp
bGVCb3VuZGFyaWVzLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIHJlbmRlcmluZ01vZGUp
OworICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VC
dWZmZXIoYWJzb2x1dGVUaWxlQm91bmRhcmllcywgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJp
ZXMsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCByZW5kZXJpbmdNb2RlKTsKICAgICBp
ZiAoIXRpbGVJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5k
ZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM2LDcgKzIzNiw3IEBAIEFmZmlu
ZVRyYW5zZm9ybSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjYWwKICAgICByZXR1cm4gYWJzb2x1dGVU
cmFuc2Zvcm07CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6
Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29s
b3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNy
ZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCkKIHsKICAgICBJbnRSZWN0IHBhaW50UmVjdCA9IGNhbGN1bGF0ZUlt
YWdlQnVmZmVyUmVjdCh0YXJnZXRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSk7CiAgICAgLy8gRG9u
J3QgY3JlYXRlIGVtcHR5IEltYWdlQnVmZmVycy4KQEAgLTI2NCw3ICsyNjQsNyBAQCBSZWZQdHI8
SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6CiAgICAgcmV0dXJuIGltYWdlQnVmZmVy
OwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUlt
YWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBj
bGFtcGVkUmVjdCwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01v
ZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQorUmVmUHRy
PEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25z
dCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZFJlY3QsIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5k
ZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgSW50U2l6
ZSBjbGFtcGVkU2l6ZSA9IHJvdW5kZWRJbnRTaXplKGNsYW1wZWRSZWN0LnNpemUoKSk7CiAgICAg
RmxvYXRTaXplIHVuY2xhbXBlZFNpemUgPSByb3VuZGVkSW50U2l6ZSh0YXJnZXRSZWN0LnNpemUo
KSk7CkBAIC0zNTAsNyArMzUwLDcgQEAgYm9vbCBTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJG
b3JlZ3JvdQogCiAgICAgLy8gQ3JlYXRlIGEgbmV3IGJ1ZmZlciBhbmQgcGFpbnQgdGhlIGZvcmVn
cm91bmQgaW50byBpdC4KICAgICBpZiAoIWltYWdlQnVmZmVyKSB7Ci0gICAgICAgIGltYWdlQnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXpl
KGJvdW5kaW5nQm94LnNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgbV9wYWlu
dEluZm8tPmNvbnRleHQoKSk7CisgICAgICAgIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGJvdW5kaW5nQm94LnNpemUoKSks
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBtX3BhaW50SW5mby0+Y29udGV4dCgpKTsK
ICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRl
eHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRl
cmluZ0NvbnRleHQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDggKzYw
LDggQEAgcHVibGljOgogICAgIHZvaWQgcHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChSZW5kZXJF
bGVtZW50JiwgUGFpbnRJbmZvJiwgTmVlZHNHcmFwaGljc0NvbnRleHRTYXZlID0gRG9udFNhdmVH
cmFwaGljc0NvbnRleHQpOwogICAgIGJvb2wgaXNSZW5kZXJpbmdQcmVwYXJlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVuZGVyaW5nRmxhZ3MgJiBSZW5kZXJpbmdQcmVwYXJlZDsgfQogCi0gICAgc3Rh
dGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXRSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dCogPSBudWxscHRyKTsKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xh
bXBlZFJlY3QsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0KiA9IG51bGxwdHIpOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+
IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiwgUmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpOwor
ICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiwgUmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250
ZXh0KiA9IG51bGxwdHIpOwogCiAgICAgc3RhdGljIHZvaWQgcmVuZGVyU3VidHJlZVRvQ29udGV4
dChHcmFwaGljc0NvbnRleHQmLCBSZW5kZXJFbGVtZW50JiwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
Jik7CiAgICAgc3RhdGljIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXRSZWN0LCBSZWZQdHI8SW1hZ2VCdWZmZXI+JiwgYm9vbCBzYWZlVG9DbGVhcik7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIxNyw3ICsyMTcsNyBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IFNWR0ltYWdl
OjpuYXRpdmVJbWFnCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Is
IFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWlt
YWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjQ3LDcgKzI0Nyw3IEBA
IHZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEcKICAgICBGbG9hdFJlY3Qg
aW1hZ2VCdWZmZXJTaXplID0gem9vbWVkQ29udGFpbmVyUmVjdDsKICAgICBpbWFnZUJ1ZmZlclNp
emUuc2NhbGUoaW1hZ2VCdWZmZXJTY2FsZS53aWR0aCgpLCBpbWFnZUJ1ZmZlclNjYWxlLmhlaWdo
dCgpKTsKIAotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVC
dWZmZXIoZXhwYW5kZWRJbnRTaXplKGltYWdlQnVmZmVyU2l6ZS5zaXplKCkpLCAxLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IsIGNvbnRleHQpOworICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGltYWdlQnVmZmVy
U2l6ZS5zaXplKCkpLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY29udGV4dCk7
CiAgICAgaWYgKCFidWZmZXIpIC8vIEZhaWxlZCB0byBhbGxvY2F0ZSBidWZmZXIuCiAgICAgICAg
IHJldHVybjsKICAgICBkcmF3Rm9yQ29udGFpbmVyKGJ1ZmZlci0+Y29udGV4dCgpLCBjb250YWlu
ZXJTaXplLCBjb250YWluZXJab29tLCBpbml0aWFsRnJhZ21lbnRVUkwsIGltYWdlQnVmZmVyU2l6
ZSwgem9vbWVkQ29udGFpbmVyUmVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTkzLDggKzkzLDggQEAgdm9pZCBGRUltYWdlOjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUoKQogICAgIGlmICghbV9pbWFnZSAmJiAhcmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsK
IAotICAgIC8vIEZFSW1hZ2UgcmVzdWx0cyBhcmUgYWx3YXlzIGluIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQgotICAgIHNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKTsKKyAgICAvLyBGRUltYWdlIHJlc3VsdHMgYXJlIGFsd2F5cyBpbiBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKQorICAgIHNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCkpOwogCiAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3Jl
YXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKICAgICBpZiAoIXJlc3VsdEltYWdlKQpJbmRleDogU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI3NzkyMCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsODkgQEAKKzIwMjEtMDUtMjIgIFNhbSBXZWluaWcgIDx3ZWluaWdA
YXBwbGUuY29tPgorCisgICAgICAgIENvbnZlcnQgRGVzdGluYXRpb25Db2xvclNwYWNlIGZyb20g
YW4gZW51bSB0byBjbGFzcyB3cmFwcGluZyBhIHBsYXRmb3JtIGNvbG9yIHNwYWNlIChDR0NvbG9y
U3BhY2VSZWYgZm9yIENHIHBvcnRzLCBldGMuKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgW1dJUF0KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZm
ZXI6OmNyZWF0ZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZURlY29k
ZXJBVkZQcm94eTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2FwVG9WYWxpZEZyb250
QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmFwcGx5
QmFja2luZ1N0b3JlVG9MYXllcik6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbjo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0
aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuaDoKKyAgICAg
ICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6Y29sb3JTcGFjZSk6CisgICAgICAgICogU2hhcmVkL21hYy9D
b2xvclNwYWNlRGF0YS5oOiBSZW1vdmVkLgorICAgICAgICAqIFNoYXJlZC9tYWMvQ29sb3JTcGFj
ZURhdGEubW06IFJlbW92ZWQuCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW06CisgICAgICAgICgtW1dLV2ViVmll
dyBfdGFrZVZpZXdTbmFwc2hvdF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NuYXBzaG90UmVj
dDppbnRvSW1hZ2VPZldpZHRoOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNvbG9yU3BhY2UpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tOgorICAgICAgICAoV2ViS2l0Ojpy
ZWN1cnNpdmVseU1hcElPU3VyZmFjZUJhY2tpbmdTdG9yZSk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxN
YWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y29sb3JTcGFjZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmNvbG9yU3BhY2UpOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29uZmlndXJhdGlvbik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnByZXBhcmVGb3JE
aXNwbGF5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNy
ZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VC
YWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJ
T1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdl
RGVjb2RlckFWRjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL2NvY29hL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNvY29hLm1tOgorICAg
ICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5hdGl2ZUltYWdlRm9yQ3Vy
cmVudFRpbWUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBp
eGVsQnVmZmVyRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OlBERlBsdWdpbik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVCaXRtYXBVdGls
aXRpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVTaGFyZWFibGVCaXRtYXApOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVJbWFnZUJ1ZmZlciBjb25zdCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFj
Lm1tOgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0RHJhZ0ltYWdlVG9CaXRtYXApOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oOgorICAgICAgICAoV2ViS2l0OjpE
cmF3aW5nQXJlYTo6c2V0Q29sb3JTcGFjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c25hcHNob3RPcHRpb25zVG9CaXRtYXBDb25m
aWd1cmF0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9U
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKToK
KyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldENvbG9y
U3BhY2UpOgorCiAyMDIxLTA1LTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVwbGFjZSBMb2NrSG9sZGVyIHdpdGggTG9ja2VyIGluIGxvY2FsIHZhcmlhYmxl
cwpJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsNyArMjAzLDYg
QEAgU2hhcmVkL2lvcy9XZWJUb3VjaEV2ZW50SU9TLmNwcAogCiBTaGFyZWQvbWFjL0F1eGlsaWFy
eVByb2Nlc3NNYWMubW0KIFNoYXJlZC9tYWMvQ29kZVNpZ25pbmcubW0KLVNoYXJlZC9tYWMvQ29s
b3JTcGFjZURhdGEubW0KIFNoYXJlZC9tYWMvSGFuZ0RldGVjdGlvbkRpc2FibGVyTWFjLm1tCiBT
aGFyZWQvbWFjL05hdGl2ZVdlYkdlc3R1cmVFdmVudE1hYy5tbQogU2hhcmVkL21hYy9OYXRpdmVX
ZWJLZXlib2FyZEV2ZW50TWFjLm1tCkluZGV4OiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXIg
OiBwdWJsaWMgV2ViQ29yZQogICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpwdXRQ
aXhlbEJ1ZmZlcjsKIAogcHVibGljOgotICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6RGVz
dGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVs
Rm9ybWF0LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCBX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKQorICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
IHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25D
b2xvclNwYWNlJiBjb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCwgV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikK
ICAgICB7CiAgICAgICAgIHJldHVybiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6dGVtcGxhdGUg
Y3JlYXRlPFJlbW90ZUltYWdlQnVmZmVyPihzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3Bh
Y2UsIHBpeGVsRm9ybWF0LCBudWxscHRyLCByZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5j
cHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDcgKzE1
Miw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkRmx1c2goRGkKICAgICBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkRpZEZsdXNoKGZsdXNoSWRl
bnRpZmllciwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5k
SWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5k
ZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBj
b2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwg
UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3Jt
YXQsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQVNTRVJUKHJlbmRl
cmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQgfHwgcmVuZGVyaW5nTW9kZSA9
PSBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
aAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTQgKzQ0LDE4
IEBACiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCiBuYW1lc3BhY2UgRGlzcGxheUxpc3Qgewog
Y2xhc3MgRGlzcGxheUxpc3Q7CiBjbGFzcyBJdGVtOwogfQorCitjbGFzcyBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U7CiBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBOYXRpdmVJbWFnZTsKLWVudW0gY2xh
c3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDogdWludDhfdDsKKwogZW51bSBjbGFzcyBSZW5kZXJp
bmdNb2RlIDogYm9vbDsKKwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEyMSw3ICsxMjUs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7
CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KLSAgICB2b2lkIGNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJl
bmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25D
b2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiwgV2Vi
Q29yZTo6UGl4ZWxGb3JtYXQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7
CiAgICAgdm9pZCB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KGNvbnN0IEdQVVByb2Nlc3NXYWtl
dXBNZXNzYWdlQXJndW1lbnRzJik7CiAgICAgdm9pZCB1cGRhdGVTaGFyZWRNZW1vcnlGb3JHZXRQ
aXhlbEJ1ZmZlcih1aW50MzJfdCBieXRlQ291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mJik7CiAgICAgdm9pZCBzZW1hcGhvcmVGb3JH
ZXRQaXhlbEJ1ZmZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2VtYXBob3Jl
Jik+JiYpOwpJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdl
RGVjb2RlckFWRlByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMjggKzExMywyOCBAQCB2b2lkIFJlbW90
ZUltYWdlRGVjb2RlckFWRlByb3h5OjpzZXREYXRhCiAgICAgY29tcGxldGlvbkhhbmRsZXIoZnJh
bWVDb3VudCwgaW1hZ2VEZWNvZGVyLT5zaXplKCksIGltYWdlRGVjb2Rlci0+aGFzVHJhY2soKSwg
V1RGTW92ZShmcmFtZUluZm9zKSk7CiB9CiAKLXZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHk6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KEltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRp
Zmllciwgc2l6ZV90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdURjo6
TWFjaFNlbmRSaWdodD4mJiwgQ29sb3JTcGFjZURhdGEmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpjcmVhdGVGcmFtZUltYWdlQXRJbmRl
eChJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYsIE9wdGlvbmFs
PFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgQVNTRVJUKG1faW1hZ2VEZWNvZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7CiAg
ICAgT3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJpZ2h0PiBzZW5kUmlnaHQ7Ci0gICAgQ29sb3JTcGFj
ZURhdGEgY29sb3JTcGFjZURhdGE7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25D
b2xvclNwYWNlPiBjb2xvclNwYWNlOwogICAgIGlmICghbV9pbWFnZURlY29kZXJzLmNvbnRhaW5z
KGlkZW50aWZpZXIpKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc2VuZFJp
Z2h0KSwgV1RGTW92ZShjb2xvclNwYWNlRGF0YSkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKHNlbmRSaWdodCksIFdURk1vdmUoY29sb3JTcGFjZSkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgYXV0byBmcmFtZUltYWdlID0gbV9pbWFnZURlY29kZXJzLmdldChp
ZGVudGlmaWVyKS0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgpOwogICAgIGlmICghZnJh
bWVJbWFnZSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHNlbmRSaWdodCks
IFdURk1vdmUoY29sb3JTcGFjZURhdGEpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShzZW5kUmlnaHQpLCBXVEZNb3ZlKGNvbG9yU3BhY2UpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21JbWFn
ZShmcmFtZUltYWdlLmdldCgpKSkgewogICAgICAgICBzZW5kUmlnaHQgPSBzdXJmYWNlLT5jcmVh
dGVTZW5kUmlnaHQoKTsKLSAgICAgICAgY29sb3JTcGFjZURhdGEuY2dDb2xvclNwYWNlID0gc3Vy
ZmFjZS0+Y29sb3JTcGFjZSgpOworICAgICAgICBjb2xvclNwYWNlID0gc3VyZmFjZS0+Y29sb3JT
cGFjZSgpOwogICAgIH0KIAotICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc2VuZFJpZ2h0
KSwgV1RGTW92ZShjb2xvclNwYWNlRGF0YSkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUoc2VuZFJpZ2h0KSwgV1RGTW92ZShjb2xvclNwYWNlKSk7CiB9CiAKIHZvaWQgUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGUHJveHk6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZShJbWFnZURlY29kZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94
eS5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcs
NiBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBIQVZFKEFWQVNTRVRSRUFERVIpCiAK
LSNpbmNsdWRlICJDb2xvclNwYWNlRGF0YS5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlRGVj
b2RlckFWRk9iakMuaD4KQEAgLTU3LDcgKzU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlbGV0
ZURlY29kZXIoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXRF
eHBlY3RlZENvbnRlbnRTaXplKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIGxvbmcg
bG9uZyBleHBlY3RlZENvbnRlbnRTaXplKTsKICAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc2l6ZV90IGZyYW1lQ291bnQsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUsIGJvb2wgaGFzVHJhY2ssIE9wdGlvbmFsPFZlY3Rv
cjxXZWJDb3JlOjpJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4+JiYpPiYmKTsKLSAgICB2b2lkIGNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIHNp
emVfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXVEY6Ok1hY2hTZW5k
UmlnaHQ+JiYsIENvbG9yU3BhY2VEYXRhJiYpPiYmKTsKKyAgICB2b2lkIGNyZWF0ZUZyYW1lSW1h
Z2VBdEluZGV4KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIHNpemVfdCBpbmRleCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYsIE9w
dGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4mJik+JiYpOwogICAgIHZvaWQg
Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIHNp
emVfdCBpbmRleCk7CiAKICAgICB2b2lkIGVuY29kZWREYXRhU3RhdHVzQ2hhbmdlZChXZWJDb3Jl
OjpJbWFnZURlY29kZXJJZGVudGlmaWVyKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
UHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNzYWdlcy5pbgkod29y
a2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBtZXNzYWdlcyAtPiBSZW1vdGVJbWFnZURlY29k
ZXJBVkZQcm94eSBOCiAgICAgRGVsZXRlRGVjb2RlcihXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiAgICAgU2V0RXhwZWN0ZWRDb250ZW50U2l6ZShXZWJDb3JlOjpJ
bWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGxvbmcgbG9uZyBleHBlY3RlZENvbnRl
bnRTaXplKQogICAgIFNldERhdGEoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpIC0+IChzaXplX3QgZnJhbWVDb3VudCwgV2ViQ29yZTo6SW50U2l6ZSBzaXplLCBi
b29sIGhhc1RyYWNrLCBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpGcmFt
ZUluZm8+PiBmcmFtZUluZm9zKSBTeW5jaHJvbm91cwotICAgIENyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgc2l6ZV90IGlu
ZGV4KSAtPiAoT3B0aW9uYWw8TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0LCBzdHJ1Y3QgV2ViS2l0
OjpDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlKSBTeW5jaHJvbm91cworICAgIENyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwg
c2l6ZV90IGluZGV4KSAtPiAoT3B0aW9uYWw8TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0LCBPcHRp
b25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2UpIFN5bmNocm9u
b3VzCiAgICAgQ2xlYXJGcmFtZUJ1ZmZlckNhY2hlKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgc2l6ZV90IGluZGV4KQogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDEw
ICs3NCw3IEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGU6OmNsZWFyKCkKIAogdm9pZCBT
aGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb246OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBpc09wYXF1ZTsKLSNpZiBQTEFURk9STShDT0NP
QSkKLSAgICBlbmNvZGVyIDw8IGNvbG9yU3BhY2U7Ci0jZW5kaWYKKyAgICBlbmNvZGVyIDw8IGNv
bG9yU3BhY2UgPDwgaXNPcGFxdWU7CiAjaWYgVVNFKERJUkVDVDJEKQogICAgIFNoYXJlZE1lbW9y
eTo6SGFuZGxlOjplbmNvZGVIYW5kbGUoZW5jb2Rlciwgc2hhcmVkUmVzb3VyY2VIYW5kbGUpOwog
CkBAIC04OCwyMSArODUsMjggQEAgdm9pZCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb246
OmVuYwogI2VuZGlmCiB9CiAKLWJvb2wgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9u
KQorYm9vbCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb246OmRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIsIENvbmZpZ3VyYXRpb24mIHJlc3VsdCkKIHsKLSAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGNvbmZpZ3VyYXRpb24uaXNPcGFxdWUpKQorICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdl
YkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4+IGNvbG9yU3BhY2U7CisgICAgZGVjb2RlciA+
PiBjb2xvclNwYWNlOworICAgIGlmICghY29sb3JTcGFjZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29uZmlndXJh
dGlvbi5jb2xvclNwYWNlKSkKKworICAgIE9wdGlvbmFsPGJvb2w+IGlzT3BhcXVlOworICAgIGRl
Y29kZXIgPj4gaXNPcGFxdWU7CisgICAgaWYgKCFpc09wYXF1ZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotI2VuZGlmCisKKyAgICByZXN1bHQgPSBDb25maWd1cmF0aW9uIHsgV1RGTW92ZSgqY29s
b3JTcGFjZSksICppc09wYXF1ZSB9OworCiAjaWYgVVNFKERJUkVDVDJEKQogICAgIGF1dG8gcHJv
Y2Vzc1NwZWNpZmljSGFuZGxlID0gU2hhcmVkTWVtb3J5OjpIYW5kbGU6OmRlY29kZUhhbmRsZShk
ZWNvZGVyKTsKICAgICBpZiAoIXByb2Nlc3NTcGVjaWZpY0hhbmRsZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgY29uZmlndXJhdGlvbi5zaGFyZWRSZXNvdXJjZUhhbmRsZSA9IHByb2Nl
c3NTcGVjaWZpY0hhbmRsZS52YWx1ZSgpOworICAgIHJlc3VsdC5zaGFyZWRSZXNvdXJjZUhhbmRs
ZSA9IHByb2Nlc3NTcGVjaWZpY0hhbmRsZS52YWx1ZSgpOwogI2VuZGlmCisKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxNSArMjYsMTIgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiU2hhcmVkTWVtb3J5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9y
U3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtSW1hZ2UuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSAiQ29sb3JT
cGFjZURhdGEuaCIKLSNlbmRpZgotCiAjaWYgVVNFKERJUkVDVDJEKQogaW50ZXJmYWNlIElEMkQx
Qml0bWFwOwogaW50ZXJmYWNlIElEMkQxUmVuZGVyVGFyZ2V0OwpAQCAtNTUsMTAgKzUyLDggQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBTaGFyZWFibGVCaXRtYXAgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8U2hhcmVhYmxlQml0bWFwPiB7CiBwdWJsaWM6CiAgICAgc3RydWN0IENv
bmZpZ3VyYXRpb24geworICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9y
U3BhY2U+IGNvbG9yU3BhY2U7CiAgICAgICAgIGJvb2wgaXNPcGFxdWUgeyBmYWxzZSB9OwotI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgICAgICBDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlOwotI2Vu
ZGlmCiAjaWYgVVNFKERJUkVDVDJEKQogICAgICAgICBtdXRhYmxlIEhBTkRMRSBzaGFyZWRSZXNv
dXJjZUhhbmRsZSB7IG51bGxwdHIgfTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCSh3b3JraW5nIGNvcHkpCkBA
IC04Miw2ICs4Miw4IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUg
IkFyZ3VtZW50Q29kZXJzQ0YuaCIKKwogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNYWNoU2VuZFJp
Z2h0OwogfQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUs
OCArMzI1LDExIEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlAKICAg
ICBwYXJhbWV0ZXJzLmhhc1Jlc291cmNlTG9hZENsaWVudCA9IFdURk1vdmUoKmhhc1Jlc291cmNl
TG9hZENsaWVudCk7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpKQorICAgIE9wdGlvbmFsPE9wdGlvbmFsPERlc3RpbmF0
aW9uQ29sb3JTcGFjZT4+IGNvbG9yU3BhY2U7CisgICAgZGVjb2RlciA+PiBjb2xvclNwYWNlOwor
ICAgIGlmICghY29sb3JTcGFjZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBw
YXJhbWV0ZXJzLmNvbG9yU3BhY2UgPSBXVEZNb3ZlKCpjb2xvclNwYWNlKTsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXNlU3lzdGVtQXBwZWFyYW5jZSkpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBj
b3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2aXR5U3RhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nv
bG9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0Zsb2F0U2l6ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvTGF5b3V0TWlsZXN0b25lLmg+CkBAIC00OSwxMCArNTAsNiBAQAog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKLSNpZiBQTEFURk9STShNQUMpCi0jaW5jbHVkZSAiQ29sb3JTcGFjZURhdGEuaCIKLSNlbmRp
ZgotCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogI2luY2x1ZGUgPFdlYkNvcmUv
QXBwbGljYXRpb25NYW5pZmVzdC5oPgogI2VuZGlmCkBAIC0xNDYsNyArMTQzLDcgQEAgc3RydWN0
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIGJvb2wgdXNlRWxldmF0ZWRVc2VySW50
ZXJmYWNlTGV2ZWwgeyBmYWxzZSB9OwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIENvbG9yU3Bh
Y2VEYXRhIGNvbG9yU3BhY2U7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xv
clNwYWNlPiBjb2xvclNwYWNlOwogICAgIGJvb2wgdXNlU3lzdGVtQXBwZWFyYW5jZTsKICNlbmRp
ZgogI2lmIEVOQUJMRShNRVRBX1ZJRVdQT1JUKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
MTIsMTkgKzIxMiwxOSBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2FwVG9WYWxp
CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFR5cGU6OklPU3VyZmFjZToKICAgICAg
ICAgaWYgKHNob3VsZFVzZVJlbW90ZVJlbmRlcmluZykKLSAgICAgICAgICAgIG1fZnJvbnRCdWZm
ZXIuaW1hZ2VCdWZmZXIgPSBtX2xheWVyLT5jb250ZXh0KCktPmVuc3VyZVJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSgpLmNyZWF0ZUltYWdlQnVmZmVyKG1fc2l6ZSwgV2ViQ29yZTo6UmVuZGVy
aW5nTW9kZTo6QWNjZWxlcmF0ZWQsIG1fc2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSk7CisgICAgICAgICAgICBtX2Zyb250QnVmZmVyLmlt
YWdlQnVmZmVyID0gbV9sYXllci0+Y29udGV4dCgpLT5lbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkoKS5jcmVhdGVJbWFnZUJ1ZmZlcihtX3NpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01v
ZGU6OkFjY2VsZXJhdGVkLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgcGl4ZWxGb3JtYXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZnJv
bnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPEFjY2Vs
ZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwg
bV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBwaXhlbEZvcm1h
dCgpLCBudWxscHRyKTsKKyAgICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBX
ZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFi
bGVNYXBwZWRCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHBpeGVsRm9ybWF0KCksIG51bGxwdHIpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIFR5cGU6OkJpdG1hcDoKICAgICAgICAgaWYgKHNob3VsZFVzZVJl
bW90ZVJlbmRlcmluZykKLSAgICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBt
X2xheWVyLT5jb250ZXh0KCktPmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpLmNy
ZWF0ZUltYWdlQnVmZmVyKG1fc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVy
YXRlZCwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBwaXhl
bEZvcm1hdCgpKTsKKyAgICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBtX2xh
eWVyLT5jb250ZXh0KCktPmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpLmNyZWF0
ZUltYWdlQnVmZmVyKG1fc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHBpeGVs
Rm9ybWF0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdl
QnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxVbmFjY2VsZXJhdGVkSW1hZ2VC
dWZmZXJTaGFyZWFibGVCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwgbV9zY2FsZSwgV2ViQ29yZTo6
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBwaXhlbEZvcm1hdCgpLCBudWxscHRyKTsKKyAg
ICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0ZUlt
YWdlQnVmZmVyPFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQ+OjpjcmVh
dGUobV9zaXplLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0cik7CiAgICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShD
R19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKICAgICBjYXNlIFR5cGU6OkNHRGlz
cGxheUxpc3Q6Ci0gICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpD
b25jcmV0ZUltYWdlQnVmZmVyPENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ+OjpjcmVh
dGUobV9zaXplLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Is
IHBpeGVsRm9ybWF0KCksIG51bGxwdHIpOworICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVm
ZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXJCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCksIHBpeGVsRm9ybWF0KCksIG51bGxwdHIpOwogICAgICAgICBicmVh
azsKICNlbmRpZgogICAgIH0KQEAgLTM5Nyw3ICszOTcsNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjphcHBseUJhY2tpCiAgICAgICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6
OklPU3VyZmFjZSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNvbnRlbnRzVHlwZSkgewogICAgICAg
ICAgICAgY2FzZSBMYXllckNvbnRlbnRzVHlwZTo6SU9TdXJmYWNlOiB7Ci0gICAgICAgICAgICAg
ICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0
KFdURk1vdmUobWFjaFNlbmRSaWdodCksIFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCkpOwor
ICAgICAgICAgICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRl
RnJvbVNlbmRSaWdodChXVEZNb3ZlKG1hY2hTZW5kUmlnaHQpLCBXZWJDb3JlOjpEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAgICAgICAgICAgbGF5ZXIuY29udGVudHMgPSBz
dXJmYWNlID8gc3VyZmFjZS0+YXNMYXllckNvbnRlbnRzKCkgOiBuaWw7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9T
aGFyZWFibGVCaXRtYXBDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQv
Y2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDcgKzQwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgCiBzdGF0aWMgQ0dDb2xv
clNwYWNlUmVmIGNvbG9yU3BhY2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9u
JiBjb25maWd1cmF0aW9uKQogewotICAgIHJldHVybiBjb25maWd1cmF0aW9uLmNvbG9yU3BhY2Uu
Y2dDb2xvclNwYWNlLmdldCgpID86IHNSR0JDb2xvclNwYWNlUmVmKCk7CisgICAgcmV0dXJuIGNv
bmZpZ3VyYXRpb24uY29sb3JTcGFjZSA/IGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZS0+cGxhdGZv
cm1Db2xvclNwYWNlKCkgOiBXZWJDb3JlOjpzUkdCQ29sb3JTcGFjZVJlZigpOwogfQogCiBzdGF0
aWMgYm9vbCB3YW50c0V4dGVuZGVkUmFuZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1
cmF0aW9uJiBjb25maWd1cmF0aW9uKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0Nv
bG9yU3BhY2VEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0Nv
bG9yU3BhY2VEYXRhLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9Db2xvclNwYWNlRGF0YS5oCShub25leGlzdGVudCkKQEAgLTEsNDcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgQ29sb3JTcGFjZURhdGFfaAotI2RlZmluZSBDb2xvclNwYWNlRGF0
YV9oCi0KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLW5hbWVzcGFjZSBJUEMgewotY2xh
c3MgRGVjb2RlcjsKLWNsYXNzIEVuY29kZXI7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1z
dHJ1Y3QgQ29sb3JTcGFjZURhdGEgewotICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNv
bnN0OwotICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoSVBDOjpEZWNv
ZGVyJiwgQ29sb3JTcGFjZURhdGEmKTsKLQotICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+
IGNnQ29sb3JTcGFjZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8g
Q29sb3JTcGFjZURhdGFfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL0NvbG9yU3BhY2VEYXRhLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxl
CiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvbG9yU3BhY2VEYXRhLm1tCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEubW0J
KG5vbmV4aXN0ZW50KQpAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29u
ZmlnLmgiCi0jaW1wb3J0ICJDb2xvclNwYWNlRGF0YS5oIgotCi0jaW1wb3J0ICJBcmd1bWVudENv
ZGVyc0NGLmgiCi0jaW1wb3J0ICJEZWNvZGVyLmgiCi0jaW1wb3J0ICJFbmNvZGVyLmgiCi0jaW1w
b3J0IDx3dGYvRW51bVRyYWl0cy5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBDb2xv
clNwYWNlRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBl
bmNvZGVyIDw8IHN0YXRpY19jYXN0PGJvb2w+KGNnQ29sb3JTcGFjZSk7Ci0gICAgaWYgKGNnQ29s
b3JTcGFjZSkKLSAgICAgICAgZW5jb2RlciA8PCBjZ0NvbG9yU3BhY2U7Ci19Ci0KLWJvb2wgQ29s
b3JTcGFjZURhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbG9yU3BhY2VEYXRh
JiBjb2xvclNwYWNlRGF0YSkKLXsKLSAgICBib29sIGhhc0NHQ29sb3JTcGFjZTsKLSAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGhhc0NHQ29sb3JTcGFjZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGlmICghaGFzQ0dDb2xvclNwYWNlKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAg
IFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2U7Ci0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShjb2xvclNwYWNlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIGNv
bG9yU3BhY2VEYXRhLmNnQ29sb3JTcGFjZSA9IFdURk1vdmUoY29sb3JTcGFjZSk7Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5Myw3IEBAIGNs
YXNzIFNlY3VyaXR5T3JpZ2luOwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29sb3I7CiBj
bGFzcyBDdXJzb3I7CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7CiBjbGFzcyBGbG9hdFF1
YWQ7CiBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBSZWdpb247CkBAIC0xODgsMTAgKzE4OSw2IEBA
IGNsYXNzIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQ7CiBjbGFzcyBJbnN0YWxsTWlz
c2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0OwogI2VuZGlmCiAKLSNpZiBQTEFURk9S
TShDT0NPQSkKLXN0cnVjdCBDb2xvclNwYWNlRGF0YTsKLSNlbmRpZgotCiAjaWYgSEFWRShWSVNJ
QklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCiB1c2luZyBMYXllckhvc3RpbmdDb250ZXh0SUQgPSB1
aW50MzJfdDsKICNlbmRpZgpAQCAtNDI2LDcgKzQyMyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgQ0dSZWN0IGJvdW5kc09mTGF5ZXJJbkxheWVyQmFja2VkV2luZG93Q29vcmRpbmF0ZXMoQ0FM
YXllciAqKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIENvbG9yU3BhY2VEYXRhIGNvbG9yU3Bh
Y2UoKSA9IDA7CisgICAgdmlydHVhbCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29s
b3JTcGFjZSgpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzaG93UGxhdGZvcm1Db250ZXh0TWVu
dShOU01lbnUgKiwgV2ViQ29yZTo6SW50UG9pbnQpID0gMDsKIApJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsNiArMTk4
LDcgQEAgbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBBdHRhY2htZW50OwogY2xhc3MgQ29udGVudFdv
cmxkOwogY2xhc3MgQ29udGV4dE1lbnVDbGllbnQ7CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U7CiBjbGFzcyBFcnJvcjsKIGNsYXNzIEZpbmRDbGllbnQ7CiBjbGFzcyBGaW5kTWF0Y2hlc0Ns
aWVudDsKQEAgLTM3Nyw3ICszNzgsNiBAQCBjbGFzcyBXZWJXaGVlbEV2ZW50Q29hbGVzY2VyOwog
Y2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIAogc3RydWN0IEFwcEJvdW5kTmF2aWdhdGlvblRlc3Rp
bmdEYXRhOwotc3RydWN0IENvbG9yU3BhY2VEYXRhOwogc3RydWN0IERhdGFEZXRlY3Rpb25SZXN1
bHQ7CiBzdHJ1Y3QgRG9jdW1lbnRFZGl0aW5nQ29udGV4dDsKIHN0cnVjdCBEb2N1bWVudEVkaXRp
bmdDb250ZXh0UmVxdWVzdDsKQEAgLTExMzIsNyArMTEzMiw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IG1ha2VGaXJzdFJlc3BvbmRlcigpOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VG
aXJzdFJlc3BvbmRlcigpOwogCi0gICAgQ29sb3JTcGFjZURhdGEgY29sb3JTcGFjZSgpOworICAg
IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKCk7CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDE0LDcgKzEwMTQsNyBAQCAtIChSZWZQdHI8V2ViS2l0OjpWaWV3U25hcHNob3Q+
KV90YWtlVmllCiAjZWxzZQogICAgIFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0IHNuYXBzaG90
Rm9ybWF0ID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQ6OkJHUkE7CiAjZW5kaWYKLSAgICBh
dXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZShXZWJDb3JlOjpleHBhbmRl
ZEludFNpemUoc25hcHNob3RTaXplKSwgV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSwgc25h
cHNob3RGb3JtYXQpOworICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3Jl
YXRlKFdlYkNvcmU6OmV4cGFuZGVkSW50U2l6ZShzbmFwc2hvdFNpemUpLCBXZWJDb3JlOjpEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgc25hcHNob3RGb3JtYXQpOwogICAgIGlmICghc3Vy
ZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgQ0FSZW5kZXJTZXJ2ZXJSZW5kZXJM
YXllcldpdGhUcmFuc2Zvcm0oTUFDSF9QT1JUX05VTEwsIHNlbGYubGF5ZXIuY29udGV4dC5jb250
ZXh0SWQsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KHNlbGYubGF5ZXIpLCBzdXJmYWNlLT5z
dXJmYWNlKCksIDAsIDAsICZ0cmFuc2Zvcm0pOwpAQCAtMzA3OSw3ICszMDc5LDcgQEAgLSAodm9p
ZClfc25hcHNob3RSZWN0OihDR1JlY3QpcmVjdEluVmlldwogICAgIE5TU3RyaW5nICpkaXNwbGF5
TmFtZSA9IHNlbGYud2luZG93LnNjcmVlbi5kaXNwbGF5Q29uZmlndXJhdGlvbi5uYW1lOwogICAg
IGlmIChkaXNwbGF5TmFtZSAmJiAhc2VsZi53aW5kb3cuaGlkZGVuKSB7CiAgICAgICAgIFRyYWNl
U2NvcGUgc25hcHNob3RTY29wZShSZW5kZXJTZXJ2ZXJTbmFwc2hvdFN0YXJ0LCBSZW5kZXJTZXJ2
ZXJTbmFwc2hvdEVuZCk7Ci0gICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFj
ZTo6Y3JlYXRlKFdlYkNvcmU6OmV4cGFuZGVkSW50U2l6ZShXZWJDb3JlOjpGbG9hdFNpemUoaW1h
Z2VTaXplKSksIFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCkpOworICAgICAgICBhdXRvIHN1
cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZShXZWJDb3JlOjpleHBhbmRlZEludFNp
emUoV2ViQ29yZTo6RmxvYXRTaXplKGltYWdlU2l6ZSkpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAgIGlmICghc3VyZmFjZSkgewogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm47CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTk0LDYgKzk0LDcgQEAgY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247CiB9
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNs
YXNzIEludFBvaW50Owogc3RydWN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkw7CiAKQEAgLTE2OCw3
ICsxNjksNiBAQCBjbGFzcyBXZWJGcmFtZVByb3h5OwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xh
c3MgV2ViUHJvY2Vzc1Bvb2w7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7Ci1zdHJ1Y3QgQ29sb3JT
cGFjZURhdGE7CiBzdHJ1Y3QgV2ViSGl0VGVzdFJlc3VsdERhdGE7CiAKIGVudW0gY2xhc3MgQ29u
dGludWVVbnNhZmVMb2FkIDogYm9vbDsKQEAgLTMxMyw3ICszMTMsNyBAQCBwdWJsaWM6CiAKICAg
ICBOU1ZpZXcgKmhpdFRlc3QoQ0dQb2ludCk7CiAKLSAgICBDb2xvclNwYWNlRGF0YSBjb2xvclNw
YWNlKCk7CisgICAgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UoKTsK
IAogICAgIHZvaWQgc2V0VW5kZXJsYXlDb2xvcihOU0NvbG9yICopOwogICAgIE5TQ29sb3IgKnVu
ZGVybGF5Q29sb3IoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIs
NiBAQAogI2ltcG9ydCAiQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCIKICNpbXBvcnQg
IkFQSU5hdmlnYXRpb24uaCIKICNpbXBvcnQgIkFwcEtpdFNQSS5oIgotI2ltcG9ydCAiQ29sb3JT
cGFjZURhdGEuaCIKICNpbXBvcnQgIkNvcmVUZXh0SGVscGVycy5oIgogI2ltcG9ydCAiRm9udElu
Zm8uaCIKICNpbXBvcnQgIkZ1bGxzY3JlZW5DbGllbnQuaCIKQEAgLTkwLDYgKzg5LDcgQEAKICNp
bXBvcnQgPFdlYkNvcmUvQ29sb3JNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JTZXJpYWxp
emF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbXBvc2l0aW9uSGlnaGxpZ2h0Lmg+CisjaW1w
b3J0IDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9E
aWN0aW9uYXJ5TG9va3VwLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0RyYWdJdGVtLmg+CkBAIC0yNTAwLDcgKzI1MDAsNyBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjpwb3N0RmFrZU1vdXNlTW92ZWRFdmVuCiAgICAgbV9wYWdlLT5oYW5kbGVNb3VzZUV2ZW50
KHdlYkV2ZW50KTsKIH0KIAotQ29sb3JTcGFjZURhdGEgV2ViVmlld0ltcGw6OmNvbG9yU3BhY2Uo
KQorV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIFdlYlZpZXdJbXBsOjpjb2xvclNwYWNl
KCkKIHsKICAgICBpZiAoIW1fY29sb3JTcGFjZSkgewogICAgICAgICBpZiAobV90YXJnZXRXaW5k
b3dGb3JNb3ZlUHJlcGFyYXRpb24pCkBAIC0yNTExLDEwICsyNTExLDcgQEAgQ29sb3JTcGFjZURh
dGEgV2ViVmlld0ltcGw6OmNvbG9yU3BhY2UoKQogICAgICAgICAgICAgbV9jb2xvclNwYWNlID0g
W05TU2NyZWVuIG1haW5TY3JlZW5dLmNvbG9yU3BhY2U7CiAgICAgfQogCi0gICAgQ29sb3JTcGFj
ZURhdGEgY29sb3JTcGFjZURhdGE7Ci0gICAgY29sb3JTcGFjZURhdGEuY2dDb2xvclNwYWNlID0g
W21fY29sb3JTcGFjZSBDR0NvbG9yU3BhY2VdOwotCi0gICAgcmV0dXJuIGNvbG9yU3BhY2VEYXRh
OworICAgIHJldHVybiBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgeyBbbV9jb2xvclNw
YWNlIENHQ29sb3JTcGFjZV0gfTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6c2V0VW5kZXJsYXlD
b2xvcihOU0NvbG9yICp1bmRlcmxheUNvbG9yKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhv
c3QubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2
ICszNSw3IEBACiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQ
cm94eS5oIgogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisjaW1wb3J0IDxXZWJD
b3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0Nv
bnRleHRDRy5oPgogI2ltcG9ydCA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KICNpbXBvcnQgPFdlYkNv
cmUvUGxhdGZvcm1MYXllci5oPgpAQCAtMzE3LDcgKzMxOCw3IEBAIHN0YXRpYyB2b2lkIHJlY3Vy
c2l2ZWx5TWFwSU9TdXJmYWNlQmFja2kKIHsKICAgICBpZiAobGF5ZXIuY29udGVudHMgJiYgQ0ZH
ZXRUeXBlSUQoKF9fYnJpZGdlIENGVHlwZVJlZilsYXllci5jb250ZW50cykgPT0gQ0FNYWNoUG9y
dEdldFR5cGVJRCgpKSB7CiAgICAgICAgIE1hY2hTZW5kUmlnaHQgcG9ydCA9IE1hY2hTZW5kUmln
aHQ6OmNyZWF0ZShDQU1hY2hQb3J0R2V0UG9ydCgoX19icmlkZ2UgQ0FNYWNoUG9ydFJlZilsYXll
ci5jb250ZW50cykpOwotICAgICAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6
OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShwb3J0KSwgc1JHQkNvbG9yU3BhY2VSZWYoKSk7
CisgICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNl
bmRSaWdodChXVEZNb3ZlKHBvcnQpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSk7CiAgICAgICAgIGxheWVyLmNvbnRlbnRzID0gc3VyZmFjZSA/IHN1cmZhY2UtPmFzTGF5
ZXJDb250ZW50cygpIDogbmlsOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCSh3b3JraW5nIGNv
cHkpCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1ZpZXdJbldpbmRvdygp
IG92ZXJyaWRlOwogICAgIGJvb2wgaXNWaXN1YWxseUlkbGUoKSBvdmVycmlkZTsKICAgICBMYXll
ckhvc3RpbmdNb2RlIHZpZXdMYXllckhvc3RpbmdNb2RlKCkgb3ZlcnJpZGU7Ci0gICAgQ29sb3JT
cGFjZURhdGEgY29sb3JTcGFjZSgpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6OkRlc3RpbmF0aW9u
Q29sb3JTcGFjZSBjb2xvclNwYWNlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRSZW1vdGVMYXll
clRyZWVSb290Tm9kZShSZW1vdGVMYXllclRyZWVOb2RlKikgb3ZlcnJpZGU7CiAgICAgQ0FMYXll
ciAqYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpIGNvbnN0IG92ZXJyaWRlOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFj
Lm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2lt
cG9ydCAiQVBJSGl0VGVzdFJlc3VsdC5oIgogI2ltcG9ydCAiQXBwS2l0U1BJLmgiCi0jaW1wb3J0
ICJDb2xvclNwYWNlRGF0YS5oIgogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAi
RG93bmxvYWRQcm94eS5oIgogI2ltcG9ydCAiRHJhd2luZ0FyZWFQcm94eS5oIgpAQCAtNjYsNiAr
NjUsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Db2xvck1hYy5oPgogI2ltcG9ydCA8V2ViQ29yZS9DdXJzb3IuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RpY3Rpb25hcnlM
b29rdXAuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0l0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUv
RmxvYXRSZWN0Lmg+CkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6dmll
d1dpbGxNb3ZlVG9Bbm90aAogICAgIGNsZWFyQWxsRWRpdENvbW1hbmRzKCk7CiB9CiAKLUNvbG9y
U3BhY2VEYXRhIFBhZ2VDbGllbnRJbXBsOjpjb2xvclNwYWNlKCkKK1dlYkNvcmU6OkRlc3RpbmF0
aW9uQ29sb3JTcGFjZSBQYWdlQ2xpZW50SW1wbDo6Y29sb3JTcGFjZSgpCiB7CiAgICAgcmV0dXJu
IG1faW1wbC0+Y29sb3JTcGFjZSgpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
UHJveHkubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw3ICsyOCw2IEBACiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAotI2ltcG9ydCAi
Q29sb3JTcGFjZURhdGEuaCIKICNpbXBvcnQgIkRyYXdpbmdBcmVhTWVzc2FnZXMuaCIKICNpbXBv
cnQgIkRyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oIgogI2ltcG9ydCAiTGF5ZXJUcmVlQ29udGV4
dC5oIgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5
TWFjLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2ViUGFnZVByb3h5TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYg
UExBVEZPUk0oTUFDKQogCiAjaW1wb3J0ICJBUElVSUNsaWVudC5oIgotI2ltcG9ydCAiQ29sb3JT
cGFjZURhdGEuaCIKICNpbXBvcnQgIkNvbm5lY3Rpb24uaCIKICNpbXBvcnQgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbXBvcnQgIkVkaXRvclN0YXRlLmgiCkBAIC01Miw2ICs1MSw3IEBACiAjaW1wb3J0
ICJXZWJQcmVmZXJlbmNlc0tleXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2lt
cG9ydCA8V2ViQ29yZS9BdHRyaWJ1dGVkU3RyaW5nLmg+CisjaW1wb3J0IDxXZWJDb3JlL0Rlc3Rp
bmF0aW9uQ29sb3JTcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5TG9va3VwLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdJdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNz
TGF5ZXIuaD4KQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXNzaXN0aXZl
VGVjaG5vbG9neU1hCiAgICAgcGFnZUNsaWVudCgpLmFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmly
c3RSZXNwb25kZXIoKTsKIH0KIAotQ29sb3JTcGFjZURhdGEgV2ViUGFnZVByb3h5Ojpjb2xvclNw
YWNlKCkKK1dlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBXZWJQYWdlUHJveHk6OmNvbG9y
U3BhY2UoKQogewogICAgIHJldHVybiBwYWdlQ2xpZW50KCkuY29sb3JTcGFjZSgpOwogfQpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNjM0LDggKzI2MzQsNiBAQAogCQkxQTI1NkUz
NjE4QTFBNzg4MDA2RkI5MjIgLyogV0tOYXZpZ2F0aW9uQWN0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdLTmF2aWdhdGlvbkFjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQTI1NkUzOTE4QTFBN0RGMDA2RkI5MjIgLyogV0tOYXZpZ2F0aW9uQWN0
aW9uSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tOYXZpZ2F0
aW9uQWN0aW9uSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyOEI4
Q0IxQzgwRUQ1OTAwNkZENzQzIC8qIFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkxQTJBNEFGRDE1ODY5MzkyMDA5MEM5RTkgLyogQ29sb3JT
cGFjZURhdGEubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb2xv
clNwYWNlRGF0YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUEyQTRBRkUxNTg2
OTM5MjAwOTBDOUU5IC8qIENvbG9yU3BhY2VEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENvbG9yU3BhY2VEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFBMkJCNkNDMTQxMTdBNUYwMDBGMzVENCAvKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyQkI2Q0UxNDExN0I0
RDAwMEYzNUQ0IC8qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQTJCQjZDRjE0MTE3QjREMDAwRjM1RDQgLyogUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291
cmNlcy9XZWJLaXQyL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaDsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTEwNDMwLDggKzEwNDI4LDYgQEAKIAkJCQk5
RjU0Rjg4RTE2NDg4RTg3MDA3REY4MUEgLyogQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbSAqLywKIAkJ
CQlDRTExQUQ1MTFDQkM0ODJGMDA2ODFFRTUgLyogQ29kZVNpZ25pbmcuaCAqLywKIAkJCQlDRTEx
QUQ0RjFDQkM0N0Y4MDA2ODFFRTUgLyogQ29kZVNpZ25pbmcubW0gKi8sCi0JCQkJMUEyQTRBRkUx
NTg2OTM5MjAwOTBDOUU5IC8qIENvbG9yU3BhY2VEYXRhLmggKi8sCi0JCQkJMUEyQTRBRkQxNTg2
OTM5MjAwOTBDOUU5IC8qIENvbG9yU3BhY2VEYXRhLm1tICovLAogCQkJCTFBQzc1QTFDMUIzMzY5
NUUwMDU2NzQ1QiAvKiBIYW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMubW0gKi8sCiAJCQkJMkQ1MDM2
NUQxQkNDNzkzRjAwRTIwQkIzIC8qIE5hdGl2ZVdlYkdlc3R1cmVFdmVudE1hYy5tbSAqLywKIAkJ
CQlDMDJCRkYxRDEyNTE1MDJFMDA5Q0NCRUEgLyogTmF0aXZlV2ViS2V5Ym9hcmRFdmVudE1hYy5t
bSAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsMTEgKzQ1LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKElt
YWdlQnVmZmVyUwogCiBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb25maWd1cmF0aW9uKGNvbnN0IFBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMpCiB7Ci0gICAgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGNvbmZpZ3Vy
YXRpb247Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgY29uZmlndXJhdGlvbi5jb2xvclNwYWNl
ID0geyBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSB9OwotI2VuZGlm
Ci0gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CisgICAgcmV0dXJuIHsgcGFyYW1ldGVycy5jb2xv
clNwYWNlIH07CiB9CiAKIEludFNpemUgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
OjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyArOTQs
NyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnByZXBhCiAgICAgICAgIG1h
cmtDb250ZXh0TG9zdCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8gZGlzcGxh
eUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGRpc3BsYXlC
dWZmZXJTZW5kUmlnaHQpLCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICBhdXRvIGRpc3BsYXlC
dWZmZXIgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShkaXNwbGF5QnVm
ZmVyU2VuZFJpZ2h0KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwog
ICAgIGlmIChkaXNwbGF5QnVmZmVyKSB7CiAgICAgICAgIGF1dG8mIHNjID0gcGxhdGZvcm1Td2Fw
Q2hhaW4oKTsKICAgICAgICAgc2MucmVjeWNsZUJ1ZmZlcigpOwpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgOiBwdWJsaWMg
V2UKICAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6cmVzb2x1dGlvblNjYWxl
OwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PiBj
cmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJDb3JlOjpQ
aXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgc3RhdGljIFJlZlB0cjxSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29s
b3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQogICAgIHsKICAgICAg
ICAgYXV0byBwYXJhbWV0ZXJzID0gV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0
ZXJzIHsgc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCB9Owog
ICAgICAgICBpZiAoQmFja2VuZFR5cGU6OmNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShwYXJhbWV0
ZXJzKS5pc0VtcHR5KCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3Jl
YXRlCiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q3JlYXRlSW1h
Z2VCdWZmZXIoaW1hZ2VCdWZmZXIubG9naWNhbFNpemUoKSwgaW1hZ2VCdWZmZXIucmVuZGVyaW5n
TW9kZSgpLCBpbWFnZUJ1ZmZlci5yZXNvbHV0aW9uU2NhbGUoKSwgaW1hZ2VCdWZmZXIuY29sb3JT
cGFjZSgpLCBpbWFnZUJ1ZmZlci5waXhlbEZvcm1hdCgpLCBpbWFnZUJ1ZmZlci5yZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIoKSksIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCksIElQQzo6
U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsK
IH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNy
ZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5k
ZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBj
b2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4g
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9h
dFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0IHBpeGVsRm9ybWF0KQogewogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTUgKzQzLDE5IEBA
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCiBuYW1l
c3BhY2UgRGlzcGxheUxpc3QgewogY2xhc3MgRGlzcGxheUxpc3Q7CiBjbGFzcyBJdGVtOwogfQor
CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7CiBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBQ
aXhlbEJ1ZmZlcjsKKwogZW51bSBjbGFzcyBBbHBoYVByZW11bHRpcGxpY2F0aW9uIDogdWludDhf
dDsKLWVudW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDogdWludDhfdDsKIGVudW0gY2xh
c3MgUmVuZGVyaW5nTW9kZSA6IGJvb2w7CisKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC05
Miw3ICs5Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCiAgICAgLy8gTWVzc2FnZXMgdG8g
YmUgc2VudC4KLSAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlLCBXZWJD
b3JlOjpQaXhlbEZvcm1hdCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVh
dGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5kZXJp
bmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9u
Q29sb3JTcGFjZSYsIFdlYkNvcmU6OlBpeGVsRm9ybWF0KTsKICAgICBTdHJpbmcgZ2V0RGF0YVVS
TEZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4g
cXVhbGl0eSwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uLCBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIFZlY3Rvcjx1aW50OF90PiBnZXREYXRhRm9ySW1hZ2VC
dWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpGbHVzaElkZW50aWZpZXIgZmx1c2hEaXNwbGF5TGlzdEFuZENvbW1pdChjb25zdCBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29j
b2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2Nv
YS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJl
YWJsZU1hcHAKICAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKGJhY2tlbmRT
aXplLCBiYWNrZW5kU2l6ZSwgY2FjaGVkQ0dDb2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JTcGFj
ZSksIElPU3VyZmFjZTo6Zm9ybWF0Rm9yUGl4ZWxGb3JtYXQocGFyYW1ldGVycy5waXhlbEZvcm1h
dCkpOworICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKGJhY2tlbmRTaXplLCBi
YWNrZW5kU2l6ZSwgcGFyYW1ldGVycy5jb2xvclNwYWNlLCBJT1N1cmZhY2U6OmZvcm1hdEZvclBp
eGVsRm9ybWF0KHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQpKTsKICAgICBpZiAoIXN1cmZhY2UpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC02NSw3ICs2NSw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCi0gICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdU
Rk1vdmUoV1RGOjpnZXQ8TWFjaFNlbmRSaWdodD4oaGFuZGxlKSksIGNhY2hlZENHQ29sb3JTcGFj
ZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpKTsKKyAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6
OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShXVEY6OmdldDxNYWNoU2VuZFJpZ2h0PihoYW5k
bGUpKSwgcGFyYW1ldGVycy5jb2xvclNwYWNlKTsKICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUlt
YWdlRGVjb2RlckFWRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEzICsyOCwxMiBAQAogCiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBIQVZFKEFWQVNTRVRSRUFERVIpCiAKLSNpbmNsdWRl
ICJDb2xvclNwYWNlRGF0YS5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9BVkFzc2V0TUlNRVR5cGVDYWNoZS5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvQ29sb3JTcGFjZUNHLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lPU3VyZmFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SW1hZ2VUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgpAQCAt
MTY4LDE0ICsxNjcsMTQgQEAgUGxhdGZvcm1JbWFnZVB0ciBSZW1vdGVJbWFnZURlY29kZXJBVkY6
OgogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIE9wdGlvbmFsPE1hY2hTZW5kUmlnaHQ+
IHNlbmRSaWdodDsKLSAgICAgICAgQ29sb3JTcGFjZURhdGEgY29sb3JTcGFjZTsKKyAgICAgICAg
T3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlOwogICAgICAgICBpZiAo
IW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OkNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KG1faWRl
bnRpZmllciwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OkNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4OjpSZXBseShzZW5kUmlnaHQsIGNvbG9yU3BhY2UpLCAwKSkK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoIXNlbmRSaWdodCkKKyAgICAgICAg
aWYgKCFzZW5kUmlnaHQgfHwgIWNvbG9yU3BhY2UpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJp
Z2h0KFdURk1vdmUoKnNlbmRSaWdodCksIGNvbG9yU3BhY2UuY2dDb2xvclNwYWNlLmdldCgpKTsK
KyAgICAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2Vu
ZFJpZ2h0KFdURk1vdmUoKnNlbmRSaWdodCksIFdURk1vdmUoKmNvbG9yU3BhY2UpKTsKICAgICAg
ICAgaWYgKCFzdXJmYWNlKQogICAgICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
Y29jb2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0JKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgUmVm
UHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllclByaXZhdGVSZQogICAgIGlmICghc2VuZFJpZ2h0
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6
OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKCpzZW5kUmlnaHQpLCBzUkdC
Q29sb3JTcGFjZVJlZigpKTsKKyAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6
OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZSgqc2VuZFJpZ2h0KSwgV2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKQEAgLTkxLDcgKzkxLDcgQEAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJS
ZWY+IE1lZGlhUGxheWVyUAogICAgIGlmICghc2VuZFJpZ2h0KQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJv
bVNlbmRSaWdodChXVEZNb3ZlKCpzZW5kUmlnaHQpLCBudWxscHRyKTsKKyAgICBhdXRvIHN1cmZh
Y2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZSgqc2Vu
ZFJpZ2h0KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgIGlm
ICghc3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5tbQkod29ya2luZyBjb3B5KQpAQCAtNjQ2LDcgKzY0Niw3IEBAIGlubGluZSBQREZQbHVnaW46
OlBERlBsdWdpbihXZWJGcmFtZSYgZnIKICAgICBbbV9jb250YWluZXJMYXllciBhZGRTdWJsYXll
cjptX3Njcm9sbENvcm5lckxheWVyLmdldCgpXTsKICAgICBpZiAoW21fcGRmTGF5ZXJDb250cm9s
bGVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0RGV2aWNlQ29sb3JTcGFjZTopXSkg
ewogICAgICAgICBhdXRvIHZpZXcgPSBmcmFtZS5jb3JlRnJhbWUoKS0+dmlldygpOwotICAgICAg
ICBbbV9wZGZMYXllckNvbnRyb2xsZXIgc2V0RGV2aWNlQ29sb3JTcGFjZTpzY3JlZW5Db2xvclNw
YWNlKHZpZXcpXTsKKyAgICAgICAgW21fcGRmTGF5ZXJDb250cm9sbGVyIHNldERldmljZUNvbG9y
U3BhY2U6c2NyZWVuQ29sb3JTcGFjZSh2aWV3KS5wbGF0Zm9ybUNvbG9yU3BhY2UoKV07CiAgICAg
fQogCiAjaWYgSEFWRShJTkNSRU1FTlRBTF9QREZfQVBJUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TaGFy
ZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTIgKzU3LDcgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gY3JlYXRlU2hhcmVhYmxlQgogICAgIH0KIAogICAgIC8vIEZJWE1FOiBPbmx5IHNlbGVjdCBF
eHRlbmRlZENvbG9yIG9uIGltYWdlcyBrbm93biB0byBuZWVkIHdpZGUgZ2FtdXQuCi0gICAgU2hh
cmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGJpdG1hcENvbmZpZ3VyYXRpb247Ci0jaWYgVVNF
KENHKQotICAgIGJpdG1hcENvbmZpZ3VyYXRpb24uY29sb3JTcGFjZS5jZ0NvbG9yU3BhY2UgPSBz
Y3JlZW5Db2xvclNwYWNlKHJlbmRlckltYWdlLmZyYW1lKCkubWFpbkZyYW1lKCkudmlldygpKTsK
LSNlbmRpZgotCi0gICAgYXV0byBzaGFyZWRCaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZVNoYXJlYWJsZShJbnRTaXplKGJpdG1hcFNpemUpLCBiaXRtYXBDb25maWd1cmF0aW9uKTsKKyAg
ICBhdXRvIHNoYXJlZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKElu
dFNpemUoYml0bWFwU2l6ZSksIHsgc2NyZWVuQ29sb3JTcGFjZShyZW5kZXJJbWFnZS5mcmFtZSgp
Lm1haW5GcmFtZSgpLnZpZXcoKSkgfSk7CiAgICAgaWYgKCFzaGFyZWRCaXRtYXApCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyNyw3ICs5MjcsNyBAQCBXZWJDb3Jl
OjpEaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KiBXCiAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwg
UmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29uc3QK
K1JlZlB0cjxJbWFnZUJ1ZmZlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgUmVuZGVy
aW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0
CiB7CiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zaG91bGRVc2VSZW1vdGVSZW5k
ZXJpbmdGb3IocHVycG9zZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQs
NyArMjQ0LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JG
YWN0b3J5KiBkaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KCkgY29uc3QgZmluYWw7CiAKICNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5k
ZXJpbmdNb2RlLCBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQp
IGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1h
Z2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9k
ZSwgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25z
dCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCkg
Y29uc3QgZmluYWw7CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQgaG9z
dFdpbmRvd0Rpc3BsYXlJRCkgY29uc3QgZmluYWw7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkRyYWdDbGllbnRNYWMubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtNjgsOSArNjgsNyBAQCB1c2luZyBEcmFnSW1hZ2UgPSBDR0ltYWdlUmVmOwogCiBz
dGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY29udmVydERyYWdJbWFnZVRvQml0bWFwKERy
YWdJbWFnZSBpbWFnZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgRnJhbWUmIGZyYW1lKQogewotICAg
IFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBiaXRtYXBDb25maWd1cmF0aW9uOwotICAg
IGJpdG1hcENvbmZpZ3VyYXRpb24uY29sb3JTcGFjZS5jZ0NvbG9yU3BhY2UgPSBzY3JlZW5Db2xv
clNwYWNlKGZyYW1lLm1haW5GcmFtZSgpLnZpZXcoKSk7Ci0gICAgYXV0byBiaXRtYXAgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzaXplLCBiaXRtYXBDb25maWd1cmF0aW9uKTsK
KyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNpemUs
IHsgc2NyZWVuQ29sb3JTcGFjZShmcmFtZS5tYWluRnJhbWUoKS52aWV3KCkpIH0pOwogICAgIGlm
ICghYml0bWFwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIERlY29kZXI7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIERpc3BsYXlS
ZWZyZXNoTW9uaXRvcjsKIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVWaWV3OwpAQCAtNjAsNyAr
NjEsNiBAQCBzdHJ1Y3QgVmlld3BvcnRBdHRyaWJ1dGVzOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotc3RydWN0IENvbG9yU3BhY2VEYXRhOwogY2xhc3MgTGF5ZXJUcmVlSG9zdDsKIHN0cnVjdCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IFdlYlByZWZlcmVuY2VzU3RvcmU7CkBA
IC0xODAsNyArMTgwLDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBV
c2VkIGJ5IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLgogICAgIHZpcnR1YWwgdm9pZCBz
ZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldENvbG9y
U3BhY2UoY29uc3QgQ29sb3JTcGFjZURhdGEmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29s
b3JTcGFjZShPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+KSB7IH0KIAog
ICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29y
ZTo6RmxvYXRQb2ludCBvcmlnaW4pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21taXRUcmFuc2ll
bnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIHsgfQpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2lu
Z0FyZWEubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw3ICszMSw3IEBAIG1lc3NhZ2VzIC0+IERyYXdpbmdBcmVhIE5vdFJlZkNvdW50ZWQgewog
ICAgIC8vIFVzZWQgYnkgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuCiAgICAgVXBkYXRl
R2VvbWV0cnkoV2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6ZSwgYm9vbCBmbHVzaFN5bmNocm9ub3Vz
bHksIE1hY2hTZW5kUmlnaHQgZmVuY2VQb3J0KQogICAgIFNldERldmljZVNjYWxlRmFjdG9yKGZs
b2F0IGRldmljZVNjYWxlRmFjdG9yKQotICAgIFNldENvbG9yU3BhY2Uoc3RydWN0IFdlYktpdDo6
Q29sb3JTcGFjZURhdGEgY29sb3JTcGFjZSkKKyAgICBTZXRDb2xvclNwYWNlKHN0cnVjdCBPcHRp
b25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2UpCiAgICAgU2V0
Vmlld0V4cG9zZWRSZWN0KE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRS
ZWN0KQogCiAgICAgQWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZs
b2F0UG9pbnQgb3JpZ2luKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTk4LDcgKzI1OTgs
NyBAQCBzdGF0aWMgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIHNuCiAgICAgU2hhcmVh
YmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CiAjaWYgVVNFKENHKQogICAg
IGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zVXNlU2NyZWVuQ29sb3JTcGFjZSkKLSAgICAg
ICAgY29uZmlndXJhdGlvbi5jb2xvclNwYWNlLmNnQ29sb3JTcGFjZSA9IHNjcmVlbkNvbG9yU3Bh
Y2UocGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCkpOworICAgICAgICBjb25maWd1
cmF0aW9uLmNvbG9yU3BhY2UgPSBzY3JlZW5Db2xvclNwYWNlKHBhZ2UuY29yZVBhZ2UoKS0+bWFp
bkZyYW1lKCkudmlldygpKTsKICNlbmRpZgogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwogfQpJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5OCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzdXNwZW5kUGFpbnRpbmcoKTsKICAgICB2b2lkIHJlc3VtZVBhaW50
aW5nKCk7CiAgICAgdm9pZCBzZXRMYXllckhvc3RpbmdNb2RlKExheWVySG9zdGluZ01vZGUpIG92
ZXJyaWRlOwotICAgIHZvaWQgc2V0Q29sb3JTcGFjZShjb25zdCBDb2xvclNwYWNlRGF0YSYpIG92
ZXJyaWRlOworICAgIHZvaWQgc2V0Q29sb3JTcGFjZShPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5h
dGlvbkNvbG9yU3BhY2U+KSBvdmVycmlkZTsKICAgICB2b2lkIGFkZEZlbmNlKGNvbnN0IFdURjo6
TWFjaFNlbmRSaWdodCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBhZGRUcmFuc2FjdGlvbkNhbGxi
YWNrSUQoQ2FsbGJhY2tJRCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIFBMQVRGT1JNKE1BQykKIAotI2lt
cG9ydCAiQ29sb3JTcGFjZURhdGEuaCIKICNpbXBvcnQgIkRpc3BsYXlSZWZyZXNoTW9uaXRvck1h
Yy5oIgogI2ltcG9ydCAiRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJMYXll
ckhvc3RpbmdDb250ZXh0LmgiCkBAIC00NSw2ICs0NCw3IEBACiAjaW1wb3J0IDxwYWwvc3BpL2Nv
Y29hL1F1YXJ0ekNvcmVTUEkuaD4KICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9EZWJ1Z1BhZ2VPdmVybGF5cy5oPgorI2ltcG9ydCA8V2ViQ29yZS9E
ZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4
dC5oPgpAQCAtOTEsNiArOTEsNyBAQCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6VGls
ZWRDb3JlCiAgICAgfSk7CiAKICAgICB1cGRhdGVMYXllckhvc3RpbmdDb250ZXh0KCk7CisgICAg
CiAgICAgc2V0Q29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpOwogCiAgICAgaWYgKGF1
dG8gdmlld0V4cG9zZWRSZWN0ID0gcGFyYW1ldGVycy52aWV3RXhwb3NlZFJlY3QpCkBAIC02NTAs
OSArNjUxLDkgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0TAogICAg
IHNlbmQoTWVzc2FnZXM6OkRyYXdpbmdBcmVhUHJveHk6OlVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdNb2RlKDAsIGxheWVyVHJlZUNvbnRleHQpKTsKIH0KIAotdm9pZCBUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYTo6c2V0Q29sb3JTcGFjZShjb25zdCBDb2xvclNwYWNlRGF0YSYgY29s
b3JTcGFjZSkKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldENvbG9yU3Bh
Y2UoT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlKQog
ewotICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0Q29sb3JTcGFjZShjb2xvclNwYWNlLmNn
Q29sb3JTcGFjZS5nZXQoKSk7CisgICAgbV9sYXllckhvc3RpbmdDb250ZXh0LT5zZXRDb2xvclNw
YWNlKGNvbG9yU3BhY2UgPyBjb2xvclNwYWNlLT5wbGF0Zm9ybUNvbG9yU3BhY2UoKSA6IG51bGxw
dHIpOwogfQogCiBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yPiBUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Y3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRm
b3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDI3NzkyMCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA1LTIyICBTYW0gV2VpbmlnICA8
d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBDb252ZXJ0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSBmcm9tIGFuIGVudW0gdG8gY2xhc3Mgd3JhcHBpbmcgYSBwbGF0Zm9ybSBjb2xvciBzcGFjZSAo
Q0dDb2xvclNwYWNlUmVmIGZvciBDRyBwb3J0cywgZXRjLikKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjE0MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1l
bnVDbGllbnQubW06CisgICAgICAgIChXZWJDb250ZXh0TWVudUNsaWVudDo6aW1hZ2VGb3JDdXJy
ZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKToKKyAgICAgICAgVXBkYXRlIGZvciBuZXcgRGVz
dGluYXRpb25Db2xvclNwYWNlIGNsYXNzLgorCiAyMDIxLTA1LTIyICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBMb2NrSG9sZGVyIHdpdGggTG9ja2Vy
IGluIGxvY2FsIHZhcmlhYmxlcwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0JKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0JpdG1hcEltYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbnRl
eHRNZW51Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbnRleHRNZW51Q29udHJvbGxlci5oPgorI2lt
cG9ydCA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RG9jdW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RnJhbWVWaWV3Lmg+CkBAIC0yMTMsNyArMjE0LDcgQEAgUmV0YWluUHRyPE5TSW1hZ2U+IFdlYkNv
bnRleHRNZW51Q2xpZW50OgogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgLy8gVGhpcyBpcyBl
ZmZlY3RpdmVseSBhIHNuYXBzaG90LCBhbmQgd2lsbCBiZSBwYWludGVkIGluIGFuIHVuYWNjZWxl
cmF0ZWQgZmFzaGlvbiBpbiBsaW5lIHdpdGggRnJhbWVTbmFwc2hvdHRpbmcuCi0gICAgYXV0byBi
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpV
bmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0
OjpCR1JBOCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJlY3Quc2l6
ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuIG5pbDsKIApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjc3OTIwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDUtMjIgIFNhbSBXZWluaWcgIDx3ZWlu
aWdAYXBwbGUuY29tPgorCisgICAgICAgIENvbnZlcnQgRGVzdGluYXRpb25Db2xvclNwYWNlIGZy
b20gYW4gZW51bSB0byBjbGFzcyB3cmFwcGluZyBhIHBsYXRmb3JtIGNvbG9yIHNwYWNlIChDR0Nv
bG9yU3BhY2VSZWYgZm9yIENHIHBvcnRzLCBldGMuKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cv
RGlzcGxheUxpc3RUZXN0c0NHLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgor
ICAgICAgICBVcGF0ZSB0ZXN0IHRvIHVzZSBuZXcgRGVzdGluYXRpb25Db2xvclNwYWNlIHR5cGUu
CisKIDIwMjEtMDUtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzCkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NH
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cv
RGlzcGxheUxpc3RUZXN0c0NHLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIFVTRShDRykKIAorI2luY2x1ZGUgPFdlYkNv
cmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlz
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRGlzcGxheUxpc3RSZXBsYXllci5oPgpAQCAtNDYsOCArNDcsOCBAQCBURVNUKERpc3Bs
YXlMaXN0VGVzdHMsIFJlcGxheVdpdGhNaXNzaW5nCiB7CiAgICAgRmxvYXRSZWN0IGNvbnRleHRC
b3VuZHMgeyAwLCAwLCBjb250ZXh0V2lkdGgsIGNvbnRleHRIZWlnaHQgfTsKIAotICAgIGF1dG8g
Y29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JT
cGFjZVNSR0IpKTsKLSAgICBhdXRvIGNnQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0
Q3JlYXRlKG51bGxwdHIsIGNvbnRleHRXaWR0aCwgY29udGV4dEhlaWdodCwgOCwgNCAqIGNvbnRl
eHRXaWR0aCwgY29sb3JTcGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0
KSk7CisgICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7
CisgICAgYXV0byBjZ0NvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShudWxs
cHRyLCBjb250ZXh0V2lkdGgsIGNvbnRleHRIZWlnaHQsIDgsIDQgKiBjb250ZXh0V2lkdGgsIGNv
bG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVk
TGFzdCkpOwogICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0IHsgY2dDb250ZXh0LmdldCgpIH07
CiAKICAgICBhdXRvIGltYWdlQnVmZmVySWRlbnRpZmllciA9IFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcjo6Z2VuZXJhdGUoKTsKQEAgLTY5LDcgKzcwLDcgQEAgVEVTVChEaXNwbGF5TGlzdFRl
c3RzLCBSZXBsYXlXaXRoTWlzc2luZwogICAgIH0KIAogICAgIHsKLSAgICAgICAgYXV0byBpbWFn
ZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoeyAxMDAsIDEwMCB9LCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CisgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKHsgMTAwLCAxMDAgfSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgY29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgSW1hZ2VCdWZmZXJIYXNoTWFwIGlt
YWdlQnVmZmVyTWFwOwogICAgICAgICBpbWFnZUJ1ZmZlck1hcC5zZXQoaW1hZ2VCdWZmZXJJZGVu
dGlmaWVyLCBpbWFnZUJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKIAo=
</data>
<flag name="commit-queue"
          id="450609"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429420</attachid>
            <date>2021-05-22 10:39:10 -0700</date>
            <delta_ts>2021-05-22 11:05:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226143-20210522103909.patch</filename>
            <type>text/plain</type>
            <size>272169</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5NSBAQAorMjAyMS0wNS0yMiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdyYXBwaW5nIGEgcGxhdGZvcm0gY29sb3Ig
c3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0Yy4pCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxNDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIGVudW1lcmF0aW9uIGJh
c2VkIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB3aXRoIGEgc3RydWN0IHdyYXBwaW5nCisgICAgICAg
IGEgcGxhdGZvcm0gY29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0
Yy4pLiBGb3IgcG9ydHMKKyAgICAgICAgdGhhdCBkb24ndCBoYXZlIGEgcGxhdGZvcm0gbGV2ZWwg
Y29sb3Igc3BhY2UgdHlwZSwgYSBidWlsdGluIFBsYXRmb3JtQ29sb3JTcGFjZQorICAgICAgICB0
eXBlIGlzIHByb3ZpZGVkIHRoYXQgaXMganVzdCB0aGUgb2xkIGVudW0gcmVuYW1lZCB0byBQbGF0
Zm9ybUNvbG9yU3BhY2U6Ok5hbWUuCisKKyAgICAgICAgVGhlIGdvYWwgb2YgdGhpcyBjaGFuZ2Ug
aXMgdG8gdW5pZnkgdGhlIGN1cnJlbnRseSBiaWZyYWNhdGVkIGNvbmNlcHQgb2YgYW4KKyAgICAg
ICAgSW1hZ2VCdWZmZXIncyBjb2xvciBzcGFjZSwgd2hpY2ggcHJldmlvc2x5IGNvdWxkIGVpdGhl
ciBiZSBiYXNlZCBvbiB0aGUgCisgICAgICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgYW5kIHJl
ZmxlY3RlZCBpbiB0aGUgY29sb3JTcGFjZSgpIG1lbWJlciBmdW5jdGlvbiwKKyAgICAgICAgb3Ig
KGZvciBDRyBwb3J0cykgYmFzZWQgb24gYSBDR0NvbG9yU3BhY2VSZWYsIHdpdGggdGhlIGNvbG9y
U3BhY2UoKSBmdW5jdGlvbgorICAgICAgICByZXR1cm5pbmcgc1JHQiBldmVuIGlmIHRoZSBJbWFn
ZUJ1ZmZlciB3YXMgbm90LiAKKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICog
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpD
bGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXJ0d29ya0ltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogU291cmNl
cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBJbWFnZUJpdG1hcCk6CisgICAgICAgIChXZWJD
b3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEltYWdlQml0bWFwKToKKyAgICAgICAgKiBjc3Mv
Q1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXJJbWFn
ZVZhbHVlOjppbWFnZSk6CisgICAgICAgICogaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludENhbnZhczo6Y29waWVkSW1hZ2UgY29uc3QpOgor
ICAgICAgICAqIGh0bWwvQ3VzdG9tUGFpbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
dXN0b21QYWludEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6dG9NZWRp
YVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1h
Z2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGVCdWZmZXJGb3JQYWludGlu
ZyBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAgICog
aHRtbC9JbWFnZUJpdG1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJpdG1hcDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCaXRtYXA6OmNyZWF0ZVBy
b21pc2UpOgorICAgICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Y29tbWl0VG9QbGFjZWhvbGRlckNhbnZhcyk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojpjb2xvclNwYWNlIGNvbnN0KToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0OjpzZXRPdXRwdXRCaXRtYXApOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnRvRGVzdGluYXRpb25Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvUHJlZGVmaW5l
ZENvbG9yU3BhY2UpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNl
Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1
ZmZlckNhY2hlOjppbWFnZUJ1ZmZlcik6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbkltYWdlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6YnVpbGRBcnJheUZvckNhbnZhc1BhdHRlcm4p
OgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6
Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAg
ICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hv
dHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RGcmFtZVJlY3RXaXRoQ2xpcCk6
CisgICAgICAgICogcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNhbXBsZUNvbG9yKToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9Ib3N0V2luZG93Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1Db2xv
clNwYWNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db2xvclNwYWNlOjpn
ZXQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2NyZWVuUHJvcGVydGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVu
UHJvcGVydGllczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVlbkRhdGE6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5EYXRhOjpkZWNvZGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3UGF0dGVybik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29s
b3I6OnRvQ29sb3JDb21wb25lbnRzSW5Db2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJDb2xvckNvbXBvbmVudHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yU3BhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25j
cmV0ZUltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVy
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRl
ZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpk
cmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xv
clNwYWNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IpOgorICAgICAgICAoV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5l
YXJTUkdCKToKKyAgICAgICAgKFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxh
eVAzKToKKyAgICAgICAgKFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGVzdGluYXRp
b25Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAgICAo
V2ViQ29yZTo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OnBsYXRmb3JtQ29sb3JT
cGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OmRl
Y29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJCYWNrZW5kOjpnZXRQaXhlbEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OnB1dFBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyQmFja2VuZDo6dHJhbnNmb3JtQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbG9yU3BhY2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1BpeGVsQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6
ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckNvbnZlcnNp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZVZJbWFnZUNHSW1hZ2VGb3JtYXQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1hdDo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cmFuc2Zl
ckJHUkFQaXhlbEJ1ZmZlclRvSU9TdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZVZp
ZGVvU2FtcGxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGU6
OlJlbW90ZVZpZGVvU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxl
OjpzdXJmYWNlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRl
b1NhbXBsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6Z2V0U2NyYXRjaEJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRp
bGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpibHVyU2hhZG93QnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdTaGFkb3dMYXllcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBh
aW50UmVzdWx0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyb0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0Jh
Y2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQ29sb3JDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9DR0NvbXBh
dGlibGVDb21wb25lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNHQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6cGxhdGZvcm1Db252ZXJ0Q29sb3JDb21wb25lbnRzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaDoKKyAgICAgICAgKFdlYkNvcmU6
OmNhY2hlZENHQ29sb3JTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdXJmYWNlTWF0
Y2hlc1BhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlUG9vbDo6dGFrZVN1
cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjb3B5Q0dJbWFnZUZv
ckVuY29kaW5nIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6
c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJC
YWNraW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW06CisgICAgICAg
IChXZWJDb3JlOjpJT1N1cmZhY2U6OnN1cmZhY2VGcm9tUG9vbCk6CisgICAgICAgIChXZWJDb3Jl
OjpJT1N1cmZhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0
ZUZyb21TZW5kUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9t
U3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21JbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21QaXhlbEJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OklPU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJT1N1cmZhY2U6OmVuc3VyZVBsYXRmb3JtQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJ
T1N1cmZhY2U6Om1pZ3JhdGVDb2xvclNwYWNlVG9Qcm9wZXJ0aWVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6cmVuZGVy
VG9JbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFu
c2ZlclNlc3Npb25WVC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlVHJhbnNmZXJTZXNzaW9u
VlQ6OmNyZWF0ZVBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9Q
aXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVy
Q29uZm9ybWVyQ1Y6OmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyOjpjcmVhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OmRlc3Ryb3kp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5n
Q29tbWFuZHM6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczo6Y29sb3JTcGFjZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5nQ29t
bWFuZHM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVn
aW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6R2V0UGl4ZWxCdWZmZXI6OkdldFBpeGVsQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpHZXRQaXhlbEJ1ZmZlcjo6b3V0cHV0Rm9ybWF0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpHZXRQaXhlbEJ1ZmZlcjo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpHZXRQaXhlbEJ1ZmZlcjo6ZGVjb2Rl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNs
aXBUb0RyYXdpbmdDb21tYW5kcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlz
cGxhY2VtZW50TWFwOjpzZXRSZXN1bHRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRVRpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVs
QnVmZmVyVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29u
dmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVm
ZmVjdDo6Y29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0aW5hdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRQaXhlbEJ1ZmZlclRvRGVzdGluYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpyZXF1aXJlc1BpeGVsQnVmZmVy
Q29sb3JTcGFjZUNvbnZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojp0
cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpv
cGVyYXRpbmdDb2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6c2V0T3BlcmF0aW5nQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OnJlc3VsdENvbG9yU3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZm
ZWN0OjpzZXRSZXN1bHRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL1NvdXJjZUdyYXBoaWMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6
OlNvdXJjZUdyYXBoaWMpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5JT1MubW06CisgICAgICAgIChXZWJDb3JlOjpzY3Jl
ZW5Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RTY3JlZW5Qcm9wZXJ0aWVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5NYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpjb2xsZWN0U2NyZWVuUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpz
Y3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50
b0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNw
bGF5Q2FwdHVyZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5EaXNwbGF5Q2FwdHVy
ZXJNYWM6OmNyZWF0ZURpc3BsYXlTdHJlYW0pOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2U6OmltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9wbGF5
c3RhdGlvbi9QbGF0Zm9ybVNjcmVlblBsYXlTdGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNjcmVlbkNvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVl
bldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS93cGUvUGxhdGZvcm1TY3JlZW5XUEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oOgor
ICAgICAgICAoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YTo6ZGVjb2Rl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZpbHRlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
RmlsdGVyOjpidWlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmFsbG9jYXRlQmFj
a2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjphcHBseSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnBhdHRlcm5Gb3JEZXNjcmlwdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50U3lz
dGVtUHJldmlld0JhZGdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRQcm9ncmVzc0Jhcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
aGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VDbGlwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291
cmNlQ2xpcHBlcjo6YXBwbHlDbGlwcGluZ1RvQ29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1hc2tBbmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6ZHJhd0NvbnRlbnRJ
bnRvTWFza0ltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
TWFza2VyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRl
cm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpjcmVh
dGVUaWxlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5n
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVh
dGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0Ojpi
dWZmZXJGb3JlZ3JvdW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0Nv
bnRleHQuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUpOgorCiAyMDIxLTA1LTIyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiBDb21wb25lbnQgYXQgaW5kZXgg
MSBpcyAxLjAwMDAwMCBhbmQgaXMgZ3JlYXRlciB0aGFuIHRoZSBhbGxvd2VkIG1heGltdW0gMS4w
MDAwMDAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTE5Nyw2ICsxMTk3LDcg
QEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Rhc2hB
cnJheS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGVjb2RpbmdPcHRpb25zLmgKKyAgICBwbGF0
Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxh
eVJlZnJlc2hNb25pdG9yQ2xpZW50LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVm
cmVzaE1vbml0b3JGYWN0b3J5LmgKQEAgLTEyOTMsNiArMTI5NCw3IEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZl
ci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1BpeGVsRm9ybWF0LmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bUNvbG9yU3BhY2UuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE5
NTAsNiArMTk1MCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhU
ZXh0Q29udHJvbGxlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBi
b2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NE
YXRhU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2wKIAogICAgICAgICBhdXRvIGJpdG1hcElt
YWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgICAgICBiaXRtYXBJbWFnZS0+c2V0RGF0
YShXVEZNb3ZlKGJ1ZmZlclRvU2FuaXRpemUpLCB0cnVlKTsKLSAgICAgICAgYXV0byBpbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
LCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
ICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikgewogICAgICAgICAgICAgbV9kYXRhID0geyBudWxs
U3RyaW5nKCkgfTsKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1l
dGFkYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCB2b2lkIEFydHdvcmtJ
bWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyVG9TYW5pdGl6ZSA9IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBhdXRv
IGJpdG1hcEltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIGJpdG1hcEltYWdlLT5z
ZXREYXRhKFdURk1vdmUoYnVmZmVyVG9TYW5pdGl6ZSksIHRydWUpOwotICAgIGF1dG8gaW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJpdG1hcEltYWdlLT5zaXplKCksIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAg
ICBpZiAoIWltYWdlQnVmZmVyKSB7CiAgICAgICAgIG1fY2FsbGJhY2sobnVsbHB0cik7CiAgICAg
ICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjc3OTIwKQorKysg
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEz
IEBACisyMDIxLTA1LTIyICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAg
ICBDb252ZXJ0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBmcm9tIGFuIGVudW0gdG8gY2xhc3Mgd3Jh
cHBpbmcgYSBwbGF0Zm9ybSBjb2xvciBzcGFjZSAoQ0dDb2xvclNwYWNlUmVmIGZvciBDRyBwb3J0
cywgZXRjLikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyNjE0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDoKKyAgICAgICAgQWRkIGFkZGlvbmFsIFNQ
SSBmb3Igd29ya2luZyB3aXRoIENHQ29sb3JTcGFjZVJlZnMuCisKIDIwMjEtMDUtMjEgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBZG9w
dCBRTEl0ZW0gaW4gV0tJbWFnZUV4dHJhY3Rpb25QcmV2aWV3Q29udHJvbGxlcgpJbmRleDogU291
cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGlj
c1NQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDIsNiArMjQyLDcgQEAgdHlwZWRlZiB2b2lkICgq
Q0dTTm90aWZ5UHJvY1B0cikoQ0dTTm90aQogCiBXVEZfRVhURVJOX0NfQkVHSU4KIAorYm9vbCBD
R0NvbG9yVHJhbnNmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyhDR0NvbG9yVHJhbnNmb3JtUmVm
LCBDR0NvbG9yU3BhY2VSZWYsIENHQ29sb3JSZW5kZXJpbmdJbnRlbnQsIGNvbnN0IENHRmxvYXQg
c3JjQ29tcG9uZW50c1tdLCBDR0Zsb2F0IGRzdENvbXBvbmVudHNbXSk7CiBDR0NvbG9yUmVmIENH
Q29sb3JUcmFuc2Zvcm1Db252ZXJ0Q29sb3IoQ0dDb2xvclRyYW5zZm9ybVJlZiwgQ0dDb2xvclJl
ZiwgQ0dDb2xvclJlbmRlcmluZ0ludGVudCk7CiBDR0NvbG9yVHJhbnNmb3JtUmVmIENHQ29sb3JU
cmFuc2Zvcm1DcmVhdGUoQ0dDb2xvclNwYWNlUmVmLCBDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRl
cyk7CiAKQEAgLTI5MSw2ICsyOTIsOCBAQCBDR1N0eWxlUmVmIENHR1N0YXRlR2V0U3R5bGUoQ0dH
U3RhdGVSZWYpCiBDR1N0eWxlVHlwZSBDR1N0eWxlR2V0VHlwZShDR1N0eWxlUmVmKTsKIGNvbnN0
IHZvaWQgKkNHU3R5bGVHZXREYXRhKENHU3R5bGVSZWYpOwogQ0dDb2xvclJlZiBDR1N0eWxlR2V0
Q29sb3IoQ0dTdHlsZVJlZik7Citib29sIENHQ29sb3JTcGFjZUVxdWFsVG9Db2xvclNwYWNlKENH
Q29sb3JTcGFjZVJlZiwgQ0dDb2xvclNwYWNlUmVmKTsKK0NGU3RyaW5nUmVmIENHQ29sb3JTcGFj
ZUNvcHlJQ0NQcm9maWxlRGVzY3JpcHRpb24oQ0dDb2xvclNwYWNlUmVmKTsKIAogI2lmIEhBVkUo
Q0dQQVRIX0dFVF9OVU1CRVJfT0ZfRUxFTUVOVFMpCiBzaXplX3QgQ0dQYXRoR2V0TnVtYmVyT2ZF
bGVtZW50cyhDR1BhdGhSZWYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0zOTk2LDYgKzM5OTYsNyBAQAogCQlCQzIzRjBEQjBEQUZGNEE0MDA5RkRDOTEgLyogR2VuZXJh
dGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMjNGMERBMERBRkY0QTQwMDlGREM5MSAvKiBHZW5lcmF0ZWRJbWFnZS5oICovOyB9OwogCQlC
QzI3NEIyRjE0MEVCRUIyMDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI3NEIyRTE0MEVC
RUIyMDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggKi87IH07CiAJCUJDMkNC
RjRFMTQwRjFBQkQwMDM4NzlCRSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJDQkY0QjE0MEYxQTY1MDAzODc5
QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oICovOyB9OworCQlCQzJDQ0ExMDI2NTVEREIyMDBC
OEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJDQ0EwRTI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGlu
YXRpb25Db2xvclNwYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQkMzMDVDN0EwQzA3NkJCMzAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzA1
Qzc4MEMwNzZCQjMwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50LmggKi87IH07CiAJCUJD
MzQ4QkQ0MERCN0Y4MDQwMDRBQkFCOSAvKiBKU1hNTEh0dHBSZXF1ZXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzM0OEJEMjBEQjdGODA0MDA0QUJB
QjkgLyogSlNYTUxIdHRwUmVxdWVzdC5oICovOyB9OwogCQlCQzM0OEJENDBEQjdGODA0MDA0QUJB
QkEgLyogV2ViQ29yZUpTQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDMzQ4QkQyMERCN0Y4MDQwMDRBQkFCQSAvKiBXZWJDb3JlSlNCdWls
dGlucy5oICovOyB9OwpAQCAtNDAwNyw2ICs0MDA4LDcgQEAKIAkJQkMzQkU5OTkwRTlDMUU1RDAw
ODM1NTg4IC8qIFJlbmRlclNjcm9sbGJhclRoZW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzNCRTk5ODBFOUMxRTVEMDA4MzU1ODggLyogUmVuZGVy
U2Nyb2xsYmFyVGhlbWUuaCAqLzsgfTsKIAkJQkMzQzM5QjcwQzBEM0Q4RDAwNUY0RDdBIC8qIEpT
TWVkaWFMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzNDMzlCNTBDMEQzRDhEMDA1RjREN0EgLyogSlNNZWRpYUxpc3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzNEODVCQzFDMEUyRTdBMDBE
M0I2MTAgLyogSlNIVE1MUGljdHVyZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODA4QjEzMUMwRTJCMzUwMDY2RkQ2QiAvKiBKU0hUTUxQ
aWN0dXJlRWxlbWVudC5oICovOyB9OworCQlCQzNFNjI0MzI2NTk3OTE4MDA1NDhBQ0QgLyogUGxh
dGZvcm1Db2xvclNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzNFNjI0MjI2NTk3OTE3MDA1NDhBQ0QgLyogUGxhdGZvcm1Db2xvclNwYWNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM0MzY4
RTgwQzIyNkUzMjAwNUVGQjVGIC8qIFJlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDNDM2OEU3MEMyMjZFMzIwMDVFRkI1RiAvKiBSZWN0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM0NkMxRkQw
QzBEREM4RjAwMjBDRkMzIC8qIEpTQ1NTRm9udEZhY2VSdWxlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzQ2QzFGMzBDMEREQzhGMDAyMENGQzMgLyog
SlNDU1NGb250RmFjZVJ1bGUuaCAqLzsgfTsKIAkJQkM0NkMxRkYwQzBEREM4RjAwMjBDRkMzIC8q
IEpTQ1NTSW1wb3J0UnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkM0NkMxRjUwQzBEREM4RjAwMjBDRkMzIC8qIEpTQ1NTSW1wb3J0UnVsZS5oICov
OyB9OwpAQCAtMTQxMzQsNiArMTQxMzYsOCBAQAogCQlCQzI5OTM1QzE3QTFERDU4MDBCQ0U4ODAg
LyogQ29sb3JJbnB1dFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ29sb3JJbnB1dFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJD
QkY0QjE0MEYxQTY1MDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMQ29udGV4dEV2ZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDMkNCRjdBMTQwRjFENTgwMDM4NzlCRSAvKiBKU1dlYkdMQ29u
dGV4dEV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2Vi
R0xDb250ZXh0RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJDQ0Ew
RTI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCQzJDQ0EwRjI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDMkVENTU0MEM2QjlCRDMwMDkyMEJGRiAvKiBKU0VsZW1lbnRD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFbGVtZW50
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyRUQ2QkIwQzZCRDJG
MDAwOTIwQkZGIC8qIEpTQXR0ckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0F0dHJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQzMwNUM3NzBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MT2JqZWN0RWxlbWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDE1Nyw2ICsxNDE2MSw3IEBACiAJ
CUJDM0JFOUFBMEU5QzI0MjAwMDgzNTU4OCAvKiBSZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNjcm9sbGJhclBhcnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzNDMzlCNDBDMEQzRDhEMDA1RjREN0Eg
LyogSlNNZWRpYUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTTWVkaWFMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzQzM5QjUw
QzBEM0Q4RDAwNUY0RDdBIC8qIEpTTWVkaWFMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU01lZGlhTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
QzNFNjI0MjI2NTk3OTE3MDA1NDhBQ0QgLyogUGxhdGZvcm1Db2xvclNwYWNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtQ29sb3JTcGFjZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQzQzNjhFNzBDMjI2RTMyMDA1RUZCNUYgLyogUmVjdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVjdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQzQ2QzFFRDBDMEREQkRGMDAyMENGQzMgLyogSlNDU1NSdWxlQ3VzdG9t
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NTU1J1bGVDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzQ2QzFGMjBDMEREQzhGMDAy
MENGQzMgLyogSlNDU1NGb250RmFjZVJ1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTQ1NTRm9udEZhY2VSdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTI2OTI1LDYgKzI2OTMwLDggQEAKIAkJCQkyRDJGQzA1NTE0NjBDRDZGMDAyNjM2
MzMgLyogQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaCAqLywKIAkJCQlBOENCNDEwMjBFODVCOEE1
MDAzMkM0RjAgLyogRGFzaEFycmF5LmggKi8sCiAJCQkJNTU1MTMwMDAxRTdDQ0NDQTAwQTY5RTM4
IC8qIERlY29kaW5nT3B0aW9ucy5oICovLAorCQkJCUJDMkNDQTBGMjY1NUREQjIwMEI4QzAzNSAv
KiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuY3BwICovLAorCQkJCUJDMkNDQTBFMjY1NUREQjIwMEI4
QzAzNSAvKiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCAqLywKIAkJCQk0OUZDN0E0RjE0NDRBRjVG
MDBBNUQ4NjQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCAqLywKIAkJCQk0OUFGMkQ2ODE0
NDM1RDA1MDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmggKi8sCiAJCQkJMkQyOUVD
QzExOTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5jcHAgKi8s
CkBAIC0yNzEwMSw2ICsyNzEwOCw3IEBACiAJCQkJQkM2MzVFOEIyNjRDMkNBRTAwMEVGMzNBIC8q
IFBpeGVsQnVmZmVyRm9ybWF0LmggKi8sCiAJCQkJQkM2MzVFOTAyNjRDNDY5RjAwMEVGMzNBIC8q
IFBpeGVsRm9ybWF0LmNwcCAqLywKIAkJCQlCQ0E1NTkxMjI2M0RCRDc5MDA3RjE5QjMgLyogUGl4
ZWxGb3JtYXQuaCAqLywKKwkJCQlCQzNFNjI0MjI2NTk3OTE3MDA1NDhBQ0QgLyogUGxhdGZvcm1D
b2xvclNwYWNlLmggKi8sCiAJCQkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3Jt
SW1hZ2UuaCAqLywKIAkJCQk3MkJBQzNBNjIzRTE3MzI4MDA4RDc0MUMgLyogUGxhdGZvcm1JbWFn
ZUJ1ZmZlci5oICovLAogCQkJCTU1MDY0MEFEMjQwNzU2REEwMEFBRTA0NSAvKiBQbGF0Zm9ybUlt
YWdlQnVmZmVyQmFja2VuZC5oICovLApAQCAtMzIyMzAsNiArMzIyMzgsNyBAQAogCQkJCTk0Nzk0
OTI1MUUwMzA4QUYwMDAxOEQ4NSAvKiBEZXByZWNhdGVkQ1NTT01WYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTQ3OTQ5M0QxRTA0NjNCNjAwMDE4RDg1IC8qIERlcHJlY2F0ZWRDU1NPTVZhbHVl
TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NCRDEyOUUxRjk4QjkwRTAwMTI3RDI5IC8qIERl
cHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMyQ0NBMTAyNjU1
RERCMjAwQjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDExMjIzQzUyNjAzNTY3RDAwQjBBMEI2IC8qIERldGFjaGVkUlRDRGF0YUNoYW5uZWwuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3QzlBQkY5MTM1N0EzQkYwMEY1NTAzRiAvKiBEZXRhaWxzTWFy
a2VyQ29udHJvbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFFRDc3OEQxQkUzMjk0MDAwREMxNzkx
IC8qIERldmljZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjI4MSw2ICszMjI5MCw3IEBACiAJCQkJ
MUNFOEQxMjcyNjE4NUMwRTAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZp
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ1MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNw
bGF5TGlzdEl0ZW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDM3N0Q1NzI1NTFDOUM2MDA4MEFC
RkUgLyogRGlzcGxheUxpc3RJdGVtVHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMzRTYyNDMy
NjU5NzkxODAwNTQ4QUNEIC8qIFBsYXRmb3JtQ29sb3JTcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUNFOEQxMkUyNjE4NjFDNDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRTVGQkQ3MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJl
Y29yZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1RkJEOTFDM0RENTFFMDAwN0EyQ0EgLyog
RGlzcGxheUxpc3RSZXBsYXllci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwODIsNyArMTA4Miw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBQaXhlbEJ1ZmZlckZv
cm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhl
bEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgICAgICBQ
aXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0
aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
IH07CiAgICAgICAgIGNvbnN0IEludFNpemUmIGxvZ2ljYWxTaXplID0gYnVmZmVyLT5sb2dpY2Fs
U2l6ZSgpOwogICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gYnVmZmVyLT5nZXRQaXhlbEJ1ZmZl
cihmb3JtYXQsIHsgSW50UG9pbnQ6Onplcm8oKSwgbG9naWNhbFNpemUgfSk7CiAgICAgICAgIGlm
ICghcGl4ZWxCdWZmZXIpIHsKQEAgLTMxODcsNyArMzE4Nyw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgUGl4ZWxCdWZmZXJG
b3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4
ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICAgICAg
UGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVs
dGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSB9OwogICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShm
b3JtYXQsIGltYWdlRGF0YVNpemUsIGFycmF5QnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwogICAg
ICAgICBpZiAoIXBpeGVsQnVmZmVyKSB7CiAgICAgICAgICAgICBmYWlsKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExNiw3ICsxMTYsNyBAQCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFs
dWU6OmltYWdlCiAKICAgICAvLyBUcmFuc2Zvcm0gSW1hZ2UgaW50byBJbWFnZUJ1ZmZlci4KICAg
ICAvLyBGSVhNRSAoMTQ5NDI0KTogVGhpcyBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlv
bmFsbHkgdW5hY2NlbGVyYXRlZC4KLSAgICBhdXRvIHRleHR1cmUgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIHRleHR1cmUgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAg
IGlmICghdGV4dHVyZSkKICAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCShyZXZpc2lvbiAy
Nzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTIsNyArOTIsNyBAQCBJbWFnZSogQ3VzdG9tUGFpbnRDYW52YXM6OmNv
cGllZEltYWdlKCkgCiAgICAgaWYgKCF3aWR0aCgpIHx8ICFoZWlnaHQoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBtX2NvcGllZEJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCwgbnVsbHB0cik7CisgICAgbV9jb3BpZWRC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCwgbnVsbHB0cik7CiAgICAgaWYgKCFtX2NvcGllZEJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRJbWFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludEltYWdlLmNw
cAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludElt
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgQ3VzdG9tUGFp
bnRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGgKICAgICBhZGp1c3RlZFBhdHRlcm5DVE0uc2NhbGUo
MS4wIC8geFNjYWxlLCAxLjAgLyB5U2NhbGUpOwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZSh4
U2NhbGUsIHlTY2FsZSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKGFkanVzdGVkU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
LCBkZXN0Q29udGV4dCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBkZXN0Q29udGV4dCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybjsKICAgICBk
b0N1c3RvbVBhaW50KGJ1ZmZlci0+Y29udGV4dCgpLCBhZGp1c3RlZFNpemUpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MjUsNyArODI1LDcgQEAgUmVmUHRyPE1lZGlhU2FtcGxlPiBIVE1MQ2FudmFzRWxl
bWVudDo6dAogICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBsaWtlbHkgYmUgb3B0aW1pemVkIHF1aXRl
IGEgYml0LCBlc3BlY2lhbGx5IGluIHRoZSBjYXNlcyB3aGVyZQogICAgIC8vIHRoZSBJbWFnZUJ1
ZmZlciBpcyBiYWNrZWQgYnkgR1BVIG1lbW9yeSBhbHJlYWR5IGFuZC9vciBpcyBpbiB0aGUgR1BV
IHByb2Nlc3MgYnkKICAgICAvLyBzcGVjaWFsaXppbmcgdG9NZWRpYVNhbXBsZSgpIGluIEltYWdl
QnVmZmVyQmFja2VuZCB0byBub3QgdXNlIGdldFBpeGVsQnVmZmVyKCkuCi0gICAgYXV0byBwaXhl
bEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5nZXRQaXhlbEJ1ZmZlcih7IEFscGhhUHJlbXVsdGlwbGlj
YXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IgfSwgeyB7IH0sIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpIH0pOwor
ICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoeyBBbHBo
YVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfSwgeyB7IH0sIGltYWdlQnVmZmVyLT5sb2dp
Y2FsU2l6ZSgpIH0pOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCkBAIC05NTUsNyArOTU1LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRl
SW1hZ2VCdWZmZQogICAgIGF1dG8gW2NvbG9yU3BhY2UsIHBpeGVsRm9ybWF0XSA9IFsmXSB7CiAg
ICAgICAgIGlmIChtX2NvbnRleHQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpwYWlyIHsgbV9j
b250ZXh0LT5jb2xvclNwYWNlKCksIG1fY29udGV4dC0+cGl4ZWxGb3JtYXQoKSB9OwotICAgICAg
ICByZXR1cm4gc3RkOjpwYWlyIHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZv
cm1hdDo6QkdSQTggfTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6cGFpciB7IERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTggfTsKICAgICB9KCk7CiAKICAgICBz
ZXRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgcmVuZGVyaW5nTW9kZSwg
dXNlRGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1cnBvc2U6OkNhbnZhcywgMSwgY29sb3JTcGFjZSwg
cGl4ZWxGb3JtYXQsIGhvc3RXaW5kb3cpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDcgKzI4MSw3IEBA
IHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6bWVkaWFQbGF5ZXJGaXJzdFYKICAgICAgICAgcmVuZGVy
ZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSFRNTFZp
ZGVvRWxlbWVudDo6Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29uc3QKK1JlZlB0cjxJbWFnZUJ1ZmZl
cj4gSFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CiB7
CiAgICAgYXV0byogaG9zdFdpbmRvdyA9IGRvY3VtZW50KCkudmlldygpICYmIGRvY3VtZW50KCku
dmlldygpLT5yb290KCkgPyBkb2N1bWVudCgpLnZpZXcoKS0+cm9vdCgpLT5ob3N0V2luZG93KCkg
OiBudWxscHRyOwogICAgIGF1dG8gc2hvdWxkVXNlRGlzcGxheUxpc3QgPSBkb2N1bWVudCgpLnNl
dHRpbmdzKCkuZGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZCgpID8gU2hvdWxkVXNlRGlzcGxheUxp
c3Q6OlllcyA6IFNob3VsZFVzZURpc3BsYXlMaXN0OjpObzsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTIgKzMzLDEy
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNl
OwogY2xhc3MgSFRNTEltYWdlTG9hZGVyOwogY2xhc3MgSW1hZ2VCdWZmZXI7CiBjbGFzcyBSZW5k
ZXJWaWRlbzsKIGNsYXNzIFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlcjsKIAotZW51bSBjbGFzcyBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgOiB1aW50OF90OwogZW51bSBjbGFzcyBQaXhlbEZvcm1hdCA6
IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOwogCkBAIC03Miw3ICs3
Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCkgb3ZlcnJp
ZGU7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQnVmZmVyRm9yUGFp
bnRpbmcoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgRGVzdGluYXRpb25Db2xvclNw
YWNlLCBQaXhlbEZvcm1hdCkgY29uc3Q7CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVC
dWZmZXJGb3JQYWludGluZyhjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCkgY29uc3Q7CiAKICAgICAvLyBVc2Vk
IGJ5IGNhbnZhcyB0byBnYWluIHJhdyBwaXhlbCBhY2Nlc3MKICAgICB2b2lkIHBhaW50Q3VycmVu
dEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCwx
MiArODQsMTIgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJpdG1hcDo6Y3JlYXRlSQogICAg
ICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25D
b250ZXh0KTsKICAgICAgICAgaWYgKGRvY3VtZW50LnZpZXcoKSAmJiBkb2N1bWVudC52aWV3KCkt
PnJvb3QoKSkgewogICAgICAgICAgICAgYXV0byBob3N0V2luZG93ID0gZG9jdW1lbnQudmlldygp
LT5yb290KCktPmhvc3RXaW5kb3coKTsKLSAgICAgICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0OjpObywgUmVu
ZGVyaW5nUHVycG9zZTo6Q2FudmFzLCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBob3N0V2luZG93KTsKKyAgICAgICAgICAg
IHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIFNob3VsZFVz
ZURpc3BsYXlMaXN0OjpObywgUmVuZGVyaW5nUHVycG9zZTo6Q2FudmFzLCByZXNvbHV0aW9uU2Nh
bGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGhv
c3RXaW5kb3cpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gRklYTUUgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzIxODQ4Mj4gRW5hYmxlIHdvcmtlciBiYXNlZCBJbWFnZUJpdG1hcCBhbmQgT2Zm
c2NyZWVuQ2FudmFzIGRyYXdpbmcgdG8gdXNlIEdQVSBQcm9jZXNzIHJlbmRlcmluZwotICAgIHJl
dHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25T
Y2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwor
ICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29s
dXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CiB9CiAKIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgSW1hZ2VCaXRtYXA6OlNvdXJjZSYm
IHNvdXJjZSwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgSW1hZ2VCaXRtYXA6OlByb21p
c2UmJiBwcm9taXNlKQpAQCAtNTA0LDcgKzUwNCw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0
ZVByb21pc2UoU2NyaXB0RXgKICAgICBhdXRvIG91dHB1dFNpemUgPSBvdXRwdXRTaXplRm9yU291
cmNlUmVjdGFuZ2xlKHNvdXJjZVJlY3RhbmdsZSwgb3B0aW9ucyk7CiAKICAgICAvLyBGSVhNRTog
QWRkIHN1cHBvcnQgZm9yIGNvbG9yIHNwYWNlcyAvIHBpeGVsIGZvcm1hdHMgdG8gSW1hZ2VCaXRt
YXAuCi0gICAgYXV0byBiaXRtYXBEYXRhID0gdmlkZW8tPmNyZWF0ZUJ1ZmZlckZvclBhaW50aW5n
KG91dHB1dFNpemUsIGJ1ZmZlclJlbmRlcmluZ01vZGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGJpdG1hcERhdGEgPSB2aWRlby0+
Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcob3V0cHV0U2l6ZSwgYnVmZmVyUmVuZGVyaW5nTW9kZSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAg
aWYgKCFiaXRtYXBEYXRhKSB7CiAgICAgICAgIHJlc29sdmVXaXRoQmxhbmtJbWFnZUJ1ZmZlcihz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCAhdGFpbnRzT3JpZ2luKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuc2VjdXJpdHlPcmlnaW4oKSwgKnZpZGVvKSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgICAg
IHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDUxLDE0ICs0NTEsMTQgQEAgdm9pZCBPZmZzY3JlZW5DYW52
YXM6OmNvbW1pdFRvUGxhY2Vob2xkZQogICAgICAgICBtX2NvbnRleHQtPnBhaW50UmVuZGVyaW5n
UmVzdWx0c1RvQ2FudmFzKCk7CiAKICAgICBpZiAobV9wbGFjZWhvbGRlckRhdGEtPmJ1ZmZlclBp
cGVTb3VyY2UpIHsKLSAgICAgICAgYXV0byBidWZmZXJDb3B5ID0gaW1hZ2VCdWZmZXItPmNvcHlS
ZWN0VG9CdWZmZXIoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxT
aXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGltYWdlQnVmZmVyLT5jb250ZXh0
KCkpOworICAgICAgICBhdXRvIGJ1ZmZlckNvcHkgPSBpbWFnZUJ1ZmZlci0+Y29weVJlY3RUb0J1
ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSks
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsK
ICAgICAgICAgaWYgKGJ1ZmZlckNvcHkpCiAgICAgICAgICAgICBtX3BsYWNlaG9sZGVyRGF0YS0+
YnVmZmVyUGlwZVNvdXJjZS0+aGFuZGxlKFdURk1vdmUoYnVmZmVyQ29weSkpOwogICAgIH0KIAog
ICAgIExvY2tlciBsb2NrZXIgeyBtX3BsYWNlaG9sZGVyRGF0YS0+YnVmZmVyTG9jayB9OwogICAg
IGJvb2wgc2hvdWxkUHVzaEJ1ZmZlciA9ICFtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1p
dEJ1ZmZlcjsKLSAgICBtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlciA9IGlt
YWdlQnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdl
QnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBpbWFn
ZUJ1ZmZlci0+Y29udGV4dCgpKTsKKyAgICBtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1p
dEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIGltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwogICAgIGlmIChtX3BsYWNlaG9sZGVy
RGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlciAmJiBzaG91bGRQdXNoQnVmZmVyKQogICAgICAgICBw
dXNoQnVmZmVyVG9QbGFjZWhvbGRlcigpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAi
Q1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VySGVscGVycy5o
IgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VyV29ya2VyU2FmZS5oIgotI2luY2x1ZGUgIkNv
bG9yU3BhY2UuaCIKICNpbmNsdWRlICJHcmFkaWVudC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVy
LmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNhY2hl
ZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2FudmFzUGF0dGVybi5oIgotI2luY2x1ZGUgIkNvbG9yU3Bh
Y2UuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJIVE1M
Q2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MVmlkZW9FbGVtZW50LmgiCkBAIC05MCw3ICs5MCw3IEBAIFBpeGVsRm9ybWF0IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQ6OnBpeGUKIAogRGVzdGluYXRpb25Db2xvclNwYWNlIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQ6OmNvbG9yU3BhY2UoKSBjb25zdAogewotICAgIHJldHVybiBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0I7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpOwogfQogCiBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRPcmln
aW4oY29uc3QgQ2FudmFzUGF0dGVybiogcGF0dGVybikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTMgKzM3LDEzIEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENhbnZhc1BhdHRlcm47CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7
CiBjbGFzcyBIVE1MQ2FudmFzRWxlbWVudDsKIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiBjbGFz
cyBIVE1MVmlkZW9FbGVtZW50OwogY2xhc3MgSW1hZ2VCaXRtYXA7CiBjbGFzcyBUeXBlZE9NQ1NT
SW1hZ2VWYWx1ZTsKIGNsYXNzIFdlYkdMT2JqZWN0OwotZW51bSBjbGFzcyBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgOiB1aW50OF90OwogZW51bSBjbGFzcyBQaXhlbEZvcm1hdCA6IHVpbnQ4X3Q7CiAK
IGNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29u
dGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VC
aXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCB2b2lkIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4
dDo6c2V0T3V0CiAgICAgICAgIC8vIG9ubHkgcmVhc29uIEkgY2FuIHRoaW5rIG9mIGlzIHRvRGF0
YVVSTCgpLCBidXQgdGhhdCBkb2Vzbid0IHNlZW0gbGlrZQogICAgICAgICAvLyBhIGdvb2QgZW5v
dWdoIGFyZ3VtZW50IHRvIHdhc3RlIG1lbW9yeS4KIAotICAgICAgICBjYW52YXMoKS0+c2V0SW1h
Z2VCdWZmZXJBbmRNYXJrRGlydHkoSW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUoY2FudmFz
KCktPndpZHRoKCksIGNhbnZhcygpLT5oZWlnaHQoKSksIGJ1ZmZlclJlbmRlcmluZ01vZGUsIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CisgICAg
ICAgIGNhbnZhcygpLT5zZXRJbWFnZUJ1ZmZlckFuZE1hcmtEaXJ0eShJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKEZsb2F0U2l6ZShjYW52YXMoKS0+d2lkdGgoKSwgY2FudmFzKCktPmhlaWdodCgpKSwgYnVm
ZmVyUmVuZGVyaW5nTW9kZSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVs
Rm9ybWF0OjpCR1JBOCkpOwogCiAgICAgICAgIC8vIDEuNC4gU2V0IHRoZSBvdXRwdXQgYml0bWFw
J3Mgb3JpZ2luLWNsZWFuIGZsYWcgdG8gdHJ1ZS4KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmNwcAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiUHJlZGVmaW5lZENvbG9yU3BhY2UuaCIKIAotI2luY2x1ZGUgIkNvbG9yU3Bh
Y2UuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlIDx3dGYv
T3B0aW9uYWwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsMzMgKzM1LDI2IEBAIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSB0b0Rlc3RpbmF0aW9uQ29sb3IKIHsKICAgICBzd2l0Y2ggKGNv
bG9yU3BhY2UpIHsKICAgICBjYXNlIFByZWRlZmluZWRDb2xvclNwYWNlOjpTUkdCOgotICAgICAg
ICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOworICAgICAgICByZXR1cm4gRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9S
X1NQQUNFX0RJU1BMQVlfUDMpCiAgICAgY2FzZSBQcmVkZWZpbmVkQ29sb3JTcGFjZTo6RGlzcGxh
eVAzOgotICAgICAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDM7Cisg
ICAgICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMygpOwogI2VuZGlm
CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQjsKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCk7CiB9CiAKLU9wdGlvbmFsPFByZWRlZmluZWRDb2xvclNwYWNlPiB0b1ByZWRlZmluZWRD
b2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKQorT3B0aW9uYWw8UHJl
ZGVmaW5lZENvbG9yU3BhY2U+IHRvUHJlZGVmaW5lZENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQogewotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewot
ICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOgorICAgIGlmIChjb2xvclNwYWNl
ID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKQogICAgICAgICByZXR1cm4gUHJlZGVm
aW5lZENvbG9yU3BhY2U6OlNSR0I7Ci0jaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNF
X0xJTkVBUl9TUkdCKQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdC
OgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotI2VuZGlmCiAjaWYgRU5BQkxFKERFU1RJ
TkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCi0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OkRpc3BsYXlQMzoKKyAgICBpZiAoY29sb3JTcGFjZSA9PSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OkRpc3BsYXlQMygpKQogICAgICAgICByZXR1cm4gUHJlZGVmaW5lZENvbG9yU3BhY2U6
OkRpc3BsYXlQMzsKICNlbmRpZgotICAgIH0KIAotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuaAkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVu
dW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDogdWludDhfdDsKK2NsYXNzIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTsKIAogZW51bSBjbGFzcyBQcmVkZWZpbmVkQ29sb3JTcGFjZSB7CiAgICAg
U1JHQgpAQCAtNDAsNyArNDAsNyBAQCBlbnVtIGNsYXNzIFByZWRlZmluZWRDb2xvclNwYWNlIHsK
IH07CiAKIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB0b0Rlc3RpbmF0aW9uQ29sb3JTcGFjZShQcmVk
ZWZpbmVkQ29sb3JTcGFjZSk7Ci1PcHRpb25hbDxQcmVkZWZpbmVkQ29sb3JTcGFjZT4gdG9QcmVk
ZWZpbmVkQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpOworT3B0aW9uYWw8UHJlZGVm
aW5lZENvbG9yU3BhY2U+IHRvUHJlZGVmaW5lZENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJik7CiAKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAJKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjIzLDcgKzc2MjMsNyBAQCBJbWFnZUJ1ZmZlciog
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6CiAgICAgfQogCiAgICAgLy8gRklYTUUgKDE0OTQy
Myk6IFNob3VsZCB0aGlzIEltYWdlQnVmZmVyIGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJh
dGVkPwotICAgIGF1dG8gdGVtcCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gdGVtcCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6
ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCF0ZW1wKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICBBU1NFUlQobV9idWZmZXJzLnNpemUoKSA+IDApOwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVy
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFRleHRUcmFja0NvbnRh
aW5lckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTgsNyArNDE4LDcgQEAgUmVmUHRy
PEltYWdlPiBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YQogICAgIEludFJlY3QgcGFpbnRpbmdS
ZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+c2l6ZSgpKTsKIAogICAgIC8vIEZJWE1F
ICgxNDk0MjIpOiBUaGlzIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFj
Y2VsZXJhdGVkLgotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGlu
Z1JlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBkZXZpY2VTY2FsZUZh
Y3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwor
ICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGluZ1JlY3Quc2l6ZSgp
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFi
dWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExNDksNyArMTE0OSw3IEBAIGludCBJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YShE
dXBsaWMKICAgICAgICAgICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBpbWFnZUVs
ZW1lbnQtPmNhY2hlZEltYWdlKCkpIHsKICAgICAgICAgICAgICAgICBJbWFnZSogaW1hZ2UgPSBj
YWNoZWRJbWFnZS0+aW1hZ2UoKTsKICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2Ug
IT0gJkltYWdlOjpudWxsSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgp
OwogICAgICAgICAgICAgICAgICAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFnZSgq
aW1hZ2UsIEZsb2F0UG9pbnQoMCwgMCkpOwogICAgICAgICAgICAgICAgICAgICBkYXRhVVJMID0g
aW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CiAgICAgICAgICAgICAgICAgfQpA
QCAtMTE2Myw3ICsxMTYzLDcgQEAgaW50IEluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKER1
cGxpYwogCiAgICAgICAgICAgICB1bnNpZ25lZCB2aWRlb1dpZHRoID0gdmlkZW9FbGVtZW50LT52
aWRlb1dpZHRoKCk7CiAgICAgICAgICAgICB1bnNpZ25lZCB2aWRlb0hlaWdodCA9IHZpZGVvRWxl
bWVudC0+dmlkZW9IZWlnaHQoKTsKLSAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZSh2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCksIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwg
UGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZSh2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCksIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgICAgICAgICAgaWYgKGltYWdlQnVmZmVyKSB7CiAg
ICAgICAgICAgICAgICAgdmlkZW9FbGVtZW50LT5wYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChp
bWFnZUJ1ZmZlci0+Y29udGV4dCgpLCBGbG9hdFJlY3QoMCwgMCwgdmlkZW9XaWR0aCwgdmlkZW9I
ZWlnaHQpKTsKICAgICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVS
TCgiaW1hZ2UvcG5nIik7CkBAIC0xMjAwLDcgKzEyMDAsNyBAQCBpbnQgSW5zcGVjdG9yQ2FudmFz
OjppbmRleEZvckRhdGEoRHVwbGljCiAgICAgICAgICAgICBpZiAoYXV0byogY2FjaGVkSW1hZ2Ug
PSBjc3NJbWFnZVZhbHVlLT5pbWFnZSgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byogaW1hZ2Ug
PSBjYWNoZWRJbWFnZS0+aW1hZ2UoKTsKICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UgJiYgaW1h
Z2UgIT0gJkltYWdlOjpudWxsSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdN
b2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdS
QTgpOwogICAgICAgICAgICAgICAgICAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFn
ZSgqaW1hZ2UsIEZsb2F0UG9pbnQoMCwgMCkpOwogICAgICAgICAgICAgICAgICAgICBkYXRhVVJM
ID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CiAgICAgICAgICAgICAgICAg
fQpAQCAtMTQ0MSw3ICsxNDQxLDcgQEAgUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJ
bnNwZWN0bwogewogICAgIGF1dG8mIHRpbGVJbWFnZSA9IGNhbnZhc1BhdHRlcm4ucGF0dGVybigp
LnRpbGVJbWFnZSgpOwogICAgIEZsb2F0UmVjdCByZWN0ID0geyB7IH0sIHRpbGVJbWFnZS5zaXpl
KCkgfTsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0aWxlSW1h
Z2Uuc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZl
ciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGlsZUltYWdlLnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CiAgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5kcmF3TmF0aXZlSW1hZ2Uo
dGlsZUltYWdlLCB0aWxlSW1hZ2Uuc2l6ZSgpLCByZWN0LCByZWN0KTsKIAogICAgIFN0cmluZyBy
ZXBlYXQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyOSw3ICs1
MjksNyBAQCB2b2lkIENocm9tZTo6c2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vCiAgICAgbV9j
bGllbnQuc2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGhpZGRlblVudGlsTW91c2VNb3Zl
cyk7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gQ2hyb21lOjpjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgUmVuZGVy
aW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29uc3QKK1JlZlB0
cjxJbWFnZUJ1ZmZlcj4gQ2hyb21lOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
IHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSBwdXJw
b3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYg
Y29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fY2xpZW50LmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHB1cnBvc2Us
IHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZS5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldEN1cnNvcihjb25zdCBDdXJzb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEN1cnNvckhp
ZGRlblVudGlsTW91c2VNb3Zlcyhib29sKSBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwg
UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJl
bmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiwgUGl4ZWxGb3JtYXQpIGNvbnN0IG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKFdF
QkdMKQogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0
R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3Qgb3ZlcnJpZGU7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzOSw3
ICszMzksNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBEaXNwbGF5UmVmcmVzaE1vbml0
b3JGYWN0b3J5KiBkaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bnVsbHB0cjsgfQogCi0gICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2Us
IGZsb2F0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCB7IHJldHVy
biBudWxscHRyOyB9CisgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2Us
IGZsb2F0LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCkgY29uc3Qg
eyByZXR1cm4gbnVsbHB0cjsgfQogCiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIHZpcnR1YWwgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNu
YXBzaG90dGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNu
YXBzaG90dGluZy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVTbmFwc2hvdHRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDcgQEAg
UmVmUHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVjdFdpdAogICAgIGlmIChvcHRpb25z
ICYgU25hcHNob3RPcHRpb25zUGFpbnRXaXRoSW50ZWdyYWxTY2FsZUZhY3RvcikKICAgICAgICAg
c2NhbGVGYWN0b3IgPSBjZWlsZihzY2FsZUZhY3Rvcik7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgc2NhbGVGYWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1h
Z2VSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgc2NhbGVGYWN0b3Is
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAg
IGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBidWZmZXItPmNvbnRl
eHQoKS50cmFuc2xhdGUoLWltYWdlUmVjdC54KCksIC1pbWFnZVJlY3QueSgpKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcAkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBPcHRpb25hbDxMYWI8ZmxvYXQ+PiBzYW1wbGVD
b2xvcigKICAgICBpZiAoIXNuYXBzaG90KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IHNuYXBzaG90LT5nZXRQaXhlbEJ1ZmZlcih7IEFscGhh
UHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfSwgeyB7IH0sIHNuYXBzaG90LT5sb2dpY2FsU2l6
ZSgpIH0pOworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzbmFwc2hvdC0+Z2V0UGl4ZWxCdWZmZXIo
eyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpC
R1JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfSwgeyB7IH0sIHNuYXBzaG90LT5s
b2dpY2FsU2l6ZSgpIH0pOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGll
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGll
bnQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25z
b2xlQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI2LDcgKzMyNiw3IEBAIHZvaWQgUGFn
ZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjoKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChhdXRvKiBjYWNoZWRJbWFnZSA9IGltYWdlRWxlbWVudC5jYWNoZWRJbWFnZSgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1h
Z2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UgIT0g
JkltYWdlOjpudWxsSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
bmFwc2hvdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdCA9
IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuYXBzaG90LT5jb250ZXh0
KCkuZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMzQzLDcgKzM0Myw3
IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjoKICAgICAgICAgICAg
ICAgICAgICAgICAgIGF1dG8mIHZpZGVvRWxlbWVudCA9IGRvd25jYXN0PEhUTUxWaWRlb0VsZW1l
bnQ+KCpub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHZpZGVvV2lkdGgg
PSB2aWRlb0VsZW1lbnQudmlkZW9XaWR0aCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgdmlkZW9IZWlnaHQgPSB2aWRlb0VsZW1lbnQudmlkZW9IZWlnaHQoKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHNuYXBzaG90ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUo
dmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRT
aXplKHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb0VsZW1lbnQucGFpbnRDdXJyZW50RnJhbWVJ
bkNvbnRleHQoc25hcHNob3QtPmNvbnRleHQoKSwgRmxvYXRSZWN0KDAsIDAsIHZpZGVvV2lkdGgs
IHZpZGVvSGVpZ2h0KSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICNlbmRpZgpAQCAtMzY4LDcg
KzM2OCw3IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjoKICAgICAg
ICAgICAgIHRhcmdldCA9IHBvc3NpYmxlVGFyZ2V0OwogICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRzKCkpKSB7CiAgICAgICAgICAg
ICAgICAgYXV0byBzb3VyY2VTaXplID0gaW1hZ2VEYXRhLT5zaXplKCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNvdXJjZVNpemUs
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvIGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzb3VyY2VTaXplLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KSkgewogICAgICAgICAgICAgICAgICAgICBJbnRSZWN0IHNvdXJjZVJlY3Qo
SW50UG9pbnQoKSwgc291cmNlU2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgIGltYWdlQnVmZmVy
LT5wdXRQaXhlbEJ1ZmZlcihpbWFnZURhdGEtPnBpeGVsQnVmZmVyKCksIHNvdXJjZVJlY3QpOwog
ICAgICAgICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1h
Z2UvcG5nIl9zLCBXVEY6Om51bGxvcHQsIFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
MTAgKzMxLDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cnNvcjsKK2NsYXNz
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIEltYWdlQnVmZmVyOwogCiBlbnVtIGNsYXNz
IFBpeGVsRm9ybWF0IDogdWludDhfdDsKLWVudW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNl
IDogdWludDhfdDsKIGVudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJvb2w7CiBlbnVtIGNsYXNz
IFJlbmRlcmluZ1B1cnBvc2UgOiB1aW50OF90OwogCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIEludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0
IEludFBvaW50JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSW50UmVjdCByb290Vmlld1RvQWNj
ZXNzaWJpbGl0eVNjcmVlbihjb25zdCBJbnRSZWN0JikgY29uc3QgPSAwOwogCi0gICAgdmlydHVh
bCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYs
IFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
RGVzdGluYXRpb25Db2xvclNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
LCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBpeGVsRm9ybWF0KSBjb25zdCA9IDA7CiAK
ICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+
IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYpIGNvbnN0ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2Ny
ZWVuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TY3Jl
ZW4uaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1TY3JlZW4uaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCB0eXBlZGVmIHN0cnVj
dCBDR0NvbG9yU3BhY2UgKkNHQ29sb3JTcGFjCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgRGVzdGluYXRpb25Db2xvclNwYWNlOwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgRmxvYXRT
aXplOwogY2xhc3MgV2lkZ2V0OwpAQCAtNjgsNiArNjksNyBAQCB1c2luZyBJT1JlZ2lzdHJ5R1BV
SUQgPSBpbnQ2NF90OyAvLyBHbG9iCiBpbnQgc2NyZWVuRGVwdGgoV2lkZ2V0Kik7CiBpbnQgc2Ny
ZWVuRGVwdGhQZXJDb21wb25lbnQoV2lkZ2V0Kik7CiBib29sIHNjcmVlbklzTW9ub2Nocm9tZShX
aWRnZXQqKTsKK1dFQkNPUkVfRVhQT1JUIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBzY3JlZW5Db2xv
clNwYWNlKFdpZGdldCogPSBudWxscHRyKTsKIAogYm9vbCBzY3JlZW5IYXNJbnZlcnRlZENvbG9y
cygpOwogCkBAIC0xMDAsMTAgKzEwMiw2IEBAIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2NyZWVuU3Vw
cG9ydHNIaWdoRHkKIGNvbnN0ZXhwciBib29sIHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5n
ZShXaWRnZXQqID0gbnVsbHB0cikgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCi0jaWYgVVNF
KENHKQotV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIHNjcmVlbkNvbG9yU3BhY2UoV2lk
Z2V0KiA9IG51bGxwdHIpOwotI2VuZGlmCi0KIHN0cnVjdCBTY3JlZW5Qcm9wZXJ0aWVzOwogc3Ry
dWN0IFNjcmVlbkRhdGE7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jl
ZW5Qcm9wZXJ0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
ZWVuUHJvcGVydGllcy5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JlZW5Qcm9wZXJ0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNp
bmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogI2luY2x1
ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CkBAIC0zMiwxNCArMzMsMTIgQEAKICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLXR5cGVkZWYg
c3RydWN0IENHQ29sb3JTcGFjZSAqQ0dDb2xvclNwYWNlUmVmOwotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0cnVjdCBTY3JlZW5EYXRhIHsKICAgICBGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxl
UmVjdDsKICAgICBGbG9hdFJlY3Qgc2NyZWVuUmVjdDsKLSAgICBSZXRhaW5QdHI8Q0dDb2xvclNw
YWNlUmVmPiBjb2xvclNwYWNlOworICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNl
IHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsKICAgICBpbnQgc2NyZWVuRGVwdGgg
eyAwIH07CiAgICAgaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50IHsgMCB9OwogICAgIGJvb2wg
c2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yIHsgZmFsc2UgfTsKQEAgLTU2LDEzICs1NSwxMiBA
QCBzdHJ1Y3QgU2NyZWVuRGF0YSB7CiAgICAgZmxvYXQgc2NhbGVGYWN0b3IgeyAxIH07CiAjZW5k
aWYKIAotICAgIGVudW0gY2xhc3MgQ29sb3JTcGFjZVR5cGUgOiB1aW50OF90IHsgTm9uZSwgTmFt
ZSwgRGF0YSB9OwogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8
U2NyZWVuRGF0YT4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKLXR5cGVkZWYgSGFzaE1hcDxQbGF0
Zm9ybURpc3BsYXlJRCwgU2NyZWVuRGF0YT4gU2NyZWVuRGF0YU1hcDsKLSAgICAKK3VzaW5nIFNj
cmVlbkRhdGFNYXAgPSBIYXNoTWFwPFBsYXRmb3JtRGlzcGxheUlELCBTY3JlZW5EYXRhPjsKKwog
c3RydWN0IFNjcmVlblByb3BlcnRpZXMgewogICAgIFBsYXRmb3JtRGlzcGxheUlEIHByaW1hcnlE
aXNwbGF5SUQgeyAwIH07CiAgICAgU2NyZWVuRGF0YU1hcCBzY3JlZW5EYXRhTWFwOwpAQCAtNzQs
OCArNzIsNyBAQCBzdHJ1Y3QgU2NyZWVuUHJvcGVydGllcyB7CiB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPgogdm9pZCBTY3JlZW5Qcm9wZXJ0aWVzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIHsKLSAgICBlbmNvZGVyIDw8IHByaW1hcnlEaXNwbGF5SUQ7Ci0gICAgZW5jb2RlciA8PCBz
Y3JlZW5EYXRhTWFwOworICAgIGVuY29kZXIgPDwgcHJpbWFyeURpc3BsYXlJRCA8PCBzY3JlZW5E
YXRhTWFwOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtOTcsNyArOTQsNyBAQCBP
cHRpb25hbDxTY3JlZW5Qcm9wZXJ0aWVzPiBTY3JlZW5Qcm9wZXJ0CiB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgogdm9pZCBTY3JlZW5EYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
IHsKLSAgICBlbmNvZGVyIDw8IHNjcmVlbkF2YWlsYWJsZVJlY3QgPDwgc2NyZWVuUmVjdCA8PCBz
Y3JlZW5EZXB0aCA8PCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCA8PCBzY3JlZW5TdXBwb3J0c0V4
dGVuZGVkQ29sb3IgPDwgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMgPDwgc2NyZWVuU3VwcG9ydHNI
aWdoRHluYW1pY1JhbmdlOworICAgIGVuY29kZXIgPDwgc2NyZWVuQXZhaWxhYmxlUmVjdCA8PCBz
Y3JlZW5SZWN0IDw8IGNvbG9yU3BhY2UgPDwgc2NyZWVuRGVwdGggPDwgc2NyZWVuRGVwdGhQZXJD
b21wb25lbnQgPDwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yIDw8IHNjcmVlbkhhc0ludmVy
dGVkQ29sb3JzIDw8IHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZTsKIAogI2lmIFBMQVRG
T1JNKE1BQykKICAgICBlbmNvZGVyIDw8IHNjcmVlbklzTW9ub2Nocm9tZSA8PCBkaXNwbGF5TWFz
ayA8PCBncHVJRCA8PCBwcmVmZXJyZWREeW5hbWljUmFuZ2VNb2RlOwpAQCAtMTA2LDI4ICsxMDMs
NiBAQCB2b2lkIFNjcmVlbkRhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyCiAjaWYgUExBVEZP
Uk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGVuY29kZXIgPDwgc2NhbGVGYWN0
b3I7CiAjZW5kaWYKLQotICAgIGlmIChjb2xvclNwYWNlKSB7Ci0gICAgICAgIC8vIFRyeSB0byBl
bmNvZGUgdGhlIG5hbWUuCi0gICAgICAgIGlmIChhdXRvIG5hbWUgPSBhZG9wdENGKENHQ29sb3JT
cGFjZUNvcHlOYW1lKGNvbG9yU3BhY2UuZ2V0KCkpKSkgewotICAgICAgICAgICAgZW5jb2RlciA8
PCBDb2xvclNwYWNlVHlwZTo6TmFtZTsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgU3RyaW5nKG5h
bWUuZ2V0KCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8g
RmFpbGluZyB0aGF0LCBqdXN0IGVuY29kZSB0aGUgSUNDIGRhdGEuCi0gICAgICAgIGlmIChhdXRv
IHByb2ZpbGVEYXRhID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDb3B5SUNDRGF0YShjb2xvclNwYWNl
LmdldCgpKSkpIHsKLSAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBpY2NEYXRhOwotICAgICAg
ICAgICAgaWNjRGF0YS5hcHBlbmQoQ0ZEYXRhR2V0Qnl0ZVB0cihwcm9maWxlRGF0YS5nZXQoKSks
IENGRGF0YUdldExlbmd0aChwcm9maWxlRGF0YS5nZXQoKSkpOwotCi0gICAgICAgICAgICBlbmNv
ZGVyIDw8IENvbG9yU3BhY2VUeXBlOjpEYXRhOwotICAgICAgICAgICAgZW5jb2RlciA8PCBpY2NE
YXRhOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gVGhl
IGNvbG9yIHNwYWNlIHdhcyBudWxsIG9yIGZhaWxlZCB0byBiZSBlbmNvZGVkLgotICAgIGVuY29k
ZXIgPDwgQ29sb3JTcGFjZVR5cGU6Ok5vbmU7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
CkBAIC0xNDMsNiArMTE4LDExIEBAIE9wdGlvbmFsPFNjcmVlbkRhdGE+IFNjcmVlbkRhdGE6OmRl
Y29kZSgKICAgICBpZiAoIXNjcmVlblJlY3QpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAKKyAgICBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IHNjcmVlbkNvbG9yU3BhY2U7
CisgICAgZGVjb2RlciA+PiBzY3JlZW5Db2xvclNwYWNlOworICAgIGlmICghc2NyZWVuQ29sb3JT
cGFjZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwogICAgIE9wdGlvbmFsPGludD4g
c2NyZWVuRGVwdGg7CiAgICAgZGVjb2RlciA+PiBzY3JlZW5EZXB0aDsKICAgICBpZiAoIXNjcmVl
bkRlcHRoKQpAQCAtMTk3LDQxICsxNzcsMTAgQEAgT3B0aW9uYWw8U2NyZWVuRGF0YT4gU2NyZWVu
RGF0YTo6ZGVjb2RlKAogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogI2VuZGlmCiAKLSAg
ICBDb2xvclNwYWNlVHlwZSBkYXRhVHlwZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFU
eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIFJldGFpblB0cjxDR0Nv
bG9yU3BhY2VSZWY+IGNnQ29sb3JTcGFjZTsKLSAgICBzd2l0Y2ggKGRhdGFUeXBlKSB7Ci0gICAg
Y2FzZSBDb2xvclNwYWNlVHlwZTo6Tm9uZToKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDb2xv
clNwYWNlVHlwZTo6TmFtZTogewotICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGNvbG9yU3BhY2VO
YW1lOwotICAgICAgICBkZWNvZGVyID4+IGNvbG9yU3BhY2VOYW1lOwotICAgICAgICBBU1NFUlQo
Y29sb3JTcGFjZU5hbWUpOwotICAgICAgICBpZiAoIWNvbG9yU3BhY2VOYW1lKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgICAgICBjZ0NvbG9yU3BhY2UgPSBhZG9wdENG
KENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGNvbG9yU3BhY2VOYW1lLT5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENvbG9yU3BhY2VU
eXBlOjpEYXRhOiB7Ci0gICAgICAgIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gaWNjRGF0YTsK
LSAgICAgICAgZGVjb2RlciA+PiBpY2NEYXRhOwotICAgICAgICBBU1NFUlQoaWNjRGF0YSk7Ci0g
ICAgICAgIGlmICghaWNjRGF0YSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0K
LSAgICAgICAgYXV0byBjb2xvclNwYWNlRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGljY0RhdGEtPmRhdGEoKSwgaWNjRGF0YS0+c2l6ZSgpKSk7Ci0gICAg
ICAgIGNnQ29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aElDQ0RhdGEo
Y29sb3JTcGFjZURhdGEuZ2V0KCkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIH0KLQog
ICAgIHJldHVybiB7IHsKICAgICAgICAgV1RGTW92ZSgqc2NyZWVuQXZhaWxhYmxlUmVjdCksCiAg
ICAgICAgIFdURk1vdmUoKnNjcmVlblJlY3QpLAotICAgICAgICBXVEZNb3ZlKGNnQ29sb3JTcGFj
ZSksCisgICAgICAgIFdURk1vdmUoKnNjcmVlbkNvbG9yU3BhY2UpLAogICAgICAgICBXVEZNb3Zl
KCpzY3JlZW5EZXB0aCksCiAgICAgICAgIFdURk1vdmUoKnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50
KSwKICAgICAgICAgV1RGTW92ZSgqc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKSwKQEAgLTI1
MCwxNiArMTk5LDMgQEAgT3B0aW9uYWw8U2NyZWVuRGF0YT4gU2NyZWVuRGF0YTo6ZGVjb2RlKAog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0
ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlNjcmVlbkRhdGE6OkNvbG9yU3BhY2VUeXBl
PiB7Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAgICAgICAgV2ViQ29yZTo6U2Ny
ZWVuRGF0YTo6Q29sb3JTcGFjZVR5cGUsCi0gICAgICAgIFdlYkNvcmU6OlNjcmVlbkRhdGE6OkNv
bG9yU3BhY2VUeXBlOjpOb25lLAotICAgICAgICBXZWJDb3JlOjpTY3JlZW5EYXRhOjpDb2xvclNw
YWNlVHlwZTo6TmFtZSwKLSAgICAgICAgV2ViQ29yZTo6U2NyZWVuRGF0YTo6Q29sb3JTcGFjZVR5
cGU6OkRhdGEKLSAgICA+OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NCw3ICsxNjQsNyBAQCBSZWZQdHI8TmF0aXZlSW1h
Z2U+IEJpdG1hcEltYWdlOjpwcmVUcmFuCiAgICAgICAgIHJldHVybiBpbWFnZTsKIAogICAgIGF1
dG8gY29ycmVjdGVkU2l6ZUZsb2F0ID0gY29ycmVjdGVkU2l6ZSA/IEZsb2F0U2l6ZShjb3JyZWN0
ZWRTaXplLnZhbHVlKCkpIDogc2l6ZSgpOwotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShjb3JyZWN0ZWRTaXplRmxvYXQsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
IDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY29ycmVjdGVkU2l6ZUZsb2F0LCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIGltYWdlOwogCkBAIC0zNTIsNyArMzUyLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1Bh
dHRlcm4oR3JhcGhpY3NDbwogICAgIH0KIAogICAgIGlmICghbV9jYWNoZWRJbWFnZSkgewotICAg
ICAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4
cGFuZGVkSW50U2l6ZSh0aWxlUmVjdC5zaXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IsIGN0eHQpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZSh0aWxlUmVjdC5zaXplKCkpLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgY3R4dCk7CiAgICAgICAgIGlmICghYnVmZmVyKQogICAgICAg
ICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3IuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw3ICsxNjgsNyBAQCBDb2xv
ckNvbXBvbmVudHM8ZmxvYXQsIDQ+IENvbG9yOjp0b0NvbG9yCiAgICAgcmV0dXJuIGNvbnZlckNv
bG9yQ29tcG9uZW50cyhpbnB1dENvbG9yU3BhY2UsIGNvbXBvbmVudHMsIG91dHB1dENvbG9yU3Bh
Y2UpOwogfQogCi1Db2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IENvbG9yOjp0b0NvbG9yQ29tcG9u
ZW50c0luQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugb3V0cHV0Q29sb3JTcGFjZSkg
Y29uc3QKK0NvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gQ29sb3I6OnRvQ29sb3JDb21wb25lbnRz
SW5Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgb3V0cHV0Q29sb3JTcGFj
ZSkgY29uc3QKIHsKICAgICBhdXRvIFtpbnB1dENvbG9yU3BhY2UsIGNvbXBvbmVudHNdID0gY29s
b3JTcGFjZUFuZENvbXBvbmVudHMoKTsKICAgICByZXR1cm4gY29udmVyQ29sb3JDb21wb25lbnRz
KGlucHV0Q29sb3JTcGFjZSwgY29tcG9uZW50cywgb3V0cHV0Q29sb3JTcGFjZSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDb2xvckNvbnZlcnNpb24uaCIKICNpbmNs
dWRlICJDb2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKKyNpbmNsdWRl
ICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KQEAgLTEy
MSw3ICsxMjIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8VD4g
dG9TUkdCQUxvc3N5KCkgY29uc3QgeyByZXR1cm4gdG9Db2xvclR5cGVMb3NzeTxTUkdCQTxUPj4o
KTsgfQogCiAgICAgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiB0b0NvbG9yQ29tcG9uZW50c0lu
Q29sb3JTcGFjZShDb2xvclNwYWNlKSBjb25zdDsKLSAgICBDb2xvckNvbXBvbmVudHM8ZmxvYXQs
IDQ+IHRvQ29sb3JDb21wb25lbnRzSW5Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSkg
Y29uc3Q7CisgICAgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiB0b0NvbG9yQ29tcG9uZW50c0lu
Q29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKSBjb25zdDsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQs
IDQ+PiBjb2xvclNwYWNlQW5kQ29tcG9uZW50cygpIGNvbnN0OwogCkBAIC0yNjcsNiArMjY4LDcg
QEAgYm9vbCBvdXRPZkxpbmVDb21wb25lbnRzc0VxdWFsSWdub3JpbmdTZQogCiAjaWYgVVNFKENH
KQogV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJik7
CitXRUJDT1JFX0VYUE9SVCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IHBsYXRmb3JtQ29udmVy
dENvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+LCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKICNlbmRpZgogCiBXRUJDT1JFX0VYUE9SVCBX
VEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgQ29sb3Im
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JDb252ZXJzaW9uLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NyArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbG9yQ29udmVyc2lv
bi5oIgogCisjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJDb2xvclNwYWNlLmgiCisjaW5j
bHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzE4LDE4ICszMjAsMjEgQEAgQ29sb3JDb21w
b25lbnRzPGZsb2F0LCA0PiBjb252ZXJDb2xvckNvbQogICAgIH0pOwogfQogCi1Db2xvckNvbXBv
bmVudHM8ZmxvYXQsIDQ+IGNvbnZlckNvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlIGlucHV0Q29s
b3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBpbnB1dENvbG9yQ29tcG9uZW50cywg
RGVzdGluYXRpb25Db2xvclNwYWNlIG91dHB1dENvbG9yU3BhY2UpCitDb2xvckNvbXBvbmVudHM8
ZmxvYXQsIDQ+IGNvbnZlckNvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlIGlucHV0Q29sb3JTcGFj
ZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBpbnB1dENvbG9yQ29tcG9uZW50cywgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBvdXRwdXRDb2xvclNwYWNlKQogeworI2lmIFVTRShDRykK
KyAgICByZXR1cm4gcGxhdGZvcm1Db252ZXJ0Q29sb3JDb21wb25lbnRzKGlucHV0Q29sb3JTcGFj
ZSwgaW5wdXRDb2xvckNvbXBvbmVudHMsIG91dHB1dENvbG9yU3BhY2UpOworI2Vsc2UKICAgICBy
ZXR1cm4gY2FsbFdpdGhDb2xvclR5cGUoaW5wdXRDb2xvckNvbXBvbmVudHMsIGlucHV0Q29sb3JT
cGFjZSwgW291dHB1dENvbG9yU3BhY2VdIChjb25zdCBhdXRvJiBpbnB1dENvbG9yKSB7Ci0gICAg
ICAgIHN3aXRjaCAob3V0cHV0Q29sb3JTcGFjZSkgewotICAgICAgICBjYXNlIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQjoKKyAgICAgICAgc3dpdGNoIChvdXRwdXRDb2xvclNwYWNlLnBsYXRm
b3JtQ29sb3JTcGFjZSgpKSB7CisgICAgICAgIGNhc2UgUGxhdGZvcm1Db2xvclNwYWNlOjpOYW1l
OjpTUkdCOgogICAgICAgICAgICAgcmV0dXJuIGFzQ29sb3JDb21wb25lbnRzKGNvbnZlcnRDb2xv
cjxTUkdCQTxmbG9hdD4+KGlucHV0Q29sb3IpKTsKICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09M
T1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpMaW5lYXJTUkdCOgotICAgICAgICAgICAgcmV0dXJuIGFzQ29sb3JDb21wb25lbnRzKGNvbnZl
cnRDb2xvcjxMaW5lYXJTUkdCQTxmbG9hdD4+KGlucHV0Q29sb3IpKTsKKyAgICAgICAgY2FzZSBQ
bGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU6OkxpbmVhclNSR0I6CisgICAgICAgICAgICByZXR1cm4g
YXNDb2xvckNvbXBvbmVudHMoY29udmVydENvbG9yPExpbmVhclNSR0I8ZmxvYXQ+PihpbnB1dENv
bG9yKSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExB
WV9QMykKLSAgICAgICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMzoKKyAg
ICAgICAgY2FzZSBQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU6OkRpc3BsYXlQMzoKICAgICAgICAg
ICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhjb252ZXJ0Q29sb3I8RGlzcGxheVAzPGZsb2F0
Pj4oaW5wdXRDb2xvcikpOwogI2VuZGlmCiAgICAgICAgIH0KQEAgLTMzNyw2ICszNDIsNyBAQCBD
b2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbnZlckNvbG9yQ29tCiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gYXNDb2xvckNvbXBvbmVudHMoY29udmVydENv
bG9yPFNSR0JBPGZsb2F0Pj4oaW5wdXRDb2xvcikpOwogICAgIH0pOworI2VuZGlmCiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yQ29udmVyc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtMjksMTUgKzI5LDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
RGVzdGluYXRpb25Db2xvclNwYWNlOworCiBlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90
OwotZW51bSBjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgOiB1aW50OF90OwogCiAvLyBDb252
ZXJzaW9uIGZ1bmN0aW9uIGZvciB0eXBlZCBjb2xvcnMuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPdXRw
dXQsIHR5cGVuYW1lIElucHV0PiBPdXRwdXQgY29udmVydENvbG9yKGNvbnN0IElucHV0JiBjb2xv
cik7CiAKIC8vIENvbnZlcnNpb24gZnVuY3Rpb25zIGZvciByYXcgY29sb3IgY29tcG9uZW50cyB3
aXRoIGFzc29jaWF0ZWQgY29sb3Igc3BhY2VzLgogQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBj
b252ZXJDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1dENvbG9yU3BhY2UsIENvbG9yQ29t
cG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVudHMsIENvbG9yU3BhY2Ugb3V0cHV0
Q29sb3JTcGFjZSk7Ci1Db2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbnZlckNvbG9yQ29tcG9u
ZW50cyhDb2xvclNwYWNlIGlucHV0Q29sb3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0
PiBpbnB1dENvbG9yQ29tcG9uZW50cywgRGVzdGluYXRpb25Db2xvclNwYWNlIG91dHB1dENvbG9y
U3BhY2UpOworQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb252ZXJDb2xvckNvbXBvbmVudHMo
Q29sb3JTcGFjZSBpbnB1dENvbG9yU3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gaW5w
dXRDb2xvckNvbXBvbmVudHMsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgb3V0cHV0Q29s
b3JTcGFjZSk7CiAKIAogLy8gQWxsIGNvbG9yIHR5cGVzLCBvdGhlciB0aGFuIFhZWkEgb3IgdGhv
c2UgaW5oZXJpdGluZyBmcm9tIFJHQlR5cGUsIG11c3QgaW1wbGVtZW50CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDI0ICs2NCw0IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIEMKICAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNl
KQotewotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNhc2UgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCOgotICAgICAgICB0cyA8PCAic1JHQiI7Ci0gICAgICAgIGJyZWFrOwotI2lm
IEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICBjYXNlIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQjoKLSAgICAgICAgdHMgPDwgIkxpbmVhclNS
R0IiOwotICAgICAgICBicmVhazsKLSNlbmRpZgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xP
Ul9TUEFDRV9ESVNQTEFZX1AzKQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNw
bGF5UDM6Ci0gICAgICAgIHRzIDw8ICJEaXNwbGF5UDMiOwotICAgICAgICBicmVhazsKLSNlbmRp
ZgotICAgIH0KLSAgICByZXR1cm4gdHM7Ci19Ci0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMjgsMTAgKzI4LDcgQEAKICNpbmNsdWRlICJDb2xvclR5cGVzLmgiCiAjaW5jbHVkZSA8
ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgotCi1uYW1lc3BhY2UgV1RG
IHsKLWNsYXNzIFRleHRTdHJlYW07Ci19CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NywxOCArNDQsNyBAQCBlbnVtIGNsYXNzIENvbG9yU3Bh
Y2UgOiB1aW50OF90IHsKICAgICBYWVpfRDUwLAogfTsKIAotZW51bSBjbGFzcyBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgOiB1aW50OF90IHsKLSAgICBTUkdCCi0jaWYgRU5BQkxFKERFU1RJTkFUSU9O
X0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQotICAgICwgTGluZWFyU1JHQgotI2VuZGlmCi0jaWYg
RU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCi0gICAgLCBEaXNwbGF5
UDMKLSNlbmRpZgotfTsKLQotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFdURjo6VGV4dFN0cmVhbSYsIENvbG9yU3BhY2UpOwotV0VCQ09SRV9FWFBPUlQgV1RGOjpU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSk7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
LCBDb2xvclNwYWNlKTsKIAogCiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IENvbG9yU3BhY2VN
YXBwaW5nOwpAQCAtMTAyLDI1ICs4OCw2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IEZ1bmN0b3I+IGMKICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+
KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8U1JHQkE8VD4+KGNvbXBvbmVudHMpKTsKIH0K
IAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRnVuY3Rvcj4gY29uc3RleHByIGRlY2x0
eXBlKGF1dG8pIGNhbGxXaXRoQ29sb3JUeXBlKGNvbnN0IENvbG9yQ29tcG9uZW50czxULCA0PiYg
Y29tcG9uZW50cywgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIEZ1bmN0b3ImJiBm
dW5jdG9yKQotewotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNhc2UgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCOgotICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3
YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8U1JHQkE8VD4+KGNvbXBv
bmVudHMpKTsKLSNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0Ip
Ci0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0I6Ci0gICAgICAgIHJl
dHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIG1ha2VGcm9t
Q29tcG9uZW50czxMaW5lYXJTUkdCQTxUPj4oY29tcG9uZW50cykpOwotI2VuZGlmCi0jaWYgRU5B
QkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCi0gICAgY2FzZSBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMzoKLSAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0
ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFrZUZyb21Db21wb25lbnRzPERpc3BsYXlQ
MzxUPj4oY29tcG9uZW50cykpOwotI2VuZGlmCi0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5j
dG9yKSwgbWFrZUZyb21Db21wb25lbnRzPFNSR0JBPFQ+Pihjb21wb25lbnRzKSk7Ci19Ci0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkBAIC0xNDEsMTcgKzEwOCw0IEBAIHRlbXBsYXRlPD4g
c3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q28KICAgICA+OwogfTsKIAotdGVtcGxhdGU8PiBz
dHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IHsKLSAgICB1
c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAotICAgICAgICBXZWJDb3JlOjpEZXN0aW5hdGlvbkNv
bG9yU3BhY2UsCi0gICAgICAgIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQgot
I2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICAgICAg
LCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IKLSNlbmRpZgotI2lm
IEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQotICAgICAgICAsIFdl
YkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxheVAzCi0jZW5kaWYKLSAgICA+Owot
fTsKLQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJ
bWFnZUJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw3ICszNCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPgogY2xh
c3MgQ29uY3JldGVJbWFnZUJ1ZmZlciA6IHB1YmxpYyBJbWFnZUJ1ZmZlciB7CiBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgSW1hZ2VCdWZmZXJUeXBlID0gQ29uY3JldGVJbWFnZUJ1ZmZl
ciwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXJU
eXBlPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1h
dCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRz
KQorICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXJUeXBlPiBjcmVhdGUoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5k
b3cqIGhvc3RXaW5kb3csIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKICAgICB7CiAgICAgICAg
IGF1dG8gcGFyYW1ldGVycyA9IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyB7IHNpemUs
IHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQgfTsKICAgICAgICAgYXV0
byBiYWNrZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShwYXJhbWV0ZXJzLCBob3N0V2luZG93KTsK
QEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEltYWdlQnVm
ZmVyVHlwZSA9IENvbmNyZXRlSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KICAg
ICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBBcmd1bWVudHMmJi4uLiBhcmd1
bWVudHMpCiAgICAgewotICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBJbWFnZUJ1ZmZlckJhY2tl
bmQ6OlBhcmFtZXRlcnMgeyBzaXplLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBp
eGVsRm9ybWF0OjpCR1JBOCB9OworICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBJbWFnZUJ1ZmZl
ckJhY2tlbmQ6OlBhcmFtZXRlcnMgeyBzaXplLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4IH07CiAgICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tl
bmRUeXBlOjpjcmVhdGUocGFyYW1ldGVycywgY29udGV4dCk7CiAgICAgICAgIGlmICghYmFja2Vu
ZCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTk1LDcgKzE5NSw3IEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgfQogICAgIH0KIAotICAgIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShE
ZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNl
IGRlc3RDb2xvclNwYWNlKSBvdmVycmlkZQorICAgIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHNyY0NvbG9yU3BhY2UsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgZGVzdENvbG9yU3BhY2UpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBp
ZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKICAgICAgICAgICAg
IGZsdXNoRHJhd2luZ0NvbnRleHQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3Nz
ZmFkZUdlbmVyYXRlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBA
IEltYWdlRHJhd1Jlc3VsdCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZToKIAogdm9pZCBDcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFz
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKIHsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShz
aXplKCksIGNvbnRleHQucmVuZGVyaW5nTW9kZSgpLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBjb250ZXh0LnJlbmRlcmluZ01vZGUoKSwgMSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFp
bWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHAJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGlu
YXRpb25Db2xvclNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExNCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9y
U3BhY2UuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KKworI2lmIFVTRShD
RykKKyNpbmNsdWRlICJDb2xvclNwYWNlQ0cuaCIKKyNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVH
cmFwaGljc1NQSS5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRGVzdGluYXRp
b25Db2xvclNwYWNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpCit7CisjaWYgVVNFKENH
KQorICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2Uoc1JHQkNvbG9yU3BhY2VSZWYoKSk7
CisjZWxzZQorICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UoVHlwZTo6U1JHQik7Cisj
ZW5kaWYKK30KKworI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JH
QikKK0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNS
R0IoKQoreworI2lmIFVTRShDRykKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlKGxp
bmVhclNSR0JDb2xvclNwYWNlUmVmKCkpOworI2Vsc2UKKyAgICByZXR1cm4gRGVzdGluYXRpb25D
b2xvclNwYWNlKFR5cGU6OkxpbmVhclNSR0IpOworI2VuZGlmCit9CisjZW5kaWYKKworI2lmIEVO
QUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQorRGVzdGluYXRpb25Db2xv
clNwYWNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxheVAzKCkKK3sKKyNpZiBVU0UoQ0cp
CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZShkaXNwbGF5UDNDb2xvclNwYWNlUmVm
KCkpOworI2Vsc2UKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlKFR5cGU6OkRpc3Bs
YXlQMyk7CisjZW5kaWYKK30KKyNlbmRpZgorCitEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZShQbGF0Zm9ybUNvbG9yU3BhY2UgcGxhdGZvcm1Db2xvclNwYWNlKQor
ICAgIDogbV9wbGF0Zm9ybUNvbG9yU3BhY2UgeyBXVEZNb3ZlKHBsYXRmb3JtQ29sb3JTcGFjZSkg
fQoreworI2lmIFVTRShDRykKKyAgICBBU1NFUlQobV9wbGF0Zm9ybUNvbG9yU3BhY2UpOworI2Vu
ZGlmCit9CisKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGEs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgYikKK3sKKyAgICBpZiAoYS5wbGF0Zm9ybUNv
bG9yU3BhY2UoKSA9PSBiLnBsYXRmb3JtQ29sb3JTcGFjZSgpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKworI2lmIFVTRShDRykKKyAgICByZXR1cm4gQ0dDb2xvclNwYWNlRXF1YWxUb0NvbG9yU3Bh
Y2UoYS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwgYi5wbGF0Zm9ybUNvbG9yU3BhY2UoKSk7CisjZWxz
ZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCitib29sIG9wZXJhdG9yIT0oY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBhLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGIp
Cit7CisgICAgcmV0dXJuICEoYSA9PSBiKTsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQor
eworICAgIGlmIChjb2xvclNwYWNlID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKQor
ICAgICAgICB0cyA8PCAic1JHQiI7CisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNF
X0xJTkVBUl9TUkdCKQorICAgIGVsc2UgaWYgKGNvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xv
clNwYWNlOjpMaW5lYXJTUkdCKCkpCisgICAgICAgIHRzIDw8ICJMaW5lYXJTUkdCIjsKKyNlbmRp
ZgorI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQorICAgIGVs
c2UgaWYgKGNvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDMoKSkK
KyAgICAgICAgdHMgPDwgIkRpc3BsYXlQMyI7CisjZW5kaWYKKyNpZiBVU0UoQ0cpCisgICAgZWxz
ZSBpZiAoYXV0byBkZXNjcmlwdGlvbiA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ29weUlDQ1Byb2Zp
bGVEZXNjcmlwdGlvbihjb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpKSkpCisgICAgICAg
IHRzIDw8IFN0cmluZyhkZXNjcmlwdGlvbi5nZXQoKSk7CisjZW5kaWYKKworICAgIHJldHVybiB0
czsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGlu
YXRpb25Db2xvclNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiUGxhdGZvcm1Db2xvclNwYWNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgRGVzdGluYXRpb25Db2xvclNwYWNlIFNSR0IoKTsKKyNpZiBFTkFCTEUoREVTVElO
QVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBMaW5lYXJTUkdCKCk7CisjZW5kaWYKKyNpZiBFTkFCTEUo
REVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExBWV9QMykKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgRGVzdGluYXRpb25Db2xvclNwYWNlIERpc3BsYXlQMygpOworI2VuZGlmCisKKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UoUGxhdGZvcm1Db2xv
clNwYWNlKTsKKyAgICBQbGF0Zm9ybUNvbG9yU3BhY2VWYWx1ZSBwbGF0Zm9ybUNvbG9yU3BhY2Uo
KSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtQ29sb3JTcGFjZS5nZXQoKTsgfQorCisgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U+IGRlY29kZShEZWNvZGVyJik7CisKK3ByaXZhdGU6CisgICAgUGxhdGZvcm1Db2xvclNwYWNl
IG1fcGxhdGZvcm1Db2xvclNwYWNlOworfTsKKworV0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpOworCitXRUJDT1JFX0VY
UE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmKTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29k
ZXIgPDwgbV9wbGF0Zm9ybUNvbG9yU3BhY2U7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+
IE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxQbGF0Zm9ybUNvbG9yU3Bh
Y2U+IHBsYXRmb3JtQ29sb3JTcGFjZTsKKyAgICBkZWNvZGVyID4+IHBsYXRmb3JtQ29sb3JTcGFj
ZTsKKyAgICBpZiAoIXBsYXRmb3JtQ29sb3JTcGFjZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgeyBXVEZNb3ZlKCpwbGF0
Zm9ybUNvbG9yU3BhY2UpIH07Cit9CisKK30KKwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhd1Bh
dHRlcm4oR3JhcGhpY3MKICAgICB1bnNpZ25lZCBnZW5lcmF0b3JIYXNoID0gbV9ncmFkaWVudC0+
aGFzaCgpOwogCiAgICAgaWYgKCFtX2NhY2hlZEltYWdlIHx8IG1fY2FjaGVkR2VuZXJhdG9ySGFz
aCAhPSBnZW5lcmF0b3JIYXNoIHx8IG1fY2FjaGVkQWRqdXN0ZWRTaXplICE9IGFkanVzdGVkU2l6
ZSB8fCAhYXJlRXNzZW50aWFsbHlFcXVhbChkZXN0Q29udGV4dC5zY2FsZUZhY3RvcigpLCBtX2Nh
Y2hlZFNjYWxlRmFjdG9yKSkgewotICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoYWRqdXN0ZWRTaXplLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IsIGRlc3RDb250ZXh0KTsKKyAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGFkanVzdGVkU2l6ZSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCksIGRlc3RDb250ZXh0KTsKICAgICAgICAgaWYgKCFpbWFnZUJ1
ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCShyZXZpc2lvbiAyNzc5
MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04ODMsNyArODgzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmNsaXBPdXRSb3VuZGVkUmVjdAogICAgIGNsaXBPdXQocGF0aCk7CiB9CiAKLUdyYXBoaWNz
Q29udGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6Y2xp
cFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0
aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYp
PiYmIGRyYXdpbmdGdW5jdGlvbikKK0dyYXBoaWNzQ29udGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1h
bmRzUmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JT
cGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBkcmF3aW5nRnVuY3Rpb24p
CiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIENsaXBUb0Ry
YXdpbmdDb21tYW5kc1Jlc3VsdDo6U3VjY2VzczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1
ZGUgIkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJEYXNoQXJyYXkuaCIKKyNpbmNsdWRlICJEZXN0
aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJG
b250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKQEAgLTQxMCw3ICs0MTAs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNv
bnN0IEZsb2F0UmVjdCYpOwogCiAgICAgZW51bSBjbGFzcyBDbGlwVG9EcmF3aW5nQ29tbWFuZHNS
ZXN1bHQgOiBib29sIHsgU3VjY2VzcywgRmFpbGVkVG9DcmVhdGVJbWFnZUJ1ZmZlciB9OwotICAg
IENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2
b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKTsKKyAgICBDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1
bHQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0
Jik+JiYpOwogICAgIAogICAgIEludFJlY3QgY2xpcEJvdW5kcygpIGNvbnN0OwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0SW1wbC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsx
MDQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBX
aW5kUnVsZSkgPSAwOwogICAgIHZpcnR1YWwgSW50UmVjdCBjbGlwQm91bmRzKCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0
UmVjdCYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgRnVuY3Rpb248
dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBkcmF3aW5nRnVuY3Rpb24pID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3ND
b250ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKSA9IDA7CiAjaWYgRU5BQkxFKFZJREVPKQogICAg
IHZpcnR1YWwgdm9pZCBwYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGNhblBhaW50RnJhbWVG
b3JNZWRpYShjb25zdCBNZWRpYVBsYXllciYpIGNvbnN0ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBz
dGF0aWMgY29uc3QgZmxvYXQgTWF4Q2xhbXBlZExlbmd0aCA9IDQwOTY7CiBzdGF0aWMgY29uc3Qg
ZmxvYXQgTWF4Q2xhbXBlZEFyZWEgPSBNYXhDbGFtcGVkTGVuZ3RoICogTWF4Q2xhbXBlZExlbmd0
aDsKIAotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5
TGlzdCBzaG91bGRVc2VEaXNwbGF5TGlzdCwgUmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhl
bEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKK1JlZlB0
cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUs
IFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3Qgc2hvdWxk
VXNlRGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQogewogICAgIFJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7CiAgICAgCkBAIC01OSw3ICs1OSw3IEBAIFJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZSgKICAgICByZXR1cm4gaW1hZ2VC
dWZmZXI7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjb25z
dCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3Jt
YXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCitSZWZQdHI8SW1h
Z2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5k
ZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwg
Y29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+
IGltYWdlQnVmZmVyOwogICAgIApAQCAtOTUsNyArOTUsNyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+
IEltYWdlQnVmZmVyOjpjcmVhdGVDCiAgICAgcmV0dXJuIGltYWdlQnVmZmVyOwogfQogCi1SZWZQ
dHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCkKIHsKICAgICBpZiAoc2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMTExLDcgKzExMSw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6
OmNyZWF0ZUMKICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZl
cj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBz
aXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNw
YWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+
IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNv
bG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICByZXR1cm4g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBjb250ZXh0LnJlbmRlcmluZ01vZGUoKSwgcmVzb2x1
dGlvblNjYWxlLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogfQpAQCAtMTY3LDcg
KzE2Nyw3IEBAIEludFNpemUgSW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZmZXJTaXoKICAgICBy
ZXR1cm4gZXhwYW5kZWRJbnRTaXplKHNpemUgKiBjb250ZXh0LnNjYWxlRmFjdG9yKCkpOwogfQog
Ci1SZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjb3B5UmVjdFRvQnVmZmVyKGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZm
ZXI6OmNvcHlSZWN0VG9CdWZmZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkKIHsKICAgICBpZiAocmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5o
CShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMyArNDUsMTMgQEAgc3RydWN0IEl0
ZW1CdWZmZXJIYW5kbGU7CiBjbGFzcyBJbWFnZUJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxJbWFnZUJ1ZmZlcj4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbWFnZUJ1ZmZlcj4g
ewogcHVibGljOgogICAgIC8vIFdpbGwgcmV0dXJuIGEgbnVsbCBwb2ludGVyIG9uIGFsbG9jYXRp
b24gZmFpbHVyZS4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVy
PiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxh
eUxpc3QsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRp
b25Db2xvclNwYWNlLCBQaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29u
c3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxw
dHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0
ZShjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdCwg
UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29u
c3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyog
PSBudWxscHRyKTsKIAogICAgIC8vIENyZWF0ZSBhbiBpbWFnZSBidWZmZXIgY29tcGF0aWJsZSB3
aXRoIHRoZSBjb250ZXh0LCB3aXRoIHN1aXRhYmxlIHJlc29sdXRpb24gZm9yIGRyYXdpbmcgaW50
byB0aGUgYnVmZmVyIGFuZCB0aGVuIGludG8gdGhpcyBjb250ZXh0LgogICAgIHN0YXRpYyBSZWZQ
dHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4g
Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VC
dWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYpOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZm
ZXIoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgY29uc3Qg
R3JhcGhpY3NDb250ZXh0Jik7CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwog
CiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIHdoZW4gY2xhbXBpbmcgdGhlIEltYWdl
QnVmZmVyIHdoaWNoIGlzIGNyZWF0ZWQgZm9yIGZpbHRlciwgbWFza2VyIG9yIGNsaXBwZXIuCiAg
ICAgc3RhdGljIGJvb2wgc2l6ZU5lZWRzQ2xhbXBpbmcoY29uc3QgRmxvYXRTaXplJik7CkBAIC0x
MDcsNyArMTA3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlPiBjb3B5SW1h
Z2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1dGlv
biA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0ID0gMDsKIAogICAgIC8vIENyZWF0ZSBh
biBpbWFnZSBidWZmZXIgY29tcGF0aWJsZSB3aXRoIHRoZSBjb250ZXh0IGFuZCBjb3B5IHJlY3Qg
ZnJvbSB0aGlzIGJ1ZmZlciBpbnRvIHRoaXMgbmV3IG9uZS4KLSAgICBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IGNvcHlSZWN0VG9CdWZmZXIoY29uc3QgRmxvYXRSZWN0JiwgRGVzdGluYXRpb25Db2xvclNw
YWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNv
cHlSZWN0VG9CdWZmZXIoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwgLTEsIC0xKSwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmID0geyB9KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsKQEAgLTEyMCw3ICsxMjAsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGNsaXBUb01hc2soR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGNvbnZlcnRUb0x1bWluYW5j
ZU1hc2soKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGlu
YXRpb25Db2xvclNwYWNlIHNyY0NvbG9yU3BhY2UsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBkc3RD
b2xvclNwYWNlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBzcmNDb2xvclNwYWNlLCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmIGRzdENvbG9yU3BhY2UpID0gMDsKIAogICAgIHZpcnR1YWwgU3RyaW5nIHRv
RGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkg
PSBXVEY6Om51bGxvcHQsIFByZXNlcnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6
Tm8pIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5ID0gV1RGOjpudWxsb3B0
KSBjb25zdCA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlckJhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDggQEAgSW1hZ2VCdWZmZXJCYWNrZW5kOjpJbWFnZUJ1
ZmZlckJhY2tlbmQoYwogewogfQogCitJbWFnZUJ1ZmZlckJhY2tlbmQ6On5JbWFnZUJ1ZmZlckJh
Y2tlbmQoKSA9IGRlZmF1bHQ7CisKIFJlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJCYWNr
ZW5kOjpzaW5rSW50b05hdGl2ZUltYWdlKCkKIHsKICAgICByZXR1cm4gY29weU5hdGl2ZUltYWdl
KERvbnRDb3B5QmFja2luZ1N0b3JlKTsKQEAgLTExNCwxNSArMTE2LDE3IEBAIE9wdGlvbmFsPFBp
eGVsQnVmZmVyPiBJbWFnZUJ1ZmZlckJhY2tlbmQKICAgICBpZiAoZGVzdGluYXRpb25SZWN0LnNp
emUoKSAhPSBzb3VyY2VSZWN0U2NhbGVkLnNpemUoKSkKICAgICAgICAgcGl4ZWxCdWZmZXItPmRh
dGEoKS56ZXJvRmlsbCgpOwogCi0gICAgQ29uc3RQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IHNv
dXJjZTsKLSAgICBzb3VyY2UuZm9ybWF0ID0geyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVt
dWx0aXBsaWVkLCBwaXhlbEZvcm1hdCgpLCBjb2xvclNwYWNlKCkgfTsKLSAgICBzb3VyY2UuYnl0
ZXNQZXJSb3cgPSBieXRlc1BlclJvdygpOwotICAgIHNvdXJjZS5yb3dzID0gcmVpbnRlcnByZXRf
Y2FzdDx1aW50OF90Kj4oZGF0YSkgKyBzb3VyY2VSZWN0Q2xpcHBlZC55KCkgKiBzb3VyY2UuYnl0
ZXNQZXJSb3cgKyBzb3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0OworICAgIENvbnN0UGl4ZWxCdWZm
ZXJDb252ZXJzaW9uVmlldyBzb3VyY2UgeworICAgICAgICB7IEFscGhhUHJlbXVsdGlwbGljYXRp
b246OlByZW11bHRpcGxpZWQsIHBpeGVsRm9ybWF0KCksIGNvbG9yU3BhY2UoKSB9LAorICAgICAg
ICBieXRlc1BlclJvdygpLAorICAgICAgICByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRh
KSArIHNvdXJjZVJlY3RDbGlwcGVkLnkoKSAqIHNvdXJjZS5ieXRlc1BlclJvdyArIHNvdXJjZVJl
Y3RDbGlwcGVkLngoKSAqIDQKKyAgICB9OwogICAgIAotICAgIFBpeGVsQnVmZmVyQ29udmVyc2lv
blZpZXcgZGVzdGluYXRpb247Ci0gICAgZGVzdGluYXRpb24uZm9ybWF0ID0gZGVzdGluYXRpb25G
b3JtYXQ7Ci0gICAgZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgPSA0ICogc291cmNlUmVjdFNjYWxl
ZC53aWR0aCgpOwotICAgIGRlc3RpbmF0aW9uLnJvd3MgPSBwaXhlbEJ1ZmZlci0+ZGF0YSgpLmRh
dGEoKSArIGRlc3RpbmF0aW9uUmVjdC55KCkgKiBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyArIGRl
c3RpbmF0aW9uUmVjdC54KCkgKiA0OworICAgIFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgZGVz
dGluYXRpb24geworICAgICAgICBkZXN0aW5hdGlvbkZvcm1hdCwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KDQgKiBzb3VyY2VSZWN0U2NhbGVkLndpZHRoKCkpLAorICAgICAgICBwaXhl
bEJ1ZmZlci0+ZGF0YSgpLmRhdGEoKSArIGRlc3RpbmF0aW9uUmVjdC55KCkgKiBkZXN0aW5hdGlv
bi5ieXRlc1BlclJvdyArIGRlc3RpbmF0aW9uUmVjdC54KCkgKiA0CisgICAgfTsKIAogICAgIGNv
bnZlcnRJbWFnZVBpeGVscyhzb3VyY2UsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvblJlY3Quc2l6
ZSgpKTsKIApAQCAtMTQ3LDE1ICsxNTEsMTcgQEAgdm9pZCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnB1
dFBpeGVsQnVmZmVyKAogICAgIGRlc3RpbmF0aW9uUmVjdC5pbnRlcnNlY3QoYmFja2VuZFJlY3Qo
KSk7CiAgICAgc291cmNlUmVjdENsaXBwZWQuc2V0U2l6ZShkZXN0aW5hdGlvblJlY3Quc2l6ZSgp
KTsKIAotICAgIENvbnN0UGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBzb3VyY2U7Ci0gICAgc291
cmNlLmZvcm1hdCA9IHNvdXJjZVBpeGVsQnVmZmVyLmZvcm1hdCgpOwotICAgIHNvdXJjZS5ieXRl
c1BlclJvdyA9IDQgKiBzb3VyY2VQaXhlbEJ1ZmZlci5zaXplKCkud2lkdGgoKTsKLSAgICBzb3Vy
Y2Uucm93cyA9IHNvdXJjZVBpeGVsQnVmZmVyLmRhdGEoKS5kYXRhKCkgKyBzb3VyY2VSZWN0Q2xp
cHBlZC55KCkgKiBzb3VyY2UuYnl0ZXNQZXJSb3cgKyBzb3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0
OwotCi0gICAgUGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBkZXN0aW5hdGlvbjsKLSAgICBkZXN0
aW5hdGlvbi5mb3JtYXQgPSB7IGRlc3RpbmF0aW9uQWxwaGFGb3JtYXQsIHBpeGVsRm9ybWF0KCks
IGNvbG9yU3BhY2UoKSB9OwotICAgIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ID0gYnl0ZXNQZXJS
b3coKTsKLSAgICBkZXN0aW5hdGlvbi5yb3dzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4o
ZGF0YSkgKyBkZXN0aW5hdGlvblJlY3QueSgpICogZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgKyBk
ZXN0aW5hdGlvblJlY3QueCgpICogNDsKKyAgICBDb25zdFBpeGVsQnVmZmVyQ29udmVyc2lvblZp
ZXcgc291cmNlIHsKKyAgICAgICAgc291cmNlUGl4ZWxCdWZmZXIuZm9ybWF0KCksCisgICAgICAg
IHN0YXRpY19jYXN0PHVuc2lnbmVkPig0ICogc291cmNlUGl4ZWxCdWZmZXIuc2l6ZSgpLndpZHRo
KCkpLAorICAgICAgICBzb3VyY2VQaXhlbEJ1ZmZlci5kYXRhKCkuZGF0YSgpICsgc291cmNlUmVj
dENsaXBwZWQueSgpICogc291cmNlLmJ5dGVzUGVyUm93ICsgc291cmNlUmVjdENsaXBwZWQueCgp
ICogNAorICAgIH07CisKKyAgICBQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IGRlc3RpbmF0aW9u
IHsKKyAgICAgICAgeyBkZXN0aW5hdGlvbkFscGhhRm9ybWF0LCBwaXhlbEZvcm1hdCgpLCBjb2xv
clNwYWNlKCkgfSwKKyAgICAgICAgYnl0ZXNQZXJSb3coKSwKKyAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDx1aW50OF90Kj4oZGF0YSkgKyBkZXN0aW5hdGlvblJlY3QueSgpICogZGVzdGluYXRpb24u
Ynl0ZXNQZXJSb3cgKyBkZXN0aW5hdGlvblJlY3QueCgpICogNAorICAgIH07CiAKICAgICBjb252
ZXJ0SW1hZ2VQaXhlbHMoc291cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb25SZWN0LnNpemUo
KSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ckJhY2tlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJDb2xvclNwYWNl
LmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiRmxvYXRS
ZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCiAjaW5jbHVkZSAiSW1hZ2VQYWlu
dGluZ09wdGlvbnMuaCIKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAgICAgICBQaXhlbEZv
cm1hdCBwaXhlbEZvcm1hdDsKICAgICB9OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+
SW1hZ2VCdWZmZXJCYWNrZW5kKCkgPSBkZWZhdWx0OworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgfkltYWdlQnVmZmVyQmFja2VuZCgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIElu
dFNpemUgY2FsY3VsYXRlQmFja2VuZFNpemUoY29uc3QgUGFyYW1ldGVycyYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBzaXplX3QgY2FsY3VsYXRlTWVtb3J5Q29zdChjb25zdCBJbnRTaXpl
JiBiYWNrZW5kU2l6ZSwgdW5zaWduZWQgYnl0ZXNQZXJSb3cpOwpAQCAtMTAyLDcgKzEwMiw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xpcFRvTWFzayhHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmKSB7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29udmVydFRv
THVtaW5hbmNlTWFzaygpOwotICAgIHZpcnR1YWwgdm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNlKERl
c3RpbmF0aW9uQ29sb3JTcGFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKSB7IH0KIAogICAgIHZpcnR1YWwgU3RyaW5n
IHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxp
dHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPHVp
bnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1
YWxpdHkpIGNvbnN0ID0gMDsKQEAgLTE0MCw3ICsxNDAsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBJ
bnRTaXplIGxvZ2ljYWxTaXplKCkgY29uc3QgeyByZXR1cm4gSW50U2l6ZShtX3BhcmFtZXRlcnMu
bG9naWNhbFNpemUpOyB9CiAgICAgZmxvYXQgcmVzb2x1dGlvblNjYWxlKCkgY29uc3QgeyByZXR1
cm4gbV9wYXJhbWV0ZXJzLnJlc29sdXRpb25TY2FsZTsgfQotICAgIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmNvbG9yU3BhY2U7
IH0KKyAgICBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UoKSBjb25zdCB7
IHJldHVybiBtX3BhcmFtZXRlcnMuY29sb3JTcGFjZTsgfQogICAgIFBpeGVsRm9ybWF0IHBpeGVs
Rm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLnBpeGVsRm9ybWF0OyB9CiAKICAg
ICBJbnRSZWN0IGxvZ2ljYWxSZWN0KCkgY29uc3QgeyByZXR1cm4gSW50UmVjdChJbnRQb2ludDo6
emVybygpLCBsb2dpY2FsU2l6ZSgpKTsgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BpeGVsQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMjYsNyArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBbHBoYVByZW11bHRp
cGxpY2F0aW9uLmgiCi0jaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgIkRlc3RpbmF0
aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJQaXhlbEJ1
ZmZlckZvcm1hdC5oIgogI2luY2x1ZGUgIlBpeGVsRm9ybWF0LmgiCkBAIC04NywxOSArODcsMjEg
QEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBQaXhlbEJ1ZmZlcgogCiB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gUGl4ZWxCdWZmZXI6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdDsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGZvcm1hdCkpCisgICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXJGb3Jt
YXQ+IGZvcm1hdDsKKyAgICBkZWNvZGVyID4+IGZvcm1hdDsKKyAgICBpZiAoIWZvcm1hdCkKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIC8vIEZJWE1FOiBTdXBwb3J0IG5vbi04
IGJpdCBmb3JtYXRzLgotICAgIGlmICghKGZvcm1hdC5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1h
dDo6UkdCQTggfHwgZm9ybWF0LnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCkpCisg
ICAgaWYgKCEoZm9ybWF0LT5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6UkdCQTggfHwgZm9y
bWF0LT5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpKQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogCi0gICAgSW50U2l6ZSBzaXplOwotICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoc2l6ZSkpCisgICAgT3B0aW9uYWw8SW50U2l6ZT4gc2l6ZTsKKyAgICBkZWNvZGVyID4+IHNp
emU7CisgICAgaWYgKCFzaXplKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAg
YXV0byBjb21wdXRlZEJ1ZmZlclNpemUgPSBQaXhlbEJ1ZmZlcjo6Y29tcHV0ZUJ1ZmZlclNpemUo
Zm9ybWF0LCBzaXplKTsKKyAgICBhdXRvIGNvbXB1dGVkQnVmZmVyU2l6ZSA9IFBpeGVsQnVmZmVy
Ojpjb21wdXRlQnVmZmVyU2l6ZSgqZm9ybWF0LCAqc2l6ZSk7CiAgICAgaWYgKGNvbXB1dGVkQnVm
ZmVyU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAK
QEAgLTEwNyw3ICsxMDksNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxQaXhl
bEJ1CiAgICAgaWYgKCFkZWNvZGVyLnRlbXBsYXRlIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRh
aW48dWludDhfdD4oYnVmZmVyU2l6ZSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAK
LSAgICBhdXRvIHJlc3VsdCA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGVGb3JEZWNvZGluZyhmb3Jt
YXQsIHNpemUsIGJ1ZmZlclNpemUpOworICAgIGF1dG8gcmVzdWx0ID0gUGl4ZWxCdWZmZXI6OnRy
eUNyZWF0ZUZvckRlY29kaW5nKFdURk1vdmUoKmZvcm1hdCksICpzaXplLCBidWZmZXJTaXplKTsK
ICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1
ZmZlckNvbnZlcnNpb24uY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckNvbnZlcnNpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNywxMiArMjcsMTEgQEAKICNpbmNsdWRlICJQaXhlbEJ1ZmZlckNvbnZlcnNpb24uaCIK
IAogI2luY2x1ZGUgIkFscGhhUHJlbXVsdGlwbGljYXRpb24uaCIKLSNpbmNsdWRlICJDb2xvclNw
YWNlLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiSW50
U2l6ZS5oIgogI2luY2x1ZGUgIlBpeGVsRm9ybWF0LmgiCiAKICNpZiBVU0UoQUNDRUxFUkFURSkg
JiYgVVNFKENHKQotI2luY2x1ZGUgIkNvbG9yU3BhY2VDRy5oIgogI2luY2x1ZGUgPEFjY2VsZXJh
dGUvQWNjZWxlcmF0ZS5oPgogI2VuZGlmCiAKQEAgLTcxLDcgKzcwLDcgQEAgc3RhdGljIGlubGlu
ZSB2SW1hZ2VfQ0dJbWFnZUZvcm1hdCBtYWtlVgogCiAgICAgcmVzdWx0LmJpdHNQZXJDb21wb25l
bnQgPSBiaXRzUGVyQ29tcG9uZW50OwogICAgIHJlc3VsdC5iaXRzUGVyUGl4ZWwgPSBiaXRzUGVy
UGl4ZWw7Ci0gICAgcmVzdWx0LmNvbG9yU3BhY2UgPSBjYWNoZWRDR0NvbG9yU3BhY2UoZm9ybWF0
LmNvbG9yU3BhY2UpOworICAgIHJlc3VsdC5jb2xvclNwYWNlID0gZm9ybWF0LmNvbG9yU3BhY2Uu
cGxhdGZvcm1Db2xvclNwYWNlKCk7CiAgICAgcmVzdWx0LmJpdG1hcEluZm8gPSBiaXRtYXBJbmZv
OwogICAgIHJlc3VsdC52ZXJzaW9uID0gMDsKICAgICByZXN1bHQuZGVjb2RlID0gbnVsbHB0cjsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxC
dWZmZXJGb3JtYXQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyAr
MjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBbHBoYVByZW11bHRpcGxpY2F0aW9u
LmgiCi0jaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JT
cGFjZS5oIgogI2luY2x1ZGUgIlBpeGVsRm9ybWF0LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KQEAgLTUxLDE5ICs1MSwyMiBAQCB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIFBpeGVsQnVmZmVyCiAKIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IE9wdGlvbmFsPFBpeGVsQnVmZmVyRm9ybWF0PiBQaXhlbEJ1ZmZlckZvcm1hdDo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYUZv
cm1hdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFscGhhRm9ybWF0KSkKKyAgICBPcHRpb25h
bDxBbHBoYVByZW11bHRpcGxpY2F0aW9uPiBhbHBoYUZvcm1hdDsKKyAgICBkZWNvZGVyID4+IGFs
cGhhRm9ybWF0OworICAgIGlmICghYWxwaGFGb3JtYXQpCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAKLSAgICBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdDsKLSAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBpeGVsRm9ybWF0KSkKKyAgICBPcHRpb25hbDxQaXhlbEZvcm1hdD4gcGl4ZWxGb3Jt
YXQ7CisgICAgZGVjb2RlciA+PiBwaXhlbEZvcm1hdDsKKyAgICBpZiAoIXBpeGVsRm9ybWF0KQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgRGVzdGluYXRpb25Db2xvclNwYWNl
IGNvbG9yU3BhY2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb2xvclNwYWNlKSkKKyAgICBP
cHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CisgICAgZGVjb2RlciA+
PiBjb2xvclNwYWNlOworICAgIGlmICghY29sb3JTcGFjZSkKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKIAotICAgIHJldHVybiB7IHsgYWxwaGFGb3JtYXQsIHBpeGVsRm9ybWF0LCBjb2xv
clNwYWNlIH0gfTsKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmFscGhhRm9ybWF0KSwgV1RGTW92
ZSgqcGl4ZWxGb3JtYXQpLCBXVEZNb3ZlKCpjb2xvclNwYWNlKSB9IH07CiB9CiAKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtQ29sb3JTcGFjZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtQ29s
b3JTcGFjZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtQ29sb3JTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShDRykKKyNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+Cit0eXBlZGVmIHN0cnVjdCBDR0NvbG9yU3BhY2UqIENHQ29sb3JTcGFjZVJl
ZjsKKyNlbHNlCisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KKyNlbmRpZgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKKyNpZiBVU0UoQ0cpCisKK3VzaW5nIFBsYXRmb3JtQ29sb3JTcGFjZSA9
IFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+OwordXNpbmcgUGxhdGZvcm1Db2xvclNwYWNlVmFs
dWUgPSBDR0NvbG9yU3BhY2VSZWY7CisKKyNlbHNlCisKK3N0cnVjdCBQbGF0Zm9ybUNvbG9yU3Bh
Y2UgeworICAgIGVudW0gY2xhc3MgTmFtZSB7CisgICAgICAgIFNSR0IKKyNpZiBFTkFCTEUoREVT
VElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCisgICAgICAgICwgTGluZWFyU1JHQgor
I2VuZGlmCisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCisg
ICAgICAgICwgRGlzcGxheVAzCisjZW5kaWYKKyAgICB9OworICAgIE5hbWUgbmFtZTsKKyAgICBO
YW1lIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorfTsKK3VzaW5nIFBsYXRmb3JtQ29s
b3JTcGFjZVZhbHVlID0gUGxhdGZvcm1Db2xvclNwYWNlOjpOYW1lOworCisjZW5kaWYKKworfQor
CituYW1lc3BhY2UgV1RGIHsKKworI2lmICFVU0UoQ0cpCisKK3RlbXBsYXRlPD4gc3RydWN0IEVu
dW1UcmFpdHM8V2ViQ29yZTo6UGxhdGZvcm1Db2xvclNwYWNlOjpOYW1lPiB7CisgICAgdXNpbmcg
dmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6UGxhdGZvcm1Db2xvclNwYWNl
OjpOYW1lLAorICAgICAgICBXZWJDb3JlOjpQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU6OlNSR0IK
KyNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCisgICAgICAg
ICwgV2ViQ29yZTo6UGxhdGZvcm1Db2xvclNwYWNlOjpOYW1lOjpMaW5lYXJTUkdCCisjZW5kaWYK
KyNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExBWV9QMykKKyAgICAgICAg
LCBXZWJDb3JlOjpQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU6OkRpc3BsYXlQMworI2VuZGlmCisg
ICAgPjsKK307CisKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxl
LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBA
IHN0YXRpYyBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4KICAgICB9CiAKICAgICBJ
bnRTaXplIHNpemUgeyBzdGF0aWNfY2FzdDxpbnQ+KENWUGl4ZWxCdWZmZXJHZXRXaWR0aChwaXhl
bEJ1ZmZlcikpLCBzdGF0aWNfY2FzdDxpbnQ+KENWUGl4ZWxCdWZmZXJHZXRIZWlnaHQocGl4ZWxC
dWZmZXIpKSB9OwotICAgIGF1dG8gaW9TdXJmYWNlID0gIElPU3VyZmFjZTo6Y3JlYXRlKHNpemUs
IHNSR0JDb2xvclNwYWNlUmVmKCksIElPU3VyZmFjZTo6Rm9ybWF0OjpCR1JBKTsKKyAgICBhdXRv
IGlvU3VyZmFjZSA9ICBJT1N1cmZhY2U6OmNyZWF0ZShzaXplLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgSU9TdXJmYWNlOjpGb3JtYXQ6OkJHUkEpOwogCiAgICAgSU9TdXJmYWNlOjpM
b2NrZXIgbG9jaygqaW9TdXJmYWNlKTsKICAgICB2SW1hZ2VfQnVmZmVyIHNyYzsKQEAgLTExMyw3
ICsxMTMsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+IFJlbW90CiAgICAg
ICAgIHN1cmZhY2UgPSBpb1N1cmZhY2UtPnN1cmZhY2UoKTsKICAgICB9CiAKLSAgICByZXR1cm4g
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPihuZXcgUmVtb3RlVmlkZW9TYW1wbGUo
c3VyZmFjZSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwgc2FtcGxlLnByZXNlbnRhdGlvblRpbWUoKSwg
c2FtcGxlLnZpZGVvUm90YXRpb24oKSwgc2FtcGxlLnZpZGVvTWlycm9yZWQoKSkpOworICAgIC8v
IEZJWE1FOiBXaHkgaXMgdGhpcyB1c2luZyBoYXJkY29kZWQgc1JHQj8KKyAgICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPihuZXcgUmVtb3RlVmlkZW9TYW1wbGUoc3Vy
ZmFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHNhbXBsZS5wcmVzZW50YXRpb25U
aW1lKCksIHNhbXBsZS52aWRlb1JvdGF0aW9uKCksIHNhbXBsZS52aWRlb01pcnJvcmVkKCkpKTsK
IH0KIAogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBSZW1vdGVWaWRlb1NhbXBs
ZTo6Y3JlYXRlKENWUGl4ZWxCdWZmZXJSZWYgaW1hZ2VCdWZmZXIsIE1lZGlhVGltZSYmIHByZXNl
bnRhdGlvblRpbWUsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKQpAQCAtMTI0
LDEwICsxMjUsMTEgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBSZW1vdAog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZVZpZGVvU2FtcGxlPihuZXcgUmVtb3RlVmlkZW9TYW1wbGUoc3VyZmFjZSwgc1JH
QkNvbG9yU3BhY2VSZWYoKSwgV1RGTW92ZShwcmVzZW50YXRpb25UaW1lKSwgcm90YXRpb24sIGZh
bHNlKSk7CisgICAgLy8gRklYTUU6IFdoeSBpcyB0aGlzIHVzaW5nIGhhcmRjb2RlZCBzUkdCPwor
ICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+KG5ldyBSZW1vdGVW
aWRlb1NhbXBsZShzdXJmYWNlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgV1RGTW92
ZShwcmVzZW50YXRpb25UaW1lKSwgcm90YXRpb24sIGZhbHNlKSk7CiB9CiAKLVJlbW90ZVZpZGVv
U2FtcGxlOjpSZW1vdGVWaWRlb1NhbXBsZShJT1N1cmZhY2VSZWYgc3VyZmFjZSwgQ0dDb2xvclNw
YWNlUmVmIGNvbG9yU3BhY2UsIE1lZGlhVGltZSYmIHRpbWUsIE1lZGlhU2FtcGxlOjpWaWRlb1Jv
dGF0aW9uIHJvdGF0aW9uLCBib29sIG1pcnJvcmVkKQorUmVtb3RlVmlkZW9TYW1wbGU6OlJlbW90
ZVZpZGVvU2FtcGxlKElPU3VyZmFjZVJlZiBzdXJmYWNlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmIGNvbG9yU3BhY2UsIE1lZGlhVGltZSYmIHRpbWUsIE1lZGlhU2FtcGxlOjpWaWRlb1Jv
dGF0aW9uIHJvdGF0aW9uLCBib29sIG1pcnJvcmVkKQogICAgIDogbV9pb1N1cmZhY2UoV2ViQ29y
ZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU3VyZmFjZShzdXJmYWNlLCBjb2xvclNwYWNlKSkKICAg
ICAsIG1fcm90YXRpb24ocm90YXRpb24pCiAgICAgLCBtX3RpbWUoV1RGTW92ZSh0aW1lKSkKQEAg
LTE0MCw3ICsxNDIsNyBAQCBSZW1vdGVWaWRlb1NhbXBsZTo6UmVtb3RlVmlkZW9TYW1wbGUoSU9T
CiBJT1N1cmZhY2VSZWYgUmVtb3RlVmlkZW9TYW1wbGU6OnN1cmZhY2UoKSBjb25zdAogewogICAg
IGlmICghbV9pb1N1cmZhY2UgJiYgbV9zZW5kUmlnaHQpCi0gICAgICAgIGNvbnN0X2Nhc3Q8UmVt
b3RlVmlkZW9TYW1wbGUqPih0aGlzKS0+bV9pb1N1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6
OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShjb25zdF9jYXN0PFJlbW90ZVZpZGVvU2FtcGxl
Kj4odGhpcyktPm1fc2VuZFJpZ2h0KSwgc1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgICAgIGNv
bnN0X2Nhc3Q8UmVtb3RlVmlkZW9TYW1wbGUqPih0aGlzKS0+bV9pb1N1cmZhY2UgPSBXZWJDb3Jl
OjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShjb25zdF9jYXN0PFJlbW90
ZVZpZGVvU2FtcGxlKj4odGhpcyktPm1fc2VuZFJpZ2h0KSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCkpOwogCiAgICAgcmV0dXJuIG1faW9TdXJmYWNlID8gbV9pb1N1cmZhY2UtPnN1cmZh
Y2UoKSA6IG51bGxwdHI7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9SZW1vdGVWaWRlb1NhbXBsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEwMyw3ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgot
ICAgIFJlbW90ZVZpZGVvU2FtcGxlKElPU3VyZmFjZVJlZiwgQ0dDb2xvclNwYWNlUmVmLCBNZWRp
YVRpbWUmJiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24sIGJvb2wpOworICAgIFJlbW90ZVZp
ZGVvU2FtcGxlKElPU3VyZmFjZVJlZiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgTWVk
aWFUaW1lJiYsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uLCBib29sKTsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+IG1faW9TdXJmYWNlOwogICAgIFdURjo6TWFj
aFNlbmRSaWdodCBtX3NlbmRSaWdodDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NoYWRvd0JsdXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNsZWFyU2NyYXRjaEJ1ZmZlcigpOwog
CiAgICAgICAgIC8vIFNoYWRvd0JsdXIgaXMgbm90IHVzZWQgd2l0aCBhY2NlbGVyYXRlZCBkcmF3
aW5nLCBzbyBpdCdzIE9LIHRvIG1ha2UgYW4gdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQg
YnVmZmVyLgotICAgICAgICBtX2ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShyb3Vu
ZGVkU2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgICAgICBtX2ltYWdlQnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShyb3VuZGVkU2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CiAgICAgICAgIHJldHVybiBtX2ltYWdlQnVmZmVyOwogICAgIH0KIApAQCAtNjA0LDcg
KzYwNCw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93KGNvbnN0IEEKIAogdm9p
ZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcoY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgc2hhZG93ZWRSZWN0LCBjb25zdCBMYXll
ckltYWdlUHJvcGVydGllcyYgbGF5ZXJJbWFnZVByb3BlcnRpZXMsIGNvbnN0IERyYXdCdWZmZXJD
YWxsYmFjayYgZHJhd0J1ZmZlcikKIHsKLSAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGllcy5sYXllclNpemUp
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBsYXllckltYWdlID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShleHBhbmRlZEludFNpemUobGF5ZXJJbWFnZVByb3BlcnRpZXMubGF5ZXJT
aXplKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFsYXllckltYWdlKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTYzMiw3ICs2MzIsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRy
YXdSZWN0U2hhZG93V2l0aG91dFRpCiAKIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93
V2l0aG91dFRpbGluZyhjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFJlY3QmIGZ1
bGxSZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBob2xlUmVjdCwgY29uc3QgTGF5ZXJJbWFn
ZVByb3BlcnRpZXMmIGxheWVySW1hZ2VQcm9wZXJ0aWVzLCBjb25zdCBEcmF3QnVmZmVyQ2FsbGJh
Y2smIGRyYXdCdWZmZXIpCiB7Ci0gICAgYXV0byBsYXllckltYWdlID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShleHBhbmRlZEludFNpemUobGF5ZXJJbWFnZVByb3BlcnRpZXMubGF5ZXJTaXplKSwgUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
LCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoZXhwYW5kZWRJbnRTaXplKGxheWVySW1hZ2VQcm9wZXJ0aWVzLmxheWVyU2l6ZSks
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghbGF5ZXJJbWFnZSkKICAgICAg
ICAgcmV0dXJuOwogCkBAIC03MDUsNyArNzA1LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVj
dFNoYWRvd1dpdGhUaWxpbgogI2VuZGlmCiAKICAgICBpZiAoIWxheWVySW1hZ2VCdWZmZXIpIHsK
LSAgICAgICAgbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGVtcGxhdGVT
aXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgIGxheWVySW1hZ2VCdWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRlbXBsYXRlU2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CiAgICAgICAgIGlmICghbGF5ZXJJbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC03NjMsNyArNzYzLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRT
aGFkb3dXaXRoVGlsaQogI2VuZGlmCiAKICAgICBpZiAoIWxheWVySW1hZ2VCdWZmZXIpIHsKLSAg
ICAgICAgbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGVtcGxhdGVTaXpl
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgIGxheWVySW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHRlbXBsYXRlU2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVy
YXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JB
OCk7CiAgICAgICAgIGlmICghbGF5ZXJJbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MDMsNyArOTAzLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpibHVyU2hhZG93QnVm
ZmVyKEltYWdlQgogICAgIGlmIChtX3R5cGUgIT0gQmx1clNoYWRvdykKICAgICAgICAgcmV0dXJu
OwogCi0gICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlv
bjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQiB9OworICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVs
dGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9OwogICAgIEludFJlY3QgYmx1clJlY3QoSW50UG9pbnQo
KSwgdGVtcGxhdGVTaXplKTsKICAgICBhdXRvIGxheWVyRGF0YSA9IGxheWVySW1hZ2UuZ2V0UGl4
ZWxCdWZmZXIoZm9ybWF0LCBibHVyUmVjdCk7CiAgICAgaWYgKCFsYXllckRhdGEpCkBAIC05MzMs
NyArOTMzLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3U2hhZG93TGF5ZXIoY29uc3QgQQogCiAg
ICAgYWRqdXN0Qmx1clJhZGl1cyh0cmFuc2Zvcm0pOwogCi0gICAgYXV0byBsYXllckltYWdlID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShleHBhbmRlZEludFNpemUobGF5ZXJJbWFnZVByb3BlcnRpZXMt
PmxheWVyU2l6ZSksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGxheWVySW1h
Z2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVy
dGllcy0+bGF5ZXJTaXplKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFs
YXllckltYWdlKQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4
dEdMQU5HTEUuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzksNyArNzksNyBAQCBzdGF0aWMgdm9pZCB3aXBlQWxwaGFDaGFubmVsRnJvbVBpeGVs
cyhpCiAKIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVh
ZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiB7Ci0gICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0
IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6
UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgIFBpeGVsQnVmZmVyRm9y
bWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4
ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9OwogICAgIGF1
dG8gcGl4ZWxCdWZmZXIgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1hdCwgZ2V0SW50ZXJu
YWxGcmFtZWJ1ZmZlclNpemUoKSk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5j
cHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODks
MTkgKzg5LDE5IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OmNsaXBUb01hc2sKICAg
ICAgICAgQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKCpkZXN0Q29udGV4dC5wbGF0Zm9ybUNvbnRl
eHQoKSwgaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgZGVzdFJlY3QpOwogfQogCi12b2lk
IEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjp0cmFuc2Zvcm1Db2xvclNwYWNlKERlc3RpbmF0aW9u
Q29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgZGVzdENvbG9y
U3BhY2UpCit2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjp0cmFuc2Zvcm1Db2xvclNwYWNl
KGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgc3JjQ29sb3JTcGFjZSwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiBkZXN0Q29sb3JTcGFjZSkKIHsKICAgICBpZiAoc3JjQ29sb3JTcGFj
ZSA9PSBkZXN0Q29sb3JTcGFjZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gb25seSBzUkdC
IDwtPiBsaW5lYXJSR0IgYXJlIHN1cHBvcnRlZCBhdCB0aGUgbW9tZW50Ci0gICAgaWYgKChzcmND
b2xvclNwYWNlICE9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQiAmJiBzcmNDb2xv
clNwYWNlICE9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQikKLSAgICAgICAgfHwgKGRlc3RD
b2xvclNwYWNlICE9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQiAmJiBkZXN0Q29s
b3JTcGFjZSAhPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpKQorICAgIGlmICgoc3JjQ29s
b3JTcGFjZSAhPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKSAmJiBzcmNDb2xv
clNwYWNlICE9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKQorICAgICAgICB8fCAoZGVz
dENvbG9yU3BhY2UgIT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCkgJiYgZGVz
dENvbG9yU3BhY2UgIT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBtX3BhcmFtZXRlcnMuY29sb3JTcGFjZSA9IGRlc3RDb2xvclNwYWNlOwog
Ci0gICAgaWYgKGRlc3RDb2xvclNwYWNlID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFy
U1JHQikgeworICAgIGlmIChkZXN0Q29sb3JTcGFjZSA9PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OkxpbmVhclNSR0IoKSkgewogICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjphcnJheTx1aW50OF90
LCAyNTY+IGxpbmVhclJnYkxVVCA9IFtdIHsKICAgICAgICAgICAgIHN0ZDo6YXJyYXk8dWludDhf
dCwgMjU2PiBhcnJheTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAyNTY7
IGkrKykgewpAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6
OnRyYW5zZm9ybUMKICAgICAgICAgICAgIHJldHVybiBhcnJheTsKICAgICAgICAgfSgpOwogICAg
ICAgICBwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UobGluZWFyUmdiTFVUKTsKLSAgICB9IGVs
c2UgaWYgKGRlc3RDb2xvclNwYWNlID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQikgewor
ICAgIH0gZWxzZSBpZiAoZGVzdENvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCkpIHsKICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6YXJyYXk8dWludDhfdCwgMjU2PiBk
ZXZpY2VSZ2JMVVQ9IFtdIHsKICAgICAgICAgICAgIHN0ZDo6YXJyYXk8dWludDhfdCwgMjU2PiBh
cnJheTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAyNTY7IGkrKykgewpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJD
YWlyb0JhY2tlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5oCShyZXZpc2lvbiAyNzc5MTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
QmFja2VuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgY2xpcFRvTWFzayhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0KSBvdmVycmlkZTsKIAotICAgIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0aW5hdGlv
bkNvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGRlc3RDb2xv
clNwYWNlKSBvdmVycmlkZTsKKyAgICB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiBzcmNDb2xvclNwYWNlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmIGRlc3RDb2xvclNwYWNlKSBvdmVycmlkZTsKIAogICAgIFN0cmluZyB0b0RhdGFVUkwo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2
ZVJlc29sdXRpb24pIGNvbnN0IG92ZXJyaWRlOwogICAgIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KSBjb25zdCBv
dmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9y
Q0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yQ0cuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yOSwxMyArMjksMTQgQEAKICNpZiBVU0UoQ0cpCiAKICNpbmNsdWRlICJD
b2xvclNwYWNlQ0cuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNs
dWRlIDxtdXRleD4KKyNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1RpbnlMUlVDYWNoZS5oPgotI2luY2x1
ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9UaW55TFJVQ2FjaGUuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogc3RhdGljIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjcmVhdGVDR0NvbG9yKGNvbnN0IENv
bG9yJik7CkBAIC05MSwzNCArOTIsMzggQEAgQ29sb3I6OkNvbG9yKENHQ29sb3JSZWYgY29sb3Is
IE9wdGlvblNldAogewogfQogCi1zdGF0aWMgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNyZWF0ZUNH
Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQorc3RhdGljIHN0ZDo6cGFpcjxDR0NvbG9yU3BhY2VS
ZWYsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4+IGNvbnZlcnRUb0NHQ29tcGF0aWJsZUNvbXBv
bmVudHMoQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNv
bXBvbmVudHMpCiB7Ci0gICAgYXV0byBbY29sb3JTcGFjZSwgY29tcG9uZW50c10gPSBjb2xvci5j
b2xvclNwYWNlQW5kQ29tcG9uZW50cygpOwotCi0gICAgYXV0byBjZ0NvbG9yU3BhY2UgPSBjYWNo
ZWROdWxsYWJsZUNHQ29sb3JTcGFjZShjb2xvclNwYWNlKTsKLQogICAgIC8vIFNvbWUgQ0cgcG9y
dHMgZG9uJ3Qgc3VwcG9ydCBhbGwgdGhlIGNvbG9yIHNwYWNlcyByZXF1aXJlZCBhbmQgcmV0dXJu
CiAgICAgLy8gbnVsbHB0ciBmb3IgdW5zdXBwb3J0ZWQgY29sb3Igc3BhY2VzLiBJbiB0aG9zZSBj
YXNlcywgd2UgZWFnZXJseSBjb252ZXJ0CiAgICAgLy8gdGhlIGNvbG9yIGludG8gZWl0aGVyIGV4
dGVuZGVkIHNSR0Igb3Igbm9ybWFsIHNSR0IsIGlmIGV4dGVuZGVkIHNSR0IgaXMKLSAgICAvLyBu
b3Qgc3VwcG9ydGVkLCBiZWZvcmUgY3JlYXRpbmcgdGhlIENHQ29sb3JSZWYuCisgICAgLy8gbm90
IHN1cHBvcnRlZC4KKworICAgIGF1dG8gY2dDb2xvclNwYWNlID0gY2FjaGVkTnVsbGFibGVDR0Nv
bG9yU3BhY2UoY29sb3JTcGFjZSk7CiAgICAgaWYgKCFjZ0NvbG9yU3BhY2UpIHsKICNpZiBIQVZF
KENPUkVfR1JBUEhJQ1NfRVhURU5ERURfU1JHQl9DT0xPUl9TUEFDRSkKLSAgICAgICAgYXV0byBj
b2xvckNvbnZlcnRlZFRvRXh0ZW5kZWRTUkdCQSA9IGNhbGxXaXRoQ29sb3JUeXBlKGNvbXBvbmVu
dHMsIGNvbG9yU3BhY2UsIFtdIChjb25zdCBhdXRvJiBjb2xvcikgewotICAgICAgICAgICAgcmV0
dXJuIGNvbnZlcnRDb2xvcjxFeHRlbmRlZFNSR0JBPGZsb2F0Pj4oY29sb3IpOworICAgICAgICBh
dXRvIGNnQ29tcGF0aWJsZUNvbXBvbmVudHMgPSBjYWxsV2l0aENvbG9yVHlwZShjb21wb25lbnRz
LCBjb2xvclNwYWNlLCBbXSAoY29uc3QgYXV0byYgY29sb3IpIHsKKyAgICAgICAgICAgIHJldHVy
biBhc0NvbG9yQ29tcG9uZW50cyhjb252ZXJ0Q29sb3I8RXh0ZW5kZWRTUkdCQTxmbG9hdD4+KGNv
bG9yKSk7CiAgICAgICAgIH0pOwotICAgICAgICBjb21wb25lbnRzID0gYXNDb2xvckNvbXBvbmVu
dHMoY29sb3JDb252ZXJ0ZWRUb0V4dGVuZGVkU1JHQkEpOwotICAgICAgICBjZ0NvbG9yU3BhY2Ug
PSBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCk7CisgICAgICAgIHJldHVybiB7IGV4dGVuZGVk
U1JHQkNvbG9yU3BhY2VSZWYoKSwgY2dDb21wYXRpYmxlQ29tcG9uZW50cyB9OwogI2Vsc2UKICAg
ICAgICAgYXV0byBjb2xvckNvbnZlcnRlZFRvU1JHQkEgPSBjYWxsV2l0aENvbG9yVHlwZShjb21w
b25lbnRzLCBjb2xvclNwYWNlLCBbXSAoY29uc3QgYXV0byYgY29sb3IpIHsKLSAgICAgICAgICAg
IHJldHVybiBjb252ZXJ0Q29sb3I8U1JHQkE8ZmxvYXQ+Pihjb2xvcik7CisgICAgICAgICAgICBy
ZXR1cm4gYXNDb2xvckNvbXBvbmVudHMoY29udmVydENvbG9yPFNSR0JBPGZsb2F0Pj4oY29sb3Ip
KTsKICAgICAgICAgfSk7Ci0gICAgICAgIGNvbXBvbmVudHMgPSBhc0NvbG9yQ29tcG9uZW50cyhj
b2xvckNvbnZlcnRlZFRvU1JHQkEpOwotICAgICAgICBjZ0NvbG9yU3BhY2UgPSBzUkdCQ29sb3JT
cGFjZVJlZigpOworICAgICAgICByZXR1cm4geyBzUkdCQ29sb3JTcGFjZVJlZigpLCBjZ0NvbXBh
dGlibGVDb21wb25lbnRzIH07CiAjZW5kaWYKICAgICB9CiAKLSAgICBhdXRvIFtyLCBnLCBiLCBh
XSA9IGNvbXBvbmVudHM7Ci0gICAgQ0dGbG9hdCBjZ0Zsb2F0Q29tcG9uZW50c1s0XSB7IHIsIGcs
IGIsIGEgfTsKKyAgICByZXR1cm4geyBjZ0NvbG9yU3BhY2UsIGNvbXBvbmVudHMgfTsKK30KKwor
c3RhdGljIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjcmVhdGVDR0NvbG9yKGNvbnN0IENvbG9yJiBj
b2xvcikKK3sKKyAgICBhdXRvIFtjb2xvclNwYWNlLCBjb21wb25lbnRzXSA9IGNvbG9yLmNvbG9y
U3BhY2VBbmRDb21wb25lbnRzKCk7CisgICAgYXV0byBbY2dDb2xvclNwYWNlLCBjZ0NvbXBhdGli
bGVDb21wb25lbnRzXSA9IGNvbnZlcnRUb0NHQ29tcGF0aWJsZUNvbXBvbmVudHMoY29sb3JTcGFj
ZSwgY29tcG9uZW50cyk7CisgICAgCisgICAgYXV0byBbYzEsIGMyLCBjMywgYzRdID0gY2dDb21w
YXRpYmxlQ29tcG9uZW50czsKKyAgICBDR0Zsb2F0IGNnRmxvYXRDb21wb25lbnRzWzRdIHsgYzEs
IGMyLCBjMywgYzQgfTsKIAogICAgIHJldHVybiBhZG9wdENGKENHQ29sb3JDcmVhdGUoY2dDb2xv
clNwYWNlLCBjZ0Zsb2F0Q29tcG9uZW50cykpOwogfQpAQCAtMTYxLDYgKzE2NiwyNCBAQCBDR0Nv
bG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImIGNvCiAgICAgcmV0dXJuIGNhY2hlLmdl
dCgpLmdldChjb2xvcikuZ2V0KCk7CiB9CiAKK0NvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gcGxh
dGZvcm1Db252ZXJ0Q29sb3JDb21wb25lbnRzKENvbG9yU3BhY2UgaW5wdXRDb2xvclNwYWNlLCBD
b2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGlucHV0Q29sb3JDb21wb25lbnRzLCBjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmIG91dHB1dENvbG9yU3BhY2UpCit7CisgICAgLy8gRklYTUU6IElu
dmVzdGlnYXRlIG9wdGltaXppbmcgdGhpcyB0byB1c2UgdGhlIGJ1aWx0aW4gY29sb3IgY29udmVy
c2lvbiBjb2RlIGZvciBzdXBwb3J0ZWQgY29sb3Igc3BhY2VzLgorCisgICAgYXV0byBbY2dJbnB1
dENvbG9yU3BhY2UsIGNnQ29tcGF0aWJsZUNvbXBvbmVudHNdID0gY29udmVydFRvQ0dDb21wYXRp
YmxlQ29tcG9uZW50cyhpbnB1dENvbG9yU3BhY2UsIGlucHV0Q29sb3JDb21wb25lbnRzKTsKKyAg
ICBpZiAoY2dJbnB1dENvbG9yU3BhY2UgPT0gb3V0cHV0Q29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9y
U3BhY2UoKSkKKyAgICAgICAgcmV0dXJuIGNnQ29tcGF0aWJsZUNvbXBvbmVudHM7CisKKyAgICBh
dXRvIFtjMSwgYzIsIGMzLCBjNF0gPSBjZ0NvbXBhdGlibGVDb21wb25lbnRzOworICAgIENHRmxv
YXQgc291cmNlQ29tcG9uZW50c1s0XSB7IGMxLCBjMiwgYzMsIGM0IH07CisgICAgQ0dGbG9hdCBk
ZXN0aW5hdGlvbkNvbXBvbmVudHNbNF0geyB9OworCisgICAgYXV0byB0cmFuc2Zvcm0gPSBhZG9w
dENGKENHQ29sb3JUcmFuc2Zvcm1DcmVhdGUob3V0cHV0Q29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9y
U3BhY2UoKSwgbnVsbHB0cikpOworICAgIGF1dG8gcmVzdWx0ID0gQ0dDb2xvclRyYW5zZm9ybUNv
bnZlcnRDb2xvckNvbXBvbmVudHModHJhbnNmb3JtLmdldCgpLCBjZ0lucHV0Q29sb3JTcGFjZSwg
a0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCwgc291cmNlQ29tcG9uZW50cywgZGVzdGluYXRpb25D
b21wb25lbnRzKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAgICByZXR1
cm4geyBzdGF0aWNfY2FzdDxmbG9hdD4oZGVzdGluYXRpb25Db21wb25lbnRzWzBdKSwgc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGRlc3RpbmF0aW9uQ29tcG9uZW50c1sxXSksIHN0YXRpY19jYXN0PGZsb2F0
PihkZXN0aW5hdGlvbkNvbXBvbmVudHNbMl0pLCBzdGF0aWNfY2FzdDxmbG9hdD4oZGVzdGluYXRp
b25Db21wb25lbnRzWzNdKSB9OworfQorCiB9CiAKICNlbmRpZiAvLyBVU0UoQ0cpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cu
aAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvQ29sb3JTcGFjZUNHLmgJKHdvcmtpbmcgY29weSkKQEAgLTExOSwyMyArMTE5LDQgQEAgc3Rh
dGljIGlubGluZSBDR0NvbG9yU3BhY2VSZWYgY2FjaGVkTnVsbAogICAgIHJldHVybiBudWxscHRy
OwogfQogCi0vLyBOT1RFOiBTaW5jZSB0aGlzIGZ1bmN0aW9uIGlzIGZvciAqZGVzdGluYXRpb24q
IGNvbG9yIHNwYWNlcyB3aG9zZSBjYWxsZXJzIGFsd2F5cyBleHBlY3QgYSBub24tbnVsbCBjb2xv
ciBzcGFjZSwgdGhpcyBmdW5jdGlvbiBpcyBndWFyYW50ZWVkIHRvIHJldHVybiBub24tbnVsbCwg
dW5saWtlIGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlKCkuCi1zdGF0aWMgaW5saW5lIENHQ29s
b3JTcGFjZVJlZiBjYWNoZWRDR0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9y
U3BhY2UpCi17Ci0gICAgc3dpdGNoIChjb2xvclNwYWNlKSB7Ci0gICAgY2FzZSBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0I6Ci0gICAgICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOwot
I2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICBjYXNl
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQjoKLSAgICAgICAgcmV0dXJuIGxpbmVh
clNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09M
T1JfU1BBQ0VfRElTUExBWV9QMykKLSAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlz
cGxheVAzOgotICAgICAgICByZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOwotI2VuZGlm
Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBzUkdCQ29sb3JT
cGFjZVJlZigpOwotfQotCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0R0xDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzMiw3ICs1MzIsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFRvQ2FuCiAgICAgfSkpOwogCiAgICAgYXV0byBp
bWFnZVNpemUgPSBwaXhlbEJ1ZmZlci5zaXplKCk7Ci0gICAgYXV0byBpbWFnZSA9IE5hdGl2ZUlt
YWdlOjpjcmVhdGUoYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFn
ZVNpemUuaGVpZ2h0KCksIDgsIDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCksIGNhY2hlZENHQ29s
b3JTcGFjZShwaXhlbEJ1ZmZlci5mb3JtYXQoKS5jb2xvclNwYWNlKSwgYml0bWFwSW5mbywgZGF0
YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpKTsK
KyAgICBhdXRvIGltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHSW1hZ2VDcmVh
dGUoaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIDQgKiBpbWFn
ZVNpemUud2lkdGgoKSwgcGl4ZWxCdWZmZXIuZm9ybWF0KCkuY29sb3JTcGFjZS5wbGF0Zm9ybUNv
bG9yU3BhY2UoKSwgYml0bWFwSW5mbywgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NH
UmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpKTsKIAogICAgIC8vIENTUyBzdHlsaW5nIG1heSBjYXVz
ZSB0aGUgY2FudmFzJ3MgY29udGVudCB0byBiZSByZXNpemVkIG9uCiAgICAgLy8gdGhlIHBhZ2Uu
IEdvIGJhY2sgdG8gdGhlIENhbnZhcyB0byBmaWd1cmUgb3V0IHRoZSBjb3JyZWN0CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQ
b29sLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2lmIEhBVkUoSU9TVVJGQUNFKQogCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNw
YWNlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbmNsdWRlIDxDb3JlR3Jh
cGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBA
IC01OSw3ICs2MCw3IEBAIElPU3VyZmFjZVBvb2wmIElPU3VyZmFjZVBvb2w6OnNoYXJlZFBvb2wK
ICAgICByZXR1cm4gcG9vbDsKIH0KIAotc3RhdGljIGJvb2wgc3VyZmFjZU1hdGNoZXNQYXJhbWV0
ZXJzKElPU3VyZmFjZSYgc3VyZmFjZSwgSW50U2l6ZSByZXF1ZXN0ZWRTaXplLCBDR0NvbG9yU3Bh
Y2VSZWYgY29sb3JTcGFjZSwgSU9TdXJmYWNlOjpGb3JtYXQgZm9ybWF0KQorc3RhdGljIGJvb2wg
c3VyZmFjZU1hdGNoZXNQYXJhbWV0ZXJzKElPU3VyZmFjZSYgc3VyZmFjZSwgSW50U2l6ZSByZXF1
ZXN0ZWRTaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIElPU3Vy
ZmFjZTo6Rm9ybWF0IGZvcm1hdCkKIHsKICAgICBpZiAoZm9ybWF0ICE9IHN1cmZhY2UuZm9ybWF0
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwMiw3ICsxMDMsNyBAQCB2b2lkIElPU3Vy
ZmFjZVBvb2w6OmRpZFVzZVN1cmZhY2VPZlNpemUoCiAgICAgbV9zaXplc0luUHJ1bmVPcmRlci5h
cHBlbmQoc2l6ZSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZVBv
b2w6OnRha2VTdXJmYWNlKEludFNpemUgc2l6ZSwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2Us
IElPU3VyZmFjZTo6Rm9ybWF0IGZvcm1hdCkKK3N0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElP
U3VyZmFjZVBvb2w6OnRha2VTdXJmYWNlKEludFNpemUgc2l6ZSwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiBjb2xvclNwYWNlLCBJT1N1cmZhY2U6OkZvcm1hdCBmb3JtYXQpCiB7CiAgICAg
TG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIENhY2hlZFN1cmZhY2VNYXA6Oml0ZXJhdG9y
IG1hcEl0ZXIgPSBtX2NhY2hlZFN1cmZhY2VzLmZpbmQoc2l6ZSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5oCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1
cmZhY2VQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDggQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBEZXN0aW5hdGF0aW9uQ29sb3JTcGFjZTsKKwogY2xhc3MgSU9T
dXJmYWNlUG9vbCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSU9TdXJmYWNlUG9vbCk7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00Nyw3ICs0OSw3IEBAIGNsYXNzIElPU3Vy
ZmFjZVBvb2wgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJT1N1cmZhY2VQ
b29sJiBzaGFyZWRQb29sKCk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiB0YWtl
U3VyZmFjZShJbnRTaXplLCBDR0NvbG9yU3BhY2VSZWYsIElPU3VyZmFjZTo6Rm9ybWF0KTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiB0YWtlU3VyZmFjZShJbnRTaXplLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBJT1N1cmZhY2U6OkZvcm1hdCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBhZGRTdXJmYWNlKHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+KTsKIAogICAg
IHZvaWQgZGlzY2FyZEFsbFN1cmZhY2VzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3Bw
CShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw2ICsxMDIs
NyBAQCBzdGF0aWMgUmVmUHRyPEltYWdlPiBjcmVhdGVCaXRtYXBJbWFnZUFmCiAgICAgaWYgKHJl
c29sdXRpb25TY2FsZSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29s
dXRpb246OlllcykKICAgICAgICAgaW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKGNyZWF0ZUNy
b3BwZWRJbWFnZUlmTmVjZXNzYXJ5KGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIGJhY2tl
bmRTaXplKSk7CiAgICAgZWxzZSB7CisgICAgICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyB1c2lu
ZyBoYXJkY29kZWQgc1JHQj8KICAgICAgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1h
cENvbnRleHRDcmVhdGUoMCwgbG9naWNhbFNpemUud2lkdGgoKSwgbG9naWNhbFNpemUuaGVpZ2h0
KCksIDgsIDQgKiBsb2dpY2FsU2l6ZS53aWR0aCgpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dJ
bWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KSk7
CiAgICAgICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShjb250ZXh0LmdldCgpLCBrQ0dCbGVuZE1v
ZGVDb3B5KTsKICAgICAgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LmdldCgpLCBGbG9h
dFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBsb2dpY2FsU2l6ZSkpOwpAQCAtMTc0LDcgKzE3NSw3
IEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZUJ1ZmZlckNHQmFja2UKICAgICAgICAgLy8g
RklYTUU6IFNob3VsZCB0aGlzIGJlIHVzaW5nIHRoZSBzYW1lIGxvZ2ljIGFzIEltYWdlQnVmZmVy
VXRpbGl0aWVzQ0c/CiAKICAgICAgICAgLy8gSlBFR3MgZG9uJ3QgaGF2ZSBhbiBhbHBoYSBjaGFu
bmVsLCBzbyB3ZSBoYXZlIHRvIG1hbnVhbGx5IGNvbXBvc2l0ZSBvbiB0b3Agb2YgYmxhY2suCi0g
ICAgICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246
OlByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCIH07CisgICAgICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVs
dGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCkgfTsKICAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGdldFBp
eGVsQnVmZmVyKGZvcm1hdCwgbG9naWNhbFJlY3QoKSk7CiAgICAgICAgIGlmICghcGl4ZWxCdWZm
ZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE5Miw3ICsxOTMsNyBAQCBSZXRh
aW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXJDR0JhY2tlCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgICAgICBhdXRvIGltYWdlU2l6ZSA9IHBpeGVsQnVmZmVyLT5zaXplKCk7
Ci0gICAgICAgIHJldHVybiBhZG9wdENGKENHSW1hZ2VDcmVhdGUoaW1hZ2VTaXplLndpZHRoKCks
IGltYWdlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIDQgKiBpbWFnZVNpemUud2lkdGgoKSwgY2FjaGVk
Q0dDb2xvclNwYWNlKHBpeGVsQnVmZmVyLT5mb3JtYXQoKS5jb2xvclNwYWNlKSwga0NHQml0bWFw
Qnl0ZU9yZGVyRGVmYXVsdCB8IGtDR0ltYWdlQWxwaGFOb25lU2tpcExhc3QsIGRhdGFQcm92aWRl
ci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXpl
LmhlaWdodCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBwaXhlbEJ1ZmZlci0+Zm9y
bWF0KCkuY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwga0NHQml0bWFwQnl0ZU9yZGVy
RGVmYXVsdCB8IGtDR0ltYWdlQWxwaGFOb25lU2tpcExhc3QsIGRhdGFQcm92aWRlci5nZXQoKSwg
MCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKICAgICB9CiAKICAgICBpZiAo
cmVzb2x1dGlvblNjYWxlKCkgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVS
ZXNvbHV0aW9uOjpZZXMpIHsKQEAgLTIwNiw2ICsyMDcsOCBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gSW1hZ2VCdWZmZXJDR0JhY2tlCiAgICAgaWYgKCFuYXRpdmVJbWFnZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgYXV0byBpbWFnZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdl
KCk7CisKKyAgICAvLyBGSVhNRTogV2h5IGlzIHRoaXMgdXNpbmcgaGFyZGNvZGVkIHNSR0I/CiAg
ICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoMCwgYmFja2Vu
ZFNpemUoKS53aWR0aCgpLCBiYWNrZW5kU2l6ZSgpLmhlaWdodCgpLCA4LCA0ICogYmFja2VuZFNp
emUoKS53aWR0aCgpLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlw
bGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KSk7CiAgICAgQ0dDb250ZXh0U2V0
QmxlbmRNb2RlKGNvbnRleHQuZ2V0KCksIGtDR0JsZW5kTW9kZUNvcHkpOwogICAgIENHQ29udGV4
dENsaXBUb1JlY3QoY29udGV4dC5nZXQoKSwgQ0dSZWN0TWFrZSgwLCAwLCBiYWNrZW5kU2l6ZSgp
LndpZHRoKCksIGJhY2tlbmRTaXplKCkuaGVpZ2h0KCkpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBzaXplX3QgSW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQ6OmNhbGN1CiAgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZDo6Y2FsY3VsYXRlTWVt
b3J5Q29zdChiYWNrZW5kU2l6ZSwgY2FsY3VsYXRlQnl0ZXNQZXJSb3coYmFja2VuZFNpemUpKTsK
IH0KIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMs
IENHQ29sb3JTcGFjZVJlZiBjZ0NvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqKQorc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEhvc3RX
aW5kb3cqKQogewogICAgIEFTU0VSVChwYXJhbWV0ZXJzLnBpeGVsRm9ybWF0ID09IFBpeGVsRm9y
bWF0OjpCR1JBOCk7CiAKQEAgLTgxLDcgKzgxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZQogICAgIHNpemVfdCBudW1CeXRlcyA9IGJhY2tlbmRTaXplLmhlaWdo
dCgpICogYnl0ZXNQZXJSb3c7CiAgICAgdmVyaWZ5SW1hZ2VCdWZmZXJJc0JpZ0Vub3VnaChkYXRh
LCBudW1CeXRlcyk7CiAKLSAgICBhdXRvIGNnQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250
ZXh0Q3JlYXRlKGRhdGEsIGJhY2tlbmRTaXplLndpZHRoKCksIGJhY2tlbmRTaXplLmhlaWdodCgp
LCA4LCBieXRlc1BlclJvdywgY2dDb2xvclNwYWNlLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGll
ZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KSk7CisgICAgYXV0byBjZ0NvbnRleHQg
PSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShkYXRhLCBiYWNrZW5kU2l6ZS53aWR0aCgp
LCBiYWNrZW5kU2l6ZS5oZWlnaHQoKSwgOCwgYnl0ZXNQZXJSb3csIHBhcmFtZXRlcnMuY29sb3JT
cGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJz
dCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCkpOwogICAgIGlmICghY2dDb250ZXh0KQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtOTYsMTUgKzk2LDE0IEBAIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2UKIAogc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0
IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkK
IHsKLSAgICBpZiAoYXV0byBjZ0NvbG9yU3BhY2UgPSBjb250ZXh0Lmhhc1BsYXRmb3JtQ29udGV4
dCgpID8gY29udGV4dENvbG9yU3BhY2UoY29udGV4dCkgOiBudWxscHRyKQotICAgICAgICByZXR1
cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBjZ0NvbG9y
U3BhY2UuZ2V0KCksIG51bGxwdHIpOworICAgIGlmIChhdXRvIGNnQ29sb3JTcGFjZSA9IGNvbnRl
eHQuaGFzUGxhdGZvcm1Db250ZXh0KCkgPyBjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0KSA6IG51
bGxwdHIpIHsKKyAgICAgICAgYXV0byBvdmVycmlkZVBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzOwor
ICAgICAgICBvdmVycmlkZVBhcmFtZXRlcnMuY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSB7IGNnQ29sb3JTcGFjZSB9OwogCi0gICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBC
YWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgbnVsbHB0cik7Ci19CisgICAgICAgIHJldHVybiBJ
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKG92ZXJyaWRlUGFyYW1ldGVycywgbnVs
bHB0cik7CisgICAgfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tl
bmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYg
cGFyYW1ldGVycywgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKLXsKLSAgICByZXR1cm4g
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBjYWNoZWRDR0Nv
bG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSwgaG9zdFdpbmRvdyk7CisgICAgcmV0dXJu
IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgbnVsbHB0cik7
CiB9CiAKIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFj
a2VuZChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCB2b2lkKiBkYXRhLCBSZXRhaW5QdHI8
Q0dEYXRhUHJvdmlkZXJSZWY+JiYgZGF0YVByb3ZpZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhp
Y3NDb250ZXh0PiYmIGNvbnRleHQpCkBAIC0xNDYsNyArMTQ1LDcgQEAgUmVmUHRyPE5hdGl2ZUlt
YWdlPiBJbWFnZUJ1ZmZlckNHQml0bWFwQgogICAgICAgICBhdXRvIGJhY2tlbmRTaXplID0gdGhp
cy0+YmFja2VuZFNpemUoKTsKICAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoYWRv
cHRDRihDR0ltYWdlQ3JlYXRlKAogICAgICAgICAgICAgYmFja2VuZFNpemUud2lkdGgoKSwgYmFj
a2VuZFNpemUuaGVpZ2h0KCksIDgsIDMyLCBieXRlc1BlclJvdygpLAotICAgICAgICAgICAgY2Fj
aGVkQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UoKSksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVk
Rmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QsIG1fZGF0YVByb3ZpZGVyLmdldCgpLAor
ICAgICAgICAgICAgY29sb3JTcGFjZSgpLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBrQ0dJbWFnZUFs
cGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0LCBtX2RhdGFQ
cm92aWRlci5nZXQoKSwKICAgICAgICAgICAgIDAsIHRydWUsIGtDR1JlbmRlcmluZ0ludGVudERl
ZmF1bHQpKSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDggKzM5
LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBJbnRTaXplIGNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6
ZShjb25zdCBQYXJhbWV0ZXJzJik7CiAgICAgc3RhdGljIHNpemVfdCBjYWxjdWxhdGVNZW1vcnlD
b3N0KGNvbnN0IFBhcmFtZXRlcnMmKTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgQ0dDb2xv
clNwYWNlUmVmLCBjb25zdCBIb3N0V2luZG93Kik7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBj
b25zdCBIb3N0V2luZG93Kik7CisKKyAgICAvLyBGSVhNRTogUmVuYW1lIHRvIGNyZWF0ZVVzaW5n
Q29sb3JTcGFjZU9mR3JhcGhpY3NDb250ZXh0KCkgKG9yIHNvbWV0aGluZyBsaWtlIHRoYXQpLgog
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IGNy
ZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEsMTMgKzgxLDEzIEBAIFJldGFpblB0cjxDR0NvbG9y
U3BhY2VSZWY+IEltYWdlQnVmZmVySU8KICAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6
OmNvbnRleHRDb2xvclNwYWNlKGNvbnRleHQpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0
ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBDR0NvbG9yU3BhY2VSZWYgY2dDb2xvclNw
YWNlLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQorc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVh
dGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdp
bmRvdykKIHsKICAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlU2FmZUJhY2tlbmRT
aXplKHBhcmFtZXRlcnMpOwogICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUo
YmFja2VuZFNpemUsIGJhY2tlbmRTaXplLCBjZ0NvbG9yU3BhY2UsIElPU3VyZmFjZTo6Zm9ybWF0
Rm9yUGl4ZWxGb3JtYXQocGFyYW1ldGVycy5waXhlbEZvcm1hdCkpOworICAgIGF1dG8gc3VyZmFj
ZSA9IElPU3VyZmFjZTo6Y3JlYXRlKGJhY2tlbmRTaXplLCBiYWNrZW5kU2l6ZSwgcGFyYW1ldGVy
cy5jb2xvclNwYWNlLCBJT1N1cmZhY2U6OmZvcm1hdEZvclBpeGVsRm9ybWF0KHBhcmFtZXRlcnMu
cGl4ZWxGb3JtYXQpKTsKICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCkBAIC0xMDIsMTUgKzEwMiwxNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+
IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBpZiAoYXV0
byBjZ0NvbG9yU3BhY2UgPSBjb250ZXh0Lmhhc1BsYXRmb3JtQ29udGV4dCgpID8gY29udGV4dENv
bG9yU3BhY2UoY29udGV4dCkgOiBudWxscHRyKQotICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgY2dDb2xvclNwYWNlLmdldCgpLCBu
dWxscHRyKTsKKyAgICBpZiAoYXV0byBjZ0NvbG9yU3BhY2UgPSBjb250ZXh0Lmhhc1BsYXRmb3Jt
Q29udGV4dCgpID8gY29udGV4dENvbG9yU3BhY2UoY29udGV4dCkgOiBudWxscHRyKSB7CisgICAg
ICAgIGF1dG8gb3ZlcnJpZGVQYXJhbWV0ZXJzID0gcGFyYW1ldGVyczsKKyAgICAgICAgb3ZlcnJp
ZGVQYXJhbWV0ZXJzLmNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgeyBjZ0NvbG9y
U3BhY2UgfTsKIAotICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0
ZShwYXJhbWV0ZXJzLCBudWxscHRyKTsKLX0KKyAgICAgICAgcmV0dXJuIEltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZDo6Y3JlYXRlKG92ZXJyaWRlUGFyYW1ldGVycywgbnVsbHB0cik7CisgICAg
fQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQotewotICAgIHJldHVybiBJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBjYWNoZWRDR0NvbG9yU3BhY2Uo
cGFyYW1ldGVycy5jb2xvclNwYWNlKSwgaG9zdFdpbmRvdyk7CisgICAgcmV0dXJuIEltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIG51bGxwdHIpOwogfQogCiBJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZChj
b25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiYm
IHN1cmZhY2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDggKzQyLDggQEAg
cHVibGljOgogICAgIHN0YXRpYyBzaXplX3QgY2FsY3VsYXRlTWVtb3J5Q29zdChjb25zdCBQYXJh
bWV0ZXJzJik7CiAgICAgc3RhdGljIHNpemVfdCBjYWxjdWxhdGVFeHRlcm5hbE1lbW9yeUNvc3Qo
Y29uc3QgUGFyYW1ldGVycyYpOwogICAgIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIENHQ29s
b3JTcGFjZVJlZiwgY29uc3QgSG9zdFdpbmRvdyopOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYs
IGNvbnN0IEhvc3RXaW5kb3cqKTsKKyAgICAvLyBGSVhNRTogUmVuYW1lIHRvIGNyZWF0ZVVzaW5n
Q29sb3JTcGFjZU9mR3JhcGhpY3NDb250ZXh0KCkgKG9yIHNvbWV0aGluZyBsaWtlIHRoYXQpLgog
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBj
cmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAg
SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmLCBzdGQ6OnVuaXF1
ZV9wdHI8SU9TdXJmYWNlPiYmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuY3BwCShy
ZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDcgKzE3Nyw3
IEBAIHN0YXRpYyBib29sIGVuY29kZShjb25zdCBQaXhlbEJ1ZmZlciYgc28KICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIGltYWdlU2l6ZSA9IHNvdXJjZS5zaXplKCk7Ci0gICAg
YXV0byBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1h
Z2VTaXplLmhlaWdodCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBjYWNoZWRDR0Nv
bG9yU3BhY2Uoc291cmNlLmZvcm1hdCgpLmNvbG9yU3BhY2UpLCBrQ0dCaXRtYXBCeXRlT3JkZXJE
ZWZhdWx0IHwgZGF0YUFscGhhSW5mbywgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NH
UmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdENGKENHSW1h
Z2VDcmVhdGUoaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIDQg
KiBpbWFnZVNpemUud2lkdGgoKSwgc291cmNlLmZvcm1hdCgpLmNvbG9yU3BhY2UucGxhdGZvcm1D
b2xvclNwYWNlKCksIGtDR0JpdG1hcEJ5dGVPcmRlckRlZmF1bHQgfCBkYXRhQWxwaGFJbmZvLCBk
YXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7
CiAKICAgICByZXR1cm4gZW5jb2RlKGltYWdlLmdldCgpLCBkZXN0aW5hdGlvblVUSS5nZXQoKSwg
cXVhbGl0eSwgZnVuY3Rpb24pOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIENvbG9yIE5hdGl2ZUltYWdlOjpzaW5n
bGVQaXhlbFNvbGlkQ29sb3IKICAgICBpZiAoc2l6ZSgpICE9IEludFNpemUoMSwgMSkpCiAgICAg
ICAgIHJldHVybiBDb2xvcigpOwogCisgICAgLy8gRklYTUU6IFdoeSBpcyB0aGlzIHVzaW5nIGhh
cmRjb2RlZCBzUkdCPwogICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWxbNF07IC8vIFJHQkEKICAgICBh
dXRvIGJpdG1hcENvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShwaXhlbCwg
MSwgMSwgOCwgc2l6ZW9mKHBpeGVsKSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwga0NHSW1hZ2VBbHBo
YVByZW11bHRpcGxpZWRMYXN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJCaWcpKTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCShyZXZpc2lvbiAyNzc5
MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NzEsNyArNTcxLDcgQEAg
Ym9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZURpcwogYm9vbCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6YWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQogewog
ICAgIEFTU0VSVCghZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKS5pc0VtcHR5KCkpOwotICAg
IGF1dG8gYmFja2luZyA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlKGdldEludGVybmFsRnJh
bWVidWZmZXJTaXplKCksIFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCkpOworICAgIGF1dG8g
YmFja2luZyA9IElPU3VyZmFjZTo6Y3JlYXRlKGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCks
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICBpZiAoIWJhY2tpbmcpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvSU9TdXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw5ICsyNywxMCBAQAogCiAjaWYgSEFWRShJT1NVUkZBQ0UpCiAKKyNpbmNsdWRl
ICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVk
ZSA8b2JqYy9vYmpjLmg+CiAjaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9JT1N1cmZhY2VTUEkuaD4K
LSNpbmNsdWRlICJJbnRTaXplLmgiCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExB
VEZPUk0oTUFDQ0FUQUxZU1QpICYmICFQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikKICNk
ZWZpbmUgSEFWRV9JT1NVUkZBQ0VfUkdCMTAgMQpAQCAtNDYsMTAgKzQ3LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBIb3N0V2luZG93Owot
ICAgIAotI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCiBjbGFzcyBJbWFn
ZUJ1ZmZlcjsKLSNlbmRpZgogCiBlbnVtIGNsYXNzIFBpeGVsRm9ybWF0IDogdWludDhfdDsKIGVu
dW0gY2xhc3MgVm9sYXRpbGl0eVN0YXRlIDogdWludDhfdDsKQEAgLTEwMSwxMCArOTksMTAgQEAg
cHVibGljOgogICAgICAgICB1aW50MzJfdCBtX2ZsYWdzOwogICAgIH07CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlKEludFNpemUs
IENHQ29sb3JTcGFjZVJlZiwgRm9ybWF0ID0gRm9ybWF0OjpCR1JBKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlKEludFNpemUsIElu
dFNpemUgY29udGV4dFNpemUsIENHQ29sb3JTcGFjZVJlZiwgRm9ybWF0ID0gRm9ybWF0OjpCR1JB
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4g
Y3JlYXRlRnJvbVNlbmRSaWdodChjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmJiwgQ0dDb2xvclNw
YWNlUmVmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3Vy
ZmFjZT4gY3JlYXRlRnJvbVN1cmZhY2UoSU9TdXJmYWNlUmVmLCBDR0NvbG9yU3BhY2VSZWYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVh
dGUoSW50U2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRm9ybWF0ID0gRm9ybWF0
OjpCR1JBKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3Vy
ZmFjZT4gY3JlYXRlKEludFNpemUsIEludFNpemUgY29udGV4dFNpemUsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYsIEZvcm1hdCA9IEZvcm1hdDo6QkdSQSk7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZUZyb21TZW5kUmlnaHQo
Y29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0JiYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBj
cmVhdGVGcm9tU3VyZmFjZShJT1N1cmZhY2VSZWYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNl
PiBjcmVhdGVGcm9tSW1hZ2UoQ0dJbWFnZVJlZik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZUZyb21QaXhlbEJ1ZmZlcihDVlBpeGVs
QnVmZmVyUmVmKTsKICAgICAKQEAgLTE0Niw3ICsxNDQsNyBAQCBwdWJsaWM6CiAgICAgSW50U2l6
ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgc2l6ZV90IHRvdGFsQnl0ZXMo
KSBjb25zdCB7IHJldHVybiBtX3RvdGFsQnl0ZXM7IH0KIAotICAgIENHQ29sb3JTcGFjZVJlZiBj
b2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvclNwYWNlLmdldCgpOyB9CisgICAgY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9j
b2xvclNwYWNlOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgRm9ybWF0IGZvcm1hdCgpIGNvbnN0Owog
ICAgIFdFQkNPUkVfRVhQT1JUIElPU3VyZmFjZUlEIHN1cmZhY2VJRCgpIGNvbnN0OwogICAgIHNp
emVfdCBieXRlc1BlclJvdygpIGNvbnN0OwpAQCAtMTY5LDE0ICsxNjcsMTQgQEAgcHVibGljOgog
ICAgIHZvaWQgbWlncmF0ZUNvbG9yU3BhY2VUb1Byb3BlcnRpZXMoKTsKIAogcHJpdmF0ZToKLSAg
ICBJT1N1cmZhY2UoSW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xvclNwYWNlUmVm
LCBGb3JtYXQsIGJvb2wmIHN1Y2Nlc3MpOwotICAgIElPU3VyZmFjZShJT1N1cmZhY2VSZWYsIENH
Q29sb3JTcGFjZVJlZik7CisgICAgSU9TdXJmYWNlKEludFNpemUsIEludFNpemUgY29udGV4dFNp
emUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZvcm1hdCwgYm9vbCYgc3VjY2Vzcyk7
CisgICAgSU9TdXJmYWNlKElPU3VyZmFjZVJlZiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
Jik7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gc3VyZmFjZUZyb21Q
b29sKEludFNpemUsIEludFNpemUgY29udGV4dFNpemUsIENHQ29sb3JTcGFjZVJlZiwgRm9ybWF0
KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gc3VyZmFjZUZyb21Qb29s
KEludFNpemUsIEludFNpemUgY29udGV4dFNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYsIEZvcm1hdCk7CiAgICAgSW50U2l6ZSBjb250ZXh0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udGV4dFNpemU7IH0KICAgICB2b2lkIHNldENvbnRleHRTaXplKEludFNpemUpOwogCi0gICAg
UmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gbV9jb2xvclNwYWNlOworICAgIERlc3RpbmF0aW9u
Q29sb3JTcGFjZSBtX2NvbG9yU3BhY2U7CiAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAgSW50U2l6
ZSBtX2NvbnRleHRTaXplOwogICAgIHNpemVfdCBtX3RvdGFsQnl0ZXM7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCShy
ZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9JT1N1cmZhY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQg
ImNvbmZpZy5oIgogI2ltcG9ydCAiSU9TdXJmYWNlLmgiCiAKLSNpbXBvcnQgIkNvcmVWaWRlb1Nv
ZnRMaW5rLmgiCisjaW1wb3J0ICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbXBvcnQgIkdy
YXBoaWNzQ29udGV4dENHLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTC5oIgogI2ltcG9y
dCAiSG9zdFdpbmRvdy5oIgpAQCAtNDEsOSArNDEsMTEgQEAKICNpbXBvcnQgPHd0Zi9NYXRoRXh0
cmFzLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKKyNpbXBvcnQgIkNvcmVW
aWRlb1NvZnRMaW5rLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotaW5saW5lIHN0ZDo6dW5p
cXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6c3VyZmFjZUZyb21Qb29sKEludFNpemUgc2l6
ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UsIEZvcm1h
dCBwaXhlbEZvcm1hdCkKK2lubGluZSBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZh
Y2U6OnN1cmZhY2VGcm9tUG9vbChJbnRTaXplIHNpemUsIEludFNpemUgY29udGV4dFNpemUsIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgRm9ybWF0IHBpeGVsRm9ybWF0
KQogewogICAgIGF1dG8gY2FjaGVkU3VyZmFjZSA9IElPU3VyZmFjZVBvb2w6OnNoYXJlZFBvb2wo
KS50YWtlU3VyZmFjZShzaXplLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCk7CiAgICAgaWYgKCFj
YWNoZWRTdXJmYWNlKQpAQCAtNTMsMTIgKzU1LDEyIEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8
SU9TdXJmYWNlPiBJT1N1cmYKICAgICByZXR1cm4gY2FjaGVkU3VyZmFjZTsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGUoSW50U2l6ZSBzaXplLCBDR0Nv
bG9yU3BhY2VSZWYgY29sb3JTcGFjZSwgRm9ybWF0IHBpeGVsRm9ybWF0KQorc3RkOjp1bmlxdWVf
cHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGUoSW50U2l6ZSBzaXplLCBjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIEZvcm1hdCBwaXhlbEZvcm1hdCkKIHsKICAg
ICByZXR1cm4gSU9TdXJmYWNlOjpjcmVhdGUoc2l6ZSwgc2l6ZSwgY29sb3JTcGFjZSwgcGl4ZWxG
b3JtYXQpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0
ZShJbnRTaXplIHNpemUsIEludFNpemUgY29udGV4dFNpemUsIENHQ29sb3JTcGFjZVJlZiBjb2xv
clNwYWNlLCBGb3JtYXQgcGl4ZWxGb3JtYXQpCitzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJ
T1N1cmZhY2U6OmNyZWF0ZShJbnRTaXplIHNpemUsIEludFNpemUgY29udGV4dFNpemUsIGNvbnN0
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgRm9ybWF0IHBpeGVsRm9ybWF0KQog
ewogICAgIGlmIChhdXRvIGNhY2hlZFN1cmZhY2UgPSBzdXJmYWNlRnJvbVBvb2woc2l6ZSwgY29u
dGV4dFNpemUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KSkgewogICAgICAgICBMT0dfV0lUSF9T
VFJFQU0oSU9TdXJmYWNlLCBzdHJlYW0gPDwgIklPU3VyZmFjZTo6Y3JlYXRlIHRvb2sgZnJvbSBw
b29sOiAiIDw8ICpjYWNoZWRTdXJmYWNlKTsKQEAgLTc1LDEzICs3NywxMyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyCiAgICAgcmV0dXJuIHN1cmZhY2U7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdo
dChjb25zdCBNYWNoU2VuZFJpZ2h0JiYgc2VuZFJpZ2h0LCBDR0NvbG9yU3BhY2VSZWYgY29sb3JT
cGFjZSkKK3N0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVNl
bmRSaWdodChjb25zdCBNYWNoU2VuZFJpZ2h0JiYgc2VuZFJpZ2h0LCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpCiB7CiAgICAgYXV0byBzdXJmYWNlID0gYWRvcHRDRihJ
T1N1cmZhY2VMb29rdXBGcm9tTWFjaFBvcnQoc2VuZFJpZ2h0LnNlbmRSaWdodCgpKSk7CiAgICAg
cmV0dXJuIElPU3VyZmFjZTo6Y3JlYXRlRnJvbVN1cmZhY2Uoc3VyZmFjZS5nZXQoKSwgY29sb3JT
cGFjZSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6Y3JlYXRl
RnJvbVN1cmZhY2UoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNw
YWNlKQorc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU3Vy
ZmFjZShJT1N1cmZhY2VSZWYgc3VyZmFjZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBj
b2xvclNwYWNlKQogewogICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPihuZXcg
SU9TdXJmYWNlKHN1cmZhY2UsIGNvbG9yU3BhY2UpKTsKIH0KQEAgLTk0LDcgKzk2LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcgogICAgIHNpemVfdCB3aWR0aCA9
IENHSW1hZ2VHZXRXaWR0aChpbWFnZSk7CiAgICAgc2l6ZV90IGhlaWdodCA9IENHSW1hZ2VHZXRI
ZWlnaHQoaW1hZ2UpOwogCi0gICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoSW50
U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgQ0dJbWFnZUdldENvbG9yU3BhY2UoaW1hZ2UpKTsKKyAgICBh
dXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgeyBDR0ltYWdlR2V0Q29sb3JTcGFjZShpbWFnZSkgfSk7CiAg
ICAgaWYgKCFzdXJmYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvIHN1cmZh
Y2VDb250ZXh0ID0gc3VyZmFjZS0+ZW5zdXJlUGxhdGZvcm1Db250ZXh0KCk7CkBAIC0xMTYsNyAr
MTE4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcgogICAgIGlm
ICghY29sb3JTcGFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gY3Jl
YXRlRnJvbVN1cmZhY2Uoc3VyZmFjZSwgY29sb3JTcGFjZSk7CisgICAgcmV0dXJuIGNyZWF0ZUZy
b21TdXJmYWNlKHN1cmZhY2UsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB7IGNvbG9yU3BhY2UgfSk7
CiB9CiAKIHZvaWQgSU9TdXJmYWNlOjptb3ZlVG9Qb29sKHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZh
Y2U+JiYgc3VyZmFjZSkKQEAgLTE5Niw3ICsxOTgsNyBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5ICpv
cHRpb25zRm9yMzJCaXRTdXJmCiAKIH0KIAotSU9TdXJmYWNlOjpJT1N1cmZhY2UoSW50U2l6ZSBz
aXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwgRm9y
bWF0IGZvcm1hdCwgYm9vbCYgc3VjY2VzcykKK0lPU3VyZmFjZTo6SU9TdXJmYWNlKEludFNpemUg
c2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBj
b2xvclNwYWNlLCBGb3JtYXQgZm9ybWF0LCBib29sJiBzdWNjZXNzKQogICAgIDogbV9jb2xvclNw
YWNlKGNvbG9yU3BhY2UpCiAgICAgLCBtX3NpemUoc2l6ZSkKICAgICAsIG1fY29udGV4dFNpemUo
Y29udGV4dFNpemUpCkBAIC0yMzIsNyArMjM0LDcgQEAgSU9TdXJmYWNlOjpJT1N1cmZhY2UoSW50
U2l6ZSBzaXplLCBJbnRTaQogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihMYXllcnMsICJJT1N1
cmZhY2UgY3JlYXRpb24gZmFpbGVkIGZvciBzaXplOiAoJWQgJWQpIGFuZCBmb3JtYXQ6ICglZCki
LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIGZvcm1hdCk7CiB9CiAKLUlPU3VyZmFjZTo6
SU9TdXJmYWNlKElPU3VyZmFjZVJlZiBzdXJmYWNlLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFj
ZSkKK0lPU3VyZmFjZTo6SU9TdXJmYWNlKElPU3VyZmFjZVJlZiBzdXJmYWNlLCBjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpCiAgICAgOiBtX2NvbG9yU3BhY2UoY29sb3JT
cGFjZSkKICAgICAsIG1fc3VyZmFjZShzdXJmYWNlKQogewpAQCAtMzQ3LDcgKzM0OSw3IEBAIENH
Q29udGV4dFJlZiBJT1N1cmZhY2U6OmVuc3VyZVBsYXRmb3JtQ28KICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIAotICAgIG1fY2dDb250ZXh0ID0gYWRvcHRDRihDR0lPU3VyZmFjZUNvbnRleHRD
cmVhdGUobV9zdXJmYWNlLmdldCgpLCBtX2NvbnRleHRTaXplLndpZHRoKCksIG1fY29udGV4dFNp
emUuaGVpZ2h0KCksIGJpdHNQZXJDb21wb25lbnQsIGJpdHNQZXJQaXhlbCwgbV9jb2xvclNwYWNl
LmdldCgpLCBiaXRtYXBJbmZvKSk7CisgICAgbV9jZ0NvbnRleHQgPSBhZG9wdENGKENHSU9TdXJm
YWNlQ29udGV4dENyZWF0ZShtX3N1cmZhY2UuZ2V0KCksIG1fY29udGV4dFNpemUud2lkdGgoKSwg
bV9jb250ZXh0U2l6ZS5oZWlnaHQoKSwgYml0c1BlckNvbXBvbmVudCwgYml0c1BlclBpeGVsLCBt
X2NvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCksIGJpdG1hcEluZm8pKTsKIAogI2lmIFBM
QVRGT1JNKE1BQykKICAgICBpZiAoYXV0byBkaXNwbGF5TWFzayA9IHByaW1hcnlPcGVuR0xEaXNw
bGF5TWFzaygpKSB7CkBAIC01MTUsNyArNTE3LDcgQEAgdm9pZCBJT1N1cmZhY2U6OnNldE93bmVy
c2hpcElkZW50aXR5KHRhcwogCiB2b2lkIElPU3VyZmFjZTo6bWlncmF0ZUNvbG9yU3BhY2VUb1By
b3BlcnRpZXMoKQogewotICAgIGF1dG8gY29sb3JTcGFjZVByb3BlcnRpZXMgPSBhZG9wdENGKENH
Q29sb3JTcGFjZUNvcHlQcm9wZXJ0eUxpc3QobV9jb2xvclNwYWNlLmdldCgpKSk7CisgICAgYXV0
byBjb2xvclNwYWNlUHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ29weVByb3BlcnR5
TGlzdChtX2NvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCkpKTsKICAgICBJT1N1cmZhY2VT
ZXRWYWx1ZShtX3N1cmZhY2UuZ2V0KCksIGtJT1N1cmZhY2VDb2xvclNwYWNlLCBjb2xvclNwYWNl
UHJvcGVydGllcy5nZXQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVy
RWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNv
cmVJbWFnZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgRmlsdGVy
RWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OnJlbmQKICAgICAgICAgcmV0dXJuOwogICAgIAogICAg
IGF1dG8mIHN1cmZhY2UgPSBkb3duY2FzdDxBY2NlbGVyYXRlZEltYWdlQnVmZmVyPigqbV9vdXRw
dXRJbWFnZUJ1ZmZlcikuc3VyZmFjZSgpOwotICAgIFtzaGFyZWRDSUNvbnRleHQoKS5nZXQoKSBy
ZW5kZXI6IG1fb3V0cHV0SW1hZ2UuZ2V0KCkgdG9JT1N1cmZhY2U6IHN1cmZhY2Uuc3VyZmFjZSgp
IGJvdW5kczpkZXN0UmVjdChsYXN0RWZmZWN0KSBjb2xvclNwYWNlOmNhY2hlZENHQ29sb3JTcGFj
ZShsYXN0RWZmZWN0LnJlc3VsdENvbG9yU3BhY2UoKSldOworICAgIFtzaGFyZWRDSUNvbnRleHQo
KS5nZXQoKSByZW5kZXI6IG1fb3V0cHV0SW1hZ2UuZ2V0KCkgdG9JT1N1cmZhY2U6IHN1cmZhY2Uu
c3VyZmFjZSgpIGJvdW5kczpkZXN0UmVjdChsYXN0RWZmZWN0KSBjb2xvclNwYWNlOmxhc3RFZmZl
Y3QucmVzdWx0Q29sb3JTcGFjZSgpLnBsYXRmb3JtQ29sb3JTcGFjZSgpXTsKIH0KICAgICAKIEZs
b2F0UmVjdCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6ZGVzdFJlY3QoY29uc3QgRmls
dGVyRWZmZWN0JiBsYXN0RWZmZWN0KSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFuc2ZlclNlc3Npb25WVC5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZU
Lm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jdi9JbWFnZVRyYW5zZmVyU2Vzc2lvblZULm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMTEsNiAr
MjExLDggQEAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IEltYWdlVHJhbnNmZQogICAgIENW
UGl4ZWxCdWZmZXJMb2NrQmFzZUFkZHJlc3MocmdiQnVmZmVyLCAwKTsKICAgICB2b2lkKiBkYXRh
ID0gQ1ZQaXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNzKHJnYkJ1ZmZlcik7CiAgICAgYXV0byByZXRh
aW5lZFJHQkJ1ZmZlciA9IGFkb3B0Q0YocmdiQnVmZmVyKTsKKworICAgIC8vIEZJWE1FOiBXaHkg
aXMgdGhpcyB1c2luZyBoYXJkY29kZWQgc1JHQj8KICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdENG
KENHQml0bWFwQ29udGV4dENyZWF0ZShkYXRhLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXpl
LmhlaWdodCgpLCA4LCBDVlBpeGVsQnVmZmVyR2V0Qnl0ZXNQZXJSb3cocmdiQnVmZmVyKSwgc1JH
QkNvbG9yU3BhY2VSZWYoKSwgKENHQml0bWFwSW5mbykga0NHSW1hZ2VBbHBoYU5vbmVTa2lwRmly
c3QpKTsKICAgICBpZiAoIWNvbnRleHQpIHsKICAgICAgICAgUkVMRUFTRV9MT0coTWVkaWEsICJJ
bWFnZVRyYW5zZmVyU2Vzc2lvblZUOjpjcmVhdGVQaXhlbEJ1ZmZlcjogQ0dCaXRtYXBDb250ZXh0
Q3JlYXRlIHJldHVybmVkIG51bGxwdHIiKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1YuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L1BpeGVsQnVmZmVyQ29uZm9ybWVyQ1Yu
Y3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jdi9QaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDYg
KzE3Miw3IEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBQaXhlbEJ1ZmZlckNvbmZvcm0KICAgICBD
R0RhdGFQcm92aWRlckRpcmVjdENhbGxiYWNrcyBwcm92aWRlckNhbGxiYWNrcyA9IHsgMCwgQ1ZQ
aXhlbEJ1ZmZlckdldEJ5dGVQb2ludGVyQ2FsbGJhY2ssIENWUGl4ZWxCdWZmZXJSZWxlYXNlQnl0
ZVBvaW50ZXJDYWxsYmFjaywgMCwgQ1ZQaXhlbEJ1ZmZlclJlbGVhc2VJbmZvQ2FsbGJhY2sgfTsK
ICAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IHByb3ZpZGVyID0gYWRvcHRDRihDR0Rh
dGFQcm92aWRlckNyZWF0ZURpcmVjdChpbmZvLCBieXRlTGVuZ3RoLCAmcHJvdmlkZXJDYWxsYmFj
a3MpKTsKIAorICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyB1c2luZyBoYXJkY29kZWQgc1JHQj8K
ICAgICByZXR1cm4gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKHdpZHRoLCBoZWlnaHQsIDgsIDMyLCBi
eXRlc1BlclJvdywgc1JHQkNvbG9yU3BhY2VSZWYoKSwgYml0bWFwSW5mbywgcHJvdmlkZXIuZ2V0
KCksIG51bGxwdHIsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEltYWdlQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBA
QCBjbGFzcyBJbWFnZUJ1ZmZlciA6IHB1YmxpYyBDb25jcmV0ZUltYWdlCiAgICAgdXNpbmcgQmFz
ZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmJhc2VUcmFuc2Zvcm07CiAKIHB1YmxpYzoKLSAgICBzdGF0
aWMgYXV0byBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZv
cm1hdCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKKyAgICBzdGF0aWMgYXV0byBjcmVh
dGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQs
IGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiAgICAgewogICAgICAgICByZXR1cm4gQmFz
ZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnRlbXBsYXRlIGNyZWF0ZTxJbWFnZUJ1ZmZlcj4oc2l6ZSwg
cmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgaG9zdFdpbmRvdyk7CiAg
ICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
ODEsNyArMjgxLDcgQEAgdm9pZCBJdGVtSGFuZGxlOjpkZXN0cm95KCkKICAgICAgICAgZ2V0PEZp
bGxSb3VuZGVkUmVjdD4oKS5+RmlsbFJvdW5kZWRSZWN0KCk7CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIEl0ZW1UeXBlOjpHZXRQaXhlbEJ1ZmZlcjoKLSAgICAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8R2V0UGl4ZWxCdWZmZXI+Ojp2YWx1ZSk7Cisg
ICAgICAgIGdldDxHZXRQaXhlbEJ1ZmZlcj4oKS5+R2V0UGl4ZWxCdWZmZXIoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIGNhc2UgSXRlbVR5cGU6OlB1dFBpeGVsQnVmZmVyOgogICAgICAgICBnZXQ8
UHV0UGl4ZWxCdWZmZXI+KCkuflB1dFBpeGVsQnVmZmVyKCk7CkBAIC0zMDcsNyArMzA3LDcgQEAg
dm9pZCBJdGVtSGFuZGxlOjpkZXN0cm95KCkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAgICAg
Y2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEJlZ2luQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzPjo6dmFsdWUpOworICAgICAgICBnZXQ8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFu
ZHM+KCkufkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIEl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOgogICAgICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxCZWdpblRyYW5zcGFyZW5jeUxh
eWVyPjo6dmFsdWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCSh3b3JraW5nIGNvcHkpCkBAIC04ODAsMjMgKzg4MCw1
NSBAQCBPcHRpb25hbDxDbGlwUGF0aD4gQ2xpcFBhdGg6OmRlY29kZShEZWNvCiBjbGFzcyBCZWdp
bkNsaXBUb0RyYXdpbmdDb21tYW5kcyB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBJ
dGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczsK
LSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0gdHJ1ZTsKKyAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0gZmFsc2U7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSBmYWxzZTsKIAotICAgIEJlZ2luQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSBjb2xvclNwYWNlKQorICAgIEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JT
cGFjZSkKICAgICAgICAgOiBtX2Rlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKQogICAgICAgICAsIG1f
Y29sb3JTcGFjZShjb2xvclNwYWNlKQogICAgIHsKICAgICB9CiAKKyAgICBCZWdpbkNsaXBUb0Ry
YXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmJiBjb2xvclNwYWNlKQorICAgICAgICA6IG1fZGVzdGluYXRpb24oZGVzdGluYXRp
b24pCisgICAgICAgICwgbV9jb2xvclNwYWNlKFdURk1vdmUoY29sb3JTcGFjZSkpCisgICAgewor
ICAgIH0KKwogICAgIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX2Rlc3RpbmF0aW9uOyB9Ci0gICAgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2Uo
KSBjb25zdCB7IHJldHVybiBtX2NvbG9yU3BhY2U7IH0KKyAgICBjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yU3BhY2U7IH0KKwor
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QmVnaW5DbGlwVG9E
cmF3aW5nQ29tbWFuZHM+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6CiAgICAgRmxvYXRS
ZWN0IG1fZGVzdGluYXRpb247CiAgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1fY29sb3JTcGFj
ZTsKIH07CiAKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEJlZ2luQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVy
IDw8IG1fZGVzdGluYXRpb247CisgICAgZW5jb2RlciA8PCBtX2NvbG9yU3BhY2U7Cit9CisKK3Rl
bXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5k
cz4gQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
eworICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZGVzdGluYXRpb247CisgICAgZGVjb2RlciA+PiBk
ZXN0aW5hdGlvbjsKKyAgICBpZiAoIWRlc3RpbmF0aW9uKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNl
OworICAgIGRlY29kZXIgPj4gY29sb3JTcGFjZTsKKyAgICBpZiAoIWNvbG9yU3BhY2UpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4ge3sgKmRlc3RpbmF0aW9uLCBX
VEZNb3ZlKCpjb2xvclNwYWNlKSB9fTsKK30KKwogY2xhc3MgRW5kQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIEl0ZW1UeXBlIGl0ZW1UeXBlID0g
SXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczsKQEAgLTE5MzgsMjMgKzE5NzAsNTUg
QEAgcHJpdmF0ZToKIGNsYXNzIEdldFBpeGVsQnVmZmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3RleHByIEl0ZW1UeXBlIGl0ZW1UeXBlID0gSXRlbVR5cGU6OkdldFBpeGVsQnVmZmVyOwot
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSB0cnVlOworICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSBmYWxzZTsKICAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IGZhbHNlOwogCi0gICAgR2V0UGl4ZWxCdWZmZXIoV2Vi
Q29yZTo6UGl4ZWxCdWZmZXJGb3JtYXQgb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBzcmNSZWN0KQorICAgIEdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0
JiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpCiAgICAgICAgIDogbV9zcmNS
ZWN0KHNyY1JlY3QpCiAgICAgICAgICwgbV9vdXRwdXRGb3JtYXQob3V0cHV0Rm9ybWF0KQogICAg
IHsKICAgICB9CiAKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBvdXRwdXRGb3JtYXQoKSBjb25zdCB7
IHJldHVybiBtX291dHB1dEZvcm1hdDsgfQorICAgIEdldFBpeGVsQnVmZmVyKFBpeGVsQnVmZmVy
Rm9ybWF0JiYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KQorICAgICAgICA6
IG1fc3JjUmVjdChzcmNSZWN0KQorICAgICAgICAsIG1fb3V0cHV0Rm9ybWF0KFdURk1vdmUob3V0
cHV0Rm9ybWF0KSkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQm
IG91dHB1dEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fb3V0cHV0Rm9ybWF0OyB9CiAgICAgSW50
UmVjdCBzcmNSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CiAKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEdldFBpeGVsQnVmZmVyPiBkZWNvZGUo
RGVjb2RlciYpOworCiBwcml2YXRlOgogICAgIEludFJlY3QgbV9zcmNSZWN0OwogICAgIFBpeGVs
QnVmZmVyRm9ybWF0IG1fb3V0cHV0Rm9ybWF0OwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4KK3ZvaWQgR2V0UGl4ZWxCdWZmZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAor
eworICAgIGVuY29kZXIgPDwgbV9zcmNSZWN0OworICAgIGVuY29kZXIgPDwgbV9vdXRwdXRGb3Jt
YXQ7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxHZXRQaXhlbEJ1ZmZl
cj4gR2V0UGl4ZWxCdWZmZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlv
bmFsPEludFJlY3Q+IHNyY1JlY3Q7CisgICAgZGVjb2RlciA+PiBzcmNSZWN0OworICAgIGlmICgh
c3JjUmVjdCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPFBp
eGVsQnVmZmVyRm9ybWF0PiBvdXRwdXRGb3JtYXQ7CisgICAgZGVjb2RlciA+PiBvdXRwdXRGb3Jt
YXQ7CisgICAgaWYgKCFvdXRwdXRGb3JtYXQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICByZXR1cm4ge3sgV1RGTW92ZSgqb3V0cHV0Rm9ybWF0KSwgKnNyY1JlY3QgfX07Cit9
CisKIGNsYXNzIFB1dFBpeGVsQnVmZmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHBy
IEl0ZW1UeXBlIGl0ZW1UeXBlID0gSXRlbVR5cGU6OlB1dFBpeGVsQnVmZmVyOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTIsNyArNDUyLDcgQEAgdm9pZCBS
ZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdQogICAgIGFwcGVuZDxDbGlwVG9JbWFn
ZUJ1ZmZlcj4oaW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIGRlc3RS
ZWN0KTsKIH0KIAotdm9pZCBSZWNvcmRlcjo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBG
dW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikKK3ZvaWQg
UmVjb3JkZXI6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZv
aWQoR3JhcGhpY3NDb250ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKQogewogICAgIEdyYXBoaWNz
Q29udGV4dCBuZXN0ZWRDb250ZXh0KFsmXShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIHsKICAg
ICAgICAgYXV0byBpbml0aWFsQ2xpcCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGRlc3RpbmF0
aW9uLnNpemUoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw3
ICsxNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRS
dWxlKSBvdmVycmlkZTsKICAgICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBvdmVycmlkZTsKICAgICB2
b2lkIGNsaXBUb0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRS
ZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2b2lk
KEdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsaXBUb0RyYXdpbmdD
b21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsK
ICNpZiBFTkFCTEUoVklERU8pCiAgICAgdm9pZCBwYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5
ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSBvdmVycmlkZTsKICAgICBib29sIGNh
blBhaW50RnJhbWVGb3JNZWRpYShjb25zdCBNZWRpYVBsYXllciYpIGNvbnN0IG92ZXJyaWRlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNl
bWVudE1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgRkVEaXNwbGFjZW1lbnRN
YXA6OnNldFNjYWxlKGZsb2F0IHMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBGRURpc3Bs
YWNlbWVudE1hcDo6c2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpCit2
b2lkIEZFRGlzcGxhY2VtZW50TWFwOjpzZXRSZXN1bHRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYpCiB7CiAgICAgLy8gU3BlYzogVGhlICdjb2xvci1pbnRlcnBvbGF0aW9u
LWZpbHRlcnMnIHByb3BlcnR5IG9ubHkgYXBwbGllcyB0byB0aGUgJ2luMicgc291cmNlIGltYWdl
CiAgICAgLy8gYW5kIGRvZXMgbm90IGFwcGx5IHRvIHRoZSAnaW4nIHNvdXJjZSBpbWFnZS4gVGhl
ICdpbicgc291cmNlIGltYWdlIG11c3QgcmVtYWluIGluIGl0cwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFj
ZW1lbnRNYXAuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBmbG9hdCBzY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2NhbGU7IH0KICAgICBib29sIHNldFNjYWxlKGZsb2F0KTsKIAotICAgIHZvaWQgc2V0UmVzdWx0
Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
UmVzdWx0Q29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKSBvdmVycmlkZTsK
ICAgICB2b2lkIHRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRmlsdGVyRWZmZWN0KiwgY29uc3Qg
aW50KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5oCShyZXZpc2lvbiAyNzc5MTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaAkod29y
a2luZyBjb3B5KQpAQCAtNDAsOCArNDAsOCBAQCBwdWJsaWM6CiAjaWYgIVVTRShDRykKICAgICAv
LyBmZUZsb29kIGRvZXMgbm90IHBlcmZvcm0gY29sb3IgaW50ZXJwb2xhdGlvbiBvZiBhbnkga2lu
ZCwgc28gdGhlIHJlc3VsdCBpcyBhbHdheXMgaW4gdGhlIGN1cnJlbnQKICAgICAvLyBjb2xvciBz
cGFjZSByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZSBvZiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRl
cnMuCi0gICAgdm9pZCBzZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSkgb3ZlcnJpZGUgeyBGaWx0ZXJFZmZlY3Q6OnNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKTsgfQotICAgIHZvaWQgc2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0
aW5hdGlvbkNvbG9yU3BhY2UpIG92ZXJyaWRlIHsgRmlsdGVyRWZmZWN0OjpzZXRSZXN1bHRDb2xv
clNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7IH0KKyAgICB2b2lkIHNldE9wZXJh
dGluZ0NvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJikgb3ZlcnJpZGUgeyBG
aWx0ZXJFZmZlY3Q6OnNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCkpOyB9CisgICAgdm9pZCBzZXRSZXN1bHRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYpIG92ZXJyaWRlIHsgRmlsdGVyRWZmZWN0OjpzZXRSZXN1bHRDb2xvclNwYWNl
KERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsgfQogI2VuZGlmCiAKIHByaXZhdGU6Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RVRpbGUuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcg
QEAgdm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgICAgIHRpbGVSZWN0
LnNjYWxlKGZpbHRlci5maWx0ZXJSZXNvbHV0aW9uKCkud2lkdGgoKSwgZmlsdGVyLmZpbHRlclJl
c29sdXRpb24oKS5oZWlnaHQoKSk7CiAgICAgfQogCi0gICAgYXV0byB0aWxlSW1hZ2UgPSBTVkdS
ZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcih0aWxlUmVjdCwgdGlsZVJlY3QsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgZmlsdGVyKCkucmVuZGVyaW5nTW9kZSgpKTsKKyAg
ICBhdXRvIHRpbGVJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVy
KHRpbGVSZWN0LCB0aWxlUmVjdCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGZpbHRl
cigpLnJlbmRlcmluZ01vZGUoKSk7CiAgICAgaWYgKCF0aWxlSW1hZ2UpCiAgICAgICAgIHJldHVy
bjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJFZmZlY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MzksNyArNDM5LDcgQEAgc3RhdGljIHZvaWQgY29weVVucHJlbXVsdGlw
bHlpbmdBbHBoYShjbwogI2VuZGlmCiB9CiAKLU9wdGlvbmFsPFBpeGVsQnVmZmVyPiBGaWx0ZXJF
ZmZlY3Q6OmNvbnZlcnRQaXhlbEJ1ZmZlclRvQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UgdGFyZ2V0Q29sb3JTcGFjZSwgUGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyKQorT3B0aW9uYWw8
UGl4ZWxCdWZmZXI+IEZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVsQnVmZmVyVG9Db2xvclNwYWNl
KGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgdGFyZ2V0Q29sb3JTcGFjZSwgUGl4ZWxCdWZm
ZXImIHBpeGVsQnVmZmVyKQogewogICAgIC8vIEZJWE1FOiBVc2luZyBhbiBJbWFnZUJ1ZmZlciB0
byBwZXJmb3JtIHRoZSBjb2xvciBzcGFjZSBjb252ZXJzaW9uIGlzIHVubmVjZXNzYXJ5LiBXZSBj
YW4gZG8gaXQgZGlyZWN0bHkuCiAKQEAgLTQ1NCw3ICs0NTQsNyBAQCBPcHRpb25hbDxQaXhlbEJ1
ZmZlcj4gRmlsdGVyRWZmZWN0Ojpjb252CiAgICAgcmV0dXJuIGNvbnZlcnRJbWFnZUJ1ZmZlclRv
Q29sb3JTcGFjZSh0YXJnZXRDb2xvclNwYWNlLCAqYnVmZmVyLCBkZXN0aW5hdGlvblJlY3QsIHBp
eGVsQnVmZmVyLmZvcm1hdCgpLmFscGhhRm9ybWF0KTsKIH0KIAotT3B0aW9uYWw8UGl4ZWxCdWZm
ZXI+IEZpbHRlckVmZmVjdDo6Y29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKERlc3RpbmF0
aW9uQ29sb3JTcGFjZSB0YXJnZXRDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlciYgaW5wdXRCdWZmZXIs
IGNvbnN0IEludFJlY3QmIHJlY3QsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0QWxwaGFG
b3JtYXQpCitPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gRmlsdGVyRWZmZWN0Ojpjb252ZXJ0SW1hZ2VC
dWZmZXJUb0NvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiB0YXJnZXRDb2xv
clNwYWNlLCBJbWFnZUJ1ZmZlciYgaW5wdXRCdWZmZXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIEFs
cGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0QWxwaGFGb3JtYXQpCiB7CiAgICAgLy8gRklYTUU6
IFRoaXMgY2FuIGJlIGRvbmUgbW9yZSBkaXJlY3RseSB1c2luZyBQaXhlbEJ1ZmZlckNvbnZlcnNp
b24uCiAKQEAgLTQ3Miw3ICs0NzIsNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gRmlsdGVyRWZm
ZWN0Ojpjb252CiAgICAgcmV0dXJuIGNvbnZlcnRlZEJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoZm9y
bWF0LCByZWN0KTsKIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRJbWFnZUJ1
ZmZlclRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRG
b3JtYXQsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlD
b252ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmIGRlc3Rp
bmF0aW9uLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIEFscGhhUHJl
bXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsK
ICAgICAvLyBDb252ZXJ0cyB0aGUgZGF0YSBzdG9yZWQgaW4gbV9pbWFnZUJ1ZmZlclJlc3VsdCwg
YW5kIHNhdmUgdG8gZGVzdGluYXRpb24KICAgICBhdXRvIGNvbnZlcnRlZFBpeGVsQnVmZmVyID0g
Y29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKGNvbG9yU3BhY2UsICptX2ltYWdlQnVmZmVy
UmVzdWx0LCB7IEludFBvaW50KCksIG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpIH0sIG91dHB1
dEZvcm1hdCk7CkBAIC00ODEsNyArNDgxLDcgQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlDb252
ZXJ0ZWRJbWFnZUJ1ZgogICAgIGNvcHlJbWFnZUJ5dGVzKGNvbnZlcnRlZFBpeGVsQnVmZmVyLT5k
YXRhKCksIGRlc3RpbmF0aW9uLCBkZXN0UmVjdCk7CiB9CiAKLXZvaWQgRmlsdGVyRWZmZWN0Ojpj
b3B5Q29udmVydGVkUGl4ZWxCdWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiBk
ZXN0aW5hdGlvbiwgUGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEZpbHRlckVmZmVj
dDo6Y29weUNvbnZlcnRlZFBpeGVsQnVmZmVyVG9EZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJh
eSYgZGVzdGluYXRpb24sIFBpeGVsQnVmZmVyJiBwaXhlbEJ1ZmZlciwgY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKICAg
ICAvLyBDb252ZXJ0cyB0aGUgZGF0YSBzdG9yZWQgaW4gbV91bm11bHRpcGxpZWRJbWFnZVJlc3Vs
dC9tX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCwKICAgICAvLyB3aGljaGV2ZXIgaXNuJ3QgbnVs
bCwgYW5kIHNhdmUgdG8gZGVzdGluYXRpb24KQEAgLTYyOCw3ICs2MjgsNyBAQCBib29sIEZpbHRl
ckVmZmVjdDo6cmVxdWlyZXNQaXhlbEJ1ZmZlckNvCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBkZXRl
cm1pbmVzIHdoZXRoZXIgd2UgbmVlZCB0aGUgc3RlcCBvZiBhbiBleHRyYSBjb2xvciBzcGFjZSBj
b252ZXJzaW9uCiAgICAgLy8gV2Ugb25seSBuZWVkIGV4dHJhIGNvbG9yIGNvbnZlcnNpb24gd2hl
biAxKSBjb2xvciBzcGFjZSBpcyBkaWZmZXJlbnQgaW4gdGhlIGlucHV0CiAgICAgLy8gQU5EIDIp
IHRoZSBmaWx0ZXIgaXMgbWFuaXB1bGF0aW5nIHJhdyBwaXhlbHMKLSAgICByZXR1cm4gZGVzdGlu
YXRpb25Db2xvclNwYWNlICYmIHJlc3VsdENvbG9yU3BhY2UoKSAhPSAqZGVzdGluYXRpb25Db2xv
clNwYWNlOworICAgIHJldHVybiByZXN1bHRDb2xvclNwYWNlKCkgIT0gZGVzdGluYXRpb25Db2xv
clNwYWNlOwogI2Vsc2UKICAgICAvLyBBZGRpdGlvbmFsIGNvbG9yIHNwYWNlIGNvbnZlcnNpb24g
aXMgbm90IG5lZWRlZCBvbiBub24tQ0cKICAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb25Db2xv
clNwYWNlKTsKQEAgLTYzNiw3ICs2MzYsNyBAQCBib29sIEZpbHRlckVmZmVjdDo6cmVxdWlyZXNQ
aXhlbEJ1ZmZlckNvCiAjZW5kaWYKIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3Q6OnRyYW5zZm9ybVJl
c3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIGRlc3RpbmF0aW9uQ29sb3JTcGFj
ZSkKK3ZvaWQgRmlsdGVyRWZmZWN0Ojp0cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKGNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYgZGVzdGluYXRpb25Db2xvclNwYWNlKQogewogI2lmIFVTRShD
RykKICAgICAvLyBDRyBoYW5kbGVzIGNvbG9yIHNwYWNlIGFkanVzdG1lbnRzIGludGVybmFsbHku
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyRWZmZWN0LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTIzLDcgKzIzLDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbi5oIgotI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJEZXN0aW5h
dGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJJbnRS
ZWN0LmgiCiAjaW5jbHVkZSAiSW50UmVjdEV4dGVudC5oIgpAQCAtMTY1LDEzICsxNjUsMTMgQEAg
cHVibGljOgogICAgIGJvb2wgY2xpcHNUb0JvdW5kcygpIGNvbnN0IHsgcmV0dXJuIG1fY2xpcHNU
b0JvdW5kczsgfQogICAgIHZvaWQgc2V0Q2xpcHNUb0JvdW5kcyhib29sIHZhbHVlKSB7IG1fY2xp
cHNUb0JvdW5kcyA9IHZhbHVlOyB9CiAKLSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugb3BlcmF0
aW5nQ29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW5nQ29sb3JTcGFjZTsgfQot
ICAgIHZpcnR1YWwgdm9pZCBzZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JT
cGFjZSBjb2xvclNwYWNlKSB7IG1fb3BlcmF0aW5nQ29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7IH0K
LSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgcmVzdWx0Q29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzdWx0Q29sb3JTcGFjZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRSZXN1bHRDb2xv
clNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKSB7IG1fcmVzdWx0Q29sb3JT
cGFjZSA9IGNvbG9yU3BhY2U7IH0KKyAgICBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIG9w
ZXJhdGluZ0NvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX29wZXJhdGluZ0NvbG9yU3BhY2U7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0T3BlcmF0aW5nQ29sb3JTcGFjZShjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpIHsgbV9vcGVyYXRpbmdDb2xvclNwYWNlID0gY29s
b3JTcGFjZTsgfQorICAgIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgcmVzdWx0Q29sb3JT
cGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0Q29sb3JTcGFjZTsgfQorICAgIHZpcnR1YWwg
dm9pZCBzZXRSZXN1bHRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29s
b3JTcGFjZSkgeyBtX3Jlc3VsdENvbG9yU3BhY2UgPSBjb2xvclNwYWNlOyB9CiAKICAgICB2aXJ0
dWFsIHZvaWQgdHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShGaWx0ZXJFZmZlY3QqIGluLCBjb25z
dCBpbnQpIHsgaW4tPnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UobV9vcGVyYXRpbmdDb2xvclNw
YWNlKTsgfQotICAgIHZvaWQgdHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNv
bG9yU3BhY2UpOworICAgIHZvaWQgdHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmKTsKICAgICAKICAgICBzdGF0aWMgVmVjdG9yPGZsb2F0PiBub3Jt
YWxpemVkRmxvYXRzKGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZhbHVlcykKICAgICB7CkBAIC0yMDMs
MTEgKzIwMywxMSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29m
dHdhcmUoKSA9IDA7CiAKICAgICB2b2lkIGNvcHlJbWFnZUJ5dGVzKGNvbnN0IFVpbnQ4Q2xhbXBl
ZEFycmF5JiBzb3VyY2UsIFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50
UmVjdCYpIGNvbnN0OwotICAgIHZvaWQgY29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0aW5h
dGlvbihVaW50OENsYW1wZWRBcnJheSYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZvaWQgY29weUNvbnZlcnRlZFBp
eGVsQnVmZmVyVG9EZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYsIFBpeGVsQnVmZmVyJiwg
RGVzdGluYXRpb25Db2xvclNwYWNlLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdm9pZCBjb3B5Q29u
dmVydGVkSW1hZ2VCdWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwgY29uc3QgSW50
UmVjdCYpOworICAgIHZvaWQgY29weUNvbnZlcnRlZFBpeGVsQnVmZmVyVG9EZXN0aW5hdGlvbihV
aW50OENsYW1wZWRBcnJheSYsIFBpeGVsQnVmZmVyJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiwgY29uc3QgSW50UmVjdCYpOwogICAgIGJvb2wgcmVxdWlyZXNQaXhlbEJ1ZmZlckNvbG9y
U3BhY2VDb252ZXJzaW9uKE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4pOwotICAgIE9w
dGlvbmFsPFBpeGVsQnVmZmVyPiBjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UoRGVzdGlu
YXRpb25Db2xvclNwYWNlLCBJbWFnZUJ1ZmZlciYsIGNvbnN0IEludFJlY3QmLCBBbHBoYVByZW11
bHRpcGxpY2F0aW9uKTsKLSAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gY29udmVydFBpeGVsQnVm
ZmVyVG9Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUGl4ZWxCdWZmZXImKTsKKyAg
ICBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gY29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEltYWdlQnVmZmVyJiwgY29uc3QgSW50UmVjdCYs
IEFscGhhUHJlbXVsdGlwbGljYXRpb24pOworICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBjb252
ZXJ0UGl4ZWxCdWZmZXJUb0NvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwg
UGl4ZWxCdWZmZXImKTsKICAgICAKIAogICAgIEZpbHRlciYgbV9maWx0ZXI7CkBAIC0yNDQsMTMg
KzI0NCwxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9jbGlwc1RvQm91bmRzIHsgdHJ1ZSB9Owog
CiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQotICAgIHN0
YXRpYyBjb25zdGV4cHIgYXV0byBkZWZhdWx0T3BlcmF0aW5nQ29sb3JTcGFjZSA9IERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQjsKKyAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgbV9v
cGVyYXRpbmdDb2xvclNwYWNlIHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCkg
fTsKICNlbHNlCi0gICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGRlZmF1bHRPcGVyYXRpbmdDb2xv
clNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOworICAgIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSBtX29wZXJhdGluZ0NvbG9yU3BhY2UgeyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSB9OwogI2VuZGlmCi0KLSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgbV9vcGVyYXRpbmdD
b2xvclNwYWNlIHsgZGVmYXVsdE9wZXJhdGluZ0NvbG9yU3BhY2UgfTsKLSAgICBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgbV9yZXN1bHRDb2xvclNwYWNlIHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCIH07CisgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1fcmVzdWx0Q29sb3JTcGFjZSB7IERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgCiAgICAgY29uc3QgVHlwZSBtX2Zp
bHRlckVmZmVjdENsYXNzVHlwZTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3Vy
Y2VHcmFwaGljLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgcHJpdmF0ZToKICAg
ICBTb3VyY2VHcmFwaGljKEZpbHRlciYgZmlsdGVyKQogICAgICAgICA6IEZpbHRlckVmZmVjdChm
aWx0ZXIsIFR5cGU6OlNvdXJjZUdyYXBoaWMpCiAgICAgewotICAgICAgICBzZXRPcGVyYXRpbmdD
b2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CisgICAgICAgIHNldE9wZXJh
dGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgIH0KIAog
ICAgIGNvbnN0IGNoYXIqIGZpbHRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiU291cmNl
R3JhcGhpYyI7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvdGV4bWFwL05pY29zaWFHQ0dMTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQ0dMTGF5ZXIuY3Bw
CShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTExheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEs
NyArODEsNyBAQCB2b2lkIEdDR0xMYXllcjo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAgICAgSW50
U2l6ZSB0ZXh0dXJlU2l6ZShtX2NvbnRleHQubV9jdXJyZW50V2lkdGgsIG1fY29udGV4dC5tX2N1
cnJlbnRIZWlnaHQpOwogICAgIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MgPSBtX2NvbnRl
eHQuY29udGV4dEF0dHJpYnV0ZXMoKS5hbHBoYSA/IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxl
bmQgOiAwOwogI2lmIFVTRShBTkdMRSkKLSAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+
IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZXh0dXJlU2l6ZSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gaW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRleHR1cmVTaXplLCBSZW5kZXJpbmdNb2RlOjpV
bmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiB7Ci0gICAgUGl4
ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0
aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9
OworICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246
OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSB9OwogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3Jl
YXRlKGZvcm1hdCwgZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSk7CiAgICAgaWYgKCFwaXhl
bEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEVTLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZWFkblBpeGVsCiAKIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiB7Ci0gICAgUGl4
ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0
aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9
OworICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246
OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSB9OwogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3Jl
YXRlKGZvcm1hdCwgZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSk7CiAgICAgaWYgKCFwaXhl
bEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVy
ZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgs
NyBAQCB2b2lkIEJpdG1hcFRleHR1cmU6OnVwZGF0ZUNvbnRlbnRzKEdyYXBoCiB7CiAgICAgLy8g
TWFraW5nIGFuIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkIGJ1ZmZlciBoZXJlIGlzIE9L
IGJlY2F1c2UgdGhpcyBjb2RlCiAgICAgLy8gaXNuJ3QgdXNlZCBieSBhbnkgcGxhdGZvcm1zIHRo
YXQgcmVzcGVjdCB0aGUgYWNjZWxlcmF0ZWQgYml0LgotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHRhcmdldFJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFj
Y2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGFyZ2V0
UmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghaW1hZ2VC
dWZmZXIpCiAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBNaWNo
YWVsIEVtbWVsIG1pa2UuZW1tZWxAZ21haWwuY29tCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ2hy
aXN0aWFuIER5d2FuIDxjaHJpc3RpYW5AaW1lbmRpby5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDggQ29sbGFib3JhIEx0ZC4KQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xv
clNwYWNlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CiAjaW5jbHVkZSAiR3RrVXRpbGl0aWVzLmgiCkBAIC04NSw2ICs4NiwxMSBAQCBib29sIHNjcmVl
bklzTW9ub2Nocm9tZShXaWRnZXQqIHdpZGdldCkKICAgICByZXR1cm4gc2NyZWVuRGVwdGgod2lk
Z2V0KSA8IDI7CiB9CiAKK0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBzY3JlZW5Db2xvclNwYWNlKFdp
ZGdldCopCit7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOworfQor
CiBib29sIHNjcmVlbkhhc0ludmVydGVkQ29sb3JzKCkKIHsKICAgICByZXR1cm4gZmFsc2U7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5JT1MubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU2NyZWVuSU9T
Lm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxh
dGZvcm1TY3JlZW5JT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA2LCAyMDE0IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04OCw5ICs4OCw5IEBAIGJv
b2wgc2NyZWVuU3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlKFdpZGcKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLUNHQ29sb3JTcGFjZVJlZiBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCogd2lkZ2V0KQor
RGVzdGluYXRpb25Db2xvclNwYWNlIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KiB3aWRnZXQpCiB7
Ci0gICAgcmV0dXJuIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcih3aWRnZXQpID8gZXh0ZW5k
ZWRTUkdCQ29sb3JTcGFjZVJlZigpIDogc1JHQkNvbG9yU3BhY2VSZWYoKTsKKyAgICByZXR1cm4g
c2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKHdpZGdldCkgPyBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UgeyBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCkgfSA6IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpOwogfQogCiAvLyBUaGVzZSBmdW5jdGlvbnMgc2NhbGUgYmV0d2VlbiBzY3JlZW4g
YW5kIHBhZ2UgY29vcmRpbmF0ZXMgYmVjYXVzZSBKYXZhU2NyaXB0L0RPTSBvcGVyYXRpb25zCkBA
IC0xOTMsMTYgKzE5MywxNCBAQCBTY3JlZW5Qcm9wZXJ0aWVzIGNvbGxlY3RTY3JlZW5Qcm9wZXJ0
aWVzCiAgICAgICAgIEZsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0ID0gc2NyZWVuLmJvdW5k
czsKICAgICAgICAgc2NyZWVuQXZhaWxhYmxlUmVjdC5zZXRZKE5TTWF4WShzY3JlZW4uYm91bmRz
KSAtIChzY3JlZW5BdmFpbGFibGVSZWN0LnkoKSArIHNjcmVlbkF2YWlsYWJsZVJlY3QuaGVpZ2h0
KCkpKTsgLy8gZmxpcAogICAgICAgICBGbG9hdFJlY3Qgc2NyZWVuUmVjdCA9IHNjcmVlbi5fcmVm
ZXJlbmNlQm91bmRzOwotICAgICAgICAKLSAgICAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJl
Zj4gY29sb3JTcGFjZSA9IHNjcmVlbkNvbG9yU3BhY2UobnVsbHB0cik7Ci0gICAgICAgIAorICAg
ICAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSB7IHNjcmVlbkNvbG9yU3BhY2Uo
bnVsbHB0cikgfTsKICAgICAgICAgaW50IHNjcmVlbkRlcHRoID0gV2ViQ29yZTo6c2NyZWVuRGVw
dGgobnVsbHB0cik7CiAgICAgICAgIGludCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCA9IFdlYkNv
cmU6OnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KG51bGxwdHIpOwogICAgICAgICBib29sIHNjcmVl
blN1cHBvcnRzRXh0ZW5kZWRDb2xvciA9IFdlYkNvcmU6OnNjcmVlblN1cHBvcnRzRXh0ZW5kZWRD
b2xvcihudWxscHRyKTsKICAgICAgICAgYm9vbCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycyA9IFdl
YkNvcmU6OnNjcmVlbkhhc0ludmVydGVkQ29sb3JzKCk7CiAgICAgICAgIGZsb2F0IHNjYWxlRmFj
dG9yID0gV2ViQ29yZTo6c2NyZWVuUFBJRmFjdG9yKCk7CiAKLSAgICAgICAgc2NyZWVuUHJvcGVy
dGllcy5zY3JlZW5EYXRhTWFwLnNldCgrK2Rpc3BsYXlJRCwgU2NyZWVuRGF0YSB7IHNjcmVlbkF2
YWlsYWJsZVJlY3QsIHNjcmVlblJlY3QsIGNvbG9yU3BhY2UsIHNjcmVlbkRlcHRoLCBzY3JlZW5E
ZXB0aFBlckNvbXBvbmVudCwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yLCBzY3JlZW5IYXNJ
bnZlcnRlZENvbG9ycywgZmFsc2UsIHNjYWxlRmFjdG9yIH0pOworICAgICAgICBzY3JlZW5Qcm9w
ZXJ0aWVzLnNjcmVlbkRhdGFNYXAuc2V0KCsrZGlzcGxheUlELCBTY3JlZW5EYXRhIHsgc2NyZWVu
QXZhaWxhYmxlUmVjdCwgc2NyZWVuUmVjdCwgV1RGTW92ZShjb2xvclNwYWNlKSwgc2NyZWVuRGVw
dGgsIHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50LCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3Is
IHNjcmVlbkhhc0ludmVydGVkQ29sb3JzLCBmYWxzZSwgc2NhbGVGYWN0b3IgfSk7CiAgICAgICAg
IAogICAgICAgICBpZiAoc2NyZWVuID09IFtQQUw6OmdldFVJU2NyZWVuQ2xhc3MoKSBtYWluU2Ny
ZWVuXSkKICAgICAgICAgICAgIHNjcmVlblByb3BlcnRpZXMucHJpbWFyeURpc3BsYXlJRCA9IGRp
c3BsYXlJRDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVl
bk1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZv
cm1TY3JlZW5NYWMubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTMwLDkgKzEz
MCw3IEBAIFNjcmVlblByb3BlcnRpZXMgY29sbGVjdFNjcmVlblByb3BlcnRpZXMKICAgICAgICAg
RmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QgPSBzY3JlZW4udmlzaWJsZUZyYW1lOwogICAg
ICAgICBzY3JlZW5BdmFpbGFibGVSZWN0LnNldFkoTlNNYXhZKHNjcmVlbi5mcmFtZSkgLSAoc2Ny
ZWVuQXZhaWxhYmxlUmVjdC55KCkgKyBzY3JlZW5BdmFpbGFibGVSZWN0LmhlaWdodCgpKSk7IC8v
IGZsaXAKICAgICAgICAgRmxvYXRSZWN0IHNjcmVlblJlY3QgPSBzY3JlZW4uZnJhbWU7Ci0KLSAg
ICAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZSA9IHNjcmVlbi5jb2xv
clNwYWNlLkNHQ29sb3JTcGFjZTsKLQorICAgICAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29s
b3JTcGFjZSB7IHNjcmVlbi5jb2xvclNwYWNlLkNHQ29sb3JTcGFjZSB9OwogICAgICAgICBpbnQg
c2NyZWVuRGVwdGggPSBOU0JpdHNQZXJQaXhlbEZyb21EZXB0aChzY3JlZW4uZGVwdGgpOwogICAg
ICAgICBpbnQgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQgPSBOU0JpdHNQZXJTYW1wbGVGcm9tRGVw
dGgoc2NyZWVuLmRlcHRoKTsKICAgICAgICAgYm9vbCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29s
b3IgPSBbc2NyZWVuIGNhblJlcHJlc2VudERpc3BsYXlHYW11dDpOU0Rpc3BsYXlHYW11dFAzXTsK
QEAgLTE2Myw3ICsxNjEsNyBAQCBTY3JlZW5Qcm9wZXJ0aWVzIGNvbGxlY3RTY3JlZW5Qcm9wZXJ0
aWVzCiAgICAgICAgIGlmIChkaXNwbGF5TWFzaykKICAgICAgICAgICAgIGdwdUlEID0gZ3B1SURG
b3JEaXNwbGF5TWFzayhkaXNwbGF5TWFzayk7CiAKLSAgICAgICAgc2NyZWVuUHJvcGVydGllcy5z
Y3JlZW5EYXRhTWFwLnNldChkaXNwbGF5SUQsIFNjcmVlbkRhdGEgeyBzY3JlZW5BdmFpbGFibGVS
ZWN0LCBzY3JlZW5SZWN0LCBjb2xvclNwYWNlLCBzY3JlZW5EZXB0aCwgc2NyZWVuRGVwdGhQZXJD
b21wb25lbnQsIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciwgc2NyZWVuSGFzSW52ZXJ0ZWRD
b2xvcnMsIHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZSwgc2NyZWVuSXNNb25vY2hyb21l
LCBkaXNwbGF5TWFzaywgZ3B1SUQsIGR5bmFtaWNSYW5nZU1vZGUsIHNjYWxlRmFjdG9yIH0pOwor
ICAgICAgICBzY3JlZW5Qcm9wZXJ0aWVzLnNjcmVlbkRhdGFNYXAuc2V0KGRpc3BsYXlJRCwgU2Ny
ZWVuRGF0YSB7IHNjcmVlbkF2YWlsYWJsZVJlY3QsIHNjcmVlblJlY3QsIFdURk1vdmUoY29sb3JT
cGFjZSksIHNjcmVlbkRlcHRoLCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCwgc2NyZWVuU3VwcG9y
dHNFeHRlbmRlZENvbG9yLCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycywgc2NyZWVuU3VwcG9ydHNI
aWdoRHluYW1pY1JhbmdlLCBzY3JlZW5Jc01vbm9jaHJvbWUsIGRpc3BsYXlNYXNrLCBncHVJRCwg
ZHluYW1pY1JhbmdlTW9kZSwgc2NhbGVGYWN0b3IgfSk7CiAKICAgICAgICAgaWYgKCFzY3JlZW5Q
cm9wZXJ0aWVzLnByaW1hcnlEaXNwbGF5SUQpCiAgICAgICAgICAgICBzY3JlZW5Qcm9wZXJ0aWVz
LnByaW1hcnlEaXNwbGF5SUQgPSBkaXNwbGF5SUQ7CkBAIC0zNDAsMTMgKzMzOCwxMyBAQCBOU1Nj
cmVlbiAqc2NyZWVuKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsCiAgICAgcmV0dXJuIGZpcnN0U2Ny
ZWVuKCk7CiB9CiAKLUNHQ29sb3JTcGFjZVJlZiBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCogd2lk
Z2V0KQorRGVzdGluYXRpb25Db2xvclNwYWNlIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KiB3aWRn
ZXQpCiB7CiAgICAgaWYgKGF1dG8gZGF0YSA9IHNjcmVlblByb3BlcnRpZXMod2lkZ2V0KSkKLSAg
ICAgICAgcmV0dXJuIGRhdGEtPmNvbG9yU3BhY2UuZ2V0KCk7CisgICAgICAgIHJldHVybiBkYXRh
LT5jb2xvclNwYWNlOwogCiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1By
aXZpbGVnZTo6Q2FuQ29tbXVuaWNhdGVXaXRoV2luZG93U2VydmVyKSk7Ci0gICAgcmV0dXJuIHNj
cmVlbih3aWRnZXQpLmNvbG9yU3BhY2UuQ0dDb2xvclNwYWNlOworICAgIHJldHVybiBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UgeyBzY3JlZW4od2lkZ2V0KS5jb2xvclNwYWNlLkNHQ29sb3JTcGFjZSB9
OwogfQogCiBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcihXaWRnZXQqIHdpZGdldCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0JKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNzI2LDcgKzcyNiw3IEBAIGJvb2wgVGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1
c1JpbmdXaXRoVmkKIAogICAgIGlmICh1c2VJbWFnZUJ1ZmZlcikgewogICAgICAgICBOU1JlY3Qg
aW1hZ2VCdWZmZXJEcmF3UmVjdCA9IE5TUmVjdChGbG9hdFJlY3QoYnV0dG9uRm9jdXNSZWN0T3V0
bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIHJlY3Qud2lkdGgoKSwgcmVj
dC5oZWlnaHQoKSkpOwotICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZUNvbXBhdGlibGVCdWZmZXIocmVjdC5zaXplKCkgKyAyICogRmxvYXRTaXplKGJ1dHRvbkZv
Y3VzUmVjdE91dGxpbmVXaWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoKSwgZGV2aWNl
U2NhbGVGYWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgY29udGV4dCk7CisgICAg
ICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cihyZWN0LnNpemUoKSArIDIgKiBGbG9hdFNpemUoYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRo
LCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgpLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNvbnRleHQpOwogICAgICAgICBpZiAoIWltYWdlQnVm
ZmVyKQogICAgICAgICAgICAgcmV0dXJuIG5lZWRzUmVwYWludDsKICAgICAgICAgewpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGlt
ZVZpZGVvU291cmNlR1N0cmVhbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3Ry
ZWFtZXIuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2VHU3RyZWFtZXI6OnUKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47
CiAKLSAgICBhdXRvIHBpeGVsQnVmZmVyID0gaW1hZ2VCdWZmZXItPmdldFBpeGVsQnVmZmVyKHsg
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6QkdS
QTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9LCB7IHsgfSwgaW1hZ2VCdWZmZXItPmxv
Z2ljYWxTaXplKCkgfSk7CisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5nZXRQ
aXhlbEJ1ZmZlcih7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4
ZWxGb3JtYXQ6OkJHUkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9LCB7IHsgfSwg
aW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkgfSk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvU2NyZWVuRGlzcGxheUNhcHR1cmVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZXJNYWMu
bW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9TY3JlZW5EaXNwbGF5Q2FwdHVyZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEz
Myw2ICsxMzMsNyBAQCBib29sIFNjcmVlbkRpc3BsYXlDYXB0dXJlck1hYzo6Y3JlYXRlRGlzCiAg
ICAgICAgIGlmICghbV9jYXB0dXJlUXVldWUpCiAgICAgICAgICAgICBtX2NhcHR1cmVRdWV1ZSA9
IGFkb3B0T1NPYmplY3QoZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJTY3JlZW5EaXNwbGF5Q2FwdHVy
ZXJNYWMgQ2FwdHVyZSBRdWV1ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCkpOwogCisgICAgICAg
IC8vIEZJWE1FOiBXaHkgaXMgdGhpcyB1c2luZyBoYXJkY29kZWQgc1JHQj8KICAgICAgICAgTlNE
aWN0aW9uYXJ5KiBzdHJlYW1PcHRpb25zID0gQHsKICAgICAgICAgICAgIChfX2JyaWRnZSBOU1N0
cmluZyAqKWtDR0Rpc3BsYXlTdHJlYW1NaW5pbXVtRnJhbWVUaW1lIDogQCgxIC8gZnJhbWVSYXRl
KSwKICAgICAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDR0Rpc3BsYXlTdHJlYW1RdWV1
ZURlcHRoIDogQChzY3JlZW5RdWV1ZU1heGltdW1MZW5ndGgpLApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5j
cHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTQsNyArNDU0LDcg
QEAgSW1hZ2VCdWZmZXIqIE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjppbQogICAgIGlmIChtX2lt
YWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsKIAotICAgIG1f
aW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNhcHR1cmVTaXplKCksIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBtX2ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShjYXB0dXJlU2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIW1f
aW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9wbGF5c3RhdGlvbi9QbGF0Zm9ybVNjcmVlblBsYXlTdGF0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wbGF5c3RhdGlvbi9QbGF0Zm9y
bVNjcmVlblBsYXlTdGF0aW9uLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcGxheXN0YXRpb24vUGxhdGZvcm1TY3JlZW5QbGF5U3RhdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNl
LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
IApAQCAtNzEsNCArNzIsOSBAQCBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcihXaWRn
ZXQqCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc2NyZWVu
Q29sb3JTcGFjZShXaWRnZXQqKQoreworICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1BsYXRmb3JtU2NyZWVuV2luLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGxhdGZvcm1TY3JlZW5XaW4uY3BwCShyZXZpc2lvbiAy
Nzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGxhdGZvcm1TY3JlZW5XaW4u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKIAorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29s
b3JTcGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiRnJhbWVWaWV3LmgiCkBAIC0xMDQsMTIgKzEwNSwxMCBAQCBGbG9hdFJlY3Qgc2Ny
ZWVuQXZhaWxhYmxlUmVjdChXaWRnZXQqIHdpCiAgICAgcmV0dXJuIG1vbml0b3JJbmZvLnJjV29y
azsKIH0KIAotI2lmIFVTRShDRykKLUNHQ29sb3JTcGFjZVJlZiBzY3JlZW5Db2xvclNwYWNlKFdp
ZGdldCopCitEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqKQog
ewotICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOworICAgIHJldHVybiBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKTsKIH0KLSNlbmRpZgogCiBib29sIHNjcmVlblN1cHBvcnRzRXh0
ZW5kZWRDb2xvcihXaWRnZXQqKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3Bl
L1BsYXRmb3JtU2NyZWVuV1BFLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93cGUvUGxhdGZvcm1TY3JlZW5XUEUuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93cGUvUGxhdGZvcm1TY3JlZW5XUEUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1TY3JlZW4uaCIKIAorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2lu
Y2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVk
ZSAiV2lkZ2V0LmgiCkBAIC04MSw2ICs4MiwxMSBAQCBGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxl
UmVjdChXaWRnZXQqIHdpCiAgICAgcmV0dXJuIHNjcmVlblJlY3Qod2lkZ2V0KTsKIH0KIAorRGVz
dGluYXRpb25Db2xvclNwYWNlIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KikKK3sKKyAgICByZXR1
cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7Cit9CisKIGJvb2wgc2NyZWVuU3VwcG9y
dHNFeHRlbmRlZENvbG9yKFdpZGdldCopCiB7CiAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaAkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xOCw2ICsxOCw3IEBACiAgKi8KICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGVzdGluYXRp
b25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludDNELmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NUeXBlc0dMLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgpAQCAtMzIsOCArMzMsNyBAQAog
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRl
IDxXZWJDb3JlL0NvbG9yU3BhY2VDRy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSU9TdXJmYWNlLmg+
CisjaW5jbHVkZSAiSU9TdXJmYWNlLmgiCiAjaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4K
ICNlbmRpZgogCkBAIC00NDYsNyArNDQ2LDcgQEAgT3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6
OkxheWVyRGF0YT4gRAogICAgIFdURjo6TWFjaFNlbmRSaWdodCBzdXJmYWNlU2VuZFJpZ2h0Owog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3VyZmFjZVNlbmRSaWdodCkpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7Ci0gICAgbGF5ZXJEYXRhLnN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZh
Y2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShzdXJmYWNlU2VuZFJpZ2h0KSwgV2ViQ29y
ZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgbGF5ZXJEYXRhLnN1cmZhY2UgPSBXZWJDb3Jl
OjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShzdXJmYWNlU2VuZFJpZ2h0
KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogI2VuZGlmCiAgICAg
cmV0dXJuIGxheWVyRGF0YTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NG
aWx0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0
ZXIuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NT
RmlsdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExLDkgKzExMSw5IEBAIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IENTU0ZpbHRlcjo6YnVpbGRSZWYKICAgICAgICAgZWZmZWN0RWxlbWVudC5zZXRT
dGFuZGFyZEF0dHJpYnV0ZXMoZWZmZWN0LmdldCgpKTsKICAgICAgICAgaWYgKGVmZmVjdEVsZW1l
bnQucmVuZGVyZXIoKSkgewogI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5F
QVJfU1JHQikKLSAgICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShlZmZl
Y3RFbGVtZW50LnJlbmRlcmVyKCktPnN0eWxlKCkuc3ZnU3R5bGUoKS5jb2xvckludGVycG9sYXRp
b25GaWx0ZXJzKCkgPT0gQ29sb3JJbnRlcnBvbGF0aW9uOjpMaW5lYXJSR0IgPyBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OkxpbmVhclNSR0IgOiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOwor
ICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKGVmZmVjdEVsZW1lbnQu
cmVuZGVyZXIoKS0+c3R5bGUoKS5zdmdTdHlsZSgpLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMo
KSA9PSBDb2xvckludGVycG9sYXRpb246OkxpbmVhclJHQiA/IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6TGluZWFyU1JHQigpIDogRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogI2Vsc2UK
LSAgICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IpOworICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNw
YWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICNlbmRpZgogICAgICAgICB9CiAg
ICAgICAgIGJ1aWxkZXItPmFkZChlZmZlY3RFbGVtZW50LnJlc3VsdCgpLCBlZmZlY3QpOwpAQCAt
Mjk2LDcgKzI5Niw3IEBAIGJvb2wgQ1NTRmlsdGVyOjpidWlsZChSZW5kZXJFbGVtZW50JiByZW4K
ICAgICAgICAgICAgIC8vIFVubGlrZSBTVkcgRmlsdGVycyBhbmQgQ1NTRmlsdGVySW1hZ2VzLCBm
aWx0ZXIgZnVuY3Rpb25zIG9uIHRoZSBmaWx0ZXIKICAgICAgICAgICAgIC8vIHByb3BlcnR5IGFw
cGxpZWQgaGVyZSBzaG91bGQgbm90IGNsaXAgdG8gdGhlaXIgcHJpbWl0aXZlIHN1YnJlZ2lvbnMu
CiAgICAgICAgICAgICBlZmZlY3QtPnNldENsaXBzVG9Cb3VuZHMoY29uc3VtZXIgPT0gRmlsdGVy
Q29uc3VtZXI6OkZpbHRlckZ1bmN0aW9uKTsKLSAgICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0
aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOworICAgICAgICAgICAg
ZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGZpbHRlck9wZXJhdGlvbi50eXBl
KCkgIT0gRmlsdGVyT3BlcmF0aW9uOjpSRUZFUkVOQ0UpIHsKICAgICAgICAgICAgICAgICBlZmZl
Y3QtPmlucHV0RWZmZWN0cygpID0geyBXVEZNb3ZlKHByZXZpb3VzRWZmZWN0KSB9OwpAQCAtMzQ0
LDExICszNDQsMTEgQEAgdm9pZCBDU1NGaWx0ZXI6OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZQog
ICAgIEludFNpemUgbG9naWNhbFNpemUgeyBtX3NvdXJjZURyYXdpbmdSZWdpb24uc2l6ZSgpIH07
CiAgICAgaWYgKCFzb3VyY2VJbWFnZSgpIHx8IHNvdXJjZUltYWdlKCktPmxvZ2ljYWxTaXplKCkg
IT0gbG9naWNhbFNpemUpIHsKICNpZiBVU0UoRElSRUNUMkQpCi0gICAgICAgIHNldFNvdXJjZUlt
YWdlKEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIHJlbmRlcmluZ01vZGUoKSwgJnRh
cmdldENvbnRleHQsIGZpbHRlclNjYWxlKCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwg
UGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CisgICAgICAgIHNldFNvdXJjZUltYWdlKEltYWdlQnVmZmVy
OjpjcmVhdGUobG9naWNhbFNpemUsIHJlbmRlcmluZ01vZGUoKSwgJnRhcmdldENvbnRleHQsIGZp
bHRlclNjYWxlKCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6
QkdSQTgpKTsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh0YXJnZXRDb250ZXh0KTsKICAg
ICAgICAgUmVuZGVyaW5nTW9kZSBtb2RlID0gbV9maWx0ZXJSZW5kZXJlciA/IFJlbmRlcmluZ01v
ZGU6OkFjY2VsZXJhdGVkIDogcmVuZGVyaW5nTW9kZSgpOwotICAgICAgICBzZXRTb3VyY2VJbWFn
ZShJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBtb2RlLCBmaWx0ZXJTY2FsZSgpLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCkpOworICAgICAg
ICBzZXRTb3VyY2VJbWFnZShJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBtb2RlLCBm
aWx0ZXJTY2FsZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6
OkJHUkE4KSk7CiAjZW5kaWYKICAgICB9CiAgICAgbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkID0g
dHJ1ZTsKQEAgLTM4MiwxMiArMzgyLDEyIEBAIHZvaWQgQ1NTRmlsdGVyOjphcHBseSgpCiAgICAg
aWYgKG1fZmlsdGVyUmVuZGVyZXIpIHsKICAgICAgICAgbV9maWx0ZXJSZW5kZXJlci0+YXBwbHlF
ZmZlY3RzKGVmZmVjdCk7CiAgICAgICAgIGlmIChtX2ZpbHRlclJlbmRlcmVyLT5oYXNSZXN1bHQo
KSkgewotICAgICAgICAgICAgZWZmZWN0LnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKTsKKyAgICAgICAgICAgIGVmZmVjdC50cmFuc2Zvcm1SZXN1
bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgIH0KICAgICBlZmZlY3QuYXBwbHkoKTsKLSAgICBlZmZl
Y3QudHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Ip
OworICAgIGVmZmVjdC50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpKTsKIH0KIAogTGF5b3V0UmVjdCBDU1NGaWx0ZXI6OmNvbXB1dGVTb3VyY2VJ
bWFnZVJlY3RGb3JEaXJ0eVJlY3QoY29uc3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwgY29u
c3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0KQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04NzYsNyArODc2LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFp
bnRGaWxsTGF5ZQogICAgICAgICBtYXNrUmVjdC5pbnRlcnNlY3Qoc25hcHBlZEludFJlY3QocGFp
bnRJbmZvLnJlY3QpKTsKIAogICAgICAgICAvLyBOb3cgY3JlYXRlIHRoZSBtYXNrLgotICAgICAg
ICBtYXNrSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihtYXNrUmVj
dC5zaXplKCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgY29udGV4dCk7CisgICAgICAg
IG1hc2tJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0
LnNpemUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNvbnRleHQpOwogICAgICAg
ICBpZiAoIW1hc2tJbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgcGFpbnRNYXNr
Rm9yVGV4dEZpbGxCb3gobWFza0ltYWdlLmdldCgpLCBtYXNrUmVjdCwgYm94LCBzY3JvbGxlZFBh
aW50UmVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNjcsNyArMzI2
Nyw3IEBAIHN0YXRpYyBSZWZQdHI8UGF0dGVybj4gcGF0dGVybkZvckRlc2NyaXAKIHsKICAgICBj
b25zdCBGbG9hdFNpemUgdGlsZVNpemUgeyAzMiwgMTggfTsKIAotICAgIGF1dG8gaW1hZ2VCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcih0aWxlU2l6ZSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCLCBkZXN0Q29udGV4dCk7CisgICAgYXV0byBpbWFnZUJ1ZmZl
ciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHRpbGVTaXplLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgZGVzdENvbnRleHQpOwogICAgIGlmICghaW1hZ2VCdWZm
ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5ODMs
MTEgKzE5ODMsMTEgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRTeXN0ZW1QcmV2aWV3Qgog
ICAgIElPU3VyZmFjZVJlZiBzdXJmYWNlOwogICAgIGlmICh1c2VTbWFsbEJhZGdlKSB7CiAgICAg
ICAgIGlmICghbV9zbWFsbEJhZGdlU3VyZmFjZSkKLSAgICAgICAgICAgIG1fc21hbGxCYWRnZVN1
cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZSh7IHNtYWxsQmFkZ2VEaW1lbnNpb24sIHNtYWxsQmFk
Z2VEaW1lbnNpb24gfSwgc1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgICAgICAgICBtX3NtYWxs
QmFkZ2VTdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoeyBzbWFsbEJhZGdlRGltZW5zaW9uLCBz
bWFsbEJhZGdlRGltZW5zaW9uIH0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAg
ICAgICAgc3VyZmFjZSA9IG1fc21hbGxCYWRnZVN1cmZhY2UtPnN1cmZhY2UoKTsKICAgICB9IGVs
c2UgewogICAgICAgICBpZiAoIW1fbGFyZ2VCYWRnZVN1cmZhY2UpCi0gICAgICAgICAgICBtX2xh
cmdlQmFkZ2VTdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoeyBsYXJnZUJhZGdlRGltZW5zaW9u
LCBsYXJnZUJhZGdlRGltZW5zaW9uIH0sIHNSR0JDb2xvclNwYWNlUmVmKCkpOworICAgICAgICAg
ICAgbV9sYXJnZUJhZGdlU3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKHsgbGFyZ2VCYWRnZURp
bWVuc2lvbiwgbGFyZ2VCYWRnZURpbWVuc2lvbiB9LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSk7CiAgICAgICAgIHN1cmZhY2UgPSBtX2xhcmdlQmFkZ2VTdXJmYWNlLT5zdXJmYWNlKCk7
CiAgICAgfQogICAgIFttX2NpQ29udGV4dC5nZXQoKSByZW5kZXI6dHJhbnNsYXRlZEltYWdlIHRv
SU9TdXJmYWNlOnN1cmZhY2UgYm91bmRzOmJhZGdlUmVjdCBjb2xvclNwYWNlOnNSR0JDb2xvclNw
YWNlUmVmKCldOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzA5LDcgKzEzMDksNyBAQCBib29sIFJl
bmRlclRoZW1lTWFjOjpwYWludFByb2dyZXNzQmFyKGNvCiAgICAgY29uc3QgYXV0byYgcmVuZGVy
UHJvZ3Jlc3MgPSBkb3duY2FzdDxSZW5kZXJQcm9ncmVzcz4ocmVuZGVyT2JqZWN0KTsKICAgICBm
bG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IHJlbmRlck9iamVjdC5kb2N1bWVudCgpLmRldmljZVNj
YWxlRmFjdG9yKCk7CiAgICAgYm9vbCBpc0luZGV0ZXJtaW5hdGUgPSByZW5kZXJQcm9ncmVzcy5w
b3NpdGlvbigpIDwgMDsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZUNvbXBhdGlibGVCdWZmZXIoaW5mbGF0ZWRSZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3Is
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgcGFpbnRJbmZvLmNvbnRleHQoKSk7CisgICAg
YXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGlu
ZmxhdGVkUmVjdC5zaXplKCksIGRldmljZVNjYWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgcGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvU2hhcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvU2hhcGUuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDcgKzE4MSw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVJhc3QKICAgICBJbnRSZWN0IG1h
cmdpblJlY3QgPSBzbmFwcGVkSW50UmVjdChtYXJnaW5SKTsKICAgICBhdXRvIGludGVydmFscyA9
IG1ha2VVbmlxdWU8UmFzdGVyU2hhcGVJbnRlcnZhbHM+KG1hcmdpblJlY3QuaGVpZ2h0KCksIC1t
YXJnaW5SZWN0LnkoKSk7CiAgICAgLy8gRklYTUUgKDE0OTQyMCk6IFRoaXMgYnVmZmVyIHNob3Vs
ZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQuCi0gICAgYXV0byBpbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KGltYWdlUmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogCiAgICAgYXV0
byBjcmVhdGVTaGFwZSA9IFsmXSgpIHsKICAgICAgICAgYXV0byByYXN0ZXJTaGFwZSA9IG1ha2VV
bmlxdWU8UmFzdGVyU2hhcGU+KFdURk1vdmUoaW50ZXJ2YWxzKSwgbWFyZ2luUmVjdC5zaXplKCkp
OwpAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6OmNyZWF0
ZVJhc3QKICAgICBpZiAoaW1hZ2UpCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2Uo
KmltYWdlLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlUmVjdC5zaXplKCkpKTsKIAotICAgIFBp
eGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVs
dGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Ig
fTsKKyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9u
OjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCkgfTsKICAgICBhdXRvIHBpeGVsQnVmZmVyID0gaW1hZ2VCdWZmZXItPmdldFBp
eGVsQnVmZmVyKGZvcm1hdCwgeyBJbnRQb2ludCgpLCBpbWFnZVJlY3Quc2l6ZSgpIH0pOwogICAg
IAogICAgIC8vIFdlIGNvdWxkIGdldCB0byBhIHZhbHVlIHdoZXJlIFBpeGVsQnVmZmVyIGNvdWxk
IGJlIG51bGxvcHQuIEEgY2FzZSB3aGVyZSBJbWFnZVJlY3Quc2l6ZSgpIGlzIGh1Z2UsIFBpeGVs
QnVmZmVyOjp0cnlDcmVhdGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAJKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlw
cGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDcgKzE0Niw3IEBAIGJvb2wgUmVuZGVyU1ZH
UmVzb3VyY2VDbGlwcGVyOjphcHBseUNsaXAKICAgICBBZmZpbmVUcmFuc2Zvcm0gYWJzb2x1dGVU
cmFuc2Zvcm0gPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjYWxjdWxhdGVUcmFuc2Zvcm1hdGlvblRv
T3V0ZXJtb3N0Q29vcmRpbmF0ZVN5c3RlbShyZW5kZXJlcik7CiAgICAgaWYgKCFjbGlwcGVyRGF0
YS5pc1ZhbGlkRm9yR2VvbWV0cnkob2JqZWN0Qm91bmRpbmdCb3gsIGFic29sdXRlVHJhbnNmb3Jt
KSkgewogICAgICAgICAvLyBGSVhNRSAoMTQ5NDY5KTogVGhpcyBpbWFnZSBidWZmZXIgc2hvdWxk
IG5vdCBiZSB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZC4gTWFraW5nIGl0IG1hdGNoIHRo
ZSBjb250ZXh0IGJyZWFrcyBuZXN0ZWQgY2xpcHBpbmcsIHRob3VnaC4KLSAgICAgICAgYXV0byBt
YXNrSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihvYmplY3RC
b3VuZGluZ0JveCwgYWJzb2x1dGVUcmFuc2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QiwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgJmNvbnRleHQpOworICAgICAgICBhdXRv
IG1hc2tJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKG9iamVj
dEJvdW5kaW5nQm94LCBhYnNvbHV0ZVRyYW5zZm9ybSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsICZjb250ZXh0KTsKICAgICAgICAg
aWYgKCFtYXNrSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXIuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDkg
KzEwNCw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxTVkdGaWx0ZXJCdWlsZGVyPiBSZW5kZXIKICAgICAg
ICAgZWZmZWN0LT5zZXRFZmZlY3RCb3VuZGFyaWVzKFNWR0xlbmd0aENvbnRleHQ6OnJlc29sdmVS
ZWN0YW5nbGU8U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPigmZWxlbWVudCwg
ZmlsdGVyRWxlbWVudCgpLnByaW1pdGl2ZVVuaXRzKCksIHRhcmdldEJvdW5kaW5nQm94KSk7CiAg
ICAgICAgIGlmIChlbGVtZW50LnJlbmRlcmVyKCkpIHsKICNpZiBFTkFCTEUoREVTVElOQVRJT05f
Q09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGlu
Z0NvbG9yU3BhY2UoZWxlbWVudC5yZW5kZXJlcigpLT5zdHlsZSgpLnN2Z1N0eWxlKCkuY29sb3JJ
bnRlcnBvbGF0aW9uRmlsdGVycygpID09IENvbG9ySW50ZXJwb2xhdGlvbjo6TGluZWFyUkdCID8g
RGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCIDogRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKTsKKyAgICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShlbGVt
ZW50LnJlbmRlcmVyKCktPnN0eWxlKCkuc3ZnU3R5bGUoKS5jb2xvckludGVycG9sYXRpb25GaWx0
ZXJzKCkgPT0gQ29sb3JJbnRlcnBvbGF0aW9uOjpMaW5lYXJSR0IgPyBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OkxpbmVhclNSR0IoKSA6IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICNl
bHNlCi0gICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKTsKKyAgICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29s
b3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAjZW5kaWYKICAgICAgICAg
fQogICAgICAgICBidWlsZGVyLT5hZGQoZWxlbWVudC5yZXN1bHQoKSwgV1RGTW92ZShlZmZlY3Qp
KTsKQEAgLTE5OCw5ICsxOTgsOSBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBs
eVJlc291CiAKICAgICBhdXRvIHJlbmRlcmluZ01vZGUgPSByZW5kZXJlci5zZXR0aW5ncygpLmFj
Y2VsZXJhdGVkRmlsdGVyc0VuYWJsZWQoKSA/IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIDog
UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZDsKICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09M
T1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25D
b2xvclNwYWNlOjpMaW5lYXJTUkdCOworICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6TGluZWFyU1JHQigpOwogI2Vsc2UKLSAgICBhdXRvIGNvbG9yU3BhY2UgPSBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I7CisgICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiAjZW5kaWYKICAgICBhdXRvIHNvdXJjZUdyYXBoaWMg
PSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihmaWx0ZXJEYXRhLT5kcmF3
aW5nUmVnaW9uLCBlZmZlY3RpdmVUcmFuc2Zvcm0sIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUs
IGNvbnRleHQpOwogICAgIGlmICghc291cmNlR3JhcGhpYykgewpAQCAtMjgxLDcgKzI4MSw3IEBA
IHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVIKICAgICAgICAgICAgIGZp
bHRlckRhdGEuc3RhdGUgPSBGaWx0ZXJEYXRhOjpBcHBseWluZzsKICAgICAgICAgICAgIGxhc3RF
ZmZlY3QtPmFwcGx5KCk7CiAgICAgICAgICAgICBsYXN0RWZmZWN0LT5jb3JyZWN0RmlsdGVyUmVz
dWx0SWZOZWVkZWQoKTsKLSAgICAgICAgICAgIGxhc3RFZmZlY3QtPnRyYW5zZm9ybVJlc3VsdENv
bG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKKyAgICAgICAgICAgIGxhc3RF
ZmZlY3QtPnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCkpOwogICAgICAgICB9CiAgICAgICAgIGZpbHRlckRhdGEuc3RhdGUgPSBGaWx0ZXJEYXRh
OjpCdWlsdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUdyYWRpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBj
cmVhdGVNYXNrQW5kU3dhcENvbnQKICAgICBBZmZpbmVUcmFuc2Zvcm0gYWJzb2x1dGVUcmFuc2Zv
cm0gPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjYWxjdWxhdGVUcmFuc2Zvcm1hdGlvblRvT3V0ZXJt
b3N0Q29vcmRpbmF0ZVN5c3RlbSgqdGV4dFJvb3RCbG9jayk7CiAgICAgRmxvYXRSZWN0IHJlcGFp
bnRSZWN0ID0gdGV4dFJvb3RCbG9jay0+cmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKTsK
IAotICAgIGF1dG8gbWFza0ltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VC
dWZmZXIocmVwYWludFJlY3QsIGFic29sdXRlVHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IsIGNvbnRleHQtPnJlbmRlcmluZ01vZGUoKSk7CisgICAgYXV0byBtYXNrSW1hZ2Ug
PSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihyZXBhaW50UmVjdCwgYWJz
b2x1dGVUcmFuc2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBjb250ZXh0LT5y
ZW5kZXJpbmdNb2RlKCkpOwogICAgIGlmICghbWFza0ltYWdlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VNYXNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzEsOSArNzEsOSBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjph
cHBseVJlc291CiAgICAgICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IHN0eWxl
KCkuc3ZnU3R5bGUoKTsKIAogI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5F
QVJfU1JHQikKLSAgICAgICAgYXV0byBjb2xvclNwYWNlID0gc3ZnU3R5bGUuY29sb3JJbnRlcnBv
bGF0aW9uKCkgPT0gQ29sb3JJbnRlcnBvbGF0aW9uOjpMaW5lYXJSR0IgPyBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OkxpbmVhclNSR0IgOiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I7CisgICAg
ICAgIGF1dG8gY29sb3JTcGFjZSA9IHN2Z1N0eWxlLmNvbG9ySW50ZXJwb2xhdGlvbigpID09IENv
bG9ySW50ZXJwb2xhdGlvbjo6TGluZWFyUkdCID8gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5l
YXJTUkdCKCkgOiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKICNlbHNlCi0gICAgICAg
IGF1dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjsKKyAgICAgICAg
YXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiAjZW5kaWYK
IAogICAgICAgICAvLyBGSVhNRSAoMTQ5NDcwKTogVGhpcyBpbWFnZSBidWZmZXIgc2hvdWxkIG5v
dCBiZSB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZC4gTWFraW5nIGl0IG1hdGNoIHRoZSBj
b250ZXh0IGJyZWFrcyBhbHBoYSBtYXNraW5nLCB0aG91Z2guCkBAIC05Miw3ICs5Miw3IEBAIGJv
b2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3UKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6ZHJhd0NvbnRlbnRJbnRvTWFza0lt
YWdlKE1hc2tlckRhdGEqIG1hc2tlckRhdGEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNw
YWNlLCBSZW5kZXJPYmplY3QqIG9iamVjdCkKK2Jvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6
OmRyYXdDb250ZW50SW50b01hc2tJbWFnZShNYXNrZXJEYXRhKiBtYXNrZXJEYXRhLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFJlbmRlck9iamVjdCogb2JqZWN0KQog
ewogICAgIEdyYXBoaWNzQ29udGV4dCYgbWFza0ltYWdlQ29udGV4dCA9IG1hc2tlckRhdGEtPm1h
c2tJbWFnZS0+Y29udGV4dCgpOwogCkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBSZW5kZXJTVkdS
ZXNvdXJjZU1hc2tlcjo6ZHJhd0NvbnRlbgogICAgIH0KIAogI2lmICFVU0UoQ0cpCi0gICAgbWFz
a2VyRGF0YS0+bWFza0ltYWdlLT50cmFuc2Zvcm1Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQiwgY29sb3JTcGFjZSk7CisgICAgbWFza2VyRGF0YS0+bWFza0ltYWdlLT50cmFu
c2Zvcm1Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBjb2xvclNwYWNl
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbG9yU3BhY2UpOwogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZU1hc2tlci5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4
LDcgQEAgcHJpdmF0ZToKIAogICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIiOyB9CiAKLSAgICBib29sIGRy
YXdDb250ZW50SW50b01hc2tJbWFnZShNYXNrZXJEYXRhKiwgRGVzdGluYXRpb25Db2xvclNwYWNl
LCBSZW5kZXJPYmplY3QqKTsKKyAgICBib29sIGRyYXdDb250ZW50SW50b01hc2tJbWFnZShNYXNr
ZXJEYXRhKiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUmVuZGVyT2JqZWN0Kik7CiAg
ICAgdm9pZCBjYWxjdWxhdGVNYXNrQ29udGVudFJlcGFpbnRSZWN0KCk7CiAKICAgICBGbG9hdFJl
Y3QgbV9tYXNrQ29udGVudEJvdW5kYXJpZXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlUGF0dGVybi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Myw3ICsyNTMsNyBAQCBib29s
IFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRUaWxlCiBSZWZQdHI8SW1hZ2VCdWZmZXI+
IFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdlKGNvbnN0IFBhdHRlcm5B
dHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVCb3VuZGFyaWVzLCBj
b25zdCBGbG9hdFJlY3QmIGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgdGlsZUltYWdlVHJhbnNmb3JtLCBGbG9hdFJlY3QmIGNsYW1wZWRBYnNvbHV0ZVRpbGVC
b3VuZGFyaWVzLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUpIGNvbnN0CiB7CiAgICAgY2xh
bXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFJlY3QoYWJz
b2x1dGVUaWxlQm91bmRhcmllcyk7Ci0gICAgYXV0byB0aWxlSW1hZ2UgPSBTVkdSZW5kZXJpbmdD
b250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjbGFtcGVk
QWJzb2x1dGVUaWxlQm91bmRhcmllcywgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCByZW5k
ZXJpbmdNb2RlKTsKKyAgICBhdXRvIHRpbGVJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNy
ZWF0ZUltYWdlQnVmZmVyKGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIGNsYW1wZWRBYnNvbHV0ZVRp
bGVCb3VuZGFyaWVzLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgcmVuZGVyaW5nTW9k
ZSk7CiAgICAgaWYgKCF0aWxlSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29u
dGV4dC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNiw3ICsyMzYs
NyBAQCBBZmZpbmVUcmFuc2Zvcm0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsCiAgICAgcmV0dXJu
IGFic29sdXRlVHJhbnNmb3JtOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmlu
Z0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgRGVzdGluYXRpb25Db2xv
clNwYWNlIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdD
b250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25z
dCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgSW50UmVjdCBwYWludFJlY3QgPSBj
YWxjdWxhdGVJbWFnZUJ1ZmZlclJlY3QodGFyZ2V0UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0pOwog
ICAgIC8vIERvbid0IGNyZWF0ZSBlbXB0eSBJbWFnZUJ1ZmZlcnMuCkBAIC0yNjQsNyArMjY0LDcg
QEAgUmVmUHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OgogICAgIHJldHVybiBp
bWFnZUJ1ZmZlcjsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0
OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgY2xhbXBlZFJlY3QsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBS
ZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCkKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VC
dWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1w
ZWRSZWN0LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFJlbmRlcmlu
Z01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogewog
ICAgIEludFNpemUgY2xhbXBlZFNpemUgPSByb3VuZGVkSW50U2l6ZShjbGFtcGVkUmVjdC5zaXpl
KCkpOwogICAgIEZsb2F0U2l6ZSB1bmNsYW1wZWRTaXplID0gcm91bmRlZEludFNpemUodGFyZ2V0
UmVjdC5zaXplKCkpOwpAQCAtMzUwLDcgKzM1MCw3IEBAIGJvb2wgU1ZHUmVuZGVyaW5nQ29udGV4
dDo6YnVmZmVyRm9yZWdyb3UKIAogICAgIC8vIENyZWF0ZSBhIG5ldyBidWZmZXIgYW5kIHBhaW50
IHRoZSBmb3JlZ3JvdW5kIGludG8gaXQuCiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikgewotICAgICAg
ICBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFu
ZGVkSW50U2l6ZShib3VuZGluZ0JveC5zaXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IsIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkpOworICAgICAgICBpbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShib3VuZGluZ0Jv
eC5zaXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgbV9wYWludEluZm8tPmNv
bnRleHQoKSk7CiAgICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5k
ZXJpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBA
IC02MCw4ICs2MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHByZXBhcmVUb1JlbmRlclNWR0NvbnRl
bnQoUmVuZGVyRWxlbWVudCYsIFBhaW50SW5mbyYsIE5lZWRzR3JhcGhpY3NDb250ZXh0U2F2ZSA9
IERvbnRTYXZlR3JhcGhpY3NDb250ZXh0KTsKICAgICBib29sIGlzUmVuZGVyaW5nUHJlcGFyZWQo
KSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ0ZsYWdzICYgUmVuZGVyaW5nUHJlcGFyZWQ7IH0K
IAotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRy
YW5zZm9ybSwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFw
aGljc0NvbnRleHQqID0gbnVsbHB0cik7Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4g
Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIGNsYW1wZWRSZWN0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUs
IGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKTsKKyAgICBzdGF0aWMgUmVmUHRyPElt
YWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBu
dWxscHRyKTsKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZl
cihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZFJl
Y3QsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dCogPSBudWxscHRyKTsKIAogICAgIHN0YXRpYyB2b2lkIHJlbmRlclN1YnRy
ZWVUb0NvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgUmVuZGVyRWxlbWVudCYsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYpOwogICAgIHN0YXRpYyB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgUmVmUHRyPEltYWdlQnVmZmVyPiYsIGJvb2wgc2FmZVRv
Q2xlYXIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCShy
ZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcsNyArMjE3LDcgQEAgUmVmUHRyPE5hdGl2ZUltYWdl
PiBTVkdJbWFnZTo6bmF0aXZlSW1hZwogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNp
emUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwg
MSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAg
ICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI0Nyw3
ICsyNDcsNyBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHCiAgICAg
RmxvYXRSZWN0IGltYWdlQnVmZmVyU2l6ZSA9IHpvb21lZENvbnRhaW5lclJlY3Q7CiAgICAgaW1h
Z2VCdWZmZXJTaXplLnNjYWxlKGltYWdlQnVmZmVyU2NhbGUud2lkdGgoKSwgaW1hZ2VCdWZmZXJT
Y2FsZS5oZWlnaHQoKSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShpbWFnZUJ1ZmZlclNpemUuc2l6ZSgpKSwg
MSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBjb250ZXh0KTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShp
bWFnZUJ1ZmZlclNpemUuc2l6ZSgpKSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCks
IGNvbnRleHQpOwogICAgIGlmICghYnVmZmVyKSAvLyBGYWlsZWQgdG8gYWxsb2NhdGUgYnVmZmVy
LgogICAgICAgICByZXR1cm47CiAgICAgZHJhd0ZvckNvbnRhaW5lcihidWZmZXItPmNvbnRleHQo
KSwgY29udGFpbmVyU2l6ZSwgY29udGFpbmVyWm9vbSwgaW5pdGlhbEZyYWdtZW50VVJMLCBpbWFn
ZUJ1ZmZlclNpemUsIHpvb21lZENvbnRhaW5lclJlY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Myw4ICs5Myw4IEBAIHZvaWQgRkVJbWFnZTo6cGxhdGZv
cm1BcHBseVNvZnR3YXJlKCkKICAgICBpZiAoIW1faW1hZ2UgJiYgIXJlbmRlcmVyKQogICAgICAg
ICByZXR1cm47CiAKLSAgICAvLyBGRUltYWdlIHJlc3VsdHMgYXJlIGFsd2F5cyBpbiBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IKLSAgICBzZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQik7CisgICAgLy8gRkVJbWFnZSByZXN1bHRzIGFyZSBhbHdheXMgaW4g
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkKKyAgICBzZXRSZXN1bHRDb2xvclNwYWNlKERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKIAogICAgIEltYWdlQnVmZmVyKiByZXN1bHRJ
bWFnZSA9IGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7CiAgICAgaWYgKCFyZXN1bHRJbWFnZSkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzc5MjApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBACisyMDIxLTA1LTIyICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBDb252ZXJ0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSBmcm9tIGFuIGVudW0gdG8gY2xhc3Mgd3JhcHBpbmcgYSBwbGF0Zm9ybSBjb2xvciBzcGFj
ZSAoQ0dDb2xvclNwYWNlUmVmIGZvciBDRyBwb3J0cywgZXRjLikKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjE0MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtXSVBdCisKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUltYWdlQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGUHJveHk6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5Lmg6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0
b3JlLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRv
VmFsaWRGcm9udEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0
b3JlOjphcHBseUJhY2tpbmdTdG9yZVRvTGF5ZXIpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFi
bGVCaXRtYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3Vy
YXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6
Q29uZmlndXJhdGlvbjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFw
Lmg6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAq
IFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFNoYXJlZC9jZy9TaGFyZWFibGVC
aXRtYXBDRy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNvbG9yU3BhY2UpOgorICAgICAgICAqIFNo
YXJlZC9tYWMvQ29sb3JTcGFjZURhdGEuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWQvbWFj
L0NvbG9yU3BhY2VEYXRhLm1tOiBSZW1vdmVkLgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tOgorICAgICAgICAo
LVtXS1dlYlZpZXcgX3Rha2VWaWV3U25hcHNob3RdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9z
bmFwc2hvdFJlY3Q6aW50b0ltYWdlT2ZXaWR0aDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjb2xv
clNwYWNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbToKKyAgICAgICAg
KFdlYktpdDo6cmVjdXJzaXZlbHlNYXBJT1N1cmZhY2VCYWNraW5nU3RvcmUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsTWFjLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNvbG9yU3BhY2UpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5t
bToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpjb2xvclNwYWNlKToKKyAgICAgICAgKiBXZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNvbmZpZ3VyYXRpb24pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5Ojpw
cmVwYXJlRm9yRGlzcGxheSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZl
clByb3h5OjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVk
SU9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVh
YmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVJbWFnZURlY29kZXJBVkY6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9jb2NvYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVDb2Nv
YS5tbToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpuYXRpdmVJ
bWFnZUZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlOjpwaXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpQ
REZQbHVnaW4pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxl
Qml0bWFwVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlU2hhcmVhYmxlQml0
bWFwKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Y3JlYXRlSW1hZ2VCdWZm
ZXIgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJh
Z0NsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Y29udmVydERyYWdJbWFnZVRvQml0bWFw
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaDoKKyAgICAgICAg
KFdlYktpdDo6RHJhd2luZ0FyZWE6OnNldENvbG9yU3BhY2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OnNuYXBzaG90T3B0aW9uc1Rv
Qml0bWFwQ29uZmlndXJhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9U
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJL
aXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
OjpzZXRDb2xvclNwYWNlKToKKwogMjAyMS0wNS0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2Nh
bCB2YXJpYWJsZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjAz
LDcgKzIwMyw2IEBAIFNoYXJlZC9pb3MvV2ViVG91Y2hFdmVudElPUy5jcHAKIAogU2hhcmVkL21h
Yy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCiBTaGFyZWQvbWFjL0NvZGVTaWduaW5nLm1tCi1TaGFy
ZWQvbWFjL0NvbG9yU3BhY2VEYXRhLm1tCiBTaGFyZWQvbWFjL0hhbmdEZXRlY3Rpb25EaXNhYmxl
ck1hYy5tbQogU2hhcmVkL21hYy9OYXRpdmVXZWJHZXN0dXJlRXZlbnRNYWMubW0KIFNoYXJlZC9t
YWMvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudE1hYy5tbQpJbmRleDogU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgJKHJldmlzaW9u
IDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFJlbW90ZUlt
YWdlQnVmZmVyIDogcHVibGljIFdlYkNvcmUKICAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1
ZmZlcjo6cHV0UGl4ZWxCdWZmZXI7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgYXV0byBjcmVhdGUo
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdl
YkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZv
cm1hdCBwaXhlbEZvcm1hdCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVuZGVyaW5n
QmFja2VuZCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikKKyAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFdlYkNvcmU6OkRl
c3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4
ZWxGb3JtYXQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQs
IFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpCiAgICAgewogICAgICAgICByZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6
OnRlbXBsYXRlIGNyZWF0ZTxSZW1vdGVJbWFnZUJ1ZmZlcj4oc2l6ZSwgcmVzb2x1dGlvblNjYWxl
LCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgbnVsbHB0ciwgcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZCwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE1Miw3ICsxNTIsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZEZsdXNoKERp
CiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpEaWRGbHVz
aChmbHVzaElkZW50aWZpZXIsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFJlbmRlcmlu
Z01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCit2b2lkIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgbG9n
aWNhbFNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0
IHBpeGVsRm9ybWF0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFT
U0VSVChyZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIHx8IHJlbmRl
cmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDE0ICs0NCwxOCBAQAogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKwogbmFtZXNwYWNlIERpc3Bs
YXlMaXN0IHsKIGNsYXNzIERpc3BsYXlMaXN0OwogY2xhc3MgSXRlbTsKIH0KKworY2xhc3MgRGVz
dGluYXRpb25Db2xvclNwYWNlOwogY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgTmF0aXZlSW1hZ2U7
Ci1lbnVtIGNsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7CisKIGVudW0gY2xh
c3MgUmVuZGVyaW5nTW9kZSA6IGJvb2w7CisKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0x
MjEsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYp
IG92ZXJyaWRlOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCi0gICAgdm9pZCBj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBX
ZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkRl
c3RpbmF0aW9uQ29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQsIFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlcihjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2Rl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JT
cGFjZSYsIFdlYkNvcmU6OlBpeGVsRm9ybWF0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpOwogICAgIHZvaWQgd2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChjb25zdCBHUFVQ
cm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50cyYpOwogICAgIHZvaWQgdXBkYXRlU2hhcmVkTWVt
b3J5Rm9yR2V0UGl4ZWxCdWZmZXIodWludDMyX3QgYnl0ZUNvdW50LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+JiYpOwogICAgIHZvaWQgc2Vt
YXBob3JlRm9yR2V0UGl4ZWxCdWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6
OlNlbWFwaG9yZSYpPiYmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdl
RGVjb2RlckFWRlByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDI4ICsxMTMsMjggQEAg
dm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6c2V0RGF0YQogICAgIGNvbXBsZXRpb25I
YW5kbGVyKGZyYW1lQ291bnQsIGltYWdlRGVjb2Rlci0+c2l6ZSgpLCBpbWFnZURlY29kZXItPmhh
c1RyYWNrKCksIFdURk1vdmUoZnJhbWVJbmZvcykpOwogfQogCi12b2lkIFJlbW90ZUltYWdlRGVj
b2RlckFWRlByb3h5OjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChJbWFnZURlY29kZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYsIENvbG9yU3BhY2VEYXRhJiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Y3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoSW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBzaXplX3QgaW5k
ZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJpZ2h0PiYm
LCBPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIEFTU0VSVChtX2ltYWdlRGVjb2RlcnMuY29udGFpbnMoaWRlbnRp
ZmllcikpOwogICAgIE9wdGlvbmFsPFdURjo6TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0OwotICAg
IENvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2VEYXRhOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRl
c3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKICAgICBpZiAoIW1faW1hZ2VEZWNvZGVy
cy5jb250YWlucyhpZGVudGlmaWVyKSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKHNlbmRSaWdodCksIFdURk1vdmUoY29sb3JTcGFjZURhdGEpKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShzZW5kUmlnaHQpLCBXVEZNb3ZlKGNvbG9yU3BhY2UpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGF1dG8gZnJhbWVJbWFnZSA9IG1faW1hZ2VEZWNv
ZGVycy5nZXQoaWRlbnRpZmllciktPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4KTsKICAg
ICBpZiAoIWZyYW1lSW1hZ2UpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShz
ZW5kUmlnaHQpLCBXVEZNb3ZlKGNvbG9yU3BhY2VEYXRhKSk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUoc2VuZFJpZ2h0KSwgV1RGTW92ZShjb2xvclNwYWNlKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBpZiAoYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVh
dGVGcm9tSW1hZ2UoZnJhbWVJbWFnZS5nZXQoKSkpIHsKICAgICAgICAgc2VuZFJpZ2h0ID0gc3Vy
ZmFjZS0+Y3JlYXRlU2VuZFJpZ2h0KCk7Ci0gICAgICAgIGNvbG9yU3BhY2VEYXRhLmNnQ29sb3JT
cGFjZSA9IHN1cmZhY2UtPmNvbG9yU3BhY2UoKTsKKyAgICAgICAgY29sb3JTcGFjZSA9IHN1cmZh
Y2UtPmNvbG9yU3BhY2UoKTsKICAgICB9CiAKLSAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHNlbmRSaWdodCksIFdURk1vdmUoY29sb3JTcGFjZURhdGEpKTsKKyAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKHNlbmRSaWdodCksIFdURk1vdmUoY29sb3JTcGFjZSkpOwogfQogCiB2b2lk
IFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpjbGVhckZyYW1lQnVmZmVyQ2FjaGUoSW1hZ2VE
ZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBzaXplX3QgaW5kZXgpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGUHJveHkuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDcgKzI3LDYgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgSEFWRShBVkFTU0VU
UkVBREVSKQogCi0jaW5jbHVkZSAiQ29sb3JTcGFjZURhdGEuaCIKICNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9JbWFnZURlY29kZXJBVkZPYmpDLmg+CkBAIC01Nyw3ICs1Niw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkZWxldGVEZWNvZGVyKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIpOwogICAg
IHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlm
aWVyLCBsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSk7CiAgICAgdm9pZCBzZXREYXRhKFdl
YkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHNpemVfdCBmcmFt
ZUNvdW50LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBib29sIGhhc1RyYWNrLCBPcHRp
b25hbDxWZWN0b3I8V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+PiYmKT4mJik7Ci0g
ICAgdm9pZCBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVu
dGlmaWVyLCBzaXplX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V1RG
OjpNYWNoU2VuZFJpZ2h0PiYmLCBDb2xvclNwYWNlRGF0YSYmKT4mJik7CisgICAgdm9pZCBjcmVh
dGVGcmFtZUltYWdlQXRJbmRleChXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyLCBzaXpl
X3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJp
Z2h0PiYmLCBPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+JiYpPiYmKTsK
ICAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVu
dGlmaWVyLCBzaXplX3QgaW5kZXgpOwogCiAgICAgdm9pZCBlbmNvZGVkRGF0YVN0YXR1c0NoYW5n
ZWQoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkubWVzc2FnZXMuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdl
RGVjb2RlckFWRlByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkubWVzc2Fn
ZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgbWVzc2FnZXMgLT4gUmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGUHJveHkgTgogICAgIERlbGV0ZURlY29kZXIoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIFNldEV4cGVjdGVkQ29udGVudFNpemUo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBsb25nIGxvbmcgZXhw
ZWN0ZWRDb250ZW50U2l6ZSkKICAgICBTZXREYXRhKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKSAtPiAoc2l6ZV90IGZyYW1lQ291bnQsIFdlYkNvcmU6OkludFNp
emUgc2l6ZSwgYm9vbCBoYXNUcmFjaywgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkltYWdlRGVj
b2Rlcjo6RnJhbWVJbmZvPj4gZnJhbWVJbmZvcykgU3luY2hyb25vdXMKLSAgICBDcmVhdGVGcmFt
ZUltYWdlQXRJbmRleChXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IHNpemVfdCBpbmRleCkgLT4gKE9wdGlvbmFsPE1hY2hTZW5kUmlnaHQ+IHNlbmRSaWdodCwgc3Ry
dWN0IFdlYktpdDo6Q29sb3JTcGFjZURhdGEgY29sb3JTcGFjZSkgU3luY2hyb25vdXMKKyAgICBD
cmVhdGVGcmFtZUltYWdlQXRJbmRleChXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIHNpemVfdCBpbmRleCkgLT4gKE9wdGlvbmFsPE1hY2hTZW5kUmlnaHQ+IHNlbmRS
aWdodCwgT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNl
KSBTeW5jaHJvbm91cwogICAgIENsZWFyRnJhbWVCdWZmZXJDYWNoZShXZWJDb3JlOjpJbWFnZURl
Y29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCkKIH0KIApJbmRleDogU291
cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03NCwxMCArNzQsNyBAQCB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlOjpjbGVhcigp
CiAKIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uOjplbmNvZGUoSVBDOjpFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgaXNPcGFxdWU7Ci0jaWYgUExB
VEZPUk0oQ09DT0EpCi0gICAgZW5jb2RlciA8PCBjb2xvclNwYWNlOwotI2VuZGlmCisgICAgZW5j
b2RlciA8PCBjb2xvclNwYWNlIDw8IGlzT3BhcXVlOwogI2lmIFVTRShESVJFQ1QyRCkKICAgICBT
aGFyZWRNZW1vcnk6OkhhbmRsZTo6ZW5jb2RlSGFuZGxlKGVuY29kZXIsIHNoYXJlZFJlc291cmNl
SGFuZGxlKTsKIApAQCAtODgsMjEgKzg1LDI4IEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpDb25m
aWd1cmF0aW9uOjplbmMKICNlbmRpZgogfQogCi1ib29sIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmln
dXJhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgQ29uZmlndXJhdGlvbiYgY29u
ZmlndXJhdGlvbikKK2Jvb2wgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uOjpkZWNvZGUo
SVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb25maWd1cmF0aW9uJiByZXN1bHQpCiB7Ci0gICAgaWYg
KCFkZWNvZGVyLmRlY29kZShjb25maWd1cmF0aW9uLmlzT3BhcXVlKSkKKyAgICBPcHRpb25hbDxP
cHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+PiBjb2xvclNwYWNlOworICAg
IGRlY29kZXIgPj4gY29sb3JTcGFjZTsKKyAgICBpZiAoIWNvbG9yU3BhY2UpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZSkpCisKKyAgICBPcHRpb25hbDxib29sPiBpc09wYXF1
ZTsKKyAgICBkZWNvZGVyID4+IGlzT3BhcXVlOworICAgIGlmICghaXNPcGFxdWUpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSNlbmRpZgorCisgICAgcmVzdWx0ID0gQ29uZmlndXJhdGlvbiB7IFdU
Rk1vdmUoKmNvbG9yU3BhY2UpLCAqaXNPcGFxdWUgfTsKKwogI2lmIFVTRShESVJFQ1QyRCkKICAg
ICBhdXRvIHByb2Nlc3NTcGVjaWZpY0hhbmRsZSA9IFNoYXJlZE1lbW9yeTo6SGFuZGxlOjpkZWNv
ZGVIYW5kbGUoZGVjb2Rlcik7CiAgICAgaWYgKCFwcm9jZXNzU3BlY2lmaWNIYW5kbGUpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGNvbmZpZ3VyYXRpb24uc2hhcmVkUmVzb3VyY2VIYW5k
bGUgPSBwcm9jZXNzU3BlY2lmaWNIYW5kbGUudmFsdWUoKTsKKyAgICByZXN1bHQuc2hhcmVkUmVz
b3VyY2VIYW5kbGUgPSBwcm9jZXNzU3BlY2lmaWNIYW5kbGUudmFsdWUoKTsKICNlbmRpZgorCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJs
ZUJpdG1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJp
dG1hcC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFi
bGVCaXRtYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTUgKzI2LDEyIEBACiAjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRGVzdGlu
YXRpb25Db2xvclNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9QbGF0Zm9ybUltYWdlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogCi0jaWYgVVNFKENHKQotI2luY2x1
ZGUgIkNvbG9yU3BhY2VEYXRhLmgiCi0jZW5kaWYKLQogI2lmIFVTRShESVJFQ1QyRCkKIGludGVy
ZmFjZSBJRDJEMUJpdG1hcDsKIGludGVyZmFjZSBJRDJEMVJlbmRlclRhcmdldDsKQEAgLTU1LDEw
ICs1Miw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgU2hhcmVhYmxlQml0bWFwIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlYWJsZUJpdG1hcD4gewogcHVibGljOgogICAg
IHN0cnVjdCBDb25maWd1cmF0aW9uIHsKKyAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlOwogICAgICAgICBib29sIGlzT3BhcXVlIHsgZmFs
c2UgfTsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgQ29sb3JTcGFjZURhdGEgY29sb3JT
cGFjZTsKLSNlbmRpZgogI2lmIFVTRShESVJFQ1QyRCkKICAgICAgICAgbXV0YWJsZSBIQU5ETEUg
c2hhcmVkUmVzb3VyY2VIYW5kbGUgeyBudWxscHRyIH07CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODIsNiArODIsOCBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkK
KyNpbmNsdWRlICJBcmd1bWVudENvZGVyc0NGLmgiCisKIG5hbWVzcGFjZSBXVEYgewogY2xhc3Mg
TWFjaFNlbmRSaWdodDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzI1LDggKzMyNSwxMSBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
PiBXZWJQCiAgICAgcGFyYW1ldGVycy5oYXNSZXNvdXJjZUxvYWRDbGllbnQgPSBXVEZNb3ZlKCpo
YXNSZXNvdXJjZUxvYWRDbGllbnQpOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFyYW1ldGVycy5jb2xvclNwYWNlKSkKKyAgICBPcHRpb25hbDxPcHRpb25h
bDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+PiBjb2xvclNwYWNlOworICAgIGRlY29kZXIgPj4gY29s
b3JTcGFjZTsKKyAgICBpZiAoIWNvbG9yU3BhY2UpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgcGFyYW1ldGVycy5jb2xvclNwYWNlID0gV1RGTW92ZSgqY29sb3JTcGFjZSk7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVzZVN5c3RlbUFwcGVhcmFuY2UpKQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyNzc5
MTkpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNl
c1N0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Db2xvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lu
dFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dE1pbGVzdG9uZS5oPgpAQCAtNDksMTAg
KzUwLDYgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCi0jaWYgUExBVEZPUk0oTUFDKQotI2luY2x1ZGUgIkNvbG9yU3BhY2VEYXRh
LmgiCi0jZW5kaWYKLQogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKICNpbmNsdWRl
IDxXZWJDb3JlL0FwcGxpY2F0aW9uTWFuaWZlc3QuaD4KICNlbmRpZgpAQCAtMTQ2LDcgKzE0Myw3
IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBib29sIHVzZUVsZXZh
dGVkVXNlckludGVyZmFjZUxldmVsIHsgZmFsc2UgfTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAg
ICBDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKICAgICBib29sIHVzZVN5c3RlbUFwcGVhcmFu
Y2U7CiAjZW5kaWYKICNpZiBFTkFCTEUoTUVUQV9WSUVXUE9SVCkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmUubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjEyLDE5ICsyMTIsMTkgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6
c3dhcFRvVmFsaQogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBUeXBlOjpJT1N1cmZh
Y2U6CiAgICAgICAgIGlmIChzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmcpCi0gICAgICAgICAgICBt
X2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0gbV9sYXllci0+Y29udGV4dCgpLT5lbnN1cmVSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKS5jcmVhdGVJbWFnZUJ1ZmZlcihtX3NpemUsIFdlYkNv
cmU6OlJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IsIHBpeGVsRm9ybWF0KCkpOworICAgICAgICAgICAgbV9mcm9u
dEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IG1fbGF5ZXItPmNvbnRleHQoKS0+ZW5zdXJlUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1hZ2VCdWZmZXIobV9zaXplLCBXZWJDb3JlOjpS
ZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCksIHBpeGVsRm9ybWF0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1
ZmZlcjxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkQmFja2VuZD46OmNyZWF0
ZShtX3NpemUsIG1fc2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwg
cGl4ZWxGb3JtYXQoKSwgbnVsbHB0cik7CisgICAgICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdl
QnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxBY2NlbGVyYXRlZEltYWdlQnVm
ZmVyU2hhcmVhYmxlTWFwcGVkQmFja2VuZD46OmNyZWF0ZShtX3NpemUsIG1fc2NhbGUsIFdlYkNv
cmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBwaXhlbEZvcm1hdCgpLCBudWxscHRy
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUeXBlOjpCaXRtYXA6CiAgICAgICAgIGlmIChz
aG91bGRVc2VSZW1vdGVSZW5kZXJpbmcpCi0gICAgICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdl
QnVmZmVyID0gbV9sYXllci0+Y29udGV4dCgpLT5lbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkoKS5jcmVhdGVJbWFnZUJ1ZmZlcihtX3NpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQsIG1fc2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiwgcGl4ZWxGb3JtYXQoKSk7CisgICAgICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVm
ZmVyID0gbV9sYXllci0+Y29udGV4dCgpLT5lbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkoKS5jcmVhdGVJbWFnZUJ1ZmZlcihtX3NpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6OlVu
YWNjZWxlcmF0ZWQsIG1fc2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpLCBwaXhlbEZvcm1hdCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9mcm9udEJ1
ZmZlci5pbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8VW5hY2NlbGVy
YXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZD46OmNyZWF0ZShtX3NpemUsIG1fc2NhbGUs
IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSwgbnVs
bHB0cik7CisgICAgICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0gV2ViQ29yZTo6
Q29uY3JldGVJbWFnZUJ1ZmZlcjxVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNr
ZW5kPjo6Y3JlYXRlKG1fc2l6ZSwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCksIHBpeGVsRm9ybWF0KCksIG51bGxwdHIpOwogICAgICAgICBicmVhazsKICNp
ZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCiAgICAgY2FzZSBU
eXBlOjpDR0Rpc3BsYXlMaXN0OgotICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0g
V2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNr
ZW5kPjo6Y3JlYXRlKG1fc2l6ZSwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCLCBwaXhlbEZvcm1hdCgpLCBudWxscHRyKTsKKyAgICAgICAgbV9mcm9udEJ1ZmZl
ci5pbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8Q0dEaXNwbGF5TGlz
dEltYWdlQnVmZmVyQmFja2VuZD46OmNyZWF0ZShtX3NpemUsIG1fc2NhbGUsIFdlYkNvcmU6OkRl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBwaXhlbEZvcm1hdCgpLCBudWxscHRyKTsKICAg
ICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICB9CkBAIC0zOTcsNyArMzk3LDcgQEAgdm9pZCBSZW1v
dGVMYXllckJhY2tpbmdTdG9yZTo6YXBwbHlCYWNraQogICAgICAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBUeXBlOjpJT1N1cmZhY2UpOwogICAgICAgICAgICAgc3dpdGNoIChjb250ZW50c1R5cGUp
IHsKICAgICAgICAgICAgIGNhc2UgTGF5ZXJDb250ZW50c1R5cGU6OklPU3VyZmFjZTogewotICAg
ICAgICAgICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJv
bVNlbmRSaWdodChXVEZNb3ZlKG1hY2hTZW5kUmlnaHQpLCBXZWJDb3JlOjpzUkdCQ29sb3JTcGFj
ZVJlZigpKTsKKyAgICAgICAgICAgICAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZh
Y2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShtYWNoU2VuZFJpZ2h0KSwgV2ViQ29yZTo6
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgICAgICAgICAgICAgIGxheWVyLmNv
bnRlbnRzID0gc3VyZmFjZSA/IHN1cmZhY2UtPmFzTGF5ZXJDb250ZW50cygpIDogbmlsOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9T
aGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MCw3ICs0MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIAogc3Rh
dGljIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6Q29u
ZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKIHsKLSAgICByZXR1cm4gY29uZmlndXJhdGlvbi5j
b2xvclNwYWNlLmNnQ29sb3JTcGFjZS5nZXQoKSA/OiBzUkdCQ29sb3JTcGFjZVJlZigpOworICAg
IHJldHVybiBjb25maWd1cmF0aW9uLmNvbG9yU3BhY2UgPyBjb25maWd1cmF0aW9uLmNvbG9yU3Bh
Y2UtPnBsYXRmb3JtQ29sb3JTcGFjZSgpIDogV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKTsK
IH0KIAogc3RhdGljIGJvb2wgd2FudHNFeHRlbmRlZFJhbmdlKGNvbnN0IFNoYXJlYWJsZUJpdG1h
cDo6Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9Db2xvclNwYWNlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9Db2xvclNwYWNlRGF0YS5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIENvbG9yU3BhY2VEYXRhX2gKLSNkZWZpbmUgQ29s
b3JTcGFjZURhdGFfaAotCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1uYW1lc3BhY2Ug
SVBDIHsKLWNsYXNzIERlY29kZXI7Ci1jbGFzcyBFbmNvZGVyOwotfQotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLQotc3RydWN0IENvbG9yU3BhY2VEYXRhIHsKLSAgICB2b2lkIGVuY29kZShJUEM6OkVu
Y29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2Rl
KElQQzo6RGVjb2RlciYsIENvbG9yU3BhY2VEYXRhJik7Ci0KLSAgICBSZXRhaW5QdHI8Q0dDb2xv
clNwYWNlUmVmPiBjZ0NvbG9yU3BhY2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmIC8vIENvbG9yU3BhY2VEYXRhX2gKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9Db2xvclNwYWNlRGF0YS5oCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3Zu
OmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBw
cm9wZXJ0eQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvbG9yU3BhY2VEYXRhLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9Db2xvclNwYWNlRGF0YS5t
bQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvbG9yU3Bh
Y2VEYXRhLm1tCShub25leGlzdGVudCkKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiQ29sb3JTcGFjZURhdGEuaCIKLQotI2ltcG9ydCAi
QXJndW1lbnRDb2RlcnNDRi5oIgotI2ltcG9ydCAiRGVjb2Rlci5oIgotI2ltcG9ydCAiRW5jb2Rl
ci5oIgotI2ltcG9ydCA8d3RmL0VudW1UcmFpdHMuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LXZvaWQgQ29sb3JTcGFjZURhdGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0
Ci17Ci0gICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxib29sPihjZ0NvbG9yU3BhY2UpOwotICAg
IGlmIChjZ0NvbG9yU3BhY2UpCi0gICAgICAgIGVuY29kZXIgPDwgY2dDb2xvclNwYWNlOwotfQot
Ci1ib29sIENvbG9yU3BhY2VEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb2xv
clNwYWNlRGF0YSYgY29sb3JTcGFjZURhdGEpCi17Ci0gICAgYm9vbCBoYXNDR0NvbG9yU3BhY2U7
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNDR0NvbG9yU3BhY2UpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWhhc0NHQ29sb3JTcGFjZSkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KLSAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNlOwotICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoY29sb3JTcGFjZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAKLSAgICBjb2xvclNwYWNlRGF0YS5jZ0NvbG9yU3BhY2UgPSBXVEZNb3ZlKGNvbG9yU3BhY2Up
OwotICAgIHJldHVybiB0cnVlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTMsNiAr
OTMsNyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IENvbG9yOwogY2xhc3MgQ3Vyc29yOworY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlOwogY2xh
c3MgRmxvYXRRdWFkOwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgUmVnaW9uOwpAQCAtMTg4LDEw
ICsxODksNiBAQCBjbGFzcyBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50OwogY2xhc3Mg
SW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdDsKICNlbmRpZgogCi0j
aWYgUExBVEZPUk0oQ09DT0EpCi1zdHJ1Y3QgQ29sb3JTcGFjZURhdGE7Ci0jZW5kaWYKLQogI2lm
IEhBVkUoVklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQogdXNpbmcgTGF5ZXJIb3N0aW5nQ29u
dGV4dElEID0gdWludDMyX3Q7CiAjZW5kaWYKQEAgLTQyNiw3ICs0MjMsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIENHUmVjdCBib3VuZHNPZkxheWVySW5MYXllckJhY2tlZFdpbmRvd0Nvb3Jk
aW5hdGVzKENBTGF5ZXIgKikgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBDb2xvclNwYWNlRGF0
YSBjb2xvclNwYWNlKCkgPSAwOworICAgIHZpcnR1YWwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xv
clNwYWNlIGNvbG9yU3BhY2UoKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXRmb3Jt
Q29udGV4dE1lbnUoTlNNZW51ICosIFdlYkNvcmU6OkludFBvaW50KSA9IDA7CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAt
MTk4LDYgKzE5OCw3IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgQXR0YWNobWVudDsKIGNsYXNz
IENvbnRlbnRXb3JsZDsKIGNsYXNzIENvbnRleHRNZW51Q2xpZW50OworY2xhc3MgRGVzdGluYXRp
b25Db2xvclNwYWNlOwogY2xhc3MgRXJyb3I7CiBjbGFzcyBGaW5kQ2xpZW50OwogY2xhc3MgRmlu
ZE1hdGNoZXNDbGllbnQ7CkBAIC0zNzcsNyArMzc4LDYgQEAgY2xhc3MgV2ViV2hlZWxFdmVudENv
YWxlc2NlcjsKIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiAKIHN0cnVjdCBBcHBCb3VuZE5hdmln
YXRpb25UZXN0aW5nRGF0YTsKLXN0cnVjdCBDb2xvclNwYWNlRGF0YTsKIHN0cnVjdCBEYXRhRGV0
ZWN0aW9uUmVzdWx0Owogc3RydWN0IERvY3VtZW50RWRpdGluZ0NvbnRleHQ7CiBzdHJ1Y3QgRG9j
dW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3Q7CkBAIC0xMTMyLDcgKzExMzIsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoKTsKICAgICB2b2lkIGFzc2lzdGl2ZVRlY2hu
b2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKTsKIAotICAgIENvbG9yU3BhY2VEYXRhIGNvbG9yU3Bh
Y2UoKTsKKyAgICBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpOwog
I2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCShyZXZpc2lvbiAyNzc5
MTkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTAxNCw3ICsxMDE0LDcgQEAgLSAoUmVmUHRyPFdlYktpdDo6Vmll
d1NuYXBzaG90PilfdGFrZVZpZQogI2Vsc2UKICAgICBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1h
dCBzbmFwc2hvdEZvcm1hdCA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0OjpCR1JBOwogI2Vu
ZGlmCi0gICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGUoV2ViQ29y
ZTo6ZXhwYW5kZWRJbnRTaXplKHNuYXBzaG90U2l6ZSksIFdlYkNvcmU6OnNSR0JDb2xvclNwYWNl
UmVmKCksIHNuYXBzaG90Rm9ybWF0KTsKKyAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1
cmZhY2U6OmNyZWF0ZShXZWJDb3JlOjpleHBhbmRlZEludFNpemUoc25hcHNob3RTaXplKSwgV2Vi
Q29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHNuYXBzaG90Rm9ybWF0KTsKICAg
ICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIENBUmVuZGVyU2Vy
dmVyUmVuZGVyTGF5ZXJXaXRoVHJhbnNmb3JtKE1BQ0hfUE9SVF9OVUxMLCBzZWxmLmxheWVyLmNv
bnRleHQuY29udGV4dElkLCByZWludGVycHJldF9jYXN0PHVpbnQ2NF90PihzZWxmLmxheWVyKSwg
c3VyZmFjZS0+c3VyZmFjZSgpLCAwLCAwLCAmdHJhbnNmb3JtKTsKQEAgLTMwNzksNyArMzA3OSw3
IEBAIC0gKHZvaWQpX3NuYXBzaG90UmVjdDooQ0dSZWN0KXJlY3RJblZpZXcKICAgICBOU1N0cmlu
ZyAqZGlzcGxheU5hbWUgPSBzZWxmLndpbmRvdy5zY3JlZW4uZGlzcGxheUNvbmZpZ3VyYXRpb24u
bmFtZTsKICAgICBpZiAoZGlzcGxheU5hbWUgJiYgIXNlbGYud2luZG93LmhpZGRlbikgewogICAg
ICAgICBUcmFjZVNjb3BlIHNuYXBzaG90U2NvcGUoUmVuZGVyU2VydmVyU25hcHNob3RTdGFydCwg
UmVuZGVyU2VydmVyU25hcHNob3RFbmQpOwotICAgICAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3Jl
OjpJT1N1cmZhY2U6OmNyZWF0ZShXZWJDb3JlOjpleHBhbmRlZEludFNpemUoV2ViQ29yZTo6Rmxv
YXRTaXplKGltYWdlU2l6ZSkpLCBXZWJDb3JlOjpzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICAg
ICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGUoV2ViQ29yZTo6ZXhw
YW5kZWRJbnRTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZShpbWFnZVNpemUpKSwgV2ViQ29yZTo6RGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgICAgICBpZiAoIXN1cmZhY2UpIHsKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJu
OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCShy
ZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw2ICs5NCw3IEBAIGNsYXNzIFBhZ2VDb25maWd1
cmF0aW9uOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U7CiBjbGFzcyBJbnRQb2ludDsKIHN0cnVjdCBTaGFyZURhdGFXaXRoUGFyc2VkVVJMOwog
CkBAIC0xNjgsNyArMTY5LDYgQEAgY2xhc3MgV2ViRnJhbWVQcm94eTsKIGNsYXNzIFdlYlBhZ2VQ
cm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQb29sOwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5Owotc3Ry
dWN0IENvbG9yU3BhY2VEYXRhOwogc3RydWN0IFdlYkhpdFRlc3RSZXN1bHREYXRhOwogCiBlbnVt
IGNsYXNzIENvbnRpbnVlVW5zYWZlTG9hZCA6IGJvb2w7CkBAIC0zMTMsNyArMzEzLDcgQEAgcHVi
bGljOgogCiAgICAgTlNWaWV3ICpoaXRUZXN0KENHUG9pbnQpOwogCi0gICAgQ29sb3JTcGFjZURh
dGEgY29sb3JTcGFjZSgpOworICAgIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xv
clNwYWNlKCk7CiAKICAgICB2b2lkIHNldFVuZGVybGF5Q29sb3IoTlNDb2xvciAqKTsKICAgICBO
U0NvbG9yICp1bmRlcmxheUNvbG9yKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHdvcmtpbmcgY29weSkKQEAg
LTMyLDcgKzMyLDYgQEAKICNpbXBvcnQgIkFQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50Lmgi
CiAjaW1wb3J0ICJBUElOYXZpZ2F0aW9uLmgiCiAjaW1wb3J0ICJBcHBLaXRTUEkuaCIKLSNpbXBv
cnQgIkNvbG9yU3BhY2VEYXRhLmgiCiAjaW1wb3J0ICJDb3JlVGV4dEhlbHBlcnMuaCIKICNpbXBv
cnQgIkZvbnRJbmZvLmgiCiAjaW1wb3J0ICJGdWxsc2NyZWVuQ2xpZW50LmgiCkBAIC05MCw2ICs4
OSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yTWFjLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Nv
bG9yU2VyaWFsaXphdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db21wb3NpdGlvbkhpZ2hsaWdo
dC5oPgorI2ltcG9ydCA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRGljdGlvbmFyeUxvb2t1cC5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnRGF0YS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnSXRlbS5oPgpAQCAtMjUwMCw3ICsyNTAwLDcgQEAgdm9p
ZCBXZWJWaWV3SW1wbDo6cG9zdEZha2VNb3VzZU1vdmVkRXZlbgogICAgIG1fcGFnZS0+aGFuZGxl
TW91c2VFdmVudCh3ZWJFdmVudCk7CiB9CiAKLUNvbG9yU3BhY2VEYXRhIFdlYlZpZXdJbXBsOjpj
b2xvclNwYWNlKCkKK1dlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBXZWJWaWV3SW1wbDo6
Y29sb3JTcGFjZSgpCiB7CiAgICAgaWYgKCFtX2NvbG9yU3BhY2UpIHsKICAgICAgICAgaWYgKG1f
dGFyZ2V0V2luZG93Rm9yTW92ZVByZXBhcmF0aW9uKQpAQCAtMjUxMSwxMCArMjUxMSw3IEBAIENv
bG9yU3BhY2VEYXRhIFdlYlZpZXdJbXBsOjpjb2xvclNwYWNlKCkKICAgICAgICAgICAgIG1fY29s
b3JTcGFjZSA9IFtOU1NjcmVlbiBtYWluU2NyZWVuXS5jb2xvclNwYWNlOwogICAgIH0KIAotICAg
IENvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2VEYXRhOwotICAgIGNvbG9yU3BhY2VEYXRhLmNnQ29s
b3JTcGFjZSA9IFttX2NvbG9yU3BhY2UgQ0dDb2xvclNwYWNlXTsKLQotICAgIHJldHVybiBjb2xv
clNwYWNlRGF0YTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIHsg
W21fY29sb3JTcGFjZSBDR0NvbG9yU3BhY2VdIH07CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnNl
dFVuZGVybGF5Q29sb3IoTlNDb2xvciAqdW5kZXJsYXlDb2xvcikKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVIb3N0Lm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzUsNiArMzUsNyBAQAogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJX
ZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorI2lt
cG9ydCA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUv
R3JhcGhpY3NDb250ZXh0Q0cuaD4KICNpbXBvcnQgPFdlYkNvcmUvSU9TdXJmYWNlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1BsYXRmb3JtTGF5ZXIuaD4KQEAgLTMxNyw3ICszMTgsNyBAQCBzdGF0aWMg
dm9pZCByZWN1cnNpdmVseU1hcElPU3VyZmFjZUJhY2tpCiB7CiAgICAgaWYgKGxheWVyLmNvbnRl
bnRzICYmIENGR2V0VHlwZUlEKChfX2JyaWRnZSBDRlR5cGVSZWYpbGF5ZXIuY29udGVudHMpID09
IENBTWFjaFBvcnRHZXRUeXBlSUQoKSkgewogICAgICAgICBNYWNoU2VuZFJpZ2h0IHBvcnQgPSBN
YWNoU2VuZFJpZ2h0OjpjcmVhdGUoQ0FNYWNoUG9ydEdldFBvcnQoKF9fYnJpZGdlIENBTWFjaFBv
cnRSZWYpbGF5ZXIuY29udGVudHMpKTsKLSAgICAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6
SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUocG9ydCksIHNSR0JDb2xvclNw
YWNlUmVmKCkpOworICAgICAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNy
ZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShwb3J0KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCkpOwogICAgICAgICBsYXllci5jb250ZW50cyA9IHN1cmZhY2UgPyBzdXJm
YWNlLT5hc0xheWVyQ29udGVudHMoKSA6IG5pbDsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCShyZXZpc2lvbiAyNzc5
MTkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAko
d29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNWaWV3
SW5XaW5kb3coKSBvdmVycmlkZTsKICAgICBib29sIGlzVmlzdWFsbHlJZGxlKCkgb3ZlcnJpZGU7
CiAgICAgTGF5ZXJIb3N0aW5nTW9kZSB2aWV3TGF5ZXJIb3N0aW5nTW9kZSgpIG92ZXJyaWRlOwot
ICAgIENvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2UoKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0
UmVtb3RlTGF5ZXJUcmVlUm9vdE5vZGUoUmVtb3RlTGF5ZXJUcmVlTm9kZSopIG92ZXJyaWRlOwog
ICAgIENBTGF5ZXIgKmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIoKSBjb25zdCBvdmVy
cmlkZTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBs
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xp
ZW50SW1wbE1hYy5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2
IEBACiAKICNpbXBvcnQgIkFQSUhpdFRlc3RSZXN1bHQuaCIKICNpbXBvcnQgIkFwcEtpdFNQSS5o
IgotI2ltcG9ydCAiQ29sb3JTcGFjZURhdGEuaCIKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbXBvcnQgIkRvd25sb2FkUHJveHkuaCIKICNpbXBvcnQgIkRyYXdpbmdBcmVhUHJveHkuaCIK
QEAgLTY2LDYgKzY1LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQml0bWFwSW1hZ2UuaD4KICNpbXBv
cnQgPFdlYkNvcmUvQ29sb3JNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ3Vyc29yLmg+CisjaW1w
b3J0IDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9E
aWN0aW9uYXJ5TG9va3VwLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdJdGVtLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgpAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgUGFnZUNsaWVu
dEltcGw6OnZpZXdXaWxsTW92ZVRvQW5vdGgKICAgICBjbGVhckFsbEVkaXRDb21tYW5kcygpOwog
fQogCi1Db2xvclNwYWNlRGF0YSBQYWdlQ2xpZW50SW1wbDo6Y29sb3JTcGFjZSgpCitXZWJDb3Jl
OjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgUGFnZUNsaWVudEltcGw6OmNvbG9yU3BhY2UoKQogewog
ICAgIHJldHVybiBtX2ltcGwtPmNvbG9yU3BhY2UoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYVByb3h5Lm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAK
LSNpbXBvcnQgIkNvbG9yU3BhY2VEYXRhLmgiCiAjaW1wb3J0ICJEcmF3aW5nQXJlYU1lc3NhZ2Vz
LmgiCiAjaW1wb3J0ICJEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCIKICNpbXBvcnQgIkxheWVy
VHJlZUNvbnRleHQuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dl
YlBhZ2VQcm94eU1hYy5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjks
NiBAQAogI2lmIFBMQVRGT1JNKE1BQykKIAogI2ltcG9ydCAiQVBJVUlDbGllbnQuaCIKLSNpbXBv
cnQgIkNvbG9yU3BhY2VEYXRhLmgiCiAjaW1wb3J0ICJDb25uZWN0aW9uLmgiCiAjaW1wb3J0ICJE
YXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJFZGl0b3JTdGF0ZS5oIgpAQCAtNTIsNiArNTEsNyBA
QAogI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXNLZXlzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJv
eHkuaCIKICNpbXBvcnQgPFdlYkNvcmUvQXR0cmlidXRlZFN0cmluZy5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGljdGlvbmFy
eUxvb2t1cC5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnSXRlbS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9HcmFwaGljc0xheWVyLmg+CkBAIC0zNDQsNyArMzQ0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmFzc2lzdGl2ZVRlY2hub2xvZ3lNYQogICAgIHBhZ2VDbGllbnQoKS5hc3Npc3RpdmVUZWNobm9s
b2d5TWFrZUZpcnN0UmVzcG9uZGVyKCk7CiB9CiAKLUNvbG9yU3BhY2VEYXRhIFdlYlBhZ2VQcm94
eTo6Y29sb3JTcGFjZSgpCitXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgV2ViUGFnZVBy
b3h5Ojpjb2xvclNwYWNlKCkKIHsKICAgICByZXR1cm4gcGFnZUNsaWVudCgpLmNvbG9yU3BhY2Uo
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjYzNCw4ICsyNjM0LDYgQEAK
IAkJMUEyNTZFMzYxOEExQTc4ODAwNkZCOTIyIC8qIFdLTmF2aWdhdGlvbkFjdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS05hdmlnYXRpb25BY3Rpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyNTZFMzkxOEExQTdERjAwNkZCOTIyIC8qIFdLTmF2
aWdhdGlvbkFjdGlvbkludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLTmF2aWdhdGlvbkFjdGlvbkludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFBMjhCOENCMUM4MEVENTkwMDZGRDc0MyAvKiBXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUEyQTRBRkQxNTg2OTM5MjAwOTBDOUU5
IC8qIENvbG9yU3BhY2VEYXRhLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gQ29sb3JTcGFjZURhdGEubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFB
MkE0QUZFMTU4NjkzOTIwMDkwQzlFOSAvKiBDb2xvclNwYWNlRGF0YS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvclNwYWNlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQTJCQjZDQzE0MTE3QTVGMDAwRjM1RDQgLyogUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMkJC
NkNFMTQxMTdCNEQwMDBGMzVENCAvKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNl
aXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9X
ZWJLaXQyL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUEyQkI2Q0YxNDExN0I0RDAwMEYzNUQ0
IC8qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oOyBwYXRoID0g
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmg7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC0xMDQzMCw4ICsxMDQyOCw2
IEBACiAJCQkJOUY1NEY4OEUxNjQ4OEU4NzAwN0RGODFBIC8qIEF1eGlsaWFyeVByb2Nlc3NNYWMu
bW0gKi8sCiAJCQkJQ0UxMUFENTExQ0JDNDgyRjAwNjgxRUU1IC8qIENvZGVTaWduaW5nLmggKi8s
CiAJCQkJQ0UxMUFENEYxQ0JDNDdGODAwNjgxRUU1IC8qIENvZGVTaWduaW5nLm1tICovLAotCQkJ
CTFBMkE0QUZFMTU4NjkzOTIwMDkwQzlFOSAvKiBDb2xvclNwYWNlRGF0YS5oICovLAotCQkJCTFB
MkE0QUZEMTU4NjkzOTIwMDkwQzlFOSAvKiBDb2xvclNwYWNlRGF0YS5tbSAqLywKIAkJCQkxQUM3
NUExQzFCMzM2OTVFMDA1Njc0NUIgLyogSGFuZ0RldGVjdGlvbkRpc2FibGVyTWFjLm1tICovLAog
CQkJCTJENTAzNjVEMUJDQzc5M0YwMEUyMEJCMyAvKiBOYXRpdmVXZWJHZXN0dXJlRXZlbnRNYWMu
bW0gKi8sCiAJCQkJQzAyQkZGMUQxMjUxNTAyRTAwOUNDQkVBIC8qIE5hdGl2ZVdlYktleWJvYXJk
RXZlbnRNYWMubW0gKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJs
ZUJpdG1hcEJhY2tlbmQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDExICs0NSw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FU
RURfSU1QTChJbWFnZUJ1ZmZlclMKIAogU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIElt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29uZmlndXJhdGlvbihjb25zdCBQYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlv
biBjb25maWd1cmF0aW9uOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGNvbmZpZ3VyYXRpb24u
Y29sb3JTcGFjZSA9IHsgY2FjaGVkQ0dDb2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JTcGFjZSkg
fTsKLSNlbmRpZgotICAgIHJldHVybiBjb25maWd1cmF0aW9uOworICAgIHJldHVybiB7IHBhcmFt
ZXRlcnMuY29sb3JTcGFjZSB9OwogfQogCiBJbnRTaXplIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZDo6Y2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKGNvbnN0IFBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5j
cHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk0LDcgKzk0LDcgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwcmVwYQog
ICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBh
dXRvIGRpc3BsYXlCdWZmZXIgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92
ZShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwgc1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgYXV0
byBkaXNwbGF5QnVmZmVyID0gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUo
ZGlzcGxheUJ1ZmZlclNlbmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpKTsKICAgICBpZiAoZGlzcGxheUJ1ZmZlcikgewogICAgICAgICBhdXRvJiBzYyA9IHBs
YXRmb3JtU3dhcENoYWluKCk7CiAgICAgICAgIHNjLnJlY3ljbGVCdWZmZXIoKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAkod29y
a2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
IDogcHVibGljIFdlCiAgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXI6OnJlc29s
dXRpb25TY2FsZTsKIAogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8UmVtb3RlSW1hZ2VCdWZm
ZXJQcm94eT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwg
V2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgIHN0YXRpYyBSZWZQdHI8UmVt
b3RlSW1hZ2VCdWZmZXJQcm94eT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKICAg
ICB7CiAgICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2Vu
ZDo6UGFyYW1ldGVycyB7IHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxG
b3JtYXQgfTsKICAgICAgICAgaWYgKEJhY2tlbmRUeXBlOjpjYWxjdWxhdGVTYWZlQmFja2VuZFNp
emUocGFyYW1ldGVycykuaXNFbXB0eSgpKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OmNyZWF0ZQogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OkNyZWF0ZUltYWdlQnVmZmVyKGltYWdlQnVmZmVyLmxvZ2ljYWxTaXplKCksIGltYWdlQnVmZmVy
LnJlbmRlcmluZ01vZGUoKSwgaW1hZ2VCdWZmZXIucmVzb2x1dGlvblNjYWxlKCksIGltYWdlQnVm
ZmVyLmNvbG9yU3BhY2UoKSwgaW1hZ2VCdWZmZXIucGl4ZWxGb3JtYXQoKSwgaW1hZ2VCdWZmZXIu
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpLCByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmll
cigpLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5
bmNSZXBseSk7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmlu
Z01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpCitSZWZQdHI8SW1h
Z2VCdWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNl
LCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkKIHsKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGlt
YWdlQnVmZmVyOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDE1
ICs0MywxOSBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKKwogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIGNsYXNzIERpc3BsYXlMaXN0OwogY2xhc3Mg
SXRlbTsKIH0KKworY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlOwogY2xhc3MgRmxvYXRTaXpl
OwogY2xhc3MgUGl4ZWxCdWZmZXI7CisKIGVudW0gY2xhc3MgQWxwaGFQcmVtdWx0aXBsaWNhdGlv
biA6IHVpbnQ4X3Q7Ci1lbnVtIGNsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7
CiBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOworCiB9CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtOTIsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAogICAgIC8vIE1l
c3NhZ2VzIHRvIGJlIHNlbnQuCi0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVh
dGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5kZXJp
bmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JT
cGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQpOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1
ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29y
ZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBXZWJDb3JlOjpE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCk7CiAgICAgU3RyaW5n
IGdldERhdGFVUkxGb3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25h
bDxkb3VibGU+IHF1YWxpdHksIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiwgV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICBWZWN0b3I8dWludDhfdD4gZ2V0RGF0
YUZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4g
cXVhbGl0eSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoRGlzcGxheUxpc3RBbmRDb21t
aXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VC
YWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5j
cHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXJTaGFyZWFibGVNYXBwCiAgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0
ZShiYWNrZW5kU2l6ZSwgYmFja2VuZFNpemUsIGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJz
LmNvbG9yU3BhY2UpLCBJT1N1cmZhY2U6OmZvcm1hdEZvclBpeGVsRm9ybWF0KHBhcmFtZXRlcnMu
cGl4ZWxGb3JtYXQpKTsKKyAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShiYWNr
ZW5kU2l6ZSwgYmFja2VuZFNpemUsIHBhcmFtZXRlcnMuY29sb3JTcGFjZSwgSU9TdXJmYWNlOjpm
b3JtYXRGb3JQaXhlbEZvcm1hdChwYXJhbWV0ZXJzLnBpeGVsRm9ybWF0KSk7CiAgICAgaWYgKCFz
dXJmYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtNjUsNyArNjUsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIAotICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVNl
bmRSaWdodChXVEZNb3ZlKFdURjo6Z2V0PE1hY2hTZW5kUmlnaHQ+KGhhbmRsZSkpLCBjYWNoZWRD
R0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSk7CisgICAgYXV0byBzdXJmYWNlID0g
SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoV1RGOjpnZXQ8TWFjaFNlbmRS
aWdodD4oaGFuZGxlKSksIHBhcmFtZXRlcnMuY29sb3JTcGFjZSk7CiAgICAgaWYgKCFzdXJmYWNl
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNw
cAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMyArMjgs
MTIgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgSEFWRShBVkFTU0VUUkVBREVSKQog
Ci0jaW5jbHVkZSAiQ29sb3JTcGFjZURhdGEuaCIKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVj
dGlvbi5oIgogI2luY2x1ZGUgIlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5TWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQVZBc3NldE1JTUVUeXBlQ2FjaGUuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL0NvbG9yU3BhY2VDRy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGVzdGluYXRp
b25Db2xvclNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0ltYWdlVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0
cnkuaD4KQEAgLTE2OCwxNCArMTY3LDE0IEBAIFBsYXRmb3JtSW1hZ2VQdHIgUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGOjoKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBPcHRpb25hbDxNYWNo
U2VuZFJpZ2h0PiBzZW5kUmlnaHQ7Ci0gICAgICAgIENvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2U7
CisgICAgICAgIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKICAg
ICAgICAgaWYgKCFtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpDcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChtX2lkZW50aWZpZXIsIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFW
RlByb3h5OjpDcmVhdGVGcmFtZUltYWdlQXRJbmRleDo6UmVwbHkoc2VuZFJpZ2h0LCBjb2xvclNw
YWNlKSwgMCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKCFzZW5kUmlnaHQp
CisgICAgICAgIGlmICghc2VuZFJpZ2h0IHx8ICFjb2xvclNwYWNlKQogICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRl
RnJvbVNlbmRSaWdodChXVEZNb3ZlKCpzZW5kUmlnaHQpLCBjb2xvclNwYWNlLmNnQ29sb3JTcGFj
ZS5nZXQoKSk7CisgICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3Jl
YXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKCpzZW5kUmlnaHQpLCBXVEZNb3ZlKCpjb2xvclNwYWNl
KSk7CiAgICAgICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgICAgIHJldHVybjsKIApJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9jb2NvYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGVDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL2NvY29hL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNvY29hLm1tCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL01l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3
MSw3IEBAIFJlZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXJQcml2YXRlUmUKICAgICBpZiAo
IXNlbmRSaWdodCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHN1cmZhY2Ug
PSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZSgqc2VuZFJp
Z2h0KSwgc1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6
SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoKnNlbmRSaWdodCksIFdlYkNv
cmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICBpZiAoIXN1cmZhY2UpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC05MSw3ICs5MSw3IEBAIFJldGFpblB0cjxDVlBp
eGVsQnVmZmVyUmVmPiBNZWRpYVBsYXllclAKICAgICBpZiAoIXNlbmRSaWdodCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6
OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZSgqc2VuZFJpZ2h0KSwgbnVsbHB0cik7CisgICAg
YXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdU
Rk1vdmUoKnNlbmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
KTsKICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0J
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTY0Niw3ICs2NDYsNyBAQCBpbmxpbmUg
UERGUGx1Z2luOjpQREZQbHVnaW4oV2ViRnJhbWUmIGZyCiAgICAgW21fY29udGFpbmVyTGF5ZXIg
YWRkU3VibGF5ZXI6bV9zY3JvbGxDb3JuZXJMYXllci5nZXQoKV07CiAgICAgaWYgKFttX3BkZkxh
eWVyQ29udHJvbGxlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldERldmljZUNvbG9y
U3BhY2U6KV0pIHsKICAgICAgICAgYXV0byB2aWV3ID0gZnJhbWUuY29yZUZyYW1lKCktPnZpZXco
KTsKLSAgICAgICAgW21fcGRmTGF5ZXJDb250cm9sbGVyIHNldERldmljZUNvbG9yU3BhY2U6c2Ny
ZWVuQ29sb3JTcGFjZSh2aWV3KV07CisgICAgICAgIFttX3BkZkxheWVyQ29udHJvbGxlciBzZXRE
ZXZpY2VDb2xvclNwYWNlOnNjcmVlbkNvbG9yU3BhY2UodmlldykucGxhdGZvcm1Db2xvclNwYWNl
KCldOwogICAgIH0KIAogI2lmIEhBVkUoSU5DUkVNRU5UQUxfUERGX0FQSVMpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0
aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0
aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDEyICs1Nyw3IEBAIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IGNyZWF0ZVNoYXJlYWJsZUIKICAgICB9CiAKICAgICAvLyBGSVhNRTogT25s
eSBzZWxlY3QgRXh0ZW5kZWRDb2xvciBvbiBpbWFnZXMga25vd24gdG8gbmVlZCB3aWRlIGdhbXV0
LgotICAgIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBiaXRtYXBDb25maWd1cmF0aW9u
OwotI2lmIFVTRShDRykKLSAgICBiaXRtYXBDb25maWd1cmF0aW9uLmNvbG9yU3BhY2UuY2dDb2xv
clNwYWNlID0gc2NyZWVuQ29sb3JTcGFjZShyZW5kZXJJbWFnZS5mcmFtZSgpLm1haW5GcmFtZSgp
LnZpZXcoKSk7Ci0jZW5kaWYKLQotICAgIGF1dG8gc2hhcmVkQml0bWFwID0gU2hhcmVhYmxlQml0
bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShiaXRtYXBTaXplKSwgYml0bWFwQ29uZmlndXJh
dGlvbik7CisgICAgYXV0byBzaGFyZWRCaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNo
YXJlYWJsZShJbnRTaXplKGJpdG1hcFNpemUpLCB7IHNjcmVlbkNvbG9yU3BhY2UocmVuZGVySW1h
Z2UuZnJhbWUoKS5tYWluRnJhbWUoKS52aWV3KCkpIH0pOwogICAgIGlmICghc2hhcmVkQml0bWFw
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MjcsNyArOTI3LDcg
QEAgV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeSogVwogCiAjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IFdlYkNocm9tZUNsaWVudDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRl
cmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3Jt
YXQpIGNvbnN0CitSZWZQdHI8SW1hZ2VCdWZmZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01v
ZGUsIFJlbmRlcmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9y
bWF0KSBjb25zdAogewogICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2hvdWxkVXNl
UmVtb3RlUmVuZGVyaW5nRm9yKHB1cnBvc2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMjQ0LDcgKzI0NCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6RGlzcGxheVJlZnJl
c2hNb25pdG9yRmFjdG9yeSogZGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeSgpIGNvbnN0IGZp
bmFsOwogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2Vi
Q29yZTo6UmVuZGVyaW5nTW9kZSwgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBp
eGVsRm9ybWF0KSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+
IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJl
bmRlcmluZ01vZGUsIFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiwgV2ViQ29yZTo6UGl4
ZWxGb3JtYXQpIGNvbnN0IGZpbmFsOwogI2lmIEVOQUJMRShXRUJHTCkKICAgICBSZWZQdHI8V2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFdlYkNvcmU6OlBsYXRmb3JtRGlz
cGxheUlEIGhvc3RXaW5kb3dEaXNwbGF5SUQpIGNvbnN0IGZpbmFsOwogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTY4LDkgKzY4LDcgQEAgdXNpbmcgRHJhZ0ltYWdlID0gQ0dJbWFn
ZVJlZjsKIAogc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnREcmFnSW1hZ2VU
b0JpdG1hcChEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFNpemUmIHNpemUsIEZyYW1lJiBmcmFt
ZSkKIHsKLSAgICBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmlndXJh
dGlvbjsKLSAgICBiaXRtYXBDb25maWd1cmF0aW9uLmNvbG9yU3BhY2UuY2dDb2xvclNwYWNlID0g
c2NyZWVuQ29sb3JTcGFjZShmcmFtZS5tYWluRnJhbWUoKS52aWV3KCkpOwotICAgIGF1dG8gYml0
bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc2l6ZSwgYml0bWFwQ29uZmln
dXJhdGlvbik7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJl
YWJsZShzaXplLCB7IHNjcmVlbkNvbG9yU3BhY2UoZnJhbWUubWFpbkZyYW1lKCkudmlldygpKSB9
KTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBEZWNvZGVyOwogfQog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7CiBjbGFz
cyBEaXNwbGF5UmVmcmVzaE1vbml0b3I7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lVmlldzsK
QEAgLTYwLDcgKzYxLDYgQEAgc3RydWN0IFZpZXdwb3J0QXR0cmlidXRlczsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLXN0cnVjdCBDb2xvclNwYWNlRGF0YTsKIGNsYXNzIExheWVyVHJlZUhvc3Q7
CiBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBXZWJQcmVmZXJlbmNl
c1N0b3JlOwpAQCAtMTgwLDcgKzE4MCw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgLy8gVXNlZCBieSBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS4KICAgICB2aXJ0
dWFsIHZvaWQgc2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpIHsgfQotICAgIHZpcnR1YWwgdm9p
ZCBzZXRDb2xvclNwYWNlKGNvbnN0IENvbG9yU3BhY2VEYXRhJikgeyB9CisgICAgdmlydHVhbCB2
b2lkIHNldENvbG9yU3BhY2UoT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNl
PikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2Nh
bGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29t
bWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2lu
KSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBtZXNzYWdlcyAtPiBEcmF3aW5nQXJlYSBOb3RSZWZD
b3VudGVkIHsKICAgICAvLyBVc2VkIGJ5IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLgog
ICAgIFVwZGF0ZUdlb21ldHJ5KFdlYkNvcmU6OkludFNpemUgdmlld1NpemUsIGJvb2wgZmx1c2hT
eW5jaHJvbm91c2x5LCBNYWNoU2VuZFJpZ2h0IGZlbmNlUG9ydCkKICAgICBTZXREZXZpY2VTY2Fs
ZUZhY3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKLSAgICBTZXRDb2xvclNwYWNlKHN0cnVj
dCBXZWJLaXQ6OkNvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2UpCisgICAgU2V0Q29sb3JTcGFjZShz
dHJ1Y3QgT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNl
KQogICAgIFNldFZpZXdFeHBvc2VkUmVjdChPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZp
ZXdFeHBvc2VkUmVjdCkKIAogICAgIEFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBX
ZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU5
OCw3ICsyNTk4LDcgQEAgc3RhdGljIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBzbgog
ICAgIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwogI2lmIFVT
RShDRykKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc1VzZVNjcmVlbkNvbG9yU3Bh
Y2UpCi0gICAgICAgIGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZS5jZ0NvbG9yU3BhY2UgPSBzY3Jl
ZW5Db2xvclNwYWNlKHBhZ2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpKTsKKyAgICAg
ICAgY29uZmlndXJhdGlvbi5jb2xvclNwYWNlID0gc2NyZWVuQ29sb3JTcGFjZShwYWdlLmNvcmVQ
YWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKSk7CiAjZW5kaWYKICAgICByZXR1cm4gY29uZmlndXJh
dGlvbjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCShy
ZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAkod29ya2luZyBjb3B5KQpAQCAtOTgsNyAr
OTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3VzcGVuZFBhaW50aW5nKCk7CiAgICAgdm9pZCBy
ZXN1bWVQYWludGluZygpOwogICAgIHZvaWQgc2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3Rp
bmdNb2RlKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldENvbG9yU3BhY2UoY29uc3QgQ29sb3JTcGFj
ZURhdGEmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbG9yU3BhY2UoT3B0aW9uYWw8V2ViQ29y
ZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGRGZW5jZShj
b25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYWRkVHJhbnNh
Y3Rpb25DYWxsYmFja0lEKENhbGxiYWNrSUQpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBQTEFURk9STShN
QUMpCiAKLSNpbXBvcnQgIkNvbG9yU3BhY2VEYXRhLmgiCiAjaW1wb3J0ICJEaXNwbGF5UmVmcmVz
aE1vbml0b3JNYWMuaCIKICNpbXBvcnQgIkRyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oIgogI2lt
cG9ydCAiTGF5ZXJIb3N0aW5nQ29udGV4dC5oIgpAQCAtNDUsNiArNDQsNyBAQAogI2ltcG9ydCA8
cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0
ekNvcmUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGVidWdQYWdlT3ZlcmxheXMuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1l
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9HcmFw
aGljc0NvbnRleHQuaD4KQEAgLTkxLDYgKzkxLDcgQEAgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWE6OlRpbGVkQ29yZQogICAgIH0pOwogCiAgICAgdXBkYXRlTGF5ZXJIb3N0aW5nQ29udGV4
dCgpOworICAgIAogICAgIHNldENvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKTsKIAog
ICAgIGlmIChhdXRvIHZpZXdFeHBvc2VkUmVjdCA9IHBhcmFtZXRlcnMudmlld0V4cG9zZWRSZWN0
KQpAQCAtNjUwLDkgKzY1MSw5IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6
OnNldEwKICAgICBzZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5OjpVcGRhdGVBY2NlbGVy
YXRlZENvbXBvc2l0aW5nTW9kZSgwLCBsYXllclRyZWVDb250ZXh0KSk7CiB9CiAKLXZvaWQgVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldENvbG9yU3BhY2UoY29uc3QgQ29sb3JTcGFj
ZURhdGEmIGNvbG9yU3BhY2UpCit2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpz
ZXRDb2xvclNwYWNlKE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29s
b3JTcGFjZSkKIHsKLSAgICBtX2xheWVySG9zdGluZ0NvbnRleHQtPnNldENvbG9yU3BhY2UoY29s
b3JTcGFjZS5jZ0NvbG9yU3BhY2UuZ2V0KCkpOworICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+
c2V0Q29sb3JTcGFjZShjb2xvclNwYWNlID8gY29sb3JTcGFjZS0+cGxhdGZvcm1Db2xvclNwYWNl
KCkgOiBudWxscHRyKTsKIH0KIAogUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRv
cj4gVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmNyZWF0ZURpc3BsYXlSZWZyZXNoTW9u
aXRvcihQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyNzc5MjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wNS0yMiAgU2Ft
IFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdyYXBwaW5nIGEgcGxhdGZvcm0gY29s
b3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0Yy4pCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxNDMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50Lm1tOgorICAgICAgICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6Omlt
YWdlRm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbSk6CisgICAgICAgIFVwZGF0ZSBm
b3IgbmV3IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjbGFzcy4KKwogMjAyMS0wNS0yMiAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3
aXRoIExvY2tlciBpbiBsb2NhbCB2YXJpYWJsZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xp
ZW50Lm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDMs
NiArNDMsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9Db250ZXh0TWVudS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db250ZXh0TWVudUNvbnRyb2xs
ZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0RvY3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgpAQCAtMjEzLDcgKzIxNCw3IEBAIFJldGFpblB0cjxOU0lt
YWdlPiBXZWJDb250ZXh0TWVudUNsaWVudDoKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIC8v
IFRoaXMgaXMgZWZmZWN0aXZlbHkgYSBzbmFwc2hvdCwgYW5kIHdpbGwgYmUgcGFpbnRlZCBpbiBh
biB1bmFjY2VsZXJhdGVkIGZhc2hpb24gaW4gbGluZSB3aXRoIEZyYW1lU25hcHNob3R0aW5nLgot
ICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShyZWN0LnNpemUoKSwgUmVuZGVy
aW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQ
aXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShyZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFidWZm
ZXIpCiAgICAgICAgIHJldHVybiBuaWw7CiAKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzkyMCkKKysrIFRvb2xzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA1LTIyICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBDb252ZXJ0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSBmcm9tIGFuIGVudW0gdG8gY2xhc3Mgd3JhcHBpbmcgYSBwbGF0Zm9ybSBjb2xvciBz
cGFjZSAoQ0dDb2xvclNwYWNlUmVmIGZvciBDRyBwb3J0cywgZXRjLikKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjE0MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKyAgICAgICAgVXBhdGUgdGVzdCB0byB1c2UgbmV3IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSB0eXBlLgorCiAyMDIxLTA1LTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgUmVwbGFjZSBMb2NrSG9sZGVyIHdpdGggTG9ja2VyIGluIGxvY2FsIHZhcmlh
YmxlcwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlM
aXN0VGVzdHNDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBVU0UoQ0cpCiAKKyNpbmNs
dWRlIDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RGlzcGxheUxpc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SXRlbXMuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaD4KQEAgLTQ2LDggKzQ3LDggQEAg
VEVTVChEaXNwbGF5TGlzdFRlc3RzLCBSZXBsYXlXaXRoTWlzc2luZwogewogICAgIEZsb2F0UmVj
dCBjb250ZXh0Qm91bmRzIHsgMCwgMCwgY29udGV4dFdpZHRoLCBjb250ZXh0SGVpZ2h0IH07CiAK
LSAgICBhdXRvIGNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1l
KGtDR0NvbG9yU3BhY2VTUkdCKSk7Ci0gICAgYXV0byBjZ0NvbnRleHQgPSBhZG9wdENGKENHQml0
bWFwQ29udGV4dENyZWF0ZShudWxscHRyLCBjb250ZXh0V2lkdGgsIGNvbnRleHRIZWlnaHQsIDgs
IDQgKiBjb250ZXh0V2lkdGgsIGNvbG9yU3BhY2UuZ2V0KCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0
aXBsaWVkTGFzdCkpOworICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpOworICAgIGF1dG8gY2dDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRD
cmVhdGUobnVsbHB0ciwgY29udGV4dFdpZHRoLCBjb250ZXh0SGVpZ2h0LCA4LCA0ICogY29udGV4
dFdpZHRoLCBjb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBrQ0dJbWFnZUFscGhhUHJl
bXVsdGlwbGllZExhc3QpKTsKICAgICBHcmFwaGljc0NvbnRleHQgY29udGV4dCB7IGNnQ29udGV4
dC5nZXQoKSB9OwogCiAgICAgYXV0byBpbWFnZUJ1ZmZlcklkZW50aWZpZXIgPSBSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CkBAIC02OSw3ICs3MCw3IEBAIFRFU1QoRGlz
cGxheUxpc3RUZXN0cywgUmVwbGF5V2l0aE1pc3NpbmcKICAgICB9CiAKICAgICB7Ci0gICAgICAg
IGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHsgMTAwLCAxMDAgfSwgUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
LCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZSh7IDEwMCwgMTAwIH0sIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
IDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgICAgIEltYWdlQnVmZmVy
SGFzaE1hcCBpbWFnZUJ1ZmZlck1hcDsKICAgICAgICAgaW1hZ2VCdWZmZXJNYXAuc2V0KGltYWdl
QnVmZmVySWRlbnRpZmllciwgaW1hZ2VCdWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CiAK
</data>
<flag name="commit-queue"
          id="450612"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429421</attachid>
            <date>2021-05-22 11:02:28 -0700</date>
            <delta_ts>2021-05-22 15:16:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226143-20210522110227.patch</filename>
            <type>text/plain</type>
            <size>267532</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5NSBAQAorMjAyMS0wNS0yMiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdyYXBwaW5nIGEgcGxhdGZvcm0gY29sb3Ig
c3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0Yy4pCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxNDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIGVudW1lcmF0aW9uIGJh
c2VkIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB3aXRoIGEgc3RydWN0IHdyYXBwaW5nCisgICAgICAg
IGEgcGxhdGZvcm0gY29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0
Yy4pLiBGb3IgcG9ydHMKKyAgICAgICAgdGhhdCBkb24ndCBoYXZlIGEgcGxhdGZvcm0gbGV2ZWwg
Y29sb3Igc3BhY2UgdHlwZSwgYSBidWlsdGluIFBsYXRmb3JtQ29sb3JTcGFjZQorICAgICAgICB0
eXBlIGlzIHByb3ZpZGVkIHRoYXQgaXMganVzdCB0aGUgb2xkIGVudW0gcmVuYW1lZCB0byBQbGF0
Zm9ybUNvbG9yU3BhY2U6Ok5hbWUuCisKKyAgICAgICAgVGhlIGdvYWwgb2YgdGhpcyBjaGFuZ2Ug
aXMgdG8gdW5pZnkgdGhlIGN1cnJlbnRseSBiaWZyYWNhdGVkIGNvbmNlcHQgb2YgYW4KKyAgICAg
ICAgSW1hZ2VCdWZmZXIncyBjb2xvciBzcGFjZSwgd2hpY2ggcHJldmlvc2x5IGNvdWxkIGVpdGhl
ciBiZSBiYXNlZCBvbiB0aGUgCisgICAgICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgYW5kIHJl
ZmxlY3RlZCBpbiB0aGUgY29sb3JTcGFjZSgpIG1lbWJlciBmdW5jdGlvbiwKKyAgICAgICAgb3Ig
KGZvciBDRyBwb3J0cykgYmFzZWQgb24gYSBDR0NvbG9yU3BhY2VSZWYsIHdpdGggdGhlIGNvbG9y
U3BhY2UoKSBmdW5jdGlvbgorICAgICAgICByZXR1cm5pbmcgc1JHQiBldmVuIGlmIHRoZSBJbWFn
ZUJ1ZmZlciB3YXMgbm90LiAKKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICog
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpD
bGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXJ0d29ya0ltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogU291cmNl
cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBJbWFnZUJpdG1hcCk6CisgICAgICAgIChXZWJD
b3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEltYWdlQml0bWFwKToKKyAgICAgICAgKiBjc3Mv
Q1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXJJbWFn
ZVZhbHVlOjppbWFnZSk6CisgICAgICAgICogaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludENhbnZhczo6Y29waWVkSW1hZ2UgY29uc3QpOgor
ICAgICAgICAqIGh0bWwvQ3VzdG9tUGFpbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
dXN0b21QYWludEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6dG9NZWRp
YVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1h
Z2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGVCdWZmZXJGb3JQYWludGlu
ZyBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAgICog
aHRtbC9JbWFnZUJpdG1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJpdG1hcDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCaXRtYXA6OmNyZWF0ZVBy
b21pc2UpOgorICAgICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Y29tbWl0VG9QbGFjZWhvbGRlckNhbnZhcyk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojpjb2xvclNwYWNlIGNvbnN0KToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0OjpzZXRPdXRwdXRCaXRtYXApOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnRvRGVzdGluYXRpb25Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvUHJlZGVmaW5l
ZENvbG9yU3BhY2UpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNl
Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1
ZmZlckNhY2hlOjppbWFnZUJ1ZmZlcik6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbkltYWdlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6YnVpbGRBcnJheUZvckNhbnZhc1BhdHRlcm4p
OgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6
Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAg
ICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hv
dHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RGcmFtZVJlY3RXaXRoQ2xpcCk6
CisgICAgICAgICogcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNhbXBsZUNvbG9yKToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9Ib3N0V2luZG93Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1Db2xv
clNwYWNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db2xvclNwYWNlOjpn
ZXQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2NyZWVuUHJvcGVydGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVu
UHJvcGVydGllczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVlbkRhdGE6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5EYXRhOjpkZWNvZGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3UGF0dGVybik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29s
b3I6OnRvQ29sb3JDb21wb25lbnRzSW5Db2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJDb2xvckNvbXBvbmVudHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yU3BhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25j
cmV0ZUltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVy
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRl
ZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpk
cmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xv
clNwYWNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IpOgorICAgICAgICAoV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5l
YXJTUkdCKToKKyAgICAgICAgKFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxh
eVAzKToKKyAgICAgICAgKFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGVzdGluYXRp
b25Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAgICAo
V2ViQ29yZTo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OnBsYXRmb3JtQ29sb3JT
cGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OmRl
Y29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJCYWNrZW5kOjpnZXRQaXhlbEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OnB1dFBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyQmFja2VuZDo6dHJhbnNmb3JtQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbG9yU3BhY2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1BpeGVsQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6
ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckNvbnZlcnNp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZVZJbWFnZUNHSW1hZ2VGb3JtYXQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1hdDo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cmFuc2Zl
ckJHUkFQaXhlbEJ1ZmZlclRvSU9TdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZVZp
ZGVvU2FtcGxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGU6
OlJlbW90ZVZpZGVvU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxl
OjpzdXJmYWNlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRl
b1NhbXBsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6Z2V0U2NyYXRjaEJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRp
bGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpibHVyU2hhZG93QnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdTaGFkb3dMYXllcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBh
aW50UmVzdWx0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyb0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0Jh
Y2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQ29sb3JDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9DR0NvbXBh
dGlibGVDb21wb25lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNHQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6cGxhdGZvcm1Db252ZXJ0Q29sb3JDb21wb25lbnRzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaDoKKyAgICAgICAgKFdlYkNvcmU6
OmNhY2hlZENHQ29sb3JTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdXJmYWNlTWF0
Y2hlc1BhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlUG9vbDo6dGFrZVN1
cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjb3B5Q0dJbWFnZUZv
ckVuY29kaW5nIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6
c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJC
YWNraW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW06CisgICAgICAg
IChXZWJDb3JlOjpJT1N1cmZhY2U6OnN1cmZhY2VGcm9tUG9vbCk6CisgICAgICAgIChXZWJDb3Jl
OjpJT1N1cmZhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0
ZUZyb21TZW5kUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9t
U3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21JbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21QaXhlbEJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OklPU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJT1N1cmZhY2U6OmVuc3VyZVBsYXRmb3JtQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJ
T1N1cmZhY2U6Om1pZ3JhdGVDb2xvclNwYWNlVG9Qcm9wZXJ0aWVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6cmVuZGVy
VG9JbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFu
c2ZlclNlc3Npb25WVC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlVHJhbnNmZXJTZXNzaW9u
VlQ6OmNyZWF0ZVBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9Q
aXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVy
Q29uZm9ybWVyQ1Y6OmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyOjpjcmVhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OmRlc3Ryb3kp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5n
Q29tbWFuZHM6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczo6Y29sb3JTcGFjZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5nQ29t
bWFuZHM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVn
aW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6R2V0UGl4ZWxCdWZmZXI6OkdldFBpeGVsQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpHZXRQaXhlbEJ1ZmZlcjo6b3V0cHV0Rm9ybWF0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpHZXRQaXhlbEJ1ZmZlcjo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpHZXRQaXhlbEJ1ZmZlcjo6ZGVjb2Rl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNs
aXBUb0RyYXdpbmdDb21tYW5kcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlz
cGxhY2VtZW50TWFwOjpzZXRSZXN1bHRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRVRpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVs
QnVmZmVyVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29u
dmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVm
ZmVjdDo6Y29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0aW5hdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRQaXhlbEJ1ZmZlclRvRGVzdGluYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpyZXF1aXJlc1BpeGVsQnVmZmVy
Q29sb3JTcGFjZUNvbnZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojp0
cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpv
cGVyYXRpbmdDb2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6c2V0T3BlcmF0aW5nQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OnJlc3VsdENvbG9yU3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZm
ZWN0OjpzZXRSZXN1bHRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL1NvdXJjZUdyYXBoaWMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6
OlNvdXJjZUdyYXBoaWMpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5JT1MubW06CisgICAgICAgIChXZWJDb3JlOjpzY3Jl
ZW5Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RTY3JlZW5Qcm9wZXJ0aWVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5NYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpjb2xsZWN0U2NyZWVuUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpz
Y3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50
b0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNw
bGF5Q2FwdHVyZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5EaXNwbGF5Q2FwdHVy
ZXJNYWM6OmNyZWF0ZURpc3BsYXlTdHJlYW0pOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2U6OmltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9wbGF5
c3RhdGlvbi9QbGF0Zm9ybVNjcmVlblBsYXlTdGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNjcmVlbkNvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVl
bldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS93cGUvUGxhdGZvcm1TY3JlZW5XUEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oOgor
ICAgICAgICAoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YTo6ZGVjb2Rl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZpbHRlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
RmlsdGVyOjpidWlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmFsbG9jYXRlQmFj
a2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjphcHBseSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnBhdHRlcm5Gb3JEZXNjcmlwdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50U3lz
dGVtUHJldmlld0JhZGdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRQcm9ncmVzc0Jhcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
aGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VDbGlwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291
cmNlQ2xpcHBlcjo6YXBwbHlDbGlwcGluZ1RvQ29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1hc2tBbmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6ZHJhd0NvbnRlbnRJ
bnRvTWFza0ltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
TWFza2VyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRl
cm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpjcmVh
dGVUaWxlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5n
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVh
dGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0Ojpi
dWZmZXJGb3JlZ3JvdW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0Nv
bnRleHQuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUpOgorCiAyMDIxLTA1LTIyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiBDb21wb25lbnQgYXQgaW5kZXgg
MSBpcyAxLjAwMDAwMCBhbmQgaXMgZ3JlYXRlciB0aGFuIHRoZSBhbGxvd2VkIG1heGltdW0gMS4w
MDAwMDAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTE5Nyw2ICsxMTk3LDcg
QEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Rhc2hB
cnJheS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGVjb2RpbmdPcHRpb25zLmgKKyAgICBwbGF0
Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxh
eVJlZnJlc2hNb25pdG9yQ2xpZW50LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVm
cmVzaE1vbml0b3JGYWN0b3J5LmgKQEAgLTEyOTMsNiArMTI5NCw3IEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZl
ci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1BpeGVsRm9ybWF0LmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bUNvbG9yU3BhY2UuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE5
NTAsNiArMTk1MCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhU
ZXh0Q29udHJvbGxlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBi
b2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NE
YXRhU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2wKIAogICAgICAgICBhdXRvIGJpdG1hcElt
YWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgICAgICBiaXRtYXBJbWFnZS0+c2V0RGF0
YShXVEZNb3ZlKGJ1ZmZlclRvU2FuaXRpemUpLCB0cnVlKTsKLSAgICAgICAgYXV0byBpbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
LCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
ICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikgewogICAgICAgICAgICAgbV9kYXRhID0geyBudWxs
U3RyaW5nKCkgfTsKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1l
dGFkYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCB2b2lkIEFydHdvcmtJ
bWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyVG9TYW5pdGl6ZSA9IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBhdXRv
IGJpdG1hcEltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIGJpdG1hcEltYWdlLT5z
ZXREYXRhKFdURk1vdmUoYnVmZmVyVG9TYW5pdGl6ZSksIHRydWUpOwotICAgIGF1dG8gaW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJpdG1hcEltYWdlLT5zaXplKCksIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAg
ICBpZiAoIWltYWdlQnVmZmVyKSB7CiAgICAgICAgIG1fY2FsbGJhY2sobnVsbHB0cik7CiAgICAg
ICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjc3OTIwKQorKysg
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEz
IEBACisyMDIxLTA1LTIyICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAg
ICBDb252ZXJ0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBmcm9tIGFuIGVudW0gdG8gY2xhc3Mgd3Jh
cHBpbmcgYSBwbGF0Zm9ybSBjb2xvciBzcGFjZSAoQ0dDb2xvclNwYWNlUmVmIGZvciBDRyBwb3J0
cywgZXRjLikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyNjE0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDoKKyAgICAgICAgQWRkIGFkZGlvbmFsIFNQ
SSBmb3Igd29ya2luZyB3aXRoIENHQ29sb3JTcGFjZVJlZnMuCisKIDIwMjEtMDUtMjEgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBZG9w
dCBRTEl0ZW0gaW4gV0tJbWFnZUV4dHJhY3Rpb25QcmV2aWV3Q29udHJvbGxlcgpJbmRleDogU291
cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGlj
c1NQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDIsNiArMjQyLDcgQEAgdHlwZWRlZiB2b2lkICgq
Q0dTTm90aWZ5UHJvY1B0cikoQ0dTTm90aQogCiBXVEZfRVhURVJOX0NfQkVHSU4KIAorYm9vbCBD
R0NvbG9yVHJhbnNmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyhDR0NvbG9yVHJhbnNmb3JtUmVm
LCBDR0NvbG9yU3BhY2VSZWYsIENHQ29sb3JSZW5kZXJpbmdJbnRlbnQsIGNvbnN0IENHRmxvYXQg
c3JjQ29tcG9uZW50c1tdLCBDR0Zsb2F0IGRzdENvbXBvbmVudHNbXSk7CiBDR0NvbG9yUmVmIENH
Q29sb3JUcmFuc2Zvcm1Db252ZXJ0Q29sb3IoQ0dDb2xvclRyYW5zZm9ybVJlZiwgQ0dDb2xvclJl
ZiwgQ0dDb2xvclJlbmRlcmluZ0ludGVudCk7CiBDR0NvbG9yVHJhbnNmb3JtUmVmIENHQ29sb3JU
cmFuc2Zvcm1DcmVhdGUoQ0dDb2xvclNwYWNlUmVmLCBDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRl
cyk7CiAKQEAgLTI5MSw2ICsyOTIsOCBAQCBDR1N0eWxlUmVmIENHR1N0YXRlR2V0U3R5bGUoQ0dH
U3RhdGVSZWYpCiBDR1N0eWxlVHlwZSBDR1N0eWxlR2V0VHlwZShDR1N0eWxlUmVmKTsKIGNvbnN0
IHZvaWQgKkNHU3R5bGVHZXREYXRhKENHU3R5bGVSZWYpOwogQ0dDb2xvclJlZiBDR1N0eWxlR2V0
Q29sb3IoQ0dTdHlsZVJlZik7Citib29sIENHQ29sb3JTcGFjZUVxdWFsVG9Db2xvclNwYWNlKENH
Q29sb3JTcGFjZVJlZiwgQ0dDb2xvclNwYWNlUmVmKTsKK0NGU3RyaW5nUmVmIENHQ29sb3JTcGFj
ZUNvcHlJQ0NQcm9maWxlRGVzY3JpcHRpb24oQ0dDb2xvclNwYWNlUmVmKTsKIAogI2lmIEhBVkUo
Q0dQQVRIX0dFVF9OVU1CRVJfT0ZfRUxFTUVOVFMpCiBzaXplX3QgQ0dQYXRoR2V0TnVtYmVyT2ZF
bGVtZW50cyhDR1BhdGhSZWYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0zOTk2LDYgKzM5OTYsNyBAQAogCQlCQzIzRjBEQjBEQUZGNEE0MDA5RkRDOTEgLyogR2VuZXJh
dGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMjNGMERBMERBRkY0QTQwMDlGREM5MSAvKiBHZW5lcmF0ZWRJbWFnZS5oICovOyB9OwogCQlC
QzI3NEIyRjE0MEVCRUIyMDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI3NEIyRTE0MEVC
RUIyMDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggKi87IH07CiAJCUJDMkNC
RjRFMTQwRjFBQkQwMDM4NzlCRSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJDQkY0QjE0MEYxQTY1MDAzODc5
QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oICovOyB9OworCQlCQzJDQ0ExMDI2NTVEREIyMDBC
OEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJDQ0EwRTI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGlu
YXRpb25Db2xvclNwYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQkMzMDVDN0EwQzA3NkJCMzAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzA1
Qzc4MEMwNzZCQjMwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50LmggKi87IH07CiAJCUJD
MzQ4QkQ0MERCN0Y4MDQwMDRBQkFCOSAvKiBKU1hNTEh0dHBSZXF1ZXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzM0OEJEMjBEQjdGODA0MDA0QUJB
QjkgLyogSlNYTUxIdHRwUmVxdWVzdC5oICovOyB9OwogCQlCQzM0OEJENDBEQjdGODA0MDA0QUJB
QkEgLyogV2ViQ29yZUpTQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDMzQ4QkQyMERCN0Y4MDQwMDRBQkFCQSAvKiBXZWJDb3JlSlNCdWls
dGlucy5oICovOyB9OwpAQCAtNDAwNyw2ICs0MDA4LDcgQEAKIAkJQkMzQkU5OTkwRTlDMUU1RDAw
ODM1NTg4IC8qIFJlbmRlclNjcm9sbGJhclRoZW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzNCRTk5ODBFOUMxRTVEMDA4MzU1ODggLyogUmVuZGVy
U2Nyb2xsYmFyVGhlbWUuaCAqLzsgfTsKIAkJQkMzQzM5QjcwQzBEM0Q4RDAwNUY0RDdBIC8qIEpT
TWVkaWFMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzNDMzlCNTBDMEQzRDhEMDA1RjREN0EgLyogSlNNZWRpYUxpc3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzNEODVCQzFDMEUyRTdBMDBE
M0I2MTAgLyogSlNIVE1MUGljdHVyZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODA4QjEzMUMwRTJCMzUwMDY2RkQ2QiAvKiBKU0hUTUxQ
aWN0dXJlRWxlbWVudC5oICovOyB9OworCQlCQzNFNjI0MzI2NTk3OTE4MDA1NDhBQ0QgLyogUGxh
dGZvcm1Db2xvclNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzNFNjI0MjI2NTk3OTE3MDA1NDhBQ0QgLyogUGxhdGZvcm1Db2xvclNwYWNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM0MzY4
RTgwQzIyNkUzMjAwNUVGQjVGIC8qIFJlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDNDM2OEU3MEMyMjZFMzIwMDVFRkI1RiAvKiBSZWN0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM0NkMxRkQw
QzBEREM4RjAwMjBDRkMzIC8qIEpTQ1NTRm9udEZhY2VSdWxlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzQ2QzFGMzBDMEREQzhGMDAyMENGQzMgLyog
SlNDU1NGb250RmFjZVJ1bGUuaCAqLzsgfTsKIAkJQkM0NkMxRkYwQzBEREM4RjAwMjBDRkMzIC8q
IEpTQ1NTSW1wb3J0UnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkM0NkMxRjUwQzBEREM4RjAwMjBDRkMzIC8qIEpTQ1NTSW1wb3J0UnVsZS5oICov
OyB9OwpAQCAtMTQxMzQsNiArMTQxMzYsOCBAQAogCQlCQzI5OTM1QzE3QTFERDU4MDBCQ0U4ODAg
LyogQ29sb3JJbnB1dFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ29sb3JJbnB1dFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJD
QkY0QjE0MEYxQTY1MDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMQ29udGV4dEV2ZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDMkNCRjdBMTQwRjFENTgwMDM4NzlCRSAvKiBKU1dlYkdMQ29u
dGV4dEV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2Vi
R0xDb250ZXh0RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJDQ0Ew
RTI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCQzJDQ0EwRjI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDMkVENTU0MEM2QjlCRDMwMDkyMEJGRiAvKiBKU0VsZW1lbnRD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFbGVtZW50
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyRUQ2QkIwQzZCRDJG
MDAwOTIwQkZGIC8qIEpTQXR0ckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0F0dHJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQzMwNUM3NzBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MT2JqZWN0RWxlbWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDE1Nyw2ICsxNDE2MSw3IEBACiAJ
CUJDM0JFOUFBMEU5QzI0MjAwMDgzNTU4OCAvKiBSZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNjcm9sbGJhclBhcnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzNDMzlCNDBDMEQzRDhEMDA1RjREN0Eg
LyogSlNNZWRpYUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTTWVkaWFMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzQzM5QjUw
QzBEM0Q4RDAwNUY0RDdBIC8qIEpTTWVkaWFMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU01lZGlhTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
QzNFNjI0MjI2NTk3OTE3MDA1NDhBQ0QgLyogUGxhdGZvcm1Db2xvclNwYWNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtQ29sb3JTcGFjZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQzQzNjhFNzBDMjI2RTMyMDA1RUZCNUYgLyogUmVjdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVjdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQzQ2QzFFRDBDMEREQkRGMDAyMENGQzMgLyogSlNDU1NSdWxlQ3VzdG9t
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NTU1J1bGVDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzQ2QzFGMjBDMEREQzhGMDAy
MENGQzMgLyogSlNDU1NGb250RmFjZVJ1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTQ1NTRm9udEZhY2VSdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTI2OTI1LDYgKzI2OTMwLDggQEAKIAkJCQkyRDJGQzA1NTE0NjBDRDZGMDAyNjM2
MzMgLyogQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaCAqLywKIAkJCQlBOENCNDEwMjBFODVCOEE1
MDAzMkM0RjAgLyogRGFzaEFycmF5LmggKi8sCiAJCQkJNTU1MTMwMDAxRTdDQ0NDQTAwQTY5RTM4
IC8qIERlY29kaW5nT3B0aW9ucy5oICovLAorCQkJCUJDMkNDQTBGMjY1NUREQjIwMEI4QzAzNSAv
KiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuY3BwICovLAorCQkJCUJDMkNDQTBFMjY1NUREQjIwMEI4
QzAzNSAvKiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCAqLywKIAkJCQk0OUZDN0E0RjE0NDRBRjVG
MDBBNUQ4NjQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCAqLywKIAkJCQk0OUFGMkQ2ODE0
NDM1RDA1MDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmggKi8sCiAJCQkJMkQyOUVD
QzExOTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5jcHAgKi8s
CkBAIC0yNzEwMSw2ICsyNzEwOCw3IEBACiAJCQkJQkM2MzVFOEIyNjRDMkNBRTAwMEVGMzNBIC8q
IFBpeGVsQnVmZmVyRm9ybWF0LmggKi8sCiAJCQkJQkM2MzVFOTAyNjRDNDY5RjAwMEVGMzNBIC8q
IFBpeGVsRm9ybWF0LmNwcCAqLywKIAkJCQlCQ0E1NTkxMjI2M0RCRDc5MDA3RjE5QjMgLyogUGl4
ZWxGb3JtYXQuaCAqLywKKwkJCQlCQzNFNjI0MjI2NTk3OTE3MDA1NDhBQ0QgLyogUGxhdGZvcm1D
b2xvclNwYWNlLmggKi8sCiAJCQkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3Jt
SW1hZ2UuaCAqLywKIAkJCQk3MkJBQzNBNjIzRTE3MzI4MDA4RDc0MUMgLyogUGxhdGZvcm1JbWFn
ZUJ1ZmZlci5oICovLAogCQkJCTU1MDY0MEFEMjQwNzU2REEwMEFBRTA0NSAvKiBQbGF0Zm9ybUlt
YWdlQnVmZmVyQmFja2VuZC5oICovLApAQCAtMzIyMzAsNiArMzIyMzgsNyBAQAogCQkJCTk0Nzk0
OTI1MUUwMzA4QUYwMDAxOEQ4NSAvKiBEZXByZWNhdGVkQ1NTT01WYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTQ3OTQ5M0QxRTA0NjNCNjAwMDE4RDg1IC8qIERlcHJlY2F0ZWRDU1NPTVZhbHVl
TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NCRDEyOUUxRjk4QjkwRTAwMTI3RDI5IC8qIERl
cHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMyQ0NBMTAyNjU1
RERCMjAwQjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDExMjIzQzUyNjAzNTY3RDAwQjBBMEI2IC8qIERldGFjaGVkUlRDRGF0YUNoYW5uZWwuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3QzlBQkY5MTM1N0EzQkYwMEY1NTAzRiAvKiBEZXRhaWxzTWFy
a2VyQ29udHJvbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFFRDc3OEQxQkUzMjk0MDAwREMxNzkx
IC8qIERldmljZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjI4MSw2ICszMjI5MCw3IEBACiAJCQkJ
MUNFOEQxMjcyNjE4NUMwRTAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZp
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ1MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNw
bGF5TGlzdEl0ZW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDM3N0Q1NzI1NTFDOUM2MDA4MEFC
RkUgLyogRGlzcGxheUxpc3RJdGVtVHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMzRTYyNDMy
NjU5NzkxODAwNTQ4QUNEIC8qIFBsYXRmb3JtQ29sb3JTcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUNFOEQxMkUyNjE4NjFDNDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRTVGQkQ3MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJl
Y29yZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1RkJEOTFDM0RENTFFMDAwN0EyQ0EgLyog
RGlzcGxheUxpc3RSZXBsYXllci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwODIsNyArMTA4Miw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBQaXhlbEJ1ZmZlckZv
cm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhl
bEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgICAgICBQ
aXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0
aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
IH07CiAgICAgICAgIGNvbnN0IEludFNpemUmIGxvZ2ljYWxTaXplID0gYnVmZmVyLT5sb2dpY2Fs
U2l6ZSgpOwogICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gYnVmZmVyLT5nZXRQaXhlbEJ1ZmZl
cihmb3JtYXQsIHsgSW50UG9pbnQ6Onplcm8oKSwgbG9naWNhbFNpemUgfSk7CiAgICAgICAgIGlm
ICghcGl4ZWxCdWZmZXIpIHsKQEAgLTMxODcsNyArMzE4Nyw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgUGl4ZWxCdWZmZXJG
b3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4
ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICAgICAg
UGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVs
dGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSB9OwogICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShm
b3JtYXQsIGltYWdlRGF0YVNpemUsIGFycmF5QnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwogICAg
ICAgICBpZiAoIXBpeGVsQnVmZmVyKSB7CiAgICAgICAgICAgICBmYWlsKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExNiw3ICsxMTYsNyBAQCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFs
dWU6OmltYWdlCiAKICAgICAvLyBUcmFuc2Zvcm0gSW1hZ2UgaW50byBJbWFnZUJ1ZmZlci4KICAg
ICAvLyBGSVhNRSAoMTQ5NDI0KTogVGhpcyBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlv
bmFsbHkgdW5hY2NlbGVyYXRlZC4KLSAgICBhdXRvIHRleHR1cmUgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIHRleHR1cmUgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAg
IGlmICghdGV4dHVyZSkKICAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCShyZXZpc2lvbiAy
Nzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTIsNyArOTIsNyBAQCBJbWFnZSogQ3VzdG9tUGFpbnRDYW52YXM6OmNv
cGllZEltYWdlKCkgCiAgICAgaWYgKCF3aWR0aCgpIHx8ICFoZWlnaHQoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBtX2NvcGllZEJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCwgbnVsbHB0cik7CisgICAgbV9jb3BpZWRC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCwgbnVsbHB0cik7CiAgICAgaWYgKCFtX2NvcGllZEJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRJbWFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludEltYWdlLmNw
cAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludElt
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgQ3VzdG9tUGFp
bnRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGgKICAgICBhZGp1c3RlZFBhdHRlcm5DVE0uc2NhbGUo
MS4wIC8geFNjYWxlLCAxLjAgLyB5U2NhbGUpOwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZSh4
U2NhbGUsIHlTY2FsZSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKGFkanVzdGVkU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
LCBkZXN0Q29udGV4dCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBkZXN0Q29udGV4dCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybjsKICAgICBk
b0N1c3RvbVBhaW50KGJ1ZmZlci0+Y29udGV4dCgpLCBhZGp1c3RlZFNpemUpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MjUsNyArODI1LDcgQEAgUmVmUHRyPE1lZGlhU2FtcGxlPiBIVE1MQ2FudmFzRWxl
bWVudDo6dAogICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBsaWtlbHkgYmUgb3B0aW1pemVkIHF1aXRl
IGEgYml0LCBlc3BlY2lhbGx5IGluIHRoZSBjYXNlcyB3aGVyZQogICAgIC8vIHRoZSBJbWFnZUJ1
ZmZlciBpcyBiYWNrZWQgYnkgR1BVIG1lbW9yeSBhbHJlYWR5IGFuZC9vciBpcyBpbiB0aGUgR1BV
IHByb2Nlc3MgYnkKICAgICAvLyBzcGVjaWFsaXppbmcgdG9NZWRpYVNhbXBsZSgpIGluIEltYWdl
QnVmZmVyQmFja2VuZCB0byBub3QgdXNlIGdldFBpeGVsQnVmZmVyKCkuCi0gICAgYXV0byBwaXhl
bEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5nZXRQaXhlbEJ1ZmZlcih7IEFscGhhUHJlbXVsdGlwbGlj
YXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IgfSwgeyB7IH0sIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpIH0pOwor
ICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoeyBBbHBo
YVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfSwgeyB7IH0sIGltYWdlQnVmZmVyLT5sb2dp
Y2FsU2l6ZSgpIH0pOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCkBAIC05NTUsNyArOTU1LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRl
SW1hZ2VCdWZmZQogICAgIGF1dG8gW2NvbG9yU3BhY2UsIHBpeGVsRm9ybWF0XSA9IFsmXSB7CiAg
ICAgICAgIGlmIChtX2NvbnRleHQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpwYWlyIHsgbV9j
b250ZXh0LT5jb2xvclNwYWNlKCksIG1fY29udGV4dC0+cGl4ZWxGb3JtYXQoKSB9OwotICAgICAg
ICByZXR1cm4gc3RkOjpwYWlyIHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZv
cm1hdDo6QkdSQTggfTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6cGFpciB7IERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTggfTsKICAgICB9KCk7CiAKICAgICBz
ZXRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgcmVuZGVyaW5nTW9kZSwg
dXNlRGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1cnBvc2U6OkNhbnZhcywgMSwgY29sb3JTcGFjZSwg
cGl4ZWxGb3JtYXQsIGhvc3RXaW5kb3cpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDcgKzI4MSw3IEBA
IHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6bWVkaWFQbGF5ZXJGaXJzdFYKICAgICAgICAgcmVuZGVy
ZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSFRNTFZp
ZGVvRWxlbWVudDo6Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29uc3QKK1JlZlB0cjxJbWFnZUJ1ZmZl
cj4gSFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CiB7
CiAgICAgYXV0byogaG9zdFdpbmRvdyA9IGRvY3VtZW50KCkudmlldygpICYmIGRvY3VtZW50KCku
dmlldygpLT5yb290KCkgPyBkb2N1bWVudCgpLnZpZXcoKS0+cm9vdCgpLT5ob3N0V2luZG93KCkg
OiBudWxscHRyOwogICAgIGF1dG8gc2hvdWxkVXNlRGlzcGxheUxpc3QgPSBkb2N1bWVudCgpLnNl
dHRpbmdzKCkuZGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZCgpID8gU2hvdWxkVXNlRGlzcGxheUxp
c3Q6OlllcyA6IFNob3VsZFVzZURpc3BsYXlMaXN0OjpObzsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTIgKzMzLDEy
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNl
OwogY2xhc3MgSFRNTEltYWdlTG9hZGVyOwogY2xhc3MgSW1hZ2VCdWZmZXI7CiBjbGFzcyBSZW5k
ZXJWaWRlbzsKIGNsYXNzIFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlcjsKIAotZW51bSBjbGFzcyBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgOiB1aW50OF90OwogZW51bSBjbGFzcyBQaXhlbEZvcm1hdCA6
IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOwogCkBAIC03Miw3ICs3
Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCkgb3ZlcnJp
ZGU7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQnVmZmVyRm9yUGFp
bnRpbmcoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgRGVzdGluYXRpb25Db2xvclNw
YWNlLCBQaXhlbEZvcm1hdCkgY29uc3Q7CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVC
dWZmZXJGb3JQYWludGluZyhjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCkgY29uc3Q7CiAKICAgICAvLyBVc2Vk
IGJ5IGNhbnZhcyB0byBnYWluIHJhdyBwaXhlbCBhY2Nlc3MKICAgICB2b2lkIHBhaW50Q3VycmVu
dEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCwx
MiArODQsMTIgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJpdG1hcDo6Y3JlYXRlSQogICAg
ICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25D
b250ZXh0KTsKICAgICAgICAgaWYgKGRvY3VtZW50LnZpZXcoKSAmJiBkb2N1bWVudC52aWV3KCkt
PnJvb3QoKSkgewogICAgICAgICAgICAgYXV0byBob3N0V2luZG93ID0gZG9jdW1lbnQudmlldygp
LT5yb290KCktPmhvc3RXaW5kb3coKTsKLSAgICAgICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0OjpObywgUmVu
ZGVyaW5nUHVycG9zZTo6Q2FudmFzLCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBob3N0V2luZG93KTsKKyAgICAgICAgICAg
IHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIFNob3VsZFVz
ZURpc3BsYXlMaXN0OjpObywgUmVuZGVyaW5nUHVycG9zZTo6Q2FudmFzLCByZXNvbHV0aW9uU2Nh
bGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGhv
c3RXaW5kb3cpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gRklYTUUgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzIxODQ4Mj4gRW5hYmxlIHdvcmtlciBiYXNlZCBJbWFnZUJpdG1hcCBhbmQgT2Zm
c2NyZWVuQ2FudmFzIGRyYXdpbmcgdG8gdXNlIEdQVSBQcm9jZXNzIHJlbmRlcmluZwotICAgIHJl
dHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25T
Y2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwor
ICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29s
dXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CiB9CiAKIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgSW1hZ2VCaXRtYXA6OlNvdXJjZSYm
IHNvdXJjZSwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgSW1hZ2VCaXRtYXA6OlByb21p
c2UmJiBwcm9taXNlKQpAQCAtNTA0LDcgKzUwNCw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0
ZVByb21pc2UoU2NyaXB0RXgKICAgICBhdXRvIG91dHB1dFNpemUgPSBvdXRwdXRTaXplRm9yU291
cmNlUmVjdGFuZ2xlKHNvdXJjZVJlY3RhbmdsZSwgb3B0aW9ucyk7CiAKICAgICAvLyBGSVhNRTog
QWRkIHN1cHBvcnQgZm9yIGNvbG9yIHNwYWNlcyAvIHBpeGVsIGZvcm1hdHMgdG8gSW1hZ2VCaXRt
YXAuCi0gICAgYXV0byBiaXRtYXBEYXRhID0gdmlkZW8tPmNyZWF0ZUJ1ZmZlckZvclBhaW50aW5n
KG91dHB1dFNpemUsIGJ1ZmZlclJlbmRlcmluZ01vZGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGJpdG1hcERhdGEgPSB2aWRlby0+
Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcob3V0cHV0U2l6ZSwgYnVmZmVyUmVuZGVyaW5nTW9kZSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAg
aWYgKCFiaXRtYXBEYXRhKSB7CiAgICAgICAgIHJlc29sdmVXaXRoQmxhbmtJbWFnZUJ1ZmZlcihz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCAhdGFpbnRzT3JpZ2luKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuc2VjdXJpdHlPcmlnaW4oKSwgKnZpZGVvKSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgICAg
IHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDUxLDE0ICs0NTEsMTQgQEAgdm9pZCBPZmZzY3JlZW5DYW52
YXM6OmNvbW1pdFRvUGxhY2Vob2xkZQogICAgICAgICBtX2NvbnRleHQtPnBhaW50UmVuZGVyaW5n
UmVzdWx0c1RvQ2FudmFzKCk7CiAKICAgICBpZiAobV9wbGFjZWhvbGRlckRhdGEtPmJ1ZmZlclBp
cGVTb3VyY2UpIHsKLSAgICAgICAgYXV0byBidWZmZXJDb3B5ID0gaW1hZ2VCdWZmZXItPmNvcHlS
ZWN0VG9CdWZmZXIoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxT
aXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGltYWdlQnVmZmVyLT5jb250ZXh0
KCkpOworICAgICAgICBhdXRvIGJ1ZmZlckNvcHkgPSBpbWFnZUJ1ZmZlci0+Y29weVJlY3RUb0J1
ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSks
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsK
ICAgICAgICAgaWYgKGJ1ZmZlckNvcHkpCiAgICAgICAgICAgICBtX3BsYWNlaG9sZGVyRGF0YS0+
YnVmZmVyUGlwZVNvdXJjZS0+aGFuZGxlKFdURk1vdmUoYnVmZmVyQ29weSkpOwogICAgIH0KIAog
ICAgIExvY2tlciBsb2NrZXIgeyBtX3BsYWNlaG9sZGVyRGF0YS0+YnVmZmVyTG9jayB9OwogICAg
IGJvb2wgc2hvdWxkUHVzaEJ1ZmZlciA9ICFtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1p
dEJ1ZmZlcjsKLSAgICBtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlciA9IGlt
YWdlQnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdl
QnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBpbWFn
ZUJ1ZmZlci0+Y29udGV4dCgpKTsKKyAgICBtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1p
dEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIGltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwogICAgIGlmIChtX3BsYWNlaG9sZGVy
RGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlciAmJiBzaG91bGRQdXNoQnVmZmVyKQogICAgICAgICBw
dXNoQnVmZmVyVG9QbGFjZWhvbGRlcigpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAi
Q1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VySGVscGVycy5o
IgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VyV29ya2VyU2FmZS5oIgotI2luY2x1ZGUgIkNv
bG9yU3BhY2UuaCIKICNpbmNsdWRlICJHcmFkaWVudC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVy
LmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNhY2hl
ZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2FudmFzUGF0dGVybi5oIgotI2luY2x1ZGUgIkNvbG9yU3Bh
Y2UuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJIVE1M
Q2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MVmlkZW9FbGVtZW50LmgiCkBAIC05MCw3ICs5MCw3IEBAIFBpeGVsRm9ybWF0IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQ6OnBpeGUKIAogRGVzdGluYXRpb25Db2xvclNwYWNlIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQ6OmNvbG9yU3BhY2UoKSBjb25zdAogewotICAgIHJldHVybiBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0I7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpOwogfQogCiBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRPcmln
aW4oY29uc3QgQ2FudmFzUGF0dGVybiogcGF0dGVybikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTMgKzM3LDEzIEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENhbnZhc1BhdHRlcm47CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7
CiBjbGFzcyBIVE1MQ2FudmFzRWxlbWVudDsKIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiBjbGFz
cyBIVE1MVmlkZW9FbGVtZW50OwogY2xhc3MgSW1hZ2VCaXRtYXA7CiBjbGFzcyBUeXBlZE9NQ1NT
SW1hZ2VWYWx1ZTsKIGNsYXNzIFdlYkdMT2JqZWN0OwotZW51bSBjbGFzcyBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgOiB1aW50OF90OwogZW51bSBjbGFzcyBQaXhlbEZvcm1hdCA6IHVpbnQ4X3Q7CiAK
IGNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29u
dGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VC
aXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCB2b2lkIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4
dDo6c2V0T3V0CiAgICAgICAgIC8vIG9ubHkgcmVhc29uIEkgY2FuIHRoaW5rIG9mIGlzIHRvRGF0
YVVSTCgpLCBidXQgdGhhdCBkb2Vzbid0IHNlZW0gbGlrZQogICAgICAgICAvLyBhIGdvb2QgZW5v
dWdoIGFyZ3VtZW50IHRvIHdhc3RlIG1lbW9yeS4KIAotICAgICAgICBjYW52YXMoKS0+c2V0SW1h
Z2VCdWZmZXJBbmRNYXJrRGlydHkoSW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUoY2FudmFz
KCktPndpZHRoKCksIGNhbnZhcygpLT5oZWlnaHQoKSksIGJ1ZmZlclJlbmRlcmluZ01vZGUsIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CisgICAg
ICAgIGNhbnZhcygpLT5zZXRJbWFnZUJ1ZmZlckFuZE1hcmtEaXJ0eShJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKEZsb2F0U2l6ZShjYW52YXMoKS0+d2lkdGgoKSwgY2FudmFzKCktPmhlaWdodCgpKSwgYnVm
ZmVyUmVuZGVyaW5nTW9kZSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVs
Rm9ybWF0OjpCR1JBOCkpOwogCiAgICAgICAgIC8vIDEuNC4gU2V0IHRoZSBvdXRwdXQgYml0bWFw
J3Mgb3JpZ2luLWNsZWFuIGZsYWcgdG8gdHJ1ZS4KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmNwcAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiUHJlZGVmaW5lZENvbG9yU3BhY2UuaCIKIAotI2luY2x1ZGUgIkNvbG9yU3Bh
Y2UuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlIDx3dGYv
T3B0aW9uYWwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsMzMgKzM1LDI2IEBAIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSB0b0Rlc3RpbmF0aW9uQ29sb3IKIHsKICAgICBzd2l0Y2ggKGNv
bG9yU3BhY2UpIHsKICAgICBjYXNlIFByZWRlZmluZWRDb2xvclNwYWNlOjpTUkdCOgotICAgICAg
ICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOworICAgICAgICByZXR1cm4gRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9S
X1NQQUNFX0RJU1BMQVlfUDMpCiAgICAgY2FzZSBQcmVkZWZpbmVkQ29sb3JTcGFjZTo6RGlzcGxh
eVAzOgotICAgICAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDM7Cisg
ICAgICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMygpOwogI2VuZGlm
CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQjsKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCk7CiB9CiAKLU9wdGlvbmFsPFByZWRlZmluZWRDb2xvclNwYWNlPiB0b1ByZWRlZmluZWRD
b2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKQorT3B0aW9uYWw8UHJl
ZGVmaW5lZENvbG9yU3BhY2U+IHRvUHJlZGVmaW5lZENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQogewotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewot
ICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOgorICAgIGlmIChjb2xvclNwYWNl
ID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKQogICAgICAgICByZXR1cm4gUHJlZGVm
aW5lZENvbG9yU3BhY2U6OlNSR0I7Ci0jaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNF
X0xJTkVBUl9TUkdCKQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdC
OgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotI2VuZGlmCiAjaWYgRU5BQkxFKERFU1RJ
TkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCi0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OkRpc3BsYXlQMzoKKyAgICBpZiAoY29sb3JTcGFjZSA9PSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OkRpc3BsYXlQMygpKQogICAgICAgICByZXR1cm4gUHJlZGVmaW5lZENvbG9yU3BhY2U6
OkRpc3BsYXlQMzsKICNlbmRpZgotICAgIH0KIAotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuaAkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVu
dW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDogdWludDhfdDsKK2NsYXNzIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTsKIAogZW51bSBjbGFzcyBQcmVkZWZpbmVkQ29sb3JTcGFjZSB7CiAgICAg
U1JHQgpAQCAtNDAsNyArNDAsNyBAQCBlbnVtIGNsYXNzIFByZWRlZmluZWRDb2xvclNwYWNlIHsK
IH07CiAKIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB0b0Rlc3RpbmF0aW9uQ29sb3JTcGFjZShQcmVk
ZWZpbmVkQ29sb3JTcGFjZSk7Ci1PcHRpb25hbDxQcmVkZWZpbmVkQ29sb3JTcGFjZT4gdG9QcmVk
ZWZpbmVkQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpOworT3B0aW9uYWw8UHJlZGVm
aW5lZENvbG9yU3BhY2U+IHRvUHJlZGVmaW5lZENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJik7CiAKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAJKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjIzLDcgKzc2MjMsNyBAQCBJbWFnZUJ1ZmZlciog
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6CiAgICAgfQogCiAgICAgLy8gRklYTUUgKDE0OTQy
Myk6IFNob3VsZCB0aGlzIEltYWdlQnVmZmVyIGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJh
dGVkPwotICAgIGF1dG8gdGVtcCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gdGVtcCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6
ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCF0ZW1wKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICBBU1NFUlQobV9idWZmZXJzLnNpemUoKSA+IDApOwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVy
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFRleHRUcmFja0NvbnRh
aW5lckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTgsNyArNDE4LDcgQEAgUmVmUHRy
PEltYWdlPiBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YQogICAgIEludFJlY3QgcGFpbnRpbmdS
ZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+c2l6ZSgpKTsKIAogICAgIC8vIEZJWE1F
ICgxNDk0MjIpOiBUaGlzIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFj
Y2VsZXJhdGVkLgotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGlu
Z1JlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBkZXZpY2VTY2FsZUZh
Y3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwor
ICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGluZ1JlY3Quc2l6ZSgp
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFi
dWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExNDksNyArMTE0OSw3IEBAIGludCBJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YShE
dXBsaWMKICAgICAgICAgICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBpbWFnZUVs
ZW1lbnQtPmNhY2hlZEltYWdlKCkpIHsKICAgICAgICAgICAgICAgICBJbWFnZSogaW1hZ2UgPSBj
YWNoZWRJbWFnZS0+aW1hZ2UoKTsKICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2Ug
IT0gJkltYWdlOjpudWxsSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgp
OwogICAgICAgICAgICAgICAgICAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFnZSgq
aW1hZ2UsIEZsb2F0UG9pbnQoMCwgMCkpOwogICAgICAgICAgICAgICAgICAgICBkYXRhVVJMID0g
aW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CiAgICAgICAgICAgICAgICAgfQpA
QCAtMTE2Myw3ICsxMTYzLDcgQEAgaW50IEluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKER1
cGxpYwogCiAgICAgICAgICAgICB1bnNpZ25lZCB2aWRlb1dpZHRoID0gdmlkZW9FbGVtZW50LT52
aWRlb1dpZHRoKCk7CiAgICAgICAgICAgICB1bnNpZ25lZCB2aWRlb0hlaWdodCA9IHZpZGVvRWxl
bWVudC0+dmlkZW9IZWlnaHQoKTsKLSAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZSh2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCksIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwg
UGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZSh2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCksIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgICAgICAgICAgaWYgKGltYWdlQnVmZmVyKSB7CiAg
ICAgICAgICAgICAgICAgdmlkZW9FbGVtZW50LT5wYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChp
bWFnZUJ1ZmZlci0+Y29udGV4dCgpLCBGbG9hdFJlY3QoMCwgMCwgdmlkZW9XaWR0aCwgdmlkZW9I
ZWlnaHQpKTsKICAgICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVS
TCgiaW1hZ2UvcG5nIik7CkBAIC0xMjAwLDcgKzEyMDAsNyBAQCBpbnQgSW5zcGVjdG9yQ2FudmFz
OjppbmRleEZvckRhdGEoRHVwbGljCiAgICAgICAgICAgICBpZiAoYXV0byogY2FjaGVkSW1hZ2Ug
PSBjc3NJbWFnZVZhbHVlLT5pbWFnZSgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byogaW1hZ2Ug
PSBjYWNoZWRJbWFnZS0+aW1hZ2UoKTsKICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UgJiYgaW1h
Z2UgIT0gJkltYWdlOjpudWxsSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdN
b2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdS
QTgpOwogICAgICAgICAgICAgICAgICAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFn
ZSgqaW1hZ2UsIEZsb2F0UG9pbnQoMCwgMCkpOwogICAgICAgICAgICAgICAgICAgICBkYXRhVVJM
ID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CiAgICAgICAgICAgICAgICAg
fQpAQCAtMTQ0MSw3ICsxNDQxLDcgQEAgUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJ
bnNwZWN0bwogewogICAgIGF1dG8mIHRpbGVJbWFnZSA9IGNhbnZhc1BhdHRlcm4ucGF0dGVybigp
LnRpbGVJbWFnZSgpOwogICAgIEZsb2F0UmVjdCByZWN0ID0geyB7IH0sIHRpbGVJbWFnZS5zaXpl
KCkgfTsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0aWxlSW1h
Z2Uuc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZl
ciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGlsZUltYWdlLnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CiAgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5kcmF3TmF0aXZlSW1hZ2Uo
dGlsZUltYWdlLCB0aWxlSW1hZ2Uuc2l6ZSgpLCByZWN0LCByZWN0KTsKIAogICAgIFN0cmluZyBy
ZXBlYXQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyOSw3ICs1
MjksNyBAQCB2b2lkIENocm9tZTo6c2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vCiAgICAgbV9j
bGllbnQuc2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGhpZGRlblVudGlsTW91c2VNb3Zl
cyk7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gQ2hyb21lOjpjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgUmVuZGVy
aW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29uc3QKK1JlZlB0
cjxJbWFnZUJ1ZmZlcj4gQ2hyb21lOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
IHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSBwdXJw
b3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYg
Y29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fY2xpZW50LmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHB1cnBvc2Us
IHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZS5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldEN1cnNvcihjb25zdCBDdXJzb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEN1cnNvckhp
ZGRlblVudGlsTW91c2VNb3Zlcyhib29sKSBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwg
UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJl
bmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiwgUGl4ZWxGb3JtYXQpIGNvbnN0IG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKFdF
QkdMKQogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0
R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3Qgb3ZlcnJpZGU7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzOSw3
ICszMzksNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBEaXNwbGF5UmVmcmVzaE1vbml0
b3JGYWN0b3J5KiBkaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bnVsbHB0cjsgfQogCi0gICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2Us
IGZsb2F0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCB7IHJldHVy
biBudWxscHRyOyB9CisgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2Us
IGZsb2F0LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCkgY29uc3Qg
eyByZXR1cm4gbnVsbHB0cjsgfQogCiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIHZpcnR1YWwgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNu
YXBzaG90dGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNu
YXBzaG90dGluZy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVTbmFwc2hvdHRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDcgQEAg
UmVmUHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVjdFdpdAogICAgIGlmIChvcHRpb25z
ICYgU25hcHNob3RPcHRpb25zUGFpbnRXaXRoSW50ZWdyYWxTY2FsZUZhY3RvcikKICAgICAgICAg
c2NhbGVGYWN0b3IgPSBjZWlsZihzY2FsZUZhY3Rvcik7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgc2NhbGVGYWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1h
Z2VSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgc2NhbGVGYWN0b3Is
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAg
IGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBidWZmZXItPmNvbnRl
eHQoKS50cmFuc2xhdGUoLWltYWdlUmVjdC54KCksIC1pbWFnZVJlY3QueSgpKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcAkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBPcHRpb25hbDxMYWI8ZmxvYXQ+PiBzYW1wbGVD
b2xvcigKICAgICBpZiAoIXNuYXBzaG90KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IHNuYXBzaG90LT5nZXRQaXhlbEJ1ZmZlcih7IEFscGhh
UHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfSwgeyB7IH0sIHNuYXBzaG90LT5sb2dpY2FsU2l6
ZSgpIH0pOworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzbmFwc2hvdC0+Z2V0UGl4ZWxCdWZmZXIo
eyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpC
R1JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfSwgeyB7IH0sIHNuYXBzaG90LT5s
b2dpY2FsU2l6ZSgpIH0pOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGll
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGll
bnQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25z
b2xlQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI2LDcgKzMyNiw3IEBAIHZvaWQgUGFn
ZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjoKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChhdXRvKiBjYWNoZWRJbWFnZSA9IGltYWdlRWxlbWVudC5jYWNoZWRJbWFnZSgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1h
Z2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UgIT0g
JkltYWdlOjpudWxsSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
bmFwc2hvdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdCA9
IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuYXBzaG90LT5jb250ZXh0
KCkuZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMzQzLDcgKzM0Myw3
IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjoKICAgICAgICAgICAg
ICAgICAgICAgICAgIGF1dG8mIHZpZGVvRWxlbWVudCA9IGRvd25jYXN0PEhUTUxWaWRlb0VsZW1l
bnQ+KCpub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHZpZGVvV2lkdGgg
PSB2aWRlb0VsZW1lbnQudmlkZW9XaWR0aCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgdmlkZW9IZWlnaHQgPSB2aWRlb0VsZW1lbnQudmlkZW9IZWlnaHQoKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHNuYXBzaG90ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUo
dmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRT
aXplKHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb0VsZW1lbnQucGFpbnRDdXJyZW50RnJhbWVJ
bkNvbnRleHQoc25hcHNob3QtPmNvbnRleHQoKSwgRmxvYXRSZWN0KDAsIDAsIHZpZGVvV2lkdGgs
IHZpZGVvSGVpZ2h0KSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICNlbmRpZgpAQCAtMzY4LDcg
KzM2OCw3IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjoKICAgICAg
ICAgICAgIHRhcmdldCA9IHBvc3NpYmxlVGFyZ2V0OwogICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRzKCkpKSB7CiAgICAgICAgICAg
ICAgICAgYXV0byBzb3VyY2VTaXplID0gaW1hZ2VEYXRhLT5zaXplKCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNvdXJjZVNpemUs
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvIGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzb3VyY2VTaXplLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KSkgewogICAgICAgICAgICAgICAgICAgICBJbnRSZWN0IHNvdXJjZVJlY3Qo
SW50UG9pbnQoKSwgc291cmNlU2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgIGltYWdlQnVmZmVy
LT5wdXRQaXhlbEJ1ZmZlcihpbWFnZURhdGEtPnBpeGVsQnVmZmVyKCksIHNvdXJjZVJlY3QpOwog
ICAgICAgICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1h
Z2UvcG5nIl9zLCBXVEY6Om51bGxvcHQsIFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
MTAgKzMxLDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cnNvcjsKK2NsYXNz
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIEltYWdlQnVmZmVyOwogCiBlbnVtIGNsYXNz
IFBpeGVsRm9ybWF0IDogdWludDhfdDsKLWVudW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNl
IDogdWludDhfdDsKIGVudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJvb2w7CiBlbnVtIGNsYXNz
IFJlbmRlcmluZ1B1cnBvc2UgOiB1aW50OF90OwogCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIEludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0
IEludFBvaW50JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSW50UmVjdCByb290Vmlld1RvQWNj
ZXNzaWJpbGl0eVNjcmVlbihjb25zdCBJbnRSZWN0JikgY29uc3QgPSAwOwogCi0gICAgdmlydHVh
bCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYs
IFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
RGVzdGluYXRpb25Db2xvclNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
LCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBpeGVsRm9ybWF0KSBjb25zdCA9IDA7CiAK
ICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+
IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYpIGNvbnN0ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2Ny
ZWVuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TY3Jl
ZW4uaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1TY3JlZW4uaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCB0eXBlZGVmIHN0cnVj
dCBDR0NvbG9yU3BhY2UgKkNHQ29sb3JTcGFjCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgRGVzdGluYXRpb25Db2xvclNwYWNlOwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgRmxvYXRT
aXplOwogY2xhc3MgV2lkZ2V0OwpAQCAtNjgsNiArNjksNyBAQCB1c2luZyBJT1JlZ2lzdHJ5R1BV
SUQgPSBpbnQ2NF90OyAvLyBHbG9iCiBpbnQgc2NyZWVuRGVwdGgoV2lkZ2V0Kik7CiBpbnQgc2Ny
ZWVuRGVwdGhQZXJDb21wb25lbnQoV2lkZ2V0Kik7CiBib29sIHNjcmVlbklzTW9ub2Nocm9tZShX
aWRnZXQqKTsKK1dFQkNPUkVfRVhQT1JUIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBzY3JlZW5Db2xv
clNwYWNlKFdpZGdldCogPSBudWxscHRyKTsKIAogYm9vbCBzY3JlZW5IYXNJbnZlcnRlZENvbG9y
cygpOwogCkBAIC0xMDAsMTAgKzEwMiw2IEBAIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2NyZWVuU3Vw
cG9ydHNIaWdoRHkKIGNvbnN0ZXhwciBib29sIHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5n
ZShXaWRnZXQqID0gbnVsbHB0cikgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCi0jaWYgVVNF
KENHKQotV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIHNjcmVlbkNvbG9yU3BhY2UoV2lk
Z2V0KiA9IG51bGxwdHIpOwotI2VuZGlmCi0KIHN0cnVjdCBTY3JlZW5Qcm9wZXJ0aWVzOwogc3Ry
dWN0IFNjcmVlbkRhdGE7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jl
ZW5Qcm9wZXJ0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
ZWVuUHJvcGVydGllcy5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JlZW5Qcm9wZXJ0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNp
bmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogI2luY2x1
ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CkBAIC0zMiwxNCArMzMsMTIgQEAKICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLXR5cGVkZWYg
c3RydWN0IENHQ29sb3JTcGFjZSAqQ0dDb2xvclNwYWNlUmVmOwotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0cnVjdCBTY3JlZW5EYXRhIHsKICAgICBGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxl
UmVjdDsKICAgICBGbG9hdFJlY3Qgc2NyZWVuUmVjdDsKLSAgICBSZXRhaW5QdHI8Q0dDb2xvclNw
YWNlUmVmPiBjb2xvclNwYWNlOworICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNl
IHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsKICAgICBpbnQgc2NyZWVuRGVwdGgg
eyAwIH07CiAgICAgaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50IHsgMCB9OwogICAgIGJvb2wg
c2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yIHsgZmFsc2UgfTsKQEAgLTU2LDEzICs1NSwxMiBA
QCBzdHJ1Y3QgU2NyZWVuRGF0YSB7CiAgICAgZmxvYXQgc2NhbGVGYWN0b3IgeyAxIH07CiAjZW5k
aWYKIAotICAgIGVudW0gY2xhc3MgQ29sb3JTcGFjZVR5cGUgOiB1aW50OF90IHsgTm9uZSwgTmFt
ZSwgRGF0YSB9OwogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8
U2NyZWVuRGF0YT4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKLXR5cGVkZWYgSGFzaE1hcDxQbGF0
Zm9ybURpc3BsYXlJRCwgU2NyZWVuRGF0YT4gU2NyZWVuRGF0YU1hcDsKLSAgICAKK3VzaW5nIFNj
cmVlbkRhdGFNYXAgPSBIYXNoTWFwPFBsYXRmb3JtRGlzcGxheUlELCBTY3JlZW5EYXRhPjsKKwog
c3RydWN0IFNjcmVlblByb3BlcnRpZXMgewogICAgIFBsYXRmb3JtRGlzcGxheUlEIHByaW1hcnlE
aXNwbGF5SUQgeyAwIH07CiAgICAgU2NyZWVuRGF0YU1hcCBzY3JlZW5EYXRhTWFwOwpAQCAtNzQs
OCArNzIsNyBAQCBzdHJ1Y3QgU2NyZWVuUHJvcGVydGllcyB7CiB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPgogdm9pZCBTY3JlZW5Qcm9wZXJ0aWVzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIHsKLSAgICBlbmNvZGVyIDw8IHByaW1hcnlEaXNwbGF5SUQ7Ci0gICAgZW5jb2RlciA8PCBz
Y3JlZW5EYXRhTWFwOworICAgIGVuY29kZXIgPDwgcHJpbWFyeURpc3BsYXlJRCA8PCBzY3JlZW5E
YXRhTWFwOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtOTcsNyArOTQsNyBAQCBP
cHRpb25hbDxTY3JlZW5Qcm9wZXJ0aWVzPiBTY3JlZW5Qcm9wZXJ0CiB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgogdm9pZCBTY3JlZW5EYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
IHsKLSAgICBlbmNvZGVyIDw8IHNjcmVlbkF2YWlsYWJsZVJlY3QgPDwgc2NyZWVuUmVjdCA8PCBz
Y3JlZW5EZXB0aCA8PCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCA8PCBzY3JlZW5TdXBwb3J0c0V4
dGVuZGVkQ29sb3IgPDwgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMgPDwgc2NyZWVuU3VwcG9ydHNI
aWdoRHluYW1pY1JhbmdlOworICAgIGVuY29kZXIgPDwgc2NyZWVuQXZhaWxhYmxlUmVjdCA8PCBz
Y3JlZW5SZWN0IDw8IGNvbG9yU3BhY2UgPDwgc2NyZWVuRGVwdGggPDwgc2NyZWVuRGVwdGhQZXJD
b21wb25lbnQgPDwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yIDw8IHNjcmVlbkhhc0ludmVy
dGVkQ29sb3JzIDw8IHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZTsKIAogI2lmIFBMQVRG
T1JNKE1BQykKICAgICBlbmNvZGVyIDw8IHNjcmVlbklzTW9ub2Nocm9tZSA8PCBkaXNwbGF5TWFz
ayA8PCBncHVJRCA8PCBwcmVmZXJyZWREeW5hbWljUmFuZ2VNb2RlOwpAQCAtMTA2LDI4ICsxMDMs
NiBAQCB2b2lkIFNjcmVlbkRhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyCiAjaWYgUExBVEZP
Uk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGVuY29kZXIgPDwgc2NhbGVGYWN0
b3I7CiAjZW5kaWYKLQotICAgIGlmIChjb2xvclNwYWNlKSB7Ci0gICAgICAgIC8vIFRyeSB0byBl
bmNvZGUgdGhlIG5hbWUuCi0gICAgICAgIGlmIChhdXRvIG5hbWUgPSBhZG9wdENGKENHQ29sb3JT
cGFjZUNvcHlOYW1lKGNvbG9yU3BhY2UuZ2V0KCkpKSkgewotICAgICAgICAgICAgZW5jb2RlciA8
PCBDb2xvclNwYWNlVHlwZTo6TmFtZTsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgU3RyaW5nKG5h
bWUuZ2V0KCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8g
RmFpbGluZyB0aGF0LCBqdXN0IGVuY29kZSB0aGUgSUNDIGRhdGEuCi0gICAgICAgIGlmIChhdXRv
IHByb2ZpbGVEYXRhID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDb3B5SUNDRGF0YShjb2xvclNwYWNl
LmdldCgpKSkpIHsKLSAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBpY2NEYXRhOwotICAgICAg
ICAgICAgaWNjRGF0YS5hcHBlbmQoQ0ZEYXRhR2V0Qnl0ZVB0cihwcm9maWxlRGF0YS5nZXQoKSks
IENGRGF0YUdldExlbmd0aChwcm9maWxlRGF0YS5nZXQoKSkpOwotCi0gICAgICAgICAgICBlbmNv
ZGVyIDw8IENvbG9yU3BhY2VUeXBlOjpEYXRhOwotICAgICAgICAgICAgZW5jb2RlciA8PCBpY2NE
YXRhOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gVGhl
IGNvbG9yIHNwYWNlIHdhcyBudWxsIG9yIGZhaWxlZCB0byBiZSBlbmNvZGVkLgotICAgIGVuY29k
ZXIgPDwgQ29sb3JTcGFjZVR5cGU6Ok5vbmU7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
CkBAIC0xNDMsNiArMTE4LDExIEBAIE9wdGlvbmFsPFNjcmVlbkRhdGE+IFNjcmVlbkRhdGE6OmRl
Y29kZSgKICAgICBpZiAoIXNjcmVlblJlY3QpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAKKyAgICBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IHNjcmVlbkNvbG9yU3BhY2U7
CisgICAgZGVjb2RlciA+PiBzY3JlZW5Db2xvclNwYWNlOworICAgIGlmICghc2NyZWVuQ29sb3JT
cGFjZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwogICAgIE9wdGlvbmFsPGludD4g
c2NyZWVuRGVwdGg7CiAgICAgZGVjb2RlciA+PiBzY3JlZW5EZXB0aDsKICAgICBpZiAoIXNjcmVl
bkRlcHRoKQpAQCAtMTk3LDQxICsxNzcsMTAgQEAgT3B0aW9uYWw8U2NyZWVuRGF0YT4gU2NyZWVu
RGF0YTo6ZGVjb2RlKAogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogI2VuZGlmCiAKLSAg
ICBDb2xvclNwYWNlVHlwZSBkYXRhVHlwZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFU
eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIFJldGFpblB0cjxDR0Nv
bG9yU3BhY2VSZWY+IGNnQ29sb3JTcGFjZTsKLSAgICBzd2l0Y2ggKGRhdGFUeXBlKSB7Ci0gICAg
Y2FzZSBDb2xvclNwYWNlVHlwZTo6Tm9uZToKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDb2xv
clNwYWNlVHlwZTo6TmFtZTogewotICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGNvbG9yU3BhY2VO
YW1lOwotICAgICAgICBkZWNvZGVyID4+IGNvbG9yU3BhY2VOYW1lOwotICAgICAgICBBU1NFUlQo
Y29sb3JTcGFjZU5hbWUpOwotICAgICAgICBpZiAoIWNvbG9yU3BhY2VOYW1lKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgICAgICBjZ0NvbG9yU3BhY2UgPSBhZG9wdENG
KENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGNvbG9yU3BhY2VOYW1lLT5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENvbG9yU3BhY2VU
eXBlOjpEYXRhOiB7Ci0gICAgICAgIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gaWNjRGF0YTsK
LSAgICAgICAgZGVjb2RlciA+PiBpY2NEYXRhOwotICAgICAgICBBU1NFUlQoaWNjRGF0YSk7Ci0g
ICAgICAgIGlmICghaWNjRGF0YSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0K
LSAgICAgICAgYXV0byBjb2xvclNwYWNlRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGljY0RhdGEtPmRhdGEoKSwgaWNjRGF0YS0+c2l6ZSgpKSk7Ci0gICAg
ICAgIGNnQ29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aElDQ0RhdGEo
Y29sb3JTcGFjZURhdGEuZ2V0KCkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIH0KLQog
ICAgIHJldHVybiB7IHsKICAgICAgICAgV1RGTW92ZSgqc2NyZWVuQXZhaWxhYmxlUmVjdCksCiAg
ICAgICAgIFdURk1vdmUoKnNjcmVlblJlY3QpLAotICAgICAgICBXVEZNb3ZlKGNnQ29sb3JTcGFj
ZSksCisgICAgICAgIFdURk1vdmUoKnNjcmVlbkNvbG9yU3BhY2UpLAogICAgICAgICBXVEZNb3Zl
KCpzY3JlZW5EZXB0aCksCiAgICAgICAgIFdURk1vdmUoKnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50
KSwKICAgICAgICAgV1RGTW92ZSgqc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKSwKQEAgLTI1
MCwxNiArMTk5LDMgQEAgT3B0aW9uYWw8U2NyZWVuRGF0YT4gU2NyZWVuRGF0YTo6ZGVjb2RlKAog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0
ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlNjcmVlbkRhdGE6OkNvbG9yU3BhY2VUeXBl
PiB7Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAgICAgICAgV2ViQ29yZTo6U2Ny
ZWVuRGF0YTo6Q29sb3JTcGFjZVR5cGUsCi0gICAgICAgIFdlYkNvcmU6OlNjcmVlbkRhdGE6OkNv
bG9yU3BhY2VUeXBlOjpOb25lLAotICAgICAgICBXZWJDb3JlOjpTY3JlZW5EYXRhOjpDb2xvclNw
YWNlVHlwZTo6TmFtZSwKLSAgICAgICAgV2ViQ29yZTo6U2NyZWVuRGF0YTo6Q29sb3JTcGFjZVR5
cGU6OkRhdGEKLSAgICA+OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NCw3ICsxNjQsNyBAQCBSZWZQdHI8TmF0aXZlSW1h
Z2U+IEJpdG1hcEltYWdlOjpwcmVUcmFuCiAgICAgICAgIHJldHVybiBpbWFnZTsKIAogICAgIGF1
dG8gY29ycmVjdGVkU2l6ZUZsb2F0ID0gY29ycmVjdGVkU2l6ZSA/IEZsb2F0U2l6ZShjb3JyZWN0
ZWRTaXplLnZhbHVlKCkpIDogc2l6ZSgpOwotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShjb3JyZWN0ZWRTaXplRmxvYXQsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
IDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY29ycmVjdGVkU2l6ZUZsb2F0LCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIGltYWdlOwogCkBAIC0zNTIsNyArMzUyLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1Bh
dHRlcm4oR3JhcGhpY3NDbwogICAgIH0KIAogICAgIGlmICghbV9jYWNoZWRJbWFnZSkgewotICAg
ICAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4
cGFuZGVkSW50U2l6ZSh0aWxlUmVjdC5zaXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IsIGN0eHQpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZSh0aWxlUmVjdC5zaXplKCkpLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgY3R4dCk7CiAgICAgICAgIGlmICghYnVmZmVyKQogICAgICAg
ICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3IuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw3ICsxNjgsNyBAQCBDb2xv
ckNvbXBvbmVudHM8ZmxvYXQsIDQ+IENvbG9yOjp0b0NvbG9yCiAgICAgcmV0dXJuIGNvbnZlckNv
bG9yQ29tcG9uZW50cyhpbnB1dENvbG9yU3BhY2UsIGNvbXBvbmVudHMsIG91dHB1dENvbG9yU3Bh
Y2UpOwogfQogCi1Db2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IENvbG9yOjp0b0NvbG9yQ29tcG9u
ZW50c0luQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugb3V0cHV0Q29sb3JTcGFjZSkg
Y29uc3QKK0NvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gQ29sb3I6OnRvQ29sb3JDb21wb25lbnRz
SW5Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgb3V0cHV0Q29sb3JTcGFj
ZSkgY29uc3QKIHsKICAgICBhdXRvIFtpbnB1dENvbG9yU3BhY2UsIGNvbXBvbmVudHNdID0gY29s
b3JTcGFjZUFuZENvbXBvbmVudHMoKTsKICAgICByZXR1cm4gY29udmVyQ29sb3JDb21wb25lbnRz
KGlucHV0Q29sb3JTcGFjZSwgY29tcG9uZW50cywgb3V0cHV0Q29sb3JTcGFjZSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDb2xvckNvbnZlcnNpb24uaCIKICNpbmNs
dWRlICJDb2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKKyNpbmNsdWRl
ICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KQEAgLTEy
MSw3ICsxMjIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8VD4g
dG9TUkdCQUxvc3N5KCkgY29uc3QgeyByZXR1cm4gdG9Db2xvclR5cGVMb3NzeTxTUkdCQTxUPj4o
KTsgfQogCiAgICAgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiB0b0NvbG9yQ29tcG9uZW50c0lu
Q29sb3JTcGFjZShDb2xvclNwYWNlKSBjb25zdDsKLSAgICBDb2xvckNvbXBvbmVudHM8ZmxvYXQs
IDQ+IHRvQ29sb3JDb21wb25lbnRzSW5Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSkg
Y29uc3Q7CisgICAgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiB0b0NvbG9yQ29tcG9uZW50c0lu
Q29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKSBjb25zdDsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQs
IDQ+PiBjb2xvclNwYWNlQW5kQ29tcG9uZW50cygpIGNvbnN0OwogCkBAIC0yNjcsNiArMjY4LDcg
QEAgYm9vbCBvdXRPZkxpbmVDb21wb25lbnRzc0VxdWFsSWdub3JpbmdTZQogCiAjaWYgVVNFKENH
KQogV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJik7
CitXRUJDT1JFX0VYUE9SVCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IHBsYXRmb3JtQ29udmVy
dENvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+LCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKICNlbmRpZgogCiBXRUJDT1JFX0VYUE9SVCBX
VEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgQ29sb3Im
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JDb252ZXJzaW9uLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NyArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbG9yQ29udmVyc2lv
bi5oIgogCisjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJDb2xvclNwYWNlLmgiCisjaW5j
bHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzE4LDE4ICszMjAsMjEgQEAgQ29sb3JDb21w
b25lbnRzPGZsb2F0LCA0PiBjb252ZXJDb2xvckNvbQogICAgIH0pOwogfQogCi1Db2xvckNvbXBv
bmVudHM8ZmxvYXQsIDQ+IGNvbnZlckNvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlIGlucHV0Q29s
b3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBpbnB1dENvbG9yQ29tcG9uZW50cywg
RGVzdGluYXRpb25Db2xvclNwYWNlIG91dHB1dENvbG9yU3BhY2UpCitDb2xvckNvbXBvbmVudHM8
ZmxvYXQsIDQ+IGNvbnZlckNvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlIGlucHV0Q29sb3JTcGFj
ZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBpbnB1dENvbG9yQ29tcG9uZW50cywgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBvdXRwdXRDb2xvclNwYWNlKQogeworI2lmIFVTRShDRykK
KyAgICByZXR1cm4gcGxhdGZvcm1Db252ZXJ0Q29sb3JDb21wb25lbnRzKGlucHV0Q29sb3JTcGFj
ZSwgaW5wdXRDb2xvckNvbXBvbmVudHMsIG91dHB1dENvbG9yU3BhY2UpOworI2Vsc2UKICAgICBy
ZXR1cm4gY2FsbFdpdGhDb2xvclR5cGUoaW5wdXRDb2xvckNvbXBvbmVudHMsIGlucHV0Q29sb3JT
cGFjZSwgW291dHB1dENvbG9yU3BhY2VdIChjb25zdCBhdXRvJiBpbnB1dENvbG9yKSB7Ci0gICAg
ICAgIHN3aXRjaCAob3V0cHV0Q29sb3JTcGFjZSkgewotICAgICAgICBjYXNlIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQjoKKyAgICAgICAgc3dpdGNoIChvdXRwdXRDb2xvclNwYWNlLnBsYXRm
b3JtQ29sb3JTcGFjZSgpKSB7CisgICAgICAgIGNhc2UgUGxhdGZvcm1Db2xvclNwYWNlOjpOYW1l
OjpTUkdCOgogICAgICAgICAgICAgcmV0dXJuIGFzQ29sb3JDb21wb25lbnRzKGNvbnZlcnRDb2xv
cjxTUkdCQTxmbG9hdD4+KGlucHV0Q29sb3IpKTsKICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09M
T1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpMaW5lYXJTUkdCOgotICAgICAgICAgICAgcmV0dXJuIGFzQ29sb3JDb21wb25lbnRzKGNvbnZl
cnRDb2xvcjxMaW5lYXJTUkdCQTxmbG9hdD4+KGlucHV0Q29sb3IpKTsKKyAgICAgICAgY2FzZSBQ
bGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU6OkxpbmVhclNSR0I6CisgICAgICAgICAgICByZXR1cm4g
YXNDb2xvckNvbXBvbmVudHMoY29udmVydENvbG9yPExpbmVhclNSR0I8ZmxvYXQ+PihpbnB1dENv
bG9yKSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExB
WV9QMykKLSAgICAgICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMzoKKyAg
ICAgICAgY2FzZSBQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU6OkRpc3BsYXlQMzoKICAgICAgICAg
ICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhjb252ZXJ0Q29sb3I8RGlzcGxheVAzPGZsb2F0
Pj4oaW5wdXRDb2xvcikpOwogI2VuZGlmCiAgICAgICAgIH0KQEAgLTMzNyw2ICszNDIsNyBAQCBD
b2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbnZlckNvbG9yQ29tCiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gYXNDb2xvckNvbXBvbmVudHMoY29udmVydENv
bG9yPFNSR0JBPGZsb2F0Pj4oaW5wdXRDb2xvcikpOwogICAgIH0pOworI2VuZGlmCiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yQ29udmVyc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtMjksMTUgKzI5LDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
RGVzdGluYXRpb25Db2xvclNwYWNlOworCiBlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90
OwotZW51bSBjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgOiB1aW50OF90OwogCiAvLyBDb252
ZXJzaW9uIGZ1bmN0aW9uIGZvciB0eXBlZCBjb2xvcnMuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPdXRw
dXQsIHR5cGVuYW1lIElucHV0PiBPdXRwdXQgY29udmVydENvbG9yKGNvbnN0IElucHV0JiBjb2xv
cik7CiAKIC8vIENvbnZlcnNpb24gZnVuY3Rpb25zIGZvciByYXcgY29sb3IgY29tcG9uZW50cyB3
aXRoIGFzc29jaWF0ZWQgY29sb3Igc3BhY2VzLgogQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBj
b252ZXJDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1dENvbG9yU3BhY2UsIENvbG9yQ29t
cG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVudHMsIENvbG9yU3BhY2Ugb3V0cHV0
Q29sb3JTcGFjZSk7Ci1Db2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbnZlckNvbG9yQ29tcG9u
ZW50cyhDb2xvclNwYWNlIGlucHV0Q29sb3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0
PiBpbnB1dENvbG9yQ29tcG9uZW50cywgRGVzdGluYXRpb25Db2xvclNwYWNlIG91dHB1dENvbG9y
U3BhY2UpOworQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb252ZXJDb2xvckNvbXBvbmVudHMo
Q29sb3JTcGFjZSBpbnB1dENvbG9yU3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gaW5w
dXRDb2xvckNvbXBvbmVudHMsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgb3V0cHV0Q29s
b3JTcGFjZSk7CiAKIAogLy8gQWxsIGNvbG9yIHR5cGVzLCBvdGhlciB0aGFuIFhZWkEgb3IgdGhv
c2UgaW5oZXJpdGluZyBmcm9tIFJHQlR5cGUsIG11c3QgaW1wbGVtZW50CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDI0ICs2NCw0IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIEMKICAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNl
KQotewotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNhc2UgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCOgotICAgICAgICB0cyA8PCAic1JHQiI7Ci0gICAgICAgIGJyZWFrOwotI2lm
IEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICBjYXNlIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQjoKLSAgICAgICAgdHMgPDwgIkxpbmVhclNS
R0IiOwotICAgICAgICBicmVhazsKLSNlbmRpZgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xP
Ul9TUEFDRV9ESVNQTEFZX1AzKQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNw
bGF5UDM6Ci0gICAgICAgIHRzIDw8ICJEaXNwbGF5UDMiOwotICAgICAgICBicmVhazsKLSNlbmRp
ZgotICAgIH0KLSAgICByZXR1cm4gdHM7Ci19Ci0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMjgsMTAgKzI4LDcgQEAKICNpbmNsdWRlICJDb2xvclR5cGVzLmgiCiAjaW5jbHVkZSA8
ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgotCi1uYW1lc3BhY2UgV1RG
IHsKLWNsYXNzIFRleHRTdHJlYW07Ci19CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NywxOCArNDQsNyBAQCBlbnVtIGNsYXNzIENvbG9yU3Bh
Y2UgOiB1aW50OF90IHsKICAgICBYWVpfRDUwLAogfTsKIAotZW51bSBjbGFzcyBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgOiB1aW50OF90IHsKLSAgICBTUkdCCi0jaWYgRU5BQkxFKERFU1RJTkFUSU9O
X0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQotICAgICwgTGluZWFyU1JHQgotI2VuZGlmCi0jaWYg
RU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCi0gICAgLCBEaXNwbGF5
UDMKLSNlbmRpZgotfTsKLQotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFdURjo6VGV4dFN0cmVhbSYsIENvbG9yU3BhY2UpOwotV0VCQ09SRV9FWFBPUlQgV1RGOjpU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSk7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
LCBDb2xvclNwYWNlKTsKIAogCiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IENvbG9yU3BhY2VN
YXBwaW5nOwpAQCAtMTAyLDI1ICs4OCw2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IEZ1bmN0b3I+IGMKICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+
KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8U1JHQkE8VD4+KGNvbXBvbmVudHMpKTsKIH0K
IAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRnVuY3Rvcj4gY29uc3RleHByIGRlY2x0
eXBlKGF1dG8pIGNhbGxXaXRoQ29sb3JUeXBlKGNvbnN0IENvbG9yQ29tcG9uZW50czxULCA0PiYg
Y29tcG9uZW50cywgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIEZ1bmN0b3ImJiBm
dW5jdG9yKQotewotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNhc2UgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCOgotICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3
YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8U1JHQkE8VD4+KGNvbXBv
bmVudHMpKTsKLSNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0Ip
Ci0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0I6Ci0gICAgICAgIHJl
dHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIG1ha2VGcm9t
Q29tcG9uZW50czxMaW5lYXJTUkdCQTxUPj4oY29tcG9uZW50cykpOwotI2VuZGlmCi0jaWYgRU5B
QkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCi0gICAgY2FzZSBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMzoKLSAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0
ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFrZUZyb21Db21wb25lbnRzPERpc3BsYXlQ
MzxUPj4oY29tcG9uZW50cykpOwotI2VuZGlmCi0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5j
dG9yKSwgbWFrZUZyb21Db21wb25lbnRzPFNSR0JBPFQ+Pihjb21wb25lbnRzKSk7Ci19Ci0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkBAIC0xNDEsMTcgKzEwOCw0IEBAIHRlbXBsYXRlPD4g
c3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q28KICAgICA+OwogfTsKIAotdGVtcGxhdGU8PiBz
dHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IHsKLSAgICB1
c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAotICAgICAgICBXZWJDb3JlOjpEZXN0aW5hdGlvbkNv
bG9yU3BhY2UsCi0gICAgICAgIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQgot
I2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICAgICAg
LCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IKLSNlbmRpZgotI2lm
IEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQotICAgICAgICAsIFdl
YkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxheVAzCi0jZW5kaWYKLSAgICA+Owot
fTsKLQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJ
bWFnZUJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw3ICszNCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPgogY2xh
c3MgQ29uY3JldGVJbWFnZUJ1ZmZlciA6IHB1YmxpYyBJbWFnZUJ1ZmZlciB7CiBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgSW1hZ2VCdWZmZXJUeXBlID0gQ29uY3JldGVJbWFnZUJ1ZmZl
ciwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXJU
eXBlPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1h
dCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRz
KQorICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXJUeXBlPiBjcmVhdGUoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5k
b3cqIGhvc3RXaW5kb3csIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKICAgICB7CiAgICAgICAg
IGF1dG8gcGFyYW1ldGVycyA9IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyB7IHNpemUs
IHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQgfTsKICAgICAgICAgYXV0
byBiYWNrZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShwYXJhbWV0ZXJzLCBob3N0V2luZG93KTsK
QEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEltYWdlQnVm
ZmVyVHlwZSA9IENvbmNyZXRlSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KICAg
ICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBBcmd1bWVudHMmJi4uLiBhcmd1
bWVudHMpCiAgICAgewotICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBJbWFnZUJ1ZmZlckJhY2tl
bmQ6OlBhcmFtZXRlcnMgeyBzaXplLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBp
eGVsRm9ybWF0OjpCR1JBOCB9OworICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBJbWFnZUJ1ZmZl
ckJhY2tlbmQ6OlBhcmFtZXRlcnMgeyBzaXplLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4IH07CiAgICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tl
bmRUeXBlOjpjcmVhdGUocGFyYW1ldGVycywgY29udGV4dCk7CiAgICAgICAgIGlmICghYmFja2Vu
ZCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTk1LDcgKzE5NSw3IEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgfQogICAgIH0KIAotICAgIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShE
ZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNl
IGRlc3RDb2xvclNwYWNlKSBvdmVycmlkZQorICAgIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHNyY0NvbG9yU3BhY2UsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgZGVzdENvbG9yU3BhY2UpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBp
ZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKICAgICAgICAgICAg
IGZsdXNoRHJhd2luZ0NvbnRleHQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3Nz
ZmFkZUdlbmVyYXRlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBA
IEltYWdlRHJhd1Jlc3VsdCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZToKIAogdm9pZCBDcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFz
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKIHsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShz
aXplKCksIGNvbnRleHQucmVuZGVyaW5nTW9kZSgpLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBjb250ZXh0LnJlbmRlcmluZ01vZGUoKSwgMSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFp
bWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHAJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGlu
YXRpb25Db2xvclNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExNCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9y
U3BhY2UuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KKworI2lmIFVTRShD
RykKKyNpbmNsdWRlICJDb2xvclNwYWNlQ0cuaCIKKyNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVH
cmFwaGljc1NQSS5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRGVzdGluYXRp
b25Db2xvclNwYWNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpCit7CisjaWYgVVNFKENH
KQorICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2Uoc1JHQkNvbG9yU3BhY2VSZWYoKSk7
CisjZWxzZQorICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UoVHlwZTo6U1JHQik7Cisj
ZW5kaWYKK30KKworI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JH
QikKK0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNS
R0IoKQoreworI2lmIFVTRShDRykKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlKGxp
bmVhclNSR0JDb2xvclNwYWNlUmVmKCkpOworI2Vsc2UKKyAgICByZXR1cm4gRGVzdGluYXRpb25D
b2xvclNwYWNlKFR5cGU6OkxpbmVhclNSR0IpOworI2VuZGlmCit9CisjZW5kaWYKKworI2lmIEVO
QUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQorRGVzdGluYXRpb25Db2xv
clNwYWNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxheVAzKCkKK3sKKyNpZiBVU0UoQ0cp
CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZShkaXNwbGF5UDNDb2xvclNwYWNlUmVm
KCkpOworI2Vsc2UKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlKFR5cGU6OkRpc3Bs
YXlQMyk7CisjZW5kaWYKK30KKyNlbmRpZgorCitEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZShQbGF0Zm9ybUNvbG9yU3BhY2UgcGxhdGZvcm1Db2xvclNwYWNlKQor
ICAgIDogbV9wbGF0Zm9ybUNvbG9yU3BhY2UgeyBXVEZNb3ZlKHBsYXRmb3JtQ29sb3JTcGFjZSkg
fQoreworI2lmIFVTRShDRykKKyAgICBBU1NFUlQobV9wbGF0Zm9ybUNvbG9yU3BhY2UpOworI2Vu
ZGlmCit9CisKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGEs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgYikKK3sKKyAgICBpZiAoYS5wbGF0Zm9ybUNv
bG9yU3BhY2UoKSA9PSBiLnBsYXRmb3JtQ29sb3JTcGFjZSgpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKworI2lmIFVTRShDRykKKyAgICByZXR1cm4gQ0dDb2xvclNwYWNlRXF1YWxUb0NvbG9yU3Bh
Y2UoYS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwgYi5wbGF0Zm9ybUNvbG9yU3BhY2UoKSk7CisjZWxz
ZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCitib29sIG9wZXJhdG9yIT0oY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBhLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGIp
Cit7CisgICAgcmV0dXJuICEoYSA9PSBiKTsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQor
eworICAgIGlmIChjb2xvclNwYWNlID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKQor
ICAgICAgICB0cyA8PCAic1JHQiI7CisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNF
X0xJTkVBUl9TUkdCKQorICAgIGVsc2UgaWYgKGNvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xv
clNwYWNlOjpMaW5lYXJTUkdCKCkpCisgICAgICAgIHRzIDw8ICJMaW5lYXJTUkdCIjsKKyNlbmRp
ZgorI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQorICAgIGVs
c2UgaWYgKGNvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDMoKSkK
KyAgICAgICAgdHMgPDwgIkRpc3BsYXlQMyI7CisjZW5kaWYKKyNpZiBVU0UoQ0cpCisgICAgZWxz
ZSBpZiAoYXV0byBkZXNjcmlwdGlvbiA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ29weUlDQ1Byb2Zp
bGVEZXNjcmlwdGlvbihjb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpKSkpCisgICAgICAg
IHRzIDw8IFN0cmluZyhkZXNjcmlwdGlvbi5nZXQoKSk7CisjZW5kaWYKKworICAgIHJldHVybiB0
czsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGlu
YXRpb25Db2xvclNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiUGxhdGZvcm1Db2xvclNwYWNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgRGVzdGluYXRpb25Db2xvclNwYWNlIFNSR0IoKTsKKyNpZiBFTkFCTEUoREVTVElO
QVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBMaW5lYXJTUkdCKCk7CisjZW5kaWYKKyNpZiBFTkFCTEUo
REVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExBWV9QMykKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgRGVzdGluYXRpb25Db2xvclNwYWNlIERpc3BsYXlQMygpOworI2VuZGlmCisKKyAgICBX
RUJDT1JFX0VYUE9SVCBleHBsaWNpdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UoUGxhdGZvcm1Db2xv
clNwYWNlKTsKKyAgICBQbGF0Zm9ybUNvbG9yU3BhY2VWYWx1ZSBwbGF0Zm9ybUNvbG9yU3BhY2Uo
KSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtQ29sb3JTcGFjZS5nZXQoKTsgfQorCisgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U+IGRlY29kZShEZWNvZGVyJik7CisKK3ByaXZhdGU6CisgICAgUGxhdGZvcm1Db2xvclNwYWNl
IG1fcGxhdGZvcm1Db2xvclNwYWNlOworfTsKKworV0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpOworCitXRUJDT1JFX0VY
UE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmKTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29k
ZXIgPDwgbV9wbGF0Zm9ybUNvbG9yU3BhY2U7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+
IE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxQbGF0Zm9ybUNvbG9yU3Bh
Y2U+IHBsYXRmb3JtQ29sb3JTcGFjZTsKKyAgICBkZWNvZGVyID4+IHBsYXRmb3JtQ29sb3JTcGFj
ZTsKKyAgICBpZiAoIXBsYXRmb3JtQ29sb3JTcGFjZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgeyBXVEZNb3ZlKCpwbGF0
Zm9ybUNvbG9yU3BhY2UpIH07Cit9CisKK30KKwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhd1Bh
dHRlcm4oR3JhcGhpY3MKICAgICB1bnNpZ25lZCBnZW5lcmF0b3JIYXNoID0gbV9ncmFkaWVudC0+
aGFzaCgpOwogCiAgICAgaWYgKCFtX2NhY2hlZEltYWdlIHx8IG1fY2FjaGVkR2VuZXJhdG9ySGFz
aCAhPSBnZW5lcmF0b3JIYXNoIHx8IG1fY2FjaGVkQWRqdXN0ZWRTaXplICE9IGFkanVzdGVkU2l6
ZSB8fCAhYXJlRXNzZW50aWFsbHlFcXVhbChkZXN0Q29udGV4dC5zY2FsZUZhY3RvcigpLCBtX2Nh
Y2hlZFNjYWxlRmFjdG9yKSkgewotICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoYWRqdXN0ZWRTaXplLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IsIGRlc3RDb250ZXh0KTsKKyAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGFkanVzdGVkU2l6ZSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCksIGRlc3RDb250ZXh0KTsKICAgICAgICAgaWYgKCFpbWFnZUJ1
ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCShyZXZpc2lvbiAyNzc5
MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04ODMsNyArODgzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmNsaXBPdXRSb3VuZGVkUmVjdAogICAgIGNsaXBPdXQocGF0aCk7CiB9CiAKLUdyYXBoaWNz
Q29udGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6Y2xp
cFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0
aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYp
PiYmIGRyYXdpbmdGdW5jdGlvbikKK0dyYXBoaWNzQ29udGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1h
bmRzUmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JT
cGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBkcmF3aW5nRnVuY3Rpb24p
CiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIENsaXBUb0Ry
YXdpbmdDb21tYW5kc1Jlc3VsdDo6U3VjY2VzczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1
ZGUgIkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJEYXNoQXJyYXkuaCIKKyNpbmNsdWRlICJEZXN0
aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJG
b250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKQEAgLTQxMCw3ICs0MTAs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNv
bnN0IEZsb2F0UmVjdCYpOwogCiAgICAgZW51bSBjbGFzcyBDbGlwVG9EcmF3aW5nQ29tbWFuZHNS
ZXN1bHQgOiBib29sIHsgU3VjY2VzcywgRmFpbGVkVG9DcmVhdGVJbWFnZUJ1ZmZlciB9OwotICAg
IENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2
b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKTsKKyAgICBDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1
bHQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0
Jik+JiYpOwogICAgIAogICAgIEludFJlY3QgY2xpcEJvdW5kcygpIGNvbnN0OwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0SW1wbC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsx
MDQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBX
aW5kUnVsZSkgPSAwOwogICAgIHZpcnR1YWwgSW50UmVjdCBjbGlwQm91bmRzKCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0
UmVjdCYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgRnVuY3Rpb248
dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBkcmF3aW5nRnVuY3Rpb24pID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3ND
b250ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKSA9IDA7CiAjaWYgRU5BQkxFKFZJREVPKQogICAg
IHZpcnR1YWwgdm9pZCBwYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGNhblBhaW50RnJhbWVG
b3JNZWRpYShjb25zdCBNZWRpYVBsYXllciYpIGNvbnN0ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBz
dGF0aWMgY29uc3QgZmxvYXQgTWF4Q2xhbXBlZExlbmd0aCA9IDQwOTY7CiBzdGF0aWMgY29uc3Qg
ZmxvYXQgTWF4Q2xhbXBlZEFyZWEgPSBNYXhDbGFtcGVkTGVuZ3RoICogTWF4Q2xhbXBlZExlbmd0
aDsKIAotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5
TGlzdCBzaG91bGRVc2VEaXNwbGF5TGlzdCwgUmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhl
bEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKK1JlZlB0
cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUs
IFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3Qgc2hvdWxk
VXNlRGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQogewogICAgIFJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7CiAgICAgCkBAIC01OSw3ICs1OSw3IEBAIFJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZSgKICAgICByZXR1cm4gaW1hZ2VC
dWZmZXI7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjb25z
dCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3Jt
YXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCitSZWZQdHI8SW1h
Z2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5k
ZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwg
Y29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+
IGltYWdlQnVmZmVyOwogICAgIApAQCAtOTUsNyArOTUsNyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+
IEltYWdlQnVmZmVyOjpjcmVhdGVDCiAgICAgcmV0dXJuIGltYWdlQnVmZmVyOwogfQogCi1SZWZQ
dHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCkKIHsKICAgICBpZiAoc2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMTExLDcgKzExMSw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6
OmNyZWF0ZUMKICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZl
cj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBz
aXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNw
YWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+
IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNv
bG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICByZXR1cm4g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBjb250ZXh0LnJlbmRlcmluZ01vZGUoKSwgcmVzb2x1
dGlvblNjYWxlLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogfQpAQCAtMTY3LDcg
KzE2Nyw3IEBAIEludFNpemUgSW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZmZXJTaXoKICAgICBy
ZXR1cm4gZXhwYW5kZWRJbnRTaXplKHNpemUgKiBjb250ZXh0LnNjYWxlRmFjdG9yKCkpOwogfQog
Ci1SZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjb3B5UmVjdFRvQnVmZmVyKGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZm
ZXI6OmNvcHlSZWN0VG9CdWZmZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkKIHsKICAgICBpZiAocmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5o
CShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMyArNDUsMTMgQEAgc3RydWN0IEl0
ZW1CdWZmZXJIYW5kbGU7CiBjbGFzcyBJbWFnZUJ1ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxJbWFnZUJ1ZmZlcj4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbWFnZUJ1ZmZlcj4g
ewogcHVibGljOgogICAgIC8vIFdpbGwgcmV0dXJuIGEgbnVsbCBwb2ludGVyIG9uIGFsbG9jYXRp
b24gZmFpbHVyZS4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVy
PiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxh
eUxpc3QsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRp
b25Db2xvclNwYWNlLCBQaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29u
c3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxw
dHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0
ZShjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdCwg
UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29u
c3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyog
PSBudWxscHRyKTsKIAogICAgIC8vIENyZWF0ZSBhbiBpbWFnZSBidWZmZXIgY29tcGF0aWJsZSB3
aXRoIHRoZSBjb250ZXh0LCB3aXRoIHN1aXRhYmxlIHJlc29sdXRpb24gZm9yIGRyYXdpbmcgaW50
byB0aGUgYnVmZmVyIGFuZCB0aGVuIGludG8gdGhpcyBjb250ZXh0LgogICAgIHN0YXRpYyBSZWZQ
dHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4g
Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VC
dWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYpOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZm
ZXIoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgY29uc3Qg
R3JhcGhpY3NDb250ZXh0Jik7CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwog
CiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIHdoZW4gY2xhbXBpbmcgdGhlIEltYWdl
QnVmZmVyIHdoaWNoIGlzIGNyZWF0ZWQgZm9yIGZpbHRlciwgbWFza2VyIG9yIGNsaXBwZXIuCiAg
ICAgc3RhdGljIGJvb2wgc2l6ZU5lZWRzQ2xhbXBpbmcoY29uc3QgRmxvYXRTaXplJik7CkBAIC0x
MDcsNyArMTA3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlPiBjb3B5SW1h
Z2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1dGlv
biA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0ID0gMDsKIAogICAgIC8vIENyZWF0ZSBh
biBpbWFnZSBidWZmZXIgY29tcGF0aWJsZSB3aXRoIHRoZSBjb250ZXh0IGFuZCBjb3B5IHJlY3Qg
ZnJvbSB0aGlzIGJ1ZmZlciBpbnRvIHRoaXMgbmV3IG9uZS4KLSAgICBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IGNvcHlSZWN0VG9CdWZmZXIoY29uc3QgRmxvYXRSZWN0JiwgRGVzdGluYXRpb25Db2xvclNw
YWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNv
cHlSZWN0VG9CdWZmZXIoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwgLTEsIC0xKSwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmID0geyB9KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsKQEAgLTEyMCw3ICsxMjAsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGNsaXBUb01hc2soR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGNvbnZlcnRUb0x1bWluYW5j
ZU1hc2soKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGlu
YXRpb25Db2xvclNwYWNlIHNyY0NvbG9yU3BhY2UsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBkc3RD
b2xvclNwYWNlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBzcmNDb2xvclNwYWNlLCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmIGRzdENvbG9yU3BhY2UpID0gMDsKIAogICAgIHZpcnR1YWwgU3RyaW5nIHRv
RGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkg
PSBXVEY6Om51bGxvcHQsIFByZXNlcnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6
Tm8pIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5ID0gV1RGOjpudWxsb3B0
KSBjb25zdCA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlckJhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDggQEAgSW1hZ2VCdWZmZXJCYWNrZW5kOjpJbWFnZUJ1
ZmZlckJhY2tlbmQoYwogewogfQogCitJbWFnZUJ1ZmZlckJhY2tlbmQ6On5JbWFnZUJ1ZmZlckJh
Y2tlbmQoKSA9IGRlZmF1bHQ7CisKIFJlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJCYWNr
ZW5kOjpzaW5rSW50b05hdGl2ZUltYWdlKCkKIHsKICAgICByZXR1cm4gY29weU5hdGl2ZUltYWdl
KERvbnRDb3B5QmFja2luZ1N0b3JlKTsKQEAgLTExNCwxNSArMTE2LDE3IEBAIE9wdGlvbmFsPFBp
eGVsQnVmZmVyPiBJbWFnZUJ1ZmZlckJhY2tlbmQKICAgICBpZiAoZGVzdGluYXRpb25SZWN0LnNp
emUoKSAhPSBzb3VyY2VSZWN0U2NhbGVkLnNpemUoKSkKICAgICAgICAgcGl4ZWxCdWZmZXItPmRh
dGEoKS56ZXJvRmlsbCgpOwogCi0gICAgQ29uc3RQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IHNv
dXJjZTsKLSAgICBzb3VyY2UuZm9ybWF0ID0geyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVt
dWx0aXBsaWVkLCBwaXhlbEZvcm1hdCgpLCBjb2xvclNwYWNlKCkgfTsKLSAgICBzb3VyY2UuYnl0
ZXNQZXJSb3cgPSBieXRlc1BlclJvdygpOwotICAgIHNvdXJjZS5yb3dzID0gcmVpbnRlcnByZXRf
Y2FzdDx1aW50OF90Kj4oZGF0YSkgKyBzb3VyY2VSZWN0Q2xpcHBlZC55KCkgKiBzb3VyY2UuYnl0
ZXNQZXJSb3cgKyBzb3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0OworICAgIENvbnN0UGl4ZWxCdWZm
ZXJDb252ZXJzaW9uVmlldyBzb3VyY2UgeworICAgICAgICB7IEFscGhhUHJlbXVsdGlwbGljYXRp
b246OlByZW11bHRpcGxpZWQsIHBpeGVsRm9ybWF0KCksIGNvbG9yU3BhY2UoKSB9LAorICAgICAg
ICBieXRlc1BlclJvdygpLAorICAgICAgICByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRh
KSArIHNvdXJjZVJlY3RDbGlwcGVkLnkoKSAqIHNvdXJjZS5ieXRlc1BlclJvdyArIHNvdXJjZVJl
Y3RDbGlwcGVkLngoKSAqIDQKKyAgICB9OwogICAgIAotICAgIFBpeGVsQnVmZmVyQ29udmVyc2lv
blZpZXcgZGVzdGluYXRpb247Ci0gICAgZGVzdGluYXRpb24uZm9ybWF0ID0gZGVzdGluYXRpb25G
b3JtYXQ7Ci0gICAgZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgPSA0ICogc291cmNlUmVjdFNjYWxl
ZC53aWR0aCgpOwotICAgIGRlc3RpbmF0aW9uLnJvd3MgPSBwaXhlbEJ1ZmZlci0+ZGF0YSgpLmRh
dGEoKSArIGRlc3RpbmF0aW9uUmVjdC55KCkgKiBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyArIGRl
c3RpbmF0aW9uUmVjdC54KCkgKiA0OworICAgIFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgZGVz
dGluYXRpb24geworICAgICAgICBkZXN0aW5hdGlvbkZvcm1hdCwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KDQgKiBzb3VyY2VSZWN0U2NhbGVkLndpZHRoKCkpLAorICAgICAgICBwaXhl
bEJ1ZmZlci0+ZGF0YSgpLmRhdGEoKSArIGRlc3RpbmF0aW9uUmVjdC55KCkgKiBkZXN0aW5hdGlv
bi5ieXRlc1BlclJvdyArIGRlc3RpbmF0aW9uUmVjdC54KCkgKiA0CisgICAgfTsKIAogICAgIGNv
bnZlcnRJbWFnZVBpeGVscyhzb3VyY2UsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvblJlY3Quc2l6
ZSgpKTsKIApAQCAtMTQ3LDE1ICsxNTEsMTcgQEAgdm9pZCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnB1
dFBpeGVsQnVmZmVyKAogICAgIGRlc3RpbmF0aW9uUmVjdC5pbnRlcnNlY3QoYmFja2VuZFJlY3Qo
KSk7CiAgICAgc291cmNlUmVjdENsaXBwZWQuc2V0U2l6ZShkZXN0aW5hdGlvblJlY3Quc2l6ZSgp
KTsKIAotICAgIENvbnN0UGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBzb3VyY2U7Ci0gICAgc291
cmNlLmZvcm1hdCA9IHNvdXJjZVBpeGVsQnVmZmVyLmZvcm1hdCgpOwotICAgIHNvdXJjZS5ieXRl
c1BlclJvdyA9IDQgKiBzb3VyY2VQaXhlbEJ1ZmZlci5zaXplKCkud2lkdGgoKTsKLSAgICBzb3Vy
Y2Uucm93cyA9IHNvdXJjZVBpeGVsQnVmZmVyLmRhdGEoKS5kYXRhKCkgKyBzb3VyY2VSZWN0Q2xp
cHBlZC55KCkgKiBzb3VyY2UuYnl0ZXNQZXJSb3cgKyBzb3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0
OwotCi0gICAgUGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBkZXN0aW5hdGlvbjsKLSAgICBkZXN0
aW5hdGlvbi5mb3JtYXQgPSB7IGRlc3RpbmF0aW9uQWxwaGFGb3JtYXQsIHBpeGVsRm9ybWF0KCks
IGNvbG9yU3BhY2UoKSB9OwotICAgIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ID0gYnl0ZXNQZXJS
b3coKTsKLSAgICBkZXN0aW5hdGlvbi5yb3dzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4o
ZGF0YSkgKyBkZXN0aW5hdGlvblJlY3QueSgpICogZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgKyBk
ZXN0aW5hdGlvblJlY3QueCgpICogNDsKKyAgICBDb25zdFBpeGVsQnVmZmVyQ29udmVyc2lvblZp
ZXcgc291cmNlIHsKKyAgICAgICAgc291cmNlUGl4ZWxCdWZmZXIuZm9ybWF0KCksCisgICAgICAg
IHN0YXRpY19jYXN0PHVuc2lnbmVkPig0ICogc291cmNlUGl4ZWxCdWZmZXIuc2l6ZSgpLndpZHRo
KCkpLAorICAgICAgICBzb3VyY2VQaXhlbEJ1ZmZlci5kYXRhKCkuZGF0YSgpICsgc291cmNlUmVj
dENsaXBwZWQueSgpICogc291cmNlLmJ5dGVzUGVyUm93ICsgc291cmNlUmVjdENsaXBwZWQueCgp
ICogNAorICAgIH07CisKKyAgICBQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IGRlc3RpbmF0aW9u
IHsKKyAgICAgICAgeyBkZXN0aW5hdGlvbkFscGhhRm9ybWF0LCBwaXhlbEZvcm1hdCgpLCBjb2xv
clNwYWNlKCkgfSwKKyAgICAgICAgYnl0ZXNQZXJSb3coKSwKKyAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDx1aW50OF90Kj4oZGF0YSkgKyBkZXN0aW5hdGlvblJlY3QueSgpICogZGVzdGluYXRpb24u
Ynl0ZXNQZXJSb3cgKyBkZXN0aW5hdGlvblJlY3QueCgpICogNAorICAgIH07CiAKICAgICBjb252
ZXJ0SW1hZ2VQaXhlbHMoc291cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb25SZWN0LnNpemUo
KSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ckJhY2tlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJDb2xvclNwYWNl
LmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiRmxvYXRS
ZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCiAjaW5jbHVkZSAiSW1hZ2VQYWlu
dGluZ09wdGlvbnMuaCIKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAgICAgICBQaXhlbEZv
cm1hdCBwaXhlbEZvcm1hdDsKICAgICB9OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+
SW1hZ2VCdWZmZXJCYWNrZW5kKCkgPSBkZWZhdWx0OworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgfkltYWdlQnVmZmVyQmFja2VuZCgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIElu
dFNpemUgY2FsY3VsYXRlQmFja2VuZFNpemUoY29uc3QgUGFyYW1ldGVycyYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBzaXplX3QgY2FsY3VsYXRlTWVtb3J5Q29zdChjb25zdCBJbnRTaXpl
JiBiYWNrZW5kU2l6ZSwgdW5zaWduZWQgYnl0ZXNQZXJSb3cpOwpAQCAtMTAyLDcgKzEwMiw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xpcFRvTWFzayhHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmKSB7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29udmVydFRv
THVtaW5hbmNlTWFzaygpOwotICAgIHZpcnR1YWwgdm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNlKERl
c3RpbmF0aW9uQ29sb3JTcGFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKSB7IH0KIAogICAgIHZpcnR1YWwgU3RyaW5n
IHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxp
dHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPHVp
bnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1
YWxpdHkpIGNvbnN0ID0gMDsKQEAgLTE0MCw3ICsxNDAsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBJ
bnRTaXplIGxvZ2ljYWxTaXplKCkgY29uc3QgeyByZXR1cm4gSW50U2l6ZShtX3BhcmFtZXRlcnMu
bG9naWNhbFNpemUpOyB9CiAgICAgZmxvYXQgcmVzb2x1dGlvblNjYWxlKCkgY29uc3QgeyByZXR1
cm4gbV9wYXJhbWV0ZXJzLnJlc29sdXRpb25TY2FsZTsgfQotICAgIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmNvbG9yU3BhY2U7
IH0KKyAgICBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UoKSBjb25zdCB7
IHJldHVybiBtX3BhcmFtZXRlcnMuY29sb3JTcGFjZTsgfQogICAgIFBpeGVsRm9ybWF0IHBpeGVs
Rm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLnBpeGVsRm9ybWF0OyB9CiAKICAg
ICBJbnRSZWN0IGxvZ2ljYWxSZWN0KCkgY29uc3QgeyByZXR1cm4gSW50UmVjdChJbnRQb2ludDo6
emVybygpLCBsb2dpY2FsU2l6ZSgpKTsgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BpeGVsQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMjYsNyArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBbHBoYVByZW11bHRp
cGxpY2F0aW9uLmgiCi0jaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgIkRlc3RpbmF0
aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJQaXhlbEJ1
ZmZlckZvcm1hdC5oIgogI2luY2x1ZGUgIlBpeGVsRm9ybWF0LmgiCkBAIC04NywxOSArODcsMjEg
QEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBQaXhlbEJ1ZmZlcgogCiB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gUGl4ZWxCdWZmZXI6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdDsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGZvcm1hdCkpCisgICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXJGb3Jt
YXQ+IGZvcm1hdDsKKyAgICBkZWNvZGVyID4+IGZvcm1hdDsKKyAgICBpZiAoIWZvcm1hdCkKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIC8vIEZJWE1FOiBTdXBwb3J0IG5vbi04
IGJpdCBmb3JtYXRzLgotICAgIGlmICghKGZvcm1hdC5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1h
dDo6UkdCQTggfHwgZm9ybWF0LnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCkpCisg
ICAgaWYgKCEoZm9ybWF0LT5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6UkdCQTggfHwgZm9y
bWF0LT5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpKQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogCi0gICAgSW50U2l6ZSBzaXplOwotICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoc2l6ZSkpCisgICAgT3B0aW9uYWw8SW50U2l6ZT4gc2l6ZTsKKyAgICBkZWNvZGVyID4+IHNp
emU7CisgICAgaWYgKCFzaXplKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAg
YXV0byBjb21wdXRlZEJ1ZmZlclNpemUgPSBQaXhlbEJ1ZmZlcjo6Y29tcHV0ZUJ1ZmZlclNpemUo
Zm9ybWF0LCBzaXplKTsKKyAgICBhdXRvIGNvbXB1dGVkQnVmZmVyU2l6ZSA9IFBpeGVsQnVmZmVy
Ojpjb21wdXRlQnVmZmVyU2l6ZSgqZm9ybWF0LCAqc2l6ZSk7CiAgICAgaWYgKGNvbXB1dGVkQnVm
ZmVyU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAK
QEAgLTEwNyw3ICsxMDksNyBAQCB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxQaXhl
bEJ1CiAgICAgaWYgKCFkZWNvZGVyLnRlbXBsYXRlIGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRh
aW48dWludDhfdD4oYnVmZmVyU2l6ZSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAK
LSAgICBhdXRvIHJlc3VsdCA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGVGb3JEZWNvZGluZyhmb3Jt
YXQsIHNpemUsIGJ1ZmZlclNpemUpOworICAgIGF1dG8gcmVzdWx0ID0gUGl4ZWxCdWZmZXI6OnRy
eUNyZWF0ZUZvckRlY29kaW5nKFdURk1vdmUoKmZvcm1hdCksICpzaXplLCBidWZmZXJTaXplKTsK
ICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1
ZmZlckNvbnZlcnNpb24uY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckNvbnZlcnNpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNywxMiArMjcsMTEgQEAKICNpbmNsdWRlICJQaXhlbEJ1ZmZlckNvbnZlcnNpb24uaCIK
IAogI2luY2x1ZGUgIkFscGhhUHJlbXVsdGlwbGljYXRpb24uaCIKLSNpbmNsdWRlICJDb2xvclNw
YWNlLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiSW50
U2l6ZS5oIgogI2luY2x1ZGUgIlBpeGVsRm9ybWF0LmgiCiAKICNpZiBVU0UoQUNDRUxFUkFURSkg
JiYgVVNFKENHKQotI2luY2x1ZGUgIkNvbG9yU3BhY2VDRy5oIgogI2luY2x1ZGUgPEFjY2VsZXJh
dGUvQWNjZWxlcmF0ZS5oPgogI2VuZGlmCiAKQEAgLTcxLDcgKzcwLDcgQEAgc3RhdGljIGlubGlu
ZSB2SW1hZ2VfQ0dJbWFnZUZvcm1hdCBtYWtlVgogCiAgICAgcmVzdWx0LmJpdHNQZXJDb21wb25l
bnQgPSBiaXRzUGVyQ29tcG9uZW50OwogICAgIHJlc3VsdC5iaXRzUGVyUGl4ZWwgPSBiaXRzUGVy
UGl4ZWw7Ci0gICAgcmVzdWx0LmNvbG9yU3BhY2UgPSBjYWNoZWRDR0NvbG9yU3BhY2UoZm9ybWF0
LmNvbG9yU3BhY2UpOworICAgIHJlc3VsdC5jb2xvclNwYWNlID0gZm9ybWF0LmNvbG9yU3BhY2Uu
cGxhdGZvcm1Db2xvclNwYWNlKCk7CiAgICAgcmVzdWx0LmJpdG1hcEluZm8gPSBiaXRtYXBJbmZv
OwogICAgIHJlc3VsdC52ZXJzaW9uID0gMDsKICAgICByZXN1bHQuZGVjb2RlID0gbnVsbHB0cjsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxC
dWZmZXJGb3JtYXQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyAr
MjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBbHBoYVByZW11bHRpcGxpY2F0aW9u
LmgiCi0jaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JT
cGFjZS5oIgogI2luY2x1ZGUgIlBpeGVsRm9ybWF0LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KQEAgLTUxLDE5ICs1MSwyMiBAQCB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIFBpeGVsQnVmZmVyCiAKIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IE9wdGlvbmFsPFBpeGVsQnVmZmVyRm9ybWF0PiBQaXhlbEJ1ZmZlckZvcm1hdDo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYUZv
cm1hdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGFscGhhRm9ybWF0KSkKKyAgICBPcHRpb25h
bDxBbHBoYVByZW11bHRpcGxpY2F0aW9uPiBhbHBoYUZvcm1hdDsKKyAgICBkZWNvZGVyID4+IGFs
cGhhRm9ybWF0OworICAgIGlmICghYWxwaGFGb3JtYXQpCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAKLSAgICBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdDsKLSAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBpeGVsRm9ybWF0KSkKKyAgICBPcHRpb25hbDxQaXhlbEZvcm1hdD4gcGl4ZWxGb3Jt
YXQ7CisgICAgZGVjb2RlciA+PiBwaXhlbEZvcm1hdDsKKyAgICBpZiAoIXBpeGVsRm9ybWF0KQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgRGVzdGluYXRpb25Db2xvclNwYWNl
IGNvbG9yU3BhY2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb2xvclNwYWNlKSkKKyAgICBP
cHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CisgICAgZGVjb2RlciA+
PiBjb2xvclNwYWNlOworICAgIGlmICghY29sb3JTcGFjZSkKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKIAotICAgIHJldHVybiB7IHsgYWxwaGFGb3JtYXQsIHBpeGVsRm9ybWF0LCBjb2xv
clNwYWNlIH0gfTsKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmFscGhhRm9ybWF0KSwgV1RGTW92
ZSgqcGl4ZWxGb3JtYXQpLCBXVEZNb3ZlKCpjb2xvclNwYWNlKSB9IH07CiB9CiAKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtQ29sb3JTcGFjZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtQ29s
b3JTcGFjZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtQ29sb3JTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShDRykKKyNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+Cit0eXBlZGVmIHN0cnVjdCBDR0NvbG9yU3BhY2UqIENHQ29sb3JTcGFjZVJl
ZjsKKyNlbHNlCisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KKyNlbmRpZgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKKyNpZiBVU0UoQ0cpCisKK3VzaW5nIFBsYXRmb3JtQ29sb3JTcGFjZSA9
IFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+OwordXNpbmcgUGxhdGZvcm1Db2xvclNwYWNlVmFs
dWUgPSBDR0NvbG9yU3BhY2VSZWY7CisKKyNlbHNlCisKK3N0cnVjdCBQbGF0Zm9ybUNvbG9yU3Bh
Y2UgeworICAgIGVudW0gY2xhc3MgTmFtZSB7CisgICAgICAgIFNSR0IKKyNpZiBFTkFCTEUoREVT
VElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCisgICAgICAgICwgTGluZWFyU1JHQgor
I2VuZGlmCisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCisg
ICAgICAgICwgRGlzcGxheVAzCisjZW5kaWYKKyAgICB9OworICAgIE5hbWUgbmFtZTsKKyAgICBO
YW1lIGdldCgpIGNvbnN0IHsgcmV0dXJuIG5hbWU7IH0KK307Cit1c2luZyBQbGF0Zm9ybUNvbG9y
U3BhY2VWYWx1ZSA9IFBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZTsKKworI2VuZGlmCisKK30KKwor
bmFtZXNwYWNlIFdURiB7CisKKyNpZiAhVVNFKENHKQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVt
VHJhaXRzPFdlYkNvcmU6OlBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZT4geworICAgIHVzaW5nIHZh
bHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OlBsYXRmb3JtQ29sb3JTcGFjZTo6
TmFtZSwKKyAgICAgICAgV2ViQ29yZTo6UGxhdGZvcm1Db2xvclNwYWNlOjpOYW1lOjpTUkdCCisj
aWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQorICAgICAgICAs
IFdlYkNvcmU6OlBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZTo6TGluZWFyU1JHQgorI2VuZGlmCisj
aWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCisgICAgICAgICwg
V2ViQ29yZTo6UGxhdGZvcm1Db2xvclNwYWNlOjpOYW1lOjpEaXNwbGF5UDMKKyNlbmRpZgorICAg
ID47Cit9OworCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5j
cHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1JlbW90ZVZpZGVvU2FtcGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBz
dGF0aWMgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+CiAgICAgfQogCiAgICAgSW50
U2l6ZSBzaXplIHsgc3RhdGljX2Nhc3Q8aW50PihDVlBpeGVsQnVmZmVyR2V0V2lkdGgocGl4ZWxC
dWZmZXIpKSwgc3RhdGljX2Nhc3Q8aW50PihDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KHBpeGVsQnVm
ZmVyKSkgfTsKLSAgICBhdXRvIGlvU3VyZmFjZSA9ICBJT1N1cmZhY2U6OmNyZWF0ZShzaXplLCBz
UkdCQ29sb3JTcGFjZVJlZigpLCBJT1N1cmZhY2U6OkZvcm1hdDo6QkdSQSk7CisgICAgYXV0byBp
b1N1cmZhY2UgPSAgSU9TdXJmYWNlOjpjcmVhdGUoc2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIElPU3VyZmFjZTo6Rm9ybWF0OjpCR1JBKTsKIAogICAgIElPU3VyZmFjZTo6TG9j
a2VyIGxvY2soKmlvU3VyZmFjZSk7CiAgICAgdkltYWdlX0J1ZmZlciBzcmM7CkBAIC0xMTMsNyAr
MTEzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBSZW1vdAogICAgICAg
ICBzdXJmYWNlID0gaW9TdXJmYWNlLT5zdXJmYWNlKCk7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0
ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4obmV3IFJlbW90ZVZpZGVvU2FtcGxlKHN1
cmZhY2UsIHNSR0JDb2xvclNwYWNlUmVmKCksIHNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCksIHNh
bXBsZS52aWRlb1JvdGF0aW9uKCksIHNhbXBsZS52aWRlb01pcnJvcmVkKCkpKTsKKyAgICByZXR1
cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPihuZXcgUmVtb3RlVmlkZW9TYW1w
bGUoc3VyZmFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHNhbXBsZS5wcmVzZW50
YXRpb25UaW1lKCksIHNhbXBsZS52aWRlb1JvdGF0aW9uKCksIHNhbXBsZS52aWRlb01pcnJvcmVk
KCkpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBSZW1vdGVWaWRl
b1NhbXBsZTo6Y3JlYXRlKENWUGl4ZWxCdWZmZXJSZWYgaW1hZ2VCdWZmZXIsIE1lZGlhVGltZSYm
IHByZXNlbnRhdGlvblRpbWUsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKQpA
QCAtMTI0LDEwICsxMjQsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBS
ZW1vdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPihuZXcgUmVtb3RlVmlkZW9TYW1wbGUoc3VyZmFj
ZSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwgV1RGTW92ZShwcmVzZW50YXRpb25UaW1lKSwgcm90YXRp
b24sIGZhbHNlKSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBs
ZT4obmV3IFJlbW90ZVZpZGVvU2FtcGxlKHN1cmZhY2UsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpLCBXVEZNb3ZlKHByZXNlbnRhdGlvblRpbWUpLCByb3RhdGlvbiwgZmFsc2UpKTsKIH0K
IAotUmVtb3RlVmlkZW9TYW1wbGU6OlJlbW90ZVZpZGVvU2FtcGxlKElPU3VyZmFjZVJlZiBzdXJm
YWNlLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwgTWVkaWFUaW1lJiYgdGltZSwgTWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24sIGJvb2wgbWlycm9yZWQpCitSZW1vdGVWaWRl
b1NhbXBsZTo6UmVtb3RlVmlkZW9TYW1wbGUoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIGNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgTWVkaWFUaW1lJiYgdGltZSwgTWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24sIGJvb2wgbWlycm9yZWQpCiAgICAgOiBtX2lv
U3VyZmFjZShXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TdXJmYWNlKHN1cmZhY2UsIGNv
bG9yU3BhY2UpKQogICAgICwgbV9yb3RhdGlvbihyb3RhdGlvbikKICAgICAsIG1fdGltZShXVEZN
b3ZlKHRpbWUpKQpAQCAtMTQwLDcgKzE0MCw3IEBAIFJlbW90ZVZpZGVvU2FtcGxlOjpSZW1vdGVW
aWRlb1NhbXBsZShJT1MKIElPU3VyZmFjZVJlZiBSZW1vdGVWaWRlb1NhbXBsZTo6c3VyZmFjZSgp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX2lvU3VyZmFjZSAmJiBtX3NlbmRSaWdodCkKLSAgICAgICAg
Y29uc3RfY2FzdDxSZW1vdGVWaWRlb1NhbXBsZSo+KHRoaXMpLT5tX2lvU3VyZmFjZSA9IFdlYkNv
cmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGNvbnN0X2Nhc3Q8UmVt
b3RlVmlkZW9TYW1wbGUqPih0aGlzKS0+bV9zZW5kUmlnaHQpLCBzUkdCQ29sb3JTcGFjZVJlZigp
KTsKKyAgICAgICAgY29uc3RfY2FzdDxSZW1vdGVWaWRlb1NhbXBsZSo+KHRoaXMpLT5tX2lvU3Vy
ZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGNv
bnN0X2Nhc3Q8UmVtb3RlVmlkZW9TYW1wbGUqPih0aGlzKS0+bV9zZW5kUmlnaHQpLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAKICAgICByZXR1cm4gbV9pb1N1cmZhY2UgPyBtX2lv
U3VyZmFjZS0+c3VyZmFjZSgpIDogbnVsbHB0cjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9T
YW1wbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBAIHB1YmxpYzoKICAgICB9
CiAKIHByaXZhdGU6Ci0gICAgUmVtb3RlVmlkZW9TYW1wbGUoSU9TdXJmYWNlUmVmLCBDR0NvbG9y
U3BhY2VSZWYsIE1lZGlhVGltZSYmLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiwgYm9vbCk7
CisgICAgUmVtb3RlVmlkZW9TYW1wbGUoSU9TdXJmYWNlUmVmLCBjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmLCBNZWRpYVRpbWUmJiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24sIGJvb2wp
OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gbV9pb1N1cmZhY2U7
CiAgICAgV1RGOjpNYWNoU2VuZFJpZ2h0IG1fc2VuZFJpZ2h0OwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAJKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2xlYXJTY3Jh
dGNoQnVmZmVyKCk7CiAKICAgICAgICAgLy8gU2hhZG93Qmx1ciBpcyBub3QgdXNlZCB3aXRoIGFj
Y2VsZXJhdGVkIGRyYXdpbmcsIHNvIGl0J3MgT0sgdG8gbWFrZSBhbiB1bmNvbmRpdGlvbmFsbHkg
dW5hY2NlbGVyYXRlZCBidWZmZXIuCi0gICAgICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKHJvdW5kZWRTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAg
IG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJvdW5kZWRTaXplLCBSZW5kZXJp
bmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
UGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXI7CiAgICAg
fQogCkBAIC02MDQsNyArNjA0LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3co
Y29uc3QgQQogCiB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBzaGFkb3dlZFJl
Y3QsIGNvbnN0IExheWVySW1hZ2VQcm9wZXJ0aWVzJiBsYXllckltYWdlUHJvcGVydGllcywgY29u
c3QgRHJhd0J1ZmZlckNhbGxiYWNrJiBkcmF3QnVmZmVyKQogewotICAgIGF1dG8gbGF5ZXJJbWFn
ZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoZXhwYW5kZWRJbnRTaXplKGxheWVySW1hZ2VQcm9wZXJ0
aWVzLmxheWVyU2l6ZSksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGxheWVy
SW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJv
cGVydGllcy5sYXllclNpemUpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAo
IWxheWVySW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApAQCAtNjMyLDcgKzYzMiw3IEBAIHZvaWQg
U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGkKIAogdm9pZCBTaGFkb3dCbHVyOjpk
cmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0
IEZsb2F0UmVjdCYgZnVsbFJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBj
b25zdCBMYXllckltYWdlUHJvcGVydGllcyYgbGF5ZXJJbWFnZVByb3BlcnRpZXMsIGNvbnN0IERy
YXdCdWZmZXJDYWxsYmFjayYgZHJhd0J1ZmZlcikKIHsKLSAgICBhdXRvIGxheWVySW1hZ2UgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGllcy5s
YXllclNpemUpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBsYXllckltYWdl
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShleHBhbmRlZEludFNpemUobGF5ZXJJbWFnZVByb3BlcnRp
ZXMubGF5ZXJTaXplKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFsYXll
ckltYWdlKQogICAgICAgICByZXR1cm47CiAKQEAgLTcwNSw3ICs3MDUsNyBAQCB2b2lkIFNoYWRv
d0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluCiAjZW5kaWYKIAogICAgIGlmICghbGF5ZXJJ
bWFnZUJ1ZmZlcikgewotICAgICAgICBsYXllckltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZSh0ZW1wbGF0ZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgbGF5
ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGVtcGxhdGVTaXplLCBSZW5kZXJp
bmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
UGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgaWYgKCFsYXllckltYWdlQnVmZmVyKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTc2Myw3ICs3NjMsNyBAQCB2b2lkIFNoYWRvd0Js
dXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpCiAjZW5kaWYKIAogICAgIGlmICghbGF5ZXJJbWFn
ZUJ1ZmZlcikgewotICAgICAgICBsYXllckltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZSh0ZW1wbGF0ZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgbGF5ZXJJ
bWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdN
b2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgaWYgKCFsYXllckltYWdlQnVmZmVyKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTkwMyw3ICs5MDMsNyBAQCB2b2lkIFNoYWRvd0JsdXI6
OmJsdXJTaGFkb3dCdWZmZXIoSW1hZ2VCCiAgICAgaWYgKG1fdHlwZSAhPSBCbHVyU2hhZG93KQog
ICAgICAgICByZXR1cm47CiAKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0
IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6
UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgSW50UmVjdCBibHVy
UmVjdChJbnRQb2ludCgpLCB0ZW1wbGF0ZVNpemUpOwogICAgIGF1dG8gbGF5ZXJEYXRhID0gbGF5
ZXJJbWFnZS5nZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIGJsdXJSZWN0KTsKICAgICBpZiAoIWxheWVy
RGF0YSkKQEAgLTkzMyw3ICs5MzMsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdTaGFkb3dMYXll
cihjb25zdCBBCiAKICAgICBhZGp1c3RCbHVyUmFkaXVzKHRyYW5zZm9ybSk7CiAKLSAgICBhdXRv
IGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZShsYXllcklt
YWdlUHJvcGVydGllcy0+bGF5ZXJTaXplKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwg
MSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAg
IGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoZXhwYW5kZWRJbnRTaXplKGxh
eWVySW1hZ2VQcm9wZXJ0aWVzLT5sYXllclNpemUpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJh
dGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4
KTsKICAgICBpZiAoIWxheWVySW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
R3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyB2b2lkIHdpcGVBbHBoYUNo
YW5uZWxGcm9tUGl4ZWxzKGkKIAogT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIHsKLSAgICBQaXhlbEJ1ZmZl
ckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQs
IFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAg
UGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVt
dWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpIH07CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9y
bWF0LCBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVy
KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm9CYWNrZW5kLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04OSwxOSArODksMTkgQEAgdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6
Y2xpcFRvTWFzawogICAgICAgICBDYWlybzo6Y2xpcFRvSW1hZ2VCdWZmZXIoKmRlc3RDb250ZXh0
LnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpLCBkZXN0UmVj
dCk7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3Bh
Y2UoRGVzdGluYXRpb25Db2xvclNwYWNlIHNyY0NvbG9yU3BhY2UsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSBkZXN0Q29sb3JTcGFjZSkKK3ZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRyYW5z
Zm9ybUNvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBzcmNDb2xvclNwYWNl
LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGRlc3RDb2xvclNwYWNlKQogewogICAgIGlm
IChzcmNDb2xvclNwYWNlID09IGRlc3RDb2xvclNwYWNlKQogICAgICAgICByZXR1cm47CiAKICAg
ICAvLyBvbmx5IHNSR0IgPC0+IGxpbmVhclJHQiBhcmUgc3VwcG9ydGVkIGF0IHRoZSBtb21lbnQK
LSAgICBpZiAoKHNyY0NvbG9yU3BhY2UgIT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJT
UkdCICYmIHNyY0NvbG9yU3BhY2UgIT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKQotICAg
ICAgICB8fCAoZGVzdENvbG9yU3BhY2UgIT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJT
UkdCICYmIGRlc3RDb2xvclNwYWNlICE9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQikpCisg
ICAgaWYgKChzcmNDb2xvclNwYWNlICE9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JH
QigpICYmIHNyY0NvbG9yU3BhY2UgIT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpCisg
ICAgICAgIHx8IChkZXN0Q29sb3JTcGFjZSAhPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVh
clNSR0IoKSAmJiBkZXN0Q29sb3JTcGFjZSAhPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGFyYW1ldGVycy5jb2xvclNwYWNlID0gZGVz
dENvbG9yU3BhY2U7CiAKLSAgICBpZiAoZGVzdENvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xv
clNwYWNlOjpMaW5lYXJTUkdCKSB7CisgICAgaWYgKGRlc3RDb2xvclNwYWNlID09IERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigpKSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6
OmFycmF5PHVpbnQ4X3QsIDI1Nj4gbGluZWFyUmdiTFVUID0gW10gewogICAgICAgICAgICAgc3Rk
OjphcnJheTx1aW50OF90LCAyNTY+IGFycmF5OwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IDI1NjsgaSsrKSB7CkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBJbWFnZUJ1ZmZl
ckNhaXJvQmFja2VuZDo6dHJhbnNmb3JtQwogICAgICAgICAgICAgcmV0dXJuIGFycmF5OwogICAg
ICAgICB9KCk7CiAgICAgICAgIHBsYXRmb3JtVHJhbnNmb3JtQ29sb3JTcGFjZShsaW5lYXJSZ2JM
VVQpOwotICAgIH0gZWxzZSBpZiAoZGVzdENvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKSB7CisgICAgfSBlbHNlIGlmIChkZXN0Q29sb3JTcGFjZSA9PSBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSkgewogICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjphcnJheTx1
aW50OF90LCAyNTY+IGRldmljZVJnYkxVVD0gW10gewogICAgICAgICAgICAgc3RkOjphcnJheTx1
aW50OF90LCAyNTY+IGFycmF5OwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IDI1NjsgaSsrKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmgJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBjbGlwVG9NYXNrKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QpIG92ZXJyaWRlOwogCi0gICAgdm9pZCB0cmFuc2Zvcm1Db2xvclNw
YWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgZGVzdENvbG9yU3BhY2UpIG92ZXJyaWRlOworICAgIHZvaWQgdHJhbnNmb3JtQ29sb3JT
cGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHNyY0NvbG9yU3BhY2UsIGNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYgZGVzdENvbG9yU3BhY2UpIG92ZXJyaWRlOwogCiAgICAgU3Ry
aW5nIHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1
YWxpdHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1
YWxpdHkpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQ29sb3JDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAw
NiwgMjAwNywgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDEzICsyOSwxNCBAQAogI2lmIFVTRShDRykK
IAogI2luY2x1ZGUgIkNvbG9yU3BhY2VDRy5oIgorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JT
cGFjZS5oIgogI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBo
aWNzU1BJLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvTG9j
ay5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvVGlueUxSVUNh
Y2hlLmg+Ci0jaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1RpbnlMUlVDYWNoZS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNyZWF0ZUNH
Q29sb3IoY29uc3QgQ29sb3ImKTsKQEAgLTkxLDM0ICs5MiwzOCBAQCBDb2xvcjo6Q29sb3IoQ0dD
b2xvclJlZiBjb2xvciwgT3B0aW9uU2V0CiB7CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8Q0dDb2xv
clJlZj4gY3JlYXRlQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCitzdGF0aWMgc3RkOjpwYWly
PENHQ29sb3JTcGFjZVJlZiwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0Pj4gY29udmVydFRvQ0dD
b21wYXRpYmxlQ29tcG9uZW50cyhDb2xvclNwYWNlIGNvbG9yU3BhY2UsIENvbG9yQ29tcG9uZW50
czxmbG9hdCwgND4gY29tcG9uZW50cykKIHsKLSAgICBhdXRvIFtjb2xvclNwYWNlLCBjb21wb25l
bnRzXSA9IGNvbG9yLmNvbG9yU3BhY2VBbmRDb21wb25lbnRzKCk7Ci0KLSAgICBhdXRvIGNnQ29s
b3JTcGFjZSA9IGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpOwotCiAgICAg
Ly8gU29tZSBDRyBwb3J0cyBkb24ndCBzdXBwb3J0IGFsbCB0aGUgY29sb3Igc3BhY2VzIHJlcXVp
cmVkIGFuZCByZXR1cm4KICAgICAvLyBudWxscHRyIGZvciB1bnN1cHBvcnRlZCBjb2xvciBzcGFj
ZXMuIEluIHRob3NlIGNhc2VzLCB3ZSBlYWdlcmx5IGNvbnZlcnQKICAgICAvLyB0aGUgY29sb3Ig
aW50byBlaXRoZXIgZXh0ZW5kZWQgc1JHQiBvciBub3JtYWwgc1JHQiwgaWYgZXh0ZW5kZWQgc1JH
QiBpcwotICAgIC8vIG5vdCBzdXBwb3J0ZWQsIGJlZm9yZSBjcmVhdGluZyB0aGUgQ0dDb2xvclJl
Zi4KKyAgICAvLyBub3Qgc3VwcG9ydGVkLgorCisgICAgYXV0byBjZ0NvbG9yU3BhY2UgPSBjYWNo
ZWROdWxsYWJsZUNHQ29sb3JTcGFjZShjb2xvclNwYWNlKTsKICAgICBpZiAoIWNnQ29sb3JTcGFj
ZSkgewogI2lmIEhBVkUoQ09SRV9HUkFQSElDU19FWFRFTkRFRF9TUkdCX0NPTE9SX1NQQUNFKQot
ICAgICAgICBhdXRvIGNvbG9yQ29udmVydGVkVG9FeHRlbmRlZFNSR0JBID0gY2FsbFdpdGhDb2xv
clR5cGUoY29tcG9uZW50cywgY29sb3JTcGFjZSwgW10gKGNvbnN0IGF1dG8mIGNvbG9yKSB7Ci0g
ICAgICAgICAgICByZXR1cm4gY29udmVydENvbG9yPEV4dGVuZGVkU1JHQkE8ZmxvYXQ+Pihjb2xv
cik7CisgICAgICAgIGF1dG8gY2dDb21wYXRpYmxlQ29tcG9uZW50cyA9IGNhbGxXaXRoQ29sb3JU
eXBlKGNvbXBvbmVudHMsIGNvbG9yU3BhY2UsIFtdIChjb25zdCBhdXRvJiBjb2xvcikgeworICAg
ICAgICAgICAgcmV0dXJuIGFzQ29sb3JDb21wb25lbnRzKGNvbnZlcnRDb2xvcjxFeHRlbmRlZFNS
R0JBPGZsb2F0Pj4oY29sb3IpKTsKICAgICAgICAgfSk7Ci0gICAgICAgIGNvbXBvbmVudHMgPSBh
c0NvbG9yQ29tcG9uZW50cyhjb2xvckNvbnZlcnRlZFRvRXh0ZW5kZWRTUkdCQSk7Ci0gICAgICAg
IGNnQ29sb3JTcGFjZSA9IGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKTsKKyAgICAgICAgcmV0
dXJuIHsgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpLCBjZ0NvbXBhdGlibGVDb21wb25lbnRz
IH07CiAjZWxzZQogICAgICAgICBhdXRvIGNvbG9yQ29udmVydGVkVG9TUkdCQSA9IGNhbGxXaXRo
Q29sb3JUeXBlKGNvbXBvbmVudHMsIGNvbG9yU3BhY2UsIFtdIChjb25zdCBhdXRvJiBjb2xvcikg
ewotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxTUkdCQTxmbG9hdD4+KGNvbG9yKTsK
KyAgICAgICAgICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhjb252ZXJ0Q29sb3I8U1JHQkE8
ZmxvYXQ+Pihjb2xvcikpOwogICAgICAgICB9KTsKLSAgICAgICAgY29tcG9uZW50cyA9IGFzQ29s
b3JDb21wb25lbnRzKGNvbG9yQ29udmVydGVkVG9TUkdCQSk7Ci0gICAgICAgIGNnQ29sb3JTcGFj
ZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7CisgICAgICAgIHJldHVybiB7IHNSR0JDb2xvclNwYWNl
UmVmKCksIGNnQ29tcGF0aWJsZUNvbXBvbmVudHMgfTsKICNlbmRpZgogICAgIH0KIAotICAgIGF1
dG8gW3IsIGcsIGIsIGFdID0gY29tcG9uZW50czsKLSAgICBDR0Zsb2F0IGNnRmxvYXRDb21wb25l
bnRzWzRdIHsgciwgZywgYiwgYSB9OworICAgIHJldHVybiB7IGNnQ29sb3JTcGFjZSwgY29tcG9u
ZW50cyB9OworfQorCitzdGF0aWMgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNyZWF0ZUNHQ29sb3Io
Y29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIGF1dG8gW2NvbG9yU3BhY2UsIGNvbXBvbmVudHNd
ID0gY29sb3IuY29sb3JTcGFjZUFuZENvbXBvbmVudHMoKTsKKyAgICBhdXRvIFtjZ0NvbG9yU3Bh
Y2UsIGNnQ29tcGF0aWJsZUNvbXBvbmVudHNdID0gY29udmVydFRvQ0dDb21wYXRpYmxlQ29tcG9u
ZW50cyhjb2xvclNwYWNlLCBjb21wb25lbnRzKTsKKyAgICAKKyAgICBhdXRvIFtjMSwgYzIsIGMz
LCBjNF0gPSBjZ0NvbXBhdGlibGVDb21wb25lbnRzOworICAgIENHRmxvYXQgY2dGbG9hdENvbXBv
bmVudHNbNF0geyBjMSwgYzIsIGMzLCBjNCB9OwogCiAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dDb2xv
ckNyZWF0ZShjZ0NvbG9yU3BhY2UsIGNnRmxvYXRDb21wb25lbnRzKSk7CiB9CkBAIC0xNjEsNiAr
MTY2LDI0IEBAIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY28KICAgICBy
ZXR1cm4gY2FjaGUuZ2V0KCkuZ2V0KGNvbG9yKS5nZXQoKTsKIH0KIAorQ29sb3JDb21wb25lbnRz
PGZsb2F0LCA0PiBwbGF0Zm9ybUNvbnZlcnRDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1
dENvbG9yU3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVu
dHMsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgb3V0cHV0Q29sb3JTcGFjZSkKK3sKKyAg
ICAvLyBGSVhNRTogSW52ZXN0aWdhdGUgb3B0aW1pemluZyB0aGlzIHRvIHVzZSB0aGUgYnVpbHRp
biBjb2xvciBjb252ZXJzaW9uIGNvZGUgZm9yIHN1cHBvcnRlZCBjb2xvciBzcGFjZXMuCisKKyAg
ICBhdXRvIFtjZ0lucHV0Q29sb3JTcGFjZSwgY2dDb21wYXRpYmxlQ29tcG9uZW50c10gPSBjb252
ZXJ0VG9DR0NvbXBhdGlibGVDb21wb25lbnRzKGlucHV0Q29sb3JTcGFjZSwgaW5wdXRDb2xvckNv
bXBvbmVudHMpOworICAgIGlmIChjZ0lucHV0Q29sb3JTcGFjZSA9PSBvdXRwdXRDb2xvclNwYWNl
LnBsYXRmb3JtQ29sb3JTcGFjZSgpKQorICAgICAgICByZXR1cm4gY2dDb21wYXRpYmxlQ29tcG9u
ZW50czsKKworICAgIGF1dG8gW2MxLCBjMiwgYzMsIGM0XSA9IGNnQ29tcGF0aWJsZUNvbXBvbmVu
dHM7CisgICAgQ0dGbG9hdCBzb3VyY2VDb21wb25lbnRzWzRdIHsgYzEsIGMyLCBjMywgYzQgfTsK
KyAgICBDR0Zsb2F0IGRlc3RpbmF0aW9uQ29tcG9uZW50c1s0XSB7IH07CisKKyAgICBhdXRvIHRy
YW5zZm9ybSA9IGFkb3B0Q0YoQ0dDb2xvclRyYW5zZm9ybUNyZWF0ZShvdXRwdXRDb2xvclNwYWNl
LnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBudWxscHRyKSk7CisgICAgYXV0byByZXN1bHQgPSBDR0Nv
bG9yVHJhbnNmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyh0cmFuc2Zvcm0uZ2V0KCksIGNnSW5w
dXRDb2xvclNwYWNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0LCBzb3VyY2VDb21wb25lbnRz
LCBkZXN0aW5hdGlvbkNvbXBvbmVudHMpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1
bHQpOworICAgIHJldHVybiB7IHN0YXRpY19jYXN0PGZsb2F0PihkZXN0aW5hdGlvbkNvbXBvbmVu
dHNbMF0pLCBzdGF0aWNfY2FzdDxmbG9hdD4oZGVzdGluYXRpb25Db21wb25lbnRzWzFdKSwgc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KGRlc3RpbmF0aW9uQ29tcG9uZW50c1syXSksIHN0YXRpY19jYXN0PGZs
b2F0PihkZXN0aW5hdGlvbkNvbXBvbmVudHNbM10pIH07Cit9CisKIH0KIAogI2VuZGlmIC8vIFVT
RShDRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3Bh
Y2VDRy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yU3BhY2VDRy5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDIz
ICsxMTksNCBAQCBzdGF0aWMgaW5saW5lIENHQ29sb3JTcGFjZVJlZiBjYWNoZWROdWxsCiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKLS8vIE5PVEU6IFNpbmNlIHRoaXMgZnVuY3Rpb24gaXMgZm9y
ICpkZXN0aW5hdGlvbiogY29sb3Igc3BhY2VzIHdob3NlIGNhbGxlcnMgYWx3YXlzIGV4cGVjdCBh
IG5vbi1udWxsIGNvbG9yIHNwYWNlLCB0aGlzIGZ1bmN0aW9uIGlzIGd1YXJhbnRlZWQgdG8gcmV0
dXJuIG5vbi1udWxsLCB1bmxpa2UgY2FjaGVkTnVsbGFibGVDR0NvbG9yU3BhY2UoKS4KLXN0YXRp
YyBpbmxpbmUgQ0dDb2xvclNwYWNlUmVmIGNhY2hlZENHQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgY29sb3JTcGFjZSkKLXsKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBj
YXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgcmV0dXJuIHNSR0JDb2xv
clNwYWNlUmVmKCk7Ci0jaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9T
UkdCKQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCOgotICAgICAg
ICByZXR1cm4gbGluZWFyU1JHQkNvbG9yU3BhY2VSZWYoKTsKLSNlbmRpZgotI2lmIEVOQUJMRShE
RVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQotICAgIGNhc2UgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0gICAgICAgIHJldHVybiBkaXNwbGF5UDNDb2xvclNwYWNl
UmVmKCk7Ci0jZW5kaWYKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIHNSR0JDb2xvclNwYWNlUmVmKCk7Ci19Ci0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cu
Y3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMyLDcgKzUz
Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBhaW50VG9DYW4KICAgICB9KSk7
CiAKICAgICBhdXRvIGltYWdlU2l6ZSA9IHBpeGVsQnVmZmVyLnNpemUoKTsKLSAgICBhdXRvIGlt
YWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHSW1hZ2VDcmVhdGUoaW1hZ2VTaXpl
LndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIDQgKiBpbWFnZVNpemUud2lkdGgo
KSwgY2FjaGVkQ0dDb2xvclNwYWNlKHBpeGVsQnVmZmVyLmZvcm1hdCgpLmNvbG9yU3BhY2UpLCBi
aXRtYXBJbmZvLCBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRl
bnREZWZhdWx0KSkpOworICAgIGF1dG8gaW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKGFkb3B0
Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4
LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBwaXhlbEJ1ZmZlci5mb3JtYXQoKS5jb2xvclNw
YWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBiaXRtYXBJbmZvLCBkYXRhUHJvdmlkZXIuZ2V0KCks
IDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSkpOwogCiAgICAgLy8gQ1NTIHN0
eWxpbmcgbWF5IGNhdXNlIHRoZSBjYW52YXMncyBjb250ZW50IHRvIGJlIHJlc2l6ZWQgb24KICAg
ICAvLyB0aGUgcGFnZS4gR28gYmFjayB0byB0aGUgQ2FudmFzIHRvIGZpZ3VyZSBvdXQgdGhlIGNv
cnJlY3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFj
ZVBvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0lPU3VyZmFjZVBvb2wuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjgsNiArMjgsNyBAQAogCiAjaWYgSEFWRShJT1NVUkZBQ0UpCiAKKyNpbmNsdWRlICJEZXN0
aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2lu
Y2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KQEAgLTU5LDcgKzYwLDcgQEAgSU9TdXJmYWNlUG9vbCYgSU9TdXJmYWNlUG9v
bDo6c2hhcmVkUG9vbAogICAgIHJldHVybiBwb29sOwogfQogCi1zdGF0aWMgYm9vbCBzdXJmYWNl
TWF0Y2hlc1BhcmFtZXRlcnMoSU9TdXJmYWNlJiBzdXJmYWNlLCBJbnRTaXplIHJlcXVlc3RlZFNp
emUsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlLCBJT1N1cmZhY2U6OkZvcm1hdCBmb3JtYXQp
CitzdGF0aWMgYm9vbCBzdXJmYWNlTWF0Y2hlc1BhcmFtZXRlcnMoSU9TdXJmYWNlJiBzdXJmYWNl
LCBJbnRTaXplIHJlcXVlc3RlZFNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29s
b3JTcGFjZSwgSU9TdXJmYWNlOjpGb3JtYXQgZm9ybWF0KQogewogICAgIGlmIChmb3JtYXQgIT0g
c3VyZmFjZS5mb3JtYXQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTAyLDcgKzEwMyw3
IEBAIHZvaWQgSU9TdXJmYWNlUG9vbDo6ZGlkVXNlU3VyZmFjZU9mU2l6ZSgKICAgICBtX3NpemVz
SW5QcnVuZU9yZGVyLmFwcGVuZChzaXplKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFj
ZT4gSU9TdXJmYWNlUG9vbDo6dGFrZVN1cmZhY2UoSW50U2l6ZSBzaXplLCBDR0NvbG9yU3BhY2VS
ZWYgY29sb3JTcGFjZSwgSU9TdXJmYWNlOjpGb3JtYXQgZm9ybWF0KQorc3RkOjp1bmlxdWVfcHRy
PElPU3VyZmFjZT4gSU9TdXJmYWNlUG9vbDo6dGFrZVN1cmZhY2UoSW50U2l6ZSBzaXplLCBjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIElPU3VyZmFjZTo6Rm9ybWF0IGZv
cm1hdCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgQ2FjaGVkU3VyZmFj
ZU1hcDo6aXRlcmF0b3IgbWFwSXRlciA9IG1fY2FjaGVkU3VyZmFjZXMuZmluZChzaXplKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZh
Y2VQb29sLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksOCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERlc3RpbmF0YXRpb25Db2xvclNwYWNl
OworCiBjbGFzcyBJT1N1cmZhY2VQb29sIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJT1N1
cmZhY2VQb29sKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQ3LDcgKzQ5LDcg
QEAgY2xhc3MgSU9TdXJmYWNlUG9vbCB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIElPU3VyZmFjZVBvb2wmIHNoYXJlZFBvb2woKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
T1N1cmZhY2U+IHRha2VTdXJmYWNlKEludFNpemUsIENHQ29sb3JTcGFjZVJlZiwgSU9TdXJmYWNl
OjpGb3JtYXQpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IHRha2VTdXJmYWNlKElu
dFNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIElPU3VyZmFjZTo6Rm9ybWF0KTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFN1cmZhY2Uoc3RkOjp1bmlxdWVfcHRyPElPU3Vy
ZmFjZT4pOwogCiAgICAgdm9pZCBkaXNjYXJkQWxsU3VyZmFjZXMoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHQmFja2VuZC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTc0LDcgKzE3NCw3IEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZUJ1ZmZlckNHQmFj
a2UKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIGJlIHVzaW5nIHRoZSBzYW1lIGxvZ2lj
IGFzIEltYWdlQnVmZmVyVXRpbGl0aWVzQ0c/CiAKICAgICAgICAgLy8gSlBFR3MgZG9uJ3QgaGF2
ZSBhbiBhbHBoYSBjaGFubmVsLCBzbyB3ZSBoYXZlIHRvIG1hbnVhbGx5IGNvbXBvc2l0ZSBvbiB0
b3Agb2YgYmxhY2suCi0gICAgICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJl
bXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1h
dCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpS
R0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsKICAgICAgICAgYXV0byBwaXhl
bEJ1ZmZlciA9IGdldFBpeGVsQnVmZmVyKGZvcm1hdCwgbG9naWNhbFJlY3QoKSk7CiAgICAgICAg
IGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE5Miw3
ICsxOTIsNyBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXJDR0JhY2tlCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICBhdXRvIGltYWdlU2l6ZSA9IHBpeGVs
QnVmZmVyLT5zaXplKCk7Ci0gICAgICAgIHJldHVybiBhZG9wdENGKENHSW1hZ2VDcmVhdGUoaW1h
Z2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIDQgKiBpbWFnZVNpemUu
d2lkdGgoKSwgY2FjaGVkQ0dDb2xvclNwYWNlKHBpeGVsQnVmZmVyLT5mb3JtYXQoKS5jb2xvclNw
YWNlKSwga0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8IGtDR0ltYWdlQWxwaGFOb25lU2tpcExh
c3QsIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1
bHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lk
dGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBw
aXhlbEJ1ZmZlci0+Zm9ybWF0KCkuY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwga0NH
Qml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8IGtDR0ltYWdlQWxwaGFOb25lU2tpcExhc3QsIGRhdGFQ
cm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKICAg
ICB9CiAKICAgICBpZiAocmVzb2x1dGlvblNjYWxlKCkgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRp
b24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBzaXplX3QgSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tl
bmQ6OmNhbGN1CiAgICAgcmV0dXJuIEltYWdlQnVmZmVyQmFja2VuZDo6Y2FsY3VsYXRlTWVtb3J5
Q29zdChiYWNrZW5kU2l6ZSwgY2FsY3VsYXRlQnl0ZXNQZXJSb3coYmFja2VuZFNpemUpKTsKIH0K
IAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIENH
Q29sb3JTcGFjZVJlZiBjZ0NvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqKQorc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFj
a2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEhvc3RXaW5k
b3cqKQogewogICAgIEFTU0VSVChwYXJhbWV0ZXJzLnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0
OjpCR1JBOCk7CiAKQEAgLTgxLDcgKzgxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZQogICAgIHNpemVfdCBudW1CeXRlcyA9IGJhY2tlbmRTaXplLmhlaWdodCgp
ICogYnl0ZXNQZXJSb3c7CiAgICAgdmVyaWZ5SW1hZ2VCdWZmZXJJc0JpZ0Vub3VnaChkYXRhLCBu
dW1CeXRlcyk7CiAKLSAgICBhdXRvIGNnQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0
Q3JlYXRlKGRhdGEsIGJhY2tlbmRTaXplLndpZHRoKCksIGJhY2tlbmRTaXplLmhlaWdodCgpLCA4
LCBieXRlc1BlclJvdywgY2dDb2xvclNwYWNlLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZp
cnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KSk7CisgICAgYXV0byBjZ0NvbnRleHQgPSBh
ZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShkYXRhLCBiYWNrZW5kU2l6ZS53aWR0aCgpLCBi
YWNrZW5kU2l6ZS5oZWlnaHQoKSwgOCwgYnl0ZXNQZXJSb3csIHBhcmFtZXRlcnMuY29sb3JTcGFj
ZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8
IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCkpOwogICAgIGlmICghY2dDb250ZXh0KQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIApAQCAtOTYsMTUgKzk2LDE0IEBAIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2UKIAogc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsK
LSAgICBpZiAoYXV0byBjZ0NvbG9yU3BhY2UgPSBjb250ZXh0Lmhhc1BsYXRmb3JtQ29udGV4dCgp
ID8gY29udGV4dENvbG9yU3BhY2UoY29udGV4dCkgOiBudWxscHRyKQotICAgICAgICByZXR1cm4g
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBjZ0NvbG9yU3Bh
Y2UuZ2V0KCksIG51bGxwdHIpOworICAgIGlmIChhdXRvIGNnQ29sb3JTcGFjZSA9IGNvbnRleHQu
aGFzUGxhdGZvcm1Db250ZXh0KCkgPyBjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0KSA6IG51bGxw
dHIpIHsKKyAgICAgICAgYXV0byBvdmVycmlkZVBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzOworICAg
ICAgICBvdmVycmlkZVBhcmFtZXRlcnMuY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSB7IGNnQ29sb3JTcGFjZSB9OwogCi0gICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNr
ZW5kOjpjcmVhdGUocGFyYW1ldGVycywgbnVsbHB0cik7Ci19CisgICAgICAgIHJldHVybiBJbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKG92ZXJyaWRlUGFyYW1ldGVycywgbnVsbHB0
cik7CisgICAgfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+
IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFy
YW1ldGVycywgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKLXsKLSAgICByZXR1cm4gSW1h
Z2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBjYWNoZWRDR0NvbG9y
U3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSwgaG9zdFdpbmRvdyk7CisgICAgcmV0dXJuIElt
YWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgbnVsbHB0cik7CiB9
CiAKIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2Vu
ZChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCB2b2lkKiBkYXRhLCBSZXRhaW5QdHI8Q0dE
YXRhUHJvdmlkZXJSZWY+JiYgZGF0YVByb3ZpZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3ND
b250ZXh0PiYmIGNvbnRleHQpCkBAIC0xNDYsNyArMTQ1LDcgQEAgUmVmUHRyPE5hdGl2ZUltYWdl
PiBJbWFnZUJ1ZmZlckNHQml0bWFwQgogICAgICAgICBhdXRvIGJhY2tlbmRTaXplID0gdGhpcy0+
YmFja2VuZFNpemUoKTsKICAgICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRD
RihDR0ltYWdlQ3JlYXRlKAogICAgICAgICAgICAgYmFja2VuZFNpemUud2lkdGgoKSwgYmFja2Vu
ZFNpemUuaGVpZ2h0KCksIDgsIDMyLCBieXRlc1BlclJvdygpLAotICAgICAgICAgICAgY2FjaGVk
Q0dDb2xvclNwYWNlKGNvbG9yU3BhY2UoKSksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmly
c3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QsIG1fZGF0YVByb3ZpZGVyLmdldCgpLAorICAg
ICAgICAgICAgY29sb3JTcGFjZSgpLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBrQ0dJbWFnZUFscGhh
UHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0LCBtX2RhdGFQcm92
aWRlci5nZXQoKSwKICAgICAgICAgICAgIDAsIHRydWUsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1
bHQpKSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDggKzM5LDkg
QEAgcHVibGljOgogICAgIHN0YXRpYyBJbnRTaXplIGNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShj
b25zdCBQYXJhbWV0ZXJzJik7CiAgICAgc3RhdGljIHNpemVfdCBjYWxjdWxhdGVNZW1vcnlDb3N0
KGNvbnN0IFBhcmFtZXRlcnMmKTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgQ0dDb2xvclNw
YWNlUmVmLCBjb25zdCBIb3N0V2luZG93Kik7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25z
dCBIb3N0V2luZG93Kik7CisKKyAgICAvLyBGSVhNRTogUmVuYW1lIHRvIGNyZWF0ZVVzaW5nQ29s
b3JTcGFjZU9mR3JhcGhpY3NDb250ZXh0KCkgKG9yIHNvbWV0aGluZyBsaWtlIHRoYXQpLgogICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IGNyZWF0
ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODEsMTMgKzgxLDEzIEBAIFJldGFpblB0cjxDR0NvbG9yU3Bh
Y2VSZWY+IEltYWdlQnVmZmVySU8KICAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNv
bnRleHRDb2xvclNwYWNlKGNvbnRleHQpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShj
b25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBDR0NvbG9yU3BhY2VSZWYgY2dDb2xvclNwYWNl
LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUo
Y29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRv
dykKIHsKICAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gY2FsY3VsYXRlU2FmZUJhY2tlbmRTaXpl
KHBhcmFtZXRlcnMpOwogICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoYmFj
a2VuZFNpemUsIGJhY2tlbmRTaXplLCBjZ0NvbG9yU3BhY2UsIElPU3VyZmFjZTo6Zm9ybWF0Rm9y
UGl4ZWxGb3JtYXQocGFyYW1ldGVycy5waXhlbEZvcm1hdCkpOworICAgIGF1dG8gc3VyZmFjZSA9
IElPU3VyZmFjZTo6Y3JlYXRlKGJhY2tlbmRTaXplLCBiYWNrZW5kU2l6ZSwgcGFyYW1ldGVycy5j
b2xvclNwYWNlLCBJT1N1cmZhY2U6OmZvcm1hdEZvclBpeGVsRm9ybWF0KHBhcmFtZXRlcnMucGl4
ZWxGb3JtYXQpKTsKICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CkBAIC0xMDIsMTUgKzEwMiwxNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IElt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBpZiAoYXV0byBj
Z0NvbG9yU3BhY2UgPSBjb250ZXh0Lmhhc1BsYXRmb3JtQ29udGV4dCgpID8gY29udGV4dENvbG9y
U3BhY2UoY29udGV4dCkgOiBudWxscHRyKQotICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgY2dDb2xvclNwYWNlLmdldCgpLCBudWxs
cHRyKTsKKyAgICBpZiAoYXV0byBjZ0NvbG9yU3BhY2UgPSBjb250ZXh0Lmhhc1BsYXRmb3JtQ29u
dGV4dCgpID8gY29udGV4dENvbG9yU3BhY2UoY29udGV4dCkgOiBudWxscHRyKSB7CisgICAgICAg
IGF1dG8gb3ZlcnJpZGVQYXJhbWV0ZXJzID0gcGFyYW1ldGVyczsKKyAgICAgICAgb3ZlcnJpZGVQ
YXJhbWV0ZXJzLmNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgeyBjZ0NvbG9yU3Bh
Y2UgfTsKIAotICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShw
YXJhbWV0ZXJzLCBudWxscHRyKTsKLX0KKyAgICAgICAgcmV0dXJuIEltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZDo6Y3JlYXRlKG92ZXJyaWRlUGFyYW1ldGVycywgbnVsbHB0cik7CisgICAgfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBj
b25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQotewotICAgIHJldHVybiBJbWFnZUJ1ZmZlcklP
U3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBjYWNoZWRDR0NvbG9yU3BhY2UocGFy
YW1ldGVycy5jb2xvclNwYWNlKSwgaG9zdFdpbmRvdyk7CisgICAgcmV0dXJuIEltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIG51bGxwdHIpOwogfQogCiBJbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZChjb25z
dCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiYmIHN1
cmZhY2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDggKzQyLDggQEAgcHVi
bGljOgogICAgIHN0YXRpYyBzaXplX3QgY2FsY3VsYXRlTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0
ZXJzJik7CiAgICAgc3RhdGljIHNpemVfdCBjYWxjdWxhdGVFeHRlcm5hbE1lbW9yeUNvc3QoY29u
c3QgUGFyYW1ldGVycyYpOwogICAgIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIENHQ29sb3JT
cGFjZVJlZiwgY29uc3QgSG9zdFdpbmRvdyopOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIGNv
bnN0IEhvc3RXaW5kb3cqKTsKKyAgICAvLyBGSVhNRTogUmVuYW1lIHRvIGNyZWF0ZVVzaW5nQ29s
b3JTcGFjZU9mR3JhcGhpY3NDb250ZXh0KCkgKG9yIHNvbWV0aGluZyBsaWtlIHRoYXQpLgogICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVh
dGUoY29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAgSW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmLCBzdGQ6OnVuaXF1ZV9w
dHI8SU9TdXJmYWNlPiYmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuY3BwCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlclV0aWxpdGllc0NHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDcgKzE3Nyw3IEBA
IHN0YXRpYyBib29sIGVuY29kZShjb25zdCBQaXhlbEJ1ZmZlciYgc28KICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBhdXRvIGltYWdlU2l6ZSA9IHNvdXJjZS5zaXplKCk7Ci0gICAgYXV0
byBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VT
aXplLmhlaWdodCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBjYWNoZWRDR0NvbG9y
U3BhY2Uoc291cmNlLmZvcm1hdCgpLmNvbG9yU3BhY2UpLCBrQ0dCaXRtYXBCeXRlT3JkZXJEZWZh
dWx0IHwgZGF0YUFscGhhSW5mbywgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVu
ZGVyaW5nSW50ZW50RGVmYXVsdCkpOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VD
cmVhdGUoaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIDQgKiBp
bWFnZVNpemUud2lkdGgoKSwgc291cmNlLmZvcm1hdCgpLmNvbG9yU3BhY2UucGxhdGZvcm1Db2xv
clNwYWNlKCksIGtDR0JpdG1hcEJ5dGVPcmRlckRlZmF1bHQgfCBkYXRhQWxwaGFJbmZvLCBkYXRh
UHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CiAK
ICAgICByZXR1cm4gZW5jb2RlKGltYWdlLmdldCgpLCBkZXN0aW5hdGlvblVUSS5nZXQoKSwgcXVh
bGl0eSwgZnVuY3Rpb24pOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTENvY29hLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC01NzEsNyArNTcxLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
cmVzaGFwZURpcwogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YWxsb2NhdGVBbmRCaW5k
RGlzcGxheUJ1ZmZlckJhY2tpbmcoKQogewogICAgIEFTU0VSVCghZ2V0SW50ZXJuYWxGcmFtZWJ1
ZmZlclNpemUoKS5pc0VtcHR5KCkpOwotICAgIGF1dG8gYmFja2luZyA9IFdlYkNvcmU6OklPU3Vy
ZmFjZTo6Y3JlYXRlKGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCksIFdlYkNvcmU6OnNSR0JD
b2xvclNwYWNlUmVmKCkpOworICAgIGF1dG8gYmFja2luZyA9IElPU3VyZmFjZTo6Y3JlYXRlKGdl
dEludGVybmFsRnJhbWVidWZmZXJTaXplKCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
KTsKICAgICBpZiAoIWJhY2tpbmcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0lPU3VyZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw5ICsyNywxMCBAQAogCiAjaWYg
SEFWRShJT1NVUkZBQ0UpCiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKKyNp
bmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSA8b2JqYy9vYmpjLmg+CiAjaW5jbHVkZSA8cGFs
L3NwaS9jb2NvYS9JT1N1cmZhY2VTUEkuaD4KLSNpbmNsdWRlICJJbnRTaXplLmgiCiAKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpICYmICFQTEFURk9S
TShJT1NfRkFNSUxZX1NJTVVMQVRPUikKICNkZWZpbmUgSEFWRV9JT1NVUkZBQ0VfUkdCMTAgMQpA
QCAtNDYsMTAgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0Nv
bnRleHQ7CiBjbGFzcyBIb3N0V2luZG93OwotICAgIAotI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFT
X0JBQ0tJTkdfU1RPUkUpCiBjbGFzcyBJbWFnZUJ1ZmZlcjsKLSNlbmRpZgogCiBlbnVtIGNsYXNz
IFBpeGVsRm9ybWF0IDogdWludDhfdDsKIGVudW0gY2xhc3MgVm9sYXRpbGl0eVN0YXRlIDogdWlu
dDhfdDsKQEAgLTEwMSwxMCArOTksMTAgQEAgcHVibGljOgogICAgICAgICB1aW50MzJfdCBtX2Zs
YWdzOwogICAgIH07CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PElPU3VyZmFjZT4gY3JlYXRlKEludFNpemUsIENHQ29sb3JTcGFjZVJlZiwgRm9ybWF0ID0gRm9y
bWF0OjpCR1JBKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElP
U3VyZmFjZT4gY3JlYXRlKEludFNpemUsIEludFNpemUgY29udGV4dFNpemUsIENHQ29sb3JTcGFj
ZVJlZiwgRm9ybWF0ID0gRm9ybWF0OjpCR1JBKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlRnJvbVNlbmRSaWdodChjb25zdCBXVEY6
Ok1hY2hTZW5kUmlnaHQmJiwgQ0dDb2xvclNwYWNlUmVmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlRnJvbVN1cmZhY2UoSU9TdXJm
YWNlUmVmLCBDR0NvbG9yU3BhY2VSZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGUoSW50U2l6ZSwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiwgRm9ybWF0ID0gRm9ybWF0OjpCR1JBKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlKEludFNpemUsIEludFNpemUg
Y29udGV4dFNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZvcm1hdCA9IEZvcm1h
dDo6QkdSQSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1
cmZhY2U+IGNyZWF0ZUZyb21TZW5kUmlnaHQoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0JiYsIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGVGcm9tU3VyZmFjZShJT1N1cmZhY2VSZWYs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGVGcm9tSW1hZ2UoQ0dJbWFnZVJlZik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNy
ZWF0ZUZyb21QaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmKTsKICAgICAKQEAgLTE0Niw3ICsx
NDQsNyBAQCBwdWJsaWM6CiAgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXpl
OyB9CiAgICAgc2l6ZV90IHRvdGFsQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsQnl0ZXM7
IH0KIAotICAgIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9j
b2xvclNwYWNlLmdldCgpOyB9CisgICAgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xv
clNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvclNwYWNlOyB9CiAgICAgV0VCQ09SRV9FWFBP
UlQgRm9ybWF0IGZvcm1hdCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIElPU3VyZmFjZUlE
IHN1cmZhY2VJRCgpIGNvbnN0OwogICAgIHNpemVfdCBieXRlc1BlclJvdygpIGNvbnN0OwpAQCAt
MTY5LDE0ICsxNjcsMTQgQEAgcHVibGljOgogICAgIHZvaWQgbWlncmF0ZUNvbG9yU3BhY2VUb1By
b3BlcnRpZXMoKTsKIAogcHJpdmF0ZToKLSAgICBJT1N1cmZhY2UoSW50U2l6ZSwgSW50U2l6ZSBj
b250ZXh0U2l6ZSwgQ0dDb2xvclNwYWNlUmVmLCBGb3JtYXQsIGJvb2wmIHN1Y2Nlc3MpOwotICAg
IElPU3VyZmFjZShJT1N1cmZhY2VSZWYsIENHQ29sb3JTcGFjZVJlZik7CisgICAgSU9TdXJmYWNl
KEludFNpemUsIEludFNpemUgY29udGV4dFNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYsIEZvcm1hdCwgYm9vbCYgc3VjY2Vzcyk7CisgICAgSU9TdXJmYWNlKElPU3VyZmFjZVJlZiwg
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPElPU3VyZmFjZT4gc3VyZmFjZUZyb21Qb29sKEludFNpemUsIEludFNpemUgY29udGV4dFNp
emUsIENHQ29sb3JTcGFjZVJlZiwgRm9ybWF0KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PElPU3VyZmFjZT4gc3VyZmFjZUZyb21Qb29sKEludFNpemUsIEludFNpemUgY29udGV4dFNpemUs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZvcm1hdCk7CiAgICAgSW50U2l6ZSBjb250
ZXh0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dFNpemU7IH0KICAgICB2b2lkIHNldENv
bnRleHRTaXplKEludFNpemUpOwogCi0gICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gbV9j
b2xvclNwYWNlOworICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBtX2NvbG9yU3BhY2U7CiAgICAg
SW50U2l6ZSBtX3NpemU7CiAgICAgSW50U2l6ZSBtX2NvbnRleHRTaXplOwogICAgIHNpemVfdCBt
X3RvdGFsQnl0ZXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9JT1N1cmZhY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiSU9TdXJmYWNl
LmgiCiAKLSNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCisjaW1wb3J0ICJEZXN0aW5hdGlv
bkNvbG9yU3BhY2UuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW1wb3J0ICJH
cmFwaGljc0NvbnRleHRHTC5oIgogI2ltcG9ydCAiSG9zdFdpbmRvdy5oIgpAQCAtNDEsOSArNDEs
MTEgQEAKICNpbXBvcnQgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9UZXh0
U3RyZWFtLmg+CiAKKyNpbXBvcnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6
c3VyZmFjZUZyb21Qb29sKEludFNpemUgc2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xv
clNwYWNlUmVmIGNvbG9yU3BhY2UsIEZvcm1hdCBwaXhlbEZvcm1hdCkKK2lubGluZSBzdGQ6OnVu
aXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OnN1cmZhY2VGcm9tUG9vbChJbnRTaXplIHNp
emUsIEludFNpemUgY29udGV4dFNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29s
b3JTcGFjZSwgRm9ybWF0IHBpeGVsRm9ybWF0KQogewogICAgIGF1dG8gY2FjaGVkU3VyZmFjZSA9
IElPU3VyZmFjZVBvb2w6OnNoYXJlZFBvb2woKS50YWtlU3VyZmFjZShzaXplLCBjb2xvclNwYWNl
LCBwaXhlbEZvcm1hdCk7CiAgICAgaWYgKCFjYWNoZWRTdXJmYWNlKQpAQCAtNTMsMTIgKzU1LDEy
IEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmYKICAgICByZXR1cm4g
Y2FjaGVkU3VyZmFjZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNl
OjpjcmVhdGUoSW50U2l6ZSBzaXplLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwgRm9ybWF0
IHBpeGVsRm9ybWF0KQorc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVh
dGUoSW50U2l6ZSBzaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2Us
IEZvcm1hdCBwaXhlbEZvcm1hdCkKIHsKICAgICByZXR1cm4gSU9TdXJmYWNlOjpjcmVhdGUoc2l6
ZSwgc2l6ZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZShJbnRTaXplIHNpemUsIEludFNpemUgY29udGV4
dFNpemUsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlLCBGb3JtYXQgcGl4ZWxGb3JtYXQpCitz
dGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZShJbnRTaXplIHNpemUs
IEludFNpemUgY29udGV4dFNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JT
cGFjZSwgRm9ybWF0IHBpeGVsRm9ybWF0KQogewogICAgIGlmIChhdXRvIGNhY2hlZFN1cmZhY2Ug
PSBzdXJmYWNlRnJvbVBvb2woc2l6ZSwgY29udGV4dFNpemUsIGNvbG9yU3BhY2UsIHBpeGVsRm9y
bWF0KSkgewogICAgICAgICBMT0dfV0lUSF9TVFJFQU0oSU9TdXJmYWNlLCBzdHJlYW0gPDwgIklP
U3VyZmFjZTo6Y3JlYXRlIHRvb2sgZnJvbSBwb29sOiAiIDw8ICpjYWNoZWRTdXJmYWNlKTsKQEAg
LTc1LDEzICs3NywxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNy
CiAgICAgcmV0dXJuIHN1cmZhY2U7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElP
U3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChjb25zdCBNYWNoU2VuZFJpZ2h0JiYgc2VuZFJp
Z2h0LCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSkKK3N0ZDo6dW5pcXVlX3B0cjxJT1N1cmZh
Y2U+IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChjb25zdCBNYWNoU2VuZFJpZ2h0JiYg
c2VuZFJpZ2h0LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpCiB7CiAg
ICAgYXV0byBzdXJmYWNlID0gYWRvcHRDRihJT1N1cmZhY2VMb29rdXBGcm9tTWFjaFBvcnQoc2Vu
ZFJpZ2h0LnNlbmRSaWdodCgpKSk7CiAgICAgcmV0dXJuIElPU3VyZmFjZTo6Y3JlYXRlRnJvbVN1
cmZhY2Uoc3VyZmFjZS5nZXQoKSwgY29sb3JTcGFjZSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJ
T1N1cmZhY2U+IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVN1cmZhY2UoSU9TdXJmYWNlUmVmIHN1cmZh
Y2UsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKQorc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFj
ZT4gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU3VyZmFjZShJT1N1cmZhY2VSZWYgc3VyZmFjZSwgY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQogewogICAgIHJldHVybiBzdGQ6
OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPihuZXcgSU9TdXJmYWNlKHN1cmZhY2UsIGNvbG9yU3BhY2Up
KTsKIH0KQEAgLTk0LDcgKzk2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJm
YWNlOjpjcgogICAgIHNpemVfdCB3aWR0aCA9IENHSW1hZ2VHZXRXaWR0aChpbWFnZSk7CiAgICAg
c2l6ZV90IGhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpOwogCi0gICAgYXV0byBzdXJm
YWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgQ0dJbWFnZUdl
dENvbG9yU3BhY2UoaW1hZ2UpKTsKKyAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0
ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgeyBDR0ltYWdl
R2V0Q29sb3JTcGFjZShpbWFnZSkgfSk7CiAgICAgaWYgKCFzdXJmYWNlKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICBhdXRvIHN1cmZhY2VDb250ZXh0ID0gc3VyZmFjZS0+ZW5zdXJlUGxh
dGZvcm1Db250ZXh0KCk7CkBAIC0xMTYsNyArMTE4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElPU3Vy
ZmFjZT4gSU9TdXJmYWNlOjpjcgogICAgIGlmICghY29sb3JTcGFjZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICByZXR1cm4gY3JlYXRlRnJvbVN1cmZhY2Uoc3VyZmFjZSwgY29sb3JT
cGFjZSk7CisgICAgcmV0dXJuIGNyZWF0ZUZyb21TdXJmYWNlKHN1cmZhY2UsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZSB7IGNvbG9yU3BhY2UgfSk7CiB9CiAKIHZvaWQgSU9TdXJmYWNlOjptb3ZlVG9Q
b29sKHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+JiYgc3VyZmFjZSkKQEAgLTE5Niw3ICsxOTgs
NyBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5ICpvcHRpb25zRm9yMzJCaXRTdXJmCiAKIH0KIAotSU9T
dXJmYWNlOjpJT1N1cmZhY2UoSW50U2l6ZSBzaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBDR0Nv
bG9yU3BhY2VSZWYgY29sb3JTcGFjZSwgRm9ybWF0IGZvcm1hdCwgYm9vbCYgc3VjY2VzcykKK0lP
U3VyZmFjZTo6SU9TdXJmYWNlKEludFNpemUgc2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGb3JtYXQgZm9ybWF0LCBib29s
JiBzdWNjZXNzKQogICAgIDogbV9jb2xvclNwYWNlKGNvbG9yU3BhY2UpCiAgICAgLCBtX3NpemUo
c2l6ZSkKICAgICAsIG1fY29udGV4dFNpemUoY29udGV4dFNpemUpCkBAIC0yMzIsNyArMjM0LDcg
QEAgSU9TdXJmYWNlOjpJT1N1cmZhY2UoSW50U2l6ZSBzaXplLCBJbnRTaQogICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihMYXllcnMsICJJT1N1cmZhY2UgY3JlYXRpb24gZmFpbGVkIGZvciBzaXpl
OiAoJWQgJWQpIGFuZCBmb3JtYXQ6ICglZCkiLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCks
IGZvcm1hdCk7CiB9CiAKLUlPU3VyZmFjZTo6SU9TdXJmYWNlKElPU3VyZmFjZVJlZiBzdXJmYWNl
LCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSkKK0lPU3VyZmFjZTo6SU9TdXJmYWNlKElPU3Vy
ZmFjZVJlZiBzdXJmYWNlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2Up
CiAgICAgOiBtX2NvbG9yU3BhY2UoY29sb3JTcGFjZSkKICAgICAsIG1fc3VyZmFjZShzdXJmYWNl
KQogewpAQCAtMzQ3LDcgKzM0OSw3IEBAIENHQ29udGV4dFJlZiBJT1N1cmZhY2U6OmVuc3VyZVBs
YXRmb3JtQ28KICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAotICAgIG1fY2dDb250ZXh0ID0g
YWRvcHRDRihDR0lPU3VyZmFjZUNvbnRleHRDcmVhdGUobV9zdXJmYWNlLmdldCgpLCBtX2NvbnRl
eHRTaXplLndpZHRoKCksIG1fY29udGV4dFNpemUuaGVpZ2h0KCksIGJpdHNQZXJDb21wb25lbnQs
IGJpdHNQZXJQaXhlbCwgbV9jb2xvclNwYWNlLmdldCgpLCBiaXRtYXBJbmZvKSk7CisgICAgbV9j
Z0NvbnRleHQgPSBhZG9wdENGKENHSU9TdXJmYWNlQ29udGV4dENyZWF0ZShtX3N1cmZhY2UuZ2V0
KCksIG1fY29udGV4dFNpemUud2lkdGgoKSwgbV9jb250ZXh0U2l6ZS5oZWlnaHQoKSwgYml0c1Bl
ckNvbXBvbmVudCwgYml0c1BlclBpeGVsLCBtX2NvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNl
KCksIGJpdG1hcEluZm8pKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAoYXV0byBkaXNw
bGF5TWFzayA9IHByaW1hcnlPcGVuR0xEaXNwbGF5TWFzaygpKSB7CkBAIC01MTUsNyArNTE3LDcg
QEAgdm9pZCBJT1N1cmZhY2U6OnNldE93bmVyc2hpcElkZW50aXR5KHRhcwogCiB2b2lkIElPU3Vy
ZmFjZTo6bWlncmF0ZUNvbG9yU3BhY2VUb1Byb3BlcnRpZXMoKQogewotICAgIGF1dG8gY29sb3JT
cGFjZVByb3BlcnRpZXMgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNvcHlQcm9wZXJ0eUxpc3QobV9j
b2xvclNwYWNlLmdldCgpKSk7CisgICAgYXV0byBjb2xvclNwYWNlUHJvcGVydGllcyA9IGFkb3B0
Q0YoQ0dDb2xvclNwYWNlQ29weVByb3BlcnR5TGlzdChtX2NvbG9yU3BhY2UucGxhdGZvcm1Db2xv
clNwYWNlKCkpKTsKICAgICBJT1N1cmZhY2VTZXRWYWx1ZShtX3N1cmZhY2UuZ2V0KCksIGtJT1N1
cmZhY2VDb2xvclNwYWNlLCBjb2xvclNwYWNlUHJvcGVydGllcy5nZXQoKSk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RS
ZW5kZXJlckNvcmVJbWFnZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0JKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVp
bWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQkod29ya2luZyBjb3B5KQpAQCAt
Mjg5LDcgKzI4OSw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OnJlbmQK
ICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGF1dG8mIHN1cmZhY2UgPSBkb3duY2FzdDxBY2Nl
bGVyYXRlZEltYWdlQnVmZmVyPigqbV9vdXRwdXRJbWFnZUJ1ZmZlcikuc3VyZmFjZSgpOwotICAg
IFtzaGFyZWRDSUNvbnRleHQoKS5nZXQoKSByZW5kZXI6IG1fb3V0cHV0SW1hZ2UuZ2V0KCkgdG9J
T1N1cmZhY2U6IHN1cmZhY2Uuc3VyZmFjZSgpIGJvdW5kczpkZXN0UmVjdChsYXN0RWZmZWN0KSBj
b2xvclNwYWNlOmNhY2hlZENHQ29sb3JTcGFjZShsYXN0RWZmZWN0LnJlc3VsdENvbG9yU3BhY2Uo
KSldOworICAgIFtzaGFyZWRDSUNvbnRleHQoKS5nZXQoKSByZW5kZXI6IG1fb3V0cHV0SW1hZ2Uu
Z2V0KCkgdG9JT1N1cmZhY2U6IHN1cmZhY2Uuc3VyZmFjZSgpIGJvdW5kczpkZXN0UmVjdChsYXN0
RWZmZWN0KSBjb2xvclNwYWNlOmxhc3RFZmZlY3QucmVzdWx0Q29sb3JTcGFjZSgpLnBsYXRmb3Jt
Q29sb3JTcGFjZSgpXTsKIH0KICAgICAKIEZsb2F0UmVjdCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNv
cmVJbWFnZTo6ZGVzdFJlY3QoY29uc3QgRmlsdGVyRWZmZWN0JiBsYXN0RWZmZWN0KSBjb25zdApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3
IEBAIGNsYXNzIEltYWdlQnVmZmVyIDogcHVibGljIENvbmNyZXRlSW1hZ2UKICAgICB1c2luZyBC
YXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6YmFzZVRyYW5zZm9ybTsKIAogcHVibGljOgotICAgIHN0
YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVs
Rm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQorICAgIHN0YXRpYyBhdXRvIGNy
ZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1h
dCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKICAgICB7CiAgICAgICAgIHJldHVybiBC
YXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6dGVtcGxhdGUgY3JlYXRlPEltYWdlQnVmZmVyPihzaXpl
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBob3N0V2luZG93KTsK
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNw
cAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI4MSw3ICsyODEsNyBAQCB2b2lkIEl0ZW1IYW5kbGU6OmRlc3Ryb3koKQogICAgICAgICBnZXQ8
RmlsbFJvdW5kZWRSZWN0PigpLn5GaWxsUm91bmRlZFJlY3QoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIGNhc2UgSXRlbVR5cGU6OkdldFBpeGVsQnVmZmVyOgotICAgICAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxHZXRQaXhlbEJ1ZmZlcj46OnZhbHVlKTsK
KyAgICAgICAgZ2V0PEdldFBpeGVsQnVmZmVyPigpLn5HZXRQaXhlbEJ1ZmZlcigpOwogICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBJdGVtVHlwZTo6UHV0UGl4ZWxCdWZmZXI6CiAgICAgICAgIGdl
dDxQdXRQaXhlbEJ1ZmZlcj4oKS5+UHV0UGl4ZWxCdWZmZXIoKTsKQEAgLTMwNyw3ICszMDcsNyBA
QCB2b2lkIEl0ZW1IYW5kbGU6OmRlc3Ryb3koKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKICAg
ICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8QmVnaW5DbGlwVG9EcmF3
aW5nQ29tbWFuZHM+Ojp2YWx1ZSk7CisgICAgICAgIGdldDxCZWdpbkNsaXBUb0RyYXdpbmdDb21t
YW5kcz4oKS5+QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6CiAgICAgICAgIHN0YXRp
Y19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEJlZ2luVHJhbnNwYXJlbmN5
TGF5ZXI+Ojp2YWx1ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgJKHdvcmtpbmcgY29weSkKQEAgLTg4MCwyMyArODgw
LDU1IEBAIE9wdGlvbmFsPENsaXBQYXRoPiBDbGlwUGF0aDo6ZGVjb2RlKERlY28KIGNsYXNzIEJl
Z2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHBy
IEl0ZW1UeXBlIGl0ZW1UeXBlID0gSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSB0cnVlOworICAgIHN0
YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSBmYWxzZTsKICAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IGZhbHNlOwogCi0gICAgQmVnaW5DbGlwVG9EcmF3
aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xv
clNwYWNlIGNvbG9yU3BhY2UpCisgICAgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xv
clNwYWNlKQogICAgICAgICA6IG1fZGVzdGluYXRpb24oZGVzdGluYXRpb24pCiAgICAgICAgICwg
bV9jb2xvclNwYWNlKGNvbG9yU3BhY2UpCiAgICAgewogICAgIH0KIAorICAgIEJlZ2luQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYmIGNvbG9yU3BhY2UpCisgICAgICAgIDogbV9kZXN0aW5hdGlvbihkZXN0aW5h
dGlvbikKKyAgICAgICAgLCBtX2NvbG9yU3BhY2UoV1RGTW92ZShjb2xvclNwYWNlKSkKKyAgICB7
CisgICAgfQorCiAgICAgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fZGVzdGluYXRpb247IH0KLSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFj
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JTcGFjZTsgfQorICAgIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JTcGFjZTsgfQor
CisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxCZWdpbkNsaXBU
b0RyYXdpbmdDb21tYW5kcz4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKICAgICBGbG9h
dFJlY3QgbV9kZXN0aW5hdGlvbjsKICAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgbV9jb2xvclNw
YWNlOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgQmVnaW5DbGlwVG9EcmF3
aW5nQ29tbWFuZHM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29k
ZXIgPDwgbV9kZXN0aW5hdGlvbjsKKyAgICBlbmNvZGVyIDw8IG1fY29sb3JTcGFjZTsKK30KKwor
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzPiBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
Cit7CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBkZXN0aW5hdGlvbjsKKyAgICBkZWNvZGVyID4+
IGRlc3RpbmF0aW9uOworICAgIGlmICghZGVzdGluYXRpb24pCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3Bh
Y2U7CisgICAgZGVjb2RlciA+PiBjb2xvclNwYWNlOworICAgIGlmICghY29sb3JTcGFjZSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiB7eyAqZGVzdGluYXRpb24s
IFdURk1vdmUoKmNvbG9yU3BhY2UpIH19OworfQorCiBjbGFzcyBFbmRDbGlwVG9EcmF3aW5nQ29t
bWFuZHMgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUg
PSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOwpAQCAtMTkzOCwyMyArMTk3MCw1
NSBAQCBwcml2YXRlOgogY2xhc3MgR2V0UGl4ZWxCdWZmZXIgewogcHVibGljOgogICAgIHN0YXRp
YyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUgPSBJdGVtVHlwZTo6R2V0UGl4ZWxCdWZmZXI7
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9IHRydWU7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9IGZhbHNlOwogICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBpc0RyYXdpbmdJdGVtID0gZmFsc2U7CiAKLSAgICBHZXRQaXhlbEJ1ZmZlcihX
ZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1hdCBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIHNyY1JlY3QpCisgICAgR2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3Jt
YXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkKICAgICAgICAgOiBtX3Ny
Y1JlY3Qoc3JjUmVjdCkKICAgICAgICAgLCBtX291dHB1dEZvcm1hdChvdXRwdXRGb3JtYXQpCiAg
ICAgewogICAgIH0KIAotICAgIFBpeGVsQnVmZmVyRm9ybWF0IG91dHB1dEZvcm1hdCgpIGNvbnN0
IHsgcmV0dXJuIG1fb3V0cHV0Rm9ybWF0OyB9CisgICAgR2V0UGl4ZWxCdWZmZXIoUGl4ZWxCdWZm
ZXJGb3JtYXQmJiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpCisgICAgICAg
IDogbV9zcmNSZWN0KHNyY1JlY3QpCisgICAgICAgICwgbV9vdXRwdXRGb3JtYXQoV1RGTW92ZShv
dXRwdXRGb3JtYXQpKQorICAgIHsKKyAgICB9CisKKyAgICBjb25zdCBQaXhlbEJ1ZmZlckZvcm1h
dCYgb3V0cHV0Rm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9vdXRwdXRGb3JtYXQ7IH0KICAgICBJ
bnRSZWN0IHNyY1JlY3QoKSBjb25zdCB7IHJldHVybiBtX3NyY1JlY3Q7IH0KIAorICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8R2V0UGl4ZWxCdWZmZXI+IGRlY29k
ZShEZWNvZGVyJik7CisKIHByaXZhdGU6CiAgICAgSW50UmVjdCBtX3NyY1JlY3Q7CiAgICAgUGl4
ZWxCdWZmZXJGb3JtYXQgbV9vdXRwdXRGb3JtYXQ7CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPgordm9pZCBHZXRQaXhlbEJ1ZmZlcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
Cit7CisgICAgZW5jb2RlciA8PCBtX3NyY1JlY3Q7CisgICAgZW5jb2RlciA8PCBtX291dHB1dEZv
cm1hdDsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPEdldFBpeGVsQnVm
ZmVyPiBHZXRQaXhlbEJ1ZmZlcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0
aW9uYWw8SW50UmVjdD4gc3JjUmVjdDsKKyAgICBkZWNvZGVyID4+IHNyY1JlY3Q7CisgICAgaWYg
KCFzcmNSZWN0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8
UGl4ZWxCdWZmZXJGb3JtYXQ+IG91dHB1dEZvcm1hdDsKKyAgICBkZWNvZGVyID4+IG91dHB1dEZv
cm1hdDsKKyAgICBpZiAoIW91dHB1dEZvcm1hdCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgIHJldHVybiB7eyBXVEZNb3ZlKCpvdXRwdXRGb3JtYXQpLCAqc3JjUmVjdCB9fTsK
K30KKwogY2xhc3MgUHV0UGl4ZWxCdWZmZXIgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4
cHIgSXRlbVR5cGUgaXRlbVR5cGUgPSBJdGVtVHlwZTo6UHV0UGl4ZWxCdWZmZXI7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1Miw3ICs0NTIsNyBAQCB2b2lk
IFJlY29yZGVyOjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1CiAgICAgYXBwZW5kPENsaXBUb0lt
YWdlQnVmZmVyPihpbWFnZUJ1ZmZlci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgZGVz
dFJlY3QpOwogfQogCi12b2lkIFJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2Us
IEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKQordm9p
ZCBSZWNvcmRlcjo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgRnVuY3Rpb248
dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBkcmF3aW5nRnVuY3Rpb24pCiB7CiAgICAgR3JhcGhp
Y3NDb250ZXh0IG5lc3RlZENvbnRleHQoWyZdKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgewog
ICAgICAgICBhdXRvIGluaXRpYWxDbGlwID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgZGVzdGlu
YXRpb24uc2l6ZSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
aAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ3
LDcgKzE0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2lu
ZFJ1bGUpIG92ZXJyaWRlOwogICAgIEludFJlY3QgY2xpcEJvdW5kcygpIG92ZXJyaWRlOwogICAg
IHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBGbG9h
dFJlY3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZv
aWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY2xpcFRvRHJhd2lu
Z0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpIG92ZXJyaWRl
OwogI2lmIEVOQUJMRShWSURFTykKICAgICB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBs
YXllciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pIG92ZXJyaWRlOwogICAgIGJvb2wg
Y2FuUGFpbnRGcmFtZUZvck1lZGlhKGNvbnN0IE1lZGlhUGxheWVyJikgY29uc3Qgb3ZlcnJpZGU7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxh
Y2VtZW50TWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1h
cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgYm9vbCBGRURpc3BsYWNlbWVu
dE1hcDo6c2V0U2NhbGUoZmxvYXQgcwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEZFRGlz
cGxhY2VtZW50TWFwOjpzZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSkK
K3ZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OnNldFJlc3VsdENvbG9yU3BhY2UoY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJikKIHsKICAgICAvLyBTcGVjOiBUaGUgJ2NvbG9yLWludGVycG9sYXRp
b24tZmlsdGVycycgcHJvcGVydHkgb25seSBhcHBsaWVzIHRvIHRoZSAnaW4yJyBzb3VyY2UgaW1h
Z2UKICAgICAvLyBhbmQgZG9lcyBub3QgYXBwbHkgdG8gdGhlICdpbicgc291cmNlIGltYWdlLiBU
aGUgJ2luJyBzb3VyY2UgaW1hZ2UgbXVzdCByZW1haW4gaW4gaXRzCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3Bs
YWNlbWVudE1hcC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIGZsb2F0IHNjYWxlKCkgY29uc3QgeyByZXR1cm4g
bV9zY2FsZTsgfQogICAgIGJvb2wgc2V0U2NhbGUoZmxvYXQpOwogCi0gICAgdm9pZCBzZXRSZXN1
bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBz
ZXRSZXN1bHRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpIG92ZXJyaWRl
OwogICAgIHZvaWQgdHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShGaWx0ZXJFZmZlY3QqLCBjb25z
dCBpbnQpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmgJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0MCw4IEBAIHB1YmxpYzoKICNpZiAhVVNFKENHKQogICAg
IC8vIGZlRmxvb2QgZG9lcyBub3QgcGVyZm9ybSBjb2xvciBpbnRlcnBvbGF0aW9uIG9mIGFueSBr
aW5kLCBzbyB0aGUgcmVzdWx0IGlzIGFsd2F5cyBpbiB0aGUgY3VycmVudAogICAgIC8vIGNvbG9y
IHNwYWNlIHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVlIG9mIGNvbG9yLWludGVycG9sYXRpb24tZmls
dGVycy4KLSAgICB2b2lkIHNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNw
YWNlKSBvdmVycmlkZSB7IEZpbHRlckVmZmVjdDo6c2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IpOyB9Ci0gICAgdm9pZCBzZXRSZXN1bHRDb2xvclNwYWNlKERl
c3RpbmF0aW9uQ29sb3JTcGFjZSkgb3ZlcnJpZGUgeyBGaWx0ZXJFZmZlY3Q6OnNldFJlc3VsdENv
bG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsgfQorICAgIHZvaWQgc2V0T3Bl
cmF0aW5nQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKSBvdmVycmlkZSB7
IEZpbHRlckVmZmVjdDo6c2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSk7IH0KKyAgICB2b2lkIHNldFJlc3VsdENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJikgb3ZlcnJpZGUgeyBGaWx0ZXJFZmZlY3Q6OnNldFJlc3VsdENvbG9yU3Bh
Y2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFVGlsZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQs
NyBAQCB2b2lkIEZFVGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgdGlsZVJl
Y3Quc2NhbGUoZmlsdGVyLmZpbHRlclJlc29sdXRpb24oKS53aWR0aCgpLCBmaWx0ZXIuZmlsdGVy
UmVzb2x1dGlvbigpLmhlaWdodCgpKTsKICAgICB9CiAKLSAgICBhdXRvIHRpbGVJbWFnZSA9IFNW
R1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHRpbGVSZWN0LCB0aWxlUmVjdCwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBmaWx0ZXIoKS5yZW5kZXJpbmdNb2RlKCkpOwor
ICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZm
ZXIodGlsZVJlY3QsIHRpbGVSZWN0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgZmls
dGVyKCkucmVuZGVyaW5nTW9kZSgpKTsKICAgICBpZiAoIXRpbGVJbWFnZSkKICAgICAgICAgcmV0
dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckVmZmVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQzOSw3ICs0MzksNyBAQCBzdGF0aWMgdm9pZCBjb3B5VW5wcmVtdWx0
aXBseWluZ0FscGhhKGNvCiAjZW5kaWYKIH0KIAotT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEZpbHRl
ckVmZmVjdDo6Y29udmVydFBpeGVsQnVmZmVyVG9Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JT
cGFjZSB0YXJnZXRDb2xvclNwYWNlLCBQaXhlbEJ1ZmZlciYgcGl4ZWxCdWZmZXIpCitPcHRpb25h
bDxQaXhlbEJ1ZmZlcj4gRmlsdGVyRWZmZWN0Ojpjb252ZXJ0UGl4ZWxCdWZmZXJUb0NvbG9yU3Bh
Y2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiB0YXJnZXRDb2xvclNwYWNlLCBQaXhlbEJ1
ZmZlciYgcGl4ZWxCdWZmZXIpCiB7CiAgICAgLy8gRklYTUU6IFVzaW5nIGFuIEltYWdlQnVmZmVy
IHRvIHBlcmZvcm0gdGhlIGNvbG9yIHNwYWNlIGNvbnZlcnNpb24gaXMgdW5uZWNlc3NhcnkuIFdl
IGNhbiBkbyBpdCBkaXJlY3RseS4KIApAQCAtNDU0LDcgKzQ1NCw3IEBAIE9wdGlvbmFsPFBpeGVs
QnVmZmVyPiBGaWx0ZXJFZmZlY3Q6OmNvbnYKICAgICByZXR1cm4gY29udmVydEltYWdlQnVmZmVy
VG9Db2xvclNwYWNlKHRhcmdldENvbG9yU3BhY2UsICpidWZmZXIsIGRlc3RpbmF0aW9uUmVjdCwg
cGl4ZWxCdWZmZXIuZm9ybWF0KCkuYWxwaGFGb3JtYXQpOwogfQogCi1PcHRpb25hbDxQaXhlbEJ1
ZmZlcj4gRmlsdGVyRWZmZWN0Ojpjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UoRGVzdGlu
YXRpb25Db2xvclNwYWNlIHRhcmdldENvbG9yU3BhY2UsIEltYWdlQnVmZmVyJiBpbnB1dEJ1ZmZl
ciwgY29uc3QgSW50UmVjdCYgcmVjdCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRBbHBo
YUZvcm1hdCkKK09wdGlvbmFsPFBpeGVsQnVmZmVyPiBGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRJbWFn
ZUJ1ZmZlclRvQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHRhcmdldENv
bG9yU3BhY2UsIEltYWdlQnVmZmVyJiBpbnB1dEJ1ZmZlciwgY29uc3QgSW50UmVjdCYgcmVjdCwg
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRBbHBoYUZvcm1hdCkKIHsKICAgICAvLyBGSVhN
RTogVGhpcyBjYW4gYmUgZG9uZSBtb3JlIGRpcmVjdGx5IHVzaW5nIFBpeGVsQnVmZmVyQ29udmVy
c2lvbi4KIApAQCAtNDcyLDcgKzQ3Miw3IEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBGaWx0ZXJF
ZmZlY3Q6OmNvbnYKICAgICByZXR1cm4gY29udmVydGVkQnVmZmVyLT5nZXRQaXhlbEJ1ZmZlcihm
b3JtYXQsIHJlY3QpOwogfQogCi12b2lkIEZpbHRlckVmZmVjdDo6Y29weUNvbnZlcnRlZEltYWdl
QnVmZmVyVG9EZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1
dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEZpbHRlckVmZmVjdDo6Y29w
eUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYgZGVz
dGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQog
ewogICAgIC8vIENvbnZlcnRzIHRoZSBkYXRhIHN0b3JlZCBpbiBtX2ltYWdlQnVmZmVyUmVzdWx0
LCBhbmQgc2F2ZSB0byBkZXN0aW5hdGlvbgogICAgIGF1dG8gY29udmVydGVkUGl4ZWxCdWZmZXIg
PSBjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UoY29sb3JTcGFjZSwgKm1faW1hZ2VCdWZm
ZXJSZXN1bHQsIHsgSW50UG9pbnQoKSwgbV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkgfSwgb3V0
cHV0Rm9ybWF0KTsKQEAgLTQ4MSw3ICs0ODEsNyBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weUNv
bnZlcnRlZEltYWdlQnVmCiAgICAgY29weUltYWdlQnl0ZXMoY29udmVydGVkUGl4ZWxCdWZmZXIt
PmRhdGEoKSwgZGVzdGluYXRpb24sIGRlc3RSZWN0KTsKIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3Q6
OmNvcHlDb252ZXJ0ZWRQaXhlbEJ1ZmZlclRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkm
IGRlc3RpbmF0aW9uLCBQaXhlbEJ1ZmZlciYgcGl4ZWxCdWZmZXIsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSBjb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgRmlsdGVyRWZm
ZWN0Ojpjb3B5Q29udmVydGVkUGl4ZWxCdWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFy
cmF5JiBkZXN0aW5hdGlvbiwgUGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyLCBjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewog
ICAgIC8vIENvbnZlcnRzIHRoZSBkYXRhIHN0b3JlZCBpbiBtX3VubXVsdGlwbGllZEltYWdlUmVz
dWx0L21fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0LAogICAgIC8vIHdoaWNoZXZlciBpc24ndCBu
dWxsLCBhbmQgc2F2ZSB0byBkZXN0aW5hdGlvbgpAQCAtNjI4LDcgKzYyOCw3IEBAIGJvb2wgRmls
dGVyRWZmZWN0OjpyZXF1aXJlc1BpeGVsQnVmZmVyQ28KICAgICAvLyBUaGlzIGZ1bmN0aW9uIGRl
dGVybWluZXMgd2hldGhlciB3ZSBuZWVkIHRoZSBzdGVwIG9mIGFuIGV4dHJhIGNvbG9yIHNwYWNl
IGNvbnZlcnNpb24KICAgICAvLyBXZSBvbmx5IG5lZWQgZXh0cmEgY29sb3IgY29udmVyc2lvbiB3
aGVuIDEpIGNvbG9yIHNwYWNlIGlzIGRpZmZlcmVudCBpbiB0aGUgaW5wdXQKICAgICAvLyBBTkQg
MikgdGhlIGZpbHRlciBpcyBtYW5pcHVsYXRpbmcgcmF3IHBpeGVscwotICAgIHJldHVybiBkZXN0
aW5hdGlvbkNvbG9yU3BhY2UgJiYgcmVzdWx0Q29sb3JTcGFjZSgpICE9ICpkZXN0aW5hdGlvbkNv
bG9yU3BhY2U7CisgICAgcmV0dXJuIHJlc3VsdENvbG9yU3BhY2UoKSAhPSBkZXN0aW5hdGlvbkNv
bG9yU3BhY2U7CiAjZWxzZQogICAgIC8vIEFkZGl0aW9uYWwgY29sb3Igc3BhY2UgY29udmVyc2lv
biBpcyBub3QgbmVlZGVkIG9uIG5vbi1DRwogICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvbkNv
bG9yU3BhY2UpOwpAQCAtNjM2LDcgKzYzNiw3IEBAIGJvb2wgRmlsdGVyRWZmZWN0OjpyZXF1aXJl
c1BpeGVsQnVmZmVyQ28KICNlbmRpZgogfQogCi12b2lkIEZpbHRlckVmZmVjdDo6dHJhbnNmb3Jt
UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UgZGVzdGluYXRpb25Db2xvclNw
YWNlKQordm9pZCBGaWx0ZXJFZmZlY3Q6OnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBkZXN0aW5hdGlvbkNvbG9yU3BhY2UpCiB7CiAjaWYgVVNF
KENHKQogICAgIC8vIENHIGhhbmRsZXMgY29sb3Igc3BhY2UgYWRqdXN0bWVudHMgaW50ZXJuYWxs
eS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RWZmZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMjMsNyArMjMsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBbHBoYVByZW11
bHRpcGxpY2F0aW9uLmgiCi0jaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgIkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIklu
dFJlY3QuaCIKICNpbmNsdWRlICJJbnRSZWN0RXh0ZW50LmgiCkBAIC0xNjUsMTMgKzE2NSwxMyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBjbGlwc1RvQm91bmRzKCkgY29uc3QgeyByZXR1cm4gbV9jbGlw
c1RvQm91bmRzOyB9CiAgICAgdm9pZCBzZXRDbGlwc1RvQm91bmRzKGJvb2wgdmFsdWUpIHsgbV9j
bGlwc1RvQm91bmRzID0gdmFsdWU7IH0KIAotICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBvcGVy
YXRpbmdDb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYXRpbmdDb2xvclNwYWNlOyB9
Ci0gICAgdmlydHVhbCB2b2lkIHNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xv
clNwYWNlIGNvbG9yU3BhY2UpIHsgbV9vcGVyYXRpbmdDb2xvclNwYWNlID0gY29sb3JTcGFjZTsg
fQotICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSByZXN1bHRDb2xvclNwYWNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXN1bHRDb2xvclNwYWNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFJlc3VsdENv
bG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpIHsgbV9yZXN1bHRDb2xv
clNwYWNlID0gY29sb3JTcGFjZTsgfQorICAgIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYg
b3BlcmF0aW5nQ29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW5nQ29sb3JTcGFj
ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRPcGVyYXRpbmdDb2xvclNwYWNlKGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkgeyBtX29wZXJhdGluZ0NvbG9yU3BhY2UgPSBj
b2xvclNwYWNlOyB9CisgICAgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiByZXN1bHRDb2xv
clNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bHRDb2xvclNwYWNlOyB9CisgICAgdmlydHVh
bCB2b2lkIHNldFJlc3VsdENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBj
b2xvclNwYWNlKSB7IG1fcmVzdWx0Q29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCB0cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKEZpbHRlckVmZmVjdCogaW4sIGNv
bnN0IGludCkgeyBpbi0+dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShtX29wZXJhdGluZ0NvbG9y
U3BhY2UpOyB9Ci0gICAgdm9pZCB0cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9u
Q29sb3JTcGFjZSk7CisgICAgdm9pZCB0cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKGNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYpOwogICAgIAogICAgIHN0YXRpYyBWZWN0b3I8ZmxvYXQ+IG5v
cm1hbGl6ZWRGbG9hdHMoY29uc3QgVmVjdG9yPGZsb2F0PiYgdmFsdWVzKQogICAgIHsKQEAgLTIw
MywxMSArMjAzLDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSgpID0gMDsKIAogICAgIHZvaWQgY29weUltYWdlQnl0ZXMoY29uc3QgVWludDhDbGFt
cGVkQXJyYXkmIHNvdXJjZSwgVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdCBJ
bnRSZWN0JikgY29uc3Q7Ci0gICAgdm9pZCBjb3B5Q29udmVydGVkSW1hZ2VCdWZmZXJUb0Rlc3Rp
bmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdm9pZCBjb3B5Q29udmVydGVk
UGl4ZWxCdWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiwgUGl4ZWxCdWZmZXIm
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2b2lkIGNvcHlD
b252ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmLCBjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uLCBjb25zdCBJ
bnRSZWN0Jik7CisgICAgdm9pZCBjb3B5Q29udmVydGVkUGl4ZWxCdWZmZXJUb0Rlc3RpbmF0aW9u
KFVpbnQ4Q2xhbXBlZEFycmF5JiwgUGl4ZWxCdWZmZXImLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgYm9vbCByZXF1aXJlc1BpeGVsQnVmZmVyQ29s
b3JTcGFjZUNvbnZlcnNpb24oT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPik7Ci0gICAg
T3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZShEZXN0
aW5hdGlvbkNvbG9yU3BhY2UsIEltYWdlQnVmZmVyJiwgY29uc3QgSW50UmVjdCYsIEFscGhhUHJl
bXVsdGlwbGljYXRpb24pOwotICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBjb252ZXJ0UGl4ZWxC
dWZmZXJUb0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlLCBQaXhlbEJ1ZmZlciYpOwor
ICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2Uo
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgSW1hZ2VCdWZmZXImLCBjb25zdCBJbnRSZWN0
JiwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbik7CisgICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGNv
bnZlcnRQaXhlbEJ1ZmZlclRvQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
LCBQaXhlbEJ1ZmZlciYpOwogICAgIAogCiAgICAgRmlsdGVyJiBtX2ZpbHRlcjsKQEAgLTI0NCwx
MyArMjQ0LDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NsaXBzVG9Cb3VuZHMgeyB0cnVlIH07
CiAKICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAg
c3RhdGljIGNvbnN0ZXhwciBhdXRvIGRlZmF1bHRPcGVyYXRpbmdDb2xvclNwYWNlID0gRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCOworICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBt
X29wZXJhdGluZ0NvbG9yU3BhY2UgeyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0Io
KSB9OwogI2Vsc2UKLSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZGVmYXVsdE9wZXJhdGluZ0Nv
bG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I7CisgICAgRGVzdGluYXRpb25D
b2xvclNwYWNlIG1fb3BlcmF0aW5nQ29sb3JTcGFjZSB7IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpIH07CiAjZW5kaWYKLQotICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBtX29wZXJhdGlu
Z0NvbG9yU3BhY2UgeyBkZWZhdWx0T3BlcmF0aW5nQ29sb3JTcGFjZSB9OwotICAgIERlc3RpbmF0
aW9uQ29sb3JTcGFjZSBtX3Jlc3VsdENvbG9yU3BhY2UgeyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IgfTsKKyAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgbV9yZXN1bHRDb2xvclNwYWNlIHsg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsKICAgICAKICAgICBjb25zdCBUeXBlIG1f
ZmlsdGVyRWZmZWN0Q2xhc3NUeXBlOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nv
dXJjZUdyYXBoaWMuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBwcml2YXRlOgog
ICAgIFNvdXJjZUdyYXBoaWMoRmlsdGVyJiBmaWx0ZXIpCiAgICAgICAgIDogRmlsdGVyRWZmZWN0
KGZpbHRlciwgVHlwZTo6U291cmNlR3JhcGhpYykKICAgICB7Ci0gICAgICAgIHNldE9wZXJhdGlu
Z0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKKyAgICAgICAgc2V0T3Bl
cmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgfQog
CiAgICAgY29uc3QgY2hhciogZmlsdGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJTb3Vy
Y2VHcmFwaGljIjsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS90ZXhtYXAvTmljb3NpYUdDR0xMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDR0xMYXllci5j
cHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L25pY29zaWEvdGV4bWFwL05pY29zaWFHQ0dMTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
MSw3ICs4MSw3IEBAIHZvaWQgR0NHTExheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKICAgICBJ
bnRTaXplIHRleHR1cmVTaXplKG1fY29udGV4dC5tX2N1cnJlbnRXaWR0aCwgbV9jb250ZXh0Lm1f
Y3VycmVudEhlaWdodCk7CiAgICAgVGV4dHVyZU1hcHBlckdMOjpGbGFncyBmbGFncyA9IG1fY29u
dGV4dC5jb250ZXh0QXR0cmlidXRlcygpLmFscGhhID8gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRC
bGVuZCA6IDA7CiAjaWYgVVNFKEFOR0xFKQotICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZl
cj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRleHR1cmVTaXplLCBSZW5kZXJp
bmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBp
eGVsRm9ybWF0OjpCR1JBOCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBpbWFn
ZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGV4dHVyZVNpemUsIFJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2
Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIHsKLSAgICBQ
aXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11
bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
IH07CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlv
bjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpIH07CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlD
cmVhdGUoZm9ybWF0LCBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpKTsKICAgICBpZiAoIXBp
eGVsQnVmZmVyKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMRVMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWwKIAogT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIHsKLSAgICBQ
aXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11
bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
IH07CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlv
bjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpIH07CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlD
cmVhdGUoZm9ybWF0LCBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpKTsKICAgICBpZiAoIXBp
eGVsQnVmZmVyKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0
dXJlLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICsz
OCw3IEBAIHZvaWQgQml0bWFwVGV4dHVyZTo6dXBkYXRlQ29udGVudHMoR3JhcGgKIHsKICAgICAv
LyBNYWtpbmcgYW4gdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQgYnVmZmVyIGhlcmUgaXMg
T0sgYmVjYXVzZSB0aGlzIGNvZGUKICAgICAvLyBpc24ndCB1c2VkIGJ5IGFueSBwbGF0Zm9ybXMg
dGhhdCByZXNwZWN0IHRoZSBhY2NlbGVyYXRlZCBiaXQuCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGUodGFyZ2V0UmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVu
YWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6
OkJHUkE4KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0YXJn
ZXRSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFpbWFn
ZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IE1p
Y2hhZWwgRW1tZWwgbWlrZS5lbW1lbEBnbWFpbC5jb20KICAqIENvcHlyaWdodCAoQykgMjAwOCBD
aHJpc3RpYW4gRHl3YW4gPGNocmlzdGlhbkBpbWVuZGlvLmNvbT4KICAqIENvcHlyaWdodCAoQykg
MjAwOCBDb2xsYWJvcmEgTHRkLgpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNv
bG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcu
aCIKICNpbmNsdWRlICJHdGtVdGlsaXRpZXMuaCIKQEAgLTg1LDYgKzg2LDExIEBAIGJvb2wgc2Ny
ZWVuSXNNb25vY2hyb21lKFdpZGdldCogd2lkZ2V0KQogICAgIHJldHVybiBzY3JlZW5EZXB0aCh3
aWRnZXQpIDwgMjsKIH0KIAorRGVzdGluYXRpb25Db2xvclNwYWNlIHNjcmVlbkNvbG9yU3BhY2Uo
V2lkZ2V0KikKK3sKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7Cit9
CisKIGJvb2wgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMoKQogewogICAgIHJldHVybiBmYWxzZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNjcmVlbklPUy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5J
T1MubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
bGF0Zm9ybVNjcmVlbklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMTQgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg4LDkgKzg4LDkgQEAg
Ym9vbCBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UoV2lkZwogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotQ0dDb2xvclNwYWNlUmVmIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KiB3aWRnZXQp
CitEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqIHdpZGdldCkK
IHsKLSAgICByZXR1cm4gc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKHdpZGdldCkgPyBleHRl
bmRlZFNSR0JDb2xvclNwYWNlUmVmKCkgOiBzUkdCQ29sb3JTcGFjZVJlZigpOworICAgIHJldHVy
biBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3Iod2lkZ2V0KSA/IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSB7IGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKSB9IDogRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCk7CiB9CiAKIC8vIFRoZXNlIGZ1bmN0aW9ucyBzY2FsZSBiZXR3ZWVuIHNjcmVl
biBhbmQgcGFnZSBjb29yZGluYXRlcyBiZWNhdXNlIEphdmFTY3JpcHQvRE9NIG9wZXJhdGlvbnMK
QEAgLTE5MywxNiArMTkzLDE0IEBAIFNjcmVlblByb3BlcnRpZXMgY29sbGVjdFNjcmVlblByb3Bl
cnRpZXMKICAgICAgICAgRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QgPSBzY3JlZW4uYm91
bmRzOwogICAgICAgICBzY3JlZW5BdmFpbGFibGVSZWN0LnNldFkoTlNNYXhZKHNjcmVlbi5ib3Vu
ZHMpIC0gKHNjcmVlbkF2YWlsYWJsZVJlY3QueSgpICsgc2NyZWVuQXZhaWxhYmxlUmVjdC5oZWln
aHQoKSkpOyAvLyBmbGlwCiAgICAgICAgIEZsb2F0UmVjdCBzY3JlZW5SZWN0ID0gc2NyZWVuLl9y
ZWZlcmVuY2VCb3VuZHM7Ci0gICAgICAgIAotICAgICAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNl
UmVmPiBjb2xvclNwYWNlID0gc2NyZWVuQ29sb3JTcGFjZShudWxscHRyKTsKLSAgICAgICAgCisg
ICAgICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlIHsgc2NyZWVuQ29sb3JTcGFj
ZShudWxscHRyKSB9OwogICAgICAgICBpbnQgc2NyZWVuRGVwdGggPSBXZWJDb3JlOjpzY3JlZW5E
ZXB0aChudWxscHRyKTsKICAgICAgICAgaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50ID0gV2Vi
Q29yZTo6c2NyZWVuRGVwdGhQZXJDb21wb25lbnQobnVsbHB0cik7CiAgICAgICAgIGJvb2wgc2Ny
ZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yID0gV2ViQ29yZTo6c2NyZWVuU3VwcG9ydHNFeHRlbmRl
ZENvbG9yKG51bGxwdHIpOwogICAgICAgICBib29sIHNjcmVlbkhhc0ludmVydGVkQ29sb3JzID0g
V2ViQ29yZTo6c2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMoKTsKICAgICAgICAgZmxvYXQgc2NhbGVG
YWN0b3IgPSBXZWJDb3JlOjpzY3JlZW5QUElGYWN0b3IoKTsKIAotICAgICAgICBzY3JlZW5Qcm9w
ZXJ0aWVzLnNjcmVlbkRhdGFNYXAuc2V0KCsrZGlzcGxheUlELCBTY3JlZW5EYXRhIHsgc2NyZWVu
QXZhaWxhYmxlUmVjdCwgc2NyZWVuUmVjdCwgY29sb3JTcGFjZSwgc2NyZWVuRGVwdGgsIHNjcmVl
bkRlcHRoUGVyQ29tcG9uZW50LCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IsIHNjcmVlbkhh
c0ludmVydGVkQ29sb3JzLCBmYWxzZSwgc2NhbGVGYWN0b3IgfSk7CisgICAgICAgIHNjcmVlblBy
b3BlcnRpZXMuc2NyZWVuRGF0YU1hcC5zZXQoKytkaXNwbGF5SUQsIFNjcmVlbkRhdGEgeyBzY3Jl
ZW5BdmFpbGFibGVSZWN0LCBzY3JlZW5SZWN0LCBXVEZNb3ZlKGNvbG9yU3BhY2UpLCBzY3JlZW5E
ZXB0aCwgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQsIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xv
ciwgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMsIGZhbHNlLCBzY2FsZUZhY3RvciB9KTsKICAgICAg
ICAgCiAgICAgICAgIGlmIChzY3JlZW4gPT0gW1BBTDo6Z2V0VUlTY3JlZW5DbGFzcygpIG1haW5T
Y3JlZW5dKQogICAgICAgICAgICAgc2NyZWVuUHJvcGVydGllcy5wcmltYXJ5RGlzcGxheUlEID0g
ZGlzcGxheUlEOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2Ny
ZWVuTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0
Zm9ybVNjcmVlbk1hYy5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsOSAr
MTMwLDcgQEAgU2NyZWVuUHJvcGVydGllcyBjb2xsZWN0U2NyZWVuUHJvcGVydGllcwogICAgICAg
ICBGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxlUmVjdCA9IHNjcmVlbi52aXNpYmxlRnJhbWU7CiAg
ICAgICAgIHNjcmVlbkF2YWlsYWJsZVJlY3Quc2V0WShOU01heFkoc2NyZWVuLmZyYW1lKSAtIChz
Y3JlZW5BdmFpbGFibGVSZWN0LnkoKSArIHNjcmVlbkF2YWlsYWJsZVJlY3QuaGVpZ2h0KCkpKTsg
Ly8gZmxpcAogICAgICAgICBGbG9hdFJlY3Qgc2NyZWVuUmVjdCA9IHNjcmVlbi5mcmFtZTsKLQot
ICAgICAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNlID0gc2NyZWVuLmNv
bG9yU3BhY2UuQ0dDb2xvclNwYWNlOwotCisgICAgICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBj
b2xvclNwYWNlIHsgc2NyZWVuLmNvbG9yU3BhY2UuQ0dDb2xvclNwYWNlIH07CiAgICAgICAgIGlu
dCBzY3JlZW5EZXB0aCA9IE5TQml0c1BlclBpeGVsRnJvbURlcHRoKHNjcmVlbi5kZXB0aCk7CiAg
ICAgICAgIGludCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCA9IE5TQml0c1BlclNhbXBsZUZyb21E
ZXB0aChzY3JlZW4uZGVwdGgpOwogICAgICAgICBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRD
b2xvciA9IFtzY3JlZW4gY2FuUmVwcmVzZW50RGlzcGxheUdhbXV0Ok5TRGlzcGxheUdhbXV0UDNd
OwpAQCAtMTYzLDcgKzE2MSw3IEBAIFNjcmVlblByb3BlcnRpZXMgY29sbGVjdFNjcmVlblByb3Bl
cnRpZXMKICAgICAgICAgaWYgKGRpc3BsYXlNYXNrKQogICAgICAgICAgICAgZ3B1SUQgPSBncHVJ
REZvckRpc3BsYXlNYXNrKGRpc3BsYXlNYXNrKTsKIAotICAgICAgICBzY3JlZW5Qcm9wZXJ0aWVz
LnNjcmVlbkRhdGFNYXAuc2V0KGRpc3BsYXlJRCwgU2NyZWVuRGF0YSB7IHNjcmVlbkF2YWlsYWJs
ZVJlY3QsIHNjcmVlblJlY3QsIGNvbG9yU3BhY2UsIHNjcmVlbkRlcHRoLCBzY3JlZW5EZXB0aFBl
ckNvbXBvbmVudCwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yLCBzY3JlZW5IYXNJbnZlcnRl
ZENvbG9ycywgc2NyZWVuU3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlLCBzY3JlZW5Jc01vbm9jaHJv
bWUsIGRpc3BsYXlNYXNrLCBncHVJRCwgZHluYW1pY1JhbmdlTW9kZSwgc2NhbGVGYWN0b3IgfSk7
CisgICAgICAgIHNjcmVlblByb3BlcnRpZXMuc2NyZWVuRGF0YU1hcC5zZXQoZGlzcGxheUlELCBT
Y3JlZW5EYXRhIHsgc2NyZWVuQXZhaWxhYmxlUmVjdCwgc2NyZWVuUmVjdCwgV1RGTW92ZShjb2xv
clNwYWNlKSwgc2NyZWVuRGVwdGgsIHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50LCBzY3JlZW5TdXBw
b3J0c0V4dGVuZGVkQ29sb3IsIHNjcmVlbkhhc0ludmVydGVkQ29sb3JzLCBzY3JlZW5TdXBwb3J0
c0hpZ2hEeW5hbWljUmFuZ2UsIHNjcmVlbklzTW9ub2Nocm9tZSwgZGlzcGxheU1hc2ssIGdwdUlE
LCBkeW5hbWljUmFuZ2VNb2RlLCBzY2FsZUZhY3RvciB9KTsKIAogICAgICAgICBpZiAoIXNjcmVl
blByb3BlcnRpZXMucHJpbWFyeURpc3BsYXlJRCkKICAgICAgICAgICAgIHNjcmVlblByb3BlcnRp
ZXMucHJpbWFyeURpc3BsYXlJRCA9IGRpc3BsYXlJRDsKQEAgLTM0MCwxMyArMzM4LDEzIEBAIE5T
U2NyZWVuICpzY3JlZW4oUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGwKICAgICByZXR1cm4gZmlyc3RT
Y3JlZW4oKTsKIH0KIAotQ0dDb2xvclNwYWNlUmVmIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KiB3
aWRnZXQpCitEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqIHdp
ZGdldCkKIHsKICAgICBpZiAoYXV0byBkYXRhID0gc2NyZWVuUHJvcGVydGllcyh3aWRnZXQpKQot
ICAgICAgICByZXR1cm4gZGF0YS0+Y29sb3JTcGFjZS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIGRh
dGEtPmNvbG9yU3BhY2U7CiAKICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNz
UHJpdmlsZWdlOjpDYW5Db21tdW5pY2F0ZVdpdGhXaW5kb3dTZXJ2ZXIpKTsKLSAgICByZXR1cm4g
c2NyZWVuKHdpZGdldCkuY29sb3JTcGFjZS5DR0NvbG9yU3BhY2U7CisgICAgcmV0dXJuIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSB7IHNjcmVlbih3aWRnZXQpLmNvbG9yU3BhY2UuQ0dDb2xvclNwYWNl
IH07CiB9CiAKIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKFdpZGdldCogd2lkZ2V0
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MjYsNyArNzI2LDcgQEAgYm9vbCBUaGVtZU1hYzo6ZHJhd0NlbGxPckZv
Y3VzUmluZ1dpdGhWaQogCiAgICAgaWYgKHVzZUltYWdlQnVmZmVyKSB7CiAgICAgICAgIE5TUmVj
dCBpbWFnZUJ1ZmZlckRyYXdSZWN0ID0gTlNSZWN0KEZsb2F0UmVjdChidXR0b25Gb2N1c1JlY3RP
dXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgcmVjdC53aWR0aCgpLCBy
ZWN0LmhlaWdodCgpKSk7Ci0gICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihyZWN0LnNpemUoKSArIDIgKiBGbG9hdFNpemUoYnV0dG9u
Rm9jdXNSZWN0T3V0bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgpLCBkZXZp
Y2VTY2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBjb250ZXh0KTsKKyAg
ICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVm
ZmVyKHJlY3Quc2l6ZSgpICsgMiAqIEZsb2F0U2l6ZShidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lk
dGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCksIGRldmljZVNjYWxlRmFjdG9yLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY29udGV4dCk7CiAgICAgICAgIGlmICghaW1hZ2VC
dWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gbmVlZHNSZXBhaW50OwogICAgICAgICB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdT
dHJlYW1lci5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZUdTdHJlYW1lcjo6dQogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIo
eyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpC
R1JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH0sIHsgeyB9LCBpbWFnZUJ1ZmZlci0+
bG9naWNhbFNpemUoKSB9KTsKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gaW1hZ2VCdWZmZXItPmdl
dFBpeGVsQnVmZmVyKHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQ
aXhlbEZvcm1hdDo6QkdSQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH0sIHsgeyB9
LCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSB9KTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQog
ICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU0LDcgKzQ1NCw3IEBAIEltYWdlQnVmZmVyKiBNb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZTo6aW0KICAgICBpZiAobV9pbWFnZUJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIG1faW1hZ2VCdWZmZXIuZ2V0KCk7CiAKLSAgICBtX2ltYWdlQnVmZmVyID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShjYXB0dXJlU2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
LCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7Cisg
ICAgbV9pbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2FwdHVyZVNpemUoKSwgUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFtX2ltYWdlQnVmZmVyKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcGxheXN0
YXRpb24vUGxhdGZvcm1TY3JlZW5QbGF5U3RhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vcGxheXN0YXRpb24vUGxhdGZvcm1TY3JlZW5QbGF5U3RhdGlvbi5j
cHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3BsYXlzdGF0
aW9uL1BsYXRmb3JtU2NyZWVuUGxheVN0YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2
ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4u
aCIKIAorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0
UmVjdC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKQEAgLTcxLDQgKzcyLDkgQEAg
Ym9vbCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IoV2lkZ2V0KgogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAorRGVzdGluYXRpb25Db2xvclNwYWNlIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KikK
K3sKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QbGF0
Zm9ybVNjcmVlbldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1BsYXRmb3JtU2NyZWVuV2luLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1BsYXRmb3JtU2NyZWVuV2luLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
U2NyZWVuLmgiCiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRl
ICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5o
IgpAQCAtMTA0LDEyICsxMDUsMTAgQEAgRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QoV2lk
Z2V0KiB3aQogICAgIHJldHVybiBtb25pdG9ySW5mby5yY1dvcms7CiB9CiAKLSNpZiBVU0UoQ0cp
Ci1DR0NvbG9yU3BhY2VSZWYgc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqKQorRGVzdGluYXRpb25D
b2xvclNwYWNlIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KikKIHsKLSAgICByZXR1cm4gc1JHQkNv
bG9yU3BhY2VSZWYoKTsKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7
CiB9Ci0jZW5kaWYKIAogYm9vbCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IoV2lkZ2V0KikK
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dwZS9QbGF0Zm9ybVNjcmVlbldQRS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3BlL1BsYXRmb3JtU2Ny
ZWVuV1BFLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d3BlL1BsYXRmb3JtU2NyZWVuV1BFLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAKKyNp
bmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIK
ICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIldpZGdldC5oIgpAQCAtODEs
NiArODIsMTEgQEAgRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QoV2lkZ2V0KiB3aQogICAg
IHJldHVybiBzY3JlZW5SZWN0KHdpZGdldCk7CiB9CiAKK0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBz
Y3JlZW5Db2xvclNwYWNlKFdpZGdldCopCit7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpOworfQorCiBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcihXaWRn
ZXQqKQogewogICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3hyL1BsYXRmb3JtWFIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94
ci9QbGF0Zm9ybVhSLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3hyL1BsYXRmb3JtWFIuaAkod29ya2luZyBjb3B5KQpAQCAtMTgsNiArMTgsNyBAQAogICov
CiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2lu
Y2x1ZGUgIkZsb2F0UG9pbnQzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgogI2lu
Y2x1ZGUgIkludFJlY3QuaCIKQEAgLTMyLDggKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNl
Q0cuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0lPU3VyZmFjZS5oPgorI2luY2x1ZGUgIklPU3VyZmFj
ZS5oIgogI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CiAjZW5kaWYKIApAQCAtNDQ2LDcg
KzQ0Niw3IEBAIE9wdGlvbmFsPERldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGE+IEQKICAgICBX
VEY6Ok1hY2hTZW5kUmlnaHQgc3VyZmFjZVNlbmRSaWdodDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHN1cmZhY2VTZW5kUmlnaHQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAg
IGxheWVyRGF0YS5zdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJp
Z2h0KFdURk1vdmUoc3VyZmFjZVNlbmRSaWdodCksIFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVm
KCkpOworICAgIGxheWVyRGF0YS5zdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVG
cm9tU2VuZFJpZ2h0KFdURk1vdmUoc3VyZmFjZVNlbmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICNlbmRpZgogICAgIHJldHVybiBsYXllckRhdGE7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExMSw5ICsxMTEsOSBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBDU1NGaWx0ZXI6
OmJ1aWxkUmVmCiAgICAgICAgIGVmZmVjdEVsZW1lbnQuc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKGVm
ZmVjdC5nZXQoKSk7CiAgICAgICAgIGlmIChlZmZlY3RFbGVtZW50LnJlbmRlcmVyKCkpIHsKICNp
ZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgICAgICAg
ICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoZWZmZWN0RWxlbWVudC5yZW5kZXJlcigp
LT5zdHlsZSgpLnN2Z1N0eWxlKCkuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpID09IENvbG9y
SW50ZXJwb2xhdGlvbjo6TGluZWFyUkdCID8gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJT
UkdCIDogRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKKyAgICAgICAgICAgIGVmZmVjdC0+
c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShlZmZlY3RFbGVtZW50LnJlbmRlcmVyKCktPnN0eWxlKCku
c3ZnU3R5bGUoKS5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzKCkgPT0gQ29sb3JJbnRlcnBvbGF0
aW9uOjpMaW5lYXJSR0IgPyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKSA6IERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICNlbHNlCi0gICAgICAgICAgICBlZmZlY3Qt
PnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKKyAg
ICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSk7CiAjZW5kaWYKICAgICAgICAgfQogICAgICAgICBidWlsZGVyLT5hZGQo
ZWZmZWN0RWxlbWVudC5yZXN1bHQoKSwgZWZmZWN0KTsKQEAgLTI5Niw3ICsyOTYsNyBAQCBib29s
IENTU0ZpbHRlcjo6YnVpbGQoUmVuZGVyRWxlbWVudCYgcmVuCiAgICAgICAgICAgICAvLyBVbmxp
a2UgU1ZHIEZpbHRlcnMgYW5kIENTU0ZpbHRlckltYWdlcywgZmlsdGVyIGZ1bmN0aW9ucyBvbiB0
aGUgZmlsdGVyCiAgICAgICAgICAgICAvLyBwcm9wZXJ0eSBhcHBsaWVkIGhlcmUgc2hvdWxkIG5v
dCBjbGlwIHRvIHRoZWlyIHByaW1pdGl2ZSBzdWJyZWdpb25zLgogICAgICAgICAgICAgZWZmZWN0
LT5zZXRDbGlwc1RvQm91bmRzKGNvbnN1bWVyID09IEZpbHRlckNvbnN1bWVyOjpGaWx0ZXJGdW5j
dGlvbik7Ci0gICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKTsKKyAgICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5n
Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGlmIChmaWx0ZXJPcGVyYXRpb24udHlwZSgpICE9IEZpbHRlck9wZXJhdGlv
bjo6UkVGRVJFTkNFKSB7CiAgICAgICAgICAgICAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9
IHsgV1RGTW92ZShwcmV2aW91c0VmZmVjdCkgfTsKQEAgLTM0NCwxMSArMzQ0LDExIEBAIHZvaWQg
Q1NTRmlsdGVyOjphbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmUKICAgICBJbnRTaXplIGxvZ2ljYWxT
aXplIHsgbV9zb3VyY2VEcmF3aW5nUmVnaW9uLnNpemUoKSB9OwogICAgIGlmICghc291cmNlSW1h
Z2UoKSB8fCBzb3VyY2VJbWFnZSgpLT5sb2dpY2FsU2l6ZSgpICE9IGxvZ2ljYWxTaXplKSB7CiAj
aWYgVVNFKERJUkVDVDJEKQotICAgICAgICBzZXRTb3VyY2VJbWFnZShJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKGxvZ2ljYWxTaXplLCByZW5kZXJpbmdNb2RlKCksICZ0YXJnZXRDb250ZXh0LCBmaWx0ZXJT
Y2FsZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCkp
OworICAgICAgICBzZXRTb3VyY2VJbWFnZShJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXpl
LCByZW5kZXJpbmdNb2RlKCksICZ0YXJnZXRDb250ZXh0LCBmaWx0ZXJTY2FsZSgpLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CiAjZWxzZQogICAg
ICAgICBVTlVTRURfUEFSQU0odGFyZ2V0Q29udGV4dCk7CiAgICAgICAgIFJlbmRlcmluZ01vZGUg
bW9kZSA9IG1fZmlsdGVyUmVuZGVyZXIgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IHJl
bmRlcmluZ01vZGUoKTsKLSAgICAgICAgc2V0U291cmNlSW1hZ2UoSW1hZ2VCdWZmZXI6OmNyZWF0
ZShsb2dpY2FsU2l6ZSwgbW9kZSwgZmlsdGVyU2NhbGUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpKTsKKyAgICAgICAgc2V0U291cmNlSW1hZ2UoSW1h
Z2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgbW9kZSwgZmlsdGVyU2NhbGUoKSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCkpOwogI2VuZGlmCiAg
ICAgfQogICAgIG1fZ3JhcGhpY3NCdWZmZXJBdHRhY2hlZCA9IHRydWU7CkBAIC0zODIsMTIgKzM4
MiwxMiBAQCB2b2lkIENTU0ZpbHRlcjo6YXBwbHkoKQogICAgIGlmIChtX2ZpbHRlclJlbmRlcmVy
KSB7CiAgICAgICAgIG1fZmlsdGVyUmVuZGVyZXItPmFwcGx5RWZmZWN0cyhlZmZlY3QpOwogICAg
ICAgICBpZiAobV9maWx0ZXJSZW5kZXJlci0+aGFzUmVzdWx0KCkpIHsKLSAgICAgICAgICAgIGVm
ZmVjdC50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
Qik7CisgICAgICAgICAgICBlZmZlY3QudHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICB9CiAgICAgZWZmZWN0LmFwcGx5KCk7Ci0gICAgZWZmZWN0LnRyYW5zZm9ybVJlc3VsdENv
bG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKKyAgICBlZmZlY3QudHJhbnNm
b3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiB9CiAK
IExheW91dFJlY3QgQ1NTRmlsdGVyOjpjb21wdXRlU291cmNlSW1hZ2VSZWN0Rm9yRGlydHlSZWN0
KGNvbnN0IExheW91dFJlY3QmIGZpbHRlckJveFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGRpcnR5
UmVjdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODc2LDcgKzg3
Niw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWUKICAgICAgICAg
bWFza1JlY3QuaW50ZXJzZWN0KHNuYXBwZWRJbnRSZWN0KHBhaW50SW5mby5yZWN0KSk7CiAKICAg
ICAgICAgLy8gTm93IGNyZWF0ZSB0aGUgbWFzay4KLSAgICAgICAgbWFza0ltYWdlID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIobWFza1JlY3Quc2l6ZSgpLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IsIGNvbnRleHQpOworICAgICAgICBtYXNrSW1hZ2UgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihtYXNrUmVjdC5zaXplKCksIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpLCBjb250ZXh0KTsKICAgICAgICAgaWYgKCFtYXNrSW1hZ2UpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHBhaW50TWFza0ZvclRleHRGaWxsQm94KG1hc2tJ
bWFnZS5nZXQoKSwgbWFza1JlY3QsIGJveCwgc2Nyb2xsZWRQYWludFJlY3QpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjY3LDcgKzMyNjcsNyBAQCBzdGF0aWMgUmVmUHRy
PFBhdHRlcm4+IHBhdHRlcm5Gb3JEZXNjcmlwCiB7CiAgICAgY29uc3QgRmxvYXRTaXplIHRpbGVT
aXplIHsgMzIsIDE4IH07CiAKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZUNvbXBhdGlibGVCdWZmZXIodGlsZVNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QiwgZGVzdENvbnRleHQpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlQ29tcGF0aWJsZUJ1ZmZlcih0aWxlU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCksIGRlc3RDb250ZXh0KTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9T
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgzLDExICsxOTgzLDExIEBAIHZvaWQg
UmVuZGVyVGhlbWVJT1M6OnBhaW50U3lzdGVtUHJldmlld0IKICAgICBJT1N1cmZhY2VSZWYgc3Vy
ZmFjZTsKICAgICBpZiAodXNlU21hbGxCYWRnZSkgewogICAgICAgICBpZiAoIW1fc21hbGxCYWRn
ZVN1cmZhY2UpCi0gICAgICAgICAgICBtX3NtYWxsQmFkZ2VTdXJmYWNlID0gSU9TdXJmYWNlOjpj
cmVhdGUoeyBzbWFsbEJhZGdlRGltZW5zaW9uLCBzbWFsbEJhZGdlRGltZW5zaW9uIH0sIHNSR0JD
b2xvclNwYWNlUmVmKCkpOworICAgICAgICAgICAgbV9zbWFsbEJhZGdlU3VyZmFjZSA9IElPU3Vy
ZmFjZTo6Y3JlYXRlKHsgc21hbGxCYWRnZURpbWVuc2lvbiwgc21hbGxCYWRnZURpbWVuc2lvbiB9
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAgIHN1cmZhY2UgPSBtX3Nt
YWxsQmFkZ2VTdXJmYWNlLT5zdXJmYWNlKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFt
X2xhcmdlQmFkZ2VTdXJmYWNlKQotICAgICAgICAgICAgbV9sYXJnZUJhZGdlU3VyZmFjZSA9IElP
U3VyZmFjZTo6Y3JlYXRlKHsgbGFyZ2VCYWRnZURpbWVuc2lvbiwgbGFyZ2VCYWRnZURpbWVuc2lv
biB9LCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICAgICAgICAgIG1fbGFyZ2VCYWRnZVN1cmZh
Y2UgPSBJT1N1cmZhY2U6OmNyZWF0ZSh7IGxhcmdlQmFkZ2VEaW1lbnNpb24sIGxhcmdlQmFkZ2VE
aW1lbnNpb24gfSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgICAgICBzdXJm
YWNlID0gbV9sYXJnZUJhZGdlU3VyZmFjZS0+c3VyZmFjZSgpOwogICAgIH0KICAgICBbbV9jaUNv
bnRleHQuZ2V0KCkgcmVuZGVyOnRyYW5zbGF0ZWRJbWFnZSB0b0lPU3VyZmFjZTpzdXJmYWNlIGJv
dW5kczpiYWRnZVJlY3QgY29sb3JTcGFjZTpzUkdCQ29sb3JTcGFjZVJlZigpXTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0JKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTMwOSw3ICsxMzA5LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRQ
cm9ncmVzc0JhcihjbwogICAgIGNvbnN0IGF1dG8mIHJlbmRlclByb2dyZXNzID0gZG93bmNhc3Q8
UmVuZGVyUHJvZ3Jlc3M+KHJlbmRlck9iamVjdCk7CiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0
b3IgPSByZW5kZXJPYmplY3QuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpOwogICAgIGJv
b2wgaXNJbmRldGVybWluYXRlID0gcmVuZGVyUHJvZ3Jlc3MucG9zaXRpb24oKSA8IDA7Ci0gICAg
YXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGlu
ZmxhdGVkUmVjdC5zaXplKCksIGRldmljZVNjYWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IsIHBhaW50SW5mby5jb250ZXh0KCkpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihpbmZsYXRlZFJlY3Quc2l6ZSgpLCBk
ZXZpY2VTY2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHBhaW50SW5m
by5jb250ZXh0KCkpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAkocmV2
aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw3ICsxODEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hh
cGU+IFNoYXBlOjpjcmVhdGVSYXN0CiAgICAgSW50UmVjdCBtYXJnaW5SZWN0ID0gc25hcHBlZElu
dFJlY3QobWFyZ2luUik7CiAgICAgYXV0byBpbnRlcnZhbHMgPSBtYWtlVW5pcXVlPFJhc3RlclNo
YXBlSW50ZXJ2YWxzPihtYXJnaW5SZWN0LmhlaWdodCgpLCAtbWFyZ2luUmVjdC55KCkpOwogICAg
IC8vIEZJWE1FICgxNDk0MjApOiBUaGlzIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9u
YWxseSB1bmFjY2VsZXJhdGVkLgotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKGltYWdlUmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBh
dXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKIAogICAgIGF1dG8gY3JlYXRlU2hhcGUgPSBbJl0o
KSB7CiAgICAgICAgIGF1dG8gcmFzdGVyU2hhcGUgPSBtYWtlVW5pcXVlPFJhc3RlclNoYXBlPihX
VEZNb3ZlKGludGVydmFscyksIG1hcmdpblJlY3Quc2l6ZSgpKTsKQEAgLTE5Nyw3ICsxOTcsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0CiAgICAgaWYgKGltYWdl
KQogICAgICAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgSW50UmVjdChJbnRQ
b2ludCgpLCBpbWFnZVJlY3Quc2l6ZSgpKSk7CiAKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3Jt
YXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0
OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgUGl4ZWxCdWZmZXJG
b3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQ
aXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAg
YXV0byBwaXhlbEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5nZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIHsg
SW50UG9pbnQoKSwgaW1hZ2VSZWN0LnNpemUoKSB9KTsKICAgICAKICAgICAvLyBXZSBjb3VsZCBn
ZXQgdG8gYSB2YWx1ZSB3aGVyZSBQaXhlbEJ1ZmZlciBjb3VsZCBiZSBudWxsb3B0LiBBIGNhc2Ug
d2hlcmUgSW1hZ2VSZWN0LnNpemUoKSBpcyBodWdlLCBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUNsaXBwZXIuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0Niw3ICsxNDYsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6YXBw
bHlDbGlwCiAgICAgQWZmaW5lVHJhbnNmb3JtIGFic29sdXRlVHJhbnNmb3JtID0gU1ZHUmVuZGVy
aW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdGVT
eXN0ZW0ocmVuZGVyZXIpOwogICAgIGlmICghY2xpcHBlckRhdGEuaXNWYWxpZEZvckdlb21ldHJ5
KG9iamVjdEJvdW5kaW5nQm94LCBhYnNvbHV0ZVRyYW5zZm9ybSkpIHsKICAgICAgICAgLy8gRklY
TUUgKDE0OTQ2OSk6IFRoaXMgaW1hZ2UgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25h
bGx5IHVuYWNjZWxlcmF0ZWQuIE1ha2luZyBpdCBtYXRjaCB0aGUgY29udGV4dCBicmVha3MgbmVz
dGVkIGNsaXBwaW5nLCB0aG91Z2guCi0gICAgICAgIGF1dG8gbWFza0ltYWdlID0gU1ZHUmVuZGVy
aW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIob2JqZWN0Qm91bmRpbmdCb3gsIGFic29sdXRl
VHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFJlbmRlcmluZ01vZGU6OlVu
YWNjZWxlcmF0ZWQsICZjb250ZXh0KTsKKyAgICAgICAgYXV0byBtYXNrSW1hZ2UgPSBTVkdSZW5k
ZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihvYmplY3RCb3VuZGluZ0JveCwgYWJzb2x1
dGVUcmFuc2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkLCAmY29udGV4dCk7CiAgICAgICAgIGlmICghbWFza0ltYWdlKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw5ICsxMDQsOSBAQCBzdGQ6OnVuaXF1
ZV9wdHI8U1ZHRmlsdGVyQnVpbGRlcj4gUmVuZGVyCiAgICAgICAgIGVmZmVjdC0+c2V0RWZmZWN0
Qm91bmRhcmllcyhTVkdMZW5ndGhDb250ZXh0OjpyZXNvbHZlUmVjdGFuZ2xlPFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz4oJmVsZW1lbnQsIGZpbHRlckVsZW1lbnQoKS5wcmlt
aXRpdmVVbml0cygpLCB0YXJnZXRCb3VuZGluZ0JveCkpOwogICAgICAgICBpZiAoZWxlbWVudC5y
ZW5kZXJlcigpKSB7CiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9T
UkdCKQotICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKGVsZW1lbnQu
cmVuZGVyZXIoKS0+c3R5bGUoKS5zdmdTdHlsZSgpLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMo
KSA9PSBDb2xvckludGVycG9sYXRpb246OkxpbmVhclJHQiA/IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6TGluZWFyU1JHQiA6IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CisgICAgICAgICAg
ICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoZWxlbWVudC5yZW5kZXJlcigpLT5zdHls
ZSgpLnN2Z1N0eWxlKCkuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpID09IENvbG9ySW50ZXJw
b2xhdGlvbjo6TGluZWFyUkdCID8gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCkg
OiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAjZWxzZQotICAgICAgICAgICAgZWZm
ZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7
CisgICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCkpOwogI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgYnVpbGRlci0+
YWRkKGVsZW1lbnQucmVzdWx0KCksIFdURk1vdmUoZWZmZWN0KSk7CkBAIC0xOTgsOSArMTk4LDkg
QEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdQogCiAgICAgYXV0byBy
ZW5kZXJpbmdNb2RlID0gcmVuZGVyZXIuc2V0dGluZ3MoKS5hY2NlbGVyYXRlZEZpbHRlcnNFbmFi
bGVkKCkgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQ7CiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdC
KQotICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JH
QjsKKyAgICBhdXRvIGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNS
R0IoKTsKICNlbHNlCi0gICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCOworICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpOwogI2VuZGlmCiAgICAgYXV0byBzb3VyY2VHcmFwaGljID0gU1ZHUmVuZGVyaW5nQ29udGV4
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbiwgZWZmZWN0aXZl
VHJhbnNmb3JtLCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2RlLCBjb250ZXh0KTsKICAgICBpZiAo
IXNvdXJjZUdyYXBoaWMpIHsKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIFJlbmRlclNWR1Jlc291
cmNlRmlsdGVyOjpwb3N0QXBwbHlSCiAgICAgICAgICAgICBmaWx0ZXJEYXRhLnN0YXRlID0gRmls
dGVyRGF0YTo6QXBwbHlpbmc7CiAgICAgICAgICAgICBsYXN0RWZmZWN0LT5hcHBseSgpOwogICAg
ICAgICAgICAgbGFzdEVmZmVjdC0+Y29ycmVjdEZpbHRlclJlc3VsdElmTmVlZGVkKCk7Ci0gICAg
ICAgICAgICBsYXN0RWZmZWN0LT50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQik7CisgICAgICAgICAgICBsYXN0RWZmZWN0LT50cmFuc2Zvcm1SZXN1
bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICAgICAgfQog
ICAgICAgICBmaWx0ZXJEYXRhLnN0YXRlID0gRmlsdGVyRGF0YTo6QnVpbHQ7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZUdyYWRpZW50LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjAsNyArNjAsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY3JlYXRlTWFza0FuZFN3YXBDb250
CiAgICAgQWZmaW5lVHJhbnNmb3JtIGFic29sdXRlVHJhbnNmb3JtID0gU1ZHUmVuZGVyaW5nQ29u
dGV4dDo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0o
KnRleHRSb290QmxvY2spOwogICAgIEZsb2F0UmVjdCByZXBhaW50UmVjdCA9IHRleHRSb290Qmxv
Y2stPnJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCk7CiAKLSAgICBhdXRvIG1hc2tJbWFn
ZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBh
YnNvbHV0ZVRyYW5zZm9ybSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBjb250ZXh0LT5y
ZW5kZXJpbmdNb2RlKCkpOworICAgIGF1dG8gbWFza0ltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIocmVwYWludFJlY3QsIGFic29sdXRlVHJhbnNmb3JtLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY29udGV4dC0+cmVuZGVyaW5nTW9kZSgpKTsKICAg
ICBpZiAoIW1hc2tJbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFz
a2VyLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDkgKzcx
LDkgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdQogICAgICAgICBj
b25zdCBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSBzdHlsZSgpLnN2Z1N0eWxlKCk7CiAKICNp
ZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgICAgIGF1
dG8gY29sb3JTcGFjZSA9IHN2Z1N0eWxlLmNvbG9ySW50ZXJwb2xhdGlvbigpID09IENvbG9ySW50
ZXJwb2xhdGlvbjo6TGluZWFyUkdCID8gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdC
IDogRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOworICAgICAgICBhdXRvIGNvbG9yU3BhY2Ug
PSBzdmdTdHlsZS5jb2xvckludGVycG9sYXRpb24oKSA9PSBDb2xvckludGVycG9sYXRpb246Okxp
bmVhclJHQiA/IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigpIDogRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCk7CiAjZWxzZQotICAgICAgICBhdXRvIGNvbG9yU3BhY2UgPSBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I7CisgICAgICAgIGF1dG8gY29sb3JTcGFjZSA9IERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOwogI2VuZGlmCiAKICAgICAgICAgLy8gRklYTUUg
KDE0OTQ3MCk6IFRoaXMgaW1hZ2UgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5
IHVuYWNjZWxlcmF0ZWQuIE1ha2luZyBpdCBtYXRjaCB0aGUgY29udGV4dCBicmVha3MgYWxwaGEg
bWFza2luZywgdGhvdWdoLgpAQCAtOTIsNyArOTIsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNl
TWFza2VyOjphcHBseVJlc291CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgUmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXI6OmRyYXdDb250ZW50SW50b01hc2tJbWFnZShNYXNrZXJEYXRhKiBtYXNr
ZXJEYXRhLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVuZGVyT2JqZWN0KiBv
YmplY3QpCitib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpkcmF3Q29udGVudEludG9NYXNr
SW1hZ2UoTWFza2VyRGF0YSogbWFza2VyRGF0YSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiBjb2xvclNwYWNlLCBSZW5kZXJPYmplY3QqIG9iamVjdCkKIHsKICAgICBHcmFwaGljc0NvbnRl
eHQmIG1hc2tJbWFnZUNvbnRleHQgPSBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UtPmNvbnRleHQoKTsK
IApAQCAtMTE5LDcgKzExOSw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdD
b250ZW4KICAgICB9CiAKICNpZiAhVVNFKENHKQotICAgIG1hc2tlckRhdGEtPm1hc2tJbWFnZS0+
dHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGNvbG9yU3Bh
Y2UpOworICAgIG1hc2tlckRhdGEtPm1hc2tJbWFnZS0+dHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY29sb3JTcGFjZSk7CiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShjb2xvclNwYWNlKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZU1hc2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAKICAg
ICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRl
clNWR1Jlc291cmNlTWFza2VyIjsgfQogCi0gICAgYm9vbCBkcmF3Q29udGVudEludG9NYXNrSW1h
Z2UoTWFza2VyRGF0YSosIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUmVuZGVyT2JqZWN0Kik7Cisg
ICAgYm9vbCBkcmF3Q29udGVudEludG9NYXNrSW1hZ2UoTWFza2VyRGF0YSosIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYsIFJlbmRlck9iamVjdCopOwogICAgIHZvaWQgY2FsY3VsYXRlTWFz
a0NvbnRlbnRSZXBhaW50UmVjdCgpOwogCiAgICAgRmxvYXRSZWN0IG1fbWFza0NvbnRlbnRCb3Vu
ZGFyaWVzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZVBhdHRlcm4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNTMsNyArMjUzLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZVBh
dHRlcm46OmJ1aWxkVGlsZQogUmVmUHRyPEltYWdlQnVmZmVyPiBSZW5kZXJTVkdSZXNvdXJjZVBh
dHRlcm46OmNyZWF0ZVRpbGVJbWFnZShjb25zdCBQYXR0ZXJuQXR0cmlidXRlcyYgYXR0cmlidXRl
cywgY29uc3QgRmxvYXRSZWN0JiB0aWxlQm91bmRhcmllcywgY29uc3QgRmxvYXRSZWN0JiBhYnNv
bHV0ZVRpbGVCb3VuZGFyaWVzLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRpbGVJbWFnZVRyYW5z
Zm9ybSwgRmxvYXRSZWN0JiBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcywgUmVuZGVyaW5n
TW9kZSByZW5kZXJpbmdNb2RlKSBjb25zdAogewogICAgIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3Vu
ZGFyaWVzID0gSW1hZ2VCdWZmZXI6OmNsYW1wZWRSZWN0KGFic29sdXRlVGlsZUJvdW5kYXJpZXMp
OwotICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VC
dWZmZXIoYWJzb2x1dGVUaWxlQm91bmRhcmllcywgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJp
ZXMsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgcmVuZGVyaW5nTW9kZSk7CisgICAgYXV0
byB0aWxlSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihhYnNv
bHV0ZVRpbGVCb3VuZGFyaWVzLCBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcywgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHJlbmRlcmluZ01vZGUpOwogICAgIGlmICghdGlsZUlt
YWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiAy
Nzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRl
eHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzYsNyArMjM2LDcgQEAgQWZmaW5lVHJhbnNmb3Jt
IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNhbAogICAgIHJldHVybiBhYnNvbHV0ZVRyYW5zZm9ybTsK
IH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgYWJzb2x1dGVUcmFuc2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBS
ZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCkKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VC
dWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3Bh
Y2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0KQogewogICAgIEludFJlY3QgcGFpbnRSZWN0ID0gY2FsY3VsYXRlSW1hZ2VCdWZmZXJS
ZWN0KHRhcmdldFJlY3QsIGFic29sdXRlVHJhbnNmb3JtKTsKICAgICAvLyBEb24ndCBjcmVhdGUg
ZW1wdHkgSW1hZ2VCdWZmZXJzLgpAQCAtMjY0LDcgKzI2NCw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZl
cj4gU1ZHUmVuZGVyaW5nQ29udGV4dDoKICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CiB9CiAKLVJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRSZWN0
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJp
bmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8SW1hZ2VCdWZm
ZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUs
IGNvbnN0IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKIHsKICAgICBJbnRTaXplIGNsYW1wZWRT
aXplID0gcm91bmRlZEludFNpemUoY2xhbXBlZFJlY3Quc2l6ZSgpKTsKICAgICBGbG9hdFNpemUg
dW5jbGFtcGVkU2l6ZSA9IHJvdW5kZWRJbnRTaXplKHRhcmdldFJlY3Quc2l6ZSgpKTsKQEAgLTM1
MCw3ICszNTAsNyBAQCBib29sIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckZvcmVncm91CiAK
ICAgICAvLyBDcmVhdGUgYSBuZXcgYnVmZmVyIGFuZCBwYWludCB0aGUgZm9yZWdyb3VuZCBpbnRv
IGl0LgogICAgIGlmICghaW1hZ2VCdWZmZXIpIHsKLSAgICAgICAgaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoYm91bmRpbmdC
b3guc2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBtX3BhaW50SW5mby0+Y29u
dGV4dCgpKTsKKyAgICAgICAgaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0
aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoYm91bmRpbmdCb3guc2l6ZSgpKSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCksIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkpOwogICAgICAgICBp
ZiAoIWltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4
dC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1JlbmRlcmluZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsOCArNjAsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KFJlbmRlckVsZW1lbnQmLCBQ
YWludEluZm8mLCBOZWVkc0dyYXBoaWNzQ29udGV4dFNhdmUgPSBEb250U2F2ZUdyYXBoaWNzQ29u
dGV4dCk7CiAgICAgYm9vbCBpc1JlbmRlcmluZ1ByZXBhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9y
ZW5kZXJpbmdGbGFncyAmIFJlbmRlcmluZ1ByZXBhcmVkOyB9CiAKLSAgICBzdGF0aWMgUmVmUHRy
PEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJl
Y3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIERlc3RpbmF0aW9u
Q29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxw
dHIpOwotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNv
bnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwg
RGVzdGluYXRpb25Db2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRl
eHQqID0gbnVsbHB0cik7CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBSZW5k
ZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cik7CisgICAgc3RhdGlj
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRSZWN0LCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVs
bHB0cik7CiAKICAgICBzdGF0aWMgdm9pZCByZW5kZXJTdWJ0cmVlVG9Db250ZXh0KEdyYXBoaWNz
Q29udGV4dCYsIFJlbmRlckVsZW1lbnQmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKICAgICBz
dGF0aWMgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJl
Y3QsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4mLCBib29sIHNhZmVUb0NsZWFyKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjE3LDcgKzIxNyw3IEBAIFJlZlB0cjxOYXRpdmVJbWFnZT4gU1ZHSW1hZ2U6Om5hdGl2ZUlt
YWcKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRv
IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShz
aXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghaW1hZ2VCdWZmZXIp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yNDcsNyArMjQ3LDcgQEAgdm9pZCBTVkdJ
bWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoRwogICAgIEZsb2F0UmVjdCBpbWFnZUJ1ZmZl
clNpemUgPSB6b29tZWRDb250YWluZXJSZWN0OwogICAgIGltYWdlQnVmZmVyU2l6ZS5zY2FsZShp
bWFnZUJ1ZmZlclNjYWxlLndpZHRoKCksIGltYWdlQnVmZmVyU2NhbGUuaGVpZ2h0KCkpOwogCi0g
ICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBh
bmRlZEludFNpemUoaW1hZ2VCdWZmZXJTaXplLnNpemUoKSksIDEsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQiwgY29udGV4dCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoaW1hZ2VCdWZmZXJTaXplLnNpemUo
KSksIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBjb250ZXh0KTsKICAgICBpZiAo
IWJ1ZmZlcikgLy8gRmFpbGVkIHRvIGFsbG9jYXRlIGJ1ZmZlci4KICAgICAgICAgcmV0dXJuOwog
ICAgIGRyYXdGb3JDb250YWluZXIoYnVmZmVyLT5jb250ZXh0KCksIGNvbnRhaW5lclNpemUsIGNv
bnRhaW5lclpvb20sIGluaXRpYWxGcmFnbWVudFVSTCwgaW1hZ2VCdWZmZXJTaXplLCB6b29tZWRD
b250YWluZXJSZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZFSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTMsOCArOTMsOCBAQCB2b2lkIEZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAg
ICAgaWYgKCFtX2ltYWdlICYmICFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8g
RkVJbWFnZSByZXN1bHRzIGFyZSBhbHdheXMgaW4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
Ci0gICAgc2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOwor
ICAgIC8vIEZFSW1hZ2UgcmVzdWx0cyBhcmUgYWx3YXlzIGluIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpCisgICAgc2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSk7CiAKICAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1
ZmZlclJlc3VsdCgpOwogICAgIGlmICghcmVzdWx0SW1hZ2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNp
b24gMjc3OTIwKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSw4OSBAQAorMjAyMS0wNS0yMiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+
CisKKyAgICAgICAgQ29udmVydCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRv
IGNsYXNzIHdyYXBwaW5nIGEgcGxhdGZvcm0gY29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBm
b3IgQ0cgcG9ydHMsIGV0Yy4pCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjYxNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBbV0lQXQorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFn
ZUJ1ZmZlcik6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJB
VkZQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5
OjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6YXBwbHlCYWNraW5nU3Rv
cmVUb0xheWVyKToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb246OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oOgorICAgICAgICAqIFNoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuaDoKKyAgICAgICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAg
ICAoV2ViS2l0Ojpjb2xvclNwYWNlKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL0NvbG9yU3BhY2VE
YXRhLmg6IFJlbW92ZWQuCisgICAgICAgICogU2hhcmVkL21hYy9Db2xvclNwYWNlRGF0YS5tbTog
UmVtb3ZlZC4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF90YWtlVmll
d1NuYXBzaG90XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc25hcHNob3RSZWN0OmludG9JbWFn
ZU9mV2lkdGg6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Y29sb3JTcGFjZSk6CisgICAgICAgICog
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW06CisgICAgICAgIChXZWJLaXQ6OnJlY3Vyc2l2ZWx5
TWFwSU9TdXJmYWNlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnRJbXBsOjpjb2xvclNwYWNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW06CisgICAgICAgICogVUlQcm9j
ZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6Y29sb3JTcGFjZSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kOjpjb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cHJlcGFyZUZvckRpc3BsYXkpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHku
aDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNy
ZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJh
Y2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZG
OjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvY29jb2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGl4ZWxCdWZmZXJG
b3JDdXJyZW50VGltZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVn
aW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6UERGUGx1Z2luKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVNoYXJlYWJsZUJpdG1hcCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAg
ICAgIChXZWJLaXQ6OmNvbnZlcnREcmFnSW1hZ2VUb0JpdG1hcCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVh
OjpzZXRDb2xvclNwYWNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpzbmFwc2hvdE9wdGlvbnNUb0JpdG1hcENvbmZpZ3VyYXRpb24p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYTo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEpOgorICAgICAgICAo
V2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0Q29sb3JTcGFjZSk6CisK
IDIwMjEtMDUtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9Tb3VyY2VzQ29jb2EudHh0CShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIwMyw3ICsyMDMsNiBAQCBTaGFyZWQv
aW9zL1dlYlRvdWNoRXZlbnRJT1MuY3BwCiAKIFNoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01h
Yy5tbQogU2hhcmVkL21hYy9Db2RlU2lnbmluZy5tbQotU2hhcmVkL21hYy9Db2xvclNwYWNlRGF0
YS5tbQogU2hhcmVkL21hYy9IYW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMubW0KIFNoYXJlZC9tYWMv
TmF0aXZlV2ViR2VzdHVyZUV2ZW50TWFjLm1tCiBTaGFyZWQvbWFjL05hdGl2ZVdlYktleWJvYXJk
RXZlbnRNYWMubW0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlciA6IHB1YmxpYyBX
ZWJDb3JlCiAgICAgdXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnB1dFBpeGVsQnVmZmVy
OwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQsIFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisg
ICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
IGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjp0ZW1wbGF0ZSBjcmVhdGU8UmVt
b3RlSW1hZ2VCdWZmZXI+KHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxG
b3JtYXQsIG51bGxwdHIsIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQsIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcik7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsNyArMTUyLDcgQEAgdm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRGbHVzaChEaQogICAgIHNlbmQoTWVzc2FnZXM6
OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6RGlkRmx1c2goZmx1c2hJZGVudGlmaWVyLCBy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVy
KTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2Us
IFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdN
b2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKICAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQocmVuZGVyaW5nTW9kZSA9
PSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCB8fCByZW5kZXJpbmdNb2RlID09IFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQpOwpJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxNCArNDQsMTggQEAKIAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CisKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiBjbGFzcyBEaXNw
bGF5TGlzdDsKIGNsYXNzIEl0ZW07CiB9CisKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsK
IGNsYXNzIEZsb2F0U2l6ZTsKIGNsYXNzIE5hdGl2ZUltYWdlOwotZW51bSBjbGFzcyBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UgOiB1aW50OF90OworCiBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBi
b29sOworCiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTIxLDcgKzEyNSw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKIAogICAgIC8v
IE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgotICAgIHZvaWQgY3JlYXRlSW1hZ2VCdWZmZXIoY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9k
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2Us
IFdlYkNvcmU6OlBpeGVsRm9ybWF0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOworICAgIHZvaWQgY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBjb25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBXZWJDb3JlOjpQaXhl
bEZvcm1hdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lk
IHdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoY29uc3QgR1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VB
cmd1bWVudHMmKTsKICAgICB2b2lkIHVwZGF0ZVNoYXJlZE1lbW9yeUZvckdldFBpeGVsQnVmZmVy
KHVpbnQzMl90IGJ5dGVDb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRN
ZW1vcnk6OklQQ0hhbmRsZSYpPiYmKTsKICAgICB2b2lkIHNlbWFwaG9yZUZvckdldFBpeGVsQnVm
ZmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTZW1hcGhvcmUmKT4mJik7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExMywyOCArMTEzLDI4IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGUHJveHk6OnNldERhdGEKICAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZUNvdW50LCBp
bWFnZURlY29kZXItPnNpemUoKSwgaW1hZ2VEZWNvZGVyLT5oYXNUcmFjaygpLCBXVEZNb3ZlKGZy
YW1lSW5mb3MpKTsKIH0KIAotdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Y3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoSW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBzaXpl
X3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJp
Z2h0PiYmLCBDb2xvclNwYWNlRGF0YSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KEltYWdlRGVj
b2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgc2l6ZV90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPFdURjo6TWFjaFNlbmRSaWdodD4mJiwgT3B0aW9uYWw8V2ViQ29yZTo6
RGVzdGluYXRpb25Db2xvclNwYWNlPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBB
U1NFUlQobV9pbWFnZURlY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAgICBPcHRpb25h
bDxXVEY6Ok1hY2hTZW5kUmlnaHQ+IHNlbmRSaWdodDsKLSAgICBDb2xvclNwYWNlRGF0YSBjb2xv
clNwYWNlRGF0YTsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+
IGNvbG9yU3BhY2U7CiAgICAgaWYgKCFtX2ltYWdlRGVjb2RlcnMuY29udGFpbnMoaWRlbnRpZmll
cikpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShzZW5kUmlnaHQpLCBXVEZN
b3ZlKGNvbG9yU3BhY2VEYXRhKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
c2VuZFJpZ2h0KSwgV1RGTW92ZShjb2xvclNwYWNlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKICAgICBhdXRvIGZyYW1lSW1hZ2UgPSBtX2ltYWdlRGVjb2RlcnMuZ2V0KGlkZW50aWZpZXIp
LT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCk7CiAgICAgaWYgKCFmcmFtZUltYWdlKSB7
Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc2VuZFJpZ2h0KSwgV1RGTW92ZShj
b2xvclNwYWNlRGF0YSkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHNlbmRS
aWdodCksIFdURk1vdmUoY29sb3JTcGFjZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgaWYgKGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbUltYWdlKGZyYW1lSW1h
Z2UuZ2V0KCkpKSB7CiAgICAgICAgIHNlbmRSaWdodCA9IHN1cmZhY2UtPmNyZWF0ZVNlbmRSaWdo
dCgpOwotICAgICAgICBjb2xvclNwYWNlRGF0YS5jZ0NvbG9yU3BhY2UgPSBzdXJmYWNlLT5jb2xv
clNwYWNlKCk7CisgICAgICAgIGNvbG9yU3BhY2UgPSBzdXJmYWNlLT5jb2xvclNwYWNlKCk7CiAg
ICAgfQogCi0gICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShzZW5kUmlnaHQpLCBXVEZNb3Zl
KGNvbG9yU3BhY2VEYXRhKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShzZW5kUmln
aHQpLCBXVEZNb3ZlKGNvbG9yU3BhY2UpKTsKIH0KIAogdm9pZCBSZW1vdGVJbWFnZURlY29kZXJB
VkZQcm94eTo6Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKEltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgc2l6ZV90IGluZGV4KQpJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmgJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFn
ZURlY29kZXJBVkZQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw2IEBACiAKICNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEhBVkUoQVZBU1NFVFJFQURFUikKIAotI2luY2x1ZGUg
IkNvbG9yU3BhY2VEYXRhLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VEZWNvZGVyQVZGT2Jq
Qy5oPgpAQCAtNTcsNyArNTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVsZXRlRGVjb2RlcihX
ZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyKTsKICAgICB2b2lkIHNldEV4cGVjdGVkQ29u
dGVudFNpemUoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciwgbG9uZyBsb25nIGV4cGVj
dGVkQ29udGVudFNpemUpOwogICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpJbWFnZURlY29kZXJJ
ZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBib29sIGFsbERhdGFSZWNlaXZl
ZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzaXplX3QgZnJhbWVDb3VudCwgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgc2l6ZSwgYm9vbCBoYXNUcmFjaywgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6
OkltYWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4mJik+JiYpOwotICAgIHZvaWQgY3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciwgc2l6ZV90IGluZGV4
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdURjo6TWFjaFNlbmRSaWdodD4mJiwg
Q29sb3JTcGFjZURhdGEmJik+JiYpOworICAgIHZvaWQgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciwgc2l6ZV90IGluZGV4LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdURjo6TWFjaFNlbmRSaWdodD4mJiwgT3B0aW9uYWw8V2Vi
Q29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiYmKT4mJik7CiAgICAgdm9pZCBjbGVhckZyYW1l
QnVmZmVyQ2FjaGUoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciwgc2l6ZV90IGluZGV4
KTsKIAogICAgIHZvaWQgZW5jb2RlZERhdGFTdGF0dXNDaGFuZ2VkKFdlYkNvcmU6OkltYWdlRGVj
b2RlcklkZW50aWZpZXIpOwpJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRlByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNz
YWdlcy5pbgkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw3ICszMiw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5
IE4KICAgICBEZWxldGVEZWNvZGVyKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRl
bnRpZmllcikKICAgICBTZXRFeHBlY3RlZENvbnRlbnRTaXplKFdlYkNvcmU6OkltYWdlRGVjb2Rl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUpCiAg
ICAgU2V0RGF0YShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQ
Qzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkg
LT4gKHNpemVfdCBmcmFtZUNvdW50LCBXZWJDb3JlOjpJbnRTaXplIHNpemUsIGJvb2wgaGFzVHJh
Y2ssIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4+IGZy
YW1lSW5mb3MpIFN5bmNocm9ub3VzCi0gICAgQ3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBzaXplX3QgaW5kZXgpIC0+IChP
cHRpb25hbDxNYWNoU2VuZFJpZ2h0PiBzZW5kUmlnaHQsIHN0cnVjdCBXZWJLaXQ6OkNvbG9yU3Bh
Y2VEYXRhIGNvbG9yU3BhY2UpIFN5bmNocm9ub3VzCisgICAgQ3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBzaXplX3QgaW5k
ZXgpIC0+IChPcHRpb25hbDxNYWNoU2VuZFJpZ2h0PiBzZW5kUmlnaHQsIE9wdGlvbmFsPFdlYkNv
cmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZSkgU3luY2hyb25vdXMKICAgICBD
bGVhckZyYW1lQnVmZmVyQ2FjaGUoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBzaXplX3QgaW5kZXgpCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlYWJsZUJpdG1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvU2hh
cmVhYmxlQml0bWFwLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9TaGFy
ZWQvU2hhcmVhYmxlQml0bWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsMTAgKzc0LDcgQEAg
dm9pZCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZTo6Y2xlYXIoKQogCiB2b2lkIFNoYXJlYWJsZUJp
dG1hcDo6Q29uZmlndXJhdGlvbjo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QK
IHsKLSAgICBlbmNvZGVyIDw8IGlzT3BhcXVlOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGVu
Y29kZXIgPDwgY29sb3JTcGFjZTsKLSNlbmRpZgorICAgIGVuY29kZXIgPDwgY29sb3JTcGFjZSA8
PCBpc09wYXF1ZTsKICNpZiBVU0UoRElSRUNUMkQpCiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGU6
OmVuY29kZUhhbmRsZShlbmNvZGVyLCBzaGFyZWRSZXNvdXJjZUhhbmRsZSk7CiAKQEAgLTg4LDIx
ICs4NSwyOCBAQCB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbjo6ZW5jCiAjZW5k
aWYKIH0KIAotYm9vbCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb246OmRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIsIENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCitib29sIFNo
YXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rl
ciwgQ29uZmlndXJhdGlvbiYgcmVzdWx0KQogewotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29u
ZmlndXJhdGlvbi5pc09wYXF1ZSkpCisgICAgT3B0aW9uYWw8T3B0aW9uYWw8V2ViQ29yZTo6RGVz
dGluYXRpb25Db2xvclNwYWNlPj4gY29sb3JTcGFjZTsKKyAgICBkZWNvZGVyID4+IGNvbG9yU3Bh
Y2U7CisgICAgaWYgKCFjb2xvclNwYWNlKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0jaWYgUExB
VEZPUk0oQ09DT0EpCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb25maWd1cmF0aW9uLmNvbG9y
U3BhY2UpKQorCisgICAgT3B0aW9uYWw8Ym9vbD4gaXNPcGFxdWU7CisgICAgZGVjb2RlciA+PiBp
c09wYXF1ZTsKKyAgICBpZiAoIWlzT3BhcXVlKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5k
aWYKKworICAgIHJlc3VsdCA9IENvbmZpZ3VyYXRpb24geyBXVEZNb3ZlKCpjb2xvclNwYWNlKSwg
KmlzT3BhcXVlIH07CisKICNpZiBVU0UoRElSRUNUMkQpCiAgICAgYXV0byBwcm9jZXNzU3BlY2lm
aWNIYW5kbGUgPSBTaGFyZWRNZW1vcnk6OkhhbmRsZTo6ZGVjb2RlSGFuZGxlKGRlY29kZXIpOwog
ICAgIGlmICghcHJvY2Vzc1NwZWNpZmljSGFuZGxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBjb25maWd1cmF0aW9uLnNoYXJlZFJlc291cmNlSGFuZGxlID0gcHJvY2Vzc1NwZWNpZmlj
SGFuZGxlLnZhbHVlKCk7CisgICAgcmVzdWx0LnNoYXJlZFJlc291cmNlSGFuZGxlID0gcHJvY2Vz
c1NwZWNpZmljSGFuZGxlLnZhbHVlKCk7CiAjZW5kaWYKKwogICAgIHJldHVybiB0cnVlOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDE1ICsyNiwxMiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTaGFy
ZWRNZW1vcnkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1J
bWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQuaD4KIAotI2lmIFVTRShDRykKLSNpbmNsdWRlICJDb2xvclNwYWNlRGF0YS5o
IgotI2VuZGlmCi0KICNpZiBVU0UoRElSRUNUMkQpCiBpbnRlcmZhY2UgSUQyRDFCaXRtYXA7CiBp
bnRlcmZhY2UgSUQyRDFSZW5kZXJUYXJnZXQ7CkBAIC01NSwxMCArNTIsOCBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIGNsYXNzIFNoYXJlYWJsZUJpdG1hcCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxTaGFyZWFibGVCaXRtYXA+IHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgQ29uZmlndXJhdGlv
biB7CisgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29s
b3JTcGFjZTsKICAgICAgICAgYm9vbCBpc09wYXF1ZSB7IGZhbHNlIH07Ci0jaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgICAgIENvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2U7Ci0jZW5kaWYKICNpZiBV
U0UoRElSRUNUMkQpCiAgICAgICAgIG11dGFibGUgSEFORExFIHNoYXJlZFJlc291cmNlSGFuZGxl
IHsgbnVsbHB0ciB9OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgy
LDggQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiQXJndW1lbnRD
b2RlcnNDRi5oIgorCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNSw4ICszMjUsMTEg
QEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUAogICAgIHBhcmFtZXRl
cnMuaGFzUmVzb3VyY2VMb2FkQ2xpZW50ID0gV1RGTW92ZSgqaGFzUmVzb3VyY2VMb2FkQ2xpZW50
KTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRl
cnMuY29sb3JTcGFjZSkpCisgICAgT3B0aW9uYWw8T3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNw
YWNlPj4gY29sb3JTcGFjZTsKKyAgICBkZWNvZGVyID4+IGNvbG9yU3BhY2U7CisgICAgaWYgKCFj
b2xvclNwYWNlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHBhcmFtZXRlcnMu
Y29sb3JTcGFjZSA9IFdURk1vdmUoKmNvbG9yU3BhY2UpOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocGFyYW1ldGVycy51c2VTeXN0ZW1BcHBlYXJhbmNlKSkKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Niw2ICszNiw3IEBACiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvQWN0aXZpdHlTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRmxvYXRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9MYXlvdXRNaWxlc3RvbmUuaD4KQEAgLTQ5LDEwICs1MCw2IEBACiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIFBM
QVRGT1JNKE1BQykKLSNpbmNsdWRlICJDb2xvclNwYWNlRGF0YS5oIgotI2VuZGlmCi0KICNpZiBF
TkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlv
bk1hbmlmZXN0Lmg+CiAjZW5kaWYKQEAgLTE0Niw3ICsxNDMsNyBAQCBzdHJ1Y3QgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgYm9vbCB1c2VFbGV2YXRlZFVzZXJJbnRlcmZhY2VMZXZl
bCB7IGZhbHNlIH07CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgQ29sb3JTcGFjZURhdGEgY29s
b3JTcGFjZTsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNv
bG9yU3BhY2U7CiAgICAgYm9vbCB1c2VTeXN0ZW1BcHBlYXJhbmNlOwogI2VuZGlmCiAjaWYgRU5B
QkxFKE1FVEFfVklFV1BPUlQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCShy
ZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxMiwxOSArMjEy
LDE5IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGkKICAgICBzd2l0
Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgVHlwZTo6SU9TdXJmYWNlOgogICAgICAgICBpZiAoc2hv
dWxkVXNlUmVtb3RlUmVuZGVyaW5nKQotICAgICAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1
ZmZlciA9IG1fbGF5ZXItPmNvbnRleHQoKS0+ZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5KCkuY3JlYXRlSW1hZ2VCdWZmZXIobV9zaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpB
Y2NlbGVyYXRlZCwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
LCBwaXhlbEZvcm1hdCgpKTsKKyAgICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIg
PSBtX2xheWVyLT5jb250ZXh0KCktPmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgp
LmNyZWF0ZUltYWdlQnVmZmVyKG1fc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6QWNjZWxl
cmF0ZWQsIG1fc2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBw
aXhlbEZvcm1hdCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9mcm9udEJ1ZmZlci5p
bWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8QWNjZWxlcmF0ZWRJbWFn
ZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZEJhY2tlbmQ+OjpjcmVhdGUobV9zaXplLCBtX3NjYWxlLCBX
ZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIHBpeGVsRm9ybWF0KCksIG51bGxw
dHIpOworICAgICAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNv
bmNyZXRlSW1hZ2VCdWZmZXI8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZEJh
Y2tlbmQ+OjpjcmVhdGUobV9zaXplLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0cik7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgVHlwZTo6Qml0bWFwOgogICAgICAgICBpZiAoc2hvdWxkVXNlUmVtb3RlUmVuZGVy
aW5nKQotICAgICAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IG1fbGF5ZXItPmNv
bnRleHQoKS0+ZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1hZ2VC
dWZmZXIobV9zaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBtX3Nj
YWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIHBpeGVsRm9ybWF0KCkp
OworICAgICAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IG1fbGF5ZXItPmNvbnRl
eHQoKS0+ZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1hZ2VCdWZm
ZXIobV9zaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBtX3NjYWxl
LCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgcGl4ZWxGb3JtYXQoKSk7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBX
ZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJhY2tlbmQ+OjpjcmVhdGUobV9zaXplLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IsIHBpeGVsRm9ybWF0KCksIG51bGxwdHIpOworICAgICAgICAgICAg
bV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8
VW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZD46OmNyZWF0ZShtX3NpemUs
IG1fc2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBwaXhlbEZv
cm1hdCgpLCBudWxscHRyKTsKICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKENHX0RJU1BMQVlf
TElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQogICAgIGNhc2UgVHlwZTo6Q0dEaXNwbGF5TGlzdDoK
LSAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1h
Z2VCdWZmZXI8Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZD46OmNyZWF0ZShtX3NpemUs
IG1fc2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3Jt
YXQoKSwgbnVsbHB0cik7CisgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJD
b3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ+
OjpjcmVhdGUobV9zaXplLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0cik7CiAgICAgICAgIGJyZWFrOwogI2VuZGlm
CiAgICAgfQpAQCAtMzk3LDcgKzM5Nyw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6
OmFwcGx5QmFja2kKICAgICAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6SU9TdXJmYWNl
KTsKICAgICAgICAgICAgIHN3aXRjaCAoY29udGVudHNUeXBlKSB7CiAgICAgICAgICAgICBjYXNl
IExheWVyQ29udGVudHNUeXBlOjpJT1N1cmZhY2U6IHsKLSAgICAgICAgICAgICAgICBhdXRvIHN1
cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZSht
YWNoU2VuZFJpZ2h0KSwgV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgICAgICAg
ICAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJp
Z2h0KFdURk1vdmUobWFjaFNlbmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpKTsKICAgICAgICAgICAgICAgICBsYXllci5jb250ZW50cyA9IHN1cmZhY2UgPyBz
dXJmYWNlLT5hc0xheWVyQ29udGVudHMoKSA6IG5pbDsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJp
dG1hcENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFi
bGVCaXRtYXBDRy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICAKIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYg
Y29sb3JTcGFjZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3Vy
YXRpb24pCiB7Ci0gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZS5jZ0NvbG9yU3Bh
Y2UuZ2V0KCkgPzogc1JHQkNvbG9yU3BhY2VSZWYoKTsKKyAgICByZXR1cm4gY29uZmlndXJhdGlv
bi5jb2xvclNwYWNlID8gY29uZmlndXJhdGlvbi5jb2xvclNwYWNlLT5wbGF0Zm9ybUNvbG9yU3Bh
Y2UoKSA6IFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCk7CiB9CiAKIHN0YXRpYyBib29sIHdh
bnRzRXh0ZW5kZWRSYW5nZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24mIGNv
bmZpZ3VyYXRpb24pCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29sb3JTcGFjZURh
dGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29sb3JTcGFjZURh
dGEuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvbG9y
U3BhY2VEYXRhLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmbmRlZiBDb2xvclNwYWNlRGF0YV9oCi0jZGVmaW5lIENvbG9yU3BhY2VEYXRhX2gKLQotI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEZWNvZGVy
OwotY2xhc3MgRW5jb2RlcjsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBDb2xv
clNwYWNlRGF0YSB7Ci0gICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAg
c3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBDb2xv
clNwYWNlRGF0YSYpOwotCi0gICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY2dDb2xvclNw
YWNlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBDb2xvclNwYWNl
RGF0YV9oCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29s
b3JTcGFjZURhdGEuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAs
MCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL21hYy9Db2xvclNwYWNlRGF0YS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEubW0JKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9Db2xvclNwYWNlRGF0YS5tbQkobm9uZXhpc3Rl
bnQpCkBAIC0xLDYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNp
bXBvcnQgIkNvbG9yU3BhY2VEYXRhLmgiCi0KLSNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ0YuaCIK
LSNpbXBvcnQgIkRlY29kZXIuaCIKLSNpbXBvcnQgIkVuY29kZXIuaCIKLSNpbXBvcnQgPHd0Zi9F
bnVtVHJhaXRzLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIENvbG9yU3BhY2VEYXRh
OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXIgPDwg
c3RhdGljX2Nhc3Q8Ym9vbD4oY2dDb2xvclNwYWNlKTsKLSAgICBpZiAoY2dDb2xvclNwYWNlKQot
ICAgICAgICBlbmNvZGVyIDw8IGNnQ29sb3JTcGFjZTsKLX0KLQotYm9vbCBDb2xvclNwYWNlRGF0
YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgQ29sb3JTcGFjZURhdGEmIGNvbG9yU3Bh
Y2VEYXRhKQotewotICAgIGJvb2wgaGFzQ0dDb2xvclNwYWNlOwotICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoaGFzQ0dDb2xvclNwYWNlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYg
KCFoYXNDR0NvbG9yU3BhY2UpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgUmV0YWluUHRy
PENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNv
bG9yU3BhY2UpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgY29sb3JTcGFjZURh
dGEuY2dDb2xvclNwYWNlID0gV1RGTW92ZShjb2xvclNwYWNlKTsKLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
YWdlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkzLDcgQEAgY2xhc3MgU2VjdXJp
dHlPcmlnaW47CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb2xvcjsKIGNsYXNzIEN1cnNv
cjsKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIEZsb2F0UXVhZDsKIGNsYXNz
IEZsb2F0UmVjdDsKIGNsYXNzIFJlZ2lvbjsKQEAgLTE4OCwxMCArMTg5LDYgQEAgY2xhc3MgV2Vi
RnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudDsKIGNsYXNzIEluc3RhbGxNaXNzaW5nTWVkaWFQ
bHVnaW5zUGVybWlzc2lvblJlcXVlc3Q7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENPQ09BKQot
c3RydWN0IENvbG9yU3BhY2VEYXRhOwotI2VuZGlmCi0KICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJP
UEFHQVRJT05fVklFVykKIHVzaW5nIExheWVySG9zdGluZ0NvbnRleHRJRCA9IHVpbnQzMl90Owog
I2VuZGlmCkBAIC00MjYsNyArNDIzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBDR1JlY3Qg
Ym91bmRzT2ZMYXllckluTGF5ZXJCYWNrZWRXaW5kb3dDb29yZGluYXRlcyhDQUxheWVyICopIGNv
bnN0ID0gMDsKIAotICAgIHZpcnR1YWwgQ29sb3JTcGFjZURhdGEgY29sb3JTcGFjZSgpID0gMDsK
KyAgICB2aXJ0dWFsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKCkg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNob3dQbGF0Zm9ybUNvbnRleHRNZW51KE5TTWVudSAq
LCBXZWJDb3JlOjpJbnRQb2ludCkgPSAwOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5OCw2ICsxOTgsNyBAQCBuYW1l
c3BhY2UgQVBJIHsKIGNsYXNzIEF0dGFjaG1lbnQ7CiBjbGFzcyBDb250ZW50V29ybGQ7CiBjbGFz
cyBDb250ZXh0TWVudUNsaWVudDsKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNz
IEVycm9yOwogY2xhc3MgRmluZENsaWVudDsKIGNsYXNzIEZpbmRNYXRjaGVzQ2xpZW50OwpAQCAt
Mzc3LDcgKzM3OCw2IEBAIGNsYXNzIFdlYldoZWVsRXZlbnRDb2FsZXNjZXI7CiBjbGFzcyBXZWJz
aXRlRGF0YVN0b3JlOwogCiBzdHJ1Y3QgQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGE7Ci1z
dHJ1Y3QgQ29sb3JTcGFjZURhdGE7CiBzdHJ1Y3QgRGF0YURldGVjdGlvblJlc3VsdDsKIHN0cnVj
dCBEb2N1bWVudEVkaXRpbmdDb250ZXh0Owogc3RydWN0IERvY3VtZW50RWRpdGluZ0NvbnRleHRS
ZXF1ZXN0OwpAQCAtMTEzMiw3ICsxMTMyLDcgQEAgcHVibGljOgogICAgIHZvaWQgbWFrZUZpcnN0
UmVzcG9uZGVyKCk7CiAgICAgdm9pZCBhc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9u
ZGVyKCk7CiAKLSAgICBDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlKCk7CisgICAgV2ViQ29yZTo6
RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UoKTsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfQ09OVFJPTFMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9z
L1dLV2ViVmlld0lPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvaW9zL1dLV2ViVmlld0lPUy5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEw
MTQsNyArMTAxNCw3IEBAIC0gKFJlZlB0cjxXZWJLaXQ6OlZpZXdTbmFwc2hvdD4pX3Rha2VWaWUK
ICNlbHNlCiAgICAgV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQgc25hcHNob3RGb3JtYXQgPSBX
ZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdDo6QkdSQTsKICNlbmRpZgotICAgIGF1dG8gc3VyZmFj
ZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlKFdlYkNvcmU6OmV4cGFuZGVkSW50U2l6ZShz
bmFwc2hvdFNpemUpLCBXZWJDb3JlOjpzUkdCQ29sb3JTcGFjZVJlZigpLCBzbmFwc2hvdEZvcm1h
dCk7CisgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGUoV2ViQ29y
ZTo6ZXhwYW5kZWRJbnRTaXplKHNuYXBzaG90U2l6ZSksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpLCBzbmFwc2hvdEZvcm1hdCk7CiAgICAgaWYgKCFzdXJmYWNlKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBDQVJlbmRlclNlcnZlclJlbmRlckxheWVyV2l0aFRy
YW5zZm9ybShNQUNIX1BPUlRfTlVMTCwgc2VsZi5sYXllci5jb250ZXh0LmNvbnRleHRJZCwgcmVp
bnRlcnByZXRfY2FzdDx1aW50NjRfdD4oc2VsZi5sYXllciksIHN1cmZhY2UtPnN1cmZhY2UoKSwg
MCwgMCwgJnRyYW5zZm9ybSk7CkBAIC0zMDc5LDcgKzMwNzksNyBAQCAtICh2b2lkKV9zbmFwc2hv
dFJlY3Q6KENHUmVjdClyZWN0SW5WaWV3CiAgICAgTlNTdHJpbmcgKmRpc3BsYXlOYW1lID0gc2Vs
Zi53aW5kb3cuc2NyZWVuLmRpc3BsYXlDb25maWd1cmF0aW9uLm5hbWU7CiAgICAgaWYgKGRpc3Bs
YXlOYW1lICYmICFzZWxmLndpbmRvdy5oaWRkZW4pIHsKICAgICAgICAgVHJhY2VTY29wZSBzbmFw
c2hvdFNjb3BlKFJlbmRlclNlcnZlclNuYXBzaG90U3RhcnQsIFJlbmRlclNlcnZlclNuYXBzaG90
RW5kKTsKLSAgICAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGUo
V2ViQ29yZTo6ZXhwYW5kZWRJbnRTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZShpbWFnZVNpemUpKSwg
V2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgICAgIGF1dG8gc3VyZmFjZSA9IFdl
YkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlKFdlYkNvcmU6OmV4cGFuZGVkSW50U2l6ZShXZWJDb3Jl
OjpGbG9hdFNpemUoaW1hZ2VTaXplKSksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpKTsKICAgICAgICAgaWYgKCFzdXJmYWNlKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAkod29ya2luZyBjb3B5
KQpAQCAtOTQsNiArOTQsNyBAQCBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIH0KIAogbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlOwogY2xhc3MgSW50UG9p
bnQ7CiBzdHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTDsKIApAQCAtMTY4LDcgKzE2OSw2IEBA
IGNsYXNzIFdlYkZyYW1lUHJveHk7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcm9j
ZXNzUG9vbDsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKLXN0cnVjdCBDb2xvclNwYWNlRGF0YTsK
IHN0cnVjdCBXZWJIaXRUZXN0UmVzdWx0RGF0YTsKIAogZW51bSBjbGFzcyBDb250aW51ZVVuc2Fm
ZUxvYWQgOiBib29sOwpAQCAtMzEzLDcgKzMxMyw3IEBAIHB1YmxpYzoKIAogICAgIE5TVmlldyAq
aGl0VGVzdChDR1BvaW50KTsKIAotICAgIENvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2UoKTsKKyAg
ICBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpOwogCiAgICAgdm9p
ZCBzZXRVbmRlcmxheUNvbG9yKE5TQ29sb3IgKik7CiAgICAgTlNDb2xvciAqdW5kZXJsYXlDb2xv
cigpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiAjaW1w
b3J0ICJBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oIgogI2ltcG9ydCAiQVBJTmF2aWdh
dGlvbi5oIgogI2ltcG9ydCAiQXBwS2l0U1BJLmgiCi0jaW1wb3J0ICJDb2xvclNwYWNlRGF0YS5o
IgogI2ltcG9ydCAiQ29yZVRleHRIZWxwZXJzLmgiCiAjaW1wb3J0ICJGb250SW5mby5oIgogI2lt
cG9ydCAiRnVsbHNjcmVlbkNsaWVudC5oIgpAQCAtOTAsNiArODksNyBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9Db2xvck1hYy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvclNlcmlhbGl6YXRpb24uaD4K
ICNpbXBvcnQgPFdlYkNvcmUvQ29tcG9zaXRpb25IaWdobGlnaHQuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RpY3Rpb25hcnlM
b29rdXAuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RHJhZ0l0ZW0uaD4KQEAgLTI1MDAsNyArMjUwMCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnBvc3RG
YWtlTW91c2VNb3ZlZEV2ZW4KICAgICBtX3BhZ2UtPmhhbmRsZU1vdXNlRXZlbnQod2ViRXZlbnQp
OwogfQogCi1Db2xvclNwYWNlRGF0YSBXZWJWaWV3SW1wbDo6Y29sb3JTcGFjZSgpCitXZWJDb3Jl
OjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgV2ViVmlld0ltcGw6OmNvbG9yU3BhY2UoKQogewogICAg
IGlmICghbV9jb2xvclNwYWNlKSB7CiAgICAgICAgIGlmIChtX3RhcmdldFdpbmRvd0Zvck1vdmVQ
cmVwYXJhdGlvbikKQEAgLTI1MTEsMTAgKzI1MTEsNyBAQCBDb2xvclNwYWNlRGF0YSBXZWJWaWV3
SW1wbDo6Y29sb3JTcGFjZSgpCiAgICAgICAgICAgICBtX2NvbG9yU3BhY2UgPSBbTlNTY3JlZW4g
bWFpblNjcmVlbl0uY29sb3JTcGFjZTsKICAgICB9CiAKLSAgICBDb2xvclNwYWNlRGF0YSBjb2xv
clNwYWNlRGF0YTsKLSAgICBjb2xvclNwYWNlRGF0YS5jZ0NvbG9yU3BhY2UgPSBbbV9jb2xvclNw
YWNlIENHQ29sb3JTcGFjZV07Ci0KLSAgICByZXR1cm4gY29sb3JTcGFjZURhdGE7CisgICAgcmV0
dXJuIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSB7IFttX2NvbG9yU3BhY2UgQ0dDb2xv
clNwYWNlXSB9OwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjpzZXRVbmRlcmxheUNvbG9yKE5TQ29s
b3IgKnVuZGVybGF5Q29sb3IpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQkocmV2
aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZUhvc3QubW0JKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAK
ICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAj
aW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGVzdGlu
YXRpb25Db2xvclNwYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dENHLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0lPU3VyZmFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9y
bUxheWVyLmg+CkBAIC0zMTcsNyArMzE4LDcgQEAgc3RhdGljIHZvaWQgcmVjdXJzaXZlbHlNYXBJ
T1N1cmZhY2VCYWNraQogewogICAgIGlmIChsYXllci5jb250ZW50cyAmJiBDRkdldFR5cGVJRCgo
X19icmlkZ2UgQ0ZUeXBlUmVmKWxheWVyLmNvbnRlbnRzKSA9PSBDQU1hY2hQb3J0R2V0VHlwZUlE
KCkpIHsKICAgICAgICAgTWFjaFNlbmRSaWdodCBwb3J0ID0gTWFjaFNlbmRSaWdodDo6Y3JlYXRl
KENBTWFjaFBvcnRHZXRQb3J0KChfX2JyaWRnZSBDQU1hY2hQb3J0UmVmKWxheWVyLmNvbnRlbnRz
KSk7Ci0gICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJv
bVNlbmRSaWdodChXVEZNb3ZlKHBvcnQpLCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICAgICAg
YXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdU
Rk1vdmUocG9ydCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAg
ICAgICAgbGF5ZXIuY29udGVudHMgPSBzdXJmYWNlID8gc3VyZmFjZS0+YXNMYXllckNvbnRlbnRz
KCkgOiBuaWw7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvUGFnZUNsaWVudEltcGxNYWMuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2
LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzVmlld0luV2luZG93KCkgb3ZlcnJpZGU7
CiAgICAgYm9vbCBpc1Zpc3VhbGx5SWRsZSgpIG92ZXJyaWRlOwogICAgIExheWVySG9zdGluZ01v
ZGUgdmlld0xheWVySG9zdGluZ01vZGUoKSBvdmVycmlkZTsKLSAgICBDb2xvclNwYWNlRGF0YSBj
b2xvclNwYWNlKCkgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNl
IGNvbG9yU3BhY2UoKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFJlbW90ZUxheWVyVHJlZVJvb3RO
b2RlKFJlbW90ZUxheWVyVHJlZU5vZGUqKSBvdmVycmlkZTsKICAgICBDQUxheWVyICphY2NlbGVy
YXRlZENvbXBvc2l0aW5nUm9vdExheWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0JKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1w
bE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBAQAogCiAjaW1wb3J0ICJBUElI
aXRUZXN0UmVzdWx0LmgiCiAjaW1wb3J0ICJBcHBLaXRTUEkuaCIKLSNpbXBvcnQgIkNvbG9yU3Bh
Y2VEYXRhLmgiCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJEb3dubG9hZFBy
b3h5LmgiCiAjaW1wb3J0ICJEcmF3aW5nQXJlYVByb3h5LmgiCkBAIC02Niw2ICs2NSw3IEBACiAj
aW1wb3J0IDxXZWJDb3JlL0JpdG1hcEltYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yTWFj
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0N1cnNvci5oPgorI2ltcG9ydCA8V2ViQ29yZS9EZXN0aW5h
dGlvbkNvbG9yU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGljdGlvbmFyeUxvb2t1cC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9EcmFnSXRlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3Qu
aD4KQEAgLTI0NCw3ICsyNDQsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjp2aWV3V2lsbE1vdmVU
b0Fub3RoCiAgICAgY2xlYXJBbGxFZGl0Q29tbWFuZHMoKTsKIH0KIAotQ29sb3JTcGFjZURhdGEg
UGFnZUNsaWVudEltcGw6OmNvbG9yU3BhY2UoKQorV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNw
YWNlIFBhZ2VDbGllbnRJbXBsOjpjb2xvclNwYWNlKCkKIHsKICAgICByZXR1cm4gbV9pbXBsLT5j
b2xvclNwYWNlKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4
LDYgQEAKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCi0jaW1wb3J0ICJDb2xvclNwYWNl
RGF0YS5oIgogI2ltcG9ydCAiRHJhd2luZ0FyZWFNZXNzYWdlcy5oIgogI2ltcG9ydCAiRHJhd2lu
Z0FyZWFQcm94eU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJMYXllclRyZWVDb250ZXh0LmgiCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0JKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBQTEFURk9STShN
QUMpCiAKICNpbXBvcnQgIkFQSVVJQ2xpZW50LmgiCi0jaW1wb3J0ICJDb2xvclNwYWNlRGF0YS5o
IgogI2ltcG9ydCAiQ29ubmVjdGlvbi5oIgogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2lt
cG9ydCAiRWRpdG9yU3RhdGUuaCIKQEAgLTUyLDYgKzUxLDcgQEAKICNpbXBvcnQgIldlYlByZWZl
cmVuY2VzS2V5cy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0IDxXZWJD
b3JlL0F0dHJpYnV0ZWRTdHJpbmcuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGVzdGluYXRpb25Db2xv
clNwYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RpY3Rpb25hcnlMb29rdXAuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRHJhZ0l0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgpA
QCAtMzQ0LDcgKzM0NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojphc3Npc3RpdmVUZWNobm9sb2d5
TWEKICAgICBwYWdlQ2xpZW50KCkuYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRl
cigpOwogfQogCi1Db2xvclNwYWNlRGF0YSBXZWJQYWdlUHJveHk6OmNvbG9yU3BhY2UoKQorV2Vi
Q29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIFdlYlBhZ2VQcm94eTo6Y29sb3JTcGFjZSgpCiB7
CiAgICAgcmV0dXJuIHBhZ2VDbGllbnQoKS5jb2xvclNwYWNlKCk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTI2MzQsOCArMjYzNCw2IEBACiAJCTFBMjU2RTM2MThBMUE3ODgw
MDZGQjkyMiAvKiBXS05hdmlnYXRpb25BY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tOYXZpZ2F0aW9uQWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFBMjU2RTM5MThBMUE3REYwMDZGQjkyMiAvKiBXS05hdmlnYXRpb25BY3Rpb25JbnRlcm5h
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS05hdmlnYXRpb25BY3Rpb25J
bnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTI4QjhDQjFDODBFRDU5
MDA2RkQ3NDMgLyogV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTFBMkE0QUZEMTU4NjkzOTIwMDkwQzlFOSAvKiBDb2xvclNwYWNlRGF0YS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvbG9yU3BhY2VEYXRh
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQTJBNEFGRTE1ODY5MzkyMDA5MEM5
RTkgLyogQ29sb3JTcGFjZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29sb3JTcGFjZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyQkI2Q0Mx
NDExN0E1RjAwMEYzNUQ0IC8qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTJCQjZDRTE0MTE3QjREMDAwRjM1RDQg
LyogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdl
UmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CiAJCTFBMkJCNkNGMTQxMTdCNEQwMDBGMzVENCAvKiBQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktp
dDIvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OwpAQCAtMTA0MzAsOCArMTA0MjgsNiBAQAogCQkJCTlGNTRGODhFMTY0
ODhFODcwMDdERjgxQSAvKiBBdXhpbGlhcnlQcm9jZXNzTWFjLm1tICovLAogCQkJCUNFMTFBRDUx
MUNCQzQ4MkYwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5oICovLAogCQkJCUNFMTFBRDRGMUNCQzQ3
RjgwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5tbSAqLywKLQkJCQkxQTJBNEFGRTE1ODY5MzkyMDA5
MEM5RTkgLyogQ29sb3JTcGFjZURhdGEuaCAqLywKLQkJCQkxQTJBNEFGRDE1ODY5MzkyMDA5MEM5
RTkgLyogQ29sb3JTcGFjZURhdGEubW0gKi8sCiAJCQkJMUFDNzVBMUMxQjMzNjk1RTAwNTY3NDVC
IC8qIEhhbmdEZXRlY3Rpb25EaXNhYmxlck1hYy5tbSAqLywKIAkJCQkyRDUwMzY1RDFCQ0M3OTNG
MDBFMjBCQjMgLyogTmF0aXZlV2ViR2VzdHVyZUV2ZW50TWFjLm1tICovLAogCQkJCUMwMkJGRjFE
MTI1MTUwMkUwMDlDQ0JFQSAvKiBOYXRpdmVXZWJLZXlib2FyZEV2ZW50TWFjLm1tICovLApJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NSwxMSArNDUsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJT
CiAKIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQ6OmNvbmZpZ3VyYXRpb24oY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykK
IHsKLSAgICBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKLSNp
ZiBQTEFURk9STShDT0NPQSkKLSAgICBjb25maWd1cmF0aW9uLmNvbG9yU3BhY2UgPSB7IGNhY2hl
ZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpIH07Ci0jZW5kaWYKLSAgICByZXR1
cm4gY29uZmlndXJhdGlvbjsKKyAgICByZXR1cm4geyBwYXJhbWV0ZXJzLmNvbG9yU3BhY2UgfTsK
IH0KIAogSW50U2l6ZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNhbGN1bGF0
ZVNhZmVCYWNrZW5kU2l6ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cHJlcGEKICAgICAgICAgbWFya0NvbnRleHRM
b3N0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byBkaXNwbGF5QnVmZmVyID0g
SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoZGlzcGxheUJ1ZmZlclNlbmRS
aWdodCksIHNSR0JDb2xvclNwYWNlUmVmKCkpOworICAgIGF1dG8gZGlzcGxheUJ1ZmZlciA9IElP
U3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGRpc3BsYXlCdWZmZXJTZW5kUmln
aHQpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgaWYgKGRp
c3BsYXlCdWZmZXIpIHsKICAgICAgICAgYXV0byYgc2MgPSBwbGF0Zm9ybVN3YXBDaGFpbigpOwog
ICAgICAgICBzYy5yZWN5Y2xlQnVmZmVyKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJv
eHkuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcg
KzU1LDcgQEAgY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSA6IHB1YmxpYyBXZQogICAgIHVz
aW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjpyZXNvbHV0aW9uU2NhbGU7CiAKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmUHRyPFJlbW90ZUltYWdlQnVmZmVyUHJveHk+IGNyZWF0ZShjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29y
ZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0
IHBpeGVsRm9ybWF0LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSkKKyAgICBzdGF0aWMgUmVmUHRyPFJlbW90ZUltYWdlQnVmZmVyUHJveHk+
IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBX
ZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCiAgICAgewogICAgICAgICBhdXRvIHBh
cmFtZXRlcnMgPSBXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMgeyBzaXpl
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0IH07CiAgICAgICAgIGlm
IChCYWNrZW5kVHlwZTo6Y2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMpLmlzRW1w
dHkoKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDcg
KzEzMCw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGUKICAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDcmVhdGVJbWFnZUJ1ZmZlcihp
bWFnZUJ1ZmZlci5sb2dpY2FsU2l6ZSgpLCBpbWFnZUJ1ZmZlci5yZW5kZXJpbmdNb2RlKCksIGlt
YWdlQnVmZmVyLnJlc29sdXRpb25TY2FsZSgpLCBpbWFnZUJ1ZmZlci5jb2xvclNwYWNlKCksIGlt
YWdlQnVmZmVyLnBpeGVsRm9ybWF0KCksIGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcigpKSwgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSwgSVBDOjpTZW5kT3B0aW9u
OjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogfQogCi1SZWZQ
dHI8SW1hZ2VCdWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VC
dWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2Us
IFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6
ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxG
b3JtYXQpCiB7CiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKIApJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCShyZXZpc2lvbiAyNzc5MTkpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywxNSArNDMsMTkgQEAKICNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKIG5hbWVzcGFjZSBEaXNw
bGF5TGlzdCB7CiBjbGFzcyBEaXNwbGF5TGlzdDsKIGNsYXNzIEl0ZW07CiB9CisKK2NsYXNzIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIEZsb2F0U2l6ZTsKIGNsYXNzIFBpeGVsQnVmZmVy
OworCiBlbnVtIGNsYXNzIEFscGhhUHJlbXVsdGlwbGljYXRpb24gOiB1aW50OF90OwotZW51bSBj
bGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgOiB1aW50OF90OwogZW51bSBjbGFzcyBSZW5kZXJp
bmdNb2RlIDogYm9vbDsKKwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTkyLDcgKzk2LDcg
QEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSBzZW50Lgot
ICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3Qg
V2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVs
Rm9ybWF0KTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNl
JiwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQpOwogICAgIFN0cmluZyBnZXREYXRhVVJMRm9ySW1hZ2VC
dWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBX
ZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24sIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGdldERhdGFGb3JJbWFnZUJ1ZmZlcihjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZs
dXNoSWRlbnRpZmllciBmbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29h
L0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1
ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVm
ZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ1LDcgKzQ1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcAog
ICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoYmFja2VuZFNpemUsIGJhY2tl
bmRTaXplLCBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSwgSU9TdXJm
YWNlOjpmb3JtYXRGb3JQaXhlbEZvcm1hdChwYXJhbWV0ZXJzLnBpeGVsRm9ybWF0KSk7CisgICAg
YXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoYmFja2VuZFNpemUsIGJhY2tlbmRTaXpl
LCBwYXJhbWV0ZXJzLmNvbG9yU3BhY2UsIElPU3VyZmFjZTo6Zm9ybWF0Rm9yUGl4ZWxGb3JtYXQo
cGFyYW1ldGVycy5waXhlbEZvcm1hdCkpOwogICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKQEAgLTY1LDcgKzY1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyU2hhcmVhYmxlTWFwcAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBh
dXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShXVEY6
OmdldDxNYWNoU2VuZFJpZ2h0PihoYW5kbGUpKSwgY2FjaGVkQ0dDb2xvclNwYWNlKHBhcmFtZXRl
cnMuY29sb3JTcGFjZSkpOworICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlRnJv
bVNlbmRSaWdodChXVEZNb3ZlKFdURjo6Z2V0PE1hY2hTZW5kUmlnaHQ+KGhhbmRsZSkpLCBwYXJh
bWV0ZXJzLmNvbG9yU3BhY2UpOwogICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTMgKzI4LDEyIEBACiAKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEhBVkUoQVZBU1NFVFJFQURFUikKIAotI2luY2x1ZGUgIkNvbG9yU3Bh
Y2VEYXRhLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJS
ZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0FWQXNzZXRNSU1FVHlwZUNhY2hlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNw
YWNlQ0cuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSU9TdXJmYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZVR5cGVz
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CkBAIC0xNjgsMTQgKzE2
NywxNCBAQCBQbGF0Zm9ybUltYWdlUHRyIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6CiAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgT3B0aW9uYWw8TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0
OwotICAgICAgICBDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlOworICAgICAgICBPcHRpb25hbDxE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CiAgICAgICAgIGlmICghbV9ncHVQcm9j
ZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVJbWFn
ZURlY29kZXJBVkZQcm94eTo6Q3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgobV9pZGVudGlmaWVyLCBp
bmRleCksIE1lc3NhZ2VzOjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Q3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXg6OlJlcGx5KHNlbmRSaWdodCwgY29sb3JTcGFjZSksIDApKQogICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIGlmICghc2VuZFJpZ2h0KQorICAgICAgICBpZiAoIXNlbmRS
aWdodCB8fCAhY29sb3JTcGFjZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBhdXRv
IHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92
ZSgqc2VuZFJpZ2h0KSwgY29sb3JTcGFjZS5jZ0NvbG9yU3BhY2UuZ2V0KCkpOworICAgICAgICBh
dXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RG
TW92ZSgqc2VuZFJpZ2h0KSwgV1RGTW92ZSgqY29sb3JTcGFjZSkpOwogICAgICAgICBpZiAoIXN1
cmZhY2UpCiAgICAgICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9jb2NvYS9NZWRp
YVBsYXllclByaXZhdGVSZW1vdGVDb2NvYS5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9jb2NvYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBSZWZQdHI8TmF0aXZl
SW1hZ2U+IE1lZGlhUGxheWVyUHJpdmF0ZVJlCiAgICAgaWYgKCFzZW5kUmlnaHQpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNl
OjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoKnNlbmRSaWdodCksIHNSR0JDb2xvclNwYWNl
UmVmKCkpOworICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJv
bVNlbmRSaWdodChXVEZNb3ZlKCpzZW5kUmlnaHQpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSk7CiAgICAgaWYgKCFzdXJmYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIApAQCAtOTEsNyArOTEsNyBAQCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gTWVkaWFQ
bGF5ZXJQCiAgICAgaWYgKCFzZW5kUmlnaHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0
KFdURk1vdmUoKnNlbmRSaWdodCksIG51bGxwdHIpOworICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNv
cmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKCpzZW5kUmlnaHQpLCBX
ZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgaWYgKCFzdXJmYWNl
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCShyZXZpc2lvbiAyNzc5MTkpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NDYsNyArNjQ2LDcgQEAgaW5saW5lIFBERlBsdWdpbjo6UERGUGx1Z2lu
KFdlYkZyYW1lJiBmcgogICAgIFttX2NvbnRhaW5lckxheWVyIGFkZFN1YmxheWVyOm1fc2Nyb2xs
Q29ybmVyTGF5ZXIuZ2V0KCldOwogICAgIGlmIChbbV9wZGZMYXllckNvbnRyb2xsZXIgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXREZXZpY2VDb2xvclNwYWNlOildKSB7CiAgICAgICAg
IGF1dG8gdmlldyA9IGZyYW1lLmNvcmVGcmFtZSgpLT52aWV3KCk7Ci0gICAgICAgIFttX3BkZkxh
eWVyQ29udHJvbGxlciBzZXREZXZpY2VDb2xvclNwYWNlOnNjcmVlbkNvbG9yU3BhY2Uodmlldyld
OworICAgICAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIgc2V0RGV2aWNlQ29sb3JTcGFjZTpzY3Jl
ZW5Db2xvclNwYWNlKHZpZXcpLnBsYXRmb3JtQ29sb3JTcGFjZSgpXTsKICAgICB9CiAKICNpZiBI
QVZFKElOQ1JFTUVOVEFMX1BERl9BUElTKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1h
cFV0aWxpdGllcy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NywxMiArNTcsNyBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVT
aGFyZWFibGVCCiAgICAgfQogCiAgICAgLy8gRklYTUU6IE9ubHkgc2VsZWN0IEV4dGVuZGVkQ29s
b3Igb24gaW1hZ2VzIGtub3duIHRvIG5lZWQgd2lkZSBnYW11dC4KLSAgICBTaGFyZWFibGVCaXRt
YXA6OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmlndXJhdGlvbjsKLSNpZiBVU0UoQ0cpCi0gICAg
Yml0bWFwQ29uZmlndXJhdGlvbi5jb2xvclNwYWNlLmNnQ29sb3JTcGFjZSA9IHNjcmVlbkNvbG9y
U3BhY2UocmVuZGVySW1hZ2UuZnJhbWUoKS5tYWluRnJhbWUoKS52aWV3KCkpOwotI2VuZGlmCi0K
LSAgICBhdXRvIHNoYXJlZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxl
KEludFNpemUoYml0bWFwU2l6ZSksIGJpdG1hcENvbmZpZ3VyYXRpb24pOworICAgIGF1dG8gc2hh
cmVkQml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShiaXRt
YXBTaXplKSwgeyBzY3JlZW5Db2xvclNwYWNlKHJlbmRlckltYWdlLmZyYW1lKCkubWFpbkZyYW1l
KCkudmlldygpKSB9KTsKICAgICBpZiAoIXNoYXJlZEJpdG1hcCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTI3LDcgKzkyNyw3IEBAIFdlYkNvcmU6OkRpc3BsYXlS
ZWZyZXNoTW9uaXRvckZhY3RvcnkqIFcKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAotUmVm
UHRyPEltYWdlQnVmZmVyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQ
dXJwb3NlIHB1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNw
YWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KSBjb25zdAorUmVmUHRyPElt
YWdlQnVmZmVyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3Nl
IHB1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29uc3QKIHsKICAgICBp
ZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0Zvcihw
dXJwb3NlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
CShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0NCw3ICsyNDQsNyBA
QCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkqIGRp
c3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkoKSBjb25zdCBmaW5hbDsKIAogI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKLSAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUs
IFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29y
ZTo6RGVzdGluYXRpb25Db2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCkgY29uc3QgZmlu
YWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBXZWJDb3Jl
OjpSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFdlYkNvcmU6
OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFdlYkNvcmU6OlBpeGVsRm9ybWF0KSBjb25zdCBmaW5h
bDsKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCBob3N0V2luZG93RGlz
cGxheUlEKSBjb25zdCBmaW5hbDsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVu
dE1hYy5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02
OCw5ICs2OCw3IEBAIHVzaW5nIERyYWdJbWFnZSA9IENHSW1hZ2VSZWY7CiAKIHN0YXRpYyBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0RHJhZ0ltYWdlVG9CaXRtYXAoRHJhZ0ltYWdlIGlt
YWdlLCBjb25zdCBJbnRTaXplJiBzaXplLCBGcmFtZSYgZnJhbWUpCiB7Ci0gICAgU2hhcmVhYmxl
Qml0bWFwOjpDb25maWd1cmF0aW9uIGJpdG1hcENvbmZpZ3VyYXRpb247Ci0gICAgYml0bWFwQ29u
ZmlndXJhdGlvbi5jb2xvclNwYWNlLmNnQ29sb3JTcGFjZSA9IHNjcmVlbkNvbG9yU3BhY2UoZnJh
bWUubWFpbkZyYW1lKCkudmlldygpKTsKLSAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlU2hhcmVhYmxlKHNpemUsIGJpdG1hcENvbmZpZ3VyYXRpb24pOworICAgIGF1dG8g
Yml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc2l6ZSwgeyBzY3JlZW5D
b2xvclNwYWNlKGZyYW1lLm1haW5GcmFtZSgpLnZpZXcoKSkgfSk7CiAgICAgaWYgKCFiaXRtYXAp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgRGVjb2RlcjsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlOwogY2xhc3MgRGlzcGxheVJlZnJlc2hNb25p
dG9yOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZVZpZXc7CkBAIC02MCw3ICs2MSw2IEBAIHN0
cnVjdCBWaWV3cG9ydEF0dHJpYnV0ZXM7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdHJ1Y3Qg
Q29sb3JTcGFjZURhdGE7CiBjbGFzcyBMYXllclRyZWVIb3N0Owogc3RydWN0IFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9yZTsKQEAgLTE4MCw3ICsx
ODAsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIFVzZWQgYnkgVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuCiAgICAgdmlydHVhbCB2b2lkIHNldERldmljZVNj
YWxlRmFjdG9yKGZsb2F0KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29sb3JTcGFjZShjb25z
dCBDb2xvclNwYWNlRGF0YSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRDb2xvclNwYWNlKE9w
dGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4pIHsgfQogCiAgICAgdmlydHVh
bCB2b2lkIGFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBv
aW50IG9yaWdpbikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdFRyYW5zaWVudFpvb20oZG91
YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgeyB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNz
YWdlcy5pbgkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMx
LDcgQEAgbWVzc2FnZXMgLT4gRHJhd2luZ0FyZWEgTm90UmVmQ291bnRlZCB7CiAgICAgLy8gVXNl
ZCBieSBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS4KICAgICBVcGRhdGVHZW9tZXRyeShX
ZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplLCBib29sIGZsdXNoU3luY2hyb25vdXNseSwgTWFjaFNl
bmRSaWdodCBmZW5jZVBvcnQpCiAgICAgU2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgZGV2aWNl
U2NhbGVGYWN0b3IpCi0gICAgU2V0Q29sb3JTcGFjZShzdHJ1Y3QgV2ViS2l0OjpDb2xvclNwYWNl
RGF0YSBjb2xvclNwYWNlKQorICAgIFNldENvbG9yU3BhY2Uoc3RydWN0IE9wdGlvbmFsPFdlYkNv
cmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZSkKICAgICBTZXRWaWV3RXhwb3Nl
ZFJlY3QoT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QpCiAKICAg
ICBBZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBv
cmlnaW4pCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1OTgsNyArMjU5OCw3IEBAIHN0YXRp
YyBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gc24KICAgICBTaGFyZWFibGVCaXRtYXA6
OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKICNpZiBVU0UoQ0cpCiAgICAgaWYgKG9wdGlv
bnMgJiBTbmFwc2hvdE9wdGlvbnNVc2VTY3JlZW5Db2xvclNwYWNlKQotICAgICAgICBjb25maWd1
cmF0aW9uLmNvbG9yU3BhY2UuY2dDb2xvclNwYWNlID0gc2NyZWVuQ29sb3JTcGFjZShwYWdlLmNv
cmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24uY29s
b3JTcGFjZSA9IHNjcmVlbkNvbG9yU3BhY2UocGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS52
aWV3KCkpOwogI2VuZGlmCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhLmgJKHdvcmtpbmcgY29weSkKQEAgLTk4LDcgKzk4LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHN1c3BlbmRQYWludGluZygpOwogICAgIHZvaWQgcmVzdW1lUGFpbnRpbmcoKTsKICAg
ICB2b2lkIHNldExheWVySG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9kZSkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBzZXRDb2xvclNwYWNlKGNvbnN0IENvbG9yU3BhY2VEYXRhJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzZXRDb2xvclNwYWNlKE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JT
cGFjZT4pIG92ZXJyaWRlOwogICAgIHZvaWQgYWRkRmVuY2UoY29uc3QgV1RGOjpNYWNoU2VuZFJp
Z2h0Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRChDYWxs
YmFja0lEKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWEubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogCi0jaW1wb3J0ICJDb2xv
clNwYWNlRGF0YS5oIgogI2ltcG9ydCAiRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmgiCiAjaW1w
b3J0ICJEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCIKICNpbXBvcnQgIkxheWVySG9zdGluZ0Nv
bnRleHQuaCIKQEAgLTQ1LDYgKzQ0LDcgQEAKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6
Q29yZVNQSS5oPgogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0RlYnVnUGFnZU92ZXJsYXlzLmg+CisjaW1wb3J0IDxXZWJDb3JlL0Rlc3RpbmF0aW9u
Q29sb3JTcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CkBAIC05
MSw2ICs5MSw3IEBAIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpUaWxlZENvcmUKICAg
ICB9KTsKIAogICAgIHVwZGF0ZUxheWVySG9zdGluZ0NvbnRleHQoKTsKKyAgICAKICAgICBzZXRD
b2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JTcGFjZSk7CiAKICAgICBpZiAoYXV0byB2aWV3RXhw
b3NlZFJlY3QgPSBwYXJhbWV0ZXJzLnZpZXdFeHBvc2VkUmVjdCkKQEAgLTY1MCw5ICs2NTEsOSBA
QCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRMCiAgICAgc2VuZChNZXNz
YWdlczo6RHJhd2luZ0FyZWFQcm94eTo6VXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUo
MCwgbGF5ZXJUcmVlQ29udGV4dCkpOwogfQogCi12b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhOjpzZXRDb2xvclNwYWNlKGNvbnN0IENvbG9yU3BhY2VEYXRhJiBjb2xvclNwYWNlKQor
dm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0Q29sb3JTcGFjZShPcHRpb25h
bDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2UpCiB7Ci0gICAgbV9s
YXllckhvc3RpbmdDb250ZXh0LT5zZXRDb2xvclNwYWNlKGNvbG9yU3BhY2UuY2dDb2xvclNwYWNl
LmdldCgpKTsKKyAgICBtX2xheWVySG9zdGluZ0NvbnRleHQtPnNldENvbG9yU3BhY2UoY29sb3JT
cGFjZSA/IGNvbG9yU3BhY2UtPnBsYXRmb3JtQ29sb3JTcGFjZSgpIDogbnVsbHB0cik7CiB9CiAK
IFJlZlB0cjxXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I+IFRpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhOjpjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5
SUQgZGlzcGxheUlEKQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24g
Mjc3OTIwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDUtMjIgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBw
bGUuY29tPgorCisgICAgICAgIENvbnZlcnQgRGVzdGluYXRpb25Db2xvclNwYWNlIGZyb20gYW4g
ZW51bSB0byBjbGFzcyB3cmFwcGluZyBhIHBsYXRmb3JtIGNvbG9yIHNwYWNlIChDR0NvbG9yU3Bh
Y2VSZWYgZm9yIENHIHBvcnRzLCBldGMuKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5t
bToKKyAgICAgICAgKFdlYkNvbnRleHRNZW51Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5n
U2VydmljZVBpY2tlckl0ZW0pOgorICAgICAgICBVcGRhdGUgZm9yIG5ldyBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgY2xhc3MuCisKIDIwMjEtMDUtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwg
dmFyaWFibGVzCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJDb250ZXh0TWVudUNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICNpbXBvcnQg
PFdlYkNvcmUvQml0bWFwSW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29udGV4dE1lbnUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvQ29udGV4dE1lbnVDb250cm9sbGVyLmg+CisjaW1wb3J0IDxXZWJD
b3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcu
aD4KQEAgLTIxMyw3ICsyMTQsNyBAQCBSZXRhaW5QdHI8TlNJbWFnZT4gV2ViQ29udGV4dE1lbnVD
bGllbnQ6CiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICAvLyBUaGlzIGlzIGVmZmVjdGl2ZWx5
IGEgc25hcHNob3QsIGFuZCB3aWxsIGJlIHBhaW50ZWQgaW4gYW4gdW5hY2NlbGVyYXRlZCBmYXNo
aW9uIGluIGxpbmUgd2l0aCBGcmFtZVNuYXBzaG90dGluZy4KLSAgICBhdXRvIGJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUocmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
KyAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUocmVjdC5zaXplKCksIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4g
bmlsOwogCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyNzc5MjApCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNCBAQAorMjAyMS0wNS0yMiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQ29udmVydCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgZnJvbSBhbiBlbnVt
IHRvIGNsYXNzIHdyYXBwaW5nIGEgcGxhdGZvcm0gY29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJl
ZiBmb3IgQ0cgcG9ydHMsIGV0Yy4pCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjYxNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlz
dFRlc3RzQ0cuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIFVw
YXRlIHRlc3QgdG8gdXNlIG5ldyBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgdHlwZS4KKwogMjAyMS0w
NS0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2Ug
TG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2NhbCB2YXJpYWJsZXMKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlz
dFRlc3RzQ0cuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjcsNiArMjcsNyBAQAogCiAjaWYgVVNFKENHKQogCisjaW5jbHVkZSA8V2ViQ29yZS9EZXN0aW5h
dGlvbkNvbG9yU3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNw
bGF5TGlzdFJlcGxheWVyLmg+CkBAIC00Niw4ICs0Nyw4IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0
cywgUmVwbGF5V2l0aE1pc3NpbmcKIHsKICAgICBGbG9hdFJlY3QgY29udGV4dEJvdW5kcyB7IDAs
IDAsIGNvbnRleHRXaWR0aCwgY29udGV4dEhlaWdodCB9OwogCi0gICAgYXV0byBjb2xvclNwYWNl
ID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQikp
OwotICAgIGF1dG8gY2dDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUobnVs
bHB0ciwgY29udGV4dFdpZHRoLCBjb250ZXh0SGVpZ2h0LCA4LCA0ICogY29udGV4dFdpZHRoLCBj
b2xvclNwYWNlLmdldCgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpKTsKKyAgICBh
dXRvIGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKKyAgICBhdXRv
IGNnQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKG51bGxwdHIsIGNvbnRl
eHRXaWR0aCwgY29udGV4dEhlaWdodCwgOCwgNCAqIGNvbnRleHRXaWR0aCwgY29sb3JTcGFjZS5w
bGF0Zm9ybUNvbG9yU3BhY2UoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSk7CiAg
ICAgR3JhcGhpY3NDb250ZXh0IGNvbnRleHQgeyBjZ0NvbnRleHQuZ2V0KCkgfTsKIAogICAgIGF1
dG8gaW1hZ2VCdWZmZXJJZGVudGlmaWVyID0gUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOjpn
ZW5lcmF0ZSgpOwpAQCAtNjksNyArNzAsNyBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIFJlcGxh
eVdpdGhNaXNzaW5nCiAgICAgfQogCiAgICAgewotICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZSh7IDEwMCwgMTAwIH0sIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4
KTsKKyAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoeyAxMDAs
IDEwMCB9LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBjb2xvclNwYWNlLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOwogICAgICAgICBJbWFnZUJ1ZmZlckhhc2hNYXAgaW1hZ2VCdWZmZXJN
YXA7CiAgICAgICAgIGltYWdlQnVmZmVyTWFwLnNldChpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIGlt
YWdlQnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429426</attachid>
            <date>2021-05-22 15:17:07 -0700</date>
            <delta_ts>2021-05-22 16:09:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226143-20210522151706.patch</filename>
            <type>text/plain</type>
            <size>268384</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5NSBAQAorMjAyMS0wNS0yMiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdyYXBwaW5nIGEgcGxhdGZvcm0gY29sb3Ig
c3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0Yy4pCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxNDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIGVudW1lcmF0aW9uIGJh
c2VkIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB3aXRoIGEgc3RydWN0IHdyYXBwaW5nCisgICAgICAg
IGEgcGxhdGZvcm0gY29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0
Yy4pLiBGb3IgcG9ydHMKKyAgICAgICAgdGhhdCBkb24ndCBoYXZlIGEgcGxhdGZvcm0gbGV2ZWwg
Y29sb3Igc3BhY2UgdHlwZSwgYSBidWlsdGluIFBsYXRmb3JtQ29sb3JTcGFjZQorICAgICAgICB0
eXBlIGlzIHByb3ZpZGVkIHRoYXQgaXMganVzdCB0aGUgb2xkIGVudW0gcmVuYW1lZCB0byBQbGF0
Zm9ybUNvbG9yU3BhY2U6Ok5hbWUuCisKKyAgICAgICAgVGhlIGdvYWwgb2YgdGhpcyBjaGFuZ2Ug
aXMgdG8gdW5pZnkgdGhlIGN1cnJlbnRseSBiaWZyYWNhdGVkIGNvbmNlcHQgb2YgYW4KKyAgICAg
ICAgSW1hZ2VCdWZmZXIncyBjb2xvciBzcGFjZSwgd2hpY2ggcHJldmlvc2x5IGNvdWxkIGVpdGhl
ciBiZSBiYXNlZCBvbiB0aGUgCisgICAgICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgYW5kIHJl
ZmxlY3RlZCBpbiB0aGUgY29sb3JTcGFjZSgpIG1lbWJlciBmdW5jdGlvbiwKKyAgICAgICAgb3Ig
KGZvciBDRyBwb3J0cykgYmFzZWQgb24gYSBDR0NvbG9yU3BhY2VSZWYsIHdpdGggdGhlIGNvbG9y
U3BhY2UoKSBmdW5jdGlvbgorICAgICAgICByZXR1cm5pbmcgc1JHQiBldmVuIGlmIHRoZSBJbWFn
ZUJ1ZmZlciB3YXMgbm90LiAKKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICog
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpD
bGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXJ0d29ya0ltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogU291cmNl
cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBJbWFnZUJpdG1hcCk6CisgICAgICAgIChXZWJD
b3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEltYWdlQml0bWFwKToKKyAgICAgICAgKiBjc3Mv
Q1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXJJbWFn
ZVZhbHVlOjppbWFnZSk6CisgICAgICAgICogaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludENhbnZhczo6Y29waWVkSW1hZ2UgY29uc3QpOgor
ICAgICAgICAqIGh0bWwvQ3VzdG9tUGFpbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
dXN0b21QYWludEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6dG9NZWRp
YVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1h
Z2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGVCdWZmZXJGb3JQYWludGlu
ZyBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAgICog
aHRtbC9JbWFnZUJpdG1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJpdG1hcDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCaXRtYXA6OmNyZWF0ZVBy
b21pc2UpOgorICAgICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Y29tbWl0VG9QbGFjZWhvbGRlckNhbnZhcyk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojpjb2xvclNwYWNlIGNvbnN0KToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0OjpzZXRPdXRwdXRCaXRtYXApOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnRvRGVzdGluYXRpb25Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvUHJlZGVmaW5l
ZENvbG9yU3BhY2UpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNl
Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1
ZmZlckNhY2hlOjppbWFnZUJ1ZmZlcik6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbkltYWdlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6YnVpbGRBcnJheUZvckNhbnZhc1BhdHRlcm4p
OgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6
Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAg
ICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hv
dHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RGcmFtZVJlY3RXaXRoQ2xpcCk6
CisgICAgICAgICogcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNhbXBsZUNvbG9yKToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9Ib3N0V2luZG93Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1Db2xv
clNwYWNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db2xvclNwYWNlOjpn
ZXQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2NyZWVuUHJvcGVydGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVu
UHJvcGVydGllczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVlbkRhdGE6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5EYXRhOjpkZWNvZGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3UGF0dGVybik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29s
b3I6OnRvQ29sb3JDb21wb25lbnRzSW5Db2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJDb2xvckNvbXBvbmVudHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yU3BhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25j
cmV0ZUltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVy
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRl
ZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpk
cmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xv
clNwYWNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IpOgorICAgICAgICAoV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5l
YXJTUkdCKToKKyAgICAgICAgKFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxh
eVAzKToKKyAgICAgICAgKFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGVzdGluYXRp
b25Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAgICAo
V2ViQ29yZTo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OnBsYXRmb3JtQ29sb3JT
cGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OmRl
Y29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJCYWNrZW5kOjpnZXRQaXhlbEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OnB1dFBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyQmFja2VuZDo6dHJhbnNmb3JtQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbG9yU3BhY2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1BpeGVsQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6
ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckNvbnZlcnNp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZVZJbWFnZUNHSW1hZ2VGb3JtYXQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1hdDo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cmFuc2Zl
ckJHUkFQaXhlbEJ1ZmZlclRvSU9TdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZVZp
ZGVvU2FtcGxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGU6
OlJlbW90ZVZpZGVvU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxl
OjpzdXJmYWNlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRl
b1NhbXBsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6Z2V0U2NyYXRjaEJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRp
bGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpibHVyU2hhZG93QnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdTaGFkb3dMYXllcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBh
aW50UmVzdWx0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyb0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0Jh
Y2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQ29sb3JDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9DR0NvbXBh
dGlibGVDb21wb25lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNHQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6cGxhdGZvcm1Db252ZXJ0Q29sb3JDb21wb25lbnRzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaDoKKyAgICAgICAgKFdlYkNvcmU6
OmNhY2hlZENHQ29sb3JTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdXJmYWNlTWF0
Y2hlc1BhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlUG9vbDo6dGFrZVN1
cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjb3B5Q0dJbWFnZUZv
ckVuY29kaW5nIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6
c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJC
YWNraW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW06CisgICAgICAg
IChXZWJDb3JlOjpJT1N1cmZhY2U6OnN1cmZhY2VGcm9tUG9vbCk6CisgICAgICAgIChXZWJDb3Jl
OjpJT1N1cmZhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0
ZUZyb21TZW5kUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9t
U3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21JbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21QaXhlbEJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OklPU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJT1N1cmZhY2U6OmVuc3VyZVBsYXRmb3JtQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJ
T1N1cmZhY2U6Om1pZ3JhdGVDb2xvclNwYWNlVG9Qcm9wZXJ0aWVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6cmVuZGVy
VG9JbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFu
c2ZlclNlc3Npb25WVC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlVHJhbnNmZXJTZXNzaW9u
VlQ6OmNyZWF0ZVBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9Q
aXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVy
Q29uZm9ybWVyQ1Y6OmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyOjpjcmVhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OmRlc3Ryb3kp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5n
Q29tbWFuZHM6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczo6Y29sb3JTcGFjZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5nQ29t
bWFuZHM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVn
aW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6R2V0UGl4ZWxCdWZmZXI6OkdldFBpeGVsQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpHZXRQaXhlbEJ1ZmZlcjo6b3V0cHV0Rm9ybWF0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpHZXRQaXhlbEJ1ZmZlcjo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpHZXRQaXhlbEJ1ZmZlcjo6ZGVjb2Rl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNs
aXBUb0RyYXdpbmdDb21tYW5kcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlz
cGxhY2VtZW50TWFwOjpzZXRSZXN1bHRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRVRpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVs
QnVmZmVyVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29u
dmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVm
ZmVjdDo6Y29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0aW5hdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRQaXhlbEJ1ZmZlclRvRGVzdGluYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpyZXF1aXJlc1BpeGVsQnVmZmVy
Q29sb3JTcGFjZUNvbnZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojp0
cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpv
cGVyYXRpbmdDb2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6c2V0T3BlcmF0aW5nQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OnJlc3VsdENvbG9yU3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZm
ZWN0OjpzZXRSZXN1bHRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL1NvdXJjZUdyYXBoaWMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6
OlNvdXJjZUdyYXBoaWMpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5JT1MubW06CisgICAgICAgIChXZWJDb3JlOjpzY3Jl
ZW5Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RTY3JlZW5Qcm9wZXJ0aWVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5NYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpjb2xsZWN0U2NyZWVuUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpz
Y3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50
b0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNw
bGF5Q2FwdHVyZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5EaXNwbGF5Q2FwdHVy
ZXJNYWM6OmNyZWF0ZURpc3BsYXlTdHJlYW0pOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2U6OmltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9wbGF5
c3RhdGlvbi9QbGF0Zm9ybVNjcmVlblBsYXlTdGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNjcmVlbkNvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVl
bldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS93cGUvUGxhdGZvcm1TY3JlZW5XUEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oOgor
ICAgICAgICAoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YTo6ZGVjb2Rl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZpbHRlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
RmlsdGVyOjpidWlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmFsbG9jYXRlQmFj
a2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjphcHBseSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnBhdHRlcm5Gb3JEZXNjcmlwdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50U3lz
dGVtUHJldmlld0JhZGdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRQcm9ncmVzc0Jhcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
aGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VDbGlwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291
cmNlQ2xpcHBlcjo6YXBwbHlDbGlwcGluZ1RvQ29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1hc2tBbmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6ZHJhd0NvbnRlbnRJ
bnRvTWFza0ltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
TWFza2VyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRl
cm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpjcmVh
dGVUaWxlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5n
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVh
dGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0Ojpi
dWZmZXJGb3JlZ3JvdW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0Nv
bnRleHQuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUpOgorCiAyMDIxLTA1LTIyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiBDb21wb25lbnQgYXQgaW5kZXgg
MSBpcyAxLjAwMDAwMCBhbmQgaXMgZ3JlYXRlciB0aGFuIHRoZSBhbGxvd2VkIG1heGltdW0gMS4w
MDAwMDAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTE5Nyw2ICsxMTk3LDcg
QEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Rhc2hB
cnJheS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGVjb2RpbmdPcHRpb25zLmgKKyAgICBwbGF0
Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxh
eVJlZnJlc2hNb25pdG9yQ2xpZW50LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVm
cmVzaE1vbml0b3JGYWN0b3J5LmgKQEAgLTEyOTMsNiArMTI5NCw3IEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZl
ci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1BpeGVsRm9ybWF0LmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bUNvbG9yU3BhY2UuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE5
NTAsNiArMTk1MCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhU
ZXh0Q29udHJvbGxlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBi
b2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NE
YXRhU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2wKIAogICAgICAgICBhdXRvIGJpdG1hcElt
YWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgICAgICBiaXRtYXBJbWFnZS0+c2V0RGF0
YShXVEZNb3ZlKGJ1ZmZlclRvU2FuaXRpemUpLCB0cnVlKTsKLSAgICAgICAgYXV0byBpbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
LCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
ICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikgewogICAgICAgICAgICAgbV9kYXRhID0geyBudWxs
U3RyaW5nKCkgfTsKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1l
dGFkYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCB2b2lkIEFydHdvcmtJ
bWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyVG9TYW5pdGl6ZSA9IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBhdXRv
IGJpdG1hcEltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIGJpdG1hcEltYWdlLT5z
ZXREYXRhKFdURk1vdmUoYnVmZmVyVG9TYW5pdGl6ZSksIHRydWUpOwotICAgIGF1dG8gaW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJpdG1hcEltYWdlLT5zaXplKCksIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAg
ICBpZiAoIWltYWdlQnVmZmVyKSB7CiAgICAgICAgIG1fY2FsbGJhY2sobnVsbHB0cik7CiAgICAg
ICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjc3OTIwKQorKysg
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEz
IEBACisyMDIxLTA1LTIyICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAg
ICBDb252ZXJ0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBmcm9tIGFuIGVudW0gdG8gY2xhc3Mgd3Jh
cHBpbmcgYSBwbGF0Zm9ybSBjb2xvciBzcGFjZSAoQ0dDb2xvclNwYWNlUmVmIGZvciBDRyBwb3J0
cywgZXRjLikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyNjE0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDoKKyAgICAgICAgQWRkIGFkZGlvbmFsIFNQ
SSBmb3Igd29ya2luZyB3aXRoIENHQ29sb3JTcGFjZVJlZnMuCisKIDIwMjEtMDUtMjEgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBZG9w
dCBRTEl0ZW0gaW4gV0tJbWFnZUV4dHJhY3Rpb25QcmV2aWV3Q29udHJvbGxlcgpJbmRleDogU291
cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGlj
c1NQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDIsNiArMjQyLDcgQEAgdHlwZWRlZiB2b2lkICgq
Q0dTTm90aWZ5UHJvY1B0cikoQ0dTTm90aQogCiBXVEZfRVhURVJOX0NfQkVHSU4KIAorYm9vbCBD
R0NvbG9yVHJhbnNmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyhDR0NvbG9yVHJhbnNmb3JtUmVm
LCBDR0NvbG9yU3BhY2VSZWYsIENHQ29sb3JSZW5kZXJpbmdJbnRlbnQsIGNvbnN0IENHRmxvYXQg
c3JjQ29tcG9uZW50c1tdLCBDR0Zsb2F0IGRzdENvbXBvbmVudHNbXSk7CiBDR0NvbG9yUmVmIENH
Q29sb3JUcmFuc2Zvcm1Db252ZXJ0Q29sb3IoQ0dDb2xvclRyYW5zZm9ybVJlZiwgQ0dDb2xvclJl
ZiwgQ0dDb2xvclJlbmRlcmluZ0ludGVudCk7CiBDR0NvbG9yVHJhbnNmb3JtUmVmIENHQ29sb3JU
cmFuc2Zvcm1DcmVhdGUoQ0dDb2xvclNwYWNlUmVmLCBDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRl
cyk7CiAKQEAgLTI5MSw2ICsyOTIsOCBAQCBDR1N0eWxlUmVmIENHR1N0YXRlR2V0U3R5bGUoQ0dH
U3RhdGVSZWYpCiBDR1N0eWxlVHlwZSBDR1N0eWxlR2V0VHlwZShDR1N0eWxlUmVmKTsKIGNvbnN0
IHZvaWQgKkNHU3R5bGVHZXREYXRhKENHU3R5bGVSZWYpOwogQ0dDb2xvclJlZiBDR1N0eWxlR2V0
Q29sb3IoQ0dTdHlsZVJlZik7Citib29sIENHQ29sb3JTcGFjZUVxdWFsVG9Db2xvclNwYWNlKENH
Q29sb3JTcGFjZVJlZiwgQ0dDb2xvclNwYWNlUmVmKTsKK0NGU3RyaW5nUmVmIENHQ29sb3JTcGFj
ZUNvcHlJQ0NQcm9maWxlRGVzY3JpcHRpb24oQ0dDb2xvclNwYWNlUmVmKTsKIAogI2lmIEhBVkUo
Q0dQQVRIX0dFVF9OVU1CRVJfT0ZfRUxFTUVOVFMpCiBzaXplX3QgQ0dQYXRoR2V0TnVtYmVyT2ZF
bGVtZW50cyhDR1BhdGhSZWYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0zOTk2LDYgKzM5OTYsNyBAQAogCQlCQzIzRjBEQjBEQUZGNEE0MDA5RkRDOTEgLyogR2VuZXJh
dGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMjNGMERBMERBRkY0QTQwMDlGREM5MSAvKiBHZW5lcmF0ZWRJbWFnZS5oICovOyB9OwogCQlC
QzI3NEIyRjE0MEVCRUIyMDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI3NEIyRTE0MEVC
RUIyMDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggKi87IH07CiAJCUJDMkNC
RjRFMTQwRjFBQkQwMDM4NzlCRSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJDQkY0QjE0MEYxQTY1MDAzODc5
QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oICovOyB9OworCQlCQzJDQ0ExMDI2NTVEREIyMDBC
OEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJDQ0EwRTI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGlu
YXRpb25Db2xvclNwYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQkMzMDVDN0EwQzA3NkJCMzAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzA1
Qzc4MEMwNzZCQjMwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50LmggKi87IH07CiAJCUJD
MzQ4QkQ0MERCN0Y4MDQwMDRBQkFCOSAvKiBKU1hNTEh0dHBSZXF1ZXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzM0OEJEMjBEQjdGODA0MDA0QUJB
QjkgLyogSlNYTUxIdHRwUmVxdWVzdC5oICovOyB9OwogCQlCQzM0OEJENDBEQjdGODA0MDA0QUJB
QkEgLyogV2ViQ29yZUpTQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDMzQ4QkQyMERCN0Y4MDQwMDRBQkFCQSAvKiBXZWJDb3JlSlNCdWls
dGlucy5oICovOyB9OwpAQCAtNDAwNyw2ICs0MDA4LDcgQEAKIAkJQkMzQkU5OTkwRTlDMUU1RDAw
ODM1NTg4IC8qIFJlbmRlclNjcm9sbGJhclRoZW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzNCRTk5ODBFOUMxRTVEMDA4MzU1ODggLyogUmVuZGVy
U2Nyb2xsYmFyVGhlbWUuaCAqLzsgfTsKIAkJQkMzQzM5QjcwQzBEM0Q4RDAwNUY0RDdBIC8qIEpT
TWVkaWFMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzNDMzlCNTBDMEQzRDhEMDA1RjREN0EgLyogSlNNZWRpYUxpc3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzNEODVCQzFDMEUyRTdBMDBE
M0I2MTAgLyogSlNIVE1MUGljdHVyZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODA4QjEzMUMwRTJCMzUwMDY2RkQ2QiAvKiBKU0hUTUxQ
aWN0dXJlRWxlbWVudC5oICovOyB9OworCQlCQzNFNjI0MzI2NTk3OTE4MDA1NDhBQ0QgLyogUGxh
dGZvcm1Db2xvclNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzNFNjI0MjI2NTk3OTE3MDA1NDhBQ0QgLyogUGxhdGZvcm1Db2xvclNwYWNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM0MzY4
RTgwQzIyNkUzMjAwNUVGQjVGIC8qIFJlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDNDM2OEU3MEMyMjZFMzIwMDVFRkI1RiAvKiBSZWN0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM0NkMxRkQw
QzBEREM4RjAwMjBDRkMzIC8qIEpTQ1NTRm9udEZhY2VSdWxlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzQ2QzFGMzBDMEREQzhGMDAyMENGQzMgLyog
SlNDU1NGb250RmFjZVJ1bGUuaCAqLzsgfTsKIAkJQkM0NkMxRkYwQzBEREM4RjAwMjBDRkMzIC8q
IEpTQ1NTSW1wb3J0UnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkM0NkMxRjUwQzBEREM4RjAwMjBDRkMzIC8qIEpTQ1NTSW1wb3J0UnVsZS5oICov
OyB9OwpAQCAtMTQxMzQsNiArMTQxMzYsOCBAQAogCQlCQzI5OTM1QzE3QTFERDU4MDBCQ0U4ODAg
LyogQ29sb3JJbnB1dFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ29sb3JJbnB1dFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJD
QkY0QjE0MEYxQTY1MDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMQ29udGV4dEV2ZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDMkNCRjdBMTQwRjFENTgwMDM4NzlCRSAvKiBKU1dlYkdMQ29u
dGV4dEV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2Vi
R0xDb250ZXh0RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJDQ0Ew
RTI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCQzJDQ0EwRjI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDMkVENTU0MEM2QjlCRDMwMDkyMEJGRiAvKiBKU0VsZW1lbnRD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFbGVtZW50
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyRUQ2QkIwQzZCRDJG
MDAwOTIwQkZGIC8qIEpTQXR0ckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0F0dHJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQzMwNUM3NzBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MT2JqZWN0RWxlbWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDE1Nyw2ICsxNDE2MSw3IEBACiAJ
CUJDM0JFOUFBMEU5QzI0MjAwMDgzNTU4OCAvKiBSZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNjcm9sbGJhclBhcnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzNDMzlCNDBDMEQzRDhEMDA1RjREN0Eg
LyogSlNNZWRpYUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTTWVkaWFMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzQzM5QjUw
QzBEM0Q4RDAwNUY0RDdBIC8qIEpTTWVkaWFMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU01lZGlhTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
QzNFNjI0MjI2NTk3OTE3MDA1NDhBQ0QgLyogUGxhdGZvcm1Db2xvclNwYWNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtQ29sb3JTcGFjZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQzQzNjhFNzBDMjI2RTMyMDA1RUZCNUYgLyogUmVjdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVjdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQzQ2QzFFRDBDMEREQkRGMDAyMENGQzMgLyogSlNDU1NSdWxlQ3VzdG9t
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NTU1J1bGVDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzQ2QzFGMjBDMEREQzhGMDAy
MENGQzMgLyogSlNDU1NGb250RmFjZVJ1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTQ1NTRm9udEZhY2VSdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTI2OTI1LDYgKzI2OTMwLDggQEAKIAkJCQkyRDJGQzA1NTE0NjBDRDZGMDAyNjM2
MzMgLyogQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaCAqLywKIAkJCQlBOENCNDEwMjBFODVCOEE1
MDAzMkM0RjAgLyogRGFzaEFycmF5LmggKi8sCiAJCQkJNTU1MTMwMDAxRTdDQ0NDQTAwQTY5RTM4
IC8qIERlY29kaW5nT3B0aW9ucy5oICovLAorCQkJCUJDMkNDQTBGMjY1NUREQjIwMEI4QzAzNSAv
KiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuY3BwICovLAorCQkJCUJDMkNDQTBFMjY1NUREQjIwMEI4
QzAzNSAvKiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCAqLywKIAkJCQk0OUZDN0E0RjE0NDRBRjVG
MDBBNUQ4NjQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCAqLywKIAkJCQk0OUFGMkQ2ODE0
NDM1RDA1MDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmggKi8sCiAJCQkJMkQyOUVD
QzExOTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5jcHAgKi8s
CkBAIC0yNzEwMSw2ICsyNzEwOCw3IEBACiAJCQkJQkM2MzVFOEIyNjRDMkNBRTAwMEVGMzNBIC8q
IFBpeGVsQnVmZmVyRm9ybWF0LmggKi8sCiAJCQkJQkM2MzVFOTAyNjRDNDY5RjAwMEVGMzNBIC8q
IFBpeGVsRm9ybWF0LmNwcCAqLywKIAkJCQlCQ0E1NTkxMjI2M0RCRDc5MDA3RjE5QjMgLyogUGl4
ZWxGb3JtYXQuaCAqLywKKwkJCQlCQzNFNjI0MjI2NTk3OTE3MDA1NDhBQ0QgLyogUGxhdGZvcm1D
b2xvclNwYWNlLmggKi8sCiAJCQkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3Jt
SW1hZ2UuaCAqLywKIAkJCQk3MkJBQzNBNjIzRTE3MzI4MDA4RDc0MUMgLyogUGxhdGZvcm1JbWFn
ZUJ1ZmZlci5oICovLAogCQkJCTU1MDY0MEFEMjQwNzU2REEwMEFBRTA0NSAvKiBQbGF0Zm9ybUlt
YWdlQnVmZmVyQmFja2VuZC5oICovLApAQCAtMzIyMzAsNiArMzIyMzgsNyBAQAogCQkJCTk0Nzk0
OTI1MUUwMzA4QUYwMDAxOEQ4NSAvKiBEZXByZWNhdGVkQ1NTT01WYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTQ3OTQ5M0QxRTA0NjNCNjAwMDE4RDg1IC8qIERlcHJlY2F0ZWRDU1NPTVZhbHVl
TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NCRDEyOUUxRjk4QjkwRTAwMTI3RDI5IC8qIERl
cHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMyQ0NBMTAyNjU1
RERCMjAwQjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDExMjIzQzUyNjAzNTY3RDAwQjBBMEI2IC8qIERldGFjaGVkUlRDRGF0YUNoYW5uZWwuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3QzlBQkY5MTM1N0EzQkYwMEY1NTAzRiAvKiBEZXRhaWxzTWFy
a2VyQ29udHJvbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFFRDc3OEQxQkUzMjk0MDAwREMxNzkx
IC8qIERldmljZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjI4MSw2ICszMjI5MCw3IEBACiAJCQkJ
MUNFOEQxMjcyNjE4NUMwRTAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZp
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ1MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNw
bGF5TGlzdEl0ZW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDM3N0Q1NzI1NTFDOUM2MDA4MEFC
RkUgLyogRGlzcGxheUxpc3RJdGVtVHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMzRTYyNDMy
NjU5NzkxODAwNTQ4QUNEIC8qIFBsYXRmb3JtQ29sb3JTcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUNFOEQxMkUyNjE4NjFDNDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRTVGQkQ3MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJl
Y29yZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1RkJEOTFDM0RENTFFMDAwN0EyQ0EgLyog
RGlzcGxheUxpc3RSZXBsYXllci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwODIsNyArMTA4Miw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBQaXhlbEJ1ZmZlckZv
cm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhl
bEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgICAgICBQ
aXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0
aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
IH07CiAgICAgICAgIGNvbnN0IEludFNpemUmIGxvZ2ljYWxTaXplID0gYnVmZmVyLT5sb2dpY2Fs
U2l6ZSgpOwogICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gYnVmZmVyLT5nZXRQaXhlbEJ1ZmZl
cihmb3JtYXQsIHsgSW50UG9pbnQ6Onplcm8oKSwgbG9naWNhbFNpemUgfSk7CiAgICAgICAgIGlm
ICghcGl4ZWxCdWZmZXIpIHsKQEAgLTMxODcsNyArMzE4Nyw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgUGl4ZWxCdWZmZXJG
b3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4
ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICAgICAg
UGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVs
dGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSB9OwogICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShm
b3JtYXQsIGltYWdlRGF0YVNpemUsIGFycmF5QnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwogICAg
ICAgICBpZiAoIXBpeGVsQnVmZmVyKSB7CiAgICAgICAgICAgICBmYWlsKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExNiw3ICsxMTYsNyBAQCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFs
dWU6OmltYWdlCiAKICAgICAvLyBUcmFuc2Zvcm0gSW1hZ2UgaW50byBJbWFnZUJ1ZmZlci4KICAg
ICAvLyBGSVhNRSAoMTQ5NDI0KTogVGhpcyBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlv
bmFsbHkgdW5hY2NlbGVyYXRlZC4KLSAgICBhdXRvIHRleHR1cmUgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIHRleHR1cmUgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAg
IGlmICghdGV4dHVyZSkKICAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCShyZXZpc2lvbiAy
Nzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTIsNyArOTIsNyBAQCBJbWFnZSogQ3VzdG9tUGFpbnRDYW52YXM6OmNv
cGllZEltYWdlKCkgCiAgICAgaWYgKCF3aWR0aCgpIHx8ICFoZWlnaHQoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBtX2NvcGllZEJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCwgbnVsbHB0cik7CisgICAgbV9jb3BpZWRC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCwgbnVsbHB0cik7CiAgICAgaWYgKCFtX2NvcGllZEJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRJbWFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludEltYWdlLmNw
cAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludElt
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgQ3VzdG9tUGFp
bnRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGgKICAgICBhZGp1c3RlZFBhdHRlcm5DVE0uc2NhbGUo
MS4wIC8geFNjYWxlLCAxLjAgLyB5U2NhbGUpOwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZSh4
U2NhbGUsIHlTY2FsZSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKGFkanVzdGVkU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
LCBkZXN0Q29udGV4dCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBkZXN0Q29udGV4dCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybjsKICAgICBk
b0N1c3RvbVBhaW50KGJ1ZmZlci0+Y29udGV4dCgpLCBhZGp1c3RlZFNpemUpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MjUsNyArODI1LDcgQEAgUmVmUHRyPE1lZGlhU2FtcGxlPiBIVE1MQ2FudmFzRWxl
bWVudDo6dAogICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBsaWtlbHkgYmUgb3B0aW1pemVkIHF1aXRl
IGEgYml0LCBlc3BlY2lhbGx5IGluIHRoZSBjYXNlcyB3aGVyZQogICAgIC8vIHRoZSBJbWFnZUJ1
ZmZlciBpcyBiYWNrZWQgYnkgR1BVIG1lbW9yeSBhbHJlYWR5IGFuZC9vciBpcyBpbiB0aGUgR1BV
IHByb2Nlc3MgYnkKICAgICAvLyBzcGVjaWFsaXppbmcgdG9NZWRpYVNhbXBsZSgpIGluIEltYWdl
QnVmZmVyQmFja2VuZCB0byBub3QgdXNlIGdldFBpeGVsQnVmZmVyKCkuCi0gICAgYXV0byBwaXhl
bEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5nZXRQaXhlbEJ1ZmZlcih7IEFscGhhUHJlbXVsdGlwbGlj
YXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IgfSwgeyB7IH0sIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpIH0pOwor
ICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoeyBBbHBo
YVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfSwgeyB7IH0sIGltYWdlQnVmZmVyLT5sb2dp
Y2FsU2l6ZSgpIH0pOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCkBAIC05NTUsNyArOTU1LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRl
SW1hZ2VCdWZmZQogICAgIGF1dG8gW2NvbG9yU3BhY2UsIHBpeGVsRm9ybWF0XSA9IFsmXSB7CiAg
ICAgICAgIGlmIChtX2NvbnRleHQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpwYWlyIHsgbV9j
b250ZXh0LT5jb2xvclNwYWNlKCksIG1fY29udGV4dC0+cGl4ZWxGb3JtYXQoKSB9OwotICAgICAg
ICByZXR1cm4gc3RkOjpwYWlyIHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZv
cm1hdDo6QkdSQTggfTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6cGFpciB7IERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTggfTsKICAgICB9KCk7CiAKICAgICBz
ZXRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgcmVuZGVyaW5nTW9kZSwg
dXNlRGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1cnBvc2U6OkNhbnZhcywgMSwgY29sb3JTcGFjZSwg
cGl4ZWxGb3JtYXQsIGhvc3RXaW5kb3cpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDcgKzI4MSw3IEBA
IHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6bWVkaWFQbGF5ZXJGaXJzdFYKICAgICAgICAgcmVuZGVy
ZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSFRNTFZp
ZGVvRWxlbWVudDo6Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29uc3QKK1JlZlB0cjxJbWFnZUJ1ZmZl
cj4gSFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CiB7
CiAgICAgYXV0byogaG9zdFdpbmRvdyA9IGRvY3VtZW50KCkudmlldygpICYmIGRvY3VtZW50KCku
dmlldygpLT5yb290KCkgPyBkb2N1bWVudCgpLnZpZXcoKS0+cm9vdCgpLT5ob3N0V2luZG93KCkg
OiBudWxscHRyOwogICAgIGF1dG8gc2hvdWxkVXNlRGlzcGxheUxpc3QgPSBkb2N1bWVudCgpLnNl
dHRpbmdzKCkuZGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZCgpID8gU2hvdWxkVXNlRGlzcGxheUxp
c3Q6OlllcyA6IFNob3VsZFVzZURpc3BsYXlMaXN0OjpObzsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTIgKzMzLDEy
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNl
OwogY2xhc3MgSFRNTEltYWdlTG9hZGVyOwogY2xhc3MgSW1hZ2VCdWZmZXI7CiBjbGFzcyBSZW5k
ZXJWaWRlbzsKIGNsYXNzIFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlcjsKIAotZW51bSBjbGFzcyBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgOiB1aW50OF90OwogZW51bSBjbGFzcyBQaXhlbEZvcm1hdCA6
IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOwogCkBAIC03Miw3ICs3
Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCkgb3ZlcnJp
ZGU7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQnVmZmVyRm9yUGFp
bnRpbmcoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgRGVzdGluYXRpb25Db2xvclNw
YWNlLCBQaXhlbEZvcm1hdCkgY29uc3Q7CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVC
dWZmZXJGb3JQYWludGluZyhjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCkgY29uc3Q7CiAKICAgICAvLyBVc2Vk
IGJ5IGNhbnZhcyB0byBnYWluIHJhdyBwaXhlbCBhY2Nlc3MKICAgICB2b2lkIHBhaW50Q3VycmVu
dEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCwx
MiArODQsMTIgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJpdG1hcDo6Y3JlYXRlSQogICAg
ICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25D
b250ZXh0KTsKICAgICAgICAgaWYgKGRvY3VtZW50LnZpZXcoKSAmJiBkb2N1bWVudC52aWV3KCkt
PnJvb3QoKSkgewogICAgICAgICAgICAgYXV0byBob3N0V2luZG93ID0gZG9jdW1lbnQudmlldygp
LT5yb290KCktPmhvc3RXaW5kb3coKTsKLSAgICAgICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0OjpObywgUmVu
ZGVyaW5nUHVycG9zZTo6Q2FudmFzLCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBob3N0V2luZG93KTsKKyAgICAgICAgICAg
IHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIFNob3VsZFVz
ZURpc3BsYXlMaXN0OjpObywgUmVuZGVyaW5nUHVycG9zZTo6Q2FudmFzLCByZXNvbHV0aW9uU2Nh
bGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGhv
c3RXaW5kb3cpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gRklYTUUgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzIxODQ4Mj4gRW5hYmxlIHdvcmtlciBiYXNlZCBJbWFnZUJpdG1hcCBhbmQgT2Zm
c2NyZWVuQ2FudmFzIGRyYXdpbmcgdG8gdXNlIEdQVSBQcm9jZXNzIHJlbmRlcmluZwotICAgIHJl
dHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25T
Y2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwor
ICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29s
dXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CiB9CiAKIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgSW1hZ2VCaXRtYXA6OlNvdXJjZSYm
IHNvdXJjZSwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgSW1hZ2VCaXRtYXA6OlByb21p
c2UmJiBwcm9taXNlKQpAQCAtNTA0LDcgKzUwNCw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0
ZVByb21pc2UoU2NyaXB0RXgKICAgICBhdXRvIG91dHB1dFNpemUgPSBvdXRwdXRTaXplRm9yU291
cmNlUmVjdGFuZ2xlKHNvdXJjZVJlY3RhbmdsZSwgb3B0aW9ucyk7CiAKICAgICAvLyBGSVhNRTog
QWRkIHN1cHBvcnQgZm9yIGNvbG9yIHNwYWNlcyAvIHBpeGVsIGZvcm1hdHMgdG8gSW1hZ2VCaXRt
YXAuCi0gICAgYXV0byBiaXRtYXBEYXRhID0gdmlkZW8tPmNyZWF0ZUJ1ZmZlckZvclBhaW50aW5n
KG91dHB1dFNpemUsIGJ1ZmZlclJlbmRlcmluZ01vZGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGJpdG1hcERhdGEgPSB2aWRlby0+
Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcob3V0cHV0U2l6ZSwgYnVmZmVyUmVuZGVyaW5nTW9kZSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAg
aWYgKCFiaXRtYXBEYXRhKSB7CiAgICAgICAgIHJlc29sdmVXaXRoQmxhbmtJbWFnZUJ1ZmZlcihz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCAhdGFpbnRzT3JpZ2luKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuc2VjdXJpdHlPcmlnaW4oKSwgKnZpZGVvKSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgICAg
IHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDUxLDE0ICs0NTEsMTQgQEAgdm9pZCBPZmZzY3JlZW5DYW52
YXM6OmNvbW1pdFRvUGxhY2Vob2xkZQogICAgICAgICBtX2NvbnRleHQtPnBhaW50UmVuZGVyaW5n
UmVzdWx0c1RvQ2FudmFzKCk7CiAKICAgICBpZiAobV9wbGFjZWhvbGRlckRhdGEtPmJ1ZmZlclBp
cGVTb3VyY2UpIHsKLSAgICAgICAgYXV0byBidWZmZXJDb3B5ID0gaW1hZ2VCdWZmZXItPmNvcHlS
ZWN0VG9CdWZmZXIoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxT
aXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGltYWdlQnVmZmVyLT5jb250ZXh0
KCkpOworICAgICAgICBhdXRvIGJ1ZmZlckNvcHkgPSBpbWFnZUJ1ZmZlci0+Y29weVJlY3RUb0J1
ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSks
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsK
ICAgICAgICAgaWYgKGJ1ZmZlckNvcHkpCiAgICAgICAgICAgICBtX3BsYWNlaG9sZGVyRGF0YS0+
YnVmZmVyUGlwZVNvdXJjZS0+aGFuZGxlKFdURk1vdmUoYnVmZmVyQ29weSkpOwogICAgIH0KIAog
ICAgIExvY2tlciBsb2NrZXIgeyBtX3BsYWNlaG9sZGVyRGF0YS0+YnVmZmVyTG9jayB9OwogICAg
IGJvb2wgc2hvdWxkUHVzaEJ1ZmZlciA9ICFtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1p
dEJ1ZmZlcjsKLSAgICBtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlciA9IGlt
YWdlQnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdl
QnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBpbWFn
ZUJ1ZmZlci0+Y29udGV4dCgpKTsKKyAgICBtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1p
dEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIGltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwogICAgIGlmIChtX3BsYWNlaG9sZGVy
RGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlciAmJiBzaG91bGRQdXNoQnVmZmVyKQogICAgICAgICBw
dXNoQnVmZmVyVG9QbGFjZWhvbGRlcigpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAi
Q1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VySGVscGVycy5o
IgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VyV29ya2VyU2FmZS5oIgotI2luY2x1ZGUgIkNv
bG9yU3BhY2UuaCIKICNpbmNsdWRlICJHcmFkaWVudC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVy
LmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNhY2hl
ZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2FudmFzUGF0dGVybi5oIgotI2luY2x1ZGUgIkNvbG9yU3Bh
Y2UuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJIVE1M
Q2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MVmlkZW9FbGVtZW50LmgiCkBAIC05MCw3ICs5MCw3IEBAIFBpeGVsRm9ybWF0IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQ6OnBpeGUKIAogRGVzdGluYXRpb25Db2xvclNwYWNlIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQ6OmNvbG9yU3BhY2UoKSBjb25zdAogewotICAgIHJldHVybiBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0I7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpOwogfQogCiBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRPcmln
aW4oY29uc3QgQ2FudmFzUGF0dGVybiogcGF0dGVybikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTMgKzM3LDEzIEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENhbnZhc1BhdHRlcm47CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7
CiBjbGFzcyBIVE1MQ2FudmFzRWxlbWVudDsKIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiBjbGFz
cyBIVE1MVmlkZW9FbGVtZW50OwogY2xhc3MgSW1hZ2VCaXRtYXA7CiBjbGFzcyBUeXBlZE9NQ1NT
SW1hZ2VWYWx1ZTsKIGNsYXNzIFdlYkdMT2JqZWN0OwotZW51bSBjbGFzcyBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgOiB1aW50OF90OwogZW51bSBjbGFzcyBQaXhlbEZvcm1hdCA6IHVpbnQ4X3Q7CiAK
IGNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29u
dGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VC
aXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCB2b2lkIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4
dDo6c2V0T3V0CiAgICAgICAgIC8vIG9ubHkgcmVhc29uIEkgY2FuIHRoaW5rIG9mIGlzIHRvRGF0
YVVSTCgpLCBidXQgdGhhdCBkb2Vzbid0IHNlZW0gbGlrZQogICAgICAgICAvLyBhIGdvb2QgZW5v
dWdoIGFyZ3VtZW50IHRvIHdhc3RlIG1lbW9yeS4KIAotICAgICAgICBjYW52YXMoKS0+c2V0SW1h
Z2VCdWZmZXJBbmRNYXJrRGlydHkoSW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUoY2FudmFz
KCktPndpZHRoKCksIGNhbnZhcygpLT5oZWlnaHQoKSksIGJ1ZmZlclJlbmRlcmluZ01vZGUsIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CisgICAg
ICAgIGNhbnZhcygpLT5zZXRJbWFnZUJ1ZmZlckFuZE1hcmtEaXJ0eShJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKEZsb2F0U2l6ZShjYW52YXMoKS0+d2lkdGgoKSwgY2FudmFzKCktPmhlaWdodCgpKSwgYnVm
ZmVyUmVuZGVyaW5nTW9kZSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVs
Rm9ybWF0OjpCR1JBOCkpOwogCiAgICAgICAgIC8vIDEuNC4gU2V0IHRoZSBvdXRwdXQgYml0bWFw
J3Mgb3JpZ2luLWNsZWFuIGZsYWcgdG8gdHJ1ZS4KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmNwcAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiUHJlZGVmaW5lZENvbG9yU3BhY2UuaCIKIAotI2luY2x1ZGUgIkNvbG9yU3Bh
Y2UuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlIDx3dGYv
T3B0aW9uYWwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsMzMgKzM1LDI2IEBAIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSB0b0Rlc3RpbmF0aW9uQ29sb3IKIHsKICAgICBzd2l0Y2ggKGNv
bG9yU3BhY2UpIHsKICAgICBjYXNlIFByZWRlZmluZWRDb2xvclNwYWNlOjpTUkdCOgotICAgICAg
ICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOworICAgICAgICByZXR1cm4gRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9S
X1NQQUNFX0RJU1BMQVlfUDMpCiAgICAgY2FzZSBQcmVkZWZpbmVkQ29sb3JTcGFjZTo6RGlzcGxh
eVAzOgotICAgICAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDM7Cisg
ICAgICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMygpOwogI2VuZGlm
CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQjsKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCk7CiB9CiAKLU9wdGlvbmFsPFByZWRlZmluZWRDb2xvclNwYWNlPiB0b1ByZWRlZmluZWRD
b2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKQorT3B0aW9uYWw8UHJl
ZGVmaW5lZENvbG9yU3BhY2U+IHRvUHJlZGVmaW5lZENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQogewotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewot
ICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOgorICAgIGlmIChjb2xvclNwYWNl
ID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKQogICAgICAgICByZXR1cm4gUHJlZGVm
aW5lZENvbG9yU3BhY2U6OlNSR0I7Ci0jaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNF
X0xJTkVBUl9TUkdCKQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdC
OgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotI2VuZGlmCiAjaWYgRU5BQkxFKERFU1RJ
TkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCi0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OkRpc3BsYXlQMzoKKyAgICBpZiAoY29sb3JTcGFjZSA9PSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OkRpc3BsYXlQMygpKQogICAgICAgICByZXR1cm4gUHJlZGVmaW5lZENvbG9yU3BhY2U6
OkRpc3BsYXlQMzsKICNlbmRpZgotICAgIH0KIAotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuaAkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVu
dW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDogdWludDhfdDsKK2NsYXNzIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTsKIAogZW51bSBjbGFzcyBQcmVkZWZpbmVkQ29sb3JTcGFjZSB7CiAgICAg
U1JHQgpAQCAtNDAsNyArNDAsNyBAQCBlbnVtIGNsYXNzIFByZWRlZmluZWRDb2xvclNwYWNlIHsK
IH07CiAKIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB0b0Rlc3RpbmF0aW9uQ29sb3JTcGFjZShQcmVk
ZWZpbmVkQ29sb3JTcGFjZSk7Ci1PcHRpb25hbDxQcmVkZWZpbmVkQ29sb3JTcGFjZT4gdG9QcmVk
ZWZpbmVkQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpOworT3B0aW9uYWw8UHJlZGVm
aW5lZENvbG9yU3BhY2U+IHRvUHJlZGVmaW5lZENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJik7CiAKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAJKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjIzLDcgKzc2MjMsNyBAQCBJbWFnZUJ1ZmZlciog
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6CiAgICAgfQogCiAgICAgLy8gRklYTUUgKDE0OTQy
Myk6IFNob3VsZCB0aGlzIEltYWdlQnVmZmVyIGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJh
dGVkPwotICAgIGF1dG8gdGVtcCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gdGVtcCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6
ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCF0ZW1wKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICBBU1NFUlQobV9idWZmZXJzLnNpemUoKSA+IDApOwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVy
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFRleHRUcmFja0NvbnRh
aW5lckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTgsNyArNDE4LDcgQEAgUmVmUHRy
PEltYWdlPiBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YQogICAgIEludFJlY3QgcGFpbnRpbmdS
ZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+c2l6ZSgpKTsKIAogICAgIC8vIEZJWE1F
ICgxNDk0MjIpOiBUaGlzIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFj
Y2VsZXJhdGVkLgotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGlu
Z1JlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBkZXZpY2VTY2FsZUZh
Y3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwor
ICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGluZ1JlY3Quc2l6ZSgp
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFi
dWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExNDksNyArMTE0OSw3IEBAIGludCBJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YShE
dXBsaWMKICAgICAgICAgICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBpbWFnZUVs
ZW1lbnQtPmNhY2hlZEltYWdlKCkpIHsKICAgICAgICAgICAgICAgICBJbWFnZSogaW1hZ2UgPSBj
YWNoZWRJbWFnZS0+aW1hZ2UoKTsKICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2Ug
IT0gJkltYWdlOjpudWxsSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgp
OwogICAgICAgICAgICAgICAgICAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFnZSgq
aW1hZ2UsIEZsb2F0UG9pbnQoMCwgMCkpOwogICAgICAgICAgICAgICAgICAgICBkYXRhVVJMID0g
aW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CiAgICAgICAgICAgICAgICAgfQpA
QCAtMTE2Myw3ICsxMTYzLDcgQEAgaW50IEluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKER1
cGxpYwogCiAgICAgICAgICAgICB1bnNpZ25lZCB2aWRlb1dpZHRoID0gdmlkZW9FbGVtZW50LT52
aWRlb1dpZHRoKCk7CiAgICAgICAgICAgICB1bnNpZ25lZCB2aWRlb0hlaWdodCA9IHZpZGVvRWxl
bWVudC0+dmlkZW9IZWlnaHQoKTsKLSAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZSh2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCksIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwg
UGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZSh2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCksIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgICAgICAgICAgaWYgKGltYWdlQnVmZmVyKSB7CiAg
ICAgICAgICAgICAgICAgdmlkZW9FbGVtZW50LT5wYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChp
bWFnZUJ1ZmZlci0+Y29udGV4dCgpLCBGbG9hdFJlY3QoMCwgMCwgdmlkZW9XaWR0aCwgdmlkZW9I
ZWlnaHQpKTsKICAgICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVS
TCgiaW1hZ2UvcG5nIik7CkBAIC0xMjAwLDcgKzEyMDAsNyBAQCBpbnQgSW5zcGVjdG9yQ2FudmFz
OjppbmRleEZvckRhdGEoRHVwbGljCiAgICAgICAgICAgICBpZiAoYXV0byogY2FjaGVkSW1hZ2Ug
PSBjc3NJbWFnZVZhbHVlLT5pbWFnZSgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byogaW1hZ2Ug
PSBjYWNoZWRJbWFnZS0+aW1hZ2UoKTsKICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UgJiYgaW1h
Z2UgIT0gJkltYWdlOjpudWxsSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdN
b2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdS
QTgpOwogICAgICAgICAgICAgICAgICAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFn
ZSgqaW1hZ2UsIEZsb2F0UG9pbnQoMCwgMCkpOwogICAgICAgICAgICAgICAgICAgICBkYXRhVVJM
ID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CiAgICAgICAgICAgICAgICAg
fQpAQCAtMTQ0MSw3ICsxNDQxLDcgQEAgUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJ
bnNwZWN0bwogewogICAgIGF1dG8mIHRpbGVJbWFnZSA9IGNhbnZhc1BhdHRlcm4ucGF0dGVybigp
LnRpbGVJbWFnZSgpOwogICAgIEZsb2F0UmVjdCByZWN0ID0geyB7IH0sIHRpbGVJbWFnZS5zaXpl
KCkgfTsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0aWxlSW1h
Z2Uuc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZl
ciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGlsZUltYWdlLnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CiAgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5kcmF3TmF0aXZlSW1hZ2Uo
dGlsZUltYWdlLCB0aWxlSW1hZ2Uuc2l6ZSgpLCByZWN0LCByZWN0KTsKIAogICAgIFN0cmluZyBy
ZXBlYXQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyOSw3ICs1
MjksNyBAQCB2b2lkIENocm9tZTo6c2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vCiAgICAgbV9j
bGllbnQuc2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGhpZGRlblVudGlsTW91c2VNb3Zl
cyk7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gQ2hyb21lOjpjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgUmVuZGVy
aW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29uc3QKK1JlZlB0
cjxJbWFnZUJ1ZmZlcj4gQ2hyb21lOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
IHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSBwdXJw
b3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYg
Y29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fY2xpZW50LmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHB1cnBvc2Us
IHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZS5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldEN1cnNvcihjb25zdCBDdXJzb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEN1cnNvckhp
ZGRlblVudGlsTW91c2VNb3Zlcyhib29sKSBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwg
UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJl
bmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiwgUGl4ZWxGb3JtYXQpIGNvbnN0IG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKFdF
QkdMKQogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0
R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3Qgb3ZlcnJpZGU7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzOSw3
ICszMzksNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBEaXNwbGF5UmVmcmVzaE1vbml0
b3JGYWN0b3J5KiBkaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bnVsbHB0cjsgfQogCi0gICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2Us
IGZsb2F0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCB7IHJldHVy
biBudWxscHRyOyB9CisgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2Us
IGZsb2F0LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCkgY29uc3Qg
eyByZXR1cm4gbnVsbHB0cjsgfQogCiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIHZpcnR1YWwgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNu
YXBzaG90dGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNu
YXBzaG90dGluZy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVTbmFwc2hvdHRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDcgQEAg
UmVmUHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVjdFdpdAogICAgIGlmIChvcHRpb25z
ICYgU25hcHNob3RPcHRpb25zUGFpbnRXaXRoSW50ZWdyYWxTY2FsZUZhY3RvcikKICAgICAgICAg
c2NhbGVGYWN0b3IgPSBjZWlsZihzY2FsZUZhY3Rvcik7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgc2NhbGVGYWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1h
Z2VSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgc2NhbGVGYWN0b3Is
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAg
IGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBidWZmZXItPmNvbnRl
eHQoKS50cmFuc2xhdGUoLWltYWdlUmVjdC54KCksIC1pbWFnZVJlY3QueSgpKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcAkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBPcHRpb25hbDxMYWI8ZmxvYXQ+PiBzYW1wbGVD
b2xvcigKICAgICBpZiAoIXNuYXBzaG90KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IHNuYXBzaG90LT5nZXRQaXhlbEJ1ZmZlcih7IEFscGhh
UHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfSwgeyB7IH0sIHNuYXBzaG90LT5sb2dpY2FsU2l6
ZSgpIH0pOworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzbmFwc2hvdC0+Z2V0UGl4ZWxCdWZmZXIo
eyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpC
R1JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfSwgeyB7IH0sIHNuYXBzaG90LT5s
b2dpY2FsU2l6ZSgpIH0pOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGll
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGll
bnQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25z
b2xlQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI2LDcgKzMyNiw3IEBAIHZvaWQgUGFn
ZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjoKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChhdXRvKiBjYWNoZWRJbWFnZSA9IGltYWdlRWxlbWVudC5jYWNoZWRJbWFnZSgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1h
Z2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UgIT0g
JkltYWdlOjpudWxsSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
bmFwc2hvdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdCA9
IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuYXBzaG90LT5jb250ZXh0
KCkuZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMzQzLDcgKzM0Myw3
IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjoKICAgICAgICAgICAg
ICAgICAgICAgICAgIGF1dG8mIHZpZGVvRWxlbWVudCA9IGRvd25jYXN0PEhUTUxWaWRlb0VsZW1l
bnQ+KCpub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHZpZGVvV2lkdGgg
PSB2aWRlb0VsZW1lbnQudmlkZW9XaWR0aCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgdmlkZW9IZWlnaHQgPSB2aWRlb0VsZW1lbnQudmlkZW9IZWlnaHQoKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHNuYXBzaG90ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUo
dmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRT
aXplKHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb0VsZW1lbnQucGFpbnRDdXJyZW50RnJhbWVJ
bkNvbnRleHQoc25hcHNob3QtPmNvbnRleHQoKSwgRmxvYXRSZWN0KDAsIDAsIHZpZGVvV2lkdGgs
IHZpZGVvSGVpZ2h0KSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICNlbmRpZgpAQCAtMzY4LDcg
KzM2OCw3IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjoKICAgICAg
ICAgICAgIHRhcmdldCA9IHBvc3NpYmxlVGFyZ2V0OwogICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRzKCkpKSB7CiAgICAgICAgICAg
ICAgICAgYXV0byBzb3VyY2VTaXplID0gaW1hZ2VEYXRhLT5zaXplKCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNvdXJjZVNpemUs
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvIGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzb3VyY2VTaXplLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KSkgewogICAgICAgICAgICAgICAgICAgICBJbnRSZWN0IHNvdXJjZVJlY3Qo
SW50UG9pbnQoKSwgc291cmNlU2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgIGltYWdlQnVmZmVy
LT5wdXRQaXhlbEJ1ZmZlcihpbWFnZURhdGEtPnBpeGVsQnVmZmVyKCksIHNvdXJjZVJlY3QpOwog
ICAgICAgICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1h
Z2UvcG5nIl9zLCBXVEY6Om51bGxvcHQsIFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
MTAgKzMxLDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cnNvcjsKK2NsYXNz
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIEltYWdlQnVmZmVyOwogCiBlbnVtIGNsYXNz
IFBpeGVsRm9ybWF0IDogdWludDhfdDsKLWVudW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNl
IDogdWludDhfdDsKIGVudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJvb2w7CiBlbnVtIGNsYXNz
IFJlbmRlcmluZ1B1cnBvc2UgOiB1aW50OF90OwogCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIEludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0
IEludFBvaW50JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSW50UmVjdCByb290Vmlld1RvQWNj
ZXNzaWJpbGl0eVNjcmVlbihjb25zdCBJbnRSZWN0JikgY29uc3QgPSAwOwogCi0gICAgdmlydHVh
bCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYs
IFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
RGVzdGluYXRpb25Db2xvclNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
LCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBpeGVsRm9ybWF0KSBjb25zdCA9IDA7CiAK
ICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+
IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYpIGNvbnN0ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2Ny
ZWVuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TY3Jl
ZW4uaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1TY3JlZW4uaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCB0eXBlZGVmIHN0cnVj
dCBDR0NvbG9yU3BhY2UgKkNHQ29sb3JTcGFjCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgRGVzdGluYXRpb25Db2xvclNwYWNlOwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgRmxvYXRT
aXplOwogY2xhc3MgV2lkZ2V0OwpAQCAtNjgsNiArNjksNyBAQCB1c2luZyBJT1JlZ2lzdHJ5R1BV
SUQgPSBpbnQ2NF90OyAvLyBHbG9iCiBpbnQgc2NyZWVuRGVwdGgoV2lkZ2V0Kik7CiBpbnQgc2Ny
ZWVuRGVwdGhQZXJDb21wb25lbnQoV2lkZ2V0Kik7CiBib29sIHNjcmVlbklzTW9ub2Nocm9tZShX
aWRnZXQqKTsKK1dFQkNPUkVfRVhQT1JUIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBzY3JlZW5Db2xv
clNwYWNlKFdpZGdldCogPSBudWxscHRyKTsKIAogYm9vbCBzY3JlZW5IYXNJbnZlcnRlZENvbG9y
cygpOwogCkBAIC0xMDAsMTAgKzEwMiw2IEBAIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2NyZWVuU3Vw
cG9ydHNIaWdoRHkKIGNvbnN0ZXhwciBib29sIHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5n
ZShXaWRnZXQqID0gbnVsbHB0cikgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCi0jaWYgVVNF
KENHKQotV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIHNjcmVlbkNvbG9yU3BhY2UoV2lk
Z2V0KiA9IG51bGxwdHIpOwotI2VuZGlmCi0KIHN0cnVjdCBTY3JlZW5Qcm9wZXJ0aWVzOwogc3Ry
dWN0IFNjcmVlbkRhdGE7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jl
ZW5Qcm9wZXJ0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
ZWVuUHJvcGVydGllcy5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JlZW5Qcm9wZXJ0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNp
bmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogI2luY2x1
ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CkBAIC0zMiwxNCArMzMsMTIgQEAKICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLXR5cGVkZWYg
c3RydWN0IENHQ29sb3JTcGFjZSAqQ0dDb2xvclNwYWNlUmVmOwotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0cnVjdCBTY3JlZW5EYXRhIHsKICAgICBGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxl
UmVjdDsKICAgICBGbG9hdFJlY3Qgc2NyZWVuUmVjdDsKLSAgICBSZXRhaW5QdHI8Q0dDb2xvclNw
YWNlUmVmPiBjb2xvclNwYWNlOworICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNl
IHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsKICAgICBpbnQgc2NyZWVuRGVwdGgg
eyAwIH07CiAgICAgaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50IHsgMCB9OwogICAgIGJvb2wg
c2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yIHsgZmFsc2UgfTsKQEAgLTU2LDEzICs1NSwxMiBA
QCBzdHJ1Y3QgU2NyZWVuRGF0YSB7CiAgICAgZmxvYXQgc2NhbGVGYWN0b3IgeyAxIH07CiAjZW5k
aWYKIAotICAgIGVudW0gY2xhc3MgQ29sb3JTcGFjZVR5cGUgOiB1aW50OF90IHsgTm9uZSwgTmFt
ZSwgRGF0YSB9OwogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8
U2NyZWVuRGF0YT4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKLXR5cGVkZWYgSGFzaE1hcDxQbGF0
Zm9ybURpc3BsYXlJRCwgU2NyZWVuRGF0YT4gU2NyZWVuRGF0YU1hcDsKLSAgICAKK3VzaW5nIFNj
cmVlbkRhdGFNYXAgPSBIYXNoTWFwPFBsYXRmb3JtRGlzcGxheUlELCBTY3JlZW5EYXRhPjsKKwog
c3RydWN0IFNjcmVlblByb3BlcnRpZXMgewogICAgIFBsYXRmb3JtRGlzcGxheUlEIHByaW1hcnlE
aXNwbGF5SUQgeyAwIH07CiAgICAgU2NyZWVuRGF0YU1hcCBzY3JlZW5EYXRhTWFwOwpAQCAtNzQs
OCArNzIsNyBAQCBzdHJ1Y3QgU2NyZWVuUHJvcGVydGllcyB7CiB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPgogdm9pZCBTY3JlZW5Qcm9wZXJ0aWVzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIHsKLSAgICBlbmNvZGVyIDw8IHByaW1hcnlEaXNwbGF5SUQ7Ci0gICAgZW5jb2RlciA8PCBz
Y3JlZW5EYXRhTWFwOworICAgIGVuY29kZXIgPDwgcHJpbWFyeURpc3BsYXlJRCA8PCBzY3JlZW5E
YXRhTWFwOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtOTcsNyArOTQsNyBAQCBP
cHRpb25hbDxTY3JlZW5Qcm9wZXJ0aWVzPiBTY3JlZW5Qcm9wZXJ0CiB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgogdm9pZCBTY3JlZW5EYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
IHsKLSAgICBlbmNvZGVyIDw8IHNjcmVlbkF2YWlsYWJsZVJlY3QgPDwgc2NyZWVuUmVjdCA8PCBz
Y3JlZW5EZXB0aCA8PCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCA8PCBzY3JlZW5TdXBwb3J0c0V4
dGVuZGVkQ29sb3IgPDwgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMgPDwgc2NyZWVuU3VwcG9ydHNI
aWdoRHluYW1pY1JhbmdlOworICAgIGVuY29kZXIgPDwgc2NyZWVuQXZhaWxhYmxlUmVjdCA8PCBz
Y3JlZW5SZWN0IDw8IGNvbG9yU3BhY2UgPDwgc2NyZWVuRGVwdGggPDwgc2NyZWVuRGVwdGhQZXJD
b21wb25lbnQgPDwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yIDw8IHNjcmVlbkhhc0ludmVy
dGVkQ29sb3JzIDw8IHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZTsKIAogI2lmIFBMQVRG
T1JNKE1BQykKICAgICBlbmNvZGVyIDw8IHNjcmVlbklzTW9ub2Nocm9tZSA8PCBkaXNwbGF5TWFz
ayA8PCBncHVJRCA8PCBwcmVmZXJyZWREeW5hbWljUmFuZ2VNb2RlOwpAQCAtMTA2LDI4ICsxMDMs
NiBAQCB2b2lkIFNjcmVlbkRhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyCiAjaWYgUExBVEZP
Uk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGVuY29kZXIgPDwgc2NhbGVGYWN0
b3I7CiAjZW5kaWYKLQotICAgIGlmIChjb2xvclNwYWNlKSB7Ci0gICAgICAgIC8vIFRyeSB0byBl
bmNvZGUgdGhlIG5hbWUuCi0gICAgICAgIGlmIChhdXRvIG5hbWUgPSBhZG9wdENGKENHQ29sb3JT
cGFjZUNvcHlOYW1lKGNvbG9yU3BhY2UuZ2V0KCkpKSkgewotICAgICAgICAgICAgZW5jb2RlciA8
PCBDb2xvclNwYWNlVHlwZTo6TmFtZTsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgU3RyaW5nKG5h
bWUuZ2V0KCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8g
RmFpbGluZyB0aGF0LCBqdXN0IGVuY29kZSB0aGUgSUNDIGRhdGEuCi0gICAgICAgIGlmIChhdXRv
IHByb2ZpbGVEYXRhID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDb3B5SUNDRGF0YShjb2xvclNwYWNl
LmdldCgpKSkpIHsKLSAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBpY2NEYXRhOwotICAgICAg
ICAgICAgaWNjRGF0YS5hcHBlbmQoQ0ZEYXRhR2V0Qnl0ZVB0cihwcm9maWxlRGF0YS5nZXQoKSks
IENGRGF0YUdldExlbmd0aChwcm9maWxlRGF0YS5nZXQoKSkpOwotCi0gICAgICAgICAgICBlbmNv
ZGVyIDw8IENvbG9yU3BhY2VUeXBlOjpEYXRhOwotICAgICAgICAgICAgZW5jb2RlciA8PCBpY2NE
YXRhOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gVGhl
IGNvbG9yIHNwYWNlIHdhcyBudWxsIG9yIGZhaWxlZCB0byBiZSBlbmNvZGVkLgotICAgIGVuY29k
ZXIgPDwgQ29sb3JTcGFjZVR5cGU6Ok5vbmU7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
CkBAIC0xNDMsNiArMTE4LDExIEBAIE9wdGlvbmFsPFNjcmVlbkRhdGE+IFNjcmVlbkRhdGE6OmRl
Y29kZSgKICAgICBpZiAoIXNjcmVlblJlY3QpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAKKyAgICBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IHNjcmVlbkNvbG9yU3BhY2U7
CisgICAgZGVjb2RlciA+PiBzY3JlZW5Db2xvclNwYWNlOworICAgIGlmICghc2NyZWVuQ29sb3JT
cGFjZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwogICAgIE9wdGlvbmFsPGludD4g
c2NyZWVuRGVwdGg7CiAgICAgZGVjb2RlciA+PiBzY3JlZW5EZXB0aDsKICAgICBpZiAoIXNjcmVl
bkRlcHRoKQpAQCAtMTk3LDQxICsxNzcsMTAgQEAgT3B0aW9uYWw8U2NyZWVuRGF0YT4gU2NyZWVu
RGF0YTo6ZGVjb2RlKAogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogI2VuZGlmCiAKLSAg
ICBDb2xvclNwYWNlVHlwZSBkYXRhVHlwZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFU
eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIFJldGFpblB0cjxDR0Nv
bG9yU3BhY2VSZWY+IGNnQ29sb3JTcGFjZTsKLSAgICBzd2l0Y2ggKGRhdGFUeXBlKSB7Ci0gICAg
Y2FzZSBDb2xvclNwYWNlVHlwZTo6Tm9uZToKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDb2xv
clNwYWNlVHlwZTo6TmFtZTogewotICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGNvbG9yU3BhY2VO
YW1lOwotICAgICAgICBkZWNvZGVyID4+IGNvbG9yU3BhY2VOYW1lOwotICAgICAgICBBU1NFUlQo
Y29sb3JTcGFjZU5hbWUpOwotICAgICAgICBpZiAoIWNvbG9yU3BhY2VOYW1lKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgICAgICBjZ0NvbG9yU3BhY2UgPSBhZG9wdENG
KENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGNvbG9yU3BhY2VOYW1lLT5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENvbG9yU3BhY2VU
eXBlOjpEYXRhOiB7Ci0gICAgICAgIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gaWNjRGF0YTsK
LSAgICAgICAgZGVjb2RlciA+PiBpY2NEYXRhOwotICAgICAgICBBU1NFUlQoaWNjRGF0YSk7Ci0g
ICAgICAgIGlmICghaWNjRGF0YSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0K
LSAgICAgICAgYXV0byBjb2xvclNwYWNlRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGljY0RhdGEtPmRhdGEoKSwgaWNjRGF0YS0+c2l6ZSgpKSk7Ci0gICAg
ICAgIGNnQ29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aElDQ0RhdGEo
Y29sb3JTcGFjZURhdGEuZ2V0KCkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIH0KLQog
ICAgIHJldHVybiB7IHsKICAgICAgICAgV1RGTW92ZSgqc2NyZWVuQXZhaWxhYmxlUmVjdCksCiAg
ICAgICAgIFdURk1vdmUoKnNjcmVlblJlY3QpLAotICAgICAgICBXVEZNb3ZlKGNnQ29sb3JTcGFj
ZSksCisgICAgICAgIFdURk1vdmUoKnNjcmVlbkNvbG9yU3BhY2UpLAogICAgICAgICBXVEZNb3Zl
KCpzY3JlZW5EZXB0aCksCiAgICAgICAgIFdURk1vdmUoKnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50
KSwKICAgICAgICAgV1RGTW92ZSgqc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKSwKQEAgLTI1
MCwxNiArMTk5LDMgQEAgT3B0aW9uYWw8U2NyZWVuRGF0YT4gU2NyZWVuRGF0YTo6ZGVjb2RlKAog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0
ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlNjcmVlbkRhdGE6OkNvbG9yU3BhY2VUeXBl
PiB7Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAgICAgICAgV2ViQ29yZTo6U2Ny
ZWVuRGF0YTo6Q29sb3JTcGFjZVR5cGUsCi0gICAgICAgIFdlYkNvcmU6OlNjcmVlbkRhdGE6OkNv
bG9yU3BhY2VUeXBlOjpOb25lLAotICAgICAgICBXZWJDb3JlOjpTY3JlZW5EYXRhOjpDb2xvclNw
YWNlVHlwZTo6TmFtZSwKLSAgICAgICAgV2ViQ29yZTo6U2NyZWVuRGF0YTo6Q29sb3JTcGFjZVR5
cGU6OkRhdGEKLSAgICA+OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NCw3ICsxNjQsNyBAQCBSZWZQdHI8TmF0aXZlSW1h
Z2U+IEJpdG1hcEltYWdlOjpwcmVUcmFuCiAgICAgICAgIHJldHVybiBpbWFnZTsKIAogICAgIGF1
dG8gY29ycmVjdGVkU2l6ZUZsb2F0ID0gY29ycmVjdGVkU2l6ZSA/IEZsb2F0U2l6ZShjb3JyZWN0
ZWRTaXplLnZhbHVlKCkpIDogc2l6ZSgpOwotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShjb3JyZWN0ZWRTaXplRmxvYXQsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
IDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY29ycmVjdGVkU2l6ZUZsb2F0LCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIGltYWdlOwogCkBAIC0zNTIsNyArMzUyLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1Bh
dHRlcm4oR3JhcGhpY3NDbwogICAgIH0KIAogICAgIGlmICghbV9jYWNoZWRJbWFnZSkgewotICAg
ICAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4
cGFuZGVkSW50U2l6ZSh0aWxlUmVjdC5zaXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IsIGN0eHQpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZSh0aWxlUmVjdC5zaXplKCkpLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgY3R4dCk7CiAgICAgICAgIGlmICghYnVmZmVyKQogICAgICAg
ICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3IuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw3ICsxNjgsNyBAQCBDb2xv
ckNvbXBvbmVudHM8ZmxvYXQsIDQ+IENvbG9yOjp0b0NvbG9yCiAgICAgcmV0dXJuIGNvbnZlckNv
bG9yQ29tcG9uZW50cyhpbnB1dENvbG9yU3BhY2UsIGNvbXBvbmVudHMsIG91dHB1dENvbG9yU3Bh
Y2UpOwogfQogCi1Db2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IENvbG9yOjp0b0NvbG9yQ29tcG9u
ZW50c0luQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugb3V0cHV0Q29sb3JTcGFjZSkg
Y29uc3QKK0NvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gQ29sb3I6OnRvQ29sb3JDb21wb25lbnRz
SW5Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgb3V0cHV0Q29sb3JTcGFj
ZSkgY29uc3QKIHsKICAgICBhdXRvIFtpbnB1dENvbG9yU3BhY2UsIGNvbXBvbmVudHNdID0gY29s
b3JTcGFjZUFuZENvbXBvbmVudHMoKTsKICAgICByZXR1cm4gY29udmVyQ29sb3JDb21wb25lbnRz
KGlucHV0Q29sb3JTcGFjZSwgY29tcG9uZW50cywgb3V0cHV0Q29sb3JTcGFjZSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDb2xvckNvbnZlcnNpb24uaCIKICNpbmNs
dWRlICJDb2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKKyNpbmNsdWRl
ICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KQEAgLTEy
MSw3ICsxMjIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8VD4g
dG9TUkdCQUxvc3N5KCkgY29uc3QgeyByZXR1cm4gdG9Db2xvclR5cGVMb3NzeTxTUkdCQTxUPj4o
KTsgfQogCiAgICAgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiB0b0NvbG9yQ29tcG9uZW50c0lu
Q29sb3JTcGFjZShDb2xvclNwYWNlKSBjb25zdDsKLSAgICBDb2xvckNvbXBvbmVudHM8ZmxvYXQs
IDQ+IHRvQ29sb3JDb21wb25lbnRzSW5Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSkg
Y29uc3Q7CisgICAgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiB0b0NvbG9yQ29tcG9uZW50c0lu
Q29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKSBjb25zdDsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQs
IDQ+PiBjb2xvclNwYWNlQW5kQ29tcG9uZW50cygpIGNvbnN0OwogCkBAIC0yNjcsNiArMjY4LDcg
QEAgYm9vbCBvdXRPZkxpbmVDb21wb25lbnRzc0VxdWFsSWdub3JpbmdTZQogCiAjaWYgVVNFKENH
KQogV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJik7
CitXRUJDT1JFX0VYUE9SVCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IHBsYXRmb3JtQ29udmVy
dENvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+LCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKICNlbmRpZgogCiBXRUJDT1JFX0VYUE9SVCBX
VEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgQ29sb3Im
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JDb252ZXJzaW9uLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NyArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbG9yQ29udmVyc2lv
bi5oIgogCisjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJDb2xvclNwYWNlLmgiCisjaW5j
bHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzE4LDE4ICszMjAsMjEgQEAgQ29sb3JDb21w
b25lbnRzPGZsb2F0LCA0PiBjb252ZXJDb2xvckNvbQogICAgIH0pOwogfQogCi1Db2xvckNvbXBv
bmVudHM8ZmxvYXQsIDQ+IGNvbnZlckNvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlIGlucHV0Q29s
b3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBpbnB1dENvbG9yQ29tcG9uZW50cywg
RGVzdGluYXRpb25Db2xvclNwYWNlIG91dHB1dENvbG9yU3BhY2UpCitDb2xvckNvbXBvbmVudHM8
ZmxvYXQsIDQ+IGNvbnZlckNvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlIGlucHV0Q29sb3JTcGFj
ZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBpbnB1dENvbG9yQ29tcG9uZW50cywgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBvdXRwdXRDb2xvclNwYWNlKQogeworI2lmIFVTRShDRykK
KyAgICByZXR1cm4gcGxhdGZvcm1Db252ZXJ0Q29sb3JDb21wb25lbnRzKGlucHV0Q29sb3JTcGFj
ZSwgaW5wdXRDb2xvckNvbXBvbmVudHMsIG91dHB1dENvbG9yU3BhY2UpOworI2Vsc2UKICAgICBy
ZXR1cm4gY2FsbFdpdGhDb2xvclR5cGUoaW5wdXRDb2xvckNvbXBvbmVudHMsIGlucHV0Q29sb3JT
cGFjZSwgW291dHB1dENvbG9yU3BhY2VdIChjb25zdCBhdXRvJiBpbnB1dENvbG9yKSB7Ci0gICAg
ICAgIHN3aXRjaCAob3V0cHV0Q29sb3JTcGFjZSkgewotICAgICAgICBjYXNlIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQjoKKyAgICAgICAgc3dpdGNoIChvdXRwdXRDb2xvclNwYWNlLnBsYXRm
b3JtQ29sb3JTcGFjZSgpKSB7CisgICAgICAgIGNhc2UgUGxhdGZvcm1Db2xvclNwYWNlOjpOYW1l
OjpTUkdCOgogICAgICAgICAgICAgcmV0dXJuIGFzQ29sb3JDb21wb25lbnRzKGNvbnZlcnRDb2xv
cjxTUkdCQTxmbG9hdD4+KGlucHV0Q29sb3IpKTsKICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09M
T1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpMaW5lYXJTUkdCOgotICAgICAgICAgICAgcmV0dXJuIGFzQ29sb3JDb21wb25lbnRzKGNvbnZl
cnRDb2xvcjxMaW5lYXJTUkdCQTxmbG9hdD4+KGlucHV0Q29sb3IpKTsKKyAgICAgICAgY2FzZSBQ
bGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU6OkxpbmVhclNSR0I6CisgICAgICAgICAgICByZXR1cm4g
YXNDb2xvckNvbXBvbmVudHMoY29udmVydENvbG9yPExpbmVhclNSR0I8ZmxvYXQ+PihpbnB1dENv
bG9yKSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExB
WV9QMykKLSAgICAgICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMzoKKyAg
ICAgICAgY2FzZSBQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU6OkRpc3BsYXlQMzoKICAgICAgICAg
ICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhjb252ZXJ0Q29sb3I8RGlzcGxheVAzPGZsb2F0
Pj4oaW5wdXRDb2xvcikpOwogI2VuZGlmCiAgICAgICAgIH0KQEAgLTMzNyw2ICszNDIsNyBAQCBD
b2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbnZlckNvbG9yQ29tCiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gYXNDb2xvckNvbXBvbmVudHMoY29udmVydENv
bG9yPFNSR0JBPGZsb2F0Pj4oaW5wdXRDb2xvcikpOwogICAgIH0pOworI2VuZGlmCiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yQ29udmVyc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtMjksMTUgKzI5LDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
RGVzdGluYXRpb25Db2xvclNwYWNlOworCiBlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90
OwotZW51bSBjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgOiB1aW50OF90OwogCiAvLyBDb252
ZXJzaW9uIGZ1bmN0aW9uIGZvciB0eXBlZCBjb2xvcnMuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPdXRw
dXQsIHR5cGVuYW1lIElucHV0PiBPdXRwdXQgY29udmVydENvbG9yKGNvbnN0IElucHV0JiBjb2xv
cik7CiAKIC8vIENvbnZlcnNpb24gZnVuY3Rpb25zIGZvciByYXcgY29sb3IgY29tcG9uZW50cyB3
aXRoIGFzc29jaWF0ZWQgY29sb3Igc3BhY2VzLgogQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBj
b252ZXJDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1dENvbG9yU3BhY2UsIENvbG9yQ29t
cG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVudHMsIENvbG9yU3BhY2Ugb3V0cHV0
Q29sb3JTcGFjZSk7Ci1Db2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbnZlckNvbG9yQ29tcG9u
ZW50cyhDb2xvclNwYWNlIGlucHV0Q29sb3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0
PiBpbnB1dENvbG9yQ29tcG9uZW50cywgRGVzdGluYXRpb25Db2xvclNwYWNlIG91dHB1dENvbG9y
U3BhY2UpOworQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb252ZXJDb2xvckNvbXBvbmVudHMo
Q29sb3JTcGFjZSBpbnB1dENvbG9yU3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gaW5w
dXRDb2xvckNvbXBvbmVudHMsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgb3V0cHV0Q29s
b3JTcGFjZSk7CiAKIAogLy8gQWxsIGNvbG9yIHR5cGVzLCBvdGhlciB0aGFuIFhZWkEgb3IgdGhv
c2UgaW5oZXJpdGluZyBmcm9tIFJHQlR5cGUsIG11c3QgaW1wbGVtZW50CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDI0ICs2NCw0IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIEMKICAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNl
KQotewotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNhc2UgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCOgotICAgICAgICB0cyA8PCAic1JHQiI7Ci0gICAgICAgIGJyZWFrOwotI2lm
IEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICBjYXNlIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQjoKLSAgICAgICAgdHMgPDwgIkxpbmVhclNS
R0IiOwotICAgICAgICBicmVhazsKLSNlbmRpZgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xP
Ul9TUEFDRV9ESVNQTEFZX1AzKQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNw
bGF5UDM6Ci0gICAgICAgIHRzIDw8ICJEaXNwbGF5UDMiOwotICAgICAgICBicmVhazsKLSNlbmRp
ZgotICAgIH0KLSAgICByZXR1cm4gdHM7Ci19Ci0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMjgsMTAgKzI4LDcgQEAKICNpbmNsdWRlICJDb2xvclR5cGVzLmgiCiAjaW5jbHVkZSA8
ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgotCi1uYW1lc3BhY2UgV1RG
IHsKLWNsYXNzIFRleHRTdHJlYW07Ci19CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NywxOCArNDQsNyBAQCBlbnVtIGNsYXNzIENvbG9yU3Bh
Y2UgOiB1aW50OF90IHsKICAgICBYWVpfRDUwLAogfTsKIAotZW51bSBjbGFzcyBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgOiB1aW50OF90IHsKLSAgICBTUkdCCi0jaWYgRU5BQkxFKERFU1RJTkFUSU9O
X0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQotICAgICwgTGluZWFyU1JHQgotI2VuZGlmCi0jaWYg
RU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCi0gICAgLCBEaXNwbGF5
UDMKLSNlbmRpZgotfTsKLQotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFdURjo6VGV4dFN0cmVhbSYsIENvbG9yU3BhY2UpOwotV0VCQ09SRV9FWFBPUlQgV1RGOjpU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSk7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
LCBDb2xvclNwYWNlKTsKIAogCiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IENvbG9yU3BhY2VN
YXBwaW5nOwpAQCAtMTAyLDI1ICs4OCw2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IEZ1bmN0b3I+IGMKICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+
KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8U1JHQkE8VD4+KGNvbXBvbmVudHMpKTsKIH0K
IAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRnVuY3Rvcj4gY29uc3RleHByIGRlY2x0
eXBlKGF1dG8pIGNhbGxXaXRoQ29sb3JUeXBlKGNvbnN0IENvbG9yQ29tcG9uZW50czxULCA0PiYg
Y29tcG9uZW50cywgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIEZ1bmN0b3ImJiBm
dW5jdG9yKQotewotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNhc2UgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCOgotICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3
YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8U1JHQkE8VD4+KGNvbXBv
bmVudHMpKTsKLSNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0Ip
Ci0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0I6Ci0gICAgICAgIHJl
dHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIG1ha2VGcm9t
Q29tcG9uZW50czxMaW5lYXJTUkdCQTxUPj4oY29tcG9uZW50cykpOwotI2VuZGlmCi0jaWYgRU5B
QkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCi0gICAgY2FzZSBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMzoKLSAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0
ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFrZUZyb21Db21wb25lbnRzPERpc3BsYXlQ
MzxUPj4oY29tcG9uZW50cykpOwotI2VuZGlmCi0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5j
dG9yKSwgbWFrZUZyb21Db21wb25lbnRzPFNSR0JBPFQ+Pihjb21wb25lbnRzKSk7Ci19Ci0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkBAIC0xNDEsMTcgKzEwOCw0IEBAIHRlbXBsYXRlPD4g
c3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q28KICAgICA+OwogfTsKIAotdGVtcGxhdGU8PiBz
dHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IHsKLSAgICB1
c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAotICAgICAgICBXZWJDb3JlOjpEZXN0aW5hdGlvbkNv
bG9yU3BhY2UsCi0gICAgICAgIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQgot
I2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICAgICAg
LCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IKLSNlbmRpZgotI2lm
IEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQotICAgICAgICAsIFdl
YkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxheVAzCi0jZW5kaWYKLSAgICA+Owot
fTsKLQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJ
bWFnZUJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw3ICszNCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPgogY2xh
c3MgQ29uY3JldGVJbWFnZUJ1ZmZlciA6IHB1YmxpYyBJbWFnZUJ1ZmZlciB7CiBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgSW1hZ2VCdWZmZXJUeXBlID0gQ29uY3JldGVJbWFnZUJ1ZmZl
ciwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXJU
eXBlPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1h
dCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRz
KQorICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXJUeXBlPiBjcmVhdGUoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5k
b3cqIGhvc3RXaW5kb3csIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKICAgICB7CiAgICAgICAg
IGF1dG8gcGFyYW1ldGVycyA9IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyB7IHNpemUs
IHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQgfTsKICAgICAgICAgYXV0
byBiYWNrZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShwYXJhbWV0ZXJzLCBob3N0V2luZG93KTsK
QEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEltYWdlQnVm
ZmVyVHlwZSA9IENvbmNyZXRlSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KICAg
ICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBBcmd1bWVudHMmJi4uLiBhcmd1
bWVudHMpCiAgICAgewotICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBJbWFnZUJ1ZmZlckJhY2tl
bmQ6OlBhcmFtZXRlcnMgeyBzaXplLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBp
eGVsRm9ybWF0OjpCR1JBOCB9OworICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBJbWFnZUJ1ZmZl
ckJhY2tlbmQ6OlBhcmFtZXRlcnMgeyBzaXplLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4IH07CiAgICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tl
bmRUeXBlOjpjcmVhdGUocGFyYW1ldGVycywgY29udGV4dCk7CiAgICAgICAgIGlmICghYmFja2Vu
ZCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTk1LDcgKzE5NSw3IEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgfQogICAgIH0KIAotICAgIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShE
ZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNl
IGRlc3RDb2xvclNwYWNlKSBvdmVycmlkZQorICAgIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHNyY0NvbG9yU3BhY2UsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgZGVzdENvbG9yU3BhY2UpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBp
ZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKICAgICAgICAgICAg
IGZsdXNoRHJhd2luZ0NvbnRleHQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3Nz
ZmFkZUdlbmVyYXRlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBA
IEltYWdlRHJhd1Jlc3VsdCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZToKIAogdm9pZCBDcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFz
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKIHsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShz
aXplKCksIGNvbnRleHQucmVuZGVyaW5nTW9kZSgpLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBjb250ZXh0LnJlbmRlcmluZ01vZGUoKSwgMSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFp
bWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHAJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGlu
YXRpb25Db2xvclNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExNCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9y
U3BhY2UuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KKworI2lmIFVTRShD
RykKKyNpbmNsdWRlICJDb2xvclNwYWNlQ0cuaCIKKyNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVH
cmFwaGljc1NQSS5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRGVzdGluYXRp
b25Db2xvclNwYWNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpCit7CisjaWYgVVNFKENH
KQorICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2Uoc1JHQkNvbG9yU3BhY2VSZWYoKSk7
CisjZWxzZQorICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UoVHlwZTo6U1JHQik7Cisj
ZW5kaWYKK30KKworI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JH
QikKK0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNS
R0IoKQoreworI2lmIFVTRShDRykKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlKGxp
bmVhclNSR0JDb2xvclNwYWNlUmVmKCkpOworI2Vsc2UKKyAgICByZXR1cm4gRGVzdGluYXRpb25D
b2xvclNwYWNlKFR5cGU6OkxpbmVhclNSR0IpOworI2VuZGlmCit9CisjZW5kaWYKKworI2lmIEVO
QUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQorRGVzdGluYXRpb25Db2xv
clNwYWNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxheVAzKCkKK3sKKyNpZiBVU0UoQ0cp
CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZShkaXNwbGF5UDNDb2xvclNwYWNlUmVm
KCkpOworI2Vsc2UKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlKFR5cGU6OkRpc3Bs
YXlQMyk7CisjZW5kaWYKK30KKyNlbmRpZgorCitEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZShQbGF0Zm9ybUNvbG9yU3BhY2UgcGxhdGZvcm1Db2xvclNwYWNlKQor
ICAgIDogbV9wbGF0Zm9ybUNvbG9yU3BhY2UgeyBXVEZNb3ZlKHBsYXRmb3JtQ29sb3JTcGFjZSkg
fQoreworI2lmIFVTRShDRykKKyAgICBBU1NFUlQobV9wbGF0Zm9ybUNvbG9yU3BhY2UpOworI2Vu
ZGlmCit9CisKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGEs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgYikKK3sKKyAgICBpZiAoYS5wbGF0Zm9ybUNv
bG9yU3BhY2UoKSA9PSBiLnBsYXRmb3JtQ29sb3JTcGFjZSgpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKworI2lmIFVTRShDRykKKyAgICByZXR1cm4gQ0dDb2xvclNwYWNlRXF1YWxUb0NvbG9yU3Bh
Y2UoYS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwgYi5wbGF0Zm9ybUNvbG9yU3BhY2UoKSk7CisjZWxz
ZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCitib29sIG9wZXJhdG9yIT0oY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBhLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGIp
Cit7CisgICAgcmV0dXJuICEoYSA9PSBiKTsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQor
eworICAgIGlmIChjb2xvclNwYWNlID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKQor
ICAgICAgICB0cyA8PCAic1JHQiI7CisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNF
X0xJTkVBUl9TUkdCKQorICAgIGVsc2UgaWYgKGNvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xv
clNwYWNlOjpMaW5lYXJTUkdCKCkpCisgICAgICAgIHRzIDw8ICJMaW5lYXJTUkdCIjsKKyNlbmRp
ZgorI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQorICAgIGVs
c2UgaWYgKGNvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDMoKSkK
KyAgICAgICAgdHMgPDwgIkRpc3BsYXlQMyI7CisjZW5kaWYKKyNpZiBVU0UoQ0cpCisgICAgZWxz
ZSBpZiAoYXV0byBkZXNjcmlwdGlvbiA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ29weUlDQ1Byb2Zp
bGVEZXNjcmlwdGlvbihjb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpKSkpCisgICAgICAg
IHRzIDw8IFN0cmluZyhkZXNjcmlwdGlvbi5nZXQoKSk7CisjZW5kaWYKKworICAgIHJldHVybiB0
czsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGlu
YXRpb25Db2xvclNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiUGxhdGZvcm1Db2xvclNwYWNlLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIHsK
K3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRGVzdGluYXRpb25Db2xvclNwYWNl
IFNSR0IoKTsKKyNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0Ip
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBMaW5lYXJT
UkdCKCk7CisjZW5kaWYKKyNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExB
WV9QMykKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRGVzdGluYXRpb25Db2xvclNwYWNlIERp
c3BsYXlQMygpOworI2VuZGlmCisKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UoUGxhdGZvcm1Db2xvclNwYWNlKTsKKyAgICBQbGF0Zm9ybUNvbG9yU3Bh
Y2VWYWx1ZSBwbGF0Zm9ybUNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtQ29s
b3JTcGFjZS5nZXQoKTsgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBP
cHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGRlY29kZShEZWNvZGVyJik7CisKK3ByaXZh
dGU6CisgICAgUGxhdGZvcm1Db2xvclNwYWNlIG1fcGxhdGZvcm1Db2xvclNwYWNlOworfTsKKwor
V0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYpOworCitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKKwordGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9wbGF0Zm9ybUNvbG9yU3BhY2U7Cit9
CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFj
ZT4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAg
ICBPcHRpb25hbDxQbGF0Zm9ybUNvbG9yU3BhY2U+IHBsYXRmb3JtQ29sb3JTcGFjZTsKKyAgICBk
ZWNvZGVyID4+IHBsYXRmb3JtQ29sb3JTcGFjZTsKKyAgICBpZiAoIXBsYXRmb3JtQ29sb3JTcGFj
ZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgeyBXVEZNb3ZlKCpwbGF0Zm9ybUNvbG9yU3BhY2UpIH07Cit9CisKK30KKwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJ
bWFnZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBA
IHZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3MKICAgICB1bnNpZ25lZCBn
ZW5lcmF0b3JIYXNoID0gbV9ncmFkaWVudC0+aGFzaCgpOwogCiAgICAgaWYgKCFtX2NhY2hlZElt
YWdlIHx8IG1fY2FjaGVkR2VuZXJhdG9ySGFzaCAhPSBnZW5lcmF0b3JIYXNoIHx8IG1fY2FjaGVk
QWRqdXN0ZWRTaXplICE9IGFkanVzdGVkU2l6ZSB8fCAhYXJlRXNzZW50aWFsbHlFcXVhbChkZXN0
Q29udGV4dC5zY2FsZUZhY3RvcigpLCBtX2NhY2hlZFNjYWxlRmFjdG9yKSkgewotICAgICAgICBh
dXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoYWRq
dXN0ZWRTaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGRlc3RDb250ZXh0KTsKKyAg
ICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVm
ZmVyKGFkanVzdGVkU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGRlc3RDb250
ZXh0KTsKICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04ODMsNyAr
ODgzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXRSb3VuZGVkUmVjdAogICAgIGNs
aXBPdXQocGF0aCk7CiB9CiAKLUdyYXBoaWNzQ29udGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRz
UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBGdW5j
dGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikKK0dyYXBoaWNz
Q29udGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6Y2xp
cFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0Nv
bnRleHQmKT4mJiBkcmF3aW5nRnVuY3Rpb24pCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdDo6U3VjY2VzczsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsOCBA
QAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJE
YXNoQXJyYXkuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRl
ICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzVHlwZXMuaCIKQEAgLTQxMCw3ICs0MTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGlwVG9J
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpOwogCiAgICAgZW51bSBj
bGFzcyBDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgOiBib29sIHsgU3VjY2VzcywgRmFpbGVk
VG9DcmVhdGVJbWFnZUJ1ZmZlciB9OwotICAgIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBj
bGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGlu
YXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKTsKKyAg
ICBDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZ1
bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpOwogICAgIAogICAgIEludFJlY3QgY2xp
cEJvdW5kcygpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCShyZXZpc2lvbiAyNzc5MTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSkgPSAwOwogICAgIHZpcnR1YWwgSW50
UmVjdCBjbGlwQm91bmRzKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZl
cihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBkcmF3
aW5nRnVuY3Rpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRz
KGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKSA9
IDA7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHZpcnR1YWwgdm9pZCBwYWludEZyYW1lRm9yTWVk
aWEoTWVkaWFQbGF5ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSA9IDA7CiAgICAg
dmlydHVhbCBib29sIGNhblBhaW50RnJhbWVGb3JNZWRpYShjb25zdCBNZWRpYVBsYXllciYpIGNv
bnN0ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgY29uc3QgZmxvYXQgTWF4Q2xhbXBlZExl
bmd0aCA9IDQwOTY7CiBzdGF0aWMgY29uc3QgZmxvYXQgTWF4Q2xhbXBlZEFyZWEgPSBNYXhDbGFt
cGVkTGVuZ3RoICogTWF4Q2xhbXBlZExlbmd0aDsKIAotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5k
ZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdCBzaG91bGRVc2VEaXNwbGF5TGlzdCwgUmVu
ZGVyaW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9z
dFdpbmRvdyogaG9zdFdpbmRvdykKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwg
U2hvdWxkVXNlRGlzcGxheUxpc3Qgc2hvdWxkVXNlRGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1cnBv
c2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2lu
ZG93KiBob3N0V2luZG93KQogewogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7
CiAgICAgCkBAIC01OSw3ICs1OSw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6
OmNyZWF0ZSgKICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZl
cj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01v
ZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5k
b3cqIGhvc3RXaW5kb3cpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUo
Y29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNl
LCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykK
IHsKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOwogICAgIApAQCAtOTUsNyAr
OTUsNyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDCiAgICAgcmV0
dXJuIGltYWdlQnVmZmVyOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpj
cmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgRGVzdGluYXRpb25D
b2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK1Jl
ZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29u
c3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3Bh
Y2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBpZiAoc2l6ZS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTExLDcgKzExMSw3IEBAIFJlZlB0
cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUMKICAgICByZXR1cm4gaW1hZ2VCdWZm
ZXI7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkKIHsKICAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBjb250
ZXh0LnJlbmRlcmluZ01vZGUoKSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOwogfQpAQCAtMTY3LDcgKzE2Nyw3IEBAIEludFNpemUgSW1hZ2VCdWZmZXI6
OmNvbXBhdGlibGVCdWZmZXJTaXoKICAgICByZXR1cm4gZXhwYW5kZWRJbnRTaXplKHNpemUgKiBj
b250ZXh0LnNjYWxlRmFjdG9yKCkpOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVm
ZmVyOjpjb3B5UmVjdFRvQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgRGVzdGluYXRpb25D
b2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK1Jl
ZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNvcHlSZWN0VG9CdWZmZXIoY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIGNv
bnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBpZiAocmVjdC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NSwxMyArNDUsMTMgQEAgc3RydWN0IEl0ZW1CdWZmZXJIYW5kbGU7CiBjbGFzcyBJbWFnZUJ1
ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFnZUJ1ZmZlcj4sIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxJbWFnZUJ1ZmZlcj4gewogcHVibGljOgogICAgIC8vIFdpbGwgcmV0dXJu
IGEgbnVsbCBwb2ludGVyIG9uIGFsbG9jYXRpb24gZmFpbHVyZS4KLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgUmVu
ZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBQaXhlbEZvcm1hdCwgY29u
c3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
UHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0
LCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdN
b2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdCwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCwgY29u
c3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
UHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhl
bEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKIAogICAgIC8vIENyZWF0ZSBh
biBpbWFnZSBidWZmZXIgY29tcGF0aWJsZSB3aXRoIHRoZSBjb250ZXh0LCB3aXRoIHN1aXRhYmxl
IHJlc29sdXRpb24gZm9yIGRyYXdpbmcgaW50byB0aGUgYnVmZmVyIGFuZCB0aGVuIGludG8gdGhp
cyBjb250ZXh0LgogICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0gICAg
c3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBG
bG9hdFNpemUmLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
OwotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
Y29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VC
dWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CisgICAgc3RhdGlj
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNp
emUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYs
IGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGFyZSB1
c2VkIHdoZW4gY2xhbXBpbmcgdGhlIEltYWdlQnVmZmVyIHdoaWNoIGlzIGNyZWF0ZWQgZm9yIGZp
bHRlciwgbWFza2VyIG9yIGNsaXBwZXIuCiAgICAgc3RhdGljIGJvb2wgc2l6ZU5lZWRzQ2xhbXBp
bmcoY29uc3QgRmxvYXRTaXplJik7CkBAIC0xMDcsNyArMTA3LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgUmVmUHRyPEltYWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNr
aW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNv
bnN0ID0gMDsKIAogICAgIC8vIENyZWF0ZSBhbiBpbWFnZSBidWZmZXIgY29tcGF0aWJsZSB3aXRo
IHRoZSBjb250ZXh0IGFuZCBjb3B5IHJlY3QgZnJvbSB0aGlzIGJ1ZmZlciBpbnRvIHRoaXMgbmV3
IG9uZS4KLSAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNvcHlSZWN0VG9CdWZmZXIoY29uc3QgRmxv
YXRSZWN0JiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsK
KyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNvcHlSZWN0VG9CdWZmZXIoY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7
CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwg
LTEsIC0xKSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsKQEAg
LTEyMCw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNsaXBUb01hc2soR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkgPSAwOwogCiAgICAgdmly
dHVhbCB2b2lkIGNvbnZlcnRUb0x1bWluYW5jZU1hc2soKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIHNyY0NvbG9yU3BhY2Us
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBkc3RDb2xvclNwYWNlKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBzcmND
b2xvclNwYWNlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGRzdENvbG9yU3BhY2UpID0g
MDsKIAogICAgIHZpcnR1YWwgU3RyaW5nIHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkgPSBXVEY6Om51bGxvcHQsIFByZXNlcnZlUmVzb2x1
dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFZl
Y3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91
YmxlPiBxdWFsaXR5ID0gV1RGOjpudWxsb3B0KSBjb25zdCA9IDA7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5j
cHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDggQEAg
SW1hZ2VCdWZmZXJCYWNrZW5kOjpJbWFnZUJ1ZmZlckJhY2tlbmQoYwogewogfQogCitJbWFnZUJ1
ZmZlckJhY2tlbmQ6On5JbWFnZUJ1ZmZlckJhY2tlbmQoKSA9IGRlZmF1bHQ7CisKIFJlZlB0cjxO
YXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUltYWdlKCkKIHsK
ICAgICByZXR1cm4gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKQEAgLTEx
NCwxNSArMTE2LDE3IEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZlckJhY2tlbmQK
ICAgICBpZiAoZGVzdGluYXRpb25SZWN0LnNpemUoKSAhPSBzb3VyY2VSZWN0U2NhbGVkLnNpemUo
KSkKICAgICAgICAgcGl4ZWxCdWZmZXItPmRhdGEoKS56ZXJvRmlsbCgpOwogCi0gICAgQ29uc3RQ
aXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IHNvdXJjZTsKLSAgICBzb3VyY2UuZm9ybWF0ID0geyBB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBwaXhlbEZvcm1hdCgpLCBjb2xv
clNwYWNlKCkgfTsKLSAgICBzb3VyY2UuYnl0ZXNQZXJSb3cgPSBieXRlc1BlclJvdygpOwotICAg
IHNvdXJjZS5yb3dzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YSkgKyBzb3VyY2VS
ZWN0Q2xpcHBlZC55KCkgKiBzb3VyY2UuYnl0ZXNQZXJSb3cgKyBzb3VyY2VSZWN0Q2xpcHBlZC54
KCkgKiA0OworICAgIENvbnN0UGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBzb3VyY2UgeworICAg
ICAgICB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIHBpeGVsRm9ybWF0
KCksIGNvbG9yU3BhY2UoKSB9LAorICAgICAgICBieXRlc1BlclJvdygpLAorICAgICAgICByZWlu
dGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhKSArIHNvdXJjZVJlY3RDbGlwcGVkLnkoKSAqIHNv
dXJjZS5ieXRlc1BlclJvdyArIHNvdXJjZVJlY3RDbGlwcGVkLngoKSAqIDQKKyAgICB9OwogICAg
IAotICAgIFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgZGVzdGluYXRpb247Ci0gICAgZGVzdGlu
YXRpb24uZm9ybWF0ID0gZGVzdGluYXRpb25Gb3JtYXQ7Ci0gICAgZGVzdGluYXRpb24uYnl0ZXNQ
ZXJSb3cgPSA0ICogc291cmNlUmVjdFNjYWxlZC53aWR0aCgpOwotICAgIGRlc3RpbmF0aW9uLnJv
d3MgPSBwaXhlbEJ1ZmZlci0+ZGF0YSgpLmRhdGEoKSArIGRlc3RpbmF0aW9uUmVjdC55KCkgKiBk
ZXN0aW5hdGlvbi5ieXRlc1BlclJvdyArIGRlc3RpbmF0aW9uUmVjdC54KCkgKiA0OworICAgIFBp
eGVsQnVmZmVyQ29udmVyc2lvblZpZXcgZGVzdGluYXRpb24geworICAgICAgICBkZXN0aW5hdGlv
bkZvcm1hdCwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDQgKiBzb3VyY2VSZWN0U2Nh
bGVkLndpZHRoKCkpLAorICAgICAgICBwaXhlbEJ1ZmZlci0+ZGF0YSgpLmRhdGEoKSArIGRlc3Rp
bmF0aW9uUmVjdC55KCkgKiBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyArIGRlc3RpbmF0aW9uUmVj
dC54KCkgKiA0CisgICAgfTsKIAogICAgIGNvbnZlcnRJbWFnZVBpeGVscyhzb3VyY2UsIGRlc3Rp
bmF0aW9uLCBkZXN0aW5hdGlvblJlY3Quc2l6ZSgpKTsKIApAQCAtMTQ3LDE1ICsxNTEsMTcgQEAg
dm9pZCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnB1dFBpeGVsQnVmZmVyKAogICAgIGRlc3RpbmF0aW9u
UmVjdC5pbnRlcnNlY3QoYmFja2VuZFJlY3QoKSk7CiAgICAgc291cmNlUmVjdENsaXBwZWQuc2V0
U2l6ZShkZXN0aW5hdGlvblJlY3Quc2l6ZSgpKTsKIAotICAgIENvbnN0UGl4ZWxCdWZmZXJDb252
ZXJzaW9uVmlldyBzb3VyY2U7Ci0gICAgc291cmNlLmZvcm1hdCA9IHNvdXJjZVBpeGVsQnVmZmVy
LmZvcm1hdCgpOwotICAgIHNvdXJjZS5ieXRlc1BlclJvdyA9IDQgKiBzb3VyY2VQaXhlbEJ1ZmZl
ci5zaXplKCkud2lkdGgoKTsKLSAgICBzb3VyY2Uucm93cyA9IHNvdXJjZVBpeGVsQnVmZmVyLmRh
dGEoKS5kYXRhKCkgKyBzb3VyY2VSZWN0Q2xpcHBlZC55KCkgKiBzb3VyY2UuYnl0ZXNQZXJSb3cg
KyBzb3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0OwotCi0gICAgUGl4ZWxCdWZmZXJDb252ZXJzaW9u
VmlldyBkZXN0aW5hdGlvbjsKLSAgICBkZXN0aW5hdGlvbi5mb3JtYXQgPSB7IGRlc3RpbmF0aW9u
QWxwaGFGb3JtYXQsIHBpeGVsRm9ybWF0KCksIGNvbG9yU3BhY2UoKSB9OwotICAgIGRlc3RpbmF0
aW9uLmJ5dGVzUGVyUm93ID0gYnl0ZXNQZXJSb3coKTsKLSAgICBkZXN0aW5hdGlvbi5yb3dzID0g
cmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YSkgKyBkZXN0aW5hdGlvblJlY3QueSgpICog
ZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgKyBkZXN0aW5hdGlvblJlY3QueCgpICogNDsKKyAgICBD
b25zdFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgc291cmNlIHsKKyAgICAgICAgc291cmNlUGl4
ZWxCdWZmZXIuZm9ybWF0KCksCisgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPig0ICogc291
cmNlUGl4ZWxCdWZmZXIuc2l6ZSgpLndpZHRoKCkpLAorICAgICAgICBzb3VyY2VQaXhlbEJ1ZmZl
ci5kYXRhKCkuZGF0YSgpICsgc291cmNlUmVjdENsaXBwZWQueSgpICogc291cmNlLmJ5dGVzUGVy
Um93ICsgc291cmNlUmVjdENsaXBwZWQueCgpICogNAorICAgIH07CisKKyAgICBQaXhlbEJ1ZmZl
ckNvbnZlcnNpb25WaWV3IGRlc3RpbmF0aW9uIHsKKyAgICAgICAgeyBkZXN0aW5hdGlvbkFscGhh
Rm9ybWF0LCBwaXhlbEZvcm1hdCgpLCBjb2xvclNwYWNlKCkgfSwKKyAgICAgICAgYnl0ZXNQZXJS
b3coKSwKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YSkgKyBkZXN0aW5h
dGlvblJlY3QueSgpICogZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgKyBkZXN0aW5hdGlvblJlY3Qu
eCgpICogNAorICAgIH07CiAKICAgICBjb252ZXJ0SW1hZ2VQaXhlbHMoc291cmNlLCBkZXN0aW5h
dGlvbiwgZGVzdGluYXRpb25SZWN0LnNpemUoKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXJCYWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKLSNpbmNsdWRlICJDb2xvclNwYWNlLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xv
clNwYWNlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBl
c0dMLmgiCiAjaW5jbHVkZSAiSW1hZ2VQYWludGluZ09wdGlvbnMuaCIKQEAgLTc4LDcgKzc4LDcg
QEAgcHVibGljOgogICAgICAgICBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdDsKICAgICB9OwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SW1hZ2VCdWZmZXJCYWNrZW5kKCkgPSBkZWZhdWx0
OworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkltYWdlQnVmZmVyQmFja2VuZCgpOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEludFNpemUgY2FsY3VsYXRlQmFja2VuZFNpemUoY29u
c3QgUGFyYW1ldGVycyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzaXplX3QgY2FsY3Vs
YXRlTWVtb3J5Q29zdChjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgdW5zaWduZWQgYnl0ZXNQ
ZXJSb3cpOwpAQCAtMTAyLDcgKzEwMiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xp
cFRvTWFzayhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSB7IH0KIAogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY29udmVydFRvTHVtaW5hbmNlTWFzaygpOwotICAgIHZpcnR1YWwg
dm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgRGVzdGluYXRp
b25Db2xvclNwYWNlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
KSB7IH0KIAogICAgIHZpcnR1YWwgU3RyaW5nIHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpIGNvbnN0ID0gMDsKQEAgLTE0MCw3ICsx
NDAsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBJbnRTaXplIGxvZ2ljYWxTaXplKCkgY29uc3QgeyBy
ZXR1cm4gSW50U2l6ZShtX3BhcmFtZXRlcnMubG9naWNhbFNpemUpOyB9CiAgICAgZmxvYXQgcmVz
b2x1dGlvblNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLnJlc29sdXRpb25TY2Fs
ZTsgfQotICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1
cm4gbV9wYXJhbWV0ZXJzLmNvbG9yU3BhY2U7IH0KKyAgICBjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMuY29sb3JTcGFj
ZTsgfQogICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9wYXJh
bWV0ZXJzLnBpeGVsRm9ybWF0OyB9CiAKICAgICBJbnRSZWN0IGxvZ2ljYWxSZWN0KCkgY29uc3Qg
eyByZXR1cm4gSW50UmVjdChJbnRQb2ludDo6emVybygpLCBsb2dpY2FsU2l6ZSgpKTsgfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuaAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4
ZWxCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJBbHBoYVByZW11bHRpcGxpY2F0aW9uLmgiCi0jaW5jbHVkZSAiQ29sb3JT
cGFjZS5oIgorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIklu
dFNpemUuaCIKICNpbmNsdWRlICJQaXhlbEJ1ZmZlckZvcm1hdC5oIgogI2luY2x1ZGUgIlBpeGVs
Rm9ybWF0LmgiCkBAIC04NywxOSArODcsMjEgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBQaXhlbEJ1ZmZlcgogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxQaXhlbEJ1
ZmZlcj4gUGl4ZWxCdWZmZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFBpeGVs
QnVmZmVyRm9ybWF0IGZvcm1hdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZvcm1hdCkpCisg
ICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXJGb3JtYXQ+IGZvcm1hdDsKKyAgICBkZWNvZGVyID4+IGZv
cm1hdDsKKyAgICBpZiAoIWZvcm1hdCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAog
ICAgIC8vIEZJWE1FOiBTdXBwb3J0IG5vbi04IGJpdCBmb3JtYXRzLgotICAgIGlmICghKGZvcm1h
dC5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6UkdCQTggfHwgZm9ybWF0LnBpeGVsRm9ybWF0
ID09IFBpeGVsRm9ybWF0OjpCR1JBOCkpCisgICAgaWYgKCEoZm9ybWF0LT5waXhlbEZvcm1hdCA9
PSBQaXhlbEZvcm1hdDo6UkdCQTggfHwgZm9ybWF0LT5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1h
dDo6QkdSQTgpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgSW50U2l6ZSBz
aXplOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZSkpCisgICAgT3B0aW9uYWw8SW50U2l6
ZT4gc2l6ZTsKKyAgICBkZWNvZGVyID4+IHNpemU7CisgICAgaWYgKCFzaXplKQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgYXV0byBjb21wdXRlZEJ1ZmZlclNpemUgPSBQaXhl
bEJ1ZmZlcjo6Y29tcHV0ZUJ1ZmZlclNpemUoZm9ybWF0LCBzaXplKTsKKyAgICBhdXRvIGNvbXB1
dGVkQnVmZmVyU2l6ZSA9IFBpeGVsQnVmZmVyOjpjb21wdXRlQnVmZmVyU2l6ZSgqZm9ybWF0LCAq
c2l6ZSk7CiAgICAgaWYgKGNvbXB1dGVkQnVmZmVyU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKQEAgLTEwNyw3ICsxMDksNyBAQCB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBPcHRpb25hbDxQaXhlbEJ1CiAgICAgaWYgKCFkZWNvZGVyLnRlbXBsYXRl
IGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48dWludDhfdD4oYnVmZmVyU2l6ZSkpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBhdXRvIHJlc3VsdCA9IFBpeGVsQnVmZmVy
Ojp0cnlDcmVhdGVGb3JEZWNvZGluZyhmb3JtYXQsIHNpemUsIGJ1ZmZlclNpemUpOworICAgIGF1
dG8gcmVzdWx0ID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZUZvckRlY29kaW5nKFdURk1vdmUoKmZv
cm1hdCksICpzaXplLCBidWZmZXJTaXplKTsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckNvbnZlcnNpb24uY3BwCShyZXZpc2lvbiAy
Nzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckNv
bnZlcnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMiArMjcsMTEgQEAKICNpbmNsdWRl
ICJQaXhlbEJ1ZmZlckNvbnZlcnNpb24uaCIKIAogI2luY2x1ZGUgIkFscGhhUHJlbXVsdGlwbGlj
YXRpb24uaCIKLSNpbmNsdWRlICJDb2xvclNwYWNlLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25D
b2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlBpeGVsRm9ybWF0
LmgiCiAKICNpZiBVU0UoQUNDRUxFUkFURSkgJiYgVVNFKENHKQotI2luY2x1ZGUgIkNvbG9yU3Bh
Y2VDRy5oIgogI2luY2x1ZGUgPEFjY2VsZXJhdGUvQWNjZWxlcmF0ZS5oPgogI2VuZGlmCiAKQEAg
LTcxLDcgKzcwLDcgQEAgc3RhdGljIGlubGluZSB2SW1hZ2VfQ0dJbWFnZUZvcm1hdCBtYWtlVgog
CiAgICAgcmVzdWx0LmJpdHNQZXJDb21wb25lbnQgPSBiaXRzUGVyQ29tcG9uZW50OwogICAgIHJl
c3VsdC5iaXRzUGVyUGl4ZWwgPSBiaXRzUGVyUGl4ZWw7Ci0gICAgcmVzdWx0LmNvbG9yU3BhY2Ug
PSBjYWNoZWRDR0NvbG9yU3BhY2UoZm9ybWF0LmNvbG9yU3BhY2UpOworICAgIHJlc3VsdC5jb2xv
clNwYWNlID0gZm9ybWF0LmNvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCk7CiAgICAgcmVz
dWx0LmJpdG1hcEluZm8gPSBiaXRtYXBJbmZvOwogICAgIHJlc3VsdC52ZXJzaW9uID0gMDsKICAg
ICByZXN1bHQuZGVjb2RlID0gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuaAkocmV2aXNpb24gMjc3OTE5
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJBbHBoYVByZW11bHRpcGxpY2F0aW9uLmgiCi0jaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgor
I2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIlBpeGVsRm9ybWF0
LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4K
QEAgLTUxLDE5ICs1MSwyMiBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIFBpeGVsQnVm
ZmVyCiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPFBpeGVsQnVmZmVyRm9ybWF0
PiBQaXhlbEJ1ZmZlckZvcm1hdDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYUZvcm1hdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGFscGhhRm9ybWF0KSkKKyAgICBPcHRpb25hbDxBbHBoYVByZW11bHRpcGxpY2F0aW9uPiBhbHBo
YUZvcm1hdDsKKyAgICBkZWNvZGVyID4+IGFscGhhRm9ybWF0OworICAgIGlmICghYWxwaGFGb3Jt
YXQpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBQaXhlbEZvcm1hdCBwaXhl
bEZvcm1hdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBpeGVsRm9ybWF0KSkKKyAgICBPcHRp
b25hbDxQaXhlbEZvcm1hdD4gcGl4ZWxGb3JtYXQ7CisgICAgZGVjb2RlciA+PiBwaXhlbEZvcm1h
dDsKKyAgICBpZiAoIXBpeGVsRm9ybWF0KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
Ci0gICAgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2U7Ci0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShjb2xvclNwYWNlKSkKKyAgICBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+
IGNvbG9yU3BhY2U7CisgICAgZGVjb2RlciA+PiBjb2xvclNwYWNlOworICAgIGlmICghY29sb3JT
cGFjZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7IHsgYWxw
aGFGb3JtYXQsIHBpeGVsRm9ybWF0LCBjb2xvclNwYWNlIH0gfTsKKyAgICByZXR1cm4geyB7IFdU
Rk1vdmUoKmFscGhhRm9ybWF0KSwgV1RGTW92ZSgqcGl4ZWxGb3JtYXQpLCBXVEZNb3ZlKCpjb2xv
clNwYWNlKSB9IH07CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtQ29sb3JTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtQ29sb3JTcGFjZS5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtQ29sb3JTcGFjZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIFVTRShDRykKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Cit0eXBlZGVmIHN0cnVjdCBD
R0NvbG9yU3BhY2UqIENHQ29sb3JTcGFjZVJlZjsKKyNlbHNlCisjaW5jbHVkZSA8d3RmL0VudW1U
cmFpdHMuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBVU0UoQ0cpCisK
K3VzaW5nIFBsYXRmb3JtQ29sb3JTcGFjZSA9IFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+Owor
dXNpbmcgUGxhdGZvcm1Db2xvclNwYWNlVmFsdWUgPSBDR0NvbG9yU3BhY2VSZWY7CisKKyNlbHNl
CisKK3N0cnVjdCBQbGF0Zm9ybUNvbG9yU3BhY2UgeworICAgIGVudW0gY2xhc3MgTmFtZSB7Cisg
ICAgICAgIFNSR0IKKyNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NS
R0IpCisgICAgICAgICwgTGluZWFyU1JHQgorI2VuZGlmCisjaWYgRU5BQkxFKERFU1RJTkFUSU9O
X0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCisgICAgICAgICwgRGlzcGxheVAzCisjZW5kaWYKKyAg
ICB9OworICAgIE5hbWUgbmFtZTsKKyAgICBOYW1lIGdldCgpIGNvbnN0IHsgcmV0dXJuIG5hbWU7
IH0KK307Cit1c2luZyBQbGF0Zm9ybUNvbG9yU3BhY2VWYWx1ZSA9IFBsYXRmb3JtQ29sb3JTcGFj
ZTo6TmFtZTsKKworI2VuZGlmCisKK30KKworbmFtZXNwYWNlIFdURiB7CisKKyNpZiAhVVNFKENH
KQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlBsYXRmb3JtQ29sb3JT
cGFjZTo6TmFtZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdl
YkNvcmU6OlBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZSwKKyAgICAgICAgV2ViQ29yZTo6UGxhdGZv
cm1Db2xvclNwYWNlOjpOYW1lOjpTUkdCCisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQ
QUNFX0xJTkVBUl9TUkdCKQorICAgICAgICAsIFdlYkNvcmU6OlBsYXRmb3JtQ29sb3JTcGFjZTo6
TmFtZTo6TGluZWFyU1JHQgorI2VuZGlmCisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQ
QUNFX0RJU1BMQVlfUDMpCisgICAgICAgICwgV2ViQ29yZTo6UGxhdGZvcm1Db2xvclNwYWNlOjpO
YW1lOjpEaXNwbGF5UDMKKyNlbmRpZgorICAgID47Cit9OworCisjZW5kaWYKKworfSAvLyBuYW1l
c3BhY2UgV1RGCisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZVZpZGVvU2FtcGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBzdGF0aWMgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxJ
T1N1cmZhY2U+CiAgICAgfQogCiAgICAgSW50U2l6ZSBzaXplIHsgc3RhdGljX2Nhc3Q8aW50PihD
VlBpeGVsQnVmZmVyR2V0V2lkdGgocGl4ZWxCdWZmZXIpKSwgc3RhdGljX2Nhc3Q8aW50PihDVlBp
eGVsQnVmZmVyR2V0SGVpZ2h0KHBpeGVsQnVmZmVyKSkgfTsKLSAgICBhdXRvIGlvU3VyZmFjZSA9
ICBJT1N1cmZhY2U6OmNyZWF0ZShzaXplLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBJT1N1cmZhY2U6
OkZvcm1hdDo6QkdSQSk7CisgICAgYXV0byBpb1N1cmZhY2UgPSAgSU9TdXJmYWNlOjpjcmVhdGUo
c2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIElPU3VyZmFjZTo6Rm9ybWF0OjpC
R1JBKTsKIAogICAgIElPU3VyZmFjZTo6TG9ja2VyIGxvY2soKmlvU3VyZmFjZSk7CiAgICAgdklt
YWdlX0J1ZmZlciBzcmM7CkBAIC0xMTMsNyArMTEzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZVZpZGVvU2FtcGxlPiBSZW1vdAogICAgICAgICBzdXJmYWNlID0gaW9TdXJmYWNlLT5zdXJmYWNl
KCk7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBs
ZT4obmV3IFJlbW90ZVZpZGVvU2FtcGxlKHN1cmZhY2UsIHNSR0JDb2xvclNwYWNlUmVmKCksIHNh
bXBsZS5wcmVzZW50YXRpb25UaW1lKCksIHNhbXBsZS52aWRlb1JvdGF0aW9uKCksIHNhbXBsZS52
aWRlb01pcnJvcmVkKCkpKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVv
U2FtcGxlPihuZXcgUmVtb3RlVmlkZW9TYW1wbGUoc3VyZmFjZSwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCksIHNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCksIHNhbXBsZS52aWRlb1JvdGF0
aW9uKCksIHNhbXBsZS52aWRlb01pcnJvcmVkKCkpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZVZpZGVvU2FtcGxlPiBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKENWUGl4ZWxCdWZmZXJS
ZWYgaW1hZ2VCdWZmZXIsIE1lZGlhVGltZSYmIHByZXNlbnRhdGlvblRpbWUsIE1lZGlhU2FtcGxl
OjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKQpAQCAtMTI0LDEwICsxMjQsMTAgQEAgc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBSZW1vdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPihu
ZXcgUmVtb3RlVmlkZW9TYW1wbGUoc3VyZmFjZSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwgV1RGTW92
ZShwcmVzZW50YXRpb25UaW1lKSwgcm90YXRpb24sIGZhbHNlKSk7CisgICAgcmV0dXJuIHN0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4obmV3IFJlbW90ZVZpZGVvU2FtcGxlKHN1cmZh
Y2UsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBXVEZNb3ZlKHByZXNlbnRhdGlvblRp
bWUpLCByb3RhdGlvbiwgZmFsc2UpKTsKIH0KIAotUmVtb3RlVmlkZW9TYW1wbGU6OlJlbW90ZVZp
ZGVvU2FtcGxlKElPU3VyZmFjZVJlZiBzdXJmYWNlLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFj
ZSwgTWVkaWFUaW1lJiYgdGltZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24s
IGJvb2wgbWlycm9yZWQpCitSZW1vdGVWaWRlb1NhbXBsZTo6UmVtb3RlVmlkZW9TYW1wbGUoSU9T
dXJmYWNlUmVmIHN1cmZhY2UsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFj
ZSwgTWVkaWFUaW1lJiYgdGltZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24s
IGJvb2wgbWlycm9yZWQpCiAgICAgOiBtX2lvU3VyZmFjZShXZWJDb3JlOjpJT1N1cmZhY2U6OmNy
ZWF0ZUZyb21TdXJmYWNlKHN1cmZhY2UsIGNvbG9yU3BhY2UpKQogICAgICwgbV9yb3RhdGlvbihy
b3RhdGlvbikKICAgICAsIG1fdGltZShXVEZNb3ZlKHRpbWUpKQpAQCAtMTQwLDcgKzE0MCw3IEBA
IFJlbW90ZVZpZGVvU2FtcGxlOjpSZW1vdGVWaWRlb1NhbXBsZShJT1MKIElPU3VyZmFjZVJlZiBS
ZW1vdGVWaWRlb1NhbXBsZTo6c3VyZmFjZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lvU3VyZmFj
ZSAmJiBtX3NlbmRSaWdodCkKLSAgICAgICAgY29uc3RfY2FzdDxSZW1vdGVWaWRlb1NhbXBsZSo+
KHRoaXMpLT5tX2lvU3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRS
aWdodChXVEZNb3ZlKGNvbnN0X2Nhc3Q8UmVtb3RlVmlkZW9TYW1wbGUqPih0aGlzKS0+bV9zZW5k
UmlnaHQpLCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICAgICAgY29uc3RfY2FzdDxSZW1vdGVW
aWRlb1NhbXBsZSo+KHRoaXMpLT5tX2lvU3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3Jl
YXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGNvbnN0X2Nhc3Q8UmVtb3RlVmlkZW9TYW1wbGUqPih0
aGlzKS0+bV9zZW5kUmlnaHQpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAKICAg
ICByZXR1cm4gbV9pb1N1cmZhY2UgPyBtX2lvU3VyZmFjZS0+c3VyZmFjZSgpIDogbnVsbHB0cjsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2Ft
cGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVt
b3RlVmlkZW9TYW1wbGUuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTAz
LDcgKzEwMyw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgUmVtb3RlVmlkZW9T
YW1wbGUoSU9TdXJmYWNlUmVmLCBDR0NvbG9yU3BhY2VSZWYsIE1lZGlhVGltZSYmLCBNZWRpYVNh
bXBsZTo6VmlkZW9Sb3RhdGlvbiwgYm9vbCk7CisgICAgUmVtb3RlVmlkZW9TYW1wbGUoSU9TdXJm
YWNlUmVmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBNZWRpYVRpbWUmJiwgTWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb24sIGJvb2wpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OklPU3VyZmFjZT4gbV9pb1N1cmZhY2U7CiAgICAgV1RGOjpNYWNoU2VuZFJpZ2h0IG1fc2Vu
ZFJpZ2h0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBA
IHB1YmxpYzoKICAgICAgICAgY2xlYXJTY3JhdGNoQnVmZmVyKCk7CiAKICAgICAgICAgLy8gU2hh
ZG93Qmx1ciBpcyBub3QgdXNlZCB3aXRoIGFjY2VsZXJhdGVkIGRyYXdpbmcsIHNvIGl0J3MgT0sg
dG8gbWFrZSBhbiB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZCBidWZmZXIuCi0gICAgICAg
IG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJvdW5kZWRTaXplLCBSZW5kZXJp
bmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBp
eGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHJvdW5kZWRTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAg
cmV0dXJuIG1faW1hZ2VCdWZmZXI7CiAgICAgfQogCkBAIC02MDQsNyArNjA0LDcgQEAgdm9pZCBT
aGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3coY29uc3QgQQogCiB2b2lkIFNoYWRvd0JsdXI6OmRy
YXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBG
bG9hdFJvdW5kZWRSZWN0JiBzaGFkb3dlZFJlY3QsIGNvbnN0IExheWVySW1hZ2VQcm9wZXJ0aWVz
JiBsYXllckltYWdlUHJvcGVydGllcywgY29uc3QgRHJhd0J1ZmZlckNhbGxiYWNrJiBkcmF3QnVm
ZmVyKQogewotICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoZXhwYW5k
ZWRJbnRTaXplKGxheWVySW1hZ2VQcm9wZXJ0aWVzLmxheWVyU2l6ZSksIFJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKKyAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4
cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGllcy5sYXllclNpemUpLCBSZW5kZXJpbmdN
b2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWxheWVySW1hZ2UpCiAgICAgICAgIHJldHVybjsK
IApAQCAtNjMyLDcgKzYzMiw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRo
b3V0VGkKIAogdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UmVjdCYgZnVsbFJlY3QsIGNvbnN0IEZs
b2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBMYXllckltYWdlUHJvcGVydGllcyYgbGF5
ZXJJbWFnZVByb3BlcnRpZXMsIGNvbnN0IERyYXdCdWZmZXJDYWxsYmFjayYgZHJhd0J1ZmZlcikK
IHsKLSAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50
U2l6ZShsYXllckltYWdlUHJvcGVydGllcy5sYXllclNpemUpLCBSZW5kZXJpbmdNb2RlOjpVbmFj
Y2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CisgICAgYXV0byBsYXllckltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShleHBhbmRl
ZEludFNpemUobGF5ZXJJbWFnZVByb3BlcnRpZXMubGF5ZXJTaXplKSwgUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CiAgICAgaWYgKCFsYXllckltYWdlKQogICAgICAgICByZXR1cm47CiAKQEAg
LTcwNSw3ICs3MDUsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGlu
CiAjZW5kaWYKIAogICAgIGlmICghbGF5ZXJJbWFnZUJ1ZmZlcikgewotICAgICAgICBsYXllcklt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNpemUsIFJlbmRlcmluZ01v
ZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAg
aWYgKCFsYXllckltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTc2
Myw3ICs3NjMsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpCiAj
ZW5kaWYKIAogICAgIGlmICghbGF5ZXJJbWFnZUJ1ZmZlcikgewotICAgICAgICBsYXllckltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNpemUsIFJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKKyAgICAgICAgbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVh
dGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgaWYg
KCFsYXllckltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTkwMyw3
ICs5MDMsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmJsdXJTaGFkb3dCdWZmZXIoSW1hZ2VCCiAgICAg
aWYgKG1fdHlwZSAhPSBCbHVyU2hhZG93KQogICAgICAgICByZXR1cm47CiAKLSAgICBQaXhlbEJ1
ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxp
ZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07Cisg
ICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5w
cmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpIH07CiAgICAgSW50UmVjdCBibHVyUmVjdChJbnRQb2ludCgpLCB0ZW1wbGF0ZVNpemUp
OwogICAgIGF1dG8gbGF5ZXJEYXRhID0gbGF5ZXJJbWFnZS5nZXRQaXhlbEJ1ZmZlcihmb3JtYXQs
IGJsdXJSZWN0KTsKICAgICBpZiAoIWxheWVyRGF0YSkKQEAgLTkzMyw3ICs5MzMsNyBAQCB2b2lk
IFNoYWRvd0JsdXI6OmRyYXdTaGFkb3dMYXllcihjb25zdCBBCiAKICAgICBhZGp1c3RCbHVyUmFk
aXVzKHRyYW5zZm9ybSk7CiAKLSAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGllcy0+bGF5ZXJTaXplKSwgUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
LCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoZXhwYW5kZWRJbnRTaXplKGxheWVySW1hZ2VQcm9wZXJ0aWVzLT5sYXllclNpemUp
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWxheWVySW1hZ2UpCiAgICAg
ICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3
IEBAIHN0YXRpYyB2b2lkIHdpcGVBbHBoYUNoYW5uZWxGcm9tUGl4ZWxzKGkKIAogT3B0aW9uYWw8
UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRS
ZXN1bHRzKCkKIHsKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRp
cGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9
IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6
ZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyb0JhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyb0JhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSwxOSArODksMTkgQEAgdm9p
ZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6Y2xpcFRvTWFzawogICAgICAgICBDYWlybzo6Y2xp
cFRvSW1hZ2VCdWZmZXIoKmRlc3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS0+cGxh
dGZvcm1JbWFnZSgpLmdldCgpLCBkZXN0UmVjdCk7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXJDYWly
b0JhY2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIHNyY0Nv
bG9yU3BhY2UsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBkZXN0Q29sb3JTcGFjZSkKK3ZvaWQgSW1h
Z2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiBzcmNDb2xvclNwYWNlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
IGRlc3RDb2xvclNwYWNlKQogewogICAgIGlmIChzcmNDb2xvclNwYWNlID09IGRlc3RDb2xvclNw
YWNlKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBvbmx5IHNSR0IgPC0+IGxpbmVhclJHQiBh
cmUgc3VwcG9ydGVkIGF0IHRoZSBtb21lbnQKLSAgICBpZiAoKHNyY0NvbG9yU3BhY2UgIT0gRGVz
dGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCICYmIHNyY0NvbG9yU3BhY2UgIT0gRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKQotICAgICAgICB8fCAoZGVzdENvbG9yU3BhY2UgIT0gRGVz
dGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCICYmIGRlc3RDb2xvclNwYWNlICE9IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQikpCisgICAgaWYgKChzcmNDb2xvclNwYWNlICE9IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigpICYmIHNyY0NvbG9yU3BhY2UgIT0gRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCkpCisgICAgICAgIHx8IChkZXN0Q29sb3JTcGFjZSAhPSBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKSAmJiBkZXN0Q29sb3JTcGFjZSAhPSBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1f
cGFyYW1ldGVycy5jb2xvclNwYWNlID0gZGVzdENvbG9yU3BhY2U7CiAKLSAgICBpZiAoZGVzdENv
bG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKSB7CisgICAgaWYg
KGRlc3RDb2xvclNwYWNlID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigpKSB7
CiAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4gbGluZWFyUmdi
TFVUID0gW10gewogICAgICAgICAgICAgc3RkOjphcnJheTx1aW50OF90LCAyNTY+IGFycmF5Owog
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI1NjsgaSsrKSB7CkBAIC0xMTIs
NyArMTEyLDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6dHJhbnNmb3JtQwogICAg
ICAgICAgICAgcmV0dXJuIGFycmF5OwogICAgICAgICB9KCk7CiAgICAgICAgIHBsYXRmb3JtVHJh
bnNmb3JtQ29sb3JTcGFjZShsaW5lYXJSZ2JMVVQpOwotICAgIH0gZWxzZSBpZiAoZGVzdENvbG9y
U3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKSB7CisgICAgfSBlbHNlIGlmIChk
ZXN0Q29sb3JTcGFjZSA9PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSkgewogICAgICAg
ICBzdGF0aWMgY29uc3Qgc3RkOjphcnJheTx1aW50OF90LCAyNTY+IGRldmljZVJnYkxVVD0gW10g
ewogICAgICAgICAgICAgc3RkOjphcnJheTx1aW50OF90LCAyNTY+IGFycmF5OwogICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI1NjsgaSsrKSB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyQ2Fpcm9CYWNrZW5kLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGlwVG9NYXNr
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpIG92ZXJyaWRlOwog
Ci0gICAgdm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBzcmND
b2xvclNwYWNlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgZGVzdENvbG9yU3BhY2UpIG92ZXJyaWRl
OworICAgIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmIHNyY0NvbG9yU3BhY2UsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgZGVzdENvbG9y
U3BhY2UpIG92ZXJyaWRlOwogCiAgICAgU3RyaW5nIHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5
LDEzICsyOSwxNCBAQAogI2lmIFVTRShDRykKIAogI2luY2x1ZGUgIkNvbG9yU3BhY2VDRy5oIgor
I2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgPG11dGV4PgorI2lu
Y2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KLSNpbmNsdWRlIDx3dGYvVGlueUxSVUNhY2hlLmg+Ci0jaW5jbHVkZSA8cGFsL3NwaS9jZy9D
b3JlR3JhcGhpY3NTUEkuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVk
ZSA8d3RmL1RpbnlMUlVDYWNoZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgUmV0
YWluUHRyPENHQ29sb3JSZWY+IGNyZWF0ZUNHQ29sb3IoY29uc3QgQ29sb3ImKTsKQEAgLTkxLDM0
ICs5MiwzOCBAQCBDb2xvcjo6Q29sb3IoQ0dDb2xvclJlZiBjb2xvciwgT3B0aW9uU2V0CiB7CiB9
CiAKLXN0YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY3JlYXRlQ0dDb2xvcihjb25zdCBDb2xv
ciYgY29sb3IpCitzdGF0aWMgc3RkOjpwYWlyPENHQ29sb3JTcGFjZVJlZiwgQ29sb3JDb21wb25l
bnRzPGZsb2F0LCA0Pj4gY29udmVydFRvQ0dDb21wYXRpYmxlQ29tcG9uZW50cyhDb2xvclNwYWNl
IGNvbG9yU3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gY29tcG9uZW50cykKIHsKLSAg
ICBhdXRvIFtjb2xvclNwYWNlLCBjb21wb25lbnRzXSA9IGNvbG9yLmNvbG9yU3BhY2VBbmRDb21w
b25lbnRzKCk7Ci0KLSAgICBhdXRvIGNnQ29sb3JTcGFjZSA9IGNhY2hlZE51bGxhYmxlQ0dDb2xv
clNwYWNlKGNvbG9yU3BhY2UpOwotCiAgICAgLy8gU29tZSBDRyBwb3J0cyBkb24ndCBzdXBwb3J0
IGFsbCB0aGUgY29sb3Igc3BhY2VzIHJlcXVpcmVkIGFuZCByZXR1cm4KICAgICAvLyBudWxscHRy
IGZvciB1bnN1cHBvcnRlZCBjb2xvciBzcGFjZXMuIEluIHRob3NlIGNhc2VzLCB3ZSBlYWdlcmx5
IGNvbnZlcnQKICAgICAvLyB0aGUgY29sb3IgaW50byBlaXRoZXIgZXh0ZW5kZWQgc1JHQiBvciBu
b3JtYWwgc1JHQiwgaWYgZXh0ZW5kZWQgc1JHQiBpcwotICAgIC8vIG5vdCBzdXBwb3J0ZWQsIGJl
Zm9yZSBjcmVhdGluZyB0aGUgQ0dDb2xvclJlZi4KKyAgICAvLyBub3Qgc3VwcG9ydGVkLgorCisg
ICAgYXV0byBjZ0NvbG9yU3BhY2UgPSBjYWNoZWROdWxsYWJsZUNHQ29sb3JTcGFjZShjb2xvclNw
YWNlKTsKICAgICBpZiAoIWNnQ29sb3JTcGFjZSkgewogI2lmIEhBVkUoQ09SRV9HUkFQSElDU19F
WFRFTkRFRF9TUkdCX0NPTE9SX1NQQUNFKQotICAgICAgICBhdXRvIGNvbG9yQ29udmVydGVkVG9F
eHRlbmRlZFNSR0JBID0gY2FsbFdpdGhDb2xvclR5cGUoY29tcG9uZW50cywgY29sb3JTcGFjZSwg
W10gKGNvbnN0IGF1dG8mIGNvbG9yKSB7Ci0gICAgICAgICAgICByZXR1cm4gY29udmVydENvbG9y
PEV4dGVuZGVkU1JHQkE8ZmxvYXQ+Pihjb2xvcik7CisgICAgICAgIGF1dG8gY2dDb21wYXRpYmxl
Q29tcG9uZW50cyA9IGNhbGxXaXRoQ29sb3JUeXBlKGNvbXBvbmVudHMsIGNvbG9yU3BhY2UsIFtd
IChjb25zdCBhdXRvJiBjb2xvcikgeworICAgICAgICAgICAgcmV0dXJuIGFzQ29sb3JDb21wb25l
bnRzKGNvbnZlcnRDb2xvcjxFeHRlbmRlZFNSR0JBPGZsb2F0Pj4oY29sb3IpKTsKICAgICAgICAg
fSk7Ci0gICAgICAgIGNvbXBvbmVudHMgPSBhc0NvbG9yQ29tcG9uZW50cyhjb2xvckNvbnZlcnRl
ZFRvRXh0ZW5kZWRTUkdCQSk7Ci0gICAgICAgIGNnQ29sb3JTcGFjZSA9IGV4dGVuZGVkU1JHQkNv
bG9yU3BhY2VSZWYoKTsKKyAgICAgICAgcmV0dXJuIHsgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJl
ZigpLCBjZ0NvbXBhdGlibGVDb21wb25lbnRzIH07CiAjZWxzZQogICAgICAgICBhdXRvIGNvbG9y
Q29udmVydGVkVG9TUkdCQSA9IGNhbGxXaXRoQ29sb3JUeXBlKGNvbXBvbmVudHMsIGNvbG9yU3Bh
Y2UsIFtdIChjb25zdCBhdXRvJiBjb2xvcikgewotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRD
b2xvcjxTUkdCQTxmbG9hdD4+KGNvbG9yKTsKKyAgICAgICAgICAgIHJldHVybiBhc0NvbG9yQ29t
cG9uZW50cyhjb252ZXJ0Q29sb3I8U1JHQkE8ZmxvYXQ+Pihjb2xvcikpOwogICAgICAgICB9KTsK
LSAgICAgICAgY29tcG9uZW50cyA9IGFzQ29sb3JDb21wb25lbnRzKGNvbG9yQ29udmVydGVkVG9T
UkdCQSk7Ci0gICAgICAgIGNnQ29sb3JTcGFjZSA9IHNSR0JDb2xvclNwYWNlUmVmKCk7CisgICAg
ICAgIHJldHVybiB7IHNSR0JDb2xvclNwYWNlUmVmKCksIGNnQ29tcGF0aWJsZUNvbXBvbmVudHMg
fTsKICNlbmRpZgogICAgIH0KIAotICAgIGF1dG8gW3IsIGcsIGIsIGFdID0gY29tcG9uZW50czsK
LSAgICBDR0Zsb2F0IGNnRmxvYXRDb21wb25lbnRzWzRdIHsgciwgZywgYiwgYSB9OworICAgIHJl
dHVybiB7IGNnQ29sb3JTcGFjZSwgY29tcG9uZW50cyB9OworfQorCitzdGF0aWMgUmV0YWluUHRy
PENHQ29sb3JSZWY+IGNyZWF0ZUNHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIGF1
dG8gW2NvbG9yU3BhY2UsIGNvbXBvbmVudHNdID0gY29sb3IuY29sb3JTcGFjZUFuZENvbXBvbmVu
dHMoKTsKKyAgICBhdXRvIFtjZ0NvbG9yU3BhY2UsIGNnQ29tcGF0aWJsZUNvbXBvbmVudHNdID0g
Y29udmVydFRvQ0dDb21wYXRpYmxlQ29tcG9uZW50cyhjb2xvclNwYWNlLCBjb21wb25lbnRzKTsK
KyAgICAKKyAgICBhdXRvIFtjMSwgYzIsIGMzLCBjNF0gPSBjZ0NvbXBhdGlibGVDb21wb25lbnRz
OworICAgIENHRmxvYXQgY2dGbG9hdENvbXBvbmVudHNbNF0geyBjMSwgYzIsIGMzLCBjNCB9Owog
CiAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShjZ0NvbG9yU3BhY2UsIGNnRmxvYXRD
b21wb25lbnRzKSk7CiB9CkBAIC0xNjEsNiArMTY2LDI0IEBAIENHQ29sb3JSZWYgY2FjaGVkQ0dD
b2xvcihjb25zdCBDb2xvciYgY28KICAgICByZXR1cm4gY2FjaGUuZ2V0KCkuZ2V0KGNvbG9yKS5n
ZXQoKTsKIH0KIAorQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBwbGF0Zm9ybUNvbnZlcnRDb2xv
ckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1dENvbG9yU3BhY2UsIENvbG9yQ29tcG9uZW50czxm
bG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVudHMsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYgb3V0cHV0Q29sb3JTcGFjZSkKK3sKKyAgICAvLyBGSVhNRTogSW52ZXN0aWdhdGUgb3B0aW1p
emluZyB0aGlzIHRvIHVzZSB0aGUgYnVpbHRpbiBjb2xvciBjb252ZXJzaW9uIGNvZGUgZm9yIHN1
cHBvcnRlZCBjb2xvciBzcGFjZXMuCisKKyAgICBhdXRvIFtjZ0lucHV0Q29sb3JTcGFjZSwgY2dD
b21wYXRpYmxlQ29tcG9uZW50c10gPSBjb252ZXJ0VG9DR0NvbXBhdGlibGVDb21wb25lbnRzKGlu
cHV0Q29sb3JTcGFjZSwgaW5wdXRDb2xvckNvbXBvbmVudHMpOworICAgIGlmIChjZ0lucHV0Q29s
b3JTcGFjZSA9PSBvdXRwdXRDb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpKQorICAgICAg
ICByZXR1cm4gY2dDb21wYXRpYmxlQ29tcG9uZW50czsKKworICAgIGF1dG8gW2MxLCBjMiwgYzMs
IGM0XSA9IGNnQ29tcGF0aWJsZUNvbXBvbmVudHM7CisgICAgQ0dGbG9hdCBzb3VyY2VDb21wb25l
bnRzWzRdIHsgYzEsIGMyLCBjMywgYzQgfTsKKyAgICBDR0Zsb2F0IGRlc3RpbmF0aW9uQ29tcG9u
ZW50c1s0XSB7IH07CisKKyAgICBhdXRvIHRyYW5zZm9ybSA9IGFkb3B0Q0YoQ0dDb2xvclRyYW5z
Zm9ybUNyZWF0ZShvdXRwdXRDb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBudWxscHRy
KSk7CisgICAgYXV0byByZXN1bHQgPSBDR0NvbG9yVHJhbnNmb3JtQ29udmVydENvbG9yQ29tcG9u
ZW50cyh0cmFuc2Zvcm0uZ2V0KCksIGNnSW5wdXRDb2xvclNwYWNlLCBrQ0dSZW5kZXJpbmdJbnRl
bnREZWZhdWx0LCBzb3VyY2VDb21wb25lbnRzLCBkZXN0aW5hdGlvbkNvbXBvbmVudHMpOworICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworICAgIHJldHVybiB7IHN0YXRpY19jYXN0
PGZsb2F0PihkZXN0aW5hdGlvbkNvbXBvbmVudHNbMF0pLCBzdGF0aWNfY2FzdDxmbG9hdD4oZGVz
dGluYXRpb25Db21wb25lbnRzWzFdKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRlc3RpbmF0aW9uQ29t
cG9uZW50c1syXSksIHN0YXRpY19jYXN0PGZsb2F0PihkZXN0aW5hdGlvbkNvbXBvbmVudHNbM10p
IH07Cit9CisKIH0KIAogI2VuZGlmIC8vIFVTRShDRykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCShyZXZpc2lvbiAyNzc5
MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cu
aAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDIzICsxMTksNCBAQCBzdGF0aWMgaW5saW5lIENHQ29s
b3JTcGFjZVJlZiBjYWNoZWROdWxsCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLS8vIE5PVEU6
IFNpbmNlIHRoaXMgZnVuY3Rpb24gaXMgZm9yICpkZXN0aW5hdGlvbiogY29sb3Igc3BhY2VzIHdo
b3NlIGNhbGxlcnMgYWx3YXlzIGV4cGVjdCBhIG5vbi1udWxsIGNvbG9yIHNwYWNlLCB0aGlzIGZ1
bmN0aW9uIGlzIGd1YXJhbnRlZWQgdG8gcmV0dXJuIG5vbi1udWxsLCB1bmxpa2UgY2FjaGVkTnVs
bGFibGVDR0NvbG9yU3BhY2UoKS4KLXN0YXRpYyBpbmxpbmUgQ0dDb2xvclNwYWNlUmVmIGNhY2hl
ZENHQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkKLXsKLSAgICBz
d2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QjoKLSAgICAgICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jaWYgRU5BQkxFKERFU1RJ
TkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpMaW5lYXJTUkdCOgotICAgICAgICByZXR1cm4gbGluZWFyU1JHQkNvbG9yU3BhY2VS
ZWYoKTsKLSNlbmRpZgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZ
X1AzKQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0gICAgICAg
IHJldHVybiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCk7Ci0jZW5kaWYKLSAgICB9Ci0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlUmVmKCk7Ci19Ci0K
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29u
dGV4dEdMQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTMyLDcgKzUzMiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnBhaW50VG9DYW4KICAgICB9KSk7CiAKICAgICBhdXRvIGltYWdlU2l6ZSA9IHBpeGVs
QnVmZmVyLnNpemUoKTsKLSAgICBhdXRvIGltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9w
dENGKENHSW1hZ2VDcmVhdGUoaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSwg
OCwgMzIsIDQgKiBpbWFnZVNpemUud2lkdGgoKSwgY2FjaGVkQ0dDb2xvclNwYWNlKHBpeGVsQnVm
ZmVyLmZvcm1hdCgpLmNvbG9yU3BhY2UpLCBiaXRtYXBJbmZvLCBkYXRhUHJvdmlkZXIuZ2V0KCks
IDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSkpOworICAgIGF1dG8gaW1hZ2Ug
PSBOYXRpdmVJbWFnZTo6Y3JlYXRlKGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lk
dGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBw
aXhlbEJ1ZmZlci5mb3JtYXQoKS5jb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBiaXRt
YXBJbmZvLCBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnRE
ZWZhdWx0KSkpOwogCiAgICAgLy8gQ1NTIHN0eWxpbmcgbWF5IGNhdXNlIHRoZSBjYW52YXMncyBj
b250ZW50IHRvIGJlIHJlc2l6ZWQgb24KICAgICAvLyB0aGUgcGFnZS4gR28gYmFjayB0byB0aGUg
Q2FudmFzIHRvIGZpZ3VyZSBvdXQgdGhlIGNvcnJlY3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZh
Y2VQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgSEFWRShJ
T1NVUkZBQ0UpCiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhp
Y3MuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTU5LDcgKzYwLDcgQEAg
SU9TdXJmYWNlUG9vbCYgSU9TdXJmYWNlUG9vbDo6c2hhcmVkUG9vbAogICAgIHJldHVybiBwb29s
OwogfQogCi1zdGF0aWMgYm9vbCBzdXJmYWNlTWF0Y2hlc1BhcmFtZXRlcnMoSU9TdXJmYWNlJiBz
dXJmYWNlLCBJbnRTaXplIHJlcXVlc3RlZFNpemUsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNl
LCBJT1N1cmZhY2U6OkZvcm1hdCBmb3JtYXQpCitzdGF0aWMgYm9vbCBzdXJmYWNlTWF0Y2hlc1Bh
cmFtZXRlcnMoSU9TdXJmYWNlJiBzdXJmYWNlLCBJbnRTaXplIHJlcXVlc3RlZFNpemUsIGNvbnN0
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgSU9TdXJmYWNlOjpGb3JtYXQgZm9y
bWF0KQogewogICAgIGlmIChmb3JtYXQgIT0gc3VyZmFjZS5mb3JtYXQoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTAyLDcgKzEwMyw3IEBAIHZvaWQgSU9TdXJmYWNlUG9vbDo6ZGlkVXNl
U3VyZmFjZU9mU2l6ZSgKICAgICBtX3NpemVzSW5QcnVuZU9yZGVyLmFwcGVuZChzaXplKTsKIH0K
IAotc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlUG9vbDo6dGFrZVN1cmZhY2Uo
SW50U2l6ZSBzaXplLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwgSU9TdXJmYWNlOjpGb3Jt
YXQgZm9ybWF0KQorc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlUG9vbDo6dGFr
ZVN1cmZhY2UoSW50U2l6ZSBzaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9y
U3BhY2UsIElPU3VyZmFjZTo6Rm9ybWF0IGZvcm1hdCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9sb2NrIH07CiAgICAgQ2FjaGVkU3VyZmFjZU1hcDo6aXRlcmF0b3IgbWFwSXRlciA9IG1fY2Fj
aGVkU3VyZmFjZXMuZmluZChzaXplKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmgJKHJldmlzaW9uIDI3NzkxOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuaAkod29y
a2luZyBjb3B5KQpAQCAtMzksNiArMzksOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIERlc3RpbmF0YXRpb25Db2xvclNwYWNlOworCiBjbGFzcyBJT1N1cmZhY2VQb29sIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShJT1N1cmZhY2VQb29sKTsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKQEAgLTQ3LDcgKzQ5LDcgQEAgY2xhc3MgSU9TdXJmYWNlUG9vbCB7CiBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIElPU3VyZmFjZVBvb2wmIHNoYXJlZFBvb2wo
KTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IHRha2VTdXJmYWNlKEludFNpemUs
IENHQ29sb3JTcGFjZVJlZiwgSU9TdXJmYWNlOjpGb3JtYXQpOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxJT1N1cmZhY2U+IHRha2VTdXJmYWNlKEludFNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYsIElPU3VyZmFjZTo6Rm9ybWF0KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZFN1
cmZhY2Uoc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4pOwogCiAgICAgdm9pZCBkaXNjYXJkQWxs
U3VyZmFjZXMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAJKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dC
YWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDcgKzE3NCw3IEBAIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBJbWFnZUJ1ZmZlckNHQmFja2UKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB0
aGlzIGJlIHVzaW5nIHRoZSBzYW1lIGxvZ2ljIGFzIEltYWdlQnVmZmVyVXRpbGl0aWVzQ0c/CiAK
ICAgICAgICAgLy8gSlBFR3MgZG9uJ3QgaGF2ZSBhbiBhbHBoYSBjaGFubmVsLCBzbyB3ZSBoYXZl
IHRvIG1hbnVhbGx5IGNvbXBvc2l0ZSBvbiB0b3Agb2YgYmxhY2suCi0gICAgICAgIFBpeGVsQnVm
ZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQs
IFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAg
ICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlBy
ZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCkgfTsKICAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGdldFBpeGVsQnVmZmVyKGZvcm1h
dCwgbG9naWNhbFJlY3QoKSk7CiAgICAgICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTE5Miw3ICsxOTIsNyBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJl
Zj4gSW1hZ2VCdWZmZXJDR0JhY2tlCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
ICAgICBhdXRvIGltYWdlU2l6ZSA9IHBpeGVsQnVmZmVyLT5zaXplKCk7Ci0gICAgICAgIHJldHVy
biBhZG9wdENGKENHSW1hZ2VDcmVhdGUoaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWln
aHQoKSwgOCwgMzIsIDQgKiBpbWFnZVNpemUud2lkdGgoKSwgY2FjaGVkQ0dDb2xvclNwYWNlKHBp
eGVsQnVmZmVyLT5mb3JtYXQoKS5jb2xvclNwYWNlKSwga0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVs
dCB8IGtDR0ltYWdlQWxwaGFOb25lU2tpcExhc3QsIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFs
c2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0Q0Yo
Q0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCAz
MiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBwaXhlbEJ1ZmZlci0+Zm9ybWF0KCkuY29sb3JTcGFj
ZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwga0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8IGtDR0lt
YWdlQWxwaGFOb25lU2tpcExhc3QsIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1Jl
bmRlcmluZ0ludGVudERlZmF1bHQpKTsKICAgICB9CiAKICAgICBpZiAocmVzb2x1dGlvblNjYWxl
KCkgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNvbHV0aW9uOjpZZXMp
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBzaXpl
X3QgSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNhbGN1CiAgICAgcmV0dXJuIEltYWdlQnVm
ZmVyQmFja2VuZDo6Y2FsY3VsYXRlTWVtb3J5Q29zdChiYWNrZW5kU2l6ZSwgY2FsY3VsYXRlQnl0
ZXNQZXJSb3coYmFja2VuZFNpemUpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0
IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIENHQ29sb3JTcGFjZVJlZiBjZ0NvbG9yU3BhY2UsIGNv
bnN0IEhvc3RXaW5kb3cqKQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNr
ZW5kPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMsIGNvbnN0IEhvc3RXaW5kb3cqKQogewogICAgIEFTU0VSVChwYXJhbWV0ZXJz
LnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAKQEAgLTgxLDcgKzgxLDcgQEAg
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZQogICAgIHNpemVfdCBudW1C
eXRlcyA9IGJhY2tlbmRTaXplLmhlaWdodCgpICogYnl0ZXNQZXJSb3c7CiAgICAgdmVyaWZ5SW1h
Z2VCdWZmZXJJc0JpZ0Vub3VnaChkYXRhLCBudW1CeXRlcyk7CiAKLSAgICBhdXRvIGNnQ29udGV4
dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGRhdGEsIGJhY2tlbmRTaXplLndpZHRo
KCksIGJhY2tlbmRTaXplLmhlaWdodCgpLCA4LCBieXRlc1BlclJvdywgY2dDb2xvclNwYWNlLCBr
Q0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0
KSk7CisgICAgYXV0byBjZ0NvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShk
YXRhLCBiYWNrZW5kU2l6ZS53aWR0aCgpLCBiYWNrZW5kU2l6ZS5oZWlnaHQoKSwgOCwgYnl0ZXNQ
ZXJSb3csIHBhcmFtZXRlcnMuY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwga0NHSW1h
Z2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCkpOwog
ICAgIGlmICghY2dDb250ZXh0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtOTYsMTUg
Kzk2LDE0IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2UKIAogc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBpZiAoYXV0byBjZ0NvbG9yU3BhY2UgPSBj
b250ZXh0Lmhhc1BsYXRmb3JtQ29udGV4dCgpID8gY29udGV4dENvbG9yU3BhY2UoY29udGV4dCkg
OiBudWxscHRyKQotICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNy
ZWF0ZShwYXJhbWV0ZXJzLCBjZ0NvbG9yU3BhY2UuZ2V0KCksIG51bGxwdHIpOworICAgIGlmIChh
dXRvIGNnQ29sb3JTcGFjZSA9IGNvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkgPyBjb250ZXh0
Q29sb3JTcGFjZShjb250ZXh0KSA6IG51bGxwdHIpIHsKKyAgICAgICAgYXV0byBvdmVycmlkZVBh
cmFtZXRlcnMgPSBwYXJhbWV0ZXJzOworICAgICAgICBvdmVycmlkZVBhcmFtZXRlcnMuY29sb3JT
cGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZSB7IGNnQ29sb3JTcGFjZSB9OwogCi0gICAgcmV0
dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgbnVsbHB0
cik7Ci19CisgICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRl
KG92ZXJyaWRlUGFyYW1ldGVycywgbnVsbHB0cik7CisgICAgfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpj
cmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgSG9zdFdpbmRvdyogaG9z
dFdpbmRvdykKLXsKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0
ZShwYXJhbWV0ZXJzLCBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSwg
aG9zdFdpbmRvdyk7CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVh
dGUocGFyYW1ldGVycywgbnVsbHB0cik7CiB9CiAKIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5k
OjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
LCB2b2lkKiBkYXRhLCBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+JiYgZGF0YVByb3ZpZGVy
LCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiYmIGNvbnRleHQpCkBAIC0xNDYsNyAr
MTQ1LDcgQEAgUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckNHQml0bWFwQgogICAgICAg
ICBhdXRvIGJhY2tlbmRTaXplID0gdGhpcy0+YmFja2VuZFNpemUoKTsKICAgICAgICAgcmV0dXJu
IE5hdGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihDR0ltYWdlQ3JlYXRlKAogICAgICAgICAgICAg
YmFja2VuZFNpemUud2lkdGgoKSwgYmFja2VuZFNpemUuaGVpZ2h0KCksIDgsIDMyLCBieXRlc1Bl
clJvdygpLAotICAgICAgICAgICAgY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UoKSksIGtD
R0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3Qs
IG1fZGF0YVByb3ZpZGVyLmdldCgpLAorICAgICAgICAgICAgY29sb3JTcGFjZSgpLnBsYXRmb3Jt
Q29sb3JTcGFjZSgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFw
Qnl0ZU9yZGVyMzJIb3N0LCBtX2RhdGFQcm92aWRlci5nZXQoKSwKICAgICAgICAgICAgIDAsIHRy
dWUsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKSk7CiAgICAgfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM5LDggKzM5LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBJbnRTaXpl
IGNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShjb25zdCBQYXJhbWV0ZXJzJik7CiAgICAgc3RhdGlj
IHNpemVfdCBjYWxjdWxhdGVNZW1vcnlDb3N0KGNvbnN0IFBhcmFtZXRlcnMmKTsKIAotICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IGNyZWF0ZShj
b25zdCBQYXJhbWV0ZXJzJiwgQ0dDb2xvclNwYWNlUmVmLCBjb25zdCBIb3N0V2luZG93Kik7CiAg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gY3Jl
YXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBIb3N0V2luZG93Kik7CisKKyAgICAvLyBGSVhN
RTogUmVuYW1lIHRvIGNyZWF0ZVVzaW5nQ29sb3JTcGFjZU9mR3JhcGhpY3NDb250ZXh0KCkgKG9y
IHNvbWV0aGluZyBsaWtlIHRoYXQpLgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0Jik7CiAKICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQoKSBjb25zdCBv
dmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAkocmV2
aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEsMTMgKzgx
LDEzIEBAIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IEltYWdlQnVmZmVySU8KICAgICByZXR1
cm4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNvbnRleHRDb2xvclNwYWNlKGNvbnRleHQpOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBD
R0NvbG9yU3BhY2VSZWYgY2dDb2xvclNwYWNlLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93
KQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywg
Y29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsKICAgICBJbnRTaXplIGJhY2tlbmRTaXpl
ID0gY2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMpOwogICAgIGlmIChiYWNrZW5k
U2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBzdXJm
YWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoYmFja2VuZFNpemUsIGJhY2tlbmRTaXplLCBjZ0NvbG9y
U3BhY2UsIElPU3VyZmFjZTo6Zm9ybWF0Rm9yUGl4ZWxGb3JtYXQocGFyYW1ldGVycy5waXhlbEZv
cm1hdCkpOworICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKGJhY2tlbmRTaXpl
LCBiYWNrZW5kU2l6ZSwgcGFyYW1ldGVycy5jb2xvclNwYWNlLCBJT1N1cmZhY2U6OmZvcm1hdEZv
clBpeGVsRm9ybWF0KHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQpKTsKICAgICBpZiAoIXN1cmZhY2Up
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xMDIsMTUgKzEwMiwxNCBAQCBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3Jl
YXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCkKIHsKLSAgICBpZiAoYXV0byBjZ0NvbG9yU3BhY2UgPSBjb250ZXh0Lmhhc1BsYXRm
b3JtQ29udGV4dCgpID8gY29udGV4dENvbG9yU3BhY2UoY29udGV4dCkgOiBudWxscHRyKQotICAg
ICAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVy
cywgY2dDb2xvclNwYWNlLmdldCgpLCBudWxscHRyKTsKKyAgICBpZiAoYXV0byBjZ0NvbG9yU3Bh
Y2UgPSBjb250ZXh0Lmhhc1BsYXRmb3JtQ29udGV4dCgpID8gY29udGV4dENvbG9yU3BhY2UoY29u
dGV4dCkgOiBudWxscHRyKSB7CisgICAgICAgIGF1dG8gb3ZlcnJpZGVQYXJhbWV0ZXJzID0gcGFy
YW1ldGVyczsKKyAgICAgICAgb3ZlcnJpZGVQYXJhbWV0ZXJzLmNvbG9yU3BhY2UgPSBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UgeyBjZ0NvbG9yU3BhY2UgfTsKIAotICAgIHJldHVybiBJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBudWxscHRyKTsKLX0KKyAgICAg
ICAgcmV0dXJuIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKG92ZXJyaWRlUGFy
YW1ldGVycywgbnVsbHB0cik7CisgICAgfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25z
dCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQot
ewotICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0
ZXJzLCBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSwgaG9zdFdpbmRv
dyk7CisgICAgcmV0dXJuIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHBhcmFt
ZXRlcnMsIG51bGxwdHIpOwogfQogCiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OkltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBzdGQ6
OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiYmIHN1cmZhY2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklP
U3VyZmFjZUJhY2tlbmQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDggKzQyLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBzaXplX3QgY2FsY3Vs
YXRlTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJzJik7CiAgICAgc3RhdGljIHNpemVfdCBjYWxj
dWxhdGVFeHRlcm5hbE1lbW9yeUNvc3QoY29uc3QgUGFyYW1ldGVycyYpOwogICAgIAotICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUo
Y29uc3QgUGFyYW1ldGVycyYsIENHQ29sb3JTcGFjZVJlZiwgY29uc3QgSG9zdFdpbmRvdyopOwog
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBj
cmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IEhvc3RXaW5kb3cqKTsKKyAgICAvLyBGSVhN
RTogUmVuYW1lIHRvIGNyZWF0ZVVzaW5nQ29sb3JTcGFjZU9mR3JhcGhpY3NDb250ZXh0KCkgKG9y
IHNvbWV0aGluZyBsaWtlIHRoYXQpLgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYpOwogCiAgICAgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kKGNvbnN0
IFBhcmFtZXRlcnMmLCBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiYmKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyVXRpbGl0aWVzQ0cuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHN0YXRpYyBib29sIGVuY29kZShjb25zdCBQaXhl
bEJ1ZmZlciYgc28KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIGltYWdlU2l6
ZSA9IHNvdXJjZS5zaXplKCk7Ci0gICAgYXV0byBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0
ZShpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCAzMiwgNCAqIGltYWdl
U2l6ZS53aWR0aCgpLCBjYWNoZWRDR0NvbG9yU3BhY2Uoc291cmNlLmZvcm1hdCgpLmNvbG9yU3Bh
Y2UpLCBrQ0dCaXRtYXBCeXRlT3JkZXJEZWZhdWx0IHwgZGF0YUFscGhhSW5mbywgZGF0YVByb3Zp
ZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOworICAgIGF1
dG8gaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGUoaW1hZ2VTaXplLndpZHRoKCksIGltYWdl
U2l6ZS5oZWlnaHQoKSwgOCwgMzIsIDQgKiBpbWFnZVNpemUud2lkdGgoKSwgc291cmNlLmZvcm1h
dCgpLmNvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCksIGtDR0JpdG1hcEJ5dGVPcmRlckRl
ZmF1bHQgfCBkYXRhQWxwaGFJbmZvLCBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dS
ZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CiAKICAgICByZXR1cm4gZW5jb2RlKGltYWdlLmdldCgp
LCBkZXN0aW5hdGlvblVUSS5nZXQoKSwgcXVhbGl0eSwgZnVuY3Rpb24pOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NzEsNyArNTcxLDcgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZURpcwogYm9vbCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6YWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQogewogICAg
IEFTU0VSVCghZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKS5pc0VtcHR5KCkpOwotICAgIGF1
dG8gYmFja2luZyA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlKGdldEludGVybmFsRnJhbWVi
dWZmZXJTaXplKCksIFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCkpOworICAgIGF1dG8gYmFj
a2luZyA9IElPU3VyZmFjZTo6Y3JlYXRlKGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCksIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICBpZiAoIWJhY2tpbmcpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvSU9TdXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw5ICsyNywxMCBAQAogCiAjaWYgSEFWRShJT1NVUkZBQ0UpCiAKKyNpbmNsdWRlICJE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSA8
b2JqYy9vYmpjLmg+CiAjaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9JT1N1cmZhY2VTUEkuaD4KLSNp
bmNsdWRlICJJbnRTaXplLmgiCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZP
Uk0oTUFDQ0FUQUxZU1QpICYmICFQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikKICNkZWZp
bmUgSEFWRV9JT1NVUkZBQ0VfUkdCMTAgMQpAQCAtNDYsMTAgKzQ3LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBIb3N0V2luZG93OwotICAg
IAotI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCiBjbGFzcyBJbWFnZUJ1
ZmZlcjsKLSNlbmRpZgogCiBlbnVtIGNsYXNzIFBpeGVsRm9ybWF0IDogdWludDhfdDsKIGVudW0g
Y2xhc3MgVm9sYXRpbGl0eVN0YXRlIDogdWludDhfdDsKQEAgLTEwMSwxMCArOTksMTAgQEAgcHVi
bGljOgogICAgICAgICB1aW50MzJfdCBtX2ZsYWdzOwogICAgIH07CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlKEludFNpemUsIENH
Q29sb3JTcGFjZVJlZiwgRm9ybWF0ID0gRm9ybWF0OjpCR1JBKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlKEludFNpemUsIEludFNp
emUgY29udGV4dFNpemUsIENHQ29sb3JTcGFjZVJlZiwgRm9ybWF0ID0gRm9ybWF0OjpCR1JBKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3Jl
YXRlRnJvbVNlbmRSaWdodChjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmJiwgQ0dDb2xvclNwYWNl
UmVmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFj
ZT4gY3JlYXRlRnJvbVN1cmZhY2UoSU9TdXJmYWNlUmVmLCBDR0NvbG9yU3BhY2VSZWYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGUo
SW50U2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRm9ybWF0ID0gRm9ybWF0OjpC
R1JBKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFj
ZT4gY3JlYXRlKEludFNpemUsIEludFNpemUgY29udGV4dFNpemUsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYsIEZvcm1hdCA9IEZvcm1hdDo6QkdSQSk7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZUZyb21TZW5kUmlnaHQoY29u
c3QgV1RGOjpNYWNoU2VuZFJpZ2h0JiYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVh
dGVGcm9tU3VyZmFjZShJT1N1cmZhY2VSZWYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBj
cmVhdGVGcm9tSW1hZ2UoQ0dJbWFnZVJlZik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZUZyb21QaXhlbEJ1ZmZlcihDVlBpeGVsQnVm
ZmVyUmVmKTsKICAgICAKQEAgLTE0Niw3ICsxNDQsNyBAQCBwdWJsaWM6CiAgICAgSW50U2l6ZSBz
aXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgc2l6ZV90IHRvdGFsQnl0ZXMoKSBj
b25zdCB7IHJldHVybiBtX3RvdGFsQnl0ZXM7IH0KIAotICAgIENHQ29sb3JTcGFjZVJlZiBjb2xv
clNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvclNwYWNlLmdldCgpOyB9CisgICAgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9jb2xv
clNwYWNlOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgRm9ybWF0IGZvcm1hdCgpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIElPU3VyZmFjZUlEIHN1cmZhY2VJRCgpIGNvbnN0OwogICAgIHNpemVf
dCBieXRlc1BlclJvdygpIGNvbnN0OwpAQCAtMTY5LDE0ICsxNjcsMTQgQEAgcHVibGljOgogICAg
IHZvaWQgbWlncmF0ZUNvbG9yU3BhY2VUb1Byb3BlcnRpZXMoKTsKIAogcHJpdmF0ZToKLSAgICBJ
T1N1cmZhY2UoSW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xvclNwYWNlUmVmLCBG
b3JtYXQsIGJvb2wmIHN1Y2Nlc3MpOwotICAgIElPU3VyZmFjZShJT1N1cmZhY2VSZWYsIENHQ29s
b3JTcGFjZVJlZik7CisgICAgSU9TdXJmYWNlKEludFNpemUsIEludFNpemUgY29udGV4dFNpemUs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZvcm1hdCwgYm9vbCYgc3VjY2Vzcyk7Cisg
ICAgSU9TdXJmYWNlKElPU3VyZmFjZVJlZiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7
CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gc3VyZmFjZUZyb21Qb29s
KEludFNpemUsIEludFNpemUgY29udGV4dFNpemUsIENHQ29sb3JTcGFjZVJlZiwgRm9ybWF0KTsK
KyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gc3VyZmFjZUZyb21Qb29sKElu
dFNpemUsIEludFNpemUgY29udGV4dFNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYs
IEZvcm1hdCk7CiAgICAgSW50U2l6ZSBjb250ZXh0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGV4dFNpemU7IH0KICAgICB2b2lkIHNldENvbnRleHRTaXplKEludFNpemUpOwogCi0gICAgUmV0
YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gbV9jb2xvclNwYWNlOworICAgIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSBtX2NvbG9yU3BhY2U7CiAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAgSW50U2l6ZSBt
X2NvbnRleHRTaXplOwogICAgIHNpemVfdCBtX3RvdGFsQnl0ZXM7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9J
T1N1cmZhY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNv
bmZpZy5oIgogI2ltcG9ydCAiSU9TdXJmYWNlLmgiCiAKLSNpbXBvcnQgIkNvcmVWaWRlb1NvZnRM
aW5rLmgiCisjaW1wb3J0ICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbXBvcnQgIkdyYXBo
aWNzQ29udGV4dENHLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTC5oIgogI2ltcG9ydCAi
SG9zdFdpbmRvdy5oIgpAQCAtNDEsOSArNDEsMTEgQEAKICNpbXBvcnQgPHd0Zi9NYXRoRXh0cmFz
Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKKyNpbXBvcnQgIkNvcmVWaWRl
b1NvZnRMaW5rLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotaW5saW5lIHN0ZDo6dW5pcXVl
X3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6c3VyZmFjZUZyb21Qb29sKEludFNpemUgc2l6ZSwg
SW50U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UsIEZvcm1hdCBw
aXhlbEZvcm1hdCkKK2lubGluZSBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6
OnN1cmZhY2VGcm9tUG9vbChJbnRTaXplIHNpemUsIEludFNpemUgY29udGV4dFNpemUsIGNvbnN0
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgRm9ybWF0IHBpeGVsRm9ybWF0KQog
ewogICAgIGF1dG8gY2FjaGVkU3VyZmFjZSA9IElPU3VyZmFjZVBvb2w6OnNoYXJlZFBvb2woKS50
YWtlU3VyZmFjZShzaXplLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCk7CiAgICAgaWYgKCFjYWNo
ZWRTdXJmYWNlKQpAQCAtNTMsMTIgKzU1LDEyIEBAIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8SU9T
dXJmYWNlPiBJT1N1cmYKICAgICByZXR1cm4gY2FjaGVkU3VyZmFjZTsKIH0KIAotc3RkOjp1bmlx
dWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGUoSW50U2l6ZSBzaXplLCBDR0NvbG9y
U3BhY2VSZWYgY29sb3JTcGFjZSwgRm9ybWF0IHBpeGVsRm9ybWF0KQorc3RkOjp1bmlxdWVfcHRy
PElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGUoSW50U2l6ZSBzaXplLCBjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIEZvcm1hdCBwaXhlbEZvcm1hdCkKIHsKICAgICBy
ZXR1cm4gSU9TdXJmYWNlOjpjcmVhdGUoc2l6ZSwgc2l6ZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3Jt
YXQpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZShJ
bnRTaXplIHNpemUsIEludFNpemUgY29udGV4dFNpemUsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNw
YWNlLCBGb3JtYXQgcGl4ZWxGb3JtYXQpCitzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1
cmZhY2U6OmNyZWF0ZShJbnRTaXplIHNpemUsIEludFNpemUgY29udGV4dFNpemUsIGNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgRm9ybWF0IHBpeGVsRm9ybWF0KQogewog
ICAgIGlmIChhdXRvIGNhY2hlZFN1cmZhY2UgPSBzdXJmYWNlRnJvbVBvb2woc2l6ZSwgY29udGV4
dFNpemUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KSkgewogICAgICAgICBMT0dfV0lUSF9TVFJF
QU0oSU9TdXJmYWNlLCBzdHJlYW0gPDwgIklPU3VyZmFjZTo6Y3JlYXRlIHRvb2sgZnJvbSBwb29s
OiAiIDw8ICpjYWNoZWRTdXJmYWNlKTsKQEAgLTc1LDEzICs3NywxMyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyCiAgICAgcmV0dXJuIHN1cmZhY2U7CiB9CiAKLXN0
ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChj
b25zdCBNYWNoU2VuZFJpZ2h0JiYgc2VuZFJpZ2h0LCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFj
ZSkKK3N0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRS
aWdodChjb25zdCBNYWNoU2VuZFJpZ2h0JiYgc2VuZFJpZ2h0LCBjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmIGNvbG9yU3BhY2UpCiB7CiAgICAgYXV0byBzdXJmYWNlID0gYWRvcHRDRihJT1N1
cmZhY2VMb29rdXBGcm9tTWFjaFBvcnQoc2VuZFJpZ2h0LnNlbmRSaWdodCgpKSk7CiAgICAgcmV0
dXJuIElPU3VyZmFjZTo6Y3JlYXRlRnJvbVN1cmZhY2Uoc3VyZmFjZS5nZXQoKSwgY29sb3JTcGFj
ZSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6Y3JlYXRlRnJv
bVN1cmZhY2UoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNl
KQorc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU3VyZmFj
ZShJT1N1cmZhY2VSZWYgc3VyZmFjZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xv
clNwYWNlKQogewogICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPihuZXcgSU9T
dXJmYWNlKHN1cmZhY2UsIGNvbG9yU3BhY2UpKTsKIH0KQEAgLTk0LDcgKzk2LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcgogICAgIHNpemVfdCB3aWR0aCA9IENH
SW1hZ2VHZXRXaWR0aChpbWFnZSk7CiAgICAgc2l6ZV90IGhlaWdodCA9IENHSW1hZ2VHZXRIZWln
aHQoaW1hZ2UpOwogCi0gICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoSW50U2l6
ZSh3aWR0aCwgaGVpZ2h0KSwgQ0dJbWFnZUdldENvbG9yU3BhY2UoaW1hZ2UpKTsKKyAgICBhdXRv
IHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgeyBDR0ltYWdlR2V0Q29sb3JTcGFjZShpbWFnZSkgfSk7CiAgICAg
aWYgKCFzdXJmYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBhdXRvIHN1cmZhY2VD
b250ZXh0ID0gc3VyZmFjZS0+ZW5zdXJlUGxhdGZvcm1Db250ZXh0KCk7CkBAIC0xMTYsNyArMTE4
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcgogICAgIGlmICgh
Y29sb3JTcGFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gY3JlYXRl
RnJvbVN1cmZhY2Uoc3VyZmFjZSwgY29sb3JTcGFjZSk7CisgICAgcmV0dXJuIGNyZWF0ZUZyb21T
dXJmYWNlKHN1cmZhY2UsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB7IGNvbG9yU3BhY2UgfSk7CiB9
CiAKIHZvaWQgSU9TdXJmYWNlOjptb3ZlVG9Qb29sKHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+
JiYgc3VyZmFjZSkKQEAgLTE5Niw3ICsxOTgsNyBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5ICpvcHRp
b25zRm9yMzJCaXRTdXJmCiAKIH0KIAotSU9TdXJmYWNlOjpJT1N1cmZhY2UoSW50U2l6ZSBzaXpl
LCBJbnRTaXplIGNvbnRleHRTaXplLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwgRm9ybWF0
IGZvcm1hdCwgYm9vbCYgc3VjY2VzcykKK0lPU3VyZmFjZTo6SU9TdXJmYWNlKEludFNpemUgc2l6
ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xv
clNwYWNlLCBGb3JtYXQgZm9ybWF0LCBib29sJiBzdWNjZXNzKQogICAgIDogbV9jb2xvclNwYWNl
KGNvbG9yU3BhY2UpCiAgICAgLCBtX3NpemUoc2l6ZSkKICAgICAsIG1fY29udGV4dFNpemUoY29u
dGV4dFNpemUpCkBAIC0yMzIsNyArMjM0LDcgQEAgSU9TdXJmYWNlOjpJT1N1cmZhY2UoSW50U2l6
ZSBzaXplLCBJbnRTaQogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihMYXllcnMsICJJT1N1cmZh
Y2UgY3JlYXRpb24gZmFpbGVkIGZvciBzaXplOiAoJWQgJWQpIGFuZCBmb3JtYXQ6ICglZCkiLCBz
aXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIGZvcm1hdCk7CiB9CiAKLUlPU3VyZmFjZTo6SU9T
dXJmYWNlKElPU3VyZmFjZVJlZiBzdXJmYWNlLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSkK
K0lPU3VyZmFjZTo6SU9TdXJmYWNlKElPU3VyZmFjZVJlZiBzdXJmYWNlLCBjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpCiAgICAgOiBtX2NvbG9yU3BhY2UoY29sb3JTcGFj
ZSkKICAgICAsIG1fc3VyZmFjZShzdXJmYWNlKQogewpAQCAtMzQ3LDcgKzM0OSw3IEBAIENHQ29u
dGV4dFJlZiBJT1N1cmZhY2U6OmVuc3VyZVBsYXRmb3JtQ28KICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgIAotICAgIG1fY2dDb250ZXh0ID0gYWRvcHRDRihDR0lPU3VyZmFjZUNvbnRleHRDcmVh
dGUobV9zdXJmYWNlLmdldCgpLCBtX2NvbnRleHRTaXplLndpZHRoKCksIG1fY29udGV4dFNpemUu
aGVpZ2h0KCksIGJpdHNQZXJDb21wb25lbnQsIGJpdHNQZXJQaXhlbCwgbV9jb2xvclNwYWNlLmdl
dCgpLCBiaXRtYXBJbmZvKSk7CisgICAgbV9jZ0NvbnRleHQgPSBhZG9wdENGKENHSU9TdXJmYWNl
Q29udGV4dENyZWF0ZShtX3N1cmZhY2UuZ2V0KCksIG1fY29udGV4dFNpemUud2lkdGgoKSwgbV9j
b250ZXh0U2l6ZS5oZWlnaHQoKSwgYml0c1BlckNvbXBvbmVudCwgYml0c1BlclBpeGVsLCBtX2Nv
bG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCksIGJpdG1hcEluZm8pKTsKIAogI2lmIFBMQVRG
T1JNKE1BQykKICAgICBpZiAoYXV0byBkaXNwbGF5TWFzayA9IHByaW1hcnlPcGVuR0xEaXNwbGF5
TWFzaygpKSB7CkBAIC01MTUsNyArNTE3LDcgQEAgdm9pZCBJT1N1cmZhY2U6OnNldE93bmVyc2hp
cElkZW50aXR5KHRhcwogCiB2b2lkIElPU3VyZmFjZTo6bWlncmF0ZUNvbG9yU3BhY2VUb1Byb3Bl
cnRpZXMoKQogewotICAgIGF1dG8gY29sb3JTcGFjZVByb3BlcnRpZXMgPSBhZG9wdENGKENHQ29s
b3JTcGFjZUNvcHlQcm9wZXJ0eUxpc3QobV9jb2xvclNwYWNlLmdldCgpKSk7CisgICAgYXV0byBj
b2xvclNwYWNlUHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ29weVByb3BlcnR5TGlz
dChtX2NvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCkpKTsKICAgICBJT1N1cmZhY2VTZXRW
YWx1ZShtX3N1cmZhY2UuZ2V0KCksIGtJT1N1cmZhY2VDb2xvclNwYWNlLCBjb2xvclNwYWNlUHJv
cGVydGllcy5nZXQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZm
ZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJ
bWFnZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgRmlsdGVyRWZm
ZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OnJlbmQKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGF1
dG8mIHN1cmZhY2UgPSBkb3duY2FzdDxBY2NlbGVyYXRlZEltYWdlQnVmZmVyPigqbV9vdXRwdXRJ
bWFnZUJ1ZmZlcikuc3VyZmFjZSgpOwotICAgIFtzaGFyZWRDSUNvbnRleHQoKS5nZXQoKSByZW5k
ZXI6IG1fb3V0cHV0SW1hZ2UuZ2V0KCkgdG9JT1N1cmZhY2U6IHN1cmZhY2Uuc3VyZmFjZSgpIGJv
dW5kczpkZXN0UmVjdChsYXN0RWZmZWN0KSBjb2xvclNwYWNlOmNhY2hlZENHQ29sb3JTcGFjZShs
YXN0RWZmZWN0LnJlc3VsdENvbG9yU3BhY2UoKSldOworICAgIFtzaGFyZWRDSUNvbnRleHQoKS5n
ZXQoKSByZW5kZXI6IG1fb3V0cHV0SW1hZ2UuZ2V0KCkgdG9JT1N1cmZhY2U6IHN1cmZhY2Uuc3Vy
ZmFjZSgpIGJvdW5kczpkZXN0UmVjdChsYXN0RWZmZWN0KSBjb2xvclNwYWNlOmxhc3RFZmZlY3Qu
cmVzdWx0Q29sb3JTcGFjZSgpLnBsYXRmb3JtQ29sb3JTcGFjZSgpXTsKIH0KICAgICAKIEZsb2F0
UmVjdCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6ZGVzdFJlY3QoY29uc3QgRmlsdGVy
RWZmZWN0JiBsYXN0RWZmZWN0KSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlci5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIEltYWdlQnVmZmVyIDogcHVibGlj
IENvbmNyZXRlSW1hZ2UKICAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6YmFzZVRy
YW5zZm9ybTsKIAogcHVibGljOgotICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBGbG9hdFNp
emUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNv
bG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0
V2luZG93KQorICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNw
YWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRv
dykKICAgICB7CiAgICAgICAgIHJldHVybiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6dGVtcGxh
dGUgY3JlYXRlPEltYWdlQnVmZmVyPihzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2Us
IHBpeGVsRm9ybWF0LCBob3N0V2luZG93KTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1
ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIEl0ZW1IYW5k
bGU6OmRlc3Ryb3koKQogICAgICAgICBnZXQ8RmlsbFJvdW5kZWRSZWN0PigpLn5GaWxsUm91bmRl
ZFJlY3QoKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSXRlbVR5cGU6OkdldFBpeGVsQnVm
ZmVyOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJs
ZTxHZXRQaXhlbEJ1ZmZlcj46OnZhbHVlKTsKKyAgICAgICAgZ2V0PEdldFBpeGVsQnVmZmVyPigp
Ln5HZXRQaXhlbEJ1ZmZlcigpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJdGVtVHlwZTo6
UHV0UGl4ZWxCdWZmZXI6CiAgICAgICAgIGdldDxQdXRQaXhlbEJ1ZmZlcj4oKS5+UHV0UGl4ZWxC
dWZmZXIoKTsKQEAgLTMwNyw3ICszMDcsNyBAQCB2b2lkIEl0ZW1IYW5kbGU6OmRlc3Ryb3koKQog
ICAgICAgICByZXR1cm47CiAjZW5kaWYKICAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0Ry
YXdpbmdDb21tYW5kczoKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9k
ZXN0cnVjdGlibGU8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+Ojp2YWx1ZSk7CisgICAgICAg
IGdldDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oKS5+QmVnaW5DbGlwVG9EcmF3aW5nQ29t
bWFuZHMoKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNw
YXJlbmN5TGF5ZXI6CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVz
dHJ1Y3RpYmxlPEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI+Ojp2YWx1ZSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgJKHdv
cmtpbmcgY29weSkKQEAgLTg4MCwyMyArODgwLDU1IEBAIE9wdGlvbmFsPENsaXBQYXRoPiBDbGlw
UGF0aDo6ZGVjb2RlKERlY28KIGNsYXNzIEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIEl0ZW1UeXBlIGl0ZW1UeXBlID0gSXRlbVR5cGU6
OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBp
c0lubGluZUl0ZW0gPSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0
ZW0gPSBmYWxzZTsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IGZh
bHNlOwogCi0gICAgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpCisgICAgQmVnaW5D
bGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQogICAgICAgICA6IG1fZGVzdGluYXRp
b24oZGVzdGluYXRpb24pCiAgICAgICAgICwgbV9jb2xvclNwYWNlKGNvbG9yU3BhY2UpCiAgICAg
ewogICAgIH0KIAorICAgIEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSYmIGNvbG9yU3BhY2UpCisgICAg
ICAgIDogbV9kZXN0aW5hdGlvbihkZXN0aW5hdGlvbikKKyAgICAgICAgLCBtX2NvbG9yU3BhY2Uo
V1RGTW92ZShjb2xvclNwYWNlKSkKKyAgICB7CisgICAgfQorCiAgICAgY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0KLSAgICBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JTcGFj
ZTsgfQorICAgIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY29sb3JTcGFjZTsgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBPcHRpb25hbDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4gZGVjb2RlKERlY29k
ZXImKTsKIAogcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvbjsKICAgICBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgbV9jb2xvclNwYWNlOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KK3ZvaWQgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9kZXN0aW5hdGlvbjsKKyAgICBlbmNv
ZGVyIDw8IG1fY29sb3JTcGFjZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlv
bmFsPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPiBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5k
czo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBk
ZXN0aW5hdGlvbjsKKyAgICBkZWNvZGVyID4+IGRlc3RpbmF0aW9uOworICAgIGlmICghZGVzdGlu
YXRpb24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxEZXN0
aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CisgICAgZGVjb2RlciA+PiBjb2xvclNwYWNl
OworICAgIGlmICghY29sb3JTcGFjZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIHJldHVybiB7eyAqZGVzdGluYXRpb24sIFdURk1vdmUoKmNvbG9yU3BhY2UpIH19OworfQor
CiBjbGFzcyBFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMgewogcHVibGljOgogICAgIHN0YXRpYyBj
b25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUgPSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzOwpAQCAtMTkzOCwyMyArMTk3MCw1NSBAQCBwcml2YXRlOgogY2xhc3MgR2V0UGl4ZWxC
dWZmZXIgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUg
PSBJdGVtVHlwZTo6R2V0UGl4ZWxCdWZmZXI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlz
SW5saW5lSXRlbSA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRl
bSA9IGZhbHNlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RyYXdpbmdJdGVtID0gZmFs
c2U7CiAKLSAgICBHZXRQaXhlbEJ1ZmZlcihXZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1hdCBvdXRw
dXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QpCisgICAgR2V0UGl4ZWxC
dWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVj
dCYgc3JjUmVjdCkKICAgICAgICAgOiBtX3NyY1JlY3Qoc3JjUmVjdCkKICAgICAgICAgLCBtX291
dHB1dEZvcm1hdChvdXRwdXRGb3JtYXQpCiAgICAgewogICAgIH0KIAotICAgIFBpeGVsQnVmZmVy
Rm9ybWF0IG91dHB1dEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fb3V0cHV0Rm9ybWF0OyB9Cisg
ICAgR2V0UGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXJGb3JtYXQmJiBvdXRwdXRGb3JtYXQsIGNvbnN0
IEludFJlY3QmIHNyY1JlY3QpCisgICAgICAgIDogbV9zcmNSZWN0KHNyY1JlY3QpCisgICAgICAg
ICwgbV9vdXRwdXRGb3JtYXQoV1RGTW92ZShvdXRwdXRGb3JtYXQpKQorICAgIHsKKyAgICB9CisK
KyAgICBjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0KCkgY29uc3QgeyByZXR1
cm4gbV9vdXRwdXRGb3JtYXQ7IH0KICAgICBJbnRSZWN0IHNyY1JlY3QoKSBjb25zdCB7IHJldHVy
biBtX3NyY1JlY3Q7IH0KIAorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0
aW9uYWw8R2V0UGl4ZWxCdWZmZXI+IGRlY29kZShEZWNvZGVyJik7CisKIHByaXZhdGU6CiAgICAg
SW50UmVjdCBtX3NyY1JlY3Q7CiAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgbV9vdXRwdXRGb3JtYXQ7
CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBHZXRQaXhlbEJ1ZmZlcjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3NyY1JlY3Q7
CisgICAgZW5jb2RlciA8PCBtX291dHB1dEZvcm1hdDsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4KK09wdGlvbmFsPEdldFBpeGVsQnVmZmVyPiBHZXRQaXhlbEJ1ZmZlcjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8SW50UmVjdD4gc3JjUmVjdDsKKyAgICBk
ZWNvZGVyID4+IHNyY1JlY3Q7CisgICAgaWYgKCFzcmNSZWN0KQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXJGb3JtYXQ+IG91dHB1dEZvcm1h
dDsKKyAgICBkZWNvZGVyID4+IG91dHB1dEZvcm1hdDsKKyAgICBpZiAoIW91dHB1dEZvcm1hdCkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiB7eyBXVEZNb3ZlKCpv
dXRwdXRGb3JtYXQpLCAqc3JjUmVjdCB9fTsKK30KKwogY2xhc3MgUHV0UGl4ZWxCdWZmZXIgewog
cHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUgPSBJdGVtVHlw
ZTo6UHV0UGl4ZWxCdWZmZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1Miw3ICs0NTIsNyBAQCB2b2lkIFJlY29yZGVyOjpjbGlwVG9JbWFnZUJ1ZmZlcihJ
bWFnZUJ1CiAgICAgYXBwZW5kPENsaXBUb0ltYWdlQnVmZmVyPihpbWFnZUJ1ZmZlci5yZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgZGVzdFJlY3QpOwogfQogCi12b2lkIFJlY29yZGVyOjpj
bGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGlu
YXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0
Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKQordm9pZCBSZWNvcmRlcjo6Y2xpcFRvRHJhd2luZ0NvbW1h
bmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgY29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBkcmF3
aW5nRnVuY3Rpb24pCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0IG5lc3RlZENvbnRleHQoWyZdKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICBhdXRvIGluaXRpYWxDbGlwID0gRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgZGVzdGluYXRpb24uc2l6ZSgpKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpIG92ZXJyaWRlOwogICAgIEludFJlY3Qg
Y2xpcEJvdW5kcygpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIGNs
aXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpIG92ZXJy
aWRlOworICAgIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZ1bmN0aW9uPHZvaWQoR3Jh
cGhpY3NDb250ZXh0Jik+JiYpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShWSURFTykKICAgICB2b2lk
IHBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24pIG92ZXJyaWRlOwogICAgIGJvb2wgY2FuUGFpbnRGcmFtZUZvck1lZGlhKGNvbnN0IE1l
ZGlhUGxheWVyJikgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFw
LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcg
KzY5LDcgQEAgYm9vbCBGRURpc3BsYWNlbWVudE1hcDo6c2V0U2NhbGUoZmxvYXQgcwogICAgIHJl
dHVybiB0cnVlOwogfQogCi12b2lkIEZFRGlzcGxhY2VtZW50TWFwOjpzZXRSZXN1bHRDb2xvclNw
YWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSkKK3ZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OnNldFJl
c3VsdENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJikKIHsKICAgICAvLyBT
cGVjOiBUaGUgJ2NvbG9yLWludGVycG9sYXRpb24tZmlsdGVycycgcHJvcGVydHkgb25seSBhcHBs
aWVzIHRvIHRoZSAnaW4yJyBzb3VyY2UgaW1hZ2UKICAgICAvLyBhbmQgZG9lcyBub3QgYXBwbHkg
dG8gdGhlICdpbicgc291cmNlIGltYWdlLiBUaGUgJ2luJyBzb3VyY2UgaW1hZ2UgbXVzdCByZW1h
aW4gaW4gaXRzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFRGlzcGxhY2VtZW50TWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5oCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2Vt
ZW50TWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIGZs
b2F0IHNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9zY2FsZTsgfQogICAgIGJvb2wgc2V0U2NhbGUo
ZmxvYXQpOwogCi0gICAgdm9pZCBzZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JT
cGFjZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRSZXN1bHRDb2xvclNwYWNlKGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgdHJhbnNmb3JtUmVzdWx0Q29s
b3JTcGFjZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBpbnQpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUZsb29kLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0MCw4IEBA
IHB1YmxpYzoKICNpZiAhVVNFKENHKQogICAgIC8vIGZlRmxvb2QgZG9lcyBub3QgcGVyZm9ybSBj
b2xvciBpbnRlcnBvbGF0aW9uIG9mIGFueSBraW5kLCBzbyB0aGUgcmVzdWx0IGlzIGFsd2F5cyBp
biB0aGUgY3VycmVudAogICAgIC8vIGNvbG9yIHNwYWNlIHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVl
IG9mIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycy4KLSAgICB2b2lkIHNldE9wZXJhdGluZ0Nv
bG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlKSBvdmVycmlkZSB7IEZpbHRlckVmZmVjdDo6
c2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOyB9Ci0gICAg
dm9pZCBzZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSkgb3ZlcnJpZGUg
eyBGaWx0ZXJFZmZlY3Q6OnNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKTsgfQorICAgIHZvaWQgc2V0T3BlcmF0aW5nQ29sb3JTcGFjZShjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmKSBvdmVycmlkZSB7IEZpbHRlckVmZmVjdDo6c2V0UmVzdWx0Q29sb3JT
cGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7IH0KKyAgICB2b2lkIHNldFJlc3Vs
dENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJikgb3ZlcnJpZGUgeyBGaWx0
ZXJFZmZlY3Q6OnNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCkpOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCB2b2lkIEZFVGlsZTo6cGxhdGZvcm1BcHBs
eVNvZnR3YXJlKCkKICAgICAgICAgdGlsZVJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclJlc29sdXRp
b24oKS53aWR0aCgpLCBmaWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpLmhlaWdodCgpKTsKICAgICB9
CiAKLSAgICBhdXRvIHRpbGVJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdl
QnVmZmVyKHRpbGVSZWN0LCB0aWxlUmVjdCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBm
aWx0ZXIoKS5yZW5kZXJpbmdNb2RlKCkpOworICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVy
aW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIodGlsZVJlY3QsIHRpbGVSZWN0LCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgZmlsdGVyKCkucmVuZGVyaW5nTW9kZSgpKTsKICAgICBp
ZiAoIXRpbGVJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3Bw
CShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzOSw3ICs0MzksNyBA
QCBzdGF0aWMgdm9pZCBjb3B5VW5wcmVtdWx0aXBseWluZ0FscGhhKGNvCiAjZW5kaWYKIH0KIAot
T3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVsQnVmZmVyVG9D
b2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSB0YXJnZXRDb2xvclNwYWNlLCBQaXhlbEJ1
ZmZlciYgcGl4ZWxCdWZmZXIpCitPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gRmlsdGVyRWZmZWN0Ojpj
b252ZXJ0UGl4ZWxCdWZmZXJUb0NvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiB0YXJnZXRDb2xvclNwYWNlLCBQaXhlbEJ1ZmZlciYgcGl4ZWxCdWZmZXIpCiB7CiAgICAgLy8g
RklYTUU6IFVzaW5nIGFuIEltYWdlQnVmZmVyIHRvIHBlcmZvcm0gdGhlIGNvbG9yIHNwYWNlIGNv
bnZlcnNpb24gaXMgdW5uZWNlc3NhcnkuIFdlIGNhbiBkbyBpdCBkaXJlY3RseS4KIApAQCAtNDU0
LDcgKzQ1NCw3IEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBGaWx0ZXJFZmZlY3Q6OmNvbnYKICAg
ICByZXR1cm4gY29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKHRhcmdldENvbG9yU3BhY2Us
ICpidWZmZXIsIGRlc3RpbmF0aW9uUmVjdCwgcGl4ZWxCdWZmZXIuZm9ybWF0KCkuYWxwaGFGb3Jt
YXQpOwogfQogCi1PcHRpb25hbDxQaXhlbEJ1ZmZlcj4gRmlsdGVyRWZmZWN0Ojpjb252ZXJ0SW1h
Z2VCdWZmZXJUb0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIHRhcmdldENvbG9yU3Bh
Y2UsIEltYWdlQnVmZmVyJiBpbnB1dEJ1ZmZlciwgY29uc3QgSW50UmVjdCYgcmVjdCwgQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRBbHBoYUZvcm1hdCkKK09wdGlvbmFsPFBpeGVsQnVmZmVy
PiBGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZShjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmIHRhcmdldENvbG9yU3BhY2UsIEltYWdlQnVmZmVyJiBpbnB1dEJ1
ZmZlciwgY29uc3QgSW50UmVjdCYgcmVjdCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRB
bHBoYUZvcm1hdCkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBjYW4gYmUgZG9uZSBtb3JlIGRpcmVj
dGx5IHVzaW5nIFBpeGVsQnVmZmVyQ29udmVyc2lvbi4KIApAQCAtNDcyLDcgKzQ3Miw3IEBAIE9w
dGlvbmFsPFBpeGVsQnVmZmVyPiBGaWx0ZXJFZmZlY3Q6OmNvbnYKICAgICByZXR1cm4gY29udmVy
dGVkQnVmZmVyLT5nZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIHJlY3QpOwogfQogCi12b2lkIEZpbHRl
ckVmZmVjdDo6Y29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0aW5hdGlvbihVaW50OENsYW1w
ZWRBcnJheSYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBB
bHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgZGVzdFJl
Y3QpCit2b2lkIEZpbHRlckVmZmVjdDo6Y29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0aW5h
dGlvbihVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgY29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQs
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewogICAgIC8vIENvbnZlcnRzIHRoZSBkYXRhIHN0
b3JlZCBpbiBtX2ltYWdlQnVmZmVyUmVzdWx0LCBhbmQgc2F2ZSB0byBkZXN0aW5hdGlvbgogICAg
IGF1dG8gY29udmVydGVkUGl4ZWxCdWZmZXIgPSBjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3Bh
Y2UoY29sb3JTcGFjZSwgKm1faW1hZ2VCdWZmZXJSZXN1bHQsIHsgSW50UG9pbnQoKSwgbV9hYnNv
bHV0ZVBhaW50UmVjdC5zaXplKCkgfSwgb3V0cHV0Rm9ybWF0KTsKQEAgLTQ4MSw3ICs0ODEsNyBA
QCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weUNvbnZlcnRlZEltYWdlQnVmCiAgICAgY29weUltYWdl
Qnl0ZXMoY29udmVydGVkUGl4ZWxCdWZmZXItPmRhdGEoKSwgZGVzdGluYXRpb24sIGRlc3RSZWN0
KTsKIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRQaXhlbEJ1ZmZlclRvRGVz
dGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBQaXhlbEJ1ZmZlciYgcGl4
ZWxCdWZmZXIsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0
JiBkZXN0UmVjdCkKK3ZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5Q29udmVydGVkUGl4ZWxCdWZmZXJU
b0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgUGl4ZWxCdWZmZXIm
IHBpeGVsQnVmZmVyLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KQogewogICAgIC8vIENvbnZlcnRzIHRoZSBkYXRhIHN0b3Jl
ZCBpbiBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0L21fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0
LAogICAgIC8vIHdoaWNoZXZlciBpc24ndCBudWxsLCBhbmQgc2F2ZSB0byBkZXN0aW5hdGlvbgpA
QCAtNjM2LDcgKzYzNiw3IEBAIGJvb2wgRmlsdGVyRWZmZWN0OjpyZXF1aXJlc1BpeGVsQnVmZmVy
Q28KICNlbmRpZgogfQogCi12b2lkIEZpbHRlckVmZmVjdDo6dHJhbnNmb3JtUmVzdWx0Q29sb3JT
cGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UgZGVzdGluYXRpb25Db2xvclNwYWNlKQordm9pZCBG
aWx0ZXJFZmZlY3Q6OnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiBkZXN0aW5hdGlvbkNvbG9yU3BhY2UpCiB7CiAjaWYgVVNFKENHKQogICAgIC8v
IENHIGhhbmRsZXMgY29sb3Igc3BhY2UgYWRqdXN0bWVudHMgaW50ZXJuYWxseS4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJFZmZlY3QuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyAr
MjMsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBbHBoYVByZW11bHRpcGxpY2F0aW9u
LmgiCi0jaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JT
cGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNp
bmNsdWRlICJJbnRSZWN0RXh0ZW50LmgiCkBAIC0xNjUsMTMgKzE2NSwxMyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBjbGlwc1RvQm91bmRzKCkgY29uc3QgeyByZXR1cm4gbV9jbGlwc1RvQm91bmRzOyB9
CiAgICAgdm9pZCBzZXRDbGlwc1RvQm91bmRzKGJvb2wgdmFsdWUpIHsgbV9jbGlwc1RvQm91bmRz
ID0gdmFsdWU7IH0KIAotICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBvcGVyYXRpbmdDb2xvclNw
YWNlKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYXRpbmdDb2xvclNwYWNlOyB9Ci0gICAgdmlydHVh
bCB2b2lkIHNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9y
U3BhY2UpIHsgbV9vcGVyYXRpbmdDb2xvclNwYWNlID0gY29sb3JTcGFjZTsgfQotICAgIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSByZXN1bHRDb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXN1
bHRDb2xvclNwYWNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFJlc3VsdENvbG9yU3BhY2UoRGVz
dGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpIHsgbV9yZXN1bHRDb2xvclNwYWNlID0gY29s
b3JTcGFjZTsgfQorICAgIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgb3BlcmF0aW5nQ29s
b3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW5nQ29sb3JTcGFjZTsgfQorICAgIHZp
cnR1YWwgdm9pZCBzZXRPcGVyYXRpbmdDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgY29sb3JTcGFjZSkgeyBtX29wZXJhdGluZ0NvbG9yU3BhY2UgPSBjb2xvclNwYWNlOyB9
CisgICAgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiByZXN1bHRDb2xvclNwYWNlKCkgY29u
c3QgeyByZXR1cm4gbV9yZXN1bHRDb2xvclNwYWNlOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFJl
c3VsdENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKSB7
IG1fcmVzdWx0Q29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB0
cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKEZpbHRlckVmZmVjdCogaW4sIGNvbnN0IGludCkgeyBp
bi0+dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShtX29wZXJhdGluZ0NvbG9yU3BhY2UpOyB9Ci0g
ICAgdm9pZCB0cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSk7
CisgICAgdm9pZCB0cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYpOwogICAgIAogICAgIHN0YXRpYyBWZWN0b3I8ZmxvYXQ+IG5vcm1hbGl6ZWRGbG9h
dHMoY29uc3QgVmVjdG9yPGZsb2F0PiYgdmFsdWVzKQogICAgIHsKQEAgLTIwMywxMSArMjAzLDEx
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpID0g
MDsKIAogICAgIHZvaWQgY29weUltYWdlQnl0ZXMoY29uc3QgVWludDhDbGFtcGVkQXJyYXkmIHNv
dXJjZSwgVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JikgY29u
c3Q7Ci0gICAgdm9pZCBjb3B5Q29udmVydGVkSW1hZ2VCdWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4
Q2xhbXBlZEFycmF5JiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBBbHBoYVByZW11bHRpcGxpY2F0
aW9uLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdm9pZCBjb3B5Q29udmVydGVkUGl4ZWxCdWZmZXJU
b0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiwgUGl4ZWxCdWZmZXImLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2b2lkIGNvcHlDb252ZXJ0ZWRJbWFn
ZUJ1ZmZlclRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmLCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uLCBjb25zdCBJbnRSZWN0Jik7Cisg
ICAgdm9pZCBjb3B5Q29udmVydGVkUGl4ZWxCdWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBl
ZEFycmF5JiwgUGl4ZWxCdWZmZXImLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25z
dCBJbnRSZWN0Jik7CiAgICAgYm9vbCByZXF1aXJlc1BpeGVsQnVmZmVyQ29sb3JTcGFjZUNvbnZl
cnNpb24oT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPik7Ci0gICAgT3B0aW9uYWw8UGl4
ZWxCdWZmZXI+IGNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9y
U3BhY2UsIEltYWdlQnVmZmVyJiwgY29uc3QgSW50UmVjdCYsIEFscGhhUHJlbXVsdGlwbGljYXRp
b24pOwotICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBjb252ZXJ0UGl4ZWxCdWZmZXJUb0NvbG9y
U3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlLCBQaXhlbEJ1ZmZlciYpOworICAgIE9wdGlvbmFs
PFBpeGVsQnVmZmVyPiBjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UoY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiwgSW1hZ2VCdWZmZXImLCBjb25zdCBJbnRSZWN0JiwgQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbik7CisgICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGNvbnZlcnRQaXhlbEJ1
ZmZlclRvQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEJ1ZmZl
ciYpOwogICAgIAogCiAgICAgRmlsdGVyJiBtX2ZpbHRlcjsKQEAgLTI0NCwxMyArMjQ0LDExIEBA
IHByaXZhdGU6CiAgICAgYm9vbCBtX2NsaXBzVG9Cb3VuZHMgeyB0cnVlIH07CiAKICNpZiBFTkFC
TEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgc3RhdGljIGNvbnN0
ZXhwciBhdXRvIGRlZmF1bHRPcGVyYXRpbmdDb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNw
YWNlOjpMaW5lYXJTUkdCOworICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBtX29wZXJhdGluZ0Nv
bG9yU3BhY2UgeyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKSB9OwogI2Vsc2UK
LSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZGVmYXVsdE9wZXJhdGluZ0NvbG9yU3BhY2UgPSBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I7CisgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1f
b3BlcmF0aW5nQ29sb3JTcGFjZSB7IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAj
ZW5kaWYKLQotICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBtX29wZXJhdGluZ0NvbG9yU3BhY2Ug
eyBkZWZhdWx0T3BlcmF0aW5nQ29sb3JTcGFjZSB9OwotICAgIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSBtX3Jlc3VsdENvbG9yU3BhY2UgeyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAg
ICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgbV9yZXN1bHRDb2xvclNwYWNlIHsgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCkgfTsKICAgICAKICAgICBjb25zdCBUeXBlIG1fZmlsdGVyRWZmZWN0
Q2xhc3NUeXBlOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvU291cmNlR3JhcGhpYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oCShyZXZpc2lvbiAyNzc5MTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMu
aAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBwcml2YXRlOgogICAgIFNvdXJjZUdy
YXBoaWMoRmlsdGVyJiBmaWx0ZXIpCiAgICAgICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlciwgVHlw
ZTo6U291cmNlR3JhcGhpYykKICAgICB7Ci0gICAgICAgIHNldE9wZXJhdGluZ0NvbG9yU3BhY2Uo
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKKyAgICAgICAgc2V0T3BlcmF0aW5nQ29sb3JT
cGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgfQogCiAgICAgY29uc3Qg
Y2hhciogZmlsdGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJTb3VyY2VHcmFwaGljIjsg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAv
Tmljb3NpYUdDR0xMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDR0xMYXllci5jcHAJKHJldmlzaW9u
IDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4
bWFwL05pY29zaWFHQ0dMTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBA
IHZvaWQgR0NHTExheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKICAgICBJbnRTaXplIHRleHR1
cmVTaXplKG1fY29udGV4dC5tX2N1cnJlbnRXaWR0aCwgbV9jb250ZXh0Lm1fY3VycmVudEhlaWdo
dCk7CiAgICAgVGV4dHVyZU1hcHBlckdMOjpGbGFncyBmbGFncyA9IG1fY29udGV4dC5jb250ZXh0
QXR0cmlidXRlcygpLmFscGhhID8gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCA6IDA7CiAj
aWYgVVNFKEFOR0xFKQotICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRleHR1cmVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFj
Y2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUodGV4dHVyZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgp
OwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIHsKLSAgICBQaXhlbEJ1ZmZlckZv
cm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBp
eGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgUGl4
ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0
aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
IH07CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0
LCBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTEVTLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlYWRuUGl4ZWwKIAogT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIHsKLSAgICBQaXhlbEJ1ZmZlckZv
cm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBp
eGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgUGl4
ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0
aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
IH07CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0
LCBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcAkocmV2
aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0JpdG1hcFRleHR1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHZvaWQg
Qml0bWFwVGV4dHVyZTo6dXBkYXRlQ29udGVudHMoR3JhcGgKIHsKICAgICAvLyBNYWtpbmcgYW4g
dW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQgYnVmZmVyIGhlcmUgaXMgT0sgYmVjYXVzZSB0
aGlzIGNvZGUKICAgICAvLyBpc24ndCB1c2VkIGJ5IGFueSBwbGF0Zm9ybXMgdGhhdCByZXNwZWN0
IHRoZSBhY2NlbGVyYXRlZCBiaXQuCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUodGFyZ2V0UmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
IDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAg
ICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0YXJnZXRSZWN0LnNpemUo
KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZv
cm1TY3JlZW5HdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IE1pY2hhZWwgRW1tZWwg
bWlrZS5lbW1lbEBnbWFpbC5jb20KICAqIENvcHlyaWdodCAoQykgMjAwOCBDaHJpc3RpYW4gRHl3
YW4gPGNocmlzdGlhbkBpbWVuZGlvLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJv
cmEgTHRkLgpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtU2NyZWVuLmgiCiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIK
ICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRl
ICJHdGtVdGlsaXRpZXMuaCIKQEAgLTg1LDYgKzg2LDExIEBAIGJvb2wgc2NyZWVuSXNNb25vY2hy
b21lKFdpZGdldCogd2lkZ2V0KQogICAgIHJldHVybiBzY3JlZW5EZXB0aCh3aWRnZXQpIDwgMjsK
IH0KIAorRGVzdGluYXRpb25Db2xvclNwYWNlIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KikKK3sK
KyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7Cit9CisKIGJvb2wgc2Ny
ZWVuSGFzSW52ZXJ0ZWRDb2xvcnMoKQogewogICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNjcmVlbklPUy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5JT1MubW0JKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNjcmVl
bklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDYsIDIwMTQgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwNi0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg4LDkgKzg4LDkgQEAgYm9vbCBzY3JlZW5T
dXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UoV2lkZwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotQ0dD
b2xvclNwYWNlUmVmIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KiB3aWRnZXQpCitEZXN0aW5hdGlv
bkNvbG9yU3BhY2Ugc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqIHdpZGdldCkKIHsKLSAgICByZXR1
cm4gc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKHdpZGdldCkgPyBleHRlbmRlZFNSR0JDb2xv
clNwYWNlUmVmKCkgOiBzUkdCQ29sb3JTcGFjZVJlZigpOworICAgIHJldHVybiBzY3JlZW5TdXBw
b3J0c0V4dGVuZGVkQ29sb3Iod2lkZ2V0KSA/IERlc3RpbmF0aW9uQ29sb3JTcGFjZSB7IGV4dGVu
ZGVkU1JHQkNvbG9yU3BhY2VSZWYoKSB9IDogRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7
CiB9CiAKIC8vIFRoZXNlIGZ1bmN0aW9ucyBzY2FsZSBiZXR3ZWVuIHNjcmVlbiBhbmQgcGFnZSBj
b29yZGluYXRlcyBiZWNhdXNlIEphdmFTY3JpcHQvRE9NIG9wZXJhdGlvbnMKQEAgLTE5MywxNiAr
MTkzLDE0IEBAIFNjcmVlblByb3BlcnRpZXMgY29sbGVjdFNjcmVlblByb3BlcnRpZXMKICAgICAg
ICAgRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QgPSBzY3JlZW4uYm91bmRzOwogICAgICAg
ICBzY3JlZW5BdmFpbGFibGVSZWN0LnNldFkoTlNNYXhZKHNjcmVlbi5ib3VuZHMpIC0gKHNjcmVl
bkF2YWlsYWJsZVJlY3QueSgpICsgc2NyZWVuQXZhaWxhYmxlUmVjdC5oZWlnaHQoKSkpOyAvLyBm
bGlwCiAgICAgICAgIEZsb2F0UmVjdCBzY3JlZW5SZWN0ID0gc2NyZWVuLl9yZWZlcmVuY2VCb3Vu
ZHM7Ci0gICAgICAgIAotICAgICAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNw
YWNlID0gc2NyZWVuQ29sb3JTcGFjZShudWxscHRyKTsKLSAgICAgICAgCisgICAgICAgIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlIHsgc2NyZWVuQ29sb3JTcGFjZShudWxscHRyKSB9
OwogICAgICAgICBpbnQgc2NyZWVuRGVwdGggPSBXZWJDb3JlOjpzY3JlZW5EZXB0aChudWxscHRy
KTsKICAgICAgICAgaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50ID0gV2ViQ29yZTo6c2NyZWVu
RGVwdGhQZXJDb21wb25lbnQobnVsbHB0cik7CiAgICAgICAgIGJvb2wgc2NyZWVuU3VwcG9ydHNF
eHRlbmRlZENvbG9yID0gV2ViQ29yZTo6c2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKG51bGxw
dHIpOwogICAgICAgICBib29sIHNjcmVlbkhhc0ludmVydGVkQ29sb3JzID0gV2ViQ29yZTo6c2Ny
ZWVuSGFzSW52ZXJ0ZWRDb2xvcnMoKTsKICAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBXZWJD
b3JlOjpzY3JlZW5QUElGYWN0b3IoKTsKIAotICAgICAgICBzY3JlZW5Qcm9wZXJ0aWVzLnNjcmVl
bkRhdGFNYXAuc2V0KCsrZGlzcGxheUlELCBTY3JlZW5EYXRhIHsgc2NyZWVuQXZhaWxhYmxlUmVj
dCwgc2NyZWVuUmVjdCwgY29sb3JTcGFjZSwgc2NyZWVuRGVwdGgsIHNjcmVlbkRlcHRoUGVyQ29t
cG9uZW50LCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IsIHNjcmVlbkhhc0ludmVydGVkQ29s
b3JzLCBmYWxzZSwgc2NhbGVGYWN0b3IgfSk7CisgICAgICAgIHNjcmVlblByb3BlcnRpZXMuc2Ny
ZWVuRGF0YU1hcC5zZXQoKytkaXNwbGF5SUQsIFNjcmVlbkRhdGEgeyBzY3JlZW5BdmFpbGFibGVS
ZWN0LCBzY3JlZW5SZWN0LCBXVEZNb3ZlKGNvbG9yU3BhY2UpLCBzY3JlZW5EZXB0aCwgc2NyZWVu
RGVwdGhQZXJDb21wb25lbnQsIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciwgc2NyZWVuSGFz
SW52ZXJ0ZWRDb2xvcnMsIGZhbHNlLCBzY2FsZUZhY3RvciB9KTsKICAgICAgICAgCiAgICAgICAg
IGlmIChzY3JlZW4gPT0gW1BBTDo6Z2V0VUlTY3JlZW5DbGFzcygpIG1haW5TY3JlZW5dKQogICAg
ICAgICAgICAgc2NyZWVuUHJvcGVydGllcy5wcmltYXJ5RGlzcGxheUlEID0gZGlzcGxheUlEOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1h
Yy5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bs
YXRmb3JtU2NyZWVuTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsOSArMTMwLDcgQEAgU2Ny
ZWVuUHJvcGVydGllcyBjb2xsZWN0U2NyZWVuUHJvcGVydGllcwogICAgICAgICBGbG9hdFJlY3Qg
c2NyZWVuQXZhaWxhYmxlUmVjdCA9IHNjcmVlbi52aXNpYmxlRnJhbWU7CiAgICAgICAgIHNjcmVl
bkF2YWlsYWJsZVJlY3Quc2V0WShOU01heFkoc2NyZWVuLmZyYW1lKSAtIChzY3JlZW5BdmFpbGFi
bGVSZWN0LnkoKSArIHNjcmVlbkF2YWlsYWJsZVJlY3QuaGVpZ2h0KCkpKTsgLy8gZmxpcAogICAg
ICAgICBGbG9hdFJlY3Qgc2NyZWVuUmVjdCA9IHNjcmVlbi5mcmFtZTsKLQotICAgICAgICBSZXRh
aW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNlID0gc2NyZWVuLmNvbG9yU3BhY2UuQ0dD
b2xvclNwYWNlOwotCisgICAgICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlIHsg
c2NyZWVuLmNvbG9yU3BhY2UuQ0dDb2xvclNwYWNlIH07CiAgICAgICAgIGludCBzY3JlZW5EZXB0
aCA9IE5TQml0c1BlclBpeGVsRnJvbURlcHRoKHNjcmVlbi5kZXB0aCk7CiAgICAgICAgIGludCBz
Y3JlZW5EZXB0aFBlckNvbXBvbmVudCA9IE5TQml0c1BlclNhbXBsZUZyb21EZXB0aChzY3JlZW4u
ZGVwdGgpOwogICAgICAgICBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciA9IFtzY3Jl
ZW4gY2FuUmVwcmVzZW50RGlzcGxheUdhbXV0Ok5TRGlzcGxheUdhbXV0UDNdOwpAQCAtMTYzLDcg
KzE2MSw3IEBAIFNjcmVlblByb3BlcnRpZXMgY29sbGVjdFNjcmVlblByb3BlcnRpZXMKICAgICAg
ICAgaWYgKGRpc3BsYXlNYXNrKQogICAgICAgICAgICAgZ3B1SUQgPSBncHVJREZvckRpc3BsYXlN
YXNrKGRpc3BsYXlNYXNrKTsKIAotICAgICAgICBzY3JlZW5Qcm9wZXJ0aWVzLnNjcmVlbkRhdGFN
YXAuc2V0KGRpc3BsYXlJRCwgU2NyZWVuRGF0YSB7IHNjcmVlbkF2YWlsYWJsZVJlY3QsIHNjcmVl
blJlY3QsIGNvbG9yU3BhY2UsIHNjcmVlbkRlcHRoLCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCwg
c2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yLCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycywgc2Ny
ZWVuU3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlLCBzY3JlZW5Jc01vbm9jaHJvbWUsIGRpc3BsYXlN
YXNrLCBncHVJRCwgZHluYW1pY1JhbmdlTW9kZSwgc2NhbGVGYWN0b3IgfSk7CisgICAgICAgIHNj
cmVlblByb3BlcnRpZXMuc2NyZWVuRGF0YU1hcC5zZXQoZGlzcGxheUlELCBTY3JlZW5EYXRhIHsg
c2NyZWVuQXZhaWxhYmxlUmVjdCwgc2NyZWVuUmVjdCwgV1RGTW92ZShjb2xvclNwYWNlKSwgc2Ny
ZWVuRGVwdGgsIHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50LCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVk
Q29sb3IsIHNjcmVlbkhhc0ludmVydGVkQ29sb3JzLCBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWlj
UmFuZ2UsIHNjcmVlbklzTW9ub2Nocm9tZSwgZGlzcGxheU1hc2ssIGdwdUlELCBkeW5hbWljUmFu
Z2VNb2RlLCBzY2FsZUZhY3RvciB9KTsKIAogICAgICAgICBpZiAoIXNjcmVlblByb3BlcnRpZXMu
cHJpbWFyeURpc3BsYXlJRCkKICAgICAgICAgICAgIHNjcmVlblByb3BlcnRpZXMucHJpbWFyeURp
c3BsYXlJRCA9IGRpc3BsYXlJRDsKQEAgLTM0MCwxMyArMzM4LDEzIEBAIE5TU2NyZWVuICpzY3Jl
ZW4oUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGwKICAgICByZXR1cm4gZmlyc3RTY3JlZW4oKTsKIH0K
IAotQ0dDb2xvclNwYWNlUmVmIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KiB3aWRnZXQpCitEZXN0
aW5hdGlvbkNvbG9yU3BhY2Ugc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqIHdpZGdldCkKIHsKICAg
ICBpZiAoYXV0byBkYXRhID0gc2NyZWVuUHJvcGVydGllcyh3aWRnZXQpKQotICAgICAgICByZXR1
cm4gZGF0YS0+Y29sb3JTcGFjZS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIGRhdGEtPmNvbG9yU3Bh
Y2U7CiAKICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpD
YW5Db21tdW5pY2F0ZVdpdGhXaW5kb3dTZXJ2ZXIpKTsKLSAgICByZXR1cm4gc2NyZWVuKHdpZGdl
dCkuY29sb3JTcGFjZS5DR0NvbG9yU3BhY2U7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSB7IHNjcmVlbih3aWRnZXQpLmNvbG9yU3BhY2UuQ0dDb2xvclNwYWNlIH07CiB9CiAKIGJv
b2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKFdpZGdldCogd2lkZ2V0KQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC03MjYsNyArNzI2LDcgQEAgYm9vbCBUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhW
aQogCiAgICAgaWYgKHVzZUltYWdlQnVmZmVyKSB7CiAgICAgICAgIE5TUmVjdCBpbWFnZUJ1ZmZl
ckRyYXdSZWN0ID0gTlNSZWN0KEZsb2F0UmVjdChidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgs
IGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgp
KSk7Ci0gICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0
aWJsZUJ1ZmZlcihyZWN0LnNpemUoKSArIDIgKiBGbG9hdFNpemUoYnV0dG9uRm9jdXNSZWN0T3V0
bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgpLCBkZXZpY2VTY2FsZUZhY3Rv
ciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBjb250ZXh0KTsKKyAgICAgICAgYXV0byBp
bWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHJlY3Quc2l6
ZSgpICsgMiAqIEZsb2F0U2l6ZShidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZv
Y3VzUmVjdE91dGxpbmVXaWR0aCksIGRldmljZVNjYWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSwgY29udGV4dCk7CiAgICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAg
ICAgICAgICByZXR1cm4gbmVlZHNSZXBhaW50OwogICAgICAgICB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2VHU3RyZWFtZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lci5jcHAJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJl
YW1lcjo6dQogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1
dG8gcGl4ZWxCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoeyBBbHBoYVByZW11
bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCIH0sIHsgeyB9LCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUo
KSB9KTsKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gaW1hZ2VCdWZmZXItPmdldFBpeGVsQnVmZmVy
KHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6
QkdSQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH0sIHsgeyB9LCBpbWFnZUJ1ZmZl
ci0+bG9naWNhbFNpemUoKSB9KTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1
cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDU0LDcgKzQ1NCw3IEBAIEltYWdlQnVmZmVyKiBNb2NrUmVhbHRpbWVWaWRl
b1NvdXJjZTo6aW0KICAgICBpZiAobV9pbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG1faW1h
Z2VCdWZmZXIuZ2V0KCk7CiAKLSAgICBtX2ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShjYXB0dXJlU2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgbV9pbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2FwdHVyZVNpemUoKSwgUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CiAgICAgaWYgKCFtX2ltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcGxheXN0YXRpb24vUGxhdGZv
cm1TY3JlZW5QbGF5U3RhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcGxheXN0YXRpb24vUGxhdGZvcm1TY3JlZW5QbGF5U3RhdGlvbi5jcHAJKHJldmlzaW9u
IDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3BsYXlzdGF0aW9uL1BsYXRmb3Jt
U2NyZWVuUGxheVN0YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKIAorI2luY2x1
ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKQEAgLTcxLDQgKzcyLDkgQEAgYm9vbCBzY3JlZW5T
dXBwb3J0c0V4dGVuZGVkQ29sb3IoV2lkZ2V0KgogICAgIHJldHVybiBmYWxzZTsKIH0KIAorRGVz
dGluYXRpb25Db2xvclNwYWNlIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KikKK3sKKyAgICByZXR1
cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVlbldp
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BsYXRmb3Jt
U2NyZWVuV2luLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1BsYXRmb3JtU2NyZWVuV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAK
KyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3Qu
aCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgpAQCAtMTA0LDEy
ICsxMDUsMTAgQEAgRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QoV2lkZ2V0KiB3aQogICAg
IHJldHVybiBtb25pdG9ySW5mby5yY1dvcms7CiB9CiAKLSNpZiBVU0UoQ0cpCi1DR0NvbG9yU3Bh
Y2VSZWYgc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqKQorRGVzdGluYXRpb25Db2xvclNwYWNlIHNj
cmVlbkNvbG9yU3BhY2UoV2lkZ2V0KikKIHsKLSAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYo
KTsKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiB9Ci0jZW5kaWYK
IAogYm9vbCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IoV2lkZ2V0KikKIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dwZS9QbGF0Zm9ybVNjcmVlbldQRS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3BlL1BsYXRmb3JtU2NyZWVuV1BFLmNwcAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3BlL1BsYXRmb3Jt
U2NyZWVuV1BFLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAKKyNpbmNsdWRlICJEZXN0
aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIldpZGdldC5oIgpAQCAtODEsNiArODIsMTEgQEAg
RmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QoV2lkZ2V0KiB3aQogICAgIHJldHVybiBzY3Jl
ZW5SZWN0KHdpZGdldCk7CiB9CiAKK0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBzY3JlZW5Db2xvclNw
YWNlKFdpZGdldCopCit7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
OworfQorCiBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcihXaWRnZXQqKQogewogICAg
IHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3Jt
WFIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhS
LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRm
b3JtWFIuaAkod29ya2luZyBjb3B5KQpAQCAtMTgsNiArMTgsNyBAQAogICovCiAjcHJhZ21hIG9u
Y2UKIAorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0
UG9pbnQzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgogI2luY2x1ZGUgIkludFJl
Y3QuaCIKQEAgLTMyLDggKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlQ0cuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL0lPU3VyZmFjZS5oPgorI2luY2x1ZGUgIklPU3VyZmFjZS5oIgogI2luY2x1
ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CiAjZW5kaWYKIApAQCAtNDQ2LDcgKzQ0Niw3IEBAIE9w
dGlvbmFsPERldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGE+IEQKICAgICBXVEY6Ok1hY2hTZW5k
UmlnaHQgc3VyZmFjZVNlbmRSaWdodDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN1cmZhY2VT
ZW5kUmlnaHQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIGxheWVyRGF0YS5z
dXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUo
c3VyZmFjZVNlbmRSaWdodCksIFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCkpOworICAgIGxh
eWVyRGF0YS5zdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0
KFdURk1vdmUoc3VyZmFjZVNlbmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpKTsKICNlbmRpZgogICAgIHJldHVybiBsYXllckRhdGE7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
MSw5ICsxMTEsOSBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBDU1NGaWx0ZXI6OmJ1aWxkUmVmCiAg
ICAgICAgIGVmZmVjdEVsZW1lbnQuc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKGVmZmVjdC5nZXQoKSk7
CiAgICAgICAgIGlmIChlZmZlY3RFbGVtZW50LnJlbmRlcmVyKCkpIHsKICNpZiBFTkFCTEUoREVT
VElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgICAgICAgICBlZmZlY3QtPnNl
dE9wZXJhdGluZ0NvbG9yU3BhY2UoZWZmZWN0RWxlbWVudC5yZW5kZXJlcigpLT5zdHlsZSgpLnN2
Z1N0eWxlKCkuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpID09IENvbG9ySW50ZXJwb2xhdGlv
bjo6TGluZWFyUkdCID8gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCIDogRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKTsKKyAgICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5n
Q29sb3JTcGFjZShlZmZlY3RFbGVtZW50LnJlbmRlcmVyKCktPnN0eWxlKCkuc3ZnU3R5bGUoKS5j
b2xvckludGVycG9sYXRpb25GaWx0ZXJzKCkgPT0gQ29sb3JJbnRlcnBvbGF0aW9uOjpMaW5lYXJS
R0IgPyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKSA6IERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpKTsKICNlbHNlCi0gICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGlu
Z0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKKyAgICAgICAgICAgIGVm
ZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSk7CiAjZW5kaWYKICAgICAgICAgfQogICAgICAgICBidWlsZGVyLT5hZGQoZWZmZWN0RWxlbWVu
dC5yZXN1bHQoKSwgZWZmZWN0KTsKQEAgLTI5Niw3ICsyOTYsNyBAQCBib29sIENTU0ZpbHRlcjo6
YnVpbGQoUmVuZGVyRWxlbWVudCYgcmVuCiAgICAgICAgICAgICAvLyBVbmxpa2UgU1ZHIEZpbHRl
cnMgYW5kIENTU0ZpbHRlckltYWdlcywgZmlsdGVyIGZ1bmN0aW9ucyBvbiB0aGUgZmlsdGVyCiAg
ICAgICAgICAgICAvLyBwcm9wZXJ0eSBhcHBsaWVkIGhlcmUgc2hvdWxkIG5vdCBjbGlwIHRvIHRo
ZWlyIHByaW1pdGl2ZSBzdWJyZWdpb25zLgogICAgICAgICAgICAgZWZmZWN0LT5zZXRDbGlwc1Rv
Qm91bmRzKGNvbnN1bWVyID09IEZpbHRlckNvbnN1bWVyOjpGaWx0ZXJGdW5jdGlvbik7Ci0gICAg
ICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKTsKKyAgICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGlmIChmaWx0ZXJPcGVyYXRpb24udHlwZSgpICE9IEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNF
KSB7CiAgICAgICAgICAgICAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgV1RGTW92ZShw
cmV2aW91c0VmZmVjdCkgfTsKQEAgLTM0NCwxMSArMzQ0LDExIEBAIHZvaWQgQ1NTRmlsdGVyOjph
bGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmUKICAgICBJbnRTaXplIGxvZ2ljYWxTaXplIHsgbV9zb3Vy
Y2VEcmF3aW5nUmVnaW9uLnNpemUoKSB9OwogICAgIGlmICghc291cmNlSW1hZ2UoKSB8fCBzb3Vy
Y2VJbWFnZSgpLT5sb2dpY2FsU2l6ZSgpICE9IGxvZ2ljYWxTaXplKSB7CiAjaWYgVVNFKERJUkVD
VDJEKQotICAgICAgICBzZXRTb3VyY2VJbWFnZShJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxT
aXplLCByZW5kZXJpbmdNb2RlKCksICZ0YXJnZXRDb250ZXh0LCBmaWx0ZXJTY2FsZSgpLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCkpOworICAgICAgICBz
ZXRTb3VyY2VJbWFnZShJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZW5kZXJpbmdN
b2RlKCksICZ0YXJnZXRDb250ZXh0LCBmaWx0ZXJTY2FsZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CiAjZWxzZQogICAgICAgICBVTlVTRURf
UEFSQU0odGFyZ2V0Q29udGV4dCk7CiAgICAgICAgIFJlbmRlcmluZ01vZGUgbW9kZSA9IG1fZmls
dGVyUmVuZGVyZXIgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IHJlbmRlcmluZ01vZGUo
KTsKLSAgICAgICAgc2V0U291cmNlSW1hZ2UoSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6
ZSwgbW9kZSwgZmlsdGVyU2NhbGUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhl
bEZvcm1hdDo6QkdSQTgpKTsKKyAgICAgICAgc2V0U291cmNlSW1hZ2UoSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShsb2dpY2FsU2l6ZSwgbW9kZSwgZmlsdGVyU2NhbGUoKSwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCkpOwogI2VuZGlmCiAgICAgfQogICAgIG1f
Z3JhcGhpY3NCdWZmZXJBdHRhY2hlZCA9IHRydWU7CkBAIC0zODIsMTIgKzM4MiwxMiBAQCB2b2lk
IENTU0ZpbHRlcjo6YXBwbHkoKQogICAgIGlmIChtX2ZpbHRlclJlbmRlcmVyKSB7CiAgICAgICAg
IG1fZmlsdGVyUmVuZGVyZXItPmFwcGx5RWZmZWN0cyhlZmZlY3QpOwogICAgICAgICBpZiAobV9m
aWx0ZXJSZW5kZXJlci0+aGFzUmVzdWx0KCkpIHsKLSAgICAgICAgICAgIGVmZmVjdC50cmFuc2Zv
cm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CisgICAgICAg
ICAgICBlZmZlY3QudHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAgICAg
ZWZmZWN0LmFwcGx5KCk7Ci0gICAgZWZmZWN0LnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKKyAgICBlZmZlY3QudHJhbnNmb3JtUmVzdWx0Q29s
b3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiB9CiAKIExheW91dFJlY3Qg
Q1NTRmlsdGVyOjpjb21wdXRlU291cmNlSW1hZ2VSZWN0Rm9yRGlydHlSZWN0KGNvbnN0IExheW91
dFJlY3QmIGZpbHRlckJveFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGRpcnR5UmVjdCkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNw
cAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODc2LDcgKzg3Niw3IEBAIHZvaWQg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWUKICAgICAgICAgbWFza1JlY3QuaW50
ZXJzZWN0KHNuYXBwZWRJbnRSZWN0KHBhaW50SW5mby5yZWN0KSk7CiAKICAgICAgICAgLy8gTm93
IGNyZWF0ZSB0aGUgbWFzay4KLSAgICAgICAgbWFza0ltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZUNvbXBhdGlibGVCdWZmZXIobWFza1JlY3Quc2l6ZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IsIGNvbnRleHQpOworICAgICAgICBtYXNrSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihtYXNrUmVjdC5zaXplKCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpLCBjb250ZXh0KTsKICAgICAgICAgaWYgKCFtYXNrSW1hZ2UpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIHBhaW50TWFza0ZvclRleHRGaWxsQm94KG1hc2tJbWFnZS5nZXQoKSwg
bWFza1JlY3QsIGJveCwgc2Nyb2xsZWRQYWludFJlY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMjY3LDcgKzMyNjcsNyBAQCBzdGF0aWMgUmVmUHRyPFBhdHRlcm4+IHBh
dHRlcm5Gb3JEZXNjcmlwCiB7CiAgICAgY29uc3QgRmxvYXRTaXplIHRpbGVTaXplIHsgMzIsIDE4
IH07CiAKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIodGlsZVNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgZGVzdENvbnRl
eHQpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJs
ZUJ1ZmZlcih0aWxlU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGRlc3RDb250
ZXh0KTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTgzLDExICsxOTgzLDExIEBAIHZvaWQgUmVuZGVyVGhlbWVJ
T1M6OnBhaW50U3lzdGVtUHJldmlld0IKICAgICBJT1N1cmZhY2VSZWYgc3VyZmFjZTsKICAgICBp
ZiAodXNlU21hbGxCYWRnZSkgewogICAgICAgICBpZiAoIW1fc21hbGxCYWRnZVN1cmZhY2UpCi0g
ICAgICAgICAgICBtX3NtYWxsQmFkZ2VTdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoeyBzbWFs
bEJhZGdlRGltZW5zaW9uLCBzbWFsbEJhZGdlRGltZW5zaW9uIH0sIHNSR0JDb2xvclNwYWNlUmVm
KCkpOworICAgICAgICAgICAgbV9zbWFsbEJhZGdlU3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRl
KHsgc21hbGxCYWRnZURpbWVuc2lvbiwgc21hbGxCYWRnZURpbWVuc2lvbiB9LCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAgIHN1cmZhY2UgPSBtX3NtYWxsQmFkZ2VTdXJm
YWNlLT5zdXJmYWNlKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFtX2xhcmdlQmFkZ2VT
dXJmYWNlKQotICAgICAgICAgICAgbV9sYXJnZUJhZGdlU3VyZmFjZSA9IElPU3VyZmFjZTo6Y3Jl
YXRlKHsgbGFyZ2VCYWRnZURpbWVuc2lvbiwgbGFyZ2VCYWRnZURpbWVuc2lvbiB9LCBzUkdCQ29s
b3JTcGFjZVJlZigpKTsKKyAgICAgICAgICAgIG1fbGFyZ2VCYWRnZVN1cmZhY2UgPSBJT1N1cmZh
Y2U6OmNyZWF0ZSh7IGxhcmdlQmFkZ2VEaW1lbnNpb24sIGxhcmdlQmFkZ2VEaW1lbnNpb24gfSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgICAgICBzdXJmYWNlID0gbV9sYXJn
ZUJhZGdlU3VyZmFjZS0+c3VyZmFjZSgpOwogICAgIH0KICAgICBbbV9jaUNvbnRleHQuZ2V0KCkg
cmVuZGVyOnRyYW5zbGF0ZWRJbWFnZSB0b0lPU3VyZmFjZTpzdXJmYWNlIGJvdW5kczpiYWRnZVJl
Y3QgY29sb3JTcGFjZTpzUkdCQ29sb3JTcGFjZVJlZigpXTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTMwOSw3ICsxMzA5LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRQcm9ncmVzc0Jhcihj
bwogICAgIGNvbnN0IGF1dG8mIHJlbmRlclByb2dyZXNzID0gZG93bmNhc3Q8UmVuZGVyUHJvZ3Jl
c3M+KHJlbmRlck9iamVjdCk7CiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSByZW5kZXJP
YmplY3QuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpOwogICAgIGJvb2wgaXNJbmRldGVy
bWluYXRlID0gcmVuZGVyUHJvZ3Jlc3MucG9zaXRpb24oKSA8IDA7Ci0gICAgYXV0byBpbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGluZmxhdGVkUmVjdC5z
aXplKCksIGRldmljZVNjYWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIHBh
aW50SW5mby5jb250ZXh0KCkpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihpbmZsYXRlZFJlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZh
Y3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHBhaW50SW5mby5jb250ZXh0KCkp
OwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiB0cnVlOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAkocmV2aXNpb24gMjc3OTE5
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE4MSw3ICsxODEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpj
cmVhdGVSYXN0CiAgICAgSW50UmVjdCBtYXJnaW5SZWN0ID0gc25hcHBlZEludFJlY3QobWFyZ2lu
Uik7CiAgICAgYXV0byBpbnRlcnZhbHMgPSBtYWtlVW5pcXVlPFJhc3RlclNoYXBlSW50ZXJ2YWxz
PihtYXJnaW5SZWN0LmhlaWdodCgpLCAtbWFyZ2luUmVjdC55KCkpOwogICAgIC8vIEZJWE1FICgx
NDk0MjApOiBUaGlzIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2Vs
ZXJhdGVkLgotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdl
UmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGltYWdlQnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KTsKIAogICAgIGF1dG8gY3JlYXRlU2hhcGUgPSBbJl0oKSB7CiAgICAgICAg
IGF1dG8gcmFzdGVyU2hhcGUgPSBtYWtlVW5pcXVlPFJhc3RlclNoYXBlPihXVEZNb3ZlKGludGVy
dmFscyksIG1hcmdpblJlY3Quc2l6ZSgpKTsKQEAgLTE5Nyw3ICsxOTcsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0CiAgICAgaWYgKGltYWdlKQogICAgICAgICBn
cmFwaGljc0NvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFn
ZVJlY3Quc2l6ZSgpKSk7CiAKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0
IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6
UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgYXV0byBwaXhlbEJ1
ZmZlciA9IGltYWdlQnVmZmVyLT5nZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIHsgSW50UG9pbnQoKSwg
aW1hZ2VSZWN0LnNpemUoKSB9KTsKICAgICAKICAgICAvLyBXZSBjb3VsZCBnZXQgdG8gYSB2YWx1
ZSB3aGVyZSBQaXhlbEJ1ZmZlciBjb3VsZCBiZSBudWxsb3B0LiBBIGNhc2Ugd2hlcmUgSW1hZ2VS
ZWN0LnNpemUoKSBpcyBodWdlLCBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNs
aXBwZXIuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw3
ICsxNDYsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlDbGlwCiAgICAg
QWZmaW5lVHJhbnNmb3JtIGFic29sdXRlVHJhbnNmb3JtID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6
Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0ocmVuZGVy
ZXIpOwogICAgIGlmICghY2xpcHBlckRhdGEuaXNWYWxpZEZvckdlb21ldHJ5KG9iamVjdEJvdW5k
aW5nQm94LCBhYnNvbHV0ZVRyYW5zZm9ybSkpIHsKICAgICAgICAgLy8gRklYTUUgKDE0OTQ2OSk6
IFRoaXMgaW1hZ2UgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxl
cmF0ZWQuIE1ha2luZyBpdCBtYXRjaCB0aGUgY29udGV4dCBicmVha3MgbmVzdGVkIGNsaXBwaW5n
LCB0aG91Z2guCi0gICAgICAgIGF1dG8gbWFza0ltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6
Y3JlYXRlSW1hZ2VCdWZmZXIob2JqZWN0Qm91bmRpbmdCb3gsIGFic29sdXRlVHJhbnNmb3JtLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
ICZjb250ZXh0KTsKKyAgICAgICAgYXV0byBtYXNrSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0
OjpjcmVhdGVJbWFnZUJ1ZmZlcihvYmplY3RCb3VuZGluZ0JveCwgYWJzb2x1dGVUcmFuc2Zvcm0s
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJh
dGVkLCAmY29udGV4dCk7CiAgICAgICAgIGlmICghbWFza0ltYWdlKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlRmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNCw5ICsxMDQsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHRmls
dGVyQnVpbGRlcj4gUmVuZGVyCiAgICAgICAgIGVmZmVjdC0+c2V0RWZmZWN0Qm91bmRhcmllcyhT
VkdMZW5ndGhDb250ZXh0OjpyZXNvbHZlUmVjdGFuZ2xlPFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcz4oJmVsZW1lbnQsIGZpbHRlckVsZW1lbnQoKS5wcmltaXRpdmVVbml0cygp
LCB0YXJnZXRCb3VuZGluZ0JveCkpOwogICAgICAgICBpZiAoZWxlbWVudC5yZW5kZXJlcigpKSB7
CiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQotICAgICAg
ICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKGVsZW1lbnQucmVuZGVyZXIoKS0+
c3R5bGUoKS5zdmdTdHlsZSgpLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSA9PSBDb2xvcklu
dGVycG9sYXRpb246OkxpbmVhclJHQiA/IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JH
QiA6IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CisgICAgICAgICAgICBlZmZlY3QtPnNl
dE9wZXJhdGluZ0NvbG9yU3BhY2UoZWxlbWVudC5yZW5kZXJlcigpLT5zdHlsZSgpLnN2Z1N0eWxl
KCkuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpID09IENvbG9ySW50ZXJwb2xhdGlvbjo6TGlu
ZWFyUkdCID8gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCkgOiBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAjZWxzZQotICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVy
YXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CisgICAgICAgICAg
ICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCkpOwogI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgYnVpbGRlci0+YWRkKGVsZW1lbnQu
cmVzdWx0KCksIFdURk1vdmUoZWZmZWN0KSk7CkBAIC0xOTgsOSArMTk4LDkgQEAgYm9vbCBSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdQogCiAgICAgYXV0byByZW5kZXJpbmdNb2Rl
ID0gcmVuZGVyZXIuc2V0dGluZ3MoKS5hY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVkKCkgPyBSZW5k
ZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CiAj
aWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQotICAgIGF1dG8g
Y29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQjsKKyAgICBhdXRv
IGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKTsKICNlbHNl
Ci0gICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOworICAg
IGF1dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOwogI2VuZGlm
CiAgICAgYXV0byBzb3VyY2VHcmFwaGljID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1h
Z2VCdWZmZXIoZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbiwgZWZmZWN0aXZlVHJhbnNmb3JtLCBj
b2xvclNwYWNlLCByZW5kZXJpbmdNb2RlLCBjb250ZXh0KTsKICAgICBpZiAoIXNvdXJjZUdyYXBo
aWMpIHsKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpw
b3N0QXBwbHlSCiAgICAgICAgICAgICBmaWx0ZXJEYXRhLnN0YXRlID0gRmlsdGVyRGF0YTo6QXBw
bHlpbmc7CiAgICAgICAgICAgICBsYXN0RWZmZWN0LT5hcHBseSgpOwogICAgICAgICAgICAgbGFz
dEVmZmVjdC0+Y29ycmVjdEZpbHRlclJlc3VsdElmTmVlZGVkKCk7Ci0gICAgICAgICAgICBsYXN0
RWZmZWN0LT50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQik7CisgICAgICAgICAgICBsYXN0RWZmZWN0LT50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNl
KERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICAgICAgfQogICAgICAgICBmaWx0
ZXJEYXRhLnN0YXRlID0gRmlsdGVyRGF0YTo6QnVpbHQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50
LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAs
NyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY3JlYXRlTWFza0FuZFN3YXBDb250CiAgICAgQWZmaW5l
VHJhbnNmb3JtIGFic29sdXRlVHJhbnNmb3JtID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3Vs
YXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0oKnRleHRSb290Qmxv
Y2spOwogICAgIEZsb2F0UmVjdCByZXBhaW50UmVjdCA9IHRleHRSb290QmxvY2stPnJlcGFpbnRS
ZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCk7CiAKLSAgICBhdXRvIG1hc2tJbWFnZSA9IFNWR1JlbmRl
cmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBhYnNvbHV0ZVRyYW5z
Zm9ybSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBjb250ZXh0LT5yZW5kZXJpbmdNb2Rl
KCkpOworICAgIGF1dG8gbWFza0ltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1h
Z2VCdWZmZXIocmVwYWludFJlY3QsIGFic29sdXRlVHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSwgY29udGV4dC0+cmVuZGVyaW5nTW9kZSgpKTsKICAgICBpZiAoIW1hc2tJ
bWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAkocmV2
aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZU1hc2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDkgKzcxLDkgQEAgYm9vbCBS
ZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdQogICAgICAgICBjb25zdCBTVkdSZW5k
ZXJTdHlsZSYgc3ZnU3R5bGUgPSBzdHlsZSgpLnN2Z1N0eWxlKCk7CiAKICNpZiBFTkFCTEUoREVT
VElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgICAgIGF1dG8gY29sb3JTcGFj
ZSA9IHN2Z1N0eWxlLmNvbG9ySW50ZXJwb2xhdGlvbigpID09IENvbG9ySW50ZXJwb2xhdGlvbjo6
TGluZWFyUkdCID8gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCIDogRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCOworICAgICAgICBhdXRvIGNvbG9yU3BhY2UgPSBzdmdTdHlsZS5j
b2xvckludGVycG9sYXRpb24oKSA9PSBDb2xvckludGVycG9sYXRpb246OkxpbmVhclJHQiA/IERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigpIDogRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCk7CiAjZWxzZQotICAgICAgICBhdXRvIGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0I7CisgICAgICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpOwogI2VuZGlmCiAKICAgICAgICAgLy8gRklYTUUgKDE0OTQ3MCk6IFRo
aXMgaW1hZ2UgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0
ZWQuIE1ha2luZyBpdCBtYXRjaCB0aGUgY29udGV4dCBicmVha3MgYWxwaGEgbWFza2luZywgdGhv
dWdoLgpAQCAtOTIsNyArOTIsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBs
eVJlc291CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNr
ZXI6OmRyYXdDb250ZW50SW50b01hc2tJbWFnZShNYXNrZXJEYXRhKiBtYXNrZXJEYXRhLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVuZGVyT2JqZWN0KiBvYmplY3QpCitib29s
IFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UoTWFza2Vy
RGF0YSogbWFza2VyRGF0YSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNl
LCBSZW5kZXJPYmplY3QqIG9iamVjdCkKIHsKICAgICBHcmFwaGljc0NvbnRleHQmIG1hc2tJbWFn
ZUNvbnRleHQgPSBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UtPmNvbnRleHQoKTsKIApAQCAtMTE5LDcg
KzExOSw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250ZW4KICAgICB9
CiAKICNpZiAhVVNFKENHKQotICAgIG1hc2tlckRhdGEtPm1hc2tJbWFnZS0+dHJhbnNmb3JtQ29s
b3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGNvbG9yU3BhY2UpOworICAgIG1h
c2tlckRhdGEtPm1hc2tJbWFnZS0+dHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSwgY29sb3JTcGFjZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb2xv
clNwYWNlKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZU1hc2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAKICAgICBjb25zdCBjaGFy
KiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1Jlc291cmNl
TWFza2VyIjsgfQogCi0gICAgYm9vbCBkcmF3Q29udGVudEludG9NYXNrSW1hZ2UoTWFza2VyRGF0
YSosIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUmVuZGVyT2JqZWN0Kik7CisgICAgYm9vbCBkcmF3
Q29udGVudEludG9NYXNrSW1hZ2UoTWFza2VyRGF0YSosIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYsIFJlbmRlck9iamVjdCopOwogICAgIHZvaWQgY2FsY3VsYXRlTWFza0NvbnRlbnRSZXBh
aW50UmVjdCgpOwogCiAgICAgRmxvYXRSZWN0IG1fbWFza0NvbnRlbnRCb3VuZGFyaWVzOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VQYXR0ZXJuLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNTMsNyArMjUzLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxk
VGlsZQogUmVmUHRyPEltYWdlQnVmZmVyPiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmNyZWF0
ZVRpbGVJbWFnZShjb25zdCBQYXR0ZXJuQXR0cmlidXRlcyYgYXR0cmlidXRlcywgY29uc3QgRmxv
YXRSZWN0JiB0aWxlQm91bmRhcmllcywgY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVRpbGVCb3Vu
ZGFyaWVzLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRpbGVJbWFnZVRyYW5zZm9ybSwgRmxvYXRS
ZWN0JiBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcywgUmVuZGVyaW5nTW9kZSByZW5kZXJp
bmdNb2RlKSBjb25zdAogewogICAgIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzID0gSW1h
Z2VCdWZmZXI6OmNsYW1wZWRSZWN0KGFic29sdXRlVGlsZUJvdW5kYXJpZXMpOwotICAgIGF1dG8g
dGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoYWJzb2x1
dGVUaWxlQm91bmRhcmllcywgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQiwgcmVuZGVyaW5nTW9kZSk7CisgICAgYXV0byB0aWxlSW1hZ2Ug
PSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihhYnNvbHV0ZVRpbGVCb3Vu
ZGFyaWVzLCBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcywgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCksIHJlbmRlcmluZ01vZGUpOwogICAgIGlmICghdGlsZUltYWdlKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMzYsNyArMjM2LDcgQEAgQWZmaW5lVHJhbnNmb3JtIFNWR1JlbmRlcmlu
Z0NvbnRleHQ6OmNhbAogICAgIHJldHVybiBhYnNvbHV0ZVRyYW5zZm9ybTsKIH0KIAotUmVmUHRy
PEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25z
dCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVU
cmFuc2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2Rl
IHJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxJ
bWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3Qg
RmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJh
bnNmb3JtLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFJlbmRlcmlu
Z01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogewog
ICAgIEludFJlY3QgcGFpbnRSZWN0ID0gY2FsY3VsYXRlSW1hZ2VCdWZmZXJSZWN0KHRhcmdldFJl
Y3QsIGFic29sdXRlVHJhbnNmb3JtKTsKICAgICAvLyBEb24ndCBjcmVhdGUgZW1wdHkgSW1hZ2VC
dWZmZXJzLgpAQCAtMjY0LDcgKzI2NCw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVy
aW5nQ29udGV4dDoKICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1
ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRSZWN0LCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25z
dCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRl
cmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCkKIHsKICAgICBJbnRTaXplIGNsYW1wZWRTaXplID0gcm91bmRl
ZEludFNpemUoY2xhbXBlZFJlY3Quc2l6ZSgpKTsKICAgICBGbG9hdFNpemUgdW5jbGFtcGVkU2l6
ZSA9IHJvdW5kZWRJbnRTaXplKHRhcmdldFJlY3Quc2l6ZSgpKTsKQEAgLTM1MCw3ICszNTAsNyBA
QCBib29sIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckZvcmVncm91CiAKICAgICAvLyBDcmVh
dGUgYSBuZXcgYnVmZmVyIGFuZCBwYWludCB0aGUgZm9yZWdyb3VuZCBpbnRvIGl0LgogICAgIGlm
ICghaW1hZ2VCdWZmZXIpIHsKLSAgICAgICAgaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoYm91bmRpbmdCb3guc2l6ZSgpKSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBtX3BhaW50SW5mby0+Y29udGV4dCgpKTsKKyAg
ICAgICAgaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihl
eHBhbmRlZEludFNpemUoYm91bmRpbmdCb3guc2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkpOwogICAgICAgICBpZiAoIWltYWdlQnVm
ZmVyKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0Nv
bnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KFJlbmRlckVsZW1lbnQmLCBQYWludEluZm8mLCBO
ZWVkc0dyYXBoaWNzQ29udGV4dFNhdmUgPSBEb250U2F2ZUdyYXBoaWNzQ29udGV4dCk7CiAgICAg
Ym9vbCBpc1JlbmRlcmluZ1ByZXBhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdGbGFn
cyAmIFJlbmRlcmluZ1ByZXBhcmVkOyB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVy
PiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwg
UmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpOwotICAgIHN0
YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwgRGVzdGluYXRpb25D
b2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0
cik7CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRl
VHJhbnNmb3JtLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBSZW5kZXJpbmdNb2RlLCBj
b25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cik7CisgICAgc3RhdGljIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIGNsYW1wZWRSZWN0LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
LCBSZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cik7CiAKICAg
ICBzdGF0aWMgdm9pZCByZW5kZXJTdWJ0cmVlVG9Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIFJl
bmRlckVsZW1lbnQmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKICAgICBzdGF0aWMgdm9pZCBj
bGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4mLCBib29sIHNhZmVUb0NsZWFyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE3LDcgKzIx
Nyw3IEBAIFJlZlB0cjxOYXRpdmVJbWFnZT4gU1ZHSW1hZ2U6Om5hdGl2ZUltYWcKICAgICBpZiAo
IW1fcGFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGltYWdlQnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
KyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCkBAIC0yNDcsNyArMjQ3LDcgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhd1Bh
dHRlcm5Gb3JDb250YWluZXIoRwogICAgIEZsb2F0UmVjdCBpbWFnZUJ1ZmZlclNpemUgPSB6b29t
ZWRDb250YWluZXJSZWN0OwogICAgIGltYWdlQnVmZmVyU2l6ZS5zY2FsZShpbWFnZUJ1ZmZlclNj
YWxlLndpZHRoKCksIGltYWdlQnVmZmVyU2NhbGUuaGVpZ2h0KCkpOwogCi0gICAgYXV0byBidWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUo
aW1hZ2VCdWZmZXJTaXplLnNpemUoKSksIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwg
Y29udGV4dCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJs
ZUJ1ZmZlcihleHBhbmRlZEludFNpemUoaW1hZ2VCdWZmZXJTaXplLnNpemUoKSksIDEsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBjb250ZXh0KTsKICAgICBpZiAoIWJ1ZmZlcikgLy8g
RmFpbGVkIHRvIGFsbG9jYXRlIGJ1ZmZlci4KICAgICAgICAgcmV0dXJuOwogICAgIGRyYXdGb3JD
b250YWluZXIoYnVmZmVyLT5jb250ZXh0KCksIGNvbnRhaW5lclNpemUsIGNvbnRhaW5lclpvb20s
IGluaXRpYWxGcmFnbWVudFVSTCwgaW1hZ2VCdWZmZXJTaXplLCB6b29tZWRDb250YWluZXJSZWN0
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFSW1hZ2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsOCArOTMs
OCBAQCB2b2lkIEZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKCFtX2lt
YWdlICYmICFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRkVJbWFnZSByZXN1
bHRzIGFyZSBhbHdheXMgaW4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCCi0gICAgc2V0UmVz
dWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOworICAgIC8vIEZFSW1h
Z2UgcmVzdWx0cyBhcmUgYWx3YXlzIGluIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpCisg
ICAgc2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAK
ICAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgp
OwogICAgIGlmICghcmVzdWx0SW1hZ2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjc3OTIwKQor
KysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw4OSBA
QAorMjAyMS0wNS0yMiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAg
Q29udmVydCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdyYXBw
aW5nIGEgcGxhdGZvcm0gY29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMs
IGV0Yy4pCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjYxNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBb
V0lQXQorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5o
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcik6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpjcmVhdGVGcmFt
ZUltYWdlQXRJbmRleCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkZQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6YXBwbHlCYWNraW5nU3RvcmVUb0xheWVyKToK
KyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
U2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAgICAg
ICogU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAg
ICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAoV2ViS2l0Ojpj
b2xvclNwYWNlKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL0NvbG9yU3BhY2VEYXRhLmg6IFJlbW92
ZWQuCisgICAgICAgICogU2hhcmVkL21hYy9Db2xvclNwYWNlRGF0YS5tbTogUmVtb3ZlZC4KKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dL
V2ViVmlld0lPUy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF90YWtlVmlld1NuYXBzaG90XSk6
CisgICAgICAgICgtW1dLV2ViVmlldyBfc25hcHNob3RSZWN0OmludG9JbWFnZU9mV2lkdGg6Y29t
cGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6Y29sb3JTcGFjZSk6CisgICAgICAgICogVUlQcm9jZXNzL1Bh
Z2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZUhvc3QubW06CisgICAgICAgIChXZWJLaXQ6OnJlY3Vyc2l2ZWx5TWFwSU9TdXJmYWNl
QmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGll
bnRJbXBsOjpjb2xvclNwYWNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW06CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQ
YWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29sb3JTcGFj
ZSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kOjpjb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVm
ZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9J
bWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpjcmVhdGVGcmFt
ZUltYWdlQXRJbmRleCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvTWVk
aWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGl4ZWxCdWZmZXJGb3JDdXJyZW50VGlt
ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAg
ICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6UERGUGx1Z2luKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OmNyZWF0ZVNoYXJlYWJsZUJpdG1hcCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJv
bWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OmNvbnZlcnREcmFnSW1hZ2VUb0JpdG1hcCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0RyYXdpbmdBcmVhLmg6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjpzZXRDb2xvclNw
YWNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMu
aW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpzbmFwc2hvdE9wdGlvbnNUb0JpdG1hcENvbmZpZ3VyYXRpb24pOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YTo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEpOgorICAgICAgICAoV2ViS2l0OjpUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0Q29sb3JTcGFjZSk6CisKIDIwMjEtMDUtMjIg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIExvY2tI
b2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0CShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTIwMyw3ICsyMDMsNiBAQCBTaGFyZWQvaW9zL1dlYlRvdWNo
RXZlbnRJT1MuY3BwCiAKIFNoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQogU2hhcmVk
L21hYy9Db2RlU2lnbmluZy5tbQotU2hhcmVkL21hYy9Db2xvclNwYWNlRGF0YS5tbQogU2hhcmVk
L21hYy9IYW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMubW0KIFNoYXJlZC9tYWMvTmF0aXZlV2ViR2Vz
dHVyZUV2ZW50TWFjLm1tCiBTaGFyZWQvbWFjL05hdGl2ZVdlYktleWJvYXJkRXZlbnRNYWMubW0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlci5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDQs
NyArNDQsNyBAQCBjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlciA6IHB1YmxpYyBXZWJDb3JlCiAgICAg
dXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnB1dFBpeGVsQnVmZmVyOwogCiBwdWJsaWM6
Ci0gICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29s
b3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgc3RhdGljIGF1
dG8gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBjb25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2Us
IFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgcmV0dXJu
IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjp0ZW1wbGF0ZSBjcmVhdGU8UmVtb3RlSW1hZ2VCdWZm
ZXI+KHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIG51bGxw
dHIsIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7
CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpkaWRGbHVzaChEaQogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6RGlkRmx1c2goZmx1c2hJZGVudGlmaWVyLCByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIH0KIAotdm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNp
emUmIGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0
IHBpeGVsRm9ybWF0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmlu
Z01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQocmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdN
b2RlOjpBY2NlbGVyYXRlZCB8fCByZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQpOwpJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCShyZXZpc2lvbiAyNzc5MTkpCisr
KyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxNCArNDQsMTggQEAKIAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CisKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiBjbGFzcyBEaXNwbGF5TGlzdDsKIGNs
YXNzIEl0ZW07CiB9CisKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIEZsb2F0
U2l6ZTsKIGNsYXNzIE5hdGl2ZUltYWdlOwotZW51bSBjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UgOiB1aW50OF90OworCiBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOworCiB9CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTIxLDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwg
VW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKIAogICAgIC8vIE1lc3NhZ2VzIHRv
IGJlIHJlY2VpdmVkLgotICAgIHZvaWQgY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBp
eGVsRm9ybWF0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZv
aWQgY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6
ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBX
ZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIHdha2VVcEFuZEFw
cGx5RGlzcGxheUxpc3QoY29uc3QgR1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHMmKTsK
ICAgICB2b2lkIHVwZGF0ZVNoYXJlZE1lbW9yeUZvckdldFBpeGVsQnVmZmVyKHVpbnQzMl90IGJ5
dGVDb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hh
bmRsZSYpPiYmKTsKICAgICB2b2lkIHNlbWFwaG9yZUZvckdldFBpeGVsQnVmZmVyKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTZW1hcGhvcmUmKT4mJik7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkZQcm94eS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExMywyOCArMTEzLDI4IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6
OnNldERhdGEKICAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZUNvdW50LCBpbWFnZURlY29kZXIt
PnNpemUoKSwgaW1hZ2VEZWNvZGVyLT5oYXNUcmFjaygpLCBXVEZNb3ZlKGZyYW1lSW5mb3MpKTsK
IH0KIAotdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Y3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgoSW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBzaXplX3QgaW5kZXgsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJpZ2h0PiYmLCBDb2xv
clNwYWNlRGF0YSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGUHJveHk6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KEltYWdlRGVjb2RlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgc2l6ZV90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPFdURjo6TWFjaFNlbmRSaWdodD4mJiwgT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25D
b2xvclNwYWNlPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQobV9pbWFn
ZURlY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAgICBPcHRpb25hbDxXVEY6Ok1hY2hT
ZW5kUmlnaHQ+IHNlbmRSaWdodDsKLSAgICBDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlRGF0YTsK
KyAgICBPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7
CiAgICAgaWYgKCFtX2ltYWdlRGVjb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpIHsKLSAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShzZW5kUmlnaHQpLCBXVEZNb3ZlKGNvbG9yU3Bh
Y2VEYXRhKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc2VuZFJpZ2h0KSwg
V1RGTW92ZShjb2xvclNwYWNlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRv
IGZyYW1lSW1hZ2UgPSBtX2ltYWdlRGVjb2RlcnMuZ2V0KGlkZW50aWZpZXIpLT5jcmVhdGVGcmFt
ZUltYWdlQXRJbmRleChpbmRleCk7CiAgICAgaWYgKCFmcmFtZUltYWdlKSB7Ci0gICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc2VuZFJpZ2h0KSwgV1RGTW92ZShjb2xvclNwYWNlRGF0
YSkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHNlbmRSaWdodCksIFdURk1v
dmUoY29sb3JTcGFjZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGF1dG8g
c3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbUltYWdlKGZyYW1lSW1hZ2UuZ2V0KCkpKSB7
CiAgICAgICAgIHNlbmRSaWdodCA9IHN1cmZhY2UtPmNyZWF0ZVNlbmRSaWdodCgpOwotICAgICAg
ICBjb2xvclNwYWNlRGF0YS5jZ0NvbG9yU3BhY2UgPSBzdXJmYWNlLT5jb2xvclNwYWNlKCk7Cisg
ICAgICAgIGNvbG9yU3BhY2UgPSBzdXJmYWNlLT5jb2xvclNwYWNlKCk7CiAgICAgfQogCi0gICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShzZW5kUmlnaHQpLCBXVEZNb3ZlKGNvbG9yU3BhY2VE
YXRhKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShzZW5kUmlnaHQpLCBXVEZNb3Zl
KGNvbG9yU3BhY2UpKTsKIH0KIAogdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Y2xl
YXJGcmFtZUJ1ZmZlckNhY2hlKEltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgc2l6
ZV90IGluZGV4KQpJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUlt
YWdlRGVjb2RlckFWRlByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmgJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQ
cm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw2IEBACiAKICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIEhBVkUoQVZBU1NFVFJFQURFUikKIAotI2luY2x1ZGUgIkNvbG9yU3BhY2VE
YXRhLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNl
aXZlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oPgpAQCAtNTcs
NyArNTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVsZXRlRGVjb2RlcihXZWJDb3JlOjpJbWFn
ZURlY29kZXJJZGVudGlmaWVyKTsKICAgICB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUoV2Vi
Q29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciwgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNp
emUpOwogICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBib29sIGFsbERhdGFSZWNlaXZlZCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChzaXplX3QgZnJhbWVDb3VudCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
c2l6ZSwgYm9vbCBoYXNUcmFjaywgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6RnJhbWVJbmZvPj4mJik+JiYpOwotICAgIHZvaWQgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciwgc2l6ZV90IGluZGV4LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdURjo6TWFjaFNlbmRSaWdodD4mJiwgQ29sb3JTcGFjZURh
dGEmJik+JiYpOworICAgIHZvaWQgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVySWRlbnRpZmllciwgc2l6ZV90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPFdURjo6TWFjaFNlbmRSaWdodD4mJiwgT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlPiYmKT4mJik7CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciwgc2l6ZV90IGluZGV4KTsKIAogICAgIHZv
aWQgZW5jb2RlZERhdGFTdGF0dXNDaGFuZ2VkKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZp
ZXIpOwpJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRlByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNzYWdlcy5pbgkocmV2
aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUlt
YWdlRGVjb2RlckFWRlByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICsz
Miw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5IE4KICAgICBEZWxl
dGVEZWNvZGVyKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAg
ICBTZXRFeHBlY3RlZENvbnRlbnRTaXplKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUpCiAgICAgU2V0RGF0YShX
ZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgLT4gKHNpemVfdCBm
cmFtZUNvdW50LCBXZWJDb3JlOjpJbnRTaXplIHNpemUsIGJvb2wgaGFzVHJhY2ssIE9wdGlvbmFs
PFZlY3RvcjxXZWJDb3JlOjpJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4+IGZyYW1lSW5mb3MpIFN5
bmNocm9ub3VzCi0gICAgQ3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoV2ViQ29yZTo6SW1hZ2VEZWNv
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBzaXplX3QgaW5kZXgpIC0+IChPcHRpb25hbDxNYWNo
U2VuZFJpZ2h0PiBzZW5kUmlnaHQsIHN0cnVjdCBXZWJLaXQ6OkNvbG9yU3BhY2VEYXRhIGNvbG9y
U3BhY2UpIFN5bmNocm9ub3VzCisgICAgQ3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoV2ViQ29yZTo6
SW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBzaXplX3QgaW5kZXgpIC0+IChPcHRp
b25hbDxNYWNoU2VuZFJpZ2h0PiBzZW5kUmlnaHQsIE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0
aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZSkgU3luY2hyb25vdXMKICAgICBDbGVhckZyYW1lQnVm
ZmVyQ2FjaGUoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBzaXpl
X3QgaW5kZXgpCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1h
cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFw
LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxl
Qml0bWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsMTAgKzc0LDcgQEAgdm9pZCBTaGFyZWFi
bGVCaXRtYXA6OkhhbmRsZTo6Y2xlYXIoKQogCiB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmln
dXJhdGlvbjo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNv
ZGVyIDw8IGlzT3BhcXVlOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGVuY29kZXIgPDwgY29s
b3JTcGFjZTsKLSNlbmRpZgorICAgIGVuY29kZXIgPDwgY29sb3JTcGFjZSA8PCBpc09wYXF1ZTsK
ICNpZiBVU0UoRElSRUNUMkQpCiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGU6OmVuY29kZUhhbmRs
ZShlbmNvZGVyLCBzaGFyZWRSZXNvdXJjZUhhbmRsZSk7CiAKQEAgLTg4LDIxICs4NSwyOCBAQCB2
b2lkIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbjo6ZW5jCiAjZW5kaWYKIH0KIAotYm9v
bCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb246OmRlY29kZShJUEM6OkRlY29kZXImIGRl
Y29kZXIsIENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCitib29sIFNoYXJlYWJsZUJpdG1h
cDo6Q29uZmlndXJhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgQ29uZmlndXJh
dGlvbiYgcmVzdWx0KQogewotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29uZmlndXJhdGlvbi5p
c09wYXF1ZSkpCisgICAgT3B0aW9uYWw8T3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xv
clNwYWNlPj4gY29sb3JTcGFjZTsKKyAgICBkZWNvZGVyID4+IGNvbG9yU3BhY2U7CisgICAgaWYg
KCFjb2xvclNwYWNlKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0jaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb25maWd1cmF0aW9uLmNvbG9yU3BhY2UpKQorCisg
ICAgT3B0aW9uYWw8Ym9vbD4gaXNPcGFxdWU7CisgICAgZGVjb2RlciA+PiBpc09wYXF1ZTsKKyAg
ICBpZiAoIWlzT3BhcXVlKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKKworICAgIHJl
c3VsdCA9IENvbmZpZ3VyYXRpb24geyBXVEZNb3ZlKCpjb2xvclNwYWNlKSwgKmlzT3BhcXVlIH07
CisKICNpZiBVU0UoRElSRUNUMkQpCiAgICAgYXV0byBwcm9jZXNzU3BlY2lmaWNIYW5kbGUgPSBT
aGFyZWRNZW1vcnk6OkhhbmRsZTo6ZGVjb2RlSGFuZGxlKGRlY29kZXIpOwogICAgIGlmICghcHJv
Y2Vzc1NwZWNpZmljSGFuZGxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBjb25maWd1
cmF0aW9uLnNoYXJlZFJlc291cmNlSGFuZGxlID0gcHJvY2Vzc1NwZWNpZmljSGFuZGxlLnZhbHVl
KCk7CisgICAgcmVzdWx0LnNoYXJlZFJlc291cmNlSGFuZGxlID0gcHJvY2Vzc1NwZWNpZmljSGFu
ZGxlLnZhbHVlKCk7CiAjZW5kaWYKKwogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDE1ICsyNiwxMiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1JbWFnZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQu
aD4KIAotI2lmIFVTRShDRykKLSNpbmNsdWRlICJDb2xvclNwYWNlRGF0YS5oIgotI2VuZGlmCi0K
ICNpZiBVU0UoRElSRUNUMkQpCiBpbnRlcmZhY2UgSUQyRDFCaXRtYXA7CiBpbnRlcmZhY2UgSUQy
RDFSZW5kZXJUYXJnZXQ7CkBAIC01NSwxMCArNTIsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNs
YXNzIFNoYXJlYWJsZUJpdG1hcCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWFi
bGVCaXRtYXA+IHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgQ29uZmlndXJhdGlvbiB7CisgICAgICAg
IE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKICAg
ICAgICAgYm9vbCBpc09wYXF1ZSB7IGZhbHNlIH07Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAg
ICAgIENvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2U7Ci0jZW5kaWYKICNpZiBVU0UoRElSRUNUMkQp
CiAgICAgICAgIG11dGFibGUgSEFORExFIHNoYXJlZFJlc291cmNlSGFuZGxlIHsgbnVsbHB0ciB9
OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDggQEAKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnNDRi5oIgor
CiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2
aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNSw4ICszMjUsMTEgQEAgT3B0aW9uYWw8
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUAogICAgIHBhcmFtZXRlcnMuaGFzUmVzb3Vy
Y2VMb2FkQ2xpZW50ID0gV1RGTW92ZSgqaGFzUmVzb3VyY2VMb2FkQ2xpZW50KTsKIAogI2lmIFBM
QVRGT1JNKE1BQykKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuY29sb3JTcGFj
ZSkpCisgICAgT3B0aW9uYWw8T3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPj4gY29sb3JT
cGFjZTsKKyAgICBkZWNvZGVyID4+IGNvbG9yU3BhY2U7CisgICAgaWYgKCFjb2xvclNwYWNlKQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHBhcmFtZXRlcnMuY29sb3JTcGFjZSA9
IFdURk1vdmUoKmNvbG9yU3BhY2UpOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVy
cy51c2VTeXN0ZW1BcHBlYXJhbmNlKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICNl
bmRpZgpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBA
CiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWN0
aXZpdHlTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXpl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9MYXlv
dXRNaWxlc3RvbmUuaD4KQEAgLTQ5LDEwICs1MCw2IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykK
LSNpbmNsdWRlICJDb2xvclNwYWNlRGF0YS5oIgotI2VuZGlmCi0KICNpZiBFTkFCTEUoQVBQTElD
QVRJT05fTUFOSUZFU1QpCiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbk1hbmlmZXN0Lmg+
CiAjZW5kaWYKQEAgLTE0Niw3ICsxNDMsNyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyB7CiAgICAgYm9vbCB1c2VFbGV2YXRlZFVzZXJJbnRlcmZhY2VMZXZlbCB7IGZhbHNlIH07
CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgQ29sb3JTcGFjZURhdGEgY29sb3JTcGFjZTsKKyAg
ICBPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CiAg
ICAgYm9vbCB1c2VTeXN0ZW1BcHBlYXJhbmNlOwogI2VuZGlmCiAjaWYgRU5BQkxFKE1FVEFfVklF
V1BPUlQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCShyZXZpc2lvbiAyNzc5
MTkpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxMiwxOSArMjEyLDE5IEBAIHZvaWQg
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGkKICAgICBzd2l0Y2ggKG1fdHlwZSkg
ewogICAgIGNhc2UgVHlwZTo6SU9TdXJmYWNlOgogICAgICAgICBpZiAoc2hvdWxkVXNlUmVtb3Rl
UmVuZGVyaW5nKQotICAgICAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IG1fbGF5
ZXItPmNvbnRleHQoKS0+ZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkuY3JlYXRl
SW1hZ2VCdWZmZXIobV9zaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCwg
bV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBwaXhlbEZvcm1h
dCgpKTsKKyAgICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBtX2xheWVyLT5j
b250ZXh0KCktPmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpLmNyZWF0ZUltYWdl
QnVmZmVyKG1fc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQsIG1fc2Nh
bGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBwaXhlbEZvcm1hdCgp
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9
IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJl
YWJsZU1hcHBlZEJhY2tlbmQ+OjpjcmVhdGUobV9zaXplLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIHBpeGVsRm9ybWF0KCksIG51bGxwdHIpOworICAgICAg
ICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VC
dWZmZXI8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZEJhY2tlbmQ+OjpjcmVh
dGUobV9zaXplLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0cik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVHlw
ZTo6Qml0bWFwOgogICAgICAgICBpZiAoc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nKQotICAgICAg
ICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IG1fbGF5ZXItPmNvbnRleHQoKS0+ZW5z
dXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1hZ2VCdWZmZXIobV9zaXpl
LCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBtX3NjYWxlLCBXZWJDb3Jl
OjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIHBpeGVsRm9ybWF0KCkpOworICAgICAgICAg
ICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IG1fbGF5ZXItPmNvbnRleHQoKS0+ZW5zdXJl
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1hZ2VCdWZmZXIobV9zaXplLCBX
ZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBtX3NjYWxlLCBXZWJDb3JlOjpE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgcGl4ZWxGb3JtYXQoKSk7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpDb25j
cmV0ZUltYWdlQnVmZmVyPFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQ+
OjpjcmVhdGUobV9zaXplLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IsIHBpeGVsRm9ybWF0KCksIG51bGxwdHIpOworICAgICAgICAgICAgbV9mcm9udEJ1ZmZl
ci5pbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8VW5hY2NlbGVyYXRl
ZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZD46OmNyZWF0ZShtX3NpemUsIG1fc2NhbGUsIFdl
YkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBwaXhlbEZvcm1hdCgpLCBudWxs
cHRyKTsKICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURf
SU1BR0VfQlVGRkVSKQogICAgIGNhc2UgVHlwZTo6Q0dEaXNwbGF5TGlzdDoKLSAgICAgICAgbV9m
cm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8Q0dE
aXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZD46OmNyZWF0ZShtX3NpemUsIG1fc2NhbGUsIFdl
YkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0
cik7CisgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0
ZUltYWdlQnVmZmVyPENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ+OjpjcmVhdGUobV9z
aXplLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgcGl4
ZWxGb3JtYXQoKSwgbnVsbHB0cik7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgfQpAQCAt
Mzk3LDcgKzM5Nyw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmFwcGx5QmFja2kK
ICAgICAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6SU9TdXJmYWNlKTsKICAgICAgICAg
ICAgIHN3aXRjaCAoY29udGVudHNUeXBlKSB7CiAgICAgICAgICAgICBjYXNlIExheWVyQ29udGVu
dHNUeXBlOjpJT1N1cmZhY2U6IHsKLSAgICAgICAgICAgICAgICBhdXRvIHN1cmZhY2UgPSBXZWJD
b3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShtYWNoU2VuZFJpZ2h0
KSwgV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgICAgICAgICAgICAgYXV0byBz
dXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUo
bWFjaFNlbmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsK
ICAgICAgICAgICAgICAgICBsYXllci5jb250ZW50cyA9IHN1cmZhY2UgPyBzdXJmYWNlLT5hc0xh
eWVyQ29udGVudHMoKSA6IG5pbDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5j
cHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJs
ZUJpdG1hcENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKICAgICAKIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZShj
b25zdCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiB7Ci0g
ICAgcmV0dXJuIGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZS5jZ0NvbG9yU3BhY2UuZ2V0KCkgPzog
c1JHQkNvbG9yU3BhY2VSZWYoKTsKKyAgICByZXR1cm4gY29uZmlndXJhdGlvbi5jb2xvclNwYWNl
ID8gY29uZmlndXJhdGlvbi5jb2xvclNwYWNlLT5wbGF0Zm9ybUNvbG9yU3BhY2UoKSA6IFdlYkNv
cmU6OnNSR0JDb2xvclNwYWNlUmVmKCk7CiB9CiAKIHN0YXRpYyBib29sIHdhbnRzRXh0ZW5kZWRS
YW5nZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24p
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEuaAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvbG9yU3BhY2VEYXRhLmgJ
KG5vbmV4aXN0ZW50KQpAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDb2xv
clNwYWNlRGF0YV9oCi0jZGVmaW5lIENvbG9yU3BhY2VEYXRhX2gKLQotI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KLQotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEZWNvZGVyOwotY2xhc3MgRW5j
b2RlcjsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBDb2xvclNwYWNlRGF0YSB7
Ci0gICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIFdBUk5f
VU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBDb2xvclNwYWNlRGF0YSYp
OwotCi0gICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY2dDb2xvclNwYWNlOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBDb2xvclNwYWNlRGF0YV9oCgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEu
aApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZl
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9Db2xvclNwYWNlRGF0YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvQ29sb3JTcGFjZURhdGEubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9Db2xvclNwYWNlRGF0YS5tbQkobm9uZXhpc3RlbnQpCkBAIC0xLDYw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkNvbG9y
U3BhY2VEYXRhLmgiCi0KLSNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKLSNpbXBvcnQgIkRl
Y29kZXIuaCIKLSNpbXBvcnQgIkVuY29kZXIuaCIKLSNpbXBvcnQgPHd0Zi9FbnVtVHJhaXRzLmg+
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIENvbG9yU3BhY2VEYXRhOjplbmNvZGUoSVBD
OjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8
Ym9vbD4oY2dDb2xvclNwYWNlKTsKLSAgICBpZiAoY2dDb2xvclNwYWNlKQotICAgICAgICBlbmNv
ZGVyIDw8IGNnQ29sb3JTcGFjZTsKLX0KLQotYm9vbCBDb2xvclNwYWNlRGF0YTo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlciwgQ29sb3JTcGFjZURhdGEmIGNvbG9yU3BhY2VEYXRhKQotewot
ICAgIGJvb2wgaGFzQ0dDb2xvclNwYWNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzQ0dD
b2xvclNwYWNlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFoYXNDR0NvbG9y
U3BhY2UpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgUmV0YWluUHRyPENHQ29sb3JTcGFj
ZVJlZj4gY29sb3JTcGFjZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbG9yU3BhY2UpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgY29sb3JTcGFjZURhdGEuY2dDb2xvclNw
YWNlID0gV1RGTW92ZShjb2xvclNwYWNlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCShy
ZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkzLDcgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb2xvcjsKIGNsYXNzIEN1cnNvcjsKK2NsYXNzIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIEZsb2F0UXVhZDsKIGNsYXNzIEZsb2F0UmVjdDsK
IGNsYXNzIFJlZ2lvbjsKQEAgLTE4OCwxMCArMTg5LDYgQEAgY2xhc3MgV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eUNsaWVudDsKIGNsYXNzIEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlz
c2lvblJlcXVlc3Q7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENPQ09BKQotc3RydWN0IENvbG9y
U3BhY2VEYXRhOwotI2VuZGlmCi0KICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklF
VykKIHVzaW5nIExheWVySG9zdGluZ0NvbnRleHRJRCA9IHVpbnQzMl90OwogI2VuZGlmCkBAIC00
MjYsNyArNDIzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBDR1JlY3QgYm91bmRzT2ZMYXll
ckluTGF5ZXJCYWNrZWRXaW5kb3dDb29yZGluYXRlcyhDQUxheWVyICopIGNvbnN0ID0gMDsKIAot
ICAgIHZpcnR1YWwgQ29sb3JTcGFjZURhdGEgY29sb3JTcGFjZSgpID0gMDsKKyAgICB2aXJ0dWFs
IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKCkgPSAwOwogCiAgICAg
dmlydHVhbCB2b2lkIHNob3dQbGF0Zm9ybUNvbnRleHRNZW51KE5TTWVudSAqLCBXZWJDb3JlOjpJ
bnRQb2ludCkgPSAwOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5OCw2ICsxOTgsNyBAQCBuYW1lc3BhY2UgQVBJIHsK
IGNsYXNzIEF0dGFjaG1lbnQ7CiBjbGFzcyBDb250ZW50V29ybGQ7CiBjbGFzcyBDb250ZXh0TWVu
dUNsaWVudDsKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIEVycm9yOwogY2xh
c3MgRmluZENsaWVudDsKIGNsYXNzIEZpbmRNYXRjaGVzQ2xpZW50OwpAQCAtMzc3LDcgKzM3OCw2
IEBAIGNsYXNzIFdlYldoZWVsRXZlbnRDb2FsZXNjZXI7CiBjbGFzcyBXZWJzaXRlRGF0YVN0b3Jl
OwogCiBzdHJ1Y3QgQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGE7Ci1zdHJ1Y3QgQ29sb3JT
cGFjZURhdGE7CiBzdHJ1Y3QgRGF0YURldGVjdGlvblJlc3VsdDsKIHN0cnVjdCBEb2N1bWVudEVk
aXRpbmdDb250ZXh0Owogc3RydWN0IERvY3VtZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0OwpAQCAt
MTEzMiw3ICsxMTMyLDcgQEAgcHVibGljOgogICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCk7
CiAgICAgdm9pZCBhc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAKLSAg
ICBDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlKCk7CisgICAgV2ViQ29yZTo6RGVzdGluYXRpb25D
b2xvclNwYWNlIGNvbG9yU3BhY2UoKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09O
VFJPTFMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lP
Uy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2Vi
Vmlld0lPUy5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2lvcy9XS1dlYlZpZXdJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwMTQsNyArMTAxNCw3
IEBAIC0gKFJlZlB0cjxXZWJLaXQ6OlZpZXdTbmFwc2hvdD4pX3Rha2VWaWUKICNlbHNlCiAgICAg
V2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQgc25hcHNob3RGb3JtYXQgPSBXZWJDb3JlOjpJT1N1
cmZhY2U6OkZvcm1hdDo6QkdSQTsKICNlbmRpZgotICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6
OklPU3VyZmFjZTo6Y3JlYXRlKFdlYkNvcmU6OmV4cGFuZGVkSW50U2l6ZShzbmFwc2hvdFNpemUp
LCBXZWJDb3JlOjpzUkdCQ29sb3JTcGFjZVJlZigpLCBzbmFwc2hvdEZvcm1hdCk7CisgICAgYXV0
byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGUoV2ViQ29yZTo6ZXhwYW5kZWRJ
bnRTaXplKHNuYXBzaG90U2l6ZSksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpLCBzbmFwc2hvdEZvcm1hdCk7CiAgICAgaWYgKCFzdXJmYWNlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICBDQVJlbmRlclNlcnZlclJlbmRlckxheWVyV2l0aFRyYW5zZm9ybShNQUNI
X1BPUlRfTlVMTCwgc2VsZi5sYXllci5jb250ZXh0LmNvbnRleHRJZCwgcmVpbnRlcnByZXRfY2Fz
dDx1aW50NjRfdD4oc2VsZi5sYXllciksIHN1cmZhY2UtPnN1cmZhY2UoKSwgMCwgMCwgJnRyYW5z
Zm9ybSk7CkBAIC0zMDc5LDcgKzMwNzksNyBAQCAtICh2b2lkKV9zbmFwc2hvdFJlY3Q6KENHUmVj
dClyZWN0SW5WaWV3CiAgICAgTlNTdHJpbmcgKmRpc3BsYXlOYW1lID0gc2VsZi53aW5kb3cuc2Ny
ZWVuLmRpc3BsYXlDb25maWd1cmF0aW9uLm5hbWU7CiAgICAgaWYgKGRpc3BsYXlOYW1lICYmICFz
ZWxmLndpbmRvdy5oaWRkZW4pIHsKICAgICAgICAgVHJhY2VTY29wZSBzbmFwc2hvdFNjb3BlKFJl
bmRlclNlcnZlclNuYXBzaG90U3RhcnQsIFJlbmRlclNlcnZlclNuYXBzaG90RW5kKTsKLSAgICAg
ICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGUoV2ViQ29yZTo6ZXhw
YW5kZWRJbnRTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZShpbWFnZVNpemUpKSwgV2ViQ29yZTo6c1JH
QkNvbG9yU3BhY2VSZWYoKSk7CisgICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3Vy
ZmFjZTo6Y3JlYXRlKFdlYkNvcmU6OmV4cGFuZGVkSW50U2l6ZShXZWJDb3JlOjpGbG9hdFNpemUo
aW1hZ2VTaXplKSksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAg
ICAgICAgaWYgKCFzdXJmYWNlKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxs
cHRyKTsKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtOTQsNiAr
OTQsNyBAQCBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlOwogY2xhc3MgSW50UG9pbnQ7CiBzdHJ1Y3Qg
U2hhcmVEYXRhV2l0aFBhcnNlZFVSTDsKIApAQCAtMTY4LDcgKzE2OSw2IEBAIGNsYXNzIFdlYkZy
YW1lUHJveHk7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIGNs
YXNzIFdlYlByb2Nlc3NQcm94eTsKLXN0cnVjdCBDb2xvclNwYWNlRGF0YTsKIHN0cnVjdCBXZWJI
aXRUZXN0UmVzdWx0RGF0YTsKIAogZW51bSBjbGFzcyBDb250aW51ZVVuc2FmZUxvYWQgOiBib29s
OwpAQCAtMzEzLDcgKzMxMyw3IEBAIHB1YmxpYzoKIAogICAgIE5TVmlldyAqaGl0VGVzdChDR1Bv
aW50KTsKIAotICAgIENvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2UoKTsKKyAgICBXZWJDb3JlOjpE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpOwogCiAgICAgdm9pZCBzZXRVbmRlcmxh
eUNvbG9yKE5TQ29sb3IgKik7CiAgICAgTlNDb2xvciAqdW5kZXJsYXlDb2xvcigpIGNvbnN0OwpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiAjaW1wb3J0ICJBUElMZWdh
Y3lDb250ZXh0SGlzdG9yeUNsaWVudC5oIgogI2ltcG9ydCAiQVBJTmF2aWdhdGlvbi5oIgogI2lt
cG9ydCAiQXBwS2l0U1BJLmgiCi0jaW1wb3J0ICJDb2xvclNwYWNlRGF0YS5oIgogI2ltcG9ydCAi
Q29yZVRleHRIZWxwZXJzLmgiCiAjaW1wb3J0ICJGb250SW5mby5oIgogI2ltcG9ydCAiRnVsbHNj
cmVlbkNsaWVudC5oIgpAQCAtOTAsNiArODksNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1h
Yy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvclNlcmlhbGl6YXRpb24uaD4KICNpbXBvcnQgPFdl
YkNvcmUvQ29tcG9zaXRpb25IaWdobGlnaHQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGVzdGluYXRp
b25Db2xvclNwYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RpY3Rpb25hcnlMb29rdXAuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0l0ZW0uaD4K
QEAgLTI1MDAsNyArMjUwMCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnBvc3RGYWtlTW91c2VNb3Zl
ZEV2ZW4KICAgICBtX3BhZ2UtPmhhbmRsZU1vdXNlRXZlbnQod2ViRXZlbnQpOwogfQogCi1Db2xv
clNwYWNlRGF0YSBXZWJWaWV3SW1wbDo6Y29sb3JTcGFjZSgpCitXZWJDb3JlOjpEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgV2ViVmlld0ltcGw6OmNvbG9yU3BhY2UoKQogewogICAgIGlmICghbV9jb2xv
clNwYWNlKSB7CiAgICAgICAgIGlmIChtX3RhcmdldFdpbmRvd0Zvck1vdmVQcmVwYXJhdGlvbikK
QEAgLTI1MTEsMTAgKzI1MTEsNyBAQCBDb2xvclNwYWNlRGF0YSBXZWJWaWV3SW1wbDo6Y29sb3JT
cGFjZSgpCiAgICAgICAgICAgICBtX2NvbG9yU3BhY2UgPSBbTlNTY3JlZW4gbWFpblNjcmVlbl0u
Y29sb3JTcGFjZTsKICAgICB9CiAKLSAgICBDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlRGF0YTsK
LSAgICBjb2xvclNwYWNlRGF0YS5jZ0NvbG9yU3BhY2UgPSBbbV9jb2xvclNwYWNlIENHQ29sb3JT
cGFjZV07Ci0KLSAgICByZXR1cm4gY29sb3JTcGFjZURhdGE7CisgICAgcmV0dXJuIFdlYkNvcmU6
OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSB7IFttX2NvbG9yU3BhY2UgQ0dDb2xvclNwYWNlXSB9Owog
fQogCiB2b2lkIFdlYlZpZXdJbXBsOjpzZXRVbmRlcmxheUNvbG9yKE5TQ29sb3IgKnVuZGVybGF5
Q29sb3IpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlSG9zdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQkocmV2aXNpb24gMjc3OTE5
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZUhvc3QubW0JKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbXBvcnQgIldl
YlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0IDxRdWFy
dHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNw
YWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dENHLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0lPU3VyZmFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUxheWVyLmg+CkBA
IC0zMTcsNyArMzE4LDcgQEAgc3RhdGljIHZvaWQgcmVjdXJzaXZlbHlNYXBJT1N1cmZhY2VCYWNr
aQogewogICAgIGlmIChsYXllci5jb250ZW50cyAmJiBDRkdldFR5cGVJRCgoX19icmlkZ2UgQ0ZU
eXBlUmVmKWxheWVyLmNvbnRlbnRzKSA9PSBDQU1hY2hQb3J0R2V0VHlwZUlEKCkpIHsKICAgICAg
ICAgTWFjaFNlbmRSaWdodCBwb3J0ID0gTWFjaFNlbmRSaWdodDo6Y3JlYXRlKENBTWFjaFBvcnRH
ZXRQb3J0KChfX2JyaWRnZSBDQU1hY2hQb3J0UmVmKWxheWVyLmNvbnRlbnRzKSk7Ci0gICAgICAg
IGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChX
VEZNb3ZlKHBvcnQpLCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICAgICAgYXV0byBzdXJmYWNl
ID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUocG9ydCks
IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICAgICAgbGF5ZXIu
Y29udGVudHMgPSBzdXJmYWNlID8gc3VyZmFjZS0+YXNMYXllckNvbnRlbnRzKCkgOiBuaWw7CiAg
ICAgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxN
YWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAg
cHJpdmF0ZToKICAgICBib29sIGlzVmlld0luV2luZG93KCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBp
c1Zpc3VhbGx5SWRsZSgpIG92ZXJyaWRlOwogICAgIExheWVySG9zdGluZ01vZGUgdmlld0xheWVy
SG9zdGluZ01vZGUoKSBvdmVycmlkZTsKLSAgICBDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlKCkg
b3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2Uo
KSBvdmVycmlkZTsKICAgICB2b2lkIHNldFJlbW90ZUxheWVyVHJlZVJvb3ROb2RlKFJlbW90ZUxh
eWVyVHJlZU5vZGUqKSBvdmVycmlkZTsKICAgICBDQUxheWVyICphY2NlbGVyYXRlZENvbXBvc2l0
aW5nUm9vdExheWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0JKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBAQAogCiAjaW1wb3J0ICJBUElIaXRUZXN0UmVzdWx0
LmgiCiAjaW1wb3J0ICJBcHBLaXRTUEkuaCIKLSNpbXBvcnQgIkNvbG9yU3BhY2VEYXRhLmgiCiAj
aW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJEb3dubG9hZFByb3h5LmgiCiAjaW1w
b3J0ICJEcmF3aW5nQXJlYVByb3h5LmgiCkBAIC02Niw2ICs2NSw3IEBACiAjaW1wb3J0IDxXZWJD
b3JlL0JpdG1hcEltYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yTWFjLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0N1cnNvci5oPgorI2ltcG9ydCA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGljdGlvbmFyeUxvb2t1cC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9EcmFnSXRlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KQEAgLTI0NCw3
ICsyNDQsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjp2aWV3V2lsbE1vdmVUb0Fub3RoCiAgICAg
Y2xlYXJBbGxFZGl0Q29tbWFuZHMoKTsKIH0KIAotQ29sb3JTcGFjZURhdGEgUGFnZUNsaWVudElt
cGw6OmNvbG9yU3BhY2UoKQorV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIFBhZ2VDbGll
bnRJbXBsOjpjb2xvclNwYWNlKCkKIHsKICAgICByZXR1cm4gbV9pbXBsLT5jb2xvclNwYWNlKCk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWFQcm94eS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhUHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogCi0jaW1wb3J0ICJDb2xvclNwYWNlRGF0YS5oIgogI2lt
cG9ydCAiRHJhd2luZ0FyZWFNZXNzYWdlcy5oIgogI2ltcG9ydCAiRHJhd2luZ0FyZWFQcm94eU1l
c3NhZ2VzLmgiCiAjaW1wb3J0ICJMYXllclRyZWVDb250ZXh0LmgiCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0JKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBQTEFURk9STShNQUMpCiAKICNpbXBv
cnQgIkFQSVVJQ2xpZW50LmgiCi0jaW1wb3J0ICJDb2xvclNwYWNlRGF0YS5oIgogI2ltcG9ydCAi
Q29ubmVjdGlvbi5oIgogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiRWRpdG9y
U3RhdGUuaCIKQEAgLTUyLDYgKzUxLDcgQEAKICNpbXBvcnQgIldlYlByZWZlcmVuY2VzS2V5cy5o
IgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0IDxXZWJDb3JlL0F0dHJpYnV0
ZWRTdHJpbmcuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0RpY3Rpb25hcnlMb29rdXAuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJh
Z0l0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgpAQCAtMzQ0LDcgKzM0
NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojphc3Npc3RpdmVUZWNobm9sb2d5TWEKICAgICBwYWdl
Q2xpZW50KCkuYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlcigpOwogfQogCi1D
b2xvclNwYWNlRGF0YSBXZWJQYWdlUHJveHk6OmNvbG9yU3BhY2UoKQorV2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlIFdlYlBhZ2VQcm94eTo6Y29sb3JTcGFjZSgpCiB7CiAgICAgcmV0dXJu
IHBhZ2VDbGllbnQoKS5jb2xvclNwYWNlKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTI2MzQsOCArMjYzNCw2IEBACiAJCTFBMjU2RTM2MThBMUE3ODgwMDZGQjkyMiAvKiBX
S05hdmlnYXRpb25BY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tO
YXZpZ2F0aW9uQWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMjU2RTM5
MThBMUE3REYwMDZGQjkyMiAvKiBXS05hdmlnYXRpb25BY3Rpb25JbnRlcm5hbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS05hdmlnYXRpb25BY3Rpb25JbnRlcm5hbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTI4QjhDQjFDODBFRDU5MDA2RkQ3NDMgLyog
V2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTFBMkE0QUZEMTU4NjkzOTIwMDkwQzlFOSAvKiBDb2xvclNwYWNlRGF0YS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvbG9yU3BhY2VEYXRhLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkxQTJBNEFGRTE1ODY5MzkyMDA5MEM5RTkgLyogQ29sb3JT
cGFjZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JTcGFjZURh
dGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyQkI2Q0MxNDExN0E1RjAwMEYz
NUQ0IC8qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQTJCQjZDRTE0MTE3QjREMDAwRjM1RDQgLyogUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3Bw
OyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1l
c3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJ
CTFBMkJCNkNGMTQxMTdCNEQwMDBGMzVENCAvKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3Nh
Z2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OwpAQCAtMTA0MzAsOCArMTA0MjgsNiBAQAogCQkJCTlGNTRGODhFMTY0ODhFODcwMDdERjgx
QSAvKiBBdXhpbGlhcnlQcm9jZXNzTWFjLm1tICovLAogCQkJCUNFMTFBRDUxMUNCQzQ4MkYwMDY4
MUVFNSAvKiBDb2RlU2lnbmluZy5oICovLAogCQkJCUNFMTFBRDRGMUNCQzQ3RjgwMDY4MUVFNSAv
KiBDb2RlU2lnbmluZy5tbSAqLywKLQkJCQkxQTJBNEFGRTE1ODY5MzkyMDA5MEM5RTkgLyogQ29s
b3JTcGFjZURhdGEuaCAqLywKLQkJCQkxQTJBNEFGRDE1ODY5MzkyMDA5MEM5RTkgLyogQ29sb3JT
cGFjZURhdGEubW0gKi8sCiAJCQkJMUFDNzVBMUMxQjMzNjk1RTAwNTY3NDVCIC8qIEhhbmdEZXRl
Y3Rpb25EaXNhYmxlck1hYy5tbSAqLywKIAkJCQkyRDUwMzY1RDFCQ0M3OTNGMDBFMjBCQjMgLyog
TmF0aXZlV2ViR2VzdHVyZUV2ZW50TWFjLm1tICovLAogCQkJCUMwMkJGRjFEMTI1MTUwMkUwMDlD
Q0JFQSAvKiBOYXRpdmVXZWJLZXlib2FyZEV2ZW50TWFjLm1tICovLApJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMSArNDUs
NyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJTCiAKIFNoYXJlYWJs
ZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6
OmNvbmZpZ3VyYXRpb24oY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKLSAgICBTaGFy
ZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKLSNpZiBQTEFURk9STShD
T0NPQSkKLSAgICBjb25maWd1cmF0aW9uLmNvbG9yU3BhY2UgPSB7IGNhY2hlZENHQ29sb3JTcGFj
ZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpIH07Ci0jZW5kaWYKLSAgICByZXR1cm4gY29uZmlndXJh
dGlvbjsKKyAgICByZXR1cm4geyBwYXJhbWV0ZXJzLmNvbG9yU3BhY2UgfTsKIH0KIAogSW50U2l6
ZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNhbGN1bGF0ZVNhZmVCYWNrZW5k
U2l6ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQpJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cHJlcGEKICAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byBkaXNwbGF5QnVmZmVyID0gSU9TdXJmYWNlOjpj
cmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCksIHNSR0JD
b2xvclNwYWNlUmVmKCkpOworICAgIGF1dG8gZGlzcGxheUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3Jl
YXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpLCBXZWJDb3Jl
OjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgaWYgKGRpc3BsYXlCdWZmZXIp
IHsKICAgICAgICAgYXV0byYgc2MgPSBwbGF0Zm9ybVN3YXBDaGFpbigpOwogICAgICAgICBzYy5y
ZWN5Y2xlQnVmZmVyKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgY2xh
c3MgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSA6IHB1YmxpYyBXZQogICAgIHVzaW5nIEJhc2VEaXNw
bGF5TGlzdEltYWdlQnVmZmVyOjpyZXNvbHV0aW9uU2NhbGU7CiAKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmUHRyPFJlbW90ZUltYWdlQnVmZmVyUHJveHk+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpG
bG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRp
b25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0
LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eSkKKyAgICBzdGF0aWMgUmVmUHRyPFJlbW90ZUltYWdlQnVmZmVyUHJveHk+IGNyZWF0ZShjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3Qg
V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhl
bEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkpCiAgICAgewogICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMgeyBzaXplLCByZXNvbHV0aW9u
U2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0IH07CiAgICAgICAgIGlmIChCYWNrZW5kVHlw
ZTo6Y2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMpLmlzRW1wdHkoKSkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAJKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDcgKzEzMCw3IEBAIHZv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGUKICAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDcmVhdGVJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5s
b2dpY2FsU2l6ZSgpLCBpbWFnZUJ1ZmZlci5yZW5kZXJpbmdNb2RlKCksIGltYWdlQnVmZmVyLnJl
c29sdXRpb25TY2FsZSgpLCBpbWFnZUJ1ZmZlci5jb2xvclNwYWNlKCksIGltYWdlQnVmZmVyLnBp
eGVsRm9ybWF0KCksIGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKSwg
cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1l
c3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZm
ZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3Qg
RmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0
IHBpeGVsRm9ybWF0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5n
TW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpCiB7CiAg
ICAgUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKIApJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00MywxNSArNDMsMTkgQEAKICNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiBj
bGFzcyBEaXNwbGF5TGlzdDsKIGNsYXNzIEl0ZW07CiB9CisKK2NsYXNzIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTsKIGNsYXNzIEZsb2F0U2l6ZTsKIGNsYXNzIFBpeGVsQnVmZmVyOworCiBlbnVtIGNs
YXNzIEFscGhhUHJlbXVsdGlwbGljYXRpb24gOiB1aW50OF90OwotZW51bSBjbGFzcyBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UgOiB1aW50OF90OwogZW51bSBjbGFzcyBSZW5kZXJpbmdNb2RlIDogYm9v
bDsKKwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTkyLDcgKzk2LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jikgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSBzZW50LgotICAgIFJlZlB0cjxX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBX
ZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0KTsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiwgV2ViQ29yZTo6
UGl4ZWxGb3JtYXQpOwogICAgIFN0cmluZyBnZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXIoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBXZWJDb3JlOjpQcmVz
ZXJ2ZVJlc29sdXRpb24sIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGdldERhdGFGb3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcik7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmll
ciBmbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpE
aXNwbGF5TGlzdCYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVy
U2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJs
ZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxl
TWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcg
QEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcAogICAgIGlmIChiYWNr
ZW5kU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBz
dXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoYmFja2VuZFNpemUsIGJhY2tlbmRTaXplLCBjYWNo
ZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSwgSU9TdXJmYWNlOjpmb3JtYXRG
b3JQaXhlbEZvcm1hdChwYXJhbWV0ZXJzLnBpeGVsRm9ybWF0KSk7CisgICAgYXV0byBzdXJmYWNl
ID0gSU9TdXJmYWNlOjpjcmVhdGUoYmFja2VuZFNpemUsIGJhY2tlbmRTaXplLCBwYXJhbWV0ZXJz
LmNvbG9yU3BhY2UsIElPU3VyZmFjZTo6Zm9ybWF0Rm9yUGl4ZWxGb3JtYXQocGFyYW1ldGVycy5w
aXhlbEZvcm1hdCkpOwogICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKQEAgLTY1LDcgKzY1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxl
TWFwcAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvIHN1cmZhY2Ug
PSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShXVEY6OmdldDxNYWNoU2Vu
ZFJpZ2h0PihoYW5kbGUpKSwgY2FjaGVkQ0dDb2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JTcGFj
ZSkpOworICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChX
VEZNb3ZlKFdURjo6Z2V0PE1hY2hTZW5kUmlnaHQ+KGhhbmRsZSkpLCBwYXJhbWV0ZXJzLmNvbG9y
U3BhY2UpOwogICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjgsMTMgKzI4LDEyIEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEhBVkUoQVZBU1NFVFJFQURFUikKIAotI2luY2x1ZGUgIkNvbG9yU3BhY2VEYXRhLmgiCiAj
aW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVJbWFnZURl
Y29kZXJBVkZQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FWQXNz
ZXRNSU1FVHlwZUNhY2hlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlQ0cuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvSU9TdXJmYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZVR5cGVzLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CkBAIC0xNjgsMTQgKzE2NywxNCBAQCBQbGF0
Zm9ybUltYWdlUHRyIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6CiAgICAgICAgICAgICByZXR1cm47
CiAKICAgICAgICAgT3B0aW9uYWw8TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0OwotICAgICAgICBD
b2xvclNwYWNlRGF0YSBjb2xvclNwYWNlOworICAgICAgICBPcHRpb25hbDxEZXN0aW5hdGlvbkNv
bG9yU3BhY2U+IGNvbG9yU3BhY2U7CiAgICAgICAgIGlmICghbV9ncHVQcm9jZXNzQ29ubmVjdGlv
bi0+Y29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVJbWFnZURlY29kZXJBVkZQ
cm94eTo6Q3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgobV9pZGVudGlmaWVyLCBpbmRleCksIE1lc3Nh
Z2VzOjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Q3JlYXRlRnJhbWVJbWFnZUF0SW5kZXg6
OlJlcGx5KHNlbmRSaWdodCwgY29sb3JTcGFjZSksIDApKQogICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIGlmICghc2VuZFJpZ2h0KQorICAgICAgICBpZiAoIXNlbmRSaWdodCB8fCAhY29s
b3JTcGFjZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBhdXRvIHN1cmZhY2UgPSBX
ZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZSgqc2VuZFJpZ2h0
KSwgY29sb3JTcGFjZS5jZ0NvbG9yU3BhY2UuZ2V0KCkpOworICAgICAgICBhdXRvIHN1cmZhY2Ug
PSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZSgqc2VuZFJp
Z2h0KSwgV1RGTW92ZSgqY29sb3JTcGFjZSkpOwogICAgICAgICBpZiAoIXN1cmZhY2UpCiAgICAg
ICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvY29jb2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9jb2NvYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGVDb2NvYS5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9jb2NvYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVDb2NvYS5tbQko
d29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IE1lZGlh
UGxheWVyUHJpdmF0ZVJlCiAgICAgaWYgKCFzZW5kUmlnaHQpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9t
U2VuZFJpZ2h0KFdURk1vdmUoKnNlbmRSaWdodCksIHNSR0JDb2xvclNwYWNlUmVmKCkpOworICAg
IGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChX
VEZNb3ZlKCpzZW5kUmlnaHQpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSk7CiAgICAgaWYgKCFzdXJmYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtOTEs
NyArOTEsNyBAQCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gTWVkaWFQbGF5ZXJQCiAgICAg
aWYgKCFzZW5kUmlnaHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBzdXJm
YWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoKnNl
bmRSaWdodCksIG51bGxwdHIpOworICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFj
ZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKCpzZW5kUmlnaHQpLCBXZWJDb3JlOjpEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgaWYgKCFzdXJmYWNlKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL1BERlBsdWdpbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC02NDYsNyArNjQ2LDcgQEAgaW5saW5lIFBERlBsdWdpbjo6UERGUGx1Z2luKFdlYkZyYW1lJiBm
cgogICAgIFttX2NvbnRhaW5lckxheWVyIGFkZFN1YmxheWVyOm1fc2Nyb2xsQ29ybmVyTGF5ZXIu
Z2V0KCldOwogICAgIGlmIChbbV9wZGZMYXllckNvbnRyb2xsZXIgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihzZXREZXZpY2VDb2xvclNwYWNlOildKSB7CiAgICAgICAgIGF1dG8gdmlldyA9
IGZyYW1lLmNvcmVGcmFtZSgpLT52aWV3KCk7Ci0gICAgICAgIFttX3BkZkxheWVyQ29udHJvbGxl
ciBzZXREZXZpY2VDb2xvclNwYWNlOnNjcmVlbkNvbG9yU3BhY2UodmlldyldOworICAgICAgICBb
bV9wZGZMYXllckNvbnRyb2xsZXIgc2V0RGV2aWNlQ29sb3JTcGFjZTpzY3JlZW5Db2xvclNwYWNl
KHZpZXcpLnBsYXRmb3JtQ29sb3JTcGFjZSgpXTsKICAgICB9CiAKICNpZiBIQVZFKElOQ1JFTUVO
VEFMX1BERl9BUElTKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5j
cHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NywxMiArNTcsNyBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTaGFyZWFibGVCCiAg
ICAgfQogCiAgICAgLy8gRklYTUU6IE9ubHkgc2VsZWN0IEV4dGVuZGVkQ29sb3Igb24gaW1hZ2Vz
IGtub3duIHRvIG5lZWQgd2lkZSBnYW11dC4KLSAgICBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3Vy
YXRpb24gYml0bWFwQ29uZmlndXJhdGlvbjsKLSNpZiBVU0UoQ0cpCi0gICAgYml0bWFwQ29uZmln
dXJhdGlvbi5jb2xvclNwYWNlLmNnQ29sb3JTcGFjZSA9IHNjcmVlbkNvbG9yU3BhY2UocmVuZGVy
SW1hZ2UuZnJhbWUoKS5tYWluRnJhbWUoKS52aWV3KCkpOwotI2VuZGlmCi0KLSAgICBhdXRvIHNo
YXJlZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoYml0
bWFwU2l6ZSksIGJpdG1hcENvbmZpZ3VyYXRpb24pOworICAgIGF1dG8gc2hhcmVkQml0bWFwID0g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShiaXRtYXBTaXplKSwgeyBz
Y3JlZW5Db2xvclNwYWNlKHJlbmRlckltYWdlLmZyYW1lKCkubWFpbkZyYW1lKCkudmlldygpKSB9
KTsKICAgICBpZiAoIXNoYXJlZEJpdG1hcCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTI3LDcgKzkyNyw3IEBAIFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRv
ckZhY3RvcnkqIFcKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAotUmVmUHRyPEltYWdlQnVm
ZmVyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlIHB1cnBv
c2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KSBjb25zdAorUmVmUHRyPEltYWdlQnVmZmVyPiBX
ZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwg
UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNw
YWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29uc3QKIHsKICAgICBpZiAoIVdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihwdXJwb3NlKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCShyZXZpc2lvbiAy
Nzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0NCw3ICsyNDQsNyBAQCBwcml2YXRlOgog
ICAgIFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkqIGRpc3BsYXlSZWZyZXNo
TW9uaXRvckZhY3RvcnkoKSBjb25zdCBmaW5hbDsKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
LSAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIFdlYkNvcmU6OlJl
bmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRp
b25Db2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCkgY29uc3QgZmluYWw7CisgICAgUmVm
UHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBXZWJDb3JlOjpSZW5kZXJpbmdQ
dXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9u
Q29sb3JTcGFjZSYsIFdlYkNvcmU6OlBpeGVsRm9ybWF0KSBjb25zdCBmaW5hbDsKICNpZiBFTkFC
TEUoV0VCR0wpCiAgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVH
cmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCBob3N0V2luZG93RGlzcGxheUlEKSBjb25z
dCBmaW5hbDsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQkocmV2
aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02OCw5ICs2OCw3IEBA
IHVzaW5nIERyYWdJbWFnZSA9IENHSW1hZ2VSZWY7CiAKIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBjb252ZXJ0RHJhZ0ltYWdlVG9CaXRtYXAoRHJhZ0ltYWdlIGltYWdlLCBjb25zdCBJ
bnRTaXplJiBzaXplLCBGcmFtZSYgZnJhbWUpCiB7Ci0gICAgU2hhcmVhYmxlQml0bWFwOjpDb25m
aWd1cmF0aW9uIGJpdG1hcENvbmZpZ3VyYXRpb247Ci0gICAgYml0bWFwQ29uZmlndXJhdGlvbi5j
b2xvclNwYWNlLmNnQ29sb3JTcGFjZSA9IHNjcmVlbkNvbG9yU3BhY2UoZnJhbWUubWFpbkZyYW1l
KCkudmlldygpKTsKLSAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hh
cmVhYmxlKHNpemUsIGJpdG1hcENvbmZpZ3VyYXRpb24pOworICAgIGF1dG8gYml0bWFwID0gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc2l6ZSwgeyBzY3JlZW5Db2xvclNwYWNlKGZy
YW1lLm1haW5GcmFtZSgpLnZpZXcoKSkgfSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9E
cmF3aW5nQXJlYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUw
LDcgQEAgY2xhc3MgRGVjb2RlcjsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRGVz
dGluYXRpb25Db2xvclNwYWNlOwogY2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9yOwogY2xhc3Mg
RnJhbWU7CiBjbGFzcyBGcmFtZVZpZXc7CkBAIC02MCw3ICs2MSw2IEBAIHN0cnVjdCBWaWV3cG9y
dEF0dHJpYnV0ZXM7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdHJ1Y3QgQ29sb3JTcGFjZURh
dGE7CiBjbGFzcyBMYXllclRyZWVIb3N0Owogc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnM7CiBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9yZTsKQEAgLTE4MCw3ICsxODAsNyBAQCBwcml2
YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIFVzZWQgYnkgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWEuCiAgICAgdmlydHVhbCB2b2lkIHNldERldmljZVNjYWxlRmFjdG9yKGZs
b2F0KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29sb3JTcGFjZShjb25zdCBDb2xvclNwYWNl
RGF0YSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRDb2xvclNwYWNlKE9wdGlvbmFsPFdlYkNv
cmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4pIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGFkanVz
dFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBX
ZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgeyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgkocmV2
aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2lu
Z0FyZWEubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgbWVzc2Fn
ZXMgLT4gRHJhd2luZ0FyZWEgTm90UmVmQ291bnRlZCB7CiAgICAgLy8gVXNlZCBieSBUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS4KICAgICBVcGRhdGVHZW9tZXRyeShXZWJDb3JlOjpJbnRT
aXplIHZpZXdTaXplLCBib29sIGZsdXNoU3luY2hyb25vdXNseSwgTWFjaFNlbmRSaWdodCBmZW5j
ZVBvcnQpCiAgICAgU2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3Ip
Ci0gICAgU2V0Q29sb3JTcGFjZShzdHJ1Y3QgV2ViS2l0OjpDb2xvclNwYWNlRGF0YSBjb2xvclNw
YWNlKQorICAgIFNldENvbG9yU3BhY2Uoc3RydWN0IE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0
aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZSkKICAgICBTZXRWaWV3RXhwb3NlZFJlY3QoT3B0aW9u
YWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QpCiAKICAgICBBZGp1c3RUcmFu
c2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI1OTgsNyArMjU5OCw3IEBAIHN0YXRpYyBTaGFyZWFibGVC
aXRtYXA6OkNvbmZpZ3VyYXRpb24gc24KICAgICBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRp
b24gY29uZmlndXJhdGlvbjsKICNpZiBVU0UoQ0cpCiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hv
dE9wdGlvbnNVc2VTY3JlZW5Db2xvclNwYWNlKQotICAgICAgICBjb25maWd1cmF0aW9uLmNvbG9y
U3BhY2UuY2dDb2xvclNwYWNlID0gc2NyZWVuQ29sb3JTcGFjZShwYWdlLmNvcmVQYWdlKCktPm1h
aW5GcmFtZSgpLnZpZXcoKSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZSA9IHNj
cmVlbkNvbG9yU3BhY2UocGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCkpOwogI2Vu
ZGlmCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTk4LDcgKzk4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN1c3Bl
bmRQYWludGluZygpOwogICAgIHZvaWQgcmVzdW1lUGFpbnRpbmcoKTsKICAgICB2b2lkIHNldExh
eWVySG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9kZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRD
b2xvclNwYWNlKGNvbnN0IENvbG9yU3BhY2VEYXRhJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRD
b2xvclNwYWNlKE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4pIG92ZXJy
aWRlOwogICAgIHZvaWQgYWRkRmVuY2UoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0Jikgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIGFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRChDYWxsYmFja0lEKSBvdmVy
cmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0JKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9U
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyAr
MjgsNiBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogCi0jaW1wb3J0ICJDb2xvclNwYWNlRGF0YS5o
IgogI2ltcG9ydCAiRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmgiCiAjaW1wb3J0ICJEcmF3aW5n
QXJlYVByb3h5TWVzc2FnZXMuaCIKICNpbXBvcnQgIkxheWVySG9zdGluZ0NvbnRleHQuaCIKQEAg
LTQ1LDYgKzQ0LDcgQEAKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgog
I2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RlYnVn
UGFnZU92ZXJsYXlzLmg+CisjaW1wb3J0IDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcu
aD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CkBAIC05MSw2ICs5MSw3IEBA
IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpUaWxlZENvcmUKICAgICB9KTsKIAogICAg
IHVwZGF0ZUxheWVySG9zdGluZ0NvbnRleHQoKTsKKyAgICAKICAgICBzZXRDb2xvclNwYWNlKHBh
cmFtZXRlcnMuY29sb3JTcGFjZSk7CiAKICAgICBpZiAoYXV0byB2aWV3RXhwb3NlZFJlY3QgPSBw
YXJhbWV0ZXJzLnZpZXdFeHBvc2VkUmVjdCkKQEAgLTY1MCw5ICs2NTEsOSBAQCB2b2lkIFRpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRMCiAgICAgc2VuZChNZXNzYWdlczo6RHJhd2lu
Z0FyZWFQcm94eTo6VXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoMCwgbGF5ZXJUcmVl
Q29udGV4dCkpOwogfQogCi12b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRD
b2xvclNwYWNlKGNvbnN0IENvbG9yU3BhY2VEYXRhJiBjb2xvclNwYWNlKQordm9pZCBUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0Q29sb3JTcGFjZShPcHRpb25hbDxXZWJDb3JlOjpE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2UpCiB7Ci0gICAgbV9sYXllckhvc3RpbmdD
b250ZXh0LT5zZXRDb2xvclNwYWNlKGNvbG9yU3BhY2UuY2dDb2xvclNwYWNlLmdldCgpKTsKKyAg
ICBtX2xheWVySG9zdGluZ0NvbnRleHQtPnNldENvbG9yU3BhY2UoY29sb3JTcGFjZSA/IGNvbG9y
U3BhY2UtPnBsYXRmb3JtQ29sb3JTcGFjZSgpIDogbnVsbHB0cik7CiB9CiAKIFJlZlB0cjxXZWJD
b3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I+IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
OjpjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlE
KQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjc3OTIwKQorKysg
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMjEtMDUtMjIgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisg
ICAgICAgIENvbnZlcnQgRGVzdGluYXRpb25Db2xvclNwYWNlIGZyb20gYW4gZW51bSB0byBjbGFz
cyB3cmFwcGluZyBhIHBsYXRmb3JtIGNvbG9yIHNwYWNlIChDR0NvbG9yU3BhY2VSZWYgZm9yIENH
IHBvcnRzLCBldGMuKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI2MTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAgICAg
KFdlYkNvbnRleHRNZW51Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tl
ckl0ZW0pOgorICAgICAgICBVcGRhdGUgZm9yIG5ldyBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY2xh
c3MuCisKIDIwMjEtMDUtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzCklu
ZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVu
dUNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQml0
bWFwSW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29udGV4dE1lbnUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvQ29udGV4dE1lbnVDb250cm9sbGVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL0Rlc3RpbmF0
aW9uQ29sb3JTcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KQEAgLTIxMyw3
ICsyMTQsNyBAQCBSZXRhaW5QdHI8TlNJbWFnZT4gV2ViQ29udGV4dE1lbnVDbGllbnQ6CiAgICAg
ICAgIHJldHVybiBuaWw7CiAKICAgICAvLyBUaGlzIGlzIGVmZmVjdGl2ZWx5IGEgc25hcHNob3Qs
IGFuZCB3aWxsIGJlIHBhaW50ZWQgaW4gYW4gdW5hY2NlbGVyYXRlZCBmYXNoaW9uIGluIGxpbmUg
d2l0aCBGcmFtZVNuYXBzaG90dGluZy4KLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGUocmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUocmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVu
YWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1h
dDo6QkdSQTgpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbmlsOwogCkluZGV4
OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNzc5MjApCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NCBAQAorMjAyMS0wNS0yMiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAg
ICAgQ29udmVydCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdy
YXBwaW5nIGEgcGxhdGZvcm0gY29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9y
dHMsIGV0Yy4pCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjYxNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3Bw
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIFVwYXRlIHRlc3QgdG8g
dXNlIG5ldyBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgdHlwZS4KKwogMjAyMS0wNS0yMiAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3
aXRoIExvY2tlciBpbiBsb2NhbCB2YXJpYWJsZXMKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2lvcy9QaXhlbER1bXBTdXBwb3J0SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2lvcy9QaXhlbER1bXBTdXBwb3J0SU9TLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBU
b29scy9EdW1wUmVuZGVyVHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIw
MDcsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0IDxDb21tb25Dcnlw
dG8vQ29tbW9uRGlnZXN0Lmg+CiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvVVRDb3JlVHlw
ZXMuaD4KICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250
ZXh0Q0cuaD4KICNpbXBvcnQgPFdlYkNvcmUvSU9TdXJmYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1BsYXRmb3JtU2NyZWVuLmg+CkBAIC03MSw3ICs3Miw3IEBAIFJlZlB0cjxCaXRtYXBDb250ZXh0
PiBjcmVhdGVCaXRtYXBDb250ZXgKICNlbHNlCiAgICAgV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3Jt
YXQgc25hcHNob3RGb3JtYXQgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdDo6QkdSQTsKICNl
bmRpZgotICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlKFdlYkNv
cmU6OmV4cGFuZGVkSW50U2l6ZShzbmFwc2hvdFNpemUpLCBXZWJDb3JlOjpzUkdCQ29sb3JTcGFj
ZVJlZigpLCBzbmFwc2hvdEZvcm1hdCk7CisgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9T
dXJmYWNlOjpjcmVhdGUoV2ViQ29yZTo6ZXhwYW5kZWRJbnRTaXplKHNuYXBzaG90U2l6ZSksIFdl
YkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBzbmFwc2hvdEZvcm1hdCk7CiAg
ICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNnSW1hZ2UgPSBzdXJmYWNlLT5jcmVhdGVJbWFnZSgp
OwogCiAgICAgdm9pZCogYml0bWFwQnVmZmVyID0gbnVsbHB0cjsKSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRl
c3RzQ0cuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NiArMjcsNyBAQAogCiAjaWYgVVNFKENHKQogCisjaW5jbHVkZSA8V2ViQ29yZS9EZXN0aW5hdGlv
bkNvbG9yU3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5
TGlzdFJlcGxheWVyLmg+CkBAIC00Niw4ICs0Nyw4IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywg
UmVwbGF5V2l0aE1pc3NpbmcKIHsKICAgICBGbG9hdFJlY3QgY29udGV4dEJvdW5kcyB7IDAsIDAs
IGNvbnRleHRXaWR0aCwgY29udGV4dEhlaWdodCB9OwogCi0gICAgYXV0byBjb2xvclNwYWNlID0g
YWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQikpOwot
ICAgIGF1dG8gY2dDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUobnVsbHB0
ciwgY29udGV4dFdpZHRoLCBjb250ZXh0SGVpZ2h0LCA4LCA0ICogY29udGV4dFdpZHRoLCBjb2xv
clNwYWNlLmdldCgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpKTsKKyAgICBhdXRv
IGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKKyAgICBhdXRvIGNn
Q29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKG51bGxwdHIsIGNvbnRleHRX
aWR0aCwgY29udGV4dEhlaWdodCwgOCwgNCAqIGNvbnRleHRXaWR0aCwgY29sb3JTcGFjZS5wbGF0
Zm9ybUNvbG9yU3BhY2UoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSk7CiAgICAg
R3JhcGhpY3NDb250ZXh0IGNvbnRleHQgeyBjZ0NvbnRleHQuZ2V0KCkgfTsKIAogICAgIGF1dG8g
aW1hZ2VCdWZmZXJJZGVudGlmaWVyID0gUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5l
cmF0ZSgpOwpAQCAtNjksNyArNzAsNyBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIFJlcGxheVdp
dGhNaXNzaW5nCiAgICAgfQogCiAgICAgewotICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZSh7IDEwMCwgMTAwIH0sIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
KyAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoeyAxMDAsIDEw
MCB9LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBjb2xvclNwYWNlLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOwogICAgICAgICBJbWFnZUJ1ZmZlckhhc2hNYXAgaW1hZ2VCdWZmZXJNYXA7
CiAgICAgICAgIGltYWdlQnVmZmVyTWFwLnNldChpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIGltYWdl
QnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwogCg==
</data>
<flag name="commit-queue"
          id="450622"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429427</attachid>
            <date>2021-05-22 15:32:11 -0700</date>
            <delta_ts>2021-05-22 15:32:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226143-20210522153210.patch</filename>
            <type>text/plain</type>
            <size>272000</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5NSBAQAorMjAyMS0wNS0yMiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdyYXBwaW5nIGEgcGxhdGZvcm0gY29sb3Ig
c3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0Yy4pCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxNDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIGVudW1lcmF0aW9uIGJh
c2VkIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB3aXRoIGEgc3RydWN0IHdyYXBwaW5nCisgICAgICAg
IGEgcGxhdGZvcm0gY29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0
Yy4pLiBGb3IgcG9ydHMKKyAgICAgICAgdGhhdCBkb24ndCBoYXZlIGEgcGxhdGZvcm0gbGV2ZWwg
Y29sb3Igc3BhY2UgdHlwZSwgYSBidWlsdGluIFBsYXRmb3JtQ29sb3JTcGFjZQorICAgICAgICB0
eXBlIGlzIHByb3ZpZGVkIHRoYXQgaXMganVzdCB0aGUgb2xkIGVudW0gcmVuYW1lZCB0byBQbGF0
Zm9ybUNvbG9yU3BhY2U6Ok5hbWUuCisKKyAgICAgICAgVGhlIGdvYWwgb2YgdGhpcyBjaGFuZ2Ug
aXMgdG8gdW5pZnkgdGhlIGN1cnJlbnRseSBiaWZyYWNhdGVkIGNvbmNlcHQgb2YgYW4KKyAgICAg
ICAgSW1hZ2VCdWZmZXIncyBjb2xvciBzcGFjZSwgd2hpY2ggcHJldmlvc2x5IGNvdWxkIGVpdGhl
ciBiZSBiYXNlZCBvbiB0aGUgCisgICAgICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgYW5kIHJl
ZmxlY3RlZCBpbiB0aGUgY29sb3JTcGFjZSgpIG1lbWJlciBmdW5jdGlvbiwKKyAgICAgICAgb3Ig
KGZvciBDRyBwb3J0cykgYmFzZWQgb24gYSBDR0NvbG9yU3BhY2VSZWYsIHdpdGggdGhlIGNvbG9y
U3BhY2UoKSBmdW5jdGlvbgorICAgICAgICByZXR1cm5pbmcgc1JHQiBldmVuIGlmIHRoZSBJbWFn
ZUJ1ZmZlciB3YXMgbm90LiAKKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICog
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpD
bGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXJ0d29ya0ltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogU291cmNl
cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBJbWFnZUJpdG1hcCk6CisgICAgICAgIChXZWJD
b3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEltYWdlQml0bWFwKToKKyAgICAgICAgKiBjc3Mv
Q1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXJJbWFn
ZVZhbHVlOjppbWFnZSk6CisgICAgICAgICogaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludENhbnZhczo6Y29waWVkSW1hZ2UgY29uc3QpOgor
ICAgICAgICAqIGh0bWwvQ3VzdG9tUGFpbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
dXN0b21QYWludEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6dG9NZWRp
YVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1h
Z2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGVCdWZmZXJGb3JQYWludGlu
ZyBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAgICog
aHRtbC9JbWFnZUJpdG1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJpdG1hcDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCaXRtYXA6OmNyZWF0ZVBy
b21pc2UpOgorICAgICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Y29tbWl0VG9QbGFjZWhvbGRlckNhbnZhcyk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojpjb2xvclNwYWNlIGNvbnN0KToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0OjpzZXRPdXRwdXRCaXRtYXApOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnRvRGVzdGluYXRpb25Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvUHJlZGVmaW5l
ZENvbG9yU3BhY2UpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNl
Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1
ZmZlckNhY2hlOjppbWFnZUJ1ZmZlcik6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbkltYWdlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6YnVpbGRBcnJheUZvckNhbnZhc1BhdHRlcm4p
OgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6
Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAg
ICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hv
dHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RGcmFtZVJlY3RXaXRoQ2xpcCk6
CisgICAgICAgICogcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNhbXBsZUNvbG9yKToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9Ib3N0V2luZG93Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1Db2xv
clNwYWNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db2xvclNwYWNlOjpn
ZXQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2NyZWVuUHJvcGVydGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVu
UHJvcGVydGllczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVlbkRhdGE6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5EYXRhOjpkZWNvZGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3UGF0dGVybik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29s
b3I6OnRvQ29sb3JDb21wb25lbnRzSW5Db2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJDb2xvckNvbXBvbmVudHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yU3BhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25j
cmV0ZUltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVy
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRl
ZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpk
cmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xv
clNwYWNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IpOgorICAgICAgICAoV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5l
YXJTUkdCKToKKyAgICAgICAgKFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxh
eVAzKToKKyAgICAgICAgKFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGVzdGluYXRp
b25Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAgICAo
V2ViQ29yZTo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OnBsYXRmb3JtQ29sb3JT
cGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OmRl
Y29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJCYWNrZW5kOjpnZXRQaXhlbEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OnB1dFBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyQmFja2VuZDo6dHJhbnNmb3JtQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbG9yU3BhY2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1BpeGVsQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6
ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckNvbnZlcnNp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZVZJbWFnZUNHSW1hZ2VGb3JtYXQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1hdDo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cmFuc2Zl
ckJHUkFQaXhlbEJ1ZmZlclRvSU9TdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZVZp
ZGVvU2FtcGxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGU6
OlJlbW90ZVZpZGVvU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxl
OjpzdXJmYWNlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRl
b1NhbXBsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6Z2V0U2NyYXRjaEJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRp
bGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpibHVyU2hhZG93QnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdTaGFkb3dMYXllcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBh
aW50UmVzdWx0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyb0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0Jh
Y2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQ29sb3JDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9DR0NvbXBh
dGlibGVDb21wb25lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNHQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6cGxhdGZvcm1Db252ZXJ0Q29sb3JDb21wb25lbnRzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaDoKKyAgICAgICAgKFdlYkNvcmU6
OmNhY2hlZENHQ29sb3JTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdXJmYWNlTWF0
Y2hlc1BhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlUG9vbDo6dGFrZVN1
cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjb3B5Q0dJbWFnZUZv
ckVuY29kaW5nIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6
c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJC
YWNraW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW06CisgICAgICAg
IChXZWJDb3JlOjpJT1N1cmZhY2U6OnN1cmZhY2VGcm9tUG9vbCk6CisgICAgICAgIChXZWJDb3Jl
OjpJT1N1cmZhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0
ZUZyb21TZW5kUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9t
U3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21JbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21QaXhlbEJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OklPU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJT1N1cmZhY2U6OmVuc3VyZVBsYXRmb3JtQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJ
T1N1cmZhY2U6Om1pZ3JhdGVDb2xvclNwYWNlVG9Qcm9wZXJ0aWVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6cmVuZGVy
VG9JbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFu
c2ZlclNlc3Npb25WVC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlVHJhbnNmZXJTZXNzaW9u
VlQ6OmNyZWF0ZVBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9Q
aXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVy
Q29uZm9ybWVyQ1Y6OmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyOjpjcmVhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OmRlc3Ryb3kp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5n
Q29tbWFuZHM6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczo6Y29sb3JTcGFjZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5nQ29t
bWFuZHM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVn
aW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6R2V0UGl4ZWxCdWZmZXI6OkdldFBpeGVsQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpHZXRQaXhlbEJ1ZmZlcjo6b3V0cHV0Rm9ybWF0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpHZXRQaXhlbEJ1ZmZlcjo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpHZXRQaXhlbEJ1ZmZlcjo6ZGVjb2Rl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNs
aXBUb0RyYXdpbmdDb21tYW5kcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlz
cGxhY2VtZW50TWFwOjpzZXRSZXN1bHRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRVRpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVs
QnVmZmVyVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29u
dmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVm
ZmVjdDo6Y29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0aW5hdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRQaXhlbEJ1ZmZlclRvRGVzdGluYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpyZXF1aXJlc1BpeGVsQnVmZmVy
Q29sb3JTcGFjZUNvbnZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojp0
cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpv
cGVyYXRpbmdDb2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6c2V0T3BlcmF0aW5nQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OnJlc3VsdENvbG9yU3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZm
ZWN0OjpzZXRSZXN1bHRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL1NvdXJjZUdyYXBoaWMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6
OlNvdXJjZUdyYXBoaWMpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5JT1MubW06CisgICAgICAgIChXZWJDb3JlOjpzY3Jl
ZW5Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RTY3JlZW5Qcm9wZXJ0aWVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5NYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpjb2xsZWN0U2NyZWVuUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpz
Y3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50
b0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNw
bGF5Q2FwdHVyZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5EaXNwbGF5Q2FwdHVy
ZXJNYWM6OmNyZWF0ZURpc3BsYXlTdHJlYW0pOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2U6OmltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9wbGF5
c3RhdGlvbi9QbGF0Zm9ybVNjcmVlblBsYXlTdGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNjcmVlbkNvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVl
bldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS93cGUvUGxhdGZvcm1TY3JlZW5XUEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oOgor
ICAgICAgICAoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YTo6ZGVjb2Rl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZpbHRlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
RmlsdGVyOjpidWlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmFsbG9jYXRlQmFj
a2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjphcHBseSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnBhdHRlcm5Gb3JEZXNjcmlwdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50U3lz
dGVtUHJldmlld0JhZGdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRQcm9ncmVzc0Jhcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
aGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VDbGlwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291
cmNlQ2xpcHBlcjo6YXBwbHlDbGlwcGluZ1RvQ29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1hc2tBbmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6ZHJhd0NvbnRlbnRJ
bnRvTWFza0ltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
TWFza2VyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRl
cm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpjcmVh
dGVUaWxlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5n
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVh
dGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0Ojpi
dWZmZXJGb3JlZ3JvdW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0Nv
bnRleHQuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUpOgorCiAyMDIxLTA1LTIyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiBDb21wb25lbnQgYXQgaW5kZXgg
MSBpcyAxLjAwMDAwMCBhbmQgaXMgZ3JlYXRlciB0aGFuIHRoZSBhbGxvd2VkIG1heGltdW0gMS4w
MDAwMDAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTE5Nyw2ICsxMTk3LDcg
QEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Rhc2hB
cnJheS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGVjb2RpbmdPcHRpb25zLmgKKyAgICBwbGF0
Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxh
eVJlZnJlc2hNb25pdG9yQ2xpZW50LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVm
cmVzaE1vbml0b3JGYWN0b3J5LmgKQEAgLTEyOTMsNiArMTI5NCw3IEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZl
ci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1BpeGVsRm9ybWF0LmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bUNvbG9yU3BhY2UuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE5
NTAsNiArMTk1MCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhU
ZXh0Q29udHJvbGxlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBi
b2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NE
YXRhU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2wKIAogICAgICAgICBhdXRvIGJpdG1hcElt
YWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgICAgICBiaXRtYXBJbWFnZS0+c2V0RGF0
YShXVEZNb3ZlKGJ1ZmZlclRvU2FuaXRpemUpLCB0cnVlKTsKLSAgICAgICAgYXV0byBpbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
LCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
ICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikgewogICAgICAgICAgICAgbV9kYXRhID0geyBudWxs
U3RyaW5nKCkgfTsKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1l
dGFkYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCB2b2lkIEFydHdvcmtJ
bWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyVG9TYW5pdGl6ZSA9IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBhdXRv
IGJpdG1hcEltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIGJpdG1hcEltYWdlLT5z
ZXREYXRhKFdURk1vdmUoYnVmZmVyVG9TYW5pdGl6ZSksIHRydWUpOwotICAgIGF1dG8gaW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJpdG1hcEltYWdlLT5zaXplKCksIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAg
ICBpZiAoIWltYWdlQnVmZmVyKSB7CiAgICAgICAgIG1fY2FsbGJhY2sobnVsbHB0cik7CiAgICAg
ICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjc3OTIwKQorKysg
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEz
IEBACisyMDIxLTA1LTIyICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAg
ICBDb252ZXJ0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBmcm9tIGFuIGVudW0gdG8gY2xhc3Mgd3Jh
cHBpbmcgYSBwbGF0Zm9ybSBjb2xvciBzcGFjZSAoQ0dDb2xvclNwYWNlUmVmIGZvciBDRyBwb3J0
cywgZXRjLikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyNjE0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDoKKyAgICAgICAgQWRkIGFkZGlvbmFsIFNQ
SSBmb3Igd29ya2luZyB3aXRoIENHQ29sb3JTcGFjZVJlZnMuCisKIDIwMjEtMDUtMjEgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBZG9w
dCBRTEl0ZW0gaW4gV0tJbWFnZUV4dHJhY3Rpb25QcmV2aWV3Q29udHJvbGxlcgpJbmRleDogU291
cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGlj
c1NQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDIsNiArMjQyLDcgQEAgdHlwZWRlZiB2b2lkICgq
Q0dTTm90aWZ5UHJvY1B0cikoQ0dTTm90aQogCiBXVEZfRVhURVJOX0NfQkVHSU4KIAorYm9vbCBD
R0NvbG9yVHJhbnNmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyhDR0NvbG9yVHJhbnNmb3JtUmVm
LCBDR0NvbG9yU3BhY2VSZWYsIENHQ29sb3JSZW5kZXJpbmdJbnRlbnQsIGNvbnN0IENHRmxvYXQg
c3JjQ29tcG9uZW50c1tdLCBDR0Zsb2F0IGRzdENvbXBvbmVudHNbXSk7CiBDR0NvbG9yUmVmIENH
Q29sb3JUcmFuc2Zvcm1Db252ZXJ0Q29sb3IoQ0dDb2xvclRyYW5zZm9ybVJlZiwgQ0dDb2xvclJl
ZiwgQ0dDb2xvclJlbmRlcmluZ0ludGVudCk7CiBDR0NvbG9yVHJhbnNmb3JtUmVmIENHQ29sb3JU
cmFuc2Zvcm1DcmVhdGUoQ0dDb2xvclNwYWNlUmVmLCBDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRl
cyk7CiAKQEAgLTI5MSw2ICsyOTIsOCBAQCBDR1N0eWxlUmVmIENHR1N0YXRlR2V0U3R5bGUoQ0dH
U3RhdGVSZWYpCiBDR1N0eWxlVHlwZSBDR1N0eWxlR2V0VHlwZShDR1N0eWxlUmVmKTsKIGNvbnN0
IHZvaWQgKkNHU3R5bGVHZXREYXRhKENHU3R5bGVSZWYpOwogQ0dDb2xvclJlZiBDR1N0eWxlR2V0
Q29sb3IoQ0dTdHlsZVJlZik7Citib29sIENHQ29sb3JTcGFjZUVxdWFsVG9Db2xvclNwYWNlKENH
Q29sb3JTcGFjZVJlZiwgQ0dDb2xvclNwYWNlUmVmKTsKK0NGU3RyaW5nUmVmIENHQ29sb3JTcGFj
ZUNvcHlJQ0NQcm9maWxlRGVzY3JpcHRpb24oQ0dDb2xvclNwYWNlUmVmKTsKIAogI2lmIEhBVkUo
Q0dQQVRIX0dFVF9OVU1CRVJfT0ZfRUxFTUVOVFMpCiBzaXplX3QgQ0dQYXRoR2V0TnVtYmVyT2ZF
bGVtZW50cyhDR1BhdGhSZWYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0zOTk2LDYgKzM5OTYsNyBAQAogCQlCQzIzRjBEQjBEQUZGNEE0MDA5RkRDOTEgLyogR2VuZXJh
dGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMjNGMERBMERBRkY0QTQwMDlGREM5MSAvKiBHZW5lcmF0ZWRJbWFnZS5oICovOyB9OwogCQlC
QzI3NEIyRjE0MEVCRUIyMDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI3NEIyRTE0MEVC
RUIyMDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggKi87IH07CiAJCUJDMkNC
RjRFMTQwRjFBQkQwMDM4NzlCRSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJDQkY0QjE0MEYxQTY1MDAzODc5
QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oICovOyB9OworCQlCQzJDQ0ExMDI2NTVEREIyMDBC
OEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJDQ0EwRTI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGlu
YXRpb25Db2xvclNwYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQkMzMDVDN0EwQzA3NkJCMzAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzA1
Qzc4MEMwNzZCQjMwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50LmggKi87IH07CiAJCUJD
MzQ4QkQ0MERCN0Y4MDQwMDRBQkFCOSAvKiBKU1hNTEh0dHBSZXF1ZXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzM0OEJEMjBEQjdGODA0MDA0QUJB
QjkgLyogSlNYTUxIdHRwUmVxdWVzdC5oICovOyB9OwogCQlCQzM0OEJENDBEQjdGODA0MDA0QUJB
QkEgLyogV2ViQ29yZUpTQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDMzQ4QkQyMERCN0Y4MDQwMDRBQkFCQSAvKiBXZWJDb3JlSlNCdWls
dGlucy5oICovOyB9OwpAQCAtNDAwNyw2ICs0MDA4LDcgQEAKIAkJQkMzQkU5OTkwRTlDMUU1RDAw
ODM1NTg4IC8qIFJlbmRlclNjcm9sbGJhclRoZW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzNCRTk5ODBFOUMxRTVEMDA4MzU1ODggLyogUmVuZGVy
U2Nyb2xsYmFyVGhlbWUuaCAqLzsgfTsKIAkJQkMzQzM5QjcwQzBEM0Q4RDAwNUY0RDdBIC8qIEpT
TWVkaWFMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzNDMzlCNTBDMEQzRDhEMDA1RjREN0EgLyogSlNNZWRpYUxpc3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzNEODVCQzFDMEUyRTdBMDBE
M0I2MTAgLyogSlNIVE1MUGljdHVyZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODA4QjEzMUMwRTJCMzUwMDY2RkQ2QiAvKiBKU0hUTUxQ
aWN0dXJlRWxlbWVudC5oICovOyB9OworCQlCQzNFNjI0MzI2NTk3OTE4MDA1NDhBQ0QgLyogUGxh
dGZvcm1Db2xvclNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzNFNjI0MjI2NTk3OTE3MDA1NDhBQ0QgLyogUGxhdGZvcm1Db2xvclNwYWNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM0MzY4
RTgwQzIyNkUzMjAwNUVGQjVGIC8qIFJlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDNDM2OEU3MEMyMjZFMzIwMDVFRkI1RiAvKiBSZWN0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM0NkMxRkQw
QzBEREM4RjAwMjBDRkMzIC8qIEpTQ1NTRm9udEZhY2VSdWxlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzQ2QzFGMzBDMEREQzhGMDAyMENGQzMgLyog
SlNDU1NGb250RmFjZVJ1bGUuaCAqLzsgfTsKIAkJQkM0NkMxRkYwQzBEREM4RjAwMjBDRkMzIC8q
IEpTQ1NTSW1wb3J0UnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkM0NkMxRjUwQzBEREM4RjAwMjBDRkMzIC8qIEpTQ1NTSW1wb3J0UnVsZS5oICov
OyB9OwpAQCAtMTQxMzQsNiArMTQxMzYsOCBAQAogCQlCQzI5OTM1QzE3QTFERDU4MDBCQ0U4ODAg
LyogQ29sb3JJbnB1dFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ29sb3JJbnB1dFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJD
QkY0QjE0MEYxQTY1MDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMQ29udGV4dEV2ZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDMkNCRjdBMTQwRjFENTgwMDM4NzlCRSAvKiBKU1dlYkdMQ29u
dGV4dEV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2Vi
R0xDb250ZXh0RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJDQ0Ew
RTI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCQzJDQ0EwRjI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDMkVENTU0MEM2QjlCRDMwMDkyMEJGRiAvKiBKU0VsZW1lbnRD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFbGVtZW50
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyRUQ2QkIwQzZCRDJG
MDAwOTIwQkZGIC8qIEpTQXR0ckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0F0dHJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQzMwNUM3NzBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MT2JqZWN0RWxlbWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDE1Nyw2ICsxNDE2MSw3IEBACiAJ
CUJDM0JFOUFBMEU5QzI0MjAwMDgzNTU4OCAvKiBSZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNjcm9sbGJhclBhcnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzNDMzlCNDBDMEQzRDhEMDA1RjREN0Eg
LyogSlNNZWRpYUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTTWVkaWFMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzQzM5QjUw
QzBEM0Q4RDAwNUY0RDdBIC8qIEpTTWVkaWFMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU01lZGlhTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
QzNFNjI0MjI2NTk3OTE3MDA1NDhBQ0QgLyogUGxhdGZvcm1Db2xvclNwYWNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtQ29sb3JTcGFjZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQzQzNjhFNzBDMjI2RTMyMDA1RUZCNUYgLyogUmVjdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVjdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQzQ2QzFFRDBDMEREQkRGMDAyMENGQzMgLyogSlNDU1NSdWxlQ3VzdG9t
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NTU1J1bGVDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzQ2QzFGMjBDMEREQzhGMDAy
MENGQzMgLyogSlNDU1NGb250RmFjZVJ1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTQ1NTRm9udEZhY2VSdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTI2OTI1LDYgKzI2OTMwLDggQEAKIAkJCQkyRDJGQzA1NTE0NjBDRDZGMDAyNjM2
MzMgLyogQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaCAqLywKIAkJCQlBOENCNDEwMjBFODVCOEE1
MDAzMkM0RjAgLyogRGFzaEFycmF5LmggKi8sCiAJCQkJNTU1MTMwMDAxRTdDQ0NDQTAwQTY5RTM4
IC8qIERlY29kaW5nT3B0aW9ucy5oICovLAorCQkJCUJDMkNDQTBGMjY1NUREQjIwMEI4QzAzNSAv
KiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuY3BwICovLAorCQkJCUJDMkNDQTBFMjY1NUREQjIwMEI4
QzAzNSAvKiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCAqLywKIAkJCQk0OUZDN0E0RjE0NDRBRjVG
MDBBNUQ4NjQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCAqLywKIAkJCQk0OUFGMkQ2ODE0
NDM1RDA1MDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmggKi8sCiAJCQkJMkQyOUVD
QzExOTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5jcHAgKi8s
CkBAIC0yNzEwMSw2ICsyNzEwOCw3IEBACiAJCQkJQkM2MzVFOEIyNjRDMkNBRTAwMEVGMzNBIC8q
IFBpeGVsQnVmZmVyRm9ybWF0LmggKi8sCiAJCQkJQkM2MzVFOTAyNjRDNDY5RjAwMEVGMzNBIC8q
IFBpeGVsRm9ybWF0LmNwcCAqLywKIAkJCQlCQ0E1NTkxMjI2M0RCRDc5MDA3RjE5QjMgLyogUGl4
ZWxGb3JtYXQuaCAqLywKKwkJCQlCQzNFNjI0MjI2NTk3OTE3MDA1NDhBQ0QgLyogUGxhdGZvcm1D
b2xvclNwYWNlLmggKi8sCiAJCQkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3Jt
SW1hZ2UuaCAqLywKIAkJCQk3MkJBQzNBNjIzRTE3MzI4MDA4RDc0MUMgLyogUGxhdGZvcm1JbWFn
ZUJ1ZmZlci5oICovLAogCQkJCTU1MDY0MEFEMjQwNzU2REEwMEFBRTA0NSAvKiBQbGF0Zm9ybUlt
YWdlQnVmZmVyQmFja2VuZC5oICovLApAQCAtMzIyMzAsNiArMzIyMzgsNyBAQAogCQkJCTk0Nzk0
OTI1MUUwMzA4QUYwMDAxOEQ4NSAvKiBEZXByZWNhdGVkQ1NTT01WYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTQ3OTQ5M0QxRTA0NjNCNjAwMDE4RDg1IC8qIERlcHJlY2F0ZWRDU1NPTVZhbHVl
TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NCRDEyOUUxRjk4QjkwRTAwMTI3RDI5IC8qIERl
cHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMyQ0NBMTAyNjU1
RERCMjAwQjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDExMjIzQzUyNjAzNTY3RDAwQjBBMEI2IC8qIERldGFjaGVkUlRDRGF0YUNoYW5uZWwuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3QzlBQkY5MTM1N0EzQkYwMEY1NTAzRiAvKiBEZXRhaWxzTWFy
a2VyQ29udHJvbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFFRDc3OEQxQkUzMjk0MDAwREMxNzkx
IC8qIERldmljZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjI4MSw2ICszMjI5MCw3IEBACiAJCQkJ
MUNFOEQxMjcyNjE4NUMwRTAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZp
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ1MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNw
bGF5TGlzdEl0ZW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDM3N0Q1NzI1NTFDOUM2MDA4MEFC
RkUgLyogRGlzcGxheUxpc3RJdGVtVHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMzRTYyNDMy
NjU5NzkxODAwNTQ4QUNEIC8qIFBsYXRmb3JtQ29sb3JTcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUNFOEQxMkUyNjE4NjFDNDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRTVGQkQ3MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJl
Y29yZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1RkJEOTFDM0RENTFFMDAwN0EyQ0EgLyog
RGlzcGxheUxpc3RSZXBsYXllci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwODIsNyArMTA4Miw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBQaXhlbEJ1ZmZlckZv
cm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhl
bEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgICAgICBQ
aXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0
aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
IH07CiAgICAgICAgIGNvbnN0IEludFNpemUmIGxvZ2ljYWxTaXplID0gYnVmZmVyLT5sb2dpY2Fs
U2l6ZSgpOwogICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gYnVmZmVyLT5nZXRQaXhlbEJ1ZmZl
cihmb3JtYXQsIHsgSW50UG9pbnQ6Onplcm8oKSwgbG9naWNhbFNpemUgfSk7CiAgICAgICAgIGlm
ICghcGl4ZWxCdWZmZXIpIHsKQEAgLTMxODcsNyArMzE4Nyw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgUGl4ZWxCdWZmZXJG
b3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4
ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICAgICAg
UGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVs
dGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSB9OwogICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShm
b3JtYXQsIGltYWdlRGF0YVNpemUsIGFycmF5QnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwogICAg
ICAgICBpZiAoIXBpeGVsQnVmZmVyKSB7CiAgICAgICAgICAgICBmYWlsKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExNiw3ICsxMTYsNyBAQCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFs
dWU6OmltYWdlCiAKICAgICAvLyBUcmFuc2Zvcm0gSW1hZ2UgaW50byBJbWFnZUJ1ZmZlci4KICAg
ICAvLyBGSVhNRSAoMTQ5NDI0KTogVGhpcyBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlv
bmFsbHkgdW5hY2NlbGVyYXRlZC4KLSAgICBhdXRvIHRleHR1cmUgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIHRleHR1cmUgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAg
IGlmICghdGV4dHVyZSkKICAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCShyZXZpc2lvbiAy
Nzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTIsNyArOTIsNyBAQCBJbWFnZSogQ3VzdG9tUGFpbnRDYW52YXM6OmNv
cGllZEltYWdlKCkgCiAgICAgaWYgKCF3aWR0aCgpIHx8ICFoZWlnaHQoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBtX2NvcGllZEJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCwgbnVsbHB0cik7CisgICAgbV9jb3BpZWRC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCwgbnVsbHB0cik7CiAgICAgaWYgKCFtX2NvcGllZEJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRJbWFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludEltYWdlLmNw
cAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludElt
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgQ3VzdG9tUGFp
bnRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGgKICAgICBhZGp1c3RlZFBhdHRlcm5DVE0uc2NhbGUo
MS4wIC8geFNjYWxlLCAxLjAgLyB5U2NhbGUpOwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZSh4
U2NhbGUsIHlTY2FsZSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKGFkanVzdGVkU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
LCBkZXN0Q29udGV4dCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBkZXN0Q29udGV4dCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybjsKICAgICBk
b0N1c3RvbVBhaW50KGJ1ZmZlci0+Y29udGV4dCgpLCBhZGp1c3RlZFNpemUpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MjUsNyArODI1LDcgQEAgUmVmUHRyPE1lZGlhU2FtcGxlPiBIVE1MQ2FudmFzRWxl
bWVudDo6dAogICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBsaWtlbHkgYmUgb3B0aW1pemVkIHF1aXRl
IGEgYml0LCBlc3BlY2lhbGx5IGluIHRoZSBjYXNlcyB3aGVyZQogICAgIC8vIHRoZSBJbWFnZUJ1
ZmZlciBpcyBiYWNrZWQgYnkgR1BVIG1lbW9yeSBhbHJlYWR5IGFuZC9vciBpcyBpbiB0aGUgR1BV
IHByb2Nlc3MgYnkKICAgICAvLyBzcGVjaWFsaXppbmcgdG9NZWRpYVNhbXBsZSgpIGluIEltYWdl
QnVmZmVyQmFja2VuZCB0byBub3QgdXNlIGdldFBpeGVsQnVmZmVyKCkuCi0gICAgYXV0byBwaXhl
bEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5nZXRQaXhlbEJ1ZmZlcih7IEFscGhhUHJlbXVsdGlwbGlj
YXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IgfSwgeyB7IH0sIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpIH0pOwor
ICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoeyBBbHBo
YVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfSwgeyB7IH0sIGltYWdlQnVmZmVyLT5sb2dp
Y2FsU2l6ZSgpIH0pOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCkBAIC05NTUsNyArOTU1LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRl
SW1hZ2VCdWZmZQogICAgIGF1dG8gW2NvbG9yU3BhY2UsIHBpeGVsRm9ybWF0XSA9IFsmXSB7CiAg
ICAgICAgIGlmIChtX2NvbnRleHQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpwYWlyIHsgbV9j
b250ZXh0LT5jb2xvclNwYWNlKCksIG1fY29udGV4dC0+cGl4ZWxGb3JtYXQoKSB9OwotICAgICAg
ICByZXR1cm4gc3RkOjpwYWlyIHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZv
cm1hdDo6QkdSQTggfTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6cGFpciB7IERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTggfTsKICAgICB9KCk7CiAKICAgICBz
ZXRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgcmVuZGVyaW5nTW9kZSwg
dXNlRGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1cnBvc2U6OkNhbnZhcywgMSwgY29sb3JTcGFjZSwg
cGl4ZWxGb3JtYXQsIGhvc3RXaW5kb3cpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDcgKzI4MSw3IEBA
IHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6bWVkaWFQbGF5ZXJGaXJzdFYKICAgICAgICAgcmVuZGVy
ZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSFRNTFZp
ZGVvRWxlbWVudDo6Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29uc3QKK1JlZlB0cjxJbWFnZUJ1ZmZl
cj4gSFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CiB7
CiAgICAgYXV0byogaG9zdFdpbmRvdyA9IGRvY3VtZW50KCkudmlldygpICYmIGRvY3VtZW50KCku
dmlldygpLT5yb290KCkgPyBkb2N1bWVudCgpLnZpZXcoKS0+cm9vdCgpLT5ob3N0V2luZG93KCkg
OiBudWxscHRyOwogICAgIGF1dG8gc2hvdWxkVXNlRGlzcGxheUxpc3QgPSBkb2N1bWVudCgpLnNl
dHRpbmdzKCkuZGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZCgpID8gU2hvdWxkVXNlRGlzcGxheUxp
c3Q6OlllcyA6IFNob3VsZFVzZURpc3BsYXlMaXN0OjpObzsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTIgKzMzLDEy
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNl
OwogY2xhc3MgSFRNTEltYWdlTG9hZGVyOwogY2xhc3MgSW1hZ2VCdWZmZXI7CiBjbGFzcyBSZW5k
ZXJWaWRlbzsKIGNsYXNzIFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlcjsKIAotZW51bSBjbGFzcyBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgOiB1aW50OF90OwogZW51bSBjbGFzcyBQaXhlbEZvcm1hdCA6
IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOwogCkBAIC03Miw3ICs3
Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCkgb3ZlcnJp
ZGU7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQnVmZmVyRm9yUGFp
bnRpbmcoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgRGVzdGluYXRpb25Db2xvclNw
YWNlLCBQaXhlbEZvcm1hdCkgY29uc3Q7CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVC
dWZmZXJGb3JQYWludGluZyhjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCkgY29uc3Q7CiAKICAgICAvLyBVc2Vk
IGJ5IGNhbnZhcyB0byBnYWluIHJhdyBwaXhlbCBhY2Nlc3MKICAgICB2b2lkIHBhaW50Q3VycmVu
dEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCwx
MiArODQsMTIgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJpdG1hcDo6Y3JlYXRlSQogICAg
ICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25D
b250ZXh0KTsKICAgICAgICAgaWYgKGRvY3VtZW50LnZpZXcoKSAmJiBkb2N1bWVudC52aWV3KCkt
PnJvb3QoKSkgewogICAgICAgICAgICAgYXV0byBob3N0V2luZG93ID0gZG9jdW1lbnQudmlldygp
LT5yb290KCktPmhvc3RXaW5kb3coKTsKLSAgICAgICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0OjpObywgUmVu
ZGVyaW5nUHVycG9zZTo6Q2FudmFzLCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBob3N0V2luZG93KTsKKyAgICAgICAgICAg
IHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIFNob3VsZFVz
ZURpc3BsYXlMaXN0OjpObywgUmVuZGVyaW5nUHVycG9zZTo6Q2FudmFzLCByZXNvbHV0aW9uU2Nh
bGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGhv
c3RXaW5kb3cpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gRklYTUUgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzIxODQ4Mj4gRW5hYmxlIHdvcmtlciBiYXNlZCBJbWFnZUJpdG1hcCBhbmQgT2Zm
c2NyZWVuQ2FudmFzIGRyYXdpbmcgdG8gdXNlIEdQVSBQcm9jZXNzIHJlbmRlcmluZwotICAgIHJl
dHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25T
Y2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwor
ICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29s
dXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CiB9CiAKIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgSW1hZ2VCaXRtYXA6OlNvdXJjZSYm
IHNvdXJjZSwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgSW1hZ2VCaXRtYXA6OlByb21p
c2UmJiBwcm9taXNlKQpAQCAtNTA0LDcgKzUwNCw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0
ZVByb21pc2UoU2NyaXB0RXgKICAgICBhdXRvIG91dHB1dFNpemUgPSBvdXRwdXRTaXplRm9yU291
cmNlUmVjdGFuZ2xlKHNvdXJjZVJlY3RhbmdsZSwgb3B0aW9ucyk7CiAKICAgICAvLyBGSVhNRTog
QWRkIHN1cHBvcnQgZm9yIGNvbG9yIHNwYWNlcyAvIHBpeGVsIGZvcm1hdHMgdG8gSW1hZ2VCaXRt
YXAuCi0gICAgYXV0byBiaXRtYXBEYXRhID0gdmlkZW8tPmNyZWF0ZUJ1ZmZlckZvclBhaW50aW5n
KG91dHB1dFNpemUsIGJ1ZmZlclJlbmRlcmluZ01vZGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGJpdG1hcERhdGEgPSB2aWRlby0+
Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcob3V0cHV0U2l6ZSwgYnVmZmVyUmVuZGVyaW5nTW9kZSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAg
aWYgKCFiaXRtYXBEYXRhKSB7CiAgICAgICAgIHJlc29sdmVXaXRoQmxhbmtJbWFnZUJ1ZmZlcihz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCAhdGFpbnRzT3JpZ2luKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuc2VjdXJpdHlPcmlnaW4oKSwgKnZpZGVvKSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgICAg
IHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDUxLDE0ICs0NTEsMTQgQEAgdm9pZCBPZmZzY3JlZW5DYW52
YXM6OmNvbW1pdFRvUGxhY2Vob2xkZQogICAgICAgICBtX2NvbnRleHQtPnBhaW50UmVuZGVyaW5n
UmVzdWx0c1RvQ2FudmFzKCk7CiAKICAgICBpZiAobV9wbGFjZWhvbGRlckRhdGEtPmJ1ZmZlclBp
cGVTb3VyY2UpIHsKLSAgICAgICAgYXV0byBidWZmZXJDb3B5ID0gaW1hZ2VCdWZmZXItPmNvcHlS
ZWN0VG9CdWZmZXIoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxT
aXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGltYWdlQnVmZmVyLT5jb250ZXh0
KCkpOworICAgICAgICBhdXRvIGJ1ZmZlckNvcHkgPSBpbWFnZUJ1ZmZlci0+Y29weVJlY3RUb0J1
ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSks
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsK
ICAgICAgICAgaWYgKGJ1ZmZlckNvcHkpCiAgICAgICAgICAgICBtX3BsYWNlaG9sZGVyRGF0YS0+
YnVmZmVyUGlwZVNvdXJjZS0+aGFuZGxlKFdURk1vdmUoYnVmZmVyQ29weSkpOwogICAgIH0KIAog
ICAgIExvY2tlciBsb2NrZXIgeyBtX3BsYWNlaG9sZGVyRGF0YS0+YnVmZmVyTG9jayB9OwogICAg
IGJvb2wgc2hvdWxkUHVzaEJ1ZmZlciA9ICFtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1p
dEJ1ZmZlcjsKLSAgICBtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlciA9IGlt
YWdlQnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdl
QnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBpbWFn
ZUJ1ZmZlci0+Y29udGV4dCgpKTsKKyAgICBtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1p
dEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIGltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwogICAgIGlmIChtX3BsYWNlaG9sZGVy
RGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlciAmJiBzaG91bGRQdXNoQnVmZmVyKQogICAgICAgICBw
dXNoQnVmZmVyVG9QbGFjZWhvbGRlcigpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAi
Q1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VySGVscGVycy5o
IgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VyV29ya2VyU2FmZS5oIgotI2luY2x1ZGUgIkNv
bG9yU3BhY2UuaCIKICNpbmNsdWRlICJHcmFkaWVudC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVy
LmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNhY2hl
ZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2FudmFzUGF0dGVybi5oIgotI2luY2x1ZGUgIkNvbG9yU3Bh
Y2UuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJIVE1M
Q2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MVmlkZW9FbGVtZW50LmgiCkBAIC05MCw3ICs5MCw3IEBAIFBpeGVsRm9ybWF0IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQ6OnBpeGUKIAogRGVzdGluYXRpb25Db2xvclNwYWNlIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQ6OmNvbG9yU3BhY2UoKSBjb25zdAogewotICAgIHJldHVybiBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0I7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpOwogfQogCiBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRPcmln
aW4oY29uc3QgQ2FudmFzUGF0dGVybiogcGF0dGVybikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTMgKzM3LDEzIEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENhbnZhc1BhdHRlcm47CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7
CiBjbGFzcyBIVE1MQ2FudmFzRWxlbWVudDsKIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiBjbGFz
cyBIVE1MVmlkZW9FbGVtZW50OwogY2xhc3MgSW1hZ2VCaXRtYXA7CiBjbGFzcyBUeXBlZE9NQ1NT
SW1hZ2VWYWx1ZTsKIGNsYXNzIFdlYkdMT2JqZWN0OwotZW51bSBjbGFzcyBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgOiB1aW50OF90OwogZW51bSBjbGFzcyBQaXhlbEZvcm1hdCA6IHVpbnQ4X3Q7CiAK
IGNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29u
dGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VC
aXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCB2b2lkIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4
dDo6c2V0T3V0CiAgICAgICAgIC8vIG9ubHkgcmVhc29uIEkgY2FuIHRoaW5rIG9mIGlzIHRvRGF0
YVVSTCgpLCBidXQgdGhhdCBkb2Vzbid0IHNlZW0gbGlrZQogICAgICAgICAvLyBhIGdvb2QgZW5v
dWdoIGFyZ3VtZW50IHRvIHdhc3RlIG1lbW9yeS4KIAotICAgICAgICBjYW52YXMoKS0+c2V0SW1h
Z2VCdWZmZXJBbmRNYXJrRGlydHkoSW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUoY2FudmFz
KCktPndpZHRoKCksIGNhbnZhcygpLT5oZWlnaHQoKSksIGJ1ZmZlclJlbmRlcmluZ01vZGUsIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CisgICAg
ICAgIGNhbnZhcygpLT5zZXRJbWFnZUJ1ZmZlckFuZE1hcmtEaXJ0eShJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKEZsb2F0U2l6ZShjYW52YXMoKS0+d2lkdGgoKSwgY2FudmFzKCktPmhlaWdodCgpKSwgYnVm
ZmVyUmVuZGVyaW5nTW9kZSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVs
Rm9ybWF0OjpCR1JBOCkpOwogCiAgICAgICAgIC8vIDEuNC4gU2V0IHRoZSBvdXRwdXQgYml0bWFw
J3Mgb3JpZ2luLWNsZWFuIGZsYWcgdG8gdHJ1ZS4KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmNwcAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiUHJlZGVmaW5lZENvbG9yU3BhY2UuaCIKIAotI2luY2x1ZGUgIkNvbG9yU3Bh
Y2UuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlIDx3dGYv
T3B0aW9uYWwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsMzMgKzM1LDI2IEBAIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSB0b0Rlc3RpbmF0aW9uQ29sb3IKIHsKICAgICBzd2l0Y2ggKGNv
bG9yU3BhY2UpIHsKICAgICBjYXNlIFByZWRlZmluZWRDb2xvclNwYWNlOjpTUkdCOgotICAgICAg
ICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOworICAgICAgICByZXR1cm4gRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9S
X1NQQUNFX0RJU1BMQVlfUDMpCiAgICAgY2FzZSBQcmVkZWZpbmVkQ29sb3JTcGFjZTo6RGlzcGxh
eVAzOgotICAgICAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDM7Cisg
ICAgICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMygpOwogI2VuZGlm
CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQjsKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCk7CiB9CiAKLU9wdGlvbmFsPFByZWRlZmluZWRDb2xvclNwYWNlPiB0b1ByZWRlZmluZWRD
b2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKQorT3B0aW9uYWw8UHJl
ZGVmaW5lZENvbG9yU3BhY2U+IHRvUHJlZGVmaW5lZENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQogewotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewot
ICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOgorICAgIGlmIChjb2xvclNwYWNl
ID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKQogICAgICAgICByZXR1cm4gUHJlZGVm
aW5lZENvbG9yU3BhY2U6OlNSR0I7Ci0jaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNF
X0xJTkVBUl9TUkdCKQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdC
OgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotI2VuZGlmCiAjaWYgRU5BQkxFKERFU1RJ
TkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCi0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OkRpc3BsYXlQMzoKKyAgICBpZiAoY29sb3JTcGFjZSA9PSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OkRpc3BsYXlQMygpKQogICAgICAgICByZXR1cm4gUHJlZGVmaW5lZENvbG9yU3BhY2U6
OkRpc3BsYXlQMzsKICNlbmRpZgotICAgIH0KIAotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuaAkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVu
dW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDogdWludDhfdDsKK2NsYXNzIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTsKIAogZW51bSBjbGFzcyBQcmVkZWZpbmVkQ29sb3JTcGFjZSB7CiAgICAg
U1JHQgpAQCAtNDAsNyArNDAsNyBAQCBlbnVtIGNsYXNzIFByZWRlZmluZWRDb2xvclNwYWNlIHsK
IH07CiAKIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB0b0Rlc3RpbmF0aW9uQ29sb3JTcGFjZShQcmVk
ZWZpbmVkQ29sb3JTcGFjZSk7Ci1PcHRpb25hbDxQcmVkZWZpbmVkQ29sb3JTcGFjZT4gdG9QcmVk
ZWZpbmVkQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpOworT3B0aW9uYWw8UHJlZGVm
aW5lZENvbG9yU3BhY2U+IHRvUHJlZGVmaW5lZENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJik7CiAKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAJKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjIzLDcgKzc2MjMsNyBAQCBJbWFnZUJ1ZmZlciog
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6CiAgICAgfQogCiAgICAgLy8gRklYTUUgKDE0OTQy
Myk6IFNob3VsZCB0aGlzIEltYWdlQnVmZmVyIGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJh
dGVkPwotICAgIGF1dG8gdGVtcCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gdGVtcCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6
ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCF0ZW1wKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICBBU1NFUlQobV9idWZmZXJzLnNpemUoKSA+IDApOwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVy
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFRleHRUcmFja0NvbnRh
aW5lckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTgsNyArNDE4LDcgQEAgUmVmUHRy
PEltYWdlPiBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YQogICAgIEludFJlY3QgcGFpbnRpbmdS
ZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+c2l6ZSgpKTsKIAogICAgIC8vIEZJWE1F
ICgxNDk0MjIpOiBUaGlzIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFj
Y2VsZXJhdGVkLgotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGlu
Z1JlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBkZXZpY2VTY2FsZUZh
Y3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwor
ICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGluZ1JlY3Quc2l6ZSgp
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFi
dWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExNDksNyArMTE0OSw3IEBAIGludCBJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YShE
dXBsaWMKICAgICAgICAgICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBpbWFnZUVs
ZW1lbnQtPmNhY2hlZEltYWdlKCkpIHsKICAgICAgICAgICAgICAgICBJbWFnZSogaW1hZ2UgPSBj
YWNoZWRJbWFnZS0+aW1hZ2UoKTsKICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2Ug
IT0gJkltYWdlOjpudWxsSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgp
OwogICAgICAgICAgICAgICAgICAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFnZSgq
aW1hZ2UsIEZsb2F0UG9pbnQoMCwgMCkpOwogICAgICAgICAgICAgICAgICAgICBkYXRhVVJMID0g
aW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CiAgICAgICAgICAgICAgICAgfQpA
QCAtMTE2Myw3ICsxMTYzLDcgQEAgaW50IEluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKER1
cGxpYwogCiAgICAgICAgICAgICB1bnNpZ25lZCB2aWRlb1dpZHRoID0gdmlkZW9FbGVtZW50LT52
aWRlb1dpZHRoKCk7CiAgICAgICAgICAgICB1bnNpZ25lZCB2aWRlb0hlaWdodCA9IHZpZGVvRWxl
bWVudC0+dmlkZW9IZWlnaHQoKTsKLSAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZSh2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCksIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwg
UGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZSh2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCksIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgICAgICAgICAgaWYgKGltYWdlQnVmZmVyKSB7CiAg
ICAgICAgICAgICAgICAgdmlkZW9FbGVtZW50LT5wYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChp
bWFnZUJ1ZmZlci0+Y29udGV4dCgpLCBGbG9hdFJlY3QoMCwgMCwgdmlkZW9XaWR0aCwgdmlkZW9I
ZWlnaHQpKTsKICAgICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVS
TCgiaW1hZ2UvcG5nIik7CkBAIC0xMjAwLDcgKzEyMDAsNyBAQCBpbnQgSW5zcGVjdG9yQ2FudmFz
OjppbmRleEZvckRhdGEoRHVwbGljCiAgICAgICAgICAgICBpZiAoYXV0byogY2FjaGVkSW1hZ2Ug
PSBjc3NJbWFnZVZhbHVlLT5pbWFnZSgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byogaW1hZ2Ug
PSBjYWNoZWRJbWFnZS0+aW1hZ2UoKTsKICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UgJiYgaW1h
Z2UgIT0gJkltYWdlOjpudWxsSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdN
b2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdS
QTgpOwogICAgICAgICAgICAgICAgICAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFn
ZSgqaW1hZ2UsIEZsb2F0UG9pbnQoMCwgMCkpOwogICAgICAgICAgICAgICAgICAgICBkYXRhVVJM
ID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CiAgICAgICAgICAgICAgICAg
fQpAQCAtMTQ0MSw3ICsxNDQxLDcgQEAgUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJ
bnNwZWN0bwogewogICAgIGF1dG8mIHRpbGVJbWFnZSA9IGNhbnZhc1BhdHRlcm4ucGF0dGVybigp
LnRpbGVJbWFnZSgpOwogICAgIEZsb2F0UmVjdCByZWN0ID0geyB7IH0sIHRpbGVJbWFnZS5zaXpl
KCkgfTsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0aWxlSW1h
Z2Uuc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZl
ciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGlsZUltYWdlLnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CiAgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5kcmF3TmF0aXZlSW1hZ2Uo
dGlsZUltYWdlLCB0aWxlSW1hZ2Uuc2l6ZSgpLCByZWN0LCByZWN0KTsKIAogICAgIFN0cmluZyBy
ZXBlYXQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyOSw3ICs1
MjksNyBAQCB2b2lkIENocm9tZTo6c2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vCiAgICAgbV9j
bGllbnQuc2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGhpZGRlblVudGlsTW91c2VNb3Zl
cyk7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gQ2hyb21lOjpjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgUmVuZGVy
aW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29uc3QKK1JlZlB0
cjxJbWFnZUJ1ZmZlcj4gQ2hyb21lOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
IHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSBwdXJw
b3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYg
Y29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fY2xpZW50LmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHB1cnBvc2Us
IHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZS5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldEN1cnNvcihjb25zdCBDdXJzb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEN1cnNvckhp
ZGRlblVudGlsTW91c2VNb3Zlcyhib29sKSBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwg
UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJl
bmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiwgUGl4ZWxGb3JtYXQpIGNvbnN0IG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKFdF
QkdMKQogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0
R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3Qgb3ZlcnJpZGU7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzOSw3
ICszMzksNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBEaXNwbGF5UmVmcmVzaE1vbml0
b3JGYWN0b3J5KiBkaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bnVsbHB0cjsgfQogCi0gICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2Us
IGZsb2F0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCB7IHJldHVy
biBudWxscHRyOyB9CisgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2Us
IGZsb2F0LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCkgY29uc3Qg
eyByZXR1cm4gbnVsbHB0cjsgfQogCiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIHZpcnR1YWwgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNu
YXBzaG90dGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNu
YXBzaG90dGluZy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVTbmFwc2hvdHRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDcgQEAg
UmVmUHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVjdFdpdAogICAgIGlmIChvcHRpb25z
ICYgU25hcHNob3RPcHRpb25zUGFpbnRXaXRoSW50ZWdyYWxTY2FsZUZhY3RvcikKICAgICAgICAg
c2NhbGVGYWN0b3IgPSBjZWlsZihzY2FsZUZhY3Rvcik7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgc2NhbGVGYWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1h
Z2VSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgc2NhbGVGYWN0b3Is
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAg
IGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBidWZmZXItPmNvbnRl
eHQoKS50cmFuc2xhdGUoLWltYWdlUmVjdC54KCksIC1pbWFnZVJlY3QueSgpKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcAkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBPcHRpb25hbDxMYWI8ZmxvYXQ+PiBzYW1wbGVD
b2xvcigKICAgICBpZiAoIXNuYXBzaG90KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IHNuYXBzaG90LT5nZXRQaXhlbEJ1ZmZlcih7IEFscGhh
UHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfSwgeyB7IH0sIHNuYXBzaG90LT5sb2dpY2FsU2l6
ZSgpIH0pOworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzbmFwc2hvdC0+Z2V0UGl4ZWxCdWZmZXIo
eyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpC
R1JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfSwgeyB7IH0sIHNuYXBzaG90LT5s
b2dpY2FsU2l6ZSgpIH0pOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGll
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGll
bnQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25z
b2xlQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI2LDcgKzMyNiw3IEBAIHZvaWQgUGFn
ZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjoKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChhdXRvKiBjYWNoZWRJbWFnZSA9IGltYWdlRWxlbWVudC5jYWNoZWRJbWFnZSgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1h
Z2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UgIT0g
JkltYWdlOjpudWxsSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
bmFwc2hvdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdCA9
IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuYXBzaG90LT5jb250ZXh0
KCkuZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMzQzLDcgKzM0Myw3
IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjoKICAgICAgICAgICAg
ICAgICAgICAgICAgIGF1dG8mIHZpZGVvRWxlbWVudCA9IGRvd25jYXN0PEhUTUxWaWRlb0VsZW1l
bnQ+KCpub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHZpZGVvV2lkdGgg
PSB2aWRlb0VsZW1lbnQudmlkZW9XaWR0aCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgdmlkZW9IZWlnaHQgPSB2aWRlb0VsZW1lbnQudmlkZW9IZWlnaHQoKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHNuYXBzaG90ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUo
dmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRT
aXplKHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb0VsZW1lbnQucGFpbnRDdXJyZW50RnJhbWVJ
bkNvbnRleHQoc25hcHNob3QtPmNvbnRleHQoKSwgRmxvYXRSZWN0KDAsIDAsIHZpZGVvV2lkdGgs
IHZpZGVvSGVpZ2h0KSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICNlbmRpZgpAQCAtMzY4LDcg
KzM2OCw3IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjoKICAgICAg
ICAgICAgIHRhcmdldCA9IHBvc3NpYmxlVGFyZ2V0OwogICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRzKCkpKSB7CiAgICAgICAgICAg
ICAgICAgYXV0byBzb3VyY2VTaXplID0gaW1hZ2VEYXRhLT5zaXplKCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNvdXJjZVNpemUs
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvIGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzb3VyY2VTaXplLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KSkgewogICAgICAgICAgICAgICAgICAgICBJbnRSZWN0IHNvdXJjZVJlY3Qo
SW50UG9pbnQoKSwgc291cmNlU2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgIGltYWdlQnVmZmVy
LT5wdXRQaXhlbEJ1ZmZlcihpbWFnZURhdGEtPnBpeGVsQnVmZmVyKCksIHNvdXJjZVJlY3QpOwog
ICAgICAgICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1h
Z2UvcG5nIl9zLCBXVEY6Om51bGxvcHQsIFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
MTAgKzMxLDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cnNvcjsKK2NsYXNz
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIEltYWdlQnVmZmVyOwogCiBlbnVtIGNsYXNz
IFBpeGVsRm9ybWF0IDogdWludDhfdDsKLWVudW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNl
IDogdWludDhfdDsKIGVudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJvb2w7CiBlbnVtIGNsYXNz
IFJlbmRlcmluZ1B1cnBvc2UgOiB1aW50OF90OwogCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIEludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0
IEludFBvaW50JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSW50UmVjdCByb290Vmlld1RvQWNj
ZXNzaWJpbGl0eVNjcmVlbihjb25zdCBJbnRSZWN0JikgY29uc3QgPSAwOwogCi0gICAgdmlydHVh
bCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYs
IFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
RGVzdGluYXRpb25Db2xvclNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
LCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBpeGVsRm9ybWF0KSBjb25zdCA9IDA7CiAK
ICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+
IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYpIGNvbnN0ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2Ny
ZWVuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TY3Jl
ZW4uaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1TY3JlZW4uaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCB0eXBlZGVmIHN0cnVj
dCBDR0NvbG9yU3BhY2UgKkNHQ29sb3JTcGFjCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgRGVzdGluYXRpb25Db2xvclNwYWNlOwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgRmxvYXRT
aXplOwogY2xhc3MgV2lkZ2V0OwpAQCAtNjgsNiArNjksNyBAQCB1c2luZyBJT1JlZ2lzdHJ5R1BV
SUQgPSBpbnQ2NF90OyAvLyBHbG9iCiBpbnQgc2NyZWVuRGVwdGgoV2lkZ2V0Kik7CiBpbnQgc2Ny
ZWVuRGVwdGhQZXJDb21wb25lbnQoV2lkZ2V0Kik7CiBib29sIHNjcmVlbklzTW9ub2Nocm9tZShX
aWRnZXQqKTsKK1dFQkNPUkVfRVhQT1JUIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBzY3JlZW5Db2xv
clNwYWNlKFdpZGdldCogPSBudWxscHRyKTsKIAogYm9vbCBzY3JlZW5IYXNJbnZlcnRlZENvbG9y
cygpOwogCkBAIC0xMDAsMTAgKzEwMiw2IEBAIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2NyZWVuU3Vw
cG9ydHNIaWdoRHkKIGNvbnN0ZXhwciBib29sIHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5n
ZShXaWRnZXQqID0gbnVsbHB0cikgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCi0jaWYgVVNF
KENHKQotV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIHNjcmVlbkNvbG9yU3BhY2UoV2lk
Z2V0KiA9IG51bGxwdHIpOwotI2VuZGlmCi0KIHN0cnVjdCBTY3JlZW5Qcm9wZXJ0aWVzOwogc3Ry
dWN0IFNjcmVlbkRhdGE7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jl
ZW5Qcm9wZXJ0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
ZWVuUHJvcGVydGllcy5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JlZW5Qcm9wZXJ0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNp
bmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogI2luY2x1
ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CkBAIC0zMiwxNCArMzMsMTIgQEAKICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLXR5cGVkZWYg
c3RydWN0IENHQ29sb3JTcGFjZSAqQ0dDb2xvclNwYWNlUmVmOwotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0cnVjdCBTY3JlZW5EYXRhIHsKICAgICBGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxl
UmVjdDsKICAgICBGbG9hdFJlY3Qgc2NyZWVuUmVjdDsKLSAgICBSZXRhaW5QdHI8Q0dDb2xvclNw
YWNlUmVmPiBjb2xvclNwYWNlOworICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNl
IHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsKICAgICBpbnQgc2NyZWVuRGVwdGgg
eyAwIH07CiAgICAgaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50IHsgMCB9OwogICAgIGJvb2wg
c2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yIHsgZmFsc2UgfTsKQEAgLTU2LDEzICs1NSwxMiBA
QCBzdHJ1Y3QgU2NyZWVuRGF0YSB7CiAgICAgZmxvYXQgc2NhbGVGYWN0b3IgeyAxIH07CiAjZW5k
aWYKIAotICAgIGVudW0gY2xhc3MgQ29sb3JTcGFjZVR5cGUgOiB1aW50OF90IHsgTm9uZSwgTmFt
ZSwgRGF0YSB9OwogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8
U2NyZWVuRGF0YT4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKLXR5cGVkZWYgSGFzaE1hcDxQbGF0
Zm9ybURpc3BsYXlJRCwgU2NyZWVuRGF0YT4gU2NyZWVuRGF0YU1hcDsKLSAgICAKK3VzaW5nIFNj
cmVlbkRhdGFNYXAgPSBIYXNoTWFwPFBsYXRmb3JtRGlzcGxheUlELCBTY3JlZW5EYXRhPjsKKwog
c3RydWN0IFNjcmVlblByb3BlcnRpZXMgewogICAgIFBsYXRmb3JtRGlzcGxheUlEIHByaW1hcnlE
aXNwbGF5SUQgeyAwIH07CiAgICAgU2NyZWVuRGF0YU1hcCBzY3JlZW5EYXRhTWFwOwpAQCAtNzQs
OCArNzIsNyBAQCBzdHJ1Y3QgU2NyZWVuUHJvcGVydGllcyB7CiB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPgogdm9pZCBTY3JlZW5Qcm9wZXJ0aWVzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIHsKLSAgICBlbmNvZGVyIDw8IHByaW1hcnlEaXNwbGF5SUQ7Ci0gICAgZW5jb2RlciA8PCBz
Y3JlZW5EYXRhTWFwOworICAgIGVuY29kZXIgPDwgcHJpbWFyeURpc3BsYXlJRCA8PCBzY3JlZW5E
YXRhTWFwOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtOTcsNyArOTQsNyBAQCBP
cHRpb25hbDxTY3JlZW5Qcm9wZXJ0aWVzPiBTY3JlZW5Qcm9wZXJ0CiB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgogdm9pZCBTY3JlZW5EYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
IHsKLSAgICBlbmNvZGVyIDw8IHNjcmVlbkF2YWlsYWJsZVJlY3QgPDwgc2NyZWVuUmVjdCA8PCBz
Y3JlZW5EZXB0aCA8PCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCA8PCBzY3JlZW5TdXBwb3J0c0V4
dGVuZGVkQ29sb3IgPDwgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMgPDwgc2NyZWVuU3VwcG9ydHNI
aWdoRHluYW1pY1JhbmdlOworICAgIGVuY29kZXIgPDwgc2NyZWVuQXZhaWxhYmxlUmVjdCA8PCBz
Y3JlZW5SZWN0IDw8IGNvbG9yU3BhY2UgPDwgc2NyZWVuRGVwdGggPDwgc2NyZWVuRGVwdGhQZXJD
b21wb25lbnQgPDwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yIDw8IHNjcmVlbkhhc0ludmVy
dGVkQ29sb3JzIDw8IHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZTsKIAogI2lmIFBMQVRG
T1JNKE1BQykKICAgICBlbmNvZGVyIDw8IHNjcmVlbklzTW9ub2Nocm9tZSA8PCBkaXNwbGF5TWFz
ayA8PCBncHVJRCA8PCBwcmVmZXJyZWREeW5hbWljUmFuZ2VNb2RlOwpAQCAtMTA2LDI4ICsxMDMs
NiBAQCB2b2lkIFNjcmVlbkRhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyCiAjaWYgUExBVEZP
Uk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGVuY29kZXIgPDwgc2NhbGVGYWN0
b3I7CiAjZW5kaWYKLQotICAgIGlmIChjb2xvclNwYWNlKSB7Ci0gICAgICAgIC8vIFRyeSB0byBl
bmNvZGUgdGhlIG5hbWUuCi0gICAgICAgIGlmIChhdXRvIG5hbWUgPSBhZG9wdENGKENHQ29sb3JT
cGFjZUNvcHlOYW1lKGNvbG9yU3BhY2UuZ2V0KCkpKSkgewotICAgICAgICAgICAgZW5jb2RlciA8
PCBDb2xvclNwYWNlVHlwZTo6TmFtZTsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgU3RyaW5nKG5h
bWUuZ2V0KCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8g
RmFpbGluZyB0aGF0LCBqdXN0IGVuY29kZSB0aGUgSUNDIGRhdGEuCi0gICAgICAgIGlmIChhdXRv
IHByb2ZpbGVEYXRhID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDb3B5SUNDRGF0YShjb2xvclNwYWNl
LmdldCgpKSkpIHsKLSAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBpY2NEYXRhOwotICAgICAg
ICAgICAgaWNjRGF0YS5hcHBlbmQoQ0ZEYXRhR2V0Qnl0ZVB0cihwcm9maWxlRGF0YS5nZXQoKSks
IENGRGF0YUdldExlbmd0aChwcm9maWxlRGF0YS5nZXQoKSkpOwotCi0gICAgICAgICAgICBlbmNv
ZGVyIDw8IENvbG9yU3BhY2VUeXBlOjpEYXRhOwotICAgICAgICAgICAgZW5jb2RlciA8PCBpY2NE
YXRhOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gVGhl
IGNvbG9yIHNwYWNlIHdhcyBudWxsIG9yIGZhaWxlZCB0byBiZSBlbmNvZGVkLgotICAgIGVuY29k
ZXIgPDwgQ29sb3JTcGFjZVR5cGU6Ok5vbmU7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
CkBAIC0xNDMsNiArMTE4LDExIEBAIE9wdGlvbmFsPFNjcmVlbkRhdGE+IFNjcmVlbkRhdGE6OmRl
Y29kZSgKICAgICBpZiAoIXNjcmVlblJlY3QpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAKKyAgICBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IHNjcmVlbkNvbG9yU3BhY2U7
CisgICAgZGVjb2RlciA+PiBzY3JlZW5Db2xvclNwYWNlOworICAgIGlmICghc2NyZWVuQ29sb3JT
cGFjZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwogICAgIE9wdGlvbmFsPGludD4g
c2NyZWVuRGVwdGg7CiAgICAgZGVjb2RlciA+PiBzY3JlZW5EZXB0aDsKICAgICBpZiAoIXNjcmVl
bkRlcHRoKQpAQCAtMTk3LDQxICsxNzcsMTAgQEAgT3B0aW9uYWw8U2NyZWVuRGF0YT4gU2NyZWVu
RGF0YTo6ZGVjb2RlKAogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogI2VuZGlmCiAKLSAg
ICBDb2xvclNwYWNlVHlwZSBkYXRhVHlwZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFU
eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIFJldGFpblB0cjxDR0Nv
bG9yU3BhY2VSZWY+IGNnQ29sb3JTcGFjZTsKLSAgICBzd2l0Y2ggKGRhdGFUeXBlKSB7Ci0gICAg
Y2FzZSBDb2xvclNwYWNlVHlwZTo6Tm9uZToKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDb2xv
clNwYWNlVHlwZTo6TmFtZTogewotICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGNvbG9yU3BhY2VO
YW1lOwotICAgICAgICBkZWNvZGVyID4+IGNvbG9yU3BhY2VOYW1lOwotICAgICAgICBBU1NFUlQo
Y29sb3JTcGFjZU5hbWUpOwotICAgICAgICBpZiAoIWNvbG9yU3BhY2VOYW1lKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgICAgICBjZ0NvbG9yU3BhY2UgPSBhZG9wdENG
KENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGNvbG9yU3BhY2VOYW1lLT5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENvbG9yU3BhY2VU
eXBlOjpEYXRhOiB7Ci0gICAgICAgIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gaWNjRGF0YTsK
LSAgICAgICAgZGVjb2RlciA+PiBpY2NEYXRhOwotICAgICAgICBBU1NFUlQoaWNjRGF0YSk7Ci0g
ICAgICAgIGlmICghaWNjRGF0YSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0K
LSAgICAgICAgYXV0byBjb2xvclNwYWNlRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGljY0RhdGEtPmRhdGEoKSwgaWNjRGF0YS0+c2l6ZSgpKSk7Ci0gICAg
ICAgIGNnQ29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aElDQ0RhdGEo
Y29sb3JTcGFjZURhdGEuZ2V0KCkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIH0KLQog
ICAgIHJldHVybiB7IHsKICAgICAgICAgV1RGTW92ZSgqc2NyZWVuQXZhaWxhYmxlUmVjdCksCiAg
ICAgICAgIFdURk1vdmUoKnNjcmVlblJlY3QpLAotICAgICAgICBXVEZNb3ZlKGNnQ29sb3JTcGFj
ZSksCisgICAgICAgIFdURk1vdmUoKnNjcmVlbkNvbG9yU3BhY2UpLAogICAgICAgICBXVEZNb3Zl
KCpzY3JlZW5EZXB0aCksCiAgICAgICAgIFdURk1vdmUoKnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50
KSwKICAgICAgICAgV1RGTW92ZSgqc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKSwKQEAgLTI1
MCwxNiArMTk5LDMgQEAgT3B0aW9uYWw8U2NyZWVuRGF0YT4gU2NyZWVuRGF0YTo6ZGVjb2RlKAog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0
ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlNjcmVlbkRhdGE6OkNvbG9yU3BhY2VUeXBl
PiB7Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAgICAgICAgV2ViQ29yZTo6U2Ny
ZWVuRGF0YTo6Q29sb3JTcGFjZVR5cGUsCi0gICAgICAgIFdlYkNvcmU6OlNjcmVlbkRhdGE6OkNv
bG9yU3BhY2VUeXBlOjpOb25lLAotICAgICAgICBXZWJDb3JlOjpTY3JlZW5EYXRhOjpDb2xvclNw
YWNlVHlwZTo6TmFtZSwKLSAgICAgICAgV2ViQ29yZTo6U2NyZWVuRGF0YTo6Q29sb3JTcGFjZVR5
cGU6OkRhdGEKLSAgICA+OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NCw3ICsxNjQsNyBAQCBSZWZQdHI8TmF0aXZlSW1h
Z2U+IEJpdG1hcEltYWdlOjpwcmVUcmFuCiAgICAgICAgIHJldHVybiBpbWFnZTsKIAogICAgIGF1
dG8gY29ycmVjdGVkU2l6ZUZsb2F0ID0gY29ycmVjdGVkU2l6ZSA/IEZsb2F0U2l6ZShjb3JyZWN0
ZWRTaXplLnZhbHVlKCkpIDogc2l6ZSgpOwotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShjb3JyZWN0ZWRTaXplRmxvYXQsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
IDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY29ycmVjdGVkU2l6ZUZsb2F0LCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIGltYWdlOwogCkBAIC0zNTIsNyArMzUyLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1Bh
dHRlcm4oR3JhcGhpY3NDbwogICAgIH0KIAogICAgIGlmICghbV9jYWNoZWRJbWFnZSkgewotICAg
ICAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4
cGFuZGVkSW50U2l6ZSh0aWxlUmVjdC5zaXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IsIGN0eHQpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZSh0aWxlUmVjdC5zaXplKCkpLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgY3R4dCk7CiAgICAgICAgIGlmICghYnVmZmVyKQogICAgICAg
ICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3IuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw3ICsxNjgsNyBAQCBDb2xv
ckNvbXBvbmVudHM8ZmxvYXQsIDQ+IENvbG9yOjp0b0NvbG9yCiAgICAgcmV0dXJuIGNvbnZlckNv
bG9yQ29tcG9uZW50cyhpbnB1dENvbG9yU3BhY2UsIGNvbXBvbmVudHMsIG91dHB1dENvbG9yU3Bh
Y2UpOwogfQogCi1Db2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IENvbG9yOjp0b0NvbG9yQ29tcG9u
ZW50c0luQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugb3V0cHV0Q29sb3JTcGFjZSkg
Y29uc3QKK0NvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gQ29sb3I6OnRvQ29sb3JDb21wb25lbnRz
SW5Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgb3V0cHV0Q29sb3JTcGFj
ZSkgY29uc3QKIHsKICAgICBhdXRvIFtpbnB1dENvbG9yU3BhY2UsIGNvbXBvbmVudHNdID0gY29s
b3JTcGFjZUFuZENvbXBvbmVudHMoKTsKICAgICByZXR1cm4gY29udmVyQ29sb3JDb21wb25lbnRz
KGlucHV0Q29sb3JTcGFjZSwgY29tcG9uZW50cywgb3V0cHV0Q29sb3JTcGFjZSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDb2xvckNvbnZlcnNpb24uaCIKICNpbmNs
dWRlICJDb2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKKyNpbmNsdWRl
ICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KQEAgLTEy
MSw3ICsxMjIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8VD4g
dG9TUkdCQUxvc3N5KCkgY29uc3QgeyByZXR1cm4gdG9Db2xvclR5cGVMb3NzeTxTUkdCQTxUPj4o
KTsgfQogCiAgICAgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiB0b0NvbG9yQ29tcG9uZW50c0lu
Q29sb3JTcGFjZShDb2xvclNwYWNlKSBjb25zdDsKLSAgICBDb2xvckNvbXBvbmVudHM8ZmxvYXQs
IDQ+IHRvQ29sb3JDb21wb25lbnRzSW5Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSkg
Y29uc3Q7CisgICAgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiB0b0NvbG9yQ29tcG9uZW50c0lu
Q29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKSBjb25zdDsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQs
IDQ+PiBjb2xvclNwYWNlQW5kQ29tcG9uZW50cygpIGNvbnN0OwogCkBAIC0yNjcsNiArMjY4LDcg
QEAgYm9vbCBvdXRPZkxpbmVDb21wb25lbnRzc0VxdWFsSWdub3JpbmdTZQogCiAjaWYgVVNFKENH
KQogV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJik7
CitXRUJDT1JFX0VYUE9SVCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IHBsYXRmb3JtQ29udmVy
dENvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+LCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKICNlbmRpZgogCiBXRUJDT1JFX0VYUE9SVCBX
VEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgQ29sb3Im
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JDb252ZXJzaW9uLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NyArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbG9yQ29udmVyc2lv
bi5oIgogCisjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJDb2xvclNwYWNlLmgiCisjaW5j
bHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzE4LDE4ICszMjAsMjEgQEAgQ29sb3JDb21w
b25lbnRzPGZsb2F0LCA0PiBjb252ZXJDb2xvckNvbQogICAgIH0pOwogfQogCi1Db2xvckNvbXBv
bmVudHM8ZmxvYXQsIDQ+IGNvbnZlckNvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlIGlucHV0Q29s
b3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBpbnB1dENvbG9yQ29tcG9uZW50cywg
RGVzdGluYXRpb25Db2xvclNwYWNlIG91dHB1dENvbG9yU3BhY2UpCitDb2xvckNvbXBvbmVudHM8
ZmxvYXQsIDQ+IGNvbnZlckNvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlIGlucHV0Q29sb3JTcGFj
ZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBpbnB1dENvbG9yQ29tcG9uZW50cywgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBvdXRwdXRDb2xvclNwYWNlKQogeworI2lmIFVTRShDRykK
KyAgICByZXR1cm4gcGxhdGZvcm1Db252ZXJ0Q29sb3JDb21wb25lbnRzKGlucHV0Q29sb3JTcGFj
ZSwgaW5wdXRDb2xvckNvbXBvbmVudHMsIG91dHB1dENvbG9yU3BhY2UpOworI2Vsc2UKICAgICBy
ZXR1cm4gY2FsbFdpdGhDb2xvclR5cGUoaW5wdXRDb2xvckNvbXBvbmVudHMsIGlucHV0Q29sb3JT
cGFjZSwgW291dHB1dENvbG9yU3BhY2VdIChjb25zdCBhdXRvJiBpbnB1dENvbG9yKSB7Ci0gICAg
ICAgIHN3aXRjaCAob3V0cHV0Q29sb3JTcGFjZSkgewotICAgICAgICBjYXNlIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQjoKKyAgICAgICAgc3dpdGNoIChvdXRwdXRDb2xvclNwYWNlLnBsYXRm
b3JtQ29sb3JTcGFjZSgpKSB7CisgICAgICAgIGNhc2UgUGxhdGZvcm1Db2xvclNwYWNlOjpOYW1l
OjpTUkdCOgogICAgICAgICAgICAgcmV0dXJuIGFzQ29sb3JDb21wb25lbnRzKGNvbnZlcnRDb2xv
cjxTUkdCQTxmbG9hdD4+KGlucHV0Q29sb3IpKTsKICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09M
T1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpMaW5lYXJTUkdCOgotICAgICAgICAgICAgcmV0dXJuIGFzQ29sb3JDb21wb25lbnRzKGNvbnZl
cnRDb2xvcjxMaW5lYXJTUkdCQTxmbG9hdD4+KGlucHV0Q29sb3IpKTsKKyAgICAgICAgY2FzZSBQ
bGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU6OkxpbmVhclNSR0I6CisgICAgICAgICAgICByZXR1cm4g
YXNDb2xvckNvbXBvbmVudHMoY29udmVydENvbG9yPExpbmVhclNSR0I8ZmxvYXQ+PihpbnB1dENv
bG9yKSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExB
WV9QMykKLSAgICAgICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMzoKKyAg
ICAgICAgY2FzZSBQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU6OkRpc3BsYXlQMzoKICAgICAgICAg
ICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhjb252ZXJ0Q29sb3I8RGlzcGxheVAzPGZsb2F0
Pj4oaW5wdXRDb2xvcikpOwogI2VuZGlmCiAgICAgICAgIH0KQEAgLTMzNyw2ICszNDIsNyBAQCBD
b2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbnZlckNvbG9yQ29tCiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gYXNDb2xvckNvbXBvbmVudHMoY29udmVydENv
bG9yPFNSR0JBPGZsb2F0Pj4oaW5wdXRDb2xvcikpOwogICAgIH0pOworI2VuZGlmCiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yQ29udmVyc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtMjksMTUgKzI5LDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
RGVzdGluYXRpb25Db2xvclNwYWNlOworCiBlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90
OwotZW51bSBjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgOiB1aW50OF90OwogCiAvLyBDb252
ZXJzaW9uIGZ1bmN0aW9uIGZvciB0eXBlZCBjb2xvcnMuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPdXRw
dXQsIHR5cGVuYW1lIElucHV0PiBPdXRwdXQgY29udmVydENvbG9yKGNvbnN0IElucHV0JiBjb2xv
cik7CiAKIC8vIENvbnZlcnNpb24gZnVuY3Rpb25zIGZvciByYXcgY29sb3IgY29tcG9uZW50cyB3
aXRoIGFzc29jaWF0ZWQgY29sb3Igc3BhY2VzLgogQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBj
b252ZXJDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1dENvbG9yU3BhY2UsIENvbG9yQ29t
cG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVudHMsIENvbG9yU3BhY2Ugb3V0cHV0
Q29sb3JTcGFjZSk7Ci1Db2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbnZlckNvbG9yQ29tcG9u
ZW50cyhDb2xvclNwYWNlIGlucHV0Q29sb3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0
PiBpbnB1dENvbG9yQ29tcG9uZW50cywgRGVzdGluYXRpb25Db2xvclNwYWNlIG91dHB1dENvbG9y
U3BhY2UpOworQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb252ZXJDb2xvckNvbXBvbmVudHMo
Q29sb3JTcGFjZSBpbnB1dENvbG9yU3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gaW5w
dXRDb2xvckNvbXBvbmVudHMsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgb3V0cHV0Q29s
b3JTcGFjZSk7CiAKIAogLy8gQWxsIGNvbG9yIHR5cGVzLCBvdGhlciB0aGFuIFhZWkEgb3IgdGhv
c2UgaW5oZXJpdGluZyBmcm9tIFJHQlR5cGUsIG11c3QgaW1wbGVtZW50CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDI0ICs2NCw0IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIEMKICAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNl
KQotewotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNhc2UgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCOgotICAgICAgICB0cyA8PCAic1JHQiI7Ci0gICAgICAgIGJyZWFrOwotI2lm
IEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICBjYXNlIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQjoKLSAgICAgICAgdHMgPDwgIkxpbmVhclNS
R0IiOwotICAgICAgICBicmVhazsKLSNlbmRpZgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xP
Ul9TUEFDRV9ESVNQTEFZX1AzKQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNw
bGF5UDM6Ci0gICAgICAgIHRzIDw8ICJEaXNwbGF5UDMiOwotICAgICAgICBicmVhazsKLSNlbmRp
ZgotICAgIH0KLSAgICByZXR1cm4gdHM7Ci19Ci0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMjgsMTAgKzI4LDcgQEAKICNpbmNsdWRlICJDb2xvclR5cGVzLmgiCiAjaW5jbHVkZSA8
ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgotCi1uYW1lc3BhY2UgV1RG
IHsKLWNsYXNzIFRleHRTdHJlYW07Ci19CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NywxOCArNDQsNyBAQCBlbnVtIGNsYXNzIENvbG9yU3Bh
Y2UgOiB1aW50OF90IHsKICAgICBYWVpfRDUwLAogfTsKIAotZW51bSBjbGFzcyBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgOiB1aW50OF90IHsKLSAgICBTUkdCCi0jaWYgRU5BQkxFKERFU1RJTkFUSU9O
X0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQotICAgICwgTGluZWFyU1JHQgotI2VuZGlmCi0jaWYg
RU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCi0gICAgLCBEaXNwbGF5
UDMKLSNlbmRpZgotfTsKLQotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFdURjo6VGV4dFN0cmVhbSYsIENvbG9yU3BhY2UpOwotV0VCQ09SRV9FWFBPUlQgV1RGOjpU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSk7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
LCBDb2xvclNwYWNlKTsKIAogCiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IENvbG9yU3BhY2VN
YXBwaW5nOwpAQCAtMTAyLDI1ICs4OCw2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IEZ1bmN0b3I+IGMKICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+
KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8U1JHQkE8VD4+KGNvbXBvbmVudHMpKTsKIH0K
IAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRnVuY3Rvcj4gY29uc3RleHByIGRlY2x0
eXBlKGF1dG8pIGNhbGxXaXRoQ29sb3JUeXBlKGNvbnN0IENvbG9yQ29tcG9uZW50czxULCA0PiYg
Y29tcG9uZW50cywgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIEZ1bmN0b3ImJiBm
dW5jdG9yKQotewotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNhc2UgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCOgotICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3
YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8U1JHQkE8VD4+KGNvbXBv
bmVudHMpKTsKLSNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0Ip
Ci0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0I6Ci0gICAgICAgIHJl
dHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIG1ha2VGcm9t
Q29tcG9uZW50czxMaW5lYXJTUkdCQTxUPj4oY29tcG9uZW50cykpOwotI2VuZGlmCi0jaWYgRU5B
QkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCi0gICAgY2FzZSBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMzoKLSAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0
ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFrZUZyb21Db21wb25lbnRzPERpc3BsYXlQ
MzxUPj4oY29tcG9uZW50cykpOwotI2VuZGlmCi0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5j
dG9yKSwgbWFrZUZyb21Db21wb25lbnRzPFNSR0JBPFQ+Pihjb21wb25lbnRzKSk7Ci19Ci0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkBAIC0xNDEsMTcgKzEwOCw0IEBAIHRlbXBsYXRlPD4g
c3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q28KICAgICA+OwogfTsKIAotdGVtcGxhdGU8PiBz
dHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IHsKLSAgICB1
c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAotICAgICAgICBXZWJDb3JlOjpEZXN0aW5hdGlvbkNv
bG9yU3BhY2UsCi0gICAgICAgIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQgot
I2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICAgICAg
LCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IKLSNlbmRpZgotI2lm
IEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQotICAgICAgICAsIFdl
YkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxheVAzCi0jZW5kaWYKLSAgICA+Owot
fTsKLQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJ
bWFnZUJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw3ICszNCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPgogY2xh
c3MgQ29uY3JldGVJbWFnZUJ1ZmZlciA6IHB1YmxpYyBJbWFnZUJ1ZmZlciB7CiBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgSW1hZ2VCdWZmZXJUeXBlID0gQ29uY3JldGVJbWFnZUJ1ZmZl
ciwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXJU
eXBlPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1h
dCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRz
KQorICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXJUeXBlPiBjcmVhdGUoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5k
b3cqIGhvc3RXaW5kb3csIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKICAgICB7CiAgICAgICAg
IGF1dG8gcGFyYW1ldGVycyA9IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyB7IHNpemUs
IHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQgfTsKICAgICAgICAgYXV0
byBiYWNrZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShwYXJhbWV0ZXJzLCBob3N0V2luZG93KTsK
QEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEltYWdlQnVm
ZmVyVHlwZSA9IENvbmNyZXRlSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KICAg
ICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBBcmd1bWVudHMmJi4uLiBhcmd1
bWVudHMpCiAgICAgewotICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBJbWFnZUJ1ZmZlckJhY2tl
bmQ6OlBhcmFtZXRlcnMgeyBzaXplLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBp
eGVsRm9ybWF0OjpCR1JBOCB9OworICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBJbWFnZUJ1ZmZl
ckJhY2tlbmQ6OlBhcmFtZXRlcnMgeyBzaXplLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4IH07CiAgICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tl
bmRUeXBlOjpjcmVhdGUocGFyYW1ldGVycywgY29udGV4dCk7CiAgICAgICAgIGlmICghYmFja2Vu
ZCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTk1LDcgKzE5NSw3IEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgfQogICAgIH0KIAotICAgIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShE
ZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNl
IGRlc3RDb2xvclNwYWNlKSBvdmVycmlkZQorICAgIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHNyY0NvbG9yU3BhY2UsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgZGVzdENvbG9yU3BhY2UpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBp
ZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKICAgICAgICAgICAg
IGZsdXNoRHJhd2luZ0NvbnRleHQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3Nz
ZmFkZUdlbmVyYXRlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBA
IEltYWdlRHJhd1Jlc3VsdCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZToKIAogdm9pZCBDcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFz
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKIHsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShz
aXplKCksIGNvbnRleHQucmVuZGVyaW5nTW9kZSgpLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBjb250ZXh0LnJlbmRlcmluZ01vZGUoKSwgMSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFp
bWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHAJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGlu
YXRpb25Db2xvclNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExNCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9y
U3BhY2UuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KKworI2lmIFVTRShD
RykKKyNpbmNsdWRlICJDb2xvclNwYWNlQ0cuaCIKKyNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVH
cmFwaGljc1NQSS5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRGVzdGluYXRp
b25Db2xvclNwYWNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpCit7CisjaWYgVVNFKENH
KQorICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2Uoc1JHQkNvbG9yU3BhY2VSZWYoKSk7
CisjZWxzZQorICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UoVHlwZTo6U1JHQik7Cisj
ZW5kaWYKK30KKworI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JH
QikKK0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNS
R0IoKQoreworI2lmIFVTRShDRykKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlKGxp
bmVhclNSR0JDb2xvclNwYWNlUmVmKCkpOworI2Vsc2UKKyAgICByZXR1cm4gRGVzdGluYXRpb25D
b2xvclNwYWNlKFR5cGU6OkxpbmVhclNSR0IpOworI2VuZGlmCit9CisjZW5kaWYKKworI2lmIEVO
QUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQorRGVzdGluYXRpb25Db2xv
clNwYWNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxheVAzKCkKK3sKKyNpZiBVU0UoQ0cp
CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZShkaXNwbGF5UDNDb2xvclNwYWNlUmVm
KCkpOworI2Vsc2UKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlKFR5cGU6OkRpc3Bs
YXlQMyk7CisjZW5kaWYKK30KKyNlbmRpZgorCitEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZShQbGF0Zm9ybUNvbG9yU3BhY2UgcGxhdGZvcm1Db2xvclNwYWNlKQor
ICAgIDogbV9wbGF0Zm9ybUNvbG9yU3BhY2UgeyBXVEZNb3ZlKHBsYXRmb3JtQ29sb3JTcGFjZSkg
fQoreworI2lmIFVTRShDRykKKyAgICBBU1NFUlQobV9wbGF0Zm9ybUNvbG9yU3BhY2UpOworI2Vu
ZGlmCit9CisKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGEs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgYikKK3sKKyAgICBpZiAoYS5wbGF0Zm9ybUNv
bG9yU3BhY2UoKSA9PSBiLnBsYXRmb3JtQ29sb3JTcGFjZSgpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKworI2lmIFVTRShDRykKKyAgICByZXR1cm4gQ0dDb2xvclNwYWNlRXF1YWxUb0NvbG9yU3Bh
Y2UoYS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwgYi5wbGF0Zm9ybUNvbG9yU3BhY2UoKSk7CisjZWxz
ZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCitib29sIG9wZXJhdG9yIT0oY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBhLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGIp
Cit7CisgICAgcmV0dXJuICEoYSA9PSBiKTsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQor
eworICAgIGlmIChjb2xvclNwYWNlID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKQor
ICAgICAgICB0cyA8PCAic1JHQiI7CisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNF
X0xJTkVBUl9TUkdCKQorICAgIGVsc2UgaWYgKGNvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xv
clNwYWNlOjpMaW5lYXJTUkdCKCkpCisgICAgICAgIHRzIDw8ICJMaW5lYXJTUkdCIjsKKyNlbmRp
ZgorI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQorICAgIGVs
c2UgaWYgKGNvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDMoKSkK
KyAgICAgICAgdHMgPDwgIkRpc3BsYXlQMyI7CisjZW5kaWYKKyNpZiBVU0UoQ0cpCisgICAgZWxz
ZSBpZiAoYXV0byBkZXNjcmlwdGlvbiA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ29weUlDQ1Byb2Zp
bGVEZXNjcmlwdGlvbihjb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpKSkpCisgICAgICAg
IHRzIDw8IFN0cmluZyhkZXNjcmlwdGlvbi5nZXQoKSk7CisjZW5kaWYKKworICAgIHJldHVybiB0
czsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGlu
YXRpb25Db2xvclNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiUGxhdGZvcm1Db2xvclNwYWNlLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIHsK
K3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRGVzdGluYXRpb25Db2xvclNwYWNl
IFNSR0IoKTsKKyNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0Ip
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBMaW5lYXJT
UkdCKCk7CisjZW5kaWYKKyNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExB
WV9QMykKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRGVzdGluYXRpb25Db2xvclNwYWNlIERp
c3BsYXlQMygpOworI2VuZGlmCisKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UoUGxhdGZvcm1Db2xvclNwYWNlKTsKKyAgICBQbGF0Zm9ybUNvbG9yU3Bh
Y2VWYWx1ZSBwbGF0Zm9ybUNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtQ29s
b3JTcGFjZS5nZXQoKTsgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBP
cHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGRlY29kZShEZWNvZGVyJik7CisKK3ByaXZh
dGU6CisgICAgUGxhdGZvcm1Db2xvclNwYWNlIG1fcGxhdGZvcm1Db2xvclNwYWNlOworfTsKKwor
V0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYpOworCitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKKwordGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9wbGF0Zm9ybUNvbG9yU3BhY2U7Cit9
CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFj
ZT4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAg
ICBPcHRpb25hbDxQbGF0Zm9ybUNvbG9yU3BhY2U+IHBsYXRmb3JtQ29sb3JTcGFjZTsKKyAgICBk
ZWNvZGVyID4+IHBsYXRmb3JtQ29sb3JTcGFjZTsKKyAgICBpZiAoIXBsYXRmb3JtQ29sb3JTcGFj
ZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgeyBXVEZNb3ZlKCpwbGF0Zm9ybUNvbG9yU3BhY2UpIH07Cit9CisKK30KKwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJ
bWFnZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBA
IHZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3MKICAgICB1bnNpZ25lZCBn
ZW5lcmF0b3JIYXNoID0gbV9ncmFkaWVudC0+aGFzaCgpOwogCiAgICAgaWYgKCFtX2NhY2hlZElt
YWdlIHx8IG1fY2FjaGVkR2VuZXJhdG9ySGFzaCAhPSBnZW5lcmF0b3JIYXNoIHx8IG1fY2FjaGVk
QWRqdXN0ZWRTaXplICE9IGFkanVzdGVkU2l6ZSB8fCAhYXJlRXNzZW50aWFsbHlFcXVhbChkZXN0
Q29udGV4dC5zY2FsZUZhY3RvcigpLCBtX2NhY2hlZFNjYWxlRmFjdG9yKSkgewotICAgICAgICBh
dXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoYWRq
dXN0ZWRTaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGRlc3RDb250ZXh0KTsKKyAg
ICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVm
ZmVyKGFkanVzdGVkU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGRlc3RDb250
ZXh0KTsKICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04ODMsNyAr
ODgzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXRSb3VuZGVkUmVjdAogICAgIGNs
aXBPdXQocGF0aCk7CiB9CiAKLUdyYXBoaWNzQ29udGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRz
UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBGdW5j
dGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikKK0dyYXBoaWNz
Q29udGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6Y2xp
cFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0Nv
bnRleHQmKT4mJiBkcmF3aW5nRnVuY3Rpb24pCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdDo6U3VjY2VzczsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsOCBA
QAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJE
YXNoQXJyYXkuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRl
ICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzVHlwZXMuaCIKQEAgLTQxMCw3ICs0MTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGlwVG9J
bWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpOwogCiAgICAgZW51bSBj
bGFzcyBDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgOiBib29sIHsgU3VjY2VzcywgRmFpbGVk
VG9DcmVhdGVJbWFnZUJ1ZmZlciB9OwotICAgIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBj
bGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGlu
YXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKTsKKyAg
ICBDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZ1
bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpOwogICAgIAogICAgIEludFJlY3QgY2xp
cEJvdW5kcygpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCShyZXZpc2lvbiAyNzc5MTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSkgPSAwOwogICAgIHZpcnR1YWwgSW50
UmVjdCBjbGlwQm91bmRzKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZl
cihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBkcmF3
aW5nRnVuY3Rpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRz
KGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKSA9
IDA7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHZpcnR1YWwgdm9pZCBwYWludEZyYW1lRm9yTWVk
aWEoTWVkaWFQbGF5ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSA9IDA7CiAgICAg
dmlydHVhbCBib29sIGNhblBhaW50RnJhbWVGb3JNZWRpYShjb25zdCBNZWRpYVBsYXllciYpIGNv
bnN0ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgY29uc3QgZmxvYXQgTWF4Q2xhbXBlZExl
bmd0aCA9IDQwOTY7CiBzdGF0aWMgY29uc3QgZmxvYXQgTWF4Q2xhbXBlZEFyZWEgPSBNYXhDbGFt
cGVkTGVuZ3RoICogTWF4Q2xhbXBlZExlbmd0aDsKIAotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5k
ZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdCBzaG91bGRVc2VEaXNwbGF5TGlzdCwgUmVu
ZGVyaW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9z
dFdpbmRvdyogaG9zdFdpbmRvdykKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwg
U2hvdWxkVXNlRGlzcGxheUxpc3Qgc2hvdWxkVXNlRGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1cnBv
c2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2lu
ZG93KiBob3N0V2luZG93KQogewogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7
CiAgICAgCkBAIC01OSw3ICs1OSw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6
OmNyZWF0ZSgKICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZl
cj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01v
ZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5k
b3cqIGhvc3RXaW5kb3cpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUo
Y29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNl
LCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykK
IHsKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOwogICAgIApAQCAtOTUsNyAr
OTUsNyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDCiAgICAgcmV0
dXJuIGltYWdlQnVmZmVyOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpj
cmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgRGVzdGluYXRpb25D
b2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK1Jl
ZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29u
c3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3Bh
Y2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBpZiAoc2l6ZS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTExLDcgKzExMSw3IEBAIFJlZlB0
cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUMKICAgICByZXR1cm4gaW1hZ2VCdWZm
ZXI7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkKIHsKICAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBjb250
ZXh0LnJlbmRlcmluZ01vZGUoKSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOwogfQpAQCAtMTY3LDcgKzE2Nyw3IEBAIEludFNpemUgSW1hZ2VCdWZmZXI6
OmNvbXBhdGlibGVCdWZmZXJTaXoKICAgICByZXR1cm4gZXhwYW5kZWRJbnRTaXplKHNpemUgKiBj
b250ZXh0LnNjYWxlRmFjdG9yKCkpOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVm
ZmVyOjpjb3B5UmVjdFRvQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgRGVzdGluYXRpb25D
b2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK1Jl
ZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNvcHlSZWN0VG9CdWZmZXIoY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIGNv
bnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBpZiAocmVjdC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NSwxMyArNDUsMTMgQEAgc3RydWN0IEl0ZW1CdWZmZXJIYW5kbGU7CiBjbGFzcyBJbWFnZUJ1
ZmZlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFnZUJ1ZmZlcj4sIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxJbWFnZUJ1ZmZlcj4gewogcHVibGljOgogICAgIC8vIFdpbGwgcmV0dXJu
IGEgbnVsbCBwb2ludGVyIG9uIGFsbG9jYXRpb24gZmFpbHVyZS4KLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgUmVu
ZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBQaXhlbEZvcm1hdCwgY29u
c3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
UHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0
LCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdN
b2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdCwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCwgY29u
c3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
UHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhl
bEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKIAogICAgIC8vIENyZWF0ZSBh
biBpbWFnZSBidWZmZXIgY29tcGF0aWJsZSB3aXRoIHRoZSBjb250ZXh0LCB3aXRoIHN1aXRhYmxl
IHJlc29sdXRpb24gZm9yIGRyYXdpbmcgaW50byB0aGUgYnVmZmVyIGFuZCB0aGVuIGludG8gdGhp
cyBjb250ZXh0LgogICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0gICAg
c3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBG
bG9hdFNpemUmLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
OwotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
Y29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VC
dWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CisgICAgc3RhdGlj
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNp
emUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYs
IGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGFyZSB1
c2VkIHdoZW4gY2xhbXBpbmcgdGhlIEltYWdlQnVmZmVyIHdoaWNoIGlzIGNyZWF0ZWQgZm9yIGZp
bHRlciwgbWFza2VyIG9yIGNsaXBwZXIuCiAgICAgc3RhdGljIGJvb2wgc2l6ZU5lZWRzQ2xhbXBp
bmcoY29uc3QgRmxvYXRTaXplJik7CkBAIC0xMDcsNyArMTA3LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgUmVmUHRyPEltYWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNr
aW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNv
bnN0ID0gMDsKIAogICAgIC8vIENyZWF0ZSBhbiBpbWFnZSBidWZmZXIgY29tcGF0aWJsZSB3aXRo
IHRoZSBjb250ZXh0IGFuZCBjb3B5IHJlY3QgZnJvbSB0aGlzIGJ1ZmZlciBpbnRvIHRoaXMgbmV3
IG9uZS4KLSAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNvcHlSZWN0VG9CdWZmZXIoY29uc3QgRmxv
YXRSZWN0JiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsK
KyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNvcHlSZWN0VG9CdWZmZXIoY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7
CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwg
LTEsIC0xKSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsKQEAg
LTEyMCw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNsaXBUb01hc2soR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkgPSAwOwogCiAgICAgdmly
dHVhbCB2b2lkIGNvbnZlcnRUb0x1bWluYW5jZU1hc2soKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIHNyY0NvbG9yU3BhY2Us
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBkc3RDb2xvclNwYWNlKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBzcmND
b2xvclNwYWNlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGRzdENvbG9yU3BhY2UpID0g
MDsKIAogICAgIHZpcnR1YWwgU3RyaW5nIHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkgPSBXVEY6Om51bGxvcHQsIFByZXNlcnZlUmVzb2x1
dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFZl
Y3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91
YmxlPiBxdWFsaXR5ID0gV1RGOjpudWxsb3B0KSBjb25zdCA9IDA7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5j
cHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDggQEAg
SW1hZ2VCdWZmZXJCYWNrZW5kOjpJbWFnZUJ1ZmZlckJhY2tlbmQoYwogewogfQogCitJbWFnZUJ1
ZmZlckJhY2tlbmQ6On5JbWFnZUJ1ZmZlckJhY2tlbmQoKSA9IGRlZmF1bHQ7CisKIFJlZlB0cjxO
YXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJCYWNrZW5kOjpzaW5rSW50b05hdGl2ZUltYWdlKCkKIHsK
ICAgICByZXR1cm4gY29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKQEAgLTEx
NCwxNSArMTE2LDE3IEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZlckJhY2tlbmQK
ICAgICBpZiAoZGVzdGluYXRpb25SZWN0LnNpemUoKSAhPSBzb3VyY2VSZWN0U2NhbGVkLnNpemUo
KSkKICAgICAgICAgcGl4ZWxCdWZmZXItPmRhdGEoKS56ZXJvRmlsbCgpOwogCi0gICAgQ29uc3RQ
aXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IHNvdXJjZTsKLSAgICBzb3VyY2UuZm9ybWF0ID0geyBB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBwaXhlbEZvcm1hdCgpLCBjb2xv
clNwYWNlKCkgfTsKLSAgICBzb3VyY2UuYnl0ZXNQZXJSb3cgPSBieXRlc1BlclJvdygpOwotICAg
IHNvdXJjZS5yb3dzID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YSkgKyBzb3VyY2VS
ZWN0Q2xpcHBlZC55KCkgKiBzb3VyY2UuYnl0ZXNQZXJSb3cgKyBzb3VyY2VSZWN0Q2xpcHBlZC54
KCkgKiA0OworICAgIENvbnN0UGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBzb3VyY2UgeworICAg
ICAgICB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIHBpeGVsRm9ybWF0
KCksIGNvbG9yU3BhY2UoKSB9LAorICAgICAgICBieXRlc1BlclJvdygpLAorICAgICAgICByZWlu
dGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhKSArIHNvdXJjZVJlY3RDbGlwcGVkLnkoKSAqIHNv
dXJjZS5ieXRlc1BlclJvdyArIHNvdXJjZVJlY3RDbGlwcGVkLngoKSAqIDQKKyAgICB9OwogICAg
IAotICAgIFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgZGVzdGluYXRpb247Ci0gICAgZGVzdGlu
YXRpb24uZm9ybWF0ID0gZGVzdGluYXRpb25Gb3JtYXQ7Ci0gICAgZGVzdGluYXRpb24uYnl0ZXNQ
ZXJSb3cgPSA0ICogc291cmNlUmVjdFNjYWxlZC53aWR0aCgpOwotICAgIGRlc3RpbmF0aW9uLnJv
d3MgPSBwaXhlbEJ1ZmZlci0+ZGF0YSgpLmRhdGEoKSArIGRlc3RpbmF0aW9uUmVjdC55KCkgKiBk
ZXN0aW5hdGlvbi5ieXRlc1BlclJvdyArIGRlc3RpbmF0aW9uUmVjdC54KCkgKiA0OworICAgIFBp
eGVsQnVmZmVyQ29udmVyc2lvblZpZXcgZGVzdGluYXRpb24geworICAgICAgICBkZXN0aW5hdGlv
bkZvcm1hdCwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDQgKiBzb3VyY2VSZWN0U2Nh
bGVkLndpZHRoKCkpLAorICAgICAgICBwaXhlbEJ1ZmZlci0+ZGF0YSgpLmRhdGEoKSArIGRlc3Rp
bmF0aW9uUmVjdC55KCkgKiBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyArIGRlc3RpbmF0aW9uUmVj
dC54KCkgKiA0CisgICAgfTsKIAogICAgIGNvbnZlcnRJbWFnZVBpeGVscyhzb3VyY2UsIGRlc3Rp
bmF0aW9uLCBkZXN0aW5hdGlvblJlY3Quc2l6ZSgpKTsKIApAQCAtMTQ3LDE1ICsxNTEsMTcgQEAg
dm9pZCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnB1dFBpeGVsQnVmZmVyKAogICAgIGRlc3RpbmF0aW9u
UmVjdC5pbnRlcnNlY3QoYmFja2VuZFJlY3QoKSk7CiAgICAgc291cmNlUmVjdENsaXBwZWQuc2V0
U2l6ZShkZXN0aW5hdGlvblJlY3Quc2l6ZSgpKTsKIAotICAgIENvbnN0UGl4ZWxCdWZmZXJDb252
ZXJzaW9uVmlldyBzb3VyY2U7Ci0gICAgc291cmNlLmZvcm1hdCA9IHNvdXJjZVBpeGVsQnVmZmVy
LmZvcm1hdCgpOwotICAgIHNvdXJjZS5ieXRlc1BlclJvdyA9IDQgKiBzb3VyY2VQaXhlbEJ1ZmZl
ci5zaXplKCkud2lkdGgoKTsKLSAgICBzb3VyY2Uucm93cyA9IHNvdXJjZVBpeGVsQnVmZmVyLmRh
dGEoKS5kYXRhKCkgKyBzb3VyY2VSZWN0Q2xpcHBlZC55KCkgKiBzb3VyY2UuYnl0ZXNQZXJSb3cg
KyBzb3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0OwotCi0gICAgUGl4ZWxCdWZmZXJDb252ZXJzaW9u
VmlldyBkZXN0aW5hdGlvbjsKLSAgICBkZXN0aW5hdGlvbi5mb3JtYXQgPSB7IGRlc3RpbmF0aW9u
QWxwaGFGb3JtYXQsIHBpeGVsRm9ybWF0KCksIGNvbG9yU3BhY2UoKSB9OwotICAgIGRlc3RpbmF0
aW9uLmJ5dGVzUGVyUm93ID0gYnl0ZXNQZXJSb3coKTsKLSAgICBkZXN0aW5hdGlvbi5yb3dzID0g
cmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YSkgKyBkZXN0aW5hdGlvblJlY3QueSgpICog
ZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgKyBkZXN0aW5hdGlvblJlY3QueCgpICogNDsKKyAgICBD
b25zdFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgc291cmNlIHsKKyAgICAgICAgc291cmNlUGl4
ZWxCdWZmZXIuZm9ybWF0KCksCisgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPig0ICogc291
cmNlUGl4ZWxCdWZmZXIuc2l6ZSgpLndpZHRoKCkpLAorICAgICAgICBzb3VyY2VQaXhlbEJ1ZmZl
ci5kYXRhKCkuZGF0YSgpICsgc291cmNlUmVjdENsaXBwZWQueSgpICogc291cmNlLmJ5dGVzUGVy
Um93ICsgc291cmNlUmVjdENsaXBwZWQueCgpICogNAorICAgIH07CisKKyAgICBQaXhlbEJ1ZmZl
ckNvbnZlcnNpb25WaWV3IGRlc3RpbmF0aW9uIHsKKyAgICAgICAgeyBkZXN0aW5hdGlvbkFscGhh
Rm9ybWF0LCBwaXhlbEZvcm1hdCgpLCBjb2xvclNwYWNlKCkgfSwKKyAgICAgICAgYnl0ZXNQZXJS
b3coKSwKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YSkgKyBkZXN0aW5h
dGlvblJlY3QueSgpICogZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgKyBkZXN0aW5hdGlvblJlY3Qu
eCgpICogNAorICAgIH07CiAKICAgICBjb252ZXJ0SW1hZ2VQaXhlbHMoc291cmNlLCBkZXN0aW5h
dGlvbiwgZGVzdGluYXRpb25SZWN0LnNpemUoKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXJCYWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKLSNpbmNsdWRlICJDb2xvclNwYWNlLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xv
clNwYWNlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBl
c0dMLmgiCiAjaW5jbHVkZSAiSW1hZ2VQYWludGluZ09wdGlvbnMuaCIKQEAgLTc4LDcgKzc4LDcg
QEAgcHVibGljOgogICAgICAgICBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdDsKICAgICB9OwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SW1hZ2VCdWZmZXJCYWNrZW5kKCkgPSBkZWZhdWx0
OworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkltYWdlQnVmZmVyQmFja2VuZCgpOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEludFNpemUgY2FsY3VsYXRlQmFja2VuZFNpemUoY29u
c3QgUGFyYW1ldGVycyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzaXplX3QgY2FsY3Vs
YXRlTWVtb3J5Q29zdChjb25zdCBJbnRTaXplJiBiYWNrZW5kU2l6ZSwgdW5zaWduZWQgYnl0ZXNQ
ZXJSb3cpOwpAQCAtMTAyLDcgKzEwMiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xp
cFRvTWFzayhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSB7IH0KIAogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY29udmVydFRvTHVtaW5hbmNlTWFzaygpOwotICAgIHZpcnR1YWwg
dm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgRGVzdGluYXRp
b25Db2xvclNwYWNlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
KSB7IH0KIAogICAgIHZpcnR1YWwgU3RyaW5nIHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkpIGNvbnN0ID0gMDsKQEAgLTE0MCw3ICsx
NDAsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBJbnRTaXplIGxvZ2ljYWxTaXplKCkgY29uc3QgeyBy
ZXR1cm4gSW50U2l6ZShtX3BhcmFtZXRlcnMubG9naWNhbFNpemUpOyB9CiAgICAgZmxvYXQgcmVz
b2x1dGlvblNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLnJlc29sdXRpb25TY2Fs
ZTsgfQotICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1
cm4gbV9wYXJhbWV0ZXJzLmNvbG9yU3BhY2U7IH0KKyAgICBjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMuY29sb3JTcGFj
ZTsgfQogICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9wYXJh
bWV0ZXJzLnBpeGVsRm9ybWF0OyB9CiAKICAgICBJbnRSZWN0IGxvZ2ljYWxSZWN0KCkgY29uc3Qg
eyByZXR1cm4gSW50UmVjdChJbnRQb2ludDo6emVybygpLCBsb2dpY2FsU2l6ZSgpKTsgfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuaAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4
ZWxCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJBbHBoYVByZW11bHRpcGxpY2F0aW9uLmgiCi0jaW5jbHVkZSAiQ29sb3JT
cGFjZS5oIgorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIklu
dFNpemUuaCIKICNpbmNsdWRlICJQaXhlbEJ1ZmZlckZvcm1hdC5oIgogI2luY2x1ZGUgIlBpeGVs
Rm9ybWF0LmgiCkBAIC04NywxOSArODcsMjEgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBQaXhlbEJ1ZmZlcgogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxQaXhlbEJ1
ZmZlcj4gUGl4ZWxCdWZmZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFBpeGVs
QnVmZmVyRm9ybWF0IGZvcm1hdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZvcm1hdCkpCisg
ICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXJGb3JtYXQ+IGZvcm1hdDsKKyAgICBkZWNvZGVyID4+IGZv
cm1hdDsKKyAgICBpZiAoIWZvcm1hdCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAog
ICAgIC8vIEZJWE1FOiBTdXBwb3J0IG5vbi04IGJpdCBmb3JtYXRzLgotICAgIGlmICghKGZvcm1h
dC5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6UkdCQTggfHwgZm9ybWF0LnBpeGVsRm9ybWF0
ID09IFBpeGVsRm9ybWF0OjpCR1JBOCkpCisgICAgaWYgKCEoZm9ybWF0LT5waXhlbEZvcm1hdCA9
PSBQaXhlbEZvcm1hdDo6UkdCQTggfHwgZm9ybWF0LT5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1h
dDo6QkdSQTgpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgSW50U2l6ZSBz
aXplOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZSkpCisgICAgT3B0aW9uYWw8SW50U2l6
ZT4gc2l6ZTsKKyAgICBkZWNvZGVyID4+IHNpemU7CisgICAgaWYgKCFzaXplKQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgYXV0byBjb21wdXRlZEJ1ZmZlclNpemUgPSBQaXhl
bEJ1ZmZlcjo6Y29tcHV0ZUJ1ZmZlclNpemUoZm9ybWF0LCBzaXplKTsKKyAgICBhdXRvIGNvbXB1
dGVkQnVmZmVyU2l6ZSA9IFBpeGVsQnVmZmVyOjpjb21wdXRlQnVmZmVyU2l6ZSgqZm9ybWF0LCAq
c2l6ZSk7CiAgICAgaWYgKGNvbXB1dGVkQnVmZmVyU2l6ZS5oYXNPdmVyZmxvd2VkKCkpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKQEAgLTEwNyw3ICsxMDksNyBAQCB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBPcHRpb25hbDxQaXhlbEJ1CiAgICAgaWYgKCFkZWNvZGVyLnRlbXBsYXRl
IGJ1ZmZlcklzTGFyZ2VFbm91Z2hUb0NvbnRhaW48dWludDhfdD4oYnVmZmVyU2l6ZSkpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBhdXRvIHJlc3VsdCA9IFBpeGVsQnVmZmVy
Ojp0cnlDcmVhdGVGb3JEZWNvZGluZyhmb3JtYXQsIHNpemUsIGJ1ZmZlclNpemUpOworICAgIGF1
dG8gcmVzdWx0ID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZUZvckRlY29kaW5nKFdURk1vdmUoKmZv
cm1hdCksICpzaXplLCBidWZmZXJTaXplKTsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckNvbnZlcnNpb24uY3BwCShyZXZpc2lvbiAy
Nzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckNv
bnZlcnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMiArMjcsMTEgQEAKICNpbmNsdWRl
ICJQaXhlbEJ1ZmZlckNvbnZlcnNpb24uaCIKIAogI2luY2x1ZGUgIkFscGhhUHJlbXVsdGlwbGlj
YXRpb24uaCIKLSNpbmNsdWRlICJDb2xvclNwYWNlLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25D
b2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlBpeGVsRm9ybWF0
LmgiCiAKICNpZiBVU0UoQUNDRUxFUkFURSkgJiYgVVNFKENHKQotI2luY2x1ZGUgIkNvbG9yU3Bh
Y2VDRy5oIgogI2luY2x1ZGUgPEFjY2VsZXJhdGUvQWNjZWxlcmF0ZS5oPgogI2VuZGlmCiAKQEAg
LTcxLDcgKzcwLDcgQEAgc3RhdGljIGlubGluZSB2SW1hZ2VfQ0dJbWFnZUZvcm1hdCBtYWtlVgog
CiAgICAgcmVzdWx0LmJpdHNQZXJDb21wb25lbnQgPSBiaXRzUGVyQ29tcG9uZW50OwogICAgIHJl
c3VsdC5iaXRzUGVyUGl4ZWwgPSBiaXRzUGVyUGl4ZWw7Ci0gICAgcmVzdWx0LmNvbG9yU3BhY2Ug
PSBjYWNoZWRDR0NvbG9yU3BhY2UoZm9ybWF0LmNvbG9yU3BhY2UpOworICAgIHJlc3VsdC5jb2xv
clNwYWNlID0gZm9ybWF0LmNvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCk7CiAgICAgcmVz
dWx0LmJpdG1hcEluZm8gPSBiaXRtYXBJbmZvOwogICAgIHJlc3VsdC52ZXJzaW9uID0gMDsKICAg
ICByZXN1bHQuZGVjb2RlID0gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuaAkocmV2aXNpb24gMjc3OTE5
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJBbHBoYVByZW11bHRpcGxpY2F0aW9uLmgiCi0jaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgor
I2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIlBpeGVsRm9ybWF0
LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4K
QEAgLTUxLDE5ICs1MSwyMiBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIFBpeGVsQnVm
ZmVyCiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPFBpeGVsQnVmZmVyRm9ybWF0
PiBQaXhlbEJ1ZmZlckZvcm1hdDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYUZvcm1hdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGFscGhhRm9ybWF0KSkKKyAgICBPcHRpb25hbDxBbHBoYVByZW11bHRpcGxpY2F0aW9uPiBhbHBo
YUZvcm1hdDsKKyAgICBkZWNvZGVyID4+IGFscGhhRm9ybWF0OworICAgIGlmICghYWxwaGFGb3Jt
YXQpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBQaXhlbEZvcm1hdCBwaXhl
bEZvcm1hdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBpeGVsRm9ybWF0KSkKKyAgICBPcHRp
b25hbDxQaXhlbEZvcm1hdD4gcGl4ZWxGb3JtYXQ7CisgICAgZGVjb2RlciA+PiBwaXhlbEZvcm1h
dDsKKyAgICBpZiAoIXBpeGVsRm9ybWF0KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
Ci0gICAgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2U7Ci0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShjb2xvclNwYWNlKSkKKyAgICBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+
IGNvbG9yU3BhY2U7CisgICAgZGVjb2RlciA+PiBjb2xvclNwYWNlOworICAgIGlmICghY29sb3JT
cGFjZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7IHsgYWxw
aGFGb3JtYXQsIHBpeGVsRm9ybWF0LCBjb2xvclNwYWNlIH0gfTsKKyAgICByZXR1cm4geyB7IFdU
Rk1vdmUoKmFscGhhRm9ybWF0KSwgV1RGTW92ZSgqcGl4ZWxGb3JtYXQpLCBXVEZNb3ZlKCpjb2xv
clNwYWNlKSB9IH07CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtQ29sb3JTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtQ29sb3JTcGFjZS5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtQ29sb3JTcGFjZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIFVTRShDRykKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Cit0eXBlZGVmIHN0cnVjdCBD
R0NvbG9yU3BhY2UqIENHQ29sb3JTcGFjZVJlZjsKKyNlbHNlCisjaW5jbHVkZSA8d3RmL0VudW1U
cmFpdHMuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBVU0UoQ0cpCisK
K3VzaW5nIFBsYXRmb3JtQ29sb3JTcGFjZSA9IFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+Owor
dXNpbmcgUGxhdGZvcm1Db2xvclNwYWNlVmFsdWUgPSBDR0NvbG9yU3BhY2VSZWY7CisKKyNlbHNl
CisKK3N0cnVjdCBQbGF0Zm9ybUNvbG9yU3BhY2UgeworICAgIGVudW0gY2xhc3MgTmFtZSB7Cisg
ICAgICAgIFNSR0IKKyNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NS
R0IpCisgICAgICAgICwgTGluZWFyU1JHQgorI2VuZGlmCisjaWYgRU5BQkxFKERFU1RJTkFUSU9O
X0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCisgICAgICAgICwgRGlzcGxheVAzCisjZW5kaWYKKyAg
ICB9OworICAgIE5hbWUgbmFtZTsKKyAgICBOYW1lIGdldCgpIGNvbnN0IHsgcmV0dXJuIG5hbWU7
IH0KK307Cit1c2luZyBQbGF0Zm9ybUNvbG9yU3BhY2VWYWx1ZSA9IFBsYXRmb3JtQ29sb3JTcGFj
ZTo6TmFtZTsKKworI2VuZGlmCisKK30KKworbmFtZXNwYWNlIFdURiB7CisKKyNpZiAhVVNFKENH
KQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlBsYXRmb3JtQ29sb3JT
cGFjZTo6TmFtZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdl
YkNvcmU6OlBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZSwKKyAgICAgICAgV2ViQ29yZTo6UGxhdGZv
cm1Db2xvclNwYWNlOjpOYW1lOjpTUkdCCisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQ
QUNFX0xJTkVBUl9TUkdCKQorICAgICAgICAsIFdlYkNvcmU6OlBsYXRmb3JtQ29sb3JTcGFjZTo6
TmFtZTo6TGluZWFyU1JHQgorI2VuZGlmCisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQ
QUNFX0RJU1BMQVlfUDMpCisgICAgICAgICwgV2ViQ29yZTo6UGxhdGZvcm1Db2xvclNwYWNlOjpO
YW1lOjpEaXNwbGF5UDMKKyNlbmRpZgorICAgID47Cit9OworCisjZW5kaWYKKworfSAvLyBuYW1l
c3BhY2UgV1RGCisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90
ZVZpZGVvU2FtcGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBzdGF0aWMgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxJ
T1N1cmZhY2U+CiAgICAgfQogCiAgICAgSW50U2l6ZSBzaXplIHsgc3RhdGljX2Nhc3Q8aW50PihD
VlBpeGVsQnVmZmVyR2V0V2lkdGgocGl4ZWxCdWZmZXIpKSwgc3RhdGljX2Nhc3Q8aW50PihDVlBp
eGVsQnVmZmVyR2V0SGVpZ2h0KHBpeGVsQnVmZmVyKSkgfTsKLSAgICBhdXRvIGlvU3VyZmFjZSA9
ICBJT1N1cmZhY2U6OmNyZWF0ZShzaXplLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBJT1N1cmZhY2U6
OkZvcm1hdDo6QkdSQSk7CisgICAgYXV0byBpb1N1cmZhY2UgPSAgSU9TdXJmYWNlOjpjcmVhdGUo
c2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIElPU3VyZmFjZTo6Rm9ybWF0OjpC
R1JBKTsKIAogICAgIElPU3VyZmFjZTo6TG9ja2VyIGxvY2soKmlvU3VyZmFjZSk7CiAgICAgdklt
YWdlX0J1ZmZlciBzcmM7CkBAIC0xMTMsNyArMTEzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZVZpZGVvU2FtcGxlPiBSZW1vdAogICAgICAgICBzdXJmYWNlID0gaW9TdXJmYWNlLT5zdXJmYWNl
KCk7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBs
ZT4obmV3IFJlbW90ZVZpZGVvU2FtcGxlKHN1cmZhY2UsIHNSR0JDb2xvclNwYWNlUmVmKCksIHNh
bXBsZS5wcmVzZW50YXRpb25UaW1lKCksIHNhbXBsZS52aWRlb1JvdGF0aW9uKCksIHNhbXBsZS52
aWRlb01pcnJvcmVkKCkpKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVv
U2FtcGxlPihuZXcgUmVtb3RlVmlkZW9TYW1wbGUoc3VyZmFjZSwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCksIHNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCksIHNhbXBsZS52aWRlb1JvdGF0
aW9uKCksIHNhbXBsZS52aWRlb01pcnJvcmVkKCkpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZVZpZGVvU2FtcGxlPiBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKENWUGl4ZWxCdWZmZXJS
ZWYgaW1hZ2VCdWZmZXIsIE1lZGlhVGltZSYmIHByZXNlbnRhdGlvblRpbWUsIE1lZGlhU2FtcGxl
OjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKQpAQCAtMTI0LDEwICsxMjQsMTAgQEAgc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBSZW1vdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPihu
ZXcgUmVtb3RlVmlkZW9TYW1wbGUoc3VyZmFjZSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwgV1RGTW92
ZShwcmVzZW50YXRpb25UaW1lKSwgcm90YXRpb24sIGZhbHNlKSk7CisgICAgcmV0dXJuIHN0ZDo6
dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4obmV3IFJlbW90ZVZpZGVvU2FtcGxlKHN1cmZh
Y2UsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBXVEZNb3ZlKHByZXNlbnRhdGlvblRp
bWUpLCByb3RhdGlvbiwgZmFsc2UpKTsKIH0KIAotUmVtb3RlVmlkZW9TYW1wbGU6OlJlbW90ZVZp
ZGVvU2FtcGxlKElPU3VyZmFjZVJlZiBzdXJmYWNlLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFj
ZSwgTWVkaWFUaW1lJiYgdGltZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24s
IGJvb2wgbWlycm9yZWQpCitSZW1vdGVWaWRlb1NhbXBsZTo6UmVtb3RlVmlkZW9TYW1wbGUoSU9T
dXJmYWNlUmVmIHN1cmZhY2UsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFj
ZSwgTWVkaWFUaW1lJiYgdGltZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24s
IGJvb2wgbWlycm9yZWQpCiAgICAgOiBtX2lvU3VyZmFjZShXZWJDb3JlOjpJT1N1cmZhY2U6OmNy
ZWF0ZUZyb21TdXJmYWNlKHN1cmZhY2UsIGNvbG9yU3BhY2UpKQogICAgICwgbV9yb3RhdGlvbihy
b3RhdGlvbikKICAgICAsIG1fdGltZShXVEZNb3ZlKHRpbWUpKQpAQCAtMTQwLDcgKzE0MCw3IEBA
IFJlbW90ZVZpZGVvU2FtcGxlOjpSZW1vdGVWaWRlb1NhbXBsZShJT1MKIElPU3VyZmFjZVJlZiBS
ZW1vdGVWaWRlb1NhbXBsZTo6c3VyZmFjZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lvU3VyZmFj
ZSAmJiBtX3NlbmRSaWdodCkKLSAgICAgICAgY29uc3RfY2FzdDxSZW1vdGVWaWRlb1NhbXBsZSo+
KHRoaXMpLT5tX2lvU3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRS
aWdodChXVEZNb3ZlKGNvbnN0X2Nhc3Q8UmVtb3RlVmlkZW9TYW1wbGUqPih0aGlzKS0+bV9zZW5k
UmlnaHQpLCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICAgICAgY29uc3RfY2FzdDxSZW1vdGVW
aWRlb1NhbXBsZSo+KHRoaXMpLT5tX2lvU3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3Jl
YXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGNvbnN0X2Nhc3Q8UmVtb3RlVmlkZW9TYW1wbGUqPih0
aGlzKS0+bV9zZW5kUmlnaHQpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAKICAg
ICByZXR1cm4gbV9pb1N1cmZhY2UgPyBtX2lvU3VyZmFjZS0+c3VyZmFjZSgpIDogbnVsbHB0cjsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2Ft
cGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVt
b3RlVmlkZW9TYW1wbGUuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTAz
LDcgKzEwMyw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgUmVtb3RlVmlkZW9T
YW1wbGUoSU9TdXJmYWNlUmVmLCBDR0NvbG9yU3BhY2VSZWYsIE1lZGlhVGltZSYmLCBNZWRpYVNh
bXBsZTo6VmlkZW9Sb3RhdGlvbiwgYm9vbCk7CisgICAgUmVtb3RlVmlkZW9TYW1wbGUoSU9TdXJm
YWNlUmVmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBNZWRpYVRpbWUmJiwgTWVkaWFT
YW1wbGU6OlZpZGVvUm90YXRpb24sIGJvb2wpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OklPU3VyZmFjZT4gbV9pb1N1cmZhY2U7CiAgICAgV1RGOjpNYWNoU2VuZFJpZ2h0IG1fc2Vu
ZFJpZ2h0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBA
IHB1YmxpYzoKICAgICAgICAgY2xlYXJTY3JhdGNoQnVmZmVyKCk7CiAKICAgICAgICAgLy8gU2hh
ZG93Qmx1ciBpcyBub3QgdXNlZCB3aXRoIGFjY2VsZXJhdGVkIGRyYXdpbmcsIHNvIGl0J3MgT0sg
dG8gbWFrZSBhbiB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZCBidWZmZXIuCi0gICAgICAg
IG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJvdW5kZWRTaXplLCBSZW5kZXJp
bmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBp
eGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHJvdW5kZWRTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAg
cmV0dXJuIG1faW1hZ2VCdWZmZXI7CiAgICAgfQogCkBAIC02MDQsNyArNjA0LDcgQEAgdm9pZCBT
aGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3coY29uc3QgQQogCiB2b2lkIFNoYWRvd0JsdXI6OmRy
YXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBG
bG9hdFJvdW5kZWRSZWN0JiBzaGFkb3dlZFJlY3QsIGNvbnN0IExheWVySW1hZ2VQcm9wZXJ0aWVz
JiBsYXllckltYWdlUHJvcGVydGllcywgY29uc3QgRHJhd0J1ZmZlckNhbGxiYWNrJiBkcmF3QnVm
ZmVyKQogewotICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoZXhwYW5k
ZWRJbnRTaXplKGxheWVySW1hZ2VQcm9wZXJ0aWVzLmxheWVyU2l6ZSksIFJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKKyAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4
cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGllcy5sYXllclNpemUpLCBSZW5kZXJpbmdN
b2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWxheWVySW1hZ2UpCiAgICAgICAgIHJldHVybjsK
IApAQCAtNjMyLDcgKzYzMiw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRo
b3V0VGkKIAogdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UmVjdCYgZnVsbFJlY3QsIGNvbnN0IEZs
b2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBMYXllckltYWdlUHJvcGVydGllcyYgbGF5
ZXJJbWFnZVByb3BlcnRpZXMsIGNvbnN0IERyYXdCdWZmZXJDYWxsYmFjayYgZHJhd0J1ZmZlcikK
IHsKLSAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50
U2l6ZShsYXllckltYWdlUHJvcGVydGllcy5sYXllclNpemUpLCBSZW5kZXJpbmdNb2RlOjpVbmFj
Y2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CisgICAgYXV0byBsYXllckltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShleHBhbmRl
ZEludFNpemUobGF5ZXJJbWFnZVByb3BlcnRpZXMubGF5ZXJTaXplKSwgUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CiAgICAgaWYgKCFsYXllckltYWdlKQogICAgICAgICByZXR1cm47CiAKQEAg
LTcwNSw3ICs3MDUsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGlu
CiAjZW5kaWYKIAogICAgIGlmICghbGF5ZXJJbWFnZUJ1ZmZlcikgewotICAgICAgICBsYXllcklt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNpemUsIFJlbmRlcmluZ01v
ZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAg
aWYgKCFsYXllckltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTc2
Myw3ICs3NjMsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpCiAj
ZW5kaWYKIAogICAgIGlmICghbGF5ZXJJbWFnZUJ1ZmZlcikgewotICAgICAgICBsYXllckltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNpemUsIFJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKKyAgICAgICAgbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVh
dGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgaWYg
KCFsYXllckltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTkwMyw3
ICs5MDMsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmJsdXJTaGFkb3dCdWZmZXIoSW1hZ2VCCiAgICAg
aWYgKG1fdHlwZSAhPSBCbHVyU2hhZG93KQogICAgICAgICByZXR1cm47CiAKLSAgICBQaXhlbEJ1
ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxp
ZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07Cisg
ICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5w
cmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpIH07CiAgICAgSW50UmVjdCBibHVyUmVjdChJbnRQb2ludCgpLCB0ZW1wbGF0ZVNpemUp
OwogICAgIGF1dG8gbGF5ZXJEYXRhID0gbGF5ZXJJbWFnZS5nZXRQaXhlbEJ1ZmZlcihmb3JtYXQs
IGJsdXJSZWN0KTsKICAgICBpZiAoIWxheWVyRGF0YSkKQEAgLTkzMyw3ICs5MzMsNyBAQCB2b2lk
IFNoYWRvd0JsdXI6OmRyYXdTaGFkb3dMYXllcihjb25zdCBBCiAKICAgICBhZGp1c3RCbHVyUmFk
aXVzKHRyYW5zZm9ybSk7CiAKLSAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGllcy0+bGF5ZXJTaXplKSwgUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
LCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoZXhwYW5kZWRJbnRTaXplKGxheWVySW1hZ2VQcm9wZXJ0aWVzLT5sYXllclNpemUp
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWxheWVySW1hZ2UpCiAgICAg
ICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3
IEBAIHN0YXRpYyB2b2lkIHdpcGVBbHBoYUNoYW5uZWxGcm9tUGl4ZWxzKGkKIAogT3B0aW9uYWw8
UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRS
ZXN1bHRzKCkKIHsKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRp
cGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9
IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6
ZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCShyZXZpc2lvbiAy
Nzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRJbXBsQ2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTQsNyArNDE0LDcgQEAg
RmxvYXRSZWN0IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6cm91bgogICAgIHJldHVybiBDYWly
bzo6U3RhdGU6OnJvdW5kVG9EZXZpY2VQaXhlbHMobV9wbGF0Zm9ybUNvbnRleHQsIHJlY3QpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRz
KGNvbnN0IEZsb2F0UmVjdCYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChH
cmFwaGljc0NvbnRleHQmKT4mJikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjbGlw
VG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikKIHsKICAgICAvLyBG
SVhNRTogTm90IGltcGxlbWVudGVkLgogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDQsNyArMTA0LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYs
IFdpbmRSdWxlKSBvdmVycmlkZTsKICAgICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBvdmVycmlkZTsK
ICAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdy
YXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsaXBUb0RyYXdpbmdDb21t
YW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKICNp
ZiBFTkFCTEUoVklERU8pCiAgICAgdm9pZCBwYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXIm
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSBvdmVycmlkZTsKICAgICBib29sIGNhblBh
aW50RnJhbWVGb3JNZWRpYShjb25zdCBNZWRpYVBsYXllciYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCShy
ZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDE5ICs4
OSwxOSBAQCB2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjpjbGlwVG9NYXNrCiAgICAgICAg
IENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcigqZGVzdENvbnRleHQucGxhdGZvcm1Db250ZXh0KCks
IGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIGRlc3RSZWN0KTsKIH0KIAotdm9pZCBJbWFn
ZUJ1ZmZlckNhaXJvQmFja2VuZDo6dHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9y
U3BhY2Ugc3JjQ29sb3JTcGFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGRlc3RDb2xvclNwYWNl
KQordm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6dHJhbnNmb3JtQ29sb3JTcGFjZShjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHNyY0NvbG9yU3BhY2UsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYgZGVzdENvbG9yU3BhY2UpCiB7CiAgICAgaWYgKHNyY0NvbG9yU3BhY2UgPT0g
ZGVzdENvbG9yU3BhY2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIG9ubHkgc1JHQiA8LT4g
bGluZWFyUkdCIGFyZSBzdXBwb3J0ZWQgYXQgdGhlIG1vbWVudAotICAgIGlmICgoc3JjQ29sb3JT
cGFjZSAhPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IgJiYgc3JjQ29sb3JTcGFj
ZSAhPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpCi0gICAgICAgIHx8IChkZXN0Q29sb3JT
cGFjZSAhPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IgJiYgZGVzdENvbG9yU3Bh
Y2UgIT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKSkKKyAgICBpZiAoKHNyY0NvbG9yU3Bh
Y2UgIT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCkgJiYgc3JjQ29sb3JTcGFj
ZSAhPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSkKKyAgICAgICAgfHwgKGRlc3RDb2xv
clNwYWNlICE9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigpICYmIGRlc3RDb2xv
clNwYWNlICE9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgbV9wYXJhbWV0ZXJzLmNvbG9yU3BhY2UgPSBkZXN0Q29sb3JTcGFjZTsKIAotICAg
IGlmIChkZXN0Q29sb3JTcGFjZSA9PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0Ip
IHsKKyAgICBpZiAoZGVzdENvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5l
YXJTUkdCKCkpIHsKICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6YXJyYXk8dWludDhfdCwgMjU2
PiBsaW5lYXJSZ2JMVVQgPSBbXSB7CiAgICAgICAgICAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1
Nj4gYXJyYXk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjU2OyBpKysp
IHsKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjp0cmFu
c2Zvcm1DCiAgICAgICAgICAgICByZXR1cm4gYXJyYXk7CiAgICAgICAgIH0oKTsKICAgICAgICAg
cGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKGxpbmVhclJnYkxVVCk7Ci0gICAgfSBlbHNlIGlm
IChkZXN0Q29sb3JTcGFjZSA9PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpIHsKKyAgICB9
IGVsc2UgaWYgKGRlc3RDb2xvclNwYWNlID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
KSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4gZGV2aWNl
UmdiTFVUPSBbXSB7CiAgICAgICAgICAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4gYXJyYXk7
CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9C
YWNrZW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tl
bmQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGNsaXBUb01hc2soR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkg
b3ZlcnJpZGU7CiAKLSAgICB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xv
clNwYWNlIHNyY0NvbG9yU3BhY2UsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBkZXN0Q29sb3JTcGFj
ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgc3JjQ29sb3JTcGFjZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiBkZXN0Q29sb3JTcGFjZSkgb3ZlcnJpZGU7CiAKICAgICBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNv
bHV0aW9uKSBjb25zdCBvdmVycmlkZTsKICAgICBWZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkgY29uc3Qgb3ZlcnJp
ZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xv
ckNHLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQ29sb3JDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjksMTMgKzI5LDE0IEBACiAjaWYgVVNFKENHKQogCiAjaW5jbHVkZSAiQ29sb3JT
cGFjZUNHLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSA8
bXV0ZXg+CisjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi9UaW55TFJVQ2FjaGUuaD4KLSNpbmNsdWRlIDxw
YWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KKyNpbmNsdWRlIDx3dGYvVGlueUxSVUNhY2hlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IHN0YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY3JlYXRlQ0dDb2xvcihjb25zdCBDb2xvciYp
OwpAQCAtOTEsMzQgKzkyLDM4IEBAIENvbG9yOjpDb2xvcihDR0NvbG9yUmVmIGNvbG9yLCBPcHRp
b25TZXQKIHsKIH0KIAotc3RhdGljIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjcmVhdGVDR0NvbG9y
KGNvbnN0IENvbG9yJiBjb2xvcikKK3N0YXRpYyBzdGQ6OnBhaXI8Q0dDb2xvclNwYWNlUmVmLCBD
b2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+PiBjb252ZXJ0VG9DR0NvbXBhdGlibGVDb21wb25lbnRz
KENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb21wb25l
bnRzKQogewotICAgIGF1dG8gW2NvbG9yU3BhY2UsIGNvbXBvbmVudHNdID0gY29sb3IuY29sb3JT
cGFjZUFuZENvbXBvbmVudHMoKTsKLQotICAgIGF1dG8gY2dDb2xvclNwYWNlID0gY2FjaGVkTnVs
bGFibGVDR0NvbG9yU3BhY2UoY29sb3JTcGFjZSk7Ci0KICAgICAvLyBTb21lIENHIHBvcnRzIGRv
bid0IHN1cHBvcnQgYWxsIHRoZSBjb2xvciBzcGFjZXMgcmVxdWlyZWQgYW5kIHJldHVybgogICAg
IC8vIG51bGxwdHIgZm9yIHVuc3VwcG9ydGVkIGNvbG9yIHNwYWNlcy4gSW4gdGhvc2UgY2FzZXMs
IHdlIGVhZ2VybHkgY29udmVydAogICAgIC8vIHRoZSBjb2xvciBpbnRvIGVpdGhlciBleHRlbmRl
ZCBzUkdCIG9yIG5vcm1hbCBzUkdCLCBpZiBleHRlbmRlZCBzUkdCIGlzCi0gICAgLy8gbm90IHN1
cHBvcnRlZCwgYmVmb3JlIGNyZWF0aW5nIHRoZSBDR0NvbG9yUmVmLgorICAgIC8vIG5vdCBzdXBw
b3J0ZWQuCisKKyAgICBhdXRvIGNnQ29sb3JTcGFjZSA9IGNhY2hlZE51bGxhYmxlQ0dDb2xvclNw
YWNlKGNvbG9yU3BhY2UpOwogICAgIGlmICghY2dDb2xvclNwYWNlKSB7CiAjaWYgSEFWRShDT1JF
X0dSQVBISUNTX0VYVEVOREVEX1NSR0JfQ09MT1JfU1BBQ0UpCi0gICAgICAgIGF1dG8gY29sb3JD
b252ZXJ0ZWRUb0V4dGVuZGVkU1JHQkEgPSBjYWxsV2l0aENvbG9yVHlwZShjb21wb25lbnRzLCBj
b2xvclNwYWNlLCBbXSAoY29uc3QgYXV0byYgY29sb3IpIHsKLSAgICAgICAgICAgIHJldHVybiBj
b252ZXJ0Q29sb3I8RXh0ZW5kZWRTUkdCQTxmbG9hdD4+KGNvbG9yKTsKKyAgICAgICAgYXV0byBj
Z0NvbXBhdGlibGVDb21wb25lbnRzID0gY2FsbFdpdGhDb2xvclR5cGUoY29tcG9uZW50cywgY29s
b3JTcGFjZSwgW10gKGNvbnN0IGF1dG8mIGNvbG9yKSB7CisgICAgICAgICAgICByZXR1cm4gYXND
b2xvckNvbXBvbmVudHMoY29udmVydENvbG9yPEV4dGVuZGVkU1JHQkE8ZmxvYXQ+Pihjb2xvcikp
OwogICAgICAgICB9KTsKLSAgICAgICAgY29tcG9uZW50cyA9IGFzQ29sb3JDb21wb25lbnRzKGNv
bG9yQ29udmVydGVkVG9FeHRlbmRlZFNSR0JBKTsKLSAgICAgICAgY2dDb2xvclNwYWNlID0gZXh0
ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpOworICAgICAgICByZXR1cm4geyBleHRlbmRlZFNSR0JD
b2xvclNwYWNlUmVmKCksIGNnQ29tcGF0aWJsZUNvbXBvbmVudHMgfTsKICNlbHNlCiAgICAgICAg
IGF1dG8gY29sb3JDb252ZXJ0ZWRUb1NSR0JBID0gY2FsbFdpdGhDb2xvclR5cGUoY29tcG9uZW50
cywgY29sb3JTcGFjZSwgW10gKGNvbnN0IGF1dG8mIGNvbG9yKSB7Ci0gICAgICAgICAgICByZXR1
cm4gY29udmVydENvbG9yPFNSR0JBPGZsb2F0Pj4oY29sb3IpOworICAgICAgICAgICAgcmV0dXJu
IGFzQ29sb3JDb21wb25lbnRzKGNvbnZlcnRDb2xvcjxTUkdCQTxmbG9hdD4+KGNvbG9yKSk7CiAg
ICAgICAgIH0pOwotICAgICAgICBjb21wb25lbnRzID0gYXNDb2xvckNvbXBvbmVudHMoY29sb3JD
b252ZXJ0ZWRUb1NSR0JBKTsKLSAgICAgICAgY2dDb2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VS
ZWYoKTsKKyAgICAgICAgcmV0dXJuIHsgc1JHQkNvbG9yU3BhY2VSZWYoKSwgY2dDb21wYXRpYmxl
Q29tcG9uZW50cyB9OwogI2VuZGlmCiAgICAgfQogCi0gICAgYXV0byBbciwgZywgYiwgYV0gPSBj
b21wb25lbnRzOwotICAgIENHRmxvYXQgY2dGbG9hdENvbXBvbmVudHNbNF0geyByLCBnLCBiLCBh
IH07CisgICAgcmV0dXJuIHsgY2dDb2xvclNwYWNlLCBjb21wb25lbnRzIH07Cit9CisKK3N0YXRp
YyBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY3JlYXRlQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3Ip
Cit7CisgICAgYXV0byBbY29sb3JTcGFjZSwgY29tcG9uZW50c10gPSBjb2xvci5jb2xvclNwYWNl
QW5kQ29tcG9uZW50cygpOworICAgIGF1dG8gW2NnQ29sb3JTcGFjZSwgY2dDb21wYXRpYmxlQ29t
cG9uZW50c10gPSBjb252ZXJ0VG9DR0NvbXBhdGlibGVDb21wb25lbnRzKGNvbG9yU3BhY2UsIGNv
bXBvbmVudHMpOworICAgIAorICAgIGF1dG8gW2MxLCBjMiwgYzMsIGM0XSA9IGNnQ29tcGF0aWJs
ZUNvbXBvbmVudHM7CisgICAgQ0dGbG9hdCBjZ0Zsb2F0Q29tcG9uZW50c1s0XSB7IGMxLCBjMiwg
YzMsIGM0IH07CiAKICAgICByZXR1cm4gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKGNnQ29sb3JTcGFj
ZSwgY2dGbG9hdENvbXBvbmVudHMpKTsKIH0KQEAgLTE2MSw2ICsxNjYsMjQgQEAgQ0dDb2xvclJl
ZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJiBjbwogICAgIHJldHVybiBjYWNoZS5nZXQoKS5n
ZXQoY29sb3IpLmdldCgpOwogfQogCitDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IHBsYXRmb3Jt
Q29udmVydENvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlIGlucHV0Q29sb3JTcGFjZSwgQ29sb3JD
b21wb25lbnRzPGZsb2F0LCA0PiBpbnB1dENvbG9yQ29tcG9uZW50cywgY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiBvdXRwdXRDb2xvclNwYWNlKQoreworICAgIC8vIEZJWE1FOiBJbnZlc3Rp
Z2F0ZSBvcHRpbWl6aW5nIHRoaXMgdG8gdXNlIHRoZSBidWlsdGluIGNvbG9yIGNvbnZlcnNpb24g
Y29kZSBmb3Igc3VwcG9ydGVkIGNvbG9yIHNwYWNlcy4KKworICAgIGF1dG8gW2NnSW5wdXRDb2xv
clNwYWNlLCBjZ0NvbXBhdGlibGVDb21wb25lbnRzXSA9IGNvbnZlcnRUb0NHQ29tcGF0aWJsZUNv
bXBvbmVudHMoaW5wdXRDb2xvclNwYWNlLCBpbnB1dENvbG9yQ29tcG9uZW50cyk7CisgICAgaWYg
KGNnSW5wdXRDb2xvclNwYWNlID09IG91dHB1dENvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNl
KCkpCisgICAgICAgIHJldHVybiBjZ0NvbXBhdGlibGVDb21wb25lbnRzOworCisgICAgYXV0byBb
YzEsIGMyLCBjMywgYzRdID0gY2dDb21wYXRpYmxlQ29tcG9uZW50czsKKyAgICBDR0Zsb2F0IHNv
dXJjZUNvbXBvbmVudHNbNF0geyBjMSwgYzIsIGMzLCBjNCB9OworICAgIENHRmxvYXQgZGVzdGlu
YXRpb25Db21wb25lbnRzWzRdIHsgfTsKKworICAgIGF1dG8gdHJhbnNmb3JtID0gYWRvcHRDRihD
R0NvbG9yVHJhbnNmb3JtQ3JlYXRlKG91dHB1dENvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNl
KCksIG51bGxwdHIpKTsKKyAgICBhdXRvIHJlc3VsdCA9IENHQ29sb3JUcmFuc2Zvcm1Db252ZXJ0
Q29sb3JDb21wb25lbnRzKHRyYW5zZm9ybS5nZXQoKSwgY2dJbnB1dENvbG9yU3BhY2UsIGtDR1Jl
bmRlcmluZ0ludGVudERlZmF1bHQsIHNvdXJjZUNvbXBvbmVudHMsIGRlc3RpbmF0aW9uQ29tcG9u
ZW50cyk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgcmV0dXJuIHsg
c3RhdGljX2Nhc3Q8ZmxvYXQ+KGRlc3RpbmF0aW9uQ29tcG9uZW50c1swXSksIHN0YXRpY19jYXN0
PGZsb2F0PihkZXN0aW5hdGlvbkNvbXBvbmVudHNbMV0pLCBzdGF0aWNfY2FzdDxmbG9hdD4oZGVz
dGluYXRpb25Db21wb25lbnRzWzJdKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRlc3RpbmF0aW9uQ29t
cG9uZW50c1szXSkgfTsKK30KKwogfQogCiAjZW5kaWYgLy8gVVNFKENHKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yU3BhY2VDRy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksMjMgKzExOSw0IEBAIHN0YXRpYyBp
bmxpbmUgQ0dDb2xvclNwYWNlUmVmIGNhY2hlZE51bGwKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAotLy8gTk9URTogU2luY2UgdGhpcyBmdW5jdGlvbiBpcyBmb3IgKmRlc3RpbmF0aW9uKiBjb2xv
ciBzcGFjZXMgd2hvc2UgY2FsbGVycyBhbHdheXMgZXhwZWN0IGEgbm9uLW51bGwgY29sb3Igc3Bh
Y2UsIHRoaXMgZnVuY3Rpb24gaXMgZ3VhcmFudGVlZCB0byByZXR1cm4gbm9uLW51bGwsIHVubGlr
ZSBjYWNoZWROdWxsYWJsZUNHQ29sb3JTcGFjZSgpLgotc3RhdGljIGlubGluZSBDR0NvbG9yU3Bh
Y2VSZWYgY2FjaGVkQ0dDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNl
KQotewotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNhc2UgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCOgotICAgICAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLSNpZiBF
TkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgY2FzZSBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0I6Ci0gICAgICAgIHJldHVybiBsaW5lYXJTUkdC
Q29sb3JTcGFjZVJlZigpOwotI2VuZGlmCi0jaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQ
QUNFX0RJU1BMQVlfUDMpCi0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQ
MzoKLSAgICAgICAgcmV0dXJuIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKTsKLSNlbmRpZgotICAg
IH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VS
ZWYoKTsKLX0KLQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0R0xDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAJKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dEdMQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MzIsNyArNTMyLDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbgogICAgIH0pKTsKIAogICAgIGF1dG8gaW1hZ2VT
aXplID0gcGl4ZWxCdWZmZXIuc2l6ZSgpOwotICAgIGF1dG8gaW1hZ2UgPSBOYXRpdmVJbWFnZTo6
Y3JlYXRlKGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXpl
LmhlaWdodCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBjYWNoZWRDR0NvbG9yU3Bh
Y2UocGl4ZWxCdWZmZXIuZm9ybWF0KCkuY29sb3JTcGFjZSksIGJpdG1hcEluZm8sIGRhdGFQcm92
aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKSk7CisgICAg
YXV0byBpbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGlt
YWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCA0ICogaW1hZ2VTaXpl
LndpZHRoKCksIHBpeGVsQnVmZmVyLmZvcm1hdCgpLmNvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNw
YWNlKCksIGJpdG1hcEluZm8sIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRl
cmluZ0ludGVudERlZmF1bHQpKSk7CiAKICAgICAvLyBDU1Mgc3R5bGluZyBtYXkgY2F1c2UgdGhl
IGNhbnZhcydzIGNvbnRlbnQgdG8gYmUgcmVzaXplZCBvbgogICAgIC8vIHRoZSBwYWdlLiBHbyBi
YWNrIHRvIHRoZSBDYW52YXMgdG8gZmlndXJlIG91dCB0aGUgY29ycmVjdApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5j
cHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0lPU3VyZmFjZVBvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpZiBIQVZFKElPU1VSRkFDRSkKIAorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNz
L0NvcmVHcmFwaGljcy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtNTks
NyArNjAsNyBAQCBJT1N1cmZhY2VQb29sJiBJT1N1cmZhY2VQb29sOjpzaGFyZWRQb29sCiAgICAg
cmV0dXJuIHBvb2w7CiB9CiAKLXN0YXRpYyBib29sIHN1cmZhY2VNYXRjaGVzUGFyYW1ldGVycyhJ
T1N1cmZhY2UmIHN1cmZhY2UsIEludFNpemUgcmVxdWVzdGVkU2l6ZSwgQ0dDb2xvclNwYWNlUmVm
IGNvbG9yU3BhY2UsIElPU3VyZmFjZTo6Rm9ybWF0IGZvcm1hdCkKK3N0YXRpYyBib29sIHN1cmZh
Y2VNYXRjaGVzUGFyYW1ldGVycyhJT1N1cmZhY2UmIHN1cmZhY2UsIEludFNpemUgcmVxdWVzdGVk
U2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBJT1N1cmZhY2U6
OkZvcm1hdCBmb3JtYXQpCiB7CiAgICAgaWYgKGZvcm1hdCAhPSBzdXJmYWNlLmZvcm1hdCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDIsNyArMTAzLDcgQEAgdm9pZCBJT1N1cmZhY2VQ
b29sOjpkaWRVc2VTdXJmYWNlT2ZTaXplKAogICAgIG1fc2l6ZXNJblBydW5lT3JkZXIuYXBwZW5k
KHNpemUpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2VQb29sOjp0
YWtlU3VyZmFjZShJbnRTaXplIHNpemUsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlLCBJT1N1
cmZhY2U6OkZvcm1hdCBmb3JtYXQpCitzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZh
Y2VQb29sOjp0YWtlU3VyZmFjZShJbnRTaXplIHNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgY29sb3JTcGFjZSwgSU9TdXJmYWNlOjpGb3JtYXQgZm9ybWF0KQogewogICAgIExvY2tl
ciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBDYWNoZWRTdXJmYWNlTWFwOjppdGVyYXRvciBtYXBJ
dGVyID0gbV9jYWNoZWRTdXJmYWNlcy5maW5kKHNpemUpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuaAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNl
UG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw4IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgRGVzdGluYXRhdGlvbkNvbG9yU3BhY2U7CisKIGNsYXNzIElPU3VyZmFj
ZVBvb2wgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKElPU3VyZmFjZVBvb2wpOwogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNDcsNyArNDksNyBAQCBjbGFzcyBJT1N1cmZhY2VQ
b29sIHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSU9TdXJmYWNlUG9vbCYg
c2hhcmVkUG9vbCgpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gdGFrZVN1cmZh
Y2UoSW50U2l6ZSwgQ0dDb2xvclNwYWNlUmVmLCBJT1N1cmZhY2U6OkZvcm1hdCk7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPElPU3VyZmFjZT4gdGFrZVN1cmZhY2UoSW50U2l6ZSwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiwgSU9TdXJmYWNlOjpGb3JtYXQpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYWRkU3VyZmFjZShzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPik7CiAKICAgICB2b2lk
IGRpc2NhcmRBbGxTdXJmYWNlcygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAkocmV2
aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJDR0JhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzQsNyArMTc0LDcgQEAg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IEltYWdlQnVmZmVyQ0dCYWNrZQogICAgICAgICAvLyBGSVhN
RTogU2hvdWxkIHRoaXMgYmUgdXNpbmcgdGhlIHNhbWUgbG9naWMgYXMgSW1hZ2VCdWZmZXJVdGls
aXRpZXNDRz8KIAogICAgICAgICAvLyBKUEVHcyBkb24ndCBoYXZlIGFuIGFscGhhIGNoYW5uZWws
IHNvIHdlIGhhdmUgdG8gbWFudWFsbHkgY29tcG9zaXRlIG9uIHRvcCBvZiBibGFjay4KLSAgICAg
ICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJl
bXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IgfTsKKyAgICAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSB9OwogICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gZ2V0UGl4ZWxC
dWZmZXIoZm9ybWF0LCBsb2dpY2FsUmVjdCgpKTsKICAgICAgICAgaWYgKCFwaXhlbEJ1ZmZlcikK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTkyLDcgKzE5Miw3IEBAIFJldGFpblB0
cjxDR0ltYWdlUmVmPiBJbWFnZUJ1ZmZlckNHQmFja2UKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgICAgIGF1dG8gaW1hZ2VTaXplID0gcGl4ZWxCdWZmZXItPnNpemUoKTsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1h
Z2VTaXplLmhlaWdodCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBjYWNoZWRDR0Nv
bG9yU3BhY2UocGl4ZWxCdWZmZXItPmZvcm1hdCgpLmNvbG9yU3BhY2UpLCBrQ0dCaXRtYXBCeXRl
T3JkZXJEZWZhdWx0IHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0YVByb3ZpZGVyLmdl
dCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOworICAgICAgICByZXR1
cm4gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVp
Z2h0KCksIDgsIDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCksIHBpeGVsQnVmZmVyLT5mb3JtYXQo
KS5jb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBrQ0dCaXRtYXBCeXRlT3JkZXJEZWZh
dWx0IHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBm
YWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwogICAgIH0KIAogICAgIGlmIChyZXNv
bHV0aW9uU2NhbGUoKSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29s
dXRpb246OlllcykgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2
Miw3IEBAIHNpemVfdCBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y2FsY3UKICAgICByZXR1
cm4gSW1hZ2VCdWZmZXJCYWNrZW5kOjpjYWxjdWxhdGVNZW1vcnlDb3N0KGJhY2tlbmRTaXplLCBj
YWxjdWxhdGVCeXRlc1BlclJvdyhiYWNrZW5kU2l6ZSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpj
cmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgQ0dDb2xvclNwYWNlUmVmIGNnQ29s
b3JTcGFjZSwgY29uc3QgSG9zdFdpbmRvdyopCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJD
R0JpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3Qg
UGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgSG9zdFdpbmRvdyopCiB7CiAgICAgQVNTRVJU
KHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKIApAQCAtODEs
NyArODEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlCiAgICAg
c2l6ZV90IG51bUJ5dGVzID0gYmFja2VuZFNpemUuaGVpZ2h0KCkgKiBieXRlc1BlclJvdzsKICAg
ICB2ZXJpZnlJbWFnZUJ1ZmZlcklzQmlnRW5vdWdoKGRhdGEsIG51bUJ5dGVzKTsKIAotICAgIGF1
dG8gY2dDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoZGF0YSwgYmFja2Vu
ZFNpemUud2lkdGgoKSwgYmFja2VuZFNpemUuaGVpZ2h0KCksIDgsIGJ5dGVzUGVyUm93LCBjZ0Nv
bG9yU3BhY2UsIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRl
T3JkZXIzMkhvc3QpKTsKKyAgICBhdXRvIGNnQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250
ZXh0Q3JlYXRlKGRhdGEsIGJhY2tlbmRTaXplLndpZHRoKCksIGJhY2tlbmRTaXplLmhlaWdodCgp
LCA4LCBieXRlc1BlclJvdywgcGFyYW1ldGVycy5jb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFj
ZSgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVy
MzJIb3N0KSk7CiAgICAgaWYgKCFjZ0NvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CkBAIC05NiwxNSArOTYsMTQgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBC
YWNrZQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IEltYWdl
QnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVy
cywgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIGlmIChhdXRvIGNnQ29s
b3JTcGFjZSA9IGNvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkgPyBjb250ZXh0Q29sb3JTcGFj
ZShjb250ZXh0KSA6IG51bGxwdHIpCi0gICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIGNnQ29sb3JTcGFjZS5nZXQoKSwgbnVsbHB0cik7
CisgICAgaWYgKGF1dG8gY2dDb2xvclNwYWNlID0gY29udGV4dC5oYXNQbGF0Zm9ybUNvbnRleHQo
KSA/IGNvbnRleHRDb2xvclNwYWNlKGNvbnRleHQpIDogbnVsbHB0cikgeworICAgICAgICBhdXRv
IG92ZXJyaWRlUGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7CisgICAgICAgIG92ZXJyaWRlUGFyYW1l
dGVycy5jb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlIHsgY2dDb2xvclNwYWNlIH07
CiAKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0
ZXJzLCBudWxscHRyKTsKLX0KKyAgICAgICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNr
ZW5kOjpjcmVhdGUob3ZlcnJpZGVQYXJhbWV0ZXJzLCBudWxscHRyKTsKKyAgICB9CiAKLXN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBIb3N0
V2luZG93KiBob3N0V2luZG93KQotewotICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFj
a2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNv
bG9yU3BhY2UpLCBob3N0V2luZG93KTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBudWxscHRyKTsKIH0KIAogSW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQ6OkltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMsIHZvaWQqIGRhdGEsIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4mJiBk
YXRhUHJvdmlkZXIsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYgY29udGV4dCkK
QEAgLTE0Niw3ICsxNDUsNyBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyQ0dCaXRt
YXBCCiAgICAgICAgIGF1dG8gYmFja2VuZFNpemUgPSB0aGlzLT5iYWNrZW5kU2l6ZSgpOwogICAg
ICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHSW1hZ2VDcmVhdGUoCiAg
ICAgICAgICAgICBiYWNrZW5kU2l6ZS53aWR0aCgpLCBiYWNrZW5kU2l6ZS5oZWlnaHQoKSwgOCwg
MzIsIGJ5dGVzUGVyUm93KCksCi0gICAgICAgICAgICBjYWNoZWRDR0NvbG9yU3BhY2UoY29sb3JT
cGFjZSgpKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVP
cmRlcjMySG9zdCwgbV9kYXRhUHJvdmlkZXIuZ2V0KCksCisgICAgICAgICAgICBjb2xvclNwYWNl
KCkucGxhdGZvcm1Db2xvclNwYWNlKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3Qg
fCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QsIG1fZGF0YVByb3ZpZGVyLmdldCgpLAogICAgICAg
ICAgICAgMCwgdHJ1ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpKTsKICAgICB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRt
YXBCYWNrZW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaAkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksOCArMzksOSBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEludFNpemUgY2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKGNvbnN0IFBhcmFtZXRlcnMmKTsK
ICAgICBzdGF0aWMgc2l6ZV90IGNhbGN1bGF0ZU1lbW9yeUNvc3QoY29uc3QgUGFyYW1ldGVycyYp
OwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2Vu
ZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBDR0NvbG9yU3BhY2VSZWYsIGNvbnN0IEhvc3RX
aW5kb3cqKTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBC
YWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IEhvc3RXaW5kb3cqKTsKKwor
ICAgIC8vIEZJWE1FOiBSZW5hbWUgdG8gY3JlYXRlVXNpbmdDb2xvclNwYWNlT2ZHcmFwaGljc0Nv
bnRleHQoKSAob3Igc29tZXRoaW5nIGxpa2UgdGhhdCkuCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMm
LCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCgpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04MSwxMyArODEsMTMgQEAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gSW1hZ2VCdWZmZXJJ
TwogICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29udGV4dENvbG9yU3BhY2UoY29u
dGV4dCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+
IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMsIENHQ29sb3JTcGFjZVJlZiBjZ0NvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cq
IGhvc3RXaW5kb3cpCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
PiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQogewogICAgIEludFNpemUg
YmFja2VuZFNpemUgPSBjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUocGFyYW1ldGVycyk7CiAgICAg
aWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShiYWNrZW5kU2l6ZSwgYmFja2VuZFNp
emUsIGNnQ29sb3JTcGFjZSwgSU9TdXJmYWNlOjpmb3JtYXRGb3JQaXhlbEZvcm1hdChwYXJhbWV0
ZXJzLnBpeGVsRm9ybWF0KSk7CisgICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUo
YmFja2VuZFNpemUsIGJhY2tlbmRTaXplLCBwYXJhbWV0ZXJzLmNvbG9yU3BhY2UsIElPU3VyZmFj
ZTo6Zm9ybWF0Rm9yUGl4ZWxGb3JtYXQocGFyYW1ldGVycy5waXhlbEZvcm1hdCkpOwogICAgIGlm
ICghc3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTEwMiwxNSArMTAyLDE0
IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2sKIAogc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIGlmIChhdXRvIGNnQ29sb3JTcGFjZSA9IGNvbnRl
eHQuaGFzUGxhdGZvcm1Db250ZXh0KCkgPyBjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0KSA6IG51
bGxwdHIpCi0gICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0
ZShwYXJhbWV0ZXJzLCBjZ0NvbG9yU3BhY2UuZ2V0KCksIG51bGxwdHIpOworICAgIGlmIChhdXRv
IGNnQ29sb3JTcGFjZSA9IGNvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkgPyBjb250ZXh0Q29s
b3JTcGFjZShjb250ZXh0KSA6IG51bGxwdHIpIHsKKyAgICAgICAgYXV0byBvdmVycmlkZVBhcmFt
ZXRlcnMgPSBwYXJhbWV0ZXJzOworICAgICAgICBvdmVycmlkZVBhcmFtZXRlcnMuY29sb3JTcGFj
ZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZSB7IGNnQ29sb3JTcGFjZSB9OwogCi0gICAgcmV0dXJu
IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIG51bGxwdHIp
OwotfQorICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUo
b3ZlcnJpZGVQYXJhbWV0ZXJzLCBudWxscHRyKTsKKyAgICB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6
Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEhvc3RXaW5kb3cqIGhv
c3RXaW5kb3cpCi17Ci0gICAgcmV0dXJuIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3Jl
YXRlKHBhcmFtZXRlcnMsIGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2Up
LCBob3N0V2luZG93KTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpj
cmVhdGUocGFyYW1ldGVycywgbnVsbHB0cik7CiB9CiAKIEltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZDo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMsIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+JiYgc3VyZmFjZSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDIsOCArNDIsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHNp
emVfdCBjYWxjdWxhdGVNZW1vcnlDb3N0KGNvbnN0IFBhcmFtZXRlcnMmKTsKICAgICBzdGF0aWMg
c2l6ZV90IGNhbGN1bGF0ZUV4dGVybmFsTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJzJik7CiAg
ICAgCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgQ0dDb2xvclNwYWNlUmVmLCBjb25zdCBIb3N0
V2luZG93Kik7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgSG9zdFdpbmRvdyopOwor
ICAgIC8vIEZJWE1FOiBSZW5hbWUgdG8gY3JlYXRlVXNpbmdDb2xvclNwYWNlT2ZHcmFwaGljc0Nv
bnRleHQoKSAob3Igc29tZXRoaW5nIGxpa2UgdGhhdCkuCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJz
JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQoY29uc3QgUGFyYW1ldGVycyYsIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+JiYpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGls
aXRpZXNDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsNyArMTc3LDcgQEAgc3RhdGljIGJvb2wgZW5jb2Rl
KGNvbnN0IFBpeGVsQnVmZmVyJiBzbwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1
dG8gaW1hZ2VTaXplID0gc291cmNlLnNpemUoKTsKLSAgICBhdXRvIGltYWdlID0gYWRvcHRDRihD
R0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMy
LCA0ICogaW1hZ2VTaXplLndpZHRoKCksIGNhY2hlZENHQ29sb3JTcGFjZShzb3VyY2UuZm9ybWF0
KCkuY29sb3JTcGFjZSksIGtDR0JpdG1hcEJ5dGVPcmRlckRlZmF1bHQgfCBkYXRhQWxwaGFJbmZv
LCBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0
KSk7CisgICAgYXV0byBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lk
dGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBz
b3VyY2UuZm9ybWF0KCkuY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwga0NHQml0bWFw
Qnl0ZU9yZGVyRGVmYXVsdCB8IGRhdGFBbHBoYUluZm8sIGRhdGFQcm92aWRlci5nZXQoKSwgMCwg
ZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKIAogICAgIHJldHVybiBlbmNvZGUo
aW1hZ2UuZ2V0KCksIGRlc3RpbmF0aW9uVVRJLmdldCgpLCBxdWFsaXR5LCBmdW5jdGlvbik7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0JKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTU3MSw3ICs1
NzEsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzCiBib29sIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2lu
ZygpCiB7CiAgICAgQVNTRVJUKCFnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLmlzRW1wdHko
KSk7Ci0gICAgYXV0byBiYWNraW5nID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGUoZ2V0SW50
ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSwgV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSk7Cisg
ICAgYXV0byBiYWNraW5nID0gSU9TdXJmYWNlOjpjcmVhdGUoZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZl
clNpemUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgIGlmICghYmFja2lu
ZykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaAkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDkgKzI3LDEwIEBACiAKICNpZiBIQVZFKElPU1VSRkFDRSkKIAor
I2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgIkludFNpemUuaCIK
ICNpbmNsdWRlIDxvYmpjL29iamMuaD4KICNpbmNsdWRlIDxwYWwvc3BpL2NvY29hL0lPU3VyZmFj
ZVNQSS5oPgotI2luY2x1ZGUgIkludFNpemUuaCIKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxB
VE9SKQogI2RlZmluZSBIQVZFX0lPU1VSRkFDRV9SR0IxMCAxCkBAIC00NiwxMCArNDcsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEhvc3RX
aW5kb3c7Ci0gICAgCi0jaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKIGNs
YXNzIEltYWdlQnVmZmVyOwotI2VuZGlmCiAKIGVudW0gY2xhc3MgUGl4ZWxGb3JtYXQgOiB1aW50
OF90OwogZW51bSBjbGFzcyBWb2xhdGlsaXR5U3RhdGUgOiB1aW50OF90OwpAQCAtMTAxLDEwICs5
OSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHVpbnQzMl90IG1fZmxhZ3M7CiAgICAgfTsKIAotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGUo
SW50U2l6ZSwgQ0dDb2xvclNwYWNlUmVmLCBGb3JtYXQgPSBGb3JtYXQ6OkJHUkEpOwotICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGUoSW50
U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xvclNwYWNlUmVmLCBGb3JtYXQgPSBGb3Jt
YXQ6OkJHUkEpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9T
dXJmYWNlPiBjcmVhdGVGcm9tU2VuZFJpZ2h0KGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYmLCBD
R0NvbG9yU3BhY2VSZWYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8SU9TdXJmYWNlPiBjcmVhdGVGcm9tU3VyZmFjZShJT1N1cmZhY2VSZWYsIENHQ29sb3JTcGFj
ZVJlZik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZh
Y2U+IGNyZWF0ZShJbnRTaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGb3JtYXQg
PSBGb3JtYXQ6OkJHUkEpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8SU9TdXJmYWNlPiBjcmVhdGUoSW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiwgRm9ybWF0ID0gRm9ybWF0OjpCR1JBKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlRnJvbVNl
bmRSaWdodChjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmJiwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1
cmZhY2U+IGNyZWF0ZUZyb21TdXJmYWNlKElPU3VyZmFjZVJlZiwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJ
T1N1cmZhY2U+IGNyZWF0ZUZyb21JbWFnZShDR0ltYWdlUmVmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlRnJvbVBpeGVsQnVmZmVy
KENWUGl4ZWxCdWZmZXJSZWYpOwogICAgIApAQCAtMTQ2LDcgKzE0NCw3IEBAIHB1YmxpYzoKICAg
ICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICBzaXplX3QgdG90
YWxCeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxCeXRlczsgfQogCi0gICAgQ0dDb2xvclNw
YWNlUmVmIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yU3BhY2UuZ2V0KCk7IH0K
KyAgICBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJl
dHVybiBtX2NvbG9yU3BhY2U7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBGb3JtYXQgZm9ybWF0KCkg
Y29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgSU9TdXJmYWNlSUQgc3VyZmFjZUlEKCkgY29uc3Q7
CiAgICAgc2l6ZV90IGJ5dGVzUGVyUm93KCkgY29uc3Q7CkBAIC0xNjksMTQgKzE2NywxNCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBtaWdyYXRlQ29sb3JTcGFjZVRvUHJvcGVydGllcygpOwogCiBwcml2
YXRlOgotICAgIElPU3VyZmFjZShJbnRTaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBDR0NvbG9y
U3BhY2VSZWYsIEZvcm1hdCwgYm9vbCYgc3VjY2Vzcyk7Ci0gICAgSU9TdXJmYWNlKElPU3VyZmFj
ZVJlZiwgQ0dDb2xvclNwYWNlUmVmKTsKKyAgICBJT1N1cmZhY2UoSW50U2l6ZSwgSW50U2l6ZSBj
b250ZXh0U2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRm9ybWF0LCBib29sJiBz
dWNjZXNzKTsKKyAgICBJT1N1cmZhY2UoSU9TdXJmYWNlUmVmLCBjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmKTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBzdXJm
YWNlRnJvbVBvb2woSW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xvclNwYWNlUmVm
LCBGb3JtYXQpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBzdXJmYWNl
RnJvbVBvb2woSW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiwgRm9ybWF0KTsKICAgICBJbnRTaXplIGNvbnRleHRTaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb250ZXh0U2l6ZTsgfQogICAgIHZvaWQgc2V0Q29udGV4dFNpemUoSW50U2l6ZSk7
CiAKLSAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBtX2NvbG9yU3BhY2U7CisgICAgRGVz
dGluYXRpb25Db2xvclNwYWNlIG1fY29sb3JTcGFjZTsKICAgICBJbnRTaXplIG1fc2l6ZTsKICAg
ICBJbnRTaXplIG1fY29udGV4dFNpemU7CiAgICAgc2l6ZV90IG1fdG90YWxCeXRlczsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZh
Y2UubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0lPU3VyZmFjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAog
I2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJJT1N1cmZhY2UuaCIKIAotI2ltcG9ydCAiQ29y
ZVZpZGVvU29mdExpbmsuaCIKKyNpbXBvcnQgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2lt
cG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMLmgi
CiAjaW1wb3J0ICJIb3N0V2luZG93LmgiCkBAIC00MSw5ICs0MSwxMSBAQAogI2ltcG9ydCA8d3Rm
L01hdGhFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAorI2ltcG9y
dCAiQ29yZVZpZGVvU29mdExpbmsuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUg
c3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpzdXJmYWNlRnJvbVBvb2woSW50
U2l6ZSBzaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFj
ZSwgRm9ybWF0IHBpeGVsRm9ybWF0KQoraW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+
IElPU3VyZmFjZTo6c3VyZmFjZUZyb21Qb29sKEludFNpemUgc2l6ZSwgSW50U2l6ZSBjb250ZXh0
U2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGb3JtYXQgcGl4
ZWxGb3JtYXQpCiB7CiAgICAgYXV0byBjYWNoZWRTdXJmYWNlID0gSU9TdXJmYWNlUG9vbDo6c2hh
cmVkUG9vbCgpLnRha2VTdXJmYWNlKHNpemUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKICAg
ICBpZiAoIWNhY2hlZFN1cmZhY2UpCkBAIC01MywxMiArNTUsMTIgQEAgaW5saW5lIHN0ZDo6dW5p
cXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZgogICAgIHJldHVybiBjYWNoZWRTdXJmYWNlOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZShJbnRTaXplIHNp
emUsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlLCBGb3JtYXQgcGl4ZWxGb3JtYXQpCitzdGQ6
OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZShJbnRTaXplIHNpemUsIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgRm9ybWF0IHBpeGVsRm9ybWF0
KQogewogICAgIHJldHVybiBJT1N1cmZhY2U6OmNyZWF0ZShzaXplLCBzaXplLCBjb2xvclNwYWNl
LCBwaXhlbEZvcm1hdCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFj
ZTo6Y3JlYXRlKEludFNpemUgc2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xvclNwYWNl
UmVmIGNvbG9yU3BhY2UsIEZvcm1hdCBwaXhlbEZvcm1hdCkKK3N0ZDo6dW5pcXVlX3B0cjxJT1N1
cmZhY2U+IElPU3VyZmFjZTo6Y3JlYXRlKEludFNpemUgc2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6
ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGb3JtYXQgcGl4ZWxG
b3JtYXQpCiB7CiAgICAgaWYgKGF1dG8gY2FjaGVkU3VyZmFjZSA9IHN1cmZhY2VGcm9tUG9vbChz
aXplLCBjb250ZXh0U2l6ZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpKSB7CiAgICAgICAgIExP
R19XSVRIX1NUUkVBTShJT1N1cmZhY2UsIHN0cmVhbSA8PCAiSU9TdXJmYWNlOjpjcmVhdGUgdG9v
ayBmcm9tIHBvb2w6ICIgPDwgKmNhY2hlZFN1cmZhY2UpOwpAQCAtNzUsMTMgKzc3LDEzIEBAIHN0
ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6Y3IKICAgICByZXR1cm4gc3VyZmFj
ZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGVGcm9t
U2VuZFJpZ2h0KGNvbnN0IE1hY2hTZW5kUmlnaHQmJiBzZW5kUmlnaHQsIENHQ29sb3JTcGFjZVJl
ZiBjb2xvclNwYWNlKQorc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVh
dGVGcm9tU2VuZFJpZ2h0KGNvbnN0IE1hY2hTZW5kUmlnaHQmJiBzZW5kUmlnaHQsIGNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkKIHsKICAgICBhdXRvIHN1cmZhY2UgPSBh
ZG9wdENGKElPU3VyZmFjZUxvb2t1cEZyb21NYWNoUG9ydChzZW5kUmlnaHQuc2VuZFJpZ2h0KCkp
KTsKICAgICByZXR1cm4gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU3VyZmFjZShzdXJmYWNlLmdldCgp
LCBjb2xvclNwYWNlKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNl
OjpjcmVhdGVGcm9tU3VyZmFjZShJT1N1cmZhY2VSZWYgc3VyZmFjZSwgQ0dDb2xvclNwYWNlUmVm
IGNvbG9yU3BhY2UpCitzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0
ZUZyb21TdXJmYWNlKElPU3VyZmFjZVJlZiBzdXJmYWNlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmIGNvbG9yU3BhY2UpCiB7CiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZh
Y2U+KG5ldyBJT1N1cmZhY2Uoc3VyZmFjZSwgY29sb3JTcGFjZSkpOwogfQpAQCAtOTQsNyArOTYs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyCiAgICAgc2l6ZV90
IHdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlKTsKICAgICBzaXplX3QgaGVpZ2h0ID0gQ0dJ
bWFnZUdldEhlaWdodChpbWFnZSk7CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNy
ZWF0ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpLCBDR0ltYWdlR2V0Q29sb3JTcGFjZShpbWFnZSkp
OworICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKEludFNpemUod2lkdGgsIGhl
aWdodCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB7IENHSW1hZ2VHZXRDb2xvclNwYWNlKGltYWdl
KSB9KTsKICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1
dG8gc3VyZmFjZUNvbnRleHQgPSBzdXJmYWNlLT5lbnN1cmVQbGF0Zm9ybUNvbnRleHQoKTsKQEAg
LTExNiw3ICsxMTgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNy
CiAgICAgaWYgKCFjb2xvclNwYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJl
dHVybiBjcmVhdGVGcm9tU3VyZmFjZShzdXJmYWNlLCBjb2xvclNwYWNlKTsKKyAgICByZXR1cm4g
Y3JlYXRlRnJvbVN1cmZhY2Uoc3VyZmFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIHsgY29sb3JT
cGFjZSB9KTsKIH0KIAogdm9pZCBJT1N1cmZhY2U6Om1vdmVUb1Bvb2woc3RkOjp1bmlxdWVfcHRy
PElPU3VyZmFjZT4mJiBzdXJmYWNlKQpAQCAtMTk2LDcgKzE5OCw3IEBAIHN0YXRpYyBOU0RpY3Rp
b25hcnkgKm9wdGlvbnNGb3IzMkJpdFN1cmYKIAogfQogCi1JT1N1cmZhY2U6OklPU3VyZmFjZShJ
bnRTaXplIHNpemUsIEludFNpemUgY29udGV4dFNpemUsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNw
YWNlLCBGb3JtYXQgZm9ybWF0LCBib29sJiBzdWNjZXNzKQorSU9TdXJmYWNlOjpJT1N1cmZhY2Uo
SW50U2l6ZSBzaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmIGNvbG9yU3BhY2UsIEZvcm1hdCBmb3JtYXQsIGJvb2wmIHN1Y2Nlc3MpCiAgICAgOiBt
X2NvbG9yU3BhY2UoY29sb3JTcGFjZSkKICAgICAsIG1fc2l6ZShzaXplKQogICAgICwgbV9jb250
ZXh0U2l6ZShjb250ZXh0U2l6ZSkKQEAgLTIzMiw3ICsyMzQsNyBAQCBJT1N1cmZhY2U6OklPU3Vy
ZmFjZShJbnRTaXplIHNpemUsIEludFNpCiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKExheWVy
cywgIklPU3VyZmFjZSBjcmVhdGlvbiBmYWlsZWQgZm9yIHNpemU6ICglZCAlZCkgYW5kIGZvcm1h
dDogKCVkKSIsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgZm9ybWF0KTsKIH0KIAotSU9T
dXJmYWNlOjpJT1N1cmZhY2UoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIENHQ29sb3JTcGFjZVJlZiBj
b2xvclNwYWNlKQorSU9TdXJmYWNlOjpJT1N1cmZhY2UoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkKICAgICA6IG1fY29sb3JTcGFj
ZShjb2xvclNwYWNlKQogICAgICwgbV9zdXJmYWNlKHN1cmZhY2UpCiB7CkBAIC0zNDcsNyArMzQ5
LDcgQEAgQ0dDb250ZXh0UmVmIElPU3VyZmFjZTo6ZW5zdXJlUGxhdGZvcm1DbwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgCi0gICAgbV9jZ0NvbnRleHQgPSBhZG9wdENGKENHSU9TdXJmYWNl
Q29udGV4dENyZWF0ZShtX3N1cmZhY2UuZ2V0KCksIG1fY29udGV4dFNpemUud2lkdGgoKSwgbV9j
b250ZXh0U2l6ZS5oZWlnaHQoKSwgYml0c1BlckNvbXBvbmVudCwgYml0c1BlclBpeGVsLCBtX2Nv
bG9yU3BhY2UuZ2V0KCksIGJpdG1hcEluZm8pKTsKKyAgICBtX2NnQ29udGV4dCA9IGFkb3B0Q0Yo
Q0dJT1N1cmZhY2VDb250ZXh0Q3JlYXRlKG1fc3VyZmFjZS5nZXQoKSwgbV9jb250ZXh0U2l6ZS53
aWR0aCgpLCBtX2NvbnRleHRTaXplLmhlaWdodCgpLCBiaXRzUGVyQ29tcG9uZW50LCBiaXRzUGVy
UGl4ZWwsIG1fY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwgYml0bWFwSW5mbykpOwog
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmIChhdXRvIGRpc3BsYXlNYXNrID0gcHJpbWFyeU9w
ZW5HTERpc3BsYXlNYXNrKCkpIHsKQEAgLTUxNSw3ICs1MTcsNyBAQCB2b2lkIElPU3VyZmFjZTo6
c2V0T3duZXJzaGlwSWRlbnRpdHkodGFzCiAKIHZvaWQgSU9TdXJmYWNlOjptaWdyYXRlQ29sb3JT
cGFjZVRvUHJvcGVydGllcygpCiB7Ci0gICAgYXV0byBjb2xvclNwYWNlUHJvcGVydGllcyA9IGFk
b3B0Q0YoQ0dDb2xvclNwYWNlQ29weVByb3BlcnR5TGlzdChtX2NvbG9yU3BhY2UuZ2V0KCkpKTsK
KyAgICBhdXRvIGNvbG9yU3BhY2VQcm9wZXJ0aWVzID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDb3B5
UHJvcGVydHlMaXN0KG1fY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSkpOwogICAgIElP
U3VyZmFjZVNldFZhbHVlKG1fc3VyZmFjZS5nZXQoKSwga0lPU3VyZmFjZUNvbG9yU3BhY2UsIGNv
bG9yU3BhY2VQcm9wZXJ0aWVzLmdldCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFn
ZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJl
bmRlcmVyQ29yZUltYWdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yODksNyArMjg5LDcgQEAgdm9p
ZCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6cmVuZAogICAgICAgICByZXR1cm47CiAg
ICAgCiAgICAgYXV0byYgc3VyZmFjZSA9IGRvd25jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI+
KCptX291dHB1dEltYWdlQnVmZmVyKS5zdXJmYWNlKCk7Ci0gICAgW3NoYXJlZENJQ29udGV4dCgp
LmdldCgpIHJlbmRlcjogbV9vdXRwdXRJbWFnZS5nZXQoKSB0b0lPU3VyZmFjZTogc3VyZmFjZS5z
dXJmYWNlKCkgYm91bmRzOmRlc3RSZWN0KGxhc3RFZmZlY3QpIGNvbG9yU3BhY2U6Y2FjaGVkQ0dD
b2xvclNwYWNlKGxhc3RFZmZlY3QucmVzdWx0Q29sb3JTcGFjZSgpKV07CisgICAgW3NoYXJlZENJ
Q29udGV4dCgpLmdldCgpIHJlbmRlcjogbV9vdXRwdXRJbWFnZS5nZXQoKSB0b0lPU3VyZmFjZTog
c3VyZmFjZS5zdXJmYWNlKCkgYm91bmRzOmRlc3RSZWN0KGxhc3RFZmZlY3QpIGNvbG9yU3BhY2U6
bGFzdEVmZmVjdC5yZXN1bHRDb2xvclNwYWNlKCkucGxhdGZvcm1Db2xvclNwYWNlKCldOwogfQog
ICAgIAogRmxvYXRSZWN0IEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpkZXN0UmVjdChj
b25zdCBGaWx0ZXJFZmZlY3QmIGxhc3RFZmZlY3QpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdl
QnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgSW1hZ2VCdWZm
ZXIgOiBwdWJsaWMgQ29uY3JldGVJbWFnZQogICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVm
ZmVyOjpiYXNlVHJhbnNmb3JtOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIGF1dG8gY3JlYXRlKGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RX
aW5kb3cqIGhvc3RXaW5kb3cpCisgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93
KiBob3N0V2luZG93KQogICAgIHsKICAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0ZUltYWdlQnVm
ZmVyOjp0ZW1wbGF0ZSBjcmVhdGU8SW1hZ2VCdWZmZXI+KHNpemUsIHJlc29sdXRpb25TY2FsZSwg
Y29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIGhvc3RXaW5kb3cpOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1C
dWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtQnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDcgKzI4MSw3IEBAIHZv
aWQgSXRlbUhhbmRsZTo6ZGVzdHJveSgpCiAgICAgICAgIGdldDxGaWxsUm91bmRlZFJlY3Q+KCku
fkZpbGxSb3VuZGVkUmVjdCgpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJdGVtVHlwZTo6
R2V0UGl4ZWxCdWZmZXI6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlf
ZGVzdHJ1Y3RpYmxlPEdldFBpeGVsQnVmZmVyPjo6dmFsdWUpOworICAgICAgICBnZXQ8R2V0UGl4
ZWxCdWZmZXI+KCkufkdldFBpeGVsQnVmZmVyKCk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNl
IEl0ZW1UeXBlOjpQdXRQaXhlbEJ1ZmZlcjoKICAgICAgICAgZ2V0PFB1dFBpeGVsQnVmZmVyPigp
Ln5QdXRQaXhlbEJ1ZmZlcigpOwpAQCAtMzA3LDcgKzMwNyw3IEBAIHZvaWQgSXRlbUhhbmRsZTo6
ZGVzdHJveSgpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgogICAgIGNhc2UgSXRlbVR5cGU6OkJl
Z2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
dHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz46OnZhbHVl
KTsKKyAgICAgICAgZ2V0PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpLn5CZWdpbkNsaXBU
b0RyYXdpbmdDb21tYW5kcygpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJdGVtVHlwZTo6
QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Ry
aXZpYWxseV9kZXN0cnVjdGlibGU8QmVnaW5UcmFuc3BhcmVuY3lMYXllcj46OnZhbHVlKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuaAkod29ya2luZyBjb3B5KQpAQCAtODgwLDIzICs4ODAsNTUgQEAgT3B0aW9uYWw8Q2xp
cFBhdGg+IENsaXBQYXRoOjpkZWNvZGUoRGVjbwogY2xhc3MgQmVnaW5DbGlwVG9EcmF3aW5nQ29t
bWFuZHMgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUg
PSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM7Ci0gICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIGlzSW5saW5lSXRlbSA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGlzSW5saW5lSXRlbSA9IGZhbHNlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RyYXdp
bmdJdGVtID0gZmFsc2U7CiAKLSAgICBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkK
KyAgICBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpCiAgICAgICAgIDog
bV9kZXN0aW5hdGlvbihkZXN0aW5hdGlvbikKICAgICAgICAgLCBtX2NvbG9yU3BhY2UoY29sb3JT
cGFjZSkKICAgICB7CiAgICAgfQogCisgICAgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29u
c3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlJiYgY29sb3JT
cGFjZSkKKyAgICAgICAgOiBtX2Rlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKQorICAgICAgICAsIG1f
Y29sb3JTcGFjZShXVEZNb3ZlKGNvbG9yU3BhY2UpKQorICAgIHsKKyAgICB9CisKICAgICBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsg
fQotICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4g
bV9jb2xvclNwYWNlOyB9CisgICAgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNw
YWNlKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvclNwYWNlOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPiBk
ZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9u
OwogICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBtX2NvbG9yU3BhY2U7CiB9OwogCit0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX2Rlc3RpbmF0aW9u
OworICAgIGVuY29kZXIgPDwgbV9jb2xvclNwYWNlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPgorT3B0aW9uYWw8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+IEJlZ2luQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxG
bG9hdFJlY3Q+IGRlc3RpbmF0aW9uOworICAgIGRlY29kZXIgPj4gZGVzdGluYXRpb247CisgICAg
aWYgKCFkZXN0aW5hdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9w
dGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKKyAgICBkZWNvZGVyID4+
IGNvbG9yU3BhY2U7CisgICAgaWYgKCFjb2xvclNwYWNlKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgcmV0dXJuIHt7ICpkZXN0aW5hdGlvbiwgV1RGTW92ZSgqY29sb3JTcGFj
ZSkgfX07Cit9CisKIGNsYXNzIEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpFbmRDbGlw
VG9EcmF3aW5nQ29tbWFuZHM7CkBAIC0xOTM4LDIzICsxOTcwLDU1IEBAIHByaXZhdGU6CiBjbGFz
cyBHZXRQaXhlbEJ1ZmZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlw
ZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpHZXRQaXhlbEJ1ZmZlcjsKLSAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgaXNJbmxpbmVJdGVtID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNJbmxpbmVJdGVtID0gZmFsc2U7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2lu
Z0l0ZW0gPSBmYWxzZTsKIAotICAgIEdldFBpeGVsQnVmZmVyKFdlYkNvcmU6OlBpeGVsQnVmZmVy
Rm9ybWF0IG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCkKKyAg
ICBHZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBj
b25zdCBJbnRSZWN0JiBzcmNSZWN0KQogICAgICAgICA6IG1fc3JjUmVjdChzcmNSZWN0KQogICAg
ICAgICAsIG1fb3V0cHV0Rm9ybWF0KG91dHB1dEZvcm1hdCkKICAgICB7CiAgICAgfQogCi0gICAg
UGl4ZWxCdWZmZXJGb3JtYXQgb3V0cHV0Rm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9vdXRwdXRG
b3JtYXQ7IH0KKyAgICBHZXRQaXhlbEJ1ZmZlcihQaXhlbEJ1ZmZlckZvcm1hdCYmIG91dHB1dEZv
cm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkKKyAgICAgICAgOiBtX3NyY1JlY3Qoc3JjUmVj
dCkKKyAgICAgICAgLCBtX291dHB1dEZvcm1hdChXVEZNb3ZlKG91dHB1dEZvcm1hdCkpCisgICAg
eworICAgIH0KKworICAgIGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQoKSBj
b25zdCB7IHJldHVybiBtX291dHB1dEZvcm1hdDsgfQogICAgIEludFJlY3Qgc3JjUmVjdCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3JjUmVjdDsgfQogCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBPcHRpb25hbDxHZXRQaXhlbEJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKKwogcHJp
dmF0ZToKICAgICBJbnRSZWN0IG1fc3JjUmVjdDsKICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBtX291
dHB1dEZvcm1hdDsKIH07CiAKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEdldFBpeGVs
QnVmZmVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8
IG1fc3JjUmVjdDsKKyAgICBlbmNvZGVyIDw8IG1fb3V0cHV0Rm9ybWF0OworfQorCit0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8R2V0UGl4ZWxCdWZmZXI+IEdldFBpeGVsQnVmZmVy
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxJbnRSZWN0PiBzcmNS
ZWN0OworICAgIGRlY29kZXIgPj4gc3JjUmVjdDsKKyAgICBpZiAoIXNyY1JlY3QpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlckZvcm1hdD4g
b3V0cHV0Rm9ybWF0OworICAgIGRlY29kZXIgPj4gb3V0cHV0Rm9ybWF0OworICAgIGlmICghb3V0
cHV0Rm9ybWF0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIHt7
IFdURk1vdmUoKm91dHB1dEZvcm1hdCksICpzcmNSZWN0IH19OworfQorCiBjbGFzcyBQdXRQaXhl
bEJ1ZmZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlw
ZSA9IEl0ZW1UeXBlOjpQdXRQaXhlbEJ1ZmZlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDUyLDcgKzQ1Miw3IEBAIHZvaWQgUmVjb3JkZXI6OmNsaXBUb0lt
YWdlQnVmZmVyKEltYWdlQnUKICAgICBhcHBlbmQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KGltYWdlQnVm
ZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBkZXN0UmVjdCk7CiB9CiAKLXZvaWQg
UmVjb3JkZXI6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFw
aGljc0NvbnRleHQmKT4mJiBkcmF3aW5nRnVuY3Rpb24pCit2b2lkIFJlY29yZGVyOjpjbGlwVG9E
cmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4
dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikKIHsKICAgICBHcmFwaGljc0NvbnRleHQgbmVzdGVkQ29u
dGV4dChbJl0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgIGF1dG8gaW5pdGlh
bENsaXAgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBkZXN0aW5hdGlvbi5zaXplKCkpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNyArMTQ3LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSkgb3ZlcnJpZGU7CiAg
ICAgSW50UmVjdCBjbGlwQm91bmRzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGlwVG9JbWFnZUJ1
ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQm
KT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRnVuY3Rp
b248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKFZJREVP
KQogICAgIHZvaWQgcGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5QYWludEZyYW1lRm9yTWVk
aWEoY29uc3QgTWVkaWFQbGF5ZXImKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNw
bGFjZW1lbnRNYXAuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjksNyArNjksNyBAQCBib29sIEZFRGlzcGxhY2VtZW50TWFwOjpzZXRTY2FsZShmbG9h
dCBzCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OnNldFJl
c3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlKQordm9pZCBGRURpc3BsYWNlbWVu
dE1hcDo6c2V0UmVzdWx0Q29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKQog
ewogICAgIC8vIFNwZWM6IFRoZSAnY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzJyBwcm9wZXJ0
eSBvbmx5IGFwcGxpZXMgdG8gdGhlICdpbjInIHNvdXJjZSBpbWFnZQogICAgIC8vIGFuZCBkb2Vz
IG5vdCBhcHBseSB0byB0aGUgJ2luJyBzb3VyY2UgaW1hZ2UuIFRoZSAnaW4nIHNvdXJjZSBpbWFn
ZSBtdXN0IHJlbWFpbiBpbiBpdHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmgJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVEaXNwbGFjZW1lbnRNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBwdWJs
aWM6CiAgICAgZmxvYXQgc2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3NjYWxlOyB9CiAgICAgYm9v
bCBzZXRTY2FsZShmbG9hdCk7CiAKLSAgICB2b2lkIHNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGlu
YXRpb25Db2xvclNwYWNlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFJlc3VsdENvbG9yU3BhY2Uo
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB0cmFuc2Zv
cm1SZXN1bHRDb2xvclNwYWNlKEZpbHRlckVmZmVjdCosIGNvbnN0IGludCkgb3ZlcnJpZGU7CiAK
IHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFRmxvb2QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRmxvb2QuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmgJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDggKzQwLDggQEAgcHVibGljOgogI2lmICFVU0UoQ0cpCiAgICAgLy8gZmVGbG9vZCBkb2VzIG5v
dCBwZXJmb3JtIGNvbG9yIGludGVycG9sYXRpb24gb2YgYW55IGtpbmQsIHNvIHRoZSByZXN1bHQg
aXMgYWx3YXlzIGluIHRoZSBjdXJyZW50CiAgICAgLy8gY29sb3Igc3BhY2UgcmVnYXJkbGVzcyBv
ZiB0aGUgdmFsdWUgb2YgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzLgotICAgIHZvaWQgc2V0
T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpIG92ZXJyaWRlIHsgRmls
dGVyRWZmZWN0OjpzZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
Qik7IH0KLSAgICB2b2lkIHNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNl
KSBvdmVycmlkZSB7IEZpbHRlckVmZmVjdDo6c2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IpOyB9CisgICAgdm9pZCBzZXRPcGVyYXRpbmdDb2xvclNwYWNlKGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpIG92ZXJyaWRlIHsgRmlsdGVyRWZmZWN0OjpzZXRS
ZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsgfQorICAgIHZv
aWQgc2V0UmVzdWx0Q29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKSBvdmVy
cmlkZSB7IEZpbHRlckVmZmVjdDo6c2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSk7IH0KICNlbmRpZgogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RVRpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgRkVUaWxlOjpw
bGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgICAgICB0aWxlUmVjdC5zY2FsZShmaWx0ZXIuZmls
dGVyUmVzb2x1dGlvbigpLndpZHRoKCksIGZpbHRlci5maWx0ZXJSZXNvbHV0aW9uKCkuaGVpZ2h0
KCkpOwogICAgIH0KIAotICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6
Y3JlYXRlSW1hZ2VCdWZmZXIodGlsZVJlY3QsIHRpbGVSZWN0LCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IsIGZpbHRlcigpLnJlbmRlcmluZ01vZGUoKSk7CisgICAgYXV0byB0aWxlSW1hZ2Ug
PSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcih0aWxlUmVjdCwgdGlsZVJl
Y3QsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBmaWx0ZXIoKS5yZW5kZXJpbmdNb2Rl
KCkpOwogICAgIGlmICghdGlsZUltYWdlKQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ckVmZmVjdC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM5
LDcgKzQzOSw3IEBAIHN0YXRpYyB2b2lkIGNvcHlVbnByZW11bHRpcGx5aW5nQWxwaGEoY28KICNl
bmRpZgogfQogCi1PcHRpb25hbDxQaXhlbEJ1ZmZlcj4gRmlsdGVyRWZmZWN0Ojpjb252ZXJ0UGl4
ZWxCdWZmZXJUb0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIHRhcmdldENvbG9yU3Bh
Y2UsIFBpeGVsQnVmZmVyJiBwaXhlbEJ1ZmZlcikKK09wdGlvbmFsPFBpeGVsQnVmZmVyPiBGaWx0
ZXJFZmZlY3Q6OmNvbnZlcnRQaXhlbEJ1ZmZlclRvQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmIHRhcmdldENvbG9yU3BhY2UsIFBpeGVsQnVmZmVyJiBwaXhlbEJ1ZmZlcikK
IHsKICAgICAvLyBGSVhNRTogVXNpbmcgYW4gSW1hZ2VCdWZmZXIgdG8gcGVyZm9ybSB0aGUgY29s
b3Igc3BhY2UgY29udmVyc2lvbiBpcyB1bm5lY2Vzc2FyeS4gV2UgY2FuIGRvIGl0IGRpcmVjdGx5
LgogCkBAIC00NTQsNyArNDU0LDcgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEZpbHRlckVmZmVj
dDo6Y29udgogICAgIHJldHVybiBjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UodGFyZ2V0
Q29sb3JTcGFjZSwgKmJ1ZmZlciwgZGVzdGluYXRpb25SZWN0LCBwaXhlbEJ1ZmZlci5mb3JtYXQo
KS5hbHBoYUZvcm1hdCk7CiB9CiAKLU9wdGlvbmFsPFBpeGVsQnVmZmVyPiBGaWx0ZXJFZmZlY3Q6
OmNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UgdGFy
Z2V0Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXImIGlucHV0QnVmZmVyLCBjb25zdCBJbnRSZWN0JiBy
ZWN0LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEFscGhhRm9ybWF0KQorT3B0aW9uYWw8
UGl4ZWxCdWZmZXI+IEZpbHRlckVmZmVjdDo6Y29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNl
KGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgdGFyZ2V0Q29sb3JTcGFjZSwgSW1hZ2VCdWZm
ZXImIGlucHV0QnVmZmVyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBBbHBoYVByZW11bHRpcGxpY2F0
aW9uIG91dHB1dEFscGhhRm9ybWF0KQogewogICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBiZSBkb25l
IG1vcmUgZGlyZWN0bHkgdXNpbmcgUGl4ZWxCdWZmZXJDb252ZXJzaW9uLgogCkBAIC00NzIsNyAr
NDcyLDcgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEZpbHRlckVmZmVjdDo6Y29udgogICAgIHJl
dHVybiBjb252ZXJ0ZWRCdWZmZXItPmdldFBpeGVsQnVmZmVyKGZvcm1hdCwgcmVjdCk7CiB9CiAK
LXZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5Q29udmVydGVkSW1hZ2VCdWZmZXJUb0Rlc3RpbmF0aW9u
KFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNv
bG9yU3BhY2UsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCkKK3ZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5Q29udmVydGVkSW1hZ2VCdWZm
ZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91
dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgLy8gQ29udmVydHMg
dGhlIGRhdGEgc3RvcmVkIGluIG1faW1hZ2VCdWZmZXJSZXN1bHQsIGFuZCBzYXZlIHRvIGRlc3Rp
bmF0aW9uCiAgICAgYXV0byBjb252ZXJ0ZWRQaXhlbEJ1ZmZlciA9IGNvbnZlcnRJbWFnZUJ1ZmZl
clRvQ29sb3JTcGFjZShjb2xvclNwYWNlLCAqbV9pbWFnZUJ1ZmZlclJlc3VsdCwgeyBJbnRQb2lu
dCgpLCBtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSB9LCBvdXRwdXRGb3JtYXQpOwpAQCAtNDgx
LDcgKzQ4MSw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5Q29udmVydGVkSW1hZ2VCdWYKICAg
ICBjb3B5SW1hZ2VCeXRlcyhjb252ZXJ0ZWRQaXhlbEJ1ZmZlci0+ZGF0YSgpLCBkZXN0aW5hdGlv
biwgZGVzdFJlY3QpOwogfQogCi12b2lkIEZpbHRlckVmZmVjdDo6Y29weUNvbnZlcnRlZFBpeGVs
QnVmZmVyVG9EZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIFBpeGVs
QnVmZmVyJiBwaXhlbEJ1ZmZlciwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRQ
aXhlbEJ1ZmZlclRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBQ
aXhlbEJ1ZmZlciYgcGl4ZWxCdWZmZXIsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29s
b3JTcGFjZSwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgLy8gQ29udmVydHMgdGhl
IGRhdGEgc3RvcmVkIGluIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQvbV9wcmVtdWx0aXBsaWVk
SW1hZ2VSZXN1bHQsCiAgICAgLy8gd2hpY2hldmVyIGlzbid0IG51bGwsIGFuZCBzYXZlIHRvIGRl
c3RpbmF0aW9uCkBAIC02MzYsNyArNjM2LDcgQEAgYm9vbCBGaWx0ZXJFZmZlY3Q6OnJlcXVpcmVz
UGl4ZWxCdWZmZXJDbwogI2VuZGlmCiB9CiAKLXZvaWQgRmlsdGVyRWZmZWN0Ojp0cmFuc2Zvcm1S
ZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBkZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UpCit2b2lkIEZpbHRlckVmZmVjdDo6dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGRlc3RpbmF0aW9uQ29sb3JTcGFjZSkKIHsKICNpZiBVU0Uo
Q0cpCiAgICAgLy8gQ0cgaGFuZGxlcyBjb2xvciBzcGFjZSBhZGp1c3RtZW50cyBpbnRlcm5hbGx5
LgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJF
ZmZlY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMyw3ICsyMyw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFscGhhUHJlbXVs
dGlwbGljYXRpb24uaCIKLSNpbmNsdWRlICJDb2xvclNwYWNlLmgiCisjaW5jbHVkZSAiRGVzdGlu
YXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiSW50
UmVjdC5oIgogI2luY2x1ZGUgIkludFJlY3RFeHRlbnQuaCIKQEAgLTE2NSwxMyArMTY1LDEzIEBA
IHB1YmxpYzoKICAgICBib29sIGNsaXBzVG9Cb3VuZHMoKSBjb25zdCB7IHJldHVybiBtX2NsaXBz
VG9Cb3VuZHM7IH0KICAgICB2b2lkIHNldENsaXBzVG9Cb3VuZHMoYm9vbCB2YWx1ZSkgeyBtX2Ns
aXBzVG9Cb3VuZHMgPSB2YWx1ZTsgfQogCi0gICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG9wZXJh
dGluZ0NvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX29wZXJhdGluZ0NvbG9yU3BhY2U7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgc2V0T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgY29sb3JTcGFjZSkgeyBtX29wZXJhdGluZ0NvbG9yU3BhY2UgPSBjb2xvclNwYWNlOyB9
Ci0gICAgRGVzdGluYXRpb25Db2xvclNwYWNlIHJlc3VsdENvbG9yU3BhY2UoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc3VsdENvbG9yU3BhY2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0UmVzdWx0Q29s
b3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkgeyBtX3Jlc3VsdENvbG9y
U3BhY2UgPSBjb2xvclNwYWNlOyB9CisgICAgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBv
cGVyYXRpbmdDb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYXRpbmdDb2xvclNwYWNl
OyB9CisgICAgdmlydHVhbCB2b2lkIHNldE9wZXJhdGluZ0NvbG9yU3BhY2UoY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKSB7IG1fb3BlcmF0aW5nQ29sb3JTcGFjZSA9IGNv
bG9yU3BhY2U7IH0KKyAgICBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHJlc3VsdENvbG9y
U3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdENvbG9yU3BhY2U7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2V0UmVzdWx0Q29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNv
bG9yU3BhY2UpIHsgbV9yZXN1bHRDb2xvclNwYWNlID0gY29sb3JTcGFjZTsgfQogCiAgICAgdmly
dHVhbCB2b2lkIHRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRmlsdGVyRWZmZWN0KiBpbiwgY29u
c3QgaW50KSB7IGluLT50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKG1fb3BlcmF0aW5nQ29sb3JT
cGFjZSk7IH0KLSAgICB2b2lkIHRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25D
b2xvclNwYWNlKTsKKyAgICB2b2lkIHRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJik7CiAgICAgCiAgICAgc3RhdGljIFZlY3RvcjxmbG9hdD4gbm9y
bWFsaXplZEZsb2F0cyhjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2YWx1ZXMpCiAgICAgewpAQCAtMjAz
LDExICsyMDMsMTEgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNv
ZnR3YXJlKCkgPSAwOwogCiAgICAgdm9pZCBjb3B5SW1hZ2VCeXRlcyhjb25zdCBVaW50OENsYW1w
ZWRBcnJheSYgc291cmNlLCBVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0IElu
dFJlY3QmKSBjb25zdDsKLSAgICB2b2lkIGNvcHlDb252ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVzdGlu
YXRpb24oVWludDhDbGFtcGVkQXJyYXkmLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEFscGhhUHJl
bXVsdGlwbGljYXRpb24sIGNvbnN0IEludFJlY3QmKTsKLSAgICB2b2lkIGNvcHlDb252ZXJ0ZWRQ
aXhlbEJ1ZmZlclRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmLCBQaXhlbEJ1ZmZlciYs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYpOworICAgIHZvaWQgY29weUNv
bnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYsIGNvbnN0
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEFscGhhUHJlbXVsdGlwbGljYXRpb24sIGNvbnN0IElu
dFJlY3QmKTsKKyAgICB2b2lkIGNvcHlDb252ZXJ0ZWRQaXhlbEJ1ZmZlclRvRGVzdGluYXRpb24o
VWludDhDbGFtcGVkQXJyYXkmLCBQaXhlbEJ1ZmZlciYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYsIGNvbnN0IEludFJlY3QmKTsKICAgICBib29sIHJlcXVpcmVzUGl4ZWxCdWZmZXJDb2xv
clNwYWNlQ29udmVyc2lvbihPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+KTsKLSAgICBP
cHRpb25hbDxQaXhlbEJ1ZmZlcj4gY29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSwgSW1hZ2VCdWZmZXImLCBjb25zdCBJbnRSZWN0JiwgQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbik7Ci0gICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGNvbnZlcnRQaXhlbEJ1
ZmZlclRvQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFBpeGVsQnVmZmVyJik7Cisg
ICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZShj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBJbWFnZUJ1ZmZlciYsIGNvbnN0IEludFJlY3Qm
LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uKTsKKyAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gY29u
dmVydFBpeGVsQnVmZmVyVG9Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYs
IFBpeGVsQnVmZmVyJik7CiAgICAgCiAKICAgICBGaWx0ZXImIG1fZmlsdGVyOwpAQCAtMjQ0LDEz
ICsyNDQsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY2xpcHNUb0JvdW5kcyB7IHRydWUgfTsK
IAogI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICBz
dGF0aWMgY29uc3RleHByIGF1dG8gZGVmYXVsdE9wZXJhdGluZ0NvbG9yU3BhY2UgPSBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0I7CisgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1f
b3BlcmF0aW5nQ29sb3JTcGFjZSB7IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigp
IH07CiAjZWxzZQotICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBkZWZhdWx0T3BlcmF0aW5nQ29s
b3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjsKKyAgICBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgbV9vcGVyYXRpbmdDb2xvclNwYWNlIHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCkgfTsKICNlbmRpZgotCi0gICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1fb3BlcmF0aW5n
Q29sb3JTcGFjZSB7IGRlZmF1bHRPcGVyYXRpbmdDb2xvclNwYWNlIH07Ci0gICAgRGVzdGluYXRp
b25Db2xvclNwYWNlIG1fcmVzdWx0Q29sb3JTcGFjZSB7IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiB9OworICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBtX3Jlc3VsdENvbG9yU3BhY2UgeyBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9OwogICAgIAogICAgIGNvbnN0IFR5cGUgbV9m
aWx0ZXJFZmZlY3RDbGFzc1R5cGU7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgJKHJldmlzaW9u
IDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291
cmNlR3JhcGhpYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIHByaXZhdGU6CiAg
ICAgU291cmNlR3JhcGhpYyhGaWx0ZXImIGZpbHRlcikKICAgICAgICAgOiBGaWx0ZXJFZmZlY3Qo
ZmlsdGVyLCBUeXBlOjpTb3VyY2VHcmFwaGljKQogICAgIHsKLSAgICAgICAgc2V0T3BlcmF0aW5n
Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOworICAgICAgICBzZXRPcGVy
YXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICB9CiAK
ICAgICBjb25zdCBjaGFyKiBmaWx0ZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlNvdXJj
ZUdyYXBoaWMiOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFD
YWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNzYsNyArMTA3Niw3IEBAIHZvaWQg
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6YXBwZW5kKHN0ZDoKICAgICBtX2NvbW1hbmRMaXN0LmFw
cGVuZChXVEZNb3ZlKGNvbW1hbmQpKTsKIH0KIAotdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVy
OjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiwgRGVzdGluYXRpb25Db2xv
clNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKQordm9pZCBDYWlyb09w
ZXJhdGlvblJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRl
eHQmKT4mJikKIHsKICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC05Nyw3ICs5Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGlwUGF0aChjb25zdCBXZWJD
b3JlOjpQYXRoJiwgV2ViQ29yZTo6V2luZFJ1bGUpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6Oklu
dFJlY3QgY2xpcEJvdW5kcygpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIo
V2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9u
PHZvaWQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jik+JiYpIG92ZXJyaWRlOworICAgIHZvaWQg
Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZ1bmN0aW9uPHZvaWQo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jik+JiYpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShWSURF
TykKICAgICB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllciYsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb24pIG92ZXJyaWRlOwogICAgIGJvb2wg
Y2FuUGFpbnRGcmFtZUZvck1lZGlhKGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWVyJikgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQ0dMTGF5ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29z
aWFHQ0dMTGF5ZXIuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTExheWVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCB2b2lkIEdDR0xMYXllcjo6c3dhcEJ1ZmZlcnNJZk5l
ZWRlZCgpCiAgICAgSW50U2l6ZSB0ZXh0dXJlU2l6ZShtX2NvbnRleHQubV9jdXJyZW50V2lkdGgs
IG1fY29udGV4dC5tX2N1cnJlbnRIZWlnaHQpOwogICAgIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3Mg
ZmxhZ3MgPSBtX2NvbnRleHQuY29udGV4dEF0dHJpYnV0ZXMoKS5hbHBoYSA/IFRleHR1cmVNYXBw
ZXJHTDo6U2hvdWxkQmxlbmQgOiAwOwogI2lmIFVTRShBTkdMRSkKLSAgICBSZWZQdHI8V2ViQ29y
ZTo6SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZXh0dXJl
U2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRleHR1cmVTaXplLCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAg
ICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJh
c2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjMsNyArNjMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIE9wdGlvbmFsPFBpeGVs
QnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0
cygpCiB7Ci0gICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQiB9OworICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJl
bXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9OwogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBQaXhl
bEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1hdCwgZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSk7
CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTEVTLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTEVTLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVsCiAKIE9wdGlvbmFsPFBpeGVs
QnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0
cygpCiB7Ci0gICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQiB9OworICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJl
bXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9OwogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBQaXhl
bEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1hdCwgZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSk7
CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvQml0bWFwVGV4dHVyZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzgsNyArMzgsNyBAQCB2b2lkIEJpdG1hcFRleHR1cmU6OnVwZGF0ZUNvbnRlbnRzKEdy
YXBoCiB7CiAgICAgLy8gTWFraW5nIGFuIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkIGJ1
ZmZlciBoZXJlIGlzIE9LIGJlY2F1c2UgdGhpcyBjb2RlCiAgICAgLy8gaXNuJ3QgdXNlZCBieSBh
bnkgcGxhdGZvcm1zIHRoYXQgcmVzcGVjdCB0aGUgYWNjZWxlcmF0ZWQgYml0LgotICAgIGF1dG8g
aW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRhcmdldFJlY3Quc2l6ZSgpLCBSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Is
IFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUodGFyZ2V0UmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
IDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwog
ICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5H
dGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA2LTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwNiBNaWNoYWVsIEVtbWVsIG1pa2UuZW1tZWxAZ21haWwuY29tCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDggQ2hyaXN0aWFuIER5d2FuIDxjaHJpc3RpYW5AaW1lbmRpby5jb20+CiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogCisjaW5jbHVkZSAi
RGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVk
ZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR3RrVXRpbGl0aWVzLmgiCkBAIC04NSw2ICs4Niwx
MSBAQCBib29sIHNjcmVlbklzTW9ub2Nocm9tZShXaWRnZXQqIHdpZGdldCkKICAgICByZXR1cm4g
c2NyZWVuRGVwdGgod2lkZ2V0KSA8IDI7CiB9CiAKK0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBzY3Jl
ZW5Db2xvclNwYWNlKFdpZGdldCopCit7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpOworfQorCiBib29sIHNjcmVlbkhhc0ludmVydGVkQ29sb3JzKCkKIHsKICAgICBy
ZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1T
Y3JlZW5JT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bs
YXRmb3JtU2NyZWVuSU9TLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5JT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDE0IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04
OCw5ICs4OCw5IEBAIGJvb2wgc2NyZWVuU3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlKFdpZGcKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLUNHQ29sb3JTcGFjZVJlZiBzY3JlZW5Db2xvclNwYWNlKFdp
ZGdldCogd2lkZ2V0KQorRGVzdGluYXRpb25Db2xvclNwYWNlIHNjcmVlbkNvbG9yU3BhY2UoV2lk
Z2V0KiB3aWRnZXQpCiB7Ci0gICAgcmV0dXJuIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcih3
aWRnZXQpID8gZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpIDogc1JHQkNvbG9yU3BhY2VSZWYo
KTsKKyAgICByZXR1cm4gc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKHdpZGdldCkgPyBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgeyBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCkgfSA6IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOwogfQogCiAvLyBUaGVzZSBmdW5jdGlvbnMgc2NhbGUg
YmV0d2VlbiBzY3JlZW4gYW5kIHBhZ2UgY29vcmRpbmF0ZXMgYmVjYXVzZSBKYXZhU2NyaXB0L0RP
TSBvcGVyYXRpb25zCkBAIC0xOTMsMTYgKzE5MywxNCBAQCBTY3JlZW5Qcm9wZXJ0aWVzIGNvbGxl
Y3RTY3JlZW5Qcm9wZXJ0aWVzCiAgICAgICAgIEZsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0
ID0gc2NyZWVuLmJvdW5kczsKICAgICAgICAgc2NyZWVuQXZhaWxhYmxlUmVjdC5zZXRZKE5TTWF4
WShzY3JlZW4uYm91bmRzKSAtIChzY3JlZW5BdmFpbGFibGVSZWN0LnkoKSArIHNjcmVlbkF2YWls
YWJsZVJlY3QuaGVpZ2h0KCkpKTsgLy8gZmxpcAogICAgICAgICBGbG9hdFJlY3Qgc2NyZWVuUmVj
dCA9IHNjcmVlbi5fcmVmZXJlbmNlQm91bmRzOwotICAgICAgICAKLSAgICAgICAgUmV0YWluUHRy
PENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZSA9IHNjcmVlbkNvbG9yU3BhY2UobnVsbHB0cik7
Ci0gICAgICAgIAorICAgICAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSB7IHNj
cmVlbkNvbG9yU3BhY2UobnVsbHB0cikgfTsKICAgICAgICAgaW50IHNjcmVlbkRlcHRoID0gV2Vi
Q29yZTo6c2NyZWVuRGVwdGgobnVsbHB0cik7CiAgICAgICAgIGludCBzY3JlZW5EZXB0aFBlckNv
bXBvbmVudCA9IFdlYkNvcmU6OnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KG51bGxwdHIpOwogICAg
ICAgICBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciA9IFdlYkNvcmU6OnNjcmVlblN1
cHBvcnRzRXh0ZW5kZWRDb2xvcihudWxscHRyKTsKICAgICAgICAgYm9vbCBzY3JlZW5IYXNJbnZl
cnRlZENvbG9ycyA9IFdlYkNvcmU6OnNjcmVlbkhhc0ludmVydGVkQ29sb3JzKCk7CiAgICAgICAg
IGZsb2F0IHNjYWxlRmFjdG9yID0gV2ViQ29yZTo6c2NyZWVuUFBJRmFjdG9yKCk7CiAKLSAgICAg
ICAgc2NyZWVuUHJvcGVydGllcy5zY3JlZW5EYXRhTWFwLnNldCgrK2Rpc3BsYXlJRCwgU2NyZWVu
RGF0YSB7IHNjcmVlbkF2YWlsYWJsZVJlY3QsIHNjcmVlblJlY3QsIGNvbG9yU3BhY2UsIHNjcmVl
bkRlcHRoLCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENv
bG9yLCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycywgZmFsc2UsIHNjYWxlRmFjdG9yIH0pOworICAg
ICAgICBzY3JlZW5Qcm9wZXJ0aWVzLnNjcmVlbkRhdGFNYXAuc2V0KCsrZGlzcGxheUlELCBTY3Jl
ZW5EYXRhIHsgc2NyZWVuQXZhaWxhYmxlUmVjdCwgc2NyZWVuUmVjdCwgV1RGTW92ZShjb2xvclNw
YWNlKSwgc2NyZWVuRGVwdGgsIHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50LCBzY3JlZW5TdXBwb3J0
c0V4dGVuZGVkQ29sb3IsIHNjcmVlbkhhc0ludmVydGVkQ29sb3JzLCBmYWxzZSwgc2NhbGVGYWN0
b3IgfSk7CiAgICAgICAgIAogICAgICAgICBpZiAoc2NyZWVuID09IFtQQUw6OmdldFVJU2NyZWVu
Q2xhc3MoKSBtYWluU2NyZWVuXSkKICAgICAgICAgICAgIHNjcmVlblByb3BlcnRpZXMucHJpbWFy
eURpc3BsYXlJRCA9IGRpc3BsYXlJRDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QbGF0Zm9ybVNjcmVlbk1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5NYWMubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMTMwLDkgKzEzMCw3IEBAIFNjcmVlblByb3BlcnRpZXMgY29sbGVjdFNjcmVlblByb3Bl
cnRpZXMKICAgICAgICAgRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QgPSBzY3JlZW4udmlz
aWJsZUZyYW1lOwogICAgICAgICBzY3JlZW5BdmFpbGFibGVSZWN0LnNldFkoTlNNYXhZKHNjcmVl
bi5mcmFtZSkgLSAoc2NyZWVuQXZhaWxhYmxlUmVjdC55KCkgKyBzY3JlZW5BdmFpbGFibGVSZWN0
LmhlaWdodCgpKSk7IC8vIGZsaXAKICAgICAgICAgRmxvYXRSZWN0IHNjcmVlblJlY3QgPSBzY3Jl
ZW4uZnJhbWU7Ci0KLSAgICAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFj
ZSA9IHNjcmVlbi5jb2xvclNwYWNlLkNHQ29sb3JTcGFjZTsKLQorICAgICAgICBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgY29sb3JTcGFjZSB7IHNjcmVlbi5jb2xvclNwYWNlLkNHQ29sb3JTcGFjZSB9
OwogICAgICAgICBpbnQgc2NyZWVuRGVwdGggPSBOU0JpdHNQZXJQaXhlbEZyb21EZXB0aChzY3Jl
ZW4uZGVwdGgpOwogICAgICAgICBpbnQgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQgPSBOU0JpdHNQ
ZXJTYW1wbGVGcm9tRGVwdGgoc2NyZWVuLmRlcHRoKTsKICAgICAgICAgYm9vbCBzY3JlZW5TdXBw
b3J0c0V4dGVuZGVkQ29sb3IgPSBbc2NyZWVuIGNhblJlcHJlc2VudERpc3BsYXlHYW11dDpOU0Rp
c3BsYXlHYW11dFAzXTsKQEAgLTE2Myw3ICsxNjEsNyBAQCBTY3JlZW5Qcm9wZXJ0aWVzIGNvbGxl
Y3RTY3JlZW5Qcm9wZXJ0aWVzCiAgICAgICAgIGlmIChkaXNwbGF5TWFzaykKICAgICAgICAgICAg
IGdwdUlEID0gZ3B1SURGb3JEaXNwbGF5TWFzayhkaXNwbGF5TWFzayk7CiAKLSAgICAgICAgc2Ny
ZWVuUHJvcGVydGllcy5zY3JlZW5EYXRhTWFwLnNldChkaXNwbGF5SUQsIFNjcmVlbkRhdGEgeyBz
Y3JlZW5BdmFpbGFibGVSZWN0LCBzY3JlZW5SZWN0LCBjb2xvclNwYWNlLCBzY3JlZW5EZXB0aCwg
c2NyZWVuRGVwdGhQZXJDb21wb25lbnQsIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciwgc2Ny
ZWVuSGFzSW52ZXJ0ZWRDb2xvcnMsIHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZSwgc2Ny
ZWVuSXNNb25vY2hyb21lLCBkaXNwbGF5TWFzaywgZ3B1SUQsIGR5bmFtaWNSYW5nZU1vZGUsIHNj
YWxlRmFjdG9yIH0pOworICAgICAgICBzY3JlZW5Qcm9wZXJ0aWVzLnNjcmVlbkRhdGFNYXAuc2V0
KGRpc3BsYXlJRCwgU2NyZWVuRGF0YSB7IHNjcmVlbkF2YWlsYWJsZVJlY3QsIHNjcmVlblJlY3Qs
IFdURk1vdmUoY29sb3JTcGFjZSksIHNjcmVlbkRlcHRoLCBzY3JlZW5EZXB0aFBlckNvbXBvbmVu
dCwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yLCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycywg
c2NyZWVuU3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlLCBzY3JlZW5Jc01vbm9jaHJvbWUsIGRpc3Bs
YXlNYXNrLCBncHVJRCwgZHluYW1pY1JhbmdlTW9kZSwgc2NhbGVGYWN0b3IgfSk7CiAKICAgICAg
ICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVzLnByaW1hcnlEaXNwbGF5SUQpCiAgICAgICAgICAgICBz
Y3JlZW5Qcm9wZXJ0aWVzLnByaW1hcnlEaXNwbGF5SUQgPSBkaXNwbGF5SUQ7CkBAIC0zNDAsMTMg
KzMzOCwxMyBAQCBOU1NjcmVlbiAqc2NyZWVuKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsCiAgICAg
cmV0dXJuIGZpcnN0U2NyZWVuKCk7CiB9CiAKLUNHQ29sb3JTcGFjZVJlZiBzY3JlZW5Db2xvclNw
YWNlKFdpZGdldCogd2lkZ2V0KQorRGVzdGluYXRpb25Db2xvclNwYWNlIHNjcmVlbkNvbG9yU3Bh
Y2UoV2lkZ2V0KiB3aWRnZXQpCiB7CiAgICAgaWYgKGF1dG8gZGF0YSA9IHNjcmVlblByb3BlcnRp
ZXMod2lkZ2V0KSkKLSAgICAgICAgcmV0dXJuIGRhdGEtPmNvbG9yU3BhY2UuZ2V0KCk7CisgICAg
ICAgIHJldHVybiBkYXRhLT5jb2xvclNwYWNlOwogCiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2
aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQ29tbXVuaWNhdGVXaXRoV2luZG93U2VydmVyKSk7
Ci0gICAgcmV0dXJuIHNjcmVlbih3aWRnZXQpLmNvbG9yU3BhY2UuQ0dDb2xvclNwYWNlOworICAg
IHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgeyBzY3JlZW4od2lkZ2V0KS5jb2xvclNwYWNl
LkNHQ29sb3JTcGFjZSB9OwogfQogCiBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcihX
aWRnZXQqIHdpZGdldCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMu
bW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVt
ZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzI2LDcgKzcyNiw3IEBAIGJvb2wgVGhlbWVNYWM6
OmRyYXdDZWxsT3JGb2N1c1JpbmdXaXRoVmkKIAogICAgIGlmICh1c2VJbWFnZUJ1ZmZlcikgewog
ICAgICAgICBOU1JlY3QgaW1hZ2VCdWZmZXJEcmF3UmVjdCA9IE5TUmVjdChGbG9hdFJlY3QoYnV0
dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIHJl
Y3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSkpOwotICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIocmVjdC5zaXplKCkgKyAyICogRmxv
YXRTaXplKGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0bGlu
ZVdpZHRoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwg
Y29udGV4dCk7CisgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihyZWN0LnNpemUoKSArIDIgKiBGbG9hdFNpemUoYnV0dG9uRm9jdXNS
ZWN0T3V0bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgpLCBkZXZpY2VTY2Fs
ZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNvbnRleHQpOwogICAgICAg
ICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG5lZWRzUmVwYWludDsKICAg
ICAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVh
bWVyL01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2VHU3RyZWFtZXIuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2VHU3RyZWFtZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXI6OnUKICAgICBpZiAoIWltYWdlQnVmZmVyKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHBpeGVsQnVmZmVyID0gaW1hZ2VCdWZmZXItPmdl
dFBpeGVsQnVmZmVyKHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQ
aXhlbEZvcm1hdDo6QkdSQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9LCB7IHsgfSwg
aW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkgfSk7CisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGlt
YWdlQnVmZmVyLT5nZXRQaXhlbEJ1ZmZlcih7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJl
bXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSB9LCB7IHsgfSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkgfSk7CiAgICAgaWYgKCFw
aXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAkocmV2
aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1NCw3ICs0NTQsNyBAQCBJbWFn
ZUJ1ZmZlciogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmltCiAgICAgaWYgKG1faW1hZ2VCdWZm
ZXIpCiAgICAgICAgIHJldHVybiBtX2ltYWdlQnVmZmVyLmdldCgpOwogCi0gICAgbV9pbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2FwdHVyZVNpemUoKSwgUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1h
dDo6QkdSQTgpOworICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNhcHR1
cmVTaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghbV9pbWFnZUJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3BsYXlzdGF0aW9uL1BsYXRmb3JtU2NyZWVuUGxheVN0YXRpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3BsYXlzdGF0aW9uL1BsYXRmb3JtU2NyZWVu
UGxheVN0YXRpb24uY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9wbGF5c3RhdGlvbi9QbGF0Zm9ybVNjcmVlblBsYXlTdGF0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtU2NyZWVuLmgiCiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNp
bmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogCkBAIC03
MSw0ICs3Miw5IEBAIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKFdpZGdldCoKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKK0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBzY3JlZW5Db2xvclNw
YWNlKFdpZGdldCopCit7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vUGxhdGZvcm1TY3JlZW5XaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVlbldpbi5jcHAJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVlbldpbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNl
LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRl
ICJGcmFtZVZpZXcuaCIKQEAgLTEwNCwxMiArMTA1LDEwIEBAIEZsb2F0UmVjdCBzY3JlZW5BdmFp
bGFibGVSZWN0KFdpZGdldCogd2kKICAgICByZXR1cm4gbW9uaXRvckluZm8ucmNXb3JrOwogfQog
Ci0jaWYgVVNFKENHKQotQ0dDb2xvclNwYWNlUmVmIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KikK
K0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCopCiB7Ci0gICAg
cmV0dXJuIHNSR0JDb2xvclNwYWNlUmVmKCk7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpOwogfQotI2VuZGlmCiAKIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENv
bG9yKFdpZGdldCopCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93cGUvUGxhdGZv
cm1TY3JlZW5XUEUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dw
ZS9QbGF0Zm9ybVNjcmVlbldQRS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dwZS9QbGF0Zm9ybVNjcmVlbldQRS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNj
cmVlbi5oIgogCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAi
RmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJXaWRn
ZXQuaCIKQEAgLTgxLDYgKzgyLDExIEBAIEZsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0KFdp
ZGdldCogd2kKICAgICByZXR1cm4gc2NyZWVuUmVjdCh3aWRnZXQpOwogfQogCitEZXN0aW5hdGlv
bkNvbG9yU3BhY2Ugc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqKQoreworICAgIHJldHVybiBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKK30KKwogYm9vbCBzY3JlZW5TdXBwb3J0c0V4dGVu
ZGVkQ29sb3IoV2lkZ2V0KikKIHsKICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4LDYg
KzE4LDcgQEAKICAqLwogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9y
U3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFBvaW50M0QuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5
cGVzR0wuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC0zMiw4ICszMyw3IEBACiAjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgPFdlYkNv
cmUvQ29sb3JTcGFjZUNHLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KKyNpbmNs
dWRlICJJT1N1cmZhY2UuaCIKICNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgogI2VuZGlm
CiAKQEAgLTQ0Niw3ICs0NDYsNyBAQCBPcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6TGF5ZXJE
YXRhPiBECiAgICAgV1RGOjpNYWNoU2VuZFJpZ2h0IHN1cmZhY2VTZW5kUmlnaHQ7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShzdXJmYWNlU2VuZFJpZ2h0KSkKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKLSAgICBsYXllckRhdGEuc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3Jl
YXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKHN1cmZhY2VTZW5kUmlnaHQpLCBXZWJDb3JlOjpzUkdC
Q29sb3JTcGFjZVJlZigpKTsKKyAgICBsYXllckRhdGEuc3VyZmFjZSA9IFdlYkNvcmU6OklPU3Vy
ZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKHN1cmZhY2VTZW5kUmlnaHQpLCBXZWJD
b3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAjZW5kaWYKICAgICByZXR1cm4g
bGF5ZXJEYXRhOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsOSArMTExLDkgQEAgUmVmUHRyPEZpbHRlckVmZmVj
dD4gQ1NTRmlsdGVyOjpidWlsZFJlZgogICAgICAgICBlZmZlY3RFbGVtZW50LnNldFN0YW5kYXJk
QXR0cmlidXRlcyhlZmZlY3QuZ2V0KCkpOwogICAgICAgICBpZiAoZWZmZWN0RWxlbWVudC5yZW5k
ZXJlcigpKSB7CiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdC
KQotICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKGVmZmVjdEVsZW1l
bnQucmVuZGVyZXIoKS0+c3R5bGUoKS5zdmdTdHlsZSgpLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRl
cnMoKSA9PSBDb2xvckludGVycG9sYXRpb246OkxpbmVhclJHQiA/IERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6TGluZWFyU1JHQiA6IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CisgICAgICAg
ICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoZWZmZWN0RWxlbWVudC5yZW5kZXJl
cigpLT5zdHlsZSgpLnN2Z1N0eWxlKCkuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpID09IENv
bG9ySW50ZXJwb2xhdGlvbjo6TGluZWFyUkdCID8gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5l
YXJTUkdCKCkgOiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAjZWxzZQotICAgICAg
ICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQik7CisgICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAg
YnVpbGRlci0+YWRkKGVmZmVjdEVsZW1lbnQucmVzdWx0KCksIGVmZmVjdCk7CkBAIC0yOTYsNyAr
Mjk2LDcgQEAgYm9vbCBDU1NGaWx0ZXI6OmJ1aWxkKFJlbmRlckVsZW1lbnQmIHJlbgogICAgICAg
ICAgICAgLy8gVW5saWtlIFNWRyBGaWx0ZXJzIGFuZCBDU1NGaWx0ZXJJbWFnZXMsIGZpbHRlciBm
dW5jdGlvbnMgb24gdGhlIGZpbHRlcgogICAgICAgICAgICAgLy8gcHJvcGVydHkgYXBwbGllZCBo
ZXJlIHNob3VsZCBub3QgY2xpcCB0byB0aGVpciBwcmltaXRpdmUgc3VicmVnaW9ucy4KICAgICAg
ICAgICAgIGVmZmVjdC0+c2V0Q2xpcHNUb0JvdW5kcyhjb25zdW1lciA9PSBGaWx0ZXJDb25zdW1l
cjo6RmlsdGVyRnVuY3Rpb24pOwotICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xv
clNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CisgICAgICAgICAgICBlZmZlY3Qt
PnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoZmlsdGVyT3BlcmF0aW9uLnR5cGUoKSAhPSBG
aWx0ZXJPcGVyYXRpb246OlJFRkVSRU5DRSkgewogICAgICAgICAgICAgICAgIGVmZmVjdC0+aW5w
dXRFZmZlY3RzKCkgPSB7IFdURk1vdmUocHJldmlvdXNFZmZlY3QpIH07CkBAIC0zNDQsMTEgKzM0
NCwxMSBAQCB2b2lkIENTU0ZpbHRlcjo6YWxsb2NhdGVCYWNraW5nU3RvcmVJZk5lCiAgICAgSW50
U2l6ZSBsb2dpY2FsU2l6ZSB7IG1fc291cmNlRHJhd2luZ1JlZ2lvbi5zaXplKCkgfTsKICAgICBp
ZiAoIXNvdXJjZUltYWdlKCkgfHwgc291cmNlSW1hZ2UoKS0+bG9naWNhbFNpemUoKSAhPSBsb2dp
Y2FsU2l6ZSkgewogI2lmIFVTRShESVJFQ1QyRCkKLSAgICAgICAgc2V0U291cmNlSW1hZ2UoSW1h
Z2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVuZGVyaW5nTW9kZSgpLCAmdGFyZ2V0Q29u
dGV4dCwgZmlsdGVyU2NhbGUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZv
cm1hdDo6QkdSQTgpKTsKKyAgICAgICAgc2V0U291cmNlSW1hZ2UoSW1hZ2VCdWZmZXI6OmNyZWF0
ZShsb2dpY2FsU2l6ZSwgcmVuZGVyaW5nTW9kZSgpLCAmdGFyZ2V0Q29udGV4dCwgZmlsdGVyU2Nh
bGUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCkp
OwogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHRhcmdldENvbnRleHQpOwogICAgICAgICBS
ZW5kZXJpbmdNb2RlIG1vZGUgPSBtX2ZpbHRlclJlbmRlcmVyID8gUmVuZGVyaW5nTW9kZTo6QWNj
ZWxlcmF0ZWQgOiByZW5kZXJpbmdNb2RlKCk7Ci0gICAgICAgIHNldFNvdXJjZUltYWdlKEltYWdl
QnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIG1vZGUsIGZpbHRlclNjYWxlKCksIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CisgICAgICAgIHNldFNv
dXJjZUltYWdlKEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIG1vZGUsIGZpbHRlclNj
YWxlKCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgp
KTsKICNlbmRpZgogICAgIH0KICAgICBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQgPSB0cnVlOwpA
QCAtMzgyLDEyICszODIsMTIgQEAgdm9pZCBDU1NGaWx0ZXI6OmFwcGx5KCkKICAgICBpZiAobV9m
aWx0ZXJSZW5kZXJlcikgewogICAgICAgICBtX2ZpbHRlclJlbmRlcmVyLT5hcHBseUVmZmVjdHMo
ZWZmZWN0KTsKICAgICAgICAgaWYgKG1fZmlsdGVyUmVuZGVyZXItPmhhc1Jlc3VsdCgpKSB7Ci0g
ICAgICAgICAgICBlZmZlY3QudHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IpOworICAgICAgICAgICAgZWZmZWN0LnRyYW5zZm9ybVJlc3VsdENvbG9y
U3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQogICAgIGVmZmVjdC5hcHBseSgpOwotICAgIGVmZmVjdC50cmFu
c2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CisgICAg
ZWZmZWN0LnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCkpOwogfQogCiBMYXlvdXRSZWN0IENTU0ZpbHRlcjo6Y29tcHV0ZVNvdXJjZUltYWdlUmVj
dEZvckRpcnR5UmVjdChjb25zdCBMYXlvdXRSZWN0JiBmaWx0ZXJCb3hSZWN0LCBjb25zdCBMYXlv
dXRSZWN0JiBkaXJ0eVJlY3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTg3Niw3ICs4NzYsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxM
YXllCiAgICAgICAgIG1hc2tSZWN0LmludGVyc2VjdChzbmFwcGVkSW50UmVjdChwYWludEluZm8u
cmVjdCkpOwogCiAgICAgICAgIC8vIE5vdyBjcmVhdGUgdGhlIG1hc2suCi0gICAgICAgIG1hc2tJ
bWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNpemUo
KSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBjb250ZXh0KTsKKyAgICAgICAgbWFza0lt
YWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIobWFza1JlY3Quc2l6ZSgp
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY29udGV4dCk7CiAgICAgICAgIGlmICgh
bWFza0ltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBwYWludE1hc2tGb3JUZXh0
RmlsbEJveChtYXNrSW1hZ2UuZ2V0KCksIG1hc2tSZWN0LCBib3gsIHNjcm9sbGVkUGFpbnRSZWN0
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI2Nyw3ICszMjY3LDcgQEAg
c3RhdGljIFJlZlB0cjxQYXR0ZXJuPiBwYXR0ZXJuRm9yRGVzY3JpcAogewogICAgIGNvbnN0IEZs
b2F0U2l6ZSB0aWxlU2l6ZSB7IDMyLCAxOCB9OwogCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHRpbGVTaXplLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IsIGRlc3RDb250ZXh0KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIodGlsZVNpemUsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpLCBkZXN0Q29udGV4dCk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTk4MywxMSArMTk4
MywxMSBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjpwYWludFN5c3RlbVByZXZpZXdCCiAgICAgSU9T
dXJmYWNlUmVmIHN1cmZhY2U7CiAgICAgaWYgKHVzZVNtYWxsQmFkZ2UpIHsKICAgICAgICAgaWYg
KCFtX3NtYWxsQmFkZ2VTdXJmYWNlKQotICAgICAgICAgICAgbV9zbWFsbEJhZGdlU3VyZmFjZSA9
IElPU3VyZmFjZTo6Y3JlYXRlKHsgc21hbGxCYWRnZURpbWVuc2lvbiwgc21hbGxCYWRnZURpbWVu
c2lvbiB9LCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICAgICAgICAgIG1fc21hbGxCYWRnZVN1
cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZSh7IHNtYWxsQmFkZ2VEaW1lbnNpb24sIHNtYWxsQmFk
Z2VEaW1lbnNpb24gfSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgICAgICBz
dXJmYWNlID0gbV9zbWFsbEJhZGdlU3VyZmFjZS0+c3VyZmFjZSgpOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIGlmICghbV9sYXJnZUJhZGdlU3VyZmFjZSkKLSAgICAgICAgICAgIG1fbGFyZ2VCYWRn
ZVN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZSh7IGxhcmdlQmFkZ2VEaW1lbnNpb24sIGxhcmdl
QmFkZ2VEaW1lbnNpb24gfSwgc1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgICAgICAgICBtX2xh
cmdlQmFkZ2VTdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoeyBsYXJnZUJhZGdlRGltZW5zaW9u
LCBsYXJnZUJhZGdlRGltZW5zaW9uIH0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsK
ICAgICAgICAgc3VyZmFjZSA9IG1fbGFyZ2VCYWRnZVN1cmZhY2UtPnN1cmZhY2UoKTsKICAgICB9
CiAgICAgW21fY2lDb250ZXh0LmdldCgpIHJlbmRlcjp0cmFuc2xhdGVkSW1hZ2UgdG9JT1N1cmZh
Y2U6c3VyZmFjZSBib3VuZHM6YmFkZ2VSZWN0IGNvbG9yU3BhY2U6c1JHQkNvbG9yU3BhY2VSZWYo
KV07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCShy
ZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMDksNyArMTMwOSw3IEBAIGJvb2wgUmVuZGVyVGhl
bWVNYWM6OnBhaW50UHJvZ3Jlc3NCYXIoY28KICAgICBjb25zdCBhdXRvJiByZW5kZXJQcm9ncmVz
cyA9IGRvd25jYXN0PFJlbmRlclByb2dyZXNzPihyZW5kZXJPYmplY3QpOwogICAgIGZsb2F0IGRl
dmljZVNjYWxlRmFjdG9yID0gcmVuZGVyT2JqZWN0LmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0
b3IoKTsKICAgICBib29sIGlzSW5kZXRlcm1pbmF0ZSA9IHJlbmRlclByb2dyZXNzLnBvc2l0aW9u
KCkgPCAwOwotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0
aWJsZUJ1ZmZlcihpbmZsYXRlZFJlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCLCBwYWludEluZm8uY29udGV4dCgpKTsKKyAgICBhdXRvIGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoaW5mbGF0ZWRS
ZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpLCBwYWludEluZm8uY29udGV4dCgpKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvU2hhcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODEsNyArMTgxLDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlUmFzdAogICAgIEludFJlY3QgbWFyZ2luUmVj
dCA9IHNuYXBwZWRJbnRSZWN0KG1hcmdpblIpOwogICAgIGF1dG8gaW50ZXJ2YWxzID0gbWFrZVVu
aXF1ZTxSYXN0ZXJTaGFwZUludGVydmFscz4obWFyZ2luUmVjdC5oZWlnaHQoKSwgLW1hcmdpblJl
Y3QueSgpKTsKICAgICAvLyBGSVhNRSAoMTQ5NDIwKTogVGhpcyBidWZmZXIgc2hvdWxkIG5vdCBi
ZSB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZC4KLSAgICBhdXRvIGltYWdlQnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFj
Y2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VS
ZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAKICAgICBhdXRvIGNyZWF0
ZVNoYXBlID0gWyZdKCkgewogICAgICAgICBhdXRvIHJhc3RlclNoYXBlID0gbWFrZVVuaXF1ZTxS
YXN0ZXJTaGFwZT4oV1RGTW92ZShpbnRlcnZhbHMpLCBtYXJnaW5SZWN0LnNpemUoKSk7CkBAIC0x
OTcsNyArMTk3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlUmFzdAog
ICAgIGlmIChpbWFnZSkKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2Us
IEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VSZWN0LnNpemUoKSkpOwogCi0gICAgUGl4ZWxCdWZm
ZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVk
LCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAg
IFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJl
bXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSB9OwogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+Z2V0UGl4ZWxCdWZm
ZXIoZm9ybWF0LCB7IEludFBvaW50KCksIGltYWdlUmVjdC5zaXplKCkgfSk7CiAgICAgCiAgICAg
Ly8gV2UgY291bGQgZ2V0IHRvIGEgdmFsdWUgd2hlcmUgUGl4ZWxCdWZmZXIgY291bGQgYmUgbnVs
bG9wdC4gQSBjYXNlIHdoZXJlIEltYWdlUmVjdC5zaXplKCkgaXMgaHVnZSwgUGl4ZWxCdWZmZXI6
OnRyeUNyZWF0ZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsNyArMTQ2LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJj
ZUNsaXBwZXI6OmFwcGx5Q2xpcAogICAgIEFmZmluZVRyYW5zZm9ybSBhYnNvbHV0ZVRyYW5zZm9y
bSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1v
c3RDb29yZGluYXRlU3lzdGVtKHJlbmRlcmVyKTsKICAgICBpZiAoIWNsaXBwZXJEYXRhLmlzVmFs
aWRGb3JHZW9tZXRyeShvYmplY3RCb3VuZGluZ0JveCwgYWJzb2x1dGVUcmFuc2Zvcm0pKSB7CiAg
ICAgICAgIC8vIEZJWE1FICgxNDk0NjkpOiBUaGlzIGltYWdlIGJ1ZmZlciBzaG91bGQgbm90IGJl
IHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkLiBNYWtpbmcgaXQgbWF0Y2ggdGhlIGNvbnRl
eHQgYnJlYWtzIG5lc3RlZCBjbGlwcGluZywgdGhvdWdoLgotICAgICAgICBhdXRvIG1hc2tJbWFn
ZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKG9iamVjdEJvdW5kaW5n
Qm94LCBhYnNvbHV0ZVRyYW5zZm9ybSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAmY29udGV4dCk7CisgICAgICAgIGF1dG8gbWFza0lt
YWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIob2JqZWN0Qm91bmRp
bmdCb3gsIGFic29sdXRlVHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgJmNvbnRleHQpOwogICAgICAgICBpZiAoIW1h
c2tJbWFnZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5j
cHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsOSArMTA0LDkg
QEAgc3RkOjp1bmlxdWVfcHRyPFNWR0ZpbHRlckJ1aWxkZXI+IFJlbmRlcgogICAgICAgICBlZmZl
Y3QtPnNldEVmZmVjdEJvdW5kYXJpZXMoU1ZHTGVuZ3RoQ29udGV4dDo6cmVzb2x2ZVJlY3Rhbmds
ZTxTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+KCZlbGVtZW50LCBmaWx0ZXJF
bGVtZW50KCkucHJpbWl0aXZlVW5pdHMoKSwgdGFyZ2V0Qm91bmRpbmdCb3gpKTsKICAgICAgICAg
aWYgKGVsZW1lbnQucmVuZGVyZXIoKSkgewogI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9T
UEFDRV9MSU5FQVJfU1JHQikKLSAgICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JT
cGFjZShlbGVtZW50LnJlbmRlcmVyKCktPnN0eWxlKCkuc3ZnU3R5bGUoKS5jb2xvckludGVycG9s
YXRpb25GaWx0ZXJzKCkgPT0gQ29sb3JJbnRlcnBvbGF0aW9uOjpMaW5lYXJSR0IgPyBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IgOiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Ip
OworICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKGVsZW1lbnQucmVu
ZGVyZXIoKS0+c3R5bGUoKS5zdmdTdHlsZSgpLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSA9
PSBDb2xvckludGVycG9sYXRpb246OkxpbmVhclJHQiA/IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
TGluZWFyU1JHQigpIDogRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogI2Vsc2UKLSAg
ICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IpOworICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNl
KERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICNlbmRpZgogICAgICAgICB9CiAgICAg
ICAgIGJ1aWxkZXItPmFkZChlbGVtZW50LnJlc3VsdCgpLCBXVEZNb3ZlKGVmZmVjdCkpOwpAQCAt
MTk4LDkgKzE5OCw5IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3UK
IAogICAgIGF1dG8gcmVuZGVyaW5nTW9kZSA9IHJlbmRlcmVyLnNldHRpbmdzKCkuYWNjZWxlcmF0
ZWRGaWx0ZXJzRW5hYmxlZCgpID8gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQgOiBSZW5kZXJp
bmdNb2RlOjpVbmFjY2VsZXJhdGVkOwogI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFD
RV9MSU5FQVJfU1JHQikKLSAgICBhdXRvIGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OkxpbmVhclNSR0I7CisgICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNw
YWNlOjpMaW5lYXJTUkdCKCk7CiAjZWxzZQotICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQjsKKyAgICBhdXRvIGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKTsKICNlbmRpZgogICAgIGF1dG8gc291cmNlR3JhcGhpYyA9IFNWR1Jl
bmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGZpbHRlckRhdGEtPmRyYXdpbmdSZWdp
b24sIGVmZmVjdGl2ZVRyYW5zZm9ybSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZSwgY29udGV4
dCk7CiAgICAgaWYgKCFzb3VyY2VHcmFwaGljKSB7CkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBS
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UgogICAgICAgICAgICAgZmlsdGVyRGF0
YS5zdGF0ZSA9IEZpbHRlckRhdGE6OkFwcGx5aW5nOwogICAgICAgICAgICAgbGFzdEVmZmVjdC0+
YXBwbHkoKTsKICAgICAgICAgICAgIGxhc3RFZmZlY3QtPmNvcnJlY3RGaWx0ZXJSZXN1bHRJZk5l
ZWRlZCgpOwotICAgICAgICAgICAgbGFzdEVmZmVjdC0+dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFj
ZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOworICAgICAgICAgICAgbGFzdEVmZmVjdC0+
dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7
CiAgICAgICAgIH0KICAgICAgICAgZmlsdGVyRGF0YS5zdGF0ZSA9IEZpbHRlckRhdGE6OkJ1aWx0
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
R3JhZGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgc3RhdGljIGlubGluZSBib29sIGNyZWF0ZU1h
c2tBbmRTd2FwQ29udAogICAgIEFmZmluZVRyYW5zZm9ybSBhYnNvbHV0ZVRyYW5zZm9ybSA9IFNW
R1JlbmRlcmluZ0NvbnRleHQ6OmNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RDb29y
ZGluYXRlU3lzdGVtKCp0ZXh0Um9vdEJsb2NrKTsKICAgICBGbG9hdFJlY3QgcmVwYWludFJlY3Qg
PSB0ZXh0Um9vdEJsb2NrLT5yZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpOwogCi0gICAg
YXV0byBtYXNrSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihy
ZXBhaW50UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QiwgY29udGV4dC0+cmVuZGVyaW5nTW9kZSgpKTsKKyAgICBhdXRvIG1hc2tJbWFnZSA9IFNWR1Jl
bmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBhYnNvbHV0ZVRy
YW5zZm9ybSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNvbnRleHQtPnJlbmRlcmlu
Z01vZGUoKSk7CiAgICAgaWYgKCFtYXNrSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZU1hc2tlci5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03MSw5ICs3MSw5IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVz
b3UKICAgICAgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUmIHN2Z1N0eWxlID0gc3R5bGUoKS5zdmdT
dHlsZSgpOwogCiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdC
KQotICAgICAgICBhdXRvIGNvbG9yU3BhY2UgPSBzdmdTdHlsZS5jb2xvckludGVycG9sYXRpb24o
KSA9PSBDb2xvckludGVycG9sYXRpb246OkxpbmVhclJHQiA/IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6TGluZWFyU1JHQiA6IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjsKKyAgICAgICAgYXV0
byBjb2xvclNwYWNlID0gc3ZnU3R5bGUuY29sb3JJbnRlcnBvbGF0aW9uKCkgPT0gQ29sb3JJbnRl
cnBvbGF0aW9uOjpMaW5lYXJSR0IgPyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0Io
KSA6IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOwogI2Vsc2UKLSAgICAgICAgYXV0byBj
b2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOworICAgICAgICBhdXRvIGNv
bG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKICNlbmRpZgogCiAgICAg
ICAgIC8vIEZJWE1FICgxNDk0NzApOiBUaGlzIGltYWdlIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVu
Y29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkLiBNYWtpbmcgaXQgbWF0Y2ggdGhlIGNvbnRleHQg
YnJlYWtzIGFscGhhIG1hc2tpbmcsIHRob3VnaC4KQEAgLTkyLDcgKzkyLDcgQEAgYm9vbCBSZW5k
ZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdQogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UoTWFz
a2VyRGF0YSogbWFza2VyRGF0YSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFJl
bmRlck9iamVjdCogb2JqZWN0KQorYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6ZHJhd0Nv
bnRlbnRJbnRvTWFza0ltYWdlKE1hc2tlckRhdGEqIG1hc2tlckRhdGEsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7CiAgICAg
R3JhcGhpY3NDb250ZXh0JiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza2VyRGF0YS0+bWFza0ltYWdl
LT5jb250ZXh0KCk7CiAKQEAgLTExOSw3ICsxMTksNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNl
TWFza2VyOjpkcmF3Q29udGVuCiAgICAgfQogCiAjaWYgIVVTRShDRykKLSAgICBtYXNrZXJEYXRh
LT5tYXNrSW1hZ2UtPnRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCLCBjb2xvclNwYWNlKTsKKyAgICBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UtPnRyYW5zZm9ybUNv
bG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNvbG9yU3BhY2UpOwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0oY29sb3JTcGFjZSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2Vy
LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBw
cml2YXRlOgogCiAgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZU1hc2tlciI7IH0KIAotICAgIGJvb2wgZHJhd0NvbnRl
bnRJbnRvTWFza0ltYWdlKE1hc2tlckRhdGEqLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFJlbmRl
ck9iamVjdCopOworICAgIGJvb2wgZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdlKE1hc2tlckRhdGEq
LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBSZW5kZXJPYmplY3QqKTsKICAgICB2b2lk
IGNhbGN1bGF0ZU1hc2tDb250ZW50UmVwYWludFJlY3QoKTsKIAogICAgIEZsb2F0UmVjdCBtX21h
c2tDb250ZW50Qm91bmRhcmllczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQ
YXR0ZXJuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUzLDcgKzI1Myw3IEBAIGJvb2wgUmVuZGVy
U1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFRpbGUKIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVuZGVy
U1ZHUmVzb3VyY2VQYXR0ZXJuOjpjcmVhdGVUaWxlSW1hZ2UoY29uc3QgUGF0dGVybkF0dHJpYnV0
ZXMmIGF0dHJpYnV0ZXMsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZUJvdW5kYXJpZXMsIGNvbnN0IEZs
b2F0UmVjdCYgYWJzb2x1dGVUaWxlQm91bmRhcmllcywgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0
aWxlSW1hZ2VUcmFuc2Zvcm0sIEZsb2F0UmVjdCYgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJp
ZXMsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSkgY29uc3QKIHsKICAgICBjbGFtcGVkQWJz
b2x1dGVUaWxlQm91bmRhcmllcyA9IEltYWdlQnVmZmVyOjpjbGFtcGVkUmVjdChhYnNvbHV0ZVRp
bGVCb3VuZGFyaWVzKTsKLSAgICBhdXRvIHRpbGVJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6
OmNyZWF0ZUltYWdlQnVmZmVyKGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIGNsYW1wZWRBYnNvbHV0
ZVRpbGVCb3VuZGFyaWVzLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIHJlbmRlcmluZ01v
ZGUpOworICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1h
Z2VCdWZmZXIoYWJzb2x1dGVUaWxlQm91bmRhcmllcywgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5k
YXJpZXMsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCByZW5kZXJpbmdNb2RlKTsKICAg
ICBpZiAoIXRpbGVJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNw
cAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdS
ZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM2LDcgKzIzNiw3IEBAIEFm
ZmluZVRyYW5zZm9ybSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjYWwKICAgICByZXR1cm4gYWJzb2x1
dGVUcmFuc2Zvcm07CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6
OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCkKIHsKICAgICBJbnRSZWN0IHBhaW50UmVjdCA9IGNhbGN1bGF0
ZUltYWdlQnVmZmVyUmVjdCh0YXJnZXRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSk7CiAgICAgLy8g
RG9uJ3QgY3JlYXRlIGVtcHR5IEltYWdlQnVmZmVycy4KQEAgLTI2NCw3ICsyNjQsNyBAQCBSZWZQ
dHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6CiAgICAgcmV0dXJuIGltYWdlQnVm
ZmVyOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0
ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBjbGFtcGVkUmVjdCwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbmRlcmlu
Z01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQorUmVm
UHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZFJlY3Qs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgSW50
U2l6ZSBjbGFtcGVkU2l6ZSA9IHJvdW5kZWRJbnRTaXplKGNsYW1wZWRSZWN0LnNpemUoKSk7CiAg
ICAgRmxvYXRTaXplIHVuY2xhbXBlZFNpemUgPSByb3VuZGVkSW50U2l6ZSh0YXJnZXRSZWN0LnNp
emUoKSk7CkBAIC0zNTAsNyArMzUwLDcgQEAgYm9vbCBTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZm
ZXJGb3JlZ3JvdQogCiAgICAgLy8gQ3JlYXRlIGEgbmV3IGJ1ZmZlciBhbmQgcGFpbnQgdGhlIGZv
cmVncm91bmQgaW50byBpdC4KICAgICBpZiAoIWltYWdlQnVmZmVyKSB7Ci0gICAgICAgIGltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRT
aXplKGJvdW5kaW5nQm94LnNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgbV9w
YWludEluZm8tPmNvbnRleHQoKSk7CisgICAgICAgIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGJvdW5kaW5nQm94LnNpemUo
KSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBtX3BhaW50SW5mby0+Y29udGV4dCgp
KTsKICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0Nv
bnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jl
bmRlcmluZ0NvbnRleHQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDgg
KzYwLDggQEAgcHVibGljOgogICAgIHZvaWQgcHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChSZW5k
ZXJFbGVtZW50JiwgUGFpbnRJbmZvJiwgTmVlZHNHcmFwaGljc0NvbnRleHRTYXZlID0gRG9udFNh
dmVHcmFwaGljc0NvbnRleHQpOwogICAgIGJvb2wgaXNSZW5kZXJpbmdQcmVwYXJlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVuZGVyaW5nRmxhZ3MgJiBSZW5kZXJpbmdQcmVwYXJlZDsgfQogCi0gICAg
c3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3Jt
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCogPSBudWxscHRyKTsKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJ
bWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
Y2xhbXBlZFJlY3QsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSwgY29uc3Qg
R3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiwgUmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIp
OworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwgY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3ND
b250ZXh0KiA9IG51bGxwdHIpOwogCiAgICAgc3RhdGljIHZvaWQgcmVuZGVyU3VidHJlZVRvQ29u
dGV4dChHcmFwaGljc0NvbnRleHQmLCBSZW5kZXJFbGVtZW50JiwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJik7CiAgICAgc3RhdGljIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRSZWN0LCBSZWZQdHI8SW1hZ2VCdWZmZXI+JiwgYm9vbCBzYWZlVG9DbGVhcik7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHJldmlzaW9u
IDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIxNyw3ICsyMTcsNyBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IFNWR0lt
YWdlOjpuYXRpdmVJbWFnCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAo
IWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjQ3LDcgKzI0Nyw3
IEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEcKICAgICBGbG9hdFJl
Y3QgaW1hZ2VCdWZmZXJTaXplID0gem9vbWVkQ29udGFpbmVyUmVjdDsKICAgICBpbWFnZUJ1ZmZl
clNpemUuc2NhbGUoaW1hZ2VCdWZmZXJTY2FsZS53aWR0aCgpLCBpbWFnZUJ1ZmZlclNjYWxlLmhl
aWdodCgpKTsKIAotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGltYWdlQnVmZmVyU2l6ZS5zaXplKCkpLCAxLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGNvbnRleHQpOworICAgIGF1dG8gYnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGltYWdlQnVm
ZmVyU2l6ZS5zaXplKCkpLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY29udGV4
dCk7CiAgICAgaWYgKCFidWZmZXIpIC8vIEZhaWxlZCB0byBhbGxvY2F0ZSBidWZmZXIuCiAgICAg
ICAgIHJldHVybjsKICAgICBkcmF3Rm9yQ29udGFpbmVyKGJ1ZmZlci0+Y29udGV4dCgpLCBjb250
YWluZXJTaXplLCBjb250YWluZXJab29tLCBpbml0aWFsRnJhZ21lbnRVUkwsIGltYWdlQnVmZmVy
U2l6ZSwgem9vbWVkQ29udGFpbmVyUmVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTkzLDggKzkzLDggQEAgdm9pZCBGRUltYWdlOjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUoKQogICAgIGlmICghbV9pbWFnZSAmJiAhcmVuZGVyZXIpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIC8vIEZFSW1hZ2UgcmVzdWx0cyBhcmUgYWx3YXlzIGluIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQgotICAgIHNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKTsKKyAgICAvLyBGRUltYWdlIHJlc3VsdHMgYXJlIGFsd2F5cyBpbiBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKQorICAgIHNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCkpOwogCiAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0g
Y3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKICAgICBpZiAoIXJlc3VsdEltYWdlKQpJbmRleDog
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cJKHJldmlzaW9uIDI3NzkyMCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsODkgQEAKKzIwMjEtMDUtMjIgIFNhbSBXZWluaWcgIDx3ZWlu
aWdAYXBwbGUuY29tPgorCisgICAgICAgIENvbnZlcnQgRGVzdGluYXRpb25Db2xvclNwYWNlIGZy
b20gYW4gZW51bSB0byBjbGFzcyB3cmFwcGluZyBhIHBsYXRmb3JtIGNvbG9yIHNwYWNlIChDR0Nv
bG9yU3BhY2VSZWYgZm9yIENHIHBvcnRzLCBldGMuKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW1dJUF0KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VC
dWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZURl
Y29kZXJBVkZQcm94eTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAqIEdQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaDoKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5Lm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2FwVG9WYWxpZEZy
b250QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmFw
cGx5QmFja2luZ1N0b3JlVG9MYXllcik6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZUJpdG1h
cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbjo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpDb25maWd1
cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuaDoKKyAg
ICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVk
L1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENH
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y29sb3JTcGFjZSk6CisgICAgICAgICogU2hhcmVkL21h
Yy9Db2xvclNwYWNlRGF0YS5oOiBSZW1vdmVkLgorICAgICAgICAqIFNoYXJlZC9tYWMvQ29sb3JT
cGFjZURhdGEubW06IFJlbW92ZWQuCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW06CisgICAgICAgICgtW1dLV2Vi
VmlldyBfdGFrZVZpZXdTbmFwc2hvdF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NuYXBzaG90
UmVjdDppbnRvSW1hZ2VPZldpZHRoOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNvbG9yU3BhY2Up
OgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tOgorICAgICAgICAoV2ViS2l0
OjpyZWN1cnNpdmVseU1hcElPU3VyZmFjZUJhY2tpbmdTdG9yZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGxNYWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y29sb3JTcGFjZSk6CisgICAgICAgICog
VUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmNvbG9yU3BhY2UpOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29uZmlndXJhdGlvbik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnByZXBhcmVG
b3JEaXNwbGF5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6
OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZh
Y2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBw
ZWRJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUlt
YWdlRGVjb2RlckFWRjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL2NvY29hL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5hdGl2ZUltYWdlRm9y
Q3VycmVudFRpbWUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OlBERlBsdWdp
bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVCaXRtYXBV
dGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVTaGFyZWFibGVCaXRtYXApOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVJbWFnZUJ1ZmZlciBjb25z
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50
TWFjLm1tOgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0RHJhZ0ltYWdlVG9CaXRtYXApOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oOgorICAgICAgICAoV2ViS2l0
OjpEcmF3aW5nQXJlYTo6c2V0Q29sb3JTcGFjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c25hcHNob3RPcHRpb25zVG9CaXRtYXBD
b25maWd1cmF0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6VGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
KToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldENv
bG9yU3BhY2UpOgorCiAyMDIxLTA1LTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgUmVwbGFjZSBMb2NrSG9sZGVyIHdpdGggTG9ja2VyIGluIGxvY2FsIHZhcmlh
YmxlcwpJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsNyArMjAz
LDYgQEAgU2hhcmVkL2lvcy9XZWJUb3VjaEV2ZW50SU9TLmNwcAogCiBTaGFyZWQvbWFjL0F1eGls
aWFyeVByb2Nlc3NNYWMubW0KIFNoYXJlZC9tYWMvQ29kZVNpZ25pbmcubW0KLVNoYXJlZC9tYWMv
Q29sb3JTcGFjZURhdGEubW0KIFNoYXJlZC9tYWMvSGFuZ0RldGVjdGlvbkRpc2FibGVyTWFjLm1t
CiBTaGFyZWQvbWFjL05hdGl2ZVdlYkdlc3R1cmVFdmVudE1hYy5tbQogU2hhcmVkL21hYy9OYXRp
dmVXZWJLZXlib2FyZEV2ZW50TWFjLm1tCkluZGV4OiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAkocmV2aXNpb24gMjc3OTE5
KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgUmVtb3RlSW1hZ2VCdWZm
ZXIgOiBwdWJsaWMgV2ViQ29yZQogICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpw
dXRQaXhlbEJ1ZmZlcjsKIAogcHVibGljOgotICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6
RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBp
eGVsRm9ybWF0LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKQorICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNp
emUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRp
b25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1h
dCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCwgV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cikKICAgICB7CiAgICAgICAgIHJldHVybiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6dGVtcGxh
dGUgY3JlYXRlPFJlbW90ZUltYWdlQnVmZmVyPihzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9y
U3BhY2UsIHBpeGVsRm9ybWF0LCBudWxscHRyLCByZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDcg
KzE1Miw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkRmx1c2goRGkKICAgICBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkRpZEZsdXNoKGZsdXNo
SWRlbnRpZmllciwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgUmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6
ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxG
b3JtYXQsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQVNTRVJUKHJl
bmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQgfHwgcmVuZGVyaW5nTW9k
ZSA9PSBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTQgKzQ0
LDE4IEBACiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCiBuYW1lc3BhY2UgRGlzcGxheUxpc3Qg
ewogY2xhc3MgRGlzcGxheUxpc3Q7CiBjbGFzcyBJdGVtOwogfQorCitjbGFzcyBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U7CiBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBOYXRpdmVJbWFnZTsKLWVudW0g
Y2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDogdWludDhfdDsKKwogZW51bSBjbGFzcyBSZW5k
ZXJpbmdNb2RlIDogYm9vbDsKKwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEyMSw3ICsx
MjUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJp
ZGU7CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KLSAgICB2b2lkIGNyZWF0ZUlt
YWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNvcmU6
OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRp
b25Db2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiwg
V2ViQ29yZTo6UGl4ZWxGb3JtYXQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7CiAgICAgdm9pZCB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KGNvbnN0IEdQVVByb2Nlc3NX
YWtldXBNZXNzYWdlQXJndW1lbnRzJik7CiAgICAgdm9pZCB1cGRhdGVTaGFyZWRNZW1vcnlGb3JH
ZXRQaXhlbEJ1ZmZlcih1aW50MzJfdCBieXRlQ291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mJik7CiAgICAgdm9pZCBzZW1hcGhvcmVG
b3JHZXRQaXhlbEJ1ZmZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2VtYXBo
b3JlJik+JiYpOwpJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUlt
YWdlRGVjb2RlckFWRlByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwCShyZXZpc2lvbiAyNzc5
MTkpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMjggKzExMywyOCBAQCB2b2lkIFJl
bW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpzZXREYXRhCiAgICAgY29tcGxldGlvbkhhbmRsZXIo
ZnJhbWVDb3VudCwgaW1hZ2VEZWNvZGVyLT5zaXplKCksIGltYWdlRGVjb2Rlci0+aGFzVHJhY2so
KSwgV1RGTW92ZShmcmFtZUluZm9zKSk7CiB9CiAKLXZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
UHJveHk6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KEltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgc2l6ZV90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdU
Rjo6TWFjaFNlbmRSaWdodD4mJiwgQ29sb3JTcGFjZURhdGEmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYsIE9wdGlv
bmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgQVNTRVJUKG1faW1hZ2VEZWNvZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7
CiAgICAgT3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJpZ2h0PiBzZW5kUmlnaHQ7Ci0gICAgQ29sb3JT
cGFjZURhdGEgY29sb3JTcGFjZURhdGE7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRp
b25Db2xvclNwYWNlPiBjb2xvclNwYWNlOwogICAgIGlmICghbV9pbWFnZURlY29kZXJzLmNvbnRh
aW5zKGlkZW50aWZpZXIpKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc2Vu
ZFJpZ2h0KSwgV1RGTW92ZShjb2xvclNwYWNlRGF0YSkpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKHNlbmRSaWdodCksIFdURk1vdmUoY29sb3JTcGFjZSkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiAgICAgYXV0byBmcmFtZUltYWdlID0gbV9pbWFnZURlY29kZXJzLmdl
dChpZGVudGlmaWVyKS0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgpOwogICAgIGlmICgh
ZnJhbWVJbWFnZSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHNlbmRSaWdo
dCksIFdURk1vdmUoY29sb3JTcGFjZURhdGEpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShzZW5kUmlnaHQpLCBXVEZNb3ZlKGNvbG9yU3BhY2UpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21J
bWFnZShmcmFtZUltYWdlLmdldCgpKSkgewogICAgICAgICBzZW5kUmlnaHQgPSBzdXJmYWNlLT5j
cmVhdGVTZW5kUmlnaHQoKTsKLSAgICAgICAgY29sb3JTcGFjZURhdGEuY2dDb2xvclNwYWNlID0g
c3VyZmFjZS0+Y29sb3JTcGFjZSgpOworICAgICAgICBjb2xvclNwYWNlID0gc3VyZmFjZS0+Y29s
b3JTcGFjZSgpOwogICAgIH0KIAotICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc2VuZFJp
Z2h0KSwgV1RGTW92ZShjb2xvclNwYWNlRGF0YSkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUoc2VuZFJpZ2h0KSwgV1RGTW92ZShjb2xvclNwYWNlKSk7CiB9CiAKIHZvaWQgUmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGUHJveHk6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZShJbWFnZURlY29kZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQ
cm94eS5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyAr
MjcsNiBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBIQVZFKEFWQVNTRVRSRUFERVIp
CiAKLSNpbmNsdWRlICJDb2xvclNwYWNlRGF0YS5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdl
RGVjb2RlckFWRk9iakMuaD4KQEAgLTU3LDcgKzU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRl
bGV0ZURlY29kZXIoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllcik7CiAgICAgdm9pZCBz
ZXRFeHBlY3RlZENvbnRlbnRTaXplKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIGxv
bmcgbG9uZyBleHBlY3RlZENvbnRlbnRTaXplKTsKICAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6
SW1hZ2VEZWNvZGVySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc2l6ZV90IGZyYW1lQ291bnQs
IGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUsIGJvb2wgaGFzVHJhY2ssIE9wdGlvbmFsPFZl
Y3RvcjxXZWJDb3JlOjpJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4+JiYpPiYmKTsKLSAgICB2b2lk
IGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIs
IHNpemVfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXVEY6Ok1hY2hT
ZW5kUmlnaHQ+JiYsIENvbG9yU3BhY2VEYXRhJiYpPiYmKTsKKyAgICB2b2lkIGNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIHNpemVfdCBpbmRl
eCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYs
IE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4mJik+JiYpOwogICAgIHZv
aWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIs
IHNpemVfdCBpbmRleCk7CiAKICAgICB2b2lkIGVuY29kZWREYXRhU3RhdHVzQ2hhbmdlZChXZWJD
b3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNzYWdlcy5pbgko
d29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBtZXNzYWdlcyAtPiBSZW1vdGVJbWFnZURl
Y29kZXJBVkZQcm94eSBOCiAgICAgRGVsZXRlRGVjb2RlcihXZWJDb3JlOjpJbWFnZURlY29kZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgU2V0RXhwZWN0ZWRDb250ZW50U2l6ZShXZWJDb3Jl
OjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGxvbmcgbG9uZyBleHBlY3RlZENv
bnRlbnRTaXplKQogICAgIFNldERhdGEoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciBp
ZGVudGlmaWVyLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpIC0+IChzaXplX3QgZnJhbWVDb3VudCwgV2ViQ29yZTo6SW50U2l6ZSBzaXpl
LCBib29sIGhhc1RyYWNrLCBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpG
cmFtZUluZm8+PiBmcmFtZUluZm9zKSBTeW5jaHJvbm91cwotICAgIENyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgc2l6ZV90
IGluZGV4KSAtPiAoT3B0aW9uYWw8TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0LCBzdHJ1Y3QgV2Vi
S2l0OjpDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlKSBTeW5jaHJvbm91cworICAgIENyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgc2l6ZV90IGluZGV4KSAtPiAoT3B0aW9uYWw8TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0LCBP
cHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2UpIFN5bmNo
cm9ub3VzCiAgICAgQ2xlYXJGcmFtZUJ1ZmZlckNhY2hlKFdlYkNvcmU6OkltYWdlRGVjb2Rlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgc2l6ZV90IGluZGV4KQogfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0
LDEwICs3NCw3IEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGU6OmNsZWFyKCkKIAogdm9p
ZCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb246OmVuY29kZShJUEM6OkVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBpc09wYXF1ZTsKLSNpZiBQTEFURk9STShD
T0NPQSkKLSAgICBlbmNvZGVyIDw8IGNvbG9yU3BhY2U7Ci0jZW5kaWYKKyAgICBlbmNvZGVyIDw8
IGNvbG9yU3BhY2UgPDwgaXNPcGFxdWU7CiAjaWYgVVNFKERJUkVDVDJEKQogICAgIFNoYXJlZE1l
bW9yeTo6SGFuZGxlOjplbmNvZGVIYW5kbGUoZW5jb2Rlciwgc2hhcmVkUmVzb3VyY2VIYW5kbGUp
OwogCkBAIC04OCwyMSArODUsMjggQEAgdm9pZCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRp
b246OmVuYwogI2VuZGlmCiB9CiAKLWJvb2wgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9u
OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb25maWd1cmF0aW9uJiBjb25maWd1cmF0
aW9uKQorYm9vbCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb246OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIsIENvbmZpZ3VyYXRpb24mIHJlc3VsdCkKIHsKLSAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGNvbmZpZ3VyYXRpb24uaXNPcGFxdWUpKQorICAgIE9wdGlvbmFsPE9wdGlvbmFs
PFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4+IGNvbG9yU3BhY2U7CisgICAgZGVjb2Rl
ciA+PiBjb2xvclNwYWNlOworICAgIGlmICghY29sb3JTcGFjZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29uZmln
dXJhdGlvbi5jb2xvclNwYWNlKSkKKworICAgIE9wdGlvbmFsPGJvb2w+IGlzT3BhcXVlOworICAg
IGRlY29kZXIgPj4gaXNPcGFxdWU7CisgICAgaWYgKCFpc09wYXF1ZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotI2VuZGlmCisKKyAgICByZXN1bHQgPSBDb25maWd1cmF0aW9uIHsgV1RGTW92ZSgq
Y29sb3JTcGFjZSksICppc09wYXF1ZSB9OworCiAjaWYgVVNFKERJUkVDVDJEKQogICAgIGF1dG8g
cHJvY2Vzc1NwZWNpZmljSGFuZGxlID0gU2hhcmVkTWVtb3J5OjpIYW5kbGU6OmRlY29kZUhhbmRs
ZShkZWNvZGVyKTsKICAgICBpZiAoIXByb2Nlc3NTcGVjaWZpY0hhbmRsZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgY29uZmlndXJhdGlvbi5zaGFyZWRSZXNvdXJjZUhhbmRsZSA9IHBy
b2Nlc3NTcGVjaWZpY0hhbmRsZS52YWx1ZSgpOworICAgIHJlc3VsdC5zaGFyZWRSZXNvdXJjZUhh
bmRsZSA9IHByb2Nlc3NTcGVjaWZpY0hhbmRsZS52YWx1ZSgpOwogI2VuZGlmCisKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFw
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1h
cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxNSArMjYsMTIgQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9EZXN0aW5hdGlvbkNv
bG9yU3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1BsYXRmb3JtSW1hZ2UuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSAiQ29s
b3JTcGFjZURhdGEuaCIKLSNlbmRpZgotCiAjaWYgVVNFKERJUkVDVDJEKQogaW50ZXJmYWNlIElE
MkQxQml0bWFwOwogaW50ZXJmYWNlIElEMkQxUmVuZGVyVGFyZ2V0OwpAQCAtNTUsMTAgKzUyLDgg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBTaGFyZWFibGVCaXRtYXAgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVhYmxlQml0bWFwPiB7CiBwdWJsaWM6CiAgICAgc3RydWN0
IENvbmZpZ3VyYXRpb24geworICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNv
bG9yU3BhY2U+IGNvbG9yU3BhY2U7CiAgICAgICAgIGJvb2wgaXNPcGFxdWUgeyBmYWxzZSB9Owot
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlOwot
I2VuZGlmCiAjaWYgVVNFKERJUkVDVDJEKQogICAgICAgICBtdXRhYmxlIEhBTkRMRSBzaGFyZWRS
ZXNvdXJjZUhhbmRsZSB7IG51bGxwdHIgfTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCSh3b3JraW5nIGNvcHkp
CkBAIC04Miw2ICs4Miw4IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1
ZGUgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKKwogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNYWNoU2Vu
ZFJpZ2h0OwogfQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MjUsOCArMzI1LDExIEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlAK
ICAgICBwYXJhbWV0ZXJzLmhhc1Jlc291cmNlTG9hZENsaWVudCA9IFdURk1vdmUoKmhhc1Jlc291
cmNlTG9hZENsaWVudCk7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpKQorICAgIE9wdGlvbmFsPE9wdGlvbmFsPERlc3Rp
bmF0aW9uQ29sb3JTcGFjZT4+IGNvbG9yU3BhY2U7CisgICAgZGVjb2RlciA+PiBjb2xvclNwYWNl
OworICAgIGlmICghY29sb3JTcGFjZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICBwYXJhbWV0ZXJzLmNvbG9yU3BhY2UgPSBXVEZNb3ZlKCpjb2xvclNwYWNlKTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXNlU3lzdGVtQXBwZWFyYW5jZSkpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDI3NzkxOSkKKysr
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2aXR5U3RhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0NvbG9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0Zsb2F0U2l6ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvTGF5b3V0TWlsZXN0b25lLmg+CkBAIC00OSwxMCArNTAsNiBA
QAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKLSNpZiBQTEFURk9STShNQUMpCi0jaW5jbHVkZSAiQ29sb3JTcGFjZURhdGEuaCIKLSNl
bmRpZgotCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogI2luY2x1ZGUgPFdlYkNv
cmUvQXBwbGljYXRpb25NYW5pZmVzdC5oPgogI2VuZGlmCkBAIC0xNDYsNyArMTQzLDcgQEAgc3Ry
dWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIGJvb2wgdXNlRWxldmF0ZWRVc2Vy
SW50ZXJmYWNlTGV2ZWwgeyBmYWxzZSB9OwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIENvbG9y
U3BhY2VEYXRhIGNvbG9yU3BhY2U7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25D
b2xvclNwYWNlPiBjb2xvclNwYWNlOwogICAgIGJvb2wgdXNlU3lzdGVtQXBwZWFyYW5jZTsKICNl
bmRpZgogI2lmIEVOQUJMRShNRVRBX1ZJRVdQT1JUKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tp
bmdTdG9yZS5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTIsMTkgKzIxMiwxOSBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2FwVG9W
YWxpCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFR5cGU6OklPU3VyZmFjZToKICAg
ICAgICAgaWYgKHNob3VsZFVzZVJlbW90ZVJlbmRlcmluZykKLSAgICAgICAgICAgIG1fZnJvbnRC
dWZmZXIuaW1hZ2VCdWZmZXIgPSBtX2xheWVyLT5jb250ZXh0KCktPmVuc3VyZVJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSgpLmNyZWF0ZUltYWdlQnVmZmVyKG1fc2l6ZSwgV2ViQ29yZTo6UmVu
ZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQsIG1fc2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSk7CisgICAgICAgICAgICBtX2Zyb250QnVmZmVy
LmltYWdlQnVmZmVyID0gbV9sYXllci0+Y29udGV4dCgpLT5lbnN1cmVSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkoKS5jcmVhdGVJbWFnZUJ1ZmZlcihtX3NpemUsIFdlYkNvcmU6OlJlbmRlcmlu
Z01vZGU6OkFjY2VsZXJhdGVkLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgcGl4ZWxGb3JtYXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1f
ZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPEFj
Y2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6
ZSwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBwaXhlbEZv
cm1hdCgpLCBudWxscHRyKTsKKyAgICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIg
PSBXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFy
ZWFibGVNYXBwZWRCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwgbV9zY2FsZSwgV2ViQ29yZTo6RGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHBpeGVsRm9ybWF0KCksIG51bGxwdHIpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFR5cGU6OkJpdG1hcDoKICAgICAgICAgaWYgKHNob3VsZFVz
ZVJlbW90ZVJlbmRlcmluZykKLSAgICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIg
PSBtX2xheWVyLT5jb250ZXh0KCktPmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgp
LmNyZWF0ZUltYWdlQnVmZmVyKG1fc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBw
aXhlbEZvcm1hdCgpKTsKKyAgICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBt
X2xheWVyLT5jb250ZXh0KCktPmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpLmNy
ZWF0ZUltYWdlQnVmZmVyKG1fc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVy
YXRlZCwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHBp
eGVsRm9ybWF0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Zyb250QnVmZmVyLmlt
YWdlQnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxVbmFjY2VsZXJhdGVkSW1h
Z2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwgbV9zY2FsZSwgV2ViQ29y
ZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBwaXhlbEZvcm1hdCgpLCBudWxscHRyKTsK
KyAgICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0
ZUltYWdlQnVmZmVyPFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQ+Ojpj
cmVhdGUobV9zaXplLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0cik7CiAgICAgICAgIGJyZWFrOwogI2lmIEVOQUJM
RShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKICAgICBjYXNlIFR5cGU6OkNH
RGlzcGxheUxpc3Q6Ci0gICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3Jl
OjpDb25jcmV0ZUltYWdlQnVmZmVyPENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ+Ojpj
cmVhdGUobV9zaXplLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IsIHBpeGVsRm9ybWF0KCksIG51bGxwdHIpOworICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdl
QnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxDR0Rpc3BsYXlMaXN0SW1hZ2VC
dWZmZXJCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCksIHBpeGVsRm9ybWF0KCksIG51bGxwdHIpOwogICAgICAgICBi
cmVhazsKICNlbmRpZgogICAgIH0KQEAgLTM5Nyw3ICszOTcsNyBAQCB2b2lkIFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlOjphcHBseUJhY2tpCiAgICAgICAgICAgICBBU1NFUlQobV90eXBlID09IFR5
cGU6OklPU3VyZmFjZSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNvbnRlbnRzVHlwZSkgewogICAg
ICAgICAgICAgY2FzZSBMYXllckNvbnRlbnRzVHlwZTo6SU9TdXJmYWNlOiB7Ci0gICAgICAgICAg
ICAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJp
Z2h0KFdURk1vdmUobWFjaFNlbmRSaWdodCksIFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCkp
OworICAgICAgICAgICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3Jl
YXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKG1hY2hTZW5kUmlnaHQpLCBXZWJDb3JlOjpEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAgICAgICAgICAgbGF5ZXIuY29udGVudHMg
PSBzdXJmYWNlID8gc3VyZmFjZS0+YXNMYXllckNvbnRlbnRzKCkgOiBuaWw7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9j
Zy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFy
ZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDcgKzQwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgCiBzdGF0aWMgQ0dD
b2xvclNwYWNlUmVmIGNvbG9yU3BhY2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0
aW9uJiBjb25maWd1cmF0aW9uKQogewotICAgIHJldHVybiBjb25maWd1cmF0aW9uLmNvbG9yU3Bh
Y2UuY2dDb2xvclNwYWNlLmdldCgpID86IHNSR0JDb2xvclNwYWNlUmVmKCk7CisgICAgcmV0dXJu
IGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZSA/IGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZS0+cGxh
dGZvcm1Db2xvclNwYWNlKCkgOiBXZWJDb3JlOjpzUkdCQ29sb3JTcGFjZVJlZigpOwogfQogCiBz
dGF0aWMgYm9vbCB3YW50c0V4dGVuZGVkUmFuZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpDb25m
aWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L0NvbG9yU3BhY2VEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L0NvbG9yU3BhY2VEYXRhLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9Db2xvclNwYWNlRGF0YS5oCShub25leGlzdGVudCkKQEAgLTEsNDcgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpZm5kZWYgQ29sb3JTcGFjZURhdGFfaAotI2RlZmluZSBDb2xvclNwYWNl
RGF0YV9oCi0KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLW5hbWVzcGFjZSBJUEMgewot
Y2xhc3MgRGVjb2RlcjsKLWNsYXNzIEVuY29kZXI7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci1zdHJ1Y3QgQ29sb3JTcGFjZURhdGEgewotICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYp
IGNvbnN0OwotICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoSVBDOjpE
ZWNvZGVyJiwgQ29sb3JTcGFjZURhdGEmKTsKLQotICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VS
ZWY+IGNnQ29sb3JTcGFjZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYg
Ly8gQ29sb3JTcGFjZURhdGFfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL0NvbG9yU3BhY2VEYXRhLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0
eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvbG9yU3BhY2VEYXRhLm1tCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEu
bW0JKG5vbmV4aXN0ZW50KQpAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAi
Y29uZmlnLmgiCi0jaW1wb3J0ICJDb2xvclNwYWNlRGF0YS5oIgotCi0jaW1wb3J0ICJBcmd1bWVu
dENvZGVyc0NGLmgiCi0jaW1wb3J0ICJEZWNvZGVyLmgiCi0jaW1wb3J0ICJFbmNvZGVyLmgiCi0j
aW1wb3J0IDx3dGYvRW51bVRyYWl0cy5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBD
b2xvclNwYWNlRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAg
ICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGJvb2w+KGNnQ29sb3JTcGFjZSk7Ci0gICAgaWYgKGNn
Q29sb3JTcGFjZSkKLSAgICAgICAgZW5jb2RlciA8PCBjZ0NvbG9yU3BhY2U7Ci19Ci0KLWJvb2wg
Q29sb3JTcGFjZURhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbG9yU3BhY2VE
YXRhJiBjb2xvclNwYWNlRGF0YSkKLXsKLSAgICBib29sIGhhc0NHQ29sb3JTcGFjZTsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGhhc0NHQ29sb3JTcGFjZSkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIGlmICghaGFzQ0dDb2xvclNwYWNlKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQot
ICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2U7Ci0gICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShjb2xvclNwYWNlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAg
IGNvbG9yU3BhY2VEYXRhLmNnQ29sb3JTcGFjZSA9IFdURk1vdmUoY29sb3JTcGFjZSk7Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5Myw3IEBA
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29sb3I7
CiBjbGFzcyBDdXJzb3I7CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7CiBjbGFzcyBGbG9h
dFF1YWQ7CiBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBSZWdpb247CkBAIC0xODgsMTAgKzE4OSw2
IEBAIGNsYXNzIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQ7CiBjbGFzcyBJbnN0YWxs
TWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0OwogI2VuZGlmCiAKLSNpZiBQTEFU
Rk9STShDT0NPQSkKLXN0cnVjdCBDb2xvclNwYWNlRGF0YTsKLSNlbmRpZgotCiAjaWYgSEFWRShW
SVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCiB1c2luZyBMYXllckhvc3RpbmdDb250ZXh0SUQg
PSB1aW50MzJfdDsKICNlbmRpZgpAQCAtNDI2LDcgKzQyMyw3IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgQ0dSZWN0IGJvdW5kc09mTGF5ZXJJbkxheWVyQmFja2VkV2luZG93Q29vcmRpbmF0ZXMo
Q0FMYXllciAqKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIENvbG9yU3BhY2VEYXRhIGNvbG9y
U3BhY2UoKSA9IDA7CisgICAgdmlydHVhbCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2Ug
Y29sb3JTcGFjZSgpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzaG93UGxhdGZvcm1Db250ZXh0
TWVudShOU01lbnUgKiwgV2ViQ29yZTo6SW50UG9pbnQpID0gMDsKIApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsNiAr
MTk4LDcgQEAgbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBBdHRhY2htZW50OwogY2xhc3MgQ29udGVu
dFdvcmxkOwogY2xhc3MgQ29udGV4dE1lbnVDbGllbnQ7CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U7CiBjbGFzcyBFcnJvcjsKIGNsYXNzIEZpbmRDbGllbnQ7CiBjbGFzcyBGaW5kTWF0Y2hl
c0NsaWVudDsKQEAgLTM3Nyw3ICszNzgsNiBAQCBjbGFzcyBXZWJXaGVlbEV2ZW50Q29hbGVzY2Vy
OwogY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIAogc3RydWN0IEFwcEJvdW5kTmF2aWdhdGlvblRl
c3RpbmdEYXRhOwotc3RydWN0IENvbG9yU3BhY2VEYXRhOwogc3RydWN0IERhdGFEZXRlY3Rpb25S
ZXN1bHQ7CiBzdHJ1Y3QgRG9jdW1lbnRFZGl0aW5nQ29udGV4dDsKIHN0cnVjdCBEb2N1bWVudEVk
aXRpbmdDb250ZXh0UmVxdWVzdDsKQEAgLTExMzIsNyArMTEzMiw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1h
a2VGaXJzdFJlc3BvbmRlcigpOwogCi0gICAgQ29sb3JTcGFjZURhdGEgY29sb3JTcGFjZSgpOwor
ICAgIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKCk7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0JKHJldmlzaW9uIDI3NzkxOSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDE0LDcgKzEwMTQsNyBAQCAtIChSZWZQdHI8V2ViS2l0OjpWaWV3U25hcHNo
b3Q+KV90YWtlVmllCiAjZWxzZQogICAgIFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0IHNuYXBz
aG90Rm9ybWF0ID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQ6OkJHUkE7CiAjZW5kaWYKLSAg
ICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZShXZWJDb3JlOjpleHBh
bmRlZEludFNpemUoc25hcHNob3RTaXplKSwgV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSwg
c25hcHNob3RGb3JtYXQpOworICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6
Y3JlYXRlKFdlYkNvcmU6OmV4cGFuZGVkSW50U2l6ZShzbmFwc2hvdFNpemUpLCBXZWJDb3JlOjpE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgc25hcHNob3RGb3JtYXQpOwogICAgIGlmICgh
c3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgQ0FSZW5kZXJTZXJ2ZXJSZW5k
ZXJMYXllcldpdGhUcmFuc2Zvcm0oTUFDSF9QT1JUX05VTEwsIHNlbGYubGF5ZXIuY29udGV4dC5j
b250ZXh0SWQsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KHNlbGYubGF5ZXIpLCBzdXJmYWNl
LT5zdXJmYWNlKCksIDAsIDAsICZ0cmFuc2Zvcm0pOwpAQCAtMzA3OSw3ICszMDc5LDcgQEAgLSAo
dm9pZClfc25hcHNob3RSZWN0OihDR1JlY3QpcmVjdEluVmlldwogICAgIE5TU3RyaW5nICpkaXNw
bGF5TmFtZSA9IHNlbGYud2luZG93LnNjcmVlbi5kaXNwbGF5Q29uZmlndXJhdGlvbi5uYW1lOwog
ICAgIGlmIChkaXNwbGF5TmFtZSAmJiAhc2VsZi53aW5kb3cuaGlkZGVuKSB7CiAgICAgICAgIFRy
YWNlU2NvcGUgc25hcHNob3RTY29wZShSZW5kZXJTZXJ2ZXJTbmFwc2hvdFN0YXJ0LCBSZW5kZXJT
ZXJ2ZXJTbmFwc2hvdEVuZCk7Ci0gICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3Vy
ZmFjZTo6Y3JlYXRlKFdlYkNvcmU6OmV4cGFuZGVkSW50U2l6ZShXZWJDb3JlOjpGbG9hdFNpemUo
aW1hZ2VTaXplKSksIFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCkpOworICAgICAgICBhdXRv
IHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZShXZWJDb3JlOjpleHBhbmRlZElu
dFNpemUoV2ViQ29yZTo6RmxvYXRTaXplKGltYWdlU2l6ZSkpLCBXZWJDb3JlOjpEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAgIGlmICghc3VyZmFjZSkgewogICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm47CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgJKHJldmlzaW9u
IDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTk0LDYgKzk0LDcgQEAgY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247
CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsK
IGNsYXNzIEludFBvaW50Owogc3RydWN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkw7CiAKQEAgLTE2
OCw3ICsxNjksNiBAQCBjbGFzcyBXZWJGcmFtZVByb3h5OwogY2xhc3MgV2ViUGFnZVByb3h5Owog
Y2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7Ci1zdHJ1Y3QgQ29s
b3JTcGFjZURhdGE7CiBzdHJ1Y3QgV2ViSGl0VGVzdFJlc3VsdERhdGE7CiAKIGVudW0gY2xhc3Mg
Q29udGludWVVbnNhZmVMb2FkIDogYm9vbDsKQEAgLTMxMyw3ICszMTMsNyBAQCBwdWJsaWM6CiAK
ICAgICBOU1ZpZXcgKmhpdFRlc3QoQ0dQb2ludCk7CiAKLSAgICBDb2xvclNwYWNlRGF0YSBjb2xv
clNwYWNlKCk7CisgICAgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2Uo
KTsKIAogICAgIHZvaWQgc2V0VW5kZXJsYXlDb2xvcihOU0NvbG9yICopOwogICAgIE5TQ29sb3Ig
KnVuZGVybGF5Q29sb3IoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsNyAr
MzIsNiBAQAogI2ltcG9ydCAiQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCIKICNpbXBv
cnQgIkFQSU5hdmlnYXRpb24uaCIKICNpbXBvcnQgIkFwcEtpdFNQSS5oIgotI2ltcG9ydCAiQ29s
b3JTcGFjZURhdGEuaCIKICNpbXBvcnQgIkNvcmVUZXh0SGVscGVycy5oIgogI2ltcG9ydCAiRm9u
dEluZm8uaCIKICNpbXBvcnQgIkZ1bGxzY3JlZW5DbGllbnQuaCIKQEAgLTkwLDYgKzg5LDcgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JTZXJp
YWxpemF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbXBvc2l0aW9uSGlnaGxpZ2h0Lmg+Cisj
aW1wb3J0IDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9EaWN0aW9uYXJ5TG9va3VwLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0RyYWdJdGVtLmg+CkBAIC0yNTAwLDcgKzI1MDAsNyBAQCB2b2lkIFdlYlZp
ZXdJbXBsOjpwb3N0RmFrZU1vdXNlTW92ZWRFdmVuCiAgICAgbV9wYWdlLT5oYW5kbGVNb3VzZUV2
ZW50KHdlYkV2ZW50KTsKIH0KIAotQ29sb3JTcGFjZURhdGEgV2ViVmlld0ltcGw6OmNvbG9yU3Bh
Y2UoKQorV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIFdlYlZpZXdJbXBsOjpjb2xvclNw
YWNlKCkKIHsKICAgICBpZiAoIW1fY29sb3JTcGFjZSkgewogICAgICAgICBpZiAobV90YXJnZXRX
aW5kb3dGb3JNb3ZlUHJlcGFyYXRpb24pCkBAIC0yNTExLDEwICsyNTExLDcgQEAgQ29sb3JTcGFj
ZURhdGEgV2ViVmlld0ltcGw6OmNvbG9yU3BhY2UoKQogICAgICAgICAgICAgbV9jb2xvclNwYWNl
ID0gW05TU2NyZWVuIG1haW5TY3JlZW5dLmNvbG9yU3BhY2U7CiAgICAgfQogCi0gICAgQ29sb3JT
cGFjZURhdGEgY29sb3JTcGFjZURhdGE7Ci0gICAgY29sb3JTcGFjZURhdGEuY2dDb2xvclNwYWNl
ID0gW21fY29sb3JTcGFjZSBDR0NvbG9yU3BhY2VdOwotCi0gICAgcmV0dXJuIGNvbG9yU3BhY2VE
YXRhOworICAgIHJldHVybiBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgeyBbbV9jb2xv
clNwYWNlIENHQ29sb3JTcGFjZV0gfTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6c2V0VW5kZXJs
YXlDb2xvcihOU0NvbG9yICp1bmRlcmxheUNvbG9yKQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZUhvc3QubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSw2ICszNSw3IEBACiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlByb2Nl
c3NQcm94eS5oIgogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGlj
c0NvbnRleHRDRy5oPgogI2ltcG9ydCA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUGxhdGZvcm1MYXllci5oPgpAQCAtMzE3LDcgKzMxOCw3IEBAIHN0YXRpYyB2b2lkIHJl
Y3Vyc2l2ZWx5TWFwSU9TdXJmYWNlQmFja2kKIHsKICAgICBpZiAobGF5ZXIuY29udGVudHMgJiYg
Q0ZHZXRUeXBlSUQoKF9fYnJpZGdlIENGVHlwZVJlZilsYXllci5jb250ZW50cykgPT0gQ0FNYWNo
UG9ydEdldFR5cGVJRCgpKSB7CiAgICAgICAgIE1hY2hTZW5kUmlnaHQgcG9ydCA9IE1hY2hTZW5k
UmlnaHQ6OmNyZWF0ZShDQU1hY2hQb3J0R2V0UG9ydCgoX19icmlkZ2UgQ0FNYWNoUG9ydFJlZils
YXllci5jb250ZW50cykpOwotICAgICAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZh
Y2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShwb3J0KSwgc1JHQkNvbG9yU3BhY2VSZWYo
KSk7CisgICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJv
bVNlbmRSaWdodChXVEZNb3ZlKHBvcnQpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSk7CiAgICAgICAgIGxheWVyLmNvbnRlbnRzID0gc3VyZmFjZSA/IHN1cmZhY2UtPmFz
TGF5ZXJDb250ZW50cygpIDogbmlsOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgJKHJldmlzaW9uIDI3NzkxOSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCSh3b3JraW5n
IGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1ZpZXdJbldpbmRv
dygpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNWaXN1YWxseUlkbGUoKSBvdmVycmlkZTsKICAgICBM
YXllckhvc3RpbmdNb2RlIHZpZXdMYXllckhvc3RpbmdNb2RlKCkgb3ZlcnJpZGU7Ci0gICAgQ29s
b3JTcGFjZURhdGEgY29sb3JTcGFjZSgpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6OkRlc3RpbmF0
aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRSZW1vdGVM
YXllclRyZWVSb290Tm9kZShSZW1vdGVMYXllclRyZWVOb2RlKikgb3ZlcnJpZGU7CiAgICAgQ0FM
YXllciAqYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpIGNvbnN0IG92ZXJyaWRlOwog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBs
TWFjLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
UGFnZUNsaWVudEltcGxNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAKIAog
I2ltcG9ydCAiQVBJSGl0VGVzdFJlc3VsdC5oIgogI2ltcG9ydCAiQXBwS2l0U1BJLmgiCi0jaW1w
b3J0ICJDb2xvclNwYWNlRGF0YS5oIgogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9y
dCAiRG93bmxvYWRQcm94eS5oIgogI2ltcG9ydCAiRHJhd2luZ0FyZWFQcm94eS5oIgpAQCAtNjYs
NiArNjUsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9Db2xvck1hYy5oPgogI2ltcG9ydCA8V2ViQ29yZS9DdXJzb3IuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RpY3Rpb25h
cnlMb29rdXAuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0l0ZW0uaD4KICNpbXBvcnQgPFdlYkNv
cmUvRmxvYXRSZWN0Lmg+CkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6
dmlld1dpbGxNb3ZlVG9Bbm90aAogICAgIGNsZWFyQWxsRWRpdENvbW1hbmRzKCk7CiB9CiAKLUNv
bG9yU3BhY2VEYXRhIFBhZ2VDbGllbnRJbXBsOjpjb2xvclNwYWNlKCkKK1dlYkNvcmU6OkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZSBQYWdlQ2xpZW50SW1wbDo6Y29sb3JTcGFjZSgpCiB7CiAgICAgcmV0
dXJuIG1faW1wbC0+Y29sb3JTcGFjZSgpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhUHJveHkubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAotI2ltcG9y
dCAiQ29sb3JTcGFjZURhdGEuaCIKICNpbXBvcnQgIkRyYXdpbmdBcmVhTWVzc2FnZXMuaCIKICNp
bXBvcnQgIkRyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oIgogI2ltcG9ydCAiTGF5ZXJUcmVlQ29u
dGV4dC5oIgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVBy
b3h5TWFjLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAj
aWYgUExBVEZPUk0oTUFDKQogCiAjaW1wb3J0ICJBUElVSUNsaWVudC5oIgotI2ltcG9ydCAiQ29s
b3JTcGFjZURhdGEuaCIKICNpbXBvcnQgIkNvbm5lY3Rpb24uaCIKICNpbXBvcnQgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbXBvcnQgIkVkaXRvclN0YXRlLmgiCkBAIC01Miw2ICs1MSw3IEBACiAjaW1w
b3J0ICJXZWJQcmVmZXJlbmNlc0tleXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgog
I2ltcG9ydCA8V2ViQ29yZS9BdHRyaWJ1dGVkU3RyaW5nLmg+CisjaW1wb3J0IDxXZWJDb3JlL0Rl
c3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5TG9va3Vw
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdJdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBo
aWNzTGF5ZXIuaD4KQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXNzaXN0
aXZlVGVjaG5vbG9neU1hCiAgICAgcGFnZUNsaWVudCgpLmFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtl
Rmlyc3RSZXNwb25kZXIoKTsKIH0KIAotQ29sb3JTcGFjZURhdGEgV2ViUGFnZVByb3h5Ojpjb2xv
clNwYWNlKCkKK1dlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBXZWJQYWdlUHJveHk6OmNv
bG9yU3BhY2UoKQogewogICAgIHJldHVybiBwYWdlQ2xpZW50KCkuY29sb3JTcGFjZSgpOwogfQpJ
bmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNjM0LDggKzI2MzQsNiBAQAogCQkxQTI1
NkUzNjE4QTFBNzg4MDA2RkI5MjIgLyogV0tOYXZpZ2F0aW9uQWN0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLTmF2aWdhdGlvbkFjdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQTI1NkUzOTE4QTFBN0RGMDA2RkI5MjIgLyogV0tOYXZpZ2F0aW9u
QWN0aW9uSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tOYXZp
Z2F0aW9uQWN0aW9uSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEy
OEI4Q0IxQzgwRUQ1OTAwNkZENzQzIC8qIFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQTJBNEFGRDE1ODY5MzkyMDA5MEM5RTkgLyogQ29s
b3JTcGFjZURhdGEubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBD
b2xvclNwYWNlRGF0YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUEyQTRBRkUx
NTg2OTM5MjAwOTBDOUU5IC8qIENvbG9yU3BhY2VEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENvbG9yU3BhY2VEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFBMkJCNkNDMTQxMTdBNUYwMDBGMzVENCAvKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyQkI2Q0UxNDEx
N0I0RDAwMEYzNUQ0IC8qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIv
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQTJCQjZDRjE0MTE3QjREMDAwRjM1RDQgLyogUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVk
U291cmNlcy9XZWJLaXQyL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaDsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTEwNDMwLDggKzEwNDI4LDYgQEAKIAkJ
CQk5RjU0Rjg4RTE2NDg4RTg3MDA3REY4MUEgLyogQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbSAqLywK
IAkJCQlDRTExQUQ1MTFDQkM0ODJGMDA2ODFFRTUgLyogQ29kZVNpZ25pbmcuaCAqLywKIAkJCQlD
RTExQUQ0RjFDQkM0N0Y4MDA2ODFFRTUgLyogQ29kZVNpZ25pbmcubW0gKi8sCi0JCQkJMUEyQTRB
RkUxNTg2OTM5MjAwOTBDOUU5IC8qIENvbG9yU3BhY2VEYXRhLmggKi8sCi0JCQkJMUEyQTRBRkQx
NTg2OTM5MjAwOTBDOUU5IC8qIENvbG9yU3BhY2VEYXRhLm1tICovLAogCQkJCTFBQzc1QTFDMUIz
MzY5NUUwMDU2NzQ1QiAvKiBIYW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMubW0gKi8sCiAJCQkJMkQ1
MDM2NUQxQkNDNzkzRjAwRTIwQkIzIC8qIE5hdGl2ZVdlYkdlc3R1cmVFdmVudE1hYy5tbSAqLywK
IAkJCQlDMDJCRkYxRDEyNTE1MDJFMDA5Q0NCRUEgLyogTmF0aXZlV2ViS2V5Ym9hcmRFdmVudE1h
Yy5tbSAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDUsMTEgKzQ1LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBM
KEltYWdlQnVmZmVyUwogCiBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gSW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb25maWd1cmF0aW9uKGNvbnN0IFBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMpCiB7Ci0gICAgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGNvbmZp
Z3VyYXRpb247Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgY29uZmlndXJhdGlvbi5jb2xvclNw
YWNlID0geyBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSB9OwotI2Vu
ZGlmCi0gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CisgICAgcmV0dXJuIHsgcGFyYW1ldGVycy5j
b2xvclNwYWNlIH07CiB9CiAKIEludFNpemUgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kOjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVy
cykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAkocmV2
aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyAr
OTQsNyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnByZXBhCiAgICAgICAg
IG1hcmtDb250ZXh0TG9zdCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8gZGlz
cGxheUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGRpc3Bs
YXlCdWZmZXJTZW5kUmlnaHQpLCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICBhdXRvIGRpc3Bs
YXlCdWZmZXIgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShkaXNwbGF5
QnVmZmVyU2VuZFJpZ2h0KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkp
OwogICAgIGlmIChkaXNwbGF5QnVmZmVyKSB7CiAgICAgICAgIGF1dG8mIHNjID0gcGxhdGZvcm1T
d2FwQ2hhaW4oKTsKICAgICAgICAgc2MucmVjeWNsZUJ1ZmZlcigpOwpJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgOiBwdWJs
aWMgV2UKICAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6cmVzb2x1dGlvblNj
YWxlOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJDb3Jl
OjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiBy
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgc3RhdGljIFJlZlB0cjxSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYg
Y29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQogICAgIHsKICAg
ICAgICAgYXV0byBwYXJhbWV0ZXJzID0gV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJh
bWV0ZXJzIHsgc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCB9
OwogICAgICAgICBpZiAoQmFja2VuZFR5cGU6OmNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShwYXJh
bWV0ZXJzKS5pc0VtcHR5KCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
Y3JlYXRlCiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q3JlYXRl
SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIubG9naWNhbFNpemUoKSwgaW1hZ2VCdWZmZXIucmVuZGVy
aW5nTW9kZSgpLCBpbWFnZUJ1ZmZlci5yZXNvbHV0aW9uU2NhbGUoKSwgaW1hZ2VCdWZmZXIuY29s
b3JTcGFjZSgpLCBpbWFnZUJ1ZmZlci5waXhlbEZvcm1hdCgpLCBpbWFnZUJ1ZmZlci5yZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIoKSksIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCksIElQ
Qzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5
KTsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkKK1JlZlB0cjxJbWFnZUJ1ZmZl
cj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVs
Rm9ybWF0IHBpeGVsRm9ybWF0KQogewogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZm
ZXI7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTUgKzQzLDE5
IEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCiBu
YW1lc3BhY2UgRGlzcGxheUxpc3QgewogY2xhc3MgRGlzcGxheUxpc3Q7CiBjbGFzcyBJdGVtOwog
fQorCitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7CiBjbGFzcyBGbG9hdFNpemU7CiBjbGFz
cyBQaXhlbEJ1ZmZlcjsKKwogZW51bSBjbGFzcyBBbHBoYVByZW11bHRpcGxpY2F0aW9uIDogdWlu
dDhfdDsKLWVudW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDogdWludDhfdDsKIGVudW0g
Y2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJvb2w7CisKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC05Miw3ICs5Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCiAgICAgLy8gTWVzc2FnZXMg
dG8gYmUgc2VudC4KLSAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlLCBX
ZWJDb3JlOjpQaXhlbEZvcm1hdCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5k
ZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0
aW9uQ29sb3JTcGFjZSYsIFdlYkNvcmU6OlBpeGVsRm9ybWF0KTsKICAgICBTdHJpbmcgZ2V0RGF0
YVVSTEZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJs
ZT4gcXVhbGl0eSwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uLCBXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIFZlY3Rvcjx1aW50OF90PiBnZXREYXRhRm9ySW1h
Z2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5
LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgZmx1c2hEaXNwbGF5TGlzdEFuZENvbW1pdChjb25z
dCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
Y29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcAkocmV2
aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9j
b2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNo
YXJlYWJsZU1hcHAKICAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKGJhY2tl
bmRTaXplLCBiYWNrZW5kU2l6ZSwgY2FjaGVkQ0dDb2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JT
cGFjZSksIElPU3VyZmFjZTo6Zm9ybWF0Rm9yUGl4ZWxGb3JtYXQocGFyYW1ldGVycy5waXhlbEZv
cm1hdCkpOworICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKGJhY2tlbmRTaXpl
LCBiYWNrZW5kU2l6ZSwgcGFyYW1ldGVycy5jb2xvclNwYWNlLCBJT1N1cmZhY2U6OmZvcm1hdEZv
clBpeGVsRm9ybWF0KHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQpKTsKICAgICBpZiAoIXN1cmZhY2Up
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC02NSw3ICs2NSw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCi0gICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0
KFdURk1vdmUoV1RGOjpnZXQ8TWFjaFNlbmRSaWdodD4oaGFuZGxlKSksIGNhY2hlZENHQ29sb3JT
cGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpKTsKKyAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZh
Y2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShXVEY6OmdldDxNYWNoU2VuZFJpZ2h0Piho
YW5kbGUpKSwgcGFyYW1ldGVycy5jb2xvclNwYWNlKTsKICAgICBpZiAoIXN1cmZhY2UpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEzICsyOCwxMiBAQAog
CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBIQVZFKEFWQVNTRVRSRUFERVIpCiAKLSNpbmNs
dWRlICJDb2xvclNwYWNlRGF0YS5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgi
CiAjaW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHlNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9BVkFzc2V0TUlNRVR5cGVDYWNoZS5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvQ29sb3JTcGFjZUNHLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9y
U3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lPU3VyZmFjZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvSW1hZ2VUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgpA
QCAtMTY4LDE0ICsxNjcsMTQgQEAgUGxhdGZvcm1JbWFnZVB0ciBSZW1vdGVJbWFnZURlY29kZXJB
VkY6OgogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIE9wdGlvbmFsPE1hY2hTZW5kUmln
aHQ+IHNlbmRSaWdodDsKLSAgICAgICAgQ29sb3JTcGFjZURhdGEgY29sb3JTcGFjZTsKKyAgICAg
ICAgT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlOwogICAgICAgICBp
ZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OkNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KG1f
aWRlbnRpZmllciwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6
OkNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4OjpSZXBseShzZW5kUmlnaHQsIGNvbG9yU3BhY2UpLCAw
KSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoIXNlbmRSaWdodCkKKyAgICAg
ICAgaWYgKCFzZW5kUmlnaHQgfHwgIWNvbG9yU3BhY2UpCiAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2Vu
ZFJpZ2h0KFdURk1vdmUoKnNlbmRSaWdodCksIGNvbG9yU3BhY2UuY2dDb2xvclNwYWNlLmdldCgp
KTsKKyAgICAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9t
U2VuZFJpZ2h0KFdURk1vdmUoKnNlbmRSaWdodCksIFdURk1vdmUoKmNvbG9yU3BhY2UpKTsKICAg
ICAgICAgaWYgKCFzdXJmYWNlKQogICAgICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvY29jb2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0JKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAg
UmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllclByaXZhdGVSZQogICAgIGlmICghc2VuZFJp
Z2h0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNv
cmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKCpzZW5kUmlnaHQpLCBz
UkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZh
Y2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZSgqc2VuZFJpZ2h0KSwgV2ViQ29yZTo6RGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgIGlmICghc3VyZmFjZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKQEAgLTkxLDcgKzkxLDcgQEAgUmV0YWluUHRyPENWUGl4ZWxCdWZm
ZXJSZWY+IE1lZGlhUGxheWVyUAogICAgIGlmICghc2VuZFJpZ2h0KQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRl
RnJvbVNlbmRSaWdodChXVEZNb3ZlKCpzZW5kUmlnaHQpLCBudWxscHRyKTsKKyAgICBhdXRvIHN1
cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZSgq
c2VuZFJpZ2h0KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAg
IGlmICghc3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbQkod29ya2luZyBjb3B5KQpAQCAtNjQ2LDcgKzY0Niw3IEBAIGlubGluZSBQREZQbHVn
aW46OlBERlBsdWdpbihXZWJGcmFtZSYgZnIKICAgICBbbV9jb250YWluZXJMYXllciBhZGRTdWJs
YXllcjptX3Njcm9sbENvcm5lckxheWVyLmdldCgpXTsKICAgICBpZiAoW21fcGRmTGF5ZXJDb250
cm9sbGVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0RGV2aWNlQ29sb3JTcGFjZTop
XSkgewogICAgICAgICBhdXRvIHZpZXcgPSBmcmFtZS5jb3JlRnJhbWUoKS0+dmlldygpOwotICAg
ICAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIgc2V0RGV2aWNlQ29sb3JTcGFjZTpzY3JlZW5Db2xv
clNwYWNlKHZpZXcpXTsKKyAgICAgICAgW21fcGRmTGF5ZXJDb250cm9sbGVyIHNldERldmljZUNv
bG9yU3BhY2U6c2NyZWVuQ29sb3JTcGFjZSh2aWV3KS5wbGF0Zm9ybUNvbG9yU3BhY2UoKV07CiAg
ICAgfQogCiAjaWYgSEFWRShJTkNSRU1FTlRBTF9QREZfQVBJUykKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9T
aGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTIgKzU3LDcgQEAgUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gY3JlYXRlU2hhcmVhYmxlQgogICAgIH0KIAogICAgIC8vIEZJWE1FOiBPbmx5IHNlbGVj
dCBFeHRlbmRlZENvbG9yIG9uIGltYWdlcyBrbm93biB0byBuZWVkIHdpZGUgZ2FtdXQuCi0gICAg
U2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGJpdG1hcENvbmZpZ3VyYXRpb247Ci0jaWYg
VVNFKENHKQotICAgIGJpdG1hcENvbmZpZ3VyYXRpb24uY29sb3JTcGFjZS5jZ0NvbG9yU3BhY2Ug
PSBzY3JlZW5Db2xvclNwYWNlKHJlbmRlckltYWdlLmZyYW1lKCkubWFpbkZyYW1lKCkudmlldygp
KTsKLSNlbmRpZgotCi0gICAgYXV0byBzaGFyZWRCaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZVNoYXJlYWJsZShJbnRTaXplKGJpdG1hcFNpemUpLCBiaXRtYXBDb25maWd1cmF0aW9uKTsK
KyAgICBhdXRvIHNoYXJlZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxl
KEludFNpemUoYml0bWFwU2l6ZSksIHsgc2NyZWVuQ29sb3JTcGFjZShyZW5kZXJJbWFnZS5mcmFt
ZSgpLm1haW5GcmFtZSgpLnZpZXcoKSkgfSk7CiAgICAgaWYgKCFzaGFyZWRCaXRtYXApCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyNyw3ICs5MjcsNyBAQCBXZWJD
b3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KiBXCiAKICNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9k
ZSwgUmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29u
c3QKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVJbWFnZUJ1ZmZl
cihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgUmVu
ZGVyaW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNv
bnN0CiB7CiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zaG91bGRVc2VSZW1vdGVS
ZW5kZXJpbmdGb3IocHVycG9zZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NDQsNyArMjQ0LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0
b3JGYWN0b3J5KiBkaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KCkgY29uc3QgZmluYWw7CiAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVy
PiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpS
ZW5kZXJpbmdNb2RlLCBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3Jt
YXQpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5n
TW9kZSwgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBj
b25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBXZWJDb3JlOjpQaXhlbEZvcm1h
dCkgY29uc3QgZmluYWw7CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIFJlZlB0cjxXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQg
aG9zdFdpbmRvd0Rpc3BsYXlJRCkgY29uc3QgZmluYWw7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFj
L1dlYkRyYWdDbGllbnRNYWMubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNjgsOSArNjgsNyBAQCB1c2luZyBEcmFnSW1hZ2UgPSBDR0ltYWdlUmVmOwog
CiBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY29udmVydERyYWdJbWFnZVRvQml0bWFw
KERyYWdJbWFnZSBpbWFnZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgRnJhbWUmIGZyYW1lKQogewot
ICAgIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBiaXRtYXBDb25maWd1cmF0aW9uOwot
ICAgIGJpdG1hcENvbmZpZ3VyYXRpb24uY29sb3JTcGFjZS5jZ0NvbG9yU3BhY2UgPSBzY3JlZW5D
b2xvclNwYWNlKGZyYW1lLm1haW5GcmFtZSgpLnZpZXcoKSk7Ci0gICAgYXV0byBiaXRtYXAgPSBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzaXplLCBiaXRtYXBDb25maWd1cmF0aW9u
KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNp
emUsIHsgc2NyZWVuQ29sb3JTcGFjZShmcmFtZS5tYWluRnJhbWUoKS52aWV3KCkpIH0pOwogICAg
IGlmICghYml0bWFwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCShyZXZpc2lvbiAyNzc5
MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCSh3
b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIERlY29kZXI7CiB9CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIERpc3Bs
YXlSZWZyZXNoTW9uaXRvcjsKIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVWaWV3OwpAQCAtNjAs
NyArNjEsNiBAQCBzdHJ1Y3QgVmlld3BvcnRBdHRyaWJ1dGVzOwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotc3RydWN0IENvbG9yU3BhY2VEYXRhOwogY2xhc3MgTGF5ZXJUcmVlSG9zdDsKIHN0cnVj
dCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IFdlYlByZWZlcmVuY2VzU3RvcmU7
CkBAIC0xODAsNyArMTgwLDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAv
LyBVc2VkIGJ5IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLgogICAgIHZpcnR1YWwgdm9p
ZCBzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldENv
bG9yU3BhY2UoY29uc3QgQ29sb3JTcGFjZURhdGEmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29sb3JTcGFjZShPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+KSB7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2Vi
Q29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21taXRUcmFu
c2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIHsgfQpJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2Fn
ZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJh
d2luZ0FyZWEubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw3ICszMSw3IEBAIG1lc3NhZ2VzIC0+IERyYXdpbmdBcmVhIE5vdFJlZkNvdW50ZWQg
ewogICAgIC8vIFVzZWQgYnkgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuCiAgICAgVXBk
YXRlR2VvbWV0cnkoV2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6ZSwgYm9vbCBmbHVzaFN5bmNocm9u
b3VzbHksIE1hY2hTZW5kUmlnaHQgZmVuY2VQb3J0KQogICAgIFNldERldmljZVNjYWxlRmFjdG9y
KGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQotICAgIFNldENvbG9yU3BhY2Uoc3RydWN0IFdlYktp
dDo6Q29sb3JTcGFjZURhdGEgY29sb3JTcGFjZSkKKyAgICBTZXRDb2xvclNwYWNlKHN0cnVjdCBP
cHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2UpCiAgICAg
U2V0Vmlld0V4cG9zZWRSZWN0KE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9z
ZWRSZWN0KQogCiAgICAgQWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6
OkZsb2F0UG9pbnQgb3JpZ2luKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTk4LDcgKzI1
OTgsNyBAQCBzdGF0aWMgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIHNuCiAgICAgU2hh
cmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CiAjaWYgVVNFKENHKQog
ICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zVXNlU2NyZWVuQ29sb3JTcGFjZSkKLSAg
ICAgICAgY29uZmlndXJhdGlvbi5jb2xvclNwYWNlLmNnQ29sb3JTcGFjZSA9IHNjcmVlbkNvbG9y
U3BhY2UocGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCkpOworICAgICAgICBjb25m
aWd1cmF0aW9uLmNvbG9yU3BhY2UgPSBzY3JlZW5Db2xvclNwYWNlKHBhZ2UuY29yZVBhZ2UoKS0+
bWFpbkZyYW1lKCkudmlldygpKTsKICNlbmRpZgogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwog
fQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgJKHJldmlzaW9u
IDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5OCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzdXNwZW5kUGFpbnRpbmcoKTsKICAgICB2b2lkIHJlc3VtZVBh
aW50aW5nKCk7CiAgICAgdm9pZCBzZXRMYXllckhvc3RpbmdNb2RlKExheWVySG9zdGluZ01vZGUp
IG92ZXJyaWRlOwotICAgIHZvaWQgc2V0Q29sb3JTcGFjZShjb25zdCBDb2xvclNwYWNlRGF0YSYp
IG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29sb3JTcGFjZShPcHRpb25hbDxXZWJDb3JlOjpEZXN0
aW5hdGlvbkNvbG9yU3BhY2U+KSBvdmVycmlkZTsKICAgICB2b2lkIGFkZEZlbmNlKGNvbnN0IFdU
Rjo6TWFjaFNlbmRSaWdodCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBhZGRUcmFuc2FjdGlvbkNh
bGxiYWNrSUQoQ2FsbGJhY2tJRCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIFBMQVRGT1JNKE1BQykKIAot
I2ltcG9ydCAiQ29sb3JTcGFjZURhdGEuaCIKICNpbXBvcnQgIkRpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hYy5oIgogI2ltcG9ydCAiRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJM
YXllckhvc3RpbmdDb250ZXh0LmgiCkBAIC00NSw2ICs0NCw3IEBACiAjaW1wb3J0IDxwYWwvc3Bp
L2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9EZWJ1Z1BhZ2VPdmVybGF5cy5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29u
dGV4dC5oPgpAQCAtOTEsNiArOTEsNyBAQCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6
VGlsZWRDb3JlCiAgICAgfSk7CiAKICAgICB1cGRhdGVMYXllckhvc3RpbmdDb250ZXh0KCk7Cisg
ICAgCiAgICAgc2V0Q29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpOwogCiAgICAgaWYg
KGF1dG8gdmlld0V4cG9zZWRSZWN0ID0gcGFyYW1ldGVycy52aWV3RXhwb3NlZFJlY3QpCkBAIC02
NTAsOSArNjUxLDkgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0TAog
ICAgIHNlbmQoTWVzc2FnZXM6OkRyYXdpbmdBcmVhUHJveHk6OlVwZGF0ZUFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdNb2RlKDAsIGxheWVyVHJlZUNvbnRleHQpKTsKIH0KIAotdm9pZCBUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6c2V0Q29sb3JTcGFjZShjb25zdCBDb2xvclNwYWNlRGF0YSYg
Y29sb3JTcGFjZSkKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldENvbG9y
U3BhY2UoT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNl
KQogewotICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0Q29sb3JTcGFjZShjb2xvclNwYWNl
LmNnQ29sb3JTcGFjZS5nZXQoKSk7CisgICAgbV9sYXllckhvc3RpbmdDb250ZXh0LT5zZXRDb2xv
clNwYWNlKGNvbG9yU3BhY2UgPyBjb2xvclNwYWNlLT5wbGF0Zm9ybUNvbG9yU3BhY2UoKSA6IG51
bGxwdHIpOwogfQogCiBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yPiBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Y3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFBs
YXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI3NzkyMCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA1LTIyICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBDb252ZXJ0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSBmcm9tIGFuIGVudW0gdG8gY2xhc3Mgd3JhcHBpbmcgYSBwbGF0Zm9ybSBjb2xvciBzcGFj
ZSAoQ0dDb2xvclNwYWNlUmVmIGZvciBDRyBwb3J0cywgZXRjLikKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjE0MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4
dE1lbnVDbGllbnQubW06CisgICAgICAgIChXZWJDb250ZXh0TWVudUNsaWVudDo6aW1hZ2VGb3JD
dXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKToKKyAgICAgICAgVXBkYXRlIGZvciBuZXcg
RGVzdGluYXRpb25Db2xvclNwYWNlIGNsYXNzLgorCiAyMDIxLTA1LTIyICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBMb2NrSG9sZGVyIHdpdGggTG9j
a2VyIGluIGxvY2FsIHZhcmlhYmxlcwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0J
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3
IEBACiAjaW1wb3J0IDxXZWJDb3JlL0JpdG1hcEltYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Nv
bnRleHRNZW51Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbnRleHRNZW51Q29udHJvbGxlci5oPgor
I2ltcG9ydCA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNv
cmUvRG9jdW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNv
cmUvRnJhbWVWaWV3Lmg+CkBAIC0yMTMsNyArMjE0LDcgQEAgUmV0YWluUHRyPE5TSW1hZ2U+IFdl
YkNvbnRleHRNZW51Q2xpZW50OgogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgLy8gVGhpcyBp
cyBlZmZlY3RpdmVseSBhIHNuYXBzaG90LCBhbmQgd2lsbCBiZSBwYWludGVkIGluIGFuIHVuYWNj
ZWxlcmF0ZWQgZmFzaGlvbiBpbiBsaW5lIHdpdGggRnJhbWVTbmFwc2hvdHRpbmcuCi0gICAgYXV0
byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJlY3Qu
c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuIG5pbDsKIApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjc3OTIwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDUtMjIgIFNhbSBXZWluaWcgIDx3
ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIENvbnZlcnQgRGVzdGluYXRpb25Db2xvclNwYWNl
IGZyb20gYW4gZW51bSB0byBjbGFzcyB3cmFwcGluZyBhIHBsYXRmb3JtIGNvbG9yIHNwYWNlIChD
R0NvbG9yU3BhY2VSZWYgZm9yIENHIHBvcnRzLCBldGMuKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorICAgICAgICBVcGF0ZSB0ZXN0IHRvIHVzZSBuZXcgRGVzdGluYXRpb25Db2xvclNwYWNlIHR5
cGUuCisKIDIwMjEtMDUtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzCklu
ZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5t
bQkocmV2aXNpb24gMjc3OTE5KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1BpeGVsRHVt
cFN1cHBvcnRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNiArMzgs
NyBAQAogI2ltcG9ydCA8Q29tbW9uQ3J5cHRvL0NvbW1vbkRpZ2VzdC5oPgogI2ltcG9ydCA8TW9i
aWxlQ29yZVNlcnZpY2VzL1VUQ29yZVR5cGVzLmg+CiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0
ekNvcmUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dENHLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0lPU3Vy
ZmFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgpAQCAtNzEsNyArNzIs
NyBAQCBSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0bWFwQ29udGV4CiAjZWxzZQogICAg
IFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0IHNuYXBzaG90Rm9ybWF0ID0gV2ViQ29yZTo6SU9T
dXJmYWNlOjpGb3JtYXQ6OkJHUkE7CiAjZW5kaWYKLSAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3Jl
OjpJT1N1cmZhY2U6OmNyZWF0ZShXZWJDb3JlOjpleHBhbmRlZEludFNpemUoc25hcHNob3RTaXpl
KSwgV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSwgc25hcHNob3RGb3JtYXQpOworICAgIGF1
dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlKFdlYkNvcmU6OmV4cGFuZGVk
SW50U2l6ZShzbmFwc2hvdFNpemUpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgc25hcHNob3RGb3JtYXQpOwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjZ0ltYWdl
ID0gc3VyZmFjZS0+Y3JlYXRlSW1hZ2UoKTsKIAogICAgIHZvaWQqIGJpdG1hcEJ1ZmZlciA9IG51
bGxwdHI7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxh
eUxpc3RUZXN0c0NHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIFVTRShDRykKIAorI2lu
Y2x1ZGUgPFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9EaXNwbGF5TGlzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RSZXBsYXllci5oPgpAQCAtNDYsOCArNDcsOCBA
QCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIFJlcGxheVdpdGhNaXNzaW5nCiB7CiAgICAgRmxvYXRS
ZWN0IGNvbnRleHRCb3VuZHMgeyAwLCAwLCBjb250ZXh0V2lkdGgsIGNvbnRleHRIZWlnaHQgfTsK
IAotICAgIGF1dG8gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5h
bWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKLSAgICBhdXRvIGNnQ29udGV4dCA9IGFkb3B0Q0YoQ0dC
aXRtYXBDb250ZXh0Q3JlYXRlKG51bGxwdHIsIGNvbnRleHRXaWR0aCwgY29udGV4dEhlaWdodCwg
OCwgNCAqIGNvbnRleHRXaWR0aCwgY29sb3JTcGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11
bHRpcGxpZWRMYXN0KSk7CisgICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCk7CisgICAgYXV0byBjZ0NvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4
dENyZWF0ZShudWxscHRyLCBjb250ZXh0V2lkdGgsIGNvbnRleHRIZWlnaHQsIDgsIDQgKiBjb250
ZXh0V2lkdGgsIGNvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCksIGtDR0ltYWdlQWxwaGFQ
cmVtdWx0aXBsaWVkTGFzdCkpOwogICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0IHsgY2dDb250
ZXh0LmdldCgpIH07CiAKICAgICBhdXRvIGltYWdlQnVmZmVySWRlbnRpZmllciA9IFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKQEAgLTY5LDcgKzcwLDcgQEAgVEVTVChE
aXNwbGF5TGlzdFRlc3RzLCBSZXBsYXlXaXRoTWlzc2luZwogICAgIH0KIAogICAgIHsKLSAgICAg
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoeyAxMDAsIDEwMCB9LCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKHsgMTAwLCAxMDAgfSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgSW1hZ2VCdWZm
ZXJIYXNoTWFwIGltYWdlQnVmZmVyTWFwOwogICAgICAgICBpbWFnZUJ1ZmZlck1hcC5zZXQoaW1h
Z2VCdWZmZXJJZGVudGlmaWVyLCBpbWFnZUJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429428</attachid>
            <date>2021-05-22 15:33:01 -0700</date>
            <delta_ts>2021-05-22 15:49:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226143-20210522153300.patch</filename>
            <type>text/plain</type>
            <size>272026</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5NSBAQAorMjAyMS0wNS0yMiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdyYXBwaW5nIGEgcGxhdGZvcm0gY29sb3Ig
c3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0Yy4pCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxNDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIGVudW1lcmF0aW9uIGJh
c2VkIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB3aXRoIGEgc3RydWN0IHdyYXBwaW5nCisgICAgICAg
IGEgcGxhdGZvcm0gY29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0
Yy4pLiBGb3IgcG9ydHMKKyAgICAgICAgdGhhdCBkb24ndCBoYXZlIGEgcGxhdGZvcm0gbGV2ZWwg
Y29sb3Igc3BhY2UgdHlwZSwgYSBidWlsdGluIFBsYXRmb3JtQ29sb3JTcGFjZQorICAgICAgICB0
eXBlIGlzIHByb3ZpZGVkIHRoYXQgaXMganVzdCB0aGUgb2xkIGVudW0gcmVuYW1lZCB0byBQbGF0
Zm9ybUNvbG9yU3BhY2U6Ok5hbWUuCisKKyAgICAgICAgVGhlIGdvYWwgb2YgdGhpcyBjaGFuZ2Ug
aXMgdG8gdW5pZnkgdGhlIGN1cnJlbnRseSBiaWZyYWNhdGVkIGNvbmNlcHQgb2YgYW4KKyAgICAg
ICAgSW1hZ2VCdWZmZXIncyBjb2xvciBzcGFjZSwgd2hpY2ggcHJldmlvc2x5IGNvdWxkIGVpdGhl
ciBiZSBiYXNlZCBvbiB0aGUgCisgICAgICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgYW5kIHJl
ZmxlY3RlZCBpbiB0aGUgY29sb3JTcGFjZSgpIG1lbWJlciBmdW5jdGlvbiwKKyAgICAgICAgb3Ig
KGZvciBDRyBwb3J0cykgYmFzZWQgb24gYSBDR0NvbG9yU3BhY2VSZWYsIHdpdGggdGhlIGNvbG9y
U3BhY2UoKSBmdW5jdGlvbgorICAgICAgICByZXR1cm5pbmcgc1JHQiBldmVuIGlmIHRoZSBJbWFn
ZUJ1ZmZlciB3YXMgbm90LiAKKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICog
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpD
bGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXJ0d29ya0ltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogU291cmNl
cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBJbWFnZUJpdG1hcCk6CisgICAgICAgIChXZWJD
b3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEltYWdlQml0bWFwKToKKyAgICAgICAgKiBjc3Mv
Q1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXJJbWFn
ZVZhbHVlOjppbWFnZSk6CisgICAgICAgICogaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludENhbnZhczo6Y29waWVkSW1hZ2UgY29uc3QpOgor
ICAgICAgICAqIGh0bWwvQ3VzdG9tUGFpbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
dXN0b21QYWludEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6dG9NZWRp
YVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1h
Z2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGVCdWZmZXJGb3JQYWludGlu
ZyBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAgICog
aHRtbC9JbWFnZUJpdG1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJpdG1hcDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCaXRtYXA6OmNyZWF0ZVBy
b21pc2UpOgorICAgICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Y29tbWl0VG9QbGFjZWhvbGRlckNhbnZhcyk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojpjb2xvclNwYWNlIGNvbnN0KToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0OjpzZXRPdXRwdXRCaXRtYXApOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnRvRGVzdGluYXRpb25Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvUHJlZGVmaW5l
ZENvbG9yU3BhY2UpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNl
Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1
ZmZlckNhY2hlOjppbWFnZUJ1ZmZlcik6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbkltYWdlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6YnVpbGRBcnJheUZvckNhbnZhc1BhdHRlcm4p
OgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6
Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAg
ICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hv
dHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RGcmFtZVJlY3RXaXRoQ2xpcCk6
CisgICAgICAgICogcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNhbXBsZUNvbG9yKToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9Ib3N0V2luZG93Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1Db2xv
clNwYWNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db2xvclNwYWNlOjpn
ZXQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2NyZWVuUHJvcGVydGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVu
UHJvcGVydGllczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVlbkRhdGE6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5EYXRhOjpkZWNvZGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3UGF0dGVybik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29s
b3I6OnRvQ29sb3JDb21wb25lbnRzSW5Db2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJDb2xvckNvbXBvbmVudHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yU3BhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25j
cmV0ZUltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVy
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRl
ZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpk
cmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xv
clNwYWNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IpOgorICAgICAgICAoV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5l
YXJTUkdCKToKKyAgICAgICAgKFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxh
eVAzKToKKyAgICAgICAgKFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGVzdGluYXRp
b25Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAgICAo
V2ViQ29yZTo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OnBsYXRmb3JtQ29sb3JT
cGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OmRl
Y29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJCYWNrZW5kOjpnZXRQaXhlbEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OnB1dFBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyQmFja2VuZDo6dHJhbnNmb3JtQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbG9yU3BhY2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1BpeGVsQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6
ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckNvbnZlcnNp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZVZJbWFnZUNHSW1hZ2VGb3JtYXQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1hdDo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cmFuc2Zl
ckJHUkFQaXhlbEJ1ZmZlclRvSU9TdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZVZp
ZGVvU2FtcGxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGU6
OlJlbW90ZVZpZGVvU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxl
OjpzdXJmYWNlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRl
b1NhbXBsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6Z2V0U2NyYXRjaEJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRp
bGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpibHVyU2hhZG93QnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdTaGFkb3dMYXllcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBh
aW50UmVzdWx0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyb0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0Jh
Y2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQ29sb3JDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9DR0NvbXBh
dGlibGVDb21wb25lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNHQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6cGxhdGZvcm1Db252ZXJ0Q29sb3JDb21wb25lbnRzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaDoKKyAgICAgICAgKFdlYkNvcmU6
OmNhY2hlZENHQ29sb3JTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdXJmYWNlTWF0
Y2hlc1BhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlUG9vbDo6dGFrZVN1
cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjb3B5Q0dJbWFnZUZv
ckVuY29kaW5nIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6
c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJC
YWNraW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW06CisgICAgICAg
IChXZWJDb3JlOjpJT1N1cmZhY2U6OnN1cmZhY2VGcm9tUG9vbCk6CisgICAgICAgIChXZWJDb3Jl
OjpJT1N1cmZhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0
ZUZyb21TZW5kUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9t
U3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21JbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21QaXhlbEJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OklPU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJT1N1cmZhY2U6OmVuc3VyZVBsYXRmb3JtQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJ
T1N1cmZhY2U6Om1pZ3JhdGVDb2xvclNwYWNlVG9Qcm9wZXJ0aWVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6cmVuZGVy
VG9JbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFu
c2ZlclNlc3Npb25WVC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlVHJhbnNmZXJTZXNzaW9u
VlQ6OmNyZWF0ZVBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9Q
aXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVy
Q29uZm9ybWVyQ1Y6OmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyOjpjcmVhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OmRlc3Ryb3kp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5n
Q29tbWFuZHM6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczo6Y29sb3JTcGFjZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5nQ29t
bWFuZHM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVn
aW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6R2V0UGl4ZWxCdWZmZXI6OkdldFBpeGVsQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpHZXRQaXhlbEJ1ZmZlcjo6b3V0cHV0Rm9ybWF0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpHZXRQaXhlbEJ1ZmZlcjo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpHZXRQaXhlbEJ1ZmZlcjo6ZGVjb2Rl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNs
aXBUb0RyYXdpbmdDb21tYW5kcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlz
cGxhY2VtZW50TWFwOjpzZXRSZXN1bHRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRVRpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVs
QnVmZmVyVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29u
dmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVm
ZmVjdDo6Y29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0aW5hdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRQaXhlbEJ1ZmZlclRvRGVzdGluYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpyZXF1aXJlc1BpeGVsQnVmZmVy
Q29sb3JTcGFjZUNvbnZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojp0
cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpv
cGVyYXRpbmdDb2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6c2V0T3BlcmF0aW5nQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OnJlc3VsdENvbG9yU3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZm
ZWN0OjpzZXRSZXN1bHRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL1NvdXJjZUdyYXBoaWMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6
OlNvdXJjZUdyYXBoaWMpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5JT1MubW06CisgICAgICAgIChXZWJDb3JlOjpzY3Jl
ZW5Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RTY3JlZW5Qcm9wZXJ0aWVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5NYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpjb2xsZWN0U2NyZWVuUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpz
Y3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50
b0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNw
bGF5Q2FwdHVyZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5EaXNwbGF5Q2FwdHVy
ZXJNYWM6OmNyZWF0ZURpc3BsYXlTdHJlYW0pOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2U6OmltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9wbGF5
c3RhdGlvbi9QbGF0Zm9ybVNjcmVlblBsYXlTdGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNjcmVlbkNvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVl
bldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS93cGUvUGxhdGZvcm1TY3JlZW5XUEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oOgor
ICAgICAgICAoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YTo6ZGVjb2Rl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZpbHRlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
RmlsdGVyOjpidWlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmFsbG9jYXRlQmFj
a2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjphcHBseSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnBhdHRlcm5Gb3JEZXNjcmlwdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50U3lz
dGVtUHJldmlld0JhZGdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRQcm9ncmVzc0Jhcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
aGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VDbGlwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291
cmNlQ2xpcHBlcjo6YXBwbHlDbGlwcGluZ1RvQ29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1hc2tBbmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6ZHJhd0NvbnRlbnRJ
bnRvTWFza0ltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
TWFza2VyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRl
cm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpjcmVh
dGVUaWxlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5n
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVh
dGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0Ojpi
dWZmZXJGb3JlZ3JvdW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0Nv
bnRleHQuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUpOgorCiAyMDIxLTA1LTIyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiBDb21wb25lbnQgYXQgaW5kZXgg
MSBpcyAxLjAwMDAwMCBhbmQgaXMgZ3JlYXRlciB0aGFuIHRoZSBhbGxvd2VkIG1heGltdW0gMS4w
MDAwMDAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTE5Nyw2ICsxMTk3LDcg
QEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Rhc2hB
cnJheS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGVjb2RpbmdPcHRpb25zLmgKKyAgICBwbGF0
Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxh
eVJlZnJlc2hNb25pdG9yQ2xpZW50LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVm
cmVzaE1vbml0b3JGYWN0b3J5LmgKQEAgLTEyOTMsNiArMTI5NCw3IEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZl
ci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1BpeGVsRm9ybWF0LmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bUNvbG9yU3BhY2UuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE5
NTAsNiArMTk1MCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhU
ZXh0Q29udHJvbGxlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBi
b2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NE
YXRhU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2wKIAogICAgICAgICBhdXRvIGJpdG1hcElt
YWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgICAgICBiaXRtYXBJbWFnZS0+c2V0RGF0
YShXVEZNb3ZlKGJ1ZmZlclRvU2FuaXRpemUpLCB0cnVlKTsKLSAgICAgICAgYXV0byBpbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
LCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
ICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikgewogICAgICAgICAgICAgbV9kYXRhID0geyBudWxs
U3RyaW5nKCkgfTsKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1l
dGFkYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCB2b2lkIEFydHdvcmtJ
bWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyVG9TYW5pdGl6ZSA9IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBhdXRv
IGJpdG1hcEltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIGJpdG1hcEltYWdlLT5z
ZXREYXRhKFdURk1vdmUoYnVmZmVyVG9TYW5pdGl6ZSksIHRydWUpOwotICAgIGF1dG8gaW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJpdG1hcEltYWdlLT5zaXplKCksIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAg
ICBpZiAoIWltYWdlQnVmZmVyKSB7CiAgICAgICAgIG1fY2FsbGJhY2sobnVsbHB0cik7CiAgICAg
ICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjc3OTIwKQorKysg
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEz
IEBACisyMDIxLTA1LTIyICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAg
ICBDb252ZXJ0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBmcm9tIGFuIGVudW0gdG8gY2xhc3Mgd3Jh
cHBpbmcgYSBwbGF0Zm9ybSBjb2xvciBzcGFjZSAoQ0dDb2xvclNwYWNlUmVmIGZvciBDRyBwb3J0
cywgZXRjLikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyNjE0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDoKKyAgICAgICAgQWRkIGFkZGlvbmFsIFNQ
SSBmb3Igd29ya2luZyB3aXRoIENHQ29sb3JTcGFjZVJlZnMuCisKIDIwMjEtMDUtMjEgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBZG9w
dCBRTEl0ZW0gaW4gV0tJbWFnZUV4dHJhY3Rpb25QcmV2aWV3Q29udHJvbGxlcgpJbmRleDogU291
cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGlj
c1NQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDIsNiArMjQyLDcgQEAgdHlwZWRlZiB2b2lkICgq
Q0dTTm90aWZ5UHJvY1B0cikoQ0dTTm90aQogCiBXVEZfRVhURVJOX0NfQkVHSU4KIAorYm9vbCBD
R0NvbG9yVHJhbnNmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyhDR0NvbG9yVHJhbnNmb3JtUmVm
LCBDR0NvbG9yU3BhY2VSZWYsIENHQ29sb3JSZW5kZXJpbmdJbnRlbnQsIGNvbnN0IENHRmxvYXQg
c3JjQ29tcG9uZW50c1tdLCBDR0Zsb2F0IGRzdENvbXBvbmVudHNbXSk7CiBDR0NvbG9yUmVmIENH
Q29sb3JUcmFuc2Zvcm1Db252ZXJ0Q29sb3IoQ0dDb2xvclRyYW5zZm9ybVJlZiwgQ0dDb2xvclJl
ZiwgQ0dDb2xvclJlbmRlcmluZ0ludGVudCk7CiBDR0NvbG9yVHJhbnNmb3JtUmVmIENHQ29sb3JU
cmFuc2Zvcm1DcmVhdGUoQ0dDb2xvclNwYWNlUmVmLCBDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRl
cyk7CiAKQEAgLTI5MSw2ICsyOTIsOCBAQCBDR1N0eWxlUmVmIENHR1N0YXRlR2V0U3R5bGUoQ0dH
U3RhdGVSZWYpCiBDR1N0eWxlVHlwZSBDR1N0eWxlR2V0VHlwZShDR1N0eWxlUmVmKTsKIGNvbnN0
IHZvaWQgKkNHU3R5bGVHZXREYXRhKENHU3R5bGVSZWYpOwogQ0dDb2xvclJlZiBDR1N0eWxlR2V0
Q29sb3IoQ0dTdHlsZVJlZik7Citib29sIENHQ29sb3JTcGFjZUVxdWFsVG9Db2xvclNwYWNlKENH
Q29sb3JTcGFjZVJlZiwgQ0dDb2xvclNwYWNlUmVmKTsKK0NGU3RyaW5nUmVmIENHQ29sb3JTcGFj
ZUNvcHlJQ0NQcm9maWxlRGVzY3JpcHRpb24oQ0dDb2xvclNwYWNlUmVmKTsKIAogI2lmIEhBVkUo
Q0dQQVRIX0dFVF9OVU1CRVJfT0ZfRUxFTUVOVFMpCiBzaXplX3QgQ0dQYXRoR2V0TnVtYmVyT2ZF
bGVtZW50cyhDR1BhdGhSZWYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0zOTk2LDYgKzM5OTYsNyBAQAogCQlCQzIzRjBEQjBEQUZGNEE0MDA5RkRDOTEgLyogR2VuZXJh
dGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMjNGMERBMERBRkY0QTQwMDlGREM5MSAvKiBHZW5lcmF0ZWRJbWFnZS5oICovOyB9OwogCQlC
QzI3NEIyRjE0MEVCRUIyMDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI3NEIyRTE0MEVC
RUIyMDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggKi87IH07CiAJCUJDMkNC
RjRFMTQwRjFBQkQwMDM4NzlCRSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJDQkY0QjE0MEYxQTY1MDAzODc5
QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oICovOyB9OworCQlCQzJDQ0ExMDI2NTVEREIyMDBC
OEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJDQ0EwRTI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGlu
YXRpb25Db2xvclNwYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQkMzMDVDN0EwQzA3NkJCMzAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzA1
Qzc4MEMwNzZCQjMwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50LmggKi87IH07CiAJCUJD
MzQ4QkQ0MERCN0Y4MDQwMDRBQkFCOSAvKiBKU1hNTEh0dHBSZXF1ZXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzM0OEJEMjBEQjdGODA0MDA0QUJB
QjkgLyogSlNYTUxIdHRwUmVxdWVzdC5oICovOyB9OwogCQlCQzM0OEJENDBEQjdGODA0MDA0QUJB
QkEgLyogV2ViQ29yZUpTQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDMzQ4QkQyMERCN0Y4MDQwMDRBQkFCQSAvKiBXZWJDb3JlSlNCdWls
dGlucy5oICovOyB9OwpAQCAtNDAwNyw2ICs0MDA4LDcgQEAKIAkJQkMzQkU5OTkwRTlDMUU1RDAw
ODM1NTg4IC8qIFJlbmRlclNjcm9sbGJhclRoZW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzNCRTk5ODBFOUMxRTVEMDA4MzU1ODggLyogUmVuZGVy
U2Nyb2xsYmFyVGhlbWUuaCAqLzsgfTsKIAkJQkMzQzM5QjcwQzBEM0Q4RDAwNUY0RDdBIC8qIEpT
TWVkaWFMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzNDMzlCNTBDMEQzRDhEMDA1RjREN0EgLyogSlNNZWRpYUxpc3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzNEODVCQzFDMEUyRTdBMDBE
M0I2MTAgLyogSlNIVE1MUGljdHVyZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODA4QjEzMUMwRTJCMzUwMDY2RkQ2QiAvKiBKU0hUTUxQ
aWN0dXJlRWxlbWVudC5oICovOyB9OworCQlCQzNFNjI0MzI2NTk3OTE4MDA1NDhBQ0QgLyogUGxh
dGZvcm1Db2xvclNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzNFNjI0MjI2NTk3OTE3MDA1NDhBQ0QgLyogUGxhdGZvcm1Db2xvclNwYWNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM0MzY4
RTgwQzIyNkUzMjAwNUVGQjVGIC8qIFJlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDNDM2OEU3MEMyMjZFMzIwMDVFRkI1RiAvKiBSZWN0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM0NkMxRkQw
QzBEREM4RjAwMjBDRkMzIC8qIEpTQ1NTRm9udEZhY2VSdWxlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzQ2QzFGMzBDMEREQzhGMDAyMENGQzMgLyog
SlNDU1NGb250RmFjZVJ1bGUuaCAqLzsgfTsKIAkJQkM0NkMxRkYwQzBEREM4RjAwMjBDRkMzIC8q
IEpTQ1NTSW1wb3J0UnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkM0NkMxRjUwQzBEREM4RjAwMjBDRkMzIC8qIEpTQ1NTSW1wb3J0UnVsZS5oICov
OyB9OwpAQCAtMTQxMzQsNiArMTQxMzYsOCBAQAogCQlCQzI5OTM1QzE3QTFERDU4MDBCQ0U4ODAg
LyogQ29sb3JJbnB1dFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ29sb3JJbnB1dFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJD
QkY0QjE0MEYxQTY1MDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMQ29udGV4dEV2ZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDMkNCRjdBMTQwRjFENTgwMDM4NzlCRSAvKiBKU1dlYkdMQ29u
dGV4dEV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2Vi
R0xDb250ZXh0RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJDQ0Ew
RTI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCQzJDQ0EwRjI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDMkVENTU0MEM2QjlCRDMwMDkyMEJGRiAvKiBKU0VsZW1lbnRD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFbGVtZW50
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyRUQ2QkIwQzZCRDJG
MDAwOTIwQkZGIC8qIEpTQXR0ckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0F0dHJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQzMwNUM3NzBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MT2JqZWN0RWxlbWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDE1Nyw2ICsxNDE2MSw3IEBACiAJ
CUJDM0JFOUFBMEU5QzI0MjAwMDgzNTU4OCAvKiBSZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNjcm9sbGJhclBhcnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzNDMzlCNDBDMEQzRDhEMDA1RjREN0Eg
LyogSlNNZWRpYUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTTWVkaWFMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzQzM5QjUw
QzBEM0Q4RDAwNUY0RDdBIC8qIEpTTWVkaWFMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU01lZGlhTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
QzNFNjI0MjI2NTk3OTE3MDA1NDhBQ0QgLyogUGxhdGZvcm1Db2xvclNwYWNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtQ29sb3JTcGFjZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQzQzNjhFNzBDMjI2RTMyMDA1RUZCNUYgLyogUmVjdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVjdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQzQ2QzFFRDBDMEREQkRGMDAyMENGQzMgLyogSlNDU1NSdWxlQ3VzdG9t
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NTU1J1bGVDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzQ2QzFGMjBDMEREQzhGMDAy
MENGQzMgLyogSlNDU1NGb250RmFjZVJ1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTQ1NTRm9udEZhY2VSdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTI2OTI1LDYgKzI2OTMwLDggQEAKIAkJCQkyRDJGQzA1NTE0NjBDRDZGMDAyNjM2
MzMgLyogQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaCAqLywKIAkJCQlBOENCNDEwMjBFODVCOEE1
MDAzMkM0RjAgLyogRGFzaEFycmF5LmggKi8sCiAJCQkJNTU1MTMwMDAxRTdDQ0NDQTAwQTY5RTM4
IC8qIERlY29kaW5nT3B0aW9ucy5oICovLAorCQkJCUJDMkNDQTBGMjY1NUREQjIwMEI4QzAzNSAv
KiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuY3BwICovLAorCQkJCUJDMkNDQTBFMjY1NUREQjIwMEI4
QzAzNSAvKiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCAqLywKIAkJCQk0OUZDN0E0RjE0NDRBRjVG
MDBBNUQ4NjQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCAqLywKIAkJCQk0OUFGMkQ2ODE0
NDM1RDA1MDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmggKi8sCiAJCQkJMkQyOUVD
QzExOTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5jcHAgKi8s
CkBAIC0yNzEwMSw2ICsyNzEwOCw3IEBACiAJCQkJQkM2MzVFOEIyNjRDMkNBRTAwMEVGMzNBIC8q
IFBpeGVsQnVmZmVyRm9ybWF0LmggKi8sCiAJCQkJQkM2MzVFOTAyNjRDNDY5RjAwMEVGMzNBIC8q
IFBpeGVsRm9ybWF0LmNwcCAqLywKIAkJCQlCQ0E1NTkxMjI2M0RCRDc5MDA3RjE5QjMgLyogUGl4
ZWxGb3JtYXQuaCAqLywKKwkJCQlCQzNFNjI0MjI2NTk3OTE3MDA1NDhBQ0QgLyogUGxhdGZvcm1D
b2xvclNwYWNlLmggKi8sCiAJCQkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3Jt
SW1hZ2UuaCAqLywKIAkJCQk3MkJBQzNBNjIzRTE3MzI4MDA4RDc0MUMgLyogUGxhdGZvcm1JbWFn
ZUJ1ZmZlci5oICovLAogCQkJCTU1MDY0MEFEMjQwNzU2REEwMEFBRTA0NSAvKiBQbGF0Zm9ybUlt
YWdlQnVmZmVyQmFja2VuZC5oICovLApAQCAtMzIyMzAsNiArMzIyMzgsNyBAQAogCQkJCTk0Nzk0
OTI1MUUwMzA4QUYwMDAxOEQ4NSAvKiBEZXByZWNhdGVkQ1NTT01WYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTQ3OTQ5M0QxRTA0NjNCNjAwMDE4RDg1IC8qIERlcHJlY2F0ZWRDU1NPTVZhbHVl
TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NCRDEyOUUxRjk4QjkwRTAwMTI3RDI5IC8qIERl
cHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMyQ0NBMTAyNjU1
RERCMjAwQjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDExMjIzQzUyNjAzNTY3RDAwQjBBMEI2IC8qIERldGFjaGVkUlRDRGF0YUNoYW5uZWwuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3QzlBQkY5MTM1N0EzQkYwMEY1NTAzRiAvKiBEZXRhaWxzTWFy
a2VyQ29udHJvbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFFRDc3OEQxQkUzMjk0MDAwREMxNzkx
IC8qIERldmljZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjI4MSw2ICszMjI5MCw3IEBACiAJCQkJ
MUNFOEQxMjcyNjE4NUMwRTAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZp
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ1MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNw
bGF5TGlzdEl0ZW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDM3N0Q1NzI1NTFDOUM2MDA4MEFC
RkUgLyogRGlzcGxheUxpc3RJdGVtVHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMzRTYyNDMy
NjU5NzkxODAwNTQ4QUNEIC8qIFBsYXRmb3JtQ29sb3JTcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUNFOEQxMkUyNjE4NjFDNDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRTVGQkQ3MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJl
Y29yZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1RkJEOTFDM0RENTFFMDAwN0EyQ0EgLyog
RGlzcGxheUxpc3RSZXBsYXllci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwODIsNyArMTA4Miw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBQaXhlbEJ1ZmZlckZv
cm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhl
bEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgICAgICBQ
aXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0
aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
IH07CiAgICAgICAgIGNvbnN0IEludFNpemUmIGxvZ2ljYWxTaXplID0gYnVmZmVyLT5sb2dpY2Fs
U2l6ZSgpOwogICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gYnVmZmVyLT5nZXRQaXhlbEJ1ZmZl
cihmb3JtYXQsIHsgSW50UG9pbnQ6Onplcm8oKSwgbG9naWNhbFNpemUgfSk7CiAgICAgICAgIGlm
ICghcGl4ZWxCdWZmZXIpIHsKQEAgLTMxODcsNyArMzE4Nyw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgUGl4ZWxCdWZmZXJG
b3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4
ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICAgICAg
UGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVs
dGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSB9OwogICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShm
b3JtYXQsIGltYWdlRGF0YVNpemUsIGFycmF5QnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwogICAg
ICAgICBpZiAoIXBpeGVsQnVmZmVyKSB7CiAgICAgICAgICAgICBmYWlsKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExNiw3ICsxMTYsNyBAQCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFs
dWU6OmltYWdlCiAKICAgICAvLyBUcmFuc2Zvcm0gSW1hZ2UgaW50byBJbWFnZUJ1ZmZlci4KICAg
ICAvLyBGSVhNRSAoMTQ5NDI0KTogVGhpcyBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlv
bmFsbHkgdW5hY2NlbGVyYXRlZC4KLSAgICBhdXRvIHRleHR1cmUgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIHRleHR1cmUgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAg
IGlmICghdGV4dHVyZSkKICAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCShyZXZpc2lvbiAy
Nzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTIsNyArOTIsNyBAQCBJbWFnZSogQ3VzdG9tUGFpbnRDYW52YXM6OmNv
cGllZEltYWdlKCkgCiAgICAgaWYgKCF3aWR0aCgpIHx8ICFoZWlnaHQoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBtX2NvcGllZEJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCwgbnVsbHB0cik7CisgICAgbV9jb3BpZWRC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCwgbnVsbHB0cik7CiAgICAgaWYgKCFtX2NvcGllZEJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRJbWFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludEltYWdlLmNw
cAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludElt
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgQ3VzdG9tUGFp
bnRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGgKICAgICBhZGp1c3RlZFBhdHRlcm5DVE0uc2NhbGUo
MS4wIC8geFNjYWxlLCAxLjAgLyB5U2NhbGUpOwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZSh4
U2NhbGUsIHlTY2FsZSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKGFkanVzdGVkU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
LCBkZXN0Q29udGV4dCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBkZXN0Q29udGV4dCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybjsKICAgICBk
b0N1c3RvbVBhaW50KGJ1ZmZlci0+Y29udGV4dCgpLCBhZGp1c3RlZFNpemUpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MjUsNyArODI1LDcgQEAgUmVmUHRyPE1lZGlhU2FtcGxlPiBIVE1MQ2FudmFzRWxl
bWVudDo6dAogICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBsaWtlbHkgYmUgb3B0aW1pemVkIHF1aXRl
IGEgYml0LCBlc3BlY2lhbGx5IGluIHRoZSBjYXNlcyB3aGVyZQogICAgIC8vIHRoZSBJbWFnZUJ1
ZmZlciBpcyBiYWNrZWQgYnkgR1BVIG1lbW9yeSBhbHJlYWR5IGFuZC9vciBpcyBpbiB0aGUgR1BV
IHByb2Nlc3MgYnkKICAgICAvLyBzcGVjaWFsaXppbmcgdG9NZWRpYVNhbXBsZSgpIGluIEltYWdl
QnVmZmVyQmFja2VuZCB0byBub3QgdXNlIGdldFBpeGVsQnVmZmVyKCkuCi0gICAgYXV0byBwaXhl
bEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5nZXRQaXhlbEJ1ZmZlcih7IEFscGhhUHJlbXVsdGlwbGlj
YXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IgfSwgeyB7IH0sIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpIH0pOwor
ICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoeyBBbHBo
YVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfSwgeyB7IH0sIGltYWdlQnVmZmVyLT5sb2dp
Y2FsU2l6ZSgpIH0pOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCkBAIC05NTUsNyArOTU1LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRl
SW1hZ2VCdWZmZQogICAgIGF1dG8gW2NvbG9yU3BhY2UsIHBpeGVsRm9ybWF0XSA9IFsmXSB7CiAg
ICAgICAgIGlmIChtX2NvbnRleHQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpwYWlyIHsgbV9j
b250ZXh0LT5jb2xvclNwYWNlKCksIG1fY29udGV4dC0+cGl4ZWxGb3JtYXQoKSB9OwotICAgICAg
ICByZXR1cm4gc3RkOjpwYWlyIHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZv
cm1hdDo6QkdSQTggfTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6cGFpciB7IERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTggfTsKICAgICB9KCk7CiAKICAgICBz
ZXRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgcmVuZGVyaW5nTW9kZSwg
dXNlRGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1cnBvc2U6OkNhbnZhcywgMSwgY29sb3JTcGFjZSwg
cGl4ZWxGb3JtYXQsIGhvc3RXaW5kb3cpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDcgKzI4MSw3IEBA
IHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6bWVkaWFQbGF5ZXJGaXJzdFYKICAgICAgICAgcmVuZGVy
ZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSFRNTFZp
ZGVvRWxlbWVudDo6Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29uc3QKK1JlZlB0cjxJbWFnZUJ1ZmZl
cj4gSFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CiB7
CiAgICAgYXV0byogaG9zdFdpbmRvdyA9IGRvY3VtZW50KCkudmlldygpICYmIGRvY3VtZW50KCku
dmlldygpLT5yb290KCkgPyBkb2N1bWVudCgpLnZpZXcoKS0+cm9vdCgpLT5ob3N0V2luZG93KCkg
OiBudWxscHRyOwogICAgIGF1dG8gc2hvdWxkVXNlRGlzcGxheUxpc3QgPSBkb2N1bWVudCgpLnNl
dHRpbmdzKCkuZGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZCgpID8gU2hvdWxkVXNlRGlzcGxheUxp
c3Q6OlllcyA6IFNob3VsZFVzZURpc3BsYXlMaXN0OjpObzsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTIgKzMzLDEy
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNl
OwogY2xhc3MgSFRNTEltYWdlTG9hZGVyOwogY2xhc3MgSW1hZ2VCdWZmZXI7CiBjbGFzcyBSZW5k
ZXJWaWRlbzsKIGNsYXNzIFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlcjsKIAotZW51bSBjbGFzcyBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgOiB1aW50OF90OwogZW51bSBjbGFzcyBQaXhlbEZvcm1hdCA6
IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOwogCkBAIC03Miw3ICs3
Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCkgb3ZlcnJp
ZGU7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQnVmZmVyRm9yUGFp
bnRpbmcoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgRGVzdGluYXRpb25Db2xvclNw
YWNlLCBQaXhlbEZvcm1hdCkgY29uc3Q7CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVC
dWZmZXJGb3JQYWludGluZyhjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCkgY29uc3Q7CiAKICAgICAvLyBVc2Vk
IGJ5IGNhbnZhcyB0byBnYWluIHJhdyBwaXhlbCBhY2Nlc3MKICAgICB2b2lkIHBhaW50Q3VycmVu
dEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCwx
MiArODQsMTIgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJpdG1hcDo6Y3JlYXRlSQogICAg
ICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25D
b250ZXh0KTsKICAgICAgICAgaWYgKGRvY3VtZW50LnZpZXcoKSAmJiBkb2N1bWVudC52aWV3KCkt
PnJvb3QoKSkgewogICAgICAgICAgICAgYXV0byBob3N0V2luZG93ID0gZG9jdW1lbnQudmlldygp
LT5yb290KCktPmhvc3RXaW5kb3coKTsKLSAgICAgICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0OjpObywgUmVu
ZGVyaW5nUHVycG9zZTo6Q2FudmFzLCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBob3N0V2luZG93KTsKKyAgICAgICAgICAg
IHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIFNob3VsZFVz
ZURpc3BsYXlMaXN0OjpObywgUmVuZGVyaW5nUHVycG9zZTo6Q2FudmFzLCByZXNvbHV0aW9uU2Nh
bGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGhv
c3RXaW5kb3cpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gRklYTUUgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzIxODQ4Mj4gRW5hYmxlIHdvcmtlciBiYXNlZCBJbWFnZUJpdG1hcCBhbmQgT2Zm
c2NyZWVuQ2FudmFzIGRyYXdpbmcgdG8gdXNlIEdQVSBQcm9jZXNzIHJlbmRlcmluZwotICAgIHJl
dHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25T
Y2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwor
ICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29s
dXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CiB9CiAKIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgSW1hZ2VCaXRtYXA6OlNvdXJjZSYm
IHNvdXJjZSwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgSW1hZ2VCaXRtYXA6OlByb21p
c2UmJiBwcm9taXNlKQpAQCAtNTA0LDcgKzUwNCw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0
ZVByb21pc2UoU2NyaXB0RXgKICAgICBhdXRvIG91dHB1dFNpemUgPSBvdXRwdXRTaXplRm9yU291
cmNlUmVjdGFuZ2xlKHNvdXJjZVJlY3RhbmdsZSwgb3B0aW9ucyk7CiAKICAgICAvLyBGSVhNRTog
QWRkIHN1cHBvcnQgZm9yIGNvbG9yIHNwYWNlcyAvIHBpeGVsIGZvcm1hdHMgdG8gSW1hZ2VCaXRt
YXAuCi0gICAgYXV0byBiaXRtYXBEYXRhID0gdmlkZW8tPmNyZWF0ZUJ1ZmZlckZvclBhaW50aW5n
KG91dHB1dFNpemUsIGJ1ZmZlclJlbmRlcmluZ01vZGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGJpdG1hcERhdGEgPSB2aWRlby0+
Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcob3V0cHV0U2l6ZSwgYnVmZmVyUmVuZGVyaW5nTW9kZSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAg
aWYgKCFiaXRtYXBEYXRhKSB7CiAgICAgICAgIHJlc29sdmVXaXRoQmxhbmtJbWFnZUJ1ZmZlcihz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCAhdGFpbnRzT3JpZ2luKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuc2VjdXJpdHlPcmlnaW4oKSwgKnZpZGVvKSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgICAg
IHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDUxLDE0ICs0NTEsMTQgQEAgdm9pZCBPZmZzY3JlZW5DYW52
YXM6OmNvbW1pdFRvUGxhY2Vob2xkZQogICAgICAgICBtX2NvbnRleHQtPnBhaW50UmVuZGVyaW5n
UmVzdWx0c1RvQ2FudmFzKCk7CiAKICAgICBpZiAobV9wbGFjZWhvbGRlckRhdGEtPmJ1ZmZlclBp
cGVTb3VyY2UpIHsKLSAgICAgICAgYXV0byBidWZmZXJDb3B5ID0gaW1hZ2VCdWZmZXItPmNvcHlS
ZWN0VG9CdWZmZXIoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxT
aXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGltYWdlQnVmZmVyLT5jb250ZXh0
KCkpOworICAgICAgICBhdXRvIGJ1ZmZlckNvcHkgPSBpbWFnZUJ1ZmZlci0+Y29weVJlY3RUb0J1
ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSks
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsK
ICAgICAgICAgaWYgKGJ1ZmZlckNvcHkpCiAgICAgICAgICAgICBtX3BsYWNlaG9sZGVyRGF0YS0+
YnVmZmVyUGlwZVNvdXJjZS0+aGFuZGxlKFdURk1vdmUoYnVmZmVyQ29weSkpOwogICAgIH0KIAog
ICAgIExvY2tlciBsb2NrZXIgeyBtX3BsYWNlaG9sZGVyRGF0YS0+YnVmZmVyTG9jayB9OwogICAg
IGJvb2wgc2hvdWxkUHVzaEJ1ZmZlciA9ICFtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1p
dEJ1ZmZlcjsKLSAgICBtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlciA9IGlt
YWdlQnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdl
QnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBpbWFn
ZUJ1ZmZlci0+Y29udGV4dCgpKTsKKyAgICBtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1p
dEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIGltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwogICAgIGlmIChtX3BsYWNlaG9sZGVy
RGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlciAmJiBzaG91bGRQdXNoQnVmZmVyKQogICAgICAgICBw
dXNoQnVmZmVyVG9QbGFjZWhvbGRlcigpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAi
Q1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VySGVscGVycy5o
IgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VyV29ya2VyU2FmZS5oIgotI2luY2x1ZGUgIkNv
bG9yU3BhY2UuaCIKICNpbmNsdWRlICJHcmFkaWVudC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVy
LmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNhY2hl
ZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2FudmFzUGF0dGVybi5oIgotI2luY2x1ZGUgIkNvbG9yU3Bh
Y2UuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJIVE1M
Q2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MVmlkZW9FbGVtZW50LmgiCkBAIC05MCw3ICs5MCw3IEBAIFBpeGVsRm9ybWF0IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQ6OnBpeGUKIAogRGVzdGluYXRpb25Db2xvclNwYWNlIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQ6OmNvbG9yU3BhY2UoKSBjb25zdAogewotICAgIHJldHVybiBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0I7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpOwogfQogCiBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRPcmln
aW4oY29uc3QgQ2FudmFzUGF0dGVybiogcGF0dGVybikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTMgKzM3LDEzIEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENhbnZhc1BhdHRlcm47CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7
CiBjbGFzcyBIVE1MQ2FudmFzRWxlbWVudDsKIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiBjbGFz
cyBIVE1MVmlkZW9FbGVtZW50OwogY2xhc3MgSW1hZ2VCaXRtYXA7CiBjbGFzcyBUeXBlZE9NQ1NT
SW1hZ2VWYWx1ZTsKIGNsYXNzIFdlYkdMT2JqZWN0OwotZW51bSBjbGFzcyBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgOiB1aW50OF90OwogZW51bSBjbGFzcyBQaXhlbEZvcm1hdCA6IHVpbnQ4X3Q7CiAK
IGNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29u
dGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VC
aXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCB2b2lkIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4
dDo6c2V0T3V0CiAgICAgICAgIC8vIG9ubHkgcmVhc29uIEkgY2FuIHRoaW5rIG9mIGlzIHRvRGF0
YVVSTCgpLCBidXQgdGhhdCBkb2Vzbid0IHNlZW0gbGlrZQogICAgICAgICAvLyBhIGdvb2QgZW5v
dWdoIGFyZ3VtZW50IHRvIHdhc3RlIG1lbW9yeS4KIAotICAgICAgICBjYW52YXMoKS0+c2V0SW1h
Z2VCdWZmZXJBbmRNYXJrRGlydHkoSW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUoY2FudmFz
KCktPndpZHRoKCksIGNhbnZhcygpLT5oZWlnaHQoKSksIGJ1ZmZlclJlbmRlcmluZ01vZGUsIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CisgICAg
ICAgIGNhbnZhcygpLT5zZXRJbWFnZUJ1ZmZlckFuZE1hcmtEaXJ0eShJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKEZsb2F0U2l6ZShjYW52YXMoKS0+d2lkdGgoKSwgY2FudmFzKCktPmhlaWdodCgpKSwgYnVm
ZmVyUmVuZGVyaW5nTW9kZSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVs
Rm9ybWF0OjpCR1JBOCkpOwogCiAgICAgICAgIC8vIDEuNC4gU2V0IHRoZSBvdXRwdXQgYml0bWFw
J3Mgb3JpZ2luLWNsZWFuIGZsYWcgdG8gdHJ1ZS4KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmNwcAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiUHJlZGVmaW5lZENvbG9yU3BhY2UuaCIKIAotI2luY2x1ZGUgIkNvbG9yU3Bh
Y2UuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlIDx3dGYv
T3B0aW9uYWwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsMzMgKzM1LDI2IEBAIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSB0b0Rlc3RpbmF0aW9uQ29sb3IKIHsKICAgICBzd2l0Y2ggKGNv
bG9yU3BhY2UpIHsKICAgICBjYXNlIFByZWRlZmluZWRDb2xvclNwYWNlOjpTUkdCOgotICAgICAg
ICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOworICAgICAgICByZXR1cm4gRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9S
X1NQQUNFX0RJU1BMQVlfUDMpCiAgICAgY2FzZSBQcmVkZWZpbmVkQ29sb3JTcGFjZTo6RGlzcGxh
eVAzOgotICAgICAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDM7Cisg
ICAgICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMygpOwogI2VuZGlm
CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQjsKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCk7CiB9CiAKLU9wdGlvbmFsPFByZWRlZmluZWRDb2xvclNwYWNlPiB0b1ByZWRlZmluZWRD
b2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKQorT3B0aW9uYWw8UHJl
ZGVmaW5lZENvbG9yU3BhY2U+IHRvUHJlZGVmaW5lZENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQogewotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewot
ICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOgorICAgIGlmIChjb2xvclNwYWNl
ID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKQogICAgICAgICByZXR1cm4gUHJlZGVm
aW5lZENvbG9yU3BhY2U6OlNSR0I7Ci0jaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNF
X0xJTkVBUl9TUkdCKQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdC
OgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotI2VuZGlmCiAjaWYgRU5BQkxFKERFU1RJ
TkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCi0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OkRpc3BsYXlQMzoKKyAgICBpZiAoY29sb3JTcGFjZSA9PSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OkRpc3BsYXlQMygpKQogICAgICAgICByZXR1cm4gUHJlZGVmaW5lZENvbG9yU3BhY2U6
OkRpc3BsYXlQMzsKICNlbmRpZgotICAgIH0KIAotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuaAkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVu
dW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDogdWludDhfdDsKK2NsYXNzIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTsKIAogZW51bSBjbGFzcyBQcmVkZWZpbmVkQ29sb3JTcGFjZSB7CiAgICAg
U1JHQgpAQCAtNDAsNyArNDAsNyBAQCBlbnVtIGNsYXNzIFByZWRlZmluZWRDb2xvclNwYWNlIHsK
IH07CiAKIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB0b0Rlc3RpbmF0aW9uQ29sb3JTcGFjZShQcmVk
ZWZpbmVkQ29sb3JTcGFjZSk7Ci1PcHRpb25hbDxQcmVkZWZpbmVkQ29sb3JTcGFjZT4gdG9QcmVk
ZWZpbmVkQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpOworT3B0aW9uYWw8UHJlZGVm
aW5lZENvbG9yU3BhY2U+IHRvUHJlZGVmaW5lZENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJik7CiAKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAJKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjIzLDcgKzc2MjMsNyBAQCBJbWFnZUJ1ZmZlciog
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6CiAgICAgfQogCiAgICAgLy8gRklYTUUgKDE0OTQy
Myk6IFNob3VsZCB0aGlzIEltYWdlQnVmZmVyIGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJh
dGVkPwotICAgIGF1dG8gdGVtcCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gdGVtcCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6
ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCF0ZW1wKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICBBU1NFUlQobV9idWZmZXJzLnNpemUoKSA+IDApOwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVy
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFRleHRUcmFja0NvbnRh
aW5lckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTgsNyArNDE4LDcgQEAgUmVmUHRy
PEltYWdlPiBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YQogICAgIEludFJlY3QgcGFpbnRpbmdS
ZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+c2l6ZSgpKTsKIAogICAgIC8vIEZJWE1F
ICgxNDk0MjIpOiBUaGlzIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFj
Y2VsZXJhdGVkLgotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGlu
Z1JlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBkZXZpY2VTY2FsZUZh
Y3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwor
ICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGluZ1JlY3Quc2l6ZSgp
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFi
dWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExNDksNyArMTE0OSw3IEBAIGludCBJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YShE
dXBsaWMKICAgICAgICAgICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBpbWFnZUVs
ZW1lbnQtPmNhY2hlZEltYWdlKCkpIHsKICAgICAgICAgICAgICAgICBJbWFnZSogaW1hZ2UgPSBj
YWNoZWRJbWFnZS0+aW1hZ2UoKTsKICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2Ug
IT0gJkltYWdlOjpudWxsSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgp
OwogICAgICAgICAgICAgICAgICAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFnZSgq
aW1hZ2UsIEZsb2F0UG9pbnQoMCwgMCkpOwogICAgICAgICAgICAgICAgICAgICBkYXRhVVJMID0g
aW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CiAgICAgICAgICAgICAgICAgfQpA
QCAtMTE2Myw3ICsxMTYzLDcgQEAgaW50IEluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKER1
cGxpYwogCiAgICAgICAgICAgICB1bnNpZ25lZCB2aWRlb1dpZHRoID0gdmlkZW9FbGVtZW50LT52
aWRlb1dpZHRoKCk7CiAgICAgICAgICAgICB1bnNpZ25lZCB2aWRlb0hlaWdodCA9IHZpZGVvRWxl
bWVudC0+dmlkZW9IZWlnaHQoKTsKLSAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZSh2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCksIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwg
UGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZSh2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCksIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgICAgICAgICAgaWYgKGltYWdlQnVmZmVyKSB7CiAg
ICAgICAgICAgICAgICAgdmlkZW9FbGVtZW50LT5wYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChp
bWFnZUJ1ZmZlci0+Y29udGV4dCgpLCBGbG9hdFJlY3QoMCwgMCwgdmlkZW9XaWR0aCwgdmlkZW9I
ZWlnaHQpKTsKICAgICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVS
TCgiaW1hZ2UvcG5nIik7CkBAIC0xMjAwLDcgKzEyMDAsNyBAQCBpbnQgSW5zcGVjdG9yQ2FudmFz
OjppbmRleEZvckRhdGEoRHVwbGljCiAgICAgICAgICAgICBpZiAoYXV0byogY2FjaGVkSW1hZ2Ug
PSBjc3NJbWFnZVZhbHVlLT5pbWFnZSgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byogaW1hZ2Ug
PSBjYWNoZWRJbWFnZS0+aW1hZ2UoKTsKICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UgJiYgaW1h
Z2UgIT0gJkltYWdlOjpudWxsSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdN
b2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdS
QTgpOwogICAgICAgICAgICAgICAgICAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFn
ZSgqaW1hZ2UsIEZsb2F0UG9pbnQoMCwgMCkpOwogICAgICAgICAgICAgICAgICAgICBkYXRhVVJM
ID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CiAgICAgICAgICAgICAgICAg
fQpAQCAtMTQ0MSw3ICsxNDQxLDcgQEAgUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJ
bnNwZWN0bwogewogICAgIGF1dG8mIHRpbGVJbWFnZSA9IGNhbnZhc1BhdHRlcm4ucGF0dGVybigp
LnRpbGVJbWFnZSgpOwogICAgIEZsb2F0UmVjdCByZWN0ID0geyB7IH0sIHRpbGVJbWFnZS5zaXpl
KCkgfTsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0aWxlSW1h
Z2Uuc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZl
ciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGlsZUltYWdlLnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CiAgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5kcmF3TmF0aXZlSW1hZ2Uo
dGlsZUltYWdlLCB0aWxlSW1hZ2Uuc2l6ZSgpLCByZWN0LCByZWN0KTsKIAogICAgIFN0cmluZyBy
ZXBlYXQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyOSw3ICs1
MjksNyBAQCB2b2lkIENocm9tZTo6c2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vCiAgICAgbV9j
bGllbnQuc2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGhpZGRlblVudGlsTW91c2VNb3Zl
cyk7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gQ2hyb21lOjpjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgUmVuZGVy
aW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29uc3QKK1JlZlB0
cjxJbWFnZUJ1ZmZlcj4gQ2hyb21lOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
IHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSBwdXJw
b3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYg
Y29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fY2xpZW50LmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHB1cnBvc2Us
IHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZS5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldEN1cnNvcihjb25zdCBDdXJzb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEN1cnNvckhp
ZGRlblVudGlsTW91c2VNb3Zlcyhib29sKSBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwg
UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJl
bmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiwgUGl4ZWxGb3JtYXQpIGNvbnN0IG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKFdF
QkdMKQogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0
R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3Qgb3ZlcnJpZGU7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzOSw3
ICszMzksNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBEaXNwbGF5UmVmcmVzaE1vbml0
b3JGYWN0b3J5KiBkaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bnVsbHB0cjsgfQogCi0gICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2Us
IGZsb2F0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCB7IHJldHVy
biBudWxscHRyOyB9CisgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2Us
IGZsb2F0LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCkgY29uc3Qg
eyByZXR1cm4gbnVsbHB0cjsgfQogCiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIHZpcnR1YWwgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNu
YXBzaG90dGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNu
YXBzaG90dGluZy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVTbmFwc2hvdHRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDcgQEAg
UmVmUHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVjdFdpdAogICAgIGlmIChvcHRpb25z
ICYgU25hcHNob3RPcHRpb25zUGFpbnRXaXRoSW50ZWdyYWxTY2FsZUZhY3RvcikKICAgICAgICAg
c2NhbGVGYWN0b3IgPSBjZWlsZihzY2FsZUZhY3Rvcik7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgc2NhbGVGYWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1h
Z2VSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgc2NhbGVGYWN0b3Is
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAg
IGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBidWZmZXItPmNvbnRl
eHQoKS50cmFuc2xhdGUoLWltYWdlUmVjdC54KCksIC1pbWFnZVJlY3QueSgpKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcAkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBPcHRpb25hbDxMYWI8ZmxvYXQ+PiBzYW1wbGVD
b2xvcigKICAgICBpZiAoIXNuYXBzaG90KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IHNuYXBzaG90LT5nZXRQaXhlbEJ1ZmZlcih7IEFscGhh
UHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfSwgeyB7IH0sIHNuYXBzaG90LT5sb2dpY2FsU2l6
ZSgpIH0pOworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzbmFwc2hvdC0+Z2V0UGl4ZWxCdWZmZXIo
eyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpC
R1JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfSwgeyB7IH0sIHNuYXBzaG90LT5s
b2dpY2FsU2l6ZSgpIH0pOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGll
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGll
bnQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25z
b2xlQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI2LDcgKzMyNiw3IEBAIHZvaWQgUGFn
ZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjoKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChhdXRvKiBjYWNoZWRJbWFnZSA9IGltYWdlRWxlbWVudC5jYWNoZWRJbWFnZSgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1h
Z2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UgIT0g
JkltYWdlOjpudWxsSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
bmFwc2hvdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdCA9
IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuYXBzaG90LT5jb250ZXh0
KCkuZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMzQzLDcgKzM0Myw3
IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjoKICAgICAgICAgICAg
ICAgICAgICAgICAgIGF1dG8mIHZpZGVvRWxlbWVudCA9IGRvd25jYXN0PEhUTUxWaWRlb0VsZW1l
bnQ+KCpub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHZpZGVvV2lkdGgg
PSB2aWRlb0VsZW1lbnQudmlkZW9XaWR0aCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgdmlkZW9IZWlnaHQgPSB2aWRlb0VsZW1lbnQudmlkZW9IZWlnaHQoKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHNuYXBzaG90ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUo
dmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRT
aXplKHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb0VsZW1lbnQucGFpbnRDdXJyZW50RnJhbWVJ
bkNvbnRleHQoc25hcHNob3QtPmNvbnRleHQoKSwgRmxvYXRSZWN0KDAsIDAsIHZpZGVvV2lkdGgs
IHZpZGVvSGVpZ2h0KSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICNlbmRpZgpAQCAtMzY4LDcg
KzM2OCw3IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjoKICAgICAg
ICAgICAgIHRhcmdldCA9IHBvc3NpYmxlVGFyZ2V0OwogICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRzKCkpKSB7CiAgICAgICAgICAg
ICAgICAgYXV0byBzb3VyY2VTaXplID0gaW1hZ2VEYXRhLT5zaXplKCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNvdXJjZVNpemUs
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvIGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzb3VyY2VTaXplLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KSkgewogICAgICAgICAgICAgICAgICAgICBJbnRSZWN0IHNvdXJjZVJlY3Qo
SW50UG9pbnQoKSwgc291cmNlU2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgIGltYWdlQnVmZmVy
LT5wdXRQaXhlbEJ1ZmZlcihpbWFnZURhdGEtPnBpeGVsQnVmZmVyKCksIHNvdXJjZVJlY3QpOwog
ICAgICAgICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1h
Z2UvcG5nIl9zLCBXVEY6Om51bGxvcHQsIFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
MTAgKzMxLDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cnNvcjsKK2NsYXNz
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIEltYWdlQnVmZmVyOwogCiBlbnVtIGNsYXNz
IFBpeGVsRm9ybWF0IDogdWludDhfdDsKLWVudW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNl
IDogdWludDhfdDsKIGVudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJvb2w7CiBlbnVtIGNsYXNz
IFJlbmRlcmluZ1B1cnBvc2UgOiB1aW50OF90OwogCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIEludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0
IEludFBvaW50JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSW50UmVjdCByb290Vmlld1RvQWNj
ZXNzaWJpbGl0eVNjcmVlbihjb25zdCBJbnRSZWN0JikgY29uc3QgPSAwOwogCi0gICAgdmlydHVh
bCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYs
IFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
RGVzdGluYXRpb25Db2xvclNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
LCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBpeGVsRm9ybWF0KSBjb25zdCA9IDA7CiAK
ICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+
IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYpIGNvbnN0ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2Ny
ZWVuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TY3Jl
ZW4uaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1TY3JlZW4uaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCB0eXBlZGVmIHN0cnVj
dCBDR0NvbG9yU3BhY2UgKkNHQ29sb3JTcGFjCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgRGVzdGluYXRpb25Db2xvclNwYWNlOwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgRmxvYXRT
aXplOwogY2xhc3MgV2lkZ2V0OwpAQCAtNjgsNiArNjksNyBAQCB1c2luZyBJT1JlZ2lzdHJ5R1BV
SUQgPSBpbnQ2NF90OyAvLyBHbG9iCiBpbnQgc2NyZWVuRGVwdGgoV2lkZ2V0Kik7CiBpbnQgc2Ny
ZWVuRGVwdGhQZXJDb21wb25lbnQoV2lkZ2V0Kik7CiBib29sIHNjcmVlbklzTW9ub2Nocm9tZShX
aWRnZXQqKTsKK1dFQkNPUkVfRVhQT1JUIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBzY3JlZW5Db2xv
clNwYWNlKFdpZGdldCogPSBudWxscHRyKTsKIAogYm9vbCBzY3JlZW5IYXNJbnZlcnRlZENvbG9y
cygpOwogCkBAIC0xMDAsMTAgKzEwMiw2IEBAIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2NyZWVuU3Vw
cG9ydHNIaWdoRHkKIGNvbnN0ZXhwciBib29sIHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5n
ZShXaWRnZXQqID0gbnVsbHB0cikgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCi0jaWYgVVNF
KENHKQotV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIHNjcmVlbkNvbG9yU3BhY2UoV2lk
Z2V0KiA9IG51bGxwdHIpOwotI2VuZGlmCi0KIHN0cnVjdCBTY3JlZW5Qcm9wZXJ0aWVzOwogc3Ry
dWN0IFNjcmVlbkRhdGE7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jl
ZW5Qcm9wZXJ0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
ZWVuUHJvcGVydGllcy5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JlZW5Qcm9wZXJ0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNp
bmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogI2luY2x1
ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CkBAIC0zMiwxNCArMzMsMTIgQEAKICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLXR5cGVkZWYg
c3RydWN0IENHQ29sb3JTcGFjZSAqQ0dDb2xvclNwYWNlUmVmOwotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0cnVjdCBTY3JlZW5EYXRhIHsKICAgICBGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxl
UmVjdDsKICAgICBGbG9hdFJlY3Qgc2NyZWVuUmVjdDsKLSAgICBSZXRhaW5QdHI8Q0dDb2xvclNw
YWNlUmVmPiBjb2xvclNwYWNlOworICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNl
IHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsKICAgICBpbnQgc2NyZWVuRGVwdGgg
eyAwIH07CiAgICAgaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50IHsgMCB9OwogICAgIGJvb2wg
c2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yIHsgZmFsc2UgfTsKQEAgLTU2LDEzICs1NSwxMiBA
QCBzdHJ1Y3QgU2NyZWVuRGF0YSB7CiAgICAgZmxvYXQgc2NhbGVGYWN0b3IgeyAxIH07CiAjZW5k
aWYKIAotICAgIGVudW0gY2xhc3MgQ29sb3JTcGFjZVR5cGUgOiB1aW50OF90IHsgTm9uZSwgTmFt
ZSwgRGF0YSB9OwogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8
U2NyZWVuRGF0YT4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKLXR5cGVkZWYgSGFzaE1hcDxQbGF0
Zm9ybURpc3BsYXlJRCwgU2NyZWVuRGF0YT4gU2NyZWVuRGF0YU1hcDsKLSAgICAKK3VzaW5nIFNj
cmVlbkRhdGFNYXAgPSBIYXNoTWFwPFBsYXRmb3JtRGlzcGxheUlELCBTY3JlZW5EYXRhPjsKKwog
c3RydWN0IFNjcmVlblByb3BlcnRpZXMgewogICAgIFBsYXRmb3JtRGlzcGxheUlEIHByaW1hcnlE
aXNwbGF5SUQgeyAwIH07CiAgICAgU2NyZWVuRGF0YU1hcCBzY3JlZW5EYXRhTWFwOwpAQCAtNzQs
OCArNzIsNyBAQCBzdHJ1Y3QgU2NyZWVuUHJvcGVydGllcyB7CiB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPgogdm9pZCBTY3JlZW5Qcm9wZXJ0aWVzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIHsKLSAgICBlbmNvZGVyIDw8IHByaW1hcnlEaXNwbGF5SUQ7Ci0gICAgZW5jb2RlciA8PCBz
Y3JlZW5EYXRhTWFwOworICAgIGVuY29kZXIgPDwgcHJpbWFyeURpc3BsYXlJRCA8PCBzY3JlZW5E
YXRhTWFwOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtOTcsNyArOTQsNyBAQCBP
cHRpb25hbDxTY3JlZW5Qcm9wZXJ0aWVzPiBTY3JlZW5Qcm9wZXJ0CiB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgogdm9pZCBTY3JlZW5EYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
IHsKLSAgICBlbmNvZGVyIDw8IHNjcmVlbkF2YWlsYWJsZVJlY3QgPDwgc2NyZWVuUmVjdCA8PCBz
Y3JlZW5EZXB0aCA8PCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCA8PCBzY3JlZW5TdXBwb3J0c0V4
dGVuZGVkQ29sb3IgPDwgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMgPDwgc2NyZWVuU3VwcG9ydHNI
aWdoRHluYW1pY1JhbmdlOworICAgIGVuY29kZXIgPDwgc2NyZWVuQXZhaWxhYmxlUmVjdCA8PCBz
Y3JlZW5SZWN0IDw8IGNvbG9yU3BhY2UgPDwgc2NyZWVuRGVwdGggPDwgc2NyZWVuRGVwdGhQZXJD
b21wb25lbnQgPDwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yIDw8IHNjcmVlbkhhc0ludmVy
dGVkQ29sb3JzIDw8IHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZTsKIAogI2lmIFBMQVRG
T1JNKE1BQykKICAgICBlbmNvZGVyIDw8IHNjcmVlbklzTW9ub2Nocm9tZSA8PCBkaXNwbGF5TWFz
ayA8PCBncHVJRCA8PCBwcmVmZXJyZWREeW5hbWljUmFuZ2VNb2RlOwpAQCAtMTA2LDI4ICsxMDMs
NiBAQCB2b2lkIFNjcmVlbkRhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyCiAjaWYgUExBVEZP
Uk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGVuY29kZXIgPDwgc2NhbGVGYWN0
b3I7CiAjZW5kaWYKLQotICAgIGlmIChjb2xvclNwYWNlKSB7Ci0gICAgICAgIC8vIFRyeSB0byBl
bmNvZGUgdGhlIG5hbWUuCi0gICAgICAgIGlmIChhdXRvIG5hbWUgPSBhZG9wdENGKENHQ29sb3JT
cGFjZUNvcHlOYW1lKGNvbG9yU3BhY2UuZ2V0KCkpKSkgewotICAgICAgICAgICAgZW5jb2RlciA8
PCBDb2xvclNwYWNlVHlwZTo6TmFtZTsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgU3RyaW5nKG5h
bWUuZ2V0KCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8g
RmFpbGluZyB0aGF0LCBqdXN0IGVuY29kZSB0aGUgSUNDIGRhdGEuCi0gICAgICAgIGlmIChhdXRv
IHByb2ZpbGVEYXRhID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDb3B5SUNDRGF0YShjb2xvclNwYWNl
LmdldCgpKSkpIHsKLSAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBpY2NEYXRhOwotICAgICAg
ICAgICAgaWNjRGF0YS5hcHBlbmQoQ0ZEYXRhR2V0Qnl0ZVB0cihwcm9maWxlRGF0YS5nZXQoKSks
IENGRGF0YUdldExlbmd0aChwcm9maWxlRGF0YS5nZXQoKSkpOwotCi0gICAgICAgICAgICBlbmNv
ZGVyIDw8IENvbG9yU3BhY2VUeXBlOjpEYXRhOwotICAgICAgICAgICAgZW5jb2RlciA8PCBpY2NE
YXRhOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gVGhl
IGNvbG9yIHNwYWNlIHdhcyBudWxsIG9yIGZhaWxlZCB0byBiZSBlbmNvZGVkLgotICAgIGVuY29k
ZXIgPDwgQ29sb3JTcGFjZVR5cGU6Ok5vbmU7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
CkBAIC0xNDMsNiArMTE4LDExIEBAIE9wdGlvbmFsPFNjcmVlbkRhdGE+IFNjcmVlbkRhdGE6OmRl
Y29kZSgKICAgICBpZiAoIXNjcmVlblJlY3QpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAKKyAgICBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IHNjcmVlbkNvbG9yU3BhY2U7
CisgICAgZGVjb2RlciA+PiBzY3JlZW5Db2xvclNwYWNlOworICAgIGlmICghc2NyZWVuQ29sb3JT
cGFjZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwogICAgIE9wdGlvbmFsPGludD4g
c2NyZWVuRGVwdGg7CiAgICAgZGVjb2RlciA+PiBzY3JlZW5EZXB0aDsKICAgICBpZiAoIXNjcmVl
bkRlcHRoKQpAQCAtMTk3LDQxICsxNzcsMTAgQEAgT3B0aW9uYWw8U2NyZWVuRGF0YT4gU2NyZWVu
RGF0YTo6ZGVjb2RlKAogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogI2VuZGlmCiAKLSAg
ICBDb2xvclNwYWNlVHlwZSBkYXRhVHlwZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFU
eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIFJldGFpblB0cjxDR0Nv
bG9yU3BhY2VSZWY+IGNnQ29sb3JTcGFjZTsKLSAgICBzd2l0Y2ggKGRhdGFUeXBlKSB7Ci0gICAg
Y2FzZSBDb2xvclNwYWNlVHlwZTo6Tm9uZToKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDb2xv
clNwYWNlVHlwZTo6TmFtZTogewotICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGNvbG9yU3BhY2VO
YW1lOwotICAgICAgICBkZWNvZGVyID4+IGNvbG9yU3BhY2VOYW1lOwotICAgICAgICBBU1NFUlQo
Y29sb3JTcGFjZU5hbWUpOwotICAgICAgICBpZiAoIWNvbG9yU3BhY2VOYW1lKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgICAgICBjZ0NvbG9yU3BhY2UgPSBhZG9wdENG
KENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGNvbG9yU3BhY2VOYW1lLT5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENvbG9yU3BhY2VU
eXBlOjpEYXRhOiB7Ci0gICAgICAgIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gaWNjRGF0YTsK
LSAgICAgICAgZGVjb2RlciA+PiBpY2NEYXRhOwotICAgICAgICBBU1NFUlQoaWNjRGF0YSk7Ci0g
ICAgICAgIGlmICghaWNjRGF0YSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0K
LSAgICAgICAgYXV0byBjb2xvclNwYWNlRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGljY0RhdGEtPmRhdGEoKSwgaWNjRGF0YS0+c2l6ZSgpKSk7Ci0gICAg
ICAgIGNnQ29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aElDQ0RhdGEo
Y29sb3JTcGFjZURhdGEuZ2V0KCkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIH0KLQog
ICAgIHJldHVybiB7IHsKICAgICAgICAgV1RGTW92ZSgqc2NyZWVuQXZhaWxhYmxlUmVjdCksCiAg
ICAgICAgIFdURk1vdmUoKnNjcmVlblJlY3QpLAotICAgICAgICBXVEZNb3ZlKGNnQ29sb3JTcGFj
ZSksCisgICAgICAgIFdURk1vdmUoKnNjcmVlbkNvbG9yU3BhY2UpLAogICAgICAgICBXVEZNb3Zl
KCpzY3JlZW5EZXB0aCksCiAgICAgICAgIFdURk1vdmUoKnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50
KSwKICAgICAgICAgV1RGTW92ZSgqc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKSwKQEAgLTI1
MCwxNiArMTk5LDMgQEAgT3B0aW9uYWw8U2NyZWVuRGF0YT4gU2NyZWVuRGF0YTo6ZGVjb2RlKAog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0
ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlNjcmVlbkRhdGE6OkNvbG9yU3BhY2VUeXBl
PiB7Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAgICAgICAgV2ViQ29yZTo6U2Ny
ZWVuRGF0YTo6Q29sb3JTcGFjZVR5cGUsCi0gICAgICAgIFdlYkNvcmU6OlNjcmVlbkRhdGE6OkNv
bG9yU3BhY2VUeXBlOjpOb25lLAotICAgICAgICBXZWJDb3JlOjpTY3JlZW5EYXRhOjpDb2xvclNw
YWNlVHlwZTo6TmFtZSwKLSAgICAgICAgV2ViQ29yZTo6U2NyZWVuRGF0YTo6Q29sb3JTcGFjZVR5
cGU6OkRhdGEKLSAgICA+OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NCw3ICsxNjQsNyBAQCBSZWZQdHI8TmF0aXZlSW1h
Z2U+IEJpdG1hcEltYWdlOjpwcmVUcmFuCiAgICAgICAgIHJldHVybiBpbWFnZTsKIAogICAgIGF1
dG8gY29ycmVjdGVkU2l6ZUZsb2F0ID0gY29ycmVjdGVkU2l6ZSA/IEZsb2F0U2l6ZShjb3JyZWN0
ZWRTaXplLnZhbHVlKCkpIDogc2l6ZSgpOwotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShjb3JyZWN0ZWRTaXplRmxvYXQsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
IDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY29ycmVjdGVkU2l6ZUZsb2F0LCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIGltYWdlOwogCkBAIC0zNTIsNyArMzUyLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1Bh
dHRlcm4oR3JhcGhpY3NDbwogICAgIH0KIAogICAgIGlmICghbV9jYWNoZWRJbWFnZSkgewotICAg
ICAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4
cGFuZGVkSW50U2l6ZSh0aWxlUmVjdC5zaXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IsIGN0eHQpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZSh0aWxlUmVjdC5zaXplKCkpLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgY3R4dCk7CiAgICAgICAgIGlmICghYnVmZmVyKQogICAgICAg
ICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3IuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw3ICsxNjgsNyBAQCBDb2xv
ckNvbXBvbmVudHM8ZmxvYXQsIDQ+IENvbG9yOjp0b0NvbG9yCiAgICAgcmV0dXJuIGNvbnZlckNv
bG9yQ29tcG9uZW50cyhpbnB1dENvbG9yU3BhY2UsIGNvbXBvbmVudHMsIG91dHB1dENvbG9yU3Bh
Y2UpOwogfQogCi1Db2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IENvbG9yOjp0b0NvbG9yQ29tcG9u
ZW50c0luQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugb3V0cHV0Q29sb3JTcGFjZSkg
Y29uc3QKK0NvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gQ29sb3I6OnRvQ29sb3JDb21wb25lbnRz
SW5Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgb3V0cHV0Q29sb3JTcGFj
ZSkgY29uc3QKIHsKICAgICBhdXRvIFtpbnB1dENvbG9yU3BhY2UsIGNvbXBvbmVudHNdID0gY29s
b3JTcGFjZUFuZENvbXBvbmVudHMoKTsKICAgICByZXR1cm4gY29udmVyQ29sb3JDb21wb25lbnRz
KGlucHV0Q29sb3JTcGFjZSwgY29tcG9uZW50cywgb3V0cHV0Q29sb3JTcGFjZSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDb2xvckNvbnZlcnNpb24uaCIKICNpbmNs
dWRlICJDb2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKKyNpbmNsdWRl
ICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KQEAgLTEy
MSw3ICsxMjIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8VD4g
dG9TUkdCQUxvc3N5KCkgY29uc3QgeyByZXR1cm4gdG9Db2xvclR5cGVMb3NzeTxTUkdCQTxUPj4o
KTsgfQogCiAgICAgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiB0b0NvbG9yQ29tcG9uZW50c0lu
Q29sb3JTcGFjZShDb2xvclNwYWNlKSBjb25zdDsKLSAgICBDb2xvckNvbXBvbmVudHM8ZmxvYXQs
IDQ+IHRvQ29sb3JDb21wb25lbnRzSW5Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSkg
Y29uc3Q7CisgICAgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiB0b0NvbG9yQ29tcG9uZW50c0lu
Q29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKSBjb25zdDsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQs
IDQ+PiBjb2xvclNwYWNlQW5kQ29tcG9uZW50cygpIGNvbnN0OwogCkBAIC0yNjcsNiArMjY4LDcg
QEAgYm9vbCBvdXRPZkxpbmVDb21wb25lbnRzc0VxdWFsSWdub3JpbmdTZQogCiAjaWYgVVNFKENH
KQogV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJik7
CitXRUJDT1JFX0VYUE9SVCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IHBsYXRmb3JtQ29udmVy
dENvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+LCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKICNlbmRpZgogCiBXRUJDT1JFX0VYUE9SVCBX
VEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgQ29sb3Im
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JDb252ZXJzaW9uLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NyArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbG9yQ29udmVyc2lv
bi5oIgogCisjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJDb2xvclNwYWNlLmgiCisjaW5j
bHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzE4LDE4ICszMjAsMjEgQEAgQ29sb3JDb21w
b25lbnRzPGZsb2F0LCA0PiBjb252ZXJDb2xvckNvbQogICAgIH0pOwogfQogCi1Db2xvckNvbXBv
bmVudHM8ZmxvYXQsIDQ+IGNvbnZlckNvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlIGlucHV0Q29s
b3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBpbnB1dENvbG9yQ29tcG9uZW50cywg
RGVzdGluYXRpb25Db2xvclNwYWNlIG91dHB1dENvbG9yU3BhY2UpCitDb2xvckNvbXBvbmVudHM8
ZmxvYXQsIDQ+IGNvbnZlckNvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlIGlucHV0Q29sb3JTcGFj
ZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBpbnB1dENvbG9yQ29tcG9uZW50cywgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBvdXRwdXRDb2xvclNwYWNlKQogeworI2lmIFVTRShDRykK
KyAgICByZXR1cm4gcGxhdGZvcm1Db252ZXJ0Q29sb3JDb21wb25lbnRzKGlucHV0Q29sb3JTcGFj
ZSwgaW5wdXRDb2xvckNvbXBvbmVudHMsIG91dHB1dENvbG9yU3BhY2UpOworI2Vsc2UKICAgICBy
ZXR1cm4gY2FsbFdpdGhDb2xvclR5cGUoaW5wdXRDb2xvckNvbXBvbmVudHMsIGlucHV0Q29sb3JT
cGFjZSwgW291dHB1dENvbG9yU3BhY2VdIChjb25zdCBhdXRvJiBpbnB1dENvbG9yKSB7Ci0gICAg
ICAgIHN3aXRjaCAob3V0cHV0Q29sb3JTcGFjZSkgewotICAgICAgICBjYXNlIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQjoKKyAgICAgICAgc3dpdGNoIChvdXRwdXRDb2xvclNwYWNlLnBsYXRm
b3JtQ29sb3JTcGFjZSgpKSB7CisgICAgICAgIGNhc2UgUGxhdGZvcm1Db2xvclNwYWNlOjpOYW1l
OjpTUkdCOgogICAgICAgICAgICAgcmV0dXJuIGFzQ29sb3JDb21wb25lbnRzKGNvbnZlcnRDb2xv
cjxTUkdCQTxmbG9hdD4+KGlucHV0Q29sb3IpKTsKICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09M
T1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpMaW5lYXJTUkdCOgotICAgICAgICAgICAgcmV0dXJuIGFzQ29sb3JDb21wb25lbnRzKGNvbnZl
cnRDb2xvcjxMaW5lYXJTUkdCQTxmbG9hdD4+KGlucHV0Q29sb3IpKTsKKyAgICAgICAgY2FzZSBQ
bGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU6OkxpbmVhclNSR0I6CisgICAgICAgICAgICByZXR1cm4g
YXNDb2xvckNvbXBvbmVudHMoY29udmVydENvbG9yPExpbmVhclNSR0I8ZmxvYXQ+PihpbnB1dENv
bG9yKSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExB
WV9QMykKLSAgICAgICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMzoKKyAg
ICAgICAgY2FzZSBQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU6OkRpc3BsYXlQMzoKICAgICAgICAg
ICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhjb252ZXJ0Q29sb3I8RGlzcGxheVAzPGZsb2F0
Pj4oaW5wdXRDb2xvcikpOwogI2VuZGlmCiAgICAgICAgIH0KQEAgLTMzNyw2ICszNDIsNyBAQCBD
b2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbnZlckNvbG9yQ29tCiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gYXNDb2xvckNvbXBvbmVudHMoY29udmVydENv
bG9yPFNSR0JBPGZsb2F0Pj4oaW5wdXRDb2xvcikpOwogICAgIH0pOworI2VuZGlmCiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yQ29udmVyc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtMjksMTUgKzI5LDE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
RGVzdGluYXRpb25Db2xvclNwYWNlOworCiBlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90
OwotZW51bSBjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgOiB1aW50OF90OwogCiAvLyBDb252
ZXJzaW9uIGZ1bmN0aW9uIGZvciB0eXBlZCBjb2xvcnMuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPdXRw
dXQsIHR5cGVuYW1lIElucHV0PiBPdXRwdXQgY29udmVydENvbG9yKGNvbnN0IElucHV0JiBjb2xv
cik7CiAKIC8vIENvbnZlcnNpb24gZnVuY3Rpb25zIGZvciByYXcgY29sb3IgY29tcG9uZW50cyB3
aXRoIGFzc29jaWF0ZWQgY29sb3Igc3BhY2VzLgogQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBj
b252ZXJDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1dENvbG9yU3BhY2UsIENvbG9yQ29t
cG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVudHMsIENvbG9yU3BhY2Ugb3V0cHV0
Q29sb3JTcGFjZSk7Ci1Db2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbnZlckNvbG9yQ29tcG9u
ZW50cyhDb2xvclNwYWNlIGlucHV0Q29sb3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0
PiBpbnB1dENvbG9yQ29tcG9uZW50cywgRGVzdGluYXRpb25Db2xvclNwYWNlIG91dHB1dENvbG9y
U3BhY2UpOworQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb252ZXJDb2xvckNvbXBvbmVudHMo
Q29sb3JTcGFjZSBpbnB1dENvbG9yU3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gaW5w
dXRDb2xvckNvbXBvbmVudHMsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgb3V0cHV0Q29s
b3JTcGFjZSk7CiAKIAogLy8gQWxsIGNvbG9yIHR5cGVzLCBvdGhlciB0aGFuIFhZWkEgb3IgdGhv
c2UgaW5oZXJpdGluZyBmcm9tIFJHQlR5cGUsIG11c3QgaW1wbGVtZW50CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDI0ICs2NCw0IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIEMKICAgICByZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNl
KQotewotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNhc2UgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCOgotICAgICAgICB0cyA8PCAic1JHQiI7Ci0gICAgICAgIGJyZWFrOwotI2lm
IEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICBjYXNlIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQjoKLSAgICAgICAgdHMgPDwgIkxpbmVhclNS
R0IiOwotICAgICAgICBicmVhazsKLSNlbmRpZgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xP
Ul9TUEFDRV9ESVNQTEFZX1AzKQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNw
bGF5UDM6Ci0gICAgICAgIHRzIDw8ICJEaXNwbGF5UDMiOwotICAgICAgICBicmVhazsKLSNlbmRp
ZgotICAgIH0KLSAgICByZXR1cm4gdHM7Ci19Ci0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMjgsMTAgKzI4LDcgQEAKICNpbmNsdWRlICJDb2xvclR5cGVzLmgiCiAjaW5jbHVkZSA8
ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgotCi1uYW1lc3BhY2UgV1RG
IHsKLWNsYXNzIFRleHRTdHJlYW07Ci19CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NywxOCArNDQsNyBAQCBlbnVtIGNsYXNzIENvbG9yU3Bh
Y2UgOiB1aW50OF90IHsKICAgICBYWVpfRDUwLAogfTsKIAotZW51bSBjbGFzcyBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgOiB1aW50OF90IHsKLSAgICBTUkdCCi0jaWYgRU5BQkxFKERFU1RJTkFUSU9O
X0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQotICAgICwgTGluZWFyU1JHQgotI2VuZGlmCi0jaWYg
RU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCi0gICAgLCBEaXNwbGF5
UDMKLSNlbmRpZgotfTsKLQotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFdURjo6VGV4dFN0cmVhbSYsIENvbG9yU3BhY2UpOwotV0VCQ09SRV9FWFBPUlQgV1RGOjpU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSk7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
LCBDb2xvclNwYWNlKTsKIAogCiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IENvbG9yU3BhY2VN
YXBwaW5nOwpAQCAtMTAyLDI1ICs4OCw2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IEZ1bmN0b3I+IGMKICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+
KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8U1JHQkE8VD4+KGNvbXBvbmVudHMpKTsKIH0K
IAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRnVuY3Rvcj4gY29uc3RleHByIGRlY2x0
eXBlKGF1dG8pIGNhbGxXaXRoQ29sb3JUeXBlKGNvbnN0IENvbG9yQ29tcG9uZW50czxULCA0PiYg
Y29tcG9uZW50cywgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIEZ1bmN0b3ImJiBm
dW5jdG9yKQotewotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNhc2UgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCOgotICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3
YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8U1JHQkE8VD4+KGNvbXBv
bmVudHMpKTsKLSNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0Ip
Ci0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0I6Ci0gICAgICAgIHJl
dHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIG1ha2VGcm9t
Q29tcG9uZW50czxMaW5lYXJTUkdCQTxUPj4oY29tcG9uZW50cykpOwotI2VuZGlmCi0jaWYgRU5B
QkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCi0gICAgY2FzZSBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMzoKLSAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0
ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFrZUZyb21Db21wb25lbnRzPERpc3BsYXlQ
MzxUPj4oY29tcG9uZW50cykpOwotI2VuZGlmCi0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5j
dG9yKSwgbWFrZUZyb21Db21wb25lbnRzPFNSR0JBPFQ+Pihjb21wb25lbnRzKSk7Ci19Ci0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkBAIC0xNDEsMTcgKzEwOCw0IEBAIHRlbXBsYXRlPD4g
c3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q28KICAgICA+OwogfTsKIAotdGVtcGxhdGU8PiBz
dHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IHsKLSAgICB1
c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAotICAgICAgICBXZWJDb3JlOjpEZXN0aW5hdGlvbkNv
bG9yU3BhY2UsCi0gICAgICAgIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQgot
I2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICAgICAg
LCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IKLSNlbmRpZgotI2lm
IEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQotICAgICAgICAsIFdl
YkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxheVAzCi0jZW5kaWYKLSAgICA+Owot
fTsKLQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJ
bWFnZUJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw3ICszNCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPgogY2xh
c3MgQ29uY3JldGVJbWFnZUJ1ZmZlciA6IHB1YmxpYyBJbWFnZUJ1ZmZlciB7CiBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgSW1hZ2VCdWZmZXJUeXBlID0gQ29uY3JldGVJbWFnZUJ1ZmZl
ciwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXJU
eXBlPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1h
dCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRz
KQorICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXJUeXBlPiBjcmVhdGUoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5k
b3cqIGhvc3RXaW5kb3csIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKICAgICB7CiAgICAgICAg
IGF1dG8gcGFyYW1ldGVycyA9IEltYWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyB7IHNpemUs
IHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQgfTsKICAgICAgICAgYXV0
byBiYWNrZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShwYXJhbWV0ZXJzLCBob3N0V2luZG93KTsK
QEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEltYWdlQnVm
ZmVyVHlwZSA9IENvbmNyZXRlSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KICAg
ICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBBcmd1bWVudHMmJi4uLiBhcmd1
bWVudHMpCiAgICAgewotICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBJbWFnZUJ1ZmZlckJhY2tl
bmQ6OlBhcmFtZXRlcnMgeyBzaXplLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBp
eGVsRm9ybWF0OjpCR1JBOCB9OworICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBJbWFnZUJ1ZmZl
ckJhY2tlbmQ6OlBhcmFtZXRlcnMgeyBzaXplLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4IH07CiAgICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tl
bmRUeXBlOjpjcmVhdGUocGFyYW1ldGVycywgY29udGV4dCk7CiAgICAgICAgIGlmICghYmFja2Vu
ZCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTk1LDcgKzE5NSw3IEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgfQogICAgIH0KIAotICAgIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShE
ZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNl
IGRlc3RDb2xvclNwYWNlKSBvdmVycmlkZQorICAgIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHNyY0NvbG9yU3BhY2UsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgZGVzdENvbG9yU3BhY2UpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBp
ZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKICAgICAgICAgICAg
IGZsdXNoRHJhd2luZ0NvbnRleHQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3Nz
ZmFkZUdlbmVyYXRlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBA
IEltYWdlRHJhd1Jlc3VsdCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZToKIAogdm9pZCBDcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFz
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKIHsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShz
aXplKCksIGNvbnRleHQucmVuZGVyaW5nTW9kZSgpLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBjb250ZXh0LnJlbmRlcmluZ01vZGUoKSwgMSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFp
bWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHAJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGlu
YXRpb25Db2xvclNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExNCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9y
U3BhY2UuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KKworI2lmIFVTRShD
RykKKyNpbmNsdWRlICJDb2xvclNwYWNlQ0cuaCIKKyNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVH
cmFwaGljc1NQSS5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRGVzdGluYXRp
b25Db2xvclNwYWNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpCit7CisjaWYgVVNFKENH
KQorICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2Uoc1JHQkNvbG9yU3BhY2VSZWYoKSk7
CisjZWxzZQorICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UoVHlwZTo6U1JHQik7Cisj
ZW5kaWYKK30KKworI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JH
QikKK0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNS
R0IoKQoreworI2lmIFVTRShDRykKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlKGxp
bmVhclNSR0JDb2xvclNwYWNlUmVmKCkpOworI2Vsc2UKKyAgICByZXR1cm4gRGVzdGluYXRpb25D
b2xvclNwYWNlKFR5cGU6OkxpbmVhclNSR0IpOworI2VuZGlmCit9CisjZW5kaWYKKworI2lmIEVO
QUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQorRGVzdGluYXRpb25Db2xv
clNwYWNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxheVAzKCkKK3sKKyNpZiBVU0UoQ0cp
CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZShkaXNwbGF5UDNDb2xvclNwYWNlUmVm
KCkpOworI2Vsc2UKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlKFR5cGU6OkRpc3Bs
YXlQMyk7CisjZW5kaWYKK30KKyNlbmRpZgorCitEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZShQbGF0Zm9ybUNvbG9yU3BhY2UgcGxhdGZvcm1Db2xvclNwYWNlKQor
ICAgIDogbV9wbGF0Zm9ybUNvbG9yU3BhY2UgeyBXVEZNb3ZlKHBsYXRmb3JtQ29sb3JTcGFjZSkg
fQoreworI2lmIFVTRShDRykKKyAgICBBU1NFUlQobV9wbGF0Zm9ybUNvbG9yU3BhY2UpOworI2Vu
ZGlmCit9CisKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGEs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgYikKK3sKKyAgICBpZiAoYS5wbGF0Zm9ybUNv
bG9yU3BhY2UoKSA9PSBiLnBsYXRmb3JtQ29sb3JTcGFjZSgpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKworI2lmIFVTRShDRykKKyAgICByZXR1cm4gQ0dDb2xvclNwYWNlRXF1YWxUb0NvbG9yU3Bh
Y2UoYS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwgYi5wbGF0Zm9ybUNvbG9yU3BhY2UoKSk7CisjZWxz
ZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCitib29sIG9wZXJhdG9yIT0oY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBhLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGIp
Cit7CisgICAgcmV0dXJuICEoYSA9PSBiKTsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQor
eworICAgIGlmIChjb2xvclNwYWNlID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKQor
ICAgICAgICB0cyA8PCAic1JHQiI7CisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNF
X0xJTkVBUl9TUkdCKQorICAgIGVsc2UgaWYgKGNvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xv
clNwYWNlOjpMaW5lYXJTUkdCKCkpCisgICAgICAgIHRzIDw8ICJMaW5lYXJTUkdCIjsKKyNlbmRp
ZgorI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQorICAgIGVs
c2UgaWYgKGNvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDMoKSkK
KyAgICAgICAgdHMgPDwgIkRpc3BsYXlQMyI7CisjZW5kaWYKKyNpZiBVU0UoQ0cpCisgICAgZWxz
ZSBpZiAoYXV0byBkZXNjcmlwdGlvbiA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ29weUlDQ1Byb2Zp
bGVEZXNjcmlwdGlvbihjb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpKSkpCisgICAgICAg
IHRzIDw8IFN0cmluZyhkZXNjcmlwdGlvbi5nZXQoKSk7CisjZW5kaWYKKworICAgIHJldHVybiB0
czsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGlu
YXRpb25Db2xvclNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiUGxhdGZvcm1Db2xvclNwYWNlLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+
CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgeworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgU1JHQigpOworI2lmIEVOQUJMRShERVNUSU5BVElP
Tl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRGVz
dGluYXRpb25Db2xvclNwYWNlIExpbmVhclNSR0IoKTsKKyNlbmRpZgorI2lmIEVOQUJMRShERVNU
SU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgRGlzcGxheVAzKCk7CisjZW5kaWYKKworICAgIFdFQkNP
UkVfRVhQT1JUIGV4cGxpY2l0IERlc3RpbmF0aW9uQ29sb3JTcGFjZShQbGF0Zm9ybUNvbG9yU3Bh
Y2UpOworICAgIFBsYXRmb3JtQ29sb3JTcGFjZVZhbHVlIHBsYXRmb3JtQ29sb3JTcGFjZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1Db2xvclNwYWNlLmdldCgpOyB9CisKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4g
ZGVjb2RlKERlY29kZXImKTsKKworcHJpdmF0ZToKKyAgICBQbGF0Zm9ybUNvbG9yU3BhY2UgbV9w
bGF0Zm9ybUNvbG9yU3BhY2U7Cit9OworCitXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0o
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
Jik7CitXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yIT0oY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CisKK1dFQkNPUkVfRVhQT1JU
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYpOworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8
PCBtX3BsYXRmb3JtQ29sb3JTcGFjZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0
aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPFBsYXRmb3JtQ29sb3JTcGFjZT4g
cGxhdGZvcm1Db2xvclNwYWNlOworICAgIGRlY29kZXIgPj4gcGxhdGZvcm1Db2xvclNwYWNlOwor
ICAgIGlmICghcGxhdGZvcm1Db2xvclNwYWNlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB7IFdURk1vdmUoKnBsYXRmb3Jt
Q29sb3JTcGFjZSkgfTsKK30KKworfQorCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFkaWVudEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVy
bihHcmFwaGljcwogICAgIHVuc2lnbmVkIGdlbmVyYXRvckhhc2ggPSBtX2dyYWRpZW50LT5oYXNo
KCk7CiAKICAgICBpZiAoIW1fY2FjaGVkSW1hZ2UgfHwgbV9jYWNoZWRHZW5lcmF0b3JIYXNoICE9
IGdlbmVyYXRvckhhc2ggfHwgbV9jYWNoZWRBZGp1c3RlZFNpemUgIT0gYWRqdXN0ZWRTaXplIHx8
ICFhcmVFc3NlbnRpYWxseUVxdWFsKGRlc3RDb250ZXh0LnNjYWxlRmFjdG9yKCksIG1fY2FjaGVk
U2NhbGVGYWN0b3IpKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQiwgZGVzdENvbnRleHQpOworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoYWRqdXN0ZWRTaXplLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSwgZGVzdENvbnRleHQpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVy
KQogICAgICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTg4Myw3ICs4ODMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
Y2xpcE91dFJvdW5kZWRSZWN0CiAgICAgY2xpcE91dChwYXRoKTsKIH0KIAotR3JhcGhpY3NDb250
ZXh0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9E
cmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25D
b2xvclNwYWNlIGNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYg
ZHJhd2luZ0Z1bmN0aW9uKQorR3JhcGhpY3NDb250ZXh0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHNS
ZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNl
LCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikKIHsK
ICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzUmVzdWx0OjpTdWNjZXNzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHJldmlzaW9uIDI3NzkxOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAi
Q29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkRhc2hBcnJheS5oIgorI2luY2x1ZGUgIkRlc3RpbmF0
aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZvbnRD
YXNjYWRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgpAQCAtNDEwLDcgKzQxMCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3Qg
RmxvYXRSZWN0Jik7CiAKICAgICBlbnVtIGNsYXNzIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3Vs
dCA6IGJvb2wgeyBTdWNjZXNzLCBGYWlsZWRUb0NyZWF0ZUltYWdlQnVmZmVyIH07Ci0gICAgQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQo
R3JhcGhpY3NDb250ZXh0Jik+JiYpOworICAgIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBj
bGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4m
Jik7CiAgICAgCiAgICAgSW50UmVjdCBjbGlwQm91bmRzKCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJ
bXBsLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRS
dWxlKSA9IDA7CiAgICAgdmlydHVhbCBJbnRSZWN0IGNsaXBCb3VuZHMoKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0
JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2b2lk
KEdyYXBoaWNzQ29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRl
eHQmKT4mJiBkcmF3aW5nRnVuY3Rpb24pID0gMDsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgdmly
dHVhbCB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24pID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuUGFpbnRGcmFtZUZvck1l
ZGlhKGNvbnN0IE1lZGlhUGxheWVyJikgY29uc3QgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAkocmV2aXNpb24gMjc3OTE5
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRp
YyBjb25zdCBmbG9hdCBNYXhDbGFtcGVkTGVuZ3RoID0gNDA5NjsKIHN0YXRpYyBjb25zdCBmbG9h
dCBNYXhDbGFtcGVkQXJlYSA9IE1heENsYW1wZWRMZW5ndGggKiBNYXhDbGFtcGVkTGVuZ3RoOwog
Ci1SZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0
IHNob3VsZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQorUmVmUHRyPElt
YWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVu
ZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdCBzaG91bGRVc2VE
aXNwbGF5TGlzdCwgUmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQg
cGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7CiAgICAgUmVmUHRy
PEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKICAgICAKQEAgLTU5LDcgKzU5LDcgQEAgUmVmUHRy
PEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKAogICAgIHJldHVybiBpbWFnZUJ1ZmZl
cjsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBw
aXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKK1JlZlB0cjxJbWFnZUJ1
ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmlu
Z01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25z
dCBIb3N0V2luZG93KiBob3N0V2luZG93KQogewogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1h
Z2VCdWZmZXI7CiAgICAgCkBAIC05NSw3ICs5NSw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1h
Z2VCdWZmZXI6OmNyZWF0ZUMKICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CiB9CiAKLVJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxv
YXRTaXplJiBzaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KQogewogICAgIGlmIChzaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CkBAIC0xMTEsNyArMTExLDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlQwogICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2Us
IGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1h
Z2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JT
cGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIHJldHVybiBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIGNvbnRleHQucmVuZGVyaW5nTW9kZSgpLCByZXNvbHV0aW9u
U2NhbGUsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiB9CkBAIC0xNjcsNyArMTY3
LDcgQEAgSW50U2l6ZSBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZlclNpegogICAgIHJldHVy
biBleHBhbmRlZEludFNpemUoc2l6ZSAqIGNvbnRleHQuc2NhbGVGYWN0b3IoKSk7CiB9CiAKLVJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNvcHlSZWN0VG9CdWZmZXIoY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6
Y29weVJlY3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQog
ewogICAgIGlmIChyZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEzICs0NSwxMyBAQCBzdHJ1Y3QgSXRlbUJ1
ZmZlckhhbmRsZTsKIGNsYXNzIEltYWdlQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPEltYWdlQnVmZmVyPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEltYWdlQnVmZmVyPiB7CiBw
dWJsaWM6CiAgICAgLy8gV2lsbCByZXR1cm4gYSBudWxsIHBvaW50ZXIgb24gYWxsb2NhdGlvbiBm
YWlsdXJlLgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNy
ZWF0ZShjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlz
dCwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UsIFBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBG
bG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNv
bnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0LCBSZW5k
ZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYsIFBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBG
bG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiA9IG51
bGxwdHIpOwogCiAgICAgLy8gQ3JlYXRlIGFuIGltYWdlIGJ1ZmZlciBjb21wYXRpYmxlIHdpdGgg
dGhlIGNvbnRleHQsIHdpdGggc3VpdGFibGUgcmVzb2x1dGlvbiBmb3IgZHJhd2luZyBpbnRvIHRo
ZSBidWZmZXIgYW5kIHRoZW4gaW50byB0aGlzIGNvbnRleHQuCiAgICAgc3RhdGljIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBjb25z
dCBHcmFwaGljc0NvbnRleHQmKTsKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVh
dGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZl
cj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7
CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25zdCBHcmFw
aGljc0NvbnRleHQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAg
ICAvLyBUaGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQgd2hlbiBjbGFtcGluZyB0aGUgSW1hZ2VCdWZm
ZXIgd2hpY2ggaXMgY3JlYXRlZCBmb3IgZmlsdGVyLCBtYXNrZXIgb3IgY2xpcHBlci4KICAgICBz
dGF0aWMgYm9vbCBzaXplTmVlZHNDbGFtcGluZyhjb25zdCBGbG9hdFNpemUmKTsKQEAgLTEwNyw3
ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShC
YWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSwgUHJlc2VydmVSZXNvbHV0aW9uID0g
UHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3QgPSAwOwogCiAgICAgLy8gQ3JlYXRlIGFuIGlt
YWdlIGJ1ZmZlciBjb21wYXRpYmxlIHdpdGggdGhlIGNvbnRleHQgYW5kIGNvcHkgcmVjdCBmcm9t
IHRoaXMgYnVmZmVyIGludG8gdGhpcyBuZXcgb25lLgotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4g
Y29weVJlY3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Us
IGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY29weVJl
Y3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
LCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgPSB7IH0pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiA9IHsgfSkgPSAwOwpAQCAtMTIwLDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgY2xpcFRvTWFzayhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgY29udmVydFRvTHVtaW5hbmNlTWFz
aygpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0aW5hdGlv
bkNvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGRzdENvbG9y
U3BhY2UpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHNyY0NvbG9yU3BhY2UsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgZHN0Q29sb3JTcGFjZSkgPSAwOwogCiAgICAgdmlydHVhbCBTdHJpbmcgdG9EYXRh
VVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IFdU
Rjo6bnVsbG9wdCwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkgPSBXVEY6Om51bGxvcHQpIGNv
bnN0ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTMsNiArNTMsOCBAQCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVy
QmFja2VuZChjCiB7CiB9CiAKK0ltYWdlQnVmZmVyQmFja2VuZDo6fkltYWdlQnVmZmVyQmFja2Vu
ZCgpID0gZGVmYXVsdDsKKwogUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckJhY2tlbmQ6
OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQogewogICAgIHJldHVybiBjb3B5TmF0aXZlSW1hZ2UoRG9u
dENvcHlCYWNraW5nU3RvcmUpOwpAQCAtMTE0LDE1ICsxMTYsMTcgQEAgT3B0aW9uYWw8UGl4ZWxC
dWZmZXI+IEltYWdlQnVmZmVyQmFja2VuZAogICAgIGlmIChkZXN0aW5hdGlvblJlY3Quc2l6ZSgp
ICE9IHNvdXJjZVJlY3RTY2FsZWQuc2l6ZSgpKQogICAgICAgICBwaXhlbEJ1ZmZlci0+ZGF0YSgp
Lnplcm9GaWxsKCk7CiAKLSAgICBDb25zdFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgc291cmNl
OwotICAgIHNvdXJjZS5mb3JtYXQgPSB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRp
cGxpZWQsIHBpeGVsRm9ybWF0KCksIGNvbG9yU3BhY2UoKSB9OwotICAgIHNvdXJjZS5ieXRlc1Bl
clJvdyA9IGJ5dGVzUGVyUm93KCk7Ci0gICAgc291cmNlLnJvd3MgPSByZWludGVycHJldF9jYXN0
PHVpbnQ4X3QqPihkYXRhKSArIHNvdXJjZVJlY3RDbGlwcGVkLnkoKSAqIHNvdXJjZS5ieXRlc1Bl
clJvdyArIHNvdXJjZVJlY3RDbGlwcGVkLngoKSAqIDQ7CisgICAgQ29uc3RQaXhlbEJ1ZmZlckNv
bnZlcnNpb25WaWV3IHNvdXJjZSB7CisgICAgICAgIHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6
UHJlbXVsdGlwbGllZCwgcGl4ZWxGb3JtYXQoKSwgY29sb3JTcGFjZSgpIH0sCisgICAgICAgIGJ5
dGVzUGVyUm93KCksCisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEpICsg
c291cmNlUmVjdENsaXBwZWQueSgpICogc291cmNlLmJ5dGVzUGVyUm93ICsgc291cmNlUmVjdENs
aXBwZWQueCgpICogNAorICAgIH07CiAgICAgCi0gICAgUGl4ZWxCdWZmZXJDb252ZXJzaW9uVmll
dyBkZXN0aW5hdGlvbjsKLSAgICBkZXN0aW5hdGlvbi5mb3JtYXQgPSBkZXN0aW5hdGlvbkZvcm1h
dDsKLSAgICBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyA9IDQgKiBzb3VyY2VSZWN0U2NhbGVkLndp
ZHRoKCk7Ci0gICAgZGVzdGluYXRpb24ucm93cyA9IHBpeGVsQnVmZmVyLT5kYXRhKCkuZGF0YSgp
ICsgZGVzdGluYXRpb25SZWN0LnkoKSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ICsgZGVzdGlu
YXRpb25SZWN0LngoKSAqIDQ7CisgICAgUGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBkZXN0aW5h
dGlvbiB7CisgICAgICAgIGRlc3RpbmF0aW9uRm9ybWF0LAorICAgICAgICBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oNCAqIHNvdXJjZVJlY3RTY2FsZWQud2lkdGgoKSksCisgICAgICAgIHBpeGVsQnVm
ZmVyLT5kYXRhKCkuZGF0YSgpICsgZGVzdGluYXRpb25SZWN0LnkoKSAqIGRlc3RpbmF0aW9uLmJ5
dGVzUGVyUm93ICsgZGVzdGluYXRpb25SZWN0LngoKSAqIDQKKyAgICB9OwogCiAgICAgY29udmVy
dEltYWdlUGl4ZWxzKHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uUmVjdC5zaXplKCkp
OwogCkBAIC0xNDcsMTUgKzE1MSwxNyBAQCB2b2lkIEltYWdlQnVmZmVyQmFja2VuZDo6cHV0UGl4
ZWxCdWZmZXIoCiAgICAgZGVzdGluYXRpb25SZWN0LmludGVyc2VjdChiYWNrZW5kUmVjdCgpKTsK
ICAgICBzb3VyY2VSZWN0Q2xpcHBlZC5zZXRTaXplKGRlc3RpbmF0aW9uUmVjdC5zaXplKCkpOwog
Ci0gICAgQ29uc3RQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IHNvdXJjZTsKLSAgICBzb3VyY2Uu
Zm9ybWF0ID0gc291cmNlUGl4ZWxCdWZmZXIuZm9ybWF0KCk7Ci0gICAgc291cmNlLmJ5dGVzUGVy
Um93ID0gNCAqIHNvdXJjZVBpeGVsQnVmZmVyLnNpemUoKS53aWR0aCgpOwotICAgIHNvdXJjZS5y
b3dzID0gc291cmNlUGl4ZWxCdWZmZXIuZGF0YSgpLmRhdGEoKSArIHNvdXJjZVJlY3RDbGlwcGVk
LnkoKSAqIHNvdXJjZS5ieXRlc1BlclJvdyArIHNvdXJjZVJlY3RDbGlwcGVkLngoKSAqIDQ7Ci0K
LSAgICBQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IGRlc3RpbmF0aW9uOwotICAgIGRlc3RpbmF0
aW9uLmZvcm1hdCA9IHsgZGVzdGluYXRpb25BbHBoYUZvcm1hdCwgcGl4ZWxGb3JtYXQoKSwgY29s
b3JTcGFjZSgpIH07Ci0gICAgZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgPSBieXRlc1BlclJvdygp
OwotICAgIGRlc3RpbmF0aW9uLnJvd3MgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRh
KSArIGRlc3RpbmF0aW9uUmVjdC55KCkgKiBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyArIGRlc3Rp
bmF0aW9uUmVjdC54KCkgKiA0OworICAgIENvbnN0UGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBz
b3VyY2UgeworICAgICAgICBzb3VyY2VQaXhlbEJ1ZmZlci5mb3JtYXQoKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KDQgKiBzb3VyY2VQaXhlbEJ1ZmZlci5zaXplKCkud2lkdGgoKSks
CisgICAgICAgIHNvdXJjZVBpeGVsQnVmZmVyLmRhdGEoKS5kYXRhKCkgKyBzb3VyY2VSZWN0Q2xp
cHBlZC55KCkgKiBzb3VyY2UuYnl0ZXNQZXJSb3cgKyBzb3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0
CisgICAgfTsKKworICAgIFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgZGVzdGluYXRpb24gewor
ICAgICAgICB7IGRlc3RpbmF0aW9uQWxwaGFGb3JtYXQsIHBpeGVsRm9ybWF0KCksIGNvbG9yU3Bh
Y2UoKSB9LAorICAgICAgICBieXRlc1BlclJvdygpLAorICAgICAgICByZWludGVycHJldF9jYXN0
PHVpbnQ4X3QqPihkYXRhKSArIGRlc3RpbmF0aW9uUmVjdC55KCkgKiBkZXN0aW5hdGlvbi5ieXRl
c1BlclJvdyArIGRlc3RpbmF0aW9uUmVjdC54KCkgKiA0CisgICAgfTsKIAogICAgIGNvbnZlcnRJ
bWFnZVBpeGVscyhzb3VyY2UsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvblJlY3Quc2l6ZSgpKTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFj
a2VuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyQmFja2VuZC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjUsNyArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIK
KyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3Qu
aCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzR0wuaCIKICNpbmNsdWRlICJJbWFnZVBhaW50aW5n
T3B0aW9ucy5oIgpAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFBpeGVsRm9ybWF0
IHBpeGVsRm9ybWF0OwogICAgIH07CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbWFn
ZUJ1ZmZlckJhY2tlbmQoKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+
SW1hZ2VCdWZmZXJCYWNrZW5kKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSW50U2l6
ZSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShjb25zdCBQYXJhbWV0ZXJzJik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIHNpemVfdCBjYWxjdWxhdGVNZW1vcnlDb3N0KGNvbnN0IEludFNpemUmIGJh
Y2tlbmRTaXplLCB1bnNpZ25lZCBieXRlc1BlclJvdyk7CkBAIC0xMDIsNyArMTAyLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBjbGlwVG9NYXNrKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYpIHsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb252ZXJ0VG9MdW1p
bmFuY2VNYXNrKCk7Ci0gICAgdmlydHVhbCB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGlu
YXRpb25Db2xvclNwYWNlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpIHsgfQogCiAgICAgdmlydHVhbCBTdHJpbmcgdG9E
YXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwg
UHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8dWludDhf
dD4gdG9EYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0
eSkgY29uc3QgPSAwOwpAQCAtMTQwLDcgKzE0MCw3IEBAIHByb3RlY3RlZDoKIAogICAgIEludFNp
emUgbG9naWNhbFNpemUoKSBjb25zdCB7IHJldHVybiBJbnRTaXplKG1fcGFyYW1ldGVycy5sb2dp
Y2FsU2l6ZSk7IH0KICAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCB7IHJldHVybiBt
X3BhcmFtZXRlcnMucmVzb2x1dGlvblNjYWxlOyB9Ci0gICAgRGVzdGluYXRpb25Db2xvclNwYWNl
IGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMuY29sb3JTcGFjZTsgfQor
ICAgIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcGFyYW1ldGVycy5jb2xvclNwYWNlOyB9CiAgICAgUGl4ZWxGb3JtYXQgcGl4ZWxGb3Jt
YXQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMucGl4ZWxGb3JtYXQ7IH0KIAogICAgIElu
dFJlY3QgbG9naWNhbFJlY3QoKSBjb25zdCB7IHJldHVybiBJbnRSZWN0KEludFBvaW50Ojp6ZXJv
KCksIGxvZ2ljYWxTaXplKCkpOyB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGl4ZWxCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw3ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFscGhhUHJlbXVsdGlwbGlj
YXRpb24uaCIKLSNpbmNsdWRlICJDb2xvclNwYWNlLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25D
b2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlBpeGVsQnVmZmVy
Rm9ybWF0LmgiCiAjaW5jbHVkZSAiUGl4ZWxGb3JtYXQuaCIKQEAgLTg3LDE5ICs4NywyMSBAQCB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIFBpeGVsQnVmZmVyCiAKIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZlcjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiB7Ci0gICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0OwotICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoZm9ybWF0KSkKKyAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlckZvcm1hdD4g
Zm9ybWF0OworICAgIGRlY29kZXIgPj4gZm9ybWF0OworICAgIGlmICghZm9ybWF0KQogICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgLy8gRklYTUU6IFN1cHBvcnQgbm9uLTggYml0
IGZvcm1hdHMuCi0gICAgaWYgKCEoZm9ybWF0LnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpS
R0JBOCB8fCBmb3JtYXQucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KSkKKyAgICBp
ZiAoIShmb3JtYXQtPnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCB8fCBmb3JtYXQt
PnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCkpCiAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAKLSAgICBJbnRTaXplIHNpemU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShz
aXplKSkKKyAgICBPcHRpb25hbDxJbnRTaXplPiBzaXplOworICAgIGRlY29kZXIgPj4gc2l6ZTsK
KyAgICBpZiAoIXNpemUpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBhdXRv
IGNvbXB1dGVkQnVmZmVyU2l6ZSA9IFBpeGVsQnVmZmVyOjpjb21wdXRlQnVmZmVyU2l6ZShmb3Jt
YXQsIHNpemUpOworICAgIGF1dG8gY29tcHV0ZWRCdWZmZXJTaXplID0gUGl4ZWxCdWZmZXI6OmNv
bXB1dGVCdWZmZXJTaXplKCpmb3JtYXQsICpzaXplKTsKICAgICBpZiAoY29tcHV0ZWRCdWZmZXJT
aXplLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIApAQCAt
MTA3LDcgKzEwOSw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPFBpeGVsQnUK
ICAgICBpZiAoIWRlY29kZXIudGVtcGxhdGUgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjx1
aW50OF90PihidWZmZXJTaXplKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAg
IGF1dG8gcmVzdWx0ID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZUZvckRlY29kaW5nKGZvcm1hdCwg
c2l6ZSwgYnVmZmVyU2l6ZSk7CisgICAgYXV0byByZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3Jl
YXRlRm9yRGVjb2RpbmcoV1RGTW92ZSgqZm9ybWF0KSwgKnNpemUsIGJ1ZmZlclNpemUpOwogICAg
IGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckNvbnZlcnNpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVy
Q29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDEyICsyNywxMSBAQAogI2luY2x1ZGUgIlBpeGVsQnVmZmVyQ29udmVyc2lvbi5oIgogCiAj
aW5jbHVkZSAiQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIgotI2luY2x1ZGUgIkNvbG9yU3BhY2Uu
aCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJJbnRTaXpl
LmgiCiAjaW5jbHVkZSAiUGl4ZWxGb3JtYXQuaCIKIAogI2lmIFVTRShBQ0NFTEVSQVRFKSAmJiBV
U0UoQ0cpCi0jaW5jbHVkZSAiQ29sb3JTcGFjZUNHLmgiCiAjaW5jbHVkZSA8QWNjZWxlcmF0ZS9B
Y2NlbGVyYXRlLmg+CiAjZW5kaWYKIApAQCAtNzEsNyArNzAsNyBAQCBzdGF0aWMgaW5saW5lIHZJ
bWFnZV9DR0ltYWdlRm9ybWF0IG1ha2VWCiAKICAgICByZXN1bHQuYml0c1BlckNvbXBvbmVudCA9
IGJpdHNQZXJDb21wb25lbnQ7CiAgICAgcmVzdWx0LmJpdHNQZXJQaXhlbCA9IGJpdHNQZXJQaXhl
bDsKLSAgICByZXN1bHQuY29sb3JTcGFjZSA9IGNhY2hlZENHQ29sb3JTcGFjZShmb3JtYXQuY29s
b3JTcGFjZSk7CisgICAgcmVzdWx0LmNvbG9yU3BhY2UgPSBmb3JtYXQuY29sb3JTcGFjZS5wbGF0
Zm9ybUNvbG9yU3BhY2UoKTsKICAgICByZXN1bHQuYml0bWFwSW5mbyA9IGJpdG1hcEluZm87CiAg
ICAgcmVzdWx0LnZlcnNpb24gPSAwOwogICAgIHJlc3VsdC5kZWNvZGUgPSBudWxscHRyOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZl
ckZvcm1hdC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFscGhhUHJlbXVsdGlwbGljYXRpb24uaCIK
LSNpbmNsdWRlICJDb2xvclNwYWNlLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNl
LmgiCiAjaW5jbHVkZSAiUGl4ZWxGb3JtYXQuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgpAQCAtNTEsMTkgKzUxLDIyIEBAIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgUGl4ZWxCdWZmZXIKIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
T3B0aW9uYWw8UGl4ZWxCdWZmZXJGb3JtYXQ+IFBpeGVsQnVmZmVyRm9ybWF0OjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlcikKIHsKLSAgICBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGFscGhhRm9ybWF0
OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWxwaGFGb3JtYXQpKQorICAgIE9wdGlvbmFsPEFs
cGhhUHJlbXVsdGlwbGljYXRpb24+IGFscGhhRm9ybWF0OworICAgIGRlY29kZXIgPj4gYWxwaGFG
b3JtYXQ7CisgICAgaWYgKCFhbHBoYUZvcm1hdCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKIAotICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0OwotICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocGl4ZWxGb3JtYXQpKQorICAgIE9wdGlvbmFsPFBpeGVsRm9ybWF0PiBwaXhlbEZvcm1hdDsK
KyAgICBkZWNvZGVyID4+IHBpeGVsRm9ybWF0OworICAgIGlmICghcGl4ZWxGb3JtYXQpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29s
b3JTcGFjZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbG9yU3BhY2UpKQorICAgIE9wdGlv
bmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKKyAgICBkZWNvZGVyID4+IGNv
bG9yU3BhY2U7CisgICAgaWYgKCFjb2xvclNwYWNlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogCi0gICAgcmV0dXJuIHsgeyBhbHBoYUZvcm1hdCwgcGl4ZWxGb3JtYXQsIGNvbG9yU3Bh
Y2UgfSB9OworICAgIHJldHVybiB7IHsgV1RGTW92ZSgqYWxwaGFGb3JtYXQpLCBXVEZNb3ZlKCpw
aXhlbEZvcm1hdCksIFdURk1vdmUoKmNvbG9yU3BhY2UpIH0gfTsKIH0KIAogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1Db2xvclNwYWNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1Db2xvclNw
YWNlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1Db2xvclNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKENHKQorI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KK3R5cGVkZWYgc3RydWN0IENHQ29sb3JTcGFjZSogQ0dDb2xvclNwYWNlUmVmOwor
I2Vsc2UKKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworI2lmIFVTRShDRykKKwordXNpbmcgUGxhdGZvcm1Db2xvclNwYWNlID0gUmV0
YWluUHRyPENHQ29sb3JTcGFjZVJlZj47Cit1c2luZyBQbGF0Zm9ybUNvbG9yU3BhY2VWYWx1ZSA9
IENHQ29sb3JTcGFjZVJlZjsKKworI2Vsc2UKKworc3RydWN0IFBsYXRmb3JtQ29sb3JTcGFjZSB7
CisgICAgZW51bSBjbGFzcyBOYW1lIHsKKyAgICAgICAgU1JHQgorI2lmIEVOQUJMRShERVNUSU5B
VElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKKyAgICAgICAgLCBMaW5lYXJTUkdCCisjZW5k
aWYKKyNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExBWV9QMykKKyAgICAg
ICAgLCBEaXNwbGF5UDMKKyNlbmRpZgorICAgIH07CisgICAgTmFtZSBuYW1lOworICAgIE5hbWUg
Z2V0KCkgY29uc3QgeyByZXR1cm4gbmFtZTsgfQorfTsKK3VzaW5nIFBsYXRmb3JtQ29sb3JTcGFj
ZVZhbHVlID0gUGxhdGZvcm1Db2xvclNwYWNlOjpOYW1lOworCisjZW5kaWYKKworfQorCituYW1l
c3BhY2UgV1RGIHsKKworI2lmICFVU0UoQ0cpCisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFp
dHM8V2ViQ29yZTo6UGxhdGZvcm1Db2xvclNwYWNlOjpOYW1lPiB7CisgICAgdXNpbmcgdmFsdWVz
ID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6UGxhdGZvcm1Db2xvclNwYWNlOjpOYW1l
LAorICAgICAgICBXZWJDb3JlOjpQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU6OlNSR0IKKyNpZiBF
TkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCisgICAgICAgICwgV2Vi
Q29yZTo6UGxhdGZvcm1Db2xvclNwYWNlOjpOYW1lOjpMaW5lYXJTUkdCCisjZW5kaWYKKyNpZiBF
TkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExBWV9QMykKKyAgICAgICAgLCBXZWJD
b3JlOjpQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU6OkRpc3BsYXlQMworI2VuZGlmCisgICAgPjsK
K307CisKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVt
b3RlVmlkZW9TYW1wbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHN0YXRp
YyBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4KICAgICB9CiAKICAgICBJbnRTaXpl
IHNpemUgeyBzdGF0aWNfY2FzdDxpbnQ+KENWUGl4ZWxCdWZmZXJHZXRXaWR0aChwaXhlbEJ1ZmZl
cikpLCBzdGF0aWNfY2FzdDxpbnQ+KENWUGl4ZWxCdWZmZXJHZXRIZWlnaHQocGl4ZWxCdWZmZXIp
KSB9OwotICAgIGF1dG8gaW9TdXJmYWNlID0gIElPU3VyZmFjZTo6Y3JlYXRlKHNpemUsIHNSR0JD
b2xvclNwYWNlUmVmKCksIElPU3VyZmFjZTo6Rm9ybWF0OjpCR1JBKTsKKyAgICBhdXRvIGlvU3Vy
ZmFjZSA9ICBJT1N1cmZhY2U6OmNyZWF0ZShzaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgSU9TdXJmYWNlOjpGb3JtYXQ6OkJHUkEpOwogCiAgICAgSU9TdXJmYWNlOjpMb2NrZXIg
bG9jaygqaW9TdXJmYWNlKTsKICAgICB2SW1hZ2VfQnVmZmVyIHNyYzsKQEAgLTExMyw3ICsxMTMs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+IFJlbW90CiAgICAgICAgIHN1
cmZhY2UgPSBpb1N1cmZhY2UtPnN1cmZhY2UoKTsKICAgICB9CiAKLSAgICByZXR1cm4gc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPihuZXcgUmVtb3RlVmlkZW9TYW1wbGUoc3VyZmFj
ZSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwgc2FtcGxlLnByZXNlbnRhdGlvblRpbWUoKSwgc2FtcGxl
LnZpZGVvUm90YXRpb24oKSwgc2FtcGxlLnZpZGVvTWlycm9yZWQoKSkpOworICAgIHJldHVybiBz
dGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+KG5ldyBSZW1vdGVWaWRlb1NhbXBsZShz
dXJmYWNlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgc2FtcGxlLnByZXNlbnRhdGlv
blRpbWUoKSwgc2FtcGxlLnZpZGVvUm90YXRpb24oKSwgc2FtcGxlLnZpZGVvTWlycm9yZWQoKSkp
OwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+IFJlbW90ZVZpZGVvU2Ft
cGxlOjpjcmVhdGUoQ1ZQaXhlbEJ1ZmZlclJlZiBpbWFnZUJ1ZmZlciwgTWVkaWFUaW1lJiYgcHJl
c2VudGF0aW9uVGltZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24pCkBAIC0x
MjQsMTAgKzEyNCwxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+IFJlbW90
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+KG5ldyBSZW1vdGVWaWRlb1NhbXBsZShzdXJmYWNlLCBz
UkdCQ29sb3JTcGFjZVJlZigpLCBXVEZNb3ZlKHByZXNlbnRhdGlvblRpbWUpLCByb3RhdGlvbiwg
ZmFsc2UpKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPihu
ZXcgUmVtb3RlVmlkZW9TYW1wbGUoc3VyZmFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCksIFdURk1vdmUocHJlc2VudGF0aW9uVGltZSksIHJvdGF0aW9uLCBmYWxzZSkpOwogfQogCi1S
ZW1vdGVWaWRlb1NhbXBsZTo6UmVtb3RlVmlkZW9TYW1wbGUoSU9TdXJmYWNlUmVmIHN1cmZhY2Us
IENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlLCBNZWRpYVRpbWUmJiB0aW1lLCBNZWRpYVNhbXBs
ZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwgYm9vbCBtaXJyb3JlZCkKK1JlbW90ZVZpZGVvU2Ft
cGxlOjpSZW1vdGVWaWRlb1NhbXBsZShJT1N1cmZhY2VSZWYgc3VyZmFjZSwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBNZWRpYVRpbWUmJiB0aW1lLCBNZWRpYVNhbXBs
ZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlvbiwgYm9vbCBtaXJyb3JlZCkKICAgICA6IG1faW9TdXJm
YWNlKFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVN1cmZhY2Uoc3VyZmFjZSwgY29sb3JT
cGFjZSkpCiAgICAgLCBtX3JvdGF0aW9uKHJvdGF0aW9uKQogICAgICwgbV90aW1lKFdURk1vdmUo
dGltZSkpCkBAIC0xNDAsNyArMTQwLDcgQEAgUmVtb3RlVmlkZW9TYW1wbGU6OlJlbW90ZVZpZGVv
U2FtcGxlKElPUwogSU9TdXJmYWNlUmVmIFJlbW90ZVZpZGVvU2FtcGxlOjpzdXJmYWNlKCkgY29u
c3QKIHsKICAgICBpZiAoIW1faW9TdXJmYWNlICYmIG1fc2VuZFJpZ2h0KQotICAgICAgICBjb25z
dF9jYXN0PFJlbW90ZVZpZGVvU2FtcGxlKj4odGhpcyktPm1faW9TdXJmYWNlID0gV2ViQ29yZTo6
SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoY29uc3RfY2FzdDxSZW1vdGVW
aWRlb1NhbXBsZSo+KHRoaXMpLT5tX3NlbmRSaWdodCksIHNSR0JDb2xvclNwYWNlUmVmKCkpOwor
ICAgICAgICBjb25zdF9jYXN0PFJlbW90ZVZpZGVvU2FtcGxlKj4odGhpcyktPm1faW9TdXJmYWNl
ID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoY29uc3Rf
Y2FzdDxSZW1vdGVWaWRlb1NhbXBsZSo+KHRoaXMpLT5tX3NlbmRSaWdodCksIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpKTsKIAogICAgIHJldHVybiBtX2lvU3VyZmFjZSA/IG1faW9TdXJm
YWNlLT5zdXJmYWNlKCkgOiBudWxscHRyOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oCShyZXZpc2lvbiAyNzc5
MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBs
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNyArMTAzLDcgQEAgcHVibGljOgogICAgIH0KIAog
cHJpdmF0ZToKLSAgICBSZW1vdGVWaWRlb1NhbXBsZShJT1N1cmZhY2VSZWYsIENHQ29sb3JTcGFj
ZVJlZiwgTWVkaWFUaW1lJiYsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uLCBib29sKTsKKyAg
ICBSZW1vdGVWaWRlb1NhbXBsZShJT1N1cmZhY2VSZWYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYsIE1lZGlhVGltZSYmLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiwgYm9vbCk7CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBtX2lvU3VyZmFjZTsKICAg
ICBXVEY6Ok1hY2hTZW5kUmlnaHQgbV9zZW5kUmlnaHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAgcHVibGljOgogICAgICAgICBjbGVhclNjcmF0Y2hC
dWZmZXIoKTsKIAogICAgICAgICAvLyBTaGFkb3dCbHVyIGlzIG5vdCB1c2VkIHdpdGggYWNjZWxl
cmF0ZWQgZHJhd2luZywgc28gaXQncyBPSyB0byBtYWtlIGFuIHVuY29uZGl0aW9uYWxseSB1bmFj
Y2VsZXJhdGVkIGJ1ZmZlci4KLSAgICAgICAgbV9pbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGUocm91bmRlZFNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgbV9p
bWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUocm91bmRlZFNpemUsIFJlbmRlcmluZ01v
ZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOwogICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlcjsKICAgICB9CiAK
QEAgLTYwNCw3ICs2MDQsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvdyhjb25z
dCBBCiAKIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHNoYWRvd2VkUmVjdCwg
Y29uc3QgTGF5ZXJJbWFnZVByb3BlcnRpZXMmIGxheWVySW1hZ2VQcm9wZXJ0aWVzLCBjb25zdCBE
cmF3QnVmZmVyQ2FsbGJhY2smIGRyYXdCdWZmZXIpCiB7Ci0gICAgYXV0byBsYXllckltYWdlID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShleHBhbmRlZEludFNpemUobGF5ZXJJbWFnZVByb3BlcnRpZXMu
bGF5ZXJTaXplKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gbGF5ZXJJbWFn
ZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoZXhwYW5kZWRJbnRTaXplKGxheWVySW1hZ2VQcm9wZXJ0
aWVzLmxheWVyU2l6ZSksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghbGF5
ZXJJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC02MzIsNyArNjMyLDcgQEAgdm9pZCBTaGFk
b3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaQogCiB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJ
bnNldFNoYWRvd1dpdGhvdXRUaWxpbmcoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxv
YXRSZWN0JiBmdWxsUmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgaG9sZVJlY3QsIGNvbnN0
IExheWVySW1hZ2VQcm9wZXJ0aWVzJiBsYXllckltYWdlUHJvcGVydGllcywgY29uc3QgRHJhd0J1
ZmZlckNhbGxiYWNrJiBkcmF3QnVmZmVyKQogewotICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoZXhwYW5kZWRJbnRTaXplKGxheWVySW1hZ2VQcm9wZXJ0aWVzLmxheWVy
U2l6ZSksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGxheWVySW1hZ2UgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGllcy5s
YXllclNpemUpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWxheWVySW1h
Z2UpCiAgICAgICAgIHJldHVybjsKIApAQCAtNzA1LDcgKzcwNSw3IEBAIHZvaWQgU2hhZG93Qmx1
cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW4KICNlbmRpZgogCiAgICAgaWYgKCFsYXllckltYWdl
QnVmZmVyKSB7Ci0gICAgICAgIGxheWVySW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KHRlbXBsYXRlU2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgICAgICBsYXllcklt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNpemUsIFJlbmRlcmluZ01v
ZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOwogICAgICAgICBpZiAoIWxheWVySW1hZ2VCdWZmZXIpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtNzYzLDcgKzc2Myw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6
ZHJhd0luc2V0U2hhZG93V2l0aFRpbGkKICNlbmRpZgogCiAgICAgaWYgKCFsYXllckltYWdlQnVm
ZmVyKSB7Ci0gICAgICAgIGxheWVySW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRl
bXBsYXRlU2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgICAgICBsYXllckltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNpemUsIFJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOwogICAgICAgICBpZiAoIWxheWVySW1hZ2VCdWZmZXIpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtOTAzLDcgKzkwMyw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6Ymx1
clNoYWRvd0J1ZmZlcihJbWFnZUIKICAgICBpZiAobV90eXBlICE9IEJsdXJTaGFkb3cpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVs
dGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JB
OCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsKICAgICBJbnRSZWN0IGJsdXJSZWN0
KEludFBvaW50KCksIHRlbXBsYXRlU2l6ZSk7CiAgICAgYXV0byBsYXllckRhdGEgPSBsYXllcklt
YWdlLmdldFBpeGVsQnVmZmVyKGZvcm1hdCwgYmx1clJlY3QpOwogICAgIGlmICghbGF5ZXJEYXRh
KQpAQCAtOTMzLDcgKzkzMyw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1NoYWRvd0xheWVyKGNv
bnN0IEEKIAogICAgIGFkanVzdEJsdXJSYWRpdXModHJhbnNmb3JtKTsKIAotICAgIGF1dG8gbGF5
ZXJJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoZXhwYW5kZWRJbnRTaXplKGxheWVySW1hZ2VQ
cm9wZXJ0aWVzLT5sYXllclNpemUpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0
byBsYXllckltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShleHBhbmRlZEludFNpemUobGF5ZXJJ
bWFnZVByb3BlcnRpZXMtPmxheWVyU2l6ZSksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
IDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwog
ICAgIGlmICghbGF5ZXJJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIHZvaWQgd2lwZUFscGhhQ2hhbm5l
bEZyb21QaXhlbHMoaQogCiBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKQogewotICAgIFBpeGVsQnVmZmVyRm9y
bWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4
ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICBQaXhl
bEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRp
cGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkg
fTsKICAgICBhdXRvIHBpeGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQs
IGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkpOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dEltcGxDYWlyby5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQxNCw3ICs0MTQsNyBAQCBGbG9hdFJlY3QgR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvOjpyb3VuCiAgICAgcmV0dXJuIENhaXJvOjpTdGF0ZTo6cm91bmRUb0RldmljZVBpeGVscyht
X3BsYXRmb3JtQ29udGV4dCwgcmVjdCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiwgRGVzdGluYXRpb25D
b2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKQordm9pZCBHcmFw
aGljc0NvbnRleHRJbXBsQ2Fpcm86OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNz
Q29udGV4dCYpPiYmKQogewogICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJ
bXBsQ2Fpcm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpIG92ZXJyaWRlOwogICAgIEludFJl
Y3QgY2xpcEJvdW5kcygpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1h
Z2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIGNsaXBUb0Ry
YXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3ND
b250ZXh0Jik+JiYpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShWSURFTykKICAgICB2b2lkIHBhaW50
RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24p
IG92ZXJyaWRlOwogICAgIGJvb2wgY2FuUGFpbnRGcmFtZUZvck1lZGlhKGNvbnN0IE1lZGlhUGxh
eWVyJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODksMTkgKzg5LDE5IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0Jh
Y2tlbmQ6OmNsaXBUb01hc2sKICAgICAgICAgQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKCpkZXN0
Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwg
ZGVzdFJlY3QpOwogfQogCi12b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjp0cmFuc2Zvcm1D
b2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgZGVzdENvbG9yU3BhY2UpCit2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5k
Ojp0cmFuc2Zvcm1Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgc3JjQ29s
b3JTcGFjZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBkZXN0Q29sb3JTcGFjZSkKIHsK
ICAgICBpZiAoc3JjQ29sb3JTcGFjZSA9PSBkZXN0Q29sb3JTcGFjZSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgLy8gb25seSBzUkdCIDwtPiBsaW5lYXJSR0IgYXJlIHN1cHBvcnRlZCBhdCB0aGUg
bW9tZW50Ci0gICAgaWYgKChzcmNDb2xvclNwYWNlICE9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
TGluZWFyU1JHQiAmJiBzcmNDb2xvclNwYWNlICE9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QikKLSAgICAgICAgfHwgKGRlc3RDb2xvclNwYWNlICE9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
TGluZWFyU1JHQiAmJiBkZXN0Q29sb3JTcGFjZSAhPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IpKQorICAgIGlmICgoc3JjQ29sb3JTcGFjZSAhPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6Okxp
bmVhclNSR0IoKSAmJiBzcmNDb2xvclNwYWNlICE9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpKQorICAgICAgICB8fCAoZGVzdENvbG9yU3BhY2UgIT0gRGVzdGluYXRpb25Db2xvclNwYWNl
OjpMaW5lYXJTUkdCKCkgJiYgZGVzdENvbG9yU3BhY2UgIT0gRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3BhcmFtZXRlcnMuY29sb3JTcGFj
ZSA9IGRlc3RDb2xvclNwYWNlOwogCi0gICAgaWYgKGRlc3RDb2xvclNwYWNlID09IERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQikgeworICAgIGlmIChkZXN0Q29sb3JTcGFjZSA9PSBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKSkgewogICAgICAgICBzdGF0aWMgY29u
c3Qgc3RkOjphcnJheTx1aW50OF90LCAyNTY+IGxpbmVhclJnYkxVVCA9IFtdIHsKICAgICAgICAg
ICAgIHN0ZDo6YXJyYXk8dWludDhfdCwgMjU2PiBhcnJheTsKICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCAyNTY7IGkrKykgewpAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgSW1h
Z2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRyYW5zZm9ybUMKICAgICAgICAgICAgIHJldHVybiBhcnJh
eTsKICAgICAgICAgfSgpOwogICAgICAgICBwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UobGlu
ZWFyUmdiTFVUKTsKLSAgICB9IGVsc2UgaWYgKGRlc3RDb2xvclNwYWNlID09IERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQikgeworICAgIH0gZWxzZSBpZiAoZGVzdENvbG9yU3BhY2UgPT0gRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpIHsKICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6
YXJyYXk8dWludDhfdCwgMjU2PiBkZXZpY2VSZ2JMVVQ9IFtdIHsKICAgICAgICAgICAgIHN0ZDo6
YXJyYXk8dWludDhfdCwgMjU2PiBhcnJheTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCAyNTY7IGkrKykgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5o
CShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0
NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xpcFRvTWFzayhHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KSBvdmVycmlkZTsKIAotICAgIHZvaWQgdHJhbnNmb3Jt
Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgRGVzdGluYXRp
b25Db2xvclNwYWNlIGRlc3RDb2xvclNwYWNlKSBvdmVycmlkZTsKKyAgICB2b2lkIHRyYW5zZm9y
bUNvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBzcmNDb2xvclNwYWNlLCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGRlc3RDb2xvclNwYWNlKSBvdmVycmlkZTsKIAog
ICAgIFN0cmluZyB0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91
YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0IG92ZXJyaWRlOwogICAgIFZl
Y3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91
YmxlPiBxdWFsaXR5KSBjb25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIw
MDUsIDIwMDYsIDIwMDcsIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDAzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwxMyArMjksMTQgQEAKICNpZiBV
U0UoQ0cpCiAKICNpbmNsdWRlICJDb2xvclNwYWNlQ0cuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlv
bkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlIDxtdXRleD4KKyNpbmNsdWRlIDxwYWwvc3BpL2NnL0Nv
cmVHcmFwaGljc1NQSS5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8
d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Rp
bnlMUlVDYWNoZS5oPgotI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9UaW55TFJVQ2FjaGUu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIFJldGFpblB0cjxDR0NvbG9yUmVmPiBj
cmVhdGVDR0NvbG9yKGNvbnN0IENvbG9yJik7CkBAIC05MSwzNCArOTIsMzggQEAgQ29sb3I6OkNv
bG9yKENHQ29sb3JSZWYgY29sb3IsIE9wdGlvblNldAogewogfQogCi1zdGF0aWMgUmV0YWluUHRy
PENHQ29sb3JSZWY+IGNyZWF0ZUNHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQorc3RhdGljIHN0
ZDo6cGFpcjxDR0NvbG9yU3BhY2VSZWYsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4+IGNvbnZl
cnRUb0NHQ29tcGF0aWJsZUNvbXBvbmVudHMoQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb2xvckNv
bXBvbmVudHM8ZmxvYXQsIDQ+IGNvbXBvbmVudHMpCiB7Ci0gICAgYXV0byBbY29sb3JTcGFjZSwg
Y29tcG9uZW50c10gPSBjb2xvci5jb2xvclNwYWNlQW5kQ29tcG9uZW50cygpOwotCi0gICAgYXV0
byBjZ0NvbG9yU3BhY2UgPSBjYWNoZWROdWxsYWJsZUNHQ29sb3JTcGFjZShjb2xvclNwYWNlKTsK
LQogICAgIC8vIFNvbWUgQ0cgcG9ydHMgZG9uJ3Qgc3VwcG9ydCBhbGwgdGhlIGNvbG9yIHNwYWNl
cyByZXF1aXJlZCBhbmQgcmV0dXJuCiAgICAgLy8gbnVsbHB0ciBmb3IgdW5zdXBwb3J0ZWQgY29s
b3Igc3BhY2VzLiBJbiB0aG9zZSBjYXNlcywgd2UgZWFnZXJseSBjb252ZXJ0CiAgICAgLy8gdGhl
IGNvbG9yIGludG8gZWl0aGVyIGV4dGVuZGVkIHNSR0Igb3Igbm9ybWFsIHNSR0IsIGlmIGV4dGVu
ZGVkIHNSR0IgaXMKLSAgICAvLyBub3Qgc3VwcG9ydGVkLCBiZWZvcmUgY3JlYXRpbmcgdGhlIENH
Q29sb3JSZWYuCisgICAgLy8gbm90IHN1cHBvcnRlZC4KKworICAgIGF1dG8gY2dDb2xvclNwYWNl
ID0gY2FjaGVkTnVsbGFibGVDR0NvbG9yU3BhY2UoY29sb3JTcGFjZSk7CiAgICAgaWYgKCFjZ0Nv
bG9yU3BhY2UpIHsKICNpZiBIQVZFKENPUkVfR1JBUEhJQ1NfRVhURU5ERURfU1JHQl9DT0xPUl9T
UEFDRSkKLSAgICAgICAgYXV0byBjb2xvckNvbnZlcnRlZFRvRXh0ZW5kZWRTUkdCQSA9IGNhbGxX
aXRoQ29sb3JUeXBlKGNvbXBvbmVudHMsIGNvbG9yU3BhY2UsIFtdIChjb25zdCBhdXRvJiBjb2xv
cikgewotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxFeHRlbmRlZFNSR0JBPGZsb2F0
Pj4oY29sb3IpOworICAgICAgICBhdXRvIGNnQ29tcGF0aWJsZUNvbXBvbmVudHMgPSBjYWxsV2l0
aENvbG9yVHlwZShjb21wb25lbnRzLCBjb2xvclNwYWNlLCBbXSAoY29uc3QgYXV0byYgY29sb3Ip
IHsKKyAgICAgICAgICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhjb252ZXJ0Q29sb3I8RXh0
ZW5kZWRTUkdCQTxmbG9hdD4+KGNvbG9yKSk7CiAgICAgICAgIH0pOwotICAgICAgICBjb21wb25l
bnRzID0gYXNDb2xvckNvbXBvbmVudHMoY29sb3JDb252ZXJ0ZWRUb0V4dGVuZGVkU1JHQkEpOwot
ICAgICAgICBjZ0NvbG9yU3BhY2UgPSBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCk7CisgICAg
ICAgIHJldHVybiB7IGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKSwgY2dDb21wYXRpYmxlQ29t
cG9uZW50cyB9OwogI2Vsc2UKICAgICAgICAgYXV0byBjb2xvckNvbnZlcnRlZFRvU1JHQkEgPSBj
YWxsV2l0aENvbG9yVHlwZShjb21wb25lbnRzLCBjb2xvclNwYWNlLCBbXSAoY29uc3QgYXV0byYg
Y29sb3IpIHsKLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0Q29sb3I8U1JHQkE8ZmxvYXQ+Pihj
b2xvcik7CisgICAgICAgICAgICByZXR1cm4gYXNDb2xvckNvbXBvbmVudHMoY29udmVydENvbG9y
PFNSR0JBPGZsb2F0Pj4oY29sb3IpKTsKICAgICAgICAgfSk7Ci0gICAgICAgIGNvbXBvbmVudHMg
PSBhc0NvbG9yQ29tcG9uZW50cyhjb2xvckNvbnZlcnRlZFRvU1JHQkEpOwotICAgICAgICBjZ0Nv
bG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOworICAgICAgICByZXR1cm4geyBzUkdCQ29s
b3JTcGFjZVJlZigpLCBjZ0NvbXBhdGlibGVDb21wb25lbnRzIH07CiAjZW5kaWYKICAgICB9CiAK
LSAgICBhdXRvIFtyLCBnLCBiLCBhXSA9IGNvbXBvbmVudHM7Ci0gICAgQ0dGbG9hdCBjZ0Zsb2F0
Q29tcG9uZW50c1s0XSB7IHIsIGcsIGIsIGEgfTsKKyAgICByZXR1cm4geyBjZ0NvbG9yU3BhY2Us
IGNvbXBvbmVudHMgfTsKK30KKworc3RhdGljIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjcmVhdGVD
R0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICBhdXRvIFtjb2xvclNwYWNlLCBjb21w
b25lbnRzXSA9IGNvbG9yLmNvbG9yU3BhY2VBbmRDb21wb25lbnRzKCk7CisgICAgYXV0byBbY2dD
b2xvclNwYWNlLCBjZ0NvbXBhdGlibGVDb21wb25lbnRzXSA9IGNvbnZlcnRUb0NHQ29tcGF0aWJs
ZUNvbXBvbmVudHMoY29sb3JTcGFjZSwgY29tcG9uZW50cyk7CisgICAgCisgICAgYXV0byBbYzEs
IGMyLCBjMywgYzRdID0gY2dDb21wYXRpYmxlQ29tcG9uZW50czsKKyAgICBDR0Zsb2F0IGNnRmxv
YXRDb21wb25lbnRzWzRdIHsgYzEsIGMyLCBjMywgYzQgfTsKIAogICAgIHJldHVybiBhZG9wdENG
KENHQ29sb3JDcmVhdGUoY2dDb2xvclNwYWNlLCBjZ0Zsb2F0Q29tcG9uZW50cykpOwogfQpAQCAt
MTYxLDYgKzE2NiwyNCBAQCBDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImIGNv
CiAgICAgcmV0dXJuIGNhY2hlLmdldCgpLmdldChjb2xvcikuZ2V0KCk7CiB9CiAKK0NvbG9yQ29t
cG9uZW50czxmbG9hdCwgND4gcGxhdGZvcm1Db252ZXJ0Q29sb3JDb21wb25lbnRzKENvbG9yU3Bh
Y2UgaW5wdXRDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGlucHV0Q29sb3JD
b21wb25lbnRzLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIG91dHB1dENvbG9yU3BhY2Up
Cit7CisgICAgLy8gRklYTUU6IEludmVzdGlnYXRlIG9wdGltaXppbmcgdGhpcyB0byB1c2UgdGhl
IGJ1aWx0aW4gY29sb3IgY29udmVyc2lvbiBjb2RlIGZvciBzdXBwb3J0ZWQgY29sb3Igc3BhY2Vz
LgorCisgICAgYXV0byBbY2dJbnB1dENvbG9yU3BhY2UsIGNnQ29tcGF0aWJsZUNvbXBvbmVudHNd
ID0gY29udmVydFRvQ0dDb21wYXRpYmxlQ29tcG9uZW50cyhpbnB1dENvbG9yU3BhY2UsIGlucHV0
Q29sb3JDb21wb25lbnRzKTsKKyAgICBpZiAoY2dJbnB1dENvbG9yU3BhY2UgPT0gb3V0cHV0Q29s
b3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSkKKyAgICAgICAgcmV0dXJuIGNnQ29tcGF0aWJs
ZUNvbXBvbmVudHM7CisKKyAgICBhdXRvIFtjMSwgYzIsIGMzLCBjNF0gPSBjZ0NvbXBhdGlibGVD
b21wb25lbnRzOworICAgIENHRmxvYXQgc291cmNlQ29tcG9uZW50c1s0XSB7IGMxLCBjMiwgYzMs
IGM0IH07CisgICAgQ0dGbG9hdCBkZXN0aW5hdGlvbkNvbXBvbmVudHNbNF0geyB9OworCisgICAg
YXV0byB0cmFuc2Zvcm0gPSBhZG9wdENGKENHQ29sb3JUcmFuc2Zvcm1DcmVhdGUob3V0cHV0Q29s
b3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwgbnVsbHB0cikpOworICAgIGF1dG8gcmVzdWx0
ID0gQ0dDb2xvclRyYW5zZm9ybUNvbnZlcnRDb2xvckNvbXBvbmVudHModHJhbnNmb3JtLmdldCgp
LCBjZ0lucHV0Q29sb3JTcGFjZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCwgc291cmNlQ29t
cG9uZW50cywgZGVzdGluYXRpb25Db21wb25lbnRzKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3Vs
dCwgcmVzdWx0KTsKKyAgICByZXR1cm4geyBzdGF0aWNfY2FzdDxmbG9hdD4oZGVzdGluYXRpb25D
b21wb25lbnRzWzBdKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRlc3RpbmF0aW9uQ29tcG9uZW50c1sx
XSksIHN0YXRpY19jYXN0PGZsb2F0PihkZXN0aW5hdGlvbkNvbXBvbmVudHNbMl0pLCBzdGF0aWNf
Y2FzdDxmbG9hdD4oZGVzdGluYXRpb25Db21wb25lbnRzWzNdKSB9OworfQorCiB9CiAKICNlbmRp
ZiAvLyBVU0UoQ0cpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9D
b2xvclNwYWNlQ0cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9Db2xvclNwYWNlQ0cuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgJKHdvcmtpbmcgY29weSkKQEAg
LTExOSwyMyArMTE5LDQgQEAgc3RhdGljIGlubGluZSBDR0NvbG9yU3BhY2VSZWYgY2FjaGVkTnVs
bAogICAgIHJldHVybiBudWxscHRyOwogfQogCi0vLyBOT1RFOiBTaW5jZSB0aGlzIGZ1bmN0aW9u
IGlzIGZvciAqZGVzdGluYXRpb24qIGNvbG9yIHNwYWNlcyB3aG9zZSBjYWxsZXJzIGFsd2F5cyBl
eHBlY3QgYSBub24tbnVsbCBjb2xvciBzcGFjZSwgdGhpcyBmdW5jdGlvbiBpcyBndWFyYW50ZWVk
IHRvIHJldHVybiBub24tbnVsbCwgdW5saWtlIGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlKCku
Ci1zdGF0aWMgaW5saW5lIENHQ29sb3JTcGFjZVJlZiBjYWNoZWRDR0NvbG9yU3BhY2UoRGVzdGlu
YXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpCi17Ci0gICAgc3dpdGNoIChjb2xvclNwYWNlKSB7
Ci0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I6Ci0gICAgICAgIHJldHVybiBz
UkdCQ29sb3JTcGFjZVJlZigpOwotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9M
SU5FQVJfU1JHQikKLSAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQjoK
LSAgICAgICAgcmV0dXJuIGxpbmVhclNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jZW5kaWYKLSNpZiBF
TkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExBWV9QMykKLSAgICBjYXNlIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxheVAzOgotICAgICAgICByZXR1cm4gZGlzcGxheVAzQ29s
b3JTcGFjZVJlZigpOwotI2VuZGlmCi0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOwotfQotCiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHRHTENHLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUz
Miw3ICs1MzIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFRvQ2FuCiAg
ICAgfSkpOwogCiAgICAgYXV0byBpbWFnZVNpemUgPSBwaXhlbEJ1ZmZlci5zaXplKCk7Ci0gICAg
YXV0byBpbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGlt
YWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCA0ICogaW1hZ2VTaXpl
LndpZHRoKCksIGNhY2hlZENHQ29sb3JTcGFjZShwaXhlbEJ1ZmZlci5mb3JtYXQoKS5jb2xvclNw
YWNlKSwgYml0bWFwSW5mbywgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVy
aW5nSW50ZW50RGVmYXVsdCkpKTsKKyAgICBhdXRvIGltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0
ZShhZG9wdENGKENHSW1hZ2VDcmVhdGUoaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWln
aHQoKSwgOCwgMzIsIDQgKiBpbWFnZVNpemUud2lkdGgoKSwgcGl4ZWxCdWZmZXIuZm9ybWF0KCku
Y29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwgYml0bWFwSW5mbywgZGF0YVByb3ZpZGVy
LmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpKTsKIAogICAgIC8v
IENTUyBzdHlsaW5nIG1heSBjYXVzZSB0aGUgY2FudmFzJ3MgY29udGVudCB0byBiZSByZXNpemVk
IG9uCiAgICAgLy8gdGhlIHBhZ2UuIEdvIGJhY2sgdG8gdGhlIENhbnZhcyB0byBmaWd1cmUgb3V0
IHRoZSBjb3JyZWN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
T1N1cmZhY2VQb29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEhBVkUoSU9TVVJGQUNFKQogCisjaW5jbHVk
ZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cu
aCIKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CkBAIC01OSw3ICs2MCw3IEBAIElPU3VyZmFjZVBvb2wmIElPU3Vy
ZmFjZVBvb2w6OnNoYXJlZFBvb2wKICAgICByZXR1cm4gcG9vbDsKIH0KIAotc3RhdGljIGJvb2wg
c3VyZmFjZU1hdGNoZXNQYXJhbWV0ZXJzKElPU3VyZmFjZSYgc3VyZmFjZSwgSW50U2l6ZSByZXF1
ZXN0ZWRTaXplLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwgSU9TdXJmYWNlOjpGb3JtYXQg
Zm9ybWF0KQorc3RhdGljIGJvb2wgc3VyZmFjZU1hdGNoZXNQYXJhbWV0ZXJzKElPU3VyZmFjZSYg
c3VyZmFjZSwgSW50U2l6ZSByZXF1ZXN0ZWRTaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmIGNvbG9yU3BhY2UsIElPU3VyZmFjZTo6Rm9ybWF0IGZvcm1hdCkKIHsKICAgICBpZiAoZm9y
bWF0ICE9IHN1cmZhY2UuZm9ybWF0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwMiw3
ICsxMDMsNyBAQCB2b2lkIElPU3VyZmFjZVBvb2w6OmRpZFVzZVN1cmZhY2VPZlNpemUoCiAgICAg
bV9zaXplc0luUHJ1bmVPcmRlci5hcHBlbmQoc2l6ZSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJ
T1N1cmZhY2U+IElPU3VyZmFjZVBvb2w6OnRha2VTdXJmYWNlKEludFNpemUgc2l6ZSwgQ0dDb2xv
clNwYWNlUmVmIGNvbG9yU3BhY2UsIElPU3VyZmFjZTo6Rm9ybWF0IGZvcm1hdCkKK3N0ZDo6dW5p
cXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZVBvb2w6OnRha2VTdXJmYWNlKEludFNpemUgc2l6
ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBJT1N1cmZhY2U6OkZv
cm1hdCBmb3JtYXQpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIENhY2hl
ZFN1cmZhY2VNYXA6Oml0ZXJhdG9yIG1hcEl0ZXIgPSBtX2NhY2hlZFN1cmZhY2VzLmZpbmQoc2l6
ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQ
b29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SU9TdXJmYWNlUG9vbC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYg
KzM5LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEZXN0aW5hdGF0aW9uQ29s
b3JTcGFjZTsKKwogY2xhc3MgSU9TdXJmYWNlUG9vbCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoSU9TdXJmYWNlUG9vbCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00Nyw3
ICs0OSw3IEBAIGNsYXNzIElPU3VyZmFjZVBvb2wgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBJT1N1cmZhY2VQb29sJiBzaGFyZWRQb29sKCk7CiAKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8SU9TdXJmYWNlPiB0YWtlU3VyZmFjZShJbnRTaXplLCBDR0NvbG9yU3BhY2VSZWYsIElP
U3VyZmFjZTo6Rm9ybWF0KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiB0YWtlU3Vy
ZmFjZShJbnRTaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBJT1N1cmZhY2U6OkZv
cm1hdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRTdXJmYWNlKHN0ZDo6dW5pcXVlX3B0
cjxJT1N1cmZhY2U+KTsKIAogICAgIHZvaWQgZGlzY2FyZEFsbFN1cmZhY2VzKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJDR0JhY2tlbmQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE3NCw3ICsxNzQsNyBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZm
ZXJDR0JhY2tlCiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBiZSB1c2luZyB0aGUgc2Ft
ZSBsb2dpYyBhcyBJbWFnZUJ1ZmZlclV0aWxpdGllc0NHPwogCiAgICAgICAgIC8vIEpQRUdzIGRv
bid0IGhhdmUgYW4gYWxwaGEgY2hhbm5lbCwgc28gd2UgaGF2ZSB0byBtYW51YWxseSBjb21wb3Np
dGUgb24gdG9wIG9mIGJsYWNrLgotICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgICAgICBQaXhlbEJ1ZmZlckZvcm1h
dCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZv
cm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgICAgIGF1
dG8gcGl4ZWxCdWZmZXIgPSBnZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIGxvZ2ljYWxSZWN0KCkpOwog
ICAgICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0xOTIsNyArMTkyLDcgQEAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IEltYWdlQnVmZmVyQ0dCYWNr
ZQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgYXV0byBpbWFnZVNpemUg
PSBwaXhlbEJ1ZmZlci0+c2l6ZSgpOwotICAgICAgICByZXR1cm4gYWRvcHRDRihDR0ltYWdlQ3Jl
YXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCA0ICogaW1h
Z2VTaXplLndpZHRoKCksIGNhY2hlZENHQ29sb3JTcGFjZShwaXhlbEJ1ZmZlci0+Zm9ybWF0KCku
Y29sb3JTcGFjZSksIGtDR0JpdG1hcEJ5dGVPcmRlckRlZmF1bHQgfCBrQ0dJbWFnZUFscGhhTm9u
ZVNraXBMYXN0LCBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRl
bnREZWZhdWx0KSk7CisgICAgICAgIHJldHVybiBhZG9wdENGKENHSW1hZ2VDcmVhdGUoaW1hZ2VT
aXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIDQgKiBpbWFnZVNpemUud2lk
dGgoKSwgcGl4ZWxCdWZmZXItPmZvcm1hdCgpLmNvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNl
KCksIGtDR0JpdG1hcEJ5dGVPcmRlckRlZmF1bHQgfCBrQ0dJbWFnZUFscGhhTm9uZVNraXBMYXN0
LCBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0
KSk7CiAgICAgfQogCiAgICAgaWYgKHJlc29sdXRpb25TY2FsZSgpID09IDEgfHwgcHJlc2VydmVS
ZXNvbHV0aW9uID09IFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKSB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcgQEAgc2l6ZV90IEltYWdlQnVmZmVyQ0dCaXRt
YXBCYWNrZW5kOjpjYWxjdQogICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNhbGN1bGF0
ZU1lbW9yeUNvc3QoYmFja2VuZFNpemUsIGNhbGN1bGF0ZUJ5dGVzUGVyUm93KGJhY2tlbmRTaXpl
KSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1h
Z2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzLCBDR0NvbG9yU3BhY2VSZWYgY2dDb2xvclNwYWNlLCBjb25zdCBIb3N0V2luZG93KikKK3N0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBI
b3N0V2luZG93KikKIHsKICAgICBBU1NFUlQocGFyYW1ldGVycy5waXhlbEZvcm1hdCA9PSBQaXhl
bEZvcm1hdDo6QkdSQTgpOwogCkBAIC04MSw3ICs4MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2UKICAgICBzaXplX3QgbnVtQnl0ZXMgPSBiYWNrZW5kU2l6ZS5o
ZWlnaHQoKSAqIGJ5dGVzUGVyUm93OwogICAgIHZlcmlmeUltYWdlQnVmZmVySXNCaWdFbm91Z2go
ZGF0YSwgbnVtQnl0ZXMpOwogCi0gICAgYXV0byBjZ0NvbnRleHQgPSBhZG9wdENGKENHQml0bWFw
Q29udGV4dENyZWF0ZShkYXRhLCBiYWNrZW5kU2l6ZS53aWR0aCgpLCBiYWNrZW5kU2l6ZS5oZWln
aHQoKSwgOCwgYnl0ZXNQZXJSb3csIGNnQ29sb3JTcGFjZSwga0NHSW1hZ2VBbHBoYVByZW11bHRp
cGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCkpOworICAgIGF1dG8gY2dDb250
ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoZGF0YSwgYmFja2VuZFNpemUud2lk
dGgoKSwgYmFja2VuZFNpemUuaGVpZ2h0KCksIDgsIGJ5dGVzUGVyUm93LCBwYXJhbWV0ZXJzLmNv
bG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVk
Rmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QpKTsKICAgICBpZiAoIWNnQ29udGV4dCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTk2LDE1ICs5NiwxNCBAQCBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShj
b25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQpCiB7Ci0gICAgaWYgKGF1dG8gY2dDb2xvclNwYWNlID0gY29udGV4dC5oYXNQbGF0Zm9ybUNv
bnRleHQoKSA/IGNvbnRleHRDb2xvclNwYWNlKGNvbnRleHQpIDogbnVsbHB0cikKLSAgICAgICAg
cmV0dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgY2dD
b2xvclNwYWNlLmdldCgpLCBudWxscHRyKTsKKyAgICBpZiAoYXV0byBjZ0NvbG9yU3BhY2UgPSBj
b250ZXh0Lmhhc1BsYXRmb3JtQ29udGV4dCgpID8gY29udGV4dENvbG9yU3BhY2UoY29udGV4dCkg
OiBudWxscHRyKSB7CisgICAgICAgIGF1dG8gb3ZlcnJpZGVQYXJhbWV0ZXJzID0gcGFyYW1ldGVy
czsKKyAgICAgICAgb3ZlcnJpZGVQYXJhbWV0ZXJzLmNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgeyBjZ0NvbG9yU3BhY2UgfTsKIAotICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIG51bGxwdHIpOwotfQorICAgICAgICByZXR1
cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShvdmVycmlkZVBhcmFtZXRlcnMs
IG51bGxwdHIpOworICAgIH0KIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBC
YWNrZW5kPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCi17Ci0gICAgcmV0
dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgY2FjaGVk
Q0dDb2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JTcGFjZSksIGhvc3RXaW5kb3cpOworICAgIHJl
dHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIG51bGxw
dHIpOwogfQogCiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgdm9pZCogZGF0YSwgUmV0YWlu
UHRyPENHRGF0YVByb3ZpZGVyUmVmPiYmIGRhdGFQcm92aWRlciwgc3RkOjp1bmlxdWVfcHRyPEdy
YXBoaWNzQ29udGV4dD4mJiBjb250ZXh0KQpAQCAtMTQ2LDcgKzE0NSw3IEBAIFJlZlB0cjxOYXRp
dmVJbWFnZT4gSW1hZ2VCdWZmZXJDR0JpdG1hcEIKICAgICAgICAgYXV0byBiYWNrZW5kU2l6ZSA9
IHRoaXMtPmJhY2tlbmRTaXplKCk7CiAgICAgICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRl
KGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZSgKICAgICAgICAgICAgIGJhY2tlbmRTaXplLndpZHRoKCks
IGJhY2tlbmRTaXplLmhlaWdodCgpLCA4LCAzMiwgYnl0ZXNQZXJSb3coKSwKLSAgICAgICAgICAg
IGNhY2hlZENHQ29sb3JTcGFjZShjb2xvclNwYWNlKCkpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlw
bGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0LCBtX2RhdGFQcm92aWRlci5nZXQo
KSwKKyAgICAgICAgICAgIGNvbG9yU3BhY2UoKS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwga0NHSW1h
Z2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCwgbV9k
YXRhUHJvdmlkZXIuZ2V0KCksCiAgICAgICAgICAgICAwLCB0cnVlLCBrQ0dSZW5kZXJpbmdJbnRl
bnREZWZhdWx0KSkpOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2Vu
ZC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw4
ICszOSw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSW50U2l6ZSBjYWxjdWxhdGVTYWZlQmFja2Vu
ZFNpemUoY29uc3QgUGFyYW1ldGVycyYpOwogICAgIHN0YXRpYyBzaXplX3QgY2FsY3VsYXRlTWVt
b3J5Q29zdChjb25zdCBQYXJhbWV0ZXJzJik7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIENH
Q29sb3JTcGFjZVJlZiwgY29uc3QgSG9zdFdpbmRvdyopOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJz
JiwgY29uc3QgSG9zdFdpbmRvdyopOworCisgICAgLy8gRklYTUU6IFJlbmFtZSB0byBjcmVhdGVV
c2luZ0NvbG9yU3BhY2VPZkdyYXBoaWNzQ29udGV4dCgpIChvciBzb21ldGhpbmcgbGlrZSB0aGF0
KS4KICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5k
PiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwogCiAg
ICAgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDEzICs4MSwxMyBAQCBSZXRhaW5QdHI8Q0dD
b2xvclNwYWNlUmVmPiBJbWFnZUJ1ZmZlcklPCiAgICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCYWNr
ZW5kOjpjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpj
cmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgQ0dDb2xvclNwYWNlUmVmIGNnQ29s
b3JTcGFjZSwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKK3N0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6
Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEhvc3RXaW5kb3cqIGhv
c3RXaW5kb3cpCiB7CiAgICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZVNhZmVCYWNr
ZW5kU2l6ZShwYXJhbWV0ZXJzKTsKICAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3Jl
YXRlKGJhY2tlbmRTaXplLCBiYWNrZW5kU2l6ZSwgY2dDb2xvclNwYWNlLCBJT1N1cmZhY2U6OmZv
cm1hdEZvclBpeGVsRm9ybWF0KHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQpKTsKKyAgICBhdXRvIHN1
cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShiYWNrZW5kU2l6ZSwgYmFja2VuZFNpemUsIHBhcmFt
ZXRlcnMuY29sb3JTcGFjZSwgSU9TdXJmYWNlOjpmb3JtYXRGb3JQaXhlbEZvcm1hdChwYXJhbWV0
ZXJzLnBpeGVsRm9ybWF0KSk7CiAgICAgaWYgKCFzdXJmYWNlKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIApAQCAtMTAyLDE1ICsxMDIsMTQgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
SU9TdXJmYWNlQmFjawogCiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgaWYg
KGF1dG8gY2dDb2xvclNwYWNlID0gY29udGV4dC5oYXNQbGF0Zm9ybUNvbnRleHQoKSA/IGNvbnRl
eHRDb2xvclNwYWNlKGNvbnRleHQpIDogbnVsbHB0cikKLSAgICAgICAgcmV0dXJuIEltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIGNnQ29sb3JTcGFjZS5nZXQo
KSwgbnVsbHB0cik7CisgICAgaWYgKGF1dG8gY2dDb2xvclNwYWNlID0gY29udGV4dC5oYXNQbGF0
Zm9ybUNvbnRleHQoKSA/IGNvbnRleHRDb2xvclNwYWNlKGNvbnRleHQpIDogbnVsbHB0cikgewor
ICAgICAgICBhdXRvIG92ZXJyaWRlUGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7CisgICAgICAgIG92
ZXJyaWRlUGFyYW1ldGVycy5jb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlIHsgY2dD
b2xvclNwYWNlIH07CiAKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpj
cmVhdGUocGFyYW1ldGVycywgbnVsbHB0cik7Ci19CisgICAgICAgIHJldHVybiBJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShvdmVycmlkZVBhcmFtZXRlcnMsIG51bGxwdHIpOwor
ICAgIH0KIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1l
dGVycywgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKLXsKLSAgICByZXR1cm4gSW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgY2FjaGVkQ0dDb2xvclNw
YWNlKHBhcmFtZXRlcnMuY29sb3JTcGFjZSksIGhvc3RXaW5kb3cpOworICAgIHJldHVybiBJbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBudWxscHRyKTsKIH0K
IAogSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFj
ZT4mJiBzdXJmYWNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw4ICs0Miw4
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc2l6ZV90IGNhbGN1bGF0ZU1lbW9yeUNvc3QoY29uc3Qg
UGFyYW1ldGVycyYpOwogICAgIHN0YXRpYyBzaXplX3QgY2FsY3VsYXRlRXh0ZXJuYWxNZW1vcnlD
b3N0KGNvbnN0IFBhcmFtZXRlcnMmKTsKICAgICAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBD
R0NvbG9yU3BhY2VSZWYsIGNvbnN0IEhvc3RXaW5kb3cqKTsKICAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRl
cnMmLCBjb25zdCBIb3N0V2luZG93Kik7CisgICAgLy8gRklYTUU6IFJlbmFtZSB0byBjcmVhdGVV
c2luZ0NvbG9yU3BhY2VPZkdyYXBoaWNzQ29udGV4dCgpIChvciBzb21ldGhpbmcgbGlrZSB0aGF0
KS4KICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKIAog
ICAgIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiwgc3RkOjp1
bmlxdWVfcHRyPElPU3VyZmFjZT4mJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNw
cAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Nyw3ICsx
NzcsNyBAQCBzdGF0aWMgYm9vbCBlbmNvZGUoY29uc3QgUGl4ZWxCdWZmZXImIHNvCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byBpbWFnZVNpemUgPSBzb3VyY2Uuc2l6ZSgpOwot
ICAgIGF1dG8gaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGUoaW1hZ2VTaXplLndpZHRoKCks
IGltYWdlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIDQgKiBpbWFnZVNpemUud2lkdGgoKSwgY2FjaGVk
Q0dDb2xvclNwYWNlKHNvdXJjZS5mb3JtYXQoKS5jb2xvclNwYWNlKSwga0NHQml0bWFwQnl0ZU9y
ZGVyRGVmYXVsdCB8IGRhdGFBbHBoYUluZm8sIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2Us
IGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKKyAgICBhdXRvIGltYWdlID0gYWRvcHRDRihD
R0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMy
LCA0ICogaW1hZ2VTaXplLndpZHRoKCksIHNvdXJjZS5mb3JtYXQoKS5jb2xvclNwYWNlLnBsYXRm
b3JtQ29sb3JTcGFjZSgpLCBrQ0dCaXRtYXBCeXRlT3JkZXJEZWZhdWx0IHwgZGF0YUFscGhhSW5m
bywgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVs
dCkpOwogCiAgICAgcmV0dXJuIGVuY29kZShpbWFnZS5nZXQoKSwgZGVzdGluYXRpb25VVEkuZ2V0
KCksIHF1YWxpdHksIGZ1bmN0aW9uKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xDb2NvYS5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQko
d29ya2luZyBjb3B5KQpAQCAtNTcxLDcgKzU3MSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlc2hhcGVEaXMKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRl
QW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCkKIHsKICAgICBBU1NFUlQoIWdldEludGVybmFs
RnJhbWVidWZmZXJTaXplKCkuaXNFbXB0eSgpKTsKLSAgICBhdXRvIGJhY2tpbmcgPSBXZWJDb3Jl
OjpJT1N1cmZhY2U6OmNyZWF0ZShnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLCBXZWJDb3Jl
OjpzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICBhdXRvIGJhY2tpbmcgPSBJT1N1cmZhY2U6OmNy
ZWF0ZShnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSk7CiAgICAgaWYgKCFiYWNraW5nKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3Vy
ZmFjZS5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9JT1N1cmZhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsOSArMjcsMTAgQEAK
IAogI2lmIEhBVkUoSU9TVVJGQUNFKQogCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNl
LmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgPG9iamMvb2JqYy5oPgogI2luY2x1
ZGUgPHBhbC9zcGkvY29jb2EvSU9TdXJmYWNlU1BJLmg+Ci0jaW5jbHVkZSAiSW50U2l6ZS5oIgog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKSAmJiAh
UExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCiAjZGVmaW5lIEhBVkVfSU9TVVJGQUNFX1JH
QjEwIDEKQEAgLTQ2LDEwICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3Jh
cGhpY3NDb250ZXh0OwogY2xhc3MgSG9zdFdpbmRvdzsKLSAgICAKLSNpZiBVU0UoSU9TVVJGQUNF
X0NBTlZBU19CQUNLSU5HX1NUT1JFKQogY2xhc3MgSW1hZ2VCdWZmZXI7Ci0jZW5kaWYKIAogZW51
bSBjbGFzcyBQaXhlbEZvcm1hdCA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFZvbGF0aWxpdHlTdGF0
ZSA6IHVpbnQ4X3Q7CkBAIC0xMDEsMTAgKzk5LDEwIEBAIHB1YmxpYzoKICAgICAgICAgdWludDMy
X3QgbV9mbGFnczsKICAgICB9OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZShJbnRTaXplLCBDR0NvbG9yU3BhY2VSZWYsIEZvcm1h
dCA9IEZvcm1hdDo6QkdSQSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxJT1N1cmZhY2U+IGNyZWF0ZShJbnRTaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBDR0Nv
bG9yU3BhY2VSZWYsIEZvcm1hdCA9IEZvcm1hdDo6QkdSQSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZUZyb21TZW5kUmlnaHQoY29u
c3QgV1RGOjpNYWNoU2VuZFJpZ2h0JiYsIENHQ29sb3JTcGFjZVJlZik7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZUZyb21TdXJmYWNl
KElPU3VyZmFjZVJlZiwgQ0dDb2xvclNwYWNlUmVmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlKEludFNpemUsIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYsIEZvcm1hdCA9IEZvcm1hdDo6QkdSQSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZShJbnRTaXplLCBJ
bnRTaXplIGNvbnRleHRTaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGb3JtYXQg
PSBGb3JtYXQ6OkJHUkEpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8SU9TdXJmYWNlPiBjcmVhdGVGcm9tU2VuZFJpZ2h0KGNvbnN0IFdURjo6TWFjaFNlbmRSaWdo
dCYmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlRnJvbVN1cmZhY2UoSU9TdXJm
YWNlUmVmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlRnJvbUltYWdlKENHSW1h
Z2VSZWYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJm
YWNlPiBjcmVhdGVGcm9tUGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZik7CiAgICAgCkBAIC0x
NDYsNyArMTQ0LDcgQEAgcHVibGljOgogICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2l6ZTsgfQogICAgIHNpemVfdCB0b3RhbEJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV90b3Rh
bEJ5dGVzOyB9CiAKLSAgICBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY29sb3JTcGFjZS5nZXQoKTsgfQorICAgIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JTcGFjZTsgfQogICAgIFdFQkNP
UkVfRVhQT1JUIEZvcm1hdCBmb3JtYXQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBJT1N1
cmZhY2VJRCBzdXJmYWNlSUQoKSBjb25zdDsKICAgICBzaXplX3QgYnl0ZXNQZXJSb3coKSBjb25z
dDsKQEAgLTE2OSwxNCArMTY3LDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIG1pZ3JhdGVDb2xvclNw
YWNlVG9Qcm9wZXJ0aWVzKCk7CiAKIHByaXZhdGU6Ci0gICAgSU9TdXJmYWNlKEludFNpemUsIElu
dFNpemUgY29udGV4dFNpemUsIENHQ29sb3JTcGFjZVJlZiwgRm9ybWF0LCBib29sJiBzdWNjZXNz
KTsKLSAgICBJT1N1cmZhY2UoSU9TdXJmYWNlUmVmLCBDR0NvbG9yU3BhY2VSZWYpOworICAgIElP
U3VyZmFjZShJbnRTaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmLCBGb3JtYXQsIGJvb2wmIHN1Y2Nlc3MpOworICAgIElPU3VyZmFjZShJT1N1cmZh
Y2VSZWYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpOwogCi0gICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxJT1N1cmZhY2U+IHN1cmZhY2VGcm9tUG9vbChJbnRTaXplLCBJbnRTaXplIGNv
bnRleHRTaXplLCBDR0NvbG9yU3BhY2VSZWYsIEZvcm1hdCk7CisgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxJT1N1cmZhY2U+IHN1cmZhY2VGcm9tUG9vbChJbnRTaXplLCBJbnRTaXplIGNvbnRl
eHRTaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGb3JtYXQpOwogICAgIEludFNp
emUgY29udGV4dFNpemUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRTaXplOyB9CiAgICAgdm9p
ZCBzZXRDb250ZXh0U2l6ZShJbnRTaXplKTsKIAotICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VS
ZWY+IG1fY29sb3JTcGFjZTsKKyAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgbV9jb2xvclNwYWNl
OwogICAgIEludFNpemUgbV9zaXplOwogICAgIEludFNpemUgbV9jb250ZXh0U2l6ZTsKICAgICBz
aXplX3QgbV90b3RhbEJ5dGVzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvSU9TdXJmYWNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIklP
U3VyZmFjZS5oIgogCi0jaW1wb3J0ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgorI2ltcG9ydCAiRGVz
dGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2lt
cG9ydCAiR3JhcGhpY3NDb250ZXh0R0wuaCIKICNpbXBvcnQgIkhvc3RXaW5kb3cuaCIKQEAgLTQx
LDkgKzQxLDExIEBACiAjaW1wb3J0IDx3dGYvTWF0aEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3Rl
eHQvVGV4dFN0cmVhbS5oPgogCisjaW1wb3J0ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1
cmZhY2U6OnN1cmZhY2VGcm9tUG9vbChJbnRTaXplIHNpemUsIEludFNpemUgY29udGV4dFNpemUs
IENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlLCBGb3JtYXQgcGl4ZWxGb3JtYXQpCitpbmxpbmUg
c3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpzdXJmYWNlRnJvbVBvb2woSW50
U2l6ZSBzaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmIGNvbG9yU3BhY2UsIEZvcm1hdCBwaXhlbEZvcm1hdCkKIHsKICAgICBhdXRvIGNhY2hlZFN1
cmZhY2UgPSBJT1N1cmZhY2VQb29sOjpzaGFyZWRQb29sKCkudGFrZVN1cmZhY2Uoc2l6ZSwgY29s
b3JTcGFjZSwgcGl4ZWxGb3JtYXQpOwogICAgIGlmICghY2FjaGVkU3VyZmFjZSkKQEAgLTUzLDEy
ICs1NSwxMiBAQCBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmCiAgICAg
cmV0dXJuIGNhY2hlZFN1cmZhY2U7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElP
U3VyZmFjZTo6Y3JlYXRlKEludFNpemUgc2l6ZSwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2Us
IEZvcm1hdCBwaXhlbEZvcm1hdCkKK3N0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFj
ZTo6Y3JlYXRlKEludFNpemUgc2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xv
clNwYWNlLCBGb3JtYXQgcGl4ZWxGb3JtYXQpCiB7CiAgICAgcmV0dXJuIElPU3VyZmFjZTo6Y3Jl
YXRlKHNpemUsIHNpemUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKIH0KIAotc3RkOjp1bmlx
dWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGUoSW50U2l6ZSBzaXplLCBJbnRTaXpl
IGNvbnRleHRTaXplLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwgRm9ybWF0IHBpeGVsRm9y
bWF0KQorc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGUoSW50U2l6
ZSBzaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
IGNvbG9yU3BhY2UsIEZvcm1hdCBwaXhlbEZvcm1hdCkKIHsKICAgICBpZiAoYXV0byBjYWNoZWRT
dXJmYWNlID0gc3VyZmFjZUZyb21Qb29sKHNpemUsIGNvbnRleHRTaXplLCBjb2xvclNwYWNlLCBw
aXhlbEZvcm1hdCkpIHsKICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKElPU3VyZmFjZSwgc3RyZWFt
IDw8ICJJT1N1cmZhY2U6OmNyZWF0ZSB0b29rIGZyb20gcG9vbDogIiA8PCAqY2FjaGVkU3VyZmFj
ZSk7CkBAIC03NSwxMyArNzcsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJm
YWNlOjpjcgogICAgIHJldHVybiBzdXJmYWNlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SU9TdXJm
YWNlPiBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoY29uc3QgTWFjaFNlbmRSaWdodCYm
IHNlbmRSaWdodCwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UpCitzdGQ6OnVuaXF1ZV9wdHI8
SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoY29uc3QgTWFjaFNlbmRS
aWdodCYmIHNlbmRSaWdodCwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNl
KQogewogICAgIGF1dG8gc3VyZmFjZSA9IGFkb3B0Q0YoSU9TdXJmYWNlTG9va3VwRnJvbU1hY2hQ
b3J0KHNlbmRSaWdodC5zZW5kUmlnaHQoKSkpOwogICAgIHJldHVybiBJT1N1cmZhY2U6OmNyZWF0
ZUZyb21TdXJmYWNlKHN1cmZhY2UuZ2V0KCksIGNvbG9yU3BhY2UpOwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TdXJmYWNlKElPU3VyZmFjZVJl
ZiBzdXJmYWNlLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSkKK3N0ZDo6dW5pcXVlX3B0cjxJ
T1N1cmZhY2U+IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVN1cmZhY2UoSU9TdXJmYWNlUmVmIHN1cmZh
Y2UsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkKIHsKICAgICByZXR1
cm4gc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4obmV3IElPU3VyZmFjZShzdXJmYWNlLCBjb2xv
clNwYWNlKSk7CiB9CkBAIC05NCw3ICs5Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+
IElPU3VyZmFjZTo6Y3IKICAgICBzaXplX3Qgd2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoaW1hZ2Up
OwogICAgIHNpemVfdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKTsKIAotICAgIGF1
dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKEludFNpemUod2lkdGgsIGhlaWdodCksIENH
SW1hZ2VHZXRDb2xvclNwYWNlKGltYWdlKSk7CisgICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNl
OjpjcmVhdGUoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgRGVzdGluYXRpb25Db2xvclNwYWNlIHsg
Q0dJbWFnZUdldENvbG9yU3BhY2UoaW1hZ2UpIH0pOwogICAgIGlmICghc3VyZmFjZSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byBzdXJmYWNlQ29udGV4dCA9IHN1cmZhY2UtPmVu
c3VyZVBsYXRmb3JtQ29udGV4dCgpOwpAQCAtMTE2LDcgKzExOCw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6Y3IKICAgICBpZiAoIWNvbG9yU3BhY2UpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGNyZWF0ZUZyb21TdXJmYWNlKHN1cmZhY2Us
IGNvbG9yU3BhY2UpOworICAgIHJldHVybiBjcmVhdGVGcm9tU3VyZmFjZShzdXJmYWNlLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgeyBjb2xvclNwYWNlIH0pOwogfQogCiB2b2lkIElPU3VyZmFjZTo6
bW92ZVRvUG9vbChzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiYmIHN1cmZhY2UpCkBAIC0xOTYs
NyArMTk4LDcgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAqb3B0aW9uc0ZvcjMyQml0U3VyZgogCiB9
CiAKLUlPU3VyZmFjZTo6SU9TdXJmYWNlKEludFNpemUgc2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6
ZSwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UsIEZvcm1hdCBmb3JtYXQsIGJvb2wmIHN1Y2Nl
c3MpCitJT1N1cmZhY2U6OklPU3VyZmFjZShJbnRTaXplIHNpemUsIEludFNpemUgY29udGV4dFNp
emUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgRm9ybWF0IGZvcm1h
dCwgYm9vbCYgc3VjY2VzcykKICAgICA6IG1fY29sb3JTcGFjZShjb2xvclNwYWNlKQogICAgICwg
bV9zaXplKHNpemUpCiAgICAgLCBtX2NvbnRleHRTaXplKGNvbnRleHRTaXplKQpAQCAtMjMyLDcg
KzIzNCw3IEBAIElPU3VyZmFjZTo6SU9TdXJmYWNlKEludFNpemUgc2l6ZSwgSW50U2kKICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoTGF5ZXJzLCAiSU9TdXJmYWNlIGNyZWF0aW9uIGZhaWxlZCBm
b3Igc2l6ZTogKCVkICVkKSBhbmQgZm9ybWF0OiAoJWQpIiwgc2l6ZS53aWR0aCgpLCBzaXplLmhl
aWdodCgpLCBmb3JtYXQpOwogfQogCi1JT1N1cmZhY2U6OklPU3VyZmFjZShJT1N1cmZhY2VSZWYg
c3VyZmFjZSwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UpCitJT1N1cmZhY2U6OklPU3VyZmFj
ZShJT1N1cmZhY2VSZWYgc3VyZmFjZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xv
clNwYWNlKQogICAgIDogbV9jb2xvclNwYWNlKGNvbG9yU3BhY2UpCiAgICAgLCBtX3N1cmZhY2Uo
c3VyZmFjZSkKIHsKQEAgLTM0Nyw3ICszNDksNyBAQCBDR0NvbnRleHRSZWYgSU9TdXJmYWNlOjpl
bnN1cmVQbGF0Zm9ybUNvCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKLSAgICBtX2NnQ29u
dGV4dCA9IGFkb3B0Q0YoQ0dJT1N1cmZhY2VDb250ZXh0Q3JlYXRlKG1fc3VyZmFjZS5nZXQoKSwg
bV9jb250ZXh0U2l6ZS53aWR0aCgpLCBtX2NvbnRleHRTaXplLmhlaWdodCgpLCBiaXRzUGVyQ29t
cG9uZW50LCBiaXRzUGVyUGl4ZWwsIG1fY29sb3JTcGFjZS5nZXQoKSwgYml0bWFwSW5mbykpOwor
ICAgIG1fY2dDb250ZXh0ID0gYWRvcHRDRihDR0lPU3VyZmFjZUNvbnRleHRDcmVhdGUobV9zdXJm
YWNlLmdldCgpLCBtX2NvbnRleHRTaXplLndpZHRoKCksIG1fY29udGV4dFNpemUuaGVpZ2h0KCks
IGJpdHNQZXJDb21wb25lbnQsIGJpdHNQZXJQaXhlbCwgbV9jb2xvclNwYWNlLnBsYXRmb3JtQ29s
b3JTcGFjZSgpLCBiaXRtYXBJbmZvKSk7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKGF1
dG8gZGlzcGxheU1hc2sgPSBwcmltYXJ5T3BlbkdMRGlzcGxheU1hc2soKSkgewpAQCAtNTE1LDcg
KzUxNyw3IEBAIHZvaWQgSU9TdXJmYWNlOjpzZXRPd25lcnNoaXBJZGVudGl0eSh0YXMKIAogdm9p
ZCBJT1N1cmZhY2U6Om1pZ3JhdGVDb2xvclNwYWNlVG9Qcm9wZXJ0aWVzKCkKIHsKLSAgICBhdXRv
IGNvbG9yU3BhY2VQcm9wZXJ0aWVzID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDb3B5UHJvcGVydHlM
aXN0KG1fY29sb3JTcGFjZS5nZXQoKSkpOworICAgIGF1dG8gY29sb3JTcGFjZVByb3BlcnRpZXMg
PSBhZG9wdENGKENHQ29sb3JTcGFjZUNvcHlQcm9wZXJ0eUxpc3QobV9jb2xvclNwYWNlLnBsYXRm
b3JtQ29sb3JTcGFjZSgpKSk7CiAgICAgSU9TdXJmYWNlU2V0VmFsdWUobV9zdXJmYWNlLmdldCgp
LCBrSU9TdXJmYWNlQ29sb3JTcGFjZSwgY29sb3JTcGFjZVByb3BlcnRpZXMuZ2V0KCkpOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVy
RWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdl
Lm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdl
OjpyZW5kCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBhdXRvJiBzdXJmYWNlID0gZG93bmNh
c3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlcj4oKm1fb3V0cHV0SW1hZ2VCdWZmZXIpLnN1cmZhY2Uo
KTsKLSAgICBbc2hhcmVkQ0lDb250ZXh0KCkuZ2V0KCkgcmVuZGVyOiBtX291dHB1dEltYWdlLmdl
dCgpIHRvSU9TdXJmYWNlOiBzdXJmYWNlLnN1cmZhY2UoKSBib3VuZHM6ZGVzdFJlY3QobGFzdEVm
ZmVjdCkgY29sb3JTcGFjZTpjYWNoZWRDR0NvbG9yU3BhY2UobGFzdEVmZmVjdC5yZXN1bHRDb2xv
clNwYWNlKCkpXTsKKyAgICBbc2hhcmVkQ0lDb250ZXh0KCkuZ2V0KCkgcmVuZGVyOiBtX291dHB1
dEltYWdlLmdldCgpIHRvSU9TdXJmYWNlOiBzdXJmYWNlLnN1cmZhY2UoKSBib3VuZHM6ZGVzdFJl
Y3QobGFzdEVmZmVjdCkgY29sb3JTcGFjZTpsYXN0RWZmZWN0LnJlc3VsdENvbG9yU3BhY2UoKS5w
bGF0Zm9ybUNvbG9yU3BhY2UoKV07CiB9CiAgICAgCiBGbG9hdFJlY3QgRmlsdGVyRWZmZWN0UmVu
ZGVyZXJDb3JlSW1hZ2U6OmRlc3RSZWN0KGNvbnN0IEZpbHRlckVmZmVjdCYgbGFzdEVmZmVjdCkg
Y29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzks
NyArMzksNyBAQCBjbGFzcyBJbWFnZUJ1ZmZlciA6IHB1YmxpYyBDb25jcmV0ZUltYWdlCiAgICAg
dXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmJhc2VUcmFuc2Zvcm07CiAKIHB1YmxpYzoK
LSAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1h
dCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKKyAgICBzdGF0aWMg
YXV0byBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4
ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiAgICAgewogICAgICAgICBy
ZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnRlbXBsYXRlIGNyZWF0ZTxJbWFnZUJ1ZmZl
cj4oc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgaG9zdFdp
bmRvdyk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1
ZmZlci5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBJdGVtSGFuZGxlOjpkZXN0cm95KCkKICAgICAg
ICAgZ2V0PEZpbGxSb3VuZGVkUmVjdD4oKS5+RmlsbFJvdW5kZWRSZWN0KCk7CiAgICAgICAgIHJl
dHVybjsKICAgICBjYXNlIEl0ZW1UeXBlOjpHZXRQaXhlbEJ1ZmZlcjoKLSAgICAgICAgc3RhdGlj
X2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8R2V0UGl4ZWxCdWZmZXI+Ojp2
YWx1ZSk7CisgICAgICAgIGdldDxHZXRQaXhlbEJ1ZmZlcj4oKS5+R2V0UGl4ZWxCdWZmZXIoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSXRlbVR5cGU6OlB1dFBpeGVsQnVmZmVyOgogICAg
ICAgICBnZXQ8UHV0UGl4ZWxCdWZmZXI+KCkuflB1dFBpeGVsQnVmZmVyKCk7CkBAIC0zMDcsNyAr
MzA3LDcgQEAgdm9pZCBJdGVtSGFuZGxlOjpkZXN0cm95KCkKICAgICAgICAgcmV0dXJuOwogI2Vu
ZGlmCiAgICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAg
ICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEJlZ2luQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzPjo6dmFsdWUpOworICAgICAgICBnZXQ8QmVnaW5DbGlwVG9EcmF3
aW5nQ29tbWFuZHM+KCkufkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKCk7CiAgICAgICAgIHJl
dHVybjsKICAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOgogICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxCZWdpblRyYW5z
cGFyZW5jeUxheWVyPjo6dmFsdWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCSh3b3JraW5nIGNvcHkpCkBAIC04ODAs
MjMgKzg4MCw1NSBAQCBPcHRpb25hbDxDbGlwUGF0aD4gQ2xpcFBhdGg6OmRlY29kZShEZWNvCiBj
bGFzcyBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdD
b21tYW5kczsKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0gdHJ1ZTsK
KyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0gZmFsc2U7CiAgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSBmYWxzZTsKIAotICAgIEJlZ2luQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0
aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKQorICAgIEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
KGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYgY29sb3JTcGFjZSkKICAgICAgICAgOiBtX2Rlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKQogICAg
ICAgICAsIG1fY29sb3JTcGFjZShjb2xvclNwYWNlKQogICAgIHsKICAgICB9CiAKKyAgICBCZWdp
bkNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmJiBjb2xvclNwYWNlKQorICAgICAgICA6IG1fZGVzdGluYXRpb24o
ZGVzdGluYXRpb24pCisgICAgICAgICwgbV9jb2xvclNwYWNlKFdURk1vdmUoY29sb3JTcGFjZSkp
CisgICAgeworICAgIH0KKwogICAgIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9Ci0gICAgRGVzdGluYXRpb25Db2xvclNwYWNlIGNv
bG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yU3BhY2U7IH0KKyAgICBjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yU3Bh
Y2U7IH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QmVn
aW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6CiAg
ICAgRmxvYXRSZWN0IG1fZGVzdGluYXRpb247CiAgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1f
Y29sb3JTcGFjZTsKIH07CiAKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEJlZ2luQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAg
ICBlbmNvZGVyIDw8IG1fZGVzdGluYXRpb247CisgICAgZW5jb2RlciA8PCBtX2NvbG9yU3BhY2U7
Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxCZWdpbkNsaXBUb0RyYXdp
bmdDb21tYW5kcz4gQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQoreworICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gZGVzdGluYXRpb247CisgICAgZGVj
b2RlciA+PiBkZXN0aW5hdGlvbjsKKyAgICBpZiAoIWRlc3RpbmF0aW9uKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBj
b2xvclNwYWNlOworICAgIGRlY29kZXIgPj4gY29sb3JTcGFjZTsKKyAgICBpZiAoIWNvbG9yU3Bh
Y2UpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4ge3sgKmRlc3Rp
bmF0aW9uLCBXVEZNb3ZlKCpjb2xvclNwYWNlKSB9fTsKK30KKwogY2xhc3MgRW5kQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIEl0ZW1UeXBlIGl0
ZW1UeXBlID0gSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczsKQEAgLTE5MzgsMjMg
KzE5NzAsNTUgQEAgcHJpdmF0ZToKIGNsYXNzIEdldFBpeGVsQnVmZmVyIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgY29uc3RleHByIEl0ZW1UeXBlIGl0ZW1UeXBlID0gSXRlbVR5cGU6OkdldFBpeGVs
QnVmZmVyOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSB0cnVlOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSBmYWxzZTsKICAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IGZhbHNlOwogCi0gICAgR2V0UGl4ZWxC
dWZmZXIoV2ViQ29yZTo6UGl4ZWxCdWZmZXJGb3JtYXQgb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBzcmNSZWN0KQorICAgIEdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVm
ZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QpCiAgICAgICAg
IDogbV9zcmNSZWN0KHNyY1JlY3QpCiAgICAgICAgICwgbV9vdXRwdXRGb3JtYXQob3V0cHV0Rm9y
bWF0KQogICAgIHsKICAgICB9CiAKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBvdXRwdXRGb3JtYXQo
KSBjb25zdCB7IHJldHVybiBtX291dHB1dEZvcm1hdDsgfQorICAgIEdldFBpeGVsQnVmZmVyKFBp
eGVsQnVmZmVyRm9ybWF0JiYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KQor
ICAgICAgICA6IG1fc3JjUmVjdChzcmNSZWN0KQorICAgICAgICAsIG1fb3V0cHV0Rm9ybWF0KFdU
Rk1vdmUob3V0cHV0Rm9ybWF0KSkKKyAgICB7CisgICAgfQorCisgICAgY29uc3QgUGl4ZWxCdWZm
ZXJGb3JtYXQmIG91dHB1dEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fb3V0cHV0Rm9ybWF0OyB9
CiAgICAgSW50UmVjdCBzcmNSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CiAKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Cisg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEdldFBpeGVsQnVmZmVy
PiBkZWNvZGUoRGVjb2RlciYpOworCiBwcml2YXRlOgogICAgIEludFJlY3QgbV9zcmNSZWN0Owog
ICAgIFBpeGVsQnVmZmVyRm9ybWF0IG1fb3V0cHV0Rm9ybWF0OwogfTsKIAordGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KK3ZvaWQgR2V0UGl4ZWxCdWZmZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9zcmNSZWN0OworICAgIGVuY29kZXIgPDwgbV9v
dXRwdXRGb3JtYXQ7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxHZXRQ
aXhlbEJ1ZmZlcj4gR2V0UGl4ZWxCdWZmZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorewor
ICAgIE9wdGlvbmFsPEludFJlY3Q+IHNyY1JlY3Q7CisgICAgZGVjb2RlciA+PiBzcmNSZWN0Owor
ICAgIGlmICghc3JjUmVjdCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9w
dGlvbmFsPFBpeGVsQnVmZmVyRm9ybWF0PiBvdXRwdXRGb3JtYXQ7CisgICAgZGVjb2RlciA+PiBv
dXRwdXRGb3JtYXQ7CisgICAgaWYgKCFvdXRwdXRGb3JtYXQpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICByZXR1cm4ge3sgV1RGTW92ZSgqb3V0cHV0Rm9ybWF0KSwgKnNyY1Jl
Y3QgfX07Cit9CisKIGNsYXNzIFB1dFBpeGVsQnVmZmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3RleHByIEl0ZW1UeXBlIGl0ZW1UeXBlID0gSXRlbVR5cGU6OlB1dFBpeGVsQnVmZmVyOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTIsNyArNDUyLDcg
QEAgdm9pZCBSZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdQogICAgIGFwcGVuZDxD
bGlwVG9JbWFnZUJ1ZmZlcj4oaW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KCksIGRlc3RSZWN0KTsKIH0KIAotdm9pZCBSZWNvcmRlcjo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRz
KGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlv
bikKK3ZvaWQgUmVjb3JkZXI6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIEZ1
bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKQogewogICAg
IEdyYXBoaWNzQ29udGV4dCBuZXN0ZWRDb250ZXh0KFsmXShHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQpIHsKICAgICAgICAgYXV0byBpbml0aWFsQ2xpcCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IGRlc3RpbmF0aW9uLnNpemUoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE0Nyw3ICsxNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0
aCYsIFdpbmRSdWxlKSBvdmVycmlkZTsKICAgICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBvdmVycmlk
ZTsKICAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29u
c3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMo
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBGdW5j
dGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsaXBU
b0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKSBv
dmVycmlkZTsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgdm9pZCBwYWludEZyYW1lRm9yTWVkaWEo
TWVkaWFQbGF5ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSBvdmVycmlkZTsKICAg
ICBib29sIGNhblBhaW50RnJhbWVGb3JNZWRpYShjb25zdCBNZWRpYVBsYXllciYpIGNvbnN0IG92
ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RURpc3BsYWNlbWVudE1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAJKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFj
ZW1lbnRNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgRkVEaXNw
bGFjZW1lbnRNYXA6OnNldFNjYWxlKGZsb2F0IHMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9p
ZCBGRURpc3BsYWNlbWVudE1hcDo6c2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9y
U3BhY2UpCit2b2lkIEZFRGlzcGxhY2VtZW50TWFwOjpzZXRSZXN1bHRDb2xvclNwYWNlKGNvbnN0
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpCiB7CiAgICAgLy8gU3BlYzogVGhlICdjb2xvci1pbnRl
cnBvbGF0aW9uLWZpbHRlcnMnIHByb3BlcnR5IG9ubHkgYXBwbGllcyB0byB0aGUgJ2luMicgc291
cmNlIGltYWdlCiAgICAgLy8gYW5kIGRvZXMgbm90IGFwcGx5IHRvIHRoZSAnaW4nIHNvdXJjZSBp
bWFnZS4gVGhlICdpbicgc291cmNlIGltYWdlIG11c3QgcmVtYWluIGluIGl0cwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVEaXNwbGFjZW1lbnRNYXAuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBmbG9hdCBzY2FsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2NhbGU7IH0KICAgICBib29sIHNldFNjYWxlKGZsb2F0KTsKIAotICAgIHZvaWQg
c2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpIG92ZXJyaWRlOworICAg
IHZvaWQgc2V0UmVzdWx0Q29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKSBv
dmVycmlkZTsKICAgICB2b2lkIHRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRmlsdGVyRWZmZWN0
KiwgY29uc3QgaW50KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5oCShyZXZpc2lvbiAy
Nzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxv
b2QuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsOCArNDAsOCBAQCBwdWJsaWM6CiAjaWYgIVVTRShD
RykKICAgICAvLyBmZUZsb29kIGRvZXMgbm90IHBlcmZvcm0gY29sb3IgaW50ZXJwb2xhdGlvbiBv
ZiBhbnkga2luZCwgc28gdGhlIHJlc3VsdCBpcyBhbHdheXMgaW4gdGhlIGN1cnJlbnQKICAgICAv
LyBjb2xvciBzcGFjZSByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZSBvZiBjb2xvci1pbnRlcnBvbGF0
aW9uLWZpbHRlcnMuCi0gICAgdm9pZCBzZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9u
Q29sb3JTcGFjZSkgb3ZlcnJpZGUgeyBGaWx0ZXJFZmZlY3Q6OnNldFJlc3VsdENvbG9yU3BhY2Uo
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsgfQotICAgIHZvaWQgc2V0UmVzdWx0Q29sb3JT
cGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpIG92ZXJyaWRlIHsgRmlsdGVyRWZmZWN0OjpzZXRS
ZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7IH0KKyAgICB2b2lk
IHNldE9wZXJhdGluZ0NvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJikgb3Zl
cnJpZGUgeyBGaWx0ZXJFZmZlY3Q6OnNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCkpOyB9CisgICAgdm9pZCBzZXRSZXN1bHRDb2xvclNwYWNlKGNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYpIG92ZXJyaWRlIHsgRmlsdGVyRWZmZWN0OjpzZXRSZXN1bHRD
b2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsgfQogI2VuZGlmCiAKIHBy
aXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
VGlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRVRpbGUuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0
LDcgKzY0LDcgQEAgdm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgICAg
IHRpbGVSZWN0LnNjYWxlKGZpbHRlci5maWx0ZXJSZXNvbHV0aW9uKCkud2lkdGgoKSwgZmlsdGVy
LmZpbHRlclJlc29sdXRpb24oKS5oZWlnaHQoKSk7CiAgICAgfQogCi0gICAgYXV0byB0aWxlSW1h
Z2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcih0aWxlUmVjdCwgdGls
ZVJlY3QsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgZmlsdGVyKCkucmVuZGVyaW5nTW9k
ZSgpKTsKKyAgICBhdXRvIHRpbGVJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUlt
YWdlQnVmZmVyKHRpbGVSZWN0LCB0aWxlUmVjdCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCksIGZpbHRlcigpLnJlbmRlcmluZ01vZGUoKSk7CiAgICAgaWYgKCF0aWxlSW1hZ2UpCiAgICAg
ICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJFZmZlY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzksNyArNDM5LDcgQEAgc3RhdGljIHZvaWQgY29weVVu
cHJlbXVsdGlwbHlpbmdBbHBoYShjbwogI2VuZGlmCiB9CiAKLU9wdGlvbmFsPFBpeGVsQnVmZmVy
PiBGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRQaXhlbEJ1ZmZlclRvQ29sb3JTcGFjZShEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgdGFyZ2V0Q29sb3JTcGFjZSwgUGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyKQor
T3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVsQnVmZmVyVG9D
b2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgdGFyZ2V0Q29sb3JTcGFjZSwg
UGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyKQogewogICAgIC8vIEZJWE1FOiBVc2luZyBhbiBJbWFn
ZUJ1ZmZlciB0byBwZXJmb3JtIHRoZSBjb2xvciBzcGFjZSBjb252ZXJzaW9uIGlzIHVubmVjZXNz
YXJ5LiBXZSBjYW4gZG8gaXQgZGlyZWN0bHkuCiAKQEAgLTQ1NCw3ICs0NTQsNyBAQCBPcHRpb25h
bDxQaXhlbEJ1ZmZlcj4gRmlsdGVyRWZmZWN0Ojpjb252CiAgICAgcmV0dXJuIGNvbnZlcnRJbWFn
ZUJ1ZmZlclRvQ29sb3JTcGFjZSh0YXJnZXRDb2xvclNwYWNlLCAqYnVmZmVyLCBkZXN0aW5hdGlv
blJlY3QsIHBpeGVsQnVmZmVyLmZvcm1hdCgpLmFscGhhRm9ybWF0KTsKIH0KIAotT3B0aW9uYWw8
UGl4ZWxCdWZmZXI+IEZpbHRlckVmZmVjdDo6Y29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNl
KERlc3RpbmF0aW9uQ29sb3JTcGFjZSB0YXJnZXRDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlciYgaW5w
dXRCdWZmZXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0
cHV0QWxwaGFGb3JtYXQpCitPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gRmlsdGVyRWZmZWN0Ojpjb252
ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiB0
YXJnZXRDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlciYgaW5wdXRCdWZmZXIsIGNvbnN0IEludFJlY3Qm
IHJlY3QsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0QWxwaGFGb3JtYXQpCiB7CiAgICAg
Ly8gRklYTUU6IFRoaXMgY2FuIGJlIGRvbmUgbW9yZSBkaXJlY3RseSB1c2luZyBQaXhlbEJ1ZmZl
ckNvbnZlcnNpb24uCiAKQEAgLTQ3Miw3ICs0NzIsNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4g
RmlsdGVyRWZmZWN0Ojpjb252CiAgICAgcmV0dXJuIGNvbnZlcnRlZEJ1ZmZlci0+Z2V0UGl4ZWxC
dWZmZXIoZm9ybWF0LCByZWN0KTsKIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0
ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9u
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlv
biBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBGaWx0ZXJFZmZl
Y3Q6OmNvcHlDb252ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJy
YXkmIGRlc3RpbmF0aW9uLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2Us
IEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCkKIHsKICAgICAvLyBDb252ZXJ0cyB0aGUgZGF0YSBzdG9yZWQgaW4gbV9pbWFnZUJ1ZmZl
clJlc3VsdCwgYW5kIHNhdmUgdG8gZGVzdGluYXRpb24KICAgICBhdXRvIGNvbnZlcnRlZFBpeGVs
QnVmZmVyID0gY29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKGNvbG9yU3BhY2UsICptX2lt
YWdlQnVmZmVyUmVzdWx0LCB7IEludFBvaW50KCksIG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgp
IH0sIG91dHB1dEZvcm1hdCk7CkBAIC00ODEsNyArNDgxLDcgQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6
OmNvcHlDb252ZXJ0ZWRJbWFnZUJ1ZgogICAgIGNvcHlJbWFnZUJ5dGVzKGNvbnZlcnRlZFBpeGVs
QnVmZmVyLT5kYXRhKCksIGRlc3RpbmF0aW9uLCBkZXN0UmVjdCk7CiB9CiAKLXZvaWQgRmlsdGVy
RWZmZWN0Ojpjb3B5Q29udmVydGVkUGl4ZWxCdWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBl
ZEFycmF5JiBkZXN0aW5hdGlvbiwgUGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEZp
bHRlckVmZmVjdDo6Y29weUNvbnZlcnRlZFBpeGVsQnVmZmVyVG9EZXN0aW5hdGlvbihVaW50OENs
YW1wZWRBcnJheSYgZGVzdGluYXRpb24sIFBpeGVsQnVmZmVyJiBwaXhlbEJ1ZmZlciwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCkKIHsKICAgICAvLyBDb252ZXJ0cyB0aGUgZGF0YSBzdG9yZWQgaW4gbV91bm11bHRpcGxpZWRJ
bWFnZVJlc3VsdC9tX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCwKICAgICAvLyB3aGljaGV2ZXIg
aXNuJ3QgbnVsbCwgYW5kIHNhdmUgdG8gZGVzdGluYXRpb24KQEAgLTYzNiw3ICs2MzYsNyBAQCBi
b29sIEZpbHRlckVmZmVjdDo6cmVxdWlyZXNQaXhlbEJ1ZmZlckNvCiAjZW5kaWYKIH0KIAotdm9p
ZCBGaWx0ZXJFZmZlY3Q6OnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xv
clNwYWNlIGRlc3RpbmF0aW9uQ29sb3JTcGFjZSkKK3ZvaWQgRmlsdGVyRWZmZWN0Ojp0cmFuc2Zv
cm1SZXN1bHRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgZGVzdGluYXRp
b25Db2xvclNwYWNlKQogewogI2lmIFVTRShDRykKICAgICAvLyBDRyBoYW5kbGVzIGNvbG9yIHNw
YWNlIGFkanVzdG1lbnRzIGludGVybmFsbHkuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgJKHJldmlzaW9u
IDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRWZmZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIgotI2luY2x1ZGUgIkNvbG9y
U3BhY2UuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJG
bG9hdFJlY3QuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50UmVjdEV4dGVu
dC5oIgpAQCAtMTY1LDEzICsxNjUsMTMgQEAgcHVibGljOgogICAgIGJvb2wgY2xpcHNUb0JvdW5k
cygpIGNvbnN0IHsgcmV0dXJuIG1fY2xpcHNUb0JvdW5kczsgfQogICAgIHZvaWQgc2V0Q2xpcHNU
b0JvdW5kcyhib29sIHZhbHVlKSB7IG1fY2xpcHNUb0JvdW5kcyA9IHZhbHVlOyB9CiAKLSAgICBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2Ugb3BlcmF0aW5nQ29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJu
IG1fb3BlcmF0aW5nQ29sb3JTcGFjZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRPcGVyYXRpbmdD
b2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKSB7IG1fb3BlcmF0aW5n
Q29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7IH0KLSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgcmVz
dWx0Q29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0Q29sb3JTcGFjZTsgfQotICAg
IHZpcnR1YWwgdm9pZCBzZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBj
b2xvclNwYWNlKSB7IG1fcmVzdWx0Q29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7IH0KKyAgICBjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIG9wZXJhdGluZ0NvbG9yU3BhY2UoKSBjb25zdCB7IHJl
dHVybiBtX29wZXJhdGluZ0NvbG9yU3BhY2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0T3BlcmF0
aW5nQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpIHsg
bV9vcGVyYXRpbmdDb2xvclNwYWNlID0gY29sb3JTcGFjZTsgfQorICAgIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgcmVzdWx0Q29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0
Q29sb3JTcGFjZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRSZXN1bHRDb2xvclNwYWNlKGNvbnN0
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkgeyBtX3Jlc3VsdENvbG9yU3BhY2Ug
PSBjb2xvclNwYWNlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmb3JtUmVzdWx0Q29sb3JT
cGFjZShGaWx0ZXJFZmZlY3QqIGluLCBjb25zdCBpbnQpIHsgaW4tPnRyYW5zZm9ybVJlc3VsdENv
bG9yU3BhY2UobV9vcGVyYXRpbmdDb2xvclNwYWNlKTsgfQotICAgIHZvaWQgdHJhbnNmb3JtUmVz
dWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpOworICAgIHZvaWQgdHJhbnNmb3Jt
UmVzdWx0Q29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKICAgICAKICAg
ICBzdGF0aWMgVmVjdG9yPGZsb2F0PiBub3JtYWxpemVkRmxvYXRzKGNvbnN0IFZlY3RvcjxmbG9h
dD4mIHZhbHVlcykKICAgICB7CkBAIC0yMDMsMTEgKzIwMywxMSBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSA9IDA7CiAKICAgICB2b2lkIGNvcHlJ
bWFnZUJ5dGVzKGNvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5JiBzb3VyY2UsIFVpbnQ4Q2xhbXBlZEFy
cmF5JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYpIGNvbnN0OwotICAgIHZvaWQgY29weUNv
bnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwgY29uc3QgSW50UmVjdCYp
OwotICAgIHZvaWQgY29weUNvbnZlcnRlZFBpeGVsQnVmZmVyVG9EZXN0aW5hdGlvbihVaW50OENs
YW1wZWRBcnJheSYsIFBpeGVsQnVmZmVyJiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBjb25zdCBJ
bnRSZWN0Jik7CisgICAgdm9pZCBjb3B5Q29udmVydGVkSW1hZ2VCdWZmZXJUb0Rlc3RpbmF0aW9u
KFVpbnQ4Q2xhbXBlZEFycmF5JiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiwgY29uc3QgSW50UmVjdCYpOworICAgIHZvaWQgY29weUNvbnZlcnRl
ZFBpeGVsQnVmZmVyVG9EZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYsIFBpeGVsQnVmZmVy
JiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgY29uc3QgSW50UmVjdCYpOwogICAgIGJv
b2wgcmVxdWlyZXNQaXhlbEJ1ZmZlckNvbG9yU3BhY2VDb252ZXJzaW9uKE9wdGlvbmFsPERlc3Rp
bmF0aW9uQ29sb3JTcGFjZT4pOwotICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBjb252ZXJ0SW1h
Z2VCdWZmZXJUb0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlLCBJbWFnZUJ1ZmZlciYs
IGNvbnN0IEludFJlY3QmLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uKTsKLSAgICBPcHRpb25hbDxQ
aXhlbEJ1ZmZlcj4gY29udmVydFBpeGVsQnVmZmVyVG9Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29s
b3JTcGFjZSwgUGl4ZWxCdWZmZXImKTsKKyAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gY29udmVy
dEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIElt
YWdlQnVmZmVyJiwgY29uc3QgSW50UmVjdCYsIEFscGhhUHJlbXVsdGlwbGljYXRpb24pOworICAg
IE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBjb252ZXJ0UGl4ZWxCdWZmZXJUb0NvbG9yU3BhY2UoY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUGl4ZWxCdWZmZXImKTsKICAgICAKIAogICAgIEZp
bHRlciYgbV9maWx0ZXI7CkBAIC0yNDQsMTMgKzI0NCwxMSBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9jbGlwc1RvQm91bmRzIHsgdHJ1ZSB9OwogCiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9S
X1NQQUNFX0xJTkVBUl9TUkdCKQotICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBkZWZhdWx0T3Bl
cmF0aW5nQ29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQjsKKyAg
ICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgbV9vcGVyYXRpbmdDb2xvclNwYWNlIHsgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCkgfTsKICNlbHNlCi0gICAgc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIGRlZmF1bHRPcGVyYXRpbmdDb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCOworICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBtX29wZXJhdGluZ0NvbG9yU3BhY2Ug
eyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9OwogI2VuZGlmCi0KLSAgICBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UgbV9vcGVyYXRpbmdDb2xvclNwYWNlIHsgZGVmYXVsdE9wZXJhdGluZ0Nv
bG9yU3BhY2UgfTsKLSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgbV9yZXN1bHRDb2xvclNwYWNl
IHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgRGVzdGluYXRpb25Db2xvclNw
YWNlIG1fcmVzdWx0Q29sb3JTcGFjZSB7IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07
CiAgICAgCiAgICAgY29uc3QgVHlwZSBtX2ZpbHRlckVmZmVjdENsYXNzVHlwZTsKIH07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L1NvdXJjZUdyYXBoaWMuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDcgKzM2LDcgQEAgcHJpdmF0ZToKICAgICBTb3VyY2VHcmFwaGljKEZpbHRlciYgZmlsdGVy
KQogICAgICAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIsIFR5cGU6OlNvdXJjZUdyYXBoaWMpCiAg
ICAgewotICAgICAgICBzZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQik7CisgICAgICAgIHNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCkpOwogICAgIH0KIAogICAgIGNvbnN0IGNoYXIqIGZpbHRlck5hbWUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiAiU291cmNlR3JhcGhpYyI7IH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9u
UmVjb3JkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTA3Niw3ICsxMDc2LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjphcHBlbmQo
c3RkOgogICAgIG1fY29tbWFuZExpc3QuYXBwZW5kKFdURk1vdmUoY29tbWFuZCkpOwogfQogCi12
b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBG
bG9hdFJlY3QmLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3ND
b250ZXh0Jik+JiYpCit2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmNsaXBUb0RyYXdpbmdD
b21tYW5kcyhjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBG
dW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKQogewogICAgIC8vIEZJWE1FOiBOb3Qg
aW1wbGVtZW50ZWQuCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lh
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlv
blJlY29yZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGNsaXBQYXRoKGNvbnN0IFdlYkNvcmU6OlBhdGgmLCBXZWJDb3JlOjpXaW5kUnVsZSkg
b3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBjbGlwQm91bmRzKCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1h
bmRzKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb24sIFdlYkNvcmU6OkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQm
KT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25D
b2xvclNwYWNlJiwgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKT4mJikg
b3ZlcnJpZGU7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHZvaWQgcGFpbnRGcmFtZUZvck1lZGlh
KFdlYkNvcmU6Ok1lZGlhUGxheWVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0aW5h
dGlvbikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5QYWludEZyYW1lRm9yTWVkaWEoY29uc3QgV2Vi
Q29yZTo6TWVkaWFQbGF5ZXImKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3Np
YUdDR0xMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDR0xMYXllci5jcHAJKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05p
Y29zaWFHQ0dMTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQg
R0NHTExheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKICAgICBJbnRTaXplIHRleHR1cmVTaXpl
KG1fY29udGV4dC5tX2N1cnJlbnRXaWR0aCwgbV9jb250ZXh0Lm1fY3VycmVudEhlaWdodCk7CiAg
ICAgVGV4dHVyZU1hcHBlckdMOjpGbGFncyBmbGFncyA9IG1fY29udGV4dC5jb250ZXh0QXR0cmli
dXRlcygpLmFscGhhID8gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCA6IDA7CiAjaWYgVVNF
KEFOR0xFKQotICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHRleHR1cmVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJh
dGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUodGV4dHVyZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAg
IGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIHsKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBm
b3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9y
bWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgUGl4ZWxCdWZm
ZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVk
LCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAg
ICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBnZXRJ
bnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTEVTLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
YWRuUGl4ZWwKIAogT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIHsKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBm
b3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9y
bWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgUGl4ZWxCdWZm
ZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVk
LCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAg
ICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBnZXRJ
bnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1h
cFRleHR1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHZvaWQgQml0bWFw
VGV4dHVyZTo6dXBkYXRlQ29udGVudHMoR3JhcGgKIHsKICAgICAvLyBNYWtpbmcgYW4gdW5jb25k
aXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQgYnVmZmVyIGhlcmUgaXMgT0sgYmVjYXVzZSB0aGlzIGNv
ZGUKICAgICAvLyBpc24ndCB1c2VkIGJ5IGFueSBwbGF0Zm9ybXMgdGhhdCByZXNwZWN0IHRoZSBh
Y2NlbGVyYXRlZCBiaXQuCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVh
dGUodGFyZ2V0UmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRv
IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0YXJnZXRSZWN0LnNpemUoKSwgUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAg
cmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3Jl
ZW5HdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0
Zm9ybVNjcmVlbkd0ay5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IE1pY2hhZWwgRW1tZWwgbWlrZS5l
bW1lbEBnbWFpbC5jb20KICAqIENvcHlyaWdodCAoQykgMjAwOCBDaHJpc3RpYW4gRHl3YW4gPGNo
cmlzdGlhbkBpbWVuZGlvLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRk
LgpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU2NyZWVuLmgiCiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNs
dWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJHdGtV
dGlsaXRpZXMuaCIKQEAgLTg1LDYgKzg2LDExIEBAIGJvb2wgc2NyZWVuSXNNb25vY2hyb21lKFdp
ZGdldCogd2lkZ2V0KQogICAgIHJldHVybiBzY3JlZW5EZXB0aCh3aWRnZXQpIDwgMjsKIH0KIAor
RGVzdGluYXRpb25Db2xvclNwYWNlIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KikKK3sKKyAgICBy
ZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7Cit9CisKIGJvb2wgc2NyZWVuSGFz
SW52ZXJ0ZWRDb2xvcnMoKQogewogICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNjcmVlbklPUy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5JT1MubW0JKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNjcmVlbklPUy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDYsIDIwMTQgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNi0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg4LDkgKzg4LDkgQEAgYm9vbCBzY3JlZW5TdXBwb3J0
c0hpZ2hEeW5hbWljUmFuZ2UoV2lkZwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotQ0dDb2xvclNw
YWNlUmVmIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KiB3aWRnZXQpCitEZXN0aW5hdGlvbkNvbG9y
U3BhY2Ugc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqIHdpZGdldCkKIHsKLSAgICByZXR1cm4gc2Ny
ZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKHdpZGdldCkgPyBleHRlbmRlZFNSR0JDb2xvclNwYWNl
UmVmKCkgOiBzUkdCQ29sb3JTcGFjZVJlZigpOworICAgIHJldHVybiBzY3JlZW5TdXBwb3J0c0V4
dGVuZGVkQ29sb3Iod2lkZ2V0KSA/IERlc3RpbmF0aW9uQ29sb3JTcGFjZSB7IGV4dGVuZGVkU1JH
QkNvbG9yU3BhY2VSZWYoKSB9IDogRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiB9CiAK
IC8vIFRoZXNlIGZ1bmN0aW9ucyBzY2FsZSBiZXR3ZWVuIHNjcmVlbiBhbmQgcGFnZSBjb29yZGlu
YXRlcyBiZWNhdXNlIEphdmFTY3JpcHQvRE9NIG9wZXJhdGlvbnMKQEAgLTE5MywxNiArMTkzLDE0
IEBAIFNjcmVlblByb3BlcnRpZXMgY29sbGVjdFNjcmVlblByb3BlcnRpZXMKICAgICAgICAgRmxv
YXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QgPSBzY3JlZW4uYm91bmRzOwogICAgICAgICBzY3Jl
ZW5BdmFpbGFibGVSZWN0LnNldFkoTlNNYXhZKHNjcmVlbi5ib3VuZHMpIC0gKHNjcmVlbkF2YWls
YWJsZVJlY3QueSgpICsgc2NyZWVuQXZhaWxhYmxlUmVjdC5oZWlnaHQoKSkpOyAvLyBmbGlwCiAg
ICAgICAgIEZsb2F0UmVjdCBzY3JlZW5SZWN0ID0gc2NyZWVuLl9yZWZlcmVuY2VCb3VuZHM7Ci0g
ICAgICAgIAotICAgICAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNlID0g
c2NyZWVuQ29sb3JTcGFjZShudWxscHRyKTsKLSAgICAgICAgCisgICAgICAgIERlc3RpbmF0aW9u
Q29sb3JTcGFjZSBjb2xvclNwYWNlIHsgc2NyZWVuQ29sb3JTcGFjZShudWxscHRyKSB9OwogICAg
ICAgICBpbnQgc2NyZWVuRGVwdGggPSBXZWJDb3JlOjpzY3JlZW5EZXB0aChudWxscHRyKTsKICAg
ICAgICAgaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50ID0gV2ViQ29yZTo6c2NyZWVuRGVwdGhQ
ZXJDb21wb25lbnQobnVsbHB0cik7CiAgICAgICAgIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRl
ZENvbG9yID0gV2ViQ29yZTo6c2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKG51bGxwdHIpOwog
ICAgICAgICBib29sIHNjcmVlbkhhc0ludmVydGVkQ29sb3JzID0gV2ViQ29yZTo6c2NyZWVuSGFz
SW52ZXJ0ZWRDb2xvcnMoKTsKICAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBXZWJDb3JlOjpz
Y3JlZW5QUElGYWN0b3IoKTsKIAotICAgICAgICBzY3JlZW5Qcm9wZXJ0aWVzLnNjcmVlbkRhdGFN
YXAuc2V0KCsrZGlzcGxheUlELCBTY3JlZW5EYXRhIHsgc2NyZWVuQXZhaWxhYmxlUmVjdCwgc2Ny
ZWVuUmVjdCwgY29sb3JTcGFjZSwgc2NyZWVuRGVwdGgsIHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50
LCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IsIHNjcmVlbkhhc0ludmVydGVkQ29sb3JzLCBm
YWxzZSwgc2NhbGVGYWN0b3IgfSk7CisgICAgICAgIHNjcmVlblByb3BlcnRpZXMuc2NyZWVuRGF0
YU1hcC5zZXQoKytkaXNwbGF5SUQsIFNjcmVlbkRhdGEgeyBzY3JlZW5BdmFpbGFibGVSZWN0LCBz
Y3JlZW5SZWN0LCBXVEZNb3ZlKGNvbG9yU3BhY2UpLCBzY3JlZW5EZXB0aCwgc2NyZWVuRGVwdGhQ
ZXJDb21wb25lbnQsIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciwgc2NyZWVuSGFzSW52ZXJ0
ZWRDb2xvcnMsIGZhbHNlLCBzY2FsZUZhY3RvciB9KTsKICAgICAgICAgCiAgICAgICAgIGlmIChz
Y3JlZW4gPT0gW1BBTDo6Z2V0VUlTY3JlZW5DbGFzcygpIG1haW5TY3JlZW5dKQogICAgICAgICAg
ICAgc2NyZWVuUHJvcGVydGllcy5wcmltYXJ5RGlzcGxheUlEID0gZGlzcGxheUlEOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1hYy5tbQko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
U2NyZWVuTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsOSArMTMwLDcgQEAgU2NyZWVuUHJv
cGVydGllcyBjb2xsZWN0U2NyZWVuUHJvcGVydGllcwogICAgICAgICBGbG9hdFJlY3Qgc2NyZWVu
QXZhaWxhYmxlUmVjdCA9IHNjcmVlbi52aXNpYmxlRnJhbWU7CiAgICAgICAgIHNjcmVlbkF2YWls
YWJsZVJlY3Quc2V0WShOU01heFkoc2NyZWVuLmZyYW1lKSAtIChzY3JlZW5BdmFpbGFibGVSZWN0
LnkoKSArIHNjcmVlbkF2YWlsYWJsZVJlY3QuaGVpZ2h0KCkpKTsgLy8gZmxpcAogICAgICAgICBG
bG9hdFJlY3Qgc2NyZWVuUmVjdCA9IHNjcmVlbi5mcmFtZTsKLQotICAgICAgICBSZXRhaW5QdHI8
Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNlID0gc2NyZWVuLmNvbG9yU3BhY2UuQ0dDb2xvclNw
YWNlOwotCisgICAgICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlIHsgc2NyZWVu
LmNvbG9yU3BhY2UuQ0dDb2xvclNwYWNlIH07CiAgICAgICAgIGludCBzY3JlZW5EZXB0aCA9IE5T
Qml0c1BlclBpeGVsRnJvbURlcHRoKHNjcmVlbi5kZXB0aCk7CiAgICAgICAgIGludCBzY3JlZW5E
ZXB0aFBlckNvbXBvbmVudCA9IE5TQml0c1BlclNhbXBsZUZyb21EZXB0aChzY3JlZW4uZGVwdGgp
OwogICAgICAgICBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciA9IFtzY3JlZW4gY2Fu
UmVwcmVzZW50RGlzcGxheUdhbXV0Ok5TRGlzcGxheUdhbXV0UDNdOwpAQCAtMTYzLDcgKzE2MSw3
IEBAIFNjcmVlblByb3BlcnRpZXMgY29sbGVjdFNjcmVlblByb3BlcnRpZXMKICAgICAgICAgaWYg
KGRpc3BsYXlNYXNrKQogICAgICAgICAgICAgZ3B1SUQgPSBncHVJREZvckRpc3BsYXlNYXNrKGRp
c3BsYXlNYXNrKTsKIAotICAgICAgICBzY3JlZW5Qcm9wZXJ0aWVzLnNjcmVlbkRhdGFNYXAuc2V0
KGRpc3BsYXlJRCwgU2NyZWVuRGF0YSB7IHNjcmVlbkF2YWlsYWJsZVJlY3QsIHNjcmVlblJlY3Qs
IGNvbG9yU3BhY2UsIHNjcmVlbkRlcHRoLCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCwgc2NyZWVu
U3VwcG9ydHNFeHRlbmRlZENvbG9yLCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycywgc2NyZWVuU3Vw
cG9ydHNIaWdoRHluYW1pY1JhbmdlLCBzY3JlZW5Jc01vbm9jaHJvbWUsIGRpc3BsYXlNYXNrLCBn
cHVJRCwgZHluYW1pY1JhbmdlTW9kZSwgc2NhbGVGYWN0b3IgfSk7CisgICAgICAgIHNjcmVlblBy
b3BlcnRpZXMuc2NyZWVuRGF0YU1hcC5zZXQoZGlzcGxheUlELCBTY3JlZW5EYXRhIHsgc2NyZWVu
QXZhaWxhYmxlUmVjdCwgc2NyZWVuUmVjdCwgV1RGTW92ZShjb2xvclNwYWNlKSwgc2NyZWVuRGVw
dGgsIHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50LCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3Is
IHNjcmVlbkhhc0ludmVydGVkQ29sb3JzLCBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2Us
IHNjcmVlbklzTW9ub2Nocm9tZSwgZGlzcGxheU1hc2ssIGdwdUlELCBkeW5hbWljUmFuZ2VNb2Rl
LCBzY2FsZUZhY3RvciB9KTsKIAogICAgICAgICBpZiAoIXNjcmVlblByb3BlcnRpZXMucHJpbWFy
eURpc3BsYXlJRCkKICAgICAgICAgICAgIHNjcmVlblByb3BlcnRpZXMucHJpbWFyeURpc3BsYXlJ
RCA9IGRpc3BsYXlJRDsKQEAgLTM0MCwxMyArMzM4LDEzIEBAIE5TU2NyZWVuICpzY3JlZW4oUGxh
dGZvcm1EaXNwbGF5SUQgZGlzcGwKICAgICByZXR1cm4gZmlyc3RTY3JlZW4oKTsKIH0KIAotQ0dD
b2xvclNwYWNlUmVmIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KiB3aWRnZXQpCitEZXN0aW5hdGlv
bkNvbG9yU3BhY2Ugc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqIHdpZGdldCkKIHsKICAgICBpZiAo
YXV0byBkYXRhID0gc2NyZWVuUHJvcGVydGllcyh3aWRnZXQpKQotICAgICAgICByZXR1cm4gZGF0
YS0+Y29sb3JTcGFjZS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIGRhdGEtPmNvbG9yU3BhY2U7CiAK
ICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5Db21t
dW5pY2F0ZVdpdGhXaW5kb3dTZXJ2ZXIpKTsKLSAgICByZXR1cm4gc2NyZWVuKHdpZGdldCkuY29s
b3JTcGFjZS5DR0NvbG9yU3BhY2U7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB7
IHNjcmVlbih3aWRnZXQpLmNvbG9yU3BhY2UuQ0dDb2xvclNwYWNlIH07CiB9CiAKIGJvb2wgc2Ny
ZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKFdpZGdldCogd2lkZ2V0KQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03MjYs
NyArNzI2LDcgQEAgYm9vbCBUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaQogCiAg
ICAgaWYgKHVzZUltYWdlQnVmZmVyKSB7CiAgICAgICAgIE5TUmVjdCBpbWFnZUJ1ZmZlckRyYXdS
ZWN0ID0gTlNSZWN0KEZsb2F0UmVjdChidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRv
bkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKSk7Ci0g
ICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1
ZmZlcihyZWN0LnNpemUoKSArIDIgKiBGbG9hdFNpemUoYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdp
ZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgpLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBjb250ZXh0KTsKKyAgICAgICAgYXV0byBpbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHJlY3Quc2l6ZSgpICsg
MiAqIEZsb2F0U2l6ZShidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVj
dE91dGxpbmVXaWR0aCksIGRldmljZVNjYWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgY29udGV4dCk7CiAgICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgICAg
ICByZXR1cm4gbmVlZHNSZXBhaW50OwogICAgICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3Ry
ZWFtZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lci5jcHAJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lcjo6
dQogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcGl4
ZWxCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoeyBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCIH0sIHsgeyB9LCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSB9KTsK
KyAgICBhdXRvIHBpeGVsQnVmZmVyID0gaW1hZ2VCdWZmZXItPmdldFBpeGVsQnVmZmVyKHsgQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6QkdSQTgs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH0sIHsgeyB9LCBpbWFnZUJ1ZmZlci0+bG9n
aWNhbFNpemUoKSB9KTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm47CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDU0LDcgKzQ1NCw3IEBAIEltYWdlQnVmZmVyKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZTo6aW0KICAgICBpZiAobV9pbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZm
ZXIuZ2V0KCk7CiAKLSAgICBtX2ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjYXB0
dXJlU2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgbV9pbWFnZUJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGUoY2FwdHVyZVNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CiAgICAgaWYgKCFtX2ltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcGxheXN0YXRpb24vUGxhdGZvcm1TY3Jl
ZW5QbGF5U3RhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
cGxheXN0YXRpb24vUGxhdGZvcm1TY3JlZW5QbGF5U3RhdGlvbi5jcHAJKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3BsYXlzdGF0aW9uL1BsYXRmb3JtU2NyZWVu
UGxheVN0YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKIAorI2luY2x1ZGUgIkRl
c3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCiAKQEAgLTcxLDQgKzcyLDkgQEAgYm9vbCBzY3JlZW5TdXBwb3J0
c0V4dGVuZGVkQ29sb3IoV2lkZ2V0KgogICAgIHJldHVybiBmYWxzZTsKIH0KIAorRGVzdGluYXRp
b25Db2xvclNwYWNlIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KikKK3sKKyAgICByZXR1cm4gRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVlbldpbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BsYXRmb3JtU2NyZWVu
V2luLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1BsYXRmb3JtU2NyZWVuV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAKKyNpbmNs
dWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNp
bmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgpAQCAtMTA0LDEyICsxMDUs
MTAgQEAgRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QoV2lkZ2V0KiB3aQogICAgIHJldHVy
biBtb25pdG9ySW5mby5yY1dvcms7CiB9CiAKLSNpZiBVU0UoQ0cpCi1DR0NvbG9yU3BhY2VSZWYg
c2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqKQorRGVzdGluYXRpb25Db2xvclNwYWNlIHNjcmVlbkNv
bG9yU3BhY2UoV2lkZ2V0KikKIHsKLSAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKKyAg
ICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiB9Ci0jZW5kaWYKIAogYm9v
bCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IoV2lkZ2V0KikKIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dwZS9QbGF0Zm9ybVNjcmVlbldQRS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3BlL1BsYXRmb3JtU2NyZWVuV1BFLmNwcAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3BlL1BsYXRmb3JtU2NyZWVu
V1BFLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAKKyNpbmNsdWRlICJEZXN0aW5hdGlv
bkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgogI2luY2x1ZGUgIldpZGdldC5oIgpAQCAtODEsNiArODIsMTEgQEAgRmxvYXRS
ZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QoV2lkZ2V0KiB3aQogICAgIHJldHVybiBzY3JlZW5SZWN0
KHdpZGdldCk7CiB9CiAKK0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBzY3JlZW5Db2xvclNwYWNlKFdp
ZGdldCopCit7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOworfQor
CiBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcihXaWRnZXQqKQogewogICAgIHJldHVy
biBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIu
aAkod29ya2luZyBjb3B5KQpAQCAtMTgsNiArMTgsNyBAQAogICovCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQz
RC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIK
QEAgLTMyLDggKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCi0jaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlQ0cuaD4KLSNpbmNsdWRlIDxX
ZWJDb3JlL0lPU3VyZmFjZS5oPgorI2luY2x1ZGUgIklPU3VyZmFjZS5oIgogI2luY2x1ZGUgPHd0
Zi9NYWNoU2VuZFJpZ2h0Lmg+CiAjZW5kaWYKIApAQCAtNDQ2LDcgKzQ0Niw3IEBAIE9wdGlvbmFs
PERldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGE+IEQKICAgICBXVEY6Ok1hY2hTZW5kUmlnaHQg
c3VyZmFjZVNlbmRSaWdodDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN1cmZhY2VTZW5kUmln
aHQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIGxheWVyRGF0YS5zdXJmYWNl
ID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoc3VyZmFj
ZVNlbmRSaWdodCksIFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCkpOworICAgIGxheWVyRGF0
YS5zdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1v
dmUoc3VyZmFjZVNlbmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpKTsKICNlbmRpZgogICAgIHJldHVybiBsYXllckRhdGE7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMSw5ICsx
MTEsOSBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBDU1NGaWx0ZXI6OmJ1aWxkUmVmCiAgICAgICAg
IGVmZmVjdEVsZW1lbnQuc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKGVmZmVjdC5nZXQoKSk7CiAgICAg
ICAgIGlmIChlZmZlY3RFbGVtZW50LnJlbmRlcmVyKCkpIHsKICNpZiBFTkFCTEUoREVTVElOQVRJ
T05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJh
dGluZ0NvbG9yU3BhY2UoZWZmZWN0RWxlbWVudC5yZW5kZXJlcigpLT5zdHlsZSgpLnN2Z1N0eWxl
KCkuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpID09IENvbG9ySW50ZXJwb2xhdGlvbjo6TGlu
ZWFyUkdCID8gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCIDogRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKTsKKyAgICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JT
cGFjZShlZmZlY3RFbGVtZW50LnJlbmRlcmVyKCktPnN0eWxlKCkuc3ZnU3R5bGUoKS5jb2xvcklu
dGVycG9sYXRpb25GaWx0ZXJzKCkgPT0gQ29sb3JJbnRlcnBvbGF0aW9uOjpMaW5lYXJSR0IgPyBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKSA6IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpKTsKICNlbHNlCi0gICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9y
U3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKKyAgICAgICAgICAgIGVmZmVjdC0+
c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAj
ZW5kaWYKICAgICAgICAgfQogICAgICAgICBidWlsZGVyLT5hZGQoZWZmZWN0RWxlbWVudC5yZXN1
bHQoKSwgZWZmZWN0KTsKQEAgLTI5Niw3ICsyOTYsNyBAQCBib29sIENTU0ZpbHRlcjo6YnVpbGQo
UmVuZGVyRWxlbWVudCYgcmVuCiAgICAgICAgICAgICAvLyBVbmxpa2UgU1ZHIEZpbHRlcnMgYW5k
IENTU0ZpbHRlckltYWdlcywgZmlsdGVyIGZ1bmN0aW9ucyBvbiB0aGUgZmlsdGVyCiAgICAgICAg
ICAgICAvLyBwcm9wZXJ0eSBhcHBsaWVkIGhlcmUgc2hvdWxkIG5vdCBjbGlwIHRvIHRoZWlyIHBy
aW1pdGl2ZSBzdWJyZWdpb25zLgogICAgICAgICAgICAgZWZmZWN0LT5zZXRDbGlwc1RvQm91bmRz
KGNvbnN1bWVyID09IEZpbHRlckNvbnN1bWVyOjpGaWx0ZXJGdW5jdGlvbik7Ci0gICAgICAgICAg
ICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKTsKKyAgICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChm
aWx0ZXJPcGVyYXRpb24udHlwZSgpICE9IEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFKSB7CiAg
ICAgICAgICAgICAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgV1RGTW92ZShwcmV2aW91
c0VmZmVjdCkgfTsKQEAgLTM0NCwxMSArMzQ0LDExIEBAIHZvaWQgQ1NTRmlsdGVyOjphbGxvY2F0
ZUJhY2tpbmdTdG9yZUlmTmUKICAgICBJbnRTaXplIGxvZ2ljYWxTaXplIHsgbV9zb3VyY2VEcmF3
aW5nUmVnaW9uLnNpemUoKSB9OwogICAgIGlmICghc291cmNlSW1hZ2UoKSB8fCBzb3VyY2VJbWFn
ZSgpLT5sb2dpY2FsU2l6ZSgpICE9IGxvZ2ljYWxTaXplKSB7CiAjaWYgVVNFKERJUkVDVDJEKQot
ICAgICAgICBzZXRTb3VyY2VJbWFnZShJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBy
ZW5kZXJpbmdNb2RlKCksICZ0YXJnZXRDb250ZXh0LCBmaWx0ZXJTY2FsZSgpLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCkpOworICAgICAgICBzZXRTb3Vy
Y2VJbWFnZShJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZW5kZXJpbmdNb2RlKCks
ICZ0YXJnZXRDb250ZXh0LCBmaWx0ZXJTY2FsZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0o
dGFyZ2V0Q29udGV4dCk7CiAgICAgICAgIFJlbmRlcmluZ01vZGUgbW9kZSA9IG1fZmlsdGVyUmVu
ZGVyZXIgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IHJlbmRlcmluZ01vZGUoKTsKLSAg
ICAgICAgc2V0U291cmNlSW1hZ2UoSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgbW9k
ZSwgZmlsdGVyU2NhbGUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1h
dDo6QkdSQTgpKTsKKyAgICAgICAgc2V0U291cmNlSW1hZ2UoSW1hZ2VCdWZmZXI6OmNyZWF0ZShs
b2dpY2FsU2l6ZSwgbW9kZSwgZmlsdGVyU2NhbGUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCkpOwogI2VuZGlmCiAgICAgfQogICAgIG1fZ3JhcGhp
Y3NCdWZmZXJBdHRhY2hlZCA9IHRydWU7CkBAIC0zODIsMTIgKzM4MiwxMiBAQCB2b2lkIENTU0Zp
bHRlcjo6YXBwbHkoKQogICAgIGlmIChtX2ZpbHRlclJlbmRlcmVyKSB7CiAgICAgICAgIG1fZmls
dGVyUmVuZGVyZXItPmFwcGx5RWZmZWN0cyhlZmZlY3QpOwogICAgICAgICBpZiAobV9maWx0ZXJS
ZW5kZXJlci0+aGFzUmVzdWx0KCkpIHsKLSAgICAgICAgICAgIGVmZmVjdC50cmFuc2Zvcm1SZXN1
bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CisgICAgICAgICAgICBl
ZmZlY3QudHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAgICAgZWZmZWN0
LmFwcGx5KCk7Ci0gICAgZWZmZWN0LnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKTsKKyAgICBlZmZlY3QudHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFj
ZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiB9CiAKIExheW91dFJlY3QgQ1NTRmls
dGVyOjpjb21wdXRlU291cmNlSW1hZ2VSZWN0Rm9yRGlydHlSZWN0KGNvbnN0IExheW91dFJlY3Qm
IGZpbHRlckJveFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGRpcnR5UmVjdCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkocmV2
aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODc2LDcgKzg3Niw3IEBAIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWUKICAgICAgICAgbWFza1JlY3QuaW50ZXJzZWN0
KHNuYXBwZWRJbnRSZWN0KHBhaW50SW5mby5yZWN0KSk7CiAKICAgICAgICAgLy8gTm93IGNyZWF0
ZSB0aGUgbWFzay4KLSAgICAgICAgbWFza0ltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBh
dGlibGVCdWZmZXIobWFza1JlY3Quc2l6ZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Is
IGNvbnRleHQpOworICAgICAgICBtYXNrSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0
aWJsZUJ1ZmZlcihtYXNrUmVjdC5zaXplKCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBjb250ZXh0KTsKICAgICAgICAgaWYgKCFtYXNrSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIHBhaW50TWFza0ZvclRleHRGaWxsQm94KG1hc2tJbWFnZS5nZXQoKSwgbWFza1Jl
Y3QsIGJveCwgc2Nyb2xsZWRQYWludFJlY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMjY3LDcgKzMyNjcsNyBAQCBzdGF0aWMgUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm5G
b3JEZXNjcmlwCiB7CiAgICAgY29uc3QgRmxvYXRTaXplIHRpbGVTaXplIHsgMzIsIDE4IH07CiAK
LSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZm
ZXIodGlsZVNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgZGVzdENvbnRleHQpOwor
ICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cih0aWxlU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGRlc3RDb250ZXh0KTsK
ICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTgzLDExICsxOTgzLDExIEBAIHZvaWQgUmVuZGVyVGhlbWVJT1M6OnBh
aW50U3lzdGVtUHJldmlld0IKICAgICBJT1N1cmZhY2VSZWYgc3VyZmFjZTsKICAgICBpZiAodXNl
U21hbGxCYWRnZSkgewogICAgICAgICBpZiAoIW1fc21hbGxCYWRnZVN1cmZhY2UpCi0gICAgICAg
ICAgICBtX3NtYWxsQmFkZ2VTdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoeyBzbWFsbEJhZGdl
RGltZW5zaW9uLCBzbWFsbEJhZGdlRGltZW5zaW9uIH0sIHNSR0JDb2xvclNwYWNlUmVmKCkpOwor
ICAgICAgICAgICAgbV9zbWFsbEJhZGdlU3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKHsgc21h
bGxCYWRnZURpbWVuc2lvbiwgc21hbGxCYWRnZURpbWVuc2lvbiB9LCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSk7CiAgICAgICAgIHN1cmZhY2UgPSBtX3NtYWxsQmFkZ2VTdXJmYWNlLT5z
dXJmYWNlKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFtX2xhcmdlQmFkZ2VTdXJmYWNl
KQotICAgICAgICAgICAgbV9sYXJnZUJhZGdlU3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKHsg
bGFyZ2VCYWRnZURpbWVuc2lvbiwgbGFyZ2VCYWRnZURpbWVuc2lvbiB9LCBzUkdCQ29sb3JTcGFj
ZVJlZigpKTsKKyAgICAgICAgICAgIG1fbGFyZ2VCYWRnZVN1cmZhY2UgPSBJT1N1cmZhY2U6OmNy
ZWF0ZSh7IGxhcmdlQmFkZ2VEaW1lbnNpb24sIGxhcmdlQmFkZ2VEaW1lbnNpb24gfSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgICAgICBzdXJmYWNlID0gbV9sYXJnZUJhZGdl
U3VyZmFjZS0+c3VyZmFjZSgpOwogICAgIH0KICAgICBbbV9jaUNvbnRleHQuZ2V0KCkgcmVuZGVy
OnRyYW5zbGF0ZWRJbWFnZSB0b0lPU3VyZmFjZTpzdXJmYWNlIGJvdW5kczpiYWRnZVJlY3QgY29s
b3JTcGFjZTpzUkdCQ29sb3JTcGFjZVJlZigpXTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTMwOSw3
ICsxMzA5LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRQcm9ncmVzc0JhcihjbwogICAg
IGNvbnN0IGF1dG8mIHJlbmRlclByb2dyZXNzID0gZG93bmNhc3Q8UmVuZGVyUHJvZ3Jlc3M+KHJl
bmRlck9iamVjdCk7CiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSByZW5kZXJPYmplY3Qu
ZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpOwogICAgIGJvb2wgaXNJbmRldGVybWluYXRl
ID0gcmVuZGVyUHJvZ3Jlc3MucG9zaXRpb24oKSA8IDA7Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGluZmxhdGVkUmVjdC5zaXplKCks
IGRldmljZVNjYWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIHBhaW50SW5m
by5jb250ZXh0KCkpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihpbmZsYXRlZFJlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3Rvciwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHBhaW50SW5mby5jb250ZXh0KCkpOwogICAg
IGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiB0cnVlOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE4MSw3ICsxODEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVS
YXN0CiAgICAgSW50UmVjdCBtYXJnaW5SZWN0ID0gc25hcHBlZEludFJlY3QobWFyZ2luUik7CiAg
ICAgYXV0byBpbnRlcnZhbHMgPSBtYWtlVW5pcXVlPFJhc3RlclNoYXBlSW50ZXJ2YWxzPihtYXJn
aW5SZWN0LmhlaWdodCgpLCAtbWFyZ2luUmVjdC55KCkpOwogICAgIC8vIEZJWE1FICgxNDk0MjAp
OiBUaGlzIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVk
LgotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5z
aXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFj
Y2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6
OkJHUkE4KTsKIAogICAgIGF1dG8gY3JlYXRlU2hhcGUgPSBbJl0oKSB7CiAgICAgICAgIGF1dG8g
cmFzdGVyU2hhcGUgPSBtYWtlVW5pcXVlPFJhc3RlclNoYXBlPihXVEZNb3ZlKGludGVydmFscyks
IG1hcmdpblJlY3Quc2l6ZSgpKTsKQEAgLTE5Nyw3ICsxOTcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0CiAgICAgaWYgKGltYWdlKQogICAgICAgICBncmFwaGlj
c0NvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZVJlY3Qu
c2l6ZSgpKSk7CiAKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRp
cGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9
IGltYWdlQnVmZmVyLT5nZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIHsgSW50UG9pbnQoKSwgaW1hZ2VS
ZWN0LnNpemUoKSB9KTsKICAgICAKICAgICAvLyBXZSBjb3VsZCBnZXQgdG8gYSB2YWx1ZSB3aGVy
ZSBQaXhlbEJ1ZmZlciBjb3VsZCBiZSBudWxsb3B0LiBBIGNhc2Ugd2hlcmUgSW1hZ2VSZWN0LnNp
emUoKSBpcyBodWdlLCBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIu
Y3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw3ICsxNDYs
NyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlDbGlwCiAgICAgQWZmaW5l
VHJhbnNmb3JtIGFic29sdXRlVHJhbnNmb3JtID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3Vs
YXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0ocmVuZGVyZXIpOwog
ICAgIGlmICghY2xpcHBlckRhdGEuaXNWYWxpZEZvckdlb21ldHJ5KG9iamVjdEJvdW5kaW5nQm94
LCBhYnNvbHV0ZVRyYW5zZm9ybSkpIHsKICAgICAgICAgLy8gRklYTUUgKDE0OTQ2OSk6IFRoaXMg
aW1hZ2UgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQu
IE1ha2luZyBpdCBtYXRjaCB0aGUgY29udGV4dCBicmVha3MgbmVzdGVkIGNsaXBwaW5nLCB0aG91
Z2guCi0gICAgICAgIGF1dG8gbWFza0ltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRl
SW1hZ2VCdWZmZXIob2JqZWN0Qm91bmRpbmdCb3gsIGFic29sdXRlVHJhbnNmb3JtLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsICZjb250
ZXh0KTsKKyAgICAgICAgYXV0byBtYXNrSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVh
dGVJbWFnZUJ1ZmZlcihvYmplY3RCb3VuZGluZ0JveCwgYWJzb2x1dGVUcmFuc2Zvcm0sIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAm
Y29udGV4dCk7CiAgICAgICAgIGlmICghbWFza0ltYWdlKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlRmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwNCw5ICsxMDQsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHRmlsdGVyQnVp
bGRlcj4gUmVuZGVyCiAgICAgICAgIGVmZmVjdC0+c2V0RWZmZWN0Qm91bmRhcmllcyhTVkdMZW5n
dGhDb250ZXh0OjpyZXNvbHZlUmVjdGFuZ2xlPFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcz4oJmVsZW1lbnQsIGZpbHRlckVsZW1lbnQoKS5wcmltaXRpdmVVbml0cygpLCB0YXJn
ZXRCb3VuZGluZ0JveCkpOwogICAgICAgICBpZiAoZWxlbWVudC5yZW5kZXJlcigpKSB7CiAjaWYg
RU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQotICAgICAgICAgICAg
ZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKGVsZW1lbnQucmVuZGVyZXIoKS0+c3R5bGUo
KS5zdmdTdHlsZSgpLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSA9PSBDb2xvckludGVycG9s
YXRpb246OkxpbmVhclJHQiA/IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQiA6IERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CisgICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJh
dGluZ0NvbG9yU3BhY2UoZWxlbWVudC5yZW5kZXJlcigpLT5zdHlsZSgpLnN2Z1N0eWxlKCkuY29s
b3JJbnRlcnBvbGF0aW9uRmlsdGVycygpID09IENvbG9ySW50ZXJwb2xhdGlvbjo6TGluZWFyUkdC
ID8gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCkgOiBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSk7CiAjZWxzZQotICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdD
b2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CisgICAgICAgICAgICBlZmZl
Y3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkp
OwogI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgYnVpbGRlci0+YWRkKGVsZW1lbnQucmVzdWx0
KCksIFdURk1vdmUoZWZmZWN0KSk7CkBAIC0xOTgsOSArMTk4LDkgQEAgYm9vbCBSZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdQogCiAgICAgYXV0byByZW5kZXJpbmdNb2RlID0gcmVu
ZGVyZXIuc2V0dGluZ3MoKS5hY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVkKCkgPyBSZW5kZXJpbmdN
b2RlOjpBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CiAjaWYgRU5B
QkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQotICAgIGF1dG8gY29sb3JT
cGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQjsKKyAgICBhdXRvIGNvbG9y
U3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKTsKICNlbHNlCi0gICAg
YXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOworICAgIGF1dG8g
Y29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOwogI2VuZGlmCiAgICAg
YXV0byBzb3VyY2VHcmFwaGljID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZm
ZXIoZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbiwgZWZmZWN0aXZlVHJhbnNmb3JtLCBjb2xvclNw
YWNlLCByZW5kZXJpbmdNb2RlLCBjb250ZXh0KTsKICAgICBpZiAoIXNvdXJjZUdyYXBoaWMpIHsK
QEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBw
bHlSCiAgICAgICAgICAgICBmaWx0ZXJEYXRhLnN0YXRlID0gRmlsdGVyRGF0YTo6QXBwbHlpbmc7
CiAgICAgICAgICAgICBsYXN0RWZmZWN0LT5hcHBseSgpOwogICAgICAgICAgICAgbGFzdEVmZmVj
dC0+Y29ycmVjdEZpbHRlclJlc3VsdElmTmVlZGVkKCk7Ci0gICAgICAgICAgICBsYXN0RWZmZWN0
LT50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7
CisgICAgICAgICAgICBsYXN0RWZmZWN0LT50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICAgICAgfQogICAgICAgICBmaWx0ZXJEYXRh
LnN0YXRlID0gRmlsdGVyRGF0YTo6QnVpbHQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUdyYWRpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgY3JlYXRlTWFza0FuZFN3YXBDb250CiAgICAgQWZmaW5lVHJhbnNm
b3JtIGFic29sdXRlVHJhbnNmb3JtID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJh
bnNmb3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0oKnRleHRSb290QmxvY2spOwog
ICAgIEZsb2F0UmVjdCByZXBhaW50UmVjdCA9IHRleHRSb290QmxvY2stPnJlcGFpbnRSZWN0SW5M
b2NhbENvb3JkaW5hdGVzKCk7CiAKLSAgICBhdXRvIG1hc2tJbWFnZSA9IFNWR1JlbmRlcmluZ0Nv
bnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBjb250ZXh0LT5yZW5kZXJpbmdNb2RlKCkpOwor
ICAgIGF1dG8gbWFza0ltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZm
ZXIocmVwYWludFJlY3QsIGFic29sdXRlVHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgY29udGV4dC0+cmVuZGVyaW5nTW9kZSgpKTsKICAgICBpZiAoIW1hc2tJbWFnZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZU1hc2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDkgKzcxLDkgQEAgYm9vbCBSZW5kZXJT
VkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdQogICAgICAgICBjb25zdCBTVkdSZW5kZXJTdHls
ZSYgc3ZnU3R5bGUgPSBzdHlsZSgpLnN2Z1N0eWxlKCk7CiAKICNpZiBFTkFCTEUoREVTVElOQVRJ
T05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgICAgIGF1dG8gY29sb3JTcGFjZSA9IHN2
Z1N0eWxlLmNvbG9ySW50ZXJwb2xhdGlvbigpID09IENvbG9ySW50ZXJwb2xhdGlvbjo6TGluZWFy
UkdCID8gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCIDogRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCOworICAgICAgICBhdXRvIGNvbG9yU3BhY2UgPSBzdmdTdHlsZS5jb2xvcklu
dGVycG9sYXRpb24oKSA9PSBDb2xvckludGVycG9sYXRpb246OkxpbmVhclJHQiA/IERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigpIDogRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCk7CiAjZWxzZQotICAgICAgICBhdXRvIGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0I7CisgICAgICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpOwogI2VuZGlmCiAKICAgICAgICAgLy8gRklYTUUgKDE0OTQ3MCk6IFRoaXMgaW1h
Z2UgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQuIE1h
a2luZyBpdCBtYXRjaCB0aGUgY29udGV4dCBicmVha3MgYWxwaGEgbWFza2luZywgdGhvdWdoLgpA
QCAtOTIsNyArOTIsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBseVJlc291
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmRy
YXdDb250ZW50SW50b01hc2tJbWFnZShNYXNrZXJEYXRhKiBtYXNrZXJEYXRhLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVuZGVyT2JqZWN0KiBvYmplY3QpCitib29sIFJlbmRl
clNWR1Jlc291cmNlTWFza2VyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UoTWFza2VyRGF0YSog
bWFza2VyRGF0YSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBSZW5k
ZXJPYmplY3QqIG9iamVjdCkKIHsKICAgICBHcmFwaGljc0NvbnRleHQmIG1hc2tJbWFnZUNvbnRl
eHQgPSBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UtPmNvbnRleHQoKTsKIApAQCAtMTE5LDcgKzExOSw3
IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250ZW4KICAgICB9CiAKICNp
ZiAhVVNFKENHKQotICAgIG1hc2tlckRhdGEtPm1hc2tJbWFnZS0+dHJhbnNmb3JtQ29sb3JTcGFj
ZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGNvbG9yU3BhY2UpOworICAgIG1hc2tlckRh
dGEtPm1hc2tJbWFnZS0+dHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgY29sb3JTcGFjZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb2xvclNwYWNl
KTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZU1hc2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAKICAgICBjb25zdCBjaGFyKiByZW5k
ZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1Jlc291cmNlTWFza2Vy
IjsgfQogCi0gICAgYm9vbCBkcmF3Q29udGVudEludG9NYXNrSW1hZ2UoTWFza2VyRGF0YSosIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSwgUmVuZGVyT2JqZWN0Kik7CisgICAgYm9vbCBkcmF3Q29udGVu
dEludG9NYXNrSW1hZ2UoTWFza2VyRGF0YSosIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYs
IFJlbmRlck9iamVjdCopOwogICAgIHZvaWQgY2FsY3VsYXRlTWFza0NvbnRlbnRSZXBhaW50UmVj
dCgpOwogCiAgICAgRmxvYXRSZWN0IG1fbWFza0NvbnRlbnRCb3VuZGFyaWVzOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VQYXR0ZXJuLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NTMsNyArMjUzLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkVGlsZQog
UmVmUHRyPEltYWdlQnVmZmVyPiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmNyZWF0ZVRpbGVJ
bWFnZShjb25zdCBQYXR0ZXJuQXR0cmlidXRlcyYgYXR0cmlidXRlcywgY29uc3QgRmxvYXRSZWN0
JiB0aWxlQm91bmRhcmllcywgY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVRpbGVCb3VuZGFyaWVz
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRpbGVJbWFnZVRyYW5zZm9ybSwgRmxvYXRSZWN0JiBj
bGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcywgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2Rl
KSBjb25zdAogewogICAgIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzID0gSW1hZ2VCdWZm
ZXI6OmNsYW1wZWRSZWN0KGFic29sdXRlVGlsZUJvdW5kYXJpZXMpOwotICAgIGF1dG8gdGlsZUlt
YWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoYWJzb2x1dGVUaWxl
Qm91bmRhcmllcywgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQiwgcmVuZGVyaW5nTW9kZSk7CisgICAgYXV0byB0aWxlSW1hZ2UgPSBTVkdS
ZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihhYnNvbHV0ZVRpbGVCb3VuZGFyaWVz
LCBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcywgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCksIHJlbmRlcmluZ01vZGUpOwogICAgIGlmICghdGlsZUltYWdlKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5k
ZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMzYsNyArMjM2LDcgQEAgQWZmaW5lVHJhbnNmb3JtIFNWR1JlbmRlcmluZ0NvbnRl
eHQ6OmNhbAogICAgIHJldHVybiBhYnNvbHV0ZVRyYW5zZm9ybTsKIH0KIAotUmVmUHRyPEltYWdl
QnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9h
dFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zv
cm0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRl
cmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxJbWFnZUJ1
ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3Jt
LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUg
cmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogewogICAgIElu
dFJlY3QgcGFpbnRSZWN0ID0gY2FsY3VsYXRlSW1hZ2VCdWZmZXJSZWN0KHRhcmdldFJlY3QsIGFi
c29sdXRlVHJhbnNmb3JtKTsKICAgICAvLyBEb24ndCBjcmVhdGUgZW1wdHkgSW1hZ2VCdWZmZXJz
LgpAQCAtMjY0LDcgKzI2NCw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29u
dGV4dDoKICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4g
U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRSZWN0LCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0Nv
bnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBj
b2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCkKIHsKICAgICBJbnRTaXplIGNsYW1wZWRTaXplID0gcm91bmRlZEludFNp
emUoY2xhbXBlZFJlY3Quc2l6ZSgpKTsKICAgICBGbG9hdFNpemUgdW5jbGFtcGVkU2l6ZSA9IHJv
dW5kZWRJbnRTaXplKHRhcmdldFJlY3Quc2l6ZSgpKTsKQEAgLTM1MCw3ICszNTAsNyBAQCBib29s
IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckZvcmVncm91CiAKICAgICAvLyBDcmVhdGUgYSBu
ZXcgYnVmZmVyIGFuZCBwYWludCB0aGUgZm9yZWdyb3VuZCBpbnRvIGl0LgogICAgIGlmICghaW1h
Z2VCdWZmZXIpIHsKLSAgICAgICAgaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoYm91bmRpbmdCb3guc2l6ZSgpKSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCLCBtX3BhaW50SW5mby0+Y29udGV4dCgpKTsKKyAgICAgICAg
aW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRl
ZEludFNpemUoYm91bmRpbmdCb3guc2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCksIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCShyZXZpc2lvbiAyNzc5
MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQu
aAkod29ya2luZyBjb3B5KQpAQCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmVw
YXJlVG9SZW5kZXJTVkdDb250ZW50KFJlbmRlckVsZW1lbnQmLCBQYWludEluZm8mLCBOZWVkc0dy
YXBoaWNzQ29udGV4dFNhdmUgPSBEb250U2F2ZUdyYXBoaWNzQ29udGV4dCk7CiAgICAgYm9vbCBp
c1JlbmRlcmluZ1ByZXBhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdGbGFncyAmIFJl
bmRlcmluZ1ByZXBhcmVkOyB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVh
dGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUmVuZGVy
aW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpOwotICAgIHN0YXRpYyBS
ZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFy
Z2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwgRGVzdGluYXRpb25Db2xvclNw
YWNlLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cik7Cisg
ICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxv
YXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNm
b3JtLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBH
cmFwaGljc0NvbnRleHQqID0gbnVsbHB0cik7CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZl
cj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIGNsYW1wZWRSZWN0LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBSZW5k
ZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cik7CiAKICAgICBzdGF0
aWMgdm9pZCByZW5kZXJTdWJ0cmVlVG9Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIFJlbmRlckVs
ZW1lbnQmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKICAgICBzdGF0aWMgdm9pZCBjbGlwVG9J
bWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29s
dXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4mLCBib29sIHNhZmVUb0NsZWFyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE3LDcgKzIxNyw3IEBA
IFJlZlB0cjxOYXRpdmVJbWFnZT4gU1ZHSW1hZ2U6Om5hdGl2ZUltYWcKICAgICBpZiAoIW1fcGFn
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBh
dXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFJlbmRlcmluZ01v
ZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCkBAIC0yNDcsNyArMjQ3LDcgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5G
b3JDb250YWluZXIoRwogICAgIEZsb2F0UmVjdCBpbWFnZUJ1ZmZlclNpemUgPSB6b29tZWRDb250
YWluZXJSZWN0OwogICAgIGltYWdlQnVmZmVyU2l6ZS5zY2FsZShpbWFnZUJ1ZmZlclNjYWxlLndp
ZHRoKCksIGltYWdlQnVmZmVyU2NhbGUuaGVpZ2h0KCkpOwogCi0gICAgYXV0byBidWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoaW1hZ2VC
dWZmZXJTaXplLnNpemUoKSksIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgY29udGV4
dCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cihleHBhbmRlZEludFNpemUoaW1hZ2VCdWZmZXJTaXplLnNpemUoKSksIDEsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpLCBjb250ZXh0KTsKICAgICBpZiAoIWJ1ZmZlcikgLy8gRmFpbGVk
IHRvIGFsbG9jYXRlIGJ1ZmZlci4KICAgICAgICAgcmV0dXJuOwogICAgIGRyYXdGb3JDb250YWlu
ZXIoYnVmZmVyLT5jb250ZXh0KCksIGNvbnRhaW5lclNpemUsIGNvbnRhaW5lclpvb20sIGluaXRp
YWxGcmFnbWVudFVSTCwgaW1hZ2VCdWZmZXJTaXplLCB6b29tZWRDb250YWluZXJSZWN0KTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1h
Z2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRUltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsOCArOTMsOCBAQCB2
b2lkIEZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKCFtX2ltYWdlICYm
ICFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRkVJbWFnZSByZXN1bHRzIGFy
ZSBhbHdheXMgaW4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCCi0gICAgc2V0UmVzdWx0Q29s
b3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOworICAgIC8vIEZFSW1hZ2UgcmVz
dWx0cyBhcmUgYWx3YXlzIGluIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpCisgICAgc2V0
UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAKICAgICBJ
bWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpOwogICAg
IGlmICghcmVzdWx0SW1hZ2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjc3OTIwKQorKysgU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw4OSBAQAorMjAy
MS0wNS0yMiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29udmVy
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdyYXBwaW5nIGEg
cGxhdGZvcm0gY29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0Yy4p
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxNDMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbV0lQXQor
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBHUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAg
ICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpjcmVhdGVGcmFtZUltYWdl
QXRJbmRleCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJB
VkZQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmU6OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6YXBwbHlCYWNraW5nU3RvcmVUb0xheWVyKToKKyAgICAg
ICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjpDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAgICAgICogU2hh
cmVkL1NoYXJlYWJsZUJpdG1hcC5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6Cisg
ICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBT
aGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAoV2ViS2l0Ojpjb2xvclNw
YWNlKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL0NvbG9yU3BhY2VEYXRhLmg6IFJlbW92ZWQuCisg
ICAgICAgICogU2hhcmVkL21hYy9Db2xvclNwYWNlRGF0YS5tbTogUmVtb3ZlZC4KKyAgICAgICAg
KiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmll
d0lPUy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF90YWtlVmlld1NuYXBzaG90XSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBfc25hcHNob3RSZWN0OmludG9JbWFnZU9mV2lkdGg6Y29tcGxldGlv
bkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6Y29sb3JTcGFjZSk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZUhvc3QubW06CisgICAgICAgIChXZWJLaXQ6OnJlY3Vyc2l2ZWx5TWFwSU9TdXJmYWNlQmFja2lu
Z1N0b3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9t
YWMvUGFnZUNsaWVudEltcGxNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBs
Ojpjb2xvclNwYWNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhUHJveHkubW06CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29sb3JTcGFjZSk6Cisg
ICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpj
b25maWd1cmF0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eTo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1
ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpjcmVhdGVGcmFtZUltYWdl
QXRJbmRleCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGl4ZWxCdWZmZXJGb3JDdXJyZW50VGltZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChX
ZWJLaXQ6OlBERlBsdWdpbjo6UERGUGx1Z2luKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OmNyZWF0ZVNoYXJlYWJsZUJpdG1hcCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGll
bnQ6OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OmNvbnZl
cnREcmFnSW1hZ2VUb0JpdG1hcCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhLmg6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjpzZXRDb2xvclNwYWNlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW46Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0
OjpzbmFwc2hvdE9wdGlvbnNUb0JpdG1hcENvbmZpZ3VyYXRpb24pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
Lm1tOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6VGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6c2V0Q29sb3JTcGFjZSk6CisKIDIwMjEtMDUtMjIgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIg
d2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
CShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTIwMyw3ICsyMDMsNiBAQCBTaGFyZWQvaW9zL1dlYlRvdWNoRXZlbnRJ
T1MuY3BwCiAKIFNoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQogU2hhcmVkL21hYy9D
b2RlU2lnbmluZy5tbQotU2hhcmVkL21hYy9Db2xvclNwYWNlRGF0YS5tbQogU2hhcmVkL21hYy9I
YW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMubW0KIFNoYXJlZC9tYWMvTmF0aXZlV2ViR2VzdHVyZUV2
ZW50TWFjLm1tCiBTaGFyZWQvbWFjL05hdGl2ZVdlYktleWJvYXJkRXZlbnRNYWMubW0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlci5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQs
NyBAQCBjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlciA6IHB1YmxpYyBXZWJDb3JlCiAgICAgdXNpbmcg
QmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnB1dFBpeGVsQnVmZmVyOwogCiBwdWJsaWM6Ci0gICAg
c3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFj
ZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgc3RhdGljIGF1dG8gY3Jl
YXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBjb25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFdlYkNv
cmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIEJhc2VD
b25jcmV0ZUltYWdlQnVmZmVyOjp0ZW1wbGF0ZSBjcmVhdGU8UmVtb3RlSW1hZ2VCdWZmZXI+KHNp
emUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIG51bGxwdHIsIHJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAg
fQpJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpkaWRGbHVzaChEaQogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTo6RGlkRmx1c2goZmx1c2hJZGVudGlmaWVyLCByZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxv
Z2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVs
Rm9ybWF0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xv
clNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKICAgICBBU1NFUlQocmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpB
Y2NlbGVyYXRlZCB8fCByZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQpOwpJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NCwxNCArNDQsMTggQEAKIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CisKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiBjbGFzcyBEaXNwbGF5TGlzdDsKIGNsYXNzIEl0
ZW07CiB9CisKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIEZsb2F0U2l6ZTsK
IGNsYXNzIE5hdGl2ZUltYWdlOwotZW51bSBjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgOiB1
aW50OF90OworCiBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOworCiB9CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtMTIxLDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBkaWRS
ZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVl
UmVmPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKIAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJl
Y2VpdmVkLgotICAgIHZvaWQgY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9y
bWF0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgY3Jl
YXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgV2Vi
Q29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBXZWJDb3Jl
OjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIHdha2VVcEFuZEFwcGx5RGlz
cGxheUxpc3QoY29uc3QgR1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHMmKTsKICAgICB2
b2lkIHVwZGF0ZVNoYXJlZE1lbW9yeUZvckdldFBpeGVsQnVmZmVyKHVpbnQzMl90IGJ5dGVDb3Vu
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYp
PiYmKTsKICAgICB2b2lkIHNlbWFwaG9yZUZvckdldFBpeGVsQnVmZmVyKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgSVBDOjpTZW1hcGhvcmUmKT4mJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJB
VkZQcm94eS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTExMywyOCArMTEzLDI4IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OnNldERh
dGEKICAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZUNvdW50LCBpbWFnZURlY29kZXItPnNpemUo
KSwgaW1hZ2VEZWNvZGVyLT5oYXNUcmFjaygpLCBXVEZNb3ZlKGZyYW1lSW5mb3MpKTsKIH0KIAot
dm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
SW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBzaXplX3QgaW5kZXgsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJpZ2h0PiYmLCBDb2xvclNwYWNl
RGF0YSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
UHJveHk6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KEltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgc2l6ZV90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdU
Rjo6TWFjaFNlbmRSaWdodD4mJiwgT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNw
YWNlPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQobV9pbWFnZURlY29k
ZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAgICBPcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmln
aHQ+IHNlbmRSaWdodDsKLSAgICBDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlRGF0YTsKKyAgICBP
cHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CiAgICAg
aWYgKCFtX2ltYWdlRGVjb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpIHsKLSAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShzZW5kUmlnaHQpLCBXVEZNb3ZlKGNvbG9yU3BhY2VEYXRh
KSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc2VuZFJpZ2h0KSwgV1RGTW92
ZShjb2xvclNwYWNlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvIGZyYW1l
SW1hZ2UgPSBtX2ltYWdlRGVjb2RlcnMuZ2V0KGlkZW50aWZpZXIpLT5jcmVhdGVGcmFtZUltYWdl
QXRJbmRleChpbmRleCk7CiAgICAgaWYgKCFmcmFtZUltYWdlKSB7Ci0gICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUoc2VuZFJpZ2h0KSwgV1RGTW92ZShjb2xvclNwYWNlRGF0YSkpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHNlbmRSaWdodCksIFdURk1vdmUoY29s
b3JTcGFjZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGF1dG8gc3VyZmFj
ZSA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbUltYWdlKGZyYW1lSW1hZ2UuZ2V0KCkpKSB7CiAgICAg
ICAgIHNlbmRSaWdodCA9IHN1cmZhY2UtPmNyZWF0ZVNlbmRSaWdodCgpOwotICAgICAgICBjb2xv
clNwYWNlRGF0YS5jZ0NvbG9yU3BhY2UgPSBzdXJmYWNlLT5jb2xvclNwYWNlKCk7CisgICAgICAg
IGNvbG9yU3BhY2UgPSBzdXJmYWNlLT5jb2xvclNwYWNlKCk7CiAgICAgfQogCi0gICAgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShzZW5kUmlnaHQpLCBXVEZNb3ZlKGNvbG9yU3BhY2VEYXRhKSk7
CisgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShzZW5kUmlnaHQpLCBXVEZNb3ZlKGNvbG9y
U3BhY2UpKTsKIH0KIAogdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Y2xlYXJGcmFt
ZUJ1ZmZlckNhY2hlKEltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgc2l6ZV90IGlu
ZGV4KQpJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRlByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw2IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEhBVkUoQVZBU1NFVFJFQURFUikKIAotI2luY2x1ZGUgIkNvbG9yU3BhY2VEYXRhLmgi
CiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oPgpAQCAtNTcsNyArNTYs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGVsZXRlRGVjb2RlcihXZWJDb3JlOjpJbWFnZURlY29k
ZXJJZGVudGlmaWVyKTsKICAgICB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUoV2ViQ29yZTo6
SW1hZ2VEZWNvZGVySWRlbnRpZmllciwgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUpOwog
ICAgIHZvaWQgc2V0RGF0YShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyLCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmLCBib29sIGFsbERhdGFSZWNlaXZlZCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzaXplX3QgZnJhbWVDb3VudCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwg
Ym9vbCBoYXNUcmFjaywgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6RnJh
bWVJbmZvPj4mJik+JiYpOwotICAgIHZvaWQgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciwgc2l6ZV90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPFdURjo6TWFjaFNlbmRSaWdodD4mJiwgQ29sb3JTcGFjZURhdGEmJik+
JiYpOworICAgIHZvaWQgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoV2ViQ29yZTo6SW1hZ2VEZWNv
ZGVySWRlbnRpZmllciwgc2l6ZV90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPFdURjo6TWFjaFNlbmRSaWdodD4mJiwgT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25D
b2xvclNwYWNlPiYmKT4mJik7CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciwgc2l6ZV90IGluZGV4KTsKIAogICAgIHZvaWQgZW5j
b2RlZERhdGFTdGF0dXNDaGFuZ2VkKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIpOwpJ
bmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFW
RlByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRlByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBA
IG1lc3NhZ2VzIC0+IFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5IE4KICAgICBEZWxldGVEZWNv
ZGVyKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBTZXRF
eHBlY3RlZENvbnRlbnRTaXplKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUpCiAgICAgU2V0RGF0YShXZWJDb3Jl
OjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQQzo6U2hhcmVkQnVmZmVyRGF0
YVJlZmVyZW5jZSBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgLT4gKHNpemVfdCBmcmFtZUNv
dW50LCBXZWJDb3JlOjpJbnRTaXplIHNpemUsIGJvb2wgaGFzVHJhY2ssIE9wdGlvbmFsPFZlY3Rv
cjxXZWJDb3JlOjpJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4+IGZyYW1lSW5mb3MpIFN5bmNocm9u
b3VzCi0gICAgQ3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRl
bnRpZmllciBpZGVudGlmaWVyLCBzaXplX3QgaW5kZXgpIC0+IChPcHRpb25hbDxNYWNoU2VuZFJp
Z2h0PiBzZW5kUmlnaHQsIHN0cnVjdCBXZWJLaXQ6OkNvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2Up
IFN5bmNocm9ub3VzCisgICAgQ3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBzaXplX3QgaW5kZXgpIC0+IChPcHRpb25hbDxN
YWNoU2VuZFJpZ2h0PiBzZW5kUmlnaHQsIE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29s
b3JTcGFjZT4gY29sb3JTcGFjZSkgU3luY2hyb25vdXMKICAgICBDbGVhckZyYW1lQnVmZmVyQ2Fj
aGUoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBzaXplX3QgaW5k
ZXgpCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFw
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsMTAgKzc0LDcgQEAgdm9pZCBTaGFyZWFibGVCaXRt
YXA6OkhhbmRsZTo6Y2xlYXIoKQogCiB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlv
bjo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8
IGlzT3BhcXVlOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGVuY29kZXIgPDwgY29sb3JTcGFj
ZTsKLSNlbmRpZgorICAgIGVuY29kZXIgPDwgY29sb3JTcGFjZSA8PCBpc09wYXF1ZTsKICNpZiBV
U0UoRElSRUNUMkQpCiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGU6OmVuY29kZUhhbmRsZShlbmNv
ZGVyLCBzaGFyZWRSZXNvdXJjZUhhbmRsZSk7CiAKQEAgLTg4LDIxICs4NSwyOCBAQCB2b2lkIFNo
YXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbjo6ZW5jCiAjZW5kaWYKIH0KIAotYm9vbCBTaGFy
ZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb246OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIs
IENvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCitib29sIFNoYXJlYWJsZUJpdG1hcDo6Q29u
ZmlndXJhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgQ29uZmlndXJhdGlvbiYg
cmVzdWx0KQogewotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29uZmlndXJhdGlvbi5pc09wYXF1
ZSkpCisgICAgT3B0aW9uYWw8T3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNl
Pj4gY29sb3JTcGFjZTsKKyAgICBkZWNvZGVyID4+IGNvbG9yU3BhY2U7CisgICAgaWYgKCFjb2xv
clNwYWNlKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAg
aWYgKCFkZWNvZGVyLmRlY29kZShjb25maWd1cmF0aW9uLmNvbG9yU3BhY2UpKQorCisgICAgT3B0
aW9uYWw8Ym9vbD4gaXNPcGFxdWU7CisgICAgZGVjb2RlciA+PiBpc09wYXF1ZTsKKyAgICBpZiAo
IWlzT3BhcXVlKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKKworICAgIHJlc3VsdCA9
IENvbmZpZ3VyYXRpb24geyBXVEZNb3ZlKCpjb2xvclNwYWNlKSwgKmlzT3BhcXVlIH07CisKICNp
ZiBVU0UoRElSRUNUMkQpCiAgICAgYXV0byBwcm9jZXNzU3BlY2lmaWNIYW5kbGUgPSBTaGFyZWRN
ZW1vcnk6OkhhbmRsZTo6ZGVjb2RlSGFuZGxlKGRlY29kZXIpOwogICAgIGlmICghcHJvY2Vzc1Nw
ZWNpZmljSGFuZGxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBjb25maWd1cmF0aW9u
LnNoYXJlZFJlc291cmNlSGFuZGxlID0gcHJvY2Vzc1NwZWNpZmljSGFuZGxlLnZhbHVlKCk7Cisg
ICAgcmVzdWx0LnNoYXJlZFJlc291cmNlSGFuZGxlID0gcHJvY2Vzc1NwZWNpZmljSGFuZGxlLnZh
bHVlKCk7CiAjZW5kaWYKKwogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE1ICsy
NiwxMiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SW50UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1JbWFnZS5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAot
I2lmIFVTRShDRykKLSNpbmNsdWRlICJDb2xvclNwYWNlRGF0YS5oIgotI2VuZGlmCi0KICNpZiBV
U0UoRElSRUNUMkQpCiBpbnRlcmZhY2UgSUQyRDFCaXRtYXA7CiBpbnRlcmZhY2UgSUQyRDFSZW5k
ZXJUYXJnZXQ7CkBAIC01NSwxMCArNTIsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFNo
YXJlYWJsZUJpdG1hcCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWFibGVCaXRt
YXA+IHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgQ29uZmlndXJhdGlvbiB7CisgICAgICAgIE9wdGlv
bmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKICAgICAgICAg
Ym9vbCBpc09wYXF1ZSB7IGZhbHNlIH07Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIENv
bG9yU3BhY2VEYXRhIGNvbG9yU3BhY2U7Ci0jZW5kaWYKICNpZiBVU0UoRElSRUNUMkQpCiAgICAg
ICAgIG11dGFibGUgSEFORExFIHNoYXJlZFJlc291cmNlSGFuZGxlIHsgbnVsbHB0ciB9OwogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDggQEAKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnNDRi5oIgorCiBuYW1l
c3BhY2UgV1RGIHsKIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNSw4ICszMjUsMTEgQEAgT3B0aW9uYWw8V2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUAogICAgIHBhcmFtZXRlcnMuaGFzUmVzb3VyY2VMb2Fk
Q2xpZW50ID0gV1RGTW92ZSgqaGFzUmVzb3VyY2VMb2FkQ2xpZW50KTsKIAogI2lmIFBMQVRGT1JN
KE1BQykKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuY29sb3JTcGFjZSkpCisg
ICAgT3B0aW9uYWw8T3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPj4gY29sb3JTcGFjZTsK
KyAgICBkZWNvZGVyID4+IGNvbG9yU3BhY2U7CisgICAgaWYgKCFjb2xvclNwYWNlKQogICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHBhcmFtZXRlcnMuY29sb3JTcGFjZSA9IFdURk1v
dmUoKmNvbG9yU3BhY2UpOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy51c2VT
eXN0ZW1BcHBlYXJhbmNlKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5j
bHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWN0aXZpdHlT
dGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Rl
c3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9MYXlvdXRNaWxl
c3RvbmUuaD4KQEAgLTQ5LDEwICs1MCw2IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNs
dWRlICJDb2xvclNwYWNlRGF0YS5oIgotI2VuZGlmCi0KICNpZiBFTkFCTEUoQVBQTElDQVRJT05f
TUFOSUZFU1QpCiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbk1hbmlmZXN0Lmg+CiAjZW5k
aWYKQEAgLTE0Niw3ICsxNDMsNyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7
CiAgICAgYm9vbCB1c2VFbGV2YXRlZFVzZXJJbnRlcmZhY2VMZXZlbCB7IGZhbHNlIH07CiAKICNp
ZiBQTEFURk9STShNQUMpCi0gICAgQ29sb3JTcGFjZURhdGEgY29sb3JTcGFjZTsKKyAgICBPcHRp
b25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CiAgICAgYm9v
bCB1c2VTeXN0ZW1BcHBlYXJhbmNlOwogI2VuZGlmCiAjaWYgRU5BQkxFKE1FVEFfVklFV1BPUlQp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCShyZXZpc2lvbiAyNzc5MTkpCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxMiwxOSArMjEyLDE5IEBAIHZvaWQgUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGkKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAg
IGNhc2UgVHlwZTo6SU9TdXJmYWNlOgogICAgICAgICBpZiAoc2hvdWxkVXNlUmVtb3RlUmVuZGVy
aW5nKQotICAgICAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IG1fbGF5ZXItPmNv
bnRleHQoKS0+ZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1hZ2VC
dWZmZXIobV9zaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCwgbV9zY2Fs
ZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBwaXhlbEZvcm1hdCgpKTsK
KyAgICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBtX2xheWVyLT5jb250ZXh0
KCktPmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpLmNyZWF0ZUltYWdlQnVmZmVy
KG1fc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQsIG1fc2NhbGUsIFdl
YkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBwaXhlbEZvcm1hdCgpKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IFdlYkNv
cmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZU1h
cHBlZEJhY2tlbmQ+OjpjcmVhdGUobV9zaXplLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IsIHBpeGVsRm9ybWF0KCksIG51bGxwdHIpOworICAgICAgICAgICAg
bV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8
QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZEJhY2tlbmQ+OjpjcmVhdGUobV9z
aXplLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgcGl4
ZWxGb3JtYXQoKSwgbnVsbHB0cik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVHlwZTo6Qml0
bWFwOgogICAgICAgICBpZiAoc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nKQotICAgICAgICAgICAg
bV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IG1fbGF5ZXItPmNvbnRleHQoKS0+ZW5zdXJlUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1hZ2VCdWZmZXIobV9zaXplLCBXZWJD
b3JlOjpSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIHBpeGVsRm9ybWF0KCkpOworICAgICAgICAgICAgbV9m
cm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IG1fbGF5ZXItPmNvbnRleHQoKS0+ZW5zdXJlUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1hZ2VCdWZmZXIobV9zaXplLCBXZWJDb3Jl
OjpSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgcGl4ZWxGb3JtYXQoKSk7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0ZUlt
YWdlQnVmZmVyPFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQ+OjpjcmVh
dGUobV9zaXplLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Is
IHBpeGVsRm9ybWF0KCksIG51bGxwdHIpOworICAgICAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFn
ZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8VW5hY2NlbGVyYXRlZEltYWdl
QnVmZmVyU2hhcmVhYmxlQmFja2VuZD46OmNyZWF0ZShtX3NpemUsIG1fc2NhbGUsIFdlYkNvcmU6
OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBwaXhlbEZvcm1hdCgpLCBudWxscHRyKTsK
ICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0Vf
QlVGRkVSKQogICAgIGNhc2UgVHlwZTo6Q0dEaXNwbGF5TGlzdDoKLSAgICAgICAgbV9mcm9udEJ1
ZmZlci5pbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8Q0dEaXNwbGF5
TGlzdEltYWdlQnVmZmVyQmFja2VuZD46OmNyZWF0ZShtX3NpemUsIG1fc2NhbGUsIFdlYkNvcmU6
OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0cik7Cisg
ICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0ZUltYWdl
QnVmZmVyPENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ+OjpjcmVhdGUobV9zaXplLCBt
X3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgcGl4ZWxGb3Jt
YXQoKSwgbnVsbHB0cik7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgfQpAQCAtMzk3LDcg
KzM5Nyw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmFwcGx5QmFja2kKICAgICAg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6SU9TdXJmYWNlKTsKICAgICAgICAgICAgIHN3
aXRjaCAoY29udGVudHNUeXBlKSB7CiAgICAgICAgICAgICBjYXNlIExheWVyQ29udGVudHNUeXBl
OjpJT1N1cmZhY2U6IHsKLSAgICAgICAgICAgICAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJ
T1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShtYWNoU2VuZFJpZ2h0KSwgV2Vi
Q29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgICAgICAgICAgICAgYXV0byBzdXJmYWNl
ID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUobWFjaFNl
bmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICAg
ICAgICAgICAgICBsYXllci5jb250ZW50cyA9IHN1cmZhY2UgPyBzdXJmYWNlLT5hc0xheWVyQ29u
dGVudHMoKSA6IG5pbDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1h
cENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKICAgICAKIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZShjb25zdCBT
aGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiB7Ci0gICAgcmV0
dXJuIGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZS5jZ0NvbG9yU3BhY2UuZ2V0KCkgPzogc1JHQkNv
bG9yU3BhY2VSZWYoKTsKKyAgICByZXR1cm4gY29uZmlndXJhdGlvbi5jb2xvclNwYWNlID8gY29u
ZmlndXJhdGlvbi5jb2xvclNwYWNlLT5wbGF0Zm9ybUNvbG9yU3BhY2UoKSA6IFdlYkNvcmU6OnNS
R0JDb2xvclNwYWNlUmVmKCk7CiB9CiAKIHN0YXRpYyBib29sIHdhbnRzRXh0ZW5kZWRSYW5nZShj
b25zdCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEuaAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvbG9yU3BhY2VEYXRhLmgJKG5vbmV4
aXN0ZW50KQpAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDb2xvclNwYWNl
RGF0YV9oCi0jZGVmaW5lIENvbG9yU3BhY2VEYXRhX2gKLQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KLQotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEZWNvZGVyOwotY2xhc3MgRW5jb2RlcjsK
LX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBDb2xvclNwYWNlRGF0YSB7Ci0gICAg
dm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBDb2xvclNwYWNlRGF0YSYpOwotCi0g
ICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY2dDb2xvclNwYWNlOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBDb2xvclNwYWNlRGF0YV9oCgpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEuaApfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL21h
Yy9Db2xvclNwYWNlRGF0YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvQ29sb3JTcGFjZURhdGEubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9Db2xvclNwYWNlRGF0YS5tbQkobm9uZXhpc3RlbnQpCkBAIC0xLDYwICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkNvbG9yU3BhY2VE
YXRhLmgiCi0KLSNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKLSNpbXBvcnQgIkRlY29kZXIu
aCIKLSNpbXBvcnQgIkVuY29kZXIuaCIKLSNpbXBvcnQgPHd0Zi9FbnVtVHJhaXRzLmg+Ci0KLW5h
bWVzcGFjZSBXZWJLaXQgewotCi12b2lkIENvbG9yU3BhY2VEYXRhOjplbmNvZGUoSVBDOjpFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Ym9vbD4o
Y2dDb2xvclNwYWNlKTsKLSAgICBpZiAoY2dDb2xvclNwYWNlKQotICAgICAgICBlbmNvZGVyIDw8
IGNnQ29sb3JTcGFjZTsKLX0KLQotYm9vbCBDb2xvclNwYWNlRGF0YTo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlciwgQ29sb3JTcGFjZURhdGEmIGNvbG9yU3BhY2VEYXRhKQotewotICAgIGJv
b2wgaGFzQ0dDb2xvclNwYWNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzQ0dDb2xvclNw
YWNlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFoYXNDR0NvbG9yU3BhY2Up
Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4g
Y29sb3JTcGFjZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbG9yU3BhY2UpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgY29sb3JTcGFjZURhdGEuY2dDb2xvclNwYWNlID0g
V1RGTW92ZShjb2xvclNwYWNlKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTkzLDYgKzkzLDcgQEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBDb2xvcjsKIGNsYXNzIEN1cnNvcjsKK2NsYXNzIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTsKIGNsYXNzIEZsb2F0UXVhZDsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNz
IFJlZ2lvbjsKQEAgLTE4OCwxMCArMTg5LDYgQEAgY2xhc3MgV2ViRnVsbFNjcmVlbk1hbmFnZXJQ
cm94eUNsaWVudDsKIGNsYXNzIEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJl
cXVlc3Q7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENPQ09BKQotc3RydWN0IENvbG9yU3BhY2VE
YXRhOwotI2VuZGlmCi0KICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKIHVz
aW5nIExheWVySG9zdGluZ0NvbnRleHRJRCA9IHVpbnQzMl90OwogI2VuZGlmCkBAIC00MjYsNyAr
NDIzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBDR1JlY3QgYm91bmRzT2ZMYXllckluTGF5
ZXJCYWNrZWRXaW5kb3dDb29yZGluYXRlcyhDQUxheWVyICopIGNvbnN0ID0gMDsKIAotICAgIHZp
cnR1YWwgQ29sb3JTcGFjZURhdGEgY29sb3JTcGFjZSgpID0gMDsKKyAgICB2aXJ0dWFsIFdlYkNv
cmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKCkgPSAwOwogCiAgICAgdmlydHVh
bCB2b2lkIHNob3dQbGF0Zm9ybUNvbnRleHRNZW51KE5TTWVudSAqLCBXZWJDb3JlOjpJbnRQb2lu
dCkgPSAwOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2
aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE5OCw2ICsxOTgsNyBAQCBuYW1lc3BhY2UgQVBJIHsKIGNsYXNz
IEF0dGFjaG1lbnQ7CiBjbGFzcyBDb250ZW50V29ybGQ7CiBjbGFzcyBDb250ZXh0TWVudUNsaWVu
dDsKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIEVycm9yOwogY2xhc3MgRmlu
ZENsaWVudDsKIGNsYXNzIEZpbmRNYXRjaGVzQ2xpZW50OwpAQCAtMzc3LDcgKzM3OCw2IEBAIGNs
YXNzIFdlYldoZWVsRXZlbnRDb2FsZXNjZXI7CiBjbGFzcyBXZWJzaXRlRGF0YVN0b3JlOwogCiBz
dHJ1Y3QgQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGE7Ci1zdHJ1Y3QgQ29sb3JTcGFjZURh
dGE7CiBzdHJ1Y3QgRGF0YURldGVjdGlvblJlc3VsdDsKIHN0cnVjdCBEb2N1bWVudEVkaXRpbmdD
b250ZXh0Owogc3RydWN0IERvY3VtZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0OwpAQCAtMTEzMiw3
ICsxMTMyLDcgQEAgcHVibGljOgogICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAgICAg
dm9pZCBhc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAKLSAgICBDb2xv
clNwYWNlRGF0YSBjb2xvclNwYWNlKCk7CisgICAgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNw
YWNlIGNvbG9yU3BhY2UoKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lP
Uy5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lv
cy9XS1dlYlZpZXdJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwMTQsNyArMTAxNCw3IEBAIC0g
KFJlZlB0cjxXZWJLaXQ6OlZpZXdTbmFwc2hvdD4pX3Rha2VWaWUKICNlbHNlCiAgICAgV2ViQ29y
ZTo6SU9TdXJmYWNlOjpGb3JtYXQgc25hcHNob3RGb3JtYXQgPSBXZWJDb3JlOjpJT1N1cmZhY2U6
OkZvcm1hdDo6QkdSQTsKICNlbmRpZgotICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3Vy
ZmFjZTo6Y3JlYXRlKFdlYkNvcmU6OmV4cGFuZGVkSW50U2l6ZShzbmFwc2hvdFNpemUpLCBXZWJD
b3JlOjpzUkdCQ29sb3JTcGFjZVJlZigpLCBzbmFwc2hvdEZvcm1hdCk7CisgICAgYXV0byBzdXJm
YWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGUoV2ViQ29yZTo6ZXhwYW5kZWRJbnRTaXpl
KHNuYXBzaG90U2l6ZSksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBz
bmFwc2hvdEZvcm1hdCk7CiAgICAgaWYgKCFzdXJmYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICBDQVJlbmRlclNlcnZlclJlbmRlckxheWVyV2l0aFRyYW5zZm9ybShNQUNIX1BPUlRf
TlVMTCwgc2VsZi5sYXllci5jb250ZXh0LmNvbnRleHRJZCwgcmVpbnRlcnByZXRfY2FzdDx1aW50
NjRfdD4oc2VsZi5sYXllciksIHN1cmZhY2UtPnN1cmZhY2UoKSwgMCwgMCwgJnRyYW5zZm9ybSk7
CkBAIC0zMDc5LDcgKzMwNzksNyBAQCAtICh2b2lkKV9zbmFwc2hvdFJlY3Q6KENHUmVjdClyZWN0
SW5WaWV3CiAgICAgTlNTdHJpbmcgKmRpc3BsYXlOYW1lID0gc2VsZi53aW5kb3cuc2NyZWVuLmRp
c3BsYXlDb25maWd1cmF0aW9uLm5hbWU7CiAgICAgaWYgKGRpc3BsYXlOYW1lICYmICFzZWxmLndp
bmRvdy5oaWRkZW4pIHsKICAgICAgICAgVHJhY2VTY29wZSBzbmFwc2hvdFNjb3BlKFJlbmRlclNl
cnZlclNuYXBzaG90U3RhcnQsIFJlbmRlclNlcnZlclNuYXBzaG90RW5kKTsKLSAgICAgICAgYXV0
byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGUoV2ViQ29yZTo6ZXhwYW5kZWRJ
bnRTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZShpbWFnZVNpemUpKSwgV2ViQ29yZTo6c1JHQkNvbG9y
U3BhY2VSZWYoKSk7CisgICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6
Y3JlYXRlKFdlYkNvcmU6OmV4cGFuZGVkSW50U2l6ZShXZWJDb3JlOjpGbG9hdFNpemUoaW1hZ2VT
aXplKSksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICAgICAg
aWYgKCFzdXJmYWNlKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsK
ICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtOTQsNiArOTQsNyBA
QCBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgRGVzdGluYXRpb25Db2xvclNwYWNlOwogY2xhc3MgSW50UG9pbnQ7CiBzdHJ1Y3QgU2hhcmVE
YXRhV2l0aFBhcnNlZFVSTDsKIApAQCAtMTY4LDcgKzE2OSw2IEBAIGNsYXNzIFdlYkZyYW1lUHJv
eHk7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIGNsYXNzIFdl
YlByb2Nlc3NQcm94eTsKLXN0cnVjdCBDb2xvclNwYWNlRGF0YTsKIHN0cnVjdCBXZWJIaXRUZXN0
UmVzdWx0RGF0YTsKIAogZW51bSBjbGFzcyBDb250aW51ZVVuc2FmZUxvYWQgOiBib29sOwpAQCAt
MzEzLDcgKzMxMyw3IEBAIHB1YmxpYzoKIAogICAgIE5TVmlldyAqaGl0VGVzdChDR1BvaW50KTsK
IAotICAgIENvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2UoKTsKKyAgICBXZWJDb3JlOjpEZXN0aW5h
dGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpOwogCiAgICAgdm9pZCBzZXRVbmRlcmxheUNvbG9y
KE5TQ29sb3IgKik7CiAgICAgTlNDb2xvciAqdW5kZXJsYXlDb2xvcigpIGNvbnN0OwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHJldmlzaW9u
IDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw2IEBACiAjaW1wb3J0ICJBUElMZWdhY3lDb250
ZXh0SGlzdG9yeUNsaWVudC5oIgogI2ltcG9ydCAiQVBJTmF2aWdhdGlvbi5oIgogI2ltcG9ydCAi
QXBwS2l0U1BJLmgiCi0jaW1wb3J0ICJDb2xvclNwYWNlRGF0YS5oIgogI2ltcG9ydCAiQ29yZVRl
eHRIZWxwZXJzLmgiCiAjaW1wb3J0ICJGb250SW5mby5oIgogI2ltcG9ydCAiRnVsbHNjcmVlbkNs
aWVudC5oIgpAQCAtOTAsNiArODksNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9Db2xvclNlcmlhbGl6YXRpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUv
Q29tcG9zaXRpb25IaWdobGlnaHQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGVzdGluYXRpb25Db2xv
clNwYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RpY3Rpb25hcnlMb29rdXAuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRHJhZ0RhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0l0ZW0uaD4KQEAgLTI1
MDAsNyArMjUwMCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnBvc3RGYWtlTW91c2VNb3ZlZEV2ZW4K
ICAgICBtX3BhZ2UtPmhhbmRsZU1vdXNlRXZlbnQod2ViRXZlbnQpOwogfQogCi1Db2xvclNwYWNl
RGF0YSBXZWJWaWV3SW1wbDo6Y29sb3JTcGFjZSgpCitXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgV2ViVmlld0ltcGw6OmNvbG9yU3BhY2UoKQogewogICAgIGlmICghbV9jb2xvclNwYWNl
KSB7CiAgICAgICAgIGlmIChtX3RhcmdldFdpbmRvd0Zvck1vdmVQcmVwYXJhdGlvbikKQEAgLTI1
MTEsMTAgKzI1MTEsNyBAQCBDb2xvclNwYWNlRGF0YSBXZWJWaWV3SW1wbDo6Y29sb3JTcGFjZSgp
CiAgICAgICAgICAgICBtX2NvbG9yU3BhY2UgPSBbTlNTY3JlZW4gbWFpblNjcmVlbl0uY29sb3JT
cGFjZTsKICAgICB9CiAKLSAgICBDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlRGF0YTsKLSAgICBj
b2xvclNwYWNlRGF0YS5jZ0NvbG9yU3BhY2UgPSBbbV9jb2xvclNwYWNlIENHQ29sb3JTcGFjZV07
Ci0KLSAgICByZXR1cm4gY29sb3JTcGFjZURhdGE7CisgICAgcmV0dXJuIFdlYkNvcmU6OkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZSB7IFttX2NvbG9yU3BhY2UgQ0dDb2xvclNwYWNlXSB9OwogfQogCiB2
b2lkIFdlYlZpZXdJbXBsOjpzZXRVbmRlcmxheUNvbG9yKE5TQ29sb3IgKnVuZGVybGF5Q29sb3Ip
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlSG9zdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhv
c3QubW0JKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbXBvcnQgIldlYlBhZ2VQ
cm94eS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0IDxRdWFydHpDb3Jl
L1F1YXJ0ekNvcmUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dENHLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0lPU3VyZmFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUxheWVyLmg+CkBAIC0zMTcs
NyArMzE4LDcgQEAgc3RhdGljIHZvaWQgcmVjdXJzaXZlbHlNYXBJT1N1cmZhY2VCYWNraQogewog
ICAgIGlmIChsYXllci5jb250ZW50cyAmJiBDRkdldFR5cGVJRCgoX19icmlkZ2UgQ0ZUeXBlUmVm
KWxheWVyLmNvbnRlbnRzKSA9PSBDQU1hY2hQb3J0R2V0VHlwZUlEKCkpIHsKICAgICAgICAgTWFj
aFNlbmRSaWdodCBwb3J0ID0gTWFjaFNlbmRSaWdodDo6Y3JlYXRlKENBTWFjaFBvcnRHZXRQb3J0
KChfX2JyaWRnZSBDQU1hY2hQb3J0UmVmKWxheWVyLmNvbnRlbnRzKSk7Ci0gICAgICAgIGF1dG8g
c3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3Zl
KHBvcnQpLCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICAgICAgYXV0byBzdXJmYWNlID0gV2Vi
Q29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUocG9ydCksIFdlYkNv
cmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICAgICAgbGF5ZXIuY29udGVu
dHMgPSBzdXJmYWNlID8gc3VyZmFjZS0+YXNMYXllckNvbnRlbnRzKCkgOiBuaWw7CiAgICAgfQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxN
YWMuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIGlzVmlld0luV2luZG93KCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1Zpc3Vh
bGx5SWRsZSgpIG92ZXJyaWRlOwogICAgIExheWVySG9zdGluZ01vZGUgdmlld0xheWVySG9zdGlu
Z01vZGUoKSBvdmVycmlkZTsKLSAgICBDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlKCkgb3ZlcnJp
ZGU7CisgICAgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UoKSBvdmVy
cmlkZTsKICAgICB2b2lkIHNldFJlbW90ZUxheWVyVHJlZVJvb3ROb2RlKFJlbW90ZUxheWVyVHJl
ZU5vZGUqKSBvdmVycmlkZTsKICAgICBDQUxheWVyICphY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9v
dExheWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMzAsNyArMzAsNiBAQAogCiAjaW1wb3J0ICJBUElIaXRUZXN0UmVzdWx0LmgiCiAj
aW1wb3J0ICJBcHBLaXRTUEkuaCIKLSNpbXBvcnQgIkNvbG9yU3BhY2VEYXRhLmgiCiAjaW1wb3J0
ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJEb3dubG9hZFByb3h5LmgiCiAjaW1wb3J0ICJE
cmF3aW5nQXJlYVByb3h5LmgiCkBAIC02Niw2ICs2NSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0Jp
dG1hcEltYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yTWFjLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0N1cnNvci5oPgorI2ltcG9ydCA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvRGljdGlvbmFyeUxvb2t1cC5oPgogI2ltcG9ydCA8V2ViQ29yZS9E
cmFnSXRlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KQEAgLTI0NCw3ICsyNDQs
NyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjp2aWV3V2lsbE1vdmVUb0Fub3RoCiAgICAgY2xlYXJB
bGxFZGl0Q29tbWFuZHMoKTsKIH0KIAotQ29sb3JTcGFjZURhdGEgUGFnZUNsaWVudEltcGw6OmNv
bG9yU3BhY2UoKQorV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIFBhZ2VDbGllbnRJbXBs
Ojpjb2xvclNwYWNlKCkKIHsKICAgICByZXR1cm4gbV9pbXBsLT5jb2xvclNwYWNlKCk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWFQcm94eS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhUHJveHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogCi0jaW1wb3J0ICJDb2xvclNwYWNlRGF0YS5oIgogI2ltcG9ydCAi
RHJhd2luZ0FyZWFNZXNzYWdlcy5oIgogI2ltcG9ydCAiRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2Vz
LmgiCiAjaW1wb3J0ICJMYXllclRyZWVDb250ZXh0LmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0JKHJldmlzaW9uIDI3NzkxOSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBQTEFURk9STShNQUMpCiAKICNpbXBvcnQgIkFQ
SVVJQ2xpZW50LmgiCi0jaW1wb3J0ICJDb2xvclNwYWNlRGF0YS5oIgogI2ltcG9ydCAiQ29ubmVj
dGlvbi5oIgogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiRWRpdG9yU3RhdGUu
aCIKQEAgLTUyLDYgKzUxLDcgQEAKICNpbXBvcnQgIldlYlByZWZlcmVuY2VzS2V5cy5oIgogI2lt
cG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0IDxXZWJDb3JlL0F0dHJpYnV0ZWRTdHJp
bmcuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0RpY3Rpb25hcnlMb29rdXAuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0l0ZW0u
aD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgpAQCAtMzQ0LDcgKzM0NCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojphc3Npc3RpdmVUZWNobm9sb2d5TWEKICAgICBwYWdlQ2xpZW50
KCkuYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlcigpOwogfQogCi1Db2xvclNw
YWNlRGF0YSBXZWJQYWdlUHJveHk6OmNvbG9yU3BhY2UoKQorV2ViQ29yZTo6RGVzdGluYXRpb25D
b2xvclNwYWNlIFdlYlBhZ2VQcm94eTo6Y29sb3JTcGFjZSgpCiB7CiAgICAgcmV0dXJuIHBhZ2VD
bGllbnQoKS5jb2xvclNwYWNlKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTI2MzQsOCArMjYzNCw2IEBACiAJCTFBMjU2RTM2MThBMUE3ODgwMDZGQjkyMiAvKiBXS05hdmln
YXRpb25BY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tOYXZpZ2F0
aW9uQWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMjU2RTM5MThBMUE3
REYwMDZGQjkyMiAvKiBXS05hdmlnYXRpb25BY3Rpb25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXS05hdmlnYXRpb25BY3Rpb25JbnRlcm5hbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQTI4QjhDQjFDODBFRDU5MDA2RkQ3NDMgLyogV2Vic2l0
ZURhdGFGZXRjaE9wdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJz
aXRlRGF0YUZldGNoT3B0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBMkE0
QUZEMTU4NjkzOTIwMDkwQzlFOSAvKiBDb2xvclNwYWNlRGF0YS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvbG9yU3BhY2VEYXRhLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQkxQTJBNEFGRTE1ODY5MzkyMDA5MEM5RTkgLyogQ29sb3JTcGFjZURh
dGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JTcGFjZURhdGEuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyQkI2Q0MxNDExN0E1RjAwMEYzNUQ0IC8q
IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQTJCQjZDRTE0MTE3QjREMDAwRjM1RDQgLyogUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRo
ID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VS
ZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTFBMkJC
NkNGMTQxMTdCNEQwMDBGMzVENCAvKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpA
QCAtMTA0MzAsOCArMTA0MjgsNiBAQAogCQkJCTlGNTRGODhFMTY0ODhFODcwMDdERjgxQSAvKiBB
dXhpbGlhcnlQcm9jZXNzTWFjLm1tICovLAogCQkJCUNFMTFBRDUxMUNCQzQ4MkYwMDY4MUVFNSAv
KiBDb2RlU2lnbmluZy5oICovLAogCQkJCUNFMTFBRDRGMUNCQzQ3RjgwMDY4MUVFNSAvKiBDb2Rl
U2lnbmluZy5tbSAqLywKLQkJCQkxQTJBNEFGRTE1ODY5MzkyMDA5MEM5RTkgLyogQ29sb3JTcGFj
ZURhdGEuaCAqLywKLQkJCQkxQTJBNEFGRDE1ODY5MzkyMDA5MEM5RTkgLyogQ29sb3JTcGFjZURh
dGEubW0gKi8sCiAJCQkJMUFDNzVBMUMxQjMzNjk1RTAwNTY3NDVCIC8qIEhhbmdEZXRlY3Rpb25E
aXNhYmxlck1hYy5tbSAqLywKIAkJCQkyRDUwMzY1RDFCQ0M3OTNGMDBFMjBCQjMgLyogTmF0aXZl
V2ViR2VzdHVyZUV2ZW50TWFjLm1tICovLAogCQkJCUMwMkJGRjFEMTI1MTUwMkUwMDlDQ0JFQSAv
KiBOYXRpdmVXZWJLZXlib2FyZEV2ZW50TWFjLm1tICovLApJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMSArNDUsNyBAQCBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoSW1hZ2VCdWZmZXJTCiAKIFNoYXJlYWJsZUJpdG1h
cDo6Q29uZmlndXJhdGlvbiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNvbmZp
Z3VyYXRpb24oY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKLSAgICBTaGFyZWFibGVC
aXRtYXA6OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKLSNpZiBQTEFURk9STShDT0NPQSkK
LSAgICBjb25maWd1cmF0aW9uLmNvbG9yU3BhY2UgPSB7IGNhY2hlZENHQ29sb3JTcGFjZShwYXJh
bWV0ZXJzLmNvbG9yU3BhY2UpIH07Ci0jZW5kaWYKLSAgICByZXR1cm4gY29uZmlndXJhdGlvbjsK
KyAgICByZXR1cm4geyBwYXJhbWV0ZXJzLmNvbG9yU3BhY2UgfTsKIH0KIAogSW50U2l6ZSBJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShj
b25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHkuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eTo6cHJlcGEKICAgICAgICAgbWFya0NvbnRleHRMb3N0KCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgYXV0byBkaXNwbGF5QnVmZmVyID0gSU9TdXJmYWNlOjpjcmVhdGVG
cm9tU2VuZFJpZ2h0KFdURk1vdmUoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCksIHNSR0JDb2xvclNw
YWNlUmVmKCkpOworICAgIGF1dG8gZGlzcGxheUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3JlYXRlRnJv
bVNlbmRSaWdodChXVEZNb3ZlKGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpLCBXZWJDb3JlOjpEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgaWYgKGRpc3BsYXlCdWZmZXIpIHsKICAg
ICAgICAgYXV0byYgc2MgPSBwbGF0Zm9ybVN3YXBDaGFpbigpOwogICAgICAgICBzYy5yZWN5Y2xl
QnVmZmVyKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUltYWdlQnVmZmVyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eSA6IHB1YmxpYyBXZQogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlz
dEltYWdlQnVmZmVyOjpyZXNvbHV0aW9uU2NhbGU7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
UHRyPFJlbW90ZUltYWdlQnVmZmVyUHJveHk+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNp
emUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xv
clNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAg
ICBzdGF0aWMgUmVmUHRyPFJlbW90ZUltYWdlQnVmZmVyUHJveHk+IGNyZWF0ZShjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgV2ViQ29y
ZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1h
dCBwaXhlbEZvcm1hdCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkpCiAgICAgewogICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMgeyBzaXplLCByZXNvbHV0aW9uU2NhbGUs
IGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0IH07CiAgICAgICAgIGlmIChCYWNrZW5kVHlwZTo6Y2Fs
Y3VsYXRlU2FmZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMpLmlzRW1wdHkoKSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGUKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpDcmVhdGVJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5sb2dpY2Fs
U2l6ZSgpLCBpbWFnZUJ1ZmZlci5yZW5kZXJpbmdNb2RlKCksIGltYWdlQnVmZmVyLnJlc29sdXRp
b25TY2FsZSgpLCBpbWFnZUJ1ZmZlci5jb2xvclNwYWNlKCksIGltYWdlQnVmZmVyLnBpeGVsRm9y
bWF0KCksIGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKSwgcmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIoKSwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VF
dmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVs
Rm9ybWF0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpCiB7CiAgICAgUmVm
UHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eS5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MywxNSArNDMsMTkgQEAKICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiBjbGFzcyBE
aXNwbGF5TGlzdDsKIGNsYXNzIEl0ZW07CiB9CisKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTsKIGNsYXNzIEZsb2F0U2l6ZTsKIGNsYXNzIFBpeGVsQnVmZmVyOworCiBlbnVtIGNsYXNzIEFs
cGhhUHJlbXVsdGlwbGljYXRpb24gOiB1aW50OF90OwotZW51bSBjbGFzcyBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgOiB1aW50OF90OwogZW51bSBjbGFzcyBSZW5kZXJpbmdNb2RlIDogYm9vbDsKKwog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTkyLDcgKzk2LDcgQEAgcHVibGljOgogICAgIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3Zl
cnJpZGU7CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSBzZW50LgotICAgIFJlZlB0cjxXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3Jl
OjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0KTsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiwgV2ViQ29yZTo6UGl4ZWxG
b3JtYXQpOwogICAgIFN0cmluZyBnZXREYXRhVVJMRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBXZWJDb3JlOjpQcmVzZXJ2ZVJl
c29sdXRpb24sIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGdldERhdGFGb3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVz
aERpc3BsYXlMaXN0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5
TGlzdCYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVh
YmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBl
ZElPU3VyZmFjZUJhY2tlbmQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVk
SU9TdXJmYWNlQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcAogICAgIGlmIChiYWNrZW5kU2l6
ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBzdXJmYWNl
ID0gSU9TdXJmYWNlOjpjcmVhdGUoYmFja2VuZFNpemUsIGJhY2tlbmRTaXplLCBjYWNoZWRDR0Nv
bG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSwgSU9TdXJmYWNlOjpmb3JtYXRGb3JQaXhl
bEZvcm1hdChwYXJhbWV0ZXJzLnBpeGVsRm9ybWF0KSk7CisgICAgYXV0byBzdXJmYWNlID0gSU9T
dXJmYWNlOjpjcmVhdGUoYmFja2VuZFNpemUsIGJhY2tlbmRTaXplLCBwYXJhbWV0ZXJzLmNvbG9y
U3BhY2UsIElPU3VyZmFjZTo6Zm9ybWF0Rm9yUGl4ZWxGb3JtYXQocGFyYW1ldGVycy5waXhlbEZv
cm1hdCkpOwogICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAg
LTY1LDcgKzY1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcAog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBJT1N1
cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShXVEY6OmdldDxNYWNoU2VuZFJpZ2h0
PihoYW5kbGUpKSwgY2FjaGVkQ0dDb2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JTcGFjZSkpOwor
ICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3Zl
KFdURjo6Z2V0PE1hY2hTZW5kUmlnaHQ+KGhhbmRsZSkpLCBwYXJhbWV0ZXJzLmNvbG9yU3BhY2Up
OwogICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRi5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjgsMTMgKzI4LDEyIEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEhB
VkUoQVZBU1NFVFJFQURFUikKIAotI2luY2x1ZGUgIkNvbG9yU3BhY2VEYXRhLmgiCiAjaW5jbHVk
ZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJSZW1vdGVJbWFnZURlY29kZXJB
VkZQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FWQXNzZXRNSU1F
VHlwZUNhY2hlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlQ0cuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSU9T
dXJmYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZVR5cGVzLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CkBAIC0xNjgsMTQgKzE2NywxNCBAQCBQbGF0Zm9ybUlt
YWdlUHRyIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6CiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgT3B0aW9uYWw8TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0OwotICAgICAgICBDb2xvclNw
YWNlRGF0YSBjb2xvclNwYWNlOworICAgICAgICBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U+IGNvbG9yU3BhY2U7CiAgICAgICAgIGlmICghbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29u
bmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6
Q3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgobV9pZGVudGlmaWVyLCBpbmRleCksIE1lc3NhZ2VzOjpS
ZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Q3JlYXRlRnJhbWVJbWFnZUF0SW5kZXg6OlJlcGx5
KHNlbmRSaWdodCwgY29sb3JTcGFjZSksIDApKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIGlmICghc2VuZFJpZ2h0KQorICAgICAgICBpZiAoIXNlbmRSaWdodCB8fCAhY29sb3JTcGFj
ZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3Jl
OjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZSgqc2VuZFJpZ2h0KSwgY29s
b3JTcGFjZS5jZ0NvbG9yU3BhY2UuZ2V0KCkpOworICAgICAgICBhdXRvIHN1cmZhY2UgPSBXZWJD
b3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZSgqc2VuZFJpZ2h0KSwg
V1RGTW92ZSgqY29sb3JTcGFjZSkpOwogICAgICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgICAg
ICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29j
b2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9jb2NvYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGVDb2NvYS5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9jb2NvYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVDb2NvYS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IE1lZGlhUGxheWVy
UHJpdmF0ZVJlCiAgICAgaWYgKCFzZW5kUmlnaHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJp
Z2h0KFdURk1vdmUoKnNlbmRSaWdodCksIHNSR0JDb2xvclNwYWNlUmVmKCkpOworICAgIGF1dG8g
c3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3Zl
KCpzZW5kUmlnaHQpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAg
ICAgaWYgKCFzdXJmYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtOTEsNyArOTEs
NyBAQCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gTWVkaWFQbGF5ZXJQCiAgICAgaWYgKCFz
ZW5kUmlnaHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBzdXJmYWNlID0g
V2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoKnNlbmRSaWdo
dCksIG51bGxwdHIpOworICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3Jl
YXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKCpzZW5kUmlnaHQpLCBXZWJDb3JlOjpEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgaWYgKCFzdXJmYWNlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02NDYs
NyArNjQ2LDcgQEAgaW5saW5lIFBERlBsdWdpbjo6UERGUGx1Z2luKFdlYkZyYW1lJiBmcgogICAg
IFttX2NvbnRhaW5lckxheWVyIGFkZFN1YmxheWVyOm1fc2Nyb2xsQ29ybmVyTGF5ZXIuZ2V0KCld
OwogICAgIGlmIChbbV9wZGZMYXllckNvbnRyb2xsZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihzZXREZXZpY2VDb2xvclNwYWNlOildKSB7CiAgICAgICAgIGF1dG8gdmlldyA9IGZyYW1l
LmNvcmVGcmFtZSgpLT52aWV3KCk7Ci0gICAgICAgIFttX3BkZkxheWVyQ29udHJvbGxlciBzZXRE
ZXZpY2VDb2xvclNwYWNlOnNjcmVlbkNvbG9yU3BhY2UodmlldyldOworICAgICAgICBbbV9wZGZM
YXllckNvbnRyb2xsZXIgc2V0RGV2aWNlQ29sb3JTcGFjZTpzY3JlZW5Db2xvclNwYWNlKHZpZXcp
LnBsYXRmb3JtQ29sb3JTcGFjZSgpXTsKICAgICB9CiAKICNpZiBIQVZFKElOQ1JFTUVOVEFMX1BE
Rl9BUElTKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1No
YXJlYWJsZUJpdG1hcFV0aWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5jcHAJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NywxMiAr
NTcsNyBAQCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjcmVhdGVTaGFyZWFibGVCCiAgICAgfQog
CiAgICAgLy8gRklYTUU6IE9ubHkgc2VsZWN0IEV4dGVuZGVkQ29sb3Igb24gaW1hZ2VzIGtub3du
IHRvIG5lZWQgd2lkZSBnYW11dC4KLSAgICBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24g
Yml0bWFwQ29uZmlndXJhdGlvbjsKLSNpZiBVU0UoQ0cpCi0gICAgYml0bWFwQ29uZmlndXJhdGlv
bi5jb2xvclNwYWNlLmNnQ29sb3JTcGFjZSA9IHNjcmVlbkNvbG9yU3BhY2UocmVuZGVySW1hZ2Uu
ZnJhbWUoKS5tYWluRnJhbWUoKS52aWV3KCkpOwotI2VuZGlmCi0KLSAgICBhdXRvIHNoYXJlZEJp
dG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoYml0bWFwU2l6
ZSksIGJpdG1hcENvbmZpZ3VyYXRpb24pOworICAgIGF1dG8gc2hhcmVkQml0bWFwID0gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShiaXRtYXBTaXplKSwgeyBzY3JlZW5D
b2xvclNwYWNlKHJlbmRlckltYWdlLmZyYW1lKCkubWFpbkZyYW1lKCkudmlldygpKSB9KTsKICAg
ICBpZiAoIXNoYXJlZEJpdG1hcCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTI3LDcgKzkyNyw3IEBAIFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3Rv
cnkqIFcKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAotUmVmUHRyPEltYWdlQnVmZmVyPiBX
ZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwg
UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFBp
eGVsRm9ybWF0IHBpeGVsRm9ybWF0KSBjb25zdAorUmVmUHRyPEltYWdlQnVmZmVyPiBXZWJDaHJv
bWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVy
aW5nTW9kZSByZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBQ
aXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29uc3QKIHsKICAgICBpZiAoIVdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihwdXJwb3NlKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0NCw3ICsyNDQsNyBAQCBwcml2YXRlOgogICAgIFdl
YkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkqIGRpc3BsYXlSZWZyZXNoTW9uaXRv
ckZhY3RvcnkoKSBjb25zdCBmaW5hbDsKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLSAgICBS
ZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIFdlYkNvcmU6OlJlbmRlcmlu
Z1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xv
clNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPFdl
YkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3Nl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JT
cGFjZSYsIFdlYkNvcmU6OlBpeGVsRm9ybWF0KSBjb25zdCBmaW5hbDsKICNpZiBFTkFCTEUoV0VC
R0wpCiAgICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGlj
c0NvbnRleHRHTChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBX
ZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCBob3N0V2luZG93RGlzcGxheUlEKSBjb25zdCBmaW5h
bDsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9X
ZWJEcmFnQ2xpZW50TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02OCw5ICs2OCw3IEBAIHVzaW5n
IERyYWdJbWFnZSA9IENHSW1hZ2VSZWY7CiAKIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBjb252ZXJ0RHJhZ0ltYWdlVG9CaXRtYXAoRHJhZ0ltYWdlIGltYWdlLCBjb25zdCBJbnRTaXpl
JiBzaXplLCBGcmFtZSYgZnJhbWUpCiB7Ci0gICAgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0
aW9uIGJpdG1hcENvbmZpZ3VyYXRpb247Ci0gICAgYml0bWFwQ29uZmlndXJhdGlvbi5jb2xvclNw
YWNlLmNnQ29sb3JTcGFjZSA9IHNjcmVlbkNvbG9yU3BhY2UoZnJhbWUubWFpbkZyYW1lKCkudmll
dygpKTsKLSAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxl
KHNpemUsIGJpdG1hcENvbmZpZ3VyYXRpb24pOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxl
Qml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc2l6ZSwgeyBzY3JlZW5Db2xvclNwYWNlKGZyYW1lLm1h
aW5GcmFtZSgpLnZpZXcoKSkgfSk7CiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5n
QXJlYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAg
Y2xhc3MgRGVjb2RlcjsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRGVzdGluYXRp
b25Db2xvclNwYWNlOwogY2xhc3MgRGlzcGxheVJlZnJlc2hNb25pdG9yOwogY2xhc3MgRnJhbWU7
CiBjbGFzcyBGcmFtZVZpZXc7CkBAIC02MCw3ICs2MSw2IEBAIHN0cnVjdCBWaWV3cG9ydEF0dHJp
YnV0ZXM7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdHJ1Y3QgQ29sb3JTcGFjZURhdGE7CiBj
bGFzcyBMYXllclRyZWVIb3N0Owogc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CiBz
dHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9yZTsKQEAgLTE4MCw3ICsxODAsNyBAQCBwcml2YXRlOgog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIFVzZWQgYnkgVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWEuCiAgICAgdmlydHVhbCB2b2lkIHNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0KSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29sb3JTcGFjZShjb25zdCBDb2xvclNwYWNlRGF0YSYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRDb2xvclNwYWNlKE9wdGlvbmFsPFdlYkNvcmU6OkRl
c3RpbmF0aW9uQ29sb3JTcGFjZT4pIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFRyYW5z
aWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3Jl
OjpGbG9hdFBvaW50IG9yaWdpbikgeyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEu
bWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgbWVzc2FnZXMgLT4g
RHJhd2luZ0FyZWEgTm90UmVmQ291bnRlZCB7CiAgICAgLy8gVXNlZCBieSBUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYS4KICAgICBVcGRhdGVHZW9tZXRyeShXZWJDb3JlOjpJbnRTaXplIHZp
ZXdTaXplLCBib29sIGZsdXNoU3luY2hyb25vdXNseSwgTWFjaFNlbmRSaWdodCBmZW5jZVBvcnQp
CiAgICAgU2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCi0gICAg
U2V0Q29sb3JTcGFjZShzdHJ1Y3QgV2ViS2l0OjpDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlKQor
ICAgIFNldENvbG9yU3BhY2Uoc3RydWN0IE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29s
b3JTcGFjZT4gY29sb3JTcGFjZSkKICAgICBTZXRWaWV3RXhwb3NlZFJlY3QoT3B0aW9uYWw8V2Vi
Q29yZTo6RmxvYXRSZWN0PiB2aWV3RXhwb3NlZFJlY3QpCiAKICAgICBBZGp1c3RUcmFuc2llbnRa
b29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI1OTgsNyArMjU5OCw3IEBAIHN0YXRpYyBTaGFyZWFibGVCaXRtYXA6
OkNvbmZpZ3VyYXRpb24gc24KICAgICBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gY29u
ZmlndXJhdGlvbjsKICNpZiBVU0UoQ0cpCiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlv
bnNVc2VTY3JlZW5Db2xvclNwYWNlKQotICAgICAgICBjb25maWd1cmF0aW9uLmNvbG9yU3BhY2Uu
Y2dDb2xvclNwYWNlID0gc2NyZWVuQ29sb3JTcGFjZShwYWdlLmNvcmVQYWdlKCktPm1haW5GcmFt
ZSgpLnZpZXcoKSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZSA9IHNjcmVlbkNv
bG9yU3BhY2UocGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCkpOwogI2VuZGlmCiAg
ICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWEuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgJKHdvcmtp
bmcgY29weSkKQEAgLTk4LDcgKzk4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN1c3BlbmRQYWlu
dGluZygpOwogICAgIHZvaWQgcmVzdW1lUGFpbnRpbmcoKTsKICAgICB2b2lkIHNldExheWVySG9z
dGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9kZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRDb2xvclNw
YWNlKGNvbnN0IENvbG9yU3BhY2VEYXRhJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb2xvclNw
YWNlKE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4pIG92ZXJyaWRlOwog
ICAgIHZvaWQgYWRkRmVuY2UoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0Jikgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIGFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRChDYWxsYmFja0lEKSBvdmVycmlkZTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0JKHJldmlzaW9u
IDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBA
QAogCiAjaWYgUExBVEZPUk0oTUFDKQogCi0jaW1wb3J0ICJDb2xvclNwYWNlRGF0YS5oIgogI2lt
cG9ydCAiRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmgiCiAjaW1wb3J0ICJEcmF3aW5nQXJlYVBy
b3h5TWVzc2FnZXMuaCIKICNpbXBvcnQgIkxheWVySG9zdGluZ0NvbnRleHQuaCIKQEAgLTQ1LDYg
KzQ0LDcgQEAKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgogI2ltcG9y
dCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RlYnVnUGFnZU92
ZXJsYXlzLmg+CisjaW1wb3J0IDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNp
bXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CkBAIC05MSw2ICs5MSw3IEBAIFRpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpUaWxlZENvcmUKICAgICB9KTsKIAogICAgIHVwZGF0
ZUxheWVySG9zdGluZ0NvbnRleHQoKTsKKyAgICAKICAgICBzZXRDb2xvclNwYWNlKHBhcmFtZXRl
cnMuY29sb3JTcGFjZSk7CiAKICAgICBpZiAoYXV0byB2aWV3RXhwb3NlZFJlY3QgPSBwYXJhbWV0
ZXJzLnZpZXdFeHBvc2VkUmVjdCkKQEAgLTY1MCw5ICs2NTEsOSBAQCB2b2lkIFRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRMCiAgICAgc2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWFQ
cm94eTo6VXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoMCwgbGF5ZXJUcmVlQ29udGV4
dCkpOwogfQogCi12b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRDb2xvclNw
YWNlKGNvbnN0IENvbG9yU3BhY2VEYXRhJiBjb2xvclNwYWNlKQordm9pZCBUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYTo6c2V0Q29sb3JTcGFjZShPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5h
dGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2UpCiB7Ci0gICAgbV9sYXllckhvc3RpbmdDb250ZXh0
LT5zZXRDb2xvclNwYWNlKGNvbG9yU3BhY2UuY2dDb2xvclNwYWNlLmdldCgpKTsKKyAgICBtX2xh
eWVySG9zdGluZ0NvbnRleHQtPnNldENvbG9yU3BhY2UoY29sb3JTcGFjZSA/IGNvbG9yU3BhY2Ut
PnBsYXRmb3JtQ29sb3JTcGFjZSgpIDogbnVsbHB0cik7CiB9CiAKIFJlZlB0cjxXZWJDb3JlOjpE
aXNwbGF5UmVmcmVzaE1vbml0b3I+IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpjcmVh
dGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQpJbmRl
eDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjc3OTIwKQorKysgU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMjEtMDUtMjIgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAg
IENvbnZlcnQgRGVzdGluYXRpb25Db2xvclNwYWNlIGZyb20gYW4gZW51bSB0byBjbGFzcyB3cmFw
cGluZyBhIHBsYXRmb3JtIGNvbG9yIHNwYWNlIChDR0NvbG9yU3BhY2VSZWYgZm9yIENHIHBvcnRz
LCBldGMuKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI2MTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNv
bnRleHRNZW51Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0p
OgorICAgICAgICBVcGRhdGUgZm9yIG5ldyBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY2xhc3MuCisK
IDIwMjEtMDUtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzCkluZGV4OiBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVu
dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0JKHdv
cmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQml0bWFwSW1h
Z2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29udGV4dE1lbnUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
Q29udGV4dE1lbnVDb250cm9sbGVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29s
b3JTcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9GcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KQEAgLTIxMyw3ICsyMTQs
NyBAQCBSZXRhaW5QdHI8TlNJbWFnZT4gV2ViQ29udGV4dE1lbnVDbGllbnQ6CiAgICAgICAgIHJl
dHVybiBuaWw7CiAKICAgICAvLyBUaGlzIGlzIGVmZmVjdGl2ZWx5IGEgc25hcHNob3QsIGFuZCB3
aWxsIGJlIHBhaW50ZWQgaW4gYW4gdW5hY2NlbGVyYXRlZCBmYXNoaW9uIGluIGxpbmUgd2l0aCBG
cmFtZVNuYXBzaG90dGluZy4KLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
cmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGUocmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdS
QTgpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbmlsOwogCkluZGV4OiBUb29s
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzc5
MjApCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAor
MjAyMS0wNS0yMiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29u
dmVydCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdyYXBwaW5n
IGEgcGxhdGZvcm0gY29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0
Yy4pCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYx
NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIFVwYXRlIHRlc3QgdG8gdXNlIG5l
dyBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgdHlwZS4KKwogMjAyMS0wNS0yMiAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExv
Y2tlciBpbiBsb2NhbCB2YXJpYWJsZXMKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9Q
aXhlbER1bXBTdXBwb3J0SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2lvcy9QaXhlbER1bXBTdXBwb3J0SU9TLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBUb29scy9E
dW1wUmVuZGVyVHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIw
MDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0IDxDb21tb25DcnlwdG8vQ29t
bW9uRGlnZXN0Lmg+CiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvVVRDb3JlVHlwZXMuaD4K
ICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9EZXN0
aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cu
aD4KICNpbXBvcnQgPFdlYkNvcmUvSU9TdXJmYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRm
b3JtU2NyZWVuLmg+CkBAIC03MSw3ICs3Miw3IEBAIFJlZlB0cjxCaXRtYXBDb250ZXh0PiBjcmVh
dGVCaXRtYXBDb250ZXgKICNlbHNlCiAgICAgV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQgc25h
cHNob3RGb3JtYXQgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdDo6QkdSQTsKICNlbmRpZgot
ICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlKFdlYkNvcmU6OmV4
cGFuZGVkSW50U2l6ZShzbmFwc2hvdFNpemUpLCBXZWJDb3JlOjpzUkdCQ29sb3JTcGFjZVJlZigp
LCBzbmFwc2hvdEZvcm1hdCk7CisgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNl
OjpjcmVhdGUoV2ViQ29yZTo6ZXhwYW5kZWRJbnRTaXplKHNuYXBzaG90U2l6ZSksIFdlYkNvcmU6
OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBzbmFwc2hvdEZvcm1hdCk7CiAgICAgUmV0
YWluUHRyPENHSW1hZ2VSZWY+IGNnSW1hZ2UgPSBzdXJmYWNlLT5jcmVhdGVJbWFnZSgpOwogCiAg
ICAgdm9pZCogYml0bWFwQnVmZmVyID0gbnVsbHB0cjsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cu
Y3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
NyBAQAogCiAjaWYgVVNFKENHKQogCisjaW5jbHVkZSA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9y
U3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdFJl
cGxheWVyLmg+CkBAIC00Niw4ICs0Nyw4IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgUmVwbGF5
V2l0aE1pc3NpbmcKIHsKICAgICBGbG9hdFJlY3QgY29udGV4dEJvdW5kcyB7IDAsIDAsIGNvbnRl
eHRXaWR0aCwgY29udGV4dEhlaWdodCB9OwogCi0gICAgYXV0byBjb2xvclNwYWNlID0gYWRvcHRD
RihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShrQ0dDb2xvclNwYWNlU1JHQikpOwotICAgIGF1
dG8gY2dDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUobnVsbHB0ciwgY29u
dGV4dFdpZHRoLCBjb250ZXh0SGVpZ2h0LCA4LCA0ICogY29udGV4dFdpZHRoLCBjb2xvclNwYWNl
LmdldCgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpKTsKKyAgICBhdXRvIGNvbG9y
U3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKKyAgICBhdXRvIGNnQ29udGV4
dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKG51bGxwdHIsIGNvbnRleHRXaWR0aCwg
Y29udGV4dEhlaWdodCwgOCwgNCAqIGNvbnRleHRXaWR0aCwgY29sb3JTcGFjZS5wbGF0Zm9ybUNv
bG9yU3BhY2UoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSk7CiAgICAgR3JhcGhp
Y3NDb250ZXh0IGNvbnRleHQgeyBjZ0NvbnRleHQuZ2V0KCkgfTsKIAogICAgIGF1dG8gaW1hZ2VC
dWZmZXJJZGVudGlmaWVyID0gUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgp
OwpAQCAtNjksNyArNzAsNyBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIFJlcGxheVdpdGhNaXNz
aW5nCiAgICAgfQogCiAgICAgewotICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZSh7IDEwMCwgMTAwIH0sIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAg
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoeyAxMDAsIDEwMCB9LCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6
QkdSQTgpOwogICAgICAgICBJbWFnZUJ1ZmZlckhhc2hNYXAgaW1hZ2VCdWZmZXJNYXA7CiAgICAg
ICAgIGltYWdlQnVmZmVyTWFwLnNldChpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIGltYWdlQnVmZmVy
LnJlbGVhc2VOb25OdWxsKCkpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429431</attachid>
            <date>2021-05-22 15:50:03 -0700</date>
            <delta_ts>2021-05-22 18:44:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226143-20210522155002.patch</filename>
            <type>text/plain</type>
            <size>272002</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5NSBAQAorMjAyMS0wNS0yMiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdyYXBwaW5nIGEgcGxhdGZvcm0gY29sb3Ig
c3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0Yy4pCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxNDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIGVudW1lcmF0aW9uIGJh
c2VkIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB3aXRoIGEgc3RydWN0IHdyYXBwaW5nCisgICAgICAg
IGEgcGxhdGZvcm0gY29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0
Yy4pLiBGb3IgcG9ydHMKKyAgICAgICAgdGhhdCBkb24ndCBoYXZlIGEgcGxhdGZvcm0gbGV2ZWwg
Y29sb3Igc3BhY2UgdHlwZSwgYSBidWlsdGluIFBsYXRmb3JtQ29sb3JTcGFjZQorICAgICAgICB0
eXBlIGlzIHByb3ZpZGVkIHRoYXQgaXMganVzdCB0aGUgb2xkIGVudW0gcmVuYW1lZCB0byBQbGF0
Zm9ybUNvbG9yU3BhY2U6Ok5hbWUuCisKKyAgICAgICAgVGhlIGdvYWwgb2YgdGhpcyBjaGFuZ2Ug
aXMgdG8gdW5pZnkgdGhlIGN1cnJlbnRseSBiaWZyYWNhdGVkIGNvbmNlcHQgb2YgYW4KKyAgICAg
ICAgSW1hZ2VCdWZmZXIncyBjb2xvciBzcGFjZSwgd2hpY2ggcHJldmlvc2x5IGNvdWxkIGVpdGhl
ciBiZSBiYXNlZCBvbiB0aGUgCisgICAgICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgYW5kIHJl
ZmxlY3RlZCBpbiB0aGUgY29sb3JTcGFjZSgpIG1lbWJlciBmdW5jdGlvbiwKKyAgICAgICAgb3Ig
KGZvciBDRyBwb3J0cykgYmFzZWQgb24gYSBDR0NvbG9yU3BhY2VSZWYsIHdpdGggdGhlIGNvbG9y
U3BhY2UoKSBmdW5jdGlvbgorICAgICAgICByZXR1cm5pbmcgc1JHQiBldmVuIGlmIHRoZSBJbWFn
ZUJ1ZmZlciB3YXMgbm90LiAKKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICog
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpD
bGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXJ0d29ya0ltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogU291cmNl
cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBJbWFnZUJpdG1hcCk6CisgICAgICAgIChXZWJD
b3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEltYWdlQml0bWFwKToKKyAgICAgICAgKiBjc3Mv
Q1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXJJbWFn
ZVZhbHVlOjppbWFnZSk6CisgICAgICAgICogaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludENhbnZhczo6Y29waWVkSW1hZ2UgY29uc3QpOgor
ICAgICAgICAqIGh0bWwvQ3VzdG9tUGFpbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
dXN0b21QYWludEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6dG9NZWRp
YVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1h
Z2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGVCdWZmZXJGb3JQYWludGlu
ZyBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAgICog
aHRtbC9JbWFnZUJpdG1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJpdG1hcDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCaXRtYXA6OmNyZWF0ZVBy
b21pc2UpOgorICAgICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Y29tbWl0VG9QbGFjZWhvbGRlckNhbnZhcyk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojpjb2xvclNwYWNlIGNvbnN0KToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0OjpzZXRPdXRwdXRCaXRtYXApOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnRvRGVzdGluYXRpb25Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvUHJlZGVmaW5l
ZENvbG9yU3BhY2UpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNl
Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1
ZmZlckNhY2hlOjppbWFnZUJ1ZmZlcik6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbkltYWdlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6YnVpbGRBcnJheUZvckNhbnZhc1BhdHRlcm4p
OgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6
Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAg
ICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hv
dHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RGcmFtZVJlY3RXaXRoQ2xpcCk6
CisgICAgICAgICogcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNhbXBsZUNvbG9yKToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9Ib3N0V2luZG93Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1Db2xv
clNwYWNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db2xvclNwYWNlOjpn
ZXQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2NyZWVuUHJvcGVydGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVu
UHJvcGVydGllczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVlbkRhdGE6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5EYXRhOjpkZWNvZGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3UGF0dGVybik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29s
b3I6OnRvQ29sb3JDb21wb25lbnRzSW5Db2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJDb2xvckNvbXBvbmVudHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yU3BhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25j
cmV0ZUltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVy
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRl
ZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpk
cmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xv
clNwYWNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IpOgorICAgICAgICAoV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5l
YXJTUkdCKToKKyAgICAgICAgKFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxh
eVAzKToKKyAgICAgICAgKFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGVzdGluYXRp
b25Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAgICAo
V2ViQ29yZTo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OnBsYXRmb3JtQ29sb3JT
cGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OmRl
Y29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJCYWNrZW5kOjpnZXRQaXhlbEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OnB1dFBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyQmFja2VuZDo6dHJhbnNmb3JtQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbG9yU3BhY2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1BpeGVsQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6
ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckNvbnZlcnNp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZVZJbWFnZUNHSW1hZ2VGb3JtYXQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1hdDo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cmFuc2Zl
ckJHUkFQaXhlbEJ1ZmZlclRvSU9TdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZVZp
ZGVvU2FtcGxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGU6
OlJlbW90ZVZpZGVvU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxl
OjpzdXJmYWNlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRl
b1NhbXBsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6Z2V0U2NyYXRjaEJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRp
bGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpibHVyU2hhZG93QnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdTaGFkb3dMYXllcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBh
aW50UmVzdWx0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyb0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0Jh
Y2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQ29sb3JDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9DR0NvbXBh
dGlibGVDb21wb25lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNHQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6cGxhdGZvcm1Db252ZXJ0Q29sb3JDb21wb25lbnRzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaDoKKyAgICAgICAgKFdlYkNvcmU6
OmNhY2hlZENHQ29sb3JTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdXJmYWNlTWF0
Y2hlc1BhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlUG9vbDo6dGFrZVN1
cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjb3B5Q0dJbWFnZUZv
ckVuY29kaW5nIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6
c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJC
YWNraW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW06CisgICAgICAg
IChXZWJDb3JlOjpJT1N1cmZhY2U6OnN1cmZhY2VGcm9tUG9vbCk6CisgICAgICAgIChXZWJDb3Jl
OjpJT1N1cmZhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0
ZUZyb21TZW5kUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9t
U3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21JbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21QaXhlbEJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OklPU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJT1N1cmZhY2U6OmVuc3VyZVBsYXRmb3JtQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJ
T1N1cmZhY2U6Om1pZ3JhdGVDb2xvclNwYWNlVG9Qcm9wZXJ0aWVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6cmVuZGVy
VG9JbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFu
c2ZlclNlc3Npb25WVC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlVHJhbnNmZXJTZXNzaW9u
VlQ6OmNyZWF0ZVBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9Q
aXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVy
Q29uZm9ybWVyQ1Y6OmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyOjpjcmVhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OmRlc3Ryb3kp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5n
Q29tbWFuZHM6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczo6Y29sb3JTcGFjZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5nQ29t
bWFuZHM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVn
aW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6R2V0UGl4ZWxCdWZmZXI6OkdldFBpeGVsQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpHZXRQaXhlbEJ1ZmZlcjo6b3V0cHV0Rm9ybWF0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpHZXRQaXhlbEJ1ZmZlcjo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpHZXRQaXhlbEJ1ZmZlcjo6ZGVjb2Rl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNs
aXBUb0RyYXdpbmdDb21tYW5kcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlz
cGxhY2VtZW50TWFwOjpzZXRSZXN1bHRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRVRpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVs
QnVmZmVyVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29u
dmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVm
ZmVjdDo6Y29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0aW5hdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRQaXhlbEJ1ZmZlclRvRGVzdGluYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpyZXF1aXJlc1BpeGVsQnVmZmVy
Q29sb3JTcGFjZUNvbnZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojp0
cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpv
cGVyYXRpbmdDb2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6c2V0T3BlcmF0aW5nQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OnJlc3VsdENvbG9yU3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZm
ZWN0OjpzZXRSZXN1bHRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL1NvdXJjZUdyYXBoaWMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6
OlNvdXJjZUdyYXBoaWMpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5JT1MubW06CisgICAgICAgIChXZWJDb3JlOjpzY3Jl
ZW5Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RTY3JlZW5Qcm9wZXJ0aWVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5NYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpjb2xsZWN0U2NyZWVuUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpz
Y3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50
b0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNw
bGF5Q2FwdHVyZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5EaXNwbGF5Q2FwdHVy
ZXJNYWM6OmNyZWF0ZURpc3BsYXlTdHJlYW0pOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2U6OmltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9wbGF5
c3RhdGlvbi9QbGF0Zm9ybVNjcmVlblBsYXlTdGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNjcmVlbkNvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVl
bldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS93cGUvUGxhdGZvcm1TY3JlZW5XUEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oOgor
ICAgICAgICAoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YTo6ZGVjb2Rl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZpbHRlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
RmlsdGVyOjpidWlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmFsbG9jYXRlQmFj
a2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjphcHBseSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnBhdHRlcm5Gb3JEZXNjcmlwdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50U3lz
dGVtUHJldmlld0JhZGdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRQcm9ncmVzc0Jhcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
aGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VDbGlwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291
cmNlQ2xpcHBlcjo6YXBwbHlDbGlwcGluZ1RvQ29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1hc2tBbmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6ZHJhd0NvbnRlbnRJ
bnRvTWFza0ltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
TWFza2VyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRl
cm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpjcmVh
dGVUaWxlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5n
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVh
dGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0Ojpi
dWZmZXJGb3JlZ3JvdW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0Nv
bnRleHQuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUpOgorCiAyMDIxLTA1LTIyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiBDb21wb25lbnQgYXQgaW5kZXgg
MSBpcyAxLjAwMDAwMCBhbmQgaXMgZ3JlYXRlciB0aGFuIHRoZSBhbGxvd2VkIG1heGltdW0gMS4w
MDAwMDAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTE5Nyw2ICsxMTk3LDcg
QEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Rhc2hB
cnJheS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGVjb2RpbmdPcHRpb25zLmgKKyAgICBwbGF0
Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxh
eVJlZnJlc2hNb25pdG9yQ2xpZW50LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVm
cmVzaE1vbml0b3JGYWN0b3J5LmgKQEAgLTEyOTMsNiArMTI5NCw3IEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZl
ci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1BpeGVsRm9ybWF0LmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bUNvbG9yU3BhY2UuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE5
NTAsNiArMTk1MCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhU
ZXh0Q29udHJvbGxlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBi
b2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NE
YXRhU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2wKIAogICAgICAgICBhdXRvIGJpdG1hcElt
YWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgICAgICBiaXRtYXBJbWFnZS0+c2V0RGF0
YShXVEZNb3ZlKGJ1ZmZlclRvU2FuaXRpemUpLCB0cnVlKTsKLSAgICAgICAgYXV0byBpbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
LCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
ICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikgewogICAgICAgICAgICAgbV9kYXRhID0geyBudWxs
U3RyaW5nKCkgfTsKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1l
dGFkYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCB2b2lkIEFydHdvcmtJ
bWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyVG9TYW5pdGl6ZSA9IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBhdXRv
IGJpdG1hcEltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIGJpdG1hcEltYWdlLT5z
ZXREYXRhKFdURk1vdmUoYnVmZmVyVG9TYW5pdGl6ZSksIHRydWUpOwotICAgIGF1dG8gaW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJpdG1hcEltYWdlLT5zaXplKCksIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAg
ICBpZiAoIWltYWdlQnVmZmVyKSB7CiAgICAgICAgIG1fY2FsbGJhY2sobnVsbHB0cik7CiAgICAg
ICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjc3OTIwKQorKysg
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEz
IEBACisyMDIxLTA1LTIyICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAg
ICBDb252ZXJ0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBmcm9tIGFuIGVudW0gdG8gY2xhc3Mgd3Jh
cHBpbmcgYSBwbGF0Zm9ybSBjb2xvciBzcGFjZSAoQ0dDb2xvclNwYWNlUmVmIGZvciBDRyBwb3J0
cywgZXRjLikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyNjE0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDoKKyAgICAgICAgQWRkIGFkZGlvbmFsIFNQ
SSBmb3Igd29ya2luZyB3aXRoIENHQ29sb3JTcGFjZVJlZnMuCisKIDIwMjEtMDUtMjEgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBZG9w
dCBRTEl0ZW0gaW4gV0tJbWFnZUV4dHJhY3Rpb25QcmV2aWV3Q29udHJvbGxlcgpJbmRleDogU291
cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGlj
c1NQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDIsNiArMjQyLDcgQEAgdHlwZWRlZiB2b2lkICgq
Q0dTTm90aWZ5UHJvY1B0cikoQ0dTTm90aQogCiBXVEZfRVhURVJOX0NfQkVHSU4KIAorYm9vbCBD
R0NvbG9yVHJhbnNmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyhDR0NvbG9yVHJhbnNmb3JtUmVm
LCBDR0NvbG9yU3BhY2VSZWYsIENHQ29sb3JSZW5kZXJpbmdJbnRlbnQsIGNvbnN0IENHRmxvYXQg
c3JjQ29tcG9uZW50c1tdLCBDR0Zsb2F0IGRzdENvbXBvbmVudHNbXSk7CiBDR0NvbG9yUmVmIENH
Q29sb3JUcmFuc2Zvcm1Db252ZXJ0Q29sb3IoQ0dDb2xvclRyYW5zZm9ybVJlZiwgQ0dDb2xvclJl
ZiwgQ0dDb2xvclJlbmRlcmluZ0ludGVudCk7CiBDR0NvbG9yVHJhbnNmb3JtUmVmIENHQ29sb3JU
cmFuc2Zvcm1DcmVhdGUoQ0dDb2xvclNwYWNlUmVmLCBDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRl
cyk7CiAKQEAgLTI5MSw2ICsyOTIsOCBAQCBDR1N0eWxlUmVmIENHR1N0YXRlR2V0U3R5bGUoQ0dH
U3RhdGVSZWYpCiBDR1N0eWxlVHlwZSBDR1N0eWxlR2V0VHlwZShDR1N0eWxlUmVmKTsKIGNvbnN0
IHZvaWQgKkNHU3R5bGVHZXREYXRhKENHU3R5bGVSZWYpOwogQ0dDb2xvclJlZiBDR1N0eWxlR2V0
Q29sb3IoQ0dTdHlsZVJlZik7Citib29sIENHQ29sb3JTcGFjZUVxdWFsVG9Db2xvclNwYWNlKENH
Q29sb3JTcGFjZVJlZiwgQ0dDb2xvclNwYWNlUmVmKTsKK0NGU3RyaW5nUmVmIENHQ29sb3JTcGFj
ZUNvcHlJQ0NQcm9maWxlRGVzY3JpcHRpb24oQ0dDb2xvclNwYWNlUmVmKTsKIAogI2lmIEhBVkUo
Q0dQQVRIX0dFVF9OVU1CRVJfT0ZfRUxFTUVOVFMpCiBzaXplX3QgQ0dQYXRoR2V0TnVtYmVyT2ZF
bGVtZW50cyhDR1BhdGhSZWYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0zOTk2LDYgKzM5OTYsNyBAQAogCQlCQzIzRjBEQjBEQUZGNEE0MDA5RkRDOTEgLyogR2VuZXJh
dGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMjNGMERBMERBRkY0QTQwMDlGREM5MSAvKiBHZW5lcmF0ZWRJbWFnZS5oICovOyB9OwogCQlC
QzI3NEIyRjE0MEVCRUIyMDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI3NEIyRTE0MEVC
RUIyMDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggKi87IH07CiAJCUJDMkNC
RjRFMTQwRjFBQkQwMDM4NzlCRSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJDQkY0QjE0MEYxQTY1MDAzODc5
QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oICovOyB9OworCQlCQzJDQ0ExMDI2NTVEREIyMDBC
OEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJDQ0EwRTI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGlu
YXRpb25Db2xvclNwYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQkMzMDVDN0EwQzA3NkJCMzAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzA1
Qzc4MEMwNzZCQjMwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50LmggKi87IH07CiAJCUJD
MzQ4QkQ0MERCN0Y4MDQwMDRBQkFCOSAvKiBKU1hNTEh0dHBSZXF1ZXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzM0OEJEMjBEQjdGODA0MDA0QUJB
QjkgLyogSlNYTUxIdHRwUmVxdWVzdC5oICovOyB9OwogCQlCQzM0OEJENDBEQjdGODA0MDA0QUJB
QkEgLyogV2ViQ29yZUpTQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDMzQ4QkQyMERCN0Y4MDQwMDRBQkFCQSAvKiBXZWJDb3JlSlNCdWls
dGlucy5oICovOyB9OwpAQCAtNDAwNyw2ICs0MDA4LDcgQEAKIAkJQkMzQkU5OTkwRTlDMUU1RDAw
ODM1NTg4IC8qIFJlbmRlclNjcm9sbGJhclRoZW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzNCRTk5ODBFOUMxRTVEMDA4MzU1ODggLyogUmVuZGVy
U2Nyb2xsYmFyVGhlbWUuaCAqLzsgfTsKIAkJQkMzQzM5QjcwQzBEM0Q4RDAwNUY0RDdBIC8qIEpT
TWVkaWFMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzNDMzlCNTBDMEQzRDhEMDA1RjREN0EgLyogSlNNZWRpYUxpc3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzNEODVCQzFDMEUyRTdBMDBE
M0I2MTAgLyogSlNIVE1MUGljdHVyZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODA4QjEzMUMwRTJCMzUwMDY2RkQ2QiAvKiBKU0hUTUxQ
aWN0dXJlRWxlbWVudC5oICovOyB9OworCQlCQzNFNjI0MzI2NTk3OTE4MDA1NDhBQ0QgLyogUGxh
dGZvcm1Db2xvclNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzNFNjI0MjI2NTk3OTE3MDA1NDhBQ0QgLyogUGxhdGZvcm1Db2xvclNwYWNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM0MzY4
RTgwQzIyNkUzMjAwNUVGQjVGIC8qIFJlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDNDM2OEU3MEMyMjZFMzIwMDVFRkI1RiAvKiBSZWN0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM0NkMxRkQw
QzBEREM4RjAwMjBDRkMzIC8qIEpTQ1NTRm9udEZhY2VSdWxlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzQ2QzFGMzBDMEREQzhGMDAyMENGQzMgLyog
SlNDU1NGb250RmFjZVJ1bGUuaCAqLzsgfTsKIAkJQkM0NkMxRkYwQzBEREM4RjAwMjBDRkMzIC8q
IEpTQ1NTSW1wb3J0UnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkM0NkMxRjUwQzBEREM4RjAwMjBDRkMzIC8qIEpTQ1NTSW1wb3J0UnVsZS5oICov
OyB9OwpAQCAtMTQxMzQsNiArMTQxMzYsOCBAQAogCQlCQzI5OTM1QzE3QTFERDU4MDBCQ0U4ODAg
LyogQ29sb3JJbnB1dFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ29sb3JJbnB1dFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJD
QkY0QjE0MEYxQTY1MDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMQ29udGV4dEV2ZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDMkNCRjdBMTQwRjFENTgwMDM4NzlCRSAvKiBKU1dlYkdMQ29u
dGV4dEV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2Vi
R0xDb250ZXh0RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJDQ0Ew
RTI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCQzJDQ0EwRjI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDMkVENTU0MEM2QjlCRDMwMDkyMEJGRiAvKiBKU0VsZW1lbnRD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFbGVtZW50
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyRUQ2QkIwQzZCRDJG
MDAwOTIwQkZGIC8qIEpTQXR0ckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0F0dHJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQzMwNUM3NzBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MT2JqZWN0RWxlbWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDE1Nyw2ICsxNDE2MSw3IEBACiAJ
CUJDM0JFOUFBMEU5QzI0MjAwMDgzNTU4OCAvKiBSZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNjcm9sbGJhclBhcnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzNDMzlCNDBDMEQzRDhEMDA1RjREN0Eg
LyogSlNNZWRpYUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTTWVkaWFMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzQzM5QjUw
QzBEM0Q4RDAwNUY0RDdBIC8qIEpTTWVkaWFMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU01lZGlhTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
QzNFNjI0MjI2NTk3OTE3MDA1NDhBQ0QgLyogUGxhdGZvcm1Db2xvclNwYWNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtQ29sb3JTcGFjZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQzQzNjhFNzBDMjI2RTMyMDA1RUZCNUYgLyogUmVjdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVjdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQzQ2QzFFRDBDMEREQkRGMDAyMENGQzMgLyogSlNDU1NSdWxlQ3VzdG9t
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NTU1J1bGVDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzQ2QzFGMjBDMEREQzhGMDAy
MENGQzMgLyogSlNDU1NGb250RmFjZVJ1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTQ1NTRm9udEZhY2VSdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTI2OTI1LDYgKzI2OTMwLDggQEAKIAkJCQkyRDJGQzA1NTE0NjBDRDZGMDAyNjM2
MzMgLyogQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaCAqLywKIAkJCQlBOENCNDEwMjBFODVCOEE1
MDAzMkM0RjAgLyogRGFzaEFycmF5LmggKi8sCiAJCQkJNTU1MTMwMDAxRTdDQ0NDQTAwQTY5RTM4
IC8qIERlY29kaW5nT3B0aW9ucy5oICovLAorCQkJCUJDMkNDQTBGMjY1NUREQjIwMEI4QzAzNSAv
KiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuY3BwICovLAorCQkJCUJDMkNDQTBFMjY1NUREQjIwMEI4
QzAzNSAvKiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCAqLywKIAkJCQk0OUZDN0E0RjE0NDRBRjVG
MDBBNUQ4NjQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCAqLywKIAkJCQk0OUFGMkQ2ODE0
NDM1RDA1MDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmggKi8sCiAJCQkJMkQyOUVD
QzExOTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5jcHAgKi8s
CkBAIC0yNzEwMSw2ICsyNzEwOCw3IEBACiAJCQkJQkM2MzVFOEIyNjRDMkNBRTAwMEVGMzNBIC8q
IFBpeGVsQnVmZmVyRm9ybWF0LmggKi8sCiAJCQkJQkM2MzVFOTAyNjRDNDY5RjAwMEVGMzNBIC8q
IFBpeGVsRm9ybWF0LmNwcCAqLywKIAkJCQlCQ0E1NTkxMjI2M0RCRDc5MDA3RjE5QjMgLyogUGl4
ZWxGb3JtYXQuaCAqLywKKwkJCQlCQzNFNjI0MjI2NTk3OTE3MDA1NDhBQ0QgLyogUGxhdGZvcm1D
b2xvclNwYWNlLmggKi8sCiAJCQkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3Jt
SW1hZ2UuaCAqLywKIAkJCQk3MkJBQzNBNjIzRTE3MzI4MDA4RDc0MUMgLyogUGxhdGZvcm1JbWFn
ZUJ1ZmZlci5oICovLAogCQkJCTU1MDY0MEFEMjQwNzU2REEwMEFBRTA0NSAvKiBQbGF0Zm9ybUlt
YWdlQnVmZmVyQmFja2VuZC5oICovLApAQCAtMzIyMzAsNiArMzIyMzgsNyBAQAogCQkJCTk0Nzk0
OTI1MUUwMzA4QUYwMDAxOEQ4NSAvKiBEZXByZWNhdGVkQ1NTT01WYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTQ3OTQ5M0QxRTA0NjNCNjAwMDE4RDg1IC8qIERlcHJlY2F0ZWRDU1NPTVZhbHVl
TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NCRDEyOUUxRjk4QjkwRTAwMTI3RDI5IC8qIERl
cHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMyQ0NBMTAyNjU1
RERCMjAwQjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDExMjIzQzUyNjAzNTY3RDAwQjBBMEI2IC8qIERldGFjaGVkUlRDRGF0YUNoYW5uZWwuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3QzlBQkY5MTM1N0EzQkYwMEY1NTAzRiAvKiBEZXRhaWxzTWFy
a2VyQ29udHJvbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFFRDc3OEQxQkUzMjk0MDAwREMxNzkx
IC8qIERldmljZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjI4MSw2ICszMjI5MCw3IEBACiAJCQkJ
MUNFOEQxMjcyNjE4NUMwRTAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZp
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ1MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNw
bGF5TGlzdEl0ZW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDM3N0Q1NzI1NTFDOUM2MDA4MEFC
RkUgLyogRGlzcGxheUxpc3RJdGVtVHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMzRTYyNDMy
NjU5NzkxODAwNTQ4QUNEIC8qIFBsYXRmb3JtQ29sb3JTcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUNFOEQxMkUyNjE4NjFDNDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRTVGQkQ3MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJl
Y29yZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1RkJEOTFDM0RENTFFMDAwN0EyQ0EgLyog
RGlzcGxheUxpc3RSZXBsYXllci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwODIsNyArMTA4Miw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBQaXhlbEJ1ZmZlckZv
cm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhl
bEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgICAgICBQ
aXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0
aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
IH07CiAgICAgICAgIGNvbnN0IEludFNpemUmIGxvZ2ljYWxTaXplID0gYnVmZmVyLT5sb2dpY2Fs
U2l6ZSgpOwogICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gYnVmZmVyLT5nZXRQaXhlbEJ1ZmZl
cihmb3JtYXQsIHsgSW50UG9pbnQ6Onplcm8oKSwgbG9naWNhbFNpemUgfSk7CiAgICAgICAgIGlm
ICghcGl4ZWxCdWZmZXIpIHsKQEAgLTMxODcsNyArMzE4Nyw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgUGl4ZWxCdWZmZXJG
b3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4
ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICAgICAg
UGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVs
dGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSB9OwogICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShm
b3JtYXQsIGltYWdlRGF0YVNpemUsIGFycmF5QnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwogICAg
ICAgICBpZiAoIXBpeGVsQnVmZmVyKSB7CiAgICAgICAgICAgICBmYWlsKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExNiw3ICsxMTYsNyBAQCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFs
dWU6OmltYWdlCiAKICAgICAvLyBUcmFuc2Zvcm0gSW1hZ2UgaW50byBJbWFnZUJ1ZmZlci4KICAg
ICAvLyBGSVhNRSAoMTQ5NDI0KTogVGhpcyBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlv
bmFsbHkgdW5hY2NlbGVyYXRlZC4KLSAgICBhdXRvIHRleHR1cmUgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIHRleHR1cmUgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAg
IGlmICghdGV4dHVyZSkKICAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCShyZXZpc2lvbiAy
Nzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTIsNyArOTIsNyBAQCBJbWFnZSogQ3VzdG9tUGFpbnRDYW52YXM6OmNv
cGllZEltYWdlKCkgCiAgICAgaWYgKCF3aWR0aCgpIHx8ICFoZWlnaHQoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBtX2NvcGllZEJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCwgbnVsbHB0cik7CisgICAgbV9jb3BpZWRC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCwgbnVsbHB0cik7CiAgICAgaWYgKCFtX2NvcGllZEJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRJbWFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludEltYWdlLmNw
cAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludElt
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgQ3VzdG9tUGFp
bnRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGgKICAgICBhZGp1c3RlZFBhdHRlcm5DVE0uc2NhbGUo
MS4wIC8geFNjYWxlLCAxLjAgLyB5U2NhbGUpOwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZSh4
U2NhbGUsIHlTY2FsZSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKGFkanVzdGVkU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
LCBkZXN0Q29udGV4dCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBkZXN0Q29udGV4dCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybjsKICAgICBk
b0N1c3RvbVBhaW50KGJ1ZmZlci0+Y29udGV4dCgpLCBhZGp1c3RlZFNpemUpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MjUsNyArODI1LDcgQEAgUmVmUHRyPE1lZGlhU2FtcGxlPiBIVE1MQ2FudmFzRWxl
bWVudDo6dAogICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBsaWtlbHkgYmUgb3B0aW1pemVkIHF1aXRl
IGEgYml0LCBlc3BlY2lhbGx5IGluIHRoZSBjYXNlcyB3aGVyZQogICAgIC8vIHRoZSBJbWFnZUJ1
ZmZlciBpcyBiYWNrZWQgYnkgR1BVIG1lbW9yeSBhbHJlYWR5IGFuZC9vciBpcyBpbiB0aGUgR1BV
IHByb2Nlc3MgYnkKICAgICAvLyBzcGVjaWFsaXppbmcgdG9NZWRpYVNhbXBsZSgpIGluIEltYWdl
QnVmZmVyQmFja2VuZCB0byBub3QgdXNlIGdldFBpeGVsQnVmZmVyKCkuCi0gICAgYXV0byBwaXhl
bEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5nZXRQaXhlbEJ1ZmZlcih7IEFscGhhUHJlbXVsdGlwbGlj
YXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IgfSwgeyB7IH0sIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpIH0pOwor
ICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoeyBBbHBo
YVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfSwgeyB7IH0sIGltYWdlQnVmZmVyLT5sb2dp
Y2FsU2l6ZSgpIH0pOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCkBAIC05NTUsNyArOTU1LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRl
SW1hZ2VCdWZmZQogICAgIGF1dG8gW2NvbG9yU3BhY2UsIHBpeGVsRm9ybWF0XSA9IFsmXSB7CiAg
ICAgICAgIGlmIChtX2NvbnRleHQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpwYWlyIHsgbV9j
b250ZXh0LT5jb2xvclNwYWNlKCksIG1fY29udGV4dC0+cGl4ZWxGb3JtYXQoKSB9OwotICAgICAg
ICByZXR1cm4gc3RkOjpwYWlyIHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZv
cm1hdDo6QkdSQTggfTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6cGFpciB7IERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTggfTsKICAgICB9KCk7CiAKICAgICBz
ZXRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgcmVuZGVyaW5nTW9kZSwg
dXNlRGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1cnBvc2U6OkNhbnZhcywgMSwgY29sb3JTcGFjZSwg
cGl4ZWxGb3JtYXQsIGhvc3RXaW5kb3cpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDcgKzI4MSw3IEBA
IHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6bWVkaWFQbGF5ZXJGaXJzdFYKICAgICAgICAgcmVuZGVy
ZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSFRNTFZp
ZGVvRWxlbWVudDo6Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29uc3QKK1JlZlB0cjxJbWFnZUJ1ZmZl
cj4gSFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CiB7
CiAgICAgYXV0byogaG9zdFdpbmRvdyA9IGRvY3VtZW50KCkudmlldygpICYmIGRvY3VtZW50KCku
dmlldygpLT5yb290KCkgPyBkb2N1bWVudCgpLnZpZXcoKS0+cm9vdCgpLT5ob3N0V2luZG93KCkg
OiBudWxscHRyOwogICAgIGF1dG8gc2hvdWxkVXNlRGlzcGxheUxpc3QgPSBkb2N1bWVudCgpLnNl
dHRpbmdzKCkuZGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZCgpID8gU2hvdWxkVXNlRGlzcGxheUxp
c3Q6OlllcyA6IFNob3VsZFVzZURpc3BsYXlMaXN0OjpObzsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTIgKzMzLDEy
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNl
OwogY2xhc3MgSFRNTEltYWdlTG9hZGVyOwogY2xhc3MgSW1hZ2VCdWZmZXI7CiBjbGFzcyBSZW5k
ZXJWaWRlbzsKIGNsYXNzIFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlcjsKIAotZW51bSBjbGFzcyBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgOiB1aW50OF90OwogZW51bSBjbGFzcyBQaXhlbEZvcm1hdCA6
IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOwogCkBAIC03Miw3ICs3
Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCkgb3ZlcnJp
ZGU7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQnVmZmVyRm9yUGFp
bnRpbmcoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgRGVzdGluYXRpb25Db2xvclNw
YWNlLCBQaXhlbEZvcm1hdCkgY29uc3Q7CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVC
dWZmZXJGb3JQYWludGluZyhjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCkgY29uc3Q7CiAKICAgICAvLyBVc2Vk
IGJ5IGNhbnZhcyB0byBnYWluIHJhdyBwaXhlbCBhY2Nlc3MKICAgICB2b2lkIHBhaW50Q3VycmVu
dEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCwx
MiArODQsMTIgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJpdG1hcDo6Y3JlYXRlSQogICAg
ICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25D
b250ZXh0KTsKICAgICAgICAgaWYgKGRvY3VtZW50LnZpZXcoKSAmJiBkb2N1bWVudC52aWV3KCkt
PnJvb3QoKSkgewogICAgICAgICAgICAgYXV0byBob3N0V2luZG93ID0gZG9jdW1lbnQudmlldygp
LT5yb290KCktPmhvc3RXaW5kb3coKTsKLSAgICAgICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0OjpObywgUmVu
ZGVyaW5nUHVycG9zZTo6Q2FudmFzLCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBob3N0V2luZG93KTsKKyAgICAgICAgICAg
IHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIFNob3VsZFVz
ZURpc3BsYXlMaXN0OjpObywgUmVuZGVyaW5nUHVycG9zZTo6Q2FudmFzLCByZXNvbHV0aW9uU2Nh
bGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGhv
c3RXaW5kb3cpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gRklYTUUgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzIxODQ4Mj4gRW5hYmxlIHdvcmtlciBiYXNlZCBJbWFnZUJpdG1hcCBhbmQgT2Zm
c2NyZWVuQ2FudmFzIGRyYXdpbmcgdG8gdXNlIEdQVSBQcm9jZXNzIHJlbmRlcmluZwotICAgIHJl
dHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25T
Y2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwor
ICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29s
dXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CiB9CiAKIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgSW1hZ2VCaXRtYXA6OlNvdXJjZSYm
IHNvdXJjZSwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgSW1hZ2VCaXRtYXA6OlByb21p
c2UmJiBwcm9taXNlKQpAQCAtNTA0LDcgKzUwNCw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0
ZVByb21pc2UoU2NyaXB0RXgKICAgICBhdXRvIG91dHB1dFNpemUgPSBvdXRwdXRTaXplRm9yU291
cmNlUmVjdGFuZ2xlKHNvdXJjZVJlY3RhbmdsZSwgb3B0aW9ucyk7CiAKICAgICAvLyBGSVhNRTog
QWRkIHN1cHBvcnQgZm9yIGNvbG9yIHNwYWNlcyAvIHBpeGVsIGZvcm1hdHMgdG8gSW1hZ2VCaXRt
YXAuCi0gICAgYXV0byBiaXRtYXBEYXRhID0gdmlkZW8tPmNyZWF0ZUJ1ZmZlckZvclBhaW50aW5n
KG91dHB1dFNpemUsIGJ1ZmZlclJlbmRlcmluZ01vZGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGJpdG1hcERhdGEgPSB2aWRlby0+
Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcob3V0cHV0U2l6ZSwgYnVmZmVyUmVuZGVyaW5nTW9kZSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAg
aWYgKCFiaXRtYXBEYXRhKSB7CiAgICAgICAgIHJlc29sdmVXaXRoQmxhbmtJbWFnZUJ1ZmZlcihz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCAhdGFpbnRzT3JpZ2luKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuc2VjdXJpdHlPcmlnaW4oKSwgKnZpZGVvKSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgICAg
IHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDUxLDE0ICs0NTEsMTQgQEAgdm9pZCBPZmZzY3JlZW5DYW52
YXM6OmNvbW1pdFRvUGxhY2Vob2xkZQogICAgICAgICBtX2NvbnRleHQtPnBhaW50UmVuZGVyaW5n
UmVzdWx0c1RvQ2FudmFzKCk7CiAKICAgICBpZiAobV9wbGFjZWhvbGRlckRhdGEtPmJ1ZmZlclBp
cGVTb3VyY2UpIHsKLSAgICAgICAgYXV0byBidWZmZXJDb3B5ID0gaW1hZ2VCdWZmZXItPmNvcHlS
ZWN0VG9CdWZmZXIoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxT
aXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGltYWdlQnVmZmVyLT5jb250ZXh0
KCkpOworICAgICAgICBhdXRvIGJ1ZmZlckNvcHkgPSBpbWFnZUJ1ZmZlci0+Y29weVJlY3RUb0J1
ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSks
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsK
ICAgICAgICAgaWYgKGJ1ZmZlckNvcHkpCiAgICAgICAgICAgICBtX3BsYWNlaG9sZGVyRGF0YS0+
YnVmZmVyUGlwZVNvdXJjZS0+aGFuZGxlKFdURk1vdmUoYnVmZmVyQ29weSkpOwogICAgIH0KIAog
ICAgIExvY2tlciBsb2NrZXIgeyBtX3BsYWNlaG9sZGVyRGF0YS0+YnVmZmVyTG9jayB9OwogICAg
IGJvb2wgc2hvdWxkUHVzaEJ1ZmZlciA9ICFtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1p
dEJ1ZmZlcjsKLSAgICBtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlciA9IGlt
YWdlQnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdl
QnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBpbWFn
ZUJ1ZmZlci0+Y29udGV4dCgpKTsKKyAgICBtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1p
dEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIGltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwogICAgIGlmIChtX3BsYWNlaG9sZGVy
RGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlciAmJiBzaG91bGRQdXNoQnVmZmVyKQogICAgICAgICBw
dXNoQnVmZmVyVG9QbGFjZWhvbGRlcigpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAi
Q1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VySGVscGVycy5o
IgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VyV29ya2VyU2FmZS5oIgotI2luY2x1ZGUgIkNv
bG9yU3BhY2UuaCIKICNpbmNsdWRlICJHcmFkaWVudC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVy
LmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNhY2hl
ZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2FudmFzUGF0dGVybi5oIgotI2luY2x1ZGUgIkNvbG9yU3Bh
Y2UuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJIVE1M
Q2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MVmlkZW9FbGVtZW50LmgiCkBAIC05MCw3ICs5MCw3IEBAIFBpeGVsRm9ybWF0IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQ6OnBpeGUKIAogRGVzdGluYXRpb25Db2xvclNwYWNlIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQ6OmNvbG9yU3BhY2UoKSBjb25zdAogewotICAgIHJldHVybiBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0I7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpOwogfQogCiBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRPcmln
aW4oY29uc3QgQ2FudmFzUGF0dGVybiogcGF0dGVybikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTMgKzM3LDEzIEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENhbnZhc1BhdHRlcm47CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7
CiBjbGFzcyBIVE1MQ2FudmFzRWxlbWVudDsKIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiBjbGFz
cyBIVE1MVmlkZW9FbGVtZW50OwogY2xhc3MgSW1hZ2VCaXRtYXA7CiBjbGFzcyBUeXBlZE9NQ1NT
SW1hZ2VWYWx1ZTsKIGNsYXNzIFdlYkdMT2JqZWN0OwotZW51bSBjbGFzcyBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgOiB1aW50OF90OwogZW51bSBjbGFzcyBQaXhlbEZvcm1hdCA6IHVpbnQ4X3Q7CiAK
IGNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29u
dGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VC
aXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCB2b2lkIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4
dDo6c2V0T3V0CiAgICAgICAgIC8vIG9ubHkgcmVhc29uIEkgY2FuIHRoaW5rIG9mIGlzIHRvRGF0
YVVSTCgpLCBidXQgdGhhdCBkb2Vzbid0IHNlZW0gbGlrZQogICAgICAgICAvLyBhIGdvb2QgZW5v
dWdoIGFyZ3VtZW50IHRvIHdhc3RlIG1lbW9yeS4KIAotICAgICAgICBjYW52YXMoKS0+c2V0SW1h
Z2VCdWZmZXJBbmRNYXJrRGlydHkoSW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUoY2FudmFz
KCktPndpZHRoKCksIGNhbnZhcygpLT5oZWlnaHQoKSksIGJ1ZmZlclJlbmRlcmluZ01vZGUsIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CisgICAg
ICAgIGNhbnZhcygpLT5zZXRJbWFnZUJ1ZmZlckFuZE1hcmtEaXJ0eShJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKEZsb2F0U2l6ZShjYW52YXMoKS0+d2lkdGgoKSwgY2FudmFzKCktPmhlaWdodCgpKSwgYnVm
ZmVyUmVuZGVyaW5nTW9kZSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVs
Rm9ybWF0OjpCR1JBOCkpOwogCiAgICAgICAgIC8vIDEuNC4gU2V0IHRoZSBvdXRwdXQgYml0bWFw
J3Mgb3JpZ2luLWNsZWFuIGZsYWcgdG8gdHJ1ZS4KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmNwcAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiUHJlZGVmaW5lZENvbG9yU3BhY2UuaCIKIAotI2luY2x1ZGUgIkNvbG9yU3Bh
Y2UuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlIDx3dGYv
T3B0aW9uYWwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsMzMgKzM1LDI2IEBAIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSB0b0Rlc3RpbmF0aW9uQ29sb3IKIHsKICAgICBzd2l0Y2ggKGNv
bG9yU3BhY2UpIHsKICAgICBjYXNlIFByZWRlZmluZWRDb2xvclNwYWNlOjpTUkdCOgotICAgICAg
ICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOworICAgICAgICByZXR1cm4gRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9S
X1NQQUNFX0RJU1BMQVlfUDMpCiAgICAgY2FzZSBQcmVkZWZpbmVkQ29sb3JTcGFjZTo6RGlzcGxh
eVAzOgotICAgICAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDM7Cisg
ICAgICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMygpOwogI2VuZGlm
CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQjsKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCk7CiB9CiAKLU9wdGlvbmFsPFByZWRlZmluZWRDb2xvclNwYWNlPiB0b1ByZWRlZmluZWRD
b2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKQorT3B0aW9uYWw8UHJl
ZGVmaW5lZENvbG9yU3BhY2U+IHRvUHJlZGVmaW5lZENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQogewotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewot
ICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOgorICAgIGlmIChjb2xvclNwYWNl
ID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKQogICAgICAgICByZXR1cm4gUHJlZGVm
aW5lZENvbG9yU3BhY2U6OlNSR0I7Ci0jaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNF
X0xJTkVBUl9TUkdCKQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdC
OgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotI2VuZGlmCiAjaWYgRU5BQkxFKERFU1RJ
TkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCi0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OkRpc3BsYXlQMzoKKyAgICBpZiAoY29sb3JTcGFjZSA9PSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OkRpc3BsYXlQMygpKQogICAgICAgICByZXR1cm4gUHJlZGVmaW5lZENvbG9yU3BhY2U6
OkRpc3BsYXlQMzsKICNlbmRpZgotICAgIH0KIAotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuaAkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVu
dW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDogdWludDhfdDsKK2NsYXNzIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTsKIAogZW51bSBjbGFzcyBQcmVkZWZpbmVkQ29sb3JTcGFjZSB7CiAgICAg
U1JHQgpAQCAtNDAsNyArNDAsNyBAQCBlbnVtIGNsYXNzIFByZWRlZmluZWRDb2xvclNwYWNlIHsK
IH07CiAKIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB0b0Rlc3RpbmF0aW9uQ29sb3JTcGFjZShQcmVk
ZWZpbmVkQ29sb3JTcGFjZSk7Ci1PcHRpb25hbDxQcmVkZWZpbmVkQ29sb3JTcGFjZT4gdG9QcmVk
ZWZpbmVkQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpOworT3B0aW9uYWw8UHJlZGVm
aW5lZENvbG9yU3BhY2U+IHRvUHJlZGVmaW5lZENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJik7CiAKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAJKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjIzLDcgKzc2MjMsNyBAQCBJbWFnZUJ1ZmZlciog
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6CiAgICAgfQogCiAgICAgLy8gRklYTUUgKDE0OTQy
Myk6IFNob3VsZCB0aGlzIEltYWdlQnVmZmVyIGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJh
dGVkPwotICAgIGF1dG8gdGVtcCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gdGVtcCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6
ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCF0ZW1wKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICBBU1NFUlQobV9idWZmZXJzLnNpemUoKSA+IDApOwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVy
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFRleHRUcmFja0NvbnRh
aW5lckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTgsNyArNDE4LDcgQEAgUmVmUHRy
PEltYWdlPiBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YQogICAgIEludFJlY3QgcGFpbnRpbmdS
ZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+c2l6ZSgpKTsKIAogICAgIC8vIEZJWE1F
ICgxNDk0MjIpOiBUaGlzIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFj
Y2VsZXJhdGVkLgotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGlu
Z1JlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBkZXZpY2VTY2FsZUZh
Y3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwor
ICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGluZ1JlY3Quc2l6ZSgp
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFi
dWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExNDksNyArMTE0OSw3IEBAIGludCBJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YShE
dXBsaWMKICAgICAgICAgICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBpbWFnZUVs
ZW1lbnQtPmNhY2hlZEltYWdlKCkpIHsKICAgICAgICAgICAgICAgICBJbWFnZSogaW1hZ2UgPSBj
YWNoZWRJbWFnZS0+aW1hZ2UoKTsKICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2Ug
IT0gJkltYWdlOjpudWxsSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgp
OwogICAgICAgICAgICAgICAgICAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFnZSgq
aW1hZ2UsIEZsb2F0UG9pbnQoMCwgMCkpOwogICAgICAgICAgICAgICAgICAgICBkYXRhVVJMID0g
aW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CiAgICAgICAgICAgICAgICAgfQpA
QCAtMTE2Myw3ICsxMTYzLDcgQEAgaW50IEluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKER1
cGxpYwogCiAgICAgICAgICAgICB1bnNpZ25lZCB2aWRlb1dpZHRoID0gdmlkZW9FbGVtZW50LT52
aWRlb1dpZHRoKCk7CiAgICAgICAgICAgICB1bnNpZ25lZCB2aWRlb0hlaWdodCA9IHZpZGVvRWxl
bWVudC0+dmlkZW9IZWlnaHQoKTsKLSAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZSh2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCksIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwg
UGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZSh2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCksIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgICAgICAgICAgaWYgKGltYWdlQnVmZmVyKSB7CiAg
ICAgICAgICAgICAgICAgdmlkZW9FbGVtZW50LT5wYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChp
bWFnZUJ1ZmZlci0+Y29udGV4dCgpLCBGbG9hdFJlY3QoMCwgMCwgdmlkZW9XaWR0aCwgdmlkZW9I
ZWlnaHQpKTsKICAgICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVS
TCgiaW1hZ2UvcG5nIik7CkBAIC0xMjAwLDcgKzEyMDAsNyBAQCBpbnQgSW5zcGVjdG9yQ2FudmFz
OjppbmRleEZvckRhdGEoRHVwbGljCiAgICAgICAgICAgICBpZiAoYXV0byogY2FjaGVkSW1hZ2Ug
PSBjc3NJbWFnZVZhbHVlLT5pbWFnZSgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byogaW1hZ2Ug
PSBjYWNoZWRJbWFnZS0+aW1hZ2UoKTsKICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UgJiYgaW1h
Z2UgIT0gJkltYWdlOjpudWxsSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdN
b2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdS
QTgpOwogICAgICAgICAgICAgICAgICAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFn
ZSgqaW1hZ2UsIEZsb2F0UG9pbnQoMCwgMCkpOwogICAgICAgICAgICAgICAgICAgICBkYXRhVVJM
ID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CiAgICAgICAgICAgICAgICAg
fQpAQCAtMTQ0MSw3ICsxNDQxLDcgQEAgUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJ
bnNwZWN0bwogewogICAgIGF1dG8mIHRpbGVJbWFnZSA9IGNhbnZhc1BhdHRlcm4ucGF0dGVybigp
LnRpbGVJbWFnZSgpOwogICAgIEZsb2F0UmVjdCByZWN0ID0geyB7IH0sIHRpbGVJbWFnZS5zaXpl
KCkgfTsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0aWxlSW1h
Z2Uuc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZl
ciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGlsZUltYWdlLnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CiAgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5kcmF3TmF0aXZlSW1hZ2Uo
dGlsZUltYWdlLCB0aWxlSW1hZ2Uuc2l6ZSgpLCByZWN0LCByZWN0KTsKIAogICAgIFN0cmluZyBy
ZXBlYXQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyOSw3ICs1
MjksNyBAQCB2b2lkIENocm9tZTo6c2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vCiAgICAgbV9j
bGllbnQuc2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGhpZGRlblVudGlsTW91c2VNb3Zl
cyk7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gQ2hyb21lOjpjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgUmVuZGVy
aW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29uc3QKK1JlZlB0
cjxJbWFnZUJ1ZmZlcj4gQ2hyb21lOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
IHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSBwdXJw
b3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYg
Y29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fY2xpZW50LmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHB1cnBvc2Us
IHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZS5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldEN1cnNvcihjb25zdCBDdXJzb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEN1cnNvckhp
ZGRlblVudGlsTW91c2VNb3Zlcyhib29sKSBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwg
UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJl
bmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiwgUGl4ZWxGb3JtYXQpIGNvbnN0IG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKFdF
QkdMKQogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0
R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3Qgb3ZlcnJpZGU7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzOSw3
ICszMzksNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBEaXNwbGF5UmVmcmVzaE1vbml0
b3JGYWN0b3J5KiBkaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bnVsbHB0cjsgfQogCi0gICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2Us
IGZsb2F0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCB7IHJldHVy
biBudWxscHRyOyB9CisgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2Us
IGZsb2F0LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCkgY29uc3Qg
eyByZXR1cm4gbnVsbHB0cjsgfQogCiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIHZpcnR1YWwgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNu
YXBzaG90dGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNu
YXBzaG90dGluZy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVTbmFwc2hvdHRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDcgQEAg
UmVmUHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVjdFdpdAogICAgIGlmIChvcHRpb25z
ICYgU25hcHNob3RPcHRpb25zUGFpbnRXaXRoSW50ZWdyYWxTY2FsZUZhY3RvcikKICAgICAgICAg
c2NhbGVGYWN0b3IgPSBjZWlsZihzY2FsZUZhY3Rvcik7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgc2NhbGVGYWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1h
Z2VSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgc2NhbGVGYWN0b3Is
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAg
IGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBidWZmZXItPmNvbnRl
eHQoKS50cmFuc2xhdGUoLWltYWdlUmVjdC54KCksIC1pbWFnZVJlY3QueSgpKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcAkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBPcHRpb25hbDxMYWI8ZmxvYXQ+PiBzYW1wbGVD
b2xvcigKICAgICBpZiAoIXNuYXBzaG90KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IHNuYXBzaG90LT5nZXRQaXhlbEJ1ZmZlcih7IEFscGhh
UHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfSwgeyB7IH0sIHNuYXBzaG90LT5sb2dpY2FsU2l6
ZSgpIH0pOworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzbmFwc2hvdC0+Z2V0UGl4ZWxCdWZmZXIo
eyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpC
R1JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfSwgeyB7IH0sIHNuYXBzaG90LT5s
b2dpY2FsU2l6ZSgpIH0pOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGll
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGll
bnQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25z
b2xlQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI2LDcgKzMyNiw3IEBAIHZvaWQgUGFn
ZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjoKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChhdXRvKiBjYWNoZWRJbWFnZSA9IGltYWdlRWxlbWVudC5jYWNoZWRJbWFnZSgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1h
Z2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UgIT0g
JkltYWdlOjpudWxsSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
bmFwc2hvdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdCA9
IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuYXBzaG90LT5jb250ZXh0
KCkuZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMzQzLDcgKzM0Myw3
IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjoKICAgICAgICAgICAg
ICAgICAgICAgICAgIGF1dG8mIHZpZGVvRWxlbWVudCA9IGRvd25jYXN0PEhUTUxWaWRlb0VsZW1l
bnQ+KCpub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHZpZGVvV2lkdGgg
PSB2aWRlb0VsZW1lbnQudmlkZW9XaWR0aCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgdmlkZW9IZWlnaHQgPSB2aWRlb0VsZW1lbnQudmlkZW9IZWlnaHQoKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHNuYXBzaG90ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUo
dmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRT
aXplKHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb0VsZW1lbnQucGFpbnRDdXJyZW50RnJhbWVJ
bkNvbnRleHQoc25hcHNob3QtPmNvbnRleHQoKSwgRmxvYXRSZWN0KDAsIDAsIHZpZGVvV2lkdGgs
IHZpZGVvSGVpZ2h0KSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICNlbmRpZgpAQCAtMzY4LDcg
KzM2OCw3IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjoKICAgICAg
ICAgICAgIHRhcmdldCA9IHBvc3NpYmxlVGFyZ2V0OwogICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRzKCkpKSB7CiAgICAgICAgICAg
ICAgICAgYXV0byBzb3VyY2VTaXplID0gaW1hZ2VEYXRhLT5zaXplKCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNvdXJjZVNpemUs
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvIGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzb3VyY2VTaXplLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KSkgewogICAgICAgICAgICAgICAgICAgICBJbnRSZWN0IHNvdXJjZVJlY3Qo
SW50UG9pbnQoKSwgc291cmNlU2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgIGltYWdlQnVmZmVy
LT5wdXRQaXhlbEJ1ZmZlcihpbWFnZURhdGEtPnBpeGVsQnVmZmVyKCksIHNvdXJjZVJlY3QpOwog
ICAgICAgICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1h
Z2UvcG5nIl9zLCBXVEY6Om51bGxvcHQsIFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
MTAgKzMxLDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cnNvcjsKK2NsYXNz
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIEltYWdlQnVmZmVyOwogCiBlbnVtIGNsYXNz
IFBpeGVsRm9ybWF0IDogdWludDhfdDsKLWVudW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNl
IDogdWludDhfdDsKIGVudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJvb2w7CiBlbnVtIGNsYXNz
IFJlbmRlcmluZ1B1cnBvc2UgOiB1aW50OF90OwogCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIEludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0
IEludFBvaW50JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSW50UmVjdCByb290Vmlld1RvQWNj
ZXNzaWJpbGl0eVNjcmVlbihjb25zdCBJbnRSZWN0JikgY29uc3QgPSAwOwogCi0gICAgdmlydHVh
bCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYs
IFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
RGVzdGluYXRpb25Db2xvclNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
LCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBpeGVsRm9ybWF0KSBjb25zdCA9IDA7CiAK
ICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+
IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYpIGNvbnN0ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2Ny
ZWVuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TY3Jl
ZW4uaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1TY3JlZW4uaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCB0eXBlZGVmIHN0cnVj
dCBDR0NvbG9yU3BhY2UgKkNHQ29sb3JTcGFjCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgRGVzdGluYXRpb25Db2xvclNwYWNlOwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgRmxvYXRT
aXplOwogY2xhc3MgV2lkZ2V0OwpAQCAtNjgsNiArNjksNyBAQCB1c2luZyBJT1JlZ2lzdHJ5R1BV
SUQgPSBpbnQ2NF90OyAvLyBHbG9iCiBpbnQgc2NyZWVuRGVwdGgoV2lkZ2V0Kik7CiBpbnQgc2Ny
ZWVuRGVwdGhQZXJDb21wb25lbnQoV2lkZ2V0Kik7CiBib29sIHNjcmVlbklzTW9ub2Nocm9tZShX
aWRnZXQqKTsKK1dFQkNPUkVfRVhQT1JUIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBzY3JlZW5Db2xv
clNwYWNlKFdpZGdldCogPSBudWxscHRyKTsKIAogYm9vbCBzY3JlZW5IYXNJbnZlcnRlZENvbG9y
cygpOwogCkBAIC0xMDAsMTAgKzEwMiw2IEBAIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2NyZWVuU3Vw
cG9ydHNIaWdoRHkKIGNvbnN0ZXhwciBib29sIHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5n
ZShXaWRnZXQqID0gbnVsbHB0cikgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCi0jaWYgVVNF
KENHKQotV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIHNjcmVlbkNvbG9yU3BhY2UoV2lk
Z2V0KiA9IG51bGxwdHIpOwotI2VuZGlmCi0KIHN0cnVjdCBTY3JlZW5Qcm9wZXJ0aWVzOwogc3Ry
dWN0IFNjcmVlbkRhdGE7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jl
ZW5Qcm9wZXJ0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
ZWVuUHJvcGVydGllcy5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JlZW5Qcm9wZXJ0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNp
bmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogI2luY2x1
ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CkBAIC0zMiwxNCArMzMsMTIgQEAKICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLXR5cGVkZWYg
c3RydWN0IENHQ29sb3JTcGFjZSAqQ0dDb2xvclNwYWNlUmVmOwotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0cnVjdCBTY3JlZW5EYXRhIHsKICAgICBGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxl
UmVjdDsKICAgICBGbG9hdFJlY3Qgc2NyZWVuUmVjdDsKLSAgICBSZXRhaW5QdHI8Q0dDb2xvclNw
YWNlUmVmPiBjb2xvclNwYWNlOworICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNl
IHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsKICAgICBpbnQgc2NyZWVuRGVwdGgg
eyAwIH07CiAgICAgaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50IHsgMCB9OwogICAgIGJvb2wg
c2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yIHsgZmFsc2UgfTsKQEAgLTU2LDEzICs1NSwxMiBA
QCBzdHJ1Y3QgU2NyZWVuRGF0YSB7CiAgICAgZmxvYXQgc2NhbGVGYWN0b3IgeyAxIH07CiAjZW5k
aWYKIAotICAgIGVudW0gY2xhc3MgQ29sb3JTcGFjZVR5cGUgOiB1aW50OF90IHsgTm9uZSwgTmFt
ZSwgRGF0YSB9OwogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8
U2NyZWVuRGF0YT4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKLXR5cGVkZWYgSGFzaE1hcDxQbGF0
Zm9ybURpc3BsYXlJRCwgU2NyZWVuRGF0YT4gU2NyZWVuRGF0YU1hcDsKLSAgICAKK3VzaW5nIFNj
cmVlbkRhdGFNYXAgPSBIYXNoTWFwPFBsYXRmb3JtRGlzcGxheUlELCBTY3JlZW5EYXRhPjsKKwog
c3RydWN0IFNjcmVlblByb3BlcnRpZXMgewogICAgIFBsYXRmb3JtRGlzcGxheUlEIHByaW1hcnlE
aXNwbGF5SUQgeyAwIH07CiAgICAgU2NyZWVuRGF0YU1hcCBzY3JlZW5EYXRhTWFwOwpAQCAtNzQs
OCArNzIsNyBAQCBzdHJ1Y3QgU2NyZWVuUHJvcGVydGllcyB7CiB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPgogdm9pZCBTY3JlZW5Qcm9wZXJ0aWVzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIHsKLSAgICBlbmNvZGVyIDw8IHByaW1hcnlEaXNwbGF5SUQ7Ci0gICAgZW5jb2RlciA8PCBz
Y3JlZW5EYXRhTWFwOworICAgIGVuY29kZXIgPDwgcHJpbWFyeURpc3BsYXlJRCA8PCBzY3JlZW5E
YXRhTWFwOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtOTcsNyArOTQsNyBAQCBP
cHRpb25hbDxTY3JlZW5Qcm9wZXJ0aWVzPiBTY3JlZW5Qcm9wZXJ0CiB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgogdm9pZCBTY3JlZW5EYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
IHsKLSAgICBlbmNvZGVyIDw8IHNjcmVlbkF2YWlsYWJsZVJlY3QgPDwgc2NyZWVuUmVjdCA8PCBz
Y3JlZW5EZXB0aCA8PCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCA8PCBzY3JlZW5TdXBwb3J0c0V4
dGVuZGVkQ29sb3IgPDwgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMgPDwgc2NyZWVuU3VwcG9ydHNI
aWdoRHluYW1pY1JhbmdlOworICAgIGVuY29kZXIgPDwgc2NyZWVuQXZhaWxhYmxlUmVjdCA8PCBz
Y3JlZW5SZWN0IDw8IGNvbG9yU3BhY2UgPDwgc2NyZWVuRGVwdGggPDwgc2NyZWVuRGVwdGhQZXJD
b21wb25lbnQgPDwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yIDw8IHNjcmVlbkhhc0ludmVy
dGVkQ29sb3JzIDw8IHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZTsKIAogI2lmIFBMQVRG
T1JNKE1BQykKICAgICBlbmNvZGVyIDw8IHNjcmVlbklzTW9ub2Nocm9tZSA8PCBkaXNwbGF5TWFz
ayA8PCBncHVJRCA8PCBwcmVmZXJyZWREeW5hbWljUmFuZ2VNb2RlOwpAQCAtMTA2LDI4ICsxMDMs
NiBAQCB2b2lkIFNjcmVlbkRhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyCiAjaWYgUExBVEZP
Uk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGVuY29kZXIgPDwgc2NhbGVGYWN0
b3I7CiAjZW5kaWYKLQotICAgIGlmIChjb2xvclNwYWNlKSB7Ci0gICAgICAgIC8vIFRyeSB0byBl
bmNvZGUgdGhlIG5hbWUuCi0gICAgICAgIGlmIChhdXRvIG5hbWUgPSBhZG9wdENGKENHQ29sb3JT
cGFjZUNvcHlOYW1lKGNvbG9yU3BhY2UuZ2V0KCkpKSkgewotICAgICAgICAgICAgZW5jb2RlciA8
PCBDb2xvclNwYWNlVHlwZTo6TmFtZTsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgU3RyaW5nKG5h
bWUuZ2V0KCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8g
RmFpbGluZyB0aGF0LCBqdXN0IGVuY29kZSB0aGUgSUNDIGRhdGEuCi0gICAgICAgIGlmIChhdXRv
IHByb2ZpbGVEYXRhID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDb3B5SUNDRGF0YShjb2xvclNwYWNl
LmdldCgpKSkpIHsKLSAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBpY2NEYXRhOwotICAgICAg
ICAgICAgaWNjRGF0YS5hcHBlbmQoQ0ZEYXRhR2V0Qnl0ZVB0cihwcm9maWxlRGF0YS5nZXQoKSks
IENGRGF0YUdldExlbmd0aChwcm9maWxlRGF0YS5nZXQoKSkpOwotCi0gICAgICAgICAgICBlbmNv
ZGVyIDw8IENvbG9yU3BhY2VUeXBlOjpEYXRhOwotICAgICAgICAgICAgZW5jb2RlciA8PCBpY2NE
YXRhOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gVGhl
IGNvbG9yIHNwYWNlIHdhcyBudWxsIG9yIGZhaWxlZCB0byBiZSBlbmNvZGVkLgotICAgIGVuY29k
ZXIgPDwgQ29sb3JTcGFjZVR5cGU6Ok5vbmU7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
CkBAIC0xNDMsNiArMTE4LDExIEBAIE9wdGlvbmFsPFNjcmVlbkRhdGE+IFNjcmVlbkRhdGE6OmRl
Y29kZSgKICAgICBpZiAoIXNjcmVlblJlY3QpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAKKyAgICBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IHNjcmVlbkNvbG9yU3BhY2U7
CisgICAgZGVjb2RlciA+PiBzY3JlZW5Db2xvclNwYWNlOworICAgIGlmICghc2NyZWVuQ29sb3JT
cGFjZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwogICAgIE9wdGlvbmFsPGludD4g
c2NyZWVuRGVwdGg7CiAgICAgZGVjb2RlciA+PiBzY3JlZW5EZXB0aDsKICAgICBpZiAoIXNjcmVl
bkRlcHRoKQpAQCAtMTk3LDQxICsxNzcsMTAgQEAgT3B0aW9uYWw8U2NyZWVuRGF0YT4gU2NyZWVu
RGF0YTo6ZGVjb2RlKAogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogI2VuZGlmCiAKLSAg
ICBDb2xvclNwYWNlVHlwZSBkYXRhVHlwZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFU
eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIFJldGFpblB0cjxDR0Nv
bG9yU3BhY2VSZWY+IGNnQ29sb3JTcGFjZTsKLSAgICBzd2l0Y2ggKGRhdGFUeXBlKSB7Ci0gICAg
Y2FzZSBDb2xvclNwYWNlVHlwZTo6Tm9uZToKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDb2xv
clNwYWNlVHlwZTo6TmFtZTogewotICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGNvbG9yU3BhY2VO
YW1lOwotICAgICAgICBkZWNvZGVyID4+IGNvbG9yU3BhY2VOYW1lOwotICAgICAgICBBU1NFUlQo
Y29sb3JTcGFjZU5hbWUpOwotICAgICAgICBpZiAoIWNvbG9yU3BhY2VOYW1lKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgICAgICBjZ0NvbG9yU3BhY2UgPSBhZG9wdENG
KENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGNvbG9yU3BhY2VOYW1lLT5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENvbG9yU3BhY2VU
eXBlOjpEYXRhOiB7Ci0gICAgICAgIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gaWNjRGF0YTsK
LSAgICAgICAgZGVjb2RlciA+PiBpY2NEYXRhOwotICAgICAgICBBU1NFUlQoaWNjRGF0YSk7Ci0g
ICAgICAgIGlmICghaWNjRGF0YSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0K
LSAgICAgICAgYXV0byBjb2xvclNwYWNlRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGljY0RhdGEtPmRhdGEoKSwgaWNjRGF0YS0+c2l6ZSgpKSk7Ci0gICAg
ICAgIGNnQ29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aElDQ0RhdGEo
Y29sb3JTcGFjZURhdGEuZ2V0KCkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIH0KLQog
ICAgIHJldHVybiB7IHsKICAgICAgICAgV1RGTW92ZSgqc2NyZWVuQXZhaWxhYmxlUmVjdCksCiAg
ICAgICAgIFdURk1vdmUoKnNjcmVlblJlY3QpLAotICAgICAgICBXVEZNb3ZlKGNnQ29sb3JTcGFj
ZSksCisgICAgICAgIFdURk1vdmUoKnNjcmVlbkNvbG9yU3BhY2UpLAogICAgICAgICBXVEZNb3Zl
KCpzY3JlZW5EZXB0aCksCiAgICAgICAgIFdURk1vdmUoKnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50
KSwKICAgICAgICAgV1RGTW92ZSgqc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKSwKQEAgLTI1
MCwxNiArMTk5LDMgQEAgT3B0aW9uYWw8U2NyZWVuRGF0YT4gU2NyZWVuRGF0YTo6ZGVjb2RlKAog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0
ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlNjcmVlbkRhdGE6OkNvbG9yU3BhY2VUeXBl
PiB7Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAgICAgICAgV2ViQ29yZTo6U2Ny
ZWVuRGF0YTo6Q29sb3JTcGFjZVR5cGUsCi0gICAgICAgIFdlYkNvcmU6OlNjcmVlbkRhdGE6OkNv
bG9yU3BhY2VUeXBlOjpOb25lLAotICAgICAgICBXZWJDb3JlOjpTY3JlZW5EYXRhOjpDb2xvclNw
YWNlVHlwZTo6TmFtZSwKLSAgICAgICAgV2ViQ29yZTo6U2NyZWVuRGF0YTo6Q29sb3JTcGFjZVR5
cGU6OkRhdGEKLSAgICA+OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NCw3ICsxNjQsNyBAQCBSZWZQdHI8TmF0aXZlSW1h
Z2U+IEJpdG1hcEltYWdlOjpwcmVUcmFuCiAgICAgICAgIHJldHVybiBpbWFnZTsKIAogICAgIGF1
dG8gY29ycmVjdGVkU2l6ZUZsb2F0ID0gY29ycmVjdGVkU2l6ZSA/IEZsb2F0U2l6ZShjb3JyZWN0
ZWRTaXplLnZhbHVlKCkpIDogc2l6ZSgpOwotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShjb3JyZWN0ZWRTaXplRmxvYXQsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
IDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY29ycmVjdGVkU2l6ZUZsb2F0LCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIGltYWdlOwogCkBAIC0zNTIsNyArMzUyLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1Bh
dHRlcm4oR3JhcGhpY3NDbwogICAgIH0KIAogICAgIGlmICghbV9jYWNoZWRJbWFnZSkgewotICAg
ICAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4
cGFuZGVkSW50U2l6ZSh0aWxlUmVjdC5zaXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IsIGN0eHQpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZSh0aWxlUmVjdC5zaXplKCkpLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgY3R4dCk7CiAgICAgICAgIGlmICghYnVmZmVyKQogICAgICAg
ICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3IuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw3ICsxNjgsNyBAQCBDb2xv
ckNvbXBvbmVudHM8ZmxvYXQsIDQ+IENvbG9yOjp0b0NvbG9yCiAgICAgcmV0dXJuIGNvbnZlckNv
bG9yQ29tcG9uZW50cyhpbnB1dENvbG9yU3BhY2UsIGNvbXBvbmVudHMsIG91dHB1dENvbG9yU3Bh
Y2UpOwogfQogCi1Db2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IENvbG9yOjp0b0NvbG9yQ29tcG9u
ZW50c0luQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugb3V0cHV0Q29sb3JTcGFjZSkg
Y29uc3QKK0NvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gQ29sb3I6OnRvQ29sb3JDb21wb25lbnRz
SW5Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgb3V0cHV0Q29sb3JTcGFj
ZSkgY29uc3QKIHsKICAgICBhdXRvIFtpbnB1dENvbG9yU3BhY2UsIGNvbXBvbmVudHNdID0gY29s
b3JTcGFjZUFuZENvbXBvbmVudHMoKTsKICAgICByZXR1cm4gY29udmVyQ29sb3JDb21wb25lbnRz
KGlucHV0Q29sb3JTcGFjZSwgY29tcG9uZW50cywgb3V0cHV0Q29sb3JTcGFjZSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDb2xvckNvbnZlcnNpb24uaCIKICNpbmNs
dWRlICJDb2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKKyNpbmNsdWRl
ICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KQEAgLTEy
MSw3ICsxMjIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8VD4g
dG9TUkdCQUxvc3N5KCkgY29uc3QgeyByZXR1cm4gdG9Db2xvclR5cGVMb3NzeTxTUkdCQTxUPj4o
KTsgfQogCiAgICAgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiB0b0NvbG9yQ29tcG9uZW50c0lu
Q29sb3JTcGFjZShDb2xvclNwYWNlKSBjb25zdDsKLSAgICBDb2xvckNvbXBvbmVudHM8ZmxvYXQs
IDQ+IHRvQ29sb3JDb21wb25lbnRzSW5Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSkg
Y29uc3Q7CisgICAgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiB0b0NvbG9yQ29tcG9uZW50c0lu
Q29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKSBjb25zdDsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQs
IDQ+PiBjb2xvclNwYWNlQW5kQ29tcG9uZW50cygpIGNvbnN0OwogCkBAIC0yNjcsNiArMjY4LDcg
QEAgYm9vbCBvdXRPZkxpbmVDb21wb25lbnRzc0VxdWFsSWdub3JpbmdTZQogCiAjaWYgVVNFKENH
KQogV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJik7
CitXRUJDT1JFX0VYUE9SVCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IHBsYXRmb3JtQ29udmVy
dENvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+LCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKICNlbmRpZgogCiBXRUJDT1JFX0VYUE9SVCBX
VEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgQ29sb3Im
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JDb252ZXJzaW9uLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NyArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbG9yQ29udmVyc2lv
bi5oIgogCisjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJDb2xvclNwYWNlLmgiCisjaW5j
bHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzE4LDE4ICszMjAsMjEgQEAgQ29sb3JDb21w
b25lbnRzPGZsb2F0LCA0PiBjb252ZXJDb2xvckNvbQogICAgIH0pOwogfQogCi1Db2xvckNvbXBv
bmVudHM8ZmxvYXQsIDQ+IGNvbnZlckNvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlIGlucHV0Q29s
b3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBpbnB1dENvbG9yQ29tcG9uZW50cywg
RGVzdGluYXRpb25Db2xvclNwYWNlIG91dHB1dENvbG9yU3BhY2UpCitDb2xvckNvbXBvbmVudHM8
ZmxvYXQsIDQ+IGNvbnZlckNvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlIGlucHV0Q29sb3JTcGFj
ZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBpbnB1dENvbG9yQ29tcG9uZW50cywgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBvdXRwdXRDb2xvclNwYWNlKQogeworI2lmIFVTRShDRykK
KyAgICByZXR1cm4gcGxhdGZvcm1Db252ZXJ0Q29sb3JDb21wb25lbnRzKGlucHV0Q29sb3JTcGFj
ZSwgaW5wdXRDb2xvckNvbXBvbmVudHMsIG91dHB1dENvbG9yU3BhY2UpOworI2Vsc2UKICAgICBy
ZXR1cm4gY2FsbFdpdGhDb2xvclR5cGUoaW5wdXRDb2xvckNvbXBvbmVudHMsIGlucHV0Q29sb3JT
cGFjZSwgW291dHB1dENvbG9yU3BhY2VdIChjb25zdCBhdXRvJiBpbnB1dENvbG9yKSB7Ci0gICAg
ICAgIHN3aXRjaCAob3V0cHV0Q29sb3JTcGFjZSkgewotICAgICAgICBjYXNlIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQjoKKyAgICAgICAgc3dpdGNoIChvdXRwdXRDb2xvclNwYWNlLnBsYXRm
b3JtQ29sb3JTcGFjZSgpKSB7CisgICAgICAgIGNhc2UgUGxhdGZvcm1Db2xvclNwYWNlOjpOYW1l
OjpTUkdCOgogICAgICAgICAgICAgcmV0dXJuIGFzQ29sb3JDb21wb25lbnRzKGNvbnZlcnRDb2xv
cjxTUkdCQTxmbG9hdD4+KGlucHV0Q29sb3IpKTsKICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09M
T1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpMaW5lYXJTUkdCOgorICAgICAgICBjYXNlIFBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZTo6TGlu
ZWFyU1JHQjoKICAgICAgICAgICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhjb252ZXJ0Q29s
b3I8TGluZWFyU1JHQkE8ZmxvYXQ+PihpbnB1dENvbG9yKSk7CiAjZW5kaWYKICNpZiBFTkFCTEUo
REVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExBWV9QMykKLSAgICAgICAgY2FzZSBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMzoKKyAgICAgICAgY2FzZSBQbGF0Zm9ybUNvbG9yU3Bh
Y2U6Ok5hbWU6OkRpc3BsYXlQMzoKICAgICAgICAgICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50
cyhjb252ZXJ0Q29sb3I8RGlzcGxheVAzPGZsb2F0Pj4oaW5wdXRDb2xvcikpOwogI2VuZGlmCiAg
ICAgICAgIH0KQEAgLTMzNyw2ICszNDIsNyBAQCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNv
bnZlckNvbG9yQ29tCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1
cm4gYXNDb2xvckNvbXBvbmVudHMoY29udmVydENvbG9yPFNSR0JBPGZsb2F0Pj4oaW5wdXRDb2xv
cikpOwogICAgIH0pOworI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lv
bi5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvckNvbnZlcnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTUgKzI5LDE2IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlOworCiBl
bnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90OwotZW51bSBjbGFzcyBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgOiB1aW50OF90OwogCiAvLyBDb252ZXJzaW9uIGZ1bmN0aW9uIGZvciB0eXBlZCBj
b2xvcnMuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPdXRwdXQsIHR5cGVuYW1lIElucHV0PiBPdXRwdXQg
Y29udmVydENvbG9yKGNvbnN0IElucHV0JiBjb2xvcik7CiAKIC8vIENvbnZlcnNpb24gZnVuY3Rp
b25zIGZvciByYXcgY29sb3IgY29tcG9uZW50cyB3aXRoIGFzc29jaWF0ZWQgY29sb3Igc3BhY2Vz
LgogQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb252ZXJDb2xvckNvbXBvbmVudHMoQ29sb3JT
cGFjZSBpbnB1dENvbG9yU3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xv
ckNvbXBvbmVudHMsIENvbG9yU3BhY2Ugb3V0cHV0Q29sb3JTcGFjZSk7Ci1Db2xvckNvbXBvbmVu
dHM8ZmxvYXQsIDQ+IGNvbnZlckNvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlIGlucHV0Q29sb3JT
cGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBpbnB1dENvbG9yQ29tcG9uZW50cywgRGVz
dGluYXRpb25Db2xvclNwYWNlIG91dHB1dENvbG9yU3BhY2UpOworQ29sb3JDb21wb25lbnRzPGZs
b2F0LCA0PiBjb252ZXJDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1dENvbG9yU3BhY2Us
IENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVudHMsIGNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYgb3V0cHV0Q29sb3JTcGFjZSk7CiAKIAogLy8gQWxsIGNvbG9y
IHR5cGVzLCBvdGhlciB0aGFuIFhZWkEgb3IgdGhvc2UgaW5oZXJpdGluZyBmcm9tIFJHQlR5cGUs
IG11c3QgaW1wbGVtZW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvclNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvclNwYWNlLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDI0
ICs2NCw0IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEMKICAgICBy
ZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKQotewotICAgIHN3aXRjaCAoY29sb3JTcGFj
ZSkgewotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOgotICAgICAgICB0cyA8
PCAic1JHQiI7Ci0gICAgICAgIGJyZWFrOwotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9T
UEFDRV9MSU5FQVJfU1JHQikKLSAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFy
U1JHQjoKLSAgICAgICAgdHMgPDwgIkxpbmVhclNSR0IiOwotICAgICAgICBicmVhazsKLSNlbmRp
ZgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQotICAgIGNh
c2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0gICAgICAgIHRzIDw8ICJEaXNw
bGF5UDMiOwotICAgICAgICBicmVhazsKLSNlbmRpZgotICAgIH0KLSAgICByZXR1cm4gdHM7Ci19
Ci0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNw
YWNlLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTAgKzI4LDcgQEAKICNpbmNs
dWRlICJDb2xvclR5cGVzLmgiCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYv
RW51bVRyYWl0cy5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLWNsYXNzIFRleHRTdHJlYW07Ci19Cisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Nywx
OCArNDQsNyBAQCBlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90IHsKICAgICBYWVpfRDUw
LAogfTsKIAotZW51bSBjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgOiB1aW50OF90IHsKLSAg
ICBTUkdCCi0jaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQot
ICAgICwgTGluZWFyU1JHQgotI2VuZGlmCi0jaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQ
QUNFX0RJU1BMQVlfUDMpCi0gICAgLCBEaXNwbGF5UDMKLSNlbmRpZgotfTsKLQotV0VCQ09SRV9F
WFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIENvbG9y
U3BhY2UpOwotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6
VGV4dFN0cmVhbSYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSk7CitXRUJDT1JFX0VYUE9SVCBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBDb2xvclNwYWNlKTsKIAogCiB0ZW1wbGF0
ZTx0eXBlbmFtZT4gc3RydWN0IENvbG9yU3BhY2VNYXBwaW5nOwpAQCAtMTAyLDI1ICs4OCw2IEBA
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEZ1bmN0b3I+IGMKICAgICByZXR1cm4gc3Rk
OjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVu
dHM8U1JHQkE8VD4+KGNvbXBvbmVudHMpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgRnVuY3Rvcj4gY29uc3RleHByIGRlY2x0eXBlKGF1dG8pIGNhbGxXaXRoQ29sb3JUeXBl
KGNvbnN0IENvbG9yQ29tcG9uZW50czxULCA0PiYgY29tcG9uZW50cywgRGVzdGluYXRpb25Db2xv
clNwYWNlIGNvbG9yU3BhY2UsIEZ1bmN0b3ImJiBmdW5jdG9yKQotewotICAgIHN3aXRjaCAoY29s
b3JTcGFjZSkgewotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOgotICAgICAg
ICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtl
RnJvbUNvbXBvbmVudHM8U1JHQkE8VD4+KGNvbXBvbmVudHMpKTsKLSNpZiBFTkFCTEUoREVTVElO
QVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OkxpbmVhclNSR0I6Ci0gICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndh
cmQ8RnVuY3Rvcj4oZnVuY3RvciksIG1ha2VGcm9tQ29tcG9uZW50czxMaW5lYXJTUkdCQTxUPj4o
Y29tcG9uZW50cykpOwotI2VuZGlmCi0jaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNF
X0RJU1BMQVlfUDMpCi0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMzoK
LSAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9y
KSwgbWFrZUZyb21Db21wb25lbnRzPERpc3BsYXlQMzxUPj4oY29tcG9uZW50cykpOwotI2VuZGlm
Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHN0ZDo6aW52
b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFrZUZyb21Db21wb25lbnRzPFNS
R0JBPFQ+Pihjb21wb25lbnRzKSk7Ci19Ci0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkBA
IC0xNDEsMTcgKzEwOCw0IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6
Q28KICAgICA+OwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U+IHsKLSAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAot
ICAgICAgICBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UsCi0gICAgICAgIFdlYkNvcmU6
OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xP
Ul9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICAgICAgLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OkxpbmVhclNSR0IKLSNlbmRpZgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9T
UEFDRV9ESVNQTEFZX1AzKQotICAgICAgICAsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6RGlzcGxheVAzCi0jZW5kaWYKLSAgICA+OwotfTsKLQogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29u
Y3JldGVJbWFnZUJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPgogY2xhc3MgQ29uY3JldGVJbWFnZUJ1ZmZlciA6IHB1
YmxpYyBJbWFnZUJ1ZmZlciB7CiBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW1hZ2VC
dWZmZXJUeXBlID0gQ29uY3JldGVJbWFnZUJ1ZmZlciwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgot
ICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXJUeXBlPiBjcmVhdGUoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdp
bmRvdywgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQorICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VC
dWZmZXJUeXBlPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3Jt
YXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEFyZ3VtZW50cyYm
Li4uIGFyZ3VtZW50cykKICAgICB7CiAgICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IEltYWdlQnVm
ZmVyQmFja2VuZDo6UGFyYW1ldGVycyB7IHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFj
ZSwgcGl4ZWxGb3JtYXQgfTsKICAgICAgICAgYXV0byBiYWNrZW5kID0gQmFja2VuZFR5cGU6OmNy
ZWF0ZShwYXJhbWV0ZXJzLCBob3N0V2luZG93KTsKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEltYWdlQnVmZmVyVHlwZSA9IENvbmNyZXRlSW1hZ2VCdWZm
ZXIsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KICAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVy
VHlwZT4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgewotICAgICAgICBhdXRv
IHBhcmFtZXRlcnMgPSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMgeyBzaXplLCAxLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCB9OworICAgICAg
ICBhdXRvIHBhcmFtZXRlcnMgPSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMgeyBzaXpl
LCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4IH07
CiAgICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUocGFyYW1ldGVycywg
Y29udGV4dCk7CiAgICAgICAgIGlmICghYmFja2VuZCkKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMTk1LDcgKzE5NSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgfQogICAgIH0KIAot
ICAgIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc3JjQ29s
b3JTcGFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGRlc3RDb2xvclNwYWNlKSBvdmVycmlkZQor
ICAgIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
IHNyY0NvbG9yU3BhY2UsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgZGVzdENvbG9yU3Bh
Y2UpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJh
Y2tlbmRDcmVhdGVkKCkpIHsKICAgICAgICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHQoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
cm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBAIEltYWdlRHJhd1Jlc3VsdCBDcm9zc2ZhZGVH
ZW5lcmF0ZWRJbWFnZToKIAogdm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRl
cm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJh
bnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBhdXRvIGltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIGNvbnRleHQucmVuZGVyaW5nTW9k
ZSgpLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBjb250
ZXh0LnJlbmRlcmluZ01vZGUoKSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBp
eGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJu
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNv
bG9yU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDExNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKKworI2luY2x1ZGUgPHd0Zi90
ZXh0L1RleHRTdHJlYW0uaD4KKworI2lmIFVTRShDRykKKyNpbmNsdWRlICJDb2xvclNwYWNlQ0cu
aCIKKyNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgorI2VuZGlmCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworRGVzdGluYXRpb25Db2xvclNwYWNlIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpCit7CisjaWYgVVNFKENHKQorICAgIHJldHVybiBEZXN0aW5hdGlvbkNv
bG9yU3BhY2Uoc1JHQkNvbG9yU3BhY2VSZWYoKSk7CisjZWxzZQorICAgIHJldHVybiBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UoUGxhdGZvcm1Db2xvclNwYWNlOjpOYW1lOjpTUkdCKTsKKyNlbmRpZgor
fQorCisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQorRGVz
dGluYXRpb25Db2xvclNwYWNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigpCit7
CisjaWYgVVNFKENHKQorICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UobGluZWFyU1JH
QkNvbG9yU3BhY2VSZWYoKSk7CisjZWxzZQorICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UoUGxhdGZvcm1Db2xvclNwYWNlOjpOYW1lOjpMaW5lYXJTUkdCKTsKKyNlbmRpZgorfQorI2Vu
ZGlmCisKKyNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExBWV9QMykKK0Rl
c3RpbmF0aW9uQ29sb3JTcGFjZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMygpCit7
CisjaWYgVVNFKENHKQorICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UoZGlzcGxheVAz
Q29sb3JTcGFjZVJlZigpKTsKKyNlbHNlCisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZShQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU6OkRpc3BsYXlQMyk7CisjZW5kaWYKK30KKyNlbmRp
ZgorCitEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZShQbGF0Zm9y
bUNvbG9yU3BhY2UgcGxhdGZvcm1Db2xvclNwYWNlKQorICAgIDogbV9wbGF0Zm9ybUNvbG9yU3Bh
Y2UgeyBXVEZNb3ZlKHBsYXRmb3JtQ29sb3JTcGFjZSkgfQoreworI2lmIFVTRShDRykKKyAgICBB
U1NFUlQobV9wbGF0Zm9ybUNvbG9yU3BhY2UpOworI2VuZGlmCit9CisKK2Jvb2wgb3BlcmF0b3I9
PShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGEsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgYikKK3sKKyAgICBpZiAoYS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSA9PSBiLnBsYXRmb3Jt
Q29sb3JTcGFjZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworI2lmIFVTRShDRykKKyAgICBy
ZXR1cm4gQ0dDb2xvclNwYWNlRXF1YWxUb0NvbG9yU3BhY2UoYS5wbGF0Zm9ybUNvbG9yU3BhY2Uo
KSwgYi5wbGF0Zm9ybUNvbG9yU3BhY2UoKSk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNl
bmRpZgorfQorCitib29sIG9wZXJhdG9yIT0oY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBh
LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGIpCit7CisgICAgcmV0dXJuICEoYSA9PSBi
KTsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQoreworICAgIGlmIChjb2xvclNwYWNlID09
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKQorICAgICAgICB0cyA8PCAic1JHQiI7Cisj
aWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQorICAgIGVsc2Ug
aWYgKGNvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCkpCisg
ICAgICAgIHRzIDw8ICJMaW5lYXJTUkdCIjsKKyNlbmRpZgorI2lmIEVOQUJMRShERVNUSU5BVElP
Tl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQorICAgIGVsc2UgaWYgKGNvbG9yU3BhY2UgPT0gRGVz
dGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDMoKSkKKyAgICAgICAgdHMgPDwgIkRpc3BsYXlQ
MyI7CisjZW5kaWYKKyNpZiBVU0UoQ0cpCisgICAgZWxzZSBpZiAoYXV0byBkZXNjcmlwdGlvbiA9
IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ29weUlDQ1Byb2ZpbGVEZXNjcmlwdGlvbihjb2xvclNwYWNl
LnBsYXRmb3JtQ29sb3JTcGFjZSgpKSkpCisgICAgICAgIHRzIDw8IFN0cmluZyhkZXNjcmlwdGlv
bi5nZXQoKSk7CisjZW5kaWYKKworICAgIHJldHVybiB0czsKK30KKworfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xv
clNwYWNlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUGxhdGZvcm1Db2xvclNw
YWNlLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ug
eworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UgU1JHQigpOworI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JH
QikKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRGVzdGluYXRpb25Db2xvclNwYWNlIExpbmVh
clNSR0IoKTsKKyNlbmRpZgorI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQ
TEFZX1AzKQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ug
RGlzcGxheVAzKCk7CisjZW5kaWYKKworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZShQbGF0Zm9ybUNvbG9yU3BhY2UpOworICAgIFBsYXRmb3JtQ29sb3JT
cGFjZVZhbHVlIHBsYXRmb3JtQ29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1D
b2xvclNwYWNlLmdldCgpOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVu
Y29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGlj
IE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gZGVjb2RlKERlY29kZXImKTsKKworcHJp
dmF0ZToKKyAgICBQbGF0Zm9ybUNvbG9yU3BhY2UgbV9wbGF0Zm9ybUNvbG9yU3BhY2U7Cit9Owor
CitXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CitXRUJDT1JFX0VYUE9SVCBib29s
IG9wZXJhdG9yIT0oY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJik7CisKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpOworCit0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3BsYXRmb3JtQ29sb3JTcGFjZTsK
K30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNw
YWNlPiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorewor
ICAgIE9wdGlvbmFsPFBsYXRmb3JtQ29sb3JTcGFjZT4gcGxhdGZvcm1Db2xvclNwYWNlOworICAg
IGRlY29kZXIgPj4gcGxhdGZvcm1Db2xvclNwYWNlOworICAgIGlmICghcGxhdGZvcm1Db2xvclNw
YWNlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIERlc3RpbmF0
aW9uQ29sb3JTcGFjZSB7IFdURk1vdmUoKnBsYXRmb3JtQ29sb3JTcGFjZSkgfTsKK30KKworfQor
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVu
dEltYWdlLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcg
QEAgdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljcwogICAgIHVuc2lnbmVk
IGdlbmVyYXRvckhhc2ggPSBtX2dyYWRpZW50LT5oYXNoKCk7CiAKICAgICBpZiAoIW1fY2FjaGVk
SW1hZ2UgfHwgbV9jYWNoZWRHZW5lcmF0b3JIYXNoICE9IGdlbmVyYXRvckhhc2ggfHwgbV9jYWNo
ZWRBZGp1c3RlZFNpemUgIT0gYWRqdXN0ZWRTaXplIHx8ICFhcmVFc3NlbnRpYWxseUVxdWFsKGRl
c3RDb250ZXh0LnNjYWxlRmFjdG9yKCksIG1fY2FjaGVkU2NhbGVGYWN0b3IpKSB7Ci0gICAgICAg
IGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihh
ZGp1c3RlZFNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgZGVzdENvbnRleHQpOwor
ICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVC
dWZmZXIoYWRqdXN0ZWRTaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgZGVzdENv
bnRleHQpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4Myw3
ICs4ODMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dFJvdW5kZWRSZWN0CiAgICAg
Y2xpcE91dChwYXRoKTsKIH0KIAotR3JhcGhpY3NDb250ZXh0OjpDbGlwVG9EcmF3aW5nQ29tbWFu
ZHNSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIEZ1
bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKQorR3JhcGhp
Y3NDb250ZXh0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgR3JhcGhpY3NDb250ZXh0Ojpj
bGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNz
Q29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxl
ZCgpKQogICAgICAgICByZXR1cm4gQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0OjpTdWNjZXNz
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw4
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUg
IkRhc2hBcnJheS5oIgorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1
ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NUeXBlcy5oIgpAQCAtNDEwLDcgKzQxMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsaXBU
b0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKICAgICBlbnVt
IGNsYXNzIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCA6IGJvb2wgeyBTdWNjZXNzLCBGYWls
ZWRUb0NyZWF0ZUltYWdlQnVmZmVyIH07Ci0gICAgQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0
IGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpOwor
ICAgIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29u
c3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwg
RnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJik7CiAgICAgCiAgICAgSW50UmVjdCBj
bGlwQm91bmRzKCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwu
aAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSA9IDA7CiAgICAgdmlydHVhbCBJ
bnRSZWN0IGNsaXBCb3VuZHMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsaXBUb0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVz
dGluYXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmIGRy
YXdpbmdGdW5jdGlvbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFu
ZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBkcmF3aW5nRnVuY3Rpb24p
ID0gMDsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgdmlydHVhbCB2b2lkIHBhaW50RnJhbWVGb3JN
ZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgY2FuUGFpbnRGcmFtZUZvck1lZGlhKGNvbnN0IE1lZGlhUGxheWVyJikg
Y29uc3QgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICsz
Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBjb25zdCBmbG9hdCBNYXhDbGFtcGVk
TGVuZ3RoID0gNDA5NjsKIHN0YXRpYyBjb25zdCBmbG9hdCBNYXhDbGFtcGVkQXJlYSA9IE1heENs
YW1wZWRMZW5ndGggKiBNYXhDbGFtcGVkTGVuZ3RoOwogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IElt
YWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJl
bmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0IHNob3VsZFVzZURpc3BsYXlMaXN0LCBS
ZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRp
b25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBI
b3N0V2luZG93KiBob3N0V2luZG93KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2Rl
LCBTaG91bGRVc2VEaXNwbGF5TGlzdCBzaG91bGRVc2VEaXNwbGF5TGlzdCwgUmVuZGVyaW5nUHVy
cG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RX
aW5kb3cqIGhvc3RXaW5kb3cpCiB7CiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZl
cjsKICAgICAKQEAgLTU5LDcgKzU5LDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKAogICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0KIAotUmVmUHRyPEltYWdlQnVm
ZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5n
TW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdp
bmRvdyogaG9zdFdpbmRvdykKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3Bh
Y2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93
KQogewogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7CiAgICAgCkBAIC05NSw3
ICs5NSw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUMKICAgICBy
ZXR1cm4gaW1hZ2VCdWZmZXI7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6
OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQor
UmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JT
cGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIGlmIChzaXplLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMTEsNyArMTExLDcgQEAgUmVm
UHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQwogICAgIHJldHVybiBpbWFnZUJ1
ZmZlcjsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0
aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCkKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KQogewogICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIGNv
bnRleHQucmVuZGVyaW5nTW9kZSgpLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CiB9CkBAIC0xNjcsNyArMTY3LDcgQEAgSW50U2l6ZSBJbWFnZUJ1ZmZl
cjo6Y29tcGF0aWJsZUJ1ZmZlclNpegogICAgIHJldHVybiBleHBhbmRlZEludFNpemUoc2l6ZSAq
IGNvbnRleHQuc2NhbGVGYWN0b3IoKSk7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VC
dWZmZXI6OmNvcHlSZWN0VG9CdWZmZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQor
UmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcihjb25zdCBG
bG9hdFJlY3QmIHJlY3QsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIGlmIChyZWN0LmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ1LDEzICs0NSwxMyBAQCBzdHJ1Y3QgSXRlbUJ1ZmZlckhhbmRsZTsKIGNsYXNzIEltYWdl
QnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlQnVmZmVyPiwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPEltYWdlQnVmZmVyPiB7CiBwdWJsaWM6CiAgICAgLy8gV2lsbCByZXR1
cm4gYSBudWxsIHBvaW50ZXIgb24gYWxsb2NhdGlvbiBmYWlsdXJlLgotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBS
ZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdCwgUmVuZGVyaW5nUHVycG9zZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0LCBj
b25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2Rl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUGl4ZWxGb3Jt
YXQsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmlu
Z01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBpeGVsRm9ybWF0LCBj
b25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2Rl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBp
eGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOwogCiAgICAgLy8gQ3JlYXRl
IGFuIGltYWdlIGJ1ZmZlciBjb21wYXRpYmxlIHdpdGggdGhlIGNvbnRleHQsIHdpdGggc3VpdGFi
bGUgcmVzb2x1dGlvbiBmb3IgZHJhd2luZyBpbnRvIHRoZSBidWZmZXIgYW5kIHRoZW4gaW50byB0
aGlzIGNvbnRleHQuCiAgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0
aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKLSAg
ICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0
IEZsb2F0U2l6ZSYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0
Jik7Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cihjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CisgICAgc3RhdGljIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKyAgICBzdGF0
aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0
U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgYXJl
IHVzZWQgd2hlbiBjbGFtcGluZyB0aGUgSW1hZ2VCdWZmZXIgd2hpY2ggaXMgY3JlYXRlZCBmb3Ig
ZmlsdGVyLCBtYXNrZXIgb3IgY2xpcHBlci4KICAgICBzdGF0aWMgYm9vbCBzaXplTmVlZHNDbGFt
cGluZyhjb25zdCBGbG9hdFNpemUmKTsKQEAgLTEwNyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJh
Y2tpbmdTdG9yZSwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykg
Y29uc3QgPSAwOwogCiAgICAgLy8gQ3JlYXRlIGFuIGltYWdlIGJ1ZmZlciBjb21wYXRpYmxlIHdp
dGggdGhlIGNvbnRleHQgYW5kIGNvcHkgcmVjdCBmcm9tIHRoaXMgYnVmZmVyIGludG8gdGhpcyBu
ZXcgb25lLgotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY29weVJlY3RUb0J1ZmZlcihjb25zdCBG
bG9hdFJlY3QmLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
OworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY29weVJlY3RUb0J1ZmZlcihjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25zdCBHcmFwaGljc0NvbnRleHQm
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAw
LCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9h
dFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgPSAwOwpA
QCAtMTIwLDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xpcFRvTWFzayhH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KSA9IDA7CiAKICAgICB2
aXJ0dWFsIHZvaWQgY29udmVydFRvTHVtaW5hbmNlTWFzaygpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgdHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc3JjQ29sb3JTcGFj
ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGRzdENvbG9yU3BhY2UpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHNy
Y0NvbG9yU3BhY2UsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgZHN0Q29sb3JTcGFjZSkg
PSAwOwogCiAgICAgdmlydHVhbCBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IFdURjo6bnVsbG9wdCwgUHJlc2VydmVSZXNv
bHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
VmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxk
b3VibGU+IHF1YWxpdHkgPSBXVEY6Om51bGxvcHQpIGNvbnN0ID0gMDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5k
LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsOCBA
QCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVyQmFja2VuZChjCiB7CiB9CiAKK0ltYWdl
QnVmZmVyQmFja2VuZDo6fkltYWdlQnVmZmVyQmFja2VuZCgpID0gZGVmYXVsdDsKKwogUmVmUHRy
PE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQog
ewogICAgIHJldHVybiBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwpAQCAt
MTE0LDE1ICsxMTYsMTcgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEltYWdlQnVmZmVyQmFja2Vu
ZAogICAgIGlmIChkZXN0aW5hdGlvblJlY3Quc2l6ZSgpICE9IHNvdXJjZVJlY3RTY2FsZWQuc2l6
ZSgpKQogICAgICAgICBwaXhlbEJ1ZmZlci0+ZGF0YSgpLnplcm9GaWxsKCk7CiAKLSAgICBDb25z
dFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgc291cmNlOwotICAgIHNvdXJjZS5mb3JtYXQgPSB7
IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIHBpeGVsRm9ybWF0KCksIGNv
bG9yU3BhY2UoKSB9OwotICAgIHNvdXJjZS5ieXRlc1BlclJvdyA9IGJ5dGVzUGVyUm93KCk7Ci0g
ICAgc291cmNlLnJvd3MgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhKSArIHNvdXJj
ZVJlY3RDbGlwcGVkLnkoKSAqIHNvdXJjZS5ieXRlc1BlclJvdyArIHNvdXJjZVJlY3RDbGlwcGVk
LngoKSAqIDQ7CisgICAgQ29uc3RQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IHNvdXJjZSB7Cisg
ICAgICAgIHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgcGl4ZWxGb3Jt
YXQoKSwgY29sb3JTcGFjZSgpIH0sCisgICAgICAgIGJ5dGVzUGVyUm93KCksCisgICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEpICsgc291cmNlUmVjdENsaXBwZWQueSgpICog
c291cmNlLmJ5dGVzUGVyUm93ICsgc291cmNlUmVjdENsaXBwZWQueCgpICogNAorICAgIH07CiAg
ICAgCi0gICAgUGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBkZXN0aW5hdGlvbjsKLSAgICBkZXN0
aW5hdGlvbi5mb3JtYXQgPSBkZXN0aW5hdGlvbkZvcm1hdDsKLSAgICBkZXN0aW5hdGlvbi5ieXRl
c1BlclJvdyA9IDQgKiBzb3VyY2VSZWN0U2NhbGVkLndpZHRoKCk7Ci0gICAgZGVzdGluYXRpb24u
cm93cyA9IHBpeGVsQnVmZmVyLT5kYXRhKCkuZGF0YSgpICsgZGVzdGluYXRpb25SZWN0LnkoKSAq
IGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ICsgZGVzdGluYXRpb25SZWN0LngoKSAqIDQ7CisgICAg
UGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBkZXN0aW5hdGlvbiB7CisgICAgICAgIGRlc3RpbmF0
aW9uRm9ybWF0LAorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oNCAqIHNvdXJjZVJlY3RT
Y2FsZWQud2lkdGgoKSksCisgICAgICAgIHBpeGVsQnVmZmVyLT5kYXRhKCkuZGF0YSgpICsgZGVz
dGluYXRpb25SZWN0LnkoKSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ICsgZGVzdGluYXRpb25S
ZWN0LngoKSAqIDQKKyAgICB9OwogCiAgICAgY29udmVydEltYWdlUGl4ZWxzKHNvdXJjZSwgZGVz
dGluYXRpb24sIGRlc3RpbmF0aW9uUmVjdC5zaXplKCkpOwogCkBAIC0xNDcsMTUgKzE1MSwxNyBA
QCB2b2lkIEltYWdlQnVmZmVyQmFja2VuZDo6cHV0UGl4ZWxCdWZmZXIoCiAgICAgZGVzdGluYXRp
b25SZWN0LmludGVyc2VjdChiYWNrZW5kUmVjdCgpKTsKICAgICBzb3VyY2VSZWN0Q2xpcHBlZC5z
ZXRTaXplKGRlc3RpbmF0aW9uUmVjdC5zaXplKCkpOwogCi0gICAgQ29uc3RQaXhlbEJ1ZmZlckNv
bnZlcnNpb25WaWV3IHNvdXJjZTsKLSAgICBzb3VyY2UuZm9ybWF0ID0gc291cmNlUGl4ZWxCdWZm
ZXIuZm9ybWF0KCk7Ci0gICAgc291cmNlLmJ5dGVzUGVyUm93ID0gNCAqIHNvdXJjZVBpeGVsQnVm
ZmVyLnNpemUoKS53aWR0aCgpOwotICAgIHNvdXJjZS5yb3dzID0gc291cmNlUGl4ZWxCdWZmZXIu
ZGF0YSgpLmRhdGEoKSArIHNvdXJjZVJlY3RDbGlwcGVkLnkoKSAqIHNvdXJjZS5ieXRlc1BlclJv
dyArIHNvdXJjZVJlY3RDbGlwcGVkLngoKSAqIDQ7Ci0KLSAgICBQaXhlbEJ1ZmZlckNvbnZlcnNp
b25WaWV3IGRlc3RpbmF0aW9uOwotICAgIGRlc3RpbmF0aW9uLmZvcm1hdCA9IHsgZGVzdGluYXRp
b25BbHBoYUZvcm1hdCwgcGl4ZWxGb3JtYXQoKSwgY29sb3JTcGFjZSgpIH07Ci0gICAgZGVzdGlu
YXRpb24uYnl0ZXNQZXJSb3cgPSBieXRlc1BlclJvdygpOwotICAgIGRlc3RpbmF0aW9uLnJvd3Mg
PSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhKSArIGRlc3RpbmF0aW9uUmVjdC55KCkg
KiBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyArIGRlc3RpbmF0aW9uUmVjdC54KCkgKiA0OworICAg
IENvbnN0UGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBzb3VyY2UgeworICAgICAgICBzb3VyY2VQ
aXhlbEJ1ZmZlci5mb3JtYXQoKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDQgKiBz
b3VyY2VQaXhlbEJ1ZmZlci5zaXplKCkud2lkdGgoKSksCisgICAgICAgIHNvdXJjZVBpeGVsQnVm
ZmVyLmRhdGEoKS5kYXRhKCkgKyBzb3VyY2VSZWN0Q2xpcHBlZC55KCkgKiBzb3VyY2UuYnl0ZXNQ
ZXJSb3cgKyBzb3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0CisgICAgfTsKKworICAgIFBpeGVsQnVm
ZmVyQ29udmVyc2lvblZpZXcgZGVzdGluYXRpb24geworICAgICAgICB7IGRlc3RpbmF0aW9uQWxw
aGFGb3JtYXQsIHBpeGVsRm9ybWF0KCksIGNvbG9yU3BhY2UoKSB9LAorICAgICAgICBieXRlc1Bl
clJvdygpLAorICAgICAgICByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhKSArIGRlc3Rp
bmF0aW9uUmVjdC55KCkgKiBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyArIGRlc3RpbmF0aW9uUmVj
dC54KCkgKiA0CisgICAgfTsKIAogICAgIGNvbnZlcnRJbWFnZVBpeGVscyhzb3VyY2UsIGRlc3Rp
bmF0aW9uLCBkZXN0aW5hdGlvblJlY3Quc2l6ZSgpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNv
bG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5
cGVzR0wuaCIKICNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgpAQCAtNzgsNyArNzgs
NyBAQCBwdWJsaWM6CiAgICAgICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0OwogICAgIH07CiAK
LSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbWFnZUJ1ZmZlckJhY2tlbmQoKSA9IGRlZmF1
bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SW1hZ2VCdWZmZXJCYWNrZW5kKCk7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSW50U2l6ZSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShj
b25zdCBQYXJhbWV0ZXJzJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHNpemVfdCBjYWxj
dWxhdGVNZW1vcnlDb3N0KGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCB1bnNpZ25lZCBieXRl
c1BlclJvdyk7CkBAIC0xMDIsNyArMTAyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBj
bGlwVG9NYXNrKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIHsgfQogCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBjb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCk7Ci0gICAgdmlydHVh
bCB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNl
KGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYpIHsgfQogCiAgICAgdmlydHVhbCBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkgY29uc3QgPSAwOwpAQCAtMTQwLDcg
KzE0MCw3IEBAIHByb3RlY3RlZDoKIAogICAgIEludFNpemUgbG9naWNhbFNpemUoKSBjb25zdCB7
IHJldHVybiBJbnRTaXplKG1fcGFyYW1ldGVycy5sb2dpY2FsU2l6ZSk7IH0KICAgICBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMucmVzb2x1dGlvblNj
YWxlOyB9Ci0gICAgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJl
dHVybiBtX3BhcmFtZXRlcnMuY29sb3JTcGFjZTsgfQorICAgIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5jb2xvclNw
YWNlOyB9CiAgICAgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX3Bh
cmFtZXRlcnMucGl4ZWxGb3JtYXQ7IH0KIAogICAgIEludFJlY3QgbG9naWNhbFJlY3QoKSBjb25z
dCB7IHJldHVybiBJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIGxvZ2ljYWxTaXplKCkpOyB9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5o
CShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
aXhlbEJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIkFscGhhUHJlbXVsdGlwbGljYXRpb24uaCIKLSNpbmNsdWRlICJDb2xv
clNwYWNlLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAi
SW50U2l6ZS5oIgogI2luY2x1ZGUgIlBpeGVsQnVmZmVyRm9ybWF0LmgiCiAjaW5jbHVkZSAiUGl4
ZWxGb3JtYXQuaCIKQEAgLTg3LDE5ICs4NywyMSBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIFBpeGVsQnVmZmVyCiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPFBpeGVs
QnVmZmVyPiBQaXhlbEJ1ZmZlcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUGl4
ZWxCdWZmZXJGb3JtYXQgZm9ybWF0OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZm9ybWF0KSkK
KyAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlckZvcm1hdD4gZm9ybWF0OworICAgIGRlY29kZXIgPj4g
Zm9ybWF0OworICAgIGlmICghZm9ybWF0KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
CiAgICAgLy8gRklYTUU6IFN1cHBvcnQgbm9uLTggYml0IGZvcm1hdHMuCi0gICAgaWYgKCEoZm9y
bWF0LnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCB8fCBmb3JtYXQucGl4ZWxGb3Jt
YXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KSkKKyAgICBpZiAoIShmb3JtYXQtPnBpeGVsRm9ybWF0
ID09IFBpeGVsRm9ybWF0OjpSR0JBOCB8fCBmb3JtYXQtPnBpeGVsRm9ybWF0ID09IFBpeGVsRm9y
bWF0OjpCR1JBOCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBJbnRTaXpl
IHNpemU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaXplKSkKKyAgICBPcHRpb25hbDxJbnRT
aXplPiBzaXplOworICAgIGRlY29kZXIgPj4gc2l6ZTsKKyAgICBpZiAoIXNpemUpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBhdXRvIGNvbXB1dGVkQnVmZmVyU2l6ZSA9IFBp
eGVsQnVmZmVyOjpjb21wdXRlQnVmZmVyU2l6ZShmb3JtYXQsIHNpemUpOworICAgIGF1dG8gY29t
cHV0ZWRCdWZmZXJTaXplID0gUGl4ZWxCdWZmZXI6OmNvbXB1dGVCdWZmZXJTaXplKCpmb3JtYXQs
ICpzaXplKTsKICAgICBpZiAoY29tcHV0ZWRCdWZmZXJTaXplLmhhc092ZXJmbG93ZWQoKSkKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIApAQCAtMTA3LDcgKzEwOSw3IEBAIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPFBpeGVsQnUKICAgICBpZiAoIWRlY29kZXIudGVtcGxh
dGUgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjx1aW50OF90PihidWZmZXJTaXplKSkKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIGF1dG8gcmVzdWx0ID0gUGl4ZWxCdWZm
ZXI6OnRyeUNyZWF0ZUZvckRlY29kaW5nKGZvcm1hdCwgc2l6ZSwgYnVmZmVyU2l6ZSk7CisgICAg
YXV0byByZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlRm9yRGVjb2RpbmcoV1RGTW92ZSgq
Zm9ybWF0KSwgKnNpemUsIGJ1ZmZlclNpemUpOwogICAgIGlmICghcmVzdWx0KQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QaXhlbEJ1ZmZlckNvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVyc2lvbi5jcHAJKHJldmlzaW9u
IDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVy
Q29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEyICsyNywxMSBAQAogI2luY2x1
ZGUgIlBpeGVsQnVmZmVyQ29udmVyc2lvbi5oIgogCiAjaW5jbHVkZSAiQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbi5oIgotI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlv
bkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiUGl4ZWxGb3Jt
YXQuaCIKIAogI2lmIFVTRShBQ0NFTEVSQVRFKSAmJiBVU0UoQ0cpCi0jaW5jbHVkZSAiQ29sb3JT
cGFjZUNHLmgiCiAjaW5jbHVkZSA8QWNjZWxlcmF0ZS9BY2NlbGVyYXRlLmg+CiAjZW5kaWYKIApA
QCAtNzEsNyArNzAsNyBAQCBzdGF0aWMgaW5saW5lIHZJbWFnZV9DR0ltYWdlRm9ybWF0IG1ha2VW
CiAKICAgICByZXN1bHQuYml0c1BlckNvbXBvbmVudCA9IGJpdHNQZXJDb21wb25lbnQ7CiAgICAg
cmVzdWx0LmJpdHNQZXJQaXhlbCA9IGJpdHNQZXJQaXhlbDsKLSAgICByZXN1bHQuY29sb3JTcGFj
ZSA9IGNhY2hlZENHQ29sb3JTcGFjZShmb3JtYXQuY29sb3JTcGFjZSk7CisgICAgcmVzdWx0LmNv
bG9yU3BhY2UgPSBmb3JtYXQuY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKTsKICAgICBy
ZXN1bHQuYml0bWFwSW5mbyA9IGJpdG1hcEluZm87CiAgICAgcmVzdWx0LnZlcnNpb24gPSAwOwog
ICAgIHJlc3VsdC5kZWNvZGUgPSBudWxscHRyOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5oCShyZXZpc2lvbiAyNzc5
MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1h
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIkFscGhhUHJlbXVsdGlwbGljYXRpb24uaCIKLSNpbmNsdWRlICJDb2xvclNwYWNlLmgi
CisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiUGl4ZWxGb3Jt
YXQuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5o
PgpAQCAtNTEsMTkgKzUxLDIyIEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgUGl4ZWxC
dWZmZXIKIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8UGl4ZWxCdWZmZXJGb3Jt
YXQ+IFBpeGVsQnVmZmVyRm9ybWF0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBB
bHBoYVByZW11bHRpcGxpY2F0aW9uIGFscGhhRm9ybWF0OwotICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoYWxwaGFGb3JtYXQpKQorICAgIE9wdGlvbmFsPEFscGhhUHJlbXVsdGlwbGljYXRpb24+IGFs
cGhhRm9ybWF0OworICAgIGRlY29kZXIgPj4gYWxwaGFGb3JtYXQ7CisgICAgaWYgKCFhbHBoYUZv
cm1hdCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIFBpeGVsRm9ybWF0IHBp
eGVsRm9ybWF0OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGl4ZWxGb3JtYXQpKQorICAgIE9w
dGlvbmFsPFBpeGVsRm9ybWF0PiBwaXhlbEZvcm1hdDsKKyAgICBkZWNvZGVyID4+IHBpeGVsRm9y
bWF0OworICAgIGlmICghcGl4ZWxGb3JtYXQpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAKLSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZTsKLSAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGNvbG9yU3BhY2UpKQorICAgIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFj
ZT4gY29sb3JTcGFjZTsKKyAgICBkZWNvZGVyID4+IGNvbG9yU3BhY2U7CisgICAgaWYgKCFjb2xv
clNwYWNlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHsgeyBh
bHBoYUZvcm1hdCwgcGl4ZWxGb3JtYXQsIGNvbG9yU3BhY2UgfSB9OworICAgIHJldHVybiB7IHsg
V1RGTW92ZSgqYWxwaGFGb3JtYXQpLCBXVEZNb3ZlKCpwaXhlbEZvcm1hdCksIFdURk1vdmUoKmNv
bG9yU3BhY2UpIH0gfTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGxhdGZvcm1Db2xvclNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1Db2xvclNwYWNlLmgJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1Db2xvclNwYWNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgVVNFKENHKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KK3R5cGVkZWYgc3RydWN0
IENHQ29sb3JTcGFjZSogQ0dDb2xvclNwYWNlUmVmOworI2Vsc2UKKyNpbmNsdWRlIDx3dGYvRW51
bVRyYWl0cy5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIFVTRShDRykK
KwordXNpbmcgUGxhdGZvcm1Db2xvclNwYWNlID0gUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj47
Cit1c2luZyBQbGF0Zm9ybUNvbG9yU3BhY2VWYWx1ZSA9IENHQ29sb3JTcGFjZVJlZjsKKworI2Vs
c2UKKworc3RydWN0IFBsYXRmb3JtQ29sb3JTcGFjZSB7CisgICAgZW51bSBjbGFzcyBOYW1lIHsK
KyAgICAgICAgU1JHQgorI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJf
U1JHQikKKyAgICAgICAgLCBMaW5lYXJTUkdCCisjZW5kaWYKKyNpZiBFTkFCTEUoREVTVElOQVRJ
T05fQ09MT1JfU1BBQ0VfRElTUExBWV9QMykKKyAgICAgICAgLCBEaXNwbGF5UDMKKyNlbmRpZgor
ICAgIH07CisgICAgTmFtZSBuYW1lOworICAgIE5hbWUgZ2V0KCkgY29uc3QgeyByZXR1cm4gbmFt
ZTsgfQorfTsKK3VzaW5nIFBsYXRmb3JtQ29sb3JTcGFjZVZhbHVlID0gUGxhdGZvcm1Db2xvclNw
YWNlOjpOYW1lOworCisjZW5kaWYKKworfQorCituYW1lc3BhY2UgV1RGIHsKKworI2lmICFVU0Uo
Q0cpCisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6UGxhdGZvcm1Db2xv
clNwYWNlOjpOYW1lPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAg
V2ViQ29yZTo6UGxhdGZvcm1Db2xvclNwYWNlOjpOYW1lLAorICAgICAgICBXZWJDb3JlOjpQbGF0
Zm9ybUNvbG9yU3BhY2U6Ok5hbWU6OlNSR0IKKyNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1Jf
U1BBQ0VfTElORUFSX1NSR0IpCisgICAgICAgICwgV2ViQ29yZTo6UGxhdGZvcm1Db2xvclNwYWNl
OjpOYW1lOjpMaW5lYXJTUkdCCisjZW5kaWYKKyNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1Jf
U1BBQ0VfRElTUExBWV9QMykKKyAgICAgICAgLCBXZWJDb3JlOjpQbGF0Zm9ybUNvbG9yU3BhY2U6
Ok5hbWU6OkRpc3BsYXlQMworI2VuZGlmCisgICAgPjsKK307CisKKyNlbmRpZgorCit9IC8vIG5h
bWVzcGFjZSBXVEYKKwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVt
b3RlVmlkZW9TYW1wbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyBpbmxpbmUgc3RkOjp1bmlxdWVfcHRy
PElPU3VyZmFjZT4KICAgICB9CiAKICAgICBJbnRTaXplIHNpemUgeyBzdGF0aWNfY2FzdDxpbnQ+
KENWUGl4ZWxCdWZmZXJHZXRXaWR0aChwaXhlbEJ1ZmZlcikpLCBzdGF0aWNfY2FzdDxpbnQ+KENW
UGl4ZWxCdWZmZXJHZXRIZWlnaHQocGl4ZWxCdWZmZXIpKSB9OwotICAgIGF1dG8gaW9TdXJmYWNl
ID0gIElPU3VyZmFjZTo6Y3JlYXRlKHNpemUsIHNSR0JDb2xvclNwYWNlUmVmKCksIElPU3VyZmFj
ZTo6Rm9ybWF0OjpCR1JBKTsKKyAgICBhdXRvIGlvU3VyZmFjZSA9ICBJT1N1cmZhY2U6OmNyZWF0
ZShzaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgSU9TdXJmYWNlOjpGb3JtYXQ6
OkJHUkEpOwogCiAgICAgSU9TdXJmYWNlOjpMb2NrZXIgbG9jaygqaW9TdXJmYWNlKTsKICAgICB2
SW1hZ2VfQnVmZmVyIHNyYzsKQEAgLTExMyw3ICsxMTMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVt
b3RlVmlkZW9TYW1wbGU+IFJlbW90CiAgICAgICAgIHN1cmZhY2UgPSBpb1N1cmZhY2UtPnN1cmZh
Y2UoKTsKICAgICB9CiAKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2Ft
cGxlPihuZXcgUmVtb3RlVmlkZW9TYW1wbGUoc3VyZmFjZSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwg
c2FtcGxlLnByZXNlbnRhdGlvblRpbWUoKSwgc2FtcGxlLnZpZGVvUm90YXRpb24oKSwgc2FtcGxl
LnZpZGVvTWlycm9yZWQoKSkpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlk
ZW9TYW1wbGU+KG5ldyBSZW1vdGVWaWRlb1NhbXBsZShzdXJmYWNlLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSwgc2FtcGxlLnByZXNlbnRhdGlvblRpbWUoKSwgc2FtcGxlLnZpZGVvUm90
YXRpb24oKSwgc2FtcGxlLnZpZGVvTWlycm9yZWQoKSkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlVmlkZW9TYW1wbGU+IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUoQ1ZQaXhlbEJ1ZmZl
clJlZiBpbWFnZUJ1ZmZlciwgTWVkaWFUaW1lJiYgcHJlc2VudGF0aW9uVGltZSwgTWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24pCkBAIC0xMjQsMTAgKzEyNCwxMCBAQCBzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+IFJlbW90CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIAotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+
KG5ldyBSZW1vdGVWaWRlb1NhbXBsZShzdXJmYWNlLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBXVEZN
b3ZlKHByZXNlbnRhdGlvblRpbWUpLCByb3RhdGlvbiwgZmFsc2UpKTsKKyAgICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPihuZXcgUmVtb3RlVmlkZW9TYW1wbGUoc3Vy
ZmFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFdURk1vdmUocHJlc2VudGF0aW9u
VGltZSksIHJvdGF0aW9uLCBmYWxzZSkpOwogfQogCi1SZW1vdGVWaWRlb1NhbXBsZTo6UmVtb3Rl
VmlkZW9TYW1wbGUoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNw
YWNlLCBNZWRpYVRpbWUmJiB0aW1lLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlv
biwgYm9vbCBtaXJyb3JlZCkKK1JlbW90ZVZpZGVvU2FtcGxlOjpSZW1vdGVWaWRlb1NhbXBsZShJ
T1N1cmZhY2VSZWYgc3VyZmFjZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNw
YWNlLCBNZWRpYVRpbWUmJiB0aW1lLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiByb3RhdGlv
biwgYm9vbCBtaXJyb3JlZCkKICAgICA6IG1faW9TdXJmYWNlKFdlYkNvcmU6OklPU3VyZmFjZTo6
Y3JlYXRlRnJvbVN1cmZhY2Uoc3VyZmFjZSwgY29sb3JTcGFjZSkpCiAgICAgLCBtX3JvdGF0aW9u
KHJvdGF0aW9uKQogICAgICwgbV90aW1lKFdURk1vdmUodGltZSkpCkBAIC0xNDAsNyArMTQwLDcg
QEAgUmVtb3RlVmlkZW9TYW1wbGU6OlJlbW90ZVZpZGVvU2FtcGxlKElPUwogSU9TdXJmYWNlUmVm
IFJlbW90ZVZpZGVvU2FtcGxlOjpzdXJmYWNlKCkgY29uc3QKIHsKICAgICBpZiAoIW1faW9TdXJm
YWNlICYmIG1fc2VuZFJpZ2h0KQotICAgICAgICBjb25zdF9jYXN0PFJlbW90ZVZpZGVvU2FtcGxl
Kj4odGhpcyktPm1faW9TdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2Vu
ZFJpZ2h0KFdURk1vdmUoY29uc3RfY2FzdDxSZW1vdGVWaWRlb1NhbXBsZSo+KHRoaXMpLT5tX3Nl
bmRSaWdodCksIHNSR0JDb2xvclNwYWNlUmVmKCkpOworICAgICAgICBjb25zdF9jYXN0PFJlbW90
ZVZpZGVvU2FtcGxlKj4odGhpcyktPm1faW9TdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpj
cmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoY29uc3RfY2FzdDxSZW1vdGVWaWRlb1NhbXBsZSo+
KHRoaXMpLT5tX3NlbmRSaWdodCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKIAog
ICAgIHJldHVybiBtX2lvU3VyZmFjZSA/IG1faW9TdXJmYWNlLT5zdXJmYWNlKCkgOiBudWxscHRy
OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9T
YW1wbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9S
ZW1vdGVWaWRlb1NhbXBsZS5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDMsNyArMTAzLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBSZW1vdGVWaWRl
b1NhbXBsZShJT1N1cmZhY2VSZWYsIENHQ29sb3JTcGFjZVJlZiwgTWVkaWFUaW1lJiYsIE1lZGlh
U2FtcGxlOjpWaWRlb1JvdGF0aW9uLCBib29sKTsKKyAgICBSZW1vdGVWaWRlb1NhbXBsZShJT1N1
cmZhY2VSZWYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIE1lZGlhVGltZSYmLCBNZWRp
YVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiwgYm9vbCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6SU9TdXJmYWNlPiBtX2lvU3VyZmFjZTsKICAgICBXVEY6Ok1hY2hTZW5kUmlnaHQgbV9z
ZW5kUmlnaHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dC
bHVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9T
aGFkb3dCbHVyLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcg
QEAgcHVibGljOgogICAgICAgICBjbGVhclNjcmF0Y2hCdWZmZXIoKTsKIAogICAgICAgICAvLyBT
aGFkb3dCbHVyIGlzIG5vdCB1c2VkIHdpdGggYWNjZWxlcmF0ZWQgZHJhd2luZywgc28gaXQncyBP
SyB0byBtYWtlIGFuIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkIGJ1ZmZlci4KLSAgICAg
ICAgbV9pbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUocm91bmRlZFNpemUsIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwg
UGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgbV9pbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUocm91bmRlZFNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgICAg
ICByZXR1cm4gbV9pbWFnZUJ1ZmZlcjsKICAgICB9CiAKQEAgLTYwNCw3ICs2MDQsNyBAQCB2b2lk
IFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvdyhjb25zdCBBCiAKIHZvaWQgU2hhZG93Qmx1cjo6
ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgTGF5ZXJJbWFnZVByb3BlcnRp
ZXMmIGxheWVySW1hZ2VQcm9wZXJ0aWVzLCBjb25zdCBEcmF3QnVmZmVyQ2FsbGJhY2smIGRyYXdC
dWZmZXIpCiB7Ci0gICAgYXV0byBsYXllckltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShleHBh
bmRlZEludFNpemUobGF5ZXJJbWFnZVByb3BlcnRpZXMubGF5ZXJTaXplKSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOworICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
ZXhwYW5kZWRJbnRTaXplKGxheWVySW1hZ2VQcm9wZXJ0aWVzLmxheWVyU2l6ZSksIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQ
aXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghbGF5ZXJJbWFnZSkKICAgICAgICAgcmV0dXJu
OwogCkBAIC02MzIsNyArNjMyLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dp
dGhvdXRUaQogCiB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmco
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRSZWN0JiBmdWxsUmVjdCwgY29uc3Qg
RmxvYXRSb3VuZGVkUmVjdCYgaG9sZVJlY3QsIGNvbnN0IExheWVySW1hZ2VQcm9wZXJ0aWVzJiBs
YXllckltYWdlUHJvcGVydGllcywgY29uc3QgRHJhd0J1ZmZlckNhbGxiYWNrJiBkcmF3QnVmZmVy
KQogewotICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoZXhwYW5kZWRJ
bnRTaXplKGxheWVySW1hZ2VQcm9wZXJ0aWVzLmxheWVyU2l6ZSksIFJlbmRlcmluZ01vZGU6OlVu
YWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6
OkJHUkE4KTsKKyAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFu
ZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGllcy5sYXllclNpemUpLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWxheWVySW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApA
QCAtNzA1LDcgKzcwNSw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGls
aW4KICNlbmRpZgogCiAgICAgaWYgKCFsYXllckltYWdlQnVmZmVyKSB7Ci0gICAgICAgIGxheWVy
SW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRlbXBsYXRlU2l6ZSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOworICAgICAgICBsYXllckltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZSh0ZW1wbGF0ZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgICAg
ICBpZiAoIWxheWVySW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
NzYzLDcgKzc2Myw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRpbGkK
ICNlbmRpZgogCiAgICAgaWYgKCFsYXllckltYWdlQnVmZmVyKSB7Ci0gICAgICAgIGxheWVySW1h
Z2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRlbXBsYXRlU2l6ZSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOworICAgICAgICBsYXllckltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZSh0ZW1wbGF0ZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgICAgICBp
ZiAoIWxheWVySW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtOTAz
LDcgKzkwMyw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6Ymx1clNoYWRvd0J1ZmZlcihJbWFnZUIKICAg
ICBpZiAobV90eXBlICE9IEJsdXJTaGFkb3cpCiAgICAgICAgIHJldHVybjsKIAotICAgIFBpeGVs
QnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlw
bGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsK
KyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpV
bnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCkgfTsKICAgICBJbnRSZWN0IGJsdXJSZWN0KEludFBvaW50KCksIHRlbXBsYXRlU2l6
ZSk7CiAgICAgYXV0byBsYXllckRhdGEgPSBsYXllckltYWdlLmdldFBpeGVsQnVmZmVyKGZvcm1h
dCwgYmx1clJlY3QpOwogICAgIGlmICghbGF5ZXJEYXRhKQpAQCAtOTMzLDcgKzkzMyw3IEBAIHZv
aWQgU2hhZG93Qmx1cjo6ZHJhd1NoYWRvd0xheWVyKGNvbnN0IEEKIAogICAgIGFkanVzdEJsdXJS
YWRpdXModHJhbnNmb3JtKTsKIAotICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdlQnVmZmVyOjpj
cmVhdGUoZXhwYW5kZWRJbnRTaXplKGxheWVySW1hZ2VQcm9wZXJ0aWVzLT5sYXllclNpemUpLCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBsYXllckltYWdlID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShleHBhbmRlZEludFNpemUobGF5ZXJJbWFnZVByb3BlcnRpZXMtPmxheWVyU2l6
ZSksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghbGF5ZXJJbWFnZSkKICAg
ICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5
LDcgQEAgc3RhdGljIHZvaWQgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMoaQogCiBPcHRpb25h
bDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWlu
dFJlc3VsdHMoKQogewotICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVs
dGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JB
OCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsKICAgICBhdXRvIHBpeGVsQnVmZmVy
ID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQsIGdldEludGVybmFsRnJhbWVidWZmZXJT
aXplKCkpOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRJbXBsQ2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAJKHJldmlzaW9u
IDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dEltcGxDYWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxNCw3ICs0MTQsNyBA
QCBGbG9hdFJlY3QgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpyb3VuCiAgICAgcmV0dXJuIENh
aXJvOjpTdGF0ZTo6cm91bmRUb0RldmljZVBpeGVscyhtX3BsYXRmb3JtQ29udGV4dCwgcmVjdCk7
CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjbGlwVG9EcmF3aW5nQ29tbWFu
ZHMoY29uc3QgRmxvYXRSZWN0JiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2b2lk
KEdyYXBoaWNzQ29udGV4dCYpPiYmKQordm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmNs
aXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKQogewogICAgIC8v
IEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJ
bXBsQ2Fpcm8uaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEwNCw3ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRo
JiwgV2luZFJ1bGUpIG92ZXJyaWRlOwogICAgIEludFJlY3QgY2xpcEJvdW5kcygpIG92ZXJyaWRl
OwogICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJl
Y3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQo
R3JhcGhpY3NDb250ZXh0Jik+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY2xpcFRvRHJhd2luZ0Nv
bW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpIG92ZXJyaWRlOwog
I2lmIEVOQUJMRShWSURFTykKICAgICB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXll
ciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pIG92ZXJyaWRlOwogICAgIGJvb2wgY2Fu
UGFpbnRGcmFtZUZvck1lZGlhKGNvbnN0IE1lZGlhUGxheWVyJikgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksMTkg
Kzg5LDE5IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OmNsaXBUb01hc2sKICAgICAg
ICAgQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKCpkZXN0Q29udGV4dC5wbGF0Zm9ybUNvbnRleHQo
KSwgaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgZGVzdFJlY3QpOwogfQogCi12b2lkIElt
YWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjp0cmFuc2Zvcm1Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29s
b3JTcGFjZSBzcmNDb2xvclNwYWNlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgZGVzdENvbG9yU3Bh
Y2UpCit2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjp0cmFuc2Zvcm1Db2xvclNwYWNlKGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgc3JjQ29sb3JTcGFjZSwgY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiBkZXN0Q29sb3JTcGFjZSkKIHsKICAgICBpZiAoc3JjQ29sb3JTcGFjZSA9
PSBkZXN0Q29sb3JTcGFjZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gb25seSBzUkdCIDwt
PiBsaW5lYXJSR0IgYXJlIHN1cHBvcnRlZCBhdCB0aGUgbW9tZW50Ci0gICAgaWYgKChzcmNDb2xv
clNwYWNlICE9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQiAmJiBzcmNDb2xvclNw
YWNlICE9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQikKLSAgICAgICAgfHwgKGRlc3RDb2xv
clNwYWNlICE9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQiAmJiBkZXN0Q29sb3JT
cGFjZSAhPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpKQorICAgIGlmICgoc3JjQ29sb3JT
cGFjZSAhPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKSAmJiBzcmNDb2xvclNw
YWNlICE9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKQorICAgICAgICB8fCAoZGVzdENv
bG9yU3BhY2UgIT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCkgJiYgZGVzdENv
bG9yU3BhY2UgIT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpKQogICAgICAgICByZXR1
cm47CiAKICAgICBtX3BhcmFtZXRlcnMuY29sb3JTcGFjZSA9IGRlc3RDb2xvclNwYWNlOwogCi0g
ICAgaWYgKGRlc3RDb2xvclNwYWNlID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JH
QikgeworICAgIGlmIChkZXN0Q29sb3JTcGFjZSA9PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6Okxp
bmVhclNSR0IoKSkgewogICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjphcnJheTx1aW50OF90LCAy
NTY+IGxpbmVhclJnYkxVVCA9IFtdIHsKICAgICAgICAgICAgIHN0ZDo6YXJyYXk8dWludDhfdCwg
MjU2PiBhcnJheTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAyNTY7IGkr
KykgewpAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRy
YW5zZm9ybUMKICAgICAgICAgICAgIHJldHVybiBhcnJheTsKICAgICAgICAgfSgpOwogICAgICAg
ICBwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UobGluZWFyUmdiTFVUKTsKLSAgICB9IGVsc2Ug
aWYgKGRlc3RDb2xvclNwYWNlID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQikgeworICAg
IH0gZWxzZSBpZiAoZGVzdENvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCkpIHsKICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6YXJyYXk8dWludDhfdCwgMjU2PiBkZXZp
Y2VSZ2JMVVQ9IFtdIHsKICAgICAgICAgICAgIHN0ZDo6YXJyYXk8dWludDhfdCwgMjU2PiBhcnJh
eTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAyNTY7IGkrKykgewpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWly
b0JhY2tlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFj
a2VuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgY2xpcFRvTWFzayhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
KSBvdmVycmlkZTsKIAotICAgIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNv
bG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGRlc3RDb2xvclNw
YWNlKSBvdmVycmlkZTsKKyAgICB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiBzcmNDb2xvclNwYWNlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmIGRlc3RDb2xvclNwYWNlKSBvdmVycmlkZTsKIAogICAgIFN0cmluZyB0b0RhdGFVUkwoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJl
c29sdXRpb24pIGNvbnN0IG92ZXJyaWRlOwogICAgIFZlY3Rvcjx1aW50OF90PiB0b0RhdGEoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KSBjb25zdCBvdmVy
cmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0Nv
bG9yQ0cuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9Db2xvckNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yOSwxMyArMjksMTQgQEAKICNpZiBVU0UoQ0cpCiAKICNpbmNsdWRlICJDb2xv
clNwYWNlQ0cuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRl
IDxtdXRleD4KKyNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1RpbnlMUlVDYWNoZS5oPgotI2luY2x1ZGUg
PHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgorI2luY2x1ZGUgPHd0Zi9UaW55TFJVQ2FjaGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogc3RhdGljIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjcmVhdGVDR0NvbG9yKGNvbnN0IENvbG9y
Jik7CkBAIC05MSwzNCArOTIsMzggQEAgQ29sb3I6OkNvbG9yKENHQ29sb3JSZWYgY29sb3IsIE9w
dGlvblNldAogewogfQogCi1zdGF0aWMgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNyZWF0ZUNHQ29s
b3IoY29uc3QgQ29sb3ImIGNvbG9yKQorc3RhdGljIHN0ZDo6cGFpcjxDR0NvbG9yU3BhY2VSZWYs
IENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4+IGNvbnZlcnRUb0NHQ29tcGF0aWJsZUNvbXBvbmVu
dHMoQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbXBv
bmVudHMpCiB7Ci0gICAgYXV0byBbY29sb3JTcGFjZSwgY29tcG9uZW50c10gPSBjb2xvci5jb2xv
clNwYWNlQW5kQ29tcG9uZW50cygpOwotCi0gICAgYXV0byBjZ0NvbG9yU3BhY2UgPSBjYWNoZWRO
dWxsYWJsZUNHQ29sb3JTcGFjZShjb2xvclNwYWNlKTsKLQogICAgIC8vIFNvbWUgQ0cgcG9ydHMg
ZG9uJ3Qgc3VwcG9ydCBhbGwgdGhlIGNvbG9yIHNwYWNlcyByZXF1aXJlZCBhbmQgcmV0dXJuCiAg
ICAgLy8gbnVsbHB0ciBmb3IgdW5zdXBwb3J0ZWQgY29sb3Igc3BhY2VzLiBJbiB0aG9zZSBjYXNl
cywgd2UgZWFnZXJseSBjb252ZXJ0CiAgICAgLy8gdGhlIGNvbG9yIGludG8gZWl0aGVyIGV4dGVu
ZGVkIHNSR0Igb3Igbm9ybWFsIHNSR0IsIGlmIGV4dGVuZGVkIHNSR0IgaXMKLSAgICAvLyBub3Qg
c3VwcG9ydGVkLCBiZWZvcmUgY3JlYXRpbmcgdGhlIENHQ29sb3JSZWYuCisgICAgLy8gbm90IHN1
cHBvcnRlZC4KKworICAgIGF1dG8gY2dDb2xvclNwYWNlID0gY2FjaGVkTnVsbGFibGVDR0NvbG9y
U3BhY2UoY29sb3JTcGFjZSk7CiAgICAgaWYgKCFjZ0NvbG9yU3BhY2UpIHsKICNpZiBIQVZFKENP
UkVfR1JBUEhJQ1NfRVhURU5ERURfU1JHQl9DT0xPUl9TUEFDRSkKLSAgICAgICAgYXV0byBjb2xv
ckNvbnZlcnRlZFRvRXh0ZW5kZWRTUkdCQSA9IGNhbGxXaXRoQ29sb3JUeXBlKGNvbXBvbmVudHMs
IGNvbG9yU3BhY2UsIFtdIChjb25zdCBhdXRvJiBjb2xvcikgewotICAgICAgICAgICAgcmV0dXJu
IGNvbnZlcnRDb2xvcjxFeHRlbmRlZFNSR0JBPGZsb2F0Pj4oY29sb3IpOworICAgICAgICBhdXRv
IGNnQ29tcGF0aWJsZUNvbXBvbmVudHMgPSBjYWxsV2l0aENvbG9yVHlwZShjb21wb25lbnRzLCBj
b2xvclNwYWNlLCBbXSAoY29uc3QgYXV0byYgY29sb3IpIHsKKyAgICAgICAgICAgIHJldHVybiBh
c0NvbG9yQ29tcG9uZW50cyhjb252ZXJ0Q29sb3I8RXh0ZW5kZWRTUkdCQTxmbG9hdD4+KGNvbG9y
KSk7CiAgICAgICAgIH0pOwotICAgICAgICBjb21wb25lbnRzID0gYXNDb2xvckNvbXBvbmVudHMo
Y29sb3JDb252ZXJ0ZWRUb0V4dGVuZGVkU1JHQkEpOwotICAgICAgICBjZ0NvbG9yU3BhY2UgPSBl
eHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCk7CisgICAgICAgIHJldHVybiB7IGV4dGVuZGVkU1JH
QkNvbG9yU3BhY2VSZWYoKSwgY2dDb21wYXRpYmxlQ29tcG9uZW50cyB9OwogI2Vsc2UKICAgICAg
ICAgYXV0byBjb2xvckNvbnZlcnRlZFRvU1JHQkEgPSBjYWxsV2l0aENvbG9yVHlwZShjb21wb25l
bnRzLCBjb2xvclNwYWNlLCBbXSAoY29uc3QgYXV0byYgY29sb3IpIHsKLSAgICAgICAgICAgIHJl
dHVybiBjb252ZXJ0Q29sb3I8U1JHQkE8ZmxvYXQ+Pihjb2xvcik7CisgICAgICAgICAgICByZXR1
cm4gYXNDb2xvckNvbXBvbmVudHMoY29udmVydENvbG9yPFNSR0JBPGZsb2F0Pj4oY29sb3IpKTsK
ICAgICAgICAgfSk7Ci0gICAgICAgIGNvbXBvbmVudHMgPSBhc0NvbG9yQ29tcG9uZW50cyhjb2xv
ckNvbnZlcnRlZFRvU1JHQkEpOwotICAgICAgICBjZ0NvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFj
ZVJlZigpOworICAgICAgICByZXR1cm4geyBzUkdCQ29sb3JTcGFjZVJlZigpLCBjZ0NvbXBhdGli
bGVDb21wb25lbnRzIH07CiAjZW5kaWYKICAgICB9CiAKLSAgICBhdXRvIFtyLCBnLCBiLCBhXSA9
IGNvbXBvbmVudHM7Ci0gICAgQ0dGbG9hdCBjZ0Zsb2F0Q29tcG9uZW50c1s0XSB7IHIsIGcsIGIs
IGEgfTsKKyAgICByZXR1cm4geyBjZ0NvbG9yU3BhY2UsIGNvbXBvbmVudHMgfTsKK30KKworc3Rh
dGljIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjcmVhdGVDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2xv
cikKK3sKKyAgICBhdXRvIFtjb2xvclNwYWNlLCBjb21wb25lbnRzXSA9IGNvbG9yLmNvbG9yU3Bh
Y2VBbmRDb21wb25lbnRzKCk7CisgICAgYXV0byBbY2dDb2xvclNwYWNlLCBjZ0NvbXBhdGlibGVD
b21wb25lbnRzXSA9IGNvbnZlcnRUb0NHQ29tcGF0aWJsZUNvbXBvbmVudHMoY29sb3JTcGFjZSwg
Y29tcG9uZW50cyk7CisgICAgCisgICAgYXV0byBbYzEsIGMyLCBjMywgYzRdID0gY2dDb21wYXRp
YmxlQ29tcG9uZW50czsKKyAgICBDR0Zsb2F0IGNnRmxvYXRDb21wb25lbnRzWzRdIHsgYzEsIGMy
LCBjMywgYzQgfTsKIAogICAgIHJldHVybiBhZG9wdENGKENHQ29sb3JDcmVhdGUoY2dDb2xvclNw
YWNlLCBjZ0Zsb2F0Q29tcG9uZW50cykpOwogfQpAQCAtMTYxLDYgKzE2NiwyNCBAQCBDR0NvbG9y
UmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImIGNvCiAgICAgcmV0dXJuIGNhY2hlLmdldCgp
LmdldChjb2xvcikuZ2V0KCk7CiB9CiAKK0NvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gcGxhdGZv
cm1Db252ZXJ0Q29sb3JDb21wb25lbnRzKENvbG9yU3BhY2UgaW5wdXRDb2xvclNwYWNlLCBDb2xv
ckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGlucHV0Q29sb3JDb21wb25lbnRzLCBjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmIG91dHB1dENvbG9yU3BhY2UpCit7CisgICAgLy8gRklYTUU6IEludmVz
dGlnYXRlIG9wdGltaXppbmcgdGhpcyB0byB1c2UgdGhlIGJ1aWx0aW4gY29sb3IgY29udmVyc2lv
biBjb2RlIGZvciBzdXBwb3J0ZWQgY29sb3Igc3BhY2VzLgorCisgICAgYXV0byBbY2dJbnB1dENv
bG9yU3BhY2UsIGNnQ29tcGF0aWJsZUNvbXBvbmVudHNdID0gY29udmVydFRvQ0dDb21wYXRpYmxl
Q29tcG9uZW50cyhpbnB1dENvbG9yU3BhY2UsIGlucHV0Q29sb3JDb21wb25lbnRzKTsKKyAgICBp
ZiAoY2dJbnB1dENvbG9yU3BhY2UgPT0gb3V0cHV0Q29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3Bh
Y2UoKSkKKyAgICAgICAgcmV0dXJuIGNnQ29tcGF0aWJsZUNvbXBvbmVudHM7CisKKyAgICBhdXRv
IFtjMSwgYzIsIGMzLCBjNF0gPSBjZ0NvbXBhdGlibGVDb21wb25lbnRzOworICAgIENHRmxvYXQg
c291cmNlQ29tcG9uZW50c1s0XSB7IGMxLCBjMiwgYzMsIGM0IH07CisgICAgQ0dGbG9hdCBkZXN0
aW5hdGlvbkNvbXBvbmVudHNbNF0geyB9OworCisgICAgYXV0byB0cmFuc2Zvcm0gPSBhZG9wdENG
KENHQ29sb3JUcmFuc2Zvcm1DcmVhdGUob3V0cHV0Q29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3Bh
Y2UoKSwgbnVsbHB0cikpOworICAgIGF1dG8gcmVzdWx0ID0gQ0dDb2xvclRyYW5zZm9ybUNvbnZl
cnRDb2xvckNvbXBvbmVudHModHJhbnNmb3JtLmdldCgpLCBjZ0lucHV0Q29sb3JTcGFjZSwga0NH
UmVuZGVyaW5nSW50ZW50RGVmYXVsdCwgc291cmNlQ29tcG9uZW50cywgZGVzdGluYXRpb25Db21w
b25lbnRzKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAgICByZXR1cm4g
eyBzdGF0aWNfY2FzdDxmbG9hdD4oZGVzdGluYXRpb25Db21wb25lbnRzWzBdKSwgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGRlc3RpbmF0aW9uQ29tcG9uZW50c1sxXSksIHN0YXRpY19jYXN0PGZsb2F0Pihk
ZXN0aW5hdGlvbkNvbXBvbmVudHNbMl0pLCBzdGF0aWNfY2FzdDxmbG9hdD4oZGVzdGluYXRpb25D
b21wb25lbnRzWzNdKSB9OworfQorCiB9CiAKICNlbmRpZiAvLyBVU0UoQ0cpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
Q29sb3JTcGFjZUNHLmgJKHdvcmtpbmcgY29weSkKQEAgLTExOSwyMyArMTE5LDQgQEAgc3RhdGlj
IGlubGluZSBDR0NvbG9yU3BhY2VSZWYgY2FjaGVkTnVsbAogICAgIHJldHVybiBudWxscHRyOwog
fQogCi0vLyBOT1RFOiBTaW5jZSB0aGlzIGZ1bmN0aW9uIGlzIGZvciAqZGVzdGluYXRpb24qIGNv
bG9yIHNwYWNlcyB3aG9zZSBjYWxsZXJzIGFsd2F5cyBleHBlY3QgYSBub24tbnVsbCBjb2xvciBz
cGFjZSwgdGhpcyBmdW5jdGlvbiBpcyBndWFyYW50ZWVkIHRvIHJldHVybiBub24tbnVsbCwgdW5s
aWtlIGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlKCkuCi1zdGF0aWMgaW5saW5lIENHQ29sb3JT
cGFjZVJlZiBjYWNoZWRDR0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3Bh
Y2UpCi17Ci0gICAgc3dpdGNoIChjb2xvclNwYWNlKSB7Ci0gICAgY2FzZSBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0I6Ci0gICAgICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJlZigpOwotI2lm
IEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICBjYXNlIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQjoKLSAgICAgICAgcmV0dXJuIGxpbmVhclNS
R0JDb2xvclNwYWNlUmVmKCk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1Jf
U1BBQ0VfRElTUExBWV9QMykKLSAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxh
eVAzOgotICAgICAgICByZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOwotI2VuZGlmCi0g
ICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBzUkdCQ29sb3JTcGFj
ZVJlZigpOwotfQotCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0R0xDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzMiw3ICs1MzIsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFRvQ2FuCiAgICAgfSkpOwogCiAgICAgYXV0byBpbWFn
ZVNpemUgPSBwaXhlbEJ1ZmZlci5zaXplKCk7Ci0gICAgYXV0byBpbWFnZSA9IE5hdGl2ZUltYWdl
OjpjcmVhdGUoYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNp
emUuaGVpZ2h0KCksIDgsIDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCksIGNhY2hlZENHQ29sb3JT
cGFjZShwaXhlbEJ1ZmZlci5mb3JtYXQoKS5jb2xvclNwYWNlKSwgYml0bWFwSW5mbywgZGF0YVBy
b3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpKTsKKyAg
ICBhdXRvIGltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHSW1hZ2VDcmVhdGUo
aW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIDQgKiBpbWFnZVNp
emUud2lkdGgoKSwgcGl4ZWxCdWZmZXIuZm9ybWF0KCkuY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9y
U3BhY2UoKSwgYml0bWFwSW5mbywgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVu
ZGVyaW5nSW50ZW50RGVmYXVsdCkpKTsKIAogICAgIC8vIENTUyBzdHlsaW5nIG1heSBjYXVzZSB0
aGUgY2FudmFzJ3MgY29udGVudCB0byBiZSByZXNpemVkIG9uCiAgICAgLy8gdGhlIHBhZ2UuIEdv
IGJhY2sgdG8gdGhlIENhbnZhcyB0byBmaWd1cmUgb3V0IHRoZSBjb3JyZWN0CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29s
LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSU9TdXJmYWNlUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2lmIEhBVkUoSU9TVVJGQUNFKQogCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNl
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbmNsdWRlIDxDb3JlR3JhcGhp
Y3MvQ29yZUdyYXBoaWNzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC01
OSw3ICs2MCw3IEBAIElPU3VyZmFjZVBvb2wmIElPU3VyZmFjZVBvb2w6OnNoYXJlZFBvb2wKICAg
ICByZXR1cm4gcG9vbDsKIH0KIAotc3RhdGljIGJvb2wgc3VyZmFjZU1hdGNoZXNQYXJhbWV0ZXJz
KElPU3VyZmFjZSYgc3VyZmFjZSwgSW50U2l6ZSByZXF1ZXN0ZWRTaXplLCBDR0NvbG9yU3BhY2VS
ZWYgY29sb3JTcGFjZSwgSU9TdXJmYWNlOjpGb3JtYXQgZm9ybWF0KQorc3RhdGljIGJvb2wgc3Vy
ZmFjZU1hdGNoZXNQYXJhbWV0ZXJzKElPU3VyZmFjZSYgc3VyZmFjZSwgSW50U2l6ZSByZXF1ZXN0
ZWRTaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIElPU3VyZmFj
ZTo6Rm9ybWF0IGZvcm1hdCkKIHsKICAgICBpZiAoZm9ybWF0ICE9IHN1cmZhY2UuZm9ybWF0KCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwMiw3ICsxMDMsNyBAQCB2b2lkIElPU3VyZmFj
ZVBvb2w6OmRpZFVzZVN1cmZhY2VPZlNpemUoCiAgICAgbV9zaXplc0luUHJ1bmVPcmRlci5hcHBl
bmQoc2l6ZSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZVBvb2w6
OnRha2VTdXJmYWNlKEludFNpemUgc2l6ZSwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UsIElP
U3VyZmFjZTo6Rm9ybWF0IGZvcm1hdCkKK3N0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3Vy
ZmFjZVBvb2w6OnRha2VTdXJmYWNlKEludFNpemUgc2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiBjb2xvclNwYWNlLCBJT1N1cmZhY2U6OkZvcm1hdCBmb3JtYXQpCiB7CiAgICAgTG9j
a2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIENhY2hlZFN1cmZhY2VNYXA6Oml0ZXJhdG9yIG1h
cEl0ZXIgPSBtX2NhY2hlZFN1cmZhY2VzLmZpbmQoc2l6ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5oCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZh
Y2VQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDggQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBEZXN0aW5hdGF0aW9uQ29sb3JTcGFjZTsKKwogY2xhc3MgSU9TdXJm
YWNlUG9vbCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSU9TdXJmYWNlUG9vbCk7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00Nyw3ICs0OSw3IEBAIGNsYXNzIElPU3VyZmFj
ZVBvb2wgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJT1N1cmZhY2VQb29s
JiBzaGFyZWRQb29sKCk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiB0YWtlU3Vy
ZmFjZShJbnRTaXplLCBDR0NvbG9yU3BhY2VSZWYsIElPU3VyZmFjZTo6Rm9ybWF0KTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiB0YWtlU3VyZmFjZShJbnRTaXplLCBjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmLCBJT1N1cmZhY2U6OkZvcm1hdCk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBhZGRTdXJmYWNlKHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+KTsKIAogICAgIHZv
aWQgZGlzY2FyZEFsbFN1cmZhY2VzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCShy
ZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw3ICsxNzQsNyBA
QCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXJDR0JhY2tlCiAgICAgICAgIC8vIEZJ
WE1FOiBTaG91bGQgdGhpcyBiZSB1c2luZyB0aGUgc2FtZSBsb2dpYyBhcyBJbWFnZUJ1ZmZlclV0
aWxpdGllc0NHPwogCiAgICAgICAgIC8vIEpQRUdzIGRvbid0IGhhdmUgYW4gYWxwaGEgY2hhbm5l
bCwgc28gd2UgaGF2ZSB0byBtYW51YWxseSBjb21wb3NpdGUgb24gdG9wIG9mIGJsYWNrLgotICAg
ICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQ
cmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiB9OworICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRp
cGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBnZXRQaXhl
bEJ1ZmZlcihmb3JtYXQsIGxvZ2ljYWxSZWN0KCkpOwogICAgICAgICBpZiAoIXBpeGVsQnVmZmVy
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTIsNyArMTkyLDcgQEAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IEltYWdlQnVmZmVyQ0dCYWNrZQogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICAgICAgYXV0byBpbWFnZVNpemUgPSBwaXhlbEJ1ZmZlci0+c2l6ZSgpOwot
ICAgICAgICByZXR1cm4gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBp
bWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCksIGNhY2hlZENH
Q29sb3JTcGFjZShwaXhlbEJ1ZmZlci0+Zm9ybWF0KCkuY29sb3JTcGFjZSksIGtDR0JpdG1hcEJ5
dGVPcmRlckRlZmF1bHQgfCBrQ0dJbWFnZUFscGhhTm9uZVNraXBMYXN0LCBkYXRhUHJvdmlkZXIu
Z2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CisgICAgICAgIHJl
dHVybiBhZG9wdENGKENHSW1hZ2VDcmVhdGUoaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5o
ZWlnaHQoKSwgOCwgMzIsIDQgKiBpbWFnZVNpemUud2lkdGgoKSwgcGl4ZWxCdWZmZXItPmZvcm1h
dCgpLmNvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCksIGtDR0JpdG1hcEJ5dGVPcmRlckRl
ZmF1bHQgfCBrQ0dJbWFnZUFscGhhTm9uZVNraXBMYXN0LCBkYXRhUHJvdmlkZXIuZ2V0KCksIDAs
IGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CiAgICAgfQogCiAgICAgaWYgKHJl
c29sdXRpb25TY2FsZSgpID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFByZXNlcnZlUmVz
b2x1dGlvbjo6WWVzKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3Bw
CShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcg
KzYyLDcgQEAgc2l6ZV90IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjYWxjdQogICAgIHJl
dHVybiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNhbGN1bGF0ZU1lbW9yeUNvc3QoYmFja2VuZFNpemUs
IGNhbGN1bGF0ZUJ5dGVzUGVyUm93KGJhY2tlbmRTaXplKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6
OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBDR0NvbG9yU3BhY2VSZWYgY2dD
b2xvclNwYWNlLCBjb25zdCBIb3N0V2luZG93KikKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25z
dCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KikKIHsKICAgICBBU1NF
UlQocGFyYW1ldGVycy5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpOwogCkBAIC04
MSw3ICs4MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2UKICAg
ICBzaXplX3QgbnVtQnl0ZXMgPSBiYWNrZW5kU2l6ZS5oZWlnaHQoKSAqIGJ5dGVzUGVyUm93Owog
ICAgIHZlcmlmeUltYWdlQnVmZmVySXNCaWdFbm91Z2goZGF0YSwgbnVtQnl0ZXMpOwogCi0gICAg
YXV0byBjZ0NvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShkYXRhLCBiYWNr
ZW5kU2l6ZS53aWR0aCgpLCBiYWNrZW5kU2l6ZS5oZWlnaHQoKSwgOCwgYnl0ZXNQZXJSb3csIGNn
Q29sb3JTcGFjZSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5
dGVPcmRlcjMySG9zdCkpOworICAgIGF1dG8gY2dDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENv
bnRleHRDcmVhdGUoZGF0YSwgYmFja2VuZFNpemUud2lkdGgoKSwgYmFja2VuZFNpemUuaGVpZ2h0
KCksIDgsIGJ5dGVzUGVyUm93LCBwYXJhbWV0ZXJzLmNvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNw
YWNlKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3Jk
ZXIzMkhvc3QpKTsKICAgICBpZiAoIWNnQ29udGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKQEAgLTk2LDE1ICs5NiwxNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1h
Z2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgaWYgKGF1dG8gY2dD
b2xvclNwYWNlID0gY29udGV4dC5oYXNQbGF0Zm9ybUNvbnRleHQoKSA/IGNvbnRleHRDb2xvclNw
YWNlKGNvbnRleHQpIDogbnVsbHB0cikKLSAgICAgICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCaXRt
YXBCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgY2dDb2xvclNwYWNlLmdldCgpLCBudWxscHRy
KTsKKyAgICBpZiAoYXV0byBjZ0NvbG9yU3BhY2UgPSBjb250ZXh0Lmhhc1BsYXRmb3JtQ29udGV4
dCgpID8gY29udGV4dENvbG9yU3BhY2UoY29udGV4dCkgOiBudWxscHRyKSB7CisgICAgICAgIGF1
dG8gb3ZlcnJpZGVQYXJhbWV0ZXJzID0gcGFyYW1ldGVyczsKKyAgICAgICAgb3ZlcnJpZGVQYXJh
bWV0ZXJzLmNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgeyBjZ0NvbG9yU3BhY2Ug
fTsKIAotICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKHBhcmFt
ZXRlcnMsIG51bGxwdHIpOwotfQorICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQ6OmNyZWF0ZShvdmVycmlkZVBhcmFtZXRlcnMsIG51bGxwdHIpOworICAgIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEhv
c3RXaW5kb3cqIGhvc3RXaW5kb3cpCi17Ci0gICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBC
YWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgY2FjaGVkQ0dDb2xvclNwYWNlKHBhcmFtZXRlcnMu
Y29sb3JTcGFjZSksIGhvc3RXaW5kb3cpOworICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIG51bGxwdHIpOwogfQogCiBJbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQoY29uc3QgUGFyYW1ldGVy
cyYgcGFyYW1ldGVycywgdm9pZCogZGF0YSwgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiYm
IGRhdGFQcm92aWRlciwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4mJiBjb250ZXh0
KQpAQCAtMTQ2LDcgKzE0NSw3IEBAIFJlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJDR0Jp
dG1hcEIKICAgICAgICAgYXV0byBiYWNrZW5kU2l6ZSA9IHRoaXMtPmJhY2tlbmRTaXplKCk7CiAg
ICAgICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZSgK
ICAgICAgICAgICAgIGJhY2tlbmRTaXplLndpZHRoKCksIGJhY2tlbmRTaXplLmhlaWdodCgpLCA4
LCAzMiwgYnl0ZXNQZXJSb3coKSwKLSAgICAgICAgICAgIGNhY2hlZENHQ29sb3JTcGFjZShjb2xv
clNwYWNlKCkpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0
ZU9yZGVyMzJIb3N0LCBtX2RhdGFQcm92aWRlci5nZXQoKSwKKyAgICAgICAgICAgIGNvbG9yU3Bh
Y2UoKS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJz
dCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCwgbV9kYXRhUHJvdmlkZXIuZ2V0KCksCiAgICAg
ICAgICAgICAwLCB0cnVlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSkpOwogICAgIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oCShyZXZpc2lvbiAyNzc5MTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw4ICszOSw5IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgSW50U2l6ZSBjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUoY29uc3QgUGFyYW1ldGVycyYp
OwogICAgIHN0YXRpYyBzaXplX3QgY2FsY3VsYXRlTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJz
Jik7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNr
ZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIENHQ29sb3JTcGFjZVJlZiwgY29uc3QgSG9z
dFdpbmRvdyopOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgSG9zdFdpbmRvdyopOwor
CisgICAgLy8gRklYTUU6IFJlbmFtZSB0byBjcmVhdGVVc2luZ0NvbG9yU3BhY2VPZkdyYXBoaWNz
Q29udGV4dCgpIChvciBzb21ldGhpbmcgbGlrZSB0aGF0KS4KICAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVy
cyYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgxLDEzICs4MSwxMyBAQCBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBJbWFnZUJ1ZmZl
cklPCiAgICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjb250ZXh0Q29sb3JTcGFjZShj
b250ZXh0KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYg
cGFyYW1ldGVycywgQ0dDb2xvclNwYWNlUmVmIGNnQ29sb3JTcGFjZSwgY29uc3QgSG9zdFdpbmRv
dyogaG9zdFdpbmRvdykKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7CiAgICAgSW50U2l6
ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShwYXJhbWV0ZXJzKTsKICAg
ICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKGJhY2tlbmRTaXplLCBiYWNrZW5k
U2l6ZSwgY2dDb2xvclNwYWNlLCBJT1N1cmZhY2U6OmZvcm1hdEZvclBpeGVsRm9ybWF0KHBhcmFt
ZXRlcnMucGl4ZWxGb3JtYXQpKTsKKyAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0
ZShiYWNrZW5kU2l6ZSwgYmFja2VuZFNpemUsIHBhcmFtZXRlcnMuY29sb3JTcGFjZSwgSU9TdXJm
YWNlOjpmb3JtYXRGb3JQaXhlbEZvcm1hdChwYXJhbWV0ZXJzLnBpeGVsRm9ybWF0KSk7CiAgICAg
aWYgKCFzdXJmYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTAyLDE1ICsxMDIs
MTQgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFjawogCiBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgaWYgKGF1dG8gY2dDb2xvclNwYWNlID0gY29u
dGV4dC5oYXNQbGF0Zm9ybUNvbnRleHQoKSA/IGNvbnRleHRDb2xvclNwYWNlKGNvbnRleHQpIDog
bnVsbHB0cikKLSAgICAgICAgcmV0dXJuIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3Jl
YXRlKHBhcmFtZXRlcnMsIGNnQ29sb3JTcGFjZS5nZXQoKSwgbnVsbHB0cik7CisgICAgaWYgKGF1
dG8gY2dDb2xvclNwYWNlID0gY29udGV4dC5oYXNQbGF0Zm9ybUNvbnRleHQoKSA/IGNvbnRleHRD
b2xvclNwYWNlKGNvbnRleHQpIDogbnVsbHB0cikgeworICAgICAgICBhdXRvIG92ZXJyaWRlUGFy
YW1ldGVycyA9IHBhcmFtZXRlcnM7CisgICAgICAgIG92ZXJyaWRlUGFyYW1ldGVycy5jb2xvclNw
YWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlIHsgY2dDb2xvclNwYWNlIH07CiAKLSAgICByZXR1
cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgbnVsbHB0
cik7Ci19CisgICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0
ZShvdmVycmlkZVBhcmFtZXRlcnMsIG51bGxwdHIpOworICAgIH0KIAotc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
OjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgSG9zdFdpbmRvdyog
aG9zdFdpbmRvdykKLXsKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpj
cmVhdGUocGFyYW1ldGVycywgY2FjaGVkQ0dDb2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JTcGFj
ZSksIGhvc3RXaW5kb3cpOworICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6
OmNyZWF0ZShwYXJhbWV0ZXJzLCBudWxscHRyKTsKIH0KIAogSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYgcGFy
YW1ldGVycywgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4mJiBzdXJmYWNlKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw4ICs0Miw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
c2l6ZV90IGNhbGN1bGF0ZU1lbW9yeUNvc3QoY29uc3QgUGFyYW1ldGVycyYpOwogICAgIHN0YXRp
YyBzaXplX3QgY2FsY3VsYXRlRXh0ZXJuYWxNZW1vcnlDb3N0KGNvbnN0IFBhcmFtZXRlcnMmKTsK
ICAgICAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBDR0NvbG9yU3BhY2VSZWYsIGNvbnN0IEhv
c3RXaW5kb3cqKTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBIb3N0V2luZG93Kik7
CisgICAgLy8gRklYTUU6IFJlbmFtZSB0byBjcmVhdGVVc2luZ0NvbG9yU3BhY2VPZkdyYXBoaWNz
Q29udGV4dCgpIChvciBzb21ldGhpbmcgbGlrZSB0aGF0KS4KICAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRl
cnMmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKIAogICAgIEltYWdlQnVmZmVySU9TdXJmYWNl
QmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiwgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4mJik7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0
aWxpdGllc0NHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXND
Ry5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Nyw3ICsxNzcsNyBAQCBzdGF0aWMgYm9vbCBlbmNv
ZGUoY29uc3QgUGl4ZWxCdWZmZXImIHNvCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
YXV0byBpbWFnZVNpemUgPSBzb3VyY2Uuc2l6ZSgpOwotICAgIGF1dG8gaW1hZ2UgPSBhZG9wdENG
KENHSW1hZ2VDcmVhdGUoaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSwgOCwg
MzIsIDQgKiBpbWFnZVNpemUud2lkdGgoKSwgY2FjaGVkQ0dDb2xvclNwYWNlKHNvdXJjZS5mb3Jt
YXQoKS5jb2xvclNwYWNlKSwga0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8IGRhdGFBbHBoYUlu
Zm8sIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1
bHQpKTsKKyAgICBhdXRvIGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53
aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCks
IHNvdXJjZS5mb3JtYXQoKS5jb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBrQ0dCaXRt
YXBCeXRlT3JkZXJEZWZhdWx0IHwgZGF0YUFscGhhSW5mbywgZGF0YVByb3ZpZGVyLmdldCgpLCAw
LCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwogCiAgICAgcmV0dXJuIGVuY29k
ZShpbWFnZS5nZXQoKSwgZGVzdGluYXRpb25VVEkuZ2V0KCksIHF1YWxpdHksIGZ1bmN0aW9uKTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQkocmV2
aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTcxLDcg
KzU3MSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVEaXMKIGJvb2wg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNr
aW5nKCkKIHsKICAgICBBU1NFUlQoIWdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkuaXNFbXB0
eSgpKTsKLSAgICBhdXRvIGJhY2tpbmcgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZShnZXRJ
bnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLCBXZWJDb3JlOjpzUkdCQ29sb3JTcGFjZVJlZigpKTsK
KyAgICBhdXRvIGJhY2tpbmcgPSBJT1N1cmZhY2U6OmNyZWF0ZShnZXRJbnRlcm5hbEZyYW1lYnVm
ZmVyU2l6ZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgaWYgKCFiYWNr
aW5nKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMjcsOSArMjcsMTAgQEAKIAogI2lmIEhBVkUoSU9TVVJGQUNFKQog
CisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCisjaW5jbHVkZSAiSW50U2l6ZS5o
IgogI2luY2x1ZGUgPG9iamMvb2JqYy5oPgogI2luY2x1ZGUgPHBhbC9zcGkvY29jb2EvSU9TdXJm
YWNlU1BJLmg+Ci0jaW5jbHVkZSAiSW50U2l6ZS5oIgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1V
TEFUT1IpCiAjZGVmaW5lIEhBVkVfSU9TVVJGQUNFX1JHQjEwIDEKQEAgLTQ2LDEwICs0Nyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSG9z
dFdpbmRvdzsKLSAgICAKLSNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5HX1NUT1JFKQog
Y2xhc3MgSW1hZ2VCdWZmZXI7Ci0jZW5kaWYKIAogZW51bSBjbGFzcyBQaXhlbEZvcm1hdCA6IHVp
bnQ4X3Q7CiBlbnVtIGNsYXNzIFZvbGF0aWxpdHlTdGF0ZSA6IHVpbnQ4X3Q7CkBAIC0xMDEsMTAg
Kzk5LDEwIEBAIHB1YmxpYzoKICAgICAgICAgdWludDMyX3QgbV9mbGFnczsKICAgICB9OwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0
ZShJbnRTaXplLCBDR0NvbG9yU3BhY2VSZWYsIEZvcm1hdCA9IEZvcm1hdDo6QkdSQSk7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZShJ
bnRTaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBDR0NvbG9yU3BhY2VSZWYsIEZvcm1hdCA9IEZv
cm1hdDo6QkdSQSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJ
T1N1cmZhY2U+IGNyZWF0ZUZyb21TZW5kUmlnaHQoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0JiYs
IENHQ29sb3JTcGFjZVJlZik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxJT1N1cmZhY2U+IGNyZWF0ZUZyb21TdXJmYWNlKElPU3VyZmFjZVJlZiwgQ0dDb2xvclNw
YWNlUmVmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3Vy
ZmFjZT4gY3JlYXRlKEludFNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZvcm1h
dCA9IEZvcm1hdDo6QkdSQSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxJT1N1cmZhY2U+IGNyZWF0ZShJbnRTaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGb3JtYXQgPSBGb3JtYXQ6OkJHUkEpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGVGcm9t
U2VuZFJpZ2h0KGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYmLCBjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElP
U3VyZmFjZT4gY3JlYXRlRnJvbVN1cmZhY2UoSU9TdXJmYWNlUmVmLCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PElPU3VyZmFjZT4gY3JlYXRlRnJvbUltYWdlKENHSW1hZ2VSZWYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGVGcm9tUGl4ZWxCdWZm
ZXIoQ1ZQaXhlbEJ1ZmZlclJlZik7CiAgICAgCkBAIC0xNDYsNyArMTQ0LDcgQEAgcHVibGljOgog
ICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIHNpemVfdCB0
b3RhbEJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbEJ5dGVzOyB9CiAKLSAgICBDR0NvbG9y
U3BhY2VSZWYgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JTcGFjZS5nZXQoKTsg
fQorICAgIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY29sb3JTcGFjZTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIEZvcm1hdCBmb3JtYXQo
KSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBJT1N1cmZhY2VJRCBzdXJmYWNlSUQoKSBjb25z
dDsKICAgICBzaXplX3QgYnl0ZXNQZXJSb3coKSBjb25zdDsKQEAgLTE2OSwxNCArMTY3LDE0IEBA
IHB1YmxpYzoKICAgICB2b2lkIG1pZ3JhdGVDb2xvclNwYWNlVG9Qcm9wZXJ0aWVzKCk7CiAKIHBy
aXZhdGU6Ci0gICAgSU9TdXJmYWNlKEludFNpemUsIEludFNpemUgY29udGV4dFNpemUsIENHQ29s
b3JTcGFjZVJlZiwgRm9ybWF0LCBib29sJiBzdWNjZXNzKTsKLSAgICBJT1N1cmZhY2UoSU9TdXJm
YWNlUmVmLCBDR0NvbG9yU3BhY2VSZWYpOworICAgIElPU3VyZmFjZShJbnRTaXplLCBJbnRTaXpl
IGNvbnRleHRTaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGb3JtYXQsIGJvb2wm
IHN1Y2Nlc3MpOworICAgIElPU3VyZmFjZShJT1N1cmZhY2VSZWYsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IHN1
cmZhY2VGcm9tUG9vbChJbnRTaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBDR0NvbG9yU3BhY2VS
ZWYsIEZvcm1hdCk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IHN1cmZh
Y2VGcm9tUG9vbChJbnRTaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmLCBGb3JtYXQpOwogICAgIEludFNpemUgY29udGV4dFNpemUoKSBjb25zdCB7
IHJldHVybiBtX2NvbnRleHRTaXplOyB9CiAgICAgdm9pZCBzZXRDb250ZXh0U2l6ZShJbnRTaXpl
KTsKIAotICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IG1fY29sb3JTcGFjZTsKKyAgICBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgbV9jb2xvclNwYWNlOwogICAgIEludFNpemUgbV9zaXplOwog
ICAgIEludFNpemUgbV9jb250ZXh0U2l6ZTsKICAgICBzaXplX3QgbV90b3RhbEJ5dGVzOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3Vy
ZmFjZS5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIklPU3VyZmFjZS5oIgogCi0jaW1wb3J0ICJD
b3JlVmlkZW9Tb2Z0TGluay5oIgorI2ltcG9ydCAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAj
aW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0R0wu
aCIKICNpbXBvcnQgIkhvc3RXaW5kb3cuaCIKQEAgLTQxLDkgKzQxLDExIEBACiAjaW1wb3J0IDx3
dGYvTWF0aEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCisjaW1w
b3J0ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWlubGlu
ZSBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OnN1cmZhY2VGcm9tUG9vbChJ
bnRTaXplIHNpemUsIEludFNpemUgY29udGV4dFNpemUsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNw
YWNlLCBGb3JtYXQgcGl4ZWxGb3JtYXQpCitpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFj
ZT4gSU9TdXJmYWNlOjpzdXJmYWNlRnJvbVBvb2woSW50U2l6ZSBzaXplLCBJbnRTaXplIGNvbnRl
eHRTaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIEZvcm1hdCBw
aXhlbEZvcm1hdCkKIHsKICAgICBhdXRvIGNhY2hlZFN1cmZhY2UgPSBJT1N1cmZhY2VQb29sOjpz
aGFyZWRQb29sKCkudGFrZVN1cmZhY2Uoc2l6ZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpOwog
ICAgIGlmICghY2FjaGVkU3VyZmFjZSkKQEAgLTUzLDEyICs1NSwxMiBAQCBpbmxpbmUgc3RkOjp1
bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmCiAgICAgcmV0dXJuIGNhY2hlZFN1cmZhY2U7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6Y3JlYXRlKEludFNpemUg
c2l6ZSwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UsIEZvcm1hdCBwaXhlbEZvcm1hdCkKK3N0
ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6Y3JlYXRlKEludFNpemUgc2l6ZSwg
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGb3JtYXQgcGl4ZWxGb3Jt
YXQpCiB7CiAgICAgcmV0dXJuIElPU3VyZmFjZTo6Y3JlYXRlKHNpemUsIHNpemUsIGNvbG9yU3Bh
Y2UsIHBpeGVsRm9ybWF0KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJm
YWNlOjpjcmVhdGUoSW50U2l6ZSBzaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBDR0NvbG9yU3Bh
Y2VSZWYgY29sb3JTcGFjZSwgRm9ybWF0IHBpeGVsRm9ybWF0KQorc3RkOjp1bmlxdWVfcHRyPElP
U3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGUoSW50U2l6ZSBzaXplLCBJbnRTaXplIGNvbnRleHRT
aXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIEZvcm1hdCBwaXhl
bEZvcm1hdCkKIHsKICAgICBpZiAoYXV0byBjYWNoZWRTdXJmYWNlID0gc3VyZmFjZUZyb21Qb29s
KHNpemUsIGNvbnRleHRTaXplLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCkpIHsKICAgICAgICAg
TE9HX1dJVEhfU1RSRUFNKElPU3VyZmFjZSwgc3RyZWFtIDw8ICJJT1N1cmZhY2U6OmNyZWF0ZSB0
b29rIGZyb20gcG9vbDogIiA8PCAqY2FjaGVkU3VyZmFjZSk7CkBAIC03NSwxMyArNzcsMTMgQEAg
c3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcgogICAgIHJldHVybiBzdXJm
YWNlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZUZy
b21TZW5kUmlnaHQoY29uc3QgTWFjaFNlbmRSaWdodCYmIHNlbmRSaWdodCwgQ0dDb2xvclNwYWNl
UmVmIGNvbG9yU3BhY2UpCitzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNy
ZWF0ZUZyb21TZW5kUmlnaHQoY29uc3QgTWFjaFNlbmRSaWdodCYmIHNlbmRSaWdodCwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQogewogICAgIGF1dG8gc3VyZmFjZSA9
IGFkb3B0Q0YoSU9TdXJmYWNlTG9va3VwRnJvbU1hY2hQb3J0KHNlbmRSaWdodC5zZW5kUmlnaHQo
KSkpOwogICAgIHJldHVybiBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TdXJmYWNlKHN1cmZhY2UuZ2V0
KCksIGNvbG9yU3BhY2UpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZh
Y2U6OmNyZWF0ZUZyb21TdXJmYWNlKElPU3VyZmFjZVJlZiBzdXJmYWNlLCBDR0NvbG9yU3BhY2VS
ZWYgY29sb3JTcGFjZSkKK3N0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6Y3Jl
YXRlRnJvbVN1cmZhY2UoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgY29sb3JTcGFjZSkKIHsKICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPElPU3Vy
ZmFjZT4obmV3IElPU3VyZmFjZShzdXJmYWNlLCBjb2xvclNwYWNlKSk7CiB9CkBAIC05NCw3ICs5
Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6Y3IKICAgICBzaXpl
X3Qgd2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpOwogICAgIHNpemVfdCBoZWlnaHQgPSBD
R0ltYWdlR2V0SGVpZ2h0KGltYWdlKTsKIAotICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6
Y3JlYXRlKEludFNpemUod2lkdGgsIGhlaWdodCksIENHSW1hZ2VHZXRDb2xvclNwYWNlKGltYWdl
KSk7CisgICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoSW50U2l6ZSh3aWR0aCwg
aGVpZ2h0KSwgRGVzdGluYXRpb25Db2xvclNwYWNlIHsgQ0dJbWFnZUdldENvbG9yU3BhY2UoaW1h
Z2UpIH0pOwogICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
YXV0byBzdXJmYWNlQ29udGV4dCA9IHN1cmZhY2UtPmVuc3VyZVBsYXRmb3JtQ29udGV4dCgpOwpA
QCAtMTE2LDcgKzExOCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6
Y3IKICAgICBpZiAoIWNvbG9yU3BhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
cmV0dXJuIGNyZWF0ZUZyb21TdXJmYWNlKHN1cmZhY2UsIGNvbG9yU3BhY2UpOworICAgIHJldHVy
biBjcmVhdGVGcm9tU3VyZmFjZShzdXJmYWNlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgeyBjb2xv
clNwYWNlIH0pOwogfQogCiB2b2lkIElPU3VyZmFjZTo6bW92ZVRvUG9vbChzdGQ6OnVuaXF1ZV9w
dHI8SU9TdXJmYWNlPiYmIHN1cmZhY2UpCkBAIC0xOTYsNyArMTk4LDcgQEAgc3RhdGljIE5TRGlj
dGlvbmFyeSAqb3B0aW9uc0ZvcjMyQml0U3VyZgogCiB9CiAKLUlPU3VyZmFjZTo6SU9TdXJmYWNl
KEludFNpemUgc2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xvclNwYWNlUmVmIGNvbG9y
U3BhY2UsIEZvcm1hdCBmb3JtYXQsIGJvb2wmIHN1Y2Nlc3MpCitJT1N1cmZhY2U6OklPU3VyZmFj
ZShJbnRTaXplIHNpemUsIEludFNpemUgY29udGV4dFNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgY29sb3JTcGFjZSwgRm9ybWF0IGZvcm1hdCwgYm9vbCYgc3VjY2VzcykKICAgICA6
IG1fY29sb3JTcGFjZShjb2xvclNwYWNlKQogICAgICwgbV9zaXplKHNpemUpCiAgICAgLCBtX2Nv
bnRleHRTaXplKGNvbnRleHRTaXplKQpAQCAtMjMyLDcgKzIzNCw3IEBAIElPU3VyZmFjZTo6SU9T
dXJmYWNlKEludFNpemUgc2l6ZSwgSW50U2kKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTGF5
ZXJzLCAiSU9TdXJmYWNlIGNyZWF0aW9uIGZhaWxlZCBmb3Igc2l6ZTogKCVkICVkKSBhbmQgZm9y
bWF0OiAoJWQpIiwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCBmb3JtYXQpOwogfQogCi1J
T1N1cmZhY2U6OklPU3VyZmFjZShJT1N1cmZhY2VSZWYgc3VyZmFjZSwgQ0dDb2xvclNwYWNlUmVm
IGNvbG9yU3BhY2UpCitJT1N1cmZhY2U6OklPU3VyZmFjZShJT1N1cmZhY2VSZWYgc3VyZmFjZSwg
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQogICAgIDogbV9jb2xvclNw
YWNlKGNvbG9yU3BhY2UpCiAgICAgLCBtX3N1cmZhY2Uoc3VyZmFjZSkKIHsKQEAgLTM0Nyw3ICsz
NDksNyBAQCBDR0NvbnRleHRSZWYgSU9TdXJmYWNlOjplbnN1cmVQbGF0Zm9ybUNvCiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICAKLSAgICBtX2NnQ29udGV4dCA9IGFkb3B0Q0YoQ0dJT1N1cmZh
Y2VDb250ZXh0Q3JlYXRlKG1fc3VyZmFjZS5nZXQoKSwgbV9jb250ZXh0U2l6ZS53aWR0aCgpLCBt
X2NvbnRleHRTaXplLmhlaWdodCgpLCBiaXRzUGVyQ29tcG9uZW50LCBiaXRzUGVyUGl4ZWwsIG1f
Y29sb3JTcGFjZS5nZXQoKSwgYml0bWFwSW5mbykpOworICAgIG1fY2dDb250ZXh0ID0gYWRvcHRD
RihDR0lPU3VyZmFjZUNvbnRleHRDcmVhdGUobV9zdXJmYWNlLmdldCgpLCBtX2NvbnRleHRTaXpl
LndpZHRoKCksIG1fY29udGV4dFNpemUuaGVpZ2h0KCksIGJpdHNQZXJDb21wb25lbnQsIGJpdHNQ
ZXJQaXhlbCwgbV9jb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBiaXRtYXBJbmZvKSk7
CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKGF1dG8gZGlzcGxheU1hc2sgPSBwcmltYXJ5
T3BlbkdMRGlzcGxheU1hc2soKSkgewpAQCAtNTE1LDcgKzUxNyw3IEBAIHZvaWQgSU9TdXJmYWNl
OjpzZXRPd25lcnNoaXBJZGVudGl0eSh0YXMKIAogdm9pZCBJT1N1cmZhY2U6Om1pZ3JhdGVDb2xv
clNwYWNlVG9Qcm9wZXJ0aWVzKCkKIHsKLSAgICBhdXRvIGNvbG9yU3BhY2VQcm9wZXJ0aWVzID0g
YWRvcHRDRihDR0NvbG9yU3BhY2VDb3B5UHJvcGVydHlMaXN0KG1fY29sb3JTcGFjZS5nZXQoKSkp
OworICAgIGF1dG8gY29sb3JTcGFjZVByb3BlcnRpZXMgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNv
cHlQcm9wZXJ0eUxpc3QobV9jb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpKSk7CiAgICAg
SU9TdXJmYWNlU2V0VmFsdWUobV9zdXJmYWNlLmdldCgpLCBrSU9TdXJmYWNlQ29sb3JTcGFjZSwg
Y29sb3JTcGFjZVByb3BlcnRpZXMuZ2V0KCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2Uu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWlt
YWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCShyZXZpc2lvbiAyNzc5MTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0
UmVuZGVyZXJDb3JlSW1hZ2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4OSw3ICsyODksNyBAQCB2
b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpyZW5kCiAgICAgICAgIHJldHVybjsK
ICAgICAKICAgICBhdXRvJiBzdXJmYWNlID0gZG93bmNhc3Q8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZl
cj4oKm1fb3V0cHV0SW1hZ2VCdWZmZXIpLnN1cmZhY2UoKTsKLSAgICBbc2hhcmVkQ0lDb250ZXh0
KCkuZ2V0KCkgcmVuZGVyOiBtX291dHB1dEltYWdlLmdldCgpIHRvSU9TdXJmYWNlOiBzdXJmYWNl
LnN1cmZhY2UoKSBib3VuZHM6ZGVzdFJlY3QobGFzdEVmZmVjdCkgY29sb3JTcGFjZTpjYWNoZWRD
R0NvbG9yU3BhY2UobGFzdEVmZmVjdC5yZXN1bHRDb2xvclNwYWNlKCkpXTsKKyAgICBbc2hhcmVk
Q0lDb250ZXh0KCkuZ2V0KCkgcmVuZGVyOiBtX291dHB1dEltYWdlLmdldCgpIHRvSU9TdXJmYWNl
OiBzdXJmYWNlLnN1cmZhY2UoKSBib3VuZHM6ZGVzdFJlY3QobGFzdEVmZmVjdCkgY29sb3JTcGFj
ZTpsYXN0RWZmZWN0LnJlc3VsdENvbG9yU3BhY2UoKS5wbGF0Zm9ybUNvbG9yU3BhY2UoKV07CiB9
CiAgICAgCiBGbG9hdFJlY3QgRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OmRlc3RSZWN0
KGNvbnN0IEZpbHRlckVmZmVjdCYgbGFzdEVmZmVjdCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1h
Z2VCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBjbGFzcyBJbWFnZUJ1
ZmZlciA6IHB1YmxpYyBDb25jcmV0ZUltYWdlCiAgICAgdXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VC
dWZmZXI6OmJhc2VUcmFuc2Zvcm07CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgYXV0byBjcmVhdGUo
Y29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9z
dFdpbmRvdyogaG9zdFdpbmRvdykKKyAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5k
b3cqIGhvc3RXaW5kb3cpCiAgICAgewogICAgICAgICByZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VC
dWZmZXI6OnRlbXBsYXRlIGNyZWF0ZTxJbWFnZUJ1ZmZlcj4oc2l6ZSwgcmVzb2x1dGlvblNjYWxl
LCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgaG9zdFdpbmRvdyk7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAJKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1CdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODEsNyArMjgxLDcgQEAg
dm9pZCBJdGVtSGFuZGxlOjpkZXN0cm95KCkKICAgICAgICAgZ2V0PEZpbGxSb3VuZGVkUmVjdD4o
KS5+RmlsbFJvdW5kZWRSZWN0KCk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEl0ZW1UeXBl
OjpHZXRQaXhlbEJ1ZmZlcjoKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxs
eV9kZXN0cnVjdGlibGU8R2V0UGl4ZWxCdWZmZXI+Ojp2YWx1ZSk7CisgICAgICAgIGdldDxHZXRQ
aXhlbEJ1ZmZlcj4oKS5+R2V0UGl4ZWxCdWZmZXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNh
c2UgSXRlbVR5cGU6OlB1dFBpeGVsQnVmZmVyOgogICAgICAgICBnZXQ8UHV0UGl4ZWxCdWZmZXI+
KCkuflB1dFBpeGVsQnVmZmVyKCk7CkBAIC0zMDcsNyArMzA3LDcgQEAgdm9pZCBJdGVtSGFuZGxl
OjpkZXN0cm95KCkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAgICAgY2FzZSBJdGVtVHlwZTo6
QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPjo6dmFs
dWUpOworICAgICAgICBnZXQ8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkufkJlZ2luQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzKCk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEl0ZW1UeXBl
OjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOgogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNf
dHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxCZWdpblRyYW5zcGFyZW5jeUxheWVyPjo6dmFsdWUpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCShyZXZpc2lvbiAyNzc5MTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5oCSh3b3JraW5nIGNvcHkpCkBAIC04ODAsMjMgKzg4MCw1NSBAQCBPcHRpb25hbDxD
bGlwUGF0aD4gQ2xpcFBhdGg6OmRlY29kZShEZWNvCiBjbGFzcyBCZWdpbkNsaXBUb0RyYXdpbmdD
b21tYW5kcyB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlw
ZSA9IEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczsKLSAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgaXNJbmxpbmVJdGVtID0gZmFsc2U7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJh
d2luZ0l0ZW0gPSBmYWxzZTsKIAotICAgIEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNl
KQorICAgIEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkKICAgICAgICAg
OiBtX2Rlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKQogICAgICAgICAsIG1fY29sb3JTcGFjZShjb2xv
clNwYWNlKQogICAgIHsKICAgICB9CiAKKyAgICBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyhj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmJiBjb2xv
clNwYWNlKQorICAgICAgICA6IG1fZGVzdGluYXRpb24oZGVzdGluYXRpb24pCisgICAgICAgICwg
bV9jb2xvclNwYWNlKFdURk1vdmUoY29sb3JTcGFjZSkpCisgICAgeworICAgIH0KKwogICAgIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9u
OyB9Ci0gICAgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVy
biBtX2NvbG9yU3BhY2U7IH0KKyAgICBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9y
U3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yU3BhY2U7IH0KKworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+
IGRlY29kZShEZWNvZGVyJik7CiAKIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fZGVzdGluYXRp
b247CiAgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1fY29sb3JTcGFjZTsKIH07CiAKK3RlbXBs
YXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fZGVzdGluYXRp
b247CisgICAgZW5jb2RlciA8PCBtX2NvbG9yU3BhY2U7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERl
Y29kZXI+CitPcHRpb25hbDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4gQmVnaW5DbGlwVG9E
cmF3aW5nQ29tbWFuZHM6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFs
PEZsb2F0UmVjdD4gZGVzdGluYXRpb247CisgICAgZGVjb2RlciA+PiBkZXN0aW5hdGlvbjsKKyAg
ICBpZiAoIWRlc3RpbmF0aW9uKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
T3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlOworICAgIGRlY29kZXIg
Pj4gY29sb3JTcGFjZTsKKyAgICBpZiAoIWNvbG9yU3BhY2UpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICByZXR1cm4ge3sgKmRlc3RpbmF0aW9uLCBXVEZNb3ZlKCpjb2xvclNw
YWNlKSB9fTsKK30KKwogY2xhc3MgRW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgY29uc3RleHByIEl0ZW1UeXBlIGl0ZW1UeXBlID0gSXRlbVR5cGU6OkVuZENs
aXBUb0RyYXdpbmdDb21tYW5kczsKQEAgLTE5MzgsMjMgKzE5NzAsNTUgQEAgcHJpdmF0ZToKIGNs
YXNzIEdldFBpeGVsQnVmZmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIEl0ZW1U
eXBlIGl0ZW1UeXBlID0gSXRlbVR5cGU6OkdldFBpeGVsQnVmZmVyOwotICAgIHN0YXRpYyBjb25z
dGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBpc0lubGluZUl0ZW0gPSBmYWxzZTsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNEcmF3
aW5nSXRlbSA9IGZhbHNlOwogCi0gICAgR2V0UGl4ZWxCdWZmZXIoV2ViQ29yZTo6UGl4ZWxCdWZm
ZXJGb3JtYXQgb3V0cHV0Rm9ybWF0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzcmNSZWN0KQor
ICAgIEdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQs
IGNvbnN0IEludFJlY3QmIHNyY1JlY3QpCiAgICAgICAgIDogbV9zcmNSZWN0KHNyY1JlY3QpCiAg
ICAgICAgICwgbV9vdXRwdXRGb3JtYXQob3V0cHV0Rm9ybWF0KQogICAgIHsKICAgICB9CiAKLSAg
ICBQaXhlbEJ1ZmZlckZvcm1hdCBvdXRwdXRGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX291dHB1
dEZvcm1hdDsgfQorICAgIEdldFBpeGVsQnVmZmVyKFBpeGVsQnVmZmVyRm9ybWF0JiYgb3V0cHV0
Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KQorICAgICAgICA6IG1fc3JjUmVjdChzcmNS
ZWN0KQorICAgICAgICAsIG1fb3V0cHV0Rm9ybWF0KFdURk1vdmUob3V0cHV0Rm9ybWF0KSkKKyAg
ICB7CisgICAgfQorCisgICAgY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCgp
IGNvbnN0IHsgcmV0dXJuIG1fb3V0cHV0Rm9ybWF0OyB9CiAgICAgSW50UmVjdCBzcmNSZWN0KCkg
Y29uc3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIE9wdGlvbmFsPEdldFBpeGVsQnVmZmVyPiBkZWNvZGUoRGVjb2RlciYpOworCiBw
cml2YXRlOgogICAgIEludFJlY3QgbV9zcmNSZWN0OwogICAgIFBpeGVsQnVmZmVyRm9ybWF0IG1f
b3V0cHV0Rm9ybWF0OwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgR2V0UGl4
ZWxCdWZmZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIg
PDwgbV9zcmNSZWN0OworICAgIGVuY29kZXIgPDwgbV9vdXRwdXRGb3JtYXQ7Cit9CisKK3RlbXBs
YXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxHZXRQaXhlbEJ1ZmZlcj4gR2V0UGl4ZWxCdWZm
ZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPEludFJlY3Q+IHNy
Y1JlY3Q7CisgICAgZGVjb2RlciA+PiBzcmNSZWN0OworICAgIGlmICghc3JjUmVjdCkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVyRm9ybWF0
PiBvdXRwdXRGb3JtYXQ7CisgICAgZGVjb2RlciA+PiBvdXRwdXRGb3JtYXQ7CisgICAgaWYgKCFv
dXRwdXRGb3JtYXQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4g
e3sgV1RGTW92ZSgqb3V0cHV0Rm9ybWF0KSwgKnNyY1JlY3QgfX07Cit9CisKIGNsYXNzIFB1dFBp
eGVsQnVmZmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIEl0ZW1UeXBlIGl0ZW1U
eXBlID0gSXRlbVR5cGU6OlB1dFBpeGVsQnVmZmVyOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NTIsNyArNDUyLDcgQEAgdm9pZCBSZWNvcmRlcjo6Y2xpcFRv
SW1hZ2VCdWZmZXIoSW1hZ2VCdQogICAgIGFwcGVuZDxDbGlwVG9JbWFnZUJ1ZmZlcj4oaW1hZ2VC
dWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIGRlc3RSZWN0KTsKIH0KIAotdm9p
ZCBSZWNvcmRlcjo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdy
YXBoaWNzQ29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikKK3ZvaWQgUmVjb3JkZXI6OmNsaXBU
b0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250
ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKQogewogICAgIEdyYXBoaWNzQ29udGV4dCBuZXN0ZWRD
b250ZXh0KFsmXShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgYXV0byBpbml0
aWFsQ2xpcCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGRlc3RpbmF0aW9uLnNpemUoKSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgJKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw3ICsxNDcsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSBvdmVycmlkZTsK
ICAgICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsaXBUb0ltYWdl
QnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4
dCYpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGdW5j
dGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKICNpZiBFTkFCTEUoVklE
RU8pCiAgICAgdm9pZCBwYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uKSBvdmVycmlkZTsKICAgICBib29sIGNhblBhaW50RnJhbWVGb3JN
ZWRpYShjb25zdCBNZWRpYVBsYXllciYpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURp
c3BsYWNlbWVudE1hcC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgRkVEaXNwbGFjZW1lbnRNYXA6OnNldFNjYWxlKGZs
b2F0IHMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBGRURpc3BsYWNlbWVudE1hcDo6c2V0
UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpCit2b2lkIEZFRGlzcGxhY2Vt
ZW50TWFwOjpzZXRSZXN1bHRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYp
CiB7CiAgICAgLy8gU3BlYzogVGhlICdjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMnIHByb3Bl
cnR5IG9ubHkgYXBwbGllcyB0byB0aGUgJ2luMicgc291cmNlIGltYWdlCiAgICAgLy8gYW5kIGRv
ZXMgbm90IGFwcGx5IHRvIHRoZSAnaW4nIHNvdXJjZSBpbWFnZS4gVGhlICdpbicgc291cmNlIGlt
YWdlIG11c3QgcmVtYWluIGluIGl0cwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuaAkocmV2
aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRURpc3BsYWNlbWVudE1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHB1
YmxpYzoKICAgICBmbG9hdCBzY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NhbGU7IH0KICAgICBi
b29sIHNldFNjYWxlKGZsb2F0KTsKIAotICAgIHZvaWQgc2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0
aW5hdGlvbkNvbG9yU3BhY2UpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0UmVzdWx0Q29sb3JTcGFj
ZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKSBvdmVycmlkZTsKICAgICB2b2lkIHRyYW5z
Zm9ybVJlc3VsdENvbG9yU3BhY2UoRmlsdGVyRWZmZWN0KiwgY29uc3QgaW50KSBvdmVycmlkZTsK
IAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVGbG9vZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVGbG9vZC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaAkod29ya2luZyBjb3B5KQpAQCAt
NDAsOCArNDAsOCBAQCBwdWJsaWM6CiAjaWYgIVVTRShDRykKICAgICAvLyBmZUZsb29kIGRvZXMg
bm90IHBlcmZvcm0gY29sb3IgaW50ZXJwb2xhdGlvbiBvZiBhbnkga2luZCwgc28gdGhlIHJlc3Vs
dCBpcyBhbHdheXMgaW4gdGhlIGN1cnJlbnQKICAgICAvLyBjb2xvciBzcGFjZSByZWdhcmRsZXNz
IG9mIHRoZSB2YWx1ZSBvZiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMuCi0gICAgdm9pZCBz
ZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSkgb3ZlcnJpZGUgeyBG
aWx0ZXJFZmZlY3Q6OnNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKTsgfQotICAgIHZvaWQgc2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UpIG92ZXJyaWRlIHsgRmlsdGVyRWZmZWN0OjpzZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQik7IH0KKyAgICB2b2lkIHNldE9wZXJhdGluZ0NvbG9yU3BhY2Uo
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJikgb3ZlcnJpZGUgeyBGaWx0ZXJFZmZlY3Q6OnNl
dFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOyB9CisgICAg
dm9pZCBzZXRSZXN1bHRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpIG92
ZXJyaWRlIHsgRmlsdGVyRWZmZWN0OjpzZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpKTsgfQogI2VuZGlmCiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFVGlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBGRVRpbGU6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgICAgIHRpbGVSZWN0LnNjYWxlKGZpbHRlci5m
aWx0ZXJSZXNvbHV0aW9uKCkud2lkdGgoKSwgZmlsdGVyLmZpbHRlclJlc29sdXRpb24oKS5oZWln
aHQoKSk7CiAgICAgfQogCi0gICAgYXV0byB0aWxlSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0
OjpjcmVhdGVJbWFnZUJ1ZmZlcih0aWxlUmVjdCwgdGlsZVJlY3QsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQiwgZmlsdGVyKCkucmVuZGVyaW5nTW9kZSgpKTsKKyAgICBhdXRvIHRpbGVJbWFn
ZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHRpbGVSZWN0LCB0aWxl
UmVjdCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGZpbHRlcigpLnJlbmRlcmluZ01v
ZGUoKSk7CiAgICAgaWYgKCF0aWxlSW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRWZmZWN0LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MzksNyArNDM5LDcgQEAgc3RhdGljIHZvaWQgY29weVVucHJlbXVsdGlwbHlpbmdBbHBoYShjbwog
I2VuZGlmCiB9CiAKLU9wdGlvbmFsPFBpeGVsQnVmZmVyPiBGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRQ
aXhlbEJ1ZmZlclRvQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UgdGFyZ2V0Q29sb3JT
cGFjZSwgUGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyKQorT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEZp
bHRlckVmZmVjdDo6Y29udmVydFBpeGVsQnVmZmVyVG9Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgdGFyZ2V0Q29sb3JTcGFjZSwgUGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVy
KQogewogICAgIC8vIEZJWE1FOiBVc2luZyBhbiBJbWFnZUJ1ZmZlciB0byBwZXJmb3JtIHRoZSBj
b2xvciBzcGFjZSBjb252ZXJzaW9uIGlzIHVubmVjZXNzYXJ5LiBXZSBjYW4gZG8gaXQgZGlyZWN0
bHkuCiAKQEAgLTQ1NCw3ICs0NTQsNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gRmlsdGVyRWZm
ZWN0Ojpjb252CiAgICAgcmV0dXJuIGNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZSh0YXJn
ZXRDb2xvclNwYWNlLCAqYnVmZmVyLCBkZXN0aW5hdGlvblJlY3QsIHBpeGVsQnVmZmVyLmZvcm1h
dCgpLmFscGhhRm9ybWF0KTsKIH0KIAotT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEZpbHRlckVmZmVj
dDo6Y29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSB0
YXJnZXRDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlciYgaW5wdXRCdWZmZXIsIGNvbnN0IEludFJlY3Qm
IHJlY3QsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0QWxwaGFGb3JtYXQpCitPcHRpb25h
bDxQaXhlbEJ1ZmZlcj4gRmlsdGVyRWZmZWN0Ojpjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3Bh
Y2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiB0YXJnZXRDb2xvclNwYWNlLCBJbWFnZUJ1
ZmZlciYgaW5wdXRCdWZmZXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIEFscGhhUHJlbXVsdGlwbGlj
YXRpb24gb3V0cHV0QWxwaGFGb3JtYXQpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgY2FuIGJlIGRv
bmUgbW9yZSBkaXJlY3RseSB1c2luZyBQaXhlbEJ1ZmZlckNvbnZlcnNpb24uCiAKQEAgLTQ3Miw3
ICs0NzIsNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gRmlsdGVyRWZmZWN0Ojpjb252CiAgICAg
cmV0dXJuIGNvbnZlcnRlZEJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoZm9ybWF0LCByZWN0KTsKIH0K
IAotdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRp
b24oVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KQordm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRJbWFnZUJ1
ZmZlclRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIEFscGhhUHJlbXVsdGlwbGljYXRpb24g
b3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICAvLyBDb252ZXJ0
cyB0aGUgZGF0YSBzdG9yZWQgaW4gbV9pbWFnZUJ1ZmZlclJlc3VsdCwgYW5kIHNhdmUgdG8gZGVz
dGluYXRpb24KICAgICBhdXRvIGNvbnZlcnRlZFBpeGVsQnVmZmVyID0gY29udmVydEltYWdlQnVm
ZmVyVG9Db2xvclNwYWNlKGNvbG9yU3BhY2UsICptX2ltYWdlQnVmZmVyUmVzdWx0LCB7IEludFBv
aW50KCksIG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpIH0sIG91dHB1dEZvcm1hdCk7CkBAIC00
ODEsNyArNDgxLDcgQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRJbWFnZUJ1Zgog
ICAgIGNvcHlJbWFnZUJ5dGVzKGNvbnZlcnRlZFBpeGVsQnVmZmVyLT5kYXRhKCksIGRlc3RpbmF0
aW9uLCBkZXN0UmVjdCk7CiB9CiAKLXZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5Q29udmVydGVkUGl4
ZWxCdWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgUGl4
ZWxCdWZmZXImIHBpeGVsQnVmZmVyLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEZpbHRlckVmZmVjdDo6Y29weUNvbnZlcnRl
ZFBpeGVsQnVmZmVyVG9EZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24s
IFBpeGVsQnVmZmVyJiBwaXhlbEJ1ZmZlciwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBj
b2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICAvLyBDb252ZXJ0cyB0
aGUgZGF0YSBzdG9yZWQgaW4gbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdC9tX3ByZW11bHRpcGxp
ZWRJbWFnZVJlc3VsdCwKICAgICAvLyB3aGljaGV2ZXIgaXNuJ3QgbnVsbCwgYW5kIHNhdmUgdG8g
ZGVzdGluYXRpb24KQEAgLTYzNiw3ICs2MzYsNyBAQCBib29sIEZpbHRlckVmZmVjdDo6cmVxdWly
ZXNQaXhlbEJ1ZmZlckNvCiAjZW5kaWYKIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3Q6OnRyYW5zZm9y
bVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIGRlc3RpbmF0aW9uQ29sb3JT
cGFjZSkKK3ZvaWQgRmlsdGVyRWZmZWN0Ojp0cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKGNvbnN0
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgZGVzdGluYXRpb25Db2xvclNwYWNlKQogewogI2lmIFVT
RShDRykKICAgICAvLyBDRyBoYW5kbGVzIGNvbG9yIHNwYWNlIGFkanVzdG1lbnRzIGludGVybmFs
bHkuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ckVmZmVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDcgKzIzLDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbi5oIgotI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJEZXN0
aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJJ
bnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50UmVjdEV4dGVudC5oIgpAQCAtMTY1LDEzICsxNjUsMTMg
QEAgcHVibGljOgogICAgIGJvb2wgY2xpcHNUb0JvdW5kcygpIGNvbnN0IHsgcmV0dXJuIG1fY2xp
cHNUb0JvdW5kczsgfQogICAgIHZvaWQgc2V0Q2xpcHNUb0JvdW5kcyhib29sIHZhbHVlKSB7IG1f
Y2xpcHNUb0JvdW5kcyA9IHZhbHVlOyB9CiAKLSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugb3Bl
cmF0aW5nQ29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW5nQ29sb3JTcGFjZTsg
fQotICAgIHZpcnR1YWwgdm9pZCBzZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29s
b3JTcGFjZSBjb2xvclNwYWNlKSB7IG1fb3BlcmF0aW5nQ29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7
IH0KLSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgcmVzdWx0Q29sb3JTcGFjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzdWx0Q29sb3JTcGFjZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRSZXN1bHRD
b2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKSB7IG1fcmVzdWx0Q29s
b3JTcGFjZSA9IGNvbG9yU3BhY2U7IH0KKyAgICBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
IG9wZXJhdGluZ0NvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX29wZXJhdGluZ0NvbG9yU3Bh
Y2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0T3BlcmF0aW5nQ29sb3JTcGFjZShjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpIHsgbV9vcGVyYXRpbmdDb2xvclNwYWNlID0g
Y29sb3JTcGFjZTsgfQorICAgIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgcmVzdWx0Q29s
b3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0Q29sb3JTcGFjZTsgfQorICAgIHZpcnR1
YWwgdm9pZCBzZXRSZXN1bHRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYg
Y29sb3JTcGFjZSkgeyBtX3Jlc3VsdENvbG9yU3BhY2UgPSBjb2xvclNwYWNlOyB9CiAKICAgICB2
aXJ0dWFsIHZvaWQgdHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShGaWx0ZXJFZmZlY3QqIGluLCBj
b25zdCBpbnQpIHsgaW4tPnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UobV9vcGVyYXRpbmdDb2xv
clNwYWNlKTsgfQotICAgIHZvaWQgdHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlv
bkNvbG9yU3BhY2UpOworICAgIHZvaWQgdHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKICAgICAKICAgICBzdGF0aWMgVmVjdG9yPGZsb2F0PiBu
b3JtYWxpemVkRmxvYXRzKGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZhbHVlcykKICAgICB7CkBAIC0y
MDMsMTEgKzIwMywxMSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5
U29mdHdhcmUoKSA9IDA7CiAKICAgICB2b2lkIGNvcHlJbWFnZUJ5dGVzKGNvbnN0IFVpbnQ4Q2xh
bXBlZEFycmF5JiBzb3VyY2UsIFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3Qg
SW50UmVjdCYpIGNvbnN0OwotICAgIHZvaWQgY29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0
aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZvaWQgY29weUNvbnZlcnRl
ZFBpeGVsQnVmZmVyVG9EZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYsIFBpeGVsQnVmZmVy
JiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdm9pZCBjb3B5
Q29udmVydGVkSW1hZ2VCdWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiwgY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwgY29uc3Qg
SW50UmVjdCYpOworICAgIHZvaWQgY29weUNvbnZlcnRlZFBpeGVsQnVmZmVyVG9EZXN0aW5hdGlv
bihVaW50OENsYW1wZWRBcnJheSYsIFBpeGVsQnVmZmVyJiwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiwgY29uc3QgSW50UmVjdCYpOwogICAgIGJvb2wgcmVxdWlyZXNQaXhlbEJ1ZmZlckNv
bG9yU3BhY2VDb252ZXJzaW9uKE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4pOwotICAg
IE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UoRGVz
dGluYXRpb25Db2xvclNwYWNlLCBJbWFnZUJ1ZmZlciYsIGNvbnN0IEludFJlY3QmLCBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uKTsKLSAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gY29udmVydFBpeGVs
QnVmZmVyVG9Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUGl4ZWxCdWZmZXImKTsK
KyAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gY29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNl
KGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEltYWdlQnVmZmVyJiwgY29uc3QgSW50UmVj
dCYsIEFscGhhUHJlbXVsdGlwbGljYXRpb24pOworICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBj
b252ZXJ0UGl4ZWxCdWZmZXJUb0NvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiwgUGl4ZWxCdWZmZXImKTsKICAgICAKIAogICAgIEZpbHRlciYgbV9maWx0ZXI7CkBAIC0yNDQs
MTMgKzI0NCwxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9jbGlwc1RvQm91bmRzIHsgdHJ1ZSB9
OwogCiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQotICAg
IHN0YXRpYyBjb25zdGV4cHIgYXV0byBkZWZhdWx0T3BlcmF0aW5nQ29sb3JTcGFjZSA9IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQjsKKyAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ug
bV9vcGVyYXRpbmdDb2xvclNwYWNlIHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdC
KCkgfTsKICNlbHNlCi0gICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGRlZmF1bHRPcGVyYXRpbmdD
b2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOworICAgIERlc3RpbmF0aW9u
Q29sb3JTcGFjZSBtX29wZXJhdGluZ0NvbG9yU3BhY2UgeyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSB9OwogI2VuZGlmCi0KLSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgbV9vcGVyYXRp
bmdDb2xvclNwYWNlIHsgZGVmYXVsdE9wZXJhdGluZ0NvbG9yU3BhY2UgfTsKLSAgICBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UgbV9yZXN1bHRDb2xvclNwYWNlIHsgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCIH07CisgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1fcmVzdWx0Q29sb3JTcGFjZSB7
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgCiAgICAgY29uc3QgVHlwZSBt
X2ZpbHRlckVmZmVjdENsYXNzVHlwZTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9T
b3VyY2VHcmFwaGljLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgcHJpdmF0ZToK
ICAgICBTb3VyY2VHcmFwaGljKEZpbHRlciYgZmlsdGVyKQogICAgICAgICA6IEZpbHRlckVmZmVj
dChmaWx0ZXIsIFR5cGU6OlNvdXJjZUdyYXBoaWMpCiAgICAgewotICAgICAgICBzZXRPcGVyYXRp
bmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CisgICAgICAgIHNldE9w
ZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgIH0K
IAogICAgIGNvbnN0IGNoYXIqIGZpbHRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiU291
cmNlR3JhcGhpYyI7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3Np
YUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJh
dGlvblJlY29yZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA3Niw3ICsxMDc2LDcgQEAgdm9p
ZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjphcHBlbmQoc3RkOgogICAgIG1fY29tbWFuZExpc3Qu
YXBwZW5kKFdURk1vdmUoY29tbWFuZCkpOwogfQogCi12b2lkIENhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXI6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpCit2b2lkIENhaXJv
T3BlcmF0aW9uUmVjb3JkZXI6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29u
dGV4dCYpPiYmKQogewogICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWly
b09wZXJhdGlvblJlY29yZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5o
CShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTk3LDcgKzk3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsaXBQYXRoKGNvbnN0IFdl
YkNvcmU6OlBhdGgmLCBXZWJDb3JlOjpXaW5kUnVsZSkgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6
SW50UmVjdCBjbGlwQm91bmRzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZl
cihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJy
aWRlOwotICAgIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgZGVzdGluYXRpb24sIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSwgRnVuY3Rp
b248dm9pZChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKT4mJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiwgRnVuY3Rpb248dm9p
ZChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKT4mJikgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKFZJ
REVPKQogICAgIHZvaWQgcGFpbnRGcmFtZUZvck1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVyJiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0aW5hdGlvbikgb3ZlcnJpZGU7CiAgICAgYm9v
bCBjYW5QYWludEZyYW1lRm9yTWVkaWEoY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXImKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDR0xMYXllci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmlj
b3NpYUdDR0xMYXllci5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQ0dMTGF5ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgR0NHTExheWVyOjpzd2FwQnVmZmVyc0lm
TmVlZGVkKCkKICAgICBJbnRTaXplIHRleHR1cmVTaXplKG1fY29udGV4dC5tX2N1cnJlbnRXaWR0
aCwgbV9jb250ZXh0Lm1fY3VycmVudEhlaWdodCk7CiAgICAgVGV4dHVyZU1hcHBlckdMOjpGbGFn
cyBmbGFncyA9IG1fY29udGV4dC5jb250ZXh0QXR0cmlidXRlcygpLmFscGhhID8gVGV4dHVyZU1h
cHBlckdMOjpTaG91bGRCbGVuZCA6IDA7CiAjaWYgVVNFKEFOR0xFKQotICAgIFJlZlB0cjxXZWJD
b3JlOjpJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRleHR1
cmVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgUmVmUHRyPFdlYkNvcmU6Oklt
YWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGV4dHVyZVNpemUs
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAg
ICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
QmFzZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02Myw3ICs2Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogT3B0aW9uYWw8UGl4
ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1
bHRzKCkKIHsKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCIH07CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBp
eGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgp
KTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMRVMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWwKIAogT3B0aW9uYWw8UGl4
ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1
bHRzKCkKIHsKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCIH07CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBp
eGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgp
KTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1
cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9CaXRtYXBUZXh0dXJlLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCw3ICszOCw3IEBAIHZvaWQgQml0bWFwVGV4dHVyZTo6dXBkYXRlQ29udGVudHMo
R3JhcGgKIHsKICAgICAvLyBNYWtpbmcgYW4gdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQg
YnVmZmVyIGhlcmUgaXMgT0sgYmVjYXVzZSB0aGlzIGNvZGUKICAgICAvLyBpc24ndCB1c2VkIGJ5
IGFueSBwbGF0Zm9ybXMgdGhhdCByZXNwZWN0IHRoZSBhY2NlbGVyYXRlZCBiaXQuCi0gICAgYXV0
byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGFyZ2V0UmVjdC5zaXplKCksIFJl
bmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZSh0YXJnZXRSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVl
bkd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDA2IE1pY2hhZWwgRW1tZWwgbWlrZS5lbW1lbEBnbWFpbC5jb20KICAqIENvcHly
aWdodCAoQykgMjAwOCBDaHJpc3RpYW4gRHl3YW4gPGNocmlzdGlhbkBpbWVuZGlvLmNvbT4KICAq
IENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLgpAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAKKyNpbmNsdWRl
ICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNs
dWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJHdGtVdGlsaXRpZXMuaCIKQEAgLTg1LDYgKzg2
LDExIEBAIGJvb2wgc2NyZWVuSXNNb25vY2hyb21lKFdpZGdldCogd2lkZ2V0KQogICAgIHJldHVy
biBzY3JlZW5EZXB0aCh3aWRnZXQpIDwgMjsKIH0KIAorRGVzdGluYXRpb25Db2xvclNwYWNlIHNj
cmVlbkNvbG9yU3BhY2UoV2lkZ2V0KikKK3sKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCk7Cit9CisKIGJvb2wgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMoKQogewogICAg
IHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9y
bVNjcmVlbklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGxhdGZvcm1TY3JlZW5JT1MubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNjcmVlbklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMTQgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIxIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTg4LDkgKzg4LDkgQEAgYm9vbCBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UoV2lkZwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotQ0dDb2xvclNwYWNlUmVmIHNjcmVlbkNvbG9yU3BhY2Uo
V2lkZ2V0KiB3aWRnZXQpCitEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc2NyZWVuQ29sb3JTcGFjZShX
aWRnZXQqIHdpZGdldCkKIHsKLSAgICByZXR1cm4gc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9y
KHdpZGdldCkgPyBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCkgOiBzUkdCQ29sb3JTcGFjZVJl
ZigpOworICAgIHJldHVybiBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3Iod2lkZ2V0KSA/IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSB7IGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKSB9IDogRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiB9CiAKIC8vIFRoZXNlIGZ1bmN0aW9ucyBzY2Fs
ZSBiZXR3ZWVuIHNjcmVlbiBhbmQgcGFnZSBjb29yZGluYXRlcyBiZWNhdXNlIEphdmFTY3JpcHQv
RE9NIG9wZXJhdGlvbnMKQEAgLTE5MywxNiArMTkzLDE0IEBAIFNjcmVlblByb3BlcnRpZXMgY29s
bGVjdFNjcmVlblByb3BlcnRpZXMKICAgICAgICAgRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJl
Y3QgPSBzY3JlZW4uYm91bmRzOwogICAgICAgICBzY3JlZW5BdmFpbGFibGVSZWN0LnNldFkoTlNN
YXhZKHNjcmVlbi5ib3VuZHMpIC0gKHNjcmVlbkF2YWlsYWJsZVJlY3QueSgpICsgc2NyZWVuQXZh
aWxhYmxlUmVjdC5oZWlnaHQoKSkpOyAvLyBmbGlwCiAgICAgICAgIEZsb2F0UmVjdCBzY3JlZW5S
ZWN0ID0gc2NyZWVuLl9yZWZlcmVuY2VCb3VuZHM7Ci0gICAgICAgIAotICAgICAgICBSZXRhaW5Q
dHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNlID0gc2NyZWVuQ29sb3JTcGFjZShudWxscHRy
KTsKLSAgICAgICAgCisgICAgICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlIHsg
c2NyZWVuQ29sb3JTcGFjZShudWxscHRyKSB9OwogICAgICAgICBpbnQgc2NyZWVuRGVwdGggPSBX
ZWJDb3JlOjpzY3JlZW5EZXB0aChudWxscHRyKTsKICAgICAgICAgaW50IHNjcmVlbkRlcHRoUGVy
Q29tcG9uZW50ID0gV2ViQ29yZTo6c2NyZWVuRGVwdGhQZXJDb21wb25lbnQobnVsbHB0cik7CiAg
ICAgICAgIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yID0gV2ViQ29yZTo6c2NyZWVu
U3VwcG9ydHNFeHRlbmRlZENvbG9yKG51bGxwdHIpOwogICAgICAgICBib29sIHNjcmVlbkhhc0lu
dmVydGVkQ29sb3JzID0gV2ViQ29yZTo6c2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMoKTsKICAgICAg
ICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBXZWJDb3JlOjpzY3JlZW5QUElGYWN0b3IoKTsKIAotICAg
ICAgICBzY3JlZW5Qcm9wZXJ0aWVzLnNjcmVlbkRhdGFNYXAuc2V0KCsrZGlzcGxheUlELCBTY3Jl
ZW5EYXRhIHsgc2NyZWVuQXZhaWxhYmxlUmVjdCwgc2NyZWVuUmVjdCwgY29sb3JTcGFjZSwgc2Ny
ZWVuRGVwdGgsIHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50LCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVk
Q29sb3IsIHNjcmVlbkhhc0ludmVydGVkQ29sb3JzLCBmYWxzZSwgc2NhbGVGYWN0b3IgfSk7Cisg
ICAgICAgIHNjcmVlblByb3BlcnRpZXMuc2NyZWVuRGF0YU1hcC5zZXQoKytkaXNwbGF5SUQsIFNj
cmVlbkRhdGEgeyBzY3JlZW5BdmFpbGFibGVSZWN0LCBzY3JlZW5SZWN0LCBXVEZNb3ZlKGNvbG9y
U3BhY2UpLCBzY3JlZW5EZXB0aCwgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQsIHNjcmVlblN1cHBv
cnRzRXh0ZW5kZWRDb2xvciwgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMsIGZhbHNlLCBzY2FsZUZh
Y3RvciB9KTsKICAgICAgICAgCiAgICAgICAgIGlmIChzY3JlZW4gPT0gW1BBTDo6Z2V0VUlTY3Jl
ZW5DbGFzcygpIG1haW5TY3JlZW5dKQogICAgICAgICAgICAgc2NyZWVuUHJvcGVydGllcy5wcmlt
YXJ5RGlzcGxheUlEID0gZGlzcGxheUlEOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1hYy5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzAsOSArMTMwLDcgQEAgU2NyZWVuUHJvcGVydGllcyBjb2xsZWN0U2NyZWVuUHJv
cGVydGllcwogICAgICAgICBGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxlUmVjdCA9IHNjcmVlbi52
aXNpYmxlRnJhbWU7CiAgICAgICAgIHNjcmVlbkF2YWlsYWJsZVJlY3Quc2V0WShOU01heFkoc2Ny
ZWVuLmZyYW1lKSAtIChzY3JlZW5BdmFpbGFibGVSZWN0LnkoKSArIHNjcmVlbkF2YWlsYWJsZVJl
Y3QuaGVpZ2h0KCkpKTsgLy8gZmxpcAogICAgICAgICBGbG9hdFJlY3Qgc2NyZWVuUmVjdCA9IHNj
cmVlbi5mcmFtZTsKLQotICAgICAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNw
YWNlID0gc2NyZWVuLmNvbG9yU3BhY2UuQ0dDb2xvclNwYWNlOwotCisgICAgICAgIERlc3RpbmF0
aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlIHsgc2NyZWVuLmNvbG9yU3BhY2UuQ0dDb2xvclNwYWNl
IH07CiAgICAgICAgIGludCBzY3JlZW5EZXB0aCA9IE5TQml0c1BlclBpeGVsRnJvbURlcHRoKHNj
cmVlbi5kZXB0aCk7CiAgICAgICAgIGludCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCA9IE5TQml0
c1BlclNhbXBsZUZyb21EZXB0aChzY3JlZW4uZGVwdGgpOwogICAgICAgICBib29sIHNjcmVlblN1
cHBvcnRzRXh0ZW5kZWRDb2xvciA9IFtzY3JlZW4gY2FuUmVwcmVzZW50RGlzcGxheUdhbXV0Ok5T
RGlzcGxheUdhbXV0UDNdOwpAQCAtMTYzLDcgKzE2MSw3IEBAIFNjcmVlblByb3BlcnRpZXMgY29s
bGVjdFNjcmVlblByb3BlcnRpZXMKICAgICAgICAgaWYgKGRpc3BsYXlNYXNrKQogICAgICAgICAg
ICAgZ3B1SUQgPSBncHVJREZvckRpc3BsYXlNYXNrKGRpc3BsYXlNYXNrKTsKIAotICAgICAgICBz
Y3JlZW5Qcm9wZXJ0aWVzLnNjcmVlbkRhdGFNYXAuc2V0KGRpc3BsYXlJRCwgU2NyZWVuRGF0YSB7
IHNjcmVlbkF2YWlsYWJsZVJlY3QsIHNjcmVlblJlY3QsIGNvbG9yU3BhY2UsIHNjcmVlbkRlcHRo
LCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yLCBz
Y3JlZW5IYXNJbnZlcnRlZENvbG9ycywgc2NyZWVuU3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlLCBz
Y3JlZW5Jc01vbm9jaHJvbWUsIGRpc3BsYXlNYXNrLCBncHVJRCwgZHluYW1pY1JhbmdlTW9kZSwg
c2NhbGVGYWN0b3IgfSk7CisgICAgICAgIHNjcmVlblByb3BlcnRpZXMuc2NyZWVuRGF0YU1hcC5z
ZXQoZGlzcGxheUlELCBTY3JlZW5EYXRhIHsgc2NyZWVuQXZhaWxhYmxlUmVjdCwgc2NyZWVuUmVj
dCwgV1RGTW92ZShjb2xvclNwYWNlKSwgc2NyZWVuRGVwdGgsIHNjcmVlbkRlcHRoUGVyQ29tcG9u
ZW50LCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IsIHNjcmVlbkhhc0ludmVydGVkQ29sb3Jz
LCBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UsIHNjcmVlbklzTW9ub2Nocm9tZSwgZGlz
cGxheU1hc2ssIGdwdUlELCBkeW5hbWljUmFuZ2VNb2RlLCBzY2FsZUZhY3RvciB9KTsKIAogICAg
ICAgICBpZiAoIXNjcmVlblByb3BlcnRpZXMucHJpbWFyeURpc3BsYXlJRCkKICAgICAgICAgICAg
IHNjcmVlblByb3BlcnRpZXMucHJpbWFyeURpc3BsYXlJRCA9IGRpc3BsYXlJRDsKQEAgLTM0MCwx
MyArMzM4LDEzIEBAIE5TU2NyZWVuICpzY3JlZW4oUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGwKICAg
ICByZXR1cm4gZmlyc3RTY3JlZW4oKTsKIH0KIAotQ0dDb2xvclNwYWNlUmVmIHNjcmVlbkNvbG9y
U3BhY2UoV2lkZ2V0KiB3aWRnZXQpCitEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc2NyZWVuQ29sb3JT
cGFjZShXaWRnZXQqIHdpZGdldCkKIHsKICAgICBpZiAoYXV0byBkYXRhID0gc2NyZWVuUHJvcGVy
dGllcyh3aWRnZXQpKQotICAgICAgICByZXR1cm4gZGF0YS0+Y29sb3JTcGFjZS5nZXQoKTsKKyAg
ICAgICAgcmV0dXJuIGRhdGEtPmNvbG9yU3BhY2U7CiAKICAgICBBU1NFUlQoaGFzUHJvY2Vzc1By
aXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5Db21tdW5pY2F0ZVdpdGhXaW5kb3dTZXJ2ZXIp
KTsKLSAgICByZXR1cm4gc2NyZWVuKHdpZGdldCkuY29sb3JTcGFjZS5DR0NvbG9yU3BhY2U7Cisg
ICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB7IHNjcmVlbih3aWRnZXQpLmNvbG9yU3Bh
Y2UuQ0dDb2xvclNwYWNlIH07CiB9CiAKIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9y
KFdpZGdldCogd2lkZ2V0KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1l
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1h
Yy5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Ro
ZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03MjYsNyArNzI2LDcgQEAgYm9vbCBUaGVtZU1h
Yzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaQogCiAgICAgaWYgKHVzZUltYWdlQnVmZmVyKSB7
CiAgICAgICAgIE5TUmVjdCBpbWFnZUJ1ZmZlckRyYXdSZWN0ID0gTlNSZWN0KEZsb2F0UmVjdChi
dXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwg
cmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKSk7Ci0gICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihyZWN0LnNpemUoKSArIDIgKiBG
bG9hdFNpemUoYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRs
aW5lV2lkdGgpLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
LCBjb250ZXh0KTsKKyAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVh
dGVDb21wYXRpYmxlQnVmZmVyKHJlY3Quc2l6ZSgpICsgMiAqIEZsb2F0U2l6ZShidXR0b25Gb2N1
c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCksIGRldmljZVNj
YWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY29udGV4dCk7CiAgICAg
ICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gbmVlZHNSZXBhaW50Owog
ICAgICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZUdTdHJlYW1lci5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZUdTdHJlYW1lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBN
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lcjo6dQogICAgIGlmICghaW1hZ2VCdWZmZXIp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+
Z2V0UGl4ZWxCdWZmZXIoeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQs
IFBpeGVsRm9ybWF0OjpCR1JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH0sIHsgeyB9
LCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSB9KTsKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0g
aW1hZ2VCdWZmZXItPmdldFBpeGVsQnVmZmVyKHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5w
cmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6QkdSQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpIH0sIHsgeyB9LCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSB9KTsKICAgICBpZiAo
IXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCShy
ZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFs
dGltZVZpZGVvU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU0LDcgKzQ1NCw3IEBAIElt
YWdlQnVmZmVyKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6aW0KICAgICBpZiAobV9pbWFnZUJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXIuZ2V0KCk7CiAKLSAgICBtX2ltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjYXB0dXJlU2l6ZSgpLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CisgICAgbV9pbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2Fw
dHVyZVNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFtX2ltYWdl
QnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcGxheXN0YXRpb24vUGxhdGZvcm1TY3JlZW5QbGF5U3RhdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcGxheXN0YXRpb24vUGxhdGZvcm1TY3Jl
ZW5QbGF5U3RhdGlvbi5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3BsYXlzdGF0aW9uL1BsYXRmb3JtU2NyZWVuUGxheVN0YXRpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1TY3JlZW4uaCIKIAorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgog
I2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKQEAg
LTcxLDQgKzcyLDkgQEAgYm9vbCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IoV2lkZ2V0Kgog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAorRGVzdGluYXRpb25Db2xvclNwYWNlIHNjcmVlbkNvbG9y
U3BhY2UoV2lkZ2V0KikKK3sKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVlbldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1BsYXRmb3JtU2NyZWVuV2luLmNwcAkocmV2aXNpb24gMjc3OTE5
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BsYXRmb3JtU2NyZWVuV2luLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkZyYW1lVmlldy5oIgpAQCAtMTA0LDEyICsxMDUsMTAgQEAgRmxvYXRSZWN0IHNjcmVlbkF2
YWlsYWJsZVJlY3QoV2lkZ2V0KiB3aQogICAgIHJldHVybiBtb25pdG9ySW5mby5yY1dvcms7CiB9
CiAKLSNpZiBVU0UoQ0cpCi1DR0NvbG9yU3BhY2VSZWYgc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQq
KQorRGVzdGluYXRpb25Db2xvclNwYWNlIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KikKIHsKLSAg
ICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCk7CiB9Ci0jZW5kaWYKIAogYm9vbCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVk
Q29sb3IoV2lkZ2V0KikKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dwZS9QbGF0
Zm9ybVNjcmVlbldQRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d3BlL1BsYXRmb3JtU2NyZWVuV1BFLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd3BlL1BsYXRmb3JtU2NyZWVuV1BFLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
U2NyZWVuLmgiCiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRl
ICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIldp
ZGdldC5oIgpAQCAtODEsNiArODIsMTEgQEAgRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3Qo
V2lkZ2V0KiB3aQogICAgIHJldHVybiBzY3JlZW5SZWN0KHdpZGdldCk7CiB9CiAKK0Rlc3RpbmF0
aW9uQ29sb3JTcGFjZSBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCopCit7CisgICAgcmV0dXJuIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOworfQorCiBib29sIHNjcmVlblN1cHBvcnRzRXh0
ZW5kZWRDb2xvcihXaWRnZXQqKQogewogICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaAkod29ya2luZyBjb3B5KQpAQCAtMTgs
NiArMTgsNyBAQAogICovCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29s
b3JTcGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
VHlwZXNHTC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKQEAgLTMyLDggKzMzLDcgQEAKICNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSA8V2Vi
Q29yZS9Db2xvclNwYWNlQ0cuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0lPU3VyZmFjZS5oPgorI2lu
Y2x1ZGUgIklPU3VyZmFjZS5oIgogI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CiAjZW5k
aWYKIApAQCAtNDQ2LDcgKzQ0Niw3IEBAIE9wdGlvbmFsPERldmljZTo6RnJhbWVEYXRhOjpMYXll
ckRhdGE+IEQKICAgICBXVEY6Ok1hY2hTZW5kUmlnaHQgc3VyZmFjZVNlbmRSaWdodDsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHN1cmZhY2VTZW5kUmlnaHQpKQogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotICAgIGxheWVyRGF0YS5zdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpj
cmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoc3VyZmFjZVNlbmRSaWdodCksIFdlYkNvcmU6OnNS
R0JDb2xvclNwYWNlUmVmKCkpOworICAgIGxheWVyRGF0YS5zdXJmYWNlID0gV2ViQ29yZTo6SU9T
dXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoc3VyZmFjZVNlbmRSaWdodCksIFdl
YkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICNlbmRpZgogICAgIHJldHVy
biBsYXllckRhdGE7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNw
cAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMSw5ICsxMTEsOSBAQCBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBDU1NGaWx0ZXI6OmJ1aWxkUmVmCiAgICAgICAgIGVmZmVjdEVsZW1lbnQuc2V0U3RhbmRh
cmRBdHRyaWJ1dGVzKGVmZmVjdC5nZXQoKSk7CiAgICAgICAgIGlmIChlZmZlY3RFbGVtZW50LnJl
bmRlcmVyKCkpIHsKICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NS
R0IpCi0gICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoZWZmZWN0RWxl
bWVudC5yZW5kZXJlcigpLT5zdHlsZSgpLnN2Z1N0eWxlKCkuY29sb3JJbnRlcnBvbGF0aW9uRmls
dGVycygpID09IENvbG9ySW50ZXJwb2xhdGlvbjo6TGluZWFyUkdCID8gRGVzdGluYXRpb25Db2xv
clNwYWNlOjpMaW5lYXJTUkdCIDogRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKKyAgICAg
ICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShlZmZlY3RFbGVtZW50LnJlbmRl
cmVyKCktPnN0eWxlKCkuc3ZnU3R5bGUoKS5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzKCkgPT0g
Q29sb3JJbnRlcnBvbGF0aW9uOjpMaW5lYXJSR0IgPyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6Okxp
bmVhclNSR0IoKSA6IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICNlbHNlCi0gICAg
ICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKTsKKyAgICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAjZW5kaWYKICAgICAgICAgfQogICAgICAg
ICBidWlsZGVyLT5hZGQoZWZmZWN0RWxlbWVudC5yZXN1bHQoKSwgZWZmZWN0KTsKQEAgLTI5Niw3
ICsyOTYsNyBAQCBib29sIENTU0ZpbHRlcjo6YnVpbGQoUmVuZGVyRWxlbWVudCYgcmVuCiAgICAg
ICAgICAgICAvLyBVbmxpa2UgU1ZHIEZpbHRlcnMgYW5kIENTU0ZpbHRlckltYWdlcywgZmlsdGVy
IGZ1bmN0aW9ucyBvbiB0aGUgZmlsdGVyCiAgICAgICAgICAgICAvLyBwcm9wZXJ0eSBhcHBsaWVk
IGhlcmUgc2hvdWxkIG5vdCBjbGlwIHRvIHRoZWlyIHByaW1pdGl2ZSBzdWJyZWdpb25zLgogICAg
ICAgICAgICAgZWZmZWN0LT5zZXRDbGlwc1RvQm91bmRzKGNvbnN1bWVyID09IEZpbHRlckNvbnN1
bWVyOjpGaWx0ZXJGdW5jdGlvbik7Ci0gICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0Nv
bG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKKyAgICAgICAgICAgIGVmZmVj
dC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChmaWx0ZXJPcGVyYXRpb24udHlwZSgpICE9
IEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFKSB7CiAgICAgICAgICAgICAgICAgZWZmZWN0LT5p
bnB1dEVmZmVjdHMoKSA9IHsgV1RGTW92ZShwcmV2aW91c0VmZmVjdCkgfTsKQEAgLTM0NCwxMSAr
MzQ0LDExIEBAIHZvaWQgQ1NTRmlsdGVyOjphbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmUKICAgICBJ
bnRTaXplIGxvZ2ljYWxTaXplIHsgbV9zb3VyY2VEcmF3aW5nUmVnaW9uLnNpemUoKSB9OwogICAg
IGlmICghc291cmNlSW1hZ2UoKSB8fCBzb3VyY2VJbWFnZSgpLT5sb2dpY2FsU2l6ZSgpICE9IGxv
Z2ljYWxTaXplKSB7CiAjaWYgVVNFKERJUkVDVDJEKQotICAgICAgICBzZXRTb3VyY2VJbWFnZShJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZW5kZXJpbmdNb2RlKCksICZ0YXJnZXRD
b250ZXh0LCBmaWx0ZXJTY2FsZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVs
Rm9ybWF0OjpCR1JBOCkpOworICAgICAgICBzZXRTb3VyY2VJbWFnZShJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKGxvZ2ljYWxTaXplLCByZW5kZXJpbmdNb2RlKCksICZ0YXJnZXRDb250ZXh0LCBmaWx0ZXJT
Y2FsZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4
KSk7CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0odGFyZ2V0Q29udGV4dCk7CiAgICAgICAg
IFJlbmRlcmluZ01vZGUgbW9kZSA9IG1fZmlsdGVyUmVuZGVyZXIgPyBSZW5kZXJpbmdNb2RlOjpB
Y2NlbGVyYXRlZCA6IHJlbmRlcmluZ01vZGUoKTsKLSAgICAgICAgc2V0U291cmNlSW1hZ2UoSW1h
Z2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgbW9kZSwgZmlsdGVyU2NhbGUoKSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpKTsKKyAgICAgICAgc2V0
U291cmNlSW1hZ2UoSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgbW9kZSwgZmlsdGVy
U2NhbGUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JB
OCkpOwogI2VuZGlmCiAgICAgfQogICAgIG1fZ3JhcGhpY3NCdWZmZXJBdHRhY2hlZCA9IHRydWU7
CkBAIC0zODIsMTIgKzM4MiwxMiBAQCB2b2lkIENTU0ZpbHRlcjo6YXBwbHkoKQogICAgIGlmICht
X2ZpbHRlclJlbmRlcmVyKSB7CiAgICAgICAgIG1fZmlsdGVyUmVuZGVyZXItPmFwcGx5RWZmZWN0
cyhlZmZlY3QpOwogICAgICAgICBpZiAobV9maWx0ZXJSZW5kZXJlci0+aGFzUmVzdWx0KCkpIHsK
LSAgICAgICAgICAgIGVmZmVjdC50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQik7CisgICAgICAgICAgICBlZmZlY3QudHJhbnNmb3JtUmVzdWx0Q29s
b3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICB9CiAgICAgZWZmZWN0LmFwcGx5KCk7Ci0gICAgZWZmZWN0LnRy
YW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKKyAg
ICBlZmZlY3QudHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSk7CiB9CiAKIExheW91dFJlY3QgQ1NTRmlsdGVyOjpjb21wdXRlU291cmNlSW1hZ2VS
ZWN0Rm9yRGlydHlSZWN0KGNvbnN0IExheW91dFJlY3QmIGZpbHRlckJveFJlY3QsIGNvbnN0IExh
eW91dFJlY3QmIGRpcnR5UmVjdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODc2LDcgKzg3Niw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Rmls
bExheWUKICAgICAgICAgbWFza1JlY3QuaW50ZXJzZWN0KHNuYXBwZWRJbnRSZWN0KHBhaW50SW5m
by5yZWN0KSk7CiAKICAgICAgICAgLy8gTm93IGNyZWF0ZSB0aGUgbWFzay4KLSAgICAgICAgbWFz
a0ltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIobWFza1JlY3Quc2l6
ZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGNvbnRleHQpOworICAgICAgICBtYXNr
SW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihtYXNrUmVjdC5zaXpl
KCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBjb250ZXh0KTsKICAgICAgICAgaWYg
KCFtYXNrSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHBhaW50TWFza0ZvclRl
eHRGaWxsQm94KG1hc2tJbWFnZS5nZXQoKSwgbWFza1JlY3QsIGJveCwgc2Nyb2xsZWRQYWludFJl
Y3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjY3LDcgKzMyNjcsNyBA
QCBzdGF0aWMgUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm5Gb3JEZXNjcmlwCiB7CiAgICAgY29uc3Qg
RmxvYXRTaXplIHRpbGVTaXplIHsgMzIsIDE4IH07CiAKLSAgICBhdXRvIGltYWdlQnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIodGlsZVNpemUsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQiwgZGVzdENvbnRleHQpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcih0aWxlU2l6ZSwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCksIGRlc3RDb250ZXh0KTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgzLDExICsx
OTgzLDExIEBAIHZvaWQgUmVuZGVyVGhlbWVJT1M6OnBhaW50U3lzdGVtUHJldmlld0IKICAgICBJ
T1N1cmZhY2VSZWYgc3VyZmFjZTsKICAgICBpZiAodXNlU21hbGxCYWRnZSkgewogICAgICAgICBp
ZiAoIW1fc21hbGxCYWRnZVN1cmZhY2UpCi0gICAgICAgICAgICBtX3NtYWxsQmFkZ2VTdXJmYWNl
ID0gSU9TdXJmYWNlOjpjcmVhdGUoeyBzbWFsbEJhZGdlRGltZW5zaW9uLCBzbWFsbEJhZGdlRGlt
ZW5zaW9uIH0sIHNSR0JDb2xvclNwYWNlUmVmKCkpOworICAgICAgICAgICAgbV9zbWFsbEJhZGdl
U3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKHsgc21hbGxCYWRnZURpbWVuc2lvbiwgc21hbGxC
YWRnZURpbWVuc2lvbiB9LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAg
IHN1cmZhY2UgPSBtX3NtYWxsQmFkZ2VTdXJmYWNlLT5zdXJmYWNlKCk7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgaWYgKCFtX2xhcmdlQmFkZ2VTdXJmYWNlKQotICAgICAgICAgICAgbV9sYXJnZUJh
ZGdlU3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKHsgbGFyZ2VCYWRnZURpbWVuc2lvbiwgbGFy
Z2VCYWRnZURpbWVuc2lvbiB9LCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICAgICAgICAgIG1f
bGFyZ2VCYWRnZVN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZSh7IGxhcmdlQmFkZ2VEaW1lbnNp
b24sIGxhcmdlQmFkZ2VEaW1lbnNpb24gfSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkp
OwogICAgICAgICBzdXJmYWNlID0gbV9sYXJnZUJhZGdlU3VyZmFjZS0+c3VyZmFjZSgpOwogICAg
IH0KICAgICBbbV9jaUNvbnRleHQuZ2V0KCkgcmVuZGVyOnRyYW5zbGF0ZWRJbWFnZSB0b0lPU3Vy
ZmFjZTpzdXJmYWNlIGJvdW5kczpiYWRnZVJlY3QgY29sb3JTcGFjZTpzUkdCQ29sb3JTcGFjZVJl
ZigpXTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0J
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTMwOSw3ICsxMzA5LDcgQEAgYm9vbCBSZW5kZXJU
aGVtZU1hYzo6cGFpbnRQcm9ncmVzc0JhcihjbwogICAgIGNvbnN0IGF1dG8mIHJlbmRlclByb2dy
ZXNzID0gZG93bmNhc3Q8UmVuZGVyUHJvZ3Jlc3M+KHJlbmRlck9iamVjdCk7CiAgICAgZmxvYXQg
ZGV2aWNlU2NhbGVGYWN0b3IgPSByZW5kZXJPYmplY3QuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZh
Y3RvcigpOwogICAgIGJvb2wgaXNJbmRldGVybWluYXRlID0gcmVuZGVyUHJvZ3Jlc3MucG9zaXRp
b24oKSA8IDA7Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKGluZmxhdGVkUmVjdC5zaXplKCksIGRldmljZVNjYWxlRmFjdG9yLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIHBhaW50SW5mby5jb250ZXh0KCkpOworICAgIGF1dG8g
aW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihpbmZsYXRl
ZFJlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCksIHBhaW50SW5mby5jb250ZXh0KCkpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1NoYXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1NoYXBlLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9TaGFwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw3ICsxODEsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0CiAgICAgSW50UmVjdCBtYXJnaW5S
ZWN0ID0gc25hcHBlZEludFJlY3QobWFyZ2luUik7CiAgICAgYXV0byBpbnRlcnZhbHMgPSBtYWtl
VW5pcXVlPFJhc3RlclNoYXBlSW50ZXJ2YWxzPihtYXJnaW5SZWN0LmhlaWdodCgpLCAtbWFyZ2lu
UmVjdC55KCkpOwogICAgIC8vIEZJWE1FICgxNDk0MjApOiBUaGlzIGJ1ZmZlciBzaG91bGQgbm90
IGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkLgotICAgIGF1dG8gaW1hZ2VCdWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVu
YWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6
OkJHUkE4KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFn
ZVJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKIAogICAgIGF1dG8gY3Jl
YXRlU2hhcGUgPSBbJl0oKSB7CiAgICAgICAgIGF1dG8gcmFzdGVyU2hhcGUgPSBtYWtlVW5pcXVl
PFJhc3RlclNoYXBlPihXVEZNb3ZlKGludGVydmFscyksIG1hcmdpblJlY3Quc2l6ZSgpKTsKQEAg
LTE5Nyw3ICsxOTcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0
CiAgICAgaWYgKGltYWdlKQogICAgICAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlKCppbWFn
ZSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZVJlY3Quc2l6ZSgpKSk7CiAKLSAgICBQaXhlbEJ1
ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxp
ZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07Cisg
ICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5w
cmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpIH07CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5nZXRQaXhlbEJ1
ZmZlcihmb3JtYXQsIHsgSW50UG9pbnQoKSwgaW1hZ2VSZWN0LnNpemUoKSB9KTsKICAgICAKICAg
ICAvLyBXZSBjb3VsZCBnZXQgdG8gYSB2YWx1ZSB3aGVyZSBQaXhlbEJ1ZmZlciBjb3VsZCBiZSBu
dWxsb3B0LiBBIGNhc2Ugd2hlcmUgSW1hZ2VSZWN0LnNpemUoKSBpcyBodWdlLCBQaXhlbEJ1ZmZl
cjo6dHJ5Q3JlYXRlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlQ2xpcHBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw3ICsxNDYsNyBAQCBib29sIFJlbmRlclNWR1Jlc291
cmNlQ2xpcHBlcjo6YXBwbHlDbGlwCiAgICAgQWZmaW5lVHJhbnNmb3JtIGFic29sdXRlVHJhbnNm
b3JtID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVy
bW9zdENvb3JkaW5hdGVTeXN0ZW0ocmVuZGVyZXIpOwogICAgIGlmICghY2xpcHBlckRhdGEuaXNW
YWxpZEZvckdlb21ldHJ5KG9iamVjdEJvdW5kaW5nQm94LCBhYnNvbHV0ZVRyYW5zZm9ybSkpIHsK
ICAgICAgICAgLy8gRklYTUUgKDE0OTQ2OSk6IFRoaXMgaW1hZ2UgYnVmZmVyIHNob3VsZCBub3Qg
YmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQuIE1ha2luZyBpdCBtYXRjaCB0aGUgY29u
dGV4dCBicmVha3MgbmVzdGVkIGNsaXBwaW5nLCB0aG91Z2guCi0gICAgICAgIGF1dG8gbWFza0lt
YWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIob2JqZWN0Qm91bmRp
bmdCb3gsIGFic29sdXRlVHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFJl
bmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsICZjb250ZXh0KTsKKyAgICAgICAgYXV0byBtYXNr
SW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihvYmplY3RCb3Vu
ZGluZ0JveCwgYWJzb2x1dGVUcmFuc2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAmY29udGV4dCk7CiAgICAgICAgIGlmICgh
bWFza0ltYWdlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVy
LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw5ICsxMDQs
OSBAQCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHRmlsdGVyQnVpbGRlcj4gUmVuZGVyCiAgICAgICAgIGVm
ZmVjdC0+c2V0RWZmZWN0Qm91bmRhcmllcyhTVkdMZW5ndGhDb250ZXh0OjpyZXNvbHZlUmVjdGFu
Z2xlPFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz4oJmVsZW1lbnQsIGZpbHRl
ckVsZW1lbnQoKS5wcmltaXRpdmVVbml0cygpLCB0YXJnZXRCb3VuZGluZ0JveCkpOwogICAgICAg
ICBpZiAoZWxlbWVudC5yZW5kZXJlcigpKSB7CiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9S
X1NQQUNFX0xJTkVBUl9TUkdCKQotICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xv
clNwYWNlKGVsZW1lbnQucmVuZGVyZXIoKS0+c3R5bGUoKS5zdmdTdHlsZSgpLmNvbG9ySW50ZXJw
b2xhdGlvbkZpbHRlcnMoKSA9PSBDb2xvckludGVycG9sYXRpb246OkxpbmVhclJHQiA/IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQiA6IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
Qik7CisgICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoZWxlbWVudC5y
ZW5kZXJlcigpLT5zdHlsZSgpLnN2Z1N0eWxlKCkuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygp
ID09IENvbG9ySW50ZXJwb2xhdGlvbjo6TGluZWFyUkdCID8gRGVzdGluYXRpb25Db2xvclNwYWNl
OjpMaW5lYXJTUkdCKCkgOiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAjZWxzZQot
ICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQik7CisgICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3Bh
Y2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogI2VuZGlmCiAgICAgICAgIH0KICAg
ICAgICAgYnVpbGRlci0+YWRkKGVsZW1lbnQucmVzdWx0KCksIFdURk1vdmUoZWZmZWN0KSk7CkBA
IC0xOTgsOSArMTk4LDkgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNv
dQogCiAgICAgYXV0byByZW5kZXJpbmdNb2RlID0gcmVuZGVyZXIuc2V0dGluZ3MoKS5hY2NlbGVy
YXRlZEZpbHRlcnNFbmFibGVkKCkgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQ
QUNFX0xJTkVBUl9TUkdCKQotICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6TGluZWFyU1JHQjsKKyAgICBhdXRvIGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OkxpbmVhclNSR0IoKTsKICNlbHNlCi0gICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCOworICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpOwogI2VuZGlmCiAgICAgYXV0byBzb3VyY2VHcmFwaGljID0gU1ZH
UmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoZmlsdGVyRGF0YS0+ZHJhd2luZ1Jl
Z2lvbiwgZWZmZWN0aXZlVHJhbnNmb3JtLCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2RlLCBjb250
ZXh0KTsKICAgICBpZiAoIXNvdXJjZUdyYXBoaWMpIHsKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lk
IFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSCiAgICAgICAgICAgICBmaWx0ZXJE
YXRhLnN0YXRlID0gRmlsdGVyRGF0YTo6QXBwbHlpbmc7CiAgICAgICAgICAgICBsYXN0RWZmZWN0
LT5hcHBseSgpOwogICAgICAgICAgICAgbGFzdEVmZmVjdC0+Y29ycmVjdEZpbHRlclJlc3VsdElm
TmVlZGVkKCk7Ci0gICAgICAgICAgICBsYXN0RWZmZWN0LT50cmFuc2Zvcm1SZXN1bHRDb2xvclNw
YWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CisgICAgICAgICAgICBsYXN0RWZmZWN0
LT50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
KTsKICAgICAgICAgfQogICAgICAgICBmaWx0ZXJEYXRhLnN0YXRlID0gRmlsdGVyRGF0YTo6QnVp
bHQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VHcmFkaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY3JlYXRl
TWFza0FuZFN3YXBDb250CiAgICAgQWZmaW5lVHJhbnNmb3JtIGFic29sdXRlVHJhbnNmb3JtID0g
U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdENv
b3JkaW5hdGVTeXN0ZW0oKnRleHRSb290QmxvY2spOwogICAgIEZsb2F0UmVjdCByZXBhaW50UmVj
dCA9IHRleHRSb290QmxvY2stPnJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCk7CiAKLSAg
ICBhdXRvIG1hc2tJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVy
KHJlcGFpbnRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCLCBjb250ZXh0LT5yZW5kZXJpbmdNb2RlKCkpOworICAgIGF1dG8gbWFza0ltYWdlID0gU1ZH
UmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIocmVwYWludFJlY3QsIGFic29sdXRl
VHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY29udGV4dC0+cmVuZGVy
aW5nTW9kZSgpKTsKICAgICBpZiAoIW1hc2tJbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFz
a2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlTWFza2VyLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcxLDkgKzcxLDkgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlS
ZXNvdQogICAgICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSBzdHlsZSgpLnN2
Z1N0eWxlKCk7CiAKICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NS
R0IpCi0gICAgICAgIGF1dG8gY29sb3JTcGFjZSA9IHN2Z1N0eWxlLmNvbG9ySW50ZXJwb2xhdGlv
bigpID09IENvbG9ySW50ZXJwb2xhdGlvbjo6TGluZWFyUkdCID8gRGVzdGluYXRpb25Db2xvclNw
YWNlOjpMaW5lYXJTUkdCIDogRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOworICAgICAgICBh
dXRvIGNvbG9yU3BhY2UgPSBzdmdTdHlsZS5jb2xvckludGVycG9sYXRpb24oKSA9PSBDb2xvcklu
dGVycG9sYXRpb246OkxpbmVhclJHQiA/IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JH
QigpIDogRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiAjZWxzZQotICAgICAgICBhdXRv
IGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I7CisgICAgICAgIGF1dG8g
Y29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOwogI2VuZGlmCiAKICAg
ICAgICAgLy8gRklYTUUgKDE0OTQ3MCk6IFRoaXMgaW1hZ2UgYnVmZmVyIHNob3VsZCBub3QgYmUg
dW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQuIE1ha2luZyBpdCBtYXRjaCB0aGUgY29udGV4
dCBicmVha3MgYWxwaGEgbWFza2luZywgdGhvdWdoLgpAQCAtOTIsNyArOTIsNyBAQCBib29sIFJl
bmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBseVJlc291CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250ZW50SW50b01hc2tJbWFnZShN
YXNrZXJEYXRhKiBtYXNrZXJEYXRhLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwg
UmVuZGVyT2JqZWN0KiBvYmplY3QpCitib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpkcmF3
Q29udGVudEludG9NYXNrSW1hZ2UoTWFza2VyRGF0YSogbWFza2VyRGF0YSwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBSZW5kZXJPYmplY3QqIG9iamVjdCkKIHsKICAg
ICBHcmFwaGljc0NvbnRleHQmIG1hc2tJbWFnZUNvbnRleHQgPSBtYXNrZXJEYXRhLT5tYXNrSW1h
Z2UtPmNvbnRleHQoKTsKIApAQCAtMTE5LDcgKzExOSw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3Vy
Y2VNYXNrZXI6OmRyYXdDb250ZW4KICAgICB9CiAKICNpZiAhVVNFKENHKQotICAgIG1hc2tlckRh
dGEtPm1hc2tJbWFnZS0+dHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IsIGNvbG9yU3BhY2UpOworICAgIG1hc2tlckRhdGEtPm1hc2tJbWFnZS0+dHJhbnNmb3Jt
Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY29sb3JTcGFjZSk7CiAj
ZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb2xvclNwYWNlKTsKICNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNr
ZXIuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBA
IHByaXZhdGU6CiAKICAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gIlJlbmRlclNWR1Jlc291cmNlTWFza2VyIjsgfQogCi0gICAgYm9vbCBkcmF3Q29u
dGVudEludG9NYXNrSW1hZ2UoTWFza2VyRGF0YSosIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUmVu
ZGVyT2JqZWN0Kik7CisgICAgYm9vbCBkcmF3Q29udGVudEludG9NYXNrSW1hZ2UoTWFza2VyRGF0
YSosIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFJlbmRlck9iamVjdCopOwogICAgIHZv
aWQgY2FsY3VsYXRlTWFza0NvbnRlbnRSZXBhaW50UmVjdCgpOwogCiAgICAgRmxvYXRSZWN0IG1f
bWFza0NvbnRlbnRCb3VuZGFyaWVzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZVBhdHRlcm4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTMsNyArMjUzLDcgQEAgYm9vbCBSZW5k
ZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkVGlsZQogUmVmUHRyPEltYWdlQnVmZmVyPiBSZW5k
ZXJTVkdSZXNvdXJjZVBhdHRlcm46OmNyZWF0ZVRpbGVJbWFnZShjb25zdCBQYXR0ZXJuQXR0cmli
dXRlcyYgYXR0cmlidXRlcywgY29uc3QgRmxvYXRSZWN0JiB0aWxlQm91bmRhcmllcywgY29uc3Qg
RmxvYXRSZWN0JiBhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHRpbGVJbWFnZVRyYW5zZm9ybSwgRmxvYXRSZWN0JiBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRh
cmllcywgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKSBjb25zdAogewogICAgIGNsYW1wZWRB
YnNvbHV0ZVRpbGVCb3VuZGFyaWVzID0gSW1hZ2VCdWZmZXI6OmNsYW1wZWRSZWN0KGFic29sdXRl
VGlsZUJvdW5kYXJpZXMpOwotICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoYWJzb2x1dGVUaWxlQm91bmRhcmllcywgY2xhbXBlZEFic29s
dXRlVGlsZUJvdW5kYXJpZXMsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgcmVuZGVyaW5n
TW9kZSk7CisgICAgYXV0byB0aWxlSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJ
bWFnZUJ1ZmZlcihhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjbGFtcGVkQWJzb2x1dGVUaWxlQm91
bmRhcmllcywgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHJlbmRlcmluZ01vZGUpOwog
ICAgIGlmICghdGlsZUltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQu
Y3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1JlbmRlcmluZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzYsNyArMjM2LDcgQEAg
QWZmaW5lVHJhbnNmb3JtIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNhbAogICAgIHJldHVybiBhYnNv
bHV0ZVRyYW5zZm9ybTsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250
ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCkKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0KQogewogICAgIEludFJlY3QgcGFpbnRSZWN0ID0gY2FsY3Vs
YXRlSW1hZ2VCdWZmZXJSZWN0KHRhcmdldFJlY3QsIGFic29sdXRlVHJhbnNmb3JtKTsKICAgICAv
LyBEb24ndCBjcmVhdGUgZW1wdHkgSW1hZ2VCdWZmZXJzLgpAQCAtMjY0LDcgKzI2NCw3IEBAIFJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDoKICAgICByZXR1cm4gaW1hZ2VC
dWZmZXI7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIGNsYW1wZWRSZWN0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVuZGVy
aW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCitS
ZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVy
KGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVj
dCwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2Rl
IHJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKIHsKICAgICBJ
bnRTaXplIGNsYW1wZWRTaXplID0gcm91bmRlZEludFNpemUoY2xhbXBlZFJlY3Quc2l6ZSgpKTsK
ICAgICBGbG9hdFNpemUgdW5jbGFtcGVkU2l6ZSA9IHJvdW5kZWRJbnRTaXplKHRhcmdldFJlY3Qu
c2l6ZSgpKTsKQEAgLTM1MCw3ICszNTAsNyBAQCBib29sIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmJ1
ZmZlckZvcmVncm91CiAKICAgICAvLyBDcmVhdGUgYSBuZXcgYnVmZmVyIGFuZCBwYWludCB0aGUg
Zm9yZWdyb3VuZCBpbnRvIGl0LgogICAgIGlmICghaW1hZ2VCdWZmZXIpIHsKLSAgICAgICAgaW1h
Z2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZElu
dFNpemUoYm91bmRpbmdCb3guc2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBt
X3BhaW50SW5mby0+Y29udGV4dCgpKTsKKyAgICAgICAgaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoYm91bmRpbmdCb3guc2l6
ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIG1fcGFpbnRJbmZvLT5jb250ZXh0
KCkpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5n
Q29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
UmVuZGVyaW5nQ29udGV4dC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNjAs
OCArNjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KFJl
bmRlckVsZW1lbnQmLCBQYWludEluZm8mLCBOZWVkc0dyYXBoaWNzQ29udGV4dFNhdmUgPSBEb250
U2F2ZUdyYXBoaWNzQ29udGV4dCk7CiAgICAgYm9vbCBpc1JlbmRlcmluZ1ByZXBhcmVkKCkgY29u
c3QgeyByZXR1cm4gbV9yZW5kZXJpbmdGbGFncyAmIFJlbmRlcmluZ1ByZXBhcmVkOyB9CiAKLSAg
ICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9h
dFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zv
cm0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3ND
b250ZXh0KiA9IG51bGxwdHIpOwotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0
ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBjbGFtcGVkUmVjdCwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlLCBjb25z
dCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cik7CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0
cik7CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRSZWN0LCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGlj
c0NvbnRleHQqID0gbnVsbHB0cik7CiAKICAgICBzdGF0aWMgdm9pZCByZW5kZXJTdWJ0cmVlVG9D
b250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIFJlbmRlckVsZW1lbnQmLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mKTsKICAgICBzdGF0aWMgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9h
dFJlY3QmIHRhcmdldFJlY3QsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4mLCBib29sIHNhZmVUb0NsZWFy
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjE3LDcgKzIxNyw3IEBAIFJlZlB0cjxOYXRpdmVJbWFnZT4gU1ZH
SW1hZ2U6Om5hdGl2ZUltYWcKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCks
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShzaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlm
ICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yNDcsNyArMjQ3
LDcgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoRwogICAgIEZsb2F0
UmVjdCBpbWFnZUJ1ZmZlclNpemUgPSB6b29tZWRDb250YWluZXJSZWN0OwogICAgIGltYWdlQnVm
ZmVyU2l6ZS5zY2FsZShpbWFnZUJ1ZmZlclNjYWxlLndpZHRoKCksIGltYWdlQnVmZmVyU2NhbGUu
aGVpZ2h0KCkpOwogCi0gICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0
aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoaW1hZ2VCdWZmZXJTaXplLnNpemUoKSksIDEsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgY29udGV4dCk7CisgICAgYXV0byBidWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoaW1hZ2VC
dWZmZXJTaXplLnNpemUoKSksIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBjb250
ZXh0KTsKICAgICBpZiAoIWJ1ZmZlcikgLy8gRmFpbGVkIHRvIGFsbG9jYXRlIGJ1ZmZlci4KICAg
ICAgICAgcmV0dXJuOwogICAgIGRyYXdGb3JDb250YWluZXIoYnVmZmVyLT5jb250ZXh0KCksIGNv
bnRhaW5lclNpemUsIGNvbnRhaW5lclpvb20sIGluaXRpYWxGcmFnbWVudFVSTCwgaW1hZ2VCdWZm
ZXJTaXplLCB6b29tZWRDb250YWluZXJSZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTMsOCArOTMsOCBAQCB2b2lkIEZFSW1hZ2U6OnBsYXRmb3JtQXBw
bHlTb2Z0d2FyZSgpCiAgICAgaWYgKCFtX2ltYWdlICYmICFyZW5kZXJlcikKICAgICAgICAgcmV0
dXJuOwogCi0gICAgLy8gRkVJbWFnZSByZXN1bHRzIGFyZSBhbHdheXMgaW4gRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCCi0gICAgc2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IpOworICAgIC8vIEZFSW1hZ2UgcmVzdWx0cyBhcmUgYWx3YXlzIGluIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpCisgICAgc2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAKICAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2Ug
PSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpOwogICAgIGlmICghcmVzdWx0SW1hZ2UpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwkocmV2aXNpb24gMjc3OTIwKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSw4OSBAQAorMjAyMS0wNS0yMiAgU2FtIFdlaW5pZyAgPHdl
aW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ug
ZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdyYXBwaW5nIGEgcGxhdGZvcm0gY29sb3Igc3BhY2UgKENH
Q29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0Yy4pCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxNDMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbV0lQXQorCisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdl
RGVjb2RlckFWRlByb3h5OjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkubWVzc2FnZXMuaW46Cisg
ICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5t
bToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGlk
RnJvbnRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6
YXBwbHlCYWNraW5nU3RvcmVUb0xheWVyKToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0
bWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9u
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkNvbmZp
Z3VyYXRpb246OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oOgor
ICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFw
Q0cuY3BwOgorICAgICAgICAoV2ViS2l0Ojpjb2xvclNwYWNlKToKKyAgICAgICAgKiBTaGFyZWQv
bWFjL0NvbG9yU3BhY2VEYXRhLmg6IFJlbW92ZWQuCisgICAgICAgICogU2hhcmVkL21hYy9Db2xv
clNwYWNlRGF0YS5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF90YWtlVmlld1NuYXBzaG90XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc25hcHNo
b3RSZWN0OmludG9JbWFnZU9mV2lkdGg6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Y29sb3JTcGFj
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW06CisgICAgICAgIChXZWJL
aXQ6OnJlY3Vyc2l2ZWx5TWFwSU9TdXJmYWNlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjb2xvclNwYWNlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW06Cisg
ICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Y29sb3JTcGFjZSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb25maWd1cmF0aW9uKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cHJlcGFy
ZUZvckRpc3BsYXkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94
eTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3Vy
ZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZU1h
cHBlZElPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW06
CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50VGltZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6cGl4ZWxCdWZmZXJGb3JDdXJyZW50VGltZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6UERGUGx1
Z2luKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1h
cFV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVNoYXJlYWJsZUJpdG1hcCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyIGNv
bnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGll
bnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnREcmFnSW1hZ2VUb0JpdG1hcCk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6CisgICAgICAgIChXZWJL
aXQ6OkRyYXdpbmdBcmVhOjpzZXRDb2xvclNwYWNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpzbmFwc2hvdE9wdGlvbnNUb0JpdG1h
cENvbmZpZ3VyYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0
Q29sb3JTcGFjZSk6CisKIDIwMjEtMDUtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFy
aWFibGVzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIwMyw3ICsy
MDMsNiBAQCBTaGFyZWQvaW9zL1dlYlRvdWNoRXZlbnRJT1MuY3BwCiAKIFNoYXJlZC9tYWMvQXV4
aWxpYXJ5UHJvY2Vzc01hYy5tbQogU2hhcmVkL21hYy9Db2RlU2lnbmluZy5tbQotU2hhcmVkL21h
Yy9Db2xvclNwYWNlRGF0YS5tbQogU2hhcmVkL21hYy9IYW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMu
bW0KIFNoYXJlZC9tYWMvTmF0aXZlV2ViR2VzdHVyZUV2ZW50TWFjLm1tCiBTaGFyZWQvbWFjL05h
dGl2ZVdlYktleWJvYXJkRXZlbnRNYWMubW0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCShyZXZpc2lvbiAyNzc5
MTkpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZm
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBSZW1vdGVJbWFnZUJ1
ZmZlciA6IHB1YmxpYyBXZWJDb3JlCiAgICAgdXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6
OnB1dFBpeGVsQnVmZmVyOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3Jl
OjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQg
cGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpCisgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBXZWJDb3JlOjpEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9y
bWF0LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCBXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjp0ZW1w
bGF0ZSBjcmVhdGU8UmVtb3RlSW1hZ2VCdWZmZXI+KHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29s
b3JTcGFjZSwgcGl4ZWxGb3JtYXQsIG51bGxwdHIsIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQsIHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIs
NyArMTUyLDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkaWRGbHVzaChEaQogICAg
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6RGlkRmx1c2goZmx1
c2hJZGVudGlmaWVyLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0Jh
Y2tlbmRJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVh
dGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2Rl
IHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNw
YWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxT
aXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhl
bEZvcm1hdCwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQo
cmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCB8fCByZW5kZXJpbmdN
b2RlID09IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOwpJbmRleDogU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxNCAr
NDQsMTggQEAKIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKIG5hbWVzcGFjZSBEaXNwbGF5TGlz
dCB7CiBjbGFzcyBEaXNwbGF5TGlzdDsKIGNsYXNzIEl0ZW07CiB9CisKK2NsYXNzIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTsKIGNsYXNzIEZsb2F0U2l6ZTsKIGNsYXNzIE5hdGl2ZUltYWdlOwotZW51
bSBjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgOiB1aW50OF90OworCiBlbnVtIGNsYXNzIFJl
bmRlcmluZ01vZGUgOiBib29sOworCiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTIxLDcg
KzEyNSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVmPElQQzo6RW5jb2Rlcj4mKSBvdmVy
cmlkZTsKIAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2VpdmVkLgotICAgIHZvaWQgY3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgV2ViQ29y
ZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpEZXN0aW5h
dGlvbkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0LCBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2Vi
Q29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
LCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKICAgICB2b2lkIHdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoY29uc3QgR1BVUHJvY2Vz
c1dha2V1cE1lc3NhZ2VBcmd1bWVudHMmKTsKICAgICB2b2lkIHVwZGF0ZVNoYXJlZE1lbW9yeUZv
ckdldFBpeGVsQnVmZmVyKHVpbnQzMl90IGJ5dGVDb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpPiYmKTsKICAgICB2b2lkIHNlbWFwaG9y
ZUZvckdldFBpeGVsQnVmZmVyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTZW1h
cGhvcmUmKT4mJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHAJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29k
ZXJBVkZQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMywyOCArMTEzLDI4IEBAIHZvaWQg
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OnNldERhdGEKICAgICBjb21wbGV0aW9uSGFuZGxl
cihmcmFtZUNvdW50LCBpbWFnZURlY29kZXItPnNpemUoKSwgaW1hZ2VEZWNvZGVyLT5oYXNUcmFj
aygpLCBXVEZNb3ZlKGZyYW1lSW5mb3MpKTsKIH0KIAotdm9pZCBSZW1vdGVJbWFnZURlY29kZXJB
VkZQcm94eTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoSW1hZ2VEZWNvZGVySWRlbnRpZmllciBp
ZGVudGlmaWVyLCBzaXplX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8
V1RGOjpNYWNoU2VuZFJpZ2h0PiYmLCBDb2xvclNwYWNlRGF0YSYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmNyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KEltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgc2l6ZV90IGluZGV4LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdURjo6TWFjaFNlbmRSaWdodD4mJiwgT3B0
aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBBU1NFUlQobV9pbWFnZURlY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIp
KTsKICAgICBPcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+IHNlbmRSaWdodDsKLSAgICBDb2xv
clNwYWNlRGF0YSBjb2xvclNwYWNlRGF0YTsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5h
dGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CiAgICAgaWYgKCFtX2ltYWdlRGVjb2RlcnMuY29u
dGFpbnMoaWRlbnRpZmllcikpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShz
ZW5kUmlnaHQpLCBXVEZNb3ZlKGNvbG9yU3BhY2VEYXRhKSk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUoc2VuZFJpZ2h0KSwgV1RGTW92ZShjb2xvclNwYWNlKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBhdXRvIGZyYW1lSW1hZ2UgPSBtX2ltYWdlRGVjb2RlcnMu
Z2V0KGlkZW50aWZpZXIpLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCk7CiAgICAgaWYg
KCFmcmFtZUltYWdlKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc2VuZFJp
Z2h0KSwgV1RGTW92ZShjb2xvclNwYWNlRGF0YSkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKHNlbmRSaWdodCksIFdURk1vdmUoY29sb3JTcGFjZSkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgaWYgKGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlRnJv
bUltYWdlKGZyYW1lSW1hZ2UuZ2V0KCkpKSB7CiAgICAgICAgIHNlbmRSaWdodCA9IHN1cmZhY2Ut
PmNyZWF0ZVNlbmRSaWdodCgpOwotICAgICAgICBjb2xvclNwYWNlRGF0YS5jZ0NvbG9yU3BhY2Ug
PSBzdXJmYWNlLT5jb2xvclNwYWNlKCk7CisgICAgICAgIGNvbG9yU3BhY2UgPSBzdXJmYWNlLT5j
b2xvclNwYWNlKCk7CiAgICAgfQogCi0gICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShzZW5k
UmlnaHQpLCBXVEZNb3ZlKGNvbG9yU3BhY2VEYXRhKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShzZW5kUmlnaHQpLCBXVEZNb3ZlKGNvbG9yU3BhY2UpKTsKIH0KIAogdm9pZCBSZW1v
dGVJbWFnZURlY29kZXJBVkZQcm94eTo6Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKEltYWdlRGVjb2Rl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgc2l6ZV90IGluZGV4KQpJbmRleDogU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFW
RlByb3h5LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3
ICsyNyw2IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEhBVkUoQVZBU1NFVFJFQURF
UikKIAotI2luY2x1ZGUgIkNvbG9yU3BhY2VEYXRhLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW1h
Z2VEZWNvZGVyQVZGT2JqQy5oPgpAQCAtNTcsNyArNTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGVsZXRlRGVjb2RlcihXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyKTsKICAgICB2b2lk
IHNldEV4cGVjdGVkQ29udGVudFNpemUoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciwg
bG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUpOwogICAgIHZvaWQgc2V0RGF0YShXZWJDb3Jl
OjpJbWFnZURlY29kZXJJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBib29s
IGFsbERhdGFSZWNlaXZlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzaXplX3QgZnJhbWVDb3Vu
dCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgYm9vbCBoYXNUcmFjaywgT3B0aW9uYWw8
VmVjdG9yPFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4mJik+JiYpOwotICAgIHZv
aWQgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmll
ciwgc2l6ZV90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdURjo6TWFj
aFNlbmRSaWdodD4mJiwgQ29sb3JTcGFjZURhdGEmJik+JiYpOworICAgIHZvaWQgY3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXgoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciwgc2l6ZV90IGlu
ZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdURjo6TWFjaFNlbmRSaWdodD4m
JiwgT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiYmKT4mJik7CiAgICAg
dm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmll
ciwgc2l6ZV90IGluZGV4KTsKIAogICAgIHZvaWQgZW5jb2RlZERhdGFTdGF0dXNDaGFuZ2VkKFdl
YkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIpOwpJbmRleDogU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5Lm1lc3NhZ2VzLmluCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29k
ZXJBVkZQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5Lm1lc3NhZ2VzLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUltYWdl
RGVjb2RlckFWRlByb3h5IE4KICAgICBEZWxldGVEZWNvZGVyKFdlYkNvcmU6OkltYWdlRGVjb2Rl
cklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBTZXRFeHBlY3RlZENvbnRlbnRTaXplKFdlYkNv
cmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgbG9uZyBsb25nIGV4cGVjdGVk
Q29udGVudFNpemUpCiAgICAgU2V0RGF0YShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkgLT4gKHNpemVfdCBmcmFtZUNvdW50LCBXZWJDb3JlOjpJbnRTaXplIHNp
emUsIGJvb2wgaGFzVHJhY2ssIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpJbWFnZURlY29kZXI6
OkZyYW1lSW5mbz4+IGZyYW1lSW5mb3MpIFN5bmNocm9ub3VzCi0gICAgQ3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBzaXpl
X3QgaW5kZXgpIC0+IChPcHRpb25hbDxNYWNoU2VuZFJpZ2h0PiBzZW5kUmlnaHQsIHN0cnVjdCBX
ZWJLaXQ6OkNvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2UpIFN5bmNocm9ub3VzCisgICAgQ3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlm
aWVyLCBzaXplX3QgaW5kZXgpIC0+IChPcHRpb25hbDxNYWNoU2VuZFJpZ2h0PiBzZW5kUmlnaHQs
IE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZSkgU3lu
Y2hyb25vdXMKICAgICBDbGVhckZyYW1lQnVmZmVyQ2FjaGUoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBzaXplX3QgaW5kZXgpCiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzQsMTAgKzc0LDcgQEAgdm9pZCBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZTo6Y2xlYXIoKQogCiB2
b2lkIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbjo6ZW5jb2RlKElQQzo6RW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IGlzT3BhcXVlOwotI2lmIFBMQVRGT1JN
KENPQ09BKQotICAgIGVuY29kZXIgPDwgY29sb3JTcGFjZTsKLSNlbmRpZgorICAgIGVuY29kZXIg
PDwgY29sb3JTcGFjZSA8PCBpc09wYXF1ZTsKICNpZiBVU0UoRElSRUNUMkQpCiAgICAgU2hhcmVk
TWVtb3J5OjpIYW5kbGU6OmVuY29kZUhhbmRsZShlbmNvZGVyLCBzaGFyZWRSZXNvdXJjZUhhbmRs
ZSk7CiAKQEAgLTg4LDIxICs4NSwyOCBAQCB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJh
dGlvbjo6ZW5jCiAjZW5kaWYKIH0KIAotYm9vbCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRp
b246OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbmZpZ3VyYXRpb24mIGNvbmZpZ3Vy
YXRpb24pCitib29sIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbjo6ZGVjb2RlKElQQzo6
RGVjb2RlciYgZGVjb2RlciwgQ29uZmlndXJhdGlvbiYgcmVzdWx0KQogewotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoY29uZmlndXJhdGlvbi5pc09wYXF1ZSkpCisgICAgT3B0aW9uYWw8T3B0aW9u
YWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPj4gY29sb3JTcGFjZTsKKyAgICBkZWNv
ZGVyID4+IGNvbG9yU3BhY2U7CisgICAgaWYgKCFjb2xvclNwYWNlKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb25m
aWd1cmF0aW9uLmNvbG9yU3BhY2UpKQorCisgICAgT3B0aW9uYWw8Ym9vbD4gaXNPcGFxdWU7Cisg
ICAgZGVjb2RlciA+PiBpc09wYXF1ZTsKKyAgICBpZiAoIWlzT3BhcXVlKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0jZW5kaWYKKworICAgIHJlc3VsdCA9IENvbmZpZ3VyYXRpb24geyBXVEZNb3Zl
KCpjb2xvclNwYWNlKSwgKmlzT3BhcXVlIH07CisKICNpZiBVU0UoRElSRUNUMkQpCiAgICAgYXV0
byBwcm9jZXNzU3BlY2lmaWNIYW5kbGUgPSBTaGFyZWRNZW1vcnk6OkhhbmRsZTo6ZGVjb2RlSGFu
ZGxlKGRlY29kZXIpOwogICAgIGlmICghcHJvY2Vzc1NwZWNpZmljSGFuZGxlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBjb25maWd1cmF0aW9uLnNoYXJlZFJlc291cmNlSGFuZGxlID0g
cHJvY2Vzc1NwZWNpZmljSGFuZGxlLnZhbHVlKCk7CisgICAgcmVzdWx0LnNoYXJlZFJlc291cmNl
SGFuZGxlID0gcHJvY2Vzc1NwZWNpZmljSGFuZGxlLnZhbHVlKCk7CiAjZW5kaWYKKwogICAgIHJl
dHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRt
YXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAu
aAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0
bWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE1ICsyNiwxMiBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Rlc3RpbmF0aW9u
Q29sb3JTcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUGxhdGZvcm1JbWFnZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAotI2lmIFVTRShDRykKLSNpbmNsdWRlICJD
b2xvclNwYWNlRGF0YS5oIgotI2VuZGlmCi0KICNpZiBVU0UoRElSRUNUMkQpCiBpbnRlcmZhY2Ug
SUQyRDFCaXRtYXA7CiBpbnRlcmZhY2UgSUQyRDFSZW5kZXJUYXJnZXQ7CkBAIC01NSwxMCArNTIs
OCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFNoYXJlYWJsZUJpdG1hcCA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWFibGVCaXRtYXA+IHsKIHB1YmxpYzoKICAgICBzdHJ1
Y3QgQ29uZmlndXJhdGlvbiB7CisgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9u
Q29sb3JTcGFjZT4gY29sb3JTcGFjZTsKICAgICAgICAgYm9vbCBpc09wYXF1ZSB7IGZhbHNlIH07
Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIENvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2U7
Ci0jZW5kaWYKICNpZiBVU0UoRElSRUNUMkQpCiAgICAgICAgIG11dGFibGUgSEFORExFIHNoYXJl
ZFJlc291cmNlSGFuZGxlIHsgbnVsbHB0ciB9OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTgyLDYgKzgyLDggQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5j
bHVkZSAiQXJndW1lbnRDb2RlcnNDRi5oIgorCiBuYW1lc3BhY2UgV1RGIHsKIGNsYXNzIE1hY2hT
ZW5kUmlnaHQ7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMyNSw4ICszMjUsMTEgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2Vi
UAogICAgIHBhcmFtZXRlcnMuaGFzUmVzb3VyY2VMb2FkQ2xpZW50ID0gV1RGTW92ZSgqaGFzUmVz
b3VyY2VMb2FkQ2xpZW50KTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhcmFtZXRlcnMuY29sb3JTcGFjZSkpCisgICAgT3B0aW9uYWw8T3B0aW9uYWw8RGVz
dGluYXRpb25Db2xvclNwYWNlPj4gY29sb3JTcGFjZTsKKyAgICBkZWNvZGVyID4+IGNvbG9yU3Bh
Y2U7CisgICAgaWYgKCFjb2xvclNwYWNlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIHBhcmFtZXRlcnMuY29sb3JTcGFjZSA9IFdURk1vdmUoKmNvbG9yU3BhY2UpOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy51c2VTeXN0ZW1BcHBlYXJhbmNlKSkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9y
ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWN0aXZpdHlTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvQ29sb3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXpl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9MYXlvdXRNaWxlc3RvbmUuaD4KQEAgLTQ5LDEwICs1MCw2
IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRlICJDb2xvclNwYWNlRGF0YS5oIgot
I2VuZGlmCi0KICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiAjaW5jbHVkZSA8V2Vi
Q29yZS9BcHBsaWNhdGlvbk1hbmlmZXN0Lmg+CiAjZW5kaWYKQEAgLTE0Niw3ICsxNDMsNyBAQCBz
dHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgYm9vbCB1c2VFbGV2YXRlZFVz
ZXJJbnRlcmZhY2VMZXZlbCB7IGZhbHNlIH07CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgQ29s
b3JTcGFjZURhdGEgY29sb3JTcGFjZTsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlv
bkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CiAgICAgYm9vbCB1c2VTeXN0ZW1BcHBlYXJhbmNlOwog
I2VuZGlmCiAjaWYgRU5BQkxFKE1FVEFfVklFV1BPUlQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1No
YXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFj
a2luZ1N0b3JlLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0JKHdvcmtpbmcgY29weSkK
QEAgLTIxMiwxOSArMjEyLDE5IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBU
b1ZhbGkKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgVHlwZTo6SU9TdXJmYWNlOgog
ICAgICAgICBpZiAoc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nKQotICAgICAgICAgICAgbV9mcm9u
dEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IG1fbGF5ZXItPmNvbnRleHQoKS0+ZW5zdXJlUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1hZ2VCdWZmZXIobV9zaXplLCBXZWJDb3JlOjpS
ZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCLCBwaXhlbEZvcm1hdCgpKTsKKyAgICAgICAgICAgIG1fZnJvbnRCdWZm
ZXIuaW1hZ2VCdWZmZXIgPSBtX2xheWVyLT5jb250ZXh0KCktPmVuc3VyZVJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSgpLmNyZWF0ZUltYWdlQnVmZmVyKG1fc2l6ZSwgV2ViQ29yZTo6UmVuZGVy
aW5nTW9kZTo6QWNjZWxlcmF0ZWQsIG1fc2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpLCBwaXhlbEZvcm1hdCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
bV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8
QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZEJhY2tlbmQ+OjpjcmVhdGUobV9z
aXplLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIHBpeGVs
Rm9ybWF0KCksIG51bGxwdHIpOworICAgICAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZl
ciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNo
YXJlYWJsZU1hcHBlZEJhY2tlbmQ+OjpjcmVhdGUobV9zaXplLCBtX3NjYWxlLCBXZWJDb3JlOjpE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0cik7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgVHlwZTo6Qml0bWFwOgogICAgICAgICBpZiAoc2hvdWxk
VXNlUmVtb3RlUmVuZGVyaW5nKQotICAgICAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZl
ciA9IG1fbGF5ZXItPmNvbnRleHQoKS0+ZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
KCkuY3JlYXRlSW1hZ2VCdWZmZXIobV9zaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpVbmFj
Y2VsZXJhdGVkLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Is
IHBpeGVsRm9ybWF0KCkpOworICAgICAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9
IG1fbGF5ZXItPmNvbnRleHQoKS0+ZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCku
Y3JlYXRlSW1hZ2VCdWZmZXIobV9zaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
cGl4ZWxGb3JtYXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZnJvbnRCdWZmZXIu
aW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPFVuYWNjZWxlcmF0ZWRJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQ+OjpjcmVhdGUobV9zaXplLCBtX3NjYWxlLCBXZWJD
b3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIHBpeGVsRm9ybWF0KCksIG51bGxwdHIp
OworICAgICAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNy
ZXRlSW1hZ2VCdWZmZXI8VW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZD46
OmNyZWF0ZShtX3NpemUsIG1fc2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpLCBwaXhlbEZvcm1hdCgpLCBudWxscHRyKTsKICAgICAgICAgYnJlYWs7CiAjaWYgRU5B
QkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVGRkVSKQogICAgIGNhc2UgVHlwZTo6
Q0dEaXNwbGF5TGlzdDoKLSAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IFdlYkNv
cmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZD46
OmNyZWF0ZShtX3NpemUsIG1fc2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0cik7CisgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1h
Z2VCdWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPENHRGlzcGxheUxpc3RJbWFn
ZUJ1ZmZlckJhY2tlbmQ+OjpjcmVhdGUobV9zaXplLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0cik7CiAgICAgICAg
IGJyZWFrOwogI2VuZGlmCiAgICAgfQpAQCAtMzk3LDcgKzM5Nyw3IEBAIHZvaWQgUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OmFwcGx5QmFja2kKICAgICAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0g
VHlwZTo6SU9TdXJmYWNlKTsKICAgICAgICAgICAgIHN3aXRjaCAoY29udGVudHNUeXBlKSB7CiAg
ICAgICAgICAgICBjYXNlIExheWVyQ29udGVudHNUeXBlOjpJT1N1cmZhY2U6IHsKLSAgICAgICAg
ICAgICAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5k
UmlnaHQoV1RGTW92ZShtYWNoU2VuZFJpZ2h0KSwgV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYo
KSk7CisgICAgICAgICAgICAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpj
cmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUobWFjaFNlbmRSaWdodCksIFdlYkNvcmU6OkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICAgICAgICAgICAgICBsYXllci5jb250ZW50
cyA9IHN1cmZhY2UgPyBzdXJmYWNlLT5hc0xheWVyQ29udGVudHMoKSA6IG5pbDsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVk
L2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1No
YXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDAsNyArNDAsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICAKIHN0YXRpYyBD
R0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3Vy
YXRpb24mIGNvbmZpZ3VyYXRpb24pCiB7Ci0gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb24uY29sb3JT
cGFjZS5jZ0NvbG9yU3BhY2UuZ2V0KCkgPzogc1JHQkNvbG9yU3BhY2VSZWYoKTsKKyAgICByZXR1
cm4gY29uZmlndXJhdGlvbi5jb2xvclNwYWNlID8gY29uZmlndXJhdGlvbi5jb2xvclNwYWNlLT5w
bGF0Zm9ybUNvbG9yU3BhY2UoKSA6IFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCk7CiB9CiAK
IHN0YXRpYyBib29sIHdhbnRzRXh0ZW5kZWRSYW5nZShjb25zdCBTaGFyZWFibGVCaXRtYXA6OkNv
bmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvQ29sb3JTcGFjZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvQ29sb3JTcGFjZURhdGEuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL0NvbG9yU3BhY2VEYXRhLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw0NyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDb2xvclNwYWNlRGF0YV9oCi0jZGVmaW5lIENvbG9yU3Bh
Y2VEYXRhX2gKLQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotbmFtZXNwYWNlIElQQyB7
Ci1jbGFzcyBEZWNvZGVyOwotY2xhc3MgRW5jb2RlcjsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLXN0cnVjdCBDb2xvclNwYWNlRGF0YSB7Ci0gICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVy
JikgY29uc3Q7Ci0gICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShJUEM6
OkRlY29kZXImLCBDb2xvclNwYWNlRGF0YSYpOwotCi0gICAgUmV0YWluUHRyPENHQ29sb3JTcGFj
ZVJlZj4gY2dDb2xvclNwYWNlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRp
ZiAvLyBDb2xvclNwYWNlRGF0YV9oCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wt
c3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVy
dHkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9Db2xvclNwYWNlRGF0YS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEubW0JKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9Db2xvclNwYWNlRGF0
YS5tbQkobm9uZXhpc3RlbnQpCkBAIC0xLDYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0
ICJjb25maWcuaCIKLSNpbXBvcnQgIkNvbG9yU3BhY2VEYXRhLmgiCi0KLSNpbXBvcnQgIkFyZ3Vt
ZW50Q29kZXJzQ0YuaCIKLSNpbXBvcnQgIkRlY29kZXIuaCIKLSNpbXBvcnQgIkVuY29kZXIuaCIK
LSNpbXBvcnQgPHd0Zi9FbnVtVHJhaXRzLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lk
IENvbG9yU3BhY2VEYXRhOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAotewot
ICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8Ym9vbD4oY2dDb2xvclNwYWNlKTsKLSAgICBpZiAo
Y2dDb2xvclNwYWNlKQotICAgICAgICBlbmNvZGVyIDw8IGNnQ29sb3JTcGFjZTsKLX0KLQotYm9v
bCBDb2xvclNwYWNlRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgQ29sb3JTcGFj
ZURhdGEmIGNvbG9yU3BhY2VEYXRhKQotewotICAgIGJvb2wgaGFzQ0dDb2xvclNwYWNlOwotICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoaGFzQ0dDb2xvclNwYWNlKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgaWYgKCFoYXNDR0NvbG9yU3BhY2UpCi0gICAgICAgIHJldHVybiB0cnVlOwot
Ci0gICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZTsKLSAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGNvbG9yU3BhY2UpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0g
ICAgY29sb3JTcGFjZURhdGEuY2dDb2xvclNwYWNlID0gV1RGTW92ZShjb2xvclNwYWNlKTsKLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkzLDcg
QEAgY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb2xv
cjsKIGNsYXNzIEN1cnNvcjsKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIEZs
b2F0UXVhZDsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIFJlZ2lvbjsKQEAgLTE4OCwxMCArMTg5
LDYgQEAgY2xhc3MgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudDsKIGNsYXNzIEluc3Rh
bGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Q7CiAjZW5kaWYKIAotI2lmIFBM
QVRGT1JNKENPQ09BKQotc3RydWN0IENvbG9yU3BhY2VEYXRhOwotI2VuZGlmCi0KICNpZiBIQVZF
KFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKIHVzaW5nIExheWVySG9zdGluZ0NvbnRleHRJ
RCA9IHVpbnQzMl90OwogI2VuZGlmCkBAIC00MjYsNyArNDIzLDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBDR1JlY3QgYm91bmRzT2ZMYXllckluTGF5ZXJCYWNrZWRXaW5kb3dDb29yZGluYXRl
cyhDQUxheWVyICopIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgQ29sb3JTcGFjZURhdGEgY29s
b3JTcGFjZSgpID0gMDsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFj
ZSBjb2xvclNwYWNlKCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNob3dQbGF0Zm9ybUNvbnRl
eHRNZW51KE5TTWVudSAqLCBXZWJDb3JlOjpJbnRQb2ludCkgPSAwOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5OCw2
ICsxOTgsNyBAQCBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEF0dGFjaG1lbnQ7CiBjbGFzcyBDb250
ZW50V29ybGQ7CiBjbGFzcyBDb250ZXh0TWVudUNsaWVudDsKK2NsYXNzIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTsKIGNsYXNzIEVycm9yOwogY2xhc3MgRmluZENsaWVudDsKIGNsYXNzIEZpbmRNYXRj
aGVzQ2xpZW50OwpAQCAtMzc3LDcgKzM3OCw2IEBAIGNsYXNzIFdlYldoZWVsRXZlbnRDb2FsZXNj
ZXI7CiBjbGFzcyBXZWJzaXRlRGF0YVN0b3JlOwogCiBzdHJ1Y3QgQXBwQm91bmROYXZpZ2F0aW9u
VGVzdGluZ0RhdGE7Ci1zdHJ1Y3QgQ29sb3JTcGFjZURhdGE7CiBzdHJ1Y3QgRGF0YURldGVjdGlv
blJlc3VsdDsKIHN0cnVjdCBEb2N1bWVudEVkaXRpbmdDb250ZXh0Owogc3RydWN0IERvY3VtZW50
RWRpdGluZ0NvbnRleHRSZXF1ZXN0OwpAQCAtMTEzMiw3ICsxMTMyLDcgQEAgcHVibGljOgogICAg
IHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAgICAgdm9pZCBhc3Npc3RpdmVUZWNobm9sb2d5
TWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAKLSAgICBDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlKCk7
CisgICAgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UoKTsKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0JKHdvcmtp
bmcgY29weSkKQEAgLTEwMTQsNyArMTAxNCw3IEBAIC0gKFJlZlB0cjxXZWJLaXQ6OlZpZXdTbmFw
c2hvdD4pX3Rha2VWaWUKICNlbHNlCiAgICAgV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQgc25h
cHNob3RGb3JtYXQgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdDo6QkdSQTsKICNlbmRpZgot
ICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlKFdlYkNvcmU6OmV4
cGFuZGVkSW50U2l6ZShzbmFwc2hvdFNpemUpLCBXZWJDb3JlOjpzUkdCQ29sb3JTcGFjZVJlZigp
LCBzbmFwc2hvdEZvcm1hdCk7CisgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNl
OjpjcmVhdGUoV2ViQ29yZTo6ZXhwYW5kZWRJbnRTaXplKHNuYXBzaG90U2l6ZSksIFdlYkNvcmU6
OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBzbmFwc2hvdEZvcm1hdCk7CiAgICAgaWYg
KCFzdXJmYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBDQVJlbmRlclNlcnZlclJl
bmRlckxheWVyV2l0aFRyYW5zZm9ybShNQUNIX1BPUlRfTlVMTCwgc2VsZi5sYXllci5jb250ZXh0
LmNvbnRleHRJZCwgcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4oc2VsZi5sYXllciksIHN1cmZh
Y2UtPnN1cmZhY2UoKSwgMCwgMCwgJnRyYW5zZm9ybSk7CkBAIC0zMDc5LDcgKzMwNzksNyBAQCAt
ICh2b2lkKV9zbmFwc2hvdFJlY3Q6KENHUmVjdClyZWN0SW5WaWV3CiAgICAgTlNTdHJpbmcgKmRp
c3BsYXlOYW1lID0gc2VsZi53aW5kb3cuc2NyZWVuLmRpc3BsYXlDb25maWd1cmF0aW9uLm5hbWU7
CiAgICAgaWYgKGRpc3BsYXlOYW1lICYmICFzZWxmLndpbmRvdy5oaWRkZW4pIHsKICAgICAgICAg
VHJhY2VTY29wZSBzbmFwc2hvdFNjb3BlKFJlbmRlclNlcnZlclNuYXBzaG90U3RhcnQsIFJlbmRl
clNlcnZlclNuYXBzaG90RW5kKTsKLSAgICAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9T
dXJmYWNlOjpjcmVhdGUoV2ViQ29yZTo6ZXhwYW5kZWRJbnRTaXplKFdlYkNvcmU6OkZsb2F0U2l6
ZShpbWFnZVNpemUpKSwgV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgICAgIGF1
dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlKFdlYkNvcmU6OmV4cGFuZGVk
SW50U2l6ZShXZWJDb3JlOjpGbG9hdFNpemUoaW1hZ2VTaXplKSksIFdlYkNvcmU6OkRlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICAgICAgaWYgKCFzdXJmYWNlKSB7CiAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybjsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
aAkod29ya2luZyBjb3B5KQpAQCAtOTQsNiArOTQsNyBAQCBjbGFzcyBQYWdlQ29uZmlndXJhdGlv
bjsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNl
OwogY2xhc3MgSW50UG9pbnQ7CiBzdHJ1Y3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTDsKIApAQCAt
MTY4LDcgKzE2OSw2IEBAIGNsYXNzIFdlYkZyYW1lUHJveHk7CiBjbGFzcyBXZWJQYWdlUHJveHk7
CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKLXN0cnVjdCBD
b2xvclNwYWNlRGF0YTsKIHN0cnVjdCBXZWJIaXRUZXN0UmVzdWx0RGF0YTsKIAogZW51bSBjbGFz
cyBDb250aW51ZVVuc2FmZUxvYWQgOiBib29sOwpAQCAtMzEzLDcgKzMxMyw3IEBAIHB1YmxpYzoK
IAogICAgIE5TVmlldyAqaGl0VGVzdChDR1BvaW50KTsKIAotICAgIENvbG9yU3BhY2VEYXRhIGNv
bG9yU3BhY2UoKTsKKyAgICBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFj
ZSgpOwogCiAgICAgdm9pZCBzZXRVbmRlcmxheUNvbG9yKE5TQ29sb3IgKik7CiAgICAgTlNDb2xv
ciAqdW5kZXJsYXlDb2xvcigpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3
ICszMiw2IEBACiAjaW1wb3J0ICJBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oIgogI2lt
cG9ydCAiQVBJTmF2aWdhdGlvbi5oIgogI2ltcG9ydCAiQXBwS2l0U1BJLmgiCi0jaW1wb3J0ICJD
b2xvclNwYWNlRGF0YS5oIgogI2ltcG9ydCAiQ29yZVRleHRIZWxwZXJzLmgiCiAjaW1wb3J0ICJG
b250SW5mby5oIgogI2ltcG9ydCAiRnVsbHNjcmVlbkNsaWVudC5oIgpAQCAtOTAsNiArODksNyBA
QAogI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvclNl
cmlhbGl6YXRpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29tcG9zaXRpb25IaWdobGlnaHQuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0RpY3Rpb25hcnlMb29rdXAuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRHJhZ0l0ZW0uaD4KQEAgLTI1MDAsNyArMjUwMCw3IEBAIHZvaWQgV2Vi
Vmlld0ltcGw6OnBvc3RGYWtlTW91c2VNb3ZlZEV2ZW4KICAgICBtX3BhZ2UtPmhhbmRsZU1vdXNl
RXZlbnQod2ViRXZlbnQpOwogfQogCi1Db2xvclNwYWNlRGF0YSBXZWJWaWV3SW1wbDo6Y29sb3JT
cGFjZSgpCitXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgV2ViVmlld0ltcGw6OmNvbG9y
U3BhY2UoKQogewogICAgIGlmICghbV9jb2xvclNwYWNlKSB7CiAgICAgICAgIGlmIChtX3Rhcmdl
dFdpbmRvd0Zvck1vdmVQcmVwYXJhdGlvbikKQEAgLTI1MTEsMTAgKzI1MTEsNyBAQCBDb2xvclNw
YWNlRGF0YSBXZWJWaWV3SW1wbDo6Y29sb3JTcGFjZSgpCiAgICAgICAgICAgICBtX2NvbG9yU3Bh
Y2UgPSBbTlNTY3JlZW4gbWFpblNjcmVlbl0uY29sb3JTcGFjZTsKICAgICB9CiAKLSAgICBDb2xv
clNwYWNlRGF0YSBjb2xvclNwYWNlRGF0YTsKLSAgICBjb2xvclNwYWNlRGF0YS5jZ0NvbG9yU3Bh
Y2UgPSBbbV9jb2xvclNwYWNlIENHQ29sb3JTcGFjZV07Ci0KLSAgICByZXR1cm4gY29sb3JTcGFj
ZURhdGE7CisgICAgcmV0dXJuIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSB7IFttX2Nv
bG9yU3BhY2UgQ0dDb2xvclNwYWNlXSB9OwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjpzZXRVbmRl
cmxheUNvbG9yKE5TQ29sb3IgKnVuZGVybGF5Q29sb3IpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlSG9zdC5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0JKHdvcmtpbmcgY29weSkKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV2ViUHJv
Y2Vzc1Byb3h5LmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBo
aWNzQ29udGV4dENHLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0lPU3VyZmFjZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9QbGF0Zm9ybUxheWVyLmg+CkBAIC0zMTcsNyArMzE4LDcgQEAgc3RhdGljIHZvaWQg
cmVjdXJzaXZlbHlNYXBJT1N1cmZhY2VCYWNraQogewogICAgIGlmIChsYXllci5jb250ZW50cyAm
JiBDRkdldFR5cGVJRCgoX19icmlkZ2UgQ0ZUeXBlUmVmKWxheWVyLmNvbnRlbnRzKSA9PSBDQU1h
Y2hQb3J0R2V0VHlwZUlEKCkpIHsKICAgICAgICAgTWFjaFNlbmRSaWdodCBwb3J0ID0gTWFjaFNl
bmRSaWdodDo6Y3JlYXRlKENBTWFjaFBvcnRHZXRQb3J0KChfX2JyaWRnZSBDQU1hY2hQb3J0UmVm
KWxheWVyLmNvbnRlbnRzKSk7Ci0gICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3Vy
ZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKHBvcnQpLCBzUkdCQ29sb3JTcGFjZVJl
ZigpKTsKKyAgICAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVG
cm9tU2VuZFJpZ2h0KFdURk1vdmUocG9ydCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpKTsKICAgICAgICAgbGF5ZXIuY29udGVudHMgPSBzdXJmYWNlID8gc3VyZmFjZS0+
YXNMYXllckNvbnRlbnRzKCkgOiBuaWw7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgJKHdvcmtp
bmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzVmlld0luV2lu
ZG93KCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1Zpc3VhbGx5SWRsZSgpIG92ZXJyaWRlOwogICAg
IExheWVySG9zdGluZ01vZGUgdmlld0xheWVySG9zdGluZ01vZGUoKSBvdmVycmlkZTsKLSAgICBD
b2xvclNwYWNlRGF0YSBjb2xvclNwYWNlKCkgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UoKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFJlbW90
ZUxheWVyVHJlZVJvb3ROb2RlKFJlbW90ZUxheWVyVHJlZU5vZGUqKSBvdmVycmlkZTsKICAgICBD
QUxheWVyICphY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGxNYWMubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9QYWdlQ2xpZW50SW1wbE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBAQAog
CiAjaW1wb3J0ICJBUElIaXRUZXN0UmVzdWx0LmgiCiAjaW1wb3J0ICJBcHBLaXRTUEkuaCIKLSNp
bXBvcnQgIkNvbG9yU3BhY2VEYXRhLmgiCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1w
b3J0ICJEb3dubG9hZFByb3h5LmgiCiAjaW1wb3J0ICJEcmF3aW5nQXJlYVByb3h5LmgiCkBAIC02
Niw2ICs2NSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0JpdG1hcEltYWdlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0NvbG9yTWFjLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0N1cnNvci5oPgorI2ltcG9ydCA8
V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGljdGlv
bmFyeUxvb2t1cC5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnSXRlbS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9GbG9hdFJlY3QuaD4KQEAgLTI0NCw3ICsyNDQsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBs
Ojp2aWV3V2lsbE1vdmVUb0Fub3RoCiAgICAgY2xlYXJBbGxFZGl0Q29tbWFuZHMoKTsKIH0KIAot
Q29sb3JTcGFjZURhdGEgUGFnZUNsaWVudEltcGw6OmNvbG9yU3BhY2UoKQorV2ViQ29yZTo6RGVz
dGluYXRpb25Db2xvclNwYWNlIFBhZ2VDbGllbnRJbXBsOjpjb2xvclNwYWNlKCkKIHsKICAgICBy
ZXR1cm4gbV9pbXBsLT5jb2xvclNwYWNlKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWFQcm94eS5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogCi0jaW1w
b3J0ICJDb2xvclNwYWNlRGF0YS5oIgogI2ltcG9ydCAiRHJhd2luZ0FyZWFNZXNzYWdlcy5oIgog
I2ltcG9ydCAiRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJMYXllclRyZWVD
b250ZXh0LmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAK
ICNpZiBQTEFURk9STShNQUMpCiAKICNpbXBvcnQgIkFQSVVJQ2xpZW50LmgiCi0jaW1wb3J0ICJD
b2xvclNwYWNlRGF0YS5oIgogI2ltcG9ydCAiQ29ubmVjdGlvbi5oIgogI2ltcG9ydCAiRGF0YVJl
ZmVyZW5jZS5oIgogI2ltcG9ydCAiRWRpdG9yU3RhdGUuaCIKQEAgLTUyLDYgKzUxLDcgQEAKICNp
bXBvcnQgIldlYlByZWZlcmVuY2VzS2V5cy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5Lmgi
CiAjaW1wb3J0IDxXZWJDb3JlL0F0dHJpYnV0ZWRTdHJpbmcuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
RGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RpY3Rpb25hcnlMb29r
dXAuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0l0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvR3Jh
cGhpY3NMYXllci5oPgpAQCAtMzQ0LDcgKzM0NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojphc3Np
c3RpdmVUZWNobm9sb2d5TWEKICAgICBwYWdlQ2xpZW50KCkuYXNzaXN0aXZlVGVjaG5vbG9neU1h
a2VGaXJzdFJlc3BvbmRlcigpOwogfQogCi1Db2xvclNwYWNlRGF0YSBXZWJQYWdlUHJveHk6OmNv
bG9yU3BhY2UoKQorV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIFdlYlBhZ2VQcm94eTo6
Y29sb3JTcGFjZSgpCiB7CiAgICAgcmV0dXJuIHBhZ2VDbGllbnQoKS5jb2xvclNwYWNlKCk7CiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI2MzQsOCArMjYzNCw2IEBACiAJCTFB
MjU2RTM2MThBMUE3ODgwMDZGQjkyMiAvKiBXS05hdmlnYXRpb25BY3Rpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tOYXZpZ2F0aW9uQWN0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBMjU2RTM5MThBMUE3REYwMDZGQjkyMiAvKiBXS05hdmlnYXRp
b25BY3Rpb25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS05h
dmlnYXRpb25BY3Rpb25JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
QTI4QjhDQjFDODBFRDU5MDA2RkQ3NDMgLyogV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBMkE0QUZEMTU4NjkzOTIwMDkwQzlFOSAvKiBD
b2xvclNwYWNlRGF0YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IENvbG9yU3BhY2VEYXRhLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQTJBNEFG
RTE1ODY5MzkyMDA5MEM5RTkgLyogQ29sb3JTcGFjZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ29sb3JTcGFjZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUEyQkI2Q0MxNDExN0E1RjAwMEYzNUQ0IC8qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTJCQjZDRTE0
MTE3QjREMDAwRjM1RDQgLyogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTFBMkJCNkNGMTQxMTdCNEQwMDBGMzVENCAvKiBQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2
ZWRTb3VyY2VzL1dlYktpdDIvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtMTA0MzAsOCArMTA0MjgsNiBAQAog
CQkJCTlGNTRGODhFMTY0ODhFODcwMDdERjgxQSAvKiBBdXhpbGlhcnlQcm9jZXNzTWFjLm1tICov
LAogCQkJCUNFMTFBRDUxMUNCQzQ4MkYwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5oICovLAogCQkJ
CUNFMTFBRDRGMUNCQzQ3RjgwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5tbSAqLywKLQkJCQkxQTJB
NEFGRTE1ODY5MzkyMDA5MEM5RTkgLyogQ29sb3JTcGFjZURhdGEuaCAqLywKLQkJCQkxQTJBNEFG
RDE1ODY5MzkyMDA5MEM5RTkgLyogQ29sb3JTcGFjZURhdGEubW0gKi8sCiAJCQkJMUFDNzVBMUMx
QjMzNjk1RTAwNTY3NDVCIC8qIEhhbmdEZXRlY3Rpb25EaXNhYmxlck1hYy5tbSAqLywKIAkJCQky
RDUwMzY1RDFCQ0M3OTNGMDBFMjBCQjMgLyogTmF0aXZlV2ViR2VzdHVyZUV2ZW50TWFjLm1tICov
LAogCQkJCUMwMkJGRjFEMTI1MTUwMkUwMDlDQ0JFQSAvKiBOYXRpdmVXZWJLZXlib2FyZEV2ZW50
TWFjLm1tICovLApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9J
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NSwxMSArNDUsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoSW1hZ2VCdWZmZXJTCiAKIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBJbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNvbmZpZ3VyYXRpb24oY29uc3QgUGFyYW1ldGVy
cyYgcGFyYW1ldGVycykKIHsKLSAgICBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gY29u
ZmlndXJhdGlvbjsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBjb25maWd1cmF0aW9uLmNvbG9y
U3BhY2UgPSB7IGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpIH07Ci0j
ZW5kaWYKLSAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKKyAgICByZXR1cm4geyBwYXJhbWV0ZXJz
LmNvbG9yU3BhY2UgfTsKIH0KIAogSW50U2l6ZSBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQ6OmNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCShy
ZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCw3
ICs5NCw3IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cHJlcGEKICAgICAg
ICAgbWFya0NvbnRleHRMb3N0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byBk
aXNwbGF5QnVmZmVyID0gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoZGlz
cGxheUJ1ZmZlclNlbmRSaWdodCksIHNSR0JDb2xvclNwYWNlUmVmKCkpOworICAgIGF1dG8gZGlz
cGxheUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGRpc3Bs
YXlCdWZmZXJTZW5kUmlnaHQpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSk7CiAgICAgaWYgKGRpc3BsYXlCdWZmZXIpIHsKICAgICAgICAgYXV0byYgc2MgPSBwbGF0Zm9y
bVN3YXBDaGFpbigpOwogICAgICAgICBzYy5yZWN5Y2xlQnVmZmVyKCk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUltYWdlQnVmZmVyUHJveHkuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSA6IHB1
YmxpYyBXZQogICAgIHVzaW5nIEJhc2VEaXNwbGF5TGlzdEltYWdlQnVmZmVyOjpyZXNvbHV0aW9u
U2NhbGU7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPFJlbW90ZUltYWdlQnVmZmVyUHJv
eHk+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNv
cmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkm
IHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICBzdGF0aWMgUmVmUHRyPFJlbW90ZUlt
YWdlQnVmZmVyUHJveHk+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNl
JiBjb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCiAgICAgewog
ICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBh
cmFtZXRlcnMgeyBzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0
IH07CiAgICAgICAgIGlmIChCYWNrZW5kVHlwZTo6Y2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKHBh
cmFtZXRlcnMpLmlzRW1wdHkoKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjpjcmVhdGUKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDcmVh
dGVJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5sb2dpY2FsU2l6ZSgpLCBpbWFnZUJ1ZmZlci5yZW5k
ZXJpbmdNb2RlKCksIGltYWdlQnVmZmVyLnJlc29sdXRpb25TY2FsZSgpLCBpbWFnZUJ1ZmZlci5j
b2xvclNwYWNlKCksIGltYWdlQnVmZmVyLnBpeGVsRm9ybWF0KCksIGltYWdlQnVmZmVyLnJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcigpKSwgcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIoKSwg
SVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVw
bHkpOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2Rl
IHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNw
YWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KQorUmVmUHRyPEltYWdlQnVm
ZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4
ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpCiB7CiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1
ZmZlcjsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywxNSArNDMs
MTkgQEAKICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisK
IG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiBjbGFzcyBEaXNwbGF5TGlzdDsKIGNsYXNzIEl0ZW07
CiB9CisKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIEZsb2F0U2l6ZTsKIGNs
YXNzIFBpeGVsQnVmZmVyOworCiBlbnVtIGNsYXNzIEFscGhhUHJlbXVsdGlwbGljYXRpb24gOiB1
aW50OF90OwotZW51bSBjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgOiB1aW50OF90OwogZW51
bSBjbGFzcyBSZW5kZXJpbmdNb2RlIDogYm9vbDsKKwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTkyLDcgKzk2LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdl
cyB0byBiZSBzZW50LgotICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1h
Z2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9k
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2Us
IFdlYkNvcmU6OlBpeGVsRm9ybWF0KTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+
IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJl
bmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgV2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlJiwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQpOwogICAgIFN0cmluZyBnZXRE
YXRhVVJMRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91
YmxlPiBxdWFsaXR5LCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24sIFdlYkNvcmU6OlJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGdldERhdGFGb3JJ
bWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxp
dHksIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGNv
bnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2Vu
ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwCShy
ZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
U2hhcmVhYmxlTWFwcAogICAgIGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoYmFj
a2VuZFNpemUsIGJhY2tlbmRTaXplLCBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xv
clNwYWNlKSwgSU9TdXJmYWNlOjpmb3JtYXRGb3JQaXhlbEZvcm1hdChwYXJhbWV0ZXJzLnBpeGVs
Rm9ybWF0KSk7CisgICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoYmFja2VuZFNp
emUsIGJhY2tlbmRTaXplLCBwYXJhbWV0ZXJzLmNvbG9yU3BhY2UsIElPU3VyZmFjZTo6Zm9ybWF0
Rm9yUGl4ZWxGb3JtYXQocGFyYW1ldGVycy5waXhlbEZvcm1hdCkpOwogICAgIGlmICghc3VyZmFj
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTY1LDcgKzY1LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcAogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmln
aHQoV1RGTW92ZShXVEY6OmdldDxNYWNoU2VuZFJpZ2h0PihoYW5kbGUpKSwgY2FjaGVkQ0dDb2xv
clNwYWNlKHBhcmFtZXRlcnMuY29sb3JTcGFjZSkpOworICAgIGF1dG8gc3VyZmFjZSA9IElPU3Vy
ZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKFdURjo6Z2V0PE1hY2hTZW5kUmlnaHQ+
KGhhbmRsZSkpLCBwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpOwogICAgIGlmICghc3VyZmFjZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTMgKzI4LDEyIEBA
CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEhBVkUoQVZBU1NFVFJFQURFUikKIAotI2lu
Y2x1ZGUgIkNvbG9yU3BhY2VEYXRhLmgiCiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eU1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3Mu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0FWQXNzZXRNSU1FVHlwZUNhY2hlLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9Db2xvclNwYWNlQ0cuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29s
b3JTcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSU9TdXJmYWNlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9JbWFnZVR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+
CkBAIC0xNjgsMTQgKzE2NywxNCBAQCBQbGF0Zm9ybUltYWdlUHRyIFJlbW90ZUltYWdlRGVjb2Rl
ckFWRjo6CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgT3B0aW9uYWw8TWFjaFNlbmRS
aWdodD4gc2VuZFJpZ2h0OwotICAgICAgICBDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlOworICAg
ICAgICBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CiAgICAgICAg
IGlmICghbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3Nh
Z2VzOjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Q3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
bV9pZGVudGlmaWVyLCBpbmRleCksIE1lc3NhZ2VzOjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94
eTo6Q3JlYXRlRnJhbWVJbWFnZUF0SW5kZXg6OlJlcGx5KHNlbmRSaWdodCwgY29sb3JTcGFjZSks
IDApKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICghc2VuZFJpZ2h0KQorICAg
ICAgICBpZiAoIXNlbmRSaWdodCB8fCAhY29sb3JTcGFjZSkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21T
ZW5kUmlnaHQoV1RGTW92ZSgqc2VuZFJpZ2h0KSwgY29sb3JTcGFjZS5jZ0NvbG9yU3BhY2UuZ2V0
KCkpOworICAgICAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZy
b21TZW5kUmlnaHQoV1RGTW92ZSgqc2VuZFJpZ2h0KSwgV1RGTW92ZSgqY29sb3JTcGFjZSkpOwog
ICAgICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9jb2NvYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVDb2NvYS5tbQkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9jb2NvYS9NZWRpYVBs
YXllclByaXZhdGVSZW1vdGVDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBA
QCBSZWZQdHI8TmF0aXZlSW1hZ2U+IE1lZGlhUGxheWVyUHJpdmF0ZVJlCiAgICAgaWYgKCFzZW5k
UmlnaHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBzdXJmYWNlID0gV2Vi
Q29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoKnNlbmRSaWdodCks
IHNSR0JDb2xvclNwYWNlUmVmKCkpOworICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3Vy
ZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKCpzZW5kUmlnaHQpLCBXZWJDb3JlOjpE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgaWYgKCFzdXJmYWNlKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIApAQCAtOTEsNyArOTEsNyBAQCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1
ZmZlclJlZj4gTWVkaWFQbGF5ZXJQCiAgICAgaWYgKCFzZW5kUmlnaHQpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVh
dGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoKnNlbmRSaWdodCksIG51bGxwdHIpOworICAgIGF1dG8g
c3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3Zl
KCpzZW5kUmlnaHQpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAg
ICAgaWYgKCFzdXJmYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02NDYsNyArNjQ2LDcgQEAgaW5saW5lIFBERlBs
dWdpbjo6UERGUGx1Z2luKFdlYkZyYW1lJiBmcgogICAgIFttX2NvbnRhaW5lckxheWVyIGFkZFN1
YmxheWVyOm1fc2Nyb2xsQ29ybmVyTGF5ZXIuZ2V0KCldOwogICAgIGlmIChbbV9wZGZMYXllckNv
bnRyb2xsZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXREZXZpY2VDb2xvclNwYWNl
OildKSB7CiAgICAgICAgIGF1dG8gdmlldyA9IGZyYW1lLmNvcmVGcmFtZSgpLT52aWV3KCk7Ci0g
ICAgICAgIFttX3BkZkxheWVyQ29udHJvbGxlciBzZXREZXZpY2VDb2xvclNwYWNlOnNjcmVlbkNv
bG9yU3BhY2UodmlldyldOworICAgICAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIgc2V0RGV2aWNl
Q29sb3JTcGFjZTpzY3JlZW5Db2xvclNwYWNlKHZpZXcpLnBsYXRmb3JtQ29sb3JTcGFjZSgpXTsK
ICAgICB9CiAKICNpZiBIQVZFKElOQ1JFTUVOVEFMX1BERl9BUElTKQpJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVCaXRtYXBVdGlsaXRp
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NywxMiArNTcsNyBAQCBSZWZQdHI8U2hhcmVhYmxl
Qml0bWFwPiBjcmVhdGVTaGFyZWFibGVCCiAgICAgfQogCiAgICAgLy8gRklYTUU6IE9ubHkgc2Vs
ZWN0IEV4dGVuZGVkQ29sb3Igb24gaW1hZ2VzIGtub3duIHRvIG5lZWQgd2lkZSBnYW11dC4KLSAg
ICBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmlndXJhdGlvbjsKLSNp
ZiBVU0UoQ0cpCi0gICAgYml0bWFwQ29uZmlndXJhdGlvbi5jb2xvclNwYWNlLmNnQ29sb3JTcGFj
ZSA9IHNjcmVlbkNvbG9yU3BhY2UocmVuZGVySW1hZ2UuZnJhbWUoKS5tYWluRnJhbWUoKS52aWV3
KCkpOwotI2VuZGlmCi0KLSAgICBhdXRvIHNoYXJlZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoYml0bWFwU2l6ZSksIGJpdG1hcENvbmZpZ3VyYXRpb24p
OworICAgIGF1dG8gc2hhcmVkQml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFi
bGUoSW50U2l6ZShiaXRtYXBTaXplKSwgeyBzY3JlZW5Db2xvclNwYWNlKHJlbmRlckltYWdlLmZy
YW1lKCkubWFpbkZyYW1lKCkudmlldygpKSB9KTsKICAgICBpZiAoIXNoYXJlZEJpdG1hcCkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTI3LDcgKzkyNyw3IEBAIFdl
YkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkqIFcKIAogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKIAotUmVmUHRyPEltYWdlQnVmZmVyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUlt
YWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdN
b2RlLCBSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVz
dGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KSBj
b25zdAorUmVmUHRyPEltYWdlQnVmZmVyPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBS
ZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkg
Y29uc3QKIHsKICAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNob3VsZFVzZVJlbW90
ZVJlbmRlcmluZ0ZvcihwdXJwb3NlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI0NCw3ICsyNDQsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9u
aXRvckZhY3RvcnkqIGRpc3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkoKSBjb25zdCBmaW5hbDsK
IAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLSAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZm
ZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6
OlJlbmRlcmluZ01vZGUsIFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZv
cm1hdCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVh
dGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5kZXJp
bmdNb2RlLCBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFdlYkNvcmU6OlBpeGVsRm9y
bWF0KSBjb25zdCBmaW5hbDsKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgUmVmUHRyPFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJ
RCBob3N0V2luZG93RGlzcGxheUlEKSBjb25zdCBmaW5hbDsKICNlbmRpZgpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViRHJhZ0NsaWVudE1hYy5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC02OCw5ICs2OCw3IEBAIHVzaW5nIERyYWdJbWFnZSA9IENHSW1hZ2VSZWY7
CiAKIHN0YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0RHJhZ0ltYWdlVG9CaXRt
YXAoRHJhZ0ltYWdlIGltYWdlLCBjb25zdCBJbnRTaXplJiBzaXplLCBGcmFtZSYgZnJhbWUpCiB7
Ci0gICAgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGJpdG1hcENvbmZpZ3VyYXRpb247
Ci0gICAgYml0bWFwQ29uZmlndXJhdGlvbi5jb2xvclNwYWNlLmNnQ29sb3JTcGFjZSA9IHNjcmVl
bkNvbG9yU3BhY2UoZnJhbWUubWFpbkZyYW1lKCkudmlldygpKTsKLSAgICBhdXRvIGJpdG1hcCA9
IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNpemUsIGJpdG1hcENvbmZpZ3VyYXRp
b24pOworICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUo
c2l6ZSwgeyBzY3JlZW5Db2xvclNwYWNlKGZyYW1lLm1haW5GcmFtZSgpLnZpZXcoKSkgfSk7CiAg
ICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgRGVjb2RlcjsKIH0KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlOwogY2xhc3MgRGlz
cGxheVJlZnJlc2hNb25pdG9yOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBGcmFtZVZpZXc7CkBAIC02
MCw3ICs2MSw2IEBAIHN0cnVjdCBWaWV3cG9ydEF0dHJpYnV0ZXM7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1zdHJ1Y3QgQ29sb3JTcGFjZURhdGE7CiBjbGFzcyBMYXllclRyZWVIb3N0Owogc3Ry
dWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9y
ZTsKQEAgLTE4MCw3ICsxODAsNyBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IC8vIFVzZWQgYnkgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuCiAgICAgdmlydHVhbCB2
b2lkIHNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29sb3JTcGFjZShjb25zdCBDb2xvclNwYWNlRGF0YSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBz
ZXRDb2xvclNwYWNlKE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4pIHsg
fQogCiAgICAgdmlydHVhbCB2b2lkIGFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBX
ZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdFRy
YW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgeyB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNz
YWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9E
cmF3aW5nQXJlYS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDcgKzMxLDcgQEAgbWVzc2FnZXMgLT4gRHJhd2luZ0FyZWEgTm90UmVmQ291bnRl
ZCB7CiAgICAgLy8gVXNlZCBieSBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS4KICAgICBV
cGRhdGVHZW9tZXRyeShXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplLCBib29sIGZsdXNoU3luY2hy
b25vdXNseSwgTWFjaFNlbmRSaWdodCBmZW5jZVBvcnQpCiAgICAgU2V0RGV2aWNlU2NhbGVGYWN0
b3IoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpCi0gICAgU2V0Q29sb3JTcGFjZShzdHJ1Y3QgV2Vi
S2l0OjpDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlKQorICAgIFNldENvbG9yU3BhY2Uoc3RydWN0
IE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZSkKICAg
ICBTZXRWaWV3RXhwb3NlZFJlY3QoT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiB2aWV3RXhw
b3NlZFJlY3QpCiAKICAgICBBZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29y
ZTo6RmxvYXRQb2ludCBvcmlnaW4pCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1OTgsNyAr
MjU5OCw3IEBAIHN0YXRpYyBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gc24KICAgICBT
aGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKICNpZiBVU0UoQ0cp
CiAgICAgaWYgKG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNVc2VTY3JlZW5Db2xvclNwYWNlKQot
ICAgICAgICBjb25maWd1cmF0aW9uLmNvbG9yU3BhY2UuY2dDb2xvclNwYWNlID0gc2NyZWVuQ29s
b3JTcGFjZShwYWdlLmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKSk7CisgICAgICAgIGNv
bmZpZ3VyYXRpb24uY29sb3JTcGFjZSA9IHNjcmVlbkNvbG9yU3BhY2UocGFnZS5jb3JlUGFnZSgp
LT5tYWluRnJhbWUoKS52aWV3KCkpOwogI2VuZGlmCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgJKHdvcmtpbmcgY29weSkKQEAgLTk4LDcgKzk4LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHN1c3BlbmRQYWludGluZygpOwogICAgIHZvaWQgcmVzdW1l
UGFpbnRpbmcoKTsKICAgICB2b2lkIHNldExheWVySG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9k
ZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRDb2xvclNwYWNlKGNvbnN0IENvbG9yU3BhY2VEYXRh
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb2xvclNwYWNlKE9wdGlvbmFsPFdlYkNvcmU6OkRl
c3RpbmF0aW9uQ29sb3JTcGFjZT4pIG92ZXJyaWRlOwogICAgIHZvaWQgYWRkRmVuY2UoY29uc3Qg
V1RGOjpNYWNoU2VuZFJpZ2h0Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGFkZFRyYW5zYWN0aW9u
Q2FsbGJhY2tJRChDYWxsYmFja0lEKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQog
Ci0jaW1wb3J0ICJDb2xvclNwYWNlRGF0YS5oIgogI2ltcG9ydCAiRGlzcGxheVJlZnJlc2hNb25p
dG9yTWFjLmgiCiAjaW1wb3J0ICJEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCIKICNpbXBvcnQg
IkxheWVySG9zdGluZ0NvbnRleHQuaCIKQEAgLTQ1LDYgKzQ0LDcgQEAKICNpbXBvcnQgPHBhbC9z
cGkvY29jb2EvUXVhcnR6Q29yZVNQSS5oPgogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3Jl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RlYnVnUGFnZU92ZXJsYXlzLmg+CisjaW1wb3J0IDxXZWJD
b3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3ND
b250ZXh0Lmg+CkBAIC05MSw2ICs5MSw3IEBAIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
OjpUaWxlZENvcmUKICAgICB9KTsKIAogICAgIHVwZGF0ZUxheWVySG9zdGluZ0NvbnRleHQoKTsK
KyAgICAKICAgICBzZXRDb2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JTcGFjZSk7CiAKICAgICBp
ZiAoYXV0byB2aWV3RXhwb3NlZFJlY3QgPSBwYXJhbWV0ZXJzLnZpZXdFeHBvc2VkUmVjdCkKQEAg
LTY1MCw5ICs2NTEsOSBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRM
CiAgICAgc2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWFQcm94eTo6VXBkYXRlQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ01vZGUoMCwgbGF5ZXJUcmVlQ29udGV4dCkpOwogfQogCi12b2lkIFRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRDb2xvclNwYWNlKGNvbnN0IENvbG9yU3BhY2VEYXRh
JiBjb2xvclNwYWNlKQordm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0Q29s
b3JTcGFjZShPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3Bh
Y2UpCiB7Ci0gICAgbV9sYXllckhvc3RpbmdDb250ZXh0LT5zZXRDb2xvclNwYWNlKGNvbG9yU3Bh
Y2UuY2dDb2xvclNwYWNlLmdldCgpKTsKKyAgICBtX2xheWVySG9zdGluZ0NvbnRleHQtPnNldENv
bG9yU3BhY2UoY29sb3JTcGFjZSA/IGNvbG9yU3BhY2UtPnBsYXRmb3JtQ29sb3JTcGFjZSgpIDog
bnVsbHB0cik7CiB9CiAKIFJlZlB0cjxXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I+IFRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3Io
UGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjc3OTIwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDUtMjIgIFNhbSBXZWlu
aWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIENvbnZlcnQgRGVzdGluYXRpb25Db2xv
clNwYWNlIGZyb20gYW4gZW51bSB0byBjbGFzcyB3cmFwcGluZyBhIHBsYXRmb3JtIGNvbG9yIHNw
YWNlIChDR0NvbG9yU3BhY2VSZWYgZm9yIENHIHBvcnRzLCBldGMuKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTQzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250
ZXh0TWVudUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNvbnRleHRNZW51Q2xpZW50OjppbWFnZUZv
ckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0pOgorICAgICAgICBVcGRhdGUgZm9yIG5l
dyBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY2xhc3MuCisKIDIwMjEtMDUtMjIgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBM
b2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5t
bQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQz
LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQml0bWFwSW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUv
Q29udGV4dE1lbnUuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29udGV4dE1lbnVDb250cm9sbGVyLmg+
CisjaW1wb3J0IDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9Eb2N1bWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9GcmFtZVZpZXcuaD4KQEAgLTIxMyw3ICsyMTQsNyBAQCBSZXRhaW5QdHI8TlNJbWFnZT4g
V2ViQ29udGV4dE1lbnVDbGllbnQ6CiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICAvLyBUaGlz
IGlzIGVmZmVjdGl2ZWx5IGEgc25hcHNob3QsIGFuZCB3aWxsIGJlIHBhaW50ZWQgaW4gYW4gdW5h
Y2NlbGVyYXRlZCBmYXNoaW9uIGluIGxpbmUgd2l0aCBGcmFtZVNuYXBzaG90dGluZy4KLSAgICBh
dXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUocmVjdC5zaXplKCksIFJlbmRlcmluZ01v
ZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUocmVj
dC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghYnVmZmVyKQog
ICAgICAgICByZXR1cm4gbmlsOwogCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzc5MjApCisrKyBUb29scy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wNS0yMiAgU2FtIFdlaW5pZyAg
PHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdyYXBwaW5nIGEgcGxhdGZvcm0gY29sb3Igc3BhY2Ug
KENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0Yy4pCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxNDMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VCk6CisgICAgICAgIFVwYXRlIHRlc3QgdG8gdXNlIG5ldyBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ug
dHlwZS4KKwogMjAyMS0wNS0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2NhbCB2YXJpYWJsZXMK
SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9QaXhlbER1bXBTdXBwb3J0SU9TLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9QaXhlbER1bXBTdXBwb3J0SU9T
Lm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3MvUGl4ZWxE
dW1wU3VwcG9ydElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw2ICsz
OCw3IEBACiAjaW1wb3J0IDxDb21tb25DcnlwdG8vQ29tbW9uRGlnZXN0Lmg+CiAjaW1wb3J0IDxN
b2JpbGVDb3JlU2VydmljZXMvVVRDb3JlVHlwZXMuaD4KICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVh
cnR6Q29yZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNp
bXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KICNpbXBvcnQgPFdlYkNvcmUvSU9T
dXJmYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CkBAIC03MSw3ICs3
Miw3IEBAIFJlZlB0cjxCaXRtYXBDb250ZXh0PiBjcmVhdGVCaXRtYXBDb250ZXgKICNlbHNlCiAg
ICAgV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQgc25hcHNob3RGb3JtYXQgPSBXZWJDb3JlOjpJ
T1N1cmZhY2U6OkZvcm1hdDo6QkdSQTsKICNlbmRpZgotICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNv
cmU6OklPU3VyZmFjZTo6Y3JlYXRlKFdlYkNvcmU6OmV4cGFuZGVkSW50U2l6ZShzbmFwc2hvdFNp
emUpLCBXZWJDb3JlOjpzUkdCQ29sb3JTcGFjZVJlZigpLCBzbmFwc2hvdEZvcm1hdCk7CisgICAg
YXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGUoV2ViQ29yZTo6ZXhwYW5k
ZWRJbnRTaXplKHNuYXBzaG90U2l6ZSksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpLCBzbmFwc2hvdEZvcm1hdCk7CiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNnSW1h
Z2UgPSBzdXJmYWNlLT5jcmVhdGVJbWFnZSgpOwogCiAgICAgdm9pZCogYml0bWFwQnVmZmVyID0g
bnVsbHB0cjsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNw
bGF5TGlzdFRlc3RzQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NH
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgVVNFKENHKQogCisj
aW5jbHVkZSA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0Rpc3BsYXlMaXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdFJlcGxheWVyLmg+CkBAIC00Niw4ICs0Nyw4
IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgUmVwbGF5V2l0aE1pc3NpbmcKIHsKICAgICBGbG9h
dFJlY3QgY29udGV4dEJvdW5kcyB7IDAsIDAsIGNvbnRleHRXaWR0aCwgY29udGV4dEhlaWdodCB9
OwogCi0gICAgYXV0byBjb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDcmVhdGVXaXRo
TmFtZShrQ0dDb2xvclNwYWNlU1JHQikpOwotICAgIGF1dG8gY2dDb250ZXh0ID0gYWRvcHRDRihD
R0JpdG1hcENvbnRleHRDcmVhdGUobnVsbHB0ciwgY29udGV4dFdpZHRoLCBjb250ZXh0SGVpZ2h0
LCA4LCA0ICogY29udGV4dFdpZHRoLCBjb2xvclNwYWNlLmdldCgpLCBrQ0dJbWFnZUFscGhhUHJl
bXVsdGlwbGllZExhc3QpKTsKKyAgICBhdXRvIGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKTsKKyAgICBhdXRvIGNnQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250
ZXh0Q3JlYXRlKG51bGxwdHIsIGNvbnRleHRXaWR0aCwgY29udGV4dEhlaWdodCwgOCwgNCAqIGNv
bnRleHRXaWR0aCwgY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwga0NHSW1hZ2VBbHBo
YVByZW11bHRpcGxpZWRMYXN0KSk7CiAgICAgR3JhcGhpY3NDb250ZXh0IGNvbnRleHQgeyBjZ0Nv
bnRleHQuZ2V0KCkgfTsKIAogICAgIGF1dG8gaW1hZ2VCdWZmZXJJZGVudGlmaWVyID0gUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwpAQCAtNjksNyArNzAsNyBAQCBURVNU
KERpc3BsYXlMaXN0VGVzdHMsIFJlcGxheVdpdGhNaXNzaW5nCiAgICAgfQogCiAgICAgewotICAg
ICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh7IDEwMCwgMTAwIH0s
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUoeyAxMDAsIDEwMCB9LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJh
dGVkLCAxLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgICAgICBJbWFnZUJ1
ZmZlckhhc2hNYXAgaW1hZ2VCdWZmZXJNYXA7CiAgICAgICAgIGltYWdlQnVmZmVyTWFwLnNldChp
bWFnZUJ1ZmZlcklkZW50aWZpZXIsIGltYWdlQnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwogCg==
</data>
<flag name="commit-queue"
          id="450636"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429444</attachid>
            <date>2021-05-22 18:15:45 -0700</date>
            <delta_ts>2021-05-22 19:34:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226143-20210522181544.patch</filename>
            <type>text/plain</type>
            <size>274169</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5NSBAQAorMjAyMS0wNS0yMiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdyYXBwaW5nIGEgcGxhdGZvcm0gY29sb3Ig
c3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0Yy4pCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxNDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIGVudW1lcmF0aW9uIGJh
c2VkIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB3aXRoIGEgc3RydWN0IHdyYXBwaW5nCisgICAgICAg
IGEgcGxhdGZvcm0gY29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0
Yy4pLiBGb3IgcG9ydHMKKyAgICAgICAgdGhhdCBkb24ndCBoYXZlIGEgcGxhdGZvcm0gbGV2ZWwg
Y29sb3Igc3BhY2UgdHlwZSwgYSBidWlsdGluIFBsYXRmb3JtQ29sb3JTcGFjZQorICAgICAgICB0
eXBlIGlzIHByb3ZpZGVkIHRoYXQgaXMganVzdCB0aGUgb2xkIGVudW0gcmVuYW1lZCB0byBQbGF0
Zm9ybUNvbG9yU3BhY2U6Ok5hbWUuCisKKyAgICAgICAgVGhlIGdvYWwgb2YgdGhpcyBjaGFuZ2Ug
aXMgdG8gdW5pZnkgdGhlIGN1cnJlbnRseSBiaWZyYWNhdGVkIGNvbmNlcHQgb2YgYW4KKyAgICAg
ICAgSW1hZ2VCdWZmZXIncyBjb2xvciBzcGFjZSwgd2hpY2ggcHJldmlvc2x5IGNvdWxkIGVpdGhl
ciBiZSBiYXNlZCBvbiB0aGUgCisgICAgICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgYW5kIHJl
ZmxlY3RlZCBpbiB0aGUgY29sb3JTcGFjZSgpIG1lbWJlciBmdW5jdGlvbiwKKyAgICAgICAgb3Ig
KGZvciBDRyBwb3J0cykgYmFzZWQgb24gYSBDR0NvbG9yU3BhY2VSZWYsIHdpdGggdGhlIGNvbG9y
U3BhY2UoKSBmdW5jdGlvbgorICAgICAgICByZXR1cm5pbmcgc1JHQiBldmVuIGlmIHRoZSBJbWFn
ZUJ1ZmZlciB3YXMgbm90LiAKKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICog
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpD
bGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXJ0d29ya0ltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogU291cmNl
cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBJbWFnZUJpdG1hcCk6CisgICAgICAgIChXZWJD
b3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEltYWdlQml0bWFwKToKKyAgICAgICAgKiBjc3Mv
Q1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXJJbWFn
ZVZhbHVlOjppbWFnZSk6CisgICAgICAgICogaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludENhbnZhczo6Y29waWVkSW1hZ2UgY29uc3QpOgor
ICAgICAgICAqIGh0bWwvQ3VzdG9tUGFpbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
dXN0b21QYWludEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6dG9NZWRp
YVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1h
Z2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGVCdWZmZXJGb3JQYWludGlu
ZyBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAgICog
aHRtbC9JbWFnZUJpdG1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJpdG1hcDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCaXRtYXA6OmNyZWF0ZVBy
b21pc2UpOgorICAgICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Y29tbWl0VG9QbGFjZWhvbGRlckNhbnZhcyk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojpjb2xvclNwYWNlIGNvbnN0KToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0OjpzZXRPdXRwdXRCaXRtYXApOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnRvRGVzdGluYXRpb25Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvUHJlZGVmaW5l
ZENvbG9yU3BhY2UpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNl
Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1
ZmZlckNhY2hlOjppbWFnZUJ1ZmZlcik6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbkltYWdlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6YnVpbGRBcnJheUZvckNhbnZhc1BhdHRlcm4p
OgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6
Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAg
ICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hv
dHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RGcmFtZVJlY3RXaXRoQ2xpcCk6
CisgICAgICAgICogcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNhbXBsZUNvbG9yKToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9Ib3N0V2luZG93Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1Db2xv
clNwYWNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db2xvclNwYWNlOjpn
ZXQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2NyZWVuUHJvcGVydGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVu
UHJvcGVydGllczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVlbkRhdGE6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5EYXRhOjpkZWNvZGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3UGF0dGVybik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29s
b3I6OnRvQ29sb3JDb21wb25lbnRzSW5Db2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJDb2xvckNvbXBvbmVudHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yU3BhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25j
cmV0ZUltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVy
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRl
ZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpk
cmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xv
clNwYWNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IpOgorICAgICAgICAoV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5l
YXJTUkdCKToKKyAgICAgICAgKFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxh
eVAzKToKKyAgICAgICAgKFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGVzdGluYXRp
b25Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAgICAo
V2ViQ29yZTo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OnBsYXRmb3JtQ29sb3JT
cGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OmRl
Y29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJCYWNrZW5kOjpnZXRQaXhlbEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OnB1dFBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyQmFja2VuZDo6dHJhbnNmb3JtQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbG9yU3BhY2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1BpeGVsQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6
ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckNvbnZlcnNp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZVZJbWFnZUNHSW1hZ2VGb3JtYXQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1hdDo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cmFuc2Zl
ckJHUkFQaXhlbEJ1ZmZlclRvSU9TdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZVZp
ZGVvU2FtcGxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGU6
OlJlbW90ZVZpZGVvU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxl
OjpzdXJmYWNlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRl
b1NhbXBsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6Z2V0U2NyYXRjaEJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRp
bGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpibHVyU2hhZG93QnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdTaGFkb3dMYXllcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBh
aW50UmVzdWx0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyb0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0Jh
Y2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQ29sb3JDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9DR0NvbXBh
dGlibGVDb21wb25lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNHQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6cGxhdGZvcm1Db252ZXJ0Q29sb3JDb21wb25lbnRzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaDoKKyAgICAgICAgKFdlYkNvcmU6
OmNhY2hlZENHQ29sb3JTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdXJmYWNlTWF0
Y2hlc1BhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlUG9vbDo6dGFrZVN1
cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjb3B5Q0dJbWFnZUZv
ckVuY29kaW5nIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6
c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJC
YWNraW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW06CisgICAgICAg
IChXZWJDb3JlOjpJT1N1cmZhY2U6OnN1cmZhY2VGcm9tUG9vbCk6CisgICAgICAgIChXZWJDb3Jl
OjpJT1N1cmZhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0
ZUZyb21TZW5kUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9t
U3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21JbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21QaXhlbEJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OklPU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJT1N1cmZhY2U6OmVuc3VyZVBsYXRmb3JtQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJ
T1N1cmZhY2U6Om1pZ3JhdGVDb2xvclNwYWNlVG9Qcm9wZXJ0aWVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6cmVuZGVy
VG9JbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFu
c2ZlclNlc3Npb25WVC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlVHJhbnNmZXJTZXNzaW9u
VlQ6OmNyZWF0ZVBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9Q
aXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVy
Q29uZm9ybWVyQ1Y6OmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyOjpjcmVhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OmRlc3Ryb3kp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5n
Q29tbWFuZHM6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczo6Y29sb3JTcGFjZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5nQ29t
bWFuZHM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVn
aW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6R2V0UGl4ZWxCdWZmZXI6OkdldFBpeGVsQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpHZXRQaXhlbEJ1ZmZlcjo6b3V0cHV0Rm9ybWF0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpHZXRQaXhlbEJ1ZmZlcjo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpHZXRQaXhlbEJ1ZmZlcjo6ZGVjb2Rl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNs
aXBUb0RyYXdpbmdDb21tYW5kcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlz
cGxhY2VtZW50TWFwOjpzZXRSZXN1bHRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRVRpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVs
QnVmZmVyVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29u
dmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVm
ZmVjdDo6Y29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0aW5hdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRQaXhlbEJ1ZmZlclRvRGVzdGluYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpyZXF1aXJlc1BpeGVsQnVmZmVy
Q29sb3JTcGFjZUNvbnZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojp0
cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpv
cGVyYXRpbmdDb2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6c2V0T3BlcmF0aW5nQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OnJlc3VsdENvbG9yU3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZm
ZWN0OjpzZXRSZXN1bHRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL1NvdXJjZUdyYXBoaWMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6
OlNvdXJjZUdyYXBoaWMpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5JT1MubW06CisgICAgICAgIChXZWJDb3JlOjpzY3Jl
ZW5Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RTY3JlZW5Qcm9wZXJ0aWVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5NYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpjb2xsZWN0U2NyZWVuUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpz
Y3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50
b0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNw
bGF5Q2FwdHVyZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5EaXNwbGF5Q2FwdHVy
ZXJNYWM6OmNyZWF0ZURpc3BsYXlTdHJlYW0pOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2U6OmltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9wbGF5
c3RhdGlvbi9QbGF0Zm9ybVNjcmVlblBsYXlTdGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNjcmVlbkNvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVl
bldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS93cGUvUGxhdGZvcm1TY3JlZW5XUEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oOgor
ICAgICAgICAoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YTo6ZGVjb2Rl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZpbHRlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
RmlsdGVyOjpidWlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmFsbG9jYXRlQmFj
a2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjphcHBseSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnBhdHRlcm5Gb3JEZXNjcmlwdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50U3lz
dGVtUHJldmlld0JhZGdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRQcm9ncmVzc0Jhcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
aGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VDbGlwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291
cmNlQ2xpcHBlcjo6YXBwbHlDbGlwcGluZ1RvQ29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1hc2tBbmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6ZHJhd0NvbnRlbnRJ
bnRvTWFza0ltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
TWFza2VyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRl
cm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpjcmVh
dGVUaWxlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5n
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVh
dGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0Ojpi
dWZmZXJGb3JlZ3JvdW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0Nv
bnRleHQuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUpOgorCiAyMDIxLTA1LTIyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiBDb21wb25lbnQgYXQgaW5kZXgg
MSBpcyAxLjAwMDAwMCBhbmQgaXMgZ3JlYXRlciB0aGFuIHRoZSBhbGxvd2VkIG1heGltdW0gMS4w
MDAwMDAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTE5Nyw2ICsxMTk3LDcg
QEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Rhc2hB
cnJheS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGVjb2RpbmdPcHRpb25zLmgKKyAgICBwbGF0
Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxh
eVJlZnJlc2hNb25pdG9yQ2xpZW50LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVm
cmVzaE1vbml0b3JGYWN0b3J5LmgKQEAgLTEyOTMsNiArMTI5NCw3IEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZl
ci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1BpeGVsRm9ybWF0LmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bUNvbG9yU3BhY2UuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE5
NTAsNiArMTk1MCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhU
ZXh0Q29udHJvbGxlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBi
b2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NE
YXRhU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2wKIAogICAgICAgICBhdXRvIGJpdG1hcElt
YWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgICAgICBiaXRtYXBJbWFnZS0+c2V0RGF0
YShXVEZNb3ZlKGJ1ZmZlclRvU2FuaXRpemUpLCB0cnVlKTsKLSAgICAgICAgYXV0byBpbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
LCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
ICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikgewogICAgICAgICAgICAgbV9kYXRhID0geyBudWxs
U3RyaW5nKCkgfTsKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1l
dGFkYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCB2b2lkIEFydHdvcmtJ
bWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyVG9TYW5pdGl6ZSA9IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBhdXRv
IGJpdG1hcEltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIGJpdG1hcEltYWdlLT5z
ZXREYXRhKFdURk1vdmUoYnVmZmVyVG9TYW5pdGl6ZSksIHRydWUpOwotICAgIGF1dG8gaW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJpdG1hcEltYWdlLT5zaXplKCksIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAg
ICBpZiAoIWltYWdlQnVmZmVyKSB7CiAgICAgICAgIG1fY2FsbGJhY2sobnVsbHB0cik7CiAgICAg
ICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjc3OTIwKQorKysg
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEz
IEBACisyMDIxLTA1LTIyICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAg
ICBDb252ZXJ0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBmcm9tIGFuIGVudW0gdG8gY2xhc3Mgd3Jh
cHBpbmcgYSBwbGF0Zm9ybSBjb2xvciBzcGFjZSAoQ0dDb2xvclNwYWNlUmVmIGZvciBDRyBwb3J0
cywgZXRjLikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyNjE0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDoKKyAgICAgICAgQWRkIGFkZGlvbmFsIFNQ
SSBmb3Igd29ya2luZyB3aXRoIENHQ29sb3JTcGFjZVJlZnMuCisKIDIwMjEtMDUtMjEgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBZG9w
dCBRTEl0ZW0gaW4gV0tJbWFnZUV4dHJhY3Rpb25QcmV2aWV3Q29udHJvbGxlcgpJbmRleDogU291
cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGlj
c1NQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDIsNiArMjQyLDcgQEAgdHlwZWRlZiB2b2lkICgq
Q0dTTm90aWZ5UHJvY1B0cikoQ0dTTm90aQogCiBXVEZfRVhURVJOX0NfQkVHSU4KIAorYm9vbCBD
R0NvbG9yVHJhbnNmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyhDR0NvbG9yVHJhbnNmb3JtUmVm
LCBDR0NvbG9yU3BhY2VSZWYsIENHQ29sb3JSZW5kZXJpbmdJbnRlbnQsIGNvbnN0IENHRmxvYXQg
c3JjQ29tcG9uZW50c1tdLCBDR0Zsb2F0IGRzdENvbXBvbmVudHNbXSk7CiBDR0NvbG9yUmVmIENH
Q29sb3JUcmFuc2Zvcm1Db252ZXJ0Q29sb3IoQ0dDb2xvclRyYW5zZm9ybVJlZiwgQ0dDb2xvclJl
ZiwgQ0dDb2xvclJlbmRlcmluZ0ludGVudCk7CiBDR0NvbG9yVHJhbnNmb3JtUmVmIENHQ29sb3JU
cmFuc2Zvcm1DcmVhdGUoQ0dDb2xvclNwYWNlUmVmLCBDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRl
cyk7CiAKQEAgLTI5MSw2ICsyOTIsOCBAQCBDR1N0eWxlUmVmIENHR1N0YXRlR2V0U3R5bGUoQ0dH
U3RhdGVSZWYpCiBDR1N0eWxlVHlwZSBDR1N0eWxlR2V0VHlwZShDR1N0eWxlUmVmKTsKIGNvbnN0
IHZvaWQgKkNHU3R5bGVHZXREYXRhKENHU3R5bGVSZWYpOwogQ0dDb2xvclJlZiBDR1N0eWxlR2V0
Q29sb3IoQ0dTdHlsZVJlZik7Citib29sIENHQ29sb3JTcGFjZUVxdWFsVG9Db2xvclNwYWNlKENH
Q29sb3JTcGFjZVJlZiwgQ0dDb2xvclNwYWNlUmVmKTsKK0NGU3RyaW5nUmVmIENHQ29sb3JTcGFj
ZUNvcHlJQ0NQcm9maWxlRGVzY3JpcHRpb24oQ0dDb2xvclNwYWNlUmVmKTsKIAogI2lmIEhBVkUo
Q0dQQVRIX0dFVF9OVU1CRVJfT0ZfRUxFTUVOVFMpCiBzaXplX3QgQ0dQYXRoR2V0TnVtYmVyT2ZF
bGVtZW50cyhDR1BhdGhSZWYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0zOTk2LDYgKzM5OTYsNyBAQAogCQlCQzIzRjBEQjBEQUZGNEE0MDA5RkRDOTEgLyogR2VuZXJh
dGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMjNGMERBMERBRkY0QTQwMDlGREM5MSAvKiBHZW5lcmF0ZWRJbWFnZS5oICovOyB9OwogCQlC
QzI3NEIyRjE0MEVCRUIyMDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI3NEIyRTE0MEVC
RUIyMDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggKi87IH07CiAJCUJDMkNC
RjRFMTQwRjFBQkQwMDM4NzlCRSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJDQkY0QjE0MEYxQTY1MDAzODc5
QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oICovOyB9OworCQlCQzJDQ0ExMDI2NTVEREIyMDBC
OEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJDQ0EwRTI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGlu
YXRpb25Db2xvclNwYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQkMzMDVDN0EwQzA3NkJCMzAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzA1
Qzc4MEMwNzZCQjMwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50LmggKi87IH07CiAJCUJD
MzQ4QkQ0MERCN0Y4MDQwMDRBQkFCOSAvKiBKU1hNTEh0dHBSZXF1ZXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzM0OEJEMjBEQjdGODA0MDA0QUJB
QjkgLyogSlNYTUxIdHRwUmVxdWVzdC5oICovOyB9OwogCQlCQzM0OEJENDBEQjdGODA0MDA0QUJB
QkEgLyogV2ViQ29yZUpTQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDMzQ4QkQyMERCN0Y4MDQwMDRBQkFCQSAvKiBXZWJDb3JlSlNCdWls
dGlucy5oICovOyB9OwpAQCAtNDAwNyw2ICs0MDA4LDcgQEAKIAkJQkMzQkU5OTkwRTlDMUU1RDAw
ODM1NTg4IC8qIFJlbmRlclNjcm9sbGJhclRoZW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzNCRTk5ODBFOUMxRTVEMDA4MzU1ODggLyogUmVuZGVy
U2Nyb2xsYmFyVGhlbWUuaCAqLzsgfTsKIAkJQkMzQzM5QjcwQzBEM0Q4RDAwNUY0RDdBIC8qIEpT
TWVkaWFMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzNDMzlCNTBDMEQzRDhEMDA1RjREN0EgLyogSlNNZWRpYUxpc3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzNEODVCQzFDMEUyRTdBMDBE
M0I2MTAgLyogSlNIVE1MUGljdHVyZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODA4QjEzMUMwRTJCMzUwMDY2RkQ2QiAvKiBKU0hUTUxQ
aWN0dXJlRWxlbWVudC5oICovOyB9OworCQlCQzNFNjI0MzI2NTk3OTE4MDA1NDhBQ0QgLyogUGxh
dGZvcm1Db2xvclNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzNFNjI0MjI2NTk3OTE3MDA1NDhBQ0QgLyogUGxhdGZvcm1Db2xvclNwYWNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM0MzY4
RTgwQzIyNkUzMjAwNUVGQjVGIC8qIFJlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDNDM2OEU3MEMyMjZFMzIwMDVFRkI1RiAvKiBSZWN0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM0NkMxRkQw
QzBEREM4RjAwMjBDRkMzIC8qIEpTQ1NTRm9udEZhY2VSdWxlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzQ2QzFGMzBDMEREQzhGMDAyMENGQzMgLyog
SlNDU1NGb250RmFjZVJ1bGUuaCAqLzsgfTsKIAkJQkM0NkMxRkYwQzBEREM4RjAwMjBDRkMzIC8q
IEpTQ1NTSW1wb3J0UnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkM0NkMxRjUwQzBEREM4RjAwMjBDRkMzIC8qIEpTQ1NTSW1wb3J0UnVsZS5oICov
OyB9OwpAQCAtMTQxMzQsNiArMTQxMzYsOCBAQAogCQlCQzI5OTM1QzE3QTFERDU4MDBCQ0U4ODAg
LyogQ29sb3JJbnB1dFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ29sb3JJbnB1dFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJD
QkY0QjE0MEYxQTY1MDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMQ29udGV4dEV2ZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDMkNCRjdBMTQwRjFENTgwMDM4NzlCRSAvKiBKU1dlYkdMQ29u
dGV4dEV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2Vi
R0xDb250ZXh0RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJDQ0Ew
RTI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCQzJDQ0EwRjI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDMkVENTU0MEM2QjlCRDMwMDkyMEJGRiAvKiBKU0VsZW1lbnRD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFbGVtZW50
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyRUQ2QkIwQzZCRDJG
MDAwOTIwQkZGIC8qIEpTQXR0ckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0F0dHJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQzMwNUM3NzBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MT2JqZWN0RWxlbWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDE1Nyw2ICsxNDE2MSw3IEBACiAJ
CUJDM0JFOUFBMEU5QzI0MjAwMDgzNTU4OCAvKiBSZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNjcm9sbGJhclBhcnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzNDMzlCNDBDMEQzRDhEMDA1RjREN0Eg
LyogSlNNZWRpYUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTTWVkaWFMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzQzM5QjUw
QzBEM0Q4RDAwNUY0RDdBIC8qIEpTTWVkaWFMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU01lZGlhTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
QzNFNjI0MjI2NTk3OTE3MDA1NDhBQ0QgLyogUGxhdGZvcm1Db2xvclNwYWNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtQ29sb3JTcGFjZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQzQzNjhFNzBDMjI2RTMyMDA1RUZCNUYgLyogUmVjdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVjdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQzQ2QzFFRDBDMEREQkRGMDAyMENGQzMgLyogSlNDU1NSdWxlQ3VzdG9t
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NTU1J1bGVDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzQ2QzFGMjBDMEREQzhGMDAy
MENGQzMgLyogSlNDU1NGb250RmFjZVJ1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTQ1NTRm9udEZhY2VSdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTI2OTI1LDYgKzI2OTMwLDggQEAKIAkJCQkyRDJGQzA1NTE0NjBDRDZGMDAyNjM2
MzMgLyogQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaCAqLywKIAkJCQlBOENCNDEwMjBFODVCOEE1
MDAzMkM0RjAgLyogRGFzaEFycmF5LmggKi8sCiAJCQkJNTU1MTMwMDAxRTdDQ0NDQTAwQTY5RTM4
IC8qIERlY29kaW5nT3B0aW9ucy5oICovLAorCQkJCUJDMkNDQTBGMjY1NUREQjIwMEI4QzAzNSAv
KiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuY3BwICovLAorCQkJCUJDMkNDQTBFMjY1NUREQjIwMEI4
QzAzNSAvKiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCAqLywKIAkJCQk0OUZDN0E0RjE0NDRBRjVG
MDBBNUQ4NjQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCAqLywKIAkJCQk0OUFGMkQ2ODE0
NDM1RDA1MDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmggKi8sCiAJCQkJMkQyOUVD
QzExOTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5jcHAgKi8s
CkBAIC0yNzEwMSw2ICsyNzEwOCw3IEBACiAJCQkJQkM2MzVFOEIyNjRDMkNBRTAwMEVGMzNBIC8q
IFBpeGVsQnVmZmVyRm9ybWF0LmggKi8sCiAJCQkJQkM2MzVFOTAyNjRDNDY5RjAwMEVGMzNBIC8q
IFBpeGVsRm9ybWF0LmNwcCAqLywKIAkJCQlCQ0E1NTkxMjI2M0RCRDc5MDA3RjE5QjMgLyogUGl4
ZWxGb3JtYXQuaCAqLywKKwkJCQlCQzNFNjI0MjI2NTk3OTE3MDA1NDhBQ0QgLyogUGxhdGZvcm1D
b2xvclNwYWNlLmggKi8sCiAJCQkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3Jt
SW1hZ2UuaCAqLywKIAkJCQk3MkJBQzNBNjIzRTE3MzI4MDA4RDc0MUMgLyogUGxhdGZvcm1JbWFn
ZUJ1ZmZlci5oICovLAogCQkJCTU1MDY0MEFEMjQwNzU2REEwMEFBRTA0NSAvKiBQbGF0Zm9ybUlt
YWdlQnVmZmVyQmFja2VuZC5oICovLApAQCAtMzIyMzAsNiArMzIyMzgsNyBAQAogCQkJCTk0Nzk0
OTI1MUUwMzA4QUYwMDAxOEQ4NSAvKiBEZXByZWNhdGVkQ1NTT01WYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTQ3OTQ5M0QxRTA0NjNCNjAwMDE4RDg1IC8qIERlcHJlY2F0ZWRDU1NPTVZhbHVl
TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NCRDEyOUUxRjk4QjkwRTAwMTI3RDI5IC8qIERl
cHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMyQ0NBMTAyNjU1
RERCMjAwQjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDExMjIzQzUyNjAzNTY3RDAwQjBBMEI2IC8qIERldGFjaGVkUlRDRGF0YUNoYW5uZWwuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3QzlBQkY5MTM1N0EzQkYwMEY1NTAzRiAvKiBEZXRhaWxzTWFy
a2VyQ29udHJvbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFFRDc3OEQxQkUzMjk0MDAwREMxNzkx
IC8qIERldmljZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjI4MSw2ICszMjI5MCw3IEBACiAJCQkJ
MUNFOEQxMjcyNjE4NUMwRTAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZp
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ1MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNw
bGF5TGlzdEl0ZW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDM3N0Q1NzI1NTFDOUM2MDA4MEFC
RkUgLyogRGlzcGxheUxpc3RJdGVtVHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMzRTYyNDMy
NjU5NzkxODAwNTQ4QUNEIC8qIFBsYXRmb3JtQ29sb3JTcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUNFOEQxMkUyNjE4NjFDNDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRTVGQkQ3MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJl
Y29yZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1RkJEOTFDM0RENTFFMDAwN0EyQ0EgLyog
RGlzcGxheUxpc3RSZXBsYXllci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwODIsNyArMTA4Miw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBQaXhlbEJ1ZmZlckZv
cm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhl
bEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgICAgICBQ
aXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0
aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
IH07CiAgICAgICAgIGNvbnN0IEludFNpemUmIGxvZ2ljYWxTaXplID0gYnVmZmVyLT5sb2dpY2Fs
U2l6ZSgpOwogICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gYnVmZmVyLT5nZXRQaXhlbEJ1ZmZl
cihmb3JtYXQsIHsgSW50UG9pbnQ6Onplcm8oKSwgbG9naWNhbFNpemUgfSk7CiAgICAgICAgIGlm
ICghcGl4ZWxCdWZmZXIpIHsKQEAgLTMxODcsNyArMzE4Nyw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgUGl4ZWxCdWZmZXJG
b3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4
ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICAgICAg
UGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVs
dGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSB9OwogICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShm
b3JtYXQsIGltYWdlRGF0YVNpemUsIGFycmF5QnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwogICAg
ICAgICBpZiAoIXBpeGVsQnVmZmVyKSB7CiAgICAgICAgICAgICBmYWlsKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExNiw3ICsxMTYsNyBAQCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFs
dWU6OmltYWdlCiAKICAgICAvLyBUcmFuc2Zvcm0gSW1hZ2UgaW50byBJbWFnZUJ1ZmZlci4KICAg
ICAvLyBGSVhNRSAoMTQ5NDI0KTogVGhpcyBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlv
bmFsbHkgdW5hY2NlbGVyYXRlZC4KLSAgICBhdXRvIHRleHR1cmUgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIHRleHR1cmUgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAg
IGlmICghdGV4dHVyZSkKICAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCShyZXZpc2lvbiAy
Nzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTIsNyArOTIsNyBAQCBJbWFnZSogQ3VzdG9tUGFpbnRDYW52YXM6OmNv
cGllZEltYWdlKCkgCiAgICAgaWYgKCF3aWR0aCgpIHx8ICFoZWlnaHQoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBtX2NvcGllZEJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCwgbnVsbHB0cik7CisgICAgbV9jb3BpZWRC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCwgbnVsbHB0cik7CiAgICAgaWYgKCFtX2NvcGllZEJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRJbWFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludEltYWdlLmNw
cAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludElt
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgQ3VzdG9tUGFp
bnRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGgKICAgICBhZGp1c3RlZFBhdHRlcm5DVE0uc2NhbGUo
MS4wIC8geFNjYWxlLCAxLjAgLyB5U2NhbGUpOwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZSh4
U2NhbGUsIHlTY2FsZSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKGFkanVzdGVkU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
LCBkZXN0Q29udGV4dCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBkZXN0Q29udGV4dCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybjsKICAgICBk
b0N1c3RvbVBhaW50KGJ1ZmZlci0+Y29udGV4dCgpLCBhZGp1c3RlZFNpemUpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MjUsNyArODI1LDcgQEAgUmVmUHRyPE1lZGlhU2FtcGxlPiBIVE1MQ2FudmFzRWxl
bWVudDo6dAogICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBsaWtlbHkgYmUgb3B0aW1pemVkIHF1aXRl
IGEgYml0LCBlc3BlY2lhbGx5IGluIHRoZSBjYXNlcyB3aGVyZQogICAgIC8vIHRoZSBJbWFnZUJ1
ZmZlciBpcyBiYWNrZWQgYnkgR1BVIG1lbW9yeSBhbHJlYWR5IGFuZC9vciBpcyBpbiB0aGUgR1BV
IHByb2Nlc3MgYnkKICAgICAvLyBzcGVjaWFsaXppbmcgdG9NZWRpYVNhbXBsZSgpIGluIEltYWdl
QnVmZmVyQmFja2VuZCB0byBub3QgdXNlIGdldFBpeGVsQnVmZmVyKCkuCi0gICAgYXV0byBwaXhl
bEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5nZXRQaXhlbEJ1ZmZlcih7IEFscGhhUHJlbXVsdGlwbGlj
YXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IgfSwgeyB7IH0sIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpIH0pOwor
ICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoeyBBbHBo
YVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfSwgeyB7IH0sIGltYWdlQnVmZmVyLT5sb2dp
Y2FsU2l6ZSgpIH0pOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCkBAIC05NTUsNyArOTU1LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRl
SW1hZ2VCdWZmZQogICAgIGF1dG8gW2NvbG9yU3BhY2UsIHBpeGVsRm9ybWF0XSA9IFsmXSB7CiAg
ICAgICAgIGlmIChtX2NvbnRleHQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpwYWlyIHsgbV9j
b250ZXh0LT5jb2xvclNwYWNlKCksIG1fY29udGV4dC0+cGl4ZWxGb3JtYXQoKSB9OwotICAgICAg
ICByZXR1cm4gc3RkOjpwYWlyIHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZv
cm1hdDo6QkdSQTggfTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6cGFpciB7IERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTggfTsKICAgICB9KCk7CiAKICAgICBz
ZXRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgcmVuZGVyaW5nTW9kZSwg
dXNlRGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1cnBvc2U6OkNhbnZhcywgMSwgY29sb3JTcGFjZSwg
cGl4ZWxGb3JtYXQsIGhvc3RXaW5kb3cpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDcgKzI4MSw3IEBA
IHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6bWVkaWFQbGF5ZXJGaXJzdFYKICAgICAgICAgcmVuZGVy
ZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSFRNTFZp
ZGVvRWxlbWVudDo6Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29uc3QKK1JlZlB0cjxJbWFnZUJ1ZmZl
cj4gSFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CiB7
CiAgICAgYXV0byogaG9zdFdpbmRvdyA9IGRvY3VtZW50KCkudmlldygpICYmIGRvY3VtZW50KCku
dmlldygpLT5yb290KCkgPyBkb2N1bWVudCgpLnZpZXcoKS0+cm9vdCgpLT5ob3N0V2luZG93KCkg
OiBudWxscHRyOwogICAgIGF1dG8gc2hvdWxkVXNlRGlzcGxheUxpc3QgPSBkb2N1bWVudCgpLnNl
dHRpbmdzKCkuZGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZCgpID8gU2hvdWxkVXNlRGlzcGxheUxp
c3Q6OlllcyA6IFNob3VsZFVzZURpc3BsYXlMaXN0OjpObzsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTIgKzMzLDEy
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNl
OwogY2xhc3MgSFRNTEltYWdlTG9hZGVyOwogY2xhc3MgSW1hZ2VCdWZmZXI7CiBjbGFzcyBSZW5k
ZXJWaWRlbzsKIGNsYXNzIFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlcjsKIAotZW51bSBjbGFzcyBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgOiB1aW50OF90OwogZW51bSBjbGFzcyBQaXhlbEZvcm1hdCA6
IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOwogCkBAIC03Miw3ICs3
Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCkgb3ZlcnJp
ZGU7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQnVmZmVyRm9yUGFp
bnRpbmcoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgRGVzdGluYXRpb25Db2xvclNw
YWNlLCBQaXhlbEZvcm1hdCkgY29uc3Q7CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVC
dWZmZXJGb3JQYWludGluZyhjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCkgY29uc3Q7CiAKICAgICAvLyBVc2Vk
IGJ5IGNhbnZhcyB0byBnYWluIHJhdyBwaXhlbCBhY2Nlc3MKICAgICB2b2lkIHBhaW50Q3VycmVu
dEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCwx
MiArODQsMTIgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJpdG1hcDo6Y3JlYXRlSQogICAg
ICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25D
b250ZXh0KTsKICAgICAgICAgaWYgKGRvY3VtZW50LnZpZXcoKSAmJiBkb2N1bWVudC52aWV3KCkt
PnJvb3QoKSkgewogICAgICAgICAgICAgYXV0byBob3N0V2luZG93ID0gZG9jdW1lbnQudmlldygp
LT5yb290KCktPmhvc3RXaW5kb3coKTsKLSAgICAgICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0OjpObywgUmVu
ZGVyaW5nUHVycG9zZTo6Q2FudmFzLCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBob3N0V2luZG93KTsKKyAgICAgICAgICAg
IHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIFNob3VsZFVz
ZURpc3BsYXlMaXN0OjpObywgUmVuZGVyaW5nUHVycG9zZTo6Q2FudmFzLCByZXNvbHV0aW9uU2Nh
bGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGhv
c3RXaW5kb3cpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gRklYTUUgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzIxODQ4Mj4gRW5hYmxlIHdvcmtlciBiYXNlZCBJbWFnZUJpdG1hcCBhbmQgT2Zm
c2NyZWVuQ2FudmFzIGRyYXdpbmcgdG8gdXNlIEdQVSBQcm9jZXNzIHJlbmRlcmluZwotICAgIHJl
dHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25T
Y2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwor
ICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29s
dXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CiB9CiAKIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgSW1hZ2VCaXRtYXA6OlNvdXJjZSYm
IHNvdXJjZSwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgSW1hZ2VCaXRtYXA6OlByb21p
c2UmJiBwcm9taXNlKQpAQCAtNTA0LDcgKzUwNCw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0
ZVByb21pc2UoU2NyaXB0RXgKICAgICBhdXRvIG91dHB1dFNpemUgPSBvdXRwdXRTaXplRm9yU291
cmNlUmVjdGFuZ2xlKHNvdXJjZVJlY3RhbmdsZSwgb3B0aW9ucyk7CiAKICAgICAvLyBGSVhNRTog
QWRkIHN1cHBvcnQgZm9yIGNvbG9yIHNwYWNlcyAvIHBpeGVsIGZvcm1hdHMgdG8gSW1hZ2VCaXRt
YXAuCi0gICAgYXV0byBiaXRtYXBEYXRhID0gdmlkZW8tPmNyZWF0ZUJ1ZmZlckZvclBhaW50aW5n
KG91dHB1dFNpemUsIGJ1ZmZlclJlbmRlcmluZ01vZGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGJpdG1hcERhdGEgPSB2aWRlby0+
Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcob3V0cHV0U2l6ZSwgYnVmZmVyUmVuZGVyaW5nTW9kZSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAg
aWYgKCFiaXRtYXBEYXRhKSB7CiAgICAgICAgIHJlc29sdmVXaXRoQmxhbmtJbWFnZUJ1ZmZlcihz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCAhdGFpbnRzT3JpZ2luKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuc2VjdXJpdHlPcmlnaW4oKSwgKnZpZGVvKSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgICAg
IHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDUxLDE0ICs0NTEsMTQgQEAgdm9pZCBPZmZzY3JlZW5DYW52
YXM6OmNvbW1pdFRvUGxhY2Vob2xkZQogICAgICAgICBtX2NvbnRleHQtPnBhaW50UmVuZGVyaW5n
UmVzdWx0c1RvQ2FudmFzKCk7CiAKICAgICBpZiAobV9wbGFjZWhvbGRlckRhdGEtPmJ1ZmZlclBp
cGVTb3VyY2UpIHsKLSAgICAgICAgYXV0byBidWZmZXJDb3B5ID0gaW1hZ2VCdWZmZXItPmNvcHlS
ZWN0VG9CdWZmZXIoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxT
aXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGltYWdlQnVmZmVyLT5jb250ZXh0
KCkpOworICAgICAgICBhdXRvIGJ1ZmZlckNvcHkgPSBpbWFnZUJ1ZmZlci0+Y29weVJlY3RUb0J1
ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSks
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsK
ICAgICAgICAgaWYgKGJ1ZmZlckNvcHkpCiAgICAgICAgICAgICBtX3BsYWNlaG9sZGVyRGF0YS0+
YnVmZmVyUGlwZVNvdXJjZS0+aGFuZGxlKFdURk1vdmUoYnVmZmVyQ29weSkpOwogICAgIH0KIAog
ICAgIExvY2tlciBsb2NrZXIgeyBtX3BsYWNlaG9sZGVyRGF0YS0+YnVmZmVyTG9jayB9OwogICAg
IGJvb2wgc2hvdWxkUHVzaEJ1ZmZlciA9ICFtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1p
dEJ1ZmZlcjsKLSAgICBtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlciA9IGlt
YWdlQnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdl
QnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBpbWFn
ZUJ1ZmZlci0+Y29udGV4dCgpKTsKKyAgICBtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1p
dEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIGltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwogICAgIGlmIChtX3BsYWNlaG9sZGVy
RGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlciAmJiBzaG91bGRQdXNoQnVmZmVyKQogICAgICAgICBw
dXNoQnVmZmVyVG9QbGFjZWhvbGRlcigpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAi
Q1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VySGVscGVycy5o
IgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VyV29ya2VyU2FmZS5oIgotI2luY2x1ZGUgIkNv
bG9yU3BhY2UuaCIKICNpbmNsdWRlICJHcmFkaWVudC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVy
LmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNhY2hl
ZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2FudmFzUGF0dGVybi5oIgotI2luY2x1ZGUgIkNvbG9yU3Bh
Y2UuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJIVE1M
Q2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MVmlkZW9FbGVtZW50LmgiCkBAIC05MCw3ICs5MCw3IEBAIFBpeGVsRm9ybWF0IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQ6OnBpeGUKIAogRGVzdGluYXRpb25Db2xvclNwYWNlIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQ6OmNvbG9yU3BhY2UoKSBjb25zdAogewotICAgIHJldHVybiBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0I7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpOwogfQogCiBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRPcmln
aW4oY29uc3QgQ2FudmFzUGF0dGVybiogcGF0dGVybikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTMgKzM3LDEzIEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENhbnZhc1BhdHRlcm47CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7
CiBjbGFzcyBIVE1MQ2FudmFzRWxlbWVudDsKIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiBjbGFz
cyBIVE1MVmlkZW9FbGVtZW50OwogY2xhc3MgSW1hZ2VCaXRtYXA7CiBjbGFzcyBUeXBlZE9NQ1NT
SW1hZ2VWYWx1ZTsKIGNsYXNzIFdlYkdMT2JqZWN0OwotZW51bSBjbGFzcyBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgOiB1aW50OF90OwogZW51bSBjbGFzcyBQaXhlbEZvcm1hdCA6IHVpbnQ4X3Q7CiAK
IGNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29u
dGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VC
aXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCB2b2lkIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4
dDo6c2V0T3V0CiAgICAgICAgIC8vIG9ubHkgcmVhc29uIEkgY2FuIHRoaW5rIG9mIGlzIHRvRGF0
YVVSTCgpLCBidXQgdGhhdCBkb2Vzbid0IHNlZW0gbGlrZQogICAgICAgICAvLyBhIGdvb2QgZW5v
dWdoIGFyZ3VtZW50IHRvIHdhc3RlIG1lbW9yeS4KIAotICAgICAgICBjYW52YXMoKS0+c2V0SW1h
Z2VCdWZmZXJBbmRNYXJrRGlydHkoSW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUoY2FudmFz
KCktPndpZHRoKCksIGNhbnZhcygpLT5oZWlnaHQoKSksIGJ1ZmZlclJlbmRlcmluZ01vZGUsIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CisgICAg
ICAgIGNhbnZhcygpLT5zZXRJbWFnZUJ1ZmZlckFuZE1hcmtEaXJ0eShJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKEZsb2F0U2l6ZShjYW52YXMoKS0+d2lkdGgoKSwgY2FudmFzKCktPmhlaWdodCgpKSwgYnVm
ZmVyUmVuZGVyaW5nTW9kZSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVs
Rm9ybWF0OjpCR1JBOCkpOwogCiAgICAgICAgIC8vIDEuNC4gU2V0IHRoZSBvdXRwdXQgYml0bWFw
J3Mgb3JpZ2luLWNsZWFuIGZsYWcgdG8gdHJ1ZS4KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmNwcAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiUHJlZGVmaW5lZENvbG9yU3BhY2UuaCIKIAotI2luY2x1ZGUgIkNvbG9yU3Bh
Y2UuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlIDx3dGYv
T3B0aW9uYWwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsMzMgKzM1LDI2IEBAIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSB0b0Rlc3RpbmF0aW9uQ29sb3IKIHsKICAgICBzd2l0Y2ggKGNv
bG9yU3BhY2UpIHsKICAgICBjYXNlIFByZWRlZmluZWRDb2xvclNwYWNlOjpTUkdCOgotICAgICAg
ICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOworICAgICAgICByZXR1cm4gRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9S
X1NQQUNFX0RJU1BMQVlfUDMpCiAgICAgY2FzZSBQcmVkZWZpbmVkQ29sb3JTcGFjZTo6RGlzcGxh
eVAzOgotICAgICAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDM7Cisg
ICAgICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMygpOwogI2VuZGlm
CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQjsKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCk7CiB9CiAKLU9wdGlvbmFsPFByZWRlZmluZWRDb2xvclNwYWNlPiB0b1ByZWRlZmluZWRD
b2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKQorT3B0aW9uYWw8UHJl
ZGVmaW5lZENvbG9yU3BhY2U+IHRvUHJlZGVmaW5lZENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQogewotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewot
ICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOgorICAgIGlmIChjb2xvclNwYWNl
ID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKQogICAgICAgICByZXR1cm4gUHJlZGVm
aW5lZENvbG9yU3BhY2U6OlNSR0I7Ci0jaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNF
X0xJTkVBUl9TUkdCKQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdC
OgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotI2VuZGlmCiAjaWYgRU5BQkxFKERFU1RJ
TkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCi0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OkRpc3BsYXlQMzoKKyAgICBpZiAoY29sb3JTcGFjZSA9PSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OkRpc3BsYXlQMygpKQogICAgICAgICByZXR1cm4gUHJlZGVmaW5lZENvbG9yU3BhY2U6
OkRpc3BsYXlQMzsKICNlbmRpZgotICAgIH0KIAotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuaAkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVu
dW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDogdWludDhfdDsKK2NsYXNzIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTsKIAogZW51bSBjbGFzcyBQcmVkZWZpbmVkQ29sb3JTcGFjZSB7CiAgICAg
U1JHQgpAQCAtNDAsNyArNDAsNyBAQCBlbnVtIGNsYXNzIFByZWRlZmluZWRDb2xvclNwYWNlIHsK
IH07CiAKIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB0b0Rlc3RpbmF0aW9uQ29sb3JTcGFjZShQcmVk
ZWZpbmVkQ29sb3JTcGFjZSk7Ci1PcHRpb25hbDxQcmVkZWZpbmVkQ29sb3JTcGFjZT4gdG9QcmVk
ZWZpbmVkQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpOworT3B0aW9uYWw8UHJlZGVm
aW5lZENvbG9yU3BhY2U+IHRvUHJlZGVmaW5lZENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJik7CiAKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAJKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjIzLDcgKzc2MjMsNyBAQCBJbWFnZUJ1ZmZlciog
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6CiAgICAgfQogCiAgICAgLy8gRklYTUUgKDE0OTQy
Myk6IFNob3VsZCB0aGlzIEltYWdlQnVmZmVyIGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJh
dGVkPwotICAgIGF1dG8gdGVtcCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gdGVtcCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6
ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCF0ZW1wKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICBBU1NFUlQobV9idWZmZXJzLnNpemUoKSA+IDApOwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVy
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFRleHRUcmFja0NvbnRh
aW5lckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTgsNyArNDE4LDcgQEAgUmVmUHRy
PEltYWdlPiBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YQogICAgIEludFJlY3QgcGFpbnRpbmdS
ZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+c2l6ZSgpKTsKIAogICAgIC8vIEZJWE1F
ICgxNDk0MjIpOiBUaGlzIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFj
Y2VsZXJhdGVkLgotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGlu
Z1JlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBkZXZpY2VTY2FsZUZh
Y3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwor
ICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGluZ1JlY3Quc2l6ZSgp
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFi
dWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExNDksNyArMTE0OSw3IEBAIGludCBJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YShE
dXBsaWMKICAgICAgICAgICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBpbWFnZUVs
ZW1lbnQtPmNhY2hlZEltYWdlKCkpIHsKICAgICAgICAgICAgICAgICBJbWFnZSogaW1hZ2UgPSBj
YWNoZWRJbWFnZS0+aW1hZ2UoKTsKICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2Ug
IT0gJkltYWdlOjpudWxsSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgp
OwogICAgICAgICAgICAgICAgICAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFnZSgq
aW1hZ2UsIEZsb2F0UG9pbnQoMCwgMCkpOwogICAgICAgICAgICAgICAgICAgICBkYXRhVVJMID0g
aW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CiAgICAgICAgICAgICAgICAgfQpA
QCAtMTE2Myw3ICsxMTYzLDcgQEAgaW50IEluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKER1
cGxpYwogCiAgICAgICAgICAgICB1bnNpZ25lZCB2aWRlb1dpZHRoID0gdmlkZW9FbGVtZW50LT52
aWRlb1dpZHRoKCk7CiAgICAgICAgICAgICB1bnNpZ25lZCB2aWRlb0hlaWdodCA9IHZpZGVvRWxl
bWVudC0+dmlkZW9IZWlnaHQoKTsKLSAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZSh2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCksIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwg
UGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZSh2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCksIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgICAgICAgICAgaWYgKGltYWdlQnVmZmVyKSB7CiAg
ICAgICAgICAgICAgICAgdmlkZW9FbGVtZW50LT5wYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChp
bWFnZUJ1ZmZlci0+Y29udGV4dCgpLCBGbG9hdFJlY3QoMCwgMCwgdmlkZW9XaWR0aCwgdmlkZW9I
ZWlnaHQpKTsKICAgICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVS
TCgiaW1hZ2UvcG5nIik7CkBAIC0xMjAwLDcgKzEyMDAsNyBAQCBpbnQgSW5zcGVjdG9yQ2FudmFz
OjppbmRleEZvckRhdGEoRHVwbGljCiAgICAgICAgICAgICBpZiAoYXV0byogY2FjaGVkSW1hZ2Ug
PSBjc3NJbWFnZVZhbHVlLT5pbWFnZSgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byogaW1hZ2Ug
PSBjYWNoZWRJbWFnZS0+aW1hZ2UoKTsKICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UgJiYgaW1h
Z2UgIT0gJkltYWdlOjpudWxsSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdN
b2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdS
QTgpOwogICAgICAgICAgICAgICAgICAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFn
ZSgqaW1hZ2UsIEZsb2F0UG9pbnQoMCwgMCkpOwogICAgICAgICAgICAgICAgICAgICBkYXRhVVJM
ID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CiAgICAgICAgICAgICAgICAg
fQpAQCAtMTQ0MSw3ICsxNDQxLDcgQEAgUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJ
bnNwZWN0bwogewogICAgIGF1dG8mIHRpbGVJbWFnZSA9IGNhbnZhc1BhdHRlcm4ucGF0dGVybigp
LnRpbGVJbWFnZSgpOwogICAgIEZsb2F0UmVjdCByZWN0ID0geyB7IH0sIHRpbGVJbWFnZS5zaXpl
KCkgfTsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0aWxlSW1h
Z2Uuc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZl
ciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGlsZUltYWdlLnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CiAgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5kcmF3TmF0aXZlSW1hZ2Uo
dGlsZUltYWdlLCB0aWxlSW1hZ2Uuc2l6ZSgpLCByZWN0LCByZWN0KTsKIAogICAgIFN0cmluZyBy
ZXBlYXQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyOSw3ICs1
MjksNyBAQCB2b2lkIENocm9tZTo6c2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vCiAgICAgbV9j
bGllbnQuc2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGhpZGRlblVudGlsTW91c2VNb3Zl
cyk7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gQ2hyb21lOjpjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgUmVuZGVy
aW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29uc3QKK1JlZlB0
cjxJbWFnZUJ1ZmZlcj4gQ2hyb21lOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
IHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSBwdXJw
b3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYg
Y29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fY2xpZW50LmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHB1cnBvc2Us
IHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZS5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldEN1cnNvcihjb25zdCBDdXJzb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEN1cnNvckhp
ZGRlblVudGlsTW91c2VNb3Zlcyhib29sKSBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwg
UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJl
bmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiwgUGl4ZWxGb3JtYXQpIGNvbnN0IG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKFdF
QkdMKQogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0
R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3Qgb3ZlcnJpZGU7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzOSw3
ICszMzksNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBEaXNwbGF5UmVmcmVzaE1vbml0
b3JGYWN0b3J5KiBkaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bnVsbHB0cjsgfQogCi0gICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2Us
IGZsb2F0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCB7IHJldHVy
biBudWxscHRyOyB9CisgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2Us
IGZsb2F0LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCkgY29uc3Qg
eyByZXR1cm4gbnVsbHB0cjsgfQogCiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIHZpcnR1YWwgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNu
YXBzaG90dGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNu
YXBzaG90dGluZy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVTbmFwc2hvdHRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDcgQEAg
UmVmUHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVjdFdpdAogICAgIGlmIChvcHRpb25z
ICYgU25hcHNob3RPcHRpb25zUGFpbnRXaXRoSW50ZWdyYWxTY2FsZUZhY3RvcikKICAgICAgICAg
c2NhbGVGYWN0b3IgPSBjZWlsZihzY2FsZUZhY3Rvcik7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgc2NhbGVGYWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1h
Z2VSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgc2NhbGVGYWN0b3Is
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAg
IGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBidWZmZXItPmNvbnRl
eHQoKS50cmFuc2xhdGUoLWltYWdlUmVjdC54KCksIC1pbWFnZVJlY3QueSgpKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcAkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBPcHRpb25hbDxMYWI8ZmxvYXQ+PiBzYW1wbGVD
b2xvcigKICAgICBpZiAoIXNuYXBzaG90KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IHNuYXBzaG90LT5nZXRQaXhlbEJ1ZmZlcih7IEFscGhh
UHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfSwgeyB7IH0sIHNuYXBzaG90LT5sb2dpY2FsU2l6
ZSgpIH0pOworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzbmFwc2hvdC0+Z2V0UGl4ZWxCdWZmZXIo
eyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpC
R1JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfSwgeyB7IH0sIHNuYXBzaG90LT5s
b2dpY2FsU2l6ZSgpIH0pOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGll
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGll
bnQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25z
b2xlQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI2LDcgKzMyNiw3IEBAIHZvaWQgUGFn
ZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjoKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChhdXRvKiBjYWNoZWRJbWFnZSA9IGltYWdlRWxlbWVudC5jYWNoZWRJbWFnZSgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1h
Z2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UgIT0g
JkltYWdlOjpudWxsSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
bmFwc2hvdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdCA9
IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuYXBzaG90LT5jb250ZXh0
KCkuZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMzQzLDcgKzM0Myw3
IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjoKICAgICAgICAgICAg
ICAgICAgICAgICAgIGF1dG8mIHZpZGVvRWxlbWVudCA9IGRvd25jYXN0PEhUTUxWaWRlb0VsZW1l
bnQ+KCpub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHZpZGVvV2lkdGgg
PSB2aWRlb0VsZW1lbnQudmlkZW9XaWR0aCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgdmlkZW9IZWlnaHQgPSB2aWRlb0VsZW1lbnQudmlkZW9IZWlnaHQoKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHNuYXBzaG90ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUo
dmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRT
aXplKHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb0VsZW1lbnQucGFpbnRDdXJyZW50RnJhbWVJ
bkNvbnRleHQoc25hcHNob3QtPmNvbnRleHQoKSwgRmxvYXRSZWN0KDAsIDAsIHZpZGVvV2lkdGgs
IHZpZGVvSGVpZ2h0KSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICNlbmRpZgpAQCAtMzY4LDcg
KzM2OCw3IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjoKICAgICAg
ICAgICAgIHRhcmdldCA9IHBvc3NpYmxlVGFyZ2V0OwogICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRzKCkpKSB7CiAgICAgICAgICAg
ICAgICAgYXV0byBzb3VyY2VTaXplID0gaW1hZ2VEYXRhLT5zaXplKCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNvdXJjZVNpemUs
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvIGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzb3VyY2VTaXplLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KSkgewogICAgICAgICAgICAgICAgICAgICBJbnRSZWN0IHNvdXJjZVJlY3Qo
SW50UG9pbnQoKSwgc291cmNlU2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgIGltYWdlQnVmZmVy
LT5wdXRQaXhlbEJ1ZmZlcihpbWFnZURhdGEtPnBpeGVsQnVmZmVyKCksIHNvdXJjZVJlY3QpOwog
ICAgICAgICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1h
Z2UvcG5nIl9zLCBXVEY6Om51bGxvcHQsIFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
MTAgKzMxLDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cnNvcjsKK2NsYXNz
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIEltYWdlQnVmZmVyOwogCiBlbnVtIGNsYXNz
IFBpeGVsRm9ybWF0IDogdWludDhfdDsKLWVudW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNl
IDogdWludDhfdDsKIGVudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJvb2w7CiBlbnVtIGNsYXNz
IFJlbmRlcmluZ1B1cnBvc2UgOiB1aW50OF90OwogCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIEludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0
IEludFBvaW50JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSW50UmVjdCByb290Vmlld1RvQWNj
ZXNzaWJpbGl0eVNjcmVlbihjb25zdCBJbnRSZWN0JikgY29uc3QgPSAwOwogCi0gICAgdmlydHVh
bCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYs
IFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
RGVzdGluYXRpb25Db2xvclNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
LCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBpeGVsRm9ybWF0KSBjb25zdCA9IDA7CiAK
ICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+
IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYpIGNvbnN0ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2Ny
ZWVuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TY3Jl
ZW4uaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1TY3JlZW4uaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCB0eXBlZGVmIHN0cnVj
dCBDR0NvbG9yU3BhY2UgKkNHQ29sb3JTcGFjCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgRGVzdGluYXRpb25Db2xvclNwYWNlOwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgRmxvYXRT
aXplOwogY2xhc3MgV2lkZ2V0OwpAQCAtNjgsNiArNjksNyBAQCB1c2luZyBJT1JlZ2lzdHJ5R1BV
SUQgPSBpbnQ2NF90OyAvLyBHbG9iCiBpbnQgc2NyZWVuRGVwdGgoV2lkZ2V0Kik7CiBpbnQgc2Ny
ZWVuRGVwdGhQZXJDb21wb25lbnQoV2lkZ2V0Kik7CiBib29sIHNjcmVlbklzTW9ub2Nocm9tZShX
aWRnZXQqKTsKK1dFQkNPUkVfRVhQT1JUIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBzY3JlZW5Db2xv
clNwYWNlKFdpZGdldCogPSBudWxscHRyKTsKIAogYm9vbCBzY3JlZW5IYXNJbnZlcnRlZENvbG9y
cygpOwogCkBAIC0xMDAsMTAgKzEwMiw2IEBAIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2NyZWVuU3Vw
cG9ydHNIaWdoRHkKIGNvbnN0ZXhwciBib29sIHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5n
ZShXaWRnZXQqID0gbnVsbHB0cikgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCi0jaWYgVVNF
KENHKQotV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIHNjcmVlbkNvbG9yU3BhY2UoV2lk
Z2V0KiA9IG51bGxwdHIpOwotI2VuZGlmCi0KIHN0cnVjdCBTY3JlZW5Qcm9wZXJ0aWVzOwogc3Ry
dWN0IFNjcmVlbkRhdGE7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jl
ZW5Qcm9wZXJ0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
ZWVuUHJvcGVydGllcy5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JlZW5Qcm9wZXJ0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNp
bmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogI2luY2x1
ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CkBAIC0zMiwxNCArMzMsMTIgQEAKICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLXR5cGVkZWYg
c3RydWN0IENHQ29sb3JTcGFjZSAqQ0dDb2xvclNwYWNlUmVmOwotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0cnVjdCBTY3JlZW5EYXRhIHsKICAgICBGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxl
UmVjdDsKICAgICBGbG9hdFJlY3Qgc2NyZWVuUmVjdDsKLSAgICBSZXRhaW5QdHI8Q0dDb2xvclNw
YWNlUmVmPiBjb2xvclNwYWNlOworICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNl
IHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsKICAgICBpbnQgc2NyZWVuRGVwdGgg
eyAwIH07CiAgICAgaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50IHsgMCB9OwogICAgIGJvb2wg
c2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yIHsgZmFsc2UgfTsKQEAgLTU2LDEzICs1NSwxMiBA
QCBzdHJ1Y3QgU2NyZWVuRGF0YSB7CiAgICAgZmxvYXQgc2NhbGVGYWN0b3IgeyAxIH07CiAjZW5k
aWYKIAotICAgIGVudW0gY2xhc3MgQ29sb3JTcGFjZVR5cGUgOiB1aW50OF90IHsgTm9uZSwgTmFt
ZSwgRGF0YSB9OwogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8
U2NyZWVuRGF0YT4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKLXR5cGVkZWYgSGFzaE1hcDxQbGF0
Zm9ybURpc3BsYXlJRCwgU2NyZWVuRGF0YT4gU2NyZWVuRGF0YU1hcDsKLSAgICAKK3VzaW5nIFNj
cmVlbkRhdGFNYXAgPSBIYXNoTWFwPFBsYXRmb3JtRGlzcGxheUlELCBTY3JlZW5EYXRhPjsKKwog
c3RydWN0IFNjcmVlblByb3BlcnRpZXMgewogICAgIFBsYXRmb3JtRGlzcGxheUlEIHByaW1hcnlE
aXNwbGF5SUQgeyAwIH07CiAgICAgU2NyZWVuRGF0YU1hcCBzY3JlZW5EYXRhTWFwOwpAQCAtNzQs
OCArNzIsNyBAQCBzdHJ1Y3QgU2NyZWVuUHJvcGVydGllcyB7CiB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPgogdm9pZCBTY3JlZW5Qcm9wZXJ0aWVzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIHsKLSAgICBlbmNvZGVyIDw8IHByaW1hcnlEaXNwbGF5SUQ7Ci0gICAgZW5jb2RlciA8PCBz
Y3JlZW5EYXRhTWFwOworICAgIGVuY29kZXIgPDwgcHJpbWFyeURpc3BsYXlJRCA8PCBzY3JlZW5E
YXRhTWFwOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtOTcsNyArOTQsNyBAQCBP
cHRpb25hbDxTY3JlZW5Qcm9wZXJ0aWVzPiBTY3JlZW5Qcm9wZXJ0CiB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgogdm9pZCBTY3JlZW5EYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
IHsKLSAgICBlbmNvZGVyIDw8IHNjcmVlbkF2YWlsYWJsZVJlY3QgPDwgc2NyZWVuUmVjdCA8PCBz
Y3JlZW5EZXB0aCA8PCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCA8PCBzY3JlZW5TdXBwb3J0c0V4
dGVuZGVkQ29sb3IgPDwgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMgPDwgc2NyZWVuU3VwcG9ydHNI
aWdoRHluYW1pY1JhbmdlOworICAgIGVuY29kZXIgPDwgc2NyZWVuQXZhaWxhYmxlUmVjdCA8PCBz
Y3JlZW5SZWN0IDw8IGNvbG9yU3BhY2UgPDwgc2NyZWVuRGVwdGggPDwgc2NyZWVuRGVwdGhQZXJD
b21wb25lbnQgPDwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yIDw8IHNjcmVlbkhhc0ludmVy
dGVkQ29sb3JzIDw8IHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZTsKIAogI2lmIFBMQVRG
T1JNKE1BQykKICAgICBlbmNvZGVyIDw8IHNjcmVlbklzTW9ub2Nocm9tZSA8PCBkaXNwbGF5TWFz
ayA8PCBncHVJRCA8PCBwcmVmZXJyZWREeW5hbWljUmFuZ2VNb2RlOwpAQCAtMTA2LDI4ICsxMDMs
NiBAQCB2b2lkIFNjcmVlbkRhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyCiAjaWYgUExBVEZP
Uk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGVuY29kZXIgPDwgc2NhbGVGYWN0
b3I7CiAjZW5kaWYKLQotICAgIGlmIChjb2xvclNwYWNlKSB7Ci0gICAgICAgIC8vIFRyeSB0byBl
bmNvZGUgdGhlIG5hbWUuCi0gICAgICAgIGlmIChhdXRvIG5hbWUgPSBhZG9wdENGKENHQ29sb3JT
cGFjZUNvcHlOYW1lKGNvbG9yU3BhY2UuZ2V0KCkpKSkgewotICAgICAgICAgICAgZW5jb2RlciA8
PCBDb2xvclNwYWNlVHlwZTo6TmFtZTsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgU3RyaW5nKG5h
bWUuZ2V0KCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8g
RmFpbGluZyB0aGF0LCBqdXN0IGVuY29kZSB0aGUgSUNDIGRhdGEuCi0gICAgICAgIGlmIChhdXRv
IHByb2ZpbGVEYXRhID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDb3B5SUNDRGF0YShjb2xvclNwYWNl
LmdldCgpKSkpIHsKLSAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBpY2NEYXRhOwotICAgICAg
ICAgICAgaWNjRGF0YS5hcHBlbmQoQ0ZEYXRhR2V0Qnl0ZVB0cihwcm9maWxlRGF0YS5nZXQoKSks
IENGRGF0YUdldExlbmd0aChwcm9maWxlRGF0YS5nZXQoKSkpOwotCi0gICAgICAgICAgICBlbmNv
ZGVyIDw8IENvbG9yU3BhY2VUeXBlOjpEYXRhOwotICAgICAgICAgICAgZW5jb2RlciA8PCBpY2NE
YXRhOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gVGhl
IGNvbG9yIHNwYWNlIHdhcyBudWxsIG9yIGZhaWxlZCB0byBiZSBlbmNvZGVkLgotICAgIGVuY29k
ZXIgPDwgQ29sb3JTcGFjZVR5cGU6Ok5vbmU7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
CkBAIC0xNDMsNiArMTE4LDExIEBAIE9wdGlvbmFsPFNjcmVlbkRhdGE+IFNjcmVlbkRhdGE6OmRl
Y29kZSgKICAgICBpZiAoIXNjcmVlblJlY3QpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAKKyAgICBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IHNjcmVlbkNvbG9yU3BhY2U7
CisgICAgZGVjb2RlciA+PiBzY3JlZW5Db2xvclNwYWNlOworICAgIGlmICghc2NyZWVuQ29sb3JT
cGFjZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwogICAgIE9wdGlvbmFsPGludD4g
c2NyZWVuRGVwdGg7CiAgICAgZGVjb2RlciA+PiBzY3JlZW5EZXB0aDsKICAgICBpZiAoIXNjcmVl
bkRlcHRoKQpAQCAtMTk3LDQxICsxNzcsMTAgQEAgT3B0aW9uYWw8U2NyZWVuRGF0YT4gU2NyZWVu
RGF0YTo6ZGVjb2RlKAogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogI2VuZGlmCiAKLSAg
ICBDb2xvclNwYWNlVHlwZSBkYXRhVHlwZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFU
eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIFJldGFpblB0cjxDR0Nv
bG9yU3BhY2VSZWY+IGNnQ29sb3JTcGFjZTsKLSAgICBzd2l0Y2ggKGRhdGFUeXBlKSB7Ci0gICAg
Y2FzZSBDb2xvclNwYWNlVHlwZTo6Tm9uZToKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDb2xv
clNwYWNlVHlwZTo6TmFtZTogewotICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGNvbG9yU3BhY2VO
YW1lOwotICAgICAgICBkZWNvZGVyID4+IGNvbG9yU3BhY2VOYW1lOwotICAgICAgICBBU1NFUlQo
Y29sb3JTcGFjZU5hbWUpOwotICAgICAgICBpZiAoIWNvbG9yU3BhY2VOYW1lKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgICAgICBjZ0NvbG9yU3BhY2UgPSBhZG9wdENG
KENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGNvbG9yU3BhY2VOYW1lLT5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENvbG9yU3BhY2VU
eXBlOjpEYXRhOiB7Ci0gICAgICAgIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gaWNjRGF0YTsK
LSAgICAgICAgZGVjb2RlciA+PiBpY2NEYXRhOwotICAgICAgICBBU1NFUlQoaWNjRGF0YSk7Ci0g
ICAgICAgIGlmICghaWNjRGF0YSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0K
LSAgICAgICAgYXV0byBjb2xvclNwYWNlRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGljY0RhdGEtPmRhdGEoKSwgaWNjRGF0YS0+c2l6ZSgpKSk7Ci0gICAg
ICAgIGNnQ29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aElDQ0RhdGEo
Y29sb3JTcGFjZURhdGEuZ2V0KCkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIH0KLQog
ICAgIHJldHVybiB7IHsKICAgICAgICAgV1RGTW92ZSgqc2NyZWVuQXZhaWxhYmxlUmVjdCksCiAg
ICAgICAgIFdURk1vdmUoKnNjcmVlblJlY3QpLAotICAgICAgICBXVEZNb3ZlKGNnQ29sb3JTcGFj
ZSksCisgICAgICAgIFdURk1vdmUoKnNjcmVlbkNvbG9yU3BhY2UpLAogICAgICAgICBXVEZNb3Zl
KCpzY3JlZW5EZXB0aCksCiAgICAgICAgIFdURk1vdmUoKnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50
KSwKICAgICAgICAgV1RGTW92ZSgqc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKSwKQEAgLTI1
MCwxNiArMTk5LDMgQEAgT3B0aW9uYWw8U2NyZWVuRGF0YT4gU2NyZWVuRGF0YTo6ZGVjb2RlKAog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0
ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlNjcmVlbkRhdGE6OkNvbG9yU3BhY2VUeXBl
PiB7Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAgICAgICAgV2ViQ29yZTo6U2Ny
ZWVuRGF0YTo6Q29sb3JTcGFjZVR5cGUsCi0gICAgICAgIFdlYkNvcmU6OlNjcmVlbkRhdGE6OkNv
bG9yU3BhY2VUeXBlOjpOb25lLAotICAgICAgICBXZWJDb3JlOjpTY3JlZW5EYXRhOjpDb2xvclNw
YWNlVHlwZTo6TmFtZSwKLSAgICAgICAgV2ViQ29yZTo6U2NyZWVuRGF0YTo6Q29sb3JTcGFjZVR5
cGU6OkRhdGEKLSAgICA+OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NCw3ICsxNjQsNyBAQCBSZWZQdHI8TmF0aXZlSW1h
Z2U+IEJpdG1hcEltYWdlOjpwcmVUcmFuCiAgICAgICAgIHJldHVybiBpbWFnZTsKIAogICAgIGF1
dG8gY29ycmVjdGVkU2l6ZUZsb2F0ID0gY29ycmVjdGVkU2l6ZSA/IEZsb2F0U2l6ZShjb3JyZWN0
ZWRTaXplLnZhbHVlKCkpIDogc2l6ZSgpOwotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShjb3JyZWN0ZWRTaXplRmxvYXQsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
IDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY29ycmVjdGVkU2l6ZUZsb2F0LCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIGltYWdlOwogCkBAIC0zNTIsNyArMzUyLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1Bh
dHRlcm4oR3JhcGhpY3NDbwogICAgIH0KIAogICAgIGlmICghbV9jYWNoZWRJbWFnZSkgewotICAg
ICAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4
cGFuZGVkSW50U2l6ZSh0aWxlUmVjdC5zaXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IsIGN0eHQpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZSh0aWxlUmVjdC5zaXplKCkpLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgY3R4dCk7CiAgICAgICAgIGlmICghYnVmZmVyKQogICAgICAg
ICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3IuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw3ICsxNjgsNyBAQCBDb2xv
ckNvbXBvbmVudHM8ZmxvYXQsIDQ+IENvbG9yOjp0b0NvbG9yCiAgICAgcmV0dXJuIGNvbnZlckNv
bG9yQ29tcG9uZW50cyhpbnB1dENvbG9yU3BhY2UsIGNvbXBvbmVudHMsIG91dHB1dENvbG9yU3Bh
Y2UpOwogfQogCi1Db2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IENvbG9yOjp0b0NvbG9yQ29tcG9u
ZW50c0luQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugb3V0cHV0Q29sb3JTcGFjZSkg
Y29uc3QKK0NvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gQ29sb3I6OnRvQ29sb3JDb21wb25lbnRz
SW5Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgb3V0cHV0Q29sb3JTcGFj
ZSkgY29uc3QKIHsKICAgICBhdXRvIFtpbnB1dENvbG9yU3BhY2UsIGNvbXBvbmVudHNdID0gY29s
b3JTcGFjZUFuZENvbXBvbmVudHMoKTsKICAgICByZXR1cm4gY29udmVyQ29sb3JDb21wb25lbnRz
KGlucHV0Q29sb3JTcGFjZSwgY29tcG9uZW50cywgb3V0cHV0Q29sb3JTcGFjZSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDb2xvckNvbnZlcnNpb24uaCIKICNpbmNs
dWRlICJDb2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKKyNpbmNsdWRl
ICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KQEAgLTEy
MSw3ICsxMjIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8VD4g
dG9TUkdCQUxvc3N5KCkgY29uc3QgeyByZXR1cm4gdG9Db2xvclR5cGVMb3NzeTxTUkdCQTxUPj4o
KTsgfQogCiAgICAgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiB0b0NvbG9yQ29tcG9uZW50c0lu
Q29sb3JTcGFjZShDb2xvclNwYWNlKSBjb25zdDsKLSAgICBDb2xvckNvbXBvbmVudHM8ZmxvYXQs
IDQ+IHRvQ29sb3JDb21wb25lbnRzSW5Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSkg
Y29uc3Q7CisgICAgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiB0b0NvbG9yQ29tcG9uZW50c0lu
Q29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKSBjb25zdDsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQs
IDQ+PiBjb2xvclNwYWNlQW5kQ29tcG9uZW50cygpIGNvbnN0OwogCkBAIC0yNjcsNiArMjY4LDcg
QEAgYm9vbCBvdXRPZkxpbmVDb21wb25lbnRzc0VxdWFsSWdub3JpbmdTZQogCiAjaWYgVVNFKENH
KQogV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJik7
CitXRUJDT1JFX0VYUE9SVCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IHBsYXRmb3JtQ29udmVy
dENvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+LCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKICNlbmRpZgogCiBXRUJDT1JFX0VYUE9SVCBX
VEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgQ29sb3Im
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JDb252ZXJzaW9uLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NyArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbG9yQ29udmVyc2lv
bi5oIgogCisjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJDb2xvclNwYWNlLmgiCisjaW5j
bHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzE4LDE4ICszMjAsMjEgQEAgQ29sb3JDb21w
b25lbnRzPGZsb2F0LCA0PiBjb252ZXJDb2xvckNvbQogICAgIH0pOwogfQogCi1Db2xvckNvbXBv
bmVudHM8ZmxvYXQsIDQ+IGNvbnZlckNvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlIGlucHV0Q29s
b3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBpbnB1dENvbG9yQ29tcG9uZW50cywg
RGVzdGluYXRpb25Db2xvclNwYWNlIG91dHB1dENvbG9yU3BhY2UpCitDb2xvckNvbXBvbmVudHM8
ZmxvYXQsIDQ+IGNvbnZlckNvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlIGlucHV0Q29sb3JTcGFj
ZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBpbnB1dENvbG9yQ29tcG9uZW50cywgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBvdXRwdXRDb2xvclNwYWNlKQogeworI2lmIFVTRShDRykK
KyAgICByZXR1cm4gcGxhdGZvcm1Db252ZXJ0Q29sb3JDb21wb25lbnRzKGlucHV0Q29sb3JTcGFj
ZSwgaW5wdXRDb2xvckNvbXBvbmVudHMsIG91dHB1dENvbG9yU3BhY2UpOworI2Vsc2UKICAgICBy
ZXR1cm4gY2FsbFdpdGhDb2xvclR5cGUoaW5wdXRDb2xvckNvbXBvbmVudHMsIGlucHV0Q29sb3JT
cGFjZSwgW291dHB1dENvbG9yU3BhY2VdIChjb25zdCBhdXRvJiBpbnB1dENvbG9yKSB7Ci0gICAg
ICAgIHN3aXRjaCAob3V0cHV0Q29sb3JTcGFjZSkgewotICAgICAgICBjYXNlIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQjoKKyAgICAgICAgc3dpdGNoIChvdXRwdXRDb2xvclNwYWNlLnBsYXRm
b3JtQ29sb3JTcGFjZSgpKSB7CisgICAgICAgIGNhc2UgUGxhdGZvcm1Db2xvclNwYWNlOjpOYW1l
OjpTUkdCOgogICAgICAgICAgICAgcmV0dXJuIGFzQ29sb3JDb21wb25lbnRzKGNvbnZlcnRDb2xv
cjxTUkdCQTxmbG9hdD4+KGlucHV0Q29sb3IpKTsKICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09M
T1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpMaW5lYXJTUkdCOgorICAgICAgICBjYXNlIFBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZTo6TGlu
ZWFyU1JHQjoKICAgICAgICAgICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhjb252ZXJ0Q29s
b3I8TGluZWFyU1JHQkE8ZmxvYXQ+PihpbnB1dENvbG9yKSk7CiAjZW5kaWYKICNpZiBFTkFCTEUo
REVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExBWV9QMykKLSAgICAgICAgY2FzZSBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMzoKKyAgICAgICAgY2FzZSBQbGF0Zm9ybUNvbG9yU3Bh
Y2U6Ok5hbWU6OkRpc3BsYXlQMzoKICAgICAgICAgICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50
cyhjb252ZXJ0Q29sb3I8RGlzcGxheVAzPGZsb2F0Pj4oaW5wdXRDb2xvcikpOwogI2VuZGlmCiAg
ICAgICAgIH0KQEAgLTMzNyw2ICszNDIsNyBAQCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNv
bnZlckNvbG9yQ29tCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1
cm4gYXNDb2xvckNvbXBvbmVudHMoY29udmVydENvbG9yPFNSR0JBPGZsb2F0Pj4oaW5wdXRDb2xv
cikpOwogICAgIH0pOworI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lv
bi5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvckNvbnZlcnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTUgKzI5LDE2IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlOworCiBl
bnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90OwotZW51bSBjbGFzcyBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgOiB1aW50OF90OwogCiAvLyBDb252ZXJzaW9uIGZ1bmN0aW9uIGZvciB0eXBlZCBj
b2xvcnMuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPdXRwdXQsIHR5cGVuYW1lIElucHV0PiBPdXRwdXQg
Y29udmVydENvbG9yKGNvbnN0IElucHV0JiBjb2xvcik7CiAKIC8vIENvbnZlcnNpb24gZnVuY3Rp
b25zIGZvciByYXcgY29sb3IgY29tcG9uZW50cyB3aXRoIGFzc29jaWF0ZWQgY29sb3Igc3BhY2Vz
LgogQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb252ZXJDb2xvckNvbXBvbmVudHMoQ29sb3JT
cGFjZSBpbnB1dENvbG9yU3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xv
ckNvbXBvbmVudHMsIENvbG9yU3BhY2Ugb3V0cHV0Q29sb3JTcGFjZSk7Ci1Db2xvckNvbXBvbmVu
dHM8ZmxvYXQsIDQ+IGNvbnZlckNvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlIGlucHV0Q29sb3JT
cGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBpbnB1dENvbG9yQ29tcG9uZW50cywgRGVz
dGluYXRpb25Db2xvclNwYWNlIG91dHB1dENvbG9yU3BhY2UpOworQ29sb3JDb21wb25lbnRzPGZs
b2F0LCA0PiBjb252ZXJDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1dENvbG9yU3BhY2Us
IENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVudHMsIGNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYgb3V0cHV0Q29sb3JTcGFjZSk7CiAKIAogLy8gQWxsIGNvbG9y
IHR5cGVzLCBvdGhlciB0aGFuIFhZWkEgb3IgdGhvc2UgaW5oZXJpdGluZyBmcm9tIFJHQlR5cGUs
IG11c3QgaW1wbGVtZW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvclNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvclNwYWNlLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDI0
ICs2NCw0IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEMKICAgICBy
ZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKQotewotICAgIHN3aXRjaCAoY29sb3JTcGFj
ZSkgewotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOgotICAgICAgICB0cyA8
PCAic1JHQiI7Ci0gICAgICAgIGJyZWFrOwotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9T
UEFDRV9MSU5FQVJfU1JHQikKLSAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFy
U1JHQjoKLSAgICAgICAgdHMgPDwgIkxpbmVhclNSR0IiOwotICAgICAgICBicmVhazsKLSNlbmRp
ZgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQotICAgIGNh
c2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0gICAgICAgIHRzIDw8ICJEaXNw
bGF5UDMiOwotICAgICAgICBicmVhazsKLSNlbmRpZgotICAgIH0KLSAgICByZXR1cm4gdHM7Ci19
Ci0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNw
YWNlLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTAgKzI4LDcgQEAKICNpbmNs
dWRlICJDb2xvclR5cGVzLmgiCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYv
RW51bVRyYWl0cy5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLWNsYXNzIFRleHRTdHJlYW07Ci19Cisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Nywx
OCArNDQsNyBAQCBlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90IHsKICAgICBYWVpfRDUw
LAogfTsKIAotZW51bSBjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgOiB1aW50OF90IHsKLSAg
ICBTUkdCCi0jaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQot
ICAgICwgTGluZWFyU1JHQgotI2VuZGlmCi0jaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQ
QUNFX0RJU1BMQVlfUDMpCi0gICAgLCBEaXNwbGF5UDMKLSNlbmRpZgotfTsKLQotV0VCQ09SRV9F
WFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIENvbG9y
U3BhY2UpOwotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6
VGV4dFN0cmVhbSYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSk7CitXRUJDT1JFX0VYUE9SVCBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBDb2xvclNwYWNlKTsKIAogCiB0ZW1wbGF0
ZTx0eXBlbmFtZT4gc3RydWN0IENvbG9yU3BhY2VNYXBwaW5nOwpAQCAtMTAyLDI1ICs4OCw2IEBA
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEZ1bmN0b3I+IGMKICAgICByZXR1cm4gc3Rk
OjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVu
dHM8U1JHQkE8VD4+KGNvbXBvbmVudHMpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgRnVuY3Rvcj4gY29uc3RleHByIGRlY2x0eXBlKGF1dG8pIGNhbGxXaXRoQ29sb3JUeXBl
KGNvbnN0IENvbG9yQ29tcG9uZW50czxULCA0PiYgY29tcG9uZW50cywgRGVzdGluYXRpb25Db2xv
clNwYWNlIGNvbG9yU3BhY2UsIEZ1bmN0b3ImJiBmdW5jdG9yKQotewotICAgIHN3aXRjaCAoY29s
b3JTcGFjZSkgewotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOgotICAgICAg
ICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtl
RnJvbUNvbXBvbmVudHM8U1JHQkE8VD4+KGNvbXBvbmVudHMpKTsKLSNpZiBFTkFCTEUoREVTVElO
QVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OkxpbmVhclNSR0I6Ci0gICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndh
cmQ8RnVuY3Rvcj4oZnVuY3RvciksIG1ha2VGcm9tQ29tcG9uZW50czxMaW5lYXJTUkdCQTxUPj4o
Y29tcG9uZW50cykpOwotI2VuZGlmCi0jaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNF
X0RJU1BMQVlfUDMpCi0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMzoK
LSAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9y
KSwgbWFrZUZyb21Db21wb25lbnRzPERpc3BsYXlQMzxUPj4oY29tcG9uZW50cykpOwotI2VuZGlm
Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHN0ZDo6aW52
b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFrZUZyb21Db21wb25lbnRzPFNS
R0JBPFQ+Pihjb21wb25lbnRzKSk7Ci19Ci0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkBA
IC0xNDEsMTcgKzEwOCw0IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6
Q28KICAgICA+OwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U+IHsKLSAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAot
ICAgICAgICBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UsCi0gICAgICAgIFdlYkNvcmU6
OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xP
Ul9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICAgICAgLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OkxpbmVhclNSR0IKLSNlbmRpZgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9T
UEFDRV9ESVNQTEFZX1AzKQotICAgICAgICAsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6RGlzcGxheVAzCi0jZW5kaWYKLSAgICA+OwotfTsKLQogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29u
Y3JldGVJbWFnZUJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPgogY2xhc3MgQ29uY3JldGVJbWFnZUJ1ZmZlciA6IHB1
YmxpYyBJbWFnZUJ1ZmZlciB7CiBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW1hZ2VC
dWZmZXJUeXBlID0gQ29uY3JldGVJbWFnZUJ1ZmZlciwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgot
ICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXJUeXBlPiBjcmVhdGUoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdp
bmRvdywgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQorICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VC
dWZmZXJUeXBlPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3Jt
YXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEFyZ3VtZW50cyYm
Li4uIGFyZ3VtZW50cykKICAgICB7CiAgICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IEltYWdlQnVm
ZmVyQmFja2VuZDo6UGFyYW1ldGVycyB7IHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFj
ZSwgcGl4ZWxGb3JtYXQgfTsKICAgICAgICAgYXV0byBiYWNrZW5kID0gQmFja2VuZFR5cGU6OmNy
ZWF0ZShwYXJhbWV0ZXJzLCBob3N0V2luZG93KTsKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEltYWdlQnVmZmVyVHlwZSA9IENvbmNyZXRlSW1hZ2VCdWZm
ZXIsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KICAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVy
VHlwZT4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgewotICAgICAgICBhdXRv
IHBhcmFtZXRlcnMgPSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMgeyBzaXplLCAxLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCB9OworICAgICAg
ICBhdXRvIHBhcmFtZXRlcnMgPSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMgeyBzaXpl
LCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4IH07
CiAgICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUocGFyYW1ldGVycywg
Y29udGV4dCk7CiAgICAgICAgIGlmICghYmFja2VuZCkKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMTk1LDcgKzE5NSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgfQogICAgIH0KIAot
ICAgIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc3JjQ29s
b3JTcGFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGRlc3RDb2xvclNwYWNlKSBvdmVycmlkZQor
ICAgIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
IHNyY0NvbG9yU3BhY2UsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgZGVzdENvbG9yU3Bh
Y2UpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJh
Y2tlbmRDcmVhdGVkKCkpIHsKICAgICAgICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHQoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
cm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBAIEltYWdlRHJhd1Jlc3VsdCBDcm9zc2ZhZGVH
ZW5lcmF0ZWRJbWFnZToKIAogdm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRl
cm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJh
bnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBhdXRvIGltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIGNvbnRleHQucmVuZGVyaW5nTW9k
ZSgpLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBjb250
ZXh0LnJlbmRlcmluZ01vZGUoKSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBp
eGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJu
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNv
bG9yU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKKworI2luY2x1ZGUgPHd0Zi90
ZXh0L1RleHRTdHJlYW0uaD4KKworI2lmIFVTRShDRykKKyNpbmNsdWRlICJDb2xvclNwYWNlQ0cu
aCIKKyNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgorI2VuZGlmCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworRGVzdGluYXRpb25Db2xvclNwYWNlIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpCit7CisjaWYgVVNFKENHKQorICAgIHJldHVybiBEZXN0aW5hdGlvbkNv
bG9yU3BhY2Uoc1JHQkNvbG9yU3BhY2VSZWYoKSk7CisjZWxzZQorICAgIHJldHVybiBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UoUGxhdGZvcm1Db2xvclNwYWNlOjpOYW1lOjpTUkdCKTsKKyNlbmRpZgor
fQorCisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQorRGVz
dGluYXRpb25Db2xvclNwYWNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigpCit7
CisjaWYgVVNFKENHKQorICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UobGluZWFyU1JH
QkNvbG9yU3BhY2VSZWYoKSk7CisjZWxzZQorICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UoUGxhdGZvcm1Db2xvclNwYWNlOjpOYW1lOjpMaW5lYXJTUkdCKTsKKyNlbmRpZgorfQorI2Vu
ZGlmCisKKyNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExBWV9QMykKK0Rl
c3RpbmF0aW9uQ29sb3JTcGFjZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMygpCit7
CisjaWYgVVNFKENHKQorICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UoZGlzcGxheVAz
Q29sb3JTcGFjZVJlZigpKTsKKyNlbHNlCisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZShQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU6OkRpc3BsYXlQMyk7CisjZW5kaWYKK30KKyNlbmRp
ZgorCitEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZShQbGF0Zm9y
bUNvbG9yU3BhY2UgcGxhdGZvcm1Db2xvclNwYWNlKQorICAgIDogbV9wbGF0Zm9ybUNvbG9yU3Bh
Y2UgeyBXVEZNb3ZlKHBsYXRmb3JtQ29sb3JTcGFjZSkgfQoreworI2lmIFVTRShDRykKKyAgICBB
U1NFUlQobV9wbGF0Zm9ybUNvbG9yU3BhY2UpOworI2VuZGlmCit9CisKK2Jvb2wgb3BlcmF0b3I9
PShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGEsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgYikKK3sKKyNpZiBVU0UoQ0cpCisgICAgcmV0dXJuIENHQ29sb3JTcGFjZUVxdWFsVG9D
b2xvclNwYWNlKGEucGxhdGZvcm1Db2xvclNwYWNlKCksIGIucGxhdGZvcm1Db2xvclNwYWNlKCkp
OworI2Vsc2UKKyAgICByZXR1cm4gYS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSA9PSBiLnBsYXRmb3Jt
Q29sb3JTcGFjZSgpOworI2VuZGlmCit9CisKK2Jvb2wgb3BlcmF0b3IhPShjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmIGEsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgYikKK3sKKyAg
ICByZXR1cm4gIShhID09IGIpOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpCit7CisgICAg
aWYgKGNvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpCisgICAgICAg
IHRzIDw8ICJzUkdCIjsKKyNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFS
X1NSR0IpCisgICAgZWxzZSBpZiAoY29sb3JTcGFjZSA9PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OkxpbmVhclNSR0IoKSkKKyAgICAgICAgdHMgPDwgIkxpbmVhclNSR0IiOworI2VuZGlmCisjaWYg
RU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCisgICAgZWxzZSBpZiAo
Y29sb3JTcGFjZSA9PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMygpKQorICAgICAg
ICB0cyA8PCAiRGlzcGxheVAzIjsKKyNlbmRpZgorI2lmIFVTRShDRykKKyAgICBlbHNlIGlmIChh
dXRvIGRlc2NyaXB0aW9uID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDb3B5SUNDUHJvZmlsZURlc2Ny
aXB0aW9uKGNvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCkpKSkKKyAgICAgICAgdHMgPDwg
U3RyaW5nKGRlc2NyaXB0aW9uLmdldCgpKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIHRzOworfQor
Cit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNv
bG9yU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJQbGF0Zm9ybUNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSBTUkdCKCk7CisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9S
X1NQQUNFX0xJTkVBUl9TUkdCKQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgTGluZWFyU1JHQigpOworI2VuZGlmCisjaWYgRU5BQkxFKERFU1RJTkFUSU9O
X0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSBEaXNwbGF5UDMoKTsKKyNlbmRpZgorCisgICAgV0VCQ09SRV9FWFBP
UlQgZXhwbGljaXQgRGVzdGluYXRpb25Db2xvclNwYWNlKFBsYXRmb3JtQ29sb3JTcGFjZSk7Cisg
ICAgUGxhdGZvcm1Db2xvclNwYWNlVmFsdWUgcGxhdGZvcm1Db2xvclNwYWNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9wbGF0Zm9ybUNvbG9yU3BhY2UuZ2V0KCk7IH0KKworICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBkZWNvZGUo
RGVjb2RlciYpOworCitwcml2YXRlOgorICAgIFBsYXRmb3JtQ29sb3JTcGFjZSBtX3BsYXRmb3Jt
Q29sb3JTcGFjZTsKK307CisKK1dFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKK1dF
QkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3IhPShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKKworV0VCQ09SRV9FWFBPUlQgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
Jik7CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgRGVzdGluYXRpb25Db2xvclNwYWNl
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fcGxh
dGZvcm1Db2xvclNwYWNlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U+IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8UGxhdGZvcm1Db2xvclNwYWNlPiBwbGF0Zm9y
bUNvbG9yU3BhY2U7CisgICAgZGVjb2RlciA+PiBwbGF0Zm9ybUNvbG9yU3BhY2U7CisgICAgaWYg
KCFwbGF0Zm9ybUNvbG9yU3BhY2UpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlIHsgV1RGTW92ZSgqcGxhdGZvcm1Db2xvclNw
YWNlKSB9OworfQorCit9CisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYWRpZW50SW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIEdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBo
aWNzCiAgICAgdW5zaWduZWQgZ2VuZXJhdG9ySGFzaCA9IG1fZ3JhZGllbnQtPmhhc2goKTsKIAog
ICAgIGlmICghbV9jYWNoZWRJbWFnZSB8fCBtX2NhY2hlZEdlbmVyYXRvckhhc2ggIT0gZ2VuZXJh
dG9ySGFzaCB8fCBtX2NhY2hlZEFkanVzdGVkU2l6ZSAhPSBhZGp1c3RlZFNpemUgfHwgIWFyZUVz
c2VudGlhbGx5RXF1YWwoZGVzdENvbnRleHQuc2NhbGVGYWN0b3IoKSwgbV9jYWNoZWRTY2FsZUZh
Y3RvcikpIHsKLSAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKGFkanVzdGVkU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
LCBkZXN0Q29udGV4dCk7CisgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpLCBkZXN0Q29udGV4dCk7CiAgICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAg
ICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODgzLDcgKzg4Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0
Um91bmRlZFJlY3QKICAgICBjbGlwT3V0KHBhdGgpOwogfQogCi1HcmFwaGljc0NvbnRleHQ6OkNs
aXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0RyYXdpbmdD
b21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBkcmF3aW5n
RnVuY3Rpb24pCitHcmFwaGljc0NvbnRleHQ6OkNsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBH
cmFwaGljc0NvbnRleHQ6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIEZ1bmN0
aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKQogewogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBDbGlwVG9EcmF3aW5nQ29tbWFu
ZHNSZXN1bHQ6OlN1Y2Nlc3M7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDggKzI2LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJDb2xvclNw
YWNlLmgiCiAjaW5jbHVkZSAiRGFzaEFycmF5LmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xv
clNwYWNlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRm9udENhc2NhZGUu
aCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCkBAIC00MTAsNyArNDEwLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJl
Y3QmKTsKIAogICAgIGVudW0gY2xhc3MgQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IDogYm9v
bCB7IFN1Y2Nlc3MsIEZhaWxlZFRvQ3JlYXRlSW1hZ2VCdWZmZXIgfTsKLSAgICBDbGlwVG9EcmF3
aW5nQ29tbWFuZHNSZXN1bHQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGlj
c0NvbnRleHQmKT4mJik7CisgICAgQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IGNsaXBUb0Ry
YXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKTsKICAg
ICAKICAgICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpID0g
MDsKICAgICB2aXJ0dWFsIEludFJlY3QgY2xpcEJvdW5kcygpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhp
Y3NDb250ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNs
aXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYm
IGRyYXdpbmdGdW5jdGlvbikgPSAwOwogI2lmIEVOQUJMRShWSURFTykKICAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBjYW5QYWludEZyYW1lRm9yTWVkaWEoY29u
c3QgTWVkaWFQbGF5ZXImKSBjb25zdCA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIGNvbnN0
IGZsb2F0IE1heENsYW1wZWRMZW5ndGggPSA0MDk2Owogc3RhdGljIGNvbnN0IGZsb2F0IE1heENs
YW1wZWRBcmVhID0gTWF4Q2xhbXBlZExlbmd0aCAqIE1heENsYW1wZWRMZW5ndGg7CiAKLVJlZlB0
cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUs
IFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3Qgc2hvdWxk
VXNlRGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4
ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCitSZWZQdHI8SW1hZ2VCdWZm
ZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdN
b2RlIHJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0IHNob3VsZFVzZURpc3BsYXlM
aXN0LCBSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZv
cm1hdCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsKICAgICBSZWZQdHI8SW1hZ2VC
dWZmZXI+IGltYWdlQnVmZmVyOwogICAgIApAQCAtNTksNyArNTksNyBAQCBSZWZQdHI8SW1hZ2VC
dWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUoCiAgICAgcmV0dXJuIGltYWdlQnVmZmVyOwogfQog
Ci1SZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9y
bWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RX
aW5kb3cqIGhvc3RXaW5kb3cpCiB7CiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZl
cjsKICAgICAKQEAgLTk1LDcgKzk1LDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlQwogICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0KIAotUmVmUHRyPEltYWdlQnVm
ZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
IHNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiBjb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7
CiAgICAgaWYgKHNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEx
MSw3ICsxMTEsNyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDCiAg
ICAgcmV0dXJuIGltYWdlQnVmZmVyOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVm
ZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3Qg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBj
b25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgcmV0dXJuIEltYWdlQnVmZmVy
OjpjcmVhdGUoc2l6ZSwgY29udGV4dC5yZW5kZXJpbmdNb2RlKCksIHJlc29sdXRpb25TY2FsZSwg
Y29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKIH0KQEAgLTE2Nyw3ICsxNjcsNyBAQCBJ
bnRTaXplIEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVyU2l6CiAgICAgcmV0dXJuIGV4cGFu
ZGVkSW50U2l6ZShzaXplICogY29udGV4dC5zY2FsZUZhY3RvcigpKTsKIH0KIAotUmVmUHRyPElt
YWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3Qm
IHJlY3QsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjb3B5UmVj
dFRvQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiBjb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAg
aWYgKHJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTMgKzQ1LDEzIEBAIHN0cnVjdCBJdGVtQnVmZmVySGFu
ZGxlOwogY2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1h
Z2VCdWZmZXI+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW1hZ2VCdWZmZXI+IHsKIHB1YmxpYzoK
ICAgICAvLyBXaWxsIHJldHVybiBhIG51bGwgcG9pbnRlciBvbiBhbGxvY2F0aW9uIGZhaWx1cmUu
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNv
bnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0LCBSZW5k
ZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSwgUGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6
ZSYsIFJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xv
clNwYWNlLCBQaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxv
YXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1
cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiwgUGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6
ZSYsIFJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiwgUGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7
CiAKICAgICAvLyBDcmVhdGUgYW4gaW1hZ2UgYnVmZmVyIGNvbXBhdGlibGUgd2l0aCB0aGUgY29u
dGV4dCwgd2l0aCBzdWl0YWJsZSByZXNvbHV0aW9uIGZvciBkcmF3aW5nIGludG8gdGhlIGJ1ZmZl
ciBhbmQgdGhlbiBpbnRvIHRoaXMgY29udGV4dC4KICAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVm
ZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYpOwotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBh
dGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBjb25z
dCBHcmFwaGljc0NvbnRleHQmKTsKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVh
dGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKyAgICBz
dGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZs
b2F0U2l6ZSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYpOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVC
dWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKIAogICAgIC8vIFRo
ZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZCB3aGVuIGNsYW1waW5nIHRoZSBJbWFnZUJ1ZmZlciB3aGlj
aCBpcyBjcmVhdGVkIGZvciBmaWx0ZXIsIG1hc2tlciBvciBjbGlwcGVyLgogICAgIHN0YXRpYyBi
b29sIHNpemVOZWVkc0NsYW1waW5nKGNvbnN0IEZsb2F0U2l6ZSYpOwpAQCAtMTA3LDcgKzEwNyw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gY29weUltYWdlKEJhY2tpbmdT
dG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlLCBQcmVzZXJ2ZVJlc29sdXRpb24gPSBQcmVzZXJ2
ZVJlc29sdXRpb246Ok5vKSBjb25zdCA9IDA7CiAKICAgICAvLyBDcmVhdGUgYW4gaW1hZ2UgYnVm
ZmVyIGNvbXBhdGlibGUgd2l0aCB0aGUgY29udGV4dCBhbmQgY29weSByZWN0IGZyb20gdGhpcyBi
dWZmZXIgaW50byB0aGlzIG5ldyBvbmUuCi0gICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjb3B5UmVj
dFRvQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgY29uc3Qg
R3JhcGhpY3NDb250ZXh0Jik7CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjb3B5UmVjdFRvQnVm
ZmVyKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IHsgfSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmID0geyB9KSA9IDA7CkBAIC0xMjAsNyArMTIwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBjbGlwVG9NYXNrKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBjb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JT
cGFjZSBzcmNDb2xvclNwYWNlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgZHN0Q29sb3JTcGFjZSkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgc3JjQ29sb3JTcGFjZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiBkc3RDb2xvclNwYWNlKSA9IDA7CiAKICAgICB2aXJ0dWFsIFN0cmluZyB0b0RhdGFVUkwoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5ID0gV1RGOjpudWxs
b3B0LCBQcmVzZXJ2ZVJlc29sdXRpb24gPSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IFdURjo6bnVsbG9wdCkgY29uc3QgPSAw
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNr
ZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlckJhY2tlbmQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01Myw2ICs1Myw4IEBAIEltYWdlQnVmZmVyQmFja2VuZDo6SW1hZ2VCdWZmZXJCYWNrZW5k
KGMKIHsKIH0KIAorSW1hZ2VCdWZmZXJCYWNrZW5kOjp+SW1hZ2VCdWZmZXJCYWNrZW5kKCkgPSBk
ZWZhdWx0OworCiBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyQmFja2VuZDo6c2lua0lu
dG9OYXRpdmVJbWFnZSgpCiB7CiAgICAgcmV0dXJuIGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJh
Y2tpbmdTdG9yZSk7CkBAIC0xMTQsMTUgKzExNiwxNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4g
SW1hZ2VCdWZmZXJCYWNrZW5kCiAgICAgaWYgKGRlc3RpbmF0aW9uUmVjdC5zaXplKCkgIT0gc291
cmNlUmVjdFNjYWxlZC5zaXplKCkpCiAgICAgICAgIHBpeGVsQnVmZmVyLT5kYXRhKCkuemVyb0Zp
bGwoKTsKIAotICAgIENvbnN0UGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBzb3VyY2U7Ci0gICAg
c291cmNlLmZvcm1hdCA9IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwg
cGl4ZWxGb3JtYXQoKSwgY29sb3JTcGFjZSgpIH07Ci0gICAgc291cmNlLmJ5dGVzUGVyUm93ID0g
Ynl0ZXNQZXJSb3coKTsKLSAgICBzb3VyY2Uucm93cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhf
dCo+KGRhdGEpICsgc291cmNlUmVjdENsaXBwZWQueSgpICogc291cmNlLmJ5dGVzUGVyUm93ICsg
c291cmNlUmVjdENsaXBwZWQueCgpICogNDsKKyAgICBDb25zdFBpeGVsQnVmZmVyQ29udmVyc2lv
blZpZXcgc291cmNlIHsKKyAgICAgICAgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0
aXBsaWVkLCBwaXhlbEZvcm1hdCgpLCBjb2xvclNwYWNlKCkgfSwKKyAgICAgICAgYnl0ZXNQZXJS
b3coKSwKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YSkgKyBzb3VyY2VS
ZWN0Q2xpcHBlZC55KCkgKiBzb3VyY2UuYnl0ZXNQZXJSb3cgKyBzb3VyY2VSZWN0Q2xpcHBlZC54
KCkgKiA0CisgICAgfTsKICAgICAKLSAgICBQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IGRlc3Rp
bmF0aW9uOwotICAgIGRlc3RpbmF0aW9uLmZvcm1hdCA9IGRlc3RpbmF0aW9uRm9ybWF0OwotICAg
IGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ID0gNCAqIHNvdXJjZVJlY3RTY2FsZWQud2lkdGgoKTsK
LSAgICBkZXN0aW5hdGlvbi5yb3dzID0gcGl4ZWxCdWZmZXItPmRhdGEoKS5kYXRhKCkgKyBkZXN0
aW5hdGlvblJlY3QueSgpICogZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgKyBkZXN0aW5hdGlvblJl
Y3QueCgpICogNDsKKyAgICBQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IGRlc3RpbmF0aW9uIHsK
KyAgICAgICAgZGVzdGluYXRpb25Gb3JtYXQsCisgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVk
Pig0ICogc291cmNlUmVjdFNjYWxlZC53aWR0aCgpKSwKKyAgICAgICAgcGl4ZWxCdWZmZXItPmRh
dGEoKS5kYXRhKCkgKyBkZXN0aW5hdGlvblJlY3QueSgpICogZGVzdGluYXRpb24uYnl0ZXNQZXJS
b3cgKyBkZXN0aW5hdGlvblJlY3QueCgpICogNAorICAgIH07CiAKICAgICBjb252ZXJ0SW1hZ2VQ
aXhlbHMoc291cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb25SZWN0LnNpemUoKSk7CiAKQEAg
LTE0NywxNSArMTUxLDE3IEBAIHZvaWQgSW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQaXhlbEJ1ZmZl
cigKICAgICBkZXN0aW5hdGlvblJlY3QuaW50ZXJzZWN0KGJhY2tlbmRSZWN0KCkpOwogICAgIHNv
dXJjZVJlY3RDbGlwcGVkLnNldFNpemUoZGVzdGluYXRpb25SZWN0LnNpemUoKSk7CiAKLSAgICBD
b25zdFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgc291cmNlOwotICAgIHNvdXJjZS5mb3JtYXQg
PSBzb3VyY2VQaXhlbEJ1ZmZlci5mb3JtYXQoKTsKLSAgICBzb3VyY2UuYnl0ZXNQZXJSb3cgPSA0
ICogc291cmNlUGl4ZWxCdWZmZXIuc2l6ZSgpLndpZHRoKCk7Ci0gICAgc291cmNlLnJvd3MgPSBz
b3VyY2VQaXhlbEJ1ZmZlci5kYXRhKCkuZGF0YSgpICsgc291cmNlUmVjdENsaXBwZWQueSgpICog
c291cmNlLmJ5dGVzUGVyUm93ICsgc291cmNlUmVjdENsaXBwZWQueCgpICogNDsKLQotICAgIFBp
eGVsQnVmZmVyQ29udmVyc2lvblZpZXcgZGVzdGluYXRpb247Ci0gICAgZGVzdGluYXRpb24uZm9y
bWF0ID0geyBkZXN0aW5hdGlvbkFscGhhRm9ybWF0LCBwaXhlbEZvcm1hdCgpLCBjb2xvclNwYWNl
KCkgfTsKLSAgICBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyA9IGJ5dGVzUGVyUm93KCk7Ci0gICAg
ZGVzdGluYXRpb24ucm93cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEpICsgZGVz
dGluYXRpb25SZWN0LnkoKSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ICsgZGVzdGluYXRpb25S
ZWN0LngoKSAqIDQ7CisgICAgQ29uc3RQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IHNvdXJjZSB7
CisgICAgICAgIHNvdXJjZVBpeGVsQnVmZmVyLmZvcm1hdCgpLAorICAgICAgICBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oNCAqIHNvdXJjZVBpeGVsQnVmZmVyLnNpemUoKS53aWR0aCgpKSwKKyAgICAg
ICAgc291cmNlUGl4ZWxCdWZmZXIuZGF0YSgpLmRhdGEoKSArIHNvdXJjZVJlY3RDbGlwcGVkLnko
KSAqIHNvdXJjZS5ieXRlc1BlclJvdyArIHNvdXJjZVJlY3RDbGlwcGVkLngoKSAqIDQKKyAgICB9
OworCisgICAgUGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBkZXN0aW5hdGlvbiB7CisgICAgICAg
IHsgZGVzdGluYXRpb25BbHBoYUZvcm1hdCwgcGl4ZWxGb3JtYXQoKSwgY29sb3JTcGFjZSgpIH0s
CisgICAgICAgIGJ5dGVzUGVyUm93KCksCisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhf
dCo+KGRhdGEpICsgZGVzdGluYXRpb25SZWN0LnkoKSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93
ICsgZGVzdGluYXRpb25SZWN0LngoKSAqIDQKKyAgICB9OwogCiAgICAgY29udmVydEltYWdlUGl4
ZWxzKHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uUmVjdC5zaXplKCkpOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXJCYWNrZW5kLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsy
NSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2luY2x1
ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgogI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25z
LmgiCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICAgICAgUGl4ZWxGb3JtYXQgcGl4ZWxG
b3JtYXQ7CiAgICAgfTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkltYWdlQnVmZmVy
QmFja2VuZCgpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbWFnZUJ1
ZmZlckJhY2tlbmQoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJbnRTaXplIGNhbGN1
bGF0ZUJhY2tlbmRTaXplKGNvbnN0IFBhcmFtZXRlcnMmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgc2l6ZV90IGNhbGN1bGF0ZU1lbW9yeUNvc3QoY29uc3QgSW50U2l6ZSYgYmFja2VuZFNp
emUsIHVuc2lnbmVkIGJ5dGVzUGVyUm93KTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGNsaXBUb01hc2soR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JikgeyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnZlcnRUb0x1bWluYW5jZU1h
c2soKTsKLSAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNv
bG9yU3BhY2UsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIHRy
YW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJikgeyB9CiAKICAgICB2aXJ0dWFsIFN0cmluZyB0b0RhdGFVUkwo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2
ZVJlc29sdXRpb24pIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFZlY3Rvcjx1aW50OF90PiB0b0Rh
dGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KSBjb25z
dCA9IDA7CkBAIC0xNDAsNyArMTQwLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgSW50U2l6ZSBsb2dp
Y2FsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUobV9wYXJhbWV0ZXJzLmxvZ2ljYWxTaXpl
KTsgfQogICAgIGZsb2F0IHJlc29sdXRpb25TY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1l
dGVycy5yZXNvbHV0aW9uU2NhbGU7IH0KLSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JT
cGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5jb2xvclNwYWNlOyB9CisgICAgY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9w
YXJhbWV0ZXJzLmNvbG9yU3BhY2U7IH0KICAgICBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5waXhlbEZvcm1hdDsgfQogCiAgICAgSW50UmVjdCBs
b2dpY2FsUmVjdCgpIGNvbnN0IHsgcmV0dXJuIEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgbG9n
aWNhbFNpemUoKSk7IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
aXhlbEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BpeGVsQnVmZmVyLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2
LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5o
IgotI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXJGb3JtYXQu
aCIKICNpbmNsdWRlICJQaXhlbEZvcm1hdC5oIgpAQCAtODcsMTkgKzg3LDIxIEBAIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgUGl4ZWxCdWZmZXIKIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKIHsKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQ7Ci0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShmb3JtYXQpKQorICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVyRm9ybWF0PiBmb3JtYXQ7
CisgICAgZGVjb2RlciA+PiBmb3JtYXQ7CisgICAgaWYgKCFmb3JtYXQpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAKICAgICAvLyBGSVhNRTogU3VwcG9ydCBub24tOCBiaXQgZm9ybWF0
cy4KLSAgICBpZiAoIShmb3JtYXQucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OlJHQkE4IHx8
IGZvcm1hdC5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpKQorICAgIGlmICghKGZv
cm1hdC0+cGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OlJHQkE4IHx8IGZvcm1hdC0+cGl4ZWxG
b3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKIAotICAgIEludFNpemUgc2l6ZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNpemUpKQor
ICAgIE9wdGlvbmFsPEludFNpemU+IHNpemU7CisgICAgZGVjb2RlciA+PiBzaXplOworICAgIGlm
ICghc2l6ZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIGF1dG8gY29tcHV0
ZWRCdWZmZXJTaXplID0gUGl4ZWxCdWZmZXI6OmNvbXB1dGVCdWZmZXJTaXplKGZvcm1hdCwgc2l6
ZSk7CisgICAgYXV0byBjb21wdXRlZEJ1ZmZlclNpemUgPSBQaXhlbEJ1ZmZlcjo6Y29tcHV0ZUJ1
ZmZlclNpemUoKmZvcm1hdCwgKnNpemUpOwogICAgIGlmIChjb21wdXRlZEJ1ZmZlclNpemUuaGFz
T3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCkBAIC0xMDcsNyAr
MTA5LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8UGl4ZWxCdQogICAgIGlm
ICghZGVjb2Rlci50ZW1wbGF0ZSBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluPHVpbnQ4X3Q+
KGJ1ZmZlclNpemUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgYXV0byBy
ZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlRm9yRGVjb2RpbmcoZm9ybWF0LCBzaXplLCBi
dWZmZXJTaXplKTsKKyAgICBhdXRvIHJlc3VsdCA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGVGb3JE
ZWNvZGluZyhXVEZNb3ZlKCpmb3JtYXQpLCAqc2l6ZSwgYnVmZmVyU2l6ZSk7CiAgICAgaWYgKCFy
ZXN1bHQpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVyc2lvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJz
aW9uLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTIg
KzI3LDExIEBACiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmgiCiAKICNpbmNsdWRl
ICJBbHBoYVByZW11bHRpcGxpY2F0aW9uLmgiCi0jaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2lu
Y2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNp
bmNsdWRlICJQaXhlbEZvcm1hdC5oIgogCiAjaWYgVVNFKEFDQ0VMRVJBVEUpICYmIFVTRShDRykK
LSNpbmNsdWRlICJDb2xvclNwYWNlQ0cuaCIKICNpbmNsdWRlIDxBY2NlbGVyYXRlL0FjY2VsZXJh
dGUuaD4KICNlbmRpZgogCkBAIC03MSw3ICs3MCw3IEBAIHN0YXRpYyBpbmxpbmUgdkltYWdlX0NH
SW1hZ2VGb3JtYXQgbWFrZVYKIAogICAgIHJlc3VsdC5iaXRzUGVyQ29tcG9uZW50ID0gYml0c1Bl
ckNvbXBvbmVudDsKICAgICByZXN1bHQuYml0c1BlclBpeGVsID0gYml0c1BlclBpeGVsOwotICAg
IHJlc3VsdC5jb2xvclNwYWNlID0gY2FjaGVkQ0dDb2xvclNwYWNlKGZvcm1hdC5jb2xvclNwYWNl
KTsKKyAgICByZXN1bHQuY29sb3JTcGFjZSA9IGZvcm1hdC5jb2xvclNwYWNlLnBsYXRmb3JtQ29s
b3JTcGFjZSgpOwogICAgIHJlc3VsdC5iaXRtYXBJbmZvID0gYml0bWFwSW5mbzsKICAgICByZXN1
bHQudmVyc2lvbiA9IDA7CiAgICAgcmVzdWx0LmRlY29kZSA9IG51bGxwdHI7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0
LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BpeGVsQnVmZmVyRm9ybWF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIgotI2luY2x1
ZGUgIkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNp
bmNsdWRlICJQaXhlbEZvcm1hdC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL09wdGlvbmFsLmg+CkBAIC01MSwxOSArNTEsMjIgQEAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBQaXhlbEJ1ZmZlcgogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25h
bDxQaXhlbEJ1ZmZlckZvcm1hdD4gUGl4ZWxCdWZmZXJGb3JtYXQ6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogewotICAgIEFscGhhUHJlbXVsdGlwbGljYXRpb24gYWxwaGFGb3JtYXQ7Ci0gICAg
aWYgKCFkZWNvZGVyLmRlY29kZShhbHBoYUZvcm1hdCkpCisgICAgT3B0aW9uYWw8QWxwaGFQcmVt
dWx0aXBsaWNhdGlvbj4gYWxwaGFGb3JtYXQ7CisgICAgZGVjb2RlciA+PiBhbHBoYUZvcm1hdDsK
KyAgICBpZiAoIWFscGhhRm9ybWF0KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0g
ICAgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShwaXhl
bEZvcm1hdCkpCisgICAgT3B0aW9uYWw8UGl4ZWxGb3JtYXQ+IHBpeGVsRm9ybWF0OworICAgIGRl
Y29kZXIgPj4gcGl4ZWxGb3JtYXQ7CisgICAgaWYgKCFwaXhlbEZvcm1hdCkKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNl
OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29sb3JTcGFjZSkpCisgICAgT3B0aW9uYWw8RGVz
dGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlOworICAgIGRlY29kZXIgPj4gY29sb3JTcGFj
ZTsKKyAgICBpZiAoIWNvbG9yU3BhY2UpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAK
LSAgICByZXR1cm4geyB7IGFscGhhRm9ybWF0LCBwaXhlbEZvcm1hdCwgY29sb3JTcGFjZSB9IH07
CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCphbHBoYUZvcm1hdCksIFdURk1vdmUoKnBpeGVsRm9y
bWF0KSwgV1RGTW92ZSgqY29sb3JTcGFjZSkgfSB9OwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUNvbG9yU3BhY2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUNvbG9yU3BhY2UuaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bUNvbG9yU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKENHKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KK3R5cGVkZWYgc3RydWN0IENHQ29sb3JTcGFjZSogQ0dDb2xvclNwYWNlUmVmOworI2Vsc2UK
KyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgor
I2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIFVTRShDRykKKwordXNpbmcgUGxh
dGZvcm1Db2xvclNwYWNlID0gUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj47Cit1c2luZyBQbGF0
Zm9ybUNvbG9yU3BhY2VWYWx1ZSA9IENHQ29sb3JTcGFjZVJlZjsKKworI2Vsc2UKKworY2xhc3Mg
UGxhdGZvcm1Db2xvclNwYWNlIHsKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIE5hbWUgeworICAg
ICAgICBTUkdCCisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdC
KQorICAgICAgICAsIExpbmVhclNSR0IKKyNlbmRpZgorI2lmIEVOQUJMRShERVNUSU5BVElPTl9D
T0xPUl9TUEFDRV9ESVNQTEFZX1AzKQorICAgICAgICAsIERpc3BsYXlQMworI2VuZGlmCisgICAg
fTsKKworICAgIFBsYXRmb3JtQ29sb3JTcGFjZShOYW1lIG5hbWUpCisgICAgICAgIDogbV9uYW1l
IHsgbmFtZSB9CisgICAgeworICAgIH0KKworICAgIE5hbWUgZ2V0KCkgY29uc3QgeyByZXR1cm4g
bV9uYW1lOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFs
PFBsYXRmb3JtQ29sb3JTcGFjZT4gZGVjb2RlKERlY29kZXImKTsKKworcHJpdmF0ZToKKyAgICBO
YW1lIG1fbmFtZTsKKworfTsKK3VzaW5nIFBsYXRmb3JtQ29sb3JTcGFjZVZhbHVlID0gUGxhdGZv
cm1Db2xvclNwYWNlOjpOYW1lOworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIFBsYXRm
b3JtQ29sb3JTcGFjZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5j
b2RlciA8PCBtX25hbWU7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRp
b25hbDxQbGF0Zm9ybUNvbG9yU3BhY2U+IFBsYXRmb3JtQ29sb3JTcGFjZTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8UGxhdGZvcm1Db2xvclNwYWNlOjpOYW1lPiBu
YW1lOworICAgIGRlY29kZXIgPj4gbmFtZTsKKyAgICBpZiAoIW5hbWUpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gUGxhdGZvcm1Db2xvclNwYWNlIHsgKnBsYXRm
b3JtQ29sb3JTcGFjZSB9OworfQorCisjZW5kaWYKKworfQorCituYW1lc3BhY2UgV1RGIHsKKwor
I2lmICFVU0UoQ0cpCisKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6UGxh
dGZvcm1Db2xvclNwYWNlOjpOYW1lPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwK
KyAgICAgICAgV2ViQ29yZTo6UGxhdGZvcm1Db2xvclNwYWNlOjpOYW1lLAorICAgICAgICBXZWJD
b3JlOjpQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU6OlNSR0IKKyNpZiBFTkFCTEUoREVTVElOQVRJ
T05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCisgICAgICAgICwgV2ViQ29yZTo6UGxhdGZvcm1D
b2xvclNwYWNlOjpOYW1lOjpMaW5lYXJTUkdCCisjZW5kaWYKKyNpZiBFTkFCTEUoREVTVElOQVRJ
T05fQ09MT1JfU1BBQ0VfRElTUExBWV9QMykKKyAgICAgICAgLCBXZWJDb3JlOjpQbGF0Zm9ybUNv
bG9yU3BhY2U6Ok5hbWU6OkRpc3BsYXlQMworI2VuZGlmCisgICAgPjsKK307CisKKyNlbmRpZgor
Cit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcAkocmV2aXNpb24gMjc3OTE5
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyBpbmxpbmUgc3RkOjp1
bmlxdWVfcHRyPElPU3VyZmFjZT4KICAgICB9CiAKICAgICBJbnRTaXplIHNpemUgeyBzdGF0aWNf
Y2FzdDxpbnQ+KENWUGl4ZWxCdWZmZXJHZXRXaWR0aChwaXhlbEJ1ZmZlcikpLCBzdGF0aWNfY2Fz
dDxpbnQ+KENWUGl4ZWxCdWZmZXJHZXRIZWlnaHQocGl4ZWxCdWZmZXIpKSB9OwotICAgIGF1dG8g
aW9TdXJmYWNlID0gIElPU3VyZmFjZTo6Y3JlYXRlKHNpemUsIHNSR0JDb2xvclNwYWNlUmVmKCks
IElPU3VyZmFjZTo6Rm9ybWF0OjpCR1JBKTsKKyAgICBhdXRvIGlvU3VyZmFjZSA9ICBJT1N1cmZh
Y2U6OmNyZWF0ZShzaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgSU9TdXJmYWNl
OjpGb3JtYXQ6OkJHUkEpOwogCiAgICAgSU9TdXJmYWNlOjpMb2NrZXIgbG9jaygqaW9TdXJmYWNl
KTsKICAgICB2SW1hZ2VfQnVmZmVyIHNyYzsKQEAgLTExMyw3ICsxMTMsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+IFJlbW90CiAgICAgICAgIHN1cmZhY2UgPSBpb1N1cmZh
Y2UtPnN1cmZhY2UoKTsKICAgICB9CiAKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZVZpZGVvU2FtcGxlPihuZXcgUmVtb3RlVmlkZW9TYW1wbGUoc3VyZmFjZSwgc1JHQkNvbG9yU3Bh
Y2VSZWYoKSwgc2FtcGxlLnByZXNlbnRhdGlvblRpbWUoKSwgc2FtcGxlLnZpZGVvUm90YXRpb24o
KSwgc2FtcGxlLnZpZGVvTWlycm9yZWQoKSkpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8
UmVtb3RlVmlkZW9TYW1wbGU+KG5ldyBSZW1vdGVWaWRlb1NhbXBsZShzdXJmYWNlLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgc2FtcGxlLnByZXNlbnRhdGlvblRpbWUoKSwgc2FtcGxl
LnZpZGVvUm90YXRpb24oKSwgc2FtcGxlLnZpZGVvTWlycm9yZWQoKSkpOwogfQogCiBzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+IFJlbW90ZVZpZGVvU2FtcGxlOjpjcmVhdGUoQ1ZQ
aXhlbEJ1ZmZlclJlZiBpbWFnZUJ1ZmZlciwgTWVkaWFUaW1lJiYgcHJlc2VudGF0aW9uVGltZSwg
TWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24pCkBAIC0xMjQsMTAgKzEyNCwxMCBA
QCBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlkZW9TYW1wbGU+IFJlbW90CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlVmlk
ZW9TYW1wbGU+KG5ldyBSZW1vdGVWaWRlb1NhbXBsZShzdXJmYWNlLCBzUkdCQ29sb3JTcGFjZVJl
ZigpLCBXVEZNb3ZlKHByZXNlbnRhdGlvblRpbWUpLCByb3RhdGlvbiwgZmFsc2UpKTsKKyAgICBy
ZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPihuZXcgUmVtb3RlVmlkZW9T
YW1wbGUoc3VyZmFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFdURk1vdmUocHJl
c2VudGF0aW9uVGltZSksIHJvdGF0aW9uLCBmYWxzZSkpOwogfQogCi1SZW1vdGVWaWRlb1NhbXBs
ZTo6UmVtb3RlVmlkZW9TYW1wbGUoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIENHQ29sb3JTcGFjZVJl
ZiBjb2xvclNwYWNlLCBNZWRpYVRpbWUmJiB0aW1lLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlv
biByb3RhdGlvbiwgYm9vbCBtaXJyb3JlZCkKK1JlbW90ZVZpZGVvU2FtcGxlOjpSZW1vdGVWaWRl
b1NhbXBsZShJT1N1cmZhY2VSZWYgc3VyZmFjZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiBjb2xvclNwYWNlLCBNZWRpYVRpbWUmJiB0aW1lLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlv
biByb3RhdGlvbiwgYm9vbCBtaXJyb3JlZCkKICAgICA6IG1faW9TdXJmYWNlKFdlYkNvcmU6OklP
U3VyZmFjZTo6Y3JlYXRlRnJvbVN1cmZhY2Uoc3VyZmFjZSwgY29sb3JTcGFjZSkpCiAgICAgLCBt
X3JvdGF0aW9uKHJvdGF0aW9uKQogICAgICwgbV90aW1lKFdURk1vdmUodGltZSkpCkBAIC0xNDAs
NyArMTQwLDcgQEAgUmVtb3RlVmlkZW9TYW1wbGU6OlJlbW90ZVZpZGVvU2FtcGxlKElPUwogSU9T
dXJmYWNlUmVmIFJlbW90ZVZpZGVvU2FtcGxlOjpzdXJmYWNlKCkgY29uc3QKIHsKICAgICBpZiAo
IW1faW9TdXJmYWNlICYmIG1fc2VuZFJpZ2h0KQotICAgICAgICBjb25zdF9jYXN0PFJlbW90ZVZp
ZGVvU2FtcGxlKj4odGhpcyktPm1faW9TdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVh
dGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoY29uc3RfY2FzdDxSZW1vdGVWaWRlb1NhbXBsZSo+KHRo
aXMpLT5tX3NlbmRSaWdodCksIHNSR0JDb2xvclNwYWNlUmVmKCkpOworICAgICAgICBjb25zdF9j
YXN0PFJlbW90ZVZpZGVvU2FtcGxlKj4odGhpcyktPm1faW9TdXJmYWNlID0gV2ViQ29yZTo6SU9T
dXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoY29uc3RfY2FzdDxSZW1vdGVWaWRl
b1NhbXBsZSo+KHRoaXMpLT5tX3NlbmRSaWdodCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpKTsKIAogICAgIHJldHVybiBtX2lvU3VyZmFjZSA/IG1faW9TdXJmYWNlLT5zdXJmYWNlKCkg
OiBudWxscHRyOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVt
b3RlVmlkZW9TYW1wbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDMsNyArMTAzLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBS
ZW1vdGVWaWRlb1NhbXBsZShJT1N1cmZhY2VSZWYsIENHQ29sb3JTcGFjZVJlZiwgTWVkaWFUaW1l
JiYsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uLCBib29sKTsKKyAgICBSZW1vdGVWaWRlb1Nh
bXBsZShJT1N1cmZhY2VSZWYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIE1lZGlhVGlt
ZSYmLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiwgYm9vbCk7CiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6SU9TdXJmYWNlPiBtX2lvU3VyZmFjZTsKICAgICBXVEY6Ok1hY2hTZW5k
UmlnaHQgbV9zZW5kUmlnaHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9TaGFkb3dCbHVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9TaGFkb3dCbHVyLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1
LDcgKzg1LDcgQEAgcHVibGljOgogICAgICAgICBjbGVhclNjcmF0Y2hCdWZmZXIoKTsKIAogICAg
ICAgICAvLyBTaGFkb3dCbHVyIGlzIG5vdCB1c2VkIHdpdGggYWNjZWxlcmF0ZWQgZHJhd2luZywg
c28gaXQncyBPSyB0byBtYWtlIGFuIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkIGJ1ZmZl
ci4KLSAgICAgICAgbV9pbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUocm91bmRlZFNp
emUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgbV9pbWFnZUJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUocm91bmRlZFNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgp
OwogICAgICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlcjsKICAgICB9CiAKQEAgLTYwNCw3ICs2MDQs
NyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvdyhjb25zdCBBCiAKIHZvaWQgU2hh
ZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHNoYWRvd2VkUmVjdCwgY29uc3QgTGF5ZXJJbWFn
ZVByb3BlcnRpZXMmIGxheWVySW1hZ2VQcm9wZXJ0aWVzLCBjb25zdCBEcmF3QnVmZmVyQ2FsbGJh
Y2smIGRyYXdCdWZmZXIpCiB7Ci0gICAgYXV0byBsYXllckltYWdlID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShleHBhbmRlZEludFNpemUobGF5ZXJJbWFnZVByb3BlcnRpZXMubGF5ZXJTaXplKSwgUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
LCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoZXhwYW5kZWRJbnRTaXplKGxheWVySW1hZ2VQcm9wZXJ0aWVzLmxheWVyU2l6ZSks
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghbGF5ZXJJbWFnZSkKICAgICAg
ICAgcmV0dXJuOwogCkBAIC02MzIsNyArNjMyLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3UmVj
dFNoYWRvd1dpdGhvdXRUaQogCiB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhv
dXRUaWxpbmcoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRSZWN0JiBmdWxsUmVj
dCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgaG9sZVJlY3QsIGNvbnN0IExheWVySW1hZ2VQcm9w
ZXJ0aWVzJiBsYXllckltYWdlUHJvcGVydGllcywgY29uc3QgRHJhd0J1ZmZlckNhbGxiYWNrJiBk
cmF3QnVmZmVyKQogewotICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
ZXhwYW5kZWRJbnRTaXplKGxheWVySW1hZ2VQcm9wZXJ0aWVzLmxheWVyU2l6ZSksIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGllcy5sYXllclNpemUpLCBSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWxheWVySW1hZ2UpCiAgICAgICAgIHJl
dHVybjsKIApAQCAtNzA1LDcgKzcwNSw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFk
b3dXaXRoVGlsaW4KICNlbmRpZgogCiAgICAgaWYgKCFsYXllckltYWdlQnVmZmVyKSB7Ci0gICAg
ICAgIGxheWVySW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRlbXBsYXRlU2l6ZSwg
UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgICAgICBsYXllckltYWdlQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgp
OwogICAgICAgICBpZiAoIWxheWVySW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtNzYzLDcgKzc2Myw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93
V2l0aFRpbGkKICNlbmRpZgogCiAgICAgaWYgKCFsYXllckltYWdlQnVmZmVyKSB7Ci0gICAgICAg
IGxheWVySW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRlbXBsYXRlU2l6ZSwgUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
LCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgICAgICBsYXllckltYWdlQnVmZmVyID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
IDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwog
ICAgICAgICBpZiAoIWxheWVySW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
fQpAQCAtOTAzLDcgKzkwMyw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6Ymx1clNoYWRvd0J1ZmZlcihJ
bWFnZUIKICAgICBpZiAobV90eXBlICE9IEJsdXJTaGFkb3cpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVu
cHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IgfTsKKyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCkgfTsKICAgICBJbnRSZWN0IGJsdXJSZWN0KEludFBvaW50KCksIHRl
bXBsYXRlU2l6ZSk7CiAgICAgYXV0byBsYXllckRhdGEgPSBsYXllckltYWdlLmdldFBpeGVsQnVm
ZmVyKGZvcm1hdCwgYmx1clJlY3QpOwogICAgIGlmICghbGF5ZXJEYXRhKQpAQCAtOTMzLDcgKzkz
Myw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1NoYWRvd0xheWVyKGNvbnN0IEEKIAogICAgIGFk
anVzdEJsdXJSYWRpdXModHJhbnNmb3JtKTsKIAotICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoZXhwYW5kZWRJbnRTaXplKGxheWVySW1hZ2VQcm9wZXJ0aWVzLT5sYXll
clNpemUpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBsYXllckltYWdlID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShleHBhbmRlZEludFNpemUobGF5ZXJJbWFnZVByb3BlcnRpZXMt
PmxheWVyU2l6ZSksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghbGF5ZXJJ
bWFnZSkKICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc5LDcgKzc5LDcgQEAgc3RhdGljIHZvaWQgd2lwZUFscGhhQ2hhbm5lbEZyb21QaXhlbHMoaQog
CiBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhl
bHNGb3JQYWludFJlc3VsdHMoKQogewotICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFs
cGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBm
b3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9y
bWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsKICAgICBhdXRvIHBp
eGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQsIGdldEludGVybmFsRnJh
bWVidWZmZXJTaXplKCkpOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxNCw3
ICs0MTQsNyBAQCBGbG9hdFJlY3QgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpyb3VuCiAgICAg
cmV0dXJuIENhaXJvOjpTdGF0ZTo6cm91bmRUb0RldmljZVBpeGVscyhtX3BsYXRmb3JtQ29udGV4
dCwgcmVjdCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjbGlwVG9EcmF3
aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBGdW5j
dGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKQordm9pZCBHcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm86OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKQog
ewogICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRJbXBsQ2Fpcm8uaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGlwUGF0aChj
b25zdCBQYXRoJiwgV2luZFJ1bGUpIG92ZXJyaWRlOwogICAgIEludFJlY3QgY2xpcEJvdW5kcygp
IG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25z
dCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5kcyhj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0
aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY2xpcFRv
RHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpIG92
ZXJyaWRlOwogI2lmIEVOQUJMRShWSURFTykKICAgICB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShN
ZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pIG92ZXJyaWRlOwogICAg
IGJvb2wgY2FuUGFpbnRGcmFtZUZvck1lZGlhKGNvbnN0IE1lZGlhUGxheWVyJikgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFj
a2VuZC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODksMTkgKzg5LDE5IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OmNsaXBUb01h
c2sKICAgICAgICAgQ2Fpcm86OmNsaXBUb0ltYWdlQnVmZmVyKCpkZXN0Q29udGV4dC5wbGF0Zm9y
bUNvbnRleHQoKSwgaW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgZGVzdFJlY3QpOwogfQog
Ci12b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjp0cmFuc2Zvcm1Db2xvclNwYWNlKERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgZGVz
dENvbG9yU3BhY2UpCit2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjp0cmFuc2Zvcm1Db2xv
clNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgc3JjQ29sb3JTcGFjZSwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBkZXN0Q29sb3JTcGFjZSkKIHsKICAgICBpZiAoc3JjQ29s
b3JTcGFjZSA9PSBkZXN0Q29sb3JTcGFjZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gb25s
eSBzUkdCIDwtPiBsaW5lYXJSR0IgYXJlIHN1cHBvcnRlZCBhdCB0aGUgbW9tZW50Ci0gICAgaWYg
KChzcmNDb2xvclNwYWNlICE9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQiAmJiBz
cmNDb2xvclNwYWNlICE9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQikKLSAgICAgICAgfHwg
KGRlc3RDb2xvclNwYWNlICE9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQiAmJiBk
ZXN0Q29sb3JTcGFjZSAhPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpKQorICAgIGlmICgo
c3JjQ29sb3JTcGFjZSAhPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKSAmJiBz
cmNDb2xvclNwYWNlICE9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKQorICAgICAgICB8
fCAoZGVzdENvbG9yU3BhY2UgIT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCkg
JiYgZGVzdENvbG9yU3BhY2UgIT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBtX3BhcmFtZXRlcnMuY29sb3JTcGFjZSA9IGRlc3RDb2xvclNw
YWNlOwogCi0gICAgaWYgKGRlc3RDb2xvclNwYWNlID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
TGluZWFyU1JHQikgeworICAgIGlmIChkZXN0Q29sb3JTcGFjZSA9PSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OkxpbmVhclNSR0IoKSkgewogICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjphcnJheTx1
aW50OF90LCAyNTY+IGxpbmVhclJnYkxVVCA9IFtdIHsKICAgICAgICAgICAgIHN0ZDo6YXJyYXk8
dWludDhfdCwgMjU2PiBhcnJheTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCAyNTY7IGkrKykgewpAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJDYWlyb0Jh
Y2tlbmQ6OnRyYW5zZm9ybUMKICAgICAgICAgICAgIHJldHVybiBhcnJheTsKICAgICAgICAgfSgp
OwogICAgICAgICBwbGF0Zm9ybVRyYW5zZm9ybUNvbG9yU3BhY2UobGluZWFyUmdiTFVUKTsKLSAg
ICB9IGVsc2UgaWYgKGRlc3RDb2xvclNwYWNlID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QikgeworICAgIH0gZWxzZSBpZiAoZGVzdENvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCkpIHsKICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6YXJyYXk8dWludDhfdCwg
MjU2PiBkZXZpY2VSZ2JMVVQ9IFtdIHsKICAgICAgICAgICAgIHN0ZDo6YXJyYXk8dWludDhfdCwg
MjU2PiBhcnJheTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAyNTY7IGkr
KykgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VC
dWZmZXJDYWlyb0JhY2tlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5oCShyZXZpc2lvbiAyNzc5
MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvQmFja2VuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgY2xpcFRvTWFzayhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0KSBvdmVycmlkZTsKIAotICAgIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0
aW5hdGlvbkNvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGRl
c3RDb2xvclNwYWNlKSBvdmVycmlkZTsKKyAgICB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBzcmNDb2xvclNwYWNlLCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmIGRlc3RDb2xvclNwYWNlKSBvdmVycmlkZTsKIAogICAgIFN0cmluZyB0b0Rh
dGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQ
cmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0IG92ZXJyaWRlOwogICAgIFZlY3Rvcjx1aW50OF90PiB0
b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KSBj
b25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0NvbG9yQ0cuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcs
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDAzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yOSwxMyArMjksMTQgQEAKICNpZiBVU0UoQ0cpCiAKICNpbmNs
dWRlICJDb2xvclNwYWNlQ0cuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIK
ICNpbmNsdWRlIDxtdXRleD4KKyNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5o
PgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1RpbnlMUlVDYWNoZS5oPgot
I2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9UaW55TFJVQ2FjaGUuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogc3RhdGljIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjcmVhdGVDR0NvbG9yKGNv
bnN0IENvbG9yJik7CkBAIC05MSwzNCArOTIsMzggQEAgQ29sb3I6OkNvbG9yKENHQ29sb3JSZWYg
Y29sb3IsIE9wdGlvblNldAogewogfQogCi1zdGF0aWMgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNy
ZWF0ZUNHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQorc3RhdGljIHN0ZDo6cGFpcjxDR0NvbG9y
U3BhY2VSZWYsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4+IGNvbnZlcnRUb0NHQ29tcGF0aWJs
ZUNvbXBvbmVudHMoQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQs
IDQ+IGNvbXBvbmVudHMpCiB7Ci0gICAgYXV0byBbY29sb3JTcGFjZSwgY29tcG9uZW50c10gPSBj
b2xvci5jb2xvclNwYWNlQW5kQ29tcG9uZW50cygpOwotCi0gICAgYXV0byBjZ0NvbG9yU3BhY2Ug
PSBjYWNoZWROdWxsYWJsZUNHQ29sb3JTcGFjZShjb2xvclNwYWNlKTsKLQogICAgIC8vIFNvbWUg
Q0cgcG9ydHMgZG9uJ3Qgc3VwcG9ydCBhbGwgdGhlIGNvbG9yIHNwYWNlcyByZXF1aXJlZCBhbmQg
cmV0dXJuCiAgICAgLy8gbnVsbHB0ciBmb3IgdW5zdXBwb3J0ZWQgY29sb3Igc3BhY2VzLiBJbiB0
aG9zZSBjYXNlcywgd2UgZWFnZXJseSBjb252ZXJ0CiAgICAgLy8gdGhlIGNvbG9yIGludG8gZWl0
aGVyIGV4dGVuZGVkIHNSR0Igb3Igbm9ybWFsIHNSR0IsIGlmIGV4dGVuZGVkIHNSR0IgaXMKLSAg
ICAvLyBub3Qgc3VwcG9ydGVkLCBiZWZvcmUgY3JlYXRpbmcgdGhlIENHQ29sb3JSZWYuCisgICAg
Ly8gbm90IHN1cHBvcnRlZC4KKworICAgIGF1dG8gY2dDb2xvclNwYWNlID0gY2FjaGVkTnVsbGFi
bGVDR0NvbG9yU3BhY2UoY29sb3JTcGFjZSk7CiAgICAgaWYgKCFjZ0NvbG9yU3BhY2UpIHsKICNp
ZiBIQVZFKENPUkVfR1JBUEhJQ1NfRVhURU5ERURfU1JHQl9DT0xPUl9TUEFDRSkKLSAgICAgICAg
YXV0byBjb2xvckNvbnZlcnRlZFRvRXh0ZW5kZWRTUkdCQSA9IGNhbGxXaXRoQ29sb3JUeXBlKGNv
bXBvbmVudHMsIGNvbG9yU3BhY2UsIFtdIChjb25zdCBhdXRvJiBjb2xvcikgewotICAgICAgICAg
ICAgcmV0dXJuIGNvbnZlcnRDb2xvcjxFeHRlbmRlZFNSR0JBPGZsb2F0Pj4oY29sb3IpOworICAg
ICAgICBhdXRvIGNnQ29tcGF0aWJsZUNvbXBvbmVudHMgPSBjYWxsV2l0aENvbG9yVHlwZShjb21w
b25lbnRzLCBjb2xvclNwYWNlLCBbXSAoY29uc3QgYXV0byYgY29sb3IpIHsKKyAgICAgICAgICAg
IHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhjb252ZXJ0Q29sb3I8RXh0ZW5kZWRTUkdCQTxmbG9h
dD4+KGNvbG9yKSk7CiAgICAgICAgIH0pOwotICAgICAgICBjb21wb25lbnRzID0gYXNDb2xvckNv
bXBvbmVudHMoY29sb3JDb252ZXJ0ZWRUb0V4dGVuZGVkU1JHQkEpOwotICAgICAgICBjZ0NvbG9y
U3BhY2UgPSBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCk7CisgICAgICAgIHJldHVybiB7IGV4
dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKSwgY2dDb21wYXRpYmxlQ29tcG9uZW50cyB9OwogI2Vs
c2UKICAgICAgICAgYXV0byBjb2xvckNvbnZlcnRlZFRvU1JHQkEgPSBjYWxsV2l0aENvbG9yVHlw
ZShjb21wb25lbnRzLCBjb2xvclNwYWNlLCBbXSAoY29uc3QgYXV0byYgY29sb3IpIHsKLSAgICAg
ICAgICAgIHJldHVybiBjb252ZXJ0Q29sb3I8U1JHQkE8ZmxvYXQ+Pihjb2xvcik7CisgICAgICAg
ICAgICByZXR1cm4gYXNDb2xvckNvbXBvbmVudHMoY29udmVydENvbG9yPFNSR0JBPGZsb2F0Pj4o
Y29sb3IpKTsKICAgICAgICAgfSk7Ci0gICAgICAgIGNvbXBvbmVudHMgPSBhc0NvbG9yQ29tcG9u
ZW50cyhjb2xvckNvbnZlcnRlZFRvU1JHQkEpOwotICAgICAgICBjZ0NvbG9yU3BhY2UgPSBzUkdC
Q29sb3JTcGFjZVJlZigpOworICAgICAgICByZXR1cm4geyBzUkdCQ29sb3JTcGFjZVJlZigpLCBj
Z0NvbXBhdGlibGVDb21wb25lbnRzIH07CiAjZW5kaWYKICAgICB9CiAKLSAgICBhdXRvIFtyLCBn
LCBiLCBhXSA9IGNvbXBvbmVudHM7Ci0gICAgQ0dGbG9hdCBjZ0Zsb2F0Q29tcG9uZW50c1s0XSB7
IHIsIGcsIGIsIGEgfTsKKyAgICByZXR1cm4geyBjZ0NvbG9yU3BhY2UsIGNvbXBvbmVudHMgfTsK
K30KKworc3RhdGljIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjcmVhdGVDR0NvbG9yKGNvbnN0IENv
bG9yJiBjb2xvcikKK3sKKyAgICBhdXRvIFtjb2xvclNwYWNlLCBjb21wb25lbnRzXSA9IGNvbG9y
LmNvbG9yU3BhY2VBbmRDb21wb25lbnRzKCk7CisgICAgYXV0byBbY2dDb2xvclNwYWNlLCBjZ0Nv
bXBhdGlibGVDb21wb25lbnRzXSA9IGNvbnZlcnRUb0NHQ29tcGF0aWJsZUNvbXBvbmVudHMoY29s
b3JTcGFjZSwgY29tcG9uZW50cyk7CisgICAgCisgICAgYXV0byBbYzEsIGMyLCBjMywgYzRdID0g
Y2dDb21wYXRpYmxlQ29tcG9uZW50czsKKyAgICBDR0Zsb2F0IGNnRmxvYXRDb21wb25lbnRzWzRd
IHsgYzEsIGMyLCBjMywgYzQgfTsKIAogICAgIHJldHVybiBhZG9wdENGKENHQ29sb3JDcmVhdGUo
Y2dDb2xvclNwYWNlLCBjZ0Zsb2F0Q29tcG9uZW50cykpOwogfQpAQCAtMTYxLDYgKzE2NiwyNCBA
QCBDR0NvbG9yUmVmIGNhY2hlZENHQ29sb3IoY29uc3QgQ29sb3ImIGNvCiAgICAgcmV0dXJuIGNh
Y2hlLmdldCgpLmdldChjb2xvcikuZ2V0KCk7CiB9CiAKK0NvbG9yQ29tcG9uZW50czxmbG9hdCwg
ND4gcGxhdGZvcm1Db252ZXJ0Q29sb3JDb21wb25lbnRzKENvbG9yU3BhY2UgaW5wdXRDb2xvclNw
YWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGlucHV0Q29sb3JDb21wb25lbnRzLCBjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIG91dHB1dENvbG9yU3BhY2UpCit7CisgICAgLy8gRklY
TUU6IEludmVzdGlnYXRlIG9wdGltaXppbmcgdGhpcyB0byB1c2UgdGhlIGJ1aWx0aW4gY29sb3Ig
Y29udmVyc2lvbiBjb2RlIGZvciBzdXBwb3J0ZWQgY29sb3Igc3BhY2VzLgorCisgICAgYXV0byBb
Y2dJbnB1dENvbG9yU3BhY2UsIGNnQ29tcGF0aWJsZUNvbXBvbmVudHNdID0gY29udmVydFRvQ0dD
b21wYXRpYmxlQ29tcG9uZW50cyhpbnB1dENvbG9yU3BhY2UsIGlucHV0Q29sb3JDb21wb25lbnRz
KTsKKyAgICBpZiAoY2dJbnB1dENvbG9yU3BhY2UgPT0gb3V0cHV0Q29sb3JTcGFjZS5wbGF0Zm9y
bUNvbG9yU3BhY2UoKSkKKyAgICAgICAgcmV0dXJuIGNnQ29tcGF0aWJsZUNvbXBvbmVudHM7CisK
KyAgICBhdXRvIFtjMSwgYzIsIGMzLCBjNF0gPSBjZ0NvbXBhdGlibGVDb21wb25lbnRzOworICAg
IENHRmxvYXQgc291cmNlQ29tcG9uZW50c1s0XSB7IGMxLCBjMiwgYzMsIGM0IH07CisgICAgQ0dG
bG9hdCBkZXN0aW5hdGlvbkNvbXBvbmVudHNbNF0geyB9OworCisgICAgYXV0byB0cmFuc2Zvcm0g
PSBhZG9wdENGKENHQ29sb3JUcmFuc2Zvcm1DcmVhdGUob3V0cHV0Q29sb3JTcGFjZS5wbGF0Zm9y
bUNvbG9yU3BhY2UoKSwgbnVsbHB0cikpOworICAgIGF1dG8gcmVzdWx0ID0gQ0dDb2xvclRyYW5z
Zm9ybUNvbnZlcnRDb2xvckNvbXBvbmVudHModHJhbnNmb3JtLmdldCgpLCBjZ0lucHV0Q29sb3JT
cGFjZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCwgc291cmNlQ29tcG9uZW50cywgZGVzdGlu
YXRpb25Db21wb25lbnRzKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKKyAg
ICByZXR1cm4geyBzdGF0aWNfY2FzdDxmbG9hdD4oZGVzdGluYXRpb25Db21wb25lbnRzWzBdKSwg
c3RhdGljX2Nhc3Q8ZmxvYXQ+KGRlc3RpbmF0aW9uQ29tcG9uZW50c1sxXSksIHN0YXRpY19jYXN0
PGZsb2F0PihkZXN0aW5hdGlvbkNvbXBvbmVudHNbMl0pLCBzdGF0aWNfY2FzdDxmbG9hdD4oZGVz
dGluYXRpb25Db21wb25lbnRzWzNdKSB9OworfQorCiB9CiAKICNlbmRpZiAvLyBVU0UoQ0cpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNw
YWNlQ0cuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgJKHdvcmtpbmcgY29weSkKQEAgLTExOSwyMyArMTE5LDQg
QEAgc3RhdGljIGlubGluZSBDR0NvbG9yU3BhY2VSZWYgY2FjaGVkTnVsbAogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi0vLyBOT1RFOiBTaW5jZSB0aGlzIGZ1bmN0aW9uIGlzIGZvciAqZGVzdGlu
YXRpb24qIGNvbG9yIHNwYWNlcyB3aG9zZSBjYWxsZXJzIGFsd2F5cyBleHBlY3QgYSBub24tbnVs
bCBjb2xvciBzcGFjZSwgdGhpcyBmdW5jdGlvbiBpcyBndWFyYW50ZWVkIHRvIHJldHVybiBub24t
bnVsbCwgdW5saWtlIGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlKCkuCi1zdGF0aWMgaW5saW5l
IENHQ29sb3JTcGFjZVJlZiBjYWNoZWRDR0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNl
IGNvbG9yU3BhY2UpCi17Ci0gICAgc3dpdGNoIChjb2xvclNwYWNlKSB7Ci0gICAgY2FzZSBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I6Ci0gICAgICAgIHJldHVybiBzUkdCQ29sb3JTcGFjZVJl
ZigpOwotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAg
ICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQjoKLSAgICAgICAgcmV0dXJu
IGxpbmVhclNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoREVTVElOQVRJ
T05fQ09MT1JfU1BBQ0VfRElTUExBWV9QMykKLSAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6RGlzcGxheVAzOgotICAgICAgICByZXR1cm4gZGlzcGxheVAzQ29sb3JTcGFjZVJlZigpOwot
I2VuZGlmCi0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBzUkdC
Q29sb3JTcGFjZVJlZigpOwotfQotCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRHTENHLmNwcAkocmV2
aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0R0xDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzMiw3ICs1MzIsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwYWludFRvQ2FuCiAgICAgfSkpOwogCiAgICAg
YXV0byBpbWFnZVNpemUgPSBwaXhlbEJ1ZmZlci5zaXplKCk7Ci0gICAgYXV0byBpbWFnZSA9IE5h
dGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgp
LCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCksIGNhY2hl
ZENHQ29sb3JTcGFjZShwaXhlbEJ1ZmZlci5mb3JtYXQoKS5jb2xvclNwYWNlKSwgYml0bWFwSW5m
bywgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVs
dCkpKTsKKyAgICBhdXRvIGltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHSW1h
Z2VDcmVhdGUoaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIDQg
KiBpbWFnZVNpemUud2lkdGgoKSwgcGl4ZWxCdWZmZXIuZm9ybWF0KCkuY29sb3JTcGFjZS5wbGF0
Zm9ybUNvbG9yU3BhY2UoKSwgYml0bWFwSW5mbywgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxz
ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpKTsKIAogICAgIC8vIENTUyBzdHlsaW5nIG1h
eSBjYXVzZSB0aGUgY2FudmFzJ3MgY29udGVudCB0byBiZSByZXNpemVkIG9uCiAgICAgLy8gdGhl
IHBhZ2UuIEdvIGJhY2sgdG8gdGhlIENhbnZhcyB0byBmaWd1cmUgb3V0IHRoZSBjb3JyZWN0Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1
cmZhY2VQb29sLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2lmIEhBVkUoSU9TVVJGQUNFKQogCisjaW5jbHVkZSAiRGVzdGluYXRpb25D
b2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbmNsdWRlIDxD
b3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CkBAIC01OSw3ICs2MCw3IEBAIElPU3VyZmFjZVBvb2wmIElPU3VyZmFjZVBvb2w6OnNoYXJl
ZFBvb2wKICAgICByZXR1cm4gcG9vbDsKIH0KIAotc3RhdGljIGJvb2wgc3VyZmFjZU1hdGNoZXNQ
YXJhbWV0ZXJzKElPU3VyZmFjZSYgc3VyZmFjZSwgSW50U2l6ZSByZXF1ZXN0ZWRTaXplLCBDR0Nv
bG9yU3BhY2VSZWYgY29sb3JTcGFjZSwgSU9TdXJmYWNlOjpGb3JtYXQgZm9ybWF0KQorc3RhdGlj
IGJvb2wgc3VyZmFjZU1hdGNoZXNQYXJhbWV0ZXJzKElPU3VyZmFjZSYgc3VyZmFjZSwgSW50U2l6
ZSByZXF1ZXN0ZWRTaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2Us
IElPU3VyZmFjZTo6Rm9ybWF0IGZvcm1hdCkKIHsKICAgICBpZiAoZm9ybWF0ICE9IHN1cmZhY2Uu
Zm9ybWF0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwMiw3ICsxMDMsNyBAQCB2b2lk
IElPU3VyZmFjZVBvb2w6OmRpZFVzZVN1cmZhY2VPZlNpemUoCiAgICAgbV9zaXplc0luUHJ1bmVP
cmRlci5hcHBlbmQoc2l6ZSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3Vy
ZmFjZVBvb2w6OnRha2VTdXJmYWNlKEludFNpemUgc2l6ZSwgQ0dDb2xvclNwYWNlUmVmIGNvbG9y
U3BhY2UsIElPU3VyZmFjZTo6Rm9ybWF0IGZvcm1hdCkKK3N0ZDo6dW5pcXVlX3B0cjxJT1N1cmZh
Y2U+IElPU3VyZmFjZVBvb2w6OnRha2VTdXJmYWNlKEludFNpemUgc2l6ZSwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBJT1N1cmZhY2U6OkZvcm1hdCBmb3JtYXQpCiB7
CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIENhY2hlZFN1cmZhY2VNYXA6Oml0
ZXJhdG9yIG1hcEl0ZXIgPSBtX2NhY2hlZFN1cmZhY2VzLmZpbmQoc2l6ZSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5o
CShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JT1N1cmZhY2VQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDggQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBEZXN0aW5hdGF0aW9uQ29sb3JTcGFjZTsKKwogY2xh
c3MgSU9TdXJmYWNlUG9vbCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSU9TdXJmYWNlUG9v
bCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00Nyw3ICs0OSw3IEBAIGNsYXNz
IElPU3VyZmFjZVBvb2wgewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJT1N1
cmZhY2VQb29sJiBzaGFyZWRQb29sKCk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNl
PiB0YWtlU3VyZmFjZShJbnRTaXplLCBDR0NvbG9yU3BhY2VSZWYsIElPU3VyZmFjZTo6Rm9ybWF0
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiB0YWtlU3VyZmFjZShJbnRTaXplLCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBJT1N1cmZhY2U6OkZvcm1hdCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBhZGRTdXJmYWNlKHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+KTsK
IAogICAgIHZvaWQgZGlzY2FyZEFsbFN1cmZhY2VzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tl
bmQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw3
ICsxNzQsNyBAQCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXJDR0JhY2tlCiAgICAg
ICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBiZSB1c2luZyB0aGUgc2FtZSBsb2dpYyBhcyBJbWFn
ZUJ1ZmZlclV0aWxpdGllc0NHPwogCiAgICAgICAgIC8vIEpQRUdzIGRvbid0IGhhdmUgYW4gYWxw
aGEgY2hhbm5lbCwgc28gd2UgaGF2ZSB0byBtYW51YWxseSBjb21wb3NpdGUgb24gdG9wIG9mIGJs
YWNrLgotICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQiB9OworICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBo
YVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXIg
PSBnZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIGxvZ2ljYWxSZWN0KCkpOwogICAgICAgICBpZiAoIXBp
eGVsQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTIsNyArMTkyLDcg
QEAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IEltYWdlQnVmZmVyQ0dCYWNrZQogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgYXV0byBpbWFnZVNpemUgPSBwaXhlbEJ1ZmZlci0+
c2l6ZSgpOwotICAgICAgICByZXR1cm4gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53
aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCks
IGNhY2hlZENHQ29sb3JTcGFjZShwaXhlbEJ1ZmZlci0+Zm9ybWF0KCkuY29sb3JTcGFjZSksIGtD
R0JpdG1hcEJ5dGVPcmRlckRlZmF1bHQgfCBrQ0dJbWFnZUFscGhhTm9uZVNraXBMYXN0LCBkYXRh
UHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdENGKENHSW1hZ2VDcmVhdGUoaW1hZ2VTaXplLndpZHRoKCksIGlt
YWdlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIDQgKiBpbWFnZVNpemUud2lkdGgoKSwgcGl4ZWxCdWZm
ZXItPmZvcm1hdCgpLmNvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCksIGtDR0JpdG1hcEJ5
dGVPcmRlckRlZmF1bHQgfCBrQ0dJbWFnZUFscGhhTm9uZVNraXBMYXN0LCBkYXRhUHJvdmlkZXIu
Z2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CiAgICAgfQogCiAg
ICAgaWYgKHJlc29sdXRpb25TY2FsZSgpID09IDEgfHwgcHJlc2VydmVSZXNvbHV0aW9uID09IFBy
ZXNlcnZlUmVzb2x1dGlvbjo6WWVzKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYyLDcgKzYyLDcgQEAgc2l6ZV90IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjYWxj
dQogICAgIHJldHVybiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNhbGN1bGF0ZU1lbW9yeUNvc3QoYmFj
a2VuZFNpemUsIGNhbGN1bGF0ZUJ5dGVzUGVyUm93KGJhY2tlbmRTaXplKSk7CiB9CiAKLXN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBDR0NvbG9yU3Bh
Y2VSZWYgY2dDb2xvclNwYWNlLCBjb25zdCBIb3N0V2luZG93KikKK3N0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNy
ZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KikKIHsK
ICAgICBBU1NFUlQocGFyYW1ldGVycy5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgp
OwogCkBAIC04MSw3ICs4MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2UKICAgICBzaXplX3QgbnVtQnl0ZXMgPSBiYWNrZW5kU2l6ZS5oZWlnaHQoKSAqIGJ5dGVz
UGVyUm93OwogICAgIHZlcmlmeUltYWdlQnVmZmVySXNCaWdFbm91Z2goZGF0YSwgbnVtQnl0ZXMp
OwogCi0gICAgYXV0byBjZ0NvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShk
YXRhLCBiYWNrZW5kU2l6ZS53aWR0aCgpLCBiYWNrZW5kU2l6ZS5oZWlnaHQoKSwgOCwgYnl0ZXNQ
ZXJSb3csIGNnQ29sb3JTcGFjZSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtD
R0JpdG1hcEJ5dGVPcmRlcjMySG9zdCkpOworICAgIGF1dG8gY2dDb250ZXh0ID0gYWRvcHRDRihD
R0JpdG1hcENvbnRleHRDcmVhdGUoZGF0YSwgYmFja2VuZFNpemUud2lkdGgoKSwgYmFja2VuZFNp
emUuaGVpZ2h0KCksIDgsIGJ5dGVzUGVyUm93LCBwYXJhbWV0ZXJzLmNvbG9yU3BhY2UucGxhdGZv
cm1Db2xvclNwYWNlKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRt
YXBCeXRlT3JkZXIzMkhvc3QpKTsKICAgICBpZiAoIWNnQ29udGV4dCkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKQEAgLTk2LDE1ICs5NiwxNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlCiAKIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFj
a2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgaWYg
KGF1dG8gY2dDb2xvclNwYWNlID0gY29udGV4dC5oYXNQbGF0Zm9ybUNvbnRleHQoKSA/IGNvbnRl
eHRDb2xvclNwYWNlKGNvbnRleHQpIDogbnVsbHB0cikKLSAgICAgICAgcmV0dXJuIEltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgY2dDb2xvclNwYWNlLmdldCgp
LCBudWxscHRyKTsKKyAgICBpZiAoYXV0byBjZ0NvbG9yU3BhY2UgPSBjb250ZXh0Lmhhc1BsYXRm
b3JtQ29udGV4dCgpID8gY29udGV4dENvbG9yU3BhY2UoY29udGV4dCkgOiBudWxscHRyKSB7Cisg
ICAgICAgIGF1dG8gb3ZlcnJpZGVQYXJhbWV0ZXJzID0gcGFyYW1ldGVyczsKKyAgICAgICAgb3Zl
cnJpZGVQYXJhbWV0ZXJzLmNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgeyBjZ0Nv
bG9yU3BhY2UgfTsKIAotICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3Jl
YXRlKHBhcmFtZXRlcnMsIG51bGxwdHIpOwotfQorICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXJD
R0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShvdmVycmlkZVBhcmFtZXRlcnMsIG51bGxwdHIpOworICAg
IH0KIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMs
IGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCi17Ci0gICAgcmV0dXJuIEltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgY2FjaGVkQ0dDb2xvclNwYWNlKHBh
cmFtZXRlcnMuY29sb3JTcGFjZSksIGhvc3RXaW5kb3cpOworICAgIHJldHVybiBJbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIG51bGxwdHIpOwogfQogCiBJbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQoY29uc3Qg
UGFyYW1ldGVycyYgcGFyYW1ldGVycywgdm9pZCogZGF0YSwgUmV0YWluUHRyPENHRGF0YVByb3Zp
ZGVyUmVmPiYmIGRhdGFQcm92aWRlciwgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4m
JiBjb250ZXh0KQpAQCAtMTQ2LDcgKzE0NSw3IEBAIFJlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VC
dWZmZXJDR0JpdG1hcEIKICAgICAgICAgYXV0byBiYWNrZW5kU2l6ZSA9IHRoaXMtPmJhY2tlbmRT
aXplKCk7CiAgICAgICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKGFkb3B0Q0YoQ0dJbWFn
ZUNyZWF0ZSgKICAgICAgICAgICAgIGJhY2tlbmRTaXplLndpZHRoKCksIGJhY2tlbmRTaXplLmhl
aWdodCgpLCA4LCAzMiwgYnl0ZXNQZXJSb3coKSwKLSAgICAgICAgICAgIGNhY2hlZENHQ29sb3JT
cGFjZShjb2xvclNwYWNlKCkpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NH
Qml0bWFwQnl0ZU9yZGVyMzJIb3N0LCBtX2RhdGFQcm92aWRlci5nZXQoKSwKKyAgICAgICAgICAg
IGNvbG9yU3BhY2UoKS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRp
cGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCwgbV9kYXRhUHJvdmlkZXIuZ2V0
KCksCiAgICAgICAgICAgICAwLCB0cnVlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSkpOwog
ICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oCShyZXZpc2lvbiAy
Nzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw4ICszOSw5IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSW50U2l6ZSBjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUoY29uc3QgUGFy
YW1ldGVycyYpOwogICAgIHN0YXRpYyBzaXplX3QgY2FsY3VsYXRlTWVtb3J5Q29zdChjb25zdCBQ
YXJhbWV0ZXJzJik7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIENHQ29sb3JTcGFjZVJlZiwg
Y29uc3QgSG9zdFdpbmRvdyopOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgSG9zdFdp
bmRvdyopOworCisgICAgLy8gRklYTUU6IFJlbmFtZSB0byBjcmVhdGVVc2luZ0NvbG9yU3BhY2VP
ZkdyYXBoaWNzQ29udGV4dCgpIChvciBzb21ldGhpbmcgbGlrZSB0aGF0KS4KICAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3Qg
UGFyYW1ldGVycyYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTgxLDEzICs4MSwxMyBAQCBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBJ
bWFnZUJ1ZmZlcklPCiAgICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjb250ZXh0Q29s
b3JTcGFjZShjb250ZXh0KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFy
YW1ldGVycyYgcGFyYW1ldGVycywgQ0dDb2xvclNwYWNlUmVmIGNnQ29sb3JTcGFjZSwgY29uc3Qg
SG9zdFdpbmRvdyogaG9zdFdpbmRvdykKK3N0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7CiAg
ICAgSW50U2l6ZSBiYWNrZW5kU2l6ZSA9IGNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShwYXJhbWV0
ZXJzKTsKICAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKGJhY2tlbmRTaXpl
LCBiYWNrZW5kU2l6ZSwgY2dDb2xvclNwYWNlLCBJT1N1cmZhY2U6OmZvcm1hdEZvclBpeGVsRm9y
bWF0KHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQpKTsKKyAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZh
Y2U6OmNyZWF0ZShiYWNrZW5kU2l6ZSwgYmFja2VuZFNpemUsIHBhcmFtZXRlcnMuY29sb3JTcGFj
ZSwgSU9TdXJmYWNlOjpmb3JtYXRGb3JQaXhlbEZvcm1hdChwYXJhbWV0ZXJzLnBpeGVsRm9ybWF0
KSk7CiAgICAgaWYgKCFzdXJmYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTAy
LDE1ICsxMDIsMTQgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFjawog
CiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBj
b25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgaWYgKGF1dG8gY2dDb2xvclNw
YWNlID0gY29udGV4dC5oYXNQbGF0Zm9ybUNvbnRleHQoKSA/IGNvbnRleHRDb2xvclNwYWNlKGNv
bnRleHQpIDogbnVsbHB0cikKLSAgICAgICAgcmV0dXJuIEltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIGNnQ29sb3JTcGFjZS5nZXQoKSwgbnVsbHB0cik7Cisg
ICAgaWYgKGF1dG8gY2dDb2xvclNwYWNlID0gY29udGV4dC5oYXNQbGF0Zm9ybUNvbnRleHQoKSA/
IGNvbnRleHRDb2xvclNwYWNlKGNvbnRleHQpIDogbnVsbHB0cikgeworICAgICAgICBhdXRvIG92
ZXJyaWRlUGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7CisgICAgICAgIG92ZXJyaWRlUGFyYW1ldGVy
cy5jb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlIHsgY2dDb2xvclNwYWNlIH07CiAK
LSAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVy
cywgbnVsbHB0cik7Ci19CisgICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQ6OmNyZWF0ZShvdmVycmlkZVBhcmFtZXRlcnMsIG51bGxwdHIpOworICAgIH0KIAotc3RkOjp1
bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgSG9z
dFdpbmRvdyogaG9zdFdpbmRvdykKLXsKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgY2FjaGVkQ0dDb2xvclNwYWNlKHBhcmFtZXRlcnMu
Y29sb3JTcGFjZSksIGhvc3RXaW5kb3cpOworICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBudWxscHRyKTsKIH0KIAogSW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQoY29uc3QgUGFyYW1l
dGVycyYgcGFyYW1ldGVycywgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4mJiBzdXJmYWNlKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw4ICs0Miw4IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgc2l6ZV90IGNhbGN1bGF0ZU1lbW9yeUNvc3QoY29uc3QgUGFyYW1ldGVycyYpOwog
ICAgIHN0YXRpYyBzaXplX3QgY2FsY3VsYXRlRXh0ZXJuYWxNZW1vcnlDb3N0KGNvbnN0IFBhcmFt
ZXRlcnMmKTsKICAgICAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBDR0NvbG9yU3BhY2VSZWYs
IGNvbnN0IEhvc3RXaW5kb3cqKTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBIb3N0
V2luZG93Kik7CisgICAgLy8gRklYTUU6IFJlbmFtZSB0byBjcmVhdGVVc2luZ0NvbG9yU3BhY2VP
ZkdyYXBoaWNzQ29udGV4dCgpIChvciBzb21ldGhpbmcgbGlrZSB0aGF0KS4KICAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gY3JlYXRlKGNvbnN0
IFBhcmFtZXRlcnMmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKIAogICAgIEltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiwgc3RkOjp1bmlxdWVfcHRyPElPU3Vy
ZmFjZT4mJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlclV0aWxpdGllc0NHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNwcAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJV
dGlsaXRpZXNDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Nyw3ICsxNzcsNyBAQCBzdGF0aWMg
Ym9vbCBlbmNvZGUoY29uc3QgUGl4ZWxCdWZmZXImIHNvCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgYXV0byBpbWFnZVNpemUgPSBzb3VyY2Uuc2l6ZSgpOwotICAgIGF1dG8gaW1hZ2Ug
PSBhZG9wdENGKENHSW1hZ2VDcmVhdGUoaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWln
aHQoKSwgOCwgMzIsIDQgKiBpbWFnZVNpemUud2lkdGgoKSwgY2FjaGVkQ0dDb2xvclNwYWNlKHNv
dXJjZS5mb3JtYXQoKS5jb2xvclNwYWNlKSwga0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8IGRh
dGFBbHBoYUluZm8sIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0lu
dGVudERlZmF1bHQpKTsKKyAgICBhdXRvIGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGlt
YWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCA0ICogaW1hZ2VTaXpl
LndpZHRoKCksIHNvdXJjZS5mb3JtYXQoKS5jb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgp
LCBrQ0dCaXRtYXBCeXRlT3JkZXJEZWZhdWx0IHwgZGF0YUFscGhhSW5mbywgZGF0YVByb3ZpZGVy
LmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwogCiAgICAgcmV0
dXJuIGVuY29kZShpbWFnZS5nZXQoKSwgZGVzdGluYXRpb25VVEkuZ2V0KCksIHF1YWxpdHksIGZ1
bmN0aW9uKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2Nv
YS5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbQkod29ya2luZyBjb3B5KQpA
QCAtNTcxLDcgKzU3MSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVE
aXMKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlC
dWZmZXJCYWNraW5nKCkKIHsKICAgICBBU1NFUlQoIWdldEludGVybmFsRnJhbWVidWZmZXJTaXpl
KCkuaXNFbXB0eSgpKTsKLSAgICBhdXRvIGJhY2tpbmcgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNy
ZWF0ZShnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLCBXZWJDb3JlOjpzUkdCQ29sb3JTcGFj
ZVJlZigpKTsKKyAgICBhdXRvIGJhY2tpbmcgPSBJT1N1cmZhY2U6OmNyZWF0ZShnZXRJbnRlcm5h
bEZyYW1lYnVmZmVyU2l6ZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAg
aWYgKCFiYWNraW5nKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1
cmZhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsOSArMjcsMTAgQEAKIAogI2lmIEhBVkUoSU9T
VVJGQUNFKQogCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCisjaW5jbHVkZSAi
SW50U2l6ZS5oIgogI2luY2x1ZGUgPG9iamMvb2JqYy5oPgogI2luY2x1ZGUgPHBhbC9zcGkvY29j
b2EvSU9TdXJmYWNlU1BJLmg+Ci0jaW5jbHVkZSAiSW50U2l6ZS5oIgogCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKSAmJiAhUExBVEZPUk0oSU9TX0ZB
TUlMWV9TSU1VTEFUT1IpCiAjZGVmaW5lIEhBVkVfSU9TVVJGQUNFX1JHQjEwIDEKQEAgLTQ2LDEw
ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0Owog
Y2xhc3MgSG9zdFdpbmRvdzsKLSAgICAKLSNpZiBVU0UoSU9TVVJGQUNFX0NBTlZBU19CQUNLSU5H
X1NUT1JFKQogY2xhc3MgSW1hZ2VCdWZmZXI7Ci0jZW5kaWYKIAogZW51bSBjbGFzcyBQaXhlbEZv
cm1hdCA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFZvbGF0aWxpdHlTdGF0ZSA6IHVpbnQ4X3Q7CkBA
IC0xMDEsMTAgKzk5LDEwIEBAIHB1YmxpYzoKICAgICAgICAgdWludDMyX3QgbV9mbGFnczsKICAg
ICB9OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZh
Y2U+IGNyZWF0ZShJbnRTaXplLCBDR0NvbG9yU3BhY2VSZWYsIEZvcm1hdCA9IEZvcm1hdDo6QkdS
QSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+
IGNyZWF0ZShJbnRTaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBDR0NvbG9yU3BhY2VSZWYsIEZv
cm1hdCA9IEZvcm1hdDo6QkdSQSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZUZyb21TZW5kUmlnaHQoY29uc3QgV1RGOjpNYWNoU2Vu
ZFJpZ2h0JiYsIENHQ29sb3JTcGFjZVJlZik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZUZyb21TdXJmYWNlKElPU3VyZmFjZVJlZiwg
Q0dDb2xvclNwYWNlUmVmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPElPU3VyZmFjZT4gY3JlYXRlKEludFNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYsIEZvcm1hdCA9IEZvcm1hdDo6QkdSQSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZShJbnRTaXplLCBJbnRTaXplIGNvbnRleHRT
aXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGb3JtYXQgPSBGb3JtYXQ6OkJHUkEp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBj
cmVhdGVGcm9tU2VuZFJpZ2h0KGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYmLCBjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlRnJvbVN1cmZhY2UoSU9TdXJmYWNlUmVmLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlRnJvbUltYWdlKENHSW1hZ2VSZWYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGVGcm9t
UGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZik7CiAgICAgCkBAIC0xNDYsNyArMTQ0LDcgQEAg
cHVibGljOgogICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAg
IHNpemVfdCB0b3RhbEJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbEJ5dGVzOyB9CiAKLSAg
ICBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JTcGFj
ZS5nZXQoKTsgfQorICAgIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY29sb3JTcGFjZTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIEZvcm1h
dCBmb3JtYXQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBJT1N1cmZhY2VJRCBzdXJmYWNl
SUQoKSBjb25zdDsKICAgICBzaXplX3QgYnl0ZXNQZXJSb3coKSBjb25zdDsKQEAgLTE2OSwxNCAr
MTY3LDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIG1pZ3JhdGVDb2xvclNwYWNlVG9Qcm9wZXJ0aWVz
KCk7CiAKIHByaXZhdGU6Ci0gICAgSU9TdXJmYWNlKEludFNpemUsIEludFNpemUgY29udGV4dFNp
emUsIENHQ29sb3JTcGFjZVJlZiwgRm9ybWF0LCBib29sJiBzdWNjZXNzKTsKLSAgICBJT1N1cmZh
Y2UoSU9TdXJmYWNlUmVmLCBDR0NvbG9yU3BhY2VSZWYpOworICAgIElPU3VyZmFjZShJbnRTaXpl
LCBJbnRTaXplIGNvbnRleHRTaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGb3Jt
YXQsIGJvb2wmIHN1Y2Nlc3MpOworICAgIElPU3VyZmFjZShJT1N1cmZhY2VSZWYsIGNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1
cmZhY2U+IHN1cmZhY2VGcm9tUG9vbChJbnRTaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBDR0Nv
bG9yU3BhY2VSZWYsIEZvcm1hdCk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZh
Y2U+IHN1cmZhY2VGcm9tUG9vbChJbnRTaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGb3JtYXQpOwogICAgIEludFNpemUgY29udGV4dFNpemUo
KSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRTaXplOyB9CiAgICAgdm9pZCBzZXRDb250ZXh0U2l6
ZShJbnRTaXplKTsKIAotICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IG1fY29sb3JTcGFj
ZTsKKyAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgbV9jb2xvclNwYWNlOwogICAgIEludFNpemUg
bV9zaXplOwogICAgIEludFNpemUgbV9jb250ZXh0U2l6ZTsKICAgICBzaXplX3QgbV90b3RhbEJ5
dGVzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJm
YWNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0lPU3VyZmFjZS5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3
ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIklPU3VyZmFjZS5oIgogCi0j
aW1wb3J0ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgorI2ltcG9ydCAiRGVzdGluYXRpb25Db2xvclNw
YWNlLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2ltcG9ydCAiR3JhcGhpY3ND
b250ZXh0R0wuaCIKICNpbXBvcnQgIkhvc3RXaW5kb3cuaCIKQEAgLTQxLDkgKzQxLDExIEBACiAj
aW1wb3J0IDx3dGYvTWF0aEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3RleHQvVGV4dFN0cmVhbS5o
PgogCisjaW1wb3J0ICJDb3JlVmlkZW9Tb2Z0TGluay5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OnN1cmZhY2VG
cm9tUG9vbChJbnRTaXplIHNpemUsIEludFNpemUgY29udGV4dFNpemUsIENHQ29sb3JTcGFjZVJl
ZiBjb2xvclNwYWNlLCBGb3JtYXQgcGl4ZWxGb3JtYXQpCitpbmxpbmUgc3RkOjp1bmlxdWVfcHRy
PElPU3VyZmFjZT4gSU9TdXJmYWNlOjpzdXJmYWNlRnJvbVBvb2woSW50U2l6ZSBzaXplLCBJbnRT
aXplIGNvbnRleHRTaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2Us
IEZvcm1hdCBwaXhlbEZvcm1hdCkKIHsKICAgICBhdXRvIGNhY2hlZFN1cmZhY2UgPSBJT1N1cmZh
Y2VQb29sOjpzaGFyZWRQb29sKCkudGFrZVN1cmZhY2Uoc2l6ZSwgY29sb3JTcGFjZSwgcGl4ZWxG
b3JtYXQpOwogICAgIGlmICghY2FjaGVkU3VyZmFjZSkKQEAgLTUzLDEyICs1NSwxMiBAQCBpbmxp
bmUgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmCiAgICAgcmV0dXJuIGNhY2hlZFN1
cmZhY2U7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6Y3JlYXRl
KEludFNpemUgc2l6ZSwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UsIEZvcm1hdCBwaXhlbEZv
cm1hdCkKK3N0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6Y3JlYXRlKEludFNp
emUgc2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGb3JtYXQg
cGl4ZWxGb3JtYXQpCiB7CiAgICAgcmV0dXJuIElPU3VyZmFjZTo6Y3JlYXRlKHNpemUsIHNpemUs
IGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFj
ZT4gSU9TdXJmYWNlOjpjcmVhdGUoSW50U2l6ZSBzaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBD
R0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwgRm9ybWF0IHBpeGVsRm9ybWF0KQorc3RkOjp1bmlx
dWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGUoSW50U2l6ZSBzaXplLCBJbnRTaXpl
IGNvbnRleHRTaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIEZv
cm1hdCBwaXhlbEZvcm1hdCkKIHsKICAgICBpZiAoYXV0byBjYWNoZWRTdXJmYWNlID0gc3VyZmFj
ZUZyb21Qb29sKHNpemUsIGNvbnRleHRTaXplLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCkpIHsK
ICAgICAgICAgTE9HX1dJVEhfU1RSRUFNKElPU3VyZmFjZSwgc3RyZWFtIDw8ICJJT1N1cmZhY2U6
OmNyZWF0ZSB0b29rIGZyb20gcG9vbDogIiA8PCAqY2FjaGVkU3VyZmFjZSk7CkBAIC03NSwxMyAr
NzcsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcgogICAgIHJl
dHVybiBzdXJmYWNlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6
OmNyZWF0ZUZyb21TZW5kUmlnaHQoY29uc3QgTWFjaFNlbmRSaWdodCYmIHNlbmRSaWdodCwgQ0dD
b2xvclNwYWNlUmVmIGNvbG9yU3BhY2UpCitzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1
cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoY29uc3QgTWFjaFNlbmRSaWdodCYmIHNlbmRSaWdo
dCwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQogewogICAgIGF1dG8g
c3VyZmFjZSA9IGFkb3B0Q0YoSU9TdXJmYWNlTG9va3VwRnJvbU1hY2hQb3J0KHNlbmRSaWdodC5z
ZW5kUmlnaHQoKSkpOwogICAgIHJldHVybiBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TdXJmYWNlKHN1
cmZhY2UuZ2V0KCksIGNvbG9yU3BhY2UpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNl
PiBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TdXJmYWNlKElPU3VyZmFjZVJlZiBzdXJmYWNlLCBDR0Nv
bG9yU3BhY2VSZWYgY29sb3JTcGFjZSkKK3N0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3Vy
ZmFjZTo6Y3JlYXRlRnJvbVN1cmZhY2UoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkKIHsKICAgICByZXR1cm4gc3RkOjp1bmlxdWVf
cHRyPElPU3VyZmFjZT4obmV3IElPU3VyZmFjZShzdXJmYWNlLCBjb2xvclNwYWNlKSk7CiB9CkBA
IC05NCw3ICs5Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6Y3IK
ICAgICBzaXplX3Qgd2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoaW1hZ2UpOwogICAgIHNpemVfdCBo
ZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGltYWdlKTsKIAotICAgIGF1dG8gc3VyZmFjZSA9IElP
U3VyZmFjZTo6Y3JlYXRlKEludFNpemUod2lkdGgsIGhlaWdodCksIENHSW1hZ2VHZXRDb2xvclNw
YWNlKGltYWdlKSk7CisgICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoSW50U2l6
ZSh3aWR0aCwgaGVpZ2h0KSwgRGVzdGluYXRpb25Db2xvclNwYWNlIHsgQ0dJbWFnZUdldENvbG9y
U3BhY2UoaW1hZ2UpIH0pOwogICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgYXV0byBzdXJmYWNlQ29udGV4dCA9IHN1cmZhY2UtPmVuc3VyZVBsYXRmb3JtQ29u
dGV4dCgpOwpAQCAtMTE2LDcgKzExOCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElP
U3VyZmFjZTo6Y3IKICAgICBpZiAoIWNvbG9yU3BhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgcmV0dXJuIGNyZWF0ZUZyb21TdXJmYWNlKHN1cmZhY2UsIGNvbG9yU3BhY2UpOwor
ICAgIHJldHVybiBjcmVhdGVGcm9tU3VyZmFjZShzdXJmYWNlLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UgeyBjb2xvclNwYWNlIH0pOwogfQogCiB2b2lkIElPU3VyZmFjZTo6bW92ZVRvUG9vbChzdGQ6
OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiYmIHN1cmZhY2UpCkBAIC0xOTYsNyArMTk4LDcgQEAgc3Rh
dGljIE5TRGljdGlvbmFyeSAqb3B0aW9uc0ZvcjMyQml0U3VyZgogCiB9CiAKLUlPU3VyZmFjZTo6
SU9TdXJmYWNlKEludFNpemUgc2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xvclNwYWNl
UmVmIGNvbG9yU3BhY2UsIEZvcm1hdCBmb3JtYXQsIGJvb2wmIHN1Y2Nlc3MpCitJT1N1cmZhY2U6
OklPU3VyZmFjZShJbnRTaXplIHNpemUsIEludFNpemUgY29udGV4dFNpemUsIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgRm9ybWF0IGZvcm1hdCwgYm9vbCYgc3VjY2Vz
cykKICAgICA6IG1fY29sb3JTcGFjZShjb2xvclNwYWNlKQogICAgICwgbV9zaXplKHNpemUpCiAg
ICAgLCBtX2NvbnRleHRTaXplKGNvbnRleHRTaXplKQpAQCAtMjMyLDcgKzIzNCw3IEBAIElPU3Vy
ZmFjZTo6SU9TdXJmYWNlKEludFNpemUgc2l6ZSwgSW50U2kKICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoTGF5ZXJzLCAiSU9TdXJmYWNlIGNyZWF0aW9uIGZhaWxlZCBmb3Igc2l6ZTogKCVkICVk
KSBhbmQgZm9ybWF0OiAoJWQpIiwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCBmb3JtYXQp
OwogfQogCi1JT1N1cmZhY2U6OklPU3VyZmFjZShJT1N1cmZhY2VSZWYgc3VyZmFjZSwgQ0dDb2xv
clNwYWNlUmVmIGNvbG9yU3BhY2UpCitJT1N1cmZhY2U6OklPU3VyZmFjZShJT1N1cmZhY2VSZWYg
c3VyZmFjZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQogICAgIDog
bV9jb2xvclNwYWNlKGNvbG9yU3BhY2UpCiAgICAgLCBtX3N1cmZhY2Uoc3VyZmFjZSkKIHsKQEAg
LTM0Nyw3ICszNDksNyBAQCBDR0NvbnRleHRSZWYgSU9TdXJmYWNlOjplbnN1cmVQbGF0Zm9ybUNv
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKLSAgICBtX2NnQ29udGV4dCA9IGFkb3B0Q0Yo
Q0dJT1N1cmZhY2VDb250ZXh0Q3JlYXRlKG1fc3VyZmFjZS5nZXQoKSwgbV9jb250ZXh0U2l6ZS53
aWR0aCgpLCBtX2NvbnRleHRTaXplLmhlaWdodCgpLCBiaXRzUGVyQ29tcG9uZW50LCBiaXRzUGVy
UGl4ZWwsIG1fY29sb3JTcGFjZS5nZXQoKSwgYml0bWFwSW5mbykpOworICAgIG1fY2dDb250ZXh0
ID0gYWRvcHRDRihDR0lPU3VyZmFjZUNvbnRleHRDcmVhdGUobV9zdXJmYWNlLmdldCgpLCBtX2Nv
bnRleHRTaXplLndpZHRoKCksIG1fY29udGV4dFNpemUuaGVpZ2h0KCksIGJpdHNQZXJDb21wb25l
bnQsIGJpdHNQZXJQaXhlbCwgbV9jb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBiaXRt
YXBJbmZvKSk7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKGF1dG8gZGlzcGxheU1hc2sg
PSBwcmltYXJ5T3BlbkdMRGlzcGxheU1hc2soKSkgewpAQCAtNTE1LDcgKzUxNyw3IEBAIHZvaWQg
SU9TdXJmYWNlOjpzZXRPd25lcnNoaXBJZGVudGl0eSh0YXMKIAogdm9pZCBJT1N1cmZhY2U6Om1p
Z3JhdGVDb2xvclNwYWNlVG9Qcm9wZXJ0aWVzKCkKIHsKLSAgICBhdXRvIGNvbG9yU3BhY2VQcm9w
ZXJ0aWVzID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDb3B5UHJvcGVydHlMaXN0KG1fY29sb3JTcGFj
ZS5nZXQoKSkpOworICAgIGF1dG8gY29sb3JTcGFjZVByb3BlcnRpZXMgPSBhZG9wdENGKENHQ29s
b3JTcGFjZUNvcHlQcm9wZXJ0eUxpc3QobV9jb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgp
KSk7CiAgICAgSU9TdXJmYWNlU2V0VmFsdWUobV9zdXJmYWNlLmdldCgpLCBrSU9TdXJmYWNlQ29s
b3JTcGFjZSwgY29sb3JTcGFjZVByb3BlcnRpZXMuZ2V0KCkpOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJD
b3JlSW1hZ2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCShyZXZpc2lvbiAy
Nzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmls
dGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4OSw3ICsy
ODksNyBAQCB2b2lkIEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpyZW5kCiAgICAgICAg
IHJldHVybjsKICAgICAKICAgICBhdXRvJiBzdXJmYWNlID0gZG93bmNhc3Q8QWNjZWxlcmF0ZWRJ
bWFnZUJ1ZmZlcj4oKm1fb3V0cHV0SW1hZ2VCdWZmZXIpLnN1cmZhY2UoKTsKLSAgICBbc2hhcmVk
Q0lDb250ZXh0KCkuZ2V0KCkgcmVuZGVyOiBtX291dHB1dEltYWdlLmdldCgpIHRvSU9TdXJmYWNl
OiBzdXJmYWNlLnN1cmZhY2UoKSBib3VuZHM6ZGVzdFJlY3QobGFzdEVmZmVjdCkgY29sb3JTcGFj
ZTpjYWNoZWRDR0NvbG9yU3BhY2UobGFzdEVmZmVjdC5yZXN1bHRDb2xvclNwYWNlKCkpXTsKKyAg
ICBbc2hhcmVkQ0lDb250ZXh0KCkuZ2V0KCkgcmVuZGVyOiBtX291dHB1dEltYWdlLmdldCgpIHRv
SU9TdXJmYWNlOiBzdXJmYWNlLnN1cmZhY2UoKSBib3VuZHM6ZGVzdFJlY3QobGFzdEVmZmVjdCkg
Y29sb3JTcGFjZTpsYXN0RWZmZWN0LnJlc3VsdENvbG9yU3BhY2UoKS5wbGF0Zm9ybUNvbG9yU3Bh
Y2UoKV07CiB9CiAgICAgCiBGbG9hdFJlY3QgRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6
OmRlc3RSZWN0KGNvbnN0IEZpbHRlckVmZmVjdCYgbGFzdEVmZmVjdCkgY29uc3QKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdElt
YWdlQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaAkocmV2aXNpb24gMjc3OTE5
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SW1hZ2VCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBjbGFz
cyBJbWFnZUJ1ZmZlciA6IHB1YmxpYyBDb25jcmV0ZUltYWdlCiAgICAgdXNpbmcgQmFzZUNvbmNy
ZXRlSW1hZ2VCdWZmZXI6OmJhc2VUcmFuc2Zvcm07CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgYXV0
byBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwg
Y29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKKyAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29u
c3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0
IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiAgICAgewogICAgICAgICByZXR1cm4gQmFzZUNvbmNy
ZXRlSW1hZ2VCdWZmZXI6OnRlbXBsYXRlIGNyZWF0ZTxJbWFnZUJ1ZmZlcj4oc2l6ZSwgcmVzb2x1
dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgaG9zdFdpbmRvdyk7CiAgICAgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbUJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODEsNyAr
MjgxLDcgQEAgdm9pZCBJdGVtSGFuZGxlOjpkZXN0cm95KCkKICAgICAgICAgZ2V0PEZpbGxSb3Vu
ZGVkUmVjdD4oKS5+RmlsbFJvdW5kZWRSZWN0KCk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNl
IEl0ZW1UeXBlOjpHZXRQaXhlbEJ1ZmZlcjoKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3RyaXZpYWxseV9kZXN0cnVjdGlibGU8R2V0UGl4ZWxCdWZmZXI+Ojp2YWx1ZSk7CisgICAgICAg
IGdldDxHZXRQaXhlbEJ1ZmZlcj4oKS5+R2V0UGl4ZWxCdWZmZXIoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIGNhc2UgSXRlbVR5cGU6OlB1dFBpeGVsQnVmZmVyOgogICAgICAgICBnZXQ8UHV0UGl4
ZWxCdWZmZXI+KCkuflB1dFBpeGVsQnVmZmVyKCk7CkBAIC0zMDcsNyArMzA3LDcgQEAgdm9pZCBJ
dGVtSGFuZGxlOjpkZXN0cm95KCkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAgICAgY2FzZSBJ
dGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzPjo6dmFsdWUpOworICAgICAgICBnZXQ8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCku
fkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKCk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNl
IEl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOgogICAgICAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxCZWdpblRyYW5zcGFyZW5jeUxheWVyPjo6
dmFsdWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODEs
NiArMjgxLDcgQEAgYm9vbCBpc0lubGluZUl0ZW0oSXRlbVR5cGUgdHlwZSkKICAgICAgKiBhbmQg
KDMpIGFsbCB0aGUgInN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0icyBpbnNpZGUg
dGhlIGluZGl2aWR1YWwgaXRlbSBjbGFzc2VzLiAqLwogCiAgICAgc3dpdGNoICh0eXBlKSB7Cisg
ICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6CiAgICAgY2FzZSBJ
dGVtVHlwZTo6Q2xpcE91dFRvUGF0aDoKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKICAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKQEAgLTI5NCw2ICsyOTUsNyBAQCBi
b29sIGlzSW5saW5lSXRlbShJdGVtVHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxS
ZWN0V2l0aEdyYWRpZW50OgogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRI
b2xlOgogICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKKyAgICBjYXNlIEl0ZW1U
eXBlOjpHZXRQaXhlbEJ1ZmZlcjoKICAgICBjYXNlIEl0ZW1UeXBlOjpQdXRQaXhlbEJ1ZmZlcjoK
ICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lRGFzaDoKICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRT
dGF0ZToKQEAgLTMxMCw3ICszMTIsNiBAQCBib29sIGlzSW5saW5lSXRlbShJdGVtVHlwZSB0eXBl
KQogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXA6CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dDoK
ICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIEl0ZW1UeXBl
OjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKICAgICBjYXNlIEl0ZW1UeXBlOjpFbmRDbGlw
VG9EcmF3aW5nQ29tbWFuZHM6CiAgICAgY2FzZSBJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06CiAg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjoKQEAgLTM1MSw3ICsz
NTIsNiBAQCBib29sIGlzSW5saW5lSXRlbShJdGVtVHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5
cGU6OlN0cm9rZVJlY3Q6CiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlTGluZToKICAgICBjYXNl
IEl0ZW1UeXBlOjpUcmFuc2xhdGU6Ci0gICAgY2FzZSBJdGVtVHlwZTo6R2V0UGl4ZWxCdWZmZXI6
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuaAkod29ya2luZyBjb3B5KQpAQCAtODgwLDIzICs4ODAsNTUgQEAgT3B0aW9uYWw8
Q2xpcFBhdGg+IENsaXBQYXRoOjpkZWNvZGUoRGVjbwogY2xhc3MgQmVnaW5DbGlwVG9EcmF3aW5n
Q29tbWFuZHMgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5
cGUgPSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM7Ci0gICAgc3RhdGljIGNv
bnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzSW5saW5lSXRlbSA9IGZhbHNlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0Ry
YXdpbmdJdGVtID0gZmFsc2U7CiAKLSAgICBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFj
ZSkKKyAgICBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpCiAgICAgICAg
IDogbV9kZXN0aW5hdGlvbihkZXN0aW5hdGlvbikKICAgICAgICAgLCBtX2NvbG9yU3BhY2UoY29s
b3JTcGFjZSkKICAgICB7CiAgICAgfQogCisgICAgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMo
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlJiYgY29s
b3JTcGFjZSkKKyAgICAgICAgOiBtX2Rlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKQorICAgICAgICAs
IG1fY29sb3JTcGFjZShXVEZNb3ZlKGNvbG9yU3BhY2UpKQorICAgIHsKKyAgICB9CisKICAgICBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlv
bjsgfQotICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1
cm4gbV9jb2xvclNwYWNlOyB9CisgICAgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xv
clNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvclNwYWNlOyB9CisKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
PiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0
aW9uOwogICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBtX2NvbG9yU3BhY2U7CiB9OwogCit0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX2Rlc3RpbmF0
aW9uOworICAgIGVuY29kZXIgPDwgbV9jb2xvclNwYWNlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPgorT3B0aW9uYWw8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+IEJlZ2luQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25h
bDxGbG9hdFJlY3Q+IGRlc3RpbmF0aW9uOworICAgIGRlY29kZXIgPj4gZGVzdGluYXRpb247Cisg
ICAgaWYgKCFkZXN0aW5hdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
IE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKKyAgICBkZWNvZGVy
ID4+IGNvbG9yU3BhY2U7CisgICAgaWYgKCFjb2xvclNwYWNlKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgcmV0dXJuIHt7ICpkZXN0aW5hdGlvbiwgV1RGTW92ZSgqY29sb3JT
cGFjZSkgfX07Cit9CisKIGNsYXNzIEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpFbmRD
bGlwVG9EcmF3aW5nQ29tbWFuZHM7CkBAIC0xOTM4LDIzICsxOTcwLDU1IEBAIHByaXZhdGU6CiBj
bGFzcyBHZXRQaXhlbEJ1ZmZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBJdGVt
VHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpHZXRQaXhlbEJ1ZmZlcjsKLSAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgaXNJbmxpbmVJdGVtID0gZmFsc2U7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJh
d2luZ0l0ZW0gPSBmYWxzZTsKIAotICAgIEdldFBpeGVsQnVmZmVyKFdlYkNvcmU6OlBpeGVsQnVm
ZmVyRm9ybWF0IG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCkK
KyAgICBHZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0
LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KQogICAgICAgICA6IG1fc3JjUmVjdChzcmNSZWN0KQog
ICAgICAgICAsIG1fb3V0cHV0Rm9ybWF0KG91dHB1dEZvcm1hdCkKICAgICB7CiAgICAgfQogCi0g
ICAgUGl4ZWxCdWZmZXJGb3JtYXQgb3V0cHV0Rm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9vdXRw
dXRGb3JtYXQ7IH0KKyAgICBHZXRQaXhlbEJ1ZmZlcihQaXhlbEJ1ZmZlckZvcm1hdCYmIG91dHB1
dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkKKyAgICAgICAgOiBtX3NyY1JlY3Qoc3Jj
UmVjdCkKKyAgICAgICAgLCBtX291dHB1dEZvcm1hdChXVEZNb3ZlKG91dHB1dEZvcm1hdCkpCisg
ICAgeworICAgIH0KKworICAgIGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQo
KSBjb25zdCB7IHJldHVybiBtX291dHB1dEZvcm1hdDsgfQogICAgIEludFJlY3Qgc3JjUmVjdCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3JjUmVjdDsgfQogCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBPcHRpb25hbDxHZXRQaXhlbEJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKKwog
cHJpdmF0ZToKICAgICBJbnRSZWN0IG1fc3JjUmVjdDsKICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBt
X291dHB1dEZvcm1hdDsKIH07CiAKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEdldFBp
eGVsQnVmZmVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVy
IDw8IG1fc3JjUmVjdDsKKyAgICBlbmNvZGVyIDw8IG1fb3V0cHV0Rm9ybWF0OworfQorCit0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8R2V0UGl4ZWxCdWZmZXI+IEdldFBpeGVsQnVm
ZmVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxJbnRSZWN0PiBz
cmNSZWN0OworICAgIGRlY29kZXIgPj4gc3JjUmVjdDsKKyAgICBpZiAoIXNyY1JlY3QpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlckZvcm1h
dD4gb3V0cHV0Rm9ybWF0OworICAgIGRlY29kZXIgPj4gb3V0cHV0Rm9ybWF0OworICAgIGlmICgh
b3V0cHV0Rm9ybWF0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJu
IHt7IFdURk1vdmUoKm91dHB1dEZvcm1hdCksICpzcmNSZWN0IH19OworfQorCiBjbGFzcyBQdXRQ
aXhlbEJ1ZmZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVt
VHlwZSA9IEl0ZW1UeXBlOjpQdXRQaXhlbEJ1ZmZlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDUyLDcgKzQ1Miw3IEBAIHZvaWQgUmVjb3JkZXI6OmNsaXBU
b0ltYWdlQnVmZmVyKEltYWdlQnUKICAgICBhcHBlbmQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KGltYWdl
QnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBkZXN0UmVjdCk7CiB9CiAKLXZv
aWQgUmVjb3JkZXI6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChH
cmFwaGljc0NvbnRleHQmKT4mJiBkcmF3aW5nRnVuY3Rpb24pCit2b2lkIFJlY29yZGVyOjpjbGlw
VG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29u
dGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikKIHsKICAgICBHcmFwaGljc0NvbnRleHQgbmVzdGVk
Q29udGV4dChbJl0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgIGF1dG8gaW5p
dGlhbENsaXAgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBkZXN0aW5hdGlvbi5zaXplKCkpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCShyZXZpc2lvbiAyNzc5
MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNyArMTQ3LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSkgb3ZlcnJpZGU7
CiAgICAgSW50UmVjdCBjbGlwQm91bmRzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGlwVG9JbWFn
ZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRl
OwotICAgIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRl
eHQmKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRnVu
Y3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKFZJ
REVPKQogICAgIHZvaWQgcGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5QYWludEZyYW1lRm9y
TWVkaWEoY29uc3QgTWVkaWFQbGF5ZXImKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVE
aXNwbGFjZW1lbnRNYXAuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjksNyArNjksNyBAQCBib29sIEZFRGlzcGxhY2VtZW50TWFwOjpzZXRTY2FsZShm
bG9hdCBzCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OnNl
dFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlKQordm9pZCBGRURpc3BsYWNl
bWVudE1hcDo6c2V0UmVzdWx0Q29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
KQogewogICAgIC8vIFNwZWM6IFRoZSAnY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzJyBwcm9w
ZXJ0eSBvbmx5IGFwcGxpZXMgdG8gdGhlICdpbjInIHNvdXJjZSBpbWFnZQogICAgIC8vIGFuZCBk
b2VzIG5vdCBhcHBseSB0byB0aGUgJ2luJyBzb3VyY2UgaW1hZ2UuIFRoZSAnaW4nIHNvdXJjZSBp
bWFnZSBtdXN0IHJlbWFpbiBpbiBpdHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmgJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVEaXNwbGFjZW1lbnRNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBw
dWJsaWM6CiAgICAgZmxvYXQgc2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3NjYWxlOyB9CiAgICAg
Ym9vbCBzZXRTY2FsZShmbG9hdCk7CiAKLSAgICB2b2lkIHNldFJlc3VsdENvbG9yU3BhY2UoRGVz
dGluYXRpb25Db2xvclNwYWNlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFJlc3VsdENvbG9yU3Bh
Y2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB0cmFu
c2Zvcm1SZXN1bHRDb2xvclNwYWNlKEZpbHRlckVmZmVjdCosIGNvbnN0IGludCkgb3ZlcnJpZGU7
CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFRmxvb2QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRmxvb2QuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDggKzQwLDggQEAgcHVibGljOgogI2lmICFVU0UoQ0cpCiAgICAgLy8gZmVGbG9vZCBkb2Vz
IG5vdCBwZXJmb3JtIGNvbG9yIGludGVycG9sYXRpb24gb2YgYW55IGtpbmQsIHNvIHRoZSByZXN1
bHQgaXMgYWx3YXlzIGluIHRoZSBjdXJyZW50CiAgICAgLy8gY29sb3Igc3BhY2UgcmVnYXJkbGVz
cyBvZiB0aGUgdmFsdWUgb2YgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzLgotICAgIHZvaWQg
c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpIG92ZXJyaWRlIHsg
RmlsdGVyRWZmZWN0OjpzZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQik7IH0KLSAgICB2b2lkIHNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNw
YWNlKSBvdmVycmlkZSB7IEZpbHRlckVmZmVjdDo6c2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IpOyB9CisgICAgdm9pZCBzZXRPcGVyYXRpbmdDb2xvclNwYWNl
KGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpIG92ZXJyaWRlIHsgRmlsdGVyRWZmZWN0Ojpz
ZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsgfQorICAg
IHZvaWQgc2V0UmVzdWx0Q29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKSBv
dmVycmlkZSB7IEZpbHRlckVmZmVjdDo6c2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSk7IH0KICNlbmRpZgogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAkocmV2
aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRVRpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgRkVUaWxl
OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgICAgICB0aWxlUmVjdC5zY2FsZShmaWx0ZXIu
ZmlsdGVyUmVzb2x1dGlvbigpLndpZHRoKCksIGZpbHRlci5maWx0ZXJSZXNvbHV0aW9uKCkuaGVp
Z2h0KCkpOwogICAgIH0KIAotICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIodGlsZVJlY3QsIHRpbGVSZWN0LCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IsIGZpbHRlcigpLnJlbmRlcmluZ01vZGUoKSk7CisgICAgYXV0byB0aWxlSW1h
Z2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcih0aWxlUmVjdCwgdGls
ZVJlY3QsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBmaWx0ZXIoKS5yZW5kZXJpbmdN
b2RlKCkpOwogICAgIGlmICghdGlsZUltYWdlKQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckVmZmVjdC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDM5LDcgKzQzOSw3IEBAIHN0YXRpYyB2b2lkIGNvcHlVbnByZW11bHRpcGx5aW5nQWxwaGEoY28K
ICNlbmRpZgogfQogCi1PcHRpb25hbDxQaXhlbEJ1ZmZlcj4gRmlsdGVyRWZmZWN0Ojpjb252ZXJ0
UGl4ZWxCdWZmZXJUb0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIHRhcmdldENvbG9y
U3BhY2UsIFBpeGVsQnVmZmVyJiBwaXhlbEJ1ZmZlcikKK09wdGlvbmFsPFBpeGVsQnVmZmVyPiBG
aWx0ZXJFZmZlY3Q6OmNvbnZlcnRQaXhlbEJ1ZmZlclRvQ29sb3JTcGFjZShjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmIHRhcmdldENvbG9yU3BhY2UsIFBpeGVsQnVmZmVyJiBwaXhlbEJ1ZmZl
cikKIHsKICAgICAvLyBGSVhNRTogVXNpbmcgYW4gSW1hZ2VCdWZmZXIgdG8gcGVyZm9ybSB0aGUg
Y29sb3Igc3BhY2UgY29udmVyc2lvbiBpcyB1bm5lY2Vzc2FyeS4gV2UgY2FuIGRvIGl0IGRpcmVj
dGx5LgogCkBAIC00NTQsNyArNDU0LDcgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEZpbHRlckVm
ZmVjdDo6Y29udgogICAgIHJldHVybiBjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UodGFy
Z2V0Q29sb3JTcGFjZSwgKmJ1ZmZlciwgZGVzdGluYXRpb25SZWN0LCBwaXhlbEJ1ZmZlci5mb3Jt
YXQoKS5hbHBoYUZvcm1hdCk7CiB9CiAKLU9wdGlvbmFsPFBpeGVsQnVmZmVyPiBGaWx0ZXJFZmZl
Y3Q6OmNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2Ug
dGFyZ2V0Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXImIGlucHV0QnVmZmVyLCBjb25zdCBJbnRSZWN0
JiByZWN0LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEFscGhhRm9ybWF0KQorT3B0aW9u
YWw8UGl4ZWxCdWZmZXI+IEZpbHRlckVmZmVjdDo6Y29udmVydEltYWdlQnVmZmVyVG9Db2xvclNw
YWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgdGFyZ2V0Q29sb3JTcGFjZSwgSW1hZ2VC
dWZmZXImIGlucHV0QnVmZmVyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIG91dHB1dEFscGhhRm9ybWF0KQogewogICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBiZSBk
b25lIG1vcmUgZGlyZWN0bHkgdXNpbmcgUGl4ZWxCdWZmZXJDb252ZXJzaW9uLgogCkBAIC00NzIs
NyArNDcyLDcgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEZpbHRlckVmZmVjdDo6Y29udgogICAg
IHJldHVybiBjb252ZXJ0ZWRCdWZmZXItPmdldFBpeGVsQnVmZmVyKGZvcm1hdCwgcmVjdCk7CiB9
CiAKLXZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5Q29udmVydGVkSW1hZ2VCdWZmZXJUb0Rlc3RpbmF0
aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNl
IGNvbG9yU3BhY2UsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5Q29udmVydGVkSW1hZ2VC
dWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9u
IG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgLy8gQ29udmVy
dHMgdGhlIGRhdGEgc3RvcmVkIGluIG1faW1hZ2VCdWZmZXJSZXN1bHQsIGFuZCBzYXZlIHRvIGRl
c3RpbmF0aW9uCiAgICAgYXV0byBjb252ZXJ0ZWRQaXhlbEJ1ZmZlciA9IGNvbnZlcnRJbWFnZUJ1
ZmZlclRvQ29sb3JTcGFjZShjb2xvclNwYWNlLCAqbV9pbWFnZUJ1ZmZlclJlc3VsdCwgeyBJbnRQ
b2ludCgpLCBtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSB9LCBvdXRwdXRGb3JtYXQpOwpAQCAt
NDgxLDcgKzQ4MSw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5Q29udmVydGVkSW1hZ2VCdWYK
ICAgICBjb3B5SW1hZ2VCeXRlcyhjb252ZXJ0ZWRQaXhlbEJ1ZmZlci0+ZGF0YSgpLCBkZXN0aW5h
dGlvbiwgZGVzdFJlY3QpOwogfQogCi12b2lkIEZpbHRlckVmZmVjdDo6Y29weUNvbnZlcnRlZFBp
eGVsQnVmZmVyVG9EZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIFBp
eGVsQnVmZmVyJiBwaXhlbEJ1ZmZlciwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2Us
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0
ZWRQaXhlbEJ1ZmZlclRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9u
LCBQaXhlbEJ1ZmZlciYgcGl4ZWxCdWZmZXIsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYg
Y29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgLy8gQ29udmVydHMg
dGhlIGRhdGEgc3RvcmVkIGluIG1fdW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQvbV9wcmVtdWx0aXBs
aWVkSW1hZ2VSZXN1bHQsCiAgICAgLy8gd2hpY2hldmVyIGlzbid0IG51bGwsIGFuZCBzYXZlIHRv
IGRlc3RpbmF0aW9uCkBAIC02MzYsNyArNjM2LDcgQEAgYm9vbCBGaWx0ZXJFZmZlY3Q6OnJlcXVp
cmVzUGl4ZWxCdWZmZXJDbwogI2VuZGlmCiB9CiAKLXZvaWQgRmlsdGVyRWZmZWN0Ojp0cmFuc2Zv
cm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBkZXN0aW5hdGlvbkNvbG9y
U3BhY2UpCit2b2lkIEZpbHRlckVmZmVjdDo6dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGRlc3RpbmF0aW9uQ29sb3JTcGFjZSkKIHsKICNpZiBV
U0UoQ0cpCiAgICAgLy8gQ0cgaGFuZGxlcyBjb2xvciBzcGFjZSBhZGp1c3RtZW50cyBpbnRlcm5h
bGx5LgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJFZmZlY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMyw3ICsyMyw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFscGhhUHJl
bXVsdGlwbGljYXRpb24uaCIKLSNpbmNsdWRlICJDb2xvclNwYWNlLmgiCisjaW5jbHVkZSAiRGVz
dGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAi
SW50UmVjdC5oIgogI2luY2x1ZGUgIkludFJlY3RFeHRlbnQuaCIKQEAgLTE2NSwxMyArMTY1LDEz
IEBAIHB1YmxpYzoKICAgICBib29sIGNsaXBzVG9Cb3VuZHMoKSBjb25zdCB7IHJldHVybiBtX2Ns
aXBzVG9Cb3VuZHM7IH0KICAgICB2b2lkIHNldENsaXBzVG9Cb3VuZHMoYm9vbCB2YWx1ZSkgeyBt
X2NsaXBzVG9Cb3VuZHMgPSB2YWx1ZTsgfQogCi0gICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG9w
ZXJhdGluZ0NvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX29wZXJhdGluZ0NvbG9yU3BhY2U7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgY29sb3JTcGFjZSkgeyBtX29wZXJhdGluZ0NvbG9yU3BhY2UgPSBjb2xvclNwYWNl
OyB9Ci0gICAgRGVzdGluYXRpb25Db2xvclNwYWNlIHJlc3VsdENvbG9yU3BhY2UoKSBjb25zdCB7
IHJldHVybiBtX3Jlc3VsdENvbG9yU3BhY2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0UmVzdWx0
Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkgeyBtX3Jlc3VsdENv
bG9yU3BhY2UgPSBjb2xvclNwYWNlOyB9CisgICAgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiBvcGVyYXRpbmdDb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYXRpbmdDb2xvclNw
YWNlOyB9CisgICAgdmlydHVhbCB2b2lkIHNldE9wZXJhdGluZ0NvbG9yU3BhY2UoY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKSB7IG1fb3BlcmF0aW5nQ29sb3JTcGFjZSA9
IGNvbG9yU3BhY2U7IH0KKyAgICBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHJlc3VsdENv
bG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdENvbG9yU3BhY2U7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgc2V0UmVzdWx0Q29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
IGNvbG9yU3BhY2UpIHsgbV9yZXN1bHRDb2xvclNwYWNlID0gY29sb3JTcGFjZTsgfQogCiAgICAg
dmlydHVhbCB2b2lkIHRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRmlsdGVyRWZmZWN0KiBpbiwg
Y29uc3QgaW50KSB7IGluLT50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKG1fb3BlcmF0aW5nQ29s
b3JTcGFjZSk7IH0KLSAgICB2b2lkIHRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRp
b25Db2xvclNwYWNlKTsKKyAgICB2b2lkIHRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJik7CiAgICAgCiAgICAgc3RhdGljIFZlY3RvcjxmbG9hdD4g
bm9ybWFsaXplZEZsb2F0cyhjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2YWx1ZXMpCiAgICAgewpAQCAt
MjAzLDExICsyMDMsMTEgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBs
eVNvZnR3YXJlKCkgPSAwOwogCiAgICAgdm9pZCBjb3B5SW1hZ2VCeXRlcyhjb25zdCBVaW50OENs
YW1wZWRBcnJheSYgc291cmNlLCBVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0
IEludFJlY3QmKSBjb25zdDsKLSAgICB2b2lkIGNvcHlDb252ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVz
dGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEFscGhh
UHJlbXVsdGlwbGljYXRpb24sIGNvbnN0IEludFJlY3QmKTsKLSAgICB2b2lkIGNvcHlDb252ZXJ0
ZWRQaXhlbEJ1ZmZlclRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmLCBQaXhlbEJ1ZmZl
ciYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYpOworICAgIHZvaWQgY29w
eUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYsIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEFscGhhUHJlbXVsdGlwbGljYXRpb24sIGNvbnN0
IEludFJlY3QmKTsKKyAgICB2b2lkIGNvcHlDb252ZXJ0ZWRQaXhlbEJ1ZmZlclRvRGVzdGluYXRp
b24oVWludDhDbGFtcGVkQXJyYXkmLCBQaXhlbEJ1ZmZlciYsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYsIGNvbnN0IEludFJlY3QmKTsKICAgICBib29sIHJlcXVpcmVzUGl4ZWxCdWZmZXJD
b2xvclNwYWNlQ29udmVyc2lvbihPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+KTsKLSAg
ICBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gY29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKERl
c3RpbmF0aW9uQ29sb3JTcGFjZSwgSW1hZ2VCdWZmZXImLCBjb25zdCBJbnRSZWN0JiwgQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbik7Ci0gICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGNvbnZlcnRQaXhl
bEJ1ZmZlclRvQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFBpeGVsQnVmZmVyJik7
CisgICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFj
ZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBJbWFnZUJ1ZmZlciYsIGNvbnN0IEludFJl
Y3QmLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uKTsKKyAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4g
Y29udmVydFBpeGVsQnVmZmVyVG9Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYsIFBpeGVsQnVmZmVyJik7CiAgICAgCiAKICAgICBGaWx0ZXImIG1fZmlsdGVyOwpAQCAtMjQ0
LDEzICsyNDQsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY2xpcHNUb0JvdW5kcyB7IHRydWUg
fTsKIAogI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAg
ICBzdGF0aWMgY29uc3RleHByIGF1dG8gZGVmYXVsdE9wZXJhdGluZ0NvbG9yU3BhY2UgPSBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0I7CisgICAgRGVzdGluYXRpb25Db2xvclNwYWNl
IG1fb3BlcmF0aW5nQ29sb3JTcGFjZSB7IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JH
QigpIH07CiAjZWxzZQotICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBkZWZhdWx0T3BlcmF0aW5n
Q29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjsKKyAgICBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgbV9vcGVyYXRpbmdDb2xvclNwYWNlIHsgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCkgfTsKICNlbmRpZgotCi0gICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1fb3BlcmF0
aW5nQ29sb3JTcGFjZSB7IGRlZmF1bHRPcGVyYXRpbmdDb2xvclNwYWNlIH07Ci0gICAgRGVzdGlu
YXRpb25Db2xvclNwYWNlIG1fcmVzdWx0Q29sb3JTcGFjZSB7IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQiB9OworICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBtX3Jlc3VsdENvbG9yU3BhY2Ug
eyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9OwogICAgIAogICAgIGNvbnN0IFR5cGUg
bV9maWx0ZXJFZmZlY3RDbGFzc1R5cGU7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
U291cmNlR3JhcGhpYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIHByaXZhdGU6
CiAgICAgU291cmNlR3JhcGhpYyhGaWx0ZXImIGZpbHRlcikKICAgICAgICAgOiBGaWx0ZXJFZmZl
Y3QoZmlsdGVyLCBUeXBlOjpTb3VyY2VHcmFwaGljKQogICAgIHsKLSAgICAgICAgc2V0T3BlcmF0
aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOworICAgICAgICBzZXRP
cGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICB9
CiAKICAgICBjb25zdCBjaGFyKiBmaWx0ZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlNv
dXJjZUdyYXBoaWMiOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29z
aWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNzYsNyArMTA3Niw3IEBAIHZv
aWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6YXBwZW5kKHN0ZDoKICAgICBtX2NvbW1hbmRMaXN0
LmFwcGVuZChXVEZNb3ZlKGNvbW1hbmQpKTsKIH0KIAotdm9pZCBDYWlyb09wZXJhdGlvblJlY29y
ZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiwgRGVzdGluYXRpb25D
b2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKQordm9pZCBDYWly
b09wZXJhdGlvblJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRnVuY3Rpb248dm9pZChHcmFwaGljc0Nv
bnRleHQmKT4mJikKIHsKICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIu
aAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC05Nyw3ICs5Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGlwUGF0aChjb25zdCBX
ZWJDb3JlOjpQYXRoJiwgV2ViQ29yZTo6V2luZFJ1bGUpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6
OkludFJlY3QgY2xpcEJvdW5kcygpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZm
ZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0
aW9uPHZvaWQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jik+JiYpIG92ZXJyaWRlOworICAgIHZv
aWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZ1bmN0aW9uPHZv
aWQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jik+JiYpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShW
SURFTykKICAgICB2b2lkIHBhaW50RnJhbWVGb3JNZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllciYs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb24pIG92ZXJyaWRlOwogICAgIGJv
b2wgY2FuUGFpbnRGcmFtZUZvck1lZGlhKGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWVyJikgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQ0dMTGF5ZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05p
Y29zaWFHQ0dMTGF5ZXIuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTExheWVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCB2b2lkIEdDR0xMYXllcjo6c3dhcEJ1ZmZlcnNJ
Zk5lZWRlZCgpCiAgICAgSW50U2l6ZSB0ZXh0dXJlU2l6ZShtX2NvbnRleHQubV9jdXJyZW50V2lk
dGgsIG1fY29udGV4dC5tX2N1cnJlbnRIZWlnaHQpOwogICAgIFRleHR1cmVNYXBwZXJHTDo6Rmxh
Z3MgZmxhZ3MgPSBtX2NvbnRleHQuY29udGV4dEF0dHJpYnV0ZXMoKS5hbHBoYSA/IFRleHR1cmVN
YXBwZXJHTDo6U2hvdWxkQmxlbmQgOiAwOwogI2lmIFVTRShBTkdMRSkKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZXh0
dXJlU2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIFJlZlB0cjxXZWJDb3JlOjpJ
bWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRleHR1cmVTaXpl
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAg
ICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEJhc2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjMsNyArNjMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIE9wdGlvbmFsPFBp
eGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVz
dWx0cygpCiB7Ci0gICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQiB9OworICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhh
UHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9OwogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBQ
aXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1hdCwgZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUo
KSk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTEVTLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAJKHJldmlzaW9u
IDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkblBpeGVsCiAKIE9wdGlvbmFsPFBp
eGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVz
dWx0cygpCiB7Ci0gICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQiB9OworICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhh
UHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9OwogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBQ
aXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1hdCwgZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUo
KSk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0
dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzgsNyArMzgsNyBAQCB2b2lkIEJpdG1hcFRleHR1cmU6OnVwZGF0ZUNvbnRlbnRz
KEdyYXBoCiB7CiAgICAgLy8gTWFraW5nIGFuIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVk
IGJ1ZmZlciBoZXJlIGlzIE9LIGJlY2F1c2UgdGhpcyBjb2RlCiAgICAgLy8gaXNuJ3QgdXNlZCBi
eSBhbnkgcGxhdGZvcm1zIHRoYXQgcmVzcGVjdCB0aGUgYWNjZWxlcmF0ZWQgYml0LgotICAgIGF1
dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRhcmdldFJlY3Quc2l6ZSgpLCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUodGFyZ2V0UmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgp
OwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsuY3BwCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3Jl
ZW5HdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAwNiBNaWNoYWVsIEVtbWVsIG1pa2UuZW1tZWxAZ21haWwuY29tCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDggQ2hyaXN0aWFuIER5d2FuIDxjaHJpc3RpYW5AaW1lbmRpby5jb20+CiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogCisjaW5jbHVk
ZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5j
bHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR3RrVXRpbGl0aWVzLmgiCkBAIC04NSw2ICs4
NiwxMSBAQCBib29sIHNjcmVlbklzTW9ub2Nocm9tZShXaWRnZXQqIHdpZGdldCkKICAgICByZXR1
cm4gc2NyZWVuRGVwdGgod2lkZ2V0KSA8IDI7CiB9CiAKK0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBz
Y3JlZW5Db2xvclNwYWNlKFdpZGdldCopCit7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpOworfQorCiBib29sIHNjcmVlbkhhc0ludmVydGVkQ29sb3JzKCkKIHsKICAg
ICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZv
cm1TY3JlZW5JT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1BsYXRmb3JtU2NyZWVuSU9TLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5JT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDE0IEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC04OCw5ICs4OCw5IEBAIGJvb2wgc2NyZWVuU3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlKFdpZGcK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUNHQ29sb3JTcGFjZVJlZiBzY3JlZW5Db2xvclNwYWNl
KFdpZGdldCogd2lkZ2V0KQorRGVzdGluYXRpb25Db2xvclNwYWNlIHNjcmVlbkNvbG9yU3BhY2Uo
V2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgcmV0dXJuIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xv
cih3aWRnZXQpID8gZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpIDogc1JHQkNvbG9yU3BhY2VS
ZWYoKTsKKyAgICByZXR1cm4gc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKHdpZGdldCkgPyBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgeyBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCkgfSA6IERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOwogfQogCiAvLyBUaGVzZSBmdW5jdGlvbnMgc2Nh
bGUgYmV0d2VlbiBzY3JlZW4gYW5kIHBhZ2UgY29vcmRpbmF0ZXMgYmVjYXVzZSBKYXZhU2NyaXB0
L0RPTSBvcGVyYXRpb25zCkBAIC0xOTMsMTYgKzE5MywxNCBAQCBTY3JlZW5Qcm9wZXJ0aWVzIGNv
bGxlY3RTY3JlZW5Qcm9wZXJ0aWVzCiAgICAgICAgIEZsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVS
ZWN0ID0gc2NyZWVuLmJvdW5kczsKICAgICAgICAgc2NyZWVuQXZhaWxhYmxlUmVjdC5zZXRZKE5T
TWF4WShzY3JlZW4uYm91bmRzKSAtIChzY3JlZW5BdmFpbGFibGVSZWN0LnkoKSArIHNjcmVlbkF2
YWlsYWJsZVJlY3QuaGVpZ2h0KCkpKTsgLy8gZmxpcAogICAgICAgICBGbG9hdFJlY3Qgc2NyZWVu
UmVjdCA9IHNjcmVlbi5fcmVmZXJlbmNlQm91bmRzOwotICAgICAgICAKLSAgICAgICAgUmV0YWlu
UHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZSA9IHNjcmVlbkNvbG9yU3BhY2UobnVsbHB0
cik7Ci0gICAgICAgIAorICAgICAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSB7
IHNjcmVlbkNvbG9yU3BhY2UobnVsbHB0cikgfTsKICAgICAgICAgaW50IHNjcmVlbkRlcHRoID0g
V2ViQ29yZTo6c2NyZWVuRGVwdGgobnVsbHB0cik7CiAgICAgICAgIGludCBzY3JlZW5EZXB0aFBl
ckNvbXBvbmVudCA9IFdlYkNvcmU6OnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KG51bGxwdHIpOwog
ICAgICAgICBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciA9IFdlYkNvcmU6OnNjcmVl
blN1cHBvcnRzRXh0ZW5kZWRDb2xvcihudWxscHRyKTsKICAgICAgICAgYm9vbCBzY3JlZW5IYXNJ
bnZlcnRlZENvbG9ycyA9IFdlYkNvcmU6OnNjcmVlbkhhc0ludmVydGVkQ29sb3JzKCk7CiAgICAg
ICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gV2ViQ29yZTo6c2NyZWVuUFBJRmFjdG9yKCk7CiAKLSAg
ICAgICAgc2NyZWVuUHJvcGVydGllcy5zY3JlZW5EYXRhTWFwLnNldCgrK2Rpc3BsYXlJRCwgU2Ny
ZWVuRGF0YSB7IHNjcmVlbkF2YWlsYWJsZVJlY3QsIHNjcmVlblJlY3QsIGNvbG9yU3BhY2UsIHNj
cmVlbkRlcHRoLCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCwgc2NyZWVuU3VwcG9ydHNFeHRlbmRl
ZENvbG9yLCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycywgZmFsc2UsIHNjYWxlRmFjdG9yIH0pOwor
ICAgICAgICBzY3JlZW5Qcm9wZXJ0aWVzLnNjcmVlbkRhdGFNYXAuc2V0KCsrZGlzcGxheUlELCBT
Y3JlZW5EYXRhIHsgc2NyZWVuQXZhaWxhYmxlUmVjdCwgc2NyZWVuUmVjdCwgV1RGTW92ZShjb2xv
clNwYWNlKSwgc2NyZWVuRGVwdGgsIHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50LCBzY3JlZW5TdXBw
b3J0c0V4dGVuZGVkQ29sb3IsIHNjcmVlbkhhc0ludmVydGVkQ29sb3JzLCBmYWxzZSwgc2NhbGVG
YWN0b3IgfSk7CiAgICAgICAgIAogICAgICAgICBpZiAoc2NyZWVuID09IFtQQUw6OmdldFVJU2Ny
ZWVuQ2xhc3MoKSBtYWluU2NyZWVuXSkKICAgICAgICAgICAgIHNjcmVlblByb3BlcnRpZXMucHJp
bWFyeURpc3BsYXlJRCA9IGRpc3BsYXlJRDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QbGF0Zm9ybVNjcmVlbk1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5NYWMubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTMwLDkgKzEzMCw3IEBAIFNjcmVlblByb3BlcnRpZXMgY29sbGVjdFNjcmVlblBy
b3BlcnRpZXMKICAgICAgICAgRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QgPSBzY3JlZW4u
dmlzaWJsZUZyYW1lOwogICAgICAgICBzY3JlZW5BdmFpbGFibGVSZWN0LnNldFkoTlNNYXhZKHNj
cmVlbi5mcmFtZSkgLSAoc2NyZWVuQXZhaWxhYmxlUmVjdC55KCkgKyBzY3JlZW5BdmFpbGFibGVS
ZWN0LmhlaWdodCgpKSk7IC8vIGZsaXAKICAgICAgICAgRmxvYXRSZWN0IHNjcmVlblJlY3QgPSBz
Y3JlZW4uZnJhbWU7Ci0KLSAgICAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JT
cGFjZSA9IHNjcmVlbi5jb2xvclNwYWNlLkNHQ29sb3JTcGFjZTsKLQorICAgICAgICBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSB7IHNjcmVlbi5jb2xvclNwYWNlLkNHQ29sb3JTcGFj
ZSB9OwogICAgICAgICBpbnQgc2NyZWVuRGVwdGggPSBOU0JpdHNQZXJQaXhlbEZyb21EZXB0aChz
Y3JlZW4uZGVwdGgpOwogICAgICAgICBpbnQgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQgPSBOU0Jp
dHNQZXJTYW1wbGVGcm9tRGVwdGgoc2NyZWVuLmRlcHRoKTsKICAgICAgICAgYm9vbCBzY3JlZW5T
dXBwb3J0c0V4dGVuZGVkQ29sb3IgPSBbc2NyZWVuIGNhblJlcHJlc2VudERpc3BsYXlHYW11dDpO
U0Rpc3BsYXlHYW11dFAzXTsKQEAgLTE2Myw3ICsxNjEsNyBAQCBTY3JlZW5Qcm9wZXJ0aWVzIGNv
bGxlY3RTY3JlZW5Qcm9wZXJ0aWVzCiAgICAgICAgIGlmIChkaXNwbGF5TWFzaykKICAgICAgICAg
ICAgIGdwdUlEID0gZ3B1SURGb3JEaXNwbGF5TWFzayhkaXNwbGF5TWFzayk7CiAKLSAgICAgICAg
c2NyZWVuUHJvcGVydGllcy5zY3JlZW5EYXRhTWFwLnNldChkaXNwbGF5SUQsIFNjcmVlbkRhdGEg
eyBzY3JlZW5BdmFpbGFibGVSZWN0LCBzY3JlZW5SZWN0LCBjb2xvclNwYWNlLCBzY3JlZW5EZXB0
aCwgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQsIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciwg
c2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMsIHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZSwg
c2NyZWVuSXNNb25vY2hyb21lLCBkaXNwbGF5TWFzaywgZ3B1SUQsIGR5bmFtaWNSYW5nZU1vZGUs
IHNjYWxlRmFjdG9yIH0pOworICAgICAgICBzY3JlZW5Qcm9wZXJ0aWVzLnNjcmVlbkRhdGFNYXAu
c2V0KGRpc3BsYXlJRCwgU2NyZWVuRGF0YSB7IHNjcmVlbkF2YWlsYWJsZVJlY3QsIHNjcmVlblJl
Y3QsIFdURk1vdmUoY29sb3JTcGFjZSksIHNjcmVlbkRlcHRoLCBzY3JlZW5EZXB0aFBlckNvbXBv
bmVudCwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yLCBzY3JlZW5IYXNJbnZlcnRlZENvbG9y
cywgc2NyZWVuU3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlLCBzY3JlZW5Jc01vbm9jaHJvbWUsIGRp
c3BsYXlNYXNrLCBncHVJRCwgZHluYW1pY1JhbmdlTW9kZSwgc2NhbGVGYWN0b3IgfSk7CiAKICAg
ICAgICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVzLnByaW1hcnlEaXNwbGF5SUQpCiAgICAgICAgICAg
ICBzY3JlZW5Qcm9wZXJ0aWVzLnByaW1hcnlEaXNwbGF5SUQgPSBkaXNwbGF5SUQ7CkBAIC0zNDAs
MTMgKzMzOCwxMyBAQCBOU1NjcmVlbiAqc2NyZWVuKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsCiAg
ICAgcmV0dXJuIGZpcnN0U2NyZWVuKCk7CiB9CiAKLUNHQ29sb3JTcGFjZVJlZiBzY3JlZW5Db2xv
clNwYWNlKFdpZGdldCogd2lkZ2V0KQorRGVzdGluYXRpb25Db2xvclNwYWNlIHNjcmVlbkNvbG9y
U3BhY2UoV2lkZ2V0KiB3aWRnZXQpCiB7CiAgICAgaWYgKGF1dG8gZGF0YSA9IHNjcmVlblByb3Bl
cnRpZXMod2lkZ2V0KSkKLSAgICAgICAgcmV0dXJuIGRhdGEtPmNvbG9yU3BhY2UuZ2V0KCk7Cisg
ICAgICAgIHJldHVybiBkYXRhLT5jb2xvclNwYWNlOwogCiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQ
cml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQ29tbXVuaWNhdGVXaXRoV2luZG93U2VydmVy
KSk7Ci0gICAgcmV0dXJuIHNjcmVlbih3aWRnZXQpLmNvbG9yU3BhY2UuQ0dDb2xvclNwYWNlOwor
ICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgeyBzY3JlZW4od2lkZ2V0KS5jb2xvclNw
YWNlLkNHQ29sb3JTcGFjZSB9OwogfQogCiBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xv
cihXaWRnZXQqIHdpZGdldCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVt
ZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVN
YWMubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9U
aGVtZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzI2LDcgKzcyNiw3IEBAIGJvb2wgVGhlbWVN
YWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdXaXRoVmkKIAogICAgIGlmICh1c2VJbWFnZUJ1ZmZlcikg
ewogICAgICAgICBOU1JlY3QgaW1hZ2VCdWZmZXJEcmF3UmVjdCA9IE5TUmVjdChGbG9hdFJlY3Qo
YnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgs
IHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSkpOwotICAgICAgICBhdXRvIGltYWdlQnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIocmVjdC5zaXplKCkgKyAyICog
RmxvYXRTaXplKGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0
bGluZVdpZHRoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QiwgY29udGV4dCk7CisgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlQ29tcGF0aWJsZUJ1ZmZlcihyZWN0LnNpemUoKSArIDIgKiBGbG9hdFNpemUoYnV0dG9uRm9j
dXNSZWN0T3V0bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgpLCBkZXZpY2VT
Y2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNvbnRleHQpOwogICAg
ICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG5lZWRzUmVwYWludDsK
ICAgICAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2VHU3RyZWFtZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQg
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXI6OnUKICAgICBpZiAoIWltYWdlQnVmZmVy
KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHBpeGVsQnVmZmVyID0gaW1hZ2VCdWZmZXIt
PmdldFBpeGVsQnVmZmVyKHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVk
LCBQaXhlbEZvcm1hdDo6QkdSQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9LCB7IHsg
fSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkgfSk7CisgICAgYXV0byBwaXhlbEJ1ZmZlciA9
IGltYWdlQnVmZmVyLT5nZXRQaXhlbEJ1ZmZlcih7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVu
cHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSB9LCB7IHsgfSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkgfSk7CiAgICAgaWYg
KCFwaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1NCw3ICs0NTQsNyBAQCBJ
bWFnZUJ1ZmZlciogTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmltCiAgICAgaWYgKG1faW1hZ2VC
dWZmZXIpCiAgICAgICAgIHJldHVybiBtX2ltYWdlQnVmZmVyLmdldCgpOwogCi0gICAgbV9pbWFn
ZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2FwdHVyZVNpemUoKSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOworICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNh
cHR1cmVTaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghbV9pbWFn
ZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3BsYXlzdGF0aW9uL1BsYXRmb3JtU2NyZWVuUGxheVN0YXRpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3BsYXlzdGF0aW9uL1BsYXRmb3JtU2Ny
ZWVuUGxheVN0YXRpb24uY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9wbGF5c3RhdGlvbi9QbGF0Zm9ybVNjcmVlblBsYXlTdGF0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtU2NyZWVuLmgiCiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIK
ICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogCkBA
IC03MSw0ICs3Miw5IEBAIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKFdpZGdldCoK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBzY3JlZW5Db2xv
clNwYWNlKFdpZGdldCopCit7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vUGxhdGZvcm1TY3JlZW5XaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVlbldpbi5jcHAJKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVlbldpbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNw
YWNlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJGcmFtZVZpZXcuaCIKQEAgLTEwNCwxMiArMTA1LDEwIEBAIEZsb2F0UmVjdCBzY3JlZW5B
dmFpbGFibGVSZWN0KFdpZGdldCogd2kKICAgICByZXR1cm4gbW9uaXRvckluZm8ucmNXb3JrOwog
fQogCi0jaWYgVVNFKENHKQotQ0dDb2xvclNwYWNlUmVmIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0
KikKK0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCopCiB7Ci0g
ICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlUmVmKCk7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpOwogfQotI2VuZGlmCiAKIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRl
ZENvbG9yKFdpZGdldCopCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93cGUvUGxh
dGZvcm1TY3JlZW5XUEUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dwZS9QbGF0Zm9ybVNjcmVlbldQRS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dwZS9QbGF0Zm9ybVNjcmVlbldQRS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bVNjcmVlbi5oIgogCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVk
ZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJX
aWRnZXQuaCIKQEAgLTgxLDYgKzgyLDExIEBAIEZsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0
KFdpZGdldCogd2kKICAgICByZXR1cm4gc2NyZWVuUmVjdCh3aWRnZXQpOwogfQogCitEZXN0aW5h
dGlvbkNvbG9yU3BhY2Ugc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqKQoreworICAgIHJldHVybiBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKK30KKwogYm9vbCBzY3JlZW5TdXBwb3J0c0V4
dGVuZGVkQ29sb3IoV2lkZ2V0KikKIHsKICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4
LDYgKzE4LDcgQEAKICAqLwogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNv
bG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFBvaW50M0QuaCIKICNpbmNsdWRlICJHcmFwaGlj
c1R5cGVzR0wuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCkBAIC0zMiw4ICszMyw3IEBACiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgPFdl
YkNvcmUvQ29sb3JTcGFjZUNHLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KKyNp
bmNsdWRlICJJT1N1cmZhY2UuaCIKICNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgogI2Vu
ZGlmCiAKQEAgLTQ0Niw3ICs0NDYsNyBAQCBPcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6TGF5
ZXJEYXRhPiBECiAgICAgV1RGOjpNYWNoU2VuZFJpZ2h0IHN1cmZhY2VTZW5kUmlnaHQ7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShzdXJmYWNlU2VuZFJpZ2h0KSkKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKLSAgICBsYXllckRhdGEuc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6
Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKHN1cmZhY2VTZW5kUmlnaHQpLCBXZWJDb3JlOjpz
UkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICBsYXllckRhdGEuc3VyZmFjZSA9IFdlYkNvcmU6OklP
U3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKHN1cmZhY2VTZW5kUmlnaHQpLCBX
ZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAjZW5kaWYKICAgICByZXR1
cm4gbGF5ZXJEYXRhOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5j
cHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsOSArMTExLDkgQEAgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gQ1NTRmlsdGVyOjpidWlsZFJlZgogICAgICAgICBlZmZlY3RFbGVtZW50LnNldFN0YW5k
YXJkQXR0cmlidXRlcyhlZmZlY3QuZ2V0KCkpOwogICAgICAgICBpZiAoZWZmZWN0RWxlbWVudC5y
ZW5kZXJlcigpKSB7CiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9T
UkdCKQotICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKGVmZmVjdEVs
ZW1lbnQucmVuZGVyZXIoKS0+c3R5bGUoKS5zdmdTdHlsZSgpLmNvbG9ySW50ZXJwb2xhdGlvbkZp
bHRlcnMoKSA9PSBDb2xvckludGVycG9sYXRpb246OkxpbmVhclJHQiA/IERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6TGluZWFyU1JHQiA6IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CisgICAg
ICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoZWZmZWN0RWxlbWVudC5yZW5k
ZXJlcigpLT5zdHlsZSgpLnN2Z1N0eWxlKCkuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpID09
IENvbG9ySW50ZXJwb2xhdGlvbjo6TGluZWFyUkdCID8gRGVzdGluYXRpb25Db2xvclNwYWNlOjpM
aW5lYXJTUkdCKCkgOiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAjZWxzZQotICAg
ICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQik7CisgICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2Uo
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogI2VuZGlmCiAgICAgICAgIH0KICAgICAg
ICAgYnVpbGRlci0+YWRkKGVmZmVjdEVsZW1lbnQucmVzdWx0KCksIGVmZmVjdCk7CkBAIC0yOTYs
NyArMjk2LDcgQEAgYm9vbCBDU1NGaWx0ZXI6OmJ1aWxkKFJlbmRlckVsZW1lbnQmIHJlbgogICAg
ICAgICAgICAgLy8gVW5saWtlIFNWRyBGaWx0ZXJzIGFuZCBDU1NGaWx0ZXJJbWFnZXMsIGZpbHRl
ciBmdW5jdGlvbnMgb24gdGhlIGZpbHRlcgogICAgICAgICAgICAgLy8gcHJvcGVydHkgYXBwbGll
ZCBoZXJlIHNob3VsZCBub3QgY2xpcCB0byB0aGVpciBwcmltaXRpdmUgc3VicmVnaW9ucy4KICAg
ICAgICAgICAgIGVmZmVjdC0+c2V0Q2xpcHNUb0JvdW5kcyhjb25zdW1lciA9PSBGaWx0ZXJDb25z
dW1lcjo6RmlsdGVyRnVuY3Rpb24pOwotICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdD
b2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CisgICAgICAgICAgICBlZmZl
Y3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoZmlsdGVyT3BlcmF0aW9uLnR5cGUoKSAh
PSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5DRSkgewogICAgICAgICAgICAgICAgIGVmZmVjdC0+
aW5wdXRFZmZlY3RzKCkgPSB7IFdURk1vdmUocHJldmlvdXNFZmZlY3QpIH07CkBAIC0zNDQsMTEg
KzM0NCwxMSBAQCB2b2lkIENTU0ZpbHRlcjo6YWxsb2NhdGVCYWNraW5nU3RvcmVJZk5lCiAgICAg
SW50U2l6ZSBsb2dpY2FsU2l6ZSB7IG1fc291cmNlRHJhd2luZ1JlZ2lvbi5zaXplKCkgfTsKICAg
ICBpZiAoIXNvdXJjZUltYWdlKCkgfHwgc291cmNlSW1hZ2UoKS0+bG9naWNhbFNpemUoKSAhPSBs
b2dpY2FsU2l6ZSkgewogI2lmIFVTRShESVJFQ1QyRCkKLSAgICAgICAgc2V0U291cmNlSW1hZ2Uo
SW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVuZGVyaW5nTW9kZSgpLCAmdGFyZ2V0
Q29udGV4dCwgZmlsdGVyU2NhbGUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhl
bEZvcm1hdDo6QkdSQTgpKTsKKyAgICAgICAgc2V0U291cmNlSW1hZ2UoSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShsb2dpY2FsU2l6ZSwgcmVuZGVyaW5nTW9kZSgpLCAmdGFyZ2V0Q29udGV4dCwgZmlsdGVy
U2NhbGUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JB
OCkpOwogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHRhcmdldENvbnRleHQpOwogICAgICAg
ICBSZW5kZXJpbmdNb2RlIG1vZGUgPSBtX2ZpbHRlclJlbmRlcmVyID8gUmVuZGVyaW5nTW9kZTo6
QWNjZWxlcmF0ZWQgOiByZW5kZXJpbmdNb2RlKCk7Ci0gICAgICAgIHNldFNvdXJjZUltYWdlKElt
YWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIG1vZGUsIGZpbHRlclNjYWxlKCksIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CisgICAgICAgIHNl
dFNvdXJjZUltYWdlKEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIG1vZGUsIGZpbHRl
clNjYWxlKCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdS
QTgpKTsKICNlbmRpZgogICAgIH0KICAgICBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQgPSB0cnVl
OwpAQCAtMzgyLDEyICszODIsMTIgQEAgdm9pZCBDU1NGaWx0ZXI6OmFwcGx5KCkKICAgICBpZiAo
bV9maWx0ZXJSZW5kZXJlcikgewogICAgICAgICBtX2ZpbHRlclJlbmRlcmVyLT5hcHBseUVmZmVj
dHMoZWZmZWN0KTsKICAgICAgICAgaWYgKG1fZmlsdGVyUmVuZGVyZXItPmhhc1Jlc3VsdCgpKSB7
Ci0gICAgICAgICAgICBlZmZlY3QudHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IpOworICAgICAgICAgICAgZWZmZWN0LnRyYW5zZm9ybVJlc3VsdENv
bG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgfQogICAgIGVmZmVjdC5hcHBseSgpOwotICAgIGVmZmVjdC50
cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7Cisg
ICAgZWZmZWN0LnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCkpOwogfQogCiBMYXlvdXRSZWN0IENTU0ZpbHRlcjo6Y29tcHV0ZVNvdXJjZUltYWdl
UmVjdEZvckRpcnR5UmVjdChjb25zdCBMYXlvdXRSZWN0JiBmaWx0ZXJCb3hSZWN0LCBjb25zdCBM
YXlvdXRSZWN0JiBkaXJ0eVJlY3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg3Niw3ICs4NzYsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZp
bGxMYXllCiAgICAgICAgIG1hc2tSZWN0LmludGVyc2VjdChzbmFwcGVkSW50UmVjdChwYWludElu
Zm8ucmVjdCkpOwogCiAgICAgICAgIC8vIE5vdyBjcmVhdGUgdGhlIG1hc2suCi0gICAgICAgIG1h
c2tJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNp
emUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBjb250ZXh0KTsKKyAgICAgICAgbWFz
a0ltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIobWFza1JlY3Quc2l6
ZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY29udGV4dCk7CiAgICAgICAgIGlm
ICghbWFza0ltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBwYWludE1hc2tGb3JU
ZXh0RmlsbEJveChtYXNrSW1hZ2UuZ2V0KCksIG1hc2tSZWN0LCBib3gsIHNjcm9sbGVkUGFpbnRS
ZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI2Nyw3ICszMjY3LDcg
QEAgc3RhdGljIFJlZlB0cjxQYXR0ZXJuPiBwYXR0ZXJuRm9yRGVzY3JpcAogewogICAgIGNvbnN0
IEZsb2F0U2l6ZSB0aWxlU2l6ZSB7IDMyLCAxOCB9OwogCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHRpbGVTaXplLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IsIGRlc3RDb250ZXh0KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIodGlsZVNpemUsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpLCBkZXN0Q29udGV4dCk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVJT1MubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTk4MywxMSAr
MTk4MywxMSBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjpwYWludFN5c3RlbVByZXZpZXdCCiAgICAg
SU9TdXJmYWNlUmVmIHN1cmZhY2U7CiAgICAgaWYgKHVzZVNtYWxsQmFkZ2UpIHsKICAgICAgICAg
aWYgKCFtX3NtYWxsQmFkZ2VTdXJmYWNlKQotICAgICAgICAgICAgbV9zbWFsbEJhZGdlU3VyZmFj
ZSA9IElPU3VyZmFjZTo6Y3JlYXRlKHsgc21hbGxCYWRnZURpbWVuc2lvbiwgc21hbGxCYWRnZURp
bWVuc2lvbiB9LCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICAgICAgICAgIG1fc21hbGxCYWRn
ZVN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZSh7IHNtYWxsQmFkZ2VEaW1lbnNpb24sIHNtYWxs
QmFkZ2VEaW1lbnNpb24gfSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgICAg
ICBzdXJmYWNlID0gbV9zbWFsbEJhZGdlU3VyZmFjZS0+c3VyZmFjZSgpOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIGlmICghbV9sYXJnZUJhZGdlU3VyZmFjZSkKLSAgICAgICAgICAgIG1fbGFyZ2VC
YWRnZVN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZSh7IGxhcmdlQmFkZ2VEaW1lbnNpb24sIGxh
cmdlQmFkZ2VEaW1lbnNpb24gfSwgc1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgICAgICAgICBt
X2xhcmdlQmFkZ2VTdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoeyBsYXJnZUJhZGdlRGltZW5z
aW9uLCBsYXJnZUJhZGdlRGltZW5zaW9uIH0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
KTsKICAgICAgICAgc3VyZmFjZSA9IG1fbGFyZ2VCYWRnZVN1cmZhY2UtPnN1cmZhY2UoKTsKICAg
ICB9CiAgICAgW21fY2lDb250ZXh0LmdldCgpIHJlbmRlcjp0cmFuc2xhdGVkSW1hZ2UgdG9JT1N1
cmZhY2U6c3VyZmFjZSBib3VuZHM6YmFkZ2VSZWN0IGNvbG9yU3BhY2U6c1JHQkNvbG9yU3BhY2VS
ZWYoKV07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1t
CShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMDksNyArMTMwOSw3IEBAIGJvb2wgUmVuZGVy
VGhlbWVNYWM6OnBhaW50UHJvZ3Jlc3NCYXIoY28KICAgICBjb25zdCBhdXRvJiByZW5kZXJQcm9n
cmVzcyA9IGRvd25jYXN0PFJlbmRlclByb2dyZXNzPihyZW5kZXJPYmplY3QpOwogICAgIGZsb2F0
IGRldmljZVNjYWxlRmFjdG9yID0gcmVuZGVyT2JqZWN0LmRvY3VtZW50KCkuZGV2aWNlU2NhbGVG
YWN0b3IoKTsKICAgICBib29sIGlzSW5kZXRlcm1pbmF0ZSA9IHJlbmRlclByb2dyZXNzLnBvc2l0
aW9uKCkgPCAwOwotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcihpbmZsYXRlZFJlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBwYWludEluZm8uY29udGV4dCgpKTsKKyAgICBhdXRv
IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoaW5mbGF0
ZWRSZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpLCBwYWludEluZm8uY29udGV4dCgpKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBl
cy9TaGFwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBl
cy9TaGFwZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvU2hhcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODEsNyArMTgxLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlUmFzdAogICAgIEludFJlY3QgbWFyZ2lu
UmVjdCA9IHNuYXBwZWRJbnRSZWN0KG1hcmdpblIpOwogICAgIGF1dG8gaW50ZXJ2YWxzID0gbWFr
ZVVuaXF1ZTxSYXN0ZXJTaGFwZUludGVydmFscz4obWFyZ2luUmVjdC5oZWlnaHQoKSwgLW1hcmdp
blJlY3QueSgpKTsKICAgICAvLyBGSVhNRSAoMTQ5NDIwKTogVGhpcyBidWZmZXIgc2hvdWxkIG5v
dCBiZSB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZC4KLSAgICBhdXRvIGltYWdlQnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpV
bmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0
OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1h
Z2VSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAKICAgICBhdXRvIGNy
ZWF0ZVNoYXBlID0gWyZdKCkgewogICAgICAgICBhdXRvIHJhc3RlclNoYXBlID0gbWFrZVVuaXF1
ZTxSYXN0ZXJTaGFwZT4oV1RGTW92ZShpbnRlcnZhbHMpLCBtYXJnaW5SZWN0LnNpemUoKSk7CkBA
IC0xOTcsNyArMTk3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlUmFz
dAogICAgIGlmIChpbWFnZSkKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZSgqaW1h
Z2UsIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VSZWN0LnNpemUoKSkpOwogCi0gICAgUGl4ZWxC
dWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBs
aWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9Owor
ICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVu
cHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSB9OwogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+Z2V0UGl4ZWxC
dWZmZXIoZm9ybWF0LCB7IEludFBvaW50KCksIGltYWdlUmVjdC5zaXplKCkgfSk7CiAgICAgCiAg
ICAgLy8gV2UgY291bGQgZ2V0IHRvIGEgdmFsdWUgd2hlcmUgUGl4ZWxCdWZmZXIgY291bGQgYmUg
bnVsbG9wdC4gQSBjYXNlIHdoZXJlIEltYWdlUmVjdC5zaXplKCkgaXMgaHVnZSwgUGl4ZWxCdWZm
ZXI6OnRyeUNyZWF0ZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUNsaXBwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsNyArMTQ2LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNv
dXJjZUNsaXBwZXI6OmFwcGx5Q2xpcAogICAgIEFmZmluZVRyYW5zZm9ybSBhYnNvbHV0ZVRyYW5z
Zm9ybSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRl
cm1vc3RDb29yZGluYXRlU3lzdGVtKHJlbmRlcmVyKTsKICAgICBpZiAoIWNsaXBwZXJEYXRhLmlz
VmFsaWRGb3JHZW9tZXRyeShvYmplY3RCb3VuZGluZ0JveCwgYWJzb2x1dGVUcmFuc2Zvcm0pKSB7
CiAgICAgICAgIC8vIEZJWE1FICgxNDk0NjkpOiBUaGlzIGltYWdlIGJ1ZmZlciBzaG91bGQgbm90
IGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkLiBNYWtpbmcgaXQgbWF0Y2ggdGhlIGNv
bnRleHQgYnJlYWtzIG5lc3RlZCBjbGlwcGluZywgdGhvdWdoLgotICAgICAgICBhdXRvIG1hc2tJ
bWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKG9iamVjdEJvdW5k
aW5nQm94LCBhYnNvbHV0ZVRyYW5zZm9ybSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAmY29udGV4dCk7CisgICAgICAgIGF1dG8gbWFz
a0ltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIob2JqZWN0Qm91
bmRpbmdCb3gsIGFic29sdXRlVHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgJmNvbnRleHQpOwogICAgICAgICBpZiAo
IW1hc2tJbWFnZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRl
ci5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsOSArMTA0
LDkgQEAgc3RkOjp1bmlxdWVfcHRyPFNWR0ZpbHRlckJ1aWxkZXI+IFJlbmRlcgogICAgICAgICBl
ZmZlY3QtPnNldEVmZmVjdEJvdW5kYXJpZXMoU1ZHTGVuZ3RoQ29udGV4dDo6cmVzb2x2ZVJlY3Rh
bmdsZTxTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+KCZlbGVtZW50LCBmaWx0
ZXJFbGVtZW50KCkucHJpbWl0aXZlVW5pdHMoKSwgdGFyZ2V0Qm91bmRpbmdCb3gpKTsKICAgICAg
ICAgaWYgKGVsZW1lbnQucmVuZGVyZXIoKSkgewogI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xP
Ul9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29s
b3JTcGFjZShlbGVtZW50LnJlbmRlcmVyKCktPnN0eWxlKCkuc3ZnU3R5bGUoKS5jb2xvckludGVy
cG9sYXRpb25GaWx0ZXJzKCkgPT0gQ29sb3JJbnRlcnBvbGF0aW9uOjpMaW5lYXJSR0IgPyBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IgOiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IpOworICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKGVsZW1lbnQu
cmVuZGVyZXIoKS0+c3R5bGUoKS5zdmdTdHlsZSgpLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMo
KSA9PSBDb2xvckludGVycG9sYXRpb246OkxpbmVhclJHQiA/IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6TGluZWFyU1JHQigpIDogRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogI2Vsc2UK
LSAgICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IpOworICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNw
YWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICNlbmRpZgogICAgICAgICB9CiAg
ICAgICAgIGJ1aWxkZXItPmFkZChlbGVtZW50LnJlc3VsdCgpLCBXVEZNb3ZlKGVmZmVjdCkpOwpA
QCAtMTk4LDkgKzE5OCw5IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVz
b3UKIAogICAgIGF1dG8gcmVuZGVyaW5nTW9kZSA9IHJlbmRlcmVyLnNldHRpbmdzKCkuYWNjZWxl
cmF0ZWRGaWx0ZXJzRW5hYmxlZCgpID8gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQgOiBSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOwogI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9T
UEFDRV9MSU5FQVJfU1JHQikKLSAgICBhdXRvIGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OkxpbmVhclNSR0I7CisgICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xv
clNwYWNlOjpMaW5lYXJTUkdCKCk7CiAjZWxzZQotICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQjsKKyAgICBhdXRvIGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKTsKICNlbmRpZgogICAgIGF1dG8gc291cmNlR3JhcGhpYyA9IFNW
R1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGZpbHRlckRhdGEtPmRyYXdpbmdS
ZWdpb24sIGVmZmVjdGl2ZVRyYW5zZm9ybSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZSwgY29u
dGV4dCk7CiAgICAgaWYgKCFzb3VyY2VHcmFwaGljKSB7CkBAIC0yODEsNyArMjgxLDcgQEAgdm9p
ZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UgogICAgICAgICAgICAgZmlsdGVy
RGF0YS5zdGF0ZSA9IEZpbHRlckRhdGE6OkFwcGx5aW5nOwogICAgICAgICAgICAgbGFzdEVmZmVj
dC0+YXBwbHkoKTsKICAgICAgICAgICAgIGxhc3RFZmZlY3QtPmNvcnJlY3RGaWx0ZXJSZXN1bHRJ
Zk5lZWRlZCgpOwotICAgICAgICAgICAgbGFzdEVmZmVjdC0+dHJhbnNmb3JtUmVzdWx0Q29sb3JT
cGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOworICAgICAgICAgICAgbGFzdEVmZmVj
dC0+dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSk7CiAgICAgICAgIH0KICAgICAgICAgZmlsdGVyRGF0YS5zdGF0ZSA9IEZpbHRlckRhdGE6OkJ1
aWx0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlR3JhZGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgc3RhdGljIGlubGluZSBib29sIGNyZWF0
ZU1hc2tBbmRTd2FwQ29udAogICAgIEFmZmluZVRyYW5zZm9ybSBhYnNvbHV0ZVRyYW5zZm9ybSA9
IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RD
b29yZGluYXRlU3lzdGVtKCp0ZXh0Um9vdEJsb2NrKTsKICAgICBGbG9hdFJlY3QgcmVwYWludFJl
Y3QgPSB0ZXh0Um9vdEJsb2NrLT5yZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpOwogCi0g
ICAgYXV0byBtYXNrSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZl
cihyZXBhaW50UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiwgY29udGV4dC0+cmVuZGVyaW5nTW9kZSgpKTsKKyAgICBhdXRvIG1hc2tJbWFnZSA9IFNW
R1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBhYnNvbHV0
ZVRyYW5zZm9ybSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNvbnRleHQtPnJlbmRl
cmluZ01vZGUoKSk7CiAgICAgaWYgKCFtYXNrSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1h
c2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MSw5ICs3MSw5IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5
UmVzb3UKICAgICAgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUmIHN2Z1N0eWxlID0gc3R5bGUoKS5z
dmdTdHlsZSgpOwogCiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9T
UkdCKQotICAgICAgICBhdXRvIGNvbG9yU3BhY2UgPSBzdmdTdHlsZS5jb2xvckludGVycG9sYXRp
b24oKSA9PSBDb2xvckludGVycG9sYXRpb246OkxpbmVhclJHQiA/IERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6TGluZWFyU1JHQiA6IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjsKKyAgICAgICAg
YXV0byBjb2xvclNwYWNlID0gc3ZnU3R5bGUuY29sb3JJbnRlcnBvbGF0aW9uKCkgPT0gQ29sb3JJ
bnRlcnBvbGF0aW9uOjpMaW5lYXJSR0IgPyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNS
R0IoKSA6IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOwogI2Vsc2UKLSAgICAgICAgYXV0
byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOworICAgICAgICBhdXRv
IGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKICNlbmRpZgogCiAg
ICAgICAgIC8vIEZJWE1FICgxNDk0NzApOiBUaGlzIGltYWdlIGJ1ZmZlciBzaG91bGQgbm90IGJl
IHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkLiBNYWtpbmcgaXQgbWF0Y2ggdGhlIGNvbnRl
eHQgYnJlYWtzIGFscGhhIG1hc2tpbmcsIHRob3VnaC4KQEAgLTkyLDcgKzkyLDcgQEAgYm9vbCBS
ZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2Uo
TWFza2VyRGF0YSogbWFza2VyRGF0YSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2Us
IFJlbmRlck9iamVjdCogb2JqZWN0KQorYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6ZHJh
d0NvbnRlbnRJbnRvTWFza0ltYWdlKE1hc2tlckRhdGEqIG1hc2tlckRhdGEsIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7CiAg
ICAgR3JhcGhpY3NDb250ZXh0JiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza2VyRGF0YS0+bWFza0lt
YWdlLT5jb250ZXh0KCk7CiAKQEAgLTExOSw3ICsxMTksNyBAQCBib29sIFJlbmRlclNWR1Jlc291
cmNlTWFza2VyOjpkcmF3Q29udGVuCiAgICAgfQogCiAjaWYgIVVTRShDRykKLSAgICBtYXNrZXJE
YXRhLT5tYXNrSW1hZ2UtPnRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCLCBjb2xvclNwYWNlKTsKKyAgICBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UtPnRyYW5zZm9y
bUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNvbG9yU3BhY2UpOwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29sb3JTcGFjZSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFz
a2VyLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBA
QCBwcml2YXRlOgogCiAgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZU1hc2tlciI7IH0KIAotICAgIGJvb2wgZHJhd0Nv
bnRlbnRJbnRvTWFza0ltYWdlKE1hc2tlckRhdGEqLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFJl
bmRlck9iamVjdCopOworICAgIGJvb2wgZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdlKE1hc2tlckRh
dGEqLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBSZW5kZXJPYmplY3QqKTsKICAgICB2
b2lkIGNhbGN1bGF0ZU1hc2tDb250ZW50UmVwYWludFJlY3QoKTsKIAogICAgIEZsb2F0UmVjdCBt
X21hc2tDb250ZW50Qm91bmRhcmllczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAJKHJldmlzaW9u
IDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VQYXR0ZXJuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUzLDcgKzI1Myw3IEBAIGJvb2wgUmVu
ZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFRpbGUKIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVu
ZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpjcmVhdGVUaWxlSW1hZ2UoY29uc3QgUGF0dGVybkF0dHJp
YnV0ZXMmIGF0dHJpYnV0ZXMsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZUJvdW5kYXJpZXMsIGNvbnN0
IEZsb2F0UmVjdCYgYWJzb2x1dGVUaWxlQm91bmRhcmllcywgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiB0aWxlSW1hZ2VUcmFuc2Zvcm0sIEZsb2F0UmVjdCYgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5k
YXJpZXMsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSkgY29uc3QKIHsKICAgICBjbGFtcGVk
QWJzb2x1dGVUaWxlQm91bmRhcmllcyA9IEltYWdlQnVmZmVyOjpjbGFtcGVkUmVjdChhYnNvbHV0
ZVRpbGVCb3VuZGFyaWVzKTsKLSAgICBhdXRvIHRpbGVJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRl
eHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIGNsYW1wZWRBYnNv
bHV0ZVRpbGVCb3VuZGFyaWVzLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIHJlbmRlcmlu
Z01vZGUpOworICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRl
SW1hZ2VCdWZmZXIoYWJzb2x1dGVUaWxlQm91bmRhcmllcywgY2xhbXBlZEFic29sdXRlVGlsZUJv
dW5kYXJpZXMsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCByZW5kZXJpbmdNb2RlKTsK
ICAgICBpZiAoIXRpbGVJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0
LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM2LDcgKzIzNiw3IEBA
IEFmZmluZVRyYW5zZm9ybSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjYWwKICAgICByZXR1cm4gYWJz
b2x1dGVUcmFuc2Zvcm07CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29u
dGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRl
eHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCkKIHsKICAgICBJbnRSZWN0IHBhaW50UmVjdCA9IGNhbGN1
bGF0ZUltYWdlQnVmZmVyUmVjdCh0YXJnZXRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSk7CiAgICAg
Ly8gRG9uJ3QgY3JlYXRlIGVtcHR5IEltYWdlQnVmZmVycy4KQEAgLTI2NCw3ICsyNjQsNyBAQCBS
ZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6CiAgICAgcmV0dXJuIGltYWdl
QnVmZmVyOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNy
ZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBjbGFtcGVkUmVjdCwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbmRl
cmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQor
UmVmUHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZl
cihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZFJl
Y3QsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9k
ZSByZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAg
SW50U2l6ZSBjbGFtcGVkU2l6ZSA9IHJvdW5kZWRJbnRTaXplKGNsYW1wZWRSZWN0LnNpemUoKSk7
CiAgICAgRmxvYXRTaXplIHVuY2xhbXBlZFNpemUgPSByb3VuZGVkSW50U2l6ZSh0YXJnZXRSZWN0
LnNpemUoKSk7CkBAIC0zNTAsNyArMzUwLDcgQEAgYm9vbCBTVkdSZW5kZXJpbmdDb250ZXh0Ojpi
dWZmZXJGb3JlZ3JvdQogCiAgICAgLy8gQ3JlYXRlIGEgbmV3IGJ1ZmZlciBhbmQgcGFpbnQgdGhl
IGZvcmVncm91bmQgaW50byBpdC4KICAgICBpZiAoIWltYWdlQnVmZmVyKSB7Ci0gICAgICAgIGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJ
bnRTaXplKGJvdW5kaW5nQm94LnNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwg
bV9wYWludEluZm8tPmNvbnRleHQoKSk7CisgICAgICAgIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGJvdW5kaW5nQm94LnNp
emUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBtX3BhaW50SW5mby0+Y29udGV4
dCgpKTsKICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmlu
Z0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1JlbmRlcmluZ0NvbnRleHQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTYw
LDggKzYwLDggQEAgcHVibGljOgogICAgIHZvaWQgcHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChS
ZW5kZXJFbGVtZW50JiwgUGFpbnRJbmZvJiwgTmVlZHNHcmFwaGljc0NvbnRleHRTYXZlID0gRG9u
dFNhdmVHcmFwaGljc0NvbnRleHQpOwogICAgIGJvb2wgaXNSZW5kZXJpbmdQcmVwYXJlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nRmxhZ3MgJiBSZW5kZXJpbmdQcmVwYXJlZDsgfQogCi0g
ICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxv
YXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNm
b3JtLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNz
Q29udGV4dCogPSBudWxscHRyKTsKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVh
dGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgY2xhbXBlZFJlY3QsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSwgY29u
c3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VC
dWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiwgUmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxw
dHIpOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNv
bnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwg
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0KiA9IG51bGxwdHIpOwogCiAgICAgc3RhdGljIHZvaWQgcmVuZGVyU3VidHJlZVRv
Q29udGV4dChHcmFwaGljc0NvbnRleHQmLCBSZW5kZXJFbGVtZW50JiwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJik7CiAgICAgc3RhdGljIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxv
YXRSZWN0JiB0YXJnZXRSZWN0LCBSZWZQdHI8SW1hZ2VCdWZmZXI+JiwgYm9vbCBzYWZlVG9DbGVh
cik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIxNyw3ICsyMTcsNyBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IFNW
R0ltYWdlOjpuYXRpdmVJbWFnCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgp
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBp
ZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjQ3LDcgKzI0
Nyw3IEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKEcKICAgICBGbG9h
dFJlY3QgaW1hZ2VCdWZmZXJTaXplID0gem9vbWVkQ29udGFpbmVyUmVjdDsKICAgICBpbWFnZUJ1
ZmZlclNpemUuc2NhbGUoaW1hZ2VCdWZmZXJTY2FsZS53aWR0aCgpLCBpbWFnZUJ1ZmZlclNjYWxl
LmhlaWdodCgpKTsKIAotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBh
dGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGltYWdlQnVmZmVyU2l6ZS5zaXplKCkpLCAxLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGNvbnRleHQpOworICAgIGF1dG8gYnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGltYWdl
QnVmZmVyU2l6ZS5zaXplKCkpLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY29u
dGV4dCk7CiAgICAgaWYgKCFidWZmZXIpIC8vIEZhaWxlZCB0byBhbGxvY2F0ZSBidWZmZXIuCiAg
ICAgICAgIHJldHVybjsKICAgICBkcmF3Rm9yQ29udGFpbmVyKGJ1ZmZlci0+Y29udGV4dCgpLCBj
b250YWluZXJTaXplLCBjb250YWluZXJab29tLCBpbml0aWFsRnJhZ21lbnRVUkwsIGltYWdlQnVm
ZmVyU2l6ZSwgem9vbWVkQ29udGFpbmVyUmVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAkocmV2aXNpb24gMjc3OTE5
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTkzLDggKzkzLDggQEAgdm9pZCBGRUltYWdlOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUoKQogICAgIGlmICghbV9pbWFnZSAmJiAhcmVuZGVyZXIpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIC8vIEZFSW1hZ2UgcmVzdWx0cyBhcmUgYWx3YXlzIGluIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQgotICAgIHNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKTsKKyAgICAvLyBGRUltYWdlIHJlc3VsdHMgYXJlIGFsd2F5cyBpbiBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKQorICAgIHNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogCiAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdl
ID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKTsKICAgICBpZiAoIXJlc3VsdEltYWdlKQpJbmRl
eDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI3NzkyMCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsODkgQEAKKzIwMjEtMDUtMjIgIFNhbSBXZWluaWcgIDx3
ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIENvbnZlcnQgRGVzdGluYXRpb25Db2xvclNwYWNl
IGZyb20gYW4gZW51bSB0byBjbGFzcyB3cmFwcGluZyBhIHBsYXRmb3JtIGNvbG9yIHNwYWNlIChD
R0NvbG9yU3BhY2VSZWYgZm9yIENHIHBvcnRzLCBldGMuKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1dJUF0KKworICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1h
Z2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFn
ZURlY29kZXJBVkZQcm94eTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaDoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5Lm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUu
bW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2FwVG9WYWxp
ZEZyb250QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6
OmFwcGx5QmFja2luZ1N0b3JlVG9MYXllcik6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZUJp
dG1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlv
bjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpDb25m
aWd1cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuaDoK
KyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1h
cENHLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y29sb3JTcGFjZSk6CisgICAgICAgICogU2hhcmVk
L21hYy9Db2xvclNwYWNlRGF0YS5oOiBSZW1vdmVkLgorICAgICAgICAqIFNoYXJlZC9tYWMvQ29s
b3JTcGFjZURhdGEubW06IFJlbW92ZWQuCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW06CisgICAgICAgICgtW1dL
V2ViVmlldyBfdGFrZVZpZXdTbmFwc2hvdF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NuYXBz
aG90UmVjdDppbnRvSW1hZ2VPZldpZHRoOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmNvbG9yU3Bh
Y2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tOgorICAgICAgICAoV2Vi
S2l0OjpyZWN1cnNpdmVseU1hcElPU3VyZmFjZUJhY2tpbmdTdG9yZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1t
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y29sb3JTcGFjZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmNvbG9yU3BhY2UpOgorICAgICAgICAqIFdlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0lt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oklt
YWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29uZmlndXJhdGlvbik6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnByZXBh
cmVGb3JEaXNwbGF5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJv
eHk6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1
cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVN
YXBwZWRJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUltYWdlRGVjb2RlckFWRjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNvY29hLm1t
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5hdGl2ZUltYWdl
Rm9yQ3VycmVudFRpbWUpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OlBERlBs
dWdpbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVCaXRt
YXBVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVTaGFyZWFibGVCaXRtYXAp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVJbWFnZUJ1ZmZlciBj
b25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xp
ZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0RHJhZ0ltYWdlVG9CaXRtYXApOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oOgorICAgICAgICAoV2Vi
S2l0OjpEcmF3aW5nQXJlYTo6c2V0Q29sb3JTcGFjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c25hcHNob3RPcHRpb25zVG9CaXRt
YXBDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhKToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNl
dENvbG9yU3BhY2UpOgorCiAyMDIxLTA1LTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVwbGFjZSBMb2NrSG9sZGVyIHdpdGggTG9ja2VyIGluIGxvY2FsIHZh
cmlhYmxlcwpJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsNyAr
MjAzLDYgQEAgU2hhcmVkL2lvcy9XZWJUb3VjaEV2ZW50SU9TLmNwcAogCiBTaGFyZWQvbWFjL0F1
eGlsaWFyeVByb2Nlc3NNYWMubW0KIFNoYXJlZC9tYWMvQ29kZVNpZ25pbmcubW0KLVNoYXJlZC9t
YWMvQ29sb3JTcGFjZURhdGEubW0KIFNoYXJlZC9tYWMvSGFuZ0RldGVjdGlvbkRpc2FibGVyTWFj
Lm1tCiBTaGFyZWQvbWFjL05hdGl2ZVdlYkdlc3R1cmVFdmVudE1hYy5tbQogU2hhcmVkL21hYy9O
YXRpdmVXZWJLZXlib2FyZEV2ZW50TWFjLm1tCkluZGV4OiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgUmVtb3RlSW1hZ2VC
dWZmZXIgOiBwdWJsaWMgV2ViQ29yZQogICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVy
OjpwdXRQaXhlbEJ1ZmZlcjsKIAogcHVibGljOgotICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29y
ZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0
IHBpeGVsRm9ybWF0LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKQorICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgV2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZv
cm1hdCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCwgV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcikKICAgICB7CiAgICAgICAgIHJldHVybiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6dGVt
cGxhdGUgY3JlYXRlPFJlbW90ZUltYWdlQnVmZmVyPihzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNv
bG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBudWxscHRyLCByZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCBy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUy
LDcgKzE1Miw3IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGlkRmx1c2goRGkKICAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OkRpZEZsdXNoKGZs
dXNoSWRlbnRpZmllciwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgUmVuZGVyaW5nTW9k
ZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2Fs
U2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4
ZWxGb3JtYXQsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQVNTRVJU
KHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQgfHwgcmVuZGVyaW5n
TW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTQg
KzQ0LDE4IEBACiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCiBuYW1lc3BhY2UgRGlzcGxheUxp
c3QgewogY2xhc3MgRGlzcGxheUxpc3Q7CiBjbGFzcyBJdGVtOwogfQorCitjbGFzcyBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U7CiBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBOYXRpdmVJbWFnZTsKLWVu
dW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDogdWludDhfdDsKKwogZW51bSBjbGFzcyBS
ZW5kZXJpbmdNb2RlIDogYm9vbDsKKwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEyMSw3
ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jikgb3Zl
cnJpZGU7CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KLSAgICB2b2lkIGNyZWF0
ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNv
cmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgV2ViQ29yZTo6UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNl
JiwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcik7CiAgICAgdm9pZCB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KGNvbnN0IEdQVVByb2Nl
c3NXYWtldXBNZXNzYWdlQXJndW1lbnRzJik7CiAgICAgdm9pZCB1cGRhdGVTaGFyZWRNZW1vcnlG
b3JHZXRQaXhlbEJ1ZmZlcih1aW50MzJfdCBieXRlQ291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mJik7CiAgICAgdm9pZCBzZW1hcGhv
cmVGb3JHZXRQaXhlbEJ1ZmZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2Vt
YXBob3JlJik+JiYpOwpJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwCShyZXZpc2lvbiAy
Nzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMjggKzExMywyOCBAQCB2b2lk
IFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpzZXREYXRhCiAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZnJhbWVDb3VudCwgaW1hZ2VEZWNvZGVyLT5zaXplKCksIGltYWdlRGVjb2Rlci0+aGFzVHJh
Y2soKSwgV1RGTW92ZShmcmFtZUluZm9zKSk7CiB9CiAKLXZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGUHJveHk6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KEltYWdlRGVjb2RlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgc2l6ZV90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PFdURjo6TWFjaFNlbmRSaWdodD4mJiwgQ29sb3JTcGFjZURhdGEmJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpjcmVhdGVGcmFtZUltYWdl
QXRJbmRleChJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYsIE9w
dGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4mJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgQVNTRVJUKG1faW1hZ2VEZWNvZGVycy5jb250YWlucyhpZGVudGlmaWVy
KSk7CiAgICAgT3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJpZ2h0PiBzZW5kUmlnaHQ7Ci0gICAgQ29s
b3JTcGFjZURhdGEgY29sb3JTcGFjZURhdGE7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlOwogICAgIGlmICghbV9pbWFnZURlY29kZXJzLmNv
bnRhaW5zKGlkZW50aWZpZXIpKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
c2VuZFJpZ2h0KSwgV1RGTW92ZShjb2xvclNwYWNlRGF0YSkpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKHNlbmRSaWdodCksIFdURk1vdmUoY29sb3JTcGFjZSkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byBmcmFtZUltYWdlID0gbV9pbWFnZURlY29kZXJz
LmdldChpZGVudGlmaWVyKS0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgpOwogICAgIGlm
ICghZnJhbWVJbWFnZSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHNlbmRS
aWdodCksIFdURk1vdmUoY29sb3JTcGFjZURhdGEpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShzZW5kUmlnaHQpLCBXVEZNb3ZlKGNvbG9yU3BhY2UpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZUZy
b21JbWFnZShmcmFtZUltYWdlLmdldCgpKSkgewogICAgICAgICBzZW5kUmlnaHQgPSBzdXJmYWNl
LT5jcmVhdGVTZW5kUmlnaHQoKTsKLSAgICAgICAgY29sb3JTcGFjZURhdGEuY2dDb2xvclNwYWNl
ID0gc3VyZmFjZS0+Y29sb3JTcGFjZSgpOworICAgICAgICBjb2xvclNwYWNlID0gc3VyZmFjZS0+
Y29sb3JTcGFjZSgpOwogICAgIH0KIAotICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc2Vu
ZFJpZ2h0KSwgV1RGTW92ZShjb2xvclNwYWNlRGF0YSkpOworICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUoc2VuZFJpZ2h0KSwgV1RGTW92ZShjb2xvclNwYWNlKSk7CiB9CiAKIHZvaWQgUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZShJbWFnZURlY29k
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJB
VkZQcm94eS5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NyArMjcsNiBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBIQVZFKEFWQVNTRVRSRUFE
RVIpCiAKLSNpbmNsdWRlICJDb2xvclNwYWNlRGF0YS5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0lt
YWdlRGVjb2RlckFWRk9iakMuaD4KQEAgLTU3LDcgKzU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRlbGV0ZURlY29kZXIoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllcik7CiAgICAgdm9p
ZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIs
IGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRTaXplKTsKICAgICB2b2lkIHNldERhdGEoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc2l6ZV90IGZyYW1lQ291
bnQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUsIGJvb2wgaGFzVHJhY2ssIE9wdGlvbmFs
PFZlY3RvcjxXZWJDb3JlOjpJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4+JiYpPiYmKTsKLSAgICB2
b2lkIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZp
ZXIsIHNpemVfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXVEY6Ok1h
Y2hTZW5kUmlnaHQ+JiYsIENvbG9yU3BhY2VEYXRhJiYpPiYmKTsKKyAgICB2b2lkIGNyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIHNpemVfdCBp
bmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+
JiYsIE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4mJik+JiYpOwogICAg
IHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZp
ZXIsIHNpemVfdCBpbmRleCk7CiAKICAgICB2b2lkIGVuY29kZWREYXRhU3RhdHVzQ2hhbmdlZChX
ZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNzYWdlcy5pbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNzYWdlcy5p
bgkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBtZXNzYWdlcyAtPiBSZW1vdGVJbWFn
ZURlY29kZXJBVkZQcm94eSBOCiAgICAgRGVsZXRlRGVjb2RlcihXZWJDb3JlOjpJbWFnZURlY29k
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgU2V0RXhwZWN0ZWRDb250ZW50U2l6ZShXZWJD
b3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGxvbmcgbG9uZyBleHBlY3Rl
ZENvbnRlbnRTaXplKQogICAgIFNldERhdGEoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmll
ciBpZGVudGlmaWVyLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpIC0+IChzaXplX3QgZnJhbWVDb3VudCwgV2ViQ29yZTo6SW50U2l6ZSBz
aXplLCBib29sIGhhc1RyYWNrLCBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6SW1hZ2VEZWNvZGVy
OjpGcmFtZUluZm8+PiBmcmFtZUluZm9zKSBTeW5jaHJvbm91cwotICAgIENyZWF0ZUZyYW1lSW1h
Z2VBdEluZGV4KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgc2l6
ZV90IGluZGV4KSAtPiAoT3B0aW9uYWw8TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0LCBzdHJ1Y3Qg
V2ViS2l0OjpDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlKSBTeW5jaHJvbm91cworICAgIENyZWF0
ZUZyYW1lSW1hZ2VBdEluZGV4KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRp
Zmllciwgc2l6ZV90IGluZGV4KSAtPiAoT3B0aW9uYWw8TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0
LCBPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2UpIFN5
bmNocm9ub3VzCiAgICAgQ2xlYXJGcmFtZUJ1ZmZlckNhY2hlKFdlYkNvcmU6OkltYWdlRGVjb2Rl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgc2l6ZV90IGluZGV4KQogfQogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc0LDEwICs3NCw3IEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGU6OmNsZWFyKCkKIAog
dm9pZCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb246OmVuY29kZShJUEM6OkVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBpc09wYXF1ZTsKLSNpZiBQTEFURk9S
TShDT0NPQSkKLSAgICBlbmNvZGVyIDw8IGNvbG9yU3BhY2U7Ci0jZW5kaWYKKyAgICBlbmNvZGVy
IDw8IGNvbG9yU3BhY2UgPDwgaXNPcGFxdWU7CiAjaWYgVVNFKERJUkVDVDJEKQogICAgIFNoYXJl
ZE1lbW9yeTo6SGFuZGxlOjplbmNvZGVIYW5kbGUoZW5jb2Rlciwgc2hhcmVkUmVzb3VyY2VIYW5k
bGUpOwogCkBAIC04OCwyMSArODUsMjggQEAgdm9pZCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3Vy
YXRpb246OmVuYwogI2VuZGlmCiB9CiAKLWJvb2wgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0
aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb25maWd1cmF0aW9uJiBjb25maWd1
cmF0aW9uKQorYm9vbCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb246OmRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIsIENvbmZpZ3VyYXRpb24mIHJlc3VsdCkKIHsKLSAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGNvbmZpZ3VyYXRpb24uaXNPcGFxdWUpKQorICAgIE9wdGlvbmFsPE9wdGlv
bmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4+IGNvbG9yU3BhY2U7CisgICAgZGVj
b2RlciA+PiBjb2xvclNwYWNlOworICAgIGlmICghY29sb3JTcGFjZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29u
ZmlndXJhdGlvbi5jb2xvclNwYWNlKSkKKworICAgIE9wdGlvbmFsPGJvb2w+IGlzT3BhcXVlOwor
ICAgIGRlY29kZXIgPj4gaXNPcGFxdWU7CisgICAgaWYgKCFpc09wYXF1ZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotI2VuZGlmCisKKyAgICByZXN1bHQgPSBDb25maWd1cmF0aW9uIHsgV1RGTW92
ZSgqY29sb3JTcGFjZSksICppc09wYXF1ZSB9OworCiAjaWYgVVNFKERJUkVDVDJEKQogICAgIGF1
dG8gcHJvY2Vzc1NwZWNpZmljSGFuZGxlID0gU2hhcmVkTWVtb3J5OjpIYW5kbGU6OmRlY29kZUhh
bmRsZShkZWNvZGVyKTsKICAgICBpZiAoIXByb2Nlc3NTcGVjaWZpY0hhbmRsZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgY29uZmlndXJhdGlvbi5zaGFyZWRSZXNvdXJjZUhhbmRsZSA9
IHByb2Nlc3NTcGVjaWZpY0hhbmRsZS52YWx1ZSgpOworICAgIHJlc3VsdC5zaGFyZWRSZXNvdXJj
ZUhhbmRsZSA9IHByb2Nlc3NTcGVjaWZpY0hhbmRsZS52YWx1ZSgpOwogI2VuZGlmCisKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0
bWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFw
LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJp
dG1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxNSArMjYsMTIgQEAKICNwcmFnbWEgb25jZQog
CiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9EZXN0aW5hdGlv
bkNvbG9yU3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1BsYXRmb3JtSW1hZ2UuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSAi
Q29sb3JTcGFjZURhdGEuaCIKLSNlbmRpZgotCiAjaWYgVVNFKERJUkVDVDJEKQogaW50ZXJmYWNl
IElEMkQxQml0bWFwOwogaW50ZXJmYWNlIElEMkQxUmVuZGVyVGFyZ2V0OwpAQCAtNTUsMTAgKzUy
LDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBTaGFyZWFibGVCaXRtYXAgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVhYmxlQml0bWFwPiB7CiBwdWJsaWM6CiAgICAgc3Ry
dWN0IENvbmZpZ3VyYXRpb24geworICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlv
bkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CiAgICAgICAgIGJvb2wgaXNPcGFxdWUgeyBmYWxzZSB9
OwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNl
OwotI2VuZGlmCiAjaWYgVVNFKERJUkVDVDJEKQogICAgICAgICBtdXRhYmxlIEhBTkRMRSBzaGFy
ZWRSZXNvdXJjZUhhbmRsZSB7IG51bGxwdHIgfTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJldmlzaW9uIDI3NzkxOSkKKysr
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCSh3b3JraW5nIGNv
cHkpCkBAIC04Miw2ICs4Miw4IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQorI2lu
Y2x1ZGUgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKKwogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNYWNo
U2VuZFJpZ2h0OwogfQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMjUsOCArMzI1LDExIEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdl
YlAKICAgICBwYXJhbWV0ZXJzLmhhc1Jlc291cmNlTG9hZENsaWVudCA9IFdURk1vdmUoKmhhc1Jl
c291cmNlTG9hZENsaWVudCk7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpKQorICAgIE9wdGlvbmFsPE9wdGlvbmFsPERl
c3RpbmF0aW9uQ29sb3JTcGFjZT4+IGNvbG9yU3BhY2U7CisgICAgZGVjb2RlciA+PiBjb2xvclNw
YWNlOworICAgIGlmICghY29sb3JTcGFjZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICBwYXJhbWV0ZXJzLmNvbG9yU3BhY2UgPSBXVEZNb3ZlKCpjb2xvclNwYWNlKTsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXNlU3lzdGVtQXBwZWFyYW5jZSkpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAkod29y
a2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3Rv
cmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2aXR5U3RhdGUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0NvbG9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0U2l6ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTGF5b3V0TWlsZXN0b25lLmg+CkBAIC00OSwxMCArNTAs
NiBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKLSNpZiBQTEFURk9STShNQUMpCi0jaW5jbHVkZSAiQ29sb3JTcGFjZURhdGEuaCIK
LSNlbmRpZgotCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogI2luY2x1ZGUgPFdl
YkNvcmUvQXBwbGljYXRpb25NYW5pZmVzdC5oPgogI2VuZGlmCkBAIC0xNDYsNyArMTQzLDcgQEAg
c3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIGJvb2wgdXNlRWxldmF0ZWRV
c2VySW50ZXJmYWNlTGV2ZWwgeyBmYWxzZSB9OwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIENv
bG9yU3BhY2VEYXRhIGNvbG9yU3BhY2U7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRp
b25Db2xvclNwYWNlPiBjb2xvclNwYWNlOwogICAgIGJvb2wgdXNlU3lzdGVtQXBwZWFyYW5jZTsK
ICNlbmRpZgogI2lmIEVOQUJMRShNRVRBX1ZJRVdQT1JUKQpJbmRleDogU291cmNlL1dlYktpdC9T
aGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJh
Y2tpbmdTdG9yZS5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTIsMTkgKzIxMiwxOSBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2Fw
VG9WYWxpCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFR5cGU6OklPU3VyZmFjZToK
ICAgICAgICAgaWYgKHNob3VsZFVzZVJlbW90ZVJlbmRlcmluZykKLSAgICAgICAgICAgIG1fZnJv
bnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBtX2xheWVyLT5jb250ZXh0KCktPmVuc3VyZVJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSgpLmNyZWF0ZUltYWdlQnVmZmVyKG1fc2l6ZSwgV2ViQ29yZTo6
UmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQsIG1fc2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSk7CisgICAgICAgICAgICBtX2Zyb250QnVm
ZmVyLmltYWdlQnVmZmVyID0gbV9sYXllci0+Y29udGV4dCgpLT5lbnN1cmVSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkoKS5jcmVhdGVJbWFnZUJ1ZmZlcihtX3NpemUsIFdlYkNvcmU6OlJlbmRl
cmluZ01vZGU6OkFjY2VsZXJhdGVkLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSwgcGl4ZWxGb3JtYXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVy
PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRCYWNrZW5kPjo6Y3JlYXRlKG1f
c2l6ZSwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBwaXhl
bEZvcm1hdCgpLCBudWxscHRyKTsKKyAgICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZm
ZXIgPSBXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJT
aGFyZWFibGVNYXBwZWRCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwgbV9zY2FsZSwgV2ViQ29yZTo6
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHBpeGVsRm9ybWF0KCksIG51bGxwdHIpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIFR5cGU6OkJpdG1hcDoKICAgICAgICAgaWYgKHNob3Vs
ZFVzZVJlbW90ZVJlbmRlcmluZykKLSAgICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZm
ZXIgPSBtX2xheWVyLT5jb250ZXh0KCktPmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eSgpLmNyZWF0ZUltYWdlQnVmZmVyKG1fc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6VW5h
Y2NlbGVyYXRlZCwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
LCBwaXhlbEZvcm1hdCgpKTsKKyAgICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIg
PSBtX2xheWVyLT5jb250ZXh0KCktPmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgp
LmNyZWF0ZUltYWdlQnVmZmVyKG1fc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCks
IHBpeGVsRm9ybWF0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Zyb250QnVmZmVy
LmltYWdlQnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxVbmFjY2VsZXJhdGVk
SW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwgbV9zY2FsZSwgV2Vi
Q29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBwaXhlbEZvcm1hdCgpLCBudWxscHRy
KTsKKyAgICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpDb25j
cmV0ZUltYWdlQnVmZmVyPFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQ+
OjpjcmVhdGUobV9zaXplLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0cik7CiAgICAgICAgIGJyZWFrOwogI2lmIEVO
QUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKICAgICBjYXNlIFR5cGU6
OkNHRGlzcGxheUxpc3Q6Ci0gICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJD
b3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ+
OjpjcmVhdGUobV9zaXplLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IsIHBpeGVsRm9ybWF0KCksIG51bGxwdHIpOworICAgICAgICBtX2Zyb250QnVmZmVyLmlt
YWdlQnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxDR0Rpc3BsYXlMaXN0SW1h
Z2VCdWZmZXJCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHBpeGVsRm9ybWF0KCksIG51bGxwdHIpOwogICAgICAg
ICBicmVhazsKICNlbmRpZgogICAgIH0KQEAgLTM5Nyw3ICszOTcsNyBAQCB2b2lkIFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjphcHBseUJhY2tpCiAgICAgICAgICAgICBBU1NFUlQobV90eXBlID09
IFR5cGU6OklPU3VyZmFjZSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNvbnRlbnRzVHlwZSkgewog
ICAgICAgICAgICAgY2FzZSBMYXllckNvbnRlbnRzVHlwZTo6SU9TdXJmYWNlOiB7Ci0gICAgICAg
ICAgICAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2Vu
ZFJpZ2h0KFdURk1vdmUobWFjaFNlbmRSaWdodCksIFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVm
KCkpOworICAgICAgICAgICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6
Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKG1hY2hTZW5kUmlnaHQpLCBXZWJDb3JlOjpEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAgICAgICAgICAgbGF5ZXIuY29udGVu
dHMgPSBzdXJmYWNlID8gc3VyZmFjZS0+YXNMYXllckNvbnRlbnRzKCkgOiBuaWw7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
aGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDcgKzQwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgCiBzdGF0aWMg
Q0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1
cmF0aW9uJiBjb25maWd1cmF0aW9uKQogewotICAgIHJldHVybiBjb25maWd1cmF0aW9uLmNvbG9y
U3BhY2UuY2dDb2xvclNwYWNlLmdldCgpID86IHNSR0JDb2xvclNwYWNlUmVmKCk7CisgICAgcmV0
dXJuIGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZSA/IGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZS0+
cGxhdGZvcm1Db2xvclNwYWNlKCkgOiBXZWJDb3JlOjpzUkdCQ29sb3JTcGFjZVJlZigpOwogfQog
CiBzdGF0aWMgYm9vbCB3YW50c0V4dGVuZGVkUmFuZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpD
b25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL0NvbG9yU3BhY2VEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL0NvbG9yU3BhY2VEYXRhLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9Db2xvclNwYWNlRGF0YS5oCShub25leGlzdGVudCkKQEAgLTEsNDcgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgQ29sb3JTcGFjZURhdGFfaAotI2RlZmluZSBDb2xvclNw
YWNlRGF0YV9oCi0KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLW5hbWVzcGFjZSBJUEMg
ewotY2xhc3MgRGVjb2RlcjsKLWNsYXNzIEVuY29kZXI7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi1zdHJ1Y3QgQ29sb3JTcGFjZURhdGEgewotICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2Rl
ciYpIGNvbnN0OwotICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoSVBD
OjpEZWNvZGVyJiwgQ29sb3JTcGFjZURhdGEmKTsKLQotICAgIFJldGFpblB0cjxDR0NvbG9yU3Bh
Y2VSZWY+IGNnQ29sb3JTcGFjZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5k
aWYgLy8gQ29sb3JTcGFjZURhdGFfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL0NvbG9yU3BhY2VEYXRhLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9s
LXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3Bl
cnR5CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvbG9yU3BhY2VEYXRhLm1tCShy
ZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29sb3JTcGFjZURh
dGEubW0JKG5vbmV4aXN0ZW50KQpAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9y
dCAiY29uZmlnLmgiCi0jaW1wb3J0ICJDb2xvclNwYWNlRGF0YS5oIgotCi0jaW1wb3J0ICJBcmd1
bWVudENvZGVyc0NGLmgiCi0jaW1wb3J0ICJEZWNvZGVyLmgiCi0jaW1wb3J0ICJFbmNvZGVyLmgi
Ci0jaW1wb3J0IDx3dGYvRW51bVRyYWl0cy5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9p
ZCBDb2xvclNwYWNlRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsK
LSAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGJvb2w+KGNnQ29sb3JTcGFjZSk7Ci0gICAgaWYg
KGNnQ29sb3JTcGFjZSkKLSAgICAgICAgZW5jb2RlciA8PCBjZ0NvbG9yU3BhY2U7Ci19Ci0KLWJv
b2wgQ29sb3JTcGFjZURhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbG9yU3Bh
Y2VEYXRhJiBjb2xvclNwYWNlRGF0YSkKLXsKLSAgICBib29sIGhhc0NHQ29sb3JTcGFjZTsKLSAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0NHQ29sb3JTcGFjZSkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIGlmICghaGFzQ0dDb2xvclNwYWNlKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LQotICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2U7Ci0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShjb2xvclNwYWNlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAot
ICAgIGNvbG9yU3BhY2VEYXRhLmNnQ29sb3JTcGFjZSA9IFdURk1vdmUoY29sb3JTcGFjZSk7Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5Myw3
IEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29s
b3I7CiBjbGFzcyBDdXJzb3I7CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7CiBjbGFzcyBG
bG9hdFF1YWQ7CiBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBSZWdpb247CkBAIC0xODgsMTAgKzE4
OSw2IEBAIGNsYXNzIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQ7CiBjbGFzcyBJbnN0
YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0OwogI2VuZGlmCiAKLSNpZiBQ
TEFURk9STShDT0NPQSkKLXN0cnVjdCBDb2xvclNwYWNlRGF0YTsKLSNlbmRpZgotCiAjaWYgSEFW
RShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCiB1c2luZyBMYXllckhvc3RpbmdDb250ZXh0
SUQgPSB1aW50MzJfdDsKICNlbmRpZgpAQCAtNDI2LDcgKzQyMyw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgQ0dSZWN0IGJvdW5kc09mTGF5ZXJJbkxheWVyQmFja2VkV2luZG93Q29vcmRpbmF0
ZXMoQ0FMYXllciAqKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIENvbG9yU3BhY2VEYXRhIGNv
bG9yU3BhY2UoKSA9IDA7CisgICAgdmlydHVhbCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UgY29sb3JTcGFjZSgpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzaG93UGxhdGZvcm1Db250
ZXh0TWVudShOU01lbnUgKiwgV2ViQ29yZTo6SW50UG9pbnQpID0gMDsKIApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgs
NiArMTk4LDcgQEAgbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBBdHRhY2htZW50OwogY2xhc3MgQ29u
dGVudFdvcmxkOwogY2xhc3MgQ29udGV4dE1lbnVDbGllbnQ7CitjbGFzcyBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U7CiBjbGFzcyBFcnJvcjsKIGNsYXNzIEZpbmRDbGllbnQ7CiBjbGFzcyBGaW5kTWF0
Y2hlc0NsaWVudDsKQEAgLTM3Nyw3ICszNzgsNiBAQCBjbGFzcyBXZWJXaGVlbEV2ZW50Q29hbGVz
Y2VyOwogY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIAogc3RydWN0IEFwcEJvdW5kTmF2aWdhdGlv
blRlc3RpbmdEYXRhOwotc3RydWN0IENvbG9yU3BhY2VEYXRhOwogc3RydWN0IERhdGFEZXRlY3Rp
b25SZXN1bHQ7CiBzdHJ1Y3QgRG9jdW1lbnRFZGl0aW5nQ29udGV4dDsKIHN0cnVjdCBEb2N1bWVu
dEVkaXRpbmdDb250ZXh0UmVxdWVzdDsKQEAgLTExMzIsNyArMTEzMiw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9n
eU1ha2VGaXJzdFJlc3BvbmRlcigpOwogCi0gICAgQ29sb3JTcGFjZURhdGEgY29sb3JTcGFjZSgp
OworICAgIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKCk7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0JKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDE0LDcgKzEwMTQsNyBAQCAtIChSZWZQdHI8V2ViS2l0OjpWaWV3U25h
cHNob3Q+KV90YWtlVmllCiAjZWxzZQogICAgIFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0IHNu
YXBzaG90Rm9ybWF0ID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQ6OkJHUkE7CiAjZW5kaWYK
LSAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZShXZWJDb3JlOjpl
eHBhbmRlZEludFNpemUoc25hcHNob3RTaXplKSwgV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYo
KSwgc25hcHNob3RGb3JtYXQpOworICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFj
ZTo6Y3JlYXRlKFdlYkNvcmU6OmV4cGFuZGVkSW50U2l6ZShzbmFwc2hvdFNpemUpLCBXZWJDb3Jl
OjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgc25hcHNob3RGb3JtYXQpOwogICAgIGlm
ICghc3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgQ0FSZW5kZXJTZXJ2ZXJS
ZW5kZXJMYXllcldpdGhUcmFuc2Zvcm0oTUFDSF9QT1JUX05VTEwsIHNlbGYubGF5ZXIuY29udGV4
dC5jb250ZXh0SWQsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KHNlbGYubGF5ZXIpLCBzdXJm
YWNlLT5zdXJmYWNlKCksIDAsIDAsICZ0cmFuc2Zvcm0pOwpAQCAtMzA3OSw3ICszMDc5LDcgQEAg
LSAodm9pZClfc25hcHNob3RSZWN0OihDR1JlY3QpcmVjdEluVmlldwogICAgIE5TU3RyaW5nICpk
aXNwbGF5TmFtZSA9IHNlbGYud2luZG93LnNjcmVlbi5kaXNwbGF5Q29uZmlndXJhdGlvbi5uYW1l
OwogICAgIGlmIChkaXNwbGF5TmFtZSAmJiAhc2VsZi53aW5kb3cuaGlkZGVuKSB7CiAgICAgICAg
IFRyYWNlU2NvcGUgc25hcHNob3RTY29wZShSZW5kZXJTZXJ2ZXJTbmFwc2hvdFN0YXJ0LCBSZW5k
ZXJTZXJ2ZXJTbmFwc2hvdEVuZCk7Ci0gICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklP
U3VyZmFjZTo6Y3JlYXRlKFdlYkNvcmU6OmV4cGFuZGVkSW50U2l6ZShXZWJDb3JlOjpGbG9hdFNp
emUoaW1hZ2VTaXplKSksIFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCkpOworICAgICAgICBh
dXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZShXZWJDb3JlOjpleHBhbmRl
ZEludFNpemUoV2ViQ29yZTo6RmxvYXRTaXplKGltYWdlU2l6ZSkpLCBXZWJDb3JlOjpEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAgIGlmICghc3VyZmFjZSkgewogICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm47Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
LmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDYgKzk0LDcgQEAgY2xhc3MgUGFnZUNvbmZpZ3VyYXRp
b247CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTsKIGNsYXNzIEludFBvaW50Owogc3RydWN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkw7CiAKQEAg
LTE2OCw3ICsxNjksNiBAQCBjbGFzcyBXZWJGcmFtZVByb3h5OwogY2xhc3MgV2ViUGFnZVByb3h5
OwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7Ci1zdHJ1Y3Qg
Q29sb3JTcGFjZURhdGE7CiBzdHJ1Y3QgV2ViSGl0VGVzdFJlc3VsdERhdGE7CiAKIGVudW0gY2xh
c3MgQ29udGludWVVbnNhZmVMb2FkIDogYm9vbDsKQEAgLTMxMyw3ICszMTMsNyBAQCBwdWJsaWM6
CiAKICAgICBOU1ZpZXcgKmhpdFRlc3QoQ0dQb2ludCk7CiAKLSAgICBDb2xvclNwYWNlRGF0YSBj
b2xvclNwYWNlKCk7CisgICAgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3Bh
Y2UoKTsKIAogICAgIHZvaWQgc2V0VW5kZXJsYXlDb2xvcihOU0NvbG9yICopOwogICAgIE5TQ29s
b3IgKnVuZGVybGF5Q29sb3IoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIs
NyArMzIsNiBAQAogI2ltcG9ydCAiQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCIKICNp
bXBvcnQgIkFQSU5hdmlnYXRpb24uaCIKICNpbXBvcnQgIkFwcEtpdFNQSS5oIgotI2ltcG9ydCAi
Q29sb3JTcGFjZURhdGEuaCIKICNpbXBvcnQgIkNvcmVUZXh0SGVscGVycy5oIgogI2ltcG9ydCAi
Rm9udEluZm8uaCIKICNpbXBvcnQgIkZ1bGxzY3JlZW5DbGllbnQuaCIKQEAgLTkwLDYgKzg5LDcg
QEAKICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JT
ZXJpYWxpemF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbXBvc2l0aW9uSGlnaGxpZ2h0Lmg+
CisjaW1wb3J0IDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9EaWN0aW9uYXJ5TG9va3VwLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0RyYWdJdGVtLmg+CkBAIC0yNTAwLDcgKzI1MDAsNyBAQCB2b2lkIFdl
YlZpZXdJbXBsOjpwb3N0RmFrZU1vdXNlTW92ZWRFdmVuCiAgICAgbV9wYWdlLT5oYW5kbGVNb3Vz
ZUV2ZW50KHdlYkV2ZW50KTsKIH0KIAotQ29sb3JTcGFjZURhdGEgV2ViVmlld0ltcGw6OmNvbG9y
U3BhY2UoKQorV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIFdlYlZpZXdJbXBsOjpjb2xv
clNwYWNlKCkKIHsKICAgICBpZiAoIW1fY29sb3JTcGFjZSkgewogICAgICAgICBpZiAobV90YXJn
ZXRXaW5kb3dGb3JNb3ZlUHJlcGFyYXRpb24pCkBAIC0yNTExLDEwICsyNTExLDcgQEAgQ29sb3JT
cGFjZURhdGEgV2ViVmlld0ltcGw6OmNvbG9yU3BhY2UoKQogICAgICAgICAgICAgbV9jb2xvclNw
YWNlID0gW05TU2NyZWVuIG1haW5TY3JlZW5dLmNvbG9yU3BhY2U7CiAgICAgfQogCi0gICAgQ29s
b3JTcGFjZURhdGEgY29sb3JTcGFjZURhdGE7Ci0gICAgY29sb3JTcGFjZURhdGEuY2dDb2xvclNw
YWNlID0gW21fY29sb3JTcGFjZSBDR0NvbG9yU3BhY2VdOwotCi0gICAgcmV0dXJuIGNvbG9yU3Bh
Y2VEYXRhOworICAgIHJldHVybiBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgeyBbbV9j
b2xvclNwYWNlIENHQ29sb3JTcGFjZV0gfTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6c2V0VW5k
ZXJsYXlDb2xvcihOU0NvbG9yICp1bmRlcmxheUNvbG9yKQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZUhvc3QubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw2ICszNSw3IEBACiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlBy
b2Nlc3NQcm94eS5oIgogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisjaW1wb3J0
IDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9HcmFw
aGljc0NvbnRleHRDRy5oPgogI2ltcG9ydCA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KICNpbXBvcnQg
PFdlYkNvcmUvUGxhdGZvcm1MYXllci5oPgpAQCAtMzE3LDcgKzMxOCw3IEBAIHN0YXRpYyB2b2lk
IHJlY3Vyc2l2ZWx5TWFwSU9TdXJmYWNlQmFja2kKIHsKICAgICBpZiAobGF5ZXIuY29udGVudHMg
JiYgQ0ZHZXRUeXBlSUQoKF9fYnJpZGdlIENGVHlwZVJlZilsYXllci5jb250ZW50cykgPT0gQ0FN
YWNoUG9ydEdldFR5cGVJRCgpKSB7CiAgICAgICAgIE1hY2hTZW5kUmlnaHQgcG9ydCA9IE1hY2hT
ZW5kUmlnaHQ6OmNyZWF0ZShDQU1hY2hQb3J0R2V0UG9ydCgoX19icmlkZ2UgQ0FNYWNoUG9ydFJl
ZilsYXllci5jb250ZW50cykpOwotICAgICAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1
cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShwb3J0KSwgc1JHQkNvbG9yU3BhY2VS
ZWYoKSk7CisgICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRl
RnJvbVNlbmRSaWdodChXVEZNb3ZlKHBvcnQpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSk7CiAgICAgICAgIGxheWVyLmNvbnRlbnRzID0gc3VyZmFjZSA/IHN1cmZhY2Ut
PmFzTGF5ZXJDb250ZW50cygpIDogbmlsOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1ZpZXdJbldp
bmRvdygpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNWaXN1YWxseUlkbGUoKSBvdmVycmlkZTsKICAg
ICBMYXllckhvc3RpbmdNb2RlIHZpZXdMYXllckhvc3RpbmdNb2RlKCkgb3ZlcnJpZGU7Ci0gICAg
Q29sb3JTcGFjZURhdGEgY29sb3JTcGFjZSgpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6OkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRSZW1v
dGVMYXllclRyZWVSb290Tm9kZShSZW1vdGVMYXllclRyZWVOb2RlKikgb3ZlcnJpZGU7CiAgICAg
Q0FMYXllciAqYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpIGNvbnN0IG92ZXJyaWRl
OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJ
bXBsTWFjLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvUGFnZUNsaWVudEltcGxNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAK
IAogI2ltcG9ydCAiQVBJSGl0VGVzdFJlc3VsdC5oIgogI2ltcG9ydCAiQXBwS2l0U1BJLmgiCi0j
aW1wb3J0ICJDb2xvclNwYWNlRGF0YS5oIgogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2lt
cG9ydCAiRG93bmxvYWRQcm94eS5oIgogI2ltcG9ydCAiRHJhd2luZ0FyZWFQcm94eS5oIgpAQCAt
NjYsNiArNjUsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9Db2xvck1hYy5oPgogI2ltcG9ydCA8V2ViQ29yZS9DdXJzb3IuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RpY3Rp
b25hcnlMb29rdXAuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0l0ZW0uaD4KICNpbXBvcnQgPFdl
YkNvcmUvRmxvYXRSZWN0Lmg+CkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1w
bDo6dmlld1dpbGxNb3ZlVG9Bbm90aAogICAgIGNsZWFyQWxsRWRpdENvbW1hbmRzKCk7CiB9CiAK
LUNvbG9yU3BhY2VEYXRhIFBhZ2VDbGllbnRJbXBsOjpjb2xvclNwYWNlKCkKK1dlYkNvcmU6OkRl
c3RpbmF0aW9uQ29sb3JTcGFjZSBQYWdlQ2xpZW50SW1wbDo6Y29sb3JTcGFjZSgpCiB7CiAgICAg
cmV0dXJuIG1faW1wbC0+Y29sb3JTcGFjZSgpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhUHJveHkubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAotI2lt
cG9ydCAiQ29sb3JTcGFjZURhdGEuaCIKICNpbXBvcnQgIkRyYXdpbmdBcmVhTWVzc2FnZXMuaCIK
ICNpbXBvcnQgIkRyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oIgogI2ltcG9ydCAiTGF5ZXJUcmVl
Q29udGV4dC5oIgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94
eU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFn
ZVByb3h5TWFjLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBA
CiAjaWYgUExBVEZPUk0oTUFDKQogCiAjaW1wb3J0ICJBUElVSUNsaWVudC5oIgotI2ltcG9ydCAi
Q29sb3JTcGFjZURhdGEuaCIKICNpbXBvcnQgIkNvbm5lY3Rpb24uaCIKICNpbXBvcnQgIkRhdGFS
ZWZlcmVuY2UuaCIKICNpbXBvcnQgIkVkaXRvclN0YXRlLmgiCkBAIC01Miw2ICs1MSw3IEBACiAj
aW1wb3J0ICJXZWJQcmVmZXJlbmNlc0tleXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5o
IgogI2ltcG9ydCA8V2ViQ29yZS9BdHRyaWJ1dGVkU3RyaW5nLmg+CisjaW1wb3J0IDxXZWJDb3Jl
L0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5TG9v
a3VwLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdJdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dy
YXBoaWNzTGF5ZXIuaD4KQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXNz
aXN0aXZlVGVjaG5vbG9neU1hCiAgICAgcGFnZUNsaWVudCgpLmFzc2lzdGl2ZVRlY2hub2xvZ3lN
YWtlRmlyc3RSZXNwb25kZXIoKTsKIH0KIAotQ29sb3JTcGFjZURhdGEgV2ViUGFnZVByb3h5Ojpj
b2xvclNwYWNlKCkKK1dlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBXZWJQYWdlUHJveHk6
OmNvbG9yU3BhY2UoKQogewogICAgIHJldHVybiBwYWdlQ2xpZW50KCkuY29sb3JTcGFjZSgpOwog
fQpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNjM0LDggKzI2MzQsNiBAQAogCQkx
QTI1NkUzNjE4QTFBNzg4MDA2RkI5MjIgLyogV0tOYXZpZ2F0aW9uQWN0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLTmF2aWdhdGlvbkFjdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQTI1NkUzOTE4QTFBN0RGMDA2RkI5MjIgLyogV0tOYXZpZ2F0
aW9uQWN0aW9uSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tO
YXZpZ2F0aW9uQWN0aW9uSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUEyOEI4Q0IxQzgwRUQ1OTAwNkZENzQzIC8qIFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQTJBNEFGRDE1ODY5MzkyMDA5MEM5RTkgLyog
Q29sb3JTcGFjZURhdGEubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBDb2xvclNwYWNlRGF0YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUEyQTRB
RkUxNTg2OTM5MjAwOTBDOUU5IC8qIENvbG9yU3BhY2VEYXRhLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvbG9yU3BhY2VEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFBMkJCNkNDMTQxMTdBNUYwMDBGMzVENCAvKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyQkI2Q0Ux
NDExN0I0RDAwMEYzNUQ0IC8qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktp
dDIvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQTJCQjZDRjE0MTE3QjREMDAwRjM1RDQgLyog
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHBhdGggPSBEZXJp
dmVkU291cmNlcy9XZWJLaXQyL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaDsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTEwNDMwLDggKzEwNDI4LDYgQEAK
IAkJCQk5RjU0Rjg4RTE2NDg4RTg3MDA3REY4MUEgLyogQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbSAq
LywKIAkJCQlDRTExQUQ1MTFDQkM0ODJGMDA2ODFFRTUgLyogQ29kZVNpZ25pbmcuaCAqLywKIAkJ
CQlDRTExQUQ0RjFDQkM0N0Y4MDA2ODFFRTUgLyogQ29kZVNpZ25pbmcubW0gKi8sCi0JCQkJMUEy
QTRBRkUxNTg2OTM5MjAwOTBDOUU5IC8qIENvbG9yU3BhY2VEYXRhLmggKi8sCi0JCQkJMUEyQTRB
RkQxNTg2OTM5MjAwOTBDOUU5IC8qIENvbG9yU3BhY2VEYXRhLm1tICovLAogCQkJCTFBQzc1QTFD
MUIzMzY5NUUwMDU2NzQ1QiAvKiBIYW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMubW0gKi8sCiAJCQkJ
MkQ1MDM2NUQxQkNDNzkzRjAwRTIwQkIzIC8qIE5hdGl2ZVdlYkdlc3R1cmVFdmVudE1hYy5tbSAq
LywKIAkJCQlDMDJCRkYxRDEyNTE1MDJFMDA5Q0NCRUEgLyogTmF0aXZlV2ViS2V5Ym9hcmRFdmVu
dE1hYy5tbSAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDUsMTEgKzQ1LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKEltYWdlQnVmZmVyUwogCiBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gSW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb25maWd1cmF0aW9uKGNvbnN0IFBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGNv
bmZpZ3VyYXRpb247Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgY29uZmlndXJhdGlvbi5jb2xv
clNwYWNlID0geyBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSB9Owot
I2VuZGlmCi0gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CisgICAgcmV0dXJuIHsgcGFyYW1ldGVy
cy5jb2xvclNwYWNlIH07CiB9CiAKIEludFNpemUgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kOjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1l
dGVycykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQs
NyArOTQsNyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnByZXBhCiAgICAg
ICAgIG1hcmtDb250ZXh0TG9zdCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8g
ZGlzcGxheUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGRp
c3BsYXlCdWZmZXJTZW5kUmlnaHQpLCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICBhdXRvIGRp
c3BsYXlCdWZmZXIgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShkaXNw
bGF5QnVmZmVyU2VuZFJpZ2h0KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCkpOwogICAgIGlmIChkaXNwbGF5QnVmZmVyKSB7CiAgICAgICAgIGF1dG8mIHNjID0gcGxhdGZv
cm1Td2FwQ2hhaW4oKTsKICAgICAgICAgc2MucmVjeWNsZUJ1ZmZlcigpOwpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgOiBw
dWJsaWMgV2UKICAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6cmVzb2x1dGlv
blNjYWxlOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxSZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJD
b3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgc3RhdGljIFJlZlB0cjxSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYgY29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQogICAgIHsK
ICAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0gV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpQ
YXJhbWV0ZXJzIHsgc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1h
dCB9OwogICAgICAgICBpZiAoQmFja2VuZFR5cGU6OmNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShw
YXJhbWV0ZXJzKS5pc0VtcHR5KCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6Y3JlYXRlCiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q3Jl
YXRlSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIubG9naWNhbFNpemUoKSwgaW1hZ2VCdWZmZXIucmVu
ZGVyaW5nTW9kZSgpLCBpbWFnZUJ1ZmZlci5yZXNvbHV0aW9uU2NhbGUoKSwgaW1hZ2VCdWZmZXIu
Y29sb3JTcGFjZSgpLCBpbWFnZUJ1ZmZlci5waXhlbEZvcm1hdCgpLCBpbWFnZUJ1ZmZlci5yZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSksIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCks
IElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1Jl
cGx5KTsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9k
ZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkKK1JlZlB0cjxJbWFnZUJ1
ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25z
dCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBp
eGVsRm9ybWF0IHBpeGVsRm9ybWF0KQogewogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VC
dWZmZXI7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAkocmV2
aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTUgKzQz
LDE5IEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewor
CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogY2xhc3MgRGlzcGxheUxpc3Q7CiBjbGFzcyBJdGVt
OwogfQorCitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7CiBjbGFzcyBGbG9hdFNpemU7CiBj
bGFzcyBQaXhlbEJ1ZmZlcjsKKwogZW51bSBjbGFzcyBBbHBoYVByZW11bHRpcGxpY2F0aW9uIDog
dWludDhfdDsKLWVudW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDogdWludDhfdDsKIGVu
dW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJvb2w7CisKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC05Miw3ICs5Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCiAgICAgLy8gTWVzc2Fn
ZXMgdG8gYmUgc2VudC4KLSAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUlt
YWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01v
ZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNl
LCBXZWJDb3JlOjpQaXhlbEZvcm1hdCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVy
PiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpS
ZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFdlYkNvcmU6OkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYsIFdlYkNvcmU6OlBpeGVsRm9ybWF0KTsKICAgICBTdHJpbmcgZ2V0
RGF0YVVSTEZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRv
dWJsZT4gcXVhbGl0eSwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uLCBXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIFZlY3Rvcjx1aW50OF90PiBnZXREYXRhRm9y
SW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFs
aXR5LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgZmx1c2hEaXNwbGF5TGlzdEFuZENvbW1pdChj
b25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tl
bmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
clNoYXJlYWJsZU1hcHAKICAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKGJh
Y2tlbmRTaXplLCBiYWNrZW5kU2l6ZSwgY2FjaGVkQ0dDb2xvclNwYWNlKHBhcmFtZXRlcnMuY29s
b3JTcGFjZSksIElPU3VyZmFjZTo6Zm9ybWF0Rm9yUGl4ZWxGb3JtYXQocGFyYW1ldGVycy5waXhl
bEZvcm1hdCkpOworICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKGJhY2tlbmRT
aXplLCBiYWNrZW5kU2l6ZSwgcGFyYW1ldGVycy5jb2xvclNwYWNlLCBJT1N1cmZhY2U6OmZvcm1h
dEZvclBpeGVsRm9ybWF0KHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQpKTsKICAgICBpZiAoIXN1cmZh
Y2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC02NSw3ICs2NSw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCi0gICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJp
Z2h0KFdURk1vdmUoV1RGOjpnZXQ8TWFjaFNlbmRSaWdodD4oaGFuZGxlKSksIGNhY2hlZENHQ29s
b3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpKTsKKyAgICBhdXRvIHN1cmZhY2UgPSBJT1N1
cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShXVEY6OmdldDxNYWNoU2VuZFJpZ2h0
PihoYW5kbGUpKSwgcGFyYW1ldGVycy5jb2xvclNwYWNlKTsKICAgICBpZiAoIXN1cmZhY2UpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCShy
ZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEzICsyOCwxMiBA
QAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBIQVZFKEFWQVNTRVRSRUFERVIpCiAKLSNp
bmNsdWRlICJDb2xvclNwYWNlRGF0YS5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9u
LmgiCiAjaW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHlNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BVkFzc2V0TUlNRVR5cGVDYWNoZS5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvQ29sb3JTcGFjZUNHLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EZXN0aW5hdGlvbkNv
bG9yU3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lPU3VyZmFjZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvSW1hZ2VUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5o
PgpAQCAtMTY4LDE0ICsxNjcsMTQgQEAgUGxhdGZvcm1JbWFnZVB0ciBSZW1vdGVJbWFnZURlY29k
ZXJBVkY6OgogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIE9wdGlvbmFsPE1hY2hTZW5k
UmlnaHQ+IHNlbmRSaWdodDsKLSAgICAgICAgQ29sb3JTcGFjZURhdGEgY29sb3JTcGFjZTsKKyAg
ICAgICAgT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlOwogICAgICAg
ICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNz
YWdlczo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OkNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KG1faWRlbnRpZmllciwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHk6OkNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4OjpSZXBseShzZW5kUmlnaHQsIGNvbG9yU3BhY2Up
LCAwKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoIXNlbmRSaWdodCkKKyAg
ICAgICAgaWYgKCFzZW5kUmlnaHQgfHwgIWNvbG9yU3BhY2UpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9t
U2VuZFJpZ2h0KFdURk1vdmUoKnNlbmRSaWdodCksIGNvbG9yU3BhY2UuY2dDb2xvclNwYWNlLmdl
dCgpKTsKKyAgICAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVG
cm9tU2VuZFJpZ2h0KFdURk1vdmUoKnNlbmRSaWdodCksIFdURk1vdmUoKmNvbG9yU3BhY2UpKTsK
ICAgICAgICAgaWYgKCFzdXJmYWNlKQogICAgICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL01lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvY29jb2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0JKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcg
QEAgUmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllclByaXZhdGVSZQogICAgIGlmICghc2Vu
ZFJpZ2h0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gc3VyZmFjZSA9IFdl
YkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKCpzZW5kUmlnaHQp
LCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1
cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZSgqc2VuZFJpZ2h0KSwgV2ViQ29yZTo6
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgIGlmICghc3VyZmFjZSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTkxLDcgKzkxLDcgQEAgUmV0YWluUHRyPENWUGl4ZWxC
dWZmZXJSZWY+IE1lZGlhUGxheWVyUAogICAgIGlmICghc2VuZFJpZ2h0KQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3Jl
YXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKCpzZW5kUmlnaHQpLCBudWxscHRyKTsKKyAgICBhdXRv
IHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92
ZSgqc2VuZFJpZ2h0KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwog
ICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQkocmV2
aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5tbQkod29ya2luZyBjb3B5KQpAQCAtNjQ2LDcgKzY0Niw3IEBAIGlubGluZSBQREZQ
bHVnaW46OlBERlBsdWdpbihXZWJGcmFtZSYgZnIKICAgICBbbV9jb250YWluZXJMYXllciBhZGRT
dWJsYXllcjptX3Njcm9sbENvcm5lckxheWVyLmdldCgpXTsKICAgICBpZiAoW21fcGRmTGF5ZXJD
b250cm9sbGVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0RGV2aWNlQ29sb3JTcGFj
ZTopXSkgewogICAgICAgICBhdXRvIHZpZXcgPSBmcmFtZS5jb3JlRnJhbWUoKS0+dmlldygpOwot
ICAgICAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIgc2V0RGV2aWNlQ29sb3JTcGFjZTpzY3JlZW5D
b2xvclNwYWNlKHZpZXcpXTsKKyAgICAgICAgW21fcGRmTGF5ZXJDb250cm9sbGVyIHNldERldmlj
ZUNvbG9yU3BhY2U6c2NyZWVuQ29sb3JTcGFjZSh2aWV3KS5wbGF0Zm9ybUNvbG9yU3BhY2UoKV07
CiAgICAgfQogCiAjaWYgSEFWRShJTkNSRU1FTlRBTF9QREZfQVBJUykKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0
aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTIgKzU3LDcgQEAgUmVmUHRyPFNoYXJlYWJs
ZUJpdG1hcD4gY3JlYXRlU2hhcmVhYmxlQgogICAgIH0KIAogICAgIC8vIEZJWE1FOiBPbmx5IHNl
bGVjdCBFeHRlbmRlZENvbG9yIG9uIGltYWdlcyBrbm93biB0byBuZWVkIHdpZGUgZ2FtdXQuCi0g
ICAgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGJpdG1hcENvbmZpZ3VyYXRpb247Ci0j
aWYgVVNFKENHKQotICAgIGJpdG1hcENvbmZpZ3VyYXRpb24uY29sb3JTcGFjZS5jZ0NvbG9yU3Bh
Y2UgPSBzY3JlZW5Db2xvclNwYWNlKHJlbmRlckltYWdlLmZyYW1lKCkubWFpbkZyYW1lKCkudmll
dygpKTsKLSNlbmRpZgotCi0gICAgYXV0byBzaGFyZWRCaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGJpdG1hcFNpemUpLCBiaXRtYXBDb25maWd1cmF0aW9u
KTsKKyAgICBhdXRvIHNoYXJlZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVh
YmxlKEludFNpemUoYml0bWFwU2l6ZSksIHsgc2NyZWVuQ29sb3JTcGFjZShyZW5kZXJJbWFnZS5m
cmFtZSgpLm1haW5GcmFtZSgpLnZpZXcoKSkgfSk7CiAgICAgaWYgKCFzaGFyZWRCaXRtYXApCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2
aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyNyw3ICs5MjcsNyBAQCBX
ZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KiBXCiAKICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVJ
bWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5n
TW9kZSwgUmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkg
Y29uc3QKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwg
UmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQp
IGNvbnN0CiB7CiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zaG91bGRVc2VSZW1v
dGVSZW5kZXJpbmdGb3IocHVycG9zZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNDQsNyArMjQ0LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1v
bml0b3JGYWN0b3J5KiBkaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KCkgY29uc3QgZmluYWw7
CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVm
ZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3Jl
OjpSZW5kZXJpbmdNb2RlLCBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxG
b3JtYXQpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3Jl
YXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVy
aW5nTW9kZSwgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBjb25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBXZWJDb3JlOjpQaXhlbEZv
cm1hdCkgY29uc3QgZmluYWw7CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIFJlZlB0cjxXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5
SUQgaG9zdFdpbmRvd0Rpc3BsYXlJRCkgY29uc3QgZmluYWw7CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkRyYWdDbGllbnRNYWMubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtNjgsOSArNjgsNyBAQCB1c2luZyBEcmFnSW1hZ2UgPSBDR0ltYWdlUmVm
OwogCiBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY29udmVydERyYWdJbWFnZVRvQml0
bWFwKERyYWdJbWFnZSBpbWFnZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgRnJhbWUmIGZyYW1lKQog
ewotICAgIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBiaXRtYXBDb25maWd1cmF0aW9u
OwotICAgIGJpdG1hcENvbmZpZ3VyYXRpb24uY29sb3JTcGFjZS5jZ0NvbG9yU3BhY2UgPSBzY3Jl
ZW5Db2xvclNwYWNlKGZyYW1lLm1haW5GcmFtZSgpLnZpZXcoKSk7Ci0gICAgYXV0byBiaXRtYXAg
PSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzaXplLCBiaXRtYXBDb25maWd1cmF0
aW9uKTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxl
KHNpemUsIHsgc2NyZWVuQ29sb3JTcGFjZShmcmFtZS5tYWluRnJhbWUoKS52aWV3KCkpIH0pOwog
ICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCShyZXZpc2lvbiAy
Nzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIERlY29kZXI7CiB9CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIERp
c3BsYXlSZWZyZXNoTW9uaXRvcjsKIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVWaWV3OwpAQCAt
NjAsNyArNjEsNiBAQCBzdHJ1Y3QgVmlld3BvcnRBdHRyaWJ1dGVzOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotc3RydWN0IENvbG9yU3BhY2VEYXRhOwogY2xhc3MgTGF5ZXJUcmVlSG9zdDsKIHN0
cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IFdlYlByZWZlcmVuY2VzU3Rv
cmU7CkBAIC0xODAsNyArMTgwLDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICAvLyBVc2VkIGJ5IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLgogICAgIHZpcnR1YWwg
dm9pZCBzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNl
dENvbG9yU3BhY2UoY29uc3QgQ29sb3JTcGFjZURhdGEmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
c2V0Q29sb3JTcGFjZShPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+KSB7
IH0KIAogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwg
V2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21taXRU
cmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIHsg
fQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVz
c2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RHJhd2luZ0FyZWEubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw3ICszMSw3IEBAIG1lc3NhZ2VzIC0+IERyYXdpbmdBcmVhIE5vdFJlZkNvdW50
ZWQgewogICAgIC8vIFVzZWQgYnkgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuCiAgICAg
VXBkYXRlR2VvbWV0cnkoV2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6ZSwgYm9vbCBmbHVzaFN5bmNo
cm9ub3VzbHksIE1hY2hTZW5kUmlnaHQgZmVuY2VQb3J0KQogICAgIFNldERldmljZVNjYWxlRmFj
dG9yKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQotICAgIFNldENvbG9yU3BhY2Uoc3RydWN0IFdl
YktpdDo6Q29sb3JTcGFjZURhdGEgY29sb3JTcGFjZSkKKyAgICBTZXRDb2xvclNwYWNlKHN0cnVj
dCBPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2UpCiAg
ICAgU2V0Vmlld0V4cG9zZWRSZWN0KE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4
cG9zZWRSZWN0KQogCiAgICAgQWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNv
cmU6OkZsb2F0UG9pbnQgb3JpZ2luKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTk4LDcg
KzI1OTgsNyBAQCBzdGF0aWMgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIHNuCiAgICAg
U2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CiAjaWYgVVNFKENH
KQogICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zVXNlU2NyZWVuQ29sb3JTcGFjZSkK
LSAgICAgICAgY29uZmlndXJhdGlvbi5jb2xvclNwYWNlLmNnQ29sb3JTcGFjZSA9IHNjcmVlbkNv
bG9yU3BhY2UocGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCkpOworICAgICAgICBj
b25maWd1cmF0aW9uLmNvbG9yU3BhY2UgPSBzY3JlZW5Db2xvclNwYWNlKHBhZ2UuY29yZVBhZ2Uo
KS0+bWFpbkZyYW1lKCkudmlldygpKTsKICNlbmRpZgogICAgIHJldHVybiBjb25maWd1cmF0aW9u
OwogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5OCw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdXNwZW5kUGFpbnRpbmcoKTsKICAgICB2b2lkIHJlc3Vt
ZVBhaW50aW5nKCk7CiAgICAgdm9pZCBzZXRMYXllckhvc3RpbmdNb2RlKExheWVySG9zdGluZ01v
ZGUpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0Q29sb3JTcGFjZShjb25zdCBDb2xvclNwYWNlRGF0
YSYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29sb3JTcGFjZShPcHRpb25hbDxXZWJDb3JlOjpE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U+KSBvdmVycmlkZTsKICAgICB2b2lkIGFkZEZlbmNlKGNvbnN0
IFdURjo6TWFjaFNlbmRSaWdodCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBhZGRUcmFuc2FjdGlv
bkNhbGxiYWNrSUQoQ2FsbGJhY2tJRCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIFBMQVRGT1JNKE1BQykK
IAotI2ltcG9ydCAiQ29sb3JTcGFjZURhdGEuaCIKICNpbXBvcnQgIkRpc3BsYXlSZWZyZXNoTW9u
aXRvck1hYy5oIgogI2ltcG9ydCAiRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgiCiAjaW1wb3J0
ICJMYXllckhvc3RpbmdDb250ZXh0LmgiCkBAIC00NSw2ICs0NCw3IEBACiAjaW1wb3J0IDxwYWwv
c3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29y
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EZWJ1Z1BhZ2VPdmVybGF5cy5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNz
Q29udGV4dC5oPgpAQCAtOTEsNiArOTEsNyBAQCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YTo6VGlsZWRDb3JlCiAgICAgfSk7CiAKICAgICB1cGRhdGVMYXllckhvc3RpbmdDb250ZXh0KCk7
CisgICAgCiAgICAgc2V0Q29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpOwogCiAgICAg
aWYgKGF1dG8gdmlld0V4cG9zZWRSZWN0ID0gcGFyYW1ldGVycy52aWV3RXhwb3NlZFJlY3QpCkBA
IC02NTAsOSArNjUxLDkgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0
TAogICAgIHNlbmQoTWVzc2FnZXM6OkRyYXdpbmdBcmVhUHJveHk6OlVwZGF0ZUFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKDAsIGxheWVyVHJlZUNvbnRleHQpKTsKIH0KIAotdm9pZCBUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0Q29sb3JTcGFjZShjb25zdCBDb2xvclNwYWNlRGF0
YSYgY29sb3JTcGFjZSkKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldENv
bG9yU3BhY2UoT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNw
YWNlKQogewotICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0Q29sb3JTcGFjZShjb2xvclNw
YWNlLmNnQ29sb3JTcGFjZS5nZXQoKSk7CisgICAgbV9sYXllckhvc3RpbmdDb250ZXh0LT5zZXRD
b2xvclNwYWNlKGNvbG9yU3BhY2UgPyBjb2xvclNwYWNlLT5wbGF0Zm9ybUNvbG9yU3BhY2UoKSA6
IG51bGxwdHIpOwogfQogCiBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yPiBU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Y3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9y
KFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDI3NzkyMCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA1LTIyICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBDb252ZXJ0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSBmcm9tIGFuIGVudW0gdG8gY2xhc3Mgd3JhcHBpbmcgYSBwbGF0Zm9ybSBjb2xvciBz
cGFjZSAoQ0dDb2xvclNwYWNlUmVmIGZvciBDRyBwb3J0cywgZXRjLikKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjE0MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQubW06CisgICAgICAgIChXZWJDb250ZXh0TWVudUNsaWVudDo6aW1hZ2VG
b3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKToKKyAgICAgICAgVXBkYXRlIGZvciBu
ZXcgRGVzdGluYXRpb25Db2xvclNwYWNlIGNsYXNzLgorCiAyMDIxLTA1LTIyICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBMb2NrSG9sZGVyIHdpdGgg
TG9ja2VyIGluIGxvY2FsIHZhcmlhYmxlcwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQu
bW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0
Myw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0JpdG1hcEltYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0NvbnRleHRNZW51Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbnRleHRNZW51Q29udHJvbGxlci5o
PgorI2ltcG9ydCA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRG9jdW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRnJhbWVWaWV3Lmg+CkBAIC0yMTMsNyArMjE0LDcgQEAgUmV0YWluUHRyPE5TSW1hZ2U+
IFdlYkNvbnRleHRNZW51Q2xpZW50OgogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgLy8gVGhp
cyBpcyBlZmZlY3RpdmVseSBhIHNuYXBzaG90LCBhbmQgd2lsbCBiZSBwYWludGVkIGluIGFuIHVu
YWNjZWxlcmF0ZWQgZmFzaGlvbiBpbiBsaW5lIHdpdGggRnJhbWVTbmFwc2hvdHRpbmcuCi0gICAg
YXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdN
b2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJl
Y3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuIG5pbDsKIApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjc3OTIwKQorKysgVG9vbHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDUtMjIgIFNhbSBXZWluaWcg
IDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIENvbnZlcnQgRGVzdGluYXRpb25Db2xvclNw
YWNlIGZyb20gYW4gZW51bSB0byBjbGFzcyB3cmFwcGluZyBhIHBsYXRmb3JtIGNvbG9yIHNwYWNl
IChDR0NvbG9yU3BhY2VSZWYgZm9yIENHIHBvcnRzLCBldGMuKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTQzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICBVcGF0ZSB0ZXN0IHRvIHVzZSBuZXcgRGVzdGluYXRpb25Db2xvclNwYWNl
IHR5cGUuCisKIDIwMjEtMDUtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVz
CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElP
Uy5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1BpeGVs
RHVtcFN1cHBvcnRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNiAr
MzgsNyBAQAogI2ltcG9ydCA8Q29tbW9uQ3J5cHRvL0NvbW1vbkRpZ2VzdC5oPgogI2ltcG9ydCA8
TW9iaWxlQ29yZVNlcnZpY2VzL1VUQ29yZVR5cGVzLmg+CiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1
YXJ0ekNvcmUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dENHLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0lP
U3VyZmFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgpAQCAtNzEsNyAr
NzIsNyBAQCBSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0bWFwQ29udGV4CiAjZWxzZQog
ICAgIFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0IHNuYXBzaG90Rm9ybWF0ID0gV2ViQ29yZTo6
SU9TdXJmYWNlOjpGb3JtYXQ6OkJHUkE7CiAjZW5kaWYKLSAgICBhdXRvIHN1cmZhY2UgPSBXZWJD
b3JlOjpJT1N1cmZhY2U6OmNyZWF0ZShXZWJDb3JlOjpleHBhbmRlZEludFNpemUoc25hcHNob3RT
aXplKSwgV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSwgc25hcHNob3RGb3JtYXQpOworICAg
IGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlKFdlYkNvcmU6OmV4cGFu
ZGVkSW50U2l6ZShzbmFwc2hvdFNpemUpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgc25hcHNob3RGb3JtYXQpOwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjZ0lt
YWdlID0gc3VyZmFjZS0+Y3JlYXRlSW1hZ2UoKTsKIAogICAgIHZvaWQqIGJpdG1hcEJ1ZmZlciA9
IG51bGxwdHI7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlz
cGxheUxpc3RUZXN0c0NHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcAkocmV2aXNpb24gMjc3OTE5KQor
KysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHND
Ry5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIFVTRShDRykKIAor
I2luY2x1ZGUgPFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9EaXNwbGF5TGlzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RSZXBsYXllci5oPgpAQCAtNDYsOCArNDcs
OCBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIFJlcGxheVdpdGhNaXNzaW5nCiB7CiAgICAgRmxv
YXRSZWN0IGNvbnRleHRCb3VuZHMgeyAwLCAwLCBjb250ZXh0V2lkdGgsIGNvbnRleHRIZWlnaHQg
fTsKIAotICAgIGF1dG8gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0
aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKLSAgICBhdXRvIGNnQ29udGV4dCA9IGFkb3B0Q0Yo
Q0dCaXRtYXBDb250ZXh0Q3JlYXRlKG51bGxwdHIsIGNvbnRleHRXaWR0aCwgY29udGV4dEhlaWdo
dCwgOCwgNCAqIGNvbnRleHRXaWR0aCwgY29sb3JTcGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBoYVBy
ZW11bHRpcGxpZWRMYXN0KSk7CisgICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCk7CisgICAgYXV0byBjZ0NvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29u
dGV4dENyZWF0ZShudWxscHRyLCBjb250ZXh0V2lkdGgsIGNvbnRleHRIZWlnaHQsIDgsIDQgKiBj
b250ZXh0V2lkdGgsIGNvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCksIGtDR0ltYWdlQWxw
aGFQcmVtdWx0aXBsaWVkTGFzdCkpOwogICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0IHsgY2dD
b250ZXh0LmdldCgpIH07CiAKICAgICBhdXRvIGltYWdlQnVmZmVySWRlbnRpZmllciA9IFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKQEAgLTY5LDcgKzcwLDcgQEAgVEVT
VChEaXNwbGF5TGlzdFRlc3RzLCBSZXBsYXlXaXRoTWlzc2luZwogICAgIH0KIAogICAgIHsKLSAg
ICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoeyAxMDAsIDEwMCB9
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHsgMTAwLCAxMDAgfSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVy
YXRlZCwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgSW1hZ2VC
dWZmZXJIYXNoTWFwIGltYWdlQnVmZmVyTWFwOwogICAgICAgICBpbWFnZUJ1ZmZlck1hcC5zZXQo
aW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBpbWFnZUJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKIAo=
</data>
<flag name="commit-queue"
          id="450639"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429450</attachid>
            <date>2021-05-22 19:25:34 -0700</date>
            <delta_ts>2021-05-23 08:50:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226143-20210522192533.patch</filename>
            <type>text/plain</type>
            <size>276557</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5NSBAQAorMjAyMS0wNS0yMiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdyYXBwaW5nIGEgcGxhdGZvcm0gY29sb3Ig
c3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0Yy4pCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxNDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIGVudW1lcmF0aW9uIGJh
c2VkIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB3aXRoIGEgc3RydWN0IHdyYXBwaW5nCisgICAgICAg
IGEgcGxhdGZvcm0gY29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0
Yy4pLiBGb3IgcG9ydHMKKyAgICAgICAgdGhhdCBkb24ndCBoYXZlIGEgcGxhdGZvcm0gbGV2ZWwg
Y29sb3Igc3BhY2UgdHlwZSwgYSBidWlsdGluIFBsYXRmb3JtQ29sb3JTcGFjZQorICAgICAgICB0
eXBlIGlzIHByb3ZpZGVkIHRoYXQgaXMganVzdCB0aGUgb2xkIGVudW0gcmVuYW1lZCB0byBQbGF0
Zm9ybUNvbG9yU3BhY2U6Ok5hbWUuCisKKyAgICAgICAgVGhlIGdvYWwgb2YgdGhpcyBjaGFuZ2Ug
aXMgdG8gdW5pZnkgdGhlIGN1cnJlbnRseSBiaWZyYWNhdGVkIGNvbmNlcHQgb2YgYW4KKyAgICAg
ICAgSW1hZ2VCdWZmZXIncyBjb2xvciBzcGFjZSwgd2hpY2ggcHJldmlvc2x5IGNvdWxkIGVpdGhl
ciBiZSBiYXNlZCBvbiB0aGUgCisgICAgICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgYW5kIHJl
ZmxlY3RlZCBpbiB0aGUgY29sb3JTcGFjZSgpIG1lbWJlciBmdW5jdGlvbiwKKyAgICAgICAgb3Ig
KGZvciBDRyBwb3J0cykgYmFzZWQgb24gYSBDR0NvbG9yU3BhY2VSZWYsIHdpdGggdGhlIGNvbG9y
U3BhY2UoKSBmdW5jdGlvbgorICAgICAgICByZXR1cm5pbmcgc1JHQiBldmVuIGlmIHRoZSBJbWFn
ZUJ1ZmZlciB3YXMgbm90LiAKKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICog
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpD
bGlwYm9hcmRJdGVtVHlwZUxvYWRlcjo6c2FuaXRpemVEYXRhSWZOZWVkZWQpOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXJ0d29ya0ltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogU291cmNl
cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBJbWFnZUJpdG1hcCk6CisgICAgICAgIChXZWJD
b3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZEltYWdlQml0bWFwKToKKyAgICAgICAgKiBjc3Mv
Q1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXJJbWFn
ZVZhbHVlOjppbWFnZSk6CisgICAgICAgICogaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXN0b21QYWludENhbnZhczo6Y29waWVkSW1hZ2UgY29uc3QpOgor
ICAgICAgICAqIGh0bWwvQ3VzdG9tUGFpbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
dXN0b21QYWludEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6dG9NZWRp
YVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1h
Z2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGVCdWZmZXJGb3JQYWludGlu
ZyBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAgICog
aHRtbC9JbWFnZUJpdG1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJpdG1hcDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCaXRtYXA6OmNyZWF0ZVBy
b21pc2UpOgorICAgICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Y29tbWl0VG9QbGFjZWhvbGRlckNhbnZhcyk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojpjb2xvclNwYWNlIGNvbnN0KToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0OjpzZXRPdXRwdXRCaXRtYXApOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnRvRGVzdGluYXRpb25Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvUHJlZGVmaW5l
ZENvbG9yU3BhY2UpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNl
Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1
ZmZlckNhY2hlOjppbWFnZUJ1ZmZlcik6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVUZXh0VHJhY2tSZXByZXNl
bnRhdGlvbkltYWdlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6YnVpbGRBcnJheUZvckNhbnZhc1BhdHRlcm4p
OgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6
Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmg6CisgICAg
ICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVu
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvRnJhbWVTbmFwc2hv
dHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c25hcHNob3RGcmFtZVJlY3RXaXRoQ2xpcCk6
CisgICAgICAgICogcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNhbXBsZUNvbG9yKToKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9Ib3N0V2luZG93Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1Db2xv
clNwYWNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db2xvclNwYWNlOjpn
ZXQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmg6CisgICAgICAg
ICogcGxhdGZvcm0vU2NyZWVuUHJvcGVydGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVu
UHJvcGVydGllczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVlbkRhdGE6
OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5EYXRhOjpkZWNvZGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkJpdG1hcEltYWdlOjpwcmVUcmFuc2Zvcm1lZE5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3UGF0dGVybik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29s
b3I6OnRvQ29sb3JDb21wb25lbnRzSW5Db2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9y
Q29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJDb2xvckNvbXBvbmVudHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yU3BhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25j
cmV0ZUltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVy
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRl
ZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpk
cmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xv
clNwYWNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IpOgorICAgICAgICAoV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5l
YXJTUkdCKToKKyAgICAgICAgKFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxh
eVAzKToKKyAgICAgICAgKFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGVzdGluYXRp
b25Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAgICAo
V2ViQ29yZTo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OnBsYXRmb3JtQ29sb3JT
cGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OmRl
Y29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJCYWNrZW5kOjpnZXRQaXhlbEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OnB1dFBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyQmFja2VuZDo6dHJhbnNmb3JtQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OmNvbG9yU3BhY2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1BpeGVsQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlcjo6
ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckNvbnZlcnNp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZVZJbWFnZUNHSW1hZ2VGb3JtYXQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1hdDo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cmFuc2Zl
ckJHUkFQaXhlbEJ1ZmZlclRvSU9TdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZVZp
ZGVvU2FtcGxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGU6
OlJlbW90ZVZpZGVvU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxl
OjpzdXJmYWNlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRl
b1NhbXBsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyYXRjaEJ1ZmZlcjo6Z2V0U2NyYXRjaEJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhvdXRUaWxpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aG91dFRpbGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3UmVjdFNoYWRvd1dpdGhUaWxp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd0luc2V0U2hhZG93V2l0aFRp
bGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpibHVyU2hhZG93QnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdTaGFkb3dMYXllcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBh
aW50UmVzdWx0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyb0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDYWlyb0Jh
Y2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQ29sb3JDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9DR0NvbXBh
dGlibGVDb21wb25lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUNHQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6cGxhdGZvcm1Db252ZXJ0Q29sb3JDb21wb25lbnRzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvclNwYWNlQ0cuaDoKKyAgICAgICAgKFdlYkNvcmU6
OmNhY2hlZENHQ29sb3JTcGFjZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbnZhcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdXJmYWNlTWF0
Y2hlc1BhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlUG9vbDo6dGFrZVN1
cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVCaXRtYXBJbWFnZUFmdGVyU2NhbGluZ0lmTmVlZGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjb3B5Q0dJbWFnZUZv
ckVuY29kaW5nIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVJbWFnZTo6
c2luZ2xlUGl4ZWxTb2xpZENvbG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJC
YWNraW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW06CisgICAgICAg
IChXZWJDb3JlOjpJT1N1cmZhY2U6OnN1cmZhY2VGcm9tUG9vbCk6CisgICAgICAgIChXZWJDb3Jl
OjpJT1N1cmZhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0
ZUZyb21TZW5kUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9t
U3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21JbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21QaXhlbEJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OklPU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJT1N1cmZhY2U6OmVuc3VyZVBsYXRmb3JtQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJ
T1N1cmZhY2U6Om1pZ3JhdGVDb2xvclNwYWNlVG9Qcm9wZXJ0aWVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6cmVuZGVy
VG9JbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvSW1hZ2VUcmFu
c2ZlclNlc3Npb25WVC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlVHJhbnNmZXJTZXNzaW9u
VlQ6OmNyZWF0ZVBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9Q
aXhlbEJ1ZmZlckNvbmZvcm1lckNWLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBpeGVsQnVmZmVy
Q29uZm9ybWVyQ1Y6OmNyZWF0ZUltYWdlRnJvbVBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyOjpjcmVhdGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OmRlc3Ryb3kp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5n
Q29tbWFuZHM6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczo6Y29sb3JTcGFjZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5nQ29t
bWFuZHM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVn
aW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6R2V0UGl4ZWxCdWZmZXI6OkdldFBpeGVsQnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpHZXRQaXhlbEJ1ZmZlcjo6b3V0cHV0Rm9ybWF0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpHZXRQaXhlbEJ1ZmZlcjo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpHZXRQaXhlbEJ1ZmZlcjo6ZGVjb2Rl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNs
aXBUb0RyYXdpbmdDb21tYW5kcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlz
cGxhY2VtZW50TWFwOjpzZXRSZXN1bHRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRVRpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpwbGF0Zm9ybUFw
cGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVs
QnVmZmVyVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29u
dmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVm
ZmVjdDo6Y29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0aW5hdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRQaXhlbEJ1ZmZlclRvRGVzdGluYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpyZXF1aXJlc1BpeGVsQnVmZmVy
Q29sb3JTcGFjZUNvbnZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojp0
cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpv
cGVyYXRpbmdDb2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6c2V0T3BlcmF0aW5nQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OnJlc3VsdENvbG9yU3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZm
ZWN0OjpzZXRSZXN1bHRDb2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL1NvdXJjZUdyYXBoaWMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6
OlNvdXJjZUdyYXBoaWMpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5JT1MubW06CisgICAgICAgIChXZWJDb3JlOjpzY3Jl
ZW5Db2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RTY3JlZW5Qcm9wZXJ0aWVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5NYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpjb2xsZWN0U2NyZWVuUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpz
Y3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50
b0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9TY3JlZW5EaXNw
bGF5Q2FwdHVyZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5EaXNwbGF5Q2FwdHVy
ZXJNYWM6OmNyZWF0ZURpc3BsYXlTdHJlYW0pOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2U6OmltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9wbGF5
c3RhdGlvbi9QbGF0Zm9ybVNjcmVlblBsYXlTdGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNjcmVlbkNvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVl
bldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS93cGUvUGxhdGZvcm1TY3JlZW5XUEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oOgor
ICAgICAgICAoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YTo6ZGVjb2Rl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZpbHRlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
RmlsdGVyOjpidWlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmFsbG9jYXRlQmFj
a2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjphcHBseSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnBhdHRlcm5Gb3JEZXNjcmlwdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6OnBhaW50U3lz
dGVtUHJldmlld0JhZGdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRQcm9ncmVzc0Jhcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
aGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VDbGlwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291
cmNlQ2xpcHBlcjo6YXBwbHlDbGlwcGluZ1RvQ29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1hc2tBbmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6ZHJhd0NvbnRlbnRJ
bnRvTWFza0ltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
TWFza2VyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRl
cm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpjcmVh
dGVUaWxlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5n
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVh
dGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0Ojpi
dWZmZXJGb3JlZ3JvdW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0Nv
bnRleHQuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpwbGF0Zm9y
bUFwcGx5U29mdHdhcmUpOgorCiAyMDIxLTA1LTIyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiBDb21wb25lbnQgYXQgaW5kZXgg
MSBpcyAxLjAwMDAwMCBhbmQgaXMgZ3JlYXRlciB0aGFuIHRoZSBhbGxvd2VkIG1heGltdW0gMS4w
MDAwMDAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTE5Nyw2ICsxMTk3LDcg
QEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Rhc2hB
cnJheS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGVjb2RpbmdPcHRpb25zLmgKKyAgICBwbGF0
Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxh
eVJlZnJlc2hNb25pdG9yQ2xpZW50LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVm
cmVzaE1vbml0b3JGYWN0b3J5LmgKQEAgLTEyOTMsNiArMTI5NCw3IEBAIHNldChXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZl
ci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1BpeGVsRm9ybWF0LmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bUNvbG9yU3BhY2UuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1JbWFnZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1JbWFnZUJ1ZmZlci5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE5
NTAsNiArMTk1MCw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9Db2xvclV0aWxpdGllcy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhU
ZXh0Q29udHJvbGxlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvRGlzcGxheVJlZnJlc2hNb25pdG9yQ2xpZW50LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBi
b2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NE
YXRhU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgQ2xp
cGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2wKIAogICAgICAgICBhdXRvIGJpdG1hcElt
YWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgICAgICBiaXRtYXBJbWFnZS0+c2V0RGF0
YShXVEZNb3ZlKGJ1ZmZlclRvU2FuaXRpemUpLCB0cnVlKTsKLSAgICAgICAgYXV0byBpbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
LCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
ICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikgewogICAgICAgICAgICAgbV9kYXRhID0geyBudWxs
U3RyaW5nKCkgfTsKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1l
dGFkYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCB2b2lkIEFydHdvcmtJ
bWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyVG9TYW5pdGl6ZSA9IG1fY2FjaGVkSW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBhdXRv
IGJpdG1hcEltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZSgpOwogICAgIGJpdG1hcEltYWdlLT5z
ZXREYXRhKFdURk1vdmUoYnVmZmVyVG9TYW5pdGl6ZSksIHRydWUpOwotICAgIGF1dG8gaW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJpdG1hcEltYWdlLT5zaXplKCksIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAg
ICBpZiAoIWltYWdlQnVmZmVyKSB7CiAgICAgICAgIG1fY2FsbGJhY2sobnVsbHB0cik7CiAgICAg
ICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjc3OTIwKQorKysg
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEz
IEBACisyMDIxLTA1LTIyICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAg
ICBDb252ZXJ0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBmcm9tIGFuIGVudW0gdG8gY2xhc3Mgd3Jh
cHBpbmcgYSBwbGF0Zm9ybSBjb2xvciBzcGFjZSAoQ0dDb2xvclNwYWNlUmVmIGZvciBDRyBwb3J0
cywgZXRjLikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyNjE0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDoKKyAgICAgICAgQWRkIGFkZGlvbmFsIFNQ
SSBmb3Igd29ya2luZyB3aXRoIENHQ29sb3JTcGFjZVJlZnMuCisKIDIwMjEtMDUtMjEgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBZG9w
dCBRTEl0ZW0gaW4gV0tJbWFnZUV4dHJhY3Rpb25QcmV2aWV3Q29udHJvbGxlcgpJbmRleDogU291
cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGlj
c1NQSS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDIsNiArMjQyLDcgQEAgdHlwZWRlZiB2b2lkICgq
Q0dTTm90aWZ5UHJvY1B0cikoQ0dTTm90aQogCiBXVEZfRVhURVJOX0NfQkVHSU4KIAorYm9vbCBD
R0NvbG9yVHJhbnNmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyhDR0NvbG9yVHJhbnNmb3JtUmVm
LCBDR0NvbG9yU3BhY2VSZWYsIENHQ29sb3JSZW5kZXJpbmdJbnRlbnQsIGNvbnN0IENHRmxvYXQg
c3JjQ29tcG9uZW50c1tdLCBDR0Zsb2F0IGRzdENvbXBvbmVudHNbXSk7CiBDR0NvbG9yUmVmIENH
Q29sb3JUcmFuc2Zvcm1Db252ZXJ0Q29sb3IoQ0dDb2xvclRyYW5zZm9ybVJlZiwgQ0dDb2xvclJl
ZiwgQ0dDb2xvclJlbmRlcmluZ0ludGVudCk7CiBDR0NvbG9yVHJhbnNmb3JtUmVmIENHQ29sb3JU
cmFuc2Zvcm1DcmVhdGUoQ0dDb2xvclNwYWNlUmVmLCBDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRl
cyk7CiAKQEAgLTI5MSw2ICsyOTIsOCBAQCBDR1N0eWxlUmVmIENHR1N0YXRlR2V0U3R5bGUoQ0dH
U3RhdGVSZWYpCiBDR1N0eWxlVHlwZSBDR1N0eWxlR2V0VHlwZShDR1N0eWxlUmVmKTsKIGNvbnN0
IHZvaWQgKkNHU3R5bGVHZXREYXRhKENHU3R5bGVSZWYpOwogQ0dDb2xvclJlZiBDR1N0eWxlR2V0
Q29sb3IoQ0dTdHlsZVJlZik7Citib29sIENHQ29sb3JTcGFjZUVxdWFsVG9Db2xvclNwYWNlKENH
Q29sb3JTcGFjZVJlZiwgQ0dDb2xvclNwYWNlUmVmKTsKK0NGU3RyaW5nUmVmIENHQ29sb3JTcGFj
ZUNvcHlJQ0NQcm9maWxlRGVzY3JpcHRpb24oQ0dDb2xvclNwYWNlUmVmKTsKIAogI2lmIEhBVkUo
Q0dQQVRIX0dFVF9OVU1CRVJfT0ZfRUxFTUVOVFMpCiBzaXplX3QgQ0dQYXRoR2V0TnVtYmVyT2ZF
bGVtZW50cyhDR1BhdGhSZWYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0zOTk2LDYgKzM5OTYsNyBAQAogCQlCQzIzRjBEQjBEQUZGNEE0MDA5RkRDOTEgLyogR2VuZXJh
dGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMjNGMERBMERBRkY0QTQwMDlGREM5MSAvKiBHZW5lcmF0ZWRJbWFnZS5oICovOyB9OwogCQlC
QzI3NEIyRjE0MEVCRUIyMDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI3NEIyRTE0MEVC
RUIyMDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggKi87IH07CiAJCUJDMkNC
RjRFMTQwRjFBQkQwMDM4NzlCRSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJDQkY0QjE0MEYxQTY1MDAzODc5
QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oICovOyB9OworCQlCQzJDQ0ExMDI2NTVEREIyMDBC
OEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJDQ0EwRTI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGlu
YXRpb25Db2xvclNwYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQkMzMDVDN0EwQzA3NkJCMzAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzA1
Qzc4MEMwNzZCQjMwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50LmggKi87IH07CiAJCUJD
MzQ4QkQ0MERCN0Y4MDQwMDRBQkFCOSAvKiBKU1hNTEh0dHBSZXF1ZXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzM0OEJEMjBEQjdGODA0MDA0QUJB
QjkgLyogSlNYTUxIdHRwUmVxdWVzdC5oICovOyB9OwogCQlCQzM0OEJENDBEQjdGODA0MDA0QUJB
QkEgLyogV2ViQ29yZUpTQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDMzQ4QkQyMERCN0Y4MDQwMDRBQkFCQSAvKiBXZWJDb3JlSlNCdWls
dGlucy5oICovOyB9OwpAQCAtNDAwNyw2ICs0MDA4LDcgQEAKIAkJQkMzQkU5OTkwRTlDMUU1RDAw
ODM1NTg4IC8qIFJlbmRlclNjcm9sbGJhclRoZW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzNCRTk5ODBFOUMxRTVEMDA4MzU1ODggLyogUmVuZGVy
U2Nyb2xsYmFyVGhlbWUuaCAqLzsgfTsKIAkJQkMzQzM5QjcwQzBEM0Q4RDAwNUY0RDdBIC8qIEpT
TWVkaWFMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzNDMzlCNTBDMEQzRDhEMDA1RjREN0EgLyogSlNNZWRpYUxpc3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzNEODVCQzFDMEUyRTdBMDBE
M0I2MTAgLyogSlNIVE1MUGljdHVyZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODA4QjEzMUMwRTJCMzUwMDY2RkQ2QiAvKiBKU0hUTUxQ
aWN0dXJlRWxlbWVudC5oICovOyB9OworCQlCQzNFNjI0MzI2NTk3OTE4MDA1NDhBQ0QgLyogUGxh
dGZvcm1Db2xvclNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzNFNjI0MjI2NTk3OTE3MDA1NDhBQ0QgLyogUGxhdGZvcm1Db2xvclNwYWNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM0MzY4
RTgwQzIyNkUzMjAwNUVGQjVGIC8qIFJlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDNDM2OEU3MEMyMjZFMzIwMDVFRkI1RiAvKiBSZWN0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM0NkMxRkQw
QzBEREM4RjAwMjBDRkMzIC8qIEpTQ1NTRm9udEZhY2VSdWxlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzQ2QzFGMzBDMEREQzhGMDAyMENGQzMgLyog
SlNDU1NGb250RmFjZVJ1bGUuaCAqLzsgfTsKIAkJQkM0NkMxRkYwQzBEREM4RjAwMjBDRkMzIC8q
IEpTQ1NTSW1wb3J0UnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkM0NkMxRjUwQzBEREM4RjAwMjBDRkMzIC8qIEpTQ1NTSW1wb3J0UnVsZS5oICov
OyB9OwpAQCAtMTQxMzQsNiArMTQxMzYsOCBAQAogCQlCQzI5OTM1QzE3QTFERDU4MDBCQ0U4ODAg
LyogQ29sb3JJbnB1dFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ29sb3JJbnB1dFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJD
QkY0QjE0MEYxQTY1MDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMQ29udGV4dEV2ZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDMkNCRjdBMTQwRjFENTgwMDM4NzlCRSAvKiBKU1dlYkdMQ29u
dGV4dEV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2Vi
R0xDb250ZXh0RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJDQ0Ew
RTI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCQzJDQ0EwRjI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDMkVENTU0MEM2QjlCRDMwMDkyMEJGRiAvKiBKU0VsZW1lbnRD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFbGVtZW50
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyRUQ2QkIwQzZCRDJG
MDAwOTIwQkZGIC8qIEpTQXR0ckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0F0dHJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQzMwNUM3NzBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MT2JqZWN0RWxlbWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDE1Nyw2ICsxNDE2MSw3IEBACiAJ
CUJDM0JFOUFBMEU5QzI0MjAwMDgzNTU4OCAvKiBSZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNjcm9sbGJhclBhcnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzNDMzlCNDBDMEQzRDhEMDA1RjREN0Eg
LyogSlNNZWRpYUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTTWVkaWFMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzQzM5QjUw
QzBEM0Q4RDAwNUY0RDdBIC8qIEpTTWVkaWFMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU01lZGlhTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
QzNFNjI0MjI2NTk3OTE3MDA1NDhBQ0QgLyogUGxhdGZvcm1Db2xvclNwYWNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtQ29sb3JTcGFjZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQzQzNjhFNzBDMjI2RTMyMDA1RUZCNUYgLyogUmVjdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVjdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQzQ2QzFFRDBDMEREQkRGMDAyMENGQzMgLyogSlNDU1NSdWxlQ3VzdG9t
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NTU1J1bGVDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzQ2QzFGMjBDMEREQzhGMDAy
MENGQzMgLyogSlNDU1NGb250RmFjZVJ1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTQ1NTRm9udEZhY2VSdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTI2OTI1LDYgKzI2OTMwLDggQEAKIAkJCQkyRDJGQzA1NTE0NjBDRDZGMDAyNjM2
MzMgLyogQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaCAqLywKIAkJCQlBOENCNDEwMjBFODVCOEE1
MDAzMkM0RjAgLyogRGFzaEFycmF5LmggKi8sCiAJCQkJNTU1MTMwMDAxRTdDQ0NDQTAwQTY5RTM4
IC8qIERlY29kaW5nT3B0aW9ucy5oICovLAorCQkJCUJDMkNDQTBGMjY1NUREQjIwMEI4QzAzNSAv
KiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuY3BwICovLAorCQkJCUJDMkNDQTBFMjY1NUREQjIwMEI4
QzAzNSAvKiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCAqLywKIAkJCQk0OUZDN0E0RjE0NDRBRjVG
MDBBNUQ4NjQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCAqLywKIAkJCQk0OUFGMkQ2ODE0
NDM1RDA1MDAxNkE3ODQgLyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmggKi8sCiAJCQkJMkQyOUVD
QzExOTJFQ0M4MzAwOTg0Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5jcHAgKi8s
CkBAIC0yNzEwMSw2ICsyNzEwOCw3IEBACiAJCQkJQkM2MzVFOEIyNjRDMkNBRTAwMEVGMzNBIC8q
IFBpeGVsQnVmZmVyRm9ybWF0LmggKi8sCiAJCQkJQkM2MzVFOTAyNjRDNDY5RjAwMEVGMzNBIC8q
IFBpeGVsRm9ybWF0LmNwcCAqLywKIAkJCQlCQ0E1NTkxMjI2M0RCRDc5MDA3RjE5QjMgLyogUGl4
ZWxGb3JtYXQuaCAqLywKKwkJCQlCQzNFNjI0MjI2NTk3OTE3MDA1NDhBQ0QgLyogUGxhdGZvcm1D
b2xvclNwYWNlLmggKi8sCiAJCQkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3Jt
SW1hZ2UuaCAqLywKIAkJCQk3MkJBQzNBNjIzRTE3MzI4MDA4RDc0MUMgLyogUGxhdGZvcm1JbWFn
ZUJ1ZmZlci5oICovLAogCQkJCTU1MDY0MEFEMjQwNzU2REEwMEFBRTA0NSAvKiBQbGF0Zm9ybUlt
YWdlQnVmZmVyQmFja2VuZC5oICovLApAQCAtMzIyMzAsNiArMzIyMzgsNyBAQAogCQkJCTk0Nzk0
OTI1MUUwMzA4QUYwMDAxOEQ4NSAvKiBEZXByZWNhdGVkQ1NTT01WYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTQ3OTQ5M0QxRTA0NjNCNjAwMDE4RDg1IC8qIERlcHJlY2F0ZWRDU1NPTVZhbHVl
TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NCRDEyOUUxRjk4QjkwRTAwMTI3RDI5IC8qIERl
cHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMyQ0NBMTAyNjU1
RERCMjAwQjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDExMjIzQzUyNjAzNTY3RDAwQjBBMEI2IC8qIERldGFjaGVkUlRDRGF0YUNoYW5uZWwuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3QzlBQkY5MTM1N0EzQkYwMEY1NTAzRiAvKiBEZXRhaWxzTWFy
a2VyQ29udHJvbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFFRDc3OEQxQkUzMjk0MDAwREMxNzkx
IC8qIERldmljZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjI4MSw2ICszMjI5MCw3IEBACiAJCQkJ
MUNFOEQxMjcyNjE4NUMwRTAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZp
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTVGQkQ1MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNw
bGF5TGlzdEl0ZW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDM3N0Q1NzI1NTFDOUM2MDA4MEFC
RkUgLyogRGlzcGxheUxpc3RJdGVtVHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMzRTYyNDMy
NjU5NzkxODAwNTQ4QUNEIC8qIFBsYXRmb3JtQ29sb3JTcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUNFOEQxMkUyNjE4NjFDNDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRTVGQkQ3MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJl
Y29yZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1RkJEOTFDM0RENTFFMDAwN0EyQ0EgLyog
RGlzcGxheUxpc3RSZXBsYXllci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwODIsNyArMTA4Miw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBQaXhlbEJ1ZmZlckZv
cm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhl
bEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgICAgICBQ
aXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0
aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
IH07CiAgICAgICAgIGNvbnN0IEludFNpemUmIGxvZ2ljYWxTaXplID0gYnVmZmVyLT5sb2dpY2Fs
U2l6ZSgpOwogICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gYnVmZmVyLT5nZXRQaXhlbEJ1ZmZl
cihmb3JtYXQsIHsgSW50UG9pbnQ6Onplcm8oKSwgbG9naWNhbFNpemUgfSk7CiAgICAgICAgIGlm
ICghcGl4ZWxCdWZmZXIpIHsKQEAgLTMxODcsNyArMzE4Nyw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgUGl4ZWxCdWZmZXJG
b3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4
ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICAgICAg
UGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVs
dGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSB9OwogICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShm
b3JtYXQsIGltYWdlRGF0YVNpemUsIGFycmF5QnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwogICAg
ICAgICBpZiAoIXBpeGVsQnVmZmVyKSB7CiAgICAgICAgICAgICBmYWlsKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExNiw3ICsxMTYsNyBAQCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFs
dWU6OmltYWdlCiAKICAgICAvLyBUcmFuc2Zvcm0gSW1hZ2UgaW50byBJbWFnZUJ1ZmZlci4KICAg
ICAvLyBGSVhNRSAoMTQ5NDI0KTogVGhpcyBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlv
bmFsbHkgdW5hY2NlbGVyYXRlZC4KLSAgICBhdXRvIHRleHR1cmUgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIHRleHR1cmUgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAg
IGlmICghdGV4dHVyZSkKICAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCShyZXZpc2lvbiAy
Nzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTIsNyArOTIsNyBAQCBJbWFnZSogQ3VzdG9tUGFpbnRDYW52YXM6OmNv
cGllZEltYWdlKCkgCiAgICAgaWYgKCF3aWR0aCgpIHx8ICFoZWlnaHQoKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBtX2NvcGllZEJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCwgbnVsbHB0cik7CisgICAgbV9jb3BpZWRC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCwgbnVsbHB0cik7CiAgICAgaWYgKCFtX2NvcGllZEJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRJbWFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludEltYWdlLmNw
cAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludElt
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgQ3VzdG9tUGFp
bnRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGgKICAgICBhZGp1c3RlZFBhdHRlcm5DVE0uc2NhbGUo
MS4wIC8geFNjYWxlLCAxLjAgLyB5U2NhbGUpOwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZSh4
U2NhbGUsIHlTY2FsZSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKGFkanVzdGVkU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
LCBkZXN0Q29udGV4dCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBkZXN0Q29udGV4dCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybjsKICAgICBk
b0N1c3RvbVBhaW50KGJ1ZmZlci0+Y29udGV4dCgpLCBhZGp1c3RlZFNpemUpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MjUsNyArODI1LDcgQEAgUmVmUHRyPE1lZGlhU2FtcGxlPiBIVE1MQ2FudmFzRWxl
bWVudDo6dAogICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBsaWtlbHkgYmUgb3B0aW1pemVkIHF1aXRl
IGEgYml0LCBlc3BlY2lhbGx5IGluIHRoZSBjYXNlcyB3aGVyZQogICAgIC8vIHRoZSBJbWFnZUJ1
ZmZlciBpcyBiYWNrZWQgYnkgR1BVIG1lbW9yeSBhbHJlYWR5IGFuZC9vciBpcyBpbiB0aGUgR1BV
IHByb2Nlc3MgYnkKICAgICAvLyBzcGVjaWFsaXppbmcgdG9NZWRpYVNhbXBsZSgpIGluIEltYWdl
QnVmZmVyQmFja2VuZCB0byBub3QgdXNlIGdldFBpeGVsQnVmZmVyKCkuCi0gICAgYXV0byBwaXhl
bEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5nZXRQaXhlbEJ1ZmZlcih7IEFscGhhUHJlbXVsdGlwbGlj
YXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IgfSwgeyB7IH0sIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpIH0pOwor
ICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoeyBBbHBo
YVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfSwgeyB7IH0sIGltYWdlQnVmZmVyLT5sb2dp
Y2FsU2l6ZSgpIH0pOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCkBAIC05NTUsNyArOTU1LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRl
SW1hZ2VCdWZmZQogICAgIGF1dG8gW2NvbG9yU3BhY2UsIHBpeGVsRm9ybWF0XSA9IFsmXSB7CiAg
ICAgICAgIGlmIChtX2NvbnRleHQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpwYWlyIHsgbV9j
b250ZXh0LT5jb2xvclNwYWNlKCksIG1fY29udGV4dC0+cGl4ZWxGb3JtYXQoKSB9OwotICAgICAg
ICByZXR1cm4gc3RkOjpwYWlyIHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZv
cm1hdDo6QkdSQTggfTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6cGFpciB7IERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTggfTsKICAgICB9KCk7CiAKICAgICBz
ZXRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgcmVuZGVyaW5nTW9kZSwg
dXNlRGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1cnBvc2U6OkNhbnZhcywgMSwgY29sb3JTcGFjZSwg
cGl4ZWxGb3JtYXQsIGhvc3RXaW5kb3cpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDcgKzI4MSw3IEBA
IHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6bWVkaWFQbGF5ZXJGaXJzdFYKICAgICAgICAgcmVuZGVy
ZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSFRNTFZp
ZGVvRWxlbWVudDo6Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29uc3QKK1JlZlB0cjxJbWFnZUJ1ZmZl
cj4gSFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CiB7
CiAgICAgYXV0byogaG9zdFdpbmRvdyA9IGRvY3VtZW50KCkudmlldygpICYmIGRvY3VtZW50KCku
dmlldygpLT5yb290KCkgPyBkb2N1bWVudCgpLnZpZXcoKS0+cm9vdCgpLT5ob3N0V2luZG93KCkg
OiBudWxscHRyOwogICAgIGF1dG8gc2hvdWxkVXNlRGlzcGxheUxpc3QgPSBkb2N1bWVudCgpLnNl
dHRpbmdzKCkuZGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZCgpID8gU2hvdWxkVXNlRGlzcGxheUxp
c3Q6OlllcyA6IFNob3VsZFVzZURpc3BsYXlMaXN0OjpObzsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTIgKzMzLDEy
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNl
OwogY2xhc3MgSFRNTEltYWdlTG9hZGVyOwogY2xhc3MgSW1hZ2VCdWZmZXI7CiBjbGFzcyBSZW5k
ZXJWaWRlbzsKIGNsYXNzIFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlcjsKIAotZW51bSBjbGFzcyBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgOiB1aW50OF90OwogZW51bSBjbGFzcyBQaXhlbEZvcm1hdCA6
IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOwogCkBAIC03Miw3ICs3
Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCkgb3ZlcnJp
ZGU7CiAjZW5kaWYKIAotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQnVmZmVyRm9yUGFp
bnRpbmcoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgRGVzdGluYXRpb25Db2xvclNw
YWNlLCBQaXhlbEZvcm1hdCkgY29uc3Q7CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVC
dWZmZXJGb3JQYWludGluZyhjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCkgY29uc3Q7CiAKICAgICAvLyBVc2Vk
IGJ5IGNhbnZhcyB0byBnYWluIHJhdyBwaXhlbCBhY2Nlc3MKICAgICB2b2lkIHBhaW50Q3VycmVu
dEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCwx
MiArODQsMTIgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJpdG1hcDo6Y3JlYXRlSQogICAg
ICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25D
b250ZXh0KTsKICAgICAgICAgaWYgKGRvY3VtZW50LnZpZXcoKSAmJiBkb2N1bWVudC52aWV3KCkt
PnJvb3QoKSkgewogICAgICAgICAgICAgYXV0byBob3N0V2luZG93ID0gZG9jdW1lbnQudmlldygp
LT5yb290KCktPmhvc3RXaW5kb3coKTsKLSAgICAgICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0OjpObywgUmVu
ZGVyaW5nUHVycG9zZTo6Q2FudmFzLCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBob3N0V2luZG93KTsKKyAgICAgICAgICAg
IHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIFNob3VsZFVz
ZURpc3BsYXlMaXN0OjpObywgUmVuZGVyaW5nUHVycG9zZTo6Q2FudmFzLCByZXNvbHV0aW9uU2Nh
bGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGhv
c3RXaW5kb3cpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gRklYTUUgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzIxODQ4Mj4gRW5hYmxlIHdvcmtlciBiYXNlZCBJbWFnZUJpdG1hcCBhbmQgT2Zm
c2NyZWVuQ2FudmFzIGRyYXdpbmcgdG8gdXNlIEdQVSBQcm9jZXNzIHJlbmRlcmluZwotICAgIHJl
dHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25T
Y2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwor
ICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29s
dXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CiB9CiAKIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgSW1hZ2VCaXRtYXA6OlNvdXJjZSYm
IHNvdXJjZSwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgSW1hZ2VCaXRtYXA6OlByb21p
c2UmJiBwcm9taXNlKQpAQCAtNTA0LDcgKzUwNCw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0
ZVByb21pc2UoU2NyaXB0RXgKICAgICBhdXRvIG91dHB1dFNpemUgPSBvdXRwdXRTaXplRm9yU291
cmNlUmVjdGFuZ2xlKHNvdXJjZVJlY3RhbmdsZSwgb3B0aW9ucyk7CiAKICAgICAvLyBGSVhNRTog
QWRkIHN1cHBvcnQgZm9yIGNvbG9yIHNwYWNlcyAvIHBpeGVsIGZvcm1hdHMgdG8gSW1hZ2VCaXRt
YXAuCi0gICAgYXV0byBiaXRtYXBEYXRhID0gdmlkZW8tPmNyZWF0ZUJ1ZmZlckZvclBhaW50aW5n
KG91dHB1dFNpemUsIGJ1ZmZlclJlbmRlcmluZ01vZGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGJpdG1hcERhdGEgPSB2aWRlby0+
Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcob3V0cHV0U2l6ZSwgYnVmZmVyUmVuZGVyaW5nTW9kZSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAg
aWYgKCFiaXRtYXBEYXRhKSB7CiAgICAgICAgIHJlc29sdmVXaXRoQmxhbmtJbWFnZUJ1ZmZlcihz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCAhdGFpbnRzT3JpZ2luKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuc2VjdXJpdHlPcmlnaW4oKSwgKnZpZGVvKSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgICAg
IHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDUxLDE0ICs0NTEsMTQgQEAgdm9pZCBPZmZzY3JlZW5DYW52
YXM6OmNvbW1pdFRvUGxhY2Vob2xkZQogICAgICAgICBtX2NvbnRleHQtPnBhaW50UmVuZGVyaW5n
UmVzdWx0c1RvQ2FudmFzKCk7CiAKICAgICBpZiAobV9wbGFjZWhvbGRlckRhdGEtPmJ1ZmZlclBp
cGVTb3VyY2UpIHsKLSAgICAgICAgYXV0byBidWZmZXJDb3B5ID0gaW1hZ2VCdWZmZXItPmNvcHlS
ZWN0VG9CdWZmZXIoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxT
aXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGltYWdlQnVmZmVyLT5jb250ZXh0
KCkpOworICAgICAgICBhdXRvIGJ1ZmZlckNvcHkgPSBpbWFnZUJ1ZmZlci0+Y29weVJlY3RUb0J1
ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSks
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsK
ICAgICAgICAgaWYgKGJ1ZmZlckNvcHkpCiAgICAgICAgICAgICBtX3BsYWNlaG9sZGVyRGF0YS0+
YnVmZmVyUGlwZVNvdXJjZS0+aGFuZGxlKFdURk1vdmUoYnVmZmVyQ29weSkpOwogICAgIH0KIAog
ICAgIExvY2tlciBsb2NrZXIgeyBtX3BsYWNlaG9sZGVyRGF0YS0+YnVmZmVyTG9jayB9OwogICAg
IGJvb2wgc2hvdWxkUHVzaEJ1ZmZlciA9ICFtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1p
dEJ1ZmZlcjsKLSAgICBtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlciA9IGlt
YWdlQnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdl
QnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBpbWFn
ZUJ1ZmZlci0+Y29udGV4dCgpKTsKKyAgICBtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1p
dEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIGltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwogICAgIGlmIChtX3BsYWNlaG9sZGVy
RGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlciAmJiBzaG91bGRQdXNoQnVmZmVyKQogICAgICAgICBw
dXNoQnVmZmVyVG9QbGFjZWhvbGRlcigpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAi
Q1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VySGVscGVycy5o
IgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VyV29ya2VyU2FmZS5oIgotI2luY2x1ZGUgIkNv
bG9yU3BhY2UuaCIKICNpbmNsdWRlICJHcmFkaWVudC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVy
LmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNhY2hl
ZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2FudmFzUGF0dGVybi5oIgotI2luY2x1ZGUgIkNvbG9yU3Bh
Y2UuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJIVE1M
Q2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MVmlkZW9FbGVtZW50LmgiCkBAIC05MCw3ICs5MCw3IEBAIFBpeGVsRm9ybWF0IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQ6OnBpeGUKIAogRGVzdGluYXRpb25Db2xvclNwYWNlIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQ6OmNvbG9yU3BhY2UoKSBjb25zdAogewotICAgIHJldHVybiBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0I7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpOwogfQogCiBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRPcmln
aW4oY29uc3QgQ2FudmFzUGF0dGVybiogcGF0dGVybikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTMgKzM3LDEzIEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIENhbnZhc1BhdHRlcm47CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7
CiBjbGFzcyBIVE1MQ2FudmFzRWxlbWVudDsKIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiBjbGFz
cyBIVE1MVmlkZW9FbGVtZW50OwogY2xhc3MgSW1hZ2VCaXRtYXA7CiBjbGFzcyBUeXBlZE9NQ1NT
SW1hZ2VWYWx1ZTsKIGNsYXNzIFdlYkdMT2JqZWN0OwotZW51bSBjbGFzcyBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgOiB1aW50OF90OwogZW51bSBjbGFzcyBQaXhlbEZvcm1hdCA6IHVpbnQ4X3Q7CiAK
IGNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29u
dGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VC
aXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCB2b2lkIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4
dDo6c2V0T3V0CiAgICAgICAgIC8vIG9ubHkgcmVhc29uIEkgY2FuIHRoaW5rIG9mIGlzIHRvRGF0
YVVSTCgpLCBidXQgdGhhdCBkb2Vzbid0IHNlZW0gbGlrZQogICAgICAgICAvLyBhIGdvb2QgZW5v
dWdoIGFyZ3VtZW50IHRvIHdhc3RlIG1lbW9yeS4KIAotICAgICAgICBjYW52YXMoKS0+c2V0SW1h
Z2VCdWZmZXJBbmRNYXJrRGlydHkoSW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUoY2FudmFz
KCktPndpZHRoKCksIGNhbnZhcygpLT5oZWlnaHQoKSksIGJ1ZmZlclJlbmRlcmluZ01vZGUsIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CisgICAg
ICAgIGNhbnZhcygpLT5zZXRJbWFnZUJ1ZmZlckFuZE1hcmtEaXJ0eShJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKEZsb2F0U2l6ZShjYW52YXMoKS0+d2lkdGgoKSwgY2FudmFzKCktPmhlaWdodCgpKSwgYnVm
ZmVyUmVuZGVyaW5nTW9kZSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVs
Rm9ybWF0OjpCR1JBOCkpOwogCiAgICAgICAgIC8vIDEuNC4gU2V0IHRoZSBvdXRwdXQgYml0bWFw
J3Mgb3JpZ2luLWNsZWFuIGZsYWcgdG8gdHJ1ZS4KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmNwcAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiUHJlZGVmaW5lZENvbG9yU3BhY2UuaCIKIAotI2luY2x1ZGUgIkNvbG9yU3Bh
Y2UuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlIDx3dGYv
T3B0aW9uYWwuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsMzMgKzM1LDI2IEBAIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSB0b0Rlc3RpbmF0aW9uQ29sb3IKIHsKICAgICBzd2l0Y2ggKGNv
bG9yU3BhY2UpIHsKICAgICBjYXNlIFByZWRlZmluZWRDb2xvclNwYWNlOjpTUkdCOgotICAgICAg
ICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOworICAgICAgICByZXR1cm4gRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9S
X1NQQUNFX0RJU1BMQVlfUDMpCiAgICAgY2FzZSBQcmVkZWZpbmVkQ29sb3JTcGFjZTo6RGlzcGxh
eVAzOgotICAgICAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDM7Cisg
ICAgICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMygpOwogI2VuZGlm
CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQjsKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCk7CiB9CiAKLU9wdGlvbmFsPFByZWRlZmluZWRDb2xvclNwYWNlPiB0b1ByZWRlZmluZWRD
b2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKQorT3B0aW9uYWw8UHJl
ZGVmaW5lZENvbG9yU3BhY2U+IHRvUHJlZGVmaW5lZENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQogewotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewot
ICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOgorICAgIGlmIChjb2xvclNwYWNl
ID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKQogICAgICAgICByZXR1cm4gUHJlZGVm
aW5lZENvbG9yU3BhY2U6OlNSR0I7Ci0jaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNF
X0xJTkVBUl9TUkdCKQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdC
OgotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotI2VuZGlmCiAjaWYgRU5BQkxFKERFU1RJ
TkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCi0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OkRpc3BsYXlQMzoKKyAgICBpZiAoY29sb3JTcGFjZSA9PSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OkRpc3BsYXlQMygpKQogICAgICAgICByZXR1cm4gUHJlZGVmaW5lZENvbG9yU3BhY2U6
OkRpc3BsYXlQMzsKICNlbmRpZgotICAgIH0KIAotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuaAkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVu
dW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDogdWludDhfdDsKK2NsYXNzIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTsKIAogZW51bSBjbGFzcyBQcmVkZWZpbmVkQ29sb3JTcGFjZSB7CiAgICAg
U1JHQgpAQCAtNDAsNyArNDAsNyBAQCBlbnVtIGNsYXNzIFByZWRlZmluZWRDb2xvclNwYWNlIHsK
IH07CiAKIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB0b0Rlc3RpbmF0aW9uQ29sb3JTcGFjZShQcmVk
ZWZpbmVkQ29sb3JTcGFjZSk7Ci1PcHRpb25hbDxQcmVkZWZpbmVkQ29sb3JTcGFjZT4gdG9QcmVk
ZWZpbmVkQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpOworT3B0aW9uYWw8UHJlZGVm
aW5lZENvbG9yU3BhY2U+IHRvUHJlZGVmaW5lZENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJik7CiAKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAJKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjIzLDcgKzc2MjMsNyBAQCBJbWFnZUJ1ZmZlciog
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6CiAgICAgfQogCiAgICAgLy8gRklYTUUgKDE0OTQy
Myk6IFNob3VsZCB0aGlzIEltYWdlQnVmZmVyIGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJh
dGVkPwotICAgIGF1dG8gdGVtcCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gdGVtcCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6
ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCF0ZW1wKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICBBU1NFUlQobV9idWZmZXJzLnNpemUoKSA+IDApOwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVy
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFRleHRUcmFja0NvbnRh
aW5lckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTgsNyArNDE4LDcgQEAgUmVmUHRy
PEltYWdlPiBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YQogICAgIEludFJlY3QgcGFpbnRpbmdS
ZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+c2l6ZSgpKTsKIAogICAgIC8vIEZJWE1F
ICgxNDk0MjIpOiBUaGlzIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFj
Y2VsZXJhdGVkLgotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGlu
Z1JlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBkZXZpY2VTY2FsZUZh
Y3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwor
ICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGluZ1JlY3Quc2l6ZSgp
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFi
dWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExNDksNyArMTE0OSw3IEBAIGludCBJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YShE
dXBsaWMKICAgICAgICAgICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBpbWFnZUVs
ZW1lbnQtPmNhY2hlZEltYWdlKCkpIHsKICAgICAgICAgICAgICAgICBJbWFnZSogaW1hZ2UgPSBj
YWNoZWRJbWFnZS0+aW1hZ2UoKTsKICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2Ug
IT0gJkltYWdlOjpudWxsSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgp
OwogICAgICAgICAgICAgICAgICAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFnZSgq
aW1hZ2UsIEZsb2F0UG9pbnQoMCwgMCkpOwogICAgICAgICAgICAgICAgICAgICBkYXRhVVJMID0g
aW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CiAgICAgICAgICAgICAgICAgfQpA
QCAtMTE2Myw3ICsxMTYzLDcgQEAgaW50IEluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKER1
cGxpYwogCiAgICAgICAgICAgICB1bnNpZ25lZCB2aWRlb1dpZHRoID0gdmlkZW9FbGVtZW50LT52
aWRlb1dpZHRoKCk7CiAgICAgICAgICAgICB1bnNpZ25lZCB2aWRlb0hlaWdodCA9IHZpZGVvRWxl
bWVudC0+dmlkZW9IZWlnaHQoKTsKLSAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZSh2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCksIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwg
UGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZSh2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCksIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgICAgICAgICAgaWYgKGltYWdlQnVmZmVyKSB7CiAg
ICAgICAgICAgICAgICAgdmlkZW9FbGVtZW50LT5wYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChp
bWFnZUJ1ZmZlci0+Y29udGV4dCgpLCBGbG9hdFJlY3QoMCwgMCwgdmlkZW9XaWR0aCwgdmlkZW9I
ZWlnaHQpKTsKICAgICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVS
TCgiaW1hZ2UvcG5nIik7CkBAIC0xMjAwLDcgKzEyMDAsNyBAQCBpbnQgSW5zcGVjdG9yQ2FudmFz
OjppbmRleEZvckRhdGEoRHVwbGljCiAgICAgICAgICAgICBpZiAoYXV0byogY2FjaGVkSW1hZ2Ug
PSBjc3NJbWFnZVZhbHVlLT5pbWFnZSgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byogaW1hZ2Ug
PSBjYWNoZWRJbWFnZS0+aW1hZ2UoKTsKICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UgJiYgaW1h
Z2UgIT0gJkltYWdlOjpudWxsSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdN
b2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdS
QTgpOwogICAgICAgICAgICAgICAgICAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFn
ZSgqaW1hZ2UsIEZsb2F0UG9pbnQoMCwgMCkpOwogICAgICAgICAgICAgICAgICAgICBkYXRhVVJM
ID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CiAgICAgICAgICAgICAgICAg
fQpAQCAtMTQ0MSw3ICsxNDQxLDcgQEAgUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJ
bnNwZWN0bwogewogICAgIGF1dG8mIHRpbGVJbWFnZSA9IGNhbnZhc1BhdHRlcm4ucGF0dGVybigp
LnRpbGVJbWFnZSgpOwogICAgIEZsb2F0UmVjdCByZWN0ID0geyB7IH0sIHRpbGVJbWFnZS5zaXpl
KCkgfTsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0aWxlSW1h
Z2Uuc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZl
ciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGlsZUltYWdlLnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CiAgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5kcmF3TmF0aXZlSW1hZ2Uo
dGlsZUltYWdlLCB0aWxlSW1hZ2Uuc2l6ZSgpLCByZWN0LCByZWN0KTsKIAogICAgIFN0cmluZyBy
ZXBlYXQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyOSw3ICs1
MjksNyBAQCB2b2lkIENocm9tZTo6c2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vCiAgICAgbV9j
bGllbnQuc2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGhpZGRlblVudGlsTW91c2VNb3Zl
cyk7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gQ2hyb21lOjpjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgUmVuZGVy
aW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29uc3QKK1JlZlB0
cjxJbWFnZUJ1ZmZlcj4gQ2hyb21lOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
IHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSBwdXJw
b3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYg
Y29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fY2xpZW50LmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHB1cnBvc2Us
IHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZS5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldEN1cnNvcihjb25zdCBDdXJzb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEN1cnNvckhp
ZGRlblVudGlsTW91c2VNb3Zlcyhib29sKSBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwg
UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJl
bmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiwgUGl4ZWxGb3JtYXQpIGNvbnN0IG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKFdF
QkdMKQogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0
R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3Qgb3ZlcnJpZGU7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzOSw3
ICszMzksNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBEaXNwbGF5UmVmcmVzaE1vbml0
b3JGYWN0b3J5KiBkaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bnVsbHB0cjsgfQogCi0gICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2Us
IGZsb2F0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCB7IHJldHVy
biBudWxscHRyOyB9CisgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2Us
IGZsb2F0LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCkgY29uc3Qg
eyByZXR1cm4gbnVsbHB0cjsgfQogCiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIHZpcnR1YWwgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFw
aGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNu
YXBzaG90dGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNu
YXBzaG90dGluZy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVTbmFwc2hvdHRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDcgQEAg
UmVmUHRyPEltYWdlQnVmZmVyPiBzbmFwc2hvdEZyYW1lUmVjdFdpdAogICAgIGlmIChvcHRpb25z
ICYgU25hcHNob3RPcHRpb25zUGFpbnRXaXRoSW50ZWdyYWxTY2FsZUZhY3RvcikKICAgICAgICAg
c2NhbGVGYWN0b3IgPSBjZWlsZihzY2FsZUZhY3Rvcik7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgc2NhbGVGYWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1h
Z2VSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgc2NhbGVGYWN0b3Is
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAg
IGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBidWZmZXItPmNvbnRl
eHQoKS50cmFuc2xhdGUoLWltYWdlUmVjdC54KCksIC1pbWFnZVJlY3QueSgpKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcAkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBPcHRpb25hbDxMYWI8ZmxvYXQ+PiBzYW1wbGVD
b2xvcigKICAgICBpZiAoIXNuYXBzaG90KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IHNuYXBzaG90LT5nZXRQaXhlbEJ1ZmZlcih7IEFscGhh
UHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfSwgeyB7IH0sIHNuYXBzaG90LT5sb2dpY2FsU2l6
ZSgpIH0pOworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzbmFwc2hvdC0+Z2V0UGl4ZWxCdWZmZXIo
eyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpC
R1JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfSwgeyB7IH0sIHNuYXBzaG90LT5s
b2dpY2FsU2l6ZSgpIH0pOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGll
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGll
bnQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25z
b2xlQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI2LDcgKzMyNiw3IEBAIHZvaWQgUGFn
ZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjoKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChhdXRvKiBjYWNoZWRJbWFnZSA9IGltYWdlRWxlbWVudC5jYWNoZWRJbWFnZSgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1h
Z2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UgIT0g
JkltYWdlOjpudWxsSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
bmFwc2hvdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdCA9
IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuYXBzaG90LT5jb250ZXh0
KCkuZHJhd0ltYWdlKCppbWFnZSwgRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMzQzLDcgKzM0Myw3
IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjoKICAgICAgICAgICAg
ICAgICAgICAgICAgIGF1dG8mIHZpZGVvRWxlbWVudCA9IGRvd25jYXN0PEhUTUxWaWRlb0VsZW1l
bnQ+KCpub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHZpZGVvV2lkdGgg
PSB2aWRlb0VsZW1lbnQudmlkZW9XaWR0aCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgdmlkZW9IZWlnaHQgPSB2aWRlb0VsZW1lbnQudmlkZW9IZWlnaHQoKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHNuYXBzaG90ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUo
dmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRT
aXplKHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb0VsZW1lbnQucGFpbnRDdXJyZW50RnJhbWVJ
bkNvbnRleHQoc25hcHNob3QtPmNvbnRleHQoKSwgRmxvYXRSZWN0KDAsIDAsIHZpZGVvV2lkdGgs
IHZpZGVvSGVpZ2h0KSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICNlbmRpZgpAQCAtMzY4LDcg
KzM2OCw3IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjoKICAgICAg
ICAgICAgIHRhcmdldCA9IHBvc3NpYmxlVGFyZ2V0OwogICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRzKCkpKSB7CiAgICAgICAgICAg
ICAgICAgYXV0byBzb3VyY2VTaXplID0gaW1hZ2VEYXRhLT5zaXplKCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNvdXJjZVNpemUs
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvIGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzb3VyY2VTaXplLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KSkgewogICAgICAgICAgICAgICAgICAgICBJbnRSZWN0IHNvdXJjZVJlY3Qo
SW50UG9pbnQoKSwgc291cmNlU2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgIGltYWdlQnVmZmVy
LT5wdXRQaXhlbEJ1ZmZlcihpbWFnZURhdGEtPnBpeGVsQnVmZmVyKCksIHNvdXJjZVJlY3QpOwog
ICAgICAgICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1h
Z2UvcG5nIl9zLCBXVEY6Om51bGxvcHQsIFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
MTAgKzMxLDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cnNvcjsKK2NsYXNz
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIEltYWdlQnVmZmVyOwogCiBlbnVtIGNsYXNz
IFBpeGVsRm9ybWF0IDogdWludDhfdDsKLWVudW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNl
IDogdWludDhfdDsKIGVudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJvb2w7CiBlbnVtIGNsYXNz
IFJlbmRlcmluZ1B1cnBvc2UgOiB1aW50OF90OwogCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIEludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0
IEludFBvaW50JikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgSW50UmVjdCByb290Vmlld1RvQWNj
ZXNzaWJpbGl0eVNjcmVlbihjb25zdCBJbnRSZWN0JikgY29uc3QgPSAwOwogCi0gICAgdmlydHVh
bCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYs
IFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
RGVzdGluYXRpb25Db2xvclNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
LCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBpeGVsRm9ybWF0KSBjb25zdCA9IDA7CiAK
ICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+
IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRl
cyYpIGNvbnN0ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2Ny
ZWVuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TY3Jl
ZW4uaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1TY3JlZW4uaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCB0eXBlZGVmIHN0cnVj
dCBDR0NvbG9yU3BhY2UgKkNHQ29sb3JTcGFjCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgRGVzdGluYXRpb25Db2xvclNwYWNlOwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgRmxvYXRT
aXplOwogY2xhc3MgV2lkZ2V0OwpAQCAtNjgsNiArNjksNyBAQCB1c2luZyBJT1JlZ2lzdHJ5R1BV
SUQgPSBpbnQ2NF90OyAvLyBHbG9iCiBpbnQgc2NyZWVuRGVwdGgoV2lkZ2V0Kik7CiBpbnQgc2Ny
ZWVuRGVwdGhQZXJDb21wb25lbnQoV2lkZ2V0Kik7CiBib29sIHNjcmVlbklzTW9ub2Nocm9tZShX
aWRnZXQqKTsKK1dFQkNPUkVfRVhQT1JUIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBzY3JlZW5Db2xv
clNwYWNlKFdpZGdldCogPSBudWxscHRyKTsKIAogYm9vbCBzY3JlZW5IYXNJbnZlcnRlZENvbG9y
cygpOwogCkBAIC0xMDAsMTAgKzEwMiw2IEBAIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2NyZWVuU3Vw
cG9ydHNIaWdoRHkKIGNvbnN0ZXhwciBib29sIHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5n
ZShXaWRnZXQqID0gbnVsbHB0cikgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCi0jaWYgVVNF
KENHKQotV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclNwYWNlUmVmIHNjcmVlbkNvbG9yU3BhY2UoV2lk
Z2V0KiA9IG51bGxwdHIpOwotI2VuZGlmCi0KIHN0cnVjdCBTY3JlZW5Qcm9wZXJ0aWVzOwogc3Ry
dWN0IFNjcmVlbkRhdGE7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jl
ZW5Qcm9wZXJ0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
ZWVuUHJvcGVydGllcy5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JlZW5Qcm9wZXJ0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNp
bmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogI2luY2x1
ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CkBAIC0zMiwxNCArMzMsMTIgQEAKICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLXR5cGVkZWYg
c3RydWN0IENHQ29sb3JTcGFjZSAqQ0dDb2xvclNwYWNlUmVmOwotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0cnVjdCBTY3JlZW5EYXRhIHsKICAgICBGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxl
UmVjdDsKICAgICBGbG9hdFJlY3Qgc2NyZWVuUmVjdDsKLSAgICBSZXRhaW5QdHI8Q0dDb2xvclNw
YWNlUmVmPiBjb2xvclNwYWNlOworICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNl
IHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsKICAgICBpbnQgc2NyZWVuRGVwdGgg
eyAwIH07CiAgICAgaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50IHsgMCB9OwogICAgIGJvb2wg
c2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yIHsgZmFsc2UgfTsKQEAgLTU2LDEzICs1NSwxMiBA
QCBzdHJ1Y3QgU2NyZWVuRGF0YSB7CiAgICAgZmxvYXQgc2NhbGVGYWN0b3IgeyAxIH07CiAjZW5k
aWYKIAotICAgIGVudW0gY2xhc3MgQ29sb3JTcGFjZVR5cGUgOiB1aW50OF90IHsgTm9uZSwgTmFt
ZSwgRGF0YSB9OwogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8
U2NyZWVuRGF0YT4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKLXR5cGVkZWYgSGFzaE1hcDxQbGF0
Zm9ybURpc3BsYXlJRCwgU2NyZWVuRGF0YT4gU2NyZWVuRGF0YU1hcDsKLSAgICAKK3VzaW5nIFNj
cmVlbkRhdGFNYXAgPSBIYXNoTWFwPFBsYXRmb3JtRGlzcGxheUlELCBTY3JlZW5EYXRhPjsKKwog
c3RydWN0IFNjcmVlblByb3BlcnRpZXMgewogICAgIFBsYXRmb3JtRGlzcGxheUlEIHByaW1hcnlE
aXNwbGF5SUQgeyAwIH07CiAgICAgU2NyZWVuRGF0YU1hcCBzY3JlZW5EYXRhTWFwOwpAQCAtNzQs
OCArNzIsNyBAQCBzdHJ1Y3QgU2NyZWVuUHJvcGVydGllcyB7CiB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPgogdm9pZCBTY3JlZW5Qcm9wZXJ0aWVzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKIHsKLSAgICBlbmNvZGVyIDw8IHByaW1hcnlEaXNwbGF5SUQ7Ci0gICAgZW5jb2RlciA8PCBz
Y3JlZW5EYXRhTWFwOworICAgIGVuY29kZXIgPDwgcHJpbWFyeURpc3BsYXlJRCA8PCBzY3JlZW5E
YXRhTWFwOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtOTcsNyArOTQsNyBAQCBP
cHRpb25hbDxTY3JlZW5Qcm9wZXJ0aWVzPiBTY3JlZW5Qcm9wZXJ0CiB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgogdm9pZCBTY3JlZW5EYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
IHsKLSAgICBlbmNvZGVyIDw8IHNjcmVlbkF2YWlsYWJsZVJlY3QgPDwgc2NyZWVuUmVjdCA8PCBz
Y3JlZW5EZXB0aCA8PCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCA8PCBzY3JlZW5TdXBwb3J0c0V4
dGVuZGVkQ29sb3IgPDwgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMgPDwgc2NyZWVuU3VwcG9ydHNI
aWdoRHluYW1pY1JhbmdlOworICAgIGVuY29kZXIgPDwgc2NyZWVuQXZhaWxhYmxlUmVjdCA8PCBz
Y3JlZW5SZWN0IDw8IGNvbG9yU3BhY2UgPDwgc2NyZWVuRGVwdGggPDwgc2NyZWVuRGVwdGhQZXJD
b21wb25lbnQgPDwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yIDw8IHNjcmVlbkhhc0ludmVy
dGVkQ29sb3JzIDw8IHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZTsKIAogI2lmIFBMQVRG
T1JNKE1BQykKICAgICBlbmNvZGVyIDw8IHNjcmVlbklzTW9ub2Nocm9tZSA8PCBkaXNwbGF5TWFz
ayA8PCBncHVJRCA8PCBwcmVmZXJyZWREeW5hbWljUmFuZ2VNb2RlOwpAQCAtMTA2LDI4ICsxMDMs
NiBAQCB2b2lkIFNjcmVlbkRhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyCiAjaWYgUExBVEZP
Uk0oTUFDKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGVuY29kZXIgPDwgc2NhbGVGYWN0
b3I7CiAjZW5kaWYKLQotICAgIGlmIChjb2xvclNwYWNlKSB7Ci0gICAgICAgIC8vIFRyeSB0byBl
bmNvZGUgdGhlIG5hbWUuCi0gICAgICAgIGlmIChhdXRvIG5hbWUgPSBhZG9wdENGKENHQ29sb3JT
cGFjZUNvcHlOYW1lKGNvbG9yU3BhY2UuZ2V0KCkpKSkgewotICAgICAgICAgICAgZW5jb2RlciA8
PCBDb2xvclNwYWNlVHlwZTo6TmFtZTsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgU3RyaW5nKG5h
bWUuZ2V0KCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8g
RmFpbGluZyB0aGF0LCBqdXN0IGVuY29kZSB0aGUgSUNDIGRhdGEuCi0gICAgICAgIGlmIChhdXRv
IHByb2ZpbGVEYXRhID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDb3B5SUNDRGF0YShjb2xvclNwYWNl
LmdldCgpKSkpIHsKLSAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBpY2NEYXRhOwotICAgICAg
ICAgICAgaWNjRGF0YS5hcHBlbmQoQ0ZEYXRhR2V0Qnl0ZVB0cihwcm9maWxlRGF0YS5nZXQoKSks
IENGRGF0YUdldExlbmd0aChwcm9maWxlRGF0YS5nZXQoKSkpOwotCi0gICAgICAgICAgICBlbmNv
ZGVyIDw8IENvbG9yU3BhY2VUeXBlOjpEYXRhOwotICAgICAgICAgICAgZW5jb2RlciA8PCBpY2NE
YXRhOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gVGhl
IGNvbG9yIHNwYWNlIHdhcyBudWxsIG9yIGZhaWxlZCB0byBiZSBlbmNvZGVkLgotICAgIGVuY29k
ZXIgPDwgQ29sb3JTcGFjZVR5cGU6Ok5vbmU7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
CkBAIC0xNDMsNiArMTE4LDExIEBAIE9wdGlvbmFsPFNjcmVlbkRhdGE+IFNjcmVlbkRhdGE6OmRl
Y29kZSgKICAgICBpZiAoIXNjcmVlblJlY3QpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAKKyAgICBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IHNjcmVlbkNvbG9yU3BhY2U7
CisgICAgZGVjb2RlciA+PiBzY3JlZW5Db2xvclNwYWNlOworICAgIGlmICghc2NyZWVuQ29sb3JT
cGFjZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwogICAgIE9wdGlvbmFsPGludD4g
c2NyZWVuRGVwdGg7CiAgICAgZGVjb2RlciA+PiBzY3JlZW5EZXB0aDsKICAgICBpZiAoIXNjcmVl
bkRlcHRoKQpAQCAtMTk3LDQxICsxNzcsMTAgQEAgT3B0aW9uYWw8U2NyZWVuRGF0YT4gU2NyZWVu
RGF0YTo6ZGVjb2RlKAogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogI2VuZGlmCiAKLSAg
ICBDb2xvclNwYWNlVHlwZSBkYXRhVHlwZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFU
eXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIFJldGFpblB0cjxDR0Nv
bG9yU3BhY2VSZWY+IGNnQ29sb3JTcGFjZTsKLSAgICBzd2l0Y2ggKGRhdGFUeXBlKSB7Ci0gICAg
Y2FzZSBDb2xvclNwYWNlVHlwZTo6Tm9uZToKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDb2xv
clNwYWNlVHlwZTo6TmFtZTogewotICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGNvbG9yU3BhY2VO
YW1lOwotICAgICAgICBkZWNvZGVyID4+IGNvbG9yU3BhY2VOYW1lOwotICAgICAgICBBU1NFUlQo
Y29sb3JTcGFjZU5hbWUpOwotICAgICAgICBpZiAoIWNvbG9yU3BhY2VOYW1lKQotICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgICAgICBjZ0NvbG9yU3BhY2UgPSBhZG9wdENG
KENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGNvbG9yU3BhY2VOYW1lLT5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENvbG9yU3BhY2VU
eXBlOjpEYXRhOiB7Ci0gICAgICAgIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gaWNjRGF0YTsK
LSAgICAgICAgZGVjb2RlciA+PiBpY2NEYXRhOwotICAgICAgICBBU1NFUlQoaWNjRGF0YSk7Ci0g
ICAgICAgIGlmICghaWNjRGF0YSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0K
LSAgICAgICAgYXV0byBjb2xvclNwYWNlRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGljY0RhdGEtPmRhdGEoKSwgaWNjRGF0YS0+c2l6ZSgpKSk7Ci0gICAg
ICAgIGNnQ29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aElDQ0RhdGEo
Y29sb3JTcGFjZURhdGEuZ2V0KCkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIH0KLQog
ICAgIHJldHVybiB7IHsKICAgICAgICAgV1RGTW92ZSgqc2NyZWVuQXZhaWxhYmxlUmVjdCksCiAg
ICAgICAgIFdURk1vdmUoKnNjcmVlblJlY3QpLAotICAgICAgICBXVEZNb3ZlKGNnQ29sb3JTcGFj
ZSksCisgICAgICAgIFdURk1vdmUoKnNjcmVlbkNvbG9yU3BhY2UpLAogICAgICAgICBXVEZNb3Zl
KCpzY3JlZW5EZXB0aCksCiAgICAgICAgIFdURk1vdmUoKnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50
KSwKICAgICAgICAgV1RGTW92ZSgqc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKSwKQEAgLTI1
MCwxNiArMTk5LDMgQEAgT3B0aW9uYWw8U2NyZWVuRGF0YT4gU2NyZWVuRGF0YTo6ZGVjb2RlKAog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0
ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlNjcmVlbkRhdGE6OkNvbG9yU3BhY2VUeXBl
PiB7Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAgICAgICAgV2ViQ29yZTo6U2Ny
ZWVuRGF0YTo6Q29sb3JTcGFjZVR5cGUsCi0gICAgICAgIFdlYkNvcmU6OlNjcmVlbkRhdGE6OkNv
bG9yU3BhY2VUeXBlOjpOb25lLAotICAgICAgICBXZWJDb3JlOjpTY3JlZW5EYXRhOjpDb2xvclNw
YWNlVHlwZTo6TmFtZSwKLSAgICAgICAgV2ViQ29yZTo6U2NyZWVuRGF0YTo6Q29sb3JTcGFjZVR5
cGU6OkRhdGEKLSAgICA+OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NCw3ICsxNjQsNyBAQCBSZWZQdHI8TmF0aXZlSW1h
Z2U+IEJpdG1hcEltYWdlOjpwcmVUcmFuCiAgICAgICAgIHJldHVybiBpbWFnZTsKIAogICAgIGF1
dG8gY29ycmVjdGVkU2l6ZUZsb2F0ID0gY29ycmVjdGVkU2l6ZSA/IEZsb2F0U2l6ZShjb3JyZWN0
ZWRTaXplLnZhbHVlKCkpIDogc2l6ZSgpOwotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShjb3JyZWN0ZWRTaXplRmxvYXQsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
IDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY29ycmVjdGVkU2l6ZUZsb2F0LCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIGltYWdlOwogCkBAIC0zNTIsNyArMzUyLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1Bh
dHRlcm4oR3JhcGhpY3NDbwogICAgIH0KIAogICAgIGlmICghbV9jYWNoZWRJbWFnZSkgewotICAg
ICAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4
cGFuZGVkSW50U2l6ZSh0aWxlUmVjdC5zaXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IsIGN0eHQpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZSh0aWxlUmVjdC5zaXplKCkpLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgY3R4dCk7CiAgICAgICAgIGlmICghYnVmZmVyKQogICAgICAg
ICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3IuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Db2xvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw3ICsxNjgsNyBAQCBDb2xv
ckNvbXBvbmVudHM8ZmxvYXQsIDQ+IENvbG9yOjp0b0NvbG9yCiAgICAgcmV0dXJuIGNvbnZlckNv
bG9yQ29tcG9uZW50cyhpbnB1dENvbG9yU3BhY2UsIGNvbXBvbmVudHMsIG91dHB1dENvbG9yU3Bh
Y2UpOwogfQogCi1Db2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IENvbG9yOjp0b0NvbG9yQ29tcG9u
ZW50c0luQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugb3V0cHV0Q29sb3JTcGFjZSkg
Y29uc3QKK0NvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gQ29sb3I6OnRvQ29sb3JDb21wb25lbnRz
SW5Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgb3V0cHV0Q29sb3JTcGFj
ZSkgY29uc3QKIHsKICAgICBhdXRvIFtpbnB1dENvbG9yU3BhY2UsIGNvbXBvbmVudHNdID0gY29s
b3JTcGFjZUFuZENvbXBvbmVudHMoKTsKICAgICByZXR1cm4gY29udmVyQ29sb3JDb21wb25lbnRz
KGlucHV0Q29sb3JTcGFjZSwgY29tcG9uZW50cywgb3V0cHV0Q29sb3JTcGFjZSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDb2xvckNvbnZlcnNpb24uaCIKICNpbmNs
dWRlICJDb2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKKyNpbmNsdWRl
ICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KQEAgLTEy
MSw3ICsxMjIsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8VD4g
dG9TUkdCQUxvc3N5KCkgY29uc3QgeyByZXR1cm4gdG9Db2xvclR5cGVMb3NzeTxTUkdCQTxUPj4o
KTsgfQogCiAgICAgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiB0b0NvbG9yQ29tcG9uZW50c0lu
Q29sb3JTcGFjZShDb2xvclNwYWNlKSBjb25zdDsKLSAgICBDb2xvckNvbXBvbmVudHM8ZmxvYXQs
IDQ+IHRvQ29sb3JDb21wb25lbnRzSW5Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSkg
Y29uc3Q7CisgICAgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiB0b0NvbG9yQ29tcG9uZW50c0lu
Q29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKSBjb25zdDsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQs
IDQ+PiBjb2xvclNwYWNlQW5kQ29tcG9uZW50cygpIGNvbnN0OwogCkBAIC0yNjcsNiArMjY4LDcg
QEAgYm9vbCBvdXRPZkxpbmVDb21wb25lbnRzc0VxdWFsSWdub3JpbmdTZQogCiAjaWYgVVNFKENH
KQogV0VCQ09SRV9FWFBPUlQgQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJik7
CitXRUJDT1JFX0VYUE9SVCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IHBsYXRmb3JtQ29udmVy
dENvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+LCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKICNlbmRpZgogCiBXRUJDT1JFX0VYUE9SVCBX
VEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgQ29sb3Im
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JDb252ZXJzaW9uLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NyArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbG9yQ29udmVyc2lv
bi5oIgogCisjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJDb2xvclNwYWNlLmgiCisjaW5j
bHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzE4LDE4ICszMjAsMjEgQEAgQ29sb3JDb21w
b25lbnRzPGZsb2F0LCA0PiBjb252ZXJDb2xvckNvbQogICAgIH0pOwogfQogCi1Db2xvckNvbXBv
bmVudHM8ZmxvYXQsIDQ+IGNvbnZlckNvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlIGlucHV0Q29s
b3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBpbnB1dENvbG9yQ29tcG9uZW50cywg
RGVzdGluYXRpb25Db2xvclNwYWNlIG91dHB1dENvbG9yU3BhY2UpCitDb2xvckNvbXBvbmVudHM8
ZmxvYXQsIDQ+IGNvbnZlckNvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlIGlucHV0Q29sb3JTcGFj
ZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBpbnB1dENvbG9yQ29tcG9uZW50cywgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBvdXRwdXRDb2xvclNwYWNlKQogeworI2lmIFVTRShDRykK
KyAgICByZXR1cm4gcGxhdGZvcm1Db252ZXJ0Q29sb3JDb21wb25lbnRzKGlucHV0Q29sb3JTcGFj
ZSwgaW5wdXRDb2xvckNvbXBvbmVudHMsIG91dHB1dENvbG9yU3BhY2UpOworI2Vsc2UKICAgICBy
ZXR1cm4gY2FsbFdpdGhDb2xvclR5cGUoaW5wdXRDb2xvckNvbXBvbmVudHMsIGlucHV0Q29sb3JT
cGFjZSwgW291dHB1dENvbG9yU3BhY2VdIChjb25zdCBhdXRvJiBpbnB1dENvbG9yKSB7Ci0gICAg
ICAgIHN3aXRjaCAob3V0cHV0Q29sb3JTcGFjZSkgewotICAgICAgICBjYXNlIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQjoKKyAgICAgICAgc3dpdGNoIChvdXRwdXRDb2xvclNwYWNlLnBsYXRm
b3JtQ29sb3JTcGFjZSgpKSB7CisgICAgICAgIGNhc2UgUGxhdGZvcm1Db2xvclNwYWNlOjpOYW1l
OjpTUkdCOgogICAgICAgICAgICAgcmV0dXJuIGFzQ29sb3JDb21wb25lbnRzKGNvbnZlcnRDb2xv
cjxTUkdCQTxmbG9hdD4+KGlucHV0Q29sb3IpKTsKICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09M
T1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpMaW5lYXJTUkdCOgorICAgICAgICBjYXNlIFBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZTo6TGlu
ZWFyU1JHQjoKICAgICAgICAgICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhjb252ZXJ0Q29s
b3I8TGluZWFyU1JHQkE8ZmxvYXQ+PihpbnB1dENvbG9yKSk7CiAjZW5kaWYKICNpZiBFTkFCTEUo
REVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExBWV9QMykKLSAgICAgICAgY2FzZSBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMzoKKyAgICAgICAgY2FzZSBQbGF0Zm9ybUNvbG9yU3Bh
Y2U6Ok5hbWU6OkRpc3BsYXlQMzoKICAgICAgICAgICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50
cyhjb252ZXJ0Q29sb3I8RGlzcGxheVAzPGZsb2F0Pj4oaW5wdXRDb2xvcikpOwogI2VuZGlmCiAg
ICAgICAgIH0KQEAgLTMzNyw2ICszNDIsNyBAQCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNv
bnZlckNvbG9yQ29tCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1
cm4gYXNDb2xvckNvbXBvbmVudHMoY29udmVydENvbG9yPFNSR0JBPGZsb2F0Pj4oaW5wdXRDb2xv
cikpOwogICAgIH0pOworI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lv
bi5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvckNvbnZlcnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTUgKzI5LDE2IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlOworCiBl
bnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90OwotZW51bSBjbGFzcyBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgOiB1aW50OF90OwogCiAvLyBDb252ZXJzaW9uIGZ1bmN0aW9uIGZvciB0eXBlZCBj
b2xvcnMuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBPdXRwdXQsIHR5cGVuYW1lIElucHV0PiBPdXRwdXQg
Y29udmVydENvbG9yKGNvbnN0IElucHV0JiBjb2xvcik7CiAKIC8vIENvbnZlcnNpb24gZnVuY3Rp
b25zIGZvciByYXcgY29sb3IgY29tcG9uZW50cyB3aXRoIGFzc29jaWF0ZWQgY29sb3Igc3BhY2Vz
LgogQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb252ZXJDb2xvckNvbXBvbmVudHMoQ29sb3JT
cGFjZSBpbnB1dENvbG9yU3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xv
ckNvbXBvbmVudHMsIENvbG9yU3BhY2Ugb3V0cHV0Q29sb3JTcGFjZSk7Ci1Db2xvckNvbXBvbmVu
dHM8ZmxvYXQsIDQ+IGNvbnZlckNvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlIGlucHV0Q29sb3JT
cGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBpbnB1dENvbG9yQ29tcG9uZW50cywgRGVz
dGluYXRpb25Db2xvclNwYWNlIG91dHB1dENvbG9yU3BhY2UpOworQ29sb3JDb21wb25lbnRzPGZs
b2F0LCA0PiBjb252ZXJDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1dENvbG9yU3BhY2Us
IENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVudHMsIGNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYgb3V0cHV0Q29sb3JTcGFjZSk7CiAKIAogLy8gQWxsIGNvbG9y
IHR5cGVzLCBvdGhlciB0aGFuIFhZWkEgb3IgdGhvc2UgaW5oZXJpdGluZyBmcm9tIFJHQlR5cGUs
IG11c3QgaW1wbGVtZW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvclNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvclNwYWNlLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDI0
ICs2NCw0IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEMKICAgICBy
ZXR1cm4gdHM7CiB9CiAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKQotewotICAgIHN3aXRjaCAoY29sb3JTcGFj
ZSkgewotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOgotICAgICAgICB0cyA8
PCAic1JHQiI7Ci0gICAgICAgIGJyZWFrOwotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9T
UEFDRV9MSU5FQVJfU1JHQikKLSAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFy
U1JHQjoKLSAgICAgICAgdHMgPDwgIkxpbmVhclNSR0IiOwotICAgICAgICBicmVhazsKLSNlbmRp
ZgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQotICAgIGNh
c2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0gICAgICAgIHRzIDw8ICJEaXNw
bGF5UDMiOwotICAgICAgICBicmVhazsKLSNlbmRpZgotICAgIH0KLSAgICByZXR1cm4gdHM7Ci19
Ci0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNw
YWNlLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTAgKzI4LDcgQEAKICNpbmNs
dWRlICJDb2xvclR5cGVzLmgiCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYv
RW51bVRyYWl0cy5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLWNsYXNzIFRleHRTdHJlYW07Ci19Cisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Nywx
OCArNDQsNyBAQCBlbnVtIGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90IHsKICAgICBYWVpfRDUw
LAogfTsKIAotZW51bSBjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgOiB1aW50OF90IHsKLSAg
ICBTUkdCCi0jaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQot
ICAgICwgTGluZWFyU1JHQgotI2VuZGlmCi0jaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQ
QUNFX0RJU1BMQVlfUDMpCi0gICAgLCBEaXNwbGF5UDMKLSNlbmRpZgotfTsKLQotV0VCQ09SRV9F
WFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIENvbG9y
U3BhY2UpOwotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6
VGV4dFN0cmVhbSYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSk7CitXRUJDT1JFX0VYUE9SVCBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBDb2xvclNwYWNlKTsKIAogCiB0ZW1wbGF0
ZTx0eXBlbmFtZT4gc3RydWN0IENvbG9yU3BhY2VNYXBwaW5nOwpAQCAtMTAyLDI1ICs4OCw2IEBA
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEZ1bmN0b3I+IGMKICAgICByZXR1cm4gc3Rk
OjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVu
dHM8U1JHQkE8VD4+KGNvbXBvbmVudHMpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgRnVuY3Rvcj4gY29uc3RleHByIGRlY2x0eXBlKGF1dG8pIGNhbGxXaXRoQ29sb3JUeXBl
KGNvbnN0IENvbG9yQ29tcG9uZW50czxULCA0PiYgY29tcG9uZW50cywgRGVzdGluYXRpb25Db2xv
clNwYWNlIGNvbG9yU3BhY2UsIEZ1bmN0b3ImJiBmdW5jdG9yKQotewotICAgIHN3aXRjaCAoY29s
b3JTcGFjZSkgewotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOgotICAgICAg
ICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtl
RnJvbUNvbXBvbmVudHM8U1JHQkE8VD4+KGNvbXBvbmVudHMpKTsKLSNpZiBFTkFCTEUoREVTVElO
QVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OkxpbmVhclNSR0I6Ci0gICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndh
cmQ8RnVuY3Rvcj4oZnVuY3RvciksIG1ha2VGcm9tQ29tcG9uZW50czxMaW5lYXJTUkdCQTxUPj4o
Y29tcG9uZW50cykpOwotI2VuZGlmCi0jaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNF
X0RJU1BMQVlfUDMpCi0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMzoK
LSAgICAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9y
KSwgbWFrZUZyb21Db21wb25lbnRzPERpc3BsYXlQMzxUPj4oY29tcG9uZW50cykpOwotI2VuZGlm
Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHN0ZDo6aW52
b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFrZUZyb21Db21wb25lbnRzPFNS
R0JBPFQ+Pihjb21wb25lbnRzKSk7Ci19Ci0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkBA
IC0xNDEsMTcgKzEwOCw0IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6
Q28KICAgICA+OwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U+IHsKLSAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAot
ICAgICAgICBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UsCi0gICAgICAgIFdlYkNvcmU6
OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xP
Ul9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICAgICAgLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OkxpbmVhclNSR0IKLSNlbmRpZgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9T
UEFDRV9ESVNQTEFZX1AzKQotICAgICAgICAsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6RGlzcGxheVAzCi0jZW5kaWYKLSAgICA+OwotfTsKLQogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29u
Y3JldGVJbWFnZUJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPgogY2xhc3MgQ29uY3JldGVJbWFnZUJ1ZmZlciA6IHB1
YmxpYyBJbWFnZUJ1ZmZlciB7CiBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW1hZ2VC
dWZmZXJUeXBlID0gQ29uY3JldGVJbWFnZUJ1ZmZlciwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgot
ICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXJUeXBlPiBjcmVhdGUoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdp
bmRvdywgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQorICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VC
dWZmZXJUeXBlPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3Jt
YXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEFyZ3VtZW50cyYm
Li4uIGFyZ3VtZW50cykKICAgICB7CiAgICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IEltYWdlQnVm
ZmVyQmFja2VuZDo6UGFyYW1ldGVycyB7IHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFj
ZSwgcGl4ZWxGb3JtYXQgfTsKICAgICAgICAgYXV0byBiYWNrZW5kID0gQmFja2VuZFR5cGU6OmNy
ZWF0ZShwYXJhbWV0ZXJzLCBob3N0V2luZG93KTsKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEltYWdlQnVmZmVyVHlwZSA9IENvbmNyZXRlSW1hZ2VCdWZm
ZXIsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KICAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVy
VHlwZT4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgewotICAgICAgICBhdXRv
IHBhcmFtZXRlcnMgPSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMgeyBzaXplLCAxLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCB9OworICAgICAg
ICBhdXRvIHBhcmFtZXRlcnMgPSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMgeyBzaXpl
LCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4IH07
CiAgICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUocGFyYW1ldGVycywg
Y29udGV4dCk7CiAgICAgICAgIGlmICghYmFja2VuZCkKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMTk1LDcgKzE5NSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgfQogICAgIH0KIAot
ICAgIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc3JjQ29s
b3JTcGFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGRlc3RDb2xvclNwYWNlKSBvdmVycmlkZQor
ICAgIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
IHNyY0NvbG9yU3BhY2UsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgZGVzdENvbG9yU3Bh
Y2UpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJh
Y2tlbmRDcmVhdGVkKCkpIHsKICAgICAgICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHQoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
cm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBAIEltYWdlRHJhd1Jlc3VsdCBDcm9zc2ZhZGVH
ZW5lcmF0ZWRJbWFnZToKIAogdm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRl
cm4oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJh
bnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBhdXRvIGltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIGNvbnRleHQucmVuZGVyaW5nTW9k
ZSgpLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBjb250
ZXh0LnJlbmRlcmluZ01vZGUoKSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBp
eGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJu
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNv
bG9yU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKKworI2luY2x1ZGUgPHd0Zi90
ZXh0L1RleHRTdHJlYW0uaD4KKworI2lmIFVTRShDRykKKyNpbmNsdWRlICJDb2xvclNwYWNlQ0cu
aCIKKyNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgorI2VuZGlmCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworRGVzdGluYXRpb25Db2xvclNwYWNlIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpCit7CisjaWYgVVNFKENHKQorICAgIHJldHVybiBEZXN0aW5hdGlvbkNv
bG9yU3BhY2Uoc1JHQkNvbG9yU3BhY2VSZWYoKSk7CisjZWxzZQorICAgIHJldHVybiBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UoUGxhdGZvcm1Db2xvclNwYWNlOjpOYW1lOjpTUkdCKTsKKyNlbmRpZgor
fQorCisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQorRGVz
dGluYXRpb25Db2xvclNwYWNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigpCit7
CisjaWYgVVNFKENHKQorICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UobGluZWFyU1JH
QkNvbG9yU3BhY2VSZWYoKSk7CisjZWxzZQorICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UoUGxhdGZvcm1Db2xvclNwYWNlOjpOYW1lOjpMaW5lYXJTUkdCKTsKKyNlbmRpZgorfQorI2Vu
ZGlmCisKKyNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExBWV9QMykKK0Rl
c3RpbmF0aW9uQ29sb3JTcGFjZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMygpCit7
CisjaWYgVVNFKENHKQorICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UoZGlzcGxheVAz
Q29sb3JTcGFjZVJlZigpKTsKKyNlbHNlCisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZShQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU6OkRpc3BsYXlQMyk7CisjZW5kaWYKK30KKyNlbmRp
ZgorCitEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZShQbGF0Zm9y
bUNvbG9yU3BhY2UgcGxhdGZvcm1Db2xvclNwYWNlKQorICAgIDogbV9wbGF0Zm9ybUNvbG9yU3Bh
Y2UgeyBXVEZNb3ZlKHBsYXRmb3JtQ29sb3JTcGFjZSkgfQoreworI2lmIFVTRShDRykKKyAgICBB
U1NFUlQobV9wbGF0Zm9ybUNvbG9yU3BhY2UpOworI2VuZGlmCit9CisKK2Jvb2wgb3BlcmF0b3I9
PShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGEsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgYikKK3sKKyNpZiBVU0UoQ0cpCisgICAgcmV0dXJuIENHQ29sb3JTcGFjZUVxdWFsVG9D
b2xvclNwYWNlKGEucGxhdGZvcm1Db2xvclNwYWNlKCksIGIucGxhdGZvcm1Db2xvclNwYWNlKCkp
OworI2Vsc2UKKyAgICByZXR1cm4gYS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSA9PSBiLnBsYXRmb3Jt
Q29sb3JTcGFjZSgpOworI2VuZGlmCit9CisKK2Jvb2wgb3BlcmF0b3IhPShjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmIGEsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgYikKK3sKKyAg
ICByZXR1cm4gIShhID09IGIpOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpCit7CisgICAg
aWYgKGNvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpCisgICAgICAg
IHRzIDw8ICJzUkdCIjsKKyNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFS
X1NSR0IpCisgICAgZWxzZSBpZiAoY29sb3JTcGFjZSA9PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OkxpbmVhclNSR0IoKSkKKyAgICAgICAgdHMgPDwgIkxpbmVhclNSR0IiOworI2VuZGlmCisjaWYg
RU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCisgICAgZWxzZSBpZiAo
Y29sb3JTcGFjZSA9PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMygpKQorICAgICAg
ICB0cyA8PCAiRGlzcGxheVAzIjsKKyNlbmRpZgorI2lmIFVTRShDRykKKyAgICBlbHNlIGlmIChh
dXRvIGRlc2NyaXB0aW9uID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDb3B5SUNDUHJvZmlsZURlc2Ny
aXB0aW9uKGNvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCkpKSkKKyAgICAgICAgdHMgPDwg
U3RyaW5nKGRlc2NyaXB0aW9uLmdldCgpKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIHRzOworfQor
Cit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNv
bG9yU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJQbGF0Zm9ybUNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSBTUkdCKCk7CisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9S
X1NQQUNFX0xJTkVBUl9TUkdCKQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgTGluZWFyU1JHQigpOworI2VuZGlmCisjaWYgRU5BQkxFKERFU1RJTkFUSU9O
X0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSBEaXNwbGF5UDMoKTsKKyNlbmRpZgorCisgICAgV0VCQ09SRV9FWFBP
UlQgZXhwbGljaXQgRGVzdGluYXRpb25Db2xvclNwYWNlKFBsYXRmb3JtQ29sb3JTcGFjZSk7Cisg
ICAgUGxhdGZvcm1Db2xvclNwYWNlVmFsdWUgcGxhdGZvcm1Db2xvclNwYWNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9wbGF0Zm9ybUNvbG9yU3BhY2UuZ2V0KCk7IH0KKworICAgIHRlbXBsYXRlPGNsYXNz
IEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBkZWNvZGUo
RGVjb2RlciYpOworCitwcml2YXRlOgorICAgIFBsYXRmb3JtQ29sb3JTcGFjZSBtX3BsYXRmb3Jt
Q29sb3JTcGFjZTsKK307CisKK1dFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKK1dF
QkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3IhPShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKKworV0VCQ09SRV9FWFBPUlQgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
Jik7CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgRGVzdGluYXRpb25Db2xvclNwYWNl
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fcGxh
dGZvcm1Db2xvclNwYWNlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U+IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8UGxhdGZvcm1Db2xvclNwYWNlPiBwbGF0Zm9y
bUNvbG9yU3BhY2U7CisgICAgZGVjb2RlciA+PiBwbGF0Zm9ybUNvbG9yU3BhY2U7CisgICAgaWYg
KCFwbGF0Zm9ybUNvbG9yU3BhY2UpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlIHsgV1RGTW92ZSgqcGxhdGZvcm1Db2xvclNw
YWNlKSB9OworfQorCit9CisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYWRpZW50SW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIEdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBo
aWNzCiAgICAgdW5zaWduZWQgZ2VuZXJhdG9ySGFzaCA9IG1fZ3JhZGllbnQtPmhhc2goKTsKIAog
ICAgIGlmICghbV9jYWNoZWRJbWFnZSB8fCBtX2NhY2hlZEdlbmVyYXRvckhhc2ggIT0gZ2VuZXJh
dG9ySGFzaCB8fCBtX2NhY2hlZEFkanVzdGVkU2l6ZSAhPSBhZGp1c3RlZFNpemUgfHwgIWFyZUVz
c2VudGlhbGx5RXF1YWwoZGVzdENvbnRleHQuc2NhbGVGYWN0b3IoKSwgbV9jYWNoZWRTY2FsZUZh
Y3RvcikpIHsKLSAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKGFkanVzdGVkU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
LCBkZXN0Q29udGV4dCk7CisgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpLCBkZXN0Q29udGV4dCk7CiAgICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAg
ICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODgzLDcgKzg4Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0
Um91bmRlZFJlY3QKICAgICBjbGlwT3V0KHBhdGgpOwogfQogCi1HcmFwaGljc0NvbnRleHQ6OkNs
aXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0RyYXdpbmdD
b21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBkcmF3aW5n
RnVuY3Rpb24pCitHcmFwaGljc0NvbnRleHQ6OkNsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBH
cmFwaGljc0NvbnRleHQ6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIEZ1bmN0
aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKQogewogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBDbGlwVG9EcmF3aW5nQ29tbWFu
ZHNSZXN1bHQ6OlN1Y2Nlc3M7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDggKzI2LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJDb2xvclNw
YWNlLmgiCiAjaW5jbHVkZSAiRGFzaEFycmF5LmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xv
clNwYWNlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRm9udENhc2NhZGUu
aCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCkBAIC00MTAsNyArNDEwLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJl
Y3QmKTsKIAogICAgIGVudW0gY2xhc3MgQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IDogYm9v
bCB7IFN1Y2Nlc3MsIEZhaWxlZFRvQ3JlYXRlSW1hZ2VCdWZmZXIgfTsKLSAgICBDbGlwVG9EcmF3
aW5nQ29tbWFuZHNSZXN1bHQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGlj
c0NvbnRleHQmKT4mJik7CisgICAgQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IGNsaXBUb0Ry
YXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKTsKICAg
ICAKICAgICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpID0g
MDsKICAgICB2aXJ0dWFsIEludFJlY3QgY2xpcEJvdW5kcygpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhp
Y3NDb250ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNs
aXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYm
IGRyYXdpbmdGdW5jdGlvbikgPSAwOwogI2lmIEVOQUJMRShWSURFTykKICAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBjYW5QYWludEZyYW1lRm9yTWVkaWEoY29u
c3QgTWVkaWFQbGF5ZXImKSBjb25zdCA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIGNvbnN0
IGZsb2F0IE1heENsYW1wZWRMZW5ndGggPSA0MDk2Owogc3RhdGljIGNvbnN0IGZsb2F0IE1heENs
YW1wZWRBcmVhID0gTWF4Q2xhbXBlZExlbmd0aCAqIE1heENsYW1wZWRMZW5ndGg7CiAKLVJlZlB0
cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUs
IFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3Qgc2hvdWxk
VXNlRGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4
ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCitSZWZQdHI8SW1hZ2VCdWZm
ZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdN
b2RlIHJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0IHNob3VsZFVzZURpc3BsYXlM
aXN0LCBSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZv
cm1hdCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsKICAgICBSZWZQdHI8SW1hZ2VC
dWZmZXI+IGltYWdlQnVmZmVyOwogICAgIApAQCAtNTksNyArNTksNyBAQCBSZWZQdHI8SW1hZ2VC
dWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUoCiAgICAgcmV0dXJuIGltYWdlQnVmZmVyOwogfQog
Ci1SZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9y
bWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RX
aW5kb3cqIGhvc3RXaW5kb3cpCiB7CiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZl
cjsKICAgICAKQEAgLTk1LDcgKzk1LDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlQwogICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0KIAotUmVmUHRyPEltYWdlQnVm
ZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
IHNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiBjb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7
CiAgICAgaWYgKHNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEx
MSw3ICsxMTEsNyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDCiAg
ICAgcmV0dXJuIGltYWdlQnVmZmVyOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVm
ZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3Qg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBj
b25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgcmV0dXJuIEltYWdlQnVmZmVy
OjpjcmVhdGUoc2l6ZSwgY29udGV4dC5yZW5kZXJpbmdNb2RlKCksIHJlc29sdXRpb25TY2FsZSwg
Y29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKIH0KQEAgLTE2Nyw3ICsxNjcsNyBAQCBJ
bnRTaXplIEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVyU2l6CiAgICAgcmV0dXJuIGV4cGFu
ZGVkSW50U2l6ZShzaXplICogY29udGV4dC5zY2FsZUZhY3RvcigpKTsKIH0KIAotUmVmUHRyPElt
YWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3Qm
IHJlY3QsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjb3B5UmVj
dFRvQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiBjb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAg
aWYgKHJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTMgKzQ1LDEzIEBAIHN0cnVjdCBJdGVtQnVmZmVySGFu
ZGxlOwogY2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1h
Z2VCdWZmZXI+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW1hZ2VCdWZmZXI+IHsKIHB1YmxpYzoK
ICAgICAvLyBXaWxsIHJldHVybiBhIG51bGwgcG9pbnRlciBvbiBhbGxvY2F0aW9uIGZhaWx1cmUu
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNv
bnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0LCBSZW5k
ZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSwgUGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6
ZSYsIFJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xv
clNwYWNlLCBQaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxv
YXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1
cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiwgUGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6
ZSYsIFJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiwgUGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7
CiAKICAgICAvLyBDcmVhdGUgYW4gaW1hZ2UgYnVmZmVyIGNvbXBhdGlibGUgd2l0aCB0aGUgY29u
dGV4dCwgd2l0aCBzdWl0YWJsZSByZXNvbHV0aW9uIGZvciBkcmF3aW5nIGludG8gdGhlIGJ1ZmZl
ciBhbmQgdGhlbiBpbnRvIHRoaXMgY29udGV4dC4KICAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVm
ZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYpOwotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBh
dGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBjb25z
dCBHcmFwaGljc0NvbnRleHQmKTsKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVh
dGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKyAgICBz
dGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZs
b2F0U2l6ZSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYpOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVC
dWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKIAogICAgIC8vIFRo
ZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZCB3aGVuIGNsYW1waW5nIHRoZSBJbWFnZUJ1ZmZlciB3aGlj
aCBpcyBjcmVhdGVkIGZvciBmaWx0ZXIsIG1hc2tlciBvciBjbGlwcGVyLgogICAgIHN0YXRpYyBi
b29sIHNpemVOZWVkc0NsYW1waW5nKGNvbnN0IEZsb2F0U2l6ZSYpOwpAQCAtMTA3LDcgKzEwNyw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gY29weUltYWdlKEJhY2tpbmdT
dG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlLCBQcmVzZXJ2ZVJlc29sdXRpb24gPSBQcmVzZXJ2
ZVJlc29sdXRpb246Ok5vKSBjb25zdCA9IDA7CiAKICAgICAvLyBDcmVhdGUgYW4gaW1hZ2UgYnVm
ZmVyIGNvbXBhdGlibGUgd2l0aCB0aGUgY29udGV4dCBhbmQgY29weSByZWN0IGZyb20gdGhpcyBi
dWZmZXIgaW50byB0aGlzIG5ldyBvbmUuCi0gICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjb3B5UmVj
dFRvQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgY29uc3Qg
R3JhcGhpY3NDb250ZXh0Jik7CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjb3B5UmVjdFRvQnVm
ZmVyKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IHsgfSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmID0geyB9KSA9IDA7CkBAIC0xMjAsNyArMTIwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBjbGlwVG9NYXNrKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBjb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JT
cGFjZSBzcmNDb2xvclNwYWNlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgZHN0Q29sb3JTcGFjZSkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgc3JjQ29sb3JTcGFjZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiBkc3RDb2xvclNwYWNlKSA9IDA7CiAKICAgICB2aXJ0dWFsIFN0cmluZyB0b0RhdGFVUkwoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5ID0gV1RGOjpudWxs
b3B0LCBQcmVzZXJ2ZVJlc29sdXRpb24gPSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IFdURjo6bnVsbG9wdCkgY29uc3QgPSAw
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNr
ZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlckJhY2tlbmQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01Myw2ICs1Myw4IEBAIEltYWdlQnVmZmVyQmFja2VuZDo6SW1hZ2VCdWZmZXJCYWNrZW5k
KGMKIHsKIH0KIAorSW1hZ2VCdWZmZXJCYWNrZW5kOjp+SW1hZ2VCdWZmZXJCYWNrZW5kKCkgPSBk
ZWZhdWx0OworCiBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyQmFja2VuZDo6c2lua0lu
dG9OYXRpdmVJbWFnZSgpCiB7CiAgICAgcmV0dXJuIGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJh
Y2tpbmdTdG9yZSk7CkBAIC0xMTQsMTUgKzExNiwxNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4g
SW1hZ2VCdWZmZXJCYWNrZW5kCiAgICAgaWYgKGRlc3RpbmF0aW9uUmVjdC5zaXplKCkgIT0gc291
cmNlUmVjdFNjYWxlZC5zaXplKCkpCiAgICAgICAgIHBpeGVsQnVmZmVyLT5kYXRhKCkuemVyb0Zp
bGwoKTsKIAotICAgIENvbnN0UGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBzb3VyY2U7Ci0gICAg
c291cmNlLmZvcm1hdCA9IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwg
cGl4ZWxGb3JtYXQoKSwgY29sb3JTcGFjZSgpIH07Ci0gICAgc291cmNlLmJ5dGVzUGVyUm93ID0g
Ynl0ZXNQZXJSb3coKTsKLSAgICBzb3VyY2Uucm93cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhf
dCo+KGRhdGEpICsgc291cmNlUmVjdENsaXBwZWQueSgpICogc291cmNlLmJ5dGVzUGVyUm93ICsg
c291cmNlUmVjdENsaXBwZWQueCgpICogNDsKKyAgICBDb25zdFBpeGVsQnVmZmVyQ29udmVyc2lv
blZpZXcgc291cmNlIHsKKyAgICAgICAgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0
aXBsaWVkLCBwaXhlbEZvcm1hdCgpLCBjb2xvclNwYWNlKCkgfSwKKyAgICAgICAgYnl0ZXNQZXJS
b3coKSwKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YSkgKyBzb3VyY2VS
ZWN0Q2xpcHBlZC55KCkgKiBzb3VyY2UuYnl0ZXNQZXJSb3cgKyBzb3VyY2VSZWN0Q2xpcHBlZC54
KCkgKiA0CisgICAgfTsKICAgICAKLSAgICBQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IGRlc3Rp
bmF0aW9uOwotICAgIGRlc3RpbmF0aW9uLmZvcm1hdCA9IGRlc3RpbmF0aW9uRm9ybWF0OwotICAg
IGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ID0gNCAqIHNvdXJjZVJlY3RTY2FsZWQud2lkdGgoKTsK
LSAgICBkZXN0aW5hdGlvbi5yb3dzID0gcGl4ZWxCdWZmZXItPmRhdGEoKS5kYXRhKCkgKyBkZXN0
aW5hdGlvblJlY3QueSgpICogZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgKyBkZXN0aW5hdGlvblJl
Y3QueCgpICogNDsKKyAgICBQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IGRlc3RpbmF0aW9uIHsK
KyAgICAgICAgZGVzdGluYXRpb25Gb3JtYXQsCisgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVk
Pig0ICogc291cmNlUmVjdFNjYWxlZC53aWR0aCgpKSwKKyAgICAgICAgcGl4ZWxCdWZmZXItPmRh
dGEoKS5kYXRhKCkgKyBkZXN0aW5hdGlvblJlY3QueSgpICogZGVzdGluYXRpb24uYnl0ZXNQZXJS
b3cgKyBkZXN0aW5hdGlvblJlY3QueCgpICogNAorICAgIH07CiAKICAgICBjb252ZXJ0SW1hZ2VQ
aXhlbHMoc291cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb25SZWN0LnNpemUoKSk7CiAKQEAg
LTE0NywxNSArMTUxLDE3IEBAIHZvaWQgSW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQaXhlbEJ1ZmZl
cigKICAgICBkZXN0aW5hdGlvblJlY3QuaW50ZXJzZWN0KGJhY2tlbmRSZWN0KCkpOwogICAgIHNv
dXJjZVJlY3RDbGlwcGVkLnNldFNpemUoZGVzdGluYXRpb25SZWN0LnNpemUoKSk7CiAKLSAgICBD
b25zdFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgc291cmNlOwotICAgIHNvdXJjZS5mb3JtYXQg
PSBzb3VyY2VQaXhlbEJ1ZmZlci5mb3JtYXQoKTsKLSAgICBzb3VyY2UuYnl0ZXNQZXJSb3cgPSA0
ICogc291cmNlUGl4ZWxCdWZmZXIuc2l6ZSgpLndpZHRoKCk7Ci0gICAgc291cmNlLnJvd3MgPSBz
b3VyY2VQaXhlbEJ1ZmZlci5kYXRhKCkuZGF0YSgpICsgc291cmNlUmVjdENsaXBwZWQueSgpICog
c291cmNlLmJ5dGVzUGVyUm93ICsgc291cmNlUmVjdENsaXBwZWQueCgpICogNDsKLQotICAgIFBp
eGVsQnVmZmVyQ29udmVyc2lvblZpZXcgZGVzdGluYXRpb247Ci0gICAgZGVzdGluYXRpb24uZm9y
bWF0ID0geyBkZXN0aW5hdGlvbkFscGhhRm9ybWF0LCBwaXhlbEZvcm1hdCgpLCBjb2xvclNwYWNl
KCkgfTsKLSAgICBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyA9IGJ5dGVzUGVyUm93KCk7Ci0gICAg
ZGVzdGluYXRpb24ucm93cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEpICsgZGVz
dGluYXRpb25SZWN0LnkoKSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ICsgZGVzdGluYXRpb25S
ZWN0LngoKSAqIDQ7CisgICAgQ29uc3RQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IHNvdXJjZSB7
CisgICAgICAgIHNvdXJjZVBpeGVsQnVmZmVyLmZvcm1hdCgpLAorICAgICAgICBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oNCAqIHNvdXJjZVBpeGVsQnVmZmVyLnNpemUoKS53aWR0aCgpKSwKKyAgICAg
ICAgc291cmNlUGl4ZWxCdWZmZXIuZGF0YSgpLmRhdGEoKSArIHNvdXJjZVJlY3RDbGlwcGVkLnko
KSAqIHNvdXJjZS5ieXRlc1BlclJvdyArIHNvdXJjZVJlY3RDbGlwcGVkLngoKSAqIDQKKyAgICB9
OworCisgICAgUGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBkZXN0aW5hdGlvbiB7CisgICAgICAg
IHsgZGVzdGluYXRpb25BbHBoYUZvcm1hdCwgcGl4ZWxGb3JtYXQoKSwgY29sb3JTcGFjZSgpIH0s
CisgICAgICAgIGJ5dGVzUGVyUm93KCksCisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhf
dCo+KGRhdGEpICsgZGVzdGluYXRpb25SZWN0LnkoKSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93
ICsgZGVzdGluYXRpb25SZWN0LngoKSAqIDQKKyAgICB9OwogCiAgICAgY29udmVydEltYWdlUGl4
ZWxzKHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uUmVjdC5zaXplKCkpOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXJCYWNrZW5kLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsy
NSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2luY2x1
ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgogI2luY2x1ZGUgIkltYWdlUGFpbnRpbmdPcHRpb25z
LmgiCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICAgICAgUGl4ZWxGb3JtYXQgcGl4ZWxG
b3JtYXQ7CiAgICAgfTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkltYWdlQnVmZmVy
QmFja2VuZCgpID0gZGVmYXVsdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbWFnZUJ1
ZmZlckJhY2tlbmQoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBJbnRTaXplIGNhbGN1
bGF0ZUJhY2tlbmRTaXplKGNvbnN0IFBhcmFtZXRlcnMmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgc2l6ZV90IGNhbGN1bGF0ZU1lbW9yeUNvc3QoY29uc3QgSW50U2l6ZSYgYmFja2VuZFNp
emUsIHVuc2lnbmVkIGJ5dGVzUGVyUm93KTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGNsaXBUb01hc2soR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JikgeyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbnZlcnRUb0x1bWluYW5jZU1h
c2soKTsKLSAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNv
bG9yU3BhY2UsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIHRy
YW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJikgeyB9CiAKICAgICB2aXJ0dWFsIFN0cmluZyB0b0RhdGFVUkwo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBQcmVzZXJ2
ZVJlc29sdXRpb24pIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFZlY3Rvcjx1aW50OF90PiB0b0Rh
dGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5KSBjb25z
dCA9IDA7CkBAIC0xNDAsNyArMTQwLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgSW50U2l6ZSBsb2dp
Y2FsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUobV9wYXJhbWV0ZXJzLmxvZ2ljYWxTaXpl
KTsgfQogICAgIGZsb2F0IHJlc29sdXRpb25TY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1l
dGVycy5yZXNvbHV0aW9uU2NhbGU7IH0KLSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JT
cGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5jb2xvclNwYWNlOyB9CisgICAgY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9w
YXJhbWV0ZXJzLmNvbG9yU3BhY2U7IH0KICAgICBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5waXhlbEZvcm1hdDsgfQogCiAgICAgSW50UmVjdCBs
b2dpY2FsUmVjdCgpIGNvbnN0IHsgcmV0dXJuIEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgbG9n
aWNhbFNpemUoKSk7IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
aXhlbEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BpeGVsQnVmZmVyLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2
LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5o
IgotI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXJGb3JtYXQu
aCIKICNpbmNsdWRlICJQaXhlbEZvcm1hdC5oIgpAQCAtODcsMTkgKzg3LDIxIEBAIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgUGl4ZWxCdWZmZXIKIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IFBpeGVsQnVmZmVyOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKIHsKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQ7Ci0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShmb3JtYXQpKQorICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVyRm9ybWF0PiBmb3JtYXQ7
CisgICAgZGVjb2RlciA+PiBmb3JtYXQ7CisgICAgaWYgKCFmb3JtYXQpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAKICAgICAvLyBGSVhNRTogU3VwcG9ydCBub24tOCBiaXQgZm9ybWF0
cy4KLSAgICBpZiAoIShmb3JtYXQucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OlJHQkE4IHx8
IGZvcm1hdC5waXhlbEZvcm1hdCA9PSBQaXhlbEZvcm1hdDo6QkdSQTgpKQorICAgIGlmICghKGZv
cm1hdC0+cGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OlJHQkE4IHx8IGZvcm1hdC0+cGl4ZWxG
b3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKIAotICAgIEludFNpemUgc2l6ZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNpemUpKQor
ICAgIE9wdGlvbmFsPEludFNpemU+IHNpemU7CisgICAgZGVjb2RlciA+PiBzaXplOworICAgIGlm
ICghc2l6ZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIGF1dG8gY29tcHV0
ZWRCdWZmZXJTaXplID0gUGl4ZWxCdWZmZXI6OmNvbXB1dGVCdWZmZXJTaXplKGZvcm1hdCwgc2l6
ZSk7CisgICAgYXV0byBjb21wdXRlZEJ1ZmZlclNpemUgPSBQaXhlbEJ1ZmZlcjo6Y29tcHV0ZUJ1
ZmZlclNpemUoKmZvcm1hdCwgKnNpemUpOwogICAgIGlmIChjb21wdXRlZEJ1ZmZlclNpemUuaGFz
T3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCkBAIC0xMDcsNyAr
MTA5LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8UGl4ZWxCdQogICAgIGlm
ICghZGVjb2Rlci50ZW1wbGF0ZSBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluPHVpbnQ4X3Q+
KGJ1ZmZlclNpemUpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgYXV0byBy
ZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlRm9yRGVjb2RpbmcoZm9ybWF0LCBzaXplLCBi
dWZmZXJTaXplKTsKKyAgICBhdXRvIHJlc3VsdCA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGVGb3JE
ZWNvZGluZyhXVEZNb3ZlKCpmb3JtYXQpLCAqc2l6ZSwgYnVmZmVyU2l6ZSk7CiAgICAgaWYgKCFy
ZXN1bHQpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVyc2lvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJz
aW9uLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTIg
KzI3LDExIEBACiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXJDb252ZXJzaW9uLmgiCiAKICNpbmNsdWRl
ICJBbHBoYVByZW11bHRpcGxpY2F0aW9uLmgiCi0jaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2lu
Y2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNp
bmNsdWRlICJQaXhlbEZvcm1hdC5oIgogCiAjaWYgVVNFKEFDQ0VMRVJBVEUpICYmIFVTRShDRykK
LSNpbmNsdWRlICJDb2xvclNwYWNlQ0cuaCIKICNpbmNsdWRlIDxBY2NlbGVyYXRlL0FjY2VsZXJh
dGUuaD4KICNlbmRpZgogCkBAIC03MSw3ICs3MCw3IEBAIHN0YXRpYyBpbmxpbmUgdkltYWdlX0NH
SW1hZ2VGb3JtYXQgbWFrZVYKIAogICAgIHJlc3VsdC5iaXRzUGVyQ29tcG9uZW50ID0gYml0c1Bl
ckNvbXBvbmVudDsKICAgICByZXN1bHQuYml0c1BlclBpeGVsID0gYml0c1BlclBpeGVsOwotICAg
IHJlc3VsdC5jb2xvclNwYWNlID0gY2FjaGVkQ0dDb2xvclNwYWNlKGZvcm1hdC5jb2xvclNwYWNl
KTsKKyAgICByZXN1bHQuY29sb3JTcGFjZSA9IGZvcm1hdC5jb2xvclNwYWNlLnBsYXRmb3JtQ29s
b3JTcGFjZSgpOwogICAgIHJlc3VsdC5iaXRtYXBJbmZvID0gYml0bWFwSW5mbzsKICAgICByZXN1
bHQudmVyc2lvbiA9IDA7CiAgICAgcmVzdWx0LmRlY29kZSA9IG51bGxwdHI7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0
LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BpeGVsQnVmZmVyRm9ybWF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIgotI2luY2x1
ZGUgIkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNp
bmNsdWRlICJQaXhlbEZvcm1hdC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL09wdGlvbmFsLmg+CkBAIC01MSwxOSArNTEsMjIgQEAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBQaXhlbEJ1ZmZlcgogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25h
bDxQaXhlbEJ1ZmZlckZvcm1hdD4gUGl4ZWxCdWZmZXJGb3JtYXQ6OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogewotICAgIEFscGhhUHJlbXVsdGlwbGljYXRpb24gYWxwaGFGb3JtYXQ7Ci0gICAg
aWYgKCFkZWNvZGVyLmRlY29kZShhbHBoYUZvcm1hdCkpCisgICAgT3B0aW9uYWw8QWxwaGFQcmVt
dWx0aXBsaWNhdGlvbj4gYWxwaGFGb3JtYXQ7CisgICAgZGVjb2RlciA+PiBhbHBoYUZvcm1hdDsK
KyAgICBpZiAoIWFscGhhRm9ybWF0KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0g
ICAgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShwaXhl
bEZvcm1hdCkpCisgICAgT3B0aW9uYWw8UGl4ZWxGb3JtYXQ+IHBpeGVsRm9ybWF0OworICAgIGRl
Y29kZXIgPj4gcGl4ZWxGb3JtYXQ7CisgICAgaWYgKCFwaXhlbEZvcm1hdCkKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNl
OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29sb3JTcGFjZSkpCisgICAgT3B0aW9uYWw8RGVz
dGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlOworICAgIGRlY29kZXIgPj4gY29sb3JTcGFj
ZTsKKyAgICBpZiAoIWNvbG9yU3BhY2UpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAK
LSAgICByZXR1cm4geyB7IGFscGhhRm9ybWF0LCBwaXhlbEZvcm1hdCwgY29sb3JTcGFjZSB9IH07
CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCphbHBoYUZvcm1hdCksIFdURk1vdmUoKnBpeGVsRm9y
bWF0KSwgV1RGTW92ZSgqY29sb3JTcGFjZSkgfSB9OwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUNvbG9yU3BhY2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUNvbG9yU3BhY2UuaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9y
bUNvbG9yU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKENHKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KK3R5cGVkZWYgc3RydWN0IENHQ29sb3JTcGFjZSogQ0dDb2xvclNwYWNlUmVmOworI2Vsc2UK
KyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgor
I2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIFVTRShDRykKKwordXNpbmcgUGxh
dGZvcm1Db2xvclNwYWNlID0gUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj47Cit1c2luZyBQbGF0
Zm9ybUNvbG9yU3BhY2VWYWx1ZSA9IENHQ29sb3JTcGFjZVJlZjsKKworI2Vsc2UKKworY2xhc3Mg
UGxhdGZvcm1Db2xvclNwYWNlIHsKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIE5hbWUgeworICAg
ICAgICBTUkdCCisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdC
KQorICAgICAgICAsIExpbmVhclNSR0IKKyNlbmRpZgorI2lmIEVOQUJMRShERVNUSU5BVElPTl9D
T0xPUl9TUEFDRV9ESVNQTEFZX1AzKQorICAgICAgICAsIERpc3BsYXlQMworI2VuZGlmCisgICAg
fTsKKworICAgIFBsYXRmb3JtQ29sb3JTcGFjZShOYW1lIG5hbWUpCisgICAgICAgIDogbV9uYW1l
IHsgbmFtZSB9CisgICAgeworICAgIH0KKworICAgIE5hbWUgZ2V0KCkgY29uc3QgeyByZXR1cm4g
bV9uYW1lOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFs
PFBsYXRmb3JtQ29sb3JTcGFjZT4gZGVjb2RlKERlY29kZXImKTsKKworcHJpdmF0ZToKKyAgICBO
YW1lIG1fbmFtZTsKKworfTsKK3VzaW5nIFBsYXRmb3JtQ29sb3JTcGFjZVZhbHVlID0gUGxhdGZv
cm1Db2xvclNwYWNlOjpOYW1lOworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIFBsYXRm
b3JtQ29sb3JTcGFjZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5j
b2RlciA8PCBtX25hbWU7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRp
b25hbDxQbGF0Zm9ybUNvbG9yU3BhY2U+IFBsYXRmb3JtQ29sb3JTcGFjZTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8UGxhdGZvcm1Db2xvclNwYWNlOjpOYW1lPiBu
YW1lOworICAgIGRlY29kZXIgPj4gbmFtZTsKKyAgICBpZiAoIW5hbWUpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gUGxhdGZvcm1Db2xvclNwYWNlIHsgKm5hbWUg
fTsKK30KKworI2VuZGlmCisKK30KKworbmFtZXNwYWNlIFdURiB7CisKKyNpZiAhVVNFKENHKQor
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlBsYXRmb3JtQ29sb3JTcGFj
ZTo6TmFtZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNv
cmU6OlBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZSwKKyAgICAgICAgV2ViQ29yZTo6UGxhdGZvcm1D
b2xvclNwYWNlOjpOYW1lOjpTUkdCCisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNF
X0xJTkVBUl9TUkdCKQorICAgICAgICAsIFdlYkNvcmU6OlBsYXRmb3JtQ29sb3JTcGFjZTo6TmFt
ZTo6TGluZWFyU1JHQgorI2VuZGlmCisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNF
X0RJU1BMQVlfUDMpCisgICAgICAgICwgV2ViQ29yZTo6UGxhdGZvcm1Db2xvclNwYWNlOjpOYW1l
OjpEaXNwbGF5UDMKKyNlbmRpZgorICAgID47Cit9OworCisjZW5kaWYKKworfSAvLyBuYW1lc3Bh
Y2UgV1RGCisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZp
ZGVvU2FtcGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTYsNyArNTYsNyBAQCBzdGF0aWMgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxJT1N1
cmZhY2U+CiAgICAgfQogCiAgICAgSW50U2l6ZSBzaXplIHsgc3RhdGljX2Nhc3Q8aW50PihDVlBp
eGVsQnVmZmVyR2V0V2lkdGgocGl4ZWxCdWZmZXIpKSwgc3RhdGljX2Nhc3Q8aW50PihDVlBpeGVs
QnVmZmVyR2V0SGVpZ2h0KHBpeGVsQnVmZmVyKSkgfTsKLSAgICBhdXRvIGlvU3VyZmFjZSA9ICBJ
T1N1cmZhY2U6OmNyZWF0ZShzaXplLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBJT1N1cmZhY2U6OkZv
cm1hdDo6QkdSQSk7CisgICAgYXV0byBpb1N1cmZhY2UgPSAgSU9TdXJmYWNlOjpjcmVhdGUoc2l6
ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIElPU3VyZmFjZTo6Rm9ybWF0OjpCR1JB
KTsKIAogICAgIElPU3VyZmFjZTo6TG9ja2VyIGxvY2soKmlvU3VyZmFjZSk7CiAgICAgdkltYWdl
X0J1ZmZlciBzcmM7CkBAIC0xMTMsNyArMTEzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZp
ZGVvU2FtcGxlPiBSZW1vdAogICAgICAgICBzdXJmYWNlID0gaW9TdXJmYWNlLT5zdXJmYWNlKCk7
CiAgICAgfQogCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4o
bmV3IFJlbW90ZVZpZGVvU2FtcGxlKHN1cmZhY2UsIHNSR0JDb2xvclNwYWNlUmVmKCksIHNhbXBs
ZS5wcmVzZW50YXRpb25UaW1lKCksIHNhbXBsZS52aWRlb1JvdGF0aW9uKCksIHNhbXBsZS52aWRl
b01pcnJvcmVkKCkpKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2Ft
cGxlPihuZXcgUmVtb3RlVmlkZW9TYW1wbGUoc3VyZmFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIHNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCksIHNhbXBsZS52aWRlb1JvdGF0aW9u
KCksIHNhbXBsZS52aWRlb01pcnJvcmVkKCkpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZVZpZGVvU2FtcGxlPiBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKENWUGl4ZWxCdWZmZXJSZWYg
aW1hZ2VCdWZmZXIsIE1lZGlhVGltZSYmIHByZXNlbnRhdGlvblRpbWUsIE1lZGlhU2FtcGxlOjpW
aWRlb1JvdGF0aW9uIHJvdGF0aW9uKQpAQCAtMTI0LDEwICsxMjQsMTAgQEAgc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBSZW1vdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPihuZXcg
UmVtb3RlVmlkZW9TYW1wbGUoc3VyZmFjZSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwgV1RGTW92ZShw
cmVzZW50YXRpb25UaW1lKSwgcm90YXRpb24sIGZhbHNlKSk7CisgICAgcmV0dXJuIHN0ZDo6dW5p
cXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4obmV3IFJlbW90ZVZpZGVvU2FtcGxlKHN1cmZhY2Us
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBXVEZNb3ZlKHByZXNlbnRhdGlvblRpbWUp
LCByb3RhdGlvbiwgZmFsc2UpKTsKIH0KIAotUmVtb3RlVmlkZW9TYW1wbGU6OlJlbW90ZVZpZGVv
U2FtcGxlKElPU3VyZmFjZVJlZiBzdXJmYWNlLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwg
TWVkaWFUaW1lJiYgdGltZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24sIGJv
b2wgbWlycm9yZWQpCitSZW1vdGVWaWRlb1NhbXBsZTo6UmVtb3RlVmlkZW9TYW1wbGUoSU9TdXJm
YWNlUmVmIHN1cmZhY2UsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwg
TWVkaWFUaW1lJiYgdGltZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24sIGJv
b2wgbWlycm9yZWQpCiAgICAgOiBtX2lvU3VyZmFjZShXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0
ZUZyb21TdXJmYWNlKHN1cmZhY2UsIGNvbG9yU3BhY2UpKQogICAgICwgbV9yb3RhdGlvbihyb3Rh
dGlvbikKICAgICAsIG1fdGltZShXVEZNb3ZlKHRpbWUpKQpAQCAtMTQwLDcgKzE0MCw3IEBAIFJl
bW90ZVZpZGVvU2FtcGxlOjpSZW1vdGVWaWRlb1NhbXBsZShJT1MKIElPU3VyZmFjZVJlZiBSZW1v
dGVWaWRlb1NhbXBsZTo6c3VyZmFjZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lvU3VyZmFjZSAm
JiBtX3NlbmRSaWdodCkKLSAgICAgICAgY29uc3RfY2FzdDxSZW1vdGVWaWRlb1NhbXBsZSo+KHRo
aXMpLT5tX2lvU3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdo
dChXVEZNb3ZlKGNvbnN0X2Nhc3Q8UmVtb3RlVmlkZW9TYW1wbGUqPih0aGlzKS0+bV9zZW5kUmln
aHQpLCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICAgICAgY29uc3RfY2FzdDxSZW1vdGVWaWRl
b1NhbXBsZSo+KHRoaXMpLT5tX2lvU3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRl
RnJvbVNlbmRSaWdodChXVEZNb3ZlKGNvbnN0X2Nhc3Q8UmVtb3RlVmlkZW9TYW1wbGUqPih0aGlz
KS0+bV9zZW5kUmlnaHQpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAKICAgICBy
ZXR1cm4gbV9pb1N1cmZhY2UgPyBtX2lvU3VyZmFjZS0+c3VyZmFjZSgpIDogbnVsbHB0cjsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3Rl
VmlkZW9TYW1wbGUuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcg
KzEwMyw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgUmVtb3RlVmlkZW9TYW1w
bGUoSU9TdXJmYWNlUmVmLCBDR0NvbG9yU3BhY2VSZWYsIE1lZGlhVGltZSYmLCBNZWRpYVNhbXBs
ZTo6VmlkZW9Sb3RhdGlvbiwgYm9vbCk7CisgICAgUmVtb3RlVmlkZW9TYW1wbGUoSU9TdXJmYWNl
UmVmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBNZWRpYVRpbWUmJiwgTWVkaWFTYW1w
bGU6OlZpZGVvUm90YXRpb24sIGJvb2wpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OklPU3VyZmFjZT4gbV9pb1N1cmZhY2U7CiAgICAgV1RGOjpNYWNoU2VuZFJpZ2h0IG1fc2VuZFJp
Z2h0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93
Qmx1ci5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NoYWRvd0JsdXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1
YmxpYzoKICAgICAgICAgY2xlYXJTY3JhdGNoQnVmZmVyKCk7CiAKICAgICAgICAgLy8gU2hhZG93
Qmx1ciBpcyBub3QgdXNlZCB3aXRoIGFjY2VsZXJhdGVkIGRyYXdpbmcsIHNvIGl0J3MgT0sgdG8g
bWFrZSBhbiB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZCBidWZmZXIuCi0gICAgICAgIG1f
aW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJvdW5kZWRTaXplLCBSZW5kZXJpbmdN
b2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CisgICAgICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKHJvdW5kZWRTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgcmV0
dXJuIG1faW1hZ2VCdWZmZXI7CiAgICAgfQogCkBAIC02MDQsNyArNjA0LDcgQEAgdm9pZCBTaGFk
b3dCbHVyOjpkcmF3SW5zZXRTaGFkb3coY29uc3QgQQogCiB2b2lkIFNoYWRvd0JsdXI6OmRyYXdS
ZWN0U2hhZG93V2l0aG91dFRpbGluZyhjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9h
dFJvdW5kZWRSZWN0JiBzaGFkb3dlZFJlY3QsIGNvbnN0IExheWVySW1hZ2VQcm9wZXJ0aWVzJiBs
YXllckltYWdlUHJvcGVydGllcywgY29uc3QgRHJhd0J1ZmZlckNhbGxiYWNrJiBkcmF3QnVmZmVy
KQogewotICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoZXhwYW5kZWRJ
bnRTaXplKGxheWVySW1hZ2VQcm9wZXJ0aWVzLmxheWVyU2l6ZSksIFJlbmRlcmluZ01vZGU6OlVu
YWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6
OkJHUkE4KTsKKyAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFu
ZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGllcy5sYXllclNpemUpLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWxheWVySW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApA
QCAtNjMyLDcgKzYzMiw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0
VGkKIAogdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UmVjdCYgZnVsbFJlY3QsIGNvbnN0IEZsb2F0
Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBMYXllckltYWdlUHJvcGVydGllcyYgbGF5ZXJJ
bWFnZVByb3BlcnRpZXMsIGNvbnN0IERyYXdCdWZmZXJDYWxsYmFjayYgZHJhd0J1ZmZlcikKIHsK
LSAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6
ZShsYXllckltYWdlUHJvcGVydGllcy5sYXllclNpemUpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JB
OCk7CisgICAgYXV0byBsYXllckltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShleHBhbmRlZElu
dFNpemUobGF5ZXJJbWFnZVByb3BlcnRpZXMubGF5ZXJTaXplKSwgUmVuZGVyaW5nTW9kZTo6VW5h
Y2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0
OjpCR1JBOCk7CiAgICAgaWYgKCFsYXllckltYWdlKQogICAgICAgICByZXR1cm47CiAKQEAgLTcw
NSw3ICs3MDUsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluCiAj
ZW5kaWYKIAogICAgIGlmICghbGF5ZXJJbWFnZUJ1ZmZlcikgewotICAgICAgICBsYXllckltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNpemUsIFJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKKyAgICAgICAgbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVh
dGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgaWYg
KCFsYXllckltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTc2Myw3
ICs3NjMsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpCiAjZW5k
aWYKIAogICAgIGlmICghbGF5ZXJJbWFnZUJ1ZmZlcikgewotICAgICAgICBsYXllckltYWdlQnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNpemUsIFJlbmRlcmluZ01vZGU6OlVu
YWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6
OkJHUkE4KTsKKyAgICAgICAgbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
dGVtcGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgaWYgKCFs
YXllckltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTkwMyw3ICs5
MDMsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmJsdXJTaGFkb3dCdWZmZXIoSW1hZ2VCCiAgICAgaWYg
KG1fdHlwZSAhPSBCbHVyU2hhZG93KQogICAgICAgICByZXR1cm47CiAKLSAgICBQaXhlbEJ1ZmZl
ckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQs
IFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAg
UGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVt
dWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpIH07CiAgICAgSW50UmVjdCBibHVyUmVjdChJbnRQb2ludCgpLCB0ZW1wbGF0ZVNpemUpOwog
ICAgIGF1dG8gbGF5ZXJEYXRhID0gbGF5ZXJJbWFnZS5nZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIGJs
dXJSZWN0KTsKICAgICBpZiAoIWxheWVyRGF0YSkKQEAgLTkzMyw3ICs5MzMsNyBAQCB2b2lkIFNo
YWRvd0JsdXI6OmRyYXdTaGFkb3dMYXllcihjb25zdCBBCiAKICAgICBhZGp1c3RCbHVyUmFkaXVz
KHRyYW5zZm9ybSk7CiAKLSAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGllcy0+bGF5ZXJTaXplKSwgUmVuZGVy
aW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQ
aXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdlQnVmZmVyOjpj
cmVhdGUoZXhwYW5kZWRJbnRTaXplKGxheWVySW1hZ2VQcm9wZXJ0aWVzLT5sYXllclNpemUpLCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWxheWVySW1hZ2UpCiAgICAgICAg
IHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
R3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dy
YXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBA
IHN0YXRpYyB2b2lkIHdpcGVBbHBoYUNoYW5uZWxGcm9tUGl4ZWxzKGkKIAogT3B0aW9uYWw8UGl4
ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1
bHRzKCkKIHsKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCIH07CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBp
eGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgp
KTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0SW1wbENhaXJvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCShyZXZpc2lvbiAyNzc5
MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRJbXBsQ2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTQsNyArNDE0LDcgQEAgRmxv
YXRSZWN0IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6cm91bgogICAgIHJldHVybiBDYWlybzo6
U3RhdGU6OnJvdW5kVG9EZXZpY2VQaXhlbHMobV9wbGF0Zm9ybUNvbnRleHQsIHJlY3QpOwogfQog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNv
bnN0IEZsb2F0UmVjdCYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFw
aGljc0NvbnRleHQmKT4mJikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjbGlwVG9E
cmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikKIHsKICAgICAvLyBGSVhN
RTogTm90IGltcGxlbWVudGVkLgogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDQsNyArMTA0LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdp
bmRSdWxlKSBvdmVycmlkZTsKICAgICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBvdmVycmlkZTsKICAg
ICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0Jikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBo
aWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5k
cyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKICNpZiBF
TkFCTEUoVklERU8pCiAgICAgdm9pZCBwYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSBvdmVycmlkZTsKICAgICBib29sIGNhblBhaW50
RnJhbWVGb3JNZWRpYShjb25zdCBNZWRpYVBsYXllciYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDE5ICs4OSwx
OSBAQCB2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjpjbGlwVG9NYXNrCiAgICAgICAgIENh
aXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcigqZGVzdENvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIGlt
YWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIGRlc3RSZWN0KTsKIH0KIAotdm9pZCBJbWFnZUJ1
ZmZlckNhaXJvQmFja2VuZDo6dHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2Ugc3JjQ29sb3JTcGFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGRlc3RDb2xvclNwYWNlKQor
dm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6dHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHNyY0NvbG9yU3BhY2UsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgZGVzdENvbG9yU3BhY2UpCiB7CiAgICAgaWYgKHNyY0NvbG9yU3BhY2UgPT0gZGVz
dENvbG9yU3BhY2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIG9ubHkgc1JHQiA8LT4gbGlu
ZWFyUkdCIGFyZSBzdXBwb3J0ZWQgYXQgdGhlIG1vbWVudAotICAgIGlmICgoc3JjQ29sb3JTcGFj
ZSAhPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IgJiYgc3JjQ29sb3JTcGFjZSAh
PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpCi0gICAgICAgIHx8IChkZXN0Q29sb3JTcGFj
ZSAhPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IgJiYgZGVzdENvbG9yU3BhY2Ug
IT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKSkKKyAgICBpZiAoKHNyY0NvbG9yU3BhY2Ug
IT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCkgJiYgc3JjQ29sb3JTcGFjZSAh
PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSkKKyAgICAgICAgfHwgKGRlc3RDb2xvclNw
YWNlICE9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigpICYmIGRlc3RDb2xvclNw
YWNlICE9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgbV9wYXJhbWV0ZXJzLmNvbG9yU3BhY2UgPSBkZXN0Q29sb3JTcGFjZTsKIAotICAgIGlm
IChkZXN0Q29sb3JTcGFjZSA9PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IpIHsK
KyAgICBpZiAoZGVzdENvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJT
UkdCKCkpIHsKICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6YXJyYXk8dWludDhfdCwgMjU2PiBs
aW5lYXJSZ2JMVVQgPSBbXSB7CiAgICAgICAgICAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4g
YXJyYXk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjU2OyBpKyspIHsK
QEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjp0cmFuc2Zv
cm1DCiAgICAgICAgICAgICByZXR1cm4gYXJyYXk7CiAgICAgICAgIH0oKTsKICAgICAgICAgcGxh
dGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKGxpbmVhclJnYkxVVCk7Ci0gICAgfSBlbHNlIGlmIChk
ZXN0Q29sb3JTcGFjZSA9PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpIHsKKyAgICB9IGVs
c2UgaWYgKGRlc3RDb2xvclNwYWNlID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKSB7
CiAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4gZGV2aWNlUmdi
TFVUPSBbXSB7CiAgICAgICAgICAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4gYXJyYXk7CiAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNr
ZW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNs
aXBUb01hc2soR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkgb3Zl
cnJpZGU7CiAKLSAgICB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNw
YWNlIHNyY0NvbG9yU3BhY2UsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBkZXN0Q29sb3JTcGFjZSkg
b3ZlcnJpZGU7CisgICAgdm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYgc3JjQ29sb3JTcGFjZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBk
ZXN0Q29sb3JTcGFjZSkgb3ZlcnJpZGU7CiAKICAgICBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0
aW9uKSBjb25zdCBvdmVycmlkZTsKICAgICBWZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkgY29uc3Qgb3ZlcnJpZGU7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNH
LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvQ29sb3JDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjksMTMgKzI5LDE0IEBACiAjaWYgVVNFKENHKQogCiAjaW5jbHVkZSAiQ29sb3JTcGFj
ZUNHLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSA8bXV0
ZXg+CisjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbmNsdWRlIDx3
dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi9UaW55TFJVQ2FjaGUuaD4KLSNpbmNsdWRlIDxwYWwv
c3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
KyNpbmNsdWRlIDx3dGYvVGlueUxSVUNhY2hlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0
YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY3JlYXRlQ0dDb2xvcihjb25zdCBDb2xvciYpOwpA
QCAtOTEsMzQgKzkyLDM4IEBAIENvbG9yOjpDb2xvcihDR0NvbG9yUmVmIGNvbG9yLCBPcHRpb25T
ZXQKIHsKIH0KIAotc3RhdGljIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjcmVhdGVDR0NvbG9yKGNv
bnN0IENvbG9yJiBjb2xvcikKK3N0YXRpYyBzdGQ6OnBhaXI8Q0dDb2xvclNwYWNlUmVmLCBDb2xv
ckNvbXBvbmVudHM8ZmxvYXQsIDQ+PiBjb252ZXJ0VG9DR0NvbXBhdGlibGVDb21wb25lbnRzKENv
bG9yU3BhY2UgY29sb3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb21wb25lbnRz
KQogewotICAgIGF1dG8gW2NvbG9yU3BhY2UsIGNvbXBvbmVudHNdID0gY29sb3IuY29sb3JTcGFj
ZUFuZENvbXBvbmVudHMoKTsKLQotICAgIGF1dG8gY2dDb2xvclNwYWNlID0gY2FjaGVkTnVsbGFi
bGVDR0NvbG9yU3BhY2UoY29sb3JTcGFjZSk7Ci0KICAgICAvLyBTb21lIENHIHBvcnRzIGRvbid0
IHN1cHBvcnQgYWxsIHRoZSBjb2xvciBzcGFjZXMgcmVxdWlyZWQgYW5kIHJldHVybgogICAgIC8v
IG51bGxwdHIgZm9yIHVuc3VwcG9ydGVkIGNvbG9yIHNwYWNlcy4gSW4gdGhvc2UgY2FzZXMsIHdl
IGVhZ2VybHkgY29udmVydAogICAgIC8vIHRoZSBjb2xvciBpbnRvIGVpdGhlciBleHRlbmRlZCBz
UkdCIG9yIG5vcm1hbCBzUkdCLCBpZiBleHRlbmRlZCBzUkdCIGlzCi0gICAgLy8gbm90IHN1cHBv
cnRlZCwgYmVmb3JlIGNyZWF0aW5nIHRoZSBDR0NvbG9yUmVmLgorICAgIC8vIG5vdCBzdXBwb3J0
ZWQuCisKKyAgICBhdXRvIGNnQ29sb3JTcGFjZSA9IGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNl
KGNvbG9yU3BhY2UpOwogICAgIGlmICghY2dDb2xvclNwYWNlKSB7CiAjaWYgSEFWRShDT1JFX0dS
QVBISUNTX0VYVEVOREVEX1NSR0JfQ09MT1JfU1BBQ0UpCi0gICAgICAgIGF1dG8gY29sb3JDb252
ZXJ0ZWRUb0V4dGVuZGVkU1JHQkEgPSBjYWxsV2l0aENvbG9yVHlwZShjb21wb25lbnRzLCBjb2xv
clNwYWNlLCBbXSAoY29uc3QgYXV0byYgY29sb3IpIHsKLSAgICAgICAgICAgIHJldHVybiBjb252
ZXJ0Q29sb3I8RXh0ZW5kZWRTUkdCQTxmbG9hdD4+KGNvbG9yKTsKKyAgICAgICAgYXV0byBjZ0Nv
bXBhdGlibGVDb21wb25lbnRzID0gY2FsbFdpdGhDb2xvclR5cGUoY29tcG9uZW50cywgY29sb3JT
cGFjZSwgW10gKGNvbnN0IGF1dG8mIGNvbG9yKSB7CisgICAgICAgICAgICByZXR1cm4gYXNDb2xv
ckNvbXBvbmVudHMoY29udmVydENvbG9yPEV4dGVuZGVkU1JHQkE8ZmxvYXQ+Pihjb2xvcikpOwog
ICAgICAgICB9KTsKLSAgICAgICAgY29tcG9uZW50cyA9IGFzQ29sb3JDb21wb25lbnRzKGNvbG9y
Q29udmVydGVkVG9FeHRlbmRlZFNSR0JBKTsKLSAgICAgICAgY2dDb2xvclNwYWNlID0gZXh0ZW5k
ZWRTUkdCQ29sb3JTcGFjZVJlZigpOworICAgICAgICByZXR1cm4geyBleHRlbmRlZFNSR0JDb2xv
clNwYWNlUmVmKCksIGNnQ29tcGF0aWJsZUNvbXBvbmVudHMgfTsKICNlbHNlCiAgICAgICAgIGF1
dG8gY29sb3JDb252ZXJ0ZWRUb1NSR0JBID0gY2FsbFdpdGhDb2xvclR5cGUoY29tcG9uZW50cywg
Y29sb3JTcGFjZSwgW10gKGNvbnN0IGF1dG8mIGNvbG9yKSB7Ci0gICAgICAgICAgICByZXR1cm4g
Y29udmVydENvbG9yPFNSR0JBPGZsb2F0Pj4oY29sb3IpOworICAgICAgICAgICAgcmV0dXJuIGFz
Q29sb3JDb21wb25lbnRzKGNvbnZlcnRDb2xvcjxTUkdCQTxmbG9hdD4+KGNvbG9yKSk7CiAgICAg
ICAgIH0pOwotICAgICAgICBjb21wb25lbnRzID0gYXNDb2xvckNvbXBvbmVudHMoY29sb3JDb252
ZXJ0ZWRUb1NSR0JBKTsKLSAgICAgICAgY2dDb2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYo
KTsKKyAgICAgICAgcmV0dXJuIHsgc1JHQkNvbG9yU3BhY2VSZWYoKSwgY2dDb21wYXRpYmxlQ29t
cG9uZW50cyB9OwogI2VuZGlmCiAgICAgfQogCi0gICAgYXV0byBbciwgZywgYiwgYV0gPSBjb21w
b25lbnRzOwotICAgIENHRmxvYXQgY2dGbG9hdENvbXBvbmVudHNbNF0geyByLCBnLCBiLCBhIH07
CisgICAgcmV0dXJuIHsgY2dDb2xvclNwYWNlLCBjb21wb25lbnRzIH07Cit9CisKK3N0YXRpYyBS
ZXRhaW5QdHI8Q0dDb2xvclJlZj4gY3JlYXRlQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCit7
CisgICAgYXV0byBbY29sb3JTcGFjZSwgY29tcG9uZW50c10gPSBjb2xvci5jb2xvclNwYWNlQW5k
Q29tcG9uZW50cygpOworICAgIGF1dG8gW2NnQ29sb3JTcGFjZSwgY2dDb21wYXRpYmxlQ29tcG9u
ZW50c10gPSBjb252ZXJ0VG9DR0NvbXBhdGlibGVDb21wb25lbnRzKGNvbG9yU3BhY2UsIGNvbXBv
bmVudHMpOworICAgIAorICAgIGF1dG8gW2MxLCBjMiwgYzMsIGM0XSA9IGNnQ29tcGF0aWJsZUNv
bXBvbmVudHM7CisgICAgQ0dGbG9hdCBjZ0Zsb2F0Q29tcG9uZW50c1s0XSB7IGMxLCBjMiwgYzMs
IGM0IH07CiAKICAgICByZXR1cm4gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKGNnQ29sb3JTcGFjZSwg
Y2dGbG9hdENvbXBvbmVudHMpKTsKIH0KQEAgLTE2MSw2ICsxNjYsMjQgQEAgQ0dDb2xvclJlZiBj
YWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJiBjbwogICAgIHJldHVybiBjYWNoZS5nZXQoKS5nZXQo
Y29sb3IpLmdldCgpOwogfQogCitDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IHBsYXRmb3JtQ29u
dmVydENvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlIGlucHV0Q29sb3JTcGFjZSwgQ29sb3JDb21w
b25lbnRzPGZsb2F0LCA0PiBpbnB1dENvbG9yQ29tcG9uZW50cywgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiBvdXRwdXRDb2xvclNwYWNlKQoreworICAgIC8vIEZJWE1FOiBJbnZlc3RpZ2F0
ZSBvcHRpbWl6aW5nIHRoaXMgdG8gdXNlIHRoZSBidWlsdGluIGNvbG9yIGNvbnZlcnNpb24gY29k
ZSBmb3Igc3VwcG9ydGVkIGNvbG9yIHNwYWNlcy4KKworICAgIGF1dG8gW2NnSW5wdXRDb2xvclNw
YWNlLCBjZ0NvbXBhdGlibGVDb21wb25lbnRzXSA9IGNvbnZlcnRUb0NHQ29tcGF0aWJsZUNvbXBv
bmVudHMoaW5wdXRDb2xvclNwYWNlLCBpbnB1dENvbG9yQ29tcG9uZW50cyk7CisgICAgaWYgKGNn
SW5wdXRDb2xvclNwYWNlID09IG91dHB1dENvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCkp
CisgICAgICAgIHJldHVybiBjZ0NvbXBhdGlibGVDb21wb25lbnRzOworCisgICAgYXV0byBbYzEs
IGMyLCBjMywgYzRdID0gY2dDb21wYXRpYmxlQ29tcG9uZW50czsKKyAgICBDR0Zsb2F0IHNvdXJj
ZUNvbXBvbmVudHNbNF0geyBjMSwgYzIsIGMzLCBjNCB9OworICAgIENHRmxvYXQgZGVzdGluYXRp
b25Db21wb25lbnRzWzRdIHsgfTsKKworICAgIGF1dG8gdHJhbnNmb3JtID0gYWRvcHRDRihDR0Nv
bG9yVHJhbnNmb3JtQ3JlYXRlKG91dHB1dENvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCks
IG51bGxwdHIpKTsKKyAgICBhdXRvIHJlc3VsdCA9IENHQ29sb3JUcmFuc2Zvcm1Db252ZXJ0Q29s
b3JDb21wb25lbnRzKHRyYW5zZm9ybS5nZXQoKSwgY2dJbnB1dENvbG9yU3BhY2UsIGtDR1JlbmRl
cmluZ0ludGVudERlZmF1bHQsIHNvdXJjZUNvbXBvbmVudHMsIGRlc3RpbmF0aW9uQ29tcG9uZW50
cyk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgcmV0dXJuIHsgc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KGRlc3RpbmF0aW9uQ29tcG9uZW50c1swXSksIHN0YXRpY19jYXN0PGZs
b2F0PihkZXN0aW5hdGlvbkNvbXBvbmVudHNbMV0pLCBzdGF0aWNfY2FzdDxmbG9hdD4oZGVzdGlu
YXRpb25Db21wb25lbnRzWzJdKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRlc3RpbmF0aW9uQ29tcG9u
ZW50c1szXSkgfTsKK30KKwogfQogCiAjZW5kaWYgLy8gVVNFKENHKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9y
U3BhY2VDRy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksMjMgKzExOSw0IEBAIHN0YXRpYyBpbmxp
bmUgQ0dDb2xvclNwYWNlUmVmIGNhY2hlZE51bGwKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAot
Ly8gTk9URTogU2luY2UgdGhpcyBmdW5jdGlvbiBpcyBmb3IgKmRlc3RpbmF0aW9uKiBjb2xvciBz
cGFjZXMgd2hvc2UgY2FsbGVycyBhbHdheXMgZXhwZWN0IGEgbm9uLW51bGwgY29sb3Igc3BhY2Us
IHRoaXMgZnVuY3Rpb24gaXMgZ3VhcmFudGVlZCB0byByZXR1cm4gbm9uLW51bGwsIHVubGlrZSBj
YWNoZWROdWxsYWJsZUNHQ29sb3JTcGFjZSgpLgotc3RhdGljIGlubGluZSBDR0NvbG9yU3BhY2VS
ZWYgY2FjaGVkQ0dDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKQot
ewotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCOgotICAgICAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLSNpZiBFTkFC
TEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgY2FzZSBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0I6Ci0gICAgICAgIHJldHVybiBsaW5lYXJTUkdCQ29s
b3JTcGFjZVJlZigpOwotI2VuZGlmCi0jaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNF
X0RJU1BMQVlfUDMpCi0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMzoK
LSAgICAgICAgcmV0dXJuIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKTsKLSNlbmRpZgotICAgIH0K
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYo
KTsKLX0KLQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3Jh
cGhpY3NDb250ZXh0R0xDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdM
Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MzIsNyArNTMyLDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbgogICAgIH0pKTsKIAogICAgIGF1dG8gaW1hZ2VTaXpl
ID0gcGl4ZWxCdWZmZXIuc2l6ZSgpOwotICAgIGF1dG8gaW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3Jl
YXRlKGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhl
aWdodCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBjYWNoZWRDR0NvbG9yU3BhY2Uo
cGl4ZWxCdWZmZXIuZm9ybWF0KCkuY29sb3JTcGFjZSksIGJpdG1hcEluZm8sIGRhdGFQcm92aWRl
ci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKSk7CisgICAgYXV0
byBpbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdl
U2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCA0ICogaW1hZ2VTaXplLndp
ZHRoKCksIHBpeGVsQnVmZmVyLmZvcm1hdCgpLmNvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNl
KCksIGJpdG1hcEluZm8sIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmlu
Z0ludGVudERlZmF1bHQpKSk7CiAKICAgICAvLyBDU1Mgc3R5bGluZyBtYXkgY2F1c2UgdGhlIGNh
bnZhcydzIGNvbnRlbnQgdG8gYmUgcmVzaXplZCBvbgogICAgIC8vIHRoZSBwYWdlLiBHbyBiYWNr
IHRvIHRoZSBDYW52YXMgdG8gZmlndXJlIG91dCB0aGUgY29ycmVjdApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHAJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0lPU3VyZmFjZVBvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
ZiBIQVZFKElPU1VSRkFDRSkKIAorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0Nv
cmVHcmFwaGljcy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtNTksNyAr
NjAsNyBAQCBJT1N1cmZhY2VQb29sJiBJT1N1cmZhY2VQb29sOjpzaGFyZWRQb29sCiAgICAgcmV0
dXJuIHBvb2w7CiB9CiAKLXN0YXRpYyBib29sIHN1cmZhY2VNYXRjaGVzUGFyYW1ldGVycyhJT1N1
cmZhY2UmIHN1cmZhY2UsIEludFNpemUgcmVxdWVzdGVkU2l6ZSwgQ0dDb2xvclNwYWNlUmVmIGNv
bG9yU3BhY2UsIElPU3VyZmFjZTo6Rm9ybWF0IGZvcm1hdCkKK3N0YXRpYyBib29sIHN1cmZhY2VN
YXRjaGVzUGFyYW1ldGVycyhJT1N1cmZhY2UmIHN1cmZhY2UsIEludFNpemUgcmVxdWVzdGVkU2l6
ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBJT1N1cmZhY2U6OkZv
cm1hdCBmb3JtYXQpCiB7CiAgICAgaWYgKGZvcm1hdCAhPSBzdXJmYWNlLmZvcm1hdCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDIsNyArMTAzLDcgQEAgdm9pZCBJT1N1cmZhY2VQb29s
OjpkaWRVc2VTdXJmYWNlT2ZTaXplKAogICAgIG1fc2l6ZXNJblBydW5lT3JkZXIuYXBwZW5kKHNp
emUpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2VQb29sOjp0YWtl
U3VyZmFjZShJbnRTaXplIHNpemUsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlLCBJT1N1cmZh
Y2U6OkZvcm1hdCBmb3JtYXQpCitzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2VQ
b29sOjp0YWtlU3VyZmFjZShJbnRTaXplIHNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYgY29sb3JTcGFjZSwgSU9TdXJmYWNlOjpGb3JtYXQgZm9ybWF0KQogewogICAgIExvY2tlciBs
b2NrZXIgeyBtX2xvY2sgfTsKICAgICBDYWNoZWRTdXJmYWNlTWFwOjppdGVyYXRvciBtYXBJdGVy
ID0gbV9jYWNoZWRTdXJmYWNlcy5maW5kKHNpemUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuaAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9v
bC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgRGVzdGluYXRhdGlvbkNvbG9yU3BhY2U7CisKIGNsYXNzIElPU3VyZmFjZVBv
b2wgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKElPU3VyZmFjZVBvb2wpOwogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNDcsNyArNDksNyBAQCBjbGFzcyBJT1N1cmZhY2VQb29s
IHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSU9TdXJmYWNlUG9vbCYgc2hh
cmVkUG9vbCgpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gdGFrZVN1cmZhY2Uo
SW50U2l6ZSwgQ0dDb2xvclNwYWNlUmVmLCBJT1N1cmZhY2U6OkZvcm1hdCk7CisgICAgc3RkOjp1
bmlxdWVfcHRyPElPU3VyZmFjZT4gdGFrZVN1cmZhY2UoSW50U2l6ZSwgY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiwgSU9TdXJmYWNlOjpGb3JtYXQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgYWRkU3VyZmFjZShzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPik7CiAKICAgICB2b2lkIGRp
c2NhcmRBbGxTdXJmYWNlcygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDR0JhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzQsNyArMTc0LDcgQEAgUmV0
YWluUHRyPENHSW1hZ2VSZWY+IEltYWdlQnVmZmVyQ0dCYWNrZQogICAgICAgICAvLyBGSVhNRTog
U2hvdWxkIHRoaXMgYmUgdXNpbmcgdGhlIHNhbWUgbG9naWMgYXMgSW1hZ2VCdWZmZXJVdGlsaXRp
ZXNDRz8KIAogICAgICAgICAvLyBKUEVHcyBkb24ndCBoYXZlIGFuIGFscGhhIGNoYW5uZWwsIHNv
IHdlIGhhdmUgdG8gbWFudWFsbHkgY29tcG9zaXRlIG9uIHRvcCBvZiBibGFjay4KLSAgICAgICAg
UGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVs
dGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Ig
fTsKKyAgICAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSB9OwogICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gZ2V0UGl4ZWxCdWZm
ZXIoZm9ybWF0LCBsb2dpY2FsUmVjdCgpKTsKICAgICAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTkyLDcgKzE5Miw3IEBAIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBJbWFnZUJ1ZmZlckNHQmFja2UKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgICAgIGF1dG8gaW1hZ2VTaXplID0gcGl4ZWxCdWZmZXItPnNpemUoKTsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VT
aXplLmhlaWdodCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBjYWNoZWRDR0NvbG9y
U3BhY2UocGl4ZWxCdWZmZXItPmZvcm1hdCgpLmNvbG9yU3BhY2UpLCBrQ0dCaXRtYXBCeXRlT3Jk
ZXJEZWZhdWx0IHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0YVByb3ZpZGVyLmdldCgp
LCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOworICAgICAgICByZXR1cm4g
YWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0
KCksIDgsIDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCksIHBpeGVsQnVmZmVyLT5mb3JtYXQoKS5j
b2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBrQ0dCaXRtYXBCeXRlT3JkZXJEZWZhdWx0
IHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxz
ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwogICAgIH0KIAogICAgIGlmIChyZXNvbHV0
aW9uU2NhbGUoKSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRp
b246OlllcykgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcAkocmV2
aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3
IEBAIHNpemVfdCBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y2FsY3UKICAgICByZXR1cm4g
SW1hZ2VCdWZmZXJCYWNrZW5kOjpjYWxjdWxhdGVNZW1vcnlDb3N0KGJhY2tlbmRTaXplLCBjYWxj
dWxhdGVCeXRlc1BlclJvdyhiYWNrZW5kU2l6ZSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVh
dGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgQ0dDb2xvclNwYWNlUmVmIGNnQ29sb3JT
cGFjZSwgY29uc3QgSG9zdFdpbmRvdyopCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFy
YW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgSG9zdFdpbmRvdyopCiB7CiAgICAgQVNTRVJUKHBh
cmFtZXRlcnMucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKIApAQCAtODEsNyAr
ODEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlCiAgICAgc2l6
ZV90IG51bUJ5dGVzID0gYmFja2VuZFNpemUuaGVpZ2h0KCkgKiBieXRlc1BlclJvdzsKICAgICB2
ZXJpZnlJbWFnZUJ1ZmZlcklzQmlnRW5vdWdoKGRhdGEsIG51bUJ5dGVzKTsKIAotICAgIGF1dG8g
Y2dDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoZGF0YSwgYmFja2VuZFNp
emUud2lkdGgoKSwgYmFja2VuZFNpemUuaGVpZ2h0KCksIDgsIGJ5dGVzUGVyUm93LCBjZ0NvbG9y
U3BhY2UsIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3Jk
ZXIzMkhvc3QpKTsKKyAgICBhdXRvIGNnQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0
Q3JlYXRlKGRhdGEsIGJhY2tlbmRTaXplLndpZHRoKCksIGJhY2tlbmRTaXplLmhlaWdodCgpLCA4
LCBieXRlc1BlclJvdywgcGFyYW1ldGVycy5jb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgp
LCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJI
b3N0KSk7CiAgICAgaWYgKCFjZ0NvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBA
IC05NiwxNSArOTYsMTQgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNr
ZQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IEltYWdlQnVm
ZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywg
Y29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIGlmIChhdXRvIGNnQ29sb3JT
cGFjZSA9IGNvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkgPyBjb250ZXh0Q29sb3JTcGFjZShj
b250ZXh0KSA6IG51bGxwdHIpCi0gICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFj
a2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIGNnQ29sb3JTcGFjZS5nZXQoKSwgbnVsbHB0cik7Cisg
ICAgaWYgKGF1dG8gY2dDb2xvclNwYWNlID0gY29udGV4dC5oYXNQbGF0Zm9ybUNvbnRleHQoKSA/
IGNvbnRleHRDb2xvclNwYWNlKGNvbnRleHQpIDogbnVsbHB0cikgeworICAgICAgICBhdXRvIG92
ZXJyaWRlUGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7CisgICAgICAgIG92ZXJyaWRlUGFyYW1ldGVy
cy5jb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlIHsgY2dDb2xvclNwYWNlIH07CiAK
LSAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJz
LCBudWxscHRyKTsKLX0KKyAgICAgICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5k
OjpjcmVhdGUob3ZlcnJpZGVQYXJhbWV0ZXJzLCBudWxscHRyKTsKKyAgICB9CiAKLXN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBIb3N0V2lu
ZG93KiBob3N0V2luZG93KQotewotICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2Vu
ZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9y
U3BhY2UpLCBob3N0V2luZG93KTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tl
bmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBudWxscHRyKTsKIH0KIAogSW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQ6OkltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMsIHZvaWQqIGRhdGEsIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4mJiBkYXRh
UHJvdmlkZXIsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYgY29udGV4dCkKQEAg
LTE0Niw3ICsxNDUsNyBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyQ0dCaXRtYXBC
CiAgICAgICAgIGF1dG8gYmFja2VuZFNpemUgPSB0aGlzLT5iYWNrZW5kU2l6ZSgpOwogICAgICAg
ICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHSW1hZ2VDcmVhdGUoCiAgICAg
ICAgICAgICBiYWNrZW5kU2l6ZS53aWR0aCgpLCBiYWNrZW5kU2l6ZS5oZWlnaHQoKSwgOCwgMzIs
IGJ5dGVzUGVyUm93KCksCi0gICAgICAgICAgICBjYWNoZWRDR0NvbG9yU3BhY2UoY29sb3JTcGFj
ZSgpKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRl
cjMySG9zdCwgbV9kYXRhUHJvdmlkZXIuZ2V0KCksCisgICAgICAgICAgICBjb2xvclNwYWNlKCku
cGxhdGZvcm1Db2xvclNwYWNlKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBr
Q0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QsIG1fZGF0YVByb3ZpZGVyLmdldCgpLAogICAgICAgICAg
ICAgMCwgdHJ1ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpKTsKICAgICB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBC
YWNrZW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tl
bmQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksOCArMzksOSBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEludFNpemUgY2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKGNvbnN0IFBhcmFtZXRlcnMmKTsKICAg
ICBzdGF0aWMgc2l6ZV90IGNhbGN1bGF0ZU1lbW9yeUNvc3QoY29uc3QgUGFyYW1ldGVycyYpOwog
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4g
Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBDR0NvbG9yU3BhY2VSZWYsIGNvbnN0IEhvc3RXaW5k
b3cqKTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNr
ZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IEhvc3RXaW5kb3cqKTsKKworICAg
IC8vIEZJWE1FOiBSZW5hbWUgdG8gY3JlYXRlVXNpbmdDb2xvclNwYWNlT2ZHcmFwaGljc0NvbnRl
eHQoKSAob3Igc29tZXRoaW5nIGxpa2UgdGhhdCkuCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBj
b25zdCBHcmFwaGljc0NvbnRleHQmKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgp
IGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQu
Y3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
MSwxMyArODEsMTMgQEAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gSW1hZ2VCdWZmZXJJTwog
ICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29udGV4dENvbG9yU3BhY2UoY29udGV4
dCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IElt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMsIENHQ29sb3JTcGFjZVJlZiBjZ0NvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqIGhv
c3RXaW5kb3cpCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJ
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQogewogICAgIEludFNpemUgYmFj
a2VuZFNpemUgPSBjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUocGFyYW1ldGVycyk7CiAgICAgaWYg
KGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBh
dXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShiYWNrZW5kU2l6ZSwgYmFja2VuZFNpemUs
IGNnQ29sb3JTcGFjZSwgSU9TdXJmYWNlOjpmb3JtYXRGb3JQaXhlbEZvcm1hdChwYXJhbWV0ZXJz
LnBpeGVsRm9ybWF0KSk7CisgICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoYmFj
a2VuZFNpemUsIGJhY2tlbmRTaXplLCBwYXJhbWV0ZXJzLmNvbG9yU3BhY2UsIElPU3VyZmFjZTo6
Zm9ybWF0Rm9yUGl4ZWxGb3JtYXQocGFyYW1ldGVycy5waXhlbEZvcm1hdCkpOwogICAgIGlmICgh
c3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTEwMiwxNSArMTAyLDE0IEBA
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2sKIAogc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KQogewotICAgIGlmIChhdXRvIGNnQ29sb3JTcGFjZSA9IGNvbnRleHQu
aGFzUGxhdGZvcm1Db250ZXh0KCkgPyBjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0KSA6IG51bGxw
dHIpCi0gICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShw
YXJhbWV0ZXJzLCBjZ0NvbG9yU3BhY2UuZ2V0KCksIG51bGxwdHIpOworICAgIGlmIChhdXRvIGNn
Q29sb3JTcGFjZSA9IGNvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkgPyBjb250ZXh0Q29sb3JT
cGFjZShjb250ZXh0KSA6IG51bGxwdHIpIHsKKyAgICAgICAgYXV0byBvdmVycmlkZVBhcmFtZXRl
cnMgPSBwYXJhbWV0ZXJzOworICAgICAgICBvdmVycmlkZVBhcmFtZXRlcnMuY29sb3JTcGFjZSA9
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSB7IGNnQ29sb3JTcGFjZSB9OwogCi0gICAgcmV0dXJuIElt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIG51bGxwdHIpOwot
fQorICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUob3Zl
cnJpZGVQYXJhbWV0ZXJzLCBudWxscHRyKTsKKyAgICB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3Jl
YXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RX
aW5kb3cpCi17Ci0gICAgcmV0dXJuIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRl
KHBhcmFtZXRlcnMsIGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpLCBo
b3N0V2luZG93KTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVh
dGUocGFyYW1ldGVycywgbnVsbHB0cik7CiB9CiAKIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZDo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMsIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+JiYgc3VyZmFjZSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAko
d29ya2luZyBjb3B5KQpAQCAtNDIsOCArNDIsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHNpemVf
dCBjYWxjdWxhdGVNZW1vcnlDb3N0KGNvbnN0IFBhcmFtZXRlcnMmKTsKICAgICBzdGF0aWMgc2l6
ZV90IGNhbGN1bGF0ZUV4dGVybmFsTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJzJik7CiAgICAg
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+
IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgQ0dDb2xvclNwYWNlUmVmLCBjb25zdCBIb3N0V2lu
ZG93Kik7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgSG9zdFdpbmRvdyopOworICAg
IC8vIEZJWE1FOiBSZW5hbWUgdG8gY3JlYXRlVXNpbmdDb2xvclNwYWNlT2ZHcmFwaGljc0NvbnRl
eHQoKSAob3Igc29tZXRoaW5nIGxpa2UgdGhhdCkuCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQoY29uc3QgUGFyYW1ldGVycyYsIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+JiYpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRp
ZXNDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsNyArMTc3LDcgQEAgc3RhdGljIGJvb2wgZW5jb2RlKGNv
bnN0IFBpeGVsQnVmZmVyJiBzbwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8g
aW1hZ2VTaXplID0gc291cmNlLnNpemUoKTsKLSAgICBhdXRvIGltYWdlID0gYWRvcHRDRihDR0lt
YWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCA0
ICogaW1hZ2VTaXplLndpZHRoKCksIGNhY2hlZENHQ29sb3JTcGFjZShzb3VyY2UuZm9ybWF0KCku
Y29sb3JTcGFjZSksIGtDR0JpdG1hcEJ5dGVPcmRlckRlZmF1bHQgfCBkYXRhQWxwaGFJbmZvLCBk
YXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7
CisgICAgYXV0byBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgo
KSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBzb3Vy
Y2UuZm9ybWF0KCkuY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwga0NHQml0bWFwQnl0
ZU9yZGVyRGVmYXVsdCB8IGRhdGFBbHBoYUluZm8sIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFs
c2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKIAogICAgIHJldHVybiBlbmNvZGUoaW1h
Z2UuZ2V0KCksIGRlc3RpbmF0aW9uVVRJLmdldCgpLCBxdWFsaXR5LCBmdW5jdGlvbik7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0JKHJldmlzaW9u
IDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTU3MSw3ICs1NzEs
NyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzCiBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjphbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygp
CiB7CiAgICAgQVNTRVJUKCFnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLmlzRW1wdHkoKSk7
Ci0gICAgYXV0byBiYWNraW5nID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGUoZ2V0SW50ZXJu
YWxGcmFtZWJ1ZmZlclNpemUoKSwgV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAg
YXV0byBiYWNraW5nID0gSU9TdXJmYWNlOjpjcmVhdGUoZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNp
emUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgIGlmICghYmFja2luZykK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaAkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDkgKzI3LDEwIEBACiAKICNpZiBIQVZFKElPU1VSRkFDRSkKIAorI2lu
Y2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKICNp
bmNsdWRlIDxvYmpjL29iamMuaD4KICNpbmNsdWRlIDxwYWwvc3BpL2NvY29hL0lPU3VyZmFjZVNQ
SS5oPgotI2luY2x1ZGUgIkludFNpemUuaCIKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYm
ICFQTEFURk9STShNQUNDQVRBTFlTVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9S
KQogI2RlZmluZSBIQVZFX0lPU1VSRkFDRV9SR0IxMCAxCkBAIC00NiwxMCArNDcsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEhvc3RXaW5k
b3c7Ci0gICAgCi0jaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKIGNsYXNz
IEltYWdlQnVmZmVyOwotI2VuZGlmCiAKIGVudW0gY2xhc3MgUGl4ZWxGb3JtYXQgOiB1aW50OF90
OwogZW51bSBjbGFzcyBWb2xhdGlsaXR5U3RhdGUgOiB1aW50OF90OwpAQCAtMTAxLDEwICs5OSwx
MCBAQCBwdWJsaWM6CiAgICAgICAgIHVpbnQzMl90IG1fZmxhZ3M7CiAgICAgfTsKIAotICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGUoSW50
U2l6ZSwgQ0dDb2xvclNwYWNlUmVmLCBGb3JtYXQgPSBGb3JtYXQ6OkJHUkEpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGUoSW50U2l6
ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xvclNwYWNlUmVmLCBGb3JtYXQgPSBGb3JtYXQ6
OkJHUkEpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJm
YWNlPiBjcmVhdGVGcm9tU2VuZFJpZ2h0KGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYmLCBDR0Nv
bG9yU3BhY2VSZWYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
SU9TdXJmYWNlPiBjcmVhdGVGcm9tU3VyZmFjZShJT1N1cmZhY2VSZWYsIENHQ29sb3JTcGFjZVJl
Zik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+
IGNyZWF0ZShJbnRTaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGb3JtYXQgPSBG
b3JtYXQ6OkJHUkEpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
SU9TdXJmYWNlPiBjcmVhdGUoSW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiwgRm9ybWF0ID0gRm9ybWF0OjpCR1JBKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlRnJvbVNlbmRS
aWdodChjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZh
Y2U+IGNyZWF0ZUZyb21TdXJmYWNlKElPU3VyZmFjZVJlZiwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1
cmZhY2U+IGNyZWF0ZUZyb21JbWFnZShDR0ltYWdlUmVmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlRnJvbVBpeGVsQnVmZmVyKENW
UGl4ZWxCdWZmZXJSZWYpOwogICAgIApAQCAtMTQ2LDcgKzE0NCw3IEBAIHB1YmxpYzoKICAgICBJ
bnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICBzaXplX3QgdG90YWxC
eXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxCeXRlczsgfQogCi0gICAgQ0dDb2xvclNwYWNl
UmVmIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yU3BhY2UuZ2V0KCk7IH0KKyAg
ICBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVy
biBtX2NvbG9yU3BhY2U7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBGb3JtYXQgZm9ybWF0KCkgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgSU9TdXJmYWNlSUQgc3VyZmFjZUlEKCkgY29uc3Q7CiAg
ICAgc2l6ZV90IGJ5dGVzUGVyUm93KCkgY29uc3Q7CkBAIC0xNjksMTQgKzE2NywxNCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBtaWdyYXRlQ29sb3JTcGFjZVRvUHJvcGVydGllcygpOwogCiBwcml2YXRl
OgotICAgIElPU3VyZmFjZShJbnRTaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBDR0NvbG9yU3Bh
Y2VSZWYsIEZvcm1hdCwgYm9vbCYgc3VjY2Vzcyk7Ci0gICAgSU9TdXJmYWNlKElPU3VyZmFjZVJl
ZiwgQ0dDb2xvclNwYWNlUmVmKTsKKyAgICBJT1N1cmZhY2UoSW50U2l6ZSwgSW50U2l6ZSBjb250
ZXh0U2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRm9ybWF0LCBib29sJiBzdWNj
ZXNzKTsKKyAgICBJT1N1cmZhY2UoSU9TdXJmYWNlUmVmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmKTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBzdXJmYWNl
RnJvbVBvb2woSW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xvclNwYWNlUmVmLCBG
b3JtYXQpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBzdXJmYWNlRnJv
bVBvb2woSW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiwgRm9ybWF0KTsKICAgICBJbnRTaXplIGNvbnRleHRTaXplKCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZXh0U2l6ZTsgfQogICAgIHZvaWQgc2V0Q29udGV4dFNpemUoSW50U2l6ZSk7CiAK
LSAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBtX2NvbG9yU3BhY2U7CisgICAgRGVzdGlu
YXRpb25Db2xvclNwYWNlIG1fY29sb3JTcGFjZTsKICAgICBJbnRTaXplIG1fc2l6ZTsKICAgICBJ
bnRTaXplIG1fY29udGV4dFNpemU7CiAgICAgc2l6ZV90IG1fdG90YWxCeXRlczsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2Uu
bW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0lPU3VyZmFjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2lt
cG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJJT1N1cmZhY2UuaCIKIAotI2ltcG9ydCAiQ29yZVZp
ZGVvU29mdExpbmsuaCIKKyNpbXBvcnQgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2ltcG9y
dCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMLmgiCiAj
aW1wb3J0ICJIb3N0V2luZG93LmgiCkBAIC00MSw5ICs0MSwxMSBAQAogI2ltcG9ydCA8d3RmL01h
dGhFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAorI2ltcG9ydCAi
Q29yZVZpZGVvU29mdExpbmsuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgc3Rk
Ojp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpzdXJmYWNlRnJvbVBvb2woSW50U2l6
ZSBzaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwg
Rm9ybWF0IHBpeGVsRm9ybWF0KQoraW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElP
U3VyZmFjZTo6c3VyZmFjZUZyb21Qb29sKEludFNpemUgc2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6
ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGb3JtYXQgcGl4ZWxG
b3JtYXQpCiB7CiAgICAgYXV0byBjYWNoZWRTdXJmYWNlID0gSU9TdXJmYWNlUG9vbDo6c2hhcmVk
UG9vbCgpLnRha2VTdXJmYWNlKHNpemUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKICAgICBp
ZiAoIWNhY2hlZFN1cmZhY2UpCkBAIC01MywxMiArNTUsMTIgQEAgaW5saW5lIHN0ZDo6dW5pcXVl
X3B0cjxJT1N1cmZhY2U+IElPU3VyZgogICAgIHJldHVybiBjYWNoZWRTdXJmYWNlOwogfQogCi1z
dGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZShJbnRTaXplIHNpemUs
IENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlLCBGb3JtYXQgcGl4ZWxGb3JtYXQpCitzdGQ6OnVu
aXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZShJbnRTaXplIHNpemUsIGNvbnN0
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgRm9ybWF0IHBpeGVsRm9ybWF0KQog
ewogICAgIHJldHVybiBJT1N1cmZhY2U6OmNyZWF0ZShzaXplLCBzaXplLCBjb2xvclNwYWNlLCBw
aXhlbEZvcm1hdCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6
Y3JlYXRlKEludFNpemUgc2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xvclNwYWNlUmVm
IGNvbG9yU3BhY2UsIEZvcm1hdCBwaXhlbEZvcm1hdCkKK3N0ZDo6dW5pcXVlX3B0cjxJT1N1cmZh
Y2U+IElPU3VyZmFjZTo6Y3JlYXRlKEludFNpemUgc2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwg
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGb3JtYXQgcGl4ZWxGb3Jt
YXQpCiB7CiAgICAgaWYgKGF1dG8gY2FjaGVkU3VyZmFjZSA9IHN1cmZhY2VGcm9tUG9vbChzaXpl
LCBjb250ZXh0U2l6ZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpKSB7CiAgICAgICAgIExPR19X
SVRIX1NUUkVBTShJT1N1cmZhY2UsIHN0cmVhbSA8PCAiSU9TdXJmYWNlOjpjcmVhdGUgdG9vayBm
cm9tIHBvb2w6ICIgPDwgKmNhY2hlZFN1cmZhY2UpOwpAQCAtNzUsMTMgKzc3LDEzIEBAIHN0ZDo6
dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6Y3IKICAgICByZXR1cm4gc3VyZmFjZTsK
IH0KIAotc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2Vu
ZFJpZ2h0KGNvbnN0IE1hY2hTZW5kUmlnaHQmJiBzZW5kUmlnaHQsIENHQ29sb3JTcGFjZVJlZiBj
b2xvclNwYWNlKQorc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGVG
cm9tU2VuZFJpZ2h0KGNvbnN0IE1hY2hTZW5kUmlnaHQmJiBzZW5kUmlnaHQsIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkKIHsKICAgICBhdXRvIHN1cmZhY2UgPSBhZG9w
dENGKElPU3VyZmFjZUxvb2t1cEZyb21NYWNoUG9ydChzZW5kUmlnaHQuc2VuZFJpZ2h0KCkpKTsK
ICAgICByZXR1cm4gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU3VyZmFjZShzdXJmYWNlLmdldCgpLCBj
b2xvclNwYWNlKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpj
cmVhdGVGcm9tU3VyZmFjZShJT1N1cmZhY2VSZWYgc3VyZmFjZSwgQ0dDb2xvclNwYWNlUmVmIGNv
bG9yU3BhY2UpCitzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZUZy
b21TdXJmYWNlKElPU3VyZmFjZVJlZiBzdXJmYWNlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmIGNvbG9yU3BhY2UpCiB7CiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+
KG5ldyBJT1N1cmZhY2Uoc3VyZmFjZSwgY29sb3JTcGFjZSkpOwogfQpAQCAtOTQsNyArOTYsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyCiAgICAgc2l6ZV90IHdp
ZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlKTsKICAgICBzaXplX3QgaGVpZ2h0ID0gQ0dJbWFn
ZUdldEhlaWdodChpbWFnZSk7CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0
ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpLCBDR0ltYWdlR2V0Q29sb3JTcGFjZShpbWFnZSkpOwor
ICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKEludFNpemUod2lkdGgsIGhlaWdo
dCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB7IENHSW1hZ2VHZXRDb2xvclNwYWNlKGltYWdlKSB9
KTsKICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8g
c3VyZmFjZUNvbnRleHQgPSBzdXJmYWNlLT5lbnN1cmVQbGF0Zm9ybUNvbnRleHQoKTsKQEAgLTEx
Niw3ICsxMTgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyCiAg
ICAgaWYgKCFjb2xvclNwYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVy
biBjcmVhdGVGcm9tU3VyZmFjZShzdXJmYWNlLCBjb2xvclNwYWNlKTsKKyAgICByZXR1cm4gY3Jl
YXRlRnJvbVN1cmZhY2Uoc3VyZmFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIHsgY29sb3JTcGFj
ZSB9KTsKIH0KIAogdm9pZCBJT1N1cmZhY2U6Om1vdmVUb1Bvb2woc3RkOjp1bmlxdWVfcHRyPElP
U3VyZmFjZT4mJiBzdXJmYWNlKQpAQCAtMTk2LDcgKzE5OCw3IEBAIHN0YXRpYyBOU0RpY3Rpb25h
cnkgKm9wdGlvbnNGb3IzMkJpdFN1cmYKIAogfQogCi1JT1N1cmZhY2U6OklPU3VyZmFjZShJbnRT
aXplIHNpemUsIEludFNpemUgY29udGV4dFNpemUsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNl
LCBGb3JtYXQgZm9ybWF0LCBib29sJiBzdWNjZXNzKQorSU9TdXJmYWNlOjpJT1N1cmZhY2UoSW50
U2l6ZSBzaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmIGNvbG9yU3BhY2UsIEZvcm1hdCBmb3JtYXQsIGJvb2wmIHN1Y2Nlc3MpCiAgICAgOiBtX2Nv
bG9yU3BhY2UoY29sb3JTcGFjZSkKICAgICAsIG1fc2l6ZShzaXplKQogICAgICwgbV9jb250ZXh0
U2l6ZShjb250ZXh0U2l6ZSkKQEAgLTIzMiw3ICsyMzQsNyBAQCBJT1N1cmZhY2U6OklPU3VyZmFj
ZShJbnRTaXplIHNpemUsIEludFNpCiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKExheWVycywg
IklPU3VyZmFjZSBjcmVhdGlvbiBmYWlsZWQgZm9yIHNpemU6ICglZCAlZCkgYW5kIGZvcm1hdDog
KCVkKSIsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgZm9ybWF0KTsKIH0KIAotSU9TdXJm
YWNlOjpJT1N1cmZhY2UoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIENHQ29sb3JTcGFjZVJlZiBjb2xv
clNwYWNlKQorSU9TdXJmYWNlOjpJT1N1cmZhY2UoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIGNvbnN0
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkKICAgICA6IG1fY29sb3JTcGFjZShj
b2xvclNwYWNlKQogICAgICwgbV9zdXJmYWNlKHN1cmZhY2UpCiB7CkBAIC0zNDcsNyArMzQ5LDcg
QEAgQ0dDb250ZXh0UmVmIElPU3VyZmFjZTo6ZW5zdXJlUGxhdGZvcm1DbwogICAgICAgICBicmVh
azsKICAgICB9CiAgICAgCi0gICAgbV9jZ0NvbnRleHQgPSBhZG9wdENGKENHSU9TdXJmYWNlQ29u
dGV4dENyZWF0ZShtX3N1cmZhY2UuZ2V0KCksIG1fY29udGV4dFNpemUud2lkdGgoKSwgbV9jb250
ZXh0U2l6ZS5oZWlnaHQoKSwgYml0c1BlckNvbXBvbmVudCwgYml0c1BlclBpeGVsLCBtX2NvbG9y
U3BhY2UuZ2V0KCksIGJpdG1hcEluZm8pKTsKKyAgICBtX2NnQ29udGV4dCA9IGFkb3B0Q0YoQ0dJ
T1N1cmZhY2VDb250ZXh0Q3JlYXRlKG1fc3VyZmFjZS5nZXQoKSwgbV9jb250ZXh0U2l6ZS53aWR0
aCgpLCBtX2NvbnRleHRTaXplLmhlaWdodCgpLCBiaXRzUGVyQ29tcG9uZW50LCBiaXRzUGVyUGl4
ZWwsIG1fY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwgYml0bWFwSW5mbykpOwogCiAj
aWYgUExBVEZPUk0oTUFDKQogICAgIGlmIChhdXRvIGRpc3BsYXlNYXNrID0gcHJpbWFyeU9wZW5H
TERpc3BsYXlNYXNrKCkpIHsKQEAgLTUxNSw3ICs1MTcsNyBAQCB2b2lkIElPU3VyZmFjZTo6c2V0
T3duZXJzaGlwSWRlbnRpdHkodGFzCiAKIHZvaWQgSU9TdXJmYWNlOjptaWdyYXRlQ29sb3JTcGFj
ZVRvUHJvcGVydGllcygpCiB7Ci0gICAgYXV0byBjb2xvclNwYWNlUHJvcGVydGllcyA9IGFkb3B0
Q0YoQ0dDb2xvclNwYWNlQ29weVByb3BlcnR5TGlzdChtX2NvbG9yU3BhY2UuZ2V0KCkpKTsKKyAg
ICBhdXRvIGNvbG9yU3BhY2VQcm9wZXJ0aWVzID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDb3B5UHJv
cGVydHlMaXN0KG1fY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSkpOwogICAgIElPU3Vy
ZmFjZVNldFZhbHVlKG1fc3VyZmFjZS5nZXQoKSwga0lPU3VyZmFjZUNvbG9yU3BhY2UsIGNvbG9y
U3BhY2VQcm9wZXJ0aWVzLmdldCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9G
aWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRl
cmVyQ29yZUltYWdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBG
aWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6cmVuZAogICAgICAgICByZXR1cm47CiAgICAg
CiAgICAgYXV0byYgc3VyZmFjZSA9IGRvd25jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI+KCpt
X291dHB1dEltYWdlQnVmZmVyKS5zdXJmYWNlKCk7Ci0gICAgW3NoYXJlZENJQ29udGV4dCgpLmdl
dCgpIHJlbmRlcjogbV9vdXRwdXRJbWFnZS5nZXQoKSB0b0lPU3VyZmFjZTogc3VyZmFjZS5zdXJm
YWNlKCkgYm91bmRzOmRlc3RSZWN0KGxhc3RFZmZlY3QpIGNvbG9yU3BhY2U6Y2FjaGVkQ0dDb2xv
clNwYWNlKGxhc3RFZmZlY3QucmVzdWx0Q29sb3JTcGFjZSgpKV07CisgICAgW3NoYXJlZENJQ29u
dGV4dCgpLmdldCgpIHJlbmRlcjogbV9vdXRwdXRJbWFnZS5nZXQoKSB0b0lPU3VyZmFjZTogc3Vy
ZmFjZS5zdXJmYWNlKCkgYm91bmRzOmRlc3RSZWN0KGxhc3RFZmZlY3QpIGNvbG9yU3BhY2U6bGFz
dEVmZmVjdC5yZXN1bHRDb2xvclNwYWNlKCkucGxhdGZvcm1Db2xvclNwYWNlKCldOwogfQogICAg
IAogRmxvYXRSZWN0IEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpkZXN0UmVjdChjb25z
dCBGaWx0ZXJFZmZlY3QmIGxhc3RFZmZlY3QpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVm
ZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgSW1hZ2VCdWZmZXIg
OiBwdWJsaWMgQ29uY3JldGVJbWFnZQogICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVy
OjpiYXNlVHJhbnNmb3JtOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5k
b3cqIGhvc3RXaW5kb3cpCisgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
IGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBo
b3N0V2luZG93KQogICAgIHsKICAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVy
Ojp0ZW1wbGF0ZSBjcmVhdGU8SW1hZ2VCdWZmZXI+KHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29s
b3JTcGFjZSwgcGl4ZWxGb3JtYXQsIGhvc3RXaW5kb3cpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZm
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtQnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQg
SXRlbUhhbmRsZTo6ZGVzdHJveSgpCiAgICAgICAgIGdldDxGaWxsUm91bmRlZFJlY3Q+KCkufkZp
bGxSb3VuZGVkUmVjdCgpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJdGVtVHlwZTo6R2V0
UGl4ZWxCdWZmZXI6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVz
dHJ1Y3RpYmxlPEdldFBpeGVsQnVmZmVyPjo6dmFsdWUpOworICAgICAgICBnZXQ8R2V0UGl4ZWxC
dWZmZXI+KCkufkdldFBpeGVsQnVmZmVyKCk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEl0
ZW1UeXBlOjpQdXRQaXhlbEJ1ZmZlcjoKICAgICAgICAgZ2V0PFB1dFBpeGVsQnVmZmVyPigpLn5Q
dXRQaXhlbEJ1ZmZlcigpOwpAQCAtMzA3LDcgKzMwNyw3IEBAIHZvaWQgSXRlbUhhbmRsZTo6ZGVz
dHJveSgpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgogICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2lu
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJp
dmlhbGx5X2Rlc3RydWN0aWJsZTxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz46OnZhbHVlKTsK
KyAgICAgICAgZ2V0PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpLn5CZWdpbkNsaXBUb0Ry
YXdpbmdDb21tYW5kcygpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJdGVtVHlwZTo6QmVn
aW5UcmFuc3BhcmVuY3lMYXllcjoKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZp
YWxseV9kZXN0cnVjdGlibGU8QmVnaW5UcmFuc3BhcmVuY3lMYXllcj46OnZhbHVlKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1UeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAJKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1UeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDYgKzI4MSw3IEBAIGJv
b2wgaXNJbmxpbmVJdGVtKEl0ZW1UeXBlIHR5cGUpCiAgICAgICogYW5kICgzKSBhbGwgdGhlICJz
dGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtInMgaW5zaWRlIHRoZSBpbmRpdmlkdWFs
IGl0ZW0gY2xhc3Nlcy4gKi8KIAogICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgSXRlbVR5
cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBP
dXRUb1BhdGg6CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6CiAgICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd0ZvY3VzUmluZ1BhdGg6CkBAIC0yOTQsNiArMjk1LDcgQEAgYm9vbCBpc0lubGluZUl0
ZW0oSXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVu
dDoKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZToKICAgICBjYXNl
IEl0ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3Q6CisgICAgY2FzZSBJdGVtVHlwZTo6R2V0UGl4ZWxC
dWZmZXI6CiAgICAgY2FzZSBJdGVtVHlwZTo6UHV0UGl4ZWxCdWZmZXI6CiAgICAgY2FzZSBJdGVt
VHlwZTo6U2V0TGluZURhc2g6CiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6CkBAIC0zMTAs
NyArMzEyLDYgQEAgYm9vbCBpc0lubGluZUl0ZW0oSXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0
ZW1UeXBlOjpDbGlwOgogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXQ6CiAgICAgY2FzZSBJdGVt
VHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9E
cmF3aW5nQ29tbWFuZHM6CiAgICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzOgogICAgIGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgogICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6CkBAIC0zNTEsNyArMzUyLDYgQEAgYm9vbCBp
c0lubGluZUl0ZW0oSXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0
OgogICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUxpbmU6CiAgICAgY2FzZSBJdGVtVHlwZTo6VHJh
bnNsYXRlOgotICAgIGNhc2UgSXRlbVR5cGU6OkdldFBpeGVsQnVmZmVyOgogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgJKHdv
cmtpbmcgY29weSkKQEAgLTg4MCwyMyArODgwLDU1IEBAIE9wdGlvbmFsPENsaXBQYXRoPiBDbGlw
UGF0aDo6ZGVjb2RlKERlY28KIGNsYXNzIEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIEl0ZW1UeXBlIGl0ZW1UeXBlID0gSXRlbVR5cGU6
OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBp
c0lubGluZUl0ZW0gPSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0
ZW0gPSBmYWxzZTsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IGZh
bHNlOwogCi0gICAgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpCisgICAgQmVnaW5D
bGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQogICAgICAgICA6IG1fZGVzdGluYXRp
b24oZGVzdGluYXRpb24pCiAgICAgICAgICwgbV9jb2xvclNwYWNlKGNvbG9yU3BhY2UpCiAgICAg
ewogICAgIH0KIAorICAgIEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSYmIGNvbG9yU3BhY2UpCisgICAg
ICAgIDogbV9kZXN0aW5hdGlvbihkZXN0aW5hdGlvbikKKyAgICAgICAgLCBtX2NvbG9yU3BhY2Uo
V1RGTW92ZShjb2xvclNwYWNlKSkKKyAgICB7CisgICAgfQorCiAgICAgY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0KLSAgICBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JTcGFj
ZTsgfQorICAgIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY29sb3JTcGFjZTsgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBPcHRpb25hbDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4gZGVjb2RlKERlY29k
ZXImKTsKIAogcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvbjsKICAgICBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgbV9jb2xvclNwYWNlOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KK3ZvaWQgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9kZXN0aW5hdGlvbjsKKyAgICBlbmNv
ZGVyIDw8IG1fY29sb3JTcGFjZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlv
bmFsPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPiBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5k
czo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBk
ZXN0aW5hdGlvbjsKKyAgICBkZWNvZGVyID4+IGRlc3RpbmF0aW9uOworICAgIGlmICghZGVzdGlu
YXRpb24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxEZXN0
aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CisgICAgZGVjb2RlciA+PiBjb2xvclNwYWNl
OworICAgIGlmICghY29sb3JTcGFjZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIHJldHVybiB7eyAqZGVzdGluYXRpb24sIFdURk1vdmUoKmNvbG9yU3BhY2UpIH19OworfQor
CiBjbGFzcyBFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMgewogcHVibGljOgogICAgIHN0YXRpYyBj
b25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUgPSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzOwpAQCAtMTkzOCwyMyArMTk3MCw1NSBAQCBwcml2YXRlOgogY2xhc3MgR2V0UGl4ZWxC
dWZmZXIgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUg
PSBJdGVtVHlwZTo6R2V0UGl4ZWxCdWZmZXI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlz
SW5saW5lSXRlbSA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRl
bSA9IGZhbHNlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RyYXdpbmdJdGVtID0gZmFs
c2U7CiAKLSAgICBHZXRQaXhlbEJ1ZmZlcihXZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1hdCBvdXRw
dXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QpCisgICAgR2V0UGl4ZWxC
dWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVj
dCYgc3JjUmVjdCkKICAgICAgICAgOiBtX3NyY1JlY3Qoc3JjUmVjdCkKICAgICAgICAgLCBtX291
dHB1dEZvcm1hdChvdXRwdXRGb3JtYXQpCiAgICAgewogICAgIH0KIAotICAgIFBpeGVsQnVmZmVy
Rm9ybWF0IG91dHB1dEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fb3V0cHV0Rm9ybWF0OyB9Cisg
ICAgR2V0UGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXJGb3JtYXQmJiBvdXRwdXRGb3JtYXQsIGNvbnN0
IEludFJlY3QmIHNyY1JlY3QpCisgICAgICAgIDogbV9zcmNSZWN0KHNyY1JlY3QpCisgICAgICAg
ICwgbV9vdXRwdXRGb3JtYXQoV1RGTW92ZShvdXRwdXRGb3JtYXQpKQorICAgIHsKKyAgICB9CisK
KyAgICBjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0KCkgY29uc3QgeyByZXR1
cm4gbV9vdXRwdXRGb3JtYXQ7IH0KICAgICBJbnRSZWN0IHNyY1JlY3QoKSBjb25zdCB7IHJldHVy
biBtX3NyY1JlY3Q7IH0KIAorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0
aW9uYWw8R2V0UGl4ZWxCdWZmZXI+IGRlY29kZShEZWNvZGVyJik7CisKIHByaXZhdGU6CiAgICAg
SW50UmVjdCBtX3NyY1JlY3Q7CiAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgbV9vdXRwdXRGb3JtYXQ7
CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBHZXRQaXhlbEJ1ZmZlcjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3NyY1JlY3Q7
CisgICAgZW5jb2RlciA8PCBtX291dHB1dEZvcm1hdDsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4KK09wdGlvbmFsPEdldFBpeGVsQnVmZmVyPiBHZXRQaXhlbEJ1ZmZlcjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8SW50UmVjdD4gc3JjUmVjdDsKKyAgICBk
ZWNvZGVyID4+IHNyY1JlY3Q7CisgICAgaWYgKCFzcmNSZWN0KQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXJGb3JtYXQ+IG91dHB1dEZvcm1h
dDsKKyAgICBkZWNvZGVyID4+IG91dHB1dEZvcm1hdDsKKyAgICBpZiAoIW91dHB1dEZvcm1hdCkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiB7eyBXVEZNb3ZlKCpv
dXRwdXRGb3JtYXQpLCAqc3JjUmVjdCB9fTsKK30KKwogY2xhc3MgUHV0UGl4ZWxCdWZmZXIgewog
cHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUgPSBJdGVtVHlw
ZTo6UHV0UGl4ZWxCdWZmZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1Miw3ICs0NTIsNyBAQCB2b2lkIFJlY29yZGVyOjpjbGlwVG9JbWFnZUJ1ZmZlcihJ
bWFnZUJ1CiAgICAgYXBwZW5kPENsaXBUb0ltYWdlQnVmZmVyPihpbWFnZUJ1ZmZlci5yZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgZGVzdFJlY3QpOwogfQogCi12b2lkIFJlY29yZGVyOjpj
bGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGlu
YXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0
Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKQordm9pZCBSZWNvcmRlcjo6Y2xpcFRvRHJhd2luZ0NvbW1h
bmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgY29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBkcmF3
aW5nRnVuY3Rpb24pCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0IG5lc3RlZENvbnRleHQoWyZdKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICBhdXRvIGluaXRpYWxDbGlwID0gRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgZGVzdGluYXRpb24uc2l6ZSgpKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpIG92ZXJyaWRlOwogICAgIEludFJlY3Qg
Y2xpcEJvdW5kcygpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIGNs
aXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpIG92ZXJy
aWRlOworICAgIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZ1bmN0aW9uPHZvaWQoR3Jh
cGhpY3NDb250ZXh0Jik+JiYpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShWSURFTykKICAgICB2b2lk
IHBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24pIG92ZXJyaWRlOwogICAgIGJvb2wgY2FuUGFpbnRGcmFtZUZvck1lZGlhKGNvbnN0IE1l
ZGlhUGxheWVyJikgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFw
LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcg
KzY5LDcgQEAgYm9vbCBGRURpc3BsYWNlbWVudE1hcDo6c2V0U2NhbGUoZmxvYXQgcwogICAgIHJl
dHVybiB0cnVlOwogfQogCi12b2lkIEZFRGlzcGxhY2VtZW50TWFwOjpzZXRSZXN1bHRDb2xvclNw
YWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSkKK3ZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OnNldFJl
c3VsdENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJikKIHsKICAgICAvLyBT
cGVjOiBUaGUgJ2NvbG9yLWludGVycG9sYXRpb24tZmlsdGVycycgcHJvcGVydHkgb25seSBhcHBs
aWVzIHRvIHRoZSAnaW4yJyBzb3VyY2UgaW1hZ2UKICAgICAvLyBhbmQgZG9lcyBub3QgYXBwbHkg
dG8gdGhlICdpbicgc291cmNlIGltYWdlLiBUaGUgJ2luJyBzb3VyY2UgaW1hZ2UgbXVzdCByZW1h
aW4gaW4gaXRzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFRGlzcGxhY2VtZW50TWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5oCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2Vt
ZW50TWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIGZs
b2F0IHNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9zY2FsZTsgfQogICAgIGJvb2wgc2V0U2NhbGUo
ZmxvYXQpOwogCi0gICAgdm9pZCBzZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JT
cGFjZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRSZXN1bHRDb2xvclNwYWNlKGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgdHJhbnNmb3JtUmVzdWx0Q29s
b3JTcGFjZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBpbnQpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUZsb29kLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0MCw4IEBA
IHB1YmxpYzoKICNpZiAhVVNFKENHKQogICAgIC8vIGZlRmxvb2QgZG9lcyBub3QgcGVyZm9ybSBj
b2xvciBpbnRlcnBvbGF0aW9uIG9mIGFueSBraW5kLCBzbyB0aGUgcmVzdWx0IGlzIGFsd2F5cyBp
biB0aGUgY3VycmVudAogICAgIC8vIGNvbG9yIHNwYWNlIHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVl
IG9mIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycy4KLSAgICB2b2lkIHNldE9wZXJhdGluZ0Nv
bG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlKSBvdmVycmlkZSB7IEZpbHRlckVmZmVjdDo6
c2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOyB9Ci0gICAg
dm9pZCBzZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSkgb3ZlcnJpZGUg
eyBGaWx0ZXJFZmZlY3Q6OnNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKTsgfQorICAgIHZvaWQgc2V0T3BlcmF0aW5nQ29sb3JTcGFjZShjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmKSBvdmVycmlkZSB7IEZpbHRlckVmZmVjdDo6c2V0UmVzdWx0Q29sb3JT
cGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7IH0KKyAgICB2b2lkIHNldFJlc3Vs
dENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJikgb3ZlcnJpZGUgeyBGaWx0
ZXJFZmZlY3Q6OnNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCkpOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCB2b2lkIEZFVGlsZTo6cGxhdGZvcm1BcHBs
eVNvZnR3YXJlKCkKICAgICAgICAgdGlsZVJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclJlc29sdXRp
b24oKS53aWR0aCgpLCBmaWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpLmhlaWdodCgpKTsKICAgICB9
CiAKLSAgICBhdXRvIHRpbGVJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdl
QnVmZmVyKHRpbGVSZWN0LCB0aWxlUmVjdCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBm
aWx0ZXIoKS5yZW5kZXJpbmdNb2RlKCkpOworICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVy
aW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIodGlsZVJlY3QsIHRpbGVSZWN0LCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgZmlsdGVyKCkucmVuZGVyaW5nTW9kZSgpKTsKICAgICBp
ZiAoIXRpbGVJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3Bw
CShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzOSw3ICs0MzksNyBA
QCBzdGF0aWMgdm9pZCBjb3B5VW5wcmVtdWx0aXBseWluZ0FscGhhKGNvCiAjZW5kaWYKIH0KIAot
T3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVsQnVmZmVyVG9D
b2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSB0YXJnZXRDb2xvclNwYWNlLCBQaXhlbEJ1
ZmZlciYgcGl4ZWxCdWZmZXIpCitPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gRmlsdGVyRWZmZWN0Ojpj
b252ZXJ0UGl4ZWxCdWZmZXJUb0NvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiB0YXJnZXRDb2xvclNwYWNlLCBQaXhlbEJ1ZmZlciYgcGl4ZWxCdWZmZXIpCiB7CiAgICAgLy8g
RklYTUU6IFVzaW5nIGFuIEltYWdlQnVmZmVyIHRvIHBlcmZvcm0gdGhlIGNvbG9yIHNwYWNlIGNv
bnZlcnNpb24gaXMgdW5uZWNlc3NhcnkuIFdlIGNhbiBkbyBpdCBkaXJlY3RseS4KIApAQCAtNDU0
LDcgKzQ1NCw3IEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBGaWx0ZXJFZmZlY3Q6OmNvbnYKICAg
ICByZXR1cm4gY29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKHRhcmdldENvbG9yU3BhY2Us
ICpidWZmZXIsIGRlc3RpbmF0aW9uUmVjdCwgcGl4ZWxCdWZmZXIuZm9ybWF0KCkuYWxwaGFGb3Jt
YXQpOwogfQogCi1PcHRpb25hbDxQaXhlbEJ1ZmZlcj4gRmlsdGVyRWZmZWN0Ojpjb252ZXJ0SW1h
Z2VCdWZmZXJUb0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIHRhcmdldENvbG9yU3Bh
Y2UsIEltYWdlQnVmZmVyJiBpbnB1dEJ1ZmZlciwgY29uc3QgSW50UmVjdCYgcmVjdCwgQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRBbHBoYUZvcm1hdCkKK09wdGlvbmFsPFBpeGVsQnVmZmVy
PiBGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZShjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmIHRhcmdldENvbG9yU3BhY2UsIEltYWdlQnVmZmVyJiBpbnB1dEJ1
ZmZlciwgY29uc3QgSW50UmVjdCYgcmVjdCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRB
bHBoYUZvcm1hdCkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBjYW4gYmUgZG9uZSBtb3JlIGRpcmVj
dGx5IHVzaW5nIFBpeGVsQnVmZmVyQ29udmVyc2lvbi4KIApAQCAtNDcyLDcgKzQ3Miw3IEBAIE9w
dGlvbmFsPFBpeGVsQnVmZmVyPiBGaWx0ZXJFZmZlY3Q6OmNvbnYKICAgICByZXR1cm4gY29udmVy
dGVkQnVmZmVyLT5nZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIHJlY3QpOwogfQogCi12b2lkIEZpbHRl
ckVmZmVjdDo6Y29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0aW5hdGlvbihVaW50OENsYW1w
ZWRBcnJheSYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBB
bHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgZGVzdFJl
Y3QpCit2b2lkIEZpbHRlckVmZmVjdDo6Y29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0aW5h
dGlvbihVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgY29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQs
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewogICAgIC8vIENvbnZlcnRzIHRoZSBkYXRhIHN0
b3JlZCBpbiBtX2ltYWdlQnVmZmVyUmVzdWx0LCBhbmQgc2F2ZSB0byBkZXN0aW5hdGlvbgogICAg
IGF1dG8gY29udmVydGVkUGl4ZWxCdWZmZXIgPSBjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3Bh
Y2UoY29sb3JTcGFjZSwgKm1faW1hZ2VCdWZmZXJSZXN1bHQsIHsgSW50UG9pbnQoKSwgbV9hYnNv
bHV0ZVBhaW50UmVjdC5zaXplKCkgfSwgb3V0cHV0Rm9ybWF0KTsKQEAgLTQ4MSw3ICs0ODEsNyBA
QCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weUNvbnZlcnRlZEltYWdlQnVmCiAgICAgY29weUltYWdl
Qnl0ZXMoY29udmVydGVkUGl4ZWxCdWZmZXItPmRhdGEoKSwgZGVzdGluYXRpb24sIGRlc3RSZWN0
KTsKIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRQaXhlbEJ1ZmZlclRvRGVz
dGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBQaXhlbEJ1ZmZlciYgcGl4
ZWxCdWZmZXIsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0
JiBkZXN0UmVjdCkKK3ZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5Q29udmVydGVkUGl4ZWxCdWZmZXJU
b0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgUGl4ZWxCdWZmZXIm
IHBpeGVsQnVmZmVyLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KQogewogICAgIC8vIENvbnZlcnRzIHRoZSBkYXRhIHN0b3Jl
ZCBpbiBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0L21fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0
LAogICAgIC8vIHdoaWNoZXZlciBpc24ndCBudWxsLCBhbmQgc2F2ZSB0byBkZXN0aW5hdGlvbgpA
QCAtNjM2LDcgKzYzNiw3IEBAIGJvb2wgRmlsdGVyRWZmZWN0OjpyZXF1aXJlc1BpeGVsQnVmZmVy
Q28KICNlbmRpZgogfQogCi12b2lkIEZpbHRlckVmZmVjdDo6dHJhbnNmb3JtUmVzdWx0Q29sb3JT
cGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UgZGVzdGluYXRpb25Db2xvclNwYWNlKQordm9pZCBG
aWx0ZXJFZmZlY3Q6OnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiBkZXN0aW5hdGlvbkNvbG9yU3BhY2UpCiB7CiAjaWYgVVNFKENHKQogICAgIC8v
IENHIGhhbmRsZXMgY29sb3Igc3BhY2UgYWRqdXN0bWVudHMgaW50ZXJuYWxseS4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJFZmZlY3QuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyAr
MjMsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBbHBoYVByZW11bHRpcGxpY2F0aW9u
LmgiCi0jaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JT
cGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNp
bmNsdWRlICJJbnRSZWN0RXh0ZW50LmgiCkBAIC0xNjUsMTMgKzE2NSwxMyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBjbGlwc1RvQm91bmRzKCkgY29uc3QgeyByZXR1cm4gbV9jbGlwc1RvQm91bmRzOyB9
CiAgICAgdm9pZCBzZXRDbGlwc1RvQm91bmRzKGJvb2wgdmFsdWUpIHsgbV9jbGlwc1RvQm91bmRz
ID0gdmFsdWU7IH0KIAotICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBvcGVyYXRpbmdDb2xvclNw
YWNlKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYXRpbmdDb2xvclNwYWNlOyB9Ci0gICAgdmlydHVh
bCB2b2lkIHNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9y
U3BhY2UpIHsgbV9vcGVyYXRpbmdDb2xvclNwYWNlID0gY29sb3JTcGFjZTsgfQotICAgIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSByZXN1bHRDb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXN1
bHRDb2xvclNwYWNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFJlc3VsdENvbG9yU3BhY2UoRGVz
dGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpIHsgbV9yZXN1bHRDb2xvclNwYWNlID0gY29s
b3JTcGFjZTsgfQorICAgIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgb3BlcmF0aW5nQ29s
b3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW5nQ29sb3JTcGFjZTsgfQorICAgIHZp
cnR1YWwgdm9pZCBzZXRPcGVyYXRpbmdDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgY29sb3JTcGFjZSkgeyBtX29wZXJhdGluZ0NvbG9yU3BhY2UgPSBjb2xvclNwYWNlOyB9
CisgICAgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiByZXN1bHRDb2xvclNwYWNlKCkgY29u
c3QgeyByZXR1cm4gbV9yZXN1bHRDb2xvclNwYWNlOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFJl
c3VsdENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKSB7
IG1fcmVzdWx0Q29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB0
cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKEZpbHRlckVmZmVjdCogaW4sIGNvbnN0IGludCkgeyBp
bi0+dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShtX29wZXJhdGluZ0NvbG9yU3BhY2UpOyB9Ci0g
ICAgdm9pZCB0cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSk7
CisgICAgdm9pZCB0cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYpOwogICAgIAogICAgIHN0YXRpYyBWZWN0b3I8ZmxvYXQ+IG5vcm1hbGl6ZWRGbG9h
dHMoY29uc3QgVmVjdG9yPGZsb2F0PiYgdmFsdWVzKQogICAgIHsKQEAgLTIwMywxMSArMjAzLDEx
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpID0g
MDsKIAogICAgIHZvaWQgY29weUltYWdlQnl0ZXMoY29uc3QgVWludDhDbGFtcGVkQXJyYXkmIHNv
dXJjZSwgVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JikgY29u
c3Q7Ci0gICAgdm9pZCBjb3B5Q29udmVydGVkSW1hZ2VCdWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4
Q2xhbXBlZEFycmF5JiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBBbHBoYVByZW11bHRpcGxpY2F0
aW9uLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdm9pZCBjb3B5Q29udmVydGVkUGl4ZWxCdWZmZXJU
b0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiwgUGl4ZWxCdWZmZXImLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2b2lkIGNvcHlDb252ZXJ0ZWRJbWFn
ZUJ1ZmZlclRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmLCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uLCBjb25zdCBJbnRSZWN0Jik7Cisg
ICAgdm9pZCBjb3B5Q29udmVydGVkUGl4ZWxCdWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBl
ZEFycmF5JiwgUGl4ZWxCdWZmZXImLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25z
dCBJbnRSZWN0Jik7CiAgICAgYm9vbCByZXF1aXJlc1BpeGVsQnVmZmVyQ29sb3JTcGFjZUNvbnZl
cnNpb24oT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPik7Ci0gICAgT3B0aW9uYWw8UGl4
ZWxCdWZmZXI+IGNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9y
U3BhY2UsIEltYWdlQnVmZmVyJiwgY29uc3QgSW50UmVjdCYsIEFscGhhUHJlbXVsdGlwbGljYXRp
b24pOwotICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBjb252ZXJ0UGl4ZWxCdWZmZXJUb0NvbG9y
U3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlLCBQaXhlbEJ1ZmZlciYpOworICAgIE9wdGlvbmFs
PFBpeGVsQnVmZmVyPiBjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UoY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiwgSW1hZ2VCdWZmZXImLCBjb25zdCBJbnRSZWN0JiwgQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbik7CisgICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGNvbnZlcnRQaXhlbEJ1
ZmZlclRvQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEJ1ZmZl
ciYpOwogICAgIAogCiAgICAgRmlsdGVyJiBtX2ZpbHRlcjsKQEAgLTI0NCwxMyArMjQ0LDExIEBA
IHByaXZhdGU6CiAgICAgYm9vbCBtX2NsaXBzVG9Cb3VuZHMgeyB0cnVlIH07CiAKICNpZiBFTkFC
TEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgc3RhdGljIGNvbnN0
ZXhwciBhdXRvIGRlZmF1bHRPcGVyYXRpbmdDb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNw
YWNlOjpMaW5lYXJTUkdCOworICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBtX29wZXJhdGluZ0Nv
bG9yU3BhY2UgeyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKSB9OwogI2Vsc2UK
LSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZGVmYXVsdE9wZXJhdGluZ0NvbG9yU3BhY2UgPSBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I7CisgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1f
b3BlcmF0aW5nQ29sb3JTcGFjZSB7IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAj
ZW5kaWYKLQotICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBtX29wZXJhdGluZ0NvbG9yU3BhY2Ug
eyBkZWZhdWx0T3BlcmF0aW5nQ29sb3JTcGFjZSB9OwotICAgIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSBtX3Jlc3VsdENvbG9yU3BhY2UgeyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAg
ICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgbV9yZXN1bHRDb2xvclNwYWNlIHsgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCkgfTsKICAgICAKICAgICBjb25zdCBUeXBlIG1fZmlsdGVyRWZmZWN0
Q2xhc3NUeXBlOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvU291cmNlR3JhcGhpYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oCShyZXZpc2lvbiAyNzc5MTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMu
aAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBwcml2YXRlOgogICAgIFNvdXJjZUdy
YXBoaWMoRmlsdGVyJiBmaWx0ZXIpCiAgICAgICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlciwgVHlw
ZTo6U291cmNlR3JhcGhpYykKICAgICB7Ci0gICAgICAgIHNldE9wZXJhdGluZ0NvbG9yU3BhY2Uo
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKKyAgICAgICAgc2V0T3BlcmF0aW5nQ29sb3JT
cGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgfQogCiAgICAgY29uc3Qg
Y2hhciogZmlsdGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJTb3VyY2VHcmFwaGljIjsg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9O
aWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlci5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDc2LDcgKzEwNzYsNyBAQCB2b2lkIENhaXJvT3BlcmF0
aW9uUmVjb3JkZXI6OmFwcGVuZChzdGQ6CiAgICAgbV9jb21tYW5kTGlzdC5hcHBlbmQoV1RGTW92
ZShjb21tYW5kKSk7CiB9CiAKLXZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xpcFRvRHJh
d2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgRnVu
Y3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikKK3ZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlcjo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpCiB7
CiAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVj
b3JkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8v
Tmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyAr
OTcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgV2ViQ29yZTo6UGF0aCYs
IFdlYkNvcmU6OldpbmRSdWxlKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IGNsaXBC
b3VuZHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKFdlYkNvcmU6Oklt
YWdlQnVmZmVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsaXBUb0RyYXdp
bmdDb21tYW5kcyhjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBX
ZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGdW5jdGlvbjx2b2lkKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgdm9p
ZCBwYWludEZyYW1lRm9yTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXImLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSBvdmVycmlkZTsKICAgICBib29sIGNhblBhaW50RnJh
bWVGb3JNZWRpYShjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXllciYpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTExheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTExheWVy
LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDR0xMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTgxLDcgKzgxLDcgQEAgdm9pZCBHQ0dMTGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQoKQogICAg
IEludFNpemUgdGV4dHVyZVNpemUobV9jb250ZXh0Lm1fY3VycmVudFdpZHRoLCBtX2NvbnRleHQu
bV9jdXJyZW50SGVpZ2h0KTsKICAgICBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzID0gbV9j
b250ZXh0LmNvbnRleHRBdHRyaWJ1dGVzKCkuYWxwaGEgPyBUZXh0dXJlTWFwcGVyR0w6OlNob3Vs
ZEJsZW5kIDogMDsKICNpZiBVU0UoQU5HTEUpCi0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVm
ZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGV4dHVyZVNpemUsIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwg
UGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZXh0dXJlU2l6ZSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAkocmV2
aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcg
KzYzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKQogewotICAg
IFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJl
bXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IgfTsKKyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0
aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCkgfTsKICAgICBhdXRvIHBpeGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRy
eUNyZWF0ZShmb3JtYXQsIGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkpOwogICAgIGlmICgh
cGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xF
Uy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xFUy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVhZG5QaXhlbAogCiBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKQogewotICAg
IFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJl
bXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IgfTsKKyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0
aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCkgfTsKICAgICBhdXRvIHBpeGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRy
eUNyZWF0ZShmb3JtYXQsIGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkpOwogICAgIGlmICgh
cGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRl
eHR1cmUuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcg
KzM4LDcgQEAgdm9pZCBCaXRtYXBUZXh0dXJlOjp1cGRhdGVDb250ZW50cyhHcmFwaAogewogICAg
IC8vIE1ha2luZyBhbiB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZCBidWZmZXIgaGVyZSBp
cyBPSyBiZWNhdXNlIHRoaXMgY29kZQogICAgIC8vIGlzbid0IHVzZWQgYnkgYW55IHBsYXRmb3Jt
cyB0aGF0IHJlc3BlY3QgdGhlIGFjY2VsZXJhdGVkIGJpdC4KLSAgICBhdXRvIGltYWdlQnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0YXJnZXRSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1h
dDo6QkdSQTgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRh
cmdldFJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWlt
YWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcAkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIx
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYg
TWljaGFlbCBFbW1lbCBtaWtlLmVtbWVsQGdtYWlsLmNvbQogICogQ29weXJpZ2h0IChDKSAyMDA4
IENocmlzdGlhbiBEeXdhbiA8Y2hyaXN0aWFuQGltZW5kaW8uY29tPgogICogQ29weXJpZ2h0IChD
KSAyMDA4IENvbGxhYm9yYSBMdGQuCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKIAorI2luY2x1ZGUgIkRlc3RpbmF0aW9u
Q29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZyYW1lVmll
dy5oIgogI2luY2x1ZGUgIkd0a1V0aWxpdGllcy5oIgpAQCAtODUsNiArODYsMTEgQEAgYm9vbCBz
Y3JlZW5Jc01vbm9jaHJvbWUoV2lkZ2V0KiB3aWRnZXQpCiAgICAgcmV0dXJuIHNjcmVlbkRlcHRo
KHdpZGdldCkgPCAyOwogfQogCitEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc2NyZWVuQ29sb3JTcGFj
ZShXaWRnZXQqKQoreworICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsK
K30KKwogYm9vbCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycygpCiB7CiAgICAgcmV0dXJuIGZhbHNl
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU2NyZWVuSU9TLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNjcmVl
bklPUy5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1BsYXRmb3JtU2NyZWVuSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAxNCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODgsOSArODgsOSBA
QCBib29sIHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZShXaWRnCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1DR0NvbG9yU3BhY2VSZWYgc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqIHdpZGdl
dCkKK0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCogd2lkZ2V0
KQogewotICAgIHJldHVybiBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3Iod2lkZ2V0KSA/IGV4
dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKSA6IHNSR0JDb2xvclNwYWNlUmVmKCk7CisgICAgcmV0
dXJuIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcih3aWRnZXQpID8gRGVzdGluYXRpb25Db2xv
clNwYWNlIHsgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpIH0gOiBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKTsKIH0KIAogLy8gVGhlc2UgZnVuY3Rpb25zIHNjYWxlIGJldHdlZW4gc2Ny
ZWVuIGFuZCBwYWdlIGNvb3JkaW5hdGVzIGJlY2F1c2UgSmF2YVNjcmlwdC9ET00gb3BlcmF0aW9u
cwpAQCAtMTkzLDE2ICsxOTMsMTQgQEAgU2NyZWVuUHJvcGVydGllcyBjb2xsZWN0U2NyZWVuUHJv
cGVydGllcwogICAgICAgICBGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxlUmVjdCA9IHNjcmVlbi5i
b3VuZHM7CiAgICAgICAgIHNjcmVlbkF2YWlsYWJsZVJlY3Quc2V0WShOU01heFkoc2NyZWVuLmJv
dW5kcykgLSAoc2NyZWVuQXZhaWxhYmxlUmVjdC55KCkgKyBzY3JlZW5BdmFpbGFibGVSZWN0Lmhl
aWdodCgpKSk7IC8vIGZsaXAKICAgICAgICAgRmxvYXRSZWN0IHNjcmVlblJlY3QgPSBzY3JlZW4u
X3JlZmVyZW5jZUJvdW5kczsKLSAgICAgICAgCi0gICAgICAgIFJldGFpblB0cjxDR0NvbG9yU3Bh
Y2VSZWY+IGNvbG9yU3BhY2UgPSBzY3JlZW5Db2xvclNwYWNlKG51bGxwdHIpOwotICAgICAgICAK
KyAgICAgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UgeyBzY3JlZW5Db2xvclNw
YWNlKG51bGxwdHIpIH07CiAgICAgICAgIGludCBzY3JlZW5EZXB0aCA9IFdlYkNvcmU6OnNjcmVl
bkRlcHRoKG51bGxwdHIpOwogICAgICAgICBpbnQgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQgPSBX
ZWJDb3JlOjpzY3JlZW5EZXB0aFBlckNvbXBvbmVudChudWxscHRyKTsKICAgICAgICAgYm9vbCBz
Y3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IgPSBXZWJDb3JlOjpzY3JlZW5TdXBwb3J0c0V4dGVu
ZGVkQ29sb3IobnVsbHB0cik7CiAgICAgICAgIGJvb2wgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMg
PSBXZWJDb3JlOjpzY3JlZW5IYXNJbnZlcnRlZENvbG9ycygpOwogICAgICAgICBmbG9hdCBzY2Fs
ZUZhY3RvciA9IFdlYkNvcmU6OnNjcmVlblBQSUZhY3RvcigpOwogCi0gICAgICAgIHNjcmVlblBy
b3BlcnRpZXMuc2NyZWVuRGF0YU1hcC5zZXQoKytkaXNwbGF5SUQsIFNjcmVlbkRhdGEgeyBzY3Jl
ZW5BdmFpbGFibGVSZWN0LCBzY3JlZW5SZWN0LCBjb2xvclNwYWNlLCBzY3JlZW5EZXB0aCwgc2Ny
ZWVuRGVwdGhQZXJDb21wb25lbnQsIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciwgc2NyZWVu
SGFzSW52ZXJ0ZWRDb2xvcnMsIGZhbHNlLCBzY2FsZUZhY3RvciB9KTsKKyAgICAgICAgc2NyZWVu
UHJvcGVydGllcy5zY3JlZW5EYXRhTWFwLnNldCgrK2Rpc3BsYXlJRCwgU2NyZWVuRGF0YSB7IHNj
cmVlbkF2YWlsYWJsZVJlY3QsIHNjcmVlblJlY3QsIFdURk1vdmUoY29sb3JTcGFjZSksIHNjcmVl
bkRlcHRoLCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENv
bG9yLCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycywgZmFsc2UsIHNjYWxlRmFjdG9yIH0pOwogICAg
ICAgICAKICAgICAgICAgaWYgKHNjcmVlbiA9PSBbUEFMOjpnZXRVSVNjcmVlbkNsYXNzKCkgbWFp
blNjcmVlbl0pCiAgICAgICAgICAgICBzY3JlZW5Qcm9wZXJ0aWVzLnByaW1hcnlEaXNwbGF5SUQg
PSBkaXNwbGF5SUQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1T
Y3JlZW5NYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bs
YXRmb3JtU2NyZWVuTWFjLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMCw5
ICsxMzAsNyBAQCBTY3JlZW5Qcm9wZXJ0aWVzIGNvbGxlY3RTY3JlZW5Qcm9wZXJ0aWVzCiAgICAg
ICAgIEZsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0ID0gc2NyZWVuLnZpc2libGVGcmFtZTsK
ICAgICAgICAgc2NyZWVuQXZhaWxhYmxlUmVjdC5zZXRZKE5TTWF4WShzY3JlZW4uZnJhbWUpIC0g
KHNjcmVlbkF2YWlsYWJsZVJlY3QueSgpICsgc2NyZWVuQXZhaWxhYmxlUmVjdC5oZWlnaHQoKSkp
OyAvLyBmbGlwCiAgICAgICAgIEZsb2F0UmVjdCBzY3JlZW5SZWN0ID0gc2NyZWVuLmZyYW1lOwot
Ci0gICAgICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2UgPSBzY3JlZW4u
Y29sb3JTcGFjZS5DR0NvbG9yU3BhY2U7Ci0KKyAgICAgICAgRGVzdGluYXRpb25Db2xvclNwYWNl
IGNvbG9yU3BhY2UgeyBzY3JlZW4uY29sb3JTcGFjZS5DR0NvbG9yU3BhY2UgfTsKICAgICAgICAg
aW50IHNjcmVlbkRlcHRoID0gTlNCaXRzUGVyUGl4ZWxGcm9tRGVwdGgoc2NyZWVuLmRlcHRoKTsK
ICAgICAgICAgaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50ID0gTlNCaXRzUGVyU2FtcGxlRnJv
bURlcHRoKHNjcmVlbi5kZXB0aCk7CiAgICAgICAgIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRl
ZENvbG9yID0gW3NjcmVlbiBjYW5SZXByZXNlbnREaXNwbGF5R2FtdXQ6TlNEaXNwbGF5R2FtdXRQ
M107CkBAIC0xNjMsNyArMTYxLDcgQEAgU2NyZWVuUHJvcGVydGllcyBjb2xsZWN0U2NyZWVuUHJv
cGVydGllcwogICAgICAgICBpZiAoZGlzcGxheU1hc2spCiAgICAgICAgICAgICBncHVJRCA9IGdw
dUlERm9yRGlzcGxheU1hc2soZGlzcGxheU1hc2spOwogCi0gICAgICAgIHNjcmVlblByb3BlcnRp
ZXMuc2NyZWVuRGF0YU1hcC5zZXQoZGlzcGxheUlELCBTY3JlZW5EYXRhIHsgc2NyZWVuQXZhaWxh
YmxlUmVjdCwgc2NyZWVuUmVjdCwgY29sb3JTcGFjZSwgc2NyZWVuRGVwdGgsIHNjcmVlbkRlcHRo
UGVyQ29tcG9uZW50LCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IsIHNjcmVlbkhhc0ludmVy
dGVkQ29sb3JzLCBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UsIHNjcmVlbklzTW9ub2No
cm9tZSwgZGlzcGxheU1hc2ssIGdwdUlELCBkeW5hbWljUmFuZ2VNb2RlLCBzY2FsZUZhY3RvciB9
KTsKKyAgICAgICAgc2NyZWVuUHJvcGVydGllcy5zY3JlZW5EYXRhTWFwLnNldChkaXNwbGF5SUQs
IFNjcmVlbkRhdGEgeyBzY3JlZW5BdmFpbGFibGVSZWN0LCBzY3JlZW5SZWN0LCBXVEZNb3ZlKGNv
bG9yU3BhY2UpLCBzY3JlZW5EZXB0aCwgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQsIHNjcmVlblN1
cHBvcnRzRXh0ZW5kZWRDb2xvciwgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMsIHNjcmVlblN1cHBv
cnRzSGlnaER5bmFtaWNSYW5nZSwgc2NyZWVuSXNNb25vY2hyb21lLCBkaXNwbGF5TWFzaywgZ3B1
SUQsIGR5bmFtaWNSYW5nZU1vZGUsIHNjYWxlRmFjdG9yIH0pOwogCiAgICAgICAgIGlmICghc2Ny
ZWVuUHJvcGVydGllcy5wcmltYXJ5RGlzcGxheUlEKQogICAgICAgICAgICAgc2NyZWVuUHJvcGVy
dGllcy5wcmltYXJ5RGlzcGxheUlEID0gZGlzcGxheUlEOwpAQCAtMzQwLDEzICszMzgsMTMgQEAg
TlNTY3JlZW4gKnNjcmVlbihQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbAogICAgIHJldHVybiBmaXJz
dFNjcmVlbigpOwogfQogCi1DR0NvbG9yU3BhY2VSZWYgc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQq
IHdpZGdldCkKK0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCog
d2lkZ2V0KQogewogICAgIGlmIChhdXRvIGRhdGEgPSBzY3JlZW5Qcm9wZXJ0aWVzKHdpZGdldCkp
Ci0gICAgICAgIHJldHVybiBkYXRhLT5jb2xvclNwYWNlLmdldCgpOworICAgICAgICByZXR1cm4g
ZGF0YS0+Y29sb3JTcGFjZTsKIAogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nl
c3NQcml2aWxlZ2U6OkNhbkNvbW11bmljYXRlV2l0aFdpbmRvd1NlcnZlcikpOwotICAgIHJldHVy
biBzY3JlZW4od2lkZ2V0KS5jb2xvclNwYWNlLkNHQ29sb3JTcGFjZTsKKyAgICByZXR1cm4gRGVz
dGluYXRpb25Db2xvclNwYWNlIHsgc2NyZWVuKHdpZGdldCkuY29sb3JTcGFjZS5DR0NvbG9yU3Bh
Y2UgfTsKIH0KIAogYm9vbCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IoV2lkZ2V0KiB3aWRn
ZXQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTcyNiw3ICs3MjYsNyBAQCBib29sIFRoZW1lTWFjOjpkcmF3Q2VsbE9y
Rm9jdXNSaW5nV2l0aFZpCiAKICAgICBpZiAodXNlSW1hZ2VCdWZmZXIpIHsKICAgICAgICAgTlNS
ZWN0IGltYWdlQnVmZmVyRHJhd1JlY3QgPSBOU1JlY3QoRmxvYXRSZWN0KGJ1dHRvbkZvY3VzUmVj
dE91dGxpbmVXaWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCByZWN0LndpZHRoKCks
IHJlY3QuaGVpZ2h0KCkpKTsKLSAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHJlY3Quc2l6ZSgpICsgMiAqIEZsb2F0U2l6ZShidXR0
b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCksIGRl
dmljZVNjYWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGNvbnRleHQpOwor
ICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVC
dWZmZXIocmVjdC5zaXplKCkgKyAyICogRmxvYXRTaXplKGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVX
aWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBjb250ZXh0KTsKICAgICAgICAgaWYgKCFpbWFn
ZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBuZWVkc1JlcGFpbnQ7CiAgICAgICAgIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291cmNl
R1N0cmVhbWVyLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIE1vY2tSZWFsdGltZVZp
ZGVvU291cmNlR1N0cmVhbWVyOjp1CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0
dXJuOwogCi0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5nZXRQaXhlbEJ1ZmZl
cih7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6
OkJHUkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfSwgeyB7IH0sIGltYWdlQnVmZmVy
LT5sb2dpY2FsU2l6ZSgpIH0pOworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+
Z2V0UGl4ZWxCdWZmZXIoeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQs
IFBpeGVsRm9ybWF0OjpCR1JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfSwgeyB7
IH0sIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpIH0pOwogICAgIGlmICghcGl4ZWxCdWZmZXIp
CiAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAJKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTQsNyArNDU0LDcgQEAgSW1hZ2VCdWZmZXIqIE1v
Y2tSZWFsdGltZVZpZGVvU291cmNlOjppbQogICAgIGlmIChtX2ltYWdlQnVmZmVyKQogICAgICAg
ICByZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsKIAotICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKGNhcHR1cmVTaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
KyAgICBtX2ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjYXB0dXJlU2l6ZSgpLCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIW1faW1hZ2VCdWZmZXIpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wbGF5
c3RhdGlvbi9QbGF0Zm9ybVNjcmVlblBsYXlTdGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9wbGF5c3RhdGlvbi9QbGF0Zm9ybVNjcmVlblBsYXlTdGF0aW9u
LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcGxheXN0
YXRpb24vUGxhdGZvcm1TY3JlZW5QbGF5U3RhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVl
bi5oIgogCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiRmxv
YXRSZWN0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKIApAQCAtNzEsNCArNzIsOSBA
QCBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcihXaWRnZXQqCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCitEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQq
KQoreworICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bs
YXRmb3JtU2NyZWVuV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vUGxhdGZvcm1TY3JlZW5XaW4uY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vUGxhdGZvcm1TY3JlZW5XaW4uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1TY3JlZW4uaCIKIAorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1
ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3
LmgiCkBAIC0xMDQsMTIgKzEwNSwxMCBAQCBGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxlUmVjdChX
aWRnZXQqIHdpCiAgICAgcmV0dXJuIG1vbml0b3JJbmZvLnJjV29yazsKIH0KIAotI2lmIFVTRShD
RykKLUNHQ29sb3JTcGFjZVJlZiBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCopCitEZXN0aW5hdGlv
bkNvbG9yU3BhY2Ugc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqKQogewotICAgIHJldHVybiBzUkdC
Q29sb3JTcGFjZVJlZigpOworICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KTsKIH0KLSNlbmRpZgogCiBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcihXaWRnZXQq
KQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3BlL1BsYXRmb3JtU2NyZWVuV1BF
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93cGUvUGxhdGZvcm1T
Y3JlZW5XUEUuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93cGUvUGxhdGZvcm1TY3JlZW5XUEUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKIAor
I2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5o
IgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiV2lkZ2V0LmgiCkBAIC04
MSw2ICs4MiwxMSBAQCBGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxlUmVjdChXaWRnZXQqIHdpCiAg
ICAgcmV0dXJuIHNjcmVlblJlY3Qod2lkZ2V0KTsKIH0KIAorRGVzdGluYXRpb25Db2xvclNwYWNl
IHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KikKK3sKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCk7Cit9CisKIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKFdp
ZGdldCopCiB7CiAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0veHIvUGxhdGZvcm1YUi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3hyL1BsYXRmb3JtWFIuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0veHIvUGxhdGZvcm1YUi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw2ICsxOCw3IEBACiAg
Ki8KICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAj
aW5jbHVkZSAiRmxvYXRQb2ludDNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCiAj
aW5jbHVkZSAiSW50UmVjdC5oIgpAQCAtMzIsOCArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9XZWFr
UHRyLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yU3Bh
Y2VDRy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSU9TdXJmYWNlLmg+CisjaW5jbHVkZSAiSU9TdXJm
YWNlLmgiCiAjaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KICNlbmRpZgogCkBAIC00NDYs
NyArNDQ2LDcgQEAgT3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YT4gRAogICAg
IFdURjo6TWFjaFNlbmRSaWdodCBzdXJmYWNlU2VuZFJpZ2h0OwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoc3VyZmFjZVNlbmRSaWdodCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0g
ICAgbGF5ZXJEYXRhLnN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5k
UmlnaHQoV1RGTW92ZShzdXJmYWNlU2VuZFJpZ2h0KSwgV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VS
ZWYoKSk7CisgICAgbGF5ZXJEYXRhLnN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0
ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShzdXJmYWNlU2VuZFJpZ2h0KSwgV2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogI2VuZGlmCiAgICAgcmV0dXJuIGxheWVyRGF0YTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCShyZXZpc2lvbiAy
Nzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTExLDkgKzExMSw5IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IENTU0ZpbHRl
cjo6YnVpbGRSZWYKICAgICAgICAgZWZmZWN0RWxlbWVudC5zZXRTdGFuZGFyZEF0dHJpYnV0ZXMo
ZWZmZWN0LmdldCgpKTsKICAgICAgICAgaWYgKGVmZmVjdEVsZW1lbnQucmVuZGVyZXIoKSkgewog
I2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICAgICAg
ICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShlZmZlY3RFbGVtZW50LnJlbmRlcmVy
KCktPnN0eWxlKCkuc3ZnU3R5bGUoKS5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzKCkgPT0gQ29s
b3JJbnRlcnBvbGF0aW9uOjpMaW5lYXJSR0IgPyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVh
clNSR0IgOiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOworICAgICAgICAgICAgZWZmZWN0
LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKGVmZmVjdEVsZW1lbnQucmVuZGVyZXIoKS0+c3R5bGUo
KS5zdmdTdHlsZSgpLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSA9PSBDb2xvckludGVycG9s
YXRpb246OkxpbmVhclJHQiA/IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigpIDog
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogI2Vsc2UKLSAgICAgICAgICAgIGVmZmVj
dC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOwor
ICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpKTsKICNlbmRpZgogICAgICAgICB9CiAgICAgICAgIGJ1aWxkZXItPmFk
ZChlZmZlY3RFbGVtZW50LnJlc3VsdCgpLCBlZmZlY3QpOwpAQCAtMjk2LDcgKzI5Niw3IEBAIGJv
b2wgQ1NTRmlsdGVyOjpidWlsZChSZW5kZXJFbGVtZW50JiByZW4KICAgICAgICAgICAgIC8vIFVu
bGlrZSBTVkcgRmlsdGVycyBhbmQgQ1NTRmlsdGVySW1hZ2VzLCBmaWx0ZXIgZnVuY3Rpb25zIG9u
IHRoZSBmaWx0ZXIKICAgICAgICAgICAgIC8vIHByb3BlcnR5IGFwcGxpZWQgaGVyZSBzaG91bGQg
bm90IGNsaXAgdG8gdGhlaXIgcHJpbWl0aXZlIHN1YnJlZ2lvbnMuCiAgICAgICAgICAgICBlZmZl
Y3QtPnNldENsaXBzVG9Cb3VuZHMoY29uc3VtZXIgPT0gRmlsdGVyQ29uc3VtZXI6OkZpbHRlckZ1
bmN0aW9uKTsKLSAgICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOworICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRp
bmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgaWYgKGZpbHRlck9wZXJhdGlvbi50eXBlKCkgIT0gRmlsdGVyT3BlcmF0
aW9uOjpSRUZFUkVOQ0UpIHsKICAgICAgICAgICAgICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygp
ID0geyBXVEZNb3ZlKHByZXZpb3VzRWZmZWN0KSB9OwpAQCAtMzQ0LDExICszNDQsMTEgQEAgdm9p
ZCBDU1NGaWx0ZXI6OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZQogICAgIEludFNpemUgbG9naWNh
bFNpemUgeyBtX3NvdXJjZURyYXdpbmdSZWdpb24uc2l6ZSgpIH07CiAgICAgaWYgKCFzb3VyY2VJ
bWFnZSgpIHx8IHNvdXJjZUltYWdlKCktPmxvZ2ljYWxTaXplKCkgIT0gbG9naWNhbFNpemUpIHsK
ICNpZiBVU0UoRElSRUNUMkQpCi0gICAgICAgIHNldFNvdXJjZUltYWdlKEltYWdlQnVmZmVyOjpj
cmVhdGUobG9naWNhbFNpemUsIHJlbmRlcmluZ01vZGUoKSwgJnRhcmdldENvbnRleHQsIGZpbHRl
clNjYWxlKCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4
KSk7CisgICAgICAgIHNldFNvdXJjZUltYWdlKEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNp
emUsIHJlbmRlcmluZ01vZGUoKSwgJnRhcmdldENvbnRleHQsIGZpbHRlclNjYWxlKCksIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpKTsKICNlbHNlCiAg
ICAgICAgIFVOVVNFRF9QQVJBTSh0YXJnZXRDb250ZXh0KTsKICAgICAgICAgUmVuZGVyaW5nTW9k
ZSBtb2RlID0gbV9maWx0ZXJSZW5kZXJlciA/IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIDog
cmVuZGVyaW5nTW9kZSgpOwotICAgICAgICBzZXRTb3VyY2VJbWFnZShJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKGxvZ2ljYWxTaXplLCBtb2RlLCBmaWx0ZXJTY2FsZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCkpOworICAgICAgICBzZXRTb3VyY2VJbWFnZShJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBtb2RlLCBmaWx0ZXJTY2FsZSgpLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CiAjZW5kaWYK
ICAgICB9CiAgICAgbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkID0gdHJ1ZTsKQEAgLTM4MiwxMiAr
MzgyLDEyIEBAIHZvaWQgQ1NTRmlsdGVyOjphcHBseSgpCiAgICAgaWYgKG1fZmlsdGVyUmVuZGVy
ZXIpIHsKICAgICAgICAgbV9maWx0ZXJSZW5kZXJlci0+YXBwbHlFZmZlY3RzKGVmZmVjdCk7CiAg
ICAgICAgIGlmIChtX2ZpbHRlclJlbmRlcmVyLT5oYXNSZXN1bHQoKSkgewotICAgICAgICAgICAg
ZWZmZWN0LnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKTsKKyAgICAgICAgICAgIGVmZmVjdC50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgIH0KICAgICBlZmZlY3QuYXBwbHkoKTsKLSAgICBlZmZlY3QudHJhbnNmb3JtUmVzdWx0
Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOworICAgIGVmZmVjdC50cmFu
c2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKIH0K
IAogTGF5b3V0UmVjdCBDU1NGaWx0ZXI6OmNvbXB1dGVTb3VyY2VJbWFnZVJlY3RGb3JEaXJ0eVJl
Y3QoY29uc3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZGly
dHlSZWN0KQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzYsNyAr
ODc2LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZQogICAgICAg
ICBtYXNrUmVjdC5pbnRlcnNlY3Qoc25hcHBlZEludFJlY3QocGFpbnRJbmZvLnJlY3QpKTsKIAog
ICAgICAgICAvLyBOb3cgY3JlYXRlIHRoZSBtYXNrLgotICAgICAgICBtYXNrSW1hZ2UgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihtYXNrUmVjdC5zaXplKCksIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQiwgY29udGV4dCk7CisgICAgICAgIG1hc2tJbWFnZSA9IEltYWdl
QnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNpemUoKSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCksIGNvbnRleHQpOwogICAgICAgICBpZiAoIW1hc2tJbWFnZSkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgcGFpbnRNYXNrRm9yVGV4dEZpbGxCb3gobWFz
a0ltYWdlLmdldCgpLCBtYXNrUmVjdCwgYm94LCBzY3JvbGxlZFBhaW50UmVjdCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkocmV2
aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNjcsNyArMzI2Nyw3IEBAIHN0YXRpYyBSZWZQ
dHI8UGF0dGVybj4gcGF0dGVybkZvckRlc2NyaXAKIHsKICAgICBjb25zdCBGbG9hdFNpemUgdGls
ZVNpemUgeyAzMiwgMTggfTsKIAotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcih0aWxlU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCLCBkZXN0Q29udGV4dCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGVDb21wYXRpYmxlQnVmZmVyKHRpbGVTaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgZGVzdENvbnRleHQpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJ
T1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
SU9TLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5ODMsMTEgKzE5ODMsMTEgQEAgdm9p
ZCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRTeXN0ZW1QcmV2aWV3QgogICAgIElPU3VyZmFjZVJlZiBz
dXJmYWNlOwogICAgIGlmICh1c2VTbWFsbEJhZGdlKSB7CiAgICAgICAgIGlmICghbV9zbWFsbEJh
ZGdlU3VyZmFjZSkKLSAgICAgICAgICAgIG1fc21hbGxCYWRnZVN1cmZhY2UgPSBJT1N1cmZhY2U6
OmNyZWF0ZSh7IHNtYWxsQmFkZ2VEaW1lbnNpb24sIHNtYWxsQmFkZ2VEaW1lbnNpb24gfSwgc1JH
QkNvbG9yU3BhY2VSZWYoKSk7CisgICAgICAgICAgICBtX3NtYWxsQmFkZ2VTdXJmYWNlID0gSU9T
dXJmYWNlOjpjcmVhdGUoeyBzbWFsbEJhZGdlRGltZW5zaW9uLCBzbWFsbEJhZGdlRGltZW5zaW9u
IH0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICAgICAgc3VyZmFjZSA9IG1f
c21hbGxCYWRnZVN1cmZhY2UtPnN1cmZhY2UoKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAo
IW1fbGFyZ2VCYWRnZVN1cmZhY2UpCi0gICAgICAgICAgICBtX2xhcmdlQmFkZ2VTdXJmYWNlID0g
SU9TdXJmYWNlOjpjcmVhdGUoeyBsYXJnZUJhZGdlRGltZW5zaW9uLCBsYXJnZUJhZGdlRGltZW5z
aW9uIH0sIHNSR0JDb2xvclNwYWNlUmVmKCkpOworICAgICAgICAgICAgbV9sYXJnZUJhZGdlU3Vy
ZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKHsgbGFyZ2VCYWRnZURpbWVuc2lvbiwgbGFyZ2VCYWRn
ZURpbWVuc2lvbiB9LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAgIHN1
cmZhY2UgPSBtX2xhcmdlQmFkZ2VTdXJmYWNlLT5zdXJmYWNlKCk7CiAgICAgfQogICAgIFttX2Np
Q29udGV4dC5nZXQoKSByZW5kZXI6dHJhbnNsYXRlZEltYWdlIHRvSU9TdXJmYWNlOnN1cmZhY2Ug
Ym91bmRzOmJhZGdlUmVjdCBjb2xvclNwYWNlOnNSR0JDb2xvclNwYWNlUmVmKCldOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzA5LDcgKzEzMDksNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWlu
dFByb2dyZXNzQmFyKGNvCiAgICAgY29uc3QgYXV0byYgcmVuZGVyUHJvZ3Jlc3MgPSBkb3duY2Fz
dDxSZW5kZXJQcm9ncmVzcz4ocmVuZGVyT2JqZWN0KTsKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZh
Y3RvciA9IHJlbmRlck9iamVjdC5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAg
Ym9vbCBpc0luZGV0ZXJtaW5hdGUgPSByZW5kZXJQcm9ncmVzcy5wb3NpdGlvbigpIDwgMDsKLSAg
ICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
aW5mbGF0ZWRSZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQiwgcGFpbnRJbmZvLmNvbnRleHQoKSk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGluZmxhdGVkUmVjdC5zaXplKCks
IGRldmljZVNjYWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgcGFpbnRJ
bmZvLmNvbnRleHQoKSk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCShy
ZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDcgKzE4MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxT
aGFwZT4gU2hhcGU6OmNyZWF0ZVJhc3QKICAgICBJbnRSZWN0IG1hcmdpblJlY3QgPSBzbmFwcGVk
SW50UmVjdChtYXJnaW5SKTsKICAgICBhdXRvIGludGVydmFscyA9IG1ha2VVbmlxdWU8UmFzdGVy
U2hhcGVJbnRlcnZhbHM+KG1hcmdpblJlY3QuaGVpZ2h0KCksIC1tYXJnaW5SZWN0LnkoKSk7CiAg
ICAgLy8gRklYTUUgKDE0OTQyMCk6IFRoaXMgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRp
b25hbGx5IHVuYWNjZWxlcmF0ZWQuCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwg
MSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAg
IGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCks
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogCiAgICAgYXV0byBjcmVhdGVTaGFwZSA9IFsm
XSgpIHsKICAgICAgICAgYXV0byByYXN0ZXJTaGFwZSA9IG1ha2VVbmlxdWU8UmFzdGVyU2hhcGU+
KFdURk1vdmUoaW50ZXJ2YWxzKSwgbWFyZ2luUmVjdC5zaXplKCkpOwpAQCAtMTk3LDcgKzE5Nyw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVJhc3QKICAgICBpZiAoaW1h
Z2UpCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBJbnRSZWN0KElu
dFBvaW50KCksIGltYWdlUmVjdC5zaXplKCkpKTsKIAotICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZv
cm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3Jt
YXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICBQaXhlbEJ1ZmZl
ckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQs
IFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsKICAg
ICBhdXRvIHBpeGVsQnVmZmVyID0gaW1hZ2VCdWZmZXItPmdldFBpeGVsQnVmZmVyKGZvcm1hdCwg
eyBJbnRQb2ludCgpLCBpbWFnZVJlY3Quc2l6ZSgpIH0pOwogICAgIAogICAgIC8vIFdlIGNvdWxk
IGdldCB0byBhIHZhbHVlIHdoZXJlIFBpeGVsQnVmZmVyIGNvdWxkIGJlIG51bGxvcHQuIEEgY2Fz
ZSB3aGVyZSBJbWFnZVJlY3Quc2l6ZSgpIGlzIGh1Z2UsIFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlw
cGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlQ2xpcHBlci5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTQ2LDcgKzE0Niw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjph
cHBseUNsaXAKICAgICBBZmZpbmVUcmFuc2Zvcm0gYWJzb2x1dGVUcmFuc2Zvcm0gPSBTVkdSZW5k
ZXJpbmdDb250ZXh0OjpjYWxjdWxhdGVUcmFuc2Zvcm1hdGlvblRvT3V0ZXJtb3N0Q29vcmRpbmF0
ZVN5c3RlbShyZW5kZXJlcik7CiAgICAgaWYgKCFjbGlwcGVyRGF0YS5pc1ZhbGlkRm9yR2VvbWV0
cnkob2JqZWN0Qm91bmRpbmdCb3gsIGFic29sdXRlVHJhbnNmb3JtKSkgewogICAgICAgICAvLyBG
SVhNRSAoMTQ5NDY5KTogVGhpcyBpbWFnZSBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlv
bmFsbHkgdW5hY2NlbGVyYXRlZC4gTWFraW5nIGl0IG1hdGNoIHRoZSBjb250ZXh0IGJyZWFrcyBu
ZXN0ZWQgY2xpcHBpbmcsIHRob3VnaC4KLSAgICAgICAgYXV0byBtYXNrSW1hZ2UgPSBTVkdSZW5k
ZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihvYmplY3RCb3VuZGluZ0JveCwgYWJzb2x1
dGVUcmFuc2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCwgJmNvbnRleHQpOworICAgICAgICBhdXRvIG1hc2tJbWFnZSA9IFNWR1Jl
bmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKG9iamVjdEJvdW5kaW5nQm94LCBhYnNv
bHV0ZVRyYW5zZm9ybSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFJlbmRlcmluZ01v
ZGU6OlVuYWNjZWxlcmF0ZWQsICZjb250ZXh0KTsKICAgICAgICAgaWYgKCFtYXNrSW1hZ2UpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlRmlsdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDkgKzEwNCw5IEBAIHN0ZDo6dW5p
cXVlX3B0cjxTVkdGaWx0ZXJCdWlsZGVyPiBSZW5kZXIKICAgICAgICAgZWZmZWN0LT5zZXRFZmZl
Y3RCb3VuZGFyaWVzKFNWR0xlbmd0aENvbnRleHQ6OnJlc29sdmVSZWN0YW5nbGU8U1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPigmZWxlbWVudCwgZmlsdGVyRWxlbWVudCgpLnBy
aW1pdGl2ZVVuaXRzKCksIHRhcmdldEJvdW5kaW5nQm94KSk7CiAgICAgICAgIGlmIChlbGVtZW50
LnJlbmRlcmVyKCkpIHsKICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFS
X1NSR0IpCi0gICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoZWxlbWVu
dC5yZW5kZXJlcigpLT5zdHlsZSgpLnN2Z1N0eWxlKCkuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVy
cygpID09IENvbG9ySW50ZXJwb2xhdGlvbjo6TGluZWFyUkdCID8gRGVzdGluYXRpb25Db2xvclNw
YWNlOjpMaW5lYXJTUkdCIDogRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKKyAgICAgICAg
ICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShlbGVtZW50LnJlbmRlcmVyKCktPnN0
eWxlKCkuc3ZnU3R5bGUoKS5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzKCkgPT0gQ29sb3JJbnRl
cnBvbGF0aW9uOjpMaW5lYXJSR0IgPyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0Io
KSA6IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICNlbHNlCi0gICAgICAgICAgICBl
ZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KTsKKyAgICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAjZW5kaWYKICAgICAgICAgfQogICAgICAgICBidWlsZGVy
LT5hZGQoZWxlbWVudC5yZXN1bHQoKSwgV1RGTW92ZShlZmZlY3QpKTsKQEAgLTE5OCw5ICsxOTgs
OSBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291CiAKICAgICBhdXRv
IHJlbmRlcmluZ01vZGUgPSByZW5kZXJlci5zZXR0aW5ncygpLmFjY2VsZXJhdGVkRmlsdGVyc0Vu
YWJsZWQoKSA/IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIDogUmVuZGVyaW5nTW9kZTo6VW5h
Y2NlbGVyYXRlZDsKICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NS
R0IpCi0gICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJT
UkdCOworICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFy
U1JHQigpOwogI2Vsc2UKLSAgICBhdXRvIGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0I7CisgICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCk7CiAjZW5kaWYKICAgICBhdXRvIHNvdXJjZUdyYXBoaWMgPSBTVkdSZW5kZXJpbmdDb250
ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihmaWx0ZXJEYXRhLT5kcmF3aW5nUmVnaW9uLCBlZmZlY3Rp
dmVUcmFuc2Zvcm0sIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUsIGNvbnRleHQpOwogICAgIGlm
ICghc291cmNlR3JhcGhpYykgewpAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXI6OnBvc3RBcHBseVIKICAgICAgICAgICAgIGZpbHRlckRhdGEuc3RhdGUgPSBG
aWx0ZXJEYXRhOjpBcHBseWluZzsKICAgICAgICAgICAgIGxhc3RFZmZlY3QtPmFwcGx5KCk7CiAg
ICAgICAgICAgICBsYXN0RWZmZWN0LT5jb3JyZWN0RmlsdGVyUmVzdWx0SWZOZWVkZWQoKTsKLSAg
ICAgICAgICAgIGxhc3RFZmZlY3QtPnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKTsKKyAgICAgICAgICAgIGxhc3RFZmZlY3QtPnRyYW5zZm9ybVJl
c3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgICAgICB9
CiAgICAgICAgIGZpbHRlckRhdGEuc3RhdGUgPSBGaWx0ZXJEYXRhOjpCdWlsdDsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlR3JhZGllbnQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjcmVhdGVNYXNrQW5kU3dhcENv
bnQKICAgICBBZmZpbmVUcmFuc2Zvcm0gYWJzb2x1dGVUcmFuc2Zvcm0gPSBTVkdSZW5kZXJpbmdD
b250ZXh0OjpjYWxjdWxhdGVUcmFuc2Zvcm1hdGlvblRvT3V0ZXJtb3N0Q29vcmRpbmF0ZVN5c3Rl
bSgqdGV4dFJvb3RCbG9jayk7CiAgICAgRmxvYXRSZWN0IHJlcGFpbnRSZWN0ID0gdGV4dFJvb3RC
bG9jay0+cmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKTsKIAotICAgIGF1dG8gbWFza0lt
YWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIocmVwYWludFJlY3Qs
IGFic29sdXRlVHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGNvbnRleHQt
PnJlbmRlcmluZ01vZGUoKSk7CisgICAgYXV0byBtYXNrSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250
ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihyZXBhaW50UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0sIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBjb250ZXh0LT5yZW5kZXJpbmdNb2RlKCkpOwog
ICAgIGlmICghbWFza0ltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VN
YXNrZXIuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsOSAr
NzEsOSBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBseVJlc291CiAgICAgICAg
IGNvbnN0IFNWR1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IHN0eWxlKCkuc3ZnU3R5bGUoKTsKIAog
I2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICAgICAg
YXV0byBjb2xvclNwYWNlID0gc3ZnU3R5bGUuY29sb3JJbnRlcnBvbGF0aW9uKCkgPT0gQ29sb3JJ
bnRlcnBvbGF0aW9uOjpMaW5lYXJSR0IgPyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNS
R0IgOiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I7CisgICAgICAgIGF1dG8gY29sb3JTcGFj
ZSA9IHN2Z1N0eWxlLmNvbG9ySW50ZXJwb2xhdGlvbigpID09IENvbG9ySW50ZXJwb2xhdGlvbjo6
TGluZWFyUkdCID8gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCkgOiBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKICNlbHNlCi0gICAgICAgIGF1dG8gY29sb3JTcGFjZSA9
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjsKKyAgICAgICAgYXV0byBjb2xvclNwYWNlID0g
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiAjZW5kaWYKIAogICAgICAgICAvLyBGSVhN
RSAoMTQ5NDcwKTogVGhpcyBpbWFnZSBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlvbmFs
bHkgdW5hY2NlbGVyYXRlZC4gTWFraW5nIGl0IG1hdGNoIHRoZSBjb250ZXh0IGJyZWFrcyBhbHBo
YSBtYXNraW5nLCB0aG91Z2guCkBAIC05Miw3ICs5Miw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3Vy
Y2VNYXNrZXI6OmFwcGx5UmVzb3UKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBSZW5kZXJT
VkdSZXNvdXJjZU1hc2tlcjo6ZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdlKE1hc2tlckRhdGEqIG1h
c2tlckRhdGEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW5kZXJPYmplY3Qq
IG9iamVjdCkKK2Jvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250ZW50SW50b01h
c2tJbWFnZShNYXNrZXJEYXRhKiBtYXNrZXJEYXRhLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmIGNvbG9yU3BhY2UsIFJlbmRlck9iamVjdCogb2JqZWN0KQogewogICAgIEdyYXBoaWNzQ29u
dGV4dCYgbWFza0ltYWdlQ29udGV4dCA9IG1hc2tlckRhdGEtPm1hc2tJbWFnZS0+Y29udGV4dCgp
OwogCkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6ZHJh
d0NvbnRlbgogICAgIH0KIAogI2lmICFVU0UoQ0cpCi0gICAgbWFza2VyRGF0YS0+bWFza0ltYWdl
LT50cmFuc2Zvcm1Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgY29sb3JT
cGFjZSk7CisgICAgbWFza2VyRGF0YS0+bWFza0ltYWdlLT50cmFuc2Zvcm1Db2xvclNwYWNlKERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBjb2xvclNwYWNlKTsKICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKGNvbG9yU3BhY2UpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlTWFza2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToKIAog
ICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVu
ZGVyU1ZHUmVzb3VyY2VNYXNrZXIiOyB9CiAKLSAgICBib29sIGRyYXdDb250ZW50SW50b01hc2tJ
bWFnZShNYXNrZXJEYXRhKiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBSZW5kZXJPYmplY3QqKTsK
KyAgICBib29sIGRyYXdDb250ZW50SW50b01hc2tJbWFnZShNYXNrZXJEYXRhKiwgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiwgUmVuZGVyT2JqZWN0Kik7CiAgICAgdm9pZCBjYWxjdWxhdGVN
YXNrQ29udGVudFJlcGFpbnRSZWN0KCk7CiAKICAgICBGbG9hdFJlY3QgbV9tYXNrQ29udGVudEJv
dW5kYXJpZXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlUGF0dGVybi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI1Myw3ICsyNTMsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNl
UGF0dGVybjo6YnVpbGRUaWxlCiBSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbmRlclNWR1Jlc291cmNl
UGF0dGVybjo6Y3JlYXRlVGlsZUltYWdlKGNvbnN0IFBhdHRlcm5BdHRyaWJ1dGVzJiBhdHRyaWJ1
dGVzLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVCb3VuZGFyaWVzLCBjb25zdCBGbG9hdFJlY3QmIGFi
c29sdXRlVGlsZUJvdW5kYXJpZXMsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdGlsZUltYWdlVHJh
bnNmb3JtLCBGbG9hdFJlY3QmIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBSZW5kZXJp
bmdNb2RlIHJlbmRlcmluZ01vZGUpIGNvbnN0CiB7CiAgICAgY2xhbXBlZEFic29sdXRlVGlsZUJv
dW5kYXJpZXMgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFJlY3QoYWJzb2x1dGVUaWxlQm91bmRhcmll
cyk7Ci0gICAgYXV0byB0aWxlSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFn
ZUJ1ZmZlcihhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRh
cmllcywgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCByZW5kZXJpbmdNb2RlKTsKKyAgICBh
dXRvIHRpbGVJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGFi
c29sdXRlVGlsZUJvdW5kYXJpZXMsIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgcmVuZGVyaW5nTW9kZSk7CiAgICAgaWYgKCF0aWxl
SW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9u
IDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29u
dGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNiw3ICsyMzYsNyBAQCBBZmZpbmVUcmFuc2Zv
cm0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsCiAgICAgcmV0dXJuIGFic29sdXRlVHJhbnNmb3Jt
OwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUlt
YWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2Us
IFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JT
cGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQpCiB7CiAgICAgSW50UmVjdCBwYWludFJlY3QgPSBjYWxjdWxhdGVJbWFnZUJ1ZmZl
clJlY3QodGFyZ2V0UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0pOwogICAgIC8vIERvbid0IGNyZWF0
ZSBlbXB0eSBJbWFnZUJ1ZmZlcnMuCkBAIC0yNjQsNyArMjY0LDcgQEAgUmVmUHRyPEltYWdlQnVm
ZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OgogICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0KIAot
UmVmUHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZl
cihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZFJl
Y3QsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRl
cmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxJbWFnZUJ1
ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRSZWN0LCBjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9k
ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogewogICAgIEludFNpemUgY2xhbXBl
ZFNpemUgPSByb3VuZGVkSW50U2l6ZShjbGFtcGVkUmVjdC5zaXplKCkpOwogICAgIEZsb2F0U2l6
ZSB1bmNsYW1wZWRTaXplID0gcm91bmRlZEludFNpemUodGFyZ2V0UmVjdC5zaXplKCkpOwpAQCAt
MzUwLDcgKzM1MCw3IEBAIGJvb2wgU1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRm9yZWdyb3UK
IAogICAgIC8vIENyZWF0ZSBhIG5ldyBidWZmZXIgYW5kIHBhaW50IHRoZSBmb3JlZ3JvdW5kIGlu
dG8gaXQuCiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikgewotICAgICAgICBpbWFnZUJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShib3VuZGlu
Z0JveC5zaXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIG1fcGFpbnRJbmZvLT5j
b250ZXh0KCkpOworICAgICAgICBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShib3VuZGluZ0JveC5zaXplKCkpLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgbV9wYWludEluZm8tPmNvbnRleHQoKSk7CiAgICAgICAg
IGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250
ZXh0LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHUmVuZGVyaW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw4ICs2MCw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQoUmVuZGVyRWxlbWVudCYs
IFBhaW50SW5mbyYsIE5lZWRzR3JhcGhpY3NDb250ZXh0U2F2ZSA9IERvbnRTYXZlR3JhcGhpY3ND
b250ZXh0KTsKICAgICBib29sIGlzUmVuZGVyaW5nUHJlcGFyZWQoKSBjb25zdCB7IHJldHVybiBt
X3JlbmRlcmluZ0ZsYWdzICYgUmVuZGVyaW5nUHJlcGFyZWQ7IH0KIAotICAgIHN0YXRpYyBSZWZQ
dHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0
UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgRGVzdGluYXRp
b25Db2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVs
bHB0cik7Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRSZWN0
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCogPSBudWxscHRyKTsKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJ
bWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFJl
bmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKTsKKyAgICBzdGF0
aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3Qm
IHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZFJlY3QsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBu
dWxscHRyKTsKIAogICAgIHN0YXRpYyB2b2lkIHJlbmRlclN1YnRyZWVUb0NvbnRleHQoR3JhcGhp
Y3NDb250ZXh0JiwgUmVuZGVyRWxlbWVudCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwogICAg
IHN0YXRpYyB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0
UmVjdCwgUmVmUHRyPEltYWdlQnVmZmVyPiYsIGJvb2wgc2FmZVRvQ2xlYXIpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTcsNyArMjE3LDcgQEAgUmVmUHRyPE5hdGl2ZUltYWdlPiBTVkdJbWFnZTo6bmF0aXZl
SW1hZwogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1
dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KHNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIFNW
R0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHCiAgICAgRmxvYXRSZWN0IGltYWdlQnVm
ZmVyU2l6ZSA9IHpvb21lZENvbnRhaW5lclJlY3Q7CiAgICAgaW1hZ2VCdWZmZXJTaXplLnNjYWxl
KGltYWdlQnVmZmVyU2NhbGUud2lkdGgoKSwgaW1hZ2VCdWZmZXJTY2FsZS5oZWlnaHQoKSk7CiAK
LSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4
cGFuZGVkSW50U2l6ZShpbWFnZUJ1ZmZlclNpemUuc2l6ZSgpKSwgMSwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCLCBjb250ZXh0KTsKKyAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShpbWFnZUJ1ZmZlclNpemUuc2l6
ZSgpKSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNvbnRleHQpOwogICAgIGlm
ICghYnVmZmVyKSAvLyBGYWlsZWQgdG8gYWxsb2NhdGUgYnVmZmVyLgogICAgICAgICByZXR1cm47
CiAgICAgZHJhd0ZvckNvbnRhaW5lcihidWZmZXItPmNvbnRleHQoKSwgY29udGFpbmVyU2l6ZSwg
Y29udGFpbmVyWm9vbSwgaW5pdGlhbEZyYWdtZW50VVJMLCBpbWFnZUJ1ZmZlclNpemUsIHpvb21l
ZENvbnRhaW5lclJlY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05Myw4ICs5Myw4IEBAIHZvaWQgRkVJbWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkK
ICAgICBpZiAoIW1faW1hZ2UgJiYgIXJlbmRlcmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICAv
LyBGRUltYWdlIHJlc3VsdHMgYXJlIGFsd2F5cyBpbiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IKLSAgICBzZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7
CisgICAgLy8gRkVJbWFnZSByZXN1bHRzIGFyZSBhbHdheXMgaW4gRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCkKKyAgICBzZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpKTsKIAogICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0ZUltYWdl
QnVmZmVyUmVzdWx0KCk7CiAgICAgaWYgKCFyZXN1bHRJbWFnZSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNzc5MjApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDg5IEBACisyMDIxLTA1LTIyICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNv
bT4KKworICAgICAgICBDb252ZXJ0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBmcm9tIGFuIGVudW0g
dG8gY2xhc3Mgd3JhcHBpbmcgYSBwbGF0Zm9ybSBjb2xvciBzcGFjZSAoQ0dDb2xvclNwYWNlUmVm
IGZvciBDRyBwb3J0cywgZXRjLikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNjE0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFtXSVBdCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyOjpjcmVh
dGUpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUlt
YWdlQnVmZmVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2Rl
ckFWRlByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHk6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcik6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjphcHBseUJhY2tpbmdT
dG9yZVRvTGF5ZXIpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb246OmVuY29kZSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbjo6ZGVj
b2RlKToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmg6CisgICAgICAgICogU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5oOgorICAgICAgICAqIFNoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OmNvbG9yU3BhY2UpOgorICAgICAgICAqIFNoYXJlZC9tYWMvQ29sb3JTcGFj
ZURhdGEuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWQvbWFjL0NvbG9yU3BhY2VEYXRhLm1t
OiBSZW1vdmVkLgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Rha2VW
aWV3U25hcHNob3RdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zbmFwc2hvdFJlY3Q6aW50b0lt
YWdlT2ZXaWR0aDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjb2xvclNwYWNlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbToKKyAgICAgICAgKFdlYktpdDo6cmVjdXJzaXZl
bHlNYXBJT1N1cmZhY2VCYWNraW5nU3RvcmUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbToKKyAgICAgICAgKFdl
YktpdDo6UGFnZUNsaWVudEltcGw6OmNvbG9yU3BhY2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9t
YWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5Ojpjb2xvclNwYWNlKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJl
YWJsZUJpdG1hcEJhY2tlbmQ6OmNvbmZpZ3VyYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwcmVwYXJlRm9yRGlzcGxheSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNl
QmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJ
bWFnZURlY29kZXJBVkYuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZURlY29kZXJB
VkY6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9t
ZWRpYS9jb2NvYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1l
KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwaXhlbEJ1ZmZl
ckZvckN1cnJlbnRUaW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpQREZQbHVnaW4pOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlU2hhcmVhYmxlQml0bWFwKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAg
ICAgICAgKFdlYktpdDo6Y29udmVydERyYWdJbWFnZVRvQml0bWFwKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0Fy
ZWE6OnNldENvbG9yU3BhY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5n
QXJlYS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OnNuYXBzaG90T3B0aW9uc1RvQml0bWFwQ29uZmlndXJhdGlv
bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhOjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSk6CisgICAgICAg
IChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRDb2xvclNwYWNlKToK
KwogMjAyMS0wNS0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IFJlcGxhY2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2NhbCB2YXJpYWJsZXMKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjAzLDcgKzIwMyw2IEBAIFNoYXJl
ZC9pb3MvV2ViVG91Y2hFdmVudElPUy5jcHAKIAogU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNz
TWFjLm1tCiBTaGFyZWQvbWFjL0NvZGVTaWduaW5nLm1tCi1TaGFyZWQvbWFjL0NvbG9yU3BhY2VE
YXRhLm1tCiBTaGFyZWQvbWFjL0hhbmdEZXRlY3Rpb25EaXNhYmxlck1hYy5tbQogU2hhcmVkL21h
Yy9OYXRpdmVXZWJHZXN0dXJlRXZlbnRNYWMubW0KIFNoYXJlZC9tYWMvTmF0aXZlV2ViS2V5Ym9h
cmRFdmVudE1hYy5tbQpJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUltYWdlQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFJlbW90ZUltYWdlQnVmZmVyIDogcHVibGlj
IFdlYkNvcmUKICAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6cHV0UGl4ZWxCdWZm
ZXI7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9u
Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCwgV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikK
KyAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYgY29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQsIFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgewog
ICAgICAgICByZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnRlbXBsYXRlIGNyZWF0ZTxS
ZW1vdGVJbWFnZUJ1ZmZlcj4oc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhl
bEZvcm1hdCwgbnVsbHB0ciwgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCwgcmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw3ICsxNTIsNyBAQCB2
b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZEZsdXNoKERpCiAgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpEaWRGbHVzaChmbHVzaElkZW50aWZpZXIs
IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVy
KGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9k
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFj
ZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFJlbmRlcmlu
Z01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VSVChyZW5kZXJpbmdNb2Rl
ID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIHx8IHJlbmRlcmluZ01vZGUgPT0gUmVuZGVy
aW5nTW9kZTo6VW5hY2NlbGVyYXRlZCk7CkBAIC00OTUsNiArNDk1LDggQEAgT3B0aW9uYWw8RGlz
cGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVQogICAgICAqIFNlZSB0aGUgY29tbWVudCBhdCB0
aGUgdG9wIG9mIERpc3BsYXlMaXN0SXRlbXMuaCBmb3Igd2h5LiAqLwogCiAgICAgc3dpdGNoICh0
eXBlKSB7CisgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzOgorICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpC
ZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7
CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6CiAgICAgICAg
IHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkNsaXBPdXRUb1BhdGg+KGRhdGEs
IGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpDbGlwUGF0aDoKQEAgLTUyMSw2ICs1MjMsOCBAQCBPcHRpb25hbDxEaXNwbGF5TGlzdDo6SXRl
bUhhbmRsZT4gV0FSTl9VCiAgICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxp
c3Q6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9u
KTsKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFJvdW5kZWRSZWN0OgogICAg
ICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsUm91bmRlZFJlY3Q+
KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOworICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpHZXRQaXhlbEJ1ZmZlcjoKKyAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxE
aXNwbGF5TGlzdDo6R2V0UGl4ZWxCdWZmZXI+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24p
OwogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQdXRQaXhlbEJ1ZmZlcjoKICAgICAg
ICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6UHV0UGl4ZWxCdWZmZXI+KGRh
dGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpTZXRMaW5lRGFzaDoKQEAgLTUyOSw2ICs1MzMsOCBAQCBPcHRpb25hbDxEaXNwbGF5TGlz
dDo6SXRlbUhhbmRsZT4gV0FSTl9VCiAgICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlz
cGxheUxpc3Q6OlNldFN0YXRlPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKICAgICBj
YXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U3Ryb2tlUGF0aDoKICAgICAgICAgcmV0dXJuIGRl
Y29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6U3Ryb2tlUGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5k
bGVMb2NhdGlvbik7CisgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZVBhdGg6
CisgICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OlN0cm9rZVBhdGg+
KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpBcHBseURldmljZVNjYWxlRmFjdG9yOgogI2lmIFVTRShDRykKICAgICBjYXNlIERp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6QXBwbHlGaWxsUGF0dGVybjoKQEAgLTU0MCw3ICs1NDYsNiBA
QCBPcHRpb25hbDxEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VCiAgICAgY2FzZSBEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkNsaXA6CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkNsaXBPdXQ6CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVm
ZmVyOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdD
b21tYW5kczoKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzOgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNU
TToKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1h
cmtlcjoKQEAgLTU4MSw3ICs1ODYsNiBAQCBPcHRpb25hbDxEaXNwbGF5TGlzdDo6SXRlbUhhbmRs
ZT4gV0FSTl9VCiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZVJlY3Q6CiAg
ICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZUxpbmU6CiAgICAgY2FzZSBEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OlRyYW5zbGF0ZToKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6R2V0UGl4ZWxCdWZmZXI6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
aAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTQgKzQ0LDE4
IEBACiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCiBuYW1lc3BhY2UgRGlzcGxheUxpc3Qgewog
Y2xhc3MgRGlzcGxheUxpc3Q7CiBjbGFzcyBJdGVtOwogfQorCitjbGFzcyBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U7CiBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBOYXRpdmVJbWFnZTsKLWVudW0gY2xh
c3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDogdWludDhfdDsKKwogZW51bSBjbGFzcyBSZW5kZXJp
bmdNb2RlIDogYm9vbDsKKwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEyMSw3ICsxMjUs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7
CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KLSAgICB2b2lkIGNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJl
bmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25D
b2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiwgV2Vi
Q29yZTo6UGl4ZWxGb3JtYXQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7
CiAgICAgdm9pZCB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KGNvbnN0IEdQVVByb2Nlc3NXYWtl
dXBNZXNzYWdlQXJndW1lbnRzJik7CiAgICAgdm9pZCB1cGRhdGVTaGFyZWRNZW1vcnlGb3JHZXRQ
aXhlbEJ1ZmZlcih1aW50MzJfdCBieXRlQ291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mJik7CiAgICAgdm9pZCBzZW1hcGhvcmVGb3JH
ZXRQaXhlbEJ1ZmZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2VtYXBob3Jl
Jik+JiYpOwpJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdl
RGVjb2RlckFWRlByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMjggKzExMywyOCBAQCB2b2lkIFJlbW90
ZUltYWdlRGVjb2RlckFWRlByb3h5OjpzZXREYXRhCiAgICAgY29tcGxldGlvbkhhbmRsZXIoZnJh
bWVDb3VudCwgaW1hZ2VEZWNvZGVyLT5zaXplKCksIGltYWdlRGVjb2Rlci0+aGFzVHJhY2soKSwg
V1RGTW92ZShmcmFtZUluZm9zKSk7CiB9CiAKLXZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHk6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KEltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRp
Zmllciwgc2l6ZV90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdURjo6
TWFjaFNlbmRSaWdodD4mJiwgQ29sb3JTcGFjZURhdGEmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpjcmVhdGVGcmFtZUltYWdlQXRJbmRl
eChJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYsIE9wdGlvbmFs
PFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgQVNTRVJUKG1faW1hZ2VEZWNvZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7CiAg
ICAgT3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJpZ2h0PiBzZW5kUmlnaHQ7Ci0gICAgQ29sb3JTcGFj
ZURhdGEgY29sb3JTcGFjZURhdGE7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25D
b2xvclNwYWNlPiBjb2xvclNwYWNlOwogICAgIGlmICghbV9pbWFnZURlY29kZXJzLmNvbnRhaW5z
KGlkZW50aWZpZXIpKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc2VuZFJp
Z2h0KSwgV1RGTW92ZShjb2xvclNwYWNlRGF0YSkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKHNlbmRSaWdodCksIFdURk1vdmUoY29sb3JTcGFjZSkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgYXV0byBmcmFtZUltYWdlID0gbV9pbWFnZURlY29kZXJzLmdldChp
ZGVudGlmaWVyKS0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgpOwogICAgIGlmICghZnJh
bWVJbWFnZSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHNlbmRSaWdodCks
IFdURk1vdmUoY29sb3JTcGFjZURhdGEpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShzZW5kUmlnaHQpLCBXVEZNb3ZlKGNvbG9yU3BhY2UpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21JbWFn
ZShmcmFtZUltYWdlLmdldCgpKSkgewogICAgICAgICBzZW5kUmlnaHQgPSBzdXJmYWNlLT5jcmVh
dGVTZW5kUmlnaHQoKTsKLSAgICAgICAgY29sb3JTcGFjZURhdGEuY2dDb2xvclNwYWNlID0gc3Vy
ZmFjZS0+Y29sb3JTcGFjZSgpOworICAgICAgICBjb2xvclNwYWNlID0gc3VyZmFjZS0+Y29sb3JT
cGFjZSgpOwogICAgIH0KIAotICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc2VuZFJpZ2h0
KSwgV1RGTW92ZShjb2xvclNwYWNlRGF0YSkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUoc2VuZFJpZ2h0KSwgV1RGTW92ZShjb2xvclNwYWNlKSk7CiB9CiAKIHZvaWQgUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGUHJveHk6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZShJbWFnZURlY29kZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94
eS5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcs
NiBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBIQVZFKEFWQVNTRVRSRUFERVIpCiAK
LSNpbmNsdWRlICJDb2xvclNwYWNlRGF0YS5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlRGVj
b2RlckFWRk9iakMuaD4KQEAgLTU3LDcgKzU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlbGV0
ZURlY29kZXIoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXRF
eHBlY3RlZENvbnRlbnRTaXplKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIGxvbmcg
bG9uZyBleHBlY3RlZENvbnRlbnRTaXplKTsKICAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc2l6ZV90IGZyYW1lQ291bnQsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUsIGJvb2wgaGFzVHJhY2ssIE9wdGlvbmFsPFZlY3Rv
cjxXZWJDb3JlOjpJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4+JiYpPiYmKTsKLSAgICB2b2lkIGNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIHNp
emVfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXVEY6Ok1hY2hTZW5k
UmlnaHQ+JiYsIENvbG9yU3BhY2VEYXRhJiYpPiYmKTsKKyAgICB2b2lkIGNyZWF0ZUZyYW1lSW1h
Z2VBdEluZGV4KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIHNpemVfdCBpbmRleCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYsIE9w
dGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4mJik+JiYpOwogICAgIHZvaWQg
Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIHNp
emVfdCBpbmRleCk7CiAKICAgICB2b2lkIGVuY29kZWREYXRhU3RhdHVzQ2hhbmdlZChXZWJDb3Jl
OjpJbWFnZURlY29kZXJJZGVudGlmaWVyKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
UHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNzYWdlcy5pbgkod29y
a2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBtZXNzYWdlcyAtPiBSZW1vdGVJbWFnZURlY29k
ZXJBVkZQcm94eSBOCiAgICAgRGVsZXRlRGVjb2RlcihXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiAgICAgU2V0RXhwZWN0ZWRDb250ZW50U2l6ZShXZWJDb3JlOjpJ
bWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGxvbmcgbG9uZyBleHBlY3RlZENvbnRl
bnRTaXplKQogICAgIFNldERhdGEoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpIC0+IChzaXplX3QgZnJhbWVDb3VudCwgV2ViQ29yZTo6SW50U2l6ZSBzaXplLCBi
b29sIGhhc1RyYWNrLCBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpGcmFt
ZUluZm8+PiBmcmFtZUluZm9zKSBTeW5jaHJvbm91cwotICAgIENyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgc2l6ZV90IGlu
ZGV4KSAtPiAoT3B0aW9uYWw8TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0LCBzdHJ1Y3QgV2ViS2l0
OjpDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlKSBTeW5jaHJvbm91cworICAgIENyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwg
c2l6ZV90IGluZGV4KSAtPiAoT3B0aW9uYWw8TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0LCBPcHRp
b25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2UpIFN5bmNocm9u
b3VzCiAgICAgQ2xlYXJGcmFtZUJ1ZmZlckNhY2hlKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgc2l6ZV90IGluZGV4KQogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDEw
ICs3NCw3IEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGU6OmNsZWFyKCkKIAogdm9pZCBT
aGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb246OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBpc09wYXF1ZTsKLSNpZiBQTEFURk9STShDT0NP
QSkKLSAgICBlbmNvZGVyIDw8IGNvbG9yU3BhY2U7Ci0jZW5kaWYKKyAgICBlbmNvZGVyIDw8IGNv
bG9yU3BhY2UgPDwgaXNPcGFxdWU7CiAjaWYgVVNFKERJUkVDVDJEKQogICAgIFNoYXJlZE1lbW9y
eTo6SGFuZGxlOjplbmNvZGVIYW5kbGUoZW5jb2Rlciwgc2hhcmVkUmVzb3VyY2VIYW5kbGUpOwog
CkBAIC04OCwyMSArODUsMjggQEAgdm9pZCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb246
OmVuYwogI2VuZGlmCiB9CiAKLWJvb2wgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9u
KQorYm9vbCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb246OmRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIsIENvbmZpZ3VyYXRpb24mIHJlc3VsdCkKIHsKLSAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGNvbmZpZ3VyYXRpb24uaXNPcGFxdWUpKQorICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdl
YkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4+IGNvbG9yU3BhY2U7CisgICAgZGVjb2RlciA+
PiBjb2xvclNwYWNlOworICAgIGlmICghY29sb3JTcGFjZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29uZmlndXJh
dGlvbi5jb2xvclNwYWNlKSkKKworICAgIE9wdGlvbmFsPGJvb2w+IGlzT3BhcXVlOworICAgIGRl
Y29kZXIgPj4gaXNPcGFxdWU7CisgICAgaWYgKCFpc09wYXF1ZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotI2VuZGlmCisKKyAgICByZXN1bHQgPSBDb25maWd1cmF0aW9uIHsgV1RGTW92ZSgqY29s
b3JTcGFjZSksICppc09wYXF1ZSB9OworCiAjaWYgVVNFKERJUkVDVDJEKQogICAgIGF1dG8gcHJv
Y2Vzc1NwZWNpZmljSGFuZGxlID0gU2hhcmVkTWVtb3J5OjpIYW5kbGU6OmRlY29kZUhhbmRsZShk
ZWNvZGVyKTsKICAgICBpZiAoIXByb2Nlc3NTcGVjaWZpY0hhbmRsZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgY29uZmlndXJhdGlvbi5zaGFyZWRSZXNvdXJjZUhhbmRsZSA9IHByb2Nl
c3NTcGVjaWZpY0hhbmRsZS52YWx1ZSgpOworICAgIHJlc3VsdC5zaGFyZWRSZXNvdXJjZUhhbmRs
ZSA9IHByb2Nlc3NTcGVjaWZpY0hhbmRsZS52YWx1ZSgpOwogI2VuZGlmCisKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxNSArMjYsMTIgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiU2hhcmVkTWVtb3J5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9y
U3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtSW1hZ2UuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSAiQ29sb3JT
cGFjZURhdGEuaCIKLSNlbmRpZgotCiAjaWYgVVNFKERJUkVDVDJEKQogaW50ZXJmYWNlIElEMkQx
Qml0bWFwOwogaW50ZXJmYWNlIElEMkQxUmVuZGVyVGFyZ2V0OwpAQCAtNTUsMTAgKzUyLDggQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBTaGFyZWFibGVCaXRtYXAgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8U2hhcmVhYmxlQml0bWFwPiB7CiBwdWJsaWM6CiAgICAgc3RydWN0IENv
bmZpZ3VyYXRpb24geworICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9y
U3BhY2U+IGNvbG9yU3BhY2U7CiAgICAgICAgIGJvb2wgaXNPcGFxdWUgeyBmYWxzZSB9OwotI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgICAgICBDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlOwotI2Vu
ZGlmCiAjaWYgVVNFKERJUkVDVDJEKQogICAgICAgICBtdXRhYmxlIEhBTkRMRSBzaGFyZWRSZXNv
dXJjZUhhbmRsZSB7IG51bGxwdHIgfTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCSh3b3JraW5nIGNvcHkpCkBA
IC04Miw2ICs4Miw4IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUg
IkFyZ3VtZW50Q29kZXJzQ0YuaCIKKwogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNYWNoU2VuZFJp
Z2h0OwogfQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUs
OCArMzI1LDExIEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlAKICAg
ICBwYXJhbWV0ZXJzLmhhc1Jlc291cmNlTG9hZENsaWVudCA9IFdURk1vdmUoKmhhc1Jlc291cmNl
TG9hZENsaWVudCk7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpKQorICAgIE9wdGlvbmFsPE9wdGlvbmFsPERlc3RpbmF0
aW9uQ29sb3JTcGFjZT4+IGNvbG9yU3BhY2U7CisgICAgZGVjb2RlciA+PiBjb2xvclNwYWNlOwor
ICAgIGlmICghY29sb3JTcGFjZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBw
YXJhbWV0ZXJzLmNvbG9yU3BhY2UgPSBXVEZNb3ZlKCpjb2xvclNwYWNlKTsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXNlU3lzdGVtQXBwZWFyYW5jZSkpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBj
b3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2aXR5U3RhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nv
bG9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0Zsb2F0U2l6ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvTGF5b3V0TWlsZXN0b25lLmg+CkBAIC00OSwxMCArNTAsNiBAQAog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKLSNpZiBQTEFURk9STShNQUMpCi0jaW5jbHVkZSAiQ29sb3JTcGFjZURhdGEuaCIKLSNlbmRp
ZgotCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogI2luY2x1ZGUgPFdlYkNvcmUv
QXBwbGljYXRpb25NYW5pZmVzdC5oPgogI2VuZGlmCkBAIC0xNDYsNyArMTQzLDcgQEAgc3RydWN0
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIGJvb2wgdXNlRWxldmF0ZWRVc2VySW50
ZXJmYWNlTGV2ZWwgeyBmYWxzZSB9OwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIENvbG9yU3Bh
Y2VEYXRhIGNvbG9yU3BhY2U7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xv
clNwYWNlPiBjb2xvclNwYWNlOwogICAgIGJvb2wgdXNlU3lzdGVtQXBwZWFyYW5jZTsKICNlbmRp
ZgogI2lmIEVOQUJMRShNRVRBX1ZJRVdQT1JUKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
MTIsMTkgKzIxMiwxOSBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2FwVG9WYWxp
CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFR5cGU6OklPU3VyZmFjZToKICAgICAg
ICAgaWYgKHNob3VsZFVzZVJlbW90ZVJlbmRlcmluZykKLSAgICAgICAgICAgIG1fZnJvbnRCdWZm
ZXIuaW1hZ2VCdWZmZXIgPSBtX2xheWVyLT5jb250ZXh0KCktPmVuc3VyZVJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSgpLmNyZWF0ZUltYWdlQnVmZmVyKG1fc2l6ZSwgV2ViQ29yZTo6UmVuZGVy
aW5nTW9kZTo6QWNjZWxlcmF0ZWQsIG1fc2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSk7CisgICAgICAgICAgICBtX2Zyb250QnVmZmVyLmlt
YWdlQnVmZmVyID0gbV9sYXllci0+Y29udGV4dCgpLT5lbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkoKS5jcmVhdGVJbWFnZUJ1ZmZlcihtX3NpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01v
ZGU6OkFjY2VsZXJhdGVkLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgcGl4ZWxGb3JtYXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZnJv
bnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPEFjY2Vs
ZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwg
bV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBwaXhlbEZvcm1h
dCgpLCBudWxscHRyKTsKKyAgICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBX
ZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFi
bGVNYXBwZWRCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHBpeGVsRm9ybWF0KCksIG51bGxwdHIpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIFR5cGU6OkJpdG1hcDoKICAgICAgICAgaWYgKHNob3VsZFVzZVJl
bW90ZVJlbmRlcmluZykKLSAgICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBt
X2xheWVyLT5jb250ZXh0KCktPmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpLmNy
ZWF0ZUltYWdlQnVmZmVyKG1fc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVy
YXRlZCwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBwaXhl
bEZvcm1hdCgpKTsKKyAgICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBtX2xh
eWVyLT5jb250ZXh0KCktPmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpLmNyZWF0
ZUltYWdlQnVmZmVyKG1fc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHBpeGVs
Rm9ybWF0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdl
QnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxVbmFjY2VsZXJhdGVkSW1hZ2VC
dWZmZXJTaGFyZWFibGVCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwgbV9zY2FsZSwgV2ViQ29yZTo6
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBwaXhlbEZvcm1hdCgpLCBudWxscHRyKTsKKyAg
ICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0ZUlt
YWdlQnVmZmVyPFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQ+OjpjcmVh
dGUobV9zaXplLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0cik7CiAgICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShD
R19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKICAgICBjYXNlIFR5cGU6OkNHRGlz
cGxheUxpc3Q6Ci0gICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpD
b25jcmV0ZUltYWdlQnVmZmVyPENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ+OjpjcmVh
dGUobV9zaXplLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Is
IHBpeGVsRm9ybWF0KCksIG51bGxwdHIpOworICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVm
ZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXJCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCksIHBpeGVsRm9ybWF0KCksIG51bGxwdHIpOwogICAgICAgICBicmVh
azsKICNlbmRpZgogICAgIH0KQEAgLTM5Nyw3ICszOTcsNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjphcHBseUJhY2tpCiAgICAgICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6
OklPU3VyZmFjZSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNvbnRlbnRzVHlwZSkgewogICAgICAg
ICAgICAgY2FzZSBMYXllckNvbnRlbnRzVHlwZTo6SU9TdXJmYWNlOiB7Ci0gICAgICAgICAgICAg
ICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0
KFdURk1vdmUobWFjaFNlbmRSaWdodCksIFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCkpOwor
ICAgICAgICAgICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRl
RnJvbVNlbmRSaWdodChXVEZNb3ZlKG1hY2hTZW5kUmlnaHQpLCBXZWJDb3JlOjpEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAgICAgICAgICAgbGF5ZXIuY29udGVudHMgPSBz
dXJmYWNlID8gc3VyZmFjZS0+YXNMYXllckNvbnRlbnRzKCkgOiBuaWw7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9T
aGFyZWFibGVCaXRtYXBDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQv
Y2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDcgKzQwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgCiBzdGF0aWMgQ0dDb2xv
clNwYWNlUmVmIGNvbG9yU3BhY2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9u
JiBjb25maWd1cmF0aW9uKQogewotICAgIHJldHVybiBjb25maWd1cmF0aW9uLmNvbG9yU3BhY2Uu
Y2dDb2xvclNwYWNlLmdldCgpID86IHNSR0JDb2xvclNwYWNlUmVmKCk7CisgICAgcmV0dXJuIGNv
bmZpZ3VyYXRpb24uY29sb3JTcGFjZSA/IGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZS0+cGxhdGZv
cm1Db2xvclNwYWNlKCkgOiBXZWJDb3JlOjpzUkdCQ29sb3JTcGFjZVJlZigpOwogfQogCiBzdGF0
aWMgYm9vbCB3YW50c0V4dGVuZGVkUmFuZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1
cmF0aW9uJiBjb25maWd1cmF0aW9uKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0Nv
bG9yU3BhY2VEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0Nv
bG9yU3BhY2VEYXRhLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9Db2xvclNwYWNlRGF0YS5oCShub25leGlzdGVudCkKQEAgLTEsNDcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgQ29sb3JTcGFjZURhdGFfaAotI2RlZmluZSBDb2xvclNwYWNlRGF0
YV9oCi0KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLW5hbWVzcGFjZSBJUEMgewotY2xh
c3MgRGVjb2RlcjsKLWNsYXNzIEVuY29kZXI7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1z
dHJ1Y3QgQ29sb3JTcGFjZURhdGEgewotICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNv
bnN0OwotICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoSVBDOjpEZWNv
ZGVyJiwgQ29sb3JTcGFjZURhdGEmKTsKLQotICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+
IGNnQ29sb3JTcGFjZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8g
Q29sb3JTcGFjZURhdGFfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL0NvbG9yU3BhY2VEYXRhLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxl
CiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvbG9yU3BhY2VEYXRhLm1tCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEubW0J
KG5vbmV4aXN0ZW50KQpAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29u
ZmlnLmgiCi0jaW1wb3J0ICJDb2xvclNwYWNlRGF0YS5oIgotCi0jaW1wb3J0ICJBcmd1bWVudENv
ZGVyc0NGLmgiCi0jaW1wb3J0ICJEZWNvZGVyLmgiCi0jaW1wb3J0ICJFbmNvZGVyLmgiCi0jaW1w
b3J0IDx3dGYvRW51bVRyYWl0cy5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBDb2xv
clNwYWNlRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBl
bmNvZGVyIDw8IHN0YXRpY19jYXN0PGJvb2w+KGNnQ29sb3JTcGFjZSk7Ci0gICAgaWYgKGNnQ29s
b3JTcGFjZSkKLSAgICAgICAgZW5jb2RlciA8PCBjZ0NvbG9yU3BhY2U7Ci19Ci0KLWJvb2wgQ29s
b3JTcGFjZURhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbG9yU3BhY2VEYXRh
JiBjb2xvclNwYWNlRGF0YSkKLXsKLSAgICBib29sIGhhc0NHQ29sb3JTcGFjZTsKLSAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGhhc0NHQ29sb3JTcGFjZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGlmICghaGFzQ0dDb2xvclNwYWNlKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAg
IFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2U7Ci0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShjb2xvclNwYWNlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIGNv
bG9yU3BhY2VEYXRhLmNnQ29sb3JTcGFjZSA9IFdURk1vdmUoY29sb3JTcGFjZSk7Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5Myw3IEBAIGNs
YXNzIFNlY3VyaXR5T3JpZ2luOwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29sb3I7CiBj
bGFzcyBDdXJzb3I7CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7CiBjbGFzcyBGbG9hdFF1
YWQ7CiBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBSZWdpb247CkBAIC0xODgsMTAgKzE4OSw2IEBA
IGNsYXNzIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQ7CiBjbGFzcyBJbnN0YWxsTWlz
c2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0OwogI2VuZGlmCiAKLSNpZiBQTEFURk9S
TShDT0NPQSkKLXN0cnVjdCBDb2xvclNwYWNlRGF0YTsKLSNlbmRpZgotCiAjaWYgSEFWRShWSVNJ
QklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCiB1c2luZyBMYXllckhvc3RpbmdDb250ZXh0SUQgPSB1
aW50MzJfdDsKICNlbmRpZgpAQCAtNDI2LDcgKzQyMyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgQ0dSZWN0IGJvdW5kc09mTGF5ZXJJbkxheWVyQmFja2VkV2luZG93Q29vcmRpbmF0ZXMoQ0FM
YXllciAqKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIENvbG9yU3BhY2VEYXRhIGNvbG9yU3Bh
Y2UoKSA9IDA7CisgICAgdmlydHVhbCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29s
b3JTcGFjZSgpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzaG93UGxhdGZvcm1Db250ZXh0TWVu
dShOU01lbnUgKiwgV2ViQ29yZTo6SW50UG9pbnQpID0gMDsKIApJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsNiArMTk4
LDcgQEAgbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBBdHRhY2htZW50OwogY2xhc3MgQ29udGVudFdv
cmxkOwogY2xhc3MgQ29udGV4dE1lbnVDbGllbnQ7CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U7CiBjbGFzcyBFcnJvcjsKIGNsYXNzIEZpbmRDbGllbnQ7CiBjbGFzcyBGaW5kTWF0Y2hlc0Ns
aWVudDsKQEAgLTM3Nyw3ICszNzgsNiBAQCBjbGFzcyBXZWJXaGVlbEV2ZW50Q29hbGVzY2VyOwog
Y2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIAogc3RydWN0IEFwcEJvdW5kTmF2aWdhdGlvblRlc3Rp
bmdEYXRhOwotc3RydWN0IENvbG9yU3BhY2VEYXRhOwogc3RydWN0IERhdGFEZXRlY3Rpb25SZXN1
bHQ7CiBzdHJ1Y3QgRG9jdW1lbnRFZGl0aW5nQ29udGV4dDsKIHN0cnVjdCBEb2N1bWVudEVkaXRp
bmdDb250ZXh0UmVxdWVzdDsKQEAgLTExMzIsNyArMTEzMiw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IG1ha2VGaXJzdFJlc3BvbmRlcigpOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VG
aXJzdFJlc3BvbmRlcigpOwogCi0gICAgQ29sb3JTcGFjZURhdGEgY29sb3JTcGFjZSgpOworICAg
IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKCk7CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDE0LDcgKzEwMTQsNyBAQCAtIChSZWZQdHI8V2ViS2l0OjpWaWV3U25hcHNob3Q+
KV90YWtlVmllCiAjZWxzZQogICAgIFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0IHNuYXBzaG90
Rm9ybWF0ID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQ6OkJHUkE7CiAjZW5kaWYKLSAgICBh
dXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZShXZWJDb3JlOjpleHBhbmRl
ZEludFNpemUoc25hcHNob3RTaXplKSwgV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSwgc25h
cHNob3RGb3JtYXQpOworICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3Jl
YXRlKFdlYkNvcmU6OmV4cGFuZGVkSW50U2l6ZShzbmFwc2hvdFNpemUpLCBXZWJDb3JlOjpEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgc25hcHNob3RGb3JtYXQpOwogICAgIGlmICghc3Vy
ZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgQ0FSZW5kZXJTZXJ2ZXJSZW5kZXJM
YXllcldpdGhUcmFuc2Zvcm0oTUFDSF9QT1JUX05VTEwsIHNlbGYubGF5ZXIuY29udGV4dC5jb250
ZXh0SWQsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KHNlbGYubGF5ZXIpLCBzdXJmYWNlLT5z
dXJmYWNlKCksIDAsIDAsICZ0cmFuc2Zvcm0pOwpAQCAtMzA3OSw3ICszMDc5LDcgQEAgLSAodm9p
ZClfc25hcHNob3RSZWN0OihDR1JlY3QpcmVjdEluVmlldwogICAgIE5TU3RyaW5nICpkaXNwbGF5
TmFtZSA9IHNlbGYud2luZG93LnNjcmVlbi5kaXNwbGF5Q29uZmlndXJhdGlvbi5uYW1lOwogICAg
IGlmIChkaXNwbGF5TmFtZSAmJiAhc2VsZi53aW5kb3cuaGlkZGVuKSB7CiAgICAgICAgIFRyYWNl
U2NvcGUgc25hcHNob3RTY29wZShSZW5kZXJTZXJ2ZXJTbmFwc2hvdFN0YXJ0LCBSZW5kZXJTZXJ2
ZXJTbmFwc2hvdEVuZCk7Ci0gICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFj
ZTo6Y3JlYXRlKFdlYkNvcmU6OmV4cGFuZGVkSW50U2l6ZShXZWJDb3JlOjpGbG9hdFNpemUoaW1h
Z2VTaXplKSksIFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCkpOworICAgICAgICBhdXRvIHN1
cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZShXZWJDb3JlOjpleHBhbmRlZEludFNp
emUoV2ViQ29yZTo6RmxvYXRTaXplKGltYWdlU2l6ZSkpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAgIGlmICghc3VyZmFjZSkgewogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm47CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTk0LDYgKzk0LDcgQEAgY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247CiB9
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNs
YXNzIEludFBvaW50Owogc3RydWN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkw7CiAKQEAgLTE2OCw3
ICsxNjksNiBAQCBjbGFzcyBXZWJGcmFtZVByb3h5OwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xh
c3MgV2ViUHJvY2Vzc1Bvb2w7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7Ci1zdHJ1Y3QgQ29sb3JT
cGFjZURhdGE7CiBzdHJ1Y3QgV2ViSGl0VGVzdFJlc3VsdERhdGE7CiAKIGVudW0gY2xhc3MgQ29u
dGludWVVbnNhZmVMb2FkIDogYm9vbDsKQEAgLTMxMyw3ICszMTMsNyBAQCBwdWJsaWM6CiAKICAg
ICBOU1ZpZXcgKmhpdFRlc3QoQ0dQb2ludCk7CiAKLSAgICBDb2xvclNwYWNlRGF0YSBjb2xvclNw
YWNlKCk7CisgICAgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UoKTsK
IAogICAgIHZvaWQgc2V0VW5kZXJsYXlDb2xvcihOU0NvbG9yICopOwogICAgIE5TQ29sb3IgKnVu
ZGVybGF5Q29sb3IoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIs
NiBAQAogI2ltcG9ydCAiQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCIKICNpbXBvcnQg
IkFQSU5hdmlnYXRpb24uaCIKICNpbXBvcnQgIkFwcEtpdFNQSS5oIgotI2ltcG9ydCAiQ29sb3JT
cGFjZURhdGEuaCIKICNpbXBvcnQgIkNvcmVUZXh0SGVscGVycy5oIgogI2ltcG9ydCAiRm9udElu
Zm8uaCIKICNpbXBvcnQgIkZ1bGxzY3JlZW5DbGllbnQuaCIKQEAgLTkwLDYgKzg5LDcgQEAKICNp
bXBvcnQgPFdlYkNvcmUvQ29sb3JNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JTZXJpYWxp
emF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbXBvc2l0aW9uSGlnaGxpZ2h0Lmg+CisjaW1w
b3J0IDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9E
aWN0aW9uYXJ5TG9va3VwLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0RyYWdJdGVtLmg+CkBAIC0yNTAwLDcgKzI1MDAsNyBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjpwb3N0RmFrZU1vdXNlTW92ZWRFdmVuCiAgICAgbV9wYWdlLT5oYW5kbGVNb3VzZUV2ZW50
KHdlYkV2ZW50KTsKIH0KIAotQ29sb3JTcGFjZURhdGEgV2ViVmlld0ltcGw6OmNvbG9yU3BhY2Uo
KQorV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIFdlYlZpZXdJbXBsOjpjb2xvclNwYWNl
KCkKIHsKICAgICBpZiAoIW1fY29sb3JTcGFjZSkgewogICAgICAgICBpZiAobV90YXJnZXRXaW5k
b3dGb3JNb3ZlUHJlcGFyYXRpb24pCkBAIC0yNTExLDEwICsyNTExLDcgQEAgQ29sb3JTcGFjZURh
dGEgV2ViVmlld0ltcGw6OmNvbG9yU3BhY2UoKQogICAgICAgICAgICAgbV9jb2xvclNwYWNlID0g
W05TU2NyZWVuIG1haW5TY3JlZW5dLmNvbG9yU3BhY2U7CiAgICAgfQogCi0gICAgQ29sb3JTcGFj
ZURhdGEgY29sb3JTcGFjZURhdGE7Ci0gICAgY29sb3JTcGFjZURhdGEuY2dDb2xvclNwYWNlID0g
W21fY29sb3JTcGFjZSBDR0NvbG9yU3BhY2VdOwotCi0gICAgcmV0dXJuIGNvbG9yU3BhY2VEYXRh
OworICAgIHJldHVybiBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgeyBbbV9jb2xvclNw
YWNlIENHQ29sb3JTcGFjZV0gfTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6c2V0VW5kZXJsYXlD
b2xvcihOU0NvbG9yICp1bmRlcmxheUNvbG9yKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhv
c3QubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2
ICszNSw3IEBACiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQ
cm94eS5oIgogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisjaW1wb3J0IDxXZWJD
b3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0Nv
bnRleHRDRy5oPgogI2ltcG9ydCA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KICNpbXBvcnQgPFdlYkNv
cmUvUGxhdGZvcm1MYXllci5oPgpAQCAtMzE3LDcgKzMxOCw3IEBAIHN0YXRpYyB2b2lkIHJlY3Vy
c2l2ZWx5TWFwSU9TdXJmYWNlQmFja2kKIHsKICAgICBpZiAobGF5ZXIuY29udGVudHMgJiYgQ0ZH
ZXRUeXBlSUQoKF9fYnJpZGdlIENGVHlwZVJlZilsYXllci5jb250ZW50cykgPT0gQ0FNYWNoUG9y
dEdldFR5cGVJRCgpKSB7CiAgICAgICAgIE1hY2hTZW5kUmlnaHQgcG9ydCA9IE1hY2hTZW5kUmln
aHQ6OmNyZWF0ZShDQU1hY2hQb3J0R2V0UG9ydCgoX19icmlkZ2UgQ0FNYWNoUG9ydFJlZilsYXll
ci5jb250ZW50cykpOwotICAgICAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6
OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShwb3J0KSwgc1JHQkNvbG9yU3BhY2VSZWYoKSk7
CisgICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNl
bmRSaWdodChXVEZNb3ZlKHBvcnQpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSk7CiAgICAgICAgIGxheWVyLmNvbnRlbnRzID0gc3VyZmFjZSA/IHN1cmZhY2UtPmFzTGF5
ZXJDb250ZW50cygpIDogbmlsOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCSh3b3JraW5nIGNv
cHkpCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1ZpZXdJbldpbmRvdygp
IG92ZXJyaWRlOwogICAgIGJvb2wgaXNWaXN1YWxseUlkbGUoKSBvdmVycmlkZTsKICAgICBMYXll
ckhvc3RpbmdNb2RlIHZpZXdMYXllckhvc3RpbmdNb2RlKCkgb3ZlcnJpZGU7Ci0gICAgQ29sb3JT
cGFjZURhdGEgY29sb3JTcGFjZSgpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6OkRlc3RpbmF0aW9u
Q29sb3JTcGFjZSBjb2xvclNwYWNlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRSZW1vdGVMYXll
clRyZWVSb290Tm9kZShSZW1vdGVMYXllclRyZWVOb2RlKikgb3ZlcnJpZGU7CiAgICAgQ0FMYXll
ciAqYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpIGNvbnN0IG92ZXJyaWRlOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFj
Lm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2lt
cG9ydCAiQVBJSGl0VGVzdFJlc3VsdC5oIgogI2ltcG9ydCAiQXBwS2l0U1BJLmgiCi0jaW1wb3J0
ICJDb2xvclNwYWNlRGF0YS5oIgogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAi
RG93bmxvYWRQcm94eS5oIgogI2ltcG9ydCAiRHJhd2luZ0FyZWFQcm94eS5oIgpAQCAtNjYsNiAr
NjUsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Db2xvck1hYy5oPgogI2ltcG9ydCA8V2ViQ29yZS9DdXJzb3IuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RpY3Rpb25hcnlM
b29rdXAuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0l0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUv
RmxvYXRSZWN0Lmg+CkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6dmll
d1dpbGxNb3ZlVG9Bbm90aAogICAgIGNsZWFyQWxsRWRpdENvbW1hbmRzKCk7CiB9CiAKLUNvbG9y
U3BhY2VEYXRhIFBhZ2VDbGllbnRJbXBsOjpjb2xvclNwYWNlKCkKK1dlYkNvcmU6OkRlc3RpbmF0
aW9uQ29sb3JTcGFjZSBQYWdlQ2xpZW50SW1wbDo6Y29sb3JTcGFjZSgpCiB7CiAgICAgcmV0dXJu
IG1faW1wbC0+Y29sb3JTcGFjZSgpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
UHJveHkubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw3ICsyOCw2IEBACiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAotI2ltcG9ydCAi
Q29sb3JTcGFjZURhdGEuaCIKICNpbXBvcnQgIkRyYXdpbmdBcmVhTWVzc2FnZXMuaCIKICNpbXBv
cnQgIkRyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oIgogI2ltcG9ydCAiTGF5ZXJUcmVlQ29udGV4
dC5oIgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5
TWFjLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2ViUGFnZVByb3h5TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYg
UExBVEZPUk0oTUFDKQogCiAjaW1wb3J0ICJBUElVSUNsaWVudC5oIgotI2ltcG9ydCAiQ29sb3JT
cGFjZURhdGEuaCIKICNpbXBvcnQgIkNvbm5lY3Rpb24uaCIKICNpbXBvcnQgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbXBvcnQgIkVkaXRvclN0YXRlLmgiCkBAIC01Miw2ICs1MSw3IEBACiAjaW1wb3J0
ICJXZWJQcmVmZXJlbmNlc0tleXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2lt
cG9ydCA8V2ViQ29yZS9BdHRyaWJ1dGVkU3RyaW5nLmg+CisjaW1wb3J0IDxXZWJDb3JlL0Rlc3Rp
bmF0aW9uQ29sb3JTcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5TG9va3VwLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdJdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNz
TGF5ZXIuaD4KQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXNzaXN0aXZl
VGVjaG5vbG9neU1hCiAgICAgcGFnZUNsaWVudCgpLmFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmly
c3RSZXNwb25kZXIoKTsKIH0KIAotQ29sb3JTcGFjZURhdGEgV2ViUGFnZVByb3h5Ojpjb2xvclNw
YWNlKCkKK1dlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBXZWJQYWdlUHJveHk6OmNvbG9y
U3BhY2UoKQogewogICAgIHJldHVybiBwYWdlQ2xpZW50KCkuY29sb3JTcGFjZSgpOwogfQpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNjM0LDggKzI2MzQsNiBAQAogCQkxQTI1NkUz
NjE4QTFBNzg4MDA2RkI5MjIgLyogV0tOYXZpZ2F0aW9uQWN0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdLTmF2aWdhdGlvbkFjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQTI1NkUzOTE4QTFBN0RGMDA2RkI5MjIgLyogV0tOYXZpZ2F0aW9uQWN0
aW9uSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tOYXZpZ2F0
aW9uQWN0aW9uSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyOEI4
Q0IxQzgwRUQ1OTAwNkZENzQzIC8qIFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkxQTJBNEFGRDE1ODY5MzkyMDA5MEM5RTkgLyogQ29sb3JT
cGFjZURhdGEubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb2xv
clNwYWNlRGF0YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUEyQTRBRkUxNTg2
OTM5MjAwOTBDOUU5IC8qIENvbG9yU3BhY2VEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENvbG9yU3BhY2VEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFBMkJCNkNDMTQxMTdBNUYwMDBGMzVENCAvKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyQkI2Q0UxNDExN0I0
RDAwMEYzNUQ0IC8qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQTJCQjZDRjE0MTE3QjREMDAwRjM1RDQgLyogUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291
cmNlcy9XZWJLaXQyL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaDsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTEwNDMwLDggKzEwNDI4LDYgQEAKIAkJCQk5
RjU0Rjg4RTE2NDg4RTg3MDA3REY4MUEgLyogQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbSAqLywKIAkJ
CQlDRTExQUQ1MTFDQkM0ODJGMDA2ODFFRTUgLyogQ29kZVNpZ25pbmcuaCAqLywKIAkJCQlDRTEx
QUQ0RjFDQkM0N0Y4MDA2ODFFRTUgLyogQ29kZVNpZ25pbmcubW0gKi8sCi0JCQkJMUEyQTRBRkUx
NTg2OTM5MjAwOTBDOUU5IC8qIENvbG9yU3BhY2VEYXRhLmggKi8sCi0JCQkJMUEyQTRBRkQxNTg2
OTM5MjAwOTBDOUU5IC8qIENvbG9yU3BhY2VEYXRhLm1tICovLAogCQkJCTFBQzc1QTFDMUIzMzY5
NUUwMDU2NzQ1QiAvKiBIYW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMubW0gKi8sCiAJCQkJMkQ1MDM2
NUQxQkNDNzkzRjAwRTIwQkIzIC8qIE5hdGl2ZVdlYkdlc3R1cmVFdmVudE1hYy5tbSAqLywKIAkJ
CQlDMDJCRkYxRDEyNTE1MDJFMDA5Q0NCRUEgLyogTmF0aXZlV2ViS2V5Ym9hcmRFdmVudE1hYy5t
bSAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsMTEgKzQ1LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKElt
YWdlQnVmZmVyUwogCiBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb25maWd1cmF0aW9uKGNvbnN0IFBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMpCiB7Ci0gICAgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGNvbmZpZ3Vy
YXRpb247Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgY29uZmlndXJhdGlvbi5jb2xvclNwYWNl
ID0geyBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSB9OwotI2VuZGlm
Ci0gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CisgICAgcmV0dXJuIHsgcGFyYW1ldGVycy5jb2xv
clNwYWNlIH07CiB9CiAKIEludFNpemUgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
OjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyArOTQs
NyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnByZXBhCiAgICAgICAgIG1h
cmtDb250ZXh0TG9zdCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8gZGlzcGxh
eUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGRpc3BsYXlC
dWZmZXJTZW5kUmlnaHQpLCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICBhdXRvIGRpc3BsYXlC
dWZmZXIgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShkaXNwbGF5QnVm
ZmVyU2VuZFJpZ2h0KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwog
ICAgIGlmIChkaXNwbGF5QnVmZmVyKSB7CiAgICAgICAgIGF1dG8mIHNjID0gcGxhdGZvcm1Td2Fw
Q2hhaW4oKTsKICAgICAgICAgc2MucmVjeWNsZUJ1ZmZlcigpOwpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgOiBwdWJsaWMg
V2UKICAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6cmVzb2x1dGlvblNjYWxl
OwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PiBj
cmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJDb3JlOjpQ
aXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgc3RhdGljIFJlZlB0cjxSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29s
b3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQogICAgIHsKICAgICAg
ICAgYXV0byBwYXJhbWV0ZXJzID0gV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0
ZXJzIHsgc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCB9Owog
ICAgICAgICBpZiAoQmFja2VuZFR5cGU6OmNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShwYXJhbWV0
ZXJzKS5pc0VtcHR5KCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3Jl
YXRlCiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q3JlYXRlSW1h
Z2VCdWZmZXIoaW1hZ2VCdWZmZXIubG9naWNhbFNpemUoKSwgaW1hZ2VCdWZmZXIucmVuZGVyaW5n
TW9kZSgpLCBpbWFnZUJ1ZmZlci5yZXNvbHV0aW9uU2NhbGUoKSwgaW1hZ2VCdWZmZXIuY29sb3JT
cGFjZSgpLCBpbWFnZUJ1ZmZlci5waXhlbEZvcm1hdCgpLCBpbWFnZUJ1ZmZlci5yZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIoKSksIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCksIElQQzo6
U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsK
IH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNy
ZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5k
ZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBj
b2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4g
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9h
dFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0IHBpeGVsRm9ybWF0KQogewogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTUgKzQzLDE5IEBA
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCiBuYW1l
c3BhY2UgRGlzcGxheUxpc3QgewogY2xhc3MgRGlzcGxheUxpc3Q7CiBjbGFzcyBJdGVtOwogfQor
CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7CiBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBQ
aXhlbEJ1ZmZlcjsKKwogZW51bSBjbGFzcyBBbHBoYVByZW11bHRpcGxpY2F0aW9uIDogdWludDhf
dDsKLWVudW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDogdWludDhfdDsKIGVudW0gY2xh
c3MgUmVuZGVyaW5nTW9kZSA6IGJvb2w7CisKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC05
Miw3ICs5Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCiAgICAgLy8gTWVzc2FnZXMgdG8g
YmUgc2VudC4KLSAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlLCBXZWJD
b3JlOjpQaXhlbEZvcm1hdCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVh
dGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5kZXJp
bmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9u
Q29sb3JTcGFjZSYsIFdlYkNvcmU6OlBpeGVsRm9ybWF0KTsKICAgICBTdHJpbmcgZ2V0RGF0YVVS
TEZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4g
cXVhbGl0eSwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uLCBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIFZlY3Rvcjx1aW50OF90PiBnZXREYXRhRm9ySW1hZ2VC
dWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpGbHVzaElkZW50aWZpZXIgZmx1c2hEaXNwbGF5TGlzdEFuZENvbW1pdChjb25zdCBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29j
b2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2Nv
YS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJl
YWJsZU1hcHAKICAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKGJhY2tlbmRT
aXplLCBiYWNrZW5kU2l6ZSwgY2FjaGVkQ0dDb2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JTcGFj
ZSksIElPU3VyZmFjZTo6Zm9ybWF0Rm9yUGl4ZWxGb3JtYXQocGFyYW1ldGVycy5waXhlbEZvcm1h
dCkpOworICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKGJhY2tlbmRTaXplLCBi
YWNrZW5kU2l6ZSwgcGFyYW1ldGVycy5jb2xvclNwYWNlLCBJT1N1cmZhY2U6OmZvcm1hdEZvclBp
eGVsRm9ybWF0KHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQpKTsKICAgICBpZiAoIXN1cmZhY2UpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC02NSw3ICs2NSw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCi0gICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdU
Rk1vdmUoV1RGOjpnZXQ8TWFjaFNlbmRSaWdodD4oaGFuZGxlKSksIGNhY2hlZENHQ29sb3JTcGFj
ZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpKTsKKyAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6
OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShXVEY6OmdldDxNYWNoU2VuZFJpZ2h0PihoYW5k
bGUpKSwgcGFyYW1ldGVycy5jb2xvclNwYWNlKTsKICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUlt
YWdlRGVjb2RlckFWRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEzICsyOCwxMiBAQAogCiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBIQVZFKEFWQVNTRVRSRUFERVIpCiAKLSNpbmNsdWRl
ICJDb2xvclNwYWNlRGF0YS5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9BVkFzc2V0TUlNRVR5cGVDYWNoZS5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvQ29sb3JTcGFjZUNHLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lPU3VyZmFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SW1hZ2VUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgpAQCAt
MTY4LDE0ICsxNjcsMTQgQEAgUGxhdGZvcm1JbWFnZVB0ciBSZW1vdGVJbWFnZURlY29kZXJBVkY6
OgogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIE9wdGlvbmFsPE1hY2hTZW5kUmlnaHQ+
IHNlbmRSaWdodDsKLSAgICAgICAgQ29sb3JTcGFjZURhdGEgY29sb3JTcGFjZTsKKyAgICAgICAg
T3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlOwogICAgICAgICBpZiAo
IW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OkNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KG1faWRl
bnRpZmllciwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OkNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4OjpSZXBseShzZW5kUmlnaHQsIGNvbG9yU3BhY2UpLCAwKSkK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoIXNlbmRSaWdodCkKKyAgICAgICAg
aWYgKCFzZW5kUmlnaHQgfHwgIWNvbG9yU3BhY2UpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJp
Z2h0KFdURk1vdmUoKnNlbmRSaWdodCksIGNvbG9yU3BhY2UuY2dDb2xvclNwYWNlLmdldCgpKTsK
KyAgICAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2Vu
ZFJpZ2h0KFdURk1vdmUoKnNlbmRSaWdodCksIFdURk1vdmUoKmNvbG9yU3BhY2UpKTsKICAgICAg
ICAgaWYgKCFzdXJmYWNlKQogICAgICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
Y29jb2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0JKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgUmVm
UHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllclByaXZhdGVSZQogICAgIGlmICghc2VuZFJpZ2h0
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6
OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKCpzZW5kUmlnaHQpLCBzUkdC
Q29sb3JTcGFjZVJlZigpKTsKKyAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6
OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZSgqc2VuZFJpZ2h0KSwgV2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKQEAgLTkxLDcgKzkxLDcgQEAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJS
ZWY+IE1lZGlhUGxheWVyUAogICAgIGlmICghc2VuZFJpZ2h0KQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJv
bVNlbmRSaWdodChXVEZNb3ZlKCpzZW5kUmlnaHQpLCBudWxscHRyKTsKKyAgICBhdXRvIHN1cmZh
Y2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZSgqc2Vu
ZFJpZ2h0KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgIGlm
ICghc3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5tbQkod29ya2luZyBjb3B5KQpAQCAtNjQ2LDcgKzY0Niw3IEBAIGlubGluZSBQREZQbHVnaW46
OlBERlBsdWdpbihXZWJGcmFtZSYgZnIKICAgICBbbV9jb250YWluZXJMYXllciBhZGRTdWJsYXll
cjptX3Njcm9sbENvcm5lckxheWVyLmdldCgpXTsKICAgICBpZiAoW21fcGRmTGF5ZXJDb250cm9s
bGVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0RGV2aWNlQ29sb3JTcGFjZTopXSkg
ewogICAgICAgICBhdXRvIHZpZXcgPSBmcmFtZS5jb3JlRnJhbWUoKS0+dmlldygpOwotICAgICAg
ICBbbV9wZGZMYXllckNvbnRyb2xsZXIgc2V0RGV2aWNlQ29sb3JTcGFjZTpzY3JlZW5Db2xvclNw
YWNlKHZpZXcpXTsKKyAgICAgICAgW21fcGRmTGF5ZXJDb250cm9sbGVyIHNldERldmljZUNvbG9y
U3BhY2U6c2NyZWVuQ29sb3JTcGFjZSh2aWV3KS5wbGF0Zm9ybUNvbG9yU3BhY2UoKV07CiAgICAg
fQogCiAjaWYgSEFWRShJTkNSRU1FTlRBTF9QREZfQVBJUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TaGFy
ZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTIgKzU3LDcgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gY3JlYXRlU2hhcmVhYmxlQgogICAgIH0KIAogICAgIC8vIEZJWE1FOiBPbmx5IHNlbGVjdCBF
eHRlbmRlZENvbG9yIG9uIGltYWdlcyBrbm93biB0byBuZWVkIHdpZGUgZ2FtdXQuCi0gICAgU2hh
cmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGJpdG1hcENvbmZpZ3VyYXRpb247Ci0jaWYgVVNF
KENHKQotICAgIGJpdG1hcENvbmZpZ3VyYXRpb24uY29sb3JTcGFjZS5jZ0NvbG9yU3BhY2UgPSBz
Y3JlZW5Db2xvclNwYWNlKHJlbmRlckltYWdlLmZyYW1lKCkubWFpbkZyYW1lKCkudmlldygpKTsK
LSNlbmRpZgotCi0gICAgYXV0byBzaGFyZWRCaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZVNoYXJlYWJsZShJbnRTaXplKGJpdG1hcFNpemUpLCBiaXRtYXBDb25maWd1cmF0aW9uKTsKKyAg
ICBhdXRvIHNoYXJlZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKElu
dFNpemUoYml0bWFwU2l6ZSksIHsgc2NyZWVuQ29sb3JTcGFjZShyZW5kZXJJbWFnZS5mcmFtZSgp
Lm1haW5GcmFtZSgpLnZpZXcoKSkgfSk7CiAgICAgaWYgKCFzaGFyZWRCaXRtYXApCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyNyw3ICs5MjcsNyBAQCBXZWJDb3Jl
OjpEaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KiBXCiAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwg
UmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29uc3QK
K1JlZlB0cjxJbWFnZUJ1ZmZlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgUmVuZGVy
aW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0
CiB7CiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zaG91bGRVc2VSZW1vdGVSZW5k
ZXJpbmdGb3IocHVycG9zZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQs
NyArMjQ0LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JG
YWN0b3J5KiBkaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KCkgY29uc3QgZmluYWw7CiAKICNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5k
ZXJpbmdNb2RlLCBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQp
IGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1h
Z2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9k
ZSwgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25z
dCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCkg
Y29uc3QgZmluYWw7CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQgaG9z
dFdpbmRvd0Rpc3BsYXlJRCkgY29uc3QgZmluYWw7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkRyYWdDbGllbnRNYWMubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtNjgsOSArNjgsNyBAQCB1c2luZyBEcmFnSW1hZ2UgPSBDR0ltYWdlUmVmOwogCiBz
dGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY29udmVydERyYWdJbWFnZVRvQml0bWFwKERy
YWdJbWFnZSBpbWFnZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgRnJhbWUmIGZyYW1lKQogewotICAg
IFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBiaXRtYXBDb25maWd1cmF0aW9uOwotICAg
IGJpdG1hcENvbmZpZ3VyYXRpb24uY29sb3JTcGFjZS5jZ0NvbG9yU3BhY2UgPSBzY3JlZW5Db2xv
clNwYWNlKGZyYW1lLm1haW5GcmFtZSgpLnZpZXcoKSk7Ci0gICAgYXV0byBiaXRtYXAgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzaXplLCBiaXRtYXBDb25maWd1cmF0aW9uKTsK
KyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNpemUs
IHsgc2NyZWVuQ29sb3JTcGFjZShmcmFtZS5tYWluRnJhbWUoKS52aWV3KCkpIH0pOwogICAgIGlm
ICghYml0bWFwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIERlY29kZXI7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIERpc3BsYXlS
ZWZyZXNoTW9uaXRvcjsKIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVWaWV3OwpAQCAtNjAsNyAr
NjEsNiBAQCBzdHJ1Y3QgVmlld3BvcnRBdHRyaWJ1dGVzOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotc3RydWN0IENvbG9yU3BhY2VEYXRhOwogY2xhc3MgTGF5ZXJUcmVlSG9zdDsKIHN0cnVjdCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IFdlYlByZWZlcmVuY2VzU3RvcmU7CkBA
IC0xODAsNyArMTgwLDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBV
c2VkIGJ5IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLgogICAgIHZpcnR1YWwgdm9pZCBz
ZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldENvbG9y
U3BhY2UoY29uc3QgQ29sb3JTcGFjZURhdGEmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29s
b3JTcGFjZShPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+KSB7IH0KIAog
ICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29y
ZTo6RmxvYXRQb2ludCBvcmlnaW4pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21taXRUcmFuc2ll
bnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIHsgfQpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2lu
Z0FyZWEubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw3ICszMSw3IEBAIG1lc3NhZ2VzIC0+IERyYXdpbmdBcmVhIE5vdFJlZkNvdW50ZWQgewog
ICAgIC8vIFVzZWQgYnkgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuCiAgICAgVXBkYXRl
R2VvbWV0cnkoV2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6ZSwgYm9vbCBmbHVzaFN5bmNocm9ub3Vz
bHksIE1hY2hTZW5kUmlnaHQgZmVuY2VQb3J0KQogICAgIFNldERldmljZVNjYWxlRmFjdG9yKGZs
b2F0IGRldmljZVNjYWxlRmFjdG9yKQotICAgIFNldENvbG9yU3BhY2Uoc3RydWN0IFdlYktpdDo6
Q29sb3JTcGFjZURhdGEgY29sb3JTcGFjZSkKKyAgICBTZXRDb2xvclNwYWNlKHN0cnVjdCBPcHRp
b25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2UpCiAgICAgU2V0
Vmlld0V4cG9zZWRSZWN0KE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRS
ZWN0KQogCiAgICAgQWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZs
b2F0UG9pbnQgb3JpZ2luKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTk4LDcgKzI1OTgs
NyBAQCBzdGF0aWMgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIHNuCiAgICAgU2hhcmVh
YmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CiAjaWYgVVNFKENHKQogICAg
IGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zVXNlU2NyZWVuQ29sb3JTcGFjZSkKLSAgICAg
ICAgY29uZmlndXJhdGlvbi5jb2xvclNwYWNlLmNnQ29sb3JTcGFjZSA9IHNjcmVlbkNvbG9yU3Bh
Y2UocGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCkpOworICAgICAgICBjb25maWd1
cmF0aW9uLmNvbG9yU3BhY2UgPSBzY3JlZW5Db2xvclNwYWNlKHBhZ2UuY29yZVBhZ2UoKS0+bWFp
bkZyYW1lKCkudmlldygpKTsKICNlbmRpZgogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwogfQpJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5OCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzdXNwZW5kUGFpbnRpbmcoKTsKICAgICB2b2lkIHJlc3VtZVBhaW50
aW5nKCk7CiAgICAgdm9pZCBzZXRMYXllckhvc3RpbmdNb2RlKExheWVySG9zdGluZ01vZGUpIG92
ZXJyaWRlOwotICAgIHZvaWQgc2V0Q29sb3JTcGFjZShjb25zdCBDb2xvclNwYWNlRGF0YSYpIG92
ZXJyaWRlOworICAgIHZvaWQgc2V0Q29sb3JTcGFjZShPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5h
dGlvbkNvbG9yU3BhY2U+KSBvdmVycmlkZTsKICAgICB2b2lkIGFkZEZlbmNlKGNvbnN0IFdURjo6
TWFjaFNlbmRSaWdodCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBhZGRUcmFuc2FjdGlvbkNhbGxi
YWNrSUQoQ2FsbGJhY2tJRCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIFBMQVRGT1JNKE1BQykKIAotI2lt
cG9ydCAiQ29sb3JTcGFjZURhdGEuaCIKICNpbXBvcnQgIkRpc3BsYXlSZWZyZXNoTW9uaXRvck1h
Yy5oIgogI2ltcG9ydCAiRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJMYXll
ckhvc3RpbmdDb250ZXh0LmgiCkBAIC00NSw2ICs0NCw3IEBACiAjaW1wb3J0IDxwYWwvc3BpL2Nv
Y29hL1F1YXJ0ekNvcmVTUEkuaD4KICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9EZWJ1Z1BhZ2VPdmVybGF5cy5oPgorI2ltcG9ydCA8V2ViQ29yZS9E
ZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4
dC5oPgpAQCAtOTEsNiArOTEsNyBAQCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6VGls
ZWRDb3JlCiAgICAgfSk7CiAKICAgICB1cGRhdGVMYXllckhvc3RpbmdDb250ZXh0KCk7CisgICAg
CiAgICAgc2V0Q29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpOwogCiAgICAgaWYgKGF1
dG8gdmlld0V4cG9zZWRSZWN0ID0gcGFyYW1ldGVycy52aWV3RXhwb3NlZFJlY3QpCkBAIC02NTAs
OSArNjUxLDkgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0TAogICAg
IHNlbmQoTWVzc2FnZXM6OkRyYXdpbmdBcmVhUHJveHk6OlVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdNb2RlKDAsIGxheWVyVHJlZUNvbnRleHQpKTsKIH0KIAotdm9pZCBUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYTo6c2V0Q29sb3JTcGFjZShjb25zdCBDb2xvclNwYWNlRGF0YSYgY29s
b3JTcGFjZSkKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldENvbG9yU3Bh
Y2UoT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlKQog
ewotICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0Q29sb3JTcGFjZShjb2xvclNwYWNlLmNn
Q29sb3JTcGFjZS5nZXQoKSk7CisgICAgbV9sYXllckhvc3RpbmdDb250ZXh0LT5zZXRDb2xvclNw
YWNlKGNvbG9yU3BhY2UgPyBjb2xvclNwYWNlLT5wbGF0Zm9ybUNvbG9yU3BhY2UoKSA6IG51bGxw
dHIpOwogfQogCiBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yPiBUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Y3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRm
b3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDI3NzkyMCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA1LTIyICBTYW0gV2VpbmlnICA8
d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBDb252ZXJ0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSBmcm9tIGFuIGVudW0gdG8gY2xhc3Mgd3JhcHBpbmcgYSBwbGF0Zm9ybSBjb2xvciBzcGFjZSAo
Q0dDb2xvclNwYWNlUmVmIGZvciBDRyBwb3J0cywgZXRjLikKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjE0MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1l
bnVDbGllbnQubW06CisgICAgICAgIChXZWJDb250ZXh0TWVudUNsaWVudDo6aW1hZ2VGb3JDdXJy
ZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKToKKyAgICAgICAgVXBkYXRlIGZvciBuZXcgRGVz
dGluYXRpb25Db2xvclNwYWNlIGNsYXNzLgorCiAyMDIxLTA1LTIyICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBMb2NrSG9sZGVyIHdpdGggTG9ja2Vy
IGluIGxvY2FsIHZhcmlhYmxlcwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0JKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0JpdG1hcEltYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbnRl
eHRNZW51Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbnRleHRNZW51Q29udHJvbGxlci5oPgorI2lt
cG9ydCA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RG9jdW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RnJhbWVWaWV3Lmg+CkBAIC0yMTMsNyArMjE0LDcgQEAgUmV0YWluUHRyPE5TSW1hZ2U+IFdlYkNv
bnRleHRNZW51Q2xpZW50OgogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgLy8gVGhpcyBpcyBl
ZmZlY3RpdmVseSBhIHNuYXBzaG90LCBhbmQgd2lsbCBiZSBwYWludGVkIGluIGFuIHVuYWNjZWxl
cmF0ZWQgZmFzaGlvbiBpbiBsaW5lIHdpdGggRnJhbWVTbmFwc2hvdHRpbmcuCi0gICAgYXV0byBi
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpV
bmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0
OjpCR1JBOCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJlY3Quc2l6
ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuIG5pbDsKIApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjc3OTIwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDUtMjIgIFNhbSBXZWluaWcgIDx3ZWlu
aWdAYXBwbGUuY29tPgorCisgICAgICAgIENvbnZlcnQgRGVzdGluYXRpb25Db2xvclNwYWNlIGZy
b20gYW4gZW51bSB0byBjbGFzcyB3cmFwcGluZyBhIHBsYXRmb3JtIGNvbG9yIHNwYWNlIChDR0Nv
bG9yU3BhY2VSZWYgZm9yIENHIHBvcnRzLCBldGMuKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cv
RGlzcGxheUxpc3RUZXN0c0NHLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgor
ICAgICAgICBVcGF0ZSB0ZXN0IHRvIHVzZSBuZXcgRGVzdGluYXRpb25Db2xvclNwYWNlIHR5cGUu
CisKIDIwMjEtMDUtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzCkluZGV4
OiBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQko
cmV2aXNpb24gMjc3OTE5KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1BpeGVsRHVtcFN1
cHBvcnRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNiArMzgsNyBA
QAogI2ltcG9ydCA8Q29tbW9uQ3J5cHRvL0NvbW1vbkRpZ2VzdC5oPgogI2ltcG9ydCA8TW9iaWxl
Q29yZVNlcnZpY2VzL1VUQ29yZVR5cGVzLmg+CiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNv
cmUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dENHLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0lPU3VyZmFj
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgpAQCAtNzEsNyArNzIsNyBA
QCBSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0bWFwQ29udGV4CiAjZWxzZQogICAgIFdl
YkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0IHNuYXBzaG90Rm9ybWF0ID0gV2ViQ29yZTo6SU9TdXJm
YWNlOjpGb3JtYXQ6OkJHUkE7CiAjZW5kaWYKLSAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJ
T1N1cmZhY2U6OmNyZWF0ZShXZWJDb3JlOjpleHBhbmRlZEludFNpemUoc25hcHNob3RTaXplKSwg
V2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSwgc25hcHNob3RGb3JtYXQpOworICAgIGF1dG8g
c3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlKFdlYkNvcmU6OmV4cGFuZGVkSW50
U2l6ZShzbmFwc2hvdFNpemUpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgc25hcHNob3RGb3JtYXQpOwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjZ0ltYWdlID0g
c3VyZmFjZS0+Y3JlYXRlSW1hZ2UoKTsKIAogICAgIHZvaWQqIGJpdG1hcEJ1ZmZlciA9IG51bGxw
dHI7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxp
c3RUZXN0c0NHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIFVTRShDRykKIAorI2luY2x1
ZGUgPFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9E
aXNwbGF5TGlzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RSZXBsYXllci5oPgpAQCAtNDYsOCArNDcsOCBAQCBU
RVNUKERpc3BsYXlMaXN0VGVzdHMsIFJlcGxheVdpdGhNaXNzaW5nCiB7CiAgICAgRmxvYXRSZWN0
IGNvbnRleHRCb3VuZHMgeyAwLCAwLCBjb250ZXh0V2lkdGgsIGNvbnRleHRIZWlnaHQgfTsKIAot
ICAgIGF1dG8gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUo
a0NHQ29sb3JTcGFjZVNSR0IpKTsKLSAgICBhdXRvIGNnQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRt
YXBDb250ZXh0Q3JlYXRlKG51bGxwdHIsIGNvbnRleHRXaWR0aCwgY29udGV4dEhlaWdodCwgOCwg
NCAqIGNvbnRleHRXaWR0aCwgY29sb3JTcGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRp
cGxpZWRMYXN0KSk7CisgICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCk7CisgICAgYXV0byBjZ0NvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENy
ZWF0ZShudWxscHRyLCBjb250ZXh0V2lkdGgsIGNvbnRleHRIZWlnaHQsIDgsIDQgKiBjb250ZXh0
V2lkdGgsIGNvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCksIGtDR0ltYWdlQWxwaGFQcmVt
dWx0aXBsaWVkTGFzdCkpOwogICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0IHsgY2dDb250ZXh0
LmdldCgpIH07CiAKICAgICBhdXRvIGltYWdlQnVmZmVySWRlbnRpZmllciA9IFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKQEAgLTY5LDcgKzcwLDcgQEAgVEVTVChEaXNw
bGF5TGlzdFRlc3RzLCBSZXBsYXlXaXRoTWlzc2luZwogICAgIH0KIAogICAgIHsKLSAgICAgICAg
YXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoeyAxMDAsIDEwMCB9LCBSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Is
IFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKHsgMTAwLCAxMDAgfSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwg
MSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgSW1hZ2VCdWZmZXJI
YXNoTWFwIGltYWdlQnVmZmVyTWFwOwogICAgICAgICBpbWFnZUJ1ZmZlck1hcC5zZXQoaW1hZ2VC
dWZmZXJJZGVudGlmaWVyLCBpbWFnZUJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429466</attachid>
            <date>2021-05-23 08:50:32 -0700</date>
            <delta_ts>2021-05-23 10:12:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226143-20210523085031.patch</filename>
            <type>text/plain</type>
            <size>276017</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5NSBAQAorMjAyMS0wNS0yMiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdyYXBwaW5nIGEgcGxhdGZvcm0gY29sb3Ig
c3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0Yy4pCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxNDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIGVudW1lcmF0aW9uIGJh
c2VkIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB3aXRoIGEgc3RydWN0IHdyYXBwaW5nCisgICAgICAg
IGEgcGxhdGZvcm0gY29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0
Yy4pLiBGb3IgcG9ydHMKKyAgICAgICAgdGhhdCBkb24ndCBoYXZlIGEgcGxhdGZvcm0gbGV2ZWwg
Y29sb3Igc3BhY2UgdHlwZSwgYSBidWlsdGluIFBsYXRmb3JtQ29sb3JTcGFjZQorICAgICAgICB0
eXBlIGlzIHByb3ZpZGVkIHRoYXQgaXMganVzdCB0aGUgb2xkIGVudW0gcmVuYW1lZCB0byBQbGF0
Zm9ybUNvbG9yU3BhY2U6Ok5hbWUuCisKKyAgICAgICAgVGhlIGdvYWwgb2YgdGhpcyBjaGFuZ2Ug
aXMgdG8gdW5pZnkgdGhlIGN1cnJlbnRseSBiaWZ1cmNhdGVkIGNvbmNlcHQgb2YgYW4KKyAgICAg
ICAgSW1hZ2VCdWZmZXIncyBjb2xvciBzcGFjZSwgd2hpY2ggcHJldmlvc2x5IGNvdWxkIGVpdGhl
ciBiZSBiYXNlZCBvbiB0aGUgCisgICAgICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSAoYW5kIHJl
ZmxlY3RlZCBpbiB0aGUgY29sb3JTcGFjZSgpIG1lbWJlciBmdW5jdGlvbiksCisgICAgICAgIG9y
IChmb3IgQ0cgcG9ydHMpIGJhc2VkIG9uIGEgQ0dDb2xvclNwYWNlUmVmLCB3aXRoIHRoZSBjb2xv
clNwYWNlKCkgZnVuY3Rpb24KKyAgICAgICAgcmV0dXJuaW5nIHNSR0IgZXZlbiBpZiB0aGUgSW1h
Z2VCdWZmZXIgd2FzIG5vdC4gCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAq
IE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6
Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFydHdvcmtJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIFNvdXJj
ZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wSW1hZ2VCaXRtYXApOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRJbWFnZUJpdG1hcCk6CisgICAgICAgICogY3Nz
L0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1h
Z2VWYWx1ZTo6aW1hZ2UpOgorICAgICAgICAqIGh0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRDYW52YXM6OmNvcGllZEltYWdlIGNvbnN0KToK
KyAgICAgICAgKiBodG1sL0N1c3RvbVBhaW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3VzdG9tUGFpbnRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZh
c0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnRvTWVk
aWFTYW1wbGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUlt
YWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlQnVmZmVyRm9yUGFpbnRp
bmcgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvSW1hZ2VCaXRtYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCaXRtYXA6OmNy
ZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVhdGVQ
cm9taXNlKToKKyAgICAgICAgKiBodG1sL09mZnNjcmVlbkNhbnZhcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpPZmZzY3JlZW5DYW52YXM6OmNvbW1pdFRvUGxhY2Vob2xkZXJDYW52YXMpOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6Y29sb3JTcGFjZSBjb25zdCk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgICogaHRtbC9j
YW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dDo6c2V0T3V0cHV0Qml0bWFwKToKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp0b0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1ByZWRlZmlu
ZWRDb2xvclNwYWNlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFj
ZS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VC
dWZmZXJDYWNoZTo6aW1hZ2VCdWZmZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29u
dHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlVGV4dFRyYWNrUmVwcmVz
ZW50YXRpb25JbWFnZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNQYXR0ZXJu
KToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6
OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5oOgorICAg
ICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGll
bnQ6OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lU25hcHNo
b3R0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXAp
OgorICAgICAgICAqIHBhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzYW1wbGVDb2xvcik6CisgICAgICAgICogcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdCk6CisgICAgICAg
ICogcGxhdGZvcm0vSG9zdFdpbmRvdy5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtQ29s
b3JTcGFjZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29sb3JTcGFjZTo6
Z2V0IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1NjcmVlblByb3BlcnRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVl
blByb3BlcnRpZXM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5EYXRh
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVuRGF0YTo6ZGVjb2RlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bG9yOjp0b0NvbG9yQ29tcG9uZW50c0luQ29sb3JTcGFjZSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ckNvbnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVyQ29sb3JDb21wb25lbnRz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9Db2xvclNwYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29u
Y3JldGVJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0
ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6
ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29s
b3JTcGFjZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKToKKyAgICAgICAgKFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGlu
ZWFyU1JHQik6CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3Bs
YXlQMyk6CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRlc3RpbmF0
aW9uQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAg
KFdlYkNvcmU6Om9wZXJhdG9yIT0pOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpwbGF0Zm9ybUNvbG9y
U3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpk
ZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNvcHlSZWN0VG9CdWZmZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQaXhlbEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlckJhY2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXJCYWNrZW5kOjpjb2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UGl4ZWxCdWZmZXI6
OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJz
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VWSW1hZ2VDR0ltYWdlRm9ybWF0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5oOgorICAgICAgICAo
V2ViQ29yZTo6UGl4ZWxCdWZmZXJGb3JtYXQ6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNm
ZXJCR1JBUGl4ZWxCdWZmZXJUb0lPU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVW
aWRlb1NhbXBsZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxl
OjpSZW1vdGVWaWRlb1NhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBs
ZTo6c3VyZmFjZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlk
ZW9TYW1wbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OmdldFNjcmF0Y2hCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGls
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhU
aWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6Ymx1clNoYWRvd0J1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3U2hhZG93TGF5ZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQ
YWludFJlc3VsdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm9CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9C
YWNrZW5kOjp0cmFuc2Zvcm1Db2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0NvbG9yQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvQ0dDb21w
YXRpYmxlQ29tcG9uZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDR0NvbG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmg6CisgICAgICAgIChXZWJDb3Jl
OjpjYWNoZWRDR0NvbG9yU3BhY2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnBhaW50VG9DYW52YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3VyZmFjZU1h
dGNoZXNQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZVBvb2w6OnRha2VT
dXJmYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29weUNHSW1hZ2VG
b3JFbmNvZGluZyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJD
R0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6
OnNpbmdsZVBpeGVsU29saWRDb2xvciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVy
QmFja2luZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpzdXJmYWNlRnJvbVBvb2wpOgorICAgICAgICAoV2ViQ29y
ZTo6SU9TdXJmYWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVh
dGVGcm9tU2VuZFJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJv
bVN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tSW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tUGl4ZWxCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpJT1N1cmZhY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SU9TdXJmYWNlOjplbnN1cmVQbGF0Zm9ybUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
SU9TdXJmYWNlOjptaWdyYXRlQ29sb3JTcGFjZVRvUHJvcGVydGllcyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1t
OgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OnJlbmRl
clRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJh
bnNmZXJTZXNzaW9uVlQubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVRyYW5zZmVyU2Vzc2lv
blZUOjpjcmVhdGVQaXhlbEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3Yv
UGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZl
ckNvbmZvcm1lckNWOjpjcmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpkZXN0cm95
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkJlZ2luQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmNvbG9yU3BhY2UgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkJlZ2luQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkJl
Z2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkdldFBpeGVsQnVmZmVyOjpHZXRQaXhlbEJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6R2V0UGl4ZWxCdWZmZXI6Om91dHB1dEZvcm1hdCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6R2V0UGl4ZWxCdWZmZXI6OmVuY29kZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6R2V0UGl4ZWxCdWZmZXI6OmRlY29k
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpj
bGlwVG9EcmF3aW5nQ29tbWFuZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURp
c3BsYWNlbWVudE1hcDo6c2V0UmVzdWx0Q29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVUaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRQaXhl
bEJ1ZmZlclRvQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNv
bnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJF
ZmZlY3Q6OmNvcHlDb252ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpjb3B5Q29udmVydGVkUGl4ZWxCdWZmZXJUb0Rlc3RpbmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6cmVxdWlyZXNQaXhlbEJ1ZmZl
ckNvbG9yU3BhY2VDb252ZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6
dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJFZmZlY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6
b3BlcmF0aW5nQ29sb3JTcGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OnNldE9wZXJhdGluZ0NvbG9yU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZm
ZWN0OjpyZXN1bHRDb2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVm
ZmVjdDo6c2V0UmVzdWx0Q29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9Tb3VyY2VHcmFwaGljLmg6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGlj
OjpTb3VyY2VHcmFwaGljKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5H
dGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL1BsYXRmb3JtU2NyZWVuSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2Ny
ZWVuQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0U2NyZWVuUHJvcGVydGll
cyk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6Y29sbGVjdFNjcmVlblByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6
c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6VGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdXaXRoVmlld0lu
dG9Db250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlz
cGxheUNhcHR1cmVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVuRGlzcGxheUNhcHR1
cmVyTWFjOjpjcmVhdGVEaXNwbGF5U3RyZWFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZVZpZGVvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGlt
ZVZpZGVvU291cmNlOjppbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vcGxh
eXN0YXRpb24vUGxhdGZvcm1TY3JlZW5QbGF5U3RhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzY3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGxhdGZvcm1TY3Jl
ZW5XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAg
ICogcGxhdGZvcm0vd3BlL1BsYXRmb3JtU2NyZWVuV1BFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNjcmVlbkNvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaDoK
KyAgICAgICAgKFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGE6OmRlY29k
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NGaWx0ZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ZpbHRlcjo6YnVpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjphbGxvY2F0ZUJh
Y2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6YXBwbHkp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpwYXR0ZXJuRm9yRGVzY3JpcHRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUaGVtZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFN5
c3RlbVByZXZpZXdCYWRnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50UHJvZ3Jlc3NCYXIpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlQ2xpcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNv
dXJjZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmJ1aWxkUHJpbWl0aXZlcyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVNYXNrQW5kU3dhcENvbnRleHRGb3JUZXh0R3JhZGllbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2Up
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250ZW50
SW50b01hc2tJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZU1hc2tlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0
ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3Jl
YXRlVGlsZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmlu
Z0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6
YnVmZmVyRm9yZWdyb3VuZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdD
b250ZXh0Lmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJ
bWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVJbWFnZTo6cGxhdGZv
cm1BcHBseVNvZnR3YXJlKToKKwogMjAyMS0wNS0yMiAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogQ29tcG9uZW50IGF0IGluZGV4
IDEgaXMgMS4wMDAwMDAgYW5kIGlzIGdyZWF0ZXIgdGhhbiB0aGUgYWxsb3dlZCBtYXhpbXVtIDEu
MDAwMDAwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTExOTcsNiArMTE5Nyw3
IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9EYXNo
QXJyYXkuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0RlY29kaW5nT3B0aW9ucy5oCisgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3Bs
YXlSZWZyZXNoTW9uaXRvckNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJl
ZnJlc2hNb25pdG9yRmFjdG9yeS5oCkBAIC0xMjkzLDYgKzEyOTQsNyBAQCBzZXQoV2ViQ29yZV9Q
UklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZm
ZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0LmgKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9QaXhlbEZvcm1hdC5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZv
cm1Db2xvclNwYWNlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2UuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaApJbmRleDogU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
OTUwLDYgKzE5NTAsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAogcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4
VGV4dENvbnRyb2xsZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJ
bWFnZS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdz
RGF0YVNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NSw3ICsyODUsNyBAQCB2b2lkIENs
aXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsCiAKICAgICAgICAgYXV0byBiaXRtYXBJ
bWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICAgICAgYml0bWFwSW1hZ2UtPnNldERh
dGEoV1RGTW92ZShidWZmZXJUb1Nhbml0aXplKSwgdHJ1ZSk7Ci0gICAgICAgIGF1dG8gaW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJpdG1hcEltYWdlLT5zaXplKCksIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CiAgICAgICAgIGlmICghaW1hZ2VCdWZmZXIpIHsKICAgICAgICAgICAgIG1fZGF0YSA9IHsgbnVs
bFN0cmluZygpIH07CiAgICAgICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFN
ZXRhZGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBBcnR3b3Jr
SW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlclRvU2FuaXRpemUgPSBtX2NhY2hlZEltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CiAgICAgYXV0
byBiaXRtYXBJbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICBiaXRtYXBJbWFnZS0+
c2V0RGF0YShXVEZNb3ZlKGJ1ZmZlclRvU2FuaXRpemUpLCB0cnVlKTsKLSAgICBhdXRvIGltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJp
bmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBp
eGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwg
MSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAg
ICAgaWYgKCFpbWFnZUJ1ZmZlcikgewogICAgICAgICBtX2NhbGxiYWNrKG51bGxwdHIpOwogICAg
ICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzkyMCkKKysr
IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MyBAQAorMjAyMS0wNS0yMiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAg
ICAgQ29udmVydCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdy
YXBwaW5nIGEgcGxhdGZvcm0gY29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9y
dHMsIGV0Yy4pCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjYxNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg6CisgICAgICAgIEFkZCBhZGRpb25hbCBT
UEkgZm9yIHdvcmtpbmcgd2l0aCBDR0NvbG9yU3BhY2VSZWZzLgorCiAyMDIxLTA1LTIxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gQWRv
cHQgUUxJdGVtIGluIFdLSW1hZ2VFeHRyYWN0aW9uUHJldmlld0NvbnRyb2xsZXIKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhp
Y3NTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMjQyLDYgKzI0Miw3IEBAIHR5cGVkZWYgdm9pZCAo
KkNHU05vdGlmeVByb2NQdHIpKENHU05vdGkKIAogV1RGX0VYVEVSTl9DX0JFR0lOCiAKK2Jvb2wg
Q0dDb2xvclRyYW5zZm9ybUNvbnZlcnRDb2xvckNvbXBvbmVudHMoQ0dDb2xvclRyYW5zZm9ybVJl
ZiwgQ0dDb2xvclNwYWNlUmVmLCBDR0NvbG9yUmVuZGVyaW5nSW50ZW50LCBjb25zdCBDR0Zsb2F0
IHNyY0NvbXBvbmVudHNbXSwgQ0dGbG9hdCBkc3RDb21wb25lbnRzW10pOwogQ0dDb2xvclJlZiBD
R0NvbG9yVHJhbnNmb3JtQ29udmVydENvbG9yKENHQ29sb3JUcmFuc2Zvcm1SZWYsIENHQ29sb3JS
ZWYsIENHQ29sb3JSZW5kZXJpbmdJbnRlbnQpOwogQ0dDb2xvclRyYW5zZm9ybVJlZiBDR0NvbG9y
VHJhbnNmb3JtQ3JlYXRlKENHQ29sb3JTcGFjZVJlZiwgQ0ZEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0
ZXMpOwogCkBAIC0yOTEsNiArMjkyLDggQEAgQ0dTdHlsZVJlZiBDR0dTdGF0ZUdldFN0eWxlKENH
R1N0YXRlUmVmKQogQ0dTdHlsZVR5cGUgQ0dTdHlsZUdldFR5cGUoQ0dTdHlsZVJlZik7CiBjb25z
dCB2b2lkICpDR1N0eWxlR2V0RGF0YShDR1N0eWxlUmVmKTsKIENHQ29sb3JSZWYgQ0dTdHlsZUdl
dENvbG9yKENHU3R5bGVSZWYpOworYm9vbCBDR0NvbG9yU3BhY2VFcXVhbFRvQ29sb3JTcGFjZShD
R0NvbG9yU3BhY2VSZWYsIENHQ29sb3JTcGFjZVJlZik7CitDRlN0cmluZ1JlZiBDR0NvbG9yU3Bh
Y2VDb3B5SUNDUHJvZmlsZURlc2NyaXB0aW9uKENHQ29sb3JTcGFjZVJlZik7CiAKICNpZiBIQVZF
KENHUEFUSF9HRVRfTlVNQkVSX09GX0VMRU1FTlRTKQogc2l6ZV90IENHUGF0aEdldE51bWJlck9m
RWxlbWVudHMoQ0dQYXRoUmVmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMzk5Niw2ICszOTk2LDcgQEAKIAkJQkMyM0YwREIwREFGRjRBNDAwOUZEQzkxIC8qIEdlbmVy
YXRlZEltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzIzRjBEQTBEQUZGNEE0MDA5RkRDOTEgLyogR2VuZXJhdGVkSW1hZ2UuaCAqLzsgfTsKIAkJ
QkMyNzRCMkYxNDBFQkVCMjAwRUFERkE2IC8qIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNzRCMkUxNDBF
QkVCMjAwRUFERkE2IC8qIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oICovOyB9OwogCQlCQzJD
QkY0RTE0MEYxQUJEMDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyQ0JGNEIxNDBGMUE2NTAwMzg3
OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuaCAqLzsgfTsKKwkJQkMyQ0NBMTAyNjU1RERCMjAw
QjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyQ0NBMEUyNjU1RERCMjAwQjhDMDM1IC8qIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUJDMzA1QzdBMEMwNzZCQjMwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVt
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMw
NUM3ODBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudC5oICovOyB9OwogCQlC
QzM0OEJENDBEQjdGODA0MDA0QUJBQjkgLyogSlNYTUxIdHRwUmVxdWVzdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzNDhCRDIwREI3RjgwNDAwNEFC
QUI5IC8qIEpTWE1MSHR0cFJlcXVlc3QuaCAqLzsgfTsKIAkJQkMzNDhCRDQwREI3RjgwNDAwNEFC
QUJBIC8qIFdlYkNvcmVKU0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzM0OEJEMjBEQjdGODA0MDA0QUJBQkEgLyogV2ViQ29yZUpTQnVp
bHRpbnMuaCAqLzsgfTsKQEAgLTQwMDcsNiArNDAwOCw3IEBACiAJCUJDM0JFOTk5MEU5QzFFNUQw
MDgzNTU4OCAvKiBSZW5kZXJTY3JvbGxiYXJUaGVtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzQkU5OTgwRTlDMUU1RDAwODM1NTg4IC8qIFJlbmRl
clNjcm9sbGJhclRoZW1lLmggKi87IH07CiAJCUJDM0MzOUI3MEMwRDNEOEQwMDVGNEQ3QSAvKiBK
U01lZGlhTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkMzQzM5QjUwQzBEM0Q4RDAwNUY0RDdBIC8qIEpTTWVkaWFMaXN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMzRDg1QkMxQzBFMkU3QTAw
RDNCNjEwIC8qIEpTSFRNTFBpY3R1cmVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzgwOEIxMzFDMEUyQjM1MDA2NkZENkIgLyogSlNIVE1M
UGljdHVyZUVsZW1lbnQuaCAqLzsgfTsKKwkJQkMzRTYyNDMyNjU5NzkxODAwNTQ4QUNEIC8qIFBs
YXRmb3JtQ29sb3JTcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMzRTYyNDIyNjU5NzkxNzAwNTQ4QUNEIC8qIFBsYXRmb3JtQ29sb3JTcGFjZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDNDM2
OEU4MEMyMjZFMzIwMDVFRkI1RiAvKiBSZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzQzNjhFNzBDMjI2RTMyMDA1RUZCNUYgLyogUmVjdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDNDZDMUZE
MEMwRERDOEYwMDIwQ0ZDMyAvKiBKU0NTU0ZvbnRGYWNlUnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM0NkMxRjMwQzBEREM4RjAwMjBDRkMzIC8q
IEpTQ1NTRm9udEZhY2VSdWxlLmggKi87IH07CiAJCUJDNDZDMUZGMEMwRERDOEYwMDIwQ0ZDMyAv
KiBKU0NTU0ltcG9ydFJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDNDZDMUY1MEMwRERDOEYwMDIwQ0ZDMyAvKiBKU0NTU0ltcG9ydFJ1bGUuaCAq
LzsgfTsKQEAgLTE0MTM0LDYgKzE0MTM2LDggQEAKIAkJQkMyOTkzNUMxN0ExREQ1ODAwQkNFODgw
IC8qIENvbG9ySW5wdXRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENvbG9ySW5wdXRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMy
Q0JGNEIxNDBGMUE2NTAwMzg3OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJHTENvbnRleHRFdmVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQzJDQkY3QTE0MEYxRDU4MDAzODc5QkUgLyogSlNXZWJHTENv
bnRleHRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dl
YkdMQ29udGV4dEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQ0NB
MEUyNjU1RERCMjAwQjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQkMyQ0NBMEYyNjU1RERCMjAwQjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQzJFRDU1NDBDNkI5QkQzMDA5MjBCRkYgLyogSlNFbGVtZW50
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRWxlbWVu
dEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMkVENkJCMEM2QkQy
RjAwMDkyMEJGRiAvKiBKU0F0dHJDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNBdHRyQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkMzMDVDNzcwQzA3NkJCMzAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1lbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTE9iamVjdEVsZW1lbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQxNTcsNiArMTQxNjEsNyBAQAog
CQlCQzNCRTlBQTBFOUMyNDIwMDA4MzU1ODggLyogUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJTY3JvbGxiYXJQYXJ0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzQzM5QjQwQzBEM0Q4RDAwNUY0RDdB
IC8qIEpTTWVkaWFMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU01lZGlhTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDM0MzOUI1
MEMwRDNEOEQwMDVGNEQ3QSAvKiBKU01lZGlhTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNNZWRpYUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QkMzRTYyNDIyNjU5NzkxNzAwNTQ4QUNEIC8qIFBsYXRmb3JtQ29sb3JTcGFjZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUNvbG9yU3BhY2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM0MzY4RTcwQzIyNkUzMjAwNUVGQjVGIC8qIFJlY3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlY3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkM0NkMxRUQwQzBEREJERjAwMjBDRkMzIC8qIEpTQ1NTUnVsZUN1c3Rv
bS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDU1NSdWxlQ3Vz
dG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM0NkMxRjIwQzBEREM4RjAw
MjBDRkMzIC8qIEpTQ1NTRm9udEZhY2VSdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0NTU0ZvbnRGYWNlUnVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yNjkyNSw2ICsyNjkzMCw4IEBACiAJCQkJMkQyRkMwNTUxNDYwQ0Q2RjAwMjYz
NjMzIC8qIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmggKi8sCiAJCQkJQThDQjQxMDIwRTg1QjhB
NTAwMzJDNEYwIC8qIERhc2hBcnJheS5oICovLAogCQkJCTU1NTEzMDAwMUU3Q0NDQ0EwMEE2OUUz
OCAvKiBEZWNvZGluZ09wdGlvbnMuaCAqLywKKwkJCQlCQzJDQ0EwRjI2NTVEREIyMDBCOEMwMzUg
LyogRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcCAqLywKKwkJCQlCQzJDQ0EwRTI2NTVEREIyMDBC
OEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmggKi8sCiAJCQkJNDlGQzdBNEYxNDQ0QUY1
RjAwQTVEODY0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAgKi8sCiAJCQkJNDlBRjJENjgx
NDQzNUQwNTAwMTZBNzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5oICovLAogCQkJCTJEMjlF
Q0MxMTkyRUNDODMwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuY3BwICov
LApAQCAtMjcxMDEsNiArMjcxMDgsNyBAQAogCQkJCUJDNjM1RThCMjY0QzJDQUUwMDBFRjMzQSAv
KiBQaXhlbEJ1ZmZlckZvcm1hdC5oICovLAogCQkJCUJDNjM1RTkwMjY0QzQ2OUYwMDBFRjMzQSAv
KiBQaXhlbEZvcm1hdC5jcHAgKi8sCiAJCQkJQkNBNTU5MTIyNjNEQkQ3OTAwN0YxOUIzIC8qIFBp
eGVsRm9ybWF0LmggKi8sCisJCQkJQkMzRTYyNDIyNjU5NzkxNzAwNTQ4QUNEIC8qIFBsYXRmb3Jt
Q29sb3JTcGFjZS5oICovLAogCQkJCTcyNkQ1NkUxMjUzQUUwNDMwMDAyRUY5MCAvKiBQbGF0Zm9y
bUltYWdlLmggKi8sCiAJCQkJNzJCQUMzQTYyM0UxNzMyODAwOEQ3NDFDIC8qIFBsYXRmb3JtSW1h
Z2VCdWZmZXIuaCAqLywKIAkJCQk1NTA2NDBBRDI0MDc1NkRBMDBBQUUwNDUgLyogUGxhdGZvcm1J
bWFnZUJ1ZmZlckJhY2tlbmQuaCAqLywKQEAgLTMyMjMwLDYgKzMyMjM4LDcgQEAKIAkJCQk5NDc5
NDkyNTFFMDMwOEFGMDAwMThEODUgLyogRGVwcmVjYXRlZENTU09NVmFsdWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk0Nzk0OTNEMUUwNDYzQjYwMDAxOEQ4NSAvKiBEZXByZWNhdGVkQ1NTT01WYWx1
ZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDQkQxMjlFMUY5OEI5MEUwMDEyN0QyOSAvKiBE
ZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMkNDQTEwMjY1
NUREQjIwMEI4QzAzNSAvKiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxMTIyM0M1MjYwMzU2N0QwMEIwQTBCNiAvKiBEZXRhY2hlZFJUQ0RhdGFDaGFubmVsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBN0M5QUJGOTEzNTdBM0JGMDBGNTUwM0YgLyogRGV0YWlsc01h
cmtlckNvbnRyb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRUQ3NzhEMUJFMzI5NDAwMERDMTc5
MSAvKiBEZXZpY2UuaCBpbiBIZWFkZXJzICovLApAQCAtMzIyODEsNiArMzIyOTAsNyBAQAogCQkJ
CTFDRThEMTI3MjYxODVDMEUwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1RkJENTFDM0RENTFFMDAwN0EyQ0EgLyogRGlz
cGxheUxpc3RJdGVtcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQzNzdENTcyNTUxQzlDNjAwODBB
QkZFIC8qIERpc3BsYXlMaXN0SXRlbVR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDM0U2MjQz
MjY1OTc5MTgwMDU0OEFDRCAvKiBQbGF0Zm9ybUNvbG9yU3BhY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFDRThEMTJFMjYxODYxQzQwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZXJhdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkU1RkJENzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RS
ZWNvcmRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFNUZCRDkxQzNERDUxRTAwMDdBMkNBIC8q
IERpc3BsYXlMaXN0UmVwbGF5ZXIuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgyLDcgKzEwODIsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUGl4ZWxCdWZmZXJG
b3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4
ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICAgICAg
UGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVs
dGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSB9OwogICAgICAgICBjb25zdCBJbnRTaXplJiBsb2dpY2FsU2l6ZSA9IGJ1ZmZlci0+bG9naWNh
bFNpemUoKTsKICAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGJ1ZmZlci0+Z2V0UGl4ZWxCdWZm
ZXIoZm9ybWF0LCB7IEludFBvaW50Ojp6ZXJvKCksIGxvZ2ljYWxTaXplIH0pOwogICAgICAgICBp
ZiAoIXBpeGVsQnVmZmVyKSB7CkBAIC0zMTg3LDcgKzMxODcsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgfQogCi0gICAgICAgIFBpeGVsQnVmZmVy
Rm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIFBp
eGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgICAg
IFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11
bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCkgfTsKICAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUo
Zm9ybWF0LCBpbWFnZURhdGFTaXplLCBhcnJheUJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKICAg
ICAgICAgaWYgKCFwaXhlbEJ1ZmZlcikgewogICAgICAgICAgICAgZmFpbCgpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAkocmV2aXNpb24gMjc3OTE5
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTYsNyArMTE2LDcgQEAgUmVmUHRyPEltYWdlPiBDU1NGaWx0ZXJJbWFnZVZh
bHVlOjppbWFnZQogCiAgICAgLy8gVHJhbnNmb3JtIEltYWdlIGludG8gSW1hZ2VCdWZmZXIuCiAg
ICAgLy8gRklYTUUgKDE0OTQyNCk6IFRoaXMgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRp
b25hbGx5IHVuYWNjZWxlcmF0ZWQuCi0gICAgYXV0byB0ZXh0dXJlID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byB0ZXh0dXJlID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAg
ICBpZiAoIXRleHR1cmUpCiAgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDcgQEAgSW1hZ2UqIEN1c3RvbVBhaW50Q2FudmFzOjpj
b3BpZWRJbWFnZSgpIAogICAgIGlmICghd2lkdGgoKSB8fCAhaGVpZ2h0KCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgbV9jb3BpZWRCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KHNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgsIG51bGxwdHIpOworICAgIG1fY29waWVk
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6
QkdSQTgsIG51bGxwdHIpOwogICAgIGlmICghbV9jb3BpZWRCdWZmZXIpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50SW1hZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRJbWFnZS5j
cHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRJ
bWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIEN1c3RvbVBh
aW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoCiAgICAgYWRqdXN0ZWRQYXR0ZXJuQ1RNLnNjYWxl
KDEuMCAvIHhTY2FsZSwgMS4wIC8geVNjYWxlKTsKICAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUo
eFNjYWxlLCB5U2NhbGUpOwogCi0gICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QiwgZGVzdENvbnRleHQpOworICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNv
bXBhdGlibGVCdWZmZXIoYWRqdXN0ZWRTaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgZGVzdENvbnRleHQpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm47CiAgICAg
ZG9DdXN0b21QYWludChidWZmZXItPmNvbnRleHQoKSwgYWRqdXN0ZWRTaXplKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODI1LDcgKzgyNSw3IEBAIFJlZlB0cjxNZWRpYVNhbXBsZT4gSFRNTENhbnZhc0Vs
ZW1lbnQ6OnQKICAgICAvLyBGSVhNRTogVGhpcyBjYW4gbGlrZWx5IGJlIG9wdGltaXplZCBxdWl0
ZSBhIGJpdCwgZXNwZWNpYWxseSBpbiB0aGUgY2FzZXMgd2hlcmUKICAgICAvLyB0aGUgSW1hZ2VC
dWZmZXIgaXMgYmFja2VkIGJ5IEdQVSBtZW1vcnkgYWxyZWFkeSBhbmQvb3IgaXMgaW4gdGhlIEdQ
VSBwcm9jZXNzIGJ5CiAgICAgLy8gc3BlY2lhbGl6aW5nIHRvTWVkaWFTYW1wbGUoKSBpbiBJbWFn
ZUJ1ZmZlckJhY2tlbmQgdG8gbm90IHVzZSBnZXRQaXhlbEJ1ZmZlcigpLgotICAgIGF1dG8gcGl4
ZWxCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoeyBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCIH0sIHsgeyB9LCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSB9KTsK
KyAgICBhdXRvIHBpeGVsQnVmZmVyID0gaW1hZ2VCdWZmZXItPmdldFBpeGVsQnVmZmVyKHsgQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6QkdSQTgs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH0sIHsgeyB9LCBpbWFnZUJ1ZmZlci0+bG9n
aWNhbFNpemUoKSB9KTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIApAQCAtOTU1LDcgKzk1NSw3IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0
ZUltYWdlQnVmZmUKICAgICBhdXRvIFtjb2xvclNwYWNlLCBwaXhlbEZvcm1hdF0gPSBbJl0gewog
ICAgICAgICBpZiAobV9jb250ZXh0KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6cGFpciB7IG1f
Y29udGV4dC0+Y29sb3JTcGFjZSgpLCBtX2NvbnRleHQtPnBpeGVsRm9ybWF0KCkgfTsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6cGFpciB7IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxG
b3JtYXQ6OkJHUkE4IH07CisgICAgICAgIHJldHVybiBzdGQ6OnBhaXIgeyBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4IH07CiAgICAgfSgpOwogCiAgICAg
c2V0SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIHJlbmRlcmluZ01vZGUs
IHVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJwb3NlOjpDYW52YXMsIDEsIGNvbG9yU3BhY2Us
IHBpeGVsRm9ybWF0LCBob3N0V2luZG93KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxWaWRlb0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MSw3ICsyODEsNyBA
QCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6Om1lZGlhUGxheWVyRmlyc3RWCiAgICAgICAgIHJlbmRl
cmVyLT51cGRhdGVGcm9tRWxlbWVudCgpOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IEhUTUxW
aWRlb0VsZW1lbnQ6OmNyZWF0ZUJ1ZmZlckZvclBhaW50aW5nKGNvbnN0IEZsb2F0U2l6ZSYgc2l6
ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CitSZWZQdHI8SW1hZ2VCdWZm
ZXI+IEhUTUxWaWRlb0VsZW1lbnQ6OmNyZWF0ZUJ1ZmZlckZvclBhaW50aW5nKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KSBjb25zdAog
ewogICAgIGF1dG8qIGhvc3RXaW5kb3cgPSBkb2N1bWVudCgpLnZpZXcoKSAmJiBkb2N1bWVudCgp
LnZpZXcoKS0+cm9vdCgpID8gZG9jdW1lbnQoKS52aWV3KCktPnJvb3QoKS0+aG9zdFdpbmRvdygp
IDogbnVsbHB0cjsKICAgICBhdXRvIHNob3VsZFVzZURpc3BsYXlMaXN0ID0gZG9jdW1lbnQoKS5z
ZXR0aW5ncygpLmRpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWQoKSA/IFNob3VsZFVzZURpc3BsYXlM
aXN0OjpZZXMgOiBTaG91bGRVc2VEaXNwbGF5TGlzdDo6Tm87CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEyICszMywx
MiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTsKIGNsYXNzIEhUTUxJbWFnZUxvYWRlcjsKIGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgUmVu
ZGVyVmlkZW87CiBjbGFzcyBQaWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXI7CiAKLWVudW0gY2xhc3Mg
RGVzdGluYXRpb25Db2xvclNwYWNlIDogdWludDhfdDsKIGVudW0gY2xhc3MgUGl4ZWxGb3JtYXQg
OiB1aW50OF90OwogZW51bSBjbGFzcyBSZW5kZXJpbmdNb2RlIDogYm9vbDsKIApAQCAtNzIsNyAr
NzIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpIG92ZXJy
aWRlOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUJ1ZmZlckZvclBh
aW50aW5nKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0OworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRl
QnVmZmVyRm9yUGFpbnRpbmcoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiwgUGl4ZWxGb3JtYXQpIGNvbnN0OwogCiAgICAgLy8gVXNl
ZCBieSBjYW52YXMgdG8gZ2FpbiByYXcgcGl4ZWwgYWNjZXNzCiAgICAgdm9pZCBwYWludEN1cnJl
bnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQs
MTIgKzg0LDEyIEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCaXRtYXA6OmNyZWF0ZUkKICAg
ICAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCk7CiAgICAgICAgIGlmIChkb2N1bWVudC52aWV3KCkgJiYgZG9jdW1lbnQudmlldygp
LT5yb290KCkpIHsKICAgICAgICAgICAgIGF1dG8gaG9zdFdpbmRvdyA9IGRvY3VtZW50LnZpZXco
KS0+cm9vdCgpLT5ob3N0V2luZG93KCk7Ci0gICAgICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6Tm8sIFJl
bmRlcmluZ1B1cnBvc2U6OkNhbnZhcywgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCwgaG9zdFdpbmRvdyk7CisgICAgICAgICAg
ICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCBTaG91bGRV
c2VEaXNwbGF5TGlzdDo6Tm8sIFJlbmRlcmluZ1B1cnBvc2U6OkNhbnZhcywgcmVzb2x1dGlvblNj
YWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBo
b3N0V2luZG93KTsKICAgICAgICAgfQogICAgIH0KIAogICAgIC8vIEZJWE1FIDxodHRwczovL3dl
YmtpdC5vcmcvYi8yMTg0ODI+IEVuYWJsZSB3b3JrZXIgYmFzZWQgSW1hZ2VCaXRtYXAgYW5kIE9m
ZnNjcmVlbkNhbnZhcyBkcmF3aW5nIHRvIHVzZSBHUFUgUHJvY2VzcyByZW5kZXJpbmcKLSAgICBy
ZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9u
U2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
KyAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCByZXNv
bHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6
QkdSQTgpOwogfQogCiB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEltYWdlQml0bWFwOjpTb3VyY2Um
JiBzb3VyY2UsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIEltYWdlQml0bWFwOjpQcm9t
aXNlJiYgcHJvbWlzZSkKQEAgLTUwNCw3ICs1MDQsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVh
dGVQcm9taXNlKFNjcmlwdEV4CiAgICAgYXV0byBvdXRwdXRTaXplID0gb3V0cHV0U2l6ZUZvclNv
dXJjZVJlY3RhbmdsZShzb3VyY2VSZWN0YW5nbGUsIG9wdGlvbnMpOwogCiAgICAgLy8gRklYTUU6
IEFkZCBzdXBwb3J0IGZvciBjb2xvciBzcGFjZXMgLyBwaXhlbCBmb3JtYXRzIHRvIEltYWdlQml0
bWFwLgotICAgIGF1dG8gYml0bWFwRGF0YSA9IHZpZGVvLT5jcmVhdGVCdWZmZXJGb3JQYWludGlu
ZyhvdXRwdXRTaXplLCBidWZmZXJSZW5kZXJpbmdNb2RlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBiaXRtYXBEYXRhID0gdmlkZW8t
PmNyZWF0ZUJ1ZmZlckZvclBhaW50aW5nKG91dHB1dFNpemUsIGJ1ZmZlclJlbmRlcmluZ01vZGUs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAg
IGlmICghYml0bWFwRGF0YSkgewogICAgICAgICByZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZmZXIo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgIXRhaW50c09yaWdpbihzY3JpcHRFeGVjdXRpb25Db250
ZXh0LnNlY3VyaXR5T3JpZ2luKCksICp2aWRlbyksIFdURk1vdmUocHJvbWlzZSkpOwogICAgICAg
ICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCShy
ZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1MSwxNCArNDUxLDE0IEBAIHZvaWQgT2Zmc2NyZWVuQ2Fu
dmFzOjpjb21taXRUb1BsYWNlaG9sZGUKICAgICAgICAgbV9jb250ZXh0LT5wYWludFJlbmRlcmlu
Z1Jlc3VsdHNUb0NhbnZhcygpOwogCiAgICAgaWYgKG1fcGxhY2Vob2xkZXJEYXRhLT5idWZmZXJQ
aXBlU291cmNlKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyQ29weSA9IGltYWdlQnVmZmVyLT5jb3B5
UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2Fs
U2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBpbWFnZUJ1ZmZlci0+Y29udGV4
dCgpKTsKKyAgICAgICAgYXV0byBidWZmZXJDb3B5ID0gaW1hZ2VCdWZmZXItPmNvcHlSZWN0VG9C
dWZmZXIoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkp
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7
CiAgICAgICAgIGlmIChidWZmZXJDb3B5KQogICAgICAgICAgICAgbV9wbGFjZWhvbGRlckRhdGEt
PmJ1ZmZlclBpcGVTb3VyY2UtPmhhbmRsZShXVEZNb3ZlKGJ1ZmZlckNvcHkpKTsKICAgICB9CiAK
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wbGFjZWhvbGRlckRhdGEtPmJ1ZmZlckxvY2sgfTsKICAg
ICBib29sIHNob3VsZFB1c2hCdWZmZXIgPSAhbV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21t
aXRCdWZmZXI7Ci0gICAgbV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRCdWZmZXIgPSBp
bWFnZUJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFn
ZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgaW1h
Z2VCdWZmZXItPmNvbnRleHQoKSk7CisgICAgbV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21t
aXRCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihGbG9hdFJlY3QoRmxvYXRQ
b2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKICAgICBpZiAobV9wbGFjZWhvbGRl
ckRhdGEtPnBlbmRpbmdDb21taXRCdWZmZXIgJiYgc2hvdWxkUHVzaEJ1ZmZlcikKICAgICAgICAg
cHVzaEJ1ZmZlclRvUGxhY2Vob2xkZXIoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUg
IkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMu
aCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eVBhcnNlcldvcmtlclNhZmUuaCIKLSNpbmNsdWRlICJD
b2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiR3JhZGllbnQuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZl
ci5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlICJDYWNo
ZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNhbnZhc1BhdHRlcm4uaCIKLSNpbmNsdWRlICJDb2xvclNw
YWNlLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiSFRN
TENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpAQCAtOTAsNyArOTAsNyBAQCBQaXhlbEZvcm1hdCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0OjpwaXhlCiAKIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0Ojpjb2xvclNwYWNlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCOworICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKTsKIH0KIAogYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojp3b3VsZFRhaW50T3Jp
Z2luKGNvbnN0IENhbnZhc1BhdHRlcm4qIHBhdHRlcm4pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCShyZXZpc2lvbiAy
Nzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEzICszNywxMyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDYW52YXNQYXR0ZXJuOworY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNl
OwogY2xhc3MgSFRNTENhbnZhc0VsZW1lbnQ7CiBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogY2xh
c3MgSFRNTFZpZGVvRWxlbWVudDsKIGNsYXNzIEltYWdlQml0bWFwOwogY2xhc3MgVHlwZWRPTUNT
U0ltYWdlVmFsdWU7CiBjbGFzcyBXZWJHTE9iamVjdDsKLWVudW0gY2xhc3MgRGVzdGluYXRpb25D
b2xvclNwYWNlIDogdWludDhfdDsKIGVudW0gY2xhc3MgUGl4ZWxGb3JtYXQgOiB1aW50OF90Owog
CiBjbGFzcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0IDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0Nv
bnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdl
Qml0bWFwUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRl
eHQ6OnNldE91dAogICAgICAgICAvLyBvbmx5IHJlYXNvbiBJIGNhbiB0aGluayBvZiBpcyB0b0Rh
dGFVUkwoKSwgYnV0IHRoYXQgZG9lc24ndCBzZWVtIGxpa2UKICAgICAgICAgLy8gYSBnb29kIGVu
b3VnaCBhcmd1bWVudCB0byB3YXN0ZSBtZW1vcnkuCiAKLSAgICAgICAgY2FudmFzKCktPnNldElt
YWdlQnVmZmVyQW5kTWFya0RpcnR5KEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKGNhbnZh
cygpLT53aWR0aCgpLCBjYW52YXMoKS0+aGVpZ2h0KCkpLCBidWZmZXJSZW5kZXJpbmdNb2RlLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCkpOworICAg
ICAgICBjYW52YXMoKS0+c2V0SW1hZ2VCdWZmZXJBbmRNYXJrRGlydHkoSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShGbG9hdFNpemUoY2FudmFzKCktPndpZHRoKCksIGNhbnZhcygpLT5oZWlnaHQoKSksIGJ1
ZmZlclJlbmRlcmluZ01vZGUsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhl
bEZvcm1hdDo6QkdSQTgpKTsKIAogICAgICAgICAvLyAxLjQuIFNldCB0aGUgb3V0cHV0IGJpdG1h
cCdzIG9yaWdpbi1jbGVhbiBmbGFnIHRvIHRydWUuCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5jcHAJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlByZWRlZmluZWRDb2xvclNwYWNlLmgiCiAKLSNpbmNsdWRlICJDb2xvclNw
YWNlLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM1LDMzICszNSwyNiBAQCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgdG9EZXN0aW5hdGlvbkNvbG9yCiB7CiAgICAgc3dpdGNoIChj
b2xvclNwYWNlKSB7CiAgICAgY2FzZSBQcmVkZWZpbmVkQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAg
ICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjsKKyAgICAgICAgcmV0dXJuIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOwogI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xP
Ul9TUEFDRV9ESVNQTEFZX1AzKQogICAgIGNhc2UgUHJlZGVmaW5lZENvbG9yU3BhY2U6OkRpc3Bs
YXlQMzoKLSAgICAgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxheVAzOwor
ICAgICAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDMoKTsKICNlbmRp
ZgogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0I7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpOwogfQogCi1PcHRpb25hbDxQcmVkZWZpbmVkQ29sb3JTcGFjZT4gdG9QcmVkZWZpbmVk
Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkKK09wdGlvbmFsPFBy
ZWRlZmluZWRDb2xvclNwYWNlPiB0b1ByZWRlZmluZWRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkKIHsKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsK
LSAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjoKKyAgICBpZiAoY29sb3JTcGFj
ZSA9PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSkKICAgICAgICAgcmV0dXJuIFByZWRl
ZmluZWRDb2xvclNwYWNlOjpTUkdCOwotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFD
RV9MSU5FQVJfU1JHQikKLSAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JH
QjoKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSNlbmRpZgogI2lmIEVOQUJMRShERVNU
SU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpEaXNwbGF5UDM6CisgICAgaWYgKGNvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xv
clNwYWNlOjpEaXNwbGF5UDMoKSkKICAgICAgICAgcmV0dXJuIFByZWRlZmluZWRDb2xvclNwYWNl
OjpEaXNwbGF5UDM7CiAjZW5kaWYKLSAgICB9CiAKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmgJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1l
bnVtIGNsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7CitjbGFzcyBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U7CiAKIGVudW0gY2xhc3MgUHJlZGVmaW5lZENvbG9yU3BhY2UgewogICAg
IFNSR0IKQEAgLTQwLDcgKzQwLDcgQEAgZW51bSBjbGFzcyBQcmVkZWZpbmVkQ29sb3JTcGFjZSB7
CiB9OwogCiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgdG9EZXN0aW5hdGlvbkNvbG9yU3BhY2UoUHJl
ZGVmaW5lZENvbG9yU3BhY2UpOwotT3B0aW9uYWw8UHJlZGVmaW5lZENvbG9yU3BhY2U+IHRvUHJl
ZGVmaW5lZENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlKTsKK09wdGlvbmFsPFByZWRl
ZmluZWRDb2xvclNwYWNlPiB0b1ByZWRlZmluZWRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYpOwogCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCShyZXZpc2lvbiAyNzc5
MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYyMyw3ICs3NjIzLDcgQEAgSW1hZ2VCdWZmZXIq
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OgogICAgIH0KIAogICAgIC8vIEZJWE1FICgxNDk0
MjMpOiBTaG91bGQgdGhpcyBJbWFnZUJ1ZmZlciBiZSB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVy
YXRlZD8KLSAgICBhdXRvIHRlbXAgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIHRlbXAgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNp
emUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghdGVtcCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgQVNTRVJUKG1fYnVmZmVycy5zaXplKCkgPiAwKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5l
ckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250
YWluZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDE4LDcgKzQxOCw3IEBAIFJlZlB0
cjxJbWFnZT4gTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGEKICAgICBJbnRSZWN0IHBhaW50aW5n
UmVjdCA9IEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPnNpemUoKSk7CiAKICAgICAvLyBGSVhN
RSAoMTQ5NDIyKTogVGhpcyBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlvbmFsbHkgdW5h
Y2NlbGVyYXRlZC4KLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUocGFpbnRp
bmdSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgZGV2aWNlU2NhbGVG
YWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
KyAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUocGFpbnRpbmdSZWN0LnNpemUo
KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgZGV2aWNlU2NhbGVGYWN0b3IsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICgh
YnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTQ5LDcgKzExNDksNyBAQCBpbnQgSW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEo
RHVwbGljCiAgICAgICAgICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gaW1hZ2VF
bGVtZW50LT5jYWNoZWRJbWFnZSgpKSB7CiAgICAgICAgICAgICAgICAgSW1hZ2UqIGltYWdlID0g
Y2FjaGVkSW1hZ2UtPmltYWdlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGltYWdlICYmIGltYWdl
ICE9ICZJbWFnZTo6bnVsbEltYWdlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBpbWFn
ZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJh
dGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4
KTsKICAgICAgICAgICAgICAgICAgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5kcmF3SW1hZ2Uo
KmltYWdlLCBGbG9hdFBvaW50KDAsIDApKTsKICAgICAgICAgICAgICAgICAgICAgZGF0YVVSTCA9
IGltYWdlQnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyIpOwogICAgICAgICAgICAgICAgIH0K
QEAgLTExNjMsNyArMTE2Myw3IEBAIGludCBJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YShE
dXBsaWMKIAogICAgICAgICAgICAgdW5zaWduZWQgdmlkZW9XaWR0aCA9IHZpZGVvRWxlbWVudC0+
dmlkZW9XaWR0aCgpOwogICAgICAgICAgICAgdW5zaWduZWQgdmlkZW9IZWlnaHQgPSB2aWRlb0Vs
ZW1lbnQtPnZpZGVvSGVpZ2h0KCk7Ci0gICAgICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUodmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpLCBSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Is
IFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUodmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpLCBSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgICAgIGlmIChpbWFnZUJ1ZmZlcikgewog
ICAgICAgICAgICAgICAgIHZpZGVvRWxlbWVudC0+cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQo
aW1hZ2VCdWZmZXItPmNvbnRleHQoKSwgRmxvYXRSZWN0KDAsIDAsIHZpZGVvV2lkdGgsIHZpZGVv
SGVpZ2h0KSk7CiAgICAgICAgICAgICAgICAgZGF0YVVSTCA9IGltYWdlQnVmZmVyLT50b0RhdGFV
UkwoImltYWdlL3BuZyIpOwpAQCAtMTIwMCw3ICsxMjAwLDcgQEAgaW50IEluc3BlY3RvckNhbnZh
czo6aW5kZXhGb3JEYXRhKER1cGxpYwogICAgICAgICAgICAgaWYgKGF1dG8qIGNhY2hlZEltYWdl
ID0gY3NzSW1hZ2VWYWx1ZS0+aW1hZ2UoKSkgewogICAgICAgICAgICAgICAgIGF1dG8qIGltYWdl
ID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGltYWdlICYmIGlt
YWdlICE9ICZJbWFnZTo6bnVsbEltYWdlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBp
bWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJH
UkE4KTsKICAgICAgICAgICAgICAgICAgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5kcmF3SW1h
Z2UoKmltYWdlLCBGbG9hdFBvaW50KDAsIDApKTsKICAgICAgICAgICAgICAgICAgICAgZGF0YVVS
TCA9IGltYWdlQnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyIpOwogICAgICAgICAgICAgICAg
IH0KQEAgLTE0NDEsNyArMTQ0MSw3IEBAIFJlZjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4g
SW5zcGVjdG8KIHsKICAgICBhdXRvJiB0aWxlSW1hZ2UgPSBjYW52YXNQYXR0ZXJuLnBhdHRlcm4o
KS50aWxlSW1hZ2UoKTsKICAgICBGbG9hdFJlY3QgcmVjdCA9IHsgeyB9LCB0aWxlSW1hZ2Uuc2l6
ZSgpIH07Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGlsZUlt
YWdlLnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gaW1hZ2VCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRpbGVJbWFnZS5zaXplKCksIFJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOwogICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkuZHJhd05hdGl2ZUltYWdl
KHRpbGVJbWFnZSwgdGlsZUltYWdlLnNpemUoKSwgcmVjdCwgcmVjdCk7CiAKICAgICBTdHJpbmcg
cmVwZWF0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjksNyAr
NTI5LDcgQEAgdm9pZCBDaHJvbWU6OnNldEN1cnNvckhpZGRlblVudGlsTW91c2VNbwogICAgIG1f
Y2xpZW50LnNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3ZlcyhoaWRkZW5VbnRpbE1vdXNlTW92
ZXMpOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IENocm9tZTo6Y3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIFJlbmRl
cmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CitSZWZQ
dHI8SW1hZ2VCdWZmZXI+IENocm9tZTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UgcHVy
cG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
IGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KSBjb25zdAogewogICAgIHJldHVy
biBtX2NsaWVudC5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCBwdXJwb3Nl
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWUuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRDdXJzb3IoY29uc3QgQ3Vyc29yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDdXJzb3JI
aWRkZW5VbnRpbE1vdXNlTW92ZXMoYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8SW1hZ2VC
dWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUs
IFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xv
clNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEltYWdlQnVm
ZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBS
ZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYsIFBpeGVsRm9ybWF0KSBjb25zdCBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShX
RUJHTCkKICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29udGV4
dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpIGNvbnN0IG92ZXJyaWRlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzks
NyArMzM5LDcgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgRGlzcGxheVJlZnJlc2hNb25p
dG9yRmFjdG9yeSogZGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeSgpIGNvbnN0IHsgcmV0dXJu
IG51bGxwdHI7IH0KIAotICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3Nl
LCBmbG9hdCwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3QgeyByZXR1
cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3Nl
LCBmbG9hdCwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUGl4ZWxGb3JtYXQpIGNvbnN0
IHsgcmV0dXJuIG51bGxwdHI7IH0KIAogI2lmIEVOQUJMRShXRUJHTCkKICAgICB2aXJ0dWFsIFJl
ZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQpIGNv
bnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVT
bmFwc2hvdHRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVT
bmFwc2hvdHRpbmcuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lU25hcHNob3R0aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw3IEBA
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RGcmFtZVJlY3RXaXQKICAgICBpZiAob3B0aW9u
cyAmIFNuYXBzaG90T3B0aW9uc1BhaW50V2l0aEludGVncmFsU2NhbGVGYWN0b3IpCiAgICAgICAg
IHNjYWxlRmFjdG9yID0gY2VpbGYoc2NhbGVGYWN0b3IpOwogCi0gICAgYXV0byBidWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIHNjYWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGlt
YWdlUmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIHNjYWxlRmFjdG9y
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAg
ICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYnVmZmVyLT5jb250
ZXh0KCkudHJhbnNsYXRlKC1pbWFnZVJlY3QueCgpLCAtaW1hZ2VSZWN0LnkoKSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb2xvclNhbXBsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHAJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgT3B0aW9uYWw8TGFiPGZsb2F0Pj4gc2FtcGxl
Q29sb3IoCiAgICAgaWYgKCFzbmFwc2hvdCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
IAotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzbmFwc2hvdC0+Z2V0UGl4ZWxCdWZmZXIoeyBBbHBo
YVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH0sIHsgeyB9LCBzbmFwc2hvdC0+bG9naWNhbFNp
emUoKSB9KTsKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gc25hcHNob3QtPmdldFBpeGVsQnVmZmVy
KHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6
QkdSQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH0sIHsgeyB9LCBzbmFwc2hvdC0+
bG9naWNhbFNpemUoKSB9KTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xp
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xp
ZW50LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29u
c29sZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNiw3ICszMjYsNyBAQCB2b2lkIFBh
Z2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEpTQzo6CiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoYXV0byogY2FjaGVkSW1hZ2UgPSBpbWFnZUVsZW1lbnQuY2FjaGVkSW1hZ2UoKSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8qIGltYWdlID0gY2FjaGVkSW1hZ2UtPmlt
YWdlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGltYWdlICYmIGltYWdlICE9
ICZJbWFnZTo6bnVsbEltYWdlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c25hcHNob3QgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIFJlbmRlcmluZ01v
ZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25hcHNob3Qg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6
QkdSQTgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdC0+Y29udGV4
dCgpLmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UG9pbnQoMCwgMCkpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTM0Myw3ICszNDMs
NyBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEpTQzo6CiAgICAgICAgICAg
ICAgICAgICAgICAgICBhdXRvJiB2aWRlb0VsZW1lbnQgPSBkb3duY2FzdDxIVE1MVmlkZW9FbGVt
ZW50Pigqbm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB2aWRlb1dpZHRo
ID0gdmlkZW9FbGVtZW50LnZpZGVvV2lkdGgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIHZpZGVvSGVpZ2h0ID0gdmlkZW9FbGVtZW50LnZpZGVvSGVpZ2h0KCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBzbmFwc2hvdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXpl
KHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwg
MSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgc25hcHNob3QgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0
U2l6ZSh2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgp
OwogICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9FbGVtZW50LnBhaW50Q3VycmVudEZyYW1l
SW5Db250ZXh0KHNuYXBzaG90LT5jb250ZXh0KCksIEZsb2F0UmVjdCgwLCAwLCB2aWRlb1dpZHRo
LCB2aWRlb0hlaWdodCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAjZW5kaWYKQEAgLTM2OCw3
ICszNjgsNyBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEpTQzo6CiAgICAg
ICAgICAgICB0YXJnZXQgPSBwb3NzaWJsZVRhcmdldDsKICAgICAgICAgICAgIGlmIChVTkxJS0VM
WShJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhhc0Zyb250ZW5kcygpKSkgewogICAgICAgICAg
ICAgICAgIGF1dG8gc291cmNlU2l6ZSA9IGltYWdlRGF0YS0+c2l6ZSgpOwotICAgICAgICAgICAg
ICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzb3VyY2VTaXpl
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byBp
bWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc291cmNlU2l6ZSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVs
Rm9ybWF0OjpCR1JBOCkpIHsKICAgICAgICAgICAgICAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0
KEludFBvaW50KCksIHNvdXJjZVNpemUpOwogICAgICAgICAgICAgICAgICAgICBpbWFnZUJ1ZmZl
ci0+cHV0UGl4ZWxCdWZmZXIoaW1hZ2VEYXRhLT5waXhlbEJ1ZmZlcigpLCBzb3VyY2VSZWN0KTsK
ICAgICAgICAgICAgICAgICAgICAgZGF0YVVSTCA9IGltYWdlQnVmZmVyLT50b0RhdGFVUkwoImlt
YWdlL3BuZyJfcywgV1RGOjpudWxsb3B0LCBQcmVzZXJ2ZVJlc29sdXRpb246Olllcyk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDEwICszMSwxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJzb3I7CitjbGFz
cyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIAogZW51bSBjbGFz
cyBQaXhlbEZvcm1hdCA6IHVpbnQ4X3Q7Ci1lbnVtIGNsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOwogZW51bSBjbGFz
cyBSZW5kZXJpbmdQdXJwb3NlIDogdWludDhfdDsKIApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBJbnRQb2ludCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmlldyhjb25z
dCBJbnRQb2ludCYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEludFJlY3Qgcm9vdFZpZXdUb0Fj
Y2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgSW50UmVjdCYpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1
YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
LCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXpl
JiwgUmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCkgY29uc3QgPSAwOwog
CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIHZpcnR1YWwgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdM
PiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMmKSBjb25zdCA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNj
cmVlbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2Ny
ZWVuLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtU2NyZWVuLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAgdHlwZWRlZiBzdHJ1
Y3QgQ0dDb2xvclNwYWNlICpDR0NvbG9yU3BhYwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEZsb2F0
U2l6ZTsKIGNsYXNzIFdpZGdldDsKQEAgLTY4LDYgKzY5LDcgQEAgdXNpbmcgSU9SZWdpc3RyeUdQ
VUlEID0gaW50NjRfdDsgLy8gR2xvYgogaW50IHNjcmVlbkRlcHRoKFdpZGdldCopOwogaW50IHNj
cmVlbkRlcHRoUGVyQ29tcG9uZW50KFdpZGdldCopOwogYm9vbCBzY3JlZW5Jc01vbm9jaHJvbWUo
V2lkZ2V0Kik7CitXRUJDT1JFX0VYUE9SVCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc2NyZWVuQ29s
b3JTcGFjZShXaWRnZXQqID0gbnVsbHB0cik7CiAKIGJvb2wgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xv
cnMoKTsKIApAQCAtMTAwLDEwICsxMDIsNiBAQCBXRUJDT1JFX0VYUE9SVCBib29sIHNjcmVlblN1
cHBvcnRzSGlnaER5CiBjb25zdGV4cHIgYm9vbCBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFu
Z2UoV2lkZ2V0KiA9IG51bGxwdHIpIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAotI2lmIFVT
RShDRykKLVdFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBzY3JlZW5Db2xvclNwYWNlKFdp
ZGdldCogPSBudWxscHRyKTsKLSNlbmRpZgotCiBzdHJ1Y3QgU2NyZWVuUHJvcGVydGllczsKIHN0
cnVjdCBTY3JlZW5EYXRhOwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
ZWVuUHJvcGVydGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cmVlblByb3BlcnRpZXMuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2NyZWVuUHJvcGVydGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAj
aW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKICNpbmNs
dWRlIDx3dGYvRW51bVRyYWl0cy5oPgpAQCAtMzIsMTQgKzMzLDEyIEBACiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi10eXBlZGVm
IHN0cnVjdCBDR0NvbG9yU3BhY2UgKkNHQ29sb3JTcGFjZVJlZjsKLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdHJ1Y3QgU2NyZWVuRGF0YSB7CiAgICAgRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJs
ZVJlY3Q7CiAgICAgRmxvYXRSZWN0IHNjcmVlblJlY3Q7Ci0gICAgUmV0YWluUHRyPENHQ29sb3JT
cGFjZVJlZj4gY29sb3JTcGFjZTsKKyAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFj
ZSB7IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgaW50IHNjcmVlbkRlcHRo
IHsgMCB9OwogICAgIGludCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCB7IDAgfTsKICAgICBib29s
IHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciB7IGZhbHNlIH07CkBAIC01NiwxMyArNTUsMTIg
QEAgc3RydWN0IFNjcmVlbkRhdGEgewogICAgIGZsb2F0IHNjYWxlRmFjdG9yIHsgMSB9OwogI2Vu
ZGlmCiAKLSAgICBlbnVtIGNsYXNzIENvbG9yU3BhY2VUeXBlIDogdWludDhfdCB7IE5vbmUsIE5h
bWUsIERhdGEgfTsKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFs
PFNjcmVlbkRhdGE+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCi10eXBlZGVmIEhhc2hNYXA8UGxh
dGZvcm1EaXNwbGF5SUQsIFNjcmVlbkRhdGE+IFNjcmVlbkRhdGFNYXA7Ci0gICAgCit1c2luZyBT
Y3JlZW5EYXRhTWFwID0gSGFzaE1hcDxQbGF0Zm9ybURpc3BsYXlJRCwgU2NyZWVuRGF0YT47CisK
IHN0cnVjdCBTY3JlZW5Qcm9wZXJ0aWVzIHsKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBwcmltYXJ5
RGlzcGxheUlEIHsgMCB9OwogICAgIFNjcmVlbkRhdGFNYXAgc2NyZWVuRGF0YU1hcDsKQEAgLTc0
LDggKzcyLDcgQEAgc3RydWN0IFNjcmVlblByb3BlcnRpZXMgewogdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KIHZvaWQgU2NyZWVuUHJvcGVydGllczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiB7Ci0gICAgZW5jb2RlciA8PCBwcmltYXJ5RGlzcGxheUlEOwotICAgIGVuY29kZXIgPDwg
c2NyZWVuRGF0YU1hcDsKKyAgICBlbmNvZGVyIDw8IHByaW1hcnlEaXNwbGF5SUQgPDwgc2NyZWVu
RGF0YU1hcDsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTk3LDcgKzk0LDcgQEAg
T3B0aW9uYWw8U2NyZWVuUHJvcGVydGllcz4gU2NyZWVuUHJvcGVydAogdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4KIHZvaWQgU2NyZWVuRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiB7Ci0gICAgZW5jb2RlciA8PCBzY3JlZW5BdmFpbGFibGVSZWN0IDw8IHNjcmVlblJlY3QgPDwg
c2NyZWVuRGVwdGggPDwgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQgPDwgc2NyZWVuU3VwcG9ydHNF
eHRlbmRlZENvbG9yIDw8IHNjcmVlbkhhc0ludmVydGVkQ29sb3JzIDw8IHNjcmVlblN1cHBvcnRz
SGlnaER5bmFtaWNSYW5nZTsKKyAgICBlbmNvZGVyIDw8IHNjcmVlbkF2YWlsYWJsZVJlY3QgPDwg
c2NyZWVuUmVjdCA8PCBjb2xvclNwYWNlIDw8IHNjcmVlbkRlcHRoIDw8IHNjcmVlbkRlcHRoUGVy
Q29tcG9uZW50IDw8IHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciA8PCBzY3JlZW5IYXNJbnZl
cnRlZENvbG9ycyA8PCBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2U7CiAKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgZW5jb2RlciA8PCBzY3JlZW5Jc01vbm9jaHJvbWUgPDwgZGlzcGxheU1h
c2sgPDwgZ3B1SUQgPDwgcHJlZmVycmVkRHluYW1pY1JhbmdlTW9kZTsKQEAgLTEwNiwyOCArMTAz
LDYgQEAgdm9pZCBTY3JlZW5EYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcgogI2lmIFBMQVRG
T1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBlbmNvZGVyIDw8IHNjYWxlRmFj
dG9yOwogI2VuZGlmCi0KLSAgICBpZiAoY29sb3JTcGFjZSkgewotICAgICAgICAvLyBUcnkgdG8g
ZW5jb2RlIHRoZSBuYW1lLgotICAgICAgICBpZiAoYXV0byBuYW1lID0gYWRvcHRDRihDR0NvbG9y
U3BhY2VDb3B5TmFtZShjb2xvclNwYWNlLmdldCgpKSkpIHsKLSAgICAgICAgICAgIGVuY29kZXIg
PDwgQ29sb3JTcGFjZVR5cGU6Ok5hbWU7Ci0gICAgICAgICAgICBlbmNvZGVyIDw8IFN0cmluZyhu
YW1lLmdldCgpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8v
IEZhaWxpbmcgdGhhdCwganVzdCBlbmNvZGUgdGhlIElDQyBkYXRhLgotICAgICAgICBpZiAoYXV0
byBwcm9maWxlRGF0YSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ29weUlDQ0RhdGEoY29sb3JTcGFj
ZS5nZXQoKSkpKSB7Ci0gICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gaWNjRGF0YTsKLSAgICAg
ICAgICAgIGljY0RhdGEuYXBwZW5kKENGRGF0YUdldEJ5dGVQdHIocHJvZmlsZURhdGEuZ2V0KCkp
LCBDRkRhdGFHZXRMZW5ndGgocHJvZmlsZURhdGEuZ2V0KCkpKTsKLQotICAgICAgICAgICAgZW5j
b2RlciA8PCBDb2xvclNwYWNlVHlwZTo6RGF0YTsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgaWNj
RGF0YTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIFRo
ZSBjb2xvciBzcGFjZSB3YXMgbnVsbCBvciBmYWlsZWQgdG8gYmUgZW5jb2RlZC4KLSAgICBlbmNv
ZGVyIDw8IENvbG9yU3BhY2VUeXBlOjpOb25lOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PgpAQCAtMTQzLDYgKzExOCwxMSBAQCBPcHRpb25hbDxTY3JlZW5EYXRhPiBTY3JlZW5EYXRhOjpk
ZWNvZGUoCiAgICAgaWYgKCFzY3JlZW5SZWN0KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogCisgICAgT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBzY3JlZW5Db2xvclNwYWNl
OworICAgIGRlY29kZXIgPj4gc2NyZWVuQ29sb3JTcGFjZTsKKyAgICBpZiAoIXNjcmVlbkNvbG9y
U3BhY2UpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKICAgICBPcHRpb25hbDxpbnQ+
IHNjcmVlbkRlcHRoOwogICAgIGRlY29kZXIgPj4gc2NyZWVuRGVwdGg7CiAgICAgaWYgKCFzY3Jl
ZW5EZXB0aCkKQEAgLTE5Nyw0MSArMTc3LDEwIEBAIE9wdGlvbmFsPFNjcmVlbkRhdGE+IFNjcmVl
bkRhdGE6OmRlY29kZSgKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICNlbmRpZgogCi0g
ICAgQ29sb3JTcGFjZVR5cGUgZGF0YVR5cGU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRh
VHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBSZXRhaW5QdHI8Q0dD
b2xvclNwYWNlUmVmPiBjZ0NvbG9yU3BhY2U7Ci0gICAgc3dpdGNoIChkYXRhVHlwZSkgewotICAg
IGNhc2UgQ29sb3JTcGFjZVR5cGU6Ok5vbmU6Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ29s
b3JTcGFjZVR5cGU6Ok5hbWU6IHsKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBjb2xvclNwYWNl
TmFtZTsKLSAgICAgICAgZGVjb2RlciA+PiBjb2xvclNwYWNlTmFtZTsKLSAgICAgICAgQVNTRVJU
KGNvbG9yU3BhY2VOYW1lKTsKLSAgICAgICAgaWYgKCFjb2xvclNwYWNlTmFtZSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICAgICAgY2dDb2xvclNwYWNlID0gYWRvcHRD
RihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShjb2xvclNwYWNlTmFtZS0+Y3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSkpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDb2xvclNwYWNl
VHlwZTo6RGF0YTogewotICAgICAgICBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGljY0RhdGE7
Ci0gICAgICAgIGRlY29kZXIgPj4gaWNjRGF0YTsKLSAgICAgICAgQVNTRVJUKGljY0RhdGEpOwot
ICAgICAgICBpZiAoIWljY0RhdGEpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
Ci0gICAgICAgIGF1dG8gY29sb3JTcGFjZURhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBpY2NEYXRhLT5kYXRhKCksIGljY0RhdGEtPnNpemUoKSkpOwotICAg
ICAgICBjZ0NvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhJQ0NEYXRh
KGNvbG9yU3BhY2VEYXRhLmdldCgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICB9Ci0K
ICAgICByZXR1cm4geyB7CiAgICAgICAgIFdURk1vdmUoKnNjcmVlbkF2YWlsYWJsZVJlY3QpLAog
ICAgICAgICBXVEZNb3ZlKCpzY3JlZW5SZWN0KSwKLSAgICAgICAgV1RGTW92ZShjZ0NvbG9yU3Bh
Y2UpLAorICAgICAgICBXVEZNb3ZlKCpzY3JlZW5Db2xvclNwYWNlKSwKICAgICAgICAgV1RGTW92
ZSgqc2NyZWVuRGVwdGgpLAogICAgICAgICBXVEZNb3ZlKCpzY3JlZW5EZXB0aFBlckNvbXBvbmVu
dCksCiAgICAgICAgIFdURk1vdmUoKnNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciksCkBAIC0y
NTAsMTYgKzE5OSwzIEBAIE9wdGlvbmFsPFNjcmVlbkRhdGE+IFNjcmVlbkRhdGE6OmRlY29kZSgK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxh
dGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpTY3JlZW5EYXRhOjpDb2xvclNwYWNlVHlw
ZT4gewotICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgICAgIFdlYkNvcmU6OlNj
cmVlbkRhdGE6OkNvbG9yU3BhY2VUeXBlLAotICAgICAgICBXZWJDb3JlOjpTY3JlZW5EYXRhOjpD
b2xvclNwYWNlVHlwZTo6Tm9uZSwKLSAgICAgICAgV2ViQ29yZTo6U2NyZWVuRGF0YTo6Q29sb3JT
cGFjZVR5cGU6Ok5hbWUsCi0gICAgICAgIFdlYkNvcmU6OlNjcmVlbkRhdGE6OkNvbG9yU3BhY2VU
eXBlOjpEYXRhCi0gICAgPjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsNyArMTY0LDcgQEAgUmVmUHRyPE5hdGl2ZUlt
YWdlPiBCaXRtYXBJbWFnZTo6cHJlVHJhbgogICAgICAgICByZXR1cm4gaW1hZ2U7CiAKICAgICBh
dXRvIGNvcnJlY3RlZFNpemVGbG9hdCA9IGNvcnJlY3RlZFNpemUgPyBGbG9hdFNpemUoY29ycmVj
dGVkU2l6ZS52YWx1ZSgpKSA6IHNpemUoKTsKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoY29ycmVjdGVkU2l6ZUZsb2F0LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
LCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7Cisg
ICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvcnJlY3RlZFNpemVGbG9hdCwg
UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJl
dHVybiBpbWFnZTsKIApAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQ
YXR0ZXJuKEdyYXBoaWNzQ28KICAgICB9CiAKICAgICBpZiAoIW1fY2FjaGVkSW1hZ2UpIHsKLSAg
ICAgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihl
eHBhbmRlZEludFNpemUodGlsZVJlY3Quc2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCLCBjdHh0KTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUodGlsZVJlY3Quc2l6ZSgpKSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCksIGN0eHQpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAg
ICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNyArMTY4LDcgQEAgQ29s
b3JDb21wb25lbnRzPGZsb2F0LCA0PiBDb2xvcjo6dG9Db2xvcgogICAgIHJldHVybiBjb252ZXJD
b2xvckNvbXBvbmVudHMoaW5wdXRDb2xvclNwYWNlLCBjb21wb25lbnRzLCBvdXRwdXRDb2xvclNw
YWNlKTsKIH0KIAotQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBDb2xvcjo6dG9Db2xvckNvbXBv
bmVudHNJbkNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIG91dHB1dENvbG9yU3BhY2Up
IGNvbnN0CitDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IENvbG9yOjp0b0NvbG9yQ29tcG9uZW50
c0luQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIG91dHB1dENvbG9yU3Bh
Y2UpIGNvbnN0CiB7CiAgICAgYXV0byBbaW5wdXRDb2xvclNwYWNlLCBjb21wb25lbnRzXSA9IGNv
bG9yU3BhY2VBbmRDb21wb25lbnRzKCk7CiAgICAgcmV0dXJuIGNvbnZlckNvbG9yQ29tcG9uZW50
cyhpbnB1dENvbG9yU3BhY2UsIGNvbXBvbmVudHMsIG91dHB1dENvbG9yU3BhY2UpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29sb3JDb252ZXJzaW9uLmgiCiAjaW5j
bHVkZSAiQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkNvbG9yVXRpbGl0aWVzLmgiCisjaW5jbHVk
ZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CkBAIC0x
MjEsNyArMTIyLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPFQ+
IHRvU1JHQkFMb3NzeSgpIGNvbnN0IHsgcmV0dXJuIHRvQ29sb3JUeXBlTG9zc3k8U1JHQkE8VD4+
KCk7IH0KIAogICAgIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gdG9Db2xvckNvbXBvbmVudHNJ
bkNvbG9yU3BhY2UoQ29sb3JTcGFjZSkgY29uc3Q7Ci0gICAgQ29sb3JDb21wb25lbnRzPGZsb2F0
LCA0PiB0b0NvbG9yQ29tcG9uZW50c0luQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2Up
IGNvbnN0OworICAgIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gdG9Db2xvckNvbXBvbmVudHNJ
bkNvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJikgY29uc3Q7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8Q29sb3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0
LCA0Pj4gY29sb3JTcGFjZUFuZENvbXBvbmVudHMoKSBjb25zdDsKIApAQCAtMjY3LDYgKzI2OCw3
IEBAIGJvb2wgb3V0T2ZMaW5lQ29tcG9uZW50c3NFcXVhbElnbm9yaW5nU2UKIAogI2lmIFVTRShD
RykKIFdFQkNPUkVfRVhQT1JUIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYp
OworV0VCQ09SRV9FWFBPUlQgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBwbGF0Zm9ybUNvbnZl
cnRDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0Piwg
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CiAjZW5kaWYKIAogV0VCQ09SRV9FWFBPUlQg
V1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IENvbG9y
Jik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yQ29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDcgKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb2xvckNvbnZlcnNp
b24uaCIKIAorI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2lu
Y2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFz
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTMxOCwxOCArMzIwLDIxIEBAIENvbG9yQ29t
cG9uZW50czxmbG9hdCwgND4gY29udmVyQ29sb3JDb20KICAgICB9KTsKIH0KIAotQ29sb3JDb21w
b25lbnRzPGZsb2F0LCA0PiBjb252ZXJDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1dENv
bG9yU3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVudHMs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBvdXRwdXRDb2xvclNwYWNlKQorQ29sb3JDb21wb25lbnRz
PGZsb2F0LCA0PiBjb252ZXJDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1dENvbG9yU3Bh
Y2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVudHMsIGNvbnN0
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgb3V0cHV0Q29sb3JTcGFjZSkKIHsKKyNpZiBVU0UoQ0cp
CisgICAgcmV0dXJuIHBsYXRmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyhpbnB1dENvbG9yU3Bh
Y2UsIGlucHV0Q29sb3JDb21wb25lbnRzLCBvdXRwdXRDb2xvclNwYWNlKTsKKyNlbHNlCiAgICAg
cmV0dXJuIGNhbGxXaXRoQ29sb3JUeXBlKGlucHV0Q29sb3JDb21wb25lbnRzLCBpbnB1dENvbG9y
U3BhY2UsIFtvdXRwdXRDb2xvclNwYWNlXSAoY29uc3QgYXV0byYgaW5wdXRDb2xvcikgewotICAg
ICAgICBzd2l0Y2ggKG91dHB1dENvbG9yU3BhY2UpIHsKLSAgICAgICAgY2FzZSBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0I6CisgICAgICAgIHN3aXRjaCAob3V0cHV0Q29sb3JTcGFjZS5wbGF0
Zm9ybUNvbG9yU3BhY2UoKSkgeworICAgICAgICBjYXNlIFBsYXRmb3JtQ29sb3JTcGFjZTo6TmFt
ZTo6U1JHQjoKICAgICAgICAgICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhjb252ZXJ0Q29s
b3I8U1JHQkE8ZmxvYXQ+PihpbnB1dENvbG9yKSk7CiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NP
TE9SX1NQQUNFX0xJTkVBUl9TUkdCKQotICAgICAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6TGluZWFyU1JHQjoKKyAgICAgICAgY2FzZSBQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU6Okxp
bmVhclNSR0I6CiAgICAgICAgICAgICByZXR1cm4gYXNDb2xvckNvbXBvbmVudHMoY29udmVydENv
bG9yPExpbmVhclNSR0JBPGZsb2F0Pj4oaW5wdXRDb2xvcikpOwogI2VuZGlmCiAjaWYgRU5BQkxF
KERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCi0gICAgICAgIGNhc2UgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDM6CisgICAgICAgIGNhc2UgUGxhdGZvcm1Db2xvclNw
YWNlOjpOYW1lOjpEaXNwbGF5UDM6CiAgICAgICAgICAgICByZXR1cm4gYXNDb2xvckNvbXBvbmVu
dHMoY29udmVydENvbG9yPERpc3BsYXlQMzxmbG9hdD4+KGlucHV0Q29sb3IpKTsKICNlbmRpZgog
ICAgICAgICB9CkBAIC0zMzcsNiArMzQyLDcgQEAgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBj
b252ZXJDb2xvckNvbQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0
dXJuIGFzQ29sb3JDb21wb25lbnRzKGNvbnZlcnRDb2xvcjxTUkdCQTxmbG9hdD4+KGlucHV0Q29s
b3IpKTsKICAgICB9KTsKKyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNp
b24uaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JDb252ZXJzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE1ICsyOSwxNiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKKwog
ZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdDsKLWVudW0gY2xhc3MgRGVzdGluYXRpb25D
b2xvclNwYWNlIDogdWludDhfdDsKIAogLy8gQ29udmVyc2lvbiBmdW5jdGlvbiBmb3IgdHlwZWQg
Y29sb3JzLgogdGVtcGxhdGU8dHlwZW5hbWUgT3V0cHV0LCB0eXBlbmFtZSBJbnB1dD4gT3V0cHV0
IGNvbnZlcnRDb2xvcihjb25zdCBJbnB1dCYgY29sb3IpOwogCiAvLyBDb252ZXJzaW9uIGZ1bmN0
aW9ucyBmb3IgcmF3IGNvbG9yIGNvbXBvbmVudHMgd2l0aCBhc3NvY2lhdGVkIGNvbG9yIHNwYWNl
cy4KIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gY29udmVyQ29sb3JDb21wb25lbnRzKENvbG9y
U3BhY2UgaW5wdXRDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGlucHV0Q29s
b3JDb21wb25lbnRzLCBDb2xvclNwYWNlIG91dHB1dENvbG9yU3BhY2UpOwotQ29sb3JDb21wb25l
bnRzPGZsb2F0LCA0PiBjb252ZXJDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1dENvbG9y
U3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVudHMsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSBvdXRwdXRDb2xvclNwYWNlKTsKK0NvbG9yQ29tcG9uZW50czxm
bG9hdCwgND4gY29udmVyQ29sb3JDb21wb25lbnRzKENvbG9yU3BhY2UgaW5wdXRDb2xvclNwYWNl
LCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGlucHV0Q29sb3JDb21wb25lbnRzLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmIG91dHB1dENvbG9yU3BhY2UpOwogCiAKIC8vIEFsbCBjb2xv
ciB0eXBlcywgb3RoZXIgdGhhbiBYWVpBIG9yIHRob3NlIGluaGVyaXRpbmcgZnJvbSBSR0JUeXBl
LCBtdXN0IGltcGxlbWVudApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JTcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3JTcGFjZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCwy
NCArNjQsNCBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBDCiAgICAg
cmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkKLXsKLSAgICBzd2l0Y2ggKGNvbG9yU3Bh
Y2UpIHsKLSAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgdHMg
PDwgInNSR0IiOwotICAgICAgICBicmVhazsKLSNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1Jf
U1BBQ0VfTElORUFSX1NSR0IpCi0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVh
clNSR0I6Ci0gICAgICAgIHRzIDw8ICJMaW5lYXJTUkdCIjsKLSAgICAgICAgYnJlYWs7Ci0jZW5k
aWYKLSNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExBWV9QMykKLSAgICBj
YXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxheVAzOgotICAgICAgICB0cyA8PCAiRGlz
cGxheVAzIjsKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLSAgICB9Ci0gICAgcmV0dXJuIHRzOwot
fQotCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JT
cGFjZS5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvclNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEwICsyOCw3IEBACiAjaW5j
bHVkZSAiQ29sb3JUeXBlcy5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3Rm
L0VudW1UcmFpdHMuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBUZXh0U3RyZWFtOwotfQor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDcs
MTggKzQ0LDcgQEAgZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdCB7CiAgICAgWFlaX0Q1
MCwKIH07CiAKLWVudW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDogdWludDhfdCB7Ci0g
ICAgU1JHQgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikK
LSAgICAsIExpbmVhclNSR0IKLSNlbmRpZgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9T
UEFDRV9ESVNQTEFZX1AzKQotICAgICwgRGlzcGxheVAzCi0jZW5kaWYKLX07Ci0KLVdFQkNPUkVf
RVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBDb2xv
clNwYWNlKTsKLVdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6
OlRleHRTdHJlYW0mLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UpOworV0VCQ09SRV9FWFBPUlQgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgQ29sb3JTcGFjZSk7CiAKIAogdGVtcGxh
dGU8dHlwZW5hbWU+IHN0cnVjdCBDb2xvclNwYWNlTWFwcGluZzsKQEAgLTEwMiwyNSArODgsNiBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBGdW5jdG9yPiBjCiAgICAgcmV0dXJuIHN0
ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFrZUZyb21Db21wb25l
bnRzPFNSR0JBPFQ+Pihjb21wb25lbnRzKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIEZ1bmN0b3I+IGNvbnN0ZXhwciBkZWNsdHlwZShhdXRvKSBjYWxsV2l0aENvbG9yVHlw
ZShjb25zdCBDb2xvckNvbXBvbmVudHM8VCwgND4mIGNvbXBvbmVudHMsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBGdW5jdG9yJiYgZnVuY3RvcikKLXsKLSAgICBzd2l0Y2ggKGNv
bG9yU3BhY2UpIHsKLSAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFr
ZUZyb21Db21wb25lbnRzPFNSR0JBPFQ+Pihjb21wb25lbnRzKSk7Ci0jaWYgRU5BQkxFKERFU1RJ
TkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpMaW5lYXJTUkdCOgotICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3
YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8TGluZWFyU1JHQkE8VD4+
KGNvbXBvbmVudHMpKTsKLSNlbmRpZgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFD
RV9ESVNQTEFZX1AzKQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDM6
Ci0gICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3Rv
ciksIG1ha2VGcm9tQ29tcG9uZW50czxEaXNwbGF5UDM8VD4+KGNvbXBvbmVudHMpKTsKLSNlbmRp
ZgotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBzdGQ6Omlu
dm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIG1ha2VGcm9tQ29tcG9uZW50czxT
UkdCQTxUPj4oY29tcG9uZW50cykpOwotfQotCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApA
QCAtMTQxLDE3ICsxMDgsNCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6
OkNvCiAgICAgPjsKIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6
RGVzdGluYXRpb25Db2xvclNwYWNlPiB7Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwK
LSAgICAgICAgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlLAotICAgICAgICBXZWJDb3Jl
OjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IKLSNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09M
T1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgICAgICwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xv
clNwYWNlOjpMaW5lYXJTUkdCCi0jZW5kaWYKLSNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1Jf
U1BBQ0VfRElTUExBWV9QMykKLSAgICAgICAgLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OkRpc3BsYXlQMwotI2VuZGlmCi0gICAgPjsKLX07Ci0KIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bmNyZXRlSW1hZ2VCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4KIGNsYXNzIENvbmNyZXRlSW1hZ2VCdWZmZXIgOiBw
dWJsaWMgSW1hZ2VCdWZmZXIgewogcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEltYWdl
QnVmZmVyVHlwZSA9IENvbmNyZXRlSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4K
LSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RX
aW5kb3csIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdl
QnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93LCBBcmd1bWVudHMm
Ji4uLiBhcmd1bWVudHMpCiAgICAgewogICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBJbWFnZUJ1
ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMgeyBzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3Bh
Y2UsIHBpeGVsRm9ybWF0IH07CiAgICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpj
cmVhdGUocGFyYW1ldGVycywgaG9zdFdpbmRvdyk7CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbWFnZUJ1ZmZlclR5cGUgPSBDb25jcmV0ZUltYWdlQnVm
ZmVyLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CiAgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZl
clR5cGU+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAgIHsKLSAgICAgICAgYXV0
byBwYXJhbWV0ZXJzID0gSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzIHsgc2l6ZSwgMSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTggfTsKKyAgICAg
ICAgYXV0byBwYXJhbWV0ZXJzID0gSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzIHsgc2l6
ZSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCB9
OwogICAgICAgICBhdXRvIGJhY2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3JlYXRlKHBhcmFtZXRlcnMs
IGNvbnRleHQpOwogICAgICAgICBpZiAoIWJhY2tlbmQpCiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTE5NSw3ICsxOTUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIHNyY0Nv
bG9yU3BhY2UsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBkZXN0Q29sb3JTcGFjZSkgb3ZlcnJpZGUK
KyAgICB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiBzcmNDb2xvclNwYWNlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGRlc3RDb2xvclNw
YWNlKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVC
YWNrZW5kQ3JlYXRlZCgpKSB7CiAgICAgICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJ
bWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsNyBAQCBJbWFnZURyYXdSZXN1bHQgQ3Jvc3NmYWRl
R2VuZXJhdGVkSW1hZ2U6CiAKIHZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRy
YW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2lu
ZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgYXV0byBpbWFn
ZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBjb250ZXh0LnJlbmRlcmluZ01v
ZGUoKSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgp
OworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgY29u
dGV4dC5yZW5kZXJpbmdNb2RlKCksIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQ
aXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVy
bjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25D
b2xvclNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCisKKyNpbmNsdWRlIDx3dGYv
dGV4dC9UZXh0U3RyZWFtLmg+CisKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiQ29sb3JTcGFjZUNH
LmgiCisjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KKyNlbmRpZgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKQoreworI2lmIFVTRShDRykKKyAgICByZXR1cm4gRGVzdGluYXRpb25D
b2xvclNwYWNlKHNSR0JDb2xvclNwYWNlUmVmKCkpOworI2Vsc2UKKyAgICByZXR1cm4gRGVzdGlu
YXRpb25Db2xvclNwYWNlKFBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZTo6U1JHQik7CisjZW5kaWYK
K30KKworI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKK0Rl
c3RpbmF0aW9uQ29sb3JTcGFjZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKQor
eworI2lmIFVTRShDRykKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlKGxpbmVhclNS
R0JDb2xvclNwYWNlUmVmKCkpOworI2Vsc2UKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNw
YWNlKFBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZTo6TGluZWFyU1JHQik7CisjZW5kaWYKK30KKyNl
bmRpZgorCisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCitE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDMoKQor
eworI2lmIFVTRShDRykKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlKGRpc3BsYXlQ
M0NvbG9yU3BhY2VSZWYoKSk7CisjZWxzZQorICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UoUGxhdGZvcm1Db2xvclNwYWNlOjpOYW1lOjpEaXNwbGF5UDMpOworI2VuZGlmCit9CisjZW5k
aWYKKworRGVzdGluYXRpb25Db2xvclNwYWNlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UoUGxhdGZv
cm1Db2xvclNwYWNlIHBsYXRmb3JtQ29sb3JTcGFjZSkKKyAgICA6IG1fcGxhdGZvcm1Db2xvclNw
YWNlIHsgV1RGTW92ZShwbGF0Zm9ybUNvbG9yU3BhY2UpIH0KK3sKKyNpZiBVU0UoQ0cpCisgICAg
QVNTRVJUKG1fcGxhdGZvcm1Db2xvclNwYWNlKTsKKyNlbmRpZgorfQorCitib29sIG9wZXJhdG9y
PT0oY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBhLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmIGIpCit7CisjaWYgVVNFKENHKQorICAgIHJldHVybiBDR0NvbG9yU3BhY2VFcXVhbFRv
Q29sb3JTcGFjZShhLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBiLnBsYXRmb3JtQ29sb3JTcGFjZSgp
KTsKKyNlbHNlCisgICAgcmV0dXJuIGEucGxhdGZvcm1Db2xvclNwYWNlKCkgPT0gYi5wbGF0Zm9y
bUNvbG9yU3BhY2UoKTsKKyNlbmRpZgorfQorCitib29sIG9wZXJhdG9yIT0oY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiBhLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGIpCit7Cisg
ICAgcmV0dXJuICEoYSA9PSBiKTsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQoreworICAg
IGlmIChjb2xvclNwYWNlID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKQorICAgICAg
ICB0cyA8PCAic1JHQiI7CisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVB
Ul9TUkdCKQorICAgIGVsc2UgaWYgKGNvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNl
OjpMaW5lYXJTUkdCKCkpCisgICAgICAgIHRzIDw8ICJMaW5lYXJTUkdCIjsKKyNlbmRpZgorI2lm
IEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQorICAgIGVsc2UgaWYg
KGNvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDMoKSkKKyAgICAg
ICAgdHMgPDwgIkRpc3BsYXlQMyI7CisjZW5kaWYKKyNpZiBVU0UoQ0cpCisgICAgZWxzZSBpZiAo
YXV0byBkZXNjcmlwdGlvbiA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ29weUlDQ1Byb2ZpbGVEZXNj
cmlwdGlvbihjb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpKSkpCisgICAgICAgIHRzIDw8
IFN0cmluZyhkZXNjcmlwdGlvbi5nZXQoKSk7CisjZW5kaWYKKworICAgIHJldHVybiB0czsKK30K
KworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25D
b2xvclNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiUGxhdGZvcm1Db2xvclNwYWNlLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgeworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgU1JHQigpOworI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xP
Ul9TUEFDRV9MSU5FQVJfU1JHQikKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRGVzdGluYXRp
b25Db2xvclNwYWNlIExpbmVhclNSR0IoKTsKKyNlbmRpZgorI2lmIEVOQUJMRShERVNUSU5BVElP
Tl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgRGlzcGxheVAzKCk7CisjZW5kaWYKKworICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IERlc3RpbmF0aW9uQ29sb3JTcGFjZShQbGF0Zm9ybUNvbG9yU3BhY2UpOwor
ICAgIFBsYXRmb3JtQ29sb3JTcGFjZVZhbHVlIHBsYXRmb3JtQ29sb3JTcGFjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcGxhdGZvcm1Db2xvclNwYWNlLmdldCgpOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gZGVjb2Rl
KERlY29kZXImKTsKKworcHJpdmF0ZToKKyAgICBQbGF0Zm9ybUNvbG9yU3BhY2UgbV9wbGF0Zm9y
bUNvbG9yU3BhY2U7Cit9OworCitXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CitX
RUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yIT0oY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CisKK1dFQkNPUkVfRVhQT1JUIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYpOworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3Bs
YXRmb3JtQ29sb3JTcGFjZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8
RGVzdGluYXRpb25Db2xvclNwYWNlPiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPFBsYXRmb3JtQ29sb3JTcGFjZT4gcGxhdGZv
cm1Db2xvclNwYWNlOworICAgIGRlY29kZXIgPj4gcGxhdGZvcm1Db2xvclNwYWNlOworICAgIGlm
ICghcGxhdGZvcm1Db2xvclNwYWNlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB7IFdURk1vdmUoKnBsYXRmb3JtQ29sb3JT
cGFjZSkgfTsKK30KKworfQorCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFkaWVudEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybihHcmFw
aGljcwogICAgIHVuc2lnbmVkIGdlbmVyYXRvckhhc2ggPSBtX2dyYWRpZW50LT5oYXNoKCk7CiAK
ICAgICBpZiAoIW1fY2FjaGVkSW1hZ2UgfHwgbV9jYWNoZWRHZW5lcmF0b3JIYXNoICE9IGdlbmVy
YXRvckhhc2ggfHwgbV9jYWNoZWRBZGp1c3RlZFNpemUgIT0gYWRqdXN0ZWRTaXplIHx8ICFhcmVF
c3NlbnRpYWxseUVxdWFsKGRlc3RDb250ZXh0LnNjYWxlRmFjdG9yKCksIG1fY2FjaGVkU2NhbGVG
YWN0b3IpKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QiwgZGVzdENvbnRleHQpOworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoYWRqdXN0ZWRTaXplLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgZGVzdENvbnRleHQpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAg
ICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg4Myw3ICs4ODMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91
dFJvdW5kZWRSZWN0CiAgICAgY2xpcE91dChwYXRoKTsKIH0KIAotR3JhcGhpY3NDb250ZXh0OjpD
bGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9EcmF3aW5n
Q29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNw
YWNlIGNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYgZHJhd2lu
Z0Z1bmN0aW9uKQorR3JhcGhpY3NDb250ZXh0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQg
R3JhcGhpY3NDb250ZXh0OjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGdW5j
dGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikKIHsKICAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzUmVzdWx0OjpTdWNjZXNzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw4ICsyNiw4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ29sb3JT
cGFjZS5oIgogI2luY2x1ZGUgIkRhc2hBcnJheS5oIgorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29s
b3JTcGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRl
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgpAQCAtNDEwLDcgKzQxMCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRS
ZWN0Jik7CiAKICAgICBlbnVtIGNsYXNzIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCA6IGJv
b2wgeyBTdWNjZXNzLCBGYWlsZWRUb0NyZWF0ZUltYWdlQnVmZmVyIH07Ci0gICAgQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzUmVzdWx0IGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhp
Y3NDb250ZXh0Jik+JiYpOworICAgIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBjbGlwVG9E
cmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJik7CiAg
ICAgCiAgICAgSW50UmVjdCBjbGlwQm91bmRzKCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSA9
IDA7CiAgICAgdmlydHVhbCBJbnRSZWN0IGNsaXBCb3VuZHMoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBo
aWNzQ29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBj
bGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4m
JiBkcmF3aW5nRnVuY3Rpb24pID0gMDsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgdmlydHVhbCB2
b2lkIHBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24pID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuUGFpbnRGcmFtZUZvck1lZGlhKGNv
bnN0IE1lZGlhUGxheWVyJikgY29uc3QgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBjb25z
dCBmbG9hdCBNYXhDbGFtcGVkTGVuZ3RoID0gNDA5NjsKIHN0YXRpYyBjb25zdCBmbG9hdCBNYXhD
bGFtcGVkQXJlYSA9IE1heENsYW1wZWRMZW5ndGggKiBNYXhDbGFtcGVkTGVuZ3RoOwogCi1SZWZQ
dHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0IHNob3Vs
ZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBp
eGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQorUmVmUHRyPEltYWdlQnVm
ZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5n
TW9kZSByZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdCBzaG91bGRVc2VEaXNwbGF5
TGlzdCwgUmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxG
b3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7CiAgICAgUmVmUHRyPEltYWdl
QnVmZmVyPiBpbWFnZUJ1ZmZlcjsKICAgICAKQEAgLTU5LDcgKzU5LDcgQEAgUmVmUHRyPEltYWdl
QnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKAogICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0K
IAotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZv
cm1hdCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUg
cmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0
V2luZG93KiBob3N0V2luZG93KQogewogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZm
ZXI7CiAgICAgCkBAIC05NSw3ICs5NSw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZUMKICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1
ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQog
ewogICAgIGlmIChzaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0x
MTEsNyArMTExLDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQwog
ICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIHJldHVybiBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKHNpemUsIGNvbnRleHQucmVuZGVyaW5nTW9kZSgpLCByZXNvbHV0aW9uU2NhbGUs
IGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiB9CkBAIC0xNjcsNyArMTY3LDcgQEAg
SW50U2l6ZSBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZlclNpegogICAgIHJldHVybiBleHBh
bmRlZEludFNpemUoc2l6ZSAqIGNvbnRleHQuc2NhbGVGYWN0b3IoKSk7CiB9CiAKLVJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNvcHlSZWN0VG9CdWZmZXIoY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y29weVJl
Y3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAg
IGlmIChyZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgJKHJldmlzaW9u
IDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEzICs0NSwxMyBAQCBzdHJ1Y3QgSXRlbUJ1ZmZlckhh
bmRsZTsKIGNsYXNzIEltYWdlQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPElt
YWdlQnVmZmVyPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEltYWdlQnVmZmVyPiB7CiBwdWJsaWM6
CiAgICAgLy8gV2lsbCByZXR1cm4gYSBudWxsIHBvaW50ZXIgb24gYWxsb2NhdGlvbiBmYWlsdXJl
LgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShj
b25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdCwgUmVu
ZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UsIFBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNp
emUmLCBSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZs
b2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQ
dXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYsIFBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNp
emUmLCBSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYsIFBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIp
OwogCiAgICAgLy8gQ3JlYXRlIGFuIGltYWdlIGJ1ZmZlciBjb21wYXRpYmxlIHdpdGggdGhlIGNv
bnRleHQsIHdpdGggc3VpdGFibGUgcmVzb2x1dGlvbiBmb3IgZHJhd2luZyBpbnRvIHRoZSBidWZm
ZXIgYW5kIHRoZW4gaW50byB0aGlzIGNvbnRleHQuCiAgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBjb25zdCBHcmFw
aGljc0NvbnRleHQmKTsKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgY29u
c3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3Jl
YXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CisgICAg
c3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBG
bG9hdFNpemUmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICAvLyBU
aGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQgd2hlbiBjbGFtcGluZyB0aGUgSW1hZ2VCdWZmZXIgd2hp
Y2ggaXMgY3JlYXRlZCBmb3IgZmlsdGVyLCBtYXNrZXIgb3IgY2xpcHBlci4KICAgICBzdGF0aWMg
Ym9vbCBzaXplTmVlZHNDbGFtcGluZyhjb25zdCBGbG9hdFNpemUmKTsKQEAgLTEwNyw3ICsxMDcs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5n
U3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJlc2Vy
dmVSZXNvbHV0aW9uOjpObykgY29uc3QgPSAwOwogCiAgICAgLy8gQ3JlYXRlIGFuIGltYWdlIGJ1
ZmZlciBjb21wYXRpYmxlIHdpdGggdGhlIGNvbnRleHQgYW5kIGNvcHkgcmVjdCBmcm9tIHRoaXMg
YnVmZmVyIGludG8gdGhpcyBuZXcgb25lLgotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY29weVJl
Y3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYpOworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY29weVJlY3RUb0J1
ZmZlcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25z
dCBHcmFwaGljc0NvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
PSB7IH0pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiA9IHsgfSkgPSAwOwpAQCAtMTIwLDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgY2xpcFRvTWFzayhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgY29udmVydFRvTHVtaW5hbmNlTWFzaygpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9y
U3BhY2Ugc3JjQ29sb3JTcGFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGRzdENvbG9yU3BhY2Up
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmIHNyY0NvbG9yU3BhY2UsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYgZHN0Q29sb3JTcGFjZSkgPSAwOwogCiAgICAgdmlydHVhbCBTdHJpbmcgdG9EYXRhVVJMKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IFdURjo6bnVs
bG9wdCwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkgPSBXVEY6Om51bGxvcHQpIGNvbnN0ID0g
MDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFj
a2VuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTMsNiArNTMsOCBAQCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVyQmFja2Vu
ZChjCiB7CiB9CiAKK0ltYWdlQnVmZmVyQmFja2VuZDo6fkltYWdlQnVmZmVyQmFja2VuZCgpID0g
ZGVmYXVsdDsKKwogUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnNpbmtJ
bnRvTmF0aXZlSW1hZ2UoKQogewogICAgIHJldHVybiBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlC
YWNraW5nU3RvcmUpOwpAQCAtMTE0LDE1ICsxMTYsMTcgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+
IEltYWdlQnVmZmVyQmFja2VuZAogICAgIGlmIChkZXN0aW5hdGlvblJlY3Quc2l6ZSgpICE9IHNv
dXJjZVJlY3RTY2FsZWQuc2l6ZSgpKQogICAgICAgICBwaXhlbEJ1ZmZlci0+ZGF0YSgpLnplcm9G
aWxsKCk7CiAKLSAgICBDb25zdFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgc291cmNlOwotICAg
IHNvdXJjZS5mb3JtYXQgPSB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQs
IHBpeGVsRm9ybWF0KCksIGNvbG9yU3BhY2UoKSB9OwotICAgIHNvdXJjZS5ieXRlc1BlclJvdyA9
IGJ5dGVzUGVyUm93KCk7Ci0gICAgc291cmNlLnJvd3MgPSByZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPihkYXRhKSArIHNvdXJjZVJlY3RDbGlwcGVkLnkoKSAqIHNvdXJjZS5ieXRlc1BlclJvdyAr
IHNvdXJjZVJlY3RDbGlwcGVkLngoKSAqIDQ7CisgICAgQ29uc3RQaXhlbEJ1ZmZlckNvbnZlcnNp
b25WaWV3IHNvdXJjZSB7CisgICAgICAgIHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVs
dGlwbGllZCwgcGl4ZWxGb3JtYXQoKSwgY29sb3JTcGFjZSgpIH0sCisgICAgICAgIGJ5dGVzUGVy
Um93KCksCisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEpICsgc291cmNl
UmVjdENsaXBwZWQueSgpICogc291cmNlLmJ5dGVzUGVyUm93ICsgc291cmNlUmVjdENsaXBwZWQu
eCgpICogNAorICAgIH07CiAgICAgCi0gICAgUGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBkZXN0
aW5hdGlvbjsKLSAgICBkZXN0aW5hdGlvbi5mb3JtYXQgPSBkZXN0aW5hdGlvbkZvcm1hdDsKLSAg
ICBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyA9IDQgKiBzb3VyY2VSZWN0U2NhbGVkLndpZHRoKCk7
Ci0gICAgZGVzdGluYXRpb24ucm93cyA9IHBpeGVsQnVmZmVyLT5kYXRhKCkuZGF0YSgpICsgZGVz
dGluYXRpb25SZWN0LnkoKSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ICsgZGVzdGluYXRpb25S
ZWN0LngoKSAqIDQ7CisgICAgUGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBkZXN0aW5hdGlvbiB7
CisgICAgICAgIGRlc3RpbmF0aW9uRm9ybWF0LAorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oNCAqIHNvdXJjZVJlY3RTY2FsZWQud2lkdGgoKSksCisgICAgICAgIHBpeGVsQnVmZmVyLT5k
YXRhKCkuZGF0YSgpICsgZGVzdGluYXRpb25SZWN0LnkoKSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVy
Um93ICsgZGVzdGluYXRpb25SZWN0LngoKSAqIDQKKyAgICB9OwogCiAgICAgY29udmVydEltYWdl
UGl4ZWxzKHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uUmVjdC5zaXplKCkpOwogCkBA
IC0xNDcsMTUgKzE1MSwxNyBAQCB2b2lkIEltYWdlQnVmZmVyQmFja2VuZDo6cHV0UGl4ZWxCdWZm
ZXIoCiAgICAgZGVzdGluYXRpb25SZWN0LmludGVyc2VjdChiYWNrZW5kUmVjdCgpKTsKICAgICBz
b3VyY2VSZWN0Q2xpcHBlZC5zZXRTaXplKGRlc3RpbmF0aW9uUmVjdC5zaXplKCkpOwogCi0gICAg
Q29uc3RQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IHNvdXJjZTsKLSAgICBzb3VyY2UuZm9ybWF0
ID0gc291cmNlUGl4ZWxCdWZmZXIuZm9ybWF0KCk7Ci0gICAgc291cmNlLmJ5dGVzUGVyUm93ID0g
NCAqIHNvdXJjZVBpeGVsQnVmZmVyLnNpemUoKS53aWR0aCgpOwotICAgIHNvdXJjZS5yb3dzID0g
c291cmNlUGl4ZWxCdWZmZXIuZGF0YSgpLmRhdGEoKSArIHNvdXJjZVJlY3RDbGlwcGVkLnkoKSAq
IHNvdXJjZS5ieXRlc1BlclJvdyArIHNvdXJjZVJlY3RDbGlwcGVkLngoKSAqIDQ7Ci0KLSAgICBQ
aXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IGRlc3RpbmF0aW9uOwotICAgIGRlc3RpbmF0aW9uLmZv
cm1hdCA9IHsgZGVzdGluYXRpb25BbHBoYUZvcm1hdCwgcGl4ZWxGb3JtYXQoKSwgY29sb3JTcGFj
ZSgpIH07Ci0gICAgZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgPSBieXRlc1BlclJvdygpOwotICAg
IGRlc3RpbmF0aW9uLnJvd3MgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhKSArIGRl
c3RpbmF0aW9uUmVjdC55KCkgKiBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyArIGRlc3RpbmF0aW9u
UmVjdC54KCkgKiA0OworICAgIENvbnN0UGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBzb3VyY2Ug
eworICAgICAgICBzb3VyY2VQaXhlbEJ1ZmZlci5mb3JtYXQoKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KDQgKiBzb3VyY2VQaXhlbEJ1ZmZlci5zaXplKCkud2lkdGgoKSksCisgICAg
ICAgIHNvdXJjZVBpeGVsQnVmZmVyLmRhdGEoKS5kYXRhKCkgKyBzb3VyY2VSZWN0Q2xpcHBlZC55
KCkgKiBzb3VyY2UuYnl0ZXNQZXJSb3cgKyBzb3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0CisgICAg
fTsKKworICAgIFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgZGVzdGluYXRpb24geworICAgICAg
ICB7IGRlc3RpbmF0aW9uQWxwaGFGb3JtYXQsIHBpeGVsRm9ybWF0KCksIGNvbG9yU3BhY2UoKSB9
LAorICAgICAgICBieXRlc1BlclJvdygpLAorICAgICAgICByZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPihkYXRhKSArIGRlc3RpbmF0aW9uUmVjdC55KCkgKiBkZXN0aW5hdGlvbi5ieXRlc1BlclJv
dyArIGRlc3RpbmF0aW9uUmVjdC54KCkgKiA0CisgICAgfTsKIAogICAgIGNvbnZlcnRJbWFnZVBp
eGVscyhzb3VyY2UsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvblJlY3Quc2l6ZSgpKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyQmFja2VuZC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyAr
MjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKKyNpbmNs
dWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNp
bmNsdWRlICJHcmFwaGljc1R5cGVzR0wuaCIKICNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9u
cy5oIgpAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFBpeGVsRm9ybWF0IHBpeGVs
Rm9ybWF0OwogICAgIH07CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbWFnZUJ1ZmZl
ckJhY2tlbmQoKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SW1hZ2VC
dWZmZXJCYWNrZW5kKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSW50U2l6ZSBjYWxj
dWxhdGVCYWNrZW5kU2l6ZShjb25zdCBQYXJhbWV0ZXJzJik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIHNpemVfdCBjYWxjdWxhdGVNZW1vcnlDb3N0KGNvbnN0IEludFNpemUmIGJhY2tlbmRT
aXplLCB1bnNpZ25lZCBieXRlc1BlclJvdyk7CkBAIC0xMDIsNyArMTAyLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBjbGlwVG9NYXNrKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYpIHsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb252ZXJ0VG9MdW1pbmFuY2VN
YXNrKCk7Ci0gICAgdmlydHVhbCB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25D
b2xvclNwYWNlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB0
cmFuc2Zvcm1Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYpIHsgfQogCiAgICAgdmlydHVhbCBTdHJpbmcgdG9EYXRhVVJM
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2Vy
dmVSZXNvbHV0aW9uKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8dWludDhfdD4gdG9E
YXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkgY29u
c3QgPSAwOwpAQCAtMTQwLDcgKzE0MCw3IEBAIHByb3RlY3RlZDoKIAogICAgIEludFNpemUgbG9n
aWNhbFNpemUoKSBjb25zdCB7IHJldHVybiBJbnRTaXplKG1fcGFyYW1ldGVycy5sb2dpY2FsU2l6
ZSk7IH0KICAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3BhcmFt
ZXRlcnMucmVzb2x1dGlvblNjYWxlOyB9Ci0gICAgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9y
U3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMuY29sb3JTcGFjZTsgfQorICAgIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFyYW1ldGVycy5jb2xvclNwYWNlOyB9CiAgICAgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQoKSBj
b25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMucGl4ZWxGb3JtYXQ7IH0KIAogICAgIEludFJlY3Qg
bG9naWNhbFJlY3QoKSBjb25zdCB7IHJldHVybiBJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIGxv
Z2ljYWxTaXplKCkpOyB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGl4ZWxCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QaXhlbEJ1ZmZlci5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsy
Niw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFscGhhUHJlbXVsdGlwbGljYXRpb24u
aCIKLSNpbmNsdWRlICJDb2xvclNwYWNlLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNw
YWNlLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlBpeGVsQnVmZmVyRm9ybWF0
LmgiCiAjaW5jbHVkZSAiUGl4ZWxGb3JtYXQuaCIKQEAgLTg3LDE5ICs4NywyMSBAQCB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIFBpeGVsQnVmZmVyCiAKIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZlcjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiB7Ci0gICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0OwotICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoZm9ybWF0KSkKKyAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlckZvcm1hdD4gZm9ybWF0
OworICAgIGRlY29kZXIgPj4gZm9ybWF0OworICAgIGlmICghZm9ybWF0KQogICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogCiAgICAgLy8gRklYTUU6IFN1cHBvcnQgbm9uLTggYml0IGZvcm1h
dHMuCi0gICAgaWYgKCEoZm9ybWF0LnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCB8
fCBmb3JtYXQucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KSkKKyAgICBpZiAoIShm
b3JtYXQtPnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCB8fCBmb3JtYXQtPnBpeGVs
Rm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiAKLSAgICBJbnRTaXplIHNpemU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaXplKSkK
KyAgICBPcHRpb25hbDxJbnRTaXplPiBzaXplOworICAgIGRlY29kZXIgPj4gc2l6ZTsKKyAgICBp
ZiAoIXNpemUpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBhdXRvIGNvbXB1
dGVkQnVmZmVyU2l6ZSA9IFBpeGVsQnVmZmVyOjpjb21wdXRlQnVmZmVyU2l6ZShmb3JtYXQsIHNp
emUpOworICAgIGF1dG8gY29tcHV0ZWRCdWZmZXJTaXplID0gUGl4ZWxCdWZmZXI6OmNvbXB1dGVC
dWZmZXJTaXplKCpmb3JtYXQsICpzaXplKTsKICAgICBpZiAoY29tcHV0ZWRCdWZmZXJTaXplLmhh
c092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIApAQCAtMTA3LDcg
KzEwOSw3IEBAIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPFBpeGVsQnUKICAgICBp
ZiAoIWRlY29kZXIudGVtcGxhdGUgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjx1aW50OF90
PihidWZmZXJTaXplKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIGF1dG8g
cmVzdWx0ID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZUZvckRlY29kaW5nKGZvcm1hdCwgc2l6ZSwg
YnVmZmVyU2l6ZSk7CisgICAgYXV0byByZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlRm9y
RGVjb2RpbmcoV1RGTW92ZSgqZm9ybWF0KSwgKnNpemUsIGJ1ZmZlclNpemUpOwogICAgIGlmICgh
cmVzdWx0KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckNvbnZlcnNpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVy
c2lvbi5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BpeGVsQnVmZmVyQ29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEy
ICsyNywxMSBAQAogI2luY2x1ZGUgIlBpeGVsQnVmZmVyQ29udmVyc2lvbi5oIgogCiAjaW5jbHVk
ZSAiQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIgotI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKKyNp
bmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAj
aW5jbHVkZSAiUGl4ZWxGb3JtYXQuaCIKIAogI2lmIFVTRShBQ0NFTEVSQVRFKSAmJiBVU0UoQ0cp
Ci0jaW5jbHVkZSAiQ29sb3JTcGFjZUNHLmgiCiAjaW5jbHVkZSA8QWNjZWxlcmF0ZS9BY2NlbGVy
YXRlLmg+CiAjZW5kaWYKIApAQCAtNzEsNyArNzAsNyBAQCBzdGF0aWMgaW5saW5lIHZJbWFnZV9D
R0ltYWdlRm9ybWF0IG1ha2VWCiAKICAgICByZXN1bHQuYml0c1BlckNvbXBvbmVudCA9IGJpdHNQ
ZXJDb21wb25lbnQ7CiAgICAgcmVzdWx0LmJpdHNQZXJQaXhlbCA9IGJpdHNQZXJQaXhlbDsKLSAg
ICByZXN1bHQuY29sb3JTcGFjZSA9IGNhY2hlZENHQ29sb3JTcGFjZShmb3JtYXQuY29sb3JTcGFj
ZSk7CisgICAgcmVzdWx0LmNvbG9yU3BhY2UgPSBmb3JtYXQuY29sb3JTcGFjZS5wbGF0Zm9ybUNv
bG9yU3BhY2UoKTsKICAgICByZXN1bHQuYml0bWFwSW5mbyA9IGJpdG1hcEluZm87CiAgICAgcmVz
dWx0LnZlcnNpb24gPSAwOwogICAgIHJlc3VsdC5kZWNvZGUgPSBudWxscHRyOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1h
dC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QaXhlbEJ1ZmZlckZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFscGhhUHJlbXVsdGlwbGljYXRpb24uaCIKLSNpbmNs
dWRlICJDb2xvclNwYWNlLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAj
aW5jbHVkZSAiUGl4ZWxGb3JtYXQuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9PcHRpb25hbC5oPgpAQCAtNTEsMTkgKzUxLDIyIEBAIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+IHZvaWQgUGl4ZWxCdWZmZXIKIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9u
YWw8UGl4ZWxCdWZmZXJGb3JtYXQ+IFBpeGVsQnVmZmVyRm9ybWF0OjpkZWNvZGUoRGVjb2RlciYg
ZGVjb2RlcikKIHsKLSAgICBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGFscGhhRm9ybWF0OwotICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoYWxwaGFGb3JtYXQpKQorICAgIE9wdGlvbmFsPEFscGhhUHJl
bXVsdGlwbGljYXRpb24+IGFscGhhRm9ybWF0OworICAgIGRlY29kZXIgPj4gYWxwaGFGb3JtYXQ7
CisgICAgaWYgKCFhbHBoYUZvcm1hdCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAot
ICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGl4
ZWxGb3JtYXQpKQorICAgIE9wdGlvbmFsPFBpeGVsRm9ybWF0PiBwaXhlbEZvcm1hdDsKKyAgICBk
ZWNvZGVyID4+IHBpeGVsRm9ybWF0OworICAgIGlmICghcGl4ZWxGb3JtYXQpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFj
ZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbG9yU3BhY2UpKQorICAgIE9wdGlvbmFsPERl
c3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKKyAgICBkZWNvZGVyID4+IGNvbG9yU3Bh
Y2U7CisgICAgaWYgKCFjb2xvclNwYWNlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
Ci0gICAgcmV0dXJuIHsgeyBhbHBoYUZvcm1hdCwgcGl4ZWxGb3JtYXQsIGNvbG9yU3BhY2UgfSB9
OworICAgIHJldHVybiB7IHsgV1RGTW92ZSgqYWxwaGFGb3JtYXQpLCBXVEZNb3ZlKCpwaXhlbEZv
cm1hdCksIFdURk1vdmUoKmNvbG9yU3BhY2UpIH0gfTsKIH0KIAogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1Db2xvclNwYWNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1Db2xvclNwYWNlLmgJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZv
cm1Db2xvclNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShDRykKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+Cit0eXBlZGVmIHN0cnVjdCBDR0NvbG9yU3BhY2UqIENHQ29sb3JTcGFjZVJlZjsKKyNlbHNl
CisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4K
KyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBVU0UoQ0cpCisKK3VzaW5nIFBs
YXRmb3JtQ29sb3JTcGFjZSA9IFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+OwordXNpbmcgUGxh
dGZvcm1Db2xvclNwYWNlVmFsdWUgPSBDR0NvbG9yU3BhY2VSZWY7CisKKyNlbHNlCisKK2NsYXNz
IFBsYXRmb3JtQ29sb3JTcGFjZSB7CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBOYW1lIHsKKyAg
ICAgICAgU1JHQgorI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JH
QikKKyAgICAgICAgLCBMaW5lYXJTUkdCCisjZW5kaWYKKyNpZiBFTkFCTEUoREVTVElOQVRJT05f
Q09MT1JfU1BBQ0VfRElTUExBWV9QMykKKyAgICAgICAgLCBEaXNwbGF5UDMKKyNlbmRpZgorICAg
IH07CisKKyAgICBQbGF0Zm9ybUNvbG9yU3BhY2UoTmFtZSBuYW1lKQorICAgICAgICA6IG1fbmFt
ZSB7IG5hbWUgfQorICAgIHsKKyAgICB9CisKKyAgICBOYW1lIGdldCgpIGNvbnN0IHsgcmV0dXJu
IG1fbmFtZTsgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25h
bDxQbGF0Zm9ybUNvbG9yU3BhY2U+IGRlY29kZShEZWNvZGVyJik7CisKK3ByaXZhdGU6CisgICAg
TmFtZSBtX25hbWU7CisKK307Cit1c2luZyBQbGF0Zm9ybUNvbG9yU3BhY2VWYWx1ZSA9IFBsYXRm
b3JtQ29sb3JTcGFjZTo6TmFtZTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBQbGF0
Zm9ybUNvbG9yU3BhY2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVu
Y29kZXIgPDwgbV9uYW1lOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxQ
bGF0Zm9ybUNvbG9yU3BhY2U+IFBsYXRmb3JtQ29sb3JTcGFjZTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCit7CisgICAgT3B0aW9uYWw8UGxhdGZvcm1Db2xvclNwYWNlOjpOYW1lPiBuYW1lOwor
ICAgIGRlY29kZXIgPj4gbmFtZTsKKyAgICBpZiAoIW5hbWUpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICByZXR1cm4gUGxhdGZvcm1Db2xvclNwYWNlIHsgKm5hbWUgfTsKK30K
KworI2VuZGlmCisKK30KKworbmFtZXNwYWNlIFdURiB7CisKKyNpZiAhVVNFKENHKQorCit0ZW1w
bGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlBsYXRmb3JtQ29sb3JTcGFjZTo6TmFt
ZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OlBs
YXRmb3JtQ29sb3JTcGFjZTo6TmFtZSwKKyAgICAgICAgV2ViQ29yZTo6UGxhdGZvcm1Db2xvclNw
YWNlOjpOYW1lOjpTUkdCCisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVB
Ul9TUkdCKQorICAgICAgICAsIFdlYkNvcmU6OlBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZTo6TGlu
ZWFyU1JHQgorI2VuZGlmCisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BM
QVlfUDMpCisgICAgICAgICwgV2ViQ29yZTo6UGxhdGZvcm1Db2xvclNwYWNlOjpOYW1lOjpEaXNw
bGF5UDMKKyNlbmRpZgorICAgID47Cit9OworCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV1RG
CisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2Ft
cGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9S
ZW1vdGVWaWRlb1NhbXBsZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTYsNyArNTYsNyBAQCBzdGF0aWMgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+
CiAgICAgfQogCiAgICAgSW50U2l6ZSBzaXplIHsgc3RhdGljX2Nhc3Q8aW50PihDVlBpeGVsQnVm
ZmVyR2V0V2lkdGgocGl4ZWxCdWZmZXIpKSwgc3RhdGljX2Nhc3Q8aW50PihDVlBpeGVsQnVmZmVy
R2V0SGVpZ2h0KHBpeGVsQnVmZmVyKSkgfTsKLSAgICBhdXRvIGlvU3VyZmFjZSA9ICBJT1N1cmZh
Y2U6OmNyZWF0ZShzaXplLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBJT1N1cmZhY2U6OkZvcm1hdDo6
QkdSQSk7CisgICAgYXV0byBpb1N1cmZhY2UgPSAgSU9TdXJmYWNlOjpjcmVhdGUoc2l6ZSwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIElPU3VyZmFjZTo6Rm9ybWF0OjpCR1JBKTsKIAog
ICAgIElPU3VyZmFjZTo6TG9ja2VyIGxvY2soKmlvU3VyZmFjZSk7CiAgICAgdkltYWdlX0J1ZmZl
ciBzcmM7CkBAIC0xMTMsNyArMTEzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2Ft
cGxlPiBSZW1vdAogICAgICAgICBzdXJmYWNlID0gaW9TdXJmYWNlLT5zdXJmYWNlKCk7CiAgICAg
fQogCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4obmV3IFJl
bW90ZVZpZGVvU2FtcGxlKHN1cmZhY2UsIHNSR0JDb2xvclNwYWNlUmVmKCksIHNhbXBsZS5wcmVz
ZW50YXRpb25UaW1lKCksIHNhbXBsZS52aWRlb1JvdGF0aW9uKCksIHNhbXBsZS52aWRlb01pcnJv
cmVkKCkpKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPihu
ZXcgUmVtb3RlVmlkZW9TYW1wbGUoc3VyZmFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCksIHNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCksIHNhbXBsZS52aWRlb1JvdGF0aW9uKCksIHNh
bXBsZS52aWRlb01pcnJvcmVkKCkpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVv
U2FtcGxlPiBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKENWUGl4ZWxCdWZmZXJSZWYgaW1hZ2VC
dWZmZXIsIE1lZGlhVGltZSYmIHByZXNlbnRhdGlvblRpbWUsIE1lZGlhU2FtcGxlOjpWaWRlb1Jv
dGF0aW9uIHJvdGF0aW9uKQpAQCAtMTI0LDEwICsxMjQsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZVZpZGVvU2FtcGxlPiBSZW1vdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAK
LSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPihuZXcgUmVtb3Rl
VmlkZW9TYW1wbGUoc3VyZmFjZSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwgV1RGTW92ZShwcmVzZW50
YXRpb25UaW1lKSwgcm90YXRpb24sIGZhbHNlKSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVWaWRlb1NhbXBsZT4obmV3IFJlbW90ZVZpZGVvU2FtcGxlKHN1cmZhY2UsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBXVEZNb3ZlKHByZXNlbnRhdGlvblRpbWUpLCByb3Rh
dGlvbiwgZmFsc2UpKTsKIH0KIAotUmVtb3RlVmlkZW9TYW1wbGU6OlJlbW90ZVZpZGVvU2FtcGxl
KElPU3VyZmFjZVJlZiBzdXJmYWNlLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwgTWVkaWFU
aW1lJiYgdGltZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24sIGJvb2wgbWly
cm9yZWQpCitSZW1vdGVWaWRlb1NhbXBsZTo6UmVtb3RlVmlkZW9TYW1wbGUoSU9TdXJmYWNlUmVm
IHN1cmZhY2UsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgTWVkaWFU
aW1lJiYgdGltZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24sIGJvb2wgbWly
cm9yZWQpCiAgICAgOiBtX2lvU3VyZmFjZShXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21T
dXJmYWNlKHN1cmZhY2UsIGNvbG9yU3BhY2UpKQogICAgICwgbV9yb3RhdGlvbihyb3RhdGlvbikK
ICAgICAsIG1fdGltZShXVEZNb3ZlKHRpbWUpKQpAQCAtMTQwLDcgKzE0MCw3IEBAIFJlbW90ZVZp
ZGVvU2FtcGxlOjpSZW1vdGVWaWRlb1NhbXBsZShJT1MKIElPU3VyZmFjZVJlZiBSZW1vdGVWaWRl
b1NhbXBsZTo6c3VyZmFjZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lvU3VyZmFjZSAmJiBtX3Nl
bmRSaWdodCkKLSAgICAgICAgY29uc3RfY2FzdDxSZW1vdGVWaWRlb1NhbXBsZSo+KHRoaXMpLT5t
X2lvU3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZN
b3ZlKGNvbnN0X2Nhc3Q8UmVtb3RlVmlkZW9TYW1wbGUqPih0aGlzKS0+bV9zZW5kUmlnaHQpLCBz
UkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICAgICAgY29uc3RfY2FzdDxSZW1vdGVWaWRlb1NhbXBs
ZSo+KHRoaXMpLT5tX2lvU3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNl
bmRSaWdodChXVEZNb3ZlKGNvbnN0X2Nhc3Q8UmVtb3RlVmlkZW9TYW1wbGUqPih0aGlzKS0+bV9z
ZW5kUmlnaHQpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAKICAgICByZXR1cm4g
bV9pb1N1cmZhY2UgPyBtX2lvU3VyZmFjZS0+c3VyZmFjZSgpIDogbnVsbHB0cjsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9T
YW1wbGUuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3
IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgUmVtb3RlVmlkZW9TYW1wbGUoSU9T
dXJmYWNlUmVmLCBDR0NvbG9yU3BhY2VSZWYsIE1lZGlhVGltZSYmLCBNZWRpYVNhbXBsZTo6Vmlk
ZW9Sb3RhdGlvbiwgYm9vbCk7CisgICAgUmVtb3RlVmlkZW9TYW1wbGUoSU9TdXJmYWNlUmVmLCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBNZWRpYVRpbWUmJiwgTWVkaWFTYW1wbGU6OlZp
ZGVvUm90YXRpb24sIGJvb2wpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3Vy
ZmFjZT4gbV9pb1N1cmZhY2U7CiAgICAgV1RGOjpNYWNoU2VuZFJpZ2h0IG1fc2VuZFJpZ2h0OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5j
cHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1NoYWRvd0JsdXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgY2xlYXJTY3JhdGNoQnVmZmVyKCk7CiAKICAgICAgICAgLy8gU2hhZG93Qmx1ciBp
cyBub3QgdXNlZCB3aXRoIGFjY2VsZXJhdGVkIGRyYXdpbmcsIHNvIGl0J3MgT0sgdG8gbWFrZSBh
biB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZCBidWZmZXIuCi0gICAgICAgIG1faW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJvdW5kZWRTaXplLCBSZW5kZXJpbmdNb2RlOjpV
bmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0
OjpCR1JBOCk7CisgICAgICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJv
dW5kZWRTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgcmV0dXJuIG1f
aW1hZ2VCdWZmZXI7CiAgICAgfQogCkBAIC02MDQsNyArNjA0LDcgQEAgdm9pZCBTaGFkb3dCbHVy
OjpkcmF3SW5zZXRTaGFkb3coY29uc3QgQQogCiB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hh
ZG93V2l0aG91dFRpbGluZyhjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0JiBzaGFkb3dlZFJlY3QsIGNvbnN0IExheWVySW1hZ2VQcm9wZXJ0aWVzJiBsYXllcklt
YWdlUHJvcGVydGllcywgY29uc3QgRHJhd0J1ZmZlckNhbGxiYWNrJiBkcmF3QnVmZmVyKQogewot
ICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoZXhwYW5kZWRJbnRTaXpl
KGxheWVySW1hZ2VQcm9wZXJ0aWVzLmxheWVyU2l6ZSksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4
KTsKKyAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50
U2l6ZShsYXllckltYWdlUHJvcGVydGllcy5sYXllclNpemUpLCBSZW5kZXJpbmdNb2RlOjpVbmFj
Y2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6
OkJHUkE4KTsKICAgICBpZiAoIWxheWVySW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApAQCAtNjMy
LDcgKzYzMiw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGkKIAog
dm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UmVjdCYgZnVsbFJlY3QsIGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBMYXllckltYWdlUHJvcGVydGllcyYgbGF5ZXJJbWFnZVBy
b3BlcnRpZXMsIGNvbnN0IERyYXdCdWZmZXJDYWxsYmFjayYgZHJhd0J1ZmZlcikKIHsKLSAgICBh
dXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZShsYXll
ckltYWdlUHJvcGVydGllcy5sYXllclNpemUpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
LCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7Cisg
ICAgYXV0byBsYXllckltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShleHBhbmRlZEludFNpemUo
bGF5ZXJJbWFnZVByb3BlcnRpZXMubGF5ZXJTaXplKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVy
YXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JB
OCk7CiAgICAgaWYgKCFsYXllckltYWdlKQogICAgICAgICByZXR1cm47CiAKQEAgLTcwNSw3ICs3
MDUsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluCiAjZW5kaWYK
IAogICAgIGlmICghbGF5ZXJJbWFnZUJ1ZmZlcikgewotICAgICAgICBsYXllckltYWdlQnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJH
UkE4KTsKKyAgICAgICAgbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGVt
cGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgaWYgKCFsYXll
ckltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTc2Myw3ICs3NjMs
NyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpCiAjZW5kaWYKIAog
ICAgIGlmICghbGF5ZXJJbWFnZUJ1ZmZlcikgewotICAgICAgICBsYXllckltYWdlQnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4
KTsKKyAgICAgICAgbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGVtcGxh
dGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgaWYgKCFsYXllcklt
YWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTkwMyw3ICs5MDMsNyBA
QCB2b2lkIFNoYWRvd0JsdXI6OmJsdXJTaGFkb3dCdWZmZXIoSW1hZ2VCCiAgICAgaWYgKG1fdHlw
ZSAhPSBCbHVyU2hhZG93KQogICAgICAgICByZXR1cm47CiAKLSAgICBQaXhlbEJ1ZmZlckZvcm1h
dCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVs
Rm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgUGl4ZWxC
dWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBs
aWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07
CiAgICAgSW50UmVjdCBibHVyUmVjdChJbnRQb2ludCgpLCB0ZW1wbGF0ZVNpemUpOwogICAgIGF1
dG8gbGF5ZXJEYXRhID0gbGF5ZXJJbWFnZS5nZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIGJsdXJSZWN0
KTsKICAgICBpZiAoIWxheWVyRGF0YSkKQEAgLTkzMyw3ICs5MzMsNyBAQCB2b2lkIFNoYWRvd0Js
dXI6OmRyYXdTaGFkb3dMYXllcihjb25zdCBBCiAKICAgICBhZGp1c3RCbHVyUmFkaXVzKHRyYW5z
Zm9ybSk7CiAKLSAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFu
ZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGllcy0+bGF5ZXJTaXplKSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOworICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
ZXhwYW5kZWRJbnRTaXplKGxheWVySW1hZ2VQcm9wZXJ0aWVzLT5sYXllclNpemUpLCBSZW5kZXJp
bmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
UGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWxheWVySW1hZ2UpCiAgICAgICAgIHJldHVy
bjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHN0YXRp
YyB2b2lkIHdpcGVBbHBoYUNoYW5uZWxGcm9tUGl4ZWxzKGkKIAogT3B0aW9uYWw8UGl4ZWxCdWZm
ZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkK
IHsKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9u
OjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCIH07CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVm
ZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpKTsKICAg
ICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCShyZXZpc2lvbiAyNzc5MTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJ
bXBsQ2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTQsNyArNDE0LDcgQEAgRmxvYXRSZWN0
IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6cm91bgogICAgIHJldHVybiBDYWlybzo6U3RhdGU6
OnJvdW5kVG9EZXZpY2VQaXhlbHMobV9wbGF0Zm9ybUNvbnRleHQsIHJlY3QpOwogfQogCi12b2lk
IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZs
b2F0UmVjdCYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0Nv
bnRleHQmKT4mJikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjbGlwVG9EcmF3aW5n
Q29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwg
RnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikKIHsKICAgICAvLyBGSVhNRTogTm90
IGltcGxlbWVudGVkLgogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyAr
MTA0LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxl
KSBvdmVycmlkZTsKICAgICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBvdmVycmlkZTsKICAgICB2b2lk
IGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29u
dGV4dCYpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBG
dW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKICNpZiBFTkFCTEUo
VklERU8pCiAgICAgdm9pZCBwYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uKSBvdmVycmlkZTsKICAgICBib29sIGNhblBhaW50RnJhbWVG
b3JNZWRpYShjb25zdCBNZWRpYVBsYXllciYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCShyZXZpc2lvbiAy
Nzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckNhaXJvQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDE5ICs4OSwxOSBAQCB2
b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjpjbGlwVG9NYXNrCiAgICAgICAgIENhaXJvOjpj
bGlwVG9JbWFnZUJ1ZmZlcigqZGVzdENvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIGltYWdlLT5w
bGF0Zm9ybUltYWdlKCkuZ2V0KCksIGRlc3RSZWN0KTsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlckNh
aXJvQmFja2VuZDo6dHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc3Jj
Q29sb3JTcGFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGRlc3RDb2xvclNwYWNlKQordm9pZCBJ
bWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6dHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmIHNyY0NvbG9yU3BhY2UsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYgZGVzdENvbG9yU3BhY2UpCiB7CiAgICAgaWYgKHNyY0NvbG9yU3BhY2UgPT0gZGVzdENvbG9y
U3BhY2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIG9ubHkgc1JHQiA8LT4gbGluZWFyUkdC
IGFyZSBzdXBwb3J0ZWQgYXQgdGhlIG1vbWVudAotICAgIGlmICgoc3JjQ29sb3JTcGFjZSAhPSBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IgJiYgc3JjQ29sb3JTcGFjZSAhPSBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpCi0gICAgICAgIHx8IChkZXN0Q29sb3JTcGFjZSAhPSBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IgJiYgZGVzdENvbG9yU3BhY2UgIT0gRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKSkKKyAgICBpZiAoKHNyY0NvbG9yU3BhY2UgIT0gRGVz
dGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCkgJiYgc3JjQ29sb3JTcGFjZSAhPSBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSkKKyAgICAgICAgfHwgKGRlc3RDb2xvclNwYWNlICE9
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigpICYmIGRlc3RDb2xvclNwYWNlICE9
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
bV9wYXJhbWV0ZXJzLmNvbG9yU3BhY2UgPSBkZXN0Q29sb3JTcGFjZTsKIAotICAgIGlmIChkZXN0
Q29sb3JTcGFjZSA9PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IpIHsKKyAgICBp
ZiAoZGVzdENvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCkp
IHsKICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6YXJyYXk8dWludDhfdCwgMjU2PiBsaW5lYXJS
Z2JMVVQgPSBbXSB7CiAgICAgICAgICAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4gYXJyYXk7
CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKQEAgLTEx
Miw3ICsxMTIsNyBAQCB2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjp0cmFuc2Zvcm1DCiAg
ICAgICAgICAgICByZXR1cm4gYXJyYXk7CiAgICAgICAgIH0oKTsKICAgICAgICAgcGxhdGZvcm1U
cmFuc2Zvcm1Db2xvclNwYWNlKGxpbmVhclJnYkxVVCk7Ci0gICAgfSBlbHNlIGlmIChkZXN0Q29s
b3JTcGFjZSA9PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpIHsKKyAgICB9IGVsc2UgaWYg
KGRlc3RDb2xvclNwYWNlID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKSB7CiAgICAg
ICAgIHN0YXRpYyBjb25zdCBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4gZGV2aWNlUmdiTFVUPSBb
XSB7CiAgICAgICAgICAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4gYXJyYXk7CiAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJDYWlyb0JhY2tlbmQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuaAkod29y
a2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsaXBUb01h
c2soR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkgb3ZlcnJpZGU7
CiAKLSAgICB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIHNy
Y0NvbG9yU3BhY2UsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBkZXN0Q29sb3JTcGFjZSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgc3JjQ29sb3JTcGFjZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBkZXN0Q29s
b3JTcGFjZSkgb3ZlcnJpZGU7CiAKICAgICBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uKSBj
b25zdCBvdmVycmlkZTsKICAgICBWZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkgY29uc3Qgb3ZlcnJpZGU7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
Q29sb3JDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjksMTMgKzI5LDE0IEBACiAjaWYgVVNFKENHKQogCiAjaW5jbHVkZSAiQ29sb3JTcGFjZUNHLmgi
CisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSA8bXV0ZXg+Cisj
aW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgotI2luY2x1ZGUgPHd0Zi9UaW55TFJVQ2FjaGUuaD4KLSNpbmNsdWRlIDxwYWwvc3BpL2Nn
L0NvcmVHcmFwaGljc1NQSS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNs
dWRlIDx3dGYvVGlueUxSVUNhY2hlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBS
ZXRhaW5QdHI8Q0dDb2xvclJlZj4gY3JlYXRlQ0dDb2xvcihjb25zdCBDb2xvciYpOwpAQCAtOTEs
MzQgKzkyLDM4IEBAIENvbG9yOjpDb2xvcihDR0NvbG9yUmVmIGNvbG9yLCBPcHRpb25TZXQKIHsK
IH0KIAotc3RhdGljIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjcmVhdGVDR0NvbG9yKGNvbnN0IENv
bG9yJiBjb2xvcikKK3N0YXRpYyBzdGQ6OnBhaXI8Q0dDb2xvclNwYWNlUmVmLCBDb2xvckNvbXBv
bmVudHM8ZmxvYXQsIDQ+PiBjb252ZXJ0VG9DR0NvbXBhdGlibGVDb21wb25lbnRzKENvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb21wb25lbnRzKQogewot
ICAgIGF1dG8gW2NvbG9yU3BhY2UsIGNvbXBvbmVudHNdID0gY29sb3IuY29sb3JTcGFjZUFuZENv
bXBvbmVudHMoKTsKLQotICAgIGF1dG8gY2dDb2xvclNwYWNlID0gY2FjaGVkTnVsbGFibGVDR0Nv
bG9yU3BhY2UoY29sb3JTcGFjZSk7Ci0KICAgICAvLyBTb21lIENHIHBvcnRzIGRvbid0IHN1cHBv
cnQgYWxsIHRoZSBjb2xvciBzcGFjZXMgcmVxdWlyZWQgYW5kIHJldHVybgogICAgIC8vIG51bGxw
dHIgZm9yIHVuc3VwcG9ydGVkIGNvbG9yIHNwYWNlcy4gSW4gdGhvc2UgY2FzZXMsIHdlIGVhZ2Vy
bHkgY29udmVydAogICAgIC8vIHRoZSBjb2xvciBpbnRvIGVpdGhlciBleHRlbmRlZCBzUkdCIG9y
IG5vcm1hbCBzUkdCLCBpZiBleHRlbmRlZCBzUkdCIGlzCi0gICAgLy8gbm90IHN1cHBvcnRlZCwg
YmVmb3JlIGNyZWF0aW5nIHRoZSBDR0NvbG9yUmVmLgorICAgIC8vIG5vdCBzdXBwb3J0ZWQuCisK
KyAgICBhdXRvIGNnQ29sb3JTcGFjZSA9IGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlKGNvbG9y
U3BhY2UpOwogICAgIGlmICghY2dDb2xvclNwYWNlKSB7CiAjaWYgSEFWRShDT1JFX0dSQVBISUNT
X0VYVEVOREVEX1NSR0JfQ09MT1JfU1BBQ0UpCi0gICAgICAgIGF1dG8gY29sb3JDb252ZXJ0ZWRU
b0V4dGVuZGVkU1JHQkEgPSBjYWxsV2l0aENvbG9yVHlwZShjb21wb25lbnRzLCBjb2xvclNwYWNl
LCBbXSAoY29uc3QgYXV0byYgY29sb3IpIHsKLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0Q29s
b3I8RXh0ZW5kZWRTUkdCQTxmbG9hdD4+KGNvbG9yKTsKKyAgICAgICAgYXV0byBjZ0NvbXBhdGli
bGVDb21wb25lbnRzID0gY2FsbFdpdGhDb2xvclR5cGUoY29tcG9uZW50cywgY29sb3JTcGFjZSwg
W10gKGNvbnN0IGF1dG8mIGNvbG9yKSB7CisgICAgICAgICAgICByZXR1cm4gYXNDb2xvckNvbXBv
bmVudHMoY29udmVydENvbG9yPEV4dGVuZGVkU1JHQkE8ZmxvYXQ+Pihjb2xvcikpOwogICAgICAg
ICB9KTsKLSAgICAgICAgY29tcG9uZW50cyA9IGFzQ29sb3JDb21wb25lbnRzKGNvbG9yQ29udmVy
dGVkVG9FeHRlbmRlZFNSR0JBKTsKLSAgICAgICAgY2dDb2xvclNwYWNlID0gZXh0ZW5kZWRTUkdC
Q29sb3JTcGFjZVJlZigpOworICAgICAgICByZXR1cm4geyBleHRlbmRlZFNSR0JDb2xvclNwYWNl
UmVmKCksIGNnQ29tcGF0aWJsZUNvbXBvbmVudHMgfTsKICNlbHNlCiAgICAgICAgIGF1dG8gY29s
b3JDb252ZXJ0ZWRUb1NSR0JBID0gY2FsbFdpdGhDb2xvclR5cGUoY29tcG9uZW50cywgY29sb3JT
cGFjZSwgW10gKGNvbnN0IGF1dG8mIGNvbG9yKSB7Ci0gICAgICAgICAgICByZXR1cm4gY29udmVy
dENvbG9yPFNSR0JBPGZsb2F0Pj4oY29sb3IpOworICAgICAgICAgICAgcmV0dXJuIGFzQ29sb3JD
b21wb25lbnRzKGNvbnZlcnRDb2xvcjxTUkdCQTxmbG9hdD4+KGNvbG9yKSk7CiAgICAgICAgIH0p
OwotICAgICAgICBjb21wb25lbnRzID0gYXNDb2xvckNvbXBvbmVudHMoY29sb3JDb252ZXJ0ZWRU
b1NSR0JBKTsKLSAgICAgICAgY2dDb2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKKyAg
ICAgICAgcmV0dXJuIHsgc1JHQkNvbG9yU3BhY2VSZWYoKSwgY2dDb21wYXRpYmxlQ29tcG9uZW50
cyB9OwogI2VuZGlmCiAgICAgfQogCi0gICAgYXV0byBbciwgZywgYiwgYV0gPSBjb21wb25lbnRz
OwotICAgIENHRmxvYXQgY2dGbG9hdENvbXBvbmVudHNbNF0geyByLCBnLCBiLCBhIH07CisgICAg
cmV0dXJuIHsgY2dDb2xvclNwYWNlLCBjb21wb25lbnRzIH07Cit9CisKK3N0YXRpYyBSZXRhaW5Q
dHI8Q0dDb2xvclJlZj4gY3JlYXRlQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCit7CisgICAg
YXV0byBbY29sb3JTcGFjZSwgY29tcG9uZW50c10gPSBjb2xvci5jb2xvclNwYWNlQW5kQ29tcG9u
ZW50cygpOworICAgIGF1dG8gW2NnQ29sb3JTcGFjZSwgY2dDb21wYXRpYmxlQ29tcG9uZW50c10g
PSBjb252ZXJ0VG9DR0NvbXBhdGlibGVDb21wb25lbnRzKGNvbG9yU3BhY2UsIGNvbXBvbmVudHMp
OworICAgIAorICAgIGF1dG8gW2MxLCBjMiwgYzMsIGM0XSA9IGNnQ29tcGF0aWJsZUNvbXBvbmVu
dHM7CisgICAgQ0dGbG9hdCBjZ0Zsb2F0Q29tcG9uZW50c1s0XSB7IGMxLCBjMiwgYzMsIGM0IH07
CiAKICAgICByZXR1cm4gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKGNnQ29sb3JTcGFjZSwgY2dGbG9h
dENvbXBvbmVudHMpKTsKIH0KQEAgLTE2MSw2ICsxNjYsMjQgQEAgQ0dDb2xvclJlZiBjYWNoZWRD
R0NvbG9yKGNvbnN0IENvbG9yJiBjbwogICAgIHJldHVybiBjYWNoZS5nZXQoKS5nZXQoY29sb3Ip
LmdldCgpOwogfQogCitDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IHBsYXRmb3JtQ29udmVydENv
bG9yQ29tcG9uZW50cyhDb2xvclNwYWNlIGlucHV0Q29sb3JTcGFjZSwgQ29sb3JDb21wb25lbnRz
PGZsb2F0LCA0PiBpbnB1dENvbG9yQ29tcG9uZW50cywgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiBvdXRwdXRDb2xvclNwYWNlKQoreworICAgIC8vIEZJWE1FOiBJbnZlc3RpZ2F0ZSBvcHRp
bWl6aW5nIHRoaXMgdG8gdXNlIHRoZSBidWlsdGluIGNvbG9yIGNvbnZlcnNpb24gY29kZSBmb3Ig
c3VwcG9ydGVkIGNvbG9yIHNwYWNlcy4KKworICAgIGF1dG8gW2NnSW5wdXRDb2xvclNwYWNlLCBj
Z0NvbXBhdGlibGVDb21wb25lbnRzXSA9IGNvbnZlcnRUb0NHQ29tcGF0aWJsZUNvbXBvbmVudHMo
aW5wdXRDb2xvclNwYWNlLCBpbnB1dENvbG9yQ29tcG9uZW50cyk7CisgICAgaWYgKGNnSW5wdXRD
b2xvclNwYWNlID09IG91dHB1dENvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCkpCisgICAg
ICAgIHJldHVybiBjZ0NvbXBhdGlibGVDb21wb25lbnRzOworCisgICAgYXV0byBbYzEsIGMyLCBj
MywgYzRdID0gY2dDb21wYXRpYmxlQ29tcG9uZW50czsKKyAgICBDR0Zsb2F0IHNvdXJjZUNvbXBv
bmVudHNbNF0geyBjMSwgYzIsIGMzLCBjNCB9OworICAgIENHRmxvYXQgZGVzdGluYXRpb25Db21w
b25lbnRzWzRdIHsgfTsKKworICAgIGF1dG8gdHJhbnNmb3JtID0gYWRvcHRDRihDR0NvbG9yVHJh
bnNmb3JtQ3JlYXRlKG91dHB1dENvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCksIG51bGxw
dHIpKTsKKyAgICBhdXRvIHJlc3VsdCA9IENHQ29sb3JUcmFuc2Zvcm1Db252ZXJ0Q29sb3JDb21w
b25lbnRzKHRyYW5zZm9ybS5nZXQoKSwgY2dJbnB1dENvbG9yU3BhY2UsIGtDR1JlbmRlcmluZ0lu
dGVudERlZmF1bHQsIHNvdXJjZUNvbXBvbmVudHMsIGRlc3RpbmF0aW9uQ29tcG9uZW50cyk7Cisg
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgcmV0dXJuIHsgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGRlc3RpbmF0aW9uQ29tcG9uZW50c1swXSksIHN0YXRpY19jYXN0PGZsb2F0Pihk
ZXN0aW5hdGlvbkNvbXBvbmVudHNbMV0pLCBzdGF0aWNfY2FzdDxmbG9hdD4oZGVzdGluYXRpb25D
b21wb25lbnRzWzJdKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRlc3RpbmF0aW9uQ29tcG9uZW50c1sz
XSkgfTsKK30KKwogfQogCiAjZW5kaWYgLy8gVVNFKENHKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VD
Ry5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksMjMgKzExOSw0IEBAIHN0YXRpYyBpbmxpbmUgQ0dD
b2xvclNwYWNlUmVmIGNhY2hlZE51bGwKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotLy8gTk9U
RTogU2luY2UgdGhpcyBmdW5jdGlvbiBpcyBmb3IgKmRlc3RpbmF0aW9uKiBjb2xvciBzcGFjZXMg
d2hvc2UgY2FsbGVycyBhbHdheXMgZXhwZWN0IGEgbm9uLW51bGwgY29sb3Igc3BhY2UsIHRoaXMg
ZnVuY3Rpb24gaXMgZ3VhcmFudGVlZCB0byByZXR1cm4gbm9uLW51bGwsIHVubGlrZSBjYWNoZWRO
dWxsYWJsZUNHQ29sb3JTcGFjZSgpLgotc3RhdGljIGlubGluZSBDR0NvbG9yU3BhY2VSZWYgY2Fj
aGVkQ0dDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKQotewotICAg
IHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCOgotICAgICAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLSNpZiBFTkFCTEUoREVT
VElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgY2FzZSBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OkxpbmVhclNSR0I6Ci0gICAgICAgIHJldHVybiBsaW5lYXJTUkdCQ29sb3JTcGFj
ZVJlZigpOwotI2VuZGlmCi0jaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BM
QVlfUDMpCi0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMzoKLSAgICAg
ICAgcmV0dXJuIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKTsKLSNlbmRpZgotICAgIH0KLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLX0K
LQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0R0xDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01MzIsNyArNTMyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cGFpbnRUb0NhbgogICAgIH0pKTsKIAogICAgIGF1dG8gaW1hZ2VTaXplID0gcGl4
ZWxCdWZmZXIuc2l6ZSgpOwotICAgIGF1dG8gaW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKGFk
b3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgp
LCA4LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBjYWNoZWRDR0NvbG9yU3BhY2UocGl4ZWxC
dWZmZXIuZm9ybWF0KCkuY29sb3JTcGFjZSksIGJpdG1hcEluZm8sIGRhdGFQcm92aWRlci5nZXQo
KSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKSk7CisgICAgYXV0byBpbWFn
ZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53
aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCks
IHBpeGVsQnVmZmVyLmZvcm1hdCgpLmNvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCksIGJp
dG1hcEluZm8sIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVu
dERlZmF1bHQpKSk7CiAKICAgICAvLyBDU1Mgc3R5bGluZyBtYXkgY2F1c2UgdGhlIGNhbnZhcydz
IGNvbnRlbnQgdG8gYmUgcmVzaXplZCBvbgogICAgIC8vIHRoZSBwYWdlLiBHbyBiYWNrIHRvIHRo
ZSBDYW52YXMgdG8gZmlndXJlIG91dCB0aGUgY29ycmVjdApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHAJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3Vy
ZmFjZVBvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBIQVZF
KElPU1VSRkFDRSkKIAorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFw
aGljcy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtNTksNyArNjAsNyBA
QCBJT1N1cmZhY2VQb29sJiBJT1N1cmZhY2VQb29sOjpzaGFyZWRQb29sCiAgICAgcmV0dXJuIHBv
b2w7CiB9CiAKLXN0YXRpYyBib29sIHN1cmZhY2VNYXRjaGVzUGFyYW1ldGVycyhJT1N1cmZhY2Um
IHN1cmZhY2UsIEludFNpemUgcmVxdWVzdGVkU2l6ZSwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3Bh
Y2UsIElPU3VyZmFjZTo6Rm9ybWF0IGZvcm1hdCkKK3N0YXRpYyBib29sIHN1cmZhY2VNYXRjaGVz
UGFyYW1ldGVycyhJT1N1cmZhY2UmIHN1cmZhY2UsIEludFNpemUgcmVxdWVzdGVkU2l6ZSwgY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBJT1N1cmZhY2U6OkZvcm1hdCBm
b3JtYXQpCiB7CiAgICAgaWYgKGZvcm1hdCAhPSBzdXJmYWNlLmZvcm1hdCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0xMDIsNyArMTAzLDcgQEAgdm9pZCBJT1N1cmZhY2VQb29sOjpkaWRV
c2VTdXJmYWNlT2ZTaXplKAogICAgIG1fc2l6ZXNJblBydW5lT3JkZXIuYXBwZW5kKHNpemUpOwog
fQogCi1zdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2VQb29sOjp0YWtlU3VyZmFj
ZShJbnRTaXplIHNpemUsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlLCBJT1N1cmZhY2U6OkZv
cm1hdCBmb3JtYXQpCitzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2VQb29sOjp0
YWtlU3VyZmFjZShJbnRTaXplIHNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29s
b3JTcGFjZSwgSU9TdXJmYWNlOjpGb3JtYXQgZm9ybWF0KQogewogICAgIExvY2tlciBsb2NrZXIg
eyBtX2xvY2sgfTsKICAgICBDYWNoZWRTdXJmYWNlTWFwOjppdGVyYXRvciBtYXBJdGVyID0gbV9j
YWNoZWRTdXJmYWNlcy5maW5kKHNpemUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuaAkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y2xhc3MgRGVzdGluYXRhdGlvbkNvbG9yU3BhY2U7CisKIGNsYXNzIElPU3VyZmFjZVBvb2wgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKElPU3VyZmFjZVBvb2wpOwogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwpAQCAtNDcsNyArNDksNyBAQCBjbGFzcyBJT1N1cmZhY2VQb29sIHsKIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSU9TdXJmYWNlUG9vbCYgc2hhcmVkUG9v
bCgpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gdGFrZVN1cmZhY2UoSW50U2l6
ZSwgQ0dDb2xvclNwYWNlUmVmLCBJT1N1cmZhY2U6OkZvcm1hdCk7CisgICAgc3RkOjp1bmlxdWVf
cHRyPElPU3VyZmFjZT4gdGFrZVN1cmZhY2UoSW50U2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiwgSU9TdXJmYWNlOjpGb3JtYXQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRk
U3VyZmFjZShzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPik7CiAKICAgICB2b2lkIGRpc2NhcmRB
bGxTdXJmYWNlcygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJD
R0JhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzQsNyArMTc0LDcgQEAgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IEltYWdlQnVmZmVyQ0dCYWNrZQogICAgICAgICAvLyBGSVhNRTogU2hvdWxk
IHRoaXMgYmUgdXNpbmcgdGhlIHNhbWUgbG9naWMgYXMgSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRz8K
IAogICAgICAgICAvLyBKUEVHcyBkb24ndCBoYXZlIGFuIGFscGhhIGNoYW5uZWwsIHNvIHdlIGhh
dmUgdG8gbWFudWFsbHkgY29tcG9zaXRlIG9uIHRvcCBvZiBibGFjay4KLSAgICAgICAgUGl4ZWxC
dWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGll
ZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAg
ICAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6
UHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSB9OwogICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gZ2V0UGl4ZWxCdWZmZXIoZm9y
bWF0LCBsb2dpY2FsUmVjdCgpKTsKICAgICAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMTkyLDcgKzE5Miw3IEBAIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBJbWFnZUJ1ZmZlckNHQmFja2UKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgICAgIGF1dG8gaW1hZ2VTaXplID0gcGl4ZWxCdWZmZXItPnNpemUoKTsKLSAgICAgICAgcmV0
dXJuIGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhl
aWdodCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBjYWNoZWRDR0NvbG9yU3BhY2Uo
cGl4ZWxCdWZmZXItPmZvcm1hdCgpLmNvbG9yU3BhY2UpLCBrQ0dCaXRtYXBCeXRlT3JkZXJEZWZh
dWx0IHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBm
YWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOworICAgICAgICByZXR1cm4gYWRvcHRD
RihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgs
IDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCksIHBpeGVsQnVmZmVyLT5mb3JtYXQoKS5jb2xvclNw
YWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBrQ0dCaXRtYXBCeXRlT3JkZXJEZWZhdWx0IHwga0NH
SW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NH
UmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwogICAgIH0KIAogICAgIGlmIChyZXNvbHV0aW9uU2Nh
bGUoKSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246Olll
cykgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIHNp
emVfdCBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y2FsY3UKICAgICByZXR1cm4gSW1hZ2VC
dWZmZXJCYWNrZW5kOjpjYWxjdWxhdGVNZW1vcnlDb3N0KGJhY2tlbmRTaXplLCBjYWxjdWxhdGVC
eXRlc1BlclJvdyhiYWNrZW5kU2l6ZSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29u
c3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgQ0dDb2xvclNwYWNlUmVmIGNnQ29sb3JTcGFjZSwg
Y29uc3QgSG9zdFdpbmRvdyopCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVy
cyYgcGFyYW1ldGVycywgY29uc3QgSG9zdFdpbmRvdyopCiB7CiAgICAgQVNTRVJUKHBhcmFtZXRl
cnMucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKIApAQCAtODEsNyArODEsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlCiAgICAgc2l6ZV90IG51
bUJ5dGVzID0gYmFja2VuZFNpemUuaGVpZ2h0KCkgKiBieXRlc1BlclJvdzsKICAgICB2ZXJpZnlJ
bWFnZUJ1ZmZlcklzQmlnRW5vdWdoKGRhdGEsIG51bUJ5dGVzKTsKIAotICAgIGF1dG8gY2dDb250
ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoZGF0YSwgYmFja2VuZFNpemUud2lk
dGgoKSwgYmFja2VuZFNpemUuaGVpZ2h0KCksIDgsIGJ5dGVzUGVyUm93LCBjZ0NvbG9yU3BhY2Us
IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhv
c3QpKTsKKyAgICBhdXRvIGNnQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRl
KGRhdGEsIGJhY2tlbmRTaXplLndpZHRoKCksIGJhY2tlbmRTaXplLmhlaWdodCgpLCA4LCBieXRl
c1BlclJvdywgcGFyYW1ldGVycy5jb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBrQ0dJ
bWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KSk7
CiAgICAgaWYgKCFjZ0NvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC05Niwx
NSArOTYsMTQgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZQogCiBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3Qg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIGlmIChhdXRvIGNnQ29sb3JTcGFjZSA9
IGNvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkgPyBjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0
KSA6IG51bGxwdHIpCi0gICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6
Y3JlYXRlKHBhcmFtZXRlcnMsIGNnQ29sb3JTcGFjZS5nZXQoKSwgbnVsbHB0cik7CisgICAgaWYg
KGF1dG8gY2dDb2xvclNwYWNlID0gY29udGV4dC5oYXNQbGF0Zm9ybUNvbnRleHQoKSA/IGNvbnRl
eHRDb2xvclNwYWNlKGNvbnRleHQpIDogbnVsbHB0cikgeworICAgICAgICBhdXRvIG92ZXJyaWRl
UGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7CisgICAgICAgIG92ZXJyaWRlUGFyYW1ldGVycy5jb2xv
clNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlIHsgY2dDb2xvclNwYWNlIH07CiAKLSAgICBy
ZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBudWxs
cHRyKTsKLX0KKyAgICAgICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVh
dGUob3ZlcnJpZGVQYXJhbWV0ZXJzLCBudWxscHRyKTsKKyAgICB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6
OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KiBo
b3N0V2luZG93KQotewotICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3Jl
YXRlKHBhcmFtZXRlcnMsIGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2Up
LCBob3N0V2luZG93KTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNy
ZWF0ZShwYXJhbWV0ZXJzLCBudWxscHRyKTsKIH0KIAogSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tl
bmQ6OkltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMsIHZvaWQqIGRhdGEsIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4mJiBkYXRhUHJvdmlk
ZXIsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYgY29udGV4dCkKQEAgLTE0Niw3
ICsxNDUsNyBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyQ0dCaXRtYXBCCiAgICAg
ICAgIGF1dG8gYmFja2VuZFNpemUgPSB0aGlzLT5iYWNrZW5kU2l6ZSgpOwogICAgICAgICByZXR1
cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHSW1hZ2VDcmVhdGUoCiAgICAgICAgICAg
ICBiYWNrZW5kU2l6ZS53aWR0aCgpLCBiYWNrZW5kU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIGJ5dGVz
UGVyUm93KCksCi0gICAgICAgICAgICBjYWNoZWRDR0NvbG9yU3BhY2UoY29sb3JTcGFjZSgpKSwg
a0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9z
dCwgbV9kYXRhUHJvdmlkZXIuZ2V0KCksCisgICAgICAgICAgICBjb2xvclNwYWNlKCkucGxhdGZv
cm1Db2xvclNwYWNlKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRt
YXBCeXRlT3JkZXIzMkhvc3QsIG1fZGF0YVByb3ZpZGVyLmdldCgpLAogICAgICAgICAgICAgMCwg
dHJ1ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpKTsKICAgICB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5k
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaAko
d29ya2luZyBjb3B5KQpAQCAtMzksOCArMzksOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEludFNp
emUgY2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKGNvbnN0IFBhcmFtZXRlcnMmKTsKICAgICBzdGF0
aWMgc2l6ZV90IGNhbGN1bGF0ZU1lbW9yeUNvc3QoY29uc3QgUGFyYW1ldGVycyYpOwogCi0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gY3JlYXRl
KGNvbnN0IFBhcmFtZXRlcnMmLCBDR0NvbG9yU3BhY2VSZWYsIGNvbnN0IEhvc3RXaW5kb3cqKTsK
ICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBj
cmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IEhvc3RXaW5kb3cqKTsKKworICAgIC8vIEZJ
WE1FOiBSZW5hbWUgdG8gY3JlYXRlVXNpbmdDb2xvclNwYWNlT2ZHcmFwaGljc0NvbnRleHQoKSAo
b3Igc29tZXRoaW5nIGxpa2UgdGhhdCkuCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBH
cmFwaGljc0NvbnRleHQmKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0
IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCShy
ZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSwxMyAr
ODEsMTMgQEAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gSW1hZ2VCdWZmZXJJTwogICAgIHJl
dHVybiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29udGV4dENvbG9yU3BhY2UoY29udGV4dCk7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMs
IENHQ29sb3JTcGFjZVJlZiBjZ0NvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5k
b3cpCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQogewogICAgIEludFNpemUgYmFja2VuZFNp
emUgPSBjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUocGFyYW1ldGVycyk7CiAgICAgaWYgKGJhY2tl
bmRTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHN1
cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShiYWNrZW5kU2l6ZSwgYmFja2VuZFNpemUsIGNnQ29s
b3JTcGFjZSwgSU9TdXJmYWNlOjpmb3JtYXRGb3JQaXhlbEZvcm1hdChwYXJhbWV0ZXJzLnBpeGVs
Rm9ybWF0KSk7CisgICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoYmFja2VuZFNp
emUsIGJhY2tlbmRTaXplLCBwYXJhbWV0ZXJzLmNvbG9yU3BhY2UsIElPU3VyZmFjZTo6Zm9ybWF0
Rm9yUGl4ZWxGb3JtYXQocGFyYW1ldGVycy5waXhlbEZvcm1hdCkpOwogICAgIGlmICghc3VyZmFj
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTEwMiwxNSArMTAyLDE0IEBAIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2sKIAogc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpj
cmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0KQogewotICAgIGlmIChhdXRvIGNnQ29sb3JTcGFjZSA9IGNvbnRleHQuaGFzUGxh
dGZvcm1Db250ZXh0KCkgPyBjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0KSA6IG51bGxwdHIpCi0g
ICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0
ZXJzLCBjZ0NvbG9yU3BhY2UuZ2V0KCksIG51bGxwdHIpOworICAgIGlmIChhdXRvIGNnQ29sb3JT
cGFjZSA9IGNvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkgPyBjb250ZXh0Q29sb3JTcGFjZShj
b250ZXh0KSA6IG51bGxwdHIpIHsKKyAgICAgICAgYXV0byBvdmVycmlkZVBhcmFtZXRlcnMgPSBw
YXJhbWV0ZXJzOworICAgICAgICBvdmVycmlkZVBhcmFtZXRlcnMuY29sb3JTcGFjZSA9IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSB7IGNnQ29sb3JTcGFjZSB9OwogCi0gICAgcmV0dXJuIEltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIG51bGxwdHIpOwotfQorICAg
ICAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUob3ZlcnJpZGVQ
YXJhbWV0ZXJzLCBudWxscHRyKTsKKyAgICB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNv
bnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cp
Ci17Ci0gICAgcmV0dXJuIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHBhcmFt
ZXRlcnMsIGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpLCBob3N0V2lu
ZG93KTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUocGFy
YW1ldGVycywgbnVsbHB0cik7CiB9CiAKIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6SW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIHN0
ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+JiYgc3VyZmFjZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIsOCArNDIsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHNpemVfdCBjYWxj
dWxhdGVNZW1vcnlDb3N0KGNvbnN0IFBhcmFtZXRlcnMmKTsKICAgICBzdGF0aWMgc2l6ZV90IGNh
bGN1bGF0ZUV4dGVybmFsTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJzJik7CiAgICAgCi0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0
ZShjb25zdCBQYXJhbWV0ZXJzJiwgQ0dDb2xvclNwYWNlUmVmLCBjb25zdCBIb3N0V2luZG93Kik7
CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+
IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgSG9zdFdpbmRvdyopOworICAgIC8vIEZJ
WE1FOiBSZW5hbWUgdG8gY3JlYXRlVXNpbmdDb2xvclNwYWNlT2ZHcmFwaGljc0NvbnRleHQoKSAo
b3Igc29tZXRoaW5nIGxpa2UgdGhhdCkuCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3Qg
R3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQoY29u
c3QgUGFyYW1ldGVycyYsIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+JiYpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzcsNyArMTc3LDcgQEAgc3RhdGljIGJvb2wgZW5jb2RlKGNvbnN0IFBp
eGVsQnVmZmVyJiBzbwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8gaW1hZ2VT
aXplID0gc291cmNlLnNpemUoKTsKLSAgICBhdXRvIGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3Jl
YXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCA0ICogaW1h
Z2VTaXplLndpZHRoKCksIGNhY2hlZENHQ29sb3JTcGFjZShzb3VyY2UuZm9ybWF0KCkuY29sb3JT
cGFjZSksIGtDR0JpdG1hcEJ5dGVPcmRlckRlZmF1bHQgfCBkYXRhQWxwaGFJbmZvLCBkYXRhUHJv
dmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CisgICAg
YXV0byBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1h
Z2VTaXplLmhlaWdodCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBzb3VyY2UuZm9y
bWF0KCkuY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwga0NHQml0bWFwQnl0ZU9yZGVy
RGVmYXVsdCB8IGRhdGFBbHBoYUluZm8sIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtD
R1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKIAogICAgIHJldHVybiBlbmNvZGUoaW1hZ2UuZ2V0
KCksIGRlc3RpbmF0aW9uVVRJLmdldCgpLCBxdWFsaXR5LCBmdW5jdGlvbik7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0JKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTU3MSw3ICs1NzEsNyBAQCBi
b29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzCiBib29sIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjphbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpCiB7CiAg
ICAgQVNTRVJUKCFnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLmlzRW1wdHkoKSk7Ci0gICAg
YXV0byBiYWNraW5nID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGUoZ2V0SW50ZXJuYWxGcmFt
ZWJ1ZmZlclNpemUoKSwgV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgYXV0byBi
YWNraW5nID0gSU9TdXJmYWNlOjpjcmVhdGUoZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgIGlmICghYmFja2luZykKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9JT1N1cmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDkgKzI3LDEwIEBACiAKICNpZiBIQVZFKElPU1VSRkFDRSkKIAorI2luY2x1ZGUg
IkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRl
IDxvYmpjL29iamMuaD4KICNpbmNsdWRlIDxwYWwvc3BpL2NvY29hL0lPU3VyZmFjZVNQSS5oPgot
I2luY2x1ZGUgIkludFNpemUuaCIKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFU
Rk9STShNQUNDQVRBTFlTVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQogI2Rl
ZmluZSBIQVZFX0lPU1VSRkFDRV9SR0IxMCAxCkBAIC00NiwxMCArNDcsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEhvc3RXaW5kb3c7Ci0g
ICAgCi0jaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKIGNsYXNzIEltYWdl
QnVmZmVyOwotI2VuZGlmCiAKIGVudW0gY2xhc3MgUGl4ZWxGb3JtYXQgOiB1aW50OF90OwogZW51
bSBjbGFzcyBWb2xhdGlsaXR5U3RhdGUgOiB1aW50OF90OwpAQCAtMTAxLDEwICs5OSwxMCBAQCBw
dWJsaWM6CiAgICAgICAgIHVpbnQzMl90IG1fZmxhZ3M7CiAgICAgfTsKIAotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGUoSW50U2l6ZSwg
Q0dDb2xvclNwYWNlUmVmLCBGb3JtYXQgPSBGb3JtYXQ6OkJHUkEpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGUoSW50U2l6ZSwgSW50
U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xvclNwYWNlUmVmLCBGb3JtYXQgPSBGb3JtYXQ6OkJHUkEp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBj
cmVhdGVGcm9tU2VuZFJpZ2h0KGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYmLCBDR0NvbG9yU3Bh
Y2VSZWYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJm
YWNlPiBjcmVhdGVGcm9tU3VyZmFjZShJT1N1cmZhY2VSZWYsIENHQ29sb3JTcGFjZVJlZik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0
ZShJbnRTaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGb3JtYXQgPSBGb3JtYXQ6
OkJHUkEpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJm
YWNlPiBjcmVhdGUoSW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiwgRm9ybWF0ID0gRm9ybWF0OjpCR1JBKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlRnJvbVNlbmRSaWdodChj
b25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNy
ZWF0ZUZyb21TdXJmYWNlKElPU3VyZmFjZVJlZiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+
IGNyZWF0ZUZyb21JbWFnZShDR0ltYWdlUmVmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlRnJvbVBpeGVsQnVmZmVyKENWUGl4ZWxC
dWZmZXJSZWYpOwogICAgIApAQCAtMTQ2LDcgKzE0NCw3IEBAIHB1YmxpYzoKICAgICBJbnRTaXpl
IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICBzaXplX3QgdG90YWxCeXRlcygp
IGNvbnN0IHsgcmV0dXJuIG1fdG90YWxCeXRlczsgfQogCi0gICAgQ0dDb2xvclNwYWNlUmVmIGNv
bG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yU3BhY2UuZ2V0KCk7IH0KKyAgICBjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2Nv
bG9yU3BhY2U7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBGb3JtYXQgZm9ybWF0KCkgY29uc3Q7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgSU9TdXJmYWNlSUQgc3VyZmFjZUlEKCkgY29uc3Q7CiAgICAgc2l6
ZV90IGJ5dGVzUGVyUm93KCkgY29uc3Q7CkBAIC0xNjksMTQgKzE2NywxNCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBtaWdyYXRlQ29sb3JTcGFjZVRvUHJvcGVydGllcygpOwogCiBwcml2YXRlOgotICAg
IElPU3VyZmFjZShJbnRTaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBDR0NvbG9yU3BhY2VSZWYs
IEZvcm1hdCwgYm9vbCYgc3VjY2Vzcyk7Ci0gICAgSU9TdXJmYWNlKElPU3VyZmFjZVJlZiwgQ0dD
b2xvclNwYWNlUmVmKTsKKyAgICBJT1N1cmZhY2UoSW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6
ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRm9ybWF0LCBib29sJiBzdWNjZXNzKTsK
KyAgICBJT1N1cmZhY2UoSU9TdXJmYWNlUmVmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
KTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBzdXJmYWNlRnJvbVBv
b2woSW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xvclNwYWNlUmVmLCBGb3JtYXQp
OworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBzdXJmYWNlRnJvbVBvb2wo
SW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiwgRm9ybWF0KTsKICAgICBJbnRTaXplIGNvbnRleHRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9j
b250ZXh0U2l6ZTsgfQogICAgIHZvaWQgc2V0Q29udGV4dFNpemUoSW50U2l6ZSk7CiAKLSAgICBS
ZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBtX2NvbG9yU3BhY2U7CisgICAgRGVzdGluYXRpb25D
b2xvclNwYWNlIG1fY29sb3JTcGFjZTsKICAgICBJbnRTaXplIG1fc2l6ZTsKICAgICBJbnRTaXpl
IG1fY29udGV4dFNpemU7CiAgICAgc2l6ZV90IG1fdG90YWxCeXRlczsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0JKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0lPU3VyZmFjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAi
Y29uZmlnLmgiCiAjaW1wb3J0ICJJT1N1cmZhY2UuaCIKIAotI2ltcG9ydCAiQ29yZVZpZGVvU29m
dExpbmsuaCIKKyNpbXBvcnQgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2ltcG9ydCAiR3Jh
cGhpY3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMLmgiCiAjaW1wb3J0
ICJIb3N0V2luZG93LmgiCkBAIC00MSw5ICs0MSwxMSBAQAogI2ltcG9ydCA8d3RmL01hdGhFeHRy
YXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAorI2ltcG9ydCAiQ29yZVZp
ZGVvU29mdExpbmsuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgc3RkOjp1bmlx
dWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpzdXJmYWNlRnJvbVBvb2woSW50U2l6ZSBzaXpl
LCBJbnRTaXplIGNvbnRleHRTaXplLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwgRm9ybWF0
IHBpeGVsRm9ybWF0KQoraW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFj
ZTo6c3VyZmFjZUZyb21Qb29sKEludFNpemUgc2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGb3JtYXQgcGl4ZWxGb3JtYXQp
CiB7CiAgICAgYXV0byBjYWNoZWRTdXJmYWNlID0gSU9TdXJmYWNlUG9vbDo6c2hhcmVkUG9vbCgp
LnRha2VTdXJmYWNlKHNpemUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKICAgICBpZiAoIWNh
Y2hlZFN1cmZhY2UpCkBAIC01MywxMiArNTUsMTIgQEAgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxJ
T1N1cmZhY2U+IElPU3VyZgogICAgIHJldHVybiBjYWNoZWRTdXJmYWNlOwogfQogCi1zdGQ6OnVu
aXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZShJbnRTaXplIHNpemUsIENHQ29s
b3JTcGFjZVJlZiBjb2xvclNwYWNlLCBGb3JtYXQgcGl4ZWxGb3JtYXQpCitzdGQ6OnVuaXF1ZV9w
dHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZShJbnRTaXplIHNpemUsIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgRm9ybWF0IHBpeGVsRm9ybWF0KQogewogICAg
IHJldHVybiBJT1N1cmZhY2U6OmNyZWF0ZShzaXplLCBzaXplLCBjb2xvclNwYWNlLCBwaXhlbEZv
cm1hdCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6Y3JlYXRl
KEludFNpemUgc2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xvclNwYWNlUmVmIGNvbG9y
U3BhY2UsIEZvcm1hdCBwaXhlbEZvcm1hdCkKK3N0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElP
U3VyZmFjZTo6Y3JlYXRlKEludFNpemUgc2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGb3JtYXQgcGl4ZWxGb3JtYXQpCiB7
CiAgICAgaWYgKGF1dG8gY2FjaGVkU3VyZmFjZSA9IHN1cmZhY2VGcm9tUG9vbChzaXplLCBjb250
ZXh0U2l6ZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpKSB7CiAgICAgICAgIExPR19XSVRIX1NU
UkVBTShJT1N1cmZhY2UsIHN0cmVhbSA8PCAiSU9TdXJmYWNlOjpjcmVhdGUgdG9vayBmcm9tIHBv
b2w6ICIgPDwgKmNhY2hlZFN1cmZhY2UpOwpAQCAtNzUsMTMgKzc3LDEzIEBAIHN0ZDo6dW5pcXVl
X3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6Y3IKICAgICByZXR1cm4gc3VyZmFjZTsKIH0KIAot
c3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0
KGNvbnN0IE1hY2hTZW5kUmlnaHQmJiBzZW5kUmlnaHQsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNw
YWNlKQorc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2Vu
ZFJpZ2h0KGNvbnN0IE1hY2hTZW5kUmlnaHQmJiBzZW5kUmlnaHQsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYgY29sb3JTcGFjZSkKIHsKICAgICBhdXRvIHN1cmZhY2UgPSBhZG9wdENGKElP
U3VyZmFjZUxvb2t1cEZyb21NYWNoUG9ydChzZW5kUmlnaHQuc2VuZFJpZ2h0KCkpKTsKICAgICBy
ZXR1cm4gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU3VyZmFjZShzdXJmYWNlLmdldCgpLCBjb2xvclNw
YWNlKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGVG
cm9tU3VyZmFjZShJT1N1cmZhY2VSZWYgc3VyZmFjZSwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3Bh
Y2UpCitzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TdXJm
YWNlKElPU3VyZmFjZVJlZiBzdXJmYWNlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNv
bG9yU3BhY2UpCiB7CiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+KG5ldyBJ
T1N1cmZhY2Uoc3VyZmFjZSwgY29sb3JTcGFjZSkpOwogfQpAQCAtOTQsNyArOTYsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyCiAgICAgc2l6ZV90IHdpZHRoID0g
Q0dJbWFnZUdldFdpZHRoKGltYWdlKTsKICAgICBzaXplX3QgaGVpZ2h0ID0gQ0dJbWFnZUdldEhl
aWdodChpbWFnZSk7CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShJbnRT
aXplKHdpZHRoLCBoZWlnaHQpLCBDR0ltYWdlR2V0Q29sb3JTcGFjZShpbWFnZSkpOworICAgIGF1
dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKEludFNpemUod2lkdGgsIGhlaWdodCksIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSB7IENHSW1hZ2VHZXRDb2xvclNwYWNlKGltYWdlKSB9KTsKICAg
ICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8gc3VyZmFj
ZUNvbnRleHQgPSBzdXJmYWNlLT5lbnN1cmVQbGF0Zm9ybUNvbnRleHQoKTsKQEAgLTExNiw3ICsx
MTgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyCiAgICAgaWYg
KCFjb2xvclNwYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBjcmVh
dGVGcm9tU3VyZmFjZShzdXJmYWNlLCBjb2xvclNwYWNlKTsKKyAgICByZXR1cm4gY3JlYXRlRnJv
bVN1cmZhY2Uoc3VyZmFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIHsgY29sb3JTcGFjZSB9KTsK
IH0KIAogdm9pZCBJT1N1cmZhY2U6Om1vdmVUb1Bvb2woc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFj
ZT4mJiBzdXJmYWNlKQpAQCAtMTk2LDcgKzE5OCw3IEBAIHN0YXRpYyBOU0RpY3Rpb25hcnkgKm9w
dGlvbnNGb3IzMkJpdFN1cmYKIAogfQogCi1JT1N1cmZhY2U6OklPU3VyZmFjZShJbnRTaXplIHNp
emUsIEludFNpemUgY29udGV4dFNpemUsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlLCBGb3Jt
YXQgZm9ybWF0LCBib29sJiBzdWNjZXNzKQorSU9TdXJmYWNlOjpJT1N1cmZhY2UoSW50U2l6ZSBz
aXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNv
bG9yU3BhY2UsIEZvcm1hdCBmb3JtYXQsIGJvb2wmIHN1Y2Nlc3MpCiAgICAgOiBtX2NvbG9yU3Bh
Y2UoY29sb3JTcGFjZSkKICAgICAsIG1fc2l6ZShzaXplKQogICAgICwgbV9jb250ZXh0U2l6ZShj
b250ZXh0U2l6ZSkKQEAgLTIzMiw3ICsyMzQsNyBAQCBJT1N1cmZhY2U6OklPU3VyZmFjZShJbnRT
aXplIHNpemUsIEludFNpCiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKExheWVycywgIklPU3Vy
ZmFjZSBjcmVhdGlvbiBmYWlsZWQgZm9yIHNpemU6ICglZCAlZCkgYW5kIGZvcm1hdDogKCVkKSIs
IHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgZm9ybWF0KTsKIH0KIAotSU9TdXJmYWNlOjpJ
T1N1cmZhY2UoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNl
KQorSU9TdXJmYWNlOjpJT1N1cmZhY2UoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkKICAgICA6IG1fY29sb3JTcGFjZShjb2xvclNw
YWNlKQogICAgICwgbV9zdXJmYWNlKHN1cmZhY2UpCiB7CkBAIC0zNDcsNyArMzQ5LDcgQEAgQ0dD
b250ZXh0UmVmIElPU3VyZmFjZTo6ZW5zdXJlUGxhdGZvcm1DbwogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgCi0gICAgbV9jZ0NvbnRleHQgPSBhZG9wdENGKENHSU9TdXJmYWNlQ29udGV4dENy
ZWF0ZShtX3N1cmZhY2UuZ2V0KCksIG1fY29udGV4dFNpemUud2lkdGgoKSwgbV9jb250ZXh0U2l6
ZS5oZWlnaHQoKSwgYml0c1BlckNvbXBvbmVudCwgYml0c1BlclBpeGVsLCBtX2NvbG9yU3BhY2Uu
Z2V0KCksIGJpdG1hcEluZm8pKTsKKyAgICBtX2NnQ29udGV4dCA9IGFkb3B0Q0YoQ0dJT1N1cmZh
Y2VDb250ZXh0Q3JlYXRlKG1fc3VyZmFjZS5nZXQoKSwgbV9jb250ZXh0U2l6ZS53aWR0aCgpLCBt
X2NvbnRleHRTaXplLmhlaWdodCgpLCBiaXRzUGVyQ29tcG9uZW50LCBiaXRzUGVyUGl4ZWwsIG1f
Y29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwgYml0bWFwSW5mbykpOwogCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIGlmIChhdXRvIGRpc3BsYXlNYXNrID0gcHJpbWFyeU9wZW5HTERpc3Bs
YXlNYXNrKCkpIHsKQEAgLTUxNSw3ICs1MTcsNyBAQCB2b2lkIElPU3VyZmFjZTo6c2V0T3duZXJz
aGlwSWRlbnRpdHkodGFzCiAKIHZvaWQgSU9TdXJmYWNlOjptaWdyYXRlQ29sb3JTcGFjZVRvUHJv
cGVydGllcygpCiB7Ci0gICAgYXV0byBjb2xvclNwYWNlUHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dD
b2xvclNwYWNlQ29weVByb3BlcnR5TGlzdChtX2NvbG9yU3BhY2UuZ2V0KCkpKTsKKyAgICBhdXRv
IGNvbG9yU3BhY2VQcm9wZXJ0aWVzID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDb3B5UHJvcGVydHlM
aXN0KG1fY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSkpOwogICAgIElPU3VyZmFjZVNl
dFZhbHVlKG1fc3VyZmFjZS5nZXQoKSwga0lPU3VyZmFjZUNvbG9yU3BhY2UsIGNvbG9yU3BhY2VQ
cm9wZXJ0aWVzLmdldCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJF
ZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29y
ZUltYWdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBGaWx0ZXJF
ZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6cmVuZAogICAgICAgICByZXR1cm47CiAgICAgCiAgICAg
YXV0byYgc3VyZmFjZSA9IGRvd25jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI+KCptX291dHB1
dEltYWdlQnVmZmVyKS5zdXJmYWNlKCk7Ci0gICAgW3NoYXJlZENJQ29udGV4dCgpLmdldCgpIHJl
bmRlcjogbV9vdXRwdXRJbWFnZS5nZXQoKSB0b0lPU3VyZmFjZTogc3VyZmFjZS5zdXJmYWNlKCkg
Ym91bmRzOmRlc3RSZWN0KGxhc3RFZmZlY3QpIGNvbG9yU3BhY2U6Y2FjaGVkQ0dDb2xvclNwYWNl
KGxhc3RFZmZlY3QucmVzdWx0Q29sb3JTcGFjZSgpKV07CisgICAgW3NoYXJlZENJQ29udGV4dCgp
LmdldCgpIHJlbmRlcjogbV9vdXRwdXRJbWFnZS5nZXQoKSB0b0lPU3VyZmFjZTogc3VyZmFjZS5z
dXJmYWNlKCkgYm91bmRzOmRlc3RSZWN0KGxhc3RFZmZlY3QpIGNvbG9yU3BhY2U6bGFzdEVmZmVj
dC5yZXN1bHRDb2xvclNwYWNlKCkucGxhdGZvcm1Db2xvclNwYWNlKCldOwogfQogICAgIAogRmxv
YXRSZWN0IEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpkZXN0UmVjdChjb25zdCBGaWx0
ZXJFZmZlY3QmIGxhc3RFZmZlY3QpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEltYWdlQnVmZmVyLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJs
aWMgQ29uY3JldGVJbWFnZQogICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpiYXNl
VHJhbnNmb3JtOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhv
c3RXaW5kb3cpCisgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9y
U3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2lu
ZG93KQogICAgIHsKICAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjp0ZW1w
bGF0ZSBjcmVhdGU8SW1hZ2VCdWZmZXI+KHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFj
ZSwgcGl4ZWxGb3JtYXQsIGhvc3RXaW5kb3cpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
QnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgSXRlbUhh
bmRsZTo6ZGVzdHJveSgpCiAgICAgICAgIGdldDxGaWxsUm91bmRlZFJlY3Q+KCkufkZpbGxSb3Vu
ZGVkUmVjdCgpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJdGVtVHlwZTo6R2V0UGl4ZWxC
dWZmZXI6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3Rp
YmxlPEdldFBpeGVsQnVmZmVyPjo6dmFsdWUpOworICAgICAgICBnZXQ8R2V0UGl4ZWxCdWZmZXI+
KCkufkdldFBpeGVsQnVmZmVyKCk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEl0ZW1UeXBl
OjpQdXRQaXhlbEJ1ZmZlcjoKICAgICAgICAgZ2V0PFB1dFBpeGVsQnVmZmVyPigpLn5QdXRQaXhl
bEJ1ZmZlcigpOwpAQCAtMzA3LDcgKzMwNyw3IEBAIHZvaWQgSXRlbUhhbmRsZTo6ZGVzdHJveSgp
CiAgICAgICAgIHJldHVybjsKICNlbmRpZgogICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5
X2Rlc3RydWN0aWJsZTxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz46OnZhbHVlKTsKKyAgICAg
ICAgZ2V0PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpLn5CZWdpbkNsaXBUb0RyYXdpbmdD
b21tYW5kcygpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFu
c3BhcmVuY3lMYXllcjoKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9k
ZXN0cnVjdGlibGU8QmVnaW5UcmFuc3BhcmVuY3lMYXllcj46OnZhbHVlKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1U
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1UeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDYgKzI4MSw3IEBAIGJvb2wgaXNJ
bmxpbmVJdGVtKEl0ZW1UeXBlIHR5cGUpCiAgICAgICogYW5kICgzKSBhbGwgdGhlICJzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtInMgaW5zaWRlIHRoZSBpbmRpdmlkdWFsIGl0ZW0g
Y2xhc3Nlcy4gKi8KIAogICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgSXRlbVR5cGU6OkJl
Z2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1Bh
dGg6CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJh
d0ZvY3VzUmluZ1BhdGg6CkBAIC0yOTQsNiArMjk1LDcgQEAgYm9vbCBpc0lubGluZUl0ZW0oSXRl
bVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDoKICAg
ICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZToKICAgICBjYXNlIEl0ZW1U
eXBlOjpGaWxsUm91bmRlZFJlY3Q6CisgICAgY2FzZSBJdGVtVHlwZTo6R2V0UGl4ZWxCdWZmZXI6
CiAgICAgY2FzZSBJdGVtVHlwZTo6UHV0UGl4ZWxCdWZmZXI6CiAgICAgY2FzZSBJdGVtVHlwZTo6
U2V0TGluZURhc2g6CiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6CkBAIC0zMTAsNyArMzEy
LDYgQEAgYm9vbCBpc0lubGluZUl0ZW0oSXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBl
OjpDbGlwOgogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXQ6CiAgICAgY2FzZSBJdGVtVHlwZTo6
Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5n
Q29tbWFuZHM6CiAgICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgog
ICAgIGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgogICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6CkBAIC0zNTEsNyArMzUyLDYgQEAgYm9vbCBpc0lubGlu
ZUl0ZW0oSXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0OgogICAg
IGNhc2UgSXRlbVR5cGU6OlN0cm9rZUxpbmU6CiAgICAgY2FzZSBJdGVtVHlwZTo6VHJhbnNsYXRl
OgotICAgIGNhc2UgSXRlbVR5cGU6OkdldFBpeGVsQnVmZmVyOgogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg4MCwyMyArODgwLDU1IEBAIE9wdGlvbmFsPENsaXBQYXRoPiBDbGlwUGF0aDo6
ZGVjb2RlKERlY28KIGNsYXNzIEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgY29uc3RleHByIEl0ZW1UeXBlIGl0ZW1UeXBlID0gSXRlbVR5cGU6OkJlZ2lu
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGlu
ZUl0ZW0gPSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSBm
YWxzZTsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IGZhbHNlOwog
Ci0gICAgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5h
dGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpCisgICAgQmVnaW5DbGlwVG9E
cmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQogICAgICAgICA6IG1fZGVzdGluYXRpb24oZGVz
dGluYXRpb24pCiAgICAgICAgICwgbV9jb2xvclNwYWNlKGNvbG9yU3BhY2UpCiAgICAgewogICAg
IH0KIAorICAgIEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSYmIGNvbG9yU3BhY2UpCisgICAgICAgIDog
bV9kZXN0aW5hdGlvbihkZXN0aW5hdGlvbikKKyAgICAgICAgLCBtX2NvbG9yU3BhY2UoV1RGTW92
ZShjb2xvclNwYWNlKSkKKyAgICB7CisgICAgfQorCiAgICAgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0KLSAgICBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JTcGFjZTsgfQor
ICAgIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY29sb3JTcGFjZTsgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBPcHRpb25hbDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4gZGVjb2RlKERlY29kZXImKTsK
IAogcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvbjsKICAgICBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgbV9jb2xvclNwYWNlOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4K
K3ZvaWQgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9kZXN0aW5hdGlvbjsKKyAgICBlbmNvZGVyIDw8
IG1fY29sb3JTcGFjZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPEJl
Z2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPiBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBkZXN0aW5h
dGlvbjsKKyAgICBkZWNvZGVyID4+IGRlc3RpbmF0aW9uOworICAgIGlmICghZGVzdGluYXRpb24p
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxEZXN0aW5hdGlv
bkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CisgICAgZGVjb2RlciA+PiBjb2xvclNwYWNlOworICAg
IGlmICghY29sb3JTcGFjZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJl
dHVybiB7eyAqZGVzdGluYXRpb24sIFdURk1vdmUoKmNvbG9yU3BhY2UpIH19OworfQorCiBjbGFz
cyBFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4
cHIgSXRlbVR5cGUgaXRlbVR5cGUgPSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
OwpAQCAtMTkzOCwyMyArMTk3MCw1NSBAQCBwcml2YXRlOgogY2xhc3MgR2V0UGl4ZWxCdWZmZXIg
ewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUgPSBJdGVt
VHlwZTo6R2V0UGl4ZWxCdWZmZXI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5l
SXRlbSA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9IGZh
bHNlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RyYXdpbmdJdGVtID0gZmFsc2U7CiAK
LSAgICBHZXRQaXhlbEJ1ZmZlcihXZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1hdCBvdXRwdXRGb3Jt
YXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNyY1JlY3QpCisgICAgR2V0UGl4ZWxCdWZmZXIo
Y29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3Jj
UmVjdCkKICAgICAgICAgOiBtX3NyY1JlY3Qoc3JjUmVjdCkKICAgICAgICAgLCBtX291dHB1dEZv
cm1hdChvdXRwdXRGb3JtYXQpCiAgICAgewogICAgIH0KIAotICAgIFBpeGVsQnVmZmVyRm9ybWF0
IG91dHB1dEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fb3V0cHV0Rm9ybWF0OyB9CisgICAgR2V0
UGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXJGb3JtYXQmJiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJl
Y3QmIHNyY1JlY3QpCisgICAgICAgIDogbV9zcmNSZWN0KHNyY1JlY3QpCisgICAgICAgICwgbV9v
dXRwdXRGb3JtYXQoV1RGTW92ZShvdXRwdXRGb3JtYXQpKQorICAgIHsKKyAgICB9CisKKyAgICBj
b25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9v
dXRwdXRGb3JtYXQ7IH0KICAgICBJbnRSZWN0IHNyY1JlY3QoKSBjb25zdCB7IHJldHVybiBtX3Ny
Y1JlY3Q7IH0KIAorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8
R2V0UGl4ZWxCdWZmZXI+IGRlY29kZShEZWNvZGVyJik7CisKIHByaXZhdGU6CiAgICAgSW50UmVj
dCBtX3NyY1JlY3Q7CiAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgbV9vdXRwdXRGb3JtYXQ7CiB9Owog
Cit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBHZXRQaXhlbEJ1ZmZlcjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3NyY1JlY3Q7CisgICAg
ZW5jb2RlciA8PCBtX291dHB1dEZvcm1hdDsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4K
K09wdGlvbmFsPEdldFBpeGVsQnVmZmVyPiBHZXRQaXhlbEJ1ZmZlcjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8SW50UmVjdD4gc3JjUmVjdDsKKyAgICBkZWNvZGVy
ID4+IHNyY1JlY3Q7CisgICAgaWYgKCFzcmNSZWN0KQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXJGb3JtYXQ+IG91dHB1dEZvcm1hdDsKKyAg
ICBkZWNvZGVyID4+IG91dHB1dEZvcm1hdDsKKyAgICBpZiAoIW91dHB1dEZvcm1hdCkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiB7eyBXVEZNb3ZlKCpvdXRwdXRG
b3JtYXQpLCAqc3JjUmVjdCB9fTsKK30KKwogY2xhc3MgUHV0UGl4ZWxCdWZmZXIgewogcHVibGlj
OgogICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUgPSBJdGVtVHlwZTo6UHV0
UGl4ZWxCdWZmZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
Y3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ1Miw3ICs0NTIsNyBAQCB2b2lkIFJlY29yZGVyOjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFnZUJ1
CiAgICAgYXBwZW5kPENsaXBUb0ltYWdlQnVmZmVyPihpbWFnZUJ1ZmZlci5yZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIoKSwgZGVzdFJlY3QpOwogfQogCi12b2lkIFJlY29yZGVyOjpjbGlwVG9E
cmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25D
b2xvclNwYWNlIGNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYg
ZHJhd2luZ0Z1bmN0aW9uKQordm9pZCBSZWNvcmRlcjo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYg
Y29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBkcmF3aW5nRnVu
Y3Rpb24pCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0IG5lc3RlZENvbnRleHQoWyZdKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICBhdXRvIGluaXRpYWxDbGlwID0gRmxvYXRSZWN0
KEZsb2F0UG9pbnQoKSwgZGVzdGluYXRpb24uc2l6ZSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGlw
UGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpIG92ZXJyaWRlOwogICAgIEludFJlY3QgY2xpcEJv
dW5kcygpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1h
Z2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIGNsaXBUb0Ry
YXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3ND
b250ZXh0Jik+JiYpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShWSURFTykKICAgICB2b2lkIHBhaW50
RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24p
IG92ZXJyaWRlOwogICAgIGJvb2wgY2FuUGFpbnRGcmFtZUZvck1lZGlhKGNvbnN0IE1lZGlhUGxh
eWVyJikgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcg
QEAgYm9vbCBGRURpc3BsYWNlbWVudE1hcDo6c2V0U2NhbGUoZmxvYXQgcwogICAgIHJldHVybiB0
cnVlOwogfQogCi12b2lkIEZFRGlzcGxhY2VtZW50TWFwOjpzZXRSZXN1bHRDb2xvclNwYWNlKERl
c3RpbmF0aW9uQ29sb3JTcGFjZSkKK3ZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OnNldFJlc3VsdENv
bG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJikKIHsKICAgICAvLyBTcGVjOiBU
aGUgJ2NvbG9yLWludGVycG9sYXRpb24tZmlsdGVycycgcHJvcGVydHkgb25seSBhcHBsaWVzIHRv
IHRoZSAnaW4yJyBzb3VyY2UgaW1hZ2UKICAgICAvLyBhbmQgZG9lcyBub3QgYXBwbHkgdG8gdGhl
ICdpbicgc291cmNlIGltYWdlLiBUaGUgJ2luJyBzb3VyY2UgaW1hZ2UgbXVzdCByZW1haW4gaW4g
aXRzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlz
cGxhY2VtZW50TWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFw
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIGZsb2F0IHNj
YWxlKCkgY29uc3QgeyByZXR1cm4gbV9zY2FsZTsgfQogICAgIGJvb2wgc2V0U2NhbGUoZmxvYXQp
OwogCi0gICAgdm9pZCBzZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSkg
b3ZlcnJpZGU7CisgICAgdm9pZCBzZXRSZXN1bHRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgdHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFj
ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBpbnQpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29k
LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVGbG9vZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0MCw4IEBAIHB1Ymxp
YzoKICNpZiAhVVNFKENHKQogICAgIC8vIGZlRmxvb2QgZG9lcyBub3QgcGVyZm9ybSBjb2xvciBp
bnRlcnBvbGF0aW9uIG9mIGFueSBraW5kLCBzbyB0aGUgcmVzdWx0IGlzIGFsd2F5cyBpbiB0aGUg
Y3VycmVudAogICAgIC8vIGNvbG9yIHNwYWNlIHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVlIG9mIGNv
bG9yLWludGVycG9sYXRpb24tZmlsdGVycy4KLSAgICB2b2lkIHNldE9wZXJhdGluZ0NvbG9yU3Bh
Y2UoRGVzdGluYXRpb25Db2xvclNwYWNlKSBvdmVycmlkZSB7IEZpbHRlckVmZmVjdDo6c2V0UmVz
dWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOyB9Ci0gICAgdm9pZCBz
ZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSkgb3ZlcnJpZGUgeyBGaWx0
ZXJFZmZlY3Q6OnNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KTsgfQorICAgIHZvaWQgc2V0T3BlcmF0aW5nQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmKSBvdmVycmlkZSB7IEZpbHRlckVmZmVjdDo6c2V0UmVzdWx0Q29sb3JTcGFjZShE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7IH0KKyAgICB2b2lkIHNldFJlc3VsdENvbG9y
U3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJikgb3ZlcnJpZGUgeyBGaWx0ZXJFZmZl
Y3Q6OnNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOyB9
CiAjZW5kaWYKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCB2b2lkIEZFVGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3
YXJlKCkKICAgICAgICAgdGlsZVJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclJlc29sdXRpb24oKS53
aWR0aCgpLCBmaWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpLmhlaWdodCgpKTsKICAgICB9CiAKLSAg
ICBhdXRvIHRpbGVJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVy
KHRpbGVSZWN0LCB0aWxlUmVjdCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBmaWx0ZXIo
KS5yZW5kZXJpbmdNb2RlKCkpOworICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29u
dGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIodGlsZVJlY3QsIHRpbGVSZWN0LCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSwgZmlsdGVyKCkucmVuZGVyaW5nTW9kZSgpKTsKICAgICBpZiAoIXRp
bGVJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlckVmZmVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzOSw3ICs0MzksNyBAQCBzdGF0
aWMgdm9pZCBjb3B5VW5wcmVtdWx0aXBseWluZ0FscGhhKGNvCiAjZW5kaWYKIH0KIAotT3B0aW9u
YWw8UGl4ZWxCdWZmZXI+IEZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVsQnVmZmVyVG9Db2xvclNw
YWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSB0YXJnZXRDb2xvclNwYWNlLCBQaXhlbEJ1ZmZlciYg
cGl4ZWxCdWZmZXIpCitPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gRmlsdGVyRWZmZWN0Ojpjb252ZXJ0
UGl4ZWxCdWZmZXJUb0NvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiB0YXJn
ZXRDb2xvclNwYWNlLCBQaXhlbEJ1ZmZlciYgcGl4ZWxCdWZmZXIpCiB7CiAgICAgLy8gRklYTUU6
IFVzaW5nIGFuIEltYWdlQnVmZmVyIHRvIHBlcmZvcm0gdGhlIGNvbG9yIHNwYWNlIGNvbnZlcnNp
b24gaXMgdW5uZWNlc3NhcnkuIFdlIGNhbiBkbyBpdCBkaXJlY3RseS4KIApAQCAtNDU0LDcgKzQ1
NCw3IEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBGaWx0ZXJFZmZlY3Q6OmNvbnYKICAgICByZXR1
cm4gY29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKHRhcmdldENvbG9yU3BhY2UsICpidWZm
ZXIsIGRlc3RpbmF0aW9uUmVjdCwgcGl4ZWxCdWZmZXIuZm9ybWF0KCkuYWxwaGFGb3JtYXQpOwog
fQogCi1PcHRpb25hbDxQaXhlbEJ1ZmZlcj4gRmlsdGVyRWZmZWN0Ojpjb252ZXJ0SW1hZ2VCdWZm
ZXJUb0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIHRhcmdldENvbG9yU3BhY2UsIElt
YWdlQnVmZmVyJiBpbnB1dEJ1ZmZlciwgY29uc3QgSW50UmVjdCYgcmVjdCwgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbiBvdXRwdXRBbHBoYUZvcm1hdCkKK09wdGlvbmFsPFBpeGVsQnVmZmVyPiBGaWx0
ZXJFZmZlY3Q6OmNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmIHRhcmdldENvbG9yU3BhY2UsIEltYWdlQnVmZmVyJiBpbnB1dEJ1ZmZlciwg
Y29uc3QgSW50UmVjdCYgcmVjdCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRBbHBoYUZv
cm1hdCkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBjYW4gYmUgZG9uZSBtb3JlIGRpcmVjdGx5IHVz
aW5nIFBpeGVsQnVmZmVyQ29udmVyc2lvbi4KIApAQCAtNDcyLDcgKzQ3Miw3IEBAIE9wdGlvbmFs
PFBpeGVsQnVmZmVyPiBGaWx0ZXJFZmZlY3Q6OmNvbnYKICAgICByZXR1cm4gY29udmVydGVkQnVm
ZmVyLT5nZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIHJlY3QpOwogfQogCi12b2lkIEZpbHRlckVmZmVj
dDo6Y29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJh
eSYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2
b2lkIEZpbHRlckVmZmVjdDo6Y29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0aW5hdGlvbihV
aW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYgY29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0
IEludFJlY3QmIGRlc3RSZWN0KQogewogICAgIC8vIENvbnZlcnRzIHRoZSBkYXRhIHN0b3JlZCBp
biBtX2ltYWdlQnVmZmVyUmVzdWx0LCBhbmQgc2F2ZSB0byBkZXN0aW5hdGlvbgogICAgIGF1dG8g
Y29udmVydGVkUGl4ZWxCdWZmZXIgPSBjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UoY29s
b3JTcGFjZSwgKm1faW1hZ2VCdWZmZXJSZXN1bHQsIHsgSW50UG9pbnQoKSwgbV9hYnNvbHV0ZVBh
aW50UmVjdC5zaXplKCkgfSwgb3V0cHV0Rm9ybWF0KTsKQEAgLTQ4MSw3ICs0ODEsNyBAQCB2b2lk
IEZpbHRlckVmZmVjdDo6Y29weUNvbnZlcnRlZEltYWdlQnVmCiAgICAgY29weUltYWdlQnl0ZXMo
Y29udmVydGVkUGl4ZWxCdWZmZXItPmRhdGEoKSwgZGVzdGluYXRpb24sIGRlc3RSZWN0KTsKIH0K
IAotdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRQaXhlbEJ1ZmZlclRvRGVzdGluYXRp
b24oVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBQaXhlbEJ1ZmZlciYgcGl4ZWxCdWZm
ZXIsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCkKK3ZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5Q29udmVydGVkUGl4ZWxCdWZmZXJUb0Rlc3Rp
bmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgUGl4ZWxCdWZmZXImIHBpeGVs
QnVmZmVyLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KQogewogICAgIC8vIENvbnZlcnRzIHRoZSBkYXRhIHN0b3JlZCBpbiBt
X3VubXVsdGlwbGllZEltYWdlUmVzdWx0L21fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0LAogICAg
IC8vIHdoaWNoZXZlciBpc24ndCBudWxsLCBhbmQgc2F2ZSB0byBkZXN0aW5hdGlvbgpAQCAtNjM2
LDcgKzYzNiw3IEBAIGJvb2wgRmlsdGVyRWZmZWN0OjpyZXF1aXJlc1BpeGVsQnVmZmVyQ28KICNl
bmRpZgogfQogCi12b2lkIEZpbHRlckVmZmVjdDo6dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgZGVzdGluYXRpb25Db2xvclNwYWNlKQordm9pZCBGaWx0ZXJF
ZmZlY3Q6OnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiBkZXN0aW5hdGlvbkNvbG9yU3BhY2UpCiB7CiAjaWYgVVNFKENHKQogICAgIC8vIENHIGhh
bmRsZXMgY29sb3Igc3BhY2UgYWRqdXN0bWVudHMgaW50ZXJuYWxseS4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZl
Y3QuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBbHBoYVByZW11bHRpcGxpY2F0aW9uLmgiCi0j
aW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5o
IgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRl
ICJJbnRSZWN0RXh0ZW50LmgiCkBAIC0xNjUsMTMgKzE2NSwxMyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBjbGlwc1RvQm91bmRzKCkgY29uc3QgeyByZXR1cm4gbV9jbGlwc1RvQm91bmRzOyB9CiAgICAg
dm9pZCBzZXRDbGlwc1RvQm91bmRzKGJvb2wgdmFsdWUpIHsgbV9jbGlwc1RvQm91bmRzID0gdmFs
dWU7IH0KIAotICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBvcGVyYXRpbmdDb2xvclNwYWNlKCkg
Y29uc3QgeyByZXR1cm4gbV9vcGVyYXRpbmdDb2xvclNwYWNlOyB9Ci0gICAgdmlydHVhbCB2b2lk
IHNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2Up
IHsgbV9vcGVyYXRpbmdDb2xvclNwYWNlID0gY29sb3JTcGFjZTsgfQotICAgIERlc3RpbmF0aW9u
Q29sb3JTcGFjZSByZXN1bHRDb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bHRDb2xv
clNwYWNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRp
b25Db2xvclNwYWNlIGNvbG9yU3BhY2UpIHsgbV9yZXN1bHRDb2xvclNwYWNlID0gY29sb3JTcGFj
ZTsgfQorICAgIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgb3BlcmF0aW5nQ29sb3JTcGFj
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW5nQ29sb3JTcGFjZTsgfQorICAgIHZpcnR1YWwg
dm9pZCBzZXRPcGVyYXRpbmdDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYg
Y29sb3JTcGFjZSkgeyBtX29wZXJhdGluZ0NvbG9yU3BhY2UgPSBjb2xvclNwYWNlOyB9CisgICAg
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiByZXN1bHRDb2xvclNwYWNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXN1bHRDb2xvclNwYWNlOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFJlc3VsdENv
bG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKSB7IG1fcmVz
dWx0Q29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB0cmFuc2Zv
cm1SZXN1bHRDb2xvclNwYWNlKEZpbHRlckVmZmVjdCogaW4sIGNvbnN0IGludCkgeyBpbi0+dHJh
bnNmb3JtUmVzdWx0Q29sb3JTcGFjZShtX29wZXJhdGluZ0NvbG9yU3BhY2UpOyB9Ci0gICAgdm9p
ZCB0cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSk7CisgICAg
dm9pZCB0cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYpOwogICAgIAogICAgIHN0YXRpYyBWZWN0b3I8ZmxvYXQ+IG5vcm1hbGl6ZWRGbG9hdHMoY29u
c3QgVmVjdG9yPGZsb2F0PiYgdmFsdWVzKQogICAgIHsKQEAgLTIwMywxMSArMjAzLDExIEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpID0gMDsKIAog
ICAgIHZvaWQgY29weUltYWdlQnl0ZXMoY29uc3QgVWludDhDbGFtcGVkQXJyYXkmIHNvdXJjZSwg
VWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0JikgY29uc3Q7Ci0g
ICAgdm9pZCBjb3B5Q29udmVydGVkSW1hZ2VCdWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBl
ZEFycmF5JiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uLCBj
b25zdCBJbnRSZWN0Jik7Ci0gICAgdm9pZCBjb3B5Q29udmVydGVkUGl4ZWxCdWZmZXJUb0Rlc3Rp
bmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiwgUGl4ZWxCdWZmZXImLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2b2lkIGNvcHlDb252ZXJ0ZWRJbWFnZUJ1ZmZl
clRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdm9p
ZCBjb3B5Q29udmVydGVkUGl4ZWxCdWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5
JiwgUGl4ZWxCdWZmZXImLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25zdCBJbnRS
ZWN0Jik7CiAgICAgYm9vbCByZXF1aXJlc1BpeGVsQnVmZmVyQ29sb3JTcGFjZUNvbnZlcnNpb24o
T3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPik7Ci0gICAgT3B0aW9uYWw8UGl4ZWxCdWZm
ZXI+IGNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2Us
IEltYWdlQnVmZmVyJiwgY29uc3QgSW50UmVjdCYsIEFscGhhUHJlbXVsdGlwbGljYXRpb24pOwot
ICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBjb252ZXJ0UGl4ZWxCdWZmZXJUb0NvbG9yU3BhY2Uo
RGVzdGluYXRpb25Db2xvclNwYWNlLCBQaXhlbEJ1ZmZlciYpOworICAgIE9wdGlvbmFsPFBpeGVs
QnVmZmVyPiBjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiwgSW1hZ2VCdWZmZXImLCBjb25zdCBJbnRSZWN0JiwgQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbik7CisgICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGNvbnZlcnRQaXhlbEJ1ZmZlclRv
Q29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEJ1ZmZlciYpOwog
ICAgIAogCiAgICAgRmlsdGVyJiBtX2ZpbHRlcjsKQEAgLTI0NCwxMyArMjQ0LDExIEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2NsaXBzVG9Cb3VuZHMgeyB0cnVlIH07CiAKICNpZiBFTkFCTEUoREVT
VElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgc3RhdGljIGNvbnN0ZXhwciBh
dXRvIGRlZmF1bHRPcGVyYXRpbmdDb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpM
aW5lYXJTUkdCOworICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBtX29wZXJhdGluZ0NvbG9yU3Bh
Y2UgeyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKSB9OwogI2Vsc2UKLSAgICBz
dGF0aWMgY29uc3RleHByIGF1dG8gZGVmYXVsdE9wZXJhdGluZ0NvbG9yU3BhY2UgPSBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0I7CisgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1fb3BlcmF0
aW5nQ29sb3JTcGFjZSB7IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAjZW5kaWYK
LQotICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBtX29wZXJhdGluZ0NvbG9yU3BhY2UgeyBkZWZh
dWx0T3BlcmF0aW5nQ29sb3JTcGFjZSB9OwotICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBtX3Jl
c3VsdENvbG9yU3BhY2UgeyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgbV9yZXN1bHRDb2xvclNwYWNlIHsgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCkgfTsKICAgICAKICAgICBjb25zdCBUeXBlIG1fZmlsdGVyRWZmZWN0Q2xhc3NU
eXBlOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
U291cmNlR3JhcGhpYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaAkod29y
a2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBwcml2YXRlOgogICAgIFNvdXJjZUdyYXBoaWMo
RmlsdGVyJiBmaWx0ZXIpCiAgICAgICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlciwgVHlwZTo6U291
cmNlR3JhcGhpYykKICAgICB7Ci0gICAgICAgIHNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKTsKKyAgICAgICAgc2V0T3BlcmF0aW5nQ29sb3JTcGFjZShE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgfQogCiAgICAgY29uc3QgY2hhciog
ZmlsdGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJTb3VyY2VHcmFwaGljIjsgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lh
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNv
cmRlci5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDc2LDcgKzEwNzYsNyBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVj
b3JkZXI6OmFwcGVuZChzdGQ6CiAgICAgbV9jb21tYW5kTGlzdC5hcHBlbmQoV1RGTW92ZShjb21t
YW5kKSk7CiB9CiAKLXZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xpcFRvRHJhd2luZ0Nv
bW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgRnVuY3Rpb248
dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikKK3ZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpCiB7CiAgICAg
Ly8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3Np
YUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTcsNyArOTcsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgV2ViQ29yZTo6UGF0aCYsIFdlYkNv
cmU6OldpbmRSdWxlKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IGNsaXBCb3VuZHMo
KSBvdmVycmlkZTsKICAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVm
ZmVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGlw
VG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsaXBUb0RyYXdpbmdDb21t
YW5kcyhjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBXZWJDb3Jl
OjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dCYpPiYmKSBvdmVycmlkZTsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgdm9pZCBwYWlu
dEZyYW1lRm9yTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXImLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uKSBvdmVycmlkZTsKICAgICBib29sIGNhblBhaW50RnJhbWVGb3JN
ZWRpYShjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXllciYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L3RleG1hcC9OaWNvc2lhR0NHTExheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTExheWVyLmNwcAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS90ZXhtYXAvTmljb3NpYUdDR0xMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcg
KzgxLDcgQEAgdm9pZCBHQ0dMTGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQoKQogICAgIEludFNp
emUgdGV4dHVyZVNpemUobV9jb250ZXh0Lm1fY3VycmVudFdpZHRoLCBtX2NvbnRleHQubV9jdXJy
ZW50SGVpZ2h0KTsKICAgICBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzID0gbV9jb250ZXh0
LmNvbnRleHRBdHRyaWJ1dGVzKCkuYWxwaGEgPyBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEJsZW5k
IDogMDsKICNpZiBVU0UoQU5HTEUpCi0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBp
bWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGV4dHVyZVNpemUsIFJlbmRlcmluZ01v
ZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGltYWdlQnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZXh0dXJlU2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5h
Y2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0
OjpCR1JBOCk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYzLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKQogewotICAgIFBpeGVs
QnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlw
bGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsK
KyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpV
bnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCkgfTsKICAgICBhdXRvIHBpeGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0
ZShmb3JtYXQsIGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkpOwogICAgIGlmICghcGl4ZWxC
dWZmZXIpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xF
Uy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cmVhZG5QaXhlbAogCiBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKQogewotICAgIFBpeGVs
QnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlw
bGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsK
KyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpV
bnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCkgfTsKICAgICBhdXRvIHBpeGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0
ZShmb3JtYXQsIGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkpOwogICAgIGlmICghcGl4ZWxC
dWZmZXIpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUu
Y3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcg
QEAgdm9pZCBCaXRtYXBUZXh0dXJlOjp1cGRhdGVDb250ZW50cyhHcmFwaAogewogICAgIC8vIE1h
a2luZyBhbiB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZCBidWZmZXIgaGVyZSBpcyBPSyBi
ZWNhdXNlIHRoaXMgY29kZQogICAgIC8vIGlzbid0IHVzZWQgYnkgYW55IHBsYXRmb3JtcyB0aGF0
IHJlc3BlY3QgdGhlIGFjY2VsZXJhdGVkIGJpdC4KLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZSh0YXJnZXRSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdS
QTgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRhcmdldFJl
Y3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWltYWdlQnVm
ZmVyKQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIxIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTWljaGFl
bCBFbW1lbCBtaWtlLmVtbWVsQGdtYWlsLmNvbQogICogQ29weXJpZ2h0IChDKSAyMDA4IENocmlz
dGlhbiBEeXdhbiA8Y2hyaXN0aWFuQGltZW5kaW8uY29tPgogICogQ29weXJpZ2h0IChDKSAyMDA4
IENvbGxhYm9yYSBMdGQuCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKIAorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JT
cGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgog
I2luY2x1ZGUgIkd0a1V0aWxpdGllcy5oIgpAQCAtODUsNiArODYsMTEgQEAgYm9vbCBzY3JlZW5J
c01vbm9jaHJvbWUoV2lkZ2V0KiB3aWRnZXQpCiAgICAgcmV0dXJuIHNjcmVlbkRlcHRoKHdpZGdl
dCkgPCAyOwogfQogCitEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc2NyZWVuQ29sb3JTcGFjZShXaWRn
ZXQqKQoreworICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKK30KKwog
Ym9vbCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycygpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU2NyZWVuSU9TLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNjcmVlbklPUy5t
bQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRm
b3JtU2NyZWVuSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNiwgMjAxNCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODgsOSArODgsOSBAQCBib29s
IHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZShXaWRnCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1DR0NvbG9yU3BhY2VSZWYgc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqIHdpZGdldCkKK0Rl
c3RpbmF0aW9uQ29sb3JTcGFjZSBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCogd2lkZ2V0KQogewot
ICAgIHJldHVybiBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3Iod2lkZ2V0KSA/IGV4dGVuZGVk
U1JHQkNvbG9yU3BhY2VSZWYoKSA6IHNSR0JDb2xvclNwYWNlUmVmKCk7CisgICAgcmV0dXJuIHNj
cmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcih3aWRnZXQpID8gRGVzdGluYXRpb25Db2xvclNwYWNl
IHsgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpIH0gOiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKTsKIH0KIAogLy8gVGhlc2UgZnVuY3Rpb25zIHNjYWxlIGJldHdlZW4gc2NyZWVuIGFu
ZCBwYWdlIGNvb3JkaW5hdGVzIGJlY2F1c2UgSmF2YVNjcmlwdC9ET00gb3BlcmF0aW9ucwpAQCAt
MTkzLDE2ICsxOTMsMTQgQEAgU2NyZWVuUHJvcGVydGllcyBjb2xsZWN0U2NyZWVuUHJvcGVydGll
cwogICAgICAgICBGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxlUmVjdCA9IHNjcmVlbi5ib3VuZHM7
CiAgICAgICAgIHNjcmVlbkF2YWlsYWJsZVJlY3Quc2V0WShOU01heFkoc2NyZWVuLmJvdW5kcykg
LSAoc2NyZWVuQXZhaWxhYmxlUmVjdC55KCkgKyBzY3JlZW5BdmFpbGFibGVSZWN0LmhlaWdodCgp
KSk7IC8vIGZsaXAKICAgICAgICAgRmxvYXRSZWN0IHNjcmVlblJlY3QgPSBzY3JlZW4uX3JlZmVy
ZW5jZUJvdW5kczsKLSAgICAgICAgCi0gICAgICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+
IGNvbG9yU3BhY2UgPSBzY3JlZW5Db2xvclNwYWNlKG51bGxwdHIpOwotICAgICAgICAKKyAgICAg
ICAgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UgeyBzY3JlZW5Db2xvclNwYWNlKG51
bGxwdHIpIH07CiAgICAgICAgIGludCBzY3JlZW5EZXB0aCA9IFdlYkNvcmU6OnNjcmVlbkRlcHRo
KG51bGxwdHIpOwogICAgICAgICBpbnQgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQgPSBXZWJDb3Jl
OjpzY3JlZW5EZXB0aFBlckNvbXBvbmVudChudWxscHRyKTsKICAgICAgICAgYm9vbCBzY3JlZW5T
dXBwb3J0c0V4dGVuZGVkQ29sb3IgPSBXZWJDb3JlOjpzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29s
b3IobnVsbHB0cik7CiAgICAgICAgIGJvb2wgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMgPSBXZWJD
b3JlOjpzY3JlZW5IYXNJbnZlcnRlZENvbG9ycygpOwogICAgICAgICBmbG9hdCBzY2FsZUZhY3Rv
ciA9IFdlYkNvcmU6OnNjcmVlblBQSUZhY3RvcigpOwogCi0gICAgICAgIHNjcmVlblByb3BlcnRp
ZXMuc2NyZWVuRGF0YU1hcC5zZXQoKytkaXNwbGF5SUQsIFNjcmVlbkRhdGEgeyBzY3JlZW5BdmFp
bGFibGVSZWN0LCBzY3JlZW5SZWN0LCBjb2xvclNwYWNlLCBzY3JlZW5EZXB0aCwgc2NyZWVuRGVw
dGhQZXJDb21wb25lbnQsIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciwgc2NyZWVuSGFzSW52
ZXJ0ZWRDb2xvcnMsIGZhbHNlLCBzY2FsZUZhY3RvciB9KTsKKyAgICAgICAgc2NyZWVuUHJvcGVy
dGllcy5zY3JlZW5EYXRhTWFwLnNldCgrK2Rpc3BsYXlJRCwgU2NyZWVuRGF0YSB7IHNjcmVlbkF2
YWlsYWJsZVJlY3QsIHNjcmVlblJlY3QsIFdURk1vdmUoY29sb3JTcGFjZSksIHNjcmVlbkRlcHRo
LCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yLCBz
Y3JlZW5IYXNJbnZlcnRlZENvbG9ycywgZmFsc2UsIHNjYWxlRmFjdG9yIH0pOwogICAgICAgICAK
ICAgICAgICAgaWYgKHNjcmVlbiA9PSBbUEFMOjpnZXRVSVNjcmVlbkNsYXNzKCkgbWFpblNjcmVl
bl0pCiAgICAgICAgICAgICBzY3JlZW5Qcm9wZXJ0aWVzLnByaW1hcnlEaXNwbGF5SUQgPSBkaXNw
bGF5SUQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5N
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
U2NyZWVuTWFjLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGxhdGZvcm1TY3JlZW5NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMCw5ICsxMzAs
NyBAQCBTY3JlZW5Qcm9wZXJ0aWVzIGNvbGxlY3RTY3JlZW5Qcm9wZXJ0aWVzCiAgICAgICAgIEZs
b2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0ID0gc2NyZWVuLnZpc2libGVGcmFtZTsKICAgICAg
ICAgc2NyZWVuQXZhaWxhYmxlUmVjdC5zZXRZKE5TTWF4WShzY3JlZW4uZnJhbWUpIC0gKHNjcmVl
bkF2YWlsYWJsZVJlY3QueSgpICsgc2NyZWVuQXZhaWxhYmxlUmVjdC5oZWlnaHQoKSkpOyAvLyBm
bGlwCiAgICAgICAgIEZsb2F0UmVjdCBzY3JlZW5SZWN0ID0gc2NyZWVuLmZyYW1lOwotCi0gICAg
ICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2UgPSBzY3JlZW4uY29sb3JT
cGFjZS5DR0NvbG9yU3BhY2U7Ci0KKyAgICAgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9y
U3BhY2UgeyBzY3JlZW4uY29sb3JTcGFjZS5DR0NvbG9yU3BhY2UgfTsKICAgICAgICAgaW50IHNj
cmVlbkRlcHRoID0gTlNCaXRzUGVyUGl4ZWxGcm9tRGVwdGgoc2NyZWVuLmRlcHRoKTsKICAgICAg
ICAgaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50ID0gTlNCaXRzUGVyU2FtcGxlRnJvbURlcHRo
KHNjcmVlbi5kZXB0aCk7CiAgICAgICAgIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9y
ID0gW3NjcmVlbiBjYW5SZXByZXNlbnREaXNwbGF5R2FtdXQ6TlNEaXNwbGF5R2FtdXRQM107CkBA
IC0xNjMsNyArMTYxLDcgQEAgU2NyZWVuUHJvcGVydGllcyBjb2xsZWN0U2NyZWVuUHJvcGVydGll
cwogICAgICAgICBpZiAoZGlzcGxheU1hc2spCiAgICAgICAgICAgICBncHVJRCA9IGdwdUlERm9y
RGlzcGxheU1hc2soZGlzcGxheU1hc2spOwogCi0gICAgICAgIHNjcmVlblByb3BlcnRpZXMuc2Ny
ZWVuRGF0YU1hcC5zZXQoZGlzcGxheUlELCBTY3JlZW5EYXRhIHsgc2NyZWVuQXZhaWxhYmxlUmVj
dCwgc2NyZWVuUmVjdCwgY29sb3JTcGFjZSwgc2NyZWVuRGVwdGgsIHNjcmVlbkRlcHRoUGVyQ29t
cG9uZW50LCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IsIHNjcmVlbkhhc0ludmVydGVkQ29s
b3JzLCBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UsIHNjcmVlbklzTW9ub2Nocm9tZSwg
ZGlzcGxheU1hc2ssIGdwdUlELCBkeW5hbWljUmFuZ2VNb2RlLCBzY2FsZUZhY3RvciB9KTsKKyAg
ICAgICAgc2NyZWVuUHJvcGVydGllcy5zY3JlZW5EYXRhTWFwLnNldChkaXNwbGF5SUQsIFNjcmVl
bkRhdGEgeyBzY3JlZW5BdmFpbGFibGVSZWN0LCBzY3JlZW5SZWN0LCBXVEZNb3ZlKGNvbG9yU3Bh
Y2UpLCBzY3JlZW5EZXB0aCwgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQsIHNjcmVlblN1cHBvcnRz
RXh0ZW5kZWRDb2xvciwgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMsIHNjcmVlblN1cHBvcnRzSGln
aER5bmFtaWNSYW5nZSwgc2NyZWVuSXNNb25vY2hyb21lLCBkaXNwbGF5TWFzaywgZ3B1SUQsIGR5
bmFtaWNSYW5nZU1vZGUsIHNjYWxlRmFjdG9yIH0pOwogCiAgICAgICAgIGlmICghc2NyZWVuUHJv
cGVydGllcy5wcmltYXJ5RGlzcGxheUlEKQogICAgICAgICAgICAgc2NyZWVuUHJvcGVydGllcy5w
cmltYXJ5RGlzcGxheUlEID0gZGlzcGxheUlEOwpAQCAtMzQwLDEzICszMzgsMTMgQEAgTlNTY3Jl
ZW4gKnNjcmVlbihQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbAogICAgIHJldHVybiBmaXJzdFNjcmVl
bigpOwogfQogCi1DR0NvbG9yU3BhY2VSZWYgc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqIHdpZGdl
dCkKK0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCogd2lkZ2V0
KQogewogICAgIGlmIChhdXRvIGRhdGEgPSBzY3JlZW5Qcm9wZXJ0aWVzKHdpZGdldCkpCi0gICAg
ICAgIHJldHVybiBkYXRhLT5jb2xvclNwYWNlLmdldCgpOworICAgICAgICByZXR1cm4gZGF0YS0+
Y29sb3JTcGFjZTsKIAogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2
aWxlZ2U6OkNhbkNvbW11bmljYXRlV2l0aFdpbmRvd1NlcnZlcikpOwotICAgIHJldHVybiBzY3Jl
ZW4od2lkZ2V0KS5jb2xvclNwYWNlLkNHQ29sb3JTcGFjZTsKKyAgICByZXR1cm4gRGVzdGluYXRp
b25Db2xvclNwYWNlIHsgc2NyZWVuKHdpZGdldCkuY29sb3JTcGFjZS5DR0NvbG9yU3BhY2UgfTsK
IH0KIAogYm9vbCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IoV2lkZ2V0KiB3aWRnZXQpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCShyZXZpc2lvbiAyNzc5
MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTcyNiw3ICs3MjYsNyBAQCBib29sIFRoZW1lTWFjOjpkcmF3Q2VsbE9yRm9jdXNS
aW5nV2l0aFZpCiAKICAgICBpZiAodXNlSW1hZ2VCdWZmZXIpIHsKICAgICAgICAgTlNSZWN0IGlt
YWdlQnVmZmVyRHJhd1JlY3QgPSBOU1JlY3QoRmxvYXRSZWN0KGJ1dHRvbkZvY3VzUmVjdE91dGxp
bmVXaWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCByZWN0LndpZHRoKCksIHJlY3Qu
aGVpZ2h0KCkpKTsKLSAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVh
dGVDb21wYXRpYmxlQnVmZmVyKHJlY3Quc2l6ZSgpICsgMiAqIEZsb2F0U2l6ZShidXR0b25Gb2N1
c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCksIGRldmljZVNj
YWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGNvbnRleHQpOworICAgICAg
ICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
cmVjdC5zaXplKCkgKyAyICogRmxvYXRTaXplKGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwg
YnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBjb250ZXh0KTsKICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZl
cikKICAgICAgICAgICAgIHJldHVybiBuZWVkc1JlcGFpbnQ7CiAgICAgICAgIHsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVW
aWRlb1NvdXJjZUdTdHJlYW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVh
bWVyLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVhbWVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIE1vY2tSZWFsdGltZVZpZGVvU291
cmNlR1N0cmVhbWVyOjp1CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5nZXRQaXhlbEJ1ZmZlcih7IEFs
cGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OkJHUkE4
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfSwgeyB7IH0sIGltYWdlQnVmZmVyLT5sb2dp
Y2FsU2l6ZSgpIH0pOworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+Z2V0UGl4
ZWxCdWZmZXIoeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVs
Rm9ybWF0OjpCR1JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfSwgeyB7IH0sIGlt
YWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpIH0pOwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAg
ICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NTQsNyArNDU0LDcgQEAgSW1hZ2VCdWZmZXIqIE1vY2tSZWFs
dGltZVZpZGVvU291cmNlOjppbQogICAgIGlmIChtX2ltYWdlQnVmZmVyKQogICAgICAgICByZXR1
cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsKIAotICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKGNhcHR1cmVTaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBt
X2ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjYXB0dXJlU2l6ZSgpLCBSZW5kZXJp
bmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
UGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIW1faW1hZ2VCdWZmZXIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wbGF5c3RhdGlv
bi9QbGF0Zm9ybVNjcmVlblBsYXlTdGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9wbGF5c3RhdGlvbi9QbGF0Zm9ybVNjcmVlblBsYXlTdGF0aW9uLmNwcAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcGxheXN0YXRpb24v
UGxhdGZvcm1TY3JlZW5QbGF5U3RhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgog
CisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0
LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKIApAQCAtNzEsNCArNzIsOSBAQCBib29s
IHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcihXaWRnZXQqCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCitEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqKQorewor
ICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BsYXRmb3Jt
U2NyZWVuV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
UGxhdGZvcm1TY3JlZW5XaW4uY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGxhdGZvcm1TY3JlZW5XaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3Jl
ZW4uaCIKIAorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkZs
b2F0UmVjdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCkBA
IC0xMDQsMTIgKzEwNSwxMCBAQCBGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxlUmVjdChXaWRnZXQq
IHdpCiAgICAgcmV0dXJuIG1vbml0b3JJbmZvLnJjV29yazsKIH0KIAotI2lmIFVTRShDRykKLUNH
Q29sb3JTcGFjZVJlZiBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCopCitEZXN0aW5hdGlvbkNvbG9y
U3BhY2Ugc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqKQogewotICAgIHJldHVybiBzUkdCQ29sb3JT
cGFjZVJlZigpOworICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKIH0K
LSNlbmRpZgogCiBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcihXaWRnZXQqKQogewpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3BlL1BsYXRmb3JtU2NyZWVuV1BFLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93cGUvUGxhdGZvcm1TY3JlZW5X
UEUuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93cGUv
UGxhdGZvcm1TY3JlZW5XUEUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKIAorI2luY2x1
ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiV2lkZ2V0LmgiCkBAIC04MSw2ICs4
MiwxMSBAQCBGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxlUmVjdChXaWRnZXQqIHdpCiAgICAgcmV0
dXJuIHNjcmVlblJlY3Qod2lkZ2V0KTsKIH0KIAorRGVzdGluYXRpb25Db2xvclNwYWNlIHNjcmVl
bkNvbG9yU3BhY2UoV2lkZ2V0KikKK3sKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCk7Cit9CisKIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKFdpZGdldCop
CiB7CiAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIv
UGxhdGZvcm1YUi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1Bs
YXRmb3JtWFIuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
eHIvUGxhdGZvcm1YUi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw2ICsxOCw3IEBACiAgKi8KICNw
cmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVk
ZSAiRmxvYXRQb2ludDNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCiAjaW5jbHVk
ZSAiSW50UmVjdC5oIgpAQCAtMzIsOCArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+
CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yU3BhY2VDRy5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvSU9TdXJmYWNlLmg+CisjaW5jbHVkZSAiSU9TdXJmYWNlLmgi
CiAjaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KICNlbmRpZgogCkBAIC00NDYsNyArNDQ2
LDcgQEAgT3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YT4gRAogICAgIFdURjo6
TWFjaFNlbmRSaWdodCBzdXJmYWNlU2VuZFJpZ2h0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
c3VyZmFjZVNlbmRSaWdodCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgbGF5
ZXJEYXRhLnN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQo
V1RGTW92ZShzdXJmYWNlU2VuZFJpZ2h0KSwgV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSk7
CisgICAgbGF5ZXJEYXRhLnN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21T
ZW5kUmlnaHQoV1RGTW92ZShzdXJmYWNlU2VuZFJpZ2h0KSwgV2ViQ29yZTo6RGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCkpOwogI2VuZGlmCiAgICAgcmV0dXJuIGxheWVyRGF0YTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTExLDkgKzExMSw5IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IENTU0ZpbHRlcjo6YnVp
bGRSZWYKICAgICAgICAgZWZmZWN0RWxlbWVudC5zZXRTdGFuZGFyZEF0dHJpYnV0ZXMoZWZmZWN0
LmdldCgpKTsKICAgICAgICAgaWYgKGVmZmVjdEVsZW1lbnQucmVuZGVyZXIoKSkgewogI2lmIEVO
QUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICAgICAgICAgIGVm
ZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShlZmZlY3RFbGVtZW50LnJlbmRlcmVyKCktPnN0
eWxlKCkuc3ZnU3R5bGUoKS5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzKCkgPT0gQ29sb3JJbnRl
cnBvbGF0aW9uOjpMaW5lYXJSR0IgPyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0Ig
OiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOworICAgICAgICAgICAgZWZmZWN0LT5zZXRP
cGVyYXRpbmdDb2xvclNwYWNlKGVmZmVjdEVsZW1lbnQucmVuZGVyZXIoKS0+c3R5bGUoKS5zdmdT
dHlsZSgpLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSA9PSBDb2xvckludGVycG9sYXRpb246
OkxpbmVhclJHQiA/IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigpIDogRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogI2Vsc2UKLSAgICAgICAgICAgIGVmZmVjdC0+c2V0
T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOworICAgICAg
ICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpKTsKICNlbmRpZgogICAgICAgICB9CiAgICAgICAgIGJ1aWxkZXItPmFkZChlZmZl
Y3RFbGVtZW50LnJlc3VsdCgpLCBlZmZlY3QpOwpAQCAtMjk2LDcgKzI5Niw3IEBAIGJvb2wgQ1NT
RmlsdGVyOjpidWlsZChSZW5kZXJFbGVtZW50JiByZW4KICAgICAgICAgICAgIC8vIFVubGlrZSBT
VkcgRmlsdGVycyBhbmQgQ1NTRmlsdGVySW1hZ2VzLCBmaWx0ZXIgZnVuY3Rpb25zIG9uIHRoZSBm
aWx0ZXIKICAgICAgICAgICAgIC8vIHByb3BlcnR5IGFwcGxpZWQgaGVyZSBzaG91bGQgbm90IGNs
aXAgdG8gdGhlaXIgcHJpbWl0aXZlIHN1YnJlZ2lvbnMuCiAgICAgICAgICAgICBlZmZlY3QtPnNl
dENsaXBzVG9Cb3VuZHMoY29uc3VtZXIgPT0gRmlsdGVyQ29uc3VtZXI6OkZpbHRlckZ1bmN0aW9u
KTsKLSAgICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IpOworICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xv
clNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgaWYgKGZpbHRlck9wZXJhdGlvbi50eXBlKCkgIT0gRmlsdGVyT3BlcmF0aW9uOjpS
RUZFUkVOQ0UpIHsKICAgICAgICAgICAgICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpID0geyBX
VEZNb3ZlKHByZXZpb3VzRWZmZWN0KSB9OwpAQCAtMzQ0LDExICszNDQsMTEgQEAgdm9pZCBDU1NG
aWx0ZXI6OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZQogICAgIEludFNpemUgbG9naWNhbFNpemUg
eyBtX3NvdXJjZURyYXdpbmdSZWdpb24uc2l6ZSgpIH07CiAgICAgaWYgKCFzb3VyY2VJbWFnZSgp
IHx8IHNvdXJjZUltYWdlKCktPmxvZ2ljYWxTaXplKCkgIT0gbG9naWNhbFNpemUpIHsKICNpZiBV
U0UoRElSRUNUMkQpCi0gICAgICAgIHNldFNvdXJjZUltYWdlKEltYWdlQnVmZmVyOjpjcmVhdGUo
bG9naWNhbFNpemUsIHJlbmRlcmluZ01vZGUoKSwgJnRhcmdldENvbnRleHQsIGZpbHRlclNjYWxl
KCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7Cisg
ICAgICAgIHNldFNvdXJjZUltYWdlKEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIHJl
bmRlcmluZ01vZGUoKSwgJnRhcmdldENvbnRleHQsIGZpbHRlclNjYWxlKCksIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpKTsKICNlbHNlCiAgICAgICAg
IFVOVVNFRF9QQVJBTSh0YXJnZXRDb250ZXh0KTsKICAgICAgICAgUmVuZGVyaW5nTW9kZSBtb2Rl
ID0gbV9maWx0ZXJSZW5kZXJlciA/IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIDogcmVuZGVy
aW5nTW9kZSgpOwotICAgICAgICBzZXRTb3VyY2VJbWFnZShJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxv
Z2ljYWxTaXplLCBtb2RlLCBmaWx0ZXJTY2FsZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IsIFBpeGVsRm9ybWF0OjpCR1JBOCkpOworICAgICAgICBzZXRTb3VyY2VJbWFnZShJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBtb2RlLCBmaWx0ZXJTY2FsZSgpLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CiAjZW5kaWYKICAgICB9
CiAgICAgbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkID0gdHJ1ZTsKQEAgLTM4MiwxMiArMzgyLDEy
IEBAIHZvaWQgQ1NTRmlsdGVyOjphcHBseSgpCiAgICAgaWYgKG1fZmlsdGVyUmVuZGVyZXIpIHsK
ICAgICAgICAgbV9maWx0ZXJSZW5kZXJlci0+YXBwbHlFZmZlY3RzKGVmZmVjdCk7CiAgICAgICAg
IGlmIChtX2ZpbHRlclJlbmRlcmVyLT5oYXNSZXN1bHQoKSkgewotICAgICAgICAgICAgZWZmZWN0
LnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsK
KyAgICAgICAgICAgIGVmZmVjdC50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
IH0KICAgICBlZmZlY3QuYXBwbHkoKTsKLSAgICBlZmZlY3QudHJhbnNmb3JtUmVzdWx0Q29sb3JT
cGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOworICAgIGVmZmVjdC50cmFuc2Zvcm1S
ZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKIH0KIAogTGF5
b3V0UmVjdCBDU1NGaWx0ZXI6OmNvbXB1dGVTb3VyY2VJbWFnZVJlY3RGb3JEaXJ0eVJlY3QoY29u
c3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzYsNyArODc2LDcg
QEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZQogICAgICAgICBtYXNr
UmVjdC5pbnRlcnNlY3Qoc25hcHBlZEludFJlY3QocGFpbnRJbmZvLnJlY3QpKTsKIAogICAgICAg
ICAvLyBOb3cgY3JlYXRlIHRoZSBtYXNrLgotICAgICAgICBtYXNrSW1hZ2UgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihtYXNrUmVjdC5zaXplKCksIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQiwgY29udGV4dCk7CisgICAgICAgIG1hc2tJbWFnZSA9IEltYWdlQnVmZmVy
OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNpemUoKSwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCksIGNvbnRleHQpOwogICAgICAgICBpZiAoIW1hc2tJbWFnZSkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgcGFpbnRNYXNrRm9yVGV4dEZpbGxCb3gobWFza0ltYWdl
LmdldCgpLCBtYXNrUmVjdCwgYm94LCBzY3JvbGxlZFBhaW50UmVjdCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNjcsNyArMzI2Nyw3IEBAIHN0YXRpYyBSZWZQdHI8UGF0
dGVybj4gcGF0dGVybkZvckRlc2NyaXAKIHsKICAgICBjb25zdCBGbG9hdFNpemUgdGlsZVNpemUg
eyAzMiwgMTggfTsKIAotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcih0aWxlU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBk
ZXN0Q29udGV4dCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKHRpbGVTaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
ZGVzdENvbnRleHQpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1t
CShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5ODMsMTEgKzE5ODMsMTEgQEAgdm9pZCBSZW5k
ZXJUaGVtZUlPUzo6cGFpbnRTeXN0ZW1QcmV2aWV3QgogICAgIElPU3VyZmFjZVJlZiBzdXJmYWNl
OwogICAgIGlmICh1c2VTbWFsbEJhZGdlKSB7CiAgICAgICAgIGlmICghbV9zbWFsbEJhZGdlU3Vy
ZmFjZSkKLSAgICAgICAgICAgIG1fc21hbGxCYWRnZVN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0
ZSh7IHNtYWxsQmFkZ2VEaW1lbnNpb24sIHNtYWxsQmFkZ2VEaW1lbnNpb24gfSwgc1JHQkNvbG9y
U3BhY2VSZWYoKSk7CisgICAgICAgICAgICBtX3NtYWxsQmFkZ2VTdXJmYWNlID0gSU9TdXJmYWNl
OjpjcmVhdGUoeyBzbWFsbEJhZGdlRGltZW5zaW9uLCBzbWFsbEJhZGdlRGltZW5zaW9uIH0sIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICAgICAgc3VyZmFjZSA9IG1fc21hbGxC
YWRnZVN1cmZhY2UtPnN1cmZhY2UoKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoIW1fbGFy
Z2VCYWRnZVN1cmZhY2UpCi0gICAgICAgICAgICBtX2xhcmdlQmFkZ2VTdXJmYWNlID0gSU9TdXJm
YWNlOjpjcmVhdGUoeyBsYXJnZUJhZGdlRGltZW5zaW9uLCBsYXJnZUJhZGdlRGltZW5zaW9uIH0s
IHNSR0JDb2xvclNwYWNlUmVmKCkpOworICAgICAgICAgICAgbV9sYXJnZUJhZGdlU3VyZmFjZSA9
IElPU3VyZmFjZTo6Y3JlYXRlKHsgbGFyZ2VCYWRnZURpbWVuc2lvbiwgbGFyZ2VCYWRnZURpbWVu
c2lvbiB9LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAgIHN1cmZhY2Ug
PSBtX2xhcmdlQmFkZ2VTdXJmYWNlLT5zdXJmYWNlKCk7CiAgICAgfQogICAgIFttX2NpQ29udGV4
dC5nZXQoKSByZW5kZXI6dHJhbnNsYXRlZEltYWdlIHRvSU9TdXJmYWNlOnN1cmZhY2UgYm91bmRz
OmJhZGdlUmVjdCBjb2xvclNwYWNlOnNSR0JDb2xvclNwYWNlUmVmKCldOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzA5LDcgKzEzMDksNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFByb2dy
ZXNzQmFyKGNvCiAgICAgY29uc3QgYXV0byYgcmVuZGVyUHJvZ3Jlc3MgPSBkb3duY2FzdDxSZW5k
ZXJQcm9ncmVzcz4ocmVuZGVyT2JqZWN0KTsKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9
IHJlbmRlck9iamVjdC5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgYm9vbCBp
c0luZGV0ZXJtaW5hdGUgPSByZW5kZXJQcm9ncmVzcy5wb3NpdGlvbigpIDwgMDsKLSAgICBhdXRv
IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoaW5mbGF0
ZWRSZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiwgcGFpbnRJbmZvLmNvbnRleHQoKSk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGluZmxhdGVkUmVjdC5zaXplKCksIGRldmlj
ZVNjYWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgcGFpbnRJbmZvLmNv
bnRleHQoKSk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTgxLDcgKzE4MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4g
U2hhcGU6OmNyZWF0ZVJhc3QKICAgICBJbnRSZWN0IG1hcmdpblJlY3QgPSBzbmFwcGVkSW50UmVj
dChtYXJnaW5SKTsKICAgICBhdXRvIGludGVydmFscyA9IG1ha2VVbmlxdWU8UmFzdGVyU2hhcGVJ
bnRlcnZhbHM+KG1hcmdpblJlY3QuaGVpZ2h0KCksIC1tYXJnaW5SZWN0LnkoKSk7CiAgICAgLy8g
RklYTUUgKDE0OTQyMCk6IFRoaXMgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5
IHVuYWNjZWxlcmF0ZWQuCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVh
dGUoaW1hZ2VSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8g
aW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCksIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogCiAgICAgYXV0byBjcmVhdGVTaGFwZSA9IFsmXSgpIHsK
ICAgICAgICAgYXV0byByYXN0ZXJTaGFwZSA9IG1ha2VVbmlxdWU8UmFzdGVyU2hhcGU+KFdURk1v
dmUoaW50ZXJ2YWxzKSwgbWFyZ2luUmVjdC5zaXplKCkpOwpAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVJhc3QKICAgICBpZiAoaW1hZ2UpCiAg
ICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBJbnRSZWN0KEludFBvaW50
KCksIGltYWdlUmVjdC5zaXplKCkpKTsKIAotICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7
IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJH
QkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICBQaXhlbEJ1ZmZlckZvcm1h
dCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVs
Rm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsKICAgICBhdXRv
IHBpeGVsQnVmZmVyID0gaW1hZ2VCdWZmZXItPmdldFBpeGVsQnVmZmVyKGZvcm1hdCwgeyBJbnRQ
b2ludCgpLCBpbWFnZVJlY3Quc2l6ZSgpIH0pOwogICAgIAogICAgIC8vIFdlIGNvdWxkIGdldCB0
byBhIHZhbHVlIHdoZXJlIFBpeGVsQnVmZmVyIGNvdWxkIGJlIG51bGxvcHQuIEEgY2FzZSB3aGVy
ZSBJbWFnZVJlY3Quc2l6ZSgpIGlzIGh1Z2UsIFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlQ2xpcHBlci5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQ2LDcgKzE0Niw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseUNs
aXAKICAgICBBZmZpbmVUcmFuc2Zvcm0gYWJzb2x1dGVUcmFuc2Zvcm0gPSBTVkdSZW5kZXJpbmdD
b250ZXh0OjpjYWxjdWxhdGVUcmFuc2Zvcm1hdGlvblRvT3V0ZXJtb3N0Q29vcmRpbmF0ZVN5c3Rl
bShyZW5kZXJlcik7CiAgICAgaWYgKCFjbGlwcGVyRGF0YS5pc1ZhbGlkRm9yR2VvbWV0cnkob2Jq
ZWN0Qm91bmRpbmdCb3gsIGFic29sdXRlVHJhbnNmb3JtKSkgewogICAgICAgICAvLyBGSVhNRSAo
MTQ5NDY5KTogVGhpcyBpbWFnZSBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlvbmFsbHkg
dW5hY2NlbGVyYXRlZC4gTWFraW5nIGl0IG1hdGNoIHRoZSBjb250ZXh0IGJyZWFrcyBuZXN0ZWQg
Y2xpcHBpbmcsIHRob3VnaC4KLSAgICAgICAgYXV0byBtYXNrSW1hZ2UgPSBTVkdSZW5kZXJpbmdD
b250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihvYmplY3RCb3VuZGluZ0JveCwgYWJzb2x1dGVUcmFu
c2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgJmNvbnRleHQpOworICAgICAgICBhdXRvIG1hc2tJbWFnZSA9IFNWR1JlbmRlcmlu
Z0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKG9iamVjdEJvdW5kaW5nQm94LCBhYnNvbHV0ZVRy
YW5zZm9ybSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFJlbmRlcmluZ01vZGU6OlVu
YWNjZWxlcmF0ZWQsICZjb250ZXh0KTsKICAgICAgICAgaWYgKCFtYXNrSW1hZ2UpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCShyZXZpc2lvbiAyNzc5
MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmls
dGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDkgKzEwNCw5IEBAIHN0ZDo6dW5pcXVlX3B0
cjxTVkdGaWx0ZXJCdWlsZGVyPiBSZW5kZXIKICAgICAgICAgZWZmZWN0LT5zZXRFZmZlY3RCb3Vu
ZGFyaWVzKFNWR0xlbmd0aENvbnRleHQ6OnJlc29sdmVSZWN0YW5nbGU8U1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPigmZWxlbWVudCwgZmlsdGVyRWxlbWVudCgpLnByaW1pdGl2
ZVVuaXRzKCksIHRhcmdldEJvdW5kaW5nQm94KSk7CiAgICAgICAgIGlmIChlbGVtZW50LnJlbmRl
cmVyKCkpIHsKICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0Ip
Ci0gICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoZWxlbWVudC5yZW5k
ZXJlcigpLT5zdHlsZSgpLnN2Z1N0eWxlKCkuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpID09
IENvbG9ySW50ZXJwb2xhdGlvbjo6TGluZWFyUkdCID8gRGVzdGluYXRpb25Db2xvclNwYWNlOjpM
aW5lYXJTUkdCIDogRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKKyAgICAgICAgICAgIGVm
ZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShlbGVtZW50LnJlbmRlcmVyKCktPnN0eWxlKCku
c3ZnU3R5bGUoKS5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzKCkgPT0gQ29sb3JJbnRlcnBvbGF0
aW9uOjpMaW5lYXJSR0IgPyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKSA6IERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICNlbHNlCi0gICAgICAgICAgICBlZmZlY3Qt
PnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKKyAg
ICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSk7CiAjZW5kaWYKICAgICAgICAgfQogICAgICAgICBidWlsZGVyLT5hZGQo
ZWxlbWVudC5yZXN1bHQoKSwgV1RGTW92ZShlZmZlY3QpKTsKQEAgLTE5OCw5ICsxOTgsOSBAQCBi
b29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291CiAKICAgICBhdXRvIHJlbmRl
cmluZ01vZGUgPSByZW5kZXJlci5zZXR0aW5ncygpLmFjY2VsZXJhdGVkRmlsdGVyc0VuYWJsZWQo
KSA/IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIDogUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVy
YXRlZDsKICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0g
ICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCOwor
ICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigp
OwogI2Vsc2UKLSAgICBhdXRvIGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0I7CisgICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7
CiAjZW5kaWYKICAgICBhdXRvIHNvdXJjZUdyYXBoaWMgPSBTVkdSZW5kZXJpbmdDb250ZXh0Ojpj
cmVhdGVJbWFnZUJ1ZmZlcihmaWx0ZXJEYXRhLT5kcmF3aW5nUmVnaW9uLCBlZmZlY3RpdmVUcmFu
c2Zvcm0sIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUsIGNvbnRleHQpOwogICAgIGlmICghc291
cmNlR3JhcGhpYykgewpAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXI6OnBvc3RBcHBseVIKICAgICAgICAgICAgIGZpbHRlckRhdGEuc3RhdGUgPSBGaWx0ZXJE
YXRhOjpBcHBseWluZzsKICAgICAgICAgICAgIGxhc3RFZmZlY3QtPmFwcGx5KCk7CiAgICAgICAg
ICAgICBsYXN0RWZmZWN0LT5jb3JyZWN0RmlsdGVyUmVzdWx0SWZOZWVkZWQoKTsKLSAgICAgICAg
ICAgIGxhc3RFZmZlY3QtPnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKTsKKyAgICAgICAgICAgIGxhc3RFZmZlY3QtPnRyYW5zZm9ybVJlc3VsdENv
bG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgICAgICB9CiAgICAg
ICAgIGZpbHRlckRhdGEuc3RhdGUgPSBGaWx0ZXJEYXRhOjpCdWlsdDsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
R3JhZGllbnQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
MCw3ICs2MCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjcmVhdGVNYXNrQW5kU3dhcENvbnQKICAg
ICBBZmZpbmVUcmFuc2Zvcm0gYWJzb2x1dGVUcmFuc2Zvcm0gPSBTVkdSZW5kZXJpbmdDb250ZXh0
OjpjYWxjdWxhdGVUcmFuc2Zvcm1hdGlvblRvT3V0ZXJtb3N0Q29vcmRpbmF0ZVN5c3RlbSgqdGV4
dFJvb3RCbG9jayk7CiAgICAgRmxvYXRSZWN0IHJlcGFpbnRSZWN0ID0gdGV4dFJvb3RCbG9jay0+
cmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKTsKIAotICAgIGF1dG8gbWFza0ltYWdlID0g
U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIocmVwYWludFJlY3QsIGFic29s
dXRlVHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGNvbnRleHQtPnJlbmRl
cmluZ01vZGUoKSk7CisgICAgYXV0byBtYXNrSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0Ojpj
cmVhdGVJbWFnZUJ1ZmZlcihyZXBhaW50UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0sIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBjb250ZXh0LT5yZW5kZXJpbmdNb2RlKCkpOwogICAgIGlm
ICghbWFza0ltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIu
Y3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsOSArNzEsOSBA
QCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBseVJlc291CiAgICAgICAgIGNvbnN0
IFNWR1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IHN0eWxlKCkuc3ZnU3R5bGUoKTsKIAogI2lmIEVO
QUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICAgICAgYXV0byBj
b2xvclNwYWNlID0gc3ZnU3R5bGUuY29sb3JJbnRlcnBvbGF0aW9uKCkgPT0gQ29sb3JJbnRlcnBv
bGF0aW9uOjpMaW5lYXJSR0IgPyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IgOiBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I7CisgICAgICAgIGF1dG8gY29sb3JTcGFjZSA9IHN2
Z1N0eWxlLmNvbG9ySW50ZXJwb2xhdGlvbigpID09IENvbG9ySW50ZXJwb2xhdGlvbjo6TGluZWFy
UkdCID8gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCkgOiBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKTsKICNlbHNlCi0gICAgICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQjsKKyAgICAgICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiAjZW5kaWYKIAogICAgICAgICAvLyBGSVhNRSAoMTQ5
NDcwKTogVGhpcyBpbWFnZSBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlvbmFsbHkgdW5h
Y2NlbGVyYXRlZC4gTWFraW5nIGl0IG1hdGNoIHRoZSBjb250ZXh0IGJyZWFrcyBhbHBoYSBtYXNr
aW5nLCB0aG91Z2guCkBAIC05Miw3ICs5Miw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNr
ZXI6OmFwcGx5UmVzb3UKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBSZW5kZXJTVkdSZXNv
dXJjZU1hc2tlcjo6ZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdlKE1hc2tlckRhdGEqIG1hc2tlckRh
dGEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW5kZXJPYmplY3QqIG9iamVj
dCkKK2Jvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250ZW50SW50b01hc2tJbWFn
ZShNYXNrZXJEYXRhKiBtYXNrZXJEYXRhLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNv
bG9yU3BhY2UsIFJlbmRlck9iamVjdCogb2JqZWN0KQogewogICAgIEdyYXBoaWNzQ29udGV4dCYg
bWFza0ltYWdlQ29udGV4dCA9IG1hc2tlckRhdGEtPm1hc2tJbWFnZS0+Y29udGV4dCgpOwogCkBA
IC0xMTksNyArMTE5LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6ZHJhd0NvbnRl
bgogICAgIH0KIAogI2lmICFVU0UoQ0cpCi0gICAgbWFza2VyRGF0YS0+bWFza0ltYWdlLT50cmFu
c2Zvcm1Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgY29sb3JTcGFjZSk7
CisgICAgbWFza2VyRGF0YS0+bWFza0ltYWdlLT50cmFuc2Zvcm1Db2xvclNwYWNlKERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBjb2xvclNwYWNlKTsKICNlbHNlCiAgICAgVU5VU0VEX1BB
UkFNKGNvbG9yU3BhY2UpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCShyZXZpc2lvbiAyNzc5
MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFz
a2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToKIAogICAgIGNv
bnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXIiOyB9CiAKLSAgICBib29sIGRyYXdDb250ZW50SW50b01hc2tJbWFnZShN
YXNrZXJEYXRhKiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBSZW5kZXJPYmplY3QqKTsKKyAgICBi
b29sIGRyYXdDb250ZW50SW50b01hc2tJbWFnZShNYXNrZXJEYXRhKiwgY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiwgUmVuZGVyT2JqZWN0Kik7CiAgICAgdm9pZCBjYWxjdWxhdGVNYXNrQ29u
dGVudFJlcGFpbnRSZWN0KCk7CiAKICAgICBGbG9hdFJlY3QgbV9tYXNrQ29udGVudEJvdW5kYXJp
ZXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
UGF0dGVybi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI1Myw3ICsyNTMsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlUGF0dGVy
bjo6YnVpbGRUaWxlCiBSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbmRlclNWR1Jlc291cmNlUGF0dGVy
bjo6Y3JlYXRlVGlsZUltYWdlKGNvbnN0IFBhdHRlcm5BdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBj
b25zdCBGbG9hdFJlY3QmIHRpbGVCb3VuZGFyaWVzLCBjb25zdCBGbG9hdFJlY3QmIGFic29sdXRl
VGlsZUJvdW5kYXJpZXMsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdGlsZUltYWdlVHJhbnNmb3Jt
LCBGbG9hdFJlY3QmIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBSZW5kZXJpbmdNb2Rl
IHJlbmRlcmluZ01vZGUpIGNvbnN0CiB7CiAgICAgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJp
ZXMgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFJlY3QoYWJzb2x1dGVUaWxlQm91bmRhcmllcyk7Ci0g
ICAgYXV0byB0aWxlSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZl
cihhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcywg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCByZW5kZXJpbmdNb2RlKTsKKyAgICBhdXRvIHRp
bGVJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGFic29sdXRl
VGlsZUJvdW5kYXJpZXMsIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgcmVuZGVyaW5nTW9kZSk7CiAgICAgaWYgKCF0aWxlSW1hZ2Up
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNiw3ICsyMzYsNyBAQCBBZmZpbmVUcmFuc2Zvcm0gU1ZH
UmVuZGVyaW5nQ29udGV4dDo6Y2FsCiAgICAgcmV0dXJuIGFic29sdXRlVHJhbnNmb3JtOwogfQog
Ci1SZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBh
YnNvbHV0ZVRyYW5zZm9ybSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbmRl
cmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQor
UmVmUHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZl
cihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJz
b2x1dGVUcmFuc2Zvcm0sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwg
UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQpCiB7CiAgICAgSW50UmVjdCBwYWludFJlY3QgPSBjYWxjdWxhdGVJbWFnZUJ1ZmZlclJlY3Qo
dGFyZ2V0UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0pOwogICAgIC8vIERvbid0IGNyZWF0ZSBlbXB0
eSBJbWFnZUJ1ZmZlcnMuCkBAIC0yNjQsNyArMjY0LDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBT
VkdSZW5kZXJpbmdDb250ZXh0OgogICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0KIAotUmVmUHRy
PEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25z
dCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZFJlY3QsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01v
ZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4g
U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRSZWN0LCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29u
c3QgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogewogICAgIEludFNpemUgY2xhbXBlZFNpemUg
PSByb3VuZGVkSW50U2l6ZShjbGFtcGVkUmVjdC5zaXplKCkpOwogICAgIEZsb2F0U2l6ZSB1bmNs
YW1wZWRTaXplID0gcm91bmRlZEludFNpemUodGFyZ2V0UmVjdC5zaXplKCkpOwpAQCAtMzUwLDcg
KzM1MCw3IEBAIGJvb2wgU1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRm9yZWdyb3UKIAogICAg
IC8vIENyZWF0ZSBhIG5ldyBidWZmZXIgYW5kIHBhaW50IHRoZSBmb3JlZ3JvdW5kIGludG8gaXQu
CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikgewotICAgICAgICBpbWFnZUJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShib3VuZGluZ0JveC5z
aXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIG1fcGFpbnRJbmZvLT5jb250ZXh0
KCkpOworICAgICAgICBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxl
QnVmZmVyKGV4cGFuZGVkSW50U2l6ZShib3VuZGluZ0JveC5zaXplKCkpLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSwgbV9wYWludEluZm8tPmNvbnRleHQoKSk7CiAgICAgICAgIGlmICgh
aW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmgJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyaW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw4ICs2MCw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQoUmVuZGVyRWxlbWVudCYsIFBhaW50
SW5mbyYsIE5lZWRzR3JhcGhpY3NDb250ZXh0U2F2ZSA9IERvbnRTYXZlR3JhcGhpY3NDb250ZXh0
KTsKICAgICBib29sIGlzUmVuZGVyaW5nUHJlcGFyZWQoKSBjb25zdCB7IHJldHVybiBtX3JlbmRl
cmluZ0ZsYWdzICYgUmVuZGVyaW5nUHJlcGFyZWQ7IH0KIAotICAgIHN0YXRpYyBSZWZQdHI8SW1h
Z2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgRGVzdGluYXRpb25Db2xv
clNwYWNlLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cik7
Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3Qg
RmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRSZWN0LCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCog
PSBudWxscHRyKTsKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
YWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFJlbmRlcmlu
Z01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKTsKKyAgICBzdGF0aWMgUmVm
UHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdl
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZFJlY3QsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRy
KTsKIAogICAgIHN0YXRpYyB2b2lkIHJlbmRlclN1YnRyZWVUb0NvbnRleHQoR3JhcGhpY3NDb250
ZXh0JiwgUmVuZGVyRWxlbWVudCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwogICAgIHN0YXRp
YyB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwg
UmVmUHRyPEltYWdlQnVmZmVyPiYsIGJvb2wgc2FmZVRvQ2xlYXIpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MTcsNyArMjE3LDcgQEAgUmVmUHRyPE5hdGl2ZUltYWdlPiBTVkdJbWFnZTo6bmF0aXZlSW1hZwog
ICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gaW1h
Z2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5h
Y2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6
QkdSQTgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUo
KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIFNWR0ltYWdl
OjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHCiAgICAgRmxvYXRSZWN0IGltYWdlQnVmZmVyU2l6
ZSA9IHpvb21lZENvbnRhaW5lclJlY3Q7CiAgICAgaW1hZ2VCdWZmZXJTaXplLnNjYWxlKGltYWdl
QnVmZmVyU2NhbGUud2lkdGgoKSwgaW1hZ2VCdWZmZXJTY2FsZS5oZWlnaHQoKSk7CiAKLSAgICBh
dXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVk
SW50U2l6ZShpbWFnZUJ1ZmZlclNpemUuc2l6ZSgpKSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCLCBjb250ZXh0KTsKKyAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShpbWFnZUJ1ZmZlclNpemUuc2l6ZSgpKSwg
MSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNvbnRleHQpOwogICAgIGlmICghYnVm
ZmVyKSAvLyBGYWlsZWQgdG8gYWxsb2NhdGUgYnVmZmVyLgogICAgICAgICByZXR1cm47CiAgICAg
ZHJhd0ZvckNvbnRhaW5lcihidWZmZXItPmNvbnRleHQoKSwgY29udGFpbmVyU2l6ZSwgY29udGFp
bmVyWm9vbSwgaW5pdGlhbEZyYWdtZW50VVJMLCBpbWFnZUJ1ZmZlclNpemUsIHpvb21lZENvbnRh
aW5lclJlY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVJbWFnZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
Myw4ICs5Myw4IEBAIHZvaWQgRkVJbWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBp
ZiAoIW1faW1hZ2UgJiYgIXJlbmRlcmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBGRUlt
YWdlIHJlc3VsdHMgYXJlIGFsd2F5cyBpbiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IKLSAg
ICBzZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CisgICAg
Ly8gRkVJbWFnZSByZXN1bHRzIGFyZSBhbHdheXMgaW4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCkKKyAgICBzZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpKTsKIAogICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0ZUltYWdlQnVmZmVy
UmVzdWx0KCk7CiAgICAgaWYgKCFyZXN1bHRJbWFnZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
Nzc5MjApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDg5IEBACisyMDIxLTA1LTIyICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBDb252ZXJ0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBmcm9tIGFuIGVudW0gdG8gY2xh
c3Mgd3JhcHBpbmcgYSBwbGF0Zm9ybSBjb2xvciBzcGFjZSAoQ0dDb2xvclNwYWNlUmVmIGZvciBD
RyBwb3J0cywgZXRjLikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNjE0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtXSVBdCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdl
QnVmZmVyLmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyOjpjcmVhdGUpOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVm
ZmVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRlByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjphcHBseUJhY2tpbmdTdG9yZVRv
TGF5ZXIpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwOgorICAgICAgICAo
V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb246OmVuY29kZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbjo6ZGVjb2RlKToK
KyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmg6CisgICAgICAgICogU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
czo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5o
OgorICAgICAgICAqIFNoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OmNvbG9yU3BhY2UpOgorICAgICAgICAqIFNoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWQvbWFjL0NvbG9yU3BhY2VEYXRhLm1tOiBSZW1v
dmVkLgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9pb3MvV0tXZWJWaWV3SU9TLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Rha2VWaWV3U25h
cHNob3RdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zbmFwc2hvdFJlY3Q6aW50b0ltYWdlT2ZX
aWR0aDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjb2xvclNwYWNlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlSG9zdC5tbToKKyAgICAgICAgKFdlYktpdDo6cmVjdXJzaXZlbHlNYXBJ
T1N1cmZhY2VCYWNraW5nU3RvcmUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OmNvbG9yU3BhY2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpj
b2xvclNwYWNlKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQ6OmNvbmZpZ3VyYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwcmVwYXJlRm9yRGlzcGxheSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRl
SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2Vu
ZDo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkYuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZURlY29kZXJBVkY6OmNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9j
b2NvYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAg
ICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwaXhlbEJ1ZmZlckZvckN1
cnJlbnRUaW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5t
bToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpQREZQbHVnaW4pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6Y3JlYXRlU2hhcmVhYmxlQml0bWFwKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkNocm9tZUNsaWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAg
KFdlYktpdDo6Y29udmVydERyYWdJbWFnZVRvQml0bWFwKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWE6OnNl
dENvbG9yU3BhY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OnNuYXBzaG90T3B0aW9uc1RvQml0bWFwQ29uZmlndXJhdGlvbik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhOjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSk6CisgICAgICAgIChXZWJL
aXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRDb2xvclNwYWNlKToKKwogMjAy
MS0wNS0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxh
Y2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2NhbCB2YXJpYWJsZXMKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjAzLDcgKzIwMyw2IEBAIFNoYXJlZC9pb3Mv
V2ViVG91Y2hFdmVudElPUy5jcHAKIAogU2hhcmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1t
CiBTaGFyZWQvbWFjL0NvZGVTaWduaW5nLm1tCi1TaGFyZWQvbWFjL0NvbG9yU3BhY2VEYXRhLm1t
CiBTaGFyZWQvbWFjL0hhbmdEZXRlY3Rpb25EaXNhYmxlck1hYy5tbQogU2hhcmVkL21hYy9OYXRp
dmVXZWJHZXN0dXJlRXZlbnRNYWMubW0KIFNoYXJlZC9tYWMvTmF0aXZlV2ViS2V5Ym9hcmRFdmVu
dE1hYy5tbQpJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUltYWdlQnVmZmVyLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFJlbW90ZUltYWdlQnVmZmVyIDogcHVibGljIFdlYkNv
cmUKICAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6cHV0UGl4ZWxCdWZmZXI7CiAK
IHB1YmxpYzoKLSAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JT
cGFjZSBjb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCwgV2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICBz
dGF0aWMgYXV0byBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29s
b3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgewogICAgICAg
ICByZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnRlbXBsYXRlIGNyZWF0ZTxSZW1vdGVJ
bWFnZUJ1ZmZlcj4oc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1h
dCwgbnVsbHB0ciwgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCwgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCShyZXZpc2lvbiAy
Nzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZEZsdXNoKERpCiAgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpEaWRGbHVzaChmbHVzaElkZW50aWZpZXIsIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwog
fQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0
IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4
ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0
ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGUg
cmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VSVChyZW5kZXJpbmdNb2RlID09IFJl
bmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIHx8IHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCk7CkBAIC00OTUsNiArNDk1LDggQEAgT3B0aW9uYWw8RGlzcGxheUxp
c3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVQogICAgICAqIFNlZSB0aGUgY29tbWVudCBhdCB0aGUgdG9w
IG9mIERpc3BsYXlMaXN0SXRlbXMuaCBmb3Igd2h5LiAqLwogCiAgICAgc3dpdGNoICh0eXBlKSB7
CisgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzOgorICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpCZWdpbkNs
aXBUb0RyYXdpbmdDb21tYW5kcz4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7CiAgICAg
Y2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6CiAgICAgICAgIHJldHVy
biBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkNsaXBPdXRUb1BhdGg+KGRhdGEsIGxlbmd0
aCwgaGFuZGxlTG9jYXRpb24pOwogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlw
UGF0aDoKQEAgLTUyMSw2ICs1MjMsOCBAQCBPcHRpb25hbDxEaXNwbGF5TGlzdDo6SXRlbUhhbmRs
ZT4gV0FSTl9VCiAgICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkZp
bGxSZWN0V2l0aFJvdW5kZWRIb2xlPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKICAg
ICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RmlsbFJvdW5kZWRSZWN0OgogICAgICAgICBy
ZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsUm91bmRlZFJlY3Q+KGRhdGEs
IGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOworICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpHZXRQaXhlbEJ1ZmZlcjoKKyAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5
TGlzdDo6R2V0UGl4ZWxCdWZmZXI+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwogICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQdXRQaXhlbEJ1ZmZlcjoKICAgICAgICAgcmV0
dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6UHV0UGl4ZWxCdWZmZXI+KGRhdGEsIGxl
bmd0aCwgaGFuZGxlTG9jYXRpb24pOwogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpT
ZXRMaW5lRGFzaDoKQEAgLTU0MCw3ICs1NDQsNiBAQCBPcHRpb25hbDxEaXNwbGF5TGlzdDo6SXRl
bUhhbmRsZT4gV0FSTl9VCiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXA6CiAg
ICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBPdXQ6CiAgICAgY2FzZSBEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKICAgICBjYXNlIERpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgogICAgIGNhc2UgRGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjoKQEAgLTU4MSw3ICs1ODQsNiBAQCBP
cHRpb25hbDxEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VCiAgICAgY2FzZSBEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OlN0cm9rZVJlY3Q6CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OlN0cm9rZUxpbmU6CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlRyYW5zbGF0
ZToKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6R2V0UGl4ZWxCdWZmZXI6CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAko
d29ya2luZyBjb3B5KQpAQCAtNDQsMTQgKzQ0LDE4IEBACiAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
eworCiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogY2xhc3MgRGlzcGxheUxpc3Q7CiBjbGFzcyBJ
dGVtOwogfQorCitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7CiBjbGFzcyBGbG9hdFNpemU7
CiBjbGFzcyBOYXRpdmVJbWFnZTsKLWVudW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDog
dWludDhfdDsKKwogZW51bSBjbGFzcyBSZW5kZXJpbmdNb2RlIDogYm9vbDsKKwogfQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTEyMSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1
ZVJlZjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSBy
ZWNlaXZlZC4KLSAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZv
cm1hdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNy
ZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFdl
YkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgV2ViQ29y
ZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQsIFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCB3YWtlVXBBbmRBcHBseURp
c3BsYXlMaXN0KGNvbnN0IEdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzJik7CiAgICAg
dm9pZCB1cGRhdGVTaGFyZWRNZW1vcnlGb3JHZXRQaXhlbEJ1ZmZlcih1aW50MzJfdCBieXRlQ291
bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUm
KT4mJik7CiAgICAgdm9pZCBzZW1hcGhvcmVGb3JHZXRQaXhlbEJ1ZmZlcihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IElQQzo6U2VtYXBob3JlJik+JiYpOwpJbmRleDogU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGUHJveHkuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTMsMjggKzExMywyOCBAQCB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpzZXRE
YXRhCiAgICAgY29tcGxldGlvbkhhbmRsZXIoZnJhbWVDb3VudCwgaW1hZ2VEZWNvZGVyLT5zaXpl
KCksIGltYWdlRGVjb2Rlci0+aGFzVHJhY2soKSwgV1RGTW92ZShmcmFtZUluZm9zKSk7CiB9CiAK
LXZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KEltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgc2l6ZV90IGluZGV4LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdURjo6TWFjaFNlbmRSaWdodD4mJiwgQ29sb3JTcGFj
ZURhdGEmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFW
RlByb3h5OjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChJbWFnZURlY29kZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIHNpemVfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxX
VEY6Ok1hY2hTZW5kUmlnaHQ+JiYsIE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JT
cGFjZT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1faW1hZ2VEZWNv
ZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7CiAgICAgT3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJp
Z2h0PiBzZW5kUmlnaHQ7Ci0gICAgQ29sb3JTcGFjZURhdGEgY29sb3JTcGFjZURhdGE7CisgICAg
T3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlOwogICAg
IGlmICghbV9pbWFnZURlY29kZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKSB7Ci0gICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc2VuZFJpZ2h0KSwgV1RGTW92ZShjb2xvclNwYWNlRGF0
YSkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHNlbmRSaWdodCksIFdURk1v
dmUoY29sb3JTcGFjZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgYXV0byBmcmFt
ZUltYWdlID0gbV9pbWFnZURlY29kZXJzLmdldChpZGVudGlmaWVyKS0+Y3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoaW5kZXgpOwogICAgIGlmICghZnJhbWVJbWFnZSkgewotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKHNlbmRSaWdodCksIFdURk1vdmUoY29sb3JTcGFjZURhdGEpKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShzZW5kUmlnaHQpLCBXVEZNb3ZlKGNv
bG9yU3BhY2UpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChhdXRvIHN1cmZh
Y2UgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21JbWFnZShmcmFtZUltYWdlLmdldCgpKSkgewogICAg
ICAgICBzZW5kUmlnaHQgPSBzdXJmYWNlLT5jcmVhdGVTZW5kUmlnaHQoKTsKLSAgICAgICAgY29s
b3JTcGFjZURhdGEuY2dDb2xvclNwYWNlID0gc3VyZmFjZS0+Y29sb3JTcGFjZSgpOworICAgICAg
ICBjb2xvclNwYWNlID0gc3VyZmFjZS0+Y29sb3JTcGFjZSgpOwogICAgIH0KIAotICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUoc2VuZFJpZ2h0KSwgV1RGTW92ZShjb2xvclNwYWNlRGF0YSkp
OworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc2VuZFJpZ2h0KSwgV1RGTW92ZShjb2xv
clNwYWNlKSk7CiB9CiAKIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmNsZWFyRnJh
bWVCdWZmZXJDYWNoZShJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBp
bmRleCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkZQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHku
aAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNiBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBIQVZFKEFWQVNTRVRSRUFERVIpCiAKLSNpbmNsdWRlICJDb2xvclNwYWNlRGF0YS5o
IgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlRGVjb2RlckFWRk9iakMuaD4KQEAgLTU3LDcgKzU2
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlbGV0ZURlY29kZXIoV2ViQ29yZTo6SW1hZ2VEZWNv
ZGVySWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXRFeHBlY3RlZENvbnRlbnRTaXplKFdlYkNvcmU6
OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRTaXplKTsK
ICAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoc2l6ZV90IGZyYW1lQ291bnQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUs
IGJvb2wgaGFzVHJhY2ssIE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpJbWFnZURlY29kZXI6OkZy
YW1lSW5mbz4+JiYpPiYmKTsKLSAgICB2b2lkIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KFdlYkNv
cmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIHNpemVfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChPcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYsIENvbG9yU3BhY2VEYXRhJiYp
PiYmKTsKKyAgICB2b2lkIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KFdlYkNvcmU6OkltYWdlRGVj
b2RlcklkZW50aWZpZXIsIHNpemVfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYsIE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9u
Q29sb3JTcGFjZT4mJik+JiYpOwogICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKFdlYkNv
cmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIHNpemVfdCBpbmRleCk7CiAKICAgICB2b2lkIGVu
Y29kZWREYXRhU3RhdHVzQ2hhbmdlZChXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJB
VkZQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9u
IDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkZQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBA
QCBtZXNzYWdlcyAtPiBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eSBOCiAgICAgRGVsZXRlRGVj
b2RlcihXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgU2V0
RXhwZWN0ZWRDb250ZW50U2l6ZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRTaXplKQogICAgIFNldERhdGEoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIC0+IChzaXplX3QgZnJhbWVD
b3VudCwgV2ViQ29yZTo6SW50U2l6ZSBzaXplLCBib29sIGhhc1RyYWNrLCBPcHRpb25hbDxWZWN0
b3I8V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+PiBmcmFtZUluZm9zKSBTeW5jaHJv
bm91cwotICAgIENyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KFdlYkNvcmU6OkltYWdlRGVjb2Rlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgc2l6ZV90IGluZGV4KSAtPiAoT3B0aW9uYWw8TWFjaFNlbmRS
aWdodD4gc2VuZFJpZ2h0LCBzdHJ1Y3QgV2ViS2l0OjpDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNl
KSBTeW5jaHJvbm91cworICAgIENyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KFdlYkNvcmU6OkltYWdl
RGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgc2l6ZV90IGluZGV4KSAtPiAoT3B0aW9uYWw8
TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0LCBPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNv
bG9yU3BhY2U+IGNvbG9yU3BhY2UpIFN5bmNocm9ub3VzCiAgICAgQ2xlYXJGcmFtZUJ1ZmZlckNh
Y2hlKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgc2l6ZV90IGlu
ZGV4KQogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1h
cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDEwICs3NCw3IEBAIHZvaWQgU2hhcmVhYmxlQml0
bWFwOjpIYW5kbGU6OmNsZWFyKCkKIAogdm9pZCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRp
b246OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8
PCBpc09wYXF1ZTsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBlbmNvZGVyIDw8IGNvbG9yU3Bh
Y2U7Ci0jZW5kaWYKKyAgICBlbmNvZGVyIDw8IGNvbG9yU3BhY2UgPDwgaXNPcGFxdWU7CiAjaWYg
VVNFKERJUkVDVDJEKQogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlOjplbmNvZGVIYW5kbGUoZW5j
b2Rlciwgc2hhcmVkUmVzb3VyY2VIYW5kbGUpOwogCkBAIC04OCwyMSArODUsMjggQEAgdm9pZCBT
aGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb246OmVuYwogI2VuZGlmCiB9CiAKLWJvb2wgU2hh
cmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
LCBDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQorYm9vbCBTaGFyZWFibGVCaXRtYXA6OkNv
bmZpZ3VyYXRpb246OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbmZpZ3VyYXRpb24m
IHJlc3VsdCkKIHsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbmZpZ3VyYXRpb24uaXNPcGFx
dWUpKQorICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFj
ZT4+IGNvbG9yU3BhY2U7CisgICAgZGVjb2RlciA+PiBjb2xvclNwYWNlOworICAgIGlmICghY29s
b3JTcGFjZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoY29uZmlndXJhdGlvbi5jb2xvclNwYWNlKSkKKworICAgIE9w
dGlvbmFsPGJvb2w+IGlzT3BhcXVlOworICAgIGRlY29kZXIgPj4gaXNPcGFxdWU7CisgICAgaWYg
KCFpc09wYXF1ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCisKKyAgICByZXN1bHQg
PSBDb25maWd1cmF0aW9uIHsgV1RGTW92ZSgqY29sb3JTcGFjZSksICppc09wYXF1ZSB9OworCiAj
aWYgVVNFKERJUkVDVDJEKQogICAgIGF1dG8gcHJvY2Vzc1NwZWNpZmljSGFuZGxlID0gU2hhcmVk
TWVtb3J5OjpIYW5kbGU6OmRlY29kZUhhbmRsZShkZWNvZGVyKTsKICAgICBpZiAoIXByb2Nlc3NT
cGVjaWZpY0hhbmRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgY29uZmlndXJhdGlv
bi5zaGFyZWRSZXNvdXJjZUhhbmRsZSA9IHByb2Nlc3NTcGVjaWZpY0hhbmRsZS52YWx1ZSgpOwor
ICAgIHJlc3VsdC5zaGFyZWRSZXNvdXJjZUhhbmRsZSA9IHByb2Nlc3NTcGVjaWZpY0hhbmRsZS52
YWx1ZSgpOwogI2VuZGlmCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291cmNlL1dl
YktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxNSAr
MjYsMTIgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtSW1hZ2UuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAK
LSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSAiQ29sb3JTcGFjZURhdGEuaCIKLSNlbmRpZgotCiAjaWYg
VVNFKERJUkVDVDJEKQogaW50ZXJmYWNlIElEMkQxQml0bWFwOwogaW50ZXJmYWNlIElEMkQxUmVu
ZGVyVGFyZ2V0OwpAQCAtNTUsMTAgKzUyLDggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBT
aGFyZWFibGVCaXRtYXAgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVhYmxlQml0
bWFwPiB7CiBwdWJsaWM6CiAgICAgc3RydWN0IENvbmZpZ3VyYXRpb24geworICAgICAgICBPcHRp
b25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CiAgICAgICAg
IGJvb2wgaXNPcGFxdWUgeyBmYWxzZSB9OwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBD
b2xvclNwYWNlRGF0YSBjb2xvclNwYWNlOwotI2VuZGlmCiAjaWYgVVNFKERJUkVDVDJEKQogICAg
ICAgICBtdXRhYmxlIEhBTkRMRSBzaGFyZWRSZXNvdXJjZUhhbmRsZSB7IG51bGxwdHIgfTsKICNl
bmRpZgpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw2ICs4Miw4IEBACiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKKwogbmFt
ZXNwYWNlIFdURiB7CiBjbGFzcyBNYWNoU2VuZFJpZ2h0OwogfQpJbmRleDogU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9u
IDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsOCArMzI1LDExIEBAIE9wdGlvbmFsPFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlAKICAgICBwYXJhbWV0ZXJzLmhhc1Jlc291cmNlTG9h
ZENsaWVudCA9IFdURk1vdmUoKmhhc1Jlc291cmNlTG9hZENsaWVudCk7CiAKICNpZiBQTEFURk9S
TShNQUMpCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpKQor
ICAgIE9wdGlvbmFsPE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4+IGNvbG9yU3BhY2U7
CisgICAgZGVjb2RlciA+PiBjb2xvclNwYWNlOworICAgIGlmICghY29sb3JTcGFjZSkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBwYXJhbWV0ZXJzLmNvbG9yU3BhY2UgPSBXVEZN
b3ZlKCpjb2xvclNwYWNlKTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXNl
U3lzdGVtQXBwZWFyYW5jZSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2lu
Y2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2aXR5
U3RhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9E
ZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0U2l6ZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTGF5b3V0TWls
ZXN0b25lLmg+CkBAIC00OSwxMCArNTAsNiBAQAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBQTEFURk9STShNQUMpCi0jaW5j
bHVkZSAiQ29sb3JTcGFjZURhdGEuaCIKLSNlbmRpZgotCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9O
X01BTklGRVNUKQogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25NYW5pZmVzdC5oPgogI2Vu
ZGlmCkBAIC0xNDYsNyArMTQzLDcgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMg
ewogICAgIGJvb2wgdXNlRWxldmF0ZWRVc2VySW50ZXJmYWNlTGV2ZWwgeyBmYWxzZSB9OwogCiAj
aWYgUExBVEZPUk0oTUFDKQotICAgIENvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2U7CisgICAgT3B0
aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlOwogICAgIGJv
b2wgdXNlU3lzdGVtQXBwZWFyYW5jZTsKICNlbmRpZgogI2lmIEVOQUJMRShNRVRBX1ZJRVdQT1JU
KQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
QmFja2luZ1N0b3JlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2lu
Z1N0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsMTkgKzIxMiwxOSBAQCB2b2lkIFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlOjpzd2FwVG9WYWxpCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAg
ICBjYXNlIFR5cGU6OklPU3VyZmFjZToKICAgICAgICAgaWYgKHNob3VsZFVzZVJlbW90ZVJlbmRl
cmluZykKLSAgICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBtX2xheWVyLT5j
b250ZXh0KCktPmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpLmNyZWF0ZUltYWdl
QnVmZmVyKG1fc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQsIG1fc2Nh
bGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSk7
CisgICAgICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0gbV9sYXllci0+Y29udGV4
dCgpLT5lbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKS5jcmVhdGVJbWFnZUJ1ZmZl
cihtX3NpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkLCBtX3NjYWxlLCBX
ZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgcGl4ZWxGb3JtYXQoKSk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJD
b3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVN
YXBwZWRCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCLCBwaXhlbEZvcm1hdCgpLCBudWxscHRyKTsKKyAgICAgICAgICAg
IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVy
PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRCYWNrZW5kPjo6Y3JlYXRlKG1f
c2l6ZSwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHBp
eGVsRm9ybWF0KCksIG51bGxwdHIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFR5cGU6OkJp
dG1hcDoKICAgICAgICAgaWYgKHNob3VsZFVzZVJlbW90ZVJlbmRlcmluZykKLSAgICAgICAgICAg
IG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBtX2xheWVyLT5jb250ZXh0KCktPmVuc3VyZVJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpLmNyZWF0ZUltYWdlQnVmZmVyKG1fc2l6ZSwgV2Vi
Q29yZTo6UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgbV9zY2FsZSwgV2ViQ29yZTo6RGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBwaXhlbEZvcm1hdCgpKTsKKyAgICAgICAgICAgIG1f
ZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBtX2xheWVyLT5jb250ZXh0KCktPmVuc3VyZVJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpLmNyZWF0ZUltYWdlQnVmZmVyKG1fc2l6ZSwgV2ViQ29y
ZTo6UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHBpeGVsRm9ybWF0KCkpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJ
bWFnZUJ1ZmZlcjxVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kPjo6Y3Jl
YXRlKG1fc2l6ZSwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
LCBwaXhlbEZvcm1hdCgpLCBudWxscHRyKTsKKyAgICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1h
Z2VCdWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPFVuYWNjZWxlcmF0ZWRJbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQ+OjpjcmVhdGUobV9zaXplLCBtX3NjYWxlLCBXZWJDb3Jl
OjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0cik7
CiAgICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdF
X0JVRkZFUikKICAgICBjYXNlIFR5cGU6OkNHRGlzcGxheUxpc3Q6Ci0gICAgICAgIG1fZnJvbnRC
dWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPENHRGlzcGxh
eUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ+OjpjcmVhdGUobV9zaXplLCBtX3NjYWxlLCBXZWJDb3Jl
OjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIHBpeGVsRm9ybWF0KCksIG51bGxwdHIpOwor
ICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFn
ZUJ1ZmZlcjxDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwg
bV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHBpeGVsRm9y
bWF0KCksIG51bGxwdHIpOwogICAgICAgICBicmVhazsKICNlbmRpZgogICAgIH0KQEAgLTM5Nyw3
ICszOTcsNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjphcHBseUJhY2tpCiAgICAg
ICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6OklPU3VyZmFjZSk7CiAgICAgICAgICAgICBz
d2l0Y2ggKGNvbnRlbnRzVHlwZSkgewogICAgICAgICAgICAgY2FzZSBMYXllckNvbnRlbnRzVHlw
ZTo6SU9TdXJmYWNlOiB7Ci0gICAgICAgICAgICAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6
SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUobWFjaFNlbmRSaWdodCksIFdl
YkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCkpOworICAgICAgICAgICAgICAgIGF1dG8gc3VyZmFj
ZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKG1hY2hT
ZW5kUmlnaHQpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAg
ICAgICAgICAgICAgbGF5ZXIuY29udGVudHMgPSBzdXJmYWNlID8gc3VyZmFjZS0+YXNMYXllckNv
bnRlbnRzKCkgOiBuaWw7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCShy
ZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRt
YXBDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAgICAgCiBzdGF0aWMgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UoY29uc3Qg
U2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogewotICAgIHJl
dHVybiBjb25maWd1cmF0aW9uLmNvbG9yU3BhY2UuY2dDb2xvclNwYWNlLmdldCgpID86IHNSR0JD
b2xvclNwYWNlUmVmKCk7CisgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZSA/IGNv
bmZpZ3VyYXRpb24uY29sb3JTcGFjZS0+cGxhdGZvcm1Db2xvclNwYWNlKCkgOiBXZWJDb3JlOjpz
UkdCQ29sb3JTcGFjZVJlZigpOwogfQogCiBzdGF0aWMgYm9vbCB3YW50c0V4dGVuZGVkUmFuZ2Uo
Y29uc3QgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQpJbmRl
eDogU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvbG9yU3BhY2VEYXRhLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvbG9yU3BhY2VEYXRhLmgJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9Db2xvclNwYWNlRGF0YS5oCShub25l
eGlzdGVudCkKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQ29sb3JTcGFj
ZURhdGFfaAotI2RlZmluZSBDb2xvclNwYWNlRGF0YV9oCi0KLSNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+Ci0KLW5hbWVzcGFjZSBJUEMgewotY2xhc3MgRGVjb2RlcjsKLWNsYXNzIEVuY29kZXI7
Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgQ29sb3JTcGFjZURhdGEgewotICAg
IHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwotICAgIHN0YXRpYyBXQVJOX1VOVVNF
RF9SRVRVUk4gYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgQ29sb3JTcGFjZURhdGEmKTsKLQot
ICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNnQ29sb3JTcGFjZTsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gQ29sb3JTcGFjZURhdGFfaAoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvbG9yU3BhY2VEYXRhLmgKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9t
YWMvQ29sb3JTcGFjZURhdGEubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL0NvbG9yU3BhY2VEYXRhLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEubW0JKG5vbmV4aXN0ZW50KQpAQCAtMSw2MCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJDb2xvclNwYWNl
RGF0YS5oIgotCi0jaW1wb3J0ICJBcmd1bWVudENvZGVyc0NGLmgiCi0jaW1wb3J0ICJEZWNvZGVy
LmgiCi0jaW1wb3J0ICJFbmNvZGVyLmgiCi0jaW1wb3J0IDx3dGYvRW51bVRyYWl0cy5oPgotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBDb2xvclNwYWNlRGF0YTo6ZW5jb2RlKElQQzo6RW5j
b2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGJvb2w+
KGNnQ29sb3JTcGFjZSk7Ci0gICAgaWYgKGNnQ29sb3JTcGFjZSkKLSAgICAgICAgZW5jb2RlciA8
PCBjZ0NvbG9yU3BhY2U7Ci19Ci0KLWJvb2wgQ29sb3JTcGFjZURhdGE6OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIsIENvbG9yU3BhY2VEYXRhJiBjb2xvclNwYWNlRGF0YSkKLXsKLSAgICBi
b29sIGhhc0NHQ29sb3JTcGFjZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhc0NHQ29sb3JT
cGFjZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghaGFzQ0dDb2xvclNwYWNl
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+
IGNvbG9yU3BhY2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb2xvclNwYWNlKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIGNvbG9yU3BhY2VEYXRhLmNnQ29sb3JTcGFjZSA9
IFdURk1vdmUoY29sb3JTcGFjZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05Myw2ICs5Myw3IEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgQ29sb3I7CiBjbGFzcyBDdXJzb3I7CitjbGFzcyBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U7CiBjbGFzcyBGbG9hdFF1YWQ7CiBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFz
cyBSZWdpb247CkBAIC0xODgsMTAgKzE4OSw2IEBAIGNsYXNzIFdlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHlDbGllbnQ7CiBjbGFzcyBJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25S
ZXF1ZXN0OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkKLXN0cnVjdCBDb2xvclNwYWNl
RGF0YTsKLSNlbmRpZgotCiAjaWYgSEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCiB1
c2luZyBMYXllckhvc3RpbmdDb250ZXh0SUQgPSB1aW50MzJfdDsKICNlbmRpZgpAQCAtNDI2LDcg
KzQyMyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgQ0dSZWN0IGJvdW5kc09mTGF5ZXJJbkxh
eWVyQmFja2VkV2luZG93Q29vcmRpbmF0ZXMoQ0FMYXllciAqKSBjb25zdCA9IDA7CiAKLSAgICB2
aXJ0dWFsIENvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2UoKSA9IDA7CisgICAgdmlydHVhbCBXZWJD
b3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpID0gMDsKIAogICAgIHZpcnR1
YWwgdm9pZCBzaG93UGxhdGZvcm1Db250ZXh0TWVudShOU01lbnUgKiwgV2ViQ29yZTo6SW50UG9p
bnQpID0gMDsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsNiArMTk4LDcgQEAgbmFtZXNwYWNlIEFQSSB7CiBjbGFz
cyBBdHRhY2htZW50OwogY2xhc3MgQ29udGVudFdvcmxkOwogY2xhc3MgQ29udGV4dE1lbnVDbGll
bnQ7CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7CiBjbGFzcyBFcnJvcjsKIGNsYXNzIEZp
bmRDbGllbnQ7CiBjbGFzcyBGaW5kTWF0Y2hlc0NsaWVudDsKQEAgLTM3Nyw3ICszNzgsNiBAQCBj
bGFzcyBXZWJXaGVlbEV2ZW50Q29hbGVzY2VyOwogY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIAog
c3RydWN0IEFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOwotc3RydWN0IENvbG9yU3BhY2VE
YXRhOwogc3RydWN0IERhdGFEZXRlY3Rpb25SZXN1bHQ7CiBzdHJ1Y3QgRG9jdW1lbnRFZGl0aW5n
Q29udGV4dDsKIHN0cnVjdCBEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdDsKQEAgLTExMzIs
NyArMTEzMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpOwogICAg
IHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlcigpOwogCi0gICAgQ29s
b3JTcGFjZURhdGEgY29sb3JTcGFjZSgpOworICAgIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JT
cGFjZSBjb2xvclNwYWNlKCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xT
KQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJ
T1MubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9p
b3MvV0tXZWJWaWV3SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDE0LDcgKzEwMTQsNyBAQCAt
IChSZWZQdHI8V2ViS2l0OjpWaWV3U25hcHNob3Q+KV90YWtlVmllCiAjZWxzZQogICAgIFdlYkNv
cmU6OklPU3VyZmFjZTo6Rm9ybWF0IHNuYXBzaG90Rm9ybWF0ID0gV2ViQ29yZTo6SU9TdXJmYWNl
OjpGb3JtYXQ6OkJHUkE7CiAjZW5kaWYKLSAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1
cmZhY2U6OmNyZWF0ZShXZWJDb3JlOjpleHBhbmRlZEludFNpemUoc25hcHNob3RTaXplKSwgV2Vi
Q29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSwgc25hcHNob3RGb3JtYXQpOworICAgIGF1dG8gc3Vy
ZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlKFdlYkNvcmU6OmV4cGFuZGVkSW50U2l6
ZShzbmFwc2hvdFNpemUpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
c25hcHNob3RGb3JtYXQpOwogICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgQ0FSZW5kZXJTZXJ2ZXJSZW5kZXJMYXllcldpdGhUcmFuc2Zvcm0oTUFDSF9QT1JU
X05VTEwsIHNlbGYubGF5ZXIuY29udGV4dC5jb250ZXh0SWQsIHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDY0X3Q+KHNlbGYubGF5ZXIpLCBzdXJmYWNlLT5zdXJmYWNlKCksIDAsIDAsICZ0cmFuc2Zvcm0p
OwpAQCAtMzA3OSw3ICszMDc5LDcgQEAgLSAodm9pZClfc25hcHNob3RSZWN0OihDR1JlY3QpcmVj
dEluVmlldwogICAgIE5TU3RyaW5nICpkaXNwbGF5TmFtZSA9IHNlbGYud2luZG93LnNjcmVlbi5k
aXNwbGF5Q29uZmlndXJhdGlvbi5uYW1lOwogICAgIGlmIChkaXNwbGF5TmFtZSAmJiAhc2VsZi53
aW5kb3cuaGlkZGVuKSB7CiAgICAgICAgIFRyYWNlU2NvcGUgc25hcHNob3RTY29wZShSZW5kZXJT
ZXJ2ZXJTbmFwc2hvdFN0YXJ0LCBSZW5kZXJTZXJ2ZXJTbmFwc2hvdEVuZCk7Ci0gICAgICAgIGF1
dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlKFdlYkNvcmU6OmV4cGFuZGVk
SW50U2l6ZShXZWJDb3JlOjpGbG9hdFNpemUoaW1hZ2VTaXplKSksIFdlYkNvcmU6OnNSR0JDb2xv
clNwYWNlUmVmKCkpOworICAgICAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6
OmNyZWF0ZShXZWJDb3JlOjpleHBhbmRlZEludFNpemUoV2ViQ29yZTo6RmxvYXRTaXplKGltYWdl
U2l6ZSkpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAg
IGlmICghc3VyZmFjZSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7
CiAgICAgICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDYgKzk0LDcg
QEAgY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIEludFBvaW50Owogc3RydWN0IFNoYXJl
RGF0YVdpdGhQYXJzZWRVUkw7CiAKQEAgLTE2OCw3ICsxNjksNiBAQCBjbGFzcyBXZWJGcmFtZVBy
b3h5OwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiBjbGFzcyBX
ZWJQcm9jZXNzUHJveHk7Ci1zdHJ1Y3QgQ29sb3JTcGFjZURhdGE7CiBzdHJ1Y3QgV2ViSGl0VGVz
dFJlc3VsdERhdGE7CiAKIGVudW0gY2xhc3MgQ29udGludWVVbnNhZmVMb2FkIDogYm9vbDsKQEAg
LTMxMyw3ICszMTMsNyBAQCBwdWJsaWM6CiAKICAgICBOU1ZpZXcgKmhpdFRlc3QoQ0dQb2ludCk7
CiAKLSAgICBDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlKCk7CisgICAgV2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UoKTsKIAogICAgIHZvaWQgc2V0VW5kZXJsYXlDb2xv
cihOU0NvbG9yICopOwogICAgIE5TQ29sb3IgKnVuZGVybGF5Q29sb3IoKSBjb25zdDsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNiBAQAogI2ltcG9ydCAiQVBJTGVnYWN5Q29u
dGV4dEhpc3RvcnlDbGllbnQuaCIKICNpbXBvcnQgIkFQSU5hdmlnYXRpb24uaCIKICNpbXBvcnQg
IkFwcEtpdFNQSS5oIgotI2ltcG9ydCAiQ29sb3JTcGFjZURhdGEuaCIKICNpbXBvcnQgIkNvcmVU
ZXh0SGVscGVycy5oIgogI2ltcG9ydCAiRm9udEluZm8uaCIKICNpbXBvcnQgIkZ1bGxzY3JlZW5D
bGllbnQuaCIKQEAgLTkwLDYgKzg5LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JNYWMuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JTZXJpYWxpemF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0NvbXBvc2l0aW9uSGlnaGxpZ2h0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29s
b3JTcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5TG9va3VwLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdJdGVtLmg+CkBAIC0y
NTAwLDcgKzI1MDAsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwb3N0RmFrZU1vdXNlTW92ZWRFdmVu
CiAgICAgbV9wYWdlLT5oYW5kbGVNb3VzZUV2ZW50KHdlYkV2ZW50KTsKIH0KIAotQ29sb3JTcGFj
ZURhdGEgV2ViVmlld0ltcGw6OmNvbG9yU3BhY2UoKQorV2ViQ29yZTo6RGVzdGluYXRpb25Db2xv
clNwYWNlIFdlYlZpZXdJbXBsOjpjb2xvclNwYWNlKCkKIHsKICAgICBpZiAoIW1fY29sb3JTcGFj
ZSkgewogICAgICAgICBpZiAobV90YXJnZXRXaW5kb3dGb3JNb3ZlUHJlcGFyYXRpb24pCkBAIC0y
NTExLDEwICsyNTExLDcgQEAgQ29sb3JTcGFjZURhdGEgV2ViVmlld0ltcGw6OmNvbG9yU3BhY2Uo
KQogICAgICAgICAgICAgbV9jb2xvclNwYWNlID0gW05TU2NyZWVuIG1haW5TY3JlZW5dLmNvbG9y
U3BhY2U7CiAgICAgfQogCi0gICAgQ29sb3JTcGFjZURhdGEgY29sb3JTcGFjZURhdGE7Ci0gICAg
Y29sb3JTcGFjZURhdGEuY2dDb2xvclNwYWNlID0gW21fY29sb3JTcGFjZSBDR0NvbG9yU3BhY2Vd
OwotCi0gICAgcmV0dXJuIGNvbG9yU3BhY2VEYXRhOworICAgIHJldHVybiBXZWJDb3JlOjpEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgeyBbbV9jb2xvclNwYWNlIENHQ29sb3JTcGFjZV0gfTsKIH0KIAog
dm9pZCBXZWJWaWV3SW1wbDo6c2V0VW5kZXJsYXlDb2xvcihOU0NvbG9yICp1bmRlcmxheUNvbG9y
KQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZUhvc3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0JKHJldmlzaW9uIDI3NzkxOSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVI
b3N0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW1wb3J0ICJXZWJQYWdl
UHJveHkuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCA8UXVhcnR6Q29y
ZS9RdWFydHpDb3JlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRDRy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9JT1N1cmZhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1MYXllci5oPgpAQCAtMzE3
LDcgKzMxOCw3IEBAIHN0YXRpYyB2b2lkIHJlY3Vyc2l2ZWx5TWFwSU9TdXJmYWNlQmFja2kKIHsK
ICAgICBpZiAobGF5ZXIuY29udGVudHMgJiYgQ0ZHZXRUeXBlSUQoKF9fYnJpZGdlIENGVHlwZVJl
ZilsYXllci5jb250ZW50cykgPT0gQ0FNYWNoUG9ydEdldFR5cGVJRCgpKSB7CiAgICAgICAgIE1h
Y2hTZW5kUmlnaHQgcG9ydCA9IE1hY2hTZW5kUmlnaHQ6OmNyZWF0ZShDQU1hY2hQb3J0R2V0UG9y
dCgoX19icmlkZ2UgQ0FNYWNoUG9ydFJlZilsYXllci5jb250ZW50cykpOwotICAgICAgICBhdXRv
IHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92
ZShwb3J0KSwgc1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgICAgIGF1dG8gc3VyZmFjZSA9IFdl
YkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKHBvcnQpLCBXZWJD
b3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAgIGxheWVyLmNvbnRl
bnRzID0gc3VyZmFjZSA/IHN1cmZhY2UtPmFzTGF5ZXJDb250ZW50cygpIDogbmlsOwogICAgIH0K
IApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBs
TWFjLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbE1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBpc1ZpZXdJbldpbmRvdygpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNWaXN1
YWxseUlkbGUoKSBvdmVycmlkZTsKICAgICBMYXllckhvc3RpbmdNb2RlIHZpZXdMYXllckhvc3Rp
bmdNb2RlKCkgb3ZlcnJpZGU7Ci0gICAgQ29sb3JTcGFjZURhdGEgY29sb3JTcGFjZSgpIG92ZXJy
aWRlOworICAgIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzZXRSZW1vdGVMYXllclRyZWVSb290Tm9kZShSZW1vdGVMYXllclRy
ZWVOb2RlKikgb3ZlcnJpZGU7CiAgICAgQ0FMYXllciAqYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jv
b3RMYXllcigpIGNvbnN0IG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2ltcG9ydCAiQVBJSGl0VGVzdFJlc3VsdC5oIgog
I2ltcG9ydCAiQXBwS2l0U1BJLmgiCi0jaW1wb3J0ICJDb2xvclNwYWNlRGF0YS5oIgogI2ltcG9y
dCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAiRG93bmxvYWRQcm94eS5oIgogI2ltcG9ydCAi
RHJhd2luZ0FyZWFQcm94eS5oIgpAQCAtNjYsNiArNjUsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9C
aXRtYXBJbWFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvck1hYy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9DdXJzb3IuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0RpY3Rpb25hcnlMb29rdXAuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RHJhZ0l0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CkBAIC0yNDQsNyArMjQ0
LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6dmlld1dpbGxNb3ZlVG9Bbm90aAogICAgIGNsZWFy
QWxsRWRpdENvbW1hbmRzKCk7CiB9CiAKLUNvbG9yU3BhY2VEYXRhIFBhZ2VDbGllbnRJbXBsOjpj
b2xvclNwYWNlKCkKK1dlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBQYWdlQ2xpZW50SW1w
bDo6Y29sb3JTcGFjZSgpCiB7CiAgICAgcmV0dXJuIG1faW1wbC0+Y29sb3JTcGFjZSgpOwogfQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhUHJveHkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0JKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYVByb3h5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIAotI2ltcG9ydCAiQ29sb3JTcGFjZURhdGEuaCIKICNpbXBvcnQg
IkRyYXdpbmdBcmVhTWVzc2FnZXMuaCIKICNpbXBvcnQgIkRyYXdpbmdBcmVhUHJveHlNZXNzYWdl
cy5oIgogI2ltcG9ydCAiTGF5ZXJUcmVlQ29udGV4dC5oIgpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCShyZXZpc2lvbiAyNzc5MTkpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYgUExBVEZPUk0oTUFDKQogCiAjaW1wb3J0ICJB
UElVSUNsaWVudC5oIgotI2ltcG9ydCAiQ29sb3JTcGFjZURhdGEuaCIKICNpbXBvcnQgIkNvbm5l
Y3Rpb24uaCIKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIkVkaXRvclN0YXRl
LmgiCkBAIC01Miw2ICs1MSw3IEBACiAjaW1wb3J0ICJXZWJQcmVmZXJlbmNlc0tleXMuaCIKICNp
bXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCA8V2ViQ29yZS9BdHRyaWJ1dGVkU3Ry
aW5nLmg+CisjaW1wb3J0IDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9EaWN0aW9uYXJ5TG9va3VwLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdJdGVt
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KQEAgLTM0NCw3ICszNDQsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6YXNzaXN0aXZlVGVjaG5vbG9neU1hCiAgICAgcGFnZUNsaWVu
dCgpLmFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKTsKIH0KIAotQ29sb3JT
cGFjZURhdGEgV2ViUGFnZVByb3h5Ojpjb2xvclNwYWNlKCkKK1dlYkNvcmU6OkRlc3RpbmF0aW9u
Q29sb3JTcGFjZSBXZWJQYWdlUHJveHk6OmNvbG9yU3BhY2UoKQogewogICAgIHJldHVybiBwYWdl
Q2xpZW50KCkuY29sb3JTcGFjZSgpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0yNjM0LDggKzI2MzQsNiBAQAogCQkxQTI1NkUzNjE4QTFBNzg4MDA2RkI5MjIgLyogV0tOYXZp
Z2F0aW9uQWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLTmF2aWdh
dGlvbkFjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTI1NkUzOTE4QTFB
N0RGMDA2RkI5MjIgLyogV0tOYXZpZ2F0aW9uQWN0aW9uSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tOYXZpZ2F0aW9uQWN0aW9uSW50ZXJuYWwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyOEI4Q0IxQzgwRUQ1OTAwNkZENzQzIC8qIFdlYnNp
dGVEYXRhRmV0Y2hPcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
c2l0ZURhdGFGZXRjaE9wdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQTJB
NEFGRDE1ODY5MzkyMDA5MEM5RTkgLyogQ29sb3JTcGFjZURhdGEubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb2xvclNwYWNlRGF0YS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMUEyQTRBRkUxNTg2OTM5MjAwOTBDOUU5IC8qIENvbG9yU3BhY2VE
YXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yU3BhY2VEYXRhLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMkJCNkNDMTQxMTdBNUYwMDBGMzVENCAv
KiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUEyQkI2Q0UxNDExN0I0RDAwMEYzNUQ0IC8qIFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0
aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdl
UmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQTJC
QjZDRjE0MTE3QjREMDAwRjM1RDQgLyogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bk1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1BsdWdpblByb2Nlc3ND
b25uZWN0aW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
QEAgLTEwNDMwLDggKzEwNDI4LDYgQEAKIAkJCQk5RjU0Rjg4RTE2NDg4RTg3MDA3REY4MUEgLyog
QXV4aWxpYXJ5UHJvY2Vzc01hYy5tbSAqLywKIAkJCQlDRTExQUQ1MTFDQkM0ODJGMDA2ODFFRTUg
LyogQ29kZVNpZ25pbmcuaCAqLywKIAkJCQlDRTExQUQ0RjFDQkM0N0Y4MDA2ODFFRTUgLyogQ29k
ZVNpZ25pbmcubW0gKi8sCi0JCQkJMUEyQTRBRkUxNTg2OTM5MjAwOTBDOUU5IC8qIENvbG9yU3Bh
Y2VEYXRhLmggKi8sCi0JCQkJMUEyQTRBRkQxNTg2OTM5MjAwOTBDOUU5IC8qIENvbG9yU3BhY2VE
YXRhLm1tICovLAogCQkJCTFBQzc1QTFDMUIzMzY5NUUwMDU2NzQ1QiAvKiBIYW5nRGV0ZWN0aW9u
RGlzYWJsZXJNYWMubW0gKi8sCiAJCQkJMkQ1MDM2NUQxQkNDNzkzRjAwRTIwQkIzIC8qIE5hdGl2
ZVdlYkdlc3R1cmVFdmVudE1hYy5tbSAqLywKIAkJCQlDMDJCRkYxRDEyNTE1MDJFMDA5Q0NCRUEg
LyogTmF0aXZlV2ViS2V5Ym9hcmRFdmVudE1hYy5tbSAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFy
ZWFibGVCaXRtYXBCYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTEgKzQ1LDcgQEAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEltYWdlQnVmZmVyUwogCiBTaGFyZWFibGVCaXRt
YXA6OkNvbmZpZ3VyYXRpb24gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb25m
aWd1cmF0aW9uKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgU2hhcmVhYmxl
Qml0bWFwOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247Ci0jaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgY29uZmlndXJhdGlvbi5jb2xvclNwYWNlID0geyBjYWNoZWRDR0NvbG9yU3BhY2UocGFy
YW1ldGVycy5jb2xvclNwYWNlKSB9OwotI2VuZGlmCi0gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247
CisgICAgcmV0dXJuIHsgcGFyYW1ldGVycy5jb2xvclNwYWNlIH07CiB9CiAKIEludFNpemUgSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUo
Y29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyArOTQsNyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnByZXBhCiAgICAgICAgIG1hcmtDb250ZXh0TG9zdCgpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIGF1dG8gZGlzcGxheUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3JlYXRl
RnJvbVNlbmRSaWdodChXVEZNb3ZlKGRpc3BsYXlCdWZmZXJTZW5kUmlnaHQpLCBzUkdCQ29sb3JT
cGFjZVJlZigpKTsKKyAgICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBJT1N1cmZhY2U6OmNyZWF0ZUZy
b21TZW5kUmlnaHQoV1RGTW92ZShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwgV2ViQ29yZTo6RGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgIGlmIChkaXNwbGF5QnVmZmVyKSB7CiAg
ICAgICAgIGF1dG8mIHNjID0gcGxhdGZvcm1Td2FwQ2hhaW4oKTsKICAgICAgICAgc2MucmVjeWNs
ZUJ1ZmZlcigpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIFJl
bW90ZUltYWdlQnVmZmVyUHJveHkgOiBwdWJsaWMgV2UKICAgICB1c2luZyBCYXNlRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlcjo6cmVzb2x1dGlvblNjYWxlOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZlB0cjxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisg
ICAgc3RhdGljIFJlZlB0cjxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PiBjcmVhdGUoY29uc3QgV2Vi
Q29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFdlYkNv
cmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3Jt
YXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5KQogICAgIHsKICAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0gV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzIHsgc2l6ZSwgcmVzb2x1dGlvblNjYWxl
LCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCB9OwogICAgICAgICBpZiAoQmFja2VuZFR5cGU6OmNh
bGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShwYXJhbWV0ZXJzKS5pc0VtcHR5KCkpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlCiAgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZDo6Q3JlYXRlSW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIubG9naWNh
bFNpemUoKSwgaW1hZ2VCdWZmZXIucmVuZGVyaW5nTW9kZSgpLCBpbWFnZUJ1ZmZlci5yZXNvbHV0
aW9uU2NhbGUoKSwgaW1hZ2VCdWZmZXIuY29sb3JTcGFjZSgpLCBpbWFnZUJ1ZmZlci5waXhlbEZv
cm1hdCgpLCBpbWFnZUJ1ZmZlci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSksIHJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyKCksIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdl
RXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhl
bEZvcm1hdCkKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUg
cmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KQogewogICAgIFJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAkod29y
a2luZyBjb3B5KQpAQCAtNDMsMTUgKzQzLDE5IEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgeworCiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogY2xhc3Mg
RGlzcGxheUxpc3Q7CiBjbGFzcyBJdGVtOwogfQorCitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U7CiBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBQaXhlbEJ1ZmZlcjsKKwogZW51bSBjbGFzcyBB
bHBoYVByZW11bHRpcGxpY2F0aW9uIDogdWludDhfdDsKLWVudW0gY2xhc3MgRGVzdGluYXRpb25D
b2xvclNwYWNlIDogdWludDhfdDsKIGVudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJvb2w7CisK
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC05Miw3ICs5Niw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92
ZXJyaWRlOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgc2VudC4KLSAgICBSZWZQdHI8V2ViQ29y
ZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29y
ZTo6RGVzdGluYXRpb25Db2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCk7CisgICAgUmVm
UHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFdlYkNvcmU6OlBpeGVs
Rm9ybWF0KTsKICAgICBTdHJpbmcgZ2V0RGF0YVVSTEZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgV2ViQ29yZTo6UHJlc2VydmVS
ZXNvbHV0aW9uLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIFZl
Y3Rvcjx1aW50OF90PiBnZXREYXRhRm9ySW1hZ2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpOwogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgZmx1
c2hEaXNwbGF5TGlzdEFuZENvbW1pdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3QmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJl
YWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBw
ZWRJT1N1cmZhY2VCYWNrZW5kLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBl
ZElPU3VyZmFjZUJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHAKICAgICBpZiAoYmFja2VuZFNp
emUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gc3VyZmFj
ZSA9IElPU3VyZmFjZTo6Y3JlYXRlKGJhY2tlbmRTaXplLCBiYWNrZW5kU2l6ZSwgY2FjaGVkQ0dD
b2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JTcGFjZSksIElPU3VyZmFjZTo6Zm9ybWF0Rm9yUGl4
ZWxGb3JtYXQocGFyYW1ldGVycy5waXhlbEZvcm1hdCkpOworICAgIGF1dG8gc3VyZmFjZSA9IElP
U3VyZmFjZTo6Y3JlYXRlKGJhY2tlbmRTaXplLCBiYWNrZW5kU2l6ZSwgcGFyYW1ldGVycy5jb2xv
clNwYWNlLCBJT1N1cmZhY2U6OmZvcm1hdEZvclBpeGVsRm9ybWF0KHBhcmFtZXRlcnMucGl4ZWxG
b3JtYXQpKTsKICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBA
IC02NSw3ICs2NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHAK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byBzdXJmYWNlID0gSU9T
dXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoV1RGOjpnZXQ8TWFjaFNlbmRSaWdo
dD4oaGFuZGxlKSksIGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpKTsK
KyAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92
ZShXVEY6OmdldDxNYWNoU2VuZFJpZ2h0PihoYW5kbGUpKSwgcGFyYW1ldGVycy5jb2xvclNwYWNl
KTsKICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVJbWFnZURlY29kZXJBVkYuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDEzICsyOCwxMiBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBI
QVZFKEFWQVNTRVRSRUFERVIpCiAKLSNpbmNsdWRlICJDb2xvclNwYWNlRGF0YS5oIgogI2luY2x1
ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BVkFzc2V0TUlN
RVR5cGVDYWNoZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JTcGFjZUNHLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lP
U3VyZmFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VUeXBlcy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgpAQCAtMTY4LDE0ICsxNjcsMTQgQEAgUGxhdGZvcm1J
bWFnZVB0ciBSZW1vdGVJbWFnZURlY29kZXJBVkY6OgogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIE9wdGlvbmFsPE1hY2hTZW5kUmlnaHQ+IHNlbmRSaWdodDsKLSAgICAgICAgQ29sb3JT
cGFjZURhdGEgY29sb3JTcGFjZTsKKyAgICAgICAgT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNw
YWNlPiBjb2xvclNwYWNlOwogICAgICAgICBpZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNv
bm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6
OkNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KG1faWRlbnRpZmllciwgaW5kZXgpLCBNZXNzYWdlczo6
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OkNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4OjpSZXBs
eShzZW5kUmlnaHQsIGNvbG9yU3BhY2UpLCAwKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICBpZiAoIXNlbmRSaWdodCkKKyAgICAgICAgaWYgKCFzZW5kUmlnaHQgfHwgIWNvbG9yU3Bh
Y2UpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29y
ZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoKnNlbmRSaWdodCksIGNv
bG9yU3BhY2UuY2dDb2xvclNwYWNlLmdldCgpKTsKKyAgICAgICAgYXV0byBzdXJmYWNlID0gV2Vi
Q29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoKnNlbmRSaWdodCks
IFdURk1vdmUoKmNvbG9yU3BhY2UpKTsKICAgICAgICAgaWYgKCFzdXJmYWNlKQogICAgICAgICAg
ICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2Nv
Y29hL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlQ29jb2EubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0JKHdvcmtp
bmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgUmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXll
clByaXZhdGVSZQogICAgIGlmICghc2VuZFJpZ2h0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRS
aWdodChXVEZNb3ZlKCpzZW5kUmlnaHQpLCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICBhdXRv
IHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92
ZSgqc2VuZFJpZ2h0KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwog
ICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTkxLDcgKzkx
LDcgQEAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IE1lZGlhUGxheWVyUAogICAgIGlmICgh
c2VuZFJpZ2h0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gc3VyZmFjZSA9
IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKCpzZW5kUmln
aHQpLCBudWxscHRyKTsKKyAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNy
ZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZSgqc2VuZFJpZ2h0KSwgV2ViQ29yZTo6RGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQkod29ya2luZyBjb3B5KQpAQCAtNjQ2
LDcgKzY0Niw3IEBAIGlubGluZSBQREZQbHVnaW46OlBERlBsdWdpbihXZWJGcmFtZSYgZnIKICAg
ICBbbV9jb250YWluZXJMYXllciBhZGRTdWJsYXllcjptX3Njcm9sbENvcm5lckxheWVyLmdldCgp
XTsKICAgICBpZiAoW21fcGRmTGF5ZXJDb250cm9sbGVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3Ioc2V0RGV2aWNlQ29sb3JTcGFjZTopXSkgewogICAgICAgICBhdXRvIHZpZXcgPSBmcmFt
ZS5jb3JlRnJhbWUoKS0+dmlldygpOwotICAgICAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIgc2V0
RGV2aWNlQ29sb3JTcGFjZTpzY3JlZW5Db2xvclNwYWNlKHZpZXcpXTsKKyAgICAgICAgW21fcGRm
TGF5ZXJDb250cm9sbGVyIHNldERldmljZUNvbG9yU3BhY2U6c2NyZWVuQ29sb3JTcGFjZSh2aWV3
KS5wbGF0Zm9ybUNvbG9yU3BhY2UoKV07CiAgICAgfQogCiAjaWYgSEFWRShJTkNSRU1FTlRBTF9Q
REZfQVBJUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9T
aGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwCShy
ZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTIg
KzU3LDcgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY3JlYXRlU2hhcmVhYmxlQgogICAgIH0K
IAogICAgIC8vIEZJWE1FOiBPbmx5IHNlbGVjdCBFeHRlbmRlZENvbG9yIG9uIGltYWdlcyBrbm93
biB0byBuZWVkIHdpZGUgZ2FtdXQuCi0gICAgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9u
IGJpdG1hcENvbmZpZ3VyYXRpb247Ci0jaWYgVVNFKENHKQotICAgIGJpdG1hcENvbmZpZ3VyYXRp
b24uY29sb3JTcGFjZS5jZ0NvbG9yU3BhY2UgPSBzY3JlZW5Db2xvclNwYWNlKHJlbmRlckltYWdl
LmZyYW1lKCkubWFpbkZyYW1lKCkudmlldygpKTsKLSNlbmRpZgotCi0gICAgYXV0byBzaGFyZWRC
aXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGJpdG1hcFNp
emUpLCBiaXRtYXBDb25maWd1cmF0aW9uKTsKKyAgICBhdXRvIHNoYXJlZEJpdG1hcCA9IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKEludFNpemUoYml0bWFwU2l6ZSksIHsgc2NyZWVu
Q29sb3JTcGFjZShyZW5kZXJJbWFnZS5mcmFtZSgpLm1haW5GcmFtZSgpLnZpZXcoKSkgfSk7CiAg
ICAgaWYgKCFzaGFyZWRCaXRtYXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTkyNyw3ICs5MjcsNyBAQCBXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0
b3J5KiBXCiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4g
V2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUs
IFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQ
aXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29uc3QKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gV2ViQ2hy
b21lQ2xpZW50OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRl
cmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwg
UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CiB7CiAgICAgaWYgKCFXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5zaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3IocHVycG9zZSkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMjc3OTE5
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQsNyArMjQ0LDcgQEAgcHJpdmF0ZToKICAgICBX
ZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KiBkaXNwbGF5UmVmcmVzaE1vbml0
b3JGYWN0b3J5KCkgY29uc3QgZmluYWw7CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0gICAg
UmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBXZWJDb3JlOjpSZW5kZXJp
bmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29s
b3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9z
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCkgY29uc3QgZmluYWw7CiAjaWYgRU5BQkxFKFdF
QkdMKQogICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhp
Y3NDb250ZXh0R0woY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwg
V2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQgaG9zdFdpbmRvd0Rpc3BsYXlJRCkgY29uc3QgZmlu
YWw7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0JKHJldmlzaW9u
IDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViRHJhZ0NsaWVudE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjgsOSArNjgsNyBAQCB1c2lu
ZyBEcmFnSW1hZ2UgPSBDR0ltYWdlUmVmOwogCiBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gY29udmVydERyYWdJbWFnZVRvQml0bWFwKERyYWdJbWFnZSBpbWFnZSwgY29uc3QgSW50U2l6
ZSYgc2l6ZSwgRnJhbWUmIGZyYW1lKQogewotICAgIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJh
dGlvbiBiaXRtYXBDb25maWd1cmF0aW9uOwotICAgIGJpdG1hcENvbmZpZ3VyYXRpb24uY29sb3JT
cGFjZS5jZ0NvbG9yU3BhY2UgPSBzY3JlZW5Db2xvclNwYWNlKGZyYW1lLm1haW5GcmFtZSgpLnZp
ZXcoKSk7Ci0gICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJs
ZShzaXplLCBiaXRtYXBDb25maWd1cmF0aW9uKTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNpemUsIHsgc2NyZWVuQ29sb3JTcGFjZShmcmFtZS5t
YWluRnJhbWUoKS52aWV3KCkpIH0pOwogICAgIGlmICghYml0bWFwKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2lu
Z0FyZWEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9E
cmF3aW5nQXJlYS5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBA
IGNsYXNzIERlY29kZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTsKIGNsYXNzIERpc3BsYXlSZWZyZXNoTW9uaXRvcjsKIGNsYXNzIEZyYW1l
OwogY2xhc3MgRnJhbWVWaWV3OwpAQCAtNjAsNyArNjEsNiBAQCBzdHJ1Y3QgVmlld3BvcnRBdHRy
aWJ1dGVzOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RydWN0IENvbG9yU3BhY2VEYXRhOwog
Y2xhc3MgTGF5ZXJUcmVlSG9zdDsKIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwog
c3RydWN0IFdlYlByZWZlcmVuY2VzU3RvcmU7CkBAIC0xODAsNyArMTgwLDcgQEAgcHJpdmF0ZToK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBVc2VkIGJ5IFRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhLgogICAgIHZpcnR1YWwgdm9pZCBzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldENvbG9yU3BhY2UoY29uc3QgQ29sb3JTcGFjZURhdGEm
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29sb3JTcGFjZShPcHRpb25hbDxXZWJDb3JlOjpE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U+KSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUcmFu
c2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBjb21taXRUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29y
ZTo6RmxvYXRQb2ludCBvcmlnaW4pIHsgfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4JKHJldmlzaW9u
IDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIG1lc3NhZ2VzIC0+
IERyYXdpbmdBcmVhIE5vdFJlZkNvdW50ZWQgewogICAgIC8vIFVzZWQgYnkgVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEuCiAgICAgVXBkYXRlR2VvbWV0cnkoV2ViQ29yZTo6SW50U2l6ZSB2
aWV3U2l6ZSwgYm9vbCBmbHVzaFN5bmNocm9ub3VzbHksIE1hY2hTZW5kUmlnaHQgZmVuY2VQb3J0
KQogICAgIFNldERldmljZVNjYWxlRmFjdG9yKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQotICAg
IFNldENvbG9yU3BhY2Uoc3RydWN0IFdlYktpdDo6Q29sb3JTcGFjZURhdGEgY29sb3JTcGFjZSkK
KyAgICBTZXRDb2xvclNwYWNlKHN0cnVjdCBPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNv
bG9yU3BhY2U+IGNvbG9yU3BhY2UpCiAgICAgU2V0Vmlld0V4cG9zZWRSZWN0KE9wdGlvbmFsPFdl
YkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRSZWN0KQogCiAgICAgQWRqdXN0VHJhbnNpZW50
Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKQpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNTk4LDcgKzI1OTgsNyBAQCBzdGF0aWMgU2hhcmVhYmxlQml0bWFw
OjpDb25maWd1cmF0aW9uIHNuCiAgICAgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGNv
bmZpZ3VyYXRpb247CiAjaWYgVVNFKENHKQogICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRp
b25zVXNlU2NyZWVuQ29sb3JTcGFjZSkKLSAgICAgICAgY29uZmlndXJhdGlvbi5jb2xvclNwYWNl
LmNnQ29sb3JTcGFjZSA9IHNjcmVlbkNvbG9yU3BhY2UocGFnZS5jb3JlUGFnZSgpLT5tYWluRnJh
bWUoKS52aWV3KCkpOworICAgICAgICBjb25maWd1cmF0aW9uLmNvbG9yU3BhY2UgPSBzY3JlZW5D
b2xvclNwYWNlKHBhZ2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpKTsKICNlbmRpZgog
ICAgIHJldHVybiBjb25maWd1cmF0aW9uOwogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05OCw3ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdXNwZW5kUGFp
bnRpbmcoKTsKICAgICB2b2lkIHJlc3VtZVBhaW50aW5nKCk7CiAgICAgdm9pZCBzZXRMYXllckhv
c3RpbmdNb2RlKExheWVySG9zdGluZ01vZGUpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0Q29sb3JT
cGFjZShjb25zdCBDb2xvclNwYWNlRGF0YSYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29sb3JT
cGFjZShPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+KSBvdmVycmlkZTsK
ICAgICB2b2lkIGFkZEZlbmNlKGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCBhZGRUcmFuc2FjdGlvbkNhbGxiYWNrSUQoQ2FsbGJhY2tJRCkgb3ZlcnJpZGU7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYg
QEAKIAogI2lmIFBMQVRGT1JNKE1BQykKIAotI2ltcG9ydCAiQ29sb3JTcGFjZURhdGEuaCIKICNp
bXBvcnQgIkRpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oIgogI2ltcG9ydCAiRHJhd2luZ0FyZWFQ
cm94eU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJMYXllckhvc3RpbmdDb250ZXh0LmgiCkBAIC00NSw2
ICs0NCw3IEBACiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KICNpbXBv
cnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EZWJ1Z1BhZ2VP
dmVybGF5cy5oPgorI2ltcG9ydCA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgpAQCAtOTEsNiArOTEsNyBAQCBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6VGlsZWRDb3JlCiAgICAgfSk7CiAKICAgICB1cGRh
dGVMYXllckhvc3RpbmdDb250ZXh0KCk7CisgICAgCiAgICAgc2V0Q29sb3JTcGFjZShwYXJhbWV0
ZXJzLmNvbG9yU3BhY2UpOwogCiAgICAgaWYgKGF1dG8gdmlld0V4cG9zZWRSZWN0ID0gcGFyYW1l
dGVycy52aWV3RXhwb3NlZFJlY3QpCkBAIC02NTAsOSArNjUxLDkgQEAgdm9pZCBUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6c2V0TAogICAgIHNlbmQoTWVzc2FnZXM6OkRyYXdpbmdBcmVh
UHJveHk6OlVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKDAsIGxheWVyVHJlZUNvbnRl
eHQpKTsKIH0KIAotdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0Q29sb3JT
cGFjZShjb25zdCBDb2xvclNwYWNlRGF0YSYgY29sb3JTcGFjZSkKK3ZvaWQgVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWE6OnNldENvbG9yU3BhY2UoT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlKQogewotICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4
dC0+c2V0Q29sb3JTcGFjZShjb2xvclNwYWNlLmNnQ29sb3JTcGFjZS5nZXQoKSk7CisgICAgbV9s
YXllckhvc3RpbmdDb250ZXh0LT5zZXRDb2xvclNwYWNlKGNvbG9yU3BhY2UgPyBjb2xvclNwYWNl
LT5wbGF0Zm9ybUNvbG9yU3BhY2UoKSA6IG51bGxwdHIpOwogfQogCiBSZWZQdHI8V2ViQ29yZTo6
RGlzcGxheVJlZnJlc2hNb25pdG9yPiBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Y3Jl
YXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzkyMCkKKysrIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0
IEBACisyMDIxLTA1LTIyICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAg
ICBDb252ZXJ0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBmcm9tIGFuIGVudW0gdG8gY2xhc3Mgd3Jh
cHBpbmcgYSBwbGF0Zm9ybSBjb2xvciBzcGFjZSAoQ0dDb2xvclNwYWNlUmVmIGZvciBDRyBwb3J0
cywgZXRjLikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIyNjE0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW06CisgICAgICAgIChXZWJD
b250ZXh0TWVudUNsaWVudDo6aW1hZ2VGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVt
KToKKyAgICAgICAgVXBkYXRlIGZvciBuZXcgRGVzdGluYXRpb25Db2xvclNwYWNlIGNsYXNzLgor
CiAyMDIxLTA1LTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVwbGFjZSBMb2NrSG9sZGVyIHdpdGggTG9ja2VyIGluIGxvY2FsIHZhcmlhYmxlcwpJbmRleDog
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGll
bnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0JpdG1hcElt
YWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbnRleHRNZW51Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0NvbnRleHRNZW51Q29udHJvbGxlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9EZXN0aW5hdGlvbkNv
bG9yU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9jdW1lbnQuaD4KICNpbXBvcnQgPFdlYkNv
cmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CkBAIC0yMTMsNyArMjE0
LDcgQEAgUmV0YWluUHRyPE5TSW1hZ2U+IFdlYkNvbnRleHRNZW51Q2xpZW50OgogICAgICAgICBy
ZXR1cm4gbmlsOwogCiAgICAgLy8gVGhpcyBpcyBlZmZlY3RpdmVseSBhIHNuYXBzaG90LCBhbmQg
d2lsbCBiZSBwYWludGVkIGluIGFuIHVuYWNjZWxlcmF0ZWQgZmFzaGlvbiBpbiBsaW5lIHdpdGgg
RnJhbWVTbmFwc2hvdHRpbmcuCi0gICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KHJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBidWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJH
UkE4KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG5pbDsKIApJbmRleDogVG9v
bHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjc3
OTIwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMjEtMDUtMjIgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIENv
bnZlcnQgRGVzdGluYXRpb25Db2xvclNwYWNlIGZyb20gYW4gZW51bSB0byBjbGFzcyB3cmFwcGlu
ZyBhIHBsYXRmb3JtIGNvbG9yIHNwYWNlIChDR0NvbG9yU3BhY2VSZWYgZm9yIENHIHBvcnRzLCBl
dGMuKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2
MTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcDoKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICBVcGF0ZSB0ZXN0IHRvIHVzZSBu
ZXcgRGVzdGluYXRpb25Db2xvclNwYWNlIHR5cGUuCisKIDIwMjEtMDUtMjIgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBM
b2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3Mv
UGl4ZWxEdW1wU3VwcG9ydElPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJl
ZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgVG9vbHMv
RHVtcFJlbmRlclRyZWUvaW9zL1BpeGVsRHVtcFN1cHBvcnRJT1MubW0JKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAy
MDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzgsNiArMzgsNyBAQAogI2ltcG9ydCA8Q29tbW9uQ3J5cHRvL0Nv
bW1vbkRpZ2VzdC5oPgogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL1VUQ29yZVR5cGVzLmg+
CiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGVz
dGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dENH
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0lPU3VyZmFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0
Zm9ybVNjcmVlbi5oPgpAQCAtNzEsNyArNzIsNyBAQCBSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3Jl
YXRlQml0bWFwQ29udGV4CiAjZWxzZQogICAgIFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0IHNu
YXBzaG90Rm9ybWF0ID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQ6OkJHUkE7CiAjZW5kaWYK
LSAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZShXZWJDb3JlOjpl
eHBhbmRlZEludFNpemUoc25hcHNob3RTaXplKSwgV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYo
KSwgc25hcHNob3RGb3JtYXQpOworICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFj
ZTo6Y3JlYXRlKFdlYkNvcmU6OmV4cGFuZGVkSW50U2l6ZShzbmFwc2hvdFNpemUpLCBXZWJDb3Jl
OjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgc25hcHNob3RGb3JtYXQpOwogICAgIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBjZ0ltYWdlID0gc3VyZmFjZS0+Y3JlYXRlSW1hZ2UoKTsKIAog
ICAgIHZvaWQqIGJpdG1hcEJ1ZmZlciA9IG51bGxwdHI7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0c0NH
LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2lmIFVTRShDRykKIAorI2luY2x1ZGUgPFdlYkNvcmUvRGVzdGluYXRpb25Db2xv
clNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RS
ZXBsYXllci5oPgpAQCAtNDYsOCArNDcsOCBAQCBURVNUKERpc3BsYXlMaXN0VGVzdHMsIFJlcGxh
eVdpdGhNaXNzaW5nCiB7CiAgICAgRmxvYXRSZWN0IGNvbnRleHRCb3VuZHMgeyAwLCAwLCBjb250
ZXh0V2lkdGgsIGNvbnRleHRIZWlnaHQgfTsKIAotICAgIGF1dG8gY29sb3JTcGFjZSA9IGFkb3B0
Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29sb3JTcGFjZVNSR0IpKTsKLSAgICBh
dXRvIGNnQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKG51bGxwdHIsIGNv
bnRleHRXaWR0aCwgY29udGV4dEhlaWdodCwgOCwgNCAqIGNvbnRleHRXaWR0aCwgY29sb3JTcGFj
ZS5nZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRMYXN0KSk7CisgICAgYXV0byBjb2xv
clNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CisgICAgYXV0byBjZ0NvbnRl
eHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShudWxscHRyLCBjb250ZXh0V2lkdGgs
IGNvbnRleHRIZWlnaHQsIDgsIDQgKiBjb250ZXh0V2lkdGgsIGNvbG9yU3BhY2UucGxhdGZvcm1D
b2xvclNwYWNlKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkpOwogICAgIEdyYXBo
aWNzQ29udGV4dCBjb250ZXh0IHsgY2dDb250ZXh0LmdldCgpIH07CiAKICAgICBhdXRvIGltYWdl
QnVmZmVySWRlbnRpZmllciA9IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUo
KTsKQEAgLTY5LDcgKzcwLDcgQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBSZXBsYXlXaXRoTWlz
c2luZwogICAgIH0KIAogICAgIHsKLSAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoeyAxMDAsIDEwMCB9LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAg
ICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHsgMTAwLCAxMDAgfSwg
UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6
OkJHUkE4KTsKICAgICAgICAgSW1hZ2VCdWZmZXJIYXNoTWFwIGltYWdlQnVmZmVyTWFwOwogICAg
ICAgICBpbWFnZUJ1ZmZlck1hcC5zZXQoaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBpbWFnZUJ1ZmZl
ci5yZWxlYXNlTm9uTnVsbCgpKTsKIAo=
</data>
<flag name="commit-queue"
          id="450657"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429467</attachid>
            <date>2021-05-23 09:50:59 -0700</date>
            <delta_ts>2021-05-23 12:21:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226143-20210523095058.patch</filename>
            <type>text/plain</type>
            <size>277134</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5NSBAQAorMjAyMS0wNS0yMiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdyYXBwaW5nIGEgcGxhdGZvcm0gY29sb3Ig
c3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0Yy4pCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxNDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIGVudW1lcmF0aW9uIGJh
c2VkIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB3aXRoIGEgc3RydWN0IHdyYXBwaW5nCisgICAgICAg
IGEgcGxhdGZvcm0gY29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0
Yy4pLiBGb3IgcG9ydHMKKyAgICAgICAgdGhhdCBkb24ndCBoYXZlIGEgcGxhdGZvcm0gbGV2ZWwg
Y29sb3Igc3BhY2UgdHlwZSwgYSBidWlsdGluIFBsYXRmb3JtQ29sb3JTcGFjZQorICAgICAgICB0
eXBlIGlzIHByb3ZpZGVkIHRoYXQgaXMganVzdCB0aGUgb2xkIGVudW0gcmVuYW1lZCB0byBQbGF0
Zm9ybUNvbG9yU3BhY2U6Ok5hbWUuCisKKyAgICAgICAgVGhlIGdvYWwgb2YgdGhpcyBjaGFuZ2Ug
aXMgdG8gdW5pZnkgdGhlIGN1cnJlbnRseSBiaWZ1cmNhdGVkIGNvbmNlcHQgb2YgYW4KKyAgICAg
ICAgSW1hZ2VCdWZmZXIncyBjb2xvciBzcGFjZSwgd2hpY2ggcHJldmlvc2x5IGNvdWxkIGVpdGhl
ciBiZSBiYXNlZCBvbiB0aGUgCisgICAgICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSAoYW5kIHJl
ZmxlY3RlZCBpbiB0aGUgY29sb3JTcGFjZSgpIG1lbWJlciBmdW5jdGlvbiksCisgICAgICAgIG9y
IChmb3IgQ0cgcG9ydHMpIGJhc2VkIG9uIGEgQ0dDb2xvclNwYWNlUmVmLCB3aXRoIHRoZSBjb2xv
clNwYWNlKCkgZnVuY3Rpb24KKyAgICAgICAgcmV0dXJuaW5nIHNSR0IgZXZlbiBpZiB0aGUgSW1h
Z2VCdWZmZXIgd2FzIG5vdC4gCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAq
IE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6
Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFydHdvcmtJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIFNvdXJj
ZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wSW1hZ2VCaXRtYXApOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRJbWFnZUJpdG1hcCk6CisgICAgICAgICogY3Nz
L0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1h
Z2VWYWx1ZTo6aW1hZ2UpOgorICAgICAgICAqIGh0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRDYW52YXM6OmNvcGllZEltYWdlIGNvbnN0KToK
KyAgICAgICAgKiBodG1sL0N1c3RvbVBhaW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3VzdG9tUGFpbnRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZh
c0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnRvTWVk
aWFTYW1wbGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUlt
YWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlQnVmZmVyRm9yUGFpbnRp
bmcgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvSW1hZ2VCaXRtYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCaXRtYXA6OmNy
ZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVhdGVQ
cm9taXNlKToKKyAgICAgICAgKiBodG1sL09mZnNjcmVlbkNhbnZhcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpPZmZzY3JlZW5DYW52YXM6OmNvbW1pdFRvUGxhY2Vob2xkZXJDYW52YXMpOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6Y29sb3JTcGFjZSBjb25zdCk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgICogaHRtbC9j
YW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dDo6c2V0T3V0cHV0Qml0bWFwKToKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp0b0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1ByZWRlZmlu
ZWRDb2xvclNwYWNlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFj
ZS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VC
dWZmZXJDYWNoZTo6aW1hZ2VCdWZmZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29u
dHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlVGV4dFRyYWNrUmVwcmVz
ZW50YXRpb25JbWFnZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNQYXR0ZXJu
KToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6
OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5oOgorICAg
ICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGll
bnQ6OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lU25hcHNo
b3R0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXAp
OgorICAgICAgICAqIHBhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzYW1wbGVDb2xvcik6CisgICAgICAgICogcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdCk6CisgICAgICAg
ICogcGxhdGZvcm0vSG9zdFdpbmRvdy5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtQ29s
b3JTcGFjZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29sb3JTcGFjZTo6
Z2V0IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1NjcmVlblByb3BlcnRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVl
blByb3BlcnRpZXM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5EYXRh
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVuRGF0YTo6ZGVjb2RlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bG9yOjp0b0NvbG9yQ29tcG9uZW50c0luQ29sb3JTcGFjZSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ckNvbnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVyQ29sb3JDb21wb25lbnRz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9Db2xvclNwYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29u
Y3JldGVJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0
ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6
ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29s
b3JTcGFjZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKToKKyAgICAgICAgKFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGlu
ZWFyU1JHQik6CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3Bs
YXlQMyk6CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRlc3RpbmF0
aW9uQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAg
KFdlYkNvcmU6Om9wZXJhdG9yIT0pOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpwbGF0Zm9ybUNvbG9y
U3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpk
ZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNvcHlSZWN0VG9CdWZmZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQaXhlbEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlckJhY2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXJCYWNrZW5kOjpjb2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UGl4ZWxCdWZmZXI6
OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJz
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VWSW1hZ2VDR0ltYWdlRm9ybWF0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5oOgorICAgICAgICAo
V2ViQ29yZTo6UGl4ZWxCdWZmZXJGb3JtYXQ6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNm
ZXJCR1JBUGl4ZWxCdWZmZXJUb0lPU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVW
aWRlb1NhbXBsZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxl
OjpSZW1vdGVWaWRlb1NhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBs
ZTo6c3VyZmFjZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlk
ZW9TYW1wbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OmdldFNjcmF0Y2hCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGls
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhU
aWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6Ymx1clNoYWRvd0J1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3U2hhZG93TGF5ZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQ
YWludFJlc3VsdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm9CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9C
YWNrZW5kOjp0cmFuc2Zvcm1Db2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0NvbG9yQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvQ0dDb21w
YXRpYmxlQ29tcG9uZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDR0NvbG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmg6CisgICAgICAgIChXZWJDb3Jl
OjpjYWNoZWRDR0NvbG9yU3BhY2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnBhaW50VG9DYW52YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3VyZmFjZU1h
dGNoZXNQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZVBvb2w6OnRha2VT
dXJmYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29weUNHSW1hZ2VG
b3JFbmNvZGluZyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJD
R0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6
OnNpbmdsZVBpeGVsU29saWRDb2xvciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVy
QmFja2luZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpzdXJmYWNlRnJvbVBvb2wpOgorICAgICAgICAoV2ViQ29y
ZTo6SU9TdXJmYWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVh
dGVGcm9tU2VuZFJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJv
bVN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tSW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tUGl4ZWxCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpJT1N1cmZhY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SU9TdXJmYWNlOjplbnN1cmVQbGF0Zm9ybUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
SU9TdXJmYWNlOjptaWdyYXRlQ29sb3JTcGFjZVRvUHJvcGVydGllcyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1t
OgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OnJlbmRl
clRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJh
bnNmZXJTZXNzaW9uVlQubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVRyYW5zZmVyU2Vzc2lv
blZUOjpjcmVhdGVQaXhlbEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3Yv
UGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZl
ckNvbmZvcm1lckNWOjpjcmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpkZXN0cm95
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkJlZ2luQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmNvbG9yU3BhY2UgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkJlZ2luQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkJl
Z2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkdldFBpeGVsQnVmZmVyOjpHZXRQaXhlbEJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6R2V0UGl4ZWxCdWZmZXI6Om91dHB1dEZvcm1hdCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6R2V0UGl4ZWxCdWZmZXI6OmVuY29kZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6R2V0UGl4ZWxCdWZmZXI6OmRlY29k
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpj
bGlwVG9EcmF3aW5nQ29tbWFuZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURp
c3BsYWNlbWVudE1hcDo6c2V0UmVzdWx0Q29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVUaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRQaXhl
bEJ1ZmZlclRvQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNv
bnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJF
ZmZlY3Q6OmNvcHlDb252ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpjb3B5Q29udmVydGVkUGl4ZWxCdWZmZXJUb0Rlc3RpbmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6cmVxdWlyZXNQaXhlbEJ1ZmZl
ckNvbG9yU3BhY2VDb252ZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6
dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJFZmZlY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6
b3BlcmF0aW5nQ29sb3JTcGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OnNldE9wZXJhdGluZ0NvbG9yU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZm
ZWN0OjpyZXN1bHRDb2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVm
ZmVjdDo6c2V0UmVzdWx0Q29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9Tb3VyY2VHcmFwaGljLmg6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGlj
OjpTb3VyY2VHcmFwaGljKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5H
dGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL1BsYXRmb3JtU2NyZWVuSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2Ny
ZWVuQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0U2NyZWVuUHJvcGVydGll
cyk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6Y29sbGVjdFNjcmVlblByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6
c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6VGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdXaXRoVmlld0lu
dG9Db250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlz
cGxheUNhcHR1cmVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVuRGlzcGxheUNhcHR1
cmVyTWFjOjpjcmVhdGVEaXNwbGF5U3RyZWFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZVZpZGVvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGlt
ZVZpZGVvU291cmNlOjppbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vcGxh
eXN0YXRpb24vUGxhdGZvcm1TY3JlZW5QbGF5U3RhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzY3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGxhdGZvcm1TY3Jl
ZW5XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAg
ICogcGxhdGZvcm0vd3BlL1BsYXRmb3JtU2NyZWVuV1BFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNjcmVlbkNvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaDoK
KyAgICAgICAgKFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGE6OmRlY29k
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NGaWx0ZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ZpbHRlcjo6YnVpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjphbGxvY2F0ZUJh
Y2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6YXBwbHkp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpwYXR0ZXJuRm9yRGVzY3JpcHRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUaGVtZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFN5
c3RlbVByZXZpZXdCYWRnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50UHJvZ3Jlc3NCYXIpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlQ2xpcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNv
dXJjZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmJ1aWxkUHJpbWl0aXZlcyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVNYXNrQW5kU3dhcENvbnRleHRGb3JUZXh0R3JhZGllbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2Up
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250ZW50
SW50b01hc2tJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZU1hc2tlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0
ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3Jl
YXRlVGlsZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmlu
Z0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6
YnVmZmVyRm9yZWdyb3VuZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdD
b250ZXh0Lmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJ
bWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVJbWFnZTo6cGxhdGZv
cm1BcHBseVNvZnR3YXJlKToKKwogMjAyMS0wNS0yMiAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogQ29tcG9uZW50IGF0IGluZGV4
IDEgaXMgMS4wMDAwMDAgYW5kIGlzIGdyZWF0ZXIgdGhhbiB0aGUgYWxsb3dlZCBtYXhpbXVtIDEu
MDAwMDAwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTExOTcsNiArMTE5Nyw3
IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9EYXNo
QXJyYXkuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0RlY29kaW5nT3B0aW9ucy5oCisgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3Bs
YXlSZWZyZXNoTW9uaXRvckNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJl
ZnJlc2hNb25pdG9yRmFjdG9yeS5oCkBAIC0xMjkzLDYgKzEyOTQsNyBAQCBzZXQoV2ViQ29yZV9Q
UklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZm
ZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0LmgKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9QaXhlbEZvcm1hdC5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZv
cm1Db2xvclNwYWNlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2UuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaApJbmRleDogU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
OTUwLDYgKzE5NTAsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAogcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4
VGV4dENvbnRyb2xsZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJ
bWFnZS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdz
RGF0YVNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NSw3ICsyODUsNyBAQCB2b2lkIENs
aXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsCiAKICAgICAgICAgYXV0byBiaXRtYXBJ
bWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICAgICAgYml0bWFwSW1hZ2UtPnNldERh
dGEoV1RGTW92ZShidWZmZXJUb1Nhbml0aXplKSwgdHJ1ZSk7Ci0gICAgICAgIGF1dG8gaW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJpdG1hcEltYWdlLT5zaXplKCksIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CiAgICAgICAgIGlmICghaW1hZ2VCdWZmZXIpIHsKICAgICAgICAgICAgIG1fZGF0YSA9IHsgbnVs
bFN0cmluZygpIH07CiAgICAgICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFN
ZXRhZGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBBcnR3b3Jr
SW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlclRvU2FuaXRpemUgPSBtX2NhY2hlZEltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CiAgICAgYXV0
byBiaXRtYXBJbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICBiaXRtYXBJbWFnZS0+
c2V0RGF0YShXVEZNb3ZlKGJ1ZmZlclRvU2FuaXRpemUpLCB0cnVlKTsKLSAgICBhdXRvIGltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJp
bmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBp
eGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwg
MSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAg
ICAgaWYgKCFpbWFnZUJ1ZmZlcikgewogICAgICAgICBtX2NhbGxiYWNrKG51bGxwdHIpOwogICAg
ICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzkyMCkKKysr
IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MyBAQAorMjAyMS0wNS0yMiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAg
ICAgQ29udmVydCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdy
YXBwaW5nIGEgcGxhdGZvcm0gY29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9y
dHMsIGV0Yy4pCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjYxNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg6CisgICAgICAgIEFkZCBhZGRpb25hbCBT
UEkgZm9yIHdvcmtpbmcgd2l0aCBDR0NvbG9yU3BhY2VSZWZzLgorCiAyMDIxLTA1LTIxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gQWRv
cHQgUUxJdGVtIGluIFdLSW1hZ2VFeHRyYWN0aW9uUHJldmlld0NvbnRyb2xsZXIKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhp
Y3NTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMjQyLDYgKzI0Miw3IEBAIHR5cGVkZWYgdm9pZCAo
KkNHU05vdGlmeVByb2NQdHIpKENHU05vdGkKIAogV1RGX0VYVEVSTl9DX0JFR0lOCiAKK2Jvb2wg
Q0dDb2xvclRyYW5zZm9ybUNvbnZlcnRDb2xvckNvbXBvbmVudHMoQ0dDb2xvclRyYW5zZm9ybVJl
ZiwgQ0dDb2xvclNwYWNlUmVmLCBDR0NvbG9yUmVuZGVyaW5nSW50ZW50LCBjb25zdCBDR0Zsb2F0
IHNyY0NvbXBvbmVudHNbXSwgQ0dGbG9hdCBkc3RDb21wb25lbnRzW10pOwogQ0dDb2xvclJlZiBD
R0NvbG9yVHJhbnNmb3JtQ29udmVydENvbG9yKENHQ29sb3JUcmFuc2Zvcm1SZWYsIENHQ29sb3JS
ZWYsIENHQ29sb3JSZW5kZXJpbmdJbnRlbnQpOwogQ0dDb2xvclRyYW5zZm9ybVJlZiBDR0NvbG9y
VHJhbnNmb3JtQ3JlYXRlKENHQ29sb3JTcGFjZVJlZiwgQ0ZEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0
ZXMpOwogCkBAIC0yOTEsNiArMjkyLDggQEAgQ0dTdHlsZVJlZiBDR0dTdGF0ZUdldFN0eWxlKENH
R1N0YXRlUmVmKQogQ0dTdHlsZVR5cGUgQ0dTdHlsZUdldFR5cGUoQ0dTdHlsZVJlZik7CiBjb25z
dCB2b2lkICpDR1N0eWxlR2V0RGF0YShDR1N0eWxlUmVmKTsKIENHQ29sb3JSZWYgQ0dTdHlsZUdl
dENvbG9yKENHU3R5bGVSZWYpOworYm9vbCBDR0NvbG9yU3BhY2VFcXVhbFRvQ29sb3JTcGFjZShD
R0NvbG9yU3BhY2VSZWYsIENHQ29sb3JTcGFjZVJlZik7CitDRlN0cmluZ1JlZiBDR0NvbG9yU3Bh
Y2VDb3B5SUNDUHJvZmlsZURlc2NyaXB0aW9uKENHQ29sb3JTcGFjZVJlZik7CiAKICNpZiBIQVZF
KENHUEFUSF9HRVRfTlVNQkVSX09GX0VMRU1FTlRTKQogc2l6ZV90IENHUGF0aEdldE51bWJlck9m
RWxlbWVudHMoQ0dQYXRoUmVmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMzk5Niw2ICszOTk2LDcgQEAKIAkJQkMyM0YwREIwREFGRjRBNDAwOUZEQzkxIC8qIEdlbmVy
YXRlZEltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzIzRjBEQTBEQUZGNEE0MDA5RkRDOTEgLyogR2VuZXJhdGVkSW1hZ2UuaCAqLzsgfTsKIAkJ
QkMyNzRCMkYxNDBFQkVCMjAwRUFERkE2IC8qIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNzRCMkUxNDBF
QkVCMjAwRUFERkE2IC8qIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oICovOyB9OwogCQlCQzJD
QkY0RTE0MEYxQUJEMDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyQ0JGNEIxNDBGMUE2NTAwMzg3
OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuaCAqLzsgfTsKKwkJQkMyQ0NBMTAyNjU1RERCMjAw
QjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyQ0NBMEUyNjU1RERCMjAwQjhDMDM1IC8qIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUJDMzA1QzdBMEMwNzZCQjMwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVt
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMw
NUM3ODBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudC5oICovOyB9OwogCQlC
QzM0OEJENDBEQjdGODA0MDA0QUJBQjkgLyogSlNYTUxIdHRwUmVxdWVzdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzNDhCRDIwREI3RjgwNDAwNEFC
QUI5IC8qIEpTWE1MSHR0cFJlcXVlc3QuaCAqLzsgfTsKIAkJQkMzNDhCRDQwREI3RjgwNDAwNEFC
QUJBIC8qIFdlYkNvcmVKU0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzM0OEJEMjBEQjdGODA0MDA0QUJBQkEgLyogV2ViQ29yZUpTQnVp
bHRpbnMuaCAqLzsgfTsKQEAgLTQwMDcsNiArNDAwOCw3IEBACiAJCUJDM0JFOTk5MEU5QzFFNUQw
MDgzNTU4OCAvKiBSZW5kZXJTY3JvbGxiYXJUaGVtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzQkU5OTgwRTlDMUU1RDAwODM1NTg4IC8qIFJlbmRl
clNjcm9sbGJhclRoZW1lLmggKi87IH07CiAJCUJDM0MzOUI3MEMwRDNEOEQwMDVGNEQ3QSAvKiBK
U01lZGlhTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkMzQzM5QjUwQzBEM0Q4RDAwNUY0RDdBIC8qIEpTTWVkaWFMaXN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMzRDg1QkMxQzBFMkU3QTAw
RDNCNjEwIC8qIEpTSFRNTFBpY3R1cmVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzgwOEIxMzFDMEUyQjM1MDA2NkZENkIgLyogSlNIVE1M
UGljdHVyZUVsZW1lbnQuaCAqLzsgfTsKKwkJQkMzRTYyNDMyNjU5NzkxODAwNTQ4QUNEIC8qIFBs
YXRmb3JtQ29sb3JTcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMzRTYyNDIyNjU5NzkxNzAwNTQ4QUNEIC8qIFBsYXRmb3JtQ29sb3JTcGFjZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDNDM2
OEU4MEMyMjZFMzIwMDVFRkI1RiAvKiBSZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzQzNjhFNzBDMjI2RTMyMDA1RUZCNUYgLyogUmVjdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDNDZDMUZE
MEMwRERDOEYwMDIwQ0ZDMyAvKiBKU0NTU0ZvbnRGYWNlUnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM0NkMxRjMwQzBEREM4RjAwMjBDRkMzIC8q
IEpTQ1NTRm9udEZhY2VSdWxlLmggKi87IH07CiAJCUJDNDZDMUZGMEMwRERDOEYwMDIwQ0ZDMyAv
KiBKU0NTU0ltcG9ydFJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDNDZDMUY1MEMwRERDOEYwMDIwQ0ZDMyAvKiBKU0NTU0ltcG9ydFJ1bGUuaCAq
LzsgfTsKQEAgLTE0MTM0LDYgKzE0MTM2LDggQEAKIAkJQkMyOTkzNUMxN0ExREQ1ODAwQkNFODgw
IC8qIENvbG9ySW5wdXRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENvbG9ySW5wdXRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMy
Q0JGNEIxNDBGMUE2NTAwMzg3OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJHTENvbnRleHRFdmVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQzJDQkY3QTE0MEYxRDU4MDAzODc5QkUgLyogSlNXZWJHTENv
bnRleHRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dl
YkdMQ29udGV4dEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQ0NB
MEUyNjU1RERCMjAwQjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQkMyQ0NBMEYyNjU1RERCMjAwQjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQzJFRDU1NDBDNkI5QkQzMDA5MjBCRkYgLyogSlNFbGVtZW50
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRWxlbWVu
dEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMkVENkJCMEM2QkQy
RjAwMDkyMEJGRiAvKiBKU0F0dHJDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNBdHRyQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkMzMDVDNzcwQzA3NkJCMzAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1lbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTE9iamVjdEVsZW1lbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQxNTcsNiArMTQxNjEsNyBAQAog
CQlCQzNCRTlBQTBFOUMyNDIwMDA4MzU1ODggLyogUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJTY3JvbGxiYXJQYXJ0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzQzM5QjQwQzBEM0Q4RDAwNUY0RDdB
IC8qIEpTTWVkaWFMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU01lZGlhTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDM0MzOUI1
MEMwRDNEOEQwMDVGNEQ3QSAvKiBKU01lZGlhTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNNZWRpYUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QkMzRTYyNDIyNjU5NzkxNzAwNTQ4QUNEIC8qIFBsYXRmb3JtQ29sb3JTcGFjZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUNvbG9yU3BhY2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM0MzY4RTcwQzIyNkUzMjAwNUVGQjVGIC8qIFJlY3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlY3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkM0NkMxRUQwQzBEREJERjAwMjBDRkMzIC8qIEpTQ1NTUnVsZUN1c3Rv
bS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDU1NSdWxlQ3Vz
dG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM0NkMxRjIwQzBEREM4RjAw
MjBDRkMzIC8qIEpTQ1NTRm9udEZhY2VSdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0NTU0ZvbnRGYWNlUnVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yNjkyNSw2ICsyNjkzMCw4IEBACiAJCQkJMkQyRkMwNTUxNDYwQ0Q2RjAwMjYz
NjMzIC8qIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmggKi8sCiAJCQkJQThDQjQxMDIwRTg1QjhB
NTAwMzJDNEYwIC8qIERhc2hBcnJheS5oICovLAogCQkJCTU1NTEzMDAwMUU3Q0NDQ0EwMEE2OUUz
OCAvKiBEZWNvZGluZ09wdGlvbnMuaCAqLywKKwkJCQlCQzJDQ0EwRjI2NTVEREIyMDBCOEMwMzUg
LyogRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcCAqLywKKwkJCQlCQzJDQ0EwRTI2NTVEREIyMDBC
OEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmggKi8sCiAJCQkJNDlGQzdBNEYxNDQ0QUY1
RjAwQTVEODY0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAgKi8sCiAJCQkJNDlBRjJENjgx
NDQzNUQwNTAwMTZBNzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5oICovLAogCQkJCTJEMjlF
Q0MxMTkyRUNDODMwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuY3BwICov
LApAQCAtMjcxMDEsNiArMjcxMDgsNyBAQAogCQkJCUJDNjM1RThCMjY0QzJDQUUwMDBFRjMzQSAv
KiBQaXhlbEJ1ZmZlckZvcm1hdC5oICovLAogCQkJCUJDNjM1RTkwMjY0QzQ2OUYwMDBFRjMzQSAv
KiBQaXhlbEZvcm1hdC5jcHAgKi8sCiAJCQkJQkNBNTU5MTIyNjNEQkQ3OTAwN0YxOUIzIC8qIFBp
eGVsRm9ybWF0LmggKi8sCisJCQkJQkMzRTYyNDIyNjU5NzkxNzAwNTQ4QUNEIC8qIFBsYXRmb3Jt
Q29sb3JTcGFjZS5oICovLAogCQkJCTcyNkQ1NkUxMjUzQUUwNDMwMDAyRUY5MCAvKiBQbGF0Zm9y
bUltYWdlLmggKi8sCiAJCQkJNzJCQUMzQTYyM0UxNzMyODAwOEQ3NDFDIC8qIFBsYXRmb3JtSW1h
Z2VCdWZmZXIuaCAqLywKIAkJCQk1NTA2NDBBRDI0MDc1NkRBMDBBQUUwNDUgLyogUGxhdGZvcm1J
bWFnZUJ1ZmZlckJhY2tlbmQuaCAqLywKQEAgLTMyMjMwLDYgKzMyMjM4LDcgQEAKIAkJCQk5NDc5
NDkyNTFFMDMwOEFGMDAwMThEODUgLyogRGVwcmVjYXRlZENTU09NVmFsdWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk0Nzk0OTNEMUUwNDYzQjYwMDAxOEQ4NSAvKiBEZXByZWNhdGVkQ1NTT01WYWx1
ZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDQkQxMjlFMUY5OEI5MEUwMDEyN0QyOSAvKiBE
ZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMkNDQTEwMjY1
NUREQjIwMEI4QzAzNSAvKiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxMTIyM0M1MjYwMzU2N0QwMEIwQTBCNiAvKiBEZXRhY2hlZFJUQ0RhdGFDaGFubmVsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBN0M5QUJGOTEzNTdBM0JGMDBGNTUwM0YgLyogRGV0YWlsc01h
cmtlckNvbnRyb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRUQ3NzhEMUJFMzI5NDAwMERDMTc5
MSAvKiBEZXZpY2UuaCBpbiBIZWFkZXJzICovLApAQCAtMzIyODEsNiArMzIyOTAsNyBAQAogCQkJ
CTFDRThEMTI3MjYxODVDMEUwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1RkJENTFDM0RENTFFMDAwN0EyQ0EgLyogRGlz
cGxheUxpc3RJdGVtcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQzNzdENTcyNTUxQzlDNjAwODBB
QkZFIC8qIERpc3BsYXlMaXN0SXRlbVR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDM0U2MjQz
MjY1OTc5MTgwMDU0OEFDRCAvKiBQbGF0Zm9ybUNvbG9yU3BhY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFDRThEMTJFMjYxODYxQzQwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZXJhdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkU1RkJENzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RS
ZWNvcmRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFNUZCRDkxQzNERDUxRTAwMDdBMkNBIC8q
IERpc3BsYXlMaXN0UmVwbGF5ZXIuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgyLDcgKzEwODIsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUGl4ZWxCdWZmZXJG
b3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4
ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICAgICAg
UGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVs
dGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSB9OwogICAgICAgICBjb25zdCBJbnRTaXplJiBsb2dpY2FsU2l6ZSA9IGJ1ZmZlci0+bG9naWNh
bFNpemUoKTsKICAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGJ1ZmZlci0+Z2V0UGl4ZWxCdWZm
ZXIoZm9ybWF0LCB7IEludFBvaW50Ojp6ZXJvKCksIGxvZ2ljYWxTaXplIH0pOwogICAgICAgICBp
ZiAoIXBpeGVsQnVmZmVyKSB7CkBAIC0zMTg3LDcgKzMxODcsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgfQogCi0gICAgICAgIFBpeGVsQnVmZmVy
Rm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIFBp
eGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgICAg
IFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11
bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCkgfTsKICAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUo
Zm9ybWF0LCBpbWFnZURhdGFTaXplLCBhcnJheUJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKICAg
ICAgICAgaWYgKCFwaXhlbEJ1ZmZlcikgewogICAgICAgICAgICAgZmFpbCgpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAkocmV2aXNpb24gMjc3OTE5
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTYsNyArMTE2LDcgQEAgUmVmUHRyPEltYWdlPiBDU1NGaWx0ZXJJbWFnZVZh
bHVlOjppbWFnZQogCiAgICAgLy8gVHJhbnNmb3JtIEltYWdlIGludG8gSW1hZ2VCdWZmZXIuCiAg
ICAgLy8gRklYTUUgKDE0OTQyNCk6IFRoaXMgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRp
b25hbGx5IHVuYWNjZWxlcmF0ZWQuCi0gICAgYXV0byB0ZXh0dXJlID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byB0ZXh0dXJlID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAg
ICBpZiAoIXRleHR1cmUpCiAgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDcgQEAgSW1hZ2UqIEN1c3RvbVBhaW50Q2FudmFzOjpj
b3BpZWRJbWFnZSgpIAogICAgIGlmICghd2lkdGgoKSB8fCAhaGVpZ2h0KCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgbV9jb3BpZWRCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KHNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgsIG51bGxwdHIpOworICAgIG1fY29waWVk
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6
QkdSQTgsIG51bGxwdHIpOwogICAgIGlmICghbV9jb3BpZWRCdWZmZXIpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50SW1hZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRJbWFnZS5j
cHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRJ
bWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIEN1c3RvbVBh
aW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoCiAgICAgYWRqdXN0ZWRQYXR0ZXJuQ1RNLnNjYWxl
KDEuMCAvIHhTY2FsZSwgMS4wIC8geVNjYWxlKTsKICAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUo
eFNjYWxlLCB5U2NhbGUpOwogCi0gICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QiwgZGVzdENvbnRleHQpOworICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNv
bXBhdGlibGVCdWZmZXIoYWRqdXN0ZWRTaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgZGVzdENvbnRleHQpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm47CiAgICAg
ZG9DdXN0b21QYWludChidWZmZXItPmNvbnRleHQoKSwgYWRqdXN0ZWRTaXplKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODI1LDcgKzgyNSw3IEBAIFJlZlB0cjxNZWRpYVNhbXBsZT4gSFRNTENhbnZhc0Vs
ZW1lbnQ6OnQKICAgICAvLyBGSVhNRTogVGhpcyBjYW4gbGlrZWx5IGJlIG9wdGltaXplZCBxdWl0
ZSBhIGJpdCwgZXNwZWNpYWxseSBpbiB0aGUgY2FzZXMgd2hlcmUKICAgICAvLyB0aGUgSW1hZ2VC
dWZmZXIgaXMgYmFja2VkIGJ5IEdQVSBtZW1vcnkgYWxyZWFkeSBhbmQvb3IgaXMgaW4gdGhlIEdQ
VSBwcm9jZXNzIGJ5CiAgICAgLy8gc3BlY2lhbGl6aW5nIHRvTWVkaWFTYW1wbGUoKSBpbiBJbWFn
ZUJ1ZmZlckJhY2tlbmQgdG8gbm90IHVzZSBnZXRQaXhlbEJ1ZmZlcigpLgotICAgIGF1dG8gcGl4
ZWxCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoeyBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCIH0sIHsgeyB9LCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSB9KTsK
KyAgICBhdXRvIHBpeGVsQnVmZmVyID0gaW1hZ2VCdWZmZXItPmdldFBpeGVsQnVmZmVyKHsgQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6QkdSQTgs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH0sIHsgeyB9LCBpbWFnZUJ1ZmZlci0+bG9n
aWNhbFNpemUoKSB9KTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIApAQCAtOTU1LDcgKzk1NSw3IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0
ZUltYWdlQnVmZmUKICAgICBhdXRvIFtjb2xvclNwYWNlLCBwaXhlbEZvcm1hdF0gPSBbJl0gewog
ICAgICAgICBpZiAobV9jb250ZXh0KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6cGFpciB7IG1f
Y29udGV4dC0+Y29sb3JTcGFjZSgpLCBtX2NvbnRleHQtPnBpeGVsRm9ybWF0KCkgfTsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6cGFpciB7IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxG
b3JtYXQ6OkJHUkE4IH07CisgICAgICAgIHJldHVybiBzdGQ6OnBhaXIgeyBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4IH07CiAgICAgfSgpOwogCiAgICAg
c2V0SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIHJlbmRlcmluZ01vZGUs
IHVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJwb3NlOjpDYW52YXMsIDEsIGNvbG9yU3BhY2Us
IHBpeGVsRm9ybWF0LCBob3N0V2luZG93KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxWaWRlb0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MSw3ICsyODEsNyBA
QCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6Om1lZGlhUGxheWVyRmlyc3RWCiAgICAgICAgIHJlbmRl
cmVyLT51cGRhdGVGcm9tRWxlbWVudCgpOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IEhUTUxW
aWRlb0VsZW1lbnQ6OmNyZWF0ZUJ1ZmZlckZvclBhaW50aW5nKGNvbnN0IEZsb2F0U2l6ZSYgc2l6
ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CitSZWZQdHI8SW1hZ2VCdWZm
ZXI+IEhUTUxWaWRlb0VsZW1lbnQ6OmNyZWF0ZUJ1ZmZlckZvclBhaW50aW5nKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KSBjb25zdAog
ewogICAgIGF1dG8qIGhvc3RXaW5kb3cgPSBkb2N1bWVudCgpLnZpZXcoKSAmJiBkb2N1bWVudCgp
LnZpZXcoKS0+cm9vdCgpID8gZG9jdW1lbnQoKS52aWV3KCktPnJvb3QoKS0+aG9zdFdpbmRvdygp
IDogbnVsbHB0cjsKICAgICBhdXRvIHNob3VsZFVzZURpc3BsYXlMaXN0ID0gZG9jdW1lbnQoKS5z
ZXR0aW5ncygpLmRpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWQoKSA/IFNob3VsZFVzZURpc3BsYXlM
aXN0OjpZZXMgOiBTaG91bGRVc2VEaXNwbGF5TGlzdDo6Tm87CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEyICszMywx
MiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTsKIGNsYXNzIEhUTUxJbWFnZUxvYWRlcjsKIGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgUmVu
ZGVyVmlkZW87CiBjbGFzcyBQaWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXI7CiAKLWVudW0gY2xhc3Mg
RGVzdGluYXRpb25Db2xvclNwYWNlIDogdWludDhfdDsKIGVudW0gY2xhc3MgUGl4ZWxGb3JtYXQg
OiB1aW50OF90OwogZW51bSBjbGFzcyBSZW5kZXJpbmdNb2RlIDogYm9vbDsKIApAQCAtNzIsNyAr
NzIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpIG92ZXJy
aWRlOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUJ1ZmZlckZvclBh
aW50aW5nKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0OworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRl
QnVmZmVyRm9yUGFpbnRpbmcoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiwgUGl4ZWxGb3JtYXQpIGNvbnN0OwogCiAgICAgLy8gVXNl
ZCBieSBjYW52YXMgdG8gZ2FpbiByYXcgcGl4ZWwgYWNjZXNzCiAgICAgdm9pZCBwYWludEN1cnJl
bnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQs
MTIgKzg0LDEyIEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCaXRtYXA6OmNyZWF0ZUkKICAg
ICAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCk7CiAgICAgICAgIGlmIChkb2N1bWVudC52aWV3KCkgJiYgZG9jdW1lbnQudmlldygp
LT5yb290KCkpIHsKICAgICAgICAgICAgIGF1dG8gaG9zdFdpbmRvdyA9IGRvY3VtZW50LnZpZXco
KS0+cm9vdCgpLT5ob3N0V2luZG93KCk7Ci0gICAgICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6Tm8sIFJl
bmRlcmluZ1B1cnBvc2U6OkNhbnZhcywgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCwgaG9zdFdpbmRvdyk7CisgICAgICAgICAg
ICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCBTaG91bGRV
c2VEaXNwbGF5TGlzdDo6Tm8sIFJlbmRlcmluZ1B1cnBvc2U6OkNhbnZhcywgcmVzb2x1dGlvblNj
YWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBo
b3N0V2luZG93KTsKICAgICAgICAgfQogICAgIH0KIAogICAgIC8vIEZJWE1FIDxodHRwczovL3dl
YmtpdC5vcmcvYi8yMTg0ODI+IEVuYWJsZSB3b3JrZXIgYmFzZWQgSW1hZ2VCaXRtYXAgYW5kIE9m
ZnNjcmVlbkNhbnZhcyBkcmF3aW5nIHRvIHVzZSBHUFUgUHJvY2VzcyByZW5kZXJpbmcKLSAgICBy
ZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9u
U2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
KyAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCByZXNv
bHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6
QkdSQTgpOwogfQogCiB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEltYWdlQml0bWFwOjpTb3VyY2Um
JiBzb3VyY2UsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIEltYWdlQml0bWFwOjpQcm9t
aXNlJiYgcHJvbWlzZSkKQEAgLTUwNCw3ICs1MDQsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVh
dGVQcm9taXNlKFNjcmlwdEV4CiAgICAgYXV0byBvdXRwdXRTaXplID0gb3V0cHV0U2l6ZUZvclNv
dXJjZVJlY3RhbmdsZShzb3VyY2VSZWN0YW5nbGUsIG9wdGlvbnMpOwogCiAgICAgLy8gRklYTUU6
IEFkZCBzdXBwb3J0IGZvciBjb2xvciBzcGFjZXMgLyBwaXhlbCBmb3JtYXRzIHRvIEltYWdlQml0
bWFwLgotICAgIGF1dG8gYml0bWFwRGF0YSA9IHZpZGVvLT5jcmVhdGVCdWZmZXJGb3JQYWludGlu
ZyhvdXRwdXRTaXplLCBidWZmZXJSZW5kZXJpbmdNb2RlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBiaXRtYXBEYXRhID0gdmlkZW8t
PmNyZWF0ZUJ1ZmZlckZvclBhaW50aW5nKG91dHB1dFNpemUsIGJ1ZmZlclJlbmRlcmluZ01vZGUs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAg
IGlmICghYml0bWFwRGF0YSkgewogICAgICAgICByZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZmZXIo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgIXRhaW50c09yaWdpbihzY3JpcHRFeGVjdXRpb25Db250
ZXh0LnNlY3VyaXR5T3JpZ2luKCksICp2aWRlbyksIFdURk1vdmUocHJvbWlzZSkpOwogICAgICAg
ICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCShy
ZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1MSwxNCArNDUxLDE0IEBAIHZvaWQgT2Zmc2NyZWVuQ2Fu
dmFzOjpjb21taXRUb1BsYWNlaG9sZGUKICAgICAgICAgbV9jb250ZXh0LT5wYWludFJlbmRlcmlu
Z1Jlc3VsdHNUb0NhbnZhcygpOwogCiAgICAgaWYgKG1fcGxhY2Vob2xkZXJEYXRhLT5idWZmZXJQ
aXBlU291cmNlKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyQ29weSA9IGltYWdlQnVmZmVyLT5jb3B5
UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2Fs
U2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBpbWFnZUJ1ZmZlci0+Y29udGV4
dCgpKTsKKyAgICAgICAgYXV0byBidWZmZXJDb3B5ID0gaW1hZ2VCdWZmZXItPmNvcHlSZWN0VG9C
dWZmZXIoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkp
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7
CiAgICAgICAgIGlmIChidWZmZXJDb3B5KQogICAgICAgICAgICAgbV9wbGFjZWhvbGRlckRhdGEt
PmJ1ZmZlclBpcGVTb3VyY2UtPmhhbmRsZShXVEZNb3ZlKGJ1ZmZlckNvcHkpKTsKICAgICB9CiAK
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wbGFjZWhvbGRlckRhdGEtPmJ1ZmZlckxvY2sgfTsKICAg
ICBib29sIHNob3VsZFB1c2hCdWZmZXIgPSAhbV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21t
aXRCdWZmZXI7Ci0gICAgbV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRCdWZmZXIgPSBp
bWFnZUJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFn
ZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgaW1h
Z2VCdWZmZXItPmNvbnRleHQoKSk7CisgICAgbV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21t
aXRCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihGbG9hdFJlY3QoRmxvYXRQ
b2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKICAgICBpZiAobV9wbGFjZWhvbGRl
ckRhdGEtPnBlbmRpbmdDb21taXRCdWZmZXIgJiYgc2hvdWxkUHVzaEJ1ZmZlcikKICAgICAgICAg
cHVzaEJ1ZmZlclRvUGxhY2Vob2xkZXIoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUg
IkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMu
aCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eVBhcnNlcldvcmtlclNhZmUuaCIKLSNpbmNsdWRlICJD
b2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiR3JhZGllbnQuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZl
ci5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlICJDYWNo
ZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNhbnZhc1BhdHRlcm4uaCIKLSNpbmNsdWRlICJDb2xvclNw
YWNlLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiSFRN
TENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpAQCAtOTAsNyArOTAsNyBAQCBQaXhlbEZvcm1hdCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0OjpwaXhlCiAKIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0Ojpjb2xvclNwYWNlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCOworICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKTsKIH0KIAogYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojp3b3VsZFRhaW50T3Jp
Z2luKGNvbnN0IENhbnZhc1BhdHRlcm4qIHBhdHRlcm4pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCShyZXZpc2lvbiAy
Nzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEzICszNywxMyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDYW52YXNQYXR0ZXJuOworY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNl
OwogY2xhc3MgSFRNTENhbnZhc0VsZW1lbnQ7CiBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogY2xh
c3MgSFRNTFZpZGVvRWxlbWVudDsKIGNsYXNzIEltYWdlQml0bWFwOwogY2xhc3MgVHlwZWRPTUNT
U0ltYWdlVmFsdWU7CiBjbGFzcyBXZWJHTE9iamVjdDsKLWVudW0gY2xhc3MgRGVzdGluYXRpb25D
b2xvclNwYWNlIDogdWludDhfdDsKIGVudW0gY2xhc3MgUGl4ZWxGb3JtYXQgOiB1aW50OF90Owog
CiBjbGFzcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0IDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0Nv
bnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdl
Qml0bWFwUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRl
eHQ6OnNldE91dAogICAgICAgICAvLyBvbmx5IHJlYXNvbiBJIGNhbiB0aGluayBvZiBpcyB0b0Rh
dGFVUkwoKSwgYnV0IHRoYXQgZG9lc24ndCBzZWVtIGxpa2UKICAgICAgICAgLy8gYSBnb29kIGVu
b3VnaCBhcmd1bWVudCB0byB3YXN0ZSBtZW1vcnkuCiAKLSAgICAgICAgY2FudmFzKCktPnNldElt
YWdlQnVmZmVyQW5kTWFya0RpcnR5KEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKGNhbnZh
cygpLT53aWR0aCgpLCBjYW52YXMoKS0+aGVpZ2h0KCkpLCBidWZmZXJSZW5kZXJpbmdNb2RlLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCkpOworICAg
ICAgICBjYW52YXMoKS0+c2V0SW1hZ2VCdWZmZXJBbmRNYXJrRGlydHkoSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShGbG9hdFNpemUoY2FudmFzKCktPndpZHRoKCksIGNhbnZhcygpLT5oZWlnaHQoKSksIGJ1
ZmZlclJlbmRlcmluZ01vZGUsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhl
bEZvcm1hdDo6QkdSQTgpKTsKIAogICAgICAgICAvLyAxLjQuIFNldCB0aGUgb3V0cHV0IGJpdG1h
cCdzIG9yaWdpbi1jbGVhbiBmbGFnIHRvIHRydWUuCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5jcHAJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlByZWRlZmluZWRDb2xvclNwYWNlLmgiCiAKLSNpbmNsdWRlICJDb2xvclNw
YWNlLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM1LDMzICszNSwyNiBAQCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgdG9EZXN0aW5hdGlvbkNvbG9yCiB7CiAgICAgc3dpdGNoIChj
b2xvclNwYWNlKSB7CiAgICAgY2FzZSBQcmVkZWZpbmVkQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAg
ICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjsKKyAgICAgICAgcmV0dXJuIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOwogI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xP
Ul9TUEFDRV9ESVNQTEFZX1AzKQogICAgIGNhc2UgUHJlZGVmaW5lZENvbG9yU3BhY2U6OkRpc3Bs
YXlQMzoKLSAgICAgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxheVAzOwor
ICAgICAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDMoKTsKICNlbmRp
ZgogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0I7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpOwogfQogCi1PcHRpb25hbDxQcmVkZWZpbmVkQ29sb3JTcGFjZT4gdG9QcmVkZWZpbmVk
Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkKK09wdGlvbmFsPFBy
ZWRlZmluZWRDb2xvclNwYWNlPiB0b1ByZWRlZmluZWRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkKIHsKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsK
LSAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjoKKyAgICBpZiAoY29sb3JTcGFj
ZSA9PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSkKICAgICAgICAgcmV0dXJuIFByZWRl
ZmluZWRDb2xvclNwYWNlOjpTUkdCOwotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFD
RV9MSU5FQVJfU1JHQikKLSAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JH
QjoKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSNlbmRpZgogI2lmIEVOQUJMRShERVNU
SU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpEaXNwbGF5UDM6CisgICAgaWYgKGNvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xv
clNwYWNlOjpEaXNwbGF5UDMoKSkKICAgICAgICAgcmV0dXJuIFByZWRlZmluZWRDb2xvclNwYWNl
OjpEaXNwbGF5UDM7CiAjZW5kaWYKLSAgICB9CiAKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmgJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1l
bnVtIGNsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7CitjbGFzcyBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U7CiAKIGVudW0gY2xhc3MgUHJlZGVmaW5lZENvbG9yU3BhY2UgewogICAg
IFNSR0IKQEAgLTQwLDcgKzQwLDcgQEAgZW51bSBjbGFzcyBQcmVkZWZpbmVkQ29sb3JTcGFjZSB7
CiB9OwogCiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgdG9EZXN0aW5hdGlvbkNvbG9yU3BhY2UoUHJl
ZGVmaW5lZENvbG9yU3BhY2UpOwotT3B0aW9uYWw8UHJlZGVmaW5lZENvbG9yU3BhY2U+IHRvUHJl
ZGVmaW5lZENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlKTsKK09wdGlvbmFsPFByZWRl
ZmluZWRDb2xvclNwYWNlPiB0b1ByZWRlZmluZWRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYpOwogCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCShyZXZpc2lvbiAyNzc5
MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYyMyw3ICs3NjIzLDcgQEAgSW1hZ2VCdWZmZXIq
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OgogICAgIH0KIAogICAgIC8vIEZJWE1FICgxNDk0
MjMpOiBTaG91bGQgdGhpcyBJbWFnZUJ1ZmZlciBiZSB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVy
YXRlZD8KLSAgICBhdXRvIHRlbXAgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIHRlbXAgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNp
emUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghdGVtcCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgQVNTRVJUKG1fYnVmZmVycy5zaXplKCkgPiAwKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5l
ckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250
YWluZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDE4LDcgKzQxOCw3IEBAIFJlZlB0
cjxJbWFnZT4gTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGEKICAgICBJbnRSZWN0IHBhaW50aW5n
UmVjdCA9IEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPnNpemUoKSk7CiAKICAgICAvLyBGSVhN
RSAoMTQ5NDIyKTogVGhpcyBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlvbmFsbHkgdW5h
Y2NlbGVyYXRlZC4KLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUocGFpbnRp
bmdSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgZGV2aWNlU2NhbGVG
YWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
KyAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUocGFpbnRpbmdSZWN0LnNpemUo
KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgZGV2aWNlU2NhbGVGYWN0b3IsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICgh
YnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTQ5LDcgKzExNDksNyBAQCBpbnQgSW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEo
RHVwbGljCiAgICAgICAgICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gaW1hZ2VF
bGVtZW50LT5jYWNoZWRJbWFnZSgpKSB7CiAgICAgICAgICAgICAgICAgSW1hZ2UqIGltYWdlID0g
Y2FjaGVkSW1hZ2UtPmltYWdlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGltYWdlICYmIGltYWdl
ICE9ICZJbWFnZTo6bnVsbEltYWdlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBpbWFn
ZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJh
dGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4
KTsKICAgICAgICAgICAgICAgICAgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5kcmF3SW1hZ2Uo
KmltYWdlLCBGbG9hdFBvaW50KDAsIDApKTsKICAgICAgICAgICAgICAgICAgICAgZGF0YVVSTCA9
IGltYWdlQnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyIpOwogICAgICAgICAgICAgICAgIH0K
QEAgLTExNjMsNyArMTE2Myw3IEBAIGludCBJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YShE
dXBsaWMKIAogICAgICAgICAgICAgdW5zaWduZWQgdmlkZW9XaWR0aCA9IHZpZGVvRWxlbWVudC0+
dmlkZW9XaWR0aCgpOwogICAgICAgICAgICAgdW5zaWduZWQgdmlkZW9IZWlnaHQgPSB2aWRlb0Vs
ZW1lbnQtPnZpZGVvSGVpZ2h0KCk7Ci0gICAgICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUodmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpLCBSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Is
IFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUodmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpLCBSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgICAgIGlmIChpbWFnZUJ1ZmZlcikgewog
ICAgICAgICAgICAgICAgIHZpZGVvRWxlbWVudC0+cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQo
aW1hZ2VCdWZmZXItPmNvbnRleHQoKSwgRmxvYXRSZWN0KDAsIDAsIHZpZGVvV2lkdGgsIHZpZGVv
SGVpZ2h0KSk7CiAgICAgICAgICAgICAgICAgZGF0YVVSTCA9IGltYWdlQnVmZmVyLT50b0RhdGFV
UkwoImltYWdlL3BuZyIpOwpAQCAtMTIwMCw3ICsxMjAwLDcgQEAgaW50IEluc3BlY3RvckNhbnZh
czo6aW5kZXhGb3JEYXRhKER1cGxpYwogICAgICAgICAgICAgaWYgKGF1dG8qIGNhY2hlZEltYWdl
ID0gY3NzSW1hZ2VWYWx1ZS0+aW1hZ2UoKSkgewogICAgICAgICAgICAgICAgIGF1dG8qIGltYWdl
ID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGltYWdlICYmIGlt
YWdlICE9ICZJbWFnZTo6bnVsbEltYWdlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBp
bWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJH
UkE4KTsKICAgICAgICAgICAgICAgICAgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5kcmF3SW1h
Z2UoKmltYWdlLCBGbG9hdFBvaW50KDAsIDApKTsKICAgICAgICAgICAgICAgICAgICAgZGF0YVVS
TCA9IGltYWdlQnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyIpOwogICAgICAgICAgICAgICAg
IH0KQEAgLTE0NDEsNyArMTQ0MSw3IEBAIFJlZjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4g
SW5zcGVjdG8KIHsKICAgICBhdXRvJiB0aWxlSW1hZ2UgPSBjYW52YXNQYXR0ZXJuLnBhdHRlcm4o
KS50aWxlSW1hZ2UoKTsKICAgICBGbG9hdFJlY3QgcmVjdCA9IHsgeyB9LCB0aWxlSW1hZ2Uuc2l6
ZSgpIH07Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGlsZUlt
YWdlLnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gaW1hZ2VCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRpbGVJbWFnZS5zaXplKCksIFJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOwogICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkuZHJhd05hdGl2ZUltYWdl
KHRpbGVJbWFnZSwgdGlsZUltYWdlLnNpemUoKSwgcmVjdCwgcmVjdCk7CiAKICAgICBTdHJpbmcg
cmVwZWF0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjksNyAr
NTI5LDcgQEAgdm9pZCBDaHJvbWU6OnNldEN1cnNvckhpZGRlblVudGlsTW91c2VNbwogICAgIG1f
Y2xpZW50LnNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3ZlcyhoaWRkZW5VbnRpbE1vdXNlTW92
ZXMpOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IENocm9tZTo6Y3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIFJlbmRl
cmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CitSZWZQ
dHI8SW1hZ2VCdWZmZXI+IENocm9tZTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UgcHVy
cG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
IGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KSBjb25zdAogewogICAgIHJldHVy
biBtX2NsaWVudC5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCBwdXJwb3Nl
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWUuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRDdXJzb3IoY29uc3QgQ3Vyc29yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDdXJzb3JI
aWRkZW5VbnRpbE1vdXNlTW92ZXMoYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8SW1hZ2VC
dWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUs
IFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xv
clNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEltYWdlQnVm
ZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBS
ZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYsIFBpeGVsRm9ybWF0KSBjb25zdCBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShX
RUJHTCkKICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29udGV4
dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpIGNvbnN0IG92ZXJyaWRlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzks
NyArMzM5LDcgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgRGlzcGxheVJlZnJlc2hNb25p
dG9yRmFjdG9yeSogZGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeSgpIGNvbnN0IHsgcmV0dXJu
IG51bGxwdHI7IH0KIAotICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3Nl
LCBmbG9hdCwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3QgeyByZXR1
cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3Nl
LCBmbG9hdCwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUGl4ZWxGb3JtYXQpIGNvbnN0
IHsgcmV0dXJuIG51bGxwdHI7IH0KIAogI2lmIEVOQUJMRShXRUJHTCkKICAgICB2aXJ0dWFsIFJl
ZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQpIGNv
bnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVT
bmFwc2hvdHRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVT
bmFwc2hvdHRpbmcuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lU25hcHNob3R0aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw3IEBA
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RGcmFtZVJlY3RXaXQKICAgICBpZiAob3B0aW9u
cyAmIFNuYXBzaG90T3B0aW9uc1BhaW50V2l0aEludGVncmFsU2NhbGVGYWN0b3IpCiAgICAgICAg
IHNjYWxlRmFjdG9yID0gY2VpbGYoc2NhbGVGYWN0b3IpOwogCi0gICAgYXV0byBidWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIHNjYWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGlt
YWdlUmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIHNjYWxlRmFjdG9y
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAg
ICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYnVmZmVyLT5jb250
ZXh0KCkudHJhbnNsYXRlKC1pbWFnZVJlY3QueCgpLCAtaW1hZ2VSZWN0LnkoKSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb2xvclNhbXBsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHAJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgT3B0aW9uYWw8TGFiPGZsb2F0Pj4gc2FtcGxl
Q29sb3IoCiAgICAgaWYgKCFzbmFwc2hvdCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
IAotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzbmFwc2hvdC0+Z2V0UGl4ZWxCdWZmZXIoeyBBbHBo
YVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH0sIHsgeyB9LCBzbmFwc2hvdC0+bG9naWNhbFNp
emUoKSB9KTsKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gc25hcHNob3QtPmdldFBpeGVsQnVmZmVy
KHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6
QkdSQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH0sIHsgeyB9LCBzbmFwc2hvdC0+
bG9naWNhbFNpemUoKSB9KTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xp
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xp
ZW50LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29u
c29sZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNiw3ICszMjYsNyBAQCB2b2lkIFBh
Z2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEpTQzo6CiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoYXV0byogY2FjaGVkSW1hZ2UgPSBpbWFnZUVsZW1lbnQuY2FjaGVkSW1hZ2UoKSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8qIGltYWdlID0gY2FjaGVkSW1hZ2UtPmlt
YWdlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGltYWdlICYmIGltYWdlICE9
ICZJbWFnZTo6bnVsbEltYWdlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c25hcHNob3QgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIFJlbmRlcmluZ01v
ZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25hcHNob3Qg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6
QkdSQTgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdC0+Y29udGV4
dCgpLmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UG9pbnQoMCwgMCkpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTM0Myw3ICszNDMs
NyBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEpTQzo6CiAgICAgICAgICAg
ICAgICAgICAgICAgICBhdXRvJiB2aWRlb0VsZW1lbnQgPSBkb3duY2FzdDxIVE1MVmlkZW9FbGVt
ZW50Pigqbm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB2aWRlb1dpZHRo
ID0gdmlkZW9FbGVtZW50LnZpZGVvV2lkdGgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIHZpZGVvSGVpZ2h0ID0gdmlkZW9FbGVtZW50LnZpZGVvSGVpZ2h0KCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBzbmFwc2hvdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXpl
KHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwg
MSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgc25hcHNob3QgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0
U2l6ZSh2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgp
OwogICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9FbGVtZW50LnBhaW50Q3VycmVudEZyYW1l
SW5Db250ZXh0KHNuYXBzaG90LT5jb250ZXh0KCksIEZsb2F0UmVjdCgwLCAwLCB2aWRlb1dpZHRo
LCB2aWRlb0hlaWdodCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAjZW5kaWYKQEAgLTM2OCw3
ICszNjgsNyBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEpTQzo6CiAgICAg
ICAgICAgICB0YXJnZXQgPSBwb3NzaWJsZVRhcmdldDsKICAgICAgICAgICAgIGlmIChVTkxJS0VM
WShJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhhc0Zyb250ZW5kcygpKSkgewogICAgICAgICAg
ICAgICAgIGF1dG8gc291cmNlU2l6ZSA9IGltYWdlRGF0YS0+c2l6ZSgpOwotICAgICAgICAgICAg
ICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzb3VyY2VTaXpl
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byBp
bWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc291cmNlU2l6ZSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVs
Rm9ybWF0OjpCR1JBOCkpIHsKICAgICAgICAgICAgICAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0
KEludFBvaW50KCksIHNvdXJjZVNpemUpOwogICAgICAgICAgICAgICAgICAgICBpbWFnZUJ1ZmZl
ci0+cHV0UGl4ZWxCdWZmZXIoaW1hZ2VEYXRhLT5waXhlbEJ1ZmZlcigpLCBzb3VyY2VSZWN0KTsK
ICAgICAgICAgICAgICAgICAgICAgZGF0YVVSTCA9IGltYWdlQnVmZmVyLT50b0RhdGFVUkwoImlt
YWdlL3BuZyJfcywgV1RGOjpudWxsb3B0LCBQcmVzZXJ2ZVJlc29sdXRpb246Olllcyk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDEwICszMSwxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJzb3I7CitjbGFz
cyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIAogZW51bSBjbGFz
cyBQaXhlbEZvcm1hdCA6IHVpbnQ4X3Q7Ci1lbnVtIGNsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOwogZW51bSBjbGFz
cyBSZW5kZXJpbmdQdXJwb3NlIDogdWludDhfdDsKIApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBJbnRQb2ludCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmlldyhjb25z
dCBJbnRQb2ludCYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEludFJlY3Qgcm9vdFZpZXdUb0Fj
Y2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgSW50UmVjdCYpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1
YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
LCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXpl
JiwgUmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCkgY29uc3QgPSAwOwog
CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIHZpcnR1YWwgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdM
PiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMmKSBjb25zdCA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNj
cmVlbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2Ny
ZWVuLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtU2NyZWVuLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAgdHlwZWRlZiBzdHJ1
Y3QgQ0dDb2xvclNwYWNlICpDR0NvbG9yU3BhYwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEZsb2F0
U2l6ZTsKIGNsYXNzIFdpZGdldDsKQEAgLTY4LDYgKzY5LDcgQEAgdXNpbmcgSU9SZWdpc3RyeUdQ
VUlEID0gaW50NjRfdDsgLy8gR2xvYgogaW50IHNjcmVlbkRlcHRoKFdpZGdldCopOwogaW50IHNj
cmVlbkRlcHRoUGVyQ29tcG9uZW50KFdpZGdldCopOwogYm9vbCBzY3JlZW5Jc01vbm9jaHJvbWUo
V2lkZ2V0Kik7CitXRUJDT1JFX0VYUE9SVCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc2NyZWVuQ29s
b3JTcGFjZShXaWRnZXQqID0gbnVsbHB0cik7CiAKIGJvb2wgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xv
cnMoKTsKIApAQCAtMTAwLDEwICsxMDIsNiBAQCBXRUJDT1JFX0VYUE9SVCBib29sIHNjcmVlblN1
cHBvcnRzSGlnaER5CiBjb25zdGV4cHIgYm9vbCBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFu
Z2UoV2lkZ2V0KiA9IG51bGxwdHIpIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAotI2lmIFVT
RShDRykKLVdFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBzY3JlZW5Db2xvclNwYWNlKFdp
ZGdldCogPSBudWxscHRyKTsKLSNlbmRpZgotCiBzdHJ1Y3QgU2NyZWVuUHJvcGVydGllczsKIHN0
cnVjdCBTY3JlZW5EYXRhOwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
ZWVuUHJvcGVydGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cmVlblByb3BlcnRpZXMuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2NyZWVuUHJvcGVydGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAj
aW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKICNpbmNs
dWRlIDx3dGYvRW51bVRyYWl0cy5oPgpAQCAtMzIsMTQgKzMzLDEyIEBACiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi10eXBlZGVm
IHN0cnVjdCBDR0NvbG9yU3BhY2UgKkNHQ29sb3JTcGFjZVJlZjsKLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdHJ1Y3QgU2NyZWVuRGF0YSB7CiAgICAgRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJs
ZVJlY3Q7CiAgICAgRmxvYXRSZWN0IHNjcmVlblJlY3Q7Ci0gICAgUmV0YWluUHRyPENHQ29sb3JT
cGFjZVJlZj4gY29sb3JTcGFjZTsKKyAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFj
ZSB7IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgaW50IHNjcmVlbkRlcHRo
IHsgMCB9OwogICAgIGludCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCB7IDAgfTsKICAgICBib29s
IHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciB7IGZhbHNlIH07CkBAIC01NiwxMyArNTUsMTIg
QEAgc3RydWN0IFNjcmVlbkRhdGEgewogICAgIGZsb2F0IHNjYWxlRmFjdG9yIHsgMSB9OwogI2Vu
ZGlmCiAKLSAgICBlbnVtIGNsYXNzIENvbG9yU3BhY2VUeXBlIDogdWludDhfdCB7IE5vbmUsIE5h
bWUsIERhdGEgfTsKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFs
PFNjcmVlbkRhdGE+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCi10eXBlZGVmIEhhc2hNYXA8UGxh
dGZvcm1EaXNwbGF5SUQsIFNjcmVlbkRhdGE+IFNjcmVlbkRhdGFNYXA7Ci0gICAgCit1c2luZyBT
Y3JlZW5EYXRhTWFwID0gSGFzaE1hcDxQbGF0Zm9ybURpc3BsYXlJRCwgU2NyZWVuRGF0YT47CisK
IHN0cnVjdCBTY3JlZW5Qcm9wZXJ0aWVzIHsKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBwcmltYXJ5
RGlzcGxheUlEIHsgMCB9OwogICAgIFNjcmVlbkRhdGFNYXAgc2NyZWVuRGF0YU1hcDsKQEAgLTc0
LDggKzcyLDcgQEAgc3RydWN0IFNjcmVlblByb3BlcnRpZXMgewogdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KIHZvaWQgU2NyZWVuUHJvcGVydGllczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiB7Ci0gICAgZW5jb2RlciA8PCBwcmltYXJ5RGlzcGxheUlEOwotICAgIGVuY29kZXIgPDwg
c2NyZWVuRGF0YU1hcDsKKyAgICBlbmNvZGVyIDw8IHByaW1hcnlEaXNwbGF5SUQgPDwgc2NyZWVu
RGF0YU1hcDsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTk3LDcgKzk0LDcgQEAg
T3B0aW9uYWw8U2NyZWVuUHJvcGVydGllcz4gU2NyZWVuUHJvcGVydAogdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4KIHZvaWQgU2NyZWVuRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiB7Ci0gICAgZW5jb2RlciA8PCBzY3JlZW5BdmFpbGFibGVSZWN0IDw8IHNjcmVlblJlY3QgPDwg
c2NyZWVuRGVwdGggPDwgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQgPDwgc2NyZWVuU3VwcG9ydHNF
eHRlbmRlZENvbG9yIDw8IHNjcmVlbkhhc0ludmVydGVkQ29sb3JzIDw8IHNjcmVlblN1cHBvcnRz
SGlnaER5bmFtaWNSYW5nZTsKKyAgICBlbmNvZGVyIDw8IHNjcmVlbkF2YWlsYWJsZVJlY3QgPDwg
c2NyZWVuUmVjdCA8PCBjb2xvclNwYWNlIDw8IHNjcmVlbkRlcHRoIDw8IHNjcmVlbkRlcHRoUGVy
Q29tcG9uZW50IDw8IHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciA8PCBzY3JlZW5IYXNJbnZl
cnRlZENvbG9ycyA8PCBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2U7CiAKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgZW5jb2RlciA8PCBzY3JlZW5Jc01vbm9jaHJvbWUgPDwgZGlzcGxheU1h
c2sgPDwgZ3B1SUQgPDwgcHJlZmVycmVkRHluYW1pY1JhbmdlTW9kZTsKQEAgLTEwNiwyOCArMTAz
LDYgQEAgdm9pZCBTY3JlZW5EYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcgogI2lmIFBMQVRG
T1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBlbmNvZGVyIDw8IHNjYWxlRmFj
dG9yOwogI2VuZGlmCi0KLSAgICBpZiAoY29sb3JTcGFjZSkgewotICAgICAgICAvLyBUcnkgdG8g
ZW5jb2RlIHRoZSBuYW1lLgotICAgICAgICBpZiAoYXV0byBuYW1lID0gYWRvcHRDRihDR0NvbG9y
U3BhY2VDb3B5TmFtZShjb2xvclNwYWNlLmdldCgpKSkpIHsKLSAgICAgICAgICAgIGVuY29kZXIg
PDwgQ29sb3JTcGFjZVR5cGU6Ok5hbWU7Ci0gICAgICAgICAgICBlbmNvZGVyIDw8IFN0cmluZyhu
YW1lLmdldCgpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8v
IEZhaWxpbmcgdGhhdCwganVzdCBlbmNvZGUgdGhlIElDQyBkYXRhLgotICAgICAgICBpZiAoYXV0
byBwcm9maWxlRGF0YSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ29weUlDQ0RhdGEoY29sb3JTcGFj
ZS5nZXQoKSkpKSB7Ci0gICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gaWNjRGF0YTsKLSAgICAg
ICAgICAgIGljY0RhdGEuYXBwZW5kKENGRGF0YUdldEJ5dGVQdHIocHJvZmlsZURhdGEuZ2V0KCkp
LCBDRkRhdGFHZXRMZW5ndGgocHJvZmlsZURhdGEuZ2V0KCkpKTsKLQotICAgICAgICAgICAgZW5j
b2RlciA8PCBDb2xvclNwYWNlVHlwZTo6RGF0YTsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgaWNj
RGF0YTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIFRo
ZSBjb2xvciBzcGFjZSB3YXMgbnVsbCBvciBmYWlsZWQgdG8gYmUgZW5jb2RlZC4KLSAgICBlbmNv
ZGVyIDw8IENvbG9yU3BhY2VUeXBlOjpOb25lOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PgpAQCAtMTQzLDYgKzExOCwxMSBAQCBPcHRpb25hbDxTY3JlZW5EYXRhPiBTY3JlZW5EYXRhOjpk
ZWNvZGUoCiAgICAgaWYgKCFzY3JlZW5SZWN0KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogCisgICAgT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBzY3JlZW5Db2xvclNwYWNl
OworICAgIGRlY29kZXIgPj4gc2NyZWVuQ29sb3JTcGFjZTsKKyAgICBpZiAoIXNjcmVlbkNvbG9y
U3BhY2UpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKICAgICBPcHRpb25hbDxpbnQ+
IHNjcmVlbkRlcHRoOwogICAgIGRlY29kZXIgPj4gc2NyZWVuRGVwdGg7CiAgICAgaWYgKCFzY3Jl
ZW5EZXB0aCkKQEAgLTE5Nyw0MSArMTc3LDEwIEBAIE9wdGlvbmFsPFNjcmVlbkRhdGE+IFNjcmVl
bkRhdGE6OmRlY29kZSgKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICNlbmRpZgogCi0g
ICAgQ29sb3JTcGFjZVR5cGUgZGF0YVR5cGU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRh
VHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBSZXRhaW5QdHI8Q0dD
b2xvclNwYWNlUmVmPiBjZ0NvbG9yU3BhY2U7Ci0gICAgc3dpdGNoIChkYXRhVHlwZSkgewotICAg
IGNhc2UgQ29sb3JTcGFjZVR5cGU6Ok5vbmU6Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ29s
b3JTcGFjZVR5cGU6Ok5hbWU6IHsKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBjb2xvclNwYWNl
TmFtZTsKLSAgICAgICAgZGVjb2RlciA+PiBjb2xvclNwYWNlTmFtZTsKLSAgICAgICAgQVNTRVJU
KGNvbG9yU3BhY2VOYW1lKTsKLSAgICAgICAgaWYgKCFjb2xvclNwYWNlTmFtZSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICAgICAgY2dDb2xvclNwYWNlID0gYWRvcHRD
RihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShjb2xvclNwYWNlTmFtZS0+Y3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSkpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDb2xvclNwYWNl
VHlwZTo6RGF0YTogewotICAgICAgICBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGljY0RhdGE7
Ci0gICAgICAgIGRlY29kZXIgPj4gaWNjRGF0YTsKLSAgICAgICAgQVNTRVJUKGljY0RhdGEpOwot
ICAgICAgICBpZiAoIWljY0RhdGEpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
Ci0gICAgICAgIGF1dG8gY29sb3JTcGFjZURhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBpY2NEYXRhLT5kYXRhKCksIGljY0RhdGEtPnNpemUoKSkpOwotICAg
ICAgICBjZ0NvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhJQ0NEYXRh
KGNvbG9yU3BhY2VEYXRhLmdldCgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICB9Ci0K
ICAgICByZXR1cm4geyB7CiAgICAgICAgIFdURk1vdmUoKnNjcmVlbkF2YWlsYWJsZVJlY3QpLAog
ICAgICAgICBXVEZNb3ZlKCpzY3JlZW5SZWN0KSwKLSAgICAgICAgV1RGTW92ZShjZ0NvbG9yU3Bh
Y2UpLAorICAgICAgICBXVEZNb3ZlKCpzY3JlZW5Db2xvclNwYWNlKSwKICAgICAgICAgV1RGTW92
ZSgqc2NyZWVuRGVwdGgpLAogICAgICAgICBXVEZNb3ZlKCpzY3JlZW5EZXB0aFBlckNvbXBvbmVu
dCksCiAgICAgICAgIFdURk1vdmUoKnNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciksCkBAIC0y
NTAsMTYgKzE5OSwzIEBAIE9wdGlvbmFsPFNjcmVlbkRhdGE+IFNjcmVlbkRhdGE6OmRlY29kZSgK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxh
dGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpTY3JlZW5EYXRhOjpDb2xvclNwYWNlVHlw
ZT4gewotICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgICAgIFdlYkNvcmU6OlNj
cmVlbkRhdGE6OkNvbG9yU3BhY2VUeXBlLAotICAgICAgICBXZWJDb3JlOjpTY3JlZW5EYXRhOjpD
b2xvclNwYWNlVHlwZTo6Tm9uZSwKLSAgICAgICAgV2ViQ29yZTo6U2NyZWVuRGF0YTo6Q29sb3JT
cGFjZVR5cGU6Ok5hbWUsCi0gICAgICAgIFdlYkNvcmU6OlNjcmVlbkRhdGE6OkNvbG9yU3BhY2VU
eXBlOjpEYXRhCi0gICAgPjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsNyArMTY0LDcgQEAgUmVmUHRyPE5hdGl2ZUlt
YWdlPiBCaXRtYXBJbWFnZTo6cHJlVHJhbgogICAgICAgICByZXR1cm4gaW1hZ2U7CiAKICAgICBh
dXRvIGNvcnJlY3RlZFNpemVGbG9hdCA9IGNvcnJlY3RlZFNpemUgPyBGbG9hdFNpemUoY29ycmVj
dGVkU2l6ZS52YWx1ZSgpKSA6IHNpemUoKTsKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoY29ycmVjdGVkU2l6ZUZsb2F0LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
LCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7Cisg
ICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvcnJlY3RlZFNpemVGbG9hdCwg
UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJl
dHVybiBpbWFnZTsKIApAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQ
YXR0ZXJuKEdyYXBoaWNzQ28KICAgICB9CiAKICAgICBpZiAoIW1fY2FjaGVkSW1hZ2UpIHsKLSAg
ICAgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihl
eHBhbmRlZEludFNpemUodGlsZVJlY3Quc2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCLCBjdHh0KTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUodGlsZVJlY3Quc2l6ZSgpKSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCksIGN0eHQpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAg
ICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNyArMTY4LDcgQEAgQ29s
b3JDb21wb25lbnRzPGZsb2F0LCA0PiBDb2xvcjo6dG9Db2xvcgogICAgIHJldHVybiBjb252ZXJD
b2xvckNvbXBvbmVudHMoaW5wdXRDb2xvclNwYWNlLCBjb21wb25lbnRzLCBvdXRwdXRDb2xvclNw
YWNlKTsKIH0KIAotQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBDb2xvcjo6dG9Db2xvckNvbXBv
bmVudHNJbkNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIG91dHB1dENvbG9yU3BhY2Up
IGNvbnN0CitDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IENvbG9yOjp0b0NvbG9yQ29tcG9uZW50
c0luQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIG91dHB1dENvbG9yU3Bh
Y2UpIGNvbnN0CiB7CiAgICAgYXV0byBbaW5wdXRDb2xvclNwYWNlLCBjb21wb25lbnRzXSA9IGNv
bG9yU3BhY2VBbmRDb21wb25lbnRzKCk7CiAgICAgcmV0dXJuIGNvbnZlckNvbG9yQ29tcG9uZW50
cyhpbnB1dENvbG9yU3BhY2UsIGNvbXBvbmVudHMsIG91dHB1dENvbG9yU3BhY2UpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29sb3JDb252ZXJzaW9uLmgiCiAjaW5j
bHVkZSAiQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkNvbG9yVXRpbGl0aWVzLmgiCisjaW5jbHVk
ZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CkBAIC0x
MjEsNyArMTIyLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPFQ+
IHRvU1JHQkFMb3NzeSgpIGNvbnN0IHsgcmV0dXJuIHRvQ29sb3JUeXBlTG9zc3k8U1JHQkE8VD4+
KCk7IH0KIAogICAgIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gdG9Db2xvckNvbXBvbmVudHNJ
bkNvbG9yU3BhY2UoQ29sb3JTcGFjZSkgY29uc3Q7Ci0gICAgQ29sb3JDb21wb25lbnRzPGZsb2F0
LCA0PiB0b0NvbG9yQ29tcG9uZW50c0luQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2Up
IGNvbnN0OworICAgIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gdG9Db2xvckNvbXBvbmVudHNJ
bkNvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJikgY29uc3Q7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8Q29sb3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0
LCA0Pj4gY29sb3JTcGFjZUFuZENvbXBvbmVudHMoKSBjb25zdDsKIApAQCAtMjY3LDYgKzI2OCw3
IEBAIGJvb2wgb3V0T2ZMaW5lQ29tcG9uZW50c3NFcXVhbElnbm9yaW5nU2UKIAogI2lmIFVTRShD
RykKIFdFQkNPUkVfRVhQT1JUIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYp
OworV0VCQ09SRV9FWFBPUlQgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBwbGF0Zm9ybUNvbnZl
cnRDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0Piwg
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CiAjZW5kaWYKIAogV0VCQ09SRV9FWFBPUlQg
V1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IENvbG9y
Jik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yQ29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDcgKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb2xvckNvbnZlcnNp
b24uaCIKIAorI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2lu
Y2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFz
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTMxOCwxOCArMzIwLDIxIEBAIENvbG9yQ29t
cG9uZW50czxmbG9hdCwgND4gY29udmVyQ29sb3JDb20KICAgICB9KTsKIH0KIAotQ29sb3JDb21w
b25lbnRzPGZsb2F0LCA0PiBjb252ZXJDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1dENv
bG9yU3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVudHMs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBvdXRwdXRDb2xvclNwYWNlKQorQ29sb3JDb21wb25lbnRz
PGZsb2F0LCA0PiBjb252ZXJDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1dENvbG9yU3Bh
Y2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVudHMsIGNvbnN0
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgb3V0cHV0Q29sb3JTcGFjZSkKIHsKKyNpZiBVU0UoQ0cp
CisgICAgcmV0dXJuIHBsYXRmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyhpbnB1dENvbG9yU3Bh
Y2UsIGlucHV0Q29sb3JDb21wb25lbnRzLCBvdXRwdXRDb2xvclNwYWNlKTsKKyNlbHNlCiAgICAg
cmV0dXJuIGNhbGxXaXRoQ29sb3JUeXBlKGlucHV0Q29sb3JDb21wb25lbnRzLCBpbnB1dENvbG9y
U3BhY2UsIFtvdXRwdXRDb2xvclNwYWNlXSAoY29uc3QgYXV0byYgaW5wdXRDb2xvcikgewotICAg
ICAgICBzd2l0Y2ggKG91dHB1dENvbG9yU3BhY2UpIHsKLSAgICAgICAgY2FzZSBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0I6CisgICAgICAgIHN3aXRjaCAob3V0cHV0Q29sb3JTcGFjZS5wbGF0
Zm9ybUNvbG9yU3BhY2UoKSkgeworICAgICAgICBjYXNlIFBsYXRmb3JtQ29sb3JTcGFjZTo6TmFt
ZTo6U1JHQjoKICAgICAgICAgICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhjb252ZXJ0Q29s
b3I8U1JHQkE8ZmxvYXQ+PihpbnB1dENvbG9yKSk7CiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NP
TE9SX1NQQUNFX0xJTkVBUl9TUkdCKQotICAgICAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6TGluZWFyU1JHQjoKKyAgICAgICAgY2FzZSBQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU6Okxp
bmVhclNSR0I6CiAgICAgICAgICAgICByZXR1cm4gYXNDb2xvckNvbXBvbmVudHMoY29udmVydENv
bG9yPExpbmVhclNSR0JBPGZsb2F0Pj4oaW5wdXRDb2xvcikpOwogI2VuZGlmCiAjaWYgRU5BQkxF
KERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCi0gICAgICAgIGNhc2UgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDM6CisgICAgICAgIGNhc2UgUGxhdGZvcm1Db2xvclNw
YWNlOjpOYW1lOjpEaXNwbGF5UDM6CiAgICAgICAgICAgICByZXR1cm4gYXNDb2xvckNvbXBvbmVu
dHMoY29udmVydENvbG9yPERpc3BsYXlQMzxmbG9hdD4+KGlucHV0Q29sb3IpKTsKICNlbmRpZgog
ICAgICAgICB9CkBAIC0zMzcsNiArMzQyLDcgQEAgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBj
b252ZXJDb2xvckNvbQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0
dXJuIGFzQ29sb3JDb21wb25lbnRzKGNvbnZlcnRDb2xvcjxTUkdCQTxmbG9hdD4+KGlucHV0Q29s
b3IpKTsKICAgICB9KTsKKyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNp
b24uaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JDb252ZXJzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE1ICsyOSwxNiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKKwog
ZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdDsKLWVudW0gY2xhc3MgRGVzdGluYXRpb25D
b2xvclNwYWNlIDogdWludDhfdDsKIAogLy8gQ29udmVyc2lvbiBmdW5jdGlvbiBmb3IgdHlwZWQg
Y29sb3JzLgogdGVtcGxhdGU8dHlwZW5hbWUgT3V0cHV0LCB0eXBlbmFtZSBJbnB1dD4gT3V0cHV0
IGNvbnZlcnRDb2xvcihjb25zdCBJbnB1dCYgY29sb3IpOwogCiAvLyBDb252ZXJzaW9uIGZ1bmN0
aW9ucyBmb3IgcmF3IGNvbG9yIGNvbXBvbmVudHMgd2l0aCBhc3NvY2lhdGVkIGNvbG9yIHNwYWNl
cy4KIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gY29udmVyQ29sb3JDb21wb25lbnRzKENvbG9y
U3BhY2UgaW5wdXRDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGlucHV0Q29s
b3JDb21wb25lbnRzLCBDb2xvclNwYWNlIG91dHB1dENvbG9yU3BhY2UpOwotQ29sb3JDb21wb25l
bnRzPGZsb2F0LCA0PiBjb252ZXJDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1dENvbG9y
U3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVudHMsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSBvdXRwdXRDb2xvclNwYWNlKTsKK0NvbG9yQ29tcG9uZW50czxm
bG9hdCwgND4gY29udmVyQ29sb3JDb21wb25lbnRzKENvbG9yU3BhY2UgaW5wdXRDb2xvclNwYWNl
LCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGlucHV0Q29sb3JDb21wb25lbnRzLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmIG91dHB1dENvbG9yU3BhY2UpOwogCiAKIC8vIEFsbCBjb2xv
ciB0eXBlcywgb3RoZXIgdGhhbiBYWVpBIG9yIHRob3NlIGluaGVyaXRpbmcgZnJvbSBSR0JUeXBl
LCBtdXN0IGltcGxlbWVudApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JTcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3JTcGFjZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCwy
NCArNjQsNCBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBDCiAgICAg
cmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkKLXsKLSAgICBzd2l0Y2ggKGNvbG9yU3Bh
Y2UpIHsKLSAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgdHMg
PDwgInNSR0IiOwotICAgICAgICBicmVhazsKLSNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1Jf
U1BBQ0VfTElORUFSX1NSR0IpCi0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVh
clNSR0I6Ci0gICAgICAgIHRzIDw8ICJMaW5lYXJTUkdCIjsKLSAgICAgICAgYnJlYWs7Ci0jZW5k
aWYKLSNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExBWV9QMykKLSAgICBj
YXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxheVAzOgotICAgICAgICB0cyA8PCAiRGlz
cGxheVAzIjsKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLSAgICB9Ci0gICAgcmV0dXJuIHRzOwot
fQotCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JT
cGFjZS5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvclNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEwICsyOCw3IEBACiAjaW5j
bHVkZSAiQ29sb3JUeXBlcy5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3Rm
L0VudW1UcmFpdHMuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBUZXh0U3RyZWFtOwotfQor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDcs
MTggKzQ0LDcgQEAgZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdCB7CiAgICAgWFlaX0Q1
MCwKIH07CiAKLWVudW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDogdWludDhfdCB7Ci0g
ICAgU1JHQgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikK
LSAgICAsIExpbmVhclNSR0IKLSNlbmRpZgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9T
UEFDRV9ESVNQTEFZX1AzKQotICAgICwgRGlzcGxheVAzCi0jZW5kaWYKLX07Ci0KLVdFQkNPUkVf
RVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBDb2xv
clNwYWNlKTsKLVdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6
OlRleHRTdHJlYW0mLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UpOworV0VCQ09SRV9FWFBPUlQgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgQ29sb3JTcGFjZSk7CiAKIAogdGVtcGxh
dGU8dHlwZW5hbWU+IHN0cnVjdCBDb2xvclNwYWNlTWFwcGluZzsKQEAgLTEwMiwyNSArODgsNiBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBGdW5jdG9yPiBjCiAgICAgcmV0dXJuIHN0
ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFrZUZyb21Db21wb25l
bnRzPFNSR0JBPFQ+Pihjb21wb25lbnRzKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIEZ1bmN0b3I+IGNvbnN0ZXhwciBkZWNsdHlwZShhdXRvKSBjYWxsV2l0aENvbG9yVHlw
ZShjb25zdCBDb2xvckNvbXBvbmVudHM8VCwgND4mIGNvbXBvbmVudHMsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBGdW5jdG9yJiYgZnVuY3RvcikKLXsKLSAgICBzd2l0Y2ggKGNv
bG9yU3BhY2UpIHsKLSAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFr
ZUZyb21Db21wb25lbnRzPFNSR0JBPFQ+Pihjb21wb25lbnRzKSk7Ci0jaWYgRU5BQkxFKERFU1RJ
TkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpMaW5lYXJTUkdCOgotICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3
YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8TGluZWFyU1JHQkE8VD4+
KGNvbXBvbmVudHMpKTsKLSNlbmRpZgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFD
RV9ESVNQTEFZX1AzKQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDM6
Ci0gICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3Rv
ciksIG1ha2VGcm9tQ29tcG9uZW50czxEaXNwbGF5UDM8VD4+KGNvbXBvbmVudHMpKTsKLSNlbmRp
ZgotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBzdGQ6Omlu
dm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIG1ha2VGcm9tQ29tcG9uZW50czxT
UkdCQTxUPj4oY29tcG9uZW50cykpOwotfQotCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApA
QCAtMTQxLDE3ICsxMDgsNCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6
OkNvCiAgICAgPjsKIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6
RGVzdGluYXRpb25Db2xvclNwYWNlPiB7Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwK
LSAgICAgICAgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlLAotICAgICAgICBXZWJDb3Jl
OjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IKLSNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09M
T1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgICAgICwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xv
clNwYWNlOjpMaW5lYXJTUkdCCi0jZW5kaWYKLSNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1Jf
U1BBQ0VfRElTUExBWV9QMykKLSAgICAgICAgLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OkRpc3BsYXlQMwotI2VuZGlmCi0gICAgPjsKLX07Ci0KIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bmNyZXRlSW1hZ2VCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4KIGNsYXNzIENvbmNyZXRlSW1hZ2VCdWZmZXIgOiBw
dWJsaWMgSW1hZ2VCdWZmZXIgewogcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEltYWdl
QnVmZmVyVHlwZSA9IENvbmNyZXRlSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4K
LSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RX
aW5kb3csIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdl
QnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93LCBBcmd1bWVudHMm
Ji4uLiBhcmd1bWVudHMpCiAgICAgewogICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBJbWFnZUJ1
ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMgeyBzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3Bh
Y2UsIHBpeGVsRm9ybWF0IH07CiAgICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpj
cmVhdGUocGFyYW1ldGVycywgaG9zdFdpbmRvdyk7CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbWFnZUJ1ZmZlclR5cGUgPSBDb25jcmV0ZUltYWdlQnVm
ZmVyLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CiAgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZl
clR5cGU+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAgIHsKLSAgICAgICAgYXV0
byBwYXJhbWV0ZXJzID0gSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzIHsgc2l6ZSwgMSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTggfTsKKyAgICAg
ICAgYXV0byBwYXJhbWV0ZXJzID0gSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzIHsgc2l6
ZSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCB9
OwogICAgICAgICBhdXRvIGJhY2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3JlYXRlKHBhcmFtZXRlcnMs
IGNvbnRleHQpOwogICAgICAgICBpZiAoIWJhY2tlbmQpCiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTE5NSw3ICsxOTUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIHNyY0Nv
bG9yU3BhY2UsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBkZXN0Q29sb3JTcGFjZSkgb3ZlcnJpZGUK
KyAgICB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiBzcmNDb2xvclNwYWNlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGRlc3RDb2xvclNw
YWNlKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVC
YWNrZW5kQ3JlYXRlZCgpKSB7CiAgICAgICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJ
bWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsNyBAQCBJbWFnZURyYXdSZXN1bHQgQ3Jvc3NmYWRl
R2VuZXJhdGVkSW1hZ2U6CiAKIHZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRy
YW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2lu
ZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgYXV0byBpbWFn
ZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBjb250ZXh0LnJlbmRlcmluZ01v
ZGUoKSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgp
OworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgY29u
dGV4dC5yZW5kZXJpbmdNb2RlKCksIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQ
aXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVy
bjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25D
b2xvclNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCisKKyNpbmNsdWRlIDx3dGYv
dGV4dC9UZXh0U3RyZWFtLmg+CisKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiQ29sb3JTcGFjZUNH
LmgiCisjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KKyNlbmRpZgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKQoreworI2lmIFVTRShDRykKKyAgICByZXR1cm4gRGVzdGluYXRpb25D
b2xvclNwYWNlKHNSR0JDb2xvclNwYWNlUmVmKCkpOworI2Vsc2UKKyAgICByZXR1cm4gRGVzdGlu
YXRpb25Db2xvclNwYWNlKFBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZTo6U1JHQik7CisjZW5kaWYK
K30KKworI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKK0Rl
c3RpbmF0aW9uQ29sb3JTcGFjZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKQor
eworI2lmIFVTRShDRykKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlKGxpbmVhclNS
R0JDb2xvclNwYWNlUmVmKCkpOworI2Vsc2UKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNw
YWNlKFBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZTo6TGluZWFyU1JHQik7CisjZW5kaWYKK30KKyNl
bmRpZgorCisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCitE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDMoKQor
eworI2lmIFVTRShDRykKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlKGRpc3BsYXlQ
M0NvbG9yU3BhY2VSZWYoKSk7CisjZWxzZQorICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UoUGxhdGZvcm1Db2xvclNwYWNlOjpOYW1lOjpEaXNwbGF5UDMpOworI2VuZGlmCit9CisjZW5k
aWYKKworRGVzdGluYXRpb25Db2xvclNwYWNlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UoUGxhdGZv
cm1Db2xvclNwYWNlIHBsYXRmb3JtQ29sb3JTcGFjZSkKKyAgICA6IG1fcGxhdGZvcm1Db2xvclNw
YWNlIHsgV1RGTW92ZShwbGF0Zm9ybUNvbG9yU3BhY2UpIH0KK3sKKyNpZiBVU0UoQ0cpCisgICAg
QVNTRVJUKG1fcGxhdGZvcm1Db2xvclNwYWNlKTsKKyNlbmRpZgorfQorCitib29sIG9wZXJhdG9y
PT0oY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBhLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmIGIpCit7CisjaWYgVVNFKENHKQorICAgIHJldHVybiBDR0NvbG9yU3BhY2VFcXVhbFRv
Q29sb3JTcGFjZShhLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBiLnBsYXRmb3JtQ29sb3JTcGFjZSgp
KTsKKyNlbHNlCisgICAgcmV0dXJuIGEucGxhdGZvcm1Db2xvclNwYWNlKCkgPT0gYi5wbGF0Zm9y
bUNvbG9yU3BhY2UoKTsKKyNlbmRpZgorfQorCitib29sIG9wZXJhdG9yIT0oY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiBhLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGIpCit7Cisg
ICAgcmV0dXJuICEoYSA9PSBiKTsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQoreworICAg
IGlmIChjb2xvclNwYWNlID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKQorICAgICAg
ICB0cyA8PCAic1JHQiI7CisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVB
Ul9TUkdCKQorICAgIGVsc2UgaWYgKGNvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNl
OjpMaW5lYXJTUkdCKCkpCisgICAgICAgIHRzIDw8ICJMaW5lYXJTUkdCIjsKKyNlbmRpZgorI2lm
IEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQorICAgIGVsc2UgaWYg
KGNvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDMoKSkKKyAgICAg
ICAgdHMgPDwgIkRpc3BsYXlQMyI7CisjZW5kaWYKKyNpZiBVU0UoQ0cpCisgICAgZWxzZSBpZiAo
YXV0byBkZXNjcmlwdGlvbiA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ29weUlDQ1Byb2ZpbGVEZXNj
cmlwdGlvbihjb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpKSkpCisgICAgICAgIHRzIDw8
IFN0cmluZyhkZXNjcmlwdGlvbi5nZXQoKSk7CisjZW5kaWYKKworICAgIHJldHVybiB0czsKK30K
KworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25D
b2xvclNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiUGxhdGZvcm1Db2xvclNwYWNlLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgeworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgU1JHQigpOworI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xP
Ul9TUEFDRV9MSU5FQVJfU1JHQikKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRGVzdGluYXRp
b25Db2xvclNwYWNlIExpbmVhclNSR0IoKTsKKyNlbmRpZgorI2lmIEVOQUJMRShERVNUSU5BVElP
Tl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgRGlzcGxheVAzKCk7CisjZW5kaWYKKworICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IERlc3RpbmF0aW9uQ29sb3JTcGFjZShQbGF0Zm9ybUNvbG9yU3BhY2UpOwor
ICAgIFBsYXRmb3JtQ29sb3JTcGFjZVZhbHVlIHBsYXRmb3JtQ29sb3JTcGFjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcGxhdGZvcm1Db2xvclNwYWNlLmdldCgpOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gZGVjb2Rl
KERlY29kZXImKTsKKworcHJpdmF0ZToKKyAgICBQbGF0Zm9ybUNvbG9yU3BhY2UgbV9wbGF0Zm9y
bUNvbG9yU3BhY2U7Cit9OworCitXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CitX
RUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yIT0oY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CisKK1dFQkNPUkVfRVhQT1JUIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYpOworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3Bs
YXRmb3JtQ29sb3JTcGFjZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8
RGVzdGluYXRpb25Db2xvclNwYWNlPiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPFBsYXRmb3JtQ29sb3JTcGFjZT4gcGxhdGZv
cm1Db2xvclNwYWNlOworICAgIGRlY29kZXIgPj4gcGxhdGZvcm1Db2xvclNwYWNlOworICAgIGlm
ICghcGxhdGZvcm1Db2xvclNwYWNlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB7IFdURk1vdmUoKnBsYXRmb3JtQ29sb3JT
cGFjZSkgfTsKK30KKworfQorCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFkaWVudEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybihHcmFw
aGljcwogICAgIHVuc2lnbmVkIGdlbmVyYXRvckhhc2ggPSBtX2dyYWRpZW50LT5oYXNoKCk7CiAK
ICAgICBpZiAoIW1fY2FjaGVkSW1hZ2UgfHwgbV9jYWNoZWRHZW5lcmF0b3JIYXNoICE9IGdlbmVy
YXRvckhhc2ggfHwgbV9jYWNoZWRBZGp1c3RlZFNpemUgIT0gYWRqdXN0ZWRTaXplIHx8ICFhcmVF
c3NlbnRpYWxseUVxdWFsKGRlc3RDb250ZXh0LnNjYWxlRmFjdG9yKCksIG1fY2FjaGVkU2NhbGVG
YWN0b3IpKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QiwgZGVzdENvbnRleHQpOworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoYWRqdXN0ZWRTaXplLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgZGVzdENvbnRleHQpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAg
ICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg4Myw3ICs4ODMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91
dFJvdW5kZWRSZWN0CiAgICAgY2xpcE91dChwYXRoKTsKIH0KIAotR3JhcGhpY3NDb250ZXh0OjpD
bGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9EcmF3aW5n
Q29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNw
YWNlIGNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYgZHJhd2lu
Z0Z1bmN0aW9uKQorR3JhcGhpY3NDb250ZXh0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQg
R3JhcGhpY3NDb250ZXh0OjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGdW5j
dGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikKIHsKICAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzUmVzdWx0OjpTdWNjZXNzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw4ICsyNiw4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ29sb3JT
cGFjZS5oIgogI2luY2x1ZGUgIkRhc2hBcnJheS5oIgorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29s
b3JTcGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRl
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgpAQCAtNDEwLDcgKzQxMCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRS
ZWN0Jik7CiAKICAgICBlbnVtIGNsYXNzIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCA6IGJv
b2wgeyBTdWNjZXNzLCBGYWlsZWRUb0NyZWF0ZUltYWdlQnVmZmVyIH07Ci0gICAgQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzUmVzdWx0IGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhp
Y3NDb250ZXh0Jik+JiYpOworICAgIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBjbGlwVG9E
cmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJik7CiAg
ICAgCiAgICAgSW50UmVjdCBjbGlwQm91bmRzKCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSA9
IDA7CiAgICAgdmlydHVhbCBJbnRSZWN0IGNsaXBCb3VuZHMoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBo
aWNzQ29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBj
bGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4m
JiBkcmF3aW5nRnVuY3Rpb24pID0gMDsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgdmlydHVhbCB2
b2lkIHBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24pID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuUGFpbnRGcmFtZUZvck1lZGlhKGNv
bnN0IE1lZGlhUGxheWVyJikgY29uc3QgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBjb25z
dCBmbG9hdCBNYXhDbGFtcGVkTGVuZ3RoID0gNDA5NjsKIHN0YXRpYyBjb25zdCBmbG9hdCBNYXhD
bGFtcGVkQXJlYSA9IE1heENsYW1wZWRMZW5ndGggKiBNYXhDbGFtcGVkTGVuZ3RoOwogCi1SZWZQ
dHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0IHNob3Vs
ZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBp
eGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQorUmVmUHRyPEltYWdlQnVm
ZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5n
TW9kZSByZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdCBzaG91bGRVc2VEaXNwbGF5
TGlzdCwgUmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxG
b3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7CiAgICAgUmVmUHRyPEltYWdl
QnVmZmVyPiBpbWFnZUJ1ZmZlcjsKICAgICAKQEAgLTU5LDcgKzU5LDcgQEAgUmVmUHRyPEltYWdl
QnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKAogICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0K
IAotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZv
cm1hdCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUg
cmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0
V2luZG93KiBob3N0V2luZG93KQogewogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZm
ZXI7CiAgICAgCkBAIC05NSw3ICs5NSw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZUMKICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1
ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQog
ewogICAgIGlmIChzaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0x
MTEsNyArMTExLDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQwog
ICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIHJldHVybiBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKHNpemUsIGNvbnRleHQucmVuZGVyaW5nTW9kZSgpLCByZXNvbHV0aW9uU2NhbGUs
IGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiB9CkBAIC0xNjcsNyArMTY3LDcgQEAg
SW50U2l6ZSBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZlclNpegogICAgIHJldHVybiBleHBh
bmRlZEludFNpemUoc2l6ZSAqIGNvbnRleHQuc2NhbGVGYWN0b3IoKSk7CiB9CiAKLVJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNvcHlSZWN0VG9CdWZmZXIoY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y29weVJl
Y3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAg
IGlmIChyZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgJKHJldmlzaW9u
IDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEzICs0NSwxMyBAQCBzdHJ1Y3QgSXRlbUJ1ZmZlckhh
bmRsZTsKIGNsYXNzIEltYWdlQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPElt
YWdlQnVmZmVyPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEltYWdlQnVmZmVyPiB7CiBwdWJsaWM6
CiAgICAgLy8gV2lsbCByZXR1cm4gYSBudWxsIHBvaW50ZXIgb24gYWxsb2NhdGlvbiBmYWlsdXJl
LgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShj
b25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdCwgUmVu
ZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UsIFBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNp
emUmLCBSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZs
b2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQ
dXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYsIFBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNp
emUmLCBSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYsIFBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIp
OwogCiAgICAgLy8gQ3JlYXRlIGFuIGltYWdlIGJ1ZmZlciBjb21wYXRpYmxlIHdpdGggdGhlIGNv
bnRleHQsIHdpdGggc3VpdGFibGUgcmVzb2x1dGlvbiBmb3IgZHJhd2luZyBpbnRvIHRoZSBidWZm
ZXIgYW5kIHRoZW4gaW50byB0aGlzIGNvbnRleHQuCiAgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBjb25zdCBHcmFw
aGljc0NvbnRleHQmKTsKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgY29u
c3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3Jl
YXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CisgICAg
c3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBG
bG9hdFNpemUmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICAvLyBU
aGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQgd2hlbiBjbGFtcGluZyB0aGUgSW1hZ2VCdWZmZXIgd2hp
Y2ggaXMgY3JlYXRlZCBmb3IgZmlsdGVyLCBtYXNrZXIgb3IgY2xpcHBlci4KICAgICBzdGF0aWMg
Ym9vbCBzaXplTmVlZHNDbGFtcGluZyhjb25zdCBGbG9hdFNpemUmKTsKQEAgLTEwNyw3ICsxMDcs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5n
U3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJlc2Vy
dmVSZXNvbHV0aW9uOjpObykgY29uc3QgPSAwOwogCiAgICAgLy8gQ3JlYXRlIGFuIGltYWdlIGJ1
ZmZlciBjb21wYXRpYmxlIHdpdGggdGhlIGNvbnRleHQgYW5kIGNvcHkgcmVjdCBmcm9tIHRoaXMg
YnVmZmVyIGludG8gdGhpcyBuZXcgb25lLgotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY29weVJl
Y3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYpOworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY29weVJlY3RUb0J1
ZmZlcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25z
dCBHcmFwaGljc0NvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
PSB7IH0pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiA9IHsgfSkgPSAwOwpAQCAtMTIwLDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgY2xpcFRvTWFzayhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgY29udmVydFRvTHVtaW5hbmNlTWFzaygpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9y
U3BhY2Ugc3JjQ29sb3JTcGFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGRzdENvbG9yU3BhY2Up
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmIHNyY0NvbG9yU3BhY2UsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYgZHN0Q29sb3JTcGFjZSkgPSAwOwogCiAgICAgdmlydHVhbCBTdHJpbmcgdG9EYXRhVVJMKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IFdURjo6bnVs
bG9wdCwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkgPSBXVEY6Om51bGxvcHQpIGNvbnN0ID0g
MDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFj
a2VuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTMsNiArNTMsOCBAQCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVyQmFja2Vu
ZChjCiB7CiB9CiAKK0ltYWdlQnVmZmVyQmFja2VuZDo6fkltYWdlQnVmZmVyQmFja2VuZCgpID0g
ZGVmYXVsdDsKKwogUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnNpbmtJ
bnRvTmF0aXZlSW1hZ2UoKQogewogICAgIHJldHVybiBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlC
YWNraW5nU3RvcmUpOwpAQCAtMTE0LDE1ICsxMTYsMTcgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+
IEltYWdlQnVmZmVyQmFja2VuZAogICAgIGlmIChkZXN0aW5hdGlvblJlY3Quc2l6ZSgpICE9IHNv
dXJjZVJlY3RTY2FsZWQuc2l6ZSgpKQogICAgICAgICBwaXhlbEJ1ZmZlci0+ZGF0YSgpLnplcm9G
aWxsKCk7CiAKLSAgICBDb25zdFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgc291cmNlOwotICAg
IHNvdXJjZS5mb3JtYXQgPSB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQs
IHBpeGVsRm9ybWF0KCksIGNvbG9yU3BhY2UoKSB9OwotICAgIHNvdXJjZS5ieXRlc1BlclJvdyA9
IGJ5dGVzUGVyUm93KCk7Ci0gICAgc291cmNlLnJvd3MgPSByZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPihkYXRhKSArIHNvdXJjZVJlY3RDbGlwcGVkLnkoKSAqIHNvdXJjZS5ieXRlc1BlclJvdyAr
IHNvdXJjZVJlY3RDbGlwcGVkLngoKSAqIDQ7CisgICAgQ29uc3RQaXhlbEJ1ZmZlckNvbnZlcnNp
b25WaWV3IHNvdXJjZSB7CisgICAgICAgIHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVs
dGlwbGllZCwgcGl4ZWxGb3JtYXQoKSwgY29sb3JTcGFjZSgpIH0sCisgICAgICAgIGJ5dGVzUGVy
Um93KCksCisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEpICsgc291cmNl
UmVjdENsaXBwZWQueSgpICogc291cmNlLmJ5dGVzUGVyUm93ICsgc291cmNlUmVjdENsaXBwZWQu
eCgpICogNAorICAgIH07CiAgICAgCi0gICAgUGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBkZXN0
aW5hdGlvbjsKLSAgICBkZXN0aW5hdGlvbi5mb3JtYXQgPSBkZXN0aW5hdGlvbkZvcm1hdDsKLSAg
ICBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyA9IDQgKiBzb3VyY2VSZWN0U2NhbGVkLndpZHRoKCk7
Ci0gICAgZGVzdGluYXRpb24ucm93cyA9IHBpeGVsQnVmZmVyLT5kYXRhKCkuZGF0YSgpICsgZGVz
dGluYXRpb25SZWN0LnkoKSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ICsgZGVzdGluYXRpb25S
ZWN0LngoKSAqIDQ7CisgICAgUGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBkZXN0aW5hdGlvbiB7
CisgICAgICAgIGRlc3RpbmF0aW9uRm9ybWF0LAorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oNCAqIHNvdXJjZVJlY3RTY2FsZWQud2lkdGgoKSksCisgICAgICAgIHBpeGVsQnVmZmVyLT5k
YXRhKCkuZGF0YSgpICsgZGVzdGluYXRpb25SZWN0LnkoKSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVy
Um93ICsgZGVzdGluYXRpb25SZWN0LngoKSAqIDQKKyAgICB9OwogCiAgICAgY29udmVydEltYWdl
UGl4ZWxzKHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uUmVjdC5zaXplKCkpOwogCkBA
IC0xNDcsMTUgKzE1MSwxNyBAQCB2b2lkIEltYWdlQnVmZmVyQmFja2VuZDo6cHV0UGl4ZWxCdWZm
ZXIoCiAgICAgZGVzdGluYXRpb25SZWN0LmludGVyc2VjdChiYWNrZW5kUmVjdCgpKTsKICAgICBz
b3VyY2VSZWN0Q2xpcHBlZC5zZXRTaXplKGRlc3RpbmF0aW9uUmVjdC5zaXplKCkpOwogCi0gICAg
Q29uc3RQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IHNvdXJjZTsKLSAgICBzb3VyY2UuZm9ybWF0
ID0gc291cmNlUGl4ZWxCdWZmZXIuZm9ybWF0KCk7Ci0gICAgc291cmNlLmJ5dGVzUGVyUm93ID0g
NCAqIHNvdXJjZVBpeGVsQnVmZmVyLnNpemUoKS53aWR0aCgpOwotICAgIHNvdXJjZS5yb3dzID0g
c291cmNlUGl4ZWxCdWZmZXIuZGF0YSgpLmRhdGEoKSArIHNvdXJjZVJlY3RDbGlwcGVkLnkoKSAq
IHNvdXJjZS5ieXRlc1BlclJvdyArIHNvdXJjZVJlY3RDbGlwcGVkLngoKSAqIDQ7Ci0KLSAgICBQ
aXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IGRlc3RpbmF0aW9uOwotICAgIGRlc3RpbmF0aW9uLmZv
cm1hdCA9IHsgZGVzdGluYXRpb25BbHBoYUZvcm1hdCwgcGl4ZWxGb3JtYXQoKSwgY29sb3JTcGFj
ZSgpIH07Ci0gICAgZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgPSBieXRlc1BlclJvdygpOwotICAg
IGRlc3RpbmF0aW9uLnJvd3MgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhKSArIGRl
c3RpbmF0aW9uUmVjdC55KCkgKiBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyArIGRlc3RpbmF0aW9u
UmVjdC54KCkgKiA0OworICAgIENvbnN0UGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBzb3VyY2Ug
eworICAgICAgICBzb3VyY2VQaXhlbEJ1ZmZlci5mb3JtYXQoKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KDQgKiBzb3VyY2VQaXhlbEJ1ZmZlci5zaXplKCkud2lkdGgoKSksCisgICAg
ICAgIHNvdXJjZVBpeGVsQnVmZmVyLmRhdGEoKS5kYXRhKCkgKyBzb3VyY2VSZWN0Q2xpcHBlZC55
KCkgKiBzb3VyY2UuYnl0ZXNQZXJSb3cgKyBzb3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0CisgICAg
fTsKKworICAgIFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgZGVzdGluYXRpb24geworICAgICAg
ICB7IGRlc3RpbmF0aW9uQWxwaGFGb3JtYXQsIHBpeGVsRm9ybWF0KCksIGNvbG9yU3BhY2UoKSB9
LAorICAgICAgICBieXRlc1BlclJvdygpLAorICAgICAgICByZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPihkYXRhKSArIGRlc3RpbmF0aW9uUmVjdC55KCkgKiBkZXN0aW5hdGlvbi5ieXRlc1BlclJv
dyArIGRlc3RpbmF0aW9uUmVjdC54KCkgKiA0CisgICAgfTsKIAogICAgIGNvbnZlcnRJbWFnZVBp
eGVscyhzb3VyY2UsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvblJlY3Quc2l6ZSgpKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyQmFja2VuZC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyAr
MjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKKyNpbmNs
dWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNp
bmNsdWRlICJHcmFwaGljc1R5cGVzR0wuaCIKICNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9u
cy5oIgpAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFBpeGVsRm9ybWF0IHBpeGVs
Rm9ybWF0OwogICAgIH07CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbWFnZUJ1ZmZl
ckJhY2tlbmQoKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SW1hZ2VC
dWZmZXJCYWNrZW5kKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSW50U2l6ZSBjYWxj
dWxhdGVCYWNrZW5kU2l6ZShjb25zdCBQYXJhbWV0ZXJzJik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIHNpemVfdCBjYWxjdWxhdGVNZW1vcnlDb3N0KGNvbnN0IEludFNpemUmIGJhY2tlbmRT
aXplLCB1bnNpZ25lZCBieXRlc1BlclJvdyk7CkBAIC0xMDIsNyArMTAyLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBjbGlwVG9NYXNrKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYpIHsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb252ZXJ0VG9MdW1pbmFuY2VN
YXNrKCk7Ci0gICAgdmlydHVhbCB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25D
b2xvclNwYWNlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB0
cmFuc2Zvcm1Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYpIHsgfQogCiAgICAgdmlydHVhbCBTdHJpbmcgdG9EYXRhVVJM
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2Vy
dmVSZXNvbHV0aW9uKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8dWludDhfdD4gdG9E
YXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkgY29u
c3QgPSAwOwpAQCAtMTQwLDcgKzE0MCw3IEBAIHByb3RlY3RlZDoKIAogICAgIEludFNpemUgbG9n
aWNhbFNpemUoKSBjb25zdCB7IHJldHVybiBJbnRTaXplKG1fcGFyYW1ldGVycy5sb2dpY2FsU2l6
ZSk7IH0KICAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3BhcmFt
ZXRlcnMucmVzb2x1dGlvblNjYWxlOyB9Ci0gICAgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9y
U3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMuY29sb3JTcGFjZTsgfQorICAgIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFyYW1ldGVycy5jb2xvclNwYWNlOyB9CiAgICAgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQoKSBj
b25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMucGl4ZWxGb3JtYXQ7IH0KIAogICAgIEludFJlY3Qg
bG9naWNhbFJlY3QoKSBjb25zdCB7IHJldHVybiBJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIGxv
Z2ljYWxTaXplKCkpOyB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGl4ZWxCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BpeGVsQnVmZmVyLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Miw2ICs0Miw5IEBAIGJvb2wgUGl4ZWxCdWZmZXI6OnN1cHBvcnRlZFBpeGVsRm9ybWF0KFAKICAg
ICBjYXNlIFBpeGVsRm9ybWF0OjpSR0IxMEE4OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQorICAgIAorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKIH0K
IAogQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IFBpeGVsQnVmZmVyOjpjb21wdXRl
QnVmZmVyU2l6ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZm9ybWF0LCBjb25zdCBJbnRTaXpl
JiBzaXplKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZm
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhl
bEJ1ZmZlci5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QaXhlbEJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFscGhhUHJlbXVsdGlwbGljYXRpb24uaCIKLSNpbmNs
dWRlICJDb2xvclNwYWNlLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAj
aW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlBpeGVsQnVmZmVyRm9ybWF0LmgiCiAjaW5j
bHVkZSAiUGl4ZWxGb3JtYXQuaCIKQEAgLTg3LDE5ICs4NywyMSBAQCB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIFBpeGVsQnVmZmVyCiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlv
bmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZlcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7
Ci0gICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
Zm9ybWF0KSkKKyAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlckZvcm1hdD4gZm9ybWF0OworICAgIGRl
Y29kZXIgPj4gZm9ybWF0OworICAgIGlmICghZm9ybWF0KQogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogCiAgICAgLy8gRklYTUU6IFN1cHBvcnQgbm9uLTggYml0IGZvcm1hdHMuCi0gICAg
aWYgKCEoZm9ybWF0LnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCB8fCBmb3JtYXQu
cGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KSkKKyAgICBpZiAoIShmb3JtYXQtPnBp
eGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCB8fCBmb3JtYXQtPnBpeGVsRm9ybWF0ID09
IFBpeGVsRm9ybWF0OjpCR1JBOCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAg
ICBJbnRTaXplIHNpemU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaXplKSkKKyAgICBPcHRp
b25hbDxJbnRTaXplPiBzaXplOworICAgIGRlY29kZXIgPj4gc2l6ZTsKKyAgICBpZiAoIXNpemUp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBhdXRvIGNvbXB1dGVkQnVmZmVy
U2l6ZSA9IFBpeGVsQnVmZmVyOjpjb21wdXRlQnVmZmVyU2l6ZShmb3JtYXQsIHNpemUpOworICAg
IGF1dG8gY29tcHV0ZWRCdWZmZXJTaXplID0gUGl4ZWxCdWZmZXI6OmNvbXB1dGVCdWZmZXJTaXpl
KCpmb3JtYXQsICpzaXplKTsKICAgICBpZiAoY29tcHV0ZWRCdWZmZXJTaXplLmhhc092ZXJmbG93
ZWQoKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIApAQCAtMTA3LDcgKzEwOSw3IEBA
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPFBpeGVsQnUKICAgICBpZiAoIWRlY29k
ZXIudGVtcGxhdGUgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjx1aW50OF90PihidWZmZXJT
aXplKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIGF1dG8gcmVzdWx0ID0g
UGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZUZvckRlY29kaW5nKGZvcm1hdCwgc2l6ZSwgYnVmZmVyU2l6
ZSk7CisgICAgYXV0byByZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlRm9yRGVjb2Rpbmco
V1RGTW92ZSgqZm9ybWF0KSwgKnNpemUsIGJ1ZmZlclNpemUpOwogICAgIGlmICghcmVzdWx0KQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckNvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVyc2lvbi5jcHAJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bp
eGVsQnVmZmVyQ29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEyICsyNywxMSBA
QAogI2luY2x1ZGUgIlBpeGVsQnVmZmVyQ29udmVyc2lvbi5oIgogCiAjaW5jbHVkZSAiQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbi5oIgotI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAi
UGl4ZWxGb3JtYXQuaCIKIAogI2lmIFVTRShBQ0NFTEVSQVRFKSAmJiBVU0UoQ0cpCi0jaW5jbHVk
ZSAiQ29sb3JTcGFjZUNHLmgiCiAjaW5jbHVkZSA8QWNjZWxlcmF0ZS9BY2NlbGVyYXRlLmg+CiAj
ZW5kaWYKIApAQCAtNzEsNyArNzAsNyBAQCBzdGF0aWMgaW5saW5lIHZJbWFnZV9DR0ltYWdlRm9y
bWF0IG1ha2VWCiAKICAgICByZXN1bHQuYml0c1BlckNvbXBvbmVudCA9IGJpdHNQZXJDb21wb25l
bnQ7CiAgICAgcmVzdWx0LmJpdHNQZXJQaXhlbCA9IGJpdHNQZXJQaXhlbDsKLSAgICByZXN1bHQu
Y29sb3JTcGFjZSA9IGNhY2hlZENHQ29sb3JTcGFjZShmb3JtYXQuY29sb3JTcGFjZSk7CisgICAg
cmVzdWx0LmNvbG9yU3BhY2UgPSBmb3JtYXQuY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2Uo
KTsKICAgICByZXN1bHQuYml0bWFwSW5mbyA9IGJpdG1hcEluZm87CiAgICAgcmVzdWx0LnZlcnNp
b24gPSAwOwogICAgIHJlc3VsdC5kZWNvZGUgPSBudWxscHRyOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5oCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1
ZmZlckZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIkFscGhhUHJlbXVsdGlwbGljYXRpb24uaCIKLSNpbmNsdWRlICJDb2xv
clNwYWNlLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAi
UGl4ZWxGb3JtYXQuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9P
cHRpb25hbC5oPgpAQCAtNTEsMTkgKzUxLDIyIEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgUGl4ZWxCdWZmZXIKIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8UGl4ZWxC
dWZmZXJGb3JtYXQ+IFBpeGVsQnVmZmVyRm9ybWF0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IHsKLSAgICBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGFscGhhRm9ybWF0OwotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoYWxwaGFGb3JtYXQpKQorICAgIE9wdGlvbmFsPEFscGhhUHJlbXVsdGlwbGlj
YXRpb24+IGFscGhhRm9ybWF0OworICAgIGRlY29kZXIgPj4gYWxwaGFGb3JtYXQ7CisgICAgaWYg
KCFhbHBoYUZvcm1hdCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIFBpeGVs
Rm9ybWF0IHBpeGVsRm9ybWF0OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGl4ZWxGb3JtYXQp
KQorICAgIE9wdGlvbmFsPFBpeGVsRm9ybWF0PiBwaXhlbEZvcm1hdDsKKyAgICBkZWNvZGVyID4+
IHBpeGVsRm9ybWF0OworICAgIGlmICghcGl4ZWxGb3JtYXQpCiAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAKLSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZTsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGNvbG9yU3BhY2UpKQorICAgIE9wdGlvbmFsPERlc3RpbmF0aW9u
Q29sb3JTcGFjZT4gY29sb3JTcGFjZTsKKyAgICBkZWNvZGVyID4+IGNvbG9yU3BhY2U7CisgICAg
aWYgKCFjb2xvclNwYWNlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgcmV0
dXJuIHsgeyBhbHBoYUZvcm1hdCwgcGl4ZWxGb3JtYXQsIGNvbG9yU3BhY2UgfSB9OworICAgIHJl
dHVybiB7IHsgV1RGTW92ZSgqYWxwaGFGb3JtYXQpLCBXVEZNb3ZlKCpwaXhlbEZvcm1hdCksIFdU
Rk1vdmUoKmNvbG9yU3BhY2UpIH0gfTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1Db2xvclNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1Db2xvclNwYWNlLmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1Db2xvclNw
YWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIFVTRShDRykKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Cit0eXBl
ZGVmIHN0cnVjdCBDR0NvbG9yU3BhY2UqIENHQ29sb3JTcGFjZVJlZjsKKyNlbHNlCisjaW5jbHVk
ZSA8d3RmL0VudW1UcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNlbmRpZgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBVU0UoQ0cpCisKK3VzaW5nIFBsYXRmb3JtQ29s
b3JTcGFjZSA9IFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+OwordXNpbmcgUGxhdGZvcm1Db2xv
clNwYWNlVmFsdWUgPSBDR0NvbG9yU3BhY2VSZWY7CisKKyNlbHNlCisKK2NsYXNzIFBsYXRmb3Jt
Q29sb3JTcGFjZSB7CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBOYW1lIHsKKyAgICAgICAgU1JH
QgorI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKKyAgICAg
ICAgLCBMaW5lYXJTUkdCCisjZW5kaWYKKyNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BB
Q0VfRElTUExBWV9QMykKKyAgICAgICAgLCBEaXNwbGF5UDMKKyNlbmRpZgorICAgIH07CisKKyAg
ICBQbGF0Zm9ybUNvbG9yU3BhY2UoTmFtZSBuYW1lKQorICAgICAgICA6IG1fbmFtZSB7IG5hbWUg
fQorICAgIHsKKyAgICB9CisKKyAgICBOYW1lIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsg
fQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxQbGF0Zm9y
bUNvbG9yU3BhY2U+IGRlY29kZShEZWNvZGVyJik7CisKK3ByaXZhdGU6CisgICAgTmFtZSBtX25h
bWU7CisKK307Cit1c2luZyBQbGF0Zm9ybUNvbG9yU3BhY2VWYWx1ZSA9IFBsYXRmb3JtQ29sb3JT
cGFjZTo6TmFtZTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBQbGF0Zm9ybUNvbG9y
U3BhY2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwg
bV9uYW1lOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxQbGF0Zm9ybUNv
bG9yU3BhY2U+IFBsYXRmb3JtQ29sb3JTcGFjZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7
CisgICAgT3B0aW9uYWw8UGxhdGZvcm1Db2xvclNwYWNlOjpOYW1lPiBuYW1lOworICAgIGRlY29k
ZXIgPj4gbmFtZTsKKyAgICBpZiAoIW5hbWUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICByZXR1cm4gUGxhdGZvcm1Db2xvclNwYWNlIHsgKm5hbWUgfTsKK30KKworI2VuZGlm
CisKK30KKworbmFtZXNwYWNlIFdURiB7CisKKyNpZiAhVVNFKENHKQorCit0ZW1wbGF0ZTw+IHN0
cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZT4geworICAg
IHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OlBsYXRmb3JtQ29s
b3JTcGFjZTo6TmFtZSwKKyAgICAgICAgV2ViQ29yZTo6UGxhdGZvcm1Db2xvclNwYWNlOjpOYW1l
OjpTUkdCCisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQor
ICAgICAgICAsIFdlYkNvcmU6OlBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZTo6TGluZWFyU1JHQgor
I2VuZGlmCisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCisg
ICAgICAgICwgV2ViQ29yZTo6UGxhdGZvcm1Db2xvclNwYWNlOjpOYW1lOjpEaXNwbGF5UDMKKyNl
bmRpZgorICAgID47Cit9OworCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRl
b1NhbXBsZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyAr
NTYsNyBAQCBzdGF0aWMgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+CiAgICAgfQog
CiAgICAgSW50U2l6ZSBzaXplIHsgc3RhdGljX2Nhc3Q8aW50PihDVlBpeGVsQnVmZmVyR2V0V2lk
dGgocGl4ZWxCdWZmZXIpKSwgc3RhdGljX2Nhc3Q8aW50PihDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0
KHBpeGVsQnVmZmVyKSkgfTsKLSAgICBhdXRvIGlvU3VyZmFjZSA9ICBJT1N1cmZhY2U6OmNyZWF0
ZShzaXplLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBJT1N1cmZhY2U6OkZvcm1hdDo6QkdSQSk7Cisg
ICAgYXV0byBpb1N1cmZhY2UgPSAgSU9TdXJmYWNlOjpjcmVhdGUoc2l6ZSwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCksIElPU3VyZmFjZTo6Rm9ybWF0OjpCR1JBKTsKIAogICAgIElPU3Vy
ZmFjZTo6TG9ja2VyIGxvY2soKmlvU3VyZmFjZSk7CiAgICAgdkltYWdlX0J1ZmZlciBzcmM7CkBA
IC0xMTMsNyArMTEzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBSZW1v
dAogICAgICAgICBzdXJmYWNlID0gaW9TdXJmYWNlLT5zdXJmYWNlKCk7CiAgICAgfQogCi0gICAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4obmV3IFJlbW90ZVZpZGVv
U2FtcGxlKHN1cmZhY2UsIHNSR0JDb2xvclNwYWNlUmVmKCksIHNhbXBsZS5wcmVzZW50YXRpb25U
aW1lKCksIHNhbXBsZS52aWRlb1JvdGF0aW9uKCksIHNhbXBsZS52aWRlb01pcnJvcmVkKCkpKTsK
KyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPihuZXcgUmVtb3Rl
VmlkZW9TYW1wbGUoc3VyZmFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHNhbXBs
ZS5wcmVzZW50YXRpb25UaW1lKCksIHNhbXBsZS52aWRlb1JvdGF0aW9uKCksIHNhbXBsZS52aWRl
b01pcnJvcmVkKCkpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBS
ZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKENWUGl4ZWxCdWZmZXJSZWYgaW1hZ2VCdWZmZXIsIE1l
ZGlhVGltZSYmIHByZXNlbnRhdGlvblRpbWUsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJv
dGF0aW9uKQpAQCAtMTI0LDEwICsxMjQsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVv
U2FtcGxlPiBSZW1vdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1
cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPihuZXcgUmVtb3RlVmlkZW9TYW1w
bGUoc3VyZmFjZSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwgV1RGTW92ZShwcmVzZW50YXRpb25UaW1l
KSwgcm90YXRpb24sIGZhbHNlKSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVW
aWRlb1NhbXBsZT4obmV3IFJlbW90ZVZpZGVvU2FtcGxlKHN1cmZhY2UsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpLCBXVEZNb3ZlKHByZXNlbnRhdGlvblRpbWUpLCByb3RhdGlvbiwgZmFs
c2UpKTsKIH0KIAotUmVtb3RlVmlkZW9TYW1wbGU6OlJlbW90ZVZpZGVvU2FtcGxlKElPU3VyZmFj
ZVJlZiBzdXJmYWNlLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwgTWVkaWFUaW1lJiYgdGlt
ZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24sIGJvb2wgbWlycm9yZWQpCitS
ZW1vdGVWaWRlb1NhbXBsZTo6UmVtb3RlVmlkZW9TYW1wbGUoSU9TdXJmYWNlUmVmIHN1cmZhY2Us
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgTWVkaWFUaW1lJiYgdGlt
ZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24sIGJvb2wgbWlycm9yZWQpCiAg
ICAgOiBtX2lvU3VyZmFjZShXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TdXJmYWNlKHN1
cmZhY2UsIGNvbG9yU3BhY2UpKQogICAgICwgbV9yb3RhdGlvbihyb3RhdGlvbikKICAgICAsIG1f
dGltZShXVEZNb3ZlKHRpbWUpKQpAQCAtMTQwLDcgKzE0MCw3IEBAIFJlbW90ZVZpZGVvU2FtcGxl
OjpSZW1vdGVWaWRlb1NhbXBsZShJT1MKIElPU3VyZmFjZVJlZiBSZW1vdGVWaWRlb1NhbXBsZTo6
c3VyZmFjZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lvU3VyZmFjZSAmJiBtX3NlbmRSaWdodCkK
LSAgICAgICAgY29uc3RfY2FzdDxSZW1vdGVWaWRlb1NhbXBsZSo+KHRoaXMpLT5tX2lvU3VyZmFj
ZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGNvbnN0
X2Nhc3Q8UmVtb3RlVmlkZW9TYW1wbGUqPih0aGlzKS0+bV9zZW5kUmlnaHQpLCBzUkdCQ29sb3JT
cGFjZVJlZigpKTsKKyAgICAgICAgY29uc3RfY2FzdDxSZW1vdGVWaWRlb1NhbXBsZSo+KHRoaXMp
LT5tX2lvU3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChX
VEZNb3ZlKGNvbnN0X2Nhc3Q8UmVtb3RlVmlkZW9TYW1wbGUqPih0aGlzKS0+bV9zZW5kUmlnaHQp
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAKICAgICByZXR1cm4gbV9pb1N1cmZh
Y2UgPyBtX2lvU3VyZmFjZS0+c3VyZmFjZSgpIDogbnVsbHB0cjsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVt
b3RlVmlkZW9TYW1wbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBAIHB1Ymxp
YzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgUmVtb3RlVmlkZW9TYW1wbGUoSU9TdXJmYWNlUmVm
LCBDR0NvbG9yU3BhY2VSZWYsIE1lZGlhVGltZSYmLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlv
biwgYm9vbCk7CisgICAgUmVtb3RlVmlkZW9TYW1wbGUoSU9TdXJmYWNlUmVmLCBjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmLCBNZWRpYVRpbWUmJiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRp
b24sIGJvb2wpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gbV9p
b1N1cmZhY2U7CiAgICAgV1RGOjpNYWNoU2VuZFJpZ2h0IG1fc2VuZFJpZ2h0OwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0Js
dXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICAgICAg
Y2xlYXJTY3JhdGNoQnVmZmVyKCk7CiAKICAgICAgICAgLy8gU2hhZG93Qmx1ciBpcyBub3QgdXNl
ZCB3aXRoIGFjY2VsZXJhdGVkIGRyYXdpbmcsIHNvIGl0J3MgT0sgdG8gbWFrZSBhbiB1bmNvbmRp
dGlvbmFsbHkgdW5hY2NlbGVyYXRlZCBidWZmZXIuCi0gICAgICAgIG1faW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHJvdW5kZWRTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJh
dGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CisgICAgICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJvdW5kZWRTaXpl
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZm
ZXI7CiAgICAgfQogCkBAIC02MDQsNyArNjA0LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5z
ZXRTaGFkb3coY29uc3QgQQogCiB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91
dFRpbGluZyhjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBz
aGFkb3dlZFJlY3QsIGNvbnN0IExheWVySW1hZ2VQcm9wZXJ0aWVzJiBsYXllckltYWdlUHJvcGVy
dGllcywgY29uc3QgRHJhd0J1ZmZlckNhbGxiYWNrJiBkcmF3QnVmZmVyKQogewotICAgIGF1dG8g
bGF5ZXJJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoZXhwYW5kZWRJbnRTaXplKGxheWVySW1h
Z2VQcm9wZXJ0aWVzLmxheWVyU2l6ZSksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBh
dXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZShsYXll
ckltYWdlUHJvcGVydGllcy5sYXllclNpemUpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
LCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
ICAgICBpZiAoIWxheWVySW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApAQCAtNjMyLDcgKzYzMiw3
IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGkKIAogdm9pZCBTaGFk
b3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYsIGNvbnN0IEZsb2F0UmVjdCYgZnVsbFJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhv
bGVSZWN0LCBjb25zdCBMYXllckltYWdlUHJvcGVydGllcyYgbGF5ZXJJbWFnZVByb3BlcnRpZXMs
IGNvbnN0IERyYXdCdWZmZXJDYWxsYmFjayYgZHJhd0J1ZmZlcikKIHsKLSAgICBhdXRvIGxheWVy
SW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJv
cGVydGllcy5sYXllclNpemUpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBs
YXllckltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShleHBhbmRlZEludFNpemUobGF5ZXJJbWFn
ZVByb3BlcnRpZXMubGF5ZXJTaXplKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAg
aWYgKCFsYXllckltYWdlKQogICAgICAgICByZXR1cm47CiAKQEAgLTcwNSw3ICs3MDUsNyBAQCB2
b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluCiAjZW5kaWYKIAogICAgIGlm
ICghbGF5ZXJJbWFnZUJ1ZmZlcikgewotICAgICAgICBsYXllckltYWdlQnVmZmVyID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
IDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAg
ICAgICAgbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGVtcGxhdGVTaXpl
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgaWYgKCFsYXllckltYWdlQnVm
ZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTc2Myw3ICs3NjMsNyBAQCB2b2lk
IFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpCiAjZW5kaWYKIAogICAgIGlmICgh
bGF5ZXJJbWFnZUJ1ZmZlcikgewotICAgICAgICBsYXllckltYWdlQnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAg
ICAgbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGVtcGxhdGVTaXplLCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgaWYgKCFsYXllckltYWdlQnVmZmVy
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTkwMyw3ICs5MDMsNyBAQCB2b2lkIFNo
YWRvd0JsdXI6OmJsdXJTaGFkb3dCdWZmZXIoSW1hZ2VCCiAgICAgaWYgKG1fdHlwZSAhPSBCbHVy
U2hhZG93KQogICAgICAgICByZXR1cm47CiAKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQg
eyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpS
R0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgUGl4ZWxCdWZmZXJGb3Jt
YXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhl
bEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgSW50
UmVjdCBibHVyUmVjdChJbnRQb2ludCgpLCB0ZW1wbGF0ZVNpemUpOwogICAgIGF1dG8gbGF5ZXJE
YXRhID0gbGF5ZXJJbWFnZS5nZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIGJsdXJSZWN0KTsKICAgICBp
ZiAoIWxheWVyRGF0YSkKQEAgLTkzMyw3ICs5MzMsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdT
aGFkb3dMYXllcihjb25zdCBBCiAKICAgICBhZGp1c3RCbHVyUmFkaXVzKHRyYW5zZm9ybSk7CiAK
LSAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6
ZShsYXllckltYWdlUHJvcGVydGllcy0+bGF5ZXJTaXplKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdS
QTgpOworICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoZXhwYW5kZWRJ
bnRTaXplKGxheWVySW1hZ2VQcm9wZXJ0aWVzLT5sYXllclNpemUpLCBSZW5kZXJpbmdNb2RlOjpV
bmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKICAgICBpZiAoIWxheWVySW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdM
QU5HTEUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyB2b2lkIHdp
cGVBbHBoYUNoYW5uZWxGcm9tUGl4ZWxzKGkKIAogT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIHsKLSAgICBQ
aXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11
bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
IH07CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlv
bjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpIH07CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlD
cmVhdGUoZm9ybWF0LCBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpKTsKICAgICBpZiAoIXBp
eGVsQnVmZmVyKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTQsNyArNDE0LDcgQEAgRmxvYXRSZWN0IEdyYXBoaWNz
Q29udGV4dEltcGxDYWlybzo6cm91bgogICAgIHJldHVybiBDYWlybzo6U3RhdGU6OnJvdW5kVG9E
ZXZpY2VQaXhlbHMobV9wbGF0Zm9ybUNvbnRleHQsIHJlY3QpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEltcGxDYWlybzo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4m
JikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMo
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRnVuY3Rpb248
dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikKIHsKICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVu
dGVkLgogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgJKHJldmlzaW9u
IDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dEltcGxDYWlyby5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAg
cHVibGljOgogICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSBvdmVycmlk
ZTsKICAgICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsaXBUb0lt
YWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
RGVzdGluYXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYm
KSBvdmVycmlkZTsKKyAgICB2b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGdW5jdGlvbjx2
b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKICNpZiBFTkFCTEUoVklERU8pCiAg
ICAgdm9pZCBwYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uKSBvdmVycmlkZTsKICAgICBib29sIGNhblBhaW50RnJhbWVGb3JNZWRpYShj
b25zdCBNZWRpYVBsYXllciYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
QmFja2VuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
QmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDE5ICs4OSwxOSBAQCB2b2lkIEltYWdl
QnVmZmVyQ2Fpcm9CYWNrZW5kOjpjbGlwVG9NYXNrCiAgICAgICAgIENhaXJvOjpjbGlwVG9JbWFn
ZUJ1ZmZlcigqZGVzdENvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIGltYWdlLT5wbGF0Zm9ybUlt
YWdlKCkuZ2V0KCksIGRlc3RSZWN0KTsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2Vu
ZDo6dHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc3JjQ29sb3JTcGFj
ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGRlc3RDb2xvclNwYWNlKQordm9pZCBJbWFnZUJ1ZmZl
ckNhaXJvQmFja2VuZDo6dHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmIHNyY0NvbG9yU3BhY2UsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgZGVzdENv
bG9yU3BhY2UpCiB7CiAgICAgaWYgKHNyY0NvbG9yU3BhY2UgPT0gZGVzdENvbG9yU3BhY2UpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIG9ubHkgc1JHQiA8LT4gbGluZWFyUkdCIGFyZSBzdXBw
b3J0ZWQgYXQgdGhlIG1vbWVudAotICAgIGlmICgoc3JjQ29sb3JTcGFjZSAhPSBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OkxpbmVhclNSR0IgJiYgc3JjQ29sb3JTcGFjZSAhPSBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IpCi0gICAgICAgIHx8IChkZXN0Q29sb3JTcGFjZSAhPSBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OkxpbmVhclNSR0IgJiYgZGVzdENvbG9yU3BhY2UgIT0gRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKSkKKyAgICBpZiAoKHNyY0NvbG9yU3BhY2UgIT0gRGVzdGluYXRpb25D
b2xvclNwYWNlOjpMaW5lYXJTUkdCKCkgJiYgc3JjQ29sb3JTcGFjZSAhPSBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSkKKyAgICAgICAgfHwgKGRlc3RDb2xvclNwYWNlICE9IERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigpICYmIGRlc3RDb2xvclNwYWNlICE9IERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9wYXJhbWV0
ZXJzLmNvbG9yU3BhY2UgPSBkZXN0Q29sb3JTcGFjZTsKIAotICAgIGlmIChkZXN0Q29sb3JTcGFj
ZSA9PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IpIHsKKyAgICBpZiAoZGVzdENv
bG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCkpIHsKICAgICAg
ICAgc3RhdGljIGNvbnN0IHN0ZDo6YXJyYXk8dWludDhfdCwgMjU2PiBsaW5lYXJSZ2JMVVQgPSBb
XSB7CiAgICAgICAgICAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4gYXJyYXk7CiAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKQEAgLTExMiw3ICsxMTIs
NyBAQCB2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjp0cmFuc2Zvcm1DCiAgICAgICAgICAg
ICByZXR1cm4gYXJyYXk7CiAgICAgICAgIH0oKTsKICAgICAgICAgcGxhdGZvcm1UcmFuc2Zvcm1D
b2xvclNwYWNlKGxpbmVhclJnYkxVVCk7Ci0gICAgfSBlbHNlIGlmIChkZXN0Q29sb3JTcGFjZSA9
PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpIHsKKyAgICB9IGVsc2UgaWYgKGRlc3RDb2xv
clNwYWNlID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKSB7CiAgICAgICAgIHN0YXRp
YyBjb25zdCBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4gZGV2aWNlUmdiTFVUPSBbXSB7CiAgICAg
ICAgICAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4gYXJyYXk7CiAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJD
YWlyb0JhY2tlbmQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsaXBUb01hc2soR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkgb3ZlcnJpZGU7CiAKLSAgICB2
b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIHNyY0NvbG9yU3Bh
Y2UsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBkZXN0Q29sb3JTcGFjZSkgb3ZlcnJpZGU7CisgICAg
dm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgc3Jj
Q29sb3JTcGFjZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBkZXN0Q29sb3JTcGFjZSkg
b3ZlcnJpZGU7CiAKICAgICBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdCBvdmVy
cmlkZTsKICAgICBWZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksMTMgKzI5
LDE0IEBACiAjaWYgVVNFKENHKQogCiAjaW5jbHVkZSAiQ29sb3JTcGFjZUNHLmgiCisjaW5jbHVk
ZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8
cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2lu
Y2x1ZGUgPHd0Zi9UaW55TFJVQ2FjaGUuaD4KLSNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFw
aGljc1NQSS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYv
VGlueUxSVUNhY2hlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBSZXRhaW5QdHI8
Q0dDb2xvclJlZj4gY3JlYXRlQ0dDb2xvcihjb25zdCBDb2xvciYpOwpAQCAtOTEsMzQgKzkyLDM4
IEBAIENvbG9yOjpDb2xvcihDR0NvbG9yUmVmIGNvbG9yLCBPcHRpb25TZXQKIHsKIH0KIAotc3Rh
dGljIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjcmVhdGVDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2xv
cikKK3N0YXRpYyBzdGQ6OnBhaXI8Q0dDb2xvclNwYWNlUmVmLCBDb2xvckNvbXBvbmVudHM8Zmxv
YXQsIDQ+PiBjb252ZXJ0VG9DR0NvbXBhdGlibGVDb21wb25lbnRzKENvbG9yU3BhY2UgY29sb3JT
cGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb21wb25lbnRzKQogewotICAgIGF1dG8g
W2NvbG9yU3BhY2UsIGNvbXBvbmVudHNdID0gY29sb3IuY29sb3JTcGFjZUFuZENvbXBvbmVudHMo
KTsKLQotICAgIGF1dG8gY2dDb2xvclNwYWNlID0gY2FjaGVkTnVsbGFibGVDR0NvbG9yU3BhY2Uo
Y29sb3JTcGFjZSk7Ci0KICAgICAvLyBTb21lIENHIHBvcnRzIGRvbid0IHN1cHBvcnQgYWxsIHRo
ZSBjb2xvciBzcGFjZXMgcmVxdWlyZWQgYW5kIHJldHVybgogICAgIC8vIG51bGxwdHIgZm9yIHVu
c3VwcG9ydGVkIGNvbG9yIHNwYWNlcy4gSW4gdGhvc2UgY2FzZXMsIHdlIGVhZ2VybHkgY29udmVy
dAogICAgIC8vIHRoZSBjb2xvciBpbnRvIGVpdGhlciBleHRlbmRlZCBzUkdCIG9yIG5vcm1hbCBz
UkdCLCBpZiBleHRlbmRlZCBzUkdCIGlzCi0gICAgLy8gbm90IHN1cHBvcnRlZCwgYmVmb3JlIGNy
ZWF0aW5nIHRoZSBDR0NvbG9yUmVmLgorICAgIC8vIG5vdCBzdXBwb3J0ZWQuCisKKyAgICBhdXRv
IGNnQ29sb3JTcGFjZSA9IGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpOwog
ICAgIGlmICghY2dDb2xvclNwYWNlKSB7CiAjaWYgSEFWRShDT1JFX0dSQVBISUNTX0VYVEVOREVE
X1NSR0JfQ09MT1JfU1BBQ0UpCi0gICAgICAgIGF1dG8gY29sb3JDb252ZXJ0ZWRUb0V4dGVuZGVk
U1JHQkEgPSBjYWxsV2l0aENvbG9yVHlwZShjb21wb25lbnRzLCBjb2xvclNwYWNlLCBbXSAoY29u
c3QgYXV0byYgY29sb3IpIHsKLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0Q29sb3I8RXh0ZW5k
ZWRTUkdCQTxmbG9hdD4+KGNvbG9yKTsKKyAgICAgICAgYXV0byBjZ0NvbXBhdGlibGVDb21wb25l
bnRzID0gY2FsbFdpdGhDb2xvclR5cGUoY29tcG9uZW50cywgY29sb3JTcGFjZSwgW10gKGNvbnN0
IGF1dG8mIGNvbG9yKSB7CisgICAgICAgICAgICByZXR1cm4gYXNDb2xvckNvbXBvbmVudHMoY29u
dmVydENvbG9yPEV4dGVuZGVkU1JHQkE8ZmxvYXQ+Pihjb2xvcikpOwogICAgICAgICB9KTsKLSAg
ICAgICAgY29tcG9uZW50cyA9IGFzQ29sb3JDb21wb25lbnRzKGNvbG9yQ29udmVydGVkVG9FeHRl
bmRlZFNSR0JBKTsKLSAgICAgICAgY2dDb2xvclNwYWNlID0gZXh0ZW5kZWRTUkdCQ29sb3JTcGFj
ZVJlZigpOworICAgICAgICByZXR1cm4geyBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCksIGNn
Q29tcGF0aWJsZUNvbXBvbmVudHMgfTsKICNlbHNlCiAgICAgICAgIGF1dG8gY29sb3JDb252ZXJ0
ZWRUb1NSR0JBID0gY2FsbFdpdGhDb2xvclR5cGUoY29tcG9uZW50cywgY29sb3JTcGFjZSwgW10g
KGNvbnN0IGF1dG8mIGNvbG9yKSB7Ci0gICAgICAgICAgICByZXR1cm4gY29udmVydENvbG9yPFNS
R0JBPGZsb2F0Pj4oY29sb3IpOworICAgICAgICAgICAgcmV0dXJuIGFzQ29sb3JDb21wb25lbnRz
KGNvbnZlcnRDb2xvcjxTUkdCQTxmbG9hdD4+KGNvbG9yKSk7CiAgICAgICAgIH0pOwotICAgICAg
ICBjb21wb25lbnRzID0gYXNDb2xvckNvbXBvbmVudHMoY29sb3JDb252ZXJ0ZWRUb1NSR0JBKTsK
LSAgICAgICAgY2dDb2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYoKTsKKyAgICAgICAgcmV0
dXJuIHsgc1JHQkNvbG9yU3BhY2VSZWYoKSwgY2dDb21wYXRpYmxlQ29tcG9uZW50cyB9OwogI2Vu
ZGlmCiAgICAgfQogCi0gICAgYXV0byBbciwgZywgYiwgYV0gPSBjb21wb25lbnRzOwotICAgIENH
RmxvYXQgY2dGbG9hdENvbXBvbmVudHNbNF0geyByLCBnLCBiLCBhIH07CisgICAgcmV0dXJuIHsg
Y2dDb2xvclNwYWNlLCBjb21wb25lbnRzIH07Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8Q0dDb2xv
clJlZj4gY3JlYXRlQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCit7CisgICAgYXV0byBbY29s
b3JTcGFjZSwgY29tcG9uZW50c10gPSBjb2xvci5jb2xvclNwYWNlQW5kQ29tcG9uZW50cygpOwor
ICAgIGF1dG8gW2NnQ29sb3JTcGFjZSwgY2dDb21wYXRpYmxlQ29tcG9uZW50c10gPSBjb252ZXJ0
VG9DR0NvbXBhdGlibGVDb21wb25lbnRzKGNvbG9yU3BhY2UsIGNvbXBvbmVudHMpOworICAgIAor
ICAgIGF1dG8gW2MxLCBjMiwgYzMsIGM0XSA9IGNnQ29tcGF0aWJsZUNvbXBvbmVudHM7CisgICAg
Q0dGbG9hdCBjZ0Zsb2F0Q29tcG9uZW50c1s0XSB7IGMxLCBjMiwgYzMsIGM0IH07CiAKICAgICBy
ZXR1cm4gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKGNnQ29sb3JTcGFjZSwgY2dGbG9hdENvbXBvbmVu
dHMpKTsKIH0KQEAgLTE2MSw2ICsxNjYsMjQgQEAgQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKGNv
bnN0IENvbG9yJiBjbwogICAgIHJldHVybiBjYWNoZS5nZXQoKS5nZXQoY29sb3IpLmdldCgpOwog
fQogCitDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IHBsYXRmb3JtQ29udmVydENvbG9yQ29tcG9u
ZW50cyhDb2xvclNwYWNlIGlucHV0Q29sb3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0
PiBpbnB1dENvbG9yQ29tcG9uZW50cywgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBvdXRw
dXRDb2xvclNwYWNlKQoreworICAgIC8vIEZJWE1FOiBJbnZlc3RpZ2F0ZSBvcHRpbWl6aW5nIHRo
aXMgdG8gdXNlIHRoZSBidWlsdGluIGNvbG9yIGNvbnZlcnNpb24gY29kZSBmb3Igc3VwcG9ydGVk
IGNvbG9yIHNwYWNlcy4KKworICAgIGF1dG8gW2NnSW5wdXRDb2xvclNwYWNlLCBjZ0NvbXBhdGli
bGVDb21wb25lbnRzXSA9IGNvbnZlcnRUb0NHQ29tcGF0aWJsZUNvbXBvbmVudHMoaW5wdXRDb2xv
clNwYWNlLCBpbnB1dENvbG9yQ29tcG9uZW50cyk7CisgICAgaWYgKGNnSW5wdXRDb2xvclNwYWNl
ID09IG91dHB1dENvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCkpCisgICAgICAgIHJldHVy
biBjZ0NvbXBhdGlibGVDb21wb25lbnRzOworCisgICAgYXV0byBbYzEsIGMyLCBjMywgYzRdID0g
Y2dDb21wYXRpYmxlQ29tcG9uZW50czsKKyAgICBDR0Zsb2F0IHNvdXJjZUNvbXBvbmVudHNbNF0g
eyBjMSwgYzIsIGMzLCBjNCB9OworICAgIENHRmxvYXQgZGVzdGluYXRpb25Db21wb25lbnRzWzRd
IHsgfTsKKworICAgIGF1dG8gdHJhbnNmb3JtID0gYWRvcHRDRihDR0NvbG9yVHJhbnNmb3JtQ3Jl
YXRlKG91dHB1dENvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCksIG51bGxwdHIpKTsKKyAg
ICBhdXRvIHJlc3VsdCA9IENHQ29sb3JUcmFuc2Zvcm1Db252ZXJ0Q29sb3JDb21wb25lbnRzKHRy
YW5zZm9ybS5nZXQoKSwgY2dJbnB1dENvbG9yU3BhY2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1
bHQsIHNvdXJjZUNvbXBvbmVudHMsIGRlc3RpbmF0aW9uQ29tcG9uZW50cyk7CisgICAgQVNTRVJU
X1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+
KGRlc3RpbmF0aW9uQ29tcG9uZW50c1swXSksIHN0YXRpY19jYXN0PGZsb2F0PihkZXN0aW5hdGlv
bkNvbXBvbmVudHNbMV0pLCBzdGF0aWNfY2FzdDxmbG9hdD4oZGVzdGluYXRpb25Db21wb25lbnRz
WzJdKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRlc3RpbmF0aW9uQ29tcG9uZW50c1szXSkgfTsKK30K
KwogfQogCiAjZW5kaWYgLy8gVVNFKENHKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgJKHJldmlzaW9uIDI3NzkxOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTksMjMgKzExOSw0IEBAIHN0YXRpYyBpbmxpbmUgQ0dDb2xvclNwYWNl
UmVmIGNhY2hlZE51bGwKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotLy8gTk9URTogU2luY2Ug
dGhpcyBmdW5jdGlvbiBpcyBmb3IgKmRlc3RpbmF0aW9uKiBjb2xvciBzcGFjZXMgd2hvc2UgY2Fs
bGVycyBhbHdheXMgZXhwZWN0IGEgbm9uLW51bGwgY29sb3Igc3BhY2UsIHRoaXMgZnVuY3Rpb24g
aXMgZ3VhcmFudGVlZCB0byByZXR1cm4gbm9uLW51bGwsIHVubGlrZSBjYWNoZWROdWxsYWJsZUNH
Q29sb3JTcGFjZSgpLgotc3RhdGljIGlubGluZSBDR0NvbG9yU3BhY2VSZWYgY2FjaGVkQ0dDb2xv
clNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKQotewotICAgIHN3aXRjaCAo
Y29sb3JTcGFjZSkgewotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOgotICAg
ICAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLSNpZiBFTkFCTEUoREVTVElOQVRJT05f
Q09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OkxpbmVhclNSR0I6Ci0gICAgICAgIHJldHVybiBsaW5lYXJTUkdCQ29sb3JTcGFjZVJlZigpOwot
I2VuZGlmCi0jaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCi0g
ICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMzoKLSAgICAgICAgcmV0dXJu
IGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKTsKLSNlbmRpZgotICAgIH0KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLX0KLQogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xD
Ry5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0R0xDRy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MzIsNyArNTMyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
cGFpbnRUb0NhbgogICAgIH0pKTsKIAogICAgIGF1dG8gaW1hZ2VTaXplID0gcGl4ZWxCdWZmZXIu
c2l6ZSgpOwotICAgIGF1dG8gaW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKGFkb3B0Q0YoQ0dJ
bWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCAzMiwg
NCAqIGltYWdlU2l6ZS53aWR0aCgpLCBjYWNoZWRDR0NvbG9yU3BhY2UocGl4ZWxCdWZmZXIuZm9y
bWF0KCkuY29sb3JTcGFjZSksIGJpdG1hcEluZm8sIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFs
c2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKSk7CisgICAgYXV0byBpbWFnZSA9IE5hdGl2
ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBp
bWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCksIHBpeGVsQnVm
ZmVyLmZvcm1hdCgpLmNvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCksIGJpdG1hcEluZm8s
IGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQp
KSk7CiAKICAgICAvLyBDU1Mgc3R5bGluZyBtYXkgY2F1c2UgdGhlIGNhbnZhcydzIGNvbnRlbnQg
dG8gYmUgcmVzaXplZCBvbgogICAgIC8vIHRoZSBwYWdlLiBHbyBiYWNrIHRvIHRoZSBDYW52YXMg
dG8gZmlndXJlIG91dCB0aGUgY29ycmVjdApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHAJKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBIQVZFKElPU1VSRkFD
RSkKIAorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dENHLmgiCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgog
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtNTksNyArNjAsNyBAQCBJT1N1cmZh
Y2VQb29sJiBJT1N1cmZhY2VQb29sOjpzaGFyZWRQb29sCiAgICAgcmV0dXJuIHBvb2w7CiB9CiAK
LXN0YXRpYyBib29sIHN1cmZhY2VNYXRjaGVzUGFyYW1ldGVycyhJT1N1cmZhY2UmIHN1cmZhY2Us
IEludFNpemUgcmVxdWVzdGVkU2l6ZSwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UsIElPU3Vy
ZmFjZTo6Rm9ybWF0IGZvcm1hdCkKK3N0YXRpYyBib29sIHN1cmZhY2VNYXRjaGVzUGFyYW1ldGVy
cyhJT1N1cmZhY2UmIHN1cmZhY2UsIEludFNpemUgcmVxdWVzdGVkU2l6ZSwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBJT1N1cmZhY2U6OkZvcm1hdCBmb3JtYXQpCiB7
CiAgICAgaWYgKGZvcm1hdCAhPSBzdXJmYWNlLmZvcm1hdCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xMDIsNyArMTAzLDcgQEAgdm9pZCBJT1N1cmZhY2VQb29sOjpkaWRVc2VTdXJmYWNl
T2ZTaXplKAogICAgIG1fc2l6ZXNJblBydW5lT3JkZXIuYXBwZW5kKHNpemUpOwogfQogCi1zdGQ6
OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2VQb29sOjp0YWtlU3VyZmFjZShJbnRTaXpl
IHNpemUsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlLCBJT1N1cmZhY2U6OkZvcm1hdCBmb3Jt
YXQpCitzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2VQb29sOjp0YWtlU3VyZmFj
ZShJbnRTaXplIHNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwg
SU9TdXJmYWNlOjpGb3JtYXQgZm9ybWF0KQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sg
fTsKICAgICBDYWNoZWRTdXJmYWNlTWFwOjppdGVyYXRvciBtYXBJdGVyID0gbV9jYWNoZWRTdXJm
YWNlcy5maW5kKHNpemUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSU9TdXJmYWNlUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSw2ICszOSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRGVz
dGluYXRhdGlvbkNvbG9yU3BhY2U7CisKIGNsYXNzIElPU3VyZmFjZVBvb2wgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKElPU3VyZmFjZVBvb2wpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwpAQCAtNDcsNyArNDksNyBAQCBjbGFzcyBJT1N1cmZhY2VQb29sIHsKIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSU9TdXJmYWNlUG9vbCYgc2hhcmVkUG9vbCgpOwogCi0g
ICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gdGFrZVN1cmZhY2UoSW50U2l6ZSwgQ0dDb2xv
clNwYWNlUmVmLCBJT1N1cmZhY2U6OkZvcm1hdCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPElPU3Vy
ZmFjZT4gdGFrZVN1cmZhY2UoSW50U2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwg
SU9TdXJmYWNlOjpGb3JtYXQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkU3VyZmFjZShz
dGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPik7CiAKICAgICB2b2lkIGRpc2NhcmRBbGxTdXJmYWNl
cygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDR0JhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzQsNyArMTc0LDcgQEAgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IEltYWdlQnVmZmVyQ0dCYWNrZQogICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMgYmUg
dXNpbmcgdGhlIHNhbWUgbG9naWMgYXMgSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRz8KIAogICAgICAg
ICAvLyBKUEVHcyBkb24ndCBoYXZlIGFuIGFscGhhIGNoYW5uZWwsIHNvIHdlIGhhdmUgdG8gbWFu
dWFsbHkgY29tcG9zaXRlIG9uIHRvcCBvZiBibGFjay4KLSAgICAgICAgUGl4ZWxCdWZmZXJGb3Jt
YXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4ZWxG
b3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICAgICAgUGl4
ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlw
bGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9
OwogICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gZ2V0UGl4ZWxCdWZmZXIoZm9ybWF0LCBsb2dp
Y2FsUmVjdCgpKTsKICAgICAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtMTkyLDcgKzE5Miw3IEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFn
ZUJ1ZmZlckNHQmFja2UKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIGF1
dG8gaW1hZ2VTaXplID0gcGl4ZWxCdWZmZXItPnNpemUoKTsKLSAgICAgICAgcmV0dXJuIGFkb3B0
Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4
LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBjYWNoZWRDR0NvbG9yU3BhY2UocGl4ZWxCdWZm
ZXItPmZvcm1hdCgpLmNvbG9yU3BhY2UpLCBrQ0dCaXRtYXBCeXRlT3JkZXJEZWZhdWx0IHwga0NH
SW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NH
UmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOworICAgICAgICByZXR1cm4gYWRvcHRDRihDR0ltYWdl
Q3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCA0ICog
aW1hZ2VTaXplLndpZHRoKCksIHBpeGVsQnVmZmVyLT5mb3JtYXQoKS5jb2xvclNwYWNlLnBsYXRm
b3JtQ29sb3JTcGFjZSgpLCBrQ0dCaXRtYXBCeXRlT3JkZXJEZWZhdWx0IHwga0NHSW1hZ2VBbHBo
YU5vbmVTa2lwTGFzdCwgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5n
SW50ZW50RGVmYXVsdCkpOwogICAgIH0KIAogICAgIGlmIChyZXNvbHV0aW9uU2NhbGUoKSA9PSAx
IHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykgewpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcAkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIHNpemVfdCBJbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y2FsY3UKICAgICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNr
ZW5kOjpjYWxjdWxhdGVNZW1vcnlDb3N0KGJhY2tlbmRTaXplLCBjYWxjdWxhdGVCeXRlc1BlclJv
dyhiYWNrZW5kU2l6ZSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1l
dGVycyYgcGFyYW1ldGVycywgQ0dDb2xvclNwYWNlUmVmIGNnQ29sb3JTcGFjZSwgY29uc3QgSG9z
dFdpbmRvdyopCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IElt
YWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1l
dGVycywgY29uc3QgSG9zdFdpbmRvdyopCiB7CiAgICAgQVNTRVJUKHBhcmFtZXRlcnMucGl4ZWxG
b3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKIApAQCAtODEsNyArODEsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlCiAgICAgc2l6ZV90IG51bUJ5dGVzID0g
YmFja2VuZFNpemUuaGVpZ2h0KCkgKiBieXRlc1BlclJvdzsKICAgICB2ZXJpZnlJbWFnZUJ1ZmZl
cklzQmlnRW5vdWdoKGRhdGEsIG51bUJ5dGVzKTsKIAotICAgIGF1dG8gY2dDb250ZXh0ID0gYWRv
cHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoZGF0YSwgYmFja2VuZFNpemUud2lkdGgoKSwgYmFj
a2VuZFNpemUuaGVpZ2h0KCksIDgsIGJ5dGVzUGVyUm93LCBjZ0NvbG9yU3BhY2UsIGtDR0ltYWdl
QWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QpKTsKKyAg
ICBhdXRvIGNnQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGRhdGEsIGJh
Y2tlbmRTaXplLndpZHRoKCksIGJhY2tlbmRTaXplLmhlaWdodCgpLCA4LCBieXRlc1BlclJvdywg
cGFyYW1ldGVycy5jb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBrQ0dJbWFnZUFscGhh
UHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KSk7CiAgICAgaWYg
KCFjZ0NvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC05NiwxNSArOTYsMTQg
QEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZQogCiBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNr
ZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KQogewotICAgIGlmIChhdXRvIGNnQ29sb3JTcGFjZSA9IGNvbnRleHQu
aGFzUGxhdGZvcm1Db250ZXh0KCkgPyBjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0KSA6IG51bGxw
dHIpCi0gICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKHBh
cmFtZXRlcnMsIGNnQ29sb3JTcGFjZS5nZXQoKSwgbnVsbHB0cik7CisgICAgaWYgKGF1dG8gY2dD
b2xvclNwYWNlID0gY29udGV4dC5oYXNQbGF0Zm9ybUNvbnRleHQoKSA/IGNvbnRleHRDb2xvclNw
YWNlKGNvbnRleHQpIDogbnVsbHB0cikgeworICAgICAgICBhdXRvIG92ZXJyaWRlUGFyYW1ldGVy
cyA9IHBhcmFtZXRlcnM7CisgICAgICAgIG92ZXJyaWRlUGFyYW1ldGVycy5jb2xvclNwYWNlID0g
RGVzdGluYXRpb25Db2xvclNwYWNlIHsgY2dDb2xvclNwYWNlIH07CiAKLSAgICByZXR1cm4gSW1h
Z2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBudWxscHRyKTsKLX0K
KyAgICAgICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUob3ZlcnJp
ZGVQYXJhbWV0ZXJzLCBudWxscHRyKTsKKyAgICB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShj
b25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93
KQotewotICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKHBhcmFt
ZXRlcnMsIGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpLCBob3N0V2lu
ZG93KTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShwYXJh
bWV0ZXJzLCBudWxscHRyKTsKIH0KIAogSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OkltYWdl
QnVmZmVyQ0dCaXRtYXBCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIHZvaWQq
IGRhdGEsIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4mJiBkYXRhUHJvdmlkZXIsIHN0ZDo6
dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYgY29udGV4dCkKQEAgLTE0Niw3ICsxNDUsNyBA
QCBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyQ0dCaXRtYXBCCiAgICAgICAgIGF1dG8g
YmFja2VuZFNpemUgPSB0aGlzLT5iYWNrZW5kU2l6ZSgpOwogICAgICAgICByZXR1cm4gTmF0aXZl
SW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHSW1hZ2VDcmVhdGUoCiAgICAgICAgICAgICBiYWNrZW5k
U2l6ZS53aWR0aCgpLCBiYWNrZW5kU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIGJ5dGVzUGVyUm93KCks
Ci0gICAgICAgICAgICBjYWNoZWRDR0NvbG9yU3BhY2UoY29sb3JTcGFjZSgpKSwga0NHSW1hZ2VB
bHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCwgbV9kYXRh
UHJvdmlkZXIuZ2V0KCksCisgICAgICAgICAgICBjb2xvclNwYWNlKCkucGxhdGZvcm1Db2xvclNw
YWNlKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3Jk
ZXIzMkhvc3QsIG1fZGF0YVByb3ZpZGVyLmdldCgpLAogICAgICAgICAgICAgMCwgdHJ1ZSwga0NH
UmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJD
R0JpdG1hcEJhY2tlbmQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzksOCArMzksOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEludFNpemUgY2FsY3Vs
YXRlU2FmZUJhY2tlbmRTaXplKGNvbnN0IFBhcmFtZXRlcnMmKTsKICAgICBzdGF0aWMgc2l6ZV90
IGNhbGN1bGF0ZU1lbW9yeUNvc3QoY29uc3QgUGFyYW1ldGVycyYpOwogCi0gICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBh
cmFtZXRlcnMmLCBDR0NvbG9yU3BhY2VSZWYsIGNvbnN0IEhvc3RXaW5kb3cqKTsKICAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBjcmVhdGUoY29u
c3QgUGFyYW1ldGVycyYsIGNvbnN0IEhvc3RXaW5kb3cqKTsKKworICAgIC8vIEZJWE1FOiBSZW5h
bWUgdG8gY3JlYXRlVXNpbmdDb2xvclNwYWNlT2ZHcmFwaGljc0NvbnRleHQoKSAob3Igc29tZXRo
aW5nIGxpa2UgdGhhdCkuCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQmKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IG92ZXJyaWRl
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCShyZXZpc2lvbiAy
Nzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSwxMyArODEsMTMgQEAg
UmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gSW1hZ2VCdWZmZXJJTwogICAgIHJldHVybiBJbWFn
ZUJ1ZmZlckNHQmFja2VuZDo6Y29udGV4dENvbG9yU3BhY2UoY29udGV4dCk7CiB9CiAKLXN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIENHQ29sb3JT
cGFjZVJlZiBjZ0NvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCitzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBI
b3N0V2luZG93KiBob3N0V2luZG93KQogewogICAgIEludFNpemUgYmFja2VuZFNpemUgPSBjYWxj
dWxhdGVTYWZlQmFja2VuZFNpemUocGFyYW1ldGVycyk7CiAgICAgaWYgKGJhY2tlbmRTaXplLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBJ
T1N1cmZhY2U6OmNyZWF0ZShiYWNrZW5kU2l6ZSwgYmFja2VuZFNpemUsIGNnQ29sb3JTcGFjZSwg
SU9TdXJmYWNlOjpmb3JtYXRGb3JQaXhlbEZvcm1hdChwYXJhbWV0ZXJzLnBpeGVsRm9ybWF0KSk7
CisgICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoYmFja2VuZFNpemUsIGJhY2tl
bmRTaXplLCBwYXJhbWV0ZXJzLmNvbG9yU3BhY2UsIElPU3VyZmFjZTo6Zm9ybWF0Rm9yUGl4ZWxG
b3JtYXQocGFyYW1ldGVycy5waXhlbEZvcm1hdCkpOwogICAgIGlmICghc3VyZmFjZSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTEwMiwxNSArMTAyLDE0IEBAIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2sKIAogc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29u
c3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KQogewotICAgIGlmIChhdXRvIGNnQ29sb3JTcGFjZSA9IGNvbnRleHQuaGFzUGxhdGZvcm1Db250
ZXh0KCkgPyBjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0KSA6IG51bGxwdHIpCi0gICAgICAgIHJl
dHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBjZ0Nv
bG9yU3BhY2UuZ2V0KCksIG51bGxwdHIpOworICAgIGlmIChhdXRvIGNnQ29sb3JTcGFjZSA9IGNv
bnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkgPyBjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0KSA6
IG51bGxwdHIpIHsKKyAgICAgICAgYXV0byBvdmVycmlkZVBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJz
OworICAgICAgICBvdmVycmlkZVBhcmFtZXRlcnMuY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSB7IGNnQ29sb3JTcGFjZSB9OwogCi0gICAgcmV0dXJuIEltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIG51bGxwdHIpOwotfQorICAgICAgICByZXR1
cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUob3ZlcnJpZGVQYXJhbWV0ZXJz
LCBudWxscHRyKTsKKyAgICB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCi17Ci0gICAg
cmV0dXJuIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIGNh
Y2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpLCBob3N0V2luZG93KTsKKyAg
ICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywg
bnVsbHB0cik7CiB9CiAKIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIHN0ZDo6dW5pcXVl
X3B0cjxJT1N1cmZhY2U+JiYgc3VyZmFjZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNl
QmFja2VuZC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDIsOCArNDIsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHNpemVfdCBjYWxjdWxhdGVNZW1v
cnlDb3N0KGNvbnN0IFBhcmFtZXRlcnMmKTsKICAgICBzdGF0aWMgc2l6ZV90IGNhbGN1bGF0ZUV4
dGVybmFsTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJzJik7CiAgICAgCi0gICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQ
YXJhbWV0ZXJzJiwgQ0dDb2xvclNwYWNlUmVmLCBjb25zdCBIb3N0V2luZG93Kik7CiAgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShj
b25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgSG9zdFdpbmRvdyopOworICAgIC8vIEZJWE1FOiBSZW5h
bWUgdG8gY3JlYXRlVXNpbmdDb2xvclNwYWNlT2ZHcmFwaGljc0NvbnRleHQoKSAob3Igc29tZXRo
aW5nIGxpa2UgdGhhdCkuCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklP
U3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgR3JhcGhpY3ND
b250ZXh0Jik7CiAKICAgICBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQoY29uc3QgUGFyYW1l
dGVycyYsIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+JiYpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJV
dGlsaXRpZXNDRy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzcsNyArMTc3LDcgQEAgc3RhdGljIGJvb2wgZW5jb2RlKGNvbnN0IFBpeGVsQnVmZmVy
JiBzbwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8gaW1hZ2VTaXplID0gc291
cmNlLnNpemUoKTsKLSAgICBhdXRvIGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdl
U2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCA0ICogaW1hZ2VTaXplLndp
ZHRoKCksIGNhY2hlZENHQ29sb3JTcGFjZShzb3VyY2UuZm9ybWF0KCkuY29sb3JTcGFjZSksIGtD
R0JpdG1hcEJ5dGVPcmRlckRlZmF1bHQgfCBkYXRhQWxwaGFJbmZvLCBkYXRhUHJvdmlkZXIuZ2V0
KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CisgICAgYXV0byBpbWFn
ZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhl
aWdodCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBzb3VyY2UuZm9ybWF0KCkuY29s
b3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwga0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8
IGRhdGFBbHBoYUluZm8sIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmlu
Z0ludGVudERlZmF1bHQpKTsKIAogICAgIHJldHVybiBlbmNvZGUoaW1hZ2UuZ2V0KCksIGRlc3Rp
bmF0aW9uVVRJLmdldCgpLCBxdWFsaXR5LCBmdW5jdGlvbik7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29h
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTU3MSw3ICs1NzEsNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzCiBib29sIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjphbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpCiB7CiAgICAgQVNTRVJU
KCFnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLmlzRW1wdHkoKSk7Ci0gICAgYXV0byBiYWNr
aW5nID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGUoZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNp
emUoKSwgV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgYXV0byBiYWNraW5nID0g
SU9TdXJmYWNlOjpjcmVhdGUoZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgIGlmICghYmFja2luZykKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9J
T1N1cmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9JT1N1cmZhY2UuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDkgKzI3LDEwIEBACiAKICNpZiBIQVZFKElPU1VSRkFDRSkKIAorI2luY2x1ZGUgIkRlc3RpbmF0
aW9uQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlIDxvYmpjL29i
amMuaD4KICNpbmNsdWRlIDxwYWwvc3BpL2NvY29hL0lPU3VyZmFjZVNQSS5oPgotI2luY2x1ZGUg
IkludFNpemUuaCIKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShNQUND
QVRBTFlTVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQogI2RlZmluZSBIQVZF
X0lPU1VSRkFDRV9SR0IxMCAxCkBAIC00NiwxMCArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEhvc3RXaW5kb3c7Ci0gICAgCi0jaWYg
VVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKIGNsYXNzIEltYWdlQnVmZmVyOwot
I2VuZGlmCiAKIGVudW0gY2xhc3MgUGl4ZWxGb3JtYXQgOiB1aW50OF90OwogZW51bSBjbGFzcyBW
b2xhdGlsaXR5U3RhdGUgOiB1aW50OF90OwpAQCAtMTAxLDEwICs5OSwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIHVpbnQzMl90IG1fZmxhZ3M7CiAgICAgfTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGUoSW50U2l6ZSwgQ0dDb2xvclNw
YWNlUmVmLCBGb3JtYXQgPSBGb3JtYXQ6OkJHUkEpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGUoSW50U2l6ZSwgSW50U2l6ZSBjb250
ZXh0U2l6ZSwgQ0dDb2xvclNwYWNlUmVmLCBGb3JtYXQgPSBGb3JtYXQ6OkJHUkEpOwotICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGVGcm9t
U2VuZFJpZ2h0KGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYmLCBDR0NvbG9yU3BhY2VSZWYpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVh
dGVGcm9tU3VyZmFjZShJT1N1cmZhY2VSZWYsIENHQ29sb3JTcGFjZVJlZik7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZShJbnRTaXpl
LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGb3JtYXQgPSBGb3JtYXQ6OkJHUkEpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVh
dGUoSW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiwgRm9ybWF0ID0gRm9ybWF0OjpCR1JBKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlRnJvbVNlbmRSaWdodChjb25zdCBXVEY6
Ok1hY2hTZW5kUmlnaHQmJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZUZyb21T
dXJmYWNlKElPU3VyZmFjZVJlZiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZUZy
b21JbWFnZShDR0ltYWdlUmVmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlRnJvbVBpeGVsQnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYp
OwogICAgIApAQCAtMTQ2LDcgKzE0NCw3IEBAIHB1YmxpYzoKICAgICBJbnRTaXplIHNpemUoKSBj
b25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICBzaXplX3QgdG90YWxCeXRlcygpIGNvbnN0IHsg
cmV0dXJuIG1fdG90YWxCeXRlczsgfQogCi0gICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2Uo
KSBjb25zdCB7IHJldHVybiBtX2NvbG9yU3BhY2UuZ2V0KCk7IH0KKyAgICBjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yU3BhY2U7
IH0KICAgICBXRUJDT1JFX0VYUE9SVCBGb3JtYXQgZm9ybWF0KCkgY29uc3Q7CiAgICAgV0VCQ09S
RV9FWFBPUlQgSU9TdXJmYWNlSUQgc3VyZmFjZUlEKCkgY29uc3Q7CiAgICAgc2l6ZV90IGJ5dGVz
UGVyUm93KCkgY29uc3Q7CkBAIC0xNjksMTQgKzE2NywxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBt
aWdyYXRlQ29sb3JTcGFjZVRvUHJvcGVydGllcygpOwogCiBwcml2YXRlOgotICAgIElPU3VyZmFj
ZShJbnRTaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBDR0NvbG9yU3BhY2VSZWYsIEZvcm1hdCwg
Ym9vbCYgc3VjY2Vzcyk7Ci0gICAgSU9TdXJmYWNlKElPU3VyZmFjZVJlZiwgQ0dDb2xvclNwYWNl
UmVmKTsKKyAgICBJT1N1cmZhY2UoSW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiwgRm9ybWF0LCBib29sJiBzdWNjZXNzKTsKKyAgICBJT1N1
cmZhY2UoSU9TdXJmYWNlUmVmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKIAotICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBzdXJmYWNlRnJvbVBvb2woSW50U2l6
ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xvclNwYWNlUmVmLCBGb3JtYXQpOworICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBzdXJmYWNlRnJvbVBvb2woSW50U2l6ZSwg
SW50U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRm9ybWF0
KTsKICAgICBJbnRTaXplIGNvbnRleHRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0U2l6
ZTsgfQogICAgIHZvaWQgc2V0Q29udGV4dFNpemUoSW50U2l6ZSk7CiAKLSAgICBSZXRhaW5QdHI8
Q0dDb2xvclNwYWNlUmVmPiBtX2NvbG9yU3BhY2U7CisgICAgRGVzdGluYXRpb25Db2xvclNwYWNl
IG1fY29sb3JTcGFjZTsKICAgICBJbnRTaXplIG1fc2l6ZTsKICAgICBJbnRTaXplIG1fY29udGV4
dFNpemU7CiAgICAgc2l6ZV90IG1fdG90YWxCeXRlczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0JKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFj
ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgi
CiAjaW1wb3J0ICJJT1N1cmZhY2UuaCIKIAotI2ltcG9ydCAiQ29yZVZpZGVvU29mdExpbmsuaCIK
KyNpbXBvcnQgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250
ZXh0Q0cuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMLmgiCiAjaW1wb3J0ICJIb3N0V2lu
ZG93LmgiCkBAIC00MSw5ICs0MSwxMSBAQAogI2ltcG9ydCA8d3RmL01hdGhFeHRyYXMuaD4KICNp
bXBvcnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAorI2ltcG9ydCAiQ29yZVZpZGVvU29mdExp
bmsuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgc3RkOjp1bmlxdWVfcHRyPElP
U3VyZmFjZT4gSU9TdXJmYWNlOjpzdXJmYWNlRnJvbVBvb2woSW50U2l6ZSBzaXplLCBJbnRTaXpl
IGNvbnRleHRTaXplLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwgRm9ybWF0IHBpeGVsRm9y
bWF0KQoraW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6c3VyZmFj
ZUZyb21Qb29sKEludFNpemUgc2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGb3JtYXQgcGl4ZWxGb3JtYXQpCiB7CiAgICAg
YXV0byBjYWNoZWRTdXJmYWNlID0gSU9TdXJmYWNlUG9vbDo6c2hhcmVkUG9vbCgpLnRha2VTdXJm
YWNlKHNpemUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKICAgICBpZiAoIWNhY2hlZFN1cmZh
Y2UpCkBAIC01MywxMiArNTUsMTIgQEAgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+
IElPU3VyZgogICAgIHJldHVybiBjYWNoZWRTdXJmYWNlOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZShJbnRTaXplIHNpemUsIENHQ29sb3JTcGFjZVJl
ZiBjb2xvclNwYWNlLCBGb3JtYXQgcGl4ZWxGb3JtYXQpCitzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJm
YWNlPiBJT1N1cmZhY2U6OmNyZWF0ZShJbnRTaXplIHNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgY29sb3JTcGFjZSwgRm9ybWF0IHBpeGVsRm9ybWF0KQogewogICAgIHJldHVybiBJ
T1N1cmZhY2U6OmNyZWF0ZShzaXplLCBzaXplLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCk7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6Y3JlYXRlKEludFNpemUg
c2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UsIEZv
cm1hdCBwaXhlbEZvcm1hdCkKK3N0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6
Y3JlYXRlKEludFNpemUgc2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGb3JtYXQgcGl4ZWxGb3JtYXQpCiB7CiAgICAgaWYg
KGF1dG8gY2FjaGVkU3VyZmFjZSA9IHN1cmZhY2VGcm9tUG9vbChzaXplLCBjb250ZXh0U2l6ZSwg
Y29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpKSB7CiAgICAgICAgIExPR19XSVRIX1NUUkVBTShJT1N1
cmZhY2UsIHN0cmVhbSA8PCAiSU9TdXJmYWNlOjpjcmVhdGUgdG9vayBmcm9tIHBvb2w6ICIgPDwg
KmNhY2hlZFN1cmZhY2UpOwpAQCAtNzUsMTMgKzc3LDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxJT1N1
cmZhY2U+IElPU3VyZmFjZTo6Y3IKICAgICByZXR1cm4gc3VyZmFjZTsKIH0KIAotc3RkOjp1bmlx
dWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KGNvbnN0IE1h
Y2hTZW5kUmlnaHQmJiBzZW5kUmlnaHQsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKQorc3Rk
Ojp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KGNv
bnN0IE1hY2hTZW5kUmlnaHQmJiBzZW5kUmlnaHQsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYgY29sb3JTcGFjZSkKIHsKICAgICBhdXRvIHN1cmZhY2UgPSBhZG9wdENGKElPU3VyZmFjZUxv
b2t1cEZyb21NYWNoUG9ydChzZW5kUmlnaHQuc2VuZFJpZ2h0KCkpKTsKICAgICByZXR1cm4gSU9T
dXJmYWNlOjpjcmVhdGVGcm9tU3VyZmFjZShzdXJmYWNlLmdldCgpLCBjb2xvclNwYWNlKTsKIH0K
IAotc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU3VyZmFj
ZShJT1N1cmZhY2VSZWYgc3VyZmFjZSwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UpCitzdGQ6
OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TdXJmYWNlKElPU3Vy
ZmFjZVJlZiBzdXJmYWNlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2Up
CiB7CiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+KG5ldyBJT1N1cmZhY2Uo
c3VyZmFjZSwgY29sb3JTcGFjZSkpOwogfQpAQCAtOTQsNyArOTYsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyCiAgICAgc2l6ZV90IHdpZHRoID0gQ0dJbWFnZUdl
dFdpZHRoKGltYWdlKTsKICAgICBzaXplX3QgaGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChpbWFn
ZSk7CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShJbnRTaXplKHdpZHRo
LCBoZWlnaHQpLCBDR0ltYWdlR2V0Q29sb3JTcGFjZShpbWFnZSkpOworICAgIGF1dG8gc3VyZmFj
ZSA9IElPU3VyZmFjZTo6Y3JlYXRlKEludFNpemUod2lkdGgsIGhlaWdodCksIERlc3RpbmF0aW9u
Q29sb3JTcGFjZSB7IENHSW1hZ2VHZXRDb2xvclNwYWNlKGltYWdlKSB9KTsKICAgICBpZiAoIXN1
cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8gc3VyZmFjZUNvbnRleHQg
PSBzdXJmYWNlLT5lbnN1cmVQbGF0Zm9ybUNvbnRleHQoKTsKQEAgLTExNiw3ICsxMTgsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyCiAgICAgaWYgKCFjb2xvclNw
YWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBjcmVhdGVGcm9tU3Vy
ZmFjZShzdXJmYWNlLCBjb2xvclNwYWNlKTsKKyAgICByZXR1cm4gY3JlYXRlRnJvbVN1cmZhY2Uo
c3VyZmFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIHsgY29sb3JTcGFjZSB9KTsKIH0KIAogdm9p
ZCBJT1N1cmZhY2U6Om1vdmVUb1Bvb2woc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4mJiBzdXJm
YWNlKQpAQCAtMTk2LDcgKzE5OCw3IEBAIHN0YXRpYyBOU0RpY3Rpb25hcnkgKm9wdGlvbnNGb3Iz
MkJpdFN1cmYKIAogfQogCi1JT1N1cmZhY2U6OklPU3VyZmFjZShJbnRTaXplIHNpemUsIEludFNp
emUgY29udGV4dFNpemUsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlLCBGb3JtYXQgZm9ybWF0
LCBib29sJiBzdWNjZXNzKQorSU9TdXJmYWNlOjpJT1N1cmZhY2UoSW50U2l6ZSBzaXplLCBJbnRT
aXplIGNvbnRleHRTaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2Us
IEZvcm1hdCBmb3JtYXQsIGJvb2wmIHN1Y2Nlc3MpCiAgICAgOiBtX2NvbG9yU3BhY2UoY29sb3JT
cGFjZSkKICAgICAsIG1fc2l6ZShzaXplKQogICAgICwgbV9jb250ZXh0U2l6ZShjb250ZXh0U2l6
ZSkKQEAgLTIzMiw3ICsyMzQsNyBAQCBJT1N1cmZhY2U6OklPU3VyZmFjZShJbnRTaXplIHNpemUs
IEludFNpCiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKExheWVycywgIklPU3VyZmFjZSBjcmVh
dGlvbiBmYWlsZWQgZm9yIHNpemU6ICglZCAlZCkgYW5kIGZvcm1hdDogKCVkKSIsIHNpemUud2lk
dGgoKSwgc2l6ZS5oZWlnaHQoKSwgZm9ybWF0KTsKIH0KIAotSU9TdXJmYWNlOjpJT1N1cmZhY2Uo
SU9TdXJmYWNlUmVmIHN1cmZhY2UsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKQorSU9TdXJm
YWNlOjpJT1N1cmZhY2UoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgY29sb3JTcGFjZSkKICAgICA6IG1fY29sb3JTcGFjZShjb2xvclNwYWNlKQogICAg
ICwgbV9zdXJmYWNlKHN1cmZhY2UpCiB7CkBAIC0zNDcsNyArMzQ5LDcgQEAgQ0dDb250ZXh0UmVm
IElPU3VyZmFjZTo6ZW5zdXJlUGxhdGZvcm1DbwogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
Ci0gICAgbV9jZ0NvbnRleHQgPSBhZG9wdENGKENHSU9TdXJmYWNlQ29udGV4dENyZWF0ZShtX3N1
cmZhY2UuZ2V0KCksIG1fY29udGV4dFNpemUud2lkdGgoKSwgbV9jb250ZXh0U2l6ZS5oZWlnaHQo
KSwgYml0c1BlckNvbXBvbmVudCwgYml0c1BlclBpeGVsLCBtX2NvbG9yU3BhY2UuZ2V0KCksIGJp
dG1hcEluZm8pKTsKKyAgICBtX2NnQ29udGV4dCA9IGFkb3B0Q0YoQ0dJT1N1cmZhY2VDb250ZXh0
Q3JlYXRlKG1fc3VyZmFjZS5nZXQoKSwgbV9jb250ZXh0U2l6ZS53aWR0aCgpLCBtX2NvbnRleHRT
aXplLmhlaWdodCgpLCBiaXRzUGVyQ29tcG9uZW50LCBiaXRzUGVyUGl4ZWwsIG1fY29sb3JTcGFj
ZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwgYml0bWFwSW5mbykpOwogCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIGlmIChhdXRvIGRpc3BsYXlNYXNrID0gcHJpbWFyeU9wZW5HTERpc3BsYXlNYXNrKCkp
IHsKQEAgLTUxNSw3ICs1MTcsNyBAQCB2b2lkIElPU3VyZmFjZTo6c2V0T3duZXJzaGlwSWRlbnRp
dHkodGFzCiAKIHZvaWQgSU9TdXJmYWNlOjptaWdyYXRlQ29sb3JTcGFjZVRvUHJvcGVydGllcygp
CiB7Ci0gICAgYXV0byBjb2xvclNwYWNlUHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNl
Q29weVByb3BlcnR5TGlzdChtX2NvbG9yU3BhY2UuZ2V0KCkpKTsKKyAgICBhdXRvIGNvbG9yU3Bh
Y2VQcm9wZXJ0aWVzID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDb3B5UHJvcGVydHlMaXN0KG1fY29s
b3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSkpOwogICAgIElPU3VyZmFjZVNldFZhbHVlKG1f
c3VyZmFjZS5nZXQoKSwga0lPU3VyZmFjZUNvbG9yU3BhY2UsIGNvbG9yU3BhY2VQcm9wZXJ0aWVz
LmdldCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29y
ZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5k
ZXJlckNvcmVJbWFnZS5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBGaWx0ZXJFZmZlY3RSZW5k
ZXJlckNvcmVJbWFnZTo6cmVuZAogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgYXV0byYgc3Vy
ZmFjZSA9IGRvd25jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI+KCptX291dHB1dEltYWdlQnVm
ZmVyKS5zdXJmYWNlKCk7Ci0gICAgW3NoYXJlZENJQ29udGV4dCgpLmdldCgpIHJlbmRlcjogbV9v
dXRwdXRJbWFnZS5nZXQoKSB0b0lPU3VyZmFjZTogc3VyZmFjZS5zdXJmYWNlKCkgYm91bmRzOmRl
c3RSZWN0KGxhc3RFZmZlY3QpIGNvbG9yU3BhY2U6Y2FjaGVkQ0dDb2xvclNwYWNlKGxhc3RFZmZl
Y3QucmVzdWx0Q29sb3JTcGFjZSgpKV07CisgICAgW3NoYXJlZENJQ29udGV4dCgpLmdldCgpIHJl
bmRlcjogbV9vdXRwdXRJbWFnZS5nZXQoKSB0b0lPU3VyZmFjZTogc3VyZmFjZS5zdXJmYWNlKCkg
Ym91bmRzOmRlc3RSZWN0KGxhc3RFZmZlY3QpIGNvbG9yU3BhY2U6bGFzdEVmZmVjdC5yZXN1bHRD
b2xvclNwYWNlKCkucGxhdGZvcm1Db2xvclNwYWNlKCldOwogfQogICAgIAogRmxvYXRSZWN0IEZp
bHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpkZXN0UmVjdChjb25zdCBGaWx0ZXJFZmZlY3Qm
IGxhc3RFZmZlY3QpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdElt
YWdlQnVmZmVyLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMgQ29uY3Jl
dGVJbWFnZQogICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpiYXNlVHJhbnNmb3Jt
OwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFj
ZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cp
CisgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBp
eGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQogICAg
IHsKICAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjp0ZW1wbGF0ZSBjcmVh
dGU8SW1hZ2VCdWZmZXI+KHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxG
b3JtYXQsIGhvc3RXaW5kb3cpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1CdWZmZXIuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgSXRlbUhhbmRsZTo6ZGVz
dHJveSgpCiAgICAgICAgIGdldDxGaWxsUm91bmRlZFJlY3Q+KCkufkZpbGxSb3VuZGVkUmVjdCgp
OwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJdGVtVHlwZTo6R2V0UGl4ZWxCdWZmZXI6Ci0g
ICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEdldFBp
eGVsQnVmZmVyPjo6dmFsdWUpOworICAgICAgICBnZXQ8R2V0UGl4ZWxCdWZmZXI+KCkufkdldFBp
eGVsQnVmZmVyKCk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEl0ZW1UeXBlOjpQdXRQaXhl
bEJ1ZmZlcjoKICAgICAgICAgZ2V0PFB1dFBpeGVsQnVmZmVyPigpLn5QdXRQaXhlbEJ1ZmZlcigp
OwpAQCAtMzA3LDcgKzMwNyw3IEBAIHZvaWQgSXRlbUhhbmRsZTo6ZGVzdHJveSgpCiAgICAgICAg
IHJldHVybjsKICNlbmRpZgogICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0
aWJsZTxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz46OnZhbHVlKTsKKyAgICAgICAgZ2V0PEJl
Z2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpLn5CZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcygp
OwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lM
YXllcjoKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGli
bGU8QmVnaW5UcmFuc3BhcmVuY3lMYXllcj46OnZhbHVlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDYgKzI4MSw3IEBAIGJvb2wgaXNJbmxpbmVJdGVt
KEl0ZW1UeXBlIHR5cGUpCiAgICAgICogYW5kICgzKSBhbGwgdGhlICJzdGF0aWMgY29uc3RleHBy
IGJvb2wgaXNJbmxpbmVJdGVtInMgaW5zaWRlIHRoZSBpbmRpdmlkdWFsIGl0ZW0gY2xhc3Nlcy4g
Ki8KIAogICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzOgogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6CiAgICAg
Y2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmlu
Z1BhdGg6CkBAIC0yOTQsNiArMjk1LDcgQEAgYm9vbCBpc0lubGluZUl0ZW0oSXRlbVR5cGUgdHlw
ZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDoKICAgICBjYXNlIEl0
ZW1UeXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZToKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxs
Um91bmRlZFJlY3Q6CisgICAgY2FzZSBJdGVtVHlwZTo6R2V0UGl4ZWxCdWZmZXI6CiAgICAgY2Fz
ZSBJdGVtVHlwZTo6UHV0UGl4ZWxCdWZmZXI6CiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZURh
c2g6CiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6CkBAIC0zMTAsNyArMzEyLDYgQEAgYm9v
bCBpc0lubGluZUl0ZW0oSXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwOgog
ICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXQ6CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1h
Z2VCdWZmZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6
CiAgICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgogICAgIGNhc2Ug
SXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdEb3RzRm9y
RG9jdW1lbnRNYXJrZXI6CkBAIC0zNTEsNyArMzUyLDYgQEAgYm9vbCBpc0lubGluZUl0ZW0oSXRl
bVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0OgogICAgIGNhc2UgSXRl
bVR5cGU6OlN0cm9rZUxpbmU6CiAgICAgY2FzZSBJdGVtVHlwZTo6VHJhbnNsYXRlOgotICAgIGNh
c2UgSXRlbVR5cGU6OkdldFBpeGVsQnVmZmVyOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgJKHdvcmtpbmcgY29weSkKQEAg
LTg4MCwyMyArODgwLDYwIEBAIE9wdGlvbmFsPENsaXBQYXRoPiBDbGlwUGF0aDo6ZGVjb2RlKERl
Y28KIGNsYXNzIEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgY29uc3RleHByIEl0ZW1UeXBlIGl0ZW1UeXBlID0gSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSB0
cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSBmYWxzZTsKICAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IGZhbHNlOwogCi0gICAgQmVn
aW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVz
dGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpCisgICAgQmVnaW5DbGlwVG9EcmF3aW5nQ29t
bWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiBjb2xvclNwYWNlKQogICAgICAgICA6IG1fZGVzdGluYXRpb24oZGVzdGluYXRpb24p
CiAgICAgICAgICwgbV9jb2xvclNwYWNlKGNvbG9yU3BhY2UpCiAgICAgewogICAgIH0KIAorICAg
IEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYmIGNvbG9yU3BhY2UpCisgICAgICAgIDogbV9kZXN0aW5h
dGlvbihkZXN0aW5hdGlvbikKKyAgICAgICAgLCBtX2NvbG9yU3BhY2UoV1RGTW92ZShjb2xvclNw
YWNlKSkKKyAgICB7CisgICAgfQorCisgICAgLy8gRXhwbGljaXQgZGVzdHJ1Y3RvciBhZGRlZCB0
byBmb3JjZSBub24tdHJpdmlhbCBkZXN0cnVjdG9yIG9uIGFsbCBwbGF0Zm9ybXMKKyAgICAvLyBh
cyB0aGUgZW5jb2RpbmcgbG9naWMgY3VycmVudGx5IGhhcmRjb2RlcyB3aGljaCBkaXNwbGF5IGxp
c3QgaXRlbSB0eXBlcyBuZWVkCisgICAgLy8gb3V0IG9mIGxpbmUgdHJlYXRtZW50IHJhdGhlciB0
aGFuIHVzaW5nIHRoZSBpc0lubGluZUl0ZW0gY29uc3RhbnQuCisgICAgfkJlZ2luQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzKCkgeyB9CisKICAgICBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQotICAgIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvclNwYWNlOyB9CisgICAgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9jb2xv
clNwYWNlOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFs
PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRl
OgogICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uOwogICAgIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSBtX2NvbG9yU3BhY2U7CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBCZWdp
bkNsaXBUb0RyYXdpbmdDb21tYW5kczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7
CisgICAgZW5jb2RlciA8PCBtX2Rlc3RpbmF0aW9uOworICAgIGVuY29kZXIgPDwgbV9jb2xvclNw
YWNlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8QmVnaW5DbGlwVG9E
cmF3aW5nQ29tbWFuZHM+IEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGRlc3RpbmF0aW9uOworICAg
IGRlY29kZXIgPj4gZGVzdGluYXRpb247CisgICAgaWYgKCFkZXN0aW5hdGlvbikKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFj
ZT4gY29sb3JTcGFjZTsKKyAgICBkZWNvZGVyID4+IGNvbG9yU3BhY2U7CisgICAgaWYgKCFjb2xv
clNwYWNlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIHt7ICpk
ZXN0aW5hdGlvbiwgV1RGTW92ZSgqY29sb3JTcGFjZSkgfX07Cit9CisKIGNsYXNzIEVuZENsaXBU
b0RyYXdpbmdDb21tYW5kcyB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlw
ZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM7CkBAIC0xOTM4
LDIzICsxOTc1LDYwIEBAIHByaXZhdGU6CiBjbGFzcyBHZXRQaXhlbEJ1ZmZlciB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpHZXRQ
aXhlbEJ1ZmZlcjsKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0gdHJ1
ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0gZmFsc2U7CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSBmYWxzZTsKIAotICAgIEdldFBp
eGVsQnVmZmVyKFdlYkNvcmU6OlBpeGVsQnVmZmVyRm9ybWF0IG91dHB1dEZvcm1hdCwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCkKKyAgICBHZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhl
bEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KQogICAg
ICAgICA6IG1fc3JjUmVjdChzcmNSZWN0KQogICAgICAgICAsIG1fb3V0cHV0Rm9ybWF0KG91dHB1
dEZvcm1hdCkKICAgICB7CiAgICAgfQogCi0gICAgUGl4ZWxCdWZmZXJGb3JtYXQgb3V0cHV0Rm9y
bWF0KCkgY29uc3QgeyByZXR1cm4gbV9vdXRwdXRGb3JtYXQ7IH0KKyAgICBHZXRQaXhlbEJ1ZmZl
cihQaXhlbEJ1ZmZlckZvcm1hdCYmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc3JjUmVj
dCkKKyAgICAgICAgOiBtX3NyY1JlY3Qoc3JjUmVjdCkKKyAgICAgICAgLCBtX291dHB1dEZvcm1h
dChXVEZNb3ZlKG91dHB1dEZvcm1hdCkpCisgICAgeworICAgIH0KKworICAgIC8vIEV4cGxpY2l0
IGRlc3RydWN0b3IgYWRkZWQgdG8gZm9yY2Ugbm9uLXRyaXZpYWwgZGVzdHJ1Y3RvciBvbiBhbGwg
cGxhdGZvcm1zCisgICAgLy8gYXMgdGhlIGVuY29kaW5nIGxvZ2ljIGN1cnJlbnRseSBoYXJkY29k
ZXMgd2hpY2ggZGlzcGxheSBsaXN0IGl0ZW0gdHlwZXMgbmVlZAorICAgIC8vIG91dCBvZiBsaW5l
IHRyZWF0bWVudCByYXRoZXIgdGhhbiB1c2luZyB0aGUgaXNJbmxpbmVJdGVtIGNvbnN0YW50Lgor
ICAgIH5HZXRQaXhlbEJ1ZmZlcigpIHsgfQorCisgICAgY29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQm
IG91dHB1dEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fb3V0cHV0Rm9ybWF0OyB9CiAgICAgSW50
UmVjdCBzcmNSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CiAKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEdldFBpeGVsQnVmZmVyPiBkZWNvZGUo
RGVjb2RlciYpOworCiBwcml2YXRlOgogICAgIEludFJlY3QgbV9zcmNSZWN0OwogICAgIFBpeGVs
QnVmZmVyRm9ybWF0IG1fb3V0cHV0Rm9ybWF0OwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4KK3ZvaWQgR2V0UGl4ZWxCdWZmZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAor
eworICAgIGVuY29kZXIgPDwgbV9zcmNSZWN0OworICAgIGVuY29kZXIgPDwgbV9vdXRwdXRGb3Jt
YXQ7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxHZXRQaXhlbEJ1ZmZl
cj4gR2V0UGl4ZWxCdWZmZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlv
bmFsPEludFJlY3Q+IHNyY1JlY3Q7CisgICAgZGVjb2RlciA+PiBzcmNSZWN0OworICAgIGlmICgh
c3JjUmVjdCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPFBp
eGVsQnVmZmVyRm9ybWF0PiBvdXRwdXRGb3JtYXQ7CisgICAgZGVjb2RlciA+PiBvdXRwdXRGb3Jt
YXQ7CisgICAgaWYgKCFvdXRwdXRGb3JtYXQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICByZXR1cm4ge3sgV1RGTW92ZSgqb3V0cHV0Rm9ybWF0KSwgKnNyY1JlY3QgfX07Cit9
CisKIGNsYXNzIFB1dFBpeGVsQnVmZmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHBy
IEl0ZW1UeXBlIGl0ZW1UeXBlID0gSXRlbVR5cGU6OlB1dFBpeGVsQnVmZmVyOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTIsNyArNDUyLDcgQEAgdm9pZCBS
ZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdQogICAgIGFwcGVuZDxDbGlwVG9JbWFn
ZUJ1ZmZlcj4oaW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIGRlc3RS
ZWN0KTsKIH0KIAotdm9pZCBSZWNvcmRlcjo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBG
dW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikKK3ZvaWQg
UmVjb3JkZXI6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZv
aWQoR3JhcGhpY3NDb250ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKQogewogICAgIEdyYXBoaWNz
Q29udGV4dCBuZXN0ZWRDb250ZXh0KFsmXShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIHsKICAg
ICAgICAgYXV0byBpbml0aWFsQ2xpcCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGRlc3RpbmF0
aW9uLnNpemUoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw3
ICsxNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRS
dWxlKSBvdmVycmlkZTsKICAgICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBvdmVycmlkZTsKICAgICB2
b2lkIGNsaXBUb0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRS
ZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2b2lk
KEdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsaXBUb0RyYXdpbmdD
b21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsK
ICNpZiBFTkFCTEUoVklERU8pCiAgICAgdm9pZCBwYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5
ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSBvdmVycmlkZTsKICAgICBib29sIGNh
blBhaW50RnJhbWVGb3JNZWRpYShjb25zdCBNZWRpYVBsYXllciYpIGNvbnN0IG92ZXJyaWRlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNl
bWVudE1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgRkVEaXNwbGFjZW1lbnRN
YXA6OnNldFNjYWxlKGZsb2F0IHMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBGRURpc3Bs
YWNlbWVudE1hcDo6c2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpCit2
b2lkIEZFRGlzcGxhY2VtZW50TWFwOjpzZXRSZXN1bHRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYpCiB7CiAgICAgLy8gU3BlYzogVGhlICdjb2xvci1pbnRlcnBvbGF0aW9u
LWZpbHRlcnMnIHByb3BlcnR5IG9ubHkgYXBwbGllcyB0byB0aGUgJ2luMicgc291cmNlIGltYWdl
CiAgICAgLy8gYW5kIGRvZXMgbm90IGFwcGx5IHRvIHRoZSAnaW4nIHNvdXJjZSBpbWFnZS4gVGhl
ICdpbicgc291cmNlIGltYWdlIG11c3QgcmVtYWluIGluIGl0cwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFj
ZW1lbnRNYXAuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBmbG9hdCBzY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2NhbGU7IH0KICAgICBib29sIHNldFNjYWxlKGZsb2F0KTsKIAotICAgIHZvaWQgc2V0UmVzdWx0
Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
UmVzdWx0Q29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKSBvdmVycmlkZTsK
ICAgICB2b2lkIHRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRmlsdGVyRWZmZWN0KiwgY29uc3Qg
aW50KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5oCShyZXZpc2lvbiAyNzc5MTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaAkod29y
a2luZyBjb3B5KQpAQCAtNDAsOCArNDAsOCBAQCBwdWJsaWM6CiAjaWYgIVVTRShDRykKICAgICAv
LyBmZUZsb29kIGRvZXMgbm90IHBlcmZvcm0gY29sb3IgaW50ZXJwb2xhdGlvbiBvZiBhbnkga2lu
ZCwgc28gdGhlIHJlc3VsdCBpcyBhbHdheXMgaW4gdGhlIGN1cnJlbnQKICAgICAvLyBjb2xvciBz
cGFjZSByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZSBvZiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRl
cnMuCi0gICAgdm9pZCBzZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSkgb3ZlcnJpZGUgeyBGaWx0ZXJFZmZlY3Q6OnNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKTsgfQotICAgIHZvaWQgc2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0
aW5hdGlvbkNvbG9yU3BhY2UpIG92ZXJyaWRlIHsgRmlsdGVyRWZmZWN0OjpzZXRSZXN1bHRDb2xv
clNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7IH0KKyAgICB2b2lkIHNldE9wZXJh
dGluZ0NvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJikgb3ZlcnJpZGUgeyBG
aWx0ZXJFZmZlY3Q6OnNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCkpOyB9CisgICAgdm9pZCBzZXRSZXN1bHRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYpIG92ZXJyaWRlIHsgRmlsdGVyRWZmZWN0OjpzZXRSZXN1bHRDb2xvclNwYWNl
KERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsgfQogI2VuZGlmCiAKIHByaXZhdGU6Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RVRpbGUuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcg
QEAgdm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgICAgIHRpbGVSZWN0
LnNjYWxlKGZpbHRlci5maWx0ZXJSZXNvbHV0aW9uKCkud2lkdGgoKSwgZmlsdGVyLmZpbHRlclJl
c29sdXRpb24oKS5oZWlnaHQoKSk7CiAgICAgfQogCi0gICAgYXV0byB0aWxlSW1hZ2UgPSBTVkdS
ZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcih0aWxlUmVjdCwgdGlsZVJlY3QsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgZmlsdGVyKCkucmVuZGVyaW5nTW9kZSgpKTsKKyAg
ICBhdXRvIHRpbGVJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVy
KHRpbGVSZWN0LCB0aWxlUmVjdCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGZpbHRl
cigpLnJlbmRlcmluZ01vZGUoKSk7CiAgICAgaWYgKCF0aWxlSW1hZ2UpCiAgICAgICAgIHJldHVy
bjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJFZmZlY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MzksNyArNDM5LDcgQEAgc3RhdGljIHZvaWQgY29weVVucHJlbXVsdGlw
bHlpbmdBbHBoYShjbwogI2VuZGlmCiB9CiAKLU9wdGlvbmFsPFBpeGVsQnVmZmVyPiBGaWx0ZXJF
ZmZlY3Q6OmNvbnZlcnRQaXhlbEJ1ZmZlclRvQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UgdGFyZ2V0Q29sb3JTcGFjZSwgUGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyKQorT3B0aW9uYWw8
UGl4ZWxCdWZmZXI+IEZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVsQnVmZmVyVG9Db2xvclNwYWNl
KGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgdGFyZ2V0Q29sb3JTcGFjZSwgUGl4ZWxCdWZm
ZXImIHBpeGVsQnVmZmVyKQogewogICAgIC8vIEZJWE1FOiBVc2luZyBhbiBJbWFnZUJ1ZmZlciB0
byBwZXJmb3JtIHRoZSBjb2xvciBzcGFjZSBjb252ZXJzaW9uIGlzIHVubmVjZXNzYXJ5LiBXZSBj
YW4gZG8gaXQgZGlyZWN0bHkuCiAKQEAgLTQ1NCw3ICs0NTQsNyBAQCBPcHRpb25hbDxQaXhlbEJ1
ZmZlcj4gRmlsdGVyRWZmZWN0Ojpjb252CiAgICAgcmV0dXJuIGNvbnZlcnRJbWFnZUJ1ZmZlclRv
Q29sb3JTcGFjZSh0YXJnZXRDb2xvclNwYWNlLCAqYnVmZmVyLCBkZXN0aW5hdGlvblJlY3QsIHBp
eGVsQnVmZmVyLmZvcm1hdCgpLmFscGhhRm9ybWF0KTsKIH0KIAotT3B0aW9uYWw8UGl4ZWxCdWZm
ZXI+IEZpbHRlckVmZmVjdDo6Y29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKERlc3RpbmF0
aW9uQ29sb3JTcGFjZSB0YXJnZXRDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlciYgaW5wdXRCdWZmZXIs
IGNvbnN0IEludFJlY3QmIHJlY3QsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0QWxwaGFG
b3JtYXQpCitPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gRmlsdGVyRWZmZWN0Ojpjb252ZXJ0SW1hZ2VC
dWZmZXJUb0NvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiB0YXJnZXRDb2xv
clNwYWNlLCBJbWFnZUJ1ZmZlciYgaW5wdXRCdWZmZXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIEFs
cGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0QWxwaGFGb3JtYXQpCiB7CiAgICAgLy8gRklYTUU6
IFRoaXMgY2FuIGJlIGRvbmUgbW9yZSBkaXJlY3RseSB1c2luZyBQaXhlbEJ1ZmZlckNvbnZlcnNp
b24uCiAKQEAgLTQ3Miw3ICs0NzIsNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gRmlsdGVyRWZm
ZWN0Ojpjb252CiAgICAgcmV0dXJuIGNvbnZlcnRlZEJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoZm9y
bWF0LCByZWN0KTsKIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRJbWFnZUJ1
ZmZlclRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRG
b3JtYXQsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlD
b252ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmIGRlc3Rp
bmF0aW9uLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIEFscGhhUHJl
bXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsK
ICAgICAvLyBDb252ZXJ0cyB0aGUgZGF0YSBzdG9yZWQgaW4gbV9pbWFnZUJ1ZmZlclJlc3VsdCwg
YW5kIHNhdmUgdG8gZGVzdGluYXRpb24KICAgICBhdXRvIGNvbnZlcnRlZFBpeGVsQnVmZmVyID0g
Y29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKGNvbG9yU3BhY2UsICptX2ltYWdlQnVmZmVy
UmVzdWx0LCB7IEludFBvaW50KCksIG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpIH0sIG91dHB1
dEZvcm1hdCk7CkBAIC00ODEsNyArNDgxLDcgQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlDb252
ZXJ0ZWRJbWFnZUJ1ZgogICAgIGNvcHlJbWFnZUJ5dGVzKGNvbnZlcnRlZFBpeGVsQnVmZmVyLT5k
YXRhKCksIGRlc3RpbmF0aW9uLCBkZXN0UmVjdCk7CiB9CiAKLXZvaWQgRmlsdGVyRWZmZWN0Ojpj
b3B5Q29udmVydGVkUGl4ZWxCdWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiBk
ZXN0aW5hdGlvbiwgUGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEZpbHRlckVmZmVj
dDo6Y29weUNvbnZlcnRlZFBpeGVsQnVmZmVyVG9EZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJh
eSYgZGVzdGluYXRpb24sIFBpeGVsQnVmZmVyJiBwaXhlbEJ1ZmZlciwgY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKICAg
ICAvLyBDb252ZXJ0cyB0aGUgZGF0YSBzdG9yZWQgaW4gbV91bm11bHRpcGxpZWRJbWFnZVJlc3Vs
dC9tX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCwKICAgICAvLyB3aGljaGV2ZXIgaXNuJ3QgbnVs
bCwgYW5kIHNhdmUgdG8gZGVzdGluYXRpb24KQEAgLTYzNiw3ICs2MzYsNyBAQCBib29sIEZpbHRl
ckVmZmVjdDo6cmVxdWlyZXNQaXhlbEJ1ZmZlckNvCiAjZW5kaWYKIH0KIAotdm9pZCBGaWx0ZXJF
ZmZlY3Q6OnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIGRl
c3RpbmF0aW9uQ29sb3JTcGFjZSkKK3ZvaWQgRmlsdGVyRWZmZWN0Ojp0cmFuc2Zvcm1SZXN1bHRD
b2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgZGVzdGluYXRpb25Db2xvclNw
YWNlKQogewogI2lmIFVTRShDRykKICAgICAvLyBDRyBoYW5kbGVzIGNvbG9yIHNwYWNlIGFkanVz
dG1lbnRzIGludGVybmFsbHkuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIgotI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIK
KyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3Qu
aCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50UmVjdEV4dGVudC5oIgpAQCAt
MTY1LDEzICsxNjUsMTMgQEAgcHVibGljOgogICAgIGJvb2wgY2xpcHNUb0JvdW5kcygpIGNvbnN0
IHsgcmV0dXJuIG1fY2xpcHNUb0JvdW5kczsgfQogICAgIHZvaWQgc2V0Q2xpcHNUb0JvdW5kcyhi
b29sIHZhbHVlKSB7IG1fY2xpcHNUb0JvdW5kcyA9IHZhbHVlOyB9CiAKLSAgICBEZXN0aW5hdGlv
bkNvbG9yU3BhY2Ugb3BlcmF0aW5nQ29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0
aW5nQ29sb3JTcGFjZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRPcGVyYXRpbmdDb2xvclNwYWNl
KERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKSB7IG1fb3BlcmF0aW5nQ29sb3JTcGFj
ZSA9IGNvbG9yU3BhY2U7IH0KLSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgcmVzdWx0Q29sb3JT
cGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0Q29sb3JTcGFjZTsgfQotICAgIHZpcnR1YWwg
dm9pZCBzZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNl
KSB7IG1fcmVzdWx0Q29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7IH0KKyAgICBjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmIG9wZXJhdGluZ0NvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX29w
ZXJhdGluZ0NvbG9yU3BhY2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0T3BlcmF0aW5nQ29sb3JT
cGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpIHsgbV9vcGVyYXRp
bmdDb2xvclNwYWNlID0gY29sb3JTcGFjZTsgfQorICAgIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgcmVzdWx0Q29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0Q29sb3JTcGFj
ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRSZXN1bHRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkgeyBtX3Jlc3VsdENvbG9yU3BhY2UgPSBjb2xvclNw
YWNlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShGaWx0
ZXJFZmZlY3QqIGluLCBjb25zdCBpbnQpIHsgaW4tPnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2Uo
bV9vcGVyYXRpbmdDb2xvclNwYWNlKTsgfQotICAgIHZvaWQgdHJhbnNmb3JtUmVzdWx0Q29sb3JT
cGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpOworICAgIHZvaWQgdHJhbnNmb3JtUmVzdWx0Q29s
b3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKICAgICAKICAgICBzdGF0aWMg
VmVjdG9yPGZsb2F0PiBub3JtYWxpemVkRmxvYXRzKGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZhbHVl
cykKICAgICB7CkBAIC0yMDMsMTEgKzIwMywxMSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSA9IDA7CiAKICAgICB2b2lkIGNvcHlJbWFnZUJ5dGVz
KGNvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5JiBzb3VyY2UsIFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0
aW5hdGlvbiwgY29uc3QgSW50UmVjdCYpIGNvbnN0OwotICAgIHZvaWQgY29weUNvbnZlcnRlZElt
YWdlQnVmZmVyVG9EZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZv
aWQgY29weUNvbnZlcnRlZFBpeGVsQnVmZmVyVG9EZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJh
eSYsIFBpeGVsQnVmZmVyJiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBjb25zdCBJbnRSZWN0Jik7
CisgICAgdm9pZCBjb3B5Q29udmVydGVkSW1hZ2VCdWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xh
bXBlZEFycmF5JiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbiwgY29uc3QgSW50UmVjdCYpOworICAgIHZvaWQgY29weUNvbnZlcnRlZFBpeGVsQnVm
ZmVyVG9EZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYsIFBpeGVsQnVmZmVyJiwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiwgY29uc3QgSW50UmVjdCYpOwogICAgIGJvb2wgcmVxdWly
ZXNQaXhlbEJ1ZmZlckNvbG9yU3BhY2VDb252ZXJzaW9uKE9wdGlvbmFsPERlc3RpbmF0aW9uQ29s
b3JTcGFjZT4pOwotICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBjb252ZXJ0SW1hZ2VCdWZmZXJU
b0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlLCBJbWFnZUJ1ZmZlciYsIGNvbnN0IElu
dFJlY3QmLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uKTsKLSAgICBPcHRpb25hbDxQaXhlbEJ1ZmZl
cj4gY29udmVydFBpeGVsQnVmZmVyVG9Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSwg
UGl4ZWxCdWZmZXImKTsKKyAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gY29udmVydEltYWdlQnVm
ZmVyVG9Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEltYWdlQnVmZmVy
JiwgY29uc3QgSW50UmVjdCYsIEFscGhhUHJlbXVsdGlwbGljYXRpb24pOworICAgIE9wdGlvbmFs
PFBpeGVsQnVmZmVyPiBjb252ZXJ0UGl4ZWxCdWZmZXJUb0NvbG9yU3BhY2UoY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiwgUGl4ZWxCdWZmZXImKTsKICAgICAKIAogICAgIEZpbHRlciYgbV9m
aWx0ZXI7CkBAIC0yNDQsMTMgKzI0NCwxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9jbGlwc1Rv
Qm91bmRzIHsgdHJ1ZSB9OwogCiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJ
TkVBUl9TUkdCKQotICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBkZWZhdWx0T3BlcmF0aW5nQ29s
b3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQjsKKyAgICBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UgbV9vcGVyYXRpbmdDb2xvclNwYWNlIHsgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpMaW5lYXJTUkdCKCkgfTsKICNlbHNlCi0gICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGRl
ZmF1bHRPcGVyYXRpbmdDb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOwor
ICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBtX29wZXJhdGluZ0NvbG9yU3BhY2UgeyBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9OwogI2VuZGlmCi0KLSAgICBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgbV9vcGVyYXRpbmdDb2xvclNwYWNlIHsgZGVmYXVsdE9wZXJhdGluZ0NvbG9yU3BhY2Ug
fTsKLSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgbV9yZXN1bHRDb2xvclNwYWNlIHsgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1fcmVz
dWx0Q29sb3JTcGFjZSB7IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgCiAg
ICAgY29uc3QgVHlwZSBtX2ZpbHRlckVmZmVjdENsYXNzVHlwZTsKIH07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdy
YXBoaWMuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2
LDcgQEAgcHJpdmF0ZToKICAgICBTb3VyY2VHcmFwaGljKEZpbHRlciYgZmlsdGVyKQogICAgICAg
ICA6IEZpbHRlckVmZmVjdChmaWx0ZXIsIFR5cGU6OlNvdXJjZUdyYXBoaWMpCiAgICAgewotICAg
ICAgICBzZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7
CisgICAgICAgIHNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCkpOwogICAgIH0KIAogICAgIGNvbnN0IGNoYXIqIGZpbHRlck5hbWUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiAiU291cmNlR3JhcGhpYyI7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCShyZXZpc2lvbiAyNzc5
MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05p
Y29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA3Niw3
ICsxMDc2LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjphcHBlbmQoc3RkOgogICAg
IG1fY29tbWFuZExpc3QuYXBwZW5kKFdURk1vdmUoY29tbWFuZCkpOwogfQogCi12b2lkIENhaXJv
T3BlcmF0aW9uUmVjb3JkZXI6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3Qm
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+
JiYpCit2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGdW5jdGlvbjx2
b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKQogewogICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50
ZWQuCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2Nh
aXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlci5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNs
aXBQYXRoKGNvbnN0IFdlYkNvcmU6OlBhdGgmLCBXZWJDb3JlOjpXaW5kUnVsZSkgb3ZlcnJpZGU7
CiAgICAgV2ViQ29yZTo6SW50UmVjdCBjbGlwQm91bmRzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBj
bGlwVG9JbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb24sIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29s
b3JTcGFjZSwgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKT4mJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNl
JiwgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKT4mJikgb3ZlcnJpZGU7
CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHZvaWQgcGFpbnRGcmFtZUZvck1lZGlhKFdlYkNvcmU6
Ok1lZGlhUGxheWVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0aW5hdGlvbikgb3Zl
cnJpZGU7CiAgICAgYm9vbCBjYW5QYWludEZyYW1lRm9yTWVkaWEoY29uc3QgV2ViQ29yZTo6TWVk
aWFQbGF5ZXImKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDR0xMYXll
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS90ZXhtYXAvTmljb3NpYUdDR0xMYXllci5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQ0dM
TGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgR0NHTExheWVy
Ojpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKICAgICBJbnRTaXplIHRleHR1cmVTaXplKG1fY29udGV4
dC5tX2N1cnJlbnRXaWR0aCwgbV9jb250ZXh0Lm1fY3VycmVudEhlaWdodCk7CiAgICAgVGV4dHVy
ZU1hcHBlckdMOjpGbGFncyBmbGFncyA9IG1fY29udGV4dC5jb250ZXh0QXR0cmlidXRlcygpLmFs
cGhhID8gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCA6IDA7CiAjaWYgVVNFKEFOR0xFKQot
ICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKHRleHR1cmVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgUmVm
UHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVh
dGUodGV4dHVyZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghaW1h
Z2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQmFzZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4
ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIHsKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JB
OCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQg
Zm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZv
cm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgYXV0byBw
aXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBnZXRJbnRlcm5hbEZy
YW1lYnVmZmVyU2l6ZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVT
LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02Niw3ICs2Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWwK
IAogT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4
ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIHsKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JB
OCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQg
Zm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZv
cm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgYXV0byBw
aXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBnZXRJbnRlcm5hbEZy
YW1lYnVmZmVyU2l6ZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0JpdG1hcFRleHR1cmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcAkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHZvaWQgQml0bWFwVGV4dHVyZTo6
dXBkYXRlQ29udGVudHMoR3JhcGgKIHsKICAgICAvLyBNYWtpbmcgYW4gdW5jb25kaXRpb25hbGx5
IHVuYWNjZWxlcmF0ZWQgYnVmZmVyIGhlcmUgaXMgT0sgYmVjYXVzZSB0aGlzIGNvZGUKICAgICAv
LyBpc24ndCB1c2VkIGJ5IGFueSBwbGF0Zm9ybXMgdGhhdCByZXNwZWN0IHRoZSBhY2NlbGVyYXRl
ZCBiaXQuCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGFyZ2V0
UmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGltYWdlQnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0YXJnZXRSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVl
bkd0ay5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IE1pY2hhZWwgRW1tZWwgbWlrZS5lbW1lbEBnbWFp
bC5jb20KICAqIENvcHlyaWdodCAoQykgMjAwOCBDaHJpc3RpYW4gRHl3YW4gPGNocmlzdGlhbkBp
bWVuZGlvLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLgpAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVu
LmgiCiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9h
dFJlY3QuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJHdGtVdGlsaXRpZXMu
aCIKQEAgLTg1LDYgKzg2LDExIEBAIGJvb2wgc2NyZWVuSXNNb25vY2hyb21lKFdpZGdldCogd2lk
Z2V0KQogICAgIHJldHVybiBzY3JlZW5EZXB0aCh3aWRnZXQpIDwgMjsKIH0KIAorRGVzdGluYXRp
b25Db2xvclNwYWNlIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KikKK3sKKyAgICByZXR1cm4gRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7Cit9CisKIGJvb2wgc2NyZWVuSGFzSW52ZXJ0ZWRD
b2xvcnMoKQogewogICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QbGF0Zm9ybVNjcmVlbklPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5JT1MubW0JKHJldmlzaW9uIDI3NzkxOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNjcmVlbklPUy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMTQg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0y
MDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTg4LDkgKzg4LDkgQEAgYm9vbCBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5h
bWljUmFuZ2UoV2lkZwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotQ0dDb2xvclNwYWNlUmVmIHNj
cmVlbkNvbG9yU3BhY2UoV2lkZ2V0KiB3aWRnZXQpCitEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc2Ny
ZWVuQ29sb3JTcGFjZShXaWRnZXQqIHdpZGdldCkKIHsKLSAgICByZXR1cm4gc2NyZWVuU3VwcG9y
dHNFeHRlbmRlZENvbG9yKHdpZGdldCkgPyBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCkgOiBz
UkdCQ29sb3JTcGFjZVJlZigpOworICAgIHJldHVybiBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29s
b3Iod2lkZ2V0KSA/IERlc3RpbmF0aW9uQ29sb3JTcGFjZSB7IGV4dGVuZGVkU1JHQkNvbG9yU3Bh
Y2VSZWYoKSB9IDogRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiB9CiAKIC8vIFRoZXNl
IGZ1bmN0aW9ucyBzY2FsZSBiZXR3ZWVuIHNjcmVlbiBhbmQgcGFnZSBjb29yZGluYXRlcyBiZWNh
dXNlIEphdmFTY3JpcHQvRE9NIG9wZXJhdGlvbnMKQEAgLTE5MywxNiArMTkzLDE0IEBAIFNjcmVl
blByb3BlcnRpZXMgY29sbGVjdFNjcmVlblByb3BlcnRpZXMKICAgICAgICAgRmxvYXRSZWN0IHNj
cmVlbkF2YWlsYWJsZVJlY3QgPSBzY3JlZW4uYm91bmRzOwogICAgICAgICBzY3JlZW5BdmFpbGFi
bGVSZWN0LnNldFkoTlNNYXhZKHNjcmVlbi5ib3VuZHMpIC0gKHNjcmVlbkF2YWlsYWJsZVJlY3Qu
eSgpICsgc2NyZWVuQXZhaWxhYmxlUmVjdC5oZWlnaHQoKSkpOyAvLyBmbGlwCiAgICAgICAgIEZs
b2F0UmVjdCBzY3JlZW5SZWN0ID0gc2NyZWVuLl9yZWZlcmVuY2VCb3VuZHM7Ci0gICAgICAgIAot
ICAgICAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNlID0gc2NyZWVuQ29s
b3JTcGFjZShudWxscHRyKTsKLSAgICAgICAgCisgICAgICAgIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSBjb2xvclNwYWNlIHsgc2NyZWVuQ29sb3JTcGFjZShudWxscHRyKSB9OwogICAgICAgICBpbnQg
c2NyZWVuRGVwdGggPSBXZWJDb3JlOjpzY3JlZW5EZXB0aChudWxscHRyKTsKICAgICAgICAgaW50
IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50ID0gV2ViQ29yZTo6c2NyZWVuRGVwdGhQZXJDb21wb25l
bnQobnVsbHB0cik7CiAgICAgICAgIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yID0g
V2ViQ29yZTo6c2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKG51bGxwdHIpOwogICAgICAgICBi
b29sIHNjcmVlbkhhc0ludmVydGVkQ29sb3JzID0gV2ViQ29yZTo6c2NyZWVuSGFzSW52ZXJ0ZWRD
b2xvcnMoKTsKICAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBXZWJDb3JlOjpzY3JlZW5QUElG
YWN0b3IoKTsKIAotICAgICAgICBzY3JlZW5Qcm9wZXJ0aWVzLnNjcmVlbkRhdGFNYXAuc2V0KCsr
ZGlzcGxheUlELCBTY3JlZW5EYXRhIHsgc2NyZWVuQXZhaWxhYmxlUmVjdCwgc2NyZWVuUmVjdCwg
Y29sb3JTcGFjZSwgc2NyZWVuRGVwdGgsIHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50LCBzY3JlZW5T
dXBwb3J0c0V4dGVuZGVkQ29sb3IsIHNjcmVlbkhhc0ludmVydGVkQ29sb3JzLCBmYWxzZSwgc2Nh
bGVGYWN0b3IgfSk7CisgICAgICAgIHNjcmVlblByb3BlcnRpZXMuc2NyZWVuRGF0YU1hcC5zZXQo
KytkaXNwbGF5SUQsIFNjcmVlbkRhdGEgeyBzY3JlZW5BdmFpbGFibGVSZWN0LCBzY3JlZW5SZWN0
LCBXVEZNb3ZlKGNvbG9yU3BhY2UpLCBzY3JlZW5EZXB0aCwgc2NyZWVuRGVwdGhQZXJDb21wb25l
bnQsIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciwgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMs
IGZhbHNlLCBzY2FsZUZhY3RvciB9KTsKICAgICAgICAgCiAgICAgICAgIGlmIChzY3JlZW4gPT0g
W1BBTDo6Z2V0VUlTY3JlZW5DbGFzcygpIG1haW5TY3JlZW5dKQogICAgICAgICAgICAgc2NyZWVu
UHJvcGVydGllcy5wcmltYXJ5RGlzcGxheUlEID0gZGlzcGxheUlEOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1hYy5tbQkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsOSArMTMwLDcgQEAgU2NyZWVuUHJvcGVydGllcyBj
b2xsZWN0U2NyZWVuUHJvcGVydGllcwogICAgICAgICBGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxl
UmVjdCA9IHNjcmVlbi52aXNpYmxlRnJhbWU7CiAgICAgICAgIHNjcmVlbkF2YWlsYWJsZVJlY3Qu
c2V0WShOU01heFkoc2NyZWVuLmZyYW1lKSAtIChzY3JlZW5BdmFpbGFibGVSZWN0LnkoKSArIHNj
cmVlbkF2YWlsYWJsZVJlY3QuaGVpZ2h0KCkpKTsgLy8gZmxpcAogICAgICAgICBGbG9hdFJlY3Qg
c2NyZWVuUmVjdCA9IHNjcmVlbi5mcmFtZTsKLQotICAgICAgICBSZXRhaW5QdHI8Q0dDb2xvclNw
YWNlUmVmPiBjb2xvclNwYWNlID0gc2NyZWVuLmNvbG9yU3BhY2UuQ0dDb2xvclNwYWNlOwotCisg
ICAgICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlIHsgc2NyZWVuLmNvbG9yU3Bh
Y2UuQ0dDb2xvclNwYWNlIH07CiAgICAgICAgIGludCBzY3JlZW5EZXB0aCA9IE5TQml0c1BlclBp
eGVsRnJvbURlcHRoKHNjcmVlbi5kZXB0aCk7CiAgICAgICAgIGludCBzY3JlZW5EZXB0aFBlckNv
bXBvbmVudCA9IE5TQml0c1BlclNhbXBsZUZyb21EZXB0aChzY3JlZW4uZGVwdGgpOwogICAgICAg
ICBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciA9IFtzY3JlZW4gY2FuUmVwcmVzZW50
RGlzcGxheUdhbXV0Ok5TRGlzcGxheUdhbXV0UDNdOwpAQCAtMTYzLDcgKzE2MSw3IEBAIFNjcmVl
blByb3BlcnRpZXMgY29sbGVjdFNjcmVlblByb3BlcnRpZXMKICAgICAgICAgaWYgKGRpc3BsYXlN
YXNrKQogICAgICAgICAgICAgZ3B1SUQgPSBncHVJREZvckRpc3BsYXlNYXNrKGRpc3BsYXlNYXNr
KTsKIAotICAgICAgICBzY3JlZW5Qcm9wZXJ0aWVzLnNjcmVlbkRhdGFNYXAuc2V0KGRpc3BsYXlJ
RCwgU2NyZWVuRGF0YSB7IHNjcmVlbkF2YWlsYWJsZVJlY3QsIHNjcmVlblJlY3QsIGNvbG9yU3Bh
Y2UsIHNjcmVlbkRlcHRoLCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCwgc2NyZWVuU3VwcG9ydHNF
eHRlbmRlZENvbG9yLCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycywgc2NyZWVuU3VwcG9ydHNIaWdo
RHluYW1pY1JhbmdlLCBzY3JlZW5Jc01vbm9jaHJvbWUsIGRpc3BsYXlNYXNrLCBncHVJRCwgZHlu
YW1pY1JhbmdlTW9kZSwgc2NhbGVGYWN0b3IgfSk7CisgICAgICAgIHNjcmVlblByb3BlcnRpZXMu
c2NyZWVuRGF0YU1hcC5zZXQoZGlzcGxheUlELCBTY3JlZW5EYXRhIHsgc2NyZWVuQXZhaWxhYmxl
UmVjdCwgc2NyZWVuUmVjdCwgV1RGTW92ZShjb2xvclNwYWNlKSwgc2NyZWVuRGVwdGgsIHNjcmVl
bkRlcHRoUGVyQ29tcG9uZW50LCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IsIHNjcmVlbkhh
c0ludmVydGVkQ29sb3JzLCBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UsIHNjcmVlbklz
TW9ub2Nocm9tZSwgZGlzcGxheU1hc2ssIGdwdUlELCBkeW5hbWljUmFuZ2VNb2RlLCBzY2FsZUZh
Y3RvciB9KTsKIAogICAgICAgICBpZiAoIXNjcmVlblByb3BlcnRpZXMucHJpbWFyeURpc3BsYXlJ
RCkKICAgICAgICAgICAgIHNjcmVlblByb3BlcnRpZXMucHJpbWFyeURpc3BsYXlJRCA9IGRpc3Bs
YXlJRDsKQEAgLTM0MCwxMyArMzM4LDEzIEBAIE5TU2NyZWVuICpzY3JlZW4oUGxhdGZvcm1EaXNw
bGF5SUQgZGlzcGwKICAgICByZXR1cm4gZmlyc3RTY3JlZW4oKTsKIH0KIAotQ0dDb2xvclNwYWNl
UmVmIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KiB3aWRnZXQpCitEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2Ugc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqIHdpZGdldCkKIHsKICAgICBpZiAoYXV0byBkYXRh
ID0gc2NyZWVuUHJvcGVydGllcyh3aWRnZXQpKQotICAgICAgICByZXR1cm4gZGF0YS0+Y29sb3JT
cGFjZS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIGRhdGEtPmNvbG9yU3BhY2U7CiAKICAgICBBU1NF
UlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5Db21tdW5pY2F0ZVdp
dGhXaW5kb3dTZXJ2ZXIpKTsKLSAgICByZXR1cm4gc2NyZWVuKHdpZGdldCkuY29sb3JTcGFjZS5D
R0NvbG9yU3BhY2U7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB7IHNjcmVlbih3
aWRnZXQpLmNvbG9yU3BhY2UuQ0dDb2xvclNwYWNlIH07CiB9CiAKIGJvb2wgc2NyZWVuU3VwcG9y
dHNFeHRlbmRlZENvbG9yKFdpZGdldCogd2lkZ2V0KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1RoZW1lTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9UaGVtZU1hYy5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03MjYsNyArNzI2LDcg
QEAgYm9vbCBUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaQogCiAgICAgaWYgKHVz
ZUltYWdlQnVmZmVyKSB7CiAgICAgICAgIE5TUmVjdCBpbWFnZUJ1ZmZlckRyYXdSZWN0ID0gTlNS
ZWN0KEZsb2F0UmVjdChidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVj
dE91dGxpbmVXaWR0aCwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKSk7Ci0gICAgICAgIGF1
dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihyZWN0
LnNpemUoKSArIDIgKiBGbG9hdFNpemUoYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCBidXR0
b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgpLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCLCBjb250ZXh0KTsKKyAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHJlY3Quc2l6ZSgpICsgMiAqIEZsb2F0
U2l6ZShidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVX
aWR0aCksIGRldmljZVNjYWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
Y29udGV4dCk7CiAgICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4g
bmVlZHNSZXBhaW50OwogICAgICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lci5jcHAJKHJldmlzaW9uIDI3Nzkx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcg
KzY3LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lcjo6dQogICAgIGlm
ICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcGl4ZWxCdWZmZXIg
PSBpbWFnZUJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpV
bnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCIH0sIHsgeyB9LCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSB9KTsKKyAgICBhdXRv
IHBpeGVsQnVmZmVyID0gaW1hZ2VCdWZmZXItPmdldFBpeGVsQnVmZmVyKHsgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6QkdSQTgsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpIH0sIHsgeyB9LCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUo
KSB9KTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU0
LDcgKzQ1NCw3IEBAIEltYWdlQnVmZmVyKiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6aW0KICAg
ICBpZiAobV9pbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXIuZ2V0KCk7
CiAKLSAgICBtX2ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjYXB0dXJlU2l6ZSgp
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgbV9pbWFnZUJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoY2FwdHVyZVNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwg
MSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAg
ICAgaWYgKCFtX2ltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcGxheXN0YXRpb24vUGxhdGZvcm1TY3JlZW5QbGF5U3Rh
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcGxheXN0YXRp
b24vUGxhdGZvcm1TY3JlZW5QbGF5U3RhdGlvbi5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3BsYXlzdGF0aW9uL1BsYXRmb3JtU2NyZWVuUGxheVN0YXRp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKIAorI2luY2x1ZGUgIkRlc3RpbmF0aW9u
Q29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCiAKQEAgLTcxLDQgKzcyLDkgQEAgYm9vbCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVk
Q29sb3IoV2lkZ2V0KgogICAgIHJldHVybiBmYWxzZTsKIH0KIAorRGVzdGluYXRpb25Db2xvclNw
YWNlIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KikKK3sKKyAgICByZXR1cm4gRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVlbldpbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BsYXRmb3JtU2NyZWVuV2luLmNwcAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BsYXRmb3Jt
U2NyZWVuV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAKKyNpbmNsdWRlICJEZXN0
aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgpAQCAtMTA0LDEyICsxMDUsMTAgQEAgRmxv
YXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QoV2lkZ2V0KiB3aQogICAgIHJldHVybiBtb25pdG9y
SW5mby5yY1dvcms7CiB9CiAKLSNpZiBVU0UoQ0cpCi1DR0NvbG9yU3BhY2VSZWYgc2NyZWVuQ29s
b3JTcGFjZShXaWRnZXQqKQorRGVzdGluYXRpb25Db2xvclNwYWNlIHNjcmVlbkNvbG9yU3BhY2Uo
V2lkZ2V0KikKIHsKLSAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKKyAgICByZXR1cm4g
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiB9Ci0jZW5kaWYKIAogYm9vbCBzY3JlZW5T
dXBwb3J0c0V4dGVuZGVkQ29sb3IoV2lkZ2V0KikKIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dwZS9QbGF0Zm9ybVNjcmVlbldQRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd3BlL1BsYXRmb3JtU2NyZWVuV1BFLmNwcAkocmV2aXNpb24gMjc3OTE5
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3BlL1BsYXRmb3JtU2NyZWVuV1BFLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgogI2luY2x1ZGUgIldpZGdldC5oIgpAQCAtODEsNiArODIsMTEgQEAgRmxvYXRSZWN0IHNjcmVl
bkF2YWlsYWJsZVJlY3QoV2lkZ2V0KiB3aQogICAgIHJldHVybiBzY3JlZW5SZWN0KHdpZGdldCk7
CiB9CiAKK0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCopCit7
CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOworfQorCiBib29sIHNj
cmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcihXaWRnZXQqKQogewogICAgIHJldHVybiBmYWxzZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTgsNiArMTgsNyBAQAogICovCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUg
IkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQzRC5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKQEAgLTMyLDgg
KzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
Ci0jaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlQ0cuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0lP
U3VyZmFjZS5oPgorI2luY2x1ZGUgIklPU3VyZmFjZS5oIgogI2luY2x1ZGUgPHd0Zi9NYWNoU2Vu
ZFJpZ2h0Lmg+CiAjZW5kaWYKIApAQCAtNDQ2LDcgKzQ0Niw3IEBAIE9wdGlvbmFsPERldmljZTo6
RnJhbWVEYXRhOjpMYXllckRhdGE+IEQKICAgICBXVEY6Ok1hY2hTZW5kUmlnaHQgc3VyZmFjZVNl
bmRSaWdodDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN1cmZhY2VTZW5kUmlnaHQpKQogICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIGxheWVyRGF0YS5zdXJmYWNlID0gV2ViQ29y
ZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoc3VyZmFjZVNlbmRSaWdo
dCksIFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCkpOworICAgIGxheWVyRGF0YS5zdXJmYWNl
ID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoc3VyZmFj
ZVNlbmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICNl
bmRpZgogICAgIHJldHVybiBsYXllckRhdGE7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQ1NTRmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvQ1NTRmlsdGVyLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0NTU0ZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMSw5ICsxMTEsOSBAQCBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBDU1NGaWx0ZXI6OmJ1aWxkUmVmCiAgICAgICAgIGVmZmVjdEVs
ZW1lbnQuc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKGVmZmVjdC5nZXQoKSk7CiAgICAgICAgIGlmIChl
ZmZlY3RFbGVtZW50LnJlbmRlcmVyKCkpIHsKICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1Jf
U1BBQ0VfTElORUFSX1NSR0IpCi0gICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9y
U3BhY2UoZWZmZWN0RWxlbWVudC5yZW5kZXJlcigpLT5zdHlsZSgpLnN2Z1N0eWxlKCkuY29sb3JJ
bnRlcnBvbGF0aW9uRmlsdGVycygpID09IENvbG9ySW50ZXJwb2xhdGlvbjo6TGluZWFyUkdCID8g
RGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCIDogRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKTsKKyAgICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShlZmZl
Y3RFbGVtZW50LnJlbmRlcmVyKCktPnN0eWxlKCkuc3ZnU3R5bGUoKS5jb2xvckludGVycG9sYXRp
b25GaWx0ZXJzKCkgPT0gQ29sb3JJbnRlcnBvbGF0aW9uOjpMaW5lYXJSR0IgPyBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKSA6IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
KTsKICNlbHNlCi0gICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKKyAgICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0
aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAjZW5kaWYKICAg
ICAgICAgfQogICAgICAgICBidWlsZGVyLT5hZGQoZWZmZWN0RWxlbWVudC5yZXN1bHQoKSwgZWZm
ZWN0KTsKQEAgLTI5Niw3ICsyOTYsNyBAQCBib29sIENTU0ZpbHRlcjo6YnVpbGQoUmVuZGVyRWxl
bWVudCYgcmVuCiAgICAgICAgICAgICAvLyBVbmxpa2UgU1ZHIEZpbHRlcnMgYW5kIENTU0ZpbHRl
ckltYWdlcywgZmlsdGVyIGZ1bmN0aW9ucyBvbiB0aGUgZmlsdGVyCiAgICAgICAgICAgICAvLyBw
cm9wZXJ0eSBhcHBsaWVkIGhlcmUgc2hvdWxkIG5vdCBjbGlwIHRvIHRoZWlyIHByaW1pdGl2ZSBz
dWJyZWdpb25zLgogICAgICAgICAgICAgZWZmZWN0LT5zZXRDbGlwc1RvQm91bmRzKGNvbnN1bWVy
ID09IEZpbHRlckNvbnN1bWVyOjpGaWx0ZXJGdW5jdGlvbik7Ci0gICAgICAgICAgICBlZmZlY3Qt
PnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKKyAg
ICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChmaWx0ZXJPcGVy
YXRpb24udHlwZSgpICE9IEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFKSB7CiAgICAgICAgICAg
ICAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsgV1RGTW92ZShwcmV2aW91c0VmZmVjdCkg
fTsKQEAgLTM0NCwxMSArMzQ0LDExIEBAIHZvaWQgQ1NTRmlsdGVyOjphbGxvY2F0ZUJhY2tpbmdT
dG9yZUlmTmUKICAgICBJbnRTaXplIGxvZ2ljYWxTaXplIHsgbV9zb3VyY2VEcmF3aW5nUmVnaW9u
LnNpemUoKSB9OwogICAgIGlmICghc291cmNlSW1hZ2UoKSB8fCBzb3VyY2VJbWFnZSgpLT5sb2dp
Y2FsU2l6ZSgpICE9IGxvZ2ljYWxTaXplKSB7CiAjaWYgVVNFKERJUkVDVDJEKQotICAgICAgICBz
ZXRTb3VyY2VJbWFnZShJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZW5kZXJpbmdN
b2RlKCksICZ0YXJnZXRDb250ZXh0LCBmaWx0ZXJTY2FsZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCkpOworICAgICAgICBzZXRTb3VyY2VJbWFnZShJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZW5kZXJpbmdNb2RlKCksICZ0YXJnZXRD
b250ZXh0LCBmaWx0ZXJTY2FsZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KSk7CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0odGFyZ2V0Q29u
dGV4dCk7CiAgICAgICAgIFJlbmRlcmluZ01vZGUgbW9kZSA9IG1fZmlsdGVyUmVuZGVyZXIgPyBS
ZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IHJlbmRlcmluZ01vZGUoKTsKLSAgICAgICAgc2V0
U291cmNlSW1hZ2UoSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgbW9kZSwgZmlsdGVy
U2NhbGUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgp
KTsKKyAgICAgICAgc2V0U291cmNlSW1hZ2UoSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6
ZSwgbW9kZSwgZmlsdGVyU2NhbGUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBp
eGVsRm9ybWF0OjpCR1JBOCkpOwogI2VuZGlmCiAgICAgfQogICAgIG1fZ3JhcGhpY3NCdWZmZXJB
dHRhY2hlZCA9IHRydWU7CkBAIC0zODIsMTIgKzM4MiwxMiBAQCB2b2lkIENTU0ZpbHRlcjo6YXBw
bHkoKQogICAgIGlmIChtX2ZpbHRlclJlbmRlcmVyKSB7CiAgICAgICAgIG1fZmlsdGVyUmVuZGVy
ZXItPmFwcGx5RWZmZWN0cyhlZmZlY3QpOwogICAgICAgICBpZiAobV9maWx0ZXJSZW5kZXJlci0+
aGFzUmVzdWx0KCkpIHsKLSAgICAgICAgICAgIGVmZmVjdC50cmFuc2Zvcm1SZXN1bHRDb2xvclNw
YWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CisgICAgICAgICAgICBlZmZlY3QudHJh
bnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAgICAgZWZmZWN0LmFwcGx5KCk7
Ci0gICAgZWZmZWN0LnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKTsKKyAgICBlZmZlY3QudHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiB9CiAKIExheW91dFJlY3QgQ1NTRmlsdGVyOjpjb21w
dXRlU291cmNlSW1hZ2VSZWN0Rm9yRGlydHlSZWN0KGNvbnN0IExheW91dFJlY3QmIGZpbHRlckJv
eFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGRpcnR5UmVjdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODc2LDcgKzg3Niw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OnBhaW50RmlsbExheWUKICAgICAgICAgbWFza1JlY3QuaW50ZXJzZWN0KHNuYXBwZWRJ
bnRSZWN0KHBhaW50SW5mby5yZWN0KSk7CiAKICAgICAgICAgLy8gTm93IGNyZWF0ZSB0aGUgbWFz
ay4KLSAgICAgICAgbWFza0ltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZm
ZXIobWFza1JlY3Quc2l6ZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGNvbnRleHQp
OworICAgICAgICBtYXNrSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cihtYXNrUmVjdC5zaXplKCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBjb250ZXh0
KTsKICAgICAgICAgaWYgKCFtYXNrSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IHBhaW50TWFza0ZvclRleHRGaWxsQm94KG1hc2tJbWFnZS5nZXQoKSwgbWFza1JlY3QsIGJveCwg
c2Nyb2xsZWRQYWludFJlY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MjY3LDcgKzMyNjcsNyBAQCBzdGF0aWMgUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm5Gb3JEZXNjcmlw
CiB7CiAgICAgY29uc3QgRmxvYXRTaXplIHRpbGVTaXplIHsgMzIsIDE4IH07CiAKLSAgICBhdXRv
IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIodGlsZVNp
emUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgZGVzdENvbnRleHQpOworICAgIGF1dG8g
aW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcih0aWxlU2l6
ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGRlc3RDb250ZXh0KTsKICAgICBpZiAo
IWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTgzLDExICsxOTgzLDExIEBAIHZvaWQgUmVuZGVyVGhlbWVJT1M6OnBhaW50U3lzdGVt
UHJldmlld0IKICAgICBJT1N1cmZhY2VSZWYgc3VyZmFjZTsKICAgICBpZiAodXNlU21hbGxCYWRn
ZSkgewogICAgICAgICBpZiAoIW1fc21hbGxCYWRnZVN1cmZhY2UpCi0gICAgICAgICAgICBtX3Nt
YWxsQmFkZ2VTdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoeyBzbWFsbEJhZGdlRGltZW5zaW9u
LCBzbWFsbEJhZGdlRGltZW5zaW9uIH0sIHNSR0JDb2xvclNwYWNlUmVmKCkpOworICAgICAgICAg
ICAgbV9zbWFsbEJhZGdlU3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKHsgc21hbGxCYWRnZURp
bWVuc2lvbiwgc21hbGxCYWRnZURpbWVuc2lvbiB9LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSk7CiAgICAgICAgIHN1cmZhY2UgPSBtX3NtYWxsQmFkZ2VTdXJmYWNlLT5zdXJmYWNlKCk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFtX2xhcmdlQmFkZ2VTdXJmYWNlKQotICAgICAg
ICAgICAgbV9sYXJnZUJhZGdlU3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKHsgbGFyZ2VCYWRn
ZURpbWVuc2lvbiwgbGFyZ2VCYWRnZURpbWVuc2lvbiB9LCBzUkdCQ29sb3JTcGFjZVJlZigpKTsK
KyAgICAgICAgICAgIG1fbGFyZ2VCYWRnZVN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZSh7IGxh
cmdlQmFkZ2VEaW1lbnNpb24sIGxhcmdlQmFkZ2VEaW1lbnNpb24gfSwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCkpOwogICAgICAgICBzdXJmYWNlID0gbV9sYXJnZUJhZGdlU3VyZmFjZS0+
c3VyZmFjZSgpOwogICAgIH0KICAgICBbbV9jaUNvbnRleHQuZ2V0KCkgcmVuZGVyOnRyYW5zbGF0
ZWRJbWFnZSB0b0lPU3VyZmFjZTpzdXJmYWNlIGJvdW5kczpiYWRnZVJlY3QgY29sb3JTcGFjZTpz
UkdCQ29sb3JTcGFjZVJlZigpXTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVNYWMubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTMwOSw3ICsxMzA5LDcg
QEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRQcm9ncmVzc0JhcihjbwogICAgIGNvbnN0IGF1
dG8mIHJlbmRlclByb2dyZXNzID0gZG93bmNhc3Q8UmVuZGVyUHJvZ3Jlc3M+KHJlbmRlck9iamVj
dCk7CiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSByZW5kZXJPYmplY3QuZG9jdW1lbnQo
KS5kZXZpY2VTY2FsZUZhY3RvcigpOwogICAgIGJvb2wgaXNJbmRldGVybWluYXRlID0gcmVuZGVy
UHJvZ3Jlc3MucG9zaXRpb24oKSA8IDA7Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGluZmxhdGVkUmVjdC5zaXplKCksIGRldmljZVNj
YWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIHBhaW50SW5mby5jb250ZXh0
KCkpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJs
ZUJ1ZmZlcihpbmZsYXRlZFJlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCksIHBhaW50SW5mby5jb250ZXh0KCkpOwogICAgIGlmICghaW1h
Z2VCdWZmZXIpCiAgICAgICAgIHJldHVybiB0cnVlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw3
ICsxODEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0CiAgICAg
SW50UmVjdCBtYXJnaW5SZWN0ID0gc25hcHBlZEludFJlY3QobWFyZ2luUik7CiAgICAgYXV0byBp
bnRlcnZhbHMgPSBtYWtlVW5pcXVlPFJhc3RlclNoYXBlSW50ZXJ2YWxzPihtYXJnaW5SZWN0Lmhl
aWdodCgpLCAtbWFyZ2luUmVjdC55KCkpOwogICAgIC8vIEZJWE1FICgxNDk0MjApOiBUaGlzIGJ1
ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkLgotICAgIGF1
dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCksIFJl
bmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
LCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
IAogICAgIGF1dG8gY3JlYXRlU2hhcGUgPSBbJl0oKSB7CiAgICAgICAgIGF1dG8gcmFzdGVyU2hh
cGUgPSBtYWtlVW5pcXVlPFJhc3RlclNoYXBlPihXVEZNb3ZlKGludGVydmFscyksIG1hcmdpblJl
Y3Quc2l6ZSgpKTsKQEAgLTE5Nyw3ICsxOTcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNo
YXBlOjpjcmVhdGVSYXN0CiAgICAgaWYgKGltYWdlKQogICAgICAgICBncmFwaGljc0NvbnRleHQu
ZHJhd0ltYWdlKCppbWFnZSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZVJlY3Quc2l6ZSgpKSk7
CiAKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9u
OjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCIH07CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGltYWdlQnVm
ZmVyLT5nZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIHsgSW50UG9pbnQoKSwgaW1hZ2VSZWN0LnNpemUo
KSB9KTsKICAgICAKICAgICAvLyBXZSBjb3VsZCBnZXQgdG8gYSB2YWx1ZSB3aGVyZSBQaXhlbEJ1
ZmZlciBjb3VsZCBiZSBudWxsb3B0LiBBIGNhc2Ugd2hlcmUgSW1hZ2VSZWN0LnNpemUoKSBpcyBo
dWdlLCBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlQ2xpcHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw3ICsxNDYsNyBAQCBib29s
IFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlDbGlwCiAgICAgQWZmaW5lVHJhbnNmb3Jt
IGFic29sdXRlVHJhbnNmb3JtID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJhbnNm
b3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0ocmVuZGVyZXIpOwogICAgIGlmICgh
Y2xpcHBlckRhdGEuaXNWYWxpZEZvckdlb21ldHJ5KG9iamVjdEJvdW5kaW5nQm94LCBhYnNvbHV0
ZVRyYW5zZm9ybSkpIHsKICAgICAgICAgLy8gRklYTUUgKDE0OTQ2OSk6IFRoaXMgaW1hZ2UgYnVm
ZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQuIE1ha2luZyBp
dCBtYXRjaCB0aGUgY29udGV4dCBicmVha3MgbmVzdGVkIGNsaXBwaW5nLCB0aG91Z2guCi0gICAg
ICAgIGF1dG8gbWFza0ltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZm
ZXIob2JqZWN0Qm91bmRpbmdCb3gsIGFic29sdXRlVHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsICZjb250ZXh0KTsKKyAg
ICAgICAgYXV0byBtYXNrSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1
ZmZlcihvYmplY3RCb3VuZGluZ0JveCwgYWJzb2x1dGVUcmFuc2Zvcm0sIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAmY29udGV4dCk7
CiAgICAgICAgIGlmICghbWFza0ltYWdlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlRmlsdGVyLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwNCw5ICsxMDQsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHRmlsdGVyQnVpbGRlcj4gUmVu
ZGVyCiAgICAgICAgIGVmZmVjdC0+c2V0RWZmZWN0Qm91bmRhcmllcyhTVkdMZW5ndGhDb250ZXh0
OjpyZXNvbHZlUmVjdGFuZ2xlPFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz4o
JmVsZW1lbnQsIGZpbHRlckVsZW1lbnQoKS5wcmltaXRpdmVVbml0cygpLCB0YXJnZXRCb3VuZGlu
Z0JveCkpOwogICAgICAgICBpZiAoZWxlbWVudC5yZW5kZXJlcigpKSB7CiAjaWYgRU5BQkxFKERF
U1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQotICAgICAgICAgICAgZWZmZWN0LT5z
ZXRPcGVyYXRpbmdDb2xvclNwYWNlKGVsZW1lbnQucmVuZGVyZXIoKS0+c3R5bGUoKS5zdmdTdHls
ZSgpLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSA9PSBDb2xvckludGVycG9sYXRpb246Okxp
bmVhclJHQiA/IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQiA6IERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQik7CisgICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9y
U3BhY2UoZWxlbWVudC5yZW5kZXJlcigpLT5zdHlsZSgpLnN2Z1N0eWxlKCkuY29sb3JJbnRlcnBv
bGF0aW9uRmlsdGVycygpID09IENvbG9ySW50ZXJwb2xhdGlvbjo6TGluZWFyUkdCID8gRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCkgOiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSk7CiAjZWxzZQotICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNl
KERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CisgICAgICAgICAgICBlZmZlY3QtPnNldE9w
ZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogI2VuZGlm
CiAgICAgICAgIH0KICAgICAgICAgYnVpbGRlci0+YWRkKGVsZW1lbnQucmVzdWx0KCksIFdURk1v
dmUoZWZmZWN0KSk7CkBAIC0xOTgsOSArMTk4LDkgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUZp
bHRlcjo6YXBwbHlSZXNvdQogCiAgICAgYXV0byByZW5kZXJpbmdNb2RlID0gcmVuZGVyZXIuc2V0
dGluZ3MoKS5hY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVkKCkgPyBSZW5kZXJpbmdNb2RlOjpBY2Nl
bGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CiAjaWYgRU5BQkxFKERFU1RJ
TkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQotICAgIGF1dG8gY29sb3JTcGFjZSA9IERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQjsKKyAgICBhdXRvIGNvbG9yU3BhY2UgPSBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKTsKICNlbHNlCi0gICAgYXV0byBjb2xv
clNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOworICAgIGF1dG8gY29sb3JTcGFj
ZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOwogI2VuZGlmCiAgICAgYXV0byBzb3Vy
Y2VHcmFwaGljID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoZmlsdGVy
RGF0YS0+ZHJhd2luZ1JlZ2lvbiwgZWZmZWN0aXZlVHJhbnNmb3JtLCBjb2xvclNwYWNlLCByZW5k
ZXJpbmdNb2RlLCBjb250ZXh0KTsKICAgICBpZiAoIXNvdXJjZUdyYXBoaWMpIHsKQEAgLTI4MSw3
ICsyODEsNyBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSCiAgICAg
ICAgICAgICBmaWx0ZXJEYXRhLnN0YXRlID0gRmlsdGVyRGF0YTo6QXBwbHlpbmc7CiAgICAgICAg
ICAgICBsYXN0RWZmZWN0LT5hcHBseSgpOwogICAgICAgICAgICAgbGFzdEVmZmVjdC0+Y29ycmVj
dEZpbHRlclJlc3VsdElmTmVlZGVkKCk7Ci0gICAgICAgICAgICBsYXN0RWZmZWN0LT50cmFuc2Zv
cm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CisgICAgICAg
ICAgICBsYXN0RWZmZWN0LT50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpKTsKICAgICAgICAgfQogICAgICAgICBmaWx0ZXJEYXRhLnN0YXRlID0g
RmlsdGVyRGF0YTo6QnVpbHQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUdyYWRpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBzdGF0aWMgaW5s
aW5lIGJvb2wgY3JlYXRlTWFza0FuZFN3YXBDb250CiAgICAgQWZmaW5lVHJhbnNmb3JtIGFic29s
dXRlVHJhbnNmb3JtID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRp
b25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0oKnRleHRSb290QmxvY2spOwogICAgIEZsb2F0
UmVjdCByZXBhaW50UmVjdCA9IHRleHRSb290QmxvY2stPnJlcGFpbnRSZWN0SW5Mb2NhbENvb3Jk
aW5hdGVzKCk7CiAKLSAgICBhdXRvIG1hc2tJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNy
ZWF0ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCLCBjb250ZXh0LT5yZW5kZXJpbmdNb2RlKCkpOworICAgIGF1dG8g
bWFza0ltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIocmVwYWlu
dFJlY3QsIGFic29sdXRlVHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
Y29udGV4dC0+cmVuZGVyaW5nTW9kZSgpKTsKICAgICBpZiAoIW1hc2tJbWFnZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlTWFza2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAkocmV2aXNpb24gMjc3OTE5KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDkgKzcxLDkgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJj
ZU1hc2tlcjo6YXBwbHlSZXNvdQogICAgICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5
bGUgPSBzdHlsZSgpLnN2Z1N0eWxlKCk7CiAKICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1Jf
U1BBQ0VfTElORUFSX1NSR0IpCi0gICAgICAgIGF1dG8gY29sb3JTcGFjZSA9IHN2Z1N0eWxlLmNv
bG9ySW50ZXJwb2xhdGlvbigpID09IENvbG9ySW50ZXJwb2xhdGlvbjo6TGluZWFyUkdCID8gRGVz
dGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCIDogRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCOworICAgICAgICBhdXRvIGNvbG9yU3BhY2UgPSBzdmdTdHlsZS5jb2xvckludGVycG9sYXRp
b24oKSA9PSBDb2xvckludGVycG9sYXRpb246OkxpbmVhclJHQiA/IERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6TGluZWFyU1JHQigpIDogRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiAjZWxz
ZQotICAgICAgICBhdXRvIGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I7
CisgICAgICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
OwogI2VuZGlmCiAKICAgICAgICAgLy8gRklYTUUgKDE0OTQ3MCk6IFRoaXMgaW1hZ2UgYnVmZmVy
IHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQuIE1ha2luZyBpdCBt
YXRjaCB0aGUgY29udGV4dCBicmVha3MgYWxwaGEgbWFza2luZywgdGhvdWdoLgpAQCAtOTIsNyAr
OTIsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBseVJlc291CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250ZW50
SW50b01hc2tJbWFnZShNYXNrZXJEYXRhKiBtYXNrZXJEYXRhLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgUmVuZGVyT2JqZWN0KiBvYmplY3QpCitib29sIFJlbmRlclNWR1Jlc291
cmNlTWFza2VyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UoTWFza2VyRGF0YSogbWFza2VyRGF0
YSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBSZW5kZXJPYmplY3Qq
IG9iamVjdCkKIHsKICAgICBHcmFwaGljc0NvbnRleHQmIG1hc2tJbWFnZUNvbnRleHQgPSBtYXNr
ZXJEYXRhLT5tYXNrSW1hZ2UtPmNvbnRleHQoKTsKIApAQCAtMTE5LDcgKzExOSw3IEBAIGJvb2wg
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250ZW4KICAgICB9CiAKICNpZiAhVVNFKENH
KQotICAgIG1hc2tlckRhdGEtPm1hc2tJbWFnZS0+dHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IsIGNvbG9yU3BhY2UpOworICAgIG1hc2tlckRhdGEtPm1hc2tJ
bWFnZS0+dHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
Y29sb3JTcGFjZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShjb2xvclNwYWNlKTsKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1h
c2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VNYXNrZXIuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAKICAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1Jlc291cmNlTWFza2VyIjsgfQogCi0g
ICAgYm9vbCBkcmF3Q29udGVudEludG9NYXNrSW1hZ2UoTWFza2VyRGF0YSosIERlc3RpbmF0aW9u
Q29sb3JTcGFjZSwgUmVuZGVyT2JqZWN0Kik7CisgICAgYm9vbCBkcmF3Q29udGVudEludG9NYXNr
SW1hZ2UoTWFza2VyRGF0YSosIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFJlbmRlck9i
amVjdCopOwogICAgIHZvaWQgY2FsY3VsYXRlTWFza0NvbnRlbnRSZXBhaW50UmVjdCgpOwogCiAg
ICAgRmxvYXRSZWN0IG1fbWFza0NvbnRlbnRCb3VuZGFyaWVzOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJu
LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTMsNyArMjUz
LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkVGlsZQogUmVmUHRyPElt
YWdlQnVmZmVyPiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmNyZWF0ZVRpbGVJbWFnZShjb25z
dCBQYXR0ZXJuQXR0cmlidXRlcyYgYXR0cmlidXRlcywgY29uc3QgRmxvYXRSZWN0JiB0aWxlQm91
bmRhcmllcywgY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHRpbGVJbWFnZVRyYW5zZm9ybSwgRmxvYXRSZWN0JiBjbGFtcGVkQWJz
b2x1dGVUaWxlQm91bmRhcmllcywgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKSBjb25zdAog
ewogICAgIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzID0gSW1hZ2VCdWZmZXI6OmNsYW1w
ZWRSZWN0KGFic29sdXRlVGlsZUJvdW5kYXJpZXMpOwotICAgIGF1dG8gdGlsZUltYWdlID0gU1ZH
UmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoYWJzb2x1dGVUaWxlQm91bmRhcmll
cywgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiwgcmVuZGVyaW5nTW9kZSk7CisgICAgYXV0byB0aWxlSW1hZ2UgPSBTVkdSZW5kZXJpbmdD
b250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjbGFtcGVk
QWJzb2x1dGVUaWxlQm91bmRhcmllcywgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHJl
bmRlcmluZ01vZGUpOwogICAgIGlmICghdGlsZUltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250
ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jl
bmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MzYsNyArMjM2LDcgQEAgQWZmaW5lVHJhbnNmb3JtIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNhbAog
ICAgIHJldHVybiBhYnNvbHV0ZVRyYW5zZm9ybTsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBT
VkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRh
cmdldFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUs
IGNvbnN0IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZH
UmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJn
ZXRSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5n
TW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogewogICAgIEludFJlY3QgcGFp
bnRSZWN0ID0gY2FsY3VsYXRlSW1hZ2VCdWZmZXJSZWN0KHRhcmdldFJlY3QsIGFic29sdXRlVHJh
bnNmb3JtKTsKICAgICAvLyBEb24ndCBjcmVhdGUgZW1wdHkgSW1hZ2VCdWZmZXJzLgpAQCAtMjY0
LDcgKzI2NCw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDoKICAg
ICByZXR1cm4gaW1hZ2VCdWZmZXI7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVy
aW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRSZWN0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29s
b3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNy
ZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBjbGFtcGVkUmVjdCwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNl
LCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCkKIHsKICAgICBJbnRTaXplIGNsYW1wZWRTaXplID0gcm91bmRlZEludFNpemUoY2xhbXBl
ZFJlY3Quc2l6ZSgpKTsKICAgICBGbG9hdFNpemUgdW5jbGFtcGVkU2l6ZSA9IHJvdW5kZWRJbnRT
aXplKHRhcmdldFJlY3Quc2l6ZSgpKTsKQEAgLTM1MCw3ICszNTAsNyBAQCBib29sIFNWR1JlbmRl
cmluZ0NvbnRleHQ6OmJ1ZmZlckZvcmVncm91CiAKICAgICAvLyBDcmVhdGUgYSBuZXcgYnVmZmVy
IGFuZCBwYWludCB0aGUgZm9yZWdyb3VuZCBpbnRvIGl0LgogICAgIGlmICghaW1hZ2VCdWZmZXIp
IHsKLSAgICAgICAgaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1
ZmZlcihleHBhbmRlZEludFNpemUoYm91bmRpbmdCb3guc2l6ZSgpKSwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCLCBtX3BhaW50SW5mby0+Y29udGV4dCgpKTsKKyAgICAgICAgaW1hZ2VCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUo
Ym91bmRpbmdCb3guc2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIG1fcGFp
bnRJbmZvLT5jb250ZXh0KCkpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcmVwYXJlVG9SZW5k
ZXJTVkdDb250ZW50KFJlbmRlckVsZW1lbnQmLCBQYWludEluZm8mLCBOZWVkc0dyYXBoaWNzQ29u
dGV4dFNhdmUgPSBEb250U2F2ZUdyYXBoaWNzQ29udGV4dCk7CiAgICAgYm9vbCBpc1JlbmRlcmlu
Z1ByZXBhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdGbGFncyAmIFJlbmRlcmluZ1By
ZXBhcmVkOyB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
YWJzb2x1dGVUcmFuc2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpOwotICAgIHN0YXRpYyBSZWZQdHI8SW1h
Z2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBSZW5k
ZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cik7CisgICAgc3RhdGlj
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQqID0gbnVsbHB0cik7CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IGNsYW1wZWRSZWN0LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBSZW5kZXJpbmdNb2Rl
LCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cik7CiAKICAgICBzdGF0aWMgdm9pZCBy
ZW5kZXJTdWJ0cmVlVG9Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIFJlbmRlckVsZW1lbnQmLCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKICAgICBzdGF0aWMgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZl
cihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNm
b3JtLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4mLCBi
b29sIHNhZmVUb0NsZWFyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE3LDcgKzIxNyw3IEBAIFJlZlB0cjxO
YXRpdmVJbWFnZT4gU1ZHSW1hZ2U6Om5hdGl2ZUltYWcKICAgICBpZiAoIW1fcGFnZSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShzaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6
QkdSQTgpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CkBAIC0yNDcsNyArMjQ3LDcgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWlu
ZXIoRwogICAgIEZsb2F0UmVjdCBpbWFnZUJ1ZmZlclNpemUgPSB6b29tZWRDb250YWluZXJSZWN0
OwogICAgIGltYWdlQnVmZmVyU2l6ZS5zY2FsZShpbWFnZUJ1ZmZlclNjYWxlLndpZHRoKCksIGlt
YWdlQnVmZmVyU2NhbGUuaGVpZ2h0KCkpOwogCi0gICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoaW1hZ2VCdWZmZXJTaXpl
LnNpemUoKSksIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgY29udGV4dCk7CisgICAg
YXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRl
ZEludFNpemUoaW1hZ2VCdWZmZXJTaXplLnNpemUoKSksIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpLCBjb250ZXh0KTsKICAgICBpZiAoIWJ1ZmZlcikgLy8gRmFpbGVkIHRvIGFsbG9j
YXRlIGJ1ZmZlci4KICAgICAgICAgcmV0dXJuOwogICAgIGRyYXdGb3JDb250YWluZXIoYnVmZmVy
LT5jb250ZXh0KCksIGNvbnRhaW5lclNpemUsIGNvbnRhaW5lclpvb20sIGluaXRpYWxGcmFnbWVu
dFVSTCwgaW1hZ2VCdWZmZXJTaXplLCB6b29tZWRDb250YWluZXJSZWN0KTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCShy
ZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRUltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsOCArOTMsOCBAQCB2b2lkIEZFSW1h
Z2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKCFtX2ltYWdlICYmICFyZW5kZXJl
cikKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRkVJbWFnZSByZXN1bHRzIGFyZSBhbHdheXMg
aW4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCCi0gICAgc2V0UmVzdWx0Q29sb3JTcGFjZShE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOworICAgIC8vIEZFSW1hZ2UgcmVzdWx0cyBhcmUg
YWx3YXlzIGluIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpCisgICAgc2V0UmVzdWx0Q29s
b3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAKICAgICBJbWFnZUJ1ZmZl
ciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpOwogICAgIGlmICghcmVz
dWx0SW1hZ2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjc3OTIwKQorKysgU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw4OSBAQAorMjAyMS0wNS0yMiAg
U2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdyYXBwaW5nIGEgcGxhdGZvcm0g
Y29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0Yy4pCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxNDMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbV0lQXQorCisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6
CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5o
OgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHku
bWVzc2FnZXMuaW46CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
ckJhY2tpbmdTdG9yZS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmU6OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6YXBwbHlCYWNraW5nU3RvcmVUb0xheWVyKToKKyAgICAgICAgKiBTaGFy
ZWQvU2hhcmVhYmxlQml0bWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFw
OjpDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFi
bGVCaXRtYXA6OkNvbmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1NoYXJl
YWJsZUJpdG1hcC5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoK
KyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICog
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvY2cv
U2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAoV2ViS2l0Ojpjb2xvclNwYWNlKToKKyAg
ICAgICAgKiBTaGFyZWQvbWFjL0NvbG9yU3BhY2VEYXRhLmg6IFJlbW92ZWQuCisgICAgICAgICog
U2hhcmVkL21hYy9Db2xvclNwYWNlRGF0YS5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBTb3VyY2Vz
Q29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF90YWtlVmlld1NuYXBzaG90XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBfc25hcHNob3RSZWN0OmludG9JbWFnZU9mV2lkdGg6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6Y29sb3JTcGFjZSk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW06
CisgICAgICAgIChXZWJLaXQ6OnJlY3Vyc2l2ZWx5TWFwSU9TdXJmYWNlQmFja2luZ1N0b3JlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjb2xvclNw
YWNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhUHJveHkubW06CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29sb3JTcGFjZSk6CisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb25maWd1cmF0
aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0Nv
bnRleHRHTFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xQcm94eTo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJl
YWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1
ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6cGl4ZWxCdWZmZXJGb3JDdXJyZW50VGltZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBE
RlBsdWdpbjo6UERGUGx1Z2luKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVNo
YXJlYWJsZUJpdG1hcCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0
ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChXZWJLaXQ6OmNvbnZlcnREcmFnSW1h
Z2VUb0JpdG1hcCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6
CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjpzZXRDb2xvclNwYWNlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW46CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpzbmFwc2hv
dE9wdGlvbnNUb0JpdG1hcENvbmZpZ3VyYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tOgorICAg
ICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6VGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEpOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYTo6c2V0Q29sb3JTcGFjZSk6CisKIDIwMjEtMDUtMjIgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2Nr
ZXIgaW4gbG9jYWwgdmFyaWFibGVzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTIwMyw3ICsyMDMsNiBAQCBTaGFyZWQvaW9zL1dlYlRvdWNoRXZlbnRJT1MuY3BwCiAK
IFNoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQogU2hhcmVkL21hYy9Db2RlU2lnbmlu
Zy5tbQotU2hhcmVkL21hYy9Db2xvclNwYWNlRGF0YS5tbQogU2hhcmVkL21hYy9IYW5nRGV0ZWN0
aW9uRGlzYWJsZXJNYWMubW0KIFNoYXJlZC9tYWMvTmF0aXZlV2ViR2VzdHVyZUV2ZW50TWFjLm1t
CiBTaGFyZWQvbWFjL05hdGl2ZVdlYktleWJvYXJkRXZlbnRNYWMubW0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5o
CShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBjbGFz
cyBSZW1vdGVJbWFnZUJ1ZmZlciA6IHB1YmxpYyBXZWJDb3JlCiAgICAgdXNpbmcgQmFzZUNvbmNy
ZXRlSW1hZ2VCdWZmZXI6OnB1dFBpeGVsQnVmZmVyOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIGF1
dG8gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2ViQ29y
ZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBX
ZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVs
Rm9ybWF0IHBpeGVsRm9ybWF0LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5kZXJp
bmdCYWNrZW5kLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0ZUlt
YWdlQnVmZmVyOjp0ZW1wbGF0ZSBjcmVhdGU8UmVtb3RlSW1hZ2VCdWZmZXI+KHNpemUsIHJlc29s
dXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIG51bGxwdHIsIHJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQpJbmRleDog
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpk
aWRGbHVzaChEaQogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6RGlkRmx1c2goZmx1c2hJZGVudGlmaWVyLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
LCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXpl
LCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVz
dGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQor
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9h
dFNpemUmIGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBQ
aXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKICAgICBBU1NFUlQocmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRl
ZCB8fCByZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOwpAQCAt
NDk1LDYgKzQ5NSw4IEBAIE9wdGlvbmFsPERpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1UK
ICAgICAgKiBTZWUgdGhlIGNvbW1lbnQgYXQgdGhlIHRvcCBvZiBEaXNwbGF5TGlzdEl0ZW1zLmgg
Zm9yIHdoeS4gKi8KIAogICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgRGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKKyAgICAgICAgcmV0dXJuIGRl
Y29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KGRh
dGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpDbGlwT3V0VG9QYXRoOgogICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3Bs
YXlMaXN0OjpDbGlwT3V0VG9QYXRoPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKICAg
ICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcFBhdGg6CkBAIC01MjEsNiArNTIzLDgg
QEAgT3B0aW9uYWw8RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVQogICAgICAgICByZXR1
cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4o
ZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKICAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxE
aXNwbGF5TGlzdDo6RmlsbFJvdW5kZWRSZWN0PihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9u
KTsKKyAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6R2V0UGl4ZWxCdWZmZXI6CisgICAg
ICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkdldFBpeGVsQnVmZmVyPihk
YXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6UHV0UGl4ZWxCdWZmZXI6CiAgICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlz
cGxheUxpc3Q6OlB1dFBpeGVsQnVmZmVyPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsK
ICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0TGluZURhc2g6CkBAIC01NDAsNyAr
NTQ0LDYgQEAgT3B0aW9uYWw8RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVQogICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwOgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpDbGlwT3V0OgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwVG9J
bWFnZUJ1ZmZlcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QmVnaW5DbGlwVG9E
cmF3aW5nQ29tbWFuZHM6CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkVuZENsaXBU
b0RyYXdpbmdDb21tYW5kczoKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q29uY2F0
ZW5hdGVDVE06CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9j
dW1lbnRNYXJrZXI6CkBAIC01ODEsNyArNTg0LDYgQEAgT3B0aW9uYWw8RGlzcGxheUxpc3Q6Okl0
ZW1IYW5kbGU+IFdBUk5fVQogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VS
ZWN0OgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTdHJva2VMaW5lOgogICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpUcmFuc2xhdGU6Ci0gICAgY2FzZSBEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OkdldFBpeGVsQnVmZmVyOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDE0
ICs0NCwxOCBAQAogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKwogbmFtZXNwYWNlIERpc3BsYXlM
aXN0IHsKIGNsYXNzIERpc3BsYXlMaXN0OwogY2xhc3MgSXRlbTsKIH0KKworY2xhc3MgRGVzdGlu
YXRpb25Db2xvclNwYWNlOwogY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgTmF0aXZlSW1hZ2U7Ci1l
bnVtIGNsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7CisKIGVudW0gY2xhc3Mg
UmVuZGVyaW5nTW9kZSA6IGJvb2w7CisKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMjEs
NyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8SVBDOjpFbmNvZGVyPiYpIG92
ZXJyaWRlOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2ZWQuCi0gICAgdm9pZCBjcmVh
dGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBXZWJD
b3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQsIFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYsIFdlYkNvcmU6OlBpeGVsRm9ybWF0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpOwogICAgIHZvaWQgd2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChjb25zdCBHUFVQcm9j
ZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50cyYpOwogICAgIHZvaWQgdXBkYXRlU2hhcmVkTWVtb3J5
Rm9yR2V0UGl4ZWxCdWZmZXIodWludDMyX3QgYnl0ZUNvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+JiYpOwogICAgIHZvaWQgc2VtYXBo
b3JlRm9yR2V0UGl4ZWxCdWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNl
bWFwaG9yZSYpPiYmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRlByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDI4ICsxMTMsMjggQEAgdm9p
ZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6c2V0RGF0YQogICAgIGNvbXBsZXRpb25IYW5k
bGVyKGZyYW1lQ291bnQsIGltYWdlRGVjb2Rlci0+c2l6ZSgpLCBpbWFnZURlY29kZXItPmhhc1Ry
YWNrKCksIFdURk1vdmUoZnJhbWVJbmZvcykpOwogfQogCi12b2lkIFJlbW90ZUltYWdlRGVjb2Rl
ckFWRlByb3h5OjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChJbWFnZURlY29kZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYsIENvbG9yU3BhY2VEYXRhJiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Y3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgoSW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBzaXplX3QgaW5kZXgs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJpZ2h0PiYmLCBP
cHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIEFTU0VSVChtX2ltYWdlRGVjb2RlcnMuY29udGFpbnMoaWRlbnRpZmll
cikpOwogICAgIE9wdGlvbmFsPFdURjo6TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0OwotICAgIENv
bG9yU3BhY2VEYXRhIGNvbG9yU3BhY2VEYXRhOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKICAgICBpZiAoIW1faW1hZ2VEZWNvZGVycy5j
b250YWlucyhpZGVudGlmaWVyKSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHNlbmRSaWdodCksIFdURk1vdmUoY29sb3JTcGFjZURhdGEpKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZShzZW5kUmlnaHQpLCBXVEZNb3ZlKGNvbG9yU3BhY2UpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIGF1dG8gZnJhbWVJbWFnZSA9IG1faW1hZ2VEZWNvZGVy
cy5nZXQoaWRlbnRpZmllciktPmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KGluZGV4KTsKICAgICBp
ZiAoIWZyYW1lSW1hZ2UpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShzZW5k
UmlnaHQpLCBXVEZNb3ZlKGNvbG9yU3BhY2VEYXRhKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoc2VuZFJpZ2h0KSwgV1RGTW92ZShjb2xvclNwYWNlKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBpZiAoYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGVG
cm9tSW1hZ2UoZnJhbWVJbWFnZS5nZXQoKSkpIHsKICAgICAgICAgc2VuZFJpZ2h0ID0gc3VyZmFj
ZS0+Y3JlYXRlU2VuZFJpZ2h0KCk7Ci0gICAgICAgIGNvbG9yU3BhY2VEYXRhLmNnQ29sb3JTcGFj
ZSA9IHN1cmZhY2UtPmNvbG9yU3BhY2UoKTsKKyAgICAgICAgY29sb3JTcGFjZSA9IHN1cmZhY2Ut
PmNvbG9yU3BhY2UoKTsKICAgICB9CiAKLSAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHNl
bmRSaWdodCksIFdURk1vdmUoY29sb3JTcGFjZURhdGEpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKHNlbmRSaWdodCksIFdURk1vdmUoY29sb3JTcGFjZSkpOwogfQogCiB2b2lkIFJl
bW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpjbGVhckZyYW1lQnVmZmVyQ2FjaGUoSW1hZ2VEZWNv
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBzaXplX3QgaW5kZXgpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGUHJveHkuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDcgKzI3LDYgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgSEFWRShBVkFTU0VUUkVB
REVSKQogCi0jaW5jbHVkZSAiQ29sb3JTcGFjZURhdGEuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJl
bmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9J
bWFnZURlY29kZXJBVkZPYmpDLmg+CkBAIC01Nyw3ICs1Niw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkZWxldGVEZWNvZGVyKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIpOwogICAgIHZv
aWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVy
LCBsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSk7CiAgICAgdm9pZCBzZXREYXRhKFdlYkNv
cmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHNpemVfdCBmcmFtZUNv
dW50LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBib29sIGhhc1RyYWNrLCBPcHRpb25h
bDxWZWN0b3I8V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpGcmFtZUluZm8+PiYmKT4mJik7Ci0gICAg
dm9pZCBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlm
aWVyLCBzaXplX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V1RGOjpN
YWNoU2VuZFJpZ2h0PiYmLCBDb2xvclNwYWNlRGF0YSYmKT4mJik7CisgICAgdm9pZCBjcmVhdGVG
cmFtZUltYWdlQXRJbmRleChXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyLCBzaXplX3Qg
aW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJpZ2h0
PiYmLCBPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+JiYpPiYmKTsKICAg
ICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlm
aWVyLCBzaXplX3QgaW5kZXgpOwogCiAgICAgdm9pZCBlbmNvZGVkRGF0YVN0YXR1c0NoYW5nZWQo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllcik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkubWVzc2FnZXMuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVj
b2RlckFWRlByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkubWVzc2FnZXMu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGUHJveHkgTgogICAgIERlbGV0ZURlY29kZXIoV2ViQ29yZTo6SW1hZ2VEZWNv
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIFNldEV4cGVjdGVkQ29udGVudFNpemUoV2Vi
Q29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBsb25nIGxvbmcgZXhwZWN0
ZWRDb250ZW50U2l6ZSkKICAgICBTZXREYXRhKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKSAtPiAoc2l6ZV90IGZyYW1lQ291bnQsIFdlYkNvcmU6OkludFNpemUg
c2l6ZSwgYm9vbCBoYXNUcmFjaywgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6RnJhbWVJbmZvPj4gZnJhbWVJbmZvcykgU3luY2hyb25vdXMKLSAgICBDcmVhdGVGcmFtZUlt
YWdlQXRJbmRleChXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNp
emVfdCBpbmRleCkgLT4gKE9wdGlvbmFsPE1hY2hTZW5kUmlnaHQ+IHNlbmRSaWdodCwgc3RydWN0
IFdlYktpdDo6Q29sb3JTcGFjZURhdGEgY29sb3JTcGFjZSkgU3luY2hyb25vdXMKKyAgICBDcmVh
dGVGcmFtZUltYWdlQXRJbmRleChXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIHNpemVfdCBpbmRleCkgLT4gKE9wdGlvbmFsPE1hY2hTZW5kUmlnaHQ+IHNlbmRSaWdo
dCwgT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlKSBT
eW5jaHJvbm91cwogICAgIENsZWFyRnJhbWVCdWZmZXJDYWNoZShXZWJDb3JlOjpJbWFnZURlY29k
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCkKIH0KIApJbmRleDogU291cmNl
L1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03NCwxMCArNzQsNyBAQCB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlOjpjbGVhcigpCiAK
IHZvaWQgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uOjplbmNvZGUoSVBDOjpFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgaXNPcGFxdWU7Ci0jaWYgUExBVEZP
Uk0oQ09DT0EpCi0gICAgZW5jb2RlciA8PCBjb2xvclNwYWNlOwotI2VuZGlmCisgICAgZW5jb2Rl
ciA8PCBjb2xvclNwYWNlIDw8IGlzT3BhcXVlOwogI2lmIFVTRShESVJFQ1QyRCkKICAgICBTaGFy
ZWRNZW1vcnk6OkhhbmRsZTo6ZW5jb2RlSGFuZGxlKGVuY29kZXIsIHNoYXJlZFJlc291cmNlSGFu
ZGxlKTsKIApAQCAtODgsMjEgKzg1LDI4IEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1
cmF0aW9uOjplbmMKICNlbmRpZgogfQogCi1ib29sIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJh
dGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgQ29uZmlndXJhdGlvbiYgY29uZmln
dXJhdGlvbikKK2Jvb2wgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uOjpkZWNvZGUoSVBD
OjpEZWNvZGVyJiBkZWNvZGVyLCBDb25maWd1cmF0aW9uJiByZXN1bHQpCiB7Ci0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShjb25maWd1cmF0aW9uLmlzT3BhcXVlKSkKKyAgICBPcHRpb25hbDxPcHRp
b25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+PiBjb2xvclNwYWNlOworICAgIGRl
Y29kZXIgPj4gY29sb3JTcGFjZTsKKyAgICBpZiAoIWNvbG9yU3BhY2UpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNv
bmZpZ3VyYXRpb24uY29sb3JTcGFjZSkpCisKKyAgICBPcHRpb25hbDxib29sPiBpc09wYXF1ZTsK
KyAgICBkZWNvZGVyID4+IGlzT3BhcXVlOworICAgIGlmICghaXNPcGFxdWUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSNlbmRpZgorCisgICAgcmVzdWx0ID0gQ29uZmlndXJhdGlvbiB7IFdURk1v
dmUoKmNvbG9yU3BhY2UpLCAqaXNPcGFxdWUgfTsKKwogI2lmIFVTRShESVJFQ1QyRCkKICAgICBh
dXRvIHByb2Nlc3NTcGVjaWZpY0hhbmRsZSA9IFNoYXJlZE1lbW9yeTo6SGFuZGxlOjpkZWNvZGVI
YW5kbGUoZGVjb2Rlcik7CiAgICAgaWYgKCFwcm9jZXNzU3BlY2lmaWNIYW5kbGUpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIGNvbmZpZ3VyYXRpb24uc2hhcmVkUmVzb3VyY2VIYW5kbGUg
PSBwcm9jZXNzU3BlY2lmaWNIYW5kbGUudmFsdWUoKTsKKyAgICByZXN1bHQuc2hhcmVkUmVzb3Vy
Y2VIYW5kbGUgPSBwcm9jZXNzU3BlY2lmaWNIYW5kbGUudmFsdWUoKTsKICNlbmRpZgorCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJp
dG1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1h
cC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVC
aXRtYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTUgKzI2LDEyIEBACiAjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRGVzdGluYXRp
b25Db2xvclNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QbGF0Zm9ybUltYWdlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogCi0jaWYgVVNFKENHKQotI2luY2x1ZGUg
IkNvbG9yU3BhY2VEYXRhLmgiCi0jZW5kaWYKLQogI2lmIFVTRShESVJFQ1QyRCkKIGludGVyZmFj
ZSBJRDJEMUJpdG1hcDsKIGludGVyZmFjZSBJRDJEMVJlbmRlclRhcmdldDsKQEAgLTU1LDEwICs1
Miw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgU2hhcmVhYmxlQml0bWFwIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlYWJsZUJpdG1hcD4gewogcHVibGljOgogICAgIHN0
cnVjdCBDb25maWd1cmF0aW9uIHsKKyAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRp
b25Db2xvclNwYWNlPiBjb2xvclNwYWNlOwogICAgICAgICBib29sIGlzT3BhcXVlIHsgZmFsc2Ug
fTsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgQ29sb3JTcGFjZURhdGEgY29sb3JTcGFj
ZTsKLSNlbmRpZgogI2lmIFVTRShESVJFQ1QyRCkKICAgICAgICAgbXV0YWJsZSBIQU5ETEUgc2hh
cmVkUmVzb3VyY2VIYW5kbGUgeyBudWxscHRyIH07CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCShyZXZpc2lvbiAyNzc5MTkpCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkod29ya2luZyBj
b3B5KQpAQCAtODIsNiArODIsOCBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKKyNp
bmNsdWRlICJBcmd1bWVudENvZGVyc0NGLmgiCisKIG5hbWVzcGFjZSBXVEYgewogY2xhc3MgTWFj
aFNlbmRSaWdodDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzI1LDggKzMyNSwxMSBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBX
ZWJQCiAgICAgcGFyYW1ldGVycy5oYXNSZXNvdXJjZUxvYWRDbGllbnQgPSBXVEZNb3ZlKCpoYXNS
ZXNvdXJjZUxvYWRDbGllbnQpOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGFyYW1ldGVycy5jb2xvclNwYWNlKSkKKyAgICBPcHRpb25hbDxPcHRpb25hbDxE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U+PiBjb2xvclNwYWNlOworICAgIGRlY29kZXIgPj4gY29sb3JT
cGFjZTsKKyAgICBpZiAoIWNvbG9yU3BhY2UpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcGFyYW1ldGVycy5jb2xvclNwYWNlID0gV1RGTW92ZSgqY29sb3JTcGFjZSk7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVzZVN5c3RlbUFwcGVhcmFuY2UpKQogICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0
b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Db2xvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFNp
emUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dE1pbGVzdG9uZS5oPgpAQCAtNDksMTAgKzUw
LDYgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCi0jaWYgUExBVEZPUk0oTUFDKQotI2luY2x1ZGUgIkNvbG9yU3BhY2VEYXRhLmgi
Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5JRkVTVCkKICNpbmNsdWRlIDxX
ZWJDb3JlL0FwcGxpY2F0aW9uTWFuaWZlc3QuaD4KICNlbmRpZgpAQCAtMTQ2LDcgKzE0Myw3IEBA
IHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICBib29sIHVzZUVsZXZhdGVk
VXNlckludGVyZmFjZUxldmVsIHsgZmFsc2UgfTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBD
b2xvclNwYWNlRGF0YSBjb2xvclNwYWNlOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0
aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKICAgICBib29sIHVzZVN5c3RlbUFwcGVhcmFuY2U7
CiAjZW5kaWYKICNpZiBFTkFCTEUoTUVUQV9WSUVXUE9SVCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
U2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjEyLDE5ICsyMTIsMTkgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dh
cFRvVmFsaQogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBUeXBlOjpJT1N1cmZhY2U6
CiAgICAgICAgIGlmIChzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmcpCi0gICAgICAgICAgICBtX2Zy
b250QnVmZmVyLmltYWdlQnVmZmVyID0gbV9sYXllci0+Y29udGV4dCgpLT5lbnN1cmVSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkoKS5jcmVhdGVJbWFnZUJ1ZmZlcihtX3NpemUsIFdlYkNvcmU6
OlJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IsIHBpeGVsRm9ybWF0KCkpOworICAgICAgICAgICAgbV9mcm9udEJ1
ZmZlci5pbWFnZUJ1ZmZlciA9IG1fbGF5ZXItPmNvbnRleHQoKS0+ZW5zdXJlUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1hZ2VCdWZmZXIobV9zaXplLCBXZWJDb3JlOjpSZW5k
ZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCksIHBpeGVsRm9ybWF0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZl
cjxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkQmFja2VuZD46OmNyZWF0ZSht
X3NpemUsIG1fc2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgcGl4
ZWxGb3JtYXQoKSwgbnVsbHB0cik7CisgICAgICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVm
ZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxBY2NlbGVyYXRlZEltYWdlQnVmZmVy
U2hhcmVhYmxlTWFwcGVkQmFja2VuZD46OmNyZWF0ZShtX3NpemUsIG1fc2NhbGUsIFdlYkNvcmU6
OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBwaXhlbEZvcm1hdCgpLCBudWxscHRyKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUeXBlOjpCaXRtYXA6CiAgICAgICAgIGlmIChzaG91
bGRVc2VSZW1vdGVSZW5kZXJpbmcpCi0gICAgICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVm
ZmVyID0gbV9sYXllci0+Y29udGV4dCgpLT5lbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkoKS5jcmVhdGVJbWFnZUJ1ZmZlcihtX3NpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6OlVu
YWNjZWxlcmF0ZWQsIG1fc2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QiwgcGl4ZWxGb3JtYXQoKSk7CisgICAgICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVy
ID0gbV9sYXllci0+Y29udGV4dCgpLT5lbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHko
KS5jcmVhdGVJbWFnZUJ1ZmZlcihtX3NpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIG1fc2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBwaXhlbEZvcm1hdCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9mcm9udEJ1ZmZl
ci5pbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8VW5hY2NlbGVyYXRl
ZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZD46OmNyZWF0ZShtX3NpemUsIG1fc2NhbGUsIFdl
YkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0
cik7CisgICAgICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0gV2ViQ29yZTo6Q29u
Y3JldGVJbWFnZUJ1ZmZlcjxVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5k
Pjo6Y3JlYXRlKG1fc2l6ZSwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIHBpeGVsRm9ybWF0KCksIG51bGxwdHIpOwogICAgICAgICBicmVhazsKICNpZiBF
TkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZGRVIpCiAgICAgY2FzZSBUeXBl
OjpDR0Rpc3BsYXlMaXN0OgotICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0gV2Vi
Q29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJCYWNrZW5k
Pjo6Y3JlYXRlKG1fc2l6ZSwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCLCBwaXhlbEZvcm1hdCgpLCBudWxscHRyKTsKKyAgICAgICAgbV9mcm9udEJ1ZmZlci5p
bWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8Q0dEaXNwbGF5TGlzdElt
YWdlQnVmZmVyQmFja2VuZD46OmNyZWF0ZShtX3NpemUsIG1fc2NhbGUsIFdlYkNvcmU6OkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBwaXhlbEZvcm1hdCgpLCBudWxscHRyKTsKICAgICAg
ICAgYnJlYWs7CiAjZW5kaWYKICAgICB9CkBAIC0zOTcsNyArMzk3LDcgQEAgdm9pZCBSZW1vdGVM
YXllckJhY2tpbmdTdG9yZTo6YXBwbHlCYWNraQogICAgICAgICAgICAgQVNTRVJUKG1fdHlwZSA9
PSBUeXBlOjpJT1N1cmZhY2UpOwogICAgICAgICAgICAgc3dpdGNoIChjb250ZW50c1R5cGUpIHsK
ICAgICAgICAgICAgIGNhc2UgTGF5ZXJDb250ZW50c1R5cGU6OklPU3VyZmFjZTogewotICAgICAg
ICAgICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNl
bmRSaWdodChXVEZNb3ZlKG1hY2hTZW5kUmlnaHQpLCBXZWJDb3JlOjpzUkdCQ29sb3JTcGFjZVJl
ZigpKTsKKyAgICAgICAgICAgICAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6
OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShtYWNoU2VuZFJpZ2h0KSwgV2ViQ29yZTo6RGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgICAgICAgICAgICAgIGxheWVyLmNvbnRl
bnRzID0gc3VyZmFjZSA/IHN1cmZhY2UtPmFzTGF5ZXJDb250ZW50cygpIDogbmlsOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9TaGFy
ZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MCw3ICs0MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIAogc3RhdGlj
IENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6Q29uZmln
dXJhdGlvbiYgY29uZmlndXJhdGlvbikKIHsKLSAgICByZXR1cm4gY29uZmlndXJhdGlvbi5jb2xv
clNwYWNlLmNnQ29sb3JTcGFjZS5nZXQoKSA/OiBzUkdCQ29sb3JTcGFjZVJlZigpOworICAgIHJl
dHVybiBjb25maWd1cmF0aW9uLmNvbG9yU3BhY2UgPyBjb25maWd1cmF0aW9uLmNvbG9yU3BhY2Ut
PnBsYXRmb3JtQ29sb3JTcGFjZSgpIDogV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKTsKIH0K
IAogc3RhdGljIGJvb2wgd2FudHNFeHRlbmRlZFJhbmdlKGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6
Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9Db2xvclNwYWNlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9Db2xvclNwYWNlRGF0YS5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ3ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIENvbG9yU3BhY2VEYXRhX2gKLSNkZWZpbmUgQ29sb3JT
cGFjZURhdGFfaAotCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1uYW1lc3BhY2UgSVBD
IHsKLWNsYXNzIERlY29kZXI7Ci1jbGFzcyBFbmNvZGVyOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0
IHsKLQotc3RydWN0IENvbG9yU3BhY2VEYXRhIHsKLSAgICB2b2lkIGVuY29kZShJUEM6OkVuY29k
ZXImKSBjb25zdDsKLSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKElQ
Qzo6RGVjb2RlciYsIENvbG9yU3BhY2VEYXRhJik7Ci0KLSAgICBSZXRhaW5QdHI8Q0dDb2xvclNw
YWNlUmVmPiBjZ0NvbG9yU3BhY2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2Vu
ZGlmIC8vIENvbG9yU3BhY2VEYXRhX2gKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9Db2xvclNwYWNlRGF0YS5oCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVv
bC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9w
ZXJ0eQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvbG9yU3BhY2VEYXRhLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9Db2xvclNwYWNlRGF0YS5tbQko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvbG9yU3BhY2VE
YXRhLm1tCShub25leGlzdGVudCkKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBv
cnQgImNvbmZpZy5oIgotI2ltcG9ydCAiQ29sb3JTcGFjZURhdGEuaCIKLQotI2ltcG9ydCAiQXJn
dW1lbnRDb2RlcnNDRi5oIgotI2ltcG9ydCAiRGVjb2Rlci5oIgotI2ltcG9ydCAiRW5jb2Rlci5o
IgotI2ltcG9ydCA8d3RmL0VudW1UcmFpdHMuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZv
aWQgQ29sb3JTcGFjZURhdGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17
Ci0gICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxib29sPihjZ0NvbG9yU3BhY2UpOwotICAgIGlm
IChjZ0NvbG9yU3BhY2UpCi0gICAgICAgIGVuY29kZXIgPDwgY2dDb2xvclNwYWNlOwotfQotCi1i
b29sIENvbG9yU3BhY2VEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb2xvclNw
YWNlRGF0YSYgY29sb3JTcGFjZURhdGEpCi17Ci0gICAgYm9vbCBoYXNDR0NvbG9yU3BhY2U7Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNDR0NvbG9yU3BhY2UpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBpZiAoIWhhc0NHQ29sb3JTcGFjZSkKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0KLSAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNlOwotICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoY29sb3JTcGFjZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAK
LSAgICBjb2xvclNwYWNlRGF0YS5jZ0NvbG9yU3BhY2UgPSBXVEZNb3ZlKGNvbG9yU3BhY2UpOwot
ICAgIHJldHVybiB0cnVlOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTMsNiArOTMs
NyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENv
bG9yOwogY2xhc3MgQ3Vyc29yOworY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlOwogY2xhc3Mg
RmxvYXRRdWFkOwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgUmVnaW9uOwpAQCAtMTg4LDEwICsx
ODksNiBAQCBjbGFzcyBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50OwogY2xhc3MgSW5z
dGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdDsKICNlbmRpZgogCi0jaWYg
UExBVEZPUk0oQ09DT0EpCi1zdHJ1Y3QgQ29sb3JTcGFjZURhdGE7Ci0jZW5kaWYKLQogI2lmIEhB
VkUoVklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQogdXNpbmcgTGF5ZXJIb3N0aW5nQ29udGV4
dElEID0gdWludDMyX3Q7CiAjZW5kaWYKQEAgLTQyNiw3ICs0MjMsNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIENHUmVjdCBib3VuZHNPZkxheWVySW5MYXllckJhY2tlZFdpbmRvd0Nvb3JkaW5h
dGVzKENBTGF5ZXIgKikgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBDb2xvclNwYWNlRGF0YSBj
b2xvclNwYWNlKCkgPSAwOworICAgIHZpcnR1YWwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNw
YWNlIGNvbG9yU3BhY2UoKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXRmb3JtQ29u
dGV4dE1lbnUoTlNNZW51ICosIFdlYkNvcmU6OkludFBvaW50KSA9IDA7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTk4
LDYgKzE5OCw3IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgQXR0YWNobWVudDsKIGNsYXNzIENv
bnRlbnRXb3JsZDsKIGNsYXNzIENvbnRleHRNZW51Q2xpZW50OworY2xhc3MgRGVzdGluYXRpb25D
b2xvclNwYWNlOwogY2xhc3MgRXJyb3I7CiBjbGFzcyBGaW5kQ2xpZW50OwogY2xhc3MgRmluZE1h
dGNoZXNDbGllbnQ7CkBAIC0zNzcsNyArMzc4LDYgQEAgY2xhc3MgV2ViV2hlZWxFdmVudENvYWxl
c2NlcjsKIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiAKIHN0cnVjdCBBcHBCb3VuZE5hdmlnYXRp
b25UZXN0aW5nRGF0YTsKLXN0cnVjdCBDb2xvclNwYWNlRGF0YTsKIHN0cnVjdCBEYXRhRGV0ZWN0
aW9uUmVzdWx0Owogc3RydWN0IERvY3VtZW50RWRpdGluZ0NvbnRleHQ7CiBzdHJ1Y3QgRG9jdW1l
bnRFZGl0aW5nQ29udGV4dFJlcXVlc3Q7CkBAIC0xMTMyLDcgKzExMzIsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoKTsKICAgICB2b2lkIGFzc2lzdGl2ZVRlY2hub2xv
Z3lNYWtlRmlyc3RSZXNwb25kZXIoKTsKIAotICAgIENvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2Uo
KTsKKyAgICBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpOwogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMTAxNCw3ICsxMDE0LDcgQEAgLSAoUmVmUHRyPFdlYktpdDo6Vmlld1Nu
YXBzaG90PilfdGFrZVZpZQogI2Vsc2UKICAgICBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdCBz
bmFwc2hvdEZvcm1hdCA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0OjpCR1JBOwogI2VuZGlm
Ci0gICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGUoV2ViQ29yZTo6
ZXhwYW5kZWRJbnRTaXplKHNuYXBzaG90U2l6ZSksIFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVm
KCksIHNuYXBzaG90Rm9ybWF0KTsKKyAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZh
Y2U6OmNyZWF0ZShXZWJDb3JlOjpleHBhbmRlZEludFNpemUoc25hcHNob3RTaXplKSwgV2ViQ29y
ZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHNuYXBzaG90Rm9ybWF0KTsKICAgICBp
ZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIENBUmVuZGVyU2VydmVy
UmVuZGVyTGF5ZXJXaXRoVHJhbnNmb3JtKE1BQ0hfUE9SVF9OVUxMLCBzZWxmLmxheWVyLmNvbnRl
eHQuY29udGV4dElkLCByZWludGVycHJldF9jYXN0PHVpbnQ2NF90PihzZWxmLmxheWVyKSwgc3Vy
ZmFjZS0+c3VyZmFjZSgpLCAwLCAwLCAmdHJhbnNmb3JtKTsKQEAgLTMwNzksNyArMzA3OSw3IEBA
IC0gKHZvaWQpX3NuYXBzaG90UmVjdDooQ0dSZWN0KXJlY3RJblZpZXcKICAgICBOU1N0cmluZyAq
ZGlzcGxheU5hbWUgPSBzZWxmLndpbmRvdy5zY3JlZW4uZGlzcGxheUNvbmZpZ3VyYXRpb24ubmFt
ZTsKICAgICBpZiAoZGlzcGxheU5hbWUgJiYgIXNlbGYud2luZG93LmhpZGRlbikgewogICAgICAg
ICBUcmFjZVNjb3BlIHNuYXBzaG90U2NvcGUoUmVuZGVyU2VydmVyU25hcHNob3RTdGFydCwgUmVu
ZGVyU2VydmVyU25hcHNob3RFbmQpOwotICAgICAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJ
T1N1cmZhY2U6OmNyZWF0ZShXZWJDb3JlOjpleHBhbmRlZEludFNpemUoV2ViQ29yZTo6RmxvYXRT
aXplKGltYWdlU2l6ZSkpLCBXZWJDb3JlOjpzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICAgICAg
YXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGUoV2ViQ29yZTo6ZXhwYW5k
ZWRJbnRTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZShpbWFnZVNpemUpKSwgV2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgICAgICBpZiAoIXN1cmZhY2UpIHsKICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuOwpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw2ICs5NCw3IEBAIGNsYXNzIFBhZ2VDb25maWd1cmF0
aW9uOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U7CiBjbGFzcyBJbnRQb2ludDsKIHN0cnVjdCBTaGFyZURhdGFXaXRoUGFyc2VkVVJMOwogCkBA
IC0xNjgsNyArMTY5LDYgQEAgY2xhc3MgV2ViRnJhbWVQcm94eTsKIGNsYXNzIFdlYlBhZ2VQcm94
eTsKIGNsYXNzIFdlYlByb2Nlc3NQb29sOwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5Owotc3RydWN0
IENvbG9yU3BhY2VEYXRhOwogc3RydWN0IFdlYkhpdFRlc3RSZXN1bHREYXRhOwogCiBlbnVtIGNs
YXNzIENvbnRpbnVlVW5zYWZlTG9hZCA6IGJvb2w7CkBAIC0zMTMsNyArMzEzLDcgQEAgcHVibGlj
OgogCiAgICAgTlNWaWV3ICpoaXRUZXN0KENHUG9pbnQpOwogCi0gICAgQ29sb3JTcGFjZURhdGEg
Y29sb3JTcGFjZSgpOworICAgIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNw
YWNlKCk7CiAKICAgICB2b2lkIHNldFVuZGVybGF5Q29sb3IoTlNDb2xvciAqKTsKICAgICBOU0Nv
bG9yICp1bmRlcmxheUNvbG9yKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHdvcmtpbmcgY29weSkKQEAgLTMy
LDcgKzMyLDYgQEAKICNpbXBvcnQgIkFQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmgiCiAj
aW1wb3J0ICJBUElOYXZpZ2F0aW9uLmgiCiAjaW1wb3J0ICJBcHBLaXRTUEkuaCIKLSNpbXBvcnQg
IkNvbG9yU3BhY2VEYXRhLmgiCiAjaW1wb3J0ICJDb3JlVGV4dEhlbHBlcnMuaCIKICNpbXBvcnQg
IkZvbnRJbmZvLmgiCiAjaW1wb3J0ICJGdWxsc2NyZWVuQ2xpZW50LmgiCkBAIC05MCw2ICs4OSw3
IEBACiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yTWFjLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9y
U2VyaWFsaXphdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db21wb3NpdGlvbkhpZ2hsaWdodC5o
PgorI2ltcG9ydCA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRGljdGlvbmFyeUxvb2t1cC5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnRGF0YS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9EcmFnSXRlbS5oPgpAQCAtMjUwMCw3ICsyNTAwLDcgQEAgdm9pZCBX
ZWJWaWV3SW1wbDo6cG9zdEZha2VNb3VzZU1vdmVkRXZlbgogICAgIG1fcGFnZS0+aGFuZGxlTW91
c2VFdmVudCh3ZWJFdmVudCk7CiB9CiAKLUNvbG9yU3BhY2VEYXRhIFdlYlZpZXdJbXBsOjpjb2xv
clNwYWNlKCkKK1dlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBXZWJWaWV3SW1wbDo6Y29s
b3JTcGFjZSgpCiB7CiAgICAgaWYgKCFtX2NvbG9yU3BhY2UpIHsKICAgICAgICAgaWYgKG1fdGFy
Z2V0V2luZG93Rm9yTW92ZVByZXBhcmF0aW9uKQpAQCAtMjUxMSwxMCArMjUxMSw3IEBAIENvbG9y
U3BhY2VEYXRhIFdlYlZpZXdJbXBsOjpjb2xvclNwYWNlKCkKICAgICAgICAgICAgIG1fY29sb3JT
cGFjZSA9IFtOU1NjcmVlbiBtYWluU2NyZWVuXS5jb2xvclNwYWNlOwogICAgIH0KIAotICAgIENv
bG9yU3BhY2VEYXRhIGNvbG9yU3BhY2VEYXRhOwotICAgIGNvbG9yU3BhY2VEYXRhLmNnQ29sb3JT
cGFjZSA9IFttX2NvbG9yU3BhY2UgQ0dDb2xvclNwYWNlXTsKLQotICAgIHJldHVybiBjb2xvclNw
YWNlRGF0YTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIHsgW21f
Y29sb3JTcGFjZSBDR0NvbG9yU3BhY2VdIH07CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnNldFVu
ZGVybGF5Q29sb3IoTlNDb2xvciAqdW5kZXJsYXlDb2xvcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVIb3N0Lm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzUsNiArMzUsNyBAQAogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQ
cm9jZXNzUHJveHkuaCIKICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgorI2ltcG9y
dCA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvR3Jh
cGhpY3NDb250ZXh0Q0cuaD4KICNpbXBvcnQgPFdlYkNvcmUvSU9TdXJmYWNlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1BsYXRmb3JtTGF5ZXIuaD4KQEAgLTMxNyw3ICszMTgsNyBAQCBzdGF0aWMgdm9p
ZCByZWN1cnNpdmVseU1hcElPU3VyZmFjZUJhY2tpCiB7CiAgICAgaWYgKGxheWVyLmNvbnRlbnRz
ICYmIENGR2V0VHlwZUlEKChfX2JyaWRnZSBDRlR5cGVSZWYpbGF5ZXIuY29udGVudHMpID09IENB
TWFjaFBvcnRHZXRUeXBlSUQoKSkgewogICAgICAgICBNYWNoU2VuZFJpZ2h0IHBvcnQgPSBNYWNo
U2VuZFJpZ2h0OjpjcmVhdGUoQ0FNYWNoUG9ydEdldFBvcnQoKF9fYnJpZGdlIENBTWFjaFBvcnRS
ZWYpbGF5ZXIuY29udGVudHMpKTsKLSAgICAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9T
dXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUocG9ydCksIHNSR0JDb2xvclNwYWNl
UmVmKCkpOworICAgICAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0
ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShwb3J0KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCkpOwogICAgICAgICBsYXllci5jb250ZW50cyA9IHN1cmZhY2UgPyBzdXJmYWNl
LT5hc0xheWVyQ29udGVudHMoKSA6IG5pbDsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAkod29y
a2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNWaWV3SW5X
aW5kb3coKSBvdmVycmlkZTsKICAgICBib29sIGlzVmlzdWFsbHlJZGxlKCkgb3ZlcnJpZGU7CiAg
ICAgTGF5ZXJIb3N0aW5nTW9kZSB2aWV3TGF5ZXJIb3N0aW5nTW9kZSgpIG92ZXJyaWRlOwotICAg
IENvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2UoKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UmVt
b3RlTGF5ZXJUcmVlUm9vdE5vZGUoUmVtb3RlTGF5ZXJUcmVlTm9kZSopIG92ZXJyaWRlOwogICAg
IENBTGF5ZXIgKmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIoKSBjb25zdCBvdmVycmlk
ZTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbE1hYy5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2IEBA
CiAKICNpbXBvcnQgIkFQSUhpdFRlc3RSZXN1bHQuaCIKICNpbXBvcnQgIkFwcEtpdFNQSS5oIgot
I2ltcG9ydCAiQ29sb3JTcGFjZURhdGEuaCIKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNp
bXBvcnQgIkRvd25sb2FkUHJveHkuaCIKICNpbXBvcnQgIkRyYXdpbmdBcmVhUHJveHkuaCIKQEAg
LTY2LDYgKzY1LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQml0bWFwSW1hZ2UuaD4KICNpbXBvcnQg
PFdlYkNvcmUvQ29sb3JNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ3Vyc29yLmg+CisjaW1wb3J0
IDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EaWN0
aW9uYXJ5TG9va3VwLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdJdGVtLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0Zsb2F0UmVjdC5oPgpAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgUGFnZUNsaWVudElt
cGw6OnZpZXdXaWxsTW92ZVRvQW5vdGgKICAgICBjbGVhckFsbEVkaXRDb21tYW5kcygpOwogfQog
Ci1Db2xvclNwYWNlRGF0YSBQYWdlQ2xpZW50SW1wbDo6Y29sb3JTcGFjZSgpCitXZWJDb3JlOjpE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgUGFnZUNsaWVudEltcGw6OmNvbG9yU3BhY2UoKQogewogICAg
IHJldHVybiBtX2ltcGwtPmNvbG9yU3BhY2UoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYVByb3h5Lm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAKLSNp
bXBvcnQgIkNvbG9yU3BhY2VEYXRhLmgiCiAjaW1wb3J0ICJEcmF3aW5nQXJlYU1lc3NhZ2VzLmgi
CiAjaW1wb3J0ICJEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCIKICNpbXBvcnQgIkxheWVyVHJl
ZUNvbnRleHQuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBA
QAogI2lmIFBMQVRGT1JNKE1BQykKIAogI2ltcG9ydCAiQVBJVUlDbGllbnQuaCIKLSNpbXBvcnQg
IkNvbG9yU3BhY2VEYXRhLmgiCiAjaW1wb3J0ICJDb25uZWN0aW9uLmgiCiAjaW1wb3J0ICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJFZGl0b3JTdGF0ZS5oIgpAQCAtNTIsNiArNTEsNyBAQAog
I2ltcG9ydCAiV2ViUHJlZmVyZW5jZXNLZXlzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHku
aCIKICNpbXBvcnQgPFdlYkNvcmUvQXR0cmlidXRlZFN0cmluZy5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGljdGlvbmFyeUxv
b2t1cC5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnSXRlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9H
cmFwaGljc0xheWVyLmg+CkBAIC0zNDQsNyArMzQ0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmFz
c2lzdGl2ZVRlY2hub2xvZ3lNYQogICAgIHBhZ2VDbGllbnQoKS5hc3Npc3RpdmVUZWNobm9sb2d5
TWFrZUZpcnN0UmVzcG9uZGVyKCk7CiB9CiAKLUNvbG9yU3BhY2VEYXRhIFdlYlBhZ2VQcm94eTo6
Y29sb3JTcGFjZSgpCitXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgV2ViUGFnZVByb3h5
Ojpjb2xvclNwYWNlKCkKIHsKICAgICByZXR1cm4gcGFnZUNsaWVudCgpLmNvbG9yU3BhY2UoKTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjYzNCw4ICsyNjM0LDYgQEAKIAkJ
MUEyNTZFMzYxOEExQTc4ODAwNkZCOTIyIC8qIFdLTmF2aWdhdGlvbkFjdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS05hdmlnYXRpb25BY3Rpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyNTZFMzkxOEExQTdERjAwNkZCOTIyIC8qIFdLTmF2aWdh
dGlvbkFjdGlvbkludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
TmF2aWdhdGlvbkFjdGlvbkludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFBMjhCOENCMUM4MEVENTkwMDZGRDc0MyAvKiBXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUEyQTRBRkQxNTg2OTM5MjAwOTBDOUU5IC8q
IENvbG9yU3BhY2VEYXRhLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gQ29sb3JTcGFjZURhdGEubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBMkE0
QUZFMTU4NjkzOTIwMDkwQzlFOSAvKiBDb2xvclNwYWNlRGF0YS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDb2xvclNwYWNlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQTJCQjZDQzE0MTE3QTVGMDAwRjM1RDQgLyogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMkJCNkNF
MTQxMTdCNEQwMDBGMzVENCAvKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJL
aXQyL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUEyQkI2Q0YxNDExN0I0RDAwMEYzNUQ0IC8q
IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oOyBwYXRoID0gRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC0xMDQzMCw4ICsxMDQyOCw2IEBA
CiAJCQkJOUY1NEY4OEUxNjQ4OEU4NzAwN0RGODFBIC8qIEF1eGlsaWFyeVByb2Nlc3NNYWMubW0g
Ki8sCiAJCQkJQ0UxMUFENTExQ0JDNDgyRjAwNjgxRUU1IC8qIENvZGVTaWduaW5nLmggKi8sCiAJ
CQkJQ0UxMUFENEYxQ0JDNDdGODAwNjgxRUU1IC8qIENvZGVTaWduaW5nLm1tICovLAotCQkJCTFB
MkE0QUZFMTU4NjkzOTIwMDkwQzlFOSAvKiBDb2xvclNwYWNlRGF0YS5oICovLAotCQkJCTFBMkE0
QUZEMTU4NjkzOTIwMDkwQzlFOSAvKiBDb2xvclNwYWNlRGF0YS5tbSAqLywKIAkJCQkxQUM3NUEx
QzFCMzM2OTVFMDA1Njc0NUIgLyogSGFuZ0RldGVjdGlvbkRpc2FibGVyTWFjLm1tICovLAogCQkJ
CTJENTAzNjVEMUJDQzc5M0YwMEUyMEJCMyAvKiBOYXRpdmVXZWJHZXN0dXJlRXZlbnRNYWMubW0g
Ki8sCiAJCQkJQzAyQkZGMUQxMjUxNTAyRTAwOUNDQkVBIC8qIE5hdGl2ZVdlYktleWJvYXJkRXZl
bnRNYWMubW0gKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1LDExICs0NSw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChJbWFnZUJ1ZmZlclMKIAogU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIEltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29uZmlndXJhdGlvbihjb25zdCBQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBj
b25maWd1cmF0aW9uOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGNvbmZpZ3VyYXRpb24uY29s
b3JTcGFjZSA9IHsgY2FjaGVkQ0dDb2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JTcGFjZSkgfTsK
LSNlbmRpZgotICAgIHJldHVybiBjb25maWd1cmF0aW9uOworICAgIHJldHVybiB7IHBhcmFtZXRl
cnMuY29sb3JTcGFjZSB9OwogfQogCiBJbnRTaXplIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZDo6Y2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0
LDcgKzk0LDcgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwcmVwYQogICAg
ICAgICBtYXJrQ29udGV4dExvc3QoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRv
IGRpc3BsYXlCdWZmZXIgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShk
aXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwgc1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgYXV0byBk
aXNwbGF5QnVmZmVyID0gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoZGlz
cGxheUJ1ZmZlclNlbmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpKTsKICAgICBpZiAoZGlzcGxheUJ1ZmZlcikgewogICAgICAgICBhdXRvJiBzYyA9IHBsYXRm
b3JtU3dhcENoYWluKCk7CiAgICAgICAgIHNjLnJlY3ljbGVCdWZmZXIoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eS5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IDog
cHVibGljIFdlCiAgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXI6OnJlc29sdXRp
b25TY2FsZTsKIAogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8UmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgV2Vi
Q29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgIHN0YXRpYyBSZWZQdHI8UmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKICAgICB7
CiAgICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6
UGFyYW1ldGVycyB7IHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3Jt
YXQgfTsKICAgICAgICAgaWYgKEJhY2tlbmRUeXBlOjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUo
cGFyYW1ldGVycykuaXNFbXB0eSgpKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OmNyZWF0ZQogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OkNy
ZWF0ZUltYWdlQnVmZmVyKGltYWdlQnVmZmVyLmxvZ2ljYWxTaXplKCksIGltYWdlQnVmZmVyLnJl
bmRlcmluZ01vZGUoKSwgaW1hZ2VCdWZmZXIucmVzb2x1dGlvblNjYWxlKCksIGltYWdlQnVmZmVy
LmNvbG9yU3BhY2UoKSwgaW1hZ2VCdWZmZXIucGl4ZWxGb3JtYXQoKSwgaW1hZ2VCdWZmZXIucmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpLCByZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcigp
LCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNS
ZXBseSk7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01v
ZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpCitSZWZQdHI8SW1hZ2VC
dWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29u
c3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBQ
aXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkKIHsKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGltYWdl
QnVmZmVyOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDE1ICs0
MywxOSBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
KwogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIGNsYXNzIERpc3BsYXlMaXN0OwogY2xhc3MgSXRl
bTsKIH0KKworY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlOwogY2xhc3MgRmxvYXRTaXplOwog
Y2xhc3MgUGl4ZWxCdWZmZXI7CisKIGVudW0gY2xhc3MgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiA6
IHVpbnQ4X3Q7Ci1lbnVtIGNsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7CiBl
bnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOworCiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtOTIsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAogICAgIC8vIE1lc3Nh
Z2VzIHRvIGJlIHNlbnQuCi0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVJ
bWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5kZXJpbmdN
b2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFj
ZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQpOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZl
cj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6
UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBXZWJDb3JlOjpEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCk7CiAgICAgU3RyaW5nIGdl
dERhdGFVUkxGb3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxk
b3VibGU+IHF1YWxpdHksIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiwgV2ViQ29yZTo6UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICBWZWN0b3I8dWludDhfdD4gZ2V0RGF0YUZv
ckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVh
bGl0eSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQo
Y29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNr
ZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHAJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXJTaGFyZWFibGVNYXBwCiAgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShi
YWNrZW5kU2l6ZSwgYmFja2VuZFNpemUsIGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNv
bG9yU3BhY2UpLCBJT1N1cmZhY2U6OmZvcm1hdEZvclBpeGVsRm9ybWF0KHBhcmFtZXRlcnMucGl4
ZWxGb3JtYXQpKTsKKyAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShiYWNrZW5k
U2l6ZSwgYmFja2VuZFNpemUsIHBhcmFtZXRlcnMuY29sb3JTcGFjZSwgSU9TdXJmYWNlOjpmb3Jt
YXRGb3JQaXhlbEZvcm1hdChwYXJhbWV0ZXJzLnBpeGVsRm9ybWF0KSk7CiAgICAgaWYgKCFzdXJm
YWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtNjUsNyArNjUsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIAotICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRS
aWdodChXVEZNb3ZlKFdURjo6Z2V0PE1hY2hTZW5kUmlnaHQ+KGhhbmRsZSkpLCBjYWNoZWRDR0Nv
bG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSk7CisgICAgYXV0byBzdXJmYWNlID0gSU9T
dXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoV1RGOjpnZXQ8TWFjaFNlbmRSaWdo
dD4oaGFuZGxlKSksIHBhcmFtZXRlcnMuY29sb3JTcGFjZSk7CiAgICAgaWYgKCFzdXJmYWNlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmNwcAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMyArMjgsMTIg
QEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgSEFWRShBVkFTU0VUUkVBREVSKQogCi0j
aW5jbHVkZSAiQ29sb3JTcGFjZURhdGEuaCIKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlv
bi5oIgogI2luY2x1ZGUgIlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5TWVzc2FnZXMuaCIKICNp
bmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vz
cy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQVZBc3NldE1JTUVUeXBlQ2FjaGUuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL0NvbG9yU3BhY2VDRy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGVzdGluYXRpb25D
b2xvclNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0ltYWdlVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnku
aD4KQEAgLTE2OCwxNCArMTY3LDE0IEBAIFBsYXRmb3JtSW1hZ2VQdHIgUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGOjoKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBPcHRpb25hbDxNYWNoU2Vu
ZFJpZ2h0PiBzZW5kUmlnaHQ7Ci0gICAgICAgIENvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2U7Cisg
ICAgICAgIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKICAgICAg
ICAgaWYgKCFtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVz
c2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpDcmVhdGVGcmFtZUltYWdlQXRJbmRl
eChtX2lkZW50aWZpZXIsIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlBy
b3h5OjpDcmVhdGVGcmFtZUltYWdlQXRJbmRleDo6UmVwbHkoc2VuZFJpZ2h0LCBjb2xvclNwYWNl
KSwgMCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKCFzZW5kUmlnaHQpCisg
ICAgICAgIGlmICghc2VuZFJpZ2h0IHx8ICFjb2xvclNwYWNlKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJv
bVNlbmRSaWdodChXVEZNb3ZlKCpzZW5kUmlnaHQpLCBjb2xvclNwYWNlLmNnQ29sb3JTcGFjZS5n
ZXQoKSk7CisgICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRl
RnJvbVNlbmRSaWdodChXVEZNb3ZlKCpzZW5kUmlnaHQpLCBXVEZNb3ZlKCpjb2xvclNwYWNlKSk7
CiAgICAgICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgICAgIHJldHVybjsKIApJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9jb2NvYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGVDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL2NvY29hL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNvY29hLm1tCShyZXZpc2lvbiAy
Nzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL01lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3
IEBAIFJlZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXJQcml2YXRlUmUKICAgICBpZiAoIXNl
bmRSaWdodCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBX
ZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZSgqc2VuZFJpZ2h0
KSwgc1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9T
dXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoKnNlbmRSaWdodCksIFdlYkNvcmU6
OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICBpZiAoIXN1cmZhY2UpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCkBAIC05MSw3ICs5MSw3IEBAIFJldGFpblB0cjxDVlBpeGVs
QnVmZmVyUmVmPiBNZWRpYVBsYXllclAKICAgICBpZiAoIXNlbmRSaWdodCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNy
ZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZSgqc2VuZFJpZ2h0KSwgbnVsbHB0cik7CisgICAgYXV0
byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1v
dmUoKnNlbmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsK
ICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0JKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTY0Niw3ICs2NDYsNyBAQCBpbmxpbmUgUERG
UGx1Z2luOjpQREZQbHVnaW4oV2ViRnJhbWUmIGZyCiAgICAgW21fY29udGFpbmVyTGF5ZXIgYWRk
U3VibGF5ZXI6bV9zY3JvbGxDb3JuZXJMYXllci5nZXQoKV07CiAgICAgaWYgKFttX3BkZkxheWVy
Q29udHJvbGxlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldERldmljZUNvbG9yU3Bh
Y2U6KV0pIHsKICAgICAgICAgYXV0byB2aWV3ID0gZnJhbWUuY29yZUZyYW1lKCktPnZpZXcoKTsK
LSAgICAgICAgW21fcGRmTGF5ZXJDb250cm9sbGVyIHNldERldmljZUNvbG9yU3BhY2U6c2NyZWVu
Q29sb3JTcGFjZSh2aWV3KV07CisgICAgICAgIFttX3BkZkxheWVyQ29udHJvbGxlciBzZXREZXZp
Y2VDb2xvclNwYWNlOnNjcmVlbkNvbG9yU3BhY2UodmlldykucGxhdGZvcm1Db2xvclNwYWNlKCld
OwogICAgIH0KIAogI2lmIEhBVkUoSU5DUkVNRU5UQUxfUERGX0FQSVMpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxp
dGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDEyICs1Nyw3IEBAIFJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IGNyZWF0ZVNoYXJlYWJsZUIKICAgICB9CiAKICAgICAvLyBGSVhNRTogT25seSBz
ZWxlY3QgRXh0ZW5kZWRDb2xvciBvbiBpbWFnZXMga25vd24gdG8gbmVlZCB3aWRlIGdhbXV0Lgot
ICAgIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBiaXRtYXBDb25maWd1cmF0aW9uOwot
I2lmIFVTRShDRykKLSAgICBiaXRtYXBDb25maWd1cmF0aW9uLmNvbG9yU3BhY2UuY2dDb2xvclNw
YWNlID0gc2NyZWVuQ29sb3JTcGFjZShyZW5kZXJJbWFnZS5mcmFtZSgpLm1haW5GcmFtZSgpLnZp
ZXcoKSk7Ci0jZW5kaWYKLQotICAgIGF1dG8gc2hhcmVkQml0bWFwID0gU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShiaXRtYXBTaXplKSwgYml0bWFwQ29uZmlndXJhdGlv
bik7CisgICAgYXV0byBzaGFyZWRCaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJl
YWJsZShJbnRTaXplKGJpdG1hcFNpemUpLCB7IHNjcmVlbkNvbG9yU3BhY2UocmVuZGVySW1hZ2Uu
ZnJhbWUoKS5tYWluRnJhbWUoKS52aWV3KCkpIH0pOwogICAgIGlmICghc2hhcmVkQml0bWFwKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHJl
dmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MjcsNyArOTI3LDcgQEAg
V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeSogVwogCiAjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmlu
Z01vZGUsIFJlbmRlcmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQp
IGNvbnN0CitSZWZQdHI8SW1hZ2VCdWZmZXI+IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlSW1hZ2VC
dWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUs
IFJlbmRlcmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0
KSBjb25zdAogewogICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2hvdWxkVXNlUmVt
b3RlUmVuZGVyaW5nRm9yKHB1cnBvc2UpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMjQ0LDcgKzI0NCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hN
b25pdG9yRmFjdG9yeSogZGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeSgpIGNvbnN0IGZpbmFs
OwogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1
ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29y
ZTo6UmVuZGVyaW5nTW9kZSwgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVs
Rm9ybWF0KSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNy
ZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRl
cmluZ01vZGUsIFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiwgV2ViQ29yZTo6UGl4ZWxG
b3JtYXQpIGNvbnN0IGZpbmFsOwogI2lmIEVOQUJMRShXRUJHTCkKICAgICBSZWZQdHI8V2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxh
eUlEIGhvc3RXaW5kb3dEaXNwbGF5SUQpIGNvbnN0IGZpbmFsOwogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTY4LDkgKzY4LDcgQEAgdXNpbmcgRHJhZ0ltYWdlID0gQ0dJbWFnZVJl
ZjsKIAogc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNvbnZlcnREcmFnSW1hZ2VUb0Jp
dG1hcChEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFNpemUmIHNpemUsIEZyYW1lJiBmcmFtZSkK
IHsKLSAgICBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0bWFwQ29uZmlndXJhdGlv
bjsKLSAgICBiaXRtYXBDb25maWd1cmF0aW9uLmNvbG9yU3BhY2UuY2dDb2xvclNwYWNlID0gc2Ny
ZWVuQ29sb3JTcGFjZShmcmFtZS5tYWluRnJhbWUoKS52aWV3KCkpOwotICAgIGF1dG8gYml0bWFw
ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc2l6ZSwgYml0bWFwQ29uZmlndXJh
dGlvbik7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJs
ZShzaXplLCB7IHNjcmVlbkNvbG9yU3BhY2UoZnJhbWUubWFpbkZyYW1lKCkudmlldygpKSB9KTsK
ICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEu
aAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBEZWNvZGVyOwogfQogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7CiBjbGFzcyBE
aXNwbGF5UmVmcmVzaE1vbml0b3I7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEZyYW1lVmlldzsKQEAg
LTYwLDcgKzYxLDYgQEAgc3RydWN0IFZpZXdwb3J0QXR0cmlidXRlczsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKLXN0cnVjdCBDb2xvclNwYWNlRGF0YTsKIGNsYXNzIExheWVyVHJlZUhvc3Q7CiBz
dHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0
b3JlOwpAQCAtMTgwLDcgKzE4MCw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgLy8gVXNlZCBieSBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS4KICAgICB2aXJ0dWFs
IHZvaWQgc2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBz
ZXRDb2xvclNwYWNlKGNvbnN0IENvbG9yU3BhY2VEYXRhJikgeyB9CisgICAgdmlydHVhbCB2b2lk
IHNldENvbG9yU3BhY2UoT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPikg
eyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUs
IFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0
VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSB7
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1l
c3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgkod29ya2luZyBj
b3B5KQpAQCAtMzEsNyArMzEsNyBAQCBtZXNzYWdlcyAtPiBEcmF3aW5nQXJlYSBOb3RSZWZDb3Vu
dGVkIHsKICAgICAvLyBVc2VkIGJ5IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLgogICAg
IFVwZGF0ZUdlb21ldHJ5KFdlYkNvcmU6OkludFNpemUgdmlld1NpemUsIGJvb2wgZmx1c2hTeW5j
aHJvbm91c2x5LCBNYWNoU2VuZFJpZ2h0IGZlbmNlUG9ydCkKICAgICBTZXREZXZpY2VTY2FsZUZh
Y3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKLSAgICBTZXRDb2xvclNwYWNlKHN0cnVjdCBX
ZWJLaXQ6OkNvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2UpCisgICAgU2V0Q29sb3JTcGFjZShzdHJ1
Y3QgT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlKQog
ICAgIFNldFZpZXdFeHBvc2VkUmVjdChPcHRpb25hbDxXZWJDb3JlOjpGbG9hdFJlY3Q+IHZpZXdF
eHBvc2VkUmVjdCkKIAogICAgIEFkanVzdFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBXZWJD
b3JlOjpGbG9hdFBvaW50IG9yaWdpbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU5OCw3
ICsyNTk4LDcgQEAgc3RhdGljIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBzbgogICAg
IFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwogI2lmIFVTRShD
RykKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc1VzZVNjcmVlbkNvbG9yU3BhY2Up
Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZS5jZ0NvbG9yU3BhY2UgPSBzY3JlZW5D
b2xvclNwYWNlKHBhZ2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkudmlldygpKTsKKyAgICAgICAg
Y29uZmlndXJhdGlvbi5jb2xvclNwYWNlID0gc2NyZWVuQ29sb3JTcGFjZShwYWdlLmNvcmVQYWdl
KCktPm1haW5GcmFtZSgpLnZpZXcoKSk7CiAjZW5kaWYKICAgICByZXR1cm4gY29uZmlndXJhdGlv
bjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAkod29ya2luZyBjb3B5KQpAQCAtOTgsNyArOTgs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3VzcGVuZFBhaW50aW5nKCk7CiAgICAgdm9pZCByZXN1
bWVQYWludGluZygpOwogICAgIHZvaWQgc2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3RpbmdN
b2RlKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldENvbG9yU3BhY2UoY29uc3QgQ29sb3JTcGFjZURh
dGEmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbG9yU3BhY2UoT3B0aW9uYWw8V2ViQ29yZTo6
RGVzdGluYXRpb25Db2xvclNwYWNlPikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhZGRGZW5jZShjb25z
dCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYWRkVHJhbnNhY3Rp
b25DYWxsYmFja0lEKENhbGxiYWNrSUQpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiBQTEFURk9STShNQUMp
CiAKLSNpbXBvcnQgIkNvbG9yU3BhY2VEYXRhLmgiCiAjaW1wb3J0ICJEaXNwbGF5UmVmcmVzaE1v
bml0b3JNYWMuaCIKICNpbXBvcnQgIkRyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oIgogI2ltcG9y
dCAiTGF5ZXJIb3N0aW5nQ29udGV4dC5oIgpAQCAtNDUsNiArNDQsNyBAQAogI2ltcG9ydCA8cGFs
L3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNv
cmUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGVidWdQYWdlT3ZlcmxheXMuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGlj
c0NvbnRleHQuaD4KQEAgLTkxLDYgKzkxLDcgQEAgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWE6OlRpbGVkQ29yZQogICAgIH0pOwogCiAgICAgdXBkYXRlTGF5ZXJIb3N0aW5nQ29udGV4dCgp
OworICAgIAogICAgIHNldENvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKTsKIAogICAg
IGlmIChhdXRvIHZpZXdFeHBvc2VkUmVjdCA9IHBhcmFtZXRlcnMudmlld0V4cG9zZWRSZWN0KQpA
QCAtNjUwLDkgKzY1MSw5IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNl
dEwKICAgICBzZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5OjpVcGRhdGVBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nTW9kZSgwLCBsYXllclRyZWVDb250ZXh0KSk7CiB9CiAKLXZvaWQgVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldENvbG9yU3BhY2UoY29uc3QgQ29sb3JTcGFjZURh
dGEmIGNvbG9yU3BhY2UpCit2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRD
b2xvclNwYWNlKE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JT
cGFjZSkKIHsKLSAgICBtX2xheWVySG9zdGluZ0NvbnRleHQtPnNldENvbG9yU3BhY2UoY29sb3JT
cGFjZS5jZ0NvbG9yU3BhY2UuZ2V0KCkpOworICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0
Q29sb3JTcGFjZShjb2xvclNwYWNlID8gY29sb3JTcGFjZS0+cGxhdGZvcm1Db2xvclNwYWNlKCkg
OiBudWxscHRyKTsKIH0KIAogUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4g
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmNyZWF0ZURpc3BsYXlSZWZyZXNoTW9uaXRv
cihQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNzc5MjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wNS0yMiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdyYXBwaW5nIGEgcGxhdGZvcm0gY29sb3Ig
c3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0Yy4pCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxNDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNv
bnRleHRNZW51Q2xpZW50Lm1tOgorICAgICAgICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6OmltYWdl
Rm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbSk6CisgICAgICAgIFVwZGF0ZSBmb3Ig
bmV3IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjbGFzcy4KKwogMjAyMS0wNS0yMiAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgTG9ja0hvbGRlciB3aXRo
IExvY2tlciBpbiBsb2NhbCB2YXJpYWJsZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
Lm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDMsNiAr
NDMsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Db250ZXh0TWVudS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db250ZXh0TWVudUNvbnRyb2xsZXIu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0RvY3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0ZyYW1lVmlldy5oPgpAQCAtMjEzLDcgKzIxNCw3IEBAIFJldGFpblB0cjxOU0ltYWdl
PiBXZWJDb250ZXh0TWVudUNsaWVudDoKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIC8vIFRo
aXMgaXMgZWZmZWN0aXZlbHkgYSBzbmFwc2hvdCwgYW5kIHdpbGwgYmUgcGFpbnRlZCBpbiBhbiB1
bmFjY2VsZXJhdGVkIGZhc2hpb24gaW4gbGluZSB3aXRoIEZyYW1lU25hcHNob3R0aW5nLgotICAg
IGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShyZWN0LnNpemUoKSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShy
ZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFidWZmZXIp
CiAgICAgICAgIHJldHVybiBuaWw7CiAKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzkyMCkKKysrIFRvb2xzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA1LTIyICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBDb252ZXJ0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSBmcm9tIGFuIGVudW0gdG8gY2xhc3Mgd3JhcHBpbmcgYSBwbGF0Zm9ybSBjb2xvciBzcGFj
ZSAoQ0dDb2xvclNwYWNlUmVmIGZvciBDRyBwb3J0cywgZXRjLikKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjE0MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgVXBhdGUgdGVzdCB0byB1c2UgbmV3IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSB0eXBlLgorCiAyMDIxLTA1LTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmVwbGFjZSBMb2NrSG9sZGVyIHdpdGggTG9ja2VyIGluIGxvY2FsIHZhcmlhYmxl
cwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1BpeGVsRHVtcFN1cHBvcnRJT1MubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1BpeGVsRHVtcFN1cHBvcnRJ
T1MubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9QaXhl
bER1bXBTdXBwb3J0SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDYg
KzM4LDcgQEAKICNpbXBvcnQgPENvbW1vbkNyeXB0by9Db21tb25EaWdlc3QuaD4KICNpbXBvcnQg
PE1vYmlsZUNvcmVTZXJ2aWNlcy9VVENvcmVUeXBlcy5oPgogI2ltcG9ydCA8UXVhcnR6Q29yZS9R
dWFydHpDb3JlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRDRy5oPgogI2ltcG9ydCA8V2ViQ29yZS9J
T1N1cmZhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KQEAgLTcxLDcg
KzcyLDcgQEAgUmVmUHRyPEJpdG1hcENvbnRleHQ+IGNyZWF0ZUJpdG1hcENvbnRleAogI2Vsc2UK
ICAgICBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdCBzbmFwc2hvdEZvcm1hdCA9IFdlYkNvcmU6
OklPU3VyZmFjZTo6Rm9ybWF0OjpCR1JBOwogI2VuZGlmCi0gICAgYXV0byBzdXJmYWNlID0gV2Vi
Q29yZTo6SU9TdXJmYWNlOjpjcmVhdGUoV2ViQ29yZTo6ZXhwYW5kZWRJbnRTaXplKHNuYXBzaG90
U2l6ZSksIFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCksIHNuYXBzaG90Rm9ybWF0KTsKKyAg
ICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZShXZWJDb3JlOjpleHBh
bmRlZEludFNpemUoc25hcHNob3RTaXplKSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIHNuYXBzaG90Rm9ybWF0KTsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY2dJ
bWFnZSA9IHN1cmZhY2UtPmNyZWF0ZUltYWdlKCk7CiAKICAgICB2b2lkKiBiaXRtYXBCdWZmZXIg
PSBudWxscHRyOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rp
c3BsYXlMaXN0VGVzdHNDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9EaXNwbGF5TGlzdFRlc3Rz
Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBVU0UoQ0cpCiAK
KyNpbmNsdWRlIDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRGlzcGxheUxpc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0SXRlbXMu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaD4KQEAgLTQ2LDggKzQ3
LDggQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBSZXBsYXlXaXRoTWlzc2luZwogewogICAgIEZs
b2F0UmVjdCBjb250ZXh0Qm91bmRzIHsgMCwgMCwgY29udGV4dFdpZHRoLCBjb250ZXh0SGVpZ2h0
IH07CiAKLSAgICBhdXRvIGNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdp
dGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7Ci0gICAgYXV0byBjZ0NvbnRleHQgPSBhZG9wdENG
KENHQml0bWFwQ29udGV4dENyZWF0ZShudWxscHRyLCBjb250ZXh0V2lkdGgsIGNvbnRleHRIZWln
aHQsIDgsIDQgKiBjb250ZXh0V2lkdGgsIGNvbG9yU3BhY2UuZ2V0KCksIGtDR0ltYWdlQWxwaGFQ
cmVtdWx0aXBsaWVkTGFzdCkpOworICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpOworICAgIGF1dG8gY2dDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENv
bnRleHRDcmVhdGUobnVsbHB0ciwgY29udGV4dFdpZHRoLCBjb250ZXh0SGVpZ2h0LCA4LCA0ICog
Y29udGV4dFdpZHRoLCBjb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBrQ0dJbWFnZUFs
cGhhUHJlbXVsdGlwbGllZExhc3QpKTsKICAgICBHcmFwaGljc0NvbnRleHQgY29udGV4dCB7IGNn
Q29udGV4dC5nZXQoKSB9OwogCiAgICAgYXV0byBpbWFnZUJ1ZmZlcklkZW50aWZpZXIgPSBSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CkBAIC02OSw3ICs3MCw3IEBAIFRF
U1QoRGlzcGxheUxpc3RUZXN0cywgUmVwbGF5V2l0aE1pc3NpbmcKICAgICB9CiAKICAgICB7Ci0g
ICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHsgMTAwLCAxMDAg
fSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZSh7IDEwMCwgMTAwIH0sIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQsIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgICAgIEltYWdl
QnVmZmVySGFzaE1hcCBpbWFnZUJ1ZmZlck1hcDsKICAgICAgICAgaW1hZ2VCdWZmZXJNYXAuc2V0
KGltYWdlQnVmZmVySWRlbnRpZmllciwgaW1hZ2VCdWZmZXIucmVsZWFzZU5vbk51bGwoKSk7CiAK
</data>
<flag name="commit-queue"
          id="450662"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429470</attachid>
            <date>2021-05-23 12:20:44 -0700</date>
            <delta_ts>2021-05-23 15:37:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226143-20210523122043.patch</filename>
            <type>text/plain</type>
            <size>277893</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5NSBAQAorMjAyMS0wNS0yMiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdyYXBwaW5nIGEgcGxhdGZvcm0gY29sb3Ig
c3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0Yy4pCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxNDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIGVudW1lcmF0aW9uIGJh
c2VkIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB3aXRoIGEgc3RydWN0IHdyYXBwaW5nCisgICAgICAg
IGEgcGxhdGZvcm0gY29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0
Yy4pLiBGb3IgcG9ydHMKKyAgICAgICAgdGhhdCBkb24ndCBoYXZlIGEgcGxhdGZvcm0gbGV2ZWwg
Y29sb3Igc3BhY2UgdHlwZSwgYSBidWlsdGluIFBsYXRmb3JtQ29sb3JTcGFjZQorICAgICAgICB0
eXBlIGlzIHByb3ZpZGVkIHRoYXQgaXMganVzdCB0aGUgb2xkIGVudW0gcmVuYW1lZCB0byBQbGF0
Zm9ybUNvbG9yU3BhY2U6Ok5hbWUuCisKKyAgICAgICAgVGhlIGdvYWwgb2YgdGhpcyBjaGFuZ2Ug
aXMgdG8gdW5pZnkgdGhlIGN1cnJlbnRseSBiaWZ1cmNhdGVkIGNvbmNlcHQgb2YgYW4KKyAgICAg
ICAgSW1hZ2VCdWZmZXIncyBjb2xvciBzcGFjZSwgd2hpY2ggcHJldmlvc2x5IGNvdWxkIGVpdGhl
ciBiZSBiYXNlZCBvbiB0aGUgCisgICAgICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSAoYW5kIHJl
ZmxlY3RlZCBpbiB0aGUgY29sb3JTcGFjZSgpIG1lbWJlciBmdW5jdGlvbiksCisgICAgICAgIG9y
IChmb3IgQ0cgcG9ydHMpIGJhc2VkIG9uIGEgQ0dDb2xvclNwYWNlUmVmLCB3aXRoIHRoZSBjb2xv
clNwYWNlKCkgZnVuY3Rpb24KKyAgICAgICAgcmV0dXJuaW5nIHNSR0IgZXZlbiBpZiB0aGUgSW1h
Z2VCdWZmZXIgd2FzIG5vdC4gCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAq
IE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6
Q2xpcGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFydHdvcmtJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIFNvdXJj
ZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wSW1hZ2VCaXRtYXApOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRJbWFnZUJpdG1hcCk6CisgICAgICAgICogY3Nz
L0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1h
Z2VWYWx1ZTo6aW1hZ2UpOgorICAgICAgICAqIGh0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRDYW52YXM6OmNvcGllZEltYWdlIGNvbnN0KToK
KyAgICAgICAgKiBodG1sL0N1c3RvbVBhaW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3VzdG9tUGFpbnRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZh
c0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnRvTWVk
aWFTYW1wbGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUlt
YWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlQnVmZmVyRm9yUGFpbnRp
bmcgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvSW1hZ2VCaXRtYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCaXRtYXA6OmNy
ZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVhdGVQ
cm9taXNlKToKKyAgICAgICAgKiBodG1sL09mZnNjcmVlbkNhbnZhcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpPZmZzY3JlZW5DYW52YXM6OmNvbW1pdFRvUGxhY2Vob2xkZXJDYW52YXMpOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6Y29sb3JTcGFjZSBjb25zdCk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgICogaHRtbC9j
YW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dDo6c2V0T3V0cHV0Qml0bWFwKToKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp0b0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1ByZWRlZmlu
ZWRDb2xvclNwYWNlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFj
ZS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VC
dWZmZXJDYWNoZTo6aW1hZ2VCdWZmZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29u
dHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlVGV4dFRyYWNrUmVwcmVz
ZW50YXRpb25JbWFnZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNQYXR0ZXJu
KToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6
OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5oOgorICAg
ICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGll
bnQ6OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lU25hcHNo
b3R0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXAp
OgorICAgICAgICAqIHBhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzYW1wbGVDb2xvcik6CisgICAgICAgICogcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdCk6CisgICAgICAg
ICogcGxhdGZvcm0vSG9zdFdpbmRvdy5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtQ29s
b3JTcGFjZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29sb3JTcGFjZTo6
Z2V0IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1NjcmVlblByb3BlcnRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVl
blByb3BlcnRpZXM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5EYXRh
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVuRGF0YTo6ZGVjb2RlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bG9yOjp0b0NvbG9yQ29tcG9uZW50c0luQ29sb3JTcGFjZSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvQ29sb3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ckNvbnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVyQ29sb3JDb21wb25lbnRz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9Db2xvclNwYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29u
Y3JldGVJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0
ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6
ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29s
b3JTcGFjZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKToKKyAgICAgICAgKFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGlu
ZWFyU1JHQik6CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3Bs
YXlQMyk6CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRlc3RpbmF0
aW9uQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAg
KFdlYkNvcmU6Om9wZXJhdG9yIT0pOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpwbGF0Zm9ybUNvbG9y
U3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpk
ZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNvcHlSZWN0VG9CdWZmZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQaXhlbEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlckJhY2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXJCYWNrZW5kOjpjb2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UGl4ZWxCdWZmZXI6
OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJz
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VWSW1hZ2VDR0ltYWdlRm9ybWF0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5oOgorICAgICAgICAo
V2ViQ29yZTo6UGl4ZWxCdWZmZXJGb3JtYXQ6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNm
ZXJCR1JBUGl4ZWxCdWZmZXJUb0lPU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVW
aWRlb1NhbXBsZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxl
OjpSZW1vdGVWaWRlb1NhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBs
ZTo6c3VyZmFjZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlk
ZW9TYW1wbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OmdldFNjcmF0Y2hCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGls
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhU
aWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6Ymx1clNoYWRvd0J1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3U2hhZG93TGF5ZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQ
YWludFJlc3VsdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyQ2Fpcm9CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9C
YWNrZW5kOjp0cmFuc2Zvcm1Db2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0NvbG9yQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvQ0dDb21w
YXRpYmxlQ29tcG9uZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDR0NvbG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmg6CisgICAgICAgIChXZWJDb3Jl
OjpjYWNoZWRDR0NvbG9yU3BhY2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnBhaW50VG9DYW52YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3VyZmFjZU1h
dGNoZXNQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZVBvb2w6OnRha2VT
dXJmYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29weUNHSW1hZ2VG
b3JFbmNvZGluZyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJD
R0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6
OnNpbmdsZVBpeGVsU29saWRDb2xvciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVy
QmFja2luZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpzdXJmYWNlRnJvbVBvb2wpOgorICAgICAgICAoV2ViQ29y
ZTo6SU9TdXJmYWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVh
dGVGcm9tU2VuZFJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJv
bVN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tSW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tUGl4ZWxCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpJT1N1cmZhY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SU9TdXJmYWNlOjplbnN1cmVQbGF0Zm9ybUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
SU9TdXJmYWNlOjptaWdyYXRlQ29sb3JTcGFjZVRvUHJvcGVydGllcyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1t
OgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OnJlbmRl
clRvSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJh
bnNmZXJTZXNzaW9uVlQubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVRyYW5zZmVyU2Vzc2lv
blZUOjpjcmVhdGVQaXhlbEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3Yv
UGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZl
ckNvbmZvcm1lckNWOjpjcmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpkZXN0cm95
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkJlZ2luQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmNvbG9yU3BhY2UgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkJlZ2luQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkJl
Z2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OkdldFBpeGVsQnVmZmVyOjpHZXRQaXhlbEJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6R2V0UGl4ZWxCdWZmZXI6Om91dHB1dEZvcm1hdCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6R2V0UGl4ZWxCdWZmZXI6OmVuY29kZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6R2V0UGl4ZWxCdWZmZXI6OmRlY29k
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpj
bGlwVG9EcmF3aW5nQ29tbWFuZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURp
c3BsYWNlbWVudE1hcDo6c2V0UmVzdWx0Q29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVUaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRQaXhl
bEJ1ZmZlclRvQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNv
bnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJF
ZmZlY3Q6OmNvcHlDb252ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpjb3B5Q29udmVydGVkUGl4ZWxCdWZmZXJUb0Rlc3RpbmF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6cmVxdWlyZXNQaXhlbEJ1ZmZl
ckNvbG9yU3BhY2VDb252ZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6
dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJFZmZlY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6
b3BlcmF0aW5nQ29sb3JTcGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OnNldE9wZXJhdGluZ0NvbG9yU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZm
ZWN0OjpyZXN1bHRDb2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVm
ZmVjdDo6c2V0UmVzdWx0Q29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9Tb3VyY2VHcmFwaGljLmg6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGlj
OjpTb3VyY2VHcmFwaGljKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5H
dGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL1BsYXRmb3JtU2NyZWVuSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2Ny
ZWVuQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0U2NyZWVuUHJvcGVydGll
cyk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6Y29sbGVjdFNjcmVlblByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6
c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6VGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdXaXRoVmlld0lu
dG9Db250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlz
cGxheUNhcHR1cmVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVuRGlzcGxheUNhcHR1
cmVyTWFjOjpjcmVhdGVEaXNwbGF5U3RyZWFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZVZpZGVvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGlt
ZVZpZGVvU291cmNlOjppbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vcGxh
eXN0YXRpb24vUGxhdGZvcm1TY3JlZW5QbGF5U3RhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzY3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGxhdGZvcm1TY3Jl
ZW5XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAg
ICogcGxhdGZvcm0vd3BlL1BsYXRmb3JtU2NyZWVuV1BFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNjcmVlbkNvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaDoK
KyAgICAgICAgKFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGE6OmRlY29k
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NGaWx0ZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ZpbHRlcjo6YnVpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjphbGxvY2F0ZUJh
Y2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6YXBwbHkp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpwYXR0ZXJuRm9yRGVzY3JpcHRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUaGVtZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFN5
c3RlbVByZXZpZXdCYWRnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50UHJvZ3Jlc3NCYXIpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcGU6OmNyZWF0ZVJhc3RlclNoYXBlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlQ2xpcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNv
dXJjZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmJ1aWxkUHJpbWl0aXZlcyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVNYXNrQW5kU3dhcENvbnRleHRGb3JUZXh0R3JhZGllbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2Up
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250ZW50
SW50b01hc2tJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZU1hc2tlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0
ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3Jl
YXRlVGlsZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmlu
Z0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6
YnVmZmVyRm9yZWdyb3VuZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdD
b250ZXh0Lmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJ
bWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVJbWFnZTo6cGxhdGZv
cm1BcHBseVNvZnR3YXJlKToKKwogMjAyMS0wNS0yMiAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogQ29tcG9uZW50IGF0IGluZGV4
IDEgaXMgMS4wMDAwMDAgYW5kIGlzIGdyZWF0ZXIgdGhhbiB0aGUgYWxsb3dlZCBtYXhpbXVtIDEu
MDAwMDAwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTExOTcsNiArMTE5Nyw3
IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9EYXNo
QXJyYXkuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0RlY29kaW5nT3B0aW9ucy5oCisgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3Bs
YXlSZWZyZXNoTW9uaXRvckNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJl
ZnJlc2hNb25pdG9yRmFjdG9yeS5oCkBAIC0xMjkzLDYgKzEyOTQsNyBAQCBzZXQoV2ViQ29yZV9Q
UklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZm
ZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0LmgKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9QaXhlbEZvcm1hdC5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZv
cm1Db2xvclNwYWNlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2UuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtSW1hZ2VCdWZmZXIuaApJbmRleDogU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
OTUwLDYgKzE5NTAsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAogcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3JVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4
VGV4dENvbnRyb2xsZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJ
bWFnZS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlw
Ym9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdz
RGF0YVNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NSw3ICsyODUsNyBAQCB2b2lkIENs
aXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2U6OkNsCiAKICAgICAgICAgYXV0byBiaXRtYXBJ
bWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICAgICAgYml0bWFwSW1hZ2UtPnNldERh
dGEoV1RGTW92ZShidWZmZXJUb1Nhbml0aXplKSwgdHJ1ZSk7Ci0gICAgICAgIGF1dG8gaW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJpdG1hcEltYWdlLT5zaXplKCksIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CiAgICAgICAgIGlmICghaW1hZ2VCdWZmZXIpIHsKICAgICAgICAgICAgIG1fZGF0YSA9IHsgbnVs
bFN0cmluZygpIH07CiAgICAgICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFN
ZXRhZGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBBcnR3b3Jr
SW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlclRvU2FuaXRpemUgPSBtX2NhY2hlZEltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CiAgICAgYXV0
byBiaXRtYXBJbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICBiaXRtYXBJbWFnZS0+
c2V0RGF0YShXVEZNb3ZlKGJ1ZmZlclRvU2FuaXRpemUpLCB0cnVlKTsKLSAgICBhdXRvIGltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJp
bmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBp
eGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwg
MSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAg
ICAgaWYgKCFpbWFnZUJ1ZmZlcikgewogICAgICAgICBtX2NhbGxiYWNrKG51bGxwdHIpOwogICAg
ICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzkyMCkKKysr
IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MyBAQAorMjAyMS0wNS0yMiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAg
ICAgQ29udmVydCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdy
YXBwaW5nIGEgcGxhdGZvcm0gY29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9y
dHMsIGV0Yy4pCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjYxNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg6CisgICAgICAgIEFkZCBhZGRpb25hbCBT
UEkgZm9yIHdvcmtpbmcgd2l0aCBDR0NvbG9yU3BhY2VSZWZzLgorCiAyMDIxLTA1LTIxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gQWRv
cHQgUUxJdGVtIGluIFdLSW1hZ2VFeHRyYWN0aW9uUHJldmlld0NvbnRyb2xsZXIKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhp
Y3NTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtMjQyLDYgKzI0Miw3IEBAIHR5cGVkZWYgdm9pZCAo
KkNHU05vdGlmeVByb2NQdHIpKENHU05vdGkKIAogV1RGX0VYVEVSTl9DX0JFR0lOCiAKK2Jvb2wg
Q0dDb2xvclRyYW5zZm9ybUNvbnZlcnRDb2xvckNvbXBvbmVudHMoQ0dDb2xvclRyYW5zZm9ybVJl
ZiwgQ0dDb2xvclNwYWNlUmVmLCBDR0NvbG9yUmVuZGVyaW5nSW50ZW50LCBjb25zdCBDR0Zsb2F0
IHNyY0NvbXBvbmVudHNbXSwgQ0dGbG9hdCBkc3RDb21wb25lbnRzW10pOwogQ0dDb2xvclJlZiBD
R0NvbG9yVHJhbnNmb3JtQ29udmVydENvbG9yKENHQ29sb3JUcmFuc2Zvcm1SZWYsIENHQ29sb3JS
ZWYsIENHQ29sb3JSZW5kZXJpbmdJbnRlbnQpOwogQ0dDb2xvclRyYW5zZm9ybVJlZiBDR0NvbG9y
VHJhbnNmb3JtQ3JlYXRlKENHQ29sb3JTcGFjZVJlZiwgQ0ZEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0
ZXMpOwogCkBAIC0yOTEsNiArMjkyLDggQEAgQ0dTdHlsZVJlZiBDR0dTdGF0ZUdldFN0eWxlKENH
R1N0YXRlUmVmKQogQ0dTdHlsZVR5cGUgQ0dTdHlsZUdldFR5cGUoQ0dTdHlsZVJlZik7CiBjb25z
dCB2b2lkICpDR1N0eWxlR2V0RGF0YShDR1N0eWxlUmVmKTsKIENHQ29sb3JSZWYgQ0dTdHlsZUdl
dENvbG9yKENHU3R5bGVSZWYpOworYm9vbCBDR0NvbG9yU3BhY2VFcXVhbFRvQ29sb3JTcGFjZShD
R0NvbG9yU3BhY2VSZWYsIENHQ29sb3JTcGFjZVJlZik7CitDRlN0cmluZ1JlZiBDR0NvbG9yU3Bh
Y2VDb3B5SUNDUHJvZmlsZURlc2NyaXB0aW9uKENHQ29sb3JTcGFjZVJlZik7CiAKICNpZiBIQVZF
KENHUEFUSF9HRVRfTlVNQkVSX09GX0VMRU1FTlRTKQogc2l6ZV90IENHUGF0aEdldE51bWJlck9m
RWxlbWVudHMoQ0dQYXRoUmVmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMzk5Niw2ICszOTk2LDcgQEAKIAkJQkMyM0YwREIwREFGRjRBNDAwOUZEQzkxIC8qIEdlbmVy
YXRlZEltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzIzRjBEQTBEQUZGNEE0MDA5RkRDOTEgLyogR2VuZXJhdGVkSW1hZ2UuaCAqLzsgfTsKIAkJ
QkMyNzRCMkYxNDBFQkVCMjAwRUFERkE2IC8qIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNzRCMkUxNDBF
QkVCMjAwRUFERkE2IC8qIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oICovOyB9OwogCQlCQzJD
QkY0RTE0MEYxQUJEMDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyQ0JGNEIxNDBGMUE2NTAwMzg3
OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuaCAqLzsgfTsKKwkJQkMyQ0NBMTAyNjU1RERCMjAw
QjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyQ0NBMEUyNjU1RERCMjAwQjhDMDM1IC8qIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUJDMzA1QzdBMEMwNzZCQjMwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVt
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMw
NUM3ODBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudC5oICovOyB9OwogCQlC
QzM0OEJENDBEQjdGODA0MDA0QUJBQjkgLyogSlNYTUxIdHRwUmVxdWVzdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzNDhCRDIwREI3RjgwNDAwNEFC
QUI5IC8qIEpTWE1MSHR0cFJlcXVlc3QuaCAqLzsgfTsKIAkJQkMzNDhCRDQwREI3RjgwNDAwNEFC
QUJBIC8qIFdlYkNvcmVKU0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzM0OEJEMjBEQjdGODA0MDA0QUJBQkEgLyogV2ViQ29yZUpTQnVp
bHRpbnMuaCAqLzsgfTsKQEAgLTQwMDcsNiArNDAwOCw3IEBACiAJCUJDM0JFOTk5MEU5QzFFNUQw
MDgzNTU4OCAvKiBSZW5kZXJTY3JvbGxiYXJUaGVtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzQkU5OTgwRTlDMUU1RDAwODM1NTg4IC8qIFJlbmRl
clNjcm9sbGJhclRoZW1lLmggKi87IH07CiAJCUJDM0MzOUI3MEMwRDNEOEQwMDVGNEQ3QSAvKiBK
U01lZGlhTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkMzQzM5QjUwQzBEM0Q4RDAwNUY0RDdBIC8qIEpTTWVkaWFMaXN0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMzRDg1QkMxQzBFMkU3QTAw
RDNCNjEwIC8qIEpTSFRNTFBpY3R1cmVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzgwOEIxMzFDMEUyQjM1MDA2NkZENkIgLyogSlNIVE1M
UGljdHVyZUVsZW1lbnQuaCAqLzsgfTsKKwkJQkMzRTYyNDMyNjU5NzkxODAwNTQ4QUNEIC8qIFBs
YXRmb3JtQ29sb3JTcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMzRTYyNDIyNjU5NzkxNzAwNTQ4QUNEIC8qIFBsYXRmb3JtQ29sb3JTcGFjZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDNDM2
OEU4MEMyMjZFMzIwMDVFRkI1RiAvKiBSZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzQzNjhFNzBDMjI2RTMyMDA1RUZCNUYgLyogUmVjdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDNDZDMUZE
MEMwRERDOEYwMDIwQ0ZDMyAvKiBKU0NTU0ZvbnRGYWNlUnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM0NkMxRjMwQzBEREM4RjAwMjBDRkMzIC8q
IEpTQ1NTRm9udEZhY2VSdWxlLmggKi87IH07CiAJCUJDNDZDMUZGMEMwRERDOEYwMDIwQ0ZDMyAv
KiBKU0NTU0ltcG9ydFJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDNDZDMUY1MEMwRERDOEYwMDIwQ0ZDMyAvKiBKU0NTU0ltcG9ydFJ1bGUuaCAq
LzsgfTsKQEAgLTE0MTM0LDYgKzE0MTM2LDggQEAKIAkJQkMyOTkzNUMxN0ExREQ1ODAwQkNFODgw
IC8qIENvbG9ySW5wdXRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENvbG9ySW5wdXRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMy
Q0JGNEIxNDBGMUE2NTAwMzg3OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJHTENvbnRleHRFdmVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQzJDQkY3QTE0MEYxRDU4MDAzODc5QkUgLyogSlNXZWJHTENv
bnRleHRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dl
YkdMQ29udGV4dEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQ0NB
MEUyNjU1RERCMjAwQjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQkMyQ0NBMEYyNjU1RERCMjAwQjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQzJFRDU1NDBDNkI5QkQzMDA5MjBCRkYgLyogSlNFbGVtZW50
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRWxlbWVu
dEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMkVENkJCMEM2QkQy
RjAwMDkyMEJGRiAvKiBKU0F0dHJDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNBdHRyQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkMzMDVDNzcwQzA3NkJCMzAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1lbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTE9iamVjdEVsZW1lbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQxNTcsNiArMTQxNjEsNyBAQAog
CQlCQzNCRTlBQTBFOUMyNDIwMDA4MzU1ODggLyogUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJTY3JvbGxiYXJQYXJ0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzQzM5QjQwQzBEM0Q4RDAwNUY0RDdB
IC8qIEpTTWVkaWFMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU01lZGlhTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDM0MzOUI1
MEMwRDNEOEQwMDVGNEQ3QSAvKiBKU01lZGlhTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNNZWRpYUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QkMzRTYyNDIyNjU5NzkxNzAwNTQ4QUNEIC8qIFBsYXRmb3JtQ29sb3JTcGFjZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUNvbG9yU3BhY2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM0MzY4RTcwQzIyNkUzMjAwNUVGQjVGIC8qIFJlY3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlY3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkM0NkMxRUQwQzBEREJERjAwMjBDRkMzIC8qIEpTQ1NTUnVsZUN1c3Rv
bS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDU1NSdWxlQ3Vz
dG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM0NkMxRjIwQzBEREM4RjAw
MjBDRkMzIC8qIEpTQ1NTRm9udEZhY2VSdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0NTU0ZvbnRGYWNlUnVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yNjkyNSw2ICsyNjkzMCw4IEBACiAJCQkJMkQyRkMwNTUxNDYwQ0Q2RjAwMjYz
NjMzIC8qIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmggKi8sCiAJCQkJQThDQjQxMDIwRTg1QjhB
NTAwMzJDNEYwIC8qIERhc2hBcnJheS5oICovLAogCQkJCTU1NTEzMDAwMUU3Q0NDQ0EwMEE2OUUz
OCAvKiBEZWNvZGluZ09wdGlvbnMuaCAqLywKKwkJCQlCQzJDQ0EwRjI2NTVEREIyMDBCOEMwMzUg
LyogRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcCAqLywKKwkJCQlCQzJDQ0EwRTI2NTVEREIyMDBC
OEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmggKi8sCiAJCQkJNDlGQzdBNEYxNDQ0QUY1
RjAwQTVEODY0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAgKi8sCiAJCQkJNDlBRjJENjgx
NDQzNUQwNTAwMTZBNzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5oICovLAogCQkJCTJEMjlF
Q0MxMTkyRUNDODMwMDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuY3BwICov
LApAQCAtMjcxMDEsNiArMjcxMDgsNyBAQAogCQkJCUJDNjM1RThCMjY0QzJDQUUwMDBFRjMzQSAv
KiBQaXhlbEJ1ZmZlckZvcm1hdC5oICovLAogCQkJCUJDNjM1RTkwMjY0QzQ2OUYwMDBFRjMzQSAv
KiBQaXhlbEZvcm1hdC5jcHAgKi8sCiAJCQkJQkNBNTU5MTIyNjNEQkQ3OTAwN0YxOUIzIC8qIFBp
eGVsRm9ybWF0LmggKi8sCisJCQkJQkMzRTYyNDIyNjU5NzkxNzAwNTQ4QUNEIC8qIFBsYXRmb3Jt
Q29sb3JTcGFjZS5oICovLAogCQkJCTcyNkQ1NkUxMjUzQUUwNDMwMDAyRUY5MCAvKiBQbGF0Zm9y
bUltYWdlLmggKi8sCiAJCQkJNzJCQUMzQTYyM0UxNzMyODAwOEQ3NDFDIC8qIFBsYXRmb3JtSW1h
Z2VCdWZmZXIuaCAqLywKIAkJCQk1NTA2NDBBRDI0MDc1NkRBMDBBQUUwNDUgLyogUGxhdGZvcm1J
bWFnZUJ1ZmZlckJhY2tlbmQuaCAqLywKQEAgLTMyMjMwLDYgKzMyMjM4LDcgQEAKIAkJCQk5NDc5
NDkyNTFFMDMwOEFGMDAwMThEODUgLyogRGVwcmVjYXRlZENTU09NVmFsdWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk0Nzk0OTNEMUUwNDYzQjYwMDAxOEQ4NSAvKiBEZXByZWNhdGVkQ1NTT01WYWx1
ZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDQkQxMjlFMUY5OEI5MEUwMDEyN0QyOSAvKiBE
ZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMkNDQTEwMjY1
NUREQjIwMEI4QzAzNSAvKiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxMTIyM0M1MjYwMzU2N0QwMEIwQTBCNiAvKiBEZXRhY2hlZFJUQ0RhdGFDaGFubmVsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBN0M5QUJGOTEzNTdBM0JGMDBGNTUwM0YgLyogRGV0YWlsc01h
cmtlckNvbnRyb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRUQ3NzhEMUJFMzI5NDAwMERDMTc5
MSAvKiBEZXZpY2UuaCBpbiBIZWFkZXJzICovLApAQCAtMzIyODEsNiArMzIyOTAsNyBAQAogCQkJ
CTFDRThEMTI3MjYxODVDMEUwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1RkJENTFDM0RENTFFMDAwN0EyQ0EgLyogRGlz
cGxheUxpc3RJdGVtcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQzNzdENTcyNTUxQzlDNjAwODBB
QkZFIC8qIERpc3BsYXlMaXN0SXRlbVR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDM0U2MjQz
MjY1OTc5MTgwMDU0OEFDRCAvKiBQbGF0Zm9ybUNvbG9yU3BhY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFDRThEMTJFMjYxODYxQzQwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZXJhdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkU1RkJENzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RS
ZWNvcmRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFNUZCRDkxQzNERDUxRTAwMDdBMkNBIC8q
IERpc3BsYXlMaXN0UmVwbGF5ZXIuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgyLDcgKzEwODIsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUGl4ZWxCdWZmZXJG
b3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4
ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICAgICAg
UGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVs
dGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSB9OwogICAgICAgICBjb25zdCBJbnRTaXplJiBsb2dpY2FsU2l6ZSA9IGJ1ZmZlci0+bG9naWNh
bFNpemUoKTsKICAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGJ1ZmZlci0+Z2V0UGl4ZWxCdWZm
ZXIoZm9ybWF0LCB7IEludFBvaW50Ojp6ZXJvKCksIGxvZ2ljYWxTaXplIH0pOwogICAgICAgICBp
ZiAoIXBpeGVsQnVmZmVyKSB7CkBAIC0zMTg3LDcgKzMxODcsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAgICAgICAgfQogCi0gICAgICAgIFBpeGVsQnVmZmVy
Rm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIFBp
eGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgICAg
IFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11
bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCkgfTsKICAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUo
Zm9ybWF0LCBpbWFnZURhdGFTaXplLCBhcnJheUJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKICAg
ICAgICAgaWYgKCFwaXhlbEJ1ZmZlcikgewogICAgICAgICAgICAgZmFpbCgpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAkocmV2aXNpb24gMjc3OTE5
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTYsNyArMTE2LDcgQEAgUmVmUHRyPEltYWdlPiBDU1NGaWx0ZXJJbWFnZVZh
bHVlOjppbWFnZQogCiAgICAgLy8gVHJhbnNmb3JtIEltYWdlIGludG8gSW1hZ2VCdWZmZXIuCiAg
ICAgLy8gRklYTUUgKDE0OTQyNCk6IFRoaXMgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRp
b25hbGx5IHVuYWNjZWxlcmF0ZWQuCi0gICAgYXV0byB0ZXh0dXJlID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byB0ZXh0dXJlID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAg
ICBpZiAoIXRleHR1cmUpCiAgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDcgQEAgSW1hZ2UqIEN1c3RvbVBhaW50Q2FudmFzOjpj
b3BpZWRJbWFnZSgpIAogICAgIGlmICghd2lkdGgoKSB8fCAhaGVpZ2h0KCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgbV9jb3BpZWRCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KHNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgsIG51bGxwdHIpOworICAgIG1fY29waWVk
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6
QkdSQTgsIG51bGxwdHIpOwogICAgIGlmICghbV9jb3BpZWRCdWZmZXIpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50SW1hZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRJbWFnZS5j
cHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRJ
bWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIEN1c3RvbVBh
aW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoCiAgICAgYWRqdXN0ZWRQYXR0ZXJuQ1RNLnNjYWxl
KDEuMCAvIHhTY2FsZSwgMS4wIC8geVNjYWxlKTsKICAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUo
eFNjYWxlLCB5U2NhbGUpOwogCi0gICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QiwgZGVzdENvbnRleHQpOworICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNv
bXBhdGlibGVCdWZmZXIoYWRqdXN0ZWRTaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgZGVzdENvbnRleHQpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm47CiAgICAg
ZG9DdXN0b21QYWludChidWZmZXItPmNvbnRleHQoKSwgYWRqdXN0ZWRTaXplKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODI1LDcgKzgyNSw3IEBAIFJlZlB0cjxNZWRpYVNhbXBsZT4gSFRNTENhbnZhc0Vs
ZW1lbnQ6OnQKICAgICAvLyBGSVhNRTogVGhpcyBjYW4gbGlrZWx5IGJlIG9wdGltaXplZCBxdWl0
ZSBhIGJpdCwgZXNwZWNpYWxseSBpbiB0aGUgY2FzZXMgd2hlcmUKICAgICAvLyB0aGUgSW1hZ2VC
dWZmZXIgaXMgYmFja2VkIGJ5IEdQVSBtZW1vcnkgYWxyZWFkeSBhbmQvb3IgaXMgaW4gdGhlIEdQ
VSBwcm9jZXNzIGJ5CiAgICAgLy8gc3BlY2lhbGl6aW5nIHRvTWVkaWFTYW1wbGUoKSBpbiBJbWFn
ZUJ1ZmZlckJhY2tlbmQgdG8gbm90IHVzZSBnZXRQaXhlbEJ1ZmZlcigpLgotICAgIGF1dG8gcGl4
ZWxCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoeyBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCIH0sIHsgeyB9LCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSB9KTsK
KyAgICBhdXRvIHBpeGVsQnVmZmVyID0gaW1hZ2VCdWZmZXItPmdldFBpeGVsQnVmZmVyKHsgQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6QkdSQTgs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH0sIHsgeyB9LCBpbWFnZUJ1ZmZlci0+bG9n
aWNhbFNpemUoKSB9KTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIApAQCAtOTU1LDcgKzk1NSw3IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0
ZUltYWdlQnVmZmUKICAgICBhdXRvIFtjb2xvclNwYWNlLCBwaXhlbEZvcm1hdF0gPSBbJl0gewog
ICAgICAgICBpZiAobV9jb250ZXh0KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6cGFpciB7IG1f
Y29udGV4dC0+Y29sb3JTcGFjZSgpLCBtX2NvbnRleHQtPnBpeGVsRm9ybWF0KCkgfTsKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6cGFpciB7IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxG
b3JtYXQ6OkJHUkE4IH07CisgICAgICAgIHJldHVybiBzdGQ6OnBhaXIgeyBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4IH07CiAgICAgfSgpOwogCiAgICAg
c2V0SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIHJlbmRlcmluZ01vZGUs
IHVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJwb3NlOjpDYW52YXMsIDEsIGNvbG9yU3BhY2Us
IHBpeGVsRm9ybWF0LCBob3N0V2luZG93KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxWaWRlb0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MSw3ICsyODEsNyBA
QCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6Om1lZGlhUGxheWVyRmlyc3RWCiAgICAgICAgIHJlbmRl
cmVyLT51cGRhdGVGcm9tRWxlbWVudCgpOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IEhUTUxW
aWRlb0VsZW1lbnQ6OmNyZWF0ZUJ1ZmZlckZvclBhaW50aW5nKGNvbnN0IEZsb2F0U2l6ZSYgc2l6
ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CitSZWZQdHI8SW1hZ2VCdWZm
ZXI+IEhUTUxWaWRlb0VsZW1lbnQ6OmNyZWF0ZUJ1ZmZlckZvclBhaW50aW5nKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KSBjb25zdAog
ewogICAgIGF1dG8qIGhvc3RXaW5kb3cgPSBkb2N1bWVudCgpLnZpZXcoKSAmJiBkb2N1bWVudCgp
LnZpZXcoKS0+cm9vdCgpID8gZG9jdW1lbnQoKS52aWV3KCktPnJvb3QoKS0+aG9zdFdpbmRvdygp
IDogbnVsbHB0cjsKICAgICBhdXRvIHNob3VsZFVzZURpc3BsYXlMaXN0ID0gZG9jdW1lbnQoKS5z
ZXR0aW5ncygpLmRpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWQoKSA/IFNob3VsZFVzZURpc3BsYXlM
aXN0OjpZZXMgOiBTaG91bGRVc2VEaXNwbGF5TGlzdDo6Tm87CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEyICszMywx
MiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTsKIGNsYXNzIEhUTUxJbWFnZUxvYWRlcjsKIGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgUmVu
ZGVyVmlkZW87CiBjbGFzcyBQaWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXI7CiAKLWVudW0gY2xhc3Mg
RGVzdGluYXRpb25Db2xvclNwYWNlIDogdWludDhfdDsKIGVudW0gY2xhc3MgUGl4ZWxGb3JtYXQg
OiB1aW50OF90OwogZW51bSBjbGFzcyBSZW5kZXJpbmdNb2RlIDogYm9vbDsKIApAQCAtNzIsNyAr
NzIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpIG92ZXJy
aWRlOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUJ1ZmZlckZvclBh
aW50aW5nKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0OworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRl
QnVmZmVyRm9yUGFpbnRpbmcoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiwgUGl4ZWxGb3JtYXQpIGNvbnN0OwogCiAgICAgLy8gVXNl
ZCBieSBjYW52YXMgdG8gZ2FpbiByYXcgcGl4ZWwgYWNjZXNzCiAgICAgdm9pZCBwYWludEN1cnJl
bnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlQml0bWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQs
MTIgKzg0LDEyIEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCaXRtYXA6OmNyZWF0ZUkKICAg
ICAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCk7CiAgICAgICAgIGlmIChkb2N1bWVudC52aWV3KCkgJiYgZG9jdW1lbnQudmlldygp
LT5yb290KCkpIHsKICAgICAgICAgICAgIGF1dG8gaG9zdFdpbmRvdyA9IGRvY3VtZW50LnZpZXco
KS0+cm9vdCgpLT5ob3N0V2luZG93KCk7Ci0gICAgICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6Tm8sIFJl
bmRlcmluZ1B1cnBvc2U6OkNhbnZhcywgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCwgaG9zdFdpbmRvdyk7CisgICAgICAgICAg
ICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCBTaG91bGRV
c2VEaXNwbGF5TGlzdDo6Tm8sIFJlbmRlcmluZ1B1cnBvc2U6OkNhbnZhcywgcmVzb2x1dGlvblNj
YWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBo
b3N0V2luZG93KTsKICAgICAgICAgfQogICAgIH0KIAogICAgIC8vIEZJWE1FIDxodHRwczovL3dl
YmtpdC5vcmcvYi8yMTg0ODI+IEVuYWJsZSB3b3JrZXIgYmFzZWQgSW1hZ2VCaXRtYXAgYW5kIE9m
ZnNjcmVlbkNhbnZhcyBkcmF3aW5nIHRvIHVzZSBHUFUgUHJvY2VzcyByZW5kZXJpbmcKLSAgICBy
ZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9u
U2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
KyAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCByZXNv
bHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6
QkdSQTgpOwogfQogCiB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEltYWdlQml0bWFwOjpTb3VyY2Um
JiBzb3VyY2UsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIEltYWdlQml0bWFwOjpQcm9t
aXNlJiYgcHJvbWlzZSkKQEAgLTUwNCw3ICs1MDQsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVh
dGVQcm9taXNlKFNjcmlwdEV4CiAgICAgYXV0byBvdXRwdXRTaXplID0gb3V0cHV0U2l6ZUZvclNv
dXJjZVJlY3RhbmdsZShzb3VyY2VSZWN0YW5nbGUsIG9wdGlvbnMpOwogCiAgICAgLy8gRklYTUU6
IEFkZCBzdXBwb3J0IGZvciBjb2xvciBzcGFjZXMgLyBwaXhlbCBmb3JtYXRzIHRvIEltYWdlQml0
bWFwLgotICAgIGF1dG8gYml0bWFwRGF0YSA9IHZpZGVvLT5jcmVhdGVCdWZmZXJGb3JQYWludGlu
ZyhvdXRwdXRTaXplLCBidWZmZXJSZW5kZXJpbmdNb2RlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBiaXRtYXBEYXRhID0gdmlkZW8t
PmNyZWF0ZUJ1ZmZlckZvclBhaW50aW5nKG91dHB1dFNpemUsIGJ1ZmZlclJlbmRlcmluZ01vZGUs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAg
IGlmICghYml0bWFwRGF0YSkgewogICAgICAgICByZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZmZXIo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgIXRhaW50c09yaWdpbihzY3JpcHRFeGVjdXRpb25Db250
ZXh0LnNlY3VyaXR5T3JpZ2luKCksICp2aWRlbyksIFdURk1vdmUocHJvbWlzZSkpOwogICAgICAg
ICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCShy
ZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1MSwxNCArNDUxLDE0IEBAIHZvaWQgT2Zmc2NyZWVuQ2Fu
dmFzOjpjb21taXRUb1BsYWNlaG9sZGUKICAgICAgICAgbV9jb250ZXh0LT5wYWludFJlbmRlcmlu
Z1Jlc3VsdHNUb0NhbnZhcygpOwogCiAgICAgaWYgKG1fcGxhY2Vob2xkZXJEYXRhLT5idWZmZXJQ
aXBlU291cmNlKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyQ29weSA9IGltYWdlQnVmZmVyLT5jb3B5
UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2Fs
U2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBpbWFnZUJ1ZmZlci0+Y29udGV4
dCgpKTsKKyAgICAgICAgYXV0byBidWZmZXJDb3B5ID0gaW1hZ2VCdWZmZXItPmNvcHlSZWN0VG9C
dWZmZXIoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkp
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7
CiAgICAgICAgIGlmIChidWZmZXJDb3B5KQogICAgICAgICAgICAgbV9wbGFjZWhvbGRlckRhdGEt
PmJ1ZmZlclBpcGVTb3VyY2UtPmhhbmRsZShXVEZNb3ZlKGJ1ZmZlckNvcHkpKTsKICAgICB9CiAK
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wbGFjZWhvbGRlckRhdGEtPmJ1ZmZlckxvY2sgfTsKICAg
ICBib29sIHNob3VsZFB1c2hCdWZmZXIgPSAhbV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21t
aXRCdWZmZXI7Ci0gICAgbV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRCdWZmZXIgPSBp
bWFnZUJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFn
ZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgaW1h
Z2VCdWZmZXItPmNvbnRleHQoKSk7CisgICAgbV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21t
aXRCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihGbG9hdFJlY3QoRmxvYXRQ
b2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKICAgICBpZiAobV9wbGFjZWhvbGRl
ckRhdGEtPnBlbmRpbmdDb21taXRCdWZmZXIgJiYgc2hvdWxkUHVzaEJ1ZmZlcikKICAgICAgICAg
cHVzaEJ1ZmZlclRvUGxhY2Vob2xkZXIoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUg
IkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMu
aCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eVBhcnNlcldvcmtlclNhZmUuaCIKLSNpbmNsdWRlICJD
b2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiR3JhZGllbnQuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZl
ci5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlICJDYWNo
ZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNhbnZhc1BhdHRlcm4uaCIKLSNpbmNsdWRlICJDb2xvclNw
YWNlLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiSFRN
TENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpAQCAtOTAsNyArOTAsNyBAQCBQaXhlbEZvcm1hdCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0OjpwaXhlCiAKIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0Ojpjb2xvclNwYWNlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCOworICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKTsKIH0KIAogYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojp3b3VsZFRhaW50T3Jp
Z2luKGNvbnN0IENhbnZhc1BhdHRlcm4qIHBhdHRlcm4pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCShyZXZpc2lvbiAy
Nzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEzICszNywxMyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDYW52YXNQYXR0ZXJuOworY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNl
OwogY2xhc3MgSFRNTENhbnZhc0VsZW1lbnQ7CiBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogY2xh
c3MgSFRNTFZpZGVvRWxlbWVudDsKIGNsYXNzIEltYWdlQml0bWFwOwogY2xhc3MgVHlwZWRPTUNT
U0ltYWdlVmFsdWU7CiBjbGFzcyBXZWJHTE9iamVjdDsKLWVudW0gY2xhc3MgRGVzdGluYXRpb25D
b2xvclNwYWNlIDogdWludDhfdDsKIGVudW0gY2xhc3MgUGl4ZWxGb3JtYXQgOiB1aW50OF90Owog
CiBjbGFzcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0IDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0Nv
bnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdl
Qml0bWFwUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRl
eHQ6OnNldE91dAogICAgICAgICAvLyBvbmx5IHJlYXNvbiBJIGNhbiB0aGluayBvZiBpcyB0b0Rh
dGFVUkwoKSwgYnV0IHRoYXQgZG9lc24ndCBzZWVtIGxpa2UKICAgICAgICAgLy8gYSBnb29kIGVu
b3VnaCBhcmd1bWVudCB0byB3YXN0ZSBtZW1vcnkuCiAKLSAgICAgICAgY2FudmFzKCktPnNldElt
YWdlQnVmZmVyQW5kTWFya0RpcnR5KEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKGNhbnZh
cygpLT53aWR0aCgpLCBjYW52YXMoKS0+aGVpZ2h0KCkpLCBidWZmZXJSZW5kZXJpbmdNb2RlLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCkpOworICAg
ICAgICBjYW52YXMoKS0+c2V0SW1hZ2VCdWZmZXJBbmRNYXJrRGlydHkoSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShGbG9hdFNpemUoY2FudmFzKCktPndpZHRoKCksIGNhbnZhcygpLT5oZWlnaHQoKSksIGJ1
ZmZlclJlbmRlcmluZ01vZGUsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhl
bEZvcm1hdDo6QkdSQTgpKTsKIAogICAgICAgICAvLyAxLjQuIFNldCB0aGUgb3V0cHV0IGJpdG1h
cCdzIG9yaWdpbi1jbGVhbiBmbGFnIHRvIHRydWUuCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5jcHAJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlByZWRlZmluZWRDb2xvclNwYWNlLmgiCiAKLSNpbmNsdWRlICJDb2xvclNw
YWNlLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM1LDMzICszNSwyNiBAQCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgdG9EZXN0aW5hdGlvbkNvbG9yCiB7CiAgICAgc3dpdGNoIChj
b2xvclNwYWNlKSB7CiAgICAgY2FzZSBQcmVkZWZpbmVkQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAg
ICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjsKKyAgICAgICAgcmV0dXJuIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOwogI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xP
Ul9TUEFDRV9ESVNQTEFZX1AzKQogICAgIGNhc2UgUHJlZGVmaW5lZENvbG9yU3BhY2U6OkRpc3Bs
YXlQMzoKLSAgICAgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxheVAzOwor
ICAgICAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDMoKTsKICNlbmRp
ZgogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0I7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpOwogfQogCi1PcHRpb25hbDxQcmVkZWZpbmVkQ29sb3JTcGFjZT4gdG9QcmVkZWZpbmVk
Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkKK09wdGlvbmFsPFBy
ZWRlZmluZWRDb2xvclNwYWNlPiB0b1ByZWRlZmluZWRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkKIHsKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsK
LSAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjoKKyAgICBpZiAoY29sb3JTcGFj
ZSA9PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSkKICAgICAgICAgcmV0dXJuIFByZWRl
ZmluZWRDb2xvclNwYWNlOjpTUkdCOwotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFD
RV9MSU5FQVJfU1JHQikKLSAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JH
QjoKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSNlbmRpZgogI2lmIEVOQUJMRShERVNU
SU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpEaXNwbGF5UDM6CisgICAgaWYgKGNvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xv
clNwYWNlOjpEaXNwbGF5UDMoKSkKICAgICAgICAgcmV0dXJuIFByZWRlZmluZWRDb2xvclNwYWNl
OjpEaXNwbGF5UDM7CiAjZW5kaWYKLSAgICB9CiAKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmgJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1l
bnVtIGNsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7CitjbGFzcyBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U7CiAKIGVudW0gY2xhc3MgUHJlZGVmaW5lZENvbG9yU3BhY2UgewogICAg
IFNSR0IKQEAgLTQwLDcgKzQwLDcgQEAgZW51bSBjbGFzcyBQcmVkZWZpbmVkQ29sb3JTcGFjZSB7
CiB9OwogCiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgdG9EZXN0aW5hdGlvbkNvbG9yU3BhY2UoUHJl
ZGVmaW5lZENvbG9yU3BhY2UpOwotT3B0aW9uYWw8UHJlZGVmaW5lZENvbG9yU3BhY2U+IHRvUHJl
ZGVmaW5lZENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlKTsKK09wdGlvbmFsPFByZWRl
ZmluZWRDb2xvclNwYWNlPiB0b1ByZWRlZmluZWRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYpOwogCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCShyZXZpc2lvbiAyNzc5
MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYyMyw3ICs3NjIzLDcgQEAgSW1hZ2VCdWZmZXIq
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OgogICAgIH0KIAogICAgIC8vIEZJWE1FICgxNDk0
MjMpOiBTaG91bGQgdGhpcyBJbWFnZUJ1ZmZlciBiZSB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVy
YXRlZD8KLSAgICBhdXRvIHRlbXAgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIHRlbXAgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNp
emUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghdGVtcCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgQVNTRVJUKG1fYnVmZmVycy5zaXplKCkgPiAwKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5l
ckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250
YWluZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDE4LDcgKzQxOCw3IEBAIFJlZlB0
cjxJbWFnZT4gTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGEKICAgICBJbnRSZWN0IHBhaW50aW5n
UmVjdCA9IEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPnNpemUoKSk7CiAKICAgICAvLyBGSVhN
RSAoMTQ5NDIyKTogVGhpcyBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlvbmFsbHkgdW5h
Y2NlbGVyYXRlZC4KLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUocGFpbnRp
bmdSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgZGV2aWNlU2NhbGVG
YWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
KyAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUocGFpbnRpbmdSZWN0LnNpemUo
KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgZGV2aWNlU2NhbGVGYWN0b3IsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICgh
YnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTQ5LDcgKzExNDksNyBAQCBpbnQgSW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEo
RHVwbGljCiAgICAgICAgICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gaW1hZ2VF
bGVtZW50LT5jYWNoZWRJbWFnZSgpKSB7CiAgICAgICAgICAgICAgICAgSW1hZ2UqIGltYWdlID0g
Y2FjaGVkSW1hZ2UtPmltYWdlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGltYWdlICYmIGltYWdl
ICE9ICZJbWFnZTo6bnVsbEltYWdlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBpbWFn
ZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJh
dGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4
KTsKICAgICAgICAgICAgICAgICAgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5kcmF3SW1hZ2Uo
KmltYWdlLCBGbG9hdFBvaW50KDAsIDApKTsKICAgICAgICAgICAgICAgICAgICAgZGF0YVVSTCA9
IGltYWdlQnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyIpOwogICAgICAgICAgICAgICAgIH0K
QEAgLTExNjMsNyArMTE2Myw3IEBAIGludCBJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YShE
dXBsaWMKIAogICAgICAgICAgICAgdW5zaWduZWQgdmlkZW9XaWR0aCA9IHZpZGVvRWxlbWVudC0+
dmlkZW9XaWR0aCgpOwogICAgICAgICAgICAgdW5zaWduZWQgdmlkZW9IZWlnaHQgPSB2aWRlb0Vs
ZW1lbnQtPnZpZGVvSGVpZ2h0KCk7Ci0gICAgICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUodmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpLCBSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Is
IFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUodmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpLCBSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgICAgIGlmIChpbWFnZUJ1ZmZlcikgewog
ICAgICAgICAgICAgICAgIHZpZGVvRWxlbWVudC0+cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQo
aW1hZ2VCdWZmZXItPmNvbnRleHQoKSwgRmxvYXRSZWN0KDAsIDAsIHZpZGVvV2lkdGgsIHZpZGVv
SGVpZ2h0KSk7CiAgICAgICAgICAgICAgICAgZGF0YVVSTCA9IGltYWdlQnVmZmVyLT50b0RhdGFV
UkwoImltYWdlL3BuZyIpOwpAQCAtMTIwMCw3ICsxMjAwLDcgQEAgaW50IEluc3BlY3RvckNhbnZh
czo6aW5kZXhGb3JEYXRhKER1cGxpYwogICAgICAgICAgICAgaWYgKGF1dG8qIGNhY2hlZEltYWdl
ID0gY3NzSW1hZ2VWYWx1ZS0+aW1hZ2UoKSkgewogICAgICAgICAgICAgICAgIGF1dG8qIGltYWdl
ID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGltYWdlICYmIGlt
YWdlICE9ICZJbWFnZTo6bnVsbEltYWdlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBp
bWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJH
UkE4KTsKICAgICAgICAgICAgICAgICAgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5kcmF3SW1h
Z2UoKmltYWdlLCBGbG9hdFBvaW50KDAsIDApKTsKICAgICAgICAgICAgICAgICAgICAgZGF0YVVS
TCA9IGltYWdlQnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyIpOwogICAgICAgICAgICAgICAg
IH0KQEAgLTE0NDEsNyArMTQ0MSw3IEBAIFJlZjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4g
SW5zcGVjdG8KIHsKICAgICBhdXRvJiB0aWxlSW1hZ2UgPSBjYW52YXNQYXR0ZXJuLnBhdHRlcm4o
KS50aWxlSW1hZ2UoKTsKICAgICBGbG9hdFJlY3QgcmVjdCA9IHsgeyB9LCB0aWxlSW1hZ2Uuc2l6
ZSgpIH07Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGlsZUlt
YWdlLnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gaW1hZ2VCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRpbGVJbWFnZS5zaXplKCksIFJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOwogICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkuZHJhd05hdGl2ZUltYWdl
KHRpbGVJbWFnZSwgdGlsZUltYWdlLnNpemUoKSwgcmVjdCwgcmVjdCk7CiAKICAgICBTdHJpbmcg
cmVwZWF0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjksNyAr
NTI5LDcgQEAgdm9pZCBDaHJvbWU6OnNldEN1cnNvckhpZGRlblVudGlsTW91c2VNbwogICAgIG1f
Y2xpZW50LnNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3ZlcyhoaWRkZW5VbnRpbE1vdXNlTW92
ZXMpOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IENocm9tZTo6Y3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIFJlbmRl
cmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CitSZWZQ
dHI8SW1hZ2VCdWZmZXI+IENocm9tZTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UgcHVy
cG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
IGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KSBjb25zdAogewogICAgIHJldHVy
biBtX2NsaWVudC5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCBwdXJwb3Nl
LCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWUuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRDdXJzb3IoY29uc3QgQ3Vyc29yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDdXJzb3JI
aWRkZW5VbnRpbE1vdXNlTW92ZXMoYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8SW1hZ2VC
dWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUs
IFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xv
clNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEltYWdlQnVm
ZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBS
ZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYsIFBpeGVsRm9ybWF0KSBjb25zdCBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShX
RUJHTCkKICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29udGV4
dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpIGNvbnN0IG92ZXJyaWRlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzks
NyArMzM5LDcgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgRGlzcGxheVJlZnJlc2hNb25p
dG9yRmFjdG9yeSogZGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeSgpIGNvbnN0IHsgcmV0dXJu
IG51bGxwdHI7IH0KIAotICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3Nl
LCBmbG9hdCwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3QgeyByZXR1
cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3Nl
LCBmbG9hdCwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUGl4ZWxGb3JtYXQpIGNvbnN0
IHsgcmV0dXJuIG51bGxwdHI7IH0KIAogI2lmIEVOQUJMRShXRUJHTCkKICAgICB2aXJ0dWFsIFJl
ZlB0cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQpIGNv
bnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVT
bmFwc2hvdHRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVT
bmFwc2hvdHRpbmcuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lU25hcHNob3R0aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw3IEBA
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4gc25hcHNob3RGcmFtZVJlY3RXaXQKICAgICBpZiAob3B0aW9u
cyAmIFNuYXBzaG90T3B0aW9uc1BhaW50V2l0aEludGVncmFsU2NhbGVGYWN0b3IpCiAgICAgICAg
IHNjYWxlRmFjdG9yID0gY2VpbGYoc2NhbGVGYWN0b3IpOwogCi0gICAgYXV0byBidWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIHNjYWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGlt
YWdlUmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIHNjYWxlRmFjdG9y
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAg
ICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYnVmZmVyLT5jb250
ZXh0KCkudHJhbnNsYXRlKC1pbWFnZVJlY3QueCgpLCAtaW1hZ2VSZWN0LnkoKSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb2xvclNhbXBsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHAJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgT3B0aW9uYWw8TGFiPGZsb2F0Pj4gc2FtcGxl
Q29sb3IoCiAgICAgaWYgKCFzbmFwc2hvdCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
IAotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBzbmFwc2hvdC0+Z2V0UGl4ZWxCdWZmZXIoeyBBbHBo
YVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH0sIHsgeyB9LCBzbmFwc2hvdC0+bG9naWNhbFNp
emUoKSB9KTsKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gc25hcHNob3QtPmdldFBpeGVsQnVmZmVy
KHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6
QkdSQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH0sIHsgeyB9LCBzbmFwc2hvdC0+
bG9naWNhbFNpemUoKSB9KTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xp
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xp
ZW50LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29u
c29sZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNiw3ICszMjYsNyBAQCB2b2lkIFBh
Z2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEpTQzo6CiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoYXV0byogY2FjaGVkSW1hZ2UgPSBpbWFnZUVsZW1lbnQuY2FjaGVkSW1hZ2UoKSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8qIGltYWdlID0gY2FjaGVkSW1hZ2UtPmlt
YWdlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGltYWdlICYmIGltYWdlICE9
ICZJbWFnZTo6bnVsbEltYWdlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c25hcHNob3QgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIFJlbmRlcmluZ01v
ZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25hcHNob3Qg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6
QkdSQTgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdC0+Y29udGV4
dCgpLmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UG9pbnQoMCwgMCkpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTM0Myw3ICszNDMs
NyBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEpTQzo6CiAgICAgICAgICAg
ICAgICAgICAgICAgICBhdXRvJiB2aWRlb0VsZW1lbnQgPSBkb3duY2FzdDxIVE1MVmlkZW9FbGVt
ZW50Pigqbm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB2aWRlb1dpZHRo
ID0gdmlkZW9FbGVtZW50LnZpZGVvV2lkdGgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIHZpZGVvSGVpZ2h0ID0gdmlkZW9FbGVtZW50LnZpZGVvSGVpZ2h0KCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBzbmFwc2hvdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXpl
KHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwg
MSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgc25hcHNob3QgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0
U2l6ZSh2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgp
OwogICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9FbGVtZW50LnBhaW50Q3VycmVudEZyYW1l
SW5Db250ZXh0KHNuYXBzaG90LT5jb250ZXh0KCksIEZsb2F0UmVjdCgwLCAwLCB2aWRlb1dpZHRo
LCB2aWRlb0hlaWdodCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAjZW5kaWYKQEAgLTM2OCw3
ICszNjgsNyBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEpTQzo6CiAgICAg
ICAgICAgICB0YXJnZXQgPSBwb3NzaWJsZVRhcmdldDsKICAgICAgICAgICAgIGlmIChVTkxJS0VM
WShJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhhc0Zyb250ZW5kcygpKSkgewogICAgICAgICAg
ICAgICAgIGF1dG8gc291cmNlU2l6ZSA9IGltYWdlRGF0YS0+c2l6ZSgpOwotICAgICAgICAgICAg
ICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzb3VyY2VTaXpl
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byBp
bWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc291cmNlU2l6ZSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVs
Rm9ybWF0OjpCR1JBOCkpIHsKICAgICAgICAgICAgICAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0
KEludFBvaW50KCksIHNvdXJjZVNpemUpOwogICAgICAgICAgICAgICAgICAgICBpbWFnZUJ1ZmZl
ci0+cHV0UGl4ZWxCdWZmZXIoaW1hZ2VEYXRhLT5waXhlbEJ1ZmZlcigpLCBzb3VyY2VSZWN0KTsK
ICAgICAgICAgICAgICAgICAgICAgZGF0YVVSTCA9IGltYWdlQnVmZmVyLT50b0RhdGFVUkwoImlt
YWdlL3BuZyJfcywgV1RGOjpudWxsb3B0LCBQcmVzZXJ2ZVJlc29sdXRpb246Olllcyk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDEwICszMSwxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJzb3I7CitjbGFz
cyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIAogZW51bSBjbGFz
cyBQaXhlbEZvcm1hdCA6IHVpbnQ4X3Q7Ci1lbnVtIGNsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOwogZW51bSBjbGFz
cyBSZW5kZXJpbmdQdXJwb3NlIDogdWludDhfdDsKIApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBJbnRQb2ludCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmlldyhjb25z
dCBJbnRQb2ludCYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEludFJlY3Qgcm9vdFZpZXdUb0Fj
Y2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgSW50UmVjdCYpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1
YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
LCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXpl
JiwgUmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCkgY29uc3QgPSAwOwog
CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIHZpcnR1YWwgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdM
PiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0
ZXMmKSBjb25zdCA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNj
cmVlbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2Ny
ZWVuLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtU2NyZWVuLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAgdHlwZWRlZiBzdHJ1
Y3QgQ0dDb2xvclNwYWNlICpDR0NvbG9yU3BhYwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEZsb2F0
U2l6ZTsKIGNsYXNzIFdpZGdldDsKQEAgLTY4LDYgKzY5LDcgQEAgdXNpbmcgSU9SZWdpc3RyeUdQ
VUlEID0gaW50NjRfdDsgLy8gR2xvYgogaW50IHNjcmVlbkRlcHRoKFdpZGdldCopOwogaW50IHNj
cmVlbkRlcHRoUGVyQ29tcG9uZW50KFdpZGdldCopOwogYm9vbCBzY3JlZW5Jc01vbm9jaHJvbWUo
V2lkZ2V0Kik7CitXRUJDT1JFX0VYUE9SVCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc2NyZWVuQ29s
b3JTcGFjZShXaWRnZXQqID0gbnVsbHB0cik7CiAKIGJvb2wgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xv
cnMoKTsKIApAQCAtMTAwLDEwICsxMDIsNiBAQCBXRUJDT1JFX0VYUE9SVCBib29sIHNjcmVlblN1
cHBvcnRzSGlnaER5CiBjb25zdGV4cHIgYm9vbCBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFu
Z2UoV2lkZ2V0KiA9IG51bGxwdHIpIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAotI2lmIFVT
RShDRykKLVdFQkNPUkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBzY3JlZW5Db2xvclNwYWNlKFdp
ZGdldCogPSBudWxscHRyKTsKLSNlbmRpZgotCiBzdHJ1Y3QgU2NyZWVuUHJvcGVydGllczsKIHN0
cnVjdCBTY3JlZW5EYXRhOwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
ZWVuUHJvcGVydGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cmVlblByb3BlcnRpZXMuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2NyZWVuUHJvcGVydGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAj
aW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKICNpbmNs
dWRlIDx3dGYvRW51bVRyYWl0cy5oPgpAQCAtMzIsMTQgKzMzLDEyIEBACiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi10eXBlZGVm
IHN0cnVjdCBDR0NvbG9yU3BhY2UgKkNHQ29sb3JTcGFjZVJlZjsKLQogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdHJ1Y3QgU2NyZWVuRGF0YSB7CiAgICAgRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJs
ZVJlY3Q7CiAgICAgRmxvYXRSZWN0IHNjcmVlblJlY3Q7Ci0gICAgUmV0YWluUHRyPENHQ29sb3JT
cGFjZVJlZj4gY29sb3JTcGFjZTsKKyAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFj
ZSB7IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgaW50IHNjcmVlbkRlcHRo
IHsgMCB9OwogICAgIGludCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCB7IDAgfTsKICAgICBib29s
IHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciB7IGZhbHNlIH07CkBAIC01NiwxMyArNTUsMTIg
QEAgc3RydWN0IFNjcmVlbkRhdGEgewogICAgIGZsb2F0IHNjYWxlRmFjdG9yIHsgMSB9OwogI2Vu
ZGlmCiAKLSAgICBlbnVtIGNsYXNzIENvbG9yU3BhY2VUeXBlIDogdWludDhfdCB7IE5vbmUsIE5h
bWUsIERhdGEgfTsKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFs
PFNjcmVlbkRhdGE+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCi10eXBlZGVmIEhhc2hNYXA8UGxh
dGZvcm1EaXNwbGF5SUQsIFNjcmVlbkRhdGE+IFNjcmVlbkRhdGFNYXA7Ci0gICAgCit1c2luZyBT
Y3JlZW5EYXRhTWFwID0gSGFzaE1hcDxQbGF0Zm9ybURpc3BsYXlJRCwgU2NyZWVuRGF0YT47CisK
IHN0cnVjdCBTY3JlZW5Qcm9wZXJ0aWVzIHsKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBwcmltYXJ5
RGlzcGxheUlEIHsgMCB9OwogICAgIFNjcmVlbkRhdGFNYXAgc2NyZWVuRGF0YU1hcDsKQEAgLTc0
LDggKzcyLDcgQEAgc3RydWN0IFNjcmVlblByb3BlcnRpZXMgewogdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KIHZvaWQgU2NyZWVuUHJvcGVydGllczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiB7Ci0gICAgZW5jb2RlciA8PCBwcmltYXJ5RGlzcGxheUlEOwotICAgIGVuY29kZXIgPDwg
c2NyZWVuRGF0YU1hcDsKKyAgICBlbmNvZGVyIDw8IHByaW1hcnlEaXNwbGF5SUQgPDwgc2NyZWVu
RGF0YU1hcDsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTk3LDcgKzk0LDcgQEAg
T3B0aW9uYWw8U2NyZWVuUHJvcGVydGllcz4gU2NyZWVuUHJvcGVydAogdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4KIHZvaWQgU2NyZWVuRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiB7Ci0gICAgZW5jb2RlciA8PCBzY3JlZW5BdmFpbGFibGVSZWN0IDw8IHNjcmVlblJlY3QgPDwg
c2NyZWVuRGVwdGggPDwgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQgPDwgc2NyZWVuU3VwcG9ydHNF
eHRlbmRlZENvbG9yIDw8IHNjcmVlbkhhc0ludmVydGVkQ29sb3JzIDw8IHNjcmVlblN1cHBvcnRz
SGlnaER5bmFtaWNSYW5nZTsKKyAgICBlbmNvZGVyIDw8IHNjcmVlbkF2YWlsYWJsZVJlY3QgPDwg
c2NyZWVuUmVjdCA8PCBjb2xvclNwYWNlIDw8IHNjcmVlbkRlcHRoIDw8IHNjcmVlbkRlcHRoUGVy
Q29tcG9uZW50IDw8IHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciA8PCBzY3JlZW5IYXNJbnZl
cnRlZENvbG9ycyA8PCBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2U7CiAKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgZW5jb2RlciA8PCBzY3JlZW5Jc01vbm9jaHJvbWUgPDwgZGlzcGxheU1h
c2sgPDwgZ3B1SUQgPDwgcHJlZmVycmVkRHluYW1pY1JhbmdlTW9kZTsKQEAgLTEwNiwyOCArMTAz
LDYgQEAgdm9pZCBTY3JlZW5EYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcgogI2lmIFBMQVRG
T1JNKE1BQykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBlbmNvZGVyIDw8IHNjYWxlRmFj
dG9yOwogI2VuZGlmCi0KLSAgICBpZiAoY29sb3JTcGFjZSkgewotICAgICAgICAvLyBUcnkgdG8g
ZW5jb2RlIHRoZSBuYW1lLgotICAgICAgICBpZiAoYXV0byBuYW1lID0gYWRvcHRDRihDR0NvbG9y
U3BhY2VDb3B5TmFtZShjb2xvclNwYWNlLmdldCgpKSkpIHsKLSAgICAgICAgICAgIGVuY29kZXIg
PDwgQ29sb3JTcGFjZVR5cGU6Ok5hbWU7Ci0gICAgICAgICAgICBlbmNvZGVyIDw8IFN0cmluZyhu
YW1lLmdldCgpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8v
IEZhaWxpbmcgdGhhdCwganVzdCBlbmNvZGUgdGhlIElDQyBkYXRhLgotICAgICAgICBpZiAoYXV0
byBwcm9maWxlRGF0YSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ29weUlDQ0RhdGEoY29sb3JTcGFj
ZS5nZXQoKSkpKSB7Ci0gICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gaWNjRGF0YTsKLSAgICAg
ICAgICAgIGljY0RhdGEuYXBwZW5kKENGRGF0YUdldEJ5dGVQdHIocHJvZmlsZURhdGEuZ2V0KCkp
LCBDRkRhdGFHZXRMZW5ndGgocHJvZmlsZURhdGEuZ2V0KCkpKTsKLQotICAgICAgICAgICAgZW5j
b2RlciA8PCBDb2xvclNwYWNlVHlwZTo6RGF0YTsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgaWNj
RGF0YTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIFRo
ZSBjb2xvciBzcGFjZSB3YXMgbnVsbCBvciBmYWlsZWQgdG8gYmUgZW5jb2RlZC4KLSAgICBlbmNv
ZGVyIDw8IENvbG9yU3BhY2VUeXBlOjpOb25lOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PgpAQCAtMTQzLDYgKzExOCwxMSBAQCBPcHRpb25hbDxTY3JlZW5EYXRhPiBTY3JlZW5EYXRhOjpk
ZWNvZGUoCiAgICAgaWYgKCFzY3JlZW5SZWN0KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogCisgICAgT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBzY3JlZW5Db2xvclNwYWNl
OworICAgIGRlY29kZXIgPj4gc2NyZWVuQ29sb3JTcGFjZTsKKyAgICBpZiAoIXNjcmVlbkNvbG9y
U3BhY2UpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKICAgICBPcHRpb25hbDxpbnQ+
IHNjcmVlbkRlcHRoOwogICAgIGRlY29kZXIgPj4gc2NyZWVuRGVwdGg7CiAgICAgaWYgKCFzY3Jl
ZW5EZXB0aCkKQEAgLTE5Nyw0MSArMTc3LDEwIEBAIE9wdGlvbmFsPFNjcmVlbkRhdGE+IFNjcmVl
bkRhdGE6OmRlY29kZSgKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICNlbmRpZgogCi0g
ICAgQ29sb3JTcGFjZVR5cGUgZGF0YVR5cGU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRh
VHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBSZXRhaW5QdHI8Q0dD
b2xvclNwYWNlUmVmPiBjZ0NvbG9yU3BhY2U7Ci0gICAgc3dpdGNoIChkYXRhVHlwZSkgewotICAg
IGNhc2UgQ29sb3JTcGFjZVR5cGU6Ok5vbmU6Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ29s
b3JTcGFjZVR5cGU6Ok5hbWU6IHsKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBjb2xvclNwYWNl
TmFtZTsKLSAgICAgICAgZGVjb2RlciA+PiBjb2xvclNwYWNlTmFtZTsKLSAgICAgICAgQVNTRVJU
KGNvbG9yU3BhY2VOYW1lKTsKLSAgICAgICAgaWYgKCFjb2xvclNwYWNlTmFtZSkKLSAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICAgICAgY2dDb2xvclNwYWNlID0gYWRvcHRD
RihDR0NvbG9yU3BhY2VDcmVhdGVXaXRoTmFtZShjb2xvclNwYWNlTmFtZS0+Y3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSkpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDb2xvclNwYWNl
VHlwZTo6RGF0YTogewotICAgICAgICBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGljY0RhdGE7
Ci0gICAgICAgIGRlY29kZXIgPj4gaWNjRGF0YTsKLSAgICAgICAgQVNTRVJUKGljY0RhdGEpOwot
ICAgICAgICBpZiAoIWljY0RhdGEpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
Ci0gICAgICAgIGF1dG8gY29sb3JTcGFjZURhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBpY2NEYXRhLT5kYXRhKCksIGljY0RhdGEtPnNpemUoKSkpOwotICAg
ICAgICBjZ0NvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhJQ0NEYXRh
KGNvbG9yU3BhY2VEYXRhLmdldCgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICB9Ci0K
ICAgICByZXR1cm4geyB7CiAgICAgICAgIFdURk1vdmUoKnNjcmVlbkF2YWlsYWJsZVJlY3QpLAog
ICAgICAgICBXVEZNb3ZlKCpzY3JlZW5SZWN0KSwKLSAgICAgICAgV1RGTW92ZShjZ0NvbG9yU3Bh
Y2UpLAorICAgICAgICBXVEZNb3ZlKCpzY3JlZW5Db2xvclNwYWNlKSwKICAgICAgICAgV1RGTW92
ZSgqc2NyZWVuRGVwdGgpLAogICAgICAgICBXVEZNb3ZlKCpzY3JlZW5EZXB0aFBlckNvbXBvbmVu
dCksCiAgICAgICAgIFdURk1vdmUoKnNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciksCkBAIC0y
NTAsMTYgKzE5OSwzIEBAIE9wdGlvbmFsPFNjcmVlbkRhdGE+IFNjcmVlbkRhdGE6OmRlY29kZSgK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxh
dGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpTY3JlZW5EYXRhOjpDb2xvclNwYWNlVHlw
ZT4gewotICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgICAgIFdlYkNvcmU6OlNj
cmVlbkRhdGE6OkNvbG9yU3BhY2VUeXBlLAotICAgICAgICBXZWJDb3JlOjpTY3JlZW5EYXRhOjpD
b2xvclNwYWNlVHlwZTo6Tm9uZSwKLSAgICAgICAgV2ViQ29yZTo6U2NyZWVuRGF0YTo6Q29sb3JT
cGFjZVR5cGU6Ok5hbWUsCi0gICAgICAgIFdlYkNvcmU6OlNjcmVlbkRhdGE6OkNvbG9yU3BhY2VU
eXBlOjpEYXRhCi0gICAgPjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsNyArMTY0LDcgQEAgUmVmUHRyPE5hdGl2ZUlt
YWdlPiBCaXRtYXBJbWFnZTo6cHJlVHJhbgogICAgICAgICByZXR1cm4gaW1hZ2U7CiAKICAgICBh
dXRvIGNvcnJlY3RlZFNpemVGbG9hdCA9IGNvcnJlY3RlZFNpemUgPyBGbG9hdFNpemUoY29ycmVj
dGVkU2l6ZS52YWx1ZSgpKSA6IHNpemUoKTsKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoY29ycmVjdGVkU2l6ZUZsb2F0LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
LCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7Cisg
ICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvcnJlY3RlZFNpemVGbG9hdCwg
UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJl
dHVybiBpbWFnZTsKIApAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQ
YXR0ZXJuKEdyYXBoaWNzQ28KICAgICB9CiAKICAgICBpZiAoIW1fY2FjaGVkSW1hZ2UpIHsKLSAg
ICAgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihl
eHBhbmRlZEludFNpemUodGlsZVJlY3Quc2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCLCBjdHh0KTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUodGlsZVJlY3Quc2l6ZSgpKSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCksIGN0eHQpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAg
ICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ29sb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNyArMTY4LDcgQEAgQ29s
b3JDb21wb25lbnRzPGZsb2F0LCA0PiBDb2xvcjo6dG9Db2xvcgogICAgIHJldHVybiBjb252ZXJD
b2xvckNvbXBvbmVudHMoaW5wdXRDb2xvclNwYWNlLCBjb21wb25lbnRzLCBvdXRwdXRDb2xvclNw
YWNlKTsKIH0KIAotQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBDb2xvcjo6dG9Db2xvckNvbXBv
bmVudHNJbkNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIG91dHB1dENvbG9yU3BhY2Up
IGNvbnN0CitDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IENvbG9yOjp0b0NvbG9yQ29tcG9uZW50
c0luQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIG91dHB1dENvbG9yU3Bh
Y2UpIGNvbnN0CiB7CiAgICAgYXV0byBbaW5wdXRDb2xvclNwYWNlLCBjb21wb25lbnRzXSA9IGNv
bG9yU3BhY2VBbmRDb21wb25lbnRzKCk7CiAgICAgcmV0dXJuIGNvbnZlckNvbG9yQ29tcG9uZW50
cyhpbnB1dENvbG9yU3BhY2UsIGNvbXBvbmVudHMsIG91dHB1dENvbG9yU3BhY2UpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29sb3JDb252ZXJzaW9uLmgiCiAjaW5j
bHVkZSAiQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkNvbG9yVXRpbGl0aWVzLmgiCisjaW5jbHVk
ZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CkBAIC0x
MjEsNyArMTIyLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPFQ+
IHRvU1JHQkFMb3NzeSgpIGNvbnN0IHsgcmV0dXJuIHRvQ29sb3JUeXBlTG9zc3k8U1JHQkE8VD4+
KCk7IH0KIAogICAgIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gdG9Db2xvckNvbXBvbmVudHNJ
bkNvbG9yU3BhY2UoQ29sb3JTcGFjZSkgY29uc3Q7Ci0gICAgQ29sb3JDb21wb25lbnRzPGZsb2F0
LCA0PiB0b0NvbG9yQ29tcG9uZW50c0luQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2Up
IGNvbnN0OworICAgIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gdG9Db2xvckNvbXBvbmVudHNJ
bkNvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJikgY29uc3Q7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8Q29sb3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0
LCA0Pj4gY29sb3JTcGFjZUFuZENvbXBvbmVudHMoKSBjb25zdDsKIApAQCAtMjY3LDYgKzI2OCw3
IEBAIGJvb2wgb3V0T2ZMaW5lQ29tcG9uZW50c3NFcXVhbElnbm9yaW5nU2UKIAogI2lmIFVTRShD
RykKIFdFQkNPUkVfRVhQT1JUIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYp
OworV0VCQ09SRV9FWFBPUlQgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBwbGF0Zm9ybUNvbnZl
cnRDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0Piwg
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CiAjZW5kaWYKIAogV0VCQ09SRV9FWFBPUlQg
V1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IENvbG9y
Jik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bG9yQ29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDcgKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb2xvckNvbnZlcnNp
b24uaCIKIAorI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2lu
Y2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFz
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTMxOCwxOCArMzIwLDIxIEBAIENvbG9yQ29t
cG9uZW50czxmbG9hdCwgND4gY29udmVyQ29sb3JDb20KICAgICB9KTsKIH0KIAotQ29sb3JDb21w
b25lbnRzPGZsb2F0LCA0PiBjb252ZXJDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1dENv
bG9yU3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVudHMs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBvdXRwdXRDb2xvclNwYWNlKQorQ29sb3JDb21wb25lbnRz
PGZsb2F0LCA0PiBjb252ZXJDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1dENvbG9yU3Bh
Y2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVudHMsIGNvbnN0
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgb3V0cHV0Q29sb3JTcGFjZSkKIHsKKyNpZiBVU0UoQ0cp
CisgICAgcmV0dXJuIHBsYXRmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyhpbnB1dENvbG9yU3Bh
Y2UsIGlucHV0Q29sb3JDb21wb25lbnRzLCBvdXRwdXRDb2xvclNwYWNlKTsKKyNlbHNlCiAgICAg
cmV0dXJuIGNhbGxXaXRoQ29sb3JUeXBlKGlucHV0Q29sb3JDb21wb25lbnRzLCBpbnB1dENvbG9y
U3BhY2UsIFtvdXRwdXRDb2xvclNwYWNlXSAoY29uc3QgYXV0byYgaW5wdXRDb2xvcikgewotICAg
ICAgICBzd2l0Y2ggKG91dHB1dENvbG9yU3BhY2UpIHsKLSAgICAgICAgY2FzZSBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0I6CisgICAgICAgIHN3aXRjaCAob3V0cHV0Q29sb3JTcGFjZS5wbGF0
Zm9ybUNvbG9yU3BhY2UoKSkgeworICAgICAgICBjYXNlIFBsYXRmb3JtQ29sb3JTcGFjZTo6TmFt
ZTo6U1JHQjoKICAgICAgICAgICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhjb252ZXJ0Q29s
b3I8U1JHQkE8ZmxvYXQ+PihpbnB1dENvbG9yKSk7CiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NP
TE9SX1NQQUNFX0xJTkVBUl9TUkdCKQotICAgICAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6TGluZWFyU1JHQjoKKyAgICAgICAgY2FzZSBQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU6Okxp
bmVhclNSR0I6CiAgICAgICAgICAgICByZXR1cm4gYXNDb2xvckNvbXBvbmVudHMoY29udmVydENv
bG9yPExpbmVhclNSR0JBPGZsb2F0Pj4oaW5wdXRDb2xvcikpOwogI2VuZGlmCiAjaWYgRU5BQkxF
KERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCi0gICAgICAgIGNhc2UgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDM6CisgICAgICAgIGNhc2UgUGxhdGZvcm1Db2xvclNw
YWNlOjpOYW1lOjpEaXNwbGF5UDM6CiAgICAgICAgICAgICByZXR1cm4gYXNDb2xvckNvbXBvbmVu
dHMoY29udmVydENvbG9yPERpc3BsYXlQMzxmbG9hdD4+KGlucHV0Q29sb3IpKTsKICNlbmRpZgog
ICAgICAgICB9CkBAIC0zMzcsNiArMzQyLDcgQEAgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBj
b252ZXJDb2xvckNvbQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0
dXJuIGFzQ29sb3JDb21wb25lbnRzKGNvbnZlcnRDb2xvcjxTUkdCQTxmbG9hdD4+KGlucHV0Q29s
b3IpKTsKICAgICB9KTsKKyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNp
b24uaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JDb252ZXJzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE1ICsyOSwxNiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKKwog
ZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdDsKLWVudW0gY2xhc3MgRGVzdGluYXRpb25D
b2xvclNwYWNlIDogdWludDhfdDsKIAogLy8gQ29udmVyc2lvbiBmdW5jdGlvbiBmb3IgdHlwZWQg
Y29sb3JzLgogdGVtcGxhdGU8dHlwZW5hbWUgT3V0cHV0LCB0eXBlbmFtZSBJbnB1dD4gT3V0cHV0
IGNvbnZlcnRDb2xvcihjb25zdCBJbnB1dCYgY29sb3IpOwogCiAvLyBDb252ZXJzaW9uIGZ1bmN0
aW9ucyBmb3IgcmF3IGNvbG9yIGNvbXBvbmVudHMgd2l0aCBhc3NvY2lhdGVkIGNvbG9yIHNwYWNl
cy4KIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gY29udmVyQ29sb3JDb21wb25lbnRzKENvbG9y
U3BhY2UgaW5wdXRDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGlucHV0Q29s
b3JDb21wb25lbnRzLCBDb2xvclNwYWNlIG91dHB1dENvbG9yU3BhY2UpOwotQ29sb3JDb21wb25l
bnRzPGZsb2F0LCA0PiBjb252ZXJDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1dENvbG9y
U3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVudHMsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSBvdXRwdXRDb2xvclNwYWNlKTsKK0NvbG9yQ29tcG9uZW50czxm
bG9hdCwgND4gY29udmVyQ29sb3JDb21wb25lbnRzKENvbG9yU3BhY2UgaW5wdXRDb2xvclNwYWNl
LCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGlucHV0Q29sb3JDb21wb25lbnRzLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmIG91dHB1dENvbG9yU3BhY2UpOwogCiAKIC8vIEFsbCBjb2xv
ciB0eXBlcywgb3RoZXIgdGhhbiBYWVpBIG9yIHRob3NlIGluaGVyaXRpbmcgZnJvbSBSR0JUeXBl
LCBtdXN0IGltcGxlbWVudApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JTcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29sb3JTcGFjZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCwy
NCArNjQsNCBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBDCiAgICAg
cmV0dXJuIHRzOwogfQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkKLXsKLSAgICBzd2l0Y2ggKGNvbG9yU3Bh
Y2UpIHsKLSAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgdHMg
PDwgInNSR0IiOwotICAgICAgICBicmVhazsKLSNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1Jf
U1BBQ0VfTElORUFSX1NSR0IpCi0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVh
clNSR0I6Ci0gICAgICAgIHRzIDw8ICJMaW5lYXJTUkdCIjsKLSAgICAgICAgYnJlYWs7Ci0jZW5k
aWYKLSNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExBWV9QMykKLSAgICBj
YXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxheVAzOgotICAgICAgICB0cyA8PCAiRGlz
cGxheVAzIjsKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLSAgICB9Ci0gICAgcmV0dXJuIHRzOwot
fQotCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JT
cGFjZS5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvclNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEwICsyOCw3IEBACiAjaW5j
bHVkZSAiQ29sb3JUeXBlcy5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3Rm
L0VudW1UcmFpdHMuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBUZXh0U3RyZWFtOwotfQor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDcs
MTggKzQ0LDcgQEAgZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdCB7CiAgICAgWFlaX0Q1
MCwKIH07CiAKLWVudW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDogdWludDhfdCB7Ci0g
ICAgU1JHQgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikK
LSAgICAsIExpbmVhclNSR0IKLSNlbmRpZgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9T
UEFDRV9ESVNQTEFZX1AzKQotICAgICwgRGlzcGxheVAzCi0jZW5kaWYKLX07Ci0KLVdFQkNPUkVf
RVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBDb2xv
clNwYWNlKTsKLVdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6
OlRleHRTdHJlYW0mLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UpOworV0VCQ09SRV9FWFBPUlQgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgQ29sb3JTcGFjZSk7CiAKIAogdGVtcGxh
dGU8dHlwZW5hbWU+IHN0cnVjdCBDb2xvclNwYWNlTWFwcGluZzsKQEAgLTEwMiwyNSArODgsNiBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBGdW5jdG9yPiBjCiAgICAgcmV0dXJuIHN0
ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFrZUZyb21Db21wb25l
bnRzPFNSR0JBPFQ+Pihjb21wb25lbnRzKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIEZ1bmN0b3I+IGNvbnN0ZXhwciBkZWNsdHlwZShhdXRvKSBjYWxsV2l0aENvbG9yVHlw
ZShjb25zdCBDb2xvckNvbXBvbmVudHM8VCwgND4mIGNvbXBvbmVudHMsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBGdW5jdG9yJiYgZnVuY3RvcikKLXsKLSAgICBzd2l0Y2ggKGNv
bG9yU3BhY2UpIHsKLSAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFr
ZUZyb21Db21wb25lbnRzPFNSR0JBPFQ+Pihjb21wb25lbnRzKSk7Ci0jaWYgRU5BQkxFKERFU1RJ
TkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpMaW5lYXJTUkdCOgotICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3
YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8TGluZWFyU1JHQkE8VD4+
KGNvbXBvbmVudHMpKTsKLSNlbmRpZgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFD
RV9ESVNQTEFZX1AzKQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDM6
Ci0gICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3Rv
ciksIG1ha2VGcm9tQ29tcG9uZW50czxEaXNwbGF5UDM8VD4+KGNvbXBvbmVudHMpKTsKLSNlbmRp
ZgotICAgIH0KLQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBzdGQ6Omlu
dm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIG1ha2VGcm9tQ29tcG9uZW50czxT
UkdCQTxUPj4oY29tcG9uZW50cykpOwotfQotCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApA
QCAtMTQxLDE3ICsxMDgsNCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6
OkNvCiAgICAgPjsKIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6
RGVzdGluYXRpb25Db2xvclNwYWNlPiB7Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwK
LSAgICAgICAgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlLAotICAgICAgICBXZWJDb3Jl
OjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IKLSNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09M
T1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgICAgICwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xv
clNwYWNlOjpMaW5lYXJTUkdCCi0jZW5kaWYKLSNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1Jf
U1BBQ0VfRElTUExBWV9QMykKLSAgICAgICAgLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OkRpc3BsYXlQMwotI2VuZGlmCi0gICAgPjsKLX07Ci0KIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nv
bmNyZXRlSW1hZ2VCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBCYWNrZW5kVHlwZT4KIGNsYXNzIENvbmNyZXRlSW1hZ2VCdWZmZXIgOiBw
dWJsaWMgSW1hZ2VCdWZmZXIgewogcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEltYWdl
QnVmZmVyVHlwZSA9IENvbmNyZXRlSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4K
LSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RX
aW5kb3csIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdl
QnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93LCBBcmd1bWVudHMm
Ji4uLiBhcmd1bWVudHMpCiAgICAgewogICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBJbWFnZUJ1
ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMgeyBzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3Bh
Y2UsIHBpeGVsRm9ybWF0IH07CiAgICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpj
cmVhdGUocGFyYW1ldGVycywgaG9zdFdpbmRvdyk7CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbWFnZUJ1ZmZlclR5cGUgPSBDb25jcmV0ZUltYWdlQnVm
ZmVyLCB0eXBlbmFtZS4uLiBBcmd1bWVudHM+CiAgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZl
clR5cGU+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgQXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAgIHsKLSAgICAgICAgYXV0
byBwYXJhbWV0ZXJzID0gSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzIHsgc2l6ZSwgMSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTggfTsKKyAgICAg
ICAgYXV0byBwYXJhbWV0ZXJzID0gSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzIHsgc2l6
ZSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCB9
OwogICAgICAgICBhdXRvIGJhY2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3JlYXRlKHBhcmFtZXRlcnMs
IGNvbnRleHQpOwogICAgICAgICBpZiAoIWJhY2tlbmQpCiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTE5NSw3ICsxOTUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIHNyY0Nv
bG9yU3BhY2UsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBkZXN0Q29sb3JTcGFjZSkgb3ZlcnJpZGUK
KyAgICB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiBzcmNDb2xvclNwYWNlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGRlc3RDb2xvclNw
YWNlKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVC
YWNrZW5kQ3JlYXRlZCgpKSB7CiAgICAgICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJ
bWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsNyBAQCBJbWFnZURyYXdSZXN1bHQgQ3Jvc3NmYWRl
R2VuZXJhdGVkSW1hZ2U6CiAKIHZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRy
YW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2lu
ZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgYXV0byBpbWFn
ZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBjb250ZXh0LnJlbmRlcmluZ01v
ZGUoKSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgp
OworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgY29u
dGV4dC5yZW5kZXJpbmdNb2RlKCksIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQ
aXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVy
bjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25D
b2xvclNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCisKKyNpbmNsdWRlIDx3dGYv
dGV4dC9UZXh0U3RyZWFtLmg+CisKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiQ29sb3JTcGFjZUNH
LmgiCisjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KKyNlbmRpZgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKQoreworI2lmIFVTRShDRykKKyAgICByZXR1cm4gRGVzdGluYXRpb25D
b2xvclNwYWNlKHNSR0JDb2xvclNwYWNlUmVmKCkpOworI2Vsc2UKKyAgICByZXR1cm4gRGVzdGlu
YXRpb25Db2xvclNwYWNlKFBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZTo6U1JHQik7CisjZW5kaWYK
K30KKworI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKK0Rl
c3RpbmF0aW9uQ29sb3JTcGFjZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKQor
eworI2lmIFVTRShDRykKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlKGxpbmVhclNS
R0JDb2xvclNwYWNlUmVmKCkpOworI2Vsc2UKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNw
YWNlKFBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZTo6TGluZWFyU1JHQik7CisjZW5kaWYKK30KKyNl
bmRpZgorCisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCitE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDMoKQor
eworI2lmIFVTRShDRykKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlKGRpc3BsYXlQ
M0NvbG9yU3BhY2VSZWYoKSk7CisjZWxzZQorICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UoUGxhdGZvcm1Db2xvclNwYWNlOjpOYW1lOjpEaXNwbGF5UDMpOworI2VuZGlmCit9CisjZW5k
aWYKKworRGVzdGluYXRpb25Db2xvclNwYWNlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UoUGxhdGZv
cm1Db2xvclNwYWNlIHBsYXRmb3JtQ29sb3JTcGFjZSkKKyAgICA6IG1fcGxhdGZvcm1Db2xvclNw
YWNlIHsgV1RGTW92ZShwbGF0Zm9ybUNvbG9yU3BhY2UpIH0KK3sKKyNpZiBVU0UoQ0cpCisgICAg
QVNTRVJUKG1fcGxhdGZvcm1Db2xvclNwYWNlKTsKKyNlbmRpZgorfQorCitib29sIG9wZXJhdG9y
PT0oY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBhLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmIGIpCit7CisjaWYgVVNFKENHKQorICAgIHJldHVybiBDR0NvbG9yU3BhY2VFcXVhbFRv
Q29sb3JTcGFjZShhLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBiLnBsYXRmb3JtQ29sb3JTcGFjZSgp
KTsKKyNlbHNlCisgICAgcmV0dXJuIGEucGxhdGZvcm1Db2xvclNwYWNlKCkgPT0gYi5wbGF0Zm9y
bUNvbG9yU3BhY2UoKTsKKyNlbmRpZgorfQorCitib29sIG9wZXJhdG9yIT0oY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiBhLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGIpCit7Cisg
ICAgcmV0dXJuICEoYSA9PSBiKTsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQoreworICAg
IGlmIChjb2xvclNwYWNlID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKQorICAgICAg
ICB0cyA8PCAic1JHQiI7CisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVB
Ul9TUkdCKQorICAgIGVsc2UgaWYgKGNvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNl
OjpMaW5lYXJTUkdCKCkpCisgICAgICAgIHRzIDw8ICJMaW5lYXJTUkdCIjsKKyNlbmRpZgorI2lm
IEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQorICAgIGVsc2UgaWYg
KGNvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDMoKSkKKyAgICAg
ICAgdHMgPDwgIkRpc3BsYXlQMyI7CisjZW5kaWYKKyNpZiBVU0UoQ0cpCisgICAgZWxzZSBpZiAo
YXV0byBkZXNjcmlwdGlvbiA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ29weUlDQ1Byb2ZpbGVEZXNj
cmlwdGlvbihjb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpKSkpCisgICAgICAgIHRzIDw8
IFN0cmluZyhkZXNjcmlwdGlvbi5nZXQoKSk7CisjZW5kaWYKKworICAgIHJldHVybiB0czsKK30K
KworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25D
b2xvclNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiUGxhdGZvcm1Db2xvclNwYWNlLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgeworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgU1JHQigpOworI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xP
Ul9TUEFDRV9MSU5FQVJfU1JHQikKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRGVzdGluYXRp
b25Db2xvclNwYWNlIExpbmVhclNSR0IoKTsKKyNlbmRpZgorI2lmIEVOQUJMRShERVNUSU5BVElP
Tl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgRGlzcGxheVAzKCk7CisjZW5kaWYKKworICAgIFdFQkNPUkVfRVhQ
T1JUIGV4cGxpY2l0IERlc3RpbmF0aW9uQ29sb3JTcGFjZShQbGF0Zm9ybUNvbG9yU3BhY2UpOwor
ICAgIFBsYXRmb3JtQ29sb3JTcGFjZVZhbHVlIHBsYXRmb3JtQ29sb3JTcGFjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcGxhdGZvcm1Db2xvclNwYWNlLmdldCgpOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gZGVjb2Rl
KERlY29kZXImKTsKKworcHJpdmF0ZToKKyAgICBQbGF0Zm9ybUNvbG9yU3BhY2UgbV9wbGF0Zm9y
bUNvbG9yU3BhY2U7Cit9OworCitXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CitX
RUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yIT0oY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CisKK1dFQkNPUkVfRVhQT1JUIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYpOworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3Bs
YXRmb3JtQ29sb3JTcGFjZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8
RGVzdGluYXRpb25Db2xvclNwYWNlPiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPFBsYXRmb3JtQ29sb3JTcGFjZT4gcGxhdGZv
cm1Db2xvclNwYWNlOworICAgIGRlY29kZXIgPj4gcGxhdGZvcm1Db2xvclNwYWNlOworICAgIGlm
ICghcGxhdGZvcm1Db2xvclNwYWNlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB7IFdURk1vdmUoKnBsYXRmb3JtQ29sb3JT
cGFjZSkgfTsKK30KKworfQorCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFkaWVudEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybihHcmFw
aGljcwogICAgIHVuc2lnbmVkIGdlbmVyYXRvckhhc2ggPSBtX2dyYWRpZW50LT5oYXNoKCk7CiAK
ICAgICBpZiAoIW1fY2FjaGVkSW1hZ2UgfHwgbV9jYWNoZWRHZW5lcmF0b3JIYXNoICE9IGdlbmVy
YXRvckhhc2ggfHwgbV9jYWNoZWRBZGp1c3RlZFNpemUgIT0gYWRqdXN0ZWRTaXplIHx8ICFhcmVF
c3NlbnRpYWxseUVxdWFsKGRlc3RDb250ZXh0LnNjYWxlRmFjdG9yKCksIG1fY2FjaGVkU2NhbGVG
YWN0b3IpKSB7Ci0gICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QiwgZGVzdENvbnRleHQpOworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoYWRqdXN0ZWRTaXplLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgZGVzdENvbnRleHQpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAg
ICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg4Myw3ICs4ODMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91
dFJvdW5kZWRSZWN0CiAgICAgY2xpcE91dChwYXRoKTsKIH0KIAotR3JhcGhpY3NDb250ZXh0OjpD
bGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9EcmF3aW5n
Q29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNw
YWNlIGNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYgZHJhd2lu
Z0Z1bmN0aW9uKQorR3JhcGhpY3NDb250ZXh0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQg
R3JhcGhpY3NDb250ZXh0OjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGdW5j
dGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikKIHsKICAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzUmVzdWx0OjpTdWNjZXNzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw4ICsyNiw4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ29sb3JT
cGFjZS5oIgogI2luY2x1ZGUgIkRhc2hBcnJheS5oIgorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29s
b3JTcGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRl
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgpAQCAtNDEwLDcgKzQxMCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRS
ZWN0Jik7CiAKICAgICBlbnVtIGNsYXNzIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCA6IGJv
b2wgeyBTdWNjZXNzLCBGYWlsZWRUb0NyZWF0ZUltYWdlQnVmZmVyIH07Ci0gICAgQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzUmVzdWx0IGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhp
Y3NDb250ZXh0Jik+JiYpOworICAgIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBjbGlwVG9E
cmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJik7CiAg
ICAgCiAgICAgSW50UmVjdCBjbGlwQm91bmRzKCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSA9
IDA7CiAgICAgdmlydHVhbCBJbnRSZWN0IGNsaXBCb3VuZHMoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBo
aWNzQ29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBj
bGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4m
JiBkcmF3aW5nRnVuY3Rpb24pID0gMDsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgdmlydHVhbCB2
b2lkIHBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24pID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuUGFpbnRGcmFtZUZvck1lZGlhKGNv
bnN0IE1lZGlhUGxheWVyJikgY29uc3QgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBjb25z
dCBmbG9hdCBNYXhDbGFtcGVkTGVuZ3RoID0gNDA5NjsKIHN0YXRpYyBjb25zdCBmbG9hdCBNYXhD
bGFtcGVkQXJlYSA9IE1heENsYW1wZWRMZW5ndGggKiBNYXhDbGFtcGVkTGVuZ3RoOwogCi1SZWZQ
dHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0IHNob3Vs
ZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBp
eGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQorUmVmUHRyPEltYWdlQnVm
ZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5n
TW9kZSByZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdCBzaG91bGRVc2VEaXNwbGF5
TGlzdCwgUmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxG
b3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7CiAgICAgUmVmUHRyPEltYWdl
QnVmZmVyPiBpbWFnZUJ1ZmZlcjsKICAgICAKQEAgLTU5LDcgKzU5LDcgQEAgUmVmUHRyPEltYWdl
QnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKAogICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0K
IAotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZv
cm1hdCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUg
cmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0
V2luZG93KiBob3N0V2luZG93KQogewogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZm
ZXI7CiAgICAgCkBAIC05NSw3ICs5NSw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZUMKICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1
ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQog
ewogICAgIGlmIChzaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0x
MTEsNyArMTExLDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQwog
ICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIHJldHVybiBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKHNpemUsIGNvbnRleHQucmVuZGVyaW5nTW9kZSgpLCByZXNvbHV0aW9uU2NhbGUs
IGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiB9CkBAIC0xNjcsNyArMTY3LDcgQEAg
SW50U2l6ZSBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZlclNpegogICAgIHJldHVybiBleHBh
bmRlZEludFNpemUoc2l6ZSAqIGNvbnRleHQuc2NhbGVGYWN0b3IoKSk7CiB9CiAKLVJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNvcHlSZWN0VG9CdWZmZXIoY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y29weVJl
Y3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAg
IGlmIChyZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgJKHJldmlzaW9u
IDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEzICs0NSwxMyBAQCBzdHJ1Y3QgSXRlbUJ1ZmZlckhh
bmRsZTsKIGNsYXNzIEltYWdlQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPElt
YWdlQnVmZmVyPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPEltYWdlQnVmZmVyPiB7CiBwdWJsaWM6
CiAgICAgLy8gV2lsbCByZXR1cm4gYSBudWxsIHBvaW50ZXIgb24gYWxsb2NhdGlvbiBmYWlsdXJl
LgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShj
b25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdCwgUmVu
ZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UsIFBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNp
emUmLCBSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZs
b2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQ
dXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYsIFBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNp
emUmLCBSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYsIFBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIp
OwogCiAgICAgLy8gQ3JlYXRlIGFuIGltYWdlIGJ1ZmZlciBjb21wYXRpYmxlIHdpdGggdGhlIGNv
bnRleHQsIHdpdGggc3VpdGFibGUgcmVzb2x1dGlvbiBmb3IgZHJhd2luZyBpbnRvIHRoZSBidWZm
ZXIgYW5kIHRoZW4gaW50byB0aGlzIGNvbnRleHQuCiAgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBjb25zdCBHcmFw
aGljc0NvbnRleHQmKTsKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgY29u
c3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3Jl
YXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CisgICAg
c3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBG
bG9hdFNpemUmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQmKTsKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICAvLyBU
aGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQgd2hlbiBjbGFtcGluZyB0aGUgSW1hZ2VCdWZmZXIgd2hp
Y2ggaXMgY3JlYXRlZCBmb3IgZmlsdGVyLCBtYXNrZXIgb3IgY2xpcHBlci4KICAgICBzdGF0aWMg
Ym9vbCBzaXplTmVlZHNDbGFtcGluZyhjb25zdCBGbG9hdFNpemUmKTsKQEAgLTEwNyw3ICsxMDcs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5n
U3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJlc2Vy
dmVSZXNvbHV0aW9uOjpObykgY29uc3QgPSAwOwogCiAgICAgLy8gQ3JlYXRlIGFuIGltYWdlIGJ1
ZmZlciBjb21wYXRpYmxlIHdpdGggdGhlIGNvbnRleHQgYW5kIGNvcHkgcmVjdCBmcm9tIHRoaXMg
YnVmZmVyIGludG8gdGhpcyBuZXcgb25lLgotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY29weVJl
Y3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYpOworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY29weVJlY3RUb0J1
ZmZlcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25z
dCBHcmFwaGljc0NvbnRleHQmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
PSB7IH0pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiA9IHsgfSkgPSAwOwpAQCAtMTIwLDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgY2xpcFRvTWFzayhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgY29udmVydFRvTHVtaW5hbmNlTWFzaygpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9y
U3BhY2Ugc3JjQ29sb3JTcGFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGRzdENvbG9yU3BhY2Up
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmIHNyY0NvbG9yU3BhY2UsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYgZHN0Q29sb3JTcGFjZSkgPSAwOwogCiAgICAgdmlydHVhbCBTdHJpbmcgdG9EYXRhVVJMKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IFdURjo6bnVs
bG9wdCwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgVmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHkgPSBXVEY6Om51bGxvcHQpIGNvbnN0ID0g
MDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFj
a2VuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTMsNiArNTMsOCBAQCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVyQmFja2Vu
ZChjCiB7CiB9CiAKK0ltYWdlQnVmZmVyQmFja2VuZDo6fkltYWdlQnVmZmVyQmFja2VuZCgpID0g
ZGVmYXVsdDsKKwogUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnNpbmtJ
bnRvTmF0aXZlSW1hZ2UoKQogewogICAgIHJldHVybiBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlC
YWNraW5nU3RvcmUpOwpAQCAtMTE0LDE1ICsxMTYsMTcgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+
IEltYWdlQnVmZmVyQmFja2VuZAogICAgIGlmIChkZXN0aW5hdGlvblJlY3Quc2l6ZSgpICE9IHNv
dXJjZVJlY3RTY2FsZWQuc2l6ZSgpKQogICAgICAgICBwaXhlbEJ1ZmZlci0+ZGF0YSgpLnplcm9G
aWxsKCk7CiAKLSAgICBDb25zdFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgc291cmNlOwotICAg
IHNvdXJjZS5mb3JtYXQgPSB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQs
IHBpeGVsRm9ybWF0KCksIGNvbG9yU3BhY2UoKSB9OwotICAgIHNvdXJjZS5ieXRlc1BlclJvdyA9
IGJ5dGVzUGVyUm93KCk7Ci0gICAgc291cmNlLnJvd3MgPSByZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPihkYXRhKSArIHNvdXJjZVJlY3RDbGlwcGVkLnkoKSAqIHNvdXJjZS5ieXRlc1BlclJvdyAr
IHNvdXJjZVJlY3RDbGlwcGVkLngoKSAqIDQ7CisgICAgQ29uc3RQaXhlbEJ1ZmZlckNvbnZlcnNp
b25WaWV3IHNvdXJjZSB7CisgICAgICAgIHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVs
dGlwbGllZCwgcGl4ZWxGb3JtYXQoKSwgY29sb3JTcGFjZSgpIH0sCisgICAgICAgIGJ5dGVzUGVy
Um93KCksCisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEpICsgc291cmNl
UmVjdENsaXBwZWQueSgpICogc291cmNlLmJ5dGVzUGVyUm93ICsgc291cmNlUmVjdENsaXBwZWQu
eCgpICogNAorICAgIH07CiAgICAgCi0gICAgUGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBkZXN0
aW5hdGlvbjsKLSAgICBkZXN0aW5hdGlvbi5mb3JtYXQgPSBkZXN0aW5hdGlvbkZvcm1hdDsKLSAg
ICBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyA9IDQgKiBzb3VyY2VSZWN0U2NhbGVkLndpZHRoKCk7
Ci0gICAgZGVzdGluYXRpb24ucm93cyA9IHBpeGVsQnVmZmVyLT5kYXRhKCkuZGF0YSgpICsgZGVz
dGluYXRpb25SZWN0LnkoKSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ICsgZGVzdGluYXRpb25S
ZWN0LngoKSAqIDQ7CisgICAgUGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBkZXN0aW5hdGlvbiB7
CisgICAgICAgIGRlc3RpbmF0aW9uRm9ybWF0LAorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oNCAqIHNvdXJjZVJlY3RTY2FsZWQud2lkdGgoKSksCisgICAgICAgIHBpeGVsQnVmZmVyLT5k
YXRhKCkuZGF0YSgpICsgZGVzdGluYXRpb25SZWN0LnkoKSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVy
Um93ICsgZGVzdGluYXRpb25SZWN0LngoKSAqIDQKKyAgICB9OwogCiAgICAgY29udmVydEltYWdl
UGl4ZWxzKHNvdXJjZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uUmVjdC5zaXplKCkpOwogCkBA
IC0xNDcsMTUgKzE1MSwxNyBAQCB2b2lkIEltYWdlQnVmZmVyQmFja2VuZDo6cHV0UGl4ZWxCdWZm
ZXIoCiAgICAgZGVzdGluYXRpb25SZWN0LmludGVyc2VjdChiYWNrZW5kUmVjdCgpKTsKICAgICBz
b3VyY2VSZWN0Q2xpcHBlZC5zZXRTaXplKGRlc3RpbmF0aW9uUmVjdC5zaXplKCkpOwogCi0gICAg
Q29uc3RQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IHNvdXJjZTsKLSAgICBzb3VyY2UuZm9ybWF0
ID0gc291cmNlUGl4ZWxCdWZmZXIuZm9ybWF0KCk7Ci0gICAgc291cmNlLmJ5dGVzUGVyUm93ID0g
NCAqIHNvdXJjZVBpeGVsQnVmZmVyLnNpemUoKS53aWR0aCgpOwotICAgIHNvdXJjZS5yb3dzID0g
c291cmNlUGl4ZWxCdWZmZXIuZGF0YSgpLmRhdGEoKSArIHNvdXJjZVJlY3RDbGlwcGVkLnkoKSAq
IHNvdXJjZS5ieXRlc1BlclJvdyArIHNvdXJjZVJlY3RDbGlwcGVkLngoKSAqIDQ7Ci0KLSAgICBQ
aXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IGRlc3RpbmF0aW9uOwotICAgIGRlc3RpbmF0aW9uLmZv
cm1hdCA9IHsgZGVzdGluYXRpb25BbHBoYUZvcm1hdCwgcGl4ZWxGb3JtYXQoKSwgY29sb3JTcGFj
ZSgpIH07Ci0gICAgZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgPSBieXRlc1BlclJvdygpOwotICAg
IGRlc3RpbmF0aW9uLnJvd3MgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhKSArIGRl
c3RpbmF0aW9uUmVjdC55KCkgKiBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyArIGRlc3RpbmF0aW9u
UmVjdC54KCkgKiA0OworICAgIENvbnN0UGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBzb3VyY2Ug
eworICAgICAgICBzb3VyY2VQaXhlbEJ1ZmZlci5mb3JtYXQoKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KDQgKiBzb3VyY2VQaXhlbEJ1ZmZlci5zaXplKCkud2lkdGgoKSksCisgICAg
ICAgIHNvdXJjZVBpeGVsQnVmZmVyLmRhdGEoKS5kYXRhKCkgKyBzb3VyY2VSZWN0Q2xpcHBlZC55
KCkgKiBzb3VyY2UuYnl0ZXNQZXJSb3cgKyBzb3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0CisgICAg
fTsKKworICAgIFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgZGVzdGluYXRpb24geworICAgICAg
ICB7IGRlc3RpbmF0aW9uQWxwaGFGb3JtYXQsIHBpeGVsRm9ybWF0KCksIGNvbG9yU3BhY2UoKSB9
LAorICAgICAgICBieXRlc1BlclJvdygpLAorICAgICAgICByZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPihkYXRhKSArIGRlc3RpbmF0aW9uUmVjdC55KCkgKiBkZXN0aW5hdGlvbi5ieXRlc1BlclJv
dyArIGRlc3RpbmF0aW9uUmVjdC54KCkgKiA0CisgICAgfTsKIAogICAgIGNvbnZlcnRJbWFnZVBp
eGVscyhzb3VyY2UsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvblJlY3Quc2l6ZSgpKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyQmFja2VuZC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyAr
MjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKKyNpbmNs
dWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNp
bmNsdWRlICJHcmFwaGljc1R5cGVzR0wuaCIKICNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9u
cy5oIgpAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFBpeGVsRm9ybWF0IHBpeGVs
Rm9ybWF0OwogICAgIH07CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbWFnZUJ1ZmZl
ckJhY2tlbmQoKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SW1hZ2VC
dWZmZXJCYWNrZW5kKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSW50U2l6ZSBjYWxj
dWxhdGVCYWNrZW5kU2l6ZShjb25zdCBQYXJhbWV0ZXJzJik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIHNpemVfdCBjYWxjdWxhdGVNZW1vcnlDb3N0KGNvbnN0IEludFNpemUmIGJhY2tlbmRT
aXplLCB1bnNpZ25lZCBieXRlc1BlclJvdyk7CkBAIC0xMDIsNyArMTAyLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBjbGlwVG9NYXNrKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYpIHsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb252ZXJ0VG9MdW1pbmFuY2VN
YXNrKCk7Ci0gICAgdmlydHVhbCB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25D
b2xvclNwYWNlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB0
cmFuc2Zvcm1Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYpIHsgfQogCiAgICAgdmlydHVhbCBTdHJpbmcgdG9EYXRhVVJM
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2Vy
dmVSZXNvbHV0aW9uKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8dWludDhfdD4gdG9E
YXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkgY29u
c3QgPSAwOwpAQCAtMTQwLDcgKzE0MCw3IEBAIHByb3RlY3RlZDoKIAogICAgIEludFNpemUgbG9n
aWNhbFNpemUoKSBjb25zdCB7IHJldHVybiBJbnRTaXplKG1fcGFyYW1ldGVycy5sb2dpY2FsU2l6
ZSk7IH0KICAgICBmbG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3BhcmFt
ZXRlcnMucmVzb2x1dGlvblNjYWxlOyB9Ci0gICAgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9y
U3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMuY29sb3JTcGFjZTsgfQorICAgIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFyYW1ldGVycy5jb2xvclNwYWNlOyB9CiAgICAgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQoKSBj
b25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMucGl4ZWxGb3JtYXQ7IH0KIAogICAgIEludFJlY3Qg
bG9naWNhbFJlY3QoKSBjb25zdCB7IHJldHVybiBJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIGxv
Z2ljYWxTaXplKCkpOyB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGl4ZWxCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BpeGVsQnVmZmVyLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Miw2ICs0Miw5IEBAIGJvb2wgUGl4ZWxCdWZmZXI6OnN1cHBvcnRlZFBpeGVsRm9ybWF0KFAKICAg
ICBjYXNlIFBpeGVsRm9ybWF0OjpSR0IxMEE4OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQorICAgIAorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKIH0K
IAogQ2hlY2tlZDx1bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IFBpeGVsQnVmZmVyOjpjb21wdXRl
QnVmZmVyU2l6ZShjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZm9ybWF0LCBjb25zdCBJbnRTaXpl
JiBzaXplKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZm
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhl
bEJ1ZmZlci5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QaXhlbEJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFscGhhUHJlbXVsdGlwbGljYXRpb24uaCIKLSNpbmNs
dWRlICJDb2xvclNwYWNlLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAj
aW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlBpeGVsQnVmZmVyRm9ybWF0LmgiCiAjaW5j
bHVkZSAiUGl4ZWxGb3JtYXQuaCIKQEAgLTg3LDE5ICs4NywyMSBAQCB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIFBpeGVsQnVmZmVyCiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlv
bmFsPFBpeGVsQnVmZmVyPiBQaXhlbEJ1ZmZlcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7
Ci0gICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
Zm9ybWF0KSkKKyAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlckZvcm1hdD4gZm9ybWF0OworICAgIGRl
Y29kZXIgPj4gZm9ybWF0OworICAgIGlmICghZm9ybWF0KQogICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogCiAgICAgLy8gRklYTUU6IFN1cHBvcnQgbm9uLTggYml0IGZvcm1hdHMuCi0gICAg
aWYgKCEoZm9ybWF0LnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCB8fCBmb3JtYXQu
cGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KSkKKyAgICBpZiAoIShmb3JtYXQtPnBp
eGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCB8fCBmb3JtYXQtPnBpeGVsRm9ybWF0ID09
IFBpeGVsRm9ybWF0OjpCR1JBOCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAg
ICBJbnRTaXplIHNpemU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaXplKSkKKyAgICBPcHRp
b25hbDxJbnRTaXplPiBzaXplOworICAgIGRlY29kZXIgPj4gc2l6ZTsKKyAgICBpZiAoIXNpemUp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBhdXRvIGNvbXB1dGVkQnVmZmVy
U2l6ZSA9IFBpeGVsQnVmZmVyOjpjb21wdXRlQnVmZmVyU2l6ZShmb3JtYXQsIHNpemUpOworICAg
IGF1dG8gY29tcHV0ZWRCdWZmZXJTaXplID0gUGl4ZWxCdWZmZXI6OmNvbXB1dGVCdWZmZXJTaXpl
KCpmb3JtYXQsICpzaXplKTsKICAgICBpZiAoY29tcHV0ZWRCdWZmZXJTaXplLmhhc092ZXJmbG93
ZWQoKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIApAQCAtMTA3LDcgKzEwOSw3IEBA
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPFBpeGVsQnUKICAgICBpZiAoIWRlY29k
ZXIudGVtcGxhdGUgYnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjx1aW50OF90PihidWZmZXJT
aXplKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIGF1dG8gcmVzdWx0ID0g
UGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZUZvckRlY29kaW5nKGZvcm1hdCwgc2l6ZSwgYnVmZmVyU2l6
ZSk7CisgICAgYXV0byByZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlRm9yRGVjb2Rpbmco
V1RGTW92ZSgqZm9ybWF0KSwgKnNpemUsIGJ1ZmZlclNpemUpOwogICAgIGlmICghcmVzdWx0KQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckNvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVyc2lvbi5jcHAJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Bp
eGVsQnVmZmVyQ29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEyICsyNywxMSBA
QAogI2luY2x1ZGUgIlBpeGVsQnVmZmVyQ29udmVyc2lvbi5oIgogCiAjaW5jbHVkZSAiQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbi5oIgotI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAi
UGl4ZWxGb3JtYXQuaCIKIAogI2lmIFVTRShBQ0NFTEVSQVRFKSAmJiBVU0UoQ0cpCi0jaW5jbHVk
ZSAiQ29sb3JTcGFjZUNHLmgiCiAjaW5jbHVkZSA8QWNjZWxlcmF0ZS9BY2NlbGVyYXRlLmg+CiAj
ZW5kaWYKIApAQCAtNzEsNyArNzAsNyBAQCBzdGF0aWMgaW5saW5lIHZJbWFnZV9DR0ltYWdlRm9y
bWF0IG1ha2VWCiAKICAgICByZXN1bHQuYml0c1BlckNvbXBvbmVudCA9IGJpdHNQZXJDb21wb25l
bnQ7CiAgICAgcmVzdWx0LmJpdHNQZXJQaXhlbCA9IGJpdHNQZXJQaXhlbDsKLSAgICByZXN1bHQu
Y29sb3JTcGFjZSA9IGNhY2hlZENHQ29sb3JTcGFjZShmb3JtYXQuY29sb3JTcGFjZSk7CisgICAg
cmVzdWx0LmNvbG9yU3BhY2UgPSBmb3JtYXQuY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2Uo
KTsKICAgICByZXN1bHQuYml0bWFwSW5mbyA9IGJpdG1hcEluZm87CiAgICAgcmVzdWx0LnZlcnNp
b24gPSAwOwogICAgIHJlc3VsdC5kZWNvZGUgPSBudWxscHRyOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5oCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1
ZmZlckZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIkFscGhhUHJlbXVsdGlwbGljYXRpb24uaCIKLSNpbmNsdWRlICJDb2xv
clNwYWNlLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAi
UGl4ZWxGb3JtYXQuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9P
cHRpb25hbC5oPgpAQCAtNTEsMTkgKzUxLDIyIEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgUGl4ZWxCdWZmZXIKIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8UGl4ZWxC
dWZmZXJGb3JtYXQ+IFBpeGVsQnVmZmVyRm9ybWF0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
IHsKLSAgICBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGFscGhhRm9ybWF0OwotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoYWxwaGFGb3JtYXQpKQorICAgIE9wdGlvbmFsPEFscGhhUHJlbXVsdGlwbGlj
YXRpb24+IGFscGhhRm9ybWF0OworICAgIGRlY29kZXIgPj4gYWxwaGFGb3JtYXQ7CisgICAgaWYg
KCFhbHBoYUZvcm1hdCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIFBpeGVs
Rm9ybWF0IHBpeGVsRm9ybWF0OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGl4ZWxGb3JtYXQp
KQorICAgIE9wdGlvbmFsPFBpeGVsRm9ybWF0PiBwaXhlbEZvcm1hdDsKKyAgICBkZWNvZGVyID4+
IHBpeGVsRm9ybWF0OworICAgIGlmICghcGl4ZWxGb3JtYXQpCiAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAKLSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZTsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGNvbG9yU3BhY2UpKQorICAgIE9wdGlvbmFsPERlc3RpbmF0aW9u
Q29sb3JTcGFjZT4gY29sb3JTcGFjZTsKKyAgICBkZWNvZGVyID4+IGNvbG9yU3BhY2U7CisgICAg
aWYgKCFjb2xvclNwYWNlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgcmV0
dXJuIHsgeyBhbHBoYUZvcm1hdCwgcGl4ZWxGb3JtYXQsIGNvbG9yU3BhY2UgfSB9OworICAgIHJl
dHVybiB7IHsgV1RGTW92ZSgqYWxwaGFGb3JtYXQpLCBXVEZNb3ZlKCpwaXhlbEZvcm1hdCksIFdU
Rk1vdmUoKmNvbG9yU3BhY2UpIH0gfTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1Db2xvclNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1Db2xvclNwYWNlLmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1Db2xvclNw
YWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIFVTRShDRykKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Cit0eXBl
ZGVmIHN0cnVjdCBDR0NvbG9yU3BhY2UqIENHQ29sb3JTcGFjZVJlZjsKKyNlbHNlCisjaW5jbHVk
ZSA8d3RmL0VudW1UcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNlbmRpZgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBVU0UoQ0cpCisKK3VzaW5nIFBsYXRmb3JtQ29s
b3JTcGFjZSA9IFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+OwordXNpbmcgUGxhdGZvcm1Db2xv
clNwYWNlVmFsdWUgPSBDR0NvbG9yU3BhY2VSZWY7CisKKyNlbHNlCisKK2NsYXNzIFBsYXRmb3Jt
Q29sb3JTcGFjZSB7CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBOYW1lIHsKKyAgICAgICAgU1JH
QgorI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKKyAgICAg
ICAgLCBMaW5lYXJTUkdCCisjZW5kaWYKKyNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BB
Q0VfRElTUExBWV9QMykKKyAgICAgICAgLCBEaXNwbGF5UDMKKyNlbmRpZgorICAgIH07CisKKyAg
ICBQbGF0Zm9ybUNvbG9yU3BhY2UoTmFtZSBuYW1lKQorICAgICAgICA6IG1fbmFtZSB7IG5hbWUg
fQorICAgIHsKKyAgICB9CisKKyAgICBOYW1lIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsg
fQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxQbGF0Zm9y
bUNvbG9yU3BhY2U+IGRlY29kZShEZWNvZGVyJik7CisKK3ByaXZhdGU6CisgICAgTmFtZSBtX25h
bWU7CisKK307Cit1c2luZyBQbGF0Zm9ybUNvbG9yU3BhY2VWYWx1ZSA9IFBsYXRmb3JtQ29sb3JT
cGFjZTo6TmFtZTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBQbGF0Zm9ybUNvbG9y
U3BhY2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwg
bV9uYW1lOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxQbGF0Zm9ybUNv
bG9yU3BhY2U+IFBsYXRmb3JtQ29sb3JTcGFjZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7
CisgICAgT3B0aW9uYWw8UGxhdGZvcm1Db2xvclNwYWNlOjpOYW1lPiBuYW1lOworICAgIGRlY29k
ZXIgPj4gbmFtZTsKKyAgICBpZiAoIW5hbWUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICByZXR1cm4gUGxhdGZvcm1Db2xvclNwYWNlIHsgKm5hbWUgfTsKK30KKworI2VuZGlm
CisKK30KKworbmFtZXNwYWNlIFdURiB7CisKKyNpZiAhVVNFKENHKQorCit0ZW1wbGF0ZTw+IHN0
cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZT4geworICAg
IHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6OlBsYXRmb3JtQ29s
b3JTcGFjZTo6TmFtZSwKKyAgICAgICAgV2ViQ29yZTo6UGxhdGZvcm1Db2xvclNwYWNlOjpOYW1l
OjpTUkdCCisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQor
ICAgICAgICAsIFdlYkNvcmU6OlBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZTo6TGluZWFyU1JHQgor
I2VuZGlmCisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCisg
ICAgICAgICwgV2ViQ29yZTo6UGxhdGZvcm1Db2xvclNwYWNlOjpOYW1lOjpEaXNwbGF5UDMKKyNl
bmRpZgorICAgID47Cit9OworCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRl
b1NhbXBsZS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyAr
NTYsNyBAQCBzdGF0aWMgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+CiAgICAgfQog
CiAgICAgSW50U2l6ZSBzaXplIHsgc3RhdGljX2Nhc3Q8aW50PihDVlBpeGVsQnVmZmVyR2V0V2lk
dGgocGl4ZWxCdWZmZXIpKSwgc3RhdGljX2Nhc3Q8aW50PihDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0
KHBpeGVsQnVmZmVyKSkgfTsKLSAgICBhdXRvIGlvU3VyZmFjZSA9ICBJT1N1cmZhY2U6OmNyZWF0
ZShzaXplLCBzUkdCQ29sb3JTcGFjZVJlZigpLCBJT1N1cmZhY2U6OkZvcm1hdDo6QkdSQSk7Cisg
ICAgYXV0byBpb1N1cmZhY2UgPSAgSU9TdXJmYWNlOjpjcmVhdGUoc2l6ZSwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCksIElPU3VyZmFjZTo6Rm9ybWF0OjpCR1JBKTsKIAogICAgIElPU3Vy
ZmFjZTo6TG9ja2VyIGxvY2soKmlvU3VyZmFjZSk7CiAgICAgdkltYWdlX0J1ZmZlciBzcmM7CkBA
IC0xMTMsNyArMTEzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBSZW1v
dAogICAgICAgICBzdXJmYWNlID0gaW9TdXJmYWNlLT5zdXJmYWNlKCk7CiAgICAgfQogCi0gICAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4obmV3IFJlbW90ZVZpZGVv
U2FtcGxlKHN1cmZhY2UsIHNSR0JDb2xvclNwYWNlUmVmKCksIHNhbXBsZS5wcmVzZW50YXRpb25U
aW1lKCksIHNhbXBsZS52aWRlb1JvdGF0aW9uKCksIHNhbXBsZS52aWRlb01pcnJvcmVkKCkpKTsK
KyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPihuZXcgUmVtb3Rl
VmlkZW9TYW1wbGUoc3VyZmFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHNhbXBs
ZS5wcmVzZW50YXRpb25UaW1lKCksIHNhbXBsZS52aWRlb1JvdGF0aW9uKCksIHNhbXBsZS52aWRl
b01pcnJvcmVkKCkpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBS
ZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRlKENWUGl4ZWxCdWZmZXJSZWYgaW1hZ2VCdWZmZXIsIE1l
ZGlhVGltZSYmIHByZXNlbnRhdGlvblRpbWUsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJv
dGF0aW9uKQpAQCAtMTI0LDEwICsxMjQsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVv
U2FtcGxlPiBSZW1vdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1
cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPihuZXcgUmVtb3RlVmlkZW9TYW1w
bGUoc3VyZmFjZSwgc1JHQkNvbG9yU3BhY2VSZWYoKSwgV1RGTW92ZShwcmVzZW50YXRpb25UaW1l
KSwgcm90YXRpb24sIGZhbHNlKSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVW
aWRlb1NhbXBsZT4obmV3IFJlbW90ZVZpZGVvU2FtcGxlKHN1cmZhY2UsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpLCBXVEZNb3ZlKHByZXNlbnRhdGlvblRpbWUpLCByb3RhdGlvbiwgZmFs
c2UpKTsKIH0KIAotUmVtb3RlVmlkZW9TYW1wbGU6OlJlbW90ZVZpZGVvU2FtcGxlKElPU3VyZmFj
ZVJlZiBzdXJmYWNlLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwgTWVkaWFUaW1lJiYgdGlt
ZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24sIGJvb2wgbWlycm9yZWQpCitS
ZW1vdGVWaWRlb1NhbXBsZTo6UmVtb3RlVmlkZW9TYW1wbGUoSU9TdXJmYWNlUmVmIHN1cmZhY2Us
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgTWVkaWFUaW1lJiYgdGlt
ZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24gcm90YXRpb24sIGJvb2wgbWlycm9yZWQpCiAg
ICAgOiBtX2lvU3VyZmFjZShXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TdXJmYWNlKHN1
cmZhY2UsIGNvbG9yU3BhY2UpKQogICAgICwgbV9yb3RhdGlvbihyb3RhdGlvbikKICAgICAsIG1f
dGltZShXVEZNb3ZlKHRpbWUpKQpAQCAtMTQwLDcgKzE0MCw3IEBAIFJlbW90ZVZpZGVvU2FtcGxl
OjpSZW1vdGVWaWRlb1NhbXBsZShJT1MKIElPU3VyZmFjZVJlZiBSZW1vdGVWaWRlb1NhbXBsZTo6
c3VyZmFjZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lvU3VyZmFjZSAmJiBtX3NlbmRSaWdodCkK
LSAgICAgICAgY29uc3RfY2FzdDxSZW1vdGVWaWRlb1NhbXBsZSo+KHRoaXMpLT5tX2lvU3VyZmFj
ZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGNvbnN0
X2Nhc3Q8UmVtb3RlVmlkZW9TYW1wbGUqPih0aGlzKS0+bV9zZW5kUmlnaHQpLCBzUkdCQ29sb3JT
cGFjZVJlZigpKTsKKyAgICAgICAgY29uc3RfY2FzdDxSZW1vdGVWaWRlb1NhbXBsZSo+KHRoaXMp
LT5tX2lvU3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChX
VEZNb3ZlKGNvbnN0X2Nhc3Q8UmVtb3RlVmlkZW9TYW1wbGUqPih0aGlzKS0+bV9zZW5kUmlnaHQp
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAKICAgICByZXR1cm4gbV9pb1N1cmZh
Y2UgPyBtX2lvU3VyZmFjZS0+c3VyZmFjZSgpIDogbnVsbHB0cjsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAko
cmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVt
b3RlVmlkZW9TYW1wbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBAIHB1Ymxp
YzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgUmVtb3RlVmlkZW9TYW1wbGUoSU9TdXJmYWNlUmVm
LCBDR0NvbG9yU3BhY2VSZWYsIE1lZGlhVGltZSYmLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlv
biwgYm9vbCk7CisgICAgUmVtb3RlVmlkZW9TYW1wbGUoSU9TdXJmYWNlUmVmLCBjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmLCBNZWRpYVRpbWUmJiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRp
b24sIGJvb2wpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gbV9p
b1N1cmZhY2U7CiAgICAgV1RGOjpNYWNoU2VuZFJpZ2h0IG1fc2VuZFJpZ2h0OwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0Js
dXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICAgICAg
Y2xlYXJTY3JhdGNoQnVmZmVyKCk7CiAKICAgICAgICAgLy8gU2hhZG93Qmx1ciBpcyBub3QgdXNl
ZCB3aXRoIGFjY2VsZXJhdGVkIGRyYXdpbmcsIHNvIGl0J3MgT0sgdG8gbWFrZSBhbiB1bmNvbmRp
dGlvbmFsbHkgdW5hY2NlbGVyYXRlZCBidWZmZXIuCi0gICAgICAgIG1faW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHJvdW5kZWRTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJh
dGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CisgICAgICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJvdW5kZWRTaXpl
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZm
ZXI7CiAgICAgfQogCkBAIC02MDQsNyArNjA0LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5z
ZXRTaGFkb3coY29uc3QgQQogCiB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91
dFRpbGluZyhjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBz
aGFkb3dlZFJlY3QsIGNvbnN0IExheWVySW1hZ2VQcm9wZXJ0aWVzJiBsYXllckltYWdlUHJvcGVy
dGllcywgY29uc3QgRHJhd0J1ZmZlckNhbGxiYWNrJiBkcmF3QnVmZmVyKQogewotICAgIGF1dG8g
bGF5ZXJJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoZXhwYW5kZWRJbnRTaXplKGxheWVySW1h
Z2VQcm9wZXJ0aWVzLmxheWVyU2l6ZSksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBh
dXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZShsYXll
ckltYWdlUHJvcGVydGllcy5sYXllclNpemUpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
LCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
ICAgICBpZiAoIWxheWVySW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApAQCAtNjMyLDcgKzYzMiw3
IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGkKIAogdm9pZCBTaGFk
b3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dXaXRob3V0VGlsaW5nKGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYsIGNvbnN0IEZsb2F0UmVjdCYgZnVsbFJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhv
bGVSZWN0LCBjb25zdCBMYXllckltYWdlUHJvcGVydGllcyYgbGF5ZXJJbWFnZVByb3BlcnRpZXMs
IGNvbnN0IERyYXdCdWZmZXJDYWxsYmFjayYgZHJhd0J1ZmZlcikKIHsKLSAgICBhdXRvIGxheWVy
SW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJv
cGVydGllcy5sYXllclNpemUpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBs
YXllckltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShleHBhbmRlZEludFNpemUobGF5ZXJJbWFn
ZVByb3BlcnRpZXMubGF5ZXJTaXplKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAg
aWYgKCFsYXllckltYWdlKQogICAgICAgICByZXR1cm47CiAKQEAgLTcwNSw3ICs3MDUsNyBAQCB2
b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aFRpbGluCiAjZW5kaWYKIAogICAgIGlm
ICghbGF5ZXJJbWFnZUJ1ZmZlcikgewotICAgICAgICBsYXllckltYWdlQnVmZmVyID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
IDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAg
ICAgICAgbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGVtcGxhdGVTaXpl
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgaWYgKCFsYXllckltYWdlQnVm
ZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTc2Myw3ICs3NjMsNyBAQCB2b2lk
IFNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpCiAjZW5kaWYKIAogICAgIGlmICgh
bGF5ZXJJbWFnZUJ1ZmZlcikgewotICAgICAgICBsYXllckltYWdlQnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAg
ICAgbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGVtcGxhdGVTaXplLCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgaWYgKCFsYXllckltYWdlQnVmZmVy
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTkwMyw3ICs5MDMsNyBAQCB2b2lkIFNo
YWRvd0JsdXI6OmJsdXJTaGFkb3dCdWZmZXIoSW1hZ2VCCiAgICAgaWYgKG1fdHlwZSAhPSBCbHVy
U2hhZG93KQogICAgICAgICByZXR1cm47CiAKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQg
eyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpS
R0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgUGl4ZWxCdWZmZXJGb3Jt
YXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhl
bEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgSW50
UmVjdCBibHVyUmVjdChJbnRQb2ludCgpLCB0ZW1wbGF0ZVNpemUpOwogICAgIGF1dG8gbGF5ZXJE
YXRhID0gbGF5ZXJJbWFnZS5nZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIGJsdXJSZWN0KTsKICAgICBp
ZiAoIWxheWVyRGF0YSkKQEAgLTkzMyw3ICs5MzMsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdT
aGFkb3dMYXllcihjb25zdCBBCiAKICAgICBhZGp1c3RCbHVyUmFkaXVzKHRyYW5zZm9ybSk7CiAK
LSAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6
ZShsYXllckltYWdlUHJvcGVydGllcy0+bGF5ZXJTaXplKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdS
QTgpOworICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoZXhwYW5kZWRJ
bnRTaXplKGxheWVySW1hZ2VQcm9wZXJ0aWVzLT5sYXllclNpemUpLCBSZW5kZXJpbmdNb2RlOjpV
bmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKICAgICBpZiAoIWxheWVySW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdM
QU5HTEUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyB2b2lkIHdp
cGVBbHBoYUNoYW5uZWxGcm9tUGl4ZWxzKGkKIAogT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIHsKLSAgICBQ
aXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11
bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
IH07CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlv
bjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpIH07CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlD
cmVhdGUoZm9ybWF0LCBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpKTsKICAgICBpZiAoIXBp
eGVsQnVmZmVyKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTQsNyArNDE0LDcgQEAgRmxvYXRSZWN0IEdyYXBoaWNz
Q29udGV4dEltcGxDYWlybzo6cm91bgogICAgIHJldHVybiBDYWlybzo6U3RhdGU6OnJvdW5kVG9E
ZXZpY2VQaXhlbHMobV9wbGF0Zm9ybUNvbnRleHQsIHJlY3QpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dEltcGxDYWlybzo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4m
JikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMo
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRnVuY3Rpb248
dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikKIHsKICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVu
dGVkLgogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0SW1wbENhaXJvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgJKHJldmlzaW9u
IDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dEltcGxDYWlyby5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAg
cHVibGljOgogICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSBvdmVycmlk
ZTsKICAgICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsaXBUb0lt
YWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
RGVzdGluYXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYm
KSBvdmVycmlkZTsKKyAgICB2b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGdW5jdGlvbjx2
b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKICNpZiBFTkFCTEUoVklERU8pCiAg
ICAgdm9pZCBwYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uKSBvdmVycmlkZTsKICAgICBib29sIGNhblBhaW50RnJhbWVGb3JNZWRpYShj
b25zdCBNZWRpYVBsYXllciYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
QmFja2VuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
QmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDE5ICs4OSwxOSBAQCB2b2lkIEltYWdl
QnVmZmVyQ2Fpcm9CYWNrZW5kOjpjbGlwVG9NYXNrCiAgICAgICAgIENhaXJvOjpjbGlwVG9JbWFn
ZUJ1ZmZlcigqZGVzdENvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIGltYWdlLT5wbGF0Zm9ybUlt
YWdlKCkuZ2V0KCksIGRlc3RSZWN0KTsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2Vu
ZDo6dHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc3JjQ29sb3JTcGFj
ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGRlc3RDb2xvclNwYWNlKQordm9pZCBJbWFnZUJ1ZmZl
ckNhaXJvQmFja2VuZDo6dHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmIHNyY0NvbG9yU3BhY2UsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgZGVzdENv
bG9yU3BhY2UpCiB7CiAgICAgaWYgKHNyY0NvbG9yU3BhY2UgPT0gZGVzdENvbG9yU3BhY2UpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIG9ubHkgc1JHQiA8LT4gbGluZWFyUkdCIGFyZSBzdXBw
b3J0ZWQgYXQgdGhlIG1vbWVudAotICAgIGlmICgoc3JjQ29sb3JTcGFjZSAhPSBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OkxpbmVhclNSR0IgJiYgc3JjQ29sb3JTcGFjZSAhPSBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IpCi0gICAgICAgIHx8IChkZXN0Q29sb3JTcGFjZSAhPSBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OkxpbmVhclNSR0IgJiYgZGVzdENvbG9yU3BhY2UgIT0gRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKSkKKyAgICBpZiAoKHNyY0NvbG9yU3BhY2UgIT0gRGVzdGluYXRpb25D
b2xvclNwYWNlOjpMaW5lYXJTUkdCKCkgJiYgc3JjQ29sb3JTcGFjZSAhPSBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSkKKyAgICAgICAgfHwgKGRlc3RDb2xvclNwYWNlICE9IERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigpICYmIGRlc3RDb2xvclNwYWNlICE9IERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9wYXJhbWV0
ZXJzLmNvbG9yU3BhY2UgPSBkZXN0Q29sb3JTcGFjZTsKIAotICAgIGlmIChkZXN0Q29sb3JTcGFj
ZSA9PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IpIHsKKyAgICBpZiAoZGVzdENv
bG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCkpIHsKICAgICAg
ICAgc3RhdGljIGNvbnN0IHN0ZDo6YXJyYXk8dWludDhfdCwgMjU2PiBsaW5lYXJSZ2JMVVQgPSBb
XSB7CiAgICAgICAgICAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4gYXJyYXk7CiAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKQEAgLTExMiw3ICsxMTIs
NyBAQCB2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjp0cmFuc2Zvcm1DCiAgICAgICAgICAg
ICByZXR1cm4gYXJyYXk7CiAgICAgICAgIH0oKTsKICAgICAgICAgcGxhdGZvcm1UcmFuc2Zvcm1D
b2xvclNwYWNlKGxpbmVhclJnYkxVVCk7Ci0gICAgfSBlbHNlIGlmIChkZXN0Q29sb3JTcGFjZSA9
PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpIHsKKyAgICB9IGVsc2UgaWYgKGRlc3RDb2xv
clNwYWNlID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKSB7CiAgICAgICAgIHN0YXRp
YyBjb25zdCBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4gZGV2aWNlUmdiTFVUPSBbXSB7CiAgICAg
ICAgICAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4gYXJyYXk7CiAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJD
YWlyb0JhY2tlbmQuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsaXBUb01hc2soR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkgb3ZlcnJpZGU7CiAKLSAgICB2
b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIHNyY0NvbG9yU3Bh
Y2UsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBkZXN0Q29sb3JTcGFjZSkgb3ZlcnJpZGU7CisgICAg
dm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgc3Jj
Q29sb3JTcGFjZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBkZXN0Q29sb3JTcGFjZSkg
b3ZlcnJpZGU7CiAKICAgICBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdCBvdmVy
cmlkZTsKICAgICBWZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAkocmV2aXNpb24g
Mjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksMTMgKzI5
LDE0IEBACiAjaWYgVVNFKENHKQogCiAjaW5jbHVkZSAiQ29sb3JTcGFjZUNHLmgiCisjaW5jbHVk
ZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8
cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2lu
Y2x1ZGUgPHd0Zi9UaW55TFJVQ2FjaGUuaD4KLSNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFw
aGljc1NQSS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYv
VGlueUxSVUNhY2hlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBSZXRhaW5QdHI8
Q0dDb2xvclJlZj4gY3JlYXRlQ0dDb2xvcihjb25zdCBDb2xvciYpOwpAQCAtOTEsMzQgKzkyLDM4
IEBAIENvbG9yOjpDb2xvcihDR0NvbG9yUmVmIGNvbG9yLCBPcHRpb25TZXQKIHsKIH0KIAotc3Rh
dGljIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjcmVhdGVDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2xv
cikKK3N0YXRpYyBzdGQ6OnBhaXI8Q0dDb2xvclNwYWNlUmVmLCBDb2xvckNvbXBvbmVudHM8Zmxv
YXQsIDQ+PiBjb252ZXJ0VG9DR0NvbXBhdGlibGVDb21wb25lbnRzKENvbG9yU3BhY2UgY29sb3JT
cGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb21wb25lbnRzKQogewotICAgIGF1dG8g
W2NvbG9yU3BhY2UsIGNvbXBvbmVudHNdID0gY29sb3IuY29sb3JTcGFjZUFuZENvbXBvbmVudHMo
KTsKLQotICAgIGF1dG8gY2dDb2xvclNwYWNlID0gY2FjaGVkTnVsbGFibGVDR0NvbG9yU3BhY2Uo
Y29sb3JTcGFjZSk7Ci0KICAgICAvLyBTb21lIENHIHBvcnRzIGRvbid0IHN1cHBvcnQgYWxsIHRo
ZSBjb2xvciBzcGFjZXMgcmVxdWlyZWQgYW5kIHJldHVybgogICAgIC8vIG51bGxwdHIgZm9yIHVu
c3VwcG9ydGVkIGNvbG9yIHNwYWNlcy4gSW4gdGhvc2UgY2FzZXMsIHdlIGVhZ2VybHkgY29udmVy
dAogICAgIC8vIHRoZSBjb2xvciBpbnRvIGVpdGhlciBleHRlbmRlZCBzUkdCIG9yIG5vcm1hbCBz
UkdCLCBpZiBleHRlbmRlZCBzUkdCIGlzCi0gICAgLy8gbm90IHN1cHBvcnRlZCwgYmVmb3JlIGNy
ZWF0aW5nIHRoZSBDR0NvbG9yUmVmLgorICAgIC8vIG5vdCBzdXBwb3J0ZWQuCisKKyAgICBhdXRv
IGNnQ29sb3JTcGFjZSA9IGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpOwog
ICAgIGlmICghY2dDb2xvclNwYWNlKSB7CiAjaWYgSEFWRShDT1JFX0dSQVBISUNTX0VYVEVOREVE
X1NSR0JfQ09MT1JfU1BBQ0UpCi0gICAgICAgIGF1dG8gY29sb3JDb252ZXJ0ZWRUb0V4dGVuZGVk
U1JHQkEgPSBjYWxsV2l0aENvbG9yVHlwZShjb21wb25lbnRzLCBjb2xvclNwYWNlLCBbXSAoY29u
c3QgYXV0byYgY29sb3IpIHsKLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0Q29sb3I8RXh0ZW5k
ZWRTUkdCQTxmbG9hdD4+KGNvbG9yKTsKKyAgICAgICAgYXV0byBjb21wb25lbnRzQ29udmVydGVk
VG9FeHRlbmRlZFNSR0JBID0gY2FsbFdpdGhDb2xvclR5cGUoY29tcG9uZW50cywgY29sb3JTcGFj
ZSwgW10gKGNvbnN0IGF1dG8mIGNvbG9yKSB7CisgICAgICAgICAgICByZXR1cm4gYXNDb2xvckNv
bXBvbmVudHMoY29udmVydENvbG9yPEV4dGVuZGVkU1JHQkE8ZmxvYXQ+Pihjb2xvcikpOwogICAg
ICAgICB9KTsKLSAgICAgICAgY29tcG9uZW50cyA9IGFzQ29sb3JDb21wb25lbnRzKGNvbG9yQ29u
dmVydGVkVG9FeHRlbmRlZFNSR0JBKTsKLSAgICAgICAgY2dDb2xvclNwYWNlID0gZXh0ZW5kZWRT
UkdCQ29sb3JTcGFjZVJlZigpOworICAgICAgICByZXR1cm4geyBleHRlbmRlZFNSR0JDb2xvclNw
YWNlUmVmKCksIGNvbXBvbmVudHNDb252ZXJ0ZWRUb0V4dGVuZGVkU1JHQkEgfTsKICNlbHNlCi0g
ICAgICAgIGF1dG8gY29sb3JDb252ZXJ0ZWRUb1NSR0JBID0gY2FsbFdpdGhDb2xvclR5cGUoY29t
cG9uZW50cywgY29sb3JTcGFjZSwgW10gKGNvbnN0IGF1dG8mIGNvbG9yKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gY29udmVydENvbG9yPFNSR0JBPGZsb2F0Pj4oY29sb3IpOworICAgICAgICBhdXRv
IGNvbXBvbmVudHNDb252ZXJ0ZWRUb1NSR0JBID0gY2FsbFdpdGhDb2xvclR5cGUoY29tcG9uZW50
cywgY29sb3JTcGFjZSwgW10gKGNvbnN0IGF1dG8mIGNvbG9yKSB7CisgICAgICAgICAgICByZXR1
cm4gYXNDb2xvckNvbXBvbmVudHMoY29udmVydENvbG9yPFNSR0JBPGZsb2F0Pj4oY29sb3IpKTsK
ICAgICAgICAgfSk7Ci0gICAgICAgIGNvbXBvbmVudHMgPSBhc0NvbG9yQ29tcG9uZW50cyhjb2xv
ckNvbnZlcnRlZFRvU1JHQkEpOwotICAgICAgICBjZ0NvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFj
ZVJlZigpOworICAgICAgICByZXR1cm4geyBzUkdCQ29sb3JTcGFjZVJlZigpLCBjb21wb25lbnRz
Q29udmVydGVkVG9TUkdCQSB9OwogI2VuZGlmCiAgICAgfQogCi0gICAgYXV0byBbciwgZywgYiwg
YV0gPSBjb21wb25lbnRzOwotICAgIENHRmxvYXQgY2dGbG9hdENvbXBvbmVudHNbNF0geyByLCBn
LCBiLCBhIH07CisgICAgcmV0dXJuIHsgY2dDb2xvclNwYWNlLCBjb21wb25lbnRzIH07Cit9CisK
K3N0YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY3JlYXRlQ0dDb2xvcihjb25zdCBDb2xvciYg
Y29sb3IpCit7CisgICAgYXV0byBbY29sb3JTcGFjZSwgY29tcG9uZW50c10gPSBjb2xvci5jb2xv
clNwYWNlQW5kQ29tcG9uZW50cygpOworICAgIGF1dG8gW2NnQ29sb3JTcGFjZSwgY2dDb21wYXRp
YmxlQ29tcG9uZW50c10gPSBjb252ZXJ0VG9DR0NvbXBhdGlibGVDb21wb25lbnRzKGNvbG9yU3Bh
Y2UsIGNvbXBvbmVudHMpOworICAgIAorICAgIGF1dG8gW2MxLCBjMiwgYzMsIGM0XSA9IGNnQ29t
cGF0aWJsZUNvbXBvbmVudHM7CisgICAgQ0dGbG9hdCBjZ0Zsb2F0Q29tcG9uZW50c1s0XSB7IGMx
LCBjMiwgYzMsIGM0IH07CiAKICAgICByZXR1cm4gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKGNnQ29s
b3JTcGFjZSwgY2dGbG9hdENvbXBvbmVudHMpKTsKIH0KQEAgLTE2MSw2ICsxNjYsMjQgQEAgQ0dD
b2xvclJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJiBjbwogICAgIHJldHVybiBjYWNoZS5n
ZXQoKS5nZXQoY29sb3IpLmdldCgpOwogfQogCitDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IHBs
YXRmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlIGlucHV0Q29sb3JTcGFjZSwg
Q29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBpbnB1dENvbG9yQ29tcG9uZW50cywgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiBvdXRwdXRDb2xvclNwYWNlKQoreworICAgIC8vIEZJWE1FOiBJ
bnZlc3RpZ2F0ZSBvcHRpbWl6aW5nIHRoaXMgdG8gdXNlIHRoZSBidWlsdGluIGNvbG9yIGNvbnZl
cnNpb24gY29kZSBmb3Igc3VwcG9ydGVkIGNvbG9yIHNwYWNlcy4KKworICAgIGF1dG8gW2NnSW5w
dXRDb2xvclNwYWNlLCBjZ0NvbXBhdGlibGVDb21wb25lbnRzXSA9IGNvbnZlcnRUb0NHQ29tcGF0
aWJsZUNvbXBvbmVudHMoaW5wdXRDb2xvclNwYWNlLCBpbnB1dENvbG9yQ29tcG9uZW50cyk7Cisg
ICAgaWYgKGNnSW5wdXRDb2xvclNwYWNlID09IG91dHB1dENvbG9yU3BhY2UucGxhdGZvcm1Db2xv
clNwYWNlKCkpCisgICAgICAgIHJldHVybiBjZ0NvbXBhdGlibGVDb21wb25lbnRzOworCisgICAg
YXV0byBbYzEsIGMyLCBjMywgYzRdID0gY2dDb21wYXRpYmxlQ29tcG9uZW50czsKKyAgICBDR0Zs
b2F0IHNvdXJjZUNvbXBvbmVudHNbNF0geyBjMSwgYzIsIGMzLCBjNCB9OworICAgIENHRmxvYXQg
ZGVzdGluYXRpb25Db21wb25lbnRzWzRdIHsgfTsKKworICAgIGF1dG8gdHJhbnNmb3JtID0gYWRv
cHRDRihDR0NvbG9yVHJhbnNmb3JtQ3JlYXRlKG91dHB1dENvbG9yU3BhY2UucGxhdGZvcm1Db2xv
clNwYWNlKCksIG51bGxwdHIpKTsKKyAgICBhdXRvIHJlc3VsdCA9IENHQ29sb3JUcmFuc2Zvcm1D
b252ZXJ0Q29sb3JDb21wb25lbnRzKHRyYW5zZm9ybS5nZXQoKSwgY2dJbnB1dENvbG9yU3BhY2Us
IGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQsIHNvdXJjZUNvbXBvbmVudHMsIGRlc3RpbmF0aW9u
Q29tcG9uZW50cyk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgcmV0
dXJuIHsgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRlc3RpbmF0aW9uQ29tcG9uZW50c1swXSksIHN0YXRp
Y19jYXN0PGZsb2F0PihkZXN0aW5hdGlvbkNvbXBvbmVudHNbMV0pLCBzdGF0aWNfY2FzdDxmbG9h
dD4oZGVzdGluYXRpb25Db21wb25lbnRzWzJdKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRlc3RpbmF0
aW9uQ29tcG9uZW50c1szXSkgfTsKK30KKwogfQogCiAjZW5kaWYgLy8gVVNFKENHKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNH
LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0NvbG9yU3BhY2VDRy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksMjMgKzExOSw0IEBAIHN0
YXRpYyBpbmxpbmUgQ0dDb2xvclNwYWNlUmVmIGNhY2hlZE51bGwKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotLy8gTk9URTogU2luY2UgdGhpcyBmdW5jdGlvbiBpcyBmb3IgKmRlc3RpbmF0aW9u
KiBjb2xvciBzcGFjZXMgd2hvc2UgY2FsbGVycyBhbHdheXMgZXhwZWN0IGEgbm9uLW51bGwgY29s
b3Igc3BhY2UsIHRoaXMgZnVuY3Rpb24gaXMgZ3VhcmFudGVlZCB0byByZXR1cm4gbm9uLW51bGws
IHVubGlrZSBjYWNoZWROdWxsYWJsZUNHQ29sb3JTcGFjZSgpLgotc3RhdGljIGlubGluZSBDR0Nv
bG9yU3BhY2VSZWYgY2FjaGVkQ0dDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xv
clNwYWNlKQotewotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNhc2UgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCOgotICAgICAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsK
LSNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgY2Fz
ZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0I6Ci0gICAgICAgIHJldHVybiBsaW5l
YXJTUkdCQ29sb3JTcGFjZVJlZigpOwotI2VuZGlmCi0jaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NP
TE9SX1NQQUNFX0RJU1BMQVlfUDMpCi0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRp
c3BsYXlQMzoKLSAgICAgICAgcmV0dXJuIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKTsKLSNlbmRp
ZgotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gc1JHQkNvbG9y
U3BhY2VSZWYoKTsKLX0KLQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAJKHJldmlzaW9u
IDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNz
Q29udGV4dEdMQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MzIsNyArNTMyLDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGFpbnRUb0NhbgogICAgIH0pKTsKIAogICAgIGF1dG8g
aW1hZ2VTaXplID0gcGl4ZWxCdWZmZXIuc2l6ZSgpOwotICAgIGF1dG8gaW1hZ2UgPSBOYXRpdmVJ
bWFnZTo6Y3JlYXRlKGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1h
Z2VTaXplLmhlaWdodCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBjYWNoZWRDR0Nv
bG9yU3BhY2UocGl4ZWxCdWZmZXIuZm9ybWF0KCkuY29sb3JTcGFjZSksIGJpdG1hcEluZm8sIGRh
dGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKSk7
CisgICAgYXV0byBpbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihDR0ltYWdlQ3Jl
YXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCA0ICogaW1h
Z2VTaXplLndpZHRoKCksIHBpeGVsQnVmZmVyLmZvcm1hdCgpLmNvbG9yU3BhY2UucGxhdGZvcm1D
b2xvclNwYWNlKCksIGJpdG1hcEluZm8sIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtD
R1JlbmRlcmluZ0ludGVudERlZmF1bHQpKSk7CiAKICAgICAvLyBDU1Mgc3R5bGluZyBtYXkgY2F1
c2UgdGhlIGNhbnZhcydzIGNvbnRlbnQgdG8gYmUgcmVzaXplZCBvbgogICAgIC8vIHRoZSBwYWdl
LiBHbyBiYWNrIHRvIHRoZSBDYW52YXMgdG8gZmlndXJlIG91dCB0aGUgY29ycmVjdApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNl
UG9vbC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNpZiBIQVZFKElPU1VSRkFDRSkKIAorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JT
cGFjZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW5jbHVkZSA8Q29yZUdy
YXBoaWNzL0NvcmVHcmFwaGljcy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpA
QCAtNTksNyArNjAsNyBAQCBJT1N1cmZhY2VQb29sJiBJT1N1cmZhY2VQb29sOjpzaGFyZWRQb29s
CiAgICAgcmV0dXJuIHBvb2w7CiB9CiAKLXN0YXRpYyBib29sIHN1cmZhY2VNYXRjaGVzUGFyYW1l
dGVycyhJT1N1cmZhY2UmIHN1cmZhY2UsIEludFNpemUgcmVxdWVzdGVkU2l6ZSwgQ0dDb2xvclNw
YWNlUmVmIGNvbG9yU3BhY2UsIElPU3VyZmFjZTo6Rm9ybWF0IGZvcm1hdCkKK3N0YXRpYyBib29s
IHN1cmZhY2VNYXRjaGVzUGFyYW1ldGVycyhJT1N1cmZhY2UmIHN1cmZhY2UsIEludFNpemUgcmVx
dWVzdGVkU2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBJT1N1
cmZhY2U6OkZvcm1hdCBmb3JtYXQpCiB7CiAgICAgaWYgKGZvcm1hdCAhPSBzdXJmYWNlLmZvcm1h
dCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDIsNyArMTAzLDcgQEAgdm9pZCBJT1N1
cmZhY2VQb29sOjpkaWRVc2VTdXJmYWNlT2ZTaXplKAogICAgIG1fc2l6ZXNJblBydW5lT3JkZXIu
YXBwZW5kKHNpemUpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2VQ
b29sOjp0YWtlU3VyZmFjZShJbnRTaXplIHNpemUsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNl
LCBJT1N1cmZhY2U6OkZvcm1hdCBmb3JtYXQpCitzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJ
T1N1cmZhY2VQb29sOjp0YWtlU3VyZmFjZShJbnRTaXplIHNpemUsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYgY29sb3JTcGFjZSwgSU9TdXJmYWNlOjpGb3JtYXQgZm9ybWF0KQogewogICAg
IExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICBDYWNoZWRTdXJmYWNlTWFwOjppdGVyYXRv
ciBtYXBJdGVyID0gbV9jYWNoZWRTdXJmYWNlcy5maW5kKHNpemUpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuaAkocmV2
aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9T
dXJmYWNlUG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw4IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgRGVzdGluYXRhdGlvbkNvbG9yU3BhY2U7CisKIGNsYXNzIElP
U3VyZmFjZVBvb2wgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKElPU3VyZmFjZVBvb2wpOwog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNDcsNyArNDksNyBAQCBjbGFzcyBJT1N1
cmZhY2VQb29sIHsKIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSU9TdXJmYWNl
UG9vbCYgc2hhcmVkUG9vbCgpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gdGFr
ZVN1cmZhY2UoSW50U2l6ZSwgQ0dDb2xvclNwYWNlUmVmLCBJT1N1cmZhY2U6OkZvcm1hdCk7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gdGFrZVN1cmZhY2UoSW50U2l6ZSwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiwgSU9TdXJmYWNlOjpGb3JtYXQpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYWRkU3VyZmFjZShzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPik7CiAKICAg
ICB2b2lkIGRpc2NhcmRBbGxTdXJmYWNlcygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNw
cAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzQsNyArMTc0
LDcgQEAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IEltYWdlQnVmZmVyQ0dCYWNrZQogICAgICAgICAv
LyBGSVhNRTogU2hvdWxkIHRoaXMgYmUgdXNpbmcgdGhlIHNhbWUgbG9naWMgYXMgSW1hZ2VCdWZm
ZXJVdGlsaXRpZXNDRz8KIAogICAgICAgICAvLyBKUEVHcyBkb24ndCBoYXZlIGFuIGFscGhhIGNo
YW5uZWwsIHNvIHdlIGhhdmUgdG8gbWFudWFsbHkgY29tcG9zaXRlIG9uIHRvcCBvZiBibGFjay4K
LSAgICAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlv
bjo6UHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IgfTsKKyAgICAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9OwogICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gZ2V0
UGl4ZWxCdWZmZXIoZm9ybWF0LCBsb2dpY2FsUmVjdCgpKTsKICAgICAgICAgaWYgKCFwaXhlbEJ1
ZmZlcikKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTkyLDcgKzE5Miw3IEBAIFJl
dGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZUJ1ZmZlckNHQmFja2UKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgICAgIGF1dG8gaW1hZ2VTaXplID0gcGl4ZWxCdWZmZXItPnNpemUo
KTsKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgo
KSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBjYWNo
ZWRDR0NvbG9yU3BhY2UocGl4ZWxCdWZmZXItPmZvcm1hdCgpLmNvbG9yU3BhY2UpLCBrQ0dCaXRt
YXBCeXRlT3JkZXJEZWZhdWx0IHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0YVByb3Zp
ZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOworICAgICAg
ICByZXR1cm4gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNp
emUuaGVpZ2h0KCksIDgsIDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCksIHBpeGVsQnVmZmVyLT5m
b3JtYXQoKS5jb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBrQ0dCaXRtYXBCeXRlT3Jk
ZXJEZWZhdWx0IHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0YVByb3ZpZGVyLmdldCgp
LCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOwogICAgIH0KIAogICAgIGlm
IChyZXNvbHV0aW9uU2NhbGUoKSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2
ZVJlc29sdXRpb246OlllcykgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5k
LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
Miw3ICs2Miw3IEBAIHNpemVfdCBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y2FsY3UKICAg
ICByZXR1cm4gSW1hZ2VCdWZmZXJCYWNrZW5kOjpjYWxjdWxhdGVNZW1vcnlDb3N0KGJhY2tlbmRT
aXplLCBjYWxjdWxhdGVCeXRlc1BlclJvdyhiYWNrZW5kU2l6ZSkpOwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNr
ZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgQ0dDb2xvclNwYWNlUmVm
IGNnQ29sb3JTcGFjZSwgY29uc3QgSG9zdFdpbmRvdyopCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUo
Y29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgSG9zdFdpbmRvdyopCiB7CiAgICAg
QVNTRVJUKHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKIApA
QCAtODEsNyArODEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tl
CiAgICAgc2l6ZV90IG51bUJ5dGVzID0gYmFja2VuZFNpemUuaGVpZ2h0KCkgKiBieXRlc1BlclJv
dzsKICAgICB2ZXJpZnlJbWFnZUJ1ZmZlcklzQmlnRW5vdWdoKGRhdGEsIG51bUJ5dGVzKTsKIAot
ICAgIGF1dG8gY2dDb250ZXh0ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoZGF0YSwg
YmFja2VuZFNpemUud2lkdGgoKSwgYmFja2VuZFNpemUuaGVpZ2h0KCksIDgsIGJ5dGVzUGVyUm93
LCBjZ0NvbG9yU3BhY2UsIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRt
YXBCeXRlT3JkZXIzMkhvc3QpKTsKKyAgICBhdXRvIGNnQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRt
YXBDb250ZXh0Q3JlYXRlKGRhdGEsIGJhY2tlbmRTaXplLndpZHRoKCksIGJhY2tlbmRTaXplLmhl
aWdodCgpLCA4LCBieXRlc1BlclJvdywgcGFyYW1ldGVycy5jb2xvclNwYWNlLnBsYXRmb3JtQ29s
b3JTcGFjZSgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0
ZU9yZGVyMzJIb3N0KSk7CiAgICAgaWYgKCFjZ0NvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCkBAIC05NiwxNSArOTYsMTQgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+
IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFy
YW1ldGVycywgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIGlmIChhdXRv
IGNnQ29sb3JTcGFjZSA9IGNvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkgPyBjb250ZXh0Q29s
b3JTcGFjZShjb250ZXh0KSA6IG51bGxwdHIpCi0gICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIGNnQ29sb3JTcGFjZS5nZXQoKSwgbnVs
bHB0cik7CisgICAgaWYgKGF1dG8gY2dDb2xvclNwYWNlID0gY29udGV4dC5oYXNQbGF0Zm9ybUNv
bnRleHQoKSA/IGNvbnRleHRDb2xvclNwYWNlKGNvbnRleHQpIDogbnVsbHB0cikgeworICAgICAg
ICBhdXRvIG92ZXJyaWRlUGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7CisgICAgICAgIG92ZXJyaWRl
UGFyYW1ldGVycy5jb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlIHsgY2dDb2xvclNw
YWNlIH07CiAKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShw
YXJhbWV0ZXJzLCBudWxscHRyKTsKLX0KKyAgICAgICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCaXRt
YXBCYWNrZW5kOjpjcmVhdGUob3ZlcnJpZGVQYXJhbWV0ZXJzLCBudWxscHRyKTsKKyAgICB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJD
R0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25z
dCBIb3N0V2luZG93KiBob3N0V2luZG93KQotewotICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0
ZXJzLmNvbG9yU3BhY2UpLCBob3N0V2luZG93KTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBudWxscHRyKTsKIH0KIAogSW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQ6OkltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKGNvbnN0IFBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMsIHZvaWQqIGRhdGEsIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJl
Zj4mJiBkYXRhUHJvdmlkZXIsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYgY29u
dGV4dCkKQEAgLTE0Niw3ICsxNDUsNyBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVy
Q0dCaXRtYXBCCiAgICAgICAgIGF1dG8gYmFja2VuZFNpemUgPSB0aGlzLT5iYWNrZW5kU2l6ZSgp
OwogICAgICAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHSW1hZ2VDcmVh
dGUoCiAgICAgICAgICAgICBiYWNrZW5kU2l6ZS53aWR0aCgpLCBiYWNrZW5kU2l6ZS5oZWlnaHQo
KSwgOCwgMzIsIGJ5dGVzUGVyUm93KCksCi0gICAgICAgICAgICBjYWNoZWRDR0NvbG9yU3BhY2Uo
Y29sb3JTcGFjZSgpKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1h
cEJ5dGVPcmRlcjMySG9zdCwgbV9kYXRhUHJvdmlkZXIuZ2V0KCksCisgICAgICAgICAgICBjb2xv
clNwYWNlKCkucGxhdGZvcm1Db2xvclNwYWNlKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVk
Rmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QsIG1fZGF0YVByb3ZpZGVyLmdldCgpLAog
ICAgICAgICAgICAgMCwgdHJ1ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpKTsKICAgICB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaAkocmV2aXNpb24gMjc3OTE5
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksOCArMzksOSBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIEludFNpemUgY2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKGNvbnN0IFBhcmFtZXRl
cnMmKTsKICAgICBzdGF0aWMgc2l6ZV90IGNhbGN1bGF0ZU1lbW9yeUNvc3QoY29uc3QgUGFyYW1l
dGVycyYpOwogCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBDR0NvbG9yU3BhY2VSZWYsIGNvbnN0
IEhvc3RXaW5kb3cqKTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IEhvc3RXaW5kb3cq
KTsKKworICAgIC8vIEZJWE1FOiBSZW5hbWUgdG8gY3JlYXRlVXNpbmdDb2xvclNwYWNlT2ZHcmFw
aGljc0NvbnRleHQoKSAob3Igc29tZXRoaW5nIGxpa2UgdGhhdCkuCiAgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFt
ZXRlcnMmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCgpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MSwxMyArODEsMTMgQEAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gSW1hZ2VC
dWZmZXJJTwogICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29udGV4dENvbG9yU3Bh
Y2UoY29udGV4dCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMsIENHQ29sb3JTcGFjZVJlZiBjZ0NvbG9yU3BhY2UsIGNvbnN0IEhvc3RX
aW5kb3cqIGhvc3RXaW5kb3cpCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQogewogICAgIElu
dFNpemUgYmFja2VuZFNpemUgPSBjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUocGFyYW1ldGVycyk7
CiAgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShiYWNrZW5kU2l6ZSwgYmFj
a2VuZFNpemUsIGNnQ29sb3JTcGFjZSwgSU9TdXJmYWNlOjpmb3JtYXRGb3JQaXhlbEZvcm1hdChw
YXJhbWV0ZXJzLnBpeGVsRm9ybWF0KSk7CisgICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpj
cmVhdGUoYmFja2VuZFNpemUsIGJhY2tlbmRTaXplLCBwYXJhbWV0ZXJzLmNvbG9yU3BhY2UsIElP
U3VyZmFjZTo6Zm9ybWF0Rm9yUGl4ZWxGb3JtYXQocGFyYW1ldGVycy5waXhlbEZvcm1hdCkpOwog
ICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTEwMiwxNSAr
MTAyLDE0IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2sKIAogc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3Qg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIGlmIChhdXRvIGNnQ29sb3JTcGFjZSA9
IGNvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkgPyBjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0
KSA6IG51bGxwdHIpCi0gICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6
OmNyZWF0ZShwYXJhbWV0ZXJzLCBjZ0NvbG9yU3BhY2UuZ2V0KCksIG51bGxwdHIpOworICAgIGlm
IChhdXRvIGNnQ29sb3JTcGFjZSA9IGNvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkgPyBjb250
ZXh0Q29sb3JTcGFjZShjb250ZXh0KSA6IG51bGxwdHIpIHsKKyAgICAgICAgYXV0byBvdmVycmlk
ZVBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzOworICAgICAgICBvdmVycmlkZVBhcmFtZXRlcnMuY29s
b3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZSB7IGNnQ29sb3JTcGFjZSB9OwogCi0gICAg
cmV0dXJuIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIG51
bGxwdHIpOwotfQorICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpj
cmVhdGUob3ZlcnJpZGVQYXJhbWV0ZXJzLCBudWxscHRyKTsKKyAgICB9CiAKLXN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEhvc3RXaW5k
b3cqIGhvc3RXaW5kb3cpCi17Ci0gICAgcmV0dXJuIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9y
U3BhY2UpLCBob3N0V2luZG93KTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kOjpjcmVhdGUocGFyYW1ldGVycywgbnVsbHB0cik7CiB9CiAKIEltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZDo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMsIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+JiYgc3VyZmFjZSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNl
QmFja2VuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsOCArNDIsOCBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIHNpemVfdCBjYWxjdWxhdGVNZW1vcnlDb3N0KGNvbnN0IFBhcmFtZXRlcnMmKTsKICAgICBz
dGF0aWMgc2l6ZV90IGNhbGN1bGF0ZUV4dGVybmFsTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJz
Jik7CiAgICAgCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgQ0dDb2xvclNwYWNlUmVmLCBjb25z
dCBIb3N0V2luZG93Kik7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklP
U3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgSG9zdFdpbmRv
dyopOworICAgIC8vIEZJWE1FOiBSZW5hbWUgdG8gY3JlYXRlVXNpbmdDb2xvclNwYWNlT2ZHcmFw
aGljc0NvbnRleHQoKSAob3Igc29tZXRoaW5nIGxpa2UgdGhhdCkuCiAgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJh
bWV0ZXJzJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICBJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQoY29uc3QgUGFyYW1ldGVycyYsIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+
JiYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJVdGlsaXRpZXNDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAJKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyVXRpbGl0
aWVzQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsNyArMTc3LDcgQEAgc3RhdGljIGJvb2wg
ZW5jb2RlKGNvbnN0IFBpeGVsQnVmZmVyJiBzbwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIGF1dG8gaW1hZ2VTaXplID0gc291cmNlLnNpemUoKTsKLSAgICBhdXRvIGltYWdlID0gYWRv
cHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCks
IDgsIDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCksIGNhY2hlZENHQ29sb3JTcGFjZShzb3VyY2Uu
Zm9ybWF0KCkuY29sb3JTcGFjZSksIGtDR0JpdG1hcEJ5dGVPcmRlckRlZmF1bHQgfCBkYXRhQWxw
aGFJbmZvLCBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnRE
ZWZhdWx0KSk7CisgICAgYXV0byBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNp
emUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0
aCgpLCBzb3VyY2UuZm9ybWF0KCkuY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwga0NH
Qml0bWFwQnl0ZU9yZGVyRGVmYXVsdCB8IGRhdGFBbHBoYUluZm8sIGRhdGFQcm92aWRlci5nZXQo
KSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKIAogICAgIHJldHVybiBl
bmNvZGUoaW1hZ2UuZ2V0KCksIGRlc3RpbmF0aW9uVVRJLmdldCgpLCBxdWFsaXR5LCBmdW5jdGlv
bik7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0J
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTU3
MSw3ICs1NzEsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzCiBi
b29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVy
QmFja2luZygpCiB7CiAgICAgQVNTRVJUKCFnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLmlz
RW1wdHkoKSk7Ci0gICAgYXV0byBiYWNraW5nID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGUo
Z2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSwgV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYo
KSk7CisgICAgYXV0byBiYWNraW5nID0gSU9TdXJmYWNlOjpjcmVhdGUoZ2V0SW50ZXJuYWxGcmFt
ZWJ1ZmZlclNpemUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgIGlmICgh
YmFja2luZykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDkgKzI3LDEwIEBACiAKICNpZiBIQVZFKElPU1VSRkFD
RSkKIAorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgIkludFNp
emUuaCIKICNpbmNsdWRlIDxvYmpjL29iamMuaD4KICNpbmNsdWRlIDxwYWwvc3BpL2NvY29hL0lP
U3VyZmFjZVNQSS5oPgotI2luY2x1ZGUgIkludFNpemUuaCIKIAogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlf
U0lNVUxBVE9SKQogI2RlZmluZSBIQVZFX0lPU1VSRkFDRV9SR0IxMCAxCkBAIC00NiwxMCArNDcs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNz
IEhvc3RXaW5kb3c7Ci0gICAgCi0jaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9S
RSkKIGNsYXNzIEltYWdlQnVmZmVyOwotI2VuZGlmCiAKIGVudW0gY2xhc3MgUGl4ZWxGb3JtYXQg
OiB1aW50OF90OwogZW51bSBjbGFzcyBWb2xhdGlsaXR5U3RhdGUgOiB1aW50OF90OwpAQCAtMTAx
LDEwICs5OSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHVpbnQzMl90IG1fZmxhZ3M7CiAgICAgfTsK
IAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBj
cmVhdGUoSW50U2l6ZSwgQ0dDb2xvclNwYWNlUmVmLCBGb3JtYXQgPSBGb3JtYXQ6OkJHUkEpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVh
dGUoSW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xvclNwYWNlUmVmLCBGb3JtYXQg
PSBGb3JtYXQ6OkJHUkEpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8SU9TdXJmYWNlPiBjcmVhdGVGcm9tU2VuZFJpZ2h0KGNvbnN0IFdURjo6TWFjaFNlbmRSaWdo
dCYmLCBDR0NvbG9yU3BhY2VSZWYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGVGcm9tU3VyZmFjZShJT1N1cmZhY2VSZWYsIENHQ29s
b3JTcGFjZVJlZik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJ
T1N1cmZhY2U+IGNyZWF0ZShJbnRTaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBG
b3JtYXQgPSBGb3JtYXQ6OkJHUkEpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGUoSW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwg
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRm9ybWF0ID0gRm9ybWF0OjpCR1JBKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRl
RnJvbVNlbmRSaWdodChjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmJiwgY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxJT1N1cmZhY2U+IGNyZWF0ZUZyb21TdXJmYWNlKElPU3VyZmFjZVJlZiwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxJT1N1cmZhY2U+IGNyZWF0ZUZyb21JbWFnZShDR0ltYWdlUmVmKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlRnJvbVBpeGVs
QnVmZmVyKENWUGl4ZWxCdWZmZXJSZWYpOwogICAgIApAQCAtMTQ2LDcgKzE0NCw3IEBAIHB1Ymxp
YzoKICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICBzaXpl
X3QgdG90YWxCeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxCeXRlczsgfQogCi0gICAgQ0dD
b2xvclNwYWNlUmVmIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yU3BhY2UuZ2V0
KCk7IH0KKyAgICBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UoKSBjb25z
dCB7IHJldHVybiBtX2NvbG9yU3BhY2U7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBGb3JtYXQgZm9y
bWF0KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgSU9TdXJmYWNlSUQgc3VyZmFjZUlEKCkg
Y29uc3Q7CiAgICAgc2l6ZV90IGJ5dGVzUGVyUm93KCkgY29uc3Q7CkBAIC0xNjksMTQgKzE2Nywx
NCBAQCBwdWJsaWM6CiAgICAgdm9pZCBtaWdyYXRlQ29sb3JTcGFjZVRvUHJvcGVydGllcygpOwog
CiBwcml2YXRlOgotICAgIElPU3VyZmFjZShJbnRTaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBD
R0NvbG9yU3BhY2VSZWYsIEZvcm1hdCwgYm9vbCYgc3VjY2Vzcyk7Ci0gICAgSU9TdXJmYWNlKElP
U3VyZmFjZVJlZiwgQ0dDb2xvclNwYWNlUmVmKTsKKyAgICBJT1N1cmZhY2UoSW50U2l6ZSwgSW50
U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRm9ybWF0LCBi
b29sJiBzdWNjZXNzKTsKKyAgICBJT1N1cmZhY2UoSU9TdXJmYWNlUmVmLCBjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmKTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNl
PiBzdXJmYWNlRnJvbVBvb2woSW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xvclNw
YWNlUmVmLCBGb3JtYXQpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBz
dXJmYWNlRnJvbVBvb2woSW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiwgRm9ybWF0KTsKICAgICBJbnRTaXplIGNvbnRleHRTaXplKCkgY29u
c3QgeyByZXR1cm4gbV9jb250ZXh0U2l6ZTsgfQogICAgIHZvaWQgc2V0Q29udGV4dFNpemUoSW50
U2l6ZSk7CiAKLSAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBtX2NvbG9yU3BhY2U7Cisg
ICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1fY29sb3JTcGFjZTsKICAgICBJbnRTaXplIG1fc2l6
ZTsKICAgICBJbnRTaXplIG1fY29udGV4dFNpemU7CiAgICAgc2l6ZV90IG1fdG90YWxCeXRlczsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9J
T1N1cmZhY2UubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYs
NyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJJT1N1cmZhY2UuaCIKIAotI2ltcG9y
dCAiQ29yZVZpZGVvU29mdExpbmsuaCIKKyNpbXBvcnQgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5o
IgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4
dEdMLmgiCiAjaW1wb3J0ICJIb3N0V2luZG93LmgiCkBAIC00MSw5ICs0MSwxMSBAQAogI2ltcG9y
dCA8d3RmL01hdGhFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAor
I2ltcG9ydCAiQ29yZVZpZGVvU29mdExpbmsuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1p
bmxpbmUgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpzdXJmYWNlRnJvbVBv
b2woSW50U2l6ZSBzaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBDR0NvbG9yU3BhY2VSZWYgY29s
b3JTcGFjZSwgRm9ybWF0IHBpeGVsRm9ybWF0KQoraW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxJT1N1
cmZhY2U+IElPU3VyZmFjZTo6c3VyZmFjZUZyb21Qb29sKEludFNpemUgc2l6ZSwgSW50U2l6ZSBj
b250ZXh0U2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGb3Jt
YXQgcGl4ZWxGb3JtYXQpCiB7CiAgICAgYXV0byBjYWNoZWRTdXJmYWNlID0gSU9TdXJmYWNlUG9v
bDo6c2hhcmVkUG9vbCgpLnRha2VTdXJmYWNlKHNpemUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0
KTsKICAgICBpZiAoIWNhY2hlZFN1cmZhY2UpCkBAIC01MywxMiArNTUsMTIgQEAgaW5saW5lIHN0
ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZgogICAgIHJldHVybiBjYWNoZWRTdXJmYWNl
OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZShJbnRT
aXplIHNpemUsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlLCBGb3JtYXQgcGl4ZWxGb3JtYXQp
CitzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZShJbnRTaXplIHNp
emUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgRm9ybWF0IHBpeGVs
Rm9ybWF0KQogewogICAgIHJldHVybiBJT1N1cmZhY2U6OmNyZWF0ZShzaXplLCBzaXplLCBjb2xv
clNwYWNlLCBwaXhlbEZvcm1hdCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElP
U3VyZmFjZTo6Y3JlYXRlKEludFNpemUgc2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xv
clNwYWNlUmVmIGNvbG9yU3BhY2UsIEZvcm1hdCBwaXhlbEZvcm1hdCkKK3N0ZDo6dW5pcXVlX3B0
cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6Y3JlYXRlKEludFNpemUgc2l6ZSwgSW50U2l6ZSBjb250
ZXh0U2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGb3JtYXQg
cGl4ZWxGb3JtYXQpCiB7CiAgICAgaWYgKGF1dG8gY2FjaGVkU3VyZmFjZSA9IHN1cmZhY2VGcm9t
UG9vbChzaXplLCBjb250ZXh0U2l6ZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpKSB7CiAgICAg
ICAgIExPR19XSVRIX1NUUkVBTShJT1N1cmZhY2UsIHN0cmVhbSA8PCAiSU9TdXJmYWNlOjpjcmVh
dGUgdG9vayBmcm9tIHBvb2w6ICIgPDwgKmNhY2hlZFN1cmZhY2UpOwpAQCAtNzUsMTMgKzc3LDEz
IEBAIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6Y3IKICAgICByZXR1cm4g
c3VyZmFjZTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVh
dGVGcm9tU2VuZFJpZ2h0KGNvbnN0IE1hY2hTZW5kUmlnaHQmJiBzZW5kUmlnaHQsIENHQ29sb3JT
cGFjZVJlZiBjb2xvclNwYWNlKQorc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNl
OjpjcmVhdGVGcm9tU2VuZFJpZ2h0KGNvbnN0IE1hY2hTZW5kUmlnaHQmJiBzZW5kUmlnaHQsIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkKIHsKICAgICBhdXRvIHN1cmZh
Y2UgPSBhZG9wdENGKElPU3VyZmFjZUxvb2t1cEZyb21NYWNoUG9ydChzZW5kUmlnaHQuc2VuZFJp
Z2h0KCkpKTsKICAgICByZXR1cm4gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU3VyZmFjZShzdXJmYWNl
LmdldCgpLCBjb2xvclNwYWNlKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9T
dXJmYWNlOjpjcmVhdGVGcm9tU3VyZmFjZShJT1N1cmZhY2VSZWYgc3VyZmFjZSwgQ0dDb2xvclNw
YWNlUmVmIGNvbG9yU3BhY2UpCitzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6
OmNyZWF0ZUZyb21TdXJmYWNlKElPU3VyZmFjZVJlZiBzdXJmYWNlLCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpCiB7CiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJ
T1N1cmZhY2U+KG5ldyBJT1N1cmZhY2Uoc3VyZmFjZSwgY29sb3JTcGFjZSkpOwogfQpAQCAtOTQs
NyArOTYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyCiAgICAg
c2l6ZV90IHdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGltYWdlKTsKICAgICBzaXplX3QgaGVpZ2h0
ID0gQ0dJbWFnZUdldEhlaWdodChpbWFnZSk7CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZh
Y2U6OmNyZWF0ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpLCBDR0ltYWdlR2V0Q29sb3JTcGFjZShp
bWFnZSkpOworICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKEludFNpemUod2lk
dGgsIGhlaWdodCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB7IENHSW1hZ2VHZXRDb2xvclNwYWNl
KGltYWdlKSB9KTsKICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIGF1dG8gc3VyZmFjZUNvbnRleHQgPSBzdXJmYWNlLT5lbnN1cmVQbGF0Zm9ybUNvbnRleHQo
KTsKQEAgLTExNiw3ICsxMTgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZh
Y2U6OmNyCiAgICAgaWYgKCFjb2xvclNwYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIHJldHVybiBjcmVhdGVGcm9tU3VyZmFjZShzdXJmYWNlLCBjb2xvclNwYWNlKTsKKyAgICBy
ZXR1cm4gY3JlYXRlRnJvbVN1cmZhY2Uoc3VyZmFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIHsg
Y29sb3JTcGFjZSB9KTsKIH0KIAogdm9pZCBJT1N1cmZhY2U6Om1vdmVUb1Bvb2woc3RkOjp1bmlx
dWVfcHRyPElPU3VyZmFjZT4mJiBzdXJmYWNlKQpAQCAtMTk2LDcgKzE5OCw3IEBAIHN0YXRpYyBO
U0RpY3Rpb25hcnkgKm9wdGlvbnNGb3IzMkJpdFN1cmYKIAogfQogCi1JT1N1cmZhY2U6OklPU3Vy
ZmFjZShJbnRTaXplIHNpemUsIEludFNpemUgY29udGV4dFNpemUsIENHQ29sb3JTcGFjZVJlZiBj
b2xvclNwYWNlLCBGb3JtYXQgZm9ybWF0LCBib29sJiBzdWNjZXNzKQorSU9TdXJmYWNlOjpJT1N1
cmZhY2UoSW50U2l6ZSBzaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIEZvcm1hdCBmb3JtYXQsIGJvb2wmIHN1Y2Nlc3MpCiAg
ICAgOiBtX2NvbG9yU3BhY2UoY29sb3JTcGFjZSkKICAgICAsIG1fc2l6ZShzaXplKQogICAgICwg
bV9jb250ZXh0U2l6ZShjb250ZXh0U2l6ZSkKQEAgLTIzMiw3ICsyMzQsNyBAQCBJT1N1cmZhY2U6
OklPU3VyZmFjZShJbnRTaXplIHNpemUsIEludFNpCiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KExheWVycywgIklPU3VyZmFjZSBjcmVhdGlvbiBmYWlsZWQgZm9yIHNpemU6ICglZCAlZCkgYW5k
IGZvcm1hdDogKCVkKSIsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgZm9ybWF0KTsKIH0K
IAotSU9TdXJmYWNlOjpJT1N1cmZhY2UoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIENHQ29sb3JTcGFj
ZVJlZiBjb2xvclNwYWNlKQorSU9TdXJmYWNlOjpJT1N1cmZhY2UoSU9TdXJmYWNlUmVmIHN1cmZh
Y2UsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkKICAgICA6IG1fY29s
b3JTcGFjZShjb2xvclNwYWNlKQogICAgICwgbV9zdXJmYWNlKHN1cmZhY2UpCiB7CkBAIC0zNDcs
NyArMzQ5LDcgQEAgQ0dDb250ZXh0UmVmIElPU3VyZmFjZTo6ZW5zdXJlUGxhdGZvcm1DbwogICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgCi0gICAgbV9jZ0NvbnRleHQgPSBhZG9wdENGKENHSU9T
dXJmYWNlQ29udGV4dENyZWF0ZShtX3N1cmZhY2UuZ2V0KCksIG1fY29udGV4dFNpemUud2lkdGgo
KSwgbV9jb250ZXh0U2l6ZS5oZWlnaHQoKSwgYml0c1BlckNvbXBvbmVudCwgYml0c1BlclBpeGVs
LCBtX2NvbG9yU3BhY2UuZ2V0KCksIGJpdG1hcEluZm8pKTsKKyAgICBtX2NnQ29udGV4dCA9IGFk
b3B0Q0YoQ0dJT1N1cmZhY2VDb250ZXh0Q3JlYXRlKG1fc3VyZmFjZS5nZXQoKSwgbV9jb250ZXh0
U2l6ZS53aWR0aCgpLCBtX2NvbnRleHRTaXplLmhlaWdodCgpLCBiaXRzUGVyQ29tcG9uZW50LCBi
aXRzUGVyUGl4ZWwsIG1fY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwgYml0bWFwSW5m
bykpOwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmIChhdXRvIGRpc3BsYXlNYXNrID0gcHJp
bWFyeU9wZW5HTERpc3BsYXlNYXNrKCkpIHsKQEAgLTUxNSw3ICs1MTcsNyBAQCB2b2lkIElPU3Vy
ZmFjZTo6c2V0T3duZXJzaGlwSWRlbnRpdHkodGFzCiAKIHZvaWQgSU9TdXJmYWNlOjptaWdyYXRl
Q29sb3JTcGFjZVRvUHJvcGVydGllcygpCiB7Ci0gICAgYXV0byBjb2xvclNwYWNlUHJvcGVydGll
cyA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ29weVByb3BlcnR5TGlzdChtX2NvbG9yU3BhY2UuZ2V0
KCkpKTsKKyAgICBhdXRvIGNvbG9yU3BhY2VQcm9wZXJ0aWVzID0gYWRvcHRDRihDR0NvbG9yU3Bh
Y2VDb3B5UHJvcGVydHlMaXN0KG1fY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSkpOwog
ICAgIElPU3VyZmFjZVNldFZhbHVlKG1fc3VyZmFjZS5nZXQoKSwga0lPU3VyZmFjZUNvbG9yU3Bh
Y2UsIGNvbG9yU3BhY2VQcm9wZXJ0aWVzLmdldCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUlt
YWdlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
cmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQkocmV2aXNpb24gMjc3OTE5
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVm
ZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yODksNyArMjg5LDcg
QEAgdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6cmVuZAogICAgICAgICByZXR1
cm47CiAgICAgCiAgICAgYXV0byYgc3VyZmFjZSA9IGRvd25jYXN0PEFjY2VsZXJhdGVkSW1hZ2VC
dWZmZXI+KCptX291dHB1dEltYWdlQnVmZmVyKS5zdXJmYWNlKCk7Ci0gICAgW3NoYXJlZENJQ29u
dGV4dCgpLmdldCgpIHJlbmRlcjogbV9vdXRwdXRJbWFnZS5nZXQoKSB0b0lPU3VyZmFjZTogc3Vy
ZmFjZS5zdXJmYWNlKCkgYm91bmRzOmRlc3RSZWN0KGxhc3RFZmZlY3QpIGNvbG9yU3BhY2U6Y2Fj
aGVkQ0dDb2xvclNwYWNlKGxhc3RFZmZlY3QucmVzdWx0Q29sb3JTcGFjZSgpKV07CisgICAgW3No
YXJlZENJQ29udGV4dCgpLmdldCgpIHJlbmRlcjogbV9vdXRwdXRJbWFnZS5nZXQoKSB0b0lPU3Vy
ZmFjZTogc3VyZmFjZS5zdXJmYWNlKCkgYm91bmRzOmRlc3RSZWN0KGxhc3RFZmZlY3QpIGNvbG9y
U3BhY2U6bGFzdEVmZmVjdC5yZXN1bHRDb2xvclNwYWNlKCkucGxhdGZvcm1Db2xvclNwYWNlKCld
OwogfQogICAgIAogRmxvYXRSZWN0IEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpkZXN0
UmVjdChjb25zdCBGaWx0ZXJFZmZlY3QmIGxhc3RFZmZlY3QpIGNvbnN0CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1
ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgJKHJldmlzaW9uIDI3NzkxOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEltYWdlQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgSW1h
Z2VCdWZmZXIgOiBwdWJsaWMgQ29uY3JldGVJbWFnZQogICAgIHVzaW5nIEJhc2VDb25jcmV0ZUlt
YWdlQnVmZmVyOjpiYXNlVHJhbnNmb3JtOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIGF1dG8gY3Jl
YXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0
IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCisgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0
V2luZG93KiBob3N0V2luZG93KQogICAgIHsKICAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0ZUlt
YWdlQnVmZmVyOjp0ZW1wbGF0ZSBjcmVhdGU8SW1hZ2VCdWZmZXI+KHNpemUsIHJlc29sdXRpb25T
Y2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIGhvc3RXaW5kb3cpOwogICAgIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1CdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCShyZXZpc2lvbiAy
Nzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDcgKzI4MSw3
IEBAIHZvaWQgSXRlbUhhbmRsZTo6ZGVzdHJveSgpCiAgICAgICAgIGdldDxGaWxsUm91bmRlZFJl
Y3Q+KCkufkZpbGxSb3VuZGVkUmVjdCgpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJdGVt
VHlwZTo6R2V0UGl4ZWxCdWZmZXI6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2
aWFsbHlfZGVzdHJ1Y3RpYmxlPEdldFBpeGVsQnVmZmVyPjo6dmFsdWUpOworICAgICAgICBnZXQ8
R2V0UGl4ZWxCdWZmZXI+KCkufkdldFBpeGVsQnVmZmVyKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIEl0ZW1UeXBlOjpQdXRQaXhlbEJ1ZmZlcjoKICAgICAgICAgZ2V0PFB1dFBpeGVsQnVm
ZmVyPigpLn5QdXRQaXhlbEJ1ZmZlcigpOwpAQCAtMzA3LDcgKzMwNyw3IEBAIHZvaWQgSXRlbUhh
bmRsZTo6ZGVzdHJveSgpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgogICAgIGNhc2UgSXRlbVR5
cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz46
OnZhbHVlKTsKKyAgICAgICAgZ2V0PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpLn5CZWdp
bkNsaXBUb0RyYXdpbmdDb21tYW5kcygpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJdGVt
VHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8QmVnaW5UcmFuc3BhcmVuY3lMYXllcj46OnZhbHVl
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAJKHJldmlz
aW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDYgKzI4
MSw3IEBAIGJvb2wgaXNJbmxpbmVJdGVtKEl0ZW1UeXBlIHR5cGUpCiAgICAgICogYW5kICgzKSBh
bGwgdGhlICJzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtInMgaW5zaWRlIHRoZSBp
bmRpdmlkdWFsIGl0ZW0gY2xhc3Nlcy4gKi8KIAogICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNh
c2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgogICAgIGNhc2UgSXRlbVR5
cGU6OkNsaXBPdXRUb1BhdGg6CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6CiAgICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6CkBAIC0yOTQsNiArMjk1LDcgQEAgYm9vbCBp
c0lubGluZUl0ZW0oSXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdp
dGhHcmFkaWVudDoKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZToK
ICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3Q6CisgICAgY2FzZSBJdGVtVHlwZTo6
R2V0UGl4ZWxCdWZmZXI6CiAgICAgY2FzZSBJdGVtVHlwZTo6UHV0UGl4ZWxCdWZmZXI6CiAgICAg
Y2FzZSBJdGVtVHlwZTo6U2V0TGluZURhc2g6CiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6
CkBAIC0zMTAsNyArMzEyLDYgQEAgYm9vbCBpc0lubGluZUl0ZW0oSXRlbVR5cGUgdHlwZSkKICAg
ICBjYXNlIEl0ZW1UeXBlOjpDbGlwOgogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXQ6CiAgICAg
Y2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVn
aW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6CiAgICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzOgogICAgIGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgogICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6CkBAIC0zNTEsNyArMzUyLDYg
QEAgYm9vbCBpc0lubGluZUl0ZW0oSXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpT
dHJva2VSZWN0OgogICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUxpbmU6CiAgICAgY2FzZSBJdGVt
VHlwZTo6VHJhbnNsYXRlOgotICAgIGNhc2UgSXRlbVR5cGU6OkdldFBpeGVsQnVmZmVyOgogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmgJKHdvcmtpbmcgY29weSkKQEAgLTg4MCwyMyArODgwLDYwIEBAIE9wdGlvbmFsPENsaXBQ
YXRoPiBDbGlwUGF0aDo6ZGVjb2RlKERlY28KIGNsYXNzIEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIEl0ZW1UeXBlIGl0ZW1UeXBlID0g
SXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOwotICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc0lubGluZUl0ZW0gPSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBp
c0lubGluZUl0ZW0gPSBmYWxzZTsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNEcmF3aW5n
SXRlbSA9IGZhbHNlOwogCi0gICAgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpCisg
ICAgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
biwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQogICAgICAgICA6IG1f
ZGVzdGluYXRpb24oZGVzdGluYXRpb24pCiAgICAgICAgICwgbV9jb2xvclNwYWNlKGNvbG9yU3Bh
Y2UpCiAgICAgewogICAgIH0KIAorICAgIEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSYmIGNvbG9yU3Bh
Y2UpCisgICAgICAgIDogbV9kZXN0aW5hdGlvbihkZXN0aW5hdGlvbikKKyAgICAgICAgLCBtX2Nv
bG9yU3BhY2UoV1RGTW92ZShjb2xvclNwYWNlKSkKKyAgICB7CisgICAgfQorCisgICAgLy8gRXhw
bGljaXQgZGVzdHJ1Y3RvciBhZGRlZCB0byBmb3JjZSBub24tdHJpdmlhbCBkZXN0cnVjdG9yIG9u
IGFsbCBwbGF0Zm9ybXMKKyAgICAvLyBhcyB0aGUgZW5jb2RpbmcgbG9naWMgY3VycmVudGx5IGhh
cmRjb2RlcyB3aGljaCBkaXNwbGF5IGxpc3QgaXRlbSB0eXBlcyBuZWVkCisgICAgLy8gb3V0IG9m
IGxpbmUgdHJlYXRtZW50IHJhdGhlciB0aGFuIHVzaW5nIHRoZSBpc0lubGluZUl0ZW0gY29uc3Rh
bnQuCisgICAgfkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKCkgeyB9CisKICAgICBjb25zdCBG
bG9hdFJlY3QmIGRlc3RpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQot
ICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9j
b2xvclNwYWNlOyB9CisgICAgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNl
KCkgY29uc3QgeyByZXR1cm4gbV9jb2xvclNwYWNlOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPiBkZWNv
ZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uOwog
ICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBtX2NvbG9yU3BhY2U7CiB9OwogCit0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgordm9pZCBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX2Rlc3RpbmF0aW9uOwor
ICAgIGVuY29kZXIgPDwgbV9jb2xvclNwYWNlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PgorT3B0aW9uYWw8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+IEJlZ2luQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRpb25hbDxGbG9h
dFJlY3Q+IGRlc3RpbmF0aW9uOworICAgIGRlY29kZXIgPj4gZGVzdGluYXRpb247CisgICAgaWYg
KCFkZXN0aW5hdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlv
bmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKKyAgICBkZWNvZGVyID4+IGNv
bG9yU3BhY2U7CisgICAgaWYgKCFjb2xvclNwYWNlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgcmV0dXJuIHt7ICpkZXN0aW5hdGlvbiwgV1RGTW92ZSgqY29sb3JTcGFjZSkg
fX07Cit9CisKIGNsYXNzIEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpFbmRDbGlwVG9E
cmF3aW5nQ29tbWFuZHM7CkBAIC0xOTM4LDIzICsxOTc1LDYwIEBAIHByaXZhdGU6CiBjbGFzcyBH
ZXRQaXhlbEJ1ZmZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBp
dGVtVHlwZSA9IEl0ZW1UeXBlOjpHZXRQaXhlbEJ1ZmZlcjsKLSAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgaXNJbmxpbmVJdGVtID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJ
bmxpbmVJdGVtID0gZmFsc2U7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0
ZW0gPSBmYWxzZTsKIAotICAgIEdldFBpeGVsQnVmZmVyKFdlYkNvcmU6OlBpeGVsQnVmZmVyRm9y
bWF0IG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVjdCkKKyAgICBH
ZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25z
dCBJbnRSZWN0JiBzcmNSZWN0KQogICAgICAgICA6IG1fc3JjUmVjdChzcmNSZWN0KQogICAgICAg
ICAsIG1fb3V0cHV0Rm9ybWF0KG91dHB1dEZvcm1hdCkKICAgICB7CiAgICAgfQogCi0gICAgUGl4
ZWxCdWZmZXJGb3JtYXQgb3V0cHV0Rm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9vdXRwdXRGb3Jt
YXQ7IH0KKyAgICBHZXRQaXhlbEJ1ZmZlcihQaXhlbEJ1ZmZlckZvcm1hdCYmIG91dHB1dEZvcm1h
dCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkKKyAgICAgICAgOiBtX3NyY1JlY3Qoc3JjUmVjdCkK
KyAgICAgICAgLCBtX291dHB1dEZvcm1hdChXVEZNb3ZlKG91dHB1dEZvcm1hdCkpCisgICAgewor
ICAgIH0KKworICAgIC8vIEV4cGxpY2l0IGRlc3RydWN0b3IgYWRkZWQgdG8gZm9yY2Ugbm9uLXRy
aXZpYWwgZGVzdHJ1Y3RvciBvbiBhbGwgcGxhdGZvcm1zCisgICAgLy8gYXMgdGhlIGVuY29kaW5n
IGxvZ2ljIGN1cnJlbnRseSBoYXJkY29kZXMgd2hpY2ggZGlzcGxheSBsaXN0IGl0ZW0gdHlwZXMg
bmVlZAorICAgIC8vIG91dCBvZiBsaW5lIHRyZWF0bWVudCByYXRoZXIgdGhhbiB1c2luZyB0aGUg
aXNJbmxpbmVJdGVtIGNvbnN0YW50LgorICAgIH5HZXRQaXhlbEJ1ZmZlcigpIHsgfQorCisgICAg
Y29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1f
b3V0cHV0Rm9ybWF0OyB9CiAgICAgSW50UmVjdCBzcmNSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9z
cmNSZWN0OyB9CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFs
PEdldFBpeGVsQnVmZmVyPiBkZWNvZGUoRGVjb2RlciYpOworCiBwcml2YXRlOgogICAgIEludFJl
Y3QgbV9zcmNSZWN0OwogICAgIFBpeGVsQnVmZmVyRm9ybWF0IG1fb3V0cHV0Rm9ybWF0OwogfTsK
IAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgR2V0UGl4ZWxCdWZmZXI6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgbV9zcmNSZWN0OworICAg
IGVuY29kZXIgPDwgbV9vdXRwdXRGb3JtYXQ7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+
CitPcHRpb25hbDxHZXRQaXhlbEJ1ZmZlcj4gR2V0UGl4ZWxCdWZmZXI6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPEludFJlY3Q+IHNyY1JlY3Q7CisgICAgZGVjb2Rl
ciA+PiBzcmNSZWN0OworICAgIGlmICghc3JjUmVjdCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVyRm9ybWF0PiBvdXRwdXRGb3JtYXQ7Cisg
ICAgZGVjb2RlciA+PiBvdXRwdXRGb3JtYXQ7CisgICAgaWYgKCFvdXRwdXRGb3JtYXQpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4ge3sgV1RGTW92ZSgqb3V0cHV0
Rm9ybWF0KSwgKnNyY1JlY3QgfX07Cit9CisKIGNsYXNzIFB1dFBpeGVsQnVmZmVyIHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgY29uc3RleHByIEl0ZW1UeXBlIGl0ZW1UeXBlID0gSXRlbVR5cGU6OlB1
dFBpeGVsQnVmZmVyOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NTIsNyArNDUyLDcgQEAgdm9pZCBSZWNvcmRlcjo6Y2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VC
dQogICAgIGFwcGVuZDxDbGlwVG9JbWFnZUJ1ZmZlcj4oaW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKCksIGRlc3RSZWN0KTsKIH0KIAotdm9pZCBSZWNvcmRlcjo6Y2xpcFRv
RHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9u
Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYm
IGRyYXdpbmdGdW5jdGlvbikKK3ZvaWQgUmVjb3JkZXI6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
IGNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYgZHJhd2luZ0Z1
bmN0aW9uKQogewogICAgIEdyYXBoaWNzQ29udGV4dCBuZXN0ZWRDb250ZXh0KFsmXShHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgYXV0byBpbml0aWFsQ2xpcCA9IEZsb2F0UmVj
dChGbG9hdFBvaW50KCksIGRlc3RpbmF0aW9uLnNpemUoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE0Nyw3ICsxNDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xp
cFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSBvdmVycmlkZTsKICAgICBJbnRSZWN0IGNsaXBC
b3VuZHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKFdlYkNvcmU6Oklt
YWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGlwVG9E
cmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25D
b2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsK
KyAgICB2b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNz
Q29udGV4dCYpPiYmKSBvdmVycmlkZTsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgdm9pZCBwYWlu
dEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
KSBvdmVycmlkZTsKICAgICBib29sIGNhblBhaW50RnJhbWVGb3JNZWRpYShjb25zdCBNZWRpYVBs
YXllciYpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3
IEBAIGJvb2wgRkVEaXNwbGFjZW1lbnRNYXA6OnNldFNjYWxlKGZsb2F0IHMKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotdm9pZCBGRURpc3BsYWNlbWVudE1hcDo6c2V0UmVzdWx0Q29sb3JTcGFjZShE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UpCit2b2lkIEZFRGlzcGxhY2VtZW50TWFwOjpzZXRSZXN1bHRD
b2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpCiB7CiAgICAgLy8gU3BlYzog
VGhlICdjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMnIHByb3BlcnR5IG9ubHkgYXBwbGllcyB0
byB0aGUgJ2luMicgc291cmNlIGltYWdlCiAgICAgLy8gYW5kIGRvZXMgbm90IGFwcGx5IHRvIHRo
ZSAnaW4nIHNvdXJjZSBpbWFnZS4gVGhlICdpbicgc291cmNlIGltYWdlIG11c3QgcmVtYWluIGlu
IGl0cwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURp
c3BsYWNlbWVudE1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuaAkocmV2aXNpb24gMjc3OTE5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1h
cC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBmbG9hdCBz
Y2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NhbGU7IH0KICAgICBib29sIHNldFNjYWxlKGZsb2F0
KTsKIAotICAgIHZvaWQgc2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2Up
IG92ZXJyaWRlOworICAgIHZvaWQgc2V0UmVzdWx0Q29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmKSBvdmVycmlkZTsKICAgICB2b2lkIHRyYW5zZm9ybVJlc3VsdENvbG9yU3Bh
Y2UoRmlsdGVyRWZmZWN0KiwgY29uc3QgaW50KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9v
ZC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRmxvb2QuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsOCArNDAsOCBAQCBwdWJs
aWM6CiAjaWYgIVVTRShDRykKICAgICAvLyBmZUZsb29kIGRvZXMgbm90IHBlcmZvcm0gY29sb3Ig
aW50ZXJwb2xhdGlvbiBvZiBhbnkga2luZCwgc28gdGhlIHJlc3VsdCBpcyBhbHdheXMgaW4gdGhl
IGN1cnJlbnQKICAgICAvLyBjb2xvciBzcGFjZSByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZSBvZiBj
b2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMuCi0gICAgdm9pZCBzZXRPcGVyYXRpbmdDb2xvclNw
YWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSkgb3ZlcnJpZGUgeyBGaWx0ZXJFZmZlY3Q6OnNldFJl
c3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsgfQotICAgIHZvaWQg
c2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpIG92ZXJyaWRlIHsgRmls
dGVyRWZmZWN0OjpzZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
Qik7IH0KKyAgICB2b2lkIHNldE9wZXJhdGluZ0NvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJikgb3ZlcnJpZGUgeyBGaWx0ZXJFZmZlY3Q6OnNldFJlc3VsdENvbG9yU3BhY2Uo
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOyB9CisgICAgdm9pZCBzZXRSZXN1bHRDb2xv
clNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpIG92ZXJyaWRlIHsgRmlsdGVyRWZm
ZWN0OjpzZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsg
fQogI2VuZGlmCiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSgpCiAgICAgICAgIHRpbGVSZWN0LnNjYWxlKGZpbHRlci5maWx0ZXJSZXNvbHV0aW9uKCku
d2lkdGgoKSwgZmlsdGVyLmZpbHRlclJlc29sdXRpb24oKS5oZWlnaHQoKSk7CiAgICAgfQogCi0g
ICAgYXV0byB0aWxlSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZl
cih0aWxlUmVjdCwgdGlsZVJlY3QsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgZmlsdGVy
KCkucmVuZGVyaW5nTW9kZSgpKTsKKyAgICBhdXRvIHRpbGVJbWFnZSA9IFNWR1JlbmRlcmluZ0Nv
bnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHRpbGVSZWN0LCB0aWxlUmVjdCwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCksIGZpbHRlcigpLnJlbmRlcmluZ01vZGUoKSk7CiAgICAgaWYgKCF0
aWxlSW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAkocmV2
aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJFZmZlY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzksNyArNDM5LDcgQEAgc3Rh
dGljIHZvaWQgY29weVVucHJlbXVsdGlwbHlpbmdBbHBoYShjbwogI2VuZGlmCiB9CiAKLU9wdGlv
bmFsPFBpeGVsQnVmZmVyPiBGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRQaXhlbEJ1ZmZlclRvQ29sb3JT
cGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UgdGFyZ2V0Q29sb3JTcGFjZSwgUGl4ZWxCdWZmZXIm
IHBpeGVsQnVmZmVyKQorT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEZpbHRlckVmZmVjdDo6Y29udmVy
dFBpeGVsQnVmZmVyVG9Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgdGFy
Z2V0Q29sb3JTcGFjZSwgUGl4ZWxCdWZmZXImIHBpeGVsQnVmZmVyKQogewogICAgIC8vIEZJWE1F
OiBVc2luZyBhbiBJbWFnZUJ1ZmZlciB0byBwZXJmb3JtIHRoZSBjb2xvciBzcGFjZSBjb252ZXJz
aW9uIGlzIHVubmVjZXNzYXJ5LiBXZSBjYW4gZG8gaXQgZGlyZWN0bHkuCiAKQEAgLTQ1NCw3ICs0
NTQsNyBAQCBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gRmlsdGVyRWZmZWN0Ojpjb252CiAgICAgcmV0
dXJuIGNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZSh0YXJnZXRDb2xvclNwYWNlLCAqYnVm
ZmVyLCBkZXN0aW5hdGlvblJlY3QsIHBpeGVsQnVmZmVyLmZvcm1hdCgpLmFscGhhRm9ybWF0KTsK
IH0KIAotT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEZpbHRlckVmZmVjdDo6Y29udmVydEltYWdlQnVm
ZmVyVG9Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSB0YXJnZXRDb2xvclNwYWNlLCBJ
bWFnZUJ1ZmZlciYgaW5wdXRCdWZmZXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIEFscGhhUHJlbXVs
dGlwbGljYXRpb24gb3V0cHV0QWxwaGFGb3JtYXQpCitPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gRmls
dGVyRWZmZWN0Ojpjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiB0YXJnZXRDb2xvclNwYWNlLCBJbWFnZUJ1ZmZlciYgaW5wdXRCdWZmZXIs
IGNvbnN0IEludFJlY3QmIHJlY3QsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0QWxwaGFG
b3JtYXQpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgY2FuIGJlIGRvbmUgbW9yZSBkaXJlY3RseSB1
c2luZyBQaXhlbEJ1ZmZlckNvbnZlcnNpb24uCiAKQEAgLTQ3Miw3ICs0NzIsNyBAQCBPcHRpb25h
bDxQaXhlbEJ1ZmZlcj4gRmlsdGVyRWZmZWN0Ojpjb252CiAgICAgcmV0dXJuIGNvbnZlcnRlZEJ1
ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoZm9ybWF0LCByZWN0KTsKIH0KIAotdm9pZCBGaWx0ZXJFZmZl
Y3Q6OmNvcHlDb252ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJy
YXkmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQor
dm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24o
VWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmIGNvbG9yU3BhY2UsIEFscGhhUHJlbXVsdGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICAvLyBDb252ZXJ0cyB0aGUgZGF0YSBzdG9yZWQg
aW4gbV9pbWFnZUJ1ZmZlclJlc3VsdCwgYW5kIHNhdmUgdG8gZGVzdGluYXRpb24KICAgICBhdXRv
IGNvbnZlcnRlZFBpeGVsQnVmZmVyID0gY29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKGNv
bG9yU3BhY2UsICptX2ltYWdlQnVmZmVyUmVzdWx0LCB7IEludFBvaW50KCksIG1fYWJzb2x1dGVQ
YWludFJlY3Quc2l6ZSgpIH0sIG91dHB1dEZvcm1hdCk7CkBAIC00ODEsNyArNDgxLDcgQEAgdm9p
ZCBGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRJbWFnZUJ1ZgogICAgIGNvcHlJbWFnZUJ5dGVz
KGNvbnZlcnRlZFBpeGVsQnVmZmVyLT5kYXRhKCksIGRlc3RpbmF0aW9uLCBkZXN0UmVjdCk7CiB9
CiAKLXZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5Q29udmVydGVkUGl4ZWxCdWZmZXJUb0Rlc3RpbmF0
aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgUGl4ZWxCdWZmZXImIHBpeGVsQnVm
ZmVyLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYgZGVz
dFJlY3QpCit2b2lkIEZpbHRlckVmZmVjdDo6Y29weUNvbnZlcnRlZFBpeGVsQnVmZmVyVG9EZXN0
aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIFBpeGVsQnVmZmVyJiBwaXhl
bEJ1ZmZlciwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCkKIHsKICAgICAvLyBDb252ZXJ0cyB0aGUgZGF0YSBzdG9yZWQgaW4g
bV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdC9tX3ByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCwKICAg
ICAvLyB3aGljaGV2ZXIgaXNuJ3QgbnVsbCwgYW5kIHNhdmUgdG8gZGVzdGluYXRpb24KQEAgLTYz
Niw3ICs2MzYsNyBAQCBib29sIEZpbHRlckVmZmVjdDo6cmVxdWlyZXNQaXhlbEJ1ZmZlckNvCiAj
ZW5kaWYKIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3Q6OnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2Uo
RGVzdGluYXRpb25Db2xvclNwYWNlIGRlc3RpbmF0aW9uQ29sb3JTcGFjZSkKK3ZvaWQgRmlsdGVy
RWZmZWN0Ojp0cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgZGVzdGluYXRpb25Db2xvclNwYWNlKQogewogI2lmIFVTRShDRykKICAgICAvLyBDRyBo
YW5kbGVzIGNvbG9yIHNwYWNlIGFkanVzdG1lbnRzIGludGVybmFsbHkuCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZm
ZWN0LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIgot
I2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2Uu
aCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVk
ZSAiSW50UmVjdEV4dGVudC5oIgpAQCAtMTY1LDEzICsxNjUsMTMgQEAgcHVibGljOgogICAgIGJv
b2wgY2xpcHNUb0JvdW5kcygpIGNvbnN0IHsgcmV0dXJuIG1fY2xpcHNUb0JvdW5kczsgfQogICAg
IHZvaWQgc2V0Q2xpcHNUb0JvdW5kcyhib29sIHZhbHVlKSB7IG1fY2xpcHNUb0JvdW5kcyA9IHZh
bHVlOyB9CiAKLSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugb3BlcmF0aW5nQ29sb3JTcGFjZSgp
IGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW5nQ29sb3JTcGFjZTsgfQotICAgIHZpcnR1YWwgdm9p
ZCBzZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNl
KSB7IG1fb3BlcmF0aW5nQ29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7IH0KLSAgICBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgcmVzdWx0Q29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0Q29s
b3JTcGFjZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0
aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKSB7IG1fcmVzdWx0Q29sb3JTcGFjZSA9IGNvbG9yU3Bh
Y2U7IH0KKyAgICBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIG9wZXJhdGluZ0NvbG9yU3Bh
Y2UoKSBjb25zdCB7IHJldHVybiBtX29wZXJhdGluZ0NvbG9yU3BhY2U7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2V0T3BlcmF0aW5nQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
IGNvbG9yU3BhY2UpIHsgbV9vcGVyYXRpbmdDb2xvclNwYWNlID0gY29sb3JTcGFjZTsgfQorICAg
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgcmVzdWx0Q29sb3JTcGFjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzdWx0Q29sb3JTcGFjZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRSZXN1bHRD
b2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkgeyBtX3Jl
c3VsdENvbG9yU3BhY2UgPSBjb2xvclNwYWNlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNm
b3JtUmVzdWx0Q29sb3JTcGFjZShGaWx0ZXJFZmZlY3QqIGluLCBjb25zdCBpbnQpIHsgaW4tPnRy
YW5zZm9ybVJlc3VsdENvbG9yU3BhY2UobV9vcGVyYXRpbmdDb2xvclNwYWNlKTsgfQotICAgIHZv
aWQgdHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpOworICAg
IHZvaWQgdHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmKTsKICAgICAKICAgICBzdGF0aWMgVmVjdG9yPGZsb2F0PiBub3JtYWxpemVkRmxvYXRzKGNv
bnN0IFZlY3RvcjxmbG9hdD4mIHZhbHVlcykKICAgICB7CkBAIC0yMDMsMTEgKzIwMywxMSBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSA9IDA7CiAK
ICAgICB2b2lkIGNvcHlJbWFnZUJ5dGVzKGNvbnN0IFVpbnQ4Q2xhbXBlZEFycmF5JiBzb3VyY2Us
IFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QgSW50UmVjdCYpIGNvbnN0Owot
ICAgIHZvaWQgY29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0aW5hdGlvbihVaW50OENsYW1w
ZWRBcnJheSYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwg
Y29uc3QgSW50UmVjdCYpOwotICAgIHZvaWQgY29weUNvbnZlcnRlZFBpeGVsQnVmZmVyVG9EZXN0
aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYsIFBpeGVsQnVmZmVyJiwgRGVzdGluYXRpb25Db2xv
clNwYWNlLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdm9pZCBjb3B5Q29udmVydGVkSW1hZ2VCdWZm
ZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiwgY29uc3QgSW50UmVjdCYpOworICAgIHZv
aWQgY29weUNvbnZlcnRlZFBpeGVsQnVmZmVyVG9EZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJh
eSYsIFBpeGVsQnVmZmVyJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgY29uc3QgSW50
UmVjdCYpOwogICAgIGJvb2wgcmVxdWlyZXNQaXhlbEJ1ZmZlckNvbG9yU3BhY2VDb252ZXJzaW9u
KE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4pOwotICAgIE9wdGlvbmFsPFBpeGVsQnVm
ZmVyPiBjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNl
LCBJbWFnZUJ1ZmZlciYsIGNvbnN0IEludFJlY3QmLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uKTsK
LSAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gY29udmVydFBpeGVsQnVmZmVyVG9Db2xvclNwYWNl
KERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUGl4ZWxCdWZmZXImKTsKKyAgICBPcHRpb25hbDxQaXhl
bEJ1ZmZlcj4gY29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYsIEltYWdlQnVmZmVyJiwgY29uc3QgSW50UmVjdCYsIEFscGhhUHJlbXVsdGlw
bGljYXRpb24pOworICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBjb252ZXJ0UGl4ZWxCdWZmZXJU
b0NvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUGl4ZWxCdWZmZXImKTsK
ICAgICAKIAogICAgIEZpbHRlciYgbV9maWx0ZXI7CkBAIC0yNDQsMTMgKzI0NCwxMSBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9jbGlwc1RvQm91bmRzIHsgdHJ1ZSB9OwogCiAjaWYgRU5BQkxFKERF
U1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQotICAgIHN0YXRpYyBjb25zdGV4cHIg
YXV0byBkZWZhdWx0T3BlcmF0aW5nQ29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
TGluZWFyU1JHQjsKKyAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgbV9vcGVyYXRpbmdDb2xvclNw
YWNlIHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCkgfTsKICNlbHNlCi0gICAg
c3RhdGljIGNvbnN0ZXhwciBhdXRvIGRlZmF1bHRPcGVyYXRpbmdDb2xvclNwYWNlID0gRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCOworICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBtX29wZXJh
dGluZ0NvbG9yU3BhY2UgeyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9OwogI2VuZGlm
Ci0KLSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgbV9vcGVyYXRpbmdDb2xvclNwYWNlIHsgZGVm
YXVsdE9wZXJhdGluZ0NvbG9yU3BhY2UgfTsKLSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgbV9y
ZXN1bHRDb2xvclNwYWNlIHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgRGVz
dGluYXRpb25Db2xvclNwYWNlIG1fcmVzdWx0Q29sb3JTcGFjZSB7IERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpIH07CiAgICAgCiAgICAgY29uc3QgVHlwZSBtX2ZpbHRlckVmZmVjdENsYXNz
VHlwZTsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L1NvdXJjZUdyYXBoaWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgcHJpdmF0ZToKICAgICBTb3VyY2VHcmFwaGlj
KEZpbHRlciYgZmlsdGVyKQogICAgICAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIsIFR5cGU6OlNv
dXJjZUdyYXBoaWMpCiAgICAgewotICAgICAgICBzZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CisgICAgICAgIHNldE9wZXJhdGluZ0NvbG9yU3BhY2Uo
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgIH0KIAogICAgIGNvbnN0IGNoYXIq
IGZpbHRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiU291cmNlR3JhcGhpYyI7IH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3Np
YUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVj
b3JkZXIuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTA3Niw3ICsxMDc2LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJl
Y29yZGVyOjphcHBlbmQoc3RkOgogICAgIG1fY29tbWFuZExpc3QuYXBwZW5kKFdURk1vdmUoY29t
bWFuZCkpOwogfQogCi12b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmNsaXBUb0RyYXdpbmdD
b21tYW5kcyhjb25zdCBGbG9hdFJlY3QmLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9u
PHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpCit2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6
OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKQogewogICAg
IC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29z
aWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTk3LDcgKzk3LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGNsaXBQYXRoKGNvbnN0IFdlYkNvcmU6OlBhdGgmLCBXZWJD
b3JlOjpXaW5kUnVsZSkgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBjbGlwQm91bmRz
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1
ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgY2xp
cFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQmKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGlwVG9EcmF3aW5nQ29t
bWFuZHMoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgV2ViQ29y
ZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiwgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQmKT4mJikgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHZvaWQgcGFp
bnRGcmFtZUZvck1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVyJiwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiBkZXN0aW5hdGlvbikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5QYWludEZyYW1lRm9y
TWVkaWEoY29uc3QgV2ViQ29yZTo6TWVkaWFQbGF5ZXImKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS90ZXhtYXAvTmljb3NpYUdDR0xMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDR0xMYXllci5jcHAJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvdGV4bWFwL05pY29zaWFHQ0dMTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3
ICs4MSw3IEBAIHZvaWQgR0NHTExheWVyOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKICAgICBJbnRT
aXplIHRleHR1cmVTaXplKG1fY29udGV4dC5tX2N1cnJlbnRXaWR0aCwgbV9jb250ZXh0Lm1fY3Vy
cmVudEhlaWdodCk7CiAgICAgVGV4dHVyZU1hcHBlckdMOjpGbGFncyBmbGFncyA9IG1fY29udGV4
dC5jb250ZXh0QXR0cmlidXRlcygpLmFscGhhID8gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVu
ZCA6IDA7CiAjaWYgVVNFKEFOR0xFKQotICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4g
aW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRleHR1cmVTaXplLCBSZW5kZXJpbmdN
b2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBpbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGV4dHVyZVNpemUsIFJlbmRlcmluZ01vZGU6OlVu
YWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1h
dDo6QkdSQTgpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAJKHJldmlzaW9u
IDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIHsKLSAgICBQaXhl
bEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRp
cGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07
CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6
VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpIH07CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVh
dGUoZm9ybWF0LCBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpKTsKICAgICBpZiAoIXBpeGVs
QnVmZmVyKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
RVMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnJlYWRuUGl4ZWwKIAogT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIHsKLSAgICBQaXhl
bEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRp
cGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07
CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6
VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpIH07CiAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVh
dGUoZm9ybWF0LCBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpKTsKICAgICBpZiAoIXBpeGVs
QnVmZmVyKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJl
LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3
IEBAIHZvaWQgQml0bWFwVGV4dHVyZTo6dXBkYXRlQ29udGVudHMoR3JhcGgKIHsKICAgICAvLyBN
YWtpbmcgYW4gdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQgYnVmZmVyIGhlcmUgaXMgT0sg
YmVjYXVzZSB0aGlzIGNvZGUKICAgICAvLyBpc24ndCB1c2VkIGJ5IGFueSBwbGF0Zm9ybXMgdGhh
dCByZXNwZWN0IHRoZSBhY2NlbGVyYXRlZCBiaXQuCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUodGFyZ2V0UmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJH
UkE4KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0YXJnZXRS
ZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFpbWFnZUJ1
ZmZlcikKICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUGxhdGZvcm1TY3JlZW5HdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IE1pY2hh
ZWwgRW1tZWwgbWlrZS5lbW1lbEBnbWFpbC5jb20KICAqIENvcHlyaWdodCAoQykgMjAwOCBDaHJp
c3RpYW4gRHl3YW4gPGNocmlzdGlhbkBpbWVuZGlvLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAw
OCBDb2xsYWJvcmEgTHRkLgpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9y
U3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIK
ICNpbmNsdWRlICJHdGtVdGlsaXRpZXMuaCIKQEAgLTg1LDYgKzg2LDExIEBAIGJvb2wgc2NyZWVu
SXNNb25vY2hyb21lKFdpZGdldCogd2lkZ2V0KQogICAgIHJldHVybiBzY3JlZW5EZXB0aCh3aWRn
ZXQpIDwgMjsKIH0KIAorRGVzdGluYXRpb25Db2xvclNwYWNlIHNjcmVlbkNvbG9yU3BhY2UoV2lk
Z2V0KikKK3sKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7Cit9CisK
IGJvb2wgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMoKQogewogICAgIHJldHVybiBmYWxzZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNjcmVlbklPUy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5JT1Mu
bW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0
Zm9ybVNjcmVlbklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDYsIDIwMTQgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg4LDkgKzg4LDkgQEAgYm9v
bCBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UoV2lkZwogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotQ0dDb2xvclNwYWNlUmVmIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KiB3aWRnZXQpCitE
ZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqIHdpZGdldCkKIHsK
LSAgICByZXR1cm4gc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKHdpZGdldCkgPyBleHRlbmRl
ZFNSR0JDb2xvclNwYWNlUmVmKCkgOiBzUkdCQ29sb3JTcGFjZVJlZigpOworICAgIHJldHVybiBz
Y3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3Iod2lkZ2V0KSA/IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSB7IGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKSB9IDogRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCk7CiB9CiAKIC8vIFRoZXNlIGZ1bmN0aW9ucyBzY2FsZSBiZXR3ZWVuIHNjcmVlbiBh
bmQgcGFnZSBjb29yZGluYXRlcyBiZWNhdXNlIEphdmFTY3JpcHQvRE9NIG9wZXJhdGlvbnMKQEAg
LTE5MywxNiArMTkzLDE0IEBAIFNjcmVlblByb3BlcnRpZXMgY29sbGVjdFNjcmVlblByb3BlcnRp
ZXMKICAgICAgICAgRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QgPSBzY3JlZW4uYm91bmRz
OwogICAgICAgICBzY3JlZW5BdmFpbGFibGVSZWN0LnNldFkoTlNNYXhZKHNjcmVlbi5ib3VuZHMp
IC0gKHNjcmVlbkF2YWlsYWJsZVJlY3QueSgpICsgc2NyZWVuQXZhaWxhYmxlUmVjdC5oZWlnaHQo
KSkpOyAvLyBmbGlwCiAgICAgICAgIEZsb2F0UmVjdCBzY3JlZW5SZWN0ID0gc2NyZWVuLl9yZWZl
cmVuY2VCb3VuZHM7Ci0gICAgICAgIAotICAgICAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVm
PiBjb2xvclNwYWNlID0gc2NyZWVuQ29sb3JTcGFjZShudWxscHRyKTsKLSAgICAgICAgCisgICAg
ICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlIHsgc2NyZWVuQ29sb3JTcGFjZShu
dWxscHRyKSB9OwogICAgICAgICBpbnQgc2NyZWVuRGVwdGggPSBXZWJDb3JlOjpzY3JlZW5EZXB0
aChudWxscHRyKTsKICAgICAgICAgaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50ID0gV2ViQ29y
ZTo6c2NyZWVuRGVwdGhQZXJDb21wb25lbnQobnVsbHB0cik7CiAgICAgICAgIGJvb2wgc2NyZWVu
U3VwcG9ydHNFeHRlbmRlZENvbG9yID0gV2ViQ29yZTo6c2NyZWVuU3VwcG9ydHNFeHRlbmRlZENv
bG9yKG51bGxwdHIpOwogICAgICAgICBib29sIHNjcmVlbkhhc0ludmVydGVkQ29sb3JzID0gV2Vi
Q29yZTo6c2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMoKTsKICAgICAgICAgZmxvYXQgc2NhbGVGYWN0
b3IgPSBXZWJDb3JlOjpzY3JlZW5QUElGYWN0b3IoKTsKIAotICAgICAgICBzY3JlZW5Qcm9wZXJ0
aWVzLnNjcmVlbkRhdGFNYXAuc2V0KCsrZGlzcGxheUlELCBTY3JlZW5EYXRhIHsgc2NyZWVuQXZh
aWxhYmxlUmVjdCwgc2NyZWVuUmVjdCwgY29sb3JTcGFjZSwgc2NyZWVuRGVwdGgsIHNjcmVlbkRl
cHRoUGVyQ29tcG9uZW50LCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IsIHNjcmVlbkhhc0lu
dmVydGVkQ29sb3JzLCBmYWxzZSwgc2NhbGVGYWN0b3IgfSk7CisgICAgICAgIHNjcmVlblByb3Bl
cnRpZXMuc2NyZWVuRGF0YU1hcC5zZXQoKytkaXNwbGF5SUQsIFNjcmVlbkRhdGEgeyBzY3JlZW5B
dmFpbGFibGVSZWN0LCBzY3JlZW5SZWN0LCBXVEZNb3ZlKGNvbG9yU3BhY2UpLCBzY3JlZW5EZXB0
aCwgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQsIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciwg
c2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMsIGZhbHNlLCBzY2FsZUZhY3RvciB9KTsKICAgICAgICAg
CiAgICAgICAgIGlmIChzY3JlZW4gPT0gW1BBTDo6Z2V0VUlTY3JlZW5DbGFzcygpIG1haW5TY3Jl
ZW5dKQogICAgICAgICAgICAgc2NyZWVuUHJvcGVydGllcy5wcmltYXJ5RGlzcGxheUlEID0gZGlz
cGxheUlEOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVu
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9y
bVNjcmVlbk1hYy5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsOSArMTMw
LDcgQEAgU2NyZWVuUHJvcGVydGllcyBjb2xsZWN0U2NyZWVuUHJvcGVydGllcwogICAgICAgICBG
bG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxlUmVjdCA9IHNjcmVlbi52aXNpYmxlRnJhbWU7CiAgICAg
ICAgIHNjcmVlbkF2YWlsYWJsZVJlY3Quc2V0WShOU01heFkoc2NyZWVuLmZyYW1lKSAtIChzY3Jl
ZW5BdmFpbGFibGVSZWN0LnkoKSArIHNjcmVlbkF2YWlsYWJsZVJlY3QuaGVpZ2h0KCkpKTsgLy8g
ZmxpcAogICAgICAgICBGbG9hdFJlY3Qgc2NyZWVuUmVjdCA9IHNjcmVlbi5mcmFtZTsKLQotICAg
ICAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNwYWNlID0gc2NyZWVuLmNvbG9y
U3BhY2UuQ0dDb2xvclNwYWNlOwotCisgICAgICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xv
clNwYWNlIHsgc2NyZWVuLmNvbG9yU3BhY2UuQ0dDb2xvclNwYWNlIH07CiAgICAgICAgIGludCBz
Y3JlZW5EZXB0aCA9IE5TQml0c1BlclBpeGVsRnJvbURlcHRoKHNjcmVlbi5kZXB0aCk7CiAgICAg
ICAgIGludCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCA9IE5TQml0c1BlclNhbXBsZUZyb21EZXB0
aChzY3JlZW4uZGVwdGgpOwogICAgICAgICBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xv
ciA9IFtzY3JlZW4gY2FuUmVwcmVzZW50RGlzcGxheUdhbXV0Ok5TRGlzcGxheUdhbXV0UDNdOwpA
QCAtMTYzLDcgKzE2MSw3IEBAIFNjcmVlblByb3BlcnRpZXMgY29sbGVjdFNjcmVlblByb3BlcnRp
ZXMKICAgICAgICAgaWYgKGRpc3BsYXlNYXNrKQogICAgICAgICAgICAgZ3B1SUQgPSBncHVJREZv
ckRpc3BsYXlNYXNrKGRpc3BsYXlNYXNrKTsKIAotICAgICAgICBzY3JlZW5Qcm9wZXJ0aWVzLnNj
cmVlbkRhdGFNYXAuc2V0KGRpc3BsYXlJRCwgU2NyZWVuRGF0YSB7IHNjcmVlbkF2YWlsYWJsZVJl
Y3QsIHNjcmVlblJlY3QsIGNvbG9yU3BhY2UsIHNjcmVlbkRlcHRoLCBzY3JlZW5EZXB0aFBlckNv
bXBvbmVudCwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yLCBzY3JlZW5IYXNJbnZlcnRlZENv
bG9ycywgc2NyZWVuU3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlLCBzY3JlZW5Jc01vbm9jaHJvbWUs
IGRpc3BsYXlNYXNrLCBncHVJRCwgZHluYW1pY1JhbmdlTW9kZSwgc2NhbGVGYWN0b3IgfSk7Cisg
ICAgICAgIHNjcmVlblByb3BlcnRpZXMuc2NyZWVuRGF0YU1hcC5zZXQoZGlzcGxheUlELCBTY3Jl
ZW5EYXRhIHsgc2NyZWVuQXZhaWxhYmxlUmVjdCwgc2NyZWVuUmVjdCwgV1RGTW92ZShjb2xvclNw
YWNlKSwgc2NyZWVuRGVwdGgsIHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50LCBzY3JlZW5TdXBwb3J0
c0V4dGVuZGVkQ29sb3IsIHNjcmVlbkhhc0ludmVydGVkQ29sb3JzLCBzY3JlZW5TdXBwb3J0c0hp
Z2hEeW5hbWljUmFuZ2UsIHNjcmVlbklzTW9ub2Nocm9tZSwgZGlzcGxheU1hc2ssIGdwdUlELCBk
eW5hbWljUmFuZ2VNb2RlLCBzY2FsZUZhY3RvciB9KTsKIAogICAgICAgICBpZiAoIXNjcmVlblBy
b3BlcnRpZXMucHJpbWFyeURpc3BsYXlJRCkKICAgICAgICAgICAgIHNjcmVlblByb3BlcnRpZXMu
cHJpbWFyeURpc3BsYXlJRCA9IGRpc3BsYXlJRDsKQEAgLTM0MCwxMyArMzM4LDEzIEBAIE5TU2Ny
ZWVuICpzY3JlZW4oUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGwKICAgICByZXR1cm4gZmlyc3RTY3Jl
ZW4oKTsKIH0KIAotQ0dDb2xvclNwYWNlUmVmIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KiB3aWRn
ZXQpCitEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqIHdpZGdl
dCkKIHsKICAgICBpZiAoYXV0byBkYXRhID0gc2NyZWVuUHJvcGVydGllcyh3aWRnZXQpKQotICAg
ICAgICByZXR1cm4gZGF0YS0+Y29sb3JTcGFjZS5nZXQoKTsKKyAgICAgICAgcmV0dXJuIGRhdGEt
PmNvbG9yU3BhY2U7CiAKICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJp
dmlsZWdlOjpDYW5Db21tdW5pY2F0ZVdpdGhXaW5kb3dTZXJ2ZXIpKTsKLSAgICByZXR1cm4gc2Ny
ZWVuKHdpZGdldCkuY29sb3JTcGFjZS5DR0NvbG9yU3BhY2U7CisgICAgcmV0dXJuIERlc3RpbmF0
aW9uQ29sb3JTcGFjZSB7IHNjcmVlbih3aWRnZXQpLmNvbG9yU3BhY2UuQ0dDb2xvclNwYWNlIH07
CiB9CiAKIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKFdpZGdldCogd2lkZ2V0KQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC03MjYsNyArNzI2LDcgQEAgYm9vbCBUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3Vz
UmluZ1dpdGhWaQogCiAgICAgaWYgKHVzZUltYWdlQnVmZmVyKSB7CiAgICAgICAgIE5TUmVjdCBp
bWFnZUJ1ZmZlckRyYXdSZWN0ID0gTlNSZWN0KEZsb2F0UmVjdChidXR0b25Gb2N1c1JlY3RPdXRs
aW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgcmVjdC53aWR0aCgpLCByZWN0
LmhlaWdodCgpKSk7Ci0gICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlQ29tcGF0aWJsZUJ1ZmZlcihyZWN0LnNpemUoKSArIDIgKiBGbG9hdFNpemUoYnV0dG9uRm9j
dXNSZWN0T3V0bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgpLCBkZXZpY2VT
Y2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBjb250ZXh0KTsKKyAgICAg
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVy
KHJlY3Quc2l6ZSgpICsgMiAqIEZsb2F0U2l6ZShidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgs
IGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCksIGRldmljZVNjYWxlRmFjdG9yLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY29udGV4dCk7CiAgICAgICAgIGlmICghaW1hZ2VCdWZm
ZXIpCiAgICAgICAgICAgICByZXR1cm4gbmVlZHNSZXBhaW50OwogICAgICAgICB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2VHU3RyZWFtZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJl
YW1lci5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBNb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZUdTdHJlYW1lcjo6dQogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoeyBB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JB
OCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH0sIHsgeyB9LCBpbWFnZUJ1ZmZlci0+bG9n
aWNhbFNpemUoKSB9KTsKKyAgICBhdXRvIHBpeGVsQnVmZmVyID0gaW1hZ2VCdWZmZXItPmdldFBp
eGVsQnVmZmVyKHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhl
bEZvcm1hdDo6QkdSQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH0sIHsgeyB9LCBp
bWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSB9KTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAg
ICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDU0LDcgKzQ1NCw3IEBAIEltYWdlQnVmZmVyKiBNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZTo6aW0KICAgICBpZiAobV9pbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIG1faW1hZ2VCdWZmZXIuZ2V0KCk7CiAKLSAgICBtX2ltYWdlQnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShjYXB0dXJlU2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAg
bV9pbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2FwdHVyZVNpemUoKSwgUmVuZGVy
aW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCks
IFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFtX2ltYWdlQnVmZmVyKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcGxheXN0YXRp
b24vUGxhdGZvcm1TY3JlZW5QbGF5U3RhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcGxheXN0YXRpb24vUGxhdGZvcm1TY3JlZW5QbGF5U3RhdGlvbi5jcHAJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3BsYXlzdGF0aW9u
L1BsYXRmb3JtU2NyZWVuUGxheVN0YXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIK
IAorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAKQEAgLTcxLDQgKzcyLDkgQEAgYm9v
bCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IoV2lkZ2V0KgogICAgIHJldHVybiBmYWxzZTsK
IH0KIAorRGVzdGluYXRpb25Db2xvclNwYWNlIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KikKK3sK
KyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QbGF0Zm9y
bVNjcmVlbldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1BsYXRmb3JtU2NyZWVuV2luLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1BsYXRmb3JtU2NyZWVuV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2Ny
ZWVuLmgiCiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJG
bG9hdFJlY3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgpA
QCAtMTA0LDEyICsxMDUsMTAgQEAgRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QoV2lkZ2V0
KiB3aQogICAgIHJldHVybiBtb25pdG9ySW5mby5yY1dvcms7CiB9CiAKLSNpZiBVU0UoQ0cpCi1D
R0NvbG9yU3BhY2VSZWYgc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqKQorRGVzdGluYXRpb25Db2xv
clNwYWNlIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KikKIHsKLSAgICByZXR1cm4gc1JHQkNvbG9y
U3BhY2VSZWYoKTsKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiB9
Ci0jZW5kaWYKIAogYm9vbCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IoV2lkZ2V0KikKIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dwZS9QbGF0Zm9ybVNjcmVlbldQRS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3BlL1BsYXRmb3JtU2NyZWVu
V1BFLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3Bl
L1BsYXRmb3JtU2NyZWVuV1BFLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAKKyNpbmNs
dWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIldpZGdldC5oIgpAQCAtODEsNiAr
ODIsMTEgQEAgRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QoV2lkZ2V0KiB3aQogICAgIHJl
dHVybiBzY3JlZW5SZWN0KHdpZGdldCk7CiB9CiAKK0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBzY3Jl
ZW5Db2xvclNwYWNlKFdpZGdldCopCit7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpOworfQorCiBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcihXaWRnZXQq
KQogewogICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hy
L1BsYXRmb3JtWFIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9Q
bGF0Zm9ybVhSLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3hyL1BsYXRmb3JtWFIuaAkod29ya2luZyBjb3B5KQpAQCAtMTgsNiArMTgsNyBAQAogICovCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1
ZGUgIkZsb2F0UG9pbnQzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgogI2luY2x1
ZGUgIkludFJlY3QuaCIKQEAgLTMyLDggKzMzLDcgQEAKICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlQ0cu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL0lPU3VyZmFjZS5oPgorI2luY2x1ZGUgIklPU3VyZmFjZS5o
IgogI2luY2x1ZGUgPHd0Zi9NYWNoU2VuZFJpZ2h0Lmg+CiAjZW5kaWYKIApAQCAtNDQ2LDcgKzQ0
Niw3IEBAIE9wdGlvbmFsPERldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGE+IEQKICAgICBXVEY6
Ok1hY2hTZW5kUmlnaHQgc3VyZmFjZVNlbmRSaWdodDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHN1cmZhY2VTZW5kUmlnaHQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIGxh
eWVyRGF0YS5zdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0
KFdURk1vdmUoc3VyZmFjZVNlbmRSaWdodCksIFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCkp
OworICAgIGxheWVyRGF0YS5zdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9t
U2VuZFJpZ2h0KFdURk1vdmUoc3VyZmFjZVNlbmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpKTsKICNlbmRpZgogICAgIHJldHVybiBsYXllckRhdGE7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAkocmV2aXNpb24gMjc3OTE5
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExMSw5ICsxMTEsOSBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBDU1NGaWx0ZXI6OmJ1
aWxkUmVmCiAgICAgICAgIGVmZmVjdEVsZW1lbnQuc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKGVmZmVj
dC5nZXQoKSk7CiAgICAgICAgIGlmIChlZmZlY3RFbGVtZW50LnJlbmRlcmVyKCkpIHsKICNpZiBF
TkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgICAgICAgICBl
ZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoZWZmZWN0RWxlbWVudC5yZW5kZXJlcigpLT5z
dHlsZSgpLnN2Z1N0eWxlKCkuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpID09IENvbG9ySW50
ZXJwb2xhdGlvbjo6TGluZWFyUkdCID8gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdC
IDogRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKKyAgICAgICAgICAgIGVmZmVjdC0+c2V0
T3BlcmF0aW5nQ29sb3JTcGFjZShlZmZlY3RFbGVtZW50LnJlbmRlcmVyKCktPnN0eWxlKCkuc3Zn
U3R5bGUoKS5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzKCkgPT0gQ29sb3JJbnRlcnBvbGF0aW9u
OjpMaW5lYXJSR0IgPyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKSA6IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICNlbHNlCi0gICAgICAgICAgICBlZmZlY3QtPnNl
dE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKKyAgICAg
ICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSk7CiAjZW5kaWYKICAgICAgICAgfQogICAgICAgICBidWlsZGVyLT5hZGQoZWZm
ZWN0RWxlbWVudC5yZXN1bHQoKSwgZWZmZWN0KTsKQEAgLTI5Niw3ICsyOTYsNyBAQCBib29sIENT
U0ZpbHRlcjo6YnVpbGQoUmVuZGVyRWxlbWVudCYgcmVuCiAgICAgICAgICAgICAvLyBVbmxpa2Ug
U1ZHIEZpbHRlcnMgYW5kIENTU0ZpbHRlckltYWdlcywgZmlsdGVyIGZ1bmN0aW9ucyBvbiB0aGUg
ZmlsdGVyCiAgICAgICAgICAgICAvLyBwcm9wZXJ0eSBhcHBsaWVkIGhlcmUgc2hvdWxkIG5vdCBj
bGlwIHRvIHRoZWlyIHByaW1pdGl2ZSBzdWJyZWdpb25zLgogICAgICAgICAgICAgZWZmZWN0LT5z
ZXRDbGlwc1RvQm91bmRzKGNvbnN1bWVyID09IEZpbHRlckNvbnN1bWVyOjpGaWx0ZXJGdW5jdGlv
bik7Ci0gICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKTsKKyAgICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29s
b3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIGlmIChmaWx0ZXJPcGVyYXRpb24udHlwZSgpICE9IEZpbHRlck9wZXJhdGlvbjo6
UkVGRVJFTkNFKSB7CiAgICAgICAgICAgICAgICAgZWZmZWN0LT5pbnB1dEVmZmVjdHMoKSA9IHsg
V1RGTW92ZShwcmV2aW91c0VmZmVjdCkgfTsKQEAgLTM0NCwxMSArMzQ0LDExIEBAIHZvaWQgQ1NT
RmlsdGVyOjphbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmUKICAgICBJbnRTaXplIGxvZ2ljYWxTaXpl
IHsgbV9zb3VyY2VEcmF3aW5nUmVnaW9uLnNpemUoKSB9OwogICAgIGlmICghc291cmNlSW1hZ2Uo
KSB8fCBzb3VyY2VJbWFnZSgpLT5sb2dpY2FsU2l6ZSgpICE9IGxvZ2ljYWxTaXplKSB7CiAjaWYg
VVNFKERJUkVDVDJEKQotICAgICAgICBzZXRTb3VyY2VJbWFnZShJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KGxvZ2ljYWxTaXplLCByZW5kZXJpbmdNb2RlKCksICZ0YXJnZXRDb250ZXh0LCBmaWx0ZXJTY2Fs
ZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCkpOwor
ICAgICAgICBzZXRTb3VyY2VJbWFnZShJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBy
ZW5kZXJpbmdNb2RlKCksICZ0YXJnZXRDb250ZXh0LCBmaWx0ZXJTY2FsZSgpLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CiAjZWxzZQogICAgICAg
ICBVTlVTRURfUEFSQU0odGFyZ2V0Q29udGV4dCk7CiAgICAgICAgIFJlbmRlcmluZ01vZGUgbW9k
ZSA9IG1fZmlsdGVyUmVuZGVyZXIgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IHJlbmRl
cmluZ01vZGUoKTsKLSAgICAgICAgc2V0U291cmNlSW1hZ2UoSW1hZ2VCdWZmZXI6OmNyZWF0ZShs
b2dpY2FsU2l6ZSwgbW9kZSwgZmlsdGVyU2NhbGUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpKTsKKyAgICAgICAgc2V0U291cmNlSW1hZ2UoSW1hZ2VC
dWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgbW9kZSwgZmlsdGVyU2NhbGUoKSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCkpOwogI2VuZGlmCiAgICAg
fQogICAgIG1fZ3JhcGhpY3NCdWZmZXJBdHRhY2hlZCA9IHRydWU7CkBAIC0zODIsMTIgKzM4Miwx
MiBAQCB2b2lkIENTU0ZpbHRlcjo6YXBwbHkoKQogICAgIGlmIChtX2ZpbHRlclJlbmRlcmVyKSB7
CiAgICAgICAgIG1fZmlsdGVyUmVuZGVyZXItPmFwcGx5RWZmZWN0cyhlZmZlY3QpOwogICAgICAg
ICBpZiAobV9maWx0ZXJSZW5kZXJlci0+aGFzUmVzdWx0KCkpIHsKLSAgICAgICAgICAgIGVmZmVj
dC50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7
CisgICAgICAgICAgICBlZmZlY3QudHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICB9CiAgICAgZWZmZWN0LmFwcGx5KCk7Ci0gICAgZWZmZWN0LnRyYW5zZm9ybVJlc3VsdENvbG9y
U3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKKyAgICBlZmZlY3QudHJhbnNmb3Jt
UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiB9CiAKIExh
eW91dFJlY3QgQ1NTRmlsdGVyOjpjb21wdXRlU291cmNlSW1hZ2VSZWN0Rm9yRGlydHlSZWN0KGNv
bnN0IExheW91dFJlY3QmIGZpbHRlckJveFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGRpcnR5UmVj
dCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODc2LDcgKzg3Niw3
IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWUKICAgICAgICAgbWFz
a1JlY3QuaW50ZXJzZWN0KHNuYXBwZWRJbnRSZWN0KHBhaW50SW5mby5yZWN0KSk7CiAKICAgICAg
ICAgLy8gTm93IGNyZWF0ZSB0aGUgbWFzay4KLSAgICAgICAgbWFza0ltYWdlID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIobWFza1JlY3Quc2l6ZSgpLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IsIGNvbnRleHQpOworICAgICAgICBtYXNrSW1hZ2UgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihtYXNrUmVjdC5zaXplKCksIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpLCBjb250ZXh0KTsKICAgICAgICAgaWYgKCFtYXNrSW1hZ2UpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIHBhaW50TWFza0ZvclRleHRGaWxsQm94KG1hc2tJbWFn
ZS5nZXQoKSwgbWFza1JlY3QsIGJveCwgc2Nyb2xsZWRQYWludFJlY3QpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHJldmlzaW9u
IDI3NzkxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjY3LDcgKzMyNjcsNyBAQCBzdGF0aWMgUmVmUHRyPFBh
dHRlcm4+IHBhdHRlcm5Gb3JEZXNjcmlwCiB7CiAgICAgY29uc3QgRmxvYXRTaXplIHRpbGVTaXpl
IHsgMzIsIDE4IH07CiAKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZUNvbXBhdGlibGVCdWZmZXIodGlsZVNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwg
ZGVzdENvbnRleHQpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcih0aWxlU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCks
IGRlc3RDb250ZXh0KTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5t
bQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgzLDExICsxOTgzLDExIEBAIHZvaWQgUmVu
ZGVyVGhlbWVJT1M6OnBhaW50U3lzdGVtUHJldmlld0IKICAgICBJT1N1cmZhY2VSZWYgc3VyZmFj
ZTsKICAgICBpZiAodXNlU21hbGxCYWRnZSkgewogICAgICAgICBpZiAoIW1fc21hbGxCYWRnZVN1
cmZhY2UpCi0gICAgICAgICAgICBtX3NtYWxsQmFkZ2VTdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVh
dGUoeyBzbWFsbEJhZGdlRGltZW5zaW9uLCBzbWFsbEJhZGdlRGltZW5zaW9uIH0sIHNSR0JDb2xv
clNwYWNlUmVmKCkpOworICAgICAgICAgICAgbV9zbWFsbEJhZGdlU3VyZmFjZSA9IElPU3VyZmFj
ZTo6Y3JlYXRlKHsgc21hbGxCYWRnZURpbWVuc2lvbiwgc21hbGxCYWRnZURpbWVuc2lvbiB9LCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAgIHN1cmZhY2UgPSBtX3NtYWxs
QmFkZ2VTdXJmYWNlLT5zdXJmYWNlKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFtX2xh
cmdlQmFkZ2VTdXJmYWNlKQotICAgICAgICAgICAgbV9sYXJnZUJhZGdlU3VyZmFjZSA9IElPU3Vy
ZmFjZTo6Y3JlYXRlKHsgbGFyZ2VCYWRnZURpbWVuc2lvbiwgbGFyZ2VCYWRnZURpbWVuc2lvbiB9
LCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICAgICAgICAgIG1fbGFyZ2VCYWRnZVN1cmZhY2Ug
PSBJT1N1cmZhY2U6OmNyZWF0ZSh7IGxhcmdlQmFkZ2VEaW1lbnNpb24sIGxhcmdlQmFkZ2VEaW1l
bnNpb24gfSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgICAgICBzdXJmYWNl
ID0gbV9sYXJnZUJhZGdlU3VyZmFjZS0+c3VyZmFjZSgpOwogICAgIH0KICAgICBbbV9jaUNvbnRl
eHQuZ2V0KCkgcmVuZGVyOnRyYW5zbGF0ZWRJbWFnZSB0b0lPU3VyZmFjZTpzdXJmYWNlIGJvdW5k
czpiYWRnZVJlY3QgY29sb3JTcGFjZTpzUkdCQ29sb3JTcGFjZVJlZigpXTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0JKHJldmlzaW9uIDI3NzkxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTMwOSw3ICsxMzA5LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRQcm9n
cmVzc0JhcihjbwogICAgIGNvbnN0IGF1dG8mIHJlbmRlclByb2dyZXNzID0gZG93bmNhc3Q8UmVu
ZGVyUHJvZ3Jlc3M+KHJlbmRlck9iamVjdCk7CiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3Ig
PSByZW5kZXJPYmplY3QuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpOwogICAgIGJvb2wg
aXNJbmRldGVybWluYXRlID0gcmVuZGVyUHJvZ3Jlc3MucG9zaXRpb24oKSA8IDA7Ci0gICAgYXV0
byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGluZmxh
dGVkUmVjdC5zaXplKCksIGRldmljZVNjYWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IsIHBhaW50SW5mby5jb250ZXh0KCkpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihpbmZsYXRlZFJlY3Quc2l6ZSgpLCBkZXZp
Y2VTY2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHBhaW50SW5mby5j
b250ZXh0KCkpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE4MSw3ICsxODEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+
IFNoYXBlOjpjcmVhdGVSYXN0CiAgICAgSW50UmVjdCBtYXJnaW5SZWN0ID0gc25hcHBlZEludFJl
Y3QobWFyZ2luUik7CiAgICAgYXV0byBpbnRlcnZhbHMgPSBtYWtlVW5pcXVlPFJhc3RlclNoYXBl
SW50ZXJ2YWxzPihtYXJnaW5SZWN0LmhlaWdodCgpLCAtbWFyZ2luUmVjdC55KCkpOwogICAgIC8v
IEZJWE1FICgxNDk0MjApOiBUaGlzIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxs
eSB1bmFjY2VsZXJhdGVkLgotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKGltYWdlUmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRv
IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVJlY3Quc2l6ZSgpLCBSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKIAogICAgIGF1dG8gY3JlYXRlU2hhcGUgPSBbJl0oKSB7
CiAgICAgICAgIGF1dG8gcmFzdGVyU2hhcGUgPSBtYWtlVW5pcXVlPFJhc3RlclNoYXBlPihXVEZN
b3ZlKGludGVydmFscyksIG1hcmdpblJlY3Quc2l6ZSgpKTsKQEAgLTE5Nyw3ICsxOTcsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVSYXN0CiAgICAgaWYgKGltYWdlKQog
ICAgICAgICBncmFwaGljc0NvbnRleHQuZHJhd0ltYWdlKCppbWFnZSwgSW50UmVjdChJbnRQb2lu
dCgpLCBpbWFnZVJlY3Quc2l6ZSgpKSk7CiAKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQg
eyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpS
R0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgUGl4ZWxCdWZmZXJGb3Jt
YXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhl
bEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgYXV0
byBwaXhlbEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5nZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIHsgSW50
UG9pbnQoKSwgaW1hZ2VSZWN0LnNpemUoKSB9KTsKICAgICAKICAgICAvLyBXZSBjb3VsZCBnZXQg
dG8gYSB2YWx1ZSB3aGVyZSBQaXhlbEJ1ZmZlciBjb3VsZCBiZSBudWxsb3B0LiBBIGNhc2Ugd2hl
cmUgSW1hZ2VSZWN0LnNpemUoKSBpcyBodWdlLCBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXIuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE0Niw3ICsxNDYsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlD
bGlwCiAgICAgQWZmaW5lVHJhbnNmb3JtIGFic29sdXRlVHJhbnNmb3JtID0gU1ZHUmVuZGVyaW5n
Q29udGV4dDo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0
ZW0ocmVuZGVyZXIpOwogICAgIGlmICghY2xpcHBlckRhdGEuaXNWYWxpZEZvckdlb21ldHJ5KG9i
amVjdEJvdW5kaW5nQm94LCBhYnNvbHV0ZVRyYW5zZm9ybSkpIHsKICAgICAgICAgLy8gRklYTUUg
KDE0OTQ2OSk6IFRoaXMgaW1hZ2UgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5
IHVuYWNjZWxlcmF0ZWQuIE1ha2luZyBpdCBtYXRjaCB0aGUgY29udGV4dCBicmVha3MgbmVzdGVk
IGNsaXBwaW5nLCB0aG91Z2guCi0gICAgICAgIGF1dG8gbWFza0ltYWdlID0gU1ZHUmVuZGVyaW5n
Q29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIob2JqZWN0Qm91bmRpbmdCb3gsIGFic29sdXRlVHJh
bnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsICZjb250ZXh0KTsKKyAgICAgICAgYXV0byBtYXNrSW1hZ2UgPSBTVkdSZW5kZXJp
bmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihvYmplY3RCb3VuZGluZ0JveCwgYWJzb2x1dGVU
cmFuc2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBSZW5kZXJpbmdNb2RlOjpV
bmFjY2VsZXJhdGVkLCAmY29udGV4dCk7CiAgICAgICAgIGlmICghbWFza0ltYWdlKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZp
bHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw5ICsxMDQsOSBAQCBzdGQ6OnVuaXF1ZV9w
dHI8U1ZHRmlsdGVyQnVpbGRlcj4gUmVuZGVyCiAgICAgICAgIGVmZmVjdC0+c2V0RWZmZWN0Qm91
bmRhcmllcyhTVkdMZW5ndGhDb250ZXh0OjpyZXNvbHZlUmVjdGFuZ2xlPFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcz4oJmVsZW1lbnQsIGZpbHRlckVsZW1lbnQoKS5wcmltaXRp
dmVVbml0cygpLCB0YXJnZXRCb3VuZGluZ0JveCkpOwogICAgICAgICBpZiAoZWxlbWVudC5yZW5k
ZXJlcigpKSB7CiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdC
KQotICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKGVsZW1lbnQucmVu
ZGVyZXIoKS0+c3R5bGUoKS5zdmdTdHlsZSgpLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSA9
PSBDb2xvckludGVycG9sYXRpb246OkxpbmVhclJHQiA/IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
TGluZWFyU1JHQiA6IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CisgICAgICAgICAgICBl
ZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoZWxlbWVudC5yZW5kZXJlcigpLT5zdHlsZSgp
LnN2Z1N0eWxlKCkuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpID09IENvbG9ySW50ZXJwb2xh
dGlvbjo6TGluZWFyUkdCID8gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCkgOiBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAjZWxzZQotICAgICAgICAgICAgZWZmZWN0
LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7Cisg
ICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCkpOwogI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgYnVpbGRlci0+YWRk
KGVsZW1lbnQucmVzdWx0KCksIFdURk1vdmUoZWZmZWN0KSk7CkBAIC0xOTgsOSArMTk4LDkgQEAg
Ym9vbCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdQogCiAgICAgYXV0byByZW5k
ZXJpbmdNb2RlID0gcmVuZGVyZXIuc2V0dGluZ3MoKS5hY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVk
KCkgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQ7CiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQot
ICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQjsK
KyAgICBhdXRvIGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0Io
KTsKICNlbHNlCi0gICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCOworICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
OwogI2VuZGlmCiAgICAgYXV0byBzb3VyY2VHcmFwaGljID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6
Y3JlYXRlSW1hZ2VCdWZmZXIoZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbiwgZWZmZWN0aXZlVHJh
bnNmb3JtLCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2RlLCBjb250ZXh0KTsKICAgICBpZiAoIXNv
dXJjZUdyYXBoaWMpIHsKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNl
RmlsdGVyOjpwb3N0QXBwbHlSCiAgICAgICAgICAgICBmaWx0ZXJEYXRhLnN0YXRlID0gRmlsdGVy
RGF0YTo6QXBwbHlpbmc7CiAgICAgICAgICAgICBsYXN0RWZmZWN0LT5hcHBseSgpOwogICAgICAg
ICAgICAgbGFzdEVmZmVjdC0+Y29ycmVjdEZpbHRlclJlc3VsdElmTmVlZGVkKCk7Ci0gICAgICAg
ICAgICBsYXN0RWZmZWN0LT50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQik7CisgICAgICAgICAgICBsYXN0RWZmZWN0LT50cmFuc2Zvcm1SZXN1bHRD
b2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICAgICAgfQogICAg
ICAgICBmaWx0ZXJEYXRhLnN0YXRlID0gRmlsdGVyRGF0YTo6QnVpbHQ7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUdyYWRpZW50LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjAsNyArNjAsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY3JlYXRlTWFza0FuZFN3YXBDb250CiAg
ICAgQWZmaW5lVHJhbnNmb3JtIGFic29sdXRlVHJhbnNmb3JtID0gU1ZHUmVuZGVyaW5nQ29udGV4
dDo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0oKnRl
eHRSb290QmxvY2spOwogICAgIEZsb2F0UmVjdCByZXBhaW50UmVjdCA9IHRleHRSb290QmxvY2st
PnJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCk7CiAKLSAgICBhdXRvIG1hc2tJbWFnZSA9
IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBhYnNv
bHV0ZVRyYW5zZm9ybSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBjb250ZXh0LT5yZW5k
ZXJpbmdNb2RlKCkpOworICAgIGF1dG8gbWFza0ltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6
Y3JlYXRlSW1hZ2VCdWZmZXIocmVwYWludFJlY3QsIGFic29sdXRlVHJhbnNmb3JtLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY29udGV4dC0+cmVuZGVyaW5nTW9kZSgpKTsKICAgICBp
ZiAoIW1hc2tJbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2Vy
LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDkgKzcxLDkg
QEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdQogICAgICAgICBjb25z
dCBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSBzdHlsZSgpLnN2Z1N0eWxlKCk7CiAKICNpZiBF
TkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgICAgIGF1dG8g
Y29sb3JTcGFjZSA9IHN2Z1N0eWxlLmNvbG9ySW50ZXJwb2xhdGlvbigpID09IENvbG9ySW50ZXJw
b2xhdGlvbjo6TGluZWFyUkdCID8gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCIDog
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOworICAgICAgICBhdXRvIGNvbG9yU3BhY2UgPSBz
dmdTdHlsZS5jb2xvckludGVycG9sYXRpb24oKSA9PSBDb2xvckludGVycG9sYXRpb246OkxpbmVh
clJHQiA/IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigpIDogRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCk7CiAjZWxzZQotICAgICAgICBhdXRvIGNvbG9yU3BhY2UgPSBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I7CisgICAgICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOwogI2VuZGlmCiAKICAgICAgICAgLy8gRklYTUUgKDE0
OTQ3MCk6IFRoaXMgaW1hZ2UgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVu
YWNjZWxlcmF0ZWQuIE1ha2luZyBpdCBtYXRjaCB0aGUgY29udGV4dCBicmVha3MgYWxwaGEgbWFz
a2luZywgdGhvdWdoLgpAQCAtOTIsNyArOTIsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFz
a2VyOjphcHBseVJlc291CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgUmVuZGVyU1ZHUmVz
b3VyY2VNYXNrZXI6OmRyYXdDb250ZW50SW50b01hc2tJbWFnZShNYXNrZXJEYXRhKiBtYXNrZXJE
YXRhLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVuZGVyT2JqZWN0KiBvYmpl
Y3QpCitib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpkcmF3Q29udGVudEludG9NYXNrSW1h
Z2UoTWFza2VyRGF0YSogbWFza2VyRGF0YSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBj
b2xvclNwYWNlLCBSZW5kZXJPYmplY3QqIG9iamVjdCkKIHsKICAgICBHcmFwaGljc0NvbnRleHQm
IG1hc2tJbWFnZUNvbnRleHQgPSBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UtPmNvbnRleHQoKTsKIApA
QCAtMTE5LDcgKzExOSw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250
ZW4KICAgICB9CiAKICNpZiAhVVNFKENHKQotICAgIG1hc2tlckRhdGEtPm1hc2tJbWFnZS0+dHJh
bnNmb3JtQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGNvbG9yU3BhY2Up
OworICAgIG1hc2tlckRhdGEtPm1hc2tJbWFnZS0+dHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY29sb3JTcGFjZSk7CiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTShjb2xvclNwYWNlKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1h
c2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAKICAgICBj
b25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNW
R1Jlc291cmNlTWFza2VyIjsgfQogCi0gICAgYm9vbCBkcmF3Q29udGVudEludG9NYXNrSW1hZ2Uo
TWFza2VyRGF0YSosIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUmVuZGVyT2JqZWN0Kik7CisgICAg
Ym9vbCBkcmF3Q29udGVudEludG9NYXNrSW1hZ2UoTWFza2VyRGF0YSosIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYsIFJlbmRlck9iamVjdCopOwogICAgIHZvaWQgY2FsY3VsYXRlTWFza0Nv
bnRlbnRSZXBhaW50UmVjdCgpOwogCiAgICAgRmxvYXRSZWN0IG1fbWFza0NvbnRlbnRCb3VuZGFy
aWVzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZVBhdHRlcm4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNTMsNyArMjUzLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZVBhdHRl
cm46OmJ1aWxkVGlsZQogUmVmUHRyPEltYWdlQnVmZmVyPiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRl
cm46OmNyZWF0ZVRpbGVJbWFnZShjb25zdCBQYXR0ZXJuQXR0cmlidXRlcyYgYXR0cmlidXRlcywg
Y29uc3QgRmxvYXRSZWN0JiB0aWxlQm91bmRhcmllcywgY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0
ZVRpbGVCb3VuZGFyaWVzLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRpbGVJbWFnZVRyYW5zZm9y
bSwgRmxvYXRSZWN0JiBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcywgUmVuZGVyaW5nTW9k
ZSByZW5kZXJpbmdNb2RlKSBjb25zdAogewogICAgIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFy
aWVzID0gSW1hZ2VCdWZmZXI6OmNsYW1wZWRSZWN0KGFic29sdXRlVGlsZUJvdW5kYXJpZXMpOwot
ICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZm
ZXIoYWJzb2x1dGVUaWxlQm91bmRhcmllcywgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgcmVuZGVyaW5nTW9kZSk7CisgICAgYXV0byB0
aWxlSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihhYnNvbHV0
ZVRpbGVCb3VuZGFyaWVzLCBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcywgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCksIHJlbmRlcmluZ01vZGUpOwogICAgIGlmICghdGlsZUltYWdl
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiAyNzc5
MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzYsNyArMjM2LDcgQEAgQWZmaW5lVHJhbnNmb3JtIFNW
R1JlbmRlcmluZ0NvbnRleHQ6OmNhbAogICAgIHJldHVybiBhYnNvbHV0ZVRyYW5zZm9ybTsKIH0K
IAotUmVmUHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
YWJzb2x1dGVUcmFuc2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW5k
ZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkK
K1JlZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFi
c29sdXRlVHJhbnNmb3JtLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2Us
IFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0KQogewogICAgIEludFJlY3QgcGFpbnRSZWN0ID0gY2FsY3VsYXRlSW1hZ2VCdWZmZXJSZWN0
KHRhcmdldFJlY3QsIGFic29sdXRlVHJhbnNmb3JtKTsKICAgICAvLyBEb24ndCBjcmVhdGUgZW1w
dHkgSW1hZ2VCdWZmZXJzLgpAQCAtMjY0LDcgKzI2NCw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4g
U1ZHUmVuZGVyaW5nQ29udGV4dDoKICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CiB9CiAKLVJlZlB0
cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRSZWN0LCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdN
b2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+
IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYg
dGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwgY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNv
bnN0IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKIHsKICAgICBJbnRTaXplIGNsYW1wZWRTaXpl
ID0gcm91bmRlZEludFNpemUoY2xhbXBlZFJlY3Quc2l6ZSgpKTsKICAgICBGbG9hdFNpemUgdW5j
bGFtcGVkU2l6ZSA9IHJvdW5kZWRJbnRTaXplKHRhcmdldFJlY3Quc2l6ZSgpKTsKQEAgLTM1MCw3
ICszNTAsNyBAQCBib29sIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckZvcmVncm91CiAKICAg
ICAvLyBDcmVhdGUgYSBuZXcgYnVmZmVyIGFuZCBwYWludCB0aGUgZm9yZWdyb3VuZCBpbnRvIGl0
LgogICAgIGlmICghaW1hZ2VCdWZmZXIpIHsKLSAgICAgICAgaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoYm91bmRpbmdCb3gu
c2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBtX3BhaW50SW5mby0+Y29udGV4
dCgpKTsKKyAgICAgICAgaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJs
ZUJ1ZmZlcihleHBhbmRlZEludFNpemUoYm91bmRpbmdCb3guc2l6ZSgpKSwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCksIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkpOwogICAgICAgICBpZiAo
IWltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5o
CShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jl
bmRlcmluZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KFJlbmRlckVsZW1lbnQmLCBQYWlu
dEluZm8mLCBOZWVkc0dyYXBoaWNzQ29udGV4dFNhdmUgPSBEb250U2F2ZUdyYXBoaWNzQ29udGV4
dCk7CiAgICAgYm9vbCBpc1JlbmRlcmluZ1ByZXBhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9yZW5k
ZXJpbmdGbGFncyAmIFJlbmRlcmluZ1ByZXBhcmVkOyB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPElt
YWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSwgUmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIp
OwotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwgRGVz
dGluYXRpb25Db2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQq
ID0gbnVsbHB0cik7CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VC
dWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBSZW5kZXJp
bmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0cik7CisgICAgc3RhdGljIFJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJn
ZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRSZWN0LCBjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0gbnVsbHB0
cik7CiAKICAgICBzdGF0aWMgdm9pZCByZW5kZXJTdWJ0cmVlVG9Db250ZXh0KEdyYXBoaWNzQ29u
dGV4dCYsIFJlbmRlckVsZW1lbnQmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKICAgICBzdGF0
aWMgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3Qs
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4mLCBib29sIHNhZmVUb0NsZWFyKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjE3LDcgKzIxNyw3IEBAIFJlZlB0cjxOYXRpdmVJbWFnZT4gU1ZHSW1hZ2U6Om5hdGl2ZUltYWcK
ICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFJlbmRlcmluZ01vZGU6OlVu
YWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6
OkJHUkE4KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXpl
KCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yNDcsNyArMjQ3LDcgQEAgdm9pZCBTVkdJbWFn
ZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoRwogICAgIEZsb2F0UmVjdCBpbWFnZUJ1ZmZlclNp
emUgPSB6b29tZWRDb250YWluZXJSZWN0OwogICAgIGltYWdlQnVmZmVyU2l6ZS5zY2FsZShpbWFn
ZUJ1ZmZlclNjYWxlLndpZHRoKCksIGltYWdlQnVmZmVyU2NhbGUuaGVpZ2h0KCkpOwogCi0gICAg
YXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRl
ZEludFNpemUoaW1hZ2VCdWZmZXJTaXplLnNpemUoKSksIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQiwgY29udGV4dCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoaW1hZ2VCdWZmZXJTaXplLnNpemUoKSks
IDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBjb250ZXh0KTsKICAgICBpZiAoIWJ1
ZmZlcikgLy8gRmFpbGVkIHRvIGFsbG9jYXRlIGJ1ZmZlci4KICAgICAgICAgcmV0dXJuOwogICAg
IGRyYXdGb3JDb250YWluZXIoYnVmZmVyLT5jb250ZXh0KCksIGNvbnRhaW5lclNpemUsIGNvbnRh
aW5lclpvb20sIGluaXRpYWxGcmFnbWVudFVSTCwgaW1hZ2VCdWZmZXJTaXplLCB6b29tZWRDb250
YWluZXJSZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTMsOCArOTMsOCBAQCB2b2lkIEZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAg
aWYgKCFtX2ltYWdlICYmICFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRkVJ
bWFnZSByZXN1bHRzIGFyZSBhbHdheXMgaW4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCCi0g
ICAgc2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOworICAg
IC8vIEZFSW1hZ2UgcmVzdWx0cyBhcmUgYWx3YXlzIGluIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpCisgICAgc2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSk7CiAKICAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBjcmVhdGVJbWFnZUJ1ZmZl
clJlc3VsdCgpOwogICAgIGlmICghcmVzdWx0SW1hZ2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24g
Mjc3OTIwKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSw5NyBAQAorMjAyMS0wNS0yMiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgQ29udmVydCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNs
YXNzIHdyYXBwaW5nIGEgcGxhdGZvcm0gY29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3Ig
Q0cgcG9ydHMsIGV0Yy4pCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjYxNDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAtIFVwZGF0ZSBJbWFnZUJ1ZmZlciBzdWJjbGFzcyBzaWduYXR1cmVzIHRvIHVzZSAi
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiIgdG8KKyAgICAgICAgICBjb25mb3JtIHRvIHRo
ZSBiYXNlIGNsYXNzLgorICAgICAgICAtIFJlcGxhY2UgQ29sb3JTcGFjZURhdGEgd2l0aCBPcHRp
b25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+LiBObyByZWFzb24gdG8gaGF2ZSB0d28KKyAgICAg
ICAgICB0eXBlcyB0aGF0IGFyZSB0aGUgc2FtZS4KKyAgICAgICAgLSBHaXZlIGFsbCBwb3J0cyBh
IGNvbG9yIHNwYWNlIGNvbmZpZ3VyYXRpb24gZm9yIFNoYXJlYWJsZUJpdG1hcCBub3cgdGhhdCB0
aGVyZSBpcworICAgICAgICAgIGEgY29tbW9uIGNsYXNzIGZvciByZXByZXNlbnRpbmcgY29sb3Ig
c3BhY2UuCisgICAgICAgIC0gVXBkYXRlIERpc3BsYXlMaXN0IGRlY29kaW5nIHRvIGFjY291bnQg
Zm9yIEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzIGFuZCBHZXRQaXhlbEJ1ZmZlcgorICAgICAg
ICAgIG5vIGxvbmdlciBiZWluZyBpbmxpbmVhYmxlIGR1ZSB0byBub3cgaGF2aW5nIG5vbi10cml2
aWFsIGRlc3RydWN0b3JzIGR1ZSB0byAKKyAgICAgICAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ug
bWVtYmVyLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
ci5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcik6
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6
CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpjcmVhdGVG
cmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFn
ZURlY29kZXJBVkZQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6YXBwbHlCYWNraW5nU3RvcmVUb0xheWVy
KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6U2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb246OmRlY29kZSk6CisgICAg
ICAgICogU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRl
Y29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAg
ICAgICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAoV2ViS2l0
Ojpjb2xvclNwYWNlKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL0NvbG9yU3BhY2VEYXRhLmg6IFJl
bW92ZWQuCisgICAgICAgICogU2hhcmVkL21hYy9Db2xvclNwYWNlRGF0YS5tbTogUmVtb3ZlZC4K
KyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvaW9z
L1dLV2ViVmlld0lPUy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF90YWtlVmlld1NuYXBzaG90
XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc25hcHNob3RSZWN0OmludG9JbWFnZU9mV2lkdGg6
Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Y29sb3JTcGFjZSk6CisgICAgICAgICogVUlQcm9jZXNz
L1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZUhvc3QubW06CisgICAgICAgIChXZWJLaXQ6OnJlY3Vyc2l2ZWx5TWFwSU9TdXJm
YWNlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VD
bGllbnRJbXBsOjpjb2xvclNwYWNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW06CisgICAgICAgICogVUlQcm9jZXNzL21hYy9X
ZWJQYWdlUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29sb3JT
cGFjZSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kOjpjb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6cHJlcGFyZUZvckRpc3BsYXkpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZUltYWdl
QnVmZmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2Nv
YS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQ6OmNy
ZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpjcmVhdGVG
cmFtZUltYWdlQXRJbmRleCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2Ev
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6CisgICAgICAg
IChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGl4ZWxCdWZmZXJGb3JDdXJyZW50
VGltZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06Cisg
ICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6UERGUGx1Z2luKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJlYWJsZUJpdG1hcFV0aWxpdGllcy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OmNyZWF0ZVNoYXJlYWJsZUJpdG1hcCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJD
aHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OmNvbnZlcnREcmFnSW1hZ2VUb0JpdG1hcCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhLmg6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjpzZXRDb2xv
clNwYWNlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2Fn
ZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpzbmFwc2hvdE9wdGlvbnNUb0JpdG1hcENvbmZpZ3VyYXRpb24pOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYTo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEpOgorICAgICAgICAoV2ViS2l0OjpU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0Q29sb3JTcGFjZSk6CisKIDIwMjEtMDUt
MjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIExv
Y2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0CShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIwMyw3ICsyMDMsNiBAQCBTaGFyZWQvaW9zL1dlYlRv
dWNoRXZlbnRJT1MuY3BwCiAKIFNoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQogU2hh
cmVkL21hYy9Db2RlU2lnbmluZy5tbQotU2hhcmVkL21hYy9Db2xvclNwYWNlRGF0YS5tbQogU2hh
cmVkL21hYy9IYW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMubW0KIFNoYXJlZC9tYWMvTmF0aXZlV2Vi
R2VzdHVyZUV2ZW50TWFjLm1tCiBTaGFyZWQvbWFjL05hdGl2ZVdlYktleWJvYXJkRXZlbnRNYWMu
bW0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlci5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NDQsNyArNDQsNyBAQCBjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlciA6IHB1YmxpYyBXZWJDb3JlCiAg
ICAgdXNpbmcgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OnB1dFBpeGVsQnVmZmVyOwogCiBwdWJs
aWM6Ci0gICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQmIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgc3RhdGlj
IGF1dG8gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBjb25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3Bh
Y2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kJiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgcmV0
dXJuIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjp0ZW1wbGF0ZSBjcmVhdGU8UmVtb3RlSW1hZ2VC
dWZmZXI+KHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIG51
bGxwdHIsIHJlbW90ZVJlbmRlcmluZ0JhY2tlbmQsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAkocmV2aXNpb24gMjc3OTE5
KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kOjpkaWRGbHVzaChEaQogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eTo6RGlkRmx1c2goZmx1c2hJZGVudGlmaWVyLCByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKIH0KIAot
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9h
dFNpemUmIGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0IHBpeGVsRm9ybWF0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKQordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjcmVhdGVJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRl
cmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQocmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJp
bmdNb2RlOjpBY2NlbGVyYXRlZCB8fCByZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OlVu
YWNjZWxlcmF0ZWQpOwpAQCAtNDk1LDYgKzQ5NSw4IEBAIE9wdGlvbmFsPERpc3BsYXlMaXN0OjpJ
dGVtSGFuZGxlPiBXQVJOX1UKICAgICAgKiBTZWUgdGhlIGNvbW1lbnQgYXQgdGhlIHRvcCBvZiBE
aXNwbGF5TGlzdEl0ZW1zLmggZm9yIHdoeS4gKi8KIAogICAgIHN3aXRjaCAodHlwZSkgeworICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoK
KyAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9E
cmF3aW5nQ29tbWFuZHM+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwogICAgIGNhc2Ug
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgogICAgICAgICByZXR1cm4gZGVj
b2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpDbGlwT3V0VG9QYXRoPihkYXRhLCBsZW5ndGgsIGhh
bmRsZUxvY2F0aW9uKTsKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcFBhdGg6
CkBAIC01MjEsNiArNTIzLDggQEAgT3B0aW9uYWw8RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdB
Uk5fVQogICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpGaWxsUmVj
dFdpdGhSb3VuZGVkSG9sZT4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7CiAgICAgY2Fz
ZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKICAgICAgICAgcmV0dXJu
IGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RmlsbFJvdW5kZWRSZWN0PihkYXRhLCBsZW5n
dGgsIGhhbmRsZUxvY2F0aW9uKTsKKyAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6R2V0
UGl4ZWxCdWZmZXI6CisgICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6
OkdldFBpeGVsQnVmZmVyPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKICAgICBjYXNl
IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6UHV0UGl4ZWxCdWZmZXI6CiAgICAgICAgIHJldHVybiBk
ZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OlB1dFBpeGVsQnVmZmVyPihkYXRhLCBsZW5ndGgs
IGhhbmRsZUxvY2F0aW9uKTsKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6U2V0TGlu
ZURhc2g6CkBAIC01NDAsNyArNTQ0LDYgQEAgT3B0aW9uYWw8RGlzcGxheUxpc3Q6Okl0ZW1IYW5k
bGU+IFdBUk5fVQogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwOgogICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwT3V0OgogICAgIGNhc2UgRGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjoKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKICAgICBjYXNlIERpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkRyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI6CkBAIC01ODEsNyArNTg0LDYgQEAgT3B0aW9u
YWw8RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVQogICAgIGNhc2UgRGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpTdHJva2VSZWN0OgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpT
dHJva2VMaW5lOgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpUcmFuc2xhdGU6Ci0g
ICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkdldFBpeGVsQnVmZmVyOgogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ0LDE0ICs0NCwxOCBAQAogCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKwog
bmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIGNsYXNzIERpc3BsYXlMaXN0OwogY2xhc3MgSXRlbTsK
IH0KKworY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlOwogY2xhc3MgRmxvYXRTaXplOwogY2xh
c3MgTmF0aXZlSW1hZ2U7Ci1lbnVtIGNsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZSA6IHVpbnQ4
X3Q7CisKIGVudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJvb2w7CisKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC0xMjEsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBVbmlxdWVSZWY8
SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwogCiAgICAgLy8gTWVzc2FnZXMgdG8gYmUgcmVjZWl2
ZWQuCi0gICAgdm9pZCBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
IGxvZ2ljYWxTaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQs
IFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBjcmVhdGVJ
bWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGxvZ2ljYWxTaXplLCBXZWJDb3Jl
OjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFdlYkNvcmU6OkRl
c3RpbmF0aW9uQ29sb3JTcGFjZSYsIFdlYkNvcmU6OlBpeGVsRm9ybWF0LCBXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgd2FrZVVwQW5kQXBwbHlEaXNwbGF5
TGlzdChjb25zdCBHUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50cyYpOwogICAgIHZvaWQg
dXBkYXRlU2hhcmVkTWVtb3J5Rm9yR2V0UGl4ZWxCdWZmZXIodWludDMyX3QgYnl0ZUNvdW50LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlJik+JiYp
OwogICAgIHZvaWQgc2VtYXBob3JlRm9yR2V0UGl4ZWxCdWZmZXIoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBJUEM6OlNlbWFwaG9yZSYpPiYmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlBy
b3h5LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEz
LDI4ICsxMTMsMjggQEAgdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6c2V0RGF0YQog
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lQ291bnQsIGltYWdlRGVjb2Rlci0+c2l6ZSgpLCBp
bWFnZURlY29kZXItPmhhc1RyYWNrKCksIFdURk1vdmUoZnJhbWVJbmZvcykpOwogfQogCi12b2lk
IFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChJbWFn
ZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChPcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYsIENvbG9yU3BhY2VEYXRh
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94
eTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoSW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlm
aWVyLCBzaXplX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8V1RGOjpN
YWNoU2VuZFJpZ2h0PiYmLCBPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChtX2ltYWdlRGVjb2RlcnMu
Y29udGFpbnMoaWRlbnRpZmllcikpOwogICAgIE9wdGlvbmFsPFdURjo6TWFjaFNlbmRSaWdodD4g
c2VuZFJpZ2h0OwotICAgIENvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2VEYXRhOworICAgIE9wdGlv
bmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKICAgICBpZiAo
IW1faW1hZ2VEZWNvZGVycy5jb250YWlucyhpZGVudGlmaWVyKSkgewotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKHNlbmRSaWdodCksIFdURk1vdmUoY29sb3JTcGFjZURhdGEpKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShzZW5kUmlnaHQpLCBXVEZNb3ZlKGNv
bG9yU3BhY2UpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGF1dG8gZnJhbWVJbWFn
ZSA9IG1faW1hZ2VEZWNvZGVycy5nZXQoaWRlbnRpZmllciktPmNyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KGluZGV4KTsKICAgICBpZiAoIWZyYW1lSW1hZ2UpIHsKLSAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShzZW5kUmlnaHQpLCBXVEZNb3ZlKGNvbG9yU3BhY2VEYXRhKSk7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc2VuZFJpZ2h0KSwgV1RGTW92ZShjb2xvclNw
YWNlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoYXV0byBzdXJmYWNlID0g
SU9TdXJmYWNlOjpjcmVhdGVGcm9tSW1hZ2UoZnJhbWVJbWFnZS5nZXQoKSkpIHsKICAgICAgICAg
c2VuZFJpZ2h0ID0gc3VyZmFjZS0+Y3JlYXRlU2VuZFJpZ2h0KCk7Ci0gICAgICAgIGNvbG9yU3Bh
Y2VEYXRhLmNnQ29sb3JTcGFjZSA9IHN1cmZhY2UtPmNvbG9yU3BhY2UoKTsKKyAgICAgICAgY29s
b3JTcGFjZSA9IHN1cmZhY2UtPmNvbG9yU3BhY2UoKTsKICAgICB9CiAKLSAgICBjb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKHNlbmRSaWdodCksIFdURk1vdmUoY29sb3JTcGFjZURhdGEpKTsKKyAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHNlbmRSaWdodCksIFdURk1vdmUoY29sb3JTcGFj
ZSkpOwogfQogCiB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpjbGVhckZyYW1lQnVm
ZmVyQ2FjaGUoSW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBzaXplX3QgaW5kZXgp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykg
JiYgSEFWRShBVkFTU0VUUkVBREVSKQogCi0jaW5jbHVkZSAiQ29sb3JTcGFjZURhdGEuaCIKICNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9JbWFnZURlY29kZXJBVkZPYmpDLmg+CkBAIC01Nyw3ICs1Niw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkZWxldGVEZWNvZGVyKFdlYkNvcmU6OkltYWdlRGVjb2Rlcklk
ZW50aWZpZXIpOwogICAgIHZvaWQgc2V0RXhwZWN0ZWRDb250ZW50U2l6ZShXZWJDb3JlOjpJbWFn
ZURlY29kZXJJZGVudGlmaWVyLCBsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSk7CiAgICAg
dm9pZCBzZXREYXRhKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHNpemVfdCBmcmFtZUNvdW50LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplLCBib29s
IGhhc1RyYWNrLCBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpGcmFtZUlu
Zm8+PiYmKT4mJik7Ci0gICAgdm9pZCBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChXZWJDb3JlOjpJ
bWFnZURlY29kZXJJZGVudGlmaWVyLCBzaXplX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJpZ2h0PiYmLCBDb2xvclNwYWNlRGF0YSYmKT4mJik7
CisgICAgdm9pZCBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChXZWJDb3JlOjpJbWFnZURlY29kZXJJ
ZGVudGlmaWVyLCBzaXplX3QgaW5kZXgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8
V1RGOjpNYWNoU2VuZFJpZ2h0PiYmLCBPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9y
U3BhY2U+JiYpPiYmKTsKICAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShXZWJDb3JlOjpJ
bWFnZURlY29kZXJJZGVudGlmaWVyLCBzaXplX3QgaW5kZXgpOwogCiAgICAgdm9pZCBlbmNvZGVk
RGF0YVN0YXR1c0NoYW5nZWQoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllcik7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNzc5
MTkpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAgbWVz
c2FnZXMgLT4gUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkgTgogICAgIERlbGV0ZURlY29kZXIo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIFNldEV4cGVj
dGVkQ29udGVudFNpemUoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVy
LCBsb25nIGxvbmcgZXhwZWN0ZWRDb250ZW50U2l6ZSkKICAgICBTZXREYXRhKFdlYkNvcmU6Oklt
YWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVm
ZXJlbmNlIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKSAtPiAoc2l6ZV90IGZyYW1lQ291bnQs
IFdlYkNvcmU6OkludFNpemUgc2l6ZSwgYm9vbCBoYXNUcmFjaywgT3B0aW9uYWw8VmVjdG9yPFdl
YkNvcmU6OkltYWdlRGVjb2Rlcjo6RnJhbWVJbmZvPj4gZnJhbWVJbmZvcykgU3luY2hyb25vdXMK
LSAgICBDcmVhdGVGcmFtZUltYWdlQXRJbmRleChXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCkgLT4gKE9wdGlvbmFsPE1hY2hTZW5kUmlnaHQ+
IHNlbmRSaWdodCwgc3RydWN0IFdlYktpdDo6Q29sb3JTcGFjZURhdGEgY29sb3JTcGFjZSkgU3lu
Y2hyb25vdXMKKyAgICBDcmVhdGVGcmFtZUltYWdlQXRJbmRleChXZWJDb3JlOjpJbWFnZURlY29k
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCkgLT4gKE9wdGlvbmFsPE1hY2hT
ZW5kUmlnaHQ+IHNlbmRSaWdodCwgT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNw
YWNlPiBjb2xvclNwYWNlKSBTeW5jaHJvbm91cwogICAgIENsZWFyRnJhbWVCdWZmZXJDYWNoZShX
ZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCkK
IH0KIApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCShyZXZp
c2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03NCwxMCArNzQsNyBAQCB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlOjpjbGVhcigpCiAKIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uOjpl
bmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgaXNP
cGFxdWU7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgZW5jb2RlciA8PCBjb2xvclNwYWNlOwot
I2VuZGlmCisgICAgZW5jb2RlciA8PCBjb2xvclNwYWNlIDw8IGlzT3BhcXVlOwogI2lmIFVTRShE
SVJFQ1QyRCkKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZTo6ZW5jb2RlSGFuZGxlKGVuY29kZXIs
IHNoYXJlZFJlc291cmNlSGFuZGxlKTsKIApAQCAtODgsMjEgKzg1LDI4IEBAIHZvaWQgU2hhcmVh
YmxlQml0bWFwOjpDb25maWd1cmF0aW9uOjplbmMKICNlbmRpZgogfQogCi1ib29sIFNoYXJlYWJs
ZUJpdG1hcDo6Q29uZmlndXJhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgQ29u
ZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK2Jvb2wgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1
cmF0aW9uOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb25maWd1cmF0aW9uJiByZXN1
bHQpCiB7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb25maWd1cmF0aW9uLmlzT3BhcXVlKSkK
KyAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+PiBj
b2xvclNwYWNlOworICAgIGRlY29kZXIgPj4gY29sb3JTcGFjZTsKKyAgICBpZiAoIWNvbG9yU3Bh
Y2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZSkpCisKKyAgICBPcHRpb25h
bDxib29sPiBpc09wYXF1ZTsKKyAgICBkZWNvZGVyID4+IGlzT3BhcXVlOworICAgIGlmICghaXNP
cGFxdWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgorCisgICAgcmVzdWx0ID0gQ29u
ZmlndXJhdGlvbiB7IFdURk1vdmUoKmNvbG9yU3BhY2UpLCAqaXNPcGFxdWUgfTsKKwogI2lmIFVT
RShESVJFQ1QyRCkKICAgICBhdXRvIHByb2Nlc3NTcGVjaWZpY0hhbmRsZSA9IFNoYXJlZE1lbW9y
eTo6SGFuZGxlOjpkZWNvZGVIYW5kbGUoZGVjb2Rlcik7CiAgICAgaWYgKCFwcm9jZXNzU3BlY2lm
aWNIYW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGNvbmZpZ3VyYXRpb24uc2hh
cmVkUmVzb3VyY2VIYW5kbGUgPSBwcm9jZXNzU3BlY2lmaWNIYW5kbGUudmFsdWUoKTsKKyAgICBy
ZXN1bHQuc2hhcmVkUmVzb3VyY2VIYW5kbGUgPSBwcm9jZXNzU3BlY2lmaWNIYW5kbGUudmFsdWUo
KTsKICNlbmRpZgorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
U2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlYWJsZUJpdG1hcC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTUgKzI2LDEy
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRS
ZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUltYWdlLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogCi0jaWYg
VVNFKENHKQotI2luY2x1ZGUgIkNvbG9yU3BhY2VEYXRhLmgiCi0jZW5kaWYKLQogI2lmIFVTRShE
SVJFQ1QyRCkKIGludGVyZmFjZSBJRDJEMUJpdG1hcDsKIGludGVyZmFjZSBJRDJEMVJlbmRlclRh
cmdldDsKQEAgLTU1LDEwICs1Miw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgU2hhcmVh
YmxlQml0bWFwIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlYWJsZUJpdG1hcD4g
ewogcHVibGljOgogICAgIHN0cnVjdCBDb25maWd1cmF0aW9uIHsKKyAgICAgICAgT3B0aW9uYWw8
V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlOwogICAgICAgICBib29s
IGlzT3BhcXVlIHsgZmFsc2UgfTsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgQ29sb3JT
cGFjZURhdGEgY29sb3JTcGFjZTsKLSNlbmRpZgogI2lmIFVTRShESVJFQ1QyRCkKICAgICAgICAg
bXV0YWJsZSBIQU5ETEUgc2hhcmVkUmVzb3VyY2VIYW5kbGUgeyBudWxscHRyIH07CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCShy
ZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNiArODIsOCBAQAogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJBcmd1bWVudENvZGVyc0NGLmgiCisKIG5hbWVzcGFj
ZSBXVEYgewogY2xhc3MgTWFjaFNlbmRSaWdodDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAyNzc5
MTkpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzI1LDggKzMyNSwxMSBAQCBPcHRpb25hbDxXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzPiBXZWJQCiAgICAgcGFyYW1ldGVycy5oYXNSZXNvdXJjZUxvYWRDbGll
bnQgPSBXVEZNb3ZlKCpoYXNSZXNvdXJjZUxvYWRDbGllbnQpOwogCiAjaWYgUExBVEZPUk0oTUFD
KQotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5jb2xvclNwYWNlKSkKKyAgICBP
cHRpb25hbDxPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+PiBjb2xvclNwYWNlOworICAg
IGRlY29kZXIgPj4gY29sb3JTcGFjZTsKKyAgICBpZiAoIWNvbG9yU3BhY2UpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgcGFyYW1ldGVycy5jb2xvclNwYWNlID0gV1RGTW92ZSgq
Y29sb3JTcGFjZSk7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVzZVN5c3Rl
bUFwcGVhcmFuY2UpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5o
CShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRl
ICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BY3Rpdml0eVN0YXRl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRGVzdGlu
YXRpb25Db2xvclNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFNpemUuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0ludFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dE1pbGVzdG9u
ZS5oPgpAQCAtNDksMTAgKzUwLDYgQEAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgUExBVEZPUk0oTUFDKQotI2luY2x1ZGUg
IkNvbG9yU3BhY2VEYXRhLmgiCi0jZW5kaWYKLQogI2lmIEVOQUJMRShBUFBMSUNBVElPTl9NQU5J
RkVTVCkKICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uTWFuaWZlc3QuaD4KICNlbmRpZgpA
QCAtMTQ2LDcgKzE0Myw3IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAg
ICBib29sIHVzZUVsZXZhdGVkVXNlckludGVyZmFjZUxldmVsIHsgZmFsc2UgfTsKIAogI2lmIFBM
QVRGT1JNKE1BQykKLSAgICBDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlOworICAgIE9wdGlvbmFs
PFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKICAgICBib29sIHVz
ZVN5c3RlbUFwcGVhcmFuY2U7CiAjZW5kaWYKICNpZiBFTkFCTEUoTUVUQV9WSUVXUE9SVCkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tp
bmdTdG9yZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9y
ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjEyLDE5ICsyMTIsMTkgQEAgdm9pZCBSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaQogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2Fz
ZSBUeXBlOjpJT1N1cmZhY2U6CiAgICAgICAgIGlmIChzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmcp
Ci0gICAgICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0gbV9sYXllci0+Y29udGV4
dCgpLT5lbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkoKS5jcmVhdGVJbWFnZUJ1ZmZl
cihtX3NpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkLCBtX3NjYWxlLCBX
ZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIHBpeGVsRm9ybWF0KCkpOworICAg
ICAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IG1fbGF5ZXItPmNvbnRleHQoKS0+
ZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1hZ2VCdWZmZXIobV9z
aXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCwgbV9zY2FsZSwgV2ViQ29y
ZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHBpeGVsRm9ybWF0KCkpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyID0gV2ViQ29yZTo6
Q29uY3JldGVJbWFnZUJ1ZmZlcjxBY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVk
QmFja2VuZD46OmNyZWF0ZShtX3NpemUsIG1fc2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0cik7CisgICAgICAgICAgICBtX2Zy
b250QnVmZmVyLmltYWdlQnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxBY2Nl
bGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkQmFja2VuZD46OmNyZWF0ZShtX3NpemUs
IG1fc2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBwaXhlbEZv
cm1hdCgpLCBudWxscHRyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUeXBlOjpCaXRtYXA6
CiAgICAgICAgIGlmIChzaG91bGRVc2VSZW1vdGVSZW5kZXJpbmcpCi0gICAgICAgICAgICBtX2Zy
b250QnVmZmVyLmltYWdlQnVmZmVyID0gbV9sYXllci0+Y29udGV4dCgpLT5lbnN1cmVSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkoKS5jcmVhdGVJbWFnZUJ1ZmZlcihtX3NpemUsIFdlYkNvcmU6
OlJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIG1fc2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSk7CisgICAgICAgICAgICBtX2Zyb250
QnVmZmVyLmltYWdlQnVmZmVyID0gbV9sYXllci0+Y29udGV4dCgpLT5lbnN1cmVSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkoKS5jcmVhdGVJbWFnZUJ1ZmZlcihtX3NpemUsIFdlYkNvcmU6OlJl
bmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIG1fc2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpLCBwaXhlbEZvcm1hdCgpKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VC
dWZmZXI8VW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZD46OmNyZWF0ZSht
X3NpemUsIG1fc2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgcGl4
ZWxGb3JtYXQoKSwgbnVsbHB0cik7CisgICAgICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVm
ZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxVbmFjY2VsZXJhdGVkSW1hZ2VCdWZm
ZXJTaGFyZWFibGVCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwgbV9zY2FsZSwgV2ViQ29yZTo6RGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHBpeGVsRm9ybWF0KCksIG51bGxwdHIpOwogICAg
ICAgICBicmVhazsKICNpZiBFTkFCTEUoQ0dfRElTUExBWV9MSVNUX0JBQ0tFRF9JTUFHRV9CVUZG
RVIpCiAgICAgY2FzZSBUeXBlOjpDR0Rpc3BsYXlMaXN0OgotICAgICAgICBtX2Zyb250QnVmZmVy
LmltYWdlQnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxDR0Rpc3BsYXlMaXN0
SW1hZ2VCdWZmZXJCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwgbV9zY2FsZSwgV2ViQ29yZTo6RGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBwaXhlbEZvcm1hdCgpLCBudWxscHRyKTsKKyAgICAg
ICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZm
ZXI8Q0dEaXNwbGF5TGlzdEltYWdlQnVmZmVyQmFja2VuZD46OmNyZWF0ZShtX3NpemUsIG1fc2Nh
bGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBwaXhlbEZvcm1hdCgp
LCBudWxscHRyKTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICB9CkBAIC0zOTcsNyArMzk3
LDcgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6YXBwbHlCYWNraQogICAgICAgICAg
ICAgQVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpJT1N1cmZhY2UpOwogICAgICAgICAgICAgc3dpdGNo
IChjb250ZW50c1R5cGUpIHsKICAgICAgICAgICAgIGNhc2UgTGF5ZXJDb250ZW50c1R5cGU6OklP
U3VyZmFjZTogewotICAgICAgICAgICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3Vy
ZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKG1hY2hTZW5kUmlnaHQpLCBXZWJDb3Jl
OjpzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICAgICAgICAgICAgICBhdXRvIHN1cmZhY2UgPSBX
ZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShtYWNoU2VuZFJp
Z2h0KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgICAgICAg
ICAgICAgIGxheWVyLmNvbnRlbnRzID0gc3VyZmFjZSA/IHN1cmZhY2UtPmFzTGF5ZXJDb250ZW50
cygpIDogbmlsOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpJbmRleDog
U291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogICAgIAogc3RhdGljIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKGNvbnN0IFNoYXJl
YWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKIHsKLSAgICByZXR1cm4g
Y29uZmlndXJhdGlvbi5jb2xvclNwYWNlLmNnQ29sb3JTcGFjZS5nZXQoKSA/OiBzUkdCQ29sb3JT
cGFjZVJlZigpOworICAgIHJldHVybiBjb25maWd1cmF0aW9uLmNvbG9yU3BhY2UgPyBjb25maWd1
cmF0aW9uLmNvbG9yU3BhY2UtPnBsYXRmb3JtQ29sb3JTcGFjZSgpIDogV2ViQ29yZTo6c1JHQkNv
bG9yU3BhY2VSZWYoKTsKIH0KIAogc3RhdGljIGJvb2wgd2FudHNFeHRlbmRlZFJhbmdlKGNvbnN0
IFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9Db2xvclNwYWNlRGF0YS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9Db2xvclNwYWNlRGF0YS5oCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEuaAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIENvbG9yU3BhY2VEYXRh
X2gKLSNkZWZpbmUgQ29sb3JTcGFjZURhdGFfaAotCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgotCi1uYW1lc3BhY2UgSVBDIHsKLWNsYXNzIERlY29kZXI7Ci1jbGFzcyBFbmNvZGVyOwotfQot
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IENvbG9yU3BhY2VEYXRhIHsKLSAgICB2b2lk
IGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIENvbG9yU3BhY2VEYXRhJik7Ci0KLSAgICBS
ZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjZ0NvbG9yU3BhY2U7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIENvbG9yU3BhY2VEYXRhX2gKClByb3BlcnR5IGNoYW5n
ZXMgb246IFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9Db2xvclNwYWNlRGF0YS5oCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0Nv
bG9yU3BhY2VEYXRhLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9D
b2xvclNwYWNlRGF0YS5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL0NvbG9yU3BhY2VEYXRhLm1tCShub25leGlzdGVudCkKQEAgLTEsNjAgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiQ29sb3JTcGFjZURhdGEu
aCIKLQotI2ltcG9ydCAiQXJndW1lbnRDb2RlcnNDRi5oIgotI2ltcG9ydCAiRGVjb2Rlci5oIgot
I2ltcG9ydCAiRW5jb2Rlci5oIgotI2ltcG9ydCA8d3RmL0VudW1UcmFpdHMuaD4KLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLXZvaWQgQ29sb3JTcGFjZURhdGE6OmVuY29kZShJUEM6OkVuY29kZXIm
IGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxib29sPihjZ0Nv
bG9yU3BhY2UpOwotICAgIGlmIChjZ0NvbG9yU3BhY2UpCi0gICAgICAgIGVuY29kZXIgPDwgY2dD
b2xvclNwYWNlOwotfQotCi1ib29sIENvbG9yU3BhY2VEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyLCBDb2xvclNwYWNlRGF0YSYgY29sb3JTcGFjZURhdGEpCi17Ci0gICAgYm9vbCBo
YXNDR0NvbG9yU3BhY2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNDR0NvbG9yU3BhY2Up
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWhhc0NHQ29sb3JTcGFjZSkKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xv
clNwYWNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29sb3JTcGFjZSkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAKLSAgICBjb2xvclNwYWNlRGF0YS5jZ0NvbG9yU3BhY2UgPSBXVEZN
b3ZlKGNvbG9yU3BhY2UpOwotICAgIHJldHVybiB0cnVlOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHJldmlzaW9uIDI3
NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtOTMsNiArOTMsNyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIENvbG9yOwogY2xhc3MgQ3Vyc29yOworY2xhc3MgRGVzdGluYXRpb25D
b2xvclNwYWNlOwogY2xhc3MgRmxvYXRRdWFkOwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgUmVn
aW9uOwpAQCAtMTg4LDEwICsxODksNiBAQCBjbGFzcyBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
Q2xpZW50OwogY2xhc3MgSW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVz
dDsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi1zdHJ1Y3QgQ29sb3JTcGFjZURhdGE7
Ci0jZW5kaWYKLQogI2lmIEhBVkUoVklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQogdXNpbmcg
TGF5ZXJIb3N0aW5nQ29udGV4dElEID0gdWludDMyX3Q7CiAjZW5kaWYKQEAgLTQyNiw3ICs0MjMs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIENHUmVjdCBib3VuZHNPZkxheWVySW5MYXllckJh
Y2tlZFdpbmRvd0Nvb3JkaW5hdGVzKENBTGF5ZXIgKikgY29uc3QgPSAwOwogCi0gICAgdmlydHVh
bCBDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlKCkgPSAwOworICAgIHZpcnR1YWwgV2ViQ29yZTo6
RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UoKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZv
aWQgc2hvd1BsYXRmb3JtQ29udGV4dE1lbnUoTlNNZW51ICosIFdlYkNvcmU6OkludFBvaW50KSA9
IDA7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lv
biAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29y
a2luZyBjb3B5KQpAQCAtMTk4LDYgKzE5OCw3IEBAIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgQXR0
YWNobWVudDsKIGNsYXNzIENvbnRlbnRXb3JsZDsKIGNsYXNzIENvbnRleHRNZW51Q2xpZW50Owor
Y2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlOwogY2xhc3MgRXJyb3I7CiBjbGFzcyBGaW5kQ2xp
ZW50OwogY2xhc3MgRmluZE1hdGNoZXNDbGllbnQ7CkBAIC0zNzcsNyArMzc4LDYgQEAgY2xhc3Mg
V2ViV2hlZWxFdmVudENvYWxlc2NlcjsKIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiAKIHN0cnVj
dCBBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YTsKLXN0cnVjdCBDb2xvclNwYWNlRGF0YTsK
IHN0cnVjdCBEYXRhRGV0ZWN0aW9uUmVzdWx0Owogc3RydWN0IERvY3VtZW50RWRpdGluZ0NvbnRl
eHQ7CiBzdHJ1Y3QgRG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3Q7CkBAIC0xMTMyLDcgKzEx
MzIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoKTsKICAgICB2b2lk
IGFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKTsKIAotICAgIENvbG9yU3Bh
Y2VEYXRhIGNvbG9yU3BhY2UoKTsKKyAgICBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2Ug
Y29sb3JTcGFjZSgpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1t
CShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dL
V2ViVmlld0lPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAxNCw3ICsxMDE0LDcgQEAgLSAoUmVm
UHRyPFdlYktpdDo6Vmlld1NuYXBzaG90PilfdGFrZVZpZQogI2Vsc2UKICAgICBXZWJDb3JlOjpJ
T1N1cmZhY2U6OkZvcm1hdCBzbmFwc2hvdEZvcm1hdCA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9y
bWF0OjpCR1JBOwogI2VuZGlmCi0gICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNl
OjpjcmVhdGUoV2ViQ29yZTo6ZXhwYW5kZWRJbnRTaXplKHNuYXBzaG90U2l6ZSksIFdlYkNvcmU6
OnNSR0JDb2xvclNwYWNlUmVmKCksIHNuYXBzaG90Rm9ybWF0KTsKKyAgICBhdXRvIHN1cmZhY2Ug
PSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZShXZWJDb3JlOjpleHBhbmRlZEludFNpemUoc25h
cHNob3RTaXplKSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHNuYXBz
aG90Rm9ybWF0KTsKICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIENBUmVuZGVyU2VydmVyUmVuZGVyTGF5ZXJXaXRoVHJhbnNmb3JtKE1BQ0hfUE9SVF9OVUxM
LCBzZWxmLmxheWVyLmNvbnRleHQuY29udGV4dElkLCByZWludGVycHJldF9jYXN0PHVpbnQ2NF90
PihzZWxmLmxheWVyKSwgc3VyZmFjZS0+c3VyZmFjZSgpLCAwLCAwLCAmdHJhbnNmb3JtKTsKQEAg
LTMwNzksNyArMzA3OSw3IEBAIC0gKHZvaWQpX3NuYXBzaG90UmVjdDooQ0dSZWN0KXJlY3RJblZp
ZXcKICAgICBOU1N0cmluZyAqZGlzcGxheU5hbWUgPSBzZWxmLndpbmRvdy5zY3JlZW4uZGlzcGxh
eUNvbmZpZ3VyYXRpb24ubmFtZTsKICAgICBpZiAoZGlzcGxheU5hbWUgJiYgIXNlbGYud2luZG93
LmhpZGRlbikgewogICAgICAgICBUcmFjZVNjb3BlIHNuYXBzaG90U2NvcGUoUmVuZGVyU2VydmVy
U25hcHNob3RTdGFydCwgUmVuZGVyU2VydmVyU25hcHNob3RFbmQpOwotICAgICAgICBhdXRvIHN1
cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZShXZWJDb3JlOjpleHBhbmRlZEludFNp
emUoV2ViQ29yZTo6RmxvYXRTaXplKGltYWdlU2l6ZSkpLCBXZWJDb3JlOjpzUkdCQ29sb3JTcGFj
ZVJlZigpKTsKKyAgICAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVh
dGUoV2ViQ29yZTo6ZXhwYW5kZWRJbnRTaXplKFdlYkNvcmU6OkZsb2F0U2l6ZShpbWFnZVNpemUp
KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgICAgICBpZiAo
IXN1cmZhY2UpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwogICAg
ICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJWaWV3SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw2ICs5NCw3IEBAIGNs
YXNzIFBhZ2VDb25maWd1cmF0aW9uOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U7CiBjbGFzcyBJbnRQb2ludDsKIHN0cnVjdCBTaGFyZURhdGFX
aXRoUGFyc2VkVVJMOwogCkBAIC0xNjgsNyArMTY5LDYgQEAgY2xhc3MgV2ViRnJhbWVQcm94eTsK
IGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQb29sOwogY2xhc3MgV2ViUHJv
Y2Vzc1Byb3h5Owotc3RydWN0IENvbG9yU3BhY2VEYXRhOwogc3RydWN0IFdlYkhpdFRlc3RSZXN1
bHREYXRhOwogCiBlbnVtIGNsYXNzIENvbnRpbnVlVW5zYWZlTG9hZCA6IGJvb2w7CkBAIC0zMTMs
NyArMzEzLDcgQEAgcHVibGljOgogCiAgICAgTlNWaWV3ICpoaXRUZXN0KENHUG9pbnQpOwogCi0g
ICAgQ29sb3JTcGFjZURhdGEgY29sb3JTcGFjZSgpOworICAgIFdlYkNvcmU6OkRlc3RpbmF0aW9u
Q29sb3JTcGFjZSBjb2xvclNwYWNlKCk7CiAKICAgICB2b2lkIHNldFVuZGVybGF5Q29sb3IoTlND
b2xvciAqKTsKICAgICBOU0NvbG9yICp1bmRlcmxheUNvbG9yKCkgY29uc3Q7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHdv
cmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKICNpbXBvcnQgIkFQSUxlZ2FjeUNvbnRleHRI
aXN0b3J5Q2xpZW50LmgiCiAjaW1wb3J0ICJBUElOYXZpZ2F0aW9uLmgiCiAjaW1wb3J0ICJBcHBL
aXRTUEkuaCIKLSNpbXBvcnQgIkNvbG9yU3BhY2VEYXRhLmgiCiAjaW1wb3J0ICJDb3JlVGV4dEhl
bHBlcnMuaCIKICNpbXBvcnQgIkZvbnRJbmZvLmgiCiAjaW1wb3J0ICJGdWxsc2NyZWVuQ2xpZW50
LmgiCkBAIC05MCw2ICs4OSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yTWFjLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0NvbG9yU2VyaWFsaXphdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db21w
b3NpdGlvbkhpZ2hsaWdodC5oPgorI2ltcG9ydCA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGljdGlvbmFyeUxvb2t1cC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9EcmFnRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnSXRlbS5oPgpAQCAtMjUwMCw3
ICsyNTAwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cG9zdEZha2VNb3VzZU1vdmVkRXZlbgogICAg
IG1fcGFnZS0+aGFuZGxlTW91c2VFdmVudCh3ZWJFdmVudCk7CiB9CiAKLUNvbG9yU3BhY2VEYXRh
IFdlYlZpZXdJbXBsOjpjb2xvclNwYWNlKCkKK1dlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFj
ZSBXZWJWaWV3SW1wbDo6Y29sb3JTcGFjZSgpCiB7CiAgICAgaWYgKCFtX2NvbG9yU3BhY2UpIHsK
ICAgICAgICAgaWYgKG1fdGFyZ2V0V2luZG93Rm9yTW92ZVByZXBhcmF0aW9uKQpAQCAtMjUxMSwx
MCArMjUxMSw3IEBAIENvbG9yU3BhY2VEYXRhIFdlYlZpZXdJbXBsOjpjb2xvclNwYWNlKCkKICAg
ICAgICAgICAgIG1fY29sb3JTcGFjZSA9IFtOU1NjcmVlbiBtYWluU2NyZWVuXS5jb2xvclNwYWNl
OwogICAgIH0KIAotICAgIENvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2VEYXRhOwotICAgIGNvbG9y
U3BhY2VEYXRhLmNnQ29sb3JTcGFjZSA9IFttX2NvbG9yU3BhY2UgQ0dDb2xvclNwYWNlXTsKLQot
ICAgIHJldHVybiBjb2xvclNwYWNlRGF0YTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RGVzdGluYXRp
b25Db2xvclNwYWNlIHsgW21fY29sb3JTcGFjZSBDR0NvbG9yU3BhY2VdIH07CiB9CiAKIHZvaWQg
V2ViVmlld0ltcGw6OnNldFVuZGVybGF5Q29sb3IoTlNDb2xvciAqdW5kZXJsYXlDb2xvcikKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVIb3N0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5t
bQkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2ltcG9ydCAiV2ViUGFnZVByb3h5
LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVh
cnR6Q29yZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNp
bXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KICNpbXBvcnQgPFdlYkNvcmUvSU9T
dXJmYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtTGF5ZXIuaD4KQEAgLTMxNyw3ICsz
MTgsNyBAQCBzdGF0aWMgdm9pZCByZWN1cnNpdmVseU1hcElPU3VyZmFjZUJhY2tpCiB7CiAgICAg
aWYgKGxheWVyLmNvbnRlbnRzICYmIENGR2V0VHlwZUlEKChfX2JyaWRnZSBDRlR5cGVSZWYpbGF5
ZXIuY29udGVudHMpID09IENBTWFjaFBvcnRHZXRUeXBlSUQoKSkgewogICAgICAgICBNYWNoU2Vu
ZFJpZ2h0IHBvcnQgPSBNYWNoU2VuZFJpZ2h0OjpjcmVhdGUoQ0FNYWNoUG9ydEdldFBvcnQoKF9f
YnJpZGdlIENBTWFjaFBvcnRSZWYpbGF5ZXIuY29udGVudHMpKTsKLSAgICAgICAgYXV0byBzdXJm
YWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUocG9y
dCksIHNSR0JDb2xvclNwYWNlUmVmKCkpOworICAgICAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3Jl
OjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShwb3J0KSwgV2ViQ29yZTo6
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgICAgICBsYXllci5jb250ZW50cyA9
IHN1cmZhY2UgPyBzdXJmYWNlLT5hc0xheWVyQ29udGVudHMoKSA6IG5pbDsKICAgICB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5o
CShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNs
aWVudEltcGxNYWMuaAkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgaXNWaWV3SW5XaW5kb3coKSBvdmVycmlkZTsKICAgICBib29sIGlzVmlzdWFsbHlJ
ZGxlKCkgb3ZlcnJpZGU7CiAgICAgTGF5ZXJIb3N0aW5nTW9kZSB2aWV3TGF5ZXJIb3N0aW5nTW9k
ZSgpIG92ZXJyaWRlOwotICAgIENvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2UoKSBvdmVycmlkZTsK
KyAgICBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpIG92ZXJyaWRl
OwogICAgIHZvaWQgc2V0UmVtb3RlTGF5ZXJUcmVlUm9vdE5vZGUoUmVtb3RlTGF5ZXJUcmVlTm9k
ZSopIG92ZXJyaWRlOwogICAgIENBTGF5ZXIgKmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5
ZXIoKSBjb25zdCBvdmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw3ICszMCw2IEBACiAKICNpbXBvcnQgIkFQSUhpdFRlc3RSZXN1bHQuaCIKICNpbXBv
cnQgIkFwcEtpdFNQSS5oIgotI2ltcG9ydCAiQ29sb3JTcGFjZURhdGEuaCIKICNpbXBvcnQgIkRh
dGFSZWZlcmVuY2UuaCIKICNpbXBvcnQgIkRvd25sb2FkUHJveHkuaCIKICNpbXBvcnQgIkRyYXdp
bmdBcmVhUHJveHkuaCIKQEAgLTY2LDYgKzY1LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQml0bWFw
SW1hZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUv
Q3Vyc29yLmg+CisjaW1wb3J0IDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5TG9va3VwLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdJ
dGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgpAQCAtMjQ0LDcgKzI0NCw3IEBA
IHZvaWQgUGFnZUNsaWVudEltcGw6OnZpZXdXaWxsTW92ZVRvQW5vdGgKICAgICBjbGVhckFsbEVk
aXRDb21tYW5kcygpOwogfQogCi1Db2xvclNwYWNlRGF0YSBQYWdlQ2xpZW50SW1wbDo6Y29sb3JT
cGFjZSgpCitXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgUGFnZUNsaWVudEltcGw6OmNv
bG9yU3BhY2UoKQogewogICAgIHJldHVybiBtX2ltcGwtPmNvbG9yU3BhY2UoKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YVByb3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQ
cm94eS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCiAKLSNpbXBvcnQgIkNvbG9yU3BhY2VEYXRhLmgiCiAjaW1wb3J0ICJEcmF3
aW5nQXJlYU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCIK
ICNpbXBvcnQgIkxheWVyVHJlZUNvbnRleHQuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjksNyArMjksNiBAQAogI2lmIFBMQVRGT1JNKE1BQykKIAogI2ltcG9ydCAiQVBJVUlD
bGllbnQuaCIKLSNpbXBvcnQgIkNvbG9yU3BhY2VEYXRhLmgiCiAjaW1wb3J0ICJDb25uZWN0aW9u
LmgiCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJFZGl0b3JTdGF0ZS5oIgpA
QCAtNTIsNiArNTEsNyBAQAogI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXNLZXlzLmgiCiAjaW1wb3J0
ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgPFdlYkNvcmUvQXR0cmlidXRlZFN0cmluZy5o
PgorI2ltcG9ydCA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRGljdGlvbmFyeUxvb2t1cC5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnSXRlbS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+CkBAIC0zNDQsNyArMzQ0LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmFzc2lzdGl2ZVRlY2hub2xvZ3lNYQogICAgIHBhZ2VDbGllbnQoKS5h
c3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCk7CiB9CiAKLUNvbG9yU3BhY2VE
YXRhIFdlYlBhZ2VQcm94eTo6Y29sb3JTcGFjZSgpCitXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgV2ViUGFnZVByb3h5Ojpjb2xvclNwYWNlKCkKIHsKICAgICByZXR1cm4gcGFnZUNsaWVu
dCgpLmNvbG9yU3BhY2UoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjYz
NCw4ICsyNjM0LDYgQEAKIAkJMUEyNTZFMzYxOEExQTc4ODAwNkZCOTIyIC8qIFdLTmF2aWdhdGlv
bkFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS05hdmlnYXRpb25B
Y3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyNTZFMzkxOEExQTdERjAw
NkZCOTIyIC8qIFdLTmF2aWdhdGlvbkFjdGlvbkludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLTmF2aWdhdGlvbkFjdGlvbkludGVybmFsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBMjhCOENCMUM4MEVENTkwMDZGRDc0MyAvKiBXZWJzaXRlRGF0
YUZldGNoT3B0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYnNpdGVE
YXRhRmV0Y2hPcHRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUEyQTRBRkQx
NTg2OTM5MjAwOTBDOUU5IC8qIENvbG9yU3BhY2VEYXRhLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gQ29sb3JTcGFjZURhdGEubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTFBMkE0QUZFMTU4NjkzOTIwMDkwQzlFOSAvKiBDb2xvclNwYWNlRGF0YS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvclNwYWNlRGF0YS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTJCQjZDQzE0MTE3QTVGMDAwRjM1RDQgLyogUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFBMkJCNkNFMTQxMTdCNEQwMDBGMzVENCAvKiBQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBE
ZXJpdmVkU291cmNlcy9XZWJLaXQyL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2Vp
dmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUEyQkI2Q0Yx
NDExN0I0RDAwMEYzNUQ0IC8qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNz
YWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC0x
MDQzMCw4ICsxMDQyOCw2IEBACiAJCQkJOUY1NEY4OEUxNjQ4OEU4NzAwN0RGODFBIC8qIEF1eGls
aWFyeVByb2Nlc3NNYWMubW0gKi8sCiAJCQkJQ0UxMUFENTExQ0JDNDgyRjAwNjgxRUU1IC8qIENv
ZGVTaWduaW5nLmggKi8sCiAJCQkJQ0UxMUFENEYxQ0JDNDdGODAwNjgxRUU1IC8qIENvZGVTaWdu
aW5nLm1tICovLAotCQkJCTFBMkE0QUZFMTU4NjkzOTIwMDkwQzlFOSAvKiBDb2xvclNwYWNlRGF0
YS5oICovLAotCQkJCTFBMkE0QUZEMTU4NjkzOTIwMDkwQzlFOSAvKiBDb2xvclNwYWNlRGF0YS5t
bSAqLywKIAkJCQkxQUM3NUExQzFCMzM2OTVFMDA1Njc0NUIgLyogSGFuZ0RldGVjdGlvbkRpc2Fi
bGVyTWFjLm1tICovLAogCQkJCTJENTAzNjVEMUJDQzc5M0YwMEUyMEJCMyAvKiBOYXRpdmVXZWJH
ZXN0dXJlRXZlbnRNYWMubW0gKi8sCiAJCQkJQzAyQkZGMUQxMjUxNTAyRTAwOUNDQkVBIC8qIE5h
dGl2ZVdlYktleWJvYXJkRXZlbnRNYWMubW0gKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCShyZXZpc2lvbiAyNzc5MTkpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxl
Qml0bWFwQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDExICs0NSw3IEBAIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChJbWFnZUJ1ZmZlclMKIAogU2hhcmVhYmxlQml0bWFwOjpD
b25maWd1cmF0aW9uIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29uZmlndXJh
dGlvbihjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIFNoYXJlYWJsZUJpdG1h
cDo6Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZSA9IHsgY2FjaGVkQ0dDb2xvclNwYWNlKHBhcmFtZXRl
cnMuY29sb3JTcGFjZSkgfTsKLSNlbmRpZgotICAgIHJldHVybiBjb25maWd1cmF0aW9uOworICAg
IHJldHVybiB7IHBhcmFtZXRlcnMuY29sb3JTcGFjZSB9OwogfQogCiBJbnRTaXplIEltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKGNvbnN0
IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eS5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TFByb3h5OjpwcmVwYQogICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21T
ZW5kUmlnaHQoV1RGTW92ZShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwgc1JHQkNvbG9yU3BhY2VS
ZWYoKSk7CisgICAgYXV0byBkaXNwbGF5QnVmZmVyID0gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2Vu
ZFJpZ2h0KFdURk1vdmUoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICBpZiAoZGlzcGxheUJ1ZmZlcikgewogICAgICAg
ICBhdXRvJiBzYyA9IHBsYXRmb3JtU3dhcENoYWluKCk7CiAgICAgICAgIHNjLnJlY3ljbGVCdWZm
ZXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
SW1hZ2VCdWZmZXJQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBSZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5IDogcHVibGljIFdlCiAgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1h
Z2VCdWZmZXI6OnJlc29sdXRpb25TY2FsZTsKIAogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8
UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYg
c2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgIHN0
YXRpYyBSZWZQdHI8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBXZWJDb3JlOjpE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBp
eGVsRm9ybWF0LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSkKICAgICB7CiAgICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IFdlYkNvcmU6Oklt
YWdlQnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyB7IHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29s
b3JTcGFjZSwgcGl4ZWxGb3JtYXQgfTsKICAgICAgICAgaWYgKEJhY2tlbmRUeXBlOjpjYWxjdWxh
dGVTYWZlQmFja2VuZFNpemUocGFyYW1ldGVycykuaXNFbXB0eSgpKQpJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZQogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OkNyZWF0ZUltYWdlQnVmZmVyKGltYWdlQnVmZmVyLmxvZ2ljYWxTaXpl
KCksIGltYWdlQnVmZmVyLnJlbmRlcmluZ01vZGUoKSwgaW1hZ2VCdWZmZXIucmVzb2x1dGlvblNj
YWxlKCksIGltYWdlQnVmZmVyLmNvbG9yU3BhY2UoKSwgaW1hZ2VCdWZmZXIucGl4ZWxGb3JtYXQo
KSwgaW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpLCByZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllcigpLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5X
aGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
IHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxl
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3Jt
YXQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3Jl
YXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRl
cmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkKIHsKICAgICBSZWZQdHI8
SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LmgJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDE1ICs0MywxOSBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKKwogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIGNsYXNzIERpc3Bs
YXlMaXN0OwogY2xhc3MgSXRlbTsKIH0KKworY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlOwog
Y2xhc3MgRmxvYXRTaXplOwogY2xhc3MgUGl4ZWxCdWZmZXI7CisKIGVudW0gY2xhc3MgQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiA6IHVpbnQ4X3Q7Ci1lbnVtIGNsYXNzIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOworCiB9CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtOTIsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlk
ZTsKIAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNlbnQuCi0gICAgUmVmUHRyPFdlYkNvcmU6Oklt
YWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBX
ZWJDb3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkRl
c3RpbmF0aW9uQ29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQpOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBj
b25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBXZWJDb3JlOjpQaXhlbEZvcm1h
dCk7CiAgICAgU3RyaW5nIGdldERhdGFVUkxGb3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1
dGlvbiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICBWZWN0b3I8
dWludDhfdD4gZ2V0RGF0YUZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9w
dGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKTsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoRGlz
cGxheUxpc3RBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
JiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVN
YXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9T
dXJmYWNlQmFja2VuZC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1
cmZhY2VCYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwCiAgICAgaWYgKGJhY2tlbmRTaXplLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBJ
T1N1cmZhY2U6OmNyZWF0ZShiYWNrZW5kU2l6ZSwgYmFja2VuZFNpemUsIGNhY2hlZENHQ29sb3JT
cGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpLCBJT1N1cmZhY2U6OmZvcm1hdEZvclBpeGVsRm9y
bWF0KHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQpKTsKKyAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZh
Y2U6OmNyZWF0ZShiYWNrZW5kU2l6ZSwgYmFja2VuZFNpemUsIHBhcmFtZXRlcnMuY29sb3JTcGFj
ZSwgSU9TdXJmYWNlOjpmb3JtYXRGb3JQaXhlbEZvcm1hdChwYXJhbWV0ZXJzLnBpeGVsRm9ybWF0
KSk7CiAgICAgaWYgKCFzdXJmYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtNjUs
NyArNjUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFj
ZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKFdURjo6Z2V0PE1hY2hTZW5kUmlnaHQ+KGhh
bmRsZSkpLCBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSk7CisgICAg
YXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoV1RG
OjpnZXQ8TWFjaFNlbmRSaWdodD4oaGFuZGxlKSksIHBhcmFtZXRlcnMuY29sb3JTcGFjZSk7CiAg
ICAgaWYgKCFzdXJmYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGLmNwcAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCwxMyArMjgsMTIgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgSEFWRShB
VkFTU0VUUkVBREVSKQogCi0jaW5jbHVkZSAiQ29sb3JTcGFjZURhdGEuaCIKICNpbmNsdWRlICJH
UFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlJlbW90ZUltYWdlRGVjb2RlckFWRlBy
b3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQVZBc3NldE1JTUVUeXBl
Q2FjaGUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yU3BhY2VDRy5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JT1N1cmZh
Y2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L01JTUVUeXBlUmVnaXN0cnkuaD4KQEAgLTE2OCwxNCArMTY3LDE0IEBAIFBsYXRmb3JtSW1hZ2VQ
dHIgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjoKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICBPcHRpb25hbDxNYWNoU2VuZFJpZ2h0PiBzZW5kUmlnaHQ7Ci0gICAgICAgIENvbG9yU3BhY2VE
YXRhIGNvbG9yU3BhY2U7CisgICAgICAgIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4g
Y29sb3JTcGFjZTsKICAgICAgICAgaWYgKCFtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0
aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpDcmVh
dGVGcmFtZUltYWdlQXRJbmRleChtX2lkZW50aWZpZXIsIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90
ZUltYWdlRGVjb2RlckFWRlByb3h5OjpDcmVhdGVGcmFtZUltYWdlQXRJbmRleDo6UmVwbHkoc2Vu
ZFJpZ2h0LCBjb2xvclNwYWNlKSwgMCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
aWYgKCFzZW5kUmlnaHQpCisgICAgICAgIGlmICghc2VuZFJpZ2h0IHx8ICFjb2xvclNwYWNlKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklP
U3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKCpzZW5kUmlnaHQpLCBjb2xvclNw
YWNlLmNnQ29sb3JTcGFjZS5nZXQoKSk7CisgICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6
OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKCpzZW5kUmlnaHQpLCBXVEZN
b3ZlKCpjb2xvclNwYWNlKSk7CiAgICAgICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgICAgIHJl
dHVybjsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9jb2NvYS9N
ZWRpYVBsYXllclByaXZhdGVSZW1vdGVDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNv
Y29hLm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL2NvY29hL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNvY29hLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC03MSw3ICs3MSw3IEBAIFJlZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXJQcml2
YXRlUmUKICAgICBpZiAoIXNlbmRSaWdodCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQo
V1RGTW92ZSgqc2VuZFJpZ2h0KSwgc1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgYXV0byBzdXJm
YWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoKnNl
bmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICBp
ZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC05MSw3ICs5MSw3IEBA
IFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBNZWRpYVBsYXllclAKICAgICBpZiAoIXNlbmRS
aWdodCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBXZWJD
b3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZSgqc2VuZFJpZ2h0KSwg
bnVsbHB0cik7CisgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVG
cm9tU2VuZFJpZ2h0KFdURk1vdmUoKnNlbmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpKTsKICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4ubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTY0Niw3ICs2
NDYsNyBAQCBpbmxpbmUgUERGUGx1Z2luOjpQREZQbHVnaW4oV2ViRnJhbWUmIGZyCiAgICAgW21f
Y29udGFpbmVyTGF5ZXIgYWRkU3VibGF5ZXI6bV9zY3JvbGxDb3JuZXJMYXllci5nZXQoKV07CiAg
ICAgaWYgKFttX3BkZkxheWVyQ29udHJvbGxlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KHNldERldmljZUNvbG9yU3BhY2U6KV0pIHsKICAgICAgICAgYXV0byB2aWV3ID0gZnJhbWUuY29y
ZUZyYW1lKCktPnZpZXcoKTsKLSAgICAgICAgW21fcGRmTGF5ZXJDb250cm9sbGVyIHNldERldmlj
ZUNvbG9yU3BhY2U6c2NyZWVuQ29sb3JTcGFjZSh2aWV3KV07CisgICAgICAgIFttX3BkZkxheWVy
Q29udHJvbGxlciBzZXREZXZpY2VDb2xvclNwYWNlOnNjcmVlbkNvbG9yU3BhY2UodmlldykucGxh
dGZvcm1Db2xvclNwYWNlKCldOwogICAgIH0KIAogI2lmIEhBVkUoSU5DUkVNRU5UQUxfUERGX0FQ
SVMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVh
YmxlQml0bWFwVXRpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNwcAkocmV2aXNp
b24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1No
YXJlYWJsZUJpdG1hcFV0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDEyICs1Nyw3
IEBAIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZVNoYXJlYWJsZUIKICAgICB9CiAKICAg
ICAvLyBGSVhNRTogT25seSBzZWxlY3QgRXh0ZW5kZWRDb2xvciBvbiBpbWFnZXMga25vd24gdG8g
bmVlZCB3aWRlIGdhbXV0LgotICAgIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBiaXRt
YXBDb25maWd1cmF0aW9uOwotI2lmIFVTRShDRykKLSAgICBiaXRtYXBDb25maWd1cmF0aW9uLmNv
bG9yU3BhY2UuY2dDb2xvclNwYWNlID0gc2NyZWVuQ29sb3JTcGFjZShyZW5kZXJJbWFnZS5mcmFt
ZSgpLm1haW5GcmFtZSgpLnZpZXcoKSk7Ci0jZW5kaWYKLQotICAgIGF1dG8gc2hhcmVkQml0bWFw
ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShiaXRtYXBTaXplKSwg
Yml0bWFwQ29uZmlndXJhdGlvbik7CisgICAgYXV0byBzaGFyZWRCaXRtYXAgPSBTaGFyZWFibGVC
aXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGJpdG1hcFNpemUpLCB7IHNjcmVlbkNvbG9y
U3BhY2UocmVuZGVySW1hZ2UuZnJhbWUoKS5tYWluRnJhbWUoKS52aWV3KCkpIH0pOwogICAgIGlm
ICghc2hhcmVkQml0bWFwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAJKHJldmlzaW9uIDI3NzkxOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05MjcsNyArOTI3LDcgQEAgV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeSog
VwogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IFdlYkNo
cm9tZUNsaWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5k
ZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxG
b3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CitSZWZQdHI8SW1hZ2VCdWZmZXI+IFdlYkNocm9tZUNs
aWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdN
b2RlIHJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVs
Rm9ybWF0IHBpeGVsRm9ybWF0KSBjb25zdAogewogICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKHB1cnBvc2UpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDI3NzkxOSkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjQ0LDcgKzI0NCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29y
ZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeSogZGlzcGxheVJlZnJlc2hNb25pdG9yRmFj
dG9yeSgpIGNvbnN0IGZpbmFsOwogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotICAgIFJlZlB0
cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgV2ViQ29yZTo6UmVuZGVyaW5nUHVy
cG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0KSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2UsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNl
JiwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQpIGNvbnN0IGZpbmFsOwogI2lmIEVOQUJMRShXRUJHTCkK
ICAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29u
dGV4dEdMKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFdlYkNv
cmU6OlBsYXRmb3JtRGlzcGxheUlEIGhvc3RXaW5kb3dEaXNwbGF5SUQpIGNvbnN0IGZpbmFsOwog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFj
L1dlYkRyYWdDbGllbnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCShyZXZpc2lvbiAyNzc5
MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRy
YWdDbGllbnRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTY4LDkgKzY4LDcgQEAgdXNpbmcgRHJh
Z0ltYWdlID0gQ0dJbWFnZVJlZjsKIAogc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNv
bnZlcnREcmFnSW1hZ2VUb0JpdG1hcChEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFNpemUmIHNp
emUsIEZyYW1lJiBmcmFtZSkKIHsKLSAgICBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24g
Yml0bWFwQ29uZmlndXJhdGlvbjsKLSAgICBiaXRtYXBDb25maWd1cmF0aW9uLmNvbG9yU3BhY2Uu
Y2dDb2xvclNwYWNlID0gc2NyZWVuQ29sb3JTcGFjZShmcmFtZS5tYWluRnJhbWUoKS52aWV3KCkp
OwotICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc2l6
ZSwgYml0bWFwQ29uZmlndXJhdGlvbik7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZVNoYXJlYWJsZShzaXplLCB7IHNjcmVlbkNvbG9yU3BhY2UoZnJhbWUubWFpbkZy
YW1lKCkudmlldygpKSB9KTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2lu
Z0FyZWEuaAkocmV2aXNpb24gMjc3OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWEuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBjbGFz
cyBEZWNvZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U7CiBjbGFzcyBEaXNwbGF5UmVmcmVzaE1vbml0b3I7CiBjbGFzcyBGcmFtZTsKIGNs
YXNzIEZyYW1lVmlldzsKQEAgLTYwLDcgKzYxLDYgQEAgc3RydWN0IFZpZXdwb3J0QXR0cmlidXRl
czsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0cnVjdCBDb2xvclNwYWNlRGF0YTsKIGNsYXNz
IExheWVyVHJlZUhvc3Q7CiBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczsKIHN0cnVj
dCBXZWJQcmVmZXJlbmNlc1N0b3JlOwpAQCAtMTgwLDcgKzE4MCw3IEBAIHByaXZhdGU6CiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgLy8gVXNlZCBieSBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYS4KICAgICB2aXJ0dWFsIHZvaWQgc2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpIHsgfQot
ICAgIHZpcnR1YWwgdm9pZCBzZXRDb2xvclNwYWNlKGNvbnN0IENvbG9yU3BhY2VEYXRhJikgeyB9
CisgICAgdmlydHVhbCB2b2lkIHNldENvbG9yU3BhY2UoT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlPikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VHJhbnNpZW50
Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgY29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZs
b2F0UG9pbnQgb3JpZ2luKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNzc5
MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNz
YWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBtZXNzYWdlcyAtPiBEcmF3
aW5nQXJlYSBOb3RSZWZDb3VudGVkIHsKICAgICAvLyBVc2VkIGJ5IFRpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhLgogICAgIFVwZGF0ZUdlb21ldHJ5KFdlYkNvcmU6OkludFNpemUgdmlld1Np
emUsIGJvb2wgZmx1c2hTeW5jaHJvbm91c2x5LCBNYWNoU2VuZFJpZ2h0IGZlbmNlUG9ydCkKICAg
ICBTZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKLSAgICBTZXRD
b2xvclNwYWNlKHN0cnVjdCBXZWJLaXQ6OkNvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2UpCisgICAg
U2V0Q29sb3JTcGFjZShzdHJ1Y3QgT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNw
YWNlPiBjb2xvclNwYWNlKQogICAgIFNldFZpZXdFeHBvc2VkUmVjdChPcHRpb25hbDxXZWJDb3Jl
OjpGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCkKIAogICAgIEFkanVzdFRyYW5zaWVudFpvb20o
ZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyNzc5MTkp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjU5OCw3ICsyNTk4LDcgQEAgc3RhdGljIFNoYXJlYWJsZUJpdG1hcDo6Q29u
ZmlndXJhdGlvbiBzbgogICAgIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBjb25maWd1
cmF0aW9uOwogI2lmIFVTRShDRykKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc1Vz
ZVNjcmVlbkNvbG9yU3BhY2UpCi0gICAgICAgIGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZS5jZ0Nv
bG9yU3BhY2UgPSBzY3JlZW5Db2xvclNwYWNlKHBhZ2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCku
dmlldygpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5jb2xvclNwYWNlID0gc2NyZWVuQ29sb3JT
cGFjZShwYWdlLmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKSk7CiAjZW5kaWYKICAgICBy
ZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYS5oCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAkod29ya2luZyBj
b3B5KQpAQCAtOTgsNyArOTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3VzcGVuZFBhaW50aW5n
KCk7CiAgICAgdm9pZCByZXN1bWVQYWludGluZygpOwogICAgIHZvaWQgc2V0TGF5ZXJIb3N0aW5n
TW9kZShMYXllckhvc3RpbmdNb2RlKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldENvbG9yU3BhY2Uo
Y29uc3QgQ29sb3JTcGFjZURhdGEmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbG9yU3BhY2Uo
T3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBhZGRGZW5jZShjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgYWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKENhbGxiYWNrSUQpIG92ZXJyaWRlOwpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQkocmV2aXNpb24gMjc3
OTE5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAK
ICNpZiBQTEFURk9STShNQUMpCiAKLSNpbXBvcnQgIkNvbG9yU3BhY2VEYXRhLmgiCiAjaW1wb3J0
ICJEaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaCIKICNpbXBvcnQgIkRyYXdpbmdBcmVhUHJveHlN
ZXNzYWdlcy5oIgogI2ltcG9ydCAiTGF5ZXJIb3N0aW5nQ29udGV4dC5oIgpAQCAtNDUsNiArNDQs
NyBAQAogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDxR
dWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGVidWdQYWdlT3Zlcmxh
eXMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KQEAgLTkxLDYgKzkxLDcgQEAgVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWE6OlRpbGVkQ29yZQogICAgIH0pOwogCiAgICAgdXBkYXRlTGF5
ZXJIb3N0aW5nQ29udGV4dCgpOworICAgIAogICAgIHNldENvbG9yU3BhY2UocGFyYW1ldGVycy5j
b2xvclNwYWNlKTsKIAogICAgIGlmIChhdXRvIHZpZXdFeHBvc2VkUmVjdCA9IHBhcmFtZXRlcnMu
dmlld0V4cG9zZWRSZWN0KQpAQCAtNjUwLDkgKzY1MSw5IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWE6OnNldEwKICAgICBzZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5
OjpVcGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgwLCBsYXllclRyZWVDb250ZXh0KSk7
CiB9CiAKLXZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldENvbG9yU3BhY2Uo
Y29uc3QgQ29sb3JTcGFjZURhdGEmIGNvbG9yU3BhY2UpCit2b2lkIFRpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhOjpzZXRDb2xvclNwYWNlKE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9u
Q29sb3JTcGFjZT4gY29sb3JTcGFjZSkKIHsKLSAgICBtX2xheWVySG9zdGluZ0NvbnRleHQtPnNl
dENvbG9yU3BhY2UoY29sb3JTcGFjZS5jZ0NvbG9yU3BhY2UuZ2V0KCkpOworICAgIG1fbGF5ZXJI
b3N0aW5nQ29udGV4dC0+c2V0Q29sb3JTcGFjZShjb2xvclNwYWNlID8gY29sb3JTcGFjZS0+cGxh
dGZvcm1Db2xvclNwYWNlKCkgOiBudWxscHRyKTsKIH0KIAogUmVmUHRyPFdlYkNvcmU6OkRpc3Bs
YXlSZWZyZXNoTW9uaXRvcj4gVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmNyZWF0ZURp
c3BsYXlSZWZyZXNoTW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCkluZGV4OiBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzc5MjApCisrKyBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAor
MjAyMS0wNS0yMiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29u
dmVydCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdyYXBwaW5n
IGEgcGxhdGZvcm0gY29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0
Yy4pCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYx
NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tOgorICAgICAgICAoV2ViQ29udGV4
dE1lbnVDbGllbnQ6OmltYWdlRm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbSk6Cisg
ICAgICAgIFVwZGF0ZSBmb3IgbmV3IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjbGFzcy4KKwogMjAy
MS0wNS0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxh
Y2UgTG9ja0hvbGRlciB3aXRoIExvY2tlciBpbiBsb2NhbCB2YXJpYWJsZXMKSW5kZXg6IFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50Lm1tCShyZXZpc2lvbiAyNzc5MTkpCisrKyBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9CaXRtYXBJbWFnZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9Db250ZXh0TWVudS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNw
YWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zy
YW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgpAQCAtMjEzLDcgKzIxNCw3IEBA
IFJldGFpblB0cjxOU0ltYWdlPiBXZWJDb250ZXh0TWVudUNsaWVudDoKICAgICAgICAgcmV0dXJu
IG5pbDsKIAogICAgIC8vIFRoaXMgaXMgZWZmZWN0aXZlbHkgYSBzbmFwc2hvdCwgYW5kIHdpbGwg
YmUgcGFpbnRlZCBpbiBhbiB1bmFjY2VsZXJhdGVkIGZhc2hpb24gaW4gbGluZSB3aXRoIEZyYW1l
U25hcHNob3R0aW5nLgotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShyZWN0
LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gYnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShyZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBuaWw7CiAKSW5kZXg6IFRvb2xzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzkyMCkK
KysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIx
LTA1LTIyICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBDb252ZXJ0
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBmcm9tIGFuIGVudW0gdG8gY2xhc3Mgd3JhcHBpbmcgYSBw
bGF0Zm9ybSBjb2xvciBzcGFjZSAoQ0dDb2xvclNwYWNlUmVmIGZvciBDRyBwb3J0cywgZXRjLikK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjE0Mwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHA6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgVXBhdGUgdGVzdCB0byB1c2UgbmV3IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSB0eXBlLgorCiAyMDIxLTA1LTIyICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBMb2NrSG9sZGVyIHdpdGggTG9ja2Vy
IGluIGxvY2FsIHZhcmlhYmxlcwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1BpeGVs
RHVtcFN1cHBvcnRJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9z
L1BpeGVsRHVtcFN1cHBvcnRJT1MubW0JKHJldmlzaW9uIDI3NzkxOSkKKysrIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2lvcy9QaXhlbER1bXBTdXBwb3J0SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgPENvbW1vbkNyeXB0by9Db21tb25E
aWdlc3QuaD4KICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9VVENvcmVUeXBlcy5oPgogI2lt
cG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0Rlc3RpbmF0
aW9uQ29sb3JTcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHRDRy5oPgog
I2ltcG9ydCA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1T
Y3JlZW4uaD4KQEAgLTcxLDcgKzcyLDcgQEAgUmVmUHRyPEJpdG1hcENvbnRleHQ+IGNyZWF0ZUJp
dG1hcENvbnRleAogI2Vsc2UKICAgICBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdCBzbmFwc2hv
dEZvcm1hdCA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0OjpCR1JBOwogI2VuZGlmCi0gICAg
YXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGUoV2ViQ29yZTo6ZXhwYW5k
ZWRJbnRTaXplKHNuYXBzaG90U2l6ZSksIFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCksIHNu
YXBzaG90Rm9ybWF0KTsKKyAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNy
ZWF0ZShXZWJDb3JlOjpleHBhbmRlZEludFNpemUoc25hcHNob3RTaXplKSwgV2ViQ29yZTo6RGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHNuYXBzaG90Rm9ybWF0KTsKICAgICBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gY2dJbWFnZSA9IHN1cmZhY2UtPmNyZWF0ZUltYWdlKCk7CiAKICAgICB2
b2lkKiBiaXRtYXBCdWZmZXIgPSBudWxscHRyOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAJ
KHJldmlzaW9uIDI3NzkxOSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
Zy9EaXNwbGF5TGlzdFRlc3RzQ0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBA
CiAKICNpZiBVU0UoQ0cpCiAKKyNpbmNsdWRlIDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFj
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3QuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0Rpc3BsYXlMaXN0SXRlbXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0UmVwbGF5
ZXIuaD4KQEAgLTQ2LDggKzQ3LDggQEAgVEVTVChEaXNwbGF5TGlzdFRlc3RzLCBSZXBsYXlXaXRo
TWlzc2luZwogewogICAgIEZsb2F0UmVjdCBjb250ZXh0Qm91bmRzIHsgMCwgMCwgY29udGV4dFdp
ZHRoLCBjb250ZXh0SGVpZ2h0IH07CiAKLSAgICBhdXRvIGNvbG9yU3BhY2UgPSBhZG9wdENGKENH
Q29sb3JTcGFjZUNyZWF0ZVdpdGhOYW1lKGtDR0NvbG9yU3BhY2VTUkdCKSk7Ci0gICAgYXV0byBj
Z0NvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShudWxscHRyLCBjb250ZXh0
V2lkdGgsIGNvbnRleHRIZWlnaHQsIDgsIDQgKiBjb250ZXh0V2lkdGgsIGNvbG9yU3BhY2UuZ2V0
KCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFzdCkpOworICAgIGF1dG8gY29sb3JTcGFj
ZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOworICAgIGF1dG8gY2dDb250ZXh0ID0g
YWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUobnVsbHB0ciwgY29udGV4dFdpZHRoLCBjb250
ZXh0SGVpZ2h0LCA4LCA0ICogY29udGV4dFdpZHRoLCBjb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JT
cGFjZSgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZExhc3QpKTsKICAgICBHcmFwaGljc0Nv
bnRleHQgY29udGV4dCB7IGNnQ29udGV4dC5nZXQoKSB9OwogCiAgICAgYXV0byBpbWFnZUJ1ZmZl
cklkZW50aWZpZXIgPSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CkBA
IC02OSw3ICs3MCw3IEBAIFRFU1QoRGlzcGxheUxpc3RUZXN0cywgUmVwbGF5V2l0aE1pc3NpbmcK
ICAgICB9CiAKICAgICB7Ci0gICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHsgMTAwLCAxMDAgfSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgICAgICBh
dXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh7IDEwMCwgMTAwIH0sIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JB
OCk7CiAgICAgICAgIEltYWdlQnVmZmVySGFzaE1hcCBpbWFnZUJ1ZmZlck1hcDsKICAgICAgICAg
aW1hZ2VCdWZmZXJNYXAuc2V0KGltYWdlQnVmZmVySWRlbnRpZmllciwgaW1hZ2VCdWZmZXIucmVs
ZWFzZU5vbk51bGwoKSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429480</attachid>
            <date>2021-05-23 15:37:44 -0700</date>
            <delta_ts>2021-05-23 16:29:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226143-20210523153742.patch</filename>
            <type>text/plain</type>
            <size>277409</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5NSBAQAorMjAyMS0wNS0yMiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdyYXBwaW5nIGEgcGxhdGZvcm0gY29sb3Ig
c3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0Yy4pCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxNDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBSZXBsYWNlIGVudW1lcmF0aW9uIGJhc2Vk
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSB3aXRoIGEgc3RydWN0IHdyYXBwaW5nCisgICAgICAgIGEg
cGxhdGZvcm0gY29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0Yy4p
LiBGb3IgcG9ydHMKKyAgICAgICAgdGhhdCBkb24ndCBoYXZlIGEgcGxhdGZvcm0gbGV2ZWwgY29s
b3Igc3BhY2UgdHlwZSwgYSBidWlsdGluIFBsYXRmb3JtQ29sb3JTcGFjZQorICAgICAgICB0eXBl
IGlzIHByb3ZpZGVkIHRoYXQgaXMganVzdCB0aGUgb2xkIGVudW0gcmVuYW1lZCB0byBQbGF0Zm9y
bUNvbG9yU3BhY2U6Ok5hbWUuCisKKyAgICAgICAgVGhlIGdvYWwgb2YgdGhpcyBjaGFuZ2UgaXMg
dG8gdW5pZnkgdGhlIGN1cnJlbnRseSBiaWZ1cmNhdGVkIGNvbmNlcHQgb2YgYW4KKyAgICAgICAg
SW1hZ2VCdWZmZXIncyBjb2xvciBzcGFjZSwgd2hpY2ggcHJldmlvc2x5IGNvdWxkIGVpdGhlciBi
ZSBiYXNlZCBvbiB0aGUgCisgICAgICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSAoYW5kIHJlZmxl
Y3RlZCBpbiB0aGUgY29sb3JTcGFjZSgpIG1lbWJlciBmdW5jdGlvbiksCisgICAgICAgIG9yIChm
b3IgQ0cgcG9ydHMpIGJhc2VkIG9uIGEgQ0dDb2xvclNwYWNlUmVmLCB3aXRoIHRoZSBjb2xvclNw
YWNlKCkgZnVuY3Rpb24KKyAgICAgICAgcmV0dXJuaW5nIHNSR0IgZXZlbiBpZiB0aGUgSW1hZ2VC
dWZmZXIgd2FzIG5vdC4gCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIE1v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xp
cGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFydHdvcmtJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIFNvdXJjZXMu
dHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wSW1hZ2VCaXRtYXApOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRJbWFnZUJpdG1hcCk6CisgICAgICAgICogY3NzL0NT
U0ZpbHRlckltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1hZ2VW
YWx1ZTo6aW1hZ2UpOgorICAgICAgICAqIGh0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRDYW52YXM6OmNvcGllZEltYWdlIGNvbnN0KToKKyAg
ICAgICAgKiBodG1sL0N1c3RvbVBhaW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Vz
dG9tUGFpbnRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnRvTWVkaWFT
YW1wbGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdl
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcg
Y29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSW1hZ2VCaXRtYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCaXRtYXA6OmNyZWF0
ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVhdGVQcm9t
aXNlKToKKyAgICAgICAgKiBodG1sL09mZnNjcmVlbkNhbnZhcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpPZmZzY3JlZW5DYW52YXM6OmNvbW1pdFRvUGxhY2Vob2xkZXJDYW52YXMpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6Y29sb3JTcGFjZSBjb25zdCk6CisgICAgICAg
ICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgICogaHRtbC9jYW52
YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dDo6c2V0T3V0cHV0Qml0bWFwKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0
b0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1ByZWRlZmluZWRD
b2xvclNwYWNlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5o
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VCdWZm
ZXJDYWNoZTo6aW1hZ2VCdWZmZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJv
bFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlVGV4dFRyYWNrUmVwcmVzZW50
YXRpb25JbWFnZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNQYXR0ZXJuKToK
KyAgICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OmNy
ZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5oOgorICAgICAg
ICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6
OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lU25hcHNob3R0
aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXApOgor
ICAgICAgICAqIHBhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
YW1wbGVDb2xvcik6CisgICAgICAgICogcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdCk6CisgICAgICAgICog
cGxhdGZvcm0vSG9zdFdpbmRvdy5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtQ29sb3JT
cGFjZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29sb3JTcGFjZTo6Z2V0
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL1NjcmVlblByb3BlcnRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVlblBy
b3BlcnRpZXM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5EYXRhOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVuRGF0YTo6ZGVjb2RlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9y
Ojp0b0NvbG9yQ29tcG9uZW50c0luQ29sb3JTcGFjZSBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNv
bnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVyQ29sb3JDb21wb25lbnRzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Db2xvclNwYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3Jl
dGVJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJ
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJh
d1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29sb3JT
cGFjZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKToKKyAgICAgICAgKFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFy
U1JHQik6CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQ
Myk6CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRlc3RpbmF0aW9u
Q29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdl
YkNvcmU6Om9wZXJhdG9yIT0pOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpwbGF0Zm9ybUNvbG9yU3Bh
Y2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpkZWNv
ZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNvcHlSZWN0VG9CdWZmZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQaXhlbEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlckJhY2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJCYWNrZW5kOjpjb2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9QaXhlbEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UGl4ZWxCdWZmZXI6OmRl
Y29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VWSW1hZ2VDR0ltYWdlRm9ybWF0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5oOgorICAgICAgICAoV2Vi
Q29yZTo6UGl4ZWxCdWZmZXJGb3JtYXQ6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNmZXJC
R1JBUGl4ZWxCdWZmZXJUb0lPU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVWaWRl
b1NhbXBsZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlOjpS
ZW1vdGVWaWRlb1NhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZTo6
c3VyZmFjZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9T
YW1wbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OmdldFNjcmF0Y2hCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6Ymx1clNoYWRvd0J1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3U2hhZG93TGF5ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWlu
dFJlc3VsdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm9CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9CYWNr
ZW5kOjp0cmFuc2Zvcm1Db2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0NvbG9yQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvQ0dDb21wYXRp
YmxlQ29tcG9uZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDR0NvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OnBsYXRmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmg6CisgICAgICAgIChXZWJDb3JlOjpj
YWNoZWRDR0NvbG9yU3BhY2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnBhaW50VG9DYW52YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0lPU3VyZmFjZVBvb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3VyZmFjZU1hdGNo
ZXNQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZVBvb2w6OnRha2VTdXJm
YWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29weUNHSW1hZ2VGb3JF
bmNvZGluZyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjplbmNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL05hdGl2ZUltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnNp
bmdsZVBpeGVsU29saWRDb2xvciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFj
a2luZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tOgorICAgICAgICAo
V2ViQ29yZTo6SU9TdXJmYWNlOjpzdXJmYWNlRnJvbVBvb2wpOgorICAgICAgICAoV2ViQ29yZTo6
SU9TdXJmYWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVG
cm9tU2VuZFJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVN1
cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tSW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tUGl4ZWxCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpJT1N1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6
SU9TdXJmYWNlOjplbnN1cmVQbGF0Zm9ybUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SU9T
dXJmYWNlOjptaWdyYXRlQ29sb3JTcGFjZVRvUHJvcGVydGllcyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OnJlbmRlclRv
SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNm
ZXJTZXNzaW9uVlQubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVRyYW5zZmVyU2Vzc2lvblZU
OjpjcmVhdGVQaXhlbEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4
ZWxCdWZmZXJDb25mb3JtZXJDVi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlckNv
bmZvcm1lckNWOjpjcmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpkZXN0cm95KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkJlZ2luQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmNvbG9yU3BhY2UgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkJlZ2lu
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkdldFBpeGVsQnVmZmVyOjpHZXRQaXhlbEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6R2V0UGl4ZWxCdWZmZXI6Om91dHB1dEZvcm1hdCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6R2V0UGl4ZWxCdWZmZXI6OmVuY29kZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6R2V0UGl4ZWxCdWZmZXI6OmRlY29kZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlw
VG9EcmF3aW5nQ29tbWFuZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURpc3Bs
YWNlbWVudE1hcDo6c2V0UmVzdWx0Q29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVUaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6cGxhdGZvcm1BcHBs
eVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRQaXhlbEJ1
ZmZlclRvQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvbnZl
cnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OmNvcHlDb252ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyRWZmZWN0Ojpjb3B5Q29udmVydGVkUGl4ZWxCdWZmZXJUb0Rlc3RpbmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6cmVxdWlyZXNQaXhlbEJ1ZmZlckNv
bG9yU3BhY2VDb252ZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6dHJh
bnNmb3JtUmVzdWx0Q29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJFZmZlY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6b3Bl
cmF0aW5nQ29sb3JTcGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6
OnNldE9wZXJhdGluZ0NvbG9yU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0
OjpyZXN1bHRDb2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6c2V0UmVzdWx0Q29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9Tb3VyY2VHcmFwaGljLmg6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjpT
b3VyY2VHcmFwaGljKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAgICogcGxh
dGZvcm0vaW9zL1BsYXRmb3JtU2NyZWVuSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVu
Q29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0U2NyZWVuUHJvcGVydGllcyk6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6Y29sbGVjdFNjcmVlblByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2Ny
ZWVuQ29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6VGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdXaXRoVmlld0ludG9D
b250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlzcGxh
eUNhcHR1cmVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVuRGlzcGxheUNhcHR1cmVy
TWFjOjpjcmVhdGVEaXNwbGF5U3RyZWFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZp
ZGVvU291cmNlOjppbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vcGxheXN0
YXRpb24vUGxhdGZvcm1TY3JlZW5QbGF5U3RhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
Y3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGxhdGZvcm1TY3JlZW5X
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAgICog
cGxhdGZvcm0vd3BlL1BsYXRmb3JtU2NyZWVuV1BFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNj
cmVlbkNvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaDoKKyAg
ICAgICAgKFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGE6OmRlY29kZSk6
CisgICAgICAgICogcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGaWx0ZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Zp
bHRlcjo6YnVpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjphbGxvY2F0ZUJhY2tp
bmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6YXBwbHkpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpwYXR0ZXJuRm9yRGVzY3JpcHRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
aGVtZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFN5c3Rl
bVByZXZpZXdCYWRnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50UHJvZ3Jlc3NCYXIpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cGU6OmNyZWF0ZVJhc3RlclNoYXBlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlQ2xpcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXI6OmJ1aWxkUHJpbWl0aXZlcyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVNYXNrQW5kU3dhcENvbnRleHRGb3JUZXh0R3JhZGllbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250ZW50SW50
b01hc2tJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1h
c2tlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3JlYXRl
VGlsZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0Nv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRl
SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVm
ZmVyRm9yZWdyb3VuZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250
ZXh0Lmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFn
ZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVJbWFnZTo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKToKKwogMjAyMS0wNS0yMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgIFVzZSBDaGVja2VkTG9jayBpbiBldmVuIG1vcmUgcGxhY2VzCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTExOTcsNiArMTE5Nyw3IEBAIHNldChXZWJD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db25j
cmV0ZUltYWdlQnVmZmVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9EYXNoQXJyYXkuaAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0RlY29kaW5nT3B0aW9ucy5oCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5
UmVmcmVzaE1vbml0b3IuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9u
aXRvckNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9y
RmFjdG9yeS5oCkBAIC0xMjkzLDYgKzEyOTQsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuaAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0LmgKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9QaXhlbEZvcm1hdC5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1Db2xvclNwYWNl
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2UuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3Jt
SW1hZ2VCdWZmZXIuaApJbmRleDogU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xOTUwLDYgKzE5NTAs
NyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xs
ZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKK3Bs
YXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvckNsaWVudC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNo
TW9uaXRvck1hbmFnZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmlu
ZGluZ3NEYXRhU291cmNlLmNwcAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NSw3ICsyODUsNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1C
aW5kaW5nc0RhdGFTb3VyY2U6OkNsCiAKICAgICAgICAgYXV0byBiaXRtYXBJbWFnZSA9IEJpdG1h
cEltYWdlOjpjcmVhdGUoKTsKICAgICAgICAgYml0bWFwSW1hZ2UtPnNldERhdGEoV1RGTW92ZShi
dWZmZXJUb1Nhbml0aXplKSwgdHJ1ZSk7Ci0gICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKGJpdG1hcEltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJH
UkE4KTsKKyAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoYml0
bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgICAgIGlm
ICghaW1hZ2VCdWZmZXIpIHsKICAgICAgICAgICAgIG1fZGF0YSA9IHsgbnVsbFN0cmluZygpIH07
CiAgICAgICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcAkocmV2aXNpb24gMjc3OTM5KQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBBcnR3b3JrSW1hZ2VMb2FkZXI6
Om5vdGlmeUZpbmlzaGVkKAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlclRvU2FuaXRp
emUgPSBtX2NhY2hlZEltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CiAgICAgYXV0byBiaXRtYXBJbWFn
ZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICBiaXRtYXBJbWFnZS0+c2V0RGF0YShXVEZN
b3ZlKGJ1ZmZlclRvU2FuaXRpemUpLCB0cnVlKTsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFj
Y2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoYml0bWFw
SW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFpbWFn
ZUJ1ZmZlcikgewogICAgICAgICBtX2NhbGxiYWNrKG51bGxwdHIpOwogICAgICAgICByZXR1cm47
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJD
b3JlL1BBTC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0w
NS0yMiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdyYXBwaW5nIGEgcGxh
dGZvcm0gY29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0Yy4pCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxNDMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9zcGkv
Y2cvQ29yZUdyYXBoaWNzU1BJLmg6CisgICAgICAgIEFkZCBhZGRpb25hbCBTUEkgZm9yIHdvcmtp
bmcgd2l0aCBDR0NvbG9yU3BhY2VSZWZzLgorCiAyMDIxLTA1LTIxICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gQWRvcHQgUUxJdGVtIGlu
IFdLSW1hZ2VFeHRyYWN0aW9uUHJldmlld0NvbnRyb2xsZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCShyZXZpc2lvbiAyNzc5Mzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaAkod29y
a2luZyBjb3B5KQpAQCAtMjQyLDYgKzI0Miw3IEBAIHR5cGVkZWYgdm9pZCAoKkNHU05vdGlmeVBy
b2NQdHIpKENHU05vdGkKIAogV1RGX0VYVEVSTl9DX0JFR0lOCiAKK2Jvb2wgQ0dDb2xvclRyYW5z
Zm9ybUNvbnZlcnRDb2xvckNvbXBvbmVudHMoQ0dDb2xvclRyYW5zZm9ybVJlZiwgQ0dDb2xvclNw
YWNlUmVmLCBDR0NvbG9yUmVuZGVyaW5nSW50ZW50LCBjb25zdCBDR0Zsb2F0IHNyY0NvbXBvbmVu
dHNbXSwgQ0dGbG9hdCBkc3RDb21wb25lbnRzW10pOwogQ0dDb2xvclJlZiBDR0NvbG9yVHJhbnNm
b3JtQ29udmVydENvbG9yKENHQ29sb3JUcmFuc2Zvcm1SZWYsIENHQ29sb3JSZWYsIENHQ29sb3JS
ZW5kZXJpbmdJbnRlbnQpOwogQ0dDb2xvclRyYW5zZm9ybVJlZiBDR0NvbG9yVHJhbnNmb3JtQ3Jl
YXRlKENHQ29sb3JTcGFjZVJlZiwgQ0ZEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXMpOwogCkBAIC0y
OTEsNiArMjkyLDggQEAgQ0dTdHlsZVJlZiBDR0dTdGF0ZUdldFN0eWxlKENHR1N0YXRlUmVmKQog
Q0dTdHlsZVR5cGUgQ0dTdHlsZUdldFR5cGUoQ0dTdHlsZVJlZik7CiBjb25zdCB2b2lkICpDR1N0
eWxlR2V0RGF0YShDR1N0eWxlUmVmKTsKIENHQ29sb3JSZWYgQ0dTdHlsZUdldENvbG9yKENHU3R5
bGVSZWYpOworYm9vbCBDR0NvbG9yU3BhY2VFcXVhbFRvQ29sb3JTcGFjZShDR0NvbG9yU3BhY2VS
ZWYsIENHQ29sb3JTcGFjZVJlZik7CitDRlN0cmluZ1JlZiBDR0NvbG9yU3BhY2VDb3B5SUNDUHJv
ZmlsZURlc2NyaXB0aW9uKENHQ29sb3JTcGFjZVJlZik7CiAKICNpZiBIQVZFKENHUEFUSF9HRVRf
TlVNQkVSX09GX0VMRU1FTlRTKQogc2l6ZV90IENHUGF0aEdldE51bWJlck9mRWxlbWVudHMoQ0dQ
YXRoUmVmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzk5Niw2ICsz
OTk2LDcgQEAKIAkJQkMyM0YwREIwREFGRjRBNDAwOUZEQzkxIC8qIEdlbmVyYXRlZEltYWdlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzIzRjBEQTBE
QUZGNEE0MDA5RkRDOTEgLyogR2VuZXJhdGVkSW1hZ2UuaCAqLzsgfTsKIAkJQkMyNzRCMkYxNDBF
QkVCMjAwRUFERkE2IC8qIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNzRCMkUxNDBFQkVCMjAwRUFERkE2
IC8qIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oICovOyB9OwogCQlCQzJDQkY0RTE0MEYxQUJE
MDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyQ0JGNEIxNDBGMUE2NTAwMzg3OUJFIC8qIEpTV2Vi
R0xDb250ZXh0RXZlbnQuaCAqLzsgfTsKKwkJQkMyQ0NBMTAyNjU1RERCMjAwQjhDMDM1IC8qIERl
c3RpbmF0aW9uQ29sb3JTcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkMyQ0NBMEUyNjU1RERCMjAwQjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JT
cGFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUJDMzA1QzdBMEMwNzZCQjMwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMwNUM3ODBDMDc2QkIz
MDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudC5oICovOyB9OwogCQlCQzM0OEJENDBEQjdG
ODA0MDA0QUJBQjkgLyogSlNYTUxIdHRwUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzNDhCRDIwREI3RjgwNDAwNEFCQUI5IC8qIEpTWE1M
SHR0cFJlcXVlc3QuaCAqLzsgfTsKIAkJQkMzNDhCRDQwREI3RjgwNDAwNEFCQUJBIC8qIFdlYkNv
cmVKU0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzM0OEJEMjBEQjdGODA0MDA0QUJBQkEgLyogV2ViQ29yZUpTQnVpbHRpbnMuaCAqLzsg
fTsKQEAgLTQwMDcsNiArNDAwOCw3IEBACiAJCUJDM0JFOTk5MEU5QzFFNUQwMDgzNTU4OCAvKiBS
ZW5kZXJTY3JvbGxiYXJUaGVtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkMzQkU5OTgwRTlDMUU1RDAwODM1NTg4IC8qIFJlbmRlclNjcm9sbGJhclRo
ZW1lLmggKi87IH07CiAJCUJDM0MzOUI3MEMwRDNEOEQwMDVGNEQ3QSAvKiBKU01lZGlhTGlzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzQzM5QjUw
QzBEM0Q4RDAwNUY0RDdBIC8qIEpTTWVkaWFMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMzRDg1QkMxQzBFMkU3QTAwRDNCNjEwIC8qIEpT
SFRNTFBpY3R1cmVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzgwOEIxMzFDMEUyQjM1MDA2NkZENkIgLyogSlNIVE1MUGljdHVyZUVsZW1l
bnQuaCAqLzsgfTsKKwkJQkMzRTYyNDMyNjU5NzkxODAwNTQ4QUNEIC8qIFBsYXRmb3JtQ29sb3JT
cGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMz
RTYyNDIyNjU5NzkxNzAwNTQ4QUNEIC8qIFBsYXRmb3JtQ29sb3JTcGFjZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDNDM2OEU4MEMyMjZFMzIw
MDVFRkI1RiAvKiBSZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzQzNjhFNzBDMjI2RTMyMDA1RUZCNUYgLyogUmVjdC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDNDZDMUZEMEMwRERDOEYwMDIw
Q0ZDMyAvKiBKU0NTU0ZvbnRGYWNlUnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkM0NkMxRjMwQzBEREM4RjAwMjBDRkMzIC8qIEpTQ1NTRm9udEZh
Y2VSdWxlLmggKi87IH07CiAJCUJDNDZDMUZGMEMwRERDOEYwMDIwQ0ZDMyAvKiBKU0NTU0ltcG9y
dFJ1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
NDZDMUY1MEMwRERDOEYwMDIwQ0ZDMyAvKiBKU0NTU0ltcG9ydFJ1bGUuaCAqLzsgfTsKQEAgLTE0
MTM0LDYgKzE0MTM2LDggQEAKIAkJQkMyOTkzNUMxN0ExREQ1ODAwQkNFODgwIC8qIENvbG9ySW5w
dXRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9ySW5w
dXRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyQ0JGNEIxNDBGMUE2
NTAwMzg3OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNXZWJHTENvbnRleHRFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQzJDQkY3QTE0MEYxRDU4MDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMQ29udGV4dEV2
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQ0NBMEUyNjU1RERCMjAw
QjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQ0NBMEYy
NjU1RERCMjAwQjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQzJFRDU1NDBDNkI5QkQzMDA5MjBCRkYgLyogSlNFbGVtZW50Q3VzdG9tLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRWxlbWVudEN1c3RvbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMkVENkJCMEM2QkQyRjAwMDkyMEJGRiAv
KiBKU0F0dHJDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNBdHRyQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzMDVDNzcw
QzA3NkJCMzAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTE9iamVjdEVsZW1lbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQxNTcsNiArMTQxNjEsNyBAQAogCQlCQzNCRTlBQTBF
OUMyNDIwMDA4MzU1ODggLyogUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzQzM5QjQwQzBEM0Q4RDAwNUY0RDdBIC8qIEpTTWVkaWFM
aXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhTGlz
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDM0MzOUI1MEMwRDNEOEQwMDVG
NEQ3QSAvKiBKU01lZGlhTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNNZWRpYUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMzRTYyNDIyNjU5
NzkxNzAwNTQ4QUNEIC8qIFBsYXRmb3JtQ29sb3JTcGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUNvbG9yU3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkM0MzY4RTcwQzIyNkUzMjAwNUVGQjVGIC8qIFJlY3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkM0NkMxRUQwQzBEREJERjAwMjBDRkMzIC8qIEpTQ1NTUnVsZUN1c3RvbS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDU1NSdWxlQ3VzdG9tLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM0NkMxRjIwQzBEREM4RjAwMjBDRkMzIC8qIEpT
Q1NTRm9udEZhY2VSdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0NTU0ZvbnRGYWNlUnVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
NjkyNSw2ICsyNjkzMCw4IEBACiAJCQkJMkQyRkMwNTUxNDYwQ0Q2RjAwMjYzNjMzIC8qIENyb3Nz
ZmFkZUdlbmVyYXRlZEltYWdlLmggKi8sCiAJCQkJQThDQjQxMDIwRTg1QjhBNTAwMzJDNEYwIC8q
IERhc2hBcnJheS5oICovLAogCQkJCTU1NTEzMDAwMUU3Q0NDQ0EwMEE2OUUzOCAvKiBEZWNvZGlu
Z09wdGlvbnMuaCAqLywKKwkJCQlCQzJDQ0EwRjI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGluYXRp
b25Db2xvclNwYWNlLmNwcCAqLywKKwkJCQlCQzJDQ0EwRTI2NTVEREIyMDBCOEMwMzUgLyogRGVz
dGluYXRpb25Db2xvclNwYWNlLmggKi8sCiAJCQkJNDlGQzdBNEYxNDQ0QUY1RjAwQTVEODY0IC8q
IERpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAgKi8sCiAJCQkJNDlBRjJENjgxNDQzNUQwNTAwMTZB
Nzg0IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5oICovLAogCQkJCTJEMjlFQ0MxMTkyRUNDODMw
MDk4NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuY3BwICovLApAQCAtMjcxMDEs
NiArMjcxMDgsNyBAQAogCQkJCUJDNjM1RThCMjY0QzJDQUUwMDBFRjMzQSAvKiBQaXhlbEJ1ZmZl
ckZvcm1hdC5oICovLAogCQkJCUJDNjM1RTkwMjY0QzQ2OUYwMDBFRjMzQSAvKiBQaXhlbEZvcm1h
dC5jcHAgKi8sCiAJCQkJQkNBNTU5MTIyNjNEQkQ3OTAwN0YxOUIzIC8qIFBpeGVsRm9ybWF0Lmgg
Ki8sCisJCQkJQkMzRTYyNDIyNjU5NzkxNzAwNTQ4QUNEIC8qIFBsYXRmb3JtQ29sb3JTcGFjZS5o
ICovLAogCQkJCTcyNkQ1NkUxMjUzQUUwNDMwMDAyRUY5MCAvKiBQbGF0Zm9ybUltYWdlLmggKi8s
CiAJCQkJNzJCQUMzQTYyM0UxNzMyODAwOEQ3NDFDIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXIuaCAq
LywKIAkJCQk1NTA2NDBBRDI0MDc1NkRBMDBBQUUwNDUgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlckJh
Y2tlbmQuaCAqLywKQEAgLTMyMjMwLDYgKzMyMjM4LDcgQEAKIAkJCQk5NDc5NDkyNTFFMDMwOEFG
MDAwMThEODUgLyogRGVwcmVjYXRlZENTU09NVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk0
Nzk0OTNEMUUwNDYzQjYwMDAxOEQ4NSAvKiBEZXByZWNhdGVkQ1NTT01WYWx1ZUxpc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTdDQkQxMjlFMUY5OEI5MEUwMDEyN0QyOSAvKiBEZXByZWNhdGVkR2xv
YmFsU2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMkNDQTEwMjY1NUREQjIwMEI4QzAz
NSAvKiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMTIyM0M1
MjYwMzU2N0QwMEIwQTBCNiAvKiBEZXRhY2hlZFJUQ0RhdGFDaGFubmVsLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBN0M5QUJGOTEzNTdBM0JGMDBGNTUwM0YgLyogRGV0YWlsc01hcmtlckNvbnRyb2wu
aCBpbiBIZWFkZXJzICovLAogCQkJCUExRUQ3NzhEMUJFMzI5NDAwMERDMTc5MSAvKiBEZXZpY2Uu
aCBpbiBIZWFkZXJzICovLApAQCAtMzIyODEsNiArMzIyOTAsNyBAQAogCQkJCTFDRThEMTI3MjYx
ODVDMEUwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkU1RkJENTFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RJdGVt
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQzNzdENTcyNTUxQzlDNjAwODBBQkZFIC8qIERpc3Bs
YXlMaXN0SXRlbVR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDM0U2MjQzMjY1OTc5MTgwMDU0
OEFDRCAvKiBQbGF0Zm9ybUNvbG9yU3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDRThEMTJF
MjYxODYxQzQwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkU1RkJENzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZWNvcmRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZFNUZCRDkxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0
UmVwbGF5ZXIuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCShyZXZpc2lvbiAyNzc5Mzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDgyLDcgKzEwODIsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0
IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJH
QkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICAgICAgUGl4ZWxCdWZmZXJG
b3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4
ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9OwogICAgICAg
ICBjb25zdCBJbnRTaXplJiBsb2dpY2FsU2l6ZSA9IGJ1ZmZlci0+bG9naWNhbFNpemUoKTsKICAg
ICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoZm9ybWF0LCB7
IEludFBvaW50Ojp6ZXJvKCksIGxvZ2ljYWxTaXplIH0pOwogICAgICAgICBpZiAoIXBpeGVsQnVm
ZmVyKSB7CkBAIC0zMTg3LDcgKzMxODcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWUoKTsKICAgICAgICAgfQogCi0gICAgICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1h
dCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpS
R0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgICAgIFBpeGVsQnVmZmVy
Rm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIFBp
eGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsKICAgICAg
ICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBpbWFn
ZURhdGFTaXplLCBhcnJheUJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgaWYgKCFw
aXhlbEJ1ZmZlcikgewogICAgICAgICAgICAgZmFpbCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTYsNyArMTE2LDcgQEAgUmVmUHRyPEltYWdlPiBDU1NGaWx0ZXJJbWFnZVZhbHVlOjppbWFnZQog
CiAgICAgLy8gVHJhbnNmb3JtIEltYWdlIGludG8gSW1hZ2VCdWZmZXIuCiAgICAgLy8gRklYTUUg
KDE0OTQyNCk6IFRoaXMgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNj
ZWxlcmF0ZWQuCi0gICAgYXV0byB0ZXh0dXJlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byB0ZXh0dXJlID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIXRleHR1
cmUpCiAgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcAkocmV2aXNpb24gMjc3OTM5KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTkyLDcgKzkyLDcgQEAgSW1hZ2UqIEN1c3RvbVBhaW50Q2FudmFzOjpjb3BpZWRJbWFnZSgp
IAogICAgIGlmICghd2lkdGgoKSB8fCAhaGVpZ2h0KCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgbV9jb3BpZWRCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
LCBQaXhlbEZvcm1hdDo6QkdSQTgsIG51bGxwdHIpOworICAgIG1fY29waWVkQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgsIG51bGxw
dHIpOwogICAgIGlmICghbV9jb3BpZWRCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50SW1hZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRJbWFnZS5jcHAJKHJldmlzaW9u
IDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRJbWFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIEN1c3RvbVBhaW50SW1hZ2U6OmRy
YXdQYXR0ZXJuKEdyYXBoCiAgICAgYWRqdXN0ZWRQYXR0ZXJuQ1RNLnNjYWxlKDEuMCAvIHhTY2Fs
ZSwgMS4wIC8geVNjYWxlKTsKICAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUoeFNjYWxlLCB5U2Nh
bGUpOwogCi0gICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1
ZmZlcihhZGp1c3RlZFNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgZGVzdENvbnRl
eHQpOworICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZm
ZXIoYWRqdXN0ZWRTaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgZGVzdENvbnRl
eHQpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm47CiAgICAgZG9DdXN0b21QYWlu
dChidWZmZXItPmNvbnRleHQoKSwgYWRqdXN0ZWRTaXplKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODI1
LDcgKzgyNSw3IEBAIFJlZlB0cjxNZWRpYVNhbXBsZT4gSFRNTENhbnZhc0VsZW1lbnQ6OnQKICAg
ICAvLyBGSVhNRTogVGhpcyBjYW4gbGlrZWx5IGJlIG9wdGltaXplZCBxdWl0ZSBhIGJpdCwgZXNw
ZWNpYWxseSBpbiB0aGUgY2FzZXMgd2hlcmUKICAgICAvLyB0aGUgSW1hZ2VCdWZmZXIgaXMgYmFj
a2VkIGJ5IEdQVSBtZW1vcnkgYWxyZWFkeSBhbmQvb3IgaXMgaW4gdGhlIEdQVSBwcm9jZXNzIGJ5
CiAgICAgLy8gc3BlY2lhbGl6aW5nIHRvTWVkaWFTYW1wbGUoKSBpbiBJbWFnZUJ1ZmZlckJhY2tl
bmQgdG8gbm90IHVzZSBnZXRQaXhlbEJ1ZmZlcigpLgotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBp
bWFnZUJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnBy
ZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCIH0sIHsgeyB9LCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSB9KTsKKyAgICBhdXRvIHBp
eGVsQnVmZmVyID0gaW1hZ2VCdWZmZXItPmdldFBpeGVsQnVmZmVyKHsgQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6QkdSQTgsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpIH0sIHsgeyB9LCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSB9
KTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAt
OTU1LDcgKzk1NSw3IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmUK
ICAgICBhdXRvIFtjb2xvclNwYWNlLCBwaXhlbEZvcm1hdF0gPSBbJl0gewogICAgICAgICBpZiAo
bV9jb250ZXh0KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6cGFpciB7IG1fY29udGV4dC0+Y29s
b3JTcGFjZSgpLCBtX2NvbnRleHQtPnBpeGVsRm9ybWF0KCkgfTsKLSAgICAgICAgcmV0dXJuIHN0
ZDo6cGFpciB7IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4
IH07CisgICAgICAgIHJldHVybiBzdGQ6OnBhaXIgeyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4IH07CiAgICAgfSgpOwogCiAgICAgc2V0SW1hZ2VCdWZm
ZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIHJlbmRlcmluZ01vZGUsIHVzZURpc3BsYXlM
aXN0LCBSZW5kZXJpbmdQdXJwb3NlOjpDYW52YXMsIDEsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0
LCBob3N0V2luZG93KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVv
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIEhUTUxW
aWRlb0VsZW1lbnQ6Om1lZGlhUGxheWVyRmlyc3RWCiAgICAgICAgIHJlbmRlcmVyLT51cGRhdGVG
cm9tRWxlbWVudCgpOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IEhUTUxWaWRlb0VsZW1lbnQ6
OmNyZWF0ZUJ1ZmZlckZvclBhaW50aW5nKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5n
TW9kZSByZW5kZXJpbmdNb2RlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4
ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CitSZWZQdHI8SW1hZ2VCdWZmZXI+IEhUTUxWaWRl
b0VsZW1lbnQ6OmNyZWF0ZUJ1ZmZlckZvclBhaW50aW5nKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwg
UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
IGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KSBjb25zdAogewogICAgIGF1dG8q
IGhvc3RXaW5kb3cgPSBkb2N1bWVudCgpLnZpZXcoKSAmJiBkb2N1bWVudCgpLnZpZXcoKS0+cm9v
dCgpID8gZG9jdW1lbnQoKS52aWV3KCktPnJvb3QoKS0+aG9zdFdpbmRvdygpIDogbnVsbHB0cjsK
ICAgICBhdXRvIHNob3VsZFVzZURpc3BsYXlMaXN0ID0gZG9jdW1lbnQoKS5zZXR0aW5ncygpLmRp
c3BsYXlMaXN0RHJhd2luZ0VuYWJsZWQoKSA/IFNob3VsZFVzZURpc3BsYXlMaXN0OjpZZXMgOiBT
aG91bGRVc2VEaXNwbGF5TGlzdDo6Tm87CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuaAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEyICszMywxMiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIEhU
TUxJbWFnZUxvYWRlcjsKIGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgUmVuZGVyVmlkZW87CiBj
bGFzcyBQaWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXI7CiAKLWVudW0gY2xhc3MgRGVzdGluYXRpb25D
b2xvclNwYWNlIDogdWludDhfdDsKIGVudW0gY2xhc3MgUGl4ZWxGb3JtYXQgOiB1aW50OF90Owog
ZW51bSBjbGFzcyBSZW5kZXJpbmdNb2RlIDogYm9vbDsKIApAQCAtNzIsNyArNzIsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpIG92ZXJyaWRlOwogI2VuZGlm
CiAKLSAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUJ1ZmZlckZvclBhaW50aW5nKGNvbnN0
IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUGl4ZWxG
b3JtYXQpIGNvbnN0OworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQnVmZmVyRm9yUGFp
bnRpbmcoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiwgUGl4ZWxGb3JtYXQpIGNvbnN0OwogCiAgICAgLy8gVXNlZCBieSBjYW52YXMg
dG8gZ2FpbiByYXcgcGl4ZWwgYWNjZXNzCiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29u
dGV4dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSW1hZ2VCaXRtYXAuY3BwCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0ltYWdlQml0bWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsMTIgKzg0LDEyIEBA
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCaXRtYXA6OmNyZWF0ZUkKICAgICAgICAgYXV0byYg
ZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAg
ICAgICAgIGlmIChkb2N1bWVudC52aWV3KCkgJiYgZG9jdW1lbnQudmlldygpLT5yb290KCkpIHsK
ICAgICAgICAgICAgIGF1dG8gaG9zdFdpbmRvdyA9IGRvY3VtZW50LnZpZXcoKS0+cm9vdCgpLT5o
b3N0V2luZG93KCk7Ci0gICAgICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXpl
LCByZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6Tm8sIFJlbmRlcmluZ1B1cnBv
c2U6OkNhbnZhcywgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Is
IFBpeGVsRm9ybWF0OjpCR1JBOCwgaG9zdFdpbmRvdyk7CisgICAgICAgICAgICByZXR1cm4gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlz
dDo6Tm8sIFJlbmRlcmluZ1B1cnBvc2U6OkNhbnZhcywgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBob3N0V2luZG93KTsK
ICAgICAgICAgfQogICAgIH0KIAogICAgIC8vIEZJWE1FIDxodHRwczovL3dlYmtpdC5vcmcvYi8y
MTg0ODI+IEVuYWJsZSB3b3JrZXIgYmFzZWQgSW1hZ2VCaXRtYXAgYW5kIE9mZnNjcmVlbkNhbnZh
cyBkcmF3aW5nIHRvIHVzZSBHUFUgUHJvY2VzcyByZW5kZXJpbmcKLSAgICByZXR1cm4gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICByZXR1cm4g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogfQog
CiB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEltYWdlQml0bWFwOjpTb3VyY2UmJiBzb3VyY2UsIElt
YWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlz
ZSkKQEAgLTUwNCw3ICs1MDQsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNj
cmlwdEV4CiAgICAgYXV0byBvdXRwdXRTaXplID0gb3V0cHV0U2l6ZUZvclNvdXJjZVJlY3Rhbmds
ZShzb3VyY2VSZWN0YW5nbGUsIG9wdGlvbnMpOwogCiAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0
IGZvciBjb2xvciBzcGFjZXMgLyBwaXhlbCBmb3JtYXRzIHRvIEltYWdlQml0bWFwLgotICAgIGF1
dG8gYml0bWFwRGF0YSA9IHZpZGVvLT5jcmVhdGVCdWZmZXJGb3JQYWludGluZyhvdXRwdXRTaXpl
LCBidWZmZXJSZW5kZXJpbmdNb2RlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBiaXRtYXBEYXRhID0gdmlkZW8tPmNyZWF0ZUJ1ZmZl
ckZvclBhaW50aW5nKG91dHB1dFNpemUsIGJ1ZmZlclJlbmRlcmluZ01vZGUsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghYml0bWFw
RGF0YSkgewogICAgICAgICByZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZmZXIoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgIXRhaW50c09yaWdpbihzY3JpcHRFeGVjdXRpb25Db250ZXh0LnNlY3VyaXR5
T3JpZ2luKCksICp2aWRlbyksIFdURk1vdmUocHJvbWlzZSkpOwogICAgICAgICByZXR1cm47Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCShyZXZpc2lvbiAyNzc5
MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1MSwxNCArNDUxLDE0IEBAIHZvaWQgT2Zmc2NyZWVuQ2FudmFzOjpjb21taXRU
b1BsYWNlaG9sZGUKICAgICAgICAgbV9jb250ZXh0LT5wYWludFJlbmRlcmluZ1Jlc3VsdHNUb0Nh
bnZhcygpOwogCiAgICAgaWYgKG1fcGxhY2Vob2xkZXJEYXRhLT5idWZmZXJQaXBlU291cmNlKSB7
Ci0gICAgICAgIGF1dG8gYnVmZmVyQ29weSA9IGltYWdlQnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVy
KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKKyAgICAg
ICAgYXV0byBidWZmZXJDb3B5ID0gaW1hZ2VCdWZmZXItPmNvcHlSZWN0VG9CdWZmZXIoRmxvYXRS
ZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7CiAgICAgICAgIGlm
IChidWZmZXJDb3B5KQogICAgICAgICAgICAgbV9wbGFjZWhvbGRlckRhdGEtPmJ1ZmZlclBpcGVT
b3VyY2UtPmhhbmRsZShXVEZNb3ZlKGJ1ZmZlckNvcHkpKTsKICAgICB9CiAKICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9wbGFjZWhvbGRlckRhdGEtPmJ1ZmZlckxvY2sgfTsKICAgICBib29sIHNob3Vs
ZFB1c2hCdWZmZXIgPSAhbV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRCdWZmZXI7Ci0g
ICAgbV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+
Y29weVJlY3RUb0J1ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9n
aWNhbFNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgaW1hZ2VCdWZmZXItPmNv
bnRleHQoKSk7CisgICAgbV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRCdWZmZXIgPSBp
bWFnZUJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFn
ZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBp
bWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKICAgICBpZiAobV9wbGFjZWhvbGRlckRhdGEtPnBlbmRp
bmdDb21taXRCdWZmZXIgJiYgc2hvdWxkUHVzaEJ1ZmZlcikKICAgICAgICAgcHVzaEJ1ZmZlclRv
UGxhY2Vob2xkZXIoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkocmV2aXNpb24gMjc3OTM5KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIkNTU1Byb3BlcnR5
TmFtZXMuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaCIKICNpbmNsdWRl
ICJDU1NQcm9wZXJ0eVBhcnNlcldvcmtlclNhZmUuaCIKLSNpbmNsdWRlICJDb2xvclNwYWNlLmgi
CiAjaW5jbHVkZSAiR3JhZGllbnQuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1
ZGUgIkltYWdlRGF0YS5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgog
I2luY2x1ZGUgIkNhbnZhc1BhdHRlcm4uaCIKLSNpbmNsdWRlICJDb2xvclNwYWNlLmgiCisjaW5j
bHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVv
RWxlbWVudC5oIgpAQCAtOTAsNyArOTAsNyBAQCBQaXhlbEZvcm1hdCBDYW52YXNSZW5kZXJpbmdD
b250ZXh0OjpwaXhlCiAKIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBDYW52YXNSZW5kZXJpbmdDb250
ZXh0Ojpjb2xvclNwYWNlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCOworICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKIH0K
IAogYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IENh
bnZhc1BhdHRlcm4qIHBhdHRlcm4pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCShyZXZpc2lvbiAyNzc5MzkpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDEzICszNywxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBDYW52YXNQYXR0ZXJuOworY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlOwogY2xhc3MgSFRN
TENhbnZhc0VsZW1lbnQ7CiBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogY2xhc3MgSFRNTFZpZGVv
RWxlbWVudDsKIGNsYXNzIEltYWdlQml0bWFwOwogY2xhc3MgVHlwZWRPTUNTU0ltYWdlVmFsdWU7
CiBjbGFzcyBXZWJHTE9iamVjdDsKLWVudW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDog
dWludDhfdDsKIGVudW0gY2xhc3MgUGl4ZWxGb3JtYXQgOiB1aW50OF90OwogCiBjbGFzcyBDYW52
YXNSZW5kZXJpbmdDb250ZXh0IDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVy
aW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk1LDcgKzk1LDcgQEAgdm9pZCBJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQ6OnNldE91dAog
ICAgICAgICAvLyBvbmx5IHJlYXNvbiBJIGNhbiB0aGluayBvZiBpcyB0b0RhdGFVUkwoKSwgYnV0
IHRoYXQgZG9lc24ndCBzZWVtIGxpa2UKICAgICAgICAgLy8gYSBnb29kIGVub3VnaCBhcmd1bWVu
dCB0byB3YXN0ZSBtZW1vcnkuCiAKLSAgICAgICAgY2FudmFzKCktPnNldEltYWdlQnVmZmVyQW5k
TWFya0RpcnR5KEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKGNhbnZhcygpLT53aWR0aCgp
LCBjYW52YXMoKS0+aGVpZ2h0KCkpLCBidWZmZXJSZW5kZXJpbmdNb2RlLCAxLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCkpOworICAgICAgICBjYW52YXMo
KS0+c2V0SW1hZ2VCdWZmZXJBbmRNYXJrRGlydHkoSW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNp
emUoY2FudmFzKCktPndpZHRoKCksIGNhbnZhcygpLT5oZWlnaHQoKSksIGJ1ZmZlclJlbmRlcmlu
Z01vZGUsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdS
QTgpKTsKIAogICAgICAgICAvLyAxLjQuIFNldCB0aGUgb3V0cHV0IGJpdG1hcCdzIG9yaWdpbi1j
bGVhbiBmbGFnIHRvIHRydWUuCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1By
ZWRlZmluZWRDb2xvclNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlByZWRlZmluZWRDb2xvclNwYWNlLmgiCiAKLSNpbmNsdWRlICJDb2xvclNwYWNlLmgiCisjaW5j
bHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM1LDMzICszNSwyNiBAQCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgdG9EZXN0aW5hdGlvbkNvbG9yCiB7CiAgICAgc3dpdGNoIChjb2xvclNwYWNlKSB7
CiAgICAgY2FzZSBQcmVkZWZpbmVkQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgcmV0dXJuIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjsKKyAgICAgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpOwogI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQ
TEFZX1AzKQogICAgIGNhc2UgUHJlZGVmaW5lZENvbG9yU3BhY2U6OkRpc3BsYXlQMzoKLSAgICAg
ICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxheVAzOworICAgICAgICByZXR1
cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDMoKTsKICNlbmRpZgogICAgIH0KIAog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0I7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOwogfQog
Ci1PcHRpb25hbDxQcmVkZWZpbmVkQ29sb3JTcGFjZT4gdG9QcmVkZWZpbmVkQ29sb3JTcGFjZShE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkKK09wdGlvbmFsPFByZWRlZmluZWRDb2xv
clNwYWNlPiB0b1ByZWRlZmluZWRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYgY29sb3JTcGFjZSkKIHsKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNlIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjoKKyAgICBpZiAoY29sb3JTcGFjZSA9PSBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSkKICAgICAgICAgcmV0dXJuIFByZWRlZmluZWRDb2xvclNw
YWNlOjpTUkdCOwotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JH
QikKLSAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQjoKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLSNlbmRpZgogI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xP
Ul9TUEFDRV9ESVNQTEFZX1AzKQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNw
bGF5UDM6CisgICAgaWYgKGNvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNw
bGF5UDMoKSkKICAgICAgICAgcmV0dXJuIFByZWRlZmluZWRDb2xvclNwYWNlOjpEaXNwbGF5UDM7
CiAjZW5kaWYKLSAgICB9CiAKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVk
ZWZpbmVkQ29sb3JTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmgJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U7CiAKIGVudW0gY2xhc3MgUHJlZGVmaW5lZENvbG9yU3BhY2UgewogICAgIFNSR0IKQEAgLTQw
LDcgKzQwLDcgQEAgZW51bSBjbGFzcyBQcmVkZWZpbmVkQ29sb3JTcGFjZSB7CiB9OwogCiBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgdG9EZXN0aW5hdGlvbkNvbG9yU3BhY2UoUHJlZGVmaW5lZENvbG9y
U3BhY2UpOwotT3B0aW9uYWw8UHJlZGVmaW5lZENvbG9yU3BhY2U+IHRvUHJlZGVmaW5lZENvbG9y
U3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlKTsKK09wdGlvbmFsPFByZWRlZmluZWRDb2xvclNw
YWNlPiB0b1ByZWRlZmluZWRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYp
OwogCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzYyMyw3ICs3NjIzLDcgQEAgSW1hZ2VCdWZmZXIqIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OgogICAgIH0KIAogICAgIC8vIEZJWE1FICgxNDk0MjMpOiBTaG91bGQg
dGhpcyBJbWFnZUJ1ZmZlciBiZSB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZD8KLSAgICBh
dXRvIHRlbXAgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJH
UkE4KTsKKyAgICBhdXRvIHRlbXAgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQ
aXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghdGVtcCkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgQVNTRVJUKG1fYnVmZmVycy5zaXplKCkgPiAwKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFRl
eHRUcmFja0NvbnRhaW5lckVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDE4LDcgKzQxOCw3IEBAIFJlZlB0cjxJbWFnZT4gTWVk
aWFDb250cm9sVGV4dFRyYWNrQ29udGEKICAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IEludFJl
Y3QoSW50UG9pbnQoKSwgbGF5ZXItPnNpemUoKSk7CiAKICAgICAvLyBGSVhNRSAoMTQ5NDIyKTog
VGhpcyBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZC4K
LSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUocGFpbnRpbmdSZWN0LnNpemUo
KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgZGV2aWNlU2NhbGVGYWN0b3IsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUocGFpbnRpbmdSZWN0LnNpemUoKSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgZGV2aWNlU2NhbGVGYWN0b3IsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghYnVmZmVyKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNhbnZhcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNhbnZhcy5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQ5LDcg
KzExNDksNyBAQCBpbnQgSW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEoRHVwbGljCiAgICAg
ICAgICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gaW1hZ2VFbGVtZW50LT5jYWNo
ZWRJbWFnZSgpKSB7CiAgICAgICAgICAgICAgICAgSW1hZ2UqIGltYWdlID0gY2FjaGVkSW1hZ2Ut
PmltYWdlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGltYWdlICYmIGltYWdlICE9ICZJbWFnZTo6
bnVsbEltYWdlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVy
YXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgp
OworICAgICAgICAgICAgICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAg
ICAgICAgICAgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlLCBGbG9h
dFBvaW50KDAsIDApKTsKICAgICAgICAgICAgICAgICAgICAgZGF0YVVSTCA9IGltYWdlQnVmZmVy
LT50b0RhdGFVUkwoImltYWdlL3BuZyIpOwogICAgICAgICAgICAgICAgIH0KQEAgLTExNjMsNyAr
MTE2Myw3IEBAIGludCBJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YShEdXBsaWMKIAogICAg
ICAgICAgICAgdW5zaWduZWQgdmlkZW9XaWR0aCA9IHZpZGVvRWxlbWVudC0+dmlkZW9XaWR0aCgp
OwogICAgICAgICAgICAgdW5zaWduZWQgdmlkZW9IZWlnaHQgPSB2aWRlb0VsZW1lbnQtPnZpZGVv
SGVpZ2h0KCk7Ci0gICAgICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShGbG9hdFNpemUodmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpLCBSZW5kZXJpbmdNb2RlOjpV
bmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0
OjpCR1JBOCk7CisgICAgICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShGbG9hdFNpemUodmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpLCBSZW5kZXJpbmdNb2RlOjpV
bmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKICAgICAgICAgICAgIGlmIChpbWFnZUJ1ZmZlcikgewogICAgICAgICAgICAg
ICAgIHZpZGVvRWxlbWVudC0+cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoaW1hZ2VCdWZmZXIt
PmNvbnRleHQoKSwgRmxvYXRSZWN0KDAsIDAsIHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KSk7CiAg
ICAgICAgICAgICAgICAgZGF0YVVSTCA9IGltYWdlQnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3Bu
ZyIpOwpAQCAtMTIwMCw3ICsxMjAwLDcgQEAgaW50IEluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JE
YXRhKER1cGxpYwogICAgICAgICAgICAgaWYgKGF1dG8qIGNhY2hlZEltYWdlID0gY3NzSW1hZ2VW
YWx1ZS0+aW1hZ2UoKSkgewogICAgICAgICAgICAgICAgIGF1dG8qIGltYWdlID0gY2FjaGVkSW1h
Z2UtPmltYWdlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGltYWdlICYmIGltYWdlICE9ICZJbWFn
ZTo6bnVsbEltYWdlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdS
QTgpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAg
ICAgICAgICAgICAgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlLCBG
bG9hdFBvaW50KDAsIDApKTsKICAgICAgICAgICAgICAgICAgICAgZGF0YVVSTCA9IGltYWdlQnVm
ZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyIpOwogICAgICAgICAgICAgICAgIH0KQEAgLTE0NDEs
NyArMTQ0MSw3IEBAIFJlZjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gSW5zcGVjdG8KIHsK
ICAgICBhdXRvJiB0aWxlSW1hZ2UgPSBjYW52YXNQYXR0ZXJuLnBhdHRlcm4oKS50aWxlSW1hZ2Uo
KTsKICAgICBGbG9hdFJlY3QgcmVjdCA9IHsgeyB9LCB0aWxlSW1hZ2Uuc2l6ZSgpIH07Ci0gICAg
YXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGlsZUltYWdlLnNpemUoKSwg
UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKHRpbGVJbWFnZS5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgp
OwogICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkuZHJhd05hdGl2ZUltYWdlKHRpbGVJbWFnZSwg
dGlsZUltYWdlLnNpemUoKSwgcmVjdCwgcmVjdCk7CiAKICAgICBTdHJpbmcgcmVwZWF0OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjksNyArNTI5LDcgQEAgdm9p
ZCBDaHJvbWU6OnNldEN1cnNvckhpZGRlblVudGlsTW91c2VNbwogICAgIG1fY2xpZW50LnNldEN1
cnNvckhpZGRlblVudGlsTW91c2VNb3ZlcyhoaWRkZW5VbnRpbE1vdXNlTW92ZXMpOwogfQogCi1S
ZWZQdHI8SW1hZ2VCdWZmZXI+IENocm9tZTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2Ug
cHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CitSZWZQdHI8SW1hZ2VCdWZm
ZXI+IENocm9tZTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5k
ZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2Us
IFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KSBjb25zdAogewogICAgIHJldHVybiBtX2NsaWVudC5j
cmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCBwdXJwb3NlLCByZXNvbHV0aW9u
U2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUu
aAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAkod29y
a2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDdXJzb3Io
Y29uc3QgQ3Vyc29yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDdXJzb3JIaWRkZW5VbnRpbE1v
dXNlTW92ZXMoYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0
ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1
cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBQaXhl
bEZvcm1hdCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJ
bWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJw
b3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYs
IFBpeGVsRm9ybWF0KSBjb25zdCBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShXRUJHTCkKICAgICBS
ZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdy
YXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzksNyArMzM5LDcgQEAg
cHVibGljOgogICAgIAogICAgIHZpcnR1YWwgRGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeSog
ZGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0K
IAotICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25z
dCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCwgRGVz
dGluYXRpb25Db2xvclNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsg
fQorICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25z
dCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCwgY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUGl4ZWxGb3JtYXQpIGNvbnN0IHsgcmV0dXJuIG51
bGxwdHI7IH0KIAogI2lmIEVOQUJMRShXRUJHTCkKICAgICB2aXJ0dWFsIFJlZlB0cjxHcmFwaGlj
c0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0
R0xBdHRyaWJ1dGVzJiwgV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0IHsgcmV0dXJu
IG51bGxwdHI7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcu
Y3BwCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNo
b3R0aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw3IEBAIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gc25hcHNob3RGcmFtZVJlY3RXaXQKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90
T3B0aW9uc1BhaW50V2l0aEludGVncmFsU2NhbGVGYWN0b3IpCiAgICAgICAgIHNjYWxlRmFjdG9y
ID0gY2VpbGYoc2NhbGVGYWN0b3IpOwogCi0gICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKGltYWdlUmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIHNj
YWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JB
OCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXpl
KCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIHNjYWxlRmFjdG9yLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYnVmZmVyLT5jb250ZXh0KCkudHJhbnNs
YXRlKC1pbWFnZVJlY3QueCgpLCAtaW1hZ2VSZWN0LnkoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VDb2xvclNhbXBsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3
ICsxMDQsNyBAQCBzdGF0aWMgT3B0aW9uYWw8TGFiPGZsb2F0Pj4gc2FtcGxlQ29sb3IoCiAgICAg
aWYgKCFzbmFwc2hvdCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIGF1dG8g
cGl4ZWxCdWZmZXIgPSBzbmFwc2hvdC0+Z2V0UGl4ZWxCdWZmZXIoeyBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCIH0sIHsgeyB9LCBzbmFwc2hvdC0+bG9naWNhbFNpemUoKSB9KTsKKyAg
ICBhdXRvIHBpeGVsQnVmZmVyID0gc25hcHNob3QtPmdldFBpeGVsQnVmZmVyKHsgQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6QkdSQTgsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH0sIHsgeyB9LCBzbmFwc2hvdC0+bG9naWNhbFNpemUo
KSB9KTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcAkocmV2
aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNiw3ICszMjYsNyBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xp
ZW50OjpzY3JlZW5zaG90KEpTQzo6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byog
Y2FjaGVkSW1hZ2UgPSBpbWFnZUVsZW1lbnQuY2FjaGVkSW1hZ2UoKSkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGF1dG8qIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGltYWdlICYmIGltYWdlICE9ICZJbWFnZTo6bnVs
bEltYWdlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25hcHNob3QgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25hcHNob3QgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdC0+Y29udGV4dCgpLmRyYXdJbWFn
ZSgqaW1hZ2UsIEZsb2F0UG9pbnQoMCwgMCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTM0Myw3ICszNDMsNyBAQCB2b2lkIFBh
Z2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEpTQzo6CiAgICAgICAgICAgICAgICAgICAgICAg
ICBhdXRvJiB2aWRlb0VsZW1lbnQgPSBkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50Pigqbm9kZSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB2aWRlb1dpZHRoID0gdmlkZW9FbGVt
ZW50LnZpZGVvV2lkdGgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHZpZGVv
SGVpZ2h0ID0gdmlkZW9FbGVtZW50LnZpZGVvSGVpZ2h0KCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBzbmFwc2hvdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKHZpZGVvV2lkdGgs
IHZpZGVvSGVpZ2h0KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgc25hcHNob3QgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZSh2aWRlb1dp
ZHRoLCB2aWRlb0hlaWdodCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgdmlkZW9FbGVtZW50LnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KHNu
YXBzaG90LT5jb250ZXh0KCksIEZsb2F0UmVjdCgwLCAwLCB2aWRlb1dpZHRoLCB2aWRlb0hlaWdo
dCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAjZW5kaWYKQEAgLTM2OCw3ICszNjgsNyBAQCB2
b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEpTQzo6CiAgICAgICAgICAgICB0YXJn
ZXQgPSBwb3NzaWJsZVRhcmdldDsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246Omhhc0Zyb250ZW5kcygpKSkgewogICAgICAgICAgICAgICAgIGF1dG8g
c291cmNlU2l6ZSA9IGltYWdlRGF0YS0+c2l6ZSgpOwotICAgICAgICAgICAgICAgIGlmIChhdXRv
IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzb3VyY2VTaXplLCBSZW5kZXJpbmdN
b2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVs
Rm9ybWF0OjpCR1JBOCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGUoc291cmNlU2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVy
YXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JB
OCkpIHsKICAgICAgICAgICAgICAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0KEludFBvaW50KCks
IHNvdXJjZVNpemUpOwogICAgICAgICAgICAgICAgICAgICBpbWFnZUJ1ZmZlci0+cHV0UGl4ZWxC
dWZmZXIoaW1hZ2VEYXRhLT5waXhlbEJ1ZmZlcigpLCBzb3VyY2VSZWN0KTsKICAgICAgICAgICAg
ICAgICAgICAgZGF0YVVSTCA9IGltYWdlQnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyJfcywg
V1RGOjpudWxsb3B0LCBQcmVzZXJ2ZVJlc29sdXRpb246Olllcyk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vSG9zdFdpbmRvdy5oCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEwICszMSwxMCBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJzb3I7CitjbGFzcyBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIAogZW51bSBjbGFzcyBQaXhlbEZvcm1h
dCA6IHVpbnQ4X3Q7Ci1lbnVtIGNsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7
CiBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOwogZW51bSBjbGFzcyBSZW5kZXJpbmdQ
dXJwb3NlIDogdWludDhfdDsKIApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBJbnRQb2ludCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEludFJlY3Qgcm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlT
Y3JlZW4oY29uc3QgSW50UmVjdCYpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgUmVmUHRyPElt
YWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdN
b2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5n
TW9kZSwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCkgY29uc3QgPSAwOwogCiAjaWYgRU5BQkxF
KFdFQkdMKQogICAgIHZpcnR1YWwgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFw
aGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKSBjb25zdCA9
IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmgJKHJldmlz
aW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dDb2xvclNw
YWNlICpDR0NvbG9yU3BhYwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEZsb2F0U2l6ZTsKIGNsYXNz
IFdpZGdldDsKQEAgLTY4LDYgKzY5LDcgQEAgdXNpbmcgSU9SZWdpc3RyeUdQVUlEID0gaW50NjRf
dDsgLy8gR2xvYgogaW50IHNjcmVlbkRlcHRoKFdpZGdldCopOwogaW50IHNjcmVlbkRlcHRoUGVy
Q29tcG9uZW50KFdpZGdldCopOwogYm9vbCBzY3JlZW5Jc01vbm9jaHJvbWUoV2lkZ2V0Kik7CitX
RUJDT1JFX0VYUE9SVCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc2NyZWVuQ29sb3JTcGFjZShXaWRn
ZXQqID0gbnVsbHB0cik7CiAKIGJvb2wgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMoKTsKIApAQCAt
MTAwLDEwICsxMDIsNiBAQCBXRUJDT1JFX0VYUE9SVCBib29sIHNjcmVlblN1cHBvcnRzSGlnaER5
CiBjb25zdGV4cHIgYm9vbCBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UoV2lkZ2V0KiA9
IG51bGxwdHIpIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAotI2lmIFVTRShDRykKLVdFQkNP
UkVfRVhQT1JUIENHQ29sb3JTcGFjZVJlZiBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCogPSBudWxs
cHRyKTsKLSNlbmRpZgotCiBzdHJ1Y3QgU2NyZWVuUHJvcGVydGllczsKIHN0cnVjdCBTY3JlZW5E
YXRhOwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NyZWVuUHJvcGVydGll
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjcmVlblByb3BlcnRp
ZXMuaAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NyZWVu
UHJvcGVydGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEg
b25jZQogCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiRmxv
YXRSZWN0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKICNpbmNsdWRlIDx3dGYvRW51
bVRyYWl0cy5oPgpAQCAtMzIsMTQgKzMzLDEyIEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi10eXBlZGVmIHN0cnVjdCBDR0Nv
bG9yU3BhY2UgKkNHQ29sb3JTcGFjZVJlZjsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1
Y3QgU2NyZWVuRGF0YSB7CiAgICAgRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3Q7CiAgICAg
RmxvYXRSZWN0IHNjcmVlblJlY3Q7Ci0gICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29s
b3JTcGFjZTsKKyAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSB7IERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgaW50IHNjcmVlbkRlcHRoIHsgMCB9OwogICAg
IGludCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCB7IDAgfTsKICAgICBib29sIHNjcmVlblN1cHBv
cnRzRXh0ZW5kZWRDb2xvciB7IGZhbHNlIH07CkBAIC01NiwxMyArNTUsMTIgQEAgc3RydWN0IFNj
cmVlbkRhdGEgewogICAgIGZsb2F0IHNjYWxlRmFjdG9yIHsgMSB9OwogI2VuZGlmCiAKLSAgICBl
bnVtIGNsYXNzIENvbG9yU3BhY2VUeXBlIDogdWludDhfdCB7IE5vbmUsIE5hbWUsIERhdGEgfTsK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFNjcmVlbkRhdGE+
IGRlY29kZShEZWNvZGVyJik7CiB9OwogCi10eXBlZGVmIEhhc2hNYXA8UGxhdGZvcm1EaXNwbGF5
SUQsIFNjcmVlbkRhdGE+IFNjcmVlbkRhdGFNYXA7Ci0gICAgCit1c2luZyBTY3JlZW5EYXRhTWFw
ID0gSGFzaE1hcDxQbGF0Zm9ybURpc3BsYXlJRCwgU2NyZWVuRGF0YT47CisKIHN0cnVjdCBTY3Jl
ZW5Qcm9wZXJ0aWVzIHsKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBwcmltYXJ5RGlzcGxheUlEIHsg
MCB9OwogICAgIFNjcmVlbkRhdGFNYXAgc2NyZWVuRGF0YU1hcDsKQEAgLTc0LDggKzcyLDcgQEAg
c3RydWN0IFNjcmVlblByb3BlcnRpZXMgewogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQg
U2NyZWVuUHJvcGVydGllczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAg
ZW5jb2RlciA8PCBwcmltYXJ5RGlzcGxheUlEOwotICAgIGVuY29kZXIgPDwgc2NyZWVuRGF0YU1h
cDsKKyAgICBlbmNvZGVyIDw8IHByaW1hcnlEaXNwbGF5SUQgPDwgc2NyZWVuRGF0YU1hcDsKIH0K
IAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTk3LDcgKzk0LDcgQEAgT3B0aW9uYWw8U2Ny
ZWVuUHJvcGVydGllcz4gU2NyZWVuUHJvcGVydAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZv
aWQgU2NyZWVuRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5j
b2RlciA8PCBzY3JlZW5BdmFpbGFibGVSZWN0IDw8IHNjcmVlblJlY3QgPDwgc2NyZWVuRGVwdGgg
PDwgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQgPDwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9y
IDw8IHNjcmVlbkhhc0ludmVydGVkQ29sb3JzIDw8IHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNS
YW5nZTsKKyAgICBlbmNvZGVyIDw8IHNjcmVlbkF2YWlsYWJsZVJlY3QgPDwgc2NyZWVuUmVjdCA8
PCBjb2xvclNwYWNlIDw8IHNjcmVlbkRlcHRoIDw8IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50IDw8
IHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciA8PCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycyA8
PCBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2U7CiAKICNpZiBQTEFURk9STShNQUMpCiAg
ICAgZW5jb2RlciA8PCBzY3JlZW5Jc01vbm9jaHJvbWUgPDwgZGlzcGxheU1hc2sgPDwgZ3B1SUQg
PDwgcHJlZmVycmVkRHluYW1pY1JhbmdlTW9kZTsKQEAgLTEwNiwyOCArMTAzLDYgQEAgdm9pZCBT
Y3JlZW5EYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcgogI2lmIFBMQVRGT1JNKE1BQykgfHwg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBlbmNvZGVyIDw8IHNjYWxlRmFjdG9yOwogI2VuZGlm
Ci0KLSAgICBpZiAoY29sb3JTcGFjZSkgewotICAgICAgICAvLyBUcnkgdG8gZW5jb2RlIHRoZSBu
YW1lLgotICAgICAgICBpZiAoYXV0byBuYW1lID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDb3B5TmFt
ZShjb2xvclNwYWNlLmdldCgpKSkpIHsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgQ29sb3JTcGFj
ZVR5cGU6Ok5hbWU7Ci0gICAgICAgICAgICBlbmNvZGVyIDw8IFN0cmluZyhuYW1lLmdldCgpKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZhaWxpbmcgdGhh
dCwganVzdCBlbmNvZGUgdGhlIElDQyBkYXRhLgotICAgICAgICBpZiAoYXV0byBwcm9maWxlRGF0
YSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ29weUlDQ0RhdGEoY29sb3JTcGFjZS5nZXQoKSkpKSB7
Ci0gICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gaWNjRGF0YTsKLSAgICAgICAgICAgIGljY0Rh
dGEuYXBwZW5kKENGRGF0YUdldEJ5dGVQdHIocHJvZmlsZURhdGEuZ2V0KCkpLCBDRkRhdGFHZXRM
ZW5ndGgocHJvZmlsZURhdGEuZ2V0KCkpKTsKLQotICAgICAgICAgICAgZW5jb2RlciA8PCBDb2xv
clNwYWNlVHlwZTo6RGF0YTsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgaWNjRGF0YTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIFRoZSBjb2xvciBzcGFj
ZSB3YXMgbnVsbCBvciBmYWlsZWQgdG8gYmUgZW5jb2RlZC4KLSAgICBlbmNvZGVyIDw8IENvbG9y
U3BhY2VUeXBlOjpOb25lOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtMTQzLDYg
KzExOCwxMSBAQCBPcHRpb25hbDxTY3JlZW5EYXRhPiBTY3JlZW5EYXRhOjpkZWNvZGUoCiAgICAg
aWYgKCFzY3JlZW5SZWN0KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAgT3B0
aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBzY3JlZW5Db2xvclNwYWNlOworICAgIGRlY29k
ZXIgPj4gc2NyZWVuQ29sb3JTcGFjZTsKKyAgICBpZiAoIXNjcmVlbkNvbG9yU3BhY2UpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKICAgICBPcHRpb25hbDxpbnQ+IHNjcmVlbkRlcHRo
OwogICAgIGRlY29kZXIgPj4gc2NyZWVuRGVwdGg7CiAgICAgaWYgKCFzY3JlZW5EZXB0aCkKQEAg
LTE5Nyw0MSArMTc3LDEwIEBAIE9wdGlvbmFsPFNjcmVlbkRhdGE+IFNjcmVlbkRhdGE6OmRlY29k
ZSgKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICNlbmRpZgogCi0gICAgQ29sb3JTcGFj
ZVR5cGUgZGF0YVR5cGU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhVHlwZSkpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVm
PiBjZ0NvbG9yU3BhY2U7Ci0gICAgc3dpdGNoIChkYXRhVHlwZSkgewotICAgIGNhc2UgQ29sb3JT
cGFjZVR5cGU6Ok5vbmU6Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ29sb3JTcGFjZVR5cGU6
Ok5hbWU6IHsKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBjb2xvclNwYWNlTmFtZTsKLSAgICAg
ICAgZGVjb2RlciA+PiBjb2xvclNwYWNlTmFtZTsKLSAgICAgICAgQVNTRVJUKGNvbG9yU3BhY2VO
YW1lKTsKLSAgICAgICAgaWYgKCFjb2xvclNwYWNlTmFtZSkKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Ci0KLSAgICAgICAgY2dDb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3Bh
Y2VDcmVhdGVXaXRoTmFtZShjb2xvclNwYWNlTmFtZS0+Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkp
OwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDb2xvclNwYWNlVHlwZTo6RGF0YTog
ewotICAgICAgICBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGljY0RhdGE7Ci0gICAgICAgIGRl
Y29kZXIgPj4gaWNjRGF0YTsKLSAgICAgICAgQVNTRVJUKGljY0RhdGEpOwotICAgICAgICBpZiAo
IWljY0RhdGEpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgICAgIGF1
dG8gY29sb3JTcGFjZURhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBpY2NEYXRhLT5kYXRhKCksIGljY0RhdGEtPnNpemUoKSkpOwotICAgICAgICBjZ0NvbG9y
U3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhJQ0NEYXRhKGNvbG9yU3BhY2VE
YXRhLmdldCgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICB9Ci0KICAgICByZXR1cm4g
eyB7CiAgICAgICAgIFdURk1vdmUoKnNjcmVlbkF2YWlsYWJsZVJlY3QpLAogICAgICAgICBXVEZN
b3ZlKCpzY3JlZW5SZWN0KSwKLSAgICAgICAgV1RGTW92ZShjZ0NvbG9yU3BhY2UpLAorICAgICAg
ICBXVEZNb3ZlKCpzY3JlZW5Db2xvclNwYWNlKSwKICAgICAgICAgV1RGTW92ZSgqc2NyZWVuRGVw
dGgpLAogICAgICAgICBXVEZNb3ZlKCpzY3JlZW5EZXB0aFBlckNvbXBvbmVudCksCiAgICAgICAg
IFdURk1vdmUoKnNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciksCkBAIC0yNTAsMTYgKzE5OSwz
IEBAIE9wdGlvbmFsPFNjcmVlbkRhdGE+IFNjcmVlbkRhdGE6OmRlY29kZSgKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qg
RW51bVRyYWl0czxXZWJDb3JlOjpTY3JlZW5EYXRhOjpDb2xvclNwYWNlVHlwZT4gewotICAgIHVz
aW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgICAgIFdlYkNvcmU6OlNjcmVlbkRhdGE6OkNv
bG9yU3BhY2VUeXBlLAotICAgICAgICBXZWJDb3JlOjpTY3JlZW5EYXRhOjpDb2xvclNwYWNlVHlw
ZTo6Tm9uZSwKLSAgICAgICAgV2ViQ29yZTo6U2NyZWVuRGF0YTo6Q29sb3JTcGFjZVR5cGU6Ok5h
bWUsCi0gICAgICAgIFdlYkNvcmU6OlNjcmVlbkRhdGE6OkNvbG9yU3BhY2VUeXBlOjpEYXRhCi0g
ICAgPjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAkocmV2aXNpb24gMjc3OTM5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjQsNyArMTY0LDcgQEAgUmVmUHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJ
bWFnZTo6cHJlVHJhbgogICAgICAgICByZXR1cm4gaW1hZ2U7CiAKICAgICBhdXRvIGNvcnJlY3Rl
ZFNpemVGbG9hdCA9IGNvcnJlY3RlZFNpemUgPyBGbG9hdFNpemUoY29ycmVjdGVkU2l6ZS52YWx1
ZSgpKSA6IHNpemUoKTsKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY29y
cmVjdGVkU2l6ZUZsb2F0LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBidWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvcnJlY3RlZFNpemVGbG9hdCwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBpbWFnZTsK
IApAQCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBo
aWNzQ28KICAgICB9CiAKICAgICBpZiAoIW1fY2FjaGVkSW1hZ2UpIHsKLSAgICAgICAgYXV0byBi
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNp
emUodGlsZVJlY3Quc2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBjdHh0KTsK
KyAgICAgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cihleHBhbmRlZEludFNpemUodGlsZVJlY3Quc2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIGN0eHQpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgICAgIHJldHVy
bjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAko
cmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNyArMTY4LDcgQEAgQ29sb3JDb21wb25lbnRz
PGZsb2F0LCA0PiBDb2xvcjo6dG9Db2xvcgogICAgIHJldHVybiBjb252ZXJDb2xvckNvbXBvbmVu
dHMoaW5wdXRDb2xvclNwYWNlLCBjb21wb25lbnRzLCBvdXRwdXRDb2xvclNwYWNlKTsKIH0KIAot
Q29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBDb2xvcjo6dG9Db2xvckNvbXBvbmVudHNJbkNvbG9y
U3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIG91dHB1dENvbG9yU3BhY2UpIGNvbnN0CitDb2xv
ckNvbXBvbmVudHM8ZmxvYXQsIDQ+IENvbG9yOjp0b0NvbG9yQ29tcG9uZW50c0luQ29sb3JTcGFj
ZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIG91dHB1dENvbG9yU3BhY2UpIGNvbnN0CiB7
CiAgICAgYXV0byBbaW5wdXRDb2xvclNwYWNlLCBjb21wb25lbnRzXSA9IGNvbG9yU3BhY2VBbmRD
b21wb25lbnRzKCk7CiAgICAgcmV0dXJuIGNvbnZlckNvbG9yQ29tcG9uZW50cyhpbnB1dENvbG9y
U3BhY2UsIGNvbXBvbmVudHMsIG91dHB1dENvbG9yU3BhY2UpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2
ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29sb3JDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiQ29sb3JT
cGFjZS5oIgogI2luY2x1ZGUgIkNvbG9yVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiRGVzdGluYXRp
b25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CkBAIC0xMjEsNyArMTIyLDcg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPFQ+IHRvU1JHQkFMb3Nz
eSgpIGNvbnN0IHsgcmV0dXJuIHRvQ29sb3JUeXBlTG9zc3k8U1JHQkE8VD4+KCk7IH0KIAogICAg
IENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gdG9Db2xvckNvbXBvbmVudHNJbkNvbG9yU3BhY2Uo
Q29sb3JTcGFjZSkgY29uc3Q7Ci0gICAgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiB0b0NvbG9y
Q29tcG9uZW50c0luQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpIGNvbnN0OworICAg
IENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gdG9Db2xvckNvbXBvbmVudHNJbkNvbG9yU3BhY2Uo
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJikgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGQ6OnBhaXI8Q29sb3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0Pj4gY29sb3JT
cGFjZUFuZENvbXBvbmVudHMoKSBjb25zdDsKIApAQCAtMjY3LDYgKzI2OCw3IEBAIGJvb2wgb3V0
T2ZMaW5lQ29tcG9uZW50c3NFcXVhbElnbm9yaW5nU2UKIAogI2lmIFVTRShDRykKIFdFQkNPUkVf
RVhQT1JUIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYpOworV0VCQ09SRV9F
WFBPUlQgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBwbGF0Zm9ybUNvbnZlcnRDb2xvckNvbXBv
bmVudHMoQ29sb3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJik7CiAjZW5kaWYKIAogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IENvbG9yJik7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lv
bi5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yQ29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDkgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb2xvckNvbnZlcnNpb24uaCIKIAorI2lu
Y2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgIkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTMxOCwxOCArMzIwLDIxIEBAIENvbG9yQ29tcG9uZW50czxmbG9h
dCwgND4gY29udmVyQ29sb3JDb20KICAgICB9KTsKIH0KIAotQ29sb3JDb21wb25lbnRzPGZsb2F0
LCA0PiBjb252ZXJDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1dENvbG9yU3BhY2UsIENv
bG9yQ29tcG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVudHMsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZSBvdXRwdXRDb2xvclNwYWNlKQorQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBj
b252ZXJDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1dENvbG9yU3BhY2UsIENvbG9yQ29t
cG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVudHMsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYgb3V0cHV0Q29sb3JTcGFjZSkKIHsKKyNpZiBVU0UoQ0cpCisgICAgcmV0dXJu
IHBsYXRmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyhpbnB1dENvbG9yU3BhY2UsIGlucHV0Q29s
b3JDb21wb25lbnRzLCBvdXRwdXRDb2xvclNwYWNlKTsKKyNlbHNlCiAgICAgcmV0dXJuIGNhbGxX
aXRoQ29sb3JUeXBlKGlucHV0Q29sb3JDb21wb25lbnRzLCBpbnB1dENvbG9yU3BhY2UsIFtvdXRw
dXRDb2xvclNwYWNlXSAoY29uc3QgYXV0byYgaW5wdXRDb2xvcikgewotICAgICAgICBzd2l0Y2gg
KG91dHB1dENvbG9yU3BhY2UpIHsKLSAgICAgICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0I6CisgICAgICAgIHN3aXRjaCAob3V0cHV0Q29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3Bh
Y2UoKSkgeworICAgICAgICBjYXNlIFBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZTo6U1JHQjoKICAg
ICAgICAgICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhjb252ZXJ0Q29sb3I8U1JHQkE8Zmxv
YXQ+PihpbnB1dENvbG9yKSk7CiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJ
TkVBUl9TUkdCKQotICAgICAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JH
QjoKKyAgICAgICAgY2FzZSBQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU6OkxpbmVhclNSR0I6CiAg
ICAgICAgICAgICByZXR1cm4gYXNDb2xvckNvbXBvbmVudHMoY29udmVydENvbG9yPExpbmVhclNS
R0JBPGZsb2F0Pj4oaW5wdXRDb2xvcikpOwogI2VuZGlmCiAjaWYgRU5BQkxFKERFU1RJTkFUSU9O
X0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCi0gICAgICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpEaXNwbGF5UDM6CisgICAgICAgIGNhc2UgUGxhdGZvcm1Db2xvclNwYWNlOjpOYW1lOjpE
aXNwbGF5UDM6CiAgICAgICAgICAgICByZXR1cm4gYXNDb2xvckNvbXBvbmVudHMoY29udmVydENv
bG9yPERpc3BsYXlQMzxmbG9hdD4+KGlucHV0Q29sb3IpKTsKICNlbmRpZgogICAgICAgICB9CkBA
IC0zMzcsNiArMzQyLDcgQEAgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb252ZXJDb2xvckNv
bQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIGFzQ29sb3JD
b21wb25lbnRzKGNvbnZlcnRDb2xvcjxTUkdCQTxmbG9hdD4+KGlucHV0Q29sb3IpKTsKICAgICB9
KTsKKyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAkocmV2aXNp
b24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252
ZXJzaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE1ICsyOSwxNiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKKwogZW51bSBjbGFzcyBD
b2xvclNwYWNlIDogdWludDhfdDsKLWVudW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDog
dWludDhfdDsKIAogLy8gQ29udmVyc2lvbiBmdW5jdGlvbiBmb3IgdHlwZWQgY29sb3JzLgogdGVt
cGxhdGU8dHlwZW5hbWUgT3V0cHV0LCB0eXBlbmFtZSBJbnB1dD4gT3V0cHV0IGNvbnZlcnRDb2xv
cihjb25zdCBJbnB1dCYgY29sb3IpOwogCiAvLyBDb252ZXJzaW9uIGZ1bmN0aW9ucyBmb3IgcmF3
IGNvbG9yIGNvbXBvbmVudHMgd2l0aCBhc3NvY2lhdGVkIGNvbG9yIHNwYWNlcy4KIENvbG9yQ29t
cG9uZW50czxmbG9hdCwgND4gY29udmVyQ29sb3JDb21wb25lbnRzKENvbG9yU3BhY2UgaW5wdXRD
b2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGlucHV0Q29sb3JDb21wb25lbnRz
LCBDb2xvclNwYWNlIG91dHB1dENvbG9yU3BhY2UpOwotQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0
PiBjb252ZXJDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1dENvbG9yU3BhY2UsIENvbG9y
Q29tcG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVudHMsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSBvdXRwdXRDb2xvclNwYWNlKTsKK0NvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gY29u
dmVyQ29sb3JDb21wb25lbnRzKENvbG9yU3BhY2UgaW5wdXRDb2xvclNwYWNlLCBDb2xvckNvbXBv
bmVudHM8ZmxvYXQsIDQ+IGlucHV0Q29sb3JDb21wb25lbnRzLCBjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmIG91dHB1dENvbG9yU3BhY2UpOwogCiAKIC8vIEFsbCBjb2xvciB0eXBlcywgb3Ro
ZXIgdGhhbiBYWVpBIG9yIHRob3NlIGluaGVyaXRpbmcgZnJvbSBSR0JUeXBlLCBtdXN0IGltcGxl
bWVudApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JT
cGFjZS5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbG9yU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCwyNCArNjQsNCBAQCBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBDCiAgICAgcmV0dXJuIHRzOwog
fQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgY29sb3JTcGFjZSkKLXsKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBj
YXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgdHMgPDwgInNSR0IiOwot
ICAgICAgICBicmVhazsKLSNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFS
X1NSR0IpCi0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0I6Ci0gICAg
ICAgIHRzIDw8ICJMaW5lYXJTUkdCIjsKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLSNpZiBFTkFC
TEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExBWV9QMykKLSAgICBjYXNlIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6RGlzcGxheVAzOgotICAgICAgICB0cyA8PCAiRGlzcGxheVAzIjsKLSAg
ICAgICAgYnJlYWs7Ci0jZW5kaWYKLSAgICB9Ci0gICAgcmV0dXJuIHRzOwotfQotCiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5oCShyZXZp
c2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNw
YWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEwICsyOCw3IEBACiAjaW5jbHVkZSAiQ29sb3JU
eXBlcy5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMu
aD4KLQotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBUZXh0U3RyZWFtOwotfQorI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDcsMTggKzQ0LDcgQEAg
ZW51bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdCB7CiAgICAgWFlaX0Q1MCwKIH07CiAKLWVu
dW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDogdWludDhfdCB7Ci0gICAgU1JHQgotI2lm
IEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICAsIExpbmVh
clNSR0IKLSNlbmRpZgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZ
X1AzKQotICAgICwgRGlzcGxheVAzCi0jZW5kaWYKLX07Ci0KLVdFQkNPUkVfRVhQT1JUIFdURjo6
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBDb2xvclNwYWNlKTsKLVdF
QkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0m
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UpOworV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiwgQ29sb3JTcGFjZSk7CiAKIAogdGVtcGxhdGU8dHlwZW5hbWU+
IHN0cnVjdCBDb2xvclNwYWNlTWFwcGluZzsKQEAgLTEwMiwyNSArODgsNiBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBGdW5jdG9yPiBjCiAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0
ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFrZUZyb21Db21wb25lbnRzPFNSR0JBPFQ+
Pihjb21wb25lbnRzKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEZ1bmN0
b3I+IGNvbnN0ZXhwciBkZWNsdHlwZShhdXRvKSBjYWxsV2l0aENvbG9yVHlwZShjb25zdCBDb2xv
ckNvbXBvbmVudHM8VCwgND4mIGNvbXBvbmVudHMsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xv
clNwYWNlLCBGdW5jdG9yJiYgZnVuY3RvcikKLXsKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsK
LSAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgcmV0dXJuIHN0
ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFrZUZyb21Db21wb25l
bnRzPFNSR0JBPFQ+Pihjb21wb25lbnRzKSk7Ci0jaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9S
X1NQQUNFX0xJTkVBUl9TUkdCKQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5l
YXJTUkdCOgotICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+
KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8TGluZWFyU1JHQkE8VD4+KGNvbXBvbmVudHMp
KTsKLSNlbmRpZgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1Az
KQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0gICAgICAgIHJl
dHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIG1ha2VGcm9t
Q29tcG9uZW50czxEaXNwbGF5UDM8VD4+KGNvbXBvbmVudHMpKTsKLSNlbmRpZgotICAgIH0KLQot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZv
cndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIG1ha2VGcm9tQ29tcG9uZW50czxTUkdCQTxUPj4oY29t
cG9uZW50cykpOwotfQotCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApAQCAtMTQxLDE3ICsx
MDgsNCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNvCiAgICAgPjsK
IH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6RGVzdGluYXRpb25D
b2xvclNwYWNlPiB7Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAgICAgICAgV2Vi
Q29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlLAotICAgICAgICBXZWJDb3JlOjpEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IKLSNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElO
RUFSX1NSR0IpCi0gICAgICAgICwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5l
YXJTUkdCCi0jZW5kaWYKLSNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExB
WV9QMykKLSAgICAgICAgLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQ
MwotI2VuZGlmCi0gICAgPjsKLX07Ci0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgJKHJldmlzaW9uIDI3
NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VC
dWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBCYWNrZW5kVHlwZT4KIGNsYXNzIENvbmNyZXRlSW1hZ2VCdWZmZXIgOiBwdWJsaWMgSW1hZ2VC
dWZmZXIgewogcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEltYWdlQnVmZmVyVHlwZSA9
IENvbmNyZXRlSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KLSAgICBzdGF0aWMg
UmVmUHRyPEltYWdlQnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4
ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEFyZ3Vt
ZW50cyYmLi4uIGFyZ3VtZW50cykKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyVHlwZT4g
Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9y
bWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93LCBBcmd1bWVudHMmJi4uLiBhcmd1bWVu
dHMpCiAgICAgewogICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBJbWFnZUJ1ZmZlckJhY2tlbmQ6
OlBhcmFtZXRlcnMgeyBzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9y
bWF0IH07CiAgICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUocGFyYW1l
dGVycywgaG9zdFdpbmRvdyk7CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBJbWFnZUJ1ZmZlclR5cGUgPSBDb25jcmV0ZUltYWdlQnVmZmVyLCB0eXBlbmFt
ZS4uLiBBcmd1bWVudHM+CiAgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlclR5cGU+IGNyZWF0
ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
QXJndW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAgIHsKLSAgICAgICAgYXV0byBwYXJhbWV0ZXJz
ID0gSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzIHsgc2l6ZSwgMSwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTggfTsKKyAgICAgICAgYXV0byBwYXJh
bWV0ZXJzID0gSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzIHsgc2l6ZSwgMSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCB9OwogICAgICAgICBh
dXRvIGJhY2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3JlYXRlKHBhcmFtZXRlcnMsIGNvbnRleHQpOwog
ICAgICAgICBpZiAoIWJhY2tlbmQpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE5
NSw3ICsxOTUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkIHRy
YW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIHNyY0NvbG9yU3BhY2UsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSBkZXN0Q29sb3JTcGFjZSkgb3ZlcnJpZGUKKyAgICB2b2lkIHRy
YW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBzcmNDb2xvclNw
YWNlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGRlc3RDb2xvclNwYWNlKSBvdmVycmlk
ZQogICAgIHsKICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5kQ3JlYXRl
ZCgpKSB7CiAgICAgICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2Vu
ZXJhdGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwMyw3ICsxMDMsNyBAQCBJbWFnZURyYXdSZXN1bHQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1h
Z2U6CiAKIHZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBjb250ZXh0LnJlbmRlcmluZ01vZGUoKSwgMSwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8g
aW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgY29udGV4dC5yZW5kZXJp
bmdNb2RlKCksIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6
QkdSQTgpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5h
dGlvbkNvbG9yU3BhY2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3Ry
ZWFtLmg+CisKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiQ29sb3JTcGFjZUNHLmgiCisjaW5jbHVk
ZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKQoreworI2lmIFVTRShDRykKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlKHNS
R0JDb2xvclNwYWNlUmVmKCkpOworI2Vsc2UKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNw
YWNlKFBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZTo6U1JHQik7CisjZW5kaWYKK30KKworI2lmIEVO
QUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKK0Rlc3RpbmF0aW9uQ29s
b3JTcGFjZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKQoreworI2lmIFVTRShD
RykKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlKGxpbmVhclNSR0JDb2xvclNwYWNl
UmVmKCkpOworI2Vsc2UKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlKFBsYXRmb3Jt
Q29sb3JTcGFjZTo6TmFtZTo6TGluZWFyU1JHQik7CisjZW5kaWYKK30KKyNlbmRpZgorCisjaWYg
RU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCitEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDMoKQoreworI2lmIFVTRShD
RykKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlKGRpc3BsYXlQM0NvbG9yU3BhY2VS
ZWYoKSk7CisjZWxzZQorICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UoUGxhdGZvcm1D
b2xvclNwYWNlOjpOYW1lOjpEaXNwbGF5UDMpOworI2VuZGlmCit9CisjZW5kaWYKKworRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UoUGxhdGZvcm1Db2xvclNwYWNl
IHBsYXRmb3JtQ29sb3JTcGFjZSkKKyAgICA6IG1fcGxhdGZvcm1Db2xvclNwYWNlIHsgV1RGTW92
ZShwbGF0Zm9ybUNvbG9yU3BhY2UpIH0KK3sKKyNpZiBVU0UoQ0cpCisgICAgQVNTRVJUKG1fcGxh
dGZvcm1Db2xvclNwYWNlKTsKKyNlbmRpZgorfQorCitib29sIG9wZXJhdG9yPT0oY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiBhLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGIpCit7
CisjaWYgVVNFKENHKQorICAgIHJldHVybiBDR0NvbG9yU3BhY2VFcXVhbFRvQ29sb3JTcGFjZShh
LnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBiLnBsYXRmb3JtQ29sb3JTcGFjZSgpKTsKKyNlbHNlCisg
ICAgcmV0dXJuIGEucGxhdGZvcm1Db2xvclNwYWNlKCkgPT0gYi5wbGF0Zm9ybUNvbG9yU3BhY2Uo
KTsKKyNlbmRpZgorfQorCitib29sIG9wZXJhdG9yIT0oY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiBhLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGIpCit7CisgICAgcmV0dXJuICEo
YSA9PSBiKTsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQoreworICAgIGlmIChjb2xvclNw
YWNlID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKQorICAgICAgICB0cyA8PCAic1JH
QiI7CisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQorICAg
IGVsc2UgaWYgKGNvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdC
KCkpCisgICAgICAgIHRzIDw8ICJMaW5lYXJTUkdCIjsKKyNlbmRpZgorI2lmIEVOQUJMRShERVNU
SU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQorICAgIGVsc2UgaWYgKGNvbG9yU3BhY2Ug
PT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDMoKSkKKyAgICAgICAgdHMgPDwgIkRp
c3BsYXlQMyI7CisjZW5kaWYKKyNpZiBVU0UoQ0cpCisgICAgZWxzZSBpZiAoYXV0byBkZXNjcmlw
dGlvbiA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ29weUlDQ1Byb2ZpbGVEZXNjcmlwdGlvbihjb2xv
clNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpKSkpCisgICAgICAgIHRzIDw8IFN0cmluZyhkZXNj
cmlwdGlvbi5nZXQoKSk7CisjZW5kaWYKKworICAgIHJldHVybiB0czsKK30KKworfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRp
b25Db2xvclNwYWNlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUGxhdGZvcm1D
b2xvclNwYWNlLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgeworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgU1JHQigpOworI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5F
QVJfU1JHQikKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRGVzdGluYXRpb25Db2xvclNwYWNl
IExpbmVhclNSR0IoKTsKKyNlbmRpZgorI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFD
RV9ESVNQTEFZX1AzKQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgRGlzcGxheVAzKCk7CisjZW5kaWYKKworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0
IERlc3RpbmF0aW9uQ29sb3JTcGFjZShQbGF0Zm9ybUNvbG9yU3BhY2UpOworICAgIFBsYXRmb3Jt
Q29sb3JTcGFjZVZhbHVlIHBsYXRmb3JtQ29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxh
dGZvcm1Db2xvclNwYWNlLmdldCgpOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gZGVjb2RlKERlY29kZXImKTsK
KworcHJpdmF0ZToKKyAgICBQbGF0Zm9ybUNvbG9yU3BhY2UgbV9wbGF0Zm9ybUNvbG9yU3BhY2U7
Cit9OworCitXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CitXRUJDT1JFX0VYUE9S
VCBib29sIG9wZXJhdG9yIT0oY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJik7CisKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpOworCit0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3BsYXRmb3JtQ29sb3JT
cGFjZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8RGVzdGluYXRpb25D
b2xvclNwYWNlPiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQoreworICAgIE9wdGlvbmFsPFBsYXRmb3JtQ29sb3JTcGFjZT4gcGxhdGZvcm1Db2xvclNwYWNl
OworICAgIGRlY29kZXIgPj4gcGxhdGZvcm1Db2xvclNwYWNlOworICAgIGlmICghcGxhdGZvcm1D
b2xvclNwYWNlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSB7IFdURk1vdmUoKnBsYXRmb3JtQ29sb3JTcGFjZSkgfTsKK30K
KworfQorCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudElt
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFkaWVudEltYWdlLmNwcAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcg
KzcyLDcgQEAgdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljcwogICAgIHVu
c2lnbmVkIGdlbmVyYXRvckhhc2ggPSBtX2dyYWRpZW50LT5oYXNoKCk7CiAKICAgICBpZiAoIW1f
Y2FjaGVkSW1hZ2UgfHwgbV9jYWNoZWRHZW5lcmF0b3JIYXNoICE9IGdlbmVyYXRvckhhc2ggfHwg
bV9jYWNoZWRBZGp1c3RlZFNpemUgIT0gYWRqdXN0ZWRTaXplIHx8ICFhcmVFc3NlbnRpYWxseUVx
dWFsKGRlc3RDb250ZXh0LnNjYWxlRmFjdG9yKCksIG1fY2FjaGVkU2NhbGVGYWN0b3IpKSB7Ci0g
ICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1
ZmZlcihhZGp1c3RlZFNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgZGVzdENvbnRl
eHQpOworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBh
dGlibGVCdWZmZXIoYWRqdXN0ZWRTaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
ZGVzdENvbnRleHQpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0
dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg4Myw3ICs4ODMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dFJvdW5kZWRSZWN0
CiAgICAgY2xpcE91dChwYXRoKTsKIH0KIAotR3JhcGhpY3NDb250ZXh0OjpDbGlwVG9EcmF3aW5n
Q29tbWFuZHNSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29u
c3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKQor
R3JhcGhpY3NDb250ZXh0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgR3JhcGhpY3NDb250
ZXh0OjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdy
YXBoaWNzQ29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikKIHsKICAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0OjpT
dWNjZXNzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmgJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4
ICsyNiw4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgogI2lu
Y2x1ZGUgIkRhc2hBcnJheS5oIgorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgog
I2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NUeXBlcy5oIgpAQCAtNDEwLDcgKzQxMCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKICAg
ICBlbnVtIGNsYXNzIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCA6IGJvb2wgeyBTdWNjZXNz
LCBGYWlsZWRUb0NyZWF0ZUltYWdlQnVmZmVyIH07Ci0gICAgQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
UmVzdWx0IGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+
JiYpOworICAgIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBjbGlwVG9EcmF3aW5nQ29tbWFu
ZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJik7CiAgICAgCiAgICAgSW50
UmVjdCBjbGlwQm91bmRzKCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgJKHJldmlzaW9uIDI3
NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSA9IDA7CiAgICAgdmly
dHVhbCBJbnRSZWN0IGNsaXBCb3VuZHMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsaXBUb0lt
YWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JikgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
biwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYp
PiYmIGRyYXdpbmdGdW5jdGlvbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGlwVG9EcmF3aW5n
Q29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBkcmF3aW5nRnVu
Y3Rpb24pID0gMDsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgdmlydHVhbCB2b2lkIHBhaW50RnJh
bWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuUGFpbnRGcmFtZUZvck1lZGlhKGNvbnN0IE1lZGlhUGxh
eWVyJikgY29uc3QgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmNwcAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Nyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBjb25zdCBmbG9hdCBNYXhD
bGFtcGVkTGVuZ3RoID0gNDA5NjsKIHN0YXRpYyBjb25zdCBmbG9hdCBNYXhDbGFtcGVkQXJlYSA9
IE1heENsYW1wZWRMZW5ndGggKiBNYXhDbGFtcGVkTGVuZ3RoOwogCi1SZWZQdHI8SW1hZ2VCdWZm
ZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdN
b2RlIHJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0IHNob3VsZFVzZURpc3BsYXlM
aXN0LCBSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVz
dGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBj
b25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJp
bmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdCBzaG91bGRVc2VEaXNwbGF5TGlzdCwgUmVuZGVy
aW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0
IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7CiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFn
ZUJ1ZmZlcjsKICAgICAKQEAgLTU5LDcgKzU5LDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKAogICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0KIAotUmVmUHRyPElt
YWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVu
ZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3Qg
SG9zdFdpbmRvdyogaG9zdFdpbmRvdykKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9k
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNv
bG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0
V2luZG93KQogewogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7CiAgICAgCkBA
IC05NSw3ICs5NSw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUMK
ICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VC
dWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1
ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYg
Y29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIGlmIChz
aXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMTEsNyArMTExLDcg
QEAgUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQwogICAgIHJldHVybiBp
bWFnZUJ1ZmZlcjsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNv
bXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNp
emUsIGNvbnRleHQucmVuZGVyaW5nTW9kZSgpLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2Us
IFBpeGVsRm9ybWF0OjpCR1JBOCk7CiB9CkBAIC0xNjcsNyArMTY3LDcgQEAgSW50U2l6ZSBJbWFn
ZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZlclNpegogICAgIHJldHVybiBleHBhbmRlZEludFNpemUo
c2l6ZSAqIGNvbnRleHQuc2NhbGVGYWN0b3IoKSk7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4g
SW1hZ2VCdWZmZXI6OmNvcHlSZWN0VG9CdWZmZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcihj
b25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JT
cGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIGlmIChyZWN0Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgJKHJldmlzaW9uIDI3NzkzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1LDEzICs0NSwxMyBAQCBzdHJ1Y3QgSXRlbUJ1ZmZlckhhbmRsZTsKIGNsYXNz
IEltYWdlQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlQnVmZmVyPiwg
cHVibGljIENhbk1ha2VXZWFrUHRyPEltYWdlQnVmZmVyPiB7CiBwdWJsaWM6CiAgICAgLy8gV2ls
bCByZXR1cm4gYSBudWxsIHBvaW50ZXIgb24gYWxsb2NhdGlvbiBmYWlsdXJlLgotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNp
emUmLCBSZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdCwgUmVuZGVyaW5nUHVycG9z
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0LCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJp
bmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUGl4
ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIFJl
bmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBpeGVsRm9y
bWF0LCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJp
bmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYsIFBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOwogCiAgICAgLy8g
Q3JlYXRlIGFuIGltYWdlIGJ1ZmZlciBjb21wYXRpYmxlIHdpdGggdGhlIGNvbnRleHQsIHdpdGgg
c3VpdGFibGUgcmVzb2x1dGlvbiBmb3IgZHJhd2luZyBpbnRvIHRoZSBidWZmZXIgYW5kIHRoZW4g
aW50byB0aGlzIGNvbnRleHQuCiAgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQm
KTsKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVy
KGNvbnN0IEZsb2F0U2l6ZSYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3ND
b250ZXh0Jik7Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJs
ZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CisgICAgc3RhdGljIFJlZlB0
cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0
IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICAvLyBUaGVzZSBmdW5jdGlv
bnMgYXJlIHVzZWQgd2hlbiBjbGFtcGluZyB0aGUgSW1hZ2VCdWZmZXIgd2hpY2ggaXMgY3JlYXRl
ZCBmb3IgZmlsdGVyLCBtYXNrZXIgb3IgY2xpcHBlci4KICAgICBzdGF0aWMgYm9vbCBzaXplTmVl
ZHNDbGFtcGluZyhjb25zdCBGbG9hdFNpemUmKTsKQEAgLTEwNyw3ICsxMDcsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0g
Q29weUJhY2tpbmdTdG9yZSwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9u
OjpObykgY29uc3QgPSAwOwogCiAgICAgLy8gQ3JlYXRlIGFuIGltYWdlIGJ1ZmZlciBjb21wYXRp
YmxlIHdpdGggdGhlIGNvbnRleHQgYW5kIGNvcHkgcmVjdCBmcm9tIHRoaXMgYnVmZmVyIGludG8g
dGhpcyBuZXcgb25lLgotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY29weVJlY3RUb0J1ZmZlcihj
b25zdCBGbG9hdFJlY3QmLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYpOworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY29weVJlY3RUb0J1ZmZlcihjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVj
dCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkg
PSAwOwpAQCAtMTIwLDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xpcFRv
TWFzayhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KSA9IDA7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgY29udmVydFRvTHVtaW5hbmNlTWFzaygpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc3JjQ29s
b3JTcGFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGRzdENvbG9yU3BhY2UpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmIHNyY0NvbG9yU3BhY2UsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgZHN0Q29sb3JT
cGFjZSkgPSAwOwogCiAgICAgdmlydHVhbCBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IFdURjo6bnVsbG9wdCwgUHJlc2Vy
dmVSZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgVmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRp
b25hbDxkb3VibGU+IHF1YWxpdHkgPSBXVEY6Om51bGxvcHQpIGNvbnN0ID0gMDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJC
YWNrZW5kLmNwcAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiAr
NTMsOCBAQCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVyQmFja2VuZChjCiB7CiB9CiAK
K0ltYWdlQnVmZmVyQmFja2VuZDo6fkltYWdlQnVmZmVyQmFja2VuZCgpID0gZGVmYXVsdDsKKwog
UmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1h
Z2UoKQogewogICAgIHJldHVybiBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUp
OwpAQCAtMTE0LDE1ICsxMTYsMTcgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEltYWdlQnVmZmVy
QmFja2VuZAogICAgIGlmIChkZXN0aW5hdGlvblJlY3Quc2l6ZSgpICE9IHNvdXJjZVJlY3RTY2Fs
ZWQuc2l6ZSgpKQogICAgICAgICBwaXhlbEJ1ZmZlci0+ZGF0YSgpLnplcm9GaWxsKCk7CiAKLSAg
ICBDb25zdFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgc291cmNlOwotICAgIHNvdXJjZS5mb3Jt
YXQgPSB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIHBpeGVsRm9ybWF0
KCksIGNvbG9yU3BhY2UoKSB9OwotICAgIHNvdXJjZS5ieXRlc1BlclJvdyA9IGJ5dGVzUGVyUm93
KCk7Ci0gICAgc291cmNlLnJvd3MgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhKSAr
IHNvdXJjZVJlY3RDbGlwcGVkLnkoKSAqIHNvdXJjZS5ieXRlc1BlclJvdyArIHNvdXJjZVJlY3RD
bGlwcGVkLngoKSAqIDQ7CisgICAgQ29uc3RQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IHNvdXJj
ZSB7CisgICAgICAgIHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgcGl4
ZWxGb3JtYXQoKSwgY29sb3JTcGFjZSgpIH0sCisgICAgICAgIGJ5dGVzUGVyUm93KCksCisgICAg
ICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEpICsgc291cmNlUmVjdENsaXBwZWQu
eSgpICogc291cmNlLmJ5dGVzUGVyUm93ICsgc291cmNlUmVjdENsaXBwZWQueCgpICogNAorICAg
IH07CiAgICAgCi0gICAgUGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBkZXN0aW5hdGlvbjsKLSAg
ICBkZXN0aW5hdGlvbi5mb3JtYXQgPSBkZXN0aW5hdGlvbkZvcm1hdDsKLSAgICBkZXN0aW5hdGlv
bi5ieXRlc1BlclJvdyA9IDQgKiBzb3VyY2VSZWN0U2NhbGVkLndpZHRoKCk7Ci0gICAgZGVzdGlu
YXRpb24ucm93cyA9IHBpeGVsQnVmZmVyLT5kYXRhKCkuZGF0YSgpICsgZGVzdGluYXRpb25SZWN0
LnkoKSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ICsgZGVzdGluYXRpb25SZWN0LngoKSAqIDQ7
CisgICAgUGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBkZXN0aW5hdGlvbiB7CisgICAgICAgIGRl
c3RpbmF0aW9uRm9ybWF0LAorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oNCAqIHNvdXJj
ZVJlY3RTY2FsZWQud2lkdGgoKSksCisgICAgICAgIHBpeGVsQnVmZmVyLT5kYXRhKCkuZGF0YSgp
ICsgZGVzdGluYXRpb25SZWN0LnkoKSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ICsgZGVzdGlu
YXRpb25SZWN0LngoKSAqIDQKKyAgICB9OwogCiAgICAgY29udmVydEltYWdlUGl4ZWxzKHNvdXJj
ZSwgZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uUmVjdC5zaXplKCkpOwogCkBAIC0xNDcsMTUgKzE1
MSwxNyBAQCB2b2lkIEltYWdlQnVmZmVyQmFja2VuZDo6cHV0UGl4ZWxCdWZmZXIoCiAgICAgZGVz
dGluYXRpb25SZWN0LmludGVyc2VjdChiYWNrZW5kUmVjdCgpKTsKICAgICBzb3VyY2VSZWN0Q2xp
cHBlZC5zZXRTaXplKGRlc3RpbmF0aW9uUmVjdC5zaXplKCkpOwogCi0gICAgQ29uc3RQaXhlbEJ1
ZmZlckNvbnZlcnNpb25WaWV3IHNvdXJjZTsKLSAgICBzb3VyY2UuZm9ybWF0ID0gc291cmNlUGl4
ZWxCdWZmZXIuZm9ybWF0KCk7Ci0gICAgc291cmNlLmJ5dGVzUGVyUm93ID0gNCAqIHNvdXJjZVBp
eGVsQnVmZmVyLnNpemUoKS53aWR0aCgpOwotICAgIHNvdXJjZS5yb3dzID0gc291cmNlUGl4ZWxC
dWZmZXIuZGF0YSgpLmRhdGEoKSArIHNvdXJjZVJlY3RDbGlwcGVkLnkoKSAqIHNvdXJjZS5ieXRl
c1BlclJvdyArIHNvdXJjZVJlY3RDbGlwcGVkLngoKSAqIDQ7Ci0KLSAgICBQaXhlbEJ1ZmZlckNv
bnZlcnNpb25WaWV3IGRlc3RpbmF0aW9uOwotICAgIGRlc3RpbmF0aW9uLmZvcm1hdCA9IHsgZGVz
dGluYXRpb25BbHBoYUZvcm1hdCwgcGl4ZWxGb3JtYXQoKSwgY29sb3JTcGFjZSgpIH07Ci0gICAg
ZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cgPSBieXRlc1BlclJvdygpOwotICAgIGRlc3RpbmF0aW9u
LnJvd3MgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhKSArIGRlc3RpbmF0aW9uUmVj
dC55KCkgKiBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyArIGRlc3RpbmF0aW9uUmVjdC54KCkgKiA0
OworICAgIENvbnN0UGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBzb3VyY2UgeworICAgICAgICBz
b3VyY2VQaXhlbEJ1ZmZlci5mb3JtYXQoKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KDQgKiBzb3VyY2VQaXhlbEJ1ZmZlci5zaXplKCkud2lkdGgoKSksCisgICAgICAgIHNvdXJjZVBp
eGVsQnVmZmVyLmRhdGEoKS5kYXRhKCkgKyBzb3VyY2VSZWN0Q2xpcHBlZC55KCkgKiBzb3VyY2Uu
Ynl0ZXNQZXJSb3cgKyBzb3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0CisgICAgfTsKKworICAgIFBp
eGVsQnVmZmVyQ29udmVyc2lvblZpZXcgZGVzdGluYXRpb24geworICAgICAgICB7IGRlc3RpbmF0
aW9uQWxwaGFGb3JtYXQsIHBpeGVsRm9ybWF0KCksIGNvbG9yU3BhY2UoKSB9LAorICAgICAgICBi
eXRlc1BlclJvdygpLAorICAgICAgICByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhKSAr
IGRlc3RpbmF0aW9uUmVjdC55KCkgKiBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyArIGRlc3RpbmF0
aW9uUmVjdC54KCkgKiA0CisgICAgfTsKIAogICAgIGNvbnZlcnRJbWFnZVBpeGVscyhzb3VyY2Us
IGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvblJlY3Quc2l6ZSgpKTsKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5o
CShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlckJhY2tlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJEZXN0aW5h
dGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFw
aGljc1R5cGVzR0wuaCIKICNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgpAQCAtNzgs
NyArNzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0OwogICAg
IH07CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbWFnZUJ1ZmZlckJhY2tlbmQoKSA9
IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SW1hZ2VCdWZmZXJCYWNrZW5k
KCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSW50U2l6ZSBjYWxjdWxhdGVCYWNrZW5k
U2l6ZShjb25zdCBQYXJhbWV0ZXJzJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHNpemVf
dCBjYWxjdWxhdGVNZW1vcnlDb3N0KGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCB1bnNpZ25l
ZCBieXRlc1BlclJvdyk7CkBAIC0xMDIsNyArMTAyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBjbGlwVG9NYXNrKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIHsgfQog
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCk7Ci0gICAg
dmlydHVhbCB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB0cmFuc2Zvcm1Db2xv
clNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYpIHsgfQogCiAgICAgdmlydHVhbCBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9u
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkgY29uc3QgPSAwOwpAQCAt
MTQwLDcgKzE0MCw3IEBAIHByb3RlY3RlZDoKIAogICAgIEludFNpemUgbG9naWNhbFNpemUoKSBj
b25zdCB7IHJldHVybiBJbnRTaXplKG1fcGFyYW1ldGVycy5sb2dpY2FsU2l6ZSk7IH0KICAgICBm
bG9hdCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMucmVzb2x1
dGlvblNjYWxlOyB9Ci0gICAgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UoKSBjb25z
dCB7IHJldHVybiBtX3BhcmFtZXRlcnMuY29sb3JTcGFjZTsgfQorICAgIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5j
b2xvclNwYWNlOyB9CiAgICAgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQoKSBjb25zdCB7IHJldHVy
biBtX3BhcmFtZXRlcnMucGl4ZWxGb3JtYXQ7IH0KIAogICAgIEludFJlY3QgbG9naWNhbFJlY3Qo
KSBjb25zdCB7IHJldHVybiBJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIGxvZ2ljYWxTaXplKCkp
OyB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVs
QnVmZmVyLmNwcAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw5IEBA
IGJvb2wgUGl4ZWxCdWZmZXI6OnN1cHBvcnRlZFBpeGVsRm9ybWF0KFAKICAgICBjYXNlIFBpeGVs
Rm9ybWF0OjpSR0IxMEE4OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQorICAgIAorICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogQ2hlY2tlZDx1
bnNpZ25lZCwgUmVjb3JkT3ZlcmZsb3c+IFBpeGVsQnVmZmVyOjpjb21wdXRlQnVmZmVyU2l6ZShj
b25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgZm9ybWF0LCBjb25zdCBJbnRTaXplJiBzaXplKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oCShy
ZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhl
bEJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIkFscGhhUHJlbXVsdGlwbGljYXRpb24uaCIKLSNpbmNsdWRlICJDb2xvclNw
YWNlLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiSW50
U2l6ZS5oIgogI2luY2x1ZGUgIlBpeGVsQnVmZmVyRm9ybWF0LmgiCiAjaW5jbHVkZSAiUGl4ZWxG
b3JtYXQuaCIKQEAgLTg3LDE5ICs4NywyMSBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IFBpeGVsQnVmZmVyCiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPFBpeGVsQnVm
ZmVyPiBQaXhlbEJ1ZmZlcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUGl4ZWxC
dWZmZXJGb3JtYXQgZm9ybWF0OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZm9ybWF0KSkKKyAg
ICBPcHRpb25hbDxQaXhlbEJ1ZmZlckZvcm1hdD4gZm9ybWF0OworICAgIGRlY29kZXIgPj4gZm9y
bWF0OworICAgIGlmICghZm9ybWF0KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAg
ICAgLy8gRklYTUU6IFN1cHBvcnQgbm9uLTggYml0IGZvcm1hdHMuCi0gICAgaWYgKCEoZm9ybWF0
LnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCB8fCBmb3JtYXQucGl4ZWxGb3JtYXQg
PT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KSkKKyAgICBpZiAoIShmb3JtYXQtPnBpeGVsRm9ybWF0ID09
IFBpeGVsRm9ybWF0OjpSR0JBOCB8fCBmb3JtYXQtPnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0
OjpCR1JBOCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBJbnRTaXplIHNp
emU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaXplKSkKKyAgICBPcHRpb25hbDxJbnRTaXpl
PiBzaXplOworICAgIGRlY29kZXIgPj4gc2l6ZTsKKyAgICBpZiAoIXNpemUpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBhdXRvIGNvbXB1dGVkQnVmZmVyU2l6ZSA9IFBpeGVs
QnVmZmVyOjpjb21wdXRlQnVmZmVyU2l6ZShmb3JtYXQsIHNpemUpOworICAgIGF1dG8gY29tcHV0
ZWRCdWZmZXJTaXplID0gUGl4ZWxCdWZmZXI6OmNvbXB1dGVCdWZmZXJTaXplKCpmb3JtYXQsICpz
aXplKTsKICAgICBpZiAoY29tcHV0ZWRCdWZmZXJTaXplLmhhc092ZXJmbG93ZWQoKSkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIApAQCAtMTA3LDcgKzEwOSw3IEBAIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IE9wdGlvbmFsPFBpeGVsQnUKICAgICBpZiAoIWRlY29kZXIudGVtcGxhdGUg
YnVmZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjx1aW50OF90PihidWZmZXJTaXplKSkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIGF1dG8gcmVzdWx0ID0gUGl4ZWxCdWZmZXI6
OnRyeUNyZWF0ZUZvckRlY29kaW5nKGZvcm1hdCwgc2l6ZSwgYnVmZmVyU2l6ZSk7CisgICAgYXV0
byByZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlRm9yRGVjb2RpbmcoV1RGTW92ZSgqZm9y
bWF0KSwgKnNpemUsIGJ1ZmZlclNpemUpOwogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QaXhlbEJ1ZmZlckNvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDI3
NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29u
dmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEyICsyNywxMSBAQAogI2luY2x1ZGUg
IlBpeGVsQnVmZmVyQ29udmVyc2lvbi5oIgogCiAjaW5jbHVkZSAiQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbi5oIgotI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNv
bG9yU3BhY2UuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiUGl4ZWxGb3JtYXQu
aCIKIAogI2lmIFVTRShBQ0NFTEVSQVRFKSAmJiBVU0UoQ0cpCi0jaW5jbHVkZSAiQ29sb3JTcGFj
ZUNHLmgiCiAjaW5jbHVkZSA8QWNjZWxlcmF0ZS9BY2NlbGVyYXRlLmg+CiAjZW5kaWYKIApAQCAt
NzEsNyArNzAsNyBAQCBzdGF0aWMgaW5saW5lIHZJbWFnZV9DR0ltYWdlRm9ybWF0IG1ha2VWCiAK
ICAgICByZXN1bHQuYml0c1BlckNvbXBvbmVudCA9IGJpdHNQZXJDb21wb25lbnQ7CiAgICAgcmVz
dWx0LmJpdHNQZXJQaXhlbCA9IGJpdHNQZXJQaXhlbDsKLSAgICByZXN1bHQuY29sb3JTcGFjZSA9
IGNhY2hlZENHQ29sb3JTcGFjZShmb3JtYXQuY29sb3JTcGFjZSk7CisgICAgcmVzdWx0LmNvbG9y
U3BhY2UgPSBmb3JtYXQuY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKTsKICAgICByZXN1
bHQuYml0bWFwSW5mbyA9IGJpdG1hcEluZm87CiAgICAgcmVzdWx0LnZlcnNpb24gPSAwOwogICAg
IHJlc3VsdC5kZWNvZGUgPSBudWxscHRyOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5oCShyZXZpc2lvbiAyNzc5Mzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIkFscGhhUHJlbXVsdGlwbGljYXRpb24uaCIKLSNpbmNsdWRlICJDb2xvclNwYWNlLmgiCisj
aW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiUGl4ZWxGb3JtYXQu
aCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgpA
QCAtNTEsMTkgKzUxLDIyIEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgUGl4ZWxCdWZm
ZXIKIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8UGl4ZWxCdWZmZXJGb3JtYXQ+
IFBpeGVsQnVmZmVyRm9ybWF0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBBbHBo
YVByZW11bHRpcGxpY2F0aW9uIGFscGhhRm9ybWF0OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
YWxwaGFGb3JtYXQpKQorICAgIE9wdGlvbmFsPEFscGhhUHJlbXVsdGlwbGljYXRpb24+IGFscGhh
Rm9ybWF0OworICAgIGRlY29kZXIgPj4gYWxwaGFGb3JtYXQ7CisgICAgaWYgKCFhbHBoYUZvcm1h
dCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIFBpeGVsRm9ybWF0IHBpeGVs
Rm9ybWF0OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGl4ZWxGb3JtYXQpKQorICAgIE9wdGlv
bmFsPFBpeGVsRm9ybWF0PiBwaXhlbEZvcm1hdDsKKyAgICBkZWNvZGVyID4+IHBpeGVsRm9ybWF0
OworICAgIGlmICghcGl4ZWxGb3JtYXQpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAK
LSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZTsKLSAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGNvbG9yU3BhY2UpKQorICAgIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4g
Y29sb3JTcGFjZTsKKyAgICBkZWNvZGVyID4+IGNvbG9yU3BhY2U7CisgICAgaWYgKCFjb2xvclNw
YWNlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHsgeyBhbHBo
YUZvcm1hdCwgcGl4ZWxGb3JtYXQsIGNvbG9yU3BhY2UgfSB9OworICAgIHJldHVybiB7IHsgV1RG
TW92ZSgqYWxwaGFGb3JtYXQpLCBXVEZNb3ZlKCpwaXhlbEZvcm1hdCksIFdURk1vdmUoKmNvbG9y
U3BhY2UpIH0gfTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1Db2xvclNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1Db2xvclNwYWNlLmgJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1Db2xvclNwYWNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2lmIFVTRShDRykKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Cit0eXBlZGVmIHN0cnVjdCBD
R0NvbG9yU3BhY2UqIENHQ29sb3JTcGFjZVJlZjsKKyNlbHNlCisjaW5jbHVkZSA8d3RmL0VudW1U
cmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNlbmRpZgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKKyNpZiBVU0UoQ0cpCisKK3VzaW5nIFBsYXRmb3JtQ29sb3JTcGFjZSA9IFJl
dGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+OwordXNpbmcgUGxhdGZvcm1Db2xvclNwYWNlVmFsdWUg
PSBDR0NvbG9yU3BhY2VSZWY7CisKKyNlbHNlCisKK2NsYXNzIFBsYXRmb3JtQ29sb3JTcGFjZSB7
CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBOYW1lIDogdWludDhfdCB7CisgICAgICAgIFNSR0IK
KyNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCisgICAgICAg
ICwgTGluZWFyU1JHQgorI2VuZGlmCisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNF
X0RJU1BMQVlfUDMpCisgICAgICAgICwgRGlzcGxheVAzCisjZW5kaWYKKyAgICB9OworCisgICAg
UGxhdGZvcm1Db2xvclNwYWNlKE5hbWUgbmFtZSkKKyAgICAgICAgOiBtX25hbWUgeyBuYW1lIH0K
KyAgICB7CisgICAgfQorCisgICAgTmFtZSBnZXQoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0K
KworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25z
dDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UGxhdGZvcm1D
b2xvclNwYWNlPiBkZWNvZGUoRGVjb2RlciYpOworCitwcml2YXRlOgorICAgIE5hbWUgbV9uYW1l
OworCit9OwordXNpbmcgUGxhdGZvcm1Db2xvclNwYWNlVmFsdWUgPSBQbGF0Zm9ybUNvbG9yU3Bh
Y2U6Ok5hbWU7CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgUGxhdGZvcm1Db2xvclNw
YWNlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1f
bmFtZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8UGxhdGZvcm1Db2xv
clNwYWNlPiBQbGF0Zm9ybUNvbG9yU3BhY2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorewor
ICAgIE9wdGlvbmFsPFBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZT4gbmFtZTsKKyAgICBkZWNvZGVy
ID4+IG5hbWU7CisgICAgaWYgKCFuYW1lKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgcmV0dXJuIHsgeyAqbmFtZSB9IH07Cit9CisKKyNlbmRpZgorCit9CisKK25hbWVzcGFj
ZSBXVEYgeworCisjaWYgIVVTRShDRykKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxX
ZWJDb3JlOjpQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBF
bnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWUsCisg
ICAgICAgIFdlYkNvcmU6OlBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZTo6U1JHQgorI2lmIEVOQUJM
RShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKKyAgICAgICAgLCBXZWJDb3Jl
OjpQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU6OkxpbmVhclNSR0IKKyNlbmRpZgorI2lmIEVOQUJM
RShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQorICAgICAgICAsIFdlYkNvcmU6
OlBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZTo6RGlzcGxheVAzCisjZW5kaWYKKyAgICA+OworfTsK
KworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwCShyZXZp
c2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVW
aWRlb1NhbXBsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgc3RhdGljIGlu
bGluZSBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPgogICAgIH0KIAogICAgIEludFNpemUgc2l6
ZSB7IHN0YXRpY19jYXN0PGludD4oQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoKHBpeGVsQnVmZmVyKSks
IHN0YXRpY19jYXN0PGludD4oQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodChwaXhlbEJ1ZmZlcikpIH07
Ci0gICAgYXV0byBpb1N1cmZhY2UgPSAgSU9TdXJmYWNlOjpjcmVhdGUoc2l6ZSwgc1JHQkNvbG9y
U3BhY2VSZWYoKSwgSU9TdXJmYWNlOjpGb3JtYXQ6OkJHUkEpOworICAgIGF1dG8gaW9TdXJmYWNl
ID0gSU9TdXJmYWNlOjpjcmVhdGUoc2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCks
IElPU3VyZmFjZTo6Rm9ybWF0OjpCR1JBKTsKIAogICAgIElPU3VyZmFjZTo6TG9ja2VyIGxvY2so
KmlvU3VyZmFjZSk7CiAgICAgdkltYWdlX0J1ZmZlciBzcmM7CkBAIC0xMTMsNyArMTEzLDcgQEAg
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBSZW1vdAogICAgICAgICBzdXJmYWNl
ID0gaW9TdXJmYWNlLT5zdXJmYWNlKCk7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVl
X3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4obmV3IFJlbW90ZVZpZGVvU2FtcGxlKHN1cmZhY2UsIHNS
R0JDb2xvclNwYWNlUmVmKCksIHNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCksIHNhbXBsZS52aWRl
b1JvdGF0aW9uKCksIHNhbXBsZS52aWRlb01pcnJvcmVkKCkpKTsKKyAgICByZXR1cm4gc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPihuZXcgUmVtb3RlVmlkZW9TYW1wbGUoc3VyZmFj
ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHNhbXBsZS5wcmVzZW50YXRpb25UaW1l
KCksIHNhbXBsZS52aWRlb1JvdGF0aW9uKCksIHNhbXBsZS52aWRlb01pcnJvcmVkKCkpKTsKIH0K
IAogc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBSZW1vdGVWaWRlb1NhbXBsZTo6
Y3JlYXRlKENWUGl4ZWxCdWZmZXJSZWYgaW1hZ2VCdWZmZXIsIE1lZGlhVGltZSYmIHByZXNlbnRh
dGlvblRpbWUsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKQpAQCAtMTI0LDEw
ICsxMjQsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBSZW1vdAogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRy
PFJlbW90ZVZpZGVvU2FtcGxlPihuZXcgUmVtb3RlVmlkZW9TYW1wbGUoc3VyZmFjZSwgc1JHQkNv
bG9yU3BhY2VSZWYoKSwgV1RGTW92ZShwcmVzZW50YXRpb25UaW1lKSwgcm90YXRpb24sIGZhbHNl
KSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4obmV3IFJl
bW90ZVZpZGVvU2FtcGxlKHN1cmZhY2UsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBX
VEZNb3ZlKHByZXNlbnRhdGlvblRpbWUpLCByb3RhdGlvbiwgZmFsc2UpKTsKIH0KIAotUmVtb3Rl
VmlkZW9TYW1wbGU6OlJlbW90ZVZpZGVvU2FtcGxlKElPU3VyZmFjZVJlZiBzdXJmYWNlLCBDR0Nv
bG9yU3BhY2VSZWYgY29sb3JTcGFjZSwgTWVkaWFUaW1lJiYgdGltZSwgTWVkaWFTYW1wbGU6OlZp
ZGVvUm90YXRpb24gcm90YXRpb24sIGJvb2wgbWlycm9yZWQpCitSZW1vdGVWaWRlb1NhbXBsZTo6
UmVtb3RlVmlkZW9TYW1wbGUoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYgY29sb3JTcGFjZSwgTWVkaWFUaW1lJiYgdGltZSwgTWVkaWFTYW1wbGU6OlZp
ZGVvUm90YXRpb24gcm90YXRpb24sIGJvb2wgbWlycm9yZWQpCiAgICAgOiBtX2lvU3VyZmFjZShX
ZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TdXJmYWNlKHN1cmZhY2UsIGNvbG9yU3BhY2Up
KQogICAgICwgbV9yb3RhdGlvbihyb3RhdGlvbikKICAgICAsIG1fdGltZShXVEZNb3ZlKHRpbWUp
KQpAQCAtMTQwLDcgKzE0MCw3IEBAIFJlbW90ZVZpZGVvU2FtcGxlOjpSZW1vdGVWaWRlb1NhbXBs
ZShJT1MKIElPU3VyZmFjZVJlZiBSZW1vdGVWaWRlb1NhbXBsZTo6c3VyZmFjZSgpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX2lvU3VyZmFjZSAmJiBtX3NlbmRSaWdodCkKLSAgICAgICAgY29uc3RfY2Fz
dDxSZW1vdGVWaWRlb1NhbXBsZSo+KHRoaXMpLT5tX2lvU3VyZmFjZSA9IFdlYkNvcmU6OklPU3Vy
ZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGNvbnN0X2Nhc3Q8UmVtb3RlVmlkZW9T
YW1wbGUqPih0aGlzKS0+bV9zZW5kUmlnaHQpLCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICAg
ICAgY29uc3RfY2FzdDxSZW1vdGVWaWRlb1NhbXBsZSo+KHRoaXMpLT5tX2lvU3VyZmFjZSA9IFdl
YkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGNvbnN0X2Nhc3Q8
UmVtb3RlVmlkZW9TYW1wbGUqPih0aGlzKS0+bV9zZW5kUmlnaHQpLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSk7CiAKICAgICByZXR1cm4gbV9pb1N1cmZhY2UgPyBtX2lvU3VyZmFjZS0+
c3VyZmFjZSgpIDogbnVsbHB0cjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAkocmV2aXNpb24gMjc3OTM5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZh
dGU6Ci0gICAgUmVtb3RlVmlkZW9TYW1wbGUoSU9TdXJmYWNlUmVmLCBDR0NvbG9yU3BhY2VSZWYs
IE1lZGlhVGltZSYmLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiwgYm9vbCk7CisgICAgUmVt
b3RlVmlkZW9TYW1wbGUoSU9TdXJmYWNlUmVmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
LCBNZWRpYVRpbWUmJiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24sIGJvb2wpOwogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gbV9pb1N1cmZhY2U7CiAgICAgV1RG
OjpNYWNoU2VuZFJpZ2h0IG1fc2VuZFJpZ2h0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2xlYXJTY3JhdGNoQnVmZmVy
KCk7CiAKICAgICAgICAgLy8gU2hhZG93Qmx1ciBpcyBub3QgdXNlZCB3aXRoIGFjY2VsZXJhdGVk
IGRyYXdpbmcsIHNvIGl0J3MgT0sgdG8gbWFrZSBhbiB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVy
YXRlZCBidWZmZXIuCi0gICAgICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KHJvdW5kZWRTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgIG1faW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJvdW5kZWRTaXplLCBSZW5kZXJpbmdNb2RlOjpV
bmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKICAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXI7CiAgICAgfQogCkBAIC02
MDYsNyArNjA2LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3coY29uc3QgQQog
CiB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBzaGFkb3dlZFJlY3QsIGNvbnN0
IExheWVySW1hZ2VQcm9wZXJ0aWVzJiBsYXllckltYWdlUHJvcGVydGllcywgY29uc3QgRHJhd0J1
ZmZlckNhbGxiYWNrJiBkcmF3QnVmZmVyKQogewotICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoZXhwYW5kZWRJbnRTaXplKGxheWVySW1hZ2VQcm9wZXJ0aWVzLmxheWVy
U2l6ZSksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGxheWVySW1hZ2UgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGllcy5s
YXllclNpemUpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWxheWVySW1h
Z2UpCiAgICAgICAgIHJldHVybjsKIApAQCAtNjM0LDcgKzYzNCw3IEBAIHZvaWQgU2hhZG93Qmx1
cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGkKIAogdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRT
aGFkb3dXaXRob3V0VGlsaW5nKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UmVj
dCYgZnVsbFJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBMYXll
ckltYWdlUHJvcGVydGllcyYgbGF5ZXJJbWFnZVByb3BlcnRpZXMsIGNvbnN0IERyYXdCdWZmZXJD
YWxsYmFjayYgZHJhd0J1ZmZlcikKIHsKLSAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGllcy5sYXllclNpemUp
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBsYXllckltYWdlID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShleHBhbmRlZEludFNpemUobGF5ZXJJbWFnZVByb3BlcnRpZXMubGF5ZXJT
aXplKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFsYXllckltYWdlKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTcwNyw3ICs3MDcsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRy
YXdSZWN0U2hhZG93V2l0aFRpbGluCiAjZW5kaWYKIAogICAgIGlmICghbGF5ZXJJbWFnZUJ1ZmZl
cikgewotICAgICAgICBsYXllckltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1w
bGF0ZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgbGF5ZXJJbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpV
bmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKICAgICAgICAgaWYgKCFsYXllckltYWdlQnVmZmVyKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTc2NSw3ICs3NjUsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJ
bnNldFNoYWRvd1dpdGhUaWxpCiAjZW5kaWYKIAogICAgIGlmICghbGF5ZXJJbWFnZUJ1ZmZlcikg
ewotICAgICAgICBsYXllckltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1wbGF0
ZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgbGF5ZXJJbWFnZUJ1ZmZl
ciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFj
Y2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6
OkJHUkE4KTsKICAgICAgICAgaWYgKCFsYXllckltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTkwNSw3ICs5MDUsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmJsdXJTaGFk
b3dCdWZmZXIoSW1hZ2VCCiAgICAgaWYgKG1fdHlwZSAhPSBCbHVyU2hhZG93KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCIH07CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgSW50UmVjdCBibHVyUmVjdChJbnRQ
b2ludCgpLCB0ZW1wbGF0ZVNpemUpOwogICAgIGF1dG8gbGF5ZXJEYXRhID0gbGF5ZXJJbWFnZS5n
ZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIGJsdXJSZWN0KTsKICAgICBpZiAoIWxheWVyRGF0YSkKQEAg
LTkzNSw3ICs5MzUsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdTaGFkb3dMYXllcihjb25zdCBB
CiAKICAgICBhZGp1c3RCbHVyUmFkaXVzKHRyYW5zZm9ybSk7CiAKLSAgICBhdXRvIGxheWVySW1h
Z2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVy
dGllcy0+bGF5ZXJTaXplKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gbGF5
ZXJJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoZXhwYW5kZWRJbnRTaXplKGxheWVySW1hZ2VQ
cm9wZXJ0aWVzLT5sYXllclNpemUpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBp
ZiAoIWxheWVySW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3ND
b250ZXh0R0xBTkdMRS5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyB2b2lkIHdpcGVBbHBoYUNoYW5uZWxGcm9t
UGl4ZWxzKGkKIAogT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIHsKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBm
b3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9y
bWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgUGl4ZWxCdWZm
ZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVk
LCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAg
ICAgYXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBnZXRJ
bnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm8uY3BwCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MTQsNyArNDE0LDcgQEAgRmxvYXRSZWN0IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6
cm91bgogICAgIHJldHVybiBDYWlybzo6U3RhdGU6OnJvdW5kVG9EZXZpY2VQaXhlbHMobV9wbGF0
Zm9ybUNvbnRleHQsIHJlY3QpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6
Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRl
eHQmKT4mJikKIHsKICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWly
by5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgcHVibGljOgogICAgIHZvaWQg
Y2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSBvdmVycmlkZTsKICAgICBJbnRSZWN0IGNs
aXBCb3VuZHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVm
ZmVyJiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGlwVG9EcmF3aW5n
Q29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNw
YWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKKyAgICB2
b2lkIGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4
dCYpPiYmKSBvdmVycmlkZTsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgdm9pZCBwYWludEZyYW1l
Rm9yTWVkaWEoTWVkaWFQbGF5ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSBvdmVy
cmlkZTsKICAgICBib29sIGNhblBhaW50RnJhbWVGb3JNZWRpYShjb25zdCBNZWRpYVBsYXllciYp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyb0JhY2tlbmQuY3BwCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg5LDE5ICs4OSwxOSBAQCB2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5k
OjpjbGlwVG9NYXNrCiAgICAgICAgIENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcigqZGVzdENvbnRl
eHQucGxhdGZvcm1Db250ZXh0KCksIGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIGRlc3RS
ZWN0KTsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6dHJhbnNmb3JtQ29sb3JT
cGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgRGVzdGluYXRpb25Db2xv
clNwYWNlIGRlc3RDb2xvclNwYWNlKQordm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6dHJh
bnNmb3JtQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHNyY0NvbG9yU3Bh
Y2UsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgZGVzdENvbG9yU3BhY2UpCiB7CiAgICAg
aWYgKHNyY0NvbG9yU3BhY2UgPT0gZGVzdENvbG9yU3BhY2UpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIC8vIG9ubHkgc1JHQiA8LT4gbGluZWFyUkdCIGFyZSBzdXBwb3J0ZWQgYXQgdGhlIG1vbWVu
dAotICAgIGlmICgoc3JjQ29sb3JTcGFjZSAhPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVh
clNSR0IgJiYgc3JjQ29sb3JTcGFjZSAhPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpCi0g
ICAgICAgIHx8IChkZXN0Q29sb3JTcGFjZSAhPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVh
clNSR0IgJiYgZGVzdENvbG9yU3BhY2UgIT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKSkK
KyAgICBpZiAoKHNyY0NvbG9yU3BhY2UgIT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJT
UkdCKCkgJiYgc3JjQ29sb3JTcGFjZSAhPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSkK
KyAgICAgICAgfHwgKGRlc3RDb2xvclNwYWNlICE9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGlu
ZWFyU1JHQigpICYmIGRlc3RDb2xvclNwYWNlICE9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9wYXJhbWV0ZXJzLmNvbG9yU3BhY2UgPSBk
ZXN0Q29sb3JTcGFjZTsKIAotICAgIGlmIChkZXN0Q29sb3JTcGFjZSA9PSBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OkxpbmVhclNSR0IpIHsKKyAgICBpZiAoZGVzdENvbG9yU3BhY2UgPT0gRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCkpIHsKICAgICAgICAgc3RhdGljIGNvbnN0IHN0
ZDo6YXJyYXk8dWludDhfdCwgMjU2PiBsaW5lYXJSZ2JMVVQgPSBbXSB7CiAgICAgICAgICAgICBz
dGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4gYXJyYXk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIEltYWdlQnVm
ZmVyQ2Fpcm9CYWNrZW5kOjp0cmFuc2Zvcm1DCiAgICAgICAgICAgICByZXR1cm4gYXJyYXk7CiAg
ICAgICAgIH0oKTsKICAgICAgICAgcGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKGxpbmVhclJn
YkxVVCk7Ci0gICAgfSBlbHNlIGlmIChkZXN0Q29sb3JTcGFjZSA9PSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IpIHsKKyAgICB9IGVsc2UgaWYgKGRlc3RDb2xvclNwYWNlID09IERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpKSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6OmFycmF5
PHVpbnQ4X3QsIDI1Nj4gZGV2aWNlUmdiTFVUPSBbXSB7CiAgICAgICAgICAgICBzdGQ6OmFycmF5
PHVpbnQ4X3QsIDI1Nj4gYXJyYXk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgMjU2OyBpKyspIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuaAkocmV2
aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGNsaXBUb01hc2soR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHRyYW5zZm9ybUNvbG9y
U3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIHNyY0NvbG9yU3BhY2UsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSBkZXN0Q29sb3JTcGFjZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB0cmFuc2Zvcm1Db2xv
clNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgc3JjQ29sb3JTcGFjZSwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBkZXN0Q29sb3JTcGFjZSkgb3ZlcnJpZGU7CiAKICAgICBT
dHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4g
cXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdCBvdmVycmlkZTsKICAgICBWZWN0b3I8
dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4g
cXVhbGl0eSkgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9Db2xvckNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAy
MDA2LCAyMDA3LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksMTMgKzI5LDE0IEBACiAjaWYgVVNFKENH
KQogCiAjaW5jbHVkZSAiQ29sb3JTcGFjZUNHLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xv
clNwYWNlLmgiCiAjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3Jh
cGhpY3NTUEkuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9M
b2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi9UaW55TFJV
Q2FjaGUuaD4KLSNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVGlueUxSVUNhY2hlLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY3JlYXRl
Q0dDb2xvcihjb25zdCBDb2xvciYpOwpAQCAtOTEsMzQgKzkyLDM4IEBAIENvbG9yOjpDb2xvcihD
R0NvbG9yUmVmIGNvbG9yLCBPcHRpb25TZXQKIHsKIH0KIAotc3RhdGljIFJldGFpblB0cjxDR0Nv
bG9yUmVmPiBjcmVhdGVDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3N0YXRpYyBzdGQ6OnBh
aXI8Q0dDb2xvclNwYWNlUmVmLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+PiBjb252ZXJ0VG9D
R0NvbXBhdGlibGVDb21wb25lbnRzKENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ29sb3JDb21wb25l
bnRzPGZsb2F0LCA0PiBjb21wb25lbnRzKQogewotICAgIGF1dG8gW2NvbG9yU3BhY2UsIGNvbXBv
bmVudHNdID0gY29sb3IuY29sb3JTcGFjZUFuZENvbXBvbmVudHMoKTsKLQotICAgIGF1dG8gY2dD
b2xvclNwYWNlID0gY2FjaGVkTnVsbGFibGVDR0NvbG9yU3BhY2UoY29sb3JTcGFjZSk7Ci0KICAg
ICAvLyBTb21lIENHIHBvcnRzIGRvbid0IHN1cHBvcnQgYWxsIHRoZSBjb2xvciBzcGFjZXMgcmVx
dWlyZWQgYW5kIHJldHVybgogICAgIC8vIG51bGxwdHIgZm9yIHVuc3VwcG9ydGVkIGNvbG9yIHNw
YWNlcy4gSW4gdGhvc2UgY2FzZXMsIHdlIGVhZ2VybHkgY29udmVydAogICAgIC8vIHRoZSBjb2xv
ciBpbnRvIGVpdGhlciBleHRlbmRlZCBzUkdCIG9yIG5vcm1hbCBzUkdCLCBpZiBleHRlbmRlZCBz
UkdCIGlzCi0gICAgLy8gbm90IHN1cHBvcnRlZCwgYmVmb3JlIGNyZWF0aW5nIHRoZSBDR0NvbG9y
UmVmLgorICAgIC8vIG5vdCBzdXBwb3J0ZWQuCisKKyAgICBhdXRvIGNnQ29sb3JTcGFjZSA9IGNh
Y2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpOwogICAgIGlmICghY2dDb2xvclNw
YWNlKSB7CiAjaWYgSEFWRShDT1JFX0dSQVBISUNTX0VYVEVOREVEX1NSR0JfQ09MT1JfU1BBQ0Up
Ci0gICAgICAgIGF1dG8gY29sb3JDb252ZXJ0ZWRUb0V4dGVuZGVkU1JHQkEgPSBjYWxsV2l0aENv
bG9yVHlwZShjb21wb25lbnRzLCBjb2xvclNwYWNlLCBbXSAoY29uc3QgYXV0byYgY29sb3IpIHsK
LSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0Q29sb3I8RXh0ZW5kZWRTUkdCQTxmbG9hdD4+KGNv
bG9yKTsKKyAgICAgICAgYXV0byBjb21wb25lbnRzQ29udmVydGVkVG9FeHRlbmRlZFNSR0JBID0g
Y2FsbFdpdGhDb2xvclR5cGUoY29tcG9uZW50cywgY29sb3JTcGFjZSwgW10gKGNvbnN0IGF1dG8m
IGNvbG9yKSB7CisgICAgICAgICAgICByZXR1cm4gYXNDb2xvckNvbXBvbmVudHMoY29udmVydENv
bG9yPEV4dGVuZGVkU1JHQkE8ZmxvYXQ+Pihjb2xvcikpOwogICAgICAgICB9KTsKLSAgICAgICAg
Y29tcG9uZW50cyA9IGFzQ29sb3JDb21wb25lbnRzKGNvbG9yQ29udmVydGVkVG9FeHRlbmRlZFNS
R0JBKTsKLSAgICAgICAgY2dDb2xvclNwYWNlID0gZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigp
OworICAgICAgICByZXR1cm4geyBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCksIGNvbXBvbmVu
dHNDb252ZXJ0ZWRUb0V4dGVuZGVkU1JHQkEgfTsKICNlbHNlCi0gICAgICAgIGF1dG8gY29sb3JD
b252ZXJ0ZWRUb1NSR0JBID0gY2FsbFdpdGhDb2xvclR5cGUoY29tcG9uZW50cywgY29sb3JTcGFj
ZSwgW10gKGNvbnN0IGF1dG8mIGNvbG9yKSB7Ci0gICAgICAgICAgICByZXR1cm4gY29udmVydENv
bG9yPFNSR0JBPGZsb2F0Pj4oY29sb3IpOworICAgICAgICBhdXRvIGNvbXBvbmVudHNDb252ZXJ0
ZWRUb1NSR0JBID0gY2FsbFdpdGhDb2xvclR5cGUoY29tcG9uZW50cywgY29sb3JTcGFjZSwgW10g
KGNvbnN0IGF1dG8mIGNvbG9yKSB7CisgICAgICAgICAgICByZXR1cm4gYXNDb2xvckNvbXBvbmVu
dHMoY29udmVydENvbG9yPFNSR0JBPGZsb2F0Pj4oY29sb3IpKTsKICAgICAgICAgfSk7Ci0gICAg
ICAgIGNvbXBvbmVudHMgPSBhc0NvbG9yQ29tcG9uZW50cyhjb2xvckNvbnZlcnRlZFRvU1JHQkEp
OwotICAgICAgICBjZ0NvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOworICAgICAgICBy
ZXR1cm4geyBzUkdCQ29sb3JTcGFjZVJlZigpLCBjb21wb25lbnRzQ29udmVydGVkVG9TUkdCQSB9
OwogI2VuZGlmCiAgICAgfQogCi0gICAgYXV0byBbciwgZywgYiwgYV0gPSBjb21wb25lbnRzOwot
ICAgIENHRmxvYXQgY2dGbG9hdENvbXBvbmVudHNbNF0geyByLCBnLCBiLCBhIH07CisgICAgcmV0
dXJuIHsgY2dDb2xvclNwYWNlLCBjb21wb25lbnRzIH07Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8
Q0dDb2xvclJlZj4gY3JlYXRlQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCit7CisgICAgYXV0
byBbY29sb3JTcGFjZSwgY29tcG9uZW50c10gPSBjb2xvci5jb2xvclNwYWNlQW5kQ29tcG9uZW50
cygpOworICAgIGF1dG8gW2NnQ29sb3JTcGFjZSwgY2dDb21wYXRpYmxlQ29tcG9uZW50c10gPSBj
b252ZXJ0VG9DR0NvbXBhdGlibGVDb21wb25lbnRzKGNvbG9yU3BhY2UsIGNvbXBvbmVudHMpOwor
ICAgIAorICAgIGF1dG8gW2MxLCBjMiwgYzMsIGM0XSA9IGNnQ29tcGF0aWJsZUNvbXBvbmVudHM7
CisgICAgQ0dGbG9hdCBjZ0Zsb2F0Q29tcG9uZW50c1s0XSB7IGMxLCBjMiwgYzMsIGM0IH07CiAK
ICAgICByZXR1cm4gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKGNnQ29sb3JTcGFjZSwgY2dGbG9hdENv
bXBvbmVudHMpKTsKIH0KQEAgLTE2MSw2ICsxNjYsMjQgQEAgQ0dDb2xvclJlZiBjYWNoZWRDR0Nv
bG9yKGNvbnN0IENvbG9yJiBjbwogICAgIHJldHVybiBjYWNoZS5nZXQoKS5nZXQoY29sb3IpLmdl
dCgpOwogfQogCitDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IHBsYXRmb3JtQ29udmVydENvbG9y
Q29tcG9uZW50cyhDb2xvclNwYWNlIGlucHV0Q29sb3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZs
b2F0LCA0PiBpbnB1dENvbG9yQ29tcG9uZW50cywgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiBvdXRwdXRDb2xvclNwYWNlKQoreworICAgIC8vIEZJWE1FOiBJbnZlc3RpZ2F0ZSBvcHRpbWl6
aW5nIHRoaXMgdG8gdXNlIHRoZSBidWlsdGluIGNvbG9yIGNvbnZlcnNpb24gY29kZSBmb3Igc3Vw
cG9ydGVkIGNvbG9yIHNwYWNlcy4KKworICAgIGF1dG8gW2NnSW5wdXRDb2xvclNwYWNlLCBjZ0Nv
bXBhdGlibGVDb21wb25lbnRzXSA9IGNvbnZlcnRUb0NHQ29tcGF0aWJsZUNvbXBvbmVudHMoaW5w
dXRDb2xvclNwYWNlLCBpbnB1dENvbG9yQ29tcG9uZW50cyk7CisgICAgaWYgKGNnSW5wdXRDb2xv
clNwYWNlID09IG91dHB1dENvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCkpCisgICAgICAg
IHJldHVybiBjZ0NvbXBhdGlibGVDb21wb25lbnRzOworCisgICAgYXV0byBbYzEsIGMyLCBjMywg
YzRdID0gY2dDb21wYXRpYmxlQ29tcG9uZW50czsKKyAgICBDR0Zsb2F0IHNvdXJjZUNvbXBvbmVu
dHNbNF0geyBjMSwgYzIsIGMzLCBjNCB9OworICAgIENHRmxvYXQgZGVzdGluYXRpb25Db21wb25l
bnRzWzRdIHsgfTsKKworICAgIGF1dG8gdHJhbnNmb3JtID0gYWRvcHRDRihDR0NvbG9yVHJhbnNm
b3JtQ3JlYXRlKG91dHB1dENvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCksIG51bGxwdHIp
KTsKKyAgICBhdXRvIHJlc3VsdCA9IENHQ29sb3JUcmFuc2Zvcm1Db252ZXJ0Q29sb3JDb21wb25l
bnRzKHRyYW5zZm9ybS5nZXQoKSwgY2dJbnB1dENvbG9yU3BhY2UsIGtDR1JlbmRlcmluZ0ludGVu
dERlZmF1bHQsIHNvdXJjZUNvbXBvbmVudHMsIGRlc3RpbmF0aW9uQ29tcG9uZW50cyk7CisgICAg
QVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8
ZmxvYXQ+KGRlc3RpbmF0aW9uQ29tcG9uZW50c1swXSksIHN0YXRpY19jYXN0PGZsb2F0PihkZXN0
aW5hdGlvbkNvbXBvbmVudHNbMV0pLCBzdGF0aWNfY2FzdDxmbG9hdD4oZGVzdGluYXRpb25Db21w
b25lbnRzWzJdKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRlc3RpbmF0aW9uQ29tcG9uZW50c1szXSkg
fTsKK30KKwogfQogCiAjZW5kaWYgLy8gVVNFKENHKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgJKHJldmlzaW9uIDI3Nzkz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTksMjMgKzExOSw0IEBAIHN0YXRpYyBpbmxpbmUgQ0dDb2xv
clNwYWNlUmVmIGNhY2hlZE51bGwKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotLy8gTk9URTog
U2luY2UgdGhpcyBmdW5jdGlvbiBpcyBmb3IgKmRlc3RpbmF0aW9uKiBjb2xvciBzcGFjZXMgd2hv
c2UgY2FsbGVycyBhbHdheXMgZXhwZWN0IGEgbm9uLW51bGwgY29sb3Igc3BhY2UsIHRoaXMgZnVu
Y3Rpb24gaXMgZ3VhcmFudGVlZCB0byByZXR1cm4gbm9uLW51bGwsIHVubGlrZSBjYWNoZWROdWxs
YWJsZUNHQ29sb3JTcGFjZSgpLgotc3RhdGljIGlubGluZSBDR0NvbG9yU3BhY2VSZWYgY2FjaGVk
Q0dDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKQotewotICAgIHN3
aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
OgotICAgICAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLSNpZiBFTkFCTEUoREVTVElO
QVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OkxpbmVhclNSR0I6Ci0gICAgICAgIHJldHVybiBsaW5lYXJTUkdCQ29sb3JTcGFjZVJl
ZigpOwotI2VuZGlmCi0jaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlf
UDMpCi0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMzoKLSAgICAgICAg
cmV0dXJuIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKTsKLSNlbmRpZgotICAgIH0KLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLX0KLQog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250
ZXh0R0xDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MzIsNyArNTMyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cGFpbnRUb0NhbgogICAgIH0pKTsKIAogICAgIGF1dG8gaW1hZ2VTaXplID0gcGl4ZWxC
dWZmZXIuc2l6ZSgpOwotICAgIGF1dG8gaW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKGFkb3B0
Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4
LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBjYWNoZWRDR0NvbG9yU3BhY2UocGl4ZWxCdWZm
ZXIuZm9ybWF0KCkuY29sb3JTcGFjZSksIGJpdG1hcEluZm8sIGRhdGFQcm92aWRlci5nZXQoKSwg
MCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKSk7CisgICAgYXV0byBpbWFnZSA9
IE5hdGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0
aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCksIHBp
eGVsQnVmZmVyLmZvcm1hdCgpLmNvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCksIGJpdG1h
cEluZm8sIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERl
ZmF1bHQpKSk7CiAKICAgICAvLyBDU1Mgc3R5bGluZyBtYXkgY2F1c2UgdGhlIGNhbnZhcydzIGNv
bnRlbnQgdG8gYmUgcmVzaXplZCBvbgogICAgIC8vIHRoZSBwYWdlLiBHbyBiYWNrIHRvIHRoZSBD
YW52YXMgdG8gZmlndXJlIG91dCB0aGUgY29ycmVjdApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHAJKHJldmlzaW9u
IDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFj
ZVBvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBIQVZFKElP
U1VSRkFDRSkKIAorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGlj
cy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtNTksNyArNjAsNyBAQCBJ
T1N1cmZhY2VQb29sJiBJT1N1cmZhY2VQb29sOjpzaGFyZWRQb29sCiAgICAgcmV0dXJuIHBvb2w7
CiB9CiAKLXN0YXRpYyBib29sIHN1cmZhY2VNYXRjaGVzUGFyYW1ldGVycyhJT1N1cmZhY2UmIHN1
cmZhY2UsIEludFNpemUgcmVxdWVzdGVkU2l6ZSwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2Us
IElPU3VyZmFjZTo6Rm9ybWF0IGZvcm1hdCkKK3N0YXRpYyBib29sIHN1cmZhY2VNYXRjaGVzUGFy
YW1ldGVycyhJT1N1cmZhY2UmIHN1cmZhY2UsIEludFNpemUgcmVxdWVzdGVkU2l6ZSwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBJT1N1cmZhY2U6OkZvcm1hdCBmb3Jt
YXQpCiB7CiAgICAgaWYgKGZvcm1hdCAhPSBzdXJmYWNlLmZvcm1hdCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0xMDIsNyArMTAzLDcgQEAgdm9pZCBJT1N1cmZhY2VQb29sOjpkaWRVc2VT
dXJmYWNlT2ZTaXplKAogICAgIG1fc2l6ZXNJblBydW5lT3JkZXIuYXBwZW5kKHNpemUpOwogfQog
Ci1zdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2VQb29sOjp0YWtlU3VyZmFjZShJ
bnRTaXplIHNpemUsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlLCBJT1N1cmZhY2U6OkZvcm1h
dCBmb3JtYXQpCitzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2VQb29sOjp0YWtl
U3VyZmFjZShJbnRTaXplIHNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JT
cGFjZSwgSU9TdXJmYWNlOjpGb3JtYXQgZm9ybWF0KQogewogICAgIExvY2tlciBsb2NrZXIgeyBt
X2xvY2sgfTsKICAgICBDYWNoZWRTdXJmYWNlTWFwOjppdGVyYXRvciBtYXBJdGVyID0gbV9jYWNo
ZWRTdXJmYWNlcy5maW5kKHNpemUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuaAkocmV2aXNpb24gMjc3OTM5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSw2ICszOSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgRGVzdGluYXRhdGlvbkNvbG9yU3BhY2U7CisKIGNsYXNzIElPU3VyZmFjZVBvb2wgewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKElPU3VyZmFjZVBvb2wpOwogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwpAQCAtNDcsNyArNDksNyBAQCBjbGFzcyBJT1N1cmZhY2VQb29sIHsKIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSU9TdXJmYWNlUG9vbCYgc2hhcmVkUG9vbCgp
OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gdGFrZVN1cmZhY2UoSW50U2l6ZSwg
Q0dDb2xvclNwYWNlUmVmLCBJT1N1cmZhY2U6OkZvcm1hdCk7CisgICAgc3RkOjp1bmlxdWVfcHRy
PElPU3VyZmFjZT4gdGFrZVN1cmZhY2UoSW50U2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiwgSU9TdXJmYWNlOjpGb3JtYXQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkU3Vy
ZmFjZShzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPik7CiAKICAgICB2b2lkIGRpc2NhcmRBbGxT
dXJmYWNlcygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJDR0JhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAkocmV2aXNpb24gMjc3OTM5
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0Jh
Y2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzQsNyArMTc0LDcgQEAgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IEltYWdlQnVmZmVyQ0dCYWNrZQogICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHRo
aXMgYmUgdXNpbmcgdGhlIHNhbWUgbG9naWMgYXMgSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRz8KIAog
ICAgICAgICAvLyBKUEVHcyBkb24ndCBoYXZlIGFuIGFscGhhIGNoYW5uZWwsIHNvIHdlIGhhdmUg
dG8gbWFudWFsbHkgY29tcG9zaXRlIG9uIHRvcCBvZiBibGFjay4KLSAgICAgICAgUGl4ZWxCdWZm
ZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwg
UGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICAg
ICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJl
bXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSB9OwogICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gZ2V0UGl4ZWxCdWZmZXIoZm9ybWF0
LCBsb2dpY2FsUmVjdCgpKTsKICAgICAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtMTkyLDcgKzE5Miw3IEBAIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBJbWFnZUJ1ZmZlckNHQmFja2UKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
ICAgIGF1dG8gaW1hZ2VTaXplID0gcGl4ZWxCdWZmZXItPnNpemUoKTsKLSAgICAgICAgcmV0dXJu
IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdo
dCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBjYWNoZWRDR0NvbG9yU3BhY2UocGl4
ZWxCdWZmZXItPmZvcm1hdCgpLmNvbG9yU3BhY2UpLCBrQ0dCaXRtYXBCeXRlT3JkZXJEZWZhdWx0
IHwga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxz
ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOworICAgICAgICByZXR1cm4gYWRvcHRDRihD
R0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMy
LCA0ICogaW1hZ2VTaXplLndpZHRoKCksIHBpeGVsQnVmZmVyLT5mb3JtYXQoKS5jb2xvclNwYWNl
LnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBrQ0dCaXRtYXBCeXRlT3JkZXJEZWZhdWx0IHwga0NHSW1h
Z2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVu
ZGVyaW5nSW50ZW50RGVmYXVsdCkpOwogICAgIH0KIAogICAgIGlmIChyZXNvbHV0aW9uU2NhbGUo
KSA9PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246Olllcykg
ewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJD
R0JpdG1hcEJhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcAkocmV2aXNpb24gMjc3
OTM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJD
R0JpdG1hcEJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIHNpemVf
dCBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y2FsY3UKICAgICByZXR1cm4gSW1hZ2VCdWZm
ZXJCYWNrZW5kOjpjYWxjdWxhdGVNZW1vcnlDb3N0KGJhY2tlbmRTaXplLCBjYWxjdWxhdGVCeXRl
c1BlclJvdyhiYWNrZW5kU2l6ZSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJD
R0JpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3Qg
UGFyYW1ldGVycyYgcGFyYW1ldGVycywgQ0dDb2xvclNwYWNlUmVmIGNnQ29sb3JTcGFjZSwgY29u
c3QgSG9zdFdpbmRvdyopCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tl
bmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYg
cGFyYW1ldGVycywgY29uc3QgSG9zdFdpbmRvdyopCiB7CiAgICAgQVNTRVJUKHBhcmFtZXRlcnMu
cGl4ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKIApAQCAtODEsNyArODEsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlCiAgICAgc2l6ZV90IG51bUJ5
dGVzID0gYmFja2VuZFNpemUuaGVpZ2h0KCkgKiBieXRlc1BlclJvdzsKICAgICB2ZXJpZnlJbWFn
ZUJ1ZmZlcklzQmlnRW5vdWdoKGRhdGEsIG51bUJ5dGVzKTsKIAotICAgIGF1dG8gY2dDb250ZXh0
ID0gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoZGF0YSwgYmFja2VuZFNpemUud2lkdGgo
KSwgYmFja2VuZFNpemUuaGVpZ2h0KCksIDgsIGJ5dGVzUGVyUm93LCBjZ0NvbG9yU3BhY2UsIGtD
R0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3Qp
KTsKKyAgICBhdXRvIGNnQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGRh
dGEsIGJhY2tlbmRTaXplLndpZHRoKCksIGJhY2tlbmRTaXplLmhlaWdodCgpLCA4LCBieXRlc1Bl
clJvdywgcGFyYW1ldGVycy5jb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBrQ0dJbWFn
ZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KSk7CiAg
ICAgaWYgKCFjZ0NvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC05NiwxNSAr
OTYsMTQgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZQogCiBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRt
YXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIGlmIChhdXRvIGNnQ29sb3JTcGFjZSA9IGNv
bnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkgPyBjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0KSA6
IG51bGxwdHIpCi0gICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3Jl
YXRlKHBhcmFtZXRlcnMsIGNnQ29sb3JTcGFjZS5nZXQoKSwgbnVsbHB0cik7CisgICAgaWYgKGF1
dG8gY2dDb2xvclNwYWNlID0gY29udGV4dC5oYXNQbGF0Zm9ybUNvbnRleHQoKSA/IGNvbnRleHRD
b2xvclNwYWNlKGNvbnRleHQpIDogbnVsbHB0cikgeworICAgICAgICBhdXRvIG92ZXJyaWRlUGFy
YW1ldGVycyA9IHBhcmFtZXRlcnM7CisgICAgICAgIG92ZXJyaWRlUGFyYW1ldGVycy5jb2xvclNw
YWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlIHsgY2dDb2xvclNwYWNlIH07CiAKLSAgICByZXR1
cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBudWxscHRy
KTsKLX0KKyAgICAgICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUo
b3ZlcnJpZGVQYXJhbWV0ZXJzLCBudWxscHRyKTsKKyAgICB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNy
ZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KiBob3N0
V2luZG93KQotewotICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRl
KHBhcmFtZXRlcnMsIGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpLCBo
b3N0V2luZG93KTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0
ZShwYXJhbWV0ZXJzLCBudWxscHRyKTsKIH0KIAogSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6
OkltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMs
IHZvaWQqIGRhdGEsIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4mJiBkYXRhUHJvdmlkZXIs
IHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYgY29udGV4dCkKQEAgLTE0Niw3ICsx
NDUsNyBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyQ0dCaXRtYXBCCiAgICAgICAg
IGF1dG8gYmFja2VuZFNpemUgPSB0aGlzLT5iYWNrZW5kU2l6ZSgpOwogICAgICAgICByZXR1cm4g
TmF0aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHSW1hZ2VDcmVhdGUoCiAgICAgICAgICAgICBi
YWNrZW5kU2l6ZS53aWR0aCgpLCBiYWNrZW5kU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIGJ5dGVzUGVy
Um93KCksCi0gICAgICAgICAgICBjYWNoZWRDR0NvbG9yU3BhY2UoY29sb3JTcGFjZSgpKSwga0NH
SW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCwg
bV9kYXRhUHJvdmlkZXIuZ2V0KCksCisgICAgICAgICAgICBjb2xvclNwYWNlKCkucGxhdGZvcm1D
b2xvclNwYWNlKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBC
eXRlT3JkZXIzMkhvc3QsIG1fZGF0YVByb3ZpZGVyLmdldCgpLAogICAgICAgICAgICAgMCwgdHJ1
ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDR0JpdG1hcEJhY2tlbmQuaAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzksOCArMzksOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEludFNpemUg
Y2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKGNvbnN0IFBhcmFtZXRlcnMmKTsKICAgICBzdGF0aWMg
c2l6ZV90IGNhbGN1bGF0ZU1lbW9yeUNvc3QoY29uc3QgUGFyYW1ldGVycyYpOwogCi0gICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gY3JlYXRlKGNv
bnN0IFBhcmFtZXRlcnMmLCBDR0NvbG9yU3BhY2VSZWYsIGNvbnN0IEhvc3RXaW5kb3cqKTsKICAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBjcmVh
dGUoY29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IEhvc3RXaW5kb3cqKTsKKworICAgIC8vIEZJWE1F
OiBSZW5hbWUgdG8gY3JlYXRlVXNpbmdDb2xvclNwYWNlT2ZHcmFwaGljc0NvbnRleHQoKSAob3Ig
c29tZXRoaW5nIGxpa2UgdGhhdCkuCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlckNHQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBHcmFw
aGljc0NvbnRleHQmKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IG92
ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCShyZXZp
c2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSwxMyArODEs
MTMgQEAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gSW1hZ2VCdWZmZXJJTwogICAgIHJldHVy
biBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29udGV4dENvbG9yU3BhY2UoY29udGV4dCk7CiB9CiAK
LXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIENH
Q29sb3JTcGFjZVJlZiBjZ0NvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cp
CitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBj
b25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQogewogICAgIEludFNpemUgYmFja2VuZFNpemUg
PSBjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUocGFyYW1ldGVycyk7CiAgICAgaWYgKGJhY2tlbmRT
aXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHN1cmZh
Y2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShiYWNrZW5kU2l6ZSwgYmFja2VuZFNpemUsIGNnQ29sb3JT
cGFjZSwgSU9TdXJmYWNlOjpmb3JtYXRGb3JQaXhlbEZvcm1hdChwYXJhbWV0ZXJzLnBpeGVsRm9y
bWF0KSk7CisgICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoYmFja2VuZFNpemUs
IGJhY2tlbmRTaXplLCBwYXJhbWV0ZXJzLmNvbG9yU3BhY2UsIElPU3VyZmFjZTo6Zm9ybWF0Rm9y
UGl4ZWxGb3JtYXQocGFyYW1ldGVycy5waXhlbEZvcm1hdCkpOwogICAgIGlmICghc3VyZmFjZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTEwMiwxNSArMTAyLDE0IEBAIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2sKIAogc3RkOjp1bmlxdWVfcHRyPEltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVh
dGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0KQogewotICAgIGlmIChhdXRvIGNnQ29sb3JTcGFjZSA9IGNvbnRleHQuaGFzUGxhdGZv
cm1Db250ZXh0KCkgPyBjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0KSA6IG51bGxwdHIpCi0gICAg
ICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJz
LCBjZ0NvbG9yU3BhY2UuZ2V0KCksIG51bGxwdHIpOworICAgIGlmIChhdXRvIGNnQ29sb3JTcGFj
ZSA9IGNvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkgPyBjb250ZXh0Q29sb3JTcGFjZShjb250
ZXh0KSA6IG51bGxwdHIpIHsKKyAgICAgICAgYXV0byBvdmVycmlkZVBhcmFtZXRlcnMgPSBwYXJh
bWV0ZXJzOworICAgICAgICBvdmVycmlkZVBhcmFtZXRlcnMuY29sb3JTcGFjZSA9IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSB7IGNnQ29sb3JTcGFjZSB9OwogCi0gICAgcmV0dXJuIEltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIG51bGxwdHIpOwotfQorICAgICAg
ICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUob3ZlcnJpZGVQYXJh
bWV0ZXJzLCBudWxscHRyKTsKKyAgICB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklP
U3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0
IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCi17
Ci0gICAgcmV0dXJuIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRl
cnMsIGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpLCBob3N0V2luZG93
KTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUocGFyYW1l
dGVycywgbnVsbHB0cik7CiB9CiAKIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6SW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIHN0ZDo6
dW5pcXVlX3B0cjxJT1N1cmZhY2U+JiYgc3VyZmFjZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZC5oCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAkod29ya2luZyBj
b3B5KQpAQCAtNDIsOCArNDIsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHNpemVfdCBjYWxjdWxh
dGVNZW1vcnlDb3N0KGNvbnN0IFBhcmFtZXRlcnMmKTsKICAgICBzdGF0aWMgc2l6ZV90IGNhbGN1
bGF0ZUV4dGVybmFsTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJzJik7CiAgICAgCi0gICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShj
b25zdCBQYXJhbWV0ZXJzJiwgQ0dDb2xvclNwYWNlUmVmLCBjb25zdCBIb3N0V2luZG93Kik7CiAg
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IGNy
ZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgSG9zdFdpbmRvdyopOworICAgIC8vIEZJWE1F
OiBSZW5hbWUgdG8gY3JlYXRlVXNpbmdDb2xvclNwYWNlT2ZHcmFwaGljc0NvbnRleHQoKSAob3Ig
c29tZXRoaW5nIGxpa2UgdGhhdCkuCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgR3Jh
cGhpY3NDb250ZXh0Jik7CiAKICAgICBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQoY29uc3Qg
UGFyYW1ldGVycyYsIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+JiYpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJVdGlsaXRpZXNDRy5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzcsNyArMTc3LDcgQEAgc3RhdGljIGJvb2wgZW5jb2RlKGNvbnN0IFBpeGVs
QnVmZmVyJiBzbwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8gaW1hZ2VTaXpl
ID0gc291cmNlLnNpemUoKTsKLSAgICBhdXRvIGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRl
KGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCA0ICogaW1hZ2VT
aXplLndpZHRoKCksIGNhY2hlZENHQ29sb3JTcGFjZShzb3VyY2UuZm9ybWF0KCkuY29sb3JTcGFj
ZSksIGtDR0JpdG1hcEJ5dGVPcmRlckRlZmF1bHQgfCBkYXRhQWxwaGFJbmZvLCBkYXRhUHJvdmlk
ZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CisgICAgYXV0
byBpbWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VT
aXplLmhlaWdodCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBzb3VyY2UuZm9ybWF0
KCkuY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwga0NHQml0bWFwQnl0ZU9yZGVyRGVm
YXVsdCB8IGRhdGFBbHBoYUluZm8sIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1Jl
bmRlcmluZ0ludGVudERlZmF1bHQpKTsKIAogICAgIHJldHVybiBlbmNvZGUoaW1hZ2UuZ2V0KCks
IGRlc3RpbmF0aW9uVVRJLmdldCgpLCBxdWFsaXR5LCBmdW5jdGlvbik7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0JKHJldmlzaW9uIDI3NzkzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTU3MSw3ICs1NzEsNyBAQCBib29s
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzCiBib29sIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjphbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpCiB7CiAgICAg
QVNTRVJUKCFnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLmlzRW1wdHkoKSk7Ci0gICAgYXV0
byBiYWNraW5nID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGUoZ2V0SW50ZXJuYWxGcmFtZWJ1
ZmZlclNpemUoKSwgV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgYXV0byBiYWNr
aW5nID0gSU9TdXJmYWNlOjpjcmVhdGUoZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgIGlmICghYmFja2luZykKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9JT1N1cmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDkgKzI3LDEwIEBACiAKICNpZiBIQVZFKElPU1VSRkFDRSkKIAorI2luY2x1ZGUgIkRl
c3RpbmF0aW9uQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlIDxv
YmpjL29iamMuaD4KICNpbmNsdWRlIDxwYWwvc3BpL2NvY29hL0lPU3VyZmFjZVNQSS5oPgotI2lu
Y2x1ZGUgIkludFNpemUuaCIKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9S
TShNQUNDQVRBTFlTVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQogI2RlZmlu
ZSBIQVZFX0lPU1VSRkFDRV9SR0IxMCAxCkBAIC00NiwxMCArNDcsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEhvc3RXaW5kb3c7Ci0gICAg
Ci0jaWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKIGNsYXNzIEltYWdlQnVm
ZmVyOwotI2VuZGlmCiAKIGVudW0gY2xhc3MgUGl4ZWxGb3JtYXQgOiB1aW50OF90OwogZW51bSBj
bGFzcyBWb2xhdGlsaXR5U3RhdGUgOiB1aW50OF90OwpAQCAtMTAxLDEwICs5OSwxMCBAQCBwdWJs
aWM6CiAgICAgICAgIHVpbnQzMl90IG1fZmxhZ3M7CiAgICAgfTsKIAotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGUoSW50U2l6ZSwgQ0dD
b2xvclNwYWNlUmVmLCBGb3JtYXQgPSBGb3JtYXQ6OkJHUkEpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGUoSW50U2l6ZSwgSW50U2l6
ZSBjb250ZXh0U2l6ZSwgQ0dDb2xvclNwYWNlUmVmLCBGb3JtYXQgPSBGb3JtYXQ6OkJHUkEpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVh
dGVGcm9tU2VuZFJpZ2h0KGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYmLCBDR0NvbG9yU3BhY2VS
ZWYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNl
PiBjcmVhdGVGcm9tU3VyZmFjZShJT1N1cmZhY2VSZWYsIENHQ29sb3JTcGFjZVJlZik7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZShJ
bnRTaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGb3JtYXQgPSBGb3JtYXQ6OkJH
UkEpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNl
PiBjcmVhdGUoSW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiwgRm9ybWF0ID0gRm9ybWF0OjpCR1JBKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlRnJvbVNlbmRSaWdodChjb25z
dCBXVEY6Ok1hY2hTZW5kUmlnaHQmJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0
ZUZyb21TdXJmYWNlKElPU3VyZmFjZVJlZiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNy
ZWF0ZUZyb21JbWFnZShDR0ltYWdlUmVmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlRnJvbVBpeGVsQnVmZmVyKENWUGl4ZWxCdWZm
ZXJSZWYpOwogICAgIApAQCAtMTQ2LDcgKzE0NCw3IEBAIHB1YmxpYzoKICAgICBJbnRTaXplIHNp
emUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICBzaXplX3QgdG90YWxCeXRlcygpIGNv
bnN0IHsgcmV0dXJuIG1fdG90YWxCeXRlczsgfQogCi0gICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9y
U3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yU3BhY2UuZ2V0KCk7IH0KKyAgICBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2NvbG9y
U3BhY2U7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBGb3JtYXQgZm9ybWF0KCkgY29uc3Q7CiAgICAg
V0VCQ09SRV9FWFBPUlQgSU9TdXJmYWNlSUQgc3VyZmFjZUlEKCkgY29uc3Q7CiAgICAgc2l6ZV90
IGJ5dGVzUGVyUm93KCkgY29uc3Q7CkBAIC0xNjksMTQgKzE2NywxNCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBtaWdyYXRlQ29sb3JTcGFjZVRvUHJvcGVydGllcygpOwogCiBwcml2YXRlOgotICAgIElP
U3VyZmFjZShJbnRTaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBDR0NvbG9yU3BhY2VSZWYsIEZv
cm1hdCwgYm9vbCYgc3VjY2Vzcyk7Ci0gICAgSU9TdXJmYWNlKElPU3VyZmFjZVJlZiwgQ0dDb2xv
clNwYWNlUmVmKTsKKyAgICBJT1N1cmZhY2UoSW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwg
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRm9ybWF0LCBib29sJiBzdWNjZXNzKTsKKyAg
ICBJT1N1cmZhY2UoSU9TdXJmYWNlUmVmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsK
IAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBzdXJmYWNlRnJvbVBvb2wo
SW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xvclNwYWNlUmVmLCBGb3JtYXQpOwor
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBzdXJmYWNlRnJvbVBvb2woSW50
U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwg
Rm9ybWF0KTsKICAgICBJbnRTaXplIGNvbnRleHRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jb250
ZXh0U2l6ZTsgfQogICAgIHZvaWQgc2V0Q29udGV4dFNpemUoSW50U2l6ZSk7CiAKLSAgICBSZXRh
aW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBtX2NvbG9yU3BhY2U7CisgICAgRGVzdGluYXRpb25Db2xv
clNwYWNlIG1fY29sb3JTcGFjZTsKICAgICBJbnRTaXplIG1fc2l6ZTsKICAgICBJbnRTaXplIG1f
Y29udGV4dFNpemU7CiAgICAgc2l6ZV90IG1fdG90YWxCeXRlczsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0JKHJldmlz
aW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lP
U3VyZmFjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJJT1N1cmZhY2UuaCIKIAotI2ltcG9ydCAiQ29yZVZpZGVvU29mdExp
bmsuaCIKKyNpbXBvcnQgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2ltcG9ydCAiR3JhcGhp
Y3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMLmgiCiAjaW1wb3J0ICJI
b3N0V2luZG93LmgiCkBAIC00MSw5ICs0MSwxMSBAQAogI2ltcG9ydCA8d3RmL01hdGhFeHRyYXMu
aD4KICNpbXBvcnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAorI2ltcG9ydCAiQ29yZVZpZGVv
U29mdExpbmsuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgc3RkOjp1bmlxdWVf
cHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpzdXJmYWNlRnJvbVBvb2woSW50U2l6ZSBzaXplLCBJ
bnRTaXplIGNvbnRleHRTaXplLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwgRm9ybWF0IHBp
eGVsRm9ybWF0KQoraW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6
c3VyZmFjZUZyb21Qb29sKEludFNpemUgc2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGb3JtYXQgcGl4ZWxGb3JtYXQpCiB7
CiAgICAgYXV0byBjYWNoZWRTdXJmYWNlID0gSU9TdXJmYWNlUG9vbDo6c2hhcmVkUG9vbCgpLnRh
a2VTdXJmYWNlKHNpemUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKICAgICBpZiAoIWNhY2hl
ZFN1cmZhY2UpCkBAIC01MywxMiArNTUsMTIgQEAgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxJT1N1
cmZhY2U+IElPU3VyZgogICAgIHJldHVybiBjYWNoZWRTdXJmYWNlOwogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZShJbnRTaXplIHNpemUsIENHQ29sb3JT
cGFjZVJlZiBjb2xvclNwYWNlLCBGb3JtYXQgcGl4ZWxGb3JtYXQpCitzdGQ6OnVuaXF1ZV9wdHI8
SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZShJbnRTaXplIHNpemUsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgRm9ybWF0IHBpeGVsRm9ybWF0KQogewogICAgIHJl
dHVybiBJT1N1cmZhY2U6OmNyZWF0ZShzaXplLCBzaXplLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1h
dCk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6Y3JlYXRlKElu
dFNpemUgc2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3Bh
Y2UsIEZvcm1hdCBwaXhlbEZvcm1hdCkKK3N0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3Vy
ZmFjZTo6Y3JlYXRlKEludFNpemUgc2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGb3JtYXQgcGl4ZWxGb3JtYXQpCiB7CiAg
ICAgaWYgKGF1dG8gY2FjaGVkU3VyZmFjZSA9IHN1cmZhY2VGcm9tUG9vbChzaXplLCBjb250ZXh0
U2l6ZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpKSB7CiAgICAgICAgIExPR19XSVRIX1NUUkVB
TShJT1N1cmZhY2UsIHN0cmVhbSA8PCAiSU9TdXJmYWNlOjpjcmVhdGUgdG9vayBmcm9tIHBvb2w6
ICIgPDwgKmNhY2hlZFN1cmZhY2UpOwpAQCAtNzUsMTMgKzc3LDEzIEBAIHN0ZDo6dW5pcXVlX3B0
cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6Y3IKICAgICByZXR1cm4gc3VyZmFjZTsKIH0KIAotc3Rk
Ojp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KGNv
bnN0IE1hY2hTZW5kUmlnaHQmJiBzZW5kUmlnaHQsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNl
KQorc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJp
Z2h0KGNvbnN0IE1hY2hTZW5kUmlnaHQmJiBzZW5kUmlnaHQsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgY29sb3JTcGFjZSkKIHsKICAgICBhdXRvIHN1cmZhY2UgPSBhZG9wdENGKElPU3Vy
ZmFjZUxvb2t1cEZyb21NYWNoUG9ydChzZW5kUmlnaHQuc2VuZFJpZ2h0KCkpKTsKICAgICByZXR1
cm4gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU3VyZmFjZShzdXJmYWNlLmdldCgpLCBjb2xvclNwYWNl
KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGVGcm9t
U3VyZmFjZShJT1N1cmZhY2VSZWYgc3VyZmFjZSwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2Up
CitzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TdXJmYWNl
KElPU3VyZmFjZVJlZiBzdXJmYWNlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9y
U3BhY2UpCiB7CiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+KG5ldyBJT1N1
cmZhY2Uoc3VyZmFjZSwgY29sb3JTcGFjZSkpOwogfQpAQCAtOTQsNyArOTYsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyCiAgICAgc2l6ZV90IHdpZHRoID0gQ0dJ
bWFnZUdldFdpZHRoKGltYWdlKTsKICAgICBzaXplX3QgaGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdo
dChpbWFnZSk7CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShJbnRTaXpl
KHdpZHRoLCBoZWlnaHQpLCBDR0ltYWdlR2V0Q29sb3JTcGFjZShpbWFnZSkpOworICAgIGF1dG8g
c3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKEludFNpemUod2lkdGgsIGhlaWdodCksIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSB7IENHSW1hZ2VHZXRDb2xvclNwYWNlKGltYWdlKSB9KTsKICAgICBp
ZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8gc3VyZmFjZUNv
bnRleHQgPSBzdXJmYWNlLT5lbnN1cmVQbGF0Zm9ybUNvbnRleHQoKTsKQEAgLTExNiw3ICsxMTgs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyCiAgICAgaWYgKCFj
b2xvclNwYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBjcmVhdGVG
cm9tU3VyZmFjZShzdXJmYWNlLCBjb2xvclNwYWNlKTsKKyAgICByZXR1cm4gY3JlYXRlRnJvbVN1
cmZhY2Uoc3VyZmFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIHsgY29sb3JTcGFjZSB9KTsKIH0K
IAogdm9pZCBJT1N1cmZhY2U6Om1vdmVUb1Bvb2woc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4m
JiBzdXJmYWNlKQpAQCAtMTk2LDcgKzE5OCw3IEBAIHN0YXRpYyBOU0RpY3Rpb25hcnkgKm9wdGlv
bnNGb3IzMkJpdFN1cmYKIAogfQogCi1JT1N1cmZhY2U6OklPU3VyZmFjZShJbnRTaXplIHNpemUs
IEludFNpemUgY29udGV4dFNpemUsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlLCBGb3JtYXQg
Zm9ybWF0LCBib29sJiBzdWNjZXNzKQorSU9TdXJmYWNlOjpJT1N1cmZhY2UoSW50U2l6ZSBzaXpl
LCBJbnRTaXplIGNvbnRleHRTaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9y
U3BhY2UsIEZvcm1hdCBmb3JtYXQsIGJvb2wmIHN1Y2Nlc3MpCiAgICAgOiBtX2NvbG9yU3BhY2Uo
Y29sb3JTcGFjZSkKICAgICAsIG1fc2l6ZShzaXplKQogICAgICwgbV9jb250ZXh0U2l6ZShjb250
ZXh0U2l6ZSkKQEAgLTIzMiw3ICsyMzQsNyBAQCBJT1N1cmZhY2U6OklPU3VyZmFjZShJbnRTaXpl
IHNpemUsIEludFNpCiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKExheWVycywgIklPU3VyZmFj
ZSBjcmVhdGlvbiBmYWlsZWQgZm9yIHNpemU6ICglZCAlZCkgYW5kIGZvcm1hdDogKCVkKSIsIHNp
emUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgZm9ybWF0KTsKIH0KIAotSU9TdXJmYWNlOjpJT1N1
cmZhY2UoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKQor
SU9TdXJmYWNlOjpJT1N1cmZhY2UoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkKICAgICA6IG1fY29sb3JTcGFjZShjb2xvclNwYWNl
KQogICAgICwgbV9zdXJmYWNlKHN1cmZhY2UpCiB7CkBAIC0zNDcsNyArMzQ5LDcgQEAgQ0dDb250
ZXh0UmVmIElPU3VyZmFjZTo6ZW5zdXJlUGxhdGZvcm1DbwogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgCi0gICAgbV9jZ0NvbnRleHQgPSBhZG9wdENGKENHSU9TdXJmYWNlQ29udGV4dENyZWF0
ZShtX3N1cmZhY2UuZ2V0KCksIG1fY29udGV4dFNpemUud2lkdGgoKSwgbV9jb250ZXh0U2l6ZS5o
ZWlnaHQoKSwgYml0c1BlckNvbXBvbmVudCwgYml0c1BlclBpeGVsLCBtX2NvbG9yU3BhY2UuZ2V0
KCksIGJpdG1hcEluZm8pKTsKKyAgICBtX2NnQ29udGV4dCA9IGFkb3B0Q0YoQ0dJT1N1cmZhY2VD
b250ZXh0Q3JlYXRlKG1fc3VyZmFjZS5nZXQoKSwgbV9jb250ZXh0U2l6ZS53aWR0aCgpLCBtX2Nv
bnRleHRTaXplLmhlaWdodCgpLCBiaXRzUGVyQ29tcG9uZW50LCBiaXRzUGVyUGl4ZWwsIG1fY29s
b3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwgYml0bWFwSW5mbykpOwogCiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgIGlmIChhdXRvIGRpc3BsYXlNYXNrID0gcHJpbWFyeU9wZW5HTERpc3BsYXlN
YXNrKCkpIHsKQEAgLTUxNSw3ICs1MTcsNyBAQCB2b2lkIElPU3VyZmFjZTo6c2V0T3duZXJzaGlw
SWRlbnRpdHkodGFzCiAKIHZvaWQgSU9TdXJmYWNlOjptaWdyYXRlQ29sb3JTcGFjZVRvUHJvcGVy
dGllcygpCiB7Ci0gICAgYXV0byBjb2xvclNwYWNlUHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dDb2xv
clNwYWNlQ29weVByb3BlcnR5TGlzdChtX2NvbG9yU3BhY2UuZ2V0KCkpKTsKKyAgICBhdXRvIGNv
bG9yU3BhY2VQcm9wZXJ0aWVzID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDb3B5UHJvcGVydHlMaXN0
KG1fY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSkpOwogICAgIElPU3VyZmFjZVNldFZh
bHVlKG1fc3VyZmFjZS5nZXQoKSwga0lPU3VyZmFjZUNvbG9yU3BhY2UsIGNvbG9yU3BhY2VQcm9w
ZXJ0aWVzLmdldCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZl
Y3RSZW5kZXJlckNvcmVJbWFnZS5tbQkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUlt
YWdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBGaWx0ZXJFZmZl
Y3RSZW5kZXJlckNvcmVJbWFnZTo6cmVuZAogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgYXV0
byYgc3VyZmFjZSA9IGRvd25jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI+KCptX291dHB1dElt
YWdlQnVmZmVyKS5zdXJmYWNlKCk7Ci0gICAgW3NoYXJlZENJQ29udGV4dCgpLmdldCgpIHJlbmRl
cjogbV9vdXRwdXRJbWFnZS5nZXQoKSB0b0lPU3VyZmFjZTogc3VyZmFjZS5zdXJmYWNlKCkgYm91
bmRzOmRlc3RSZWN0KGxhc3RFZmZlY3QpIGNvbG9yU3BhY2U6Y2FjaGVkQ0dDb2xvclNwYWNlKGxh
c3RFZmZlY3QucmVzdWx0Q29sb3JTcGFjZSgpKV07CisgICAgW3NoYXJlZENJQ29udGV4dCgpLmdl
dCgpIHJlbmRlcjogbV9vdXRwdXRJbWFnZS5nZXQoKSB0b0lPU3VyZmFjZTogc3VyZmFjZS5zdXJm
YWNlKCkgYm91bmRzOmRlc3RSZWN0KGxhc3RFZmZlY3QpIGNvbG9yU3BhY2U6bGFzdEVmZmVjdC5y
ZXN1bHRDb2xvclNwYWNlKCkucGxhdGZvcm1Db2xvclNwYWNlKCldOwogfQogICAgIAogRmxvYXRS
ZWN0IEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpkZXN0UmVjdChjb25zdCBGaWx0ZXJF
ZmZlY3QmIGxhc3RFZmZlY3QpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEltYWdlQnVmZmVyLmgJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMg
Q29uY3JldGVJbWFnZQogICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpiYXNlVHJh
bnNmb3JtOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RX
aW5kb3cpCisgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3Bh
Y2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93
KQogICAgIHsKICAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjp0ZW1wbGF0
ZSBjcmVhdGU8SW1hZ2VCdWZmZXI+KHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwg
cGl4ZWxGb3JtYXQsIGhvc3RXaW5kb3cpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVm
ZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgSXRlbUhhbmRs
ZTo6ZGVzdHJveSgpCiAgICAgICAgIGdldDxGaWxsUm91bmRlZFJlY3Q+KCkufkZpbGxSb3VuZGVk
UmVjdCgpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJdGVtVHlwZTo6R2V0UGl4ZWxCdWZm
ZXI6Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxl
PEdldFBpeGVsQnVmZmVyPjo6dmFsdWUpOworICAgICAgICBnZXQ8R2V0UGl4ZWxCdWZmZXI+KCku
fkdldFBpeGVsQnVmZmVyKCk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEl0ZW1UeXBlOjpQ
dXRQaXhlbEJ1ZmZlcjoKICAgICAgICAgZ2V0PFB1dFBpeGVsQnVmZmVyPigpLn5QdXRQaXhlbEJ1
ZmZlcigpOwpAQCAtMzA3LDcgKzMwNyw3IEBAIHZvaWQgSXRlbUhhbmRsZTo6ZGVzdHJveSgpCiAg
ICAgICAgIHJldHVybjsKICNlbmRpZgogICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rl
c3RydWN0aWJsZTxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz46OnZhbHVlKTsKKyAgICAgICAg
Z2V0PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpLn5CZWdpbkNsaXBUb0RyYXdpbmdDb21t
YW5kcygpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFuc3Bh
cmVuY3lMYXllcjoKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0
cnVjdGlibGU8QmVnaW5UcmFuc3BhcmVuY3lMYXllcj46OnZhbHVlKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1UeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDYgKzI4MSw3IEBAIGJvb2wgaXNJbmxp
bmVJdGVtKEl0ZW1UeXBlIHR5cGUpCiAgICAgICogYW5kICgzKSBhbGwgdGhlICJzdGF0aWMgY29u
c3RleHByIGJvb2wgaXNJbmxpbmVJdGVtInMgaW5zaWRlIHRoZSBpbmRpdmlkdWFsIGl0ZW0gY2xh
c3Nlcy4gKi8KIAogICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2lu
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOgogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6
CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0Zv
Y3VzUmluZ1BhdGg6CkBAIC0yOTQsNiArMjk1LDcgQEAgYm9vbCBpc0lubGluZUl0ZW0oSXRlbVR5
cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDoKICAgICBj
YXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZToKICAgICBjYXNlIEl0ZW1UeXBl
OjpGaWxsUm91bmRlZFJlY3Q6CisgICAgY2FzZSBJdGVtVHlwZTo6R2V0UGl4ZWxCdWZmZXI6CiAg
ICAgY2FzZSBJdGVtVHlwZTo6UHV0UGl4ZWxCdWZmZXI6CiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0
TGluZURhc2g6CiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6CkBAIC0zMTAsNyArMzEyLDYg
QEAgYm9vbCBpc0lubGluZUl0ZW0oSXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpD
bGlwOgogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXQ6CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xp
cFRvSW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29t
bWFuZHM6CiAgICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgogICAg
IGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdE
b3RzRm9yRG9jdW1lbnRNYXJrZXI6CkBAIC0zNTEsNyArMzUyLDYgQEAgYm9vbCBpc0lubGluZUl0
ZW0oSXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0OgogICAgIGNh
c2UgSXRlbVR5cGU6OlN0cm9rZUxpbmU6CiAgICAgY2FzZSBJdGVtVHlwZTo6VHJhbnNsYXRlOgot
ICAgIGNhc2UgSXRlbVR5cGU6OkdldFBpeGVsQnVmZmVyOgogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmgJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTg4MCwyMyArODgwLDU0IEBAIE9wdGlvbmFsPENsaXBQYXRoPiBDbGlwUGF0aDo6ZGVj
b2RlKERlY28KIGNsYXNzIEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgY29uc3RleHByIEl0ZW1UeXBlIGl0ZW1UeXBlID0gSXRlbVR5cGU6OkJlZ2luQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0
ZW0gPSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSBmYWxz
ZTsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IGZhbHNlOwogCiAg
ICAgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
biwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpCiAgICAgICAgIDogbV9kZXN0aW5h
dGlvbihkZXN0aW5hdGlvbikKLSAgICAgICAgLCBtX2NvbG9yU3BhY2UoY29sb3JTcGFjZSkKKyAg
ICAgICAgLCBtX2NvbG9yU3BhY2UoV1RGTW92ZShjb2xvclNwYWNlKSkKICAgICB7CiAgICAgfQog
CisgICAgLy8gRXhwbGljaXQgZGVzdHJ1Y3RvciBhZGRlZCB0byBmb3JjZSBub24tdHJpdmlhbCBk
ZXN0cnVjdG9yIG9uIGFsbCBwbGF0Zm9ybXMKKyAgICAvLyBhcyB0aGUgZW5jb2RpbmcgbG9naWMg
Y3VycmVudGx5IGhhcmRjb2RlcyB3aGljaCBkaXNwbGF5IGxpc3QgaXRlbSB0eXBlcyBuZWVkCisg
ICAgLy8gb3V0IG9mIGxpbmUgdHJlYXRtZW50IHJhdGhlciB0aGFuIHVzaW5nIHRoZSBpc0lubGlu
ZUl0ZW0gY29uc3RhbnQuCisgICAgfkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKCkgeyB9CisK
ICAgICBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0
aW5hdGlvbjsgfQotICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKCkgY29uc3Qg
eyByZXR1cm4gbV9jb2xvclNwYWNlOyB9CisgICAgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvclNwYWNlOyB9CisKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEJlZ2luQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX2Rl
c3RpbmF0aW9uOwogICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBtX2NvbG9yU3BhY2U7CiB9Owog
Cit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5k
czo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX2Rl
c3RpbmF0aW9uOworICAgIGVuY29kZXIgPDwgbV9jb2xvclNwYWNlOworfQorCit0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+IEJlZ2lu
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBP
cHRpb25hbDxGbG9hdFJlY3Q+IGRlc3RpbmF0aW9uOworICAgIGRlY29kZXIgPj4gZGVzdGluYXRp
b247CisgICAgaWYgKCFkZXN0aW5hdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKKyAgICBk
ZWNvZGVyID4+IGNvbG9yU3BhY2U7CisgICAgaWYgKCFjb2xvclNwYWNlKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIHt7ICpkZXN0aW5hdGlvbiwgV1RGTW92ZSgq
Y29sb3JTcGFjZSkgfX07Cit9CisKIGNsYXNzIEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBl
OjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM7CkBAIC0xOTM4LDIzICsxOTY5LDU0IEBAIHByaXZh
dGU6CiBjbGFzcyBHZXRQaXhlbEJ1ZmZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhw
ciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpHZXRQaXhlbEJ1ZmZlcjsKLSAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGJvb2wgaXNJbmxpbmVJdGVtID0gZmFsc2U7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29s
IGlzRHJhd2luZ0l0ZW0gPSBmYWxzZTsKIAotICAgIEdldFBpeGVsQnVmZmVyKFdlYkNvcmU6OlBp
eGVsQnVmZmVyRm9ybWF0IG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3Jj
UmVjdCkKKyAgICBHZXRQaXhlbEJ1ZmZlcihQaXhlbEJ1ZmZlckZvcm1hdCBvdXRwdXRGb3JtYXQs
IGNvbnN0IEludFJlY3QmIHNyY1JlY3QpCiAgICAgICAgIDogbV9zcmNSZWN0KHNyY1JlY3QpCi0g
ICAgICAgICwgbV9vdXRwdXRGb3JtYXQob3V0cHV0Rm9ybWF0KQorICAgICAgICAsIG1fb3V0cHV0
Rm9ybWF0KFdURk1vdmUob3V0cHV0Rm9ybWF0KSkKICAgICB7CiAgICAgfQogCi0gICAgUGl4ZWxC
dWZmZXJGb3JtYXQgb3V0cHV0Rm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9vdXRwdXRGb3JtYXQ7
IH0KKyAgICAvLyBFeHBsaWNpdCBkZXN0cnVjdG9yIGFkZGVkIHRvIGZvcmNlIG5vbi10cml2aWFs
IGRlc3RydWN0b3Igb24gYWxsIHBsYXRmb3JtcworICAgIC8vIGFzIHRoZSBlbmNvZGluZyBsb2dp
YyBjdXJyZW50bHkgaGFyZGNvZGVzIHdoaWNoIGRpc3BsYXkgbGlzdCBpdGVtIHR5cGVzIG5lZWQK
KyAgICAvLyBvdXQgb2YgbGluZSB0cmVhdG1lbnQgcmF0aGVyIHRoYW4gdXNpbmcgdGhlIGlzSW5s
aW5lSXRlbSBjb25zdGFudC4KKyAgICB+R2V0UGl4ZWxCdWZmZXIoKSB7IH0KKworICAgIGNvbnN0
IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX291dHB1
dEZvcm1hdDsgfQogICAgIEludFJlY3Qgc3JjUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3JjUmVj
dDsgfQogCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxHZXRQ
aXhlbEJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKKwogcHJpdmF0ZToKICAgICBJbnRSZWN0IG1f
c3JjUmVjdDsKICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBtX291dHB1dEZvcm1hdDsKIH07CiAKK3Rl
bXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEdldFBpeGVsQnVmZmVyOjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fc3JjUmVjdDsKKyAgICBlbmNv
ZGVyIDw8IG1fb3V0cHV0Rm9ybWF0OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0
aW9uYWw8R2V0UGl4ZWxCdWZmZXI+IEdldFBpeGVsQnVmZmVyOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKK3sKKyAgICBPcHRpb25hbDxJbnRSZWN0PiBzcmNSZWN0OworICAgIGRlY29kZXIgPj4g
c3JjUmVjdDsKKyAgICBpZiAoIXNyY1JlY3QpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisKKyAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlckZvcm1hdD4gb3V0cHV0Rm9ybWF0OworICAgIGRl
Y29kZXIgPj4gb3V0cHV0Rm9ybWF0OworICAgIGlmICghb3V0cHV0Rm9ybWF0KQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIHt7IFdURk1vdmUoKm91dHB1dEZvcm1h
dCksICpzcmNSZWN0IH19OworfQorCiBjbGFzcyBQdXRQaXhlbEJ1ZmZlciB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpQdXRQaXhl
bEJ1ZmZlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAJ
KHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUy
LDcgKzQ1Miw3IEBAIHZvaWQgUmVjb3JkZXI6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnUKICAg
ICBhcHBlbmQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcigpLCBkZXN0UmVjdCk7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OmNsaXBUb0RyYXdp
bmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgY29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBkcmF3
aW5nRnVuY3Rpb24pCit2b2lkIFJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xv
clNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlv
bikKIHsKICAgICBHcmFwaGljc0NvbnRleHQgbmVzdGVkQ29udGV4dChbJl0oR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgIGF1dG8gaW5pdGlhbENsaXAgPSBGbG9hdFJlY3QoRmxv
YXRQb2ludCgpLCBkZXN0aW5hdGlvbi5zaXplKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5oCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDcsNyArMTQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsaXBQYXRo
KGNvbnN0IFBhdGgmLCBXaW5kUnVsZSkgb3ZlcnJpZGU7CiAgICAgSW50UmVjdCBjbGlwQm91bmRz
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1
ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgY2xpcFRvRHJhd2lu
Z0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRl
eHQmKT4mJikgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHZvaWQgcGFpbnRGcmFt
ZUZvck1lZGlhKE1lZGlhUGxheWVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikgb3Zl
cnJpZGU7CiAgICAgYm9vbCBjYW5QYWludEZyYW1lRm9yTWVkaWEoY29uc3QgTWVkaWFQbGF5ZXIm
KSBjb25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwCShyZXZp
c2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFRGlzcGxhY2VtZW50TWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBi
b29sIEZFRGlzcGxhY2VtZW50TWFwOjpzZXRTY2FsZShmbG9hdCBzCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OnNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGlu
YXRpb25Db2xvclNwYWNlKQordm9pZCBGRURpc3BsYWNlbWVudE1hcDo6c2V0UmVzdWx0Q29sb3JT
cGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKQogewogICAgIC8vIFNwZWM6IFRoZSAn
Y29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzJyBwcm9wZXJ0eSBvbmx5IGFwcGxpZXMgdG8gdGhl
ICdpbjInIHNvdXJjZSBpbWFnZQogICAgIC8vIGFuZCBkb2VzIG5vdCBhcHBseSB0byB0aGUgJ2lu
JyBzb3VyY2UgaW1hZ2UuIFRoZSAnaW4nIHNvdXJjZSBpbWFnZSBtdXN0IHJlbWFpbiBpbiBpdHMK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFj
ZW1lbnRNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmgJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuaAko
d29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgc2NhbGUo
KSBjb25zdCB7IHJldHVybiBtX3NjYWxlOyB9CiAgICAgYm9vbCBzZXRTY2FsZShmbG9hdCk7CiAK
LSAgICB2b2lkIHNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHNldFJlc3VsdENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB0cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKEZp
bHRlckVmZmVjdCosIGNvbnN0IGludCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaAko
cmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUZsb29kLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDggKzQwLDggQEAgcHVibGljOgog
I2lmICFVU0UoQ0cpCiAgICAgLy8gZmVGbG9vZCBkb2VzIG5vdCBwZXJmb3JtIGNvbG9yIGludGVy
cG9sYXRpb24gb2YgYW55IGtpbmQsIHNvIHRoZSByZXN1bHQgaXMgYWx3YXlzIGluIHRoZSBjdXJy
ZW50CiAgICAgLy8gY29sb3Igc3BhY2UgcmVnYXJkbGVzcyBvZiB0aGUgdmFsdWUgb2YgY29sb3It
aW50ZXJwb2xhdGlvbi1maWx0ZXJzLgotICAgIHZvaWQgc2V0T3BlcmF0aW5nQ29sb3JTcGFjZShE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UpIG92ZXJyaWRlIHsgRmlsdGVyRWZmZWN0OjpzZXRSZXN1bHRD
b2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7IH0KLSAgICB2b2lkIHNldFJl
c3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlKSBvdmVycmlkZSB7IEZpbHRlckVm
ZmVjdDo6c2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOyB9
CisgICAgdm9pZCBzZXRPcGVyYXRpbmdDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYpIG92ZXJyaWRlIHsgRmlsdGVyRWZmZWN0OjpzZXRSZXN1bHRDb2xvclNwYWNlKERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsgfQorICAgIHZvaWQgc2V0UmVzdWx0Q29sb3JTcGFj
ZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKSBvdmVycmlkZSB7IEZpbHRlckVmZmVjdDo6
c2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7IH0KICNl
bmRpZgogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRVRpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUo
KQogICAgICAgICB0aWxlUmVjdC5zY2FsZShmaWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpLndpZHRo
KCksIGZpbHRlci5maWx0ZXJSZXNvbHV0aW9uKCkuaGVpZ2h0KCkpOwogICAgIH0KIAotICAgIGF1
dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIodGls
ZVJlY3QsIHRpbGVSZWN0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGZpbHRlcigpLnJl
bmRlcmluZ01vZGUoKSk7CisgICAgYXV0byB0aWxlSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0
OjpjcmVhdGVJbWFnZUJ1ZmZlcih0aWxlUmVjdCwgdGlsZVJlY3QsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpLCBmaWx0ZXIoKS5yZW5kZXJpbmdNb2RlKCkpOwogICAgIGlmICghdGlsZUlt
YWdlKQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAJKHJldmlzaW9u
IDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRWZmZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM5LDcgKzQzOSw3IEBAIHN0YXRpYyB2
b2lkIGNvcHlVbnByZW11bHRpcGx5aW5nQWxwaGEoY28KICNlbmRpZgogfQogCi1PcHRpb25hbDxQ
aXhlbEJ1ZmZlcj4gRmlsdGVyRWZmZWN0Ojpjb252ZXJ0UGl4ZWxCdWZmZXJUb0NvbG9yU3BhY2Uo
RGVzdGluYXRpb25Db2xvclNwYWNlIHRhcmdldENvbG9yU3BhY2UsIFBpeGVsQnVmZmVyJiBwaXhl
bEJ1ZmZlcikKK09wdGlvbmFsPFBpeGVsQnVmZmVyPiBGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRQaXhl
bEJ1ZmZlclRvQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHRhcmdldENv
bG9yU3BhY2UsIFBpeGVsQnVmZmVyJiBwaXhlbEJ1ZmZlcikKIHsKICAgICAvLyBGSVhNRTogVXNp
bmcgYW4gSW1hZ2VCdWZmZXIgdG8gcGVyZm9ybSB0aGUgY29sb3Igc3BhY2UgY29udmVyc2lvbiBp
cyB1bm5lY2Vzc2FyeS4gV2UgY2FuIGRvIGl0IGRpcmVjdGx5LgogCkBAIC00NTQsNyArNDU0LDcg
QEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEZpbHRlckVmZmVjdDo6Y29udgogICAgIHJldHVybiBj
b252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UodGFyZ2V0Q29sb3JTcGFjZSwgKmJ1ZmZlciwg
ZGVzdGluYXRpb25SZWN0LCBwaXhlbEJ1ZmZlci5mb3JtYXQoKS5hbHBoYUZvcm1hdCk7CiB9CiAK
LU9wdGlvbmFsPFBpeGVsQnVmZmVyPiBGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRJbWFnZUJ1ZmZlclRv
Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UgdGFyZ2V0Q29sb3JTcGFjZSwgSW1hZ2VC
dWZmZXImIGlucHV0QnVmZmVyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uIG91dHB1dEFscGhhRm9ybWF0KQorT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEZpbHRlckVm
ZmVjdDo6Y29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgdGFyZ2V0Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXImIGlucHV0QnVmZmVyLCBjb25z
dCBJbnRSZWN0JiByZWN0LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEFscGhhRm9ybWF0
KQogewogICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBiZSBkb25lIG1vcmUgZGlyZWN0bHkgdXNpbmcg
UGl4ZWxCdWZmZXJDb252ZXJzaW9uLgogCkBAIC00NzIsNyArNDcyLDcgQEAgT3B0aW9uYWw8UGl4
ZWxCdWZmZXI+IEZpbHRlckVmZmVjdDo6Y29udgogICAgIHJldHVybiBjb252ZXJ0ZWRCdWZmZXIt
PmdldFBpeGVsQnVmZmVyKGZvcm1hdCwgcmVjdCk7CiB9CiAKLXZvaWQgRmlsdGVyRWZmZWN0Ojpj
b3B5Q29udmVydGVkSW1hZ2VCdWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiBk
ZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIEFscGhhUHJlbXVs
dGlwbGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQg
RmlsdGVyRWZmZWN0Ojpjb3B5Q29udmVydGVkSW1hZ2VCdWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4
Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBj
b2xvclNwYWNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgLy8gQ29udmVydHMgdGhlIGRhdGEgc3RvcmVkIGluIG1f
aW1hZ2VCdWZmZXJSZXN1bHQsIGFuZCBzYXZlIHRvIGRlc3RpbmF0aW9uCiAgICAgYXV0byBjb252
ZXJ0ZWRQaXhlbEJ1ZmZlciA9IGNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZShjb2xvclNw
YWNlLCAqbV9pbWFnZUJ1ZmZlclJlc3VsdCwgeyBJbnRQb2ludCgpLCBtX2Fic29sdXRlUGFpbnRS
ZWN0LnNpemUoKSB9LCBvdXRwdXRGb3JtYXQpOwpAQCAtNDgxLDcgKzQ4MSw3IEBAIHZvaWQgRmls
dGVyRWZmZWN0Ojpjb3B5Q29udmVydGVkSW1hZ2VCdWYKICAgICBjb3B5SW1hZ2VCeXRlcyhjb252
ZXJ0ZWRQaXhlbEJ1ZmZlci0+ZGF0YSgpLCBkZXN0aW5hdGlvbiwgZGVzdFJlY3QpOwogfQogCi12
b2lkIEZpbHRlckVmZmVjdDo6Y29weUNvbnZlcnRlZFBpeGVsQnVmZmVyVG9EZXN0aW5hdGlvbihV
aW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIFBpeGVsQnVmZmVyJiBwaXhlbEJ1ZmZlciwg
RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KQordm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRQaXhlbEJ1ZmZlclRvRGVzdGluYXRp
b24oVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBQaXhlbEJ1ZmZlciYgcGl4ZWxCdWZm
ZXIsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpCiB7CiAgICAgLy8gQ29udmVydHMgdGhlIGRhdGEgc3RvcmVkIGluIG1fdW5t
dWx0aXBsaWVkSW1hZ2VSZXN1bHQvbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQsCiAgICAgLy8g
d2hpY2hldmVyIGlzbid0IG51bGwsIGFuZCBzYXZlIHRvIGRlc3RpbmF0aW9uCkBAIC02MzYsNyAr
NjM2LDcgQEAgYm9vbCBGaWx0ZXJFZmZlY3Q6OnJlcXVpcmVzUGl4ZWxCdWZmZXJDbwogI2VuZGlm
CiB9CiAKLXZvaWQgRmlsdGVyRWZmZWN0Ojp0cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSBkZXN0aW5hdGlvbkNvbG9yU3BhY2UpCit2b2lkIEZpbHRlckVmZmVj
dDo6dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
IGRlc3RpbmF0aW9uQ29sb3JTcGFjZSkKIHsKICNpZiBVU0UoQ0cpCiAgICAgLy8gQ0cgaGFuZGxl
cyBjb2xvciBzcGFjZSBhZGp1c3RtZW50cyBpbnRlcm5hbGx5LgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5o
CShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFscGhhUHJlbXVsdGlwbGljYXRpb24uaCIKLSNpbmNs
dWRlICJDb2xvclNwYWNlLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAj
aW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIklu
dFJlY3RFeHRlbnQuaCIKQEAgLTE2NSwxMyArMTY1LDEzIEBAIHB1YmxpYzoKICAgICBib29sIGNs
aXBzVG9Cb3VuZHMoKSBjb25zdCB7IHJldHVybiBtX2NsaXBzVG9Cb3VuZHM7IH0KICAgICB2b2lk
IHNldENsaXBzVG9Cb3VuZHMoYm9vbCB2YWx1ZSkgeyBtX2NsaXBzVG9Cb3VuZHMgPSB2YWx1ZTsg
fQogCi0gICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG9wZXJhdGluZ0NvbG9yU3BhY2UoKSBjb25z
dCB7IHJldHVybiBtX29wZXJhdGluZ0NvbG9yU3BhY2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0
T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkgeyBt
X29wZXJhdGluZ0NvbG9yU3BhY2UgPSBjb2xvclNwYWNlOyB9Ci0gICAgRGVzdGluYXRpb25Db2xv
clNwYWNlIHJlc3VsdENvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdENvbG9yU3Bh
Y2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgY29sb3JTcGFjZSkgeyBtX3Jlc3VsdENvbG9yU3BhY2UgPSBjb2xvclNwYWNlOyB9
CisgICAgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBvcGVyYXRpbmdDb2xvclNwYWNlKCkg
Y29uc3QgeyByZXR1cm4gbV9vcGVyYXRpbmdDb2xvclNwYWNlOyB9CisgICAgdmlydHVhbCB2b2lk
IHNldE9wZXJhdGluZ0NvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xv
clNwYWNlKSB7IG1fb3BlcmF0aW5nQ29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7IH0KKyAgICBjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHJlc3VsdENvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVy
biBtX3Jlc3VsdENvbG9yU3BhY2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVzdWx0Q29sb3JT
cGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpIHsgbV9yZXN1bHRD
b2xvclNwYWNlID0gY29sb3JTcGFjZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHRyYW5zZm9ybVJl
c3VsdENvbG9yU3BhY2UoRmlsdGVyRWZmZWN0KiBpbiwgY29uc3QgaW50KSB7IGluLT50cmFuc2Zv
cm1SZXN1bHRDb2xvclNwYWNlKG1fb3BlcmF0aW5nQ29sb3JTcGFjZSk7IH0KLSAgICB2b2lkIHRy
YW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlKTsKKyAgICB2b2lk
IHRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7
CiAgICAgCiAgICAgc3RhdGljIFZlY3RvcjxmbG9hdD4gbm9ybWFsaXplZEZsb2F0cyhjb25zdCBW
ZWN0b3I8ZmxvYXQ+JiB2YWx1ZXMpCiAgICAgewpAQCAtMjAzLDExICsyMDMsMTEgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgPSAwOwogCiAgICAg
dm9pZCBjb3B5SW1hZ2VCeXRlcyhjb25zdCBVaW50OENsYW1wZWRBcnJheSYgc291cmNlLCBVaW50
OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmKSBjb25zdDsKLSAgICB2
b2lkIGNvcHlDb252ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJy
YXkmLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEFscGhhUHJlbXVsdGlwbGljYXRpb24sIGNvbnN0
IEludFJlY3QmKTsKLSAgICB2b2lkIGNvcHlDb252ZXJ0ZWRQaXhlbEJ1ZmZlclRvRGVzdGluYXRp
b24oVWludDhDbGFtcGVkQXJyYXkmLCBQaXhlbEJ1ZmZlciYsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSwgY29uc3QgSW50UmVjdCYpOworICAgIHZvaWQgY29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9E
ZXN0aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYsIEFscGhhUHJlbXVsdGlwbGljYXRpb24sIGNvbnN0IEludFJlY3QmKTsKKyAgICB2b2lkIGNv
cHlDb252ZXJ0ZWRQaXhlbEJ1ZmZlclRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmLCBQ
aXhlbEJ1ZmZlciYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IEludFJlY3Qm
KTsKICAgICBib29sIHJlcXVpcmVzUGl4ZWxCdWZmZXJDb2xvclNwYWNlQ29udmVyc2lvbihPcHRp
b25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+KTsKLSAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4g
Y29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgSW1h
Z2VCdWZmZXImLCBjb25zdCBJbnRSZWN0JiwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbik7Ci0gICAg
T3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGNvbnZlcnRQaXhlbEJ1ZmZlclRvQ29sb3JTcGFjZShEZXN0
aW5hdGlvbkNvbG9yU3BhY2UsIFBpeGVsQnVmZmVyJik7CisgICAgT3B0aW9uYWw8UGl4ZWxCdWZm
ZXI+IGNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmLCBJbWFnZUJ1ZmZlciYsIGNvbnN0IEludFJlY3QmLCBBbHBoYVByZW11bHRpcGxpY2F0
aW9uKTsKKyAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gY29udmVydFBpeGVsQnVmZmVyVG9Db2xv
clNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBpeGVsQnVmZmVyJik7CiAgICAg
CiAKICAgICBGaWx0ZXImIG1fZmlsdGVyOwpAQCAtMjQ0LDEzICsyNDQsMTEgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1fY2xpcHNUb0JvdW5kcyB7IHRydWUgfTsKIAogI2lmIEVOQUJMRShERVNUSU5B
VElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8g
ZGVmYXVsdE9wZXJhdGluZ0NvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVh
clNSR0I7CisgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1fb3BlcmF0aW5nQ29sb3JTcGFjZSB7
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigpIH07CiAjZWxzZQotICAgIHN0YXRp
YyBjb25zdGV4cHIgYXV0byBkZWZhdWx0T3BlcmF0aW5nQ29sb3JTcGFjZSA9IERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQjsKKyAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgbV9vcGVyYXRpbmdD
b2xvclNwYWNlIHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsKICNlbmRpZgotCi0g
ICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1fb3BlcmF0aW5nQ29sb3JTcGFjZSB7IGRlZmF1bHRP
cGVyYXRpbmdDb2xvclNwYWNlIH07Ci0gICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1fcmVzdWx0
Q29sb3JTcGFjZSB7IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgIERlc3RpbmF0
aW9uQ29sb3JTcGFjZSBtX3Jlc3VsdENvbG9yU3BhY2UgeyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSB9OwogICAgIAogICAgIGNvbnN0IFR5cGUgbV9maWx0ZXJFZmZlY3RDbGFzc1R5cGU7
CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3Vy
Y2VHcmFwaGljLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIHByaXZhdGU6CiAgICAgU291cmNlR3JhcGhpYyhGaWx0
ZXImIGZpbHRlcikKICAgICAgICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCBUeXBlOjpTb3VyY2VH
cmFwaGljKQogICAgIHsKLSAgICAgICAgc2V0T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IpOworICAgICAgICBzZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICB9CiAKICAgICBjb25zdCBjaGFyKiBmaWx0
ZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlNvdXJjZUdyYXBoaWMiOyB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWly
b09wZXJhdGlvblJlY29yZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVy
LmNwcAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwNzYsNyArMTA3Niw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
cjo6YXBwZW5kKHN0ZDoKICAgICBtX2NvbW1hbmRMaXN0LmFwcGVuZChXVEZNb3ZlKGNvbW1hbmQp
KTsKIH0KIAotdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFu
ZHMoY29uc3QgRmxvYXRSZWN0JiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2b2lk
KEdyYXBoaWNzQ29udGV4dCYpPiYmKQordm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpjbGlw
VG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikKIHsKICAgICAvLyBG
SVhNRTogTm90IGltcGxlbWVudGVkLgogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fp
cm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAkocmV2aXNpb24gMjc3OTM5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fp
cm9PcGVyYXRpb25SZWNvcmRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBjbGlwUGF0aChjb25zdCBXZWJDb3JlOjpQYXRoJiwgV2ViQ29yZTo6
V2luZFJ1bGUpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkludFJlY3QgY2xpcEJvdW5kcygpIG92
ZXJyaWRlOwogICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXIm
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIGNsaXBUb0Ry
YXdpbmdDb21tYW5kcyhjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBXZWJD
b3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0Jik+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRz
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IFdlYkNvcmU6OkRl
c3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0Jik+JiYpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShWSURFTykKICAgICB2b2lkIHBhaW50RnJh
bWVGb3JNZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYgZGVzdGluYXRpb24pIG92ZXJyaWRlOwogICAgIGJvb2wgY2FuUGFpbnRGcmFtZUZvck1lZGlh
KGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWVyJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4
bWFwL05pY29zaWFHQ0dMTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQ0dMTGF5ZXIuY3BwCShyZXZp
c2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L3RleG1hcC9OaWNvc2lhR0NHTExheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEsNyArODEs
NyBAQCB2b2lkIEdDR0xMYXllcjo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAgICAgSW50U2l6ZSB0
ZXh0dXJlU2l6ZShtX2NvbnRleHQubV9jdXJyZW50V2lkdGgsIG1fY29udGV4dC5tX2N1cnJlbnRI
ZWlnaHQpOwogICAgIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MgPSBtX2NvbnRleHQuY29u
dGV4dEF0dHJpYnV0ZXMoKS5hbHBoYSA/IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQgOiAw
OwogI2lmIFVTRShBTkdMRSkKLSAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZXh0dXJlU2l6ZSwgUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1h
dDo6QkdSQTgpOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRleHR1cmVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJH
UkE4KTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCShyZXZpc2lvbiAyNzc5
MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiB7Ci0gICAgUGl4ZWxCdWZm
ZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVk
LCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAg
IFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJl
bXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSB9OwogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZv
cm1hdCwgZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xFUy5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkblBpeGVsCiAKIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiB7Ci0gICAgUGl4ZWxCdWZm
ZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVk
LCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAg
IFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJl
bXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSB9OwogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZv
cm1hdCwgZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAJ
KHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9CaXRtYXBUZXh0dXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCB2
b2lkIEJpdG1hcFRleHR1cmU6OnVwZGF0ZUNvbnRlbnRzKEdyYXBoCiB7CiAgICAgLy8gTWFraW5n
IGFuIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkIGJ1ZmZlciBoZXJlIGlzIE9LIGJlY2F1
c2UgdGhpcyBjb2RlCiAgICAgLy8gaXNuJ3QgdXNlZCBieSBhbnkgcGxhdGZvcm1zIHRoYXQgcmVz
cGVjdCB0aGUgYWNjZWxlcmF0ZWQgYml0LgotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKHRhcmdldFJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJh
dGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGFyZ2V0UmVjdC5z
aXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghaW1hZ2VCdWZmZXIp
CiAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bs
YXRmb3JtU2NyZWVuR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsuY3BwCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBNaWNoYWVsIEVt
bWVsIG1pa2UuZW1tZWxAZ21haWwuY29tCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ2hyaXN0aWFu
IER5d2FuIDxjaHJpc3RpYW5AaW1lbmRpby5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29s
bGFib3JhIEx0ZC4KQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNl
LmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5j
bHVkZSAiR3RrVXRpbGl0aWVzLmgiCkBAIC04NSw2ICs4NiwxMSBAQCBib29sIHNjcmVlbklzTW9u
b2Nocm9tZShXaWRnZXQqIHdpZGdldCkKICAgICByZXR1cm4gc2NyZWVuRGVwdGgod2lkZ2V0KSA8
IDI7CiB9CiAKK0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCop
Cit7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOworfQorCiBib29s
IHNjcmVlbkhhc0ludmVydGVkQ29sb3JzKCkKIHsKICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5JT1MubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU2NyZWVuSU9TLm1tCShy
ZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1T
Y3JlZW5JT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA2LCAyMDE0IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04OCw5ICs4OCw5IEBAIGJvb2wgc2Ny
ZWVuU3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlKFdpZGcKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LUNHQ29sb3JTcGFjZVJlZiBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCogd2lkZ2V0KQorRGVzdGlu
YXRpb25Db2xvclNwYWNlIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAg
cmV0dXJuIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcih3aWRnZXQpID8gZXh0ZW5kZWRTUkdC
Q29sb3JTcGFjZVJlZigpIDogc1JHQkNvbG9yU3BhY2VSZWYoKTsKKyAgICByZXR1cm4gc2NyZWVu
U3VwcG9ydHNFeHRlbmRlZENvbG9yKHdpZGdldCkgPyBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgeyBl
eHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCkgfSA6IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpOwogfQogCiAvLyBUaGVzZSBmdW5jdGlvbnMgc2NhbGUgYmV0d2VlbiBzY3JlZW4gYW5kIHBh
Z2UgY29vcmRpbmF0ZXMgYmVjYXVzZSBKYXZhU2NyaXB0L0RPTSBvcGVyYXRpb25zCkBAIC0xOTMs
MTYgKzE5MywxNCBAQCBTY3JlZW5Qcm9wZXJ0aWVzIGNvbGxlY3RTY3JlZW5Qcm9wZXJ0aWVzCiAg
ICAgICAgIEZsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0ID0gc2NyZWVuLmJvdW5kczsKICAg
ICAgICAgc2NyZWVuQXZhaWxhYmxlUmVjdC5zZXRZKE5TTWF4WShzY3JlZW4uYm91bmRzKSAtIChz
Y3JlZW5BdmFpbGFibGVSZWN0LnkoKSArIHNjcmVlbkF2YWlsYWJsZVJlY3QuaGVpZ2h0KCkpKTsg
Ly8gZmxpcAogICAgICAgICBGbG9hdFJlY3Qgc2NyZWVuUmVjdCA9IHNjcmVlbi5fcmVmZXJlbmNl
Qm91bmRzOwotICAgICAgICAKLSAgICAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29s
b3JTcGFjZSA9IHNjcmVlbkNvbG9yU3BhY2UobnVsbHB0cik7Ci0gICAgICAgIAorICAgICAgICBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSB7IHNjcmVlbkNvbG9yU3BhY2UobnVsbHB0
cikgfTsKICAgICAgICAgaW50IHNjcmVlbkRlcHRoID0gV2ViQ29yZTo6c2NyZWVuRGVwdGgobnVs
bHB0cik7CiAgICAgICAgIGludCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCA9IFdlYkNvcmU6OnNj
cmVlbkRlcHRoUGVyQ29tcG9uZW50KG51bGxwdHIpOwogICAgICAgICBib29sIHNjcmVlblN1cHBv
cnRzRXh0ZW5kZWRDb2xvciA9IFdlYkNvcmU6OnNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcihu
dWxscHRyKTsKICAgICAgICAgYm9vbCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycyA9IFdlYkNvcmU6
OnNjcmVlbkhhc0ludmVydGVkQ29sb3JzKCk7CiAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0g
V2ViQ29yZTo6c2NyZWVuUFBJRmFjdG9yKCk7CiAKLSAgICAgICAgc2NyZWVuUHJvcGVydGllcy5z
Y3JlZW5EYXRhTWFwLnNldCgrK2Rpc3BsYXlJRCwgU2NyZWVuRGF0YSB7IHNjcmVlbkF2YWlsYWJs
ZVJlY3QsIHNjcmVlblJlY3QsIGNvbG9yU3BhY2UsIHNjcmVlbkRlcHRoLCBzY3JlZW5EZXB0aFBl
ckNvbXBvbmVudCwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yLCBzY3JlZW5IYXNJbnZlcnRl
ZENvbG9ycywgZmFsc2UsIHNjYWxlRmFjdG9yIH0pOworICAgICAgICBzY3JlZW5Qcm9wZXJ0aWVz
LnNjcmVlbkRhdGFNYXAuc2V0KCsrZGlzcGxheUlELCBTY3JlZW5EYXRhIHsgc2NyZWVuQXZhaWxh
YmxlUmVjdCwgc2NyZWVuUmVjdCwgV1RGTW92ZShjb2xvclNwYWNlKSwgc2NyZWVuRGVwdGgsIHNj
cmVlbkRlcHRoUGVyQ29tcG9uZW50LCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IsIHNjcmVl
bkhhc0ludmVydGVkQ29sb3JzLCBmYWxzZSwgc2NhbGVGYWN0b3IgfSk7CiAgICAgICAgIAogICAg
ICAgICBpZiAoc2NyZWVuID09IFtQQUw6OmdldFVJU2NyZWVuQ2xhc3MoKSBtYWluU2NyZWVuXSkK
ICAgICAgICAgICAgIHNjcmVlblByb3BlcnRpZXMucHJpbWFyeURpc3BsYXlJRCA9IGRpc3BsYXlJ
RDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3Jl
ZW5NYWMubW0JKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QbGF0Zm9ybVNjcmVlbk1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTMwLDkgKzEzMCw3IEBA
IFNjcmVlblByb3BlcnRpZXMgY29sbGVjdFNjcmVlblByb3BlcnRpZXMKICAgICAgICAgRmxvYXRS
ZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QgPSBzY3JlZW4udmlzaWJsZUZyYW1lOwogICAgICAgICBz
Y3JlZW5BdmFpbGFibGVSZWN0LnNldFkoTlNNYXhZKHNjcmVlbi5mcmFtZSkgLSAoc2NyZWVuQXZh
aWxhYmxlUmVjdC55KCkgKyBzY3JlZW5BdmFpbGFibGVSZWN0LmhlaWdodCgpKSk7IC8vIGZsaXAK
ICAgICAgICAgRmxvYXRSZWN0IHNjcmVlblJlY3QgPSBzY3JlZW4uZnJhbWU7Ci0KLSAgICAgICAg
UmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZSA9IHNjcmVlbi5jb2xvclNwYWNl
LkNHQ29sb3JTcGFjZTsKLQorICAgICAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFj
ZSB7IHNjcmVlbi5jb2xvclNwYWNlLkNHQ29sb3JTcGFjZSB9OwogICAgICAgICBpbnQgc2NyZWVu
RGVwdGggPSBOU0JpdHNQZXJQaXhlbEZyb21EZXB0aChzY3JlZW4uZGVwdGgpOwogICAgICAgICBp
bnQgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQgPSBOU0JpdHNQZXJTYW1wbGVGcm9tRGVwdGgoc2Ny
ZWVuLmRlcHRoKTsKICAgICAgICAgYm9vbCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IgPSBb
c2NyZWVuIGNhblJlcHJlc2VudERpc3BsYXlHYW11dDpOU0Rpc3BsYXlHYW11dFAzXTsKQEAgLTE2
Myw3ICsxNjEsNyBAQCBTY3JlZW5Qcm9wZXJ0aWVzIGNvbGxlY3RTY3JlZW5Qcm9wZXJ0aWVzCiAg
ICAgICAgIGlmIChkaXNwbGF5TWFzaykKICAgICAgICAgICAgIGdwdUlEID0gZ3B1SURGb3JEaXNw
bGF5TWFzayhkaXNwbGF5TWFzayk7CiAKLSAgICAgICAgc2NyZWVuUHJvcGVydGllcy5zY3JlZW5E
YXRhTWFwLnNldChkaXNwbGF5SUQsIFNjcmVlbkRhdGEgeyBzY3JlZW5BdmFpbGFibGVSZWN0LCBz
Y3JlZW5SZWN0LCBjb2xvclNwYWNlLCBzY3JlZW5EZXB0aCwgc2NyZWVuRGVwdGhQZXJDb21wb25l
bnQsIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciwgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMs
IHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZSwgc2NyZWVuSXNNb25vY2hyb21lLCBkaXNw
bGF5TWFzaywgZ3B1SUQsIGR5bmFtaWNSYW5nZU1vZGUsIHNjYWxlRmFjdG9yIH0pOworICAgICAg
ICBzY3JlZW5Qcm9wZXJ0aWVzLnNjcmVlbkRhdGFNYXAuc2V0KGRpc3BsYXlJRCwgU2NyZWVuRGF0
YSB7IHNjcmVlbkF2YWlsYWJsZVJlY3QsIHNjcmVlblJlY3QsIFdURk1vdmUoY29sb3JTcGFjZSks
IHNjcmVlbkRlcHRoLCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCwgc2NyZWVuU3VwcG9ydHNFeHRl
bmRlZENvbG9yLCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycywgc2NyZWVuU3VwcG9ydHNIaWdoRHlu
YW1pY1JhbmdlLCBzY3JlZW5Jc01vbm9jaHJvbWUsIGRpc3BsYXlNYXNrLCBncHVJRCwgZHluYW1p
Y1JhbmdlTW9kZSwgc2NhbGVGYWN0b3IgfSk7CiAKICAgICAgICAgaWYgKCFzY3JlZW5Qcm9wZXJ0
aWVzLnByaW1hcnlEaXNwbGF5SUQpCiAgICAgICAgICAgICBzY3JlZW5Qcm9wZXJ0aWVzLnByaW1h
cnlEaXNwbGF5SUQgPSBkaXNwbGF5SUQ7CkBAIC0zNDAsMTMgKzMzOCwxMyBAQCBOU1NjcmVlbiAq
c2NyZWVuKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsCiAgICAgcmV0dXJuIGZpcnN0U2NyZWVuKCk7
CiB9CiAKLUNHQ29sb3JTcGFjZVJlZiBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCogd2lkZ2V0KQor
RGVzdGluYXRpb25Db2xvclNwYWNlIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KiB3aWRnZXQpCiB7
CiAgICAgaWYgKGF1dG8gZGF0YSA9IHNjcmVlblByb3BlcnRpZXMod2lkZ2V0KSkKLSAgICAgICAg
cmV0dXJuIGRhdGEtPmNvbG9yU3BhY2UuZ2V0KCk7CisgICAgICAgIHJldHVybiBkYXRhLT5jb2xv
clNwYWNlOwogCiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVn
ZTo6Q2FuQ29tbXVuaWNhdGVXaXRoV2luZG93U2VydmVyKSk7Ci0gICAgcmV0dXJuIHNjcmVlbih3
aWRnZXQpLmNvbG9yU3BhY2UuQ0dDb2xvclNwYWNlOworICAgIHJldHVybiBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgeyBzY3JlZW4od2lkZ2V0KS5jb2xvclNwYWNlLkNHQ29sb3JTcGFjZSB9OwogfQog
CiBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcihXaWRnZXQqIHdpZGdldCkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0JKHJldmlzaW9uIDI3NzkzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtNzI2LDcgKzcyNiw3IEBAIGJvb2wgVGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdX
aXRoVmkKIAogICAgIGlmICh1c2VJbWFnZUJ1ZmZlcikgewogICAgICAgICBOU1JlY3QgaW1hZ2VC
dWZmZXJEcmF3UmVjdCA9IE5TUmVjdChGbG9hdFJlY3QoYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdp
ZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWln
aHQoKSkpOwotICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNv
bXBhdGlibGVCdWZmZXIocmVjdC5zaXplKCkgKyAyICogRmxvYXRTaXplKGJ1dHRvbkZvY3VzUmVj
dE91dGxpbmVXaWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoKSwgZGV2aWNlU2NhbGVG
YWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgY29udGV4dCk7CisgICAgICAgIGF1
dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihyZWN0
LnNpemUoKSArIDIgKiBGbG9hdFNpemUoYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCBidXR0
b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgpLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCksIGNvbnRleHQpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQog
ICAgICAgICAgICAgcmV0dXJuIG5lZWRzUmVwYWludDsKICAgICAgICAgewpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVv
U291cmNlR1N0cmVhbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIu
Y3BwCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VH
U3RyZWFtZXI6OnUKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvIHBpeGVsQnVmZmVyID0gaW1hZ2VCdWZmZXItPmdldFBpeGVsQnVmZmVyKHsgQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6QkdSQTgsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9LCB7IHsgfSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxT
aXplKCkgfSk7CisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5nZXRQaXhlbEJ1
ZmZlcih7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9LCB7IHsgfSwgaW1hZ2VC
dWZmZXItPmxvZ2ljYWxTaXplKCkgfSk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAgICAgICAg
cmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGlt
ZVZpZGVvU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAkocmV2aXNpb24gMjc3OTM5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ1NCw3ICs0NTQsNyBAQCBJbWFnZUJ1ZmZlciogTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2U6OmltCiAgICAgaWYgKG1faW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBt
X2ltYWdlQnVmZmVyLmdldCgpOwogCi0gICAgbV9pbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGUoY2FwdHVyZVNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIG1faW1h
Z2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNhcHR1cmVTaXplKCksIFJlbmRlcmluZ01v
ZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghbV9pbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3BsYXlzdGF0aW9uL1Bs
YXRmb3JtU2NyZWVuUGxheVN0YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3BsYXlzdGF0aW9uL1BsYXRmb3JtU2NyZWVuUGxheVN0YXRpb24uY3BwCShyZXZp
c2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wbGF5c3RhdGlvbi9QbGF0
Zm9ybVNjcmVlblBsYXlTdGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAKKyNp
bmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIK
ICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogCkBAIC03MSw0ICs3Miw5IEBAIGJvb2wgc2Ny
ZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKFdpZGdldCoKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
K0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCopCit7CisgICAg
cmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGxhdGZvcm1TY3Jl
ZW5XaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QbGF0
Zm9ybVNjcmVlbldpbi5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVlbldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYg
KzI3LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5o
IgogCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiRmxvYXRS
ZWN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKQEAgLTEw
NCwxMiArMTA1LDEwIEBAIEZsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0KFdpZGdldCogd2kK
ICAgICByZXR1cm4gbW9uaXRvckluZm8ucmNXb3JrOwogfQogCi0jaWYgVVNFKENHKQotQ0dDb2xv
clNwYWNlUmVmIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KikKK0Rlc3RpbmF0aW9uQ29sb3JTcGFj
ZSBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCopCiB7Ci0gICAgcmV0dXJuIHNSR0JDb2xvclNwYWNl
UmVmKCk7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOwogfQotI2Vu
ZGlmCiAKIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKFdpZGdldCopCiB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93cGUvUGxhdGZvcm1TY3JlZW5XUEUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dwZS9QbGF0Zm9ybVNjcmVlbldQRS5j
cHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dwZS9QbGF0
Zm9ybVNjcmVlbldQRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogCisjaW5jbHVkZSAi
RGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKQEAgLTgxLDYgKzgyLDEx
IEBAIEZsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0KFdpZGdldCogd2kKICAgICByZXR1cm4g
c2NyZWVuUmVjdCh3aWRnZXQpOwogfQogCitEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc2NyZWVuQ29s
b3JTcGFjZShXaWRnZXQqKQoreworICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKTsKK30KKwogYm9vbCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IoV2lkZ2V0KikKIHsK
ICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0
Zm9ybVhSLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZv
cm1YUi5oCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9Q
bGF0Zm9ybVhSLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4LDYgKzE4LDcgQEAKICAqLwogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJG
bG9hdFBvaW50M0QuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzR0wuaCIKICNpbmNsdWRlICJJ
bnRSZWN0LmgiCkBAIC0zMiw4ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAog
I2lmIFBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JTcGFjZUNHLmg+Ci0j
aW5jbHVkZSA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KKyNpbmNsdWRlICJJT1N1cmZhY2UuaCIKICNp
bmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgogI2VuZGlmCiAKQEAgLTQ0Niw3ICs0NDYsNyBA
QCBPcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6TGF5ZXJEYXRhPiBECiAgICAgV1RGOjpNYWNo
U2VuZFJpZ2h0IHN1cmZhY2VTZW5kUmlnaHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdXJm
YWNlU2VuZFJpZ2h0KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICBsYXllckRh
dGEuc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZN
b3ZlKHN1cmZhY2VTZW5kUmlnaHQpLCBXZWJDb3JlOjpzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAg
ICBsYXllckRhdGEuc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRS
aWdodChXVEZNb3ZlKHN1cmZhY2VTZW5kUmlnaHQpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSk7CiAjZW5kaWYKICAgICByZXR1cm4gbGF5ZXJEYXRhOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTEsOSArMTExLDkgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gQ1NTRmlsdGVyOjpidWlsZFJl
ZgogICAgICAgICBlZmZlY3RFbGVtZW50LnNldFN0YW5kYXJkQXR0cmlidXRlcyhlZmZlY3QuZ2V0
KCkpOwogICAgICAgICBpZiAoZWZmZWN0RWxlbWVudC5yZW5kZXJlcigpKSB7CiAjaWYgRU5BQkxF
KERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQotICAgICAgICAgICAgZWZmZWN0
LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKGVmZmVjdEVsZW1lbnQucmVuZGVyZXIoKS0+c3R5bGUo
KS5zdmdTdHlsZSgpLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSA9PSBDb2xvckludGVycG9s
YXRpb246OkxpbmVhclJHQiA/IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQiA6IERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CisgICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJh
dGluZ0NvbG9yU3BhY2UoZWZmZWN0RWxlbWVudC5yZW5kZXJlcigpLT5zdHlsZSgpLnN2Z1N0eWxl
KCkuY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpID09IENvbG9ySW50ZXJwb2xhdGlvbjo6TGlu
ZWFyUkdCID8gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCkgOiBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAjZWxzZQotICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVy
YXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CisgICAgICAgICAg
ICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCkpOwogI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgYnVpbGRlci0+YWRkKGVmZmVjdEVs
ZW1lbnQucmVzdWx0KCksIGVmZmVjdCk7CkBAIC0yOTYsNyArMjk2LDcgQEAgYm9vbCBDU1NGaWx0
ZXI6OmJ1aWxkKFJlbmRlckVsZW1lbnQmIHJlbgogICAgICAgICAgICAgLy8gVW5saWtlIFNWRyBG
aWx0ZXJzIGFuZCBDU1NGaWx0ZXJJbWFnZXMsIGZpbHRlciBmdW5jdGlvbnMgb24gdGhlIGZpbHRl
cgogICAgICAgICAgICAgLy8gcHJvcGVydHkgYXBwbGllZCBoZXJlIHNob3VsZCBub3QgY2xpcCB0
byB0aGVpciBwcmltaXRpdmUgc3VicmVnaW9ucy4KICAgICAgICAgICAgIGVmZmVjdC0+c2V0Q2xp
cHNUb0JvdW5kcyhjb25zdW1lciA9PSBGaWx0ZXJDb25zdW1lcjo6RmlsdGVyRnVuY3Rpb24pOwot
ICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQik7CisgICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3Bh
Y2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBpZiAoZmlsdGVyT3BlcmF0aW9uLnR5cGUoKSAhPSBGaWx0ZXJPcGVyYXRpb246OlJFRkVS
RU5DRSkgewogICAgICAgICAgICAgICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IFdURk1v
dmUocHJldmlvdXNFZmZlY3QpIH07CkBAIC0zNDQsMTEgKzM0NCwxMSBAQCB2b2lkIENTU0ZpbHRl
cjo6YWxsb2NhdGVCYWNraW5nU3RvcmVJZk5lCiAgICAgSW50U2l6ZSBsb2dpY2FsU2l6ZSB7IG1f
c291cmNlRHJhd2luZ1JlZ2lvbi5zaXplKCkgfTsKICAgICBpZiAoIXNvdXJjZUltYWdlKCkgfHwg
c291cmNlSW1hZ2UoKS0+bG9naWNhbFNpemUoKSAhPSBsb2dpY2FsU2l6ZSkgewogI2lmIFVTRShE
SVJFQ1QyRCkKLSAgICAgICAgc2V0U291cmNlSW1hZ2UoSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dp
Y2FsU2l6ZSwgcmVuZGVyaW5nTW9kZSgpLCAmdGFyZ2V0Q29udGV4dCwgZmlsdGVyU2NhbGUoKSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpKTsKKyAgICAg
ICAgc2V0U291cmNlSW1hZ2UoSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVuZGVy
aW5nTW9kZSgpLCAmdGFyZ2V0Q29udGV4dCwgZmlsdGVyU2NhbGUoKSwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCkpOwogI2Vsc2UKICAgICAgICAgVU5V
U0VEX1BBUkFNKHRhcmdldENvbnRleHQpOwogICAgICAgICBSZW5kZXJpbmdNb2RlIG1vZGUgPSBt
X2ZpbHRlclJlbmRlcmVyID8gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQgOiByZW5kZXJpbmdN
b2RlKCk7Ci0gICAgICAgIHNldFNvdXJjZUltYWdlKEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNh
bFNpemUsIG1vZGUsIGZpbHRlclNjYWxlKCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwg
UGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CisgICAgICAgIHNldFNvdXJjZUltYWdlKEltYWdlQnVmZmVy
OjpjcmVhdGUobG9naWNhbFNpemUsIG1vZGUsIGZpbHRlclNjYWxlKCksIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpKTsKICNlbmRpZgogICAgIH0KICAg
ICBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQgPSB0cnVlOwpAQCAtMzgyLDEyICszODIsMTIgQEAg
dm9pZCBDU1NGaWx0ZXI6OmFwcGx5KCkKICAgICBpZiAobV9maWx0ZXJSZW5kZXJlcikgewogICAg
ICAgICBtX2ZpbHRlclJlbmRlcmVyLT5hcHBseUVmZmVjdHMoZWZmZWN0KTsKICAgICAgICAgaWYg
KG1fZmlsdGVyUmVuZGVyZXItPmhhc1Jlc3VsdCgpKSB7Ci0gICAgICAgICAgICBlZmZlY3QudHJh
bnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOworICAg
ICAgICAgICAgZWZmZWN0LnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQog
ICAgIGVmZmVjdC5hcHBseSgpOwotICAgIGVmZmVjdC50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNl
KERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CisgICAgZWZmZWN0LnRyYW5zZm9ybVJlc3Vs
dENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogfQogCiBMYXlvdXRS
ZWN0IENTU0ZpbHRlcjo6Y29tcHV0ZVNvdXJjZUltYWdlUmVjdEZvckRpcnR5UmVjdChjb25zdCBM
YXlvdXRSZWN0JiBmaWx0ZXJCb3hSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3Niw3ICs4NzYsNyBAQCB2
b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllCiAgICAgICAgIG1hc2tSZWN0
LmludGVyc2VjdChzbmFwcGVkSW50UmVjdChwYWludEluZm8ucmVjdCkpOwogCiAgICAgICAgIC8v
IE5vdyBjcmVhdGUgdGhlIG1hc2suCi0gICAgICAgIG1hc2tJbWFnZSA9IEltYWdlQnVmZmVyOjpj
cmVhdGVDb21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNpemUoKSwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCLCBjb250ZXh0KTsKKyAgICAgICAgbWFza0ltYWdlID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZUNvbXBhdGlibGVCdWZmZXIobWFza1JlY3Quc2l6ZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgY29udGV4dCk7CiAgICAgICAgIGlmICghbWFza0ltYWdlKQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICBwYWludE1hc2tGb3JUZXh0RmlsbEJveChtYXNrSW1hZ2UuZ2V0
KCksIG1hc2tSZWN0LCBib3gsIHNjcm9sbGVkUGFpbnRSZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCShyZXZpc2lvbiAyNzc5
MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzI2Nyw3ICszMjY3LDcgQEAgc3RhdGljIFJlZlB0cjxQYXR0ZXJu
PiBwYXR0ZXJuRm9yRGVzY3JpcAogewogICAgIGNvbnN0IEZsb2F0U2l6ZSB0aWxlU2l6ZSB7IDMy
LCAxOCB9OwogCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKHRpbGVTaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGRlc3RD
b250ZXh0KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBh
dGlibGVCdWZmZXIodGlsZVNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBkZXN0
Q29udGV4dCk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0JKHJl
dmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTk4MywxMSArMTk4MywxMSBAQCB2b2lkIFJlbmRlclRo
ZW1lSU9TOjpwYWludFN5c3RlbVByZXZpZXdCCiAgICAgSU9TdXJmYWNlUmVmIHN1cmZhY2U7CiAg
ICAgaWYgKHVzZVNtYWxsQmFkZ2UpIHsKICAgICAgICAgaWYgKCFtX3NtYWxsQmFkZ2VTdXJmYWNl
KQotICAgICAgICAgICAgbV9zbWFsbEJhZGdlU3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKHsg
c21hbGxCYWRnZURpbWVuc2lvbiwgc21hbGxCYWRnZURpbWVuc2lvbiB9LCBzUkdCQ29sb3JTcGFj
ZVJlZigpKTsKKyAgICAgICAgICAgIG1fc21hbGxCYWRnZVN1cmZhY2UgPSBJT1N1cmZhY2U6OmNy
ZWF0ZSh7IHNtYWxsQmFkZ2VEaW1lbnNpb24sIHNtYWxsQmFkZ2VEaW1lbnNpb24gfSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgICAgICBzdXJmYWNlID0gbV9zbWFsbEJhZGdl
U3VyZmFjZS0+c3VyZmFjZSgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICghbV9sYXJnZUJh
ZGdlU3VyZmFjZSkKLSAgICAgICAgICAgIG1fbGFyZ2VCYWRnZVN1cmZhY2UgPSBJT1N1cmZhY2U6
OmNyZWF0ZSh7IGxhcmdlQmFkZ2VEaW1lbnNpb24sIGxhcmdlQmFkZ2VEaW1lbnNpb24gfSwgc1JH
QkNvbG9yU3BhY2VSZWYoKSk7CisgICAgICAgICAgICBtX2xhcmdlQmFkZ2VTdXJmYWNlID0gSU9T
dXJmYWNlOjpjcmVhdGUoeyBsYXJnZUJhZGdlRGltZW5zaW9uLCBsYXJnZUJhZGdlRGltZW5zaW9u
IH0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICAgICAgc3VyZmFjZSA9IG1f
bGFyZ2VCYWRnZVN1cmZhY2UtPnN1cmZhY2UoKTsKICAgICB9CiAgICAgW21fY2lDb250ZXh0Lmdl
dCgpIHJlbmRlcjp0cmFuc2xhdGVkSW1hZ2UgdG9JT1N1cmZhY2U6c3VyZmFjZSBib3VuZHM6YmFk
Z2VSZWN0IGNvbG9yU3BhY2U6c1JHQkNvbG9yU3BhY2VSZWYoKV07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCShyZXZpc2lvbiAyNzc5MzkpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTEzMDksNyArMTMwOSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50UHJvZ3Jlc3NC
YXIoY28KICAgICBjb25zdCBhdXRvJiByZW5kZXJQcm9ncmVzcyA9IGRvd25jYXN0PFJlbmRlclBy
b2dyZXNzPihyZW5kZXJPYmplY3QpOwogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gcmVu
ZGVyT2JqZWN0LmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAgICBib29sIGlzSW5k
ZXRlcm1pbmF0ZSA9IHJlbmRlclByb2dyZXNzLnBvc2l0aW9uKCkgPCAwOwotICAgIGF1dG8gaW1h
Z2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihpbmZsYXRlZFJl
Y3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
LCBwYWludEluZm8uY29udGV4dCgpKTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoaW5mbGF0ZWRSZWN0LnNpemUoKSwgZGV2aWNlU2Nh
bGVGYWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBwYWludEluZm8uY29udGV4
dCgpKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAJKHJldmlzaW9uIDI3
NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODEsNyArMTgxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFw
ZTo6Y3JlYXRlUmFzdAogICAgIEludFJlY3QgbWFyZ2luUmVjdCA9IHNuYXBwZWRJbnRSZWN0KG1h
cmdpblIpOwogICAgIGF1dG8gaW50ZXJ2YWxzID0gbWFrZVVuaXF1ZTxSYXN0ZXJTaGFwZUludGVy
dmFscz4obWFyZ2luUmVjdC5oZWlnaHQoKSwgLW1hcmdpblJlY3QueSgpKTsKICAgICAvLyBGSVhN
RSAoMTQ5NDIwKTogVGhpcyBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlvbmFsbHkgdW5h
Y2NlbGVyYXRlZC4KLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShp
bWFnZVJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFn
ZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBp
eGVsRm9ybWF0OjpCR1JBOCk7CiAKICAgICBhdXRvIGNyZWF0ZVNoYXBlID0gWyZdKCkgewogICAg
ICAgICBhdXRvIHJhc3RlclNoYXBlID0gbWFrZVVuaXF1ZTxSYXN0ZXJTaGFwZT4oV1RGTW92ZShp
bnRlcnZhbHMpLCBtYXJnaW5SZWN0LnNpemUoKSk7CkBAIC0xOTcsNyArMTk3LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlUmFzdAogICAgIGlmIChpbWFnZSkKICAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIEludFJlY3QoSW50UG9pbnQoKSwg
aW1hZ2VSZWN0LnNpemUoKSkpOwogCi0gICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZv
cm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3Jt
YXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9OwogICAgIGF1dG8gcGl4
ZWxCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoZm9ybWF0LCB7IEludFBvaW50
KCksIGltYWdlUmVjdC5zaXplKCkgfSk7CiAgICAgCiAgICAgLy8gV2UgY291bGQgZ2V0IHRvIGEg
dmFsdWUgd2hlcmUgUGl4ZWxCdWZmZXIgY291bGQgYmUgbnVsbG9wdC4gQSBjYXNlIHdoZXJlIElt
YWdlUmVjdC5zaXplKCkgaXMgaHVnZSwgUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZQpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VDbGlwcGVyLmNwcAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDYsNyArMTQ2LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcAog
ICAgIEFmZmluZVRyYW5zZm9ybSBhYnNvbHV0ZVRyYW5zZm9ybSA9IFNWR1JlbmRlcmluZ0NvbnRl
eHQ6OmNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RDb29yZGluYXRlU3lzdGVtKHJl
bmRlcmVyKTsKICAgICBpZiAoIWNsaXBwZXJEYXRhLmlzVmFsaWRGb3JHZW9tZXRyeShvYmplY3RC
b3VuZGluZ0JveCwgYWJzb2x1dGVUcmFuc2Zvcm0pKSB7CiAgICAgICAgIC8vIEZJWE1FICgxNDk0
NjkpOiBUaGlzIGltYWdlIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFj
Y2VsZXJhdGVkLiBNYWtpbmcgaXQgbWF0Y2ggdGhlIGNvbnRleHQgYnJlYWtzIG5lc3RlZCBjbGlw
cGluZywgdGhvdWdoLgotICAgICAgICBhdXRvIG1hc2tJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRl
eHQ6OmNyZWF0ZUltYWdlQnVmZmVyKG9iamVjdEJvdW5kaW5nQm94LCBhYnNvbHV0ZVRyYW5zZm9y
bSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJh
dGVkLCAmY29udGV4dCk7CisgICAgICAgIGF1dG8gbWFza0ltYWdlID0gU1ZHUmVuZGVyaW5nQ29u
dGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIob2JqZWN0Qm91bmRpbmdCb3gsIGFic29sdXRlVHJhbnNm
b3JtLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgJmNvbnRleHQpOwogICAgICAgICBpZiAoIW1hc2tJbWFnZSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAJKHJldmlzaW9uIDI3NzkzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsOSArMTA0LDkgQEAgc3RkOjp1bmlxdWVfcHRyPFNW
R0ZpbHRlckJ1aWxkZXI+IFJlbmRlcgogICAgICAgICBlZmZlY3QtPnNldEVmZmVjdEJvdW5kYXJp
ZXMoU1ZHTGVuZ3RoQ29udGV4dDo6cmVzb2x2ZVJlY3RhbmdsZTxTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXM+KCZlbGVtZW50LCBmaWx0ZXJFbGVtZW50KCkucHJpbWl0aXZlVW5p
dHMoKSwgdGFyZ2V0Qm91bmRpbmdCb3gpKTsKICAgICAgICAgaWYgKGVsZW1lbnQucmVuZGVyZXIo
KSkgewogI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAg
ICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShlbGVtZW50LnJlbmRlcmVy
KCktPnN0eWxlKCkuc3ZnU3R5bGUoKS5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzKCkgPT0gQ29s
b3JJbnRlcnBvbGF0aW9uOjpMaW5lYXJSR0IgPyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVh
clNSR0IgOiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOworICAgICAgICAgICAgZWZmZWN0
LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKGVsZW1lbnQucmVuZGVyZXIoKS0+c3R5bGUoKS5zdmdT
dHlsZSgpLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSA9PSBDb2xvckludGVycG9sYXRpb246
OkxpbmVhclJHQiA/IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigpIDogRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogI2Vsc2UKLSAgICAgICAgICAgIGVmZmVjdC0+c2V0
T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOworICAgICAg
ICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpKTsKICNlbmRpZgogICAgICAgICB9CiAgICAgICAgIGJ1aWxkZXItPmFkZChlbGVt
ZW50LnJlc3VsdCgpLCBXVEZNb3ZlKGVmZmVjdCkpOwpAQCAtMTk4LDkgKzE5OCw5IEBAIGJvb2wg
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3UKIAogICAgIGF1dG8gcmVuZGVyaW5n
TW9kZSA9IHJlbmRlcmVyLnNldHRpbmdzKCkuYWNjZWxlcmF0ZWRGaWx0ZXJzRW5hYmxlZCgpID8g
UmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQgOiBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
OwogI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICBh
dXRvIGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0I7CisgICAg
YXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCk7CiAj
ZWxzZQotICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjsK
KyAgICBhdXRvIGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKICNl
bmRpZgogICAgIGF1dG8gc291cmNlR3JhcGhpYyA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0
ZUltYWdlQnVmZmVyKGZpbHRlckRhdGEtPmRyYXdpbmdSZWdpb24sIGVmZmVjdGl2ZVRyYW5zZm9y
bSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZSwgY29udGV4dCk7CiAgICAgaWYgKCFzb3VyY2VH
cmFwaGljKSB7CkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRl
cjo6cG9zdEFwcGx5UgogICAgICAgICAgICAgZmlsdGVyRGF0YS5zdGF0ZSA9IEZpbHRlckRhdGE6
OkFwcGx5aW5nOwogICAgICAgICAgICAgbGFzdEVmZmVjdC0+YXBwbHkoKTsKICAgICAgICAgICAg
IGxhc3RFZmZlY3QtPmNvcnJlY3RGaWx0ZXJSZXN1bHRJZk5lZWRlZCgpOwotICAgICAgICAgICAg
bGFzdEVmZmVjdC0+dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IpOworICAgICAgICAgICAgbGFzdEVmZmVjdC0+dHJhbnNmb3JtUmVzdWx0Q29sb3JT
cGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAgIH0KICAgICAgICAg
ZmlsdGVyRGF0YS5zdGF0ZSA9IEZpbHRlckRhdGE6OkJ1aWx0OwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFk
aWVudC5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcg
KzYwLDcgQEAgc3RhdGljIGlubGluZSBib29sIGNyZWF0ZU1hc2tBbmRTd2FwQ29udAogICAgIEFm
ZmluZVRyYW5zZm9ybSBhYnNvbHV0ZVRyYW5zZm9ybSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNh
bGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RDb29yZGluYXRlU3lzdGVtKCp0ZXh0Um9v
dEJsb2NrKTsKICAgICBGbG9hdFJlY3QgcmVwYWludFJlY3QgPSB0ZXh0Um9vdEJsb2NrLT5yZXBh
aW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpOwogCi0gICAgYXV0byBtYXNrSW1hZ2UgPSBTVkdS
ZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihyZXBhaW50UmVjdCwgYWJzb2x1dGVU
cmFuc2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgY29udGV4dC0+cmVuZGVyaW5n
TW9kZSgpKTsKKyAgICBhdXRvIG1hc2tJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0
ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCksIGNvbnRleHQtPnJlbmRlcmluZ01vZGUoKSk7CiAgICAgaWYgKCFt
YXNrSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAJ
KHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VNYXNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw5ICs3MSw5IEBAIGJv
b2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3UKICAgICAgICAgY29uc3QgU1ZH
UmVuZGVyU3R5bGUmIHN2Z1N0eWxlID0gc3R5bGUoKS5zdmdTdHlsZSgpOwogCiAjaWYgRU5BQkxF
KERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQotICAgICAgICBhdXRvIGNvbG9y
U3BhY2UgPSBzdmdTdHlsZS5jb2xvckludGVycG9sYXRpb24oKSA9PSBDb2xvckludGVycG9sYXRp
b246OkxpbmVhclJHQiA/IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQiA6IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQjsKKyAgICAgICAgYXV0byBjb2xvclNwYWNlID0gc3ZnU3R5
bGUuY29sb3JJbnRlcnBvbGF0aW9uKCkgPT0gQ29sb3JJbnRlcnBvbGF0aW9uOjpMaW5lYXJSR0Ig
PyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKSA6IERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpOwogI2Vsc2UKLSAgICAgICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCOworICAgICAgICBhdXRvIGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKTsKICNlbmRpZgogCiAgICAgICAgIC8vIEZJWE1FICgxNDk0NzAp
OiBUaGlzIGltYWdlIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2Vs
ZXJhdGVkLiBNYWtpbmcgaXQgbWF0Y2ggdGhlIGNvbnRleHQgYnJlYWtzIGFscGhhIG1hc2tpbmcs
IHRob3VnaC4KQEAgLTkyLDcgKzkyLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6
YXBwbHlSZXNvdQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFJlbmRlclNWR1Jlc291cmNl
TWFza2VyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UoTWFza2VyRGF0YSogbWFza2VyRGF0YSwg
RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbmRlck9iamVjdCogb2JqZWN0KQor
Ym9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6ZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdlKE1h
c2tlckRhdGEqIG1hc2tlckRhdGEsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JT
cGFjZSwgUmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0JiBtYXNr
SW1hZ2VDb250ZXh0ID0gbWFza2VyRGF0YS0+bWFza0ltYWdlLT5jb250ZXh0KCk7CiAKQEAgLTEx
OSw3ICsxMTksNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpkcmF3Q29udGVuCiAg
ICAgfQogCiAjaWYgIVVTRShDRykKLSAgICBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UtPnRyYW5zZm9y
bUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBjb2xvclNwYWNlKTsKKyAg
ICBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UtPnRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCksIGNvbG9yU3BhY2UpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
Y29sb3JTcGFjZSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgJKHJldmlzaW9uIDI3NzkzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBwcml2YXRlOgogCiAgICAgY29uc3Qg
Y2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSZXNv
dXJjZU1hc2tlciI7IH0KIAotICAgIGJvb2wgZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdlKE1hc2tl
ckRhdGEqLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFJlbmRlck9iamVjdCopOworICAgIGJvb2wg
ZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdlKE1hc2tlckRhdGEqLCBjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmLCBSZW5kZXJPYmplY3QqKTsKICAgICB2b2lkIGNhbGN1bGF0ZU1hc2tDb250ZW50
UmVwYWludFJlY3QoKTsKIAogICAgIEZsb2F0UmVjdCBtX21hc2tDb250ZW50Qm91bmRhcmllczsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0
ZXJuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlUGF0dGVybi5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjUzLDcgKzI1Myw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpi
dWlsZFRpbGUKIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpj
cmVhdGVUaWxlSW1hZ2UoY29uc3QgUGF0dGVybkF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIGNvbnN0
IEZsb2F0UmVjdCYgdGlsZUJvdW5kYXJpZXMsIGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVUaWxl
Qm91bmRhcmllcywgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0aWxlSW1hZ2VUcmFuc2Zvcm0sIEZs
b2F0UmVjdCYgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMsIFJlbmRlcmluZ01vZGUgcmVu
ZGVyaW5nTW9kZSkgY29uc3QKIHsKICAgICBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcyA9
IEltYWdlQnVmZmVyOjpjbGFtcGVkUmVjdChhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzKTsKLSAgICBh
dXRvIHRpbGVJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGFi
c29sdXRlVGlsZUJvdW5kYXJpZXMsIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIHJlbmRlcmluZ01vZGUpOworICAgIGF1dG8gdGlsZUlt
YWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoYWJzb2x1dGVUaWxl
Qm91bmRhcmllcywgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpLCByZW5kZXJpbmdNb2RlKTsKICAgICBpZiAoIXRpbGVJbWFnZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMjc3OTM5KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjM2LDcgKzIzNiw3IEBAIEFmZmluZVRyYW5zZm9ybSBTVkdSZW5k
ZXJpbmdDb250ZXh0OjpjYWwKICAgICByZXR1cm4gYWJzb2x1dGVUcmFuc2Zvcm07CiB9CiAKLVJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29s
dXRlVHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVuZGVyaW5n
TW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCitSZWZQ
dHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNv
bnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0
ZVRyYW5zZm9ybSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBSZW5k
ZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkK
IHsKICAgICBJbnRSZWN0IHBhaW50UmVjdCA9IGNhbGN1bGF0ZUltYWdlQnVmZmVyUmVjdCh0YXJn
ZXRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSk7CiAgICAgLy8gRG9uJ3QgY3JlYXRlIGVtcHR5IElt
YWdlQnVmZmVycy4KQEAgLTI2NCw3ICsyNjQsNyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1Jl
bmRlcmluZ0NvbnRleHQ6CiAgICAgcmV0dXJuIGltYWdlQnVmZmVyOwogfQogCi1SZWZQdHI8SW1h
Z2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwgRGVzdGlu
YXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBTVkdS
ZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdl
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZFJlY3QsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgSW50U2l6ZSBjbGFtcGVkU2l6ZSA9IHJv
dW5kZWRJbnRTaXplKGNsYW1wZWRSZWN0LnNpemUoKSk7CiAgICAgRmxvYXRTaXplIHVuY2xhbXBl
ZFNpemUgPSByb3VuZGVkSW50U2l6ZSh0YXJnZXRSZWN0LnNpemUoKSk7CkBAIC0zNTAsNyArMzUw
LDcgQEAgYm9vbCBTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJGb3JlZ3JvdQogCiAgICAgLy8g
Q3JlYXRlIGEgbmV3IGJ1ZmZlciBhbmQgcGFpbnQgdGhlIGZvcmVncm91bmQgaW50byBpdC4KICAg
ICBpZiAoIWltYWdlQnVmZmVyKSB7Ci0gICAgICAgIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGJvdW5kaW5nQm94LnNpemUo
KSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgbV9wYWludEluZm8tPmNvbnRleHQoKSk7
CisgICAgICAgIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZm
ZXIoZXhwYW5kZWRJbnRTaXplKGJvdW5kaW5nQm94LnNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpLCBtX3BhaW50SW5mby0+Y29udGV4dCgpKTsKICAgICAgICAgaWYgKCFpbWFn
ZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaAkocmV2
aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJp
bmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDggKzYwLDggQEAgcHVibGljOgogICAg
IHZvaWQgcHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChSZW5kZXJFbGVtZW50JiwgUGFpbnRJbmZv
JiwgTmVlZHNHcmFwaGljc0NvbnRleHRTYXZlID0gRG9udFNhdmVHcmFwaGljc0NvbnRleHQpOwog
ICAgIGJvb2wgaXNSZW5kZXJpbmdQcmVwYXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5n
RmxhZ3MgJiBSZW5kZXJpbmdQcmVwYXJlZDsgfQogCi0gICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKTsKLSAg
ICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9h
dFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZFJlY3QsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51
bGxwdHIpOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVy
KGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNv
bHV0ZVRyYW5zZm9ybSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUmVuZGVyaW5nTW9k
ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpOworICAgIHN0YXRpYyBSZWZQdHI8
SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiwgUmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpOwog
CiAgICAgc3RhdGljIHZvaWQgcmVuZGVyU3VidHJlZVRvQ29udGV4dChHcmFwaGljc0NvbnRleHQm
LCBSZW5kZXJFbGVtZW50JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CiAgICAgc3RhdGljIHZv
aWQgY2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBSZWZQ
dHI8SW1hZ2VCdWZmZXI+JiwgYm9vbCBzYWZlVG9DbGVhcik7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNyw3
ICsyMTcsNyBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IFNWR0ltYWdlOjpuYXRpdmVJbWFnCiAgICAg
aWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBpbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JB
OCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjQ3LDcgKzI0Nyw3IEBAIHZvaWQgU1ZHSW1hZ2U6OmRy
YXdQYXR0ZXJuRm9yQ29udGFpbmVyKEcKICAgICBGbG9hdFJlY3QgaW1hZ2VCdWZmZXJTaXplID0g
em9vbWVkQ29udGFpbmVyUmVjdDsKICAgICBpbWFnZUJ1ZmZlclNpemUuc2NhbGUoaW1hZ2VCdWZm
ZXJTY2FsZS53aWR0aCgpLCBpbWFnZUJ1ZmZlclNjYWxlLmhlaWdodCgpKTsKIAotICAgIGF1dG8g
YnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRT
aXplKGltYWdlQnVmZmVyU2l6ZS5zaXplKCkpLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IsIGNvbnRleHQpOworICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBh
dGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGltYWdlQnVmZmVyU2l6ZS5zaXplKCkpLCAxLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY29udGV4dCk7CiAgICAgaWYgKCFidWZmZXIp
IC8vIEZhaWxlZCB0byBhbGxvY2F0ZSBidWZmZXIuCiAgICAgICAgIHJldHVybjsKICAgICBkcmF3
Rm9yQ29udGFpbmVyKGJ1ZmZlci0+Y29udGV4dCgpLCBjb250YWluZXJTaXplLCBjb250YWluZXJa
b29tLCBpbml0aWFsRnJhZ21lbnRVUkwsIGltYWdlQnVmZmVyU2l6ZSwgem9vbWVkQ29udGFpbmVy
UmVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUlt
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRUltYWdlLmNwcAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDgg
KzkzLDggQEAgdm9pZCBGRUltYWdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGlmICgh
bV9pbWFnZSAmJiAhcmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEZFSW1hZ2Ug
cmVzdWx0cyBhcmUgYWx3YXlzIGluIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQgotICAgIHNl
dFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKKyAgICAvLyBG
RUltYWdlIHJlc3VsdHMgYXJlIGFsd2F5cyBpbiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KQorICAgIHNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkp
OwogCiAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1
bHQoKTsKICAgICBpZiAoIXJlc3VsdEltYWdlKQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3Nzkz
OSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
OTcgQEAKKzIwMjEtMDUtMjIgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAg
ICAgIENvbnZlcnQgRGVzdGluYXRpb25Db2xvclNwYWNlIGZyb20gYW4gZW51bSB0byBjbGFzcyB3
cmFwcGluZyBhIHBsYXRmb3JtIGNvbG9yIHNwYWNlIChDR0NvbG9yU3BhY2VSZWYgZm9yIENHIHBv
cnRzLCBldGMuKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI2MTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAg
LSBVcGRhdGUgSW1hZ2VCdWZmZXIgc3ViY2xhc3Mgc2lnbmF0dXJlcyB0byB1c2UgImNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYiIHRvCisgICAgICAgICAgY29uZm9ybSB0byB0aGUgYmFzZSBj
bGFzcy4KKyAgICAgICAgLSBSZXBsYWNlIENvbG9yU3BhY2VEYXRhIHdpdGggT3B0aW9uYWw8RGVz
dGluYXRpb25Db2xvclNwYWNlPi4gTm8gcmVhc29uIHRvIGhhdmUgdHdvCisgICAgICAgICAgdHlw
ZXMgdGhhdCBhcmUgdGhlIHNhbWUuCisgICAgICAgIC0gR2l2ZSBhbGwgcG9ydHMgYSBjb2xvciBz
cGFjZSBjb25maWd1cmF0aW9uIGZvciBTaGFyZWFibGVCaXRtYXAgbm93IHRoYXQgdGhlcmUgaXMK
KyAgICAgICAgICBhIGNvbW1vbiBjbGFzcyBmb3IgcmVwcmVzZW50aW5nIGNvbG9yIHNwYWNlLgor
ICAgICAgICAtIFVwZGF0ZSBEaXNwbGF5TGlzdCBkZWNvZGluZyB0byBhY2NvdW50IGZvciBCZWdp
bkNsaXBUb0RyYXdpbmdDb21tYW5kcyBhbmQgR2V0UGl4ZWxCdWZmZXIKKyAgICAgICAgICBubyBs
b25nZXIgYmVpbmcgaW5saW5lYWJsZSBkdWUgdG8gbm93IGhhdmluZyBub24tdHJpdmlhbCBkZXN0
cnVjdG9ycyBkdWUgdG8gCisgICAgICAgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1lbWJlci4K
KworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Y3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2Rl
ckFWRlByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVy
QmFja2luZ1N0b3JlOjpzd2FwVG9WYWxpZEZyb250QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmFwcGx5QmFja2luZ1N0b3JlVG9MYXllcik6CisgICAg
ICAgICogU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJl
YWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6U2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFNo
YXJlZC9TaGFyZWFibGVCaXRtYXAuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICog
U2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y29sb3JT
cGFjZSk6CisgICAgICAgICogU2hhcmVkL21hYy9Db2xvclNwYWNlRGF0YS5oOiBSZW1vdmVkLgor
ICAgICAgICAqIFNoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEubW06IFJlbW92ZWQuCisgICAgICAg
ICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZp
ZXdJT1MubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfdGFrZVZpZXdTbmFwc2hvdF0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX3NuYXBzaG90UmVjdDppbnRvSW1hZ2VPZldpZHRoOmNvbXBsZXRp
b25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlld0ltcGw6OmNvbG9yU3BhY2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xp
ZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVIb3N0Lm1tOgorICAgICAgICAoV2ViS2l0OjpyZWN1cnNpdmVseU1hcElPU3VyZmFjZUJhY2tp
bmdTdG9yZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1w
bDo6Y29sb3JTcGFjZSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVBy
b3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbG9yU3BhY2UpOgor
ICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6
Y29uZmlndXJhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBo
aWNzQ29udGV4dEdMUHJveHk6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VC
dWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRjo6Y3JlYXRlRnJhbWVJbWFn
ZUF0SW5kZXgpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL01lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAo
V2ViS2l0OjpQREZQbHVnaW46OlBERlBsdWdpbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpjcmVhdGVTaGFyZWFibGVCaXRtYXApOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xp
ZW50OjpjcmVhdGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0Ojpjb252
ZXJ0RHJhZ0ltYWdlVG9CaXRtYXApOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3
aW5nQXJlYS5oOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6c2V0Q29sb3JTcGFjZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6c25hcHNob3RPcHRpb25zVG9CaXRtYXBDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OlRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldENvbG9yU3BhY2UpOgorCiAyMDIxLTA1LTIzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIENoZWNrZWRMb2NrIGlu
IGV2ZW4gbW9yZSBwbGFjZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDI3
NzkzOSkKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMjAzLDcgKzIwMyw2IEBAIFNoYXJlZC9pb3MvV2ViVG91Y2hFdmVudElPUy5jcHAKIAogU2hh
cmVkL21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCiBTaGFyZWQvbWFjL0NvZGVTaWduaW5nLm1t
Ci1TaGFyZWQvbWFjL0NvbG9yU3BhY2VEYXRhLm1tCiBTaGFyZWQvbWFjL0hhbmdEZXRlY3Rpb25E
aXNhYmxlck1hYy5tbQogU2hhcmVkL21hYy9OYXRpdmVXZWJHZXN0dXJlRXZlbnRNYWMubW0KIFNo
YXJlZC9tYWMvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudE1hYy5tbQpJbmRleDogU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgJKHJl
dmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFJl
bW90ZUltYWdlQnVmZmVyIDogcHVibGljIFdlYkNvcmUKICAgICB1c2luZyBCYXNlQ29uY3JldGVJ
bWFnZUJ1ZmZlcjo6cHV0UGl4ZWxCdWZmZXI7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgYXV0byBj
cmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJDb3JlOjpQ
aXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgV2Vi
Q29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFdlYkNv
cmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3Jt
YXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpCiAgICAgewogICAgICAgICByZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VC
dWZmZXI6OnRlbXBsYXRlIGNyZWF0ZTxSZW1vdGVJbWFnZUJ1ZmZlcj4oc2l6ZSwgcmVzb2x1dGlv
blNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgbnVsbHB0ciwgcmVtb3RlUmVuZGVyaW5n
QmFja2VuZCwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZEZs
dXNoKERpCiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpE
aWRGbHVzaChmbHVzaElkZW50aWZpZXIsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciksIG1f
cmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFJl
bmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCit2b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6
ZSYgbG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVs
Rm9ybWF0IHBpeGVsRm9ybWF0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwog
ICAgIEFTU0VSVChyZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIHx8
IHJlbmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCk7CkBAIC00OTUs
NiArNDk1LDggQEAgT3B0aW9uYWw8RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVQogICAg
ICAqIFNlZSB0aGUgY29tbWVudCBhdCB0aGUgdG9wIG9mIERpc3BsYXlMaXN0SXRlbXMuaCBmb3Ig
d2h5LiAqLwogCiAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgorICAgICAgICByZXR1cm4gZGVjb2Rl
QW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oZGF0YSwg
bGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkNsaXBPdXRUb1BhdGg6CiAgICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxp
c3Q6OkNsaXBPdXRUb1BhdGg+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwogICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwUGF0aDoKQEAgLTUyMSw2ICs1MjMsOCBAQCBP
cHRpb25hbDxEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VCiAgICAgICAgIHJldHVybiBk
ZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPihkYXRh
LCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6RmlsbFJvdW5kZWRSZWN0OgogICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3Bs
YXlMaXN0OjpGaWxsUm91bmRlZFJlY3Q+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwor
ICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpHZXRQaXhlbEJ1ZmZlcjoKKyAgICAgICAg
cmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6R2V0UGl4ZWxCdWZmZXI+KGRhdGEs
IGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpQdXRQaXhlbEJ1ZmZlcjoKICAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5
TGlzdDo6UHV0UGl4ZWxCdWZmZXI+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwogICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRMaW5lRGFzaDoKQEAgLTU0MCw3ICs1NDQs
NiBAQCBPcHRpb25hbDxEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VCiAgICAgY2FzZSBE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXA6CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkNsaXBPdXQ6CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBUb0ltYWdl
QnVmZmVyOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdp
bmdDb21tYW5kczoKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RW5kQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzOgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDb25jYXRlbmF0
ZUNUTToKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVu
dE1hcmtlcjoKQEAgLTU4MSw3ICs1ODQsNiBAQCBPcHRpb25hbDxEaXNwbGF5TGlzdDo6SXRlbUhh
bmRsZT4gV0FSTl9VCiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZVJlY3Q6
CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZUxpbmU6CiAgICAgY2FzZSBE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OlRyYW5zbGF0ZToKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6R2V0UGl4ZWxCdWZmZXI6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuaAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTQgKzQ0
LDE4IEBACiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCiBuYW1lc3BhY2UgRGlzcGxheUxpc3Qg
ewogY2xhc3MgRGlzcGxheUxpc3Q7CiBjbGFzcyBJdGVtOwogfQorCitjbGFzcyBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U7CiBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBOYXRpdmVJbWFnZTsKLWVudW0g
Y2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDogdWludDhfdDsKKwogZW51bSBjbGFzcyBSZW5k
ZXJpbmdNb2RlIDogYm9vbDsKKwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEyMSw3ICsx
MjUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJp
ZGU7CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KLSAgICB2b2lkIGNyZWF0ZUlt
YWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNvcmU6
OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRp
b25Db2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiwg
V2ViQ29yZTo6UGl4ZWxGb3JtYXQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cik7CiAgICAgdm9pZCB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KGNvbnN0IEdQVVByb2Nlc3NX
YWtldXBNZXNzYWdlQXJndW1lbnRzJik7CiAgICAgdm9pZCB1cGRhdGVTaGFyZWRNZW1vcnlGb3JH
ZXRQaXhlbEJ1ZmZlcih1aW50MzJfdCBieXRlQ291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mJik7CiAgICAgdm9pZCBzZW1hcGhvcmVG
b3JHZXRQaXhlbEJ1ZmZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2VtYXBo
b3JlJik+JiYpOwpJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUlt
YWdlRGVjb2RlckFWRlByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwCShyZXZpc2lvbiAyNzc5
MzkpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMjggKzExMywyOCBAQCB2b2lkIFJl
bW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpzZXREYXRhCiAgICAgY29tcGxldGlvbkhhbmRsZXIo
ZnJhbWVDb3VudCwgaW1hZ2VEZWNvZGVyLT5zaXplKCksIGltYWdlRGVjb2Rlci0+aGFzVHJhY2so
KSwgV1RGTW92ZShmcmFtZUluZm9zKSk7CiB9CiAKLXZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
UHJveHk6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KEltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRl
bnRpZmllciwgc2l6ZV90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdU
Rjo6TWFjaFNlbmRSaWdodD4mJiwgQ29sb3JTcGFjZURhdGEmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYsIE9wdGlv
bmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgQVNTRVJUKG1faW1hZ2VEZWNvZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7
CiAgICAgT3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJpZ2h0PiBzZW5kUmlnaHQ7Ci0gICAgQ29sb3JT
cGFjZURhdGEgY29sb3JTcGFjZURhdGE7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRp
b25Db2xvclNwYWNlPiBjb2xvclNwYWNlOwogICAgIGlmICghbV9pbWFnZURlY29kZXJzLmNvbnRh
aW5zKGlkZW50aWZpZXIpKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc2Vu
ZFJpZ2h0KSwgV1RGTW92ZShjb2xvclNwYWNlRGF0YSkpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKHNlbmRSaWdodCksIFdURk1vdmUoY29sb3JTcGFjZSkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiAgICAgYXV0byBmcmFtZUltYWdlID0gbV9pbWFnZURlY29kZXJzLmdl
dChpZGVudGlmaWVyKS0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgpOwogICAgIGlmICgh
ZnJhbWVJbWFnZSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHNlbmRSaWdo
dCksIFdURk1vdmUoY29sb3JTcGFjZURhdGEpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShzZW5kUmlnaHQpLCBXVEZNb3ZlKGNvbG9yU3BhY2UpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21J
bWFnZShmcmFtZUltYWdlLmdldCgpKSkgewogICAgICAgICBzZW5kUmlnaHQgPSBzdXJmYWNlLT5j
cmVhdGVTZW5kUmlnaHQoKTsKLSAgICAgICAgY29sb3JTcGFjZURhdGEuY2dDb2xvclNwYWNlID0g
c3VyZmFjZS0+Y29sb3JTcGFjZSgpOworICAgICAgICBjb2xvclNwYWNlID0gc3VyZmFjZS0+Y29s
b3JTcGFjZSgpOwogICAgIH0KIAotICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc2VuZFJp
Z2h0KSwgV1RGTW92ZShjb2xvclNwYWNlRGF0YSkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUoc2VuZFJpZ2h0KSwgV1RGTW92ZShjb2xvclNwYWNlKSk7CiB9CiAKIHZvaWQgUmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGUHJveHk6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZShJbWFnZURlY29kZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQ
cm94eS5oCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyAr
MjcsNiBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBIQVZFKEFWQVNTRVRSRUFERVIp
CiAKLSNpbmNsdWRlICJDb2xvclNwYWNlRGF0YS5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdl
RGVjb2RlckFWRk9iakMuaD4KQEAgLTU3LDcgKzU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRl
bGV0ZURlY29kZXIoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllcik7CiAgICAgdm9pZCBz
ZXRFeHBlY3RlZENvbnRlbnRTaXplKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIGxv
bmcgbG9uZyBleHBlY3RlZENvbnRlbnRTaXplKTsKICAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6
SW1hZ2VEZWNvZGVySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc2l6ZV90IGZyYW1lQ291bnQs
IGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUsIGJvb2wgaGFzVHJhY2ssIE9wdGlvbmFsPFZl
Y3RvcjxXZWJDb3JlOjpJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4+JiYpPiYmKTsKLSAgICB2b2lk
IGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIs
IHNpemVfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXVEY6Ok1hY2hT
ZW5kUmlnaHQ+JiYsIENvbG9yU3BhY2VEYXRhJiYpPiYmKTsKKyAgICB2b2lkIGNyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIHNpemVfdCBpbmRl
eCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYs
IE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4mJik+JiYpOwogICAgIHZv
aWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIs
IHNpemVfdCBpbmRleCk7CiAKICAgICB2b2lkIGVuY29kZWREYXRhU3RhdHVzQ2hhbmdlZChXZWJD
b3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNzYWdlcy5pbgko
d29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBtZXNzYWdlcyAtPiBSZW1vdGVJbWFnZURl
Y29kZXJBVkZQcm94eSBOCiAgICAgRGVsZXRlRGVjb2RlcihXZWJDb3JlOjpJbWFnZURlY29kZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgU2V0RXhwZWN0ZWRDb250ZW50U2l6ZShXZWJDb3Jl
OjpJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGxvbmcgbG9uZyBleHBlY3RlZENv
bnRlbnRTaXplKQogICAgIFNldERhdGEoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciBp
ZGVudGlmaWVyLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpIC0+IChzaXplX3QgZnJhbWVDb3VudCwgV2ViQ29yZTo6SW50U2l6ZSBzaXpl
LCBib29sIGhhc1RyYWNrLCBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpG
cmFtZUluZm8+PiBmcmFtZUluZm9zKSBTeW5jaHJvbm91cwotICAgIENyZWF0ZUZyYW1lSW1hZ2VB
dEluZGV4KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgc2l6ZV90
IGluZGV4KSAtPiAoT3B0aW9uYWw8TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0LCBzdHJ1Y3QgV2Vi
S2l0OjpDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlKSBTeW5jaHJvbm91cworICAgIENyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgc2l6ZV90IGluZGV4KSAtPiAoT3B0aW9uYWw8TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0LCBP
cHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2UpIFN5bmNo
cm9ub3VzCiAgICAgQ2xlYXJGcmFtZUJ1ZmZlckNhY2hlKFdlYkNvcmU6OkltYWdlRGVjb2Rlcklk
ZW50aWZpZXIgaWRlbnRpZmllciwgc2l6ZV90IGluZGV4KQogfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0
LDEwICs3NCw3IEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGU6OmNsZWFyKCkKIAogdm9p
ZCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb246OmVuY29kZShJUEM6OkVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBpc09wYXF1ZTsKLSNpZiBQTEFURk9STShD
T0NPQSkKLSAgICBlbmNvZGVyIDw8IGNvbG9yU3BhY2U7Ci0jZW5kaWYKKyAgICBlbmNvZGVyIDw8
IGNvbG9yU3BhY2UgPDwgaXNPcGFxdWU7CiAjaWYgVVNFKERJUkVDVDJEKQogICAgIFNoYXJlZE1l
bW9yeTo6SGFuZGxlOjplbmNvZGVIYW5kbGUoZW5jb2Rlciwgc2hhcmVkUmVzb3VyY2VIYW5kbGUp
OwogCkBAIC04OCwyMSArODUsMjggQEAgdm9pZCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRp
b246OmVuYwogI2VuZGlmCiB9CiAKLWJvb2wgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9u
OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb25maWd1cmF0aW9uJiBjb25maWd1cmF0
aW9uKQorYm9vbCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb246OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIsIENvbmZpZ3VyYXRpb24mIHJlc3VsdCkKIHsKLSAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGNvbmZpZ3VyYXRpb24uaXNPcGFxdWUpKQorICAgIE9wdGlvbmFsPE9wdGlvbmFs
PFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4+IGNvbG9yU3BhY2U7CisgICAgZGVjb2Rl
ciA+PiBjb2xvclNwYWNlOworICAgIGlmICghY29sb3JTcGFjZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29uZmln
dXJhdGlvbi5jb2xvclNwYWNlKSkKKworICAgIE9wdGlvbmFsPGJvb2w+IGlzT3BhcXVlOworICAg
IGRlY29kZXIgPj4gaXNPcGFxdWU7CisgICAgaWYgKCFpc09wYXF1ZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotI2VuZGlmCisKKyAgICByZXN1bHQgPSBDb25maWd1cmF0aW9uIHsgV1RGTW92ZSgq
Y29sb3JTcGFjZSksICppc09wYXF1ZSB9OworCiAjaWYgVVNFKERJUkVDVDJEKQogICAgIGF1dG8g
cHJvY2Vzc1NwZWNpZmljSGFuZGxlID0gU2hhcmVkTWVtb3J5OjpIYW5kbGU6OmRlY29kZUhhbmRs
ZShkZWNvZGVyKTsKICAgICBpZiAoIXByb2Nlc3NTcGVjaWZpY0hhbmRsZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgY29uZmlndXJhdGlvbi5zaGFyZWRSZXNvdXJjZUhhbmRsZSA9IHBy
b2Nlc3NTcGVjaWZpY0hhbmRsZS52YWx1ZSgpOworICAgIHJlc3VsdC5zaGFyZWRSZXNvdXJjZUhh
bmRsZSA9IHByb2Nlc3NTcGVjaWZpY0hhbmRsZS52YWx1ZSgpOwogI2VuZGlmCisKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFw
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgJ
KHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1h
cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxNSArMjYsMTIgQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9EZXN0aW5hdGlvbkNv
bG9yU3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1BsYXRmb3JtSW1hZ2UuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSAiQ29s
b3JTcGFjZURhdGEuaCIKLSNlbmRpZgotCiAjaWYgVVNFKERJUkVDVDJEKQogaW50ZXJmYWNlIElE
MkQxQml0bWFwOwogaW50ZXJmYWNlIElEMkQxUmVuZGVyVGFyZ2V0OwpAQCAtNTUsMTAgKzUyLDgg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBTaGFyZWFibGVCaXRtYXAgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8U2hhcmVhYmxlQml0bWFwPiB7CiBwdWJsaWM6CiAgICAgc3RydWN0
IENvbmZpZ3VyYXRpb24geworICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNv
bG9yU3BhY2U+IGNvbG9yU3BhY2U7CiAgICAgICAgIGJvb2wgaXNPcGFxdWUgeyBmYWxzZSB9Owot
I2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlOwot
I2VuZGlmCiAjaWYgVVNFKERJUkVDVDJEKQogICAgICAgICBtdXRhYmxlIEhBTkRMRSBzaGFyZWRS
ZXNvdXJjZUhhbmRsZSB7IG51bGxwdHIgfTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCSh3b3JraW5nIGNvcHkp
CkBAIC04Miw2ICs4Miw4IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1
ZGUgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKKwogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNYWNoU2Vu
ZFJpZ2h0OwogfQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MjUsOCArMzI1LDExIEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlAK
ICAgICBwYXJhbWV0ZXJzLmhhc1Jlc291cmNlTG9hZENsaWVudCA9IFdURk1vdmUoKmhhc1Jlc291
cmNlTG9hZENsaWVudCk7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpKQorICAgIE9wdGlvbmFsPE9wdGlvbmFsPERlc3Rp
bmF0aW9uQ29sb3JTcGFjZT4+IGNvbG9yU3BhY2U7CisgICAgZGVjb2RlciA+PiBjb2xvclNwYWNl
OworICAgIGlmICghY29sb3JTcGFjZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICBwYXJhbWV0ZXJzLmNvbG9yU3BhY2UgPSBXVEZNb3ZlKCpjb2xvclNwYWNlKTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXNlU3lzdGVtQXBwZWFyYW5jZSkpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDI3NzkzOSkKKysr
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2aXR5U3RhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0NvbG9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0Zsb2F0U2l6ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvTGF5b3V0TWlsZXN0b25lLmg+CkBAIC00OSwxMCArNTAsNiBA
QAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKLSNpZiBQTEFURk9STShNQUMpCi0jaW5jbHVkZSAiQ29sb3JTcGFjZURhdGEuaCIKLSNl
bmRpZgotCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogI2luY2x1ZGUgPFdlYkNv
cmUvQXBwbGljYXRpb25NYW5pZmVzdC5oPgogI2VuZGlmCkBAIC0xNDYsNyArMTQzLDcgQEAgc3Ry
dWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIGJvb2wgdXNlRWxldmF0ZWRVc2Vy
SW50ZXJmYWNlTGV2ZWwgeyBmYWxzZSB9OwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIENvbG9y
U3BhY2VEYXRhIGNvbG9yU3BhY2U7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25D
b2xvclNwYWNlPiBjb2xvclNwYWNlOwogICAgIGJvb2wgdXNlU3lzdGVtQXBwZWFyYW5jZTsKICNl
bmRpZgogI2lmIEVOQUJMRShNRVRBX1ZJRVdQT1JUKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFy
ZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tp
bmdTdG9yZS5tbQkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTIsMTkgKzIxMiwxOSBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2FwVG9W
YWxpCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFR5cGU6OklPU3VyZmFjZToKICAg
ICAgICAgaWYgKHNob3VsZFVzZVJlbW90ZVJlbmRlcmluZykKLSAgICAgICAgICAgIG1fZnJvbnRC
dWZmZXIuaW1hZ2VCdWZmZXIgPSBtX2xheWVyLT5jb250ZXh0KCktPmVuc3VyZVJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSgpLmNyZWF0ZUltYWdlQnVmZmVyKG1fc2l6ZSwgV2ViQ29yZTo6UmVu
ZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQsIG1fc2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSk7CisgICAgICAgICAgICBtX2Zyb250QnVmZmVy
LmltYWdlQnVmZmVyID0gbV9sYXllci0+Y29udGV4dCgpLT5lbnN1cmVSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkoKS5jcmVhdGVJbWFnZUJ1ZmZlcihtX3NpemUsIFdlYkNvcmU6OlJlbmRlcmlu
Z01vZGU6OkFjY2VsZXJhdGVkLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgcGl4ZWxGb3JtYXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1f
ZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPEFj
Y2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6
ZSwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBwaXhlbEZv
cm1hdCgpLCBudWxscHRyKTsKKyAgICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIg
PSBXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFy
ZWFibGVNYXBwZWRCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwgbV9zY2FsZSwgV2ViQ29yZTo6RGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHBpeGVsRm9ybWF0KCksIG51bGxwdHIpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFR5cGU6OkJpdG1hcDoKICAgICAgICAgaWYgKHNob3VsZFVz
ZVJlbW90ZVJlbmRlcmluZykKLSAgICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIg
PSBtX2xheWVyLT5jb250ZXh0KCktPmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgp
LmNyZWF0ZUltYWdlQnVmZmVyKG1fc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBw
aXhlbEZvcm1hdCgpKTsKKyAgICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBt
X2xheWVyLT5jb250ZXh0KCktPmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpLmNy
ZWF0ZUltYWdlQnVmZmVyKG1fc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVy
YXRlZCwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHBp
eGVsRm9ybWF0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Zyb250QnVmZmVyLmlt
YWdlQnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxVbmFjY2VsZXJhdGVkSW1h
Z2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwgbV9zY2FsZSwgV2ViQ29y
ZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBwaXhlbEZvcm1hdCgpLCBudWxscHRyKTsK
KyAgICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0
ZUltYWdlQnVmZmVyPFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQ+Ojpj
cmVhdGUobV9zaXplLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0cik7CiAgICAgICAgIGJyZWFrOwogI2lmIEVOQUJM
RShDR19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKICAgICBjYXNlIFR5cGU6OkNH
RGlzcGxheUxpc3Q6Ci0gICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3Jl
OjpDb25jcmV0ZUltYWdlQnVmZmVyPENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ+Ojpj
cmVhdGUobV9zaXplLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IsIHBpeGVsRm9ybWF0KCksIG51bGxwdHIpOworICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdl
QnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxDR0Rpc3BsYXlMaXN0SW1hZ2VC
dWZmZXJCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCksIHBpeGVsRm9ybWF0KCksIG51bGxwdHIpOwogICAgICAgICBi
cmVhazsKICNlbmRpZgogICAgIH0KQEAgLTM5Nyw3ICszOTcsNyBAQCB2b2lkIFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlOjphcHBseUJhY2tpCiAgICAgICAgICAgICBBU1NFUlQobV90eXBlID09IFR5
cGU6OklPU3VyZmFjZSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNvbnRlbnRzVHlwZSkgewogICAg
ICAgICAgICAgY2FzZSBMYXllckNvbnRlbnRzVHlwZTo6SU9TdXJmYWNlOiB7Ci0gICAgICAgICAg
ICAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJp
Z2h0KFdURk1vdmUobWFjaFNlbmRSaWdodCksIFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCkp
OworICAgICAgICAgICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3Jl
YXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKG1hY2hTZW5kUmlnaHQpLCBXZWJDb3JlOjpEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAgICAgICAgICAgbGF5ZXIuY29udGVudHMg
PSBzdXJmYWNlID8gc3VyZmFjZS0+YXNMYXllckNvbnRlbnRzKCkgOiBuaWw7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9j
Zy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFy
ZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDcgKzQwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgCiBzdGF0aWMgQ0dD
b2xvclNwYWNlUmVmIGNvbG9yU3BhY2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0
aW9uJiBjb25maWd1cmF0aW9uKQogewotICAgIHJldHVybiBjb25maWd1cmF0aW9uLmNvbG9yU3Bh
Y2UuY2dDb2xvclNwYWNlLmdldCgpID86IHNSR0JDb2xvclNwYWNlUmVmKCk7CisgICAgcmV0dXJu
IGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZSA/IGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZS0+cGxh
dGZvcm1Db2xvclNwYWNlKCkgOiBXZWJDb3JlOjpzUkdCQ29sb3JTcGFjZVJlZigpOwogfQogCiBz
dGF0aWMgYm9vbCB3YW50c0V4dGVuZGVkUmFuZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpDb25m
aWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L0NvbG9yU3BhY2VEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L0NvbG9yU3BhY2VEYXRhLmgJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9Db2xvclNwYWNlRGF0YS5oCShub25leGlzdGVudCkKQEAgLTEsNDcgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpZm5kZWYgQ29sb3JTcGFjZURhdGFfaAotI2RlZmluZSBDb2xvclNwYWNl
RGF0YV9oCi0KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLW5hbWVzcGFjZSBJUEMgewot
Y2xhc3MgRGVjb2RlcjsKLWNsYXNzIEVuY29kZXI7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci1zdHJ1Y3QgQ29sb3JTcGFjZURhdGEgewotICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYp
IGNvbnN0OwotICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoSVBDOjpE
ZWNvZGVyJiwgQ29sb3JTcGFjZURhdGEmKTsKLQotICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VS
ZWY+IGNnQ29sb3JTcGFjZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYg
Ly8gQ29sb3JTcGFjZURhdGFfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL0NvbG9yU3BhY2VEYXRhLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0
eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvbG9yU3BhY2VEYXRhLm1tCShyZXZp
c2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEu
bW0JKG5vbmV4aXN0ZW50KQpAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAi
Y29uZmlnLmgiCi0jaW1wb3J0ICJDb2xvclNwYWNlRGF0YS5oIgotCi0jaW1wb3J0ICJBcmd1bWVu
dENvZGVyc0NGLmgiCi0jaW1wb3J0ICJEZWNvZGVyLmgiCi0jaW1wb3J0ICJFbmNvZGVyLmgiCi0j
aW1wb3J0IDx3dGYvRW51bVRyYWl0cy5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBD
b2xvclNwYWNlRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAg
ICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PGJvb2w+KGNnQ29sb3JTcGFjZSk7Ci0gICAgaWYgKGNn
Q29sb3JTcGFjZSkKLSAgICAgICAgZW5jb2RlciA8PCBjZ0NvbG9yU3BhY2U7Ci19Ci0KLWJvb2wg
Q29sb3JTcGFjZURhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbG9yU3BhY2VE
YXRhJiBjb2xvclNwYWNlRGF0YSkKLXsKLSAgICBib29sIGhhc0NHQ29sb3JTcGFjZTsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGhhc0NHQ29sb3JTcGFjZSkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIGlmICghaGFzQ0dDb2xvclNwYWNlKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQot
ICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2U7Ci0gICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShjb2xvclNwYWNlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAg
IGNvbG9yU3BhY2VEYXRhLmNnQ29sb3JTcGFjZSA9IFdURk1vdmUoY29sb3JTcGFjZSk7Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5Myw3IEBA
IGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29sb3I7
CiBjbGFzcyBDdXJzb3I7CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7CiBjbGFzcyBGbG9h
dFF1YWQ7CiBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBSZWdpb247CkBAIC0xODgsMTAgKzE4OSw2
IEBAIGNsYXNzIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQ7CiBjbGFzcyBJbnN0YWxs
TWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0OwogI2VuZGlmCiAKLSNpZiBQTEFU
Rk9STShDT0NPQSkKLXN0cnVjdCBDb2xvclNwYWNlRGF0YTsKLSNlbmRpZgotCiAjaWYgSEFWRShW
SVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCiB1c2luZyBMYXllckhvc3RpbmdDb250ZXh0SUQg
PSB1aW50MzJfdDsKICNlbmRpZgpAQCAtNDI2LDcgKzQyMyw3IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgQ0dSZWN0IGJvdW5kc09mTGF5ZXJJbkxheWVyQmFja2VkV2luZG93Q29vcmRpbmF0ZXMo
Q0FMYXllciAqKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIENvbG9yU3BhY2VEYXRhIGNvbG9y
U3BhY2UoKSA9IDA7CisgICAgdmlydHVhbCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2Ug
Y29sb3JTcGFjZSgpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzaG93UGxhdGZvcm1Db250ZXh0
TWVudShOU01lbnUgKiwgV2ViQ29yZTo6SW50UG9pbnQpID0gMDsKIApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsNiAr
MTk4LDcgQEAgbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBBdHRhY2htZW50OwogY2xhc3MgQ29udGVu
dFdvcmxkOwogY2xhc3MgQ29udGV4dE1lbnVDbGllbnQ7CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U7CiBjbGFzcyBFcnJvcjsKIGNsYXNzIEZpbmRDbGllbnQ7CiBjbGFzcyBGaW5kTWF0Y2hl
c0NsaWVudDsKQEAgLTM3Nyw3ICszNzgsNiBAQCBjbGFzcyBXZWJXaGVlbEV2ZW50Q29hbGVzY2Vy
OwogY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIAogc3RydWN0IEFwcEJvdW5kTmF2aWdhdGlvblRl
c3RpbmdEYXRhOwotc3RydWN0IENvbG9yU3BhY2VEYXRhOwogc3RydWN0IERhdGFEZXRlY3Rpb25S
ZXN1bHQ7CiBzdHJ1Y3QgRG9jdW1lbnRFZGl0aW5nQ29udGV4dDsKIHN0cnVjdCBEb2N1bWVudEVk
aXRpbmdDb250ZXh0UmVxdWVzdDsKQEAgLTExMzIsNyArMTEzMiw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1h
a2VGaXJzdFJlc3BvbmRlcigpOwogCi0gICAgQ29sb3JTcGFjZURhdGEgY29sb3JTcGFjZSgpOwor
ICAgIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKCk7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0JKHJldmlzaW9uIDI3NzkzOSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDE0LDcgKzEwMTQsNyBAQCAtIChSZWZQdHI8V2ViS2l0OjpWaWV3U25hcHNo
b3Q+KV90YWtlVmllCiAjZWxzZQogICAgIFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0IHNuYXBz
aG90Rm9ybWF0ID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQ6OkJHUkE7CiAjZW5kaWYKLSAg
ICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZShXZWJDb3JlOjpleHBh
bmRlZEludFNpemUoc25hcHNob3RTaXplKSwgV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSwg
c25hcHNob3RGb3JtYXQpOworICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6
Y3JlYXRlKFdlYkNvcmU6OmV4cGFuZGVkSW50U2l6ZShzbmFwc2hvdFNpemUpLCBXZWJDb3JlOjpE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgc25hcHNob3RGb3JtYXQpOwogICAgIGlmICgh
c3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgQ0FSZW5kZXJTZXJ2ZXJSZW5k
ZXJMYXllcldpdGhUcmFuc2Zvcm0oTUFDSF9QT1JUX05VTEwsIHNlbGYubGF5ZXIuY29udGV4dC5j
b250ZXh0SWQsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KHNlbGYubGF5ZXIpLCBzdXJmYWNl
LT5zdXJmYWNlKCksIDAsIDAsICZ0cmFuc2Zvcm0pOwpAQCAtMzA3OSw3ICszMDc5LDcgQEAgLSAo
dm9pZClfc25hcHNob3RSZWN0OihDR1JlY3QpcmVjdEluVmlldwogICAgIE5TU3RyaW5nICpkaXNw
bGF5TmFtZSA9IHNlbGYud2luZG93LnNjcmVlbi5kaXNwbGF5Q29uZmlndXJhdGlvbi5uYW1lOwog
ICAgIGlmIChkaXNwbGF5TmFtZSAmJiAhc2VsZi53aW5kb3cuaGlkZGVuKSB7CiAgICAgICAgIFRy
YWNlU2NvcGUgc25hcHNob3RTY29wZShSZW5kZXJTZXJ2ZXJTbmFwc2hvdFN0YXJ0LCBSZW5kZXJT
ZXJ2ZXJTbmFwc2hvdEVuZCk7Ci0gICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3Vy
ZmFjZTo6Y3JlYXRlKFdlYkNvcmU6OmV4cGFuZGVkSW50U2l6ZShXZWJDb3JlOjpGbG9hdFNpemUo
aW1hZ2VTaXplKSksIFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCkpOworICAgICAgICBhdXRv
IHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZShXZWJDb3JlOjpleHBhbmRlZElu
dFNpemUoV2ViQ29yZTo6RmxvYXRTaXplKGltYWdlU2l6ZSkpLCBXZWJDb3JlOjpEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAgIGlmICghc3VyZmFjZSkgewogICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm47CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgJKHJldmlzaW9u
IDI3NzkzOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTk0LDYgKzk0LDcgQEAgY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247
CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsK
IGNsYXNzIEludFBvaW50Owogc3RydWN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkw7CiAKQEAgLTE2
OCw3ICsxNjksNiBAQCBjbGFzcyBXZWJGcmFtZVByb3h5OwogY2xhc3MgV2ViUGFnZVByb3h5Owog
Y2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7Ci1zdHJ1Y3QgQ29s
b3JTcGFjZURhdGE7CiBzdHJ1Y3QgV2ViSGl0VGVzdFJlc3VsdERhdGE7CiAKIGVudW0gY2xhc3Mg
Q29udGludWVVbnNhZmVMb2FkIDogYm9vbDsKQEAgLTMxMyw3ICszMTMsNyBAQCBwdWJsaWM6CiAK
ICAgICBOU1ZpZXcgKmhpdFRlc3QoQ0dQb2ludCk7CiAKLSAgICBDb2xvclNwYWNlRGF0YSBjb2xv
clNwYWNlKCk7CisgICAgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2Uo
KTsKIAogICAgIHZvaWQgc2V0VW5kZXJsYXlDb2xvcihOU0NvbG9yICopOwogICAgIE5TQ29sb3Ig
KnVuZGVybGF5Q29sb3IoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsNyAr
MzIsNiBAQAogI2ltcG9ydCAiQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCIKICNpbXBv
cnQgIkFQSU5hdmlnYXRpb24uaCIKICNpbXBvcnQgIkFwcEtpdFNQSS5oIgotI2ltcG9ydCAiQ29s
b3JTcGFjZURhdGEuaCIKICNpbXBvcnQgIkNvcmVUZXh0SGVscGVycy5oIgogI2ltcG9ydCAiRm9u
dEluZm8uaCIKICNpbXBvcnQgIkZ1bGxzY3JlZW5DbGllbnQuaCIKQEAgLTkwLDYgKzg5LDcgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JTZXJp
YWxpemF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbXBvc2l0aW9uSGlnaGxpZ2h0Lmg+Cisj
aW1wb3J0IDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9EaWN0aW9uYXJ5TG9va3VwLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0RyYWdJdGVtLmg+CkBAIC0yNTAwLDcgKzI1MDAsNyBAQCB2b2lkIFdlYlZp
ZXdJbXBsOjpwb3N0RmFrZU1vdXNlTW92ZWRFdmVuCiAgICAgbV9wYWdlLT5oYW5kbGVNb3VzZUV2
ZW50KHdlYkV2ZW50KTsKIH0KIAotQ29sb3JTcGFjZURhdGEgV2ViVmlld0ltcGw6OmNvbG9yU3Bh
Y2UoKQorV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIFdlYlZpZXdJbXBsOjpjb2xvclNw
YWNlKCkKIHsKICAgICBpZiAoIW1fY29sb3JTcGFjZSkgewogICAgICAgICBpZiAobV90YXJnZXRX
aW5kb3dGb3JNb3ZlUHJlcGFyYXRpb24pCkBAIC0yNTExLDEwICsyNTExLDcgQEAgQ29sb3JTcGFj
ZURhdGEgV2ViVmlld0ltcGw6OmNvbG9yU3BhY2UoKQogICAgICAgICAgICAgbV9jb2xvclNwYWNl
ID0gW05TU2NyZWVuIG1haW5TY3JlZW5dLmNvbG9yU3BhY2U7CiAgICAgfQogCi0gICAgQ29sb3JT
cGFjZURhdGEgY29sb3JTcGFjZURhdGE7Ci0gICAgY29sb3JTcGFjZURhdGEuY2dDb2xvclNwYWNl
ID0gW21fY29sb3JTcGFjZSBDR0NvbG9yU3BhY2VdOwotCi0gICAgcmV0dXJuIGNvbG9yU3BhY2VE
YXRhOworICAgIHJldHVybiBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgeyBbbV9jb2xv
clNwYWNlIENHQ29sb3JTcGFjZV0gfTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6c2V0VW5kZXJs
YXlDb2xvcihOU0NvbG9yICp1bmRlcmxheUNvbG9yKQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZUhvc3QubW0JKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSw2ICszNSw3IEBACiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlByb2Nl
c3NQcm94eS5oIgogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGlj
c0NvbnRleHRDRy5oPgogI2ltcG9ydCA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUGxhdGZvcm1MYXllci5oPgpAQCAtMzE3LDcgKzMxOCw3IEBAIHN0YXRpYyB2b2lkIHJl
Y3Vyc2l2ZWx5TWFwSU9TdXJmYWNlQmFja2kKIHsKICAgICBpZiAobGF5ZXIuY29udGVudHMgJiYg
Q0ZHZXRUeXBlSUQoKF9fYnJpZGdlIENGVHlwZVJlZilsYXllci5jb250ZW50cykgPT0gQ0FNYWNo
UG9ydEdldFR5cGVJRCgpKSB7CiAgICAgICAgIE1hY2hTZW5kUmlnaHQgcG9ydCA9IE1hY2hTZW5k
UmlnaHQ6OmNyZWF0ZShDQU1hY2hQb3J0R2V0UG9ydCgoX19icmlkZ2UgQ0FNYWNoUG9ydFJlZils
YXllci5jb250ZW50cykpOwotICAgICAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZh
Y2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShwb3J0KSwgc1JHQkNvbG9yU3BhY2VSZWYo
KSk7CisgICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJv
bVNlbmRSaWdodChXVEZNb3ZlKHBvcnQpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSk7CiAgICAgICAgIGxheWVyLmNvbnRlbnRzID0gc3VyZmFjZSA/IHN1cmZhY2UtPmFz
TGF5ZXJDb250ZW50cygpIDogbmlsOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgJKHJldmlzaW9uIDI3NzkzOSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCSh3b3JraW5n
IGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1ZpZXdJbldpbmRv
dygpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNWaXN1YWxseUlkbGUoKSBvdmVycmlkZTsKICAgICBM
YXllckhvc3RpbmdNb2RlIHZpZXdMYXllckhvc3RpbmdNb2RlKCkgb3ZlcnJpZGU7Ci0gICAgQ29s
b3JTcGFjZURhdGEgY29sb3JTcGFjZSgpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6OkRlc3RpbmF0
aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRSZW1vdGVM
YXllclRyZWVSb290Tm9kZShSZW1vdGVMYXllclRyZWVOb2RlKikgb3ZlcnJpZGU7CiAgICAgQ0FM
YXllciAqYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpIGNvbnN0IG92ZXJyaWRlOwog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBs
TWFjLm1tCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
UGFnZUNsaWVudEltcGxNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAKIAog
I2ltcG9ydCAiQVBJSGl0VGVzdFJlc3VsdC5oIgogI2ltcG9ydCAiQXBwS2l0U1BJLmgiCi0jaW1w
b3J0ICJDb2xvclNwYWNlRGF0YS5oIgogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9y
dCAiRG93bmxvYWRQcm94eS5oIgogI2ltcG9ydCAiRHJhd2luZ0FyZWFQcm94eS5oIgpAQCAtNjYs
NiArNjUsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9Db2xvck1hYy5oPgogI2ltcG9ydCA8V2ViQ29yZS9DdXJzb3IuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RpY3Rpb25h
cnlMb29rdXAuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0l0ZW0uaD4KICNpbXBvcnQgPFdlYkNv
cmUvRmxvYXRSZWN0Lmg+CkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6
dmlld1dpbGxNb3ZlVG9Bbm90aAogICAgIGNsZWFyQWxsRWRpdENvbW1hbmRzKCk7CiB9CiAKLUNv
bG9yU3BhY2VEYXRhIFBhZ2VDbGllbnRJbXBsOjpjb2xvclNwYWNlKCkKK1dlYkNvcmU6OkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZSBQYWdlQ2xpZW50SW1wbDo6Y29sb3JTcGFjZSgpCiB7CiAgICAgcmV0
dXJuIG1faW1wbC0+Y29sb3JTcGFjZSgpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhUHJveHkubW0JKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw3ICsyOCw2IEBACiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAotI2ltcG9y
dCAiQ29sb3JTcGFjZURhdGEuaCIKICNpbXBvcnQgIkRyYXdpbmdBcmVhTWVzc2FnZXMuaCIKICNp
bXBvcnQgIkRyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oIgogI2ltcG9ydCAiTGF5ZXJUcmVlQ29u
dGV4dC5oIgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVBy
b3h5TWFjLm1tCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAj
aWYgUExBVEZPUk0oTUFDKQogCiAjaW1wb3J0ICJBUElVSUNsaWVudC5oIgotI2ltcG9ydCAiQ29s
b3JTcGFjZURhdGEuaCIKICNpbXBvcnQgIkNvbm5lY3Rpb24uaCIKICNpbXBvcnQgIkRhdGFSZWZl
cmVuY2UuaCIKICNpbXBvcnQgIkVkaXRvclN0YXRlLmgiCkBAIC01Miw2ICs1MSw3IEBACiAjaW1w
b3J0ICJXZWJQcmVmZXJlbmNlc0tleXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgog
I2ltcG9ydCA8V2ViQ29yZS9BdHRyaWJ1dGVkU3RyaW5nLmg+CisjaW1wb3J0IDxXZWJDb3JlL0Rl
c3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5TG9va3Vw
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdJdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBo
aWNzTGF5ZXIuaD4KQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXNzaXN0
aXZlVGVjaG5vbG9neU1hCiAgICAgcGFnZUNsaWVudCgpLmFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtl
Rmlyc3RSZXNwb25kZXIoKTsKIH0KIAotQ29sb3JTcGFjZURhdGEgV2ViUGFnZVByb3h5Ojpjb2xv
clNwYWNlKCkKK1dlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBXZWJQYWdlUHJveHk6OmNv
bG9yU3BhY2UoKQogewogICAgIHJldHVybiBwYWdlQ2xpZW50KCkuY29sb3JTcGFjZSgpOwogfQpJ
bmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNjM0LDggKzI2MzQsNiBAQAogCQkxQTI1
NkUzNjE4QTFBNzg4MDA2RkI5MjIgLyogV0tOYXZpZ2F0aW9uQWN0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLTmF2aWdhdGlvbkFjdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQTI1NkUzOTE4QTFBN0RGMDA2RkI5MjIgLyogV0tOYXZpZ2F0aW9u
QWN0aW9uSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tOYXZp
Z2F0aW9uQWN0aW9uSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEy
OEI4Q0IxQzgwRUQ1OTAwNkZENzQzIC8qIFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQTJBNEFGRDE1ODY5MzkyMDA5MEM5RTkgLyogQ29s
b3JTcGFjZURhdGEubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBD
b2xvclNwYWNlRGF0YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUEyQTRBRkUx
NTg2OTM5MjAwOTBDOUU5IC8qIENvbG9yU3BhY2VEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENvbG9yU3BhY2VEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFBMkJCNkNDMTQxMTdBNUYwMDBGMzVENCAvKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyQkI2Q0UxNDEx
N0I0RDAwMEYzNUQ0IC8qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIv
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQTJCQjZDRjE0MTE3QjREMDAwRjM1RDQgLyogUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVk
U291cmNlcy9XZWJLaXQyL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaDsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTEwNDMwLDggKzEwNDI4LDYgQEAKIAkJ
CQk5RjU0Rjg4RTE2NDg4RTg3MDA3REY4MUEgLyogQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbSAqLywK
IAkJCQlDRTExQUQ1MTFDQkM0ODJGMDA2ODFFRTUgLyogQ29kZVNpZ25pbmcuaCAqLywKIAkJCQlD
RTExQUQ0RjFDQkM0N0Y4MDA2ODFFRTUgLyogQ29kZVNpZ25pbmcubW0gKi8sCi0JCQkJMUEyQTRB
RkUxNTg2OTM5MjAwOTBDOUU5IC8qIENvbG9yU3BhY2VEYXRhLmggKi8sCi0JCQkJMUEyQTRBRkQx
NTg2OTM5MjAwOTBDOUU5IC8qIENvbG9yU3BhY2VEYXRhLm1tICovLAogCQkJCTFBQzc1QTFDMUIz
MzY5NUUwMDU2NzQ1QiAvKiBIYW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMubW0gKi8sCiAJCQkJMkQ1
MDM2NUQxQkNDNzkzRjAwRTIwQkIzIC8qIE5hdGl2ZVdlYkdlc3R1cmVFdmVudE1hYy5tbSAqLywK
IAkJCQlDMDJCRkYxRDEyNTE1MDJFMDA5Q0NCRUEgLyogTmF0aXZlV2ViS2V5Ym9hcmRFdmVudE1h
Yy5tbSAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZC5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDUsMTEgKzQ1LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBM
KEltYWdlQnVmZmVyUwogCiBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gSW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb25maWd1cmF0aW9uKGNvbnN0IFBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMpCiB7Ci0gICAgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGNvbmZp
Z3VyYXRpb247Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgY29uZmlndXJhdGlvbi5jb2xvclNw
YWNlID0geyBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSB9OwotI2Vu
ZGlmCi0gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CisgICAgcmV0dXJuIHsgcGFyYW1ldGVycy5j
b2xvclNwYWNlIH07CiB9CiAKIEludFNpemUgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNr
ZW5kOjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVy
cykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAkocmV2
aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyAr
OTQsNyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnByZXBhCiAgICAgICAg
IG1hcmtDb250ZXh0TG9zdCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8gZGlz
cGxheUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGRpc3Bs
YXlCdWZmZXJTZW5kUmlnaHQpLCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICBhdXRvIGRpc3Bs
YXlCdWZmZXIgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShkaXNwbGF5
QnVmZmVyU2VuZFJpZ2h0KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkp
OwogICAgIGlmIChkaXNwbGF5QnVmZmVyKSB7CiAgICAgICAgIGF1dG8mIHNjID0gcGxhdGZvcm1T
d2FwQ2hhaW4oKTsKICAgICAgICAgc2MucmVjeWNsZUJ1ZmZlcigpOwpJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5LmgJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgOiBwdWJs
aWMgV2UKICAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6cmVzb2x1dGlvblNj
YWxlOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5
PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJDb3Jl
OjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiBy
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgc3RhdGljIFJlZlB0cjxSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYg
Y29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQogICAgIHsKICAg
ICAgICAgYXV0byBwYXJhbWV0ZXJzID0gV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJh
bWV0ZXJzIHsgc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCB9
OwogICAgICAgICBpZiAoQmFja2VuZFR5cGU6OmNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShwYXJh
bWV0ZXJzKS5pc0VtcHR5KCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuY3BwCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
Y3JlYXRlCiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q3JlYXRl
SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIubG9naWNhbFNpemUoKSwgaW1hZ2VCdWZmZXIucmVuZGVy
aW5nTW9kZSgpLCBpbWFnZUJ1ZmZlci5yZXNvbHV0aW9uU2NhbGUoKSwgaW1hZ2VCdWZmZXIuY29s
b3JTcGFjZSgpLCBpbWFnZUJ1ZmZlci5waXhlbEZvcm1hdCgpLCBpbWFnZUJ1ZmZlci5yZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIoKSksIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCksIElQ
Qzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5
KTsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6
OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkKK1JlZlB0cjxJbWFnZUJ1ZmZl
cj4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1
dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVs
Rm9ybWF0IHBpeGVsRm9ybWF0KQogewogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZm
ZXI7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAkocmV2aXNp
b24gMjc3OTM5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTUgKzQzLDE5
IEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCiBu
YW1lc3BhY2UgRGlzcGxheUxpc3QgewogY2xhc3MgRGlzcGxheUxpc3Q7CiBjbGFzcyBJdGVtOwog
fQorCitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7CiBjbGFzcyBGbG9hdFNpemU7CiBjbGFz
cyBQaXhlbEJ1ZmZlcjsKKwogZW51bSBjbGFzcyBBbHBoYVByZW11bHRpcGxpY2F0aW9uIDogdWlu
dDhfdDsKLWVudW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDogdWludDhfdDsKIGVudW0g
Y2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJvb2w7CisKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC05Miw3ICs5Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCiAgICAgLy8gTWVzc2FnZXMg
dG8gYmUgc2VudC4KLSAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlLCBX
ZWJDb3JlOjpQaXhlbEZvcm1hdCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5k
ZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0
aW9uQ29sb3JTcGFjZSYsIFdlYkNvcmU6OlBpeGVsRm9ybWF0KTsKICAgICBTdHJpbmcgZ2V0RGF0
YVVSTEZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJs
ZT4gcXVhbGl0eSwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uLCBXZWJDb3JlOjpSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIFZlY3Rvcjx1aW50OF90PiBnZXREYXRhRm9ySW1h
Z2VCdWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5
LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpGbHVzaElkZW50aWZpZXIgZmx1c2hEaXNwbGF5TGlzdEFuZENvbW1pdChjb25z
dCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
Y29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcAkocmV2
aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9j
b2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNo
YXJlYWJsZU1hcHAKICAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKGJhY2tl
bmRTaXplLCBiYWNrZW5kU2l6ZSwgY2FjaGVkQ0dDb2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JT
cGFjZSksIElPU3VyZmFjZTo6Zm9ybWF0Rm9yUGl4ZWxGb3JtYXQocGFyYW1ldGVycy5waXhlbEZv
cm1hdCkpOworICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKGJhY2tlbmRTaXpl
LCBiYWNrZW5kU2l6ZSwgcGFyYW1ldGVycy5jb2xvclNwYWNlLCBJT1N1cmZhY2U6OmZvcm1hdEZv
clBpeGVsRm9ybWF0KHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQpKTsKICAgICBpZiAoIXN1cmZhY2Up
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC02NSw3ICs2NSw3IEBAIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCi0gICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0
KFdURk1vdmUoV1RGOjpnZXQ8TWFjaFNlbmRSaWdodD4oaGFuZGxlKSksIGNhY2hlZENHQ29sb3JT
cGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpKTsKKyAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZh
Y2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShXVEY6OmdldDxNYWNoU2VuZFJpZ2h0Piho
YW5kbGUpKSwgcGFyYW1ldGVycy5jb2xvclNwYWNlKTsKICAgICBpZiAoIXN1cmZhY2UpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCShyZXZp
c2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEzICsyOCwxMiBAQAog
CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBIQVZFKEFWQVNTRVRSRUFERVIpCiAKLSNpbmNs
dWRlICJDb2xvclNwYWNlRGF0YS5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgi
CiAjaW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHlNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9BVkFzc2V0TUlNRVR5cGVDYWNoZS5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvQ29sb3JTcGFjZUNHLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9y
U3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lPU3VyZmFjZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvSW1hZ2VUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgpA
QCAtMTY4LDE0ICsxNjcsMTQgQEAgUGxhdGZvcm1JbWFnZVB0ciBSZW1vdGVJbWFnZURlY29kZXJB
VkY6OgogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIE9wdGlvbmFsPE1hY2hTZW5kUmln
aHQ+IHNlbmRSaWdodDsKLSAgICAgICAgQ29sb3JTcGFjZURhdGEgY29sb3JTcGFjZTsKKyAgICAg
ICAgT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlOwogICAgICAgICBp
ZiAoIW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OkNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KG1f
aWRlbnRpZmllciwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6
OkNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4OjpSZXBseShzZW5kUmlnaHQsIGNvbG9yU3BhY2UpLCAw
KSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoIXNlbmRSaWdodCkKKyAgICAg
ICAgaWYgKCFzZW5kUmlnaHQgfHwgIWNvbG9yU3BhY2UpCiAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2Vu
ZFJpZ2h0KFdURk1vdmUoKnNlbmRSaWdodCksIGNvbG9yU3BhY2UuY2dDb2xvclNwYWNlLmdldCgp
KTsKKyAgICAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9t
U2VuZFJpZ2h0KFdURk1vdmUoKnNlbmRSaWdodCksIFdURk1vdmUoKmNvbG9yU3BhY2UpKTsKICAg
ICAgICAgaWYgKCFzdXJmYWNlKQogICAgICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvY29jb2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0JKHJldmlzaW9uIDI3Nzkz
OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAg
UmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllclByaXZhdGVSZQogICAgIGlmICghc2VuZFJp
Z2h0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNv
cmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKCpzZW5kUmlnaHQpLCBz
UkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZh
Y2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZSgqc2VuZFJpZ2h0KSwgV2ViQ29yZTo6RGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgIGlmICghc3VyZmFjZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKQEAgLTkxLDcgKzkxLDcgQEAgUmV0YWluUHRyPENWUGl4ZWxCdWZm
ZXJSZWY+IE1lZGlhUGxheWVyUAogICAgIGlmICghc2VuZFJpZ2h0KQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRl
RnJvbVNlbmRSaWdodChXVEZNb3ZlKCpzZW5kUmlnaHQpLCBudWxscHRyKTsKKyAgICBhdXRvIHN1
cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZSgq
c2VuZFJpZ2h0KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAg
IGlmICghc3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQkocmV2aXNp
b24gMjc3OTM5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbQkod29ya2luZyBjb3B5KQpAQCAtNjQ2LDcgKzY0Niw3IEBAIGlubGluZSBQREZQbHVn
aW46OlBERlBsdWdpbihXZWJGcmFtZSYgZnIKICAgICBbbV9jb250YWluZXJMYXllciBhZGRTdWJs
YXllcjptX3Njcm9sbENvcm5lckxheWVyLmdldCgpXTsKICAgICBpZiAoW21fcGRmTGF5ZXJDb250
cm9sbGVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0RGV2aWNlQ29sb3JTcGFjZTop
XSkgewogICAgICAgICBhdXRvIHZpZXcgPSBmcmFtZS5jb3JlRnJhbWUoKS0+dmlldygpOwotICAg
ICAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIgc2V0RGV2aWNlQ29sb3JTcGFjZTpzY3JlZW5Db2xv
clNwYWNlKHZpZXcpXTsKKyAgICAgICAgW21fcGRmTGF5ZXJDb250cm9sbGVyIHNldERldmljZUNv
bG9yU3BhY2U6c2NyZWVuQ29sb3JTcGFjZSh2aWV3KS5wbGF0Zm9ybUNvbG9yU3BhY2UoKV07CiAg
ICAgfQogCiAjaWYgSEFWRShJTkNSRU1FTlRBTF9QREZfQVBJUykKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9T
aGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTIgKzU3LDcgQEAgUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gY3JlYXRlU2hhcmVhYmxlQgogICAgIH0KIAogICAgIC8vIEZJWE1FOiBPbmx5IHNlbGVj
dCBFeHRlbmRlZENvbG9yIG9uIGltYWdlcyBrbm93biB0byBuZWVkIHdpZGUgZ2FtdXQuCi0gICAg
U2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGJpdG1hcENvbmZpZ3VyYXRpb247Ci0jaWYg
VVNFKENHKQotICAgIGJpdG1hcENvbmZpZ3VyYXRpb24uY29sb3JTcGFjZS5jZ0NvbG9yU3BhY2Ug
PSBzY3JlZW5Db2xvclNwYWNlKHJlbmRlckltYWdlLmZyYW1lKCkubWFpbkZyYW1lKCkudmlldygp
KTsKLSNlbmRpZgotCi0gICAgYXV0byBzaGFyZWRCaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZVNoYXJlYWJsZShJbnRTaXplKGJpdG1hcFNpemUpLCBiaXRtYXBDb25maWd1cmF0aW9uKTsK
KyAgICBhdXRvIHNoYXJlZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxl
KEludFNpemUoYml0bWFwU2l6ZSksIHsgc2NyZWVuQ29sb3JTcGFjZShyZW5kZXJJbWFnZS5mcmFt
ZSgpLm1haW5GcmFtZSgpLnZpZXcoKSkgfSk7CiAgICAgaWYgKCFzaGFyZWRCaXRtYXApCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNp
b24gMjc3OTM5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyNyw3ICs5MjcsNyBAQCBXZWJD
b3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KiBXCiAKICNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9k
ZSwgUmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29u
c3QKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVJbWFnZUJ1ZmZl
cihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgUmVu
ZGVyaW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNv
bnN0CiB7CiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zaG91bGRVc2VSZW1vdGVS
ZW5kZXJpbmdGb3IocHVycG9zZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NDQsNyArMjQ0LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0
b3JGYWN0b3J5KiBkaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KCkgY29uc3QgZmluYWw7CiAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVy
PiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpS
ZW5kZXJpbmdNb2RlLCBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3Jt
YXQpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5n
TW9kZSwgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBj
b25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBXZWJDb3JlOjpQaXhlbEZvcm1h
dCkgY29uc3QgZmluYWw7CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIFJlZlB0cjxXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQg
aG9zdFdpbmRvd0Rpc3BsYXlJRCkgY29uc3QgZmluYWw7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFj
L1dlYkRyYWdDbGllbnRNYWMubW0JKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNjgsOSArNjgsNyBAQCB1c2luZyBEcmFnSW1hZ2UgPSBDR0ltYWdlUmVmOwog
CiBzdGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY29udmVydERyYWdJbWFnZVRvQml0bWFw
KERyYWdJbWFnZSBpbWFnZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgRnJhbWUmIGZyYW1lKQogewot
ICAgIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBiaXRtYXBDb25maWd1cmF0aW9uOwot
ICAgIGJpdG1hcENvbmZpZ3VyYXRpb24uY29sb3JTcGFjZS5jZ0NvbG9yU3BhY2UgPSBzY3JlZW5D
b2xvclNwYWNlKGZyYW1lLm1haW5GcmFtZSgpLnZpZXcoKSk7Ci0gICAgYXV0byBiaXRtYXAgPSBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzaXplLCBiaXRtYXBDb25maWd1cmF0aW9u
KTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNp
emUsIHsgc2NyZWVuQ29sb3JTcGFjZShmcmFtZS5tYWluRnJhbWUoKS52aWV3KCkpIH0pOwogICAg
IGlmICghYml0bWFwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCShyZXZpc2lvbiAyNzc5
MzkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCSh3
b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIERlY29kZXI7CiB9CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIERpc3Bs
YXlSZWZyZXNoTW9uaXRvcjsKIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVWaWV3OwpAQCAtNjAs
NyArNjEsNiBAQCBzdHJ1Y3QgVmlld3BvcnRBdHRyaWJ1dGVzOwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotc3RydWN0IENvbG9yU3BhY2VEYXRhOwogY2xhc3MgTGF5ZXJUcmVlSG9zdDsKIHN0cnVj
dCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IFdlYlByZWZlcmVuY2VzU3RvcmU7
CkBAIC0xODAsNyArMTgwLDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAv
LyBVc2VkIGJ5IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLgogICAgIHZpcnR1YWwgdm9p
ZCBzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldENv
bG9yU3BhY2UoY29uc3QgQ29sb3JTcGFjZURhdGEmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29sb3JTcGFjZShPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+KSB7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2Vi
Q29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21taXRUcmFu
c2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIHsgfQpJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2Fn
ZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJh
d2luZ0FyZWEubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw3ICszMSw3IEBAIG1lc3NhZ2VzIC0+IERyYXdpbmdBcmVhIE5vdFJlZkNvdW50ZWQg
ewogICAgIC8vIFVzZWQgYnkgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuCiAgICAgVXBk
YXRlR2VvbWV0cnkoV2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6ZSwgYm9vbCBmbHVzaFN5bmNocm9u
b3VzbHksIE1hY2hTZW5kUmlnaHQgZmVuY2VQb3J0KQogICAgIFNldERldmljZVNjYWxlRmFjdG9y
KGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQotICAgIFNldENvbG9yU3BhY2Uoc3RydWN0IFdlYktp
dDo6Q29sb3JTcGFjZURhdGEgY29sb3JTcGFjZSkKKyAgICBTZXRDb2xvclNwYWNlKHN0cnVjdCBP
cHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2UpCiAgICAg
U2V0Vmlld0V4cG9zZWRSZWN0KE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9z
ZWRSZWN0KQogCiAgICAgQWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6
OkZsb2F0UG9pbnQgb3JpZ2luKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTk4LDcgKzI1
OTgsNyBAQCBzdGF0aWMgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIHNuCiAgICAgU2hh
cmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CiAjaWYgVVNFKENHKQog
ICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zVXNlU2NyZWVuQ29sb3JTcGFjZSkKLSAg
ICAgICAgY29uZmlndXJhdGlvbi5jb2xvclNwYWNlLmNnQ29sb3JTcGFjZSA9IHNjcmVlbkNvbG9y
U3BhY2UocGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCkpOworICAgICAgICBjb25m
aWd1cmF0aW9uLmNvbG9yU3BhY2UgPSBzY3JlZW5Db2xvclNwYWNlKHBhZ2UuY29yZVBhZ2UoKS0+
bWFpbkZyYW1lKCkudmlldygpKTsKICNlbmRpZgogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwog
fQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgJKHJldmlzaW9u
IDI3NzkzOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5OCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzdXNwZW5kUGFpbnRpbmcoKTsKICAgICB2b2lkIHJlc3VtZVBh
aW50aW5nKCk7CiAgICAgdm9pZCBzZXRMYXllckhvc3RpbmdNb2RlKExheWVySG9zdGluZ01vZGUp
IG92ZXJyaWRlOwotICAgIHZvaWQgc2V0Q29sb3JTcGFjZShjb25zdCBDb2xvclNwYWNlRGF0YSYp
IG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29sb3JTcGFjZShPcHRpb25hbDxXZWJDb3JlOjpEZXN0
aW5hdGlvbkNvbG9yU3BhY2U+KSBvdmVycmlkZTsKICAgICB2b2lkIGFkZEZlbmNlKGNvbnN0IFdU
Rjo6TWFjaFNlbmRSaWdodCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBhZGRUcmFuc2FjdGlvbkNh
bGxiYWNrSUQoQ2FsbGJhY2tJRCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLm1tCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0J
KHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIFBMQVRGT1JNKE1BQykKIAot
I2ltcG9ydCAiQ29sb3JTcGFjZURhdGEuaCIKICNpbXBvcnQgIkRpc3BsYXlSZWZyZXNoTW9uaXRv
ck1hYy5oIgogI2ltcG9ydCAiRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJM
YXllckhvc3RpbmdDb250ZXh0LmgiCkBAIC00NSw2ICs0NCw3IEBACiAjaW1wb3J0IDxwYWwvc3Bp
L2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9EZWJ1Z1BhZ2VPdmVybGF5cy5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29u
dGV4dC5oPgpAQCAtOTEsNiArOTEsNyBAQCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6
VGlsZWRDb3JlCiAgICAgfSk7CiAKICAgICB1cGRhdGVMYXllckhvc3RpbmdDb250ZXh0KCk7Cisg
ICAgCiAgICAgc2V0Q29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpOwogCiAgICAgaWYg
KGF1dG8gdmlld0V4cG9zZWRSZWN0ID0gcGFyYW1ldGVycy52aWV3RXhwb3NlZFJlY3QpCkBAIC02
NTAsOSArNjUxLDkgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0TAog
ICAgIHNlbmQoTWVzc2FnZXM6OkRyYXdpbmdBcmVhUHJveHk6OlVwZGF0ZUFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdNb2RlKDAsIGxheWVyVHJlZUNvbnRleHQpKTsKIH0KIAotdm9pZCBUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6c2V0Q29sb3JTcGFjZShjb25zdCBDb2xvclNwYWNlRGF0YSYg
Y29sb3JTcGFjZSkKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldENvbG9y
U3BhY2UoT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNl
KQogewotICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0Q29sb3JTcGFjZShjb2xvclNwYWNl
LmNnQ29sb3JTcGFjZS5nZXQoKSk7CisgICAgbV9sYXllckhvc3RpbmdDb250ZXh0LT5zZXRDb2xv
clNwYWNlKGNvbG9yU3BhY2UgPyBjb2xvclNwYWNlLT5wbGF0Zm9ybUNvbG9yU3BhY2UoKSA6IG51
bGxwdHIpOwogfQogCiBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yPiBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Y3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFBs
YXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA1LTIyICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBDb252ZXJ0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSBmcm9tIGFuIGVudW0gdG8gY2xhc3Mgd3JhcHBpbmcgYSBwbGF0Zm9ybSBjb2xvciBzcGFj
ZSAoQ0dDb2xvclNwYWNlUmVmIGZvciBDRyBwb3J0cywgZXRjLikKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjE0MworCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1l
bnVDbGllbnQubW06CisgICAgICAgIChXZWJDb250ZXh0TWVudUNsaWVudDo6aW1hZ2VGb3JDdXJy
ZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKToKKyAgICAgICAgVXBkYXRlIGZvciBuZXcgRGVz
dGluYXRpb25Db2xvclNwYWNlIGNsYXNzLgorCiAyMDIxLTA1LTIyICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBMb2NrSG9sZGVyIHdpdGggTG9ja2Vy
IGluIGxvY2FsIHZhcmlhYmxlcwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0JKHJl
dmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0JpdG1hcEltYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbnRl
eHRNZW51Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbnRleHRNZW51Q29udHJvbGxlci5oPgorI2lt
cG9ydCA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RG9jdW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RnJhbWVWaWV3Lmg+CkBAIC0yMTMsNyArMjE0LDcgQEAgUmV0YWluUHRyPE5TSW1hZ2U+IFdlYkNv
bnRleHRNZW51Q2xpZW50OgogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgLy8gVGhpcyBpcyBl
ZmZlY3RpdmVseSBhIHNuYXBzaG90LCBhbmQgd2lsbCBiZSBwYWludGVkIGluIGFuIHVuYWNjZWxl
cmF0ZWQgZmFzaGlvbiBpbiBsaW5lIHdpdGggRnJhbWVTbmFwc2hvdHRpbmcuCi0gICAgYXV0byBi
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpV
bmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0
OjpCR1JBOCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJlY3Quc2l6
ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuIG5pbDsKIApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjc3OTM5KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDUtMjIgIFNhbSBXZWluaWcgIDx3ZWlu
aWdAYXBwbGUuY29tPgorCisgICAgICAgIENvbnZlcnQgRGVzdGluYXRpb25Db2xvclNwYWNlIGZy
b20gYW4gZW51bSB0byBjbGFzcyB3cmFwcGluZyBhIHBsYXRmb3JtIGNvbG9yIHNwYWNlIChDR0Nv
bG9yU3BhY2VSZWYgZm9yIENHIHBvcnRzLCBldGMuKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlz
cGxheUxpc3RUZXN0c0NHLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAg
ICAgICBVcGF0ZSB0ZXN0IHRvIHVzZSBuZXcgRGVzdGluYXRpb25Db2xvclNwYWNlIHR5cGUuCisK
IDIwMjEtMDUtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXBsYWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzCkluZGV4OiBU
b29scy9EdW1wUmVuZGVyVHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQkocmV2
aXNpb24gMjc3OTM5KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1BpeGVsRHVtcFN1cHBv
cnRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNiArMzgsNyBAQAog
I2ltcG9ydCA8Q29tbW9uQ3J5cHRvL0NvbW1vbkRpZ2VzdC5oPgogI2ltcG9ydCA8TW9iaWxlQ29y
ZVNlcnZpY2VzL1VUQ29yZVR5cGVzLmg+CiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0dyYXBoaWNzQ29udGV4dENHLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0lPU3VyZmFjZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgpAQCAtNzEsNyArNzIsNyBAQCBS
ZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0bWFwQ29udGV4CiAjZWxzZQogICAgIFdlYkNv
cmU6OklPU3VyZmFjZTo6Rm9ybWF0IHNuYXBzaG90Rm9ybWF0ID0gV2ViQ29yZTo6SU9TdXJmYWNl
OjpGb3JtYXQ6OkJHUkE7CiAjZW5kaWYKLSAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1
cmZhY2U6OmNyZWF0ZShXZWJDb3JlOjpleHBhbmRlZEludFNpemUoc25hcHNob3RTaXplKSwgV2Vi
Q29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSwgc25hcHNob3RGb3JtYXQpOworICAgIGF1dG8gc3Vy
ZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlKFdlYkNvcmU6OmV4cGFuZGVkSW50U2l6
ZShzbmFwc2hvdFNpemUpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
c25hcHNob3RGb3JtYXQpOwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjZ0ltYWdlID0gc3Vy
ZmFjZS0+Y3JlYXRlSW1hZ2UoKTsKIAogICAgIHZvaWQqIGJpdG1hcEJ1ZmZlciA9IG51bGxwdHI7
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RU
ZXN0c0NHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcAkocmV2aXNpb24gMjc3OTM5KQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIFVTRShDRykKIAorI2luY2x1ZGUg
PFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNw
bGF5TGlzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RSZXBsYXllci5oPgpAQCAtNDYsOCArNDcsOCBAQCBURVNU
KERpc3BsYXlMaXN0VGVzdHMsIFJlcGxheVdpdGhNaXNzaW5nCiB7CiAgICAgRmxvYXRSZWN0IGNv
bnRleHRCb3VuZHMgeyAwLCAwLCBjb250ZXh0V2lkdGgsIGNvbnRleHRIZWlnaHQgfTsKIAotICAg
IGF1dG8gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NH
Q29sb3JTcGFjZVNSR0IpKTsKLSAgICBhdXRvIGNnQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlKG51bGxwdHIsIGNvbnRleHRXaWR0aCwgY29udGV4dEhlaWdodCwgOCwgNCAq
IGNvbnRleHRXaWR0aCwgY29sb3JTcGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxp
ZWRMYXN0KSk7CisgICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCk7CisgICAgYXV0byBjZ0NvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0
ZShudWxscHRyLCBjb250ZXh0V2lkdGgsIGNvbnRleHRIZWlnaHQsIDgsIDQgKiBjb250ZXh0V2lk
dGgsIGNvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0
aXBsaWVkTGFzdCkpOwogICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0IHsgY2dDb250ZXh0Lmdl
dCgpIH07CiAKICAgICBhdXRvIGltYWdlQnVmZmVySWRlbnRpZmllciA9IFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKQEAgLTY5LDcgKzcwLDcgQEAgVEVTVChEaXNwbGF5
TGlzdFRlc3RzLCBSZXBsYXlXaXRoTWlzc2luZwogICAgIH0KIAogICAgIHsKLSAgICAgICAgYXV0
byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoeyAxMDAsIDEwMCB9LCBSZW5kZXJp
bmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBp
eGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKHsgMTAwLCAxMDAgfSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwg
Y29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgSW1hZ2VCdWZmZXJIYXNo
TWFwIGltYWdlQnVmZmVyTWFwOwogICAgICAgICBpbWFnZUJ1ZmZlck1hcC5zZXQoaW1hZ2VCdWZm
ZXJJZGVudGlmaWVyLCBpbWFnZUJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKIAo=
</data>
<flag name="commit-queue"
          id="450677"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429485</attachid>
            <date>2021-05-23 16:29:47 -0700</date>
            <delta_ts>2021-05-24 17:36:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226143-20210523153742.patch</filename>
            <type>text/plain</type>
            <size>277406</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5NSBAQAorMjAyMS0wNS0yMiAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdyYXBwaW5nIGEgcGxhdGZvcm0gY29sb3Ig
c3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0Yy4pCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxNDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBSZXBsYWNlIGVudW1lcmF0aW9uIGJhc2Vk
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSB3aXRoIGEgc3RydWN0IHdyYXBwaW5nCisgICAgICAgIGEg
cGxhdGZvcm0gY29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0Yy4p
LiBGb3IgcG9ydHMKKyAgICAgICAgdGhhdCBkb24ndCBoYXZlIGEgcGxhdGZvcm0gbGV2ZWwgY29s
b3Igc3BhY2UgdHlwZSwgYSBidWlsdGluIFBsYXRmb3JtQ29sb3JTcGFjZQorICAgICAgICB0eXBl
IGlzIHByb3ZpZGVkIHRoYXQgaXMganVzdCB0aGUgb2xkIGVudW0gcmVuYW1lZCB0byBQbGF0Zm9y
bUNvbG9yU3BhY2U6Ok5hbWUuCisKKyAgICAgICAgVGhlIGdvYWwgb2YgdGhpcyBjaGFuZ2UgaXMg
dG8gdW5pZnkgdGhlIGN1cnJlbnRseSBiaWZ1cmNhdGVkIGNvbmNlcHQgb2YgYW4KKyAgICAgICAg
SW1hZ2VCdWZmZXIncyBjb2xvciBzcGFjZSwgd2hpY2ggcHJldmlvc2x5IGNvdWxkIGVpdGhlciBi
ZSBiYXNlZCBvbiB0aGUgCisgICAgICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSAoYW5kIHJlZmxl
Y3RlZCBpbiB0aGUgY29sb3JTcGFjZSgpIG1lbWJlciBmdW5jdGlvbiksCisgICAgICAgIG9yIChm
b3IgQ0cgcG9ydHMpIGJhc2VkIG9uIGEgQ0dDb2xvclNwYWNlUmVmLCB3aXRoIHRoZSBjb2xvclNw
YWNlKCkgZnVuY3Rpb24KKyAgICAgICAgcmV0dXJuaW5nIHNSR0IgZXZlbiBpZiB0aGUgSW1hZ2VC
dWZmZXIgd2FzIG5vdC4gCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIE1v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xp
cGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFydHdvcmtJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIFNvdXJjZXMu
dHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wSW1hZ2VCaXRtYXApOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRJbWFnZUJpdG1hcCk6CisgICAgICAgICogY3NzL0NT
U0ZpbHRlckltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1hZ2VW
YWx1ZTo6aW1hZ2UpOgorICAgICAgICAqIGh0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRDYW52YXM6OmNvcGllZEltYWdlIGNvbnN0KToKKyAg
ICAgICAgKiBodG1sL0N1c3RvbVBhaW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Vz
dG9tUGFpbnRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnRvTWVkaWFT
YW1wbGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdl
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcg
Y29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSW1hZ2VCaXRtYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCaXRtYXA6OmNyZWF0
ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVhdGVQcm9t
aXNlKToKKyAgICAgICAgKiBodG1sL09mZnNjcmVlbkNhbnZhcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpPZmZzY3JlZW5DYW52YXM6OmNvbW1pdFRvUGxhY2Vob2xkZXJDYW52YXMpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6Y29sb3JTcGFjZSBjb25zdCk6CisgICAgICAg
ICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgICogaHRtbC9jYW52
YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dDo6c2V0T3V0cHV0Qml0bWFwKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0
b0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1ByZWRlZmluZWRD
b2xvclNwYWNlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5o
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VCdWZm
ZXJDYWNoZTo6aW1hZ2VCdWZmZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJv
bFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlVGV4dFRyYWNrUmVwcmVzZW50
YXRpb25JbWFnZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNQYXR0ZXJuKToK
KyAgICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OmNy
ZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5oOgorICAgICAg
ICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6
OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lU25hcHNob3R0
aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXApOgor
ICAgICAgICAqIHBhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
YW1wbGVDb2xvcik6CisgICAgICAgICogcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdCk6CisgICAgICAgICog
cGxhdGZvcm0vSG9zdFdpbmRvdy5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtQ29sb3JT
cGFjZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29sb3JTcGFjZTo6Z2V0
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL1NjcmVlblByb3BlcnRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVlblBy
b3BlcnRpZXM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5EYXRhOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVuRGF0YTo6ZGVjb2RlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9y
Ojp0b0NvbG9yQ29tcG9uZW50c0luQ29sb3JTcGFjZSBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNv
bnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVyQ29sb3JDb21wb25lbnRzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Db2xvclNwYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3Jl
dGVJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJ
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJh
d1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29sb3JT
cGFjZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKToKKyAgICAgICAgKFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFy
U1JHQik6CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQ
Myk6CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRlc3RpbmF0aW9u
Q29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdl
YkNvcmU6Om9wZXJhdG9yIT0pOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpwbGF0Zm9ybUNvbG9yU3Bh
Y2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpkZWNv
ZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNvcHlSZWN0VG9CdWZmZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQaXhlbEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlckJhY2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJCYWNrZW5kOjpjb2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9QaXhlbEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UGl4ZWxCdWZmZXI6OmRl
Y29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VWSW1hZ2VDR0ltYWdlRm9ybWF0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5oOgorICAgICAgICAoV2Vi
Q29yZTo6UGl4ZWxCdWZmZXJGb3JtYXQ6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNmZXJC
R1JBUGl4ZWxCdWZmZXJUb0lPU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVWaWRl
b1NhbXBsZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlOjpS
ZW1vdGVWaWRlb1NhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZTo6
c3VyZmFjZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9T
YW1wbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OmdldFNjcmF0Y2hCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6Ymx1clNoYWRvd0J1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3U2hhZG93TGF5ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWlu
dFJlc3VsdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm9CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9CYWNr
ZW5kOjp0cmFuc2Zvcm1Db2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0NvbG9yQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvQ0dDb21wYXRp
YmxlQ29tcG9uZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDR0NvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OnBsYXRmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmg6CisgICAgICAgIChXZWJDb3JlOjpj
YWNoZWRDR0NvbG9yU3BhY2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnBhaW50VG9DYW52YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0lPU3VyZmFjZVBvb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3VyZmFjZU1hdGNo
ZXNQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZVBvb2w6OnRha2VTdXJm
YWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29weUNHSW1hZ2VGb3JF
bmNvZGluZyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjplbmNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL05hdGl2ZUltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnNp
bmdsZVBpeGVsU29saWRDb2xvciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFj
a2luZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tOgorICAgICAgICAo
V2ViQ29yZTo6SU9TdXJmYWNlOjpzdXJmYWNlRnJvbVBvb2wpOgorICAgICAgICAoV2ViQ29yZTo6
SU9TdXJmYWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVG
cm9tU2VuZFJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVN1
cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tSW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tUGl4ZWxCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpJT1N1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6
SU9TdXJmYWNlOjplbnN1cmVQbGF0Zm9ybUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SU9T
dXJmYWNlOjptaWdyYXRlQ29sb3JTcGFjZVRvUHJvcGVydGllcyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OnJlbmRlclRv
SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNm
ZXJTZXNzaW9uVlQubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVRyYW5zZmVyU2Vzc2lvblZU
OjpjcmVhdGVQaXhlbEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4
ZWxCdWZmZXJDb25mb3JtZXJDVi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlckNv
bmZvcm1lckNWOjpjcmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpkZXN0cm95KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkJlZ2luQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmNvbG9yU3BhY2UgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkJlZ2lu
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkdldFBpeGVsQnVmZmVyOjpHZXRQaXhlbEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6R2V0UGl4ZWxCdWZmZXI6Om91dHB1dEZvcm1hdCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6R2V0UGl4ZWxCdWZmZXI6OmVuY29kZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6R2V0UGl4ZWxCdWZmZXI6OmRlY29kZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlw
VG9EcmF3aW5nQ29tbWFuZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURpc3Bs
YWNlbWVudE1hcDo6c2V0UmVzdWx0Q29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVUaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6cGxhdGZvcm1BcHBs
eVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRQaXhlbEJ1
ZmZlclRvQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvbnZl
cnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OmNvcHlDb252ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyRWZmZWN0Ojpjb3B5Q29udmVydGVkUGl4ZWxCdWZmZXJUb0Rlc3RpbmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6cmVxdWlyZXNQaXhlbEJ1ZmZlckNv
bG9yU3BhY2VDb252ZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6dHJh
bnNmb3JtUmVzdWx0Q29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJFZmZlY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6b3Bl
cmF0aW5nQ29sb3JTcGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6
OnNldE9wZXJhdGluZ0NvbG9yU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0
OjpyZXN1bHRDb2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6c2V0UmVzdWx0Q29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9Tb3VyY2VHcmFwaGljLmg6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjpT
b3VyY2VHcmFwaGljKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAgICogcGxh
dGZvcm0vaW9zL1BsYXRmb3JtU2NyZWVuSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVu
Q29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0U2NyZWVuUHJvcGVydGllcyk6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6Y29sbGVjdFNjcmVlblByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2Ny
ZWVuQ29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6VGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdXaXRoVmlld0ludG9D
b250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlzcGxh
eUNhcHR1cmVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVuRGlzcGxheUNhcHR1cmVy
TWFjOjpjcmVhdGVEaXNwbGF5U3RyZWFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZp
ZGVvU291cmNlOjppbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vcGxheXN0
YXRpb24vUGxhdGZvcm1TY3JlZW5QbGF5U3RhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
Y3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGxhdGZvcm1TY3JlZW5X
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAgICog
cGxhdGZvcm0vd3BlL1BsYXRmb3JtU2NyZWVuV1BFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNj
cmVlbkNvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaDoKKyAg
ICAgICAgKFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGE6OmRlY29kZSk6
CisgICAgICAgICogcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGaWx0ZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Zp
bHRlcjo6YnVpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjphbGxvY2F0ZUJhY2tp
bmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6YXBwbHkpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpwYXR0ZXJuRm9yRGVzY3JpcHRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
aGVtZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFN5c3Rl
bVByZXZpZXdCYWRnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50UHJvZ3Jlc3NCYXIpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cGU6OmNyZWF0ZVJhc3RlclNoYXBlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlQ2xpcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXI6OmJ1aWxkUHJpbWl0aXZlcyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVNYXNrQW5kU3dhcENvbnRleHRGb3JUZXh0R3JhZGllbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250ZW50SW50
b01hc2tJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1h
c2tlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3JlYXRl
VGlsZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0Nv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRl
SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVm
ZmVyRm9yZWdyb3VuZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250
ZXh0Lmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFn
ZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVJbWFnZTo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKToKKwogMjAyMS0wNS0yMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgIFVzZSBDaGVja2VkTG9jayBpbiBldmVuIG1vcmUgcGxhY2VzCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTExOTcsNiArMTE5Nyw3IEBAIHNldChXZWJD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db25j
cmV0ZUltYWdlQnVmZmVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9EYXNoQXJyYXkuaAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0RlY29kaW5nT3B0aW9ucy5oCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5
UmVmcmVzaE1vbml0b3IuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9u
aXRvckNsaWVudC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9y
RmFjdG9yeS5oCkBAIC0xMjkzLDYgKzEyOTQsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuaAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyRm9ybWF0LmgKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9QaXhlbEZvcm1hdC5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1Db2xvclNwYWNl
LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL1BsYXRmb3JtSW1hZ2UuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3Jt
SW1hZ2VCdWZmZXIuaApJbmRleDogU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xOTUwLDYgKzE5NTAs
NyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xs
ZXIuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKK3Bs
YXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlS
ZWZyZXNoTW9uaXRvckNsaWVudC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNo
TW9uaXRvck1hbmFnZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNs
aXBib2FyZC9DbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9DbGlwYm9hcmRJdGVtQmlu
ZGluZ3NEYXRhU291cmNlLmNwcAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI4NSw3ICsyODUsNyBAQCB2b2lkIENsaXBib2FyZEl0ZW1C
aW5kaW5nc0RhdGFTb3VyY2U6OkNsCiAKICAgICAgICAgYXV0byBiaXRtYXBJbWFnZSA9IEJpdG1h
cEltYWdlOjpjcmVhdGUoKTsKICAgICAgICAgYml0bWFwSW1hZ2UtPnNldERhdGEoV1RGTW92ZShi
dWZmZXJUb1Nhbml0aXplKSwgdHJ1ZSk7Ci0gICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKGJpdG1hcEltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJH
UkE4KTsKKyAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoYml0
bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgICAgIGlm
ICghaW1hZ2VCdWZmZXIpIHsKICAgICAgICAgICAgIG1fZGF0YSA9IHsgbnVsbFN0cmluZygpIH07
CiAgICAgICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcAkocmV2aXNpb24gMjc3OTM5KQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBBcnR3b3JrSW1hZ2VMb2FkZXI6
Om5vdGlmeUZpbmlzaGVkKAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlclRvU2FuaXRp
emUgPSBtX2NhY2hlZEltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CiAgICAgYXV0byBiaXRtYXBJbWFn
ZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKICAgICBiaXRtYXBJbWFnZS0+c2V0RGF0YShXVEZN
b3ZlKGJ1ZmZlclRvU2FuaXRpemUpLCB0cnVlKTsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFj
Y2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoYml0bWFw
SW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFpbWFn
ZUJ1ZmZlcikgewogICAgICAgICBtX2NhbGxiYWNrKG51bGxwdHIpOwogICAgICAgICByZXR1cm47
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJD
b3JlL1BBTC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0w
NS0yMiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdyYXBwaW5nIGEgcGxh
dGZvcm0gY29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0Yy4pCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxNDMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIHBhbC9zcGkvY2cv
Q29yZUdyYXBoaWNzU1BJLmg6CisgICAgICAgIEFkZCBhZGRpb25hbCBTUEkgZm9yIHdvcmtpbmcg
d2l0aCBDR0NvbG9yU3BhY2VSZWZzLgorCiAyMDIxLTA1LTIxICBXZW5zb24gSHNpZWggIDx3ZW5z
b25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gQWRvcHQgUUxJdGVtIGluIFdL
SW1hZ2VFeHRyYWN0aW9uUHJldmlld0NvbnRyb2xsZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCShyZXZpc2lvbiAyNzc5MzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQyLDYgKzI0Miw3IEBAIHR5cGVkZWYgdm9pZCAoKkNHU05vdGlmeVByb2NQ
dHIpKENHU05vdGkKIAogV1RGX0VYVEVSTl9DX0JFR0lOCiAKK2Jvb2wgQ0dDb2xvclRyYW5zZm9y
bUNvbnZlcnRDb2xvckNvbXBvbmVudHMoQ0dDb2xvclRyYW5zZm9ybVJlZiwgQ0dDb2xvclNwYWNl
UmVmLCBDR0NvbG9yUmVuZGVyaW5nSW50ZW50LCBjb25zdCBDR0Zsb2F0IHNyY0NvbXBvbmVudHNb
XSwgQ0dGbG9hdCBkc3RDb21wb25lbnRzW10pOwogQ0dDb2xvclJlZiBDR0NvbG9yVHJhbnNmb3Jt
Q29udmVydENvbG9yKENHQ29sb3JUcmFuc2Zvcm1SZWYsIENHQ29sb3JSZWYsIENHQ29sb3JSZW5k
ZXJpbmdJbnRlbnQpOwogQ0dDb2xvclRyYW5zZm9ybVJlZiBDR0NvbG9yVHJhbnNmb3JtQ3JlYXRl
KENHQ29sb3JTcGFjZVJlZiwgQ0ZEaWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXMpOwogCkBAIC0yOTEs
NiArMjkyLDggQEAgQ0dTdHlsZVJlZiBDR0dTdGF0ZUdldFN0eWxlKENHR1N0YXRlUmVmKQogQ0dT
dHlsZVR5cGUgQ0dTdHlsZUdldFR5cGUoQ0dTdHlsZVJlZik7CiBjb25zdCB2b2lkICpDR1N0eWxl
R2V0RGF0YShDR1N0eWxlUmVmKTsKIENHQ29sb3JSZWYgQ0dTdHlsZUdldENvbG9yKENHU3R5bGVS
ZWYpOworYm9vbCBDR0NvbG9yU3BhY2VFcXVhbFRvQ29sb3JTcGFjZShDR0NvbG9yU3BhY2VSZWYs
IENHQ29sb3JTcGFjZVJlZik7CitDRlN0cmluZ1JlZiBDR0NvbG9yU3BhY2VDb3B5SUNDUHJvZmls
ZURlc2NyaXB0aW9uKENHQ29sb3JTcGFjZVJlZik7CiAKICNpZiBIQVZFKENHUEFUSF9HRVRfTlVN
QkVSX09GX0VMRU1FTlRTKQogc2l6ZV90IENHUGF0aEdldE51bWJlck9mRWxlbWVudHMoQ0dQYXRo
UmVmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzk5Niw2ICszOTk2
LDcgQEAKIAkJQkMyM0YwREIwREFGRjRBNDAwOUZEQzkxIC8qIEdlbmVyYXRlZEltYWdlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzIzRjBEQTBEQUZG
NEE0MDA5RkRDOTEgLyogR2VuZXJhdGVkSW1hZ2UuaCAqLzsgfTsKIAkJQkMyNzRCMkYxNDBFQkVC
MjAwRUFERkE2IC8qIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNzRCMkUxNDBFQkVCMjAwRUFERkE2IC8q
IENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oICovOyB9OwogCQlCQzJDQkY0RTE0MEYxQUJEMDAz
ODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyQ0JGNEIxNDBGMUE2NTAwMzg3OUJFIC8qIEpTV2ViR0xD
b250ZXh0RXZlbnQuaCAqLzsgfTsKKwkJQkMyQ0NBMTAyNjU1RERCMjAwQjhDMDM1IC8qIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMyQ0NBMEUyNjU1RERCMjAwQjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJD
MzA1QzdBMEMwNzZCQjMwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMwNUM3ODBDMDc2QkIzMDBD
RDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudC5oICovOyB9OwogCQlCQzM0OEJENDBEQjdGODA0
MDA0QUJBQjkgLyogSlNYTUxIdHRwUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzNDhCRDIwREI3RjgwNDAwNEFCQUI5IC8qIEpTWE1MSHR0
cFJlcXVlc3QuaCAqLzsgfTsKIAkJQkMzNDhCRDQwREI3RjgwNDAwNEFCQUJBIC8qIFdlYkNvcmVK
U0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzM0OEJEMjBEQjdGODA0MDA0QUJBQkEgLyogV2ViQ29yZUpTQnVpbHRpbnMuaCAqLzsgfTsK
QEAgLTQwMDcsNiArNDAwOCw3IEBACiAJCUJDM0JFOTk5MEU5QzFFNUQwMDgzNTU4OCAvKiBSZW5k
ZXJTY3JvbGxiYXJUaGVtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMzQkU5OTgwRTlDMUU1RDAwODM1NTg4IC8qIFJlbmRlclNjcm9sbGJhclRoZW1l
LmggKi87IH07CiAJCUJDM0MzOUI3MEMwRDNEOEQwMDVGNEQ3QSAvKiBKU01lZGlhTGlzdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzQzM5QjUwQzBE
M0Q4RDAwNUY0RDdBIC8qIEpTTWVkaWFMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMzRDg1QkMxQzBFMkU3QTAwRDNCNjEwIC8qIEpTSFRN
TFBpY3R1cmVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzgwOEIxMzFDMEUyQjM1MDA2NkZENkIgLyogSlNIVE1MUGljdHVyZUVsZW1lbnQu
aCAqLzsgfTsKKwkJQkMzRTYyNDMyNjU5NzkxODAwNTQ4QUNEIC8qIFBsYXRmb3JtQ29sb3JTcGFj
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzRTYy
NDIyNjU5NzkxNzAwNTQ4QUNEIC8qIFBsYXRmb3JtQ29sb3JTcGFjZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDNDM2OEU4MEMyMjZFMzIwMDVF
RkI1RiAvKiBSZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzQzNjhFNzBDMjI2RTMyMDA1RUZCNUYgLyogUmVjdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDNDZDMUZEMEMwRERDOEYwMDIwQ0ZD
MyAvKiBKU0NTU0ZvbnRGYWNlUnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkM0NkMxRjMwQzBEREM4RjAwMjBDRkMzIC8qIEpTQ1NTRm9udEZhY2VS
dWxlLmggKi87IH07CiAJCUJDNDZDMUZGMEMwRERDOEYwMDIwQ0ZDMyAvKiBKU0NTU0ltcG9ydFJ1
bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNDZD
MUY1MEMwRERDOEYwMDIwQ0ZDMyAvKiBKU0NTU0ltcG9ydFJ1bGUuaCAqLzsgfTsKQEAgLTE0MTM0
LDYgKzE0MTM2LDggQEAKIAkJQkMyOTkzNUMxN0ExREQ1ODAwQkNFODgwIC8qIENvbG9ySW5wdXRU
eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9ySW5wdXRU
eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyQ0JGNEIxNDBGMUE2NTAw
Mzg3OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNXZWJHTENvbnRleHRFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQzJDQkY3QTE0MEYxRDU4MDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMQ29udGV4dEV2ZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQ0NBMEUyNjU1RERCMjAwQjhD
MDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQ0NBMEYyNjU1
RERCMjAwQjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQzJFRDU1NDBDNkI5QkQzMDA5MjBCRkYgLyogSlNFbGVtZW50Q3VzdG9tLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRWxlbWVudEN1c3RvbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMkVENkJCMEM2QkQyRjAwMDkyMEJGRiAvKiBK
U0F0dHJDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNB
dHRyQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzMDVDNzcwQzA3
NkJCMzAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTE9iamVjdEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTQxNTcsNiArMTQxNjEsNyBAQAogCQlCQzNCRTlBQTBFOUMy
NDIwMDA4MzU1ODggLyogUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQkMzQzM5QjQwQzBEM0Q4RDAwNUY0RDdBIC8qIEpTTWVkaWFMaXN0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhTGlzdC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDM0MzOUI1MEMwRDNEOEQwMDVGNEQ3
QSAvKiBKU01lZGlhTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNN
ZWRpYUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMzRTYyNDIyNjU5Nzkx
NzAwNTQ4QUNEIC8qIFBsYXRmb3JtQ29sb3JTcGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQbGF0Zm9ybUNvbG9yU3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkM0MzY4RTcwQzIyNkUzMjAwNUVGQjVGIC8qIFJlY3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkM0NkMxRUQwQzBEREJERjAwMjBDRkMzIC8qIEpTQ1NTUnVsZUN1c3RvbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDU1NSdWxlQ3VzdG9tLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM0NkMxRjIwQzBEREM4RjAwMjBDRkMzIC8qIEpTQ1NT
Rm9udEZhY2VSdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0NTU0ZvbnRGYWNlUnVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjky
NSw2ICsyNjkzMCw4IEBACiAJCQkJMkQyRkMwNTUxNDYwQ0Q2RjAwMjYzNjMzIC8qIENyb3NzZmFk
ZUdlbmVyYXRlZEltYWdlLmggKi8sCiAJCQkJQThDQjQxMDIwRTg1QjhBNTAwMzJDNEYwIC8qIERh
c2hBcnJheS5oICovLAogCQkJCTU1NTEzMDAwMUU3Q0NDQ0EwMEE2OUUzOCAvKiBEZWNvZGluZ09w
dGlvbnMuaCAqLywKKwkJCQlCQzJDQ0EwRjI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGluYXRpb25D
b2xvclNwYWNlLmNwcCAqLywKKwkJCQlCQzJDQ0EwRTI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGlu
YXRpb25Db2xvclNwYWNlLmggKi8sCiAJCQkJNDlGQzdBNEYxNDQ0QUY1RjAwQTVEODY0IC8qIERp
c3BsYXlSZWZyZXNoTW9uaXRvci5jcHAgKi8sCiAJCQkJNDlBRjJENjgxNDQzNUQwNTAwMTZBNzg0
IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvci5oICovLAogCQkJCTJEMjlFQ0MxMTkyRUNDODMwMDk4
NEI3OCAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuY3BwICovLApAQCAtMjcxMDEsNiAr
MjcxMDgsNyBAQAogCQkJCUJDNjM1RThCMjY0QzJDQUUwMDBFRjMzQSAvKiBQaXhlbEJ1ZmZlckZv
cm1hdC5oICovLAogCQkJCUJDNjM1RTkwMjY0QzQ2OUYwMDBFRjMzQSAvKiBQaXhlbEZvcm1hdC5j
cHAgKi8sCiAJCQkJQkNBNTU5MTIyNjNEQkQ3OTAwN0YxOUIzIC8qIFBpeGVsRm9ybWF0LmggKi8s
CisJCQkJQkMzRTYyNDIyNjU5NzkxNzAwNTQ4QUNEIC8qIFBsYXRmb3JtQ29sb3JTcGFjZS5oICov
LAogCQkJCTcyNkQ1NkUxMjUzQUUwNDMwMDAyRUY5MCAvKiBQbGF0Zm9ybUltYWdlLmggKi8sCiAJ
CQkJNzJCQUMzQTYyM0UxNzMyODAwOEQ3NDFDIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXIuaCAqLywK
IAkJCQk1NTA2NDBBRDI0MDc1NkRBMDBBQUUwNDUgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tl
bmQuaCAqLywKQEAgLTMyMjMwLDYgKzMyMjM4LDcgQEAKIAkJCQk5NDc5NDkyNTFFMDMwOEFGMDAw
MThEODUgLyogRGVwcmVjYXRlZENTU09NVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk0Nzk0
OTNEMUUwNDYzQjYwMDAxOEQ4NSAvKiBEZXByZWNhdGVkQ1NTT01WYWx1ZUxpc3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTdDQkQxMjlFMUY5OEI5MEUwMDEyN0QyOSAvKiBEZXByZWNhdGVkR2xvYmFs
U2V0dGluZ3MuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMkNDQTEwMjY1NUREQjIwMEI4QzAzNSAv
KiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMTIyM0M1MjYw
MzU2N0QwMEIwQTBCNiAvKiBEZXRhY2hlZFJUQ0RhdGFDaGFubmVsLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBN0M5QUJGOTEzNTdBM0JGMDBGNTUwM0YgLyogRGV0YWlsc01hcmtlckNvbnRyb2wuaCBp
biBIZWFkZXJzICovLAogCQkJCUExRUQ3NzhEMUJFMzI5NDAwMERDMTc5MSAvKiBEZXZpY2UuaCBp
biBIZWFkZXJzICovLApAQCAtMzIyODEsNiArMzIyOTAsNyBAQAogCQkJCTFDRThEMTI3MjYxODVD
MEUwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkU1RkJENTFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RJdGVtcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRjQzNzdENTcyNTUxQzlDNjAwODBBQkZFIC8qIERpc3BsYXlM
aXN0SXRlbVR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDM0U2MjQzMjY1OTc5MTgwMDU0OEFD
RCAvKiBQbGF0Zm9ybUNvbG9yU3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDRThEMTJFMjYx
ODYxQzQwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkU1RkJENzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZWNvcmRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZFNUZCRDkxQzNERDUxRTAwMDdBMkNBIC8qIERpc3BsYXlMaXN0UmVw
bGF5ZXIuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCShyZXZpc2lvbiAyNzc5MzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDgyLDcgKzEwODIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsg
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICAgICAgUGl4ZWxCdWZmZXJGb3Jt
YXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4ZWxG
b3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9OwogICAgICAgICBj
b25zdCBJbnRTaXplJiBsb2dpY2FsU2l6ZSA9IGJ1ZmZlci0+bG9naWNhbFNpemUoKTsKICAgICAg
ICAgYXV0byBwaXhlbEJ1ZmZlciA9IGJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoZm9ybWF0LCB7IElu
dFBvaW50Ojp6ZXJvKCksIGxvZ2ljYWxTaXplIH0pOwogICAgICAgICBpZiAoIXBpeGVsQnVmZmVy
KSB7CkBAIC0zMTg3LDcgKzMxODcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWUoKTsKICAgICAgICAgfQogCi0gICAgICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7
IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JB
OCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgICAgIFBpeGVsQnVmZmVyRm9y
bWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIFBpeGVs
Rm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsKICAgICAgICAg
YXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBpbWFnZURh
dGFTaXplLCBhcnJheUJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgaWYgKCFwaXhl
bEJ1ZmZlcikgewogICAgICAgICAgICAgZmFpbCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYs
NyArMTE2LDcgQEAgUmVmUHRyPEltYWdlPiBDU1NGaWx0ZXJJbWFnZVZhbHVlOjppbWFnZQogCiAg
ICAgLy8gVHJhbnNmb3JtIEltYWdlIGludG8gSW1hZ2VCdWZmZXIuCiAgICAgLy8gRklYTUUgKDE0
OTQyNCk6IFRoaXMgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxl
cmF0ZWQuCi0gICAgYXV0byB0ZXh0dXJlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Is
IFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byB0ZXh0dXJlID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShzaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIXRleHR1cmUp
CiAgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcAkocmV2aXNpb24gMjc3OTM5KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTkyLDcgKzkyLDcgQEAgSW1hZ2UqIEN1c3RvbVBhaW50Q2FudmFzOjpjb3BpZWRJbWFnZSgpIAog
ICAgIGlmICghd2lkdGgoKSB8fCAhaGVpZ2h0KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgbV9jb3BpZWRCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVuZGVy
aW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQ
aXhlbEZvcm1hdDo6QkdSQTgsIG51bGxwdHIpOworICAgIG1fY29waWVkQnVmZmVyID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShzaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgsIG51bGxwdHIp
OwogICAgIGlmICghbV9jb3BpZWRCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50SW1hZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRJbWFnZS5jcHAJKHJldmlzaW9uIDI3
NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRJbWFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIEN1c3RvbVBhaW50SW1hZ2U6OmRyYXdQ
YXR0ZXJuKEdyYXBoCiAgICAgYWRqdXN0ZWRQYXR0ZXJuQ1RNLnNjYWxlKDEuMCAvIHhTY2FsZSwg
MS4wIC8geVNjYWxlKTsKICAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUoeFNjYWxlLCB5U2NhbGUp
OwogCi0gICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cihhZGp1c3RlZFNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgZGVzdENvbnRleHQp
OworICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
YWRqdXN0ZWRTaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgZGVzdENvbnRleHQp
OwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm47CiAgICAgZG9DdXN0b21QYWludChi
dWZmZXItPmNvbnRleHQoKSwgYWRqdXN0ZWRTaXplKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODI1LDcg
KzgyNSw3IEBAIFJlZlB0cjxNZWRpYVNhbXBsZT4gSFRNTENhbnZhc0VsZW1lbnQ6OnQKICAgICAv
LyBGSVhNRTogVGhpcyBjYW4gbGlrZWx5IGJlIG9wdGltaXplZCBxdWl0ZSBhIGJpdCwgZXNwZWNp
YWxseSBpbiB0aGUgY2FzZXMgd2hlcmUKICAgICAvLyB0aGUgSW1hZ2VCdWZmZXIgaXMgYmFja2Vk
IGJ5IEdQVSBtZW1vcnkgYWxyZWFkeSBhbmQvb3IgaXMgaW4gdGhlIEdQVSBwcm9jZXNzIGJ5CiAg
ICAgLy8gc3BlY2lhbGl6aW5nIHRvTWVkaWFTYW1wbGUoKSBpbiBJbWFnZUJ1ZmZlckJhY2tlbmQg
dG8gbm90IHVzZSBnZXRQaXhlbEJ1ZmZlcigpLgotICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBpbWFn
ZUJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11
bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
IH0sIHsgeyB9LCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSB9KTsKKyAgICBhdXRvIHBpeGVs
QnVmZmVyID0gaW1hZ2VCdWZmZXItPmdldFBpeGVsQnVmZmVyKHsgQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6QkdSQTgsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpIH0sIHsgeyB9LCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSB9KTsK
ICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtOTU1
LDcgKzk1NSw3IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdlQnVmZmUKICAg
ICBhdXRvIFtjb2xvclNwYWNlLCBwaXhlbEZvcm1hdF0gPSBbJl0gewogICAgICAgICBpZiAobV9j
b250ZXh0KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6cGFpciB7IG1fY29udGV4dC0+Y29sb3JT
cGFjZSgpLCBtX2NvbnRleHQtPnBpeGVsRm9ybWF0KCkgfTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
cGFpciB7IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4IH07
CisgICAgICAgIHJldHVybiBzdGQ6OnBhaXIgeyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgUGl4ZWxGb3JtYXQ6OkJHUkE4IH07CiAgICAgfSgpOwogCiAgICAgc2V0SW1hZ2VCdWZmZXIo
SW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplKCksIHJlbmRlcmluZ01vZGUsIHVzZURpc3BsYXlMaXN0
LCBSZW5kZXJpbmdQdXJwb3NlOjpDYW52YXMsIDEsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBo
b3N0V2luZG93KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5j
cHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIEhUTUxWaWRl
b0VsZW1lbnQ6Om1lZGlhUGxheWVyRmlyc3RWCiAgICAgICAgIHJlbmRlcmVyLT51cGRhdGVGcm9t
RWxlbWVudCgpOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IEhUTUxWaWRlb0VsZW1lbnQ6OmNy
ZWF0ZUJ1ZmZlckZvclBhaW50aW5nKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9k
ZSByZW5kZXJpbmdNb2RlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxG
b3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CitSZWZQdHI8SW1hZ2VCdWZmZXI+IEhUTUxWaWRlb0Vs
ZW1lbnQ6OmNyZWF0ZUJ1ZmZlckZvclBhaW50aW5nKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVu
ZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNv
bG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0KSBjb25zdAogewogICAgIGF1dG8qIGhv
c3RXaW5kb3cgPSBkb2N1bWVudCgpLnZpZXcoKSAmJiBkb2N1bWVudCgpLnZpZXcoKS0+cm9vdCgp
ID8gZG9jdW1lbnQoKS52aWV3KCktPnJvb3QoKS0+aG9zdFdpbmRvdygpIDogbnVsbHB0cjsKICAg
ICBhdXRvIHNob3VsZFVzZURpc3BsYXlMaXN0ID0gZG9jdW1lbnQoKS5zZXR0aW5ncygpLmRpc3Bs
YXlMaXN0RHJhd2luZ0VuYWJsZWQoKSA/IFNob3VsZFVzZURpc3BsYXlMaXN0OjpZZXMgOiBTaG91
bGRVc2VEaXNwbGF5TGlzdDo6Tm87CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0Vs
ZW1lbnQuaAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEyICszMywxMiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIEhUTUxJ
bWFnZUxvYWRlcjsKIGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgUmVuZGVyVmlkZW87CiBjbGFz
cyBQaWN0dXJlSW5QaWN0dXJlT2JzZXJ2ZXI7CiAKLWVudW0gY2xhc3MgRGVzdGluYXRpb25Db2xv
clNwYWNlIDogdWludDhfdDsKIGVudW0gY2xhc3MgUGl4ZWxGb3JtYXQgOiB1aW50OF90OwogZW51
bSBjbGFzcyBSZW5kZXJpbmdNb2RlIDogYm9vbDsKIApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpIG92ZXJyaWRlOwogI2VuZGlmCiAK
LSAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUJ1ZmZlckZvclBhaW50aW5nKGNvbnN0IEZs
b2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUGl4ZWxGb3Jt
YXQpIGNvbnN0OworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQnVmZmVyRm9yUGFpbnRp
bmcoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiwgUGl4ZWxGb3JtYXQpIGNvbnN0OwogCiAgICAgLy8gVXNlZCBieSBjYW52YXMgdG8g
Z2FpbiByYXcgcGl4ZWwgYWNjZXNzCiAgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4
dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSW1hZ2VCaXRtYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSW1hZ2VCaXRtYXAuY3BwCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlQml0bWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsMTIgKzg0LDEyIEBAIFJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCaXRtYXA6OmNyZWF0ZUkKICAgICAgICAgYXV0byYgZG9j
dW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAgICAg
ICAgIGlmIChkb2N1bWVudC52aWV3KCkgJiYgZG9jdW1lbnQudmlldygpLT5yb290KCkpIHsKICAg
ICAgICAgICAgIGF1dG8gaG9zdFdpbmRvdyA9IGRvY3VtZW50LnZpZXcoKS0+cm9vdCgpLT5ob3N0
V2luZG93KCk7Ci0gICAgICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBy
ZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6Tm8sIFJlbmRlcmluZ1B1cnBvc2U6
OkNhbnZhcywgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBp
eGVsRm9ybWF0OjpCR1JBOCwgaG9zdFdpbmRvdyk7CisgICAgICAgICAgICByZXR1cm4gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6
Tm8sIFJlbmRlcmluZ1B1cnBvc2U6OkNhbnZhcywgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBob3N0V2luZG93KTsKICAg
ICAgICAgfQogICAgIH0KIAogICAgIC8vIEZJWE1FIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTg0
ODI+IEVuYWJsZSB3b3JrZXIgYmFzZWQgSW1hZ2VCaXRtYXAgYW5kIE9mZnNjcmVlbkNhbnZhcyBk
cmF3aW5nIHRvIHVzZSBHUFUgUHJvY2VzcyByZW5kZXJpbmcKLSAgICByZXR1cm4gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICByZXR1cm4gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogfQogCiB2
b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIEltYWdlQml0bWFwOjpTb3VyY2UmJiBzb3VyY2UsIEltYWdl
Qml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkK
QEAgLTUwNCw3ICs1MDQsNyBAQCB2b2lkIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKFNjcmlw
dEV4CiAgICAgYXV0byBvdXRwdXRTaXplID0gb3V0cHV0U2l6ZUZvclNvdXJjZVJlY3RhbmdsZShz
b3VyY2VSZWN0YW5nbGUsIG9wdGlvbnMpOwogCiAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZv
ciBjb2xvciBzcGFjZXMgLyBwaXhlbCBmb3JtYXRzIHRvIEltYWdlQml0bWFwLgotICAgIGF1dG8g
Yml0bWFwRGF0YSA9IHZpZGVvLT5jcmVhdGVCdWZmZXJGb3JQYWludGluZyhvdXRwdXRTaXplLCBi
dWZmZXJSZW5kZXJpbmdNb2RlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CisgICAgYXV0byBiaXRtYXBEYXRhID0gdmlkZW8tPmNyZWF0ZUJ1ZmZlckZv
clBhaW50aW5nKG91dHB1dFNpemUsIGJ1ZmZlclJlbmRlcmluZ01vZGUsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghYml0bWFwRGF0
YSkgewogICAgICAgICByZXNvbHZlV2l0aEJsYW5rSW1hZ2VCdWZmZXIoc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgIXRhaW50c09yaWdpbihzY3JpcHRFeGVjdXRpb25Db250ZXh0LnNlY3VyaXR5T3Jp
Z2luKCksICp2aWRlbyksIFdURk1vdmUocHJvbWlzZSkpOwogICAgICAgICByZXR1cm47CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCShyZXZpc2lvbiAyNzc5Mzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1MSwxNCArNDUxLDE0IEBAIHZvaWQgT2Zmc2NyZWVuQ2FudmFzOjpjb21taXRUb1Bs
YWNlaG9sZGUKICAgICAgICAgbV9jb250ZXh0LT5wYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZh
cygpOwogCiAgICAgaWYgKG1fcGxhY2Vob2xkZXJEYXRhLT5idWZmZXJQaXBlU291cmNlKSB7Ci0g
ICAgICAgIGF1dG8gYnVmZmVyQ29weSA9IGltYWdlQnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKEZs
b2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKKyAgICAgICAg
YXV0byBidWZmZXJDb3B5ID0gaW1hZ2VCdWZmZXItPmNvcHlSZWN0VG9CdWZmZXIoRmxvYXRSZWN0
KEZsb2F0UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7CiAgICAgICAgIGlmIChi
dWZmZXJDb3B5KQogICAgICAgICAgICAgbV9wbGFjZWhvbGRlckRhdGEtPmJ1ZmZlclBpcGVTb3Vy
Y2UtPmhhbmRsZShXVEZNb3ZlKGJ1ZmZlckNvcHkpKTsKICAgICB9CiAKICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9wbGFjZWhvbGRlckRhdGEtPmJ1ZmZlckxvY2sgfTsKICAgICBib29sIHNob3VsZFB1
c2hCdWZmZXIgPSAhbV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRCdWZmZXI7Ci0gICAg
bV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+Y29w
eVJlY3RUb0J1ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNh
bFNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgaW1hZ2VCdWZmZXItPmNvbnRl
eHQoKSk7CisgICAgbV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRCdWZmZXIgPSBpbWFn
ZUJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZUJ1
ZmZlci0+bG9naWNhbFNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBpbWFn
ZUJ1ZmZlci0+Y29udGV4dCgpKTsKICAgICBpZiAobV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdD
b21taXRCdWZmZXIgJiYgc2hvdWxkUHVzaEJ1ZmZlcikKICAgICAgICAgcHVzaEJ1ZmZlclRvUGxh
Y2Vob2xkZXIoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkocmV2aXNpb24gMjc3OTM5KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFt
ZXMuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuaCIKICNpbmNsdWRlICJD
U1NQcm9wZXJ0eVBhcnNlcldvcmtlclNhZmUuaCIKLSNpbmNsdWRlICJDb2xvclNwYWNlLmgiCiAj
aW5jbHVkZSAiR3JhZGllbnQuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUg
IkltYWdlRGF0YS5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2lu
Y2x1ZGUgIkNhbnZhc1BhdHRlcm4uaCIKLSNpbmNsdWRlICJDb2xvclNwYWNlLmgiCisjaW5jbHVk
ZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxl
bWVudC5oIgpAQCAtOTAsNyArOTAsNyBAQCBQaXhlbEZvcm1hdCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0OjpwaXhlCiAKIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBDYW52YXNSZW5kZXJpbmdDb250ZXh0
Ojpjb2xvclNwYWNlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCOworICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKIH0KIAog
Ym9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0Ojp3b3VsZFRhaW50T3JpZ2luKGNvbnN0IENhbnZh
c1BhdHRlcm4qIHBhdHRlcm4pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDEzICszNywxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBD
YW52YXNQYXR0ZXJuOworY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlOwogY2xhc3MgSFRNTENh
bnZhc0VsZW1lbnQ7CiBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogY2xhc3MgSFRNTFZpZGVvRWxl
bWVudDsKIGNsYXNzIEltYWdlQml0bWFwOwogY2xhc3MgVHlwZWRPTUNTU0ltYWdlVmFsdWU7CiBj
bGFzcyBXZWJHTE9iamVjdDsKLWVudW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDogdWlu
dDhfdDsKIGVudW0gY2xhc3MgUGl4ZWxGb3JtYXQgOiB1aW50OF90OwogCiBjbGFzcyBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0IDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5n
Q29udGV4dC5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1
LDcgKzk1LDcgQEAgdm9pZCBJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQ6OnNldE91dAogICAg
ICAgICAvLyBvbmx5IHJlYXNvbiBJIGNhbiB0aGluayBvZiBpcyB0b0RhdGFVUkwoKSwgYnV0IHRo
YXQgZG9lc24ndCBzZWVtIGxpa2UKICAgICAgICAgLy8gYSBnb29kIGVub3VnaCBhcmd1bWVudCB0
byB3YXN0ZSBtZW1vcnkuCiAKLSAgICAgICAgY2FudmFzKCktPnNldEltYWdlQnVmZmVyQW5kTWFy
a0RpcnR5KEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKGNhbnZhcygpLT53aWR0aCgpLCBj
YW52YXMoKS0+aGVpZ2h0KCkpLCBidWZmZXJSZW5kZXJpbmdNb2RlLCAxLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCkpOworICAgICAgICBjYW52YXMoKS0+
c2V0SW1hZ2VCdWZmZXJBbmRNYXJrRGlydHkoSW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUo
Y2FudmFzKCktPndpZHRoKCksIGNhbnZhcygpLT5oZWlnaHQoKSksIGJ1ZmZlclJlbmRlcmluZ01v
ZGUsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgp
KTsKIAogICAgICAgICAvLyAxLjQuIFNldCB0aGUgb3V0cHV0IGJpdG1hcCdzIG9yaWdpbi1jbGVh
biBmbGFnIHRvIHRydWUuCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1ByZWRl
ZmluZWRDb2xvclNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBy
ZWRlZmluZWRDb2xvclNwYWNlLmgiCiAKLSNpbmNsdWRlICJDb2xvclNwYWNlLmgiCisjaW5jbHVk
ZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM1LDMzICszNSwyNiBAQCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgdG9EZXN0aW5hdGlvbkNvbG9yCiB7CiAgICAgc3dpdGNoIChjb2xvclNwYWNlKSB7CiAg
ICAgY2FzZSBQcmVkZWZpbmVkQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgcmV0dXJuIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQjsKKyAgICAgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpOwogI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZ
X1AzKQogICAgIGNhc2UgUHJlZGVmaW5lZENvbG9yU3BhY2U6OkRpc3BsYXlQMzoKLSAgICAgICAg
cmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxheVAzOworICAgICAgICByZXR1cm4g
RGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDMoKTsKICNlbmRpZgogICAgIH0KIAogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0I7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOwogfQogCi1P
cHRpb25hbDxQcmVkZWZpbmVkQ29sb3JTcGFjZT4gdG9QcmVkZWZpbmVkQ29sb3JTcGFjZShEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkKK09wdGlvbmFsPFByZWRlZmluZWRDb2xvclNw
YWNlPiB0b1ByZWRlZmluZWRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYg
Y29sb3JTcGFjZSkKIHsKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNlIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQjoKKyAgICBpZiAoY29sb3JTcGFjZSA9PSBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSkKICAgICAgICAgcmV0dXJuIFByZWRlZmluZWRDb2xvclNwYWNl
OjpTUkdCOwotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikK
LSAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQjoKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKLSNlbmRpZgogI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9T
UEFDRV9ESVNQTEFZX1AzKQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5
UDM6CisgICAgaWYgKGNvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5
UDMoKSkKICAgICAgICAgcmV0dXJuIFByZWRlZmluZWRDb2xvclNwYWNlOjpEaXNwbGF5UDM7CiAj
ZW5kaWYKLSAgICB9CiAKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9QcmVkZWZp
bmVkQ29sb3JTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1ByZWRlZmluZWRDb2xvclNwYWNlLmgJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7
CiAKIGVudW0gY2xhc3MgUHJlZGVmaW5lZENvbG9yU3BhY2UgewogICAgIFNSR0IKQEAgLTQwLDcg
KzQwLDcgQEAgZW51bSBjbGFzcyBQcmVkZWZpbmVkQ29sb3JTcGFjZSB7CiB9OwogCiBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UgdG9EZXN0aW5hdGlvbkNvbG9yU3BhY2UoUHJlZGVmaW5lZENvbG9yU3Bh
Y2UpOwotT3B0aW9uYWw8UHJlZGVmaW5lZENvbG9yU3BhY2U+IHRvUHJlZGVmaW5lZENvbG9yU3Bh
Y2UoRGVzdGluYXRpb25Db2xvclNwYWNlKTsKK09wdGlvbmFsPFByZWRlZmluZWRDb2xvclNwYWNl
PiB0b1ByZWRlZmluZWRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpOwog
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzYyMyw3ICs3NjIzLDcgQEAgSW1hZ2VCdWZmZXIqIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OgogICAgIH0KIAogICAgIC8vIEZJWE1FICgxNDk0MjMpOiBTaG91bGQgdGhp
cyBJbWFnZUJ1ZmZlciBiZSB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZD8KLSAgICBhdXRv
IHRlbXAgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4
KTsKKyAgICBhdXRvIHRlbXAgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRlcmluZ01v
ZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghdGVtcCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgQVNTRVJUKG1fYnVmZmVycy5zaXplKCkgPiAwKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFRleHRU
cmFja0NvbnRhaW5lckVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDE4LDcgKzQxOCw3IEBAIFJlZlB0cjxJbWFnZT4gTWVkaWFD
b250cm9sVGV4dFRyYWNrQ29udGEKICAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IEludFJlY3Qo
SW50UG9pbnQoKSwgbGF5ZXItPnNpemUoKSk7CiAKICAgICAvLyBGSVhNRSAoMTQ5NDIyKTogVGhp
cyBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZC4KLSAg
ICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUocGFpbnRpbmdSZWN0LnNpemUoKSwg
UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgZGV2aWNlU2NhbGVGYWN0b3IsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGJ1ZmZl
ciA9IEltYWdlQnVmZmVyOjpjcmVhdGUocGFpbnRpbmdSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgZGV2aWNlU2NhbGVGYWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghYnVmZmVyKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNhbnZhcy5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQ5LDcgKzEx
NDksNyBAQCBpbnQgSW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEoRHVwbGljCiAgICAgICAg
ICAgICBpZiAoQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gaW1hZ2VFbGVtZW50LT5jYWNoZWRJ
bWFnZSgpKSB7CiAgICAgICAgICAgICAgICAgSW1hZ2UqIGltYWdlID0gY2FjaGVkSW1hZ2UtPmlt
YWdlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGltYWdlICYmIGltYWdlICE9ICZJbWFnZTo6bnVs
bEltYWdlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwor
ICAgICAgICAgICAgICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgICAg
ICAgICAgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlLCBGbG9hdFBv
aW50KDAsIDApKTsKICAgICAgICAgICAgICAgICAgICAgZGF0YVVSTCA9IGltYWdlQnVmZmVyLT50
b0RhdGFVUkwoImltYWdlL3BuZyIpOwogICAgICAgICAgICAgICAgIH0KQEAgLTExNjMsNyArMTE2
Myw3IEBAIGludCBJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YShEdXBsaWMKIAogICAgICAg
ICAgICAgdW5zaWduZWQgdmlkZW9XaWR0aCA9IHZpZGVvRWxlbWVudC0+dmlkZW9XaWR0aCgpOwog
ICAgICAgICAgICAgdW5zaWduZWQgdmlkZW9IZWlnaHQgPSB2aWRlb0VsZW1lbnQtPnZpZGVvSGVp
Z2h0KCk7Ci0gICAgICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShGbG9hdFNpemUodmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpLCBSZW5kZXJpbmdNb2RlOjpVbmFj
Y2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CisgICAgICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShGbG9hdFNpemUodmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpLCBSZW5kZXJpbmdNb2RlOjpVbmFj
Y2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6
OkJHUkE4KTsKICAgICAgICAgICAgIGlmIChpbWFnZUJ1ZmZlcikgewogICAgICAgICAgICAgICAg
IHZpZGVvRWxlbWVudC0+cGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoaW1hZ2VCdWZmZXItPmNv
bnRleHQoKSwgRmxvYXRSZWN0KDAsIDAsIHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KSk7CiAgICAg
ICAgICAgICAgICAgZGF0YVVSTCA9IGltYWdlQnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyIp
OwpAQCAtMTIwMCw3ICsxMjAwLDcgQEAgaW50IEluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRh
KER1cGxpYwogICAgICAgICAgICAgaWYgKGF1dG8qIGNhY2hlZEltYWdlID0gY3NzSW1hZ2VWYWx1
ZS0+aW1hZ2UoKSkgewogICAgICAgICAgICAgICAgIGF1dG8qIGltYWdlID0gY2FjaGVkSW1hZ2Ut
PmltYWdlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGltYWdlICYmIGltYWdlICE9ICZJbWFnZTo6
bnVsbEltYWdlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVy
YXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgp
OworICAgICAgICAgICAgICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAg
ICAgICAgICAgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlLCBGbG9h
dFBvaW50KDAsIDApKTsKICAgICAgICAgICAgICAgICAgICAgZGF0YVVSTCA9IGltYWdlQnVmZmVy
LT50b0RhdGFVUkwoImltYWdlL3BuZyIpOwogICAgICAgICAgICAgICAgIH0KQEAgLTE0NDEsNyAr
MTQ0MSw3IEBAIFJlZjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gSW5zcGVjdG8KIHsKICAg
ICBhdXRvJiB0aWxlSW1hZ2UgPSBjYW52YXNQYXR0ZXJuLnBhdHRlcm4oKS50aWxlSW1hZ2UoKTsK
ICAgICBGbG9hdFJlY3QgcmVjdCA9IHsgeyB9LCB0aWxlSW1hZ2Uuc2l6ZSgpIH07Ci0gICAgYXV0
byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGlsZUltYWdlLnNpemUoKSwgUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
LCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKHRpbGVJbWFnZS5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
IDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwog
ICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkuZHJhd05hdGl2ZUltYWdlKHRpbGVJbWFnZSwgdGls
ZUltYWdlLnNpemUoKSwgcmVjdCwgcmVjdCk7CiAKICAgICBTdHJpbmcgcmVwZWF0OwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvQ2hyb21lLmNwcAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjksNyArNTI5LDcgQEAgdm9pZCBD
aHJvbWU6OnNldEN1cnNvckhpZGRlblVudGlsTW91c2VNbwogICAgIG1fY2xpZW50LnNldEN1cnNv
ckhpZGRlblVudGlsTW91c2VNb3ZlcyhoaWRkZW5VbnRpbE1vdXNlTW92ZXMpOwogfQogCi1SZWZQ
dHI8SW1hZ2VCdWZmZXI+IENocm9tZTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UgcHVy
cG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CitSZWZQdHI8SW1hZ2VCdWZmZXI+
IENocm9tZTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJp
bmdNb2RlIHJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBp
eGVsRm9ybWF0IHBpeGVsRm9ybWF0KSBjb25zdAogewogICAgIHJldHVybiBtX2NsaWVudC5jcmVh
dGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCBwdXJwb3NlLCByZXNvbHV0aW9uU2Nh
bGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAko
cmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDdXJzb3IoY29u
c3QgQ3Vyc29yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNl
TW92ZXMoYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUlt
YWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBv
c2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBQaXhlbEZv
cm1hdCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3Nl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBp
eGVsRm9ybWF0KSBjb25zdCBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShXRUJHTCkKICAgICBSZWZQ
dHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29udGV4dEdMKGNvbnN0IEdyYXBo
aWNzQ29udGV4dEdMQXR0cmlidXRlcyYpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzksNyArMzM5LDcgQEAgcHVi
bGljOgogICAgIAogICAgIHZpcnR1YWwgRGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeSogZGlz
cGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KIAot
ICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCwgRGVzdGlu
YXRpb25Db2xvclNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQor
ICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiwgUGl4ZWxGb3JtYXQpIGNvbnN0IHsgcmV0dXJuIG51bGxw
dHI7IH0KIAogI2lmIEVOQUJMRShXRUJHTCkKICAgICB2aXJ0dWFsIFJlZlB0cjxHcmFwaGljc0Nv
bnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhpY3NDb250ZXh0R0xB
dHRyaWJ1dGVzJiwgV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0IHsgcmV0dXJuIG51
bGxwdHI7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRpbmcuY3Bw
CShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0
aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw3IEBAIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gc25hcHNob3RGcmFtZVJlY3RXaXQKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0
aW9uc1BhaW50V2l0aEludGVncmFsU2NhbGVGYWN0b3IpCiAgICAgICAgIHNjYWxlRmFjdG9yID0g
Y2VpbGYoc2NhbGVGYWN0b3IpOwogCi0gICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKGltYWdlUmVjdC5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIHNjYWxl
RmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXplKCks
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIHNjYWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYnVmZmVyLT5jb250ZXh0KCkudHJhbnNsYXRl
KC1pbWFnZVJlY3QueCgpLCAtaW1hZ2VSZWN0LnkoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VDb2xvclNhbXBsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZUNvbG9yU2FtcGxlci5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw3ICsx
MDQsNyBAQCBzdGF0aWMgT3B0aW9uYWw8TGFiPGZsb2F0Pj4gc2FtcGxlQ29sb3IoCiAgICAgaWYg
KCFzbmFwc2hvdCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIGF1dG8gcGl4
ZWxCdWZmZXIgPSBzbmFwc2hvdC0+Z2V0UGl4ZWxCdWZmZXIoeyBBbHBoYVByZW11bHRpcGxpY2F0
aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCIH0sIHsgeyB9LCBzbmFwc2hvdC0+bG9naWNhbFNpemUoKSB9KTsKKyAgICBh
dXRvIHBpeGVsQnVmZmVyID0gc25hcHNob3QtPmdldFBpeGVsQnVmZmVyKHsgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6QkdSQTgsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpIH0sIHsgeyB9LCBzbmFwc2hvdC0+bG9naWNhbFNpemUoKSB9
KTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcAkocmV2aXNp
b24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMyNiw3ICszMjYsNyBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50
OjpzY3JlZW5zaG90KEpTQzo6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byogY2Fj
aGVkSW1hZ2UgPSBpbWFnZUVsZW1lbnQuY2FjaGVkSW1hZ2UoKSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGF1dG8qIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGltYWdlICYmIGltYWdlICE9ICZJbWFnZTo6bnVsbElt
YWdlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25hcHNob3QgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25hcHNob3QgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKGltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdC0+Y29udGV4dCgpLmRyYXdJbWFnZSgq
aW1hZ2UsIEZsb2F0UG9pbnQoMCwgMCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTM0Myw3ICszNDMsNyBAQCB2b2lkIFBhZ2VD
b25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEpTQzo6CiAgICAgICAgICAgICAgICAgICAgICAgICBh
dXRvJiB2aWRlb0VsZW1lbnQgPSBkb3duY2FzdDxIVE1MVmlkZW9FbGVtZW50Pigqbm9kZSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB2aWRlb1dpZHRoID0gdmlkZW9FbGVtZW50
LnZpZGVvV2lkdGgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHZpZGVvSGVp
Z2h0ID0gdmlkZW9FbGVtZW50LnZpZGVvSGVpZ2h0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBzbmFwc2hvdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKHZpZGVvV2lkdGgsIHZp
ZGVvSGVpZ2h0KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgc25hcHNob3QgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZSh2aWRlb1dpZHRo
LCB2aWRlb0hlaWdodCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgdmlkZW9FbGVtZW50LnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KHNuYXBz
aG90LT5jb250ZXh0KCksIEZsb2F0UmVjdCgwLCAwLCB2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCkp
OwogICAgICAgICAgICAgICAgICAgICB9CiAjZW5kaWYKQEAgLTM2OCw3ICszNjgsNyBAQCB2b2lk
IFBhZ2VDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KEpTQzo6CiAgICAgICAgICAgICB0YXJnZXQg
PSBwb3NzaWJsZVRhcmdldDsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246Omhhc0Zyb250ZW5kcygpKSkgewogICAgICAgICAgICAgICAgIGF1dG8gc291
cmNlU2l6ZSA9IGltYWdlRGF0YS0+c2l6ZSgpOwotICAgICAgICAgICAgICAgIGlmIChhdXRvIGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzb3VyY2VTaXplLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9y
bWF0OjpCR1JBOCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUoc291cmNlU2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCkp
IHsKICAgICAgICAgICAgICAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0KEludFBvaW50KCksIHNv
dXJjZVNpemUpOwogICAgICAgICAgICAgICAgICAgICBpbWFnZUJ1ZmZlci0+cHV0UGl4ZWxCdWZm
ZXIoaW1hZ2VEYXRhLT5waXhlbEJ1ZmZlcigpLCBzb3VyY2VSZWN0KTsKICAgICAgICAgICAgICAg
ICAgICAgZGF0YVVSTCA9IGltYWdlQnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyJfcywgV1RG
OjpudWxsb3B0LCBQcmVzZXJ2ZVJlc29sdXRpb246Olllcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vSG9zdFdpbmRvdy5oCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Ib3N0V2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEwICszMSwxMCBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDdXJzb3I7CitjbGFzcyBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIAogZW51bSBjbGFzcyBQaXhlbEZvcm1hdCA6
IHVpbnQ4X3Q7Ci1lbnVtIGNsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZSA6IHVpbnQ4X3Q7CiBl
bnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOwogZW51bSBjbGFzcyBSZW5kZXJpbmdQdXJw
b3NlIDogdWludDhfdDsKIApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJ
bnRQb2ludCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIEludFJlY3Qgcm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3Jl
ZW4oY29uc3QgSW50UmVjdCYpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgUmVmUHRyPEltYWdl
QnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2Rl
LCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9k
ZSwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCkgY29uc3QgPSAwOwogCiAjaWYgRU5BQkxFKFdF
QkdMKQogICAgIHZpcnR1YWwgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMPiBjcmVhdGVHcmFwaGlj
c0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0dHJpYnV0ZXMmKSBjb25zdCA9IDA7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmgJKHJldmlzaW9u
IDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ0dDb2xvclNwYWNl
ICpDR0NvbG9yU3BhYwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEZsb2F0U2l6ZTsKIGNsYXNzIFdp
ZGdldDsKQEAgLTY4LDYgKzY5LDcgQEAgdXNpbmcgSU9SZWdpc3RyeUdQVUlEID0gaW50NjRfdDsg
Ly8gR2xvYgogaW50IHNjcmVlbkRlcHRoKFdpZGdldCopOwogaW50IHNjcmVlbkRlcHRoUGVyQ29t
cG9uZW50KFdpZGdldCopOwogYm9vbCBzY3JlZW5Jc01vbm9jaHJvbWUoV2lkZ2V0Kik7CitXRUJD
T1JFX0VYUE9SVCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQq
ID0gbnVsbHB0cik7CiAKIGJvb2wgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMoKTsKIApAQCAtMTAw
LDEwICsxMDIsNiBAQCBXRUJDT1JFX0VYUE9SVCBib29sIHNjcmVlblN1cHBvcnRzSGlnaER5CiBj
b25zdGV4cHIgYm9vbCBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UoV2lkZ2V0KiA9IG51
bGxwdHIpIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAotI2lmIFVTRShDRykKLVdFQkNPUkVf
RVhQT1JUIENHQ29sb3JTcGFjZVJlZiBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCogPSBudWxscHRy
KTsKLSNlbmRpZgotCiBzdHJ1Y3QgU2NyZWVuUHJvcGVydGllczsKIHN0cnVjdCBTY3JlZW5EYXRh
OwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NyZWVuUHJvcGVydGllcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjcmVlblByb3BlcnRpZXMu
aAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NyZWVuUHJv
cGVydGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25j
ZQogCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiRmxvYXRS
ZWN0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKICNpbmNsdWRlIDx3dGYvRW51bVRy
YWl0cy5oPgpAQCAtMzIsMTQgKzMzLDEyIEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi10eXBlZGVmIHN0cnVjdCBDR0NvbG9y
U3BhY2UgKkNHQ29sb3JTcGFjZVJlZjsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3Qg
U2NyZWVuRGF0YSB7CiAgICAgRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3Q7CiAgICAgRmxv
YXRSZWN0IHNjcmVlblJlY3Q7Ci0gICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JT
cGFjZTsKKyAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSB7IERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgaW50IHNjcmVlbkRlcHRoIHsgMCB9OwogICAgIGlu
dCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCB7IDAgfTsKICAgICBib29sIHNjcmVlblN1cHBvcnRz
RXh0ZW5kZWRDb2xvciB7IGZhbHNlIH07CkBAIC01NiwxMyArNTUsMTIgQEAgc3RydWN0IFNjcmVl
bkRhdGEgewogICAgIGZsb2F0IHNjYWxlRmFjdG9yIHsgMSB9OwogI2VuZGlmCiAKLSAgICBlbnVt
IGNsYXNzIENvbG9yU3BhY2VUeXBlIDogdWludDhfdCB7IE5vbmUsIE5hbWUsIERhdGEgfTsKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFNjcmVlbkRhdGE+IGRl
Y29kZShEZWNvZGVyJik7CiB9OwogCi10eXBlZGVmIEhhc2hNYXA8UGxhdGZvcm1EaXNwbGF5SUQs
IFNjcmVlbkRhdGE+IFNjcmVlbkRhdGFNYXA7Ci0gICAgCit1c2luZyBTY3JlZW5EYXRhTWFwID0g
SGFzaE1hcDxQbGF0Zm9ybURpc3BsYXlJRCwgU2NyZWVuRGF0YT47CisKIHN0cnVjdCBTY3JlZW5Q
cm9wZXJ0aWVzIHsKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBwcmltYXJ5RGlzcGxheUlEIHsgMCB9
OwogICAgIFNjcmVlbkRhdGFNYXAgc2NyZWVuRGF0YU1hcDsKQEAgLTc0LDggKzcyLDcgQEAgc3Ry
dWN0IFNjcmVlblByb3BlcnRpZXMgewogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgU2Ny
ZWVuUHJvcGVydGllczo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5j
b2RlciA8PCBwcmltYXJ5RGlzcGxheUlEOwotICAgIGVuY29kZXIgPDwgc2NyZWVuRGF0YU1hcDsK
KyAgICBlbmNvZGVyIDw8IHByaW1hcnlEaXNwbGF5SUQgPDwgc2NyZWVuRGF0YU1hcDsKIH0KIAog
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTk3LDcgKzk0LDcgQEAgT3B0aW9uYWw8U2NyZWVu
UHJvcGVydGllcz4gU2NyZWVuUHJvcGVydAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQg
U2NyZWVuRGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2Rl
ciA8PCBzY3JlZW5BdmFpbGFibGVSZWN0IDw8IHNjcmVlblJlY3QgPDwgc2NyZWVuRGVwdGggPDwg
c2NyZWVuRGVwdGhQZXJDb21wb25lbnQgPDwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yIDw8
IHNjcmVlbkhhc0ludmVydGVkQ29sb3JzIDw8IHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5n
ZTsKKyAgICBlbmNvZGVyIDw8IHNjcmVlbkF2YWlsYWJsZVJlY3QgPDwgc2NyZWVuUmVjdCA8PCBj
b2xvclNwYWNlIDw8IHNjcmVlbkRlcHRoIDw8IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50IDw8IHNj
cmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciA8PCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycyA8PCBz
Y3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2U7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAg
ZW5jb2RlciA8PCBzY3JlZW5Jc01vbm9jaHJvbWUgPDwgZGlzcGxheU1hc2sgPDwgZ3B1SUQgPDwg
cHJlZmVycmVkRHluYW1pY1JhbmdlTW9kZTsKQEAgLTEwNiwyOCArMTAzLDYgQEAgdm9pZCBTY3Jl
ZW5EYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcgogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBlbmNvZGVyIDw8IHNjYWxlRmFjdG9yOwogI2VuZGlmCi0K
LSAgICBpZiAoY29sb3JTcGFjZSkgewotICAgICAgICAvLyBUcnkgdG8gZW5jb2RlIHRoZSBuYW1l
LgotICAgICAgICBpZiAoYXV0byBuYW1lID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDb3B5TmFtZShj
b2xvclNwYWNlLmdldCgpKSkpIHsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgQ29sb3JTcGFjZVR5
cGU6Ok5hbWU7Ci0gICAgICAgICAgICBlbmNvZGVyIDw8IFN0cmluZyhuYW1lLmdldCgpKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZhaWxpbmcgdGhhdCwg
anVzdCBlbmNvZGUgdGhlIElDQyBkYXRhLgotICAgICAgICBpZiAoYXV0byBwcm9maWxlRGF0YSA9
IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ29weUlDQ0RhdGEoY29sb3JTcGFjZS5nZXQoKSkpKSB7Ci0g
ICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gaWNjRGF0YTsKLSAgICAgICAgICAgIGljY0RhdGEu
YXBwZW5kKENGRGF0YUdldEJ5dGVQdHIocHJvZmlsZURhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5n
dGgocHJvZmlsZURhdGEuZ2V0KCkpKTsKLQotICAgICAgICAgICAgZW5jb2RlciA8PCBDb2xvclNw
YWNlVHlwZTo6RGF0YTsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgaWNjRGF0YTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIFRoZSBjb2xvciBzcGFjZSB3
YXMgbnVsbCBvciBmYWlsZWQgdG8gYmUgZW5jb2RlZC4KLSAgICBlbmNvZGVyIDw8IENvbG9yU3Bh
Y2VUeXBlOjpOb25lOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtMTQzLDYgKzEx
OCwxMSBAQCBPcHRpb25hbDxTY3JlZW5EYXRhPiBTY3JlZW5EYXRhOjpkZWNvZGUoCiAgICAgaWYg
KCFzY3JlZW5SZWN0KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCisgICAgT3B0aW9u
YWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBzY3JlZW5Db2xvclNwYWNlOworICAgIGRlY29kZXIg
Pj4gc2NyZWVuQ29sb3JTcGFjZTsKKyAgICBpZiAoIXNjcmVlbkNvbG9yU3BhY2UpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisKICAgICBPcHRpb25hbDxpbnQ+IHNjcmVlbkRlcHRoOwog
ICAgIGRlY29kZXIgPj4gc2NyZWVuRGVwdGg7CiAgICAgaWYgKCFzY3JlZW5EZXB0aCkKQEAgLTE5
Nyw0MSArMTc3LDEwIEBAIE9wdGlvbmFsPFNjcmVlbkRhdGE+IFNjcmVlbkRhdGE6OmRlY29kZSgK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICNlbmRpZgogCi0gICAgQ29sb3JTcGFjZVR5
cGUgZGF0YVR5cGU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhVHlwZSkpCi0gICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBj
Z0NvbG9yU3BhY2U7Ci0gICAgc3dpdGNoIChkYXRhVHlwZSkgewotICAgIGNhc2UgQ29sb3JTcGFj
ZVR5cGU6Ok5vbmU6Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ29sb3JTcGFjZVR5cGU6Ok5h
bWU6IHsKLSAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBjb2xvclNwYWNlTmFtZTsKLSAgICAgICAg
ZGVjb2RlciA+PiBjb2xvclNwYWNlTmFtZTsKLSAgICAgICAgQVNTRVJUKGNvbG9yU3BhY2VOYW1l
KTsKLSAgICAgICAgaWYgKCFjb2xvclNwYWNlTmFtZSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7Ci0KLSAgICAgICAgY2dDb2xvclNwYWNlID0gYWRvcHRDRihDR0NvbG9yU3BhY2VD
cmVhdGVXaXRoTmFtZShjb2xvclNwYWNlTmFtZS0+Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwot
ICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDb2xvclNwYWNlVHlwZTo6RGF0YTogewot
ICAgICAgICBPcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGljY0RhdGE7Ci0gICAgICAgIGRlY29k
ZXIgPj4gaWNjRGF0YTsKLSAgICAgICAgQVNTRVJUKGljY0RhdGEpOwotICAgICAgICBpZiAoIWlj
Y0RhdGEpCi0gICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgICAgIGF1dG8g
Y29sb3JTcGFjZURhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBpY2NEYXRhLT5kYXRhKCksIGljY0RhdGEtPnNpemUoKSkpOwotICAgICAgICBjZ0NvbG9yU3Bh
Y2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZVdpdGhJQ0NEYXRhKGNvbG9yU3BhY2VEYXRh
LmdldCgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICB9Ci0KICAgICByZXR1cm4geyB7
CiAgICAgICAgIFdURk1vdmUoKnNjcmVlbkF2YWlsYWJsZVJlY3QpLAogICAgICAgICBXVEZNb3Zl
KCpzY3JlZW5SZWN0KSwKLSAgICAgICAgV1RGTW92ZShjZ0NvbG9yU3BhY2UpLAorICAgICAgICBX
VEZNb3ZlKCpzY3JlZW5Db2xvclNwYWNlKSwKICAgICAgICAgV1RGTW92ZSgqc2NyZWVuRGVwdGgp
LAogICAgICAgICBXVEZNb3ZlKCpzY3JlZW5EZXB0aFBlckNvbXBvbmVudCksCiAgICAgICAgIFdU
Rk1vdmUoKnNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciksCkBAIC0yNTAsMTYgKzE5OSwzIEBA
IE9wdGlvbmFsPFNjcmVlbkRhdGE+IFNjcmVlbkRhdGE6OmRlY29kZSgKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgRW51
bVRyYWl0czxXZWJDb3JlOjpTY3JlZW5EYXRhOjpDb2xvclNwYWNlVHlwZT4gewotICAgIHVzaW5n
IHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgICAgIFdlYkNvcmU6OlNjcmVlbkRhdGE6OkNvbG9y
U3BhY2VUeXBlLAotICAgICAgICBXZWJDb3JlOjpTY3JlZW5EYXRhOjpDb2xvclNwYWNlVHlwZTo6
Tm9uZSwKLSAgICAgICAgV2ViQ29yZTo6U2NyZWVuRGF0YTo6Q29sb3JTcGFjZVR5cGU6Ok5hbWUs
Ci0gICAgICAgIFdlYkNvcmU6OlNjcmVlbkRhdGE6OkNvbG9yU3BhY2VUeXBlOjpEYXRhCi0gICAg
PjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAkocmV2aXNpb24gMjc3OTM5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjQsNyArMTY0LDcgQEAgUmVmUHRyPE5hdGl2ZUltYWdlPiBCaXRtYXBJbWFn
ZTo6cHJlVHJhbgogICAgICAgICByZXR1cm4gaW1hZ2U7CiAKICAgICBhdXRvIGNvcnJlY3RlZFNp
emVGbG9hdCA9IGNvcnJlY3RlZFNpemUgPyBGbG9hdFNpemUoY29ycmVjdGVkU2l6ZS52YWx1ZSgp
KSA6IHNpemUoKTsKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY29ycmVj
dGVkU2l6ZUZsb2F0LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBidWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvcnJlY3RlZFNpemVGbG9hdCwgUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBpbWFnZTsKIApA
QCAtMzUyLDcgKzM1Miw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNz
Q28KICAgICB9CiAKICAgICBpZiAoIW1fY2FjaGVkSW1hZ2UpIHsKLSAgICAgICAgYXV0byBidWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUo
dGlsZVJlY3Quc2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBjdHh0KTsKKyAg
ICAgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihl
eHBhbmRlZEludFNpemUodGlsZVJlY3Quc2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCksIGN0eHQpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcAkocmV2
aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNyArMTY4LDcgQEAgQ29sb3JDb21wb25lbnRzPGZs
b2F0LCA0PiBDb2xvcjo6dG9Db2xvcgogICAgIHJldHVybiBjb252ZXJDb2xvckNvbXBvbmVudHMo
aW5wdXRDb2xvclNwYWNlLCBjb21wb25lbnRzLCBvdXRwdXRDb2xvclNwYWNlKTsKIH0KIAotQ29s
b3JDb21wb25lbnRzPGZsb2F0LCA0PiBDb2xvcjo6dG9Db2xvckNvbXBvbmVudHNJbkNvbG9yU3Bh
Y2UoRGVzdGluYXRpb25Db2xvclNwYWNlIG91dHB1dENvbG9yU3BhY2UpIGNvbnN0CitDb2xvckNv
bXBvbmVudHM8ZmxvYXQsIDQ+IENvbG9yOjp0b0NvbG9yQ29tcG9uZW50c0luQ29sb3JTcGFjZShj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIG91dHB1dENvbG9yU3BhY2UpIGNvbnN0CiB7CiAg
ICAgYXV0byBbaW5wdXRDb2xvclNwYWNlLCBjb21wb25lbnRzXSA9IGNvbG9yU3BhY2VBbmRDb21w
b25lbnRzKCk7CiAgICAgcmV0dXJuIGNvbnZlckNvbG9yQ29tcG9uZW50cyhpbnB1dENvbG9yU3Bh
Y2UsIGNvbXBvbmVudHMsIG91dHB1dENvbG9yU3BhY2UpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsy
OCw3IEBACiAjaW5jbHVkZSAiQ29sb3JDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiQ29sb3JTcGFj
ZS5oIgogI2luY2x1ZGUgIkNvbG9yVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25D
b2xvclNwYWNlLmgiCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CkBAIC0xMjEsNyArMTIyLDcgQEAg
cHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFNSR0JBPFQ+IHRvU1JHQkFMb3NzeSgp
IGNvbnN0IHsgcmV0dXJuIHRvQ29sb3JUeXBlTG9zc3k8U1JHQkE8VD4+KCk7IH0KIAogICAgIENv
bG9yQ29tcG9uZW50czxmbG9hdCwgND4gdG9Db2xvckNvbXBvbmVudHNJbkNvbG9yU3BhY2UoQ29s
b3JTcGFjZSkgY29uc3Q7Ci0gICAgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiB0b0NvbG9yQ29t
cG9uZW50c0luQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpIGNvbnN0OworICAgIENv
bG9yQ29tcG9uZW50czxmbG9hdCwgND4gdG9Db2xvckNvbXBvbmVudHNJbkNvbG9yU3BhY2UoY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJikgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGQ6OnBhaXI8Q29sb3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0Pj4gY29sb3JTcGFj
ZUFuZENvbXBvbmVudHMoKSBjb25zdDsKIApAQCAtMjY3LDYgKzI2OCw3IEBAIGJvb2wgb3V0T2ZM
aW5lQ29tcG9uZW50c3NFcXVhbElnbm9yaW5nU2UKIAogI2lmIFVTRShDRykKIFdFQkNPUkVfRVhQ
T1JUIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYpOworV0VCQ09SRV9FWFBP
UlQgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBwbGF0Zm9ybUNvbnZlcnRDb2xvckNvbXBvbmVu
dHMoQ29sb3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiwgY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJik7CiAjZW5kaWYKIAogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IENvbG9yJik7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5j
cHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0NvbG9yQ29udmVyc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDkgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb2xvckNvbnZlcnNpb24uaCIKIAorI2luY2x1
ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgIkRlc3RpbmF0
aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTMxOCwxOCArMzIwLDIxIEBAIENvbG9yQ29tcG9uZW50czxmbG9hdCwg
ND4gY29udmVyQ29sb3JDb20KICAgICB9KTsKIH0KIAotQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0
PiBjb252ZXJDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1dENvbG9yU3BhY2UsIENvbG9y
Q29tcG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVudHMsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSBvdXRwdXRDb2xvclNwYWNlKQorQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb252
ZXJDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1dENvbG9yU3BhY2UsIENvbG9yQ29tcG9u
ZW50czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVudHMsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgb3V0cHV0Q29sb3JTcGFjZSkKIHsKKyNpZiBVU0UoQ0cpCisgICAgcmV0dXJuIHBs
YXRmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyhpbnB1dENvbG9yU3BhY2UsIGlucHV0Q29sb3JD
b21wb25lbnRzLCBvdXRwdXRDb2xvclNwYWNlKTsKKyNlbHNlCiAgICAgcmV0dXJuIGNhbGxXaXRo
Q29sb3JUeXBlKGlucHV0Q29sb3JDb21wb25lbnRzLCBpbnB1dENvbG9yU3BhY2UsIFtvdXRwdXRD
b2xvclNwYWNlXSAoY29uc3QgYXV0byYgaW5wdXRDb2xvcikgewotICAgICAgICBzd2l0Y2ggKG91
dHB1dENvbG9yU3BhY2UpIHsKLSAgICAgICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0I6CisgICAgICAgIHN3aXRjaCAob3V0cHV0Q29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2Uo
KSkgeworICAgICAgICBjYXNlIFBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZTo6U1JHQjoKICAgICAg
ICAgICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhjb252ZXJ0Q29sb3I8U1JHQkE8ZmxvYXQ+
PihpbnB1dENvbG9yKSk7CiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVB
Ul9TUkdCKQotICAgICAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQjoK
KyAgICAgICAgY2FzZSBQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU6OkxpbmVhclNSR0I6CiAgICAg
ICAgICAgICByZXR1cm4gYXNDb2xvckNvbXBvbmVudHMoY29udmVydENvbG9yPExpbmVhclNSR0JB
PGZsb2F0Pj4oaW5wdXRDb2xvcikpOwogI2VuZGlmCiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NP
TE9SX1NQQUNFX0RJU1BMQVlfUDMpCi0gICAgICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpEaXNwbGF5UDM6CisgICAgICAgIGNhc2UgUGxhdGZvcm1Db2xvclNwYWNlOjpOYW1lOjpEaXNw
bGF5UDM6CiAgICAgICAgICAgICByZXR1cm4gYXNDb2xvckNvbXBvbmVudHMoY29udmVydENvbG9y
PERpc3BsYXlQMzxmbG9hdD4+KGlucHV0Q29sb3IpKTsKICNlbmRpZgogICAgICAgICB9CkBAIC0z
MzcsNiArMzQyLDcgQEAgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb252ZXJDb2xvckNvbQog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIGFzQ29sb3JDb21w
b25lbnRzKGNvbnZlcnRDb2xvcjxTUkdCQTxmbG9hdD4+KGlucHV0Q29sb3IpKTsKICAgICB9KTsK
KyNlbmRpZgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAkocmV2aXNpb24g
Mjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJz
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE1ICsyOSwxNiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKKwogZW51bSBjbGFzcyBDb2xv
clNwYWNlIDogdWludDhfdDsKLWVudW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDogdWlu
dDhfdDsKIAogLy8gQ29udmVyc2lvbiBmdW5jdGlvbiBmb3IgdHlwZWQgY29sb3JzLgogdGVtcGxh
dGU8dHlwZW5hbWUgT3V0cHV0LCB0eXBlbmFtZSBJbnB1dD4gT3V0cHV0IGNvbnZlcnRDb2xvcihj
b25zdCBJbnB1dCYgY29sb3IpOwogCiAvLyBDb252ZXJzaW9uIGZ1bmN0aW9ucyBmb3IgcmF3IGNv
bG9yIGNvbXBvbmVudHMgd2l0aCBhc3NvY2lhdGVkIGNvbG9yIHNwYWNlcy4KIENvbG9yQ29tcG9u
ZW50czxmbG9hdCwgND4gY29udmVyQ29sb3JDb21wb25lbnRzKENvbG9yU3BhY2UgaW5wdXRDb2xv
clNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGlucHV0Q29sb3JDb21wb25lbnRzLCBD
b2xvclNwYWNlIG91dHB1dENvbG9yU3BhY2UpOwotQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBj
b252ZXJDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1dENvbG9yU3BhY2UsIENvbG9yQ29t
cG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVudHMsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSBvdXRwdXRDb2xvclNwYWNlKTsKK0NvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gY29udmVy
Q29sb3JDb21wb25lbnRzKENvbG9yU3BhY2UgaW5wdXRDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVu
dHM8ZmxvYXQsIDQ+IGlucHV0Q29sb3JDb21wb25lbnRzLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmIG91dHB1dENvbG9yU3BhY2UpOwogCiAKIC8vIEFsbCBjb2xvciB0eXBlcywgb3RoZXIg
dGhhbiBYWVpBIG9yIHRob3NlIGluaGVyaXRpbmcgZnJvbSBSR0JUeXBlLCBtdXN0IGltcGxlbWVu
dApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFj
ZS5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0NvbG9yU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCwyNCArNjQsNCBAQCBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBDCiAgICAgcmV0dXJuIHRzOwogfQog
Ci1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgY29sb3JTcGFjZSkKLXsKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNl
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgdHMgPDwgInNSR0IiOwotICAg
ICAgICBicmVhazsKLSNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NS
R0IpCi0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0I6Ci0gICAgICAg
IHRzIDw8ICJMaW5lYXJTUkdCIjsKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLSNpZiBFTkFCTEUo
REVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExBWV9QMykKLSAgICBjYXNlIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6RGlzcGxheVAzOgotICAgICAgICB0cyA8PCAiRGlzcGxheVAzIjsKLSAgICAg
ICAgYnJlYWs7Ci0jZW5kaWYKLSAgICB9Ci0gICAgcmV0dXJuIHRzOwotfQotCiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5oCShyZXZpc2lv
biAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEwICsyOCw3IEBACiAjaW5jbHVkZSAiQ29sb3JUeXBl
cy5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMuaD4K
LQotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBUZXh0U3RyZWFtOwotfQorI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDcsMTggKzQ0LDcgQEAgZW51
bSBjbGFzcyBDb2xvclNwYWNlIDogdWludDhfdCB7CiAgICAgWFlaX0Q1MCwKIH07CiAKLWVudW0g
Y2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDogdWludDhfdCB7Ci0gICAgU1JHQgotI2lmIEVO
QUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICAsIExpbmVhclNS
R0IKLSNlbmRpZgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1Az
KQotICAgICwgRGlzcGxheVAzCi0jZW5kaWYKLX07Ci0KLVdFQkNPUkVfRVhQT1JUIFdURjo6VGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBDb2xvclNwYWNlKTsKLVdFQkNP
UkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UpOworV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiwgQ29sb3JTcGFjZSk7CiAKIAogdGVtcGxhdGU8dHlwZW5hbWU+IHN0
cnVjdCBDb2xvclNwYWNlTWFwcGluZzsKQEAgLTEwMiwyNSArODgsNiBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBGdW5jdG9yPiBjCiAgICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6
Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFrZUZyb21Db21wb25lbnRzPFNSR0JBPFQ+Pihj
b21wb25lbnRzKSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEZ1bmN0b3I+
IGNvbnN0ZXhwciBkZWNsdHlwZShhdXRvKSBjYWxsV2l0aENvbG9yVHlwZShjb25zdCBDb2xvckNv
bXBvbmVudHM8VCwgND4mIGNvbXBvbmVudHMsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNw
YWNlLCBGdW5jdG9yJiYgZnVuY3RvcikKLXsKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAg
ICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgcmV0dXJuIHN0ZDo6
aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFrZUZyb21Db21wb25lbnRz
PFNSR0JBPFQ+Pihjb21wb25lbnRzKSk7Ci0jaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQ
QUNFX0xJTkVBUl9TUkdCKQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJT
UkdCOgotICAgICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1
bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8TGluZWFyU1JHQkE8VD4+KGNvbXBvbmVudHMpKTsK
LSNlbmRpZgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQot
ICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0gICAgICAgIHJldHVy
biBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVuY3RvciksIG1ha2VGcm9tQ29t
cG9uZW50czxEaXNwbGF5UDM8VD4+KGNvbXBvbmVudHMpKTsKLSNlbmRpZgotICAgIH0KLQotICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndh
cmQ8RnVuY3Rvcj4oZnVuY3RvciksIG1ha2VGcm9tQ29tcG9uZW50czxTUkdCQTxUPj4oY29tcG9u
ZW50cykpOwotfQotCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApAQCAtMTQxLDE3ICsxMDgs
NCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkNvCiAgICAgPjsKIH07
CiAKLXRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xv
clNwYWNlPiB7Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAgICAgICAgV2ViQ29y
ZTo6RGVzdGluYXRpb25Db2xvclNwYWNlLAotICAgICAgICBXZWJDb3JlOjpEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IKLSNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFS
X1NSR0IpCi0gICAgICAgICwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJT
UkdCCi0jZW5kaWYKLSNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExBWV9Q
MykKLSAgICAgICAgLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMwot
I2VuZGlmCi0gICAgPjsKLX07Ci0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgJKHJldmlzaW9uIDI3Nzkz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZm
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBC
YWNrZW5kVHlwZT4KIGNsYXNzIENvbmNyZXRlSW1hZ2VCdWZmZXIgOiBwdWJsaWMgSW1hZ2VCdWZm
ZXIgewogcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEltYWdlQnVmZmVyVHlwZSA9IENv
bmNyZXRlSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KLSAgICBzdGF0aWMgUmVm
UHRyPEltYWdlQnVmZmVyVHlwZT4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxG
b3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEFyZ3VtZW50
cyYmLi4uIGFyZ3VtZW50cykKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyVHlwZT4gY3Jl
YXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0
LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93LCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMp
CiAgICAgewogICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBh
cmFtZXRlcnMgeyBzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0
IH07CiAgICAgICAgIGF1dG8gYmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUocGFyYW1ldGVy
cywgaG9zdFdpbmRvdyk7CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBJbWFnZUJ1ZmZlclR5cGUgPSBDb25jcmV0ZUltYWdlQnVmZmVyLCB0eXBlbmFtZS4u
LiBBcmd1bWVudHM+CiAgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlclR5cGU+IGNyZWF0ZShj
b25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQXJn
dW1lbnRzJiYuLi4gYXJndW1lbnRzKQogICAgIHsKLSAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0g
SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzIHsgc2l6ZSwgMSwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTggfTsKKyAgICAgICAgYXV0byBwYXJhbWV0
ZXJzID0gSW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0ZXJzIHsgc2l6ZSwgMSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCB9OwogICAgICAgICBhdXRv
IGJhY2tlbmQgPSBCYWNrZW5kVHlwZTo6Y3JlYXRlKHBhcmFtZXRlcnMsIGNvbnRleHQpOwogICAg
ICAgICBpZiAoIWJhY2tlbmQpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE5NSw3
ICsxOTUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkIHRyYW5z
Zm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIHNyY0NvbG9yU3BhY2UsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSBkZXN0Q29sb3JTcGFjZSkgb3ZlcnJpZGUKKyAgICB2b2lkIHRyYW5z
Zm9ybUNvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBzcmNDb2xvclNwYWNl
LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGRlc3RDb2xvclNwYWNlKSBvdmVycmlkZQog
ICAgIHsKICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgp
KSB7CiAgICAgICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJh
dGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwMyw3ICsxMDMsNyBAQCBJbWFnZURyYXdSZXN1bHQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6
CiAKIHZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBjb250ZXh0LnJlbmRlcmluZ01vZGUoKSwgMSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gaW1h
Z2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgY29udGV4dC5yZW5kZXJpbmdN
b2RlKCksIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdS
QTgpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlv
bkNvbG9yU3BhY2UuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
RGVzdGluYXRpb25Db2xvclNwYWNlLmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFt
Lmg+CisKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiQ29sb3JTcGFjZUNHLmgiCisjaW5jbHVkZSA8
cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KQoreworI2lmIFVTRShDRykKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlKHNSR0JD
b2xvclNwYWNlUmVmKCkpOworI2Vsc2UKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNl
KFBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZTo6U1JHQik7CisjZW5kaWYKK30KKworI2lmIEVOQUJM
RShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKK0Rlc3RpbmF0aW9uQ29sb3JT
cGFjZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKQoreworI2lmIFVTRShDRykK
KyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlKGxpbmVhclNSR0JDb2xvclNwYWNlUmVm
KCkpOworI2Vsc2UKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlKFBsYXRmb3JtQ29s
b3JTcGFjZTo6TmFtZTo6TGluZWFyU1JHQik7CisjZW5kaWYKK30KKyNlbmRpZgorCisjaWYgRU5B
QkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCitEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDMoKQoreworI2lmIFVTRShDRykK
KyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlKGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYo
KSk7CisjZWxzZQorICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UoUGxhdGZvcm1Db2xv
clNwYWNlOjpOYW1lOjpEaXNwbGF5UDMpOworI2VuZGlmCit9CisjZW5kaWYKKworRGVzdGluYXRp
b25Db2xvclNwYWNlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UoUGxhdGZvcm1Db2xvclNwYWNlIHBs
YXRmb3JtQ29sb3JTcGFjZSkKKyAgICA6IG1fcGxhdGZvcm1Db2xvclNwYWNlIHsgV1RGTW92ZShw
bGF0Zm9ybUNvbG9yU3BhY2UpIH0KK3sKKyNpZiBVU0UoQ0cpCisgICAgQVNTRVJUKG1fcGxhdGZv
cm1Db2xvclNwYWNlKTsKKyNlbmRpZgorfQorCitib29sIG9wZXJhdG9yPT0oY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiBhLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGIpCit7Cisj
aWYgVVNFKENHKQorICAgIHJldHVybiBDR0NvbG9yU3BhY2VFcXVhbFRvQ29sb3JTcGFjZShhLnBs
YXRmb3JtQ29sb3JTcGFjZSgpLCBiLnBsYXRmb3JtQ29sb3JTcGFjZSgpKTsKKyNlbHNlCisgICAg
cmV0dXJuIGEucGxhdGZvcm1Db2xvclNwYWNlKCkgPT0gYi5wbGF0Zm9ybUNvbG9yU3BhY2UoKTsK
KyNlbmRpZgorfQorCitib29sIG9wZXJhdG9yIT0oY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiBhLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGIpCit7CisgICAgcmV0dXJuICEoYSA9
PSBiKTsKK30KKworVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQoreworICAgIGlmIChjb2xvclNwYWNl
ID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKQorICAgICAgICB0cyA8PCAic1JHQiI7
CisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQorICAgIGVs
c2UgaWYgKGNvbG9yU3BhY2UgPT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCkp
CisgICAgICAgIHRzIDw8ICJMaW5lYXJTUkdCIjsKKyNlbmRpZgorI2lmIEVOQUJMRShERVNUSU5B
VElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQorICAgIGVsc2UgaWYgKGNvbG9yU3BhY2UgPT0g
RGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDMoKSkKKyAgICAgICAgdHMgPDwgIkRpc3Bs
YXlQMyI7CisjZW5kaWYKKyNpZiBVU0UoQ0cpCisgICAgZWxzZSBpZiAoYXV0byBkZXNjcmlwdGlv
biA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ29weUlDQ1Byb2ZpbGVEZXNjcmlwdGlvbihjb2xvclNw
YWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpKSkpCisgICAgICAgIHRzIDw8IFN0cmluZyhkZXNjcmlw
dGlvbi5nZXQoKSk7CisjZW5kaWYKKworICAgIHJldHVybiB0czsKK30KKworfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25D
b2xvclNwYWNlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUGxhdGZvcm1Db2xv
clNwYWNlLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UgeworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgU1JHQigpOworI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJf
U1JHQikKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRGVzdGluYXRpb25Db2xvclNwYWNlIExp
bmVhclNSR0IoKTsKKyNlbmRpZgorI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9E
SVNQTEFZX1AzKQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UgRGlzcGxheVAzKCk7CisjZW5kaWYKKworICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZShQbGF0Zm9ybUNvbG9yU3BhY2UpOworICAgIFBsYXRmb3JtQ29s
b3JTcGFjZVZhbHVlIHBsYXRmb3JtQ29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZv
cm1Db2xvclNwYWNlLmdldCgpOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gZGVjb2RlKERlY29kZXImKTsKKwor
cHJpdmF0ZToKKyAgICBQbGF0Zm9ybUNvbG9yU3BhY2UgbV9wbGF0Zm9ybUNvbG9yU3BhY2U7Cit9
OworCitXRUJDT1JFX0VYUE9SVCBib29sIG9wZXJhdG9yPT0oY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CitXRUJDT1JFX0VYUE9SVCBi
b29sIG9wZXJhdG9yIT0oY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJik7CisKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYpOworCit0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3BsYXRmb3JtQ29sb3JTcGFj
ZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8RGVzdGluYXRpb25Db2xv
clNwYWNlPiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQor
eworICAgIE9wdGlvbmFsPFBsYXRmb3JtQ29sb3JTcGFjZT4gcGxhdGZvcm1Db2xvclNwYWNlOwor
ICAgIGRlY29kZXIgPj4gcGxhdGZvcm1Db2xvclNwYWNlOworICAgIGlmICghcGxhdGZvcm1Db2xv
clNwYWNlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSB7IFdURk1vdmUoKnBsYXRmb3JtQ29sb3JTcGFjZSkgfTsKK30KKwor
fQorCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFk
aWVudEltYWdlLmNwcAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcy
LDcgQEAgdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljcwogICAgIHVuc2ln
bmVkIGdlbmVyYXRvckhhc2ggPSBtX2dyYWRpZW50LT5oYXNoKCk7CiAKICAgICBpZiAoIW1fY2Fj
aGVkSW1hZ2UgfHwgbV9jYWNoZWRHZW5lcmF0b3JIYXNoICE9IGdlbmVyYXRvckhhc2ggfHwgbV9j
YWNoZWRBZGp1c3RlZFNpemUgIT0gYWRqdXN0ZWRTaXplIHx8ICFhcmVFc3NlbnRpYWxseUVxdWFs
KGRlc3RDb250ZXh0LnNjYWxlRmFjdG9yKCksIG1fY2FjaGVkU2NhbGVGYWN0b3IpKSB7Ci0gICAg
ICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cihhZGp1c3RlZFNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgZGVzdENvbnRleHQp
OworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIoYWRqdXN0ZWRTaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgZGVz
dENvbnRleHQpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJu
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4
Myw3ICs4ODMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dFJvdW5kZWRSZWN0CiAg
ICAgY2xpcE91dChwYXRoKTsKIH0KIAotR3JhcGhpY3NDb250ZXh0OjpDbGlwVG9EcmF3aW5nQ29t
bWFuZHNSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2Us
IEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKQorR3Jh
cGhpY3NDb250ZXh0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgR3JhcGhpY3NDb250ZXh0
OjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBo
aWNzQ29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm4gQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0OjpTdWNj
ZXNzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsy
Niw4IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgogI2luY2x1
ZGUgIkRhc2hBcnJheS5oIgorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2lu
Y2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVkZSAi
R3JhcGhpY3NUeXBlcy5oIgpAQCAtNDEwLDcgKzQxMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNs
aXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKICAgICBl
bnVtIGNsYXNzIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCA6IGJvb2wgeyBTdWNjZXNzLCBG
YWlsZWRUb0NyZWF0ZUltYWdlQnVmZmVyIH07Ci0gICAgQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVz
dWx0IGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYp
OworICAgIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMo
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJik7CiAgICAgCiAgICAgSW50UmVj
dCBjbGlwQm91bmRzKCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgJKHJldmlzaW9uIDI3Nzkz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dElt
cGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSA9IDA7CiAgICAgdmlydHVh
bCBJbnRSZWN0IGNsaXBCb3VuZHMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsaXBUb0ltYWdl
QnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JikgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
RGVzdGluYXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYm
IGRyYXdpbmdGdW5jdGlvbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGlwVG9EcmF3aW5nQ29t
bWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBkcmF3aW5nRnVuY3Rp
b24pID0gMDsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgdmlydHVhbCB2b2lkIHBhaW50RnJhbWVG
b3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgY2FuUGFpbnRGcmFtZUZvck1lZGlhKGNvbnN0IE1lZGlhUGxheWVy
JikgY29uc3QgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyLmNwcAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3
ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBjb25zdCBmbG9hdCBNYXhDbGFt
cGVkTGVuZ3RoID0gNDA5NjsKIHN0YXRpYyBjb25zdCBmbG9hdCBNYXhDbGFtcGVkQXJlYSA9IE1h
eENsYW1wZWRMZW5ndGggKiBNYXhDbGFtcGVkTGVuZ3RoOwogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+
IEltYWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2Rl
IHJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0IHNob3VsZFVzZURpc3BsYXlMaXN0
LCBSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25z
dCBIb3N0V2luZG93KiBob3N0V2luZG93KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdN
b2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdCBzaG91bGRVc2VEaXNwbGF5TGlzdCwgUmVuZGVyaW5n
UHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhv
c3RXaW5kb3cqIGhvc3RXaW5kb3cpCiB7CiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1
ZmZlcjsKICAgICAKQEAgLTU5LDcgKzU5LDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKAogICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0KIAotUmVmUHRyPEltYWdl
QnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVy
aW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9z
dFdpbmRvdyogaG9zdFdpbmRvdykKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9y
U3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2lu
ZG93KQogewogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7CiAgICAgCkBAIC05
NSw3ICs5NSw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUMKICAg
ICByZXR1cm4gaW1hZ2VCdWZmZXI7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cihjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29s
b3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIGlmIChzaXpl
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMTEsNyArMTExLDcgQEAg
UmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQwogICAgIHJldHVybiBpbWFn
ZUJ1ZmZlcjsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBh
dGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KQogewogICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUs
IGNvbnRleHQucmVuZGVyaW5nTW9kZSgpLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFBp
eGVsRm9ybWF0OjpCR1JBOCk7CiB9CkBAIC0xNjcsNyArMTY3LDcgQEAgSW50U2l6ZSBJbWFnZUJ1
ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZlclNpegogICAgIHJldHVybiBleHBhbmRlZEludFNpemUoc2l6
ZSAqIGNvbnRleHQuc2NhbGVGYWN0b3IoKSk7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1h
Z2VCdWZmZXI6OmNvcHlSZWN0VG9CdWZmZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcihjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFj
ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIGlmIChyZWN0LmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDEzICs0NSwxMyBAQCBzdHJ1Y3QgSXRlbUJ1ZmZlckhhbmRsZTsKIGNsYXNzIElt
YWdlQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlQnVmZmVyPiwgcHVi
bGljIENhbk1ha2VXZWFrUHRyPEltYWdlQnVmZmVyPiB7CiBwdWJsaWM6CiAgICAgLy8gV2lsbCBy
ZXR1cm4gYSBudWxsIHBvaW50ZXIgb24gYWxsb2NhdGlvbiBmYWlsdXJlLgotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUm
LCBSZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdCwgUmVuZGVyaW5nUHVycG9zZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0
LCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdN
b2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUGl4ZWxG
b3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRl
cmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBpeGVsRm9ybWF0
LCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdN
b2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYs
IFBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOwogCiAgICAgLy8gQ3Jl
YXRlIGFuIGltYWdlIGJ1ZmZlciBjb21wYXRpYmxlIHdpdGggdGhlIGNvbnRleHQsIHdpdGggc3Vp
dGFibGUgcmVzb2x1dGlvbiBmb3IgZHJhd2luZyBpbnRvIHRoZSBidWZmZXIgYW5kIHRoZW4gaW50
byB0aGlzIGNvbnRleHQuCiAgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsK
LSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNv
bnN0IEZsb2F0U2l6ZSYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250
ZXh0Jik7Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1
ZmZlcihjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CisgICAgc3RhdGljIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKyAgICBz
dGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZs
b2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICAvLyBUaGVzZSBmdW5jdGlvbnMg
YXJlIHVzZWQgd2hlbiBjbGFtcGluZyB0aGUgSW1hZ2VCdWZmZXIgd2hpY2ggaXMgY3JlYXRlZCBm
b3IgZmlsdGVyLCBtYXNrZXIgb3IgY2xpcHBlci4KICAgICBzdGF0aWMgYm9vbCBzaXplTmVlZHND
bGFtcGluZyhjb25zdCBGbG9hdFNpemUmKTsKQEAgLTEwNyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29w
eUJhY2tpbmdTdG9yZSwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpO
bykgY29uc3QgPSAwOwogCiAgICAgLy8gQ3JlYXRlIGFuIGltYWdlIGJ1ZmZlciBjb21wYXRpYmxl
IHdpdGggdGhlIGNvbnRleHQgYW5kIGNvcHkgcmVjdCBmcm9tIHRoaXMgYnVmZmVyIGludG8gdGhp
cyBuZXcgb25lLgotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY29weVJlY3RUb0J1ZmZlcihjb25z
dCBGbG9hdFJlY3QmLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYpOworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY29weVJlY3RUb0J1ZmZlcihjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25zdCBHcmFwaGljc0NvbnRl
eHQmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgw
LCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgPSAw
OwpAQCAtMTIwLDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xpcFRvTWFz
ayhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KSA9IDA7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgY29udmVydFRvTHVtaW5hbmNlTWFzaygpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc3JjQ29sb3JT
cGFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGRzdENvbG9yU3BhY2UpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
IHNyY0NvbG9yU3BhY2UsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgZHN0Q29sb3JTcGFj
ZSkgPSAwOwogCiAgICAgdmlydHVhbCBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IFdURjo6bnVsbG9wdCwgUHJlc2VydmVS
ZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgVmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25h
bDxkb3VibGU+IHF1YWxpdHkgPSBXVEY6Om51bGxvcHQpIGNvbnN0ID0gMDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNr
ZW5kLmNwcAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMs
OCBAQCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVyQmFja2VuZChjCiB7CiB9CiAKK0lt
YWdlQnVmZmVyQmFja2VuZDo6fkltYWdlQnVmZmVyQmFja2VuZCgpID0gZGVmYXVsdDsKKwogUmVm
UHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2Uo
KQogewogICAgIHJldHVybiBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwpA
QCAtMTE0LDE1ICsxMTYsMTcgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEltYWdlQnVmZmVyQmFj
a2VuZAogICAgIGlmIChkZXN0aW5hdGlvblJlY3Quc2l6ZSgpICE9IHNvdXJjZVJlY3RTY2FsZWQu
c2l6ZSgpKQogICAgICAgICBwaXhlbEJ1ZmZlci0+ZGF0YSgpLnplcm9GaWxsKCk7CiAKLSAgICBD
b25zdFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgc291cmNlOwotICAgIHNvdXJjZS5mb3JtYXQg
PSB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIHBpeGVsRm9ybWF0KCks
IGNvbG9yU3BhY2UoKSB9OwotICAgIHNvdXJjZS5ieXRlc1BlclJvdyA9IGJ5dGVzUGVyUm93KCk7
Ci0gICAgc291cmNlLnJvd3MgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhKSArIHNv
dXJjZVJlY3RDbGlwcGVkLnkoKSAqIHNvdXJjZS5ieXRlc1BlclJvdyArIHNvdXJjZVJlY3RDbGlw
cGVkLngoKSAqIDQ7CisgICAgQ29uc3RQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IHNvdXJjZSB7
CisgICAgICAgIHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgcGl4ZWxG
b3JtYXQoKSwgY29sb3JTcGFjZSgpIH0sCisgICAgICAgIGJ5dGVzUGVyUm93KCksCisgICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEpICsgc291cmNlUmVjdENsaXBwZWQueSgp
ICogc291cmNlLmJ5dGVzUGVyUm93ICsgc291cmNlUmVjdENsaXBwZWQueCgpICogNAorICAgIH07
CiAgICAgCi0gICAgUGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBkZXN0aW5hdGlvbjsKLSAgICBk
ZXN0aW5hdGlvbi5mb3JtYXQgPSBkZXN0aW5hdGlvbkZvcm1hdDsKLSAgICBkZXN0aW5hdGlvbi5i
eXRlc1BlclJvdyA9IDQgKiBzb3VyY2VSZWN0U2NhbGVkLndpZHRoKCk7Ci0gICAgZGVzdGluYXRp
b24ucm93cyA9IHBpeGVsQnVmZmVyLT5kYXRhKCkuZGF0YSgpICsgZGVzdGluYXRpb25SZWN0Lnko
KSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ICsgZGVzdGluYXRpb25SZWN0LngoKSAqIDQ7Cisg
ICAgUGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBkZXN0aW5hdGlvbiB7CisgICAgICAgIGRlc3Rp
bmF0aW9uRm9ybWF0LAorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oNCAqIHNvdXJjZVJl
Y3RTY2FsZWQud2lkdGgoKSksCisgICAgICAgIHBpeGVsQnVmZmVyLT5kYXRhKCkuZGF0YSgpICsg
ZGVzdGluYXRpb25SZWN0LnkoKSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ICsgZGVzdGluYXRp
b25SZWN0LngoKSAqIDQKKyAgICB9OwogCiAgICAgY29udmVydEltYWdlUGl4ZWxzKHNvdXJjZSwg
ZGVzdGluYXRpb24sIGRlc3RpbmF0aW9uUmVjdC5zaXplKCkpOwogCkBAIC0xNDcsMTUgKzE1MSwx
NyBAQCB2b2lkIEltYWdlQnVmZmVyQmFja2VuZDo6cHV0UGl4ZWxCdWZmZXIoCiAgICAgZGVzdGlu
YXRpb25SZWN0LmludGVyc2VjdChiYWNrZW5kUmVjdCgpKTsKICAgICBzb3VyY2VSZWN0Q2xpcHBl
ZC5zZXRTaXplKGRlc3RpbmF0aW9uUmVjdC5zaXplKCkpOwogCi0gICAgQ29uc3RQaXhlbEJ1ZmZl
ckNvbnZlcnNpb25WaWV3IHNvdXJjZTsKLSAgICBzb3VyY2UuZm9ybWF0ID0gc291cmNlUGl4ZWxC
dWZmZXIuZm9ybWF0KCk7Ci0gICAgc291cmNlLmJ5dGVzUGVyUm93ID0gNCAqIHNvdXJjZVBpeGVs
QnVmZmVyLnNpemUoKS53aWR0aCgpOwotICAgIHNvdXJjZS5yb3dzID0gc291cmNlUGl4ZWxCdWZm
ZXIuZGF0YSgpLmRhdGEoKSArIHNvdXJjZVJlY3RDbGlwcGVkLnkoKSAqIHNvdXJjZS5ieXRlc1Bl
clJvdyArIHNvdXJjZVJlY3RDbGlwcGVkLngoKSAqIDQ7Ci0KLSAgICBQaXhlbEJ1ZmZlckNvbnZl
cnNpb25WaWV3IGRlc3RpbmF0aW9uOwotICAgIGRlc3RpbmF0aW9uLmZvcm1hdCA9IHsgZGVzdGlu
YXRpb25BbHBoYUZvcm1hdCwgcGl4ZWxGb3JtYXQoKSwgY29sb3JTcGFjZSgpIH07Ci0gICAgZGVz
dGluYXRpb24uYnl0ZXNQZXJSb3cgPSBieXRlc1BlclJvdygpOwotICAgIGRlc3RpbmF0aW9uLnJv
d3MgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhKSArIGRlc3RpbmF0aW9uUmVjdC55
KCkgKiBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyArIGRlc3RpbmF0aW9uUmVjdC54KCkgKiA0Owor
ICAgIENvbnN0UGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBzb3VyY2UgeworICAgICAgICBzb3Vy
Y2VQaXhlbEJ1ZmZlci5mb3JtYXQoKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDQg
KiBzb3VyY2VQaXhlbEJ1ZmZlci5zaXplKCkud2lkdGgoKSksCisgICAgICAgIHNvdXJjZVBpeGVs
QnVmZmVyLmRhdGEoKS5kYXRhKCkgKyBzb3VyY2VSZWN0Q2xpcHBlZC55KCkgKiBzb3VyY2UuYnl0
ZXNQZXJSb3cgKyBzb3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0CisgICAgfTsKKworICAgIFBpeGVs
QnVmZmVyQ29udmVyc2lvblZpZXcgZGVzdGluYXRpb24geworICAgICAgICB7IGRlc3RpbmF0aW9u
QWxwaGFGb3JtYXQsIHBpeGVsRm9ybWF0KCksIGNvbG9yU3BhY2UoKSB9LAorICAgICAgICBieXRl
c1BlclJvdygpLAorICAgICAgICByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhKSArIGRl
c3RpbmF0aW9uUmVjdC55KCkgKiBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyArIGRlc3RpbmF0aW9u
UmVjdC54KCkgKiA0CisgICAgfTsKIAogICAgIGNvbnZlcnRJbWFnZVBpeGVscyhzb3VyY2UsIGRl
c3RpbmF0aW9uLCBkZXN0aW5hdGlvblJlY3Quc2l6ZSgpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCShy
ZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlckJhY2tlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJh
Z21hIG9uY2UKIAotI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlv
bkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGlj
c1R5cGVzR0wuaCIKICNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgpAQCAtNzgsNyAr
NzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0OwogICAgIH07
CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbWFnZUJ1ZmZlckJhY2tlbmQoKSA9IGRl
ZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SW1hZ2VCdWZmZXJCYWNrZW5kKCk7
CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSW50U2l6ZSBjYWxjdWxhdGVCYWNrZW5kU2l6
ZShjb25zdCBQYXJhbWV0ZXJzJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHNpemVfdCBj
YWxjdWxhdGVNZW1vcnlDb3N0KGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCB1bnNpZ25lZCBi
eXRlc1BlclJvdyk7CkBAIC0xMDIsNyArMTAyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBjbGlwVG9NYXNrKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIHsgfQogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCk7Ci0gICAgdmly
dHVhbCB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB0cmFuc2Zvcm1Db2xvclNw
YWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYpIHsgfQogCiAgICAgdmlydHVhbCBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkgY29uc3QgPSAwOwpAQCAtMTQw
LDcgKzE0MCw3IEBAIHByb3RlY3RlZDoKIAogICAgIEludFNpemUgbG9naWNhbFNpemUoKSBjb25z
dCB7IHJldHVybiBJbnRTaXplKG1fcGFyYW1ldGVycy5sb2dpY2FsU2l6ZSk7IH0KICAgICBmbG9h
dCByZXNvbHV0aW9uU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMucmVzb2x1dGlv
blNjYWxlOyB9Ci0gICAgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UoKSBjb25zdCB7
IHJldHVybiBtX3BhcmFtZXRlcnMuY29sb3JTcGFjZTsgfQorICAgIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5jb2xv
clNwYWNlOyB9CiAgICAgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiBt
X3BhcmFtZXRlcnMucGl4ZWxGb3JtYXQ7IH0KIAogICAgIEludFJlY3QgbG9naWNhbFJlY3QoKSBj
b25zdCB7IHJldHVybiBJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIGxvZ2ljYWxTaXplKCkpOyB9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVm
ZmVyLmNwcAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGl4ZWxCdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw5IEBAIGJv
b2wgUGl4ZWxCdWZmZXI6OnN1cHBvcnRlZFBpeGVsRm9ybWF0KFAKICAgICBjYXNlIFBpeGVsRm9y
bWF0OjpSR0IxMEE4OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQorICAgIAorICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogQ2hlY2tlZDx1bnNp
Z25lZCwgUmVjb3JkT3ZlcmZsb3c+IFBpeGVsQnVmZmVyOjpjb21wdXRlQnVmZmVyU2l6ZShjb25z
dCBQaXhlbEJ1ZmZlckZvcm1hdCYgZm9ybWF0LCBjb25zdCBJbnRTaXplJiBzaXplKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oCShyZXZp
c2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1
ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIkFscGhhUHJlbXVsdGlwbGljYXRpb24uaCIKLSNpbmNsdWRlICJDb2xvclNwYWNl
LmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiSW50U2l6
ZS5oIgogI2luY2x1ZGUgIlBpeGVsQnVmZmVyRm9ybWF0LmgiCiAjaW5jbHVkZSAiUGl4ZWxGb3Jt
YXQuaCIKQEAgLTg3LDE5ICs4NywyMSBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIFBp
eGVsQnVmZmVyCiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPFBpeGVsQnVmZmVy
PiBQaXhlbEJ1ZmZlcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUGl4ZWxCdWZm
ZXJGb3JtYXQgZm9ybWF0OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZm9ybWF0KSkKKyAgICBP
cHRpb25hbDxQaXhlbEJ1ZmZlckZvcm1hdD4gZm9ybWF0OworICAgIGRlY29kZXIgPj4gZm9ybWF0
OworICAgIGlmICghZm9ybWF0KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAg
Ly8gRklYTUU6IFN1cHBvcnQgbm9uLTggYml0IGZvcm1hdHMuCi0gICAgaWYgKCEoZm9ybWF0LnBp
eGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCB8fCBmb3JtYXQucGl4ZWxGb3JtYXQgPT0g
UGl4ZWxGb3JtYXQ6OkJHUkE4KSkKKyAgICBpZiAoIShmb3JtYXQtPnBpeGVsRm9ybWF0ID09IFBp
eGVsRm9ybWF0OjpSR0JBOCB8fCBmb3JtYXQtPnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpC
R1JBOCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBJbnRTaXplIHNpemU7
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaXplKSkKKyAgICBPcHRpb25hbDxJbnRTaXplPiBz
aXplOworICAgIGRlY29kZXIgPj4gc2l6ZTsKKyAgICBpZiAoIXNpemUpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAKLSAgICBhdXRvIGNvbXB1dGVkQnVmZmVyU2l6ZSA9IFBpeGVsQnVm
ZmVyOjpjb21wdXRlQnVmZmVyU2l6ZShmb3JtYXQsIHNpemUpOworICAgIGF1dG8gY29tcHV0ZWRC
dWZmZXJTaXplID0gUGl4ZWxCdWZmZXI6OmNvbXB1dGVCdWZmZXJTaXplKCpmb3JtYXQsICpzaXpl
KTsKICAgICBpZiAoY29tcHV0ZWRCdWZmZXJTaXplLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKIApAQCAtMTA3LDcgKzEwOSw3IEBAIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IE9wdGlvbmFsPFBpeGVsQnUKICAgICBpZiAoIWRlY29kZXIudGVtcGxhdGUgYnVm
ZmVySXNMYXJnZUVub3VnaFRvQ29udGFpbjx1aW50OF90PihidWZmZXJTaXplKSkKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIGF1dG8gcmVzdWx0ID0gUGl4ZWxCdWZmZXI6OnRy
eUNyZWF0ZUZvckRlY29kaW5nKGZvcm1hdCwgc2l6ZSwgYnVmZmVyU2l6ZSk7CisgICAgYXV0byBy
ZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlRm9yRGVjb2RpbmcoV1RGTW92ZSgqZm9ybWF0
KSwgKnNpemUsIGJ1ZmZlclNpemUpOwogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
aXhlbEJ1ZmZlckNvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDI3Nzkz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVy
c2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEyICsyNywxMSBAQAogI2luY2x1ZGUgIlBp
eGVsQnVmZmVyQ29udmVyc2lvbi5oIgogCiAjaW5jbHVkZSAiQWxwaGFQcmVtdWx0aXBsaWNhdGlv
bi5oIgotI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9y
U3BhY2UuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiUGl4ZWxGb3JtYXQuaCIK
IAogI2lmIFVTRShBQ0NFTEVSQVRFKSAmJiBVU0UoQ0cpCi0jaW5jbHVkZSAiQ29sb3JTcGFjZUNH
LmgiCiAjaW5jbHVkZSA8QWNjZWxlcmF0ZS9BY2NlbGVyYXRlLmg+CiAjZW5kaWYKIApAQCAtNzEs
NyArNzAsNyBAQCBzdGF0aWMgaW5saW5lIHZJbWFnZV9DR0ltYWdlRm9ybWF0IG1ha2VWCiAKICAg
ICByZXN1bHQuYml0c1BlckNvbXBvbmVudCA9IGJpdHNQZXJDb21wb25lbnQ7CiAgICAgcmVzdWx0
LmJpdHNQZXJQaXhlbCA9IGJpdHNQZXJQaXhlbDsKLSAgICByZXN1bHQuY29sb3JTcGFjZSA9IGNh
Y2hlZENHQ29sb3JTcGFjZShmb3JtYXQuY29sb3JTcGFjZSk7CisgICAgcmVzdWx0LmNvbG9yU3Bh
Y2UgPSBmb3JtYXQuY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKTsKICAgICByZXN1bHQu
Yml0bWFwSW5mbyA9IGJpdG1hcEluZm87CiAgICAgcmVzdWx0LnZlcnNpb24gPSAwOwogICAgIHJl
c3VsdC5kZWNvZGUgPSBudWxscHRyOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGl4ZWxCdWZmZXJGb3JtYXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5oCShyZXZpc2lvbiAyNzc5MzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkFscGhhUHJlbXVsdGlwbGljYXRpb24uaCIKLSNpbmNsdWRlICJDb2xvclNwYWNlLmgiCisjaW5j
bHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiUGl4ZWxGb3JtYXQuaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgpAQCAt
NTEsMTkgKzUxLDIyIEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgUGl4ZWxCdWZmZXIK
IAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8UGl4ZWxCdWZmZXJGb3JtYXQ+IFBp
eGVsQnVmZmVyRm9ybWF0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uIGFscGhhRm9ybWF0OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWxw
aGFGb3JtYXQpKQorICAgIE9wdGlvbmFsPEFscGhhUHJlbXVsdGlwbGljYXRpb24+IGFscGhhRm9y
bWF0OworICAgIGRlY29kZXIgPj4gYWxwaGFGb3JtYXQ7CisgICAgaWYgKCFhbHBoYUZvcm1hdCkK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9y
bWF0OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGl4ZWxGb3JtYXQpKQorICAgIE9wdGlvbmFs
PFBpeGVsRm9ybWF0PiBwaXhlbEZvcm1hdDsKKyAgICBkZWNvZGVyID4+IHBpeGVsRm9ybWF0Owor
ICAgIGlmICghcGl4ZWxGb3JtYXQpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAg
ICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZTsKLSAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGNvbG9yU3BhY2UpKQorICAgIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29s
b3JTcGFjZTsKKyAgICBkZWNvZGVyID4+IGNvbG9yU3BhY2U7CisgICAgaWYgKCFjb2xvclNwYWNl
KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHsgeyBhbHBoYUZv
cm1hdCwgcGl4ZWxGb3JtYXQsIGNvbG9yU3BhY2UgfSB9OworICAgIHJldHVybiB7IHsgV1RGTW92
ZSgqYWxwaGFGb3JtYXQpLCBXVEZNb3ZlKCpwaXhlbEZvcm1hdCksIFdURk1vdmUoKmNvbG9yU3Bh
Y2UpIH0gfTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1Db2xvclNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1Db2xvclNwYWNlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1Db2xvclNwYWNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IFVTRShDRykKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Cit0eXBlZGVmIHN0cnVjdCBDR0Nv
bG9yU3BhY2UqIENHQ29sb3JTcGFjZVJlZjsKKyNlbHNlCisjaW5jbHVkZSA8d3RmL0VudW1UcmFp
dHMuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKKyNpZiBVU0UoQ0cpCisKK3VzaW5nIFBsYXRmb3JtQ29sb3JTcGFjZSA9IFJldGFp
blB0cjxDR0NvbG9yU3BhY2VSZWY+OwordXNpbmcgUGxhdGZvcm1Db2xvclNwYWNlVmFsdWUgPSBD
R0NvbG9yU3BhY2VSZWY7CisKKyNlbHNlCisKK2NsYXNzIFBsYXRmb3JtQ29sb3JTcGFjZSB7Citw
dWJsaWM6CisgICAgZW51bSBjbGFzcyBOYW1lIDogdWludDhfdCB7CisgICAgICAgIFNSR0IKKyNp
ZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCisgICAgICAgICwg
TGluZWFyU1JHQgorI2VuZGlmCisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJ
U1BMQVlfUDMpCisgICAgICAgICwgRGlzcGxheVAzCisjZW5kaWYKKyAgICB9OworCisgICAgUGxh
dGZvcm1Db2xvclNwYWNlKE5hbWUgbmFtZSkKKyAgICAgICAgOiBtX25hbWUgeyBuYW1lIH0KKyAg
ICB7CisgICAgfQorCisgICAgTmFtZSBnZXQoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKwor
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UGxhdGZvcm1Db2xv
clNwYWNlPiBkZWNvZGUoRGVjb2RlciYpOworCitwcml2YXRlOgorICAgIE5hbWUgbV9uYW1lOwor
Cit9OwordXNpbmcgUGxhdGZvcm1Db2xvclNwYWNlVmFsdWUgPSBQbGF0Zm9ybUNvbG9yU3BhY2U6
Ok5hbWU7CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgUGxhdGZvcm1Db2xvclNwYWNl
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fbmFt
ZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8UGxhdGZvcm1Db2xvclNw
YWNlPiBQbGF0Zm9ybUNvbG9yU3BhY2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAg
IE9wdGlvbmFsPFBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZT4gbmFtZTsKKyAgICBkZWNvZGVyID4+
IG5hbWU7CisgICAgaWYgKCFuYW1lKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgcmV0dXJuIHsgeyAqbmFtZSB9IH07Cit9CisKKyNlbmRpZgorCit9CisKK25hbWVzcGFjZSBX
VEYgeworCisjaWYgIVVTRShDRykKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJD
b3JlOjpQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVt
VmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWUsCisgICAg
ICAgIFdlYkNvcmU6OlBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZTo6U1JHQgorI2lmIEVOQUJMRShE
RVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKKyAgICAgICAgLCBXZWJDb3JlOjpQ
bGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU6OkxpbmVhclNSR0IKKyNlbmRpZgorI2lmIEVOQUJMRShE
RVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQorICAgICAgICAsIFdlYkNvcmU6OlBs
YXRmb3JtQ29sb3JTcGFjZTo6TmFtZTo6RGlzcGxheVAzCisjZW5kaWYKKyAgICA+OworfTsKKwor
I2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwCShyZXZpc2lv
biAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRl
b1NhbXBsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgc3RhdGljIGlubGlu
ZSBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPgogICAgIH0KIAogICAgIEludFNpemUgc2l6ZSB7
IHN0YXRpY19jYXN0PGludD4oQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoKHBpeGVsQnVmZmVyKSksIHN0
YXRpY19jYXN0PGludD4oQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodChwaXhlbEJ1ZmZlcikpIH07Ci0g
ICAgYXV0byBpb1N1cmZhY2UgPSAgSU9TdXJmYWNlOjpjcmVhdGUoc2l6ZSwgc1JHQkNvbG9yU3Bh
Y2VSZWYoKSwgSU9TdXJmYWNlOjpGb3JtYXQ6OkJHUkEpOworICAgIGF1dG8gaW9TdXJmYWNlID0g
SU9TdXJmYWNlOjpjcmVhdGUoc2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIElP
U3VyZmFjZTo6Rm9ybWF0OjpCR1JBKTsKIAogICAgIElPU3VyZmFjZTo6TG9ja2VyIGxvY2soKmlv
U3VyZmFjZSk7CiAgICAgdkltYWdlX0J1ZmZlciBzcmM7CkBAIC0xMTMsNyArMTEzLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBSZW1vdAogICAgICAgICBzdXJmYWNlID0g
aW9TdXJmYWNlLT5zdXJmYWNlKCk7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdGVWaWRlb1NhbXBsZT4obmV3IFJlbW90ZVZpZGVvU2FtcGxlKHN1cmZhY2UsIHNSR0JD
b2xvclNwYWNlUmVmKCksIHNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCksIHNhbXBsZS52aWRlb1Jv
dGF0aW9uKCksIHNhbXBsZS52aWRlb01pcnJvcmVkKCkpKTsKKyAgICByZXR1cm4gc3RkOjp1bmlx
dWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPihuZXcgUmVtb3RlVmlkZW9TYW1wbGUoc3VyZmFjZSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCks
IHNhbXBsZS52aWRlb1JvdGF0aW9uKCksIHNhbXBsZS52aWRlb01pcnJvcmVkKCkpKTsKIH0KIAog
c3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBSZW1vdGVWaWRlb1NhbXBsZTo6Y3Jl
YXRlKENWUGl4ZWxCdWZmZXJSZWYgaW1hZ2VCdWZmZXIsIE1lZGlhVGltZSYmIHByZXNlbnRhdGlv
blRpbWUsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKQpAQCAtMTI0LDEwICsx
MjQsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBSZW1vdAogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJl
bW90ZVZpZGVvU2FtcGxlPihuZXcgUmVtb3RlVmlkZW9TYW1wbGUoc3VyZmFjZSwgc1JHQkNvbG9y
U3BhY2VSZWYoKSwgV1RGTW92ZShwcmVzZW50YXRpb25UaW1lKSwgcm90YXRpb24sIGZhbHNlKSk7
CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4obmV3IFJlbW90
ZVZpZGVvU2FtcGxlKHN1cmZhY2UsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBXVEZN
b3ZlKHByZXNlbnRhdGlvblRpbWUpLCByb3RhdGlvbiwgZmFsc2UpKTsKIH0KIAotUmVtb3RlVmlk
ZW9TYW1wbGU6OlJlbW90ZVZpZGVvU2FtcGxlKElPU3VyZmFjZVJlZiBzdXJmYWNlLCBDR0NvbG9y
U3BhY2VSZWYgY29sb3JTcGFjZSwgTWVkaWFUaW1lJiYgdGltZSwgTWVkaWFTYW1wbGU6OlZpZGVv
Um90YXRpb24gcm90YXRpb24sIGJvb2wgbWlycm9yZWQpCitSZW1vdGVWaWRlb1NhbXBsZTo6UmVt
b3RlVmlkZW9TYW1wbGUoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgY29sb3JTcGFjZSwgTWVkaWFUaW1lJiYgdGltZSwgTWVkaWFTYW1wbGU6OlZpZGVv
Um90YXRpb24gcm90YXRpb24sIGJvb2wgbWlycm9yZWQpCiAgICAgOiBtX2lvU3VyZmFjZShXZWJD
b3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TdXJmYWNlKHN1cmZhY2UsIGNvbG9yU3BhY2UpKQog
ICAgICwgbV9yb3RhdGlvbihyb3RhdGlvbikKICAgICAsIG1fdGltZShXVEZNb3ZlKHRpbWUpKQpA
QCAtMTQwLDcgKzE0MCw3IEBAIFJlbW90ZVZpZGVvU2FtcGxlOjpSZW1vdGVWaWRlb1NhbXBsZShJ
T1MKIElPU3VyZmFjZVJlZiBSZW1vdGVWaWRlb1NhbXBsZTo6c3VyZmFjZSgpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX2lvU3VyZmFjZSAmJiBtX3NlbmRSaWdodCkKLSAgICAgICAgY29uc3RfY2FzdDxS
ZW1vdGVWaWRlb1NhbXBsZSo+KHRoaXMpLT5tX2lvU3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFj
ZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGNvbnN0X2Nhc3Q8UmVtb3RlVmlkZW9TYW1w
bGUqPih0aGlzKS0+bV9zZW5kUmlnaHQpLCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICAgICAg
Y29uc3RfY2FzdDxSZW1vdGVWaWRlb1NhbXBsZSo+KHRoaXMpLT5tX2lvU3VyZmFjZSA9IFdlYkNv
cmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGNvbnN0X2Nhc3Q8UmVt
b3RlVmlkZW9TYW1wbGUqPih0aGlzKS0+bV9zZW5kUmlnaHQpLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSk7CiAKICAgICByZXR1cm4gbV9pb1N1cmZhY2UgPyBtX2lvU3VyZmFjZS0+c3Vy
ZmFjZSgpIDogbnVsbHB0cjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1JlbW90ZVZpZGVvU2FtcGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAkocmV2aXNpb24gMjc3OTM5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6
Ci0gICAgUmVtb3RlVmlkZW9TYW1wbGUoSU9TdXJmYWNlUmVmLCBDR0NvbG9yU3BhY2VSZWYsIE1l
ZGlhVGltZSYmLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiwgYm9vbCk7CisgICAgUmVtb3Rl
VmlkZW9TYW1wbGUoSU9TdXJmYWNlUmVmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBN
ZWRpYVRpbWUmJiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24sIGJvb2wpOwogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gbV9pb1N1cmZhY2U7CiAgICAgV1RGOjpN
YWNoU2VuZFJpZ2h0IG1fc2VuZFJpZ2h0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2xlYXJTY3JhdGNoQnVmZmVyKCk7
CiAKICAgICAgICAgLy8gU2hhZG93Qmx1ciBpcyBub3QgdXNlZCB3aXRoIGFjY2VsZXJhdGVkIGRy
YXdpbmcsIHNvIGl0J3MgT0sgdG8gbWFrZSBhbiB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRl
ZCBidWZmZXIuCi0gICAgICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJv
dW5kZWRTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgIG1faW1hZ2VCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJvdW5kZWRTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFj
Y2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6
OkJHUkE4KTsKICAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXI7CiAgICAgfQogCkBAIC02MDYs
NyArNjA2LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3coY29uc3QgQQogCiB2
b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBzaGFkb3dlZFJlY3QsIGNvbnN0IExh
eWVySW1hZ2VQcm9wZXJ0aWVzJiBsYXllckltYWdlUHJvcGVydGllcywgY29uc3QgRHJhd0J1ZmZl
ckNhbGxiYWNrJiBkcmF3QnVmZmVyKQogewotICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoZXhwYW5kZWRJbnRTaXplKGxheWVySW1hZ2VQcm9wZXJ0aWVzLmxheWVyU2l6
ZSksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGllcy5sYXll
clNpemUpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWxheWVySW1hZ2Up
CiAgICAgICAgIHJldHVybjsKIApAQCAtNjM0LDcgKzYzNCw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6
ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGkKIAogdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFk
b3dXaXRob3V0VGlsaW5nKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UmVjdCYg
ZnVsbFJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBMYXllcklt
YWdlUHJvcGVydGllcyYgbGF5ZXJJbWFnZVByb3BlcnRpZXMsIGNvbnN0IERyYXdCdWZmZXJDYWxs
YmFjayYgZHJhd0J1ZmZlcikKIHsKLSAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGllcy5sYXllclNpemUpLCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBsYXllckltYWdlID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShleHBhbmRlZEludFNpemUobGF5ZXJJbWFnZVByb3BlcnRpZXMubGF5ZXJTaXpl
KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFsYXllckltYWdlKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTcwNyw3ICs3MDcsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdS
ZWN0U2hhZG93V2l0aFRpbGluCiAjZW5kaWYKIAogICAgIGlmICghbGF5ZXJJbWFnZUJ1ZmZlcikg
ewotICAgICAgICBsYXllckltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1wbGF0
ZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgbGF5ZXJJbWFnZUJ1ZmZl
ciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFj
Y2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6
OkJHUkE4KTsKICAgICAgICAgaWYgKCFsYXllckltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTc2NSw3ICs3NjUsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdJbnNl
dFNoYWRvd1dpdGhUaWxpCiAjZW5kaWYKIAogICAgIGlmICghbGF5ZXJJbWFnZUJ1ZmZlcikgewot
ICAgICAgICBsYXllckltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNp
emUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICAgICAgbGF5ZXJJbWFnZUJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJH
UkE4KTsKICAgICAgICAgaWYgKCFsYXllckltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTkwNSw3ICs5MDUsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmJsdXJTaGFkb3dC
dWZmZXIoSW1hZ2VCCiAgICAgaWYgKG1fdHlwZSAhPSBCbHVyU2hhZG93KQogICAgICAgICByZXR1
cm47CiAKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0
aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCIH07CisgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgSW50UmVjdCBibHVyUmVjdChJbnRQb2lu
dCgpLCB0ZW1wbGF0ZVNpemUpOwogICAgIGF1dG8gbGF5ZXJEYXRhID0gbGF5ZXJJbWFnZS5nZXRQ
aXhlbEJ1ZmZlcihmb3JtYXQsIGJsdXJSZWN0KTsKICAgICBpZiAoIWxheWVyRGF0YSkKQEAgLTkz
NSw3ICs5MzUsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdTaGFkb3dMYXllcihjb25zdCBBCiAK
ICAgICBhZGp1c3RCbHVyUmFkaXVzKHRyYW5zZm9ybSk7CiAKLSAgICBhdXRvIGxheWVySW1hZ2Ug
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGll
cy0+bGF5ZXJTaXplKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gbGF5ZXJJ
bWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoZXhwYW5kZWRJbnRTaXplKGxheWVySW1hZ2VQcm9w
ZXJ0aWVzLT5sYXllclNpemUpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAo
IWxheWVySW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250
ZXh0R0xBTkdMRS5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyB2b2lkIHdpcGVBbHBoYUNoYW5uZWxGcm9tUGl4
ZWxzKGkKIAogT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIHsKLSAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3Jt
YXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0
OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCIH07CisgICAgUGl4ZWxCdWZmZXJG
b3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQ
aXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAg
YXV0byBwaXhlbEJ1ZmZlciA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCBnZXRJbnRl
cm5hbEZyYW1lYnVmZmVyU2l6ZSgpKTsKICAgICBpZiAoIXBpeGVsQnVmZmVyKQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm8uY3BwCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MTQsNyArNDE0LDcgQEAgRmxvYXRSZWN0IEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6cm91
bgogICAgIHJldHVybiBDYWlybzo6U3RhdGU6OnJvdW5kVG9EZXZpY2VQaXhlbHMobV9wbGF0Zm9y
bUNvbnRleHQsIHJlY3QpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y2xp
cFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0SW1wbENhaXJvOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQm
KT4mJikKIHsKICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xp
cFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSBvdmVycmlkZTsKICAgICBJbnRSZWN0IGNsaXBC
b3VuZHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnVmZmVy
JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGlwVG9EcmF3aW5nQ29t
bWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNl
LCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYp
PiYmKSBvdmVycmlkZTsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgdm9pZCBwYWludEZyYW1lRm9y
TWVkaWEoTWVkaWFQbGF5ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSBvdmVycmlk
ZTsKICAgICBib29sIGNhblBhaW50RnJhbWVGb3JNZWRpYShjb25zdCBNZWRpYVBsYXllciYpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJD
YWlyb0JhY2tlbmQuY3BwCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg5LDE5ICs4OSwxOSBAQCB2b2lkIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjpj
bGlwVG9NYXNrCiAgICAgICAgIENhaXJvOjpjbGlwVG9JbWFnZUJ1ZmZlcigqZGVzdENvbnRleHQu
cGxhdGZvcm1Db250ZXh0KCksIGltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIGRlc3RSZWN0
KTsKIH0KIAotdm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6dHJhbnNmb3JtQ29sb3JTcGFj
ZShEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgRGVzdGluYXRpb25Db2xvclNw
YWNlIGRlc3RDb2xvclNwYWNlKQordm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6dHJhbnNm
b3JtQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHNyY0NvbG9yU3BhY2Us
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgZGVzdENvbG9yU3BhY2UpCiB7CiAgICAgaWYg
KHNyY0NvbG9yU3BhY2UgPT0gZGVzdENvbG9yU3BhY2UpCiAgICAgICAgIHJldHVybjsKIAogICAg
IC8vIG9ubHkgc1JHQiA8LT4gbGluZWFyUkdCIGFyZSBzdXBwb3J0ZWQgYXQgdGhlIG1vbWVudAot
ICAgIGlmICgoc3JjQ29sb3JTcGFjZSAhPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNS
R0IgJiYgc3JjQ29sb3JTcGFjZSAhPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpCi0gICAg
ICAgIHx8IChkZXN0Q29sb3JTcGFjZSAhPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNS
R0IgJiYgZGVzdENvbG9yU3BhY2UgIT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKSkKKyAg
ICBpZiAoKHNyY0NvbG9yU3BhY2UgIT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdC
KCkgJiYgc3JjQ29sb3JTcGFjZSAhPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSkKKyAg
ICAgICAgfHwgKGRlc3RDb2xvclNwYWNlICE9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFy
U1JHQigpICYmIGRlc3RDb2xvclNwYWNlICE9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9wYXJhbWV0ZXJzLmNvbG9yU3BhY2UgPSBkZXN0
Q29sb3JTcGFjZTsKIAotICAgIGlmIChkZXN0Q29sb3JTcGFjZSA9PSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OkxpbmVhclNSR0IpIHsKKyAgICBpZiAoZGVzdENvbG9yU3BhY2UgPT0gRGVzdGluYXRp
b25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCkpIHsKICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6
YXJyYXk8dWludDhfdCwgMjU2PiBsaW5lYXJSZ2JMVVQgPSBbXSB7CiAgICAgICAgICAgICBzdGQ6
OmFycmF5PHVpbnQ4X3QsIDI1Nj4gYXJyYXk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgMjU2OyBpKyspIHsKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIEltYWdlQnVmZmVy
Q2Fpcm9CYWNrZW5kOjp0cmFuc2Zvcm1DCiAgICAgICAgICAgICByZXR1cm4gYXJyYXk7CiAgICAg
ICAgIH0oKTsKICAgICAgICAgcGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKGxpbmVhclJnYkxV
VCk7Ci0gICAgfSBlbHNlIGlmIChkZXN0Q29sb3JTcGFjZSA9PSBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IpIHsKKyAgICB9IGVsc2UgaWYgKGRlc3RDb2xvclNwYWNlID09IERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpKSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6OmFycmF5PHVp
bnQ4X3QsIDI1Nj4gZGV2aWNlUmdiTFVUPSBbXSB7CiAgICAgICAgICAgICBzdGQ6OmFycmF5PHVp
bnQ4X3QsIDI1Nj4gYXJyYXk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
MjU2OyBpKyspIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuaAkocmV2aXNp
b24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1h
Z2VCdWZmZXJDYWlyb0JhY2tlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGNsaXBUb01hc2soR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHRyYW5zZm9ybUNvbG9yU3Bh
Y2UoRGVzdGluYXRpb25Db2xvclNwYWNlIHNyY0NvbG9yU3BhY2UsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSBkZXN0Q29sb3JTcGFjZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB0cmFuc2Zvcm1Db2xvclNw
YWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgc3JjQ29sb3JTcGFjZSwgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiBkZXN0Q29sb3JTcGFjZSkgb3ZlcnJpZGU7CiAKICAgICBTdHJp
bmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVh
bGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdCBvdmVycmlkZTsKICAgICBWZWN0b3I8dWlu
dDhfdD4gdG9EYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVh
bGl0eSkgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9Db2xvckNHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA3LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwMy0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksMTMgKzI5LDE0IEBACiAjaWYgVVNFKENHKQog
CiAjaW5jbHVkZSAiQ29sb3JTcGFjZUNHLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNw
YWNlLmgiCiAjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhp
Y3NTUEkuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9Mb2Nr
Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi9UaW55TFJVQ2Fj
aGUuaD4KLSNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvVGlueUxSVUNhY2hlLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY3JlYXRlQ0dD
b2xvcihjb25zdCBDb2xvciYpOwpAQCAtOTEsMzQgKzkyLDM4IEBAIENvbG9yOjpDb2xvcihDR0Nv
bG9yUmVmIGNvbG9yLCBPcHRpb25TZXQKIHsKIH0KIAotc3RhdGljIFJldGFpblB0cjxDR0NvbG9y
UmVmPiBjcmVhdGVDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3N0YXRpYyBzdGQ6OnBhaXI8
Q0dDb2xvclNwYWNlUmVmLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+PiBjb252ZXJ0VG9DR0Nv
bXBhdGlibGVDb21wb25lbnRzKENvbG9yU3BhY2UgY29sb3JTcGFjZSwgQ29sb3JDb21wb25lbnRz
PGZsb2F0LCA0PiBjb21wb25lbnRzKQogewotICAgIGF1dG8gW2NvbG9yU3BhY2UsIGNvbXBvbmVu
dHNdID0gY29sb3IuY29sb3JTcGFjZUFuZENvbXBvbmVudHMoKTsKLQotICAgIGF1dG8gY2dDb2xv
clNwYWNlID0gY2FjaGVkTnVsbGFibGVDR0NvbG9yU3BhY2UoY29sb3JTcGFjZSk7Ci0KICAgICAv
LyBTb21lIENHIHBvcnRzIGRvbid0IHN1cHBvcnQgYWxsIHRoZSBjb2xvciBzcGFjZXMgcmVxdWly
ZWQgYW5kIHJldHVybgogICAgIC8vIG51bGxwdHIgZm9yIHVuc3VwcG9ydGVkIGNvbG9yIHNwYWNl
cy4gSW4gdGhvc2UgY2FzZXMsIHdlIGVhZ2VybHkgY29udmVydAogICAgIC8vIHRoZSBjb2xvciBp
bnRvIGVpdGhlciBleHRlbmRlZCBzUkdCIG9yIG5vcm1hbCBzUkdCLCBpZiBleHRlbmRlZCBzUkdC
IGlzCi0gICAgLy8gbm90IHN1cHBvcnRlZCwgYmVmb3JlIGNyZWF0aW5nIHRoZSBDR0NvbG9yUmVm
LgorICAgIC8vIG5vdCBzdXBwb3J0ZWQuCisKKyAgICBhdXRvIGNnQ29sb3JTcGFjZSA9IGNhY2hl
ZE51bGxhYmxlQ0dDb2xvclNwYWNlKGNvbG9yU3BhY2UpOwogICAgIGlmICghY2dDb2xvclNwYWNl
KSB7CiAjaWYgSEFWRShDT1JFX0dSQVBISUNTX0VYVEVOREVEX1NSR0JfQ09MT1JfU1BBQ0UpCi0g
ICAgICAgIGF1dG8gY29sb3JDb252ZXJ0ZWRUb0V4dGVuZGVkU1JHQkEgPSBjYWxsV2l0aENvbG9y
VHlwZShjb21wb25lbnRzLCBjb2xvclNwYWNlLCBbXSAoY29uc3QgYXV0byYgY29sb3IpIHsKLSAg
ICAgICAgICAgIHJldHVybiBjb252ZXJ0Q29sb3I8RXh0ZW5kZWRTUkdCQTxmbG9hdD4+KGNvbG9y
KTsKKyAgICAgICAgYXV0byBjb21wb25lbnRzQ29udmVydGVkVG9FeHRlbmRlZFNSR0JBID0gY2Fs
bFdpdGhDb2xvclR5cGUoY29tcG9uZW50cywgY29sb3JTcGFjZSwgW10gKGNvbnN0IGF1dG8mIGNv
bG9yKSB7CisgICAgICAgICAgICByZXR1cm4gYXNDb2xvckNvbXBvbmVudHMoY29udmVydENvbG9y
PEV4dGVuZGVkU1JHQkE8ZmxvYXQ+Pihjb2xvcikpOwogICAgICAgICB9KTsKLSAgICAgICAgY29t
cG9uZW50cyA9IGFzQ29sb3JDb21wb25lbnRzKGNvbG9yQ29udmVydGVkVG9FeHRlbmRlZFNSR0JB
KTsKLSAgICAgICAgY2dDb2xvclNwYWNlID0gZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpOwor
ICAgICAgICByZXR1cm4geyBleHRlbmRlZFNSR0JDb2xvclNwYWNlUmVmKCksIGNvbXBvbmVudHND
b252ZXJ0ZWRUb0V4dGVuZGVkU1JHQkEgfTsKICNlbHNlCi0gICAgICAgIGF1dG8gY29sb3JDb252
ZXJ0ZWRUb1NSR0JBID0gY2FsbFdpdGhDb2xvclR5cGUoY29tcG9uZW50cywgY29sb3JTcGFjZSwg
W10gKGNvbnN0IGF1dG8mIGNvbG9yKSB7Ci0gICAgICAgICAgICByZXR1cm4gY29udmVydENvbG9y
PFNSR0JBPGZsb2F0Pj4oY29sb3IpOworICAgICAgICBhdXRvIGNvbXBvbmVudHNDb252ZXJ0ZWRU
b1NSR0JBID0gY2FsbFdpdGhDb2xvclR5cGUoY29tcG9uZW50cywgY29sb3JTcGFjZSwgW10gKGNv
bnN0IGF1dG8mIGNvbG9yKSB7CisgICAgICAgICAgICByZXR1cm4gYXNDb2xvckNvbXBvbmVudHMo
Y29udmVydENvbG9yPFNSR0JBPGZsb2F0Pj4oY29sb3IpKTsKICAgICAgICAgfSk7Ci0gICAgICAg
IGNvbXBvbmVudHMgPSBhc0NvbG9yQ29tcG9uZW50cyhjb2xvckNvbnZlcnRlZFRvU1JHQkEpOwot
ICAgICAgICBjZ0NvbG9yU3BhY2UgPSBzUkdCQ29sb3JTcGFjZVJlZigpOworICAgICAgICByZXR1
cm4geyBzUkdCQ29sb3JTcGFjZVJlZigpLCBjb21wb25lbnRzQ29udmVydGVkVG9TUkdCQSB9Owog
I2VuZGlmCiAgICAgfQogCi0gICAgYXV0byBbciwgZywgYiwgYV0gPSBjb21wb25lbnRzOwotICAg
IENHRmxvYXQgY2dGbG9hdENvbXBvbmVudHNbNF0geyByLCBnLCBiLCBhIH07CisgICAgcmV0dXJu
IHsgY2dDb2xvclNwYWNlLCBjb21wb25lbnRzIH07Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8Q0dD
b2xvclJlZj4gY3JlYXRlQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCit7CisgICAgYXV0byBb
Y29sb3JTcGFjZSwgY29tcG9uZW50c10gPSBjb2xvci5jb2xvclNwYWNlQW5kQ29tcG9uZW50cygp
OworICAgIGF1dG8gW2NnQ29sb3JTcGFjZSwgY2dDb21wYXRpYmxlQ29tcG9uZW50c10gPSBjb252
ZXJ0VG9DR0NvbXBhdGlibGVDb21wb25lbnRzKGNvbG9yU3BhY2UsIGNvbXBvbmVudHMpOworICAg
IAorICAgIGF1dG8gW2MxLCBjMiwgYzMsIGM0XSA9IGNnQ29tcGF0aWJsZUNvbXBvbmVudHM7Cisg
ICAgQ0dGbG9hdCBjZ0Zsb2F0Q29tcG9uZW50c1s0XSB7IGMxLCBjMiwgYzMsIGM0IH07CiAKICAg
ICByZXR1cm4gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKGNnQ29sb3JTcGFjZSwgY2dGbG9hdENvbXBv
bmVudHMpKTsKIH0KQEAgLTE2MSw2ICsxNjYsMjQgQEAgQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9y
KGNvbnN0IENvbG9yJiBjbwogICAgIHJldHVybiBjYWNoZS5nZXQoKS5nZXQoY29sb3IpLmdldCgp
OwogfQogCitDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IHBsYXRmb3JtQ29udmVydENvbG9yQ29t
cG9uZW50cyhDb2xvclNwYWNlIGlucHV0Q29sb3JTcGFjZSwgQ29sb3JDb21wb25lbnRzPGZsb2F0
LCA0PiBpbnB1dENvbG9yQ29tcG9uZW50cywgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBv
dXRwdXRDb2xvclNwYWNlKQoreworICAgIC8vIEZJWE1FOiBJbnZlc3RpZ2F0ZSBvcHRpbWl6aW5n
IHRoaXMgdG8gdXNlIHRoZSBidWlsdGluIGNvbG9yIGNvbnZlcnNpb24gY29kZSBmb3Igc3VwcG9y
dGVkIGNvbG9yIHNwYWNlcy4KKworICAgIGF1dG8gW2NnSW5wdXRDb2xvclNwYWNlLCBjZ0NvbXBh
dGlibGVDb21wb25lbnRzXSA9IGNvbnZlcnRUb0NHQ29tcGF0aWJsZUNvbXBvbmVudHMoaW5wdXRD
b2xvclNwYWNlLCBpbnB1dENvbG9yQ29tcG9uZW50cyk7CisgICAgaWYgKGNnSW5wdXRDb2xvclNw
YWNlID09IG91dHB1dENvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCkpCisgICAgICAgIHJl
dHVybiBjZ0NvbXBhdGlibGVDb21wb25lbnRzOworCisgICAgYXV0byBbYzEsIGMyLCBjMywgYzRd
ID0gY2dDb21wYXRpYmxlQ29tcG9uZW50czsKKyAgICBDR0Zsb2F0IHNvdXJjZUNvbXBvbmVudHNb
NF0geyBjMSwgYzIsIGMzLCBjNCB9OworICAgIENHRmxvYXQgZGVzdGluYXRpb25Db21wb25lbnRz
WzRdIHsgfTsKKworICAgIGF1dG8gdHJhbnNmb3JtID0gYWRvcHRDRihDR0NvbG9yVHJhbnNmb3Jt
Q3JlYXRlKG91dHB1dENvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCksIG51bGxwdHIpKTsK
KyAgICBhdXRvIHJlc3VsdCA9IENHQ29sb3JUcmFuc2Zvcm1Db252ZXJ0Q29sb3JDb21wb25lbnRz
KHRyYW5zZm9ybS5nZXQoKSwgY2dJbnB1dENvbG9yU3BhY2UsIGtDR1JlbmRlcmluZ0ludGVudERl
ZmF1bHQsIHNvdXJjZUNvbXBvbmVudHMsIGRlc3RpbmF0aW9uQ29tcG9uZW50cyk7CisgICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CisgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8Zmxv
YXQ+KGRlc3RpbmF0aW9uQ29tcG9uZW50c1swXSksIHN0YXRpY19jYXN0PGZsb2F0PihkZXN0aW5h
dGlvbkNvbXBvbmVudHNbMV0pLCBzdGF0aWNfY2FzdDxmbG9hdD4oZGVzdGluYXRpb25Db21wb25l
bnRzWzJdKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRlc3RpbmF0aW9uQ29tcG9uZW50c1szXSkgfTsK
K30KKwogfQogCiAjZW5kaWYgLy8gVVNFKENHKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmgJKHJldmlzaW9uIDI3NzkzOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTksMjMgKzExOSw0IEBAIHN0YXRpYyBpbmxpbmUgQ0dDb2xvclNw
YWNlUmVmIGNhY2hlZE51bGwKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotLy8gTk9URTogU2lu
Y2UgdGhpcyBmdW5jdGlvbiBpcyBmb3IgKmRlc3RpbmF0aW9uKiBjb2xvciBzcGFjZXMgd2hvc2Ug
Y2FsbGVycyBhbHdheXMgZXhwZWN0IGEgbm9uLW51bGwgY29sb3Igc3BhY2UsIHRoaXMgZnVuY3Rp
b24gaXMgZ3VhcmFudGVlZCB0byByZXR1cm4gbm9uLW51bGwsIHVubGlrZSBjYWNoZWROdWxsYWJs
ZUNHQ29sb3JTcGFjZSgpLgotc3RhdGljIGlubGluZSBDR0NvbG9yU3BhY2VSZWYgY2FjaGVkQ0dD
b2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKQotewotICAgIHN3aXRj
aCAoY29sb3JTcGFjZSkgewotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOgot
ICAgICAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLSNpZiBFTkFCTEUoREVTVElOQVRJ
T05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OkxpbmVhclNSR0I6Ci0gICAgICAgIHJldHVybiBsaW5lYXJTUkdCQ29sb3JTcGFjZVJlZigp
OwotI2VuZGlmCi0jaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMp
Ci0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMzoKLSAgICAgICAgcmV0
dXJuIGRpc3BsYXlQM0NvbG9yU3BhY2VSZWYoKTsKLSNlbmRpZgotICAgIH0KLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gc1JHQkNvbG9yU3BhY2VSZWYoKTsKLX0KLQogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
R0xDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvR3JhcGhpY3NDb250ZXh0R0xDRy5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MzIsNyArNTMyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6cGFpbnRUb0NhbgogICAgIH0pKTsKIAogICAgIGF1dG8gaW1hZ2VTaXplID0gcGl4ZWxCdWZm
ZXIuc2l6ZSgpOwotICAgIGF1dG8gaW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKGFkb3B0Q0Yo
Q0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCAz
MiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBjYWNoZWRDR0NvbG9yU3BhY2UocGl4ZWxCdWZmZXIu
Zm9ybWF0KCkuY29sb3JTcGFjZSksIGJpdG1hcEluZm8sIGRhdGFQcm92aWRlci5nZXQoKSwgMCwg
ZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKSk7CisgICAgYXV0byBpbWFnZSA9IE5h
dGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgp
LCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCA0ICogaW1hZ2VTaXplLndpZHRoKCksIHBpeGVs
QnVmZmVyLmZvcm1hdCgpLmNvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCksIGJpdG1hcElu
Zm8sIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1
bHQpKSk7CiAKICAgICAvLyBDU1Mgc3R5bGluZyBtYXkgY2F1c2UgdGhlIGNhbnZhcydzIGNvbnRl
bnQgdG8gYmUgcmVzaXplZCBvbgogICAgIC8vIHRoZSBwYWdlLiBHbyBiYWNrIHRvIHRoZSBDYW52
YXMgdG8gZmlndXJlIG91dCB0aGUgY29ycmVjdApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHAJKHJldmlzaW9uIDI3
NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBv
b2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBIQVZFKElPU1VS
RkFDRSkKIAorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dENHLmgiCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5o
PgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtNTksNyArNjAsNyBAQCBJT1N1
cmZhY2VQb29sJiBJT1N1cmZhY2VQb29sOjpzaGFyZWRQb29sCiAgICAgcmV0dXJuIHBvb2w7CiB9
CiAKLXN0YXRpYyBib29sIHN1cmZhY2VNYXRjaGVzUGFyYW1ldGVycyhJT1N1cmZhY2UmIHN1cmZh
Y2UsIEludFNpemUgcmVxdWVzdGVkU2l6ZSwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UsIElP
U3VyZmFjZTo6Rm9ybWF0IGZvcm1hdCkKK3N0YXRpYyBib29sIHN1cmZhY2VNYXRjaGVzUGFyYW1l
dGVycyhJT1N1cmZhY2UmIHN1cmZhY2UsIEludFNpemUgcmVxdWVzdGVkU2l6ZSwgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBJT1N1cmZhY2U6OkZvcm1hdCBmb3JtYXQp
CiB7CiAgICAgaWYgKGZvcm1hdCAhPSBzdXJmYWNlLmZvcm1hdCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0xMDIsNyArMTAzLDcgQEAgdm9pZCBJT1N1cmZhY2VQb29sOjpkaWRVc2VTdXJm
YWNlT2ZTaXplKAogICAgIG1fc2l6ZXNJblBydW5lT3JkZXIuYXBwZW5kKHNpemUpOwogfQogCi1z
dGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2VQb29sOjp0YWtlU3VyZmFjZShJbnRT
aXplIHNpemUsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlLCBJT1N1cmZhY2U6OkZvcm1hdCBm
b3JtYXQpCitzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2VQb29sOjp0YWtlU3Vy
ZmFjZShJbnRTaXplIHNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFj
ZSwgSU9TdXJmYWNlOjpGb3JtYXQgZm9ybWF0KQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2xv
Y2sgfTsKICAgICBDYWNoZWRTdXJmYWNlTWFwOjppdGVyYXRvciBtYXBJdGVyID0gbV9jYWNoZWRT
dXJmYWNlcy5maW5kKHNpemUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSU9TdXJmYWNlUG9vbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuaAkocmV2aXNpb24gMjc3OTM5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSw2ICszOSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
RGVzdGluYXRhdGlvbkNvbG9yU3BhY2U7CisKIGNsYXNzIElPU3VyZmFjZVBvb2wgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKElPU3VyZmFjZVBvb2wpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwpAQCAtNDcsNyArNDksNyBAQCBjbGFzcyBJT1N1cmZhY2VQb29sIHsKIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSU9TdXJmYWNlUG9vbCYgc2hhcmVkUG9vbCgpOwog
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gdGFrZVN1cmZhY2UoSW50U2l6ZSwgQ0dD
b2xvclNwYWNlUmVmLCBJT1N1cmZhY2U6OkZvcm1hdCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPElP
U3VyZmFjZT4gdGFrZVN1cmZhY2UoSW50U2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiwgSU9TdXJmYWNlOjpGb3JtYXQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkU3VyZmFj
ZShzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPik7CiAKICAgICB2b2lkIGRpc2NhcmRBbGxTdXJm
YWNlcygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDR0JhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAkocmV2aXNpb24gMjc3OTM5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tl
bmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzQsNyArMTc0LDcgQEAgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IEltYWdlQnVmZmVyQ0dCYWNrZQogICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHRoaXMg
YmUgdXNpbmcgdGhlIHNhbWUgbG9naWMgYXMgSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRz8KIAogICAg
ICAgICAvLyBKUEVHcyBkb24ndCBoYXZlIGFuIGFscGhhIGNoYW5uZWwsIHNvIHdlIGhhdmUgdG8g
bWFudWFsbHkgY29tcG9zaXRlIG9uIHRvcCBvZiBibGFjay4KLSAgICAgICAgUGl4ZWxCdWZmZXJG
b3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4
ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICAgICAg
UGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVs
dGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSB9OwogICAgICAgICBhdXRvIHBpeGVsQnVmZmVyID0gZ2V0UGl4ZWxCdWZmZXIoZm9ybWF0LCBs
b2dpY2FsUmVjdCgpKTsKICAgICAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwpAQCAtMTkyLDcgKzE5Miw3IEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBJ
bWFnZUJ1ZmZlckNHQmFja2UKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAg
IGF1dG8gaW1hZ2VTaXplID0gcGl4ZWxCdWZmZXItPnNpemUoKTsKLSAgICAgICAgcmV0dXJuIGFk
b3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgp
LCA4LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBjYWNoZWRDR0NvbG9yU3BhY2UocGl4ZWxC
dWZmZXItPmZvcm1hdCgpLmNvbG9yU3BhY2UpLCBrQ0dCaXRtYXBCeXRlT3JkZXJEZWZhdWx0IHwg
a0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdCwgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwg
a0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpOworICAgICAgICByZXR1cm4gYWRvcHRDRihDR0lt
YWdlQ3JlYXRlKGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCA0
ICogaW1hZ2VTaXplLndpZHRoKCksIHBpeGVsQnVmZmVyLT5mb3JtYXQoKS5jb2xvclNwYWNlLnBs
YXRmb3JtQ29sb3JTcGFjZSgpLCBrQ0dCaXRtYXBCeXRlT3JkZXJEZWZhdWx0IHwga0NHSW1hZ2VB
bHBoYU5vbmVTa2lwTGFzdCwgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVy
aW5nSW50ZW50RGVmYXVsdCkpOwogICAgIH0KIAogICAgIGlmIChyZXNvbHV0aW9uU2NhbGUoKSA9
PSAxIHx8IHByZXNlcnZlUmVzb2x1dGlvbiA9PSBQcmVzZXJ2ZVJlc29sdXRpb246OlllcykgewpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcAkocmV2aXNpb24gMjc3OTM5
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw3ICs2Miw3IEBAIHNpemVfdCBJ
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y2FsY3UKICAgICByZXR1cm4gSW1hZ2VCdWZmZXJC
YWNrZW5kOjpjYWxjdWxhdGVNZW1vcnlDb3N0KGJhY2tlbmRTaXplLCBjYWxjdWxhdGVCeXRlc1Bl
clJvdyhiYWNrZW5kU2l6ZSkpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFy
YW1ldGVycyYgcGFyYW1ldGVycywgQ0dDb2xvclNwYWNlUmVmIGNnQ29sb3JTcGFjZSwgY29uc3Qg
SG9zdFdpbmRvdyopCitzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+
IEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFy
YW1ldGVycywgY29uc3QgSG9zdFdpbmRvdyopCiB7CiAgICAgQVNTRVJUKHBhcmFtZXRlcnMucGl4
ZWxGb3JtYXQgPT0gUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKIApAQCAtODEsNyArODEsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlCiAgICAgc2l6ZV90IG51bUJ5dGVz
ID0gYmFja2VuZFNpemUuaGVpZ2h0KCkgKiBieXRlc1BlclJvdzsKICAgICB2ZXJpZnlJbWFnZUJ1
ZmZlcklzQmlnRW5vdWdoKGRhdGEsIG51bUJ5dGVzKTsKIAotICAgIGF1dG8gY2dDb250ZXh0ID0g
YWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGUoZGF0YSwgYmFja2VuZFNpemUud2lkdGgoKSwg
YmFja2VuZFNpemUuaGVpZ2h0KCksIDgsIGJ5dGVzUGVyUm93LCBjZ0NvbG9yU3BhY2UsIGtDR0lt
YWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3QpKTsK
KyAgICBhdXRvIGNnQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGRhdGEs
IGJhY2tlbmRTaXplLndpZHRoKCksIGJhY2tlbmRTaXplLmhlaWdodCgpLCA4LCBieXRlc1BlclJv
dywgcGFyYW1ldGVycy5jb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBrQ0dJbWFnZUFs
cGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0KSk7CiAgICAg
aWYgKCFjZ0NvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC05NiwxNSArOTYs
MTQgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZQogCiBzdGQ6OnVu
aXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRtYXBC
YWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIGlmIChhdXRvIGNnQ29sb3JTcGFjZSA9IGNvbnRl
eHQuaGFzUGxhdGZvcm1Db250ZXh0KCkgPyBjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0KSA6IG51
bGxwdHIpCi0gICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRl
KHBhcmFtZXRlcnMsIGNnQ29sb3JTcGFjZS5nZXQoKSwgbnVsbHB0cik7CisgICAgaWYgKGF1dG8g
Y2dDb2xvclNwYWNlID0gY29udGV4dC5oYXNQbGF0Zm9ybUNvbnRleHQoKSA/IGNvbnRleHRDb2xv
clNwYWNlKGNvbnRleHQpIDogbnVsbHB0cikgeworICAgICAgICBhdXRvIG92ZXJyaWRlUGFyYW1l
dGVycyA9IHBhcmFtZXRlcnM7CisgICAgICAgIG92ZXJyaWRlUGFyYW1ldGVycy5jb2xvclNwYWNl
ID0gRGVzdGluYXRpb25Db2xvclNwYWNlIHsgY2dDb2xvclNwYWNlIH07CiAKLSAgICByZXR1cm4g
SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBudWxscHRyKTsK
LX0KKyAgICAgICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUob3Zl
cnJpZGVQYXJhbWV0ZXJzLCBudWxscHRyKTsKKyAgICB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0
ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2lu
ZG93KQotewotICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKHBh
cmFtZXRlcnMsIGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpLCBob3N0
V2luZG93KTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShw
YXJhbWV0ZXJzLCBudWxscHRyKTsKIH0KIAogSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6Oklt
YWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIHZv
aWQqIGRhdGEsIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4mJiBkYXRhUHJvdmlkZXIsIHN0
ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+JiYgY29udGV4dCkKQEAgLTE0Niw3ICsxNDUs
NyBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyQ0dCaXRtYXBCCiAgICAgICAgIGF1
dG8gYmFja2VuZFNpemUgPSB0aGlzLT5iYWNrZW5kU2l6ZSgpOwogICAgICAgICByZXR1cm4gTmF0
aXZlSW1hZ2U6OmNyZWF0ZShhZG9wdENGKENHSW1hZ2VDcmVhdGUoCiAgICAgICAgICAgICBiYWNr
ZW5kU2l6ZS53aWR0aCgpLCBiYWNrZW5kU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIGJ5dGVzUGVyUm93
KCksCi0gICAgICAgICAgICBjYWNoZWRDR0NvbG9yU3BhY2UoY29sb3JTcGFjZSgpKSwga0NHSW1h
Z2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdCwgbV9k
YXRhUHJvdmlkZXIuZ2V0KCksCisgICAgICAgICAgICBjb2xvclNwYWNlKCkucGxhdGZvcm1Db2xv
clNwYWNlKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRl
T3JkZXIzMkhvc3QsIG1fZGF0YVByb3ZpZGVyLmdldCgpLAogICAgICAgICAgICAgMCwgdHJ1ZSwg
a0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdCkpKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQuaAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksOCArMzksOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEludFNpemUgY2Fs
Y3VsYXRlU2FmZUJhY2tlbmRTaXplKGNvbnN0IFBhcmFtZXRlcnMmKTsKICAgICBzdGF0aWMgc2l6
ZV90IGNhbGN1bGF0ZU1lbW9yeUNvc3QoY29uc3QgUGFyYW1ldGVycyYpOwogCi0gICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0
IFBhcmFtZXRlcnMmLCBDR0NvbG9yU3BhY2VSZWYsIGNvbnN0IEhvc3RXaW5kb3cqKTsKICAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBjcmVhdGUo
Y29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IEhvc3RXaW5kb3cqKTsKKworICAgIC8vIEZJWE1FOiBS
ZW5hbWUgdG8gY3JlYXRlVXNpbmdDb2xvclNwYWNlT2ZHcmFwaGljc0NvbnRleHQoKSAob3Igc29t
ZXRoaW5nIGxpa2UgdGhhdCkuCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
ckNHQml0bWFwQmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBHcmFwaGlj
c0NvbnRleHQmKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCgpIGNvbnN0IG92ZXJy
aWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCShyZXZpc2lv
biAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSwxMyArODEsMTMg
QEAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gSW1hZ2VCdWZmZXJJTwogICAgIHJldHVybiBJ
bWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29udGV4dENvbG9yU3BhY2UoY29udGV4dCk7CiB9CiAKLXN0
ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIENHQ29s
b3JTcGFjZVJlZiBjZ0NvbG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCitz
dGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlcklP
U3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25z
dCBIb3N0V2luZG93KiBob3N0V2luZG93KQogewogICAgIEludFNpemUgYmFja2VuZFNpemUgPSBj
YWxjdWxhdGVTYWZlQmFja2VuZFNpemUocGFyYW1ldGVycyk7CiAgICAgaWYgKGJhY2tlbmRTaXpl
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHN1cmZhY2Ug
PSBJT1N1cmZhY2U6OmNyZWF0ZShiYWNrZW5kU2l6ZSwgYmFja2VuZFNpemUsIGNnQ29sb3JTcGFj
ZSwgSU9TdXJmYWNlOjpmb3JtYXRGb3JQaXhlbEZvcm1hdChwYXJhbWV0ZXJzLnBpeGVsRm9ybWF0
KSk7CisgICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoYmFja2VuZFNpemUsIGJh
Y2tlbmRTaXplLCBwYXJhbWV0ZXJzLmNvbG9yU3BhY2UsIElPU3VyZmFjZTo6Zm9ybWF0Rm9yUGl4
ZWxGb3JtYXQocGFyYW1ldGVycy5waXhlbEZvcm1hdCkpOwogICAgIGlmICghc3VyZmFjZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTEwMiwxNSArMTAyLDE0IEBAIHN0ZDo6dW5pcXVl
X3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2sKIAogc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUo
Y29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KQogewotICAgIGlmIChhdXRvIGNnQ29sb3JTcGFjZSA9IGNvbnRleHQuaGFzUGxhdGZvcm1D
b250ZXh0KCkgPyBjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0KSA6IG51bGxwdHIpCi0gICAgICAg
IHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBj
Z0NvbG9yU3BhY2UuZ2V0KCksIG51bGxwdHIpOworICAgIGlmIChhdXRvIGNnQ29sb3JTcGFjZSA9
IGNvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkgPyBjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0
KSA6IG51bGxwdHIpIHsKKyAgICAgICAgYXV0byBvdmVycmlkZVBhcmFtZXRlcnMgPSBwYXJhbWV0
ZXJzOworICAgICAgICBvdmVycmlkZVBhcmFtZXRlcnMuY29sb3JTcGFjZSA9IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSB7IGNnQ29sb3JTcGFjZSB9OwogCi0gICAgcmV0dXJuIEltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMsIG51bGxwdHIpOwotfQorICAgICAgICBy
ZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUob3ZlcnJpZGVQYXJhbWV0
ZXJzLCBudWxscHRyKTsKKyAgICB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCi17Ci0g
ICAgcmV0dXJuIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRlKHBhcmFtZXRlcnMs
IGNhY2hlZENHQ29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpLCBob3N0V2luZG93KTsK
KyAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUocGFyYW1ldGVy
cywgbnVsbHB0cik7CiB9CiAKIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6SW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIHN0ZDo6dW5p
cXVlX3B0cjxJT1N1cmZhY2U+JiYgc3VyZmFjZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZC5oCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDIsOCArNDIsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHNpemVfdCBjYWxjdWxhdGVN
ZW1vcnlDb3N0KGNvbnN0IFBhcmFtZXRlcnMmKTsKICAgICBzdGF0aWMgc2l6ZV90IGNhbGN1bGF0
ZUV4dGVybmFsTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJzJik7CiAgICAgCi0gICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25z
dCBQYXJhbWV0ZXJzJiwgQ0dDb2xvclNwYWNlUmVmLCBjb25zdCBIb3N0V2luZG93Kik7CiAgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0
ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgSG9zdFdpbmRvdyopOworICAgIC8vIEZJWE1FOiBS
ZW5hbWUgdG8gY3JlYXRlVXNpbmdDb2xvclNwYWNlT2ZHcmFwaGljc0NvbnRleHQoKSAob3Igc29t
ZXRoaW5nIGxpa2UgdGhhdCkuCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cklPU3VyZmFjZUJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0Jik7CiAKICAgICBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQoY29uc3QgUGFy
YW1ldGVycyYsIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+JiYpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJVdGlsaXRpZXNDRy5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzcsNyArMTc3LDcgQEAgc3RhdGljIGJvb2wgZW5jb2RlKGNvbnN0IFBpeGVsQnVm
ZmVyJiBzbwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8gaW1hZ2VTaXplID0g
c291cmNlLnNpemUoKTsKLSAgICBhdXRvIGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKGlt
YWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCksIDgsIDMyLCA0ICogaW1hZ2VTaXpl
LndpZHRoKCksIGNhY2hlZENHQ29sb3JTcGFjZShzb3VyY2UuZm9ybWF0KCkuY29sb3JTcGFjZSks
IGtDR0JpdG1hcEJ5dGVPcmRlckRlZmF1bHQgfCBkYXRhQWxwaGFJbmZvLCBkYXRhUHJvdmlkZXIu
Z2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CisgICAgYXV0byBp
bWFnZSA9IGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXpl
LmhlaWdodCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBzb3VyY2UuZm9ybWF0KCku
Y29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwga0NHQml0bWFwQnl0ZU9yZGVyRGVmYXVs
dCB8IGRhdGFBbHBoYUluZm8sIGRhdGFQcm92aWRlci5nZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRl
cmluZ0ludGVudERlZmF1bHQpKTsKIAogICAgIHJldHVybiBlbmNvZGUoaW1hZ2UuZ2V0KCksIGRl
c3RpbmF0aW9uVVRJLmdldCgpLCBxdWFsaXR5LCBmdW5jdGlvbik7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQ29jb2EubW0JKHJldmlzaW9uIDI3NzkzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTU3MSw3ICs1NzEsNyBAQCBib29sIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzCiBib29sIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjphbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpCiB7CiAgICAgQVNT
RVJUKCFnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLmlzRW1wdHkoKSk7Ci0gICAgYXV0byBi
YWNraW5nID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGUoZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZl
clNpemUoKSwgV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgYXV0byBiYWNraW5n
ID0gSU9TdXJmYWNlOjpjcmVhdGUoZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgIGlmICghYmFja2luZykKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9JT1N1cmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9JT1N1cmZhY2UuaAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDkgKzI3LDEwIEBACiAKICNpZiBIQVZFKElPU1VSRkFDRSkKIAorI2luY2x1ZGUgIkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlIDxvYmpj
L29iamMuaD4KICNpbmNsdWRlIDxwYWwvc3BpL2NvY29hL0lPU3VyZmFjZVNQSS5oPgotI2luY2x1
ZGUgIkludFNpemUuaCIKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShN
QUNDQVRBTFlTVCkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQogI2RlZmluZSBI
QVZFX0lPU1VSRkFDRV9SR0IxMCAxCkBAIC00NiwxMCArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEhvc3RXaW5kb3c7Ci0gICAgCi0j
aWYgVVNFKElPU1VSRkFDRV9DQU5WQVNfQkFDS0lOR19TVE9SRSkKIGNsYXNzIEltYWdlQnVmZmVy
OwotI2VuZGlmCiAKIGVudW0gY2xhc3MgUGl4ZWxGb3JtYXQgOiB1aW50OF90OwogZW51bSBjbGFz
cyBWb2xhdGlsaXR5U3RhdGUgOiB1aW50OF90OwpAQCAtMTAxLDEwICs5OSwxMCBAQCBwdWJsaWM6
CiAgICAgICAgIHVpbnQzMl90IG1fZmxhZ3M7CiAgICAgfTsKIAotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGUoSW50U2l6ZSwgQ0dDb2xv
clNwYWNlUmVmLCBGb3JtYXQgPSBGb3JtYXQ6OkJHUkEpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGUoSW50U2l6ZSwgSW50U2l6ZSBj
b250ZXh0U2l6ZSwgQ0dDb2xvclNwYWNlUmVmLCBGb3JtYXQgPSBGb3JtYXQ6OkJHUkEpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBjcmVhdGVG
cm9tU2VuZFJpZ2h0KGNvbnN0IFdURjo6TWFjaFNlbmRSaWdodCYmLCBDR0NvbG9yU3BhY2VSZWYp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBj
cmVhdGVGcm9tU3VyZmFjZShJT1N1cmZhY2VSZWYsIENHQ29sb3JTcGFjZVJlZik7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZShJbnRT
aXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGb3JtYXQgPSBGb3JtYXQ6OkJHUkEp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBj
cmVhdGUoSW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiwgRm9ybWF0ID0gRm9ybWF0OjpCR1JBKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlRnJvbVNlbmRSaWdodChjb25zdCBX
VEY6Ok1hY2hTZW5kUmlnaHQmJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZUZy
b21TdXJmYWNlKElPU3VyZmFjZVJlZiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0
ZUZyb21JbWFnZShDR0ltYWdlUmVmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlRnJvbVBpeGVsQnVmZmVyKENWUGl4ZWxCdWZmZXJS
ZWYpOwogICAgIApAQCAtMTQ2LDcgKzE0NCw3IEBAIHB1YmxpYzoKICAgICBJbnRTaXplIHNpemUo
KSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICBzaXplX3QgdG90YWxCeXRlcygpIGNvbnN0
IHsgcmV0dXJuIG1fdG90YWxCeXRlczsgfQogCi0gICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3Bh
Y2UoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yU3BhY2UuZ2V0KCk7IH0KKyAgICBjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yU3Bh
Y2U7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBGb3JtYXQgZm9ybWF0KCkgY29uc3Q7CiAgICAgV0VC
Q09SRV9FWFBPUlQgSU9TdXJmYWNlSUQgc3VyZmFjZUlEKCkgY29uc3Q7CiAgICAgc2l6ZV90IGJ5
dGVzUGVyUm93KCkgY29uc3Q7CkBAIC0xNjksMTQgKzE2NywxNCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBtaWdyYXRlQ29sb3JTcGFjZVRvUHJvcGVydGllcygpOwogCiBwcml2YXRlOgotICAgIElPU3Vy
ZmFjZShJbnRTaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBDR0NvbG9yU3BhY2VSZWYsIEZvcm1h
dCwgYm9vbCYgc3VjY2Vzcyk7Ci0gICAgSU9TdXJmYWNlKElPU3VyZmFjZVJlZiwgQ0dDb2xvclNw
YWNlUmVmKTsKKyAgICBJT1N1cmZhY2UoSW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRm9ybWF0LCBib29sJiBzdWNjZXNzKTsKKyAgICBJ
T1N1cmZhY2UoSU9TdXJmYWNlUmVmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKIAot
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBzdXJmYWNlRnJvbVBvb2woSW50
U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xvclNwYWNlUmVmLCBGb3JtYXQpOworICAg
IHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBzdXJmYWNlRnJvbVBvb2woSW50U2l6
ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRm9y
bWF0KTsKICAgICBJbnRTaXplIGNvbnRleHRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0
U2l6ZTsgfQogICAgIHZvaWQgc2V0Q29udGV4dFNpemUoSW50U2l6ZSk7CiAKLSAgICBSZXRhaW5Q
dHI8Q0dDb2xvclNwYWNlUmVmPiBtX2NvbG9yU3BhY2U7CisgICAgRGVzdGluYXRpb25Db2xvclNw
YWNlIG1fY29sb3JTcGFjZTsKICAgICBJbnRTaXplIG1fc2l6ZTsKICAgICBJbnRTaXplIG1fY29u
dGV4dFNpemU7CiAgICAgc2l6ZV90IG1fdG90YWxCeXRlczsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0JKHJldmlzaW9u
IDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3Vy
ZmFjZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmln
LmgiCiAjaW1wb3J0ICJJT1N1cmZhY2UuaCIKIAotI2ltcG9ydCAiQ29yZVZpZGVvU29mdExpbmsu
aCIKKyNpbXBvcnQgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2ltcG9ydCAiR3JhcGhpY3ND
b250ZXh0Q0cuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dEdMLmgiCiAjaW1wb3J0ICJIb3N0
V2luZG93LmgiCkBAIC00MSw5ICs0MSwxMSBAQAogI2ltcG9ydCA8d3RmL01hdGhFeHRyYXMuaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAorI2ltcG9ydCAiQ29yZVZpZGVvU29m
dExpbmsuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgc3RkOjp1bmlxdWVfcHRy
PElPU3VyZmFjZT4gSU9TdXJmYWNlOjpzdXJmYWNlRnJvbVBvb2woSW50U2l6ZSBzaXplLCBJbnRT
aXplIGNvbnRleHRTaXplLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwgRm9ybWF0IHBpeGVs
Rm9ybWF0KQoraW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6c3Vy
ZmFjZUZyb21Qb29sKEludFNpemUgc2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGb3JtYXQgcGl4ZWxGb3JtYXQpCiB7CiAg
ICAgYXV0byBjYWNoZWRTdXJmYWNlID0gSU9TdXJmYWNlUG9vbDo6c2hhcmVkUG9vbCgpLnRha2VT
dXJmYWNlKHNpemUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKICAgICBpZiAoIWNhY2hlZFN1
cmZhY2UpCkBAIC01MywxMiArNTUsMTIgQEAgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZh
Y2U+IElPU3VyZgogICAgIHJldHVybiBjYWNoZWRTdXJmYWNlOwogfQogCi1zdGQ6OnVuaXF1ZV9w
dHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZShJbnRTaXplIHNpemUsIENHQ29sb3JTcGFj
ZVJlZiBjb2xvclNwYWNlLCBGb3JtYXQgcGl4ZWxGb3JtYXQpCitzdGQ6OnVuaXF1ZV9wdHI8SU9T
dXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZShJbnRTaXplIHNpemUsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYgY29sb3JTcGFjZSwgRm9ybWF0IHBpeGVsRm9ybWF0KQogewogICAgIHJldHVy
biBJT1N1cmZhY2U6OmNyZWF0ZShzaXplLCBzaXplLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCk7
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6Y3JlYXRlKEludFNp
emUgc2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2Us
IEZvcm1hdCBwaXhlbEZvcm1hdCkKK3N0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFj
ZTo6Y3JlYXRlKEludFNpemUgc2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGb3JtYXQgcGl4ZWxGb3JtYXQpCiB7CiAgICAg
aWYgKGF1dG8gY2FjaGVkU3VyZmFjZSA9IHN1cmZhY2VGcm9tUG9vbChzaXplLCBjb250ZXh0U2l6
ZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpKSB7CiAgICAgICAgIExPR19XSVRIX1NUUkVBTShJ
T1N1cmZhY2UsIHN0cmVhbSA8PCAiSU9TdXJmYWNlOjpjcmVhdGUgdG9vayBmcm9tIHBvb2w6ICIg
PDwgKmNhY2hlZFN1cmZhY2UpOwpAQCAtNzUsMTMgKzc3LDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxJ
T1N1cmZhY2U+IElPU3VyZmFjZTo6Y3IKICAgICByZXR1cm4gc3VyZmFjZTsKIH0KIAotc3RkOjp1
bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KGNvbnN0
IE1hY2hTZW5kUmlnaHQmJiBzZW5kUmlnaHQsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKQor
c3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0
KGNvbnN0IE1hY2hTZW5kUmlnaHQmJiBzZW5kUmlnaHQsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgY29sb3JTcGFjZSkKIHsKICAgICBhdXRvIHN1cmZhY2UgPSBhZG9wdENGKElPU3VyZmFj
ZUxvb2t1cEZyb21NYWNoUG9ydChzZW5kUmlnaHQuc2VuZFJpZ2h0KCkpKTsKICAgICByZXR1cm4g
SU9TdXJmYWNlOjpjcmVhdGVGcm9tU3VyZmFjZShzdXJmYWNlLmdldCgpLCBjb2xvclNwYWNlKTsK
IH0KIAotc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU3Vy
ZmFjZShJT1N1cmZhY2VSZWYgc3VyZmFjZSwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UpCitz
dGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TdXJmYWNlKElP
U3VyZmFjZVJlZiBzdXJmYWNlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3Bh
Y2UpCiB7CiAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+KG5ldyBJT1N1cmZh
Y2Uoc3VyZmFjZSwgY29sb3JTcGFjZSkpOwogfQpAQCAtOTQsNyArOTYsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyCiAgICAgc2l6ZV90IHdpZHRoID0gQ0dJbWFn
ZUdldFdpZHRoKGltYWdlKTsKICAgICBzaXplX3QgaGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChp
bWFnZSk7CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShJbnRTaXplKHdp
ZHRoLCBoZWlnaHQpLCBDR0ltYWdlR2V0Q29sb3JTcGFjZShpbWFnZSkpOworICAgIGF1dG8gc3Vy
ZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKEludFNpemUod2lkdGgsIGhlaWdodCksIERlc3RpbmF0
aW9uQ29sb3JTcGFjZSB7IENHSW1hZ2VHZXRDb2xvclNwYWNlKGltYWdlKSB9KTsKICAgICBpZiAo
IXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8gc3VyZmFjZUNvbnRl
eHQgPSBzdXJmYWNlLT5lbnN1cmVQbGF0Zm9ybUNvbnRleHQoKTsKQEAgLTExNiw3ICsxMTgsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyCiAgICAgaWYgKCFjb2xv
clNwYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBjcmVhdGVGcm9t
U3VyZmFjZShzdXJmYWNlLCBjb2xvclNwYWNlKTsKKyAgICByZXR1cm4gY3JlYXRlRnJvbVN1cmZh
Y2Uoc3VyZmFjZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIHsgY29sb3JTcGFjZSB9KTsKIH0KIAog
dm9pZCBJT1N1cmZhY2U6Om1vdmVUb1Bvb2woc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4mJiBz
dXJmYWNlKQpAQCAtMTk2LDcgKzE5OCw3IEBAIHN0YXRpYyBOU0RpY3Rpb25hcnkgKm9wdGlvbnNG
b3IzMkJpdFN1cmYKIAogfQogCi1JT1N1cmZhY2U6OklPU3VyZmFjZShJbnRTaXplIHNpemUsIElu
dFNpemUgY29udGV4dFNpemUsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlLCBGb3JtYXQgZm9y
bWF0LCBib29sJiBzdWNjZXNzKQorSU9TdXJmYWNlOjpJT1N1cmZhY2UoSW50U2l6ZSBzaXplLCBJ
bnRTaXplIGNvbnRleHRTaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3Bh
Y2UsIEZvcm1hdCBmb3JtYXQsIGJvb2wmIHN1Y2Nlc3MpCiAgICAgOiBtX2NvbG9yU3BhY2UoY29s
b3JTcGFjZSkKICAgICAsIG1fc2l6ZShzaXplKQogICAgICwgbV9jb250ZXh0U2l6ZShjb250ZXh0
U2l6ZSkKQEAgLTIzMiw3ICsyMzQsNyBAQCBJT1N1cmZhY2U6OklPU3VyZmFjZShJbnRTaXplIHNp
emUsIEludFNpCiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKExheWVycywgIklPU3VyZmFjZSBj
cmVhdGlvbiBmYWlsZWQgZm9yIHNpemU6ICglZCAlZCkgYW5kIGZvcm1hdDogKCVkKSIsIHNpemUu
d2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgZm9ybWF0KTsKIH0KIAotSU9TdXJmYWNlOjpJT1N1cmZh
Y2UoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIENHQ29sb3JTcGFjZVJlZiBjb2xvclNwYWNlKQorSU9T
dXJmYWNlOjpJT1N1cmZhY2UoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYgY29sb3JTcGFjZSkKICAgICA6IG1fY29sb3JTcGFjZShjb2xvclNwYWNlKQog
ICAgICwgbV9zdXJmYWNlKHN1cmZhY2UpCiB7CkBAIC0zNDcsNyArMzQ5LDcgQEAgQ0dDb250ZXh0
UmVmIElPU3VyZmFjZTo6ZW5zdXJlUGxhdGZvcm1DbwogICAgICAgICBicmVhazsKICAgICB9CiAg
ICAgCi0gICAgbV9jZ0NvbnRleHQgPSBhZG9wdENGKENHSU9TdXJmYWNlQ29udGV4dENyZWF0ZSht
X3N1cmZhY2UuZ2V0KCksIG1fY29udGV4dFNpemUud2lkdGgoKSwgbV9jb250ZXh0U2l6ZS5oZWln
aHQoKSwgYml0c1BlckNvbXBvbmVudCwgYml0c1BlclBpeGVsLCBtX2NvbG9yU3BhY2UuZ2V0KCks
IGJpdG1hcEluZm8pKTsKKyAgICBtX2NnQ29udGV4dCA9IGFkb3B0Q0YoQ0dJT1N1cmZhY2VDb250
ZXh0Q3JlYXRlKG1fc3VyZmFjZS5nZXQoKSwgbV9jb250ZXh0U2l6ZS53aWR0aCgpLCBtX2NvbnRl
eHRTaXplLmhlaWdodCgpLCBiaXRzUGVyQ29tcG9uZW50LCBiaXRzUGVyUGl4ZWwsIG1fY29sb3JT
cGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwgYml0bWFwSW5mbykpOwogCiAjaWYgUExBVEZPUk0o
TUFDKQogICAgIGlmIChhdXRvIGRpc3BsYXlNYXNrID0gcHJpbWFyeU9wZW5HTERpc3BsYXlNYXNr
KCkpIHsKQEAgLTUxNSw3ICs1MTcsNyBAQCB2b2lkIElPU3VyZmFjZTo6c2V0T3duZXJzaGlwSWRl
bnRpdHkodGFzCiAKIHZvaWQgSU9TdXJmYWNlOjptaWdyYXRlQ29sb3JTcGFjZVRvUHJvcGVydGll
cygpCiB7Ci0gICAgYXV0byBjb2xvclNwYWNlUHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dDb2xvclNw
YWNlQ29weVByb3BlcnR5TGlzdChtX2NvbG9yU3BhY2UuZ2V0KCkpKTsKKyAgICBhdXRvIGNvbG9y
U3BhY2VQcm9wZXJ0aWVzID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDb3B5UHJvcGVydHlMaXN0KG1f
Y29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSkpOwogICAgIElPU3VyZmFjZVNldFZhbHVl
KG1fc3VyZmFjZS5nZXQoKSwga0lPU3VyZmFjZUNvbG9yU3BhY2UsIGNvbG9yU3BhY2VQcm9wZXJ0
aWVzLmdldCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RS
ZW5kZXJlckNvcmVJbWFnZS5tbQkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdl
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBGaWx0ZXJFZmZlY3RS
ZW5kZXJlckNvcmVJbWFnZTo6cmVuZAogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgYXV0byYg
c3VyZmFjZSA9IGRvd25jYXN0PEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI+KCptX291dHB1dEltYWdl
QnVmZmVyKS5zdXJmYWNlKCk7Ci0gICAgW3NoYXJlZENJQ29udGV4dCgpLmdldCgpIHJlbmRlcjog
bV9vdXRwdXRJbWFnZS5nZXQoKSB0b0lPU3VyZmFjZTogc3VyZmFjZS5zdXJmYWNlKCkgYm91bmRz
OmRlc3RSZWN0KGxhc3RFZmZlY3QpIGNvbG9yU3BhY2U6Y2FjaGVkQ0dDb2xvclNwYWNlKGxhc3RF
ZmZlY3QucmVzdWx0Q29sb3JTcGFjZSgpKV07CisgICAgW3NoYXJlZENJQ29udGV4dCgpLmdldCgp
IHJlbmRlcjogbV9vdXRwdXRJbWFnZS5nZXQoKSB0b0lPU3VyZmFjZTogc3VyZmFjZS5zdXJmYWNl
KCkgYm91bmRzOmRlc3RSZWN0KGxhc3RFZmZlY3QpIGNvbG9yU3BhY2U6bGFzdEVmZmVjdC5yZXN1
bHRDb2xvclNwYWNlKCkucGxhdGZvcm1Db2xvclNwYWNlKCldOwogfQogICAgIAogRmxvYXRSZWN0
IEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpkZXN0UmVjdChjb25zdCBGaWx0ZXJFZmZl
Y3QmIGxhc3RFZmZlY3QpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEltYWdlQnVmZmVyLmgJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgSW1hZ2VCdWZmZXIgOiBwdWJsaWMgQ29u
Y3JldGVJbWFnZQogICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpiYXNlVHJhbnNm
b3JtOwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5k
b3cpCisgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2Us
IFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQog
ICAgIHsKICAgICAgICAgcmV0dXJuIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjp0ZW1wbGF0ZSBj
cmVhdGU8SW1hZ2VCdWZmZXI+KHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4
ZWxGb3JtYXQsIGhvc3RXaW5kb3cpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgSXRlbUhhbmRsZTo6
ZGVzdHJveSgpCiAgICAgICAgIGdldDxGaWxsUm91bmRlZFJlY3Q+KCkufkZpbGxSb3VuZGVkUmVj
dCgpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJdGVtVHlwZTo6R2V0UGl4ZWxCdWZmZXI6
Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEdl
dFBpeGVsQnVmZmVyPjo6dmFsdWUpOworICAgICAgICBnZXQ8R2V0UGl4ZWxCdWZmZXI+KCkufkdl
dFBpeGVsQnVmZmVyKCk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEl0ZW1UeXBlOjpQdXRQ
aXhlbEJ1ZmZlcjoKICAgICAgICAgZ2V0PFB1dFBpeGVsQnVmZmVyPigpLn5QdXRQaXhlbEJ1ZmZl
cigpOwpAQCAtMzA3LDcgKzMwNyw3IEBAIHZvaWQgSXRlbUhhbmRsZTo6ZGVzdHJveSgpCiAgICAg
ICAgIHJldHVybjsKICNlbmRpZgogICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3Ry
dWN0aWJsZTxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz46OnZhbHVlKTsKKyAgICAgICAgZ2V0
PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpLn5CZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5k
cygpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVu
Y3lMYXllcjoKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVj
dGlibGU8QmVnaW5UcmFuc3BhcmVuY3lMYXllcj46OnZhbHVlKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1U
eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDYgKzI4MSw3IEBAIGJvb2wgaXNJbmxpbmVJ
dGVtKEl0ZW1UeXBlIHR5cGUpCiAgICAgICogYW5kICgzKSBhbGwgdGhlICJzdGF0aWMgY29uc3Rl
eHByIGJvb2wgaXNJbmxpbmVJdGVtInMgaW5zaWRlIHRoZSBpbmRpdmlkdWFsIGl0ZW0gY2xhc3Nl
cy4gKi8KIAogICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzOgogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6CiAg
ICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3Vz
UmluZ1BhdGg6CkBAIC0yOTQsNiArMjk1LDcgQEAgYm9vbCBpc0lubGluZUl0ZW0oSXRlbVR5cGUg
dHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDoKICAgICBjYXNl
IEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZToKICAgICBjYXNlIEl0ZW1UeXBlOjpG
aWxsUm91bmRlZFJlY3Q6CisgICAgY2FzZSBJdGVtVHlwZTo6R2V0UGl4ZWxCdWZmZXI6CiAgICAg
Y2FzZSBJdGVtVHlwZTo6UHV0UGl4ZWxCdWZmZXI6CiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0TGlu
ZURhc2g6CiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6CkBAIC0zMTAsNyArMzEyLDYgQEAg
Ym9vbCBpc0lubGluZUl0ZW0oSXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlw
OgogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXQ6CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRv
SW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFu
ZHM6CiAgICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgogICAgIGNh
c2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdEb3Rz
Rm9yRG9jdW1lbnRNYXJrZXI6CkBAIC0zNTEsNyArMzUyLDYgQEAgYm9vbCBpc0lubGluZUl0ZW0o
SXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0OgogICAgIGNhc2Ug
SXRlbVR5cGU6OlN0cm9rZUxpbmU6CiAgICAgY2FzZSBJdGVtVHlwZTo6VHJhbnNsYXRlOgotICAg
IGNhc2UgSXRlbVR5cGU6OkdldFBpeGVsQnVmZmVyOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmgJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgJKHdvcmtpbmcgY29weSkK
QEAgLTg4MCwyMyArODgwLDU0IEBAIE9wdGlvbmFsPENsaXBQYXRoPiBDbGlwUGF0aDo6ZGVjb2Rl
KERlY28KIGNsYXNzIEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzIHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3RleHByIEl0ZW1UeXBlIGl0ZW1UeXBlID0gSXRlbVR5cGU6OkJlZ2luQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzOwotICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0g
PSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSBmYWxzZTsK
ICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IGZhbHNlOwogCiAgICAg
QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpCiAgICAgICAgIDogbV9kZXN0aW5hdGlv
bihkZXN0aW5hdGlvbikKLSAgICAgICAgLCBtX2NvbG9yU3BhY2UoY29sb3JTcGFjZSkKKyAgICAg
ICAgLCBtX2NvbG9yU3BhY2UoV1RGTW92ZShjb2xvclNwYWNlKSkKICAgICB7CiAgICAgfQogCisg
ICAgLy8gRXhwbGljaXQgZGVzdHJ1Y3RvciBhZGRlZCB0byBmb3JjZSBub24tdHJpdmlhbCBkZXN0
cnVjdG9yIG9uIGFsbCBwbGF0Zm9ybXMKKyAgICAvLyBhcyB0aGUgZW5jb2RpbmcgbG9naWMgY3Vy
cmVudGx5IGhhcmRjb2RlcyB3aGljaCBkaXNwbGF5IGxpc3QgaXRlbSB0eXBlcyBuZWVkCisgICAg
Ly8gb3V0IG9mIGxpbmUgdHJlYXRtZW50IHJhdGhlciB0aGFuIHVzaW5nIHRoZSBpc0lubGluZUl0
ZW0gY29uc3RhbnQuCisgICAgfkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKCkgeyB9CisKICAg
ICBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5h
dGlvbjsgfQotICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb2xvclNwYWNlOyB9CisgICAgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBj
b2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvclNwYWNlOyB9CisKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxh
dGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzPiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRlOgogICAgIEZsb2F0UmVjdCBtX2Rlc3Rp
bmF0aW9uOwogICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBtX2NvbG9yU3BhY2U7CiB9OwogCit0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX2Rlc3Rp
bmF0aW9uOworICAgIGVuY29kZXIgPDwgbV9jb2xvclNwYWNlOworfQorCit0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgorT3B0aW9uYWw8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+IEJlZ2luQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBPcHRp
b25hbDxGbG9hdFJlY3Q+IGRlc3RpbmF0aW9uOworICAgIGRlY29kZXIgPj4gZGVzdGluYXRpb247
CisgICAgaWYgKCFkZXN0aW5hdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKKyAgICBkZWNv
ZGVyID4+IGNvbG9yU3BhY2U7CisgICAgaWYgKCFjb2xvclNwYWNlKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIHt7ICpkZXN0aW5hdGlvbiwgV1RGTW92ZSgqY29s
b3JTcGFjZSkgfX07Cit9CisKIGNsYXNzIEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpF
bmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM7CkBAIC0xOTM4LDIzICsxOTY5LDU0IEBAIHByaXZhdGU6
CiBjbGFzcyBHZXRQaXhlbEJ1ZmZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBJ
dGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpHZXRQaXhlbEJ1ZmZlcjsKLSAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGJvb2wgaXNJbmxpbmVJdGVtID0gZmFsc2U7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlz
RHJhd2luZ0l0ZW0gPSBmYWxzZTsKIAotICAgIEdldFBpeGVsQnVmZmVyKFdlYkNvcmU6OlBpeGVs
QnVmZmVyRm9ybWF0IG91dHB1dEZvcm1hdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc3JjUmVj
dCkKKyAgICBHZXRQaXhlbEJ1ZmZlcihQaXhlbEJ1ZmZlckZvcm1hdCBvdXRwdXRGb3JtYXQsIGNv
bnN0IEludFJlY3QmIHNyY1JlY3QpCiAgICAgICAgIDogbV9zcmNSZWN0KHNyY1JlY3QpCi0gICAg
ICAgICwgbV9vdXRwdXRGb3JtYXQob3V0cHV0Rm9ybWF0KQorICAgICAgICAsIG1fb3V0cHV0Rm9y
bWF0KFdURk1vdmUob3V0cHV0Rm9ybWF0KSkKICAgICB7CiAgICAgfQogCi0gICAgUGl4ZWxCdWZm
ZXJGb3JtYXQgb3V0cHV0Rm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9vdXRwdXRGb3JtYXQ7IH0K
KyAgICAvLyBFeHBsaWNpdCBkZXN0cnVjdG9yIGFkZGVkIHRvIGZvcmNlIG5vbi10cml2aWFsIGRl
c3RydWN0b3Igb24gYWxsIHBsYXRmb3JtcworICAgIC8vIGFzIHRoZSBlbmNvZGluZyBsb2dpYyBj
dXJyZW50bHkgaGFyZGNvZGVzIHdoaWNoIGRpc3BsYXkgbGlzdCBpdGVtIHR5cGVzIG5lZWQKKyAg
ICAvLyBvdXQgb2YgbGluZSB0cmVhdG1lbnQgcmF0aGVyIHRoYW4gdXNpbmcgdGhlIGlzSW5saW5l
SXRlbSBjb25zdGFudC4KKyAgICB+R2V0UGl4ZWxCdWZmZXIoKSB7IH0KKworICAgIGNvbnN0IFBp
eGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX291dHB1dEZv
cm1hdDsgfQogICAgIEludFJlY3Qgc3JjUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3JjUmVjdDsg
fQogCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxHZXRQaXhl
bEJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKKwogcHJpdmF0ZToKICAgICBJbnRSZWN0IG1fc3Jj
UmVjdDsKICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBtX291dHB1dEZvcm1hdDsKIH07CiAKK3RlbXBs
YXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIEdldFBpeGVsQnVmZmVyOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fc3JjUmVjdDsKKyAgICBlbmNvZGVy
IDw8IG1fb3V0cHV0Rm9ybWF0OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9u
YWw8R2V0UGl4ZWxCdWZmZXI+IEdldFBpeGVsQnVmZmVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKK3sKKyAgICBPcHRpb25hbDxJbnRSZWN0PiBzcmNSZWN0OworICAgIGRlY29kZXIgPj4gc3Jj
UmVjdDsKKyAgICBpZiAoIXNyY1JlY3QpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlckZvcm1hdD4gb3V0cHV0Rm9ybWF0OworICAgIGRlY29k
ZXIgPj4gb3V0cHV0Rm9ybWF0OworICAgIGlmICghb3V0cHV0Rm9ybWF0KQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIHt7IFdURk1vdmUoKm91dHB1dEZvcm1hdCks
ICpzcmNSZWN0IH19OworfQorCiBjbGFzcyBQdXRQaXhlbEJ1ZmZlciB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpQdXRQaXhlbEJ1
ZmZlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAJKHJl
dmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUyLDcg
KzQ1Miw3IEBAIHZvaWQgUmVjb3JkZXI6OmNsaXBUb0ltYWdlQnVmZmVyKEltYWdlQnUKICAgICBh
cHBlbmQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KGltYWdlQnVmZmVyLnJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcigpLCBkZXN0UmVjdCk7CiB9CiAKLXZvaWQgUmVjb3JkZXI6OmNsaXBUb0RyYXdpbmdD
b21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UgY29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBkcmF3aW5n
RnVuY3Rpb24pCit2b2lkIFJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNw
YWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikK
IHsKICAgICBHcmFwaGljc0NvbnRleHQgbmVzdGVkQ29udGV4dChbJl0oR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0KSB7CiAgICAgICAgIGF1dG8gaW5pdGlhbENsaXAgPSBGbG9hdFJlY3QoRmxvYXRQ
b2ludCgpLCBkZXN0aW5hdGlvbi5zaXplKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5oCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDcsNyArMTQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsaXBQYXRoKGNv
bnN0IFBhdGgmLCBXaW5kUnVsZSkgb3ZlcnJpZGU7CiAgICAgSW50UmVjdCBjbGlwQm91bmRzKCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZl
ciYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwotICAgIHZvaWQgY2xpcFRvRHJhd2luZ0Nv
bW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQm
KT4mJikgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHZvaWQgcGFpbnRGcmFtZUZv
ck1lZGlhKE1lZGlhUGxheWVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBjYW5QYWludEZyYW1lRm9yTWVkaWEoY29uc3QgTWVkaWFQbGF5ZXImKSBj
b25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwCShyZXZpc2lv
biAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
RGlzcGxhY2VtZW50TWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBib29s
IEZFRGlzcGxhY2VtZW50TWFwOjpzZXRTY2FsZShmbG9hdCBzCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OnNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRp
b25Db2xvclNwYWNlKQordm9pZCBGRURpc3BsYWNlbWVudE1hcDo6c2V0UmVzdWx0Q29sb3JTcGFj
ZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKQogewogICAgIC8vIFNwZWM6IFRoZSAnY29s
b3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzJyBwcm9wZXJ0eSBvbmx5IGFwcGxpZXMgdG8gdGhlICdp
bjInIHNvdXJjZSBpbWFnZQogICAgIC8vIGFuZCBkb2VzIG5vdCBhcHBseSB0byB0aGUgJ2luJyBz
b3VyY2UgaW1hZ2UuIFRoZSAnaW4nIHNvdXJjZSBpbWFnZSBtdXN0IHJlbWFpbiBpbiBpdHMKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1l
bnRNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmgJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuaAkod29y
a2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgZmxvYXQgc2NhbGUoKSBj
b25zdCB7IHJldHVybiBtX3NjYWxlOyB9CiAgICAgYm9vbCBzZXRTY2FsZShmbG9hdCk7CiAKLSAg
ICB2b2lkIHNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHNldFJlc3VsdENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJikgb3ZlcnJpZGU7CiAgICAgdm9pZCB0cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKEZpbHRl
ckVmZmVjdCosIGNvbnN0IGludCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaAkocmV2
aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUZsb29kLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDggKzQwLDggQEAgcHVibGljOgogI2lm
ICFVU0UoQ0cpCiAgICAgLy8gZmVGbG9vZCBkb2VzIG5vdCBwZXJmb3JtIGNvbG9yIGludGVycG9s
YXRpb24gb2YgYW55IGtpbmQsIHNvIHRoZSByZXN1bHQgaXMgYWx3YXlzIGluIHRoZSBjdXJyZW50
CiAgICAgLy8gY29sb3Igc3BhY2UgcmVnYXJkbGVzcyBvZiB0aGUgdmFsdWUgb2YgY29sb3ItaW50
ZXJwb2xhdGlvbi1maWx0ZXJzLgotICAgIHZvaWQgc2V0T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0
aW5hdGlvbkNvbG9yU3BhY2UpIG92ZXJyaWRlIHsgRmlsdGVyRWZmZWN0OjpzZXRSZXN1bHRDb2xv
clNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7IH0KLSAgICB2b2lkIHNldFJlc3Vs
dENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlKSBvdmVycmlkZSB7IEZpbHRlckVmZmVj
dDo6c2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOyB9Cisg
ICAgdm9pZCBzZXRPcGVyYXRpbmdDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYpIG92ZXJyaWRlIHsgRmlsdGVyRWZmZWN0OjpzZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsgfQorICAgIHZvaWQgc2V0UmVzdWx0Q29sb3JTcGFjZShj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKSBvdmVycmlkZSB7IEZpbHRlckVmZmVjdDo6c2V0
UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7IH0KICNlbmRp
ZgogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRVRpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQog
ICAgICAgICB0aWxlUmVjdC5zY2FsZShmaWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpLndpZHRoKCks
IGZpbHRlci5maWx0ZXJSZXNvbHV0aW9uKCkuaGVpZ2h0KCkpOwogICAgIH0KIAotICAgIGF1dG8g
dGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIodGlsZVJl
Y3QsIHRpbGVSZWN0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGZpbHRlcigpLnJlbmRl
cmluZ01vZGUoKSk7CisgICAgYXV0byB0aWxlSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0Ojpj
cmVhdGVJbWFnZUJ1ZmZlcih0aWxlUmVjdCwgdGlsZVJlY3QsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpLCBmaWx0ZXIoKS5yZW5kZXJpbmdNb2RlKCkpOwogICAgIGlmICghdGlsZUltYWdl
KQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAJKHJldmlzaW9uIDI3
NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RWZmZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM5LDcgKzQzOSw3IEBAIHN0YXRpYyB2b2lk
IGNvcHlVbnByZW11bHRpcGx5aW5nQWxwaGEoY28KICNlbmRpZgogfQogCi1PcHRpb25hbDxQaXhl
bEJ1ZmZlcj4gRmlsdGVyRWZmZWN0Ojpjb252ZXJ0UGl4ZWxCdWZmZXJUb0NvbG9yU3BhY2UoRGVz
dGluYXRpb25Db2xvclNwYWNlIHRhcmdldENvbG9yU3BhY2UsIFBpeGVsQnVmZmVyJiBwaXhlbEJ1
ZmZlcikKK09wdGlvbmFsPFBpeGVsQnVmZmVyPiBGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRQaXhlbEJ1
ZmZlclRvQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHRhcmdldENvbG9y
U3BhY2UsIFBpeGVsQnVmZmVyJiBwaXhlbEJ1ZmZlcikKIHsKICAgICAvLyBGSVhNRTogVXNpbmcg
YW4gSW1hZ2VCdWZmZXIgdG8gcGVyZm9ybSB0aGUgY29sb3Igc3BhY2UgY29udmVyc2lvbiBpcyB1
bm5lY2Vzc2FyeS4gV2UgY2FuIGRvIGl0IGRpcmVjdGx5LgogCkBAIC00NTQsNyArNDU0LDcgQEAg
T3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEZpbHRlckVmZmVjdDo6Y29udgogICAgIHJldHVybiBjb252
ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UodGFyZ2V0Q29sb3JTcGFjZSwgKmJ1ZmZlciwgZGVz
dGluYXRpb25SZWN0LCBwaXhlbEJ1ZmZlci5mb3JtYXQoKS5hbHBoYUZvcm1hdCk7CiB9CiAKLU9w
dGlvbmFsPFBpeGVsQnVmZmVyPiBGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29s
b3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UgdGFyZ2V0Q29sb3JTcGFjZSwgSW1hZ2VCdWZm
ZXImIGlucHV0QnVmZmVyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBBbHBoYVByZW11bHRpcGxpY2F0
aW9uIG91dHB1dEFscGhhRm9ybWF0KQorT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEZpbHRlckVmZmVj
dDo6Y29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgdGFyZ2V0Q29sb3JTcGFjZSwgSW1hZ2VCdWZmZXImIGlucHV0QnVmZmVyLCBjb25zdCBJ
bnRSZWN0JiByZWN0LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEFscGhhRm9ybWF0KQog
ewogICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBiZSBkb25lIG1vcmUgZGlyZWN0bHkgdXNpbmcgUGl4
ZWxCdWZmZXJDb252ZXJzaW9uLgogCkBAIC00NzIsNyArNDcyLDcgQEAgT3B0aW9uYWw8UGl4ZWxC
dWZmZXI+IEZpbHRlckVmZmVjdDo6Y29udgogICAgIHJldHVybiBjb252ZXJ0ZWRCdWZmZXItPmdl
dFBpeGVsQnVmZmVyKGZvcm1hdCwgcmVjdCk7CiB9CiAKLXZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5
Q29udmVydGVkSW1hZ2VCdWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0
aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIEFscGhhUHJlbXVsdGlw
bGljYXRpb24gb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgRmls
dGVyRWZmZWN0Ojpjb3B5Q29udmVydGVkSW1hZ2VCdWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xh
bXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xv
clNwYWNlLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpCiB7CiAgICAgLy8gQ29udmVydHMgdGhlIGRhdGEgc3RvcmVkIGluIG1faW1h
Z2VCdWZmZXJSZXN1bHQsIGFuZCBzYXZlIHRvIGRlc3RpbmF0aW9uCiAgICAgYXV0byBjb252ZXJ0
ZWRQaXhlbEJ1ZmZlciA9IGNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZShjb2xvclNwYWNl
LCAqbV9pbWFnZUJ1ZmZlclJlc3VsdCwgeyBJbnRQb2ludCgpLCBtX2Fic29sdXRlUGFpbnRSZWN0
LnNpemUoKSB9LCBvdXRwdXRGb3JtYXQpOwpAQCAtNDgxLDcgKzQ4MSw3IEBAIHZvaWQgRmlsdGVy
RWZmZWN0Ojpjb3B5Q29udmVydGVkSW1hZ2VCdWYKICAgICBjb3B5SW1hZ2VCeXRlcyhjb252ZXJ0
ZWRQaXhlbEJ1ZmZlci0+ZGF0YSgpLCBkZXN0aW5hdGlvbiwgZGVzdFJlY3QpOwogfQogCi12b2lk
IEZpbHRlckVmZmVjdDo6Y29weUNvbnZlcnRlZFBpeGVsQnVmZmVyVG9EZXN0aW5hdGlvbihVaW50
OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIFBpeGVsQnVmZmVyJiBwaXhlbEJ1ZmZlciwgRGVz
dGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQor
dm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRQaXhlbEJ1ZmZlclRvRGVzdGluYXRpb24o
VWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBQaXhlbEJ1ZmZlciYgcGl4ZWxCdWZmZXIs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpCiB7CiAgICAgLy8gQ29udmVydHMgdGhlIGRhdGEgc3RvcmVkIGluIG1fdW5tdWx0
aXBsaWVkSW1hZ2VSZXN1bHQvbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQsCiAgICAgLy8gd2hp
Y2hldmVyIGlzbid0IG51bGwsIGFuZCBzYXZlIHRvIGRlc3RpbmF0aW9uCkBAIC02MzYsNyArNjM2
LDcgQEAgYm9vbCBGaWx0ZXJFZmZlY3Q6OnJlcXVpcmVzUGl4ZWxCdWZmZXJDbwogI2VuZGlmCiB9
CiAKLXZvaWQgRmlsdGVyRWZmZWN0Ojp0cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0
aW9uQ29sb3JTcGFjZSBkZXN0aW5hdGlvbkNvbG9yU3BhY2UpCit2b2lkIEZpbHRlckVmZmVjdDo6
dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGRl
c3RpbmF0aW9uQ29sb3JTcGFjZSkKIHsKICNpZiBVU0UoQ0cpCiAgICAgLy8gQ0cgaGFuZGxlcyBj
b2xvciBzcGFjZSBhZGp1c3RtZW50cyBpbnRlcm5hbGx5LgpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCShy
ZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlckVmZmVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkFscGhhUHJlbXVsdGlwbGljYXRpb24uaCIKLSNpbmNsdWRl
ICJDb2xvclNwYWNlLmgiCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5j
bHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkludFJl
Y3RFeHRlbnQuaCIKQEAgLTE2NSwxMyArMTY1LDEzIEBAIHB1YmxpYzoKICAgICBib29sIGNsaXBz
VG9Cb3VuZHMoKSBjb25zdCB7IHJldHVybiBtX2NsaXBzVG9Cb3VuZHM7IH0KICAgICB2b2lkIHNl
dENsaXBzVG9Cb3VuZHMoYm9vbCB2YWx1ZSkgeyBtX2NsaXBzVG9Cb3VuZHMgPSB2YWx1ZTsgfQog
Ci0gICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG9wZXJhdGluZ0NvbG9yU3BhY2UoKSBjb25zdCB7
IHJldHVybiBtX29wZXJhdGluZ0NvbG9yU3BhY2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0T3Bl
cmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSkgeyBtX29w
ZXJhdGluZ0NvbG9yU3BhY2UgPSBjb2xvclNwYWNlOyB9Ci0gICAgRGVzdGluYXRpb25Db2xvclNw
YWNlIHJlc3VsdENvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdENvbG9yU3BhY2U7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgY29sb3JTcGFjZSkgeyBtX3Jlc3VsdENvbG9yU3BhY2UgPSBjb2xvclNwYWNlOyB9Cisg
ICAgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBvcGVyYXRpbmdDb2xvclNwYWNlKCkgY29u
c3QgeyByZXR1cm4gbV9vcGVyYXRpbmdDb2xvclNwYWNlOyB9CisgICAgdmlydHVhbCB2b2lkIHNl
dE9wZXJhdGluZ0NvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNw
YWNlKSB7IG1fb3BlcmF0aW5nQ29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7IH0KKyAgICBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHJlc3VsdENvbG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBt
X3Jlc3VsdENvbG9yU3BhY2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVzdWx0Q29sb3JTcGFj
ZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpIHsgbV9yZXN1bHRDb2xv
clNwYWNlID0gY29sb3JTcGFjZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHRyYW5zZm9ybVJlc3Vs
dENvbG9yU3BhY2UoRmlsdGVyRWZmZWN0KiBpbiwgY29uc3QgaW50KSB7IGluLT50cmFuc2Zvcm1S
ZXN1bHRDb2xvclNwYWNlKG1fb3BlcmF0aW5nQ29sb3JTcGFjZSk7IH0KLSAgICB2b2lkIHRyYW5z
Zm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlKTsKKyAgICB2b2lkIHRy
YW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CiAg
ICAgCiAgICAgc3RhdGljIFZlY3RvcjxmbG9hdD4gbm9ybWFsaXplZEZsb2F0cyhjb25zdCBWZWN0
b3I8ZmxvYXQ+JiB2YWx1ZXMpCiAgICAgewpAQCAtMjAzLDExICsyMDMsMTEgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgPSAwOwogCiAgICAgdm9p
ZCBjb3B5SW1hZ2VCeXRlcyhjb25zdCBVaW50OENsYW1wZWRBcnJheSYgc291cmNlLCBVaW50OENs
YW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0IEludFJlY3QmKSBjb25zdDsKLSAgICB2b2lk
IGNvcHlDb252ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkm
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEFscGhhUHJlbXVsdGlwbGljYXRpb24sIGNvbnN0IElu
dFJlY3QmKTsKLSAgICB2b2lkIGNvcHlDb252ZXJ0ZWRQaXhlbEJ1ZmZlclRvRGVzdGluYXRpb24o
VWludDhDbGFtcGVkQXJyYXkmLCBQaXhlbEJ1ZmZlciYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwg
Y29uc3QgSW50UmVjdCYpOworICAgIHZvaWQgY29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0
aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYs
IEFscGhhUHJlbXVsdGlwbGljYXRpb24sIGNvbnN0IEludFJlY3QmKTsKKyAgICB2b2lkIGNvcHlD
b252ZXJ0ZWRQaXhlbEJ1ZmZlclRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmLCBQaXhl
bEJ1ZmZlciYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IEludFJlY3QmKTsK
ICAgICBib29sIHJlcXVpcmVzUGl4ZWxCdWZmZXJDb2xvclNwYWNlQ29udmVyc2lvbihPcHRpb25h
bDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+KTsKLSAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gY29u
dmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgSW1hZ2VC
dWZmZXImLCBjb25zdCBJbnRSZWN0JiwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbik7Ci0gICAgT3B0
aW9uYWw8UGl4ZWxCdWZmZXI+IGNvbnZlcnRQaXhlbEJ1ZmZlclRvQ29sb3JTcGFjZShEZXN0aW5h
dGlvbkNvbG9yU3BhY2UsIFBpeGVsQnVmZmVyJik7CisgICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+
IGNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmLCBJbWFnZUJ1ZmZlciYsIGNvbnN0IEludFJlY3QmLCBBbHBoYVByZW11bHRpcGxpY2F0aW9u
KTsKKyAgICBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gY29udmVydFBpeGVsQnVmZmVyVG9Db2xvclNw
YWNlKGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBpeGVsQnVmZmVyJik7CiAgICAgCiAK
ICAgICBGaWx0ZXImIG1fZmlsdGVyOwpAQCAtMjQ0LDEzICsyNDQsMTEgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1fY2xpcHNUb0JvdW5kcyB7IHRydWUgfTsKIAogI2lmIEVOQUJMRShERVNUSU5BVElP
Tl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZGVm
YXVsdE9wZXJhdGluZ0NvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNS
R0I7CisgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1fb3BlcmF0aW5nQ29sb3JTcGFjZSB7IERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigpIH07CiAjZWxzZQotICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBkZWZhdWx0T3BlcmF0aW5nQ29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQjsKKyAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgbV9vcGVyYXRpbmdDb2xv
clNwYWNlIHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsKICNlbmRpZgotCi0gICAg
RGVzdGluYXRpb25Db2xvclNwYWNlIG1fb3BlcmF0aW5nQ29sb3JTcGFjZSB7IGRlZmF1bHRPcGVy
YXRpbmdDb2xvclNwYWNlIH07Ci0gICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1fcmVzdWx0Q29s
b3JTcGFjZSB7IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgIERlc3RpbmF0aW9u
Q29sb3JTcGFjZSBtX3Jlc3VsdENvbG9yU3BhY2UgeyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSB9OwogICAgIAogICAgIGNvbnN0IFR5cGUgbV9maWx0ZXJFZmZlY3RDbGFzc1R5cGU7CiB9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VH
cmFwaGljLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiw3ICszNiw3IEBAIHByaXZhdGU6CiAgICAgU291cmNlR3JhcGhpYyhGaWx0ZXIm
IGZpbHRlcikKICAgICAgICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCBUeXBlOjpTb3VyY2VHcmFw
aGljKQogICAgIHsKLSAgICAgICAgc2V0T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IpOworICAgICAgICBzZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICB9CiAKICAgICBjb25zdCBjaGFyKiBmaWx0ZXJO
YW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlNvdXJjZUdyYXBoaWMiOyB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09w
ZXJhdGlvblJlY29yZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNw
cAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwNzYsNyArMTA3Niw3IEBAIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
YXBwZW5kKHN0ZDoKICAgICBtX2NvbW1hbmRMaXN0LmFwcGVuZChXVEZNb3ZlKGNvbW1hbmQpKTsK
IH0KIAotdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMo
Y29uc3QgRmxvYXRSZWN0JiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdy
YXBoaWNzQ29udGV4dCYpPiYmKQordm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpjbGlwVG9E
cmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikKIHsKICAgICAvLyBGSVhN
RTogTm90IGltcGxlbWVudGVkLgogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8v
Tmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAkocmV2aXNpb24gMjc3OTM5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9P
cGVyYXRpb25SZWNvcmRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBjbGlwUGF0aChjb25zdCBXZWJDb3JlOjpQYXRoJiwgV2ViQ29yZTo6V2lu
ZFJ1bGUpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkludFJlY3QgY2xpcEJvdW5kcygpIG92ZXJy
aWRlOwogICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIGNsaXBUb0RyYXdp
bmdDb21tYW5kcyhjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBXZWJDb3Jl
OjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0Jik+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IFdlYkNvcmU6OkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYsIEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
Jik+JiYpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShWSURFTykKICAgICB2b2lkIHBhaW50RnJhbWVG
b3JNZWRpYShXZWJDb3JlOjpNZWRpYVBsYXllciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYg
ZGVzdGluYXRpb24pIG92ZXJyaWRlOwogICAgIGJvb2wgY2FuUGFpbnRGcmFtZUZvck1lZGlhKGNv
bnN0IFdlYkNvcmU6Ok1lZGlhUGxheWVyJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFw
L05pY29zaWFHQ0dMTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQ0dMTGF5ZXIuY3BwCShyZXZpc2lv
biAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3Rl
eG1hcC9OaWNvc2lhR0NHTExheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBA
QCB2b2lkIEdDR0xMYXllcjo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAgICAgSW50U2l6ZSB0ZXh0
dXJlU2l6ZShtX2NvbnRleHQubV9jdXJyZW50V2lkdGgsIG1fY29udGV4dC5tX2N1cnJlbnRIZWln
aHQpOwogICAgIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MgPSBtX2NvbnRleHQuY29udGV4
dEF0dHJpYnV0ZXMoKS5hbHBoYSA/IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQgOiAwOwog
I2lmIFVTRShBTkdMRSkKLSAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGltYWdlQnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZXh0dXJlU2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5h
Y2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6
QkdSQTgpOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHRleHR1cmVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJh
dGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4
KTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCShyZXZpc2lvbiAyNzc5Mzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiB7Ci0gICAgUGl4ZWxCdWZmZXJG
b3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQ
aXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgIFBp
eGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVs
dGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSB9OwogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1h
dCwgZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xFUy5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpyZWFkblBpeGVsCiAKIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiB7Ci0gICAgUGl4ZWxCdWZmZXJG
b3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQ
aXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgIFBp
eGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVs
dGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSB9OwogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1h
dCwgZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAJKHJl
dmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9CaXRtYXBUZXh0dXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCB2b2lk
IEJpdG1hcFRleHR1cmU6OnVwZGF0ZUNvbnRlbnRzKEdyYXBoCiB7CiAgICAgLy8gTWFraW5nIGFu
IHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkIGJ1ZmZlciBoZXJlIGlzIE9LIGJlY2F1c2Ug
dGhpcyBjb2RlCiAgICAgLy8gaXNuJ3QgdXNlZCBieSBhbnkgcGxhdGZvcm1zIHRoYXQgcmVzcGVj
dCB0aGUgYWNjZWxlcmF0ZWQgYml0LgotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKHRhcmdldFJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
LCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7Cisg
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGFyZ2V0UmVjdC5zaXpl
KCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAg
ICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRm
b3JtU2NyZWVuR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUGxhdGZvcm1TY3JlZW5HdGsuY3BwCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBNaWNoYWVsIEVtbWVs
IG1pa2UuZW1tZWxAZ21haWwuY29tCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ2hyaXN0aWFuIER5
d2FuIDxjaHJpc3RpYW5AaW1lbmRpby5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFi
b3JhIEx0ZC4KQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybVNjcmVlbi5oIgogCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgi
CiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVk
ZSAiR3RrVXRpbGl0aWVzLmgiCkBAIC04NSw2ICs4NiwxMSBAQCBib29sIHNjcmVlbklzTW9ub2No
cm9tZShXaWRnZXQqIHdpZGdldCkKICAgICByZXR1cm4gc2NyZWVuRGVwdGgod2lkZ2V0KSA8IDI7
CiB9CiAKK0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCopCit7
CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOworfQorCiBib29sIHNj
cmVlbkhhc0ludmVydGVkQ29sb3JzKCkKIHsKICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3JlZW5JT1MubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU2NyZWVuSU9TLm1tCShyZXZp
c2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1TY3Jl
ZW5JT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA2LCAyMDE0IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04OCw5ICs4OCw5IEBAIGJvb2wgc2NyZWVu
U3VwcG9ydHNIaWdoRHluYW1pY1JhbmdlKFdpZGcKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUNH
Q29sb3JTcGFjZVJlZiBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCogd2lkZ2V0KQorRGVzdGluYXRp
b25Db2xvclNwYWNlIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgcmV0
dXJuIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcih3aWRnZXQpID8gZXh0ZW5kZWRTUkdCQ29s
b3JTcGFjZVJlZigpIDogc1JHQkNvbG9yU3BhY2VSZWYoKTsKKyAgICByZXR1cm4gc2NyZWVuU3Vw
cG9ydHNFeHRlbmRlZENvbG9yKHdpZGdldCkgPyBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgeyBleHRl
bmRlZFNSR0JDb2xvclNwYWNlUmVmKCkgfSA6IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
OwogfQogCiAvLyBUaGVzZSBmdW5jdGlvbnMgc2NhbGUgYmV0d2VlbiBzY3JlZW4gYW5kIHBhZ2Ug
Y29vcmRpbmF0ZXMgYmVjYXVzZSBKYXZhU2NyaXB0L0RPTSBvcGVyYXRpb25zCkBAIC0xOTMsMTYg
KzE5MywxNCBAQCBTY3JlZW5Qcm9wZXJ0aWVzIGNvbGxlY3RTY3JlZW5Qcm9wZXJ0aWVzCiAgICAg
ICAgIEZsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0ID0gc2NyZWVuLmJvdW5kczsKICAgICAg
ICAgc2NyZWVuQXZhaWxhYmxlUmVjdC5zZXRZKE5TTWF4WShzY3JlZW4uYm91bmRzKSAtIChzY3Jl
ZW5BdmFpbGFibGVSZWN0LnkoKSArIHNjcmVlbkF2YWlsYWJsZVJlY3QuaGVpZ2h0KCkpKTsgLy8g
ZmxpcAogICAgICAgICBGbG9hdFJlY3Qgc2NyZWVuUmVjdCA9IHNjcmVlbi5fcmVmZXJlbmNlQm91
bmRzOwotICAgICAgICAKLSAgICAgICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JT
cGFjZSA9IHNjcmVlbkNvbG9yU3BhY2UobnVsbHB0cik7Ci0gICAgICAgIAorICAgICAgICBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSB7IHNjcmVlbkNvbG9yU3BhY2UobnVsbHB0cikg
fTsKICAgICAgICAgaW50IHNjcmVlbkRlcHRoID0gV2ViQ29yZTo6c2NyZWVuRGVwdGgobnVsbHB0
cik7CiAgICAgICAgIGludCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCA9IFdlYkNvcmU6OnNjcmVl
bkRlcHRoUGVyQ29tcG9uZW50KG51bGxwdHIpOwogICAgICAgICBib29sIHNjcmVlblN1cHBvcnRz
RXh0ZW5kZWRDb2xvciA9IFdlYkNvcmU6OnNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcihudWxs
cHRyKTsKICAgICAgICAgYm9vbCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycyA9IFdlYkNvcmU6OnNj
cmVlbkhhc0ludmVydGVkQ29sb3JzKCk7CiAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gV2Vi
Q29yZTo6c2NyZWVuUFBJRmFjdG9yKCk7CiAKLSAgICAgICAgc2NyZWVuUHJvcGVydGllcy5zY3Jl
ZW5EYXRhTWFwLnNldCgrK2Rpc3BsYXlJRCwgU2NyZWVuRGF0YSB7IHNjcmVlbkF2YWlsYWJsZVJl
Y3QsIHNjcmVlblJlY3QsIGNvbG9yU3BhY2UsIHNjcmVlbkRlcHRoLCBzY3JlZW5EZXB0aFBlckNv
bXBvbmVudCwgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yLCBzY3JlZW5IYXNJbnZlcnRlZENv
bG9ycywgZmFsc2UsIHNjYWxlRmFjdG9yIH0pOworICAgICAgICBzY3JlZW5Qcm9wZXJ0aWVzLnNj
cmVlbkRhdGFNYXAuc2V0KCsrZGlzcGxheUlELCBTY3JlZW5EYXRhIHsgc2NyZWVuQXZhaWxhYmxl
UmVjdCwgc2NyZWVuUmVjdCwgV1RGTW92ZShjb2xvclNwYWNlKSwgc2NyZWVuRGVwdGgsIHNjcmVl
bkRlcHRoUGVyQ29tcG9uZW50LCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IsIHNjcmVlbkhh
c0ludmVydGVkQ29sb3JzLCBmYWxzZSwgc2NhbGVGYWN0b3IgfSk7CiAgICAgICAgIAogICAgICAg
ICBpZiAoc2NyZWVuID09IFtQQUw6OmdldFVJU2NyZWVuQ2xhc3MoKSBtYWluU2NyZWVuXSkKICAg
ICAgICAgICAgIHNjcmVlblByb3BlcnRpZXMucHJpbWFyeURpc3BsYXlJRCA9IGRpc3BsYXlJRDsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5N
YWMubW0JKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
bGF0Zm9ybVNjcmVlbk1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTMwLDkgKzEzMCw3IEBAIFNj
cmVlblByb3BlcnRpZXMgY29sbGVjdFNjcmVlblByb3BlcnRpZXMKICAgICAgICAgRmxvYXRSZWN0
IHNjcmVlbkF2YWlsYWJsZVJlY3QgPSBzY3JlZW4udmlzaWJsZUZyYW1lOwogICAgICAgICBzY3Jl
ZW5BdmFpbGFibGVSZWN0LnNldFkoTlNNYXhZKHNjcmVlbi5mcmFtZSkgLSAoc2NyZWVuQXZhaWxh
YmxlUmVjdC55KCkgKyBzY3JlZW5BdmFpbGFibGVSZWN0LmhlaWdodCgpKSk7IC8vIGZsaXAKICAg
ICAgICAgRmxvYXRSZWN0IHNjcmVlblJlY3QgPSBzY3JlZW4uZnJhbWU7Ci0KLSAgICAgICAgUmV0
YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29sb3JTcGFjZSA9IHNjcmVlbi5jb2xvclNwYWNlLkNH
Q29sb3JTcGFjZTsKLQorICAgICAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSB7
IHNjcmVlbi5jb2xvclNwYWNlLkNHQ29sb3JTcGFjZSB9OwogICAgICAgICBpbnQgc2NyZWVuRGVw
dGggPSBOU0JpdHNQZXJQaXhlbEZyb21EZXB0aChzY3JlZW4uZGVwdGgpOwogICAgICAgICBpbnQg
c2NyZWVuRGVwdGhQZXJDb21wb25lbnQgPSBOU0JpdHNQZXJTYW1wbGVGcm9tRGVwdGgoc2NyZWVu
LmRlcHRoKTsKICAgICAgICAgYm9vbCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IgPSBbc2Ny
ZWVuIGNhblJlcHJlc2VudERpc3BsYXlHYW11dDpOU0Rpc3BsYXlHYW11dFAzXTsKQEAgLTE2Myw3
ICsxNjEsNyBAQCBTY3JlZW5Qcm9wZXJ0aWVzIGNvbGxlY3RTY3JlZW5Qcm9wZXJ0aWVzCiAgICAg
ICAgIGlmIChkaXNwbGF5TWFzaykKICAgICAgICAgICAgIGdwdUlEID0gZ3B1SURGb3JEaXNwbGF5
TWFzayhkaXNwbGF5TWFzayk7CiAKLSAgICAgICAgc2NyZWVuUHJvcGVydGllcy5zY3JlZW5EYXRh
TWFwLnNldChkaXNwbGF5SUQsIFNjcmVlbkRhdGEgeyBzY3JlZW5BdmFpbGFibGVSZWN0LCBzY3Jl
ZW5SZWN0LCBjb2xvclNwYWNlLCBzY3JlZW5EZXB0aCwgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQs
IHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciwgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMsIHNj
cmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZSwgc2NyZWVuSXNNb25vY2hyb21lLCBkaXNwbGF5
TWFzaywgZ3B1SUQsIGR5bmFtaWNSYW5nZU1vZGUsIHNjYWxlRmFjdG9yIH0pOworICAgICAgICBz
Y3JlZW5Qcm9wZXJ0aWVzLnNjcmVlbkRhdGFNYXAuc2V0KGRpc3BsYXlJRCwgU2NyZWVuRGF0YSB7
IHNjcmVlbkF2YWlsYWJsZVJlY3QsIHNjcmVlblJlY3QsIFdURk1vdmUoY29sb3JTcGFjZSksIHNj
cmVlbkRlcHRoLCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCwgc2NyZWVuU3VwcG9ydHNFeHRlbmRl
ZENvbG9yLCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycywgc2NyZWVuU3VwcG9ydHNIaWdoRHluYW1p
Y1JhbmdlLCBzY3JlZW5Jc01vbm9jaHJvbWUsIGRpc3BsYXlNYXNrLCBncHVJRCwgZHluYW1pY1Jh
bmdlTW9kZSwgc2NhbGVGYWN0b3IgfSk7CiAKICAgICAgICAgaWYgKCFzY3JlZW5Qcm9wZXJ0aWVz
LnByaW1hcnlEaXNwbGF5SUQpCiAgICAgICAgICAgICBzY3JlZW5Qcm9wZXJ0aWVzLnByaW1hcnlE
aXNwbGF5SUQgPSBkaXNwbGF5SUQ7CkBAIC0zNDAsMTMgKzMzOCwxMyBAQCBOU1NjcmVlbiAqc2Ny
ZWVuKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsCiAgICAgcmV0dXJuIGZpcnN0U2NyZWVuKCk7CiB9
CiAKLUNHQ29sb3JTcGFjZVJlZiBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCogd2lkZ2V0KQorRGVz
dGluYXRpb25Db2xvclNwYWNlIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KiB3aWRnZXQpCiB7CiAg
ICAgaWYgKGF1dG8gZGF0YSA9IHNjcmVlblByb3BlcnRpZXMod2lkZ2V0KSkKLSAgICAgICAgcmV0
dXJuIGRhdGEtPmNvbG9yU3BhY2UuZ2V0KCk7CisgICAgICAgIHJldHVybiBkYXRhLT5jb2xvclNw
YWNlOwogCiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6
Q2FuQ29tbXVuaWNhdGVXaXRoV2luZG93U2VydmVyKSk7Ci0gICAgcmV0dXJuIHNjcmVlbih3aWRn
ZXQpLmNvbG9yU3BhY2UuQ0dDb2xvclNwYWNlOworICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgeyBzY3JlZW4od2lkZ2V0KS5jb2xvclNwYWNlLkNHQ29sb3JTcGFjZSB9OwogfQogCiBi
b29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcihXaWRnZXQqIHdpZGdldCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0JKHJldmlzaW9uIDI3NzkzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtNzI2LDcgKzcyNiw3IEBAIGJvb2wgVGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdXaXRo
VmkKIAogICAgIGlmICh1c2VJbWFnZUJ1ZmZlcikgewogICAgICAgICBOU1JlY3QgaW1hZ2VCdWZm
ZXJEcmF3UmVjdCA9IE5TUmVjdChGbG9hdFJlY3QoYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRo
LCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQo
KSkpOwotICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBh
dGlibGVCdWZmZXIocmVjdC5zaXplKCkgKyAyICogRmxvYXRTaXplKGJ1dHRvbkZvY3VzUmVjdE91
dGxpbmVXaWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoKSwgZGV2aWNlU2NhbGVGYWN0
b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgY29udGV4dCk7CisgICAgICAgIGF1dG8g
aW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihyZWN0LnNp
emUoKSArIDIgKiBGbG9hdFNpemUoYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCBidXR0b25G
b2N1c1JlY3RPdXRsaW5lV2lkdGgpLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCksIGNvbnRleHQpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAg
ICAgICAgICAgcmV0dXJuIG5lZWRzUmVwYWludDsKICAgICAgICAgewpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291
cmNlR1N0cmVhbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuY3Bw
CShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3RyZWFtZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VHU3Ry
ZWFtZXI6OnUKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBh
dXRvIHBpeGVsQnVmZmVyID0gaW1hZ2VCdWZmZXItPmdldFBpeGVsQnVmZmVyKHsgQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6QkdSQTgsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9LCB7IHsgfSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXpl
KCkgfSk7CisgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5nZXRQaXhlbEJ1ZmZl
cih7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6
OkJHUkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9LCB7IHsgfSwgaW1hZ2VCdWZm
ZXItPmxvZ2ljYWxTaXplKCkgfSk7CiAgICAgaWYgKCFwaXhlbEJ1ZmZlcikKICAgICAgICAgcmV0
dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZp
ZGVvU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ1NCw3ICs0NTQsNyBAQCBJbWFnZUJ1ZmZlciogTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2U6OmltCiAgICAgaWYgKG1faW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBtX2lt
YWdlQnVmZmVyLmdldCgpOwogCi0gICAgbV9pbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVh
dGUoY2FwdHVyZVNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIG1faW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNhcHR1cmVTaXplKCksIFJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOwogICAgIGlmICghbV9pbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3BsYXlzdGF0aW9uL1BsYXRm
b3JtU2NyZWVuUGxheVN0YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3BsYXlzdGF0aW9uL1BsYXRmb3JtU2NyZWVuUGxheVN0YXRpb24uY3BwCShyZXZpc2lv
biAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wbGF5c3RhdGlvbi9QbGF0Zm9y
bVNjcmVlblBsYXlTdGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAKKyNpbmNs
dWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogCkBAIC03MSw0ICs3Miw5IEBAIGJvb2wgc2NyZWVu
U3VwcG9ydHNFeHRlbmRlZENvbG9yKFdpZGdldCoKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK0Rl
c3RpbmF0aW9uQ29sb3JTcGFjZSBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCopCit7CisgICAgcmV0
dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGxhdGZvcm1TY3JlZW5X
aW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QbGF0Zm9y
bVNjcmVlbldpbi5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9QbGF0Zm9ybVNjcmVlbldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgog
CisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0
LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKQEAgLTEwNCwx
MiArMTA1LDEwIEBAIEZsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0KFdpZGdldCogd2kKICAg
ICByZXR1cm4gbW9uaXRvckluZm8ucmNXb3JrOwogfQogCi0jaWYgVVNFKENHKQotQ0dDb2xvclNw
YWNlUmVmIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KikKK0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBz
Y3JlZW5Db2xvclNwYWNlKFdpZGdldCopCiB7Ci0gICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlUmVm
KCk7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOwogfQotI2VuZGlm
CiAKIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKFdpZGdldCopCiB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93cGUvUGxhdGZvcm1TY3JlZW5XUEUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dwZS9QbGF0Zm9ybVNjcmVlbldQRS5jcHAJ
KHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dwZS9QbGF0Zm9y
bVNjcmVlbldQRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogCisjaW5jbHVkZSAiRGVz
dGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKQEAgLTgxLDYgKzgyLDExIEBA
IEZsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0KFdpZGdldCogd2kKICAgICByZXR1cm4gc2Ny
ZWVuUmVjdCh3aWRnZXQpOwogfQogCitEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc2NyZWVuQ29sb3JT
cGFjZShXaWRnZXQqKQoreworICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KTsKK30KKwogYm9vbCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IoV2lkZ2V0KikKIHsKICAg
ICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9y
bVhSLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1Y
Ui5oCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0
Zm9ybVhSLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4LDYgKzE4LDcgQEAKICAqLwogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9h
dFBvaW50M0QuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzR0wuaCIKICNpbmNsdWRlICJJbnRS
ZWN0LmgiCkBAIC0zMiw4ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogI2lm
IFBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3JTcGFjZUNHLmg+Ci0jaW5j
bHVkZSA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KKyNpbmNsdWRlICJJT1N1cmZhY2UuaCIKICNpbmNs
dWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgogI2VuZGlmCiAKQEAgLTQ0Niw3ICs0NDYsNyBAQCBP
cHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6TGF5ZXJEYXRhPiBECiAgICAgV1RGOjpNYWNoU2Vu
ZFJpZ2h0IHN1cmZhY2VTZW5kUmlnaHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdXJmYWNl
U2VuZFJpZ2h0KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICBsYXllckRhdGEu
c3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3Zl
KHN1cmZhY2VTZW5kUmlnaHQpLCBXZWJDb3JlOjpzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICBs
YXllckRhdGEuc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdo
dChXVEZNb3ZlKHN1cmZhY2VTZW5kUmlnaHQpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSk7CiAjZW5kaWYKICAgICByZXR1cm4gbGF5ZXJEYXRhOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTEsOSArMTExLDkgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gQ1NTRmlsdGVyOjpidWlsZFJlZgog
ICAgICAgICBlZmZlY3RFbGVtZW50LnNldFN0YW5kYXJkQXR0cmlidXRlcyhlZmZlY3QuZ2V0KCkp
OwogICAgICAgICBpZiAoZWZmZWN0RWxlbWVudC5yZW5kZXJlcigpKSB7CiAjaWYgRU5BQkxFKERF
U1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQotICAgICAgICAgICAgZWZmZWN0LT5z
ZXRPcGVyYXRpbmdDb2xvclNwYWNlKGVmZmVjdEVsZW1lbnQucmVuZGVyZXIoKS0+c3R5bGUoKS5z
dmdTdHlsZSgpLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSA9PSBDb2xvckludGVycG9sYXRp
b246OkxpbmVhclJHQiA/IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQiA6IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CisgICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGlu
Z0NvbG9yU3BhY2UoZWZmZWN0RWxlbWVudC5yZW5kZXJlcigpLT5zdHlsZSgpLnN2Z1N0eWxlKCku
Y29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpID09IENvbG9ySW50ZXJwb2xhdGlvbjo6TGluZWFy
UkdCID8gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCkgOiBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSk7CiAjZWxzZQotICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRp
bmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CisgICAgICAgICAgICBl
ZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCkpOwogI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgYnVpbGRlci0+YWRkKGVmZmVjdEVsZW1l
bnQucmVzdWx0KCksIGVmZmVjdCk7CkBAIC0yOTYsNyArMjk2LDcgQEAgYm9vbCBDU1NGaWx0ZXI6
OmJ1aWxkKFJlbmRlckVsZW1lbnQmIHJlbgogICAgICAgICAgICAgLy8gVW5saWtlIFNWRyBGaWx0
ZXJzIGFuZCBDU1NGaWx0ZXJJbWFnZXMsIGZpbHRlciBmdW5jdGlvbnMgb24gdGhlIGZpbHRlcgog
ICAgICAgICAgICAgLy8gcHJvcGVydHkgYXBwbGllZCBoZXJlIHNob3VsZCBub3QgY2xpcCB0byB0
aGVpciBwcmltaXRpdmUgc3VicmVnaW9ucy4KICAgICAgICAgICAgIGVmZmVjdC0+c2V0Q2xpcHNU
b0JvdW5kcyhjb25zdW1lciA9PSBGaWx0ZXJDb25zdW1lcjo6RmlsdGVyRnVuY3Rpb24pOwotICAg
ICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQik7CisgICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2Uo
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBpZiAoZmlsdGVyT3BlcmF0aW9uLnR5cGUoKSAhPSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5D
RSkgewogICAgICAgICAgICAgICAgIGVmZmVjdC0+aW5wdXRFZmZlY3RzKCkgPSB7IFdURk1vdmUo
cHJldmlvdXNFZmZlY3QpIH07CkBAIC0zNDQsMTEgKzM0NCwxMSBAQCB2b2lkIENTU0ZpbHRlcjo6
YWxsb2NhdGVCYWNraW5nU3RvcmVJZk5lCiAgICAgSW50U2l6ZSBsb2dpY2FsU2l6ZSB7IG1fc291
cmNlRHJhd2luZ1JlZ2lvbi5zaXplKCkgfTsKICAgICBpZiAoIXNvdXJjZUltYWdlKCkgfHwgc291
cmNlSW1hZ2UoKS0+bG9naWNhbFNpemUoKSAhPSBsb2dpY2FsU2l6ZSkgewogI2lmIFVTRShESVJF
Q1QyRCkKLSAgICAgICAgc2V0U291cmNlSW1hZ2UoSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2Fs
U2l6ZSwgcmVuZGVyaW5nTW9kZSgpLCAmdGFyZ2V0Q29udGV4dCwgZmlsdGVyU2NhbGUoKSwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpKTsKKyAgICAgICAg
c2V0U291cmNlSW1hZ2UoSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgcmVuZGVyaW5n
TW9kZSgpLCAmdGFyZ2V0Q29udGV4dCwgZmlsdGVyU2NhbGUoKSwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCkpOwogI2Vsc2UKICAgICAgICAgVU5VU0VE
X1BBUkFNKHRhcmdldENvbnRleHQpOwogICAgICAgICBSZW5kZXJpbmdNb2RlIG1vZGUgPSBtX2Zp
bHRlclJlbmRlcmVyID8gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQgOiByZW5kZXJpbmdNb2Rl
KCk7Ci0gICAgICAgIHNldFNvdXJjZUltYWdlKEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNp
emUsIG1vZGUsIGZpbHRlclNjYWxlKCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KSk7CisgICAgICAgIHNldFNvdXJjZUltYWdlKEltYWdlQnVmZmVyOjpj
cmVhdGUobG9naWNhbFNpemUsIG1vZGUsIGZpbHRlclNjYWxlKCksIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpKTsKICNlbmRpZgogICAgIH0KICAgICBt
X2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQgPSB0cnVlOwpAQCAtMzgyLDEyICszODIsMTIgQEAgdm9p
ZCBDU1NGaWx0ZXI6OmFwcGx5KCkKICAgICBpZiAobV9maWx0ZXJSZW5kZXJlcikgewogICAgICAg
ICBtX2ZpbHRlclJlbmRlcmVyLT5hcHBseUVmZmVjdHMoZWZmZWN0KTsKICAgICAgICAgaWYgKG1f
ZmlsdGVyUmVuZGVyZXItPmhhc1Jlc3VsdCgpKSB7Ci0gICAgICAgICAgICBlZmZlY3QudHJhbnNm
b3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOworICAgICAg
ICAgICAgZWZmZWN0LnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogICAg
IGVmZmVjdC5hcHBseSgpOwotICAgIGVmZmVjdC50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQik7CisgICAgZWZmZWN0LnRyYW5zZm9ybVJlc3VsdENv
bG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogfQogCiBMYXlvdXRSZWN0
IENTU0ZpbHRlcjo6Y29tcHV0ZVNvdXJjZUltYWdlUmVjdEZvckRpcnR5UmVjdChjb25zdCBMYXlv
dXRSZWN0JiBmaWx0ZXJCb3hSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3Niw3ICs4NzYsNyBAQCB2b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllCiAgICAgICAgIG1hc2tSZWN0Lmlu
dGVyc2VjdChzbmFwcGVkSW50UmVjdChwYWludEluZm8ucmVjdCkpOwogCiAgICAgICAgIC8vIE5v
dyBjcmVhdGUgdGhlIG1hc2suCi0gICAgICAgIG1hc2tJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVh
dGVDb21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNpemUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCLCBjb250ZXh0KTsKKyAgICAgICAgbWFza0ltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZUNvbXBhdGlibGVCdWZmZXIobWFza1JlY3Quc2l6ZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgY29udGV4dCk7CiAgICAgICAgIGlmICghbWFza0ltYWdlKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBwYWludE1hc2tGb3JUZXh0RmlsbEJveChtYXNrSW1hZ2UuZ2V0KCks
IG1hc2tSZWN0LCBib3gsIHNjcm9sbGVkUGFpbnRSZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCShyZXZpc2lvbiAyNzc5Mzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzI2Nyw3ICszMjY3LDcgQEAgc3RhdGljIFJlZlB0cjxQYXR0ZXJuPiBw
YXR0ZXJuRm9yRGVzY3JpcAogewogICAgIGNvbnN0IEZsb2F0U2l6ZSB0aWxlU2l6ZSB7IDMyLCAx
OCB9OwogCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRp
YmxlQnVmZmVyKHRpbGVTaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGRlc3RDb250
ZXh0KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIodGlsZVNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBkZXN0Q29u
dGV4dCk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0JKHJldmlz
aW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMTk4MywxMSArMTk4MywxMSBAQCB2b2lkIFJlbmRlclRoZW1l
SU9TOjpwYWludFN5c3RlbVByZXZpZXdCCiAgICAgSU9TdXJmYWNlUmVmIHN1cmZhY2U7CiAgICAg
aWYgKHVzZVNtYWxsQmFkZ2UpIHsKICAgICAgICAgaWYgKCFtX3NtYWxsQmFkZ2VTdXJmYWNlKQot
ICAgICAgICAgICAgbV9zbWFsbEJhZGdlU3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKHsgc21h
bGxCYWRnZURpbWVuc2lvbiwgc21hbGxCYWRnZURpbWVuc2lvbiB9LCBzUkdCQ29sb3JTcGFjZVJl
ZigpKTsKKyAgICAgICAgICAgIG1fc21hbGxCYWRnZVN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0
ZSh7IHNtYWxsQmFkZ2VEaW1lbnNpb24sIHNtYWxsQmFkZ2VEaW1lbnNpb24gfSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgICAgICBzdXJmYWNlID0gbV9zbWFsbEJhZGdlU3Vy
ZmFjZS0+c3VyZmFjZSgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICghbV9sYXJnZUJhZGdl
U3VyZmFjZSkKLSAgICAgICAgICAgIG1fbGFyZ2VCYWRnZVN1cmZhY2UgPSBJT1N1cmZhY2U6OmNy
ZWF0ZSh7IGxhcmdlQmFkZ2VEaW1lbnNpb24sIGxhcmdlQmFkZ2VEaW1lbnNpb24gfSwgc1JHQkNv
bG9yU3BhY2VSZWYoKSk7CisgICAgICAgICAgICBtX2xhcmdlQmFkZ2VTdXJmYWNlID0gSU9TdXJm
YWNlOjpjcmVhdGUoeyBsYXJnZUJhZGdlRGltZW5zaW9uLCBsYXJnZUJhZGdlRGltZW5zaW9uIH0s
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICAgICAgc3VyZmFjZSA9IG1fbGFy
Z2VCYWRnZVN1cmZhY2UtPnN1cmZhY2UoKTsKICAgICB9CiAgICAgW21fY2lDb250ZXh0LmdldCgp
IHJlbmRlcjp0cmFuc2xhdGVkSW1hZ2UgdG9JT1N1cmZhY2U6c3VyZmFjZSBib3VuZHM6YmFkZ2VS
ZWN0IGNvbG9yU3BhY2U6c1JHQkNvbG9yU3BhY2VSZWYoKV07CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTEzMDksNyArMTMwOSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50UHJvZ3Jlc3NCYXIo
Y28KICAgICBjb25zdCBhdXRvJiByZW5kZXJQcm9ncmVzcyA9IGRvd25jYXN0PFJlbmRlclByb2dy
ZXNzPihyZW5kZXJPYmplY3QpOwogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gcmVuZGVy
T2JqZWN0LmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAgICBib29sIGlzSW5kZXRl
cm1pbmF0ZSA9IHJlbmRlclByb2dyZXNzLnBvc2l0aW9uKCkgPCAwOwotICAgIGF1dG8gaW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihpbmZsYXRlZFJlY3Qu
c2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBw
YWludEluZm8uY29udGV4dCgpKTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoaW5mbGF0ZWRSZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVG
YWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBwYWludEluZm8uY29udGV4dCgp
KTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAJKHJldmlzaW9uIDI3Nzkz
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xODEsNyArMTgxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6
Y3JlYXRlUmFzdAogICAgIEludFJlY3QgbWFyZ2luUmVjdCA9IHNuYXBwZWRJbnRSZWN0KG1hcmdp
blIpOwogICAgIGF1dG8gaW50ZXJ2YWxzID0gbWFrZVVuaXF1ZTxSYXN0ZXJTaGFwZUludGVydmFs
cz4obWFyZ2luUmVjdC5oZWlnaHQoKSwgLW1hcmdpblJlY3QueSgpKTsKICAgICAvLyBGSVhNRSAo
MTQ5NDIwKTogVGhpcyBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlvbmFsbHkgdW5hY2Nl
bGVyYXRlZC4KLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFn
ZVJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CiAKICAgICBhdXRvIGNyZWF0ZVNoYXBlID0gWyZdKCkgewogICAgICAg
ICBhdXRvIHJhc3RlclNoYXBlID0gbWFrZVVuaXF1ZTxSYXN0ZXJTaGFwZT4oV1RGTW92ZShpbnRl
cnZhbHMpLCBtYXJnaW5SZWN0LnNpemUoKSk7CkBAIC0xOTcsNyArMTk3LDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlUmFzdAogICAgIGlmIChpbWFnZSkKICAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LmRyYXdJbWFnZSgqaW1hZ2UsIEludFJlY3QoSW50UG9pbnQoKSwgaW1h
Z2VSZWN0LnNpemUoKSkpOwogCi0gICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1h
dCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6
OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9OwogICAgIGF1dG8gcGl4ZWxC
dWZmZXIgPSBpbWFnZUJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoZm9ybWF0LCB7IEludFBvaW50KCks
IGltYWdlUmVjdC5zaXplKCkgfSk7CiAgICAgCiAgICAgLy8gV2UgY291bGQgZ2V0IHRvIGEgdmFs
dWUgd2hlcmUgUGl4ZWxCdWZmZXIgY291bGQgYmUgbnVsbG9wdC4gQSBjYXNlIHdoZXJlIEltYWdl
UmVjdC5zaXplKCkgaXMgaHVnZSwgUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZQpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VD
bGlwcGVyLmNwcAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYs
NyArMTQ2LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcAogICAg
IEFmZmluZVRyYW5zZm9ybSBhYnNvbHV0ZVRyYW5zZm9ybSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6
OmNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RDb29yZGluYXRlU3lzdGVtKHJlbmRl
cmVyKTsKICAgICBpZiAoIWNsaXBwZXJEYXRhLmlzVmFsaWRGb3JHZW9tZXRyeShvYmplY3RCb3Vu
ZGluZ0JveCwgYWJzb2x1dGVUcmFuc2Zvcm0pKSB7CiAgICAgICAgIC8vIEZJWE1FICgxNDk0Njkp
OiBUaGlzIGltYWdlIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2Vs
ZXJhdGVkLiBNYWtpbmcgaXQgbWF0Y2ggdGhlIGNvbnRleHQgYnJlYWtzIG5lc3RlZCBjbGlwcGlu
ZywgdGhvdWdoLgotICAgICAgICBhdXRvIG1hc2tJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6
OmNyZWF0ZUltYWdlQnVmZmVyKG9iamVjdEJvdW5kaW5nQm94LCBhYnNvbHV0ZVRyYW5zZm9ybSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
LCAmY29udGV4dCk7CisgICAgICAgIGF1dG8gbWFza0ltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIob2JqZWN0Qm91bmRpbmdCb3gsIGFic29sdXRlVHJhbnNmb3Jt
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVy
YXRlZCwgJmNvbnRleHQpOwogICAgICAgICBpZiAoIW1hc2tJbWFnZSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsOSArMTA0LDkgQEAgc3RkOjp1bmlxdWVfcHRyPFNWR0Zp
bHRlckJ1aWxkZXI+IFJlbmRlcgogICAgICAgICBlZmZlY3QtPnNldEVmZmVjdEJvdW5kYXJpZXMo
U1ZHTGVuZ3RoQ29udGV4dDo6cmVzb2x2ZVJlY3RhbmdsZTxTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXM+KCZlbGVtZW50LCBmaWx0ZXJFbGVtZW50KCkucHJpbWl0aXZlVW5pdHMo
KSwgdGFyZ2V0Qm91bmRpbmdCb3gpKTsKICAgICAgICAgaWYgKGVsZW1lbnQucmVuZGVyZXIoKSkg
ewogI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICAg
ICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShlbGVtZW50LnJlbmRlcmVyKCkt
PnN0eWxlKCkuc3ZnU3R5bGUoKS5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzKCkgPT0gQ29sb3JJ
bnRlcnBvbGF0aW9uOjpMaW5lYXJSR0IgPyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNS
R0IgOiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOworICAgICAgICAgICAgZWZmZWN0LT5z
ZXRPcGVyYXRpbmdDb2xvclNwYWNlKGVsZW1lbnQucmVuZGVyZXIoKS0+c3R5bGUoKS5zdmdTdHls
ZSgpLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSA9PSBDb2xvckludGVycG9sYXRpb246Okxp
bmVhclJHQiA/IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigpIDogRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCkpOwogI2Vsc2UKLSAgICAgICAgICAgIGVmZmVjdC0+c2V0T3Bl
cmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOworICAgICAgICAg
ICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpKTsKICNlbmRpZgogICAgICAgICB9CiAgICAgICAgIGJ1aWxkZXItPmFkZChlbGVtZW50
LnJlc3VsdCgpLCBXVEZNb3ZlKGVmZmVjdCkpOwpAQCAtMTk4LDkgKzE5OCw5IEBAIGJvb2wgUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3UKIAogICAgIGF1dG8gcmVuZGVyaW5nTW9k
ZSA9IHJlbmRlcmVyLnNldHRpbmdzKCkuYWNjZWxlcmF0ZWRGaWx0ZXJzRW5hYmxlZCgpID8gUmVu
ZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQgOiBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOwog
I2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICBhdXRv
IGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0I7CisgICAgYXV0
byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCk7CiAjZWxz
ZQotICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjsKKyAg
ICBhdXRvIGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKICNlbmRp
ZgogICAgIGF1dG8gc291cmNlR3JhcGhpYyA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUlt
YWdlQnVmZmVyKGZpbHRlckRhdGEtPmRyYXdpbmdSZWdpb24sIGVmZmVjdGl2ZVRyYW5zZm9ybSwg
Y29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZSwgY29udGV4dCk7CiAgICAgaWYgKCFzb3VyY2VHcmFw
aGljKSB7CkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6
cG9zdEFwcGx5UgogICAgICAgICAgICAgZmlsdGVyRGF0YS5zdGF0ZSA9IEZpbHRlckRhdGE6OkFw
cGx5aW5nOwogICAgICAgICAgICAgbGFzdEVmZmVjdC0+YXBwbHkoKTsKICAgICAgICAgICAgIGxh
c3RFZmZlY3QtPmNvcnJlY3RGaWx0ZXJSZXN1bHRJZk5lZWRlZCgpOwotICAgICAgICAgICAgbGFz
dEVmZmVjdC0+dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IpOworICAgICAgICAgICAgbGFzdEVmZmVjdC0+dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFj
ZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAgIH0KICAgICAgICAgZmls
dGVyRGF0YS5zdGF0ZSA9IEZpbHRlckRhdGE6OkJ1aWx0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVu
dC5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYw
LDcgQEAgc3RhdGljIGlubGluZSBib29sIGNyZWF0ZU1hc2tBbmRTd2FwQ29udAogICAgIEFmZmlu
ZVRyYW5zZm9ybSBhYnNvbHV0ZVRyYW5zZm9ybSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNhbGN1
bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RDb29yZGluYXRlU3lzdGVtKCp0ZXh0Um9vdEJs
b2NrKTsKICAgICBGbG9hdFJlY3QgcmVwYWludFJlY3QgPSB0ZXh0Um9vdEJsb2NrLT5yZXBhaW50
UmVjdEluTG9jYWxDb29yZGluYXRlcygpOwogCi0gICAgYXV0byBtYXNrSW1hZ2UgPSBTVkdSZW5k
ZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihyZXBhaW50UmVjdCwgYWJzb2x1dGVUcmFu
c2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgY29udGV4dC0+cmVuZGVyaW5nTW9k
ZSgpKTsKKyAgICBhdXRvIG1hc2tJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUlt
YWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCksIGNvbnRleHQtPnJlbmRlcmluZ01vZGUoKSk7CiAgICAgaWYgKCFtYXNr
SW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAJKHJl
dmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VNYXNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw5ICs3MSw5IEBAIGJvb2wg
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3UKICAgICAgICAgY29uc3QgU1ZHUmVu
ZGVyU3R5bGUmIHN2Z1N0eWxlID0gc3R5bGUoKS5zdmdTdHlsZSgpOwogCiAjaWYgRU5BQkxFKERF
U1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQotICAgICAgICBhdXRvIGNvbG9yU3Bh
Y2UgPSBzdmdTdHlsZS5jb2xvckludGVycG9sYXRpb24oKSA9PSBDb2xvckludGVycG9sYXRpb246
OkxpbmVhclJHQiA/IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQiA6IERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQjsKKyAgICAgICAgYXV0byBjb2xvclNwYWNlID0gc3ZnU3R5bGUu
Y29sb3JJbnRlcnBvbGF0aW9uKCkgPT0gQ29sb3JJbnRlcnBvbGF0aW9uOjpMaW5lYXJSR0IgPyBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKSA6IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpOwogI2Vsc2UKLSAgICAgICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCOworICAgICAgICBhdXRvIGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKTsKICNlbmRpZgogCiAgICAgICAgIC8vIEZJWE1FICgxNDk0NzApOiBU
aGlzIGltYWdlIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJh
dGVkLiBNYWtpbmcgaXQgbWF0Y2ggdGhlIGNvbnRleHQgYnJlYWtzIGFscGhhIG1hc2tpbmcsIHRo
b3VnaC4KQEAgLTkyLDcgKzkyLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBw
bHlSZXNvdQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFJlbmRlclNWR1Jlc291cmNlTWFz
a2VyOjpkcmF3Q29udGVudEludG9NYXNrSW1hZ2UoTWFza2VyRGF0YSogbWFza2VyRGF0YSwgRGVz
dGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbmRlck9iamVjdCogb2JqZWN0KQorYm9v
bCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6ZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdlKE1hc2tl
ckRhdGEqIG1hc2tlckRhdGEsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFj
ZSwgUmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0JiBtYXNrSW1h
Z2VDb250ZXh0ID0gbWFza2VyRGF0YS0+bWFza0ltYWdlLT5jb250ZXh0KCk7CiAKQEAgLTExOSw3
ICsxMTksNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpkcmF3Q29udGVuCiAgICAg
fQogCiAjaWYgIVVTRShDRykKLSAgICBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UtPnRyYW5zZm9ybUNv
bG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBjb2xvclNwYWNlKTsKKyAgICBt
YXNrZXJEYXRhLT5tYXNrSW1hZ2UtPnRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCksIGNvbG9yU3BhY2UpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29s
b3JTcGFjZSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgJKHJldmlzaW9uIDI3NzkzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgY2hh
ciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJj
ZU1hc2tlciI7IH0KIAotICAgIGJvb2wgZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdlKE1hc2tlckRh
dGEqLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFJlbmRlck9iamVjdCopOworICAgIGJvb2wgZHJh
d0NvbnRlbnRJbnRvTWFza0ltYWdlKE1hc2tlckRhdGEqLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmLCBSZW5kZXJPYmplY3QqKTsKICAgICB2b2lkIGNhbGN1bGF0ZU1hc2tDb250ZW50UmVw
YWludFJlY3QoKTsKIAogICAgIEZsb2F0UmVjdCBtX21hc2tDb250ZW50Qm91bmRhcmllczsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJu
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlUGF0dGVybi5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjUzLDcgKzI1Myw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWls
ZFRpbGUKIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpjcmVh
dGVUaWxlSW1hZ2UoY29uc3QgUGF0dGVybkF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIGNvbnN0IEZs
b2F0UmVjdCYgdGlsZUJvdW5kYXJpZXMsIGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVUaWxlQm91
bmRhcmllcywgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0aWxlSW1hZ2VUcmFuc2Zvcm0sIEZsb2F0
UmVjdCYgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMsIFJlbmRlcmluZ01vZGUgcmVuZGVy
aW5nTW9kZSkgY29uc3QKIHsKICAgICBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcyA9IElt
YWdlQnVmZmVyOjpjbGFtcGVkUmVjdChhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzKTsKLSAgICBhdXRv
IHRpbGVJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGFic29s
dXRlVGlsZUJvdW5kYXJpZXMsIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IsIHJlbmRlcmluZ01vZGUpOworICAgIGF1dG8gdGlsZUltYWdl
ID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoYWJzb2x1dGVUaWxlQm91
bmRhcmllcywgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpLCByZW5kZXJpbmdNb2RlKTsKICAgICBpZiAoIXRpbGVJbWFnZSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMjc3OTM5KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjM2LDcgKzIzNiw3IEBAIEFmZmluZVRyYW5zZm9ybSBTVkdSZW5kZXJp
bmdDb250ZXh0OjpjYWwKICAgICByZXR1cm4gYWJzb2x1dGVUcmFuc2Zvcm07CiB9CiAKLVJlZlB0
cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRl
VHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9k
ZSByZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCitSZWZQdHI8
SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRy
YW5zZm9ybSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBSZW5kZXJp
bmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKIHsK
ICAgICBJbnRSZWN0IHBhaW50UmVjdCA9IGNhbGN1bGF0ZUltYWdlQnVmZmVyUmVjdCh0YXJnZXRS
ZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSk7CiAgICAgLy8gRG9uJ3QgY3JlYXRlIGVtcHR5IEltYWdl
QnVmZmVycy4KQEAgLTI2NCw3ICsyNjQsNyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRl
cmluZ0NvbnRleHQ6CiAgICAgcmV0dXJuIGltYWdlQnVmZmVyOwogfQogCi1SZWZQdHI8SW1hZ2VC
dWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwgRGVzdGluYXRp
b25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29u
c3QgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBTVkdSZW5k
ZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZFJlY3QsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgSW50U2l6ZSBjbGFtcGVkU2l6ZSA9IHJvdW5k
ZWRJbnRTaXplKGNsYW1wZWRSZWN0LnNpemUoKSk7CiAgICAgRmxvYXRTaXplIHVuY2xhbXBlZFNp
emUgPSByb3VuZGVkSW50U2l6ZSh0YXJnZXRSZWN0LnNpemUoKSk7CkBAIC0zNTAsNyArMzUwLDcg
QEAgYm9vbCBTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJGb3JlZ3JvdQogCiAgICAgLy8gQ3Jl
YXRlIGEgbmV3IGJ1ZmZlciBhbmQgcGFpbnQgdGhlIGZvcmVncm91bmQgaW50byBpdC4KICAgICBp
ZiAoIWltYWdlQnVmZmVyKSB7Ci0gICAgICAgIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGJvdW5kaW5nQm94LnNpemUoKSks
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgbV9wYWludEluZm8tPmNvbnRleHQoKSk7Cisg
ICAgICAgIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
ZXhwYW5kZWRJbnRTaXplKGJvdW5kaW5nQm94LnNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpLCBtX3BhaW50SW5mby0+Y29udGV4dCgpKTsKICAgICAgICAgaWYgKCFpbWFnZUJ1
ZmZlcikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaAkocmV2aXNp
b24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdD
b250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDggKzYwLDggQEAgcHVibGljOgogICAgIHZv
aWQgcHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChSZW5kZXJFbGVtZW50JiwgUGFpbnRJbmZvJiwg
TmVlZHNHcmFwaGljc0NvbnRleHRTYXZlID0gRG9udFNhdmVHcmFwaGljc0NvbnRleHQpOwogICAg
IGJvb2wgaXNSZW5kZXJpbmdQcmVwYXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nRmxh
Z3MgJiBSZW5kZXJpbmdQcmVwYXJlZDsgfQogCi0gICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZl
cj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Us
IFJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKTsKLSAgICBz
dGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJl
Y3QmIHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZFJlY3QsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxw
dHIpOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNv
bnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0
ZVRyYW5zZm9ybSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUmVuZGVyaW5nTW9kZSwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpOworICAgIHN0YXRpYyBSZWZQdHI8SW1h
Z2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkUmVjdCwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiwgUmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiA9IG51bGxwdHIpOwogCiAg
ICAgc3RhdGljIHZvaWQgcmVuZGVyU3VidHJlZVRvQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBS
ZW5kZXJFbGVtZW50JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CiAgICAgc3RhdGljIHZvaWQg
Y2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBSZWZQdHI8
SW1hZ2VCdWZmZXI+JiwgYm9vbCBzYWZlVG9DbGVhcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNyw3ICsy
MTcsNyBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IFNWR0ltYWdlOjpuYXRpdmVJbWFnCiAgICAgaWYg
KCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBpbWFnZUJ1ZmZl
ciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJh
dGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIApAQCAtMjQ3LDcgKzI0Nyw3IEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdQ
YXR0ZXJuRm9yQ29udGFpbmVyKEcKICAgICBGbG9hdFJlY3QgaW1hZ2VCdWZmZXJTaXplID0gem9v
bWVkQ29udGFpbmVyUmVjdDsKICAgICBpbWFnZUJ1ZmZlclNpemUuc2NhbGUoaW1hZ2VCdWZmZXJT
Y2FsZS53aWR0aCgpLCBpbWFnZUJ1ZmZlclNjYWxlLmhlaWdodCgpKTsKIAotICAgIGF1dG8gYnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXpl
KGltYWdlQnVmZmVyU2l6ZS5zaXplKCkpLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Is
IGNvbnRleHQpOworICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGltYWdlQnVmZmVyU2l6ZS5zaXplKCkpLCAxLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY29udGV4dCk7CiAgICAgaWYgKCFidWZmZXIpIC8v
IEZhaWxlZCB0byBhbGxvY2F0ZSBidWZmZXIuCiAgICAgICAgIHJldHVybjsKICAgICBkcmF3Rm9y
Q29udGFpbmVyKGJ1ZmZlci0+Y29udGV4dCgpLCBjb250YWluZXJTaXplLCBjb250YWluZXJab29t
LCBpbml0aWFsRnJhZ21lbnRVUkwsIGltYWdlQnVmZmVyU2l6ZSwgem9vbWVkQ29udGFpbmVyUmVj
dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRUltYWdlLmNwcAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDggKzkz
LDggQEAgdm9pZCBGRUltYWdlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIGlmICghbV9p
bWFnZSAmJiAhcmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEZFSW1hZ2UgcmVz
dWx0cyBhcmUgYWx3YXlzIGluIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQgotICAgIHNldFJl
c3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKKyAgICAvLyBGRUlt
YWdlIHJlc3VsdHMgYXJlIGFsd2F5cyBpbiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKQor
ICAgIHNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwog
CiAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQo
KTsKICAgICBpZiAoIXJlc3VsdEltYWdlKQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3NzkzOSkK
KysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsOTcg
QEAKKzIwMjEtMDUtMjIgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAg
IENvbnZlcnQgRGVzdGluYXRpb25Db2xvclNwYWNlIGZyb20gYW4gZW51bSB0byBjbGFzcyB3cmFw
cGluZyBhIHBsYXRmb3JtIGNvbG9yIHNwYWNlIChDR0NvbG9yU3BhY2VSZWYgZm9yIENHIHBvcnRz
LCBldGMuKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI2MTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgLSBV
cGRhdGUgSW1hZ2VCdWZmZXIgc3ViY2xhc3Mgc2lnbmF0dXJlcyB0byB1c2UgImNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYiIHRvCisgICAgICAgICAgY29uZm9ybSB0byB0aGUgYmFzZSBjbGFz
cy4KKyAgICAgICAgLSBSZXBsYWNlIENvbG9yU3BhY2VEYXRhIHdpdGggT3B0aW9uYWw8RGVzdGlu
YXRpb25Db2xvclNwYWNlPi4gTm8gcmVhc29uIHRvIGhhdmUgdHdvCisgICAgICAgICAgdHlwZXMg
dGhhdCBhcmUgdGhlIHNhbWUuCisgICAgICAgIC0gR2l2ZSBhbGwgcG9ydHMgYSBjb2xvciBzcGFj
ZSBjb25maWd1cmF0aW9uIGZvciBTaGFyZWFibGVCaXRtYXAgbm93IHRoYXQgdGhlcmUgaXMKKyAg
ICAgICAgICBhIGNvbW1vbiBjbGFzcyBmb3IgcmVwcmVzZW50aW5nIGNvbG9yIHNwYWNlLgorICAg
ICAgICAtIFVwZGF0ZSBEaXNwbGF5TGlzdCBkZWNvZGluZyB0byBhY2NvdW50IGZvciBCZWdpbkNs
aXBUb0RyYXdpbmdDb21tYW5kcyBhbmQgR2V0UGl4ZWxCdWZmZXIKKyAgICAgICAgICBubyBsb25n
ZXIgYmVpbmcgaW5saW5lYWJsZSBkdWUgdG8gbm93IGhhdmluZyBub24tdHJpdmlhbCBkZXN0cnVj
dG9ycyBkdWUgdG8gCisgICAgICAgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIG1lbWJlci4KKwor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAq
IEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAq
IEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Y3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
UHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFW
RlByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjpzd2FwVG9WYWxpZEZyb250QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmU6OmFwcGx5QmFja2luZ1N0b3JlVG9MYXllcik6CisgICAgICAg
ICogU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJs
ZUJpdG1hcDo6Q29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
U2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJl
ZC9TaGFyZWFibGVCaXRtYXAuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hh
cmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y29sb3JTcGFj
ZSk6CisgICAgICAgICogU2hhcmVkL21hYy9Db2xvclNwYWNlRGF0YS5oOiBSZW1vdmVkLgorICAg
ICAgICAqIFNoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEubW06IFJlbW92ZWQuCisgICAgICAgICog
U291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJ
T1MubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfdGFrZVZpZXdTbmFwc2hvdF0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX3NuYXBzaG90UmVjdDppbnRvSW1hZ2VPZldpZHRoOmNvbXBsZXRpb25I
YW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OmNvbG9yU3BhY2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVI
b3N0Lm1tOgorICAgICAgICAoV2ViS2l0OjpyZWN1cnNpdmVseU1hcElPU3VyZmFjZUJhY2tpbmdT
dG9yZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFj
L1BhZ2VDbGllbnRJbXBsTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6
Y29sb3JTcGFjZSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYVByb3h5Lm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNvbG9yU3BhY2UpOgorICAg
ICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29u
ZmlndXJhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZm
ZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRjo6Y3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAoV2Vi
S2l0OjpQREZQbHVnaW46OlBERlBsdWdpbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViS2l0Ojpj
cmVhdGVTaGFyZWFibGVCaXRtYXApOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50
OjpjcmVhdGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0
RHJhZ0ltYWdlVG9CaXRtYXApOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5n
QXJlYS5oOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYTo6c2V0Q29sb3JTcGFjZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
c25hcHNob3RPcHRpb25zVG9CaXRtYXBDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5t
bToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OlRpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhKToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWE6OnNldENvbG9yU3BhY2UpOgorCiAyMDIxLTA1LTIzICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIENoZWNrZWRMb2NrIGluIGV2
ZW4gbW9yZSBwbGFjZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDI3Nzkz
OSkKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MjAzLDcgKzIwMyw2IEBAIFNoYXJlZC9pb3MvV2ViVG91Y2hFdmVudElPUy5jcHAKIAogU2hhcmVk
L21hYy9BdXhpbGlhcnlQcm9jZXNzTWFjLm1tCiBTaGFyZWQvbWFjL0NvZGVTaWduaW5nLm1tCi1T
aGFyZWQvbWFjL0NvbG9yU3BhY2VEYXRhLm1tCiBTaGFyZWQvbWFjL0hhbmdEZXRlY3Rpb25EaXNh
Ymxlck1hYy5tbQogU2hhcmVkL21hYy9OYXRpdmVXZWJHZXN0dXJlRXZlbnRNYWMubW0KIFNoYXJl
ZC9tYWMvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudE1hYy5tbQpJbmRleDogU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgJKHJldmlz
aW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFJlbW90
ZUltYWdlQnVmZmVyIDogcHVibGljIFdlYkNvcmUKICAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFn
ZUJ1ZmZlcjo6cHV0UGl4ZWxCdWZmZXI7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgYXV0byBjcmVh
dGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUs
IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJDb3JlOjpQaXhl
bEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZCYgcmVtb3RlUmVuZGVy
aW5nQmFja2VuZCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcikKKyAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFdlYkNvcmU6
OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQg
cGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQmIHJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpCiAgICAgewogICAgICAgICByZXR1cm4gQmFzZUNvbmNyZXRlSW1hZ2VCdWZm
ZXI6OnRlbXBsYXRlIGNyZWF0ZTxSZW1vdGVJbWFnZUJ1ZmZlcj4oc2l6ZSwgcmVzb2x1dGlvblNj
YWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCwgbnVsbHB0ciwgcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZCwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuY3BwCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRpZEZsdXNo
KERpCiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpEaWRG
bHVzaChmbHVzaElkZW50aWZpZXIsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciksIG1fcmVu
ZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFJlbmRl
cmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCit2b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYg
bG9naWNhbFNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0IHBpeGVsRm9ybWF0LCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAg
IEFTU0VSVChyZW5kZXJpbmdNb2RlID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIHx8IHJl
bmRlcmluZ01vZGUgPT0gUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCk7CkBAIC00OTUsNiAr
NDk1LDggQEAgT3B0aW9uYWw8RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVQogICAgICAq
IFNlZSB0aGUgY29tbWVudCBhdCB0aGUgdG9wIG9mIERpc3BsYXlMaXN0SXRlbXMuaCBmb3Igd2h5
LiAqLwogCiAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgorICAgICAgICByZXR1cm4gZGVjb2RlQW5k
Q3JlYXRlPERpc3BsYXlMaXN0OjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oZGF0YSwgbGVu
Z3RoLCBoYW5kbGVMb2NhdGlvbik7CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNs
aXBPdXRUb1BhdGg6CiAgICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6
OkNsaXBPdXRUb1BhdGg+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwogICAgIGNhc2Ug
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwUGF0aDoKQEAgLTUyMSw2ICs1MjMsOCBAQCBPcHRp
b25hbDxEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VCiAgICAgICAgIHJldHVybiBkZWNv
ZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPihkYXRhLCBs
ZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
RmlsbFJvdW5kZWRSZWN0OgogICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlM
aXN0OjpGaWxsUm91bmRlZFJlY3Q+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOworICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpHZXRQaXhlbEJ1ZmZlcjoKKyAgICAgICAgcmV0
dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6R2V0UGl4ZWxCdWZmZXI+KGRhdGEsIGxl
bmd0aCwgaGFuZGxlTG9jYXRpb24pOwogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpQ
dXRQaXhlbEJ1ZmZlcjoKICAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlz
dDo6UHV0UGl4ZWxCdWZmZXI+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwogICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpTZXRMaW5lRGFzaDoKQEAgLTU0MCw3ICs1NDQsNiBA
QCBPcHRpb25hbDxEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4gV0FSTl9VCiAgICAgY2FzZSBEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkNsaXA6CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkNsaXBPdXQ6CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVm
ZmVyOgotICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdD
b21tYW5kczoKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzOgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNU
TToKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1h
cmtlcjoKQEAgLTU4MSw3ICs1ODQsNiBAQCBPcHRpb25hbDxEaXNwbGF5TGlzdDo6SXRlbUhhbmRs
ZT4gV0FSTl9VCiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZVJlY3Q6CiAg
ICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlN0cm9rZUxpbmU6CiAgICAgY2FzZSBEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OlRyYW5zbGF0ZToKLSAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6R2V0UGl4ZWxCdWZmZXI6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
aAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTQgKzQ0LDE4
IEBACiAKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCiBuYW1lc3BhY2UgRGlzcGxheUxpc3Qgewog
Y2xhc3MgRGlzcGxheUxpc3Q7CiBjbGFzcyBJdGVtOwogfQorCitjbGFzcyBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U7CiBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBOYXRpdmVJbWFnZTsKLWVudW0gY2xh
c3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDogdWludDhfdDsKKwogZW51bSBjbGFzcyBSZW5kZXJp
bmdNb2RlIDogYm9vbDsKKwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEyMSw3ICsxMjUs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYsIFVuaXF1ZVJlZjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7
CiAKICAgICAvLyBNZXNzYWdlcyB0byBiZSByZWNlaXZlZC4KLSAgICB2b2lkIGNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJl
bmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25D
b2xvclNwYWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYgbG9naWNhbFNpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZsb2F0IHJl
c29sdXRpb25TY2FsZSwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiwgV2Vi
Q29yZTo6UGl4ZWxGb3JtYXQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7
CiAgICAgdm9pZCB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KGNvbnN0IEdQVVByb2Nlc3NXYWtl
dXBNZXNzYWdlQXJndW1lbnRzJik7CiAgICAgdm9pZCB1cGRhdGVTaGFyZWRNZW1vcnlGb3JHZXRQ
aXhlbEJ1ZmZlcih1aW50MzJfdCBieXRlQ291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmKT4mJik7CiAgICAgdm9pZCBzZW1hcGhvcmVGb3JH
ZXRQaXhlbEJ1ZmZlcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2VtYXBob3Jl
Jik+JiYpOwpJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdl
RGVjb2RlckFWRlByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwCShyZXZpc2lvbiAyNzc5Mzkp
CisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMjggKzExMywyOCBAQCB2b2lkIFJlbW90
ZUltYWdlRGVjb2RlckFWRlByb3h5OjpzZXREYXRhCiAgICAgY29tcGxldGlvbkhhbmRsZXIoZnJh
bWVDb3VudCwgaW1hZ2VEZWNvZGVyLT5zaXplKCksIGltYWdlRGVjb2Rlci0+aGFzVHJhY2soKSwg
V1RGTW92ZShmcmFtZUluZm9zKSk7CiB9CiAKLXZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHk6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KEltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRp
Zmllciwgc2l6ZV90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdURjo6
TWFjaFNlbmRSaWdodD4mJiwgQ29sb3JTcGFjZURhdGEmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpjcmVhdGVGcmFtZUltYWdlQXRJbmRl
eChJbWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYsIE9wdGlvbmFs
PFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgQVNTRVJUKG1faW1hZ2VEZWNvZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7CiAg
ICAgT3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJpZ2h0PiBzZW5kUmlnaHQ7Ci0gICAgQ29sb3JTcGFj
ZURhdGEgY29sb3JTcGFjZURhdGE7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25D
b2xvclNwYWNlPiBjb2xvclNwYWNlOwogICAgIGlmICghbV9pbWFnZURlY29kZXJzLmNvbnRhaW5z
KGlkZW50aWZpZXIpKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc2VuZFJp
Z2h0KSwgV1RGTW92ZShjb2xvclNwYWNlRGF0YSkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKHNlbmRSaWdodCksIFdURk1vdmUoY29sb3JTcGFjZSkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgYXV0byBmcmFtZUltYWdlID0gbV9pbWFnZURlY29kZXJzLmdldChp
ZGVudGlmaWVyKS0+Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoaW5kZXgpOwogICAgIGlmICghZnJh
bWVJbWFnZSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHNlbmRSaWdodCks
IFdURk1vdmUoY29sb3JTcGFjZURhdGEpKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShzZW5kUmlnaHQpLCBXVEZNb3ZlKGNvbG9yU3BhY2UpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21JbWFn
ZShmcmFtZUltYWdlLmdldCgpKSkgewogICAgICAgICBzZW5kUmlnaHQgPSBzdXJmYWNlLT5jcmVh
dGVTZW5kUmlnaHQoKTsKLSAgICAgICAgY29sb3JTcGFjZURhdGEuY2dDb2xvclNwYWNlID0gc3Vy
ZmFjZS0+Y29sb3JTcGFjZSgpOworICAgICAgICBjb2xvclNwYWNlID0gc3VyZmFjZS0+Y29sb3JT
cGFjZSgpOwogICAgIH0KIAotICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc2VuZFJpZ2h0
KSwgV1RGTW92ZShjb2xvclNwYWNlRGF0YSkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUoc2VuZFJpZ2h0KSwgV1RGTW92ZShjb2xvclNwYWNlKSk7CiB9CiAKIHZvaWQgUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGUHJveHk6OmNsZWFyRnJhbWVCdWZmZXJDYWNoZShJbWFnZURlY29kZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIHNpemVfdCBpbmRleCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94
eS5oCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcs
NiBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBIQVZFKEFWQVNTRVRSRUFERVIpCiAK
LSNpbmNsdWRlICJDb2xvclNwYWNlRGF0YS5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlRGVj
b2RlckFWRk9iakMuaD4KQEAgLTU3LDcgKzU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlbGV0
ZURlY29kZXIoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXRF
eHBlY3RlZENvbnRlbnRTaXplKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIGxvbmcg
bG9uZyBleHBlY3RlZENvbnRlbnRTaXplKTsKICAgICB2b2lkIHNldERhdGEoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc2l6ZV90IGZyYW1lQ291bnQsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUsIGJvb2wgaGFzVHJhY2ssIE9wdGlvbmFsPFZlY3Rv
cjxXZWJDb3JlOjpJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4+JiYpPiYmKTsKLSAgICB2b2lkIGNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIHNp
emVfdCBpbmRleCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXVEY6Ok1hY2hTZW5k
UmlnaHQ+JiYsIENvbG9yU3BhY2VEYXRhJiYpPiYmKTsKKyAgICB2b2lkIGNyZWF0ZUZyYW1lSW1h
Z2VBdEluZGV4KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIHNpemVfdCBpbmRleCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYsIE9w
dGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4mJik+JiYpOwogICAgIHZvaWQg
Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIsIHNp
emVfdCBpbmRleCk7CiAKICAgICB2b2lkIGVuY29kZWREYXRhU3RhdHVzQ2hhbmdlZChXZWJDb3Jl
OjpJbWFnZURlY29kZXJJZGVudGlmaWVyKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
UHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNzYWdlcy5pbgkod29y
a2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBtZXNzYWdlcyAtPiBSZW1vdGVJbWFnZURlY29k
ZXJBVkZQcm94eSBOCiAgICAgRGVsZXRlRGVjb2RlcihXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiAgICAgU2V0RXhwZWN0ZWRDb250ZW50U2l6ZShXZWJDb3JlOjpJ
bWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGxvbmcgbG9uZyBleHBlY3RlZENvbnRl
bnRTaXplKQogICAgIFNldERhdGEoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpIC0+IChzaXplX3QgZnJhbWVDb3VudCwgV2ViQ29yZTo6SW50U2l6ZSBzaXplLCBi
b29sIGhhc1RyYWNrLCBPcHRpb25hbDxWZWN0b3I8V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpGcmFt
ZUluZm8+PiBmcmFtZUluZm9zKSBTeW5jaHJvbm91cwotICAgIENyZWF0ZUZyYW1lSW1hZ2VBdElu
ZGV4KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgc2l6ZV90IGlu
ZGV4KSAtPiAoT3B0aW9uYWw8TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0LCBzdHJ1Y3QgV2ViS2l0
OjpDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlKSBTeW5jaHJvbm91cworICAgIENyZWF0ZUZyYW1l
SW1hZ2VBdEluZGV4KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwg
c2l6ZV90IGluZGV4KSAtPiAoT3B0aW9uYWw8TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0LCBPcHRp
b25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2UpIFN5bmNocm9u
b3VzCiAgICAgQ2xlYXJGcmFtZUJ1ZmZlckNhY2hlKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgc2l6ZV90IGluZGV4KQogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDEw
ICs3NCw3IEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGU6OmNsZWFyKCkKIAogdm9pZCBT
aGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb246OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBpc09wYXF1ZTsKLSNpZiBQTEFURk9STShDT0NP
QSkKLSAgICBlbmNvZGVyIDw8IGNvbG9yU3BhY2U7Ci0jZW5kaWYKKyAgICBlbmNvZGVyIDw8IGNv
bG9yU3BhY2UgPDwgaXNPcGFxdWU7CiAjaWYgVVNFKERJUkVDVDJEKQogICAgIFNoYXJlZE1lbW9y
eTo6SGFuZGxlOjplbmNvZGVIYW5kbGUoZW5jb2Rlciwgc2hhcmVkUmVzb3VyY2VIYW5kbGUpOwog
CkBAIC04OCwyMSArODUsMjggQEAgdm9pZCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb246
OmVuYwogI2VuZGlmCiB9CiAKLWJvb2wgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9u
KQorYm9vbCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb246OmRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIsIENvbmZpZ3VyYXRpb24mIHJlc3VsdCkKIHsKLSAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGNvbmZpZ3VyYXRpb24uaXNPcGFxdWUpKQorICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdl
YkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4+IGNvbG9yU3BhY2U7CisgICAgZGVjb2RlciA+
PiBjb2xvclNwYWNlOworICAgIGlmICghY29sb3JTcGFjZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29uZmlndXJh
dGlvbi5jb2xvclNwYWNlKSkKKworICAgIE9wdGlvbmFsPGJvb2w+IGlzT3BhcXVlOworICAgIGRl
Y29kZXIgPj4gaXNPcGFxdWU7CisgICAgaWYgKCFpc09wYXF1ZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotI2VuZGlmCisKKyAgICByZXN1bHQgPSBDb25maWd1cmF0aW9uIHsgV1RGTW92ZSgqY29s
b3JTcGFjZSksICppc09wYXF1ZSB9OworCiAjaWYgVVNFKERJUkVDVDJEKQogICAgIGF1dG8gcHJv
Y2Vzc1NwZWNpZmljSGFuZGxlID0gU2hhcmVkTWVtb3J5OjpIYW5kbGU6OmRlY29kZUhhbmRsZShk
ZWNvZGVyKTsKICAgICBpZiAoIXByb2Nlc3NTcGVjaWZpY0hhbmRsZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgY29uZmlndXJhdGlvbi5zaGFyZWRSZXNvdXJjZUhhbmRsZSA9IHByb2Nl
c3NTcGVjaWZpY0hhbmRsZS52YWx1ZSgpOworICAgIHJlc3VsdC5zaGFyZWRSZXNvdXJjZUhhbmRs
ZSA9IHByb2Nlc3NTcGVjaWZpY0hhbmRsZS52YWx1ZSgpOwogI2VuZGlmCisKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgJKHJl
dmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxNSArMjYsMTIgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiU2hhcmVkTWVtb3J5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9y
U3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtSW1hZ2UuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSAiQ29sb3JT
cGFjZURhdGEuaCIKLSNlbmRpZgotCiAjaWYgVVNFKERJUkVDVDJEKQogaW50ZXJmYWNlIElEMkQx
Qml0bWFwOwogaW50ZXJmYWNlIElEMkQxUmVuZGVyVGFyZ2V0OwpAQCAtNTUsMTAgKzUyLDggQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBTaGFyZWFibGVCaXRtYXAgOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8U2hhcmVhYmxlQml0bWFwPiB7CiBwdWJsaWM6CiAgICAgc3RydWN0IENv
bmZpZ3VyYXRpb24geworICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9y
U3BhY2U+IGNvbG9yU3BhY2U7CiAgICAgICAgIGJvb2wgaXNPcGFxdWUgeyBmYWxzZSB9OwotI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgICAgICBDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlOwotI2Vu
ZGlmCiAjaWYgVVNFKERJUkVDVDJEKQogICAgICAgICBtdXRhYmxlIEhBTkRMRSBzaGFyZWRSZXNv
dXJjZUhhbmRsZSB7IG51bGxwdHIgfTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCSh3b3JraW5nIGNvcHkpCkBA
IC04Miw2ICs4Miw4IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUg
IkFyZ3VtZW50Q29kZXJzQ0YuaCIKKwogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBNYWNoU2VuZFJp
Z2h0OwogfQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUs
OCArMzI1LDExIEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlAKICAg
ICBwYXJhbWV0ZXJzLmhhc1Jlc291cmNlTG9hZENsaWVudCA9IFdURk1vdmUoKmhhc1Jlc291cmNl
TG9hZENsaWVudCk7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpKQorICAgIE9wdGlvbmFsPE9wdGlvbmFsPERlc3RpbmF0
aW9uQ29sb3JTcGFjZT4+IGNvbG9yU3BhY2U7CisgICAgZGVjb2RlciA+PiBjb2xvclNwYWNlOwor
ICAgIGlmICghY29sb3JTcGFjZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBw
YXJhbWV0ZXJzLmNvbG9yU3BhY2UgPSBXVEZNb3ZlKCpjb2xvclNwYWNlKTsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXNlU3lzdGVtQXBwZWFyYW5jZSkpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBj
b3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2aXR5U3RhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nv
bG9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0Zsb2F0U2l6ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvTGF5b3V0TWlsZXN0b25lLmg+CkBAIC00OSwxMCArNTAsNiBAQAog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKLSNpZiBQTEFURk9STShNQUMpCi0jaW5jbHVkZSAiQ29sb3JTcGFjZURhdGEuaCIKLSNlbmRp
ZgotCiAjaWYgRU5BQkxFKEFQUExJQ0FUSU9OX01BTklGRVNUKQogI2luY2x1ZGUgPFdlYkNvcmUv
QXBwbGljYXRpb25NYW5pZmVzdC5oPgogI2VuZGlmCkBAIC0xNDYsNyArMTQzLDcgQEAgc3RydWN0
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIGJvb2wgdXNlRWxldmF0ZWRVc2VySW50
ZXJmYWNlTGV2ZWwgeyBmYWxzZSB9OwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIENvbG9yU3Bh
Y2VEYXRhIGNvbG9yU3BhY2U7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xv
clNwYWNlPiBjb2xvclNwYWNlOwogICAgIGJvb2wgdXNlU3lzdGVtQXBwZWFyYW5jZTsKICNlbmRp
ZgogI2lmIEVOQUJMRShNRVRBX1ZJRVdQT1JUKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdT
dG9yZS5tbQkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
MTIsMTkgKzIxMiwxOSBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzd2FwVG9WYWxp
CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFR5cGU6OklPU3VyZmFjZToKICAgICAg
ICAgaWYgKHNob3VsZFVzZVJlbW90ZVJlbmRlcmluZykKLSAgICAgICAgICAgIG1fZnJvbnRCdWZm
ZXIuaW1hZ2VCdWZmZXIgPSBtX2xheWVyLT5jb250ZXh0KCktPmVuc3VyZVJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSgpLmNyZWF0ZUltYWdlQnVmZmVyKG1fc2l6ZSwgV2ViQ29yZTo6UmVuZGVy
aW5nTW9kZTo6QWNjZWxlcmF0ZWQsIG1fc2NhbGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSk7CisgICAgICAgICAgICBtX2Zyb250QnVmZmVyLmlt
YWdlQnVmZmVyID0gbV9sYXllci0+Y29udGV4dCgpLT5lbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkoKS5jcmVhdGVJbWFnZUJ1ZmZlcihtX3NpemUsIFdlYkNvcmU6OlJlbmRlcmluZ01v
ZGU6OkFjY2VsZXJhdGVkLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgcGl4ZWxGb3JtYXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZnJv
bnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPEFjY2Vs
ZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwg
bV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBwaXhlbEZvcm1h
dCgpLCBudWxscHRyKTsKKyAgICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBX
ZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFi
bGVNYXBwZWRCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHBpeGVsRm9ybWF0KCksIG51bGxwdHIpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIFR5cGU6OkJpdG1hcDoKICAgICAgICAgaWYgKHNob3VsZFVzZVJl
bW90ZVJlbmRlcmluZykKLSAgICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBt
X2xheWVyLT5jb250ZXh0KCktPmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpLmNy
ZWF0ZUltYWdlQnVmZmVyKG1fc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVy
YXRlZCwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBwaXhl
bEZvcm1hdCgpKTsKKyAgICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBtX2xh
eWVyLT5jb250ZXh0KCktPmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpLmNyZWF0
ZUltYWdlQnVmZmVyKG1fc2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHBpeGVs
Rm9ybWF0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdl
QnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxVbmFjY2VsZXJhdGVkSW1hZ2VC
dWZmZXJTaGFyZWFibGVCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwgbV9zY2FsZSwgV2ViQ29yZTo6
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBwaXhlbEZvcm1hdCgpLCBudWxscHRyKTsKKyAg
ICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0ZUlt
YWdlQnVmZmVyPFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQ+OjpjcmVh
dGUobV9zaXplLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0cik7CiAgICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShD
R19ESVNQTEFZX0xJU1RfQkFDS0VEX0lNQUdFX0JVRkZFUikKICAgICBjYXNlIFR5cGU6OkNHRGlz
cGxheUxpc3Q6Ci0gICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpD
b25jcmV0ZUltYWdlQnVmZmVyPENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ+OjpjcmVh
dGUobV9zaXplLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Is
IHBpeGVsRm9ybWF0KCksIG51bGxwdHIpOworICAgICAgICBtX2Zyb250QnVmZmVyLmltYWdlQnVm
ZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZm
ZXJCYWNrZW5kPjo6Y3JlYXRlKG1fc2l6ZSwgbV9zY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCksIHBpeGVsRm9ybWF0KCksIG51bGxwdHIpOwogICAgICAgICBicmVh
azsKICNlbmRpZgogICAgIH0KQEAgLTM5Nyw3ICszOTcsNyBAQCB2b2lkIFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjphcHBseUJhY2tpCiAgICAgICAgICAgICBBU1NFUlQobV90eXBlID09IFR5cGU6
OklPU3VyZmFjZSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNvbnRlbnRzVHlwZSkgewogICAgICAg
ICAgICAgY2FzZSBMYXllckNvbnRlbnRzVHlwZTo6SU9TdXJmYWNlOiB7Ci0gICAgICAgICAgICAg
ICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0
KFdURk1vdmUobWFjaFNlbmRSaWdodCksIFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCkpOwor
ICAgICAgICAgICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRl
RnJvbVNlbmRSaWdodChXVEZNb3ZlKG1hY2hTZW5kUmlnaHQpLCBXZWJDb3JlOjpEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAgICAgICAgICAgbGF5ZXIuY29udGVudHMgPSBz
dXJmYWNlID8gc3VyZmFjZS0+YXNMYXllckNvbnRlbnRzKCkgOiBuaWw7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9T
aGFyZWFibGVCaXRtYXBDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQv
Y2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDcgKzQwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgCiBzdGF0aWMgQ0dDb2xv
clNwYWNlUmVmIGNvbG9yU3BhY2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9u
JiBjb25maWd1cmF0aW9uKQogewotICAgIHJldHVybiBjb25maWd1cmF0aW9uLmNvbG9yU3BhY2Uu
Y2dDb2xvclNwYWNlLmdldCgpID86IHNSR0JDb2xvclNwYWNlUmVmKCk7CisgICAgcmV0dXJuIGNv
bmZpZ3VyYXRpb24uY29sb3JTcGFjZSA/IGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZS0+cGxhdGZv
cm1Db2xvclNwYWNlKCkgOiBXZWJDb3JlOjpzUkdCQ29sb3JTcGFjZVJlZigpOwogfQogCiBzdGF0
aWMgYm9vbCB3YW50c0V4dGVuZGVkUmFuZ2UoY29uc3QgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1
cmF0aW9uJiBjb25maWd1cmF0aW9uKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0Nv
bG9yU3BhY2VEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0Nv
bG9yU3BhY2VEYXRhLmgJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9Db2xvclNwYWNlRGF0YS5oCShub25leGlzdGVudCkKQEAgLTEsNDcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgQ29sb3JTcGFjZURhdGFfaAotI2RlZmluZSBDb2xvclNwYWNlRGF0
YV9oCi0KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLW5hbWVzcGFjZSBJUEMgewotY2xh
c3MgRGVjb2RlcjsKLWNsYXNzIEVuY29kZXI7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1z
dHJ1Y3QgQ29sb3JTcGFjZURhdGEgewotICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNv
bnN0OwotICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoSVBDOjpEZWNv
ZGVyJiwgQ29sb3JTcGFjZURhdGEmKTsKLQotICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+
IGNnQ29sb3JTcGFjZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8g
Q29sb3JTcGFjZURhdGFfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL0NvbG9yU3BhY2VEYXRhLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxl
CiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvbG9yU3BhY2VEYXRhLm1tCShyZXZpc2lv
biAyNzc5MzkpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEubW0J
KG5vbmV4aXN0ZW50KQpAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29u
ZmlnLmgiCi0jaW1wb3J0ICJDb2xvclNwYWNlRGF0YS5oIgotCi0jaW1wb3J0ICJBcmd1bWVudENv
ZGVyc0NGLmgiCi0jaW1wb3J0ICJEZWNvZGVyLmgiCi0jaW1wb3J0ICJFbmNvZGVyLmgiCi0jaW1w
b3J0IDx3dGYvRW51bVRyYWl0cy5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBDb2xv
clNwYWNlRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBl
bmNvZGVyIDw8IHN0YXRpY19jYXN0PGJvb2w+KGNnQ29sb3JTcGFjZSk7Ci0gICAgaWYgKGNnQ29s
b3JTcGFjZSkKLSAgICAgICAgZW5jb2RlciA8PCBjZ0NvbG9yU3BhY2U7Ci19Ci0KLWJvb2wgQ29s
b3JTcGFjZURhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbG9yU3BhY2VEYXRh
JiBjb2xvclNwYWNlRGF0YSkKLXsKLSAgICBib29sIGhhc0NHQ29sb3JTcGFjZTsKLSAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGhhc0NHQ29sb3JTcGFjZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGlmICghaGFzQ0dDb2xvclNwYWNlKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAg
IFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2U7Ci0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShjb2xvclNwYWNlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIGNv
bG9yU3BhY2VEYXRhLmNnQ29sb3JTcGFjZSA9IFdURk1vdmUoY29sb3JTcGFjZSk7Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5Myw3IEBAIGNs
YXNzIFNlY3VyaXR5T3JpZ2luOwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29sb3I7CiBj
bGFzcyBDdXJzb3I7CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7CiBjbGFzcyBGbG9hdFF1
YWQ7CiBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBSZWdpb247CkBAIC0xODgsMTAgKzE4OSw2IEBA
IGNsYXNzIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQ7CiBjbGFzcyBJbnN0YWxsTWlz
c2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0OwogI2VuZGlmCiAKLSNpZiBQTEFURk9S
TShDT0NPQSkKLXN0cnVjdCBDb2xvclNwYWNlRGF0YTsKLSNlbmRpZgotCiAjaWYgSEFWRShWSVNJ
QklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCiB1c2luZyBMYXllckhvc3RpbmdDb250ZXh0SUQgPSB1
aW50MzJfdDsKICNlbmRpZgpAQCAtNDI2LDcgKzQyMyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgQ0dSZWN0IGJvdW5kc09mTGF5ZXJJbkxheWVyQmFja2VkV2luZG93Q29vcmRpbmF0ZXMoQ0FM
YXllciAqKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIENvbG9yU3BhY2VEYXRhIGNvbG9yU3Bh
Y2UoKSA9IDA7CisgICAgdmlydHVhbCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29s
b3JTcGFjZSgpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzaG93UGxhdGZvcm1Db250ZXh0TWVu
dShOU01lbnUgKiwgV2ViQ29yZTo6SW50UG9pbnQpID0gMDsKIApJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsNiArMTk4
LDcgQEAgbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBBdHRhY2htZW50OwogY2xhc3MgQ29udGVudFdv
cmxkOwogY2xhc3MgQ29udGV4dE1lbnVDbGllbnQ7CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U7CiBjbGFzcyBFcnJvcjsKIGNsYXNzIEZpbmRDbGllbnQ7CiBjbGFzcyBGaW5kTWF0Y2hlc0Ns
aWVudDsKQEAgLTM3Nyw3ICszNzgsNiBAQCBjbGFzcyBXZWJXaGVlbEV2ZW50Q29hbGVzY2VyOwog
Y2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKIAogc3RydWN0IEFwcEJvdW5kTmF2aWdhdGlvblRlc3Rp
bmdEYXRhOwotc3RydWN0IENvbG9yU3BhY2VEYXRhOwogc3RydWN0IERhdGFEZXRlY3Rpb25SZXN1
bHQ7CiBzdHJ1Y3QgRG9jdW1lbnRFZGl0aW5nQ29udGV4dDsKIHN0cnVjdCBEb2N1bWVudEVkaXRp
bmdDb250ZXh0UmVxdWVzdDsKQEAgLTExMzIsNyArMTEzMiw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IG1ha2VGaXJzdFJlc3BvbmRlcigpOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VG
aXJzdFJlc3BvbmRlcigpOwogCi0gICAgQ29sb3JTcGFjZURhdGEgY29sb3JTcGFjZSgpOworICAg
IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKCk7CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0JKHJldmlzaW9uIDI3NzkzOSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDE0LDcgKzEwMTQsNyBAQCAtIChSZWZQdHI8V2ViS2l0OjpWaWV3U25hcHNob3Q+
KV90YWtlVmllCiAjZWxzZQogICAgIFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0IHNuYXBzaG90
Rm9ybWF0ID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQ6OkJHUkE7CiAjZW5kaWYKLSAgICBh
dXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZShXZWJDb3JlOjpleHBhbmRl
ZEludFNpemUoc25hcHNob3RTaXplKSwgV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSwgc25h
cHNob3RGb3JtYXQpOworICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3Jl
YXRlKFdlYkNvcmU6OmV4cGFuZGVkSW50U2l6ZShzbmFwc2hvdFNpemUpLCBXZWJDb3JlOjpEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgc25hcHNob3RGb3JtYXQpOwogICAgIGlmICghc3Vy
ZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgQ0FSZW5kZXJTZXJ2ZXJSZW5kZXJM
YXllcldpdGhUcmFuc2Zvcm0oTUFDSF9QT1JUX05VTEwsIHNlbGYubGF5ZXIuY29udGV4dC5jb250
ZXh0SWQsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KHNlbGYubGF5ZXIpLCBzdXJmYWNlLT5z
dXJmYWNlKCksIDAsIDAsICZ0cmFuc2Zvcm0pOwpAQCAtMzA3OSw3ICszMDc5LDcgQEAgLSAodm9p
ZClfc25hcHNob3RSZWN0OihDR1JlY3QpcmVjdEluVmlldwogICAgIE5TU3RyaW5nICpkaXNwbGF5
TmFtZSA9IHNlbGYud2luZG93LnNjcmVlbi5kaXNwbGF5Q29uZmlndXJhdGlvbi5uYW1lOwogICAg
IGlmIChkaXNwbGF5TmFtZSAmJiAhc2VsZi53aW5kb3cuaGlkZGVuKSB7CiAgICAgICAgIFRyYWNl
U2NvcGUgc25hcHNob3RTY29wZShSZW5kZXJTZXJ2ZXJTbmFwc2hvdFN0YXJ0LCBSZW5kZXJTZXJ2
ZXJTbmFwc2hvdEVuZCk7Ci0gICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFj
ZTo6Y3JlYXRlKFdlYkNvcmU6OmV4cGFuZGVkSW50U2l6ZShXZWJDb3JlOjpGbG9hdFNpemUoaW1h
Z2VTaXplKSksIFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCkpOworICAgICAgICBhdXRvIHN1
cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZShXZWJDb3JlOjpleHBhbmRlZEludFNp
emUoV2ViQ29yZTo6RmxvYXRTaXplKGltYWdlU2l6ZSkpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAgIGlmICghc3VyZmFjZSkgewogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm47CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgJKHJldmlzaW9uIDI3
NzkzOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTk0LDYgKzk0LDcgQEAgY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247CiB9
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNs
YXNzIEludFBvaW50Owogc3RydWN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkw7CiAKQEAgLTE2OCw3
ICsxNjksNiBAQCBjbGFzcyBXZWJGcmFtZVByb3h5OwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xh
c3MgV2ViUHJvY2Vzc1Bvb2w7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7Ci1zdHJ1Y3QgQ29sb3JT
cGFjZURhdGE7CiBzdHJ1Y3QgV2ViSGl0VGVzdFJlc3VsdERhdGE7CiAKIGVudW0gY2xhc3MgQ29u
dGludWVVbnNhZmVMb2FkIDogYm9vbDsKQEAgLTMxMyw3ICszMTMsNyBAQCBwdWJsaWM6CiAKICAg
ICBOU1ZpZXcgKmhpdFRlc3QoQ0dQb2ludCk7CiAKLSAgICBDb2xvclNwYWNlRGF0YSBjb2xvclNw
YWNlKCk7CisgICAgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UoKTsK
IAogICAgIHZvaWQgc2V0VW5kZXJsYXlDb2xvcihOU0NvbG9yICopOwogICAgIE5TQ29sb3IgKnVu
ZGVybGF5Q29sb3IoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIs
NiBAQAogI2ltcG9ydCAiQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCIKICNpbXBvcnQg
IkFQSU5hdmlnYXRpb24uaCIKICNpbXBvcnQgIkFwcEtpdFNQSS5oIgotI2ltcG9ydCAiQ29sb3JT
cGFjZURhdGEuaCIKICNpbXBvcnQgIkNvcmVUZXh0SGVscGVycy5oIgogI2ltcG9ydCAiRm9udElu
Zm8uaCIKICNpbXBvcnQgIkZ1bGxzY3JlZW5DbGllbnQuaCIKQEAgLTkwLDYgKzg5LDcgQEAKICNp
bXBvcnQgPFdlYkNvcmUvQ29sb3JNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JTZXJpYWxp
emF0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbXBvc2l0aW9uSGlnaGxpZ2h0Lmg+CisjaW1w
b3J0IDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9E
aWN0aW9uYXJ5TG9va3VwLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0RyYWdJdGVtLmg+CkBAIC0yNTAwLDcgKzI1MDAsNyBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjpwb3N0RmFrZU1vdXNlTW92ZWRFdmVuCiAgICAgbV9wYWdlLT5oYW5kbGVNb3VzZUV2ZW50
KHdlYkV2ZW50KTsKIH0KIAotQ29sb3JTcGFjZURhdGEgV2ViVmlld0ltcGw6OmNvbG9yU3BhY2Uo
KQorV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIFdlYlZpZXdJbXBsOjpjb2xvclNwYWNl
KCkKIHsKICAgICBpZiAoIW1fY29sb3JTcGFjZSkgewogICAgICAgICBpZiAobV90YXJnZXRXaW5k
b3dGb3JNb3ZlUHJlcGFyYXRpb24pCkBAIC0yNTExLDEwICsyNTExLDcgQEAgQ29sb3JTcGFjZURh
dGEgV2ViVmlld0ltcGw6OmNvbG9yU3BhY2UoKQogICAgICAgICAgICAgbV9jb2xvclNwYWNlID0g
W05TU2NyZWVuIG1haW5TY3JlZW5dLmNvbG9yU3BhY2U7CiAgICAgfQogCi0gICAgQ29sb3JTcGFj
ZURhdGEgY29sb3JTcGFjZURhdGE7Ci0gICAgY29sb3JTcGFjZURhdGEuY2dDb2xvclNwYWNlID0g
W21fY29sb3JTcGFjZSBDR0NvbG9yU3BhY2VdOwotCi0gICAgcmV0dXJuIGNvbG9yU3BhY2VEYXRh
OworICAgIHJldHVybiBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgeyBbbV9jb2xvclNw
YWNlIENHQ29sb3JTcGFjZV0gfTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6c2V0VW5kZXJsYXlD
b2xvcihOU0NvbG9yICp1bmRlcmxheUNvbG9yKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUhv
c3QubW0JKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2
ICszNSw3IEBACiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQ
cm94eS5oIgogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisjaW1wb3J0IDxXZWJD
b3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0Nv
bnRleHRDRy5oPgogI2ltcG9ydCA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KICNpbXBvcnQgPFdlYkNv
cmUvUGxhdGZvcm1MYXllci5oPgpAQCAtMzE3LDcgKzMxOCw3IEBAIHN0YXRpYyB2b2lkIHJlY3Vy
c2l2ZWx5TWFwSU9TdXJmYWNlQmFja2kKIHsKICAgICBpZiAobGF5ZXIuY29udGVudHMgJiYgQ0ZH
ZXRUeXBlSUQoKF9fYnJpZGdlIENGVHlwZVJlZilsYXllci5jb250ZW50cykgPT0gQ0FNYWNoUG9y
dEdldFR5cGVJRCgpKSB7CiAgICAgICAgIE1hY2hTZW5kUmlnaHQgcG9ydCA9IE1hY2hTZW5kUmln
aHQ6OmNyZWF0ZShDQU1hY2hQb3J0R2V0UG9ydCgoX19icmlkZ2UgQ0FNYWNoUG9ydFJlZilsYXll
ci5jb250ZW50cykpOwotICAgICAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6
OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShwb3J0KSwgc1JHQkNvbG9yU3BhY2VSZWYoKSk7
CisgICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNl
bmRSaWdodChXVEZNb3ZlKHBvcnQpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSk7CiAgICAgICAgIGxheWVyLmNvbnRlbnRzID0gc3VyZmFjZSA/IHN1cmZhY2UtPmFzTGF5
ZXJDb250ZW50cygpIDogbmlsOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCSh3b3JraW5nIGNv
cHkpCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1ZpZXdJbldpbmRvdygp
IG92ZXJyaWRlOwogICAgIGJvb2wgaXNWaXN1YWxseUlkbGUoKSBvdmVycmlkZTsKICAgICBMYXll
ckhvc3RpbmdNb2RlIHZpZXdMYXllckhvc3RpbmdNb2RlKCkgb3ZlcnJpZGU7Ci0gICAgQ29sb3JT
cGFjZURhdGEgY29sb3JTcGFjZSgpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6OkRlc3RpbmF0aW9u
Q29sb3JTcGFjZSBjb2xvclNwYWNlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRSZW1vdGVMYXll
clRyZWVSb290Tm9kZShSZW1vdGVMYXllclRyZWVOb2RlKikgb3ZlcnJpZGU7CiAgICAgQ0FMYXll
ciAqYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpIGNvbnN0IG92ZXJyaWRlOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFj
Lm1tCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2lt
cG9ydCAiQVBJSGl0VGVzdFJlc3VsdC5oIgogI2ltcG9ydCAiQXBwS2l0U1BJLmgiCi0jaW1wb3J0
ICJDb2xvclNwYWNlRGF0YS5oIgogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAi
RG93bmxvYWRQcm94eS5oIgogI2ltcG9ydCAiRHJhd2luZ0FyZWFQcm94eS5oIgpAQCAtNjYsNiAr
NjUsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Db2xvck1hYy5oPgogI2ltcG9ydCA8V2ViQ29yZS9DdXJzb3IuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RpY3Rpb25hcnlM
b29rdXAuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0l0ZW0uaD4KICNpbXBvcnQgPFdlYkNvcmUv
RmxvYXRSZWN0Lmg+CkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6dmll
d1dpbGxNb3ZlVG9Bbm90aAogICAgIGNsZWFyQWxsRWRpdENvbW1hbmRzKCk7CiB9CiAKLUNvbG9y
U3BhY2VEYXRhIFBhZ2VDbGllbnRJbXBsOjpjb2xvclNwYWNlKCkKK1dlYkNvcmU6OkRlc3RpbmF0
aW9uQ29sb3JTcGFjZSBQYWdlQ2xpZW50SW1wbDo6Y29sb3JTcGFjZSgpCiB7CiAgICAgcmV0dXJu
IG1faW1wbC0+Y29sb3JTcGFjZSgpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
UHJveHkubW0JKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw3ICsyOCw2IEBACiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAotI2ltcG9ydCAi
Q29sb3JTcGFjZURhdGEuaCIKICNpbXBvcnQgIkRyYXdpbmdBcmVhTWVzc2FnZXMuaCIKICNpbXBv
cnQgIkRyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oIgogI2ltcG9ydCAiTGF5ZXJUcmVlQ29udGV4
dC5oIgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5
TWFjLm1tCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2ViUGFnZVByb3h5TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYg
UExBVEZPUk0oTUFDKQogCiAjaW1wb3J0ICJBUElVSUNsaWVudC5oIgotI2ltcG9ydCAiQ29sb3JT
cGFjZURhdGEuaCIKICNpbXBvcnQgIkNvbm5lY3Rpb24uaCIKICNpbXBvcnQgIkRhdGFSZWZlcmVu
Y2UuaCIKICNpbXBvcnQgIkVkaXRvclN0YXRlLmgiCkBAIC01Miw2ICs1MSw3IEBACiAjaW1wb3J0
ICJXZWJQcmVmZXJlbmNlc0tleXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2lt
cG9ydCA8V2ViQ29yZS9BdHRyaWJ1dGVkU3RyaW5nLmg+CisjaW1wb3J0IDxXZWJDb3JlL0Rlc3Rp
bmF0aW9uQ29sb3JTcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5TG9va3VwLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdJdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNz
TGF5ZXIuaD4KQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXNzaXN0aXZl
VGVjaG5vbG9neU1hCiAgICAgcGFnZUNsaWVudCgpLmFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmly
c3RSZXNwb25kZXIoKTsKIH0KIAotQ29sb3JTcGFjZURhdGEgV2ViUGFnZVByb3h5Ojpjb2xvclNw
YWNlKCkKK1dlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBXZWJQYWdlUHJveHk6OmNvbG9y
U3BhY2UoKQogewogICAgIHJldHVybiBwYWdlQ2xpZW50KCkuY29sb3JTcGFjZSgpOwogfQpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNjM0LDggKzI2MzQsNiBAQAogCQkxQTI1NkUz
NjE4QTFBNzg4MDA2RkI5MjIgLyogV0tOYXZpZ2F0aW9uQWN0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdLTmF2aWdhdGlvbkFjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQTI1NkUzOTE4QTFBN0RGMDA2RkI5MjIgLyogV0tOYXZpZ2F0aW9uQWN0
aW9uSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tOYXZpZ2F0
aW9uQWN0aW9uSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyOEI4
Q0IxQzgwRUQ1OTAwNkZENzQzIC8qIFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkxQTJBNEFGRDE1ODY5MzkyMDA5MEM5RTkgLyogQ29sb3JT
cGFjZURhdGEubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb2xv
clNwYWNlRGF0YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUEyQTRBRkUxNTg2
OTM5MjAwOTBDOUU5IC8qIENvbG9yU3BhY2VEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENvbG9yU3BhY2VEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFBMkJCNkNDMTQxMTdBNUYwMDBGMzVENCAvKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyQkI2Q0UxNDExN0I0
RDAwMEYzNUQ0IC8qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQTJCQjZDRjE0MTE3QjREMDAwRjM1RDQgLyogUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291
cmNlcy9XZWJLaXQyL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaDsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKQEAgLTEwNDMwLDggKzEwNDI4LDYgQEAKIAkJCQk5
RjU0Rjg4RTE2NDg4RTg3MDA3REY4MUEgLyogQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbSAqLywKIAkJ
CQlDRTExQUQ1MTFDQkM0ODJGMDA2ODFFRTUgLyogQ29kZVNpZ25pbmcuaCAqLywKIAkJCQlDRTEx
QUQ0RjFDQkM0N0Y4MDA2ODFFRTUgLyogQ29kZVNpZ25pbmcubW0gKi8sCi0JCQkJMUEyQTRBRkUx
NTg2OTM5MjAwOTBDOUU5IC8qIENvbG9yU3BhY2VEYXRhLmggKi8sCi0JCQkJMUEyQTRBRkQxNTg2
OTM5MjAwOTBDOUU5IC8qIENvbG9yU3BhY2VEYXRhLm1tICovLAogCQkJCTFBQzc1QTFDMUIzMzY5
NUUwMDU2NzQ1QiAvKiBIYW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMubW0gKi8sCiAJCQkJMkQ1MDM2
NUQxQkNDNzkzRjAwRTIwQkIzIC8qIE5hdGl2ZVdlYkdlc3R1cmVFdmVudE1hYy5tbSAqLywKIAkJ
CQlDMDJCRkYxRDEyNTE1MDJFMDA5Q0NCRUEgLyogTmF0aXZlV2ViS2V5Ym9hcmRFdmVudE1hYy5t
bSAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZC5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsMTEgKzQ1LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKElt
YWdlQnVmZmVyUwogCiBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gSW1hZ2VCdWZmZXJT
aGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb25maWd1cmF0aW9uKGNvbnN0IFBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMpCiB7Ci0gICAgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGNvbmZpZ3Vy
YXRpb247Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgY29uZmlndXJhdGlvbi5jb2xvclNwYWNl
ID0geyBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSB9OwotI2VuZGlm
Ci0gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CisgICAgcmV0dXJuIHsgcGFyYW1ldGVycy5jb2xv
clNwYWNlIH07CiB9CiAKIEludFNpemUgSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
OjpjYWxjdWxhdGVTYWZlQmFja2VuZFNpemUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAkocmV2aXNp
b24gMjc3OTM5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyArOTQs
NyBAQCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnByZXBhCiAgICAgICAgIG1h
cmtDb250ZXh0TG9zdCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8gZGlzcGxh
eUJ1ZmZlciA9IElPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGRpc3BsYXlC
dWZmZXJTZW5kUmlnaHQpLCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICBhdXRvIGRpc3BsYXlC
dWZmZXIgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShkaXNwbGF5QnVm
ZmVyU2VuZFJpZ2h0KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwog
ICAgIGlmIChkaXNwbGF5QnVmZmVyKSB7CiAgICAgICAgIGF1dG8mIHNjID0gcGxhdGZvcm1Td2Fw
Q2hhaW4oKTsKICAgICAgICAgc2MucmVjeWNsZUJ1ZmZlcigpOwpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5LmgJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIFJlbW90ZUltYWdlQnVmZmVyUHJveHkgOiBwdWJsaWMg
V2UKICAgICB1c2luZyBCYXNlRGlzcGxheUxpc3RJbWFnZUJ1ZmZlcjo6cmVzb2x1dGlvblNjYWxl
OwogCiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxSZW1vdGVJbWFnZUJ1ZmZlclByb3h5PiBj
cmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBXZWJDb3JlOjpQ
aXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCisgICAgc3RhdGljIFJlZlB0cjxSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5PiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29s
b3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQogICAgIHsKICAgICAg
ICAgYXV0byBwYXJhbWV0ZXJzID0gV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpQYXJhbWV0
ZXJzIHsgc2l6ZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCB9Owog
ICAgICAgICBpZiAoQmFja2VuZFR5cGU6OmNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShwYXJhbWV0
ZXJzKS5pc0VtcHR5KCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuY3BwCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3Jl
YXRlCiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q3JlYXRlSW1h
Z2VCdWZmZXIoaW1hZ2VCdWZmZXIubG9naWNhbFNpemUoKSwgaW1hZ2VCdWZmZXIucmVuZGVyaW5n
TW9kZSgpLCBpbWFnZUJ1ZmZlci5yZXNvbHV0aW9uU2NhbGUoKSwgaW1hZ2VCdWZmZXIuY29sb3JT
cGFjZSgpLCBpbWFnZUJ1ZmZlci5waXhlbEZvcm1hdCgpLCBpbWFnZUJ1ZmZlci5yZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIoKSksIHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCksIElQQzo6
U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsK
IH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNy
ZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5k
ZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBj
b2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4g
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9h
dFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0IHBpeGVsRm9ybWF0KQogewogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaAkocmV2aXNpb24g
Mjc3OTM5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTUgKzQzLDE5IEBA
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworCiBuYW1l
c3BhY2UgRGlzcGxheUxpc3QgewogY2xhc3MgRGlzcGxheUxpc3Q7CiBjbGFzcyBJdGVtOwogfQor
CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7CiBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBQ
aXhlbEJ1ZmZlcjsKKwogZW51bSBjbGFzcyBBbHBoYVByZW11bHRpcGxpY2F0aW9uIDogdWludDhf
dDsKLWVudW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDogdWludDhfdDsKIGVudW0gY2xh
c3MgUmVuZGVyaW5nTW9kZSA6IGJvb2w7CisKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC05
Miw3ICs5Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCiAgICAgLy8gTWVzc2FnZXMgdG8g
YmUgc2VudC4KLSAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlLCBXZWJD
b3JlOjpQaXhlbEZvcm1hdCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVh
dGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5kZXJp
bmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9u
Q29sb3JTcGFjZSYsIFdlYkNvcmU6OlBpeGVsRm9ybWF0KTsKICAgICBTdHJpbmcgZ2V0RGF0YVVS
TEZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4g
cXVhbGl0eSwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uLCBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIFZlY3Rvcjx1aW50OF90PiBnZXREYXRhRm9ySW1hZ2VC
dWZmZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91YmxlPiBxdWFsaXR5LCBX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpGbHVzaElkZW50aWZpZXIgZmx1c2hEaXNwbGF5TGlzdEFuZENvbW1pdChjb25zdCBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9jb2NvYS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29j
b2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZhY2VCYWNrZW5kLmNwcAkocmV2aXNp
b24gMjc3OTM5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9jb2Nv
YS9JbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZElPU3VyZmFjZUJhY2tlbmQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlclNoYXJl
YWJsZU1hcHAKICAgICBpZiAoYmFja2VuZFNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAotICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKGJhY2tlbmRT
aXplLCBiYWNrZW5kU2l6ZSwgY2FjaGVkQ0dDb2xvclNwYWNlKHBhcmFtZXRlcnMuY29sb3JTcGFj
ZSksIElPU3VyZmFjZTo6Zm9ybWF0Rm9yUGl4ZWxGb3JtYXQocGFyYW1ldGVycy5waXhlbEZvcm1h
dCkpOworICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKGJhY2tlbmRTaXplLCBi
YWNrZW5kU2l6ZSwgcGFyYW1ldGVycy5jb2xvclNwYWNlLCBJT1N1cmZhY2U6OmZvcm1hdEZvclBp
eGVsRm9ybWF0KHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQpKTsKICAgICBpZiAoIXN1cmZhY2UpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC02NSw3ICs2NSw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCi0gICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdU
Rk1vdmUoV1RGOjpnZXQ8TWFjaFNlbmRSaWdodD4oaGFuZGxlKSksIGNhY2hlZENHQ29sb3JTcGFj
ZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpKTsKKyAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6
OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShXVEY6OmdldDxNYWNoU2VuZFJpZ2h0PihoYW5k
bGUpKSwgcGFyYW1ldGVycy5jb2xvclNwYWNlKTsKICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCShyZXZpc2lv
biAyNzc5MzkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUlt
YWdlRGVjb2RlckFWRi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEzICsyOCwxMiBAQAogCiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBIQVZFKEFWQVNTRVRSRUFERVIpCiAKLSNpbmNsdWRl
ICJDb2xvclNwYWNlRGF0YS5oIgogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSAiUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9BVkFzc2V0TUlNRVR5cGVDYWNoZS5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvQ29sb3JTcGFjZUNHLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lPU3VyZmFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SW1hZ2VUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgpAQCAt
MTY4LDE0ICsxNjcsMTQgQEAgUGxhdGZvcm1JbWFnZVB0ciBSZW1vdGVJbWFnZURlY29kZXJBVkY6
OgogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIE9wdGlvbmFsPE1hY2hTZW5kUmlnaHQ+
IHNlbmRSaWdodDsKLSAgICAgICAgQ29sb3JTcGFjZURhdGEgY29sb3JTcGFjZTsKKyAgICAgICAg
T3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlOwogICAgICAgICBpZiAo
IW1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OkNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KG1faWRl
bnRpZmllciwgaW5kZXgpLCBNZXNzYWdlczo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OkNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4OjpSZXBseShzZW5kUmlnaHQsIGNvbG9yU3BhY2UpLCAwKSkK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoIXNlbmRSaWdodCkKKyAgICAgICAg
aWYgKCFzZW5kUmlnaHQgfHwgIWNvbG9yU3BhY2UpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJp
Z2h0KFdURk1vdmUoKnNlbmRSaWdodCksIGNvbG9yU3BhY2UuY2dDb2xvclNwYWNlLmdldCgpKTsK
KyAgICAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2Vu
ZFJpZ2h0KFdURk1vdmUoKnNlbmRSaWdodCksIFdURk1vdmUoKmNvbG9yU3BhY2UpKTsKICAgICAg
ICAgaWYgKCFzdXJmYWNlKQogICAgICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
Y29jb2EvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlQ29jb2EubW0JKHJldmlzaW9uIDI3NzkzOSkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvY29jb2EvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgUmVm
UHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllclByaXZhdGVSZQogICAgIGlmICghc2VuZFJpZ2h0
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6
OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKCpzZW5kUmlnaHQpLCBzUkdC
Q29sb3JTcGFjZVJlZigpKTsKKyAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6
OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZSgqc2VuZFJpZ2h0KSwgV2ViQ29yZTo6RGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKQEAgLTkxLDcgKzkxLDcgQEAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJS
ZWY+IE1lZGlhUGxheWVyUAogICAgIGlmICghc2VuZFJpZ2h0KQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJv
bVNlbmRSaWdodChXVEZNb3ZlKCpzZW5kUmlnaHQpLCBudWxscHRyKTsKKyAgICBhdXRvIHN1cmZh
Y2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZSgqc2Vu
ZFJpZ2h0KSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgIGlm
ICghc3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQkocmV2aXNpb24g
Mjc3OTM5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5tbQkod29ya2luZyBjb3B5KQpAQCAtNjQ2LDcgKzY0Niw3IEBAIGlubGluZSBQREZQbHVnaW46
OlBERlBsdWdpbihXZWJGcmFtZSYgZnIKICAgICBbbV9jb250YWluZXJMYXllciBhZGRTdWJsYXll
cjptX3Njcm9sbENvcm5lckxheWVyLmdldCgpXTsKICAgICBpZiAoW21fcGRmTGF5ZXJDb250cm9s
bGVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0RGV2aWNlQ29sb3JTcGFjZTopXSkg
ewogICAgICAgICBhdXRvIHZpZXcgPSBmcmFtZS5jb3JlRnJhbWUoKS0+dmlldygpOwotICAgICAg
ICBbbV9wZGZMYXllckNvbnRyb2xsZXIgc2V0RGV2aWNlQ29sb3JTcGFjZTpzY3JlZW5Db2xvclNw
YWNlKHZpZXcpXTsKKyAgICAgICAgW21fcGRmTGF5ZXJDb250cm9sbGVyIHNldERldmljZUNvbG9y
U3BhY2U6c2NyZWVuQ29sb3JTcGFjZSh2aWV3KS5wbGF0Zm9ybUNvbG9yU3BhY2UoKV07CiAgICAg
fQogCiAjaWYgSEFWRShJTkNSRU1FTlRBTF9QREZfQVBJUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TaGFyZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TaGFy
ZWFibGVCaXRtYXBVdGlsaXRpZXMuY3BwCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTIgKzU3LDcgQEAgUmVmUHRyPFNoYXJlYWJsZUJpdG1h
cD4gY3JlYXRlU2hhcmVhYmxlQgogICAgIH0KIAogICAgIC8vIEZJWE1FOiBPbmx5IHNlbGVjdCBF
eHRlbmRlZENvbG9yIG9uIGltYWdlcyBrbm93biB0byBuZWVkIHdpZGUgZ2FtdXQuCi0gICAgU2hh
cmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGJpdG1hcENvbmZpZ3VyYXRpb247Ci0jaWYgVVNF
KENHKQotICAgIGJpdG1hcENvbmZpZ3VyYXRpb24uY29sb3JTcGFjZS5jZ0NvbG9yU3BhY2UgPSBz
Y3JlZW5Db2xvclNwYWNlKHJlbmRlckltYWdlLmZyYW1lKCkubWFpbkZyYW1lKCkudmlldygpKTsK
LSNlbmRpZgotCi0gICAgYXV0byBzaGFyZWRCaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZVNoYXJlYWJsZShJbnRTaXplKGJpdG1hcFNpemUpLCBiaXRtYXBDb25maWd1cmF0aW9uKTsKKyAg
ICBhdXRvIHNoYXJlZEJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKElu
dFNpemUoYml0bWFwU2l6ZSksIHsgc2NyZWVuQ29sb3JTcGFjZShyZW5kZXJJbWFnZS5mcmFtZSgp
Lm1haW5GcmFtZSgpLnZpZXcoKSkgfSk7CiAgICAgaWYgKCFzaGFyZWRCaXRtYXApCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24g
Mjc3OTM5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyNyw3ICs5MjcsNyBAQCBXZWJDb3Jl
OjpEaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KiBXCiAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwg
UmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29uc3QK
K1JlZlB0cjxJbWFnZUJ1ZmZlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgUmVuZGVy
aW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0
CiB7CiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zaG91bGRVc2VSZW1vdGVSZW5k
ZXJpbmdGb3IocHVycG9zZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaAkocmV2aXNpb24gMjc3OTM5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQs
NyArMjQ0LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3JG
YWN0b3J5KiBkaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KCkgY29uc3QgZmluYWw7CiAKICNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5k
ZXJpbmdNb2RlLCBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQp
IGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1h
Z2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9k
ZSwgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25z
dCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCkg
Y29uc3QgZmluYWw7CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzJiwgV2ViQ29yZTo6UGxhdGZvcm1EaXNwbGF5SUQgaG9z
dFdpbmRvd0Rpc3BsYXlJRCkgY29uc3QgZmluYWw7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkRyYWdDbGllbnRNYWMubW0JKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtNjgsOSArNjgsNyBAQCB1c2luZyBEcmFnSW1hZ2UgPSBDR0ltYWdlUmVmOwogCiBz
dGF0aWMgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gY29udmVydERyYWdJbWFnZVRvQml0bWFwKERy
YWdJbWFnZSBpbWFnZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgRnJhbWUmIGZyYW1lKQogewotICAg
IFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBiaXRtYXBDb25maWd1cmF0aW9uOwotICAg
IGJpdG1hcENvbmZpZ3VyYXRpb24uY29sb3JTcGFjZS5jZ0NvbG9yU3BhY2UgPSBzY3JlZW5Db2xv
clNwYWNlKGZyYW1lLm1haW5GcmFtZSgpLnZpZXcoKSk7Ci0gICAgYXV0byBiaXRtYXAgPSBTaGFy
ZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShzaXplLCBiaXRtYXBDb25maWd1cmF0aW9uKTsK
KyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHNpemUs
IHsgc2NyZWVuQ29sb3JTcGFjZShmcmFtZS5tYWluRnJhbWUoKS52aWV3KCkpIH0pOwogICAgIGlm
ICghYml0bWFwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCShyZXZpc2lvbiAyNzc5Mzkp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIGNsYXNzIERlY29kZXI7CiB9CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIERpc3BsYXlS
ZWZyZXNoTW9uaXRvcjsKIGNsYXNzIEZyYW1lOwogY2xhc3MgRnJhbWVWaWV3OwpAQCAtNjAsNyAr
NjEsNiBAQCBzdHJ1Y3QgVmlld3BvcnRBdHRyaWJ1dGVzOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotc3RydWN0IENvbG9yU3BhY2VEYXRhOwogY2xhc3MgTGF5ZXJUcmVlSG9zdDsKIHN0cnVjdCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IFdlYlByZWZlcmVuY2VzU3RvcmU7CkBA
IC0xODAsNyArMTgwLDcgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBV
c2VkIGJ5IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLgogICAgIHZpcnR1YWwgdm9pZCBz
ZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldENvbG9y
U3BhY2UoY29uc3QgQ29sb3JTcGFjZURhdGEmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29s
b3JTcGFjZShPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+KSB7IH0KIAog
ICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29y
ZTo6RmxvYXRQb2ludCBvcmlnaW4pIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjb21taXRUcmFuc2ll
bnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIHsgfQpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2lu
Z0FyZWEubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw3ICszMSw3IEBAIG1lc3NhZ2VzIC0+IERyYXdpbmdBcmVhIE5vdFJlZkNvdW50ZWQgewog
ICAgIC8vIFVzZWQgYnkgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuCiAgICAgVXBkYXRl
R2VvbWV0cnkoV2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6ZSwgYm9vbCBmbHVzaFN5bmNocm9ub3Vz
bHksIE1hY2hTZW5kUmlnaHQgZmVuY2VQb3J0KQogICAgIFNldERldmljZVNjYWxlRmFjdG9yKGZs
b2F0IGRldmljZVNjYWxlRmFjdG9yKQotICAgIFNldENvbG9yU3BhY2Uoc3RydWN0IFdlYktpdDo6
Q29sb3JTcGFjZURhdGEgY29sb3JTcGFjZSkKKyAgICBTZXRDb2xvclNwYWNlKHN0cnVjdCBPcHRp
b25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2UpCiAgICAgU2V0
Vmlld0V4cG9zZWRSZWN0KE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gdmlld0V4cG9zZWRS
ZWN0KQogCiAgICAgQWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZs
b2F0UG9pbnQgb3JpZ2luKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTk4LDcgKzI1OTgs
NyBAQCBzdGF0aWMgU2hhcmVhYmxlQml0bWFwOjpDb25maWd1cmF0aW9uIHNuCiAgICAgU2hhcmVh
YmxlQml0bWFwOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CiAjaWYgVVNFKENHKQogICAg
IGlmIChvcHRpb25zICYgU25hcHNob3RPcHRpb25zVXNlU2NyZWVuQ29sb3JTcGFjZSkKLSAgICAg
ICAgY29uZmlndXJhdGlvbi5jb2xvclNwYWNlLmNnQ29sb3JTcGFjZSA9IHNjcmVlbkNvbG9yU3Bh
Y2UocGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCkpOworICAgICAgICBjb25maWd1
cmF0aW9uLmNvbG9yU3BhY2UgPSBzY3JlZW5Db2xvclNwYWNlKHBhZ2UuY29yZVBhZ2UoKS0+bWFp
bkZyYW1lKCkudmlldygpKTsKICNlbmRpZgogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwogfQpJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgJKHJldmlzaW9uIDI3
NzkzOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5OCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzdXNwZW5kUGFpbnRpbmcoKTsKICAgICB2b2lkIHJlc3VtZVBhaW50
aW5nKCk7CiAgICAgdm9pZCBzZXRMYXllckhvc3RpbmdNb2RlKExheWVySG9zdGluZ01vZGUpIG92
ZXJyaWRlOwotICAgIHZvaWQgc2V0Q29sb3JTcGFjZShjb25zdCBDb2xvclNwYWNlRGF0YSYpIG92
ZXJyaWRlOworICAgIHZvaWQgc2V0Q29sb3JTcGFjZShPcHRpb25hbDxXZWJDb3JlOjpEZXN0aW5h
dGlvbkNvbG9yU3BhY2U+KSBvdmVycmlkZTsKICAgICB2b2lkIGFkZEZlbmNlKGNvbnN0IFdURjo6
TWFjaFNlbmRSaWdodCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBhZGRUcmFuc2FjdGlvbkNhbGxi
YWNrSUQoQ2FsbGJhY2tJRCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhLm1tCShyZXZpc2lvbiAyNzc5MzkpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2lmIFBMQVRGT1JNKE1BQykKIAotI2lt
cG9ydCAiQ29sb3JTcGFjZURhdGEuaCIKICNpbXBvcnQgIkRpc3BsYXlSZWZyZXNoTW9uaXRvck1h
Yy5oIgogI2ltcG9ydCAiRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJMYXll
ckhvc3RpbmdDb250ZXh0LmgiCkBAIC00NSw2ICs0NCw3IEBACiAjaW1wb3J0IDxwYWwvc3BpL2Nv
Y29hL1F1YXJ0ekNvcmVTUEkuaD4KICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9EZWJ1Z1BhZ2VPdmVybGF5cy5oPgorI2ltcG9ydCA8V2ViQ29yZS9E
ZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4
dC5oPgpAQCAtOTEsNiArOTEsNyBAQCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6VGls
ZWRDb3JlCiAgICAgfSk7CiAKICAgICB1cGRhdGVMYXllckhvc3RpbmdDb250ZXh0KCk7CisgICAg
CiAgICAgc2V0Q29sb3JTcGFjZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpOwogCiAgICAgaWYgKGF1
dG8gdmlld0V4cG9zZWRSZWN0ID0gcGFyYW1ldGVycy52aWV3RXhwb3NlZFJlY3QpCkBAIC02NTAs
OSArNjUxLDkgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2V0TAogICAg
IHNlbmQoTWVzc2FnZXM6OkRyYXdpbmdBcmVhUHJveHk6OlVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdNb2RlKDAsIGxheWVyVHJlZUNvbnRleHQpKTsKIH0KIAotdm9pZCBUaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYTo6c2V0Q29sb3JTcGFjZShjb25zdCBDb2xvclNwYWNlRGF0YSYgY29s
b3JTcGFjZSkKK3ZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldENvbG9yU3Bh
Y2UoT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPiBjb2xvclNwYWNlKQog
ewotICAgIG1fbGF5ZXJIb3N0aW5nQ29udGV4dC0+c2V0Q29sb3JTcGFjZShjb2xvclNwYWNlLmNn
Q29sb3JTcGFjZS5nZXQoKSk7CisgICAgbV9sYXllckhvc3RpbmdDb250ZXh0LT5zZXRDb2xvclNw
YWNlKGNvbG9yU3BhY2UgPyBjb2xvclNwYWNlLT5wbGF0Zm9ybUNvbG9yU3BhY2UoKSA6IG51bGxw
dHIpOwogfQogCiBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yPiBUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYTo6Y3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRm
b3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA1LTIyICBTYW0gV2VpbmlnICA8
d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBDb252ZXJ0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSBmcm9tIGFuIGVudW0gdG8gY2xhc3Mgd3JhcHBpbmcgYSBwbGF0Zm9ybSBjb2xvciBzcGFjZSAo
Q0dDb2xvclNwYWNlUmVmIGZvciBDRyBwb3J0cywgZXRjLikKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjE0MworCisgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVD
bGllbnQubW06CisgICAgICAgIChXZWJDb250ZXh0TWVudUNsaWVudDo6aW1hZ2VGb3JDdXJyZW50
U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKToKKyAgICAgICAgVXBkYXRlIGZvciBuZXcgRGVzdGlu
YXRpb25Db2xvclNwYWNlIGNsYXNzLgorCiAyMDIxLTA1LTIyICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVwbGFjZSBMb2NrSG9sZGVyIHdpdGggTG9ja2VyIGlu
IGxvY2FsIHZhcmlhYmxlcwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0JKHJldmlz
aW9uIDI3NzkzOSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbnRleHRNZW51Q2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBACiAj
aW1wb3J0IDxXZWJDb3JlL0JpdG1hcEltYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbnRleHRN
ZW51Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbnRleHRNZW51Q29udHJvbGxlci5oPgorI2ltcG9y
dCA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvRG9j
dW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJh
bWVWaWV3Lmg+CkBAIC0yMTMsNyArMjE0LDcgQEAgUmV0YWluUHRyPE5TSW1hZ2U+IFdlYkNvbnRl
eHRNZW51Q2xpZW50OgogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgLy8gVGhpcyBpcyBlZmZl
Y3RpdmVseSBhIHNuYXBzaG90LCBhbmQgd2lsbCBiZSBwYWludGVkIGluIGFuIHVuYWNjZWxlcmF0
ZWQgZmFzaGlvbiBpbiBsaW5lIHdpdGggRnJhbWVTbmFwc2hvdHRpbmcuCi0gICAgYXV0byBidWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFj
Y2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJlY3Quc2l6ZSgp
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIG5pbDsKIApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0NoYW5nZUxvZwkocmV2aXNpb24gMjc3OTM5KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDUtMjIgIFNhbSBXZWluaWcgIDx3ZWluaWdA
YXBwbGUuY29tPgorCisgICAgICAgIENvbnZlcnQgRGVzdGluYXRpb25Db2xvclNwYWNlIGZyb20g
YW4gZW51bSB0byBjbGFzcyB3cmFwcGluZyBhIHBsYXRmb3JtIGNvbG9yIHNwYWNlIChDR0NvbG9y
U3BhY2VSZWYgZm9yIENHIHBvcnRzLCBldGMuKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxh
eUxpc3RUZXN0c0NHLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAg
ICBVcGF0ZSB0ZXN0IHRvIHVzZSBuZXcgRGVzdGluYXRpb25Db2xvclNwYWNlIHR5cGUuCisKIDIw
MjEtMDUtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBs
YWNlIExvY2tIb2xkZXIgd2l0aCBMb2NrZXIgaW4gbG9jYWwgdmFyaWFibGVzCkluZGV4OiBUb29s
cy9EdW1wUmVuZGVyVHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQkocmV2aXNp
b24gMjc3OTM5KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1BpeGVsRHVtcFN1cHBvcnRJ
T1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNiArMzgsNyBAQAogI2lt
cG9ydCA8Q29tbW9uQ3J5cHRvL0NvbW1vbkRpZ2VzdC5oPgogI2ltcG9ydCA8TW9iaWxlQ29yZVNl
cnZpY2VzL1VUQ29yZVR5cGVzLmg+CiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0dyYXBoaWNzQ29udGV4dENHLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0lPU3VyZmFjZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgpAQCAtNzEsNyArNzIsNyBAQCBSZWZQ
dHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0bWFwQ29udGV4CiAjZWxzZQogICAgIFdlYkNvcmU6
OklPU3VyZmFjZTo6Rm9ybWF0IHNuYXBzaG90Rm9ybWF0ID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpG
b3JtYXQ6OkJHUkE7CiAjZW5kaWYKLSAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZh
Y2U6OmNyZWF0ZShXZWJDb3JlOjpleHBhbmRlZEludFNpemUoc25hcHNob3RTaXplKSwgV2ViQ29y
ZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSwgc25hcHNob3RGb3JtYXQpOworICAgIGF1dG8gc3VyZmFj
ZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlKFdlYkNvcmU6OmV4cGFuZGVkSW50U2l6ZShz
bmFwc2hvdFNpemUpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgc25h
cHNob3RGb3JtYXQpOwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjZ0ltYWdlID0gc3VyZmFj
ZS0+Y3JlYXRlSW1hZ2UoKTsKIAogICAgIHZvaWQqIGJpdG1hcEJ1ZmZlciA9IG51bGxwdHI7Cklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RUZXN0
c0NHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcAkocmV2aXNpb24gMjc3OTM5KQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIFVTRShDRykKIAorI2luY2x1ZGUgPFdl
YkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5
TGlzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRGlzcGxheUxpc3RSZXBsYXllci5oPgpAQCAtNDYsOCArNDcsOCBAQCBURVNUKERp
c3BsYXlMaXN0VGVzdHMsIFJlcGxheVdpdGhNaXNzaW5nCiB7CiAgICAgRmxvYXRSZWN0IGNvbnRl
eHRCb3VuZHMgeyAwLCAwLCBjb250ZXh0V2lkdGgsIGNvbnRleHRIZWlnaHQgfTsKIAotICAgIGF1
dG8gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NHQ29s
b3JTcGFjZVNSR0IpKTsKLSAgICBhdXRvIGNnQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250
ZXh0Q3JlYXRlKG51bGxwdHIsIGNvbnRleHRXaWR0aCwgY29udGV4dEhlaWdodCwgOCwgNCAqIGNv
bnRleHRXaWR0aCwgY29sb3JTcGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRM
YXN0KSk7CisgICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCk7CisgICAgYXV0byBjZ0NvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0ZShu
dWxscHRyLCBjb250ZXh0V2lkdGgsIGNvbnRleHRIZWlnaHQsIDgsIDQgKiBjb250ZXh0V2lkdGgs
IGNvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBs
aWVkTGFzdCkpOwogICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0IHsgY2dDb250ZXh0LmdldCgp
IH07CiAKICAgICBhdXRvIGltYWdlQnVmZmVySWRlbnRpZmllciA9IFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKQEAgLTY5LDcgKzcwLDcgQEAgVEVTVChEaXNwbGF5TGlz
dFRlc3RzLCBSZXBsYXlXaXRoTWlzc2luZwogICAgIH0KIAogICAgIHsKLSAgICAgICAgYXV0byBp
bWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoeyAxMDAsIDEwMCB9LCBSZW5kZXJpbmdN
b2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CisgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHsgMTAwLCAxMDAgfSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgY29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgSW1hZ2VCdWZmZXJIYXNoTWFw
IGltYWdlQnVmZmVyTWFwOwogICAgICAgICBpbWFnZUJ1ZmZlck1hcC5zZXQoaW1hZ2VCdWZmZXJJ
ZGVudGlmaWVyLCBpbWFnZUJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429600</attachid>
            <date>2021-05-24 17:36:21 -0700</date>
            <delta_ts>2021-05-24 18:26:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226143-20210524173620.patch</filename>
            <type>text/plain</type>
            <size>278207</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3Nzk3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5NSBAQAorMjAyMS0wNS0yNCAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29udmVydCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdyYXBwaW5nIGEgcGxhdGZvcm0gY29sb3Ig
c3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0Yy4pCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxNDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBSZXBsYWNlIGVudW1lcmF0aW9uIGJhc2Vk
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSB3aXRoIGEgc3RydWN0IHdyYXBwaW5nCisgICAgICAgIGEg
cGxhdGZvcm0gY29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0Yy4p
LiBGb3IgcG9ydHMKKyAgICAgICAgdGhhdCBkb24ndCBoYXZlIGEgcGxhdGZvcm0gbGV2ZWwgY29s
b3Igc3BhY2UgdHlwZSwgYSBidWlsdGluIFBsYXRmb3JtQ29sb3JTcGFjZQorICAgICAgICB0eXBl
IGlzIHByb3ZpZGVkIHRoYXQgaXMganVzdCB0aGUgb2xkIGVudW0gcmVuYW1lZCB0byBQbGF0Zm9y
bUNvbG9yU3BhY2U6Ok5hbWUuCisKKyAgICAgICAgVGhlIGdvYWwgb2YgdGhpcyBjaGFuZ2UgaXMg
dG8gdW5pZnkgdGhlIGN1cnJlbnRseSBiaWZ1cmNhdGVkIGNvbmNlcHQgb2YgYW4KKyAgICAgICAg
SW1hZ2VCdWZmZXIncyBjb2xvciBzcGFjZSwgd2hpY2ggcHJldmlvc2x5IGNvdWxkIGVpdGhlciBi
ZSBiYXNlZCBvbiB0aGUgCisgICAgICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSAoYW5kIHJlZmxl
Y3RlZCBpbiB0aGUgY29sb3JTcGFjZSgpIG1lbWJlciBmdW5jdGlvbiksCisgICAgICAgIG9yIChm
b3IgQ0cgcG9ydHMpIGJhc2VkIG9uIGEgQ0dDb2xvclNwYWNlUmVmLCB3aXRoIHRoZSBjb2xvclNw
YWNlKCkgZnVuY3Rpb24KKyAgICAgICAgcmV0dXJuaW5nIHNSR0IgZXZlbiBpZiB0aGUgSW1hZ2VC
dWZmZXIgd2FzIG5vdC4gCisKKyAgICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIE1v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1CaW5kaW5nc0RhdGFTb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZTo6Q2xp
cGJvYXJkSXRlbVR5cGVMb2FkZXI6OnNhbml0aXplRGF0YUlmTmVlZGVkKToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFydHdvcmtJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIFNvdXJjZXMu
dHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xvbmVTZXJpYWxpemVyOjpkdW1wSW1hZ2VCaXRtYXApOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRJbWFnZUJpdG1hcCk6CisgICAgICAgICogY3NzL0NT
U0ZpbHRlckltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1hZ2VW
YWx1ZTo6aW1hZ2UpOgorICAgICAgICAqIGh0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRDYW52YXM6OmNvcGllZEltYWdlIGNvbnN0KToKKyAg
ICAgICAgKiBodG1sL0N1c3RvbVBhaW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Vz
dG9tUGFpbnRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnRvTWVkaWFT
YW1wbGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUltYWdl
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcg
Y29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSW1hZ2VCaXRtYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCaXRtYXA6OmNyZWF0
ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQml0bWFwOjpjcmVhdGVQcm9t
aXNlKToKKyAgICAgICAgKiBodG1sL09mZnNjcmVlbkNhbnZhcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpPZmZzY3JlZW5DYW52YXM6OmNvbW1pdFRvUGxhY2Vob2xkZXJDYW52YXMpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6Y29sb3JTcGFjZSBjb25zdCk6CisgICAgICAg
ICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgICogaHRtbC9jYW52
YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dDo6c2V0T3V0cHV0Qml0bWFwKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0
b0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1ByZWRlZmluZWRD
b2xvclNwYWNlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9QcmVkZWZpbmVkQ29sb3JTcGFjZS5o
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6TFJVSW1hZ2VCdWZm
ZXJDYWNoZTo6aW1hZ2VCdWZmZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJv
bFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlVGV4dFRyYWNrUmVwcmVzZW50
YXRpb25JbWFnZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNQYXR0ZXJuKToK
KyAgICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6OmNy
ZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0Nocm9tZS5oOgorICAgICAg
ICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6
OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lU25hcHNob3R0
aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNuYXBzaG90RnJhbWVSZWN0V2l0aENsaXApOgor
ICAgICAgICAqIHBhZ2UvUGFnZUNvbG9yU2FtcGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
YW1wbGVDb2xvcik6CisgICAgICAgICogcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUNsaWVudDo6c2NyZWVuc2hvdCk6CisgICAgICAgICog
cGxhdGZvcm0vSG9zdFdpbmRvdy5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtQ29sb3JT
cGFjZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29sb3JTcGFjZTo6Z2V0
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oOgorICAgICAgICAq
IHBsYXRmb3JtL1NjcmVlblByb3BlcnRpZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVlblBy
b3BlcnRpZXM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW5EYXRhOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVuRGF0YTo6ZGVjb2RlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCaXRtYXBJbWFnZTo6cHJlVHJhbnNmb3JtZWROYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9y
Ojp0b0NvbG9yQ29tcG9uZW50c0luQ29sb3JTcGFjZSBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvQ29sb3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNv
bnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVyQ29sb3JDb21wb25lbnRzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Db2xvclNwYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3Jl
dGVJbWFnZUJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJ
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJh
d1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29sb3JT
cGFjZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKToKKyAgICAgICAgKFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFy
U1JHQik6CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQ
Myk6CisgICAgICAgIChXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRlc3RpbmF0aW9u
Q29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdl
YkNvcmU6Om9wZXJhdG9yIT0pOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpwbGF0Zm9ybUNvbG9yU3Bh
Y2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpkZWNv
ZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNvcHlSZWN0VG9CdWZmZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
QnVmZmVyQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQaXhlbEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlckJhY2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXJCYWNrZW5kOjpjb2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9QaXhlbEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UGl4ZWxCdWZmZXI6OmRl
Y29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXJDb252ZXJzaW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VWSW1hZ2VDR0ltYWdlRm9ybWF0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5oOgorICAgICAgICAoV2Vi
Q29yZTo6UGl4ZWxCdWZmZXJGb3JtYXQ6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNmZXJC
R1JBUGl4ZWxCdWZmZXJUb0lPU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVWaWRl
b1NhbXBsZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlOjpS
ZW1vdGVWaWRlb1NhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZTo6
c3VyZmFjZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9T
YW1wbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmF0Y2hCdWZmZXI6OmdldFNjcmF0Y2hCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRob3V0VGlsaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhvdXRUaWxpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6ZHJhd1JlY3RTaGFkb3dXaXRoVGlsaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6Ymx1clNoYWRvd0J1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpkcmF3U2hhZG93TGF5ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWlu
dFJlc3VsdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVy
Q2Fpcm9CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9CYWNr
ZW5kOjp0cmFuc2Zvcm1Db2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0NvbG9yQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvQ0dDb21wYXRp
YmxlQ29tcG9uZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDR0NvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OnBsYXRmb3JtQ29udmVydENvbG9yQ29tcG9uZW50cyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JTcGFjZUNHLmg6CisgICAgICAgIChXZWJDb3JlOjpj
YWNoZWRDR0NvbG9yU3BhY2UpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnBhaW50VG9DYW52YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0lPU3VyZmFjZVBvb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3VyZmFjZU1hdGNo
ZXNQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZVBvb2w6OnRha2VTdXJm
YWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29weUNHSW1hZ2VGb3JF
bmNvZGluZyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDR0JpdG1hcEJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0Jp
dG1hcEJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjplbmNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL05hdGl2ZUltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OnNp
bmdsZVBpeGVsU29saWRDb2xvciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjphbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFj
a2luZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tOgorICAgICAgICAo
V2ViQ29yZTo6SU9TdXJmYWNlOjpzdXJmYWNlRnJvbVBvb2wpOgorICAgICAgICAoV2ViQ29yZTo6
SU9TdXJmYWNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVG
cm9tU2VuZFJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVN1
cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tSW1hZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tUGl4ZWxCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpJT1N1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6
SU9TdXJmYWNlOjplbnN1cmVQbGF0Zm9ybUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SU9T
dXJmYWNlOjptaWdyYXRlQ29sb3JTcGFjZVRvUHJvcGVydGllcyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OnJlbmRlclRv
SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0ltYWdlVHJhbnNm
ZXJTZXNzaW9uVlQubW06CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVRyYW5zZmVyU2Vzc2lvblZU
OjpjcmVhdGVQaXhlbEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvUGl4
ZWxCdWZmZXJDb25mb3JtZXJDVi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQaXhlbEJ1ZmZlckNv
bmZvcm1lckNWOjpjcmVhdGVJbWFnZUZyb21QaXhlbEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpkZXN0cm95KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkJlZ2luQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmNvbG9yU3BhY2UgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkJlZ2lu
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OkdldFBpeGVsQnVmZmVyOjpHZXRQaXhlbEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6R2V0UGl4ZWxCdWZmZXI6Om91dHB1dEZvcm1hdCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6R2V0UGl4ZWxCdWZmZXI6OmVuY29kZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6R2V0UGl4ZWxCdWZmZXI6OmRlY29kZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjbGlw
VG9EcmF3aW5nQ29tbWFuZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURpc3Bs
YWNlbWVudE1hcDo6c2V0UmVzdWx0Q29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVUaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6cGxhdGZvcm1BcHBs
eVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRQaXhlbEJ1
ZmZlclRvQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvbnZl
cnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OmNvcHlDb252ZXJ0ZWRJbWFnZUJ1ZmZlclRvRGVzdGluYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyRWZmZWN0Ojpjb3B5Q29udmVydGVkUGl4ZWxCdWZmZXJUb0Rlc3RpbmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6cmVxdWlyZXNQaXhlbEJ1ZmZlckNv
bG9yU3BhY2VDb252ZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6dHJh
bnNmb3JtUmVzdWx0Q29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJFZmZlY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6b3Bl
cmF0aW5nQ29sb3JTcGFjZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6
OnNldE9wZXJhdGluZ0NvbG9yU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0
OjpyZXN1bHRDb2xvclNwYWNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6c2V0UmVzdWx0Q29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9Tb3VyY2VHcmFwaGljLmg6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjpT
b3VyY2VHcmFwaGljKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGxhdGZvcm1TY3JlZW5HdGsu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAgICogcGxh
dGZvcm0vaW9zL1BsYXRmb3JtU2NyZWVuSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVu
Q29sb3JTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0U2NyZWVuUHJvcGVydGllcyk6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6Y29sbGVjdFNjcmVlblByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6c2Ny
ZWVuQ29sb3JTcGFjZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6VGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdXaXRoVmlld0ludG9D
b250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvU2NyZWVuRGlzcGxh
eUNhcHR1cmVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVuRGlzcGxheUNhcHR1cmVy
TWFjOjpjcmVhdGVEaXNwbGF5U3RyZWFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZp
ZGVvU291cmNlOjppbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vcGxheXN0
YXRpb24vUGxhdGZvcm1TY3JlZW5QbGF5U3RhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
Y3JlZW5Db2xvclNwYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGxhdGZvcm1TY3JlZW5X
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NyZWVuQ29sb3JTcGFjZSk6CisgICAgICAgICog
cGxhdGZvcm0vd3BlL1BsYXRmb3JtU2NyZWVuV1BFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNj
cmVlbkNvbG9yU3BhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaDoKKyAg
ICAgICAgKFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpMYXllckRhdGE6OmRlY29kZSk6
CisgICAgICAgICogcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGaWx0ZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Zp
bHRlcjo6YnVpbGQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjphbGxvY2F0ZUJhY2tp
bmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6YXBwbHkpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpwYXR0ZXJuRm9yRGVzY3JpcHRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
aGVtZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFN5c3Rl
bVByZXZpZXdCYWRnZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50UHJvZ3Jlc3NCYXIpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cGU6OmNyZWF0ZVJhc3RlclNoYXBlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlQ2xpcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXI6OmJ1aWxkUHJpbWl0aXZlcyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVNYXNrQW5kU3dhcENvbnRleHRGb3JUZXh0R3JhZGllbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250ZW50SW50
b01hc2tJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1h
c2tlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3JlYXRl
VGlsZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0Nv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRl
SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVm
ZmVyRm9yZWdyb3VuZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250
ZXh0Lmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFn
ZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVJbWFnZTo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKToKKwogMjAyMS0wNS0yNCAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW0xGQ10gQWRkIHN1cHBvcnQgZm9yIGdlb21ldHJ5L3F1aXJrcyB2aXJ0
dWFsIGZ1bmN0aW9ucwpJbmRleDogU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCShyZXZpc2lvbiAyNzc5NzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMTk3LDYg
KzExOTcsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvRGFzaEFycmF5LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9EZWNvZGluZ09wdGlvbnMuaAor
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmgKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkuaApAQCAtMTI5Myw2ICsxMjk0LDcgQEAgc2V0KFdl
YkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Bp
eGVsQnVmZmVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxGb3JtYXQuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNz
L1BsYXRmb3JtQ29sb3JTcGFjZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNw
bGF5LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlLmgKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlQnVmZmVyLmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CShyZXZp
c2lvbiAyNzc5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMTk1MCw2ICsxOTUwLDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JTcGFjZS5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yVXRpbGl0aWVzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29tcGxleFRleHRDb250cm9sbGVyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2Vu
ZXJhdGVkSW1hZ2UuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2Uu
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JDbGllbnQuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmNwcApJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJj
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvQ2xpcGJvYXJkSXRlbUJpbmRpbmdzRGF0YVNvdXJjZS5jcHAJKHJldmlzaW9uIDI3Nzk3OSkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW1C
aW5kaW5nc0RhdGFTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODUsNyArMjg1LDcgQEAg
dm9pZCBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291cmNlOjpDbAogCiAgICAgICAgIGF1dG8g
Yml0bWFwSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgICAgIGJpdG1hcEltYWdl
LT5zZXREYXRhKFdURk1vdmUoYnVmZmVyVG9TYW5pdGl6ZSksIHRydWUpOwotICAgICAgICBhdXRv
IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShiaXRtYXBJbWFnZS0+c2l6ZSgpLCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKGJpdG1hcEltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6
QkdSQTgpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKSB7CiAgICAgICAgICAgICBtX2RhdGEg
PSB7IG51bGxTdHJpbmcoKSB9OwogICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAJ
KHJldmlzaW9uIDI3Nzk3OSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9u
L01lZGlhTWV0YWRhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQg
QXJ0d29ya0ltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZCgKICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXJUb1Nhbml0aXplID0gbV9jYWNoZWRJbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwog
ICAgIGF1dG8gYml0bWFwSW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgYml0bWFw
SW1hZ2UtPnNldERhdGEoV1RGTW92ZShidWZmZXJUb1Nhbml0aXplKSwgdHJ1ZSk7Ci0gICAgYXV0
byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwg
UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKGJpdG1hcEltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdS
QTgpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpIHsKICAgICAgICAgbV9jYWxsYmFjayhudWxscHRy
KTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzc5
NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMjEtMDUtMjQgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgor
CisgICAgICAgIENvbnZlcnQgRGVzdGluYXRpb25Db2xvclNwYWNlIGZyb20gYW4gZW51bSB0byBj
bGFzcyB3cmFwcGluZyBhIHBsYXRmb3JtIGNvbG9yIHNwYWNlIChDR0NvbG9yU3BhY2VSZWYgZm9y
IENHIHBvcnRzLCBldGMuKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI2MTQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAg
ICAgICAgKiBwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oOgorICAgICAgICBBZGQgYWRkaW9u
YWwgU1BJIGZvciB3b3JraW5nIHdpdGggQ0dDb2xvclNwYWNlUmVmcy4KKwogMjAyMS0wNS0yNCAg
Q2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBTZXR0
aW5nczogSW5jcmVhc2UgY29udHJhc3QgaXNuJ3QgZGV0ZWN0ZWQgaW4gYnJvd3NlciB1bnRpbCBh
biBhZGRpdGlvbmFsIHNldHRpbmcgaXMgYXBwbGllZApJbmRleDogU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgJKHJldmlzaW9uIDI3Nzk3OSkKKysr
IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNDIsNiArMjQyLDcgQEAgdHlwZWRlZiB2b2lkICgqQ0dTTm90aWZ5UHJvY1B0
cikoQ0dTTm90aQogCiBXVEZfRVhURVJOX0NfQkVHSU4KIAorYm9vbCBDR0NvbG9yVHJhbnNmb3Jt
Q29udmVydENvbG9yQ29tcG9uZW50cyhDR0NvbG9yVHJhbnNmb3JtUmVmLCBDR0NvbG9yU3BhY2VS
ZWYsIENHQ29sb3JSZW5kZXJpbmdJbnRlbnQsIGNvbnN0IENHRmxvYXQgc3JjQ29tcG9uZW50c1td
LCBDR0Zsb2F0IGRzdENvbXBvbmVudHNbXSk7CiBDR0NvbG9yUmVmIENHQ29sb3JUcmFuc2Zvcm1D
b252ZXJ0Q29sb3IoQ0dDb2xvclRyYW5zZm9ybVJlZiwgQ0dDb2xvclJlZiwgQ0dDb2xvclJlbmRl
cmluZ0ludGVudCk7CiBDR0NvbG9yVHJhbnNmb3JtUmVmIENHQ29sb3JUcmFuc2Zvcm1DcmVhdGUo
Q0dDb2xvclNwYWNlUmVmLCBDRkRpY3Rpb25hcnlSZWYgYXR0cmlidXRlcyk7CiAKQEAgLTI5MSw2
ICsyOTIsOCBAQCBDR1N0eWxlUmVmIENHR1N0YXRlR2V0U3R5bGUoQ0dHU3RhdGVSZWYpCiBDR1N0
eWxlVHlwZSBDR1N0eWxlR2V0VHlwZShDR1N0eWxlUmVmKTsKIGNvbnN0IHZvaWQgKkNHU3R5bGVH
ZXREYXRhKENHU3R5bGVSZWYpOwogQ0dDb2xvclJlZiBDR1N0eWxlR2V0Q29sb3IoQ0dTdHlsZVJl
Zik7Citib29sIENHQ29sb3JTcGFjZUVxdWFsVG9Db2xvclNwYWNlKENHQ29sb3JTcGFjZVJlZiwg
Q0dDb2xvclNwYWNlUmVmKTsKK0NGU3RyaW5nUmVmIENHQ29sb3JTcGFjZUNvcHlJQ0NQcm9maWxl
RGVzY3JpcHRpb24oQ0dDb2xvclNwYWNlUmVmKTsKIAogI2lmIEhBVkUoQ0dQQVRIX0dFVF9OVU1C
RVJfT0ZfRUxFTUVOVFMpCiBzaXplX3QgQ0dQYXRoR2V0TnVtYmVyT2ZFbGVtZW50cyhDR1BhdGhS
ZWYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zOTk2LDYgKzM5OTYs
NyBAQAogCQlCQzIzRjBEQjBEQUZGNEE0MDA5RkRDOTEgLyogR2VuZXJhdGVkSW1hZ2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjNGMERBMERBRkY0
QTQwMDlGREM5MSAvKiBHZW5lcmF0ZWRJbWFnZS5oICovOyB9OwogCQlCQzI3NEIyRjE0MEVCRUIy
MDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI3NEIyRTE0MEVCRUIyMDBFQURGQTYgLyog
Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggKi87IH07CiAJCUJDMkNCRjRFMTQwRjFBQkQwMDM4
NzlCRSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJDQkY0QjE0MEYxQTY1MDAzODc5QkUgLyogSlNXZWJHTENv
bnRleHRFdmVudC5oICovOyB9OworCQlCQzJDQ0ExMDI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGlu
YXRpb25Db2xvclNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzJDQ0EwRTI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMz
MDVDN0EwQzA3NkJCMzAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzA1Qzc4MEMwNzZCQjMwMENE
MjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50LmggKi87IH07CiAJCUJDMzQ4QkQ0MERCN0Y4MDQw
MDRBQkFCOSAvKiBKU1hNTEh0dHBSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzM0OEJEMjBEQjdGODA0MDA0QUJBQjkgLyogSlNYTUxIdHRw
UmVxdWVzdC5oICovOyB9OwogCQlCQzM0OEJENDBEQjdGODA0MDA0QUJBQkEgLyogV2ViQ29yZUpT
QnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMzQ4QkQyMERCN0Y4MDQwMDRBQkFCQSAvKiBXZWJDb3JlSlNCdWlsdGlucy5oICovOyB9OwpA
QCAtNDAwNyw2ICs0MDA4LDcgQEAKIAkJQkMzQkU5OTkwRTlDMUU1RDAwODM1NTg4IC8qIFJlbmRl
clNjcm9sbGJhclRoZW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzNCRTk5ODBFOUMxRTVEMDA4MzU1ODggLyogUmVuZGVyU2Nyb2xsYmFyVGhlbWUu
aCAqLzsgfTsKIAkJQkMzQzM5QjcwQzBEM0Q4RDAwNUY0RDdBIC8qIEpTTWVkaWFMaXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzNDMzlCNTBDMEQz
RDhEMDA1RjREN0EgLyogSlNNZWRpYUxpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzNEODVCQzFDMEUyRTdBMDBEM0I2MTAgLyogSlNIVE1M
UGljdHVyZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDODA4QjEzMUMwRTJCMzUwMDY2RkQ2QiAvKiBKU0hUTUxQaWN0dXJlRWxlbWVudC5o
ICovOyB9OworCQlCQzNFNjI0MzI2NTk3OTE4MDA1NDhBQ0QgLyogUGxhdGZvcm1Db2xvclNwYWNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzNFNjI0
MjI2NTk3OTE3MDA1NDhBQ0QgLyogUGxhdGZvcm1Db2xvclNwYWNlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM0MzY4RTgwQzIyNkUzMjAwNUVG
QjVGIC8qIFJlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDNDM2OEU3MEMyMjZFMzIwMDVFRkI1RiAvKiBSZWN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM0NkMxRkQwQzBEREM4RjAwMjBDRkMz
IC8qIEpTQ1NTRm9udEZhY2VSdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzQ2QzFGMzBDMEREQzhGMDAyMENGQzMgLyogSlNDU1NGb250RmFjZVJ1
bGUuaCAqLzsgfTsKIAkJQkM0NkMxRkYwQzBEREM4RjAwMjBDRkMzIC8qIEpTQ1NTSW1wb3J0UnVs
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM0NkMx
RjUwQzBEREM4RjAwMjBDRkMzIC8qIEpTQ1NTSW1wb3J0UnVsZS5oICovOyB9OwpAQCAtMTQxMzks
NiArMTQxNDEsOCBAQAogCQlCQzI5OTM1QzE3QTFERDU4MDBCQ0U4ODAgLyogQ29sb3JJbnB1dFR5
cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29sb3JJbnB1dFR5
cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJDQkY0QjE0MEYxQTY1MDAz
ODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1dlYkdMQ29udGV4dEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDMkNCRjdBMTQwRjFENTgwMDM4NzlCRSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR0xDb250ZXh0RXZlbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJDQ0EwRTI2NTVEREIyMDBCOEMw
MzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlc3RpbmF0aW9u
Q29sb3JTcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJDQ0EwRjI2NTVE
REIyMDBCOEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDMkVENTU0MEM2QjlCRDMwMDkyMEJGRiAvKiBKU0VsZW1lbnRDdXN0b20uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFbGVtZW50Q3VzdG9tLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyRUQ2QkIwQzZCRDJGMDAwOTIwQkZGIC8qIEpT
QXR0ckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0F0
dHJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzMwNUM3NzBDMDc2
QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MT2JqZWN0RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xNDE2Miw2ICsxNDE2Niw3IEBACiAJCUJDM0JFOUFBMEU5QzI0
MjAwMDgzNTU4OCAvKiBSZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNjcm9sbGJhclBhcnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCQzNDMzlCNDBDMEQzRDhEMDA1RjREN0EgLyogSlNNZWRpYUxpc3Qu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFMaXN0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzQzM5QjUwQzBEM0Q4RDAwNUY0RDdB
IC8qIEpTTWVkaWFMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01l
ZGlhTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzNFNjI0MjI2NTk3OTE3
MDA1NDhBQ0QgLyogUGxhdGZvcm1Db2xvclNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBsYXRmb3JtQ29sb3JTcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQzQzNjhFNzBDMjI2RTMyMDA1RUZCNUYgLyogUmVjdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
QzQ2QzFFRDBDMEREQkRGMDAyMENGQzMgLyogSlNDU1NSdWxlQ3VzdG9tLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NTU1J1bGVDdXN0b20uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzQ2QzFGMjBDMEREQzhGMDAyMENGQzMgLyogSlNDU1NG
b250RmFjZVJ1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
Q1NTRm9udEZhY2VSdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2OTMw
LDYgKzI2OTM1LDggQEAKIAkJCQkyRDJGQzA1NTE0NjBDRDZGMDAyNjM2MzMgLyogQ3Jvc3NmYWRl
R2VuZXJhdGVkSW1hZ2UuaCAqLywKIAkJCQlBOENCNDEwMjBFODVCOEE1MDAzMkM0RjAgLyogRGFz
aEFycmF5LmggKi8sCiAJCQkJNTU1MTMwMDAxRTdDQ0NDQTAwQTY5RTM4IC8qIERlY29kaW5nT3B0
aW9ucy5oICovLAorCQkJCUJDMkNDQTBGMjY1NUREQjIwMEI4QzAzNSAvKiBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UuY3BwICovLAorCQkJCUJDMkNDQTBFMjY1NUREQjIwMEI4QzAzNSAvKiBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UuaCAqLywKIAkJCQk0OUZDN0E0RjE0NDRBRjVGMDBBNUQ4NjQgLyogRGlz
cGxheVJlZnJlc2hNb25pdG9yLmNwcCAqLywKIAkJCQk0OUFGMkQ2ODE0NDM1RDA1MDAxNkE3ODQg
LyogRGlzcGxheVJlZnJlc2hNb25pdG9yLmggKi8sCiAJCQkJMkQyOUVDQzExOTJFQ0M4MzAwOTg0
Qjc4IC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudC5jcHAgKi8sCkBAIC0yNzEwNiw2ICsy
NzExMyw3IEBACiAJCQkJQkM2MzVFOEIyNjRDMkNBRTAwMEVGMzNBIC8qIFBpeGVsQnVmZmVyRm9y
bWF0LmggKi8sCiAJCQkJQkM2MzVFOTAyNjRDNDY5RjAwMEVGMzNBIC8qIFBpeGVsRm9ybWF0LmNw
cCAqLywKIAkJCQlCQ0E1NTkxMjI2M0RCRDc5MDA3RjE5QjMgLyogUGl4ZWxGb3JtYXQuaCAqLywK
KwkJCQlCQzNFNjI0MjI2NTk3OTE3MDA1NDhBQ0QgLyogUGxhdGZvcm1Db2xvclNwYWNlLmggKi8s
CiAJCQkJNzI2RDU2RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2UuaCAqLywKIAkJ
CQk3MkJBQzNBNjIzRTE3MzI4MDA4RDc0MUMgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlci5oICovLAog
CQkJCTU1MDY0MEFEMjQwNzU2REEwMEFBRTA0NSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2Vu
ZC5oICovLApAQCAtMzIyNDAsNiArMzIyNDgsNyBAQAogCQkJCTk0Nzk0OTI1MUUwMzA4QUYwMDAx
OEQ4NSAvKiBEZXByZWNhdGVkQ1NTT01WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTQ3OTQ5
M0QxRTA0NjNCNjAwMDE4RDg1IC8qIERlcHJlY2F0ZWRDU1NPTVZhbHVlTGlzdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJN0NCRDEyOUUxRjk4QjkwRTAwMTI3RDI5IC8qIERlcHJlY2F0ZWRHbG9iYWxT
ZXR0aW5ncy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMyQ0NBMTAyNjU1RERCMjAwQjhDMDM1IC8q
IERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDExMjIzQzUyNjAz
NTY3RDAwQjBBMEI2IC8qIERldGFjaGVkUlRDRGF0YUNoYW5uZWwuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE3QzlBQkY5MTM1N0EzQkYwMEY1NTAzRiAvKiBEZXRhaWxzTWFya2VyQ29udHJvbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTFFRDc3OEQxQkUzMjk0MDAwREMxNzkxIC8qIERldmljZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zMjI5MSw2ICszMjMwMCw3IEBACiAJCQkJMUNFOEQxMjcyNjE4NUMw
RTAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRTVGQkQ1MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdEl0ZW1zLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGNDM3N0Q1NzI1NTFDOUM2MDA4MEFCRkUgLyogRGlzcGxheUxp
c3RJdGVtVHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMzRTYyNDMyNjU5NzkxODAwNTQ4QUNE
IC8qIFBsYXRmb3JtQ29sb3JTcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNFOEQxMkUyNjE4
NjFDNDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRTVGQkQ3MUMzREQ1MUUwMDA3QTJDQSAvKiBEaXNwbGF5TGlzdFJlY29yZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkU1RkJEOTFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3RSZXBs
YXllci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAJKHJldmlzaW9uIDI3Nzk3OSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEwODIsNyArMTA4Miw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgICAgICBQaXhlbEJ1ZmZlckZvcm1h
dCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZv
cm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CiAgICAgICAgIGNv
bnN0IEludFNpemUmIGxvZ2ljYWxTaXplID0gYnVmZmVyLT5sb2dpY2FsU2l6ZSgpOwogICAgICAg
ICBhdXRvIHBpeGVsQnVmZmVyID0gYnVmZmVyLT5nZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIHsgSW50
UG9pbnQ6Onplcm8oKSwgbG9naWNhbFNpemUgfSk7CiAgICAgICAgIGlmICghcGl4ZWxCdWZmZXIp
IHsKQEAgLTMxODcsNyArMzE4Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsg
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICAgICAgUGl4ZWxCdWZmZXJGb3Jt
YXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4ZWxG
b3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9OwogICAgICAgICBh
dXRvIHBpeGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQsIGltYWdlRGF0
YVNpemUsIGFycmF5QnVmZmVyLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICBpZiAoIXBpeGVs
QnVmZmVyKSB7CiAgICAgICAgICAgICBmYWlsKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCShyZXZpc2lvbiAyNzc5NzkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw3
ICsxMTYsNyBAQCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlCiAKICAg
ICAvLyBUcmFuc2Zvcm0gSW1hZ2UgaW50byBJbWFnZUJ1ZmZlci4KICAgICAvLyBGSVhNRSAoMTQ5
NDI0KTogVGhpcyBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVy
YXRlZC4KLSAgICBhdXRvIHRleHR1cmUgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwg
UGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIHRleHR1cmUgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKHNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghdGV4dHVyZSkK
ICAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwCShyZXZpc2lvbiAyNzc5NzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTIsNyArOTIsNyBAQCBJbWFnZSogQ3VzdG9tUGFpbnRDYW52YXM6OmNvcGllZEltYWdlKCkgCiAg
ICAgaWYgKCF3aWR0aCgpIHx8ICFoZWlnaHQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICBtX2NvcGllZEJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBSZW5kZXJp
bmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBp
eGVsRm9ybWF0OjpCR1JBOCwgbnVsbHB0cik7CisgICAgbV9jb3BpZWRCdWZmZXIgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCwgbnVsbHB0cik7
CiAgICAgaWYgKCFtX2NvcGllZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludEltYWdlLmNwcAkocmV2aXNpb24gMjc3
OTc5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludEltYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgQ3VzdG9tUGFpbnRJbWFnZTo6ZHJhd1Bh
dHRlcm4oR3JhcGgKICAgICBhZGp1c3RlZFBhdHRlcm5DVE0uc2NhbGUoMS4wIC8geFNjYWxlLCAx
LjAgLyB5U2NhbGUpOwogICAgIGFkanVzdGVkU3JjUmVjdC5zY2FsZSh4U2NhbGUsIHlTY2FsZSk7
CiAKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVy
KGFkanVzdGVkU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBkZXN0Q29udGV4dCk7
CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihh
ZGp1c3RlZFNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBkZXN0Q29udGV4dCk7
CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybjsKICAgICBkb0N1c3RvbVBhaW50KGJ1
ZmZlci0+Y29udGV4dCgpLCBhZGp1c3RlZFNpemUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5jcHAJKHJldmlzaW9uIDI3Nzk3OSkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MjUsNyAr
ODI1LDcgQEAgUmVmUHRyPE1lZGlhU2FtcGxlPiBIVE1MQ2FudmFzRWxlbWVudDo6dAogICAgIC8v
IEZJWE1FOiBUaGlzIGNhbiBsaWtlbHkgYmUgb3B0aW1pemVkIHF1aXRlIGEgYml0LCBlc3BlY2lh
bGx5IGluIHRoZSBjYXNlcyB3aGVyZQogICAgIC8vIHRoZSBJbWFnZUJ1ZmZlciBpcyBiYWNrZWQg
YnkgR1BVIG1lbW9yeSBhbHJlYWR5IGFuZC9vciBpcyBpbiB0aGUgR1BVIHByb2Nlc3MgYnkKICAg
ICAvLyBzcGVjaWFsaXppbmcgdG9NZWRpYVNhbXBsZSgpIGluIEltYWdlQnVmZmVyQmFja2VuZCB0
byBub3QgdXNlIGdldFBpeGVsQnVmZmVyKCkuCi0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IGltYWdl
QnVmZmVyLT5nZXRQaXhlbEJ1ZmZlcih7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVs
dGlwbGllZCwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Ig
fSwgeyB7IH0sIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpIH0pOworICAgIGF1dG8gcGl4ZWxC
dWZmZXIgPSBpbWFnZUJ1ZmZlci0+Z2V0UGl4ZWxCdWZmZXIoeyBBbHBoYVByZW11bHRpcGxpY2F0
aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCkgfSwgeyB7IH0sIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpIH0pOwog
ICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC05NTUs
NyArOTU1LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRlSW1hZ2VCdWZmZQogICAg
IGF1dG8gW2NvbG9yU3BhY2UsIHBpeGVsRm9ybWF0XSA9IFsmXSB7CiAgICAgICAgIGlmIChtX2Nv
bnRleHQpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpwYWlyIHsgbV9jb250ZXh0LT5jb2xvclNw
YWNlKCksIG1fY29udGV4dC0+cGl4ZWxGb3JtYXQoKSB9OwotICAgICAgICByZXR1cm4gc3RkOjpw
YWlyIHsgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTggfTsK
KyAgICAgICAgcmV0dXJuIHN0ZDo6cGFpciB7IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBQaXhlbEZvcm1hdDo6QkdSQTggfTsKICAgICB9KCk7CiAKICAgICBzZXRJbWFnZUJ1ZmZlcihJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgcmVuZGVyaW5nTW9kZSwgdXNlRGlzcGxheUxpc3Qs
IFJlbmRlcmluZ1B1cnBvc2U6OkNhbnZhcywgMSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQsIGhv
c3RXaW5kb3cpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNw
cAkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgSFRNTFZpZGVv
RWxlbWVudDo6bWVkaWFQbGF5ZXJGaXJzdFYKICAgICAgICAgcmVuZGVyZXItPnVwZGF0ZUZyb21F
bGVtZW50KCk7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSFRNTFZpZGVvRWxlbWVudDo6Y3Jl
YXRlQnVmZmVyRm9yUGFpbnRpbmcoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2Rl
IHJlbmRlcmluZ01vZGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZv
cm1hdCBwaXhlbEZvcm1hdCkgY29uc3QKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSFRNTFZpZGVvRWxl
bWVudDo6Y3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5k
ZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CiB7CiAgICAgYXV0byogaG9z
dFdpbmRvdyA9IGRvY3VtZW50KCkudmlldygpICYmIGRvY3VtZW50KCkudmlldygpLT5yb290KCkg
PyBkb2N1bWVudCgpLnZpZXcoKS0+cm9vdCgpLT5ob3N0V2luZG93KCkgOiBudWxscHRyOwogICAg
IGF1dG8gc2hvdWxkVXNlRGlzcGxheUxpc3QgPSBkb2N1bWVudCgpLnNldHRpbmdzKCkuZGlzcGxh
eUxpc3REcmF3aW5nRW5hYmxlZCgpID8gU2hvdWxkVXNlRGlzcGxheUxpc3Q6OlllcyA6IFNob3Vs
ZFVzZURpc3BsYXlMaXN0OjpObzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVv
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxl
bWVudC5oCShyZXZpc2lvbiAyNzc5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTIgKzMzLDEyIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlOwogY2xhc3MgSFRNTElt
YWdlTG9hZGVyOwogY2xhc3MgSW1hZ2VCdWZmZXI7CiBjbGFzcyBSZW5kZXJWaWRlbzsKIGNsYXNz
IFBpY3R1cmVJblBpY3R1cmVPYnNlcnZlcjsKIAotZW51bSBjbGFzcyBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UgOiB1aW50OF90OwogZW51bSBjbGFzcyBQaXhlbEZvcm1hdCA6IHVpbnQ4X3Q7CiBlbnVt
IGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOwogCkBAIC03Miw3ICs3Miw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAot
ICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQnVmZmVyRm9yUGFpbnRpbmcoY29uc3QgRmxv
YXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBQaXhlbEZvcm1h
dCkgY29uc3Q7CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVCdWZmZXJGb3JQYWludGlu
Zyhjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmLCBQaXhlbEZvcm1hdCkgY29uc3Q7CiAKICAgICAvLyBVc2VkIGJ5IGNhbnZhcyB0byBn
YWluIHJhdyBwaXhlbCBhY2Nlc3MKICAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZUJpdG1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9JbWFnZUJpdG1hcC5jcHAJKHJldmlzaW9uIDI3Nzk3OSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSW1hZ2VCaXRtYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCwxMiArODQsMTIgQEAgUmVm
UHRyPEltYWdlQnVmZmVyPiBJbWFnZUJpdG1hcDo6Y3JlYXRlSQogICAgICAgICBhdXRvJiBkb2N1
bWVudCA9IGRvd25jYXN0PERvY3VtZW50PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKICAgICAg
ICAgaWYgKGRvY3VtZW50LnZpZXcoKSAmJiBkb2N1bWVudC52aWV3KCktPnJvb3QoKSkgewogICAg
ICAgICAgICAgYXV0byBob3N0V2luZG93ID0gZG9jdW1lbnQudmlldygpLT5yb290KCktPmhvc3RX
aW5kb3coKTsKLSAgICAgICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJl
bmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0OjpObywgUmVuZGVyaW5nUHVycG9zZTo6
Q2FudmFzLCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4
ZWxGb3JtYXQ6OkJHUkE4LCBob3N0V2luZG93KTsKKyAgICAgICAgICAgIHJldHVybiBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0OjpO
bywgUmVuZGVyaW5nUHVycG9zZTo6Q2FudmFzLCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGhvc3RXaW5kb3cpOwogICAg
ICAgICB9CiAgICAgfQogCiAgICAgLy8gRklYTUUgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxODQ4
Mj4gRW5hYmxlIHdvcmtlciBiYXNlZCBJbWFnZUJpdG1hcCBhbmQgT2Zmc2NyZWVuQ2FudmFzIGRy
YXdpbmcgdG8gdXNlIEdQVSBQcm9jZXNzIHJlbmRlcmluZwotICAgIHJldHVybiBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIHJldHVybiBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25TY2FsZSwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiB9CiAKIHZv
aWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwgSW1hZ2VCaXRtYXA6OlNvdXJjZSYmIHNvdXJjZSwgSW1hZ2VC
aXRtYXBPcHRpb25zJiYgb3B0aW9ucywgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQpA
QCAtNTA0LDcgKzUwNCw3IEBAIHZvaWQgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoU2NyaXB0
RXgKICAgICBhdXRvIG91dHB1dFNpemUgPSBvdXRwdXRTaXplRm9yU291cmNlUmVjdGFuZ2xlKHNv
dXJjZVJlY3RhbmdsZSwgb3B0aW9ucyk7CiAKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9y
IGNvbG9yIHNwYWNlcyAvIHBpeGVsIGZvcm1hdHMgdG8gSW1hZ2VCaXRtYXAuCi0gICAgYXV0byBi
aXRtYXBEYXRhID0gdmlkZW8tPmNyZWF0ZUJ1ZmZlckZvclBhaW50aW5nKG91dHB1dFNpemUsIGJ1
ZmZlclJlbmRlcmluZ01vZGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKKyAgICBhdXRvIGJpdG1hcERhdGEgPSB2aWRlby0+Y3JlYXRlQnVmZmVyRm9y
UGFpbnRpbmcob3V0cHV0U2l6ZSwgYnVmZmVyUmVuZGVyaW5nTW9kZSwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFiaXRtYXBEYXRh
KSB7CiAgICAgICAgIHJlc29sdmVXaXRoQmxhbmtJbWFnZUJ1ZmZlcihzY3JpcHRFeGVjdXRpb25D
b250ZXh0LCAhdGFpbnRzT3JpZ2luKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuc2VjdXJpdHlPcmln
aW4oKSwgKnZpZGVvKSwgV1RGTW92ZShwcm9taXNlKSk7CiAgICAgICAgIHJldHVybjsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAJKHJldmlzaW9uIDI3Nzk3OSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDUxLDE0ICs0NTEsMTQgQEAgdm9pZCBPZmZzY3JlZW5DYW52YXM6OmNvbW1pdFRvUGxh
Y2Vob2xkZQogICAgICAgICBtX2NvbnRleHQtPnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFz
KCk7CiAKICAgICBpZiAobV9wbGFjZWhvbGRlckRhdGEtPmJ1ZmZlclBpcGVTb3VyY2UpIHsKLSAg
ICAgICAgYXV0byBidWZmZXJDb3B5ID0gaW1hZ2VCdWZmZXItPmNvcHlSZWN0VG9CdWZmZXIoRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IsIGltYWdlQnVmZmVyLT5jb250ZXh0KCkpOworICAgICAgICBh
dXRvIGJ1ZmZlckNvcHkgPSBpbWFnZUJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihGbG9hdFJlY3Qo
RmxvYXRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKICAgICAgICAgaWYgKGJ1
ZmZlckNvcHkpCiAgICAgICAgICAgICBtX3BsYWNlaG9sZGVyRGF0YS0+YnVmZmVyUGlwZVNvdXJj
ZS0+aGFuZGxlKFdURk1vdmUoYnVmZmVyQ29weSkpOwogICAgIH0KIAogICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3BsYWNlaG9sZGVyRGF0YS0+YnVmZmVyTG9jayB9OwogICAgIGJvb2wgc2hvdWxkUHVz
aEJ1ZmZlciA9ICFtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlcjsKLSAgICBt
X3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5jb3B5
UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2Fs
U2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBpbWFnZUJ1ZmZlci0+Y29udGV4
dCgpKTsKKyAgICBtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlciA9IGltYWdl
QnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlQnVm
ZmVyLT5sb2dpY2FsU2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGltYWdl
QnVmZmVyLT5jb250ZXh0KCkpOwogICAgIGlmIChtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0Nv
bW1pdEJ1ZmZlciAmJiBzaG91bGRQdXNoQnVmZmVyKQogICAgICAgICBwdXNoQnVmZmVyVG9QbGFj
ZWhvbGRlcigpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCShyZXZpc2lvbiAyNzc5NzkpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1l
cy5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5UGFyc2VySGVscGVycy5oIgogI2luY2x1ZGUgIkNT
U1Byb3BlcnR5UGFyc2VyV29ya2VyU2FmZS5oIgotI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKICNp
bmNsdWRlICJHcmFkaWVudC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAi
SW1hZ2VEYXRhLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5j
bHVkZSAiQ2FudmFzUGF0dGVybi5oIgotI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRl
ICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVt
ZW50LmgiCkBAIC05MCw3ICs5MCw3IEBAIFBpeGVsRm9ybWF0IENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQ6OnBpeGUKIAogRGVzdGluYXRpb25Db2xvclNwYWNlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6
OmNvbG9yU3BhY2UoKSBjb25zdAogewotICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0I7CisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpOwogfQogCiBi
b29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OndvdWxkVGFpbnRPcmlnaW4oY29uc3QgQ2FudmFz
UGF0dGVybiogcGF0dGVybikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgJKHJldmlzaW9uIDI3Nzk3OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzcsMTMgKzM3LDEzIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENh
bnZhc1BhdHRlcm47CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7CiBjbGFzcyBIVE1MQ2Fu
dmFzRWxlbWVudDsKIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiBjbGFzcyBIVE1MVmlkZW9FbGVt
ZW50OwogY2xhc3MgSW1hZ2VCaXRtYXA7CiBjbGFzcyBUeXBlZE9NQ1NTSW1hZ2VWYWx1ZTsKIGNs
YXNzIFdlYkdMT2JqZWN0OwotZW51bSBjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgOiB1aW50
OF90OwogZW51bSBjbGFzcyBQaXhlbEZvcm1hdCA6IHVpbnQ4X3Q7CiAKIGNsYXNzIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQgOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdD
b250ZXh0LmNwcAkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUs
NyArOTUsNyBAQCB2b2lkIEltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dDo6c2V0T3V0CiAgICAg
ICAgIC8vIG9ubHkgcmVhc29uIEkgY2FuIHRoaW5rIG9mIGlzIHRvRGF0YVVSTCgpLCBidXQgdGhh
dCBkb2Vzbid0IHNlZW0gbGlrZQogICAgICAgICAvLyBhIGdvb2QgZW5vdWdoIGFyZ3VtZW50IHRv
IHdhc3RlIG1lbW9yeS4KIAotICAgICAgICBjYW52YXMoKS0+c2V0SW1hZ2VCdWZmZXJBbmRNYXJr
RGlydHkoSW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUoY2FudmFzKCktPndpZHRoKCksIGNh
bnZhcygpLT5oZWlnaHQoKSksIGJ1ZmZlclJlbmRlcmluZ01vZGUsIDEsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CisgICAgICAgIGNhbnZhcygpLT5z
ZXRJbWFnZUJ1ZmZlckFuZE1hcmtEaXJ0eShJbWFnZUJ1ZmZlcjo6Y3JlYXRlKEZsb2F0U2l6ZShj
YW52YXMoKS0+d2lkdGgoKSwgY2FudmFzKCktPmhlaWdodCgpKSwgYnVmZmVyUmVuZGVyaW5nTW9k
ZSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCkp
OwogCiAgICAgICAgIC8vIDEuNC4gU2V0IHRoZSBvdXRwdXQgYml0bWFwJ3Mgb3JpZ2luLWNsZWFu
IGZsYWcgdG8gdHJ1ZS4KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVm
aW5lZENvbG9yU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1ByZWRlZmluZWRDb2xvclNwYWNlLmNwcAkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHJl
ZGVmaW5lZENvbG9yU3BhY2UuaCIKIAotI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRl
ICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsMzMgKzM1LDI2IEBAIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSB0b0Rlc3RpbmF0aW9uQ29sb3IKIHsKICAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKICAg
ICBjYXNlIFByZWRlZmluZWRDb2xvclNwYWNlOjpTUkdCOgotICAgICAgICByZXR1cm4gRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCOworICAgICAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCk7CiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlf
UDMpCiAgICAgY2FzZSBQcmVkZWZpbmVkQ29sb3JTcGFjZTo6RGlzcGxheVAzOgotICAgICAgICBy
ZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5UDM7CisgICAgICAgIHJldHVybiBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMygpOwogI2VuZGlmCiAgICAgfQogCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQjsKKyAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiB9CiAKLU9w
dGlvbmFsPFByZWRlZmluZWRDb2xvclNwYWNlPiB0b1ByZWRlZmluZWRDb2xvclNwYWNlKERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKQorT3B0aW9uYWw8UHJlZGVmaW5lZENvbG9yU3Bh
Y2U+IHRvUHJlZGVmaW5lZENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBj
b2xvclNwYWNlKQogewotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNhc2UgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCOgorICAgIGlmIChjb2xvclNwYWNlID09IERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpKQogICAgICAgICByZXR1cm4gUHJlZGVmaW5lZENvbG9yU3BhY2U6
OlNSR0I7Ci0jaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQot
ICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCOgotICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotI2VuZGlmCiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQ
QUNFX0RJU1BMQVlfUDMpCi0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQ
MzoKKyAgICBpZiAoY29sb3JTcGFjZSA9PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQ
MygpKQogICAgICAgICByZXR1cm4gUHJlZGVmaW5lZENvbG9yU3BhY2U6OkRpc3BsYXlQMzsKICNl
bmRpZgotICAgIH0KIAotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1ByZWRlZmlu
ZWRDb2xvclNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
UHJlZGVmaW5lZENvbG9yU3BhY2UuaAkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvUHJlZGVmaW5lZENvbG9yU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gY2xhc3MgRGVzdGlu
YXRpb25Db2xvclNwYWNlIDogdWludDhfdDsKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsK
IAogZW51bSBjbGFzcyBQcmVkZWZpbmVkQ29sb3JTcGFjZSB7CiAgICAgU1JHQgpAQCAtNDAsNyAr
NDAsNyBAQCBlbnVtIGNsYXNzIFByZWRlZmluZWRDb2xvclNwYWNlIHsKIH07CiAKIERlc3RpbmF0
aW9uQ29sb3JTcGFjZSB0b0Rlc3RpbmF0aW9uQ29sb3JTcGFjZShQcmVkZWZpbmVkQ29sb3JTcGFj
ZSk7Ci1PcHRpb25hbDxQcmVkZWZpbmVkQ29sb3JTcGFjZT4gdG9QcmVkZWZpbmVkQ29sb3JTcGFj
ZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UpOworT3B0aW9uYWw8UHJlZGVmaW5lZENvbG9yU3BhY2U+
IHRvUHJlZGVmaW5lZENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CiAK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAJKHJldmlzaW9uIDI3Nzk3OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03NjIzLDcgKzc2MjMsNyBAQCBJbWFnZUJ1ZmZlciogV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6CiAgICAgfQogCiAgICAgLy8gRklYTUUgKDE0OTQyMyk6IFNob3VsZCB0aGlz
IEltYWdlQnVmZmVyIGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkPwotICAgIGF1dG8g
dGVtcCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVy
YXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgp
OworICAgIGF1dG8gdGVtcCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCF0ZW1wKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICBBU1NFUlQobV9idWZmZXJzLnNpemUoKSA+IDApOwpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sVGV4dFRy
YWNrQ29udGFpbmVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDI3Nzk3OSkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MTgsNyArNDE4LDcgQEAgUmVmUHRyPEltYWdlPiBNZWRpYUNv
bnRyb2xUZXh0VHJhY2tDb250YQogICAgIEludFJlY3QgcGFpbnRpbmdSZWN0ID0gSW50UmVjdChJ
bnRQb2ludCgpLCBsYXllci0+c2l6ZSgpKTsKIAogICAgIC8vIEZJWE1FICgxNDk0MjIpOiBUaGlz
IGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkLgotICAg
IGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGluZ1JlY3Quc2l6ZSgpLCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gYnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGluZ1JlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2Rl
OjpVbmFjY2VsZXJhdGVkLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ2FudmFzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ2FudmFzLmNwcAkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNDksNyArMTE0
OSw3IEBAIGludCBJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YShEdXBsaWMKICAgICAgICAg
ICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBpbWFnZUVsZW1lbnQtPmNhY2hlZElt
YWdlKCkpIHsKICAgICAgICAgICAgICAgICBJbWFnZSogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1h
Z2UoKTsKICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UgIT0gJkltYWdlOjpudWxs
SW1hZ2UoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
LCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7Cisg
ICAgICAgICAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KGltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgICAgICAgICAg
ICAgICAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0UG9p
bnQoMCwgMCkpOwogICAgICAgICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRv
RGF0YVVSTCgiaW1hZ2UvcG5nIik7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTE2Myw3ICsxMTYz
LDcgQEAgaW50IEluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKER1cGxpYwogCiAgICAgICAg
ICAgICB1bnNpZ25lZCB2aWRlb1dpZHRoID0gdmlkZW9FbGVtZW50LT52aWRlb1dpZHRoKCk7CiAg
ICAgICAgICAgICB1bnNpZ25lZCB2aWRlb0hlaWdodCA9IHZpZGVvRWxlbWVudC0+dmlkZW9IZWln
aHQoKTsKLSAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KEZsb2F0U2l6ZSh2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCksIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJH
UkE4KTsKKyAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KEZsb2F0U2l6ZSh2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCksIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6
QkdSQTgpOwogICAgICAgICAgICAgaWYgKGltYWdlQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAg
dmlkZW9FbGVtZW50LT5wYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChpbWFnZUJ1ZmZlci0+Y29u
dGV4dCgpLCBGbG9hdFJlY3QoMCwgMCwgdmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpKTsKICAgICAg
ICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7
CkBAIC0xMjAwLDcgKzEyMDAsNyBAQCBpbnQgSW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEo
RHVwbGljCiAgICAgICAgICAgICBpZiAoYXV0byogY2FjaGVkSW1hZ2UgPSBjc3NJbWFnZVZhbHVl
LT5pbWFnZSgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+
aW1hZ2UoKTsKICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UgIT0gJkltYWdlOjpu
dWxsSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShpbWFnZS0+c2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJh
dGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKGltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgICAgICAg
ICAgICAgICAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFnZSgqaW1hZ2UsIEZsb2F0
UG9pbnQoMCwgMCkpOwogICAgICAgICAgICAgICAgICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXIt
PnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTQ0MSw3ICsx
NDQxLDcgQEAgUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJbnNwZWN0bwogewogICAg
IGF1dG8mIHRpbGVJbWFnZSA9IGNhbnZhc1BhdHRlcm4ucGF0dGVybigpLnRpbGVJbWFnZSgpOwog
ICAgIEZsb2F0UmVjdCByZWN0ID0geyB7IH0sIHRpbGVJbWFnZS5zaXplKCkgfTsKLSAgICBhdXRv
IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0aWxlSW1hZ2Uuc2l6ZSgpLCBSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Is
IFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUodGlsZUltYWdlLnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwg
MSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAg
ICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5kcmF3TmF0aXZlSW1hZ2UodGlsZUltYWdlLCB0aWxl
SW1hZ2Uuc2l6ZSgpLCByZWN0LCByZWN0KTsKIAogICAgIFN0cmluZyByZXBlYXQ7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWUuY3BwCShyZXZpc2lvbiAyNzc5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyOSw3ICs1MjksNyBAQCB2b2lkIENo
cm9tZTo6c2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vCiAgICAgbV9jbGllbnQuc2V0Q3Vyc29y
SGlkZGVuVW50aWxNb3VzZU1vdmVzKGhpZGRlblVudGlsTW91c2VNb3Zlcyk7CiB9CiAKLVJlZlB0
cjxJbWFnZUJ1ZmZlcj4gQ2hyb21lOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
IHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSBwdXJw
b3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNw
YWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29uc3QKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4g
Q2hyb21lOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmlu
Z01vZGUgcmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSBwdXJwb3NlLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4
ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY2xpZW50LmNyZWF0
ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHB1cnBvc2UsIHJlc29sdXRpb25TY2Fs
ZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCShy
ZXZpc2lvbiAyNzc5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEN1cnNvcihjb25z
dCBDdXJzb3ImKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEN1cnNvckhpZGRlblVudGlsTW91c2VN
b3Zlcyhib29sKSBvdmVycmlkZTsKIAotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9z
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0KSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2Us
IGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUGl4
ZWxGb3JtYXQpIGNvbnN0IG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIFJlZlB0
cjxHcmFwaGljc0NvbnRleHRHTD4gY3JlYXRlR3JhcGhpY3NDb250ZXh0R0woY29uc3QgR3JhcGhp
Y3NDb250ZXh0R0xBdHRyaWJ1dGVzJikgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDI3Nzk3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzOSw3ICszMzksNyBAQCBwdWJs
aWM6CiAgICAgCiAgICAgdmlydHVhbCBEaXNwbGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KiBkaXNw
bGF5UmVmcmVzaE1vbml0b3JGYWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogCi0g
ICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZs
b2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0LCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0KSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9Cisg
ICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZs
b2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0LCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCkgY29uc3QgeyByZXR1cm4gbnVsbHB0
cjsgfQogCiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIHZpcnR1YWwgUmVmUHRyPEdyYXBoaWNzQ29u
dGV4dEdMPiBjcmVhdGVHcmFwaGljc0NvbnRleHRHTChjb25zdCBHcmFwaGljc0NvbnRleHRHTEF0
dHJpYnV0ZXMmLCBXZWJDb3JlOjpQbGF0Zm9ybURpc3BsYXlJRCkgY29uc3QgeyByZXR1cm4gbnVs
bHB0cjsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNuYXBzaG90dGluZy5jcHAJ
KHJldmlzaW9uIDI3Nzk3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFwc2hvdHRp
bmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDcgQEAgUmVmUHRyPEltYWdlQnVm
ZmVyPiBzbmFwc2hvdEZyYW1lUmVjdFdpdAogICAgIGlmIChvcHRpb25zICYgU25hcHNob3RPcHRp
b25zUGFpbnRXaXRoSW50ZWdyYWxTY2FsZUZhY3RvcikKICAgICAgICAgc2NhbGVGYWN0b3IgPSBj
ZWlsZihzY2FsZUZhY3Rvcik7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVh
dGUoaW1hZ2VSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgc2NhbGVG
YWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
KyAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwg
UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgc2NhbGVGYWN0b3IsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghYnVmZmVyKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBidWZmZXItPmNvbnRleHQoKS50cmFuc2xhdGUo
LWltYWdlUmVjdC54KCksIC1pbWFnZVJlY3QueSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZUNvbG9yU2FtcGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlQ29sb3JTYW1wbGVyLmNwcAkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlQ29sb3JTYW1wbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEw
NCw3IEBAIHN0YXRpYyBPcHRpb25hbDxMYWI8ZmxvYXQ+PiBzYW1wbGVDb2xvcigKICAgICBpZiAo
IXNuYXBzaG90KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgYXV0byBwaXhl
bEJ1ZmZlciA9IHNuYXBzaG90LT5nZXRQaXhlbEJ1ZmZlcih7IEFscGhhUHJlbXVsdGlwbGljYXRp
b246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IgfSwgeyB7IH0sIHNuYXBzaG90LT5sb2dpY2FsU2l6ZSgpIH0pOworICAgIGF1
dG8gcGl4ZWxCdWZmZXIgPSBzbmFwc2hvdC0+Z2V0UGl4ZWxCdWZmZXIoeyBBbHBoYVByZW11bHRp
cGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCkgfSwgeyB7IH0sIHNuYXBzaG90LT5sb2dpY2FsU2l6ZSgpIH0p
OwogICAgIGlmICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwCShyZXZpc2lv
biAyNzc5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzI2LDcgKzMyNiw3IEBAIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6
OnNjcmVlbnNob3QoSlNDOjoKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjYWNo
ZWRJbWFnZSA9IGltYWdlRWxlbWVudC5jYWNoZWRJbWFnZSgpKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXV0byogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2UoKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoaW1hZ2UgJiYgaW1hZ2UgIT0gJkltYWdlOjpudWxsSW1h
Z2UoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdCA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmFwc2hvdCA9IEltYWdlQnVmZmVyOjpj
cmVhdGUoaW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNuYXBzaG90LT5jb250ZXh0KCkuZHJhd0ltYWdlKCpp
bWFnZSwgRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgUGFnZUNv
bnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjoKICAgICAgICAgICAgICAgICAgICAgICAgIGF1
dG8mIHZpZGVvRWxlbWVudCA9IGRvd25jYXN0PEhUTUxWaWRlb0VsZW1lbnQ+KCpub2RlKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHZpZGVvV2lkdGggPSB2aWRlb0VsZW1lbnQu
dmlkZW9XaWR0aCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgdmlkZW9IZWln
aHQgPSB2aWRlb0VsZW1lbnQudmlkZW9IZWlnaHQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHNuYXBzaG90ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShGbG9hdFNpemUodmlkZW9XaWR0aCwgdmlk
ZW9IZWlnaHQpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBzbmFwc2hvdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUoRmxvYXRTaXplKHZpZGVvV2lkdGgs
IHZpZGVvSGVpZ2h0KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICB2aWRlb0VsZW1lbnQucGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoc25hcHNo
b3QtPmNvbnRleHQoKSwgRmxvYXRSZWN0KDAsIDAsIHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KSk7
CiAgICAgICAgICAgICAgICAgICAgIH0KICNlbmRpZgpAQCAtMzY4LDcgKzM2OCw3IEBAIHZvaWQg
UGFnZUNvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNDOjoKICAgICAgICAgICAgIHRhcmdldCA9
IHBvc3NpYmxlVGFyZ2V0OwogICAgICAgICAgICAgaWYgKFVOTElLRUxZKEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRzKCkpKSB7CiAgICAgICAgICAgICAgICAgYXV0byBzb3Vy
Y2VTaXplID0gaW1hZ2VEYXRhLT5zaXplKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8gaW1h
Z2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNvdXJjZVNpemUsIFJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4KSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShzb3VyY2VTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
LCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSkg
ewogICAgICAgICAgICAgICAgICAgICBJbnRSZWN0IHNvdXJjZVJlY3QoSW50UG9pbnQoKSwgc291
cmNlU2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgIGltYWdlQnVmZmVyLT5wdXRQaXhlbEJ1ZmZl
cihpbWFnZURhdGEtPnBpeGVsQnVmZmVyKCksIHNvdXJjZVJlY3QpOwogICAgICAgICAgICAgICAg
ICAgICBkYXRhVVJMID0gaW1hZ2VCdWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9zLCBXVEY6
Om51bGxvcHQsIFByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0hvc3RXaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Ib3N0V2luZG93LmgJKHJldmlzaW9uIDI3Nzk3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0hvc3RXaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTAgKzMxLDEwIEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEN1cnNvcjsKK2NsYXNzIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTsKIGNsYXNzIEltYWdlQnVmZmVyOwogCiBlbnVtIGNsYXNzIFBpeGVsRm9ybWF0IDog
dWludDhfdDsKLWVudW0gY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlIDogdWludDhfdDsKIGVu
dW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJvb2w7CiBlbnVtIGNsYXNzIFJlbmRlcmluZ1B1cnBv
c2UgOiB1aW50OF90OwogCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIElu
dFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JikgY29u
c3QgPSAwOwogICAgIHZpcnR1YWwgSW50UmVjdCByb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVl
bihjb25zdCBJbnRSZWN0JikgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VC
dWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUs
IFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25Db2xv
clNwYWNlLCBQaXhlbEZvcm1hdCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmUHRyPEltYWdl
QnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2Rl
LCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYsIFBpeGVsRm9ybWF0KSBjb25zdCA9IDA7CiAKICNpZiBFTkFCTEUoV0VC
R0wpCiAgICAgdmlydHVhbCBSZWZQdHI8R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNz
Q29udGV4dEdMKGNvbnN0IEdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYpIGNvbnN0ID0gMDsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TY3JlZW4uaAkocmV2aXNpb24g
Mjc3OTc5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TY3JlZW4uaAkod29y
a2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCB0eXBlZGVmIHN0cnVjdCBDR0NvbG9yU3BhY2Ug
KkNHQ29sb3JTcGFjCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRGVzdGluYXRpb25D
b2xvclNwYWNlOwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgRmxvYXRTaXplOwogY2xhc3MgV2lk
Z2V0OwpAQCAtNjgsNiArNjksNyBAQCB1c2luZyBJT1JlZ2lzdHJ5R1BVSUQgPSBpbnQ2NF90OyAv
LyBHbG9iCiBpbnQgc2NyZWVuRGVwdGgoV2lkZ2V0Kik7CiBpbnQgc2NyZWVuRGVwdGhQZXJDb21w
b25lbnQoV2lkZ2V0Kik7CiBib29sIHNjcmVlbklzTW9ub2Nocm9tZShXaWRnZXQqKTsKK1dFQkNP
UkVfRVhQT1JUIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCog
PSBudWxscHRyKTsKIAogYm9vbCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycygpOwogCkBAIC0xMDAs
MTAgKzEwMiw2IEBAIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2NyZWVuU3VwcG9ydHNIaWdoRHkKIGNv
bnN0ZXhwciBib29sIHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZShXaWRnZXQqID0gbnVs
bHB0cikgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCi0jaWYgVVNFKENHKQotV0VCQ09SRV9F
WFBPUlQgQ0dDb2xvclNwYWNlUmVmIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KiA9IG51bGxwdHIp
OwotI2VuZGlmCi0KIHN0cnVjdCBTY3JlZW5Qcm9wZXJ0aWVzOwogc3RydWN0IFNjcmVlbkRhdGE7
CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JlZW5Qcm9wZXJ0aWVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NyZWVuUHJvcGVydGllcy5o
CShyZXZpc2lvbiAyNzc5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JlZW5Qcm9w
ZXJ0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJl
Y3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogI2luY2x1ZGUgPHd0Zi9FbnVtVHJh
aXRzLmg+CkBAIC0zMiwxNCArMzMsMTIgQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLXR5cGVkZWYgc3RydWN0IENHQ29sb3JT
cGFjZSAqQ0dDb2xvclNwYWNlUmVmOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBT
Y3JlZW5EYXRhIHsKICAgICBGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxlUmVjdDsKICAgICBGbG9h
dFJlY3Qgc2NyZWVuUmVjdDsKLSAgICBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb2xvclNw
YWNlOworICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlIHsgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCkgfTsKICAgICBpbnQgc2NyZWVuRGVwdGggeyAwIH07CiAgICAgaW50
IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50IHsgMCB9OwogICAgIGJvb2wgc2NyZWVuU3VwcG9ydHNF
eHRlbmRlZENvbG9yIHsgZmFsc2UgfTsKQEAgLTU2LDEzICs1NSwxMiBAQCBzdHJ1Y3QgU2NyZWVu
RGF0YSB7CiAgICAgZmxvYXQgc2NhbGVGYWN0b3IgeyAxIH07CiAjZW5kaWYKIAotICAgIGVudW0g
Y2xhc3MgQ29sb3JTcGFjZVR5cGUgOiB1aW50OF90IHsgTm9uZSwgTmFtZSwgRGF0YSB9OwogICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U2NyZWVuRGF0YT4gZGVj
b2RlKERlY29kZXImKTsKIH07CiAKLXR5cGVkZWYgSGFzaE1hcDxQbGF0Zm9ybURpc3BsYXlJRCwg
U2NyZWVuRGF0YT4gU2NyZWVuRGF0YU1hcDsKLSAgICAKK3VzaW5nIFNjcmVlbkRhdGFNYXAgPSBI
YXNoTWFwPFBsYXRmb3JtRGlzcGxheUlELCBTY3JlZW5EYXRhPjsKKwogc3RydWN0IFNjcmVlblBy
b3BlcnRpZXMgewogICAgIFBsYXRmb3JtRGlzcGxheUlEIHByaW1hcnlEaXNwbGF5SUQgeyAwIH07
CiAgICAgU2NyZWVuRGF0YU1hcCBzY3JlZW5EYXRhTWFwOwpAQCAtNzQsOCArNzIsNyBAQCBzdHJ1
Y3QgU2NyZWVuUHJvcGVydGllcyB7CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBTY3Jl
ZW5Qcm9wZXJ0aWVzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNv
ZGVyIDw8IHByaW1hcnlEaXNwbGF5SUQ7Ci0gICAgZW5jb2RlciA8PCBzY3JlZW5EYXRhTWFwOwor
ICAgIGVuY29kZXIgPDwgcHJpbWFyeURpc3BsYXlJRCA8PCBzY3JlZW5EYXRhTWFwOwogfQogCiB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtOTcsNyArOTQsNyBAQCBPcHRpb25hbDxTY3JlZW5Q
cm9wZXJ0aWVzPiBTY3JlZW5Qcm9wZXJ0CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBT
Y3JlZW5EYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVy
IDw8IHNjcmVlbkF2YWlsYWJsZVJlY3QgPDwgc2NyZWVuUmVjdCA8PCBzY3JlZW5EZXB0aCA8PCBz
Y3JlZW5EZXB0aFBlckNvbXBvbmVudCA8PCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IgPDwg
c2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMgPDwgc2NyZWVuU3VwcG9ydHNIaWdoRHluYW1pY1Jhbmdl
OworICAgIGVuY29kZXIgPDwgc2NyZWVuQXZhaWxhYmxlUmVjdCA8PCBzY3JlZW5SZWN0IDw8IGNv
bG9yU3BhY2UgPDwgc2NyZWVuRGVwdGggPDwgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQgPDwgc2Ny
ZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yIDw8IHNjcmVlbkhhc0ludmVydGVkQ29sb3JzIDw8IHNj
cmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBl
bmNvZGVyIDw8IHNjcmVlbklzTW9ub2Nocm9tZSA8PCBkaXNwbGF5TWFzayA8PCBncHVJRCA8PCBw
cmVmZXJyZWREeW5hbWljUmFuZ2VNb2RlOwpAQCAtMTA2LDI4ICsxMDMsNiBAQCB2b2lkIFNjcmVl
bkRhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIGVuY29kZXIgPDwgc2NhbGVGYWN0b3I7CiAjZW5kaWYKLQot
ICAgIGlmIChjb2xvclNwYWNlKSB7Ci0gICAgICAgIC8vIFRyeSB0byBlbmNvZGUgdGhlIG5hbWUu
Ci0gICAgICAgIGlmIChhdXRvIG5hbWUgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNvcHlOYW1lKGNv
bG9yU3BhY2UuZ2V0KCkpKSkgewotICAgICAgICAgICAgZW5jb2RlciA8PCBDb2xvclNwYWNlVHlw
ZTo6TmFtZTsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgU3RyaW5nKG5hbWUuZ2V0KCkpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRmFpbGluZyB0aGF0LCBq
dXN0IGVuY29kZSB0aGUgSUNDIGRhdGEuCi0gICAgICAgIGlmIChhdXRvIHByb2ZpbGVEYXRhID0g
YWRvcHRDRihDR0NvbG9yU3BhY2VDb3B5SUNDRGF0YShjb2xvclNwYWNlLmdldCgpKSkpIHsKLSAg
ICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBpY2NEYXRhOwotICAgICAgICAgICAgaWNjRGF0YS5h
cHBlbmQoQ0ZEYXRhR2V0Qnl0ZVB0cihwcm9maWxlRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0
aChwcm9maWxlRGF0YS5nZXQoKSkpOwotCi0gICAgICAgICAgICBlbmNvZGVyIDw8IENvbG9yU3Bh
Y2VUeXBlOjpEYXRhOwotICAgICAgICAgICAgZW5jb2RlciA8PCBpY2NEYXRhOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gVGhlIGNvbG9yIHNwYWNlIHdh
cyBudWxsIG9yIGZhaWxlZCB0byBiZSBlbmNvZGVkLgotICAgIGVuY29kZXIgPDwgQ29sb3JTcGFj
ZVR5cGU6Ok5vbmU7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC0xNDMsNiArMTE4
LDExIEBAIE9wdGlvbmFsPFNjcmVlbkRhdGE+IFNjcmVlbkRhdGE6OmRlY29kZSgKICAgICBpZiAo
IXNjcmVlblJlY3QpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKKyAgICBPcHRpb25h
bDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IHNjcmVlbkNvbG9yU3BhY2U7CisgICAgZGVjb2RlciA+
PiBzY3JlZW5Db2xvclNwYWNlOworICAgIGlmICghc2NyZWVuQ29sb3JTcGFjZSkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKwogICAgIE9wdGlvbmFsPGludD4gc2NyZWVuRGVwdGg7CiAg
ICAgZGVjb2RlciA+PiBzY3JlZW5EZXB0aDsKICAgICBpZiAoIXNjcmVlbkRlcHRoKQpAQCAtMTk3
LDQxICsxNzcsMTAgQEAgT3B0aW9uYWw8U2NyZWVuRGF0YT4gU2NyZWVuRGF0YTo6ZGVjb2RlKAog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogI2VuZGlmCiAKLSAgICBDb2xvclNwYWNlVHlw
ZSBkYXRhVHlwZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFUeXBlKSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNn
Q29sb3JTcGFjZTsKLSAgICBzd2l0Y2ggKGRhdGFUeXBlKSB7Ci0gICAgY2FzZSBDb2xvclNwYWNl
VHlwZTo6Tm9uZToKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDb2xvclNwYWNlVHlwZTo6TmFt
ZTogewotICAgICAgICBPcHRpb25hbDxTdHJpbmc+IGNvbG9yU3BhY2VOYW1lOwotICAgICAgICBk
ZWNvZGVyID4+IGNvbG9yU3BhY2VOYW1lOwotICAgICAgICBBU1NFUlQoY29sb3JTcGFjZU5hbWUp
OwotICAgICAgICBpZiAoIWNvbG9yU3BhY2VOYW1lKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKLQotICAgICAgICBjZ0NvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNy
ZWF0ZVdpdGhOYW1lKGNvbG9yU3BhY2VOYW1lLT5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENvbG9yU3BhY2VUeXBlOjpEYXRhOiB7Ci0g
ICAgICAgIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gaWNjRGF0YTsKLSAgICAgICAgZGVjb2Rl
ciA+PiBpY2NEYXRhOwotICAgICAgICBBU1NFUlQoaWNjRGF0YSk7Ci0gICAgICAgIGlmICghaWNj
RGF0YSkKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICAgICAgYXV0byBj
b2xvclNwYWNlRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGljY0RhdGEtPmRhdGEoKSwgaWNjRGF0YS0+c2l6ZSgpKSk7Ci0gICAgICAgIGNnQ29sb3JTcGFj
ZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aElDQ0RhdGEoY29sb3JTcGFjZURhdGEu
Z2V0KCkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIH0KLQogICAgIHJldHVybiB7IHsK
ICAgICAgICAgV1RGTW92ZSgqc2NyZWVuQXZhaWxhYmxlUmVjdCksCiAgICAgICAgIFdURk1vdmUo
KnNjcmVlblJlY3QpLAotICAgICAgICBXVEZNb3ZlKGNnQ29sb3JTcGFjZSksCisgICAgICAgIFdU
Rk1vdmUoKnNjcmVlbkNvbG9yU3BhY2UpLAogICAgICAgICBXVEZNb3ZlKCpzY3JlZW5EZXB0aCks
CiAgICAgICAgIFdURk1vdmUoKnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KSwKICAgICAgICAgV1RG
TW92ZSgqc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9yKSwKQEAgLTI1MCwxNiArMTk5LDMgQEAg
T3B0aW9uYWw8U2NyZWVuRGF0YT4gU2NyZWVuRGF0YTo6ZGVjb2RlKAogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVt
VHJhaXRzPFdlYkNvcmU6OlNjcmVlbkRhdGE6OkNvbG9yU3BhY2VUeXBlPiB7Ci0gICAgdXNpbmcg
dmFsdWVzID0gRW51bVZhbHVlczwKLSAgICAgICAgV2ViQ29yZTo6U2NyZWVuRGF0YTo6Q29sb3JT
cGFjZVR5cGUsCi0gICAgICAgIFdlYkNvcmU6OlNjcmVlbkRhdGE6OkNvbG9yU3BhY2VUeXBlOjpO
b25lLAotICAgICAgICBXZWJDb3JlOjpTY3JlZW5EYXRhOjpDb2xvclNwYWNlVHlwZTo6TmFtZSwK
LSAgICAgICAgV2ViQ29yZTo6U2NyZWVuRGF0YTo6Q29sb3JTcGFjZVR5cGU6OkRhdGEKLSAgICA+
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCShyZXZpc2lvbiAyNzc5NzkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE2NCw3ICsxNjQsNyBAQCBSZWZQdHI8TmF0aXZlSW1hZ2U+IEJpdG1hcEltYWdl
OjpwcmVUcmFuCiAgICAgICAgIHJldHVybiBpbWFnZTsKIAogICAgIGF1dG8gY29ycmVjdGVkU2l6
ZUZsb2F0ID0gY29ycmVjdGVkU2l6ZSA/IEZsb2F0U2l6ZShjb3JyZWN0ZWRTaXplLnZhbHVlKCkp
IDogc2l6ZSgpOwotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjb3JyZWN0
ZWRTaXplRmxvYXQsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGUoY29ycmVjdGVkU2l6ZUZsb2F0LCBSZW5kZXJpbmdNb2RlOjpV
bmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGltYWdlOwogCkBA
IC0zNTIsNyArMzUyLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3ND
bwogICAgIH0KIAogICAgIGlmICghbV9jYWNoZWRJbWFnZSkgewotICAgICAgICBhdXRvIGJ1ZmZl
ciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZSh0
aWxlUmVjdC5zaXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGN0eHQpOworICAg
ICAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4
cGFuZGVkSW50U2l6ZSh0aWxlUmVjdC5zaXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgY3R4dCk7CiAgICAgICAgIGlmICghYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCShyZXZp
c2lvbiAyNzc5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw3ICsxNjgsNyBAQCBDb2xvckNvbXBvbmVudHM8Zmxv
YXQsIDQ+IENvbG9yOjp0b0NvbG9yCiAgICAgcmV0dXJuIGNvbnZlckNvbG9yQ29tcG9uZW50cyhp
bnB1dENvbG9yU3BhY2UsIGNvbXBvbmVudHMsIG91dHB1dENvbG9yU3BhY2UpOwogfQogCi1Db2xv
ckNvbXBvbmVudHM8ZmxvYXQsIDQ+IENvbG9yOjp0b0NvbG9yQ29tcG9uZW50c0luQ29sb3JTcGFj
ZShEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugb3V0cHV0Q29sb3JTcGFjZSkgY29uc3QKK0NvbG9yQ29t
cG9uZW50czxmbG9hdCwgND4gQ29sb3I6OnRvQ29sb3JDb21wb25lbnRzSW5Db2xvclNwYWNlKGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgb3V0cHV0Q29sb3JTcGFjZSkgY29uc3QKIHsKICAg
ICBhdXRvIFtpbnB1dENvbG9yU3BhY2UsIGNvbXBvbmVudHNdID0gY29sb3JTcGFjZUFuZENvbXBv
bmVudHMoKTsKICAgICByZXR1cm4gY29udmVyQ29sb3JDb21wb25lbnRzKGlucHV0Q29sb3JTcGFj
ZSwgY29tcG9uZW50cywgb3V0cHV0Q29sb3JTcGFjZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDI3Nzk3OSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4
LDcgQEAKICNpbmNsdWRlICJDb2xvckNvbnZlcnNpb24uaCIKICNpbmNsdWRlICJDb2xvclNwYWNl
LmgiCiAjaW5jbHVkZSAiQ29sb3JVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNv
bG9yU3BhY2UuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KQEAgLTEyMSw3ICsxMjIsNyBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gU1JHQkE8VD4gdG9TUkdCQUxvc3N5KCkg
Y29uc3QgeyByZXR1cm4gdG9Db2xvclR5cGVMb3NzeTxTUkdCQTxUPj4oKTsgfQogCiAgICAgQ29s
b3JDb21wb25lbnRzPGZsb2F0LCA0PiB0b0NvbG9yQ29tcG9uZW50c0luQ29sb3JTcGFjZShDb2xv
clNwYWNlKSBjb25zdDsKLSAgICBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IHRvQ29sb3JDb21w
b25lbnRzSW5Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSkgY29uc3Q7CisgICAgQ29s
b3JDb21wb25lbnRzPGZsb2F0LCA0PiB0b0NvbG9yQ29tcG9uZW50c0luQ29sb3JTcGFjZShjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0
ZDo6cGFpcjxDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+PiBjb2xvclNwYWNl
QW5kQ29tcG9uZW50cygpIGNvbnN0OwogCkBAIC0yNjcsNiArMjY4LDcgQEAgYm9vbCBvdXRPZkxp
bmVDb21wb25lbnRzc0VxdWFsSWdub3JpbmdTZQogCiAjaWYgVVNFKENHKQogV0VCQ09SRV9FWFBP
UlQgQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJik7CitXRUJDT1JFX0VYUE9S
VCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IHBsYXRmb3JtQ29udmVydENvbG9yQ29tcG9uZW50
cyhDb2xvclNwYWNlLCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+LCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmKTsKICNlbmRpZgogCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgQ29sb3ImKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JDb252ZXJzaW9uLmNw
cAkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29sb3JDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsOSBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvbG9yQ29udmVyc2lvbi5oIgogCisjaW5jbHVk
ZSAiQ29sb3IuaCIKICNpbmNsdWRlICJDb2xvclNwYWNlLmgiCisjaW5jbHVkZSAiRGVzdGluYXRp
b25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtMzE4LDE4ICszMjAsMjEgQEAgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0
PiBjb252ZXJDb2xvckNvbQogICAgIH0pOwogfQogCi1Db2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+
IGNvbnZlckNvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlIGlucHV0Q29sb3JTcGFjZSwgQ29sb3JD
b21wb25lbnRzPGZsb2F0LCA0PiBpbnB1dENvbG9yQ29tcG9uZW50cywgRGVzdGluYXRpb25Db2xv
clNwYWNlIG91dHB1dENvbG9yU3BhY2UpCitDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbnZl
ckNvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlIGlucHV0Q29sb3JTcGFjZSwgQ29sb3JDb21wb25l
bnRzPGZsb2F0LCA0PiBpbnB1dENvbG9yQ29tcG9uZW50cywgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiBvdXRwdXRDb2xvclNwYWNlKQogeworI2lmIFVTRShDRykKKyAgICByZXR1cm4gcGxh
dGZvcm1Db252ZXJ0Q29sb3JDb21wb25lbnRzKGlucHV0Q29sb3JTcGFjZSwgaW5wdXRDb2xvckNv
bXBvbmVudHMsIG91dHB1dENvbG9yU3BhY2UpOworI2Vsc2UKICAgICByZXR1cm4gY2FsbFdpdGhD
b2xvclR5cGUoaW5wdXRDb2xvckNvbXBvbmVudHMsIGlucHV0Q29sb3JTcGFjZSwgW291dHB1dENv
bG9yU3BhY2VdIChjb25zdCBhdXRvJiBpbnB1dENvbG9yKSB7Ci0gICAgICAgIHN3aXRjaCAob3V0
cHV0Q29sb3JTcGFjZSkgewotICAgICAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QjoKKyAgICAgICAgc3dpdGNoIChvdXRwdXRDb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFjZSgp
KSB7CisgICAgICAgIGNhc2UgUGxhdGZvcm1Db2xvclNwYWNlOjpOYW1lOjpTUkdCOgogICAgICAg
ICAgICAgcmV0dXJuIGFzQ29sb3JDb21wb25lbnRzKGNvbnZlcnRDb2xvcjxTUkdCQTxmbG9hdD4+
KGlucHV0Q29sb3IpKTsKICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFS
X1NSR0IpCi0gICAgICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCOgor
ICAgICAgICBjYXNlIFBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZTo6TGluZWFyU1JHQjoKICAgICAg
ICAgICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhjb252ZXJ0Q29sb3I8TGluZWFyU1JHQkE8
ZmxvYXQ+PihpbnB1dENvbG9yKSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09M
T1JfU1BBQ0VfRElTUExBWV9QMykKLSAgICAgICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OkRpc3BsYXlQMzoKKyAgICAgICAgY2FzZSBQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU6OkRpc3Bs
YXlQMzoKICAgICAgICAgICAgIHJldHVybiBhc0NvbG9yQ29tcG9uZW50cyhjb252ZXJ0Q29sb3I8
RGlzcGxheVAzPGZsb2F0Pj4oaW5wdXRDb2xvcikpOwogI2VuZGlmCiAgICAgICAgIH0KQEAgLTMz
Nyw2ICszNDIsNyBAQCBDb2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNvbnZlckNvbG9yQ29tCiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gYXNDb2xvckNvbXBv
bmVudHMoY29udmVydENvbG9yPFNSR0JBPGZsb2F0Pj4oaW5wdXRDb2xvcikpOwogICAgIH0pOwor
I2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCShyZXZpc2lvbiAy
Nzc5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTUgKzI5LDE2IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlOworCiBlbnVtIGNsYXNzIENvbG9y
U3BhY2UgOiB1aW50OF90OwotZW51bSBjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgOiB1aW50
OF90OwogCiAvLyBDb252ZXJzaW9uIGZ1bmN0aW9uIGZvciB0eXBlZCBjb2xvcnMuCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBPdXRwdXQsIHR5cGVuYW1lIElucHV0PiBPdXRwdXQgY29udmVydENvbG9yKGNv
bnN0IElucHV0JiBjb2xvcik7CiAKIC8vIENvbnZlcnNpb24gZnVuY3Rpb25zIGZvciByYXcgY29s
b3IgY29tcG9uZW50cyB3aXRoIGFzc29jaWF0ZWQgY29sb3Igc3BhY2VzLgogQ29sb3JDb21wb25l
bnRzPGZsb2F0LCA0PiBjb252ZXJDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1dENvbG9y
U3BhY2UsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVudHMsIENv
bG9yU3BhY2Ugb3V0cHV0Q29sb3JTcGFjZSk7Ci1Db2xvckNvbXBvbmVudHM8ZmxvYXQsIDQ+IGNv
bnZlckNvbG9yQ29tcG9uZW50cyhDb2xvclNwYWNlIGlucHV0Q29sb3JTcGFjZSwgQ29sb3JDb21w
b25lbnRzPGZsb2F0LCA0PiBpbnB1dENvbG9yQ29tcG9uZW50cywgRGVzdGluYXRpb25Db2xvclNw
YWNlIG91dHB1dENvbG9yU3BhY2UpOworQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBjb252ZXJD
b2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1dENvbG9yU3BhY2UsIENvbG9yQ29tcG9uZW50
czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVudHMsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgb3V0cHV0Q29sb3JTcGFjZSk7CiAKIAogLy8gQWxsIGNvbG9yIHR5cGVzLCBvdGhlciB0
aGFuIFhZWkEgb3IgdGhvc2UgaW5oZXJpdGluZyBmcm9tIFJHQlR5cGUsIG11c3QgaW1wbGVtZW50
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNl
LmNwcAkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3JTcGFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDI0ICs2NCw0IEBAIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEMKICAgICByZXR1cm4gdHM7CiB9CiAK
LVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSBjb2xvclNwYWNlKQotewotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAgIGNhc2Ug
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOgotICAgICAgICB0cyA8PCAic1JHQiI7Ci0gICAg
ICAgIGJyZWFrOwotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JH
QikKLSAgICBjYXNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQjoKLSAgICAgICAg
dHMgPDwgIkxpbmVhclNSR0IiOwotICAgICAgICBicmVhazsKLSNlbmRpZgotI2lmIEVOQUJMRShE
RVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQotICAgIGNhc2UgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpEaXNwbGF5UDM6Ci0gICAgICAgIHRzIDw8ICJEaXNwbGF5UDMiOwotICAgICAg
ICBicmVhazsKLSNlbmRpZgotICAgIH0KLSAgICByZXR1cm4gdHM7Ci19Ci0KIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvclNwYWNlLmgJKHJldmlzaW9u
IDI3Nzk3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yU3BhY2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTAgKzI4LDcgQEAKICNpbmNsdWRlICJDb2xvclR5cGVz
LmgiCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgot
Ci1uYW1lc3BhY2UgV1RGIHsKLWNsYXNzIFRleHRTdHJlYW07Ci19CisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NywxOCArNDQsNyBAQCBlbnVt
IGNsYXNzIENvbG9yU3BhY2UgOiB1aW50OF90IHsKICAgICBYWVpfRDUwLAogfTsKIAotZW51bSBj
bGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgOiB1aW50OF90IHsKLSAgICBTUkdCCi0jaWYgRU5B
QkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQotICAgICwgTGluZWFyU1JH
QgotI2VuZGlmCi0jaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMp
Ci0gICAgLCBEaXNwbGF5UDMKLSNlbmRpZgotfTsKLQotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIENvbG9yU3BhY2UpOwotV0VCQ09S
RV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSk7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mLCBDb2xvclNwYWNlKTsKIAogCiB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3Ry
dWN0IENvbG9yU3BhY2VNYXBwaW5nOwpAQCAtMTAyLDI1ICs4OCw2IEBAIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIEZ1bmN0b3I+IGMKICAgICByZXR1cm4gc3RkOjppbnZva2Uoc3RkOjpm
b3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8U1JHQkE8VD4+KGNv
bXBvbmVudHMpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRnVuY3Rvcj4g
Y29uc3RleHByIGRlY2x0eXBlKGF1dG8pIGNhbGxXaXRoQ29sb3JUeXBlKGNvbnN0IENvbG9yQ29t
cG9uZW50czxULCA0PiYgY29tcG9uZW50cywgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIEZ1bmN0b3ImJiBmdW5jdG9yKQotewotICAgIHN3aXRjaCAoY29sb3JTcGFjZSkgewotICAg
IGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCOgotICAgICAgICByZXR1cm4gc3RkOjpp
bnZva2Uoc3RkOjpmb3J3YXJkPEZ1bmN0b3I+KGZ1bmN0b3IpLCBtYWtlRnJvbUNvbXBvbmVudHM8
U1JHQkE8VD4+KGNvbXBvbmVudHMpKTsKLSNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BB
Q0VfTElORUFSX1NSR0IpCi0gICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNS
R0I6Ci0gICAgICAgIHJldHVybiBzdGQ6Omludm9rZShzdGQ6OmZvcndhcmQ8RnVuY3Rvcj4oZnVu
Y3RvciksIG1ha2VGcm9tQ29tcG9uZW50czxMaW5lYXJTUkdCQTxUPj4oY29tcG9uZW50cykpOwot
I2VuZGlmCi0jaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCi0g
ICAgY2FzZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMzoKLSAgICAgICAgcmV0dXJu
IHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2FyZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFrZUZyb21Db21w
b25lbnRzPERpc3BsYXlQMzxUPj4oY29tcG9uZW50cykpOwotI2VuZGlmCi0gICAgfQotCi0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHN0ZDo6aW52b2tlKHN0ZDo6Zm9yd2Fy
ZDxGdW5jdG9yPihmdW5jdG9yKSwgbWFrZUZyb21Db21wb25lbnRzPFNSR0JBPFQ+Pihjb21wb25l
bnRzKSk7Ci19Ci0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkBAIC0xNDEsMTcgKzEwOCw0
IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q28KICAgICA+OwogfTsK
IAotdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9y
U3BhY2U+IHsKLSAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAotICAgICAgICBXZWJDb3Jl
OjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UsCi0gICAgICAgIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJf
U1JHQikKLSAgICAgICAgLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNS
R0IKLSNlbmRpZgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1Az
KQotICAgICAgICAsIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6RGlzcGxheVAzCi0j
ZW5kaWYKLSAgICA+OwotfTsKLQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAkocmV2aXNpb24gMjc3OTc5
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEJh
Y2tlbmRUeXBlPgogY2xhc3MgQ29uY3JldGVJbWFnZUJ1ZmZlciA6IHB1YmxpYyBJbWFnZUJ1ZmZl
ciB7CiBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW1hZ2VCdWZmZXJUeXBlID0gQ29u
Y3JldGVJbWFnZUJ1ZmZlciwgdHlwZW5hbWUuLi4gQXJndW1lbnRzPgotICAgIHN0YXRpYyBSZWZQ
dHI8SW1hZ2VCdWZmZXJUeXBlPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZv
cm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgQXJndW1lbnRz
JiYuLi4gYXJndW1lbnRzKQorICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXJUeXBlPiBjcmVh
dGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQs
IGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykK
ICAgICB7CiAgICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IEltYWdlQnVmZmVyQmFja2VuZDo6UGFy
YW1ldGVycyB7IHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQg
fTsKICAgICAgICAgYXV0byBiYWNrZW5kID0gQmFja2VuZFR5cGU6OmNyZWF0ZShwYXJhbWV0ZXJz
LCBob3N0V2luZG93KTsKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEltYWdlQnVmZmVyVHlwZSA9IENvbmNyZXRlSW1hZ2VCdWZmZXIsIHR5cGVuYW1lLi4u
IEFyZ3VtZW50cz4KICAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyVHlwZT4gY3JlYXRlKGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBBcmd1
bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgewotICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMgeyBzaXplLCAxLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCB9OworICAgICAgICBhdXRvIHBhcmFtZXRl
cnMgPSBJbWFnZUJ1ZmZlckJhY2tlbmQ6OlBhcmFtZXRlcnMgeyBzaXplLCAxLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4IH07CiAgICAgICAgIGF1dG8g
YmFja2VuZCA9IEJhY2tlbmRUeXBlOjpjcmVhdGUocGFyYW1ldGVycywgY29udGV4dCk7CiAgICAg
ICAgIGlmICghYmFja2VuZCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTk1LDcg
KzE5NSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgfQogICAgIH0KIAotICAgIHZvaWQgdHJhbnNm
b3JtQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc3JjQ29sb3JTcGFjZSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlIGRlc3RDb2xvclNwYWNlKSBvdmVycmlkZQorICAgIHZvaWQgdHJhbnNm
b3JtQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHNyY0NvbG9yU3BhY2Us
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgZGVzdENvbG9yU3BhY2UpIG92ZXJyaWRlCiAg
ICAgewogICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkp
IHsKICAgICAgICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHQoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0
ZWRJbWFnZS5jcHAJKHJldmlzaW9uIDI3Nzk3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTAzLDcgKzEwMyw3IEBAIEltYWdlRHJhd1Jlc3VsdCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZToK
IAogdm9pZCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShzaXplKCksIGNvbnRleHQucmVuZGVyaW5nTW9kZSgpLCAxLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFn
ZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBjb250ZXh0LnJlbmRlcmluZ01v
ZGUoKSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JB
OCk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rlc3RpbmF0aW9u
Q29sb3JTcGFjZS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0u
aD4KKworI2lmIFVTRShDRykKKyNpbmNsdWRlICJDb2xvclNwYWNlQ0cuaCIKKyNpbmNsdWRlIDxw
YWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworRGVzdGluYXRpb25Db2xvclNwYWNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
Cit7CisjaWYgVVNFKENHKQorICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2Uoc1JHQkNv
bG9yU3BhY2VSZWYoKSk7CisjZWxzZQorICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2Uo
UGxhdGZvcm1Db2xvclNwYWNlOjpOYW1lOjpTUkdCKTsKKyNlbmRpZgorfQorCisjaWYgRU5BQkxF
KERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQorRGVzdGluYXRpb25Db2xvclNw
YWNlIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigpCit7CisjaWYgVVNFKENHKQor
ICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UobGluZWFyU1JHQkNvbG9yU3BhY2VSZWYo
KSk7CisjZWxzZQorICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UoUGxhdGZvcm1Db2xv
clNwYWNlOjpOYW1lOjpMaW5lYXJTUkdCKTsKKyNlbmRpZgorfQorI2VuZGlmCisKKyNpZiBFTkFC
TEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExBWV9QMykKK0Rlc3RpbmF0aW9uQ29sb3JT
cGFjZSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMygpCit7CisjaWYgVVNFKENHKQor
ICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UoZGlzcGxheVAzQ29sb3JTcGFjZVJlZigp
KTsKKyNlbHNlCisgICAgcmV0dXJuIERlc3RpbmF0aW9uQ29sb3JTcGFjZShQbGF0Zm9ybUNvbG9y
U3BhY2U6Ok5hbWU6OkRpc3BsYXlQMyk7CisjZW5kaWYKK30KKyNlbmRpZgorCitEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZShQbGF0Zm9ybUNvbG9yU3BhY2UgcGxh
dGZvcm1Db2xvclNwYWNlKQorICAgIDogbV9wbGF0Zm9ybUNvbG9yU3BhY2UgeyBXVEZNb3ZlKHBs
YXRmb3JtQ29sb3JTcGFjZSkgfQoreworI2lmIFVTRShDRykKKyAgICBBU1NFUlQobV9wbGF0Zm9y
bUNvbG9yU3BhY2UpOworI2VuZGlmCit9CisKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmIGEsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgYikKK3sKKyNp
ZiBVU0UoQ0cpCisgICAgcmV0dXJuIENHQ29sb3JTcGFjZUVxdWFsVG9Db2xvclNwYWNlKGEucGxh
dGZvcm1Db2xvclNwYWNlKCksIGIucGxhdGZvcm1Db2xvclNwYWNlKCkpOworI2Vsc2UKKyAgICBy
ZXR1cm4gYS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSA9PSBiLnBsYXRmb3JtQ29sb3JTcGFjZSgpOwor
I2VuZGlmCit9CisKK2Jvb2wgb3BlcmF0b3IhPShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
IGEsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgYikKK3sKKyAgICByZXR1cm4gIShhID09
IGIpOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpCit7CisgICAgaWYgKGNvbG9yU3BhY2Ug
PT0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpCisgICAgICAgIHRzIDw8ICJzUkdCIjsK
KyNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCisgICAgZWxz
ZSBpZiAoY29sb3JTcGFjZSA9PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKSkK
KyAgICAgICAgdHMgPDwgIkxpbmVhclNSR0IiOworI2VuZGlmCisjaWYgRU5BQkxFKERFU1RJTkFU
SU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCisgICAgZWxzZSBpZiAoY29sb3JTcGFjZSA9PSBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkRpc3BsYXlQMygpKQorICAgICAgICB0cyA8PCAiRGlzcGxh
eVAzIjsKKyNlbmRpZgorI2lmIFVTRShDRykKKyAgICBlbHNlIGlmIChhdXRvIGRlc2NyaXB0aW9u
ID0gYWRvcHRDRihDR0NvbG9yU3BhY2VDb3B5SUNDUHJvZmlsZURlc2NyaXB0aW9uKGNvbG9yU3Bh
Y2UucGxhdGZvcm1Db2xvclNwYWNlKCkpKSkKKyAgICAgICAgdHMgPDwgU3RyaW5nKGRlc2NyaXB0
aW9uLmdldCgpKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIHRzOworfQorCit9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EZXN0aW5hdGlvbkNv
bG9yU3BhY2UuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbG9y
U3BhY2UuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSBTUkdCKCk7CisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9T
UkdCKQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgTGlu
ZWFyU1JHQigpOworI2VuZGlmCisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJ
U1BMQVlfUDMpCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSBEaXNwbGF5UDMoKTsKKyNlbmRpZgorCisgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgRGVz
dGluYXRpb25Db2xvclNwYWNlKFBsYXRmb3JtQ29sb3JTcGFjZSk7CisgICAgUGxhdGZvcm1Db2xv
clNwYWNlVmFsdWUgcGxhdGZvcm1Db2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9y
bUNvbG9yU3BhY2UuZ2V0KCk7IH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0
aWMgT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPiBkZWNvZGUoRGVjb2RlciYpOworCitw
cml2YXRlOgorICAgIFBsYXRmb3JtQ29sb3JTcGFjZSBtX3BsYXRmb3JtQ29sb3JTcGFjZTsKK307
CisKK1dFQkNPUkVfRVhQT1JUIGJvb2wgb3BlcmF0b3I9PShjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmKTsKK1dFQkNPUkVfRVhQT1JUIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmKTsKKworV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJik7CisKK3RlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgRGVzdGluYXRpb25Db2xvclNwYWNlOjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fcGxhdGZvcm1Db2xvclNwYWNl
OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9y
U3BhY2U+IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7
CisgICAgT3B0aW9uYWw8UGxhdGZvcm1Db2xvclNwYWNlPiBwbGF0Zm9ybUNvbG9yU3BhY2U7Cisg
ICAgZGVjb2RlciA+PiBwbGF0Zm9ybUNvbG9yU3BhY2U7CisgICAgaWYgKCFwbGF0Zm9ybUNvbG9y
U3BhY2UpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gRGVzdGlu
YXRpb25Db2xvclNwYWNlIHsgV1RGTW92ZSgqcGxhdGZvcm1Db2xvclNwYWNlKSB9OworfQorCit9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVu
dEltYWdlLmNwcAkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcgKzcyLDcg
QEAgdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljcwogICAgIHVuc2lnbmVk
IGdlbmVyYXRvckhhc2ggPSBtX2dyYWRpZW50LT5oYXNoKCk7CiAKICAgICBpZiAoIW1fY2FjaGVk
SW1hZ2UgfHwgbV9jYWNoZWRHZW5lcmF0b3JIYXNoICE9IGdlbmVyYXRvckhhc2ggfHwgbV9jYWNo
ZWRBZGp1c3RlZFNpemUgIT0gYWRqdXN0ZWRTaXplIHx8ICFhcmVFc3NlbnRpYWxseUVxdWFsKGRl
c3RDb250ZXh0LnNjYWxlRmFjdG9yKCksIG1fY2FjaGVkU2NhbGVGYWN0b3IpKSB7Ci0gICAgICAg
IGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihh
ZGp1c3RlZFNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgZGVzdENvbnRleHQpOwor
ICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVC
dWZmZXIoYWRqdXN0ZWRTaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgZGVzdENv
bnRleHQpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5jcHAJKHJldmlzaW9uIDI3Nzk3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4Myw3
ICs4ODMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dFJvdW5kZWRSZWN0CiAgICAg
Y2xpcE91dChwYXRoKTsKIH0KIAotR3JhcGhpY3NDb250ZXh0OjpDbGlwVG9EcmF3aW5nQ29tbWFu
ZHNSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIEZ1
bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKQorR3JhcGhp
Y3NDb250ZXh0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgR3JhcGhpY3NDb250ZXh0Ojpj
bGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNz
Q29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxl
ZCgpKQogICAgICAgICByZXR1cm4gQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0OjpTdWNjZXNz
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmgJKHJldmlzaW9uIDI3Nzk3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw4
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUg
IkRhc2hBcnJheS5oIgorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1
ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NUeXBlcy5oIgpAQCAtNDEwLDcgKzQxMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsaXBU
b0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKICAgICBlbnVt
IGNsYXNzIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCA6IGJvb2wgeyBTdWNjZXNzLCBGYWls
ZWRUb0NyZWF0ZUltYWdlQnVmZmVyIH07Ci0gICAgQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0
IGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpOwor
ICAgIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29u
c3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwg
RnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJik7CiAgICAgCiAgICAgSW50UmVjdCBj
bGlwQm91bmRzKCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgJKHJldmlzaW9uIDI3Nzk3OSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwu
aAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYsIFdpbmRSdWxlKSA9IDA7CiAgICAgdmlydHVhbCBJ
bnRSZWN0IGNsaXBCb3VuZHMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsaXBUb0ltYWdlQnVm
ZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVz
dGluYXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmIGRy
YXdpbmdGdW5jdGlvbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFu
ZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBkcmF3aW5nRnVuY3Rpb24p
ID0gMDsKICNpZiBFTkFCTEUoVklERU8pCiAgICAgdmlydHVhbCB2b2lkIHBhaW50RnJhbWVGb3JN
ZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgY2FuUGFpbnRGcmFtZUZvck1lZGlhKGNvbnN0IE1lZGlhUGxheWVyJikg
Y29uc3QgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmNwcAkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICsz
Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyBjb25zdCBmbG9hdCBNYXhDbGFtcGVk
TGVuZ3RoID0gNDA5NjsKIHN0YXRpYyBjb25zdCBmbG9hdCBNYXhDbGFtcGVkQXJlYSA9IE1heENs
YW1wZWRMZW5ndGggKiBNYXhDbGFtcGVkTGVuZ3RoOwogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IElt
YWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJl
bmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0IHNob3VsZFVzZURpc3BsYXlMaXN0LCBS
ZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRp
b25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBI
b3N0V2luZG93KiBob3N0V2luZG93KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2Rl
LCBTaG91bGRVc2VEaXNwbGF5TGlzdCBzaG91bGRVc2VEaXNwbGF5TGlzdCwgUmVuZGVyaW5nUHVy
cG9zZSBwdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RX
aW5kb3cqIGhvc3RXaW5kb3cpCiB7CiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZl
cjsKICAgICAKQEAgLTU5LDcgKzU5LDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKAogICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0KIAotUmVmUHRyPEltYWdlQnVm
ZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5n
TW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdp
bmRvdyogaG9zdFdpbmRvdykKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3Bh
Y2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93
KQogewogICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7CiAgICAgCkBAIC05NSw3
ICs5NSw3IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUMKICAgICBy
ZXR1cm4gaW1hZ2VCdWZmZXI7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6
OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQor
UmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JT
cGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIGlmIChzaXplLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMTEsNyArMTExLDcgQEAgUmVm
UHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQwogICAgIHJldHVybiBpbWFnZUJ1
ZmZlcjsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0
aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCkKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KQogewogICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIGNv
bnRleHQucmVuZGVyaW5nTW9kZSgpLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CiB9CkBAIC0xNjcsNyArMTY3LDcgQEAgSW50U2l6ZSBJbWFnZUJ1ZmZl
cjo6Y29tcGF0aWJsZUJ1ZmZlclNpegogICAgIHJldHVybiBleHBhbmRlZEludFNpemUoc2l6ZSAq
IGNvbnRleHQuc2NhbGVGYWN0b3IoKSk7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VC
dWZmZXI6OmNvcHlSZWN0VG9CdWZmZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQor
UmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcihjb25zdCBG
bG9hdFJlY3QmIHJlY3QsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIGlmIChyZWN0LmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgJKHJldmlzaW9uIDI3Nzk3OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ1LDEzICs0NSwxMyBAQCBzdHJ1Y3QgSXRlbUJ1ZmZlckhhbmRsZTsKIGNsYXNzIEltYWdl
QnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlQnVmZmVyPiwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPEltYWdlQnVmZmVyPiB7CiBwdWJsaWM6CiAgICAgLy8gV2lsbCByZXR1
cm4gYSBudWxsIHBvaW50ZXIgb24gYWxsb2NhdGlvbiBmYWlsdXJlLgotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBS
ZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdCwgUmVuZGVyaW5nUHVycG9zZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0LCBj
b25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2Rl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgUGl4ZWxGb3Jt
YXQsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmlu
Z01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBpeGVsRm9ybWF0LCBj
b25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2Rl
LCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBp
eGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOwogCiAgICAgLy8gQ3JlYXRl
IGFuIGltYWdlIGJ1ZmZlciBjb21wYXRpYmxlIHdpdGggdGhlIGNvbnRleHQsIHdpdGggc3VpdGFi
bGUgcmVzb2x1dGlvbiBmb3IgZHJhd2luZyBpbnRvIHRoZSBidWZmZXIgYW5kIHRoZW4gaW50byB0
aGlzIGNvbnRleHQuCiAgICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0
aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKLSAg
ICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0
IEZsb2F0U2l6ZSYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0
Jik7Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cihjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CisgICAgc3RhdGljIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKyAgICBzdGF0
aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0
U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgYXJl
IHVzZWQgd2hlbiBjbGFtcGluZyB0aGUgSW1hZ2VCdWZmZXIgd2hpY2ggaXMgY3JlYXRlZCBmb3Ig
ZmlsdGVyLCBtYXNrZXIgb3IgY2xpcHBlci4KICAgICBzdGF0aWMgYm9vbCBzaXplTmVlZHNDbGFt
cGluZyhjb25zdCBGbG9hdFNpemUmKTsKQEAgLTEwNyw3ICsxMDcsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJh
Y2tpbmdTdG9yZSwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykg
Y29uc3QgPSAwOwogCiAgICAgLy8gQ3JlYXRlIGFuIGltYWdlIGJ1ZmZlciBjb21wYXRpYmxlIHdp
dGggdGhlIGNvbnRleHQgYW5kIGNvcHkgcmVjdCBmcm9tIHRoaXMgYnVmZmVyIGludG8gdGhpcyBu
ZXcgb25lLgotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY29weVJlY3RUb0J1ZmZlcihjb25zdCBG
bG9hdFJlY3QmLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
OworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY29weVJlY3RUb0J1ZmZlcihjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25zdCBHcmFwaGljc0NvbnRleHQm
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAw
LCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9h
dFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgPSAwOwpA
QCAtMTIwLDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xpcFRvTWFzayhH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KSA9IDA7CiAKICAgICB2
aXJ0dWFsIHZvaWQgY29udmVydFRvTHVtaW5hbmNlTWFzaygpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgdHJhbnNmb3JtQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc3JjQ29sb3JTcGFj
ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGRzdENvbG9yU3BhY2UpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgdHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHNy
Y0NvbG9yU3BhY2UsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgZHN0Q29sb3JTcGFjZSkg
PSAwOwogCiAgICAgdmlydHVhbCBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSA9IFdURjo6bnVsbG9wdCwgUHJlc2VydmVSZXNv
bHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
VmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxk
b3VibGU+IHF1YWxpdHkgPSBXVEY6Om51bGxvcHQpIGNvbnN0ID0gMDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5k
LmNwcAkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsOCBA
QCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVyQmFja2VuZChjCiB7CiB9CiAKK0ltYWdl
QnVmZmVyQmFja2VuZDo6fkltYWdlQnVmZmVyQmFja2VuZCgpID0gZGVmYXVsdDsKKwogUmVmUHRy
PE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckJhY2tlbmQ6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoKQog
ewogICAgIHJldHVybiBjb3B5TmF0aXZlSW1hZ2UoRG9udENvcHlCYWNraW5nU3RvcmUpOwpAQCAt
MTE0LDE1ICsxMTYsMTcgQEAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEltYWdlQnVmZmVyQmFja2Vu
ZAogICAgIGlmIChkZXN0aW5hdGlvblJlY3Quc2l6ZSgpICE9IHNvdXJjZVJlY3RTY2FsZWQuc2l6
ZSgpKQogICAgICAgICBwaXhlbEJ1ZmZlci0+ZGF0YSgpLnplcm9GaWxsKCk7CiAKLSAgICBDb25z
dFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgc291cmNlOwotICAgIHNvdXJjZS5mb3JtYXQgPSB7
IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11bHRpcGxpZWQsIHBpeGVsRm9ybWF0KCksIGNv
bG9yU3BhY2UoKSB9OwotICAgIHNvdXJjZS5ieXRlc1BlclJvdyA9IGJ5dGVzUGVyUm93KCk7Ci0g
ICAgc291cmNlLnJvd3MgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhKSArIHNvdXJj
ZVJlY3RDbGlwcGVkLnkoKSAqIHNvdXJjZS5ieXRlc1BlclJvdyArIHNvdXJjZVJlY3RDbGlwcGVk
LngoKSAqIDQ7CisgICAgQ29uc3RQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IHNvdXJjZSB7Cisg
ICAgICAgIHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgcGl4ZWxGb3Jt
YXQoKSwgY29sb3JTcGFjZSgpIH0sCisgICAgICAgIGJ5dGVzUGVyUm93KCksCisgICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEpICsgc291cmNlUmVjdENsaXBwZWQueSgpICog
c291cmNlLmJ5dGVzUGVyUm93ICsgc291cmNlUmVjdENsaXBwZWQueCgpICogNAorICAgIH07CiAg
ICAgCi0gICAgUGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBkZXN0aW5hdGlvbjsKLSAgICBkZXN0
aW5hdGlvbi5mb3JtYXQgPSBkZXN0aW5hdGlvbkZvcm1hdDsKLSAgICBkZXN0aW5hdGlvbi5ieXRl
c1BlclJvdyA9IDQgKiBzb3VyY2VSZWN0U2NhbGVkLndpZHRoKCk7Ci0gICAgZGVzdGluYXRpb24u
cm93cyA9IHBpeGVsQnVmZmVyLT5kYXRhKCkuZGF0YSgpICsgZGVzdGluYXRpb25SZWN0LnkoKSAq
IGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ICsgZGVzdGluYXRpb25SZWN0LngoKSAqIDQ7CisgICAg
UGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBkZXN0aW5hdGlvbiB7CisgICAgICAgIGRlc3RpbmF0
aW9uRm9ybWF0LAorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oNCAqIHNvdXJjZVJlY3RT
Y2FsZWQud2lkdGgoKSksCisgICAgICAgIHBpeGVsQnVmZmVyLT5kYXRhKCkuZGF0YSgpICsgZGVz
dGluYXRpb25SZWN0LnkoKSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ICsgZGVzdGluYXRpb25S
ZWN0LngoKSAqIDQKKyAgICB9OwogCiAgICAgY29udmVydEltYWdlUGl4ZWxzKHNvdXJjZSwgZGVz
dGluYXRpb24sIGRlc3RpbmF0aW9uUmVjdC5zaXplKCkpOwogCkBAIC0xNDcsMTUgKzE1MSwxNyBA
QCB2b2lkIEltYWdlQnVmZmVyQmFja2VuZDo6cHV0UGl4ZWxCdWZmZXIoCiAgICAgZGVzdGluYXRp
b25SZWN0LmludGVyc2VjdChiYWNrZW5kUmVjdCgpKTsKICAgICBzb3VyY2VSZWN0Q2xpcHBlZC5z
ZXRTaXplKGRlc3RpbmF0aW9uUmVjdC5zaXplKCkpOwogCi0gICAgQ29uc3RQaXhlbEJ1ZmZlckNv
bnZlcnNpb25WaWV3IHNvdXJjZTsKLSAgICBzb3VyY2UuZm9ybWF0ID0gc291cmNlUGl4ZWxCdWZm
ZXIuZm9ybWF0KCk7Ci0gICAgc291cmNlLmJ5dGVzUGVyUm93ID0gNCAqIHNvdXJjZVBpeGVsQnVm
ZmVyLnNpemUoKS53aWR0aCgpOwotICAgIHNvdXJjZS5yb3dzID0gc291cmNlUGl4ZWxCdWZmZXIu
ZGF0YSgpLmRhdGEoKSArIHNvdXJjZVJlY3RDbGlwcGVkLnkoKSAqIHNvdXJjZS5ieXRlc1BlclJv
dyArIHNvdXJjZVJlY3RDbGlwcGVkLngoKSAqIDQ7Ci0KLSAgICBQaXhlbEJ1ZmZlckNvbnZlcnNp
b25WaWV3IGRlc3RpbmF0aW9uOwotICAgIGRlc3RpbmF0aW9uLmZvcm1hdCA9IHsgZGVzdGluYXRp
b25BbHBoYUZvcm1hdCwgcGl4ZWxGb3JtYXQoKSwgY29sb3JTcGFjZSgpIH07Ci0gICAgZGVzdGlu
YXRpb24uYnl0ZXNQZXJSb3cgPSBieXRlc1BlclJvdygpOwotICAgIGRlc3RpbmF0aW9uLnJvd3Mg
PSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhKSArIGRlc3RpbmF0aW9uUmVjdC55KCkg
KiBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyArIGRlc3RpbmF0aW9uUmVjdC54KCkgKiA0OworICAg
IENvbnN0UGl4ZWxCdWZmZXJDb252ZXJzaW9uVmlldyBzb3VyY2UgeworICAgICAgICBzb3VyY2VQ
aXhlbEJ1ZmZlci5mb3JtYXQoKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDQgKiBz
b3VyY2VQaXhlbEJ1ZmZlci5zaXplKCkud2lkdGgoKSksCisgICAgICAgIHNvdXJjZVBpeGVsQnVm
ZmVyLmRhdGEoKS5kYXRhKCkgKyBzb3VyY2VSZWN0Q2xpcHBlZC55KCkgKiBzb3VyY2UuYnl0ZXNQ
ZXJSb3cgKyBzb3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0CisgICAgfTsKKworICAgIFBpeGVsQnVm
ZmVyQ29udmVyc2lvblZpZXcgZGVzdGluYXRpb24geworICAgICAgICB7IGRlc3RpbmF0aW9uQWxw
aGFGb3JtYXQsIHBpeGVsRm9ybWF0KCksIGNvbG9yU3BhY2UoKSB9LAorICAgICAgICBieXRlc1Bl
clJvdygpLAorICAgICAgICByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhKSArIGRlc3Rp
bmF0aW9uUmVjdC55KCkgKiBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyArIGRlc3RpbmF0aW9uUmVj
dC54KCkgKiA0CisgICAgfTsKIAogICAgIGNvbnZlcnRJbWFnZVBpeGVscyhzb3VyY2UsIGRlc3Rp
bmF0aW9uLCBkZXN0aW5hdGlvblJlY3Quc2l6ZSgpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCShyZXZp
c2lvbiAyNzc5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNv
bG9yU3BhY2UuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5
cGVzR0wuaCIKICNpbmNsdWRlICJJbWFnZVBhaW50aW5nT3B0aW9ucy5oIgpAQCAtNzgsNyArNzgs
NyBAQCBwdWJsaWM6CiAgICAgICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0OwogICAgIH07CiAK
LSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbWFnZUJ1ZmZlckJhY2tlbmQoKSA9IGRlZmF1
bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SW1hZ2VCdWZmZXJCYWNrZW5kKCk7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSW50U2l6ZSBjYWxjdWxhdGVCYWNrZW5kU2l6ZShj
b25zdCBQYXJhbWV0ZXJzJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHNpemVfdCBjYWxj
dWxhdGVNZW1vcnlDb3N0KGNvbnN0IEludFNpemUmIGJhY2tlbmRTaXplLCB1bnNpZ25lZCBieXRl
c1BlclJvdyk7CkBAIC0xMDIsNyArMTAyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBj
bGlwVG9NYXNrKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIHsgfQogCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBjb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCk7Ci0gICAgdmlydHVh
bCB2b2lkIHRyYW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB0cmFuc2Zvcm1Db2xvclNwYWNl
KGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYpIHsgfQogCiAgICAgdmlydHVhbCBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIE9wdGlvbmFsPGRvdWJsZT4gcXVhbGl0eSkgY29uc3QgPSAwOwpAQCAtMTQwLDcg
KzE0MCw3IEBAIHByb3RlY3RlZDoKIAogICAgIEludFNpemUgbG9naWNhbFNpemUoKSBjb25zdCB7
IHJldHVybiBJbnRTaXplKG1fcGFyYW1ldGVycy5sb2dpY2FsU2l6ZSk7IH0KICAgICBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMucmVzb2x1dGlvblNj
YWxlOyB9Ci0gICAgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UoKSBjb25zdCB7IHJl
dHVybiBtX3BhcmFtZXRlcnMuY29sb3JTcGFjZTsgfQorICAgIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5jb2xvclNw
YWNlOyB9CiAgICAgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX3Bh
cmFtZXRlcnMucGl4ZWxGb3JtYXQ7IH0KIAogICAgIEludFJlY3QgbG9naWNhbFJlY3QoKSBjb25z
dCB7IHJldHVybiBJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIGxvZ2ljYWxTaXplKCkpOyB9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVy
LmNwcAkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGl4ZWxCdWZmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw5IEBAIGJvb2wg
UGl4ZWxCdWZmZXI6OnN1cHBvcnRlZFBpeGVsRm9ybWF0KFAKICAgICBjYXNlIFBpeGVsRm9ybWF0
OjpSR0IxMEE4OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQorICAgIAorICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogQ2hlY2tlZDx1bnNpZ25l
ZCwgUmVjb3JkT3ZlcmZsb3c+IFBpeGVsQnVmZmVyOjpjb21wdXRlQnVmZmVyU2l6ZShjb25zdCBQ
aXhlbEJ1ZmZlckZvcm1hdCYgZm9ybWF0LCBjb25zdCBJbnRTaXplJiBzaXplKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGl4ZWxCdWZmZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlci5oCShyZXZpc2lv
biAyNzc5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIkFscGhhUHJlbXVsdGlwbGljYXRpb24uaCIKLSNpbmNsdWRlICJDb2xvclNwYWNlLmgi
CisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5o
IgogI2luY2x1ZGUgIlBpeGVsQnVmZmVyRm9ybWF0LmgiCiAjaW5jbHVkZSAiUGl4ZWxGb3JtYXQu
aCIKQEAgLTg3LDE5ICs4NywyMSBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIFBpeGVs
QnVmZmVyCiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBQ
aXhlbEJ1ZmZlcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUGl4ZWxCdWZmZXJG
b3JtYXQgZm9ybWF0OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZm9ybWF0KSkKKyAgICBPcHRp
b25hbDxQaXhlbEJ1ZmZlckZvcm1hdD4gZm9ybWF0OworICAgIGRlY29kZXIgPj4gZm9ybWF0Owor
ICAgIGlmICghZm9ybWF0KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgLy8g
RklYTUU6IFN1cHBvcnQgbm9uLTggYml0IGZvcm1hdHMuCi0gICAgaWYgKCEoZm9ybWF0LnBpeGVs
Rm9ybWF0ID09IFBpeGVsRm9ybWF0OjpSR0JBOCB8fCBmb3JtYXQucGl4ZWxGb3JtYXQgPT0gUGl4
ZWxGb3JtYXQ6OkJHUkE4KSkKKyAgICBpZiAoIShmb3JtYXQtPnBpeGVsRm9ybWF0ID09IFBpeGVs
Rm9ybWF0OjpSR0JBOCB8fCBmb3JtYXQtPnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JB
OCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBJbnRTaXplIHNpemU7Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaXplKSkKKyAgICBPcHRpb25hbDxJbnRTaXplPiBzaXpl
OworICAgIGRlY29kZXIgPj4gc2l6ZTsKKyAgICBpZiAoIXNpemUpCiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiAKLSAgICBhdXRvIGNvbXB1dGVkQnVmZmVyU2l6ZSA9IFBpeGVsQnVmZmVy
Ojpjb21wdXRlQnVmZmVyU2l6ZShmb3JtYXQsIHNpemUpOworICAgIGF1dG8gY29tcHV0ZWRCdWZm
ZXJTaXplID0gUGl4ZWxCdWZmZXI6OmNvbXB1dGVCdWZmZXJTaXplKCpmb3JtYXQsICpzaXplKTsK
ICAgICBpZiAoY29tcHV0ZWRCdWZmZXJTaXplLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIApAQCAtMTA3LDcgKzEwOSw3IEBAIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IE9wdGlvbmFsPFBpeGVsQnUKICAgICBpZiAoIWRlY29kZXIudGVtcGxhdGUgYnVmZmVy
SXNMYXJnZUVub3VnaFRvQ29udGFpbjx1aW50OF90PihidWZmZXJTaXplKSkKICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIGF1dG8gcmVzdWx0ID0gUGl4ZWxCdWZmZXI6OnRyeUNy
ZWF0ZUZvckRlY29kaW5nKGZvcm1hdCwgc2l6ZSwgYnVmZmVyU2l6ZSk7CisgICAgYXV0byByZXN1
bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlRm9yRGVjb2RpbmcoV1RGTW92ZSgqZm9ybWF0KSwg
KnNpemUsIGJ1ZmZlclNpemUpOwogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhl
bEJ1ZmZlckNvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDI3Nzk3OSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BpeGVsQnVmZmVyQ29udmVyc2lv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEyICsyNywxMSBAQAogI2luY2x1ZGUgIlBpeGVs
QnVmZmVyQ29udmVyc2lvbi5oIgogCiAjaW5jbHVkZSAiQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5o
IgotI2luY2x1ZGUgIkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiUGl4ZWxGb3JtYXQuaCIKIAog
I2lmIFVTRShBQ0NFTEVSQVRFKSAmJiBVU0UoQ0cpCi0jaW5jbHVkZSAiQ29sb3JTcGFjZUNHLmgi
CiAjaW5jbHVkZSA8QWNjZWxlcmF0ZS9BY2NlbGVyYXRlLmg+CiAjZW5kaWYKIApAQCAtNzEsNyAr
NzAsNyBAQCBzdGF0aWMgaW5saW5lIHZJbWFnZV9DR0ltYWdlRm9ybWF0IG1ha2VWCiAKICAgICBy
ZXN1bHQuYml0c1BlckNvbXBvbmVudCA9IGJpdHNQZXJDb21wb25lbnQ7CiAgICAgcmVzdWx0LmJp
dHNQZXJQaXhlbCA9IGJpdHNQZXJQaXhlbDsKLSAgICByZXN1bHQuY29sb3JTcGFjZSA9IGNhY2hl
ZENHQ29sb3JTcGFjZShmb3JtYXQuY29sb3JTcGFjZSk7CisgICAgcmVzdWx0LmNvbG9yU3BhY2Ug
PSBmb3JtYXQuY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKTsKICAgICByZXN1bHQuYml0
bWFwSW5mbyA9IGJpdG1hcEluZm87CiAgICAgcmVzdWx0LnZlcnNpb24gPSAwOwogICAgIHJlc3Vs
dC5kZWNvZGUgPSBudWxscHRyOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGl4ZWxCdWZmZXJGb3JtYXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5oCShyZXZpc2lvbiAyNzc5NzkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QaXhlbEJ1ZmZlckZvcm1hdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFs
cGhhUHJlbXVsdGlwbGljYXRpb24uaCIKLSNpbmNsdWRlICJDb2xvclNwYWNlLmgiCisjaW5jbHVk
ZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiUGl4ZWxGb3JtYXQuaCIKICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgpAQCAtNTEs
MTkgKzUxLDIyIEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgUGl4ZWxCdWZmZXIKIAog
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8UGl4ZWxCdWZmZXJGb3JtYXQ+IFBpeGVs
QnVmZmVyRm9ybWF0OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBBbHBoYVByZW11
bHRpcGxpY2F0aW9uIGFscGhhRm9ybWF0OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWxwaGFG
b3JtYXQpKQorICAgIE9wdGlvbmFsPEFscGhhUHJlbXVsdGlwbGljYXRpb24+IGFscGhhRm9ybWF0
OworICAgIGRlY29kZXIgPj4gYWxwaGFGb3JtYXQ7CisgICAgaWYgKCFhbHBoYUZvcm1hdCkKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0
OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGl4ZWxGb3JtYXQpKQorICAgIE9wdGlvbmFsPFBp
eGVsRm9ybWF0PiBwaXhlbEZvcm1hdDsKKyAgICBkZWNvZGVyID4+IHBpeGVsRm9ybWF0OworICAg
IGlmICghcGl4ZWxGb3JtYXQpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGNvbG9yU3BhY2UpKQorICAgIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JT
cGFjZTsKKyAgICBkZWNvZGVyID4+IGNvbG9yU3BhY2U7CisgICAgaWYgKCFjb2xvclNwYWNlKQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHsgeyBhbHBoYUZvcm1h
dCwgcGl4ZWxGb3JtYXQsIGNvbG9yU3BhY2UgfSB9OworICAgIHJldHVybiB7IHsgV1RGTW92ZSgq
YWxwaGFGb3JtYXQpLCBXVEZNb3ZlKCpwaXhlbEZvcm1hdCksIFdURk1vdmUoKmNvbG9yU3BhY2Up
IH0gfTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxh
dGZvcm1Db2xvclNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGxhdGZvcm1Db2xvclNwYWNlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1Db2xvclNwYWNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVT
RShDRykKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Cit0eXBlZGVmIHN0cnVjdCBDR0NvbG9y
U3BhY2UqIENHQ29sb3JTcGFjZVJlZjsKKyNlbHNlCisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMu
aD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKKyNpZiBVU0UoQ0cpCisKK3VzaW5nIFBsYXRmb3JtQ29sb3JTcGFjZSA9IFJldGFpblB0
cjxDR0NvbG9yU3BhY2VSZWY+OwordXNpbmcgUGxhdGZvcm1Db2xvclNwYWNlVmFsdWUgPSBDR0Nv
bG9yU3BhY2VSZWY7CisKKyNlbHNlCisKK2NsYXNzIFBsYXRmb3JtQ29sb3JTcGFjZSB7CitwdWJs
aWM6CisgICAgZW51bSBjbGFzcyBOYW1lIDogdWludDhfdCB7CisgICAgICAgIFNSR0IKKyNpZiBF
TkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCisgICAgICAgICwgTGlu
ZWFyU1JHQgorI2VuZGlmCisjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BM
QVlfUDMpCisgICAgICAgICwgRGlzcGxheVAzCisjZW5kaWYKKyAgICB9OworCisgICAgUGxhdGZv
cm1Db2xvclNwYWNlKE5hbWUgbmFtZSkKKyAgICAgICAgOiBtX25hbWUgeyBuYW1lIH0KKyAgICB7
CisgICAgfQorCisgICAgTmFtZSBnZXQoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKworICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8UGxhdGZvcm1Db2xvclNw
YWNlPiBkZWNvZGUoRGVjb2RlciYpOworCitwcml2YXRlOgorICAgIE5hbWUgbV9uYW1lOworCit9
OwordXNpbmcgUGxhdGZvcm1Db2xvclNwYWNlVmFsdWUgPSBQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5h
bWU7CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgUGxhdGZvcm1Db2xvclNwYWNlOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IG1fbmFtZTsK
K30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gT3B0aW9uYWw8UGxhdGZvcm1Db2xvclNwYWNl
PiBQbGF0Zm9ybUNvbG9yU3BhY2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9w
dGlvbmFsPFBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZT4gbmFtZTsKKyAgICBkZWNvZGVyID4+IG5h
bWU7CisgICAgaWYgKCFuYW1lKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
cmV0dXJuIHsgeyAqbmFtZSB9IH07Cit9CisKKyNlbmRpZgorCit9CisKK25hbWVzcGFjZSBXVEYg
eworCisjaWYgIVVTRShDRykKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3Jl
OjpQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWU+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFs
dWVzPAorICAgICAgICBXZWJDb3JlOjpQbGF0Zm9ybUNvbG9yU3BhY2U6Ok5hbWUsCisgICAgICAg
IFdlYkNvcmU6OlBsYXRmb3JtQ29sb3JTcGFjZTo6TmFtZTo6U1JHQgorI2lmIEVOQUJMRShERVNU
SU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKKyAgICAgICAgLCBXZWJDb3JlOjpQbGF0
Zm9ybUNvbG9yU3BhY2U6Ok5hbWU6OkxpbmVhclNSR0IKKyNlbmRpZgorI2lmIEVOQUJMRShERVNU
SU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQorICAgICAgICAsIFdlYkNvcmU6OlBsYXRm
b3JtQ29sb3JTcGFjZTo6TmFtZTo6RGlzcGxheVAzCisjZW5kaWYKKyAgICA+OworfTsKKworI2Vu
ZGlmCisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwCShyZXZpc2lvbiAy
Nzc5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1Nh
bXBsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgc3RhdGljIGlubGluZSBz
dGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPgogICAgIH0KIAogICAgIEludFNpemUgc2l6ZSB7IHN0
YXRpY19jYXN0PGludD4oQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoKHBpeGVsQnVmZmVyKSksIHN0YXRp
Y19jYXN0PGludD4oQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodChwaXhlbEJ1ZmZlcikpIH07Ci0gICAg
YXV0byBpb1N1cmZhY2UgPSAgSU9TdXJmYWNlOjpjcmVhdGUoc2l6ZSwgc1JHQkNvbG9yU3BhY2VS
ZWYoKSwgSU9TdXJmYWNlOjpGb3JtYXQ6OkJHUkEpOworICAgIGF1dG8gaW9TdXJmYWNlID0gSU9T
dXJmYWNlOjpjcmVhdGUoc2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIElPU3Vy
ZmFjZTo6Rm9ybWF0OjpCR1JBKTsKIAogICAgIElPU3VyZmFjZTo6TG9ja2VyIGxvY2soKmlvU3Vy
ZmFjZSk7CiAgICAgdkltYWdlX0J1ZmZlciBzcmM7CkBAIC0xMTMsNyArMTEzLDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBSZW1vdAogICAgICAgICBzdXJmYWNlID0gaW9T
dXJmYWNlLT5zdXJmYWNlKCk7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxS
ZW1vdGVWaWRlb1NhbXBsZT4obmV3IFJlbW90ZVZpZGVvU2FtcGxlKHN1cmZhY2UsIHNSR0JDb2xv
clNwYWNlUmVmKCksIHNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCksIHNhbXBsZS52aWRlb1JvdGF0
aW9uKCksIHNhbXBsZS52aWRlb01pcnJvcmVkKCkpKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZVZpZGVvU2FtcGxlPihuZXcgUmVtb3RlVmlkZW9TYW1wbGUoc3VyZmFjZSwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHNhbXBsZS5wcmVzZW50YXRpb25UaW1lKCksIHNh
bXBsZS52aWRlb1JvdGF0aW9uKCksIHNhbXBsZS52aWRlb01pcnJvcmVkKCkpKTsKIH0KIAogc3Rk
Ojp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBSZW1vdGVWaWRlb1NhbXBsZTo6Y3JlYXRl
KENWUGl4ZWxCdWZmZXJSZWYgaW1hZ2VCdWZmZXIsIE1lZGlhVGltZSYmIHByZXNlbnRhdGlvblRp
bWUsIE1lZGlhU2FtcGxlOjpWaWRlb1JvdGF0aW9uIHJvdGF0aW9uKQpAQCAtMTI0LDEwICsxMjQs
MTAgQEAgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVZpZGVvU2FtcGxlPiBSZW1vdAogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZVZpZGVvU2FtcGxlPihuZXcgUmVtb3RlVmlkZW9TYW1wbGUoc3VyZmFjZSwgc1JHQkNvbG9yU3Bh
Y2VSZWYoKSwgV1RGTW92ZShwcmVzZW50YXRpb25UaW1lKSwgcm90YXRpb24sIGZhbHNlKSk7Cisg
ICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZW1vdGVWaWRlb1NhbXBsZT4obmV3IFJlbW90ZVZp
ZGVvU2FtcGxlKHN1cmZhY2UsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBXVEZNb3Zl
KHByZXNlbnRhdGlvblRpbWUpLCByb3RhdGlvbiwgZmFsc2UpKTsKIH0KIAotUmVtb3RlVmlkZW9T
YW1wbGU6OlJlbW90ZVZpZGVvU2FtcGxlKElPU3VyZmFjZVJlZiBzdXJmYWNlLCBDR0NvbG9yU3Bh
Y2VSZWYgY29sb3JTcGFjZSwgTWVkaWFUaW1lJiYgdGltZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90
YXRpb24gcm90YXRpb24sIGJvb2wgbWlycm9yZWQpCitSZW1vdGVWaWRlb1NhbXBsZTo6UmVtb3Rl
VmlkZW9TYW1wbGUoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgY29sb3JTcGFjZSwgTWVkaWFUaW1lJiYgdGltZSwgTWVkaWFTYW1wbGU6OlZpZGVvUm90
YXRpb24gcm90YXRpb24sIGJvb2wgbWlycm9yZWQpCiAgICAgOiBtX2lvU3VyZmFjZShXZWJDb3Jl
OjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TdXJmYWNlKHN1cmZhY2UsIGNvbG9yU3BhY2UpKQogICAg
ICwgbV9yb3RhdGlvbihyb3RhdGlvbikKICAgICAsIG1fdGltZShXVEZNb3ZlKHRpbWUpKQpAQCAt
MTQwLDcgKzE0MCw3IEBAIFJlbW90ZVZpZGVvU2FtcGxlOjpSZW1vdGVWaWRlb1NhbXBsZShJT1MK
IElPU3VyZmFjZVJlZiBSZW1vdGVWaWRlb1NhbXBsZTo6c3VyZmFjZSgpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX2lvU3VyZmFjZSAmJiBtX3NlbmRSaWdodCkKLSAgICAgICAgY29uc3RfY2FzdDxSZW1v
dGVWaWRlb1NhbXBsZSo+KHRoaXMpLT5tX2lvU3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6
Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGNvbnN0X2Nhc3Q8UmVtb3RlVmlkZW9TYW1wbGUq
Pih0aGlzKS0+bV9zZW5kUmlnaHQpLCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICAgICAgY29u
c3RfY2FzdDxSZW1vdGVWaWRlb1NhbXBsZSo+KHRoaXMpLT5tX2lvU3VyZmFjZSA9IFdlYkNvcmU6
OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKGNvbnN0X2Nhc3Q8UmVtb3Rl
VmlkZW9TYW1wbGUqPih0aGlzKS0+bV9zZW5kUmlnaHQpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSk7CiAKICAgICByZXR1cm4gbV9pb1N1cmZhY2UgPyBtX2lvU3VyZmFjZS0+c3VyZmFj
ZSgpIDogbnVsbHB0cjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1JlbW90ZVZpZGVvU2FtcGxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAkocmV2aXNpb24gMjc3OTc5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0g
ICAgUmVtb3RlVmlkZW9TYW1wbGUoSU9TdXJmYWNlUmVmLCBDR0NvbG9yU3BhY2VSZWYsIE1lZGlh
VGltZSYmLCBNZWRpYVNhbXBsZTo6VmlkZW9Sb3RhdGlvbiwgYm9vbCk7CisgICAgUmVtb3RlVmlk
ZW9TYW1wbGUoSU9TdXJmYWNlUmVmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBNZWRp
YVRpbWUmJiwgTWVkaWFTYW1wbGU6OlZpZGVvUm90YXRpb24sIGJvb2wpOwogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gbV9pb1N1cmZhY2U7CiAgICAgV1RGOjpNYWNo
U2VuZFJpZ2h0IG1fc2VuZFJpZ2h0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU2hhZG93Qmx1ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAJKHJldmlzaW9uIDI3Nzk3OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2xlYXJTY3JhdGNoQnVmZmVyKCk7CiAK
ICAgICAgICAgLy8gU2hhZG93Qmx1ciBpcyBub3QgdXNlZCB3aXRoIGFjY2VsZXJhdGVkIGRyYXdp
bmcsIHNvIGl0J3MgT0sgdG8gbWFrZSBhbiB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZCBi
dWZmZXIuCi0gICAgICAgIG1faW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJvdW5k
ZWRTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgIG1faW1hZ2VCdWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHJvdW5kZWRTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJH
UkE4KTsKICAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXI7CiAgICAgfQogCkBAIC02MDQsNyAr
NjA0LDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3coY29uc3QgQQogCiB2b2lk
IFNoYWRvd0JsdXI6OmRyYXdSZWN0U2hhZG93V2l0aG91dFRpbGluZyhjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBzaGFkb3dlZFJlY3QsIGNvbnN0IExheWVy
SW1hZ2VQcm9wZXJ0aWVzJiBsYXllckltYWdlUHJvcGVydGllcywgY29uc3QgRHJhd0J1ZmZlckNh
bGxiYWNrJiBkcmF3QnVmZmVyKQogewotICAgIGF1dG8gbGF5ZXJJbWFnZSA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoZXhwYW5kZWRJbnRTaXplKGxheWVySW1hZ2VQcm9wZXJ0aWVzLmxheWVyU2l6ZSks
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGllcy5sYXllclNp
emUpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWxheWVySW1hZ2UpCiAg
ICAgICAgIHJldHVybjsKIApAQCAtNjMyLDcgKzYzMiw3IEBAIHZvaWQgU2hhZG93Qmx1cjo6ZHJh
d1JlY3RTaGFkb3dXaXRob3V0VGkKIAogdm9pZCBTaGFkb3dCbHVyOjpkcmF3SW5zZXRTaGFkb3dX
aXRob3V0VGlsaW5nKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UmVjdCYgZnVs
bFJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIGhvbGVSZWN0LCBjb25zdCBMYXllckltYWdl
UHJvcGVydGllcyYgbGF5ZXJJbWFnZVByb3BlcnRpZXMsIGNvbnN0IERyYXdCdWZmZXJDYWxsYmFj
ayYgZHJhd0J1ZmZlcikKIHsKLSAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKGV4cGFuZGVkSW50U2l6ZShsYXllckltYWdlUHJvcGVydGllcy5sYXllclNpemUpLCBSZW5k
ZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Is
IFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBsYXllckltYWdlID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShleHBhbmRlZEludFNpemUobGF5ZXJJbWFnZVByb3BlcnRpZXMubGF5ZXJTaXplKSwg
UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFsYXllckltYWdlKQogICAgICAg
ICByZXR1cm47CiAKQEAgLTcwOCw3ICs3MDgsNyBAQCB2b2lkIFNoYWRvd0JsdXI6OmRyYXdSZWN0
U2hhZG93V2l0aFRpbGluCiAgICAgVU5VU0VEX1BBUkFNKGxheWVySW1hZ2VQcm9wZXJ0aWVzKTsK
ICNlbmRpZgogCi0gICAgaWYgKGF1dG8gbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGUodGVtcGxhdGVTaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCkpCisgICAgaWYgKGF1
dG8gbGF5ZXJJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGVtcGxhdGVTaXplLCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSkKICAgICAgICAgZHJhd1JlY3RTaGFkb3dXaXRoVGls
aW5nV2l0aExheWVySW1hZ2VCdWZmZXIoKmxheWVySW1hZ2VCdWZmZXIsIHRyYW5zZm9ybSwgc2hh
ZG93ZWRSZWN0LCB0ZW1wbGF0ZVNpemUsIGVkZ2VTaXplLCBkcmF3SW1hZ2UsIGZpbGxSZWN0LCB0
ZW1wbGF0ZVNoYWRvdyk7CiB9CiAKQEAgLTc2Miw3ICs3NjIsNyBAQCB2b2lkIFNoYWRvd0JsdXI6
OmRyYXdJbnNldFNoYWRvd1dpdGhUaWxpCiAgICAgfQogI2VuZGlmCiAKLSAgICBpZiAoYXV0byBs
YXllckltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNpemUsIFJlbmRl
cmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwg
UGl4ZWxGb3JtYXQ6OkJHUkE4KSkKKyAgICBpZiAoYXV0byBsYXllckltYWdlQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZSh0ZW1wbGF0ZVNpemUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgp
KQogICAgICAgICBkcmF3SW5zZXRTaGFkb3dXaXRoVGlsaW5nV2l0aExheWVySW1hZ2VCdWZmZXIo
KmxheWVySW1hZ2VCdWZmZXIsIHRyYW5zZm9ybSwgZnVsbFJlY3QsIGhvbGVSZWN0LCB0ZW1wbGF0
ZVNpemUsIGVkZ2VTaXplLCBkcmF3SW1hZ2UsIGZpbGxSZWN0V2l0aEhvbGUsIHRlbXBsYXRlQm91
bmRzLCB0ZW1wbGF0ZUhvbGUpOwogfQogCkBAIC04OTEsNyArODkxLDcgQEAgdm9pZCBTaGFkb3dC
bHVyOjpibHVyU2hhZG93QnVmZmVyKEltYWdlQgogICAgIGlmIChtX3R5cGUgIT0gQmx1clNoYWRv
dykKICAgICAgICAgcmV0dXJuOwogCi0gICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9OworICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZv
cm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3Jt
YXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9OwogICAgIEludFJlY3Qg
Ymx1clJlY3QoSW50UG9pbnQoKSwgdGVtcGxhdGVTaXplKTsKICAgICBhdXRvIGxheWVyRGF0YSA9
IGxheWVySW1hZ2UuZ2V0UGl4ZWxCdWZmZXIoZm9ybWF0LCBibHVyUmVjdCk7CiAgICAgaWYgKCFs
YXllckRhdGEpCkBAIC05MjEsNyArOTIxLDcgQEAgdm9pZCBTaGFkb3dCbHVyOjpkcmF3U2hhZG93
TGF5ZXIoY29uc3QgQQogCiAgICAgYWRqdXN0Qmx1clJhZGl1cyh0cmFuc2Zvcm0pOwogCi0gICAg
YXV0byBsYXllckltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShleHBhbmRlZEludFNpemUobGF5
ZXJJbWFnZVByb3BlcnRpZXMtPmxheWVyU2l6ZSksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
KyAgICBhdXRvIGxheWVySW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGV4cGFuZGVkSW50U2l6
ZShsYXllckltYWdlUHJvcGVydGllcy0+bGF5ZXJTaXplKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CiAgICAgaWYgKCFsYXllckltYWdlKQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5H
TEUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCShyZXZpc2lvbiAyNzc5NzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xF
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBAQCBzdGF0aWMgdm9pZCB3aXBlQWxw
aGFDaGFubmVsRnJvbVBpeGVscyhpCiAKIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiB7Ci0gICAgUGl4ZWxC
dWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBs
aWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiB9Owor
ICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVu
cHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSB9OwogICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRl
KGZvcm1hdCwgZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKSk7CiAgICAgaWYgKCFwaXhlbEJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0SW1wbENhaXJvLmNwcAkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDE0LDcgKzQxNCw3IEBAIEZsb2F0UmVjdCBHcmFwaGljc0NvbnRl
eHRJbXBsQ2Fpcm86OnJvdW4KICAgICByZXR1cm4gQ2Fpcm86OlN0YXRlOjpyb3VuZFRvRGV2aWNl
UGl4ZWxzKG1fcGxhdGZvcm1Db250ZXh0LCByZWN0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRJbXBsQ2Fpcm86OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpCit2
b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZ1bmN0aW9uPHZvaWQo
R3JhcGhpY3NDb250ZXh0Jik+JiYpCiB7CiAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4K
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dEltcGxDYWlyby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCShyZXZpc2lvbiAyNzc5
NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRJbXBsQ2Fpcm8uaAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNsaXBQYXRoKGNvbnN0IFBhdGgmLCBXaW5kUnVsZSkgb3ZlcnJpZGU7CiAg
ICAgSW50UmVjdCBjbGlwQm91bmRzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGlwVG9JbWFnZUJ1
ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwotICAgIHZvaWQg
Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRnVuY3Rpb248dm9pZChH
cmFwaGljc0NvbnRleHQmKT4mJikgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHZv
aWQgcGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
aW5hdGlvbikgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5QYWludEZyYW1lRm9yTWVkaWEoY29uc3Qg
TWVkaWFQbGF5ZXImKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tl
bmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAkocmV2aXNpb24gMjc3OTc5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tl
bmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSwxOSArODksMTkgQEAgdm9pZCBJbWFnZUJ1ZmZl
ckNhaXJvQmFja2VuZDo6Y2xpcFRvTWFzawogICAgICAgICBDYWlybzo6Y2xpcFRvSW1hZ2VCdWZm
ZXIoKmRlc3RDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS0+cGxhdGZvcm1JbWFnZSgp
LmdldCgpLCBkZXN0UmVjdCk7CiB9CiAKLXZvaWQgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRy
YW5zZm9ybUNvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIHNyY0NvbG9yU3BhY2UsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSBkZXN0Q29sb3JTcGFjZSkKK3ZvaWQgSW1hZ2VCdWZmZXJDYWly
b0JhY2tlbmQ6OnRyYW5zZm9ybUNvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiBzcmNDb2xvclNwYWNlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGRlc3RDb2xvclNw
YWNlKQogewogICAgIGlmIChzcmNDb2xvclNwYWNlID09IGRlc3RDb2xvclNwYWNlKQogICAgICAg
ICByZXR1cm47CiAKICAgICAvLyBvbmx5IHNSR0IgPC0+IGxpbmVhclJHQiBhcmUgc3VwcG9ydGVk
IGF0IHRoZSBtb21lbnQKLSAgICBpZiAoKHNyY0NvbG9yU3BhY2UgIT0gRGVzdGluYXRpb25Db2xv
clNwYWNlOjpMaW5lYXJTUkdCICYmIHNyY0NvbG9yU3BhY2UgIT0gRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKQotICAgICAgICB8fCAoZGVzdENvbG9yU3BhY2UgIT0gRGVzdGluYXRpb25Db2xv
clNwYWNlOjpMaW5lYXJTUkdCICYmIGRlc3RDb2xvclNwYWNlICE9IERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQikpCisgICAgaWYgKChzcmNDb2xvclNwYWNlICE9IERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6TGluZWFyU1JHQigpICYmIHNyY0NvbG9yU3BhY2UgIT0gRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCkpCisgICAgICAgIHx8IChkZXN0Q29sb3JTcGFjZSAhPSBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OkxpbmVhclNSR0IoKSAmJiBkZXN0Q29sb3JTcGFjZSAhPSBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGFyYW1ldGVycy5j
b2xvclNwYWNlID0gZGVzdENvbG9yU3BhY2U7CiAKLSAgICBpZiAoZGVzdENvbG9yU3BhY2UgPT0g
RGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKSB7CisgICAgaWYgKGRlc3RDb2xvclNw
YWNlID09IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigpKSB7CiAgICAgICAgIHN0
YXRpYyBjb25zdCBzdGQ6OmFycmF5PHVpbnQ4X3QsIDI1Nj4gbGluZWFyUmdiTFVUID0gW10gewog
ICAgICAgICAgICAgc3RkOjphcnJheTx1aW50OF90LCAyNTY+IGFycmF5OwogICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI1NjsgaSsrKSB7CkBAIC0xMTIsNyArMTEyLDcgQEAg
dm9pZCBJbWFnZUJ1ZmZlckNhaXJvQmFja2VuZDo6dHJhbnNmb3JtQwogICAgICAgICAgICAgcmV0
dXJuIGFycmF5OwogICAgICAgICB9KCk7CiAgICAgICAgIHBsYXRmb3JtVHJhbnNmb3JtQ29sb3JT
cGFjZShsaW5lYXJSZ2JMVVQpOwotICAgIH0gZWxzZSBpZiAoZGVzdENvbG9yU3BhY2UgPT0gRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKSB7CisgICAgfSBlbHNlIGlmIChkZXN0Q29sb3JTcGFj
ZSA9PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSkgewogICAgICAgICBzdGF0aWMgY29u
c3Qgc3RkOjphcnJheTx1aW50OF90LCAyNTY+IGRldmljZVJnYkxVVD0gW10gewogICAgICAgICAg
ICAgc3RkOjphcnJheTx1aW50OF90LCAyNTY+IGFycmF5OwogICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IDI1NjsgaSsrKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9C
YWNrZW5kLmgJKHJldmlzaW9uIDI3Nzk3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGlwVG9NYXNrKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpIG92ZXJyaWRlOwogCi0gICAgdm9pZCB0
cmFuc2Zvcm1Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSBzcmNDb2xvclNwYWNlLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgZGVzdENvbG9yU3BhY2UpIG92ZXJyaWRlOworICAgIHZvaWQg
dHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHNyY0NvbG9y
U3BhY2UsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgZGVzdENvbG9yU3BhY2UpIG92ZXJy
aWRlOwogCiAgICAgU3RyaW5nIHRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRp
b25hbDxkb3VibGU+IHF1YWxpdHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHRvRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRp
b25hbDxkb3VibGU+IHF1YWxpdHkpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAJKHJldmlzaW9uIDI3Nzk3
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywg
MjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDEzICsyOSwxNCBA
QAogI2lmIFVTRShDRykKIAogI2luY2x1ZGUgIkNvbG9yU3BhY2VDRy5oIgorI2luY2x1ZGUgIkRl
c3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHBhbC9z
cGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNp
bmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRl
IDx3dGYvVGlueUxSVUNhY2hlLmg+Ci0jaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NT
UEkuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL1RpbnlM
UlVDYWNoZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgUmV0YWluUHRyPENHQ29s
b3JSZWY+IGNyZWF0ZUNHQ29sb3IoY29uc3QgQ29sb3ImKTsKQEAgLTkxLDM0ICs5MiwzOCBAQCBD
b2xvcjo6Q29sb3IoQ0dDb2xvclJlZiBjb2xvciwgT3B0aW9uU2V0CiB7CiB9CiAKLXN0YXRpYyBS
ZXRhaW5QdHI8Q0dDb2xvclJlZj4gY3JlYXRlQ0dDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCitz
dGF0aWMgc3RkOjpwYWlyPENHQ29sb3JTcGFjZVJlZiwgQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0
Pj4gY29udmVydFRvQ0dDb21wYXRpYmxlQ29tcG9uZW50cyhDb2xvclNwYWNlIGNvbG9yU3BhY2Us
IENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4gY29tcG9uZW50cykKIHsKLSAgICBhdXRvIFtjb2xv
clNwYWNlLCBjb21wb25lbnRzXSA9IGNvbG9yLmNvbG9yU3BhY2VBbmRDb21wb25lbnRzKCk7Ci0K
LSAgICBhdXRvIGNnQ29sb3JTcGFjZSA9IGNhY2hlZE51bGxhYmxlQ0dDb2xvclNwYWNlKGNvbG9y
U3BhY2UpOwotCiAgICAgLy8gU29tZSBDRyBwb3J0cyBkb24ndCBzdXBwb3J0IGFsbCB0aGUgY29s
b3Igc3BhY2VzIHJlcXVpcmVkIGFuZCByZXR1cm4KICAgICAvLyBudWxscHRyIGZvciB1bnN1cHBv
cnRlZCBjb2xvciBzcGFjZXMuIEluIHRob3NlIGNhc2VzLCB3ZSBlYWdlcmx5IGNvbnZlcnQKICAg
ICAvLyB0aGUgY29sb3IgaW50byBlaXRoZXIgZXh0ZW5kZWQgc1JHQiBvciBub3JtYWwgc1JHQiwg
aWYgZXh0ZW5kZWQgc1JHQiBpcwotICAgIC8vIG5vdCBzdXBwb3J0ZWQsIGJlZm9yZSBjcmVhdGlu
ZyB0aGUgQ0dDb2xvclJlZi4KKyAgICAvLyBub3Qgc3VwcG9ydGVkLgorCisgICAgYXV0byBjZ0Nv
bG9yU3BhY2UgPSBjYWNoZWROdWxsYWJsZUNHQ29sb3JTcGFjZShjb2xvclNwYWNlKTsKICAgICBp
ZiAoIWNnQ29sb3JTcGFjZSkgewogI2lmIEhBVkUoQ09SRV9HUkFQSElDU19FWFRFTkRFRF9TUkdC
X0NPTE9SX1NQQUNFKQotICAgICAgICBhdXRvIGNvbG9yQ29udmVydGVkVG9FeHRlbmRlZFNSR0JB
ID0gY2FsbFdpdGhDb2xvclR5cGUoY29tcG9uZW50cywgY29sb3JTcGFjZSwgW10gKGNvbnN0IGF1
dG8mIGNvbG9yKSB7Ci0gICAgICAgICAgICByZXR1cm4gY29udmVydENvbG9yPEV4dGVuZGVkU1JH
QkE8ZmxvYXQ+Pihjb2xvcik7CisgICAgICAgIGF1dG8gY29tcG9uZW50c0NvbnZlcnRlZFRvRXh0
ZW5kZWRTUkdCQSA9IGNhbGxXaXRoQ29sb3JUeXBlKGNvbXBvbmVudHMsIGNvbG9yU3BhY2UsIFtd
IChjb25zdCBhdXRvJiBjb2xvcikgeworICAgICAgICAgICAgcmV0dXJuIGFzQ29sb3JDb21wb25l
bnRzKGNvbnZlcnRDb2xvcjxFeHRlbmRlZFNSR0JBPGZsb2F0Pj4oY29sb3IpKTsKICAgICAgICAg
fSk7Ci0gICAgICAgIGNvbXBvbmVudHMgPSBhc0NvbG9yQ29tcG9uZW50cyhjb2xvckNvbnZlcnRl
ZFRvRXh0ZW5kZWRTUkdCQSk7Ci0gICAgICAgIGNnQ29sb3JTcGFjZSA9IGV4dGVuZGVkU1JHQkNv
bG9yU3BhY2VSZWYoKTsKKyAgICAgICAgcmV0dXJuIHsgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJl
ZigpLCBjb21wb25lbnRzQ29udmVydGVkVG9FeHRlbmRlZFNSR0JBIH07CiAjZWxzZQotICAgICAg
ICBhdXRvIGNvbG9yQ29udmVydGVkVG9TUkdCQSA9IGNhbGxXaXRoQ29sb3JUeXBlKGNvbXBvbmVu
dHMsIGNvbG9yU3BhY2UsIFtdIChjb25zdCBhdXRvJiBjb2xvcikgewotICAgICAgICAgICAgcmV0
dXJuIGNvbnZlcnRDb2xvcjxTUkdCQTxmbG9hdD4+KGNvbG9yKTsKKyAgICAgICAgYXV0byBjb21w
b25lbnRzQ29udmVydGVkVG9TUkdCQSA9IGNhbGxXaXRoQ29sb3JUeXBlKGNvbXBvbmVudHMsIGNv
bG9yU3BhY2UsIFtdIChjb25zdCBhdXRvJiBjb2xvcikgeworICAgICAgICAgICAgcmV0dXJuIGFz
Q29sb3JDb21wb25lbnRzKGNvbnZlcnRDb2xvcjxTUkdCQTxmbG9hdD4+KGNvbG9yKSk7CiAgICAg
ICAgIH0pOwotICAgICAgICBjb21wb25lbnRzID0gYXNDb2xvckNvbXBvbmVudHMoY29sb3JDb252
ZXJ0ZWRUb1NSR0JBKTsKLSAgICAgICAgY2dDb2xvclNwYWNlID0gc1JHQkNvbG9yU3BhY2VSZWYo
KTsKKyAgICAgICAgcmV0dXJuIHsgc1JHQkNvbG9yU3BhY2VSZWYoKSwgY29tcG9uZW50c0NvbnZl
cnRlZFRvU1JHQkEgfTsKICNlbmRpZgogICAgIH0KIAotICAgIGF1dG8gW3IsIGcsIGIsIGFdID0g
Y29tcG9uZW50czsKLSAgICBDR0Zsb2F0IGNnRmxvYXRDb21wb25lbnRzWzRdIHsgciwgZywgYiwg
YSB9OworICAgIHJldHVybiB7IGNnQ29sb3JTcGFjZSwgY29tcG9uZW50cyB9OworfQorCitzdGF0
aWMgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNyZWF0ZUNHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9y
KQoreworICAgIGF1dG8gW2NvbG9yU3BhY2UsIGNvbXBvbmVudHNdID0gY29sb3IuY29sb3JTcGFj
ZUFuZENvbXBvbmVudHMoKTsKKyAgICBhdXRvIFtjZ0NvbG9yU3BhY2UsIGNnQ29tcGF0aWJsZUNv
bXBvbmVudHNdID0gY29udmVydFRvQ0dDb21wYXRpYmxlQ29tcG9uZW50cyhjb2xvclNwYWNlLCBj
b21wb25lbnRzKTsKKyAgICAKKyAgICBhdXRvIFtjMSwgYzIsIGMzLCBjNF0gPSBjZ0NvbXBhdGli
bGVDb21wb25lbnRzOworICAgIENHRmxvYXQgY2dGbG9hdENvbXBvbmVudHNbNF0geyBjMSwgYzIs
IGMzLCBjNCB9OwogCiAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dDb2xvckNyZWF0ZShjZ0NvbG9yU3Bh
Y2UsIGNnRmxvYXRDb21wb25lbnRzKSk7CiB9CkBAIC0xNjEsNiArMTY2LDI0IEBAIENHQ29sb3JS
ZWYgY2FjaGVkQ0dDb2xvcihjb25zdCBDb2xvciYgY28KICAgICByZXR1cm4gY2FjaGUuZ2V0KCku
Z2V0KGNvbG9yKS5nZXQoKTsKIH0KIAorQ29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiBwbGF0Zm9y
bUNvbnZlcnRDb2xvckNvbXBvbmVudHMoQ29sb3JTcGFjZSBpbnB1dENvbG9yU3BhY2UsIENvbG9y
Q29tcG9uZW50czxmbG9hdCwgND4gaW5wdXRDb2xvckNvbXBvbmVudHMsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgb3V0cHV0Q29sb3JTcGFjZSkKK3sKKyAgICAvLyBGSVhNRTogSW52ZXN0
aWdhdGUgb3B0aW1pemluZyB0aGlzIHRvIHVzZSB0aGUgYnVpbHRpbiBjb2xvciBjb252ZXJzaW9u
IGNvZGUgZm9yIHN1cHBvcnRlZCBjb2xvciBzcGFjZXMuCisKKyAgICBhdXRvIFtjZ0lucHV0Q29s
b3JTcGFjZSwgY2dDb21wYXRpYmxlQ29tcG9uZW50c10gPSBjb252ZXJ0VG9DR0NvbXBhdGlibGVD
b21wb25lbnRzKGlucHV0Q29sb3JTcGFjZSwgaW5wdXRDb2xvckNvbXBvbmVudHMpOworICAgIGlm
IChjZ0lucHV0Q29sb3JTcGFjZSA9PSBvdXRwdXRDb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFj
ZSgpKQorICAgICAgICByZXR1cm4gY2dDb21wYXRpYmxlQ29tcG9uZW50czsKKworICAgIGF1dG8g
W2MxLCBjMiwgYzMsIGM0XSA9IGNnQ29tcGF0aWJsZUNvbXBvbmVudHM7CisgICAgQ0dGbG9hdCBz
b3VyY2VDb21wb25lbnRzWzRdIHsgYzEsIGMyLCBjMywgYzQgfTsKKyAgICBDR0Zsb2F0IGRlc3Rp
bmF0aW9uQ29tcG9uZW50c1s0XSB7IH07CisKKyAgICBhdXRvIHRyYW5zZm9ybSA9IGFkb3B0Q0Yo
Q0dDb2xvclRyYW5zZm9ybUNyZWF0ZShvdXRwdXRDb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JTcGFj
ZSgpLCBudWxscHRyKSk7CisgICAgYXV0byByZXN1bHQgPSBDR0NvbG9yVHJhbnNmb3JtQ29udmVy
dENvbG9yQ29tcG9uZW50cyh0cmFuc2Zvcm0uZ2V0KCksIGNnSW5wdXRDb2xvclNwYWNlLCBrQ0dS
ZW5kZXJpbmdJbnRlbnREZWZhdWx0LCBzb3VyY2VDb21wb25lbnRzLCBkZXN0aW5hdGlvbkNvbXBv
bmVudHMpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworICAgIHJldHVybiB7
IHN0YXRpY19jYXN0PGZsb2F0PihkZXN0aW5hdGlvbkNvbXBvbmVudHNbMF0pLCBzdGF0aWNfY2Fz
dDxmbG9hdD4oZGVzdGluYXRpb25Db21wb25lbnRzWzFdKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRl
c3RpbmF0aW9uQ29tcG9uZW50c1syXSksIHN0YXRpY19jYXN0PGZsb2F0PihkZXN0aW5hdGlvbkNv
bXBvbmVudHNbM10pIH07Cit9CisKIH0KIAogI2VuZGlmIC8vIFVTRShDRykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yU3BhY2VDRy5oCShy
ZXZpc2lvbiAyNzc5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9D
b2xvclNwYWNlQ0cuaAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDIzICsxMTksNCBAQCBzdGF0aWMg
aW5saW5lIENHQ29sb3JTcGFjZVJlZiBjYWNoZWROdWxsCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKLS8vIE5PVEU6IFNpbmNlIHRoaXMgZnVuY3Rpb24gaXMgZm9yICpkZXN0aW5hdGlvbiogY29s
b3Igc3BhY2VzIHdob3NlIGNhbGxlcnMgYWx3YXlzIGV4cGVjdCBhIG5vbi1udWxsIGNvbG9yIHNw
YWNlLCB0aGlzIGZ1bmN0aW9uIGlzIGd1YXJhbnRlZWQgdG8gcmV0dXJuIG5vbi1udWxsLCB1bmxp
a2UgY2FjaGVkTnVsbGFibGVDR0NvbG9yU3BhY2UoKS4KLXN0YXRpYyBpbmxpbmUgQ0dDb2xvclNw
YWNlUmVmIGNhY2hlZENHQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFj
ZSkKLXsKLSAgICBzd2l0Y2ggKGNvbG9yU3BhY2UpIHsKLSAgICBjYXNlIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQjoKLSAgICAgICAgcmV0dXJuIHNSR0JDb2xvclNwYWNlUmVmKCk7Ci0jaWYg
RU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQotICAgIGNhc2UgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCOgotICAgICAgICByZXR1cm4gbGluZWFyU1JH
QkNvbG9yU3BhY2VSZWYoKTsKLSNlbmRpZgotI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9T
UEFDRV9ESVNQTEFZX1AzKQotICAgIGNhc2UgRGVzdGluYXRpb25Db2xvclNwYWNlOjpEaXNwbGF5
UDM6Ci0gICAgICAgIHJldHVybiBkaXNwbGF5UDNDb2xvclNwYWNlUmVmKCk7Ci0jZW5kaWYKLSAg
ICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHNSR0JDb2xvclNwYWNl
UmVmKCk7Ci19Ci0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dEdMQ0cuY3BwCShyZXZpc2lvbiAyNzc5
NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRl
eHRHTENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMyLDcgKzUzMiw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnBhaW50VG9DYW4KICAgICB9KSk7CiAKICAgICBhdXRvIGltYWdl
U2l6ZSA9IHBpeGVsQnVmZmVyLnNpemUoKTsKLSAgICBhdXRvIGltYWdlID0gTmF0aXZlSW1hZ2U6
OmNyZWF0ZShhZG9wdENGKENHSW1hZ2VDcmVhdGUoaW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6
ZS5oZWlnaHQoKSwgOCwgMzIsIDQgKiBpbWFnZVNpemUud2lkdGgoKSwgY2FjaGVkQ0dDb2xvclNw
YWNlKHBpeGVsQnVmZmVyLmZvcm1hdCgpLmNvbG9yU3BhY2UpLCBiaXRtYXBJbmZvLCBkYXRhUHJv
dmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSkpOworICAg
IGF1dG8gaW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShp
bWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6
ZS53aWR0aCgpLCBwaXhlbEJ1ZmZlci5mb3JtYXQoKS5jb2xvclNwYWNlLnBsYXRmb3JtQ29sb3JT
cGFjZSgpLCBiaXRtYXBJbmZvLCBkYXRhUHJvdmlkZXIuZ2V0KCksIDAsIGZhbHNlLCBrQ0dSZW5k
ZXJpbmdJbnRlbnREZWZhdWx0KSkpOwogCiAgICAgLy8gQ1NTIHN0eWxpbmcgbWF5IGNhdXNlIHRo
ZSBjYW52YXMncyBjb250ZW50IHRvIGJlIHJlc2l6ZWQgb24KICAgICAvLyB0aGUgcGFnZS4gR28g
YmFjayB0byB0aGUgQ2FudmFzIHRvIGZpZ3VyZSBvdXQgdGhlIGNvcnJlY3QKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wu
Y3BwCShyZXZpc2lvbiAyNzc5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JT1N1cmZhY2VQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAog
CiAjaWYgSEFWRShJT1NVUkZBQ0UpCiAKKyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2Uu
aCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2luY2x1ZGUgPENvcmVHcmFwaGlj
cy9Db3JlR3JhcGhpY3MuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTU5
LDcgKzYwLDcgQEAgSU9TdXJmYWNlUG9vbCYgSU9TdXJmYWNlUG9vbDo6c2hhcmVkUG9vbAogICAg
IHJldHVybiBwb29sOwogfQogCi1zdGF0aWMgYm9vbCBzdXJmYWNlTWF0Y2hlc1BhcmFtZXRlcnMo
SU9TdXJmYWNlJiBzdXJmYWNlLCBJbnRTaXplIHJlcXVlc3RlZFNpemUsIENHQ29sb3JTcGFjZVJl
ZiBjb2xvclNwYWNlLCBJT1N1cmZhY2U6OkZvcm1hdCBmb3JtYXQpCitzdGF0aWMgYm9vbCBzdXJm
YWNlTWF0Y2hlc1BhcmFtZXRlcnMoSU9TdXJmYWNlJiBzdXJmYWNlLCBJbnRTaXplIHJlcXVlc3Rl
ZFNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgSU9TdXJmYWNl
OjpGb3JtYXQgZm9ybWF0KQogewogICAgIGlmIChmb3JtYXQgIT0gc3VyZmFjZS5mb3JtYXQoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTAyLDcgKzEwMyw3IEBAIHZvaWQgSU9TdXJmYWNl
UG9vbDo6ZGlkVXNlU3VyZmFjZU9mU2l6ZSgKICAgICBtX3NpemVzSW5QcnVuZU9yZGVyLmFwcGVu
ZChzaXplKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlUG9vbDo6
dGFrZVN1cmZhY2UoSW50U2l6ZSBzaXplLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwgSU9T
dXJmYWNlOjpGb3JtYXQgZm9ybWF0KQorc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJm
YWNlUG9vbDo6dGFrZVN1cmZhY2UoSW50U2l6ZSBzaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmIGNvbG9yU3BhY2UsIElPU3VyZmFjZTo6Rm9ybWF0IGZvcm1hdCkKIHsKICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgQ2FjaGVkU3VyZmFjZU1hcDo6aXRlcmF0b3IgbWFw
SXRlciA9IG1fY2FjaGVkU3VyZmFjZXMuZmluZChzaXplKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmgJKHJldmlzaW9u
IDI3Nzk3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFj
ZVBvb2wuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksOCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIERlc3RpbmF0YXRpb25Db2xvclNwYWNlOworCiBjbGFzcyBJT1N1cmZh
Y2VQb29sIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJT1N1cmZhY2VQb29sKTsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQ3LDcgKzQ5LDcgQEAgY2xhc3MgSU9TdXJmYWNl
UG9vbCB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIElPU3VyZmFjZVBvb2wm
IHNoYXJlZFBvb2woKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IHRha2VTdXJm
YWNlKEludFNpemUsIENHQ29sb3JTcGFjZVJlZiwgSU9TdXJmYWNlOjpGb3JtYXQpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IHRha2VTdXJmYWNlKEludFNpemUsIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYsIElPU3VyZmFjZTo6Rm9ybWF0KTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFkZFN1cmZhY2Uoc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4pOwogCiAgICAgdm9p
ZCBkaXNjYXJkQWxsU3VyZmFjZXMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAJKHJl
dmlzaW9uIDI3Nzk3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDcgKzE3NCw3IEBA
IFJldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZUJ1ZmZlckNHQmFja2UKICAgICAgICAgLy8gRklY
TUU6IFNob3VsZCB0aGlzIGJlIHVzaW5nIHRoZSBzYW1lIGxvZ2ljIGFzIEltYWdlQnVmZmVyVXRp
bGl0aWVzQ0c/CiAKICAgICAgICAgLy8gSlBFR3MgZG9uJ3QgaGF2ZSBhbiBhbHBoYSBjaGFubmVs
LCBzbyB3ZSBoYXZlIHRvIG1hbnVhbGx5IGNvbXBvc2l0ZSBvbiB0b3Agb2YgYmxhY2suCi0gICAg
ICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlBy
ZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCIH07CisgICAgICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlw
bGljYXRpb246OlByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCkgfTsKICAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGdldFBpeGVs
QnVmZmVyKGZvcm1hdCwgbG9naWNhbFJlY3QoKSk7CiAgICAgICAgIGlmICghcGl4ZWxCdWZmZXIp
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE5Miw3ICsxOTIsNyBAQCBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXJDR0JhY2tlCiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgICAgICBhdXRvIGltYWdlU2l6ZSA9IHBpeGVsQnVmZmVyLT5zaXplKCk7Ci0g
ICAgICAgIHJldHVybiBhZG9wdENGKENHSW1hZ2VDcmVhdGUoaW1hZ2VTaXplLndpZHRoKCksIGlt
YWdlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIDQgKiBpbWFnZVNpemUud2lkdGgoKSwgY2FjaGVkQ0dD
b2xvclNwYWNlKHBpeGVsQnVmZmVyLT5mb3JtYXQoKS5jb2xvclNwYWNlKSwga0NHQml0bWFwQnl0
ZU9yZGVyRGVmYXVsdCB8IGtDR0ltYWdlQWxwaGFOb25lU2tpcExhc3QsIGRhdGFQcm92aWRlci5n
ZXQoKSwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0Q0YoQ0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhl
aWdodCgpLCA4LCAzMiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBwaXhlbEJ1ZmZlci0+Zm9ybWF0
KCkuY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3BhY2UoKSwga0NHQml0bWFwQnl0ZU9yZGVyRGVm
YXVsdCB8IGtDR0ltYWdlQWxwaGFOb25lU2tpcExhc3QsIGRhdGFQcm92aWRlci5nZXQoKSwgMCwg
ZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKTsKICAgICB9CiAKICAgICBpZiAocmVz
b2x1dGlvblNjYWxlKCkgPT0gMSB8fCBwcmVzZXJ2ZVJlc29sdXRpb24gPT0gUHJlc2VydmVSZXNv
bHV0aW9uOjpZZXMpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAJ
KHJldmlzaW9uIDI3Nzk3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyAr
NjIsNyBAQCBzaXplX3QgSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNhbGN1CiAgICAgcmV0
dXJuIEltYWdlQnVmZmVyQmFja2VuZDo6Y2FsY3VsYXRlTWVtb3J5Q29zdChiYWNrZW5kU2l6ZSwg
Y2FsY3VsYXRlQnl0ZXNQZXJSb3coYmFja2VuZFNpemUpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRy
PEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6
Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIENHQ29sb3JTcGFjZVJlZiBjZ0Nv
bG9yU3BhY2UsIGNvbnN0IEhvc3RXaW5kb3cqKQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0
IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEhvc3RXaW5kb3cqKQogewogICAgIEFTU0VS
VChwYXJhbWV0ZXJzLnBpeGVsRm9ybWF0ID09IFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAKQEAgLTgx
LDcgKzgxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZQogICAg
IHNpemVfdCBudW1CeXRlcyA9IGJhY2tlbmRTaXplLmhlaWdodCgpICogYnl0ZXNQZXJSb3c7CiAg
ICAgdmVyaWZ5SW1hZ2VCdWZmZXJJc0JpZ0Vub3VnaChkYXRhLCBudW1CeXRlcyk7CiAKLSAgICBh
dXRvIGNnQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKGRhdGEsIGJhY2tl
bmRTaXplLndpZHRoKCksIGJhY2tlbmRTaXplLmhlaWdodCgpLCA4LCBieXRlc1BlclJvdywgY2dD
b2xvclNwYWNlLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0IHwga0NHQml0bWFwQnl0
ZU9yZGVyMzJIb3N0KSk7CisgICAgYXV0byBjZ0NvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29u
dGV4dENyZWF0ZShkYXRhLCBiYWNrZW5kU2l6ZS53aWR0aCgpLCBiYWNrZW5kU2l6ZS5oZWlnaHQo
KSwgOCwgYnl0ZXNQZXJSb3csIHBhcmFtZXRlcnMuY29sb3JTcGFjZS5wbGF0Zm9ybUNvbG9yU3Bh
Y2UoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRl
cjMySG9zdCkpOwogICAgIGlmICghY2dDb250ZXh0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IApAQCAtOTYsMTUgKzk2LDE0IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2UKIAogc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBJbWFn
ZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBpZiAoYXV0byBjZ0Nv
bG9yU3BhY2UgPSBjb250ZXh0Lmhhc1BsYXRmb3JtQ29udGV4dCgpID8gY29udGV4dENvbG9yU3Bh
Y2UoY29udGV4dCkgOiBudWxscHRyKQotICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1h
cEJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBjZ0NvbG9yU3BhY2UuZ2V0KCksIG51bGxwdHIp
OworICAgIGlmIChhdXRvIGNnQ29sb3JTcGFjZSA9IGNvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0
KCkgPyBjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0KSA6IG51bGxwdHIpIHsKKyAgICAgICAgYXV0
byBvdmVycmlkZVBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzOworICAgICAgICBvdmVycmlkZVBhcmFt
ZXRlcnMuY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZSB7IGNnQ29sb3JTcGFjZSB9
OwogCi0gICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kOjpjcmVhdGUocGFyYW1l
dGVycywgbnVsbHB0cik7Ci19CisgICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFj
a2VuZDo6Y3JlYXRlKG92ZXJyaWRlUGFyYW1ldGVycywgbnVsbHB0cik7CisgICAgfQogCi1zdGQ6
OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IEltYWdlQnVmZmVyQ0dCaXRt
YXBCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgSG9z
dFdpbmRvdyogaG9zdFdpbmRvdykKLXsKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5j
b2xvclNwYWNlKSwgaG9zdFdpbmRvdyk7CisgICAgcmV0dXJuIEltYWdlQnVmZmVyQ0dCaXRtYXBC
YWNrZW5kOjpjcmVhdGUocGFyYW1ldGVycywgbnVsbHB0cik7CiB9CiAKIEltYWdlQnVmZmVyQ0dC
aXRtYXBCYWNrZW5kOjpJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZChjb25zdCBQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzLCB2b2lkKiBkYXRhLCBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+JiYg
ZGF0YVByb3ZpZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiYmIGNvbnRleHQp
CkBAIC0xNDYsNyArMTQ1LDcgQEAgUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlckNHQml0
bWFwQgogICAgICAgICBhdXRvIGJhY2tlbmRTaXplID0gdGhpcy0+YmFja2VuZFNpemUoKTsKICAg
ICAgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUoYWRvcHRDRihDR0ltYWdlQ3JlYXRlKAog
ICAgICAgICAgICAgYmFja2VuZFNpemUud2lkdGgoKSwgYmFja2VuZFNpemUuaGVpZ2h0KCksIDgs
IDMyLCBieXRlc1BlclJvdygpLAotICAgICAgICAgICAgY2FjaGVkQ0dDb2xvclNwYWNlKGNvbG9y
U3BhY2UoKSksIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRl
T3JkZXIzMkhvc3QsIG1fZGF0YVByb3ZpZGVyLmdldCgpLAorICAgICAgICAgICAgY29sb3JTcGFj
ZSgpLnBsYXRmb3JtQ29sb3JTcGFjZSgpLCBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0
IHwga0NHQml0bWFwQnl0ZU9yZGVyMzJIb3N0LCBtX2RhdGFQcm92aWRlci5nZXQoKSwKICAgICAg
ICAgICAgIDAsIHRydWUsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1bHQpKSk7CiAgICAgfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgJKHJldmlzaW9uIDI3Nzk3OSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBC
YWNrZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDggKzM5LDkgQEAgcHVibGljOgogICAgIHN0
YXRpYyBJbnRTaXplIGNhbGN1bGF0ZVNhZmVCYWNrZW5kU2l6ZShjb25zdCBQYXJhbWV0ZXJzJik7
CiAgICAgc3RhdGljIHNpemVfdCBjYWxjdWxhdGVNZW1vcnlDb3N0KGNvbnN0IFBhcmFtZXRlcnMm
KTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tl
bmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiwgQ0dDb2xvclNwYWNlUmVmLCBjb25zdCBIb3N0
V2luZG93Kik7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZD4gY3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmLCBjb25zdCBIb3N0V2luZG93Kik7CisK
KyAgICAvLyBGSVhNRTogUmVuYW1lIHRvIGNyZWF0ZVVzaW5nQ29sb3JTcGFjZU9mR3JhcGhpY3ND
b250ZXh0KCkgKG9yIHNvbWV0aGluZyBsaWtlIHRoYXQpLgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ+IGNyZWF0ZShjb25zdCBQYXJhbWV0ZXJz
JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQoKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kLmNwcAkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODEsMTMgKzgxLDEzIEBAIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IEltYWdlQnVmZmVy
SU8KICAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNvbnRleHRDb2xvclNwYWNlKGNv
bnRleHQpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
PiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzLCBDR0NvbG9yU3BhY2VSZWYgY2dDb2xvclNwYWNlLCBjb25zdCBIb3N0V2luZG93
KiBob3N0V2luZG93KQorc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYg
cGFyYW1ldGVycywgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKIHsKICAgICBJbnRTaXpl
IGJhY2tlbmRTaXplID0gY2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKHBhcmFtZXRlcnMpOwogICAg
IGlmIChiYWNrZW5kU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGUoYmFja2VuZFNpemUsIGJhY2tlbmRT
aXplLCBjZ0NvbG9yU3BhY2UsIElPU3VyZmFjZTo6Zm9ybWF0Rm9yUGl4ZWxGb3JtYXQocGFyYW1l
dGVycy5waXhlbEZvcm1hdCkpOworICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRl
KGJhY2tlbmRTaXplLCBiYWNrZW5kU2l6ZSwgcGFyYW1ldGVycy5jb2xvclNwYWNlLCBJT1N1cmZh
Y2U6OmZvcm1hdEZvclBpeGVsRm9ybWF0KHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQpKTsKICAgICBp
ZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xMDIsMTUgKzEwMiwx
NCBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrCiAKIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ+IEltYWdlQnVmZmVySU9TdXJmYWNl
QmFja2VuZDo6Y3JlYXRlKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBpZiAoYXV0byBjZ0NvbG9yU3BhY2UgPSBjb250
ZXh0Lmhhc1BsYXRmb3JtQ29udGV4dCgpID8gY29udGV4dENvbG9yU3BhY2UoY29udGV4dCkgOiBu
dWxscHRyKQotICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVh
dGUocGFyYW1ldGVycywgY2dDb2xvclNwYWNlLmdldCgpLCBudWxscHRyKTsKKyAgICBpZiAoYXV0
byBjZ0NvbG9yU3BhY2UgPSBjb250ZXh0Lmhhc1BsYXRmb3JtQ29udGV4dCgpID8gY29udGV4dENv
bG9yU3BhY2UoY29udGV4dCkgOiBudWxscHRyKSB7CisgICAgICAgIGF1dG8gb3ZlcnJpZGVQYXJh
bWV0ZXJzID0gcGFyYW1ldGVyczsKKyAgICAgICAgb3ZlcnJpZGVQYXJhbWV0ZXJzLmNvbG9yU3Bh
Y2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgeyBjZ0NvbG9yU3BhY2UgfTsKIAotICAgIHJldHVy
biBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShwYXJhbWV0ZXJzLCBudWxscHRy
KTsKLX0KKyAgICAgICAgcmV0dXJuIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3JlYXRl
KG92ZXJyaWRlUGFyYW1ldGVycywgbnVsbHB0cik7CisgICAgfQogCi1zdGQ6OnVuaXF1ZV9wdHI8
SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6
OmNyZWF0ZShjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBIb3N0V2luZG93KiBo
b3N0V2luZG93KQotewotICAgIHJldHVybiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNy
ZWF0ZShwYXJhbWV0ZXJzLCBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNl
KSwgaG9zdFdpbmRvdyk7CisgICAgcmV0dXJuIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6
Y3JlYXRlKHBhcmFtZXRlcnMsIG51bGxwdHIpOwogfQogCiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJh
Y2tlbmQ6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZChjb25zdCBQYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzLCBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiYmIHN1cmZhY2UpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDggKzQyLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBz
aXplX3QgY2FsY3VsYXRlTWVtb3J5Q29zdChjb25zdCBQYXJhbWV0ZXJzJik7CiAgICAgc3RhdGlj
IHNpemVfdCBjYWxjdWxhdGVFeHRlcm5hbE1lbW9yeUNvc3QoY29uc3QgUGFyYW1ldGVycyYpOwog
ICAgIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIENHQ29sb3JTcGFjZVJlZiwgY29uc3QgSG9z
dFdpbmRvdyopOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVycyYsIGNvbnN0IEhvc3RXaW5kb3cqKTsK
KyAgICAvLyBGSVhNRTogUmVuYW1lIHRvIGNyZWF0ZVVzaW5nQ29sb3JTcGFjZU9mR3JhcGhpY3ND
b250ZXh0KCkgKG9yIHNvbWV0aGluZyBsaWtlIHRoYXQpLgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgUGFyYW1ldGVy
cyYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAgSW1hZ2VCdWZmZXJJT1N1cmZhY2VC
YWNrZW5kKGNvbnN0IFBhcmFtZXRlcnMmLCBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiYmKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyVXRp
bGl0aWVzQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuY3BwCShyZXZpc2lvbiAyNzc5NzkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlclV0aWxpdGllc0NH
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHN0YXRpYyBib29sIGVuY29k
ZShjb25zdCBQaXhlbEJ1ZmZlciYgc28KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBh
dXRvIGltYWdlU2l6ZSA9IHNvdXJjZS5zaXplKCk7Ci0gICAgYXV0byBpbWFnZSA9IGFkb3B0Q0Yo
Q0dJbWFnZUNyZWF0ZShpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpLCA4LCAz
MiwgNCAqIGltYWdlU2l6ZS53aWR0aCgpLCBjYWNoZWRDR0NvbG9yU3BhY2Uoc291cmNlLmZvcm1h
dCgpLmNvbG9yU3BhY2UpLCBrQ0dCaXRtYXBCeXRlT3JkZXJEZWZhdWx0IHwgZGF0YUFscGhhSW5m
bywgZGF0YVByb3ZpZGVyLmdldCgpLCAwLCBmYWxzZSwga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVs
dCkpOworICAgIGF1dG8gaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGUoaW1hZ2VTaXplLndp
ZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSwgOCwgMzIsIDQgKiBpbWFnZVNpemUud2lkdGgoKSwg
c291cmNlLmZvcm1hdCgpLmNvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCksIGtDR0JpdG1h
cEJ5dGVPcmRlckRlZmF1bHQgfCBkYXRhQWxwaGFJbmZvLCBkYXRhUHJvdmlkZXIuZ2V0KCksIDAs
IGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CiAKICAgICByZXR1cm4gZW5jb2Rl
KGltYWdlLmdldCgpLCBkZXN0aW5hdGlvblVUSS5nZXQoKSwgcXVhbGl0eSwgZnVuY3Rpb24pOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0xDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCShyZXZp
c2lvbiAyNzc5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NzEsNyAr
NTcxLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZURpcwogYm9vbCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJhY2tp
bmcoKQogewogICAgIEFTU0VSVCghZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKS5pc0VtcHR5
KCkpOwotICAgIGF1dG8gYmFja2luZyA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlKGdldElu
dGVybmFsRnJhbWVidWZmZXJTaXplKCksIFdlYkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCkpOwor
ICAgIGF1dG8gYmFja2luZyA9IElPU3VyZmFjZTo6Y3JlYXRlKGdldEludGVybmFsRnJhbWVidWZm
ZXJTaXplKCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICBpZiAoIWJhY2tp
bmcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgJKHJldmlzaW9uIDI3Nzk3OSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw5ICsyNywxMCBAQAogCiAjaWYgSEFWRShJT1NVUkZBQ0UpCiAK
KyNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgi
CiAjaW5jbHVkZSA8b2JqYy9vYmpjLmg+CiAjaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9JT1N1cmZh
Y2VTUEkuaD4KLSNpbmNsdWRlICJJbnRTaXplLmgiCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpICYmICFQTEFURk9STShJT1NfRkFNSUxZX1NJTVVM
QVRPUikKICNkZWZpbmUgSEFWRV9JT1NVUkZBQ0VfUkdCMTAgMQpAQCAtNDYsMTAgKzQ3LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBIb3N0
V2luZG93OwotICAgIAotI2lmIFVTRShJT1NVUkZBQ0VfQ0FOVkFTX0JBQ0tJTkdfU1RPUkUpCiBj
bGFzcyBJbWFnZUJ1ZmZlcjsKLSNlbmRpZgogCiBlbnVtIGNsYXNzIFBpeGVsRm9ybWF0IDogdWlu
dDhfdDsKIGVudW0gY2xhc3MgVm9sYXRpbGl0eVN0YXRlIDogdWludDhfdDsKQEAgLTEwMSwxMCAr
OTksMTAgQEAgcHVibGljOgogICAgICAgICB1aW50MzJfdCBtX2ZsYWdzOwogICAgIH07CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRl
KEludFNpemUsIENHQ29sb3JTcGFjZVJlZiwgRm9ybWF0ID0gRm9ybWF0OjpCR1JBKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gY3JlYXRlKElu
dFNpemUsIEludFNpemUgY29udGV4dFNpemUsIENHQ29sb3JTcGFjZVJlZiwgRm9ybWF0ID0gRm9y
bWF0OjpCR1JBKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElP
U3VyZmFjZT4gY3JlYXRlRnJvbVNlbmRSaWdodChjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmJiwg
Q0dDb2xvclNwYWNlUmVmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPElPU3VyZmFjZT4gY3JlYXRlRnJvbVN1cmZhY2UoSU9TdXJmYWNlUmVmLCBDR0NvbG9yU3Bh
Y2VSZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJm
YWNlPiBjcmVhdGUoSW50U2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgRm9ybWF0
ID0gRm9ybWF0OjpCR1JBKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPElPU3VyZmFjZT4gY3JlYXRlKEludFNpemUsIEludFNpemUgY29udGV4dFNpemUsIGNvbnN0
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZvcm1hdCA9IEZvcm1hdDo6QkdSQSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZUZyb21T
ZW5kUmlnaHQoY29uc3QgV1RGOjpNYWNoU2VuZFJpZ2h0JiYsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8SU9T
dXJmYWNlPiBjcmVhdGVGcm9tU3VyZmFjZShJT1N1cmZhY2VSZWYsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
SU9TdXJmYWNlPiBjcmVhdGVGcm9tSW1hZ2UoQ0dJbWFnZVJlZik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGNyZWF0ZUZyb21QaXhlbEJ1ZmZl
cihDVlBpeGVsQnVmZmVyUmVmKTsKICAgICAKQEAgLTE0Niw3ICsxNDQsNyBAQCBwdWJsaWM6CiAg
ICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgc2l6ZV90IHRv
dGFsQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsQnl0ZXM7IH0KIAotICAgIENHQ29sb3JT
cGFjZVJlZiBjb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvclNwYWNlLmdldCgpOyB9
CisgICAgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb2xvclNwYWNlOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgRm9ybWF0IGZvcm1hdCgp
IGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIElPU3VyZmFjZUlEIHN1cmZhY2VJRCgpIGNvbnN0
OwogICAgIHNpemVfdCBieXRlc1BlclJvdygpIGNvbnN0OwpAQCAtMTY5LDE0ICsxNjcsMTQgQEAg
cHVibGljOgogICAgIHZvaWQgbWlncmF0ZUNvbG9yU3BhY2VUb1Byb3BlcnRpZXMoKTsKIAogcHJp
dmF0ZToKLSAgICBJT1N1cmZhY2UoSW50U2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xv
clNwYWNlUmVmLCBGb3JtYXQsIGJvb2wmIHN1Y2Nlc3MpOwotICAgIElPU3VyZmFjZShJT1N1cmZh
Y2VSZWYsIENHQ29sb3JTcGFjZVJlZik7CisgICAgSU9TdXJmYWNlKEludFNpemUsIEludFNpemUg
Y29udGV4dFNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZvcm1hdCwgYm9vbCYg
c3VjY2Vzcyk7CisgICAgSU9TdXJmYWNlKElPU3VyZmFjZVJlZiwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJik7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gc3Vy
ZmFjZUZyb21Qb29sKEludFNpemUsIEludFNpemUgY29udGV4dFNpemUsIENHQ29sb3JTcGFjZVJl
ZiwgRm9ybWF0KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gc3VyZmFj
ZUZyb21Qb29sKEludFNpemUsIEludFNpemUgY29udGV4dFNpemUsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYsIEZvcm1hdCk7CiAgICAgSW50U2l6ZSBjb250ZXh0U2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY29udGV4dFNpemU7IH0KICAgICB2b2lkIHNldENvbnRleHRTaXplKEludFNpemUp
OwogCi0gICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gbV9jb2xvclNwYWNlOworICAgIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSBtX2NvbG9yU3BhY2U7CiAgICAgSW50U2l6ZSBtX3NpemU7CiAg
ICAgSW50U2l6ZSBtX2NvbnRleHRTaXplOwogICAgIHNpemVfdCBtX3RvdGFsQnl0ZXM7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJm
YWNlLm1tCShyZXZpc2lvbiAyNzc5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9JT1N1cmZhY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiSU9TdXJmYWNlLmgiCiAKLSNpbXBvcnQgIkNv
cmVWaWRlb1NvZnRMaW5rLmgiCisjaW1wb3J0ICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKICNp
bXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRHTC5o
IgogI2ltcG9ydCAiSG9zdFdpbmRvdy5oIgpAQCAtNDEsOSArNDEsMTEgQEAKICNpbXBvcnQgPHd0
Zi9NYXRoRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKKyNpbXBv
cnQgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotaW5saW5l
IHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6c3VyZmFjZUZyb21Qb29sKElu
dFNpemUgc2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3Bh
Y2UsIEZvcm1hdCBwaXhlbEZvcm1hdCkKK2lubGluZSBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNl
PiBJT1N1cmZhY2U6OnN1cmZhY2VGcm9tUG9vbChJbnRTaXplIHNpemUsIEludFNpemUgY29udGV4
dFNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgRm9ybWF0IHBp
eGVsRm9ybWF0KQogewogICAgIGF1dG8gY2FjaGVkU3VyZmFjZSA9IElPU3VyZmFjZVBvb2w6OnNo
YXJlZFBvb2woKS50YWtlU3VyZmFjZShzaXplLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCk7CiAg
ICAgaWYgKCFjYWNoZWRTdXJmYWNlKQpAQCAtNTMsMTIgKzU1LDEyIEBAIGlubGluZSBzdGQ6OnVu
aXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmYKICAgICByZXR1cm4gY2FjaGVkU3VyZmFjZTsKIH0K
IAotc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGUoSW50U2l6ZSBz
aXplLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZSwgRm9ybWF0IHBpeGVsRm9ybWF0KQorc3Rk
Ojp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGUoSW50U2l6ZSBzaXplLCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIEZvcm1hdCBwaXhlbEZvcm1h
dCkKIHsKICAgICByZXR1cm4gSU9TdXJmYWNlOjpjcmVhdGUoc2l6ZSwgc2l6ZSwgY29sb3JTcGFj
ZSwgcGl4ZWxGb3JtYXQpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZh
Y2U6OmNyZWF0ZShJbnRTaXplIHNpemUsIEludFNpemUgY29udGV4dFNpemUsIENHQ29sb3JTcGFj
ZVJlZiBjb2xvclNwYWNlLCBGb3JtYXQgcGl4ZWxGb3JtYXQpCitzdGQ6OnVuaXF1ZV9wdHI8SU9T
dXJmYWNlPiBJT1N1cmZhY2U6OmNyZWF0ZShJbnRTaXplIHNpemUsIEludFNpemUgY29udGV4dFNp
emUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgRm9ybWF0IHBpeGVs
Rm9ybWF0KQogewogICAgIGlmIChhdXRvIGNhY2hlZFN1cmZhY2UgPSBzdXJmYWNlRnJvbVBvb2wo
c2l6ZSwgY29udGV4dFNpemUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KSkgewogICAgICAgICBM
T0dfV0lUSF9TVFJFQU0oSU9TdXJmYWNlLCBzdHJlYW0gPDwgIklPU3VyZmFjZTo6Y3JlYXRlIHRv
b2sgZnJvbSBwb29sOiAiIDw8ICpjYWNoZWRTdXJmYWNlKTsKQEAgLTc1LDEzICs3NywxMyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2U6OmNyCiAgICAgcmV0dXJuIHN1cmZh
Y2U7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6Y3JlYXRlRnJv
bVNlbmRSaWdodChjb25zdCBNYWNoU2VuZFJpZ2h0JiYgc2VuZFJpZ2h0LCBDR0NvbG9yU3BhY2VS
ZWYgY29sb3JTcGFjZSkKK3N0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6Y3Jl
YXRlRnJvbVNlbmRSaWdodChjb25zdCBNYWNoU2VuZFJpZ2h0JiYgc2VuZFJpZ2h0LCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpCiB7CiAgICAgYXV0byBzdXJmYWNlID0g
YWRvcHRDRihJT1N1cmZhY2VMb29rdXBGcm9tTWFjaFBvcnQoc2VuZFJpZ2h0LnNlbmRSaWdodCgp
KSk7CiAgICAgcmV0dXJuIElPU3VyZmFjZTo6Y3JlYXRlRnJvbVN1cmZhY2Uoc3VyZmFjZS5nZXQo
KSwgY29sb3JTcGFjZSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFj
ZTo6Y3JlYXRlRnJvbVN1cmZhY2UoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIENHQ29sb3JTcGFjZVJl
ZiBjb2xvclNwYWNlKQorc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVh
dGVGcm9tU3VyZmFjZShJT1N1cmZhY2VSZWYgc3VyZmFjZSwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiBjb2xvclNwYWNlKQogewogICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJm
YWNlPihuZXcgSU9TdXJmYWNlKHN1cmZhY2UsIGNvbG9yU3BhY2UpKTsKIH0KQEAgLTk0LDcgKzk2
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcgogICAgIHNpemVf
dCB3aWR0aCA9IENHSW1hZ2VHZXRXaWR0aChpbWFnZSk7CiAgICAgc2l6ZV90IGhlaWdodCA9IENH
SW1hZ2VHZXRIZWlnaHQoaW1hZ2UpOwogCi0gICAgYXV0byBzdXJmYWNlID0gSU9TdXJmYWNlOjpj
cmVhdGUoSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgQ0dJbWFnZUdldENvbG9yU3BhY2UoaW1hZ2Up
KTsKKyAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6OmNyZWF0ZShJbnRTaXplKHdpZHRoLCBo
ZWlnaHQpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgeyBDR0ltYWdlR2V0Q29sb3JTcGFjZShpbWFn
ZSkgfSk7CiAgICAgaWYgKCFzdXJmYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBh
dXRvIHN1cmZhY2VDb250ZXh0ID0gc3VyZmFjZS0+ZW5zdXJlUGxhdGZvcm1Db250ZXh0KCk7CkBA
IC0xMTYsNyArMTE4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpj
cgogICAgIGlmICghY29sb3JTcGFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBy
ZXR1cm4gY3JlYXRlRnJvbVN1cmZhY2Uoc3VyZmFjZSwgY29sb3JTcGFjZSk7CisgICAgcmV0dXJu
IGNyZWF0ZUZyb21TdXJmYWNlKHN1cmZhY2UsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSB7IGNvbG9y
U3BhY2UgfSk7CiB9CiAKIHZvaWQgSU9TdXJmYWNlOjptb3ZlVG9Qb29sKHN0ZDo6dW5pcXVlX3B0
cjxJT1N1cmZhY2U+JiYgc3VyZmFjZSkKQEAgLTE5Niw3ICsxOTgsNyBAQCBzdGF0aWMgTlNEaWN0
aW9uYXJ5ICpvcHRpb25zRm9yMzJCaXRTdXJmCiAKIH0KIAotSU9TdXJmYWNlOjpJT1N1cmZhY2Uo
SW50U2l6ZSBzaXplLCBJbnRTaXplIGNvbnRleHRTaXplLCBDR0NvbG9yU3BhY2VSZWYgY29sb3JT
cGFjZSwgRm9ybWF0IGZvcm1hdCwgYm9vbCYgc3VjY2VzcykKK0lPU3VyZmFjZTo6SU9TdXJmYWNl
KEludFNpemUgc2l6ZSwgSW50U2l6ZSBjb250ZXh0U2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiBjb2xvclNwYWNlLCBGb3JtYXQgZm9ybWF0LCBib29sJiBzdWNjZXNzKQogICAgIDog
bV9jb2xvclNwYWNlKGNvbG9yU3BhY2UpCiAgICAgLCBtX3NpemUoc2l6ZSkKICAgICAsIG1fY29u
dGV4dFNpemUoY29udGV4dFNpemUpCkBAIC0yMzIsNyArMjM0LDcgQEAgSU9TdXJmYWNlOjpJT1N1
cmZhY2UoSW50U2l6ZSBzaXplLCBJbnRTaQogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihMYXll
cnMsICJJT1N1cmZhY2UgY3JlYXRpb24gZmFpbGVkIGZvciBzaXplOiAoJWQgJWQpIGFuZCBmb3Jt
YXQ6ICglZCkiLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIGZvcm1hdCk7CiB9CiAKLUlP
U3VyZmFjZTo6SU9TdXJmYWNlKElPU3VyZmFjZVJlZiBzdXJmYWNlLCBDR0NvbG9yU3BhY2VSZWYg
Y29sb3JTcGFjZSkKK0lPU3VyZmFjZTo6SU9TdXJmYWNlKElPU3VyZmFjZVJlZiBzdXJmYWNlLCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpCiAgICAgOiBtX2NvbG9yU3Bh
Y2UoY29sb3JTcGFjZSkKICAgICAsIG1fc3VyZmFjZShzdXJmYWNlKQogewpAQCAtMzQ3LDcgKzM0
OSw3IEBAIENHQ29udGV4dFJlZiBJT1N1cmZhY2U6OmVuc3VyZVBsYXRmb3JtQ28KICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgIAotICAgIG1fY2dDb250ZXh0ID0gYWRvcHRDRihDR0lPU3VyZmFj
ZUNvbnRleHRDcmVhdGUobV9zdXJmYWNlLmdldCgpLCBtX2NvbnRleHRTaXplLndpZHRoKCksIG1f
Y29udGV4dFNpemUuaGVpZ2h0KCksIGJpdHNQZXJDb21wb25lbnQsIGJpdHNQZXJQaXhlbCwgbV9j
b2xvclNwYWNlLmdldCgpLCBiaXRtYXBJbmZvKSk7CisgICAgbV9jZ0NvbnRleHQgPSBhZG9wdENG
KENHSU9TdXJmYWNlQ29udGV4dENyZWF0ZShtX3N1cmZhY2UuZ2V0KCksIG1fY29udGV4dFNpemUu
d2lkdGgoKSwgbV9jb250ZXh0U2l6ZS5oZWlnaHQoKSwgYml0c1BlckNvbXBvbmVudCwgYml0c1Bl
clBpeGVsLCBtX2NvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCksIGJpdG1hcEluZm8pKTsK
IAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAoYXV0byBkaXNwbGF5TWFzayA9IHByaW1hcnlP
cGVuR0xEaXNwbGF5TWFzaygpKSB7CkBAIC01MTUsNyArNTE3LDcgQEAgdm9pZCBJT1N1cmZhY2U6
OnNldE93bmVyc2hpcElkZW50aXR5KHRhcwogCiB2b2lkIElPU3VyZmFjZTo6bWlncmF0ZUNvbG9y
U3BhY2VUb1Byb3BlcnRpZXMoKQogewotICAgIGF1dG8gY29sb3JTcGFjZVByb3BlcnRpZXMgPSBh
ZG9wdENGKENHQ29sb3JTcGFjZUNvcHlQcm9wZXJ0eUxpc3QobV9jb2xvclNwYWNlLmdldCgpKSk7
CisgICAgYXV0byBjb2xvclNwYWNlUHJvcGVydGllcyA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ29w
eVByb3BlcnR5TGlzdChtX2NvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCkpKTsKICAgICBJ
T1N1cmZhY2VTZXRWYWx1ZShtX3N1cmZhY2UuZ2V0KCksIGtJT1N1cmZhY2VDb2xvclNwYWNlLCBj
b2xvclNwYWNlUHJvcGVydGllcy5nZXQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1h
Z2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0JKHJldmlzaW9uIDI3Nzk3OSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RS
ZW5kZXJlckNvcmVJbWFnZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjg5LDcgKzI4OSw3IEBAIHZv
aWQgRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OnJlbmQKICAgICAgICAgcmV0dXJuOwog
ICAgIAogICAgIGF1dG8mIHN1cmZhY2UgPSBkb3duY2FzdDxBY2NlbGVyYXRlZEltYWdlQnVmZmVy
PigqbV9vdXRwdXRJbWFnZUJ1ZmZlcikuc3VyZmFjZSgpOwotICAgIFtzaGFyZWRDSUNvbnRleHQo
KS5nZXQoKSByZW5kZXI6IG1fb3V0cHV0SW1hZ2UuZ2V0KCkgdG9JT1N1cmZhY2U6IHN1cmZhY2Uu
c3VyZmFjZSgpIGJvdW5kczpkZXN0UmVjdChsYXN0RWZmZWN0KSBjb2xvclNwYWNlOmNhY2hlZENH
Q29sb3JTcGFjZShsYXN0RWZmZWN0LnJlc3VsdENvbG9yU3BhY2UoKSldOworICAgIFtzaGFyZWRD
SUNvbnRleHQoKS5nZXQoKSByZW5kZXI6IG1fb3V0cHV0SW1hZ2UuZ2V0KCkgdG9JT1N1cmZhY2U6
IHN1cmZhY2Uuc3VyZmFjZSgpIGJvdW5kczpkZXN0UmVjdChsYXN0RWZmZWN0KSBjb2xvclNwYWNl
Omxhc3RFZmZlY3QucmVzdWx0Q29sb3JTcGFjZSgpLnBsYXRmb3JtQ29sb3JTcGFjZSgpXTsKIH0K
ICAgICAKIEZsb2F0UmVjdCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6ZGVzdFJlY3Qo
Y29uc3QgRmlsdGVyRWZmZWN0JiBsYXN0RWZmZWN0KSBjb25zdApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oCShyZXZpc2lvbiAyNzc5NzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJbWFn
ZUJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIEltYWdlQnVm
ZmVyIDogcHVibGljIENvbmNyZXRlSW1hZ2UKICAgICB1c2luZyBCYXNlQ29uY3JldGVJbWFnZUJ1
ZmZlcjo6YmFzZVRyYW5zZm9ybTsKIAogcHVibGljOgotICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShj
b25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgRGVzdGluYXRpb25D
b2xvclNwYWNlIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25zdCBIb3N0
V2luZG93KiBob3N0V2luZG93KQorICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBGbG9hdFNp
emUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRv
dyogaG9zdFdpbmRvdykKICAgICB7CiAgICAgICAgIHJldHVybiBCYXNlQ29uY3JldGVJbWFnZUJ1
ZmZlcjo6dGVtcGxhdGUgY3JlYXRlPEltYWdlQnVmZmVyPihzaXplLCByZXNvbHV0aW9uU2NhbGUs
IGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBob3N0V2luZG93KTsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
QnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAkocmV2aXNpb24gMjc3OTc5
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbUJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MSw3ICsyODEsNyBAQCB2
b2lkIEl0ZW1IYW5kbGU6OmRlc3Ryb3koKQogICAgICAgICBnZXQ8RmlsbFJvdW5kZWRSZWN0Pigp
Ln5GaWxsUm91bmRlZFJlY3QoKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSXRlbVR5cGU6
OkdldFBpeGVsQnVmZmVyOgotICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5
X2Rlc3RydWN0aWJsZTxHZXRQaXhlbEJ1ZmZlcj46OnZhbHVlKTsKKyAgICAgICAgZ2V0PEdldFBp
eGVsQnVmZmVyPigpLn5HZXRQaXhlbEJ1ZmZlcigpOwogICAgICAgICByZXR1cm47CiAgICAgY2Fz
ZSBJdGVtVHlwZTo6UHV0UGl4ZWxCdWZmZXI6CiAgICAgICAgIGdldDxQdXRQaXhlbEJ1ZmZlcj4o
KS5+UHV0UGl4ZWxCdWZmZXIoKTsKQEAgLTMwNyw3ICszMDcsNyBAQCB2b2lkIEl0ZW1IYW5kbGU6
OmRlc3Ryb3koKQogICAgICAgICByZXR1cm47CiAjZW5kaWYKICAgICBjYXNlIEl0ZW1UeXBlOjpC
ZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3RyaXZpYWxseV9kZXN0cnVjdGlibGU8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+Ojp2YWx1
ZSk7CisgICAgICAgIGdldDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oKS5+QmVnaW5DbGlw
VG9EcmF3aW5nQ29tbWFuZHMoKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSXRlbVR5cGU6
OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190
cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI+Ojp2YWx1ZSk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtVHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCShyZXZpc2lvbiAy
Nzc5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtVHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MSw2ICsyODEsNyBA
QCBib29sIGlzSW5saW5lSXRlbShJdGVtVHlwZSB0eXBlKQogICAgICAqIGFuZCAoMykgYWxsIHRo
ZSAic3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSJzIGluc2lkZSB0aGUgaW5kaXZp
ZHVhbCBpdGVtIGNsYXNzZXMuICovCiAKICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEl0
ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKICAgICBjYXNlIEl0ZW1UeXBlOjpD
bGlwT3V0VG9QYXRoOgogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgpAQCAtMjk0LDYgKzI5NSw3IEBAIGJvb2wgaXNJbmxp
bmVJdGVtKEl0ZW1UeXBlIHR5cGUpCiAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3Jh
ZGllbnQ6CiAgICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU6CiAgICAg
Y2FzZSBJdGVtVHlwZTo6RmlsbFJvdW5kZWRSZWN0OgorICAgIGNhc2UgSXRlbVR5cGU6OkdldFBp
eGVsQnVmZmVyOgogICAgIGNhc2UgSXRlbVR5cGU6OlB1dFBpeGVsQnVmZmVyOgogICAgIGNhc2Ug
SXRlbVR5cGU6OlNldExpbmVEYXNoOgogICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgpAQCAt
MzEwLDcgKzMxMiw2IEBAIGJvb2wgaXNJbmxpbmVJdGVtKEl0ZW1UeXBlIHR5cGUpCiAgICAgY2Fz
ZSBJdGVtVHlwZTo6Q2xpcDoKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0OgogICAgIGNhc2Ug
SXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOgotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzOgogICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdD
b21tYW5kczoKICAgICBjYXNlIEl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKICAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgpAQCAtMzUxLDcgKzM1Miw2IEBAIGJv
b2wgaXNJbmxpbmVJdGVtKEl0ZW1UeXBlIHR5cGUpCiAgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tl
UmVjdDoKICAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VMaW5lOgogICAgIGNhc2UgSXRlbVR5cGU6
OlRyYW5zbGF0ZToKLSAgICBjYXNlIEl0ZW1UeXBlOjpHZXRQaXhlbEJ1ZmZlcjoKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCShyZXZpc2lvbiAyNzc5NzkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC04ODAsMjMgKzg4MCw1NCBAQCBPcHRpb25hbDxDbGlwUGF0aD4g
Q2xpcFBhdGg6OmRlY29kZShEZWNvCiBjbGFzcyBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1U
eXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczsKLSAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgaXNJbmxpbmVJdGVtID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxp
bmVJdGVtID0gZmFsc2U7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0g
PSBmYWxzZTsKIAogICAgIEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogICAgICAg
ICA6IG1fZGVzdGluYXRpb24oZGVzdGluYXRpb24pCi0gICAgICAgICwgbV9jb2xvclNwYWNlKGNv
bG9yU3BhY2UpCisgICAgICAgICwgbV9jb2xvclNwYWNlKFdURk1vdmUoY29sb3JTcGFjZSkpCiAg
ICAgewogICAgIH0KIAorICAgIC8vIEV4cGxpY2l0IGRlc3RydWN0b3IgYWRkZWQgdG8gZm9yY2Ug
bm9uLXRyaXZpYWwgZGVzdHJ1Y3RvciBvbiBhbGwgcGxhdGZvcm1zCisgICAgLy8gYXMgdGhlIGVu
Y29kaW5nIGxvZ2ljIGN1cnJlbnRseSBoYXJkY29kZXMgd2hpY2ggZGlzcGxheSBsaXN0IGl0ZW0g
dHlwZXMgbmVlZAorICAgIC8vIG91dCBvZiBsaW5lIHRyZWF0bWVudCByYXRoZXIgdGhhbiB1c2lu
ZyB0aGUgaXNJbmxpbmVJdGVtIGNvbnN0YW50LgorICAgIH5CZWdpbkNsaXBUb0RyYXdpbmdDb21t
YW5kcygpIHsgfQorCiAgICAgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fZGVzdGluYXRpb247IH0KLSAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JT
cGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JTcGFjZTsgfQorICAgIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JTcGFjZTsg
fQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxCZWdpbkNs
aXBUb0RyYXdpbmdDb21tYW5kcz4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKICAgICBG
bG9hdFJlY3QgbV9kZXN0aW5hdGlvbjsKICAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgbV9jb2xv
clNwYWNlOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgQmVnaW5DbGlwVG9E
cmF3aW5nQ29tbWFuZHM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVu
Y29kZXIgPDwgbV9kZXN0aW5hdGlvbjsKKyAgICBlbmNvZGVyIDw8IG1fY29sb3JTcGFjZTsKK30K
KwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPEJlZ2luQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzPiBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCit7CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBkZXN0aW5hdGlvbjsKKyAgICBkZWNvZGVy
ID4+IGRlc3RpbmF0aW9uOworICAgIGlmICghZGVzdGluYXRpb24pCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9y
U3BhY2U7CisgICAgZGVjb2RlciA+PiBjb2xvclNwYWNlOworICAgIGlmICghY29sb3JTcGFjZSkK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiB7eyAqZGVzdGluYXRp
b24sIFdURk1vdmUoKmNvbG9yU3BhY2UpIH19OworfQorCiBjbGFzcyBFbmRDbGlwVG9EcmF3aW5n
Q29tbWFuZHMgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5
cGUgPSBJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOwpAQCAtMTkzOCwyMyArMTk2
OSw1NCBAQCBwcml2YXRlOgogY2xhc3MgR2V0UGl4ZWxCdWZmZXIgewogcHVibGljOgogICAgIHN0
YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUgPSBJdGVtVHlwZTo6R2V0UGl4ZWxCdWZm
ZXI7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9IHRydWU7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9IGZhbHNlOwogICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBpc0RyYXdpbmdJdGVtID0gZmFsc2U7CiAKLSAgICBHZXRQaXhlbEJ1ZmZl
cihXZWJDb3JlOjpQaXhlbEJ1ZmZlckZvcm1hdCBvdXRwdXRGb3JtYXQsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIHNyY1JlY3QpCisgICAgR2V0UGl4ZWxCdWZmZXIoUGl4ZWxCdWZmZXJGb3JtYXQg
b3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0KQogICAgICAgICA6IG1fc3JjUmVj
dChzcmNSZWN0KQotICAgICAgICAsIG1fb3V0cHV0Rm9ybWF0KG91dHB1dEZvcm1hdCkKKyAgICAg
ICAgLCBtX291dHB1dEZvcm1hdChXVEZNb3ZlKG91dHB1dEZvcm1hdCkpCiAgICAgewogICAgIH0K
IAotICAgIFBpeGVsQnVmZmVyRm9ybWF0IG91dHB1dEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1f
b3V0cHV0Rm9ybWF0OyB9CisgICAgLy8gRXhwbGljaXQgZGVzdHJ1Y3RvciBhZGRlZCB0byBmb3Jj
ZSBub24tdHJpdmlhbCBkZXN0cnVjdG9yIG9uIGFsbCBwbGF0Zm9ybXMKKyAgICAvLyBhcyB0aGUg
ZW5jb2RpbmcgbG9naWMgY3VycmVudGx5IGhhcmRjb2RlcyB3aGljaCBkaXNwbGF5IGxpc3QgaXRl
bSB0eXBlcyBuZWVkCisgICAgLy8gb3V0IG9mIGxpbmUgdHJlYXRtZW50IHJhdGhlciB0aGFuIHVz
aW5nIHRoZSBpc0lubGluZUl0ZW0gY29uc3RhbnQuCisgICAgfkdldFBpeGVsQnVmZmVyKCkgeyB9
CisKKyAgICBjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0KCkgY29uc3QgeyBy
ZXR1cm4gbV9vdXRwdXRGb3JtYXQ7IH0KICAgICBJbnRSZWN0IHNyY1JlY3QoKSBjb25zdCB7IHJl
dHVybiBtX3NyY1JlY3Q7IH0KIAorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
T3B0aW9uYWw8R2V0UGl4ZWxCdWZmZXI+IGRlY29kZShEZWNvZGVyJik7CisKIHByaXZhdGU6CiAg
ICAgSW50UmVjdCBtX3NyY1JlY3Q7CiAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgbV9vdXRwdXRGb3Jt
YXQ7CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBHZXRQaXhlbEJ1ZmZlcjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBtX3NyY1Jl
Y3Q7CisgICAgZW5jb2RlciA8PCBtX291dHB1dEZvcm1hdDsKK30KKwordGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4KK09wdGlvbmFsPEdldFBpeGVsQnVmZmVyPiBHZXRQaXhlbEJ1ZmZlcjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8SW50UmVjdD4gc3JjUmVjdDsKKyAg
ICBkZWNvZGVyID4+IHNyY1JlY3Q7CisgICAgaWYgKCFzcmNSZWN0KQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXJGb3JtYXQ+IG91dHB1dEZv
cm1hdDsKKyAgICBkZWNvZGVyID4+IG91dHB1dEZvcm1hdDsKKyAgICBpZiAoIW91dHB1dEZvcm1h
dCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiB7eyBXVEZNb3Zl
KCpvdXRwdXRGb3JtYXQpLCAqc3JjUmVjdCB9fTsKK30KKwogY2xhc3MgUHV0UGl4ZWxCdWZmZXIg
ewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUgPSBJdGVt
VHlwZTo6UHV0UGl4ZWxCdWZmZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwCShyZXZpc2lvbiAyNzc5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1Miw3ICs0NTIsNyBAQCB2b2lkIFJlY29yZGVyOjpjbGlwVG9JbWFnZUJ1ZmZl
cihJbWFnZUJ1CiAgICAgYXBwZW5kPENsaXBUb0ltYWdlQnVmZmVyPihpbWFnZUJ1ZmZlci5yZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgZGVzdFJlY3QpOwogfQogCi12b2lkIFJlY29yZGVy
OjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVz
dGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250
ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKQordm9pZCBSZWNvcmRlcjo6Y2xpcFRvRHJhd2luZ0Nv
bW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgY29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBk
cmF3aW5nRnVuY3Rpb24pCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0IG5lc3RlZENvbnRleHQoWyZd
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICBhdXRvIGluaXRpYWxDbGlwID0g
RmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgZGVzdGluYXRpb24uc2l6ZSgpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAkocmV2aXNpb24gMjc3OTc5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpIG92ZXJyaWRlOwogICAgIEludFJl
Y3QgY2xpcEJvdW5kcygpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICB2b2lk
IGNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYpIG92
ZXJyaWRlOworICAgIHZvaWQgY2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZ1bmN0aW9uPHZvaWQo
R3JhcGhpY3NDb250ZXh0Jik+JiYpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShWSURFTykKICAgICB2
b2lkIHBhaW50RnJhbWVGb3JNZWRpYShNZWRpYVBsYXllciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24pIG92ZXJyaWRlOwogICAgIGJvb2wgY2FuUGFpbnRGcmFtZUZvck1lZGlhKGNvbnN0
IE1lZGlhUGxheWVyJikgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50
TWFwLmNwcAkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5
LDcgKzY5LDcgQEAgYm9vbCBGRURpc3BsYWNlbWVudE1hcDo6c2V0U2NhbGUoZmxvYXQgcwogICAg
IHJldHVybiB0cnVlOwogfQogCi12b2lkIEZFRGlzcGxhY2VtZW50TWFwOjpzZXRSZXN1bHRDb2xv
clNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSkKK3ZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OnNl
dFJlc3VsdENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJikKIHsKICAgICAv
LyBTcGVjOiBUaGUgJ2NvbG9yLWludGVycG9sYXRpb24tZmlsdGVycycgcHJvcGVydHkgb25seSBh
cHBsaWVzIHRvIHRoZSAnaW4yJyBzb3VyY2UgaW1hZ2UKICAgICAvLyBhbmQgZG9lcyBub3QgYXBw
bHkgdG8gdGhlICdpbicgc291cmNlIGltYWdlLiBUaGUgJ2luJyBzb3VyY2UgaW1hZ2UgbXVzdCBy
ZW1haW4gaW4gaXRzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5oCShyZXZpc2lvbiAyNzc5
NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxh
Y2VtZW50TWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAg
IGZsb2F0IHNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9zY2FsZTsgfQogICAgIGJvb2wgc2V0U2Nh
bGUoZmxvYXQpOwogCi0gICAgdm9pZCBzZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29s
b3JTcGFjZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRSZXN1bHRDb2xvclNwYWNlKGNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgdHJhbnNmb3JtUmVzdWx0
Q29sb3JTcGFjZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBpbnQpIG92ZXJyaWRlOwogCiBwcml2YXRl
OgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29k
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUZsb29kLmgJKHJldmlzaW9uIDI3Nzk3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0MCw4
IEBAIHB1YmxpYzoKICNpZiAhVVNFKENHKQogICAgIC8vIGZlRmxvb2QgZG9lcyBub3QgcGVyZm9y
bSBjb2xvciBpbnRlcnBvbGF0aW9uIG9mIGFueSBraW5kLCBzbyB0aGUgcmVzdWx0IGlzIGFsd2F5
cyBpbiB0aGUgY3VycmVudAogICAgIC8vIGNvbG9yIHNwYWNlIHJlZ2FyZGxlc3Mgb2YgdGhlIHZh
bHVlIG9mIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycy4KLSAgICB2b2lkIHNldE9wZXJhdGlu
Z0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlKSBvdmVycmlkZSB7IEZpbHRlckVmZmVj
dDo6c2V0UmVzdWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOyB9Ci0g
ICAgdm9pZCBzZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSkgb3ZlcnJp
ZGUgeyBGaWx0ZXJFZmZlY3Q6OnNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKTsgfQorICAgIHZvaWQgc2V0T3BlcmF0aW5nQ29sb3JTcGFjZShjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmKSBvdmVycmlkZSB7IEZpbHRlckVmZmVjdDo6c2V0UmVzdWx0Q29s
b3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7IH0KKyAgICB2b2lkIHNldFJl
c3VsdENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJikgb3ZlcnJpZGUgeyBG
aWx0ZXJFZmZlY3Q6OnNldFJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCkpOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAJKHJldmlzaW9uIDI3Nzk3
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCB2b2lkIEZFVGlsZTo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKCkKICAgICAgICAgdGlsZVJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclJlc29s
dXRpb24oKS53aWR0aCgpLCBmaWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpLmhlaWdodCgpKTsKICAg
ICB9CiAKLSAgICBhdXRvIHRpbGVJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUlt
YWdlQnVmZmVyKHRpbGVSZWN0LCB0aWxlUmVjdCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
LCBmaWx0ZXIoKS5yZW5kZXJpbmdNb2RlKCkpOworICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVu
ZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIodGlsZVJlY3QsIHRpbGVSZWN0LCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgZmlsdGVyKCkucmVuZGVyaW5nTW9kZSgpKTsKICAg
ICBpZiAoIXRpbGVJbWFnZSkKICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3Qu
Y3BwCShyZXZpc2lvbiAyNzc5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzOSw3ICs0Mzks
NyBAQCBzdGF0aWMgdm9pZCBjb3B5VW5wcmVtdWx0aXBseWluZ0FscGhhKGNvCiAjZW5kaWYKIH0K
IAotT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVsQnVmZmVy
VG9Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZSB0YXJnZXRDb2xvclNwYWNlLCBQaXhl
bEJ1ZmZlciYgcGl4ZWxCdWZmZXIpCitPcHRpb25hbDxQaXhlbEJ1ZmZlcj4gRmlsdGVyRWZmZWN0
Ojpjb252ZXJ0UGl4ZWxCdWZmZXJUb0NvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiB0YXJnZXRDb2xvclNwYWNlLCBQaXhlbEJ1ZmZlciYgcGl4ZWxCdWZmZXIpCiB7CiAgICAg
Ly8gRklYTUU6IFVzaW5nIGFuIEltYWdlQnVmZmVyIHRvIHBlcmZvcm0gdGhlIGNvbG9yIHNwYWNl
IGNvbnZlcnNpb24gaXMgdW5uZWNlc3NhcnkuIFdlIGNhbiBkbyBpdCBkaXJlY3RseS4KIApAQCAt
NDU0LDcgKzQ1NCw3IEBAIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBGaWx0ZXJFZmZlY3Q6OmNvbnYK
ICAgICByZXR1cm4gY29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKHRhcmdldENvbG9yU3Bh
Y2UsICpidWZmZXIsIGRlc3RpbmF0aW9uUmVjdCwgcGl4ZWxCdWZmZXIuZm9ybWF0KCkuYWxwaGFG
b3JtYXQpOwogfQogCi1PcHRpb25hbDxQaXhlbEJ1ZmZlcj4gRmlsdGVyRWZmZWN0Ojpjb252ZXJ0
SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIHRhcmdldENvbG9y
U3BhY2UsIEltYWdlQnVmZmVyJiBpbnB1dEJ1ZmZlciwgY29uc3QgSW50UmVjdCYgcmVjdCwgQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRBbHBoYUZvcm1hdCkKK09wdGlvbmFsPFBpeGVsQnVm
ZmVyPiBGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZShjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmIHRhcmdldENvbG9yU3BhY2UsIEltYWdlQnVmZmVyJiBpbnB1
dEJ1ZmZlciwgY29uc3QgSW50UmVjdCYgcmVjdCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRw
dXRBbHBoYUZvcm1hdCkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBjYW4gYmUgZG9uZSBtb3JlIGRp
cmVjdGx5IHVzaW5nIFBpeGVsQnVmZmVyQ29udmVyc2lvbi4KIApAQCAtNDcyLDcgKzQ3Miw3IEBA
IE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBGaWx0ZXJFZmZlY3Q6OmNvbnYKICAgICByZXR1cm4gY29u
dmVydGVkQnVmZmVyLT5nZXRQaXhlbEJ1ZmZlcihmb3JtYXQsIHJlY3QpOwogfQogCi12b2lkIEZp
bHRlckVmZmVjdDo6Y29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0aW5hdGlvbihVaW50OENs
YW1wZWRBcnJheSYgZGVzdGluYXRpb24sIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNl
LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgZGVz
dFJlY3QpCit2b2lkIEZpbHRlckVmZmVjdDo6Y29weUNvbnZlcnRlZEltYWdlQnVmZmVyVG9EZXN0
aW5hdGlvbihVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYgY29sb3JTcGFjZSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3Jt
YXQsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewogICAgIC8vIENvbnZlcnRzIHRoZSBkYXRh
IHN0b3JlZCBpbiBtX2ltYWdlQnVmZmVyUmVzdWx0LCBhbmQgc2F2ZSB0byBkZXN0aW5hdGlvbgog
ICAgIGF1dG8gY29udmVydGVkUGl4ZWxCdWZmZXIgPSBjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9y
U3BhY2UoY29sb3JTcGFjZSwgKm1faW1hZ2VCdWZmZXJSZXN1bHQsIHsgSW50UG9pbnQoKSwgbV9h
YnNvbHV0ZVBhaW50UmVjdC5zaXplKCkgfSwgb3V0cHV0Rm9ybWF0KTsKQEAgLTQ4MSw3ICs0ODEs
NyBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weUNvbnZlcnRlZEltYWdlQnVmCiAgICAgY29weUlt
YWdlQnl0ZXMoY29udmVydGVkUGl4ZWxCdWZmZXItPmRhdGEoKSwgZGVzdGluYXRpb24sIGRlc3RS
ZWN0KTsKIH0KIAotdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlDb252ZXJ0ZWRQaXhlbEJ1ZmZlclRv
RGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBQaXhlbEJ1ZmZlciYg
cGl4ZWxCdWZmZXIsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCkKK3ZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5Q29udmVydGVkUGl4ZWxCdWZm
ZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgUGl4ZWxCdWZm
ZXImIHBpeGVsQnVmZmVyLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2Us
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewogICAgIC8vIENvbnZlcnRzIHRoZSBkYXRhIHN0
b3JlZCBpbiBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0L21fcHJlbXVsdGlwbGllZEltYWdlUmVz
dWx0LAogICAgIC8vIHdoaWNoZXZlciBpc24ndCBudWxsLCBhbmQgc2F2ZSB0byBkZXN0aW5hdGlv
bgpAQCAtNjM2LDcgKzYzNiw3IEBAIGJvb2wgRmlsdGVyRWZmZWN0OjpyZXF1aXJlc1BpeGVsQnVm
ZmVyQ28KICNlbmRpZgogfQogCi12b2lkIEZpbHRlckVmZmVjdDo6dHJhbnNmb3JtUmVzdWx0Q29s
b3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2UgZGVzdGluYXRpb25Db2xvclNwYWNlKQordm9p
ZCBGaWx0ZXJFZmZlY3Q6OnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiBkZXN0aW5hdGlvbkNvbG9yU3BhY2UpCiB7CiAjaWYgVVNFKENHKQogICAg
IC8vIENHIGhhbmRsZXMgY29sb3Igc3BhY2UgYWRqdXN0bWVudHMgaW50ZXJuYWxseS4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJFZmZlY3QuaAkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjMs
NyArMjMsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBbHBoYVByZW11bHRpcGxpY2F0
aW9uLmgiCi0jaW5jbHVkZSAiQ29sb3JTcGFjZS5oIgorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29s
b3JTcGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIK
ICNpbmNsdWRlICJJbnRSZWN0RXh0ZW50LmgiCkBAIC0xNjUsMTMgKzE2NSwxMyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBjbGlwc1RvQm91bmRzKCkgY29uc3QgeyByZXR1cm4gbV9jbGlwc1RvQm91bmRz
OyB9CiAgICAgdm9pZCBzZXRDbGlwc1RvQm91bmRzKGJvb2wgdmFsdWUpIHsgbV9jbGlwc1RvQm91
bmRzID0gdmFsdWU7IH0KIAotICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBvcGVyYXRpbmdDb2xv
clNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYXRpbmdDb2xvclNwYWNlOyB9Ci0gICAgdmly
dHVhbCB2b2lkIHNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlIGNv
bG9yU3BhY2UpIHsgbV9vcGVyYXRpbmdDb2xvclNwYWNlID0gY29sb3JTcGFjZTsgfQotICAgIERl
c3RpbmF0aW9uQ29sb3JTcGFjZSByZXN1bHRDb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXN1bHRDb2xvclNwYWNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFJlc3VsdENvbG9yU3BhY2Uo
RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UpIHsgbV9yZXN1bHRDb2xvclNwYWNlID0g
Y29sb3JTcGFjZTsgfQorICAgIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgb3BlcmF0aW5n
Q29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW5nQ29sb3JTcGFjZTsgfQorICAg
IHZpcnR1YWwgdm9pZCBzZXRPcGVyYXRpbmdDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgY29sb3JTcGFjZSkgeyBtX29wZXJhdGluZ0NvbG9yU3BhY2UgPSBjb2xvclNwYWNl
OyB9CisgICAgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiByZXN1bHRDb2xvclNwYWNlKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXN1bHRDb2xvclNwYWNlOyB9CisgICAgdmlydHVhbCB2b2lkIHNl
dFJlc3VsdENvbG9yU3BhY2UoY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNl
KSB7IG1fcmVzdWx0Q29sb3JTcGFjZSA9IGNvbG9yU3BhY2U7IH0KIAogICAgIHZpcnR1YWwgdm9p
ZCB0cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKEZpbHRlckVmZmVjdCogaW4sIGNvbnN0IGludCkg
eyBpbi0+dHJhbnNmb3JtUmVzdWx0Q29sb3JTcGFjZShtX29wZXJhdGluZ0NvbG9yU3BhY2UpOyB9
Ci0gICAgdm9pZCB0cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSk7CisgICAgdm9pZCB0cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYpOwogICAgIAogICAgIHN0YXRpYyBWZWN0b3I8ZmxvYXQ+IG5vcm1hbGl6ZWRG
bG9hdHMoY29uc3QgVmVjdG9yPGZsb2F0PiYgdmFsdWVzKQogICAgIHsKQEAgLTIwMywxMSArMjAz
LDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgp
ID0gMDsKIAogICAgIHZvaWQgY29weUltYWdlQnl0ZXMoY29uc3QgVWludDhDbGFtcGVkQXJyYXkm
IHNvdXJjZSwgVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdCBJbnRSZWN0Jikg
Y29uc3Q7Ci0gICAgdm9pZCBjb3B5Q29udmVydGVkSW1hZ2VCdWZmZXJUb0Rlc3RpbmF0aW9uKFVp
bnQ4Q2xhbXBlZEFycmF5JiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdm9pZCBjb3B5Q29udmVydGVkUGl4ZWxCdWZm
ZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xhbXBlZEFycmF5JiwgUGl4ZWxCdWZmZXImLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmKTsKKyAgICB2b2lkIGNvcHlDb252ZXJ0ZWRJ
bWFnZUJ1ZmZlclRvRGVzdGluYXRpb24oVWludDhDbGFtcGVkQXJyYXkmLCBjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uLCBjb25zdCBJbnRSZWN0Jik7
CisgICAgdm9pZCBjb3B5Q29udmVydGVkUGl4ZWxCdWZmZXJUb0Rlc3RpbmF0aW9uKFVpbnQ4Q2xh
bXBlZEFycmF5JiwgUGl4ZWxCdWZmZXImLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBj
b25zdCBJbnRSZWN0Jik7CiAgICAgYm9vbCByZXF1aXJlc1BpeGVsQnVmZmVyQ29sb3JTcGFjZUNv
bnZlcnNpb24oT3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPik7Ci0gICAgT3B0aW9uYWw8
UGl4ZWxCdWZmZXI+IGNvbnZlcnRJbWFnZUJ1ZmZlclRvQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNv
bG9yU3BhY2UsIEltYWdlQnVmZmVyJiwgY29uc3QgSW50UmVjdCYsIEFscGhhUHJlbXVsdGlwbGlj
YXRpb24pOwotICAgIE9wdGlvbmFsPFBpeGVsQnVmZmVyPiBjb252ZXJ0UGl4ZWxCdWZmZXJUb0Nv
bG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlLCBQaXhlbEJ1ZmZlciYpOworICAgIE9wdGlv
bmFsPFBpeGVsQnVmZmVyPiBjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UoY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiwgSW1hZ2VCdWZmZXImLCBjb25zdCBJbnRSZWN0JiwgQWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbik7CisgICAgT3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGNvbnZlcnRQaXhl
bEJ1ZmZlclRvQ29sb3JTcGFjZShjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEJ1
ZmZlciYpOwogICAgIAogCiAgICAgRmlsdGVyJiBtX2ZpbHRlcjsKQEAgLTI0NCwxMyArMjQ0LDEx
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NsaXBzVG9Cb3VuZHMgeyB0cnVlIH07CiAKICNpZiBF
TkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0IpCi0gICAgc3RhdGljIGNv
bnN0ZXhwciBhdXRvIGRlZmF1bHRPcGVyYXRpbmdDb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xv
clNwYWNlOjpMaW5lYXJTUkdCOworICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBtX29wZXJhdGlu
Z0NvbG9yU3BhY2UgeyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKSB9OwogI2Vs
c2UKLSAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZGVmYXVsdE9wZXJhdGluZ0NvbG9yU3BhY2Ug
PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I7CisgICAgRGVzdGluYXRpb25Db2xvclNwYWNl
IG1fb3BlcmF0aW5nQ29sb3JTcGFjZSB7IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07
CiAjZW5kaWYKLQotICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBtX29wZXJhdGluZ0NvbG9yU3Bh
Y2UgeyBkZWZhdWx0T3BlcmF0aW5nQ29sb3JTcGFjZSB9OwotICAgIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSBtX3Jlc3VsdENvbG9yU3BhY2UgeyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsK
KyAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgbV9yZXN1bHRDb2xvclNwYWNlIHsgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCkgfTsKICAgICAKICAgICBjb25zdCBUeXBlIG1fZmlsdGVyRWZm
ZWN0Q2xhc3NUeXBlOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oCShyZXZpc2lvbiAyNzc5Nzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBo
aWMuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBwcml2YXRlOgogICAgIFNvdXJj
ZUdyYXBoaWMoRmlsdGVyJiBmaWx0ZXIpCiAgICAgICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlciwg
VHlwZTo6U291cmNlR3JhcGhpYykKICAgICB7Ci0gICAgICAgIHNldE9wZXJhdGluZ0NvbG9yU3Bh
Y2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKKyAgICAgICAgc2V0T3BlcmF0aW5nQ29s
b3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgfQogCiAgICAgY29u
c3QgY2hhciogZmlsdGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJTb3VyY2VHcmFwaGlj
IjsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWly
by9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlci5jcHAJKHJldmlzaW9uIDI3Nzk3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDc2LDcgKzEwNzYsNyBAQCB2b2lkIENhaXJvT3Bl
cmF0aW9uUmVjb3JkZXI6OmFwcGVuZChzdGQ6CiAgICAgbV9jb21tYW5kTGlzdC5hcHBlbmQoV1RG
TW92ZShjb21tYW5kKSk7CiB9CiAKLXZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6Y2xpcFRv
RHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSwg
RnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikKK3ZvaWQgQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlcjo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYp
CiB7CiAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9u
UmVjb3JkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgJKHJldmlzaW9u
IDI3Nzk3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fp
cm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTcs
NyArOTcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgV2ViQ29yZTo6UGF0
aCYsIFdlYkNvcmU6OldpbmRSdWxlKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IGNs
aXBCb3VuZHMoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKFdlYkNvcmU6
OkltYWdlQnVmZmVyJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0
aW5hdGlvbiwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsaXBUb0Ry
YXdpbmdDb21tYW5kcyhjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBGdW5jdGlvbjx2b2lkKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dCYpPiYmKSBvdmVycmlkZTsKICNpZiBFTkFCTEUoVklERU8pCiAgICAg
dm9pZCBwYWludEZyYW1lRm9yTWVkaWEoV2ViQ29yZTo6TWVkaWFQbGF5ZXImLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKSBvdmVycmlkZTsKICAgICBib29sIGNhblBhaW50
RnJhbWVGb3JNZWRpYShjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXllciYpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTExheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTExh
eWVyLmNwcAkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDR0xMYXllci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBHQ0dMTGF5ZXI6OnN3YXBCdWZmZXJzSWZOZWVkZWQoKQog
ICAgIEludFNpemUgdGV4dHVyZVNpemUobV9jb250ZXh0Lm1fY3VycmVudFdpZHRoLCBtX2NvbnRl
eHQubV9jdXJyZW50SGVpZ2h0KTsKICAgICBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzID0g
bV9jb250ZXh0LmNvbnRleHRBdHRyaWJ1dGVzKCkuYWxwaGEgPyBUZXh0dXJlTWFwcGVyR0w6OlNo
b3VsZEJsZW5kIDogMDsKICNpZiBVU0UoQU5HTEUpCi0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdl
QnVmZmVyPiBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUodGV4dHVyZVNpemUsIFJl
bmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QiwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+
IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0ZXh0dXJlU2l6ZSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBp
eGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJu
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAko
cmV2aXNpb24gMjc3OTc5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYz
LDcgKzYzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4g
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKQogewot
ICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVu
cHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IgfTsKKyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCkgfTsKICAgICBhdXRvIHBpeGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6
OnRyeUNyZWF0ZShmb3JtYXQsIGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkpOwogICAgIGlm
ICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xFUy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCShyZXZpc2lvbiAyNzc5NzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xFUy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZG5QaXhlbAogCiBPcHRpb25hbDxQaXhlbEJ1ZmZlcj4g
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKQogewot
ICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVu
cHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IgfTsKKyAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCkgfTsKICAgICBhdXRvIHBpeGVsQnVmZmVyID0gUGl4ZWxCdWZmZXI6
OnRyeUNyZWF0ZShmb3JtYXQsIGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkpOwogICAgIGlm
ICghcGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1h
cFRleHR1cmUuY3BwCShyZXZpc2lvbiAyNzc5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDcgKzM4LDcgQEAgdm9pZCBCaXRtYXBUZXh0dXJlOjp1cGRhdGVDb250ZW50cyhHcmFwaAogewog
ICAgIC8vIE1ha2luZyBhbiB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZCBidWZmZXIgaGVy
ZSBpcyBPSyBiZWNhdXNlIHRoaXMgY29kZQogICAgIC8vIGlzbid0IHVzZWQgYnkgYW55IHBsYXRm
b3JtcyB0aGF0IHJlc3BlY3QgdGhlIGFjY2VsZXJhdGVkIGJpdC4KLSAgICBhdXRvIGltYWdlQnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZSh0YXJnZXRSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KHRhcmdldFJlY3Quc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAo
IWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9QbGF0Zm9ybVNjcmVlbkd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcAkocmV2aXNpb24gMjc3OTc5
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtU2NyZWVuR3RrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0y
MDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDYgTWljaGFlbCBFbW1lbCBtaWtlLmVtbWVsQGdtYWlsLmNvbQogICogQ29weXJpZ2h0IChDKSAy
MDA4IENocmlzdGlhbiBEeXdhbiA8Y2hyaXN0aWFuQGltZW5kaW8uY29tPgogICogQ29weXJpZ2h0
IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKIAorI2luY2x1ZGUgIkRlc3RpbmF0
aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZyYW1l
Vmlldy5oIgogI2luY2x1ZGUgIkd0a1V0aWxpdGllcy5oIgpAQCAtODUsNiArODYsMTEgQEAgYm9v
bCBzY3JlZW5Jc01vbm9jaHJvbWUoV2lkZ2V0KiB3aWRnZXQpCiAgICAgcmV0dXJuIHNjcmVlbkRl
cHRoKHdpZGdldCkgPCAyOwogfQogCitEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc2NyZWVuQ29sb3JT
cGFjZShXaWRnZXQqKQoreworICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KTsKK30KKwogYm9vbCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycygpCiB7CiAgICAgcmV0dXJuIGZh
bHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtU2NyZWVuSU9T
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVNj
cmVlbklPUy5tbQkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1BsYXRmb3JtU2NyZWVuSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAxNCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODgsOSArODgs
OSBAQCBib29sIHNjcmVlblN1cHBvcnRzSGlnaER5bmFtaWNSYW5nZShXaWRnCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1DR0NvbG9yU3BhY2VSZWYgc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqIHdp
ZGdldCkKK0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCogd2lk
Z2V0KQogewotICAgIHJldHVybiBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3Iod2lkZ2V0KSA/
IGV4dGVuZGVkU1JHQkNvbG9yU3BhY2VSZWYoKSA6IHNSR0JDb2xvclNwYWNlUmVmKCk7CisgICAg
cmV0dXJuIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcih3aWRnZXQpID8gRGVzdGluYXRpb25D
b2xvclNwYWNlIHsgZXh0ZW5kZWRTUkdCQ29sb3JTcGFjZVJlZigpIH0gOiBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKTsKIH0KIAogLy8gVGhlc2UgZnVuY3Rpb25zIHNjYWxlIGJldHdlZW4g
c2NyZWVuIGFuZCBwYWdlIGNvb3JkaW5hdGVzIGJlY2F1c2UgSmF2YVNjcmlwdC9ET00gb3BlcmF0
aW9ucwpAQCAtMTkzLDE2ICsxOTMsMTQgQEAgU2NyZWVuUHJvcGVydGllcyBjb2xsZWN0U2NyZWVu
UHJvcGVydGllcwogICAgICAgICBGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxlUmVjdCA9IHNjcmVl
bi5ib3VuZHM7CiAgICAgICAgIHNjcmVlbkF2YWlsYWJsZVJlY3Quc2V0WShOU01heFkoc2NyZWVu
LmJvdW5kcykgLSAoc2NyZWVuQXZhaWxhYmxlUmVjdC55KCkgKyBzY3JlZW5BdmFpbGFibGVSZWN0
LmhlaWdodCgpKSk7IC8vIGZsaXAKICAgICAgICAgRmxvYXRSZWN0IHNjcmVlblJlY3QgPSBzY3Jl
ZW4uX3JlZmVyZW5jZUJvdW5kczsKLSAgICAgICAgCi0gICAgICAgIFJldGFpblB0cjxDR0NvbG9y
U3BhY2VSZWY+IGNvbG9yU3BhY2UgPSBzY3JlZW5Db2xvclNwYWNlKG51bGxwdHIpOwotICAgICAg
ICAKKyAgICAgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UgeyBzY3JlZW5Db2xv
clNwYWNlKG51bGxwdHIpIH07CiAgICAgICAgIGludCBzY3JlZW5EZXB0aCA9IFdlYkNvcmU6OnNj
cmVlbkRlcHRoKG51bGxwdHIpOwogICAgICAgICBpbnQgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQg
PSBXZWJDb3JlOjpzY3JlZW5EZXB0aFBlckNvbXBvbmVudChudWxscHRyKTsKICAgICAgICAgYm9v
bCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IgPSBXZWJDb3JlOjpzY3JlZW5TdXBwb3J0c0V4
dGVuZGVkQ29sb3IobnVsbHB0cik7CiAgICAgICAgIGJvb2wgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xv
cnMgPSBXZWJDb3JlOjpzY3JlZW5IYXNJbnZlcnRlZENvbG9ycygpOwogICAgICAgICBmbG9hdCBz
Y2FsZUZhY3RvciA9IFdlYkNvcmU6OnNjcmVlblBQSUZhY3RvcigpOwogCi0gICAgICAgIHNjcmVl
blByb3BlcnRpZXMuc2NyZWVuRGF0YU1hcC5zZXQoKytkaXNwbGF5SUQsIFNjcmVlbkRhdGEgeyBz
Y3JlZW5BdmFpbGFibGVSZWN0LCBzY3JlZW5SZWN0LCBjb2xvclNwYWNlLCBzY3JlZW5EZXB0aCwg
c2NyZWVuRGVwdGhQZXJDb21wb25lbnQsIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvciwgc2Ny
ZWVuSGFzSW52ZXJ0ZWRDb2xvcnMsIGZhbHNlLCBzY2FsZUZhY3RvciB9KTsKKyAgICAgICAgc2Ny
ZWVuUHJvcGVydGllcy5zY3JlZW5EYXRhTWFwLnNldCgrK2Rpc3BsYXlJRCwgU2NyZWVuRGF0YSB7
IHNjcmVlbkF2YWlsYWJsZVJlY3QsIHNjcmVlblJlY3QsIFdURk1vdmUoY29sb3JTcGFjZSksIHNj
cmVlbkRlcHRoLCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCwgc2NyZWVuU3VwcG9ydHNFeHRlbmRl
ZENvbG9yLCBzY3JlZW5IYXNJbnZlcnRlZENvbG9ycywgZmFsc2UsIHNjYWxlRmFjdG9yIH0pOwog
ICAgICAgICAKICAgICAgICAgaWYgKHNjcmVlbiA9PSBbUEFMOjpnZXRVSVNjcmVlbkNsYXNzKCkg
bWFpblNjcmVlbl0pCiAgICAgICAgICAgICBzY3JlZW5Qcm9wZXJ0aWVzLnByaW1hcnlEaXNwbGF5
SUQgPSBkaXNwbGF5SUQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZv
cm1TY3JlZW5NYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1BsYXRmb3JtU2NyZWVuTWFjLm1tCShyZXZpc2lvbiAyNzc5NzkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1TY3JlZW5NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEz
MCw5ICsxMzAsNyBAQCBTY3JlZW5Qcm9wZXJ0aWVzIGNvbGxlY3RTY3JlZW5Qcm9wZXJ0aWVzCiAg
ICAgICAgIEZsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0ID0gc2NyZWVuLnZpc2libGVGcmFt
ZTsKICAgICAgICAgc2NyZWVuQXZhaWxhYmxlUmVjdC5zZXRZKE5TTWF4WShzY3JlZW4uZnJhbWUp
IC0gKHNjcmVlbkF2YWlsYWJsZVJlY3QueSgpICsgc2NyZWVuQXZhaWxhYmxlUmVjdC5oZWlnaHQo
KSkpOyAvLyBmbGlwCiAgICAgICAgIEZsb2F0UmVjdCBzY3JlZW5SZWN0ID0gc2NyZWVuLmZyYW1l
OwotCi0gICAgICAgIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2UgPSBzY3Jl
ZW4uY29sb3JTcGFjZS5DR0NvbG9yU3BhY2U7Ci0KKyAgICAgICAgRGVzdGluYXRpb25Db2xvclNw
YWNlIGNvbG9yU3BhY2UgeyBzY3JlZW4uY29sb3JTcGFjZS5DR0NvbG9yU3BhY2UgfTsKICAgICAg
ICAgaW50IHNjcmVlbkRlcHRoID0gTlNCaXRzUGVyUGl4ZWxGcm9tRGVwdGgoc2NyZWVuLmRlcHRo
KTsKICAgICAgICAgaW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50ID0gTlNCaXRzUGVyU2FtcGxl
RnJvbURlcHRoKHNjcmVlbi5kZXB0aCk7CiAgICAgICAgIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRl
bmRlZENvbG9yID0gW3NjcmVlbiBjYW5SZXByZXNlbnREaXNwbGF5R2FtdXQ6TlNEaXNwbGF5R2Ft
dXRQM107CkBAIC0xNjMsNyArMTYxLDcgQEAgU2NyZWVuUHJvcGVydGllcyBjb2xsZWN0U2NyZWVu
UHJvcGVydGllcwogICAgICAgICBpZiAoZGlzcGxheU1hc2spCiAgICAgICAgICAgICBncHVJRCA9
IGdwdUlERm9yRGlzcGxheU1hc2soZGlzcGxheU1hc2spOwogCi0gICAgICAgIHNjcmVlblByb3Bl
cnRpZXMuc2NyZWVuRGF0YU1hcC5zZXQoZGlzcGxheUlELCBTY3JlZW5EYXRhIHsgc2NyZWVuQXZh
aWxhYmxlUmVjdCwgc2NyZWVuUmVjdCwgY29sb3JTcGFjZSwgc2NyZWVuRGVwdGgsIHNjcmVlbkRl
cHRoUGVyQ29tcG9uZW50LCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IsIHNjcmVlbkhhc0lu
dmVydGVkQ29sb3JzLCBzY3JlZW5TdXBwb3J0c0hpZ2hEeW5hbWljUmFuZ2UsIHNjcmVlbklzTW9u
b2Nocm9tZSwgZGlzcGxheU1hc2ssIGdwdUlELCBkeW5hbWljUmFuZ2VNb2RlLCBzY2FsZUZhY3Rv
ciB9KTsKKyAgICAgICAgc2NyZWVuUHJvcGVydGllcy5zY3JlZW5EYXRhTWFwLnNldChkaXNwbGF5
SUQsIFNjcmVlbkRhdGEgeyBzY3JlZW5BdmFpbGFibGVSZWN0LCBzY3JlZW5SZWN0LCBXVEZNb3Zl
KGNvbG9yU3BhY2UpLCBzY3JlZW5EZXB0aCwgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQsIHNjcmVl
blN1cHBvcnRzRXh0ZW5kZWRDb2xvciwgc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMsIHNjcmVlblN1
cHBvcnRzSGlnaER5bmFtaWNSYW5nZSwgc2NyZWVuSXNNb25vY2hyb21lLCBkaXNwbGF5TWFzaywg
Z3B1SUQsIGR5bmFtaWNSYW5nZU1vZGUsIHNjYWxlRmFjdG9yIH0pOwogCiAgICAgICAgIGlmICgh
c2NyZWVuUHJvcGVydGllcy5wcmltYXJ5RGlzcGxheUlEKQogICAgICAgICAgICAgc2NyZWVuUHJv
cGVydGllcy5wcmltYXJ5RGlzcGxheUlEID0gZGlzcGxheUlEOwpAQCAtMzQwLDEzICszMzgsMTMg
QEAgTlNTY3JlZW4gKnNjcmVlbihQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbAogICAgIHJldHVybiBm
aXJzdFNjcmVlbigpOwogfQogCi1DR0NvbG9yU3BhY2VSZWYgc2NyZWVuQ29sb3JTcGFjZShXaWRn
ZXQqIHdpZGdldCkKK0Rlc3RpbmF0aW9uQ29sb3JTcGFjZSBzY3JlZW5Db2xvclNwYWNlKFdpZGdl
dCogd2lkZ2V0KQogewogICAgIGlmIChhdXRvIGRhdGEgPSBzY3JlZW5Qcm9wZXJ0aWVzKHdpZGdl
dCkpCi0gICAgICAgIHJldHVybiBkYXRhLT5jb2xvclNwYWNlLmdldCgpOworICAgICAgICByZXR1
cm4gZGF0YS0+Y29sb3JTcGFjZTsKIAogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFBy
b2Nlc3NQcml2aWxlZ2U6OkNhbkNvbW11bmljYXRlV2l0aFdpbmRvd1NlcnZlcikpOwotICAgIHJl
dHVybiBzY3JlZW4od2lkZ2V0KS5jb2xvclNwYWNlLkNHQ29sb3JTcGFjZTsKKyAgICByZXR1cm4g
RGVzdGluYXRpb25Db2xvclNwYWNlIHsgc2NyZWVuKHdpZGdldCkuY29sb3JTcGFjZS5DR0NvbG9y
U3BhY2UgfTsKIH0KIAogYm9vbCBzY3JlZW5TdXBwb3J0c0V4dGVuZGVkQ29sb3IoV2lkZ2V0KiB3
aWRnZXQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCShyZXZp
c2lvbiAyNzc5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTcyNiw3ICs3MjYsNyBAQCBib29sIFRoZW1lTWFjOjpkcmF3Q2Vs
bE9yRm9jdXNSaW5nV2l0aFZpCiAKICAgICBpZiAodXNlSW1hZ2VCdWZmZXIpIHsKICAgICAgICAg
TlNSZWN0IGltYWdlQnVmZmVyRHJhd1JlY3QgPSBOU1JlY3QoRmxvYXRSZWN0KGJ1dHRvbkZvY3Vz
UmVjdE91dGxpbmVXaWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCByZWN0LndpZHRo
KCksIHJlY3QuaGVpZ2h0KCkpKTsKLSAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHJlY3Quc2l6ZSgpICsgMiAqIEZsb2F0U2l6ZShi
dXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCks
IGRldmljZVNjYWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGNvbnRleHQp
OworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIocmVjdC5zaXplKCkgKyAyICogRmxvYXRTaXplKGJ1dHRvbkZvY3VzUmVjdE91dGxp
bmVXaWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoKSwgZGV2aWNlU2NhbGVGYWN0b3Is
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBjb250ZXh0KTsKICAgICAgICAgaWYgKCFp
bWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBuZWVkc1JlcGFpbnQ7CiAgICAgICAgIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9Nb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZUdTdHJlYW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291
cmNlR1N0cmVhbWVyLmNwcAkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL01vY2tSZWFsdGltZVZpZGVvU291cmNlR1N0cmVh
bWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIE1vY2tSZWFsdGlt
ZVZpZGVvU291cmNlR1N0cmVhbWVyOjp1CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYXV0byBwaXhlbEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5nZXRQaXhlbEJ1
ZmZlcih7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfSwgeyB7IH0sIGltYWdlQnVm
ZmVyLT5sb2dpY2FsU2l6ZSgpIH0pOworICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBpbWFnZUJ1ZmZl
ci0+Z2V0UGl4ZWxCdWZmZXIoeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxp
ZWQsIFBpeGVsRm9ybWF0OjpCR1JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfSwg
eyB7IH0sIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpIH0pOwogICAgIGlmICghcGl4ZWxCdWZm
ZXIpCiAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAJKHJldmlzaW9uIDI3
Nzk3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTQsNyArNDU0LDcgQEAgSW1hZ2VCdWZmZXIq
IE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjppbQogICAgIGlmIChtX2ltYWdlQnVmZmVyKQogICAg
ICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlci5nZXQoKTsKIAotICAgIG1faW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGNhcHR1cmVTaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJHUkE4
KTsKKyAgICBtX2ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjYXB0dXJlU2l6ZSgp
LCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIW1faW1hZ2VCdWZmZXIpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9w
bGF5c3RhdGlvbi9QbGF0Zm9ybVNjcmVlblBsYXlTdGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wbGF5c3RhdGlvbi9QbGF0Zm9ybVNjcmVlblBsYXlTdGF0
aW9uLmNwcAkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcGxh
eXN0YXRpb24vUGxhdGZvcm1TY3JlZW5QbGF5U3RhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNj
cmVlbi5oIgogCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAi
RmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKIApAQCAtNzEsNCArNzIs
OSBAQCBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcihXaWRnZXQqCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCitEZXN0aW5hdGlvbkNvbG9yU3BhY2Ugc2NyZWVuQ29sb3JTcGFjZShXaWRn
ZXQqKQoreworICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1BsYXRmb3JtU2NyZWVuV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vUGxhdGZvcm1TY3JlZW5XaW4uY3BwCShyZXZpc2lvbiAyNzc5NzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGxhdGZvcm1TY3JlZW5XaW4uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1TY3JlZW4uaCIKIAorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2lu
Y2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVW
aWV3LmgiCkBAIC0xMDQsMTIgKzEwNSwxMCBAQCBGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxlUmVj
dChXaWRnZXQqIHdpCiAgICAgcmV0dXJuIG1vbml0b3JJbmZvLnJjV29yazsKIH0KIAotI2lmIFVT
RShDRykKLUNHQ29sb3JTcGFjZVJlZiBzY3JlZW5Db2xvclNwYWNlKFdpZGdldCopCitEZXN0aW5h
dGlvbkNvbG9yU3BhY2Ugc2NyZWVuQ29sb3JTcGFjZShXaWRnZXQqKQogewotICAgIHJldHVybiBz
UkdCQ29sb3JTcGFjZVJlZigpOworICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKTsKIH0KLSNlbmRpZgogCiBib29sIHNjcmVlblN1cHBvcnRzRXh0ZW5kZWRDb2xvcihXaWRn
ZXQqKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3BlL1BsYXRmb3JtU2NyZWVu
V1BFLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93cGUvUGxhdGZv
cm1TY3JlZW5XUEUuY3BwCShyZXZpc2lvbiAyNzc5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93cGUvUGxhdGZvcm1TY3JlZW5XUEUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIK
IAorI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiV2lkZ2V0LmgiCkBA
IC04MSw2ICs4MiwxMSBAQCBGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxlUmVjdChXaWRnZXQqIHdp
CiAgICAgcmV0dXJuIHNjcmVlblJlY3Qod2lkZ2V0KTsKIH0KIAorRGVzdGluYXRpb25Db2xvclNw
YWNlIHNjcmVlbkNvbG9yU3BhY2UoV2lkZ2V0KikKK3sKKyAgICByZXR1cm4gRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCk7Cit9CisKIGJvb2wgc2NyZWVuU3VwcG9ydHNFeHRlbmRlZENvbG9y
KFdpZGdldCopCiB7CiAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0veHIvUGxhdGZvcm1YUi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3hyL1BsYXRmb3JtWFIuaAkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOCw2ICsxOCw3IEBA
CiAgKi8KICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgi
CiAjaW5jbHVkZSAiRmxvYXRQb2ludDNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgi
CiAjaW5jbHVkZSAiSW50UmVjdC5oIgpAQCAtMzIsOCArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlIDxXZWJDb3JlL0NvbG9y
U3BhY2VDRy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvSU9TdXJmYWNlLmg+CisjaW5jbHVkZSAiSU9T
dXJmYWNlLmgiCiAjaW5jbHVkZSA8d3RmL01hY2hTZW5kUmlnaHQuaD4KICNlbmRpZgogCkBAIC00
NDYsNyArNDQ2LDcgQEAgT3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OkxheWVyRGF0YT4gRAog
ICAgIFdURjo6TWFjaFNlbmRSaWdodCBzdXJmYWNlU2VuZFJpZ2h0OwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoc3VyZmFjZVNlbmRSaWdodCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0gICAgbGF5ZXJEYXRhLnN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21T
ZW5kUmlnaHQoV1RGTW92ZShzdXJmYWNlU2VuZFJpZ2h0KSwgV2ViQ29yZTo6c1JHQkNvbG9yU3Bh
Y2VSZWYoKSk7CisgICAgbGF5ZXJEYXRhLnN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNy
ZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShzdXJmYWNlU2VuZFJpZ2h0KSwgV2ViQ29yZTo6RGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogI2VuZGlmCiAgICAgcmV0dXJuIGxheWVyRGF0
YTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCShyZXZpc2lv
biAyNzc5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTExLDkgKzExMSw5IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IENTU0Zp
bHRlcjo6YnVpbGRSZWYKICAgICAgICAgZWZmZWN0RWxlbWVudC5zZXRTdGFuZGFyZEF0dHJpYnV0
ZXMoZWZmZWN0LmdldCgpKTsKICAgICAgICAgaWYgKGVmZmVjdEVsZW1lbnQucmVuZGVyZXIoKSkg
ewogI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICAg
ICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShlZmZlY3RFbGVtZW50LnJlbmRl
cmVyKCktPnN0eWxlKCkuc3ZnU3R5bGUoKS5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzKCkgPT0g
Q29sb3JJbnRlcnBvbGF0aW9uOjpMaW5lYXJSR0IgPyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6Okxp
bmVhclNSR0IgOiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOworICAgICAgICAgICAgZWZm
ZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKGVmZmVjdEVsZW1lbnQucmVuZGVyZXIoKS0+c3R5
bGUoKS5zdmdTdHlsZSgpLmNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMoKSA9PSBDb2xvckludGVy
cG9sYXRpb246OkxpbmVhclJHQiA/IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigp
IDogRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogI2Vsc2UKLSAgICAgICAgICAgIGVm
ZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Ip
OworICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpKTsKICNlbmRpZgogICAgICAgICB9CiAgICAgICAgIGJ1aWxkZXIt
PmFkZChlZmZlY3RFbGVtZW50LnJlc3VsdCgpLCBlZmZlY3QpOwpAQCAtMjk2LDcgKzI5Niw3IEBA
IGJvb2wgQ1NTRmlsdGVyOjpidWlsZChSZW5kZXJFbGVtZW50JiByZW4KICAgICAgICAgICAgIC8v
IFVubGlrZSBTVkcgRmlsdGVycyBhbmQgQ1NTRmlsdGVySW1hZ2VzLCBmaWx0ZXIgZnVuY3Rpb25z
IG9uIHRoZSBmaWx0ZXIKICAgICAgICAgICAgIC8vIHByb3BlcnR5IGFwcGxpZWQgaGVyZSBzaG91
bGQgbm90IGNsaXAgdG8gdGhlaXIgcHJpbWl0aXZlIHN1YnJlZ2lvbnMuCiAgICAgICAgICAgICBl
ZmZlY3QtPnNldENsaXBzVG9Cb3VuZHMoY29uc3VtZXIgPT0gRmlsdGVyQ29uc3VtZXI6OkZpbHRl
ckZ1bmN0aW9uKTsKLSAgICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOworICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVy
YXRpbmdDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgaWYgKGZpbHRlck9wZXJhdGlvbi50eXBlKCkgIT0gRmlsdGVyT3Bl
cmF0aW9uOjpSRUZFUkVOQ0UpIHsKICAgICAgICAgICAgICAgICBlZmZlY3QtPmlucHV0RWZmZWN0
cygpID0geyBXVEZNb3ZlKHByZXZpb3VzRWZmZWN0KSB9OwpAQCAtMzQ0LDExICszNDQsMTEgQEAg
dm9pZCBDU1NGaWx0ZXI6OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZQogICAgIEludFNpemUgbG9n
aWNhbFNpemUgeyBtX3NvdXJjZURyYXdpbmdSZWdpb24uc2l6ZSgpIH07CiAgICAgaWYgKCFzb3Vy
Y2VJbWFnZSgpIHx8IHNvdXJjZUltYWdlKCktPmxvZ2ljYWxTaXplKCkgIT0gbG9naWNhbFNpemUp
IHsKICNpZiBVU0UoRElSRUNUMkQpCi0gICAgICAgIHNldFNvdXJjZUltYWdlKEltYWdlQnVmZmVy
OjpjcmVhdGUobG9naWNhbFNpemUsIHJlbmRlcmluZ01vZGUoKSwgJnRhcmdldENvbnRleHQsIGZp
bHRlclNjYWxlKCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3JtYXQ6OkJH
UkE4KSk7CisgICAgICAgIHNldFNvdXJjZUltYWdlKEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNh
bFNpemUsIHJlbmRlcmluZ01vZGUoKSwgJnRhcmdldENvbnRleHQsIGZpbHRlclNjYWxlKCksIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpKTsKICNlbHNl
CiAgICAgICAgIFVOVVNFRF9QQVJBTSh0YXJnZXRDb250ZXh0KTsKICAgICAgICAgUmVuZGVyaW5n
TW9kZSBtb2RlID0gbV9maWx0ZXJSZW5kZXJlciA/IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVk
IDogcmVuZGVyaW5nTW9kZSgpOwotICAgICAgICBzZXRTb3VyY2VJbWFnZShJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKGxvZ2ljYWxTaXplLCBtb2RlLCBmaWx0ZXJTY2FsZSgpLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0OjpCR1JBOCkpOworICAgICAgICBzZXRTb3VyY2VJbWFn
ZShJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBtb2RlLCBmaWx0ZXJTY2FsZSgpLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CiAjZW5k
aWYKICAgICB9CiAgICAgbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkID0gdHJ1ZTsKQEAgLTM4Miwx
MiArMzgyLDEyIEBAIHZvaWQgQ1NTRmlsdGVyOjphcHBseSgpCiAgICAgaWYgKG1fZmlsdGVyUmVu
ZGVyZXIpIHsKICAgICAgICAgbV9maWx0ZXJSZW5kZXJlci0+YXBwbHlFZmZlY3RzKGVmZmVjdCk7
CiAgICAgICAgIGlmIChtX2ZpbHRlclJlbmRlcmVyLT5oYXNSZXN1bHQoKSkgewotICAgICAgICAg
ICAgZWZmZWN0LnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKTsKKyAgICAgICAgICAgIGVmZmVjdC50cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgIH0KICAgICBlZmZlY3QuYXBwbHkoKTsKLSAgICBlZmZlY3QudHJhbnNmb3JtUmVz
dWx0Q29sb3JTcGFjZShEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IpOworICAgIGVmZmVjdC50
cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsK
IH0KIAogTGF5b3V0UmVjdCBDU1NGaWx0ZXI6OmNvbXB1dGVTb3VyY2VJbWFnZVJlY3RGb3JEaXJ0
eVJlY3QoY29uc3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYg
ZGlydHlSZWN0KQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwCShyZXZpc2lvbiAyNzc5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzYs
NyArODc2LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZQogICAg
ICAgICBtYXNrUmVjdC5pbnRlcnNlY3Qoc25hcHBlZEludFJlY3QocGFpbnRJbmZvLnJlY3QpKTsK
IAogICAgICAgICAvLyBOb3cgY3JlYXRlIHRoZSBtYXNrLgotICAgICAgICBtYXNrSW1hZ2UgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihtYXNrUmVjdC5zaXplKCksIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgY29udGV4dCk7CisgICAgICAgIG1hc2tJbWFnZSA9IElt
YWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNpemUoKSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNvbnRleHQpOwogICAgICAgICBpZiAoIW1hc2tJbWFn
ZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgcGFpbnRNYXNrRm9yVGV4dEZpbGxCb3go
bWFza0ltYWdlLmdldCgpLCBtYXNrUmVjdCwgYm94LCBzY3JvbGxlZFBhaW50UmVjdCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAko
cmV2aXNpb24gMjc3OTc5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNjcsNyArMzI2Nyw3IEBAIHN0YXRpYyBS
ZWZQdHI8UGF0dGVybj4gcGF0dGVybkZvckRlc2NyaXAKIHsKICAgICBjb25zdCBGbG9hdFNpemUg
dGlsZVNpemUgeyAzMiwgMTggfTsKIAotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcih0aWxlU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCLCBkZXN0Q29udGV4dCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHRpbGVTaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgZGVzdENvbnRleHQpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lSU9TLm1tCShyZXZpc2lvbiAyNzc5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTE5ODMsMTEgKzE5ODMsMTEgQEAg
dm9pZCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRTeXN0ZW1QcmV2aWV3QgogICAgIElPU3VyZmFjZVJl
ZiBzdXJmYWNlOwogICAgIGlmICh1c2VTbWFsbEJhZGdlKSB7CiAgICAgICAgIGlmICghbV9zbWFs
bEJhZGdlU3VyZmFjZSkKLSAgICAgICAgICAgIG1fc21hbGxCYWRnZVN1cmZhY2UgPSBJT1N1cmZh
Y2U6OmNyZWF0ZSh7IHNtYWxsQmFkZ2VEaW1lbnNpb24sIHNtYWxsQmFkZ2VEaW1lbnNpb24gfSwg
c1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgICAgICAgICBtX3NtYWxsQmFkZ2VTdXJmYWNlID0g
SU9TdXJmYWNlOjpjcmVhdGUoeyBzbWFsbEJhZGdlRGltZW5zaW9uLCBzbWFsbEJhZGdlRGltZW5z
aW9uIH0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICAgICAgc3VyZmFjZSA9
IG1fc21hbGxCYWRnZVN1cmZhY2UtPnN1cmZhY2UoKTsKICAgICB9IGVsc2UgewogICAgICAgICBp
ZiAoIW1fbGFyZ2VCYWRnZVN1cmZhY2UpCi0gICAgICAgICAgICBtX2xhcmdlQmFkZ2VTdXJmYWNl
ID0gSU9TdXJmYWNlOjpjcmVhdGUoeyBsYXJnZUJhZGdlRGltZW5zaW9uLCBsYXJnZUJhZGdlRGlt
ZW5zaW9uIH0sIHNSR0JDb2xvclNwYWNlUmVmKCkpOworICAgICAgICAgICAgbV9sYXJnZUJhZGdl
U3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKHsgbGFyZ2VCYWRnZURpbWVuc2lvbiwgbGFyZ2VC
YWRnZURpbWVuc2lvbiB9LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAgICAgICAg
IHN1cmZhY2UgPSBtX2xhcmdlQmFkZ2VTdXJmYWNlLT5zdXJmYWNlKCk7CiAgICAgfQogICAgIFtt
X2NpQ29udGV4dC5nZXQoKSByZW5kZXI6dHJhbnNsYXRlZEltYWdlIHRvSU9TdXJmYWNlOnN1cmZh
Y2UgYm91bmRzOmJhZGdlUmVjdCBjb2xvclNwYWNlOnNSR0JDb2xvclNwYWNlUmVmKCldOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkocmV2aXNpb24g
Mjc3OTc5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzA5LDcgKzEzMDksNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpw
YWludFByb2dyZXNzQmFyKGNvCiAgICAgY29uc3QgYXV0byYgcmVuZGVyUHJvZ3Jlc3MgPSBkb3du
Y2FzdDxSZW5kZXJQcm9ncmVzcz4ocmVuZGVyT2JqZWN0KTsKICAgICBmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3RvciA9IHJlbmRlck9iamVjdC5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCk7CiAg
ICAgYm9vbCBpc0luZGV0ZXJtaW5hdGUgPSByZW5kZXJQcm9ncmVzcy5wb3NpdGlvbigpIDwgMDsK
LSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZm
ZXIoaW5mbGF0ZWRSZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQiwgcGFpbnRJbmZvLmNvbnRleHQoKSk7CisgICAgYXV0byBpbWFnZUJ1ZmZl
ciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGluZmxhdGVkUmVjdC5zaXpl
KCksIGRldmljZVNjYWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgcGFp
bnRJbmZvLmNvbnRleHQoKSk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3Bw
CShyZXZpc2lvbiAyNzc5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1No
YXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDcgKzE4MSw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVJhc3QKICAgICBJbnRSZWN0IG1hcmdpblJlY3QgPSBzbmFw
cGVkSW50UmVjdChtYXJnaW5SKTsKICAgICBhdXRvIGludGVydmFscyA9IG1ha2VVbmlxdWU8UmFz
dGVyU2hhcGVJbnRlcnZhbHM+KG1hcmdpblJlY3QuaGVpZ2h0KCksIC1tYXJnaW5SZWN0LnkoKSk7
CiAgICAgLy8gRklYTUUgKDE0OTQyMCk6IFRoaXMgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25k
aXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQuCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoaW1hZ2VSZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwor
ICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlUmVjdC5zaXpl
KCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogCiAgICAgYXV0byBjcmVhdGVTaGFwZSA9
IFsmXSgpIHsKICAgICAgICAgYXV0byByYXN0ZXJTaGFwZSA9IG1ha2VVbmlxdWU8UmFzdGVyU2hh
cGU+KFdURk1vdmUoaW50ZXJ2YWxzKSwgbWFyZ2luUmVjdC5zaXplKCkpOwpAQCAtMTk3LDcgKzE5
Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVJhc3QKICAgICBpZiAo
aW1hZ2UpCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC5kcmF3SW1hZ2UoKmltYWdlLCBJbnRSZWN0
KEludFBvaW50KCksIGltYWdlUmVjdC5zaXplKCkpKTsKIAotICAgIFBpeGVsQnVmZmVyRm9ybWF0
IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxG
b3JtYXQ6OlJHQkE4LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IgfTsKKyAgICBQaXhlbEJ1
ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxp
ZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsK
ICAgICBhdXRvIHBpeGVsQnVmZmVyID0gaW1hZ2VCdWZmZXItPmdldFBpeGVsQnVmZmVyKGZvcm1h
dCwgeyBJbnRQb2ludCgpLCBpbWFnZVJlY3Quc2l6ZSgpIH0pOwogICAgIAogICAgIC8vIFdlIGNv
dWxkIGdldCB0byBhIHZhbHVlIHdoZXJlIFBpeGVsQnVmZmVyIGNvdWxkIGJlIG51bGxvcHQuIEEg
Y2FzZSB3aGVyZSBJbWFnZVJlY3Quc2l6ZSgpIGlzIGh1Z2UsIFBpeGVsQnVmZmVyOjp0cnlDcmVh
dGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VD
bGlwcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAJKHJldmlzaW9uIDI3Nzk3OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ2LDcgKzE0Niw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVy
OjphcHBseUNsaXAKICAgICBBZmZpbmVUcmFuc2Zvcm0gYWJzb2x1dGVUcmFuc2Zvcm0gPSBTVkdS
ZW5kZXJpbmdDb250ZXh0OjpjYWxjdWxhdGVUcmFuc2Zvcm1hdGlvblRvT3V0ZXJtb3N0Q29vcmRp
bmF0ZVN5c3RlbShyZW5kZXJlcik7CiAgICAgaWYgKCFjbGlwcGVyRGF0YS5pc1ZhbGlkRm9yR2Vv
bWV0cnkob2JqZWN0Qm91bmRpbmdCb3gsIGFic29sdXRlVHJhbnNmb3JtKSkgewogICAgICAgICAv
LyBGSVhNRSAoMTQ5NDY5KTogVGhpcyBpbWFnZSBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRp
dGlvbmFsbHkgdW5hY2NlbGVyYXRlZC4gTWFraW5nIGl0IG1hdGNoIHRoZSBjb250ZXh0IGJyZWFr
cyBuZXN0ZWQgY2xpcHBpbmcsIHRob3VnaC4KLSAgICAgICAgYXV0byBtYXNrSW1hZ2UgPSBTVkdS
ZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihvYmplY3RCb3VuZGluZ0JveCwgYWJz
b2x1dGVUcmFuc2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgJmNvbnRleHQpOworICAgICAgICBhdXRvIG1hc2tJbWFnZSA9IFNW
R1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKG9iamVjdEJvdW5kaW5nQm94LCBh
YnNvbHV0ZVRyYW5zZm9ybSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFJlbmRlcmlu
Z01vZGU6OlVuYWNjZWxlcmF0ZWQsICZjb250ZXh0KTsKICAgICAgICAgaWYgKCFtYXNrSW1hZ2Up
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCShyZXZp
c2lvbiAyNzc5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlRmlsdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDkgKzEwNCw5IEBAIHN0ZDo6
dW5pcXVlX3B0cjxTVkdGaWx0ZXJCdWlsZGVyPiBSZW5kZXIKICAgICAgICAgZWZmZWN0LT5zZXRF
ZmZlY3RCb3VuZGFyaWVzKFNWR0xlbmd0aENvbnRleHQ6OnJlc29sdmVSZWN0YW5nbGU8U1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPigmZWxlbWVudCwgZmlsdGVyRWxlbWVudCgp
LnByaW1pdGl2ZVVuaXRzKCksIHRhcmdldEJvdW5kaW5nQm94KSk7CiAgICAgICAgIGlmIChlbGVt
ZW50LnJlbmRlcmVyKCkpIHsKICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElO
RUFSX1NSR0IpCi0gICAgICAgICAgICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoZWxl
bWVudC5yZW5kZXJlcigpLT5zdHlsZSgpLnN2Z1N0eWxlKCkuY29sb3JJbnRlcnBvbGF0aW9uRmls
dGVycygpID09IENvbG9ySW50ZXJwb2xhdGlvbjo6TGluZWFyUkdCID8gRGVzdGluYXRpb25Db2xv
clNwYWNlOjpMaW5lYXJTUkdCIDogRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKTsKKyAgICAg
ICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShlbGVtZW50LnJlbmRlcmVyKCkt
PnN0eWxlKCkuc3ZnU3R5bGUoKS5jb2xvckludGVycG9sYXRpb25GaWx0ZXJzKCkgPT0gQ29sb3JJ
bnRlcnBvbGF0aW9uOjpMaW5lYXJSR0IgPyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNS
R0IoKSA6IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICNlbHNlCi0gICAgICAgICAg
ICBlZmZlY3QtPnNldE9wZXJhdGluZ0NvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKTsKKyAgICAgICAgICAgIGVmZmVjdC0+c2V0T3BlcmF0aW5nQ29sb3JTcGFjZShEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CiAjZW5kaWYKICAgICAgICAgfQogICAgICAgICBidWls
ZGVyLT5hZGQoZWxlbWVudC5yZXN1bHQoKSwgV1RGTW92ZShlZmZlY3QpKTsKQEAgLTE5OCw5ICsx
OTgsOSBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291CiAKICAgICBh
dXRvIHJlbmRlcmluZ01vZGUgPSByZW5kZXJlci5zZXR0aW5ncygpLmFjY2VsZXJhdGVkRmlsdGVy
c0VuYWJsZWQoKSA/IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIDogUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZDsKICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFS
X1NSR0IpCi0gICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5l
YXJTUkdCOworICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGlu
ZWFyU1JHQigpOwogI2Vsc2UKLSAgICBhdXRvIGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0I7CisgICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCk7CiAjZW5kaWYKICAgICBhdXRvIHNvdXJjZUdyYXBoaWMgPSBTVkdSZW5kZXJpbmdD
b250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihmaWx0ZXJEYXRhLT5kcmF3aW5nUmVnaW9uLCBlZmZl
Y3RpdmVUcmFuc2Zvcm0sIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUsIGNvbnRleHQpOwogICAg
IGlmICghc291cmNlR3JhcGhpYykgewpAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVIKICAgICAgICAgICAgIGZpbHRlckRhdGEuc3RhdGUg
PSBGaWx0ZXJEYXRhOjpBcHBseWluZzsKICAgICAgICAgICAgIGxhc3RFZmZlY3QtPmFwcGx5KCk7
CiAgICAgICAgICAgICBsYXN0RWZmZWN0LT5jb3JyZWN0RmlsdGVyUmVzdWx0SWZOZWVkZWQoKTsK
LSAgICAgICAgICAgIGxhc3RFZmZlY3QtPnRyYW5zZm9ybVJlc3VsdENvbG9yU3BhY2UoRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKTsKKyAgICAgICAgICAgIGxhc3RFZmZlY3QtPnRyYW5zZm9y
bVJlc3VsdENvbG9yU3BhY2UoRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgICAg
ICB9CiAgICAgICAgIGZpbHRlckRhdGEuc3RhdGUgPSBGaWx0ZXJEYXRhOjpCdWlsdDsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlR3JhZGllbnQuY3BwCShyZXZpc2lvbiAyNzc5NzkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjcmVhdGVNYXNrQW5kU3dh
cENvbnQKICAgICBBZmZpbmVUcmFuc2Zvcm0gYWJzb2x1dGVUcmFuc2Zvcm0gPSBTVkdSZW5kZXJp
bmdDb250ZXh0OjpjYWxjdWxhdGVUcmFuc2Zvcm1hdGlvblRvT3V0ZXJtb3N0Q29vcmRpbmF0ZVN5
c3RlbSgqdGV4dFJvb3RCbG9jayk7CiAgICAgRmxvYXRSZWN0IHJlcGFpbnRSZWN0ID0gdGV4dFJv
b3RCbG9jay0+cmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKTsKIAotICAgIGF1dG8gbWFz
a0ltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIocmVwYWludFJl
Y3QsIGFic29sdXRlVHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGNvbnRl
eHQtPnJlbmRlcmluZ01vZGUoKSk7CisgICAgYXV0byBtYXNrSW1hZ2UgPSBTVkdSZW5kZXJpbmdD
b250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihyZXBhaW50UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0s
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBjb250ZXh0LT5yZW5kZXJpbmdNb2RlKCkp
OwogICAgIGlmICghbWFza0ltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VNYXNrZXIuY3BwCShyZXZpc2lvbiAyNzc5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEs
OSArNzEsOSBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBseVJlc291CiAgICAg
ICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IHN0eWxlKCkuc3ZnU3R5bGUoKTsK
IAogI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKLSAgICAg
ICAgYXV0byBjb2xvclNwYWNlID0gc3ZnU3R5bGUuY29sb3JJbnRlcnBvbGF0aW9uKCkgPT0gQ29s
b3JJbnRlcnBvbGF0aW9uOjpMaW5lYXJSR0IgPyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVh
clNSR0IgOiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0I7CisgICAgICAgIGF1dG8gY29sb3JT
cGFjZSA9IHN2Z1N0eWxlLmNvbG9ySW50ZXJwb2xhdGlvbigpID09IENvbG9ySW50ZXJwb2xhdGlv
bjo6TGluZWFyUkdCID8gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCkgOiBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKICNlbHNlCi0gICAgICAgIGF1dG8gY29sb3JTcGFj
ZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQjsKKyAgICAgICAgYXV0byBjb2xvclNwYWNl
ID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiAjZW5kaWYKIAogICAgICAgICAvLyBG
SVhNRSAoMTQ5NDcwKTogVGhpcyBpbWFnZSBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlv
bmFsbHkgdW5hY2NlbGVyYXRlZC4gTWFraW5nIGl0IG1hdGNoIHRoZSBjb250ZXh0IGJyZWFrcyBh
bHBoYSBtYXNraW5nLCB0aG91Z2guCkBAIC05Miw3ICs5Miw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVz
b3VyY2VNYXNrZXI6OmFwcGx5UmVzb3UKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBSZW5k
ZXJTVkdSZXNvdXJjZU1hc2tlcjo6ZHJhd0NvbnRlbnRJbnRvTWFza0ltYWdlKE1hc2tlckRhdGEq
IG1hc2tlckRhdGEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW5kZXJPYmpl
Y3QqIG9iamVjdCkKK2Jvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmRyYXdDb250ZW50SW50
b01hc2tJbWFnZShNYXNrZXJEYXRhKiBtYXNrZXJEYXRhLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmIGNvbG9yU3BhY2UsIFJlbmRlck9iamVjdCogb2JqZWN0KQogewogICAgIEdyYXBoaWNz
Q29udGV4dCYgbWFza0ltYWdlQ29udGV4dCA9IG1hc2tlckRhdGEtPm1hc2tJbWFnZS0+Y29udGV4
dCgpOwogCkBAIC0xMTksNyArMTE5LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6
ZHJhd0NvbnRlbgogICAgIH0KIAogI2lmICFVU0UoQ0cpCi0gICAgbWFza2VyRGF0YS0+bWFza0lt
YWdlLT50cmFuc2Zvcm1Db2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgY29s
b3JTcGFjZSk7CisgICAgbWFza2VyRGF0YS0+bWFza0ltYWdlLT50cmFuc2Zvcm1Db2xvclNwYWNl
KERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBjb2xvclNwYWNlKTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKGNvbG9yU3BhY2UpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCShyZXZp
c2lvbiAyNzc5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlTWFza2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToK
IAogICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAi
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIiOyB9CiAKLSAgICBib29sIGRyYXdDb250ZW50SW50b01h
c2tJbWFnZShNYXNrZXJEYXRhKiwgRGVzdGluYXRpb25Db2xvclNwYWNlLCBSZW5kZXJPYmplY3Qq
KTsKKyAgICBib29sIGRyYXdDb250ZW50SW50b01hc2tJbWFnZShNYXNrZXJEYXRhKiwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiwgUmVuZGVyT2JqZWN0Kik7CiAgICAgdm9pZCBjYWxjdWxh
dGVNYXNrQ29udGVudFJlcGFpbnRSZWN0KCk7CiAKICAgICBGbG9hdFJlY3QgbV9tYXNrQ29udGVu
dEJvdW5kYXJpZXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlUGF0dGVybi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCShyZXZpc2lvbiAyNzc5NzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Myw3ICsyNTMsNyBAQCBib29sIFJlbmRlclNWR1Jlc291
cmNlUGF0dGVybjo6YnVpbGRUaWxlCiBSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbmRlclNWR1Jlc291
cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdlKGNvbnN0IFBhdHRlcm5BdHRyaWJ1dGVzJiBhdHRy
aWJ1dGVzLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVCb3VuZGFyaWVzLCBjb25zdCBGbG9hdFJlY3Qm
IGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdGlsZUltYWdl
VHJhbnNmb3JtLCBGbG9hdFJlY3QmIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBSZW5k
ZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUpIGNvbnN0CiB7CiAgICAgY2xhbXBlZEFic29sdXRlVGls
ZUJvdW5kYXJpZXMgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFJlY3QoYWJzb2x1dGVUaWxlQm91bmRh
cmllcyk7Ci0gICAgYXV0byB0aWxlSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJ
bWFnZUJ1ZmZlcihhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjbGFtcGVkQWJzb2x1dGVUaWxlQm91
bmRhcmllcywgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCByZW5kZXJpbmdNb2RlKTsKKyAg
ICBhdXRvIHRpbGVJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVy
KGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgcmVuZGVyaW5nTW9kZSk7CiAgICAgaWYgKCF0
aWxlSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlz
aW9uIDI3Nzk3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5n
Q29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNiw3ICsyMzYsNyBAQCBBZmZpbmVUcmFu
c2Zvcm0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsCiAgICAgcmV0dXJuIGFic29sdXRlVHJhbnNm
b3JtOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0
ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3Bh
Y2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJ
bWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29s
b3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQpCiB7CiAgICAgSW50UmVjdCBwYWludFJlY3QgPSBjYWxjdWxhdGVJbWFnZUJ1
ZmZlclJlY3QodGFyZ2V0UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0pOwogICAgIC8vIERvbid0IGNy
ZWF0ZSBlbXB0eSBJbWFnZUJ1ZmZlcnMuCkBAIC0yNjQsNyArMjY0LDcgQEAgUmVmUHRyPEltYWdl
QnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OgogICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0K
IAotUmVmUHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBl
ZFJlY3QsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJl
bmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK1JlZlB0cjxJbWFn
ZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxv
YXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRSZWN0LCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5n
TW9kZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogewogICAgIEludFNpemUgY2xh
bXBlZFNpemUgPSByb3VuZGVkSW50U2l6ZShjbGFtcGVkUmVjdC5zaXplKCkpOwogICAgIEZsb2F0
U2l6ZSB1bmNsYW1wZWRTaXplID0gcm91bmRlZEludFNpemUodGFyZ2V0UmVjdC5zaXplKCkpOwpA
QCAtMzUwLDcgKzM1MCw3IEBAIGJvb2wgU1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRm9yZWdy
b3UKIAogICAgIC8vIENyZWF0ZSBhIG5ldyBidWZmZXIgYW5kIHBhaW50IHRoZSBmb3JlZ3JvdW5k
IGludG8gaXQuCiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikgewotICAgICAgICBpbWFnZUJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShib3Vu
ZGluZ0JveC5zaXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIG1fcGFpbnRJbmZv
LT5jb250ZXh0KCkpOworICAgICAgICBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShib3VuZGluZ0JveC5zaXplKCkpLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgbV9wYWludEluZm8tPmNvbnRleHQoKSk7CiAgICAg
ICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdD
b250ZXh0LmgJKHJldmlzaW9uIDI3Nzk3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw4ICs2MCw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIHByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQoUmVuZGVyRWxlbWVu
dCYsIFBhaW50SW5mbyYsIE5lZWRzR3JhcGhpY3NDb250ZXh0U2F2ZSA9IERvbnRTYXZlR3JhcGhp
Y3NDb250ZXh0KTsKICAgICBib29sIGlzUmVuZGVyaW5nUHJlcGFyZWQoKSBjb25zdCB7IHJldHVy
biBtX3JlbmRlcmluZ0ZsYWdzICYgUmVuZGVyaW5nUHJlcGFyZWQ7IH0KIAotICAgIHN0YXRpYyBS
ZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFy
Z2V0UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBHcmFwaGljc0NvbnRleHQqID0g
bnVsbHB0cik7Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRS
ZWN0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNz
Q29udGV4dCogPSBudWxscHRyKTsKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVh
dGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYs
IFJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCogPSBudWxscHRyKTsKKyAgICBz
dGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJl
Y3QmIHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZFJlY3QsIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCog
PSBudWxscHRyKTsKIAogICAgIHN0YXRpYyB2b2lkIHJlbmRlclN1YnRyZWVUb0NvbnRleHQoR3Jh
cGhpY3NDb250ZXh0JiwgUmVuZGVyRWxlbWVudCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwog
ICAgIHN0YXRpYyB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgdGFy
Z2V0UmVjdCwgUmVmUHRyPEltYWdlQnVmZmVyPiYsIGJvb2wgc2FmZVRvQ2xlYXIpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiAyNzc5Nzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMTcsNyArMjE3LDcgQEAgUmVmUHRyPE5hdGl2ZUltYWdlPiBTVkdJbWFnZTo6bmF0
aXZlSW1hZwogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgUmVuZGVyaW5n
TW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKHNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFpbWFnZUJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lk
IFNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHCiAgICAgRmxvYXRSZWN0IGltYWdl
QnVmZmVyU2l6ZSA9IHpvb21lZENvbnRhaW5lclJlY3Q7CiAgICAgaW1hZ2VCdWZmZXJTaXplLnNj
YWxlKGltYWdlQnVmZmVyU2NhbGUud2lkdGgoKSwgaW1hZ2VCdWZmZXJTY2FsZS5oZWlnaHQoKSk7
CiAKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVy
KGV4cGFuZGVkSW50U2l6ZShpbWFnZUJ1ZmZlclNpemUuc2l6ZSgpKSwgMSwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCLCBjb250ZXh0KTsKKyAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShpbWFnZUJ1ZmZlclNpemUu
c2l6ZSgpKSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNvbnRleHQpOwogICAg
IGlmICghYnVmZmVyKSAvLyBGYWlsZWQgdG8gYWxsb2NhdGUgYnVmZmVyLgogICAgICAgICByZXR1
cm47CiAgICAgZHJhd0ZvckNvbnRhaW5lcihidWZmZXItPmNvbnRleHQoKSwgY29udGFpbmVyU2l6
ZSwgY29udGFpbmVyWm9vbSwgaW5pdGlhbEZyYWdtZW50VVJMLCBpbWFnZUJ1ZmZlclNpemUsIHpv
b21lZENvbnRhaW5lclJlY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAJKHJldmlzaW9uIDI3Nzk3OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05Myw4ICs5Myw4IEBAIHZvaWQgRkVJbWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJl
KCkKICAgICBpZiAoIW1faW1hZ2UgJiYgIXJlbmRlcmVyKQogICAgICAgICByZXR1cm47CiAKLSAg
ICAvLyBGRUltYWdlIHJlc3VsdHMgYXJlIGFsd2F5cyBpbiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IKLSAgICBzZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
Qik7CisgICAgLy8gRkVJbWFnZSByZXN1bHRzIGFyZSBhbHdheXMgaW4gRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCkKKyAgICBzZXRSZXN1bHRDb2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpKTsKIAogICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGNyZWF0ZUlt
YWdlQnVmZmVyUmVzdWx0KCk7CiAgICAgaWYgKCFyZXN1bHRJbWFnZSkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNzc5NzkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDk3IEBACisyMDIxLTA1LTI0ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxl
LmNvbT4KKworICAgICAgICBDb252ZXJ0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBmcm9tIGFuIGVu
dW0gdG8gY2xhc3Mgd3JhcHBpbmcgYSBwbGF0Zm9ybSBjb2xvciBzcGFjZSAoQ0dDb2xvclNwYWNl
UmVmIGZvciBDRyBwb3J0cywgZXRjLikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNjE0MworCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgorCisgICAgICAgIC0gVXBkYXRlIEltYWdlQnVmZmVyIHN1YmNsYXNzIHNpZ25hdHVyZXMgdG8g
dXNlICJjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIiB0bworICAgICAgICAgIGNvbmZvcm0g
dG8gdGhlIGJhc2UgY2xhc3MuCisgICAgICAgIC0gUmVwbGFjZSBDb2xvclNwYWNlRGF0YSB3aXRo
IE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4uIE5vIHJlYXNvbiB0byBoYXZlIHR3bwor
ICAgICAgICAgIHR5cGVzIHRoYXQgYXJlIHRoZSBzYW1lLgorICAgICAgICAtIEdpdmUgYWxsIHBv
cnRzIGEgY29sb3Igc3BhY2UgY29uZmlndXJhdGlvbiBmb3IgU2hhcmVhYmxlQml0bWFwIG5vdyB0
aGF0IHRoZXJlIGlzCisgICAgICAgICAgYSBjb21tb24gY2xhc3MgZm9yIHJlcHJlc2VudGluZyBj
b2xvciBzcGFjZS4KKyAgICAgICAgLSBVcGRhdGUgRGlzcGxheUxpc3QgZGVjb2RpbmcgdG8gYWNj
b3VudCBmb3IgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMgYW5kIEdldFBpeGVsQnVmZmVyCisg
ICAgICAgICAgbm8gbG9uZ2VyIGJlaW5nIGlubGluZWFibGUgZHVlIHRvIG5vdyBoYXZpbmcgbm9u
LXRyaXZpYWwgZGVzdHJ1Y3RvcnMgZHVlIHRvIAorICAgICAgICAgIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSBtZW1iZXIuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdl
QnVmZmVyLmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyOjpjcmVhdGUpOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNyZWF0ZUltYWdlQnVm
ZmVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OmNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRlByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTaGFyZWQvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcik6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjphcHBseUJhY2tpbmdTdG9yZVRv
TGF5ZXIpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAuY3BwOgorICAgICAgICAo
V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb246OmVuY29kZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbjo6ZGVjb2RlKToK
KyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmg6CisgICAgICAgICogU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
czo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5o
OgorICAgICAgICAqIFNoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OmNvbG9yU3BhY2UpOgorICAgICAgICAqIFNoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWQvbWFjL0NvbG9yU3BhY2VEYXRhLm1tOiBSZW1v
dmVkLgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9pb3MvV0tXZWJWaWV3SU9TLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Rha2VWaWV3U25h
cHNob3RdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zbmFwc2hvdFJlY3Q6aW50b0ltYWdlT2ZX
aWR0aDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpjb2xvclNwYWNlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlSG9zdC5tbToKKyAgICAgICAgKFdlYktpdDo6cmVjdXJzaXZlbHlNYXBJ
T1N1cmZhY2VCYWNraW5nU3RvcmUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OmNvbG9yU3BhY2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpj
b2xvclNwYWNlKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbWFnZUJ1ZmZlclNoYXJlYWJsZUJp
dG1hcEJhY2tlbmQ6OmNvbmZpZ3VyYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpwcmVwYXJlRm9yRGlzcGxheSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGUpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRl
SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2VuZC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJmYWNlQmFja2Vu
ZDo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkYuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbWFnZURlY29kZXJBVkY6OmNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9j
b2NvYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGVDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToKKyAg
ICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpwaXhlbEJ1ZmZlckZvckN1
cnJlbnRUaW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5t
bToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpQREZQbHVnaW4pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6Y3JlYXRlU2hhcmVhYmxlQml0bWFwKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkNocm9tZUNsaWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbToKKyAgICAgICAg
KFdlYktpdDo6Y29udmVydERyYWdJbWFnZVRvQml0bWFwKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWE6OnNl
dENvbG9yU3BhY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OnNuYXBzaG90T3B0aW9uc1RvQml0bWFwQ29uZmlndXJhdGlvbik6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhOjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYSk6CisgICAgICAgIChXZWJL
aXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpzZXRDb2xvclNwYWNlKToKKwogMjAy
MS0wNS0yNCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAg
IEFYOiBTZXR0aW5nczogSW5jcmVhc2UgY29udHJhc3QgaXNuJ3QgZGV0ZWN0ZWQgaW4gYnJvd3Nl
ciB1bnRpbCBhbiBhZGRpdGlvbmFsIHNldHRpbmcgaXMgYXBwbGllZApJbmRleDogU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dAkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsNyArMjAzLDYgQEAgU2hhcmVkL2lvcy9XZWJU
b3VjaEV2ZW50SU9TLmNwcAogCiBTaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0KIFNo
YXJlZC9tYWMvQ29kZVNpZ25pbmcubW0KLVNoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEubW0KIFNo
YXJlZC9tYWMvSGFuZ0RldGVjdGlvbkRpc2FibGVyTWFjLm1tCiBTaGFyZWQvbWFjL05hdGl2ZVdl
Ykdlc3R1cmVFdmVudE1hYy5tbQogU2hhcmVkL21hYy9OYXRpdmVXZWJLZXlib2FyZEV2ZW50TWFj
Lm1tCkluZGV4OiBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VC
dWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlSW1hZ2VCdWZmZXIuaAkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ0LDcgKzQ0LDcgQEAgY2xhc3MgUmVtb3RlSW1hZ2VCdWZmZXIgOiBwdWJsaWMgV2ViQ29yZQog
ICAgIHVzaW5nIEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpwdXRQaXhlbEJ1ZmZlcjsKIAogcHVi
bGljOgotICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNp
emUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNl
IGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kJiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgIHN0YXRp
YyBhdXRvIGNyZWF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNw
YWNlLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZCYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICB7CiAgICAgICAgIHJl
dHVybiBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6dGVtcGxhdGUgY3JlYXRlPFJlbW90ZUltYWdl
QnVmZmVyPihzaXplLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0LCBu
dWxscHRyLCByZW1vdGVSZW5kZXJpbmdCYWNrZW5kLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAJKHJldmlzaW9uIDI3Nzk3
OSkKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6ZGlkRmx1c2goRGkKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHk6OkRpZEZsdXNoKGZsdXNoSWRlbnRpZmllciwgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiB9CiAK
LXZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxv
YXRTaXplJiBsb2dpY2FsU2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBmbG9hdCBy
ZXNvbHV0aW9uU2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZv
cm1hdCBwaXhlbEZvcm1hdCwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y3JlYXRlSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5k
ZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQVNTRVJUKHJlbmRlcmluZ01vZGUgPT0gUmVuZGVy
aW5nTW9kZTo6QWNjZWxlcmF0ZWQgfHwgcmVuZGVyaW5nTW9kZSA9PSBSZW5kZXJpbmdNb2RlOjpV
bmFjY2VsZXJhdGVkKTsKQEAgLTQ5NSw2ICs0OTUsOCBAQCBPcHRpb25hbDxEaXNwbGF5TGlzdDo6
SXRlbUhhbmRsZT4gV0FSTl9VCiAgICAgICogU2VlIHRoZSBjb21tZW50IGF0IHRoZSB0b3Agb2Yg
RGlzcGxheUxpc3RJdGVtcy5oIGZvciB3aHkuICovCiAKICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAg
ICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6
CisgICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkJlZ2luQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKICAgICBjYXNl
IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aDoKICAgICAgICAgcmV0dXJuIGRl
Y29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6Q2xpcE91dFRvUGF0aD4oZGF0YSwgbGVuZ3RoLCBo
YW5kbGVMb2NhdGlvbik7CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBQYXRo
OgpAQCAtNTIxLDYgKzUyMyw4IEBAIE9wdGlvbmFsPERpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBX
QVJOX1UKICAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6RmlsbFJl
Y3RXaXRoUm91bmRlZEhvbGU+KGRhdGEsIGxlbmd0aCwgaGFuZGxlTG9jYXRpb24pOwogICAgIGNh
c2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3Q6CiAgICAgICAgIHJldHVy
biBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkZpbGxSb3VuZGVkUmVjdD4oZGF0YSwgbGVu
Z3RoLCBoYW5kbGVMb2NhdGlvbik7CisgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6Okdl
dFBpeGVsQnVmZmVyOgorICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0
OjpHZXRQaXhlbEJ1ZmZlcj4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7CiAgICAgY2Fz
ZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlB1dFBpeGVsQnVmZmVyOgogICAgICAgICByZXR1cm4g
ZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpQdXRQaXhlbEJ1ZmZlcj4oZGF0YSwgbGVuZ3Ro
LCBoYW5kbGVMb2NhdGlvbik7CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OlNldExp
bmVEYXNoOgpAQCAtNTQwLDcgKzU0NCw2IEBAIE9wdGlvbmFsPERpc3BsYXlMaXN0OjpJdGVtSGFu
ZGxlPiBXQVJOX1UKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcDoKICAgICBj
YXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcE91dDoKICAgICBjYXNlIERpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgogICAgIGNhc2UgRGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6CiAgICAgY2FzZSBEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgpAQCAtNTgxLDcgKzU4NCw2IEBAIE9wdGlv
bmFsPERpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1UKICAgICBjYXNlIERpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6U3Ryb2tlUmVjdDoKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
U3Ryb2tlTGluZToKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6VHJhbnNsYXRlOgot
ICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpHZXRQaXhlbEJ1ZmZlcjoKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAg
fQpJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCShyZXZpc2lvbiAyNzc5NzkpCisrKyBTb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCwxNCArNDQsMTggQEAKIAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisK
IG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiBjbGFzcyBEaXNwbGF5TGlzdDsKIGNsYXNzIEl0ZW07
CiB9CisKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIEZsb2F0U2l6ZTsKIGNs
YXNzIE5hdGl2ZUltYWdlOwotZW51bSBjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgOiB1aW50
OF90OworCiBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOworCiB9CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtMTIxLDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBkaWRSZWNl
aXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgVW5pcXVlUmVm
PElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKIAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHJlY2Vp
dmVkLgotICAgIHZvaWQgY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiBsb2dpY2FsU2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0
LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgY3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBsb2dpY2FsU2l6ZSwgV2ViQ29y
ZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBXZWJDb3JlOjpE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCwgV2ViQ29yZTo6UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIHdha2VVcEFuZEFwcGx5RGlzcGxh
eUxpc3QoY29uc3QgR1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHMmKTsKICAgICB2b2lk
IHVwZGF0ZVNoYXJlZE1lbW9yeUZvckdldFBpeGVsQnVmZmVyKHVpbnQzMl90IGJ5dGVDb3VudCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYpPiYm
KTsKICAgICB2b2lkIHNlbWFwaG9yZUZvckdldFBpeGVsQnVmZmVyKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgSVBDOjpTZW1hcGhvcmUmKT4mJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQ
cm94eS5jcHAJKHJldmlzaW9uIDI3Nzk3OSkKKysrIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
MywyOCArMTEzLDI4IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OnNldERhdGEK
ICAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZUNvdW50LCBpbWFnZURlY29kZXItPnNpemUoKSwg
aW1hZ2VEZWNvZGVyLT5oYXNUcmFjaygpLCBXVEZNb3ZlKGZyYW1lSW5mb3MpKTsKIH0KIAotdm9p
ZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoSW1h
Z2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBzaXplX3QgaW5kZXgsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8V1RGOjpNYWNoU2VuZFJpZ2h0PiYmLCBDb2xvclNwYWNlRGF0
YSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHk6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KEltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRp
Zmllciwgc2l6ZV90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFdURjo6
TWFjaFNlbmRSaWdodD4mJiwgT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNl
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQobV9pbWFnZURlY29kZXJz
LmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKICAgICBPcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+
IHNlbmRSaWdodDsKLSAgICBDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlRGF0YTsKKyAgICBPcHRp
b25hbDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CiAgICAgaWYg
KCFtX2ltYWdlRGVjb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpIHsKLSAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShzZW5kUmlnaHQpLCBXVEZNb3ZlKGNvbG9yU3BhY2VEYXRhKSk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc2VuZFJpZ2h0KSwgV1RGTW92ZShj
b2xvclNwYWNlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvIGZyYW1lSW1h
Z2UgPSBtX2ltYWdlRGVjb2RlcnMuZ2V0KGlkZW50aWZpZXIpLT5jcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChpbmRleCk7CiAgICAgaWYgKCFmcmFtZUltYWdlKSB7Ci0gICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUoc2VuZFJpZ2h0KSwgV1RGTW92ZShjb2xvclNwYWNlRGF0YSkpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHNlbmRSaWdodCksIFdURk1vdmUoY29sb3JT
cGFjZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGF1dG8gc3VyZmFjZSA9
IElPU3VyZmFjZTo6Y3JlYXRlRnJvbUltYWdlKGZyYW1lSW1hZ2UuZ2V0KCkpKSB7CiAgICAgICAg
IHNlbmRSaWdodCA9IHN1cmZhY2UtPmNyZWF0ZVNlbmRSaWdodCgpOwotICAgICAgICBjb2xvclNw
YWNlRGF0YS5jZ0NvbG9yU3BhY2UgPSBzdXJmYWNlLT5jb2xvclNwYWNlKCk7CisgICAgICAgIGNv
bG9yU3BhY2UgPSBzdXJmYWNlLT5jb2xvclNwYWNlKCk7CiAgICAgfQogCi0gICAgY29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZShzZW5kUmlnaHQpLCBXVEZNb3ZlKGNvbG9yU3BhY2VEYXRhKSk7Cisg
ICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShzZW5kUmlnaHQpLCBXVEZNb3ZlKGNvbG9yU3Bh
Y2UpKTsKIH0KIAogdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eTo6Y2xlYXJGcmFtZUJ1
ZmZlckNhY2hlKEltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllciwgc2l6ZV90IGluZGV4
KQpJbmRleDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2Rl
ckFWRlByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5LmgJKHJldmlzaW9uIDI3Nzk3OSkKKysrIFNvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw2IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
ICYmIEhBVkUoQVZBU1NFVFJFQURFUikKIAotI2luY2x1ZGUgIkNvbG9yU3BhY2VEYXRhLmgiCiAj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oPgpAQCAtNTcsNyArNTYsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGVsZXRlRGVjb2RlcihXZWJDb3JlOjpJbWFnZURlY29kZXJJ
ZGVudGlmaWVyKTsKICAgICB2b2lkIHNldEV4cGVjdGVkQ29udGVudFNpemUoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVySWRlbnRpZmllciwgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUpOwogICAg
IHZvaWQgc2V0RGF0YShXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlmaWVyLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmLCBib29sIGFsbERhdGFSZWNlaXZlZCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChzaXplX3QgZnJhbWVDb3VudCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSwgYm9v
bCBoYXNUcmFjaywgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6RnJhbWVJ
bmZvPj4mJik+JiYpOwotICAgIHZvaWQgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoV2ViQ29yZTo6
SW1hZ2VEZWNvZGVySWRlbnRpZmllciwgc2l6ZV90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKE9wdGlvbmFsPFdURjo6TWFjaFNlbmRSaWdodD4mJiwgQ29sb3JTcGFjZURhdGEmJik+JiYp
OworICAgIHZvaWQgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
SWRlbnRpZmllciwgc2l6ZV90IGluZGV4LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PFdURjo6TWFjaFNlbmRSaWdodD4mJiwgT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xv
clNwYWNlPiYmKT4mJik7CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoV2ViQ29yZTo6
SW1hZ2VEZWNvZGVySWRlbnRpZmllciwgc2l6ZV90IGluZGV4KTsKIAogICAgIHZvaWQgZW5jb2Rl
ZERhdGFTdGF0dXNDaGFuZ2VkKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIpOwpJbmRl
eDogU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRlBy
b3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjc3
OTc5KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUltYWdlRGVjb2Rl
ckFWRlByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIG1l
c3NhZ2VzIC0+IFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5IE4KICAgICBEZWxldGVEZWNvZGVy
KFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBTZXRFeHBl
Y3RlZENvbnRlbnRTaXplKFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudFNpemUpCiAgICAgU2V0RGF0YShXZWJDb3JlOjpJ
bWFnZURlY29kZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJl
ZmVyZW5jZSBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkgLT4gKHNpemVfdCBmcmFtZUNvdW50
LCBXZWJDb3JlOjpJbnRTaXplIHNpemUsIGJvb2wgaGFzVHJhY2ssIE9wdGlvbmFsPFZlY3RvcjxX
ZWJDb3JlOjpJbWFnZURlY29kZXI6OkZyYW1lSW5mbz4+IGZyYW1lSW5mb3MpIFN5bmNocm9ub3Vz
Ci0gICAgQ3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBzaXplX3QgaW5kZXgpIC0+IChPcHRpb25hbDxNYWNoU2VuZFJpZ2h0
PiBzZW5kUmlnaHQsIHN0cnVjdCBXZWJLaXQ6OkNvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2UpIFN5
bmNocm9ub3VzCisgICAgQ3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoV2ViQ29yZTo6SW1hZ2VEZWNv
ZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBzaXplX3QgaW5kZXgpIC0+IChPcHRpb25hbDxNYWNo
U2VuZFJpZ2h0PiBzZW5kUmlnaHQsIE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JT
cGFjZT4gY29sb3JTcGFjZSkgU3luY2hyb25vdXMKICAgICBDbGVhckZyYW1lQnVmZmVyQ2FjaGUo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBzaXplX3QgaW5kZXgp
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNwcAkocmV2
aXNpb24gMjc3OTc5KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzQsMTAgKzc0LDcgQEAgdm9pZCBTaGFyZWFibGVCaXRtYXA6
OkhhbmRsZTo6Y2xlYXIoKQogCiB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbjo6
ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IGlz
T3BhcXVlOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGVuY29kZXIgPDwgY29sb3JTcGFjZTsK
LSNlbmRpZgorICAgIGVuY29kZXIgPDwgY29sb3JTcGFjZSA8PCBpc09wYXF1ZTsKICNpZiBVU0Uo
RElSRUNUMkQpCiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGU6OmVuY29kZUhhbmRsZShlbmNvZGVy
LCBzaGFyZWRSZXNvdXJjZUhhbmRsZSk7CiAKQEAgLTg4LDIxICs4NSwyOCBAQCB2b2lkIFNoYXJl
YWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbjo6ZW5jCiAjZW5kaWYKIH0KIAotYm9vbCBTaGFyZWFi
bGVCaXRtYXA6OkNvbmZpZ3VyYXRpb246OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIENv
bmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCitib29sIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmln
dXJhdGlvbjo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgQ29uZmlndXJhdGlvbiYgcmVz
dWx0KQogewotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29uZmlndXJhdGlvbi5pc09wYXF1ZSkp
CisgICAgT3B0aW9uYWw8T3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPj4g
Y29sb3JTcGFjZTsKKyAgICBkZWNvZGVyID4+IGNvbG9yU3BhY2U7CisgICAgaWYgKCFjb2xvclNw
YWNlKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgaWYg
KCFkZWNvZGVyLmRlY29kZShjb25maWd1cmF0aW9uLmNvbG9yU3BhY2UpKQorCisgICAgT3B0aW9u
YWw8Ym9vbD4gaXNPcGFxdWU7CisgICAgZGVjb2RlciA+PiBpc09wYXF1ZTsKKyAgICBpZiAoIWlz
T3BhcXVlKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKKworICAgIHJlc3VsdCA9IENv
bmZpZ3VyYXRpb24geyBXVEZNb3ZlKCpjb2xvclNwYWNlKSwgKmlzT3BhcXVlIH07CisKICNpZiBV
U0UoRElSRUNUMkQpCiAgICAgYXV0byBwcm9jZXNzU3BlY2lmaWNIYW5kbGUgPSBTaGFyZWRNZW1v
cnk6OkhhbmRsZTo6ZGVjb2RlSGFuZGxlKGRlY29kZXIpOwogICAgIGlmICghcHJvY2Vzc1NwZWNp
ZmljSGFuZGxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBjb25maWd1cmF0aW9uLnNo
YXJlZFJlc291cmNlSGFuZGxlID0gcHJvY2Vzc1NwZWNpZmljSGFuZGxlLnZhbHVlKCk7CisgICAg
cmVzdWx0LnNoYXJlZFJlc291cmNlSGFuZGxlID0gcHJvY2Vzc1NwZWNpZmljSGFuZGxlLnZhbHVl
KCk7CiAjZW5kaWYKKwogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9TaGFyZWFibGVCaXRtYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1No
YXJlZC9TaGFyZWFibGVCaXRtYXAuaAkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNlL1dlYktp
dC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE1ICsyNiwx
MiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTaGFyZWRNZW1vcnkuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50
UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1JbWFnZS5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIAotI2lm
IFVTRShDRykKLSNpbmNsdWRlICJDb2xvclNwYWNlRGF0YS5oIgotI2VuZGlmCi0KICNpZiBVU0Uo
RElSRUNUMkQpCiBpbnRlcmZhY2UgSUQyRDFCaXRtYXA7CiBpbnRlcmZhY2UgSUQyRDFSZW5kZXJU
YXJnZXQ7CkBAIC01NSwxMCArNTIsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFNoYXJl
YWJsZUJpdG1hcCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTaGFyZWFibGVCaXRtYXA+
IHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgQ29uZmlndXJhdGlvbiB7CisgICAgICAgIE9wdGlvbmFs
PFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29sb3JTcGFjZTsKICAgICAgICAgYm9v
bCBpc09wYXF1ZSB7IGZhbHNlIH07Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIENvbG9y
U3BhY2VEYXRhIGNvbG9yU3BhY2U7Ci0jZW5kaWYKICNpZiBVU0UoRElSRUNUMkQpCiAgICAgICAg
IG11dGFibGUgSEFORExFIHNoYXJlZFJlc291cmNlSGFuZGxlIHsgbnVsbHB0ciB9OwogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAko
cmV2aXNpb24gMjc3OTc5KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDggQEAKICNlbmRpZgogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnNDRi5oIgorCiBuYW1lc3Bh
Y2UgV1RGIHsKIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjc3
OTc5KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNSw4ICszMjUsMTEgQEAgT3B0aW9uYWw8V2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycz4gV2ViUAogICAgIHBhcmFtZXRlcnMuaGFzUmVzb3VyY2VMb2FkQ2xp
ZW50ID0gV1RGTW92ZSgqaGFzUmVzb3VyY2VMb2FkQ2xpZW50KTsKIAogI2lmIFBMQVRGT1JNKE1B
QykKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuY29sb3JTcGFjZSkpCisgICAg
T3B0aW9uYWw8T3B0aW9uYWw8RGVzdGluYXRpb25Db2xvclNwYWNlPj4gY29sb3JTcGFjZTsKKyAg
ICBkZWNvZGVyID4+IGNvbG9yU3BhY2U7CisgICAgaWYgKCFjb2xvclNwYWNlKQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHBhcmFtZXRlcnMuY29sb3JTcGFjZSA9IFdURk1vdmUo
KmNvbG9yU3BhY2UpOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy51c2VTeXN0
ZW1BcHBlYXJhbmNlKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICNlbmRpZgpJbmRl
eDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
aAkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVk
ZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWN0aXZpdHlTdGF0
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Rlc3Rp
bmF0aW9uQ29sb3JTcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9MYXlvdXRNaWxlc3Rv
bmUuaD4KQEAgLTQ5LDEwICs1MCw2IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKE1BQykKLSNpbmNsdWRl
ICJDb2xvclNwYWNlRGF0YS5oIgotI2VuZGlmCi0KICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFO
SUZFU1QpCiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbk1hbmlmZXN0Lmg+CiAjZW5kaWYK
QEAgLTE0Niw3ICsxNDMsNyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAg
ICAgYm9vbCB1c2VFbGV2YXRlZFVzZXJJbnRlcmZhY2VMZXZlbCB7IGZhbHNlIH07CiAKICNpZiBQ
TEFURk9STShNQUMpCi0gICAgQ29sb3JTcGFjZURhdGEgY29sb3JTcGFjZTsKKyAgICBPcHRpb25h
bDxXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7CiAgICAgYm9vbCB1
c2VTeXN0ZW1BcHBlYXJhbmNlOwogI2VuZGlmCiAjaWYgRU5BQkxFKE1FVEFfVklFV1BPUlQpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCShyZXZpc2lvbiAyNzc5NzkpCisrKyBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxMiwxOSArMjEyLDE5IEBAIHZvaWQgUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OnN3YXBUb1ZhbGkKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNh
c2UgVHlwZTo6SU9TdXJmYWNlOgogICAgICAgICBpZiAoc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5n
KQotICAgICAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IG1fbGF5ZXItPmNvbnRl
eHQoKS0+ZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1hZ2VCdWZm
ZXIobV9zaXplLCBXZWJDb3JlOjpSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCwgbV9zY2FsZSwg
V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBwaXhlbEZvcm1hdCgpKTsKKyAg
ICAgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBtX2xheWVyLT5jb250ZXh0KCkt
PmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpLmNyZWF0ZUltYWdlQnVmZmVyKG1f
c2l6ZSwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQsIG1fc2NhbGUsIFdlYkNv
cmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBwaXhlbEZvcm1hdCgpKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IFdlYkNvcmU6
OkNvbmNyZXRlSW1hZ2VCdWZmZXI8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBl
ZEJhY2tlbmQ+OjpjcmVhdGUobV9zaXplLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IsIHBpeGVsRm9ybWF0KCksIG51bGxwdHIpOworICAgICAgICAgICAgbV9m
cm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8QWNj
ZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZU1hcHBlZEJhY2tlbmQ+OjpjcmVhdGUobV9zaXpl
LCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgcGl4ZWxG
b3JtYXQoKSwgbnVsbHB0cik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVHlwZTo6Qml0bWFw
OgogICAgICAgICBpZiAoc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nKQotICAgICAgICAgICAgbV9m
cm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IG1fbGF5ZXItPmNvbnRleHQoKS0+ZW5zdXJlUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1hZ2VCdWZmZXIobV9zaXplLCBXZWJDb3Jl
OjpSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IsIHBpeGVsRm9ybWF0KCkpOworICAgICAgICAgICAgbV9mcm9u
dEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IG1fbGF5ZXItPmNvbnRleHQoKS0+ZW5zdXJlUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1hZ2VCdWZmZXIobV9zaXplLCBXZWJDb3JlOjpS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgcGl4ZWxGb3JtYXQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0ZUltYWdl
QnVmZmVyPFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQ+OjpjcmVhdGUo
bV9zaXplLCBtX3NjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIHBp
eGVsRm9ybWF0KCksIG51bGxwdHIpOworICAgICAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1
ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8VW5hY2NlbGVyYXRlZEltYWdlQnVm
ZmVyU2hhcmVhYmxlQmFja2VuZD46OmNyZWF0ZShtX3NpemUsIG1fc2NhbGUsIFdlYkNvcmU6OkRl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBwaXhlbEZvcm1hdCgpLCBudWxscHRyKTsKICAg
ICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKENHX0RJU1BMQVlfTElTVF9CQUNLRURfSU1BR0VfQlVG
RkVSKQogICAgIGNhc2UgVHlwZTo6Q0dEaXNwbGF5TGlzdDoKLSAgICAgICAgbV9mcm9udEJ1ZmZl
ci5pbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNyZXRlSW1hZ2VCdWZmZXI8Q0dEaXNwbGF5TGlz
dEltYWdlQnVmZmVyQmFja2VuZD46OmNyZWF0ZShtX3NpemUsIG1fc2NhbGUsIFdlYkNvcmU6OkRl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0cik7CisgICAg
ICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVm
ZmVyPENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQ+OjpjcmVhdGUobV9zaXplLCBtX3Nj
YWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgcGl4ZWxGb3JtYXQo
KSwgbnVsbHB0cik7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgfQpAQCAtMzk3LDcgKzM5
Nyw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmFwcGx5QmFja2kKICAgICAgICAg
ICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6SU9TdXJmYWNlKTsKICAgICAgICAgICAgIHN3aXRj
aCAoY29udGVudHNUeXBlKSB7CiAgICAgICAgICAgICBjYXNlIExheWVyQ29udGVudHNUeXBlOjpJ
T1N1cmZhY2U6IHsKLSAgICAgICAgICAgICAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1
cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShtYWNoU2VuZFJpZ2h0KSwgV2ViQ29y
ZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgICAgICAgICAgICAgYXV0byBzdXJmYWNlID0g
V2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUobWFjaFNlbmRS
aWdodCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICAgICAg
ICAgICAgICBsYXllci5jb250ZW50cyA9IHN1cmZhY2UgPyBzdXJmYWNlLT5hc0xheWVyQ29udGVu
dHMoKSA6IG5pbDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAJKHJldmlz
aW9uIDI3Nzk3OSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENH
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKICAgICAKIHN0YXRpYyBDR0NvbG9yU3BhY2VSZWYgY29sb3JTcGFjZShjb25zdCBTaGFy
ZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiB7Ci0gICAgcmV0dXJu
IGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZS5jZ0NvbG9yU3BhY2UuZ2V0KCkgPzogc1JHQkNvbG9y
U3BhY2VSZWYoKTsKKyAgICByZXR1cm4gY29uZmlndXJhdGlvbi5jb2xvclNwYWNlID8gY29uZmln
dXJhdGlvbi5jb2xvclNwYWNlLT5wbGF0Zm9ybUNvbG9yU3BhY2UoKSA6IFdlYkNvcmU6OnNSR0JD
b2xvclNwYWNlUmVmKCk7CiB9CiAKIHN0YXRpYyBib29sIHdhbnRzRXh0ZW5kZWRSYW5nZShjb25z
dCBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEuaAkocmV2aXNpb24gMjc3OTc5
KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvbG9yU3BhY2VEYXRhLmgJKG5vbmV4aXN0
ZW50KQpAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDb2xvclNwYWNlRGF0
YV9oCi0jZGVmaW5lIENvbG9yU3BhY2VEYXRhX2gKLQotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KLQotbmFtZXNwYWNlIElQQyB7Ci1jbGFzcyBEZWNvZGVyOwotY2xhc3MgRW5jb2RlcjsKLX0K
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBDb2xvclNwYWNlRGF0YSB7Ci0gICAgdm9p
ZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7Ci0gICAgc3RhdGljIFdBUk5fVU5VU0VEX1JF
VFVSTiBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBDb2xvclNwYWNlRGF0YSYpOwotCi0gICAg
UmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY2dDb2xvclNwYWNlOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBDb2xvclNwYWNlRGF0YV9oCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL0NvbG9yU3BhY2VEYXRhLm1tCShyZXZpc2lvbiAyNzc5NzkpCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29sb3JTcGFjZURhdGEubW0JKG5vbmV4aXN0ZW50
KQpAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1w
b3J0ICJDb2xvclNwYWNlRGF0YS5oIgotCi0jaW1wb3J0ICJBcmd1bWVudENvZGVyc0NGLmgiCi0j
aW1wb3J0ICJEZWNvZGVyLmgiCi0jaW1wb3J0ICJFbmNvZGVyLmgiCi0jaW1wb3J0IDx3dGYvRW51
bVRyYWl0cy5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBDb2xvclNwYWNlRGF0YTo6
ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IHN0
YXRpY19jYXN0PGJvb2w+KGNnQ29sb3JTcGFjZSk7Ci0gICAgaWYgKGNnQ29sb3JTcGFjZSkKLSAg
ICAgICAgZW5jb2RlciA8PCBjZ0NvbG9yU3BhY2U7Ci19Ci0KLWJvb2wgQ29sb3JTcGFjZURhdGE6
OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIENvbG9yU3BhY2VEYXRhJiBjb2xvclNwYWNl
RGF0YSkKLXsKLSAgICBib29sIGhhc0NHQ29sb3JTcGFjZTsKLSAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGhhc0NHQ29sb3JTcGFjZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICgh
aGFzQ0dDb2xvclNwYWNlKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIFJldGFpblB0cjxD
R0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb2xv
clNwYWNlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIGNvbG9yU3BhY2VEYXRh
LmNnQ29sb3JTcGFjZSA9IFdURk1vdmUoY29sb3JTcGFjZSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaAkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5Myw3IEBAIGNsYXNzIFNlY3VyaXR5
T3JpZ2luOwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29sb3I7CiBjbGFzcyBDdXJzb3I7
CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7CiBjbGFzcyBGbG9hdFF1YWQ7CiBjbGFzcyBG
bG9hdFJlY3Q7CiBjbGFzcyBSZWdpb247CkBAIC0xODgsMTAgKzE4OSw2IEBAIGNsYXNzIFdlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQ7CiBjbGFzcyBJbnN0YWxsTWlzc2luZ01lZGlhUGx1
Z2luc1Blcm1pc3Npb25SZXF1ZXN0OwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShDT0NPQSkKLXN0
cnVjdCBDb2xvclNwYWNlRGF0YTsKLSNlbmRpZgotCiAjaWYgSEFWRShWSVNJQklMSVRZX1BST1BB
R0FUSU9OX1ZJRVcpCiB1c2luZyBMYXllckhvc3RpbmdDb250ZXh0SUQgPSB1aW50MzJfdDsKICNl
bmRpZgpAQCAtNDI2LDcgKzQyMyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgQ0dSZWN0IGJv
dW5kc09mTGF5ZXJJbkxheWVyQmFja2VkV2luZG93Q29vcmRpbmF0ZXMoQ0FMYXllciAqKSBjb25z
dCA9IDA7CiAKLSAgICB2aXJ0dWFsIENvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2UoKSA9IDA7Cisg
ICAgdmlydHVhbCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpID0g
MDsKIAogICAgIHZpcnR1YWwgdm9pZCBzaG93UGxhdGZvcm1Db250ZXh0TWVudShOU01lbnUgKiwg
V2ViQ29yZTo6SW50UG9pbnQpID0gMDsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgJKHJldmlzaW9uIDI3Nzk3OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsNiArMTk4LDcgQEAgbmFtZXNw
YWNlIEFQSSB7CiBjbGFzcyBBdHRhY2htZW50OwogY2xhc3MgQ29udGVudFdvcmxkOwogY2xhc3Mg
Q29udGV4dE1lbnVDbGllbnQ7CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U7CiBjbGFzcyBF
cnJvcjsKIGNsYXNzIEZpbmRDbGllbnQ7CiBjbGFzcyBGaW5kTWF0Y2hlc0NsaWVudDsKQEAgLTM3
Nyw3ICszNzgsNiBAQCBjbGFzcyBXZWJXaGVlbEV2ZW50Q29hbGVzY2VyOwogY2xhc3MgV2Vic2l0
ZURhdGFTdG9yZTsKIAogc3RydWN0IEFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOwotc3Ry
dWN0IENvbG9yU3BhY2VEYXRhOwogc3RydWN0IERhdGFEZXRlY3Rpb25SZXN1bHQ7CiBzdHJ1Y3Qg
RG9jdW1lbnRFZGl0aW5nQ29udGV4dDsKIHN0cnVjdCBEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVx
dWVzdDsKQEAgLTExMzIsNyArMTEzMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1ha2VGaXJzdFJl
c3BvbmRlcigpOwogICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRl
cigpOwogCi0gICAgQ29sb3JTcGFjZURhdGEgY29sb3JTcGFjZSgpOworICAgIFdlYkNvcmU6OkRl
c3RpbmF0aW9uQ29sb3JTcGFjZSBjb2xvclNwYWNlKCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShT
RVJWSUNFX0NPTlRST0xTKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9X
S1dlYlZpZXdJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2lvcy9XS1dlYlZpZXdJT1MubW0JKHJldmlzaW9uIDI3Nzk3OSkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDE0
LDcgKzEwMTQsNyBAQCAtIChSZWZQdHI8V2ViS2l0OjpWaWV3U25hcHNob3Q+KV90YWtlVmllCiAj
ZWxzZQogICAgIFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0IHNuYXBzaG90Rm9ybWF0ID0gV2Vi
Q29yZTo6SU9TdXJmYWNlOjpGb3JtYXQ6OkJHUkE7CiAjZW5kaWYKLSAgICBhdXRvIHN1cmZhY2Ug
PSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZShXZWJDb3JlOjpleHBhbmRlZEludFNpemUoc25h
cHNob3RTaXplKSwgV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSwgc25hcHNob3RGb3JtYXQp
OworICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlKFdlYkNvcmU6
OmV4cGFuZGVkSW50U2l6ZShzbmFwc2hvdFNpemUpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSwgc25hcHNob3RGb3JtYXQpOwogICAgIGlmICghc3VyZmFjZSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgQ0FSZW5kZXJTZXJ2ZXJSZW5kZXJMYXllcldpdGhUcmFu
c2Zvcm0oTUFDSF9QT1JUX05VTEwsIHNlbGYubGF5ZXIuY29udGV4dC5jb250ZXh0SWQsIHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KHNlbGYubGF5ZXIpLCBzdXJmYWNlLT5zdXJmYWNlKCksIDAs
IDAsICZ0cmFuc2Zvcm0pOwpAQCAtMzA3OSw3ICszMDc5LDcgQEAgLSAodm9pZClfc25hcHNob3RS
ZWN0OihDR1JlY3QpcmVjdEluVmlldwogICAgIE5TU3RyaW5nICpkaXNwbGF5TmFtZSA9IHNlbGYu
d2luZG93LnNjcmVlbi5kaXNwbGF5Q29uZmlndXJhdGlvbi5uYW1lOwogICAgIGlmIChkaXNwbGF5
TmFtZSAmJiAhc2VsZi53aW5kb3cuaGlkZGVuKSB7CiAgICAgICAgIFRyYWNlU2NvcGUgc25hcHNo
b3RTY29wZShSZW5kZXJTZXJ2ZXJTbmFwc2hvdFN0YXJ0LCBSZW5kZXJTZXJ2ZXJTbmFwc2hvdEVu
ZCk7Ci0gICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlKFdl
YkNvcmU6OmV4cGFuZGVkSW50U2l6ZShXZWJDb3JlOjpGbG9hdFNpemUoaW1hZ2VTaXplKSksIFdl
YkNvcmU6OnNSR0JDb2xvclNwYWNlUmVmKCkpOworICAgICAgICBhdXRvIHN1cmZhY2UgPSBXZWJD
b3JlOjpJT1N1cmZhY2U6OmNyZWF0ZShXZWJDb3JlOjpleHBhbmRlZEludFNpemUoV2ViQ29yZTo6
RmxvYXRTaXplKGltYWdlU2l6ZSkpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSk7CiAgICAgICAgIGlmICghc3VyZmFjZSkgewogICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIobnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgJKHJldmlzaW9uIDI3Nzk3OSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTk0LDYgKzk0LDcgQEAgY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247CiB9CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFjZTsKIGNsYXNzIEludFBvaW50
Owogc3RydWN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkw7CiAKQEAgLTE2OCw3ICsxNjksNiBAQCBj
bGFzcyBXZWJGcmFtZVByb3h5OwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUHJvY2Vz
c1Bvb2w7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7Ci1zdHJ1Y3QgQ29sb3JTcGFjZURhdGE7CiBz
dHJ1Y3QgV2ViSGl0VGVzdFJlc3VsdERhdGE7CiAKIGVudW0gY2xhc3MgQ29udGludWVVbnNhZmVM
b2FkIDogYm9vbDsKQEAgLTMxMyw3ICszMTMsNyBAQCBwdWJsaWM6CiAKICAgICBOU1ZpZXcgKmhp
dFRlc3QoQ0dQb2ludCk7CiAKLSAgICBDb2xvclNwYWNlRGF0YSBjb2xvclNwYWNlKCk7CisgICAg
V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UoKTsKIAogICAgIHZvaWQg
c2V0VW5kZXJsYXlDb2xvcihOU0NvbG9yICopOwogICAgIE5TQ29sb3IgKnVuZGVybGF5Q29sb3Io
KSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCShyZXZpc2lvbiAyNzc5NzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNiBAQAogI2ltcG9y
dCAiQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCIKICNpbXBvcnQgIkFQSU5hdmlnYXRp
b24uaCIKICNpbXBvcnQgIkFwcEtpdFNQSS5oIgotI2ltcG9ydCAiQ29sb3JTcGFjZURhdGEuaCIK
ICNpbXBvcnQgIkNvcmVUZXh0SGVscGVycy5oIgogI2ltcG9ydCAiRm9udEluZm8uaCIKICNpbXBv
cnQgIkZ1bGxzY3JlZW5DbGllbnQuaCIKQEAgLTkwLDYgKzg5LDcgQEAKICNpbXBvcnQgPFdlYkNv
cmUvQ29sb3JNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JTZXJpYWxpemF0aW9uLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0NvbXBvc2l0aW9uSGlnaGxpZ2h0Lmg+CisjaW1wb3J0IDxXZWJDb3Jl
L0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5TG9v
a3VwLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Ry
YWdJdGVtLmg+CkBAIC0yNTAwLDIxICsyNTAwLDI4IEBAIHZvaWQgV2ViVmlld0ltcGw6OnBvc3RG
YWtlTW91c2VNb3ZlZEV2ZW4KICAgICBtX3BhZ2UtPmhhbmRsZU1vdXNlRXZlbnQod2ViRXZlbnQp
OwogfQogCi1Db2xvclNwYWNlRGF0YSBXZWJWaWV3SW1wbDo6Y29sb3JTcGFjZSgpCitXZWJDb3Jl
OjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgV2ViVmlld0ltcGw6OmNvbG9yU3BhY2UoKQogewogICAg
IGlmICghbV9jb2xvclNwYWNlKSB7Ci0gICAgICAgIGlmIChtX3RhcmdldFdpbmRvd0Zvck1vdmVQ
cmVwYXJhdGlvbikKLSAgICAgICAgICAgIG1fY29sb3JTcGFjZSA9IFttX3RhcmdldFdpbmRvd0Zv
ck1vdmVQcmVwYXJhdGlvbiBjb2xvclNwYWNlXTsKLSAgICAgICAgZWxzZSBpZiAoTlNXaW5kb3cg
KndpbmRvdyA9IFttX3ZpZXcgd2luZG93XSkKLSAgICAgICAgICAgIG1fY29sb3JTcGFjZSA9IHdp
bmRvdy5jb2xvclNwYWNlOwotICAgICAgICBlbHNlCisgICAgICAgIG1fY29sb3JTcGFjZSA9IFsm
XSAoKSAtPiBOU0NvbG9yU3BhY2UgKiB7CisgICAgICAgICAgICBpZiAobV90YXJnZXRXaW5kb3dG
b3JNb3ZlUHJlcGFyYXRpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIFttX3RhcmdldFdpbmRv
d0Zvck1vdmVQcmVwYXJhdGlvbiBjb2xvclNwYWNlXTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgaWYgKE5TV2luZG93ICp3aW5kb3cgPSBbbV92aWV3IHdpbmRvd10pCisgICAgICAgICAgICAg
ICAgcmV0dXJuIFt3aW5kb3cgY29sb3JTcGFjZV07CisKKyAgICAgICAgICAgIHJldHVybiBuaWw7
CisgICAgICAgIH0oKTsKKworICAgICAgICBpZiAoIW1fY29sb3JTcGFjZSkKICAgICAgICAgICAg
IG1fY29sb3JTcGFjZSA9IFtOU1NjcmVlbiBtYWluU2NyZWVuXS5jb2xvclNwYWNlOworICAgIAor
ICAgICAgICBpZiAoIW1fY29sb3JTcGFjZSkKKyAgICAgICAgICAgIG1fY29sb3JTcGFjZSA9IFtO
U0NvbG9yU3BhY2Ugc1JHQkNvbG9yU3BhY2VdOwogICAgIH0KIAotICAgIENvbG9yU3BhY2VEYXRh
IGNvbG9yU3BhY2VEYXRhOwotICAgIGNvbG9yU3BhY2VEYXRhLmNnQ29sb3JTcGFjZSA9IFttX2Nv
bG9yU3BhY2UgQ0dDb2xvclNwYWNlXTsKLQotICAgIHJldHVybiBjb2xvclNwYWNlRGF0YTsKKyAg
ICBBU1NFUlQobV9jb2xvclNwYWNlKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RGVzdGluYXRpb25D
b2xvclNwYWNlIHsgW21fY29sb3JTcGFjZSBDR0NvbG9yU3BhY2VdIH07CiB9CiAKIHZvaWQgV2Vi
Vmlld0ltcGw6OnNldFVuZGVybGF5Q29sb3IoTlNDb2xvciAqdW5kZXJsYXlDb2xvcikKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVI
b3N0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCShyZXZpc2lvbiAyNzc5NzkpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2ltcG9ydCAiV2ViUGFnZVByb3h5Lmgi
CiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6
Q29yZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbXBv
cnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KICNpbXBvcnQgPFdlYkNvcmUvSU9TdXJm
YWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtTGF5ZXIuaD4KQEAgLTMxNyw3ICszMTgs
NyBAQCBzdGF0aWMgdm9pZCByZWN1cnNpdmVseU1hcElPU3VyZmFjZUJhY2tpCiB7CiAgICAgaWYg
KGxheWVyLmNvbnRlbnRzICYmIENGR2V0VHlwZUlEKChfX2JyaWRnZSBDRlR5cGVSZWYpbGF5ZXIu
Y29udGVudHMpID09IENBTWFjaFBvcnRHZXRUeXBlSUQoKSkgewogICAgICAgICBNYWNoU2VuZFJp
Z2h0IHBvcnQgPSBNYWNoU2VuZFJpZ2h0OjpjcmVhdGUoQ0FNYWNoUG9ydEdldFBvcnQoKF9fYnJp
ZGdlIENBTWFjaFBvcnRSZWYpbGF5ZXIuY29udGVudHMpKTsKLSAgICAgICAgYXV0byBzdXJmYWNl
ID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUocG9ydCks
IHNSR0JDb2xvclNwYWNlUmVmKCkpOworICAgICAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJ
T1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShwb3J0KSwgV2ViQ29yZTo6RGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwogICAgICAgICBsYXllci5jb250ZW50cyA9IHN1
cmZhY2UgPyBzdXJmYWNlLT5hc0xheWVyQ29udGVudHMoKSA6IG5pbDsKICAgICB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCShy
ZXZpc2lvbiAyNzc5NzkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGxNYWMuaAkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgaXNWaWV3SW5XaW5kb3coKSBvdmVycmlkZTsKICAgICBib29sIGlzVmlzdWFsbHlJZGxl
KCkgb3ZlcnJpZGU7CiAgICAgTGF5ZXJIb3N0aW5nTW9kZSB2aWV3TGF5ZXJIb3N0aW5nTW9kZSgp
IG92ZXJyaWRlOwotICAgIENvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2UoKSBvdmVycmlkZTsKKyAg
ICBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc2V0UmVtb3RlTGF5ZXJUcmVlUm9vdE5vZGUoUmVtb3RlTGF5ZXJUcmVlTm9kZSop
IG92ZXJyaWRlOwogICAgIENBTGF5ZXIgKmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIo
KSBjb25zdCBvdmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw3ICszMCw2IEBACiAKICNpbXBvcnQgIkFQSUhpdFRlc3RSZXN1bHQuaCIKICNpbXBvcnQg
IkFwcEtpdFNQSS5oIgotI2ltcG9ydCAiQ29sb3JTcGFjZURhdGEuaCIKICNpbXBvcnQgIkRhdGFS
ZWZlcmVuY2UuaCIKICNpbXBvcnQgIkRvd25sb2FkUHJveHkuaCIKICNpbXBvcnQgIkRyYXdpbmdB
cmVhUHJveHkuaCIKQEAgLTY2LDYgKzY1LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQml0bWFwSW1h
Z2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JNYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ3Vy
c29yLmg+CisjaW1wb3J0IDxXZWJDb3JlL0Rlc3RpbmF0aW9uQ29sb3JTcGFjZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9EaWN0aW9uYXJ5TG9va3VwLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdJdGVt
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgpAQCAtMjQ0LDcgKzI0NCw3IEBAIHZv
aWQgUGFnZUNsaWVudEltcGw6OnZpZXdXaWxsTW92ZVRvQW5vdGgKICAgICBjbGVhckFsbEVkaXRD
b21tYW5kcygpOwogfQogCi1Db2xvclNwYWNlRGF0YSBQYWdlQ2xpZW50SW1wbDo6Y29sb3JTcGFj
ZSgpCitXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UgUGFnZUNsaWVudEltcGw6OmNvbG9y
U3BhY2UoKQogewogICAgIHJldHVybiBtX2ltcGwtPmNvbG9yU3BhY2UoKTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVBy
b3h5Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCShyZXZpc2lvbiAyNzc5NzkpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94
eS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCiAKLSNpbXBvcnQgIkNvbG9yU3BhY2VEYXRhLmgiCiAjaW1wb3J0ICJEcmF3aW5n
QXJlYU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCIKICNp
bXBvcnQgIkxheWVyVHJlZUNvbnRleHQuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjksNyArMjksNiBAQAogI2lmIFBMQVRGT1JNKE1BQykKIAogI2ltcG9ydCAiQVBJVUlDbGll
bnQuaCIKLSNpbXBvcnQgIkNvbG9yU3BhY2VEYXRhLmgiCiAjaW1wb3J0ICJDb25uZWN0aW9uLmgi
CiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJFZGl0b3JTdGF0ZS5oIgpAQCAt
NTIsNiArNTEsNyBAQAogI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXNLZXlzLmgiCiAjaW1wb3J0ICJX
ZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgPFdlYkNvcmUvQXR0cmlidXRlZFN0cmluZy5oPgor
I2ltcG9ydCA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNv
cmUvRGljdGlvbmFyeUxvb2t1cC5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnSXRlbS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+CkBAIC0zNDQsNyArMzQ0LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmFzc2lzdGl2ZVRlY2hub2xvZ3lNYQogICAgIHBhZ2VDbGllbnQoKS5hc3Np
c3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCk7CiB9CiAKLUNvbG9yU3BhY2VEYXRh
IFdlYlBhZ2VQcm94eTo6Y29sb3JTcGFjZSgpCitXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UgV2ViUGFnZVByb3h5Ojpjb2xvclNwYWNlKCkKIHsKICAgICByZXR1cm4gcGFnZUNsaWVudCgp
LmNvbG9yU3BhY2UoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjYzNCw4
ICsyNjM0LDYgQEAKIAkJMUEyNTZFMzYxOEExQTc4ODAwNkZCOTIyIC8qIFdLTmF2aWdhdGlvbkFj
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS05hdmlnYXRpb25BY3Rp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEyNTZFMzkxOEExQTdERjAwNkZC
OTIyIC8qIFdLTmF2aWdhdGlvbkFjdGlvbkludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLTmF2aWdhdGlvbkFjdGlvbkludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFBMjhCOENCMUM4MEVENTkwMDZGRDc0MyAvKiBXZWJzaXRlRGF0YUZl
dGNoT3B0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYnNpdGVEYXRh
RmV0Y2hPcHRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUEyQTRBRkQxNTg2
OTM5MjAwOTBDOUU5IC8qIENvbG9yU3BhY2VEYXRhLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gQ29sb3JTcGFjZURhdGEubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTFBMkE0QUZFMTU4NjkzOTIwMDkwQzlFOSAvKiBDb2xvclNwYWNlRGF0YS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvclNwYWNlRGF0YS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQTJCQjZDQzE0MTE3QTVGMDAwRjM1RDQgLyogUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFBMkJCNkNFMTQxMTdCNEQwMDBGMzVENCAvKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJp
dmVkU291cmNlcy9XZWJLaXQyL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVy
LmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUEyQkI2Q0YxNDEx
N0I0RDAwMEYzNUQ0IC8qIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdl
cy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC0xMDQz
MCw4ICsxMDQyOCw2IEBACiAJCQkJOUY1NEY4OEUxNjQ4OEU4NzAwN0RGODFBIC8qIEF1eGlsaWFy
eVByb2Nlc3NNYWMubW0gKi8sCiAJCQkJQ0UxMUFENTExQ0JDNDgyRjAwNjgxRUU1IC8qIENvZGVT
aWduaW5nLmggKi8sCiAJCQkJQ0UxMUFENEYxQ0JDNDdGODAwNjgxRUU1IC8qIENvZGVTaWduaW5n
Lm1tICovLAotCQkJCTFBMkE0QUZFMTU4NjkzOTIwMDkwQzlFOSAvKiBDb2xvclNwYWNlRGF0YS5o
ICovLAotCQkJCTFBMkE0QUZEMTU4NjkzOTIwMDkwQzlFOSAvKiBDb2xvclNwYWNlRGF0YS5tbSAq
LywKIAkJCQkxQUM3NUExQzFCMzM2OTVFMDA1Njc0NUIgLyogSGFuZ0RldGVjdGlvbkRpc2FibGVy
TWFjLm1tICovLAogCQkJCTJENTAzNjVEMUJDQzc5M0YwMEUyMEJCMyAvKiBOYXRpdmVXZWJHZXN0
dXJlRXZlbnRNYWMubW0gKi8sCiAJCQkJQzAyQkZGMUQxMjUxNTAyRTAwOUNDQkVBIC8qIE5hdGl2
ZVdlYktleWJvYXJkRXZlbnRNYWMubW0gKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCShyZXZpc2lvbiAyNzc5NzkpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDExICs0NSw3IEBAIFdURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChJbWFnZUJ1ZmZlclMKIAogU2hhcmVhYmxlQml0bWFwOjpDb25m
aWd1cmF0aW9uIEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29uZmlndXJhdGlv
bihjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIFNoYXJlYWJsZUJpdG1hcDo6
Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGNv
bmZpZ3VyYXRpb24uY29sb3JTcGFjZSA9IHsgY2FjaGVkQ0dDb2xvclNwYWNlKHBhcmFtZXRlcnMu
Y29sb3JTcGFjZSkgfTsKLSNlbmRpZgotICAgIHJldHVybiBjb25maWd1cmF0aW9uOworICAgIHJl
dHVybiB7IHBhcmFtZXRlcnMuY29sb3JTcGFjZSB9OwogfQogCiBJbnRTaXplIEltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y2FsY3VsYXRlU2FmZUJhY2tlbmRTaXplKGNvbnN0IFBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xQcm94eS5jcHAJKHJldmlzaW9uIDI3Nzk3OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFBy
b3h5OjpwcmVwYQogICAgICAgICBtYXJrQ29udGV4dExvc3QoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBhdXRvIGRpc3BsYXlCdWZmZXIgPSBJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5k
UmlnaHQoV1RGTW92ZShkaXNwbGF5QnVmZmVyU2VuZFJpZ2h0KSwgc1JHQkNvbG9yU3BhY2VSZWYo
KSk7CisgICAgYXV0byBkaXNwbGF5QnVmZmVyID0gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJp
Z2h0KFdURk1vdmUoZGlzcGxheUJ1ZmZlclNlbmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpKTsKICAgICBpZiAoZGlzcGxheUJ1ZmZlcikgewogICAgICAgICBh
dXRvJiBzYyA9IHBsYXRmb3JtU3dhcENoYWluKCk7CiAgICAgICAgIHNjLnJlY3ljbGVCdWZmZXIo
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCShyZXZpc2lvbiAyNzc5NzkpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
UHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBSZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5IDogcHVibGljIFdlCiAgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VC
dWZmZXI6OnJlc29sdXRpb25TY2FsZTsKIAogcHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8UmVt
b3RlSW1hZ2VCdWZmZXJQcm94eT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2Ug
Y29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQsIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eSYgcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgIHN0YXRp
YyBSZWZQdHI8UmVtb3RlSW1hZ2VCdWZmZXJQcm94eT4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBXZWJDb3JlOjpEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBpeGVs
Rm9ybWF0LCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkmIHJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eSkKICAgICB7CiAgICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IFdlYkNvcmU6OkltYWdl
QnVmZmVyQmFja2VuZDo6UGFyYW1ldGVycyB7IHNpemUsIHJlc29sdXRpb25TY2FsZSwgY29sb3JT
cGFjZSwgcGl4ZWxGb3JtYXQgfTsKICAgICAgICAgaWYgKEJhY2tlbmRUeXBlOjpjYWxjdWxhdGVT
YWZlQmFja2VuZFNpemUocGFyYW1ldGVycykuaXNFbXB0eSgpKQpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZQogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OkNyZWF0ZUltYWdlQnVmZmVyKGltYWdlQnVmZmVyLmxvZ2ljYWxTaXplKCks
IGltYWdlQnVmZmVyLnJlbmRlcmluZ01vZGUoKSwgaW1hZ2VCdWZmZXIucmVzb2x1dGlvblNjYWxl
KCksIGltYWdlQnVmZmVyLmNvbG9yU3BhY2UoKSwgaW1hZ2VCdWZmZXIucGl4ZWxGb3JtYXQoKSwg
aW1hZ2VCdWZmZXIucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpLCByZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcigpLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVu
V2FpdGluZ0ZvclN5bmNSZXBseSk7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNp
emUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQp
CitSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmlu
Z01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkKIHsKICAgICBSZWZQdHI8SW1h
Z2VCdWZmZXI+IGltYWdlQnVmZmVyOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmgJKHJldmlzaW9uIDI3Nzk3OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDE1ICs0MywxOSBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKKwogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIGNsYXNzIERpc3BsYXlM
aXN0OwogY2xhc3MgSXRlbTsKIH0KKworY2xhc3MgRGVzdGluYXRpb25Db2xvclNwYWNlOwogY2xh
c3MgRmxvYXRTaXplOwogY2xhc3MgUGl4ZWxCdWZmZXI7CisKIGVudW0gY2xhc3MgQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiA6IHVpbnQ4X3Q7Ci1lbnVtIGNsYXNzIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFJlbmRlcmluZ01vZGUgOiBib29sOworCiB9CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewpAQCAtOTIsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsK
IAogICAgIC8vIE1lc3NhZ2VzIHRvIGJlIHNlbnQuCi0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdl
QnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJD
b3JlOjpSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIFdlYkNvcmU6OkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZSwgV2ViQ29yZTo6UGl4ZWxGb3JtYXQpOworICAgIFJlZlB0cjxXZWJD
b3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25z
dCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBXZWJDb3JlOjpQaXhlbEZvcm1hdCk7
CiAgICAgU3RyaW5nIGdldERhdGFVUkxGb3JJbWFnZUJ1ZmZlcihjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBPcHRpb25hbDxkb3VibGU+IHF1YWxpdHksIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlv
biwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICBWZWN0b3I8dWlu
dDhfdD4gZ2V0RGF0YUZvckltYWdlQnVmZmVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlv
bmFsPGRvdWJsZT4gcXVhbGl0eSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KTsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoRGlzcGxh
eUxpc3RBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0Jiwg
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBw
ZWRJT1N1cmZhY2VCYWNrZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL2NvY29hL0ltYWdlQnVmZmVyU2hhcmVhYmxlTWFwcGVkSU9TdXJm
YWNlQmFja2VuZC5jcHAJKHJldmlzaW9uIDI3Nzk3OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvY29jb2EvSW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwZWRJT1N1cmZh
Y2VCYWNrZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwCiAgICAgaWYgKGJhY2tlbmRTaXplLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBJT1N1
cmZhY2U6OmNyZWF0ZShiYWNrZW5kU2l6ZSwgYmFja2VuZFNpemUsIGNhY2hlZENHQ29sb3JTcGFj
ZShwYXJhbWV0ZXJzLmNvbG9yU3BhY2UpLCBJT1N1cmZhY2U6OmZvcm1hdEZvclBpeGVsRm9ybWF0
KHBhcmFtZXRlcnMucGl4ZWxGb3JtYXQpKTsKKyAgICBhdXRvIHN1cmZhY2UgPSBJT1N1cmZhY2U6
OmNyZWF0ZShiYWNrZW5kU2l6ZSwgYmFja2VuZFNpemUsIHBhcmFtZXRlcnMuY29sb3JTcGFjZSwg
SU9TdXJmYWNlOjpmb3JtYXRGb3JQaXhlbEZvcm1hdChwYXJhbWV0ZXJzLnBpeGVsRm9ybWF0KSk7
CiAgICAgaWYgKCFzdXJmYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtNjUsNyAr
NjUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJTaGFyZWFibGVNYXBwCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gc3VyZmFjZSA9IElPU3VyZmFjZTo6
Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKFdURjo6Z2V0PE1hY2hTZW5kUmlnaHQ+KGhhbmRs
ZSkpLCBjYWNoZWRDR0NvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xvclNwYWNlKSk7CisgICAgYXV0
byBzdXJmYWNlID0gSU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoV1RGOjpn
ZXQ8TWFjaFNlbmRSaWdodD4oaGFuZGxlKSksIHBhcmFtZXRlcnMuY29sb3JTcGFjZSk7CiAgICAg
aWYgKCFzdXJmYWNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGLmNwcAkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCwxMyArMjgsMTIgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgSEFWRShBVkFT
U0VUUkVBREVSKQogCi0jaW5jbHVkZSAiQ29sb3JTcGFjZURhdGEuaCIKICNpbmNsdWRlICJHUFVQ
cm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQVZBc3NldE1JTUVUeXBlQ2Fj
aGUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yU3BhY2VDRy5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JT1N1cmZhY2Uu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01J
TUVUeXBlUmVnaXN0cnkuaD4KQEAgLTE2OCwxNCArMTY3LDE0IEBAIFBsYXRmb3JtSW1hZ2VQdHIg
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjoKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBP
cHRpb25hbDxNYWNoU2VuZFJpZ2h0PiBzZW5kUmlnaHQ7Ci0gICAgICAgIENvbG9yU3BhY2VEYXRh
IGNvbG9yU3BhY2U7CisgICAgICAgIE9wdGlvbmFsPERlc3RpbmF0aW9uQ29sb3JTcGFjZT4gY29s
b3JTcGFjZTsKICAgICAgICAgaWYgKCFtX2dwdVByb2Nlc3NDb25uZWN0aW9uLT5jb25uZWN0aW9u
KCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpDcmVhdGVG
cmFtZUltYWdlQXRJbmRleChtX2lkZW50aWZpZXIsIGluZGV4KSwgTWVzc2FnZXM6OlJlbW90ZUlt
YWdlRGVjb2RlckFWRlByb3h5OjpDcmVhdGVGcmFtZUltYWdlQXRJbmRleDo6UmVwbHkoc2VuZFJp
Z2h0LCBjb2xvclNwYWNlKSwgMCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYg
KCFzZW5kUmlnaHQpCisgICAgICAgIGlmICghc2VuZFJpZ2h0IHx8ICFjb2xvclNwYWNlKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklPU3Vy
ZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKCpzZW5kUmlnaHQpLCBjb2xvclNwYWNl
LmNnQ29sb3JTcGFjZS5nZXQoKSk7CisgICAgICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6OklP
U3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKCpzZW5kUmlnaHQpLCBXVEZNb3Zl
KCpjb2xvclNwYWNlKSk7CiAgICAgICAgIGlmICghc3VyZmFjZSkKICAgICAgICAgICAgIHJldHVy
bjsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9jb2NvYS9NZWRp
YVBsYXllclByaXZhdGVSZW1vdGVDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL2NvY29hL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNvY29h
Lm1tCShyZXZpc2lvbiAyNzc5NzkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL2NvY29hL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZUNvY29hLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC03MSw3ICs3MSw3IEBAIFJlZlB0cjxOYXRpdmVJbWFnZT4gTWVkaWFQbGF5ZXJQcml2YXRl
UmUKICAgICBpZiAoIXNlbmRSaWdodCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBh
dXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RG
TW92ZSgqc2VuZFJpZ2h0KSwgc1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgYXV0byBzdXJmYWNl
ID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdURk1vdmUoKnNlbmRS
aWdodCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICBpZiAo
IXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC05MSw3ICs5MSw3IEBAIFJl
dGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBNZWRpYVBsYXllclAKICAgICBpZiAoIXNlbmRSaWdo
dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3Jl
OjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZSgqc2VuZFJpZ2h0KSwgbnVs
bHB0cik7CisgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9t
U2VuZFJpZ2h0KFdURk1vdmUoKnNlbmRSaWdodCksIFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpKTsKICAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4ubW0JKHJldmlzaW9uIDI3Nzk3OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTY0Niw3ICs2NDYs
NyBAQCBpbmxpbmUgUERGUGx1Z2luOjpQREZQbHVnaW4oV2ViRnJhbWUmIGZyCiAgICAgW21fY29u
dGFpbmVyTGF5ZXIgYWRkU3VibGF5ZXI6bV9zY3JvbGxDb3JuZXJMYXllci5nZXQoKV07CiAgICAg
aWYgKFttX3BkZkxheWVyQ29udHJvbGxlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNl
dERldmljZUNvbG9yU3BhY2U6KV0pIHsKICAgICAgICAgYXV0byB2aWV3ID0gZnJhbWUuY29yZUZy
YW1lKCktPnZpZXcoKTsKLSAgICAgICAgW21fcGRmTGF5ZXJDb250cm9sbGVyIHNldERldmljZUNv
bG9yU3BhY2U6c2NyZWVuQ29sb3JTcGFjZSh2aWV3KV07CisgICAgICAgIFttX3BkZkxheWVyQ29u
dHJvbGxlciBzZXREZXZpY2VDb2xvclNwYWNlOnNjcmVlbkNvbG9yU3BhY2UodmlldykucGxhdGZv
cm1Db2xvclNwYWNlKCldOwogICAgIH0KIAogI2lmIEhBVkUoSU5DUkVNRU5UQUxfUERGX0FQSVMp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxl
Qml0bWFwVXRpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvU2hhcmVhYmxlQml0bWFwVXRpbGl0aWVzLmNwcAkocmV2aXNpb24g
Mjc3OTc5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1NoYXJl
YWJsZUJpdG1hcFV0aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDEyICs1Nyw3IEBA
IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNyZWF0ZVNoYXJlYWJsZUIKICAgICB9CiAKICAgICAv
LyBGSVhNRTogT25seSBzZWxlY3QgRXh0ZW5kZWRDb2xvciBvbiBpbWFnZXMga25vd24gdG8gbmVl
ZCB3aWRlIGdhbXV0LgotICAgIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBiaXRtYXBD
b25maWd1cmF0aW9uOwotI2lmIFVTRShDRykKLSAgICBiaXRtYXBDb25maWd1cmF0aW9uLmNvbG9y
U3BhY2UuY2dDb2xvclNwYWNlID0gc2NyZWVuQ29sb3JTcGFjZShyZW5kZXJJbWFnZS5mcmFtZSgp
Lm1haW5GcmFtZSgpLnZpZXcoKSk7Ci0jZW5kaWYKLQotICAgIGF1dG8gc2hhcmVkQml0bWFwID0g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoSW50U2l6ZShiaXRtYXBTaXplKSwgYml0
bWFwQ29uZmlndXJhdGlvbik7CisgICAgYXV0byBzaGFyZWRCaXRtYXAgPSBTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZVNoYXJlYWJsZShJbnRTaXplKGJpdG1hcFNpemUpLCB7IHNjcmVlbkNvbG9yU3Bh
Y2UocmVuZGVySW1hZ2UuZnJhbWUoKS5tYWluRnJhbWUoKS52aWV3KCkpIH0pOwogICAgIGlmICgh
c2hhcmVkQml0bWFwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAJKHJldmlzaW9uIDI3Nzk3OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
MjcsNyArOTI3LDcgQEAgV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeSogVwog
CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IFdlYkNocm9t
ZUNsaWVudDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJp
bmdNb2RlIHJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4ZWxGb3Jt
YXQgcGl4ZWxGb3JtYXQpIGNvbnN0CitSZWZQdHI8SW1hZ2VCdWZmZXI+IFdlYkNocm9tZUNsaWVu
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2Rl
IHJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ1B1cnBvc2UgcHVycG9zZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFBpeGVsRm9y
bWF0IHBpeGVsRm9ybWF0KSBjb25zdAogewogICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKHB1cnBvc2UpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDI3Nzk3OSkKKysrIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjQ0LDcgKzI0NCw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6
RGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9yeSogZGlzcGxheVJlZnJlc2hNb25pdG9yRmFjdG9y
eSgpIGNvbnN0IGZpbmFsOwogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotICAgIFJlZlB0cjxX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgV2ViQ29yZTo6UmVuZGVyaW5nUHVycG9z
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2Us
IFdlYkNvcmU6OlBpeGVsRm9ybWF0KSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYs
IFdlYkNvcmU6OlJlbmRlcmluZ01vZGUsIFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0
IHJlc29sdXRpb25TY2FsZSwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiwg
V2ViQ29yZTo6UGl4ZWxGb3JtYXQpIGNvbnN0IGZpbmFsOwogI2lmIEVOQUJMRShXRUJHTCkKICAg
ICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w+IGNyZWF0ZUdyYXBoaWNzQ29udGV4
dEdMKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQXR0cmlidXRlcyYsIFdlYkNvcmU6
OlBsYXRmb3JtRGlzcGxheUlEIGhvc3RXaW5kb3dEaXNwbGF5SUQpIGNvbnN0IGZpbmFsOwogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkRyYWdDbGllbnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCShyZXZpc2lvbiAyNzc5Nzkp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdD
bGllbnRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTY4LDkgKzY4LDcgQEAgdXNpbmcgRHJhZ0lt
YWdlID0gQ0dJbWFnZVJlZjsKIAogc3RhdGljIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGNvbnZl
cnREcmFnSW1hZ2VUb0JpdG1hcChEcmFnSW1hZ2UgaW1hZ2UsIGNvbnN0IEludFNpemUmIHNpemUs
IEZyYW1lJiBmcmFtZSkKIHsKLSAgICBTaGFyZWFibGVCaXRtYXA6OkNvbmZpZ3VyYXRpb24gYml0
bWFwQ29uZmlndXJhdGlvbjsKLSAgICBiaXRtYXBDb25maWd1cmF0aW9uLmNvbG9yU3BhY2UuY2dD
b2xvclNwYWNlID0gc2NyZWVuQ29sb3JTcGFjZShmcmFtZS5tYWluRnJhbWUoKS52aWV3KCkpOwot
ICAgIGF1dG8gYml0bWFwID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoc2l6ZSwg
Yml0bWFwQ29uZmlndXJhdGlvbik7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZVNoYXJlYWJsZShzaXplLCB7IHNjcmVlbkNvbG9yU3BhY2UoZnJhbWUubWFpbkZyYW1l
KCkudmlldygpKSB9KTsKICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEuaAkocmV2aXNpb24gMjc3OTc5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvRHJhd2luZ0FyZWEuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBjbGFzcyBE
ZWNvZGVyOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U7CiBjbGFzcyBEaXNwbGF5UmVmcmVzaE1vbml0b3I7CiBjbGFzcyBGcmFtZTsKIGNsYXNz
IEZyYW1lVmlldzsKQEAgLTYwLDcgKzYxLDYgQEAgc3RydWN0IFZpZXdwb3J0QXR0cmlidXRlczsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0cnVjdCBDb2xvclNwYWNlRGF0YTsKIGNsYXNzIExh
eWVyVHJlZUhvc3Q7CiBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlOwpAQCAtMTgwLDcgKzE4MCw3IEBAIHByaXZhdGU6CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgLy8gVXNlZCBieSBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS4KICAgICB2aXJ0dWFsIHZvaWQgc2V0RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQpIHsgfQotICAg
IHZpcnR1YWwgdm9pZCBzZXRDb2xvclNwYWNlKGNvbnN0IENvbG9yU3BhY2VEYXRhJikgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIHNldENvbG9yU3BhY2UoT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRp
b25Db2xvclNwYWNlPikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VHJhbnNpZW50Wm9v
bShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgY29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0
UG9pbnQgb3JpZ2luKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyNzc5Nzkp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdl
cy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBtZXNzYWdlcyAtPiBEcmF3aW5n
QXJlYSBOb3RSZWZDb3VudGVkIHsKICAgICAvLyBVc2VkIGJ5IFRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhLgogICAgIFVwZGF0ZUdlb21ldHJ5KFdlYkNvcmU6OkludFNpemUgdmlld1NpemUs
IGJvb2wgZmx1c2hTeW5jaHJvbm91c2x5LCBNYWNoU2VuZFJpZ2h0IGZlbmNlUG9ydCkKICAgICBT
ZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikKLSAgICBTZXRDb2xv
clNwYWNlKHN0cnVjdCBXZWJLaXQ6OkNvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2UpCisgICAgU2V0
Q29sb3JTcGFjZShzdHJ1Y3QgT3B0aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNl
PiBjb2xvclNwYWNlKQogICAgIFNldFZpZXdFeHBvc2VkUmVjdChPcHRpb25hbDxXZWJDb3JlOjpG
bG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCkKIAogICAgIEFkanVzdFRyYW5zaWVudFpvb20oZG91
YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyNzc5NzkpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjU5NCw3ICsyNTk0LDcgQEAgc3RhdGljIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmln
dXJhdGlvbiBzbgogICAgIFNoYXJlYWJsZUJpdG1hcDo6Q29uZmlndXJhdGlvbiBjb25maWd1cmF0
aW9uOwogI2lmIFVTRShDRykKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc1VzZVNj
cmVlbkNvbG9yU3BhY2UpCi0gICAgICAgIGNvbmZpZ3VyYXRpb24uY29sb3JTcGFjZS5jZ0NvbG9y
U3BhY2UgPSBzY3JlZW5Db2xvclNwYWNlKHBhZ2UuY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkudmll
dygpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5jb2xvclNwYWNlID0gc2NyZWVuQ29sb3JTcGFj
ZShwYWdlLmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKSk7CiAjZW5kaWYKICAgICByZXR1
cm4gY29uZmlndXJhdGlvbjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYS5oCShyZXZpc2lvbiAyNzc5NzkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAkod29ya2luZyBjb3B5
KQpAQCAtOTgsNyArOTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3VzcGVuZFBhaW50aW5nKCk7
CiAgICAgdm9pZCByZXN1bWVQYWludGluZygpOwogICAgIHZvaWQgc2V0TGF5ZXJIb3N0aW5nTW9k
ZShMYXllckhvc3RpbmdNb2RlKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldENvbG9yU3BhY2UoY29u
c3QgQ29sb3JTcGFjZURhdGEmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbG9yU3BhY2UoT3B0
aW9uYWw8V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlPikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBhZGRGZW5jZShjb25zdCBXVEY6Ok1hY2hTZW5kUmlnaHQmKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgYWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKENhbGxiYWNrSUQpIG92ZXJyaWRlOwpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQkocmV2aXNpb24gMjc3OTc5
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAKICNp
ZiBQTEFURk9STShNQUMpCiAKLSNpbXBvcnQgIkNvbG9yU3BhY2VEYXRhLmgiCiAjaW1wb3J0ICJE
aXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaCIKICNpbXBvcnQgIkRyYXdpbmdBcmVhUHJveHlNZXNz
YWdlcy5oIgogI2ltcG9ydCAiTGF5ZXJIb3N0aW5nQ29udGV4dC5oIgpAQCAtNDUsNiArNDQsNyBA
QAogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CiAjaW1wb3J0IDxRdWFy
dHpDb3JlL1F1YXJ0ekNvcmUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGVidWdQYWdlT3ZlcmxheXMu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KQEAgLTkxLDYgKzkxLDcgQEAgVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWE6OlRpbGVkQ29yZQogICAgIH0pOwogCiAgICAgdXBkYXRlTGF5ZXJI
b3N0aW5nQ29udGV4dCgpOworICAgIAogICAgIHNldENvbG9yU3BhY2UocGFyYW1ldGVycy5jb2xv
clNwYWNlKTsKIAogICAgIGlmIChhdXRvIHZpZXdFeHBvc2VkUmVjdCA9IHBhcmFtZXRlcnMudmll
d0V4cG9zZWRSZWN0KQpAQCAtNjUwLDkgKzY1MSw5IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWE6OnNldEwKICAgICBzZW5kKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5OjpV
cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgwLCBsYXllclRyZWVDb250ZXh0KSk7CiB9
CiAKLXZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OnNldENvbG9yU3BhY2UoY29u
c3QgQ29sb3JTcGFjZURhdGEmIGNvbG9yU3BhY2UpCit2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhOjpzZXRDb2xvclNwYWNlKE9wdGlvbmFsPFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29s
b3JTcGFjZT4gY29sb3JTcGFjZSkKIHsKLSAgICBtX2xheWVySG9zdGluZ0NvbnRleHQtPnNldENv
bG9yU3BhY2UoY29sb3JTcGFjZS5jZ0NvbG9yU3BhY2UuZ2V0KCkpOworICAgIG1fbGF5ZXJIb3N0
aW5nQ29udGV4dC0+c2V0Q29sb3JTcGFjZShjb2xvclNwYWNlID8gY29sb3JTcGFjZS0+cGxhdGZv
cm1Db2xvclNwYWNlKCkgOiBudWxscHRyKTsKIH0KIAogUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlS
ZWZyZXNoTW9uaXRvcj4gVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmNyZWF0ZURpc3Bs
YXlSZWZyZXNoTW9uaXRvcihQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNzc5NzkpCisrKyBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAy
MS0wNS0yNCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29udmVy
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdyYXBwaW5nIGEg
cGxhdGZvcm0gY29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0Yy4p
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjYxNDMK
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tOgorICAgICAgICAoV2ViQ29udGV4dE1lbnVD
bGllbnQ6OmltYWdlRm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbSk6CisgICAgICAg
IFVwZGF0ZSBmb3IgbmV3IERlc3RpbmF0aW9uQ29sb3JTcGFjZSBjbGFzcy4KKwogMjAyMS0wNS0y
NCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFN0cmlu
Z0J1aWxkZXI6OmFwcGVuZExpdGVyYWwKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1t
CShyZXZpc2lvbiAyNzc5NzkpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMs
NyBAQAogI2ltcG9ydCA8V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9D
b250ZXh0TWVudS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0RvY3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0ZyYW1lVmlldy5oPgpAQCAtMjEzLDcgKzIxNCw3IEBAIFJldGFpblB0cjxOU0ltYWdlPiBX
ZWJDb250ZXh0TWVudUNsaWVudDoKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIC8vIFRoaXMg
aXMgZWZmZWN0aXZlbHkgYSBzbmFwc2hvdCwgYW5kIHdpbGwgYmUgcGFpbnRlZCBpbiBhbiB1bmFj
Y2VsZXJhdGVkIGZhc2hpb24gaW4gbGluZSB3aXRoIEZyYW1lU25hcHNob3R0aW5nLgotICAgIGF1
dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShyZWN0LnNpemUoKSwgUmVuZGVyaW5nTW9k
ZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOworICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShyZWN0
LnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAgICAgaWYgKCFidWZmZXIpCiAg
ICAgICAgIHJldHVybiBuaWw7CiAKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3Nzk3OSkKKysrIFRvb2xzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA1LTI0ICBTYW0gV2VpbmlnICA8
d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBDb252ZXJ0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSBmcm9tIGFuIGVudW0gdG8gY2xhc3Mgd3JhcHBpbmcgYSBwbGF0Zm9ybSBjb2xvciBzcGFjZSAo
Q0dDb2xvclNwYWNlUmVmIGZvciBDRyBwb3J0cywgZXRjLikKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjE0MworCisgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2Nn
L0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToK
KyAgICAgICAgVXBhdGUgdGVzdCB0byB1c2UgbmV3IERlc3RpbmF0aW9uQ29sb3JTcGFjZSB0eXBl
LgorCiAyMDIxLTA1LTI0ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgQVg6IFNldHRpbmdzOiBJbmNyZWFzZSBjb250cmFzdCBpc24ndCBkZXRlY3RlZCBp
biBicm93c2VyIHVudGlsIGFuIGFkZGl0aW9uYWwgc2V0dGluZyBpcyBhcHBsaWVkCkluZGV4OiBU
b29scy9EdW1wUmVuZGVyVHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQkocmV2
aXNpb24gMjc3OTc5KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1BpeGVsRHVtcFN1cHBv
cnRJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNiArMzgsNyBAQAog
I2ltcG9ydCA8Q29tbW9uQ3J5cHRvL0NvbW1vbkRpZ2VzdC5oPgogI2ltcG9ydCA8TW9iaWxlQ29y
ZVNlcnZpY2VzL1VUQ29yZVR5cGVzLmg+CiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0dyYXBoaWNzQ29udGV4dENHLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0lPU3VyZmFjZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgpAQCAtNzEsNyArNzIsNyBAQCBS
ZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0bWFwQ29udGV4CiAjZWxzZQogICAgIFdlYkNv
cmU6OklPU3VyZmFjZTo6Rm9ybWF0IHNuYXBzaG90Rm9ybWF0ID0gV2ViQ29yZTo6SU9TdXJmYWNl
OjpGb3JtYXQ6OkJHUkE7CiAjZW5kaWYKLSAgICBhdXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1
cmZhY2U6OmNyZWF0ZShXZWJDb3JlOjpleHBhbmRlZEludFNpemUoc25hcHNob3RTaXplKSwgV2Vi
Q29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSwgc25hcHNob3RGb3JtYXQpOworICAgIGF1dG8gc3Vy
ZmFjZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlKFdlYkNvcmU6OmV4cGFuZGVkSW50U2l6
ZShzbmFwc2hvdFNpemUpLCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
c25hcHNob3RGb3JtYXQpOwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjZ0ltYWdlID0gc3Vy
ZmFjZS0+Y3JlYXRlSW1hZ2UoKTsKIAogICAgIHZvaWQqIGJpdG1hcEJ1ZmZlciA9IG51bGxwdHI7
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvRGlzcGxheUxpc3RU
ZXN0c0NHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvY2cvRGlzcGxheUxpc3RUZXN0c0NHLmNwcAkocmV2aXNpb24gMjc3OTc5KQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0Rpc3BsYXlMaXN0VGVzdHNDRy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIFVTRShDRykKIAorI2luY2x1ZGUg
PFdlYkNvcmUvRGVzdGluYXRpb25Db2xvclNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNw
bGF5TGlzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RSZXBsYXllci5oPgpAQCAtNDYsOCArNDcsOCBAQCBURVNU
KERpc3BsYXlMaXN0VGVzdHMsIFJlcGxheVdpdGhNaXNzaW5nCiB7CiAgICAgRmxvYXRSZWN0IGNv
bnRleHRCb3VuZHMgeyAwLCAwLCBjb250ZXh0V2lkdGgsIGNvbnRleHRIZWlnaHQgfTsKIAotICAg
IGF1dG8gY29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlV2l0aE5hbWUoa0NH
Q29sb3JTcGFjZVNSR0IpKTsKLSAgICBhdXRvIGNnQ29udGV4dCA9IGFkb3B0Q0YoQ0dCaXRtYXBD
b250ZXh0Q3JlYXRlKG51bGxwdHIsIGNvbnRleHRXaWR0aCwgY29udGV4dEhlaWdodCwgOCwgNCAq
IGNvbnRleHRXaWR0aCwgY29sb3JTcGFjZS5nZXQoKSwga0NHSW1hZ2VBbHBoYVByZW11bHRpcGxp
ZWRMYXN0KSk7CisgICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCk7CisgICAgYXV0byBjZ0NvbnRleHQgPSBhZG9wdENGKENHQml0bWFwQ29udGV4dENyZWF0
ZShudWxscHRyLCBjb250ZXh0V2lkdGgsIGNvbnRleHRIZWlnaHQsIDgsIDQgKiBjb250ZXh0V2lk
dGgsIGNvbG9yU3BhY2UucGxhdGZvcm1Db2xvclNwYWNlKCksIGtDR0ltYWdlQWxwaGFQcmVtdWx0
aXBsaWVkTGFzdCkpOwogICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0IHsgY2dDb250ZXh0Lmdl
dCgpIH07CiAKICAgICBhdXRvIGltYWdlQnVmZmVySWRlbnRpZmllciA9IFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKQEAgLTY5LDcgKzcwLDcgQEAgVEVTVChEaXNwbGF5
TGlzdFRlc3RzLCBSZXBsYXlXaXRoTWlzc2luZwogICAgIH0KIAogICAgIHsKLSAgICAgICAgYXV0
byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoeyAxMDAsIDEwMCB9LCBSZW5kZXJp
bmdNb2RlOjpVbmFjY2VsZXJhdGVkLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIFBp
eGVsRm9ybWF0OjpCR1JBOCk7CisgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKHsgMTAwLCAxMDAgfSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwg
Y29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICAgICAgSW1hZ2VCdWZmZXJIYXNo
TWFwIGltYWdlQnVmZmVyTWFwOwogICAgICAgICBpbWFnZUJ1ZmZlck1hcC5zZXQoaW1hZ2VCdWZm
ZXJJZGVudGlmaWVyLCBpbWFnZUJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>