<?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>234201</bug_id>
          
          <creation_ts>2021-12-11 13:37:55 -0800</creation_ts>
          <short_desc>[WTF] Introduce TrailingArray</short_desc>
          <delta_ts>2021-12-21 11:41:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1823254</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-11 13:37:55 -0800</bug_when>
    <thetext>[WTF] Introduce TrailingArray</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823255</commentid>
    <comment_count>1</comment_count>
      <attachid>446900</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-11 13:41:03 -0800</bug_when>
    <thetext>Created attachment 446900
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823256</commentid>
    <comment_count>2</comment_count>
      <attachid>446901</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-11 13:48:15 -0800</bug_when>
    <thetext>Created attachment 446901
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823271</commentid>
    <comment_count>3</comment_count>
      <attachid>446910</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-11 15:34:38 -0800</bug_when>
    <thetext>Created attachment 446910
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823296</commentid>
    <comment_count>4</comment_count>
      <attachid>446921</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-11 21:55:44 -0800</bug_when>
    <thetext>Created attachment 446921
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823297</commentid>
    <comment_count>5</comment_count>
      <attachid>446922</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-11 22:03:14 -0800</bug_when>
    <thetext>Created attachment 446922
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823300</commentid>
    <comment_count>6</comment_count>
      <attachid>446924</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-11 23:47:52 -0800</bug_when>
    <thetext>Created attachment 446924
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824046</commentid>
    <comment_count>7</comment_count>
      <attachid>446924</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-14 10:42:30 -0800</bug_when>
    <thetext>Comment on attachment 446924
Patch

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

I’m not thrilled by how much code is put in the class template definitions here. Makes it a bit hard to see the overview of the class template.

&gt; Source/WTF/wtf/EmbeddedFixedVector.h:45
&gt; +        return UniqueRef { *new (NotNull, fastMalloc(Base::allocationSize(size))) EmbeddedFixedVector(size) };

Can we do without the type name entirely, and just use the braces?

&gt; Source/WTF/wtf/EmbeddedFixedVector.h:51
&gt; +        unsigned size = std::distance(first, last);

What guarantees the distance can be shortened from size_t to unsigned? Do we want a RELEASE_ASSERT of that? Or is there some way we know this is always safe?

&gt; Source/WTF/wtf/EmbeddedFixedVector.h:52
&gt; +        return UniqueRef { *new (NotNull, fastMalloc(Base::allocationSize(size))) EmbeddedFixedVector(size, first, last) };

Dito.

&gt; Source/WTF/wtf/EmbeddedFixedVector.h:58
&gt; +        unsigned size = std::size(other);

Why call std::size instead of size() here?

Same question about why this fits in unsigned.

&gt; Source/WTF/wtf/EmbeddedFixedVector.h:65
&gt; +        Vector&lt;T, inlineCapacity, OverflowHandler&gt; container = WTFMove(other);

Why is it good to do this move? I’d think we’d want to move the *elements* out of the vector and never move the vector itself, should just be able to use std::move_iterator { other.begin() } below.

Also unclear on why we are using std::begin. It seems to me that we can just use Vector::begin unless we have some reason we want to write code that’s more generic.

Also, I would use auto here for the type if we were keeping this.

&gt; Source/WTF/wtf/EmbeddedFixedVector.h:66
&gt; +        unsigned size = std::size(container);

Same question about narrowing to unsigned.

&gt; Source/WTF/wtf/EmbeddedFixedVector.h:92
&gt; +    EmbeddedFixedVector(unsigned size)

explicit

&gt; Source/WTF/wtf/FixedVector.h:155
&gt; +    Storage* getStorage() { return m_storage.get(); }

WebKit coding style says function should not be named with the word &quot;get&quot; in it. We use get to mean &quot;out arguments&quot; or such.

&gt; Source/WTF/wtf/TrailingArray.h:65
&gt; +    TrailingArray(unsigned size, InputIterator first, InputIterator last)

Seems a little bit strange to take the size as an argument but also call std::distance. I guess I’ll have to look at call sites to understand why.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825290</commentid>
    <comment_count>8</comment_count>
      <attachid>446924</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-17 19:57:55 -0800</bug_when>
    <thetext>Comment on attachment 446924
Patch

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

Thanks

&gt;&gt; Source/WTF/wtf/EmbeddedFixedVector.h:45
&gt;&gt; +        return UniqueRef { *new (NotNull, fastMalloc(Base::allocationSize(size))) EmbeddedFixedVector(size) };
&gt; 
&gt; Can we do without the type name entirely, and just use the braces?

It becomes compile error.

&gt;&gt; Source/WTF/wtf/EmbeddedFixedVector.h:51
&gt;&gt; +        unsigned size = std::distance(first, last);
&gt; 
&gt; What guarantees the distance can be shortened from size_t to unsigned? Do we want a RELEASE_ASSERT of that? Or is there some way we know this is always safe?

Use CheckedUInt here.

&gt;&gt; Source/WTF/wtf/EmbeddedFixedVector.h:58
&gt;&gt; +        unsigned size = std::size(other);
&gt; 
&gt; Why call std::size instead of size() here?
&gt; 
&gt; Same question about why this fits in unsigned.

Originally, this function can take C array too. But now I limited it because it makes &amp;&amp; handling super hard.
Use other.size() for now.

&gt;&gt; Source/WTF/wtf/EmbeddedFixedVector.h:65
&gt;&gt; +        Vector&lt;T, inlineCapacity, OverflowHandler&gt; container = WTFMove(other);
&gt; 
&gt; Why is it good to do this move? I’d think we’d want to move the *elements* out of the vector and never move the vector itself, should just be able to use std::move_iterator { other.begin() } below.
&gt; 
&gt; Also unclear on why we are using std::begin. It seems to me that we can just use Vector::begin unless we have some reason we want to write code that’s more generic.
&gt; 
&gt; Also, I would use auto here for the type if we were keeping this.

We should perform this move since the parameter is Vector&amp;&amp;. The parameter is saying we should move the vector (not elements of vector).

&gt;&gt; Source/WTF/wtf/EmbeddedFixedVector.h:66
&gt;&gt; +        unsigned size = std::size(container);
&gt; 
&gt; Same question about narrowing to unsigned.

Ditto.

&gt;&gt; Source/WTF/wtf/EmbeddedFixedVector.h:92
&gt;&gt; +    EmbeddedFixedVector(unsigned size)
&gt; 
&gt; explicit

Added

&gt;&gt; Source/WTF/wtf/FixedVector.h:155
&gt;&gt; +    Storage* getStorage() { return m_storage.get(); }
&gt; 
&gt; WebKit coding style says function should not be named with the word &quot;get&quot; in it. We use get to mean &quot;out arguments&quot; or such.

OK, changed.

&gt;&gt; Source/WTF/wtf/TrailingArray.h:65
&gt;&gt; +    TrailingArray(unsigned size, InputIterator first, InputIterator last)
&gt; 
&gt; Seems a little bit strange to take the size as an argument but also call std::distance. I guess I’ll have to look at call sites to understand why.

This is because, at constructor call point, we must know the size of array (because TrailingArray memory should be allocated with this size). So we should have this size information already and we do not need to perform std::distance again (this can be costly, depending on how the iterator of some container is implemented).
This parameter requires the derived implementation to follow the above appropriate style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825320</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-18 02:17:17 -0800</bug_when>
    <thetext>Committed r287220 (245383@trunk): &lt;https://commits.webkit.org/245383@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825321</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-18 02:18:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/86666683&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825492</commentid>
    <comment_count>11</comment_count>
      <attachid>446924</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-19 15:44:43 -0800</bug_when>
    <thetext>Comment on attachment 446924
Patch

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

&gt;&gt;&gt; Source/WTF/wtf/EmbeddedFixedVector.h:65
&gt;&gt;&gt; +        Vector&lt;T, inlineCapacity, OverflowHandler&gt; container = WTFMove(other);
&gt;&gt; 
&gt;&gt; Why is it good to do this move? I’d think we’d want to move the *elements* out of the vector and never move the vector itself, should just be able to use std::move_iterator { other.begin() } below.
&gt;&gt; 
&gt;&gt; Also unclear on why we are using std::begin. It seems to me that we can just use Vector::begin unless we have some reason we want to write code that’s more generic.
&gt;&gt; 
&gt;&gt; Also, I would use auto here for the type if we were keeping this.
&gt; 
&gt; We should perform this move since the parameter is Vector&amp;&amp;. The parameter is saying we should move the vector (not elements of vector).

I don’t agree with this.

When you pass an rvalue reference, what it means is that the recipient can take the contents of what is passed, but it does not mean literally that the top level object must be moved. For example, sometimes such functions examine and do not move the argument in some code paths. I think it would be better to move the elements and not unnecessarily move the vector itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825648</commentid>
    <comment_count>12</comment_count>
      <attachid>446924</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-20 10:48:52 -0800</bug_when>
    <thetext>Comment on attachment 446924
Patch

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

&gt;&gt;&gt;&gt; Source/WTF/wtf/EmbeddedFixedVector.h:65
&gt;&gt;&gt;&gt; +        Vector&lt;T, inlineCapacity, OverflowHandler&gt; container = WTFMove(other);
&gt;&gt;&gt; 
&gt;&gt;&gt; Why is it good to do this move? I’d think we’d want to move the *elements* out of the vector and never move the vector itself, should just be able to use std::move_iterator { other.begin() } below.
&gt;&gt;&gt; 
&gt;&gt;&gt; Also unclear on why we are using std::begin. It seems to me that we can just use Vector::begin unless we have some reason we want to write code that’s more generic.
&gt;&gt;&gt; 
&gt;&gt;&gt; Also, I would use auto here for the type if we were keeping this.
&gt;&gt; 
&gt;&gt; We should perform this move since the parameter is Vector&amp;&amp;. The parameter is saying we should move the vector (not elements of vector).
&gt; 
&gt; I don’t agree with this.
&gt; 
&gt; When you pass an rvalue reference, what it means is that the recipient can take the contents of what is passed, but it does not mean literally that the top level object must be moved. For example, sometimes such functions examine and do not move the argument in some code paths. I think it would be better to move the elements and not unnecessarily move the vector itself.

I think many code is doing that. For example, Vector move constructor.

   973 template&lt;typename T, size_t inlineCapacity, typename OverflowHandler, size_t minCapacity, typename Malloc&gt;
   974 inline Vector&lt;T, inlineCapacity, OverflowHandler, minCapacity, Malloc&gt;::Vector(Vector&lt;T, inlineCapacity, OverflowHandler, minCapacity, Malloc&gt;&amp;&amp; other)
   975 {
   976     swap(other);
   977 }

Since the |this| is empty vector, it is clearing the caller&apos;s Vector&apos;s storage.

And I think we must move in this case because it was the behavior of RefCountedArray, which is replaced to EmbeddedVector in FixedVector.
If we do not clear here, we will change the semantics (caller vector is not cleared), and it is not intention of this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825657</commentid>
    <comment_count>13</comment_count>
      <attachid>446924</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-20 11:06:41 -0800</bug_when>
    <thetext>Comment on attachment 446924
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/WTF/wtf/EmbeddedFixedVector.h:65
&gt;&gt;&gt;&gt;&gt; +        Vector&lt;T, inlineCapacity, OverflowHandler&gt; container = WTFMove(other);
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Why is it good to do this move? I’d think we’d want to move the *elements* out of the vector and never move the vector itself, should just be able to use std::move_iterator { other.begin() } below.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Also unclear on why we are using std::begin. It seems to me that we can just use Vector::begin unless we have some reason we want to write code that’s more generic.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Also, I would use auto here for the type if we were keeping this.
&gt;&gt;&gt; 
&gt;&gt;&gt; We should perform this move since the parameter is Vector&amp;&amp;. The parameter is saying we should move the vector (not elements of vector).
&gt;&gt; 
&gt;&gt; I don’t agree with this.
&gt;&gt; 
&gt;&gt; When you pass an rvalue reference, what it means is that the recipient can take the contents of what is passed, but it does not mean literally that the top level object must be moved. For example, sometimes such functions examine and do not move the argument in some code paths. I think it would be better to move the elements and not unnecessarily move the vector itself.
&gt; 
&gt; I think many code is doing that. For example, Vector move constructor.
&gt; 
&gt;    973 template&lt;typename T, size_t inlineCapacity, typename OverflowHandler, size_t minCapacity, typename Malloc&gt;
&gt;    974 inline Vector&lt;T, inlineCapacity, OverflowHandler, minCapacity, Malloc&gt;::Vector(Vector&lt;T, inlineCapacity, OverflowHandler, minCapacity, Malloc&gt;&amp;&amp; other)
&gt;    975 {
&gt;    976     swap(other);
&gt;    977 }
&gt; 
&gt; Since the |this| is empty vector, it is clearing the caller&apos;s Vector&apos;s storage.
&gt; 
&gt; And I think we must move in this case because it was the behavior of RefCountedArray, which is replaced to EmbeddedVector in FixedVector.
&gt; If we do not clear here, we will change the semantics (caller vector is not cleared), and it is not intention of this patch.

Yes, code *can* do that and it’s great to do it when it’s the most efficient way to do things. The Vector move constructor is the perfect example of that.

But I don’t think we should pay any efficiency cost to stick with it; it’s not something you can rely on in library, since it’s how rvalue reference arguments work in the C++ standard library, for example. I suppose we can debate this another time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825956</commentid>
    <comment_count>14</comment_count>
      <attachid>446924</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-21 03:08:57 -0800</bug_when>
    <thetext>Comment on attachment 446924
Patch

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

&gt;&gt;&gt;&gt;&gt;&gt; Source/WTF/wtf/EmbeddedFixedVector.h:65
&gt;&gt;&gt;&gt;&gt;&gt; +        Vector&lt;T, inlineCapacity, OverflowHandler&gt; container = WTFMove(other);
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; Why is it good to do this move? I’d think we’d want to move the *elements* out of the vector and never move the vector itself, should just be able to use std::move_iterator { other.begin() } below.
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; Also unclear on why we are using std::begin. It seems to me that we can just use Vector::begin unless we have some reason we want to write code that’s more generic.
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; Also, I would use auto here for the type if we were keeping this.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; We should perform this move since the parameter is Vector&amp;&amp;. The parameter is saying we should move the vector (not elements of vector).
&gt;&gt;&gt; 
&gt;&gt;&gt; I don’t agree with this.
&gt;&gt;&gt; 
&gt;&gt;&gt; When you pass an rvalue reference, what it means is that the recipient can take the contents of what is passed, but it does not mean literally that the top level object must be moved. For example, sometimes such functions examine and do not move the argument in some code paths. I think it would be better to move the elements and not unnecessarily move the vector itself.
&gt;&gt; 
&gt;&gt; I think many code is doing that. For example, Vector move constructor.
&gt;&gt; 
&gt;&gt;    973 template&lt;typename T, size_t inlineCapacity, typename OverflowHandler, size_t minCapacity, typename Malloc&gt;
&gt;&gt;    974 inline Vector&lt;T, inlineCapacity, OverflowHandler, minCapacity, Malloc&gt;::Vector(Vector&lt;T, inlineCapacity, OverflowHandler, minCapacity, Malloc&gt;&amp;&amp; other)
&gt;&gt;    975 {
&gt;&gt;    976     swap(other);
&gt;&gt;    977 }
&gt;&gt; 
&gt;&gt; Since the |this| is empty vector, it is clearing the caller&apos;s Vector&apos;s storage.
&gt;&gt; 
&gt;&gt; And I think we must move in this case because it was the behavior of RefCountedArray, which is replaced to EmbeddedVector in FixedVector.
&gt;&gt; If we do not clear here, we will change the semantics (caller vector is not cleared), and it is not intention of this patch.
&gt; 
&gt; Yes, code *can* do that and it’s great to do it when it’s the most efficient way to do things. The Vector move constructor is the perfect example of that.
&gt; 
&gt; But I don’t think we should pay any efficiency cost to stick with it; it’s not something you can rely on in library, since it’s how rvalue reference arguments work in the C++ standard library, for example. I suppose we can debate this another time.

Yeah, agree that clearing is not guaranteed in C++&apos;s convention.
But in many cases, just moving it away would be more simpler than leaving the caller Vector with already moved elements, and many code is using `WTFMove(vector)` as a way to clear the original vector.
And in almost all cases, we will clear the caller&apos;s Vector anyway, thus, it does not affect on performance. So, unless we have a specific reason, clearing the passed vector looks safer option to me :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826072</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-21 11:41:30 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #14)
 But in many cases, just moving it away would be more simpler than leaving
&gt; the caller Vector with already moved elements

OK. If that’s the argument, I am convinced.

&gt; and many code is using
&gt; `WTFMove(vector)` as a way to clear the original vector.

That seems dangerous if we do refactoring and possibly change data types.

I think that we should use std::exchange(vector, { }) for call sites where we need to clear the original vector and reserve std::move(vector) or WTFMove(vector) for call sites where we never do anything other than destroying the old vector or assigning a new value to the old vector and then using it after that.

&gt; And in almost all cases, we will clear the caller&apos;s Vector anyway, thus, it
&gt; does not affect on performance.

Sure, if &quot;does not affect performance&quot; is the argument, that is OK with me.

&gt; So, unless we have a specific reason,

The specific reason would be better performance.

&gt; clearing the passed vector looks safer option to me :)

I think it’s a false sense of safety since we refactor and change data types from time to time. I don’t want us to depend on &quot;moved-from things are cleared&quot; when the std::exchange idiom is easily accessible to provide a guarantee that does not rely on different conventions for different classes.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446900</attachid>
            <date>2021-12-11 13:41:03 -0800</date>
            <delta_ts>2021-12-11 13:48:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234201-20211211134102.patch</filename>
            <type>text/plain</type>
            <size>77407</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MTc3YTdmMmEwODU3YTJiMjNhM2EzZTg4OTIzNTEyZDg4MGE2MDljLi40ZjgyOWNiMWNiYTViYjlk
MmI1ZmRjNmZmMTVmMDg3OTk2NGNiMjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOSBAQAorMjAyMS0xMi0xMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtXVEZdIEludHJvZHVjZSBUcmFpbGluZ0FycmF5CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQyMDEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSB1c2UgVGhyZWFkU2FmZVJlZkNv
dW50ZWRGaXhlZFZlY3RvciBpbiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBzbyB0aGF0IHdl
IHJlbW92ZSBvbmUgdW5uZWNlc3NhcnkgaW5kaXJlY3Rpb24gcG9pbnRlci4KKworICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJhc2VsaW5l
SklUQ29uc3RhbnRQb29sKToKKyAgICAgICAgKiBieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldC5jcHA6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0Ojpt
ZXJnZWRXaXRoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6T2JqZWN0UHJvcGVydHlDb25kaXRpb25T
ZXQ6OmR1bXBJbkNvbnRleHQgY29uc3QpOgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldDo6aXNWYWxpZEFuZFdhdGNoYWJsZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNv
ZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaDoKKyAgICAgICAgKEpTQzo6T2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQ6OmludmFsaWQpOgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXQ6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0OjpiZWdpbiBjb25zdCk6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0OjplbmQgY29uc3QpOgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldDo6T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6cmVsZWFzZVJhd1BvaW50ZXIpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6YWRvcHRSYXdQ
b2ludGVyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T2JqZWN0UHJvcGVydHlDb25kaXRpb25T
ZXQ6OmZyb21SYXdQb2ludGVyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXQ6OkRhdGE6OkRhdGEpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVQu
Y3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcp
OgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6bG9hZENv
bnN0YW50KToKKyAgICAgICAgKiBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOgorICAg
ICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbToKKwogMjAyMS0xMi0xMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIFtKU0NdIFdhc20gY2F0Y2ggdGh1bmsgc2hvdWxkIGJlIEpJVCBj
b2RlIHRvIHVzZSBFeGNlcHRpb25IYW5kbGVyUHRyVGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA2Mjc1NzZkZmVhZGIyOTcy
MzhhZjVlNTM0ZGVmYzc3ZDAxNTM4YzIuLmVjYTlhNzAwYTZlOWRmN2JjN2RlYTBlYzQ2MTJjZTJi
ZTI2ODUxN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMjEtMTItMTEgIFl1c3VrZSBTdXp1a2kg
IDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBJbnRyb2R1Y2UgVHJhaWxpbmdB
cnJheQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0
MjAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpbXBsZW1lbnRzIFRyYWlsaW5nQXJyYXk8RGVyaXZlZCwgVD4sIHdoaWNoIGFsbG93
cyB1cyB0byBpbXBsZW1lbnQgY2xhc3MKKyAgICAgICAgd2l0aCB0cmFpbGluZyBhcnJheSBlYXNp
bHkuIEJ5IHVzaW5nIHRoaXMsIHdlIGltcGxlbWVudCBFbWJlZGRlZEZpeGVkVmVjdG9yIGFuZCBS
ZWZDb3VudGVkRml4ZWRWZWN0b3IuCisgICAgICAgIFBsdXMsIHdlIHJlcGxhY2UgdW5kZXJseWlu
ZyBpbXBsZW1lbnRhdGlvbiBvZiBGaXhlZFZlY3RvciBmcm9tIFJlZkNvdW50ZWRBcnJheSB0byBF
bWJlZGRlZEZpeGVkVmVjdG9yCisgICAgICAgIHNpbmNlIHJlZi1jb3VudGluZyBpcyBub3QgbmVj
ZXNzYXJ5LgorICAgICAgICBJbiBhIHN1YnNlcXVlbnQgcGF0Y2gsIHdlIHdpbGwgcmVtb3ZlIFJl
ZkNvdW50ZWRBcnJheSBhbmQgdXNlIFJlZkNvdW50ZWRGaXhlZFZlY3RvciBzaW5jZSBSZWZDb3Vu
dGVkRml4ZWRWZWN0b3IKKyAgICAgICAgaXMgZm9sbG93aW5nIG5vcm1hbCBSZWYgLyBSZWZQdHIg
cHJvdG9jb2wsIHNvIGVhc3kgdG8gdW5kZXJzdGFuZCB0aGUgc2VtYW50aWNzLgorCisgICAgICAg
ICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIHd0Zi9FbWJlZGRlZEZpeGVkVmVjdG9yLmg6IEFkZGVkLgorICAg
ICAgICAqIHd0Zi9GaXhlZFZlY3Rvci5oOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6Rml4
ZWRWZWN0b3IpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKFdURjo6Rml4ZWRWZWN0b3I6OnNpemUgY29uc3QpOgorICAgICAgICAoV1RGOjpGaXhlZFZl
Y3Rvcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpieXRlU2l6
ZSBjb25zdCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpkYXRhKToKKyAgICAgICAgKFdU
Rjo6Rml4ZWRWZWN0b3I6OmJlZ2luKToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OmVuZCk6
CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpyYmVnaW4pOgorICAgICAgICAoV1RGOjpGaXhl
ZFZlY3Rvcjo6cmVuZCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpyYmVnaW4gY29uc3Qp
OgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6cmVuZCBjb25zdCk6CisgICAgICAgIChXVEY6
OkZpeGVkVmVjdG9yOjphdCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjphdCBjb25zdCk6
CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpvcGVyYXRvcltdKToKKyAgICAgICAgKFdURjo6
Rml4ZWRWZWN0b3I6Om9wZXJhdG9yW10gY29uc3QpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rv
cjo6ZmlsbCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpvcGVyYXRvciE9IGNvbnN0KToK
KyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAo
V1RGOjpGaXhlZFZlY3Rvcjo6c3dhcCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpnZXRT
dG9yYWdlKToKKyAgICAgICAgKiB3dGYvUmVmQ291bnRlZEZpeGVkVmVjdG9yLmg6IEFkZGVkLgor
ICAgICAgICAqIHd0Zi9UcmFpbGluZ0FycmF5Lmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpUcmFp
bGluZ0FycmF5OjpUcmFpbGluZ0FycmF5KToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6
flRyYWlsaW5nQXJyYXkpOgorICAgICAgICAoV1RGOjpUcmFpbGluZ0FycmF5OjphbGxvY2F0aW9u
U2l6ZSk6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6OnNpemUgY29uc3QpOgorICAgICAg
ICAoV1RGOjpUcmFpbGluZ0FycmF5Ojppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdURjo6VHJh
aWxpbmdBcnJheTo6Ynl0ZVNpemUgY29uc3QpOgorICAgICAgICAoV1RGOjpUcmFpbGluZ0FycmF5
OjpkYXRhKToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6ZGF0YSBjb25zdCk6CisgICAg
ICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6OmJlZ2luKToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdB
cnJheTo6ZW5kKToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6YmVnaW4gY29uc3QpOgor
ICAgICAgICAoV1RGOjpUcmFpbGluZ0FycmF5OjplbmQgY29uc3QpOgorICAgICAgICAoV1RGOjpU
cmFpbGluZ0FycmF5OjpjYmVnaW4gY29uc3QpOgorICAgICAgICAoV1RGOjpUcmFpbGluZ0FycmF5
OjpjZW5kIGNvbnN0KToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6cmJlZ2luKToKKyAg
ICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6cmVuZCk6CisgICAgICAgIChXVEY6OlRyYWlsaW5n
QXJyYXk6OnJiZWdpbiBjb25zdCk6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6OnJlbmQg
Y29uc3QpOgorICAgICAgICAoV1RGOjpUcmFpbGluZ0FycmF5OjpjcmJlZ2luIGNvbnN0KToKKyAg
ICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6Y3JlbmQgY29uc3QpOgorICAgICAgICAoV1RGOjpU
cmFpbGluZ0FycmF5OjphdCk6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6OmF0IGNvbnN0
KToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6b3BlcmF0b3JbXSk6CisgICAgICAgIChX
VEY6OlRyYWlsaW5nQXJyYXk6Om9wZXJhdG9yW10gY29uc3QpOgorICAgICAgICAoV1RGOjpUcmFp
bGluZ0FycmF5OjpmaXJzdCk6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6OmZpcnN0IGNv
bnN0KToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6bGFzdCk6CisgICAgICAgIChXVEY6
OlRyYWlsaW5nQXJyYXk6Omxhc3QgY29uc3QpOgorICAgICAgICAoV1RGOjpUcmFpbGluZ0FycmF5
OjpmaWxsKToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6b2Zmc2V0T2ZTaXplKToKKyAg
ICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6b2Zmc2V0T2ZEYXRhKToKKwogMjAyMS0xMi0xMCAg
RXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1Nd
IEFkZCBuZXcgc2NyZWVuIGFuZCB3aW5kb3cgY2FwdHVyZSBiYWNrZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggZjI2NmJiNDBhZDA5YmI3ZjJjMThh
N2ZkNTBlZjk3ZjgzNDExOTM5YS4uOTZhMTRmOTYzZjI4OGZhNDk0OGMzOTJjY2EwZjgxZjg1ZDEz
NWE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAt
NTU3LDcgKzU1Nyw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHZv
aWQqIGJhc2VsaW5lSklUQ29uc3RhbnRQb29sKCkKICAgICB7CiAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKG1faml0RGF0YSAmJiBqaXRUeXBlKCkgPT0gSklUVHlwZTo6QmFzZWxpbmVKSVQpOwotICAg
ICAgICByZXR1cm4gbV9qaXREYXRhLT5tX2ppdENvbnN0YW50UG9vbC5kYXRhKCk7CisgICAgICAg
IHJldHVybiBtX2ppdERhdGEtPm1faml0Q29uc3RhbnRQb29sLmdldFN0b3JhZ2UoKTsKICAgICB9
CiAjZW5kaWYKICAgICBzaXplX3QgbnVtYmVyT2ZVbmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMoKSBj
b25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+bnVtYmVyT2ZVbmxpbmtlZFN3aXRjaEp1bXBU
YWJsZXMoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHAKaW5kZXggZDA0NDA1ZDlkNDJmZDFm
NDhjNGI4OWQ1ZjM2ODI2MzYxYWZkZGZiZC4uMWM2ZjU4NThjYWU5ZWY1NDg5ZTE4ZGZkY2E5Yzli
YzUwMTI0ZDY2MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3BwCkBAIC0xMDUsNyArMTA1LDcg
QEAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6
Om1lcmdlZFdpdGgoCiAgICAgVmVjdG9yPE9iamVjdFByb3BlcnR5Q29uZGl0aW9uPiByZXN1bHQ7
CiAgICAgCiAgICAgaWYgKCFpc0VtcHR5KCkpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQobV9kYXRh
LT5tX3ZlY3Rvci5iZWdpbigpLCBtX2RhdGEtPm1fdmVjdG9yLnNpemUoKSk7CisgICAgICAgIHJl
c3VsdC5hcHBlbmQobV9kYXRhLT5iZWdpbigpLCBtX2RhdGEtPnNpemUoKSk7CiAgICAgCiAgICAg
Zm9yIChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgbmV3Q29uZGl0aW9uIDogb3RoZXIp
IHsKICAgICAgICAgYm9vbCBmb3VuZE1hdGNoID0gZmFsc2U7CkBAIC0xNzUsNyArMTc1LDcgQEAg
dm9pZCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6ZHVtcEluQ29udGV4dChQcmludFN0cmVh
bSYgb3V0LCBEdW1wQ29udGV4dCogY28KICAgICAKICAgICBvdXQucHJpbnQoIlsiKTsKICAgICBp
ZiAobV9kYXRhKQotICAgICAgICBvdXQucHJpbnQobGlzdER1bXBJbkNvbnRleHQobV9kYXRhLT5t
X3ZlY3RvciwgY29udGV4dCkpOworICAgICAgICBvdXQucHJpbnQobGlzdER1bXBJbkNvbnRleHQo
Km1fZGF0YSwgY29udGV4dCkpOwogICAgIG91dC5wcmludCgiXSIpOwogfQogCkBAIC0xODksNyAr
MTg5LDcgQEAgYm9vbCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6aXNWYWxpZEFuZFdhdGNo
YWJsZSgpIGNvbnN0CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGZvciAoYXV0byYgY29uZGl0aW9uIDogbV9kYXRhLT5tX3ZlY3RvcikgeworICAgIGZv
ciAoYXV0byYgY29uZGl0aW9uIDogKm1fZGF0YSkgewogICAgICAgICBpZiAoIWNvbmRpdGlvbi5p
c1dhdGNoYWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0LmgKaW5kZXggYmU3M2ZkYjVlNWE3YTlmZjFiNzUyNzIwMjUyOTNjYjYyYTU4NDRm
ZS4uOGY1ZWY4Y2M2MWE3MmE4MTllZmQ5MjgzNTdiYTgzODY0YWVhNjlhMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0LmgKQEAgLTI3LDggKzI3LDggQEAKIAogI2luY2x1ZGUgIk9iamVjdFByb3BlcnR5
Q29uZGl0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYv
Rml4ZWRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWRGaXhlZFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CkBAIC00MywxMiArNDMsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IHsKIHB1YmxpYzoKLSAgICBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCgpIHsgfQorICAgIHVzaW5nIENvbmRpdGlvbnMgPSBUaHJlYWRTYWZlUmVmQ291
bnRlZEZpeGVkVmVjdG9yPE9iamVjdFByb3BlcnR5Q29uZGl0aW9uPjsKKworICAgIE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0KCkgPSBkZWZhdWx0OwogICAgIAogICAgIHN0YXRpYyBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldCBpbnZhbGlkKCkKICAgICB7CiAgICAgICAgIE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uU2V0IHJlc3VsdDsKLSAgICAgICAgcmVzdWx0Lm1fZGF0YSA9IGFkb3B0UmVm
KG5ldyBEYXRhKCkpOworICAgICAgICByZXN1bHQubV9kYXRhID0gQ29uZGl0aW9uczo6Y3JlYXRl
KDApOworICAgICAgICBBU1NFUlQocmVzdWx0Lm1fZGF0YSk7CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogICAgIApAQCAtNTgsMTkgKzYxLDE5IEBAIGNsYXNzIE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0IHsKICAgICAgICAgICAgIHJldHVybiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldCgpOwogICAgICAgICAKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgcmVz
dWx0OwotICAgICAgICByZXN1bHQubV9kYXRhID0gYWRvcHRSZWYobmV3IERhdGEoKSk7Ci0gICAg
ICAgIHJlc3VsdC5tX2RhdGEtPm1fdmVjdG9yID0gRml4ZWRWZWN0b3I8T2JqZWN0UHJvcGVydHlD
b25kaXRpb24+KFdURk1vdmUodmVjdG9yKSk7CisgICAgICAgIEFTU0VSVCghdmVjdG9yLmlzRW1w
dHkoKSk7CisgICAgICAgIHJlc3VsdC5tX2RhdGEgPSBDb25kaXRpb25zOjpjcmVhdGVGcm9tVmVj
dG9yKFdURk1vdmUodmVjdG9yKSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAg
IAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gIW1fZGF0
YSB8fCAhbV9kYXRhLT5tX3ZlY3Rvci5pc0VtcHR5KCk7CisgICAgICAgIHJldHVybiAhbV9kYXRh
IHx8ICFtX2RhdGEtPmlzRW1wdHkoKTsKICAgICB9CiAKICAgICBib29sIGlzVmFsaWRBbmRXYXRj
aGFibGUoKSBjb25zdDsKIAotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
ID8gbV9kYXRhLT5tX3ZlY3Rvci5zaXplKCkgOiAwOyB9CisgICAgc2l6ZV90IHNpemUoKSBjb25z
dCB7IHJldHVybiBtX2RhdGEgPyBtX2RhdGEtPnNpemUoKSA6IDA7IH0KICAgICBib29sIGlzRW1w
dHkoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICFtX2RhdGE7CkBAIC04MiwxMyArODUs
MTMgQEAgY2xhc3MgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgewogICAgIHsKICAgICAgICAg
aWYgKCFtX2RhdGEpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJu
IG1fZGF0YS0+bV92ZWN0b3IuYmVnaW4oKTsKKyAgICAgICAgcmV0dXJuIG1fZGF0YS0+YmVnaW4o
KTsKICAgICB9CiAgICAgaXRlcmF0b3IgZW5kKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICgh
bV9kYXRhKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBtX2Rh
dGEtPm1fdmVjdG9yLmVuZCgpOworICAgICAgICByZXR1cm4gbV9kYXRhLT5lbmQoKTsKICAgICB9
CiAKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKQEAgLTE1MSwyNCArMTU0LDYgQEAgY2xhc3Mg
T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgewogICAgIAogICAgIHZvaWQgZHVtcEluQ29udGV4
dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0KikgY29uc3Q7CiAgICAgdm9pZCBkdW1wKFByaW50
U3RyZWFtJikgY29uc3Q7Ci0gICAgCi0gICAgLy8gSGVscGVycyBmb3IgdXNpbmcgdGhpcyBpbiBh
IHVuaW9uLgotICAgIHZvaWQqIHJlbGVhc2VSYXdQb2ludGVyKCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDx2b2lkKj4obV9kYXRhLmxlYWtSZWYoKSk7Ci0gICAgfQotICAgIHN0
YXRpYyBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBhZG9wdFJhd1BvaW50ZXIodm9pZCogcmF3
UG9pbnRlcikKLSAgICB7Ci0gICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IHJlc3Vs
dDsKLSAgICAgICAgcmVzdWx0Lm1fZGF0YSA9IGFkb3B0UmVmKHN0YXRpY19jYXN0PERhdGEqPihy
YXdQb2ludGVyKSk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIHN0YXRpYyBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBmcm9tUmF3UG9pbnRlcih2b2lkKiByYXdQb2ludGVy
KQotICAgIHsKLSAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgcmVzdWx0OwotICAg
ICAgICByZXN1bHQubV9kYXRhID0gc3RhdGljX2Nhc3Q8RGF0YSo+KHJhd1BvaW50ZXIpOwotICAg
ICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KIAogICAgIC8vIEZJWE1FOiBFdmVyeXRoaW5nIGJl
bG93IGhlcmUgc2hvdWxkIGJlIHByaXZhdGUsIGJ1dCBjYW5ub3QgYmUgYmVjYXVzZSBvZiBhIGJ1
ZyBpbiBWUy4KICAgICAKQEAgLTE3NywxOSArMTYyLDkgQEAgY2xhc3MgT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXQgewogICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGJlIG1hZGUgbW9yZSBjb21w
YWN0IGJ5IGhhdmluZyBpdCBpbnRlcm5hbGx5IHVzZSBhIHZlY3RvciB0aGF0IGp1c3QgaGFzCiAg
ICAgLy8gdGhlIG5vbi11aWQgcG9ydGlvbiBvZiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiwgYW5k
IHRoZW4gcmVxdWlyaW5nIHRoYXQgdGhlIGNhbGxlcnMgb2YgYWxsCiAgICAgLy8gb2YgdGhlIEFQ
SXMgc3VwcGx5IHRoZSB1aWQuCi0gICAgCi0gICAgY2xhc3MgRGF0YSA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxEYXRhPiB7Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERhdGEp
OwotICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICAgICAgCi0gICAgcHVibGlj
OgotICAgICAgICBEYXRhKCkgeyB9Ci0gICAgICAgIAotICAgICAgICBGaXhlZFZlY3RvcjxPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbj4gbV92ZWN0b3I7Ci0gICAgfTsKLSAgICAKKwogcHJpdmF0ZToK
LSAgICBSZWZQdHI8RGF0YT4gbV9kYXRhOworICAgIFJlZlB0cjxDb25kaXRpb25zPiBtX2RhdGE7
CiB9OwogCiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBnZW5lcmF0ZUNvbmRpdGlvbkZvclNlbGZF
cXVpdmFsZW5jZSgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBmNTdhNmUxMzQ1MDU4
ZmRiZTg0MjM4ZjIyNzM3NjU3ZDA2Mzk5YTBiLi5jNTE1YzM5NTQyMWMzYWYyZDgyOTBhM2FhZWM2
MzUzMjkxZDQxZjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC03OTksNyArNzk5
LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcoSklUQ29tcGls
YXRpb25FZmZvcnQgZWZmb3J0KQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgICAgICBpbnQgb2Zmc2V0ID0gQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGlu
Z1RoaXMoYXJndW1lbnQpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKTsKICAg
ICAgICAgICAgICAgICBsb2FkVmFsdWUoQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3Rlciwgb2Zmc2V0
KSwganNSZWdUMTApOwotICAgICAgICAgICAgICAgIHN0b3JlVmFsdWUoanNSZWdUMTAsIEFkZHJl
c3MocmVnVDIsIGFyZ3VtZW50ICogc2l6ZW9mKFZhbHVlUHJvZmlsZSkgKyBWYWx1ZVByb2ZpbGU6
Om9mZnNldE9mRmlyc3RCdWNrZXQoKSkpOworICAgICAgICAgICAgICAgIHN0b3JlVmFsdWUoanNS
ZWdUMTAsIEFkZHJlc3MocmVnVDIsIEZpeGVkVmVjdG9yPFZhbHVlUHJvZmlsZT46OlN0b3JhZ2U6
Om9mZnNldE9mRGF0YSgpICsgYXJndW1lbnQgKiBzaXplb2YoVmFsdWVQcm9maWxlKSArIFZhbHVl
UHJvZmlsZTo6b2Zmc2V0T2ZGaXJzdEJ1Y2tldCgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IDE3ZjQ2
ZjdhMmQ4OTQ0MzhjM2I5YTBkZTY1YzZmMzFiODZjNjQ0MWMuLjU4NjQxMmJjNDdlZTZiYjc0MGVm
MTUyMDg0ZWYyY2EyMWE2YjE1OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
cy5oCkBAIC01MDUsNyArNTA1LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6bWF0ZXJpYWxp
emVQb2ludGVySW50b01ldGFkYXRhKGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSwKIAogQUxXQVlT
X0lOTElORSB2b2lkIEpJVDo6bG9hZENvbnN0YW50KEpJVENvbnN0YW50UG9vbDo6Q29uc3RhbnQg
Y29uc3RhbnRJbmRleCwgR1BSUmVnIHJlc3VsdCkKIHsKLSAgICBsb2FkUHRyKEFkZHJlc3Moc19j
b25zdGFudHNHUFIsIHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oY29uc3RhbnRJbmRleCkgKiBzaXpl
b2Yodm9pZCopKSwgcmVzdWx0KTsKKyAgICBsb2FkUHRyKEFkZHJlc3Moc19jb25zdGFudHNHUFIs
IEZpeGVkVmVjdG9yPHZvaWQqPjo6U3RvcmFnZTo6b2Zmc2V0T2ZEYXRhKCkgKyBzdGF0aWNfY2Fz
dDx1aW50cHRyX3Q+KGNvbnN0YW50SW5kZXgpICogc2l6ZW9mKHZvaWQqKSksIHJlc3VsdCk7CiB9
CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmxvYWRHbG9iYWxPYmplY3QoR1BSUmVnIHJlc3Vs
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNF
eHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4
dHJhY3Rvci5jcHAKaW5kZXggYjJjYWExODU0MTMwZmY4YjkzMTgwNzZkMjdkZmViZGQyMTMzODQ0
MS4uMzk3YjA1ZDg2YTA3MTJhN2EzOGNhMDIxZDIzMmNiMmQ5ZGI1MWI5MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAK
QEAgLTg3LDggKzg3LDEzIEBAIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvciB7CiAgICAgLy8g
VGhlc2UgdHlwZXMgYXJlIHVzZWZ1bCBzaW5jZSB3ZSBjYW4ndCB1c2UgJzwuLi4+JyBzeW50YXgg
aW4gTExJbnQgb2Zmc2V0cyBleHRyYWN0aW9uLiBlLmcuIFZlY3RvcjxpbnQ+OjptX2RhdGEKICAg
ICB1c2luZyBWZWN0b3IgPSBXVEY6OlZlY3RvcjxpbnQ+OwogICAgIHVzaW5nIEpTSW50ZXJuYWxG
aWVsZE9iamVjdEltcGwgPSBKU0M6OkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8PjsKLSAgICB1
c2luZyBGaXhlZFZlY3RvciA9IFdURjo6Rml4ZWRWZWN0b3I8aW50PjsKLSAgICB1c2luZyBSZWZD
b3VudGVkQXJyYXkgPSBXVEY6OlJlZkNvdW50ZWRBcnJheTxpbnQ+OworICAgIHVzaW5nIFZhbHVl
UHJvZmlsZUZpeGVkVmVjdG9yID0gV1RGOjpGaXhlZFZlY3RvcjxWYWx1ZVByb2ZpbGU+OworICAg
IHVzaW5nIEJpbmFyeUFyaXRoUHJvZmlsZUZpeGVkVmVjdG9yID0gRml4ZWRWZWN0b3I8QmluYXJ5
QXJpdGhQcm9maWxlPjsKKyAgICB1c2luZyBVbmFyeUFyaXRoUHJvZmlsZUZpeGVkVmVjdG9yID0g
Rml4ZWRWZWN0b3I8VW5hcnlBcml0aFByb2ZpbGU+OworICAgIHVzaW5nIFVubGlua2VkU2ltcGxl
SnVtcFRhYmxlRml4ZWRWZWN0b3IgPSBGaXhlZFZlY3RvcjxVbmxpbmtlZFNpbXBsZUp1bXBUYWJs
ZT47CisgICAgdXNpbmcgVW5saW5rZWRTdHJpbmdKdW1wVGFibGVGaXhlZFZlY3RvciA9IEZpeGVk
VmVjdG9yPFVubGlua2VkU3RyaW5nSnVtcFRhYmxlPjsKKyAgICB1c2luZyBJbnQzMkZpeGVkVmVj
dG9yID0gRml4ZWRWZWN0b3I8aW50MzJfdD47CisgICAgdXNpbmcgVm9pZFBvaW50ZXJGaXhlZFZl
Y3RvciA9IEZpeGVkVmVjdG9yPHZvaWQqPjsKIAogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBp
bnQ2NF90KiBkdW1teSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGQyMTM5NmU5OGZhMGJjNDg5Yjg5Nzk2ODc3YzYy
NGZlOTZjMmUwNmIuLjEyMTBkYzFjMDlhNGY1NDU0NjIxOGZkNjZhZWZlYjA4OGU0YTAwZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20KQEAgLTYyMyw4ICs2MjMsNiBAQCBjb25zdCBCbGFja1RocmVzaG9sZCA9IGNvbnN0ZXhw
ciBibGFja1RocmVzaG9sZAogY29uc3QgVmVjdG9yQnVmZmVyT2Zmc2V0ID0gVmVjdG9yOjptX2J1
ZmZlcgogY29uc3QgVmVjdG9yU2l6ZU9mZnNldCA9IFZlY3Rvcjo6bV9zaXplCiAKLWNvbnN0IFJl
ZkNvdW50ZWRBcnJheVN0b3JhZ2VOb25OdWxsU2l6ZU9mZnNldCA9IC0oY29uc3RleHByIChSZWZD
b3VudGVkQXJyYXk6OkhlYWRlcjo6c2l6ZSgpKSkgKyBSZWZDb3VudGVkQXJyYXk6OkhlYWRlcjo6
bGVuZ3RoCi0KICMgU29tZSBjb21tb24gdXRpbGl0aWVzLgogbWFjcm8gY3Jhc2goKQogICAgIGlm
IENfTE9PUCBvciBDX0xPT1BfV0lOCkBAIC0xNjc3LDEwICsxNjc1LDExIEBAIG1hY3JvIGZ1bmN0
aW9uSW5pdGlhbGl6YXRpb24ocHJvZmlsZUFyZ1NraXApCiAgICAgYWRkcCAtcHJvZmlsZUFyZ1Nr
aXAsIHQwCiAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnBndGVxIHQwLCAwLCBvayBlbmQpCiAgICAg
YnRweiB0MCwgLmFyZ3VtZW50UHJvZmlsZURvbmUKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fYXJn
dW1lbnRWYWx1ZVByb2ZpbGVzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRB
cnJheTo6bV9kYXRhW3QxXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fYXJndW1lbnRWYWx1
ZVByb2ZpbGVzICsgVmFsdWVQcm9maWxlRml4ZWRWZWN0b3I6Om1fc3RvcmFnZVt0MV0sIHQzCiAg
ICAgYnRweiB0MywgLmFyZ3VtZW50UHJvZmlsZURvbmUgIyBXaGVuIHdlIGNhbid0IEpJVCwgd2Ug
ZG9uJ3QgYWxsb2NhdGUgYW55IGFyZ3VtZW50IHZhbHVlIHByb2ZpbGVzLgogICAgIG11bHAgc2l6
ZW9mIFZhbHVlUHJvZmlsZSwgdDAsIHQyICMgQWFhYWFoaGhoISBOZWVkIHN0cmVuZ3RoIHJlZHVj
dGlvbiEKICAgICBsc2hpZnRwIDMsIHQwICMgb2Zmc2V0IG9mIGxhc3QgSlNWYWx1ZSBhcmd1bWVu
dHMgb24gdGhlIHN0YWNrLgorICAgIGFkZHAgKGNvbnN0ZXhwciAoVmFsdWVQcm9maWxlRml4ZWRW
ZWN0b3I6OlN0b3JhZ2U6Om9mZnNldE9mRGF0YSgpKSksIHQzCiAgICAgYWRkcCB0MiwgdDMgIyBw
b2ludGVyIHRvIGVuZCBvZiBWYWx1ZVByb2ZpbGUgYXJyYXkgaW4gdGhlIHZhbHVlIHByb2ZpbGUg
YXJyYXkuCiAuYXJndW1lbnRQcm9maWxlTG9vcDoKICAgICBpZiBKU1ZBTFVFNjQKQEAgLTI2MTAs
NyArMjYwOSw3IEBAIGlmIEpJVAogICAgICAgICAjIEJhc2VsaW5lIHVzZXMgTExJbnQncyBQQiBy
ZWdpc3RlciBmb3IgaXRzIEpJVCBjb25zdGFudCBwb29sLgogICAgICAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgUEIKICAgICAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2ppdERhdGFbUEJdLCBQQgot
ICAgICAgICBsb2FkcCBDb2RlQmxvY2s6OkpJVERhdGE6Om1faml0Q29uc3RhbnRQb29sW1BCXSwg
UEIKKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrOjpKSVREYXRhOjptX2ppdENvbnN0YW50UG9vbCAr
IFZvaWRQb2ludGVyRml4ZWRWZWN0b3I6Om1fc3RvcmFnZVtQQl0sIFBCCiAgICAgZW5kCiAKICAg
ICBtYWNybyBzZXR1cFJldHVyblRvQmFzZWxpbmVBZnRlckNoZWNrcG9pbnRFeGl0SWZOZWVkZWQo
KQpAQCAtMjcyNSwxNiArMjcyNCwxNiBAQCBtYWNybyB1cGRhdGVVbmFyeUFyaXRoUHJvZmlsZShz
aXplLCBvcGNvZGVTdHJ1Y3QsIHR5cGUsIHNjcmF0Y2gxLCBzY3JhdGNoMikKICAgICBnZXR1KHNp
emUsIG9wY29kZVN0cnVjdCwgbV9wcm9maWxlSW5kZXgsIHNjcmF0Y2gxKQogICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCBzY3JhdGNoMgogICAgIGxvYWRwIENvZGVCbG9jazo6bV91bmxpbmtlZENv
ZGVbc2NyYXRjaDJdLCBzY3JhdGNoMgotICAgIGxvYWRwIFVubGlua2VkQ29kZUJsb2NrOjptX3Vu
YXJ5QXJpdGhQcm9maWxlcyArIEZpeGVkVmVjdG9yOjptX3N0b3JhZ2UgKyBSZWZDb3VudGVkQXJy
YXk6Om1fZGF0YVtzY3JhdGNoMl0sIHNjcmF0Y2gyCi0gICAgb3JoIHR5cGUsIFVuYXJ5QXJpdGhQ
cm9maWxlOjptX2JpdHNbc2NyYXRjaDIsIHNjcmF0Y2gxLCAyXQorICAgIGxvYWRwIFVubGlua2Vk
Q29kZUJsb2NrOjptX3VuYXJ5QXJpdGhQcm9maWxlcyArIFVuYXJ5QXJpdGhQcm9maWxlRml4ZWRW
ZWN0b3I6Om1fc3RvcmFnZVtzY3JhdGNoMl0sIHNjcmF0Y2gyCisgICAgb3JoIHR5cGUsIChjb25z
dGV4cHIgKFVuYXJ5QXJpdGhQcm9maWxlRml4ZWRWZWN0b3I6OlN0b3JhZ2U6Om9mZnNldE9mRGF0
YSgpKSkgKyBVbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3NjcmF0Y2gyLCBzY3JhdGNoMSwgMl0K
IGVuZAogCiBtYWNybyB1cGRhdGVCaW5hcnlBcml0aFByb2ZpbGUoc2l6ZSwgb3Bjb2RlU3RydWN0
LCB0eXBlLCBzY3JhdGNoMSwgc2NyYXRjaDIpCiAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3Qs
IG1fcHJvZmlsZUluZGV4LCBzY3JhdGNoMSkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgc2Ny
YXRjaDIKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fdW5saW5rZWRDb2RlW3NjcmF0Y2gyXSwgc2Ny
YXRjaDIKLSAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6bV9iaW5hcnlBcml0aFByb2ZpbGVz
ICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3NjcmF0
Y2gyXSwgc2NyYXRjaDIKLSAgICBvcmggdHlwZSwgQmluYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNb
c2NyYXRjaDIsIHNjcmF0Y2gxLCAyXQorICAgIGxvYWRwIFVubGlua2VkQ29kZUJsb2NrOjptX2Jp
bmFyeUFyaXRoUHJvZmlsZXMgKyBCaW5hcnlBcml0aFByb2ZpbGVGaXhlZFZlY3Rvcjo6bV9zdG9y
YWdlW3NjcmF0Y2gyXSwgc2NyYXRjaDIKKyAgICBvcmggdHlwZSwgKGNvbnN0ZXhwciAoQmluYXJ5
QXJpdGhQcm9maWxlRml4ZWRWZWN0b3I6OlN0b3JhZ2U6Om9mZnNldE9mRGF0YSgpKSkgKyBCaW5h
cnlBcml0aFByb2ZpbGU6Om1fYml0c1tzY3JhdGNoMiwgc2NyYXRjaDEsIDJdCiBlbmQKIAogLy8g
RklYTUU6IFdlIHNob3VsZCBub3QgbmVlZCB0aGUgWDg2XzY0X1dJTiBjb25kaXRpb24gaGVyZSwg
c2luY2UgV0VCQVNTRU1CTFkgc2hvdWxkIGFscmVhZHkgYmUgZmFsc2Ugb24gV2luZG93cwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIz
Ml82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbQppbmRleCBjZjFlYTIxNDI0MmI0YmY0ZWE1MTViOGZhYzQ1NTE2ZGUwN2JmZjg3
Li42MDU1MDFhZTA5MjQzNDgxMzgwNTdhZGMxZmE1NDQyYTc4MmRiYzA3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbQpAQCAtMjA5OSwxNCArMjA5OSwxNSBAQCBsbGludE9wV2l0aEp1bXAob3Bfc3dpdGNoX2lt
bSwgT3BTd2l0Y2hJbW0sIG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRpc3BhdGNoKQogICAgIGxv
YWRwIENvZGVCbG9jazo6bV91bmxpbmtlZENvZGVbdDJdLCB0MgogICAgIGxvYWRwIFVubGlua2Vk
Q29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKICAgICBtdWxpIHNpemVvZiBVbmxpbmtlZFNp
bXBsZUp1bXBUYWJsZSwgdDMKLSAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6UmFyZURhdGE6
Om1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJl
ZkNvdW50ZWRBcnJheTo6bV9kYXRhW3QyXSwgdDIKKyAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9j
azo6UmFyZURhdGE6Om1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzICsgVW5saW5rZWRTaW1wbGVK
dW1wVGFibGVGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlW3QyXSwgdDIKKyAgICBhZGRwIChjb25zdGV4
cHIgKFVubGlua2VkU2ltcGxlSnVtcFRhYmxlRml4ZWRWZWN0b3I6OlN0b3JhZ2U6Om9mZnNldE9m
RGF0YSgpKSksIHQyCiAgICAgYWRkcCB0MywgdDIKICAgICBiaW5lcSB0MSwgSW50MzJUYWcsIC5v
cFN3aXRjaEltbU5vdEludAogICAgIHN1YmkgVW5saW5rZWRTaW1wbGVKdW1wVGFibGU6Om1fbWlu
W3QyXSwgdDAKLSAgICBsb2FkcCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZTo6bV9icmFuY2hPZmZz
ZXRzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3Qy
XSwgdDIKKyAgICBsb2FkcCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZTo6bV9icmFuY2hPZmZzZXRz
ICsgSW50MzJGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlW3QyXSwgdDIKICAgICBidHB6IHQyLCAub3BT
d2l0Y2hJbW1GYWxsVGhyb3VnaAotICAgIGJpYWVxIHQwLCBSZWZDb3VudGVkQXJyYXlTdG9yYWdl
Tm9uTnVsbFNpemVPZmZzZXRbdDJdLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAotICAgIGxvYWRp
IFt0MiwgdDAsIDRdLCB0MQorICAgIGJpYWVxIHQwLCBJbnQzMkZpeGVkVmVjdG9yOjpTdG9yYWdl
OjptX3NpemVbdDJdLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAorICAgIGxvYWRpIChjb25zdGV4
cHIgKEludDMyRml4ZWRWZWN0b3I6OlN0b3JhZ2U6Om9mZnNldE9mRGF0YSgpKSlbdDIsIHQwLCA0
XSwgdDEKICAgICBidGl6IHQxLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAogICAgIGRpc3BhdGNo
SW5kaXJlY3QodDEpCiAKQEAgLTIxMjksNyArMjEzMCw4IEBAIGxsaW50T3BXaXRoSnVtcChvcF9z
d2l0Y2hfY2hhciwgT3BTd2l0Y2hDaGFyLCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRj
aCkKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fdW5saW5rZWRDb2RlW3QyXSwgdDIKICAgICBsb2Fk
cCBVbmxpbmtlZENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCiAgICAgbXVsaSBzaXplb2Yg
VW5saW5rZWRTaW1wbGVKdW1wVGFibGUsIHQzCi0gICAgbG9hZHAgVW5saW5rZWRDb2RlQmxvY2s6
OlJhcmVEYXRhOjptX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlcyArIEZpeGVkVmVjdG9yOjptX3N0
b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0Ml0sIHQyCisgICAgbG9hZHAgVW5saW5r
ZWRDb2RlQmxvY2s6OlJhcmVEYXRhOjptX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlcyArIFVubGlu
a2VkU2ltcGxlSnVtcFRhYmxlRml4ZWRWZWN0b3I6Om1fc3RvcmFnZVt0Ml0sIHQyCisgICAgYWRk
cCAoY29uc3RleHByIChVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZUZpeGVkVmVjdG9yOjpTdG9yYWdl
OjpvZmZzZXRPZkRhdGEoKSkpLCB0MgogICAgIGFkZHAgdDMsIHQyCiAgICAgYmluZXEgdDEsIENl
bGxUYWcsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAogICAgIGJibmVxIEpTQ2VsbDo6bV90eXBl
W3QwXSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCkBAIC0yMTQ0LDEwICsy
MTQ2LDEwIEBAIGxsaW50T3BXaXRoSnVtcChvcF9zd2l0Y2hfY2hhciwgT3BTd2l0Y2hDaGFyLCBt
YWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKICAgICBsb2FkYiBbdDBdLCB0MAogLm9w
U3dpdGNoQ2hhclJlYWR5OgogICAgIHN1YmkgVW5saW5rZWRTaW1wbGVKdW1wVGFibGU6Om1fbWlu
W3QyXSwgdDAKLSAgICBsb2FkcCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZTo6bV9icmFuY2hPZmZz
ZXRzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3Qy
XSwgdDIKKyAgICBsb2FkcCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZTo6bV9icmFuY2hPZmZzZXRz
ICsgSW50MzJGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlW3QyXSwgdDIKICAgICBidHB6IHQyLCAub3BT
d2l0Y2hDaGFyRmFsbFRocm91Z2gKLSAgICBiaWFlcSB0MCwgUmVmQ291bnRlZEFycmF5U3RvcmFn
ZU5vbk51bGxTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCi0gICAgbG9h
ZGkgW3QyLCB0MCwgNF0sIHQxCisgICAgYmlhZXEgdDAsIEludDMyRml4ZWRWZWN0b3I6OlN0b3Jh
Z2U6Om1fc2l6ZVt0Ml0sIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRpIChjb25z
dGV4cHIgKEludDMyRml4ZWRWZWN0b3I6OlN0b3JhZ2U6Om9mZnNldE9mRGF0YSgpKSlbdDIsIHQw
LCA0XSwgdDEKICAgICBidGl6IHQxLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKICAgICBkaXNw
YXRjaEluZGlyZWN0KHQxKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGEyM2RlNjBlMGVkODg0NzZlNTUxOGMx
NWVhMDM5NDYxMDRjYzkxN2UuLjcxZWNhMTBhNzY2MDBjMzkxOGYzNjM0YjRlYWNlZjcwOGEzYTk0
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtCkBAIC0yMjkyLDE0ICsyMjkyLDE1IEBAIGxsaW50T3BXaXRoSnVtcChv
cF9zd2l0Y2hfaW1tLCBPcFN3aXRjaEltbSwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0
Y2gpCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX3VubGlua2VkQ29kZVt0Ml0sIHQyCiAgICAgbG9h
ZHAgVW5saW5rZWRDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0MgogICAgIG11bGkgc2l6ZW9m
IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlLCB0MwotICAgIGxvYWRwIFVubGlua2VkQ29kZUJsb2Nr
OjpSYXJlRGF0YTo6bV91bmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMgKyBGaXhlZFZlY3Rvcjo6bV9z
dG9yYWdlICsgUmVmQ291bnRlZEFycmF5OjptX2RhdGFbdDJdLCB0MgorICAgIGxvYWRwIFVubGlu
a2VkQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV91bmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMgKyBVbmxp
bmtlZFNpbXBsZUp1bXBUYWJsZUZpeGVkVmVjdG9yOjptX3N0b3JhZ2VbdDJdLCB0MgorICAgIGFk
ZHAgKGNvbnN0ZXhwciAoVW5saW5rZWRTaW1wbGVKdW1wVGFibGVGaXhlZFZlY3Rvcjo6U3RvcmFn
ZTo6b2Zmc2V0T2ZEYXRhKCkpKSwgdDIKICAgICBhZGRwIHQzLCB0MgogICAgIGJxYiB0MSwgbnVt
YmVyVGFnLCAub3BTd2l0Y2hJbW1Ob3RJbnQKICAgICBzdWJpIFVubGlua2VkU2ltcGxlSnVtcFRh
YmxlOjptX21pblt0Ml0sIHQxCi0gICAgbG9hZHAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGU6Om1f
YnJhbmNoT2Zmc2V0cyArIEZpeGVkVmVjdG9yOjptX3N0b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6
Om1fZGF0YVt0Ml0sIHQyCisgICAgbG9hZHAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGU6Om1fYnJh
bmNoT2Zmc2V0cyArIEludDMyRml4ZWRWZWN0b3I6Om1fc3RvcmFnZVt0Ml0sIHQyCiAgICAgYnRw
eiB0MiwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKLSAgICBiaWFlcSB0MSwgUmVmQ291bnRlZEFy
cmF5U3RvcmFnZU5vbk51bGxTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gK
LSAgICBsb2FkaXMgW3QyLCB0MSwgNF0sIHQxCisgICAgYmlhZXEgdDEsIEludDMyRml4ZWRWZWN0
b3I6OlN0b3JhZ2U6Om1fc2l6ZVt0Ml0sIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCisgICAgbG9h
ZGlzIChjb25zdGV4cHIgKEludDMyRml4ZWRWZWN0b3I6OlN0b3JhZ2U6Om9mZnNldE9mRGF0YSgp
KSlbdDIsIHQxLCA0XSwgdDEKICAgICBidGl6IHQxLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAog
ICAgIGRpc3BhdGNoSW5kaXJlY3QodDEpCiAKQEAgLTIzMjIsNyArMjMyMyw4IEBAIGxsaW50T3BX
aXRoSnVtcChvcF9zd2l0Y2hfY2hhciwgT3BTd2l0Y2hDaGFyLCBtYWNybyAoc2l6ZSwgZ2V0LCBq
dW1wLCBkaXNwYXRjaCkKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fdW5saW5rZWRDb2RlW3QyXSwg
dDIKICAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCiAgICAg
bXVsaSBzaXplb2YgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUsIHQzCi0gICAgbG9hZHAgVW5saW5r
ZWRDb2RlQmxvY2s6OlJhcmVEYXRhOjptX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlcyArIEZpeGVk
VmVjdG9yOjptX3N0b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0Ml0sIHQyCisgICAg
bG9hZHAgVW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhOjptX3VubGlua2VkU3dpdGNoSnVtcFRh
YmxlcyArIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlRml4ZWRWZWN0b3I6Om1fc3RvcmFnZVt0Ml0s
IHQyCisgICAgYWRkcCAoY29uc3RleHByIChVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZUZpeGVkVmVj
dG9yOjpTdG9yYWdlOjpvZmZzZXRPZkRhdGEoKSkpLCB0MgogICAgIGFkZHAgdDMsIHQyCiAgICAg
YnRxbnogdDEsIG5vdENlbGxNYXNrLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKICAgICBiYm5l
cSBKU0NlbGw6Om1fdHlwZVt0MV0sIFN0cmluZ1R5cGUsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3Vn
aApAQCAtMjMzNywxMCArMjMzOSwxMCBAQCBsbGludE9wV2l0aEp1bXAob3Bfc3dpdGNoX2NoYXIs
IE9wU3dpdGNoQ2hhciwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCiAgICAgbG9h
ZGIgW3QxXSwgdDAKIC5vcFN3aXRjaENoYXJSZWFkeToKICAgICBzdWJpIFVubGlua2VkU2ltcGxl
SnVtcFRhYmxlOjptX21pblt0Ml0sIHQwCi0gICAgbG9hZHAgVW5saW5rZWRTaW1wbGVKdW1wVGFi
bGU6Om1fYnJhbmNoT2Zmc2V0cyArIEZpeGVkVmVjdG9yOjptX3N0b3JhZ2UgKyBSZWZDb3VudGVk
QXJyYXk6Om1fZGF0YVt0Ml0sIHQyCisgICAgbG9hZHAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGU6
Om1fYnJhbmNoT2Zmc2V0cyArIEludDMyRml4ZWRWZWN0b3I6Om1fc3RvcmFnZVt0Ml0sIHQyCiAg
ICAgYnRweiB0MiwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCi0gICAgYmlhZXEgdDAsIFJlZkNv
dW50ZWRBcnJheVN0b3JhZ2VOb25OdWxsU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaENoYXJGYWxs
VGhyb3VnaAotICAgIGxvYWRpcyBbdDIsIHQwLCA0XSwgdDEKKyAgICBiaWFlcSB0MCwgSW50MzJG
aXhlZFZlY3Rvcjo6U3RvcmFnZTo6bV9zaXplW3QyXSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdo
CisgICAgbG9hZGlzIChjb25zdGV4cHIgKEludDMyRml4ZWRWZWN0b3I6OlN0b3JhZ2U6Om9mZnNl
dE9mRGF0YSgpKSlbdDIsIHQwLCA0XSwgdDEKICAgICBidGl6IHQxLCAub3BTd2l0Y2hDaGFyRmFs
bFRocm91Z2gKICAgICBkaXNwYXRjaEluZGlyZWN0KHQxKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3YzhkMzU0ZWQ2NTNiOWFkNWRlYWZhMTRiODllYjBi
NjExN2FkOWE0Li40OTM3M2U2ZjE3YzE3NGJlYjBhNjI3YTBkOTc3MTQ4OWRiZTM3MTFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc1OCw2ICs3NTgsOCBA
QAogCQlFMzM5QzE2MzI0NEI0RTg3MDAzNTlEQTkgLyogRGF0YVJlZi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhUmVmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzM0Q1Rjg3MUZCRUQ2NjcwMEJGNjI1RSAvKiBSZWN1cnNhYmxlTGFtYmRhLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlY3Vyc2FibGVMYW1iZGEuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM0Q0QwRDAyMjgxMEEwMjAwMjBEMjk5IC8qIFBhY2tlZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQYWNrZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTM1MzhENEMyNzYyMjA4ODAwNzVEQTUwIC8qIEVtYmVkZGVkRml4ZWRWZWN0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRW1iZWRkZWRGaXhlZFZlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFMzUzOEQ0RDI3NjIyMDg4MDA3NURBNTAgLyogVHJhaWxpbmdBcnJheS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUcmFpbGluZ0FycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
NjBDNzY0MjEyN0I4NUIwMEM5MEYwRSAvKiBVbmFsaWduZWRBY2Nlc3MuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVW5hbGlnbmVkQWNjZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzNjBDNzY1MjEyN0I4NUMwMEM5MEYwRSAvKiBVbmV4cGVjdGVkLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuZXhwZWN0ZWQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTM2ODk1Q0IyM0E0NDVDRDAwOERENEM4IC8qIFBhY2tlZFJlZi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQYWNrZWRSZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTc4MSw2ICs3ODMsNyBAQAogCQlFM0UwRjA0RjI2MTk3MTU3MDA0NjQwRkMgLyogRml4ZWRW
ZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRml4ZWRWZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTNFMTU4MjUxRUFEQTUzQzAwNEEwNzlEIC8qIFN5c3RlbUZyZWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3lzdGVtRnJlZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFM0U2NEYwQjIyODEzNDI4MDAxRTU1QjQgLyogTm9ubW92YWJsZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBOb25tb3ZhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzRTgxNjJGMjc2NDc5OTMwMEJBQTQ1QiAvKiBSZWZDb3VudGVkRml4ZWRWZWN0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVmQ291bnRlZEZpeGVkVmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUU0MTlGMkU2MjNBQjlFMjMwMEIyNjEyOSAvKiBWZWN0b3JIYXNoLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZlY3Rvckhhc2guaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTQzMUNDNEEyMTE4N0FEQjAwMEM4QTA3IC8qIERpc3BhdGNoU1BJ
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BhdGNoU1BJLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0QTBBRDM3MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3Jr
UXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya1F1ZXVl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNzEsNiArMTA3NCw3IEBACiAJ
CQkJQThBNDcyODAxNTFBODI1QTAwNDEyM0ZGIC8qIERvdWJseUxpbmtlZExpc3QuaCAqLywKIAkJ
CQlBOEE0NzI5NzE1MUE4MjVBMDA0MTIzRkYgLyogZHRvYS5jcHAgKi8sCiAJCQkJQThBNDcyOTgx
NTFBODI1QTAwNDEyM0ZGIC8qIGR0b2EuaCAqLywKKwkJCQlFMzUzOEQ0QzI3NjIyMDg4MDA3NURB
NTAgLyogRW1iZWRkZWRGaXhlZFZlY3Rvci5oICovLAogCQkJCTUzMzhFQkE0MjNBQjA0RDEwMDM4
MjY2MiAvKiBFbnVtQ2xhc3NPcGVyYXRvck92ZXJsb2Fkcy5oICovLAogCQkJCTFBRUE4OEUxMUQ2
QkJDRjQwMEU1QUQ2NCAvKiBFbnVtVHJhaXRzLmggKi8sCiAJCQkJQUQ3QzQzNEExREQyQTRBNzAw
MjY4ODhCIC8qIEV4cGVjdGVkLmggKi8sCkBAIC0xMjY3LDYgKzEyNzEsNyBAQAogCQkJCUE4QTQ3
MkZGMTUxQTgyNUIwMDQxMjNGRiAvKiBSZWZDb3VudGVkLmggKi8sCiAJCQkJMEZBNkYzOTAyMEND
NjFFQjAwQTAzRENEIC8qIFJlZkNvdW50ZWRBcnJheS5jcHAgKi8sCiAJCQkJQThBNDczMDAxNTFB
ODI1QjAwNDEyM0ZGIC8qIFJlZkNvdW50ZWRBcnJheS5oICovLAorCQkJCUUzRTgxNjJGMjc2NDc5
OTMwMEJBQTQ1QiAvKiBSZWZDb3VudGVkRml4ZWRWZWN0b3IuaCAqLywKIAkJCQlBOEE0NzMwMTE1
MUE4MjVCMDA0MTIzRkYgLyogUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcCAqLywKIAkJCQlBOEE0
NzMwMjE1MUE4MjVCMDA0MTIzRkYgLyogUmVmQ291bnRlZExlYWtDb3VudGVyLmggKi8sCiAJCQkJ
ODZGNDZGNUYxQTI4NDBFRTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIuaCAqLywKQEAgLTEzNTcsNiAr
MTM2Miw3IEBACiAJCQkJMEY3MDc1RjMxRkJGNTM3QTAwNDg5QUYwIC8qIFRpbWluZ1Njb3BlLmgg
Ki8sCiAJCQkJNTUzMDcxQzkxQzQwNDI3MjAwMzg0ODk4IC8qIFRpbnlMUlVDYWNoZS5oICovLAog
CQkJCTBGRUQ2N0I1MUIyMkQ0RDgwMDY2Q0UxNSAvKiBUaW55UHRyU2V0LmggKi8sCisJCQkJRTM1
MzhENEQyNzYyMjA4ODAwNzVEQTUwIC8qIFRyYWlsaW5nQXJyYXkuaCAqLywKIAkJCQk1MjFDQzZC
MzI0QTI3N0MyMDA0Mzc3RDYgLyogVHJhbnNsYXRlZFByb2Nlc3MuY3BwICovLAogCQkJCTJEMUYy
RjQ2MjQ5OEY3MzMwMEM2M0E4MyAvKiBUcmFuc2xhdGVkUHJvY2Vzcy5oICovLAogCQkJCTE0OUVG
MTYyMTZCQkZFMEQwMDBBNDMzMSAvKiBUcmlTdGF0ZS5oICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApp
bmRleCBkZTFkYmY2NzMzYTU4N2Y5YWU5MjViN2VlM2JhYmZjODVmMWFiNDc5Li5lMjBhMGIzMzI5
NmY5ZmIyZGE4ZjExNGMyYjgxM2Y0YzZiZTMzNTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAt
NjIsNiArNjIsNyBAQCBzZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgRGlzYWxsb3dDVHlwZS5o
CiAgICAgRG9taW5hdG9ycy5oCiAgICAgRG91Ymx5TGlua2VkTGlzdC5oCisgICAgRW1iZWRkZWRG
aXhlZFZlY3Rvci5oCiAgICAgRW51bUNsYXNzT3BlcmF0b3JPdmVybG9hZHMuaAogICAgIEVudW1U
cmFpdHMuaAogICAgIEV4cGVjdGVkLmgKQEAgLTIxOSw2ICsyMjAsNyBAQCBzZXQoV1RGX1BVQkxJ
Q19IRUFERVJTCiAgICAgUmVmLmgKICAgICBSZWZDb3VudGVkLmgKICAgICBSZWZDb3VudGVkQXJy
YXkuaAorICAgIFJlZkNvdW50ZWRGaXhlZFZlY3Rvci5oCiAgICAgUmVmQ291bnRlZExlYWtDb3Vu
dGVyLmgKICAgICBSZWZDb3VudGVyLmgKICAgICBSZWZQdHIuaApAQCAtMjg5LDYgKzI5MSw3IEBA
IHNldChXVEZfUFVCTElDX0hFQURFUlMKICAgICBUaW1pbmdTY29wZS5oCiAgICAgVGlueUxSVUNh
Y2hlLmgKICAgICBUaW55UHRyU2V0LmgKKyAgICBUcmFpbGluZ0FycmF5LmgKICAgICBUcmFuc2xh
dGVkUHJvY2Vzcy5oCiAgICAgVHJpU3RhdGUuaAogICAgIFR5cGVDYXN0cy5oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9FbWJlZGRlZEZpeGVkVmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9F
bWJlZGRlZEZpeGVkVmVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTc3NzkxOGUwMWFiODBmZGU2NjllZDlk
ZjQxN2M5ZmUyZDFjNGU2MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL0VtYmVk
ZGVkRml4ZWRWZWN0b3IuaApAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL05vbm1vdmFibGUuaD4KKyNpbmNsdWRlIDx3dGYv
VHJhaWxpbmdBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKworbmFtZXNwYWNl
IFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBFbWJlZGRlZEZpeGVkVmVjdG9y
IGZpbmFsIDogcHVibGljIFRyYWlsaW5nQXJyYXk8RW1iZWRkZWRGaXhlZFZlY3RvcjxUPiwgVD4g
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKEVtYmVkZGVkRml4ZWRWZWN0b3IpOworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEVtYmVkZGVkRml4ZWRWZWN0b3IpOworICAgIFdURl9NQUtF
X05PTk1PVkFCTEUoRW1iZWRkZWRGaXhlZFZlY3Rvcik7CitwdWJsaWM6CisgICAgdXNpbmcgQmFz
ZSA9IFRyYWlsaW5nQXJyYXk8RW1iZWRkZWRGaXhlZFZlY3RvcjxUPiwgVD47CisKKyAgICBzdGF0
aWMgVW5pcXVlUmVmPEVtYmVkZGVkRml4ZWRWZWN0b3I+IGNyZWF0ZSh1bnNpZ25lZCBzaXplKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIFVuaXF1ZVJlZiB7ICpuZXcgKE5vdE51bGwsIGZhc3RNYWxs
b2MoQmFzZTo6YWxsb2NhdGlvblNpemUoc2l6ZSkpKSBFbWJlZGRlZEZpeGVkVmVjdG9yKHNpemUp
IH07CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW5wdXRJdGVyYXRvcj4KKyAgICBz
dGF0aWMgVW5pcXVlUmVmPEVtYmVkZGVkRml4ZWRWZWN0b3I+IGNyZWF0ZShJbnB1dEl0ZXJhdG9y
IGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QpCisgICAgeworICAgICAgICB1bnNpZ25lZCBzaXpl
ID0gc3RkOjpkaXN0YW5jZShmaXJzdCwgbGFzdCk7CisgICAgICAgIHJldHVybiBVbmlxdWVSZWYg
eyAqbmV3IChOb3ROdWxsLCBmYXN0TWFsbG9jKEJhc2U6OmFsbG9jYXRpb25TaXplKHNpemUpKSkg
RW1iZWRkZWRGaXhlZFZlY3RvcihzaXplLCBmaXJzdCwgbGFzdCkgfTsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4K
KyAgICBzdGF0aWMgVW5pcXVlUmVmPEVtYmVkZGVkRml4ZWRWZWN0b3I+IGNyZWF0ZUZyb21WZWN0
b3IoY29uc3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiBvdGhl
cikKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHNpemUgPSBzdGQ6OnNpemUob3RoZXIpOworICAg
ICAgICByZXR1cm4gVW5pcXVlUmVmIHsgKm5ldyAoTm90TnVsbCwgZmFzdE1hbGxvYyhCYXNlOjph
bGxvY2F0aW9uU2l6ZShzaXplKSkpIEVtYmVkZGVkRml4ZWRWZWN0b3Ioc2l6ZSwgc3RkOjpiZWdp
bihvdGhlciksIHN0ZDo6ZW5kKG90aGVyKSkgfTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxzaXpl
X3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4KKyAgICBzdGF0aWMg
VW5pcXVlUmVmPEVtYmVkZGVkRml4ZWRWZWN0b3I+IGNyZWF0ZUZyb21WZWN0b3IoVmVjdG9yPFQs
IGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiYgb3RoZXIpCisgICAgeworICAgICAg
ICBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4gY29udGFpbmVyID0g
V1RGTW92ZShvdGhlcik7CisgICAgICAgIHVuc2lnbmVkIHNpemUgPSBzdGQ6OnNpemUoY29udGFp
bmVyKTsKKyAgICAgICAgcmV0dXJuIFVuaXF1ZVJlZiB7ICpuZXcgKE5vdE51bGwsIGZhc3RNYWxs
b2MoQmFzZTo6YWxsb2NhdGlvblNpemUoc2l6ZSkpKSBFbWJlZGRlZEZpeGVkVmVjdG9yKHNpemUs
IHN0ZDo6bW92ZV9pdGVyYXRvciB7IHN0ZDo6YmVnaW4oY29udGFpbmVyKSB9LCBzdGQ6Om1vdmVf
aXRlcmF0b3IgeyBzdGQ6OmVuZChjb250YWluZXIpIH0pIH07CisgICAgfQorCisgICAgVW5pcXVl
UmVmPEVtYmVkZGVkRml4ZWRWZWN0b3I+IGNsb25lKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBjcmVhdGUoQmFzZTo6YmVnaW4oKSwgQmFzZTo6ZW5kKCkpOworICAgIH0KKworICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBFbWJlZGRlZEZpeGVkVmVjdG9yJiBvdGhlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKKyAgICB9CisKKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgRW1iZWRkZWRGaXhlZFZlY3RvciYgb3RoZXIpIGNvbnN0CisgICAg
eworICAgICAgICBpZiAoQmFzZTo6c2l6ZSgpICE9IG90aGVyLnNpemUoKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEJhc2U6OnNp
emUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAoQmFzZTo6YXQoaSkgIT0gb3RoZXIuYXQoaSkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBFbWJlZGRlZEZpeGVkVmVjdG9yKHVuc2ln
bmVkIHNpemUpCisgICAgICAgIDogQmFzZShzaXplKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yPgorICAgIEVtYmVkZGVkRml4ZWRWZWN0b3IodW5z
aWduZWQgc2l6ZSwgSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0KQorICAg
ICAgICA6IEJhc2Uoc2l6ZSwgZmlyc3QsIGxhc3QpCisgICAgeworICAgIH0KK307CisKK30gLy8g
bmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OkVtYmVkZGVkRml4ZWRWZWN0b3I7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaXhlZFZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvRml4ZWRW
ZWN0b3IuaAppbmRleCAzMjhmOTgxNTEwYmY3YjY0ZjczMGYxYWJiOGVlMTEwODMzNzZjMWQ0Li4y
Mjk0MzY2ZjA4ODI5MTE3YzYwNjhhNGQxZjc0Y2VjZTdlMWE0NjE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9GaXhlZFZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpeGVkVmVjdG9y
LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYvRW1i
ZWRkZWRGaXhlZFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkQXJyYXkuaD4KIAog
bmFtZXNwYWNlIFdURiB7CkBAIC0zNCw2ICszNSw3IEBAIG5hbWVzcGFjZSBXVEYgewogdGVtcGxh
dGU8dHlwZW5hbWUgVD4KIGNsYXNzIEZpeGVkVmVjdG9yIHsKIHB1YmxpYzoKKyAgICB1c2luZyBT
dG9yYWdlID0gRW1iZWRkZWRGaXhlZFZlY3RvcjxUPjsKICAgICB1c2luZyBpdGVyYXRvciA9IFQq
OwogICAgIHVzaW5nIGNvbnN0X2l0ZXJhdG9yID0gY29uc3QgVCo7CiAgICAgdXNpbmcgcmV2ZXJz
ZV9pdGVyYXRvciA9IHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj47CkBAIC00MSw3ICs0
Myw3IEBAIGNsYXNzIEZpeGVkVmVjdG9yIHsKIAogICAgIEZpeGVkVmVjdG9yKCkgPSBkZWZhdWx0
OwogICAgIEZpeGVkVmVjdG9yKGNvbnN0IEZpeGVkVmVjdG9yJiBvdGhlcikKLSAgICAgICAgOiBt
X3N0b3JhZ2Uob3RoZXIubV9zdG9yYWdlLmNsb25lKCkpCisgICAgICAgIDogbV9zdG9yYWdlKG90
aGVyLm1fc3RvcmFnZSA/IG90aGVyLm1fc3RvcmFnZS0+Y2xvbmUoKS5tb3ZlVG9VbmlxdWVQdHIo
KSA6IG51bGxwdHIpCiAgICAgeyB9CiAgICAgRml4ZWRWZWN0b3IoRml4ZWRWZWN0b3ImJiBvdGhl
cikgPSBkZWZhdWx0OwogCkBAIC02MCw3NiArNjIsMTAyIEBAIGNsYXNzIEZpeGVkVmVjdG9yIHsK
ICAgICB9CiAKICAgICBleHBsaWNpdCBGaXhlZFZlY3RvcihzaXplX3Qgc2l6ZSkKLSAgICAgICAg
OiBtX3N0b3JhZ2Uoc2l6ZSkKKyAgICAgICAgOiBtX3N0b3JhZ2Uoc2l6ZSA/IFN0b3JhZ2U6OmNy
ZWF0ZShzaXplKS5tb3ZlVG9VbmlxdWVQdHIoKSA6IG51bGxwdHIpCiAgICAgeyB9CiAKICAgICB0
ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4K
ICAgICBleHBsaWNpdCBGaXhlZFZlY3Rvcihjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHks
IE92ZXJmbG93SGFuZGxlcj4mIG90aGVyKQotICAgICAgICA6IG1fc3RvcmFnZShvdGhlcikKKyAg
ICAgICAgOiBtX3N0b3JhZ2Uob3RoZXIuaXNFbXB0eSgpID8gbnVsbHB0ciA6IFN0b3JhZ2U6OmNy
ZWF0ZUZyb21WZWN0b3Iob3RoZXIpLm1vdmVUb1VuaXF1ZVB0cigpKQogICAgIHsgfQogCiAgICAg
dGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+
CiAgICAgRml4ZWRWZWN0b3ImIG9wZXJhdG9yPShjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNp
dHksIE92ZXJmbG93SGFuZGxlcj4mIG90aGVyKQogICAgIHsKLSAgICAgICAgbV9zdG9yYWdlID0g
b3RoZXI7CisgICAgICAgIG1fc3RvcmFnZSA9IG90aGVyLmlzRW1wdHkoKSA/IG51bGxwdHIgOiBT
dG9yYWdlOjpjcmVhdGVGcm9tVmVjdG9yKG90aGVyKS5tb3ZlVG9VbmlxdWVQdHIoKTsKICAgICAg
ICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPgogICAgIGV4cGxpY2l0IEZpeGVkVmVjdG9y
KFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiYmIG90aGVyKQotICAg
ICAgICA6IG1fc3RvcmFnZShXVEZNb3ZlKG90aGVyKSkKLSAgICB7IH0KKyAgICB7CisgICAgICAg
IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiB0YXJnZXQgPSBXVEZN
b3ZlKG90aGVyKTsKKyAgICAgICAgbV9zdG9yYWdlID0gdGFyZ2V0LmlzRW1wdHkoKSA/IG51bGxw
dHIgOiBTdG9yYWdlOjpjcmVhdGVGcm9tVmVjdG9yKFdURk1vdmUodGFyZ2V0KSkubW92ZVRvVW5p
cXVlUHRyKCk7CisgICAgfQogCiAgICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0
eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+CiAgICAgRml4ZWRWZWN0b3ImIG9wZXJhdG9yPShWZWN0
b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4mJiBvdGhlcikKICAgICB7Ci0g
ICAgICAgIG1fc3RvcmFnZSA9IFdURk1vdmUob3RoZXIpOworICAgICAgICBWZWN0b3I8VCwgaW5s
aW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4gdGFyZ2V0ID0gV1RGTW92ZShvdGhlcik7Cisg
ICAgICAgIG1fc3RvcmFnZSA9IHRhcmdldC5pc0VtcHR5KCkgPyBudWxscHRyIDogU3RvcmFnZTo6
Y3JlYXRlRnJvbVZlY3RvcihXVEZNb3ZlKHRhcmdldCkpLm1vdmVUb1VuaXF1ZVB0cigpOwogICAg
ICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJl
dHVybiBtX3N0b3JhZ2Uuc2l6ZSgpOyB9Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gbV9zdG9yYWdlLmlzRW1wdHkoKTsgfQotICAgIHNpemVfdCBieXRlU2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RvcmFnZS5ieXRlU2l6ZSgpOyB9CisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7
IHJldHVybiBtX3N0b3JhZ2UgPyBtX3N0b3JhZ2UtPnNpemUoKSA6IDA7IH0KKyAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UgPyBtX3N0b3JhZ2UtPmlzRW1wdHkoKSA6
IHRydWU7IH0KKyAgICBzaXplX3QgYnl0ZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2Ug
PyBtX3N0b3JhZ2UtPmJ5dGVTaXplKCkgOiAwOyB9CiAKLSAgICBUKiBkYXRhKCkgeyByZXR1cm4g
bV9zdG9yYWdlLmRhdGEoKTsgfQotICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9zdG9y
YWdlLmJlZ2luKCk7IH0KLSAgICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiBtX3N0b3JhZ2UuZW5k
KCk7IH0KKyAgICBUKiBkYXRhKCkgeyByZXR1cm4gbV9zdG9yYWdlID8gbV9zdG9yYWdlLT5kYXRh
KCkgOiBudWxscHRyOyB9CisgICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBtX3N0b3JhZ2Ug
PyBtX3N0b3JhZ2UtPmJlZ2luKCkgOiBudWxscHRyOyB9CisgICAgaXRlcmF0b3IgZW5kKCkgeyBy
ZXR1cm4gbV9zdG9yYWdlID8gbV9zdG9yYWdlLT5lbmQoKSA6IG51bGxwdHI7IH0KIAogICAgIGNv
bnN0IFQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEZpeGVkVmVjdG9yKj4odGhp
cyktPmRhdGEoKTsgfQogICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4g
Y29uc3RfY2FzdDxGaXhlZFZlY3Rvcio+KHRoaXMpLT5iZWdpbigpOyB9CiAgICAgY29uc3RfaXRl
cmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxGaXhlZFZlY3Rvcio+KHRoaXMp
LT5lbmQoKTsgfQogCi0gICAgcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSB7IHJldHVybiBtX3N0
b3JhZ2UucmJlZ2luKCk7IH0KLSAgICByZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSB7IHJldHVybiBt
X3N0b3JhZ2UucmVuZCgpOyB9Ci0gICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSBj
b25zdCB7IHJldHVybiBtX3N0b3JhZ2UucmJlZ2luKCk7IH0KLSAgICBjb25zdF9yZXZlcnNlX2l0
ZXJhdG9yIHJlbmQoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UucmVuZCgpOyB9CisgICAgcmV2
ZXJzZV9pdGVyYXRvciByYmVnaW4oKSB7IHJldHVybiBtX3N0b3JhZ2UgPyBtX3N0b3JhZ2UtPnJi
ZWdpbigpIDogcmV2ZXJzZV9pdGVyYXRvcihudWxscHRyKTsgfQorICAgIHJldmVyc2VfaXRlcmF0
b3IgcmVuZCgpIHsgcmV0dXJuIG1fc3RvcmFnZSA/IG1fc3RvcmFnZS0+cmVuZCgpIDogcmV2ZXJz
ZV9pdGVyYXRvcihudWxscHRyKTsgfQorICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmJlZ2lu
KCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlID8gbV9zdG9yYWdlLT5yYmVnaW4oKSA6IGNvbnN0
X3JldmVyc2VfaXRlcmF0b3IobnVsbHB0cik7IH0KKyAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9y
IHJlbmQoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UgPyBtX3N0b3JhZ2UtPnJlbmQoKSA6IGNv
bnN0X3JldmVyc2VfaXRlcmF0b3IobnVsbHB0cik7IH0KIAotICAgIFQmIGF0KHNpemVfdCBpKSB7
IHJldHVybiBtX3N0b3JhZ2UuYXQoaSk7IH0KLSAgICBjb25zdCBUJiBhdChzaXplX3QgaSkgY29u
c3QgeyByZXR1cm4gbV9zdG9yYWdlLmF0KGkpOyB9CisgICAgVCYgYXQoc2l6ZV90IGkpIHsgcmV0
dXJuIG1fc3RvcmFnZS0+YXQoaSk7IH0KKyAgICBjb25zdCBUJiBhdChzaXplX3QgaSkgY29uc3Qg
eyByZXR1cm4gbV9zdG9yYWdlLT5hdChpKTsgfQogCi0gICAgVCYgb3BlcmF0b3JbXShzaXplX3Qg
aSkgeyByZXR1cm4gYXQoaSk7IH0KLSAgICBjb25zdCBUJiBvcGVyYXRvcltdKHNpemVfdCBpKSBj
b25zdCB7IHJldHVybiBhdChpKTsgfQorICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIHsgcmV0
dXJuIG1fc3RvcmFnZS0+YXQoaSk7IH0KKyAgICBjb25zdCBUJiBvcGVyYXRvcltdKHNpemVfdCBp
KSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UtPmF0KGkpOyB9CiAKICAgICBUJiBmaXJzdCgpIHsg
cmV0dXJuICgqdGhpcylbMF07IH0KICAgICBjb25zdCBUJiBmaXJzdCgpIGNvbnN0IHsgcmV0dXJu
ICgqdGhpcylbMF07IH0KICAgICBUJiBsYXN0KCkgeyByZXR1cm4gKCp0aGlzKVtzaXplKCkgLSAx
XTsgfQogICAgIGNvbnN0IFQmIGxhc3QoKSBjb25zdCB7IHJldHVybiAoKnRoaXMpW3NpemUoKSAt
IDFdOyB9CiAKLSAgICB2b2lkIGZpbGwoY29uc3QgVCYgdmFsKSB7IG1fc3RvcmFnZS5maWxsKHZh
bCk7IH0KKyAgICB2b2lkIGZpbGwoY29uc3QgVCYgdmFsKQorICAgIHsKKyAgICAgICAgaWYgKCFt
X3N0b3JhZ2UpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fc3RvcmFnZS0+ZmlsbCh2
YWwpOworICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaXhlZFZlY3RvcjxUPiYg
b3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZSA9PSBvdGhlci5tX3N0b3JhZ2U7IH0KKyAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgRml4ZWRWZWN0b3I8VD4mIG90aGVyKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KKworICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBGaXhlZFZlY3RvcjxUPiYgb3RoZXIpIGNvbnN0CisgICAgeworICAg
ICAgICBpZiAoIW1fc3RvcmFnZSkgeworICAgICAgICAgICAgaWYgKCFvdGhlci5tX3N0b3JhZ2Up
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4gb3RoZXIu
bV9zdG9yYWdlLT5pc0VtcHR5KCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFvdGhlci5tX3N0
b3JhZ2UpCisgICAgICAgICAgICByZXR1cm4gbV9zdG9yYWdlLT5pc0VtcHR5KCk7CisgICAgICAg
IHJldHVybiAqbV9zdG9yYWdlID09ICpvdGhlci5tX3N0b3JhZ2U7CisgICAgfQogCiAgICAgdm9p
ZCBzd2FwKEZpeGVkVmVjdG9yPFQ+JiBvdGhlcikKICAgICB7Ci0gICAgICAgIG1fc3RvcmFnZS5z
d2FwKG90aGVyLm1fc3RvcmFnZSk7CisgICAgICAgIHVzaW5nIHN0ZDo6c3dhcDsKKyAgICAgICAg
c3dhcChtX3N0b3JhZ2UsIG90aGVyLm1fc3RvcmFnZSk7CiAgICAgfQogCiAgICAgc3RhdGljIHB0
cmRpZmZfdCBvZmZzZXRPZlN0b3JhZ2UoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRml4ZWRW
ZWN0b3IsIG1fc3RvcmFnZSk7IH0KIAorICAgIFN0b3JhZ2UqIGdldFN0b3JhZ2UoKSB7IHJldHVy
biBtX3N0b3JhZ2UuZ2V0KCk7IH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgSlNDOjpM
TEludE9mZnNldHNFeHRyYWN0b3I7CiAKLSAgICBSZWZDb3VudGVkQXJyYXk8VD4gbV9zdG9yYWdl
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxTdG9yYWdlPiBtX3N0b3JhZ2U7CiB9Owogc3RhdGljX2Fz
c2VydChzaXplb2YoRml4ZWRWZWN0b3I8aW50PikgPT0gc2l6ZW9mKGludCopKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvUmVmQ291bnRlZEZpeGVkVmVjdG9yLmggYi9Tb3VyY2UvV1RG
L3d0Zi9SZWZDb3VudGVkRml4ZWRWZWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMmYzMzczZTE5NmQ3ZWUy
MDJjM2U5ODViMjhhYjJlN2UxYmViYjc2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93
dGYvUmVmQ291bnRlZEZpeGVkVmVjdG9yLmgKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1
ZGUgPHd0Zi9UcmFpbGluZ0FycmF5Lmg+CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBib29sIGlzVGhyZWFkU2FmZT4KK2NsYXNzIFJlZkNvdW50ZWRGaXhlZFZlY3Rv
ckJhc2UgZmluYWwgOiBwdWJsaWMgc3RkOjpjb25kaXRpb25hbDxpc1RocmVhZFNhZmUsIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2U8VCwgaXNUaHJlYWRTYWZl
Pj4sIFJlZkNvdW50ZWQ8UmVmQ291bnRlZEZpeGVkVmVjdG9yQmFzZTxULCBpc1RocmVhZFNhZmU+
Pj46OnR5cGUsIHB1YmxpYyBUcmFpbGluZ0FycmF5PFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2U8
VCwgaXNUaHJlYWRTYWZlPiwgVD4geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBUcmFpbGlu
Z0FycmF5PFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2U8VCwgaXNUaHJlYWRTYWZlPiwgVD47CisK
KyAgICBzdGF0aWMgUmVmPFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2U+IGNyZWF0ZSh1bnNpZ25l
ZCBzaXplKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgKE5vdE51bGwsIGZh
c3RNYWxsb2MoQmFzZTo6YWxsb2NhdGlvblNpemUoc2l6ZSkpKSBSZWZDb3VudGVkRml4ZWRWZWN0
b3JCYXNlKHNpemUpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnB1dEl0ZXJh
dG9yPgorICAgIHN0YXRpYyBSZWY8UmVmQ291bnRlZEZpeGVkVmVjdG9yQmFzZT4gY3JlYXRlKElu
cHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3IgbGFzdCkKKyAgICB7CisgICAgICAgIHVu
c2lnbmVkIHNpemUgPSBzdGQ6OmRpc3RhbmNlKGZpcnN0LCBsYXN0KTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgKE5vdE51bGwsIGZhc3RNYWxsb2MoQmFzZTo6YWxsb2NhdGlvblNpemUo
c2l6ZSkpKSBSZWZDb3VudGVkRml4ZWRWZWN0b3JCYXNlKHNpemUsIGZpcnN0LCBsYXN0KSk7Cisg
ICAgfQorCisgICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVy
Zmxvd0hhbmRsZXI+CisgICAgc3RhdGljIFJlZjxSZWZDb3VudGVkRml4ZWRWZWN0b3JCYXNlPiBj
cmVhdGVGcm9tVmVjdG9yKGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dI
YW5kbGVyPiYgb3RoZXIpCisgICAgeworICAgICAgICB1bnNpZ25lZCBzaXplID0gc3RkOjpzaXpl
KG90aGVyKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgKE5vdE51bGwsIGZhc3RNYWxs
b2MoQmFzZTo6YWxsb2NhdGlvblNpemUoc2l6ZSkpKSBSZWZDb3VudGVkRml4ZWRWZWN0b3JCYXNl
KHNpemUsIHN0ZDo6YmVnaW4ob3RoZXIpLCBzdGQ6OmVuZChvdGhlcikpKTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxl
cj4KKyAgICBzdGF0aWMgUmVmPFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2U+IGNyZWF0ZUZyb21W
ZWN0b3IoVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiYgb3RoZXIp
CisgICAgeworICAgICAgICBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxl
cj4gY29udGFpbmVyID0gV1RGTW92ZShvdGhlcik7CisgICAgICAgIHVuc2lnbmVkIHNpemUgPSBz
dGQ6OnNpemUoY29udGFpbmVyKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgKE5vdE51
bGwsIGZhc3RNYWxsb2MoQmFzZTo6YWxsb2NhdGlvblNpemUoc2l6ZSkpKSBSZWZDb3VudGVkRml4
ZWRWZWN0b3JCYXNlKHNpemUsIHN0ZDo6bW92ZV9pdGVyYXRvciB7IHN0ZDo6YmVnaW4oY29udGFp
bmVyKSB9LCBzdGQ6Om1vdmVfaXRlcmF0b3IgeyBzdGQ6OmVuZChjb250YWluZXIpIH0pKTsKKyAg
ICB9CisKKyAgICBSZWY8UmVmQ291bnRlZEZpeGVkVmVjdG9yQmFzZT4gY2xvbmUoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZShCYXNlOjpiZWdpbigpLCBCYXNlOjplbmQoKSk7
CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZkNvdW50ZWRGaXhlZFZlY3Rv
ckJhc2UmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWZDb3VudGVkRml4ZWRW
ZWN0b3JCYXNlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChCYXNlOjpzaXplKCkg
IT0gb3RoZXIuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgQmFzZTo6c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlm
IChCYXNlOjphdChpKSAhPSBvdGhlci5hdChpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCitwcml2YXRlOgor
ICAgIFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2UodW5zaWduZWQgc2l6ZSkKKyAgICAgICAgOiBC
YXNlKHNpemUpCisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIElucHV0SXRl
cmF0b3I+CisgICAgUmVmQ291bnRlZEZpeGVkVmVjdG9yQmFzZSh1bnNpZ25lZCBzaXplLCBJbnB1
dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QpCisgICAgICAgIDogQmFzZShzaXpl
LCBmaXJzdCwgbGFzdCkKKyAgICB7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K3VzaW5nIFJlZkNvdW50ZWRGaXhlZFZlY3RvciA9IFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2U8
VCwgZmFsc2U+OwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3VzaW5nIFRocmVhZFNhZmVSZWZDb3Vu
dGVkRml4ZWRWZWN0b3IgPSBSZWZDb3VudGVkRml4ZWRWZWN0b3JCYXNlPFQsIHRydWU+OworCit9
IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpSZWZDb3VudGVkRml4ZWRWZWN0b3I7Cit1
c2luZyBXVEY6OlRocmVhZFNhZmVSZWZDb3VudGVkRml4ZWRWZWN0b3I7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9UcmFpbGluZ0FycmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9UcmFpbGluZ0Fy
cmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTA2NTk1NjZmNDgxYzBlZTY3MWIwYTBkZTU1MDFhM2I3NjYwMTE4
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RyYWlsaW5nQXJyYXkuaApAQCAt
MCwwICsxLDEzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdU
RiB7CisKKy8vIFRyYWlsaW5nQXJyYXkgb2ZmZXJzIHRoZSBmZWF0dXJlIHRyYWlsaW5nIGFycmF5
IGluIHRoZSBkZXJpdmVkIGNsYXNzLgorLy8gV2UgY2FuIGFsbG9jYXRlIGEgbWVtb3J5IGxpa2Ug
dGhlIGZvbGxvd2luZyBsYXlvdXQuCisvLworLy8gICAgIFsgIERlcml2ZWRDbGFzcyAgXVsgVHJh
aWxpbmcgQXJyYXkgXQorLy8KKy8vIEFuZCB0cmFpbGluZyBhcnJheSBvZmZlcnMgYXBwcm9wcmlh
dGUgbWV0aG9kcyBmb3IgYWNjZXNzaW5nIGFuZCBkZXN0cnVjdGlvbnMuCit0ZW1wbGF0ZTx0eXBl
bmFtZSBEZXJpdmVkLCB0eXBlbmFtZSBUPgorY2xhc3MgVHJhaWxpbmdBcnJheSB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoVHJhaWxpbmdBcnJheSk7CisgICAgZnJpZW5kIGNsYXNzIEpTQzo6
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworcHVibGljOgorICAgIHVzaW5nIHZhbHVlX3R5cGUgPSBU
OworICAgIHVzaW5nIHBvaW50ZXIgPSBUKjsKKyAgICB1c2luZyByZWZlcmVuY2UgPSBUJjsKKyAg
ICB1c2luZyBjb25zdF9yZWZlcmVuY2UgPSBjb25zdCBUJjsKKyAgICB1c2luZyBjb25zdF9wb2lu
dGVyID0gY29uc3QgVCo7CisgICAgdXNpbmcgc2l6ZV90eXBlID0gdW5zaWduZWQ7CisgICAgdXNp
bmcgZGlmZmVyZW5jZV90eXBlID0gc3RkOjptYWtlX3NpZ25lZF90PHNpemVfdHlwZT47CisgICAg
dXNpbmcgaXRlcmF0b3IgPSBUKjsKKyAgICB1c2luZyBjb25zdF9pdGVyYXRvciA9IGNvbnN0IFQq
OworICAgIHVzaW5nIHJldmVyc2VfaXRlcmF0b3IgPSBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8aXRl
cmF0b3I+OworICAgIHVzaW5nIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgPSBzdGQ6OnJldmVyc2Vf
aXRlcmF0b3I8Y29uc3RfaXRlcmF0b3I+OworCisgICAgZXhwbGljaXQgVHJhaWxpbmdBcnJheSh1
bnNpZ25lZCBzaXplKQorICAgICAgICA6IG1fc2l6ZShzaXplKQorICAgIHsKKyAgICAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX2ZpbmFsX3Y8RGVyaXZlZD4pOworICAgICAgICBWZWN0b3JUeXBl
T3BlcmF0aW9uczxUPjo6aW5pdGlhbGl6ZUlmTm9uUE9EKGJlZ2luKCksIGVuZCgpKTsKKyAgICB9
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yPgorICAgIFRyYWlsaW5nQXJy
YXkodW5zaWduZWQgc2l6ZSwgSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0
KQorICAgICAgICA6IG1fc2l6ZShzaXplKQorICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2ZpbmFsX3Y8RGVyaXZlZD4pOworICAgICAgICBBU1NFUlQoc3RkOjpkaXN0YW5jZShm
aXJzdCwgbGFzdCkgPT0gc2l6ZSk7CisgICAgICAgIHN0ZDo6dW5pbml0aWFsaXplZF9jb3B5KGZp
cnN0LCBsYXN0LCBiZWdpbigpKTsKKyAgICB9CisKKyAgICB+VHJhaWxpbmdBcnJheSgpCisgICAg
eworICAgICAgICBWZWN0b3JUeXBlT3BlcmF0aW9uczxUPjo6ZGVzdHJ1Y3QoYmVnaW4oKSwgZW5k
KCkpOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGFsbG9jYXRpb25TaXpl
KHVuc2lnbmVkIHNpemUpCisgICAgeworICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0
aXBsZU9mPGFsaWdub2YoVCk+KHNpemVvZihEZXJpdmVkKSkgKyBzaXplICogc2l6ZW9mKFQpOwor
ICAgIH0KKworICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAg
ICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9CisgICAgdW5zaWduZWQg
Ynl0ZVNpemUoKSBjb25zdCB7IHJldHVybiBzaXplKCkgKiBzaXplb2YoVCk7IH0KKworICAgIHBv
aW50ZXIgZGF0YSgpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxUKj4oYml0d2lzZV9jYXN0PHVpbnQ4
X3QqPih0aGlzKSArIG9mZnNldE9mRGF0YSgpKTsgfQorICAgIGNvbnN0X3BvaW50ZXIgZGF0YSgp
IGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxjb25zdCBUKj4oYml0d2lzZV9jYXN0PGNvbnN0
IHVpbnQ4X3QqPih0aGlzKSArIG9mZnNldE9mRGF0YSgpKTsgfQorCisgICAgaXRlcmF0b3IgYmVn
aW4oKSB7IHJldHVybiBkYXRhKCk7IH0KKyAgICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiBkYXRh
KCkgKyBzaXplKCk7IH0KKyAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJu
IGNiZWdpbigpOyB9CisgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gY2Vu
ZCgpOyB9CisgICAgY29uc3RfaXRlcmF0b3IgY2JlZ2luKCkgY29uc3QgeyByZXR1cm4gZGF0YSgp
OyB9CisgICAgY29uc3RfaXRlcmF0b3IgY2VuZCgpIGNvbnN0IHsgcmV0dXJuIGRhdGEoKSArIHNp
emUoKTsgfQorCisgICAgcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSB7IHJldHVybiByZXZlcnNl
X2l0ZXJhdG9yKGVuZCgpKTsgfQorICAgIHJldmVyc2VfaXRlcmF0b3IgcmVuZCgpIHsgcmV0dXJu
IHJldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KKyAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9y
IHJiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGNyYmVnaW4oKTsgfQorICAgIGNvbnN0X3JldmVyc2Vf
aXRlcmF0b3IgcmVuZCgpIGNvbnN0IHsgcmV0dXJuIGNyZW5kKCk7IH0KKyAgICBjb25zdF9yZXZl
cnNlX2l0ZXJhdG9yIGNyYmVnaW4oKSBjb25zdCB7IHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJh
dG9yKGVuZCgpKTsgfQorICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgY3JlbmQoKSBjb25zdCB7
IHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOyB9CisKKyAgICByZWZlcmVu
Y2UgYXQodW5zaWduZWQgaSkKKyAgICB7CisgICAgICAgIEFTU0VSVChpIDwgc2l6ZSgpKTsKKyAg
ICAgICAgcmV0dXJuIGJlZ2luKClbaV07CisgICAgfQorCisgICAgY29uc3RfcmVmZXJlbmNlIGF0
KHVuc2lnbmVkIGkpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaSA8IHNpemUoKSk7Cisg
ICAgICAgIHJldHVybiBiZWdpbigpW2ldOworICAgIH0KKworICAgIHJlZmVyZW5jZSBvcGVyYXRv
cltdKHVuc2lnbmVkIGkpIHsgcmV0dXJuIGF0KGkpOyB9CisgICAgY29uc3RfcmVmZXJlbmNlIG9w
ZXJhdG9yW10odW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gYXQoaSk7IH0KKworICAgIFQmIGZp
cnN0KCkgeyByZXR1cm4gKCp0aGlzKVswXTsgfQorICAgIGNvbnN0IFQmIGZpcnN0KCkgY29uc3Qg
eyByZXR1cm4gKCp0aGlzKVswXTsgfQorICAgIFQmIGxhc3QoKSB7IHJldHVybiAoKnRoaXMpW3Np
emUoKSAtIDFdOyB9CisgICAgY29uc3QgVCYgbGFzdCgpIGNvbnN0IHsgcmV0dXJuICgqdGhpcylb
c2l6ZSgpIC0gMV07IH0KKworICAgIHZvaWQgZmlsbChjb25zdCBUJiB2YWwpCisgICAgeworICAg
ICAgICBzdGQ6OmZpbGwoYmVnaW4oKSwgZW5kKCksIHZhbCk7CisgICAgfQorCisgICAgc3RhdGlj
IHB0cmRpZmZfdCBvZmZzZXRPZlNpemUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRGVyaXZl
ZCwgbV9zaXplKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgcHRyZGlmZl90IG9mZnNldE9mRGF0
YSgpIHsgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxhbGlnbm9mKFQpPihzaXplb2Yo
RGVyaXZlZCkpOyB9CisKK3Byb3RlY3RlZDoKKyAgICB1bnNpZ25lZCBtX3NpemUgeyAwIH07Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpUcmFpbGluZ0FycmF5OwpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDk2YThkYmI4
M2I3MjI2NDRkYzZmMDJlYTM1ZjI1OTAxN2FiOWM2YmYuLjVmNmZmODcxNjY0ZGQ1N2VlNjgxNTAx
NDBmNmQyMTU4MmM1OGRkOTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMS0xMi0xMSAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEludHJvZHVjZSBUcmFpbGluZ0Fy
cmF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQy
MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvRW1iZWRkZWRGaXhlZFZlY3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpEZXN0cnVjdG9y
T2JzZXJ2ZXI6OkRlc3RydWN0b3JPYnNlcnZlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpE
ZXN0cnVjdG9yT2JzZXJ2ZXI6On5EZXN0cnVjdG9yT2JzZXJ2ZXIpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6RGVzdHJ1Y3Rvck9ic2VydmVyOjpvcGVyYXRvcj0pOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0ZpeGVkVmVjdG9yLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZWRG
aXhlZFZlY3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpEZXN0cnVjdG9yT2JzZXJ2ZXI6OkRlc3RydWN0b3JPYnNl
cnZlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpEZXN0cnVjdG9yT2JzZXJ2ZXI6On5EZXN0
cnVjdG9yT2JzZXJ2ZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RGVzdHJ1Y3Rvck9ic2Vy
dmVyOjpvcGVyYXRvcj0pOgorCiAyMDIxLTEyLTEwICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxz
b25AYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gQWRkIG5ldyBzY3JlZW4gYW5kIHdpbmRv
dyBjYXB0dXJlIGJhY2tlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VM
aXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CmluZGV4IGZjYzlm
ZmM2MTJmNmY5MDE3ZDY0OGQ2NWY1MzBlNWY2NjM4ODU2ZTYuLmExYTkxNDJmZmE4YjU1Zjc3YjU0
ZTRmYWU4NTZkYWZmMDllYzFjM2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01h
a2VMaXN0cy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dApAQCAt
MzgsNiArMzgsNyBAQCBzZXQoVGVzdFdURl9TT1VSQ0VTCiAgICAgVGVzdHMvV1RGL0RhdGFNdXRl
eC5jcHAKICAgICBUZXN0cy9XVEYvRGF0ZU1hdGguY3BwCiAgICAgVGVzdHMvV1RGL0RlcXVlLmNw
cAorICAgIFRlc3RzL1dURi9FbWJlZGRlZEZpeGVkVmVjdG9yLmNwcAogICAgIFRlc3RzL1dURi9F
bnVtVHJhaXRzLmNwcAogICAgIFRlc3RzL1dURi9FeHBlY3RlZC5jcHAKICAgICBUZXN0cy9XVEYv
RmlsZVN5c3RlbS5jcHAKQEAgLTc0LDYgKzc1LDcgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAg
IFRlc3RzL1dURi9Qcmlvcml0eVF1ZXVlLmNwcAogICAgIFRlc3RzL1dURi9SZWRCbGFja1RyZWUu
Y3BwCiAgICAgVGVzdHMvV1RGL1JlZi5jcHAKKyAgICBUZXN0cy9XVEYvUmVmQ291bnRlZEZpeGVk
VmVjdG9yLmNwcAogICAgIFRlc3RzL1dURi9SZWZDb3VudGVyLmNwcAogICAgIFRlc3RzL1dURi9S
ZWZMb2dnZXIuY3BwCiAgICAgVGVzdHMvV1RGL1JlZlB0ci5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMTc4YjMwOWM0NWMzYTA2NGYyOGIwN2RiMGZhOTAwYjQ0ZDcxODI5YS4uYWNkNmNi
ZTI4MGE0ODIxNDJkYzg5Yzc5Yjg0OTU3YTY1NTE3NThiYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTk2NSw2ICs5NjUsNyBAQAogCQlFMTIyMERDQTE1NUIyOEFBMDAxM0UyRkMgLyogTWVt
b3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTIyMERDOTE1NUIy
ODdEMDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdh
dGUuaHRtbCAqLzsgfTsKIAkJRTE5NEUxQkQxNzdFNTNDNzAwOUM0RDRFIC8qIFN0b3BMb2FkaW5n
RnJvbURpZFJlY2VpdmVSZXNwb25zZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOTRFMUJDMTc3RTUzNEEwMDlDNEQ0RSAvKiBTdG9w
TG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UuaHRtbCAqLzsgfTsKIAkJRTMwMkJEQUEyNDA0
QjkyNDAwODY1Mjc3IC8qIENvbXBhY3RSZWZQdHJUdXBsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzAyQkRBOTI0MDRCOTIzMDA4NjUyNzcgLyog
Q29tcGFjdFJlZlB0clR1cGxlLmNwcCAqLzsgfTsKKwkJRTMxNkQ0MjAyNzY0N0EwMjAwMjg3QjE2
IC8qIFJlZkNvdW50ZWRGaXhlZFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzE2RDQxRjI3NjQ3QTAyMDAyODdCMTYgLyogUmVmQ291bnRl
ZEZpeGVkVmVjdG9yLmNwcCAqLzsgfTsKIAkJRTMyMTA1MTkyNjE5NzlGMzAwMTU3QzY3IC8qIEZp
eGVkVmVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzMjEwNTE4MjYxOTc5RjMwMDE1N0M2NyAvKiBGaXhlZFZlY3Rvci5jcHAgKi87IH07CiAJ
CUUzMjRBNkYwMjA0MUM4MjAwMEE3NjU5MyAvKiBVbmlxdWVBcnJheS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk4QkMwRjIwNDFDNzYzMDAzODcx
MzYgLyogVW5pcXVlQXJyYXkuY3BwICovOyB9OwogCQlFMzI1QzkwNzIzRTM4NzAyMDBCQzdEM0Ig
LyogUGljdHVyZUluUGljdHVyZVN1cHBvcnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzI1QzkwNjIzRTM4NzAyMDBCQzdEM0IgLyogUGljdHVyZUlu
UGljdHVyZVN1cHBvcnQubW0gKi87IH07CkBAIC05NzQsNiArOTc1LDcgQEAKIAkJRTM1NUE2MzIy
NjE1NzE4RjAwMUMxMTI5IC8qIFJvYmluSG9vZEhhc2hNYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NUE2MzEyNjE1NzE4RjAwMUMxMTI5IC8q
IFJvYmluSG9vZEhhc2hNYXAuY3BwICovOyB9OwogCQlFMzVCOTA4MjIzRjYwREQwMDAwMDExRkYg
LyogTG9jYWxpemVkRGV2aWNlTW9kZWwubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzVCOTA4MTIzRjYwREQwMDAwMDExRkYgLyogTG9jYWxpemVkRGV2
aWNlTW9kZWwubW0gKi87IH07CiAJCUUzNUZDN0IyMjJCODJBNzMwMEYzMkY5OCAvKiBKU0xvY2tU
YWtlc1dlYlRocmVhZExvY2subW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzVGQzdCMTIyQjgyQTZEMDBGMzJGOTggLyogSlNMb2NrVGFrZXNXZWJUaHJl
YWRMb2NrLm1tICovOyB9OworCQlFMzZCODdBMzI3NjIyMTg3MDA1OUQyRjkgLyogRW1iZWRkZWRG
aXhlZFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzZCODdBMjI3NjIyMTg2MDA1OUQyRjkgLyogRW1iZWRkZWRGaXhlZFZlY3Rvci5jcHAg
Ki87IH07CiAJCUUzNzNENzkxMUYyQ0YzNTIwMEM2RkFBRiAvKiBTaWduYWxzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUzRjk1MUYyQ0YzMjEw
MEE3NkEyRSAvKiBTaWduYWxzLmNwcCAqLzsgfTsKIAkJRTM4QTBEMzUxRkQ1MENDMzAwRTk4QzhC
IC8qIFRocmVhZGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzhBMEQzNDFGRDUwQ0JDMDBFOThDOEIgLyogVGhyZWFkaW5nLmNwcCAqLzsgfTsK
IAkJRTM4RDY1Q0EyM0E0NUZBQTAwNjNENjlBIC8qIFBhY2tlZFJlZi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhENjVDODIzQTQ1RkE5MDA2M0Q2
OUEgLyogUGFja2VkUmVmLmNwcCAqLzsgfTsKQEAgLTI4ODgsNiArMjg5MCw3IEBACiAJCUUxOTRF
MUJBMTc3RTUxNDUwMDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2Uu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTdG9wTG9hZGluZ0Zy
b21EaWRSZWNlaXZlUmVzcG9uc2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUx
OTRFMUJDMTc3RTUzNEEwMDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9u
c2UuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuaHRtbDsgcGF0aCA9IFN0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVSZXNwb25zZS5odG1s
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzAyQkRBOTI0MDRCOTIzMDA4NjUyNzcg
LyogQ29tcGFjdFJlZlB0clR1cGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENvbXBhY3RSZWZQdHJUdXBsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzMTZENDFGMjc2NDdBMDIwMDI4N0IxNiAvKiBSZWZDb3VudGVkRml4ZWRWZWN0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVmQ291bnRlZEZpeGVkVmVj
dG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyMTA1MTgyNjE5NzlGMzAw
MTU3QzY3IC8qIEZpeGVkVmVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEZpeGVkVmVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMy
NUM5MDYyM0UzODcwMjAwQkM3RDNCIC8qIFBpY3R1cmVJblBpY3R1cmVTdXBwb3J0Lm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gUGljdHVyZUluUGljdHVyZVN1cHBvcnQubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzMkI1NDkxMjI4MTBBQzAwMDhBRDcwMiAvKiBQYWNrZWQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUGFja2VkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI4OTYsNiArMjg5OSw3IEBACiAJCUUzNTVBNjMxMjYxNTcxOEYwMDFDMTEyOSAvKiBS
b2Jpbkhvb2RIYXNoTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJvYmluSG9vZEhhc2hNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzVC
OTA4MTIzRjYwREQwMDAwMDExRkYgLyogTG9jYWxpemVkRGV2aWNlTW9kZWwubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBMb2NhbGl6ZWREZXZpY2VNb2RlbC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM1RkM3QjEyMkI4MkE2RDAwRjMyRjk4IC8qIEpTTG9ja1Rha2VzV2ViVGhy
ZWFkTG9jay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEpTTG9j
a1Rha2VzV2ViVGhyZWFkTG9jay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2
Qjg3QTIyNzYyMjE4NjAwNTlEMkY5IC8qIEVtYmVkZGVkRml4ZWRWZWN0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRW1iZWRkZWRGaXhlZFZlY3Rvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODg4ODcwMjBDOTA5ODEwMEU2MzJCQyAvKiBX
b3JrZXJQb29sLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtl
clBvb2wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhBMEQzNDFGRDUwQ0JD
MDBFOThDOEIgLyogVGhyZWFkaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFRocmVhZGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOEQ2
NUM4MjNBNDVGQTkwMDYzRDY5QSAvKiBQYWNrZWRSZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUGFja2VkUmVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTQ0ODMsNiArNDQ4Nyw3IEBACiAJCQkJN0FBMDIxQkExQUIwOUVBNzAwNTI5NTNGIC8q
IERhdGVNYXRoLmNwcCAqLywKIAkJCQkxQTM1MjRBOTFENjI3QkQ0MDAzMTcyOUIgLyogRGVsZXRl
ZEFkZHJlc3NPZk9wZXJhdG9yLmggKi8sCiAJCQkJRTRBNzU3RDMxNzhBRUE1QjAwQjVEN0E0IC8q
IERlcXVlLmNwcCAqLywKKwkJCQlFMzZCODdBMjI3NjIyMTg2MDA1OUQyRjkgLyogRW1iZWRkZWRG
aXhlZFZlY3Rvci5jcHAgKi8sCiAJCQkJMUFGN0IyMUQxRDZDRDEyRTAwOEMxMjZDIC8qIEVudW1U
cmFpdHMuY3BwICovLAogCQkJCUFEN0M0MzRDMUREMkE1NDcwMDI2ODg4QiAvKiBFeHBlY3RlZC5j
cHAgKi8sCiAJCQkJQTMxMDgyNzEyMUYyOTZFQzAwQzI4Qjk3IC8qIEZpbGVTeXN0ZW0uY3BwICov
LApAQCAtNDUyNSw2ICs0NTMwLDcgQEAKIAkJCQk1M0VDMjUzRjFFOTZCQzgwMDAwODMxQjkgLyog
UHJpb3JpdHlRdWV1ZS5jcHAgKi8sCiAJCQkJMEZDNkM0Q0IxNDEwMjdFMDAwNUI3RjBDIC8qIFJl
ZEJsYWNrVHJlZS5jcHAgKi8sCiAJCQkJOTNBNDI3QUExODBEQTI2NDAwQ0QyNEQ3IC8qIFJlZi5j
cHAgKi8sCisJCQkJRTMxNkQ0MUYyNzY0N0EwMjAwMjg3QjE2IC8qIFJlZkNvdW50ZWRGaXhlZFZl
Y3Rvci5jcHAgKi8sCiAJCQkJODZCRDE5OTcxQTJEQjA1QjAwNkRDRjBBIC8qIFJlZkNvdW50ZXIu
Y3BwICovLAogCQkJCTQ0MkJCRjY4MUM5MUNBRDkwMDE3MDg3RiAvKiBSZWZMb2dnZXIuY3BwICov
LAogCQkJCTkzQTQyN0FEMTgwREE2MEYwMENEMjRENyAvKiBSZWZMb2dnZXIuaCAqLywKQEAgLTUy
NjMsNiArNTI2OSw3IEBACiAJCQkJNUMyQzAxQTgyNzM0ODgzNjAwRjg5RDM3IC8qIENyb3NzVGhy
ZWFkQ29waWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUE5MUQwQTU5MEMwMEZFQkNG
MyAvKiBDU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUFEMUQwQTU5MEMwMEZF
QkNGMyAvKiBEZXF1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzZCODdBMzI3NjIyMTg3MDA1
OUQyRjkgLyogRW1iZWRkZWRGaXhlZFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUY3
QjIxRjFENkNEMTREMDA4QzEyNkMgLyogRW51bVRyYWl0cy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBRDdDNDM0RDFERDJBNTRFMDAyNjg4OEIgLyogRXhwZWN0ZWQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTMxMDgyNzIyMUYyOTZGRjAwQzI4Qjk3IC8qIEZpbGVTeXN0ZW0uY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC01MzA0LDYgKzUzMTEsNyBAQAogCQkJCTUzRUMyNTQxMUU5NkZEODcwMDA4MzFC
OSAvKiBQcmlvcml0eVF1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjEzMUQwQTU5
MEMwMEZFQkNGMyAvKiBSZWRCbGFja1RyZWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RG
MTQxRDBBNTkwQzAwRkVCQ0YzIC8qIFJlZi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzE2RDQy
MDI3NjQ3QTAyMDAyODdCMTYgLyogUmVmQ291bnRlZEZpeGVkVmVjdG9yLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDODNERjE1MUQwQTU5MEMwMEZFQkNGMyAvKiBSZWZDb3VudGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdDODNERUQ3MUQwQTU5MEMwMEZFQkNGMyAvKiBSZWZMb2dnZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGMTYxRDBBNTkwQzAwRkVCQ0YzIC8qIFJlZlB0ci5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0VtYmVkZGVkRml4ZWRWZWN0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvRW1iZWRkZWRGaXhlZFZlY3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjI2ZWJkNjAxZjBkM2Q1YTdm
MWQyMmRlMzBkMGRkYjNhZTdjNWU3OQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0VtYmVkZGVkRml4ZWRWZWN0b3IuY3BwCkBAIC0wLDAgKzEsMjcyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiTW92ZU9ubHku
aCIKKyNpbmNsdWRlIDx3dGYvRW1iZWRkZWRGaXhlZFZlY3Rvci5oPgorCituYW1lc3BhY2UgVGVz
dFdlYktpdEFQSSB7CisKK1RFU1QoV1RGX0VtYmVkZGVkRml4ZWRWZWN0b3IsIEVtcHR5KQorewor
ICAgIGF1dG8gdmVjdG9yID0gRW1iZWRkZWRGaXhlZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0ZSgw
KTsKKyAgICBFWFBFQ1RfVFJVRSh2ZWN0b3ItPmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX0VRKDBV
LCB2ZWN0b3ItPnNpemUoKSk7Cit9CisKK1RFU1QoV1RGX0VtYmVkZGVkRml4ZWRWZWN0b3IsIEl0
ZXJhdG9yKQoreworICAgIGF1dG8gaW50VmVjdG9yID0gRW1iZWRkZWRGaXhlZFZlY3Rvcjx1bnNp
Z25lZD46OmNyZWF0ZSg0KTsKKyAgICBpbnRWZWN0b3IuZ2V0KClbMF0gPSAxMDsKKyAgICBpbnRW
ZWN0b3IuZ2V0KClbMV0gPSAxMTsKKyAgICBpbnRWZWN0b3IuZ2V0KClbMl0gPSAxMjsKKyAgICBp
bnRWZWN0b3IuZ2V0KClbM10gPSAxMzsKKworICAgIGF1dG8gaXQgPSBpbnRWZWN0b3ItPmJlZ2lu
KCk7CisgICAgYXV0byBlbmQgPSBpbnRWZWN0b3ItPmVuZCgpOworICAgIEVYUEVDVF9UUlVFKGVu
ZCAhPSBpdCk7CisKKyAgICBFWFBFQ1RfRVEoMTBVLCAqaXQpOworICAgICsraXQ7CisgICAgRVhQ
RUNUX0VRKDExVSwgKml0KTsKKyAgICArK2l0OworICAgIEVYUEVDVF9FUSgxMlUsICppdCk7Cisg
ICAgKytpdDsKKyAgICBFWFBFQ1RfRVEoMTNVLCAqaXQpOworICAgICsraXQ7CisKKyAgICBFWFBF
Q1RfVFJVRShlbmQgPT0gaXQpOworfQorCitURVNUKFdURl9FbWJlZGRlZEZpeGVkVmVjdG9yLCBP
dmVybG9hZGVkT3BlcmF0b3JBbXBlcnNhbmQpCit7CisgICAgc3RydWN0IFRlc3QgeworICAgIHBy
aXZhdGU6CisgICAgICAgIFRlc3QqIG9wZXJhdG9yJigpID0gZGVsZXRlOworICAgIH07CisKKyAg
ICBhdXRvIHZlY3RvciA9IEVtYmVkZGVkRml4ZWRWZWN0b3I8VGVzdD46OmNyZWF0ZSgxKTsKKyAg
ICB2ZWN0b3IuZ2V0KClbMF0gPSBUZXN0KCk7Cit9CisKK1RFU1QoV1RGX0VtYmVkZGVkRml4ZWRW
ZWN0b3IsIENvcHkpCit7CisgICAgYXV0byB2ZWMxID0gRW1iZWRkZWRGaXhlZFZlY3Rvcjx1bnNp
Z25lZD46OmNyZWF0ZSgzKTsKKyAgICB2ZWMxLmdldCgpWzBdID0gMDsKKyAgICB2ZWMxLmdldCgp
WzFdID0gMTsKKyAgICB2ZWMxLmdldCgpWzJdID0gMjsKKworICAgIGF1dG8gdmVjMiA9IEVtYmVk
ZGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+OjpjcmVhdGUodmVjMS0+YmVnaW4oKSwgdmVjMS0+ZW5k
KCkpOworICAgIEVYUEVDVF9FUSh2ZWMxLT5zaXplKCksIDNVKTsKKyAgICBFWFBFQ1RfRVEodmVj
Mi0+c2l6ZSgpLCAzVSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZlYzEtPnNpemUo
KTsgKytpKSB7CisgICAgICAgIEVYUEVDVF9FUSh2ZWMxLmdldCgpW2ldLCBpKTsKKyAgICAgICAg
RVhQRUNUX0VRKHZlYzIuZ2V0KClbaV0sIGkpOworICAgIH0KKyAgICB2ZWMxLmdldCgpWzJdID0g
NDI7CisgICAgRVhQRUNUX0VRKHZlYzEuZ2V0KClbMl0sIDQyVSk7CisgICAgRVhQRUNUX0VRKHZl
YzIuZ2V0KClbMl0sIDJVKTsKK30KKworVEVTVChXVEZfRW1iZWRkZWRGaXhlZFZlY3RvciwgQ29w
eVZlY3RvcikKK3sKKyAgICBhdXRvIHZlYzEgPSBWZWN0b3I8dW5zaWduZWQ+Ojpmcm9tKDAsIDEs
IDIsIDMpOworICAgIEVYUEVDVF9FUSh2ZWMxLnNpemUoKSwgNFUpOworICAgIGF1dG8gdmVjMiA9
IEVtYmVkZGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+OjpjcmVhdGVGcm9tVmVjdG9yKHZlYzEpOwor
ICAgIEVYUEVDVF9FUSh2ZWMxLnNpemUoKSwgNFUpOworICAgIEVYUEVDVF9FUSh2ZWMyLT5zaXpl
KCksIDRVKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmVjMS5zaXplKCk7ICsraSkg
eworICAgICAgICBFWFBFQ1RfRVEodmVjMVtpXSwgaSk7CisgICAgICAgIEVYUEVDVF9FUSh2ZWMy
LmdldCgpW2ldLCBpKTsKKyAgICB9CisgICAgdmVjMVsyXSA9IDQyOworICAgIEVYUEVDVF9FUSh2
ZWMxWzJdLCA0MlUpOworICAgIEVYUEVDVF9FUSh2ZWMyLmdldCgpWzJdLCAyVSk7Cit9CisKK1RF
U1QoV1RGX0VtYmVkZGVkRml4ZWRWZWN0b3IsIE1vdmVWZWN0b3IpCit7CisgICAgYXV0byB2ZWMx
ID0gVmVjdG9yPE1vdmVPbmx5Pjo6ZnJvbShNb3ZlT25seSgwKSwgTW92ZU9ubHkoMSksIE1vdmVP
bmx5KDIpLCBNb3ZlT25seSgzKSk7CisgICAgRVhQRUNUX0VRKHZlYzEuc2l6ZSgpLCA0VSk7Cisg
ICAgYXV0byB2ZWMyID0gRW1iZWRkZWRGaXhlZFZlY3RvcjxNb3ZlT25seT46OmNyZWF0ZUZyb21W
ZWN0b3IoV1RGTW92ZSh2ZWMxKSk7CisgICAgRVhQRUNUX0VRKHZlYzEuc2l6ZSgpLCAwVSk7Cisg
ICAgRVhQRUNUX0VRKHZlYzItPnNpemUoKSwgNFUpOworICAgIGZvciAodW5zaWduZWQgaW5kZXgg
PSAwOyBpbmRleCA8IHZlYzItPnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgRVhQRUNUX0VRKHZl
YzIuZ2V0KClbaW5kZXhdLnZhbHVlKCksIGluZGV4KTsKK30KKworVEVTVChXVEZfRW1iZWRkZWRG
aXhlZFZlY3RvciwgSXRlcmF0b3JGb3IpCit7CisgICAgYXV0byB2ZWMxID0gRW1iZWRkZWRGaXhl
ZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0ZSgzKTsKKyAgICB2ZWMxLmdldCgpWzBdID0gMDsKKyAg
ICB2ZWMxLmdldCgpWzFdID0gMTsKKyAgICB2ZWMxLmdldCgpWzJdID0gMjsKKworICAgIHVuc2ln
bmVkIGluZGV4ID0gMDsKKyAgICBmb3IgKGF1dG8gaXRlciA9IHZlYzEtPmJlZ2luKCk7IGl0ZXIg
IT0gdmVjMS0+ZW5kKCk7ICsraXRlcikgeworICAgICAgICBFWFBFQ1RfRVEoKml0ZXIsIGluZGV4
KTsKKyAgICAgICAgKytpbmRleDsKKyAgICB9Cit9CisKK1RFU1QoV1RGX0VtYmVkZGVkRml4ZWRW
ZWN0b3IsIFJldmVyc2UpCit7CisgICAgYXV0byB2ZWMxID0gRW1iZWRkZWRGaXhlZFZlY3Rvcjx1
bnNpZ25lZD46OmNyZWF0ZSgzKTsKKyAgICB2ZWMxLmdldCgpWzBdID0gMDsKKyAgICB2ZWMxLmdl
dCgpWzFdID0gMTsKKyAgICB2ZWMxLmdldCgpWzJdID0gMjsKKworICAgIHVuc2lnbmVkIGluZGV4
ID0gMDsKKyAgICBmb3IgKGF1dG8gaXRlciA9IHZlYzEtPnJiZWdpbigpOyBpdGVyICE9IHZlYzEt
PnJlbmQoKTsgKytpdGVyKSB7CisgICAgICAgICsraW5kZXg7CisgICAgICAgIEVYUEVDVF9FUSgq
aXRlciwgM1UgLSBpbmRleCk7CisgICAgfQorfQorCitURVNUKFdURl9FbWJlZGRlZEZpeGVkVmVj
dG9yLCBGaWxsKQoreworICAgIGF1dG8gdmVjMSA9IEVtYmVkZGVkRml4ZWRWZWN0b3I8dW5zaWdu
ZWQ+OjpjcmVhdGUoMyk7CisgICAgdmVjMS0+ZmlsbCg0Mik7CisKKyAgICBmb3IgKGF1dG8mIHZh
bHVlIDogdmVjMS5nZXQoKSkKKyAgICAgICAgRVhQRUNUX0VRKHZhbHVlLCA0MlUpOworfQorCitz
dHJ1Y3QgRGVzdHJ1Y3Rvck9ic2VydmVyIHsKKyAgICBEZXN0cnVjdG9yT2JzZXJ2ZXIoKSA9IGRl
ZmF1bHQ7CisKKyAgICBEZXN0cnVjdG9yT2JzZXJ2ZXIoYm9vbCogZGVzdHJ1Y3RlZCkKKyAgICAg
ICAgOiBkZXN0cnVjdGVkKGRlc3RydWN0ZWQpCisgICAgeworICAgIH0KKworICAgIH5EZXN0cnVj
dG9yT2JzZXJ2ZXIoKQorICAgIHsKKyAgICAgICAgaWYgKGRlc3RydWN0ZWQpCisgICAgICAgICAg
ICAqZGVzdHJ1Y3RlZCA9IHRydWU7CisgICAgfQorCisgICAgRGVzdHJ1Y3Rvck9ic2VydmVyKERl
c3RydWN0b3JPYnNlcnZlciYmIG90aGVyKQorICAgICAgICA6IGRlc3RydWN0ZWQob3RoZXIuZGVz
dHJ1Y3RlZCkKKyAgICB7CisgICAgICAgIG90aGVyLmRlc3RydWN0ZWQgPSBudWxscHRyOworICAg
IH0KKworICAgIERlc3RydWN0b3JPYnNlcnZlciYgb3BlcmF0b3I9KERlc3RydWN0b3JPYnNlcnZl
ciYmIG90aGVyKQorICAgIHsKKyAgICAgICAgZGVzdHJ1Y3RlZCA9IG90aGVyLmRlc3RydWN0ZWQ7
CisgICAgICAgIG90aGVyLmRlc3RydWN0ZWQgPSBudWxscHRyOworICAgICAgICByZXR1cm4gKnRo
aXM7CisgICAgfQorCisgICAgYm9vbCogZGVzdHJ1Y3RlZCB7IG51bGxwdHIgfTsKK307CisKK1RF
U1QoV1RGX0VtYmVkZGVkRml4ZWRWZWN0b3IsIERlc3RydWN0b3IpCit7CisgICAgVmVjdG9yPGJv
b2w+IGZsYWdzKDMsIGZhbHNlKTsKKyAgICB7CisgICAgICAgIGF1dG8gdmVjdG9yID0gRW1iZWRk
ZWRGaXhlZFZlY3RvcjxEZXN0cnVjdG9yT2JzZXJ2ZXI+OjpjcmVhdGUoZmxhZ3Muc2l6ZSgpKTsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZsYWdzLnNpemUoKTsgKytpKQorICAg
ICAgICAgICAgdmVjdG9yLmdldCgpW2ldID0gRGVzdHJ1Y3Rvck9ic2VydmVyKCZmbGFnc1tpXSk7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmbGFncy5zaXplKCk7ICsraSkKKyAg
ICAgICAgICAgIEVYUEVDVF9GQUxTRShmbGFnc1tpXSk7CisgICAgfQorICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBmbGFncy5zaXplKCk7ICsraSkKKyAgICAgICAgRVhQRUNUX1RSVUUoZmxh
Z3NbaV0pOworfQorCitURVNUKFdURl9FbWJlZGRlZEZpeGVkVmVjdG9yLCBEZXN0cnVjdG9yQWZ0
ZXJNb3ZlKQoreworICAgIFZlY3Rvcjxib29sPiBmbGFncygzLCBmYWxzZSk7CisgICAgeworICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW1iZWRkZWRGaXhlZFZlY3RvcjxEZXN0cnVjdG9yT2JzZXJ2
ZXI+PiBvdXRlclZlY3RvcjsKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byB2ZWN0b3IgPSBF
bWJlZGRlZEZpeGVkVmVjdG9yPERlc3RydWN0b3JPYnNlcnZlcj46OmNyZWF0ZShmbGFncy5zaXpl
KCkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZsYWdzLnNpemUoKTsg
KytpKQorICAgICAgICAgICAgICAgIHZlY3Rvci5nZXQoKVtpXSA9IERlc3RydWN0b3JPYnNlcnZl
cigmZmxhZ3NbaV0pOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZsYWdz
LnNpemUoKTsgKytpKQorICAgICAgICAgICAgICAgIEVYUEVDVF9GQUxTRShmbGFnc1tpXSk7Cisg
ICAgICAgICAgICBvdXRlclZlY3RvciA9IHZlY3Rvci5tb3ZlVG9VbmlxdWVQdHIoKTsKKyAgICAg
ICAgfQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmxhZ3Muc2l6ZSgpOyArK2kp
CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoZmxhZ3NbaV0pOworICAgIH0KKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgZmxhZ3Muc2l6ZSgpOyArK2kpCisgICAgICAgIEVYUEVDVF9UUlVF
KGZsYWdzW2ldKTsKK30KKworVEVTVChXVEZfRW1iZWRkZWRGaXhlZFZlY3RvciwgQmFzaWMpCit7
CisgICAgc3RkOjphcnJheTx1bnNpZ25lZCwgND4gYXJyYXkgeyB7CisgICAgICAgIDAsIDEsIDIs
IDMKKyAgICB9IH07CisgICAgeworICAgICAgICBhdXRvIHZlY3RvciA9IEVtYmVkZGVkRml4ZWRW
ZWN0b3I8dW5zaWduZWQ+OjpjcmVhdGUoYXJyYXkuYmVnaW4oKSwgYXJyYXkuZW5kKCkpOworICAg
ICAgICBFWFBFQ1RfRVEoNFUsIHZlY3Rvci0+c2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDBV
LCB2ZWN0b3ItPmF0KDApKTsKKyAgICAgICAgRVhQRUNUX0VRKDFVLCB2ZWN0b3ItPmF0KDEpKTsK
KyAgICAgICAgRVhQRUNUX0VRKDJVLCB2ZWN0b3ItPmF0KDIpKTsKKyAgICAgICAgRVhQRUNUX0VR
KDNVLCB2ZWN0b3ItPmF0KDMpKTsKKyAgICB9Cit9CisKK1RFU1QoV1RGX0VtYmVkZGVkRml4ZWRW
ZWN0b3IsIENsb25lKQoreworICAgIHN0ZDo6YXJyYXk8dW5zaWduZWQsIDQ+IGFycmF5IHsgewor
ICAgICAgICAwLCAxLCAyLCAzCisgICAgfSB9OworICAgIHsKKyAgICAgICAgYXV0byB2ZWN0b3Ig
PSBFbWJlZGRlZEZpeGVkVmVjdG9yPHVuc2lnbmVkPjo6Y3JlYXRlKGFycmF5LmJlZ2luKCksIGFy
cmF5LmVuZCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDRVLCB2ZWN0b3ItPnNpemUoKSk7CisgICAg
ICAgIEVYUEVDVF9FUSgwVSwgdmVjdG9yLT5hdCgwKSk7CisgICAgICAgIEVYUEVDVF9FUSgxVSwg
dmVjdG9yLT5hdCgxKSk7CisgICAgICAgIEVYUEVDVF9FUSgyVSwgdmVjdG9yLT5hdCgyKSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgzVSwgdmVjdG9yLT5hdCgzKSk7CisKKyAgICAgICAgYXV0byBjbG9u
ZWQgPSB2ZWN0b3ItPmNsb25lKCk7CisgICAgICAgIEVYUEVDVF9FUSg0VSwgY2xvbmVkLT5zaXpl
KCkpOworICAgICAgICBFWFBFQ1RfRVEoMFUsIGNsb25lZC0+YXQoMCkpOworICAgICAgICBFWFBF
Q1RfRVEoMVUsIGNsb25lZC0+YXQoMSkpOworICAgICAgICBFWFBFQ1RfRVEoMlUsIGNsb25lZC0+
YXQoMikpOworICAgICAgICBFWFBFQ1RfRVEoM1UsIGNsb25lZC0+YXQoMykpOworICAgIH0KK30K
KworVEVTVChXVEZfRW1iZWRkZWRGaXhlZFZlY3RvciwgRXF1YWwpCit7CisgICAgYXV0byB2ZWMx
ID0gRW1iZWRkZWRGaXhlZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0ZSgxMCk7CisgICAgYXV0byB2
ZWMyID0gRW1iZWRkZWRGaXhlZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0ZSgxMCk7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IDEwOyArK2kpIHsKKyAgICAgICAgdmVjMS5nZXQoKVtpXSA9
IGk7CisgICAgICAgIHZlYzIuZ2V0KClbaV0gPSBpOworICAgIH0KKyAgICBFWFBFQ1RfRVEodmVj
MS5nZXQoKSwgdmVjMi5nZXQoKSk7CisgICAgdmVjMS5nZXQoKVswXSA9IDQyOworICAgIEVYUEVD
VF9ORSh2ZWMxLmdldCgpLCB2ZWMyLmdldCgpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRml4ZWRWZWN0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvRml4ZWRWZWN0b3IuY3BwCmluZGV4IDE2MTUzZGFjOTcyNWQwYjU4ZGJm
ZmNjYjQ2ODI2ODc5NDc4MDE1NWEuLjM3NTUxYzk1MjMwMWZlY2I5MjczNmI0YjM4ZDViNjY0ZTY1
NTM0ZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpeGVkVmVj
dG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaXhlZFZlY3Rvci5j
cHAKQEAgLTMyNSw0ICszMjUsMzQgQEAgVEVTVChXVEZfRml4ZWRWZWN0b3IsIE1vdmVLZWVwc0Rh
dGFOZXN0ZWQpCiAgICAgfQogfQogCitURVNUKFdURl9GaXhlZFZlY3RvciwgT2Zmc2V0KQorewor
ICAgIEVYUEVDVF9FUShGaXhlZFZlY3Rvcjx1bnNpZ25lZD46Om9mZnNldE9mU3RvcmFnZSgpLCAw
KTsKKyAgICBFWFBFQ1RfRVEoRml4ZWRWZWN0b3I8dW5zaWduZWQ+OjpTdG9yYWdlOjpvZmZzZXRP
ZkRhdGEoKSwgNCk7CisgICAgRVhQRUNUX0VRKEZpeGVkVmVjdG9yPHZvaWQqPjo6b2Zmc2V0T2ZT
dG9yYWdlKCksIDApOworICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRml4ZWRW
ZWN0b3I8dm9pZCo+OjpTdG9yYWdlOjpvZmZzZXRPZkRhdGEoKSksIHNpemVvZih2b2lkKikpOwor
fQorCitURVNUKFdURl9GaXhlZFZlY3RvciwgRXF1YWwpCit7CisgICAgeworICAgICAgICBGaXhl
ZFZlY3Rvcjx1bnNpZ25lZD4gdmVjMSgxMCk7CisgICAgICAgIEZpeGVkVmVjdG9yPHVuc2lnbmVk
PiB2ZWMyKDEwKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDEwOyArK2kpIHsK
KyAgICAgICAgICAgIHZlYzFbaV0gPSBpOworICAgICAgICAgICAgdmVjMltpXSA9IGk7CisgICAg
ICAgIH0KKyAgICAgICAgRVhQRUNUX0VRKHZlYzEsIHZlYzIpOworICAgICAgICB2ZWMxWzBdID0g
NDI7CisgICAgICAgIEVYUEVDVF9ORSh2ZWMxLCB2ZWMyKTsKKyAgICB9CisgICAgeworICAgICAg
ICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVjMTsKKyAgICAgICAgRml4ZWRWZWN0b3I8dW5zaWdu
ZWQ+IHZlYzI7CisgICAgICAgIEZpeGVkVmVjdG9yPHVuc2lnbmVkPiB2ZWMzKDApOworICAgICAg
ICBFWFBFQ1RfRVEodmVjMSwgdmVjMik7CisgICAgICAgIEVYUEVDVF9FUSh2ZWMxLCB2ZWMzKTsK
KyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZWRGaXhlZFZlY3Rvci5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZDb3VudGVkRml4ZWRWZWN0b3IuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmJmMGY2NDNjNWU5YzViMmUzNWZmY2RlNGI5ZGYzZWU0OTFjNTNhOTgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZDb3VudGVkRml4
ZWRWZWN0b3IuY3BwCkBAIC0wLDAgKzEsMjc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaW5jbHVkZSAiTW92ZU9ubHkuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZEZpeGVkVmVjdG9yLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChXVEZf
UmVmQ291bnRlZEZpeGVkVmVjdG9yLCBFbXB0eSkKK3sKKyAgICBhdXRvIHZlY3RvciA9IFJlZkNv
dW50ZWRGaXhlZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0ZSgwKTsKKyAgICBFWFBFQ1RfVFJVRSh2
ZWN0b3ItPmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX0VRKDBVLCB2ZWN0b3ItPnNpemUoKSk7Cit9
CisKK1RFU1QoV1RGX1JlZkNvdW50ZWRGaXhlZFZlY3RvciwgSXRlcmF0b3IpCit7CisgICAgYXV0
byBpbnRWZWN0b3IgPSBSZWZDb3VudGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+OjpjcmVhdGUoNCk7
CisgICAgaW50VmVjdG9yLmdldCgpWzBdID0gMTA7CisgICAgaW50VmVjdG9yLmdldCgpWzFdID0g
MTE7CisgICAgaW50VmVjdG9yLmdldCgpWzJdID0gMTI7CisgICAgaW50VmVjdG9yLmdldCgpWzNd
ID0gMTM7CisKKyAgICBhdXRvIGl0ID0gaW50VmVjdG9yLT5iZWdpbigpOworICAgIGF1dG8gZW5k
ID0gaW50VmVjdG9yLT5lbmQoKTsKKyAgICBFWFBFQ1RfVFJVRShlbmQgIT0gaXQpOworCisgICAg
RVhQRUNUX0VRKDEwVSwgKml0KTsKKyAgICArK2l0OworICAgIEVYUEVDVF9FUSgxMVUsICppdCk7
CisgICAgKytpdDsKKyAgICBFWFBFQ1RfRVEoMTJVLCAqaXQpOworICAgICsraXQ7CisgICAgRVhQ
RUNUX0VRKDEzVSwgKml0KTsKKyAgICArK2l0OworCisgICAgRVhQRUNUX1RSVUUoZW5kID09IGl0
KTsKK30KKworVEVTVChXVEZfUmVmQ291bnRlZEZpeGVkVmVjdG9yLCBPdmVybG9hZGVkT3BlcmF0
b3JBbXBlcnNhbmQpCit7CisgICAgc3RydWN0IFRlc3QgeworICAgIHByaXZhdGU6CisgICAgICAg
IFRlc3QqIG9wZXJhdG9yJigpID0gZGVsZXRlOworICAgIH07CisKKyAgICBhdXRvIHZlY3RvciA9
IFJlZkNvdW50ZWRGaXhlZFZlY3RvcjxUZXN0Pjo6Y3JlYXRlKDEpOworICAgIHZlY3Rvci5nZXQo
KVswXSA9IFRlc3QoKTsKK30KKworVEVTVChXVEZfUmVmQ291bnRlZEZpeGVkVmVjdG9yLCBDb3B5
KQoreworICAgIGF1dG8gdmVjMSA9IFJlZkNvdW50ZWRGaXhlZFZlY3Rvcjx1bnNpZ25lZD46OmNy
ZWF0ZSgzKTsKKyAgICB2ZWMxLmdldCgpWzBdID0gMDsKKyAgICB2ZWMxLmdldCgpWzFdID0gMTsK
KyAgICB2ZWMxLmdldCgpWzJdID0gMjsKKworICAgIGF1dG8gdmVjMiA9IFJlZkNvdW50ZWRGaXhl
ZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0ZSh2ZWMxLT5iZWdpbigpLCB2ZWMxLT5lbmQoKSk7Cisg
ICAgRVhQRUNUX0VRKHZlYzEtPnNpemUoKSwgM1UpOworICAgIEVYUEVDVF9FUSh2ZWMyLT5zaXpl
KCksIDNVKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmVjMS0+c2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgRVhQRUNUX0VRKHZlYzEuZ2V0KClbaV0sIGkpOworICAgICAgICBFWFBFQ1Rf
RVEodmVjMi5nZXQoKVtpXSwgaSk7CisgICAgfQorICAgIHZlYzEuZ2V0KClbMl0gPSA0MjsKKyAg
ICBFWFBFQ1RfRVEodmVjMS5nZXQoKVsyXSwgNDJVKTsKKyAgICBFWFBFQ1RfRVEodmVjMi5nZXQo
KVsyXSwgMlUpOworfQorCitURVNUKFdURl9SZWZDb3VudGVkRml4ZWRWZWN0b3IsIENvcHlWZWN0
b3IpCit7CisgICAgYXV0byB2ZWMxID0gVmVjdG9yPHVuc2lnbmVkPjo6ZnJvbSgwLCAxLCAyLCAz
KTsKKyAgICBFWFBFQ1RfRVEodmVjMS5zaXplKCksIDRVKTsKKyAgICBhdXRvIHZlYzIgPSBSZWZD
b3VudGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+OjpjcmVhdGVGcm9tVmVjdG9yKHZlYzEpOworICAg
IEVYUEVDVF9FUSh2ZWMxLnNpemUoKSwgNFUpOworICAgIEVYUEVDVF9FUSh2ZWMyLT5zaXplKCks
IDRVKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmVjMS5zaXplKCk7ICsraSkgewor
ICAgICAgICBFWFBFQ1RfRVEodmVjMVtpXSwgaSk7CisgICAgICAgIEVYUEVDVF9FUSh2ZWMyLmdl
dCgpW2ldLCBpKTsKKyAgICB9CisgICAgdmVjMVsyXSA9IDQyOworICAgIEVYUEVDVF9FUSh2ZWMx
WzJdLCA0MlUpOworICAgIEVYUEVDVF9FUSh2ZWMyLmdldCgpWzJdLCAyVSk7Cit9CisKK1RFU1Qo
V1RGX1JlZkNvdW50ZWRGaXhlZFZlY3RvciwgTW92ZVZlY3RvcikKK3sKKyAgICBhdXRvIHZlYzEg
PSBWZWN0b3I8TW92ZU9ubHk+Ojpmcm9tKE1vdmVPbmx5KDApLCBNb3ZlT25seSgxKSwgTW92ZU9u
bHkoMiksIE1vdmVPbmx5KDMpKTsKKyAgICBFWFBFQ1RfRVEodmVjMS5zaXplKCksIDRVKTsKKyAg
ICBhdXRvIHZlYzIgPSBSZWZDb3VudGVkRml4ZWRWZWN0b3I8TW92ZU9ubHk+OjpjcmVhdGVGcm9t
VmVjdG9yKFdURk1vdmUodmVjMSkpOworICAgIEVYUEVDVF9FUSh2ZWMxLnNpemUoKSwgMFUpOwor
ICAgIEVYUEVDVF9FUSh2ZWMyLT5zaXplKCksIDRVKTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4
ID0gMDsgaW5kZXggPCB2ZWMyLT5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIEVYUEVDVF9FUSh2
ZWMyLmdldCgpW2luZGV4XS52YWx1ZSgpLCBpbmRleCk7Cit9CisKK1RFU1QoV1RGX1JlZkNvdW50
ZWRGaXhlZFZlY3RvciwgSXRlcmF0b3JGb3IpCit7CisgICAgYXV0byB2ZWMxID0gUmVmQ291bnRl
ZEZpeGVkVmVjdG9yPHVuc2lnbmVkPjo6Y3JlYXRlKDMpOworICAgIHZlYzEuZ2V0KClbMF0gPSAw
OworICAgIHZlYzEuZ2V0KClbMV0gPSAxOworICAgIHZlYzEuZ2V0KClbMl0gPSAyOworCisgICAg
dW5zaWduZWQgaW5kZXggPSAwOworICAgIGZvciAoYXV0byBpdGVyID0gdmVjMS0+YmVnaW4oKTsg
aXRlciAhPSB2ZWMxLT5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgIEVYUEVDVF9FUSgqaXRlciwg
aW5kZXgpOworICAgICAgICArK2luZGV4OworICAgIH0KK30KKworVEVTVChXVEZfUmVmQ291bnRl
ZEZpeGVkVmVjdG9yLCBSZXZlcnNlKQoreworICAgIGF1dG8gdmVjMSA9IFJlZkNvdW50ZWRGaXhl
ZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0ZSgzKTsKKyAgICB2ZWMxLmdldCgpWzBdID0gMDsKKyAg
ICB2ZWMxLmdldCgpWzFdID0gMTsKKyAgICB2ZWMxLmdldCgpWzJdID0gMjsKKworICAgIHVuc2ln
bmVkIGluZGV4ID0gMDsKKyAgICBmb3IgKGF1dG8gaXRlciA9IHZlYzEtPnJiZWdpbigpOyBpdGVy
ICE9IHZlYzEtPnJlbmQoKTsgKytpdGVyKSB7CisgICAgICAgICsraW5kZXg7CisgICAgICAgIEVY
UEVDVF9FUSgqaXRlciwgM1UgLSBpbmRleCk7CisgICAgfQorfQorCitURVNUKFdURl9SZWZDb3Vu
dGVkRml4ZWRWZWN0b3IsIEZpbGwpCit7CisgICAgYXV0byB2ZWMxID0gUmVmQ291bnRlZEZpeGVk
VmVjdG9yPHVuc2lnbmVkPjo6Y3JlYXRlKDMpOworICAgIHZlYzEtPmZpbGwoNDIpOworCisgICAg
Zm9yIChhdXRvJiB2YWx1ZSA6IHZlYzEuZ2V0KCkpCisgICAgICAgIEVYUEVDVF9FUSh2YWx1ZSwg
NDJVKTsKK30KKworc3RydWN0IERlc3RydWN0b3JPYnNlcnZlciB7CisgICAgRGVzdHJ1Y3Rvck9i
c2VydmVyKCkgPSBkZWZhdWx0OworCisgICAgRGVzdHJ1Y3Rvck9ic2VydmVyKGJvb2wqIGRlc3Ry
dWN0ZWQpCisgICAgICAgIDogZGVzdHJ1Y3RlZChkZXN0cnVjdGVkKQorICAgIHsKKyAgICB9CisK
KyAgICB+RGVzdHJ1Y3Rvck9ic2VydmVyKCkKKyAgICB7CisgICAgICAgIGlmIChkZXN0cnVjdGVk
KQorICAgICAgICAgICAgKmRlc3RydWN0ZWQgPSB0cnVlOworICAgIH0KKworICAgIERlc3RydWN0
b3JPYnNlcnZlcihEZXN0cnVjdG9yT2JzZXJ2ZXImJiBvdGhlcikKKyAgICAgICAgOiBkZXN0cnVj
dGVkKG90aGVyLmRlc3RydWN0ZWQpCisgICAgeworICAgICAgICBvdGhlci5kZXN0cnVjdGVkID0g
bnVsbHB0cjsKKyAgICB9CisKKyAgICBEZXN0cnVjdG9yT2JzZXJ2ZXImIG9wZXJhdG9yPShEZXN0
cnVjdG9yT2JzZXJ2ZXImJiBvdGhlcikKKyAgICB7CisgICAgICAgIGRlc3RydWN0ZWQgPSBvdGhl
ci5kZXN0cnVjdGVkOworICAgICAgICBvdGhlci5kZXN0cnVjdGVkID0gbnVsbHB0cjsKKyAgICAg
ICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIGJvb2wqIGRlc3RydWN0ZWQgeyBudWxscHRy
IH07Cit9OworCitURVNUKFdURl9SZWZDb3VudGVkRml4ZWRWZWN0b3IsIERlc3RydWN0b3IpCit7
CisgICAgVmVjdG9yPGJvb2w+IGZsYWdzKDMsIGZhbHNlKTsKKyAgICB7CisgICAgICAgIGF1dG8g
dmVjdG9yID0gUmVmQ291bnRlZEZpeGVkVmVjdG9yPERlc3RydWN0b3JPYnNlcnZlcj46OmNyZWF0
ZShmbGFncy5zaXplKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmxhZ3Mu
c2l6ZSgpOyArK2kpCisgICAgICAgICAgICB2ZWN0b3IuZ2V0KClbaV0gPSBEZXN0cnVjdG9yT2Jz
ZXJ2ZXIoJmZsYWdzW2ldKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZsYWdz
LnNpemUoKTsgKytpKQorICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGZsYWdzW2ldKTsKKyAgICB9
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZsYWdzLnNpemUoKTsgKytpKQorICAgICAg
ICBFWFBFQ1RfVFJVRShmbGFnc1tpXSk7Cit9CisKK1RFU1QoV1RGX1JlZkNvdW50ZWRGaXhlZFZl
Y3RvciwgRGVzdHJ1Y3RvckFmdGVyTW92ZSkKK3sKKyAgICBWZWN0b3I8Ym9vbD4gZmxhZ3MoMywg
ZmFsc2UpOworICAgIHsKKyAgICAgICAgUmVmUHRyPFJlZkNvdW50ZWRGaXhlZFZlY3RvcjxEZXN0
cnVjdG9yT2JzZXJ2ZXI+PiBvdXRlclZlY3RvcjsKKyAgICAgICAgeworICAgICAgICAgICAgUmVm
UHRyPFJlZkNvdW50ZWRGaXhlZFZlY3RvcjxEZXN0cnVjdG9yT2JzZXJ2ZXI+PiBvdXRlclZlY3Rv
cjI7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYXV0byB2ZWN0b3IgPSBSZWZDb3Vu
dGVkRml4ZWRWZWN0b3I8RGVzdHJ1Y3Rvck9ic2VydmVyPjo6Y3JlYXRlKGZsYWdzLnNpemUoKSk7
CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZsYWdzLnNpemUoKTsg
KytpKQorICAgICAgICAgICAgICAgICAgICB2ZWN0b3IuZ2V0KClbaV0gPSBEZXN0cnVjdG9yT2Jz
ZXJ2ZXIoJmZsYWdzW2ldKTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgZmxhZ3Muc2l6ZSgpOyArK2kpCisgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9GQUxTRShm
bGFnc1tpXSk7CisgICAgICAgICAgICAgICAgb3V0ZXJWZWN0b3IgPSB2ZWN0b3IuY29weVJlZigp
OworICAgICAgICAgICAgICAgIG91dGVyVmVjdG9yMiA9IHZlY3Rvci5jb3B5UmVmKCk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmxhZ3Muc2l6
ZSgpOyArK2kpCisgICAgICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGZsYWdzW2ldKTsKKyAgICAg
ICAgICAgIEVYUEVDVF9FUShvdXRlclZlY3Rvci5nZXQoKSwgb3V0ZXJWZWN0b3IyLmdldCgpKTsK
KyAgICAgICAgfQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmxhZ3Muc2l6ZSgp
OyArK2kpCisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoZmxhZ3NbaV0pOworICAgIH0KKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmxhZ3Muc2l6ZSgpOyArK2kpCisgICAgICAgIEVYUEVD
VF9UUlVFKGZsYWdzW2ldKTsKK30KKworVEVTVChXVEZfUmVmQ291bnRlZEZpeGVkVmVjdG9yLCBC
YXNpYykKK3sKKyAgICBzdGQ6OmFycmF5PHVuc2lnbmVkLCA0PiBhcnJheSB7IHsKKyAgICAgICAg
MCwgMSwgMiwgMworICAgIH0gfTsKKyAgICB7CisgICAgICAgIGF1dG8gdmVjdG9yID0gUmVmQ291
bnRlZEZpeGVkVmVjdG9yPHVuc2lnbmVkPjo6Y3JlYXRlKGFycmF5LmJlZ2luKCksIGFycmF5LmVu
ZCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDRVLCB2ZWN0b3ItPnNpemUoKSk7CisgICAgICAgIEVY
UEVDVF9FUSgwVSwgdmVjdG9yLT5hdCgwKSk7CisgICAgICAgIEVYUEVDVF9FUSgxVSwgdmVjdG9y
LT5hdCgxKSk7CisgICAgICAgIEVYUEVDVF9FUSgyVSwgdmVjdG9yLT5hdCgyKSk7CisgICAgICAg
IEVYUEVDVF9FUSgzVSwgdmVjdG9yLT5hdCgzKSk7CisgICAgfQorfQorCitURVNUKFdURl9SZWZD
b3VudGVkRml4ZWRWZWN0b3IsIENsb25lKQoreworICAgIHN0ZDo6YXJyYXk8dW5zaWduZWQsIDQ+
IGFycmF5IHsgeworICAgICAgICAwLCAxLCAyLCAzCisgICAgfSB9OworICAgIHsKKyAgICAgICAg
YXV0byB2ZWN0b3IgPSBSZWZDb3VudGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+OjpjcmVhdGUoYXJy
YXkuYmVnaW4oKSwgYXJyYXkuZW5kKCkpOworICAgICAgICBFWFBFQ1RfRVEoNFUsIHZlY3Rvci0+
c2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDBVLCB2ZWN0b3ItPmF0KDApKTsKKyAgICAgICAg
RVhQRUNUX0VRKDFVLCB2ZWN0b3ItPmF0KDEpKTsKKyAgICAgICAgRVhQRUNUX0VRKDJVLCB2ZWN0
b3ItPmF0KDIpKTsKKyAgICAgICAgRVhQRUNUX0VRKDNVLCB2ZWN0b3ItPmF0KDMpKTsKKworICAg
ICAgICBhdXRvIGNsb25lZCA9IHZlY3Rvci0+Y2xvbmUoKTsKKyAgICAgICAgRVhQRUNUX0VRKDRV
LCBjbG9uZWQtPnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUSgwVSwgY2xvbmVkLT5hdCgwKSk7
CisgICAgICAgIEVYUEVDVF9FUSgxVSwgY2xvbmVkLT5hdCgxKSk7CisgICAgICAgIEVYUEVDVF9F
USgyVSwgY2xvbmVkLT5hdCgyKSk7CisgICAgICAgIEVYUEVDVF9FUSgzVSwgY2xvbmVkLT5hdCgz
KSk7CisgICAgfQorfQorCitURVNUKFdURl9SZWZDb3VudGVkRml4ZWRWZWN0b3IsIEVxdWFsKQor
eworICAgIGF1dG8gdmVjMSA9IFJlZkNvdW50ZWRGaXhlZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0
ZSgxMCk7CisgICAgYXV0byB2ZWMyID0gUmVmQ291bnRlZEZpeGVkVmVjdG9yPHVuc2lnbmVkPjo6
Y3JlYXRlKDEwKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMTA7ICsraSkgeworICAg
ICAgICB2ZWMxLmdldCgpW2ldID0gaTsKKyAgICAgICAgdmVjMi5nZXQoKVtpXSA9IGk7CisgICAg
fQorICAgIEVYUEVDVF9FUSh2ZWMxLmdldCgpLCB2ZWMyLmdldCgpKTsKKyAgICB2ZWMxLmdldCgp
WzBdID0gNDI7CisgICAgRVhQRUNUX05FKHZlYzEuZ2V0KCksIHZlYzIuZ2V0KCkpOworfQorCit9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446901</attachid>
            <date>2021-12-11 13:48:15 -0800</date>
            <delta_ts>2021-12-11 15:37:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234201-20211211134815.patch</filename>
            <type>text/plain</type>
            <size>82881</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MTc3YTdmMmEwODU3YTJiMjNhM2EzZTg4OTIzNTEyZDg4MGE2MDljLi40ZjgyOWNiMWNiYTViYjlk
MmI1ZmRjNmZmMTVmMDg3OTk2NGNiMjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOSBAQAorMjAyMS0xMi0xMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtXVEZdIEludHJvZHVjZSBUcmFpbGluZ0FycmF5CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQyMDEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSB1c2UgVGhyZWFkU2FmZVJlZkNv
dW50ZWRGaXhlZFZlY3RvciBpbiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBzbyB0aGF0IHdl
IHJlbW92ZSBvbmUgdW5uZWNlc3NhcnkgaW5kaXJlY3Rpb24gcG9pbnRlci4KKworICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJhc2VsaW5l
SklUQ29uc3RhbnRQb29sKToKKyAgICAgICAgKiBieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldC5jcHA6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0Ojpt
ZXJnZWRXaXRoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6T2JqZWN0UHJvcGVydHlDb25kaXRpb25T
ZXQ6OmR1bXBJbkNvbnRleHQgY29uc3QpOgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldDo6aXNWYWxpZEFuZFdhdGNoYWJsZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNv
ZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaDoKKyAgICAgICAgKEpTQzo6T2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQ6OmludmFsaWQpOgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXQ6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0OjpiZWdpbiBjb25zdCk6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0OjplbmQgY29uc3QpOgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldDo6T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6cmVsZWFzZVJhd1BvaW50ZXIpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6YWRvcHRSYXdQ
b2ludGVyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T2JqZWN0UHJvcGVydHlDb25kaXRpb25T
ZXQ6OmZyb21SYXdQb2ludGVyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXQ6OkRhdGE6OkRhdGEpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVQu
Y3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcp
OgorICAgICAgICAqIGppdC9KSVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6bG9hZENv
bnN0YW50KToKKyAgICAgICAgKiBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOgorICAg
ICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbToKKwogMjAyMS0xMi0xMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIFtKU0NdIFdhc20gY2F0Y2ggdGh1bmsgc2hvdWxkIGJlIEpJVCBj
b2RlIHRvIHVzZSBFeGNlcHRpb25IYW5kbGVyUHRyVGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA2Mjc1NzZkZmVhZGIyOTcy
MzhhZjVlNTM0ZGVmYzc3ZDAxNTM4YzIuLmVjYTlhNzAwYTZlOWRmN2JjN2RlYTBlYzQ2MTJjZTJi
ZTI2ODUxN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMjEtMTItMTEgIFl1c3VrZSBTdXp1a2kg
IDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBJbnRyb2R1Y2UgVHJhaWxpbmdB
cnJheQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0
MjAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpbXBsZW1lbnRzIFRyYWlsaW5nQXJyYXk8RGVyaXZlZCwgVD4sIHdoaWNoIGFsbG93
cyB1cyB0byBpbXBsZW1lbnQgY2xhc3MKKyAgICAgICAgd2l0aCB0cmFpbGluZyBhcnJheSBlYXNp
bHkuIEJ5IHVzaW5nIHRoaXMsIHdlIGltcGxlbWVudCBFbWJlZGRlZEZpeGVkVmVjdG9yIGFuZCBS
ZWZDb3VudGVkRml4ZWRWZWN0b3IuCisgICAgICAgIFBsdXMsIHdlIHJlcGxhY2UgdW5kZXJseWlu
ZyBpbXBsZW1lbnRhdGlvbiBvZiBGaXhlZFZlY3RvciBmcm9tIFJlZkNvdW50ZWRBcnJheSB0byBF
bWJlZGRlZEZpeGVkVmVjdG9yCisgICAgICAgIHNpbmNlIHJlZi1jb3VudGluZyBpcyBub3QgbmVj
ZXNzYXJ5LgorICAgICAgICBJbiBhIHN1YnNlcXVlbnQgcGF0Y2gsIHdlIHdpbGwgcmVtb3ZlIFJl
ZkNvdW50ZWRBcnJheSBhbmQgdXNlIFJlZkNvdW50ZWRGaXhlZFZlY3RvciBzaW5jZSBSZWZDb3Vu
dGVkRml4ZWRWZWN0b3IKKyAgICAgICAgaXMgZm9sbG93aW5nIG5vcm1hbCBSZWYgLyBSZWZQdHIg
cHJvdG9jb2wsIHNvIGVhc3kgdG8gdW5kZXJzdGFuZCB0aGUgc2VtYW50aWNzLgorCisgICAgICAg
ICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIHd0Zi9FbWJlZGRlZEZpeGVkVmVjdG9yLmg6IEFkZGVkLgorICAg
ICAgICAqIHd0Zi9GaXhlZFZlY3Rvci5oOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6Rml4
ZWRWZWN0b3IpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKFdURjo6Rml4ZWRWZWN0b3I6OnNpemUgY29uc3QpOgorICAgICAgICAoV1RGOjpGaXhlZFZl
Y3Rvcjo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpieXRlU2l6
ZSBjb25zdCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpkYXRhKToKKyAgICAgICAgKFdU
Rjo6Rml4ZWRWZWN0b3I6OmJlZ2luKToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OmVuZCk6
CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpyYmVnaW4pOgorICAgICAgICAoV1RGOjpGaXhl
ZFZlY3Rvcjo6cmVuZCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpyYmVnaW4gY29uc3Qp
OgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6cmVuZCBjb25zdCk6CisgICAgICAgIChXVEY6
OkZpeGVkVmVjdG9yOjphdCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjphdCBjb25zdCk6
CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpvcGVyYXRvcltdKToKKyAgICAgICAgKFdURjo6
Rml4ZWRWZWN0b3I6Om9wZXJhdG9yW10gY29uc3QpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rv
cjo6ZmlsbCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpvcGVyYXRvciE9IGNvbnN0KToK
KyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAo
V1RGOjpGaXhlZFZlY3Rvcjo6c3dhcCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpnZXRT
dG9yYWdlKToKKyAgICAgICAgKiB3dGYvUmVmQ291bnRlZEZpeGVkVmVjdG9yLmg6IEFkZGVkLgor
ICAgICAgICAqIHd0Zi9UcmFpbGluZ0FycmF5Lmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpUcmFp
bGluZ0FycmF5OjpUcmFpbGluZ0FycmF5KToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6
flRyYWlsaW5nQXJyYXkpOgorICAgICAgICAoV1RGOjpUcmFpbGluZ0FycmF5OjphbGxvY2F0aW9u
U2l6ZSk6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6OnNpemUgY29uc3QpOgorICAgICAg
ICAoV1RGOjpUcmFpbGluZ0FycmF5Ojppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdURjo6VHJh
aWxpbmdBcnJheTo6Ynl0ZVNpemUgY29uc3QpOgorICAgICAgICAoV1RGOjpUcmFpbGluZ0FycmF5
OjpkYXRhKToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6ZGF0YSBjb25zdCk6CisgICAg
ICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6OmJlZ2luKToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdB
cnJheTo6ZW5kKToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6YmVnaW4gY29uc3QpOgor
ICAgICAgICAoV1RGOjpUcmFpbGluZ0FycmF5OjplbmQgY29uc3QpOgorICAgICAgICAoV1RGOjpU
cmFpbGluZ0FycmF5OjpjYmVnaW4gY29uc3QpOgorICAgICAgICAoV1RGOjpUcmFpbGluZ0FycmF5
OjpjZW5kIGNvbnN0KToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6cmJlZ2luKToKKyAg
ICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6cmVuZCk6CisgICAgICAgIChXVEY6OlRyYWlsaW5n
QXJyYXk6OnJiZWdpbiBjb25zdCk6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6OnJlbmQg
Y29uc3QpOgorICAgICAgICAoV1RGOjpUcmFpbGluZ0FycmF5OjpjcmJlZ2luIGNvbnN0KToKKyAg
ICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6Y3JlbmQgY29uc3QpOgorICAgICAgICAoV1RGOjpU
cmFpbGluZ0FycmF5OjphdCk6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6OmF0IGNvbnN0
KToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6b3BlcmF0b3JbXSk6CisgICAgICAgIChX
VEY6OlRyYWlsaW5nQXJyYXk6Om9wZXJhdG9yW10gY29uc3QpOgorICAgICAgICAoV1RGOjpUcmFp
bGluZ0FycmF5OjpmaXJzdCk6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6OmZpcnN0IGNv
bnN0KToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6bGFzdCk6CisgICAgICAgIChXVEY6
OlRyYWlsaW5nQXJyYXk6Omxhc3QgY29uc3QpOgorICAgICAgICAoV1RGOjpUcmFpbGluZ0FycmF5
OjpmaWxsKToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6b2Zmc2V0T2ZTaXplKToKKyAg
ICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6b2Zmc2V0T2ZEYXRhKToKKwogMjAyMS0xMi0xMCAg
RXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1Nd
IEFkZCBuZXcgc2NyZWVuIGFuZCB3aW5kb3cgY2FwdHVyZSBiYWNrZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggZjI2NmJiNDBhZDA5YmI3ZjJjMThh
N2ZkNTBlZjk3ZjgzNDExOTM5YS4uOTZhMTRmOTYzZjI4OGZhNDk0OGMzOTJjY2EwZjgxZjg1ZDEz
NWE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAt
NTU3LDcgKzU1Nyw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHZv
aWQqIGJhc2VsaW5lSklUQ29uc3RhbnRQb29sKCkKICAgICB7CiAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKG1faml0RGF0YSAmJiBqaXRUeXBlKCkgPT0gSklUVHlwZTo6QmFzZWxpbmVKSVQpOwotICAg
ICAgICByZXR1cm4gbV9qaXREYXRhLT5tX2ppdENvbnN0YW50UG9vbC5kYXRhKCk7CisgICAgICAg
IHJldHVybiBtX2ppdERhdGEtPm1faml0Q29uc3RhbnRQb29sLmdldFN0b3JhZ2UoKTsKICAgICB9
CiAjZW5kaWYKICAgICBzaXplX3QgbnVtYmVyT2ZVbmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMoKSBj
b25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+bnVtYmVyT2ZVbmxpbmtlZFN3aXRjaEp1bXBU
YWJsZXMoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHAKaW5kZXggZDA0NDA1ZDlkNDJmZDFm
NDhjNGI4OWQ1ZjM2ODI2MzYxYWZkZGZiZC4uMWM2ZjU4NThjYWU5ZWY1NDg5ZTE4ZGZkY2E5Yzli
YzUwMTI0ZDY2MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3BwCkBAIC0xMDUsNyArMTA1LDcg
QEAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6
Om1lcmdlZFdpdGgoCiAgICAgVmVjdG9yPE9iamVjdFByb3BlcnR5Q29uZGl0aW9uPiByZXN1bHQ7
CiAgICAgCiAgICAgaWYgKCFpc0VtcHR5KCkpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQobV9kYXRh
LT5tX3ZlY3Rvci5iZWdpbigpLCBtX2RhdGEtPm1fdmVjdG9yLnNpemUoKSk7CisgICAgICAgIHJl
c3VsdC5hcHBlbmQobV9kYXRhLT5iZWdpbigpLCBtX2RhdGEtPnNpemUoKSk7CiAgICAgCiAgICAg
Zm9yIChjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiYgbmV3Q29uZGl0aW9uIDogb3RoZXIp
IHsKICAgICAgICAgYm9vbCBmb3VuZE1hdGNoID0gZmFsc2U7CkBAIC0xNzUsNyArMTc1LDcgQEAg
dm9pZCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6ZHVtcEluQ29udGV4dChQcmludFN0cmVh
bSYgb3V0LCBEdW1wQ29udGV4dCogY28KICAgICAKICAgICBvdXQucHJpbnQoIlsiKTsKICAgICBp
ZiAobV9kYXRhKQotICAgICAgICBvdXQucHJpbnQobGlzdER1bXBJbkNvbnRleHQobV9kYXRhLT5t
X3ZlY3RvciwgY29udGV4dCkpOworICAgICAgICBvdXQucHJpbnQobGlzdER1bXBJbkNvbnRleHQo
Km1fZGF0YSwgY29udGV4dCkpOwogICAgIG91dC5wcmludCgiXSIpOwogfQogCkBAIC0xODksNyAr
MTg5LDcgQEAgYm9vbCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6aXNWYWxpZEFuZFdhdGNo
YWJsZSgpIGNvbnN0CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGZvciAoYXV0byYgY29uZGl0aW9uIDogbV9kYXRhLT5tX3ZlY3RvcikgeworICAgIGZv
ciAoYXV0byYgY29uZGl0aW9uIDogKm1fZGF0YSkgewogICAgICAgICBpZiAoIWNvbmRpdGlvbi5p
c1dhdGNoYWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0LmgKaW5kZXggYmU3M2ZkYjVlNWE3YTlmZjFiNzUyNzIwMjUyOTNjYjYyYTU4NDRm
ZS4uOGY1ZWY4Y2M2MWE3MmE4MTllZmQ5MjgzNTdiYTgzODY0YWVhNjlhMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0LmgKQEAgLTI3LDggKzI3LDggQEAKIAogI2luY2x1ZGUgIk9iamVjdFByb3BlcnR5
Q29uZGl0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYv
Rml4ZWRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWRGaXhlZFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CkBAIC00MywxMiArNDMsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIE9i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IHsKIHB1YmxpYzoKLSAgICBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldCgpIHsgfQorICAgIHVzaW5nIENvbmRpdGlvbnMgPSBUaHJlYWRTYWZlUmVmQ291
bnRlZEZpeGVkVmVjdG9yPE9iamVjdFByb3BlcnR5Q29uZGl0aW9uPjsKKworICAgIE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0KCkgPSBkZWZhdWx0OwogICAgIAogICAgIHN0YXRpYyBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldCBpbnZhbGlkKCkKICAgICB7CiAgICAgICAgIE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uU2V0IHJlc3VsdDsKLSAgICAgICAgcmVzdWx0Lm1fZGF0YSA9IGFkb3B0UmVm
KG5ldyBEYXRhKCkpOworICAgICAgICByZXN1bHQubV9kYXRhID0gQ29uZGl0aW9uczo6Y3JlYXRl
KDApOworICAgICAgICBBU1NFUlQocmVzdWx0Lm1fZGF0YSk7CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogICAgIApAQCAtNTgsMTkgKzYxLDE5IEBAIGNsYXNzIE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0IHsKICAgICAgICAgICAgIHJldHVybiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldCgpOwogICAgICAgICAKICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgcmVz
dWx0OwotICAgICAgICByZXN1bHQubV9kYXRhID0gYWRvcHRSZWYobmV3IERhdGEoKSk7Ci0gICAg
ICAgIHJlc3VsdC5tX2RhdGEtPm1fdmVjdG9yID0gRml4ZWRWZWN0b3I8T2JqZWN0UHJvcGVydHlD
b25kaXRpb24+KFdURk1vdmUodmVjdG9yKSk7CisgICAgICAgIEFTU0VSVCghdmVjdG9yLmlzRW1w
dHkoKSk7CisgICAgICAgIHJlc3VsdC5tX2RhdGEgPSBDb25kaXRpb25zOjpjcmVhdGVGcm9tVmVj
dG9yKFdURk1vdmUodmVjdG9yKSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAg
IAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gIW1fZGF0
YSB8fCAhbV9kYXRhLT5tX3ZlY3Rvci5pc0VtcHR5KCk7CisgICAgICAgIHJldHVybiAhbV9kYXRh
IHx8ICFtX2RhdGEtPmlzRW1wdHkoKTsKICAgICB9CiAKICAgICBib29sIGlzVmFsaWRBbmRXYXRj
aGFibGUoKSBjb25zdDsKIAotICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
ID8gbV9kYXRhLT5tX3ZlY3Rvci5zaXplKCkgOiAwOyB9CisgICAgc2l6ZV90IHNpemUoKSBjb25z
dCB7IHJldHVybiBtX2RhdGEgPyBtX2RhdGEtPnNpemUoKSA6IDA7IH0KICAgICBib29sIGlzRW1w
dHkoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICFtX2RhdGE7CkBAIC04MiwxMyArODUs
MTMgQEAgY2xhc3MgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgewogICAgIHsKICAgICAgICAg
aWYgKCFtX2RhdGEpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJu
IG1fZGF0YS0+bV92ZWN0b3IuYmVnaW4oKTsKKyAgICAgICAgcmV0dXJuIG1fZGF0YS0+YmVnaW4o
KTsKICAgICB9CiAgICAgaXRlcmF0b3IgZW5kKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICgh
bV9kYXRhKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBtX2Rh
dGEtPm1fdmVjdG9yLmVuZCgpOworICAgICAgICByZXR1cm4gbV9kYXRhLT5lbmQoKTsKICAgICB9
CiAKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKQEAgLTE1MSwyNCArMTU0LDYgQEAgY2xhc3Mg
T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgewogICAgIAogICAgIHZvaWQgZHVtcEluQ29udGV4
dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0KikgY29uc3Q7CiAgICAgdm9pZCBkdW1wKFByaW50
U3RyZWFtJikgY29uc3Q7Ci0gICAgCi0gICAgLy8gSGVscGVycyBmb3IgdXNpbmcgdGhpcyBpbiBh
IHVuaW9uLgotICAgIHZvaWQqIHJlbGVhc2VSYXdQb2ludGVyKCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDx2b2lkKj4obV9kYXRhLmxlYWtSZWYoKSk7Ci0gICAgfQotICAgIHN0
YXRpYyBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBhZG9wdFJhd1BvaW50ZXIodm9pZCogcmF3
UG9pbnRlcikKLSAgICB7Ci0gICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IHJlc3Vs
dDsKLSAgICAgICAgcmVzdWx0Lm1fZGF0YSA9IGFkb3B0UmVmKHN0YXRpY19jYXN0PERhdGEqPihy
YXdQb2ludGVyKSk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAgIHN0YXRpYyBP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBmcm9tUmF3UG9pbnRlcih2b2lkKiByYXdQb2ludGVy
KQotICAgIHsKLSAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgcmVzdWx0OwotICAg
ICAgICByZXN1bHQubV9kYXRhID0gc3RhdGljX2Nhc3Q8RGF0YSo+KHJhd1BvaW50ZXIpOwotICAg
ICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KIAogICAgIC8vIEZJWE1FOiBFdmVyeXRoaW5nIGJl
bG93IGhlcmUgc2hvdWxkIGJlIHByaXZhdGUsIGJ1dCBjYW5ub3QgYmUgYmVjYXVzZSBvZiBhIGJ1
ZyBpbiBWUy4KICAgICAKQEAgLTE3NywxOSArMTYyLDkgQEAgY2xhc3MgT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXQgewogICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGJlIG1hZGUgbW9yZSBjb21w
YWN0IGJ5IGhhdmluZyBpdCBpbnRlcm5hbGx5IHVzZSBhIHZlY3RvciB0aGF0IGp1c3QgaGFzCiAg
ICAgLy8gdGhlIG5vbi11aWQgcG9ydGlvbiBvZiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiwgYW5k
IHRoZW4gcmVxdWlyaW5nIHRoYXQgdGhlIGNhbGxlcnMgb2YgYWxsCiAgICAgLy8gb2YgdGhlIEFQ
SXMgc3VwcGx5IHRoZSB1aWQuCi0gICAgCi0gICAgY2xhc3MgRGF0YSA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxEYXRhPiB7Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERhdGEp
OwotICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICAgICAgCi0gICAgcHVibGlj
OgotICAgICAgICBEYXRhKCkgeyB9Ci0gICAgICAgIAotICAgICAgICBGaXhlZFZlY3RvcjxPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbj4gbV92ZWN0b3I7Ci0gICAgfTsKLSAgICAKKwogcHJpdmF0ZToK
LSAgICBSZWZQdHI8RGF0YT4gbV9kYXRhOworICAgIFJlZlB0cjxDb25kaXRpb25zPiBtX2RhdGE7
CiB9OwogCiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBnZW5lcmF0ZUNvbmRpdGlvbkZvclNlbGZF
cXVpdmFsZW5jZSgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBmNTdhNmUxMzQ1MDU4
ZmRiZTg0MjM4ZjIyNzM3NjU3ZDA2Mzk5YTBiLi5jNTE1YzM5NTQyMWMzYWYyZDgyOTBhM2FhZWM2
MzUzMjkxZDQxZjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC03OTksNyArNzk5
LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcoSklUQ29tcGls
YXRpb25FZmZvcnQgZWZmb3J0KQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgICAgICBpbnQgb2Zmc2V0ID0gQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGlu
Z1RoaXMoYXJndW1lbnQpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKTsKICAg
ICAgICAgICAgICAgICBsb2FkVmFsdWUoQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3Rlciwgb2Zmc2V0
KSwganNSZWdUMTApOwotICAgICAgICAgICAgICAgIHN0b3JlVmFsdWUoanNSZWdUMTAsIEFkZHJl
c3MocmVnVDIsIGFyZ3VtZW50ICogc2l6ZW9mKFZhbHVlUHJvZmlsZSkgKyBWYWx1ZVByb2ZpbGU6
Om9mZnNldE9mRmlyc3RCdWNrZXQoKSkpOworICAgICAgICAgICAgICAgIHN0b3JlVmFsdWUoanNS
ZWdUMTAsIEFkZHJlc3MocmVnVDIsIEZpeGVkVmVjdG9yPFZhbHVlUHJvZmlsZT46OlN0b3JhZ2U6
Om9mZnNldE9mRGF0YSgpICsgYXJndW1lbnQgKiBzaXplb2YoVmFsdWVQcm9maWxlKSArIFZhbHVl
UHJvZmlsZTo6b2Zmc2V0T2ZGaXJzdEJ1Y2tldCgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IDE3ZjQ2
ZjdhMmQ4OTQ0MzhjM2I5YTBkZTY1YzZmMzFiODZjNjQ0MWMuLjU4NjQxMmJjNDdlZTZiYjc0MGVm
MTUyMDg0ZWYyY2EyMWE2YjE1OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
cy5oCkBAIC01MDUsNyArNTA1LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6bWF0ZXJpYWxp
emVQb2ludGVySW50b01ldGFkYXRhKGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSwKIAogQUxXQVlT
X0lOTElORSB2b2lkIEpJVDo6bG9hZENvbnN0YW50KEpJVENvbnN0YW50UG9vbDo6Q29uc3RhbnQg
Y29uc3RhbnRJbmRleCwgR1BSUmVnIHJlc3VsdCkKIHsKLSAgICBsb2FkUHRyKEFkZHJlc3Moc19j
b25zdGFudHNHUFIsIHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oY29uc3RhbnRJbmRleCkgKiBzaXpl
b2Yodm9pZCopKSwgcmVzdWx0KTsKKyAgICBsb2FkUHRyKEFkZHJlc3Moc19jb25zdGFudHNHUFIs
IEZpeGVkVmVjdG9yPHZvaWQqPjo6U3RvcmFnZTo6b2Zmc2V0T2ZEYXRhKCkgKyBzdGF0aWNfY2Fz
dDx1aW50cHRyX3Q+KGNvbnN0YW50SW5kZXgpICogc2l6ZW9mKHZvaWQqKSksIHJlc3VsdCk7CiB9
CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmxvYWRHbG9iYWxPYmplY3QoR1BSUmVnIHJlc3Vs
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNF
eHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4
dHJhY3Rvci5jcHAKaW5kZXggYjJjYWExODU0MTMwZmY4YjkzMTgwNzZkMjdkZmViZGQyMTMzODQ0
MS4uMzk3YjA1ZDg2YTA3MTJhN2EzOGNhMDIxZDIzMmNiMmQ5ZGI1MWI5MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAK
QEAgLTg3LDggKzg3LDEzIEBAIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvciB7CiAgICAgLy8g
VGhlc2UgdHlwZXMgYXJlIHVzZWZ1bCBzaW5jZSB3ZSBjYW4ndCB1c2UgJzwuLi4+JyBzeW50YXgg
aW4gTExJbnQgb2Zmc2V0cyBleHRyYWN0aW9uLiBlLmcuIFZlY3RvcjxpbnQ+OjptX2RhdGEKICAg
ICB1c2luZyBWZWN0b3IgPSBXVEY6OlZlY3RvcjxpbnQ+OwogICAgIHVzaW5nIEpTSW50ZXJuYWxG
aWVsZE9iamVjdEltcGwgPSBKU0M6OkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8PjsKLSAgICB1
c2luZyBGaXhlZFZlY3RvciA9IFdURjo6Rml4ZWRWZWN0b3I8aW50PjsKLSAgICB1c2luZyBSZWZD
b3VudGVkQXJyYXkgPSBXVEY6OlJlZkNvdW50ZWRBcnJheTxpbnQ+OworICAgIHVzaW5nIFZhbHVl
UHJvZmlsZUZpeGVkVmVjdG9yID0gV1RGOjpGaXhlZFZlY3RvcjxWYWx1ZVByb2ZpbGU+OworICAg
IHVzaW5nIEJpbmFyeUFyaXRoUHJvZmlsZUZpeGVkVmVjdG9yID0gRml4ZWRWZWN0b3I8QmluYXJ5
QXJpdGhQcm9maWxlPjsKKyAgICB1c2luZyBVbmFyeUFyaXRoUHJvZmlsZUZpeGVkVmVjdG9yID0g
Rml4ZWRWZWN0b3I8VW5hcnlBcml0aFByb2ZpbGU+OworICAgIHVzaW5nIFVubGlua2VkU2ltcGxl
SnVtcFRhYmxlRml4ZWRWZWN0b3IgPSBGaXhlZFZlY3RvcjxVbmxpbmtlZFNpbXBsZUp1bXBUYWJs
ZT47CisgICAgdXNpbmcgVW5saW5rZWRTdHJpbmdKdW1wVGFibGVGaXhlZFZlY3RvciA9IEZpeGVk
VmVjdG9yPFVubGlua2VkU3RyaW5nSnVtcFRhYmxlPjsKKyAgICB1c2luZyBJbnQzMkZpeGVkVmVj
dG9yID0gRml4ZWRWZWN0b3I8aW50MzJfdD47CisgICAgdXNpbmcgVm9pZFBvaW50ZXJGaXhlZFZl
Y3RvciA9IEZpeGVkVmVjdG9yPHZvaWQqPjsKIAogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBp
bnQ2NF90KiBkdW1teSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGQyMTM5NmU5OGZhMGJjNDg5Yjg5Nzk2ODc3YzYy
NGZlOTZjMmUwNmIuLjEyMTBkYzFjMDlhNGY1NDU0NjIxOGZkNjZhZWZlYjA4OGU0YTAwZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20KQEAgLTYyMyw4ICs2MjMsNiBAQCBjb25zdCBCbGFja1RocmVzaG9sZCA9IGNvbnN0ZXhw
ciBibGFja1RocmVzaG9sZAogY29uc3QgVmVjdG9yQnVmZmVyT2Zmc2V0ID0gVmVjdG9yOjptX2J1
ZmZlcgogY29uc3QgVmVjdG9yU2l6ZU9mZnNldCA9IFZlY3Rvcjo6bV9zaXplCiAKLWNvbnN0IFJl
ZkNvdW50ZWRBcnJheVN0b3JhZ2VOb25OdWxsU2l6ZU9mZnNldCA9IC0oY29uc3RleHByIChSZWZD
b3VudGVkQXJyYXk6OkhlYWRlcjo6c2l6ZSgpKSkgKyBSZWZDb3VudGVkQXJyYXk6OkhlYWRlcjo6
bGVuZ3RoCi0KICMgU29tZSBjb21tb24gdXRpbGl0aWVzLgogbWFjcm8gY3Jhc2goKQogICAgIGlm
IENfTE9PUCBvciBDX0xPT1BfV0lOCkBAIC0xNjc3LDEwICsxNjc1LDExIEBAIG1hY3JvIGZ1bmN0
aW9uSW5pdGlhbGl6YXRpb24ocHJvZmlsZUFyZ1NraXApCiAgICAgYWRkcCAtcHJvZmlsZUFyZ1Nr
aXAsIHQwCiAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnBndGVxIHQwLCAwLCBvayBlbmQpCiAgICAg
YnRweiB0MCwgLmFyZ3VtZW50UHJvZmlsZURvbmUKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fYXJn
dW1lbnRWYWx1ZVByb2ZpbGVzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRB
cnJheTo6bV9kYXRhW3QxXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fYXJndW1lbnRWYWx1
ZVByb2ZpbGVzICsgVmFsdWVQcm9maWxlRml4ZWRWZWN0b3I6Om1fc3RvcmFnZVt0MV0sIHQzCiAg
ICAgYnRweiB0MywgLmFyZ3VtZW50UHJvZmlsZURvbmUgIyBXaGVuIHdlIGNhbid0IEpJVCwgd2Ug
ZG9uJ3QgYWxsb2NhdGUgYW55IGFyZ3VtZW50IHZhbHVlIHByb2ZpbGVzLgogICAgIG11bHAgc2l6
ZW9mIFZhbHVlUHJvZmlsZSwgdDAsIHQyICMgQWFhYWFoaGhoISBOZWVkIHN0cmVuZ3RoIHJlZHVj
dGlvbiEKICAgICBsc2hpZnRwIDMsIHQwICMgb2Zmc2V0IG9mIGxhc3QgSlNWYWx1ZSBhcmd1bWVu
dHMgb24gdGhlIHN0YWNrLgorICAgIGFkZHAgKGNvbnN0ZXhwciAoVmFsdWVQcm9maWxlRml4ZWRW
ZWN0b3I6OlN0b3JhZ2U6Om9mZnNldE9mRGF0YSgpKSksIHQzCiAgICAgYWRkcCB0MiwgdDMgIyBw
b2ludGVyIHRvIGVuZCBvZiBWYWx1ZVByb2ZpbGUgYXJyYXkgaW4gdGhlIHZhbHVlIHByb2ZpbGUg
YXJyYXkuCiAuYXJndW1lbnRQcm9maWxlTG9vcDoKICAgICBpZiBKU1ZBTFVFNjQKQEAgLTI2MTAs
NyArMjYwOSw3IEBAIGlmIEpJVAogICAgICAgICAjIEJhc2VsaW5lIHVzZXMgTExJbnQncyBQQiBy
ZWdpc3RlciBmb3IgaXRzIEpJVCBjb25zdGFudCBwb29sLgogICAgICAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgUEIKICAgICAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2ppdERhdGFbUEJdLCBQQgot
ICAgICAgICBsb2FkcCBDb2RlQmxvY2s6OkpJVERhdGE6Om1faml0Q29uc3RhbnRQb29sW1BCXSwg
UEIKKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrOjpKSVREYXRhOjptX2ppdENvbnN0YW50UG9vbCAr
IFZvaWRQb2ludGVyRml4ZWRWZWN0b3I6Om1fc3RvcmFnZVtQQl0sIFBCCiAgICAgZW5kCiAKICAg
ICBtYWNybyBzZXR1cFJldHVyblRvQmFzZWxpbmVBZnRlckNoZWNrcG9pbnRFeGl0SWZOZWVkZWQo
KQpAQCAtMjcyNSwxNiArMjcyNCwxNiBAQCBtYWNybyB1cGRhdGVVbmFyeUFyaXRoUHJvZmlsZShz
aXplLCBvcGNvZGVTdHJ1Y3QsIHR5cGUsIHNjcmF0Y2gxLCBzY3JhdGNoMikKICAgICBnZXR1KHNp
emUsIG9wY29kZVN0cnVjdCwgbV9wcm9maWxlSW5kZXgsIHNjcmF0Y2gxKQogICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCBzY3JhdGNoMgogICAgIGxvYWRwIENvZGVCbG9jazo6bV91bmxpbmtlZENv
ZGVbc2NyYXRjaDJdLCBzY3JhdGNoMgotICAgIGxvYWRwIFVubGlua2VkQ29kZUJsb2NrOjptX3Vu
YXJ5QXJpdGhQcm9maWxlcyArIEZpeGVkVmVjdG9yOjptX3N0b3JhZ2UgKyBSZWZDb3VudGVkQXJy
YXk6Om1fZGF0YVtzY3JhdGNoMl0sIHNjcmF0Y2gyCi0gICAgb3JoIHR5cGUsIFVuYXJ5QXJpdGhQ
cm9maWxlOjptX2JpdHNbc2NyYXRjaDIsIHNjcmF0Y2gxLCAyXQorICAgIGxvYWRwIFVubGlua2Vk
Q29kZUJsb2NrOjptX3VuYXJ5QXJpdGhQcm9maWxlcyArIFVuYXJ5QXJpdGhQcm9maWxlRml4ZWRW
ZWN0b3I6Om1fc3RvcmFnZVtzY3JhdGNoMl0sIHNjcmF0Y2gyCisgICAgb3JoIHR5cGUsIChjb25z
dGV4cHIgKFVuYXJ5QXJpdGhQcm9maWxlRml4ZWRWZWN0b3I6OlN0b3JhZ2U6Om9mZnNldE9mRGF0
YSgpKSkgKyBVbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3NjcmF0Y2gyLCBzY3JhdGNoMSwgMl0K
IGVuZAogCiBtYWNybyB1cGRhdGVCaW5hcnlBcml0aFByb2ZpbGUoc2l6ZSwgb3Bjb2RlU3RydWN0
LCB0eXBlLCBzY3JhdGNoMSwgc2NyYXRjaDIpCiAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3Qs
IG1fcHJvZmlsZUluZGV4LCBzY3JhdGNoMSkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgc2Ny
YXRjaDIKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fdW5saW5rZWRDb2RlW3NjcmF0Y2gyXSwgc2Ny
YXRjaDIKLSAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6bV9iaW5hcnlBcml0aFByb2ZpbGVz
ICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3NjcmF0
Y2gyXSwgc2NyYXRjaDIKLSAgICBvcmggdHlwZSwgQmluYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNb
c2NyYXRjaDIsIHNjcmF0Y2gxLCAyXQorICAgIGxvYWRwIFVubGlua2VkQ29kZUJsb2NrOjptX2Jp
bmFyeUFyaXRoUHJvZmlsZXMgKyBCaW5hcnlBcml0aFByb2ZpbGVGaXhlZFZlY3Rvcjo6bV9zdG9y
YWdlW3NjcmF0Y2gyXSwgc2NyYXRjaDIKKyAgICBvcmggdHlwZSwgKGNvbnN0ZXhwciAoQmluYXJ5
QXJpdGhQcm9maWxlRml4ZWRWZWN0b3I6OlN0b3JhZ2U6Om9mZnNldE9mRGF0YSgpKSkgKyBCaW5h
cnlBcml0aFByb2ZpbGU6Om1fYml0c1tzY3JhdGNoMiwgc2NyYXRjaDEsIDJdCiBlbmQKIAogLy8g
RklYTUU6IFdlIHNob3VsZCBub3QgbmVlZCB0aGUgWDg2XzY0X1dJTiBjb25kaXRpb24gaGVyZSwg
c2luY2UgV0VCQVNTRU1CTFkgc2hvdWxkIGFscmVhZHkgYmUgZmFsc2Ugb24gV2luZG93cwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIz
Ml82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbQppbmRleCBjZjFlYTIxNDI0MmI0YmY0ZWE1MTViOGZhYzQ1NTE2ZGUwN2JmZjg3
Li42MDU1MDFhZTA5MjQzNDgxMzgwNTdhZGMxZmE1NDQyYTc4MmRiYzA3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbQpAQCAtMjA5OSwxNCArMjA5OSwxNSBAQCBsbGludE9wV2l0aEp1bXAob3Bfc3dpdGNoX2lt
bSwgT3BTd2l0Y2hJbW0sIG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRpc3BhdGNoKQogICAgIGxv
YWRwIENvZGVCbG9jazo6bV91bmxpbmtlZENvZGVbdDJdLCB0MgogICAgIGxvYWRwIFVubGlua2Vk
Q29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKICAgICBtdWxpIHNpemVvZiBVbmxpbmtlZFNp
bXBsZUp1bXBUYWJsZSwgdDMKLSAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6UmFyZURhdGE6
Om1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJl
ZkNvdW50ZWRBcnJheTo6bV9kYXRhW3QyXSwgdDIKKyAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9j
azo6UmFyZURhdGE6Om1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzICsgVW5saW5rZWRTaW1wbGVK
dW1wVGFibGVGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlW3QyXSwgdDIKKyAgICBhZGRwIChjb25zdGV4
cHIgKFVubGlua2VkU2ltcGxlSnVtcFRhYmxlRml4ZWRWZWN0b3I6OlN0b3JhZ2U6Om9mZnNldE9m
RGF0YSgpKSksIHQyCiAgICAgYWRkcCB0MywgdDIKICAgICBiaW5lcSB0MSwgSW50MzJUYWcsIC5v
cFN3aXRjaEltbU5vdEludAogICAgIHN1YmkgVW5saW5rZWRTaW1wbGVKdW1wVGFibGU6Om1fbWlu
W3QyXSwgdDAKLSAgICBsb2FkcCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZTo6bV9icmFuY2hPZmZz
ZXRzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3Qy
XSwgdDIKKyAgICBsb2FkcCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZTo6bV9icmFuY2hPZmZzZXRz
ICsgSW50MzJGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlW3QyXSwgdDIKICAgICBidHB6IHQyLCAub3BT
d2l0Y2hJbW1GYWxsVGhyb3VnaAotICAgIGJpYWVxIHQwLCBSZWZDb3VudGVkQXJyYXlTdG9yYWdl
Tm9uTnVsbFNpemVPZmZzZXRbdDJdLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAotICAgIGxvYWRp
IFt0MiwgdDAsIDRdLCB0MQorICAgIGJpYWVxIHQwLCBJbnQzMkZpeGVkVmVjdG9yOjpTdG9yYWdl
OjptX3NpemVbdDJdLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAorICAgIGxvYWRpIChjb25zdGV4
cHIgKEludDMyRml4ZWRWZWN0b3I6OlN0b3JhZ2U6Om9mZnNldE9mRGF0YSgpKSlbdDIsIHQwLCA0
XSwgdDEKICAgICBidGl6IHQxLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAogICAgIGRpc3BhdGNo
SW5kaXJlY3QodDEpCiAKQEAgLTIxMjksNyArMjEzMCw4IEBAIGxsaW50T3BXaXRoSnVtcChvcF9z
d2l0Y2hfY2hhciwgT3BTd2l0Y2hDaGFyLCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRj
aCkKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fdW5saW5rZWRDb2RlW3QyXSwgdDIKICAgICBsb2Fk
cCBVbmxpbmtlZENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCiAgICAgbXVsaSBzaXplb2Yg
VW5saW5rZWRTaW1wbGVKdW1wVGFibGUsIHQzCi0gICAgbG9hZHAgVW5saW5rZWRDb2RlQmxvY2s6
OlJhcmVEYXRhOjptX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlcyArIEZpeGVkVmVjdG9yOjptX3N0
b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0Ml0sIHQyCisgICAgbG9hZHAgVW5saW5r
ZWRDb2RlQmxvY2s6OlJhcmVEYXRhOjptX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlcyArIFVubGlu
a2VkU2ltcGxlSnVtcFRhYmxlRml4ZWRWZWN0b3I6Om1fc3RvcmFnZVt0Ml0sIHQyCisgICAgYWRk
cCAoY29uc3RleHByIChVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZUZpeGVkVmVjdG9yOjpTdG9yYWdl
OjpvZmZzZXRPZkRhdGEoKSkpLCB0MgogICAgIGFkZHAgdDMsIHQyCiAgICAgYmluZXEgdDEsIENl
bGxUYWcsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAogICAgIGJibmVxIEpTQ2VsbDo6bV90eXBl
W3QwXSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCkBAIC0yMTQ0LDEwICsy
MTQ2LDEwIEBAIGxsaW50T3BXaXRoSnVtcChvcF9zd2l0Y2hfY2hhciwgT3BTd2l0Y2hDaGFyLCBt
YWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKICAgICBsb2FkYiBbdDBdLCB0MAogLm9w
U3dpdGNoQ2hhclJlYWR5OgogICAgIHN1YmkgVW5saW5rZWRTaW1wbGVKdW1wVGFibGU6Om1fbWlu
W3QyXSwgdDAKLSAgICBsb2FkcCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZTo6bV9icmFuY2hPZmZz
ZXRzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3Qy
XSwgdDIKKyAgICBsb2FkcCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZTo6bV9icmFuY2hPZmZzZXRz
ICsgSW50MzJGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlW3QyXSwgdDIKICAgICBidHB6IHQyLCAub3BT
d2l0Y2hDaGFyRmFsbFRocm91Z2gKLSAgICBiaWFlcSB0MCwgUmVmQ291bnRlZEFycmF5U3RvcmFn
ZU5vbk51bGxTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCi0gICAgbG9h
ZGkgW3QyLCB0MCwgNF0sIHQxCisgICAgYmlhZXEgdDAsIEludDMyRml4ZWRWZWN0b3I6OlN0b3Jh
Z2U6Om1fc2l6ZVt0Ml0sIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRpIChjb25z
dGV4cHIgKEludDMyRml4ZWRWZWN0b3I6OlN0b3JhZ2U6Om9mZnNldE9mRGF0YSgpKSlbdDIsIHQw
LCA0XSwgdDEKICAgICBidGl6IHQxLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKICAgICBkaXNw
YXRjaEluZGlyZWN0KHQxKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGEyM2RlNjBlMGVkODg0NzZlNTUxOGMx
NWVhMDM5NDYxMDRjYzkxN2UuLjcxZWNhMTBhNzY2MDBjMzkxOGYzNjM0YjRlYWNlZjcwOGEzYTk0
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtCkBAIC0yMjkyLDE0ICsyMjkyLDE1IEBAIGxsaW50T3BXaXRoSnVtcChv
cF9zd2l0Y2hfaW1tLCBPcFN3aXRjaEltbSwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0
Y2gpCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX3VubGlua2VkQ29kZVt0Ml0sIHQyCiAgICAgbG9h
ZHAgVW5saW5rZWRDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0MgogICAgIG11bGkgc2l6ZW9m
IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlLCB0MwotICAgIGxvYWRwIFVubGlua2VkQ29kZUJsb2Nr
OjpSYXJlRGF0YTo6bV91bmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMgKyBGaXhlZFZlY3Rvcjo6bV9z
dG9yYWdlICsgUmVmQ291bnRlZEFycmF5OjptX2RhdGFbdDJdLCB0MgorICAgIGxvYWRwIFVubGlu
a2VkQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV91bmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMgKyBVbmxp
bmtlZFNpbXBsZUp1bXBUYWJsZUZpeGVkVmVjdG9yOjptX3N0b3JhZ2VbdDJdLCB0MgorICAgIGFk
ZHAgKGNvbnN0ZXhwciAoVW5saW5rZWRTaW1wbGVKdW1wVGFibGVGaXhlZFZlY3Rvcjo6U3RvcmFn
ZTo6b2Zmc2V0T2ZEYXRhKCkpKSwgdDIKICAgICBhZGRwIHQzLCB0MgogICAgIGJxYiB0MSwgbnVt
YmVyVGFnLCAub3BTd2l0Y2hJbW1Ob3RJbnQKICAgICBzdWJpIFVubGlua2VkU2ltcGxlSnVtcFRh
YmxlOjptX21pblt0Ml0sIHQxCi0gICAgbG9hZHAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGU6Om1f
YnJhbmNoT2Zmc2V0cyArIEZpeGVkVmVjdG9yOjptX3N0b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6
Om1fZGF0YVt0Ml0sIHQyCisgICAgbG9hZHAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGU6Om1fYnJh
bmNoT2Zmc2V0cyArIEludDMyRml4ZWRWZWN0b3I6Om1fc3RvcmFnZVt0Ml0sIHQyCiAgICAgYnRw
eiB0MiwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKLSAgICBiaWFlcSB0MSwgUmVmQ291bnRlZEFy
cmF5U3RvcmFnZU5vbk51bGxTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gK
LSAgICBsb2FkaXMgW3QyLCB0MSwgNF0sIHQxCisgICAgYmlhZXEgdDEsIEludDMyRml4ZWRWZWN0
b3I6OlN0b3JhZ2U6Om1fc2l6ZVt0Ml0sIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCisgICAgbG9h
ZGlzIChjb25zdGV4cHIgKEludDMyRml4ZWRWZWN0b3I6OlN0b3JhZ2U6Om9mZnNldE9mRGF0YSgp
KSlbdDIsIHQxLCA0XSwgdDEKICAgICBidGl6IHQxLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAog
ICAgIGRpc3BhdGNoSW5kaXJlY3QodDEpCiAKQEAgLTIzMjIsNyArMjMyMyw4IEBAIGxsaW50T3BX
aXRoSnVtcChvcF9zd2l0Y2hfY2hhciwgT3BTd2l0Y2hDaGFyLCBtYWNybyAoc2l6ZSwgZ2V0LCBq
dW1wLCBkaXNwYXRjaCkKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fdW5saW5rZWRDb2RlW3QyXSwg
dDIKICAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCiAgICAg
bXVsaSBzaXplb2YgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUsIHQzCi0gICAgbG9hZHAgVW5saW5r
ZWRDb2RlQmxvY2s6OlJhcmVEYXRhOjptX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlcyArIEZpeGVk
VmVjdG9yOjptX3N0b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0Ml0sIHQyCisgICAg
bG9hZHAgVW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhOjptX3VubGlua2VkU3dpdGNoSnVtcFRh
YmxlcyArIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlRml4ZWRWZWN0b3I6Om1fc3RvcmFnZVt0Ml0s
IHQyCisgICAgYWRkcCAoY29uc3RleHByIChVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZUZpeGVkVmVj
dG9yOjpTdG9yYWdlOjpvZmZzZXRPZkRhdGEoKSkpLCB0MgogICAgIGFkZHAgdDMsIHQyCiAgICAg
YnRxbnogdDEsIG5vdENlbGxNYXNrLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKICAgICBiYm5l
cSBKU0NlbGw6Om1fdHlwZVt0MV0sIFN0cmluZ1R5cGUsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3Vn
aApAQCAtMjMzNywxMCArMjMzOSwxMCBAQCBsbGludE9wV2l0aEp1bXAob3Bfc3dpdGNoX2NoYXIs
IE9wU3dpdGNoQ2hhciwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCiAgICAgbG9h
ZGIgW3QxXSwgdDAKIC5vcFN3aXRjaENoYXJSZWFkeToKICAgICBzdWJpIFVubGlua2VkU2ltcGxl
SnVtcFRhYmxlOjptX21pblt0Ml0sIHQwCi0gICAgbG9hZHAgVW5saW5rZWRTaW1wbGVKdW1wVGFi
bGU6Om1fYnJhbmNoT2Zmc2V0cyArIEZpeGVkVmVjdG9yOjptX3N0b3JhZ2UgKyBSZWZDb3VudGVk
QXJyYXk6Om1fZGF0YVt0Ml0sIHQyCisgICAgbG9hZHAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGU6
Om1fYnJhbmNoT2Zmc2V0cyArIEludDMyRml4ZWRWZWN0b3I6Om1fc3RvcmFnZVt0Ml0sIHQyCiAg
ICAgYnRweiB0MiwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCi0gICAgYmlhZXEgdDAsIFJlZkNv
dW50ZWRBcnJheVN0b3JhZ2VOb25OdWxsU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaENoYXJGYWxs
VGhyb3VnaAotICAgIGxvYWRpcyBbdDIsIHQwLCA0XSwgdDEKKyAgICBiaWFlcSB0MCwgSW50MzJG
aXhlZFZlY3Rvcjo6U3RvcmFnZTo6bV9zaXplW3QyXSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdo
CisgICAgbG9hZGlzIChjb25zdGV4cHIgKEludDMyRml4ZWRWZWN0b3I6OlN0b3JhZ2U6Om9mZnNl
dE9mRGF0YSgpKSlbdDIsIHQwLCA0XSwgdDEKICAgICBidGl6IHQxLCAub3BTd2l0Y2hDaGFyRmFs
bFRocm91Z2gKICAgICBkaXNwYXRjaEluZGlyZWN0KHQxKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3YzhkMzU0ZWQ2NTNiOWFkNWRlYWZhMTRiODllYjBi
NjExN2FkOWE0Li40OTM3M2U2ZjE3YzE3NGJlYjBhNjI3YTBkOTc3MTQ4OWRiZTM3MTFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc1OCw2ICs3NTgsOCBA
QAogCQlFMzM5QzE2MzI0NEI0RTg3MDAzNTlEQTkgLyogRGF0YVJlZi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhUmVmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzM0Q1Rjg3MUZCRUQ2NjcwMEJGNjI1RSAvKiBSZWN1cnNhYmxlTGFtYmRhLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlY3Vyc2FibGVMYW1iZGEuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM0Q0QwRDAyMjgxMEEwMjAwMjBEMjk5IC8qIFBhY2tlZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQYWNrZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTM1MzhENEMyNzYyMjA4ODAwNzVEQTUwIC8qIEVtYmVkZGVkRml4ZWRWZWN0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRW1iZWRkZWRGaXhlZFZlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFMzUzOEQ0RDI3NjIyMDg4MDA3NURBNTAgLyogVHJhaWxpbmdBcnJheS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUcmFpbGluZ0FycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
NjBDNzY0MjEyN0I4NUIwMEM5MEYwRSAvKiBVbmFsaWduZWRBY2Nlc3MuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVW5hbGlnbmVkQWNjZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzNjBDNzY1MjEyN0I4NUMwMEM5MEYwRSAvKiBVbmV4cGVjdGVkLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuZXhwZWN0ZWQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTM2ODk1Q0IyM0E0NDVDRDAwOERENEM4IC8qIFBhY2tlZFJlZi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQYWNrZWRSZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTc4MSw2ICs3ODMsNyBAQAogCQlFM0UwRjA0RjI2MTk3MTU3MDA0NjQwRkMgLyogRml4ZWRW
ZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRml4ZWRWZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTNFMTU4MjUxRUFEQTUzQzAwNEEwNzlEIC8qIFN5c3RlbUZyZWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3lzdGVtRnJlZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFM0U2NEYwQjIyODEzNDI4MDAxRTU1QjQgLyogTm9ubW92YWJsZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBOb25tb3ZhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzRTgxNjJGMjc2NDc5OTMwMEJBQTQ1QiAvKiBSZWZDb3VudGVkRml4ZWRWZWN0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVmQ291bnRlZEZpeGVkVmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUU0MTlGMkU2MjNBQjlFMjMwMEIyNjEyOSAvKiBWZWN0b3JIYXNoLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZlY3Rvckhhc2guaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTQzMUNDNEEyMTE4N0FEQjAwMEM4QTA3IC8qIERpc3BhdGNoU1BJ
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BhdGNoU1BJLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0QTBBRDM3MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3Jr
UXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya1F1ZXVl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNzEsNiArMTA3NCw3IEBACiAJ
CQkJQThBNDcyODAxNTFBODI1QTAwNDEyM0ZGIC8qIERvdWJseUxpbmtlZExpc3QuaCAqLywKIAkJ
CQlBOEE0NzI5NzE1MUE4MjVBMDA0MTIzRkYgLyogZHRvYS5jcHAgKi8sCiAJCQkJQThBNDcyOTgx
NTFBODI1QTAwNDEyM0ZGIC8qIGR0b2EuaCAqLywKKwkJCQlFMzUzOEQ0QzI3NjIyMDg4MDA3NURB
NTAgLyogRW1iZWRkZWRGaXhlZFZlY3Rvci5oICovLAogCQkJCTUzMzhFQkE0MjNBQjA0RDEwMDM4
MjY2MiAvKiBFbnVtQ2xhc3NPcGVyYXRvck92ZXJsb2Fkcy5oICovLAogCQkJCTFBRUE4OEUxMUQ2
QkJDRjQwMEU1QUQ2NCAvKiBFbnVtVHJhaXRzLmggKi8sCiAJCQkJQUQ3QzQzNEExREQyQTRBNzAw
MjY4ODhCIC8qIEV4cGVjdGVkLmggKi8sCkBAIC0xMjY3LDYgKzEyNzEsNyBAQAogCQkJCUE4QTQ3
MkZGMTUxQTgyNUIwMDQxMjNGRiAvKiBSZWZDb3VudGVkLmggKi8sCiAJCQkJMEZBNkYzOTAyMEND
NjFFQjAwQTAzRENEIC8qIFJlZkNvdW50ZWRBcnJheS5jcHAgKi8sCiAJCQkJQThBNDczMDAxNTFB
ODI1QjAwNDEyM0ZGIC8qIFJlZkNvdW50ZWRBcnJheS5oICovLAorCQkJCUUzRTgxNjJGMjc2NDc5
OTMwMEJBQTQ1QiAvKiBSZWZDb3VudGVkRml4ZWRWZWN0b3IuaCAqLywKIAkJCQlBOEE0NzMwMTE1
MUE4MjVCMDA0MTIzRkYgLyogUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcCAqLywKIAkJCQlBOEE0
NzMwMjE1MUE4MjVCMDA0MTIzRkYgLyogUmVmQ291bnRlZExlYWtDb3VudGVyLmggKi8sCiAJCQkJ
ODZGNDZGNUYxQTI4NDBFRTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIuaCAqLywKQEAgLTEzNTcsNiAr
MTM2Miw3IEBACiAJCQkJMEY3MDc1RjMxRkJGNTM3QTAwNDg5QUYwIC8qIFRpbWluZ1Njb3BlLmgg
Ki8sCiAJCQkJNTUzMDcxQzkxQzQwNDI3MjAwMzg0ODk4IC8qIFRpbnlMUlVDYWNoZS5oICovLAog
CQkJCTBGRUQ2N0I1MUIyMkQ0RDgwMDY2Q0UxNSAvKiBUaW55UHRyU2V0LmggKi8sCisJCQkJRTM1
MzhENEQyNzYyMjA4ODAwNzVEQTUwIC8qIFRyYWlsaW5nQXJyYXkuaCAqLywKIAkJCQk1MjFDQzZC
MzI0QTI3N0MyMDA0Mzc3RDYgLyogVHJhbnNsYXRlZFByb2Nlc3MuY3BwICovLAogCQkJCTJEMUYy
RjQ2MjQ5OEY3MzMwMEM2M0E4MyAvKiBUcmFuc2xhdGVkUHJvY2Vzcy5oICovLAogCQkJCTE0OUVG
MTYyMTZCQkZFMEQwMDBBNDMzMSAvKiBUcmlTdGF0ZS5oICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApp
bmRleCBkZTFkYmY2NzMzYTU4N2Y5YWU5MjViN2VlM2JhYmZjODVmMWFiNDc5Li5lMjBhMGIzMzI5
NmY5ZmIyZGE4ZjExNGMyYjgxM2Y0YzZiZTMzNTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAt
NjIsNiArNjIsNyBAQCBzZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgRGlzYWxsb3dDVHlwZS5o
CiAgICAgRG9taW5hdG9ycy5oCiAgICAgRG91Ymx5TGlua2VkTGlzdC5oCisgICAgRW1iZWRkZWRG
aXhlZFZlY3Rvci5oCiAgICAgRW51bUNsYXNzT3BlcmF0b3JPdmVybG9hZHMuaAogICAgIEVudW1U
cmFpdHMuaAogICAgIEV4cGVjdGVkLmgKQEAgLTIxOSw2ICsyMjAsNyBAQCBzZXQoV1RGX1BVQkxJ
Q19IRUFERVJTCiAgICAgUmVmLmgKICAgICBSZWZDb3VudGVkLmgKICAgICBSZWZDb3VudGVkQXJy
YXkuaAorICAgIFJlZkNvdW50ZWRGaXhlZFZlY3Rvci5oCiAgICAgUmVmQ291bnRlZExlYWtDb3Vu
dGVyLmgKICAgICBSZWZDb3VudGVyLmgKICAgICBSZWZQdHIuaApAQCAtMjg5LDYgKzI5MSw3IEBA
IHNldChXVEZfUFVCTElDX0hFQURFUlMKICAgICBUaW1pbmdTY29wZS5oCiAgICAgVGlueUxSVUNh
Y2hlLmgKICAgICBUaW55UHRyU2V0LmgKKyAgICBUcmFpbGluZ0FycmF5LmgKICAgICBUcmFuc2xh
dGVkUHJvY2Vzcy5oCiAgICAgVHJpU3RhdGUuaAogICAgIFR5cGVDYXN0cy5oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9FbWJlZGRlZEZpeGVkVmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9F
bWJlZGRlZEZpeGVkVmVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTc3NzkxOGUwMWFiODBmZGU2NjllZDlk
ZjQxN2M5ZmUyZDFjNGU2MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL0VtYmVk
ZGVkRml4ZWRWZWN0b3IuaApAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL05vbm1vdmFibGUuaD4KKyNpbmNsdWRlIDx3dGYv
VHJhaWxpbmdBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKworbmFtZXNwYWNl
IFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBFbWJlZGRlZEZpeGVkVmVjdG9y
IGZpbmFsIDogcHVibGljIFRyYWlsaW5nQXJyYXk8RW1iZWRkZWRGaXhlZFZlY3RvcjxUPiwgVD4g
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKEVtYmVkZGVkRml4ZWRWZWN0b3IpOworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEVtYmVkZGVkRml4ZWRWZWN0b3IpOworICAgIFdURl9NQUtF
X05PTk1PVkFCTEUoRW1iZWRkZWRGaXhlZFZlY3Rvcik7CitwdWJsaWM6CisgICAgdXNpbmcgQmFz
ZSA9IFRyYWlsaW5nQXJyYXk8RW1iZWRkZWRGaXhlZFZlY3RvcjxUPiwgVD47CisKKyAgICBzdGF0
aWMgVW5pcXVlUmVmPEVtYmVkZGVkRml4ZWRWZWN0b3I+IGNyZWF0ZSh1bnNpZ25lZCBzaXplKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIFVuaXF1ZVJlZiB7ICpuZXcgKE5vdE51bGwsIGZhc3RNYWxs
b2MoQmFzZTo6YWxsb2NhdGlvblNpemUoc2l6ZSkpKSBFbWJlZGRlZEZpeGVkVmVjdG9yKHNpemUp
IH07CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW5wdXRJdGVyYXRvcj4KKyAgICBz
dGF0aWMgVW5pcXVlUmVmPEVtYmVkZGVkRml4ZWRWZWN0b3I+IGNyZWF0ZShJbnB1dEl0ZXJhdG9y
IGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QpCisgICAgeworICAgICAgICB1bnNpZ25lZCBzaXpl
ID0gc3RkOjpkaXN0YW5jZShmaXJzdCwgbGFzdCk7CisgICAgICAgIHJldHVybiBVbmlxdWVSZWYg
eyAqbmV3IChOb3ROdWxsLCBmYXN0TWFsbG9jKEJhc2U6OmFsbG9jYXRpb25TaXplKHNpemUpKSkg
RW1iZWRkZWRGaXhlZFZlY3RvcihzaXplLCBmaXJzdCwgbGFzdCkgfTsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4K
KyAgICBzdGF0aWMgVW5pcXVlUmVmPEVtYmVkZGVkRml4ZWRWZWN0b3I+IGNyZWF0ZUZyb21WZWN0
b3IoY29uc3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiBvdGhl
cikKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHNpemUgPSBzdGQ6OnNpemUob3RoZXIpOworICAg
ICAgICByZXR1cm4gVW5pcXVlUmVmIHsgKm5ldyAoTm90TnVsbCwgZmFzdE1hbGxvYyhCYXNlOjph
bGxvY2F0aW9uU2l6ZShzaXplKSkpIEVtYmVkZGVkRml4ZWRWZWN0b3Ioc2l6ZSwgc3RkOjpiZWdp
bihvdGhlciksIHN0ZDo6ZW5kKG90aGVyKSkgfTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxzaXpl
X3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4KKyAgICBzdGF0aWMg
VW5pcXVlUmVmPEVtYmVkZGVkRml4ZWRWZWN0b3I+IGNyZWF0ZUZyb21WZWN0b3IoVmVjdG9yPFQs
IGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiYgb3RoZXIpCisgICAgeworICAgICAg
ICBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4gY29udGFpbmVyID0g
V1RGTW92ZShvdGhlcik7CisgICAgICAgIHVuc2lnbmVkIHNpemUgPSBzdGQ6OnNpemUoY29udGFp
bmVyKTsKKyAgICAgICAgcmV0dXJuIFVuaXF1ZVJlZiB7ICpuZXcgKE5vdE51bGwsIGZhc3RNYWxs
b2MoQmFzZTo6YWxsb2NhdGlvblNpemUoc2l6ZSkpKSBFbWJlZGRlZEZpeGVkVmVjdG9yKHNpemUs
IHN0ZDo6bW92ZV9pdGVyYXRvciB7IHN0ZDo6YmVnaW4oY29udGFpbmVyKSB9LCBzdGQ6Om1vdmVf
aXRlcmF0b3IgeyBzdGQ6OmVuZChjb250YWluZXIpIH0pIH07CisgICAgfQorCisgICAgVW5pcXVl
UmVmPEVtYmVkZGVkRml4ZWRWZWN0b3I+IGNsb25lKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBjcmVhdGUoQmFzZTo6YmVnaW4oKSwgQmFzZTo6ZW5kKCkpOworICAgIH0KKworICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBFbWJlZGRlZEZpeGVkVmVjdG9yJiBvdGhlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKKyAgICB9CisKKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgRW1iZWRkZWRGaXhlZFZlY3RvciYgb3RoZXIpIGNvbnN0CisgICAg
eworICAgICAgICBpZiAoQmFzZTo6c2l6ZSgpICE9IG90aGVyLnNpemUoKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEJhc2U6OnNp
emUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAoQmFzZTo6YXQoaSkgIT0gb3RoZXIuYXQoaSkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBFbWJlZGRlZEZpeGVkVmVjdG9yKHVuc2ln
bmVkIHNpemUpCisgICAgICAgIDogQmFzZShzaXplKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yPgorICAgIEVtYmVkZGVkRml4ZWRWZWN0b3IodW5z
aWduZWQgc2l6ZSwgSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0KQorICAg
ICAgICA6IEJhc2Uoc2l6ZSwgZmlyc3QsIGxhc3QpCisgICAgeworICAgIH0KK307CisKK30gLy8g
bmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OkVtYmVkZGVkRml4ZWRWZWN0b3I7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaXhlZFZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvRml4ZWRW
ZWN0b3IuaAppbmRleCAzMjhmOTgxNTEwYmY3YjY0ZjczMGYxYWJiOGVlMTEwODMzNzZjMWQ0Li4y
Mjk0MzY2ZjA4ODI5MTE3YzYwNjhhNGQxZjc0Y2VjZTdlMWE0NjE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9GaXhlZFZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpeGVkVmVjdG9y
LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYvRW1i
ZWRkZWRGaXhlZFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkQXJyYXkuaD4KIAog
bmFtZXNwYWNlIFdURiB7CkBAIC0zNCw2ICszNSw3IEBAIG5hbWVzcGFjZSBXVEYgewogdGVtcGxh
dGU8dHlwZW5hbWUgVD4KIGNsYXNzIEZpeGVkVmVjdG9yIHsKIHB1YmxpYzoKKyAgICB1c2luZyBT
dG9yYWdlID0gRW1iZWRkZWRGaXhlZFZlY3RvcjxUPjsKICAgICB1c2luZyBpdGVyYXRvciA9IFQq
OwogICAgIHVzaW5nIGNvbnN0X2l0ZXJhdG9yID0gY29uc3QgVCo7CiAgICAgdXNpbmcgcmV2ZXJz
ZV9pdGVyYXRvciA9IHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj47CkBAIC00MSw3ICs0
Myw3IEBAIGNsYXNzIEZpeGVkVmVjdG9yIHsKIAogICAgIEZpeGVkVmVjdG9yKCkgPSBkZWZhdWx0
OwogICAgIEZpeGVkVmVjdG9yKGNvbnN0IEZpeGVkVmVjdG9yJiBvdGhlcikKLSAgICAgICAgOiBt
X3N0b3JhZ2Uob3RoZXIubV9zdG9yYWdlLmNsb25lKCkpCisgICAgICAgIDogbV9zdG9yYWdlKG90
aGVyLm1fc3RvcmFnZSA/IG90aGVyLm1fc3RvcmFnZS0+Y2xvbmUoKS5tb3ZlVG9VbmlxdWVQdHIo
KSA6IG51bGxwdHIpCiAgICAgeyB9CiAgICAgRml4ZWRWZWN0b3IoRml4ZWRWZWN0b3ImJiBvdGhl
cikgPSBkZWZhdWx0OwogCkBAIC02MCw3NiArNjIsMTAyIEBAIGNsYXNzIEZpeGVkVmVjdG9yIHsK
ICAgICB9CiAKICAgICBleHBsaWNpdCBGaXhlZFZlY3RvcihzaXplX3Qgc2l6ZSkKLSAgICAgICAg
OiBtX3N0b3JhZ2Uoc2l6ZSkKKyAgICAgICAgOiBtX3N0b3JhZ2Uoc2l6ZSA/IFN0b3JhZ2U6OmNy
ZWF0ZShzaXplKS5tb3ZlVG9VbmlxdWVQdHIoKSA6IG51bGxwdHIpCiAgICAgeyB9CiAKICAgICB0
ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4K
ICAgICBleHBsaWNpdCBGaXhlZFZlY3Rvcihjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHks
IE92ZXJmbG93SGFuZGxlcj4mIG90aGVyKQotICAgICAgICA6IG1fc3RvcmFnZShvdGhlcikKKyAg
ICAgICAgOiBtX3N0b3JhZ2Uob3RoZXIuaXNFbXB0eSgpID8gbnVsbHB0ciA6IFN0b3JhZ2U6OmNy
ZWF0ZUZyb21WZWN0b3Iob3RoZXIpLm1vdmVUb1VuaXF1ZVB0cigpKQogICAgIHsgfQogCiAgICAg
dGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+
CiAgICAgRml4ZWRWZWN0b3ImIG9wZXJhdG9yPShjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNp
dHksIE92ZXJmbG93SGFuZGxlcj4mIG90aGVyKQogICAgIHsKLSAgICAgICAgbV9zdG9yYWdlID0g
b3RoZXI7CisgICAgICAgIG1fc3RvcmFnZSA9IG90aGVyLmlzRW1wdHkoKSA/IG51bGxwdHIgOiBT
dG9yYWdlOjpjcmVhdGVGcm9tVmVjdG9yKG90aGVyKS5tb3ZlVG9VbmlxdWVQdHIoKTsKICAgICAg
ICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPgogICAgIGV4cGxpY2l0IEZpeGVkVmVjdG9y
KFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiYmIG90aGVyKQotICAg
ICAgICA6IG1fc3RvcmFnZShXVEZNb3ZlKG90aGVyKSkKLSAgICB7IH0KKyAgICB7CisgICAgICAg
IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiB0YXJnZXQgPSBXVEZN
b3ZlKG90aGVyKTsKKyAgICAgICAgbV9zdG9yYWdlID0gdGFyZ2V0LmlzRW1wdHkoKSA/IG51bGxw
dHIgOiBTdG9yYWdlOjpjcmVhdGVGcm9tVmVjdG9yKFdURk1vdmUodGFyZ2V0KSkubW92ZVRvVW5p
cXVlUHRyKCk7CisgICAgfQogCiAgICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0
eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+CiAgICAgRml4ZWRWZWN0b3ImIG9wZXJhdG9yPShWZWN0
b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4mJiBvdGhlcikKICAgICB7Ci0g
ICAgICAgIG1fc3RvcmFnZSA9IFdURk1vdmUob3RoZXIpOworICAgICAgICBWZWN0b3I8VCwgaW5s
aW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4gdGFyZ2V0ID0gV1RGTW92ZShvdGhlcik7Cisg
ICAgICAgIG1fc3RvcmFnZSA9IHRhcmdldC5pc0VtcHR5KCkgPyBudWxscHRyIDogU3RvcmFnZTo6
Y3JlYXRlRnJvbVZlY3RvcihXVEZNb3ZlKHRhcmdldCkpLm1vdmVUb1VuaXF1ZVB0cigpOwogICAg
ICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJl
dHVybiBtX3N0b3JhZ2Uuc2l6ZSgpOyB9Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gbV9zdG9yYWdlLmlzRW1wdHkoKTsgfQotICAgIHNpemVfdCBieXRlU2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RvcmFnZS5ieXRlU2l6ZSgpOyB9CisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7
IHJldHVybiBtX3N0b3JhZ2UgPyBtX3N0b3JhZ2UtPnNpemUoKSA6IDA7IH0KKyAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UgPyBtX3N0b3JhZ2UtPmlzRW1wdHkoKSA6
IHRydWU7IH0KKyAgICBzaXplX3QgYnl0ZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2Ug
PyBtX3N0b3JhZ2UtPmJ5dGVTaXplKCkgOiAwOyB9CiAKLSAgICBUKiBkYXRhKCkgeyByZXR1cm4g
bV9zdG9yYWdlLmRhdGEoKTsgfQotICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9zdG9y
YWdlLmJlZ2luKCk7IH0KLSAgICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiBtX3N0b3JhZ2UuZW5k
KCk7IH0KKyAgICBUKiBkYXRhKCkgeyByZXR1cm4gbV9zdG9yYWdlID8gbV9zdG9yYWdlLT5kYXRh
KCkgOiBudWxscHRyOyB9CisgICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBtX3N0b3JhZ2Ug
PyBtX3N0b3JhZ2UtPmJlZ2luKCkgOiBudWxscHRyOyB9CisgICAgaXRlcmF0b3IgZW5kKCkgeyBy
ZXR1cm4gbV9zdG9yYWdlID8gbV9zdG9yYWdlLT5lbmQoKSA6IG51bGxwdHI7IH0KIAogICAgIGNv
bnN0IFQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEZpeGVkVmVjdG9yKj4odGhp
cyktPmRhdGEoKTsgfQogICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4g
Y29uc3RfY2FzdDxGaXhlZFZlY3Rvcio+KHRoaXMpLT5iZWdpbigpOyB9CiAgICAgY29uc3RfaXRl
cmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxGaXhlZFZlY3Rvcio+KHRoaXMp
LT5lbmQoKTsgfQogCi0gICAgcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSB7IHJldHVybiBtX3N0
b3JhZ2UucmJlZ2luKCk7IH0KLSAgICByZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSB7IHJldHVybiBt
X3N0b3JhZ2UucmVuZCgpOyB9Ci0gICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSBj
b25zdCB7IHJldHVybiBtX3N0b3JhZ2UucmJlZ2luKCk7IH0KLSAgICBjb25zdF9yZXZlcnNlX2l0
ZXJhdG9yIHJlbmQoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UucmVuZCgpOyB9CisgICAgcmV2
ZXJzZV9pdGVyYXRvciByYmVnaW4oKSB7IHJldHVybiBtX3N0b3JhZ2UgPyBtX3N0b3JhZ2UtPnJi
ZWdpbigpIDogcmV2ZXJzZV9pdGVyYXRvcihudWxscHRyKTsgfQorICAgIHJldmVyc2VfaXRlcmF0
b3IgcmVuZCgpIHsgcmV0dXJuIG1fc3RvcmFnZSA/IG1fc3RvcmFnZS0+cmVuZCgpIDogcmV2ZXJz
ZV9pdGVyYXRvcihudWxscHRyKTsgfQorICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmJlZ2lu
KCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlID8gbV9zdG9yYWdlLT5yYmVnaW4oKSA6IGNvbnN0
X3JldmVyc2VfaXRlcmF0b3IobnVsbHB0cik7IH0KKyAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9y
IHJlbmQoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UgPyBtX3N0b3JhZ2UtPnJlbmQoKSA6IGNv
bnN0X3JldmVyc2VfaXRlcmF0b3IobnVsbHB0cik7IH0KIAotICAgIFQmIGF0KHNpemVfdCBpKSB7
IHJldHVybiBtX3N0b3JhZ2UuYXQoaSk7IH0KLSAgICBjb25zdCBUJiBhdChzaXplX3QgaSkgY29u
c3QgeyByZXR1cm4gbV9zdG9yYWdlLmF0KGkpOyB9CisgICAgVCYgYXQoc2l6ZV90IGkpIHsgcmV0
dXJuIG1fc3RvcmFnZS0+YXQoaSk7IH0KKyAgICBjb25zdCBUJiBhdChzaXplX3QgaSkgY29uc3Qg
eyByZXR1cm4gbV9zdG9yYWdlLT5hdChpKTsgfQogCi0gICAgVCYgb3BlcmF0b3JbXShzaXplX3Qg
aSkgeyByZXR1cm4gYXQoaSk7IH0KLSAgICBjb25zdCBUJiBvcGVyYXRvcltdKHNpemVfdCBpKSBj
b25zdCB7IHJldHVybiBhdChpKTsgfQorICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIHsgcmV0
dXJuIG1fc3RvcmFnZS0+YXQoaSk7IH0KKyAgICBjb25zdCBUJiBvcGVyYXRvcltdKHNpemVfdCBp
KSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UtPmF0KGkpOyB9CiAKICAgICBUJiBmaXJzdCgpIHsg
cmV0dXJuICgqdGhpcylbMF07IH0KICAgICBjb25zdCBUJiBmaXJzdCgpIGNvbnN0IHsgcmV0dXJu
ICgqdGhpcylbMF07IH0KICAgICBUJiBsYXN0KCkgeyByZXR1cm4gKCp0aGlzKVtzaXplKCkgLSAx
XTsgfQogICAgIGNvbnN0IFQmIGxhc3QoKSBjb25zdCB7IHJldHVybiAoKnRoaXMpW3NpemUoKSAt
IDFdOyB9CiAKLSAgICB2b2lkIGZpbGwoY29uc3QgVCYgdmFsKSB7IG1fc3RvcmFnZS5maWxsKHZh
bCk7IH0KKyAgICB2b2lkIGZpbGwoY29uc3QgVCYgdmFsKQorICAgIHsKKyAgICAgICAgaWYgKCFt
X3N0b3JhZ2UpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fc3RvcmFnZS0+ZmlsbCh2
YWwpOworICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaXhlZFZlY3RvcjxUPiYg
b3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZSA9PSBvdGhlci5tX3N0b3JhZ2U7IH0KKyAg
ICBib29sIG9wZXJhdG9yIT0oY29uc3QgRml4ZWRWZWN0b3I8VD4mIG90aGVyKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KKworICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBGaXhlZFZlY3RvcjxUPiYgb3RoZXIpIGNvbnN0CisgICAgeworICAg
ICAgICBpZiAoIW1fc3RvcmFnZSkgeworICAgICAgICAgICAgaWYgKCFvdGhlci5tX3N0b3JhZ2Up
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4gb3RoZXIu
bV9zdG9yYWdlLT5pc0VtcHR5KCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFvdGhlci5tX3N0
b3JhZ2UpCisgICAgICAgICAgICByZXR1cm4gbV9zdG9yYWdlLT5pc0VtcHR5KCk7CisgICAgICAg
IHJldHVybiAqbV9zdG9yYWdlID09ICpvdGhlci5tX3N0b3JhZ2U7CisgICAgfQogCiAgICAgdm9p
ZCBzd2FwKEZpeGVkVmVjdG9yPFQ+JiBvdGhlcikKICAgICB7Ci0gICAgICAgIG1fc3RvcmFnZS5z
d2FwKG90aGVyLm1fc3RvcmFnZSk7CisgICAgICAgIHVzaW5nIHN0ZDo6c3dhcDsKKyAgICAgICAg
c3dhcChtX3N0b3JhZ2UsIG90aGVyLm1fc3RvcmFnZSk7CiAgICAgfQogCiAgICAgc3RhdGljIHB0
cmRpZmZfdCBvZmZzZXRPZlN0b3JhZ2UoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRml4ZWRW
ZWN0b3IsIG1fc3RvcmFnZSk7IH0KIAorICAgIFN0b3JhZ2UqIGdldFN0b3JhZ2UoKSB7IHJldHVy
biBtX3N0b3JhZ2UuZ2V0KCk7IH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgSlNDOjpM
TEludE9mZnNldHNFeHRyYWN0b3I7CiAKLSAgICBSZWZDb3VudGVkQXJyYXk8VD4gbV9zdG9yYWdl
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxTdG9yYWdlPiBtX3N0b3JhZ2U7CiB9Owogc3RhdGljX2Fz
c2VydChzaXplb2YoRml4ZWRWZWN0b3I8aW50PikgPT0gc2l6ZW9mKGludCopKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvUmVmQ291bnRlZEZpeGVkVmVjdG9yLmggYi9Tb3VyY2UvV1RG
L3d0Zi9SZWZDb3VudGVkRml4ZWRWZWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMmYzMzczZTE5NmQ3ZWUy
MDJjM2U5ODViMjhhYjJlN2UxYmViYjc2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93
dGYvUmVmQ291bnRlZEZpeGVkVmVjdG9yLmgKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1
ZGUgPHd0Zi9UcmFpbGluZ0FycmF5Lmg+CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBULCBib29sIGlzVGhyZWFkU2FmZT4KK2NsYXNzIFJlZkNvdW50ZWRGaXhlZFZlY3Rv
ckJhc2UgZmluYWwgOiBwdWJsaWMgc3RkOjpjb25kaXRpb25hbDxpc1RocmVhZFNhZmUsIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2U8VCwgaXNUaHJlYWRTYWZl
Pj4sIFJlZkNvdW50ZWQ8UmVmQ291bnRlZEZpeGVkVmVjdG9yQmFzZTxULCBpc1RocmVhZFNhZmU+
Pj46OnR5cGUsIHB1YmxpYyBUcmFpbGluZ0FycmF5PFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2U8
VCwgaXNUaHJlYWRTYWZlPiwgVD4geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBUcmFpbGlu
Z0FycmF5PFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2U8VCwgaXNUaHJlYWRTYWZlPiwgVD47CisK
KyAgICBzdGF0aWMgUmVmPFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2U+IGNyZWF0ZSh1bnNpZ25l
ZCBzaXplKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgKE5vdE51bGwsIGZh
c3RNYWxsb2MoQmFzZTo6YWxsb2NhdGlvblNpemUoc2l6ZSkpKSBSZWZDb3VudGVkRml4ZWRWZWN0
b3JCYXNlKHNpemUpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnB1dEl0ZXJh
dG9yPgorICAgIHN0YXRpYyBSZWY8UmVmQ291bnRlZEZpeGVkVmVjdG9yQmFzZT4gY3JlYXRlKElu
cHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3IgbGFzdCkKKyAgICB7CisgICAgICAgIHVu
c2lnbmVkIHNpemUgPSBzdGQ6OmRpc3RhbmNlKGZpcnN0LCBsYXN0KTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgKE5vdE51bGwsIGZhc3RNYWxsb2MoQmFzZTo6YWxsb2NhdGlvblNpemUo
c2l6ZSkpKSBSZWZDb3VudGVkRml4ZWRWZWN0b3JCYXNlKHNpemUsIGZpcnN0LCBsYXN0KSk7Cisg
ICAgfQorCisgICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVy
Zmxvd0hhbmRsZXI+CisgICAgc3RhdGljIFJlZjxSZWZDb3VudGVkRml4ZWRWZWN0b3JCYXNlPiBj
cmVhdGVGcm9tVmVjdG9yKGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dI
YW5kbGVyPiYgb3RoZXIpCisgICAgeworICAgICAgICB1bnNpZ25lZCBzaXplID0gc3RkOjpzaXpl
KG90aGVyKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgKE5vdE51bGwsIGZhc3RNYWxs
b2MoQmFzZTo6YWxsb2NhdGlvblNpemUoc2l6ZSkpKSBSZWZDb3VudGVkRml4ZWRWZWN0b3JCYXNl
KHNpemUsIHN0ZDo6YmVnaW4ob3RoZXIpLCBzdGQ6OmVuZChvdGhlcikpKTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxl
cj4KKyAgICBzdGF0aWMgUmVmPFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2U+IGNyZWF0ZUZyb21W
ZWN0b3IoVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiYgb3RoZXIp
CisgICAgeworICAgICAgICBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxl
cj4gY29udGFpbmVyID0gV1RGTW92ZShvdGhlcik7CisgICAgICAgIHVuc2lnbmVkIHNpemUgPSBz
dGQ6OnNpemUoY29udGFpbmVyKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgKE5vdE51
bGwsIGZhc3RNYWxsb2MoQmFzZTo6YWxsb2NhdGlvblNpemUoc2l6ZSkpKSBSZWZDb3VudGVkRml4
ZWRWZWN0b3JCYXNlKHNpemUsIHN0ZDo6bW92ZV9pdGVyYXRvciB7IHN0ZDo6YmVnaW4oY29udGFp
bmVyKSB9LCBzdGQ6Om1vdmVfaXRlcmF0b3IgeyBzdGQ6OmVuZChjb250YWluZXIpIH0pKTsKKyAg
ICB9CisKKyAgICBSZWY8UmVmQ291bnRlZEZpeGVkVmVjdG9yQmFzZT4gY2xvbmUoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZShCYXNlOjpiZWdpbigpLCBCYXNlOjplbmQoKSk7
CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZkNvdW50ZWRGaXhlZFZlY3Rv
ckJhc2UmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3Ro
ZXIpOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWZDb3VudGVkRml4ZWRW
ZWN0b3JCYXNlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChCYXNlOjpzaXplKCkg
IT0gb3RoZXIuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgQmFzZTo6c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlm
IChCYXNlOjphdChpKSAhPSBvdGhlci5hdChpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCitwcml2YXRlOgor
ICAgIFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2UodW5zaWduZWQgc2l6ZSkKKyAgICAgICAgOiBC
YXNlKHNpemUpCisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIElucHV0SXRl
cmF0b3I+CisgICAgUmVmQ291bnRlZEZpeGVkVmVjdG9yQmFzZSh1bnNpZ25lZCBzaXplLCBJbnB1
dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QpCisgICAgICAgIDogQmFzZShzaXpl
LCBmaXJzdCwgbGFzdCkKKyAgICB7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K3VzaW5nIFJlZkNvdW50ZWRGaXhlZFZlY3RvciA9IFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2U8
VCwgZmFsc2U+OwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3VzaW5nIFRocmVhZFNhZmVSZWZDb3Vu
dGVkRml4ZWRWZWN0b3IgPSBSZWZDb3VudGVkRml4ZWRWZWN0b3JCYXNlPFQsIHRydWU+OworCit9
IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpSZWZDb3VudGVkRml4ZWRWZWN0b3I7Cit1
c2luZyBXVEY6OlRocmVhZFNhZmVSZWZDb3VudGVkRml4ZWRWZWN0b3I7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9UcmFpbGluZ0FycmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9UcmFpbGluZ0Fy
cmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTA2NTk1NjZmNDgxYzBlZTY3MWIwYTBkZTU1MDFhM2I3NjYwMTE4
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RyYWlsaW5nQXJyYXkuaApAQCAt
MCwwICsxLDEzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdU
RiB7CisKKy8vIFRyYWlsaW5nQXJyYXkgb2ZmZXJzIHRoZSBmZWF0dXJlIHRyYWlsaW5nIGFycmF5
IGluIHRoZSBkZXJpdmVkIGNsYXNzLgorLy8gV2UgY2FuIGFsbG9jYXRlIGEgbWVtb3J5IGxpa2Ug
dGhlIGZvbGxvd2luZyBsYXlvdXQuCisvLworLy8gICAgIFsgIERlcml2ZWRDbGFzcyAgXVsgVHJh
aWxpbmcgQXJyYXkgXQorLy8KKy8vIEFuZCB0cmFpbGluZyBhcnJheSBvZmZlcnMgYXBwcm9wcmlh
dGUgbWV0aG9kcyBmb3IgYWNjZXNzaW5nIGFuZCBkZXN0cnVjdGlvbnMuCit0ZW1wbGF0ZTx0eXBl
bmFtZSBEZXJpdmVkLCB0eXBlbmFtZSBUPgorY2xhc3MgVHJhaWxpbmdBcnJheSB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoVHJhaWxpbmdBcnJheSk7CisgICAgZnJpZW5kIGNsYXNzIEpTQzo6
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworcHVibGljOgorICAgIHVzaW5nIHZhbHVlX3R5cGUgPSBU
OworICAgIHVzaW5nIHBvaW50ZXIgPSBUKjsKKyAgICB1c2luZyByZWZlcmVuY2UgPSBUJjsKKyAg
ICB1c2luZyBjb25zdF9yZWZlcmVuY2UgPSBjb25zdCBUJjsKKyAgICB1c2luZyBjb25zdF9wb2lu
dGVyID0gY29uc3QgVCo7CisgICAgdXNpbmcgc2l6ZV90eXBlID0gdW5zaWduZWQ7CisgICAgdXNp
bmcgZGlmZmVyZW5jZV90eXBlID0gc3RkOjptYWtlX3NpZ25lZF90PHNpemVfdHlwZT47CisgICAg
dXNpbmcgaXRlcmF0b3IgPSBUKjsKKyAgICB1c2luZyBjb25zdF9pdGVyYXRvciA9IGNvbnN0IFQq
OworICAgIHVzaW5nIHJldmVyc2VfaXRlcmF0b3IgPSBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8aXRl
cmF0b3I+OworICAgIHVzaW5nIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgPSBzdGQ6OnJldmVyc2Vf
aXRlcmF0b3I8Y29uc3RfaXRlcmF0b3I+OworCisgICAgZXhwbGljaXQgVHJhaWxpbmdBcnJheSh1
bnNpZ25lZCBzaXplKQorICAgICAgICA6IG1fc2l6ZShzaXplKQorICAgIHsKKyAgICAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX2ZpbmFsX3Y8RGVyaXZlZD4pOworICAgICAgICBWZWN0b3JUeXBl
T3BlcmF0aW9uczxUPjo6aW5pdGlhbGl6ZUlmTm9uUE9EKGJlZ2luKCksIGVuZCgpKTsKKyAgICB9
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yPgorICAgIFRyYWlsaW5nQXJy
YXkodW5zaWduZWQgc2l6ZSwgSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0
KQorICAgICAgICA6IG1fc2l6ZShzaXplKQorICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX2ZpbmFsX3Y8RGVyaXZlZD4pOworICAgICAgICBBU1NFUlQoc3RkOjpkaXN0YW5jZShm
aXJzdCwgbGFzdCkgPT0gc2l6ZSk7CisgICAgICAgIHN0ZDo6dW5pbml0aWFsaXplZF9jb3B5KGZp
cnN0LCBsYXN0LCBiZWdpbigpKTsKKyAgICB9CisKKyAgICB+VHJhaWxpbmdBcnJheSgpCisgICAg
eworICAgICAgICBWZWN0b3JUeXBlT3BlcmF0aW9uczxUPjo6ZGVzdHJ1Y3QoYmVnaW4oKSwgZW5k
KCkpOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGFsbG9jYXRpb25TaXpl
KHVuc2lnbmVkIHNpemUpCisgICAgeworICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0
aXBsZU9mPGFsaWdub2YoVCk+KHNpemVvZihEZXJpdmVkKSkgKyBzaXplICogc2l6ZW9mKFQpOwor
ICAgIH0KKworICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAg
ICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9CisgICAgdW5zaWduZWQg
Ynl0ZVNpemUoKSBjb25zdCB7IHJldHVybiBzaXplKCkgKiBzaXplb2YoVCk7IH0KKworICAgIHBv
aW50ZXIgZGF0YSgpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxUKj4oYml0d2lzZV9jYXN0PHVpbnQ4
X3QqPih0aGlzKSArIG9mZnNldE9mRGF0YSgpKTsgfQorICAgIGNvbnN0X3BvaW50ZXIgZGF0YSgp
IGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxjb25zdCBUKj4oYml0d2lzZV9jYXN0PGNvbnN0
IHVpbnQ4X3QqPih0aGlzKSArIG9mZnNldE9mRGF0YSgpKTsgfQorCisgICAgaXRlcmF0b3IgYmVn
aW4oKSB7IHJldHVybiBkYXRhKCk7IH0KKyAgICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiBkYXRh
KCkgKyBzaXplKCk7IH0KKyAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJu
IGNiZWdpbigpOyB9CisgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gY2Vu
ZCgpOyB9CisgICAgY29uc3RfaXRlcmF0b3IgY2JlZ2luKCkgY29uc3QgeyByZXR1cm4gZGF0YSgp
OyB9CisgICAgY29uc3RfaXRlcmF0b3IgY2VuZCgpIGNvbnN0IHsgcmV0dXJuIGRhdGEoKSArIHNp
emUoKTsgfQorCisgICAgcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSB7IHJldHVybiByZXZlcnNl
X2l0ZXJhdG9yKGVuZCgpKTsgfQorICAgIHJldmVyc2VfaXRlcmF0b3IgcmVuZCgpIHsgcmV0dXJu
IHJldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KKyAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9y
IHJiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGNyYmVnaW4oKTsgfQorICAgIGNvbnN0X3JldmVyc2Vf
aXRlcmF0b3IgcmVuZCgpIGNvbnN0IHsgcmV0dXJuIGNyZW5kKCk7IH0KKyAgICBjb25zdF9yZXZl
cnNlX2l0ZXJhdG9yIGNyYmVnaW4oKSBjb25zdCB7IHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJh
dG9yKGVuZCgpKTsgfQorICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgY3JlbmQoKSBjb25zdCB7
IHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOyB9CisKKyAgICByZWZlcmVu
Y2UgYXQodW5zaWduZWQgaSkKKyAgICB7CisgICAgICAgIEFTU0VSVChpIDwgc2l6ZSgpKTsKKyAg
ICAgICAgcmV0dXJuIGJlZ2luKClbaV07CisgICAgfQorCisgICAgY29uc3RfcmVmZXJlbmNlIGF0
KHVuc2lnbmVkIGkpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaSA8IHNpemUoKSk7Cisg
ICAgICAgIHJldHVybiBiZWdpbigpW2ldOworICAgIH0KKworICAgIHJlZmVyZW5jZSBvcGVyYXRv
cltdKHVuc2lnbmVkIGkpIHsgcmV0dXJuIGF0KGkpOyB9CisgICAgY29uc3RfcmVmZXJlbmNlIG9w
ZXJhdG9yW10odW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gYXQoaSk7IH0KKworICAgIFQmIGZp
cnN0KCkgeyByZXR1cm4gKCp0aGlzKVswXTsgfQorICAgIGNvbnN0IFQmIGZpcnN0KCkgY29uc3Qg
eyByZXR1cm4gKCp0aGlzKVswXTsgfQorICAgIFQmIGxhc3QoKSB7IHJldHVybiAoKnRoaXMpW3Np
emUoKSAtIDFdOyB9CisgICAgY29uc3QgVCYgbGFzdCgpIGNvbnN0IHsgcmV0dXJuICgqdGhpcylb
c2l6ZSgpIC0gMV07IH0KKworICAgIHZvaWQgZmlsbChjb25zdCBUJiB2YWwpCisgICAgeworICAg
ICAgICBzdGQ6OmZpbGwoYmVnaW4oKSwgZW5kKCksIHZhbCk7CisgICAgfQorCisgICAgc3RhdGlj
IHB0cmRpZmZfdCBvZmZzZXRPZlNpemUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRGVyaXZl
ZCwgbV9zaXplKTsgfQorICAgIHN0YXRpYyBjb25zdGV4cHIgcHRyZGlmZl90IG9mZnNldE9mRGF0
YSgpIHsgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxhbGlnbm9mKFQpPihzaXplb2Yo
RGVyaXZlZCkpOyB9CisKK3Byb3RlY3RlZDoKKyAgICB1bnNpZ25lZCBtX3NpemUgeyAwIH07Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpUcmFpbGluZ0FycmF5OwpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDk2YThkYmI4
M2I3MjI2NDRkYzZmMDJlYTM1ZjI1OTAxN2FiOWM2YmYuLjVmNmZmODcxNjY0ZGQ1N2VlNjgxNTAx
NDBmNmQyMTU4MmM1OGRkOTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMS0xMi0xMSAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtXVEZdIEludHJvZHVjZSBUcmFpbGluZ0Fy
cmF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQy
MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvRW1iZWRkZWRGaXhlZFZlY3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpEZXN0cnVjdG9y
T2JzZXJ2ZXI6OkRlc3RydWN0b3JPYnNlcnZlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpE
ZXN0cnVjdG9yT2JzZXJ2ZXI6On5EZXN0cnVjdG9yT2JzZXJ2ZXIpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6RGVzdHJ1Y3Rvck9ic2VydmVyOjpvcGVyYXRvcj0pOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0ZpeGVkVmVjdG9yLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZWRG
aXhlZFZlY3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpEZXN0cnVjdG9yT2JzZXJ2ZXI6OkRlc3RydWN0b3JPYnNl
cnZlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpEZXN0cnVjdG9yT2JzZXJ2ZXI6On5EZXN0
cnVjdG9yT2JzZXJ2ZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RGVzdHJ1Y3Rvck9ic2Vy
dmVyOjpvcGVyYXRvcj0pOgorCiAyMDIxLTEyLTEwICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxz
b25AYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gQWRkIG5ldyBzY3JlZW4gYW5kIHdpbmRv
dyBjYXB0dXJlIGJhY2tlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VM
aXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CmluZGV4IGZjYzlm
ZmM2MTJmNmY5MDE3ZDY0OGQ2NWY1MzBlNWY2NjM4ODU2ZTYuLmExYTkxNDJmZmE4YjU1Zjc3YjU0
ZTRmYWU4NTZkYWZmMDllYzFjM2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01h
a2VMaXN0cy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dApAQCAt
MzgsNiArMzgsNyBAQCBzZXQoVGVzdFdURl9TT1VSQ0VTCiAgICAgVGVzdHMvV1RGL0RhdGFNdXRl
eC5jcHAKICAgICBUZXN0cy9XVEYvRGF0ZU1hdGguY3BwCiAgICAgVGVzdHMvV1RGL0RlcXVlLmNw
cAorICAgIFRlc3RzL1dURi9FbWJlZGRlZEZpeGVkVmVjdG9yLmNwcAogICAgIFRlc3RzL1dURi9F
bnVtVHJhaXRzLmNwcAogICAgIFRlc3RzL1dURi9FeHBlY3RlZC5jcHAKICAgICBUZXN0cy9XVEYv
RmlsZVN5c3RlbS5jcHAKQEAgLTc0LDYgKzc1LDcgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAg
IFRlc3RzL1dURi9Qcmlvcml0eVF1ZXVlLmNwcAogICAgIFRlc3RzL1dURi9SZWRCbGFja1RyZWUu
Y3BwCiAgICAgVGVzdHMvV1RGL1JlZi5jcHAKKyAgICBUZXN0cy9XVEYvUmVmQ291bnRlZEZpeGVk
VmVjdG9yLmNwcAogICAgIFRlc3RzL1dURi9SZWZDb3VudGVyLmNwcAogICAgIFRlc3RzL1dURi9S
ZWZMb2dnZXIuY3BwCiAgICAgVGVzdHMvV1RGL1JlZlB0ci5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggMTc4YjMwOWM0NWMzYTA2NGYyOGIwN2RiMGZhOTAwYjQ0ZDcxODI5YS4uYWNkNmNi
ZTI4MGE0ODIxNDJkYzg5Yzc5Yjg0OTU3YTY1NTE3NThiYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTk2NSw2ICs5NjUsNyBAQAogCQlFMTIyMERDQTE1NUIyOEFBMDAxM0UyRkMgLyogTWVt
b3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTIyMERDOTE1NUIy
ODdEMDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdh
dGUuaHRtbCAqLzsgfTsKIAkJRTE5NEUxQkQxNzdFNTNDNzAwOUM0RDRFIC8qIFN0b3BMb2FkaW5n
RnJvbURpZFJlY2VpdmVSZXNwb25zZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOTRFMUJDMTc3RTUzNEEwMDlDNEQ0RSAvKiBTdG9w
TG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UuaHRtbCAqLzsgfTsKIAkJRTMwMkJEQUEyNDA0
QjkyNDAwODY1Mjc3IC8qIENvbXBhY3RSZWZQdHJUdXBsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzAyQkRBOTI0MDRCOTIzMDA4NjUyNzcgLyog
Q29tcGFjdFJlZlB0clR1cGxlLmNwcCAqLzsgfTsKKwkJRTMxNkQ0MjAyNzY0N0EwMjAwMjg3QjE2
IC8qIFJlZkNvdW50ZWRGaXhlZFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzE2RDQxRjI3NjQ3QTAyMDAyODdCMTYgLyogUmVmQ291bnRl
ZEZpeGVkVmVjdG9yLmNwcCAqLzsgfTsKIAkJRTMyMTA1MTkyNjE5NzlGMzAwMTU3QzY3IC8qIEZp
eGVkVmVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzMjEwNTE4MjYxOTc5RjMwMDE1N0M2NyAvKiBGaXhlZFZlY3Rvci5jcHAgKi87IH07CiAJ
CUUzMjRBNkYwMjA0MUM4MjAwMEE3NjU5MyAvKiBVbmlxdWVBcnJheS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk4QkMwRjIwNDFDNzYzMDAzODcx
MzYgLyogVW5pcXVlQXJyYXkuY3BwICovOyB9OwogCQlFMzI1QzkwNzIzRTM4NzAyMDBCQzdEM0Ig
LyogUGljdHVyZUluUGljdHVyZVN1cHBvcnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzI1QzkwNjIzRTM4NzAyMDBCQzdEM0IgLyogUGljdHVyZUlu
UGljdHVyZVN1cHBvcnQubW0gKi87IH07CkBAIC05NzQsNiArOTc1LDcgQEAKIAkJRTM1NUE2MzIy
NjE1NzE4RjAwMUMxMTI5IC8qIFJvYmluSG9vZEhhc2hNYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NUE2MzEyNjE1NzE4RjAwMUMxMTI5IC8q
IFJvYmluSG9vZEhhc2hNYXAuY3BwICovOyB9OwogCQlFMzVCOTA4MjIzRjYwREQwMDAwMDExRkYg
LyogTG9jYWxpemVkRGV2aWNlTW9kZWwubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzVCOTA4MTIzRjYwREQwMDAwMDExRkYgLyogTG9jYWxpemVkRGV2
aWNlTW9kZWwubW0gKi87IH07CiAJCUUzNUZDN0IyMjJCODJBNzMwMEYzMkY5OCAvKiBKU0xvY2tU
YWtlc1dlYlRocmVhZExvY2subW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzVGQzdCMTIyQjgyQTZEMDBGMzJGOTggLyogSlNMb2NrVGFrZXNXZWJUaHJl
YWRMb2NrLm1tICovOyB9OworCQlFMzZCODdBMzI3NjIyMTg3MDA1OUQyRjkgLyogRW1iZWRkZWRG
aXhlZFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzZCODdBMjI3NjIyMTg2MDA1OUQyRjkgLyogRW1iZWRkZWRGaXhlZFZlY3Rvci5jcHAg
Ki87IH07CiAJCUUzNzNENzkxMUYyQ0YzNTIwMEM2RkFBRiAvKiBTaWduYWxzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTUzRjk1MUYyQ0YzMjEw
MEE3NkEyRSAvKiBTaWduYWxzLmNwcCAqLzsgfTsKIAkJRTM4QTBEMzUxRkQ1MENDMzAwRTk4QzhC
IC8qIFRocmVhZGluZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzhBMEQzNDFGRDUwQ0JDMDBFOThDOEIgLyogVGhyZWFkaW5nLmNwcCAqLzsgfTsK
IAkJRTM4RDY1Q0EyM0E0NUZBQTAwNjNENjlBIC8qIFBhY2tlZFJlZi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzhENjVDODIzQTQ1RkE5MDA2M0Q2
OUEgLyogUGFja2VkUmVmLmNwcCAqLzsgfTsKQEAgLTI4ODgsNiArMjg5MCw3IEBACiAJCUUxOTRF
MUJBMTc3RTUxNDUwMDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2Uu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTdG9wTG9hZGluZ0Zy
b21EaWRSZWNlaXZlUmVzcG9uc2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUx
OTRFMUJDMTc3RTUzNEEwMDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9u
c2UuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuaHRtbDsgcGF0aCA9IFN0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVSZXNwb25zZS5odG1s
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzAyQkRBOTI0MDRCOTIzMDA4NjUyNzcg
LyogQ29tcGFjdFJlZlB0clR1cGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENvbXBhY3RSZWZQdHJUdXBsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzMTZENDFGMjc2NDdBMDIwMDI4N0IxNiAvKiBSZWZDb3VudGVkRml4ZWRWZWN0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVmQ291bnRlZEZpeGVkVmVj
dG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyMTA1MTgyNjE5NzlGMzAw
MTU3QzY3IC8qIEZpeGVkVmVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEZpeGVkVmVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMy
NUM5MDYyM0UzODcwMjAwQkM3RDNCIC8qIFBpY3R1cmVJblBpY3R1cmVTdXBwb3J0Lm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gUGljdHVyZUluUGljdHVyZVN1cHBvcnQubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzMkI1NDkxMjI4MTBBQzAwMDhBRDcwMiAvKiBQYWNrZWQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUGFja2VkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTI4OTYsNiArMjg5OSw3IEBACiAJCUUzNTVBNjMxMjYxNTcxOEYwMDFDMTEyOSAvKiBS
b2Jpbkhvb2RIYXNoTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJvYmluSG9vZEhhc2hNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzVC
OTA4MTIzRjYwREQwMDAwMDExRkYgLyogTG9jYWxpemVkRGV2aWNlTW9kZWwubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBMb2NhbGl6ZWREZXZpY2VNb2RlbC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM1RkM3QjEyMkI4MkE2RDAwRjMyRjk4IC8qIEpTTG9ja1Rha2VzV2ViVGhy
ZWFkTG9jay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEpTTG9j
a1Rha2VzV2ViVGhyZWFkTG9jay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2
Qjg3QTIyNzYyMjE4NjAwNTlEMkY5IC8qIEVtYmVkZGVkRml4ZWRWZWN0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRW1iZWRkZWRGaXhlZFZlY3Rvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODg4ODcwMjBDOTA5ODEwMEU2MzJCQyAvKiBX
b3JrZXJQb29sLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtl
clBvb2wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhBMEQzNDFGRDUwQ0JD
MDBFOThDOEIgLyogVGhyZWFkaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFRocmVhZGluZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOEQ2
NUM4MjNBNDVGQTkwMDYzRDY5QSAvKiBQYWNrZWRSZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUGFja2VkUmVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTQ0ODMsNiArNDQ4Nyw3IEBACiAJCQkJN0FBMDIxQkExQUIwOUVBNzAwNTI5NTNGIC8q
IERhdGVNYXRoLmNwcCAqLywKIAkJCQkxQTM1MjRBOTFENjI3QkQ0MDAzMTcyOUIgLyogRGVsZXRl
ZEFkZHJlc3NPZk9wZXJhdG9yLmggKi8sCiAJCQkJRTRBNzU3RDMxNzhBRUE1QjAwQjVEN0E0IC8q
IERlcXVlLmNwcCAqLywKKwkJCQlFMzZCODdBMjI3NjIyMTg2MDA1OUQyRjkgLyogRW1iZWRkZWRG
aXhlZFZlY3Rvci5jcHAgKi8sCiAJCQkJMUFGN0IyMUQxRDZDRDEyRTAwOEMxMjZDIC8qIEVudW1U
cmFpdHMuY3BwICovLAogCQkJCUFEN0M0MzRDMUREMkE1NDcwMDI2ODg4QiAvKiBFeHBlY3RlZC5j
cHAgKi8sCiAJCQkJQTMxMDgyNzEyMUYyOTZFQzAwQzI4Qjk3IC8qIEZpbGVTeXN0ZW0uY3BwICov
LApAQCAtNDUyNSw2ICs0NTMwLDcgQEAKIAkJCQk1M0VDMjUzRjFFOTZCQzgwMDAwODMxQjkgLyog
UHJpb3JpdHlRdWV1ZS5jcHAgKi8sCiAJCQkJMEZDNkM0Q0IxNDEwMjdFMDAwNUI3RjBDIC8qIFJl
ZEJsYWNrVHJlZS5jcHAgKi8sCiAJCQkJOTNBNDI3QUExODBEQTI2NDAwQ0QyNEQ3IC8qIFJlZi5j
cHAgKi8sCisJCQkJRTMxNkQ0MUYyNzY0N0EwMjAwMjg3QjE2IC8qIFJlZkNvdW50ZWRGaXhlZFZl
Y3Rvci5jcHAgKi8sCiAJCQkJODZCRDE5OTcxQTJEQjA1QjAwNkRDRjBBIC8qIFJlZkNvdW50ZXIu
Y3BwICovLAogCQkJCTQ0MkJCRjY4MUM5MUNBRDkwMDE3MDg3RiAvKiBSZWZMb2dnZXIuY3BwICov
LAogCQkJCTkzQTQyN0FEMTgwREE2MEYwMENEMjRENyAvKiBSZWZMb2dnZXIuaCAqLywKQEAgLTUy
NjMsNiArNTI2OSw3IEBACiAJCQkJNUMyQzAxQTgyNzM0ODgzNjAwRjg5RDM3IC8qIENyb3NzVGhy
ZWFkQ29waWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUE5MUQwQTU5MEMwMEZFQkNG
MyAvKiBDU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERUFEMUQwQTU5MEMwMEZF
QkNGMyAvKiBEZXF1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzZCODdBMzI3NjIyMTg3MDA1
OUQyRjkgLyogRW1iZWRkZWRGaXhlZFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUY3
QjIxRjFENkNEMTREMDA4QzEyNkMgLyogRW51bVRyYWl0cy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBRDdDNDM0RDFERDJBNTRFMDAyNjg4OEIgLyogRXhwZWN0ZWQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTMxMDgyNzIyMUYyOTZGRjAwQzI4Qjk3IC8qIEZpbGVTeXN0ZW0uY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC01MzA0LDYgKzUzMTEsNyBAQAogCQkJCTUzRUMyNTQxMUU5NkZEODcwMDA4MzFC
OSAvKiBQcmlvcml0eVF1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjEzMUQwQTU5
MEMwMEZFQkNGMyAvKiBSZWRCbGFja1RyZWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RG
MTQxRDBBNTkwQzAwRkVCQ0YzIC8qIFJlZi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzE2RDQy
MDI3NjQ3QTAyMDAyODdCMTYgLyogUmVmQ291bnRlZEZpeGVkVmVjdG9yLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDODNERjE1MUQwQTU5MEMwMEZFQkNGMyAvKiBSZWZDb3VudGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdDODNERUQ3MUQwQTU5MEMwMEZFQkNGMyAvKiBSZWZMb2dnZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGMTYxRDBBNTkwQzAwRkVCQ0YzIC8qIFJlZlB0ci5j
cHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0VtYmVkZGVkRml4ZWRWZWN0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvRW1iZWRkZWRGaXhlZFZlY3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWE3YWI1MjRjYmRmMGExOGNj
Yzc0NmE2YzcwYTc2OWU2ZjBmMDhjMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0VtYmVkZGVkRml4ZWRWZWN0b3IuY3BwCkBAIC0wLDAgKzEsMjcyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiTW92ZU9ubHku
aCIKKyNpbmNsdWRlIDx3dGYvRW1iZWRkZWRGaXhlZFZlY3Rvci5oPgorCituYW1lc3BhY2UgVGVz
dFdlYktpdEFQSSB7CisKK1RFU1QoV1RGX0VtYmVkZGVkRml4ZWRWZWN0b3IsIEVtcHR5KQorewor
ICAgIGF1dG8gdmVjdG9yID0gRW1iZWRkZWRGaXhlZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0ZSgw
KTsKKyAgICBFWFBFQ1RfVFJVRSh2ZWN0b3ItPmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX0VRKDBV
LCB2ZWN0b3ItPnNpemUoKSk7Cit9CisKK1RFU1QoV1RGX0VtYmVkZGVkRml4ZWRWZWN0b3IsIEl0
ZXJhdG9yKQoreworICAgIGF1dG8gaW50VmVjdG9yID0gRW1iZWRkZWRGaXhlZFZlY3Rvcjx1bnNp
Z25lZD46OmNyZWF0ZSg0KTsKKyAgICBpbnRWZWN0b3IuZ2V0KClbMF0gPSAxMDsKKyAgICBpbnRW
ZWN0b3IuZ2V0KClbMV0gPSAxMTsKKyAgICBpbnRWZWN0b3IuZ2V0KClbMl0gPSAxMjsKKyAgICBp
bnRWZWN0b3IuZ2V0KClbM10gPSAxMzsKKworICAgIGF1dG8gaXQgPSBpbnRWZWN0b3ItPmJlZ2lu
KCk7CisgICAgYXV0byBlbmQgPSBpbnRWZWN0b3ItPmVuZCgpOworICAgIEVYUEVDVF9UUlVFKGVu
ZCAhPSBpdCk7CisKKyAgICBFWFBFQ1RfRVEoMTBVLCAqaXQpOworICAgICsraXQ7CisgICAgRVhQ
RUNUX0VRKDExVSwgKml0KTsKKyAgICArK2l0OworICAgIEVYUEVDVF9FUSgxMlUsICppdCk7Cisg
ICAgKytpdDsKKyAgICBFWFBFQ1RfRVEoMTNVLCAqaXQpOworICAgICsraXQ7CisKKyAgICBFWFBF
Q1RfVFJVRShlbmQgPT0gaXQpOworfQorCitURVNUKFdURl9FbWJlZGRlZEZpeGVkVmVjdG9yLCBP
dmVybG9hZGVkT3BlcmF0b3JBbXBlcnNhbmQpCit7CisgICAgc3RydWN0IFRlc3QgeworICAgIHBy
aXZhdGU6CisgICAgICAgIFRlc3QqIG9wZXJhdG9yJigpID0gZGVsZXRlOworICAgIH07CisKKyAg
ICBhdXRvIHZlY3RvciA9IEVtYmVkZGVkRml4ZWRWZWN0b3I8VGVzdD46OmNyZWF0ZSgxKTsKKyAg
ICB2ZWN0b3IuZ2V0KClbMF0gPSBUZXN0KCk7Cit9CisKK1RFU1QoV1RGX0VtYmVkZGVkRml4ZWRW
ZWN0b3IsIENvcHkpCit7CisgICAgYXV0byB2ZWMxID0gRW1iZWRkZWRGaXhlZFZlY3Rvcjx1bnNp
Z25lZD46OmNyZWF0ZSgzKTsKKyAgICB2ZWMxLmdldCgpWzBdID0gMDsKKyAgICB2ZWMxLmdldCgp
WzFdID0gMTsKKyAgICB2ZWMxLmdldCgpWzJdID0gMjsKKworICAgIGF1dG8gdmVjMiA9IEVtYmVk
ZGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+OjpjcmVhdGUodmVjMS0+YmVnaW4oKSwgdmVjMS0+ZW5k
KCkpOworICAgIEVYUEVDVF9FUSgzVSwgdmVjMS0+c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoM1Us
IHZlYzItPnNpemUoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZlYzEtPnNpemUo
KTsgKytpKSB7CisgICAgICAgIEVYUEVDVF9FUShpLCB2ZWMxLmdldCgpW2ldKTsKKyAgICAgICAg
RVhQRUNUX0VRKGksIHZlYzIuZ2V0KClbaV0pOworICAgIH0KKyAgICB2ZWMxLmdldCgpWzJdID0g
NDI7CisgICAgRVhQRUNUX0VRKDQyVSwgdmVjMS5nZXQoKVsyXSk7CisgICAgRVhQRUNUX0VRKDJV
LCB2ZWMyLmdldCgpWzJdKTsKK30KKworVEVTVChXVEZfRW1iZWRkZWRGaXhlZFZlY3RvciwgQ29w
eVZlY3RvcikKK3sKKyAgICBhdXRvIHZlYzEgPSBWZWN0b3I8dW5zaWduZWQ+Ojpmcm9tKDAsIDEs
IDIsIDMpOworICAgIEVYUEVDVF9FUSg0VSwgdmVjMS5zaXplKCkpOworICAgIGF1dG8gdmVjMiA9
IEVtYmVkZGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+OjpjcmVhdGVGcm9tVmVjdG9yKHZlYzEpOwor
ICAgIEVYUEVDVF9FUSg0VSwgdmVjMS5zaXplKCkpOworICAgIEVYUEVDVF9FUSg0VSwgdmVjMi0+
c2l6ZSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmVjMS5zaXplKCk7ICsraSkg
eworICAgICAgICBFWFBFQ1RfRVEoaSwgdmVjMVtpXSk7CisgICAgICAgIEVYUEVDVF9FUShpLCB2
ZWMyLmdldCgpW2ldKTsKKyAgICB9CisgICAgdmVjMVsyXSA9IDQyOworICAgIEVYUEVDVF9FUSg0
MlUsIHZlYzFbMl0pOworICAgIEVYUEVDVF9FUSgyVSwgdmVjMi5nZXQoKVsyXSk7Cit9CisKK1RF
U1QoV1RGX0VtYmVkZGVkRml4ZWRWZWN0b3IsIE1vdmVWZWN0b3IpCit7CisgICAgYXV0byB2ZWMx
ID0gVmVjdG9yPE1vdmVPbmx5Pjo6ZnJvbShNb3ZlT25seSgwKSwgTW92ZU9ubHkoMSksIE1vdmVP
bmx5KDIpLCBNb3ZlT25seSgzKSk7CisgICAgRVhQRUNUX0VRKDRVLCB2ZWMxLnNpemUoKSk7Cisg
ICAgYXV0byB2ZWMyID0gRW1iZWRkZWRGaXhlZFZlY3RvcjxNb3ZlT25seT46OmNyZWF0ZUZyb21W
ZWN0b3IoV1RGTW92ZSh2ZWMxKSk7CisgICAgRVhQRUNUX0VRKDBVLCB2ZWMxLnNpemUoKSk7Cisg
ICAgRVhQRUNUX0VRKDRVLCB2ZWMyLT5zaXplKCkpOworICAgIGZvciAodW5zaWduZWQgaW5kZXgg
PSAwOyBpbmRleCA8IHZlYzItPnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgRVhQRUNUX0VRKGlu
ZGV4LCB2ZWMyLmdldCgpW2luZGV4XS52YWx1ZSgpKTsKK30KKworVEVTVChXVEZfRW1iZWRkZWRG
aXhlZFZlY3RvciwgSXRlcmF0b3JGb3IpCit7CisgICAgYXV0byB2ZWMxID0gRW1iZWRkZWRGaXhl
ZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0ZSgzKTsKKyAgICB2ZWMxLmdldCgpWzBdID0gMDsKKyAg
ICB2ZWMxLmdldCgpWzFdID0gMTsKKyAgICB2ZWMxLmdldCgpWzJdID0gMjsKKworICAgIHVuc2ln
bmVkIGluZGV4ID0gMDsKKyAgICBmb3IgKGF1dG8gaXRlciA9IHZlYzEtPmJlZ2luKCk7IGl0ZXIg
IT0gdmVjMS0+ZW5kKCk7ICsraXRlcikgeworICAgICAgICBFWFBFQ1RfRVEoaW5kZXgsICppdGVy
KTsKKyAgICAgICAgKytpbmRleDsKKyAgICB9Cit9CisKK1RFU1QoV1RGX0VtYmVkZGVkRml4ZWRW
ZWN0b3IsIFJldmVyc2UpCit7CisgICAgYXV0byB2ZWMxID0gRW1iZWRkZWRGaXhlZFZlY3Rvcjx1
bnNpZ25lZD46OmNyZWF0ZSgzKTsKKyAgICB2ZWMxLmdldCgpWzBdID0gMDsKKyAgICB2ZWMxLmdl
dCgpWzFdID0gMTsKKyAgICB2ZWMxLmdldCgpWzJdID0gMjsKKworICAgIHVuc2lnbmVkIGluZGV4
ID0gMDsKKyAgICBmb3IgKGF1dG8gaXRlciA9IHZlYzEtPnJiZWdpbigpOyBpdGVyICE9IHZlYzEt
PnJlbmQoKTsgKytpdGVyKSB7CisgICAgICAgICsraW5kZXg7CisgICAgICAgIEVYUEVDVF9FUSgz
VSAtIGluZGV4LCAqaXRlcik7CisgICAgfQorfQorCitURVNUKFdURl9FbWJlZGRlZEZpeGVkVmVj
dG9yLCBGaWxsKQoreworICAgIGF1dG8gdmVjMSA9IEVtYmVkZGVkRml4ZWRWZWN0b3I8dW5zaWdu
ZWQ+OjpjcmVhdGUoMyk7CisgICAgdmVjMS0+ZmlsbCg0Mik7CisKKyAgICBmb3IgKGF1dG8mIHZh
bHVlIDogdmVjMS5nZXQoKSkKKyAgICAgICAgRVhQRUNUX0VRKDQyVSwgdmFsdWUpOworfQorCitz
dHJ1Y3QgRGVzdHJ1Y3Rvck9ic2VydmVyIHsKKyAgICBEZXN0cnVjdG9yT2JzZXJ2ZXIoKSA9IGRl
ZmF1bHQ7CisKKyAgICBEZXN0cnVjdG9yT2JzZXJ2ZXIoYm9vbCogZGVzdHJ1Y3RlZCkKKyAgICAg
ICAgOiBkZXN0cnVjdGVkKGRlc3RydWN0ZWQpCisgICAgeworICAgIH0KKworICAgIH5EZXN0cnVj
dG9yT2JzZXJ2ZXIoKQorICAgIHsKKyAgICAgICAgaWYgKGRlc3RydWN0ZWQpCisgICAgICAgICAg
ICAqZGVzdHJ1Y3RlZCA9IHRydWU7CisgICAgfQorCisgICAgRGVzdHJ1Y3Rvck9ic2VydmVyKERl
c3RydWN0b3JPYnNlcnZlciYmIG90aGVyKQorICAgICAgICA6IGRlc3RydWN0ZWQob3RoZXIuZGVz
dHJ1Y3RlZCkKKyAgICB7CisgICAgICAgIG90aGVyLmRlc3RydWN0ZWQgPSBudWxscHRyOworICAg
IH0KKworICAgIERlc3RydWN0b3JPYnNlcnZlciYgb3BlcmF0b3I9KERlc3RydWN0b3JPYnNlcnZl
ciYmIG90aGVyKQorICAgIHsKKyAgICAgICAgZGVzdHJ1Y3RlZCA9IG90aGVyLmRlc3RydWN0ZWQ7
CisgICAgICAgIG90aGVyLmRlc3RydWN0ZWQgPSBudWxscHRyOworICAgICAgICByZXR1cm4gKnRo
aXM7CisgICAgfQorCisgICAgYm9vbCogZGVzdHJ1Y3RlZCB7IG51bGxwdHIgfTsKK307CisKK1RF
U1QoV1RGX0VtYmVkZGVkRml4ZWRWZWN0b3IsIERlc3RydWN0b3IpCit7CisgICAgVmVjdG9yPGJv
b2w+IGZsYWdzKDMsIGZhbHNlKTsKKyAgICB7CisgICAgICAgIGF1dG8gdmVjdG9yID0gRW1iZWRk
ZWRGaXhlZFZlY3RvcjxEZXN0cnVjdG9yT2JzZXJ2ZXI+OjpjcmVhdGUoZmxhZ3Muc2l6ZSgpKTsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZsYWdzLnNpemUoKTsgKytpKQorICAg
ICAgICAgICAgdmVjdG9yLmdldCgpW2ldID0gRGVzdHJ1Y3Rvck9ic2VydmVyKCZmbGFnc1tpXSk7
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmbGFncy5zaXplKCk7ICsraSkKKyAg
ICAgICAgICAgIEVYUEVDVF9GQUxTRShmbGFnc1tpXSk7CisgICAgfQorICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBmbGFncy5zaXplKCk7ICsraSkKKyAgICAgICAgRVhQRUNUX1RSVUUoZmxh
Z3NbaV0pOworfQorCitURVNUKFdURl9FbWJlZGRlZEZpeGVkVmVjdG9yLCBEZXN0cnVjdG9yQWZ0
ZXJNb3ZlKQoreworICAgIFZlY3Rvcjxib29sPiBmbGFncygzLCBmYWxzZSk7CisgICAgeworICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8RW1iZWRkZWRGaXhlZFZlY3RvcjxEZXN0cnVjdG9yT2JzZXJ2
ZXI+PiBvdXRlclZlY3RvcjsKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byB2ZWN0b3IgPSBF
bWJlZGRlZEZpeGVkVmVjdG9yPERlc3RydWN0b3JPYnNlcnZlcj46OmNyZWF0ZShmbGFncy5zaXpl
KCkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZsYWdzLnNpemUoKTsg
KytpKQorICAgICAgICAgICAgICAgIHZlY3Rvci5nZXQoKVtpXSA9IERlc3RydWN0b3JPYnNlcnZl
cigmZmxhZ3NbaV0pOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZsYWdz
LnNpemUoKTsgKytpKQorICAgICAgICAgICAgICAgIEVYUEVDVF9GQUxTRShmbGFnc1tpXSk7Cisg
ICAgICAgICAgICBvdXRlclZlY3RvciA9IHZlY3Rvci5tb3ZlVG9VbmlxdWVQdHIoKTsKKyAgICAg
ICAgfQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmxhZ3Muc2l6ZSgpOyArK2kp
CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoZmxhZ3NbaV0pOworICAgIH0KKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgZmxhZ3Muc2l6ZSgpOyArK2kpCisgICAgICAgIEVYUEVDVF9UUlVF
KGZsYWdzW2ldKTsKK30KKworVEVTVChXVEZfRW1iZWRkZWRGaXhlZFZlY3RvciwgQmFzaWMpCit7
CisgICAgc3RkOjphcnJheTx1bnNpZ25lZCwgND4gYXJyYXkgeyB7CisgICAgICAgIDAsIDEsIDIs
IDMKKyAgICB9IH07CisgICAgeworICAgICAgICBhdXRvIHZlY3RvciA9IEVtYmVkZGVkRml4ZWRW
ZWN0b3I8dW5zaWduZWQ+OjpjcmVhdGUoYXJyYXkuYmVnaW4oKSwgYXJyYXkuZW5kKCkpOworICAg
ICAgICBFWFBFQ1RfRVEoNFUsIHZlY3Rvci0+c2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDBV
LCB2ZWN0b3ItPmF0KDApKTsKKyAgICAgICAgRVhQRUNUX0VRKDFVLCB2ZWN0b3ItPmF0KDEpKTsK
KyAgICAgICAgRVhQRUNUX0VRKDJVLCB2ZWN0b3ItPmF0KDIpKTsKKyAgICAgICAgRVhQRUNUX0VR
KDNVLCB2ZWN0b3ItPmF0KDMpKTsKKyAgICB9Cit9CisKK1RFU1QoV1RGX0VtYmVkZGVkRml4ZWRW
ZWN0b3IsIENsb25lKQoreworICAgIHN0ZDo6YXJyYXk8dW5zaWduZWQsIDQ+IGFycmF5IHsgewor
ICAgICAgICAwLCAxLCAyLCAzCisgICAgfSB9OworICAgIHsKKyAgICAgICAgYXV0byB2ZWN0b3Ig
PSBFbWJlZGRlZEZpeGVkVmVjdG9yPHVuc2lnbmVkPjo6Y3JlYXRlKGFycmF5LmJlZ2luKCksIGFy
cmF5LmVuZCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDRVLCB2ZWN0b3ItPnNpemUoKSk7CisgICAg
ICAgIEVYUEVDVF9FUSgwVSwgdmVjdG9yLT5hdCgwKSk7CisgICAgICAgIEVYUEVDVF9FUSgxVSwg
dmVjdG9yLT5hdCgxKSk7CisgICAgICAgIEVYUEVDVF9FUSgyVSwgdmVjdG9yLT5hdCgyKSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgzVSwgdmVjdG9yLT5hdCgzKSk7CisKKyAgICAgICAgYXV0byBjbG9u
ZWQgPSB2ZWN0b3ItPmNsb25lKCk7CisgICAgICAgIEVYUEVDVF9FUSg0VSwgY2xvbmVkLT5zaXpl
KCkpOworICAgICAgICBFWFBFQ1RfRVEoMFUsIGNsb25lZC0+YXQoMCkpOworICAgICAgICBFWFBF
Q1RfRVEoMVUsIGNsb25lZC0+YXQoMSkpOworICAgICAgICBFWFBFQ1RfRVEoMlUsIGNsb25lZC0+
YXQoMikpOworICAgICAgICBFWFBFQ1RfRVEoM1UsIGNsb25lZC0+YXQoMykpOworICAgIH0KK30K
KworVEVTVChXVEZfRW1iZWRkZWRGaXhlZFZlY3RvciwgRXF1YWwpCit7CisgICAgYXV0byB2ZWMx
ID0gRW1iZWRkZWRGaXhlZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0ZSgxMCk7CisgICAgYXV0byB2
ZWMyID0gRW1iZWRkZWRGaXhlZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0ZSgxMCk7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IDEwOyArK2kpIHsKKyAgICAgICAgdmVjMS5nZXQoKVtpXSA9
IGk7CisgICAgICAgIHZlYzIuZ2V0KClbaV0gPSBpOworICAgIH0KKyAgICBFWFBFQ1RfRVEodmVj
MS5nZXQoKSwgdmVjMi5nZXQoKSk7CisgICAgdmVjMS5nZXQoKVswXSA9IDQyOworICAgIEVYUEVD
VF9ORSh2ZWMxLmdldCgpLCB2ZWMyLmdldCgpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRml4ZWRWZWN0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvRml4ZWRWZWN0b3IuY3BwCmluZGV4IDE2MTUzZGFjOTcyNWQwYjU4ZGJm
ZmNjYjQ2ODI2ODc5NDc4MDE1NWEuLmQyZWVjYmI5NTBkODlkZTFjNjVkYWFkNTk5NDRlMjIyNzFh
ZWJlMjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpeGVkVmVj
dG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaXhlZFZlY3Rvci5j
cHAKQEAgLTg2LDE1ICs4NiwxNSBAQCBURVNUKFdURl9GaXhlZFZlY3RvciwgQ29weSkKICAgICB2
ZWMxWzJdID0gMjsKIAogICAgIEZpeGVkVmVjdG9yPHVuc2lnbmVkPiB2ZWMyKHZlYzEpOwotICAg
IEVYUEVDVF9FUSh2ZWMxLnNpemUoKSwgM1UpOwotICAgIEVYUEVDVF9FUSh2ZWMyLnNpemUoKSwg
M1UpOworICAgIEVYUEVDVF9FUSgzVSwgdmVjMS5zaXplKCkpOworICAgIEVYUEVDVF9FUSgzVSwg
dmVjMi5zaXplKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2ZWMxLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIEVYUEVDVF9FUSh2ZWMxW2ldLCBpKTsKLSAgICAgICAgRVhQRUNUX0VR
KHZlYzJbaV0sIGkpOworICAgICAgICBFWFBFQ1RfRVEoaSwgdmVjMVtpXSk7CisgICAgICAgIEVY
UEVDVF9FUShpLCB2ZWMyW2ldKTsKICAgICB9CiAgICAgdmVjMVsyXSA9IDQyOwotICAgIEVYUEVD
VF9FUSh2ZWMxWzJdLCA0MlUpOwotICAgIEVYUEVDVF9FUSh2ZWMyWzJdLCAyVSk7CisgICAgRVhQ
RUNUX0VRKDQyVSwgdmVjMVsyXSk7CisgICAgRVhQRUNUX0VRKDJVLCB2ZWMyWzJdKTsKIH0KIAog
VEVTVChXVEZfRml4ZWRWZWN0b3IsIENvcHlBc3NpZ24pCkBAIC0xMDYsMTUgKzEwNiwxNSBAQCBU
RVNUKFdURl9GaXhlZFZlY3RvciwgQ29weUFzc2lnbikKIAogICAgIEZpeGVkVmVjdG9yPHVuc2ln
bmVkPiB2ZWMyOwogICAgIHZlYzIgPSB2ZWMxOwotICAgIEVYUEVDVF9FUSh2ZWMxLnNpemUoKSwg
M1UpOwotICAgIEVYUEVDVF9FUSh2ZWMyLnNpemUoKSwgM1UpOworICAgIEVYUEVDVF9FUSgzVSwg
dmVjMS5zaXplKCkpOworICAgIEVYUEVDVF9FUSgzVSwgdmVjMi5zaXplKCkpOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCB2ZWMxLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIEVYUEVDVF9F
USh2ZWMxW2ldLCBpKTsKLSAgICAgICAgRVhQRUNUX0VRKHZlYzJbaV0sIGkpOworICAgICAgICBF
WFBFQ1RfRVEoaSwgdmVjMVtpXSk7CisgICAgICAgIEVYUEVDVF9FUShpLCB2ZWMyW2ldKTsKICAg
ICB9CiAgICAgdmVjMVsyXSA9IDQyOwotICAgIEVYUEVDVF9FUSh2ZWMxWzJdLCA0MlUpOwotICAg
IEVYUEVDVF9FUSh2ZWMyWzJdLCAyVSk7CisgICAgRVhQRUNUX0VRKDQyVSwgdmVjMVsyXSk7Cisg
ICAgRVhQRUNUX0VRKDJVLCB2ZWMyWzJdKTsKIH0KIAogVEVTVChXVEZfRml4ZWRWZWN0b3IsIE1v
dmUpCkBAIC0xMjUsMTAgKzEyNSwxMCBAQCBURVNUKFdURl9GaXhlZFZlY3RvciwgTW92ZSkKICAg
ICB2ZWMxWzJdID0gMjsKIAogICAgIEZpeGVkVmVjdG9yPHVuc2lnbmVkPiB2ZWMyKFdURk1vdmUo
dmVjMSkpOwotICAgIEVYUEVDVF9FUSh2ZWMxLnNpemUoKSwgMFUpOwotICAgIEVYUEVDVF9FUSh2
ZWMyLnNpemUoKSwgM1UpOworICAgIEVYUEVDVF9FUSgwVSwgdmVjMS5zaXplKCkpOworICAgIEVY
UEVDVF9FUSgzVSwgdmVjMi5zaXplKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2
ZWMyLnNpemUoKTsgKytpKQotICAgICAgICBFWFBFQ1RfRVEodmVjMltpXSwgaSk7CisgICAgICAg
IEVYUEVDVF9FUShpLCB2ZWMyW2ldKTsKIH0KIAogVEVTVChXVEZfRml4ZWRWZWN0b3IsIE1vdmVB
c3NpZ24pCkBAIC0xNDAsMjEgKzE0MCwyMSBAQCBURVNUKFdURl9GaXhlZFZlY3RvciwgTW92ZUFz
c2lnbikKIAogICAgIEZpeGVkVmVjdG9yPHVuc2lnbmVkPiB2ZWMyOwogICAgIHZlYzIgPSBXVEZN
b3ZlKHZlYzEpOwotICAgIEVYUEVDVF9FUSh2ZWMxLnNpemUoKSwgMFUpOwotICAgIEVYUEVDVF9F
USh2ZWMyLnNpemUoKSwgM1UpOworICAgIEVYUEVDVF9FUSgwVSwgdmVjMS5zaXplKCkpOworICAg
IEVYUEVDVF9FUSgzVSwgdmVjMi5zaXplKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCB2ZWMyLnNpemUoKTsgKytpKQotICAgICAgICBFWFBFQ1RfRVEodmVjMltpXSwgaSk7CisgICAg
ICAgIEVYUEVDVF9FUShpLCB2ZWMyW2ldKTsKIH0KIAogVEVTVChXVEZfRml4ZWRWZWN0b3IsIE1v
dmVWZWN0b3IpCiB7CiAgICAgYXV0byB2ZWMxID0gVmVjdG9yPE1vdmVPbmx5Pjo6ZnJvbShNb3Zl
T25seSgwKSwgTW92ZU9ubHkoMSksIE1vdmVPbmx5KDIpLCBNb3ZlT25seSgzKSk7Ci0gICAgRVhQ
RUNUX0VRKHZlYzEuc2l6ZSgpLCA0VSk7CisgICAgRVhQRUNUX0VRKDRVLCB2ZWMxLnNpemUoKSk7
CiAgICAgRml4ZWRWZWN0b3I8TW92ZU9ubHk+IHZlYzIoV1RGTW92ZSh2ZWMxKSk7Ci0gICAgRVhQ
RUNUX0VRKHZlYzEuc2l6ZSgpLCAwVSk7Ci0gICAgRVhQRUNUX0VRKHZlYzIuc2l6ZSgpLCA0VSk7
CisgICAgRVhQRUNUX0VRKDBVLCB2ZWMxLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDRVLCB2ZWMy
LnNpemUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgdmVjMi5zaXpl
KCk7ICsraW5kZXgpCi0gICAgICAgIEVYUEVDVF9FUSh2ZWMyW2luZGV4XS52YWx1ZSgpLCBpbmRl
eCk7CisgICAgICAgIEVYUEVDVF9FUShpbmRleCwgdmVjMltpbmRleF0udmFsdWUoKSk7CiB9CiAK
IFRFU1QoV1RGX0ZpeGVkVmVjdG9yLCBNb3ZlQXNzaWduVmVjdG9yKQpAQCAtMTYyLDEzICsxNjIs
MTMgQEAgVEVTVChXVEZfRml4ZWRWZWN0b3IsIE1vdmVBc3NpZ25WZWN0b3IpCiAgICAgRml4ZWRW
ZWN0b3I8TW92ZU9ubHk+IHZlYzI7CiAgICAgewogICAgICAgICBhdXRvIHZlYzEgPSBWZWN0b3I8
TW92ZU9ubHk+Ojpmcm9tKE1vdmVPbmx5KDApLCBNb3ZlT25seSgxKSwgTW92ZU9ubHkoMiksIE1v
dmVPbmx5KDMpKTsKLSAgICAgICAgRVhQRUNUX0VRKHZlYzEuc2l6ZSgpLCA0VSk7CisgICAgICAg
IEVYUEVDVF9FUSg0VSwgdmVjMS5zaXplKCkpOwogICAgICAgICB2ZWMyID0gV1RGTW92ZSh2ZWMx
KTsKLSAgICAgICAgRVhQRUNUX0VRKHZlYzEuc2l6ZSgpLCAwVSk7CisgICAgICAgIEVYUEVDVF9F
USgwVSwgdmVjMS5zaXplKCkpOwogICAgIH0KLSAgICBFWFBFQ1RfRVEodmVjMi5zaXplKCksIDRV
KTsKKyAgICBFWFBFQ1RfRVEoNFUsIHZlYzIuc2l6ZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGlu
ZGV4ID0gMDsgaW5kZXggPCB2ZWMyLnNpemUoKTsgKytpbmRleCkKLSAgICAgICAgRVhQRUNUX0VR
KHZlYzJbaW5kZXhdLnZhbHVlKCksIGluZGV4KTsKKyAgICAgICAgRVhQRUNUX0VRKGluZGV4LCB2
ZWMyW2luZGV4XS52YWx1ZSgpKTsKIH0KIAogVEVTVChXVEZfRml4ZWRWZWN0b3IsIFN3YXApCkBA
IC0xODAsMTAgKzE4MCwxMCBAQCBURVNUKFdURl9GaXhlZFZlY3RvciwgU3dhcCkKIAogICAgIEZp
eGVkVmVjdG9yPHVuc2lnbmVkPiB2ZWMyOwogICAgIHZlYzIuc3dhcCh2ZWMxKTsKLSAgICBFWFBF
Q1RfRVEodmVjMS5zaXplKCksIDBVKTsKLSAgICBFWFBFQ1RfRVEodmVjMi5zaXplKCksIDNVKTsK
KyAgICBFWFBFQ1RfRVEoMFUsIHZlYzEuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoM1UsIHZlYzIu
c2l6ZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmVjMi5zaXplKCk7ICsraSkK
LSAgICAgICAgRVhQRUNUX0VRKHZlYzJbaV0sIGkpOworICAgICAgICBFWFBFQ1RfRVEoaSwgdmVj
MltpXSk7CiB9CiAKIFRFU1QoV1RGX0ZpeGVkVmVjdG9yLCBJdGVyYXRvckZvcikKQEAgLTE5NSw3
ICsxOTUsNyBAQCBURVNUKFdURl9GaXhlZFZlY3RvciwgSXRlcmF0b3JGb3IpCiAKICAgICB1bnNp
Z25lZCBpbmRleCA9IDA7CiAgICAgZm9yIChhdXRvIGl0ZXIgPSB2ZWMxLmJlZ2luKCk7IGl0ZXIg
IT0gdmVjMS5lbmQoKTsgKytpdGVyKSB7Ci0gICAgICAgIEVYUEVDVF9FUSgqaXRlciwgaW5kZXgp
OworICAgICAgICBFWFBFQ1RfRVEoaW5kZXgsICppdGVyKTsKICAgICAgICAgKytpbmRleDsKICAg
ICB9CiB9CkBAIC0yMTAsNyArMjEwLDcgQEAgVEVTVChXVEZfRml4ZWRWZWN0b3IsIFJldmVyc2Up
CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgIGZvciAoYXV0byBpdGVyID0gdmVjMS5yYmVn
aW4oKTsgaXRlciAhPSB2ZWMxLnJlbmQoKTsgKytpdGVyKSB7CiAgICAgICAgICsraW5kZXg7Ci0g
ICAgICAgIEVYUEVDVF9FUSgqaXRlciwgM1UgLSBpbmRleCk7CisgICAgICAgIEVYUEVDVF9FUSgz
VSAtIGluZGV4LCAqaXRlcik7CiAgICAgfQogfQogCkBAIC0yMjAsNyArMjIwLDcgQEAgVEVTVChX
VEZfRml4ZWRWZWN0b3IsIEZpbGwpCiAgICAgdmVjMS5maWxsKDQyKTsKIAogICAgIGZvciAoYXV0
byYgdmFsdWUgOiB2ZWMxKQotICAgICAgICBFWFBFQ1RfRVEodmFsdWUsIDQyVSk7CisgICAgICAg
IEVYUEVDVF9FUSg0MlUsIHZhbHVlKTsKIH0KIAogc3RydWN0IERlc3RydWN0b3JPYnNlcnZlciB7
CkBAIC0yOTMsMTQgKzI5MywxNCBAQCBURVNUKFdURl9GaXhlZFZlY3RvciwgTW92ZUtlZXBzRGF0
YSkKICAgICAgICAgRml4ZWRWZWN0b3I8dW5zaWduZWQ+IHZlYzEoMyk7CiAgICAgICAgIGF1dG8q
IGRhdGExID0gdmVjMS5kYXRhKCk7CiAgICAgICAgIEZpeGVkVmVjdG9yPHVuc2lnbmVkPiB2ZWMy
KFdURk1vdmUodmVjMSkpOwotICAgICAgICBFWFBFQ1RfRVEodmVjMi5kYXRhKCksIGRhdGExKTsK
KyAgICAgICAgRVhQRUNUX0VRKGRhdGExLCB2ZWMyLmRhdGEoKSk7CiAgICAgfQogICAgIHsKICAg
ICAgICAgRml4ZWRWZWN0b3I8dW5zaWduZWQ+IHZlYzEoMyk7CiAgICAgICAgIGF1dG8qIGRhdGEx
ID0gdmVjMS5kYXRhKCk7CiAgICAgICAgIEZpeGVkVmVjdG9yPHVuc2lnbmVkPiB2ZWMyOwogICAg
ICAgICB2ZWMyID0gV1RGTW92ZSh2ZWMxKTsKLSAgICAgICAgRVhQRUNUX0VRKHZlYzIuZGF0YSgp
LCBkYXRhMSk7CisgICAgICAgIEVYUEVDVF9FUShkYXRhMSwgdmVjMi5kYXRhKCkpOwogICAgIH0K
IH0KIApAQCAtMzExLDggKzMxMSw4IEBAIFRFU1QoV1RGX0ZpeGVkVmVjdG9yLCBNb3ZlS2VlcHNE
YXRhTmVzdGVkKQogICAgICAgICB2ZWMxLmFwcGVuZChGaXhlZFZlY3Rvcjx1bnNpZ25lZD4oMykp
OwogICAgICAgICBhdXRvKiBkYXRhMSA9IHZlYzFbMF0uZGF0YSgpOwogICAgICAgICBGaXhlZFZl
Y3RvcjxGaXhlZFZlY3Rvcjx1bnNpZ25lZD4+IHZlYzIoV1RGTW92ZSh2ZWMxKSk7Ci0gICAgICAg
IEVYUEVDVF9FUSh2ZWMyLnNpemUoKSwgMVUpOwotICAgICAgICBFWFBFQ1RfRVEodmVjMlswXS5k
YXRhKCksIGRhdGExKTsKKyAgICAgICAgRVhQRUNUX0VRKDFVLCB2ZWMyLnNpemUoKSk7CisgICAg
ICAgIEVYUEVDVF9FUShkYXRhMSwgdmVjMlswXS5kYXRhKCkpOwogICAgIH0KICAgICB7CiAgICAg
ICAgIFZlY3RvcjxGaXhlZFZlY3Rvcjx1bnNpZ25lZD4+IHZlYzE7CkBAIC0zMjAsOCArMzIwLDM4
IEBAIFRFU1QoV1RGX0ZpeGVkVmVjdG9yLCBNb3ZlS2VlcHNEYXRhTmVzdGVkKQogICAgICAgICBh
dXRvKiBkYXRhMSA9IHZlYzFbMF0uZGF0YSgpOwogICAgICAgICBGaXhlZFZlY3RvcjxGaXhlZFZl
Y3Rvcjx1bnNpZ25lZD4+IHZlYzI7CiAgICAgICAgIHZlYzIgPSBXVEZNb3ZlKHZlYzEpOwotICAg
ICAgICBFWFBFQ1RfRVEodmVjMi5zaXplKCksIDFVKTsKLSAgICAgICAgRVhQRUNUX0VRKHZlYzJb
MF0uZGF0YSgpLCBkYXRhMSk7CisgICAgICAgIEVYUEVDVF9FUSgxVSwgdmVjMi5zaXplKCkpOwor
ICAgICAgICBFWFBFQ1RfRVEoZGF0YTEsIHZlYzJbMF0uZGF0YSgpKTsKKyAgICB9Cit9CisKK1RF
U1QoV1RGX0ZpeGVkVmVjdG9yLCBPZmZzZXQpCit7CisgICAgRVhQRUNUX0VRKDAsIEZpeGVkVmVj
dG9yPHVuc2lnbmVkPjo6b2Zmc2V0T2ZTdG9yYWdlKCkpOworICAgIEVYUEVDVF9FUSg0LCBGaXhl
ZFZlY3Rvcjx1bnNpZ25lZD46OlN0b3JhZ2U6Om9mZnNldE9mRGF0YSgpKTsKKyAgICBFWFBFQ1Rf
RVEoMCwgRml4ZWRWZWN0b3I8dm9pZCo+OjpvZmZzZXRPZlN0b3JhZ2UoKSk7CisgICAgRVhQRUNU
X0VRKHNpemVvZih2b2lkKiksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihGaXhlZFZlY3Rvcjx2b2lk
Kj46OlN0b3JhZ2U6Om9mZnNldE9mRGF0YSgpKSk7Cit9CisKK1RFU1QoV1RGX0ZpeGVkVmVjdG9y
LCBFcXVhbCkKK3sKKyAgICB7CisgICAgICAgIEZpeGVkVmVjdG9yPHVuc2lnbmVkPiB2ZWMxKDEw
KTsKKyAgICAgICAgRml4ZWRWZWN0b3I8dW5zaWduZWQ+IHZlYzIoMTApOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgMTA7ICsraSkgeworICAgICAgICAgICAgdmVjMVtpXSA9IGk7
CisgICAgICAgICAgICB2ZWMyW2ldID0gaTsKKyAgICAgICAgfQorICAgICAgICBFWFBFQ1RfRVEo
dmVjMiwgdmVjMSk7CisgICAgICAgIHZlYzFbMF0gPSA0MjsKKyAgICAgICAgRVhQRUNUX05FKHZl
YzEsIHZlYzIpOworICAgIH0KKyAgICB7CisgICAgICAgIEZpeGVkVmVjdG9yPHVuc2lnbmVkPiB2
ZWMxOworICAgICAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVjMjsKKyAgICAgICAgRml4ZWRW
ZWN0b3I8dW5zaWduZWQ+IHZlYzMoMCk7CisgICAgICAgIEVYUEVDVF9FUSh2ZWMyLCB2ZWMxKTsK
KyAgICAgICAgRVhQRUNUX0VRKHZlYzMsIHZlYzEpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmQ291bnRlZEZpeGVkVmVjdG9yLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZWRGaXhlZFZlY3Rvci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTJhOTQwZWUwODljY2MxNjJmODAyM2VjMGIyZjE5Y2QxY2M4MjNhZAotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZWRG
aXhlZFZlY3Rvci5jcHAKQEAgLTAsMCArMSwyNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpbmNsdWRlICJNb3ZlT25seS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkRml4ZWRWZWN0b3IuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKFdU
Rl9SZWZDb3VudGVkRml4ZWRWZWN0b3IsIEVtcHR5KQoreworICAgIGF1dG8gdmVjdG9yID0gUmVm
Q291bnRlZEZpeGVkVmVjdG9yPHVuc2lnbmVkPjo6Y3JlYXRlKDApOworICAgIEVYUEVDVF9UUlVF
KHZlY3Rvci0+aXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfRVEoMFUsIHZlY3Rvci0+c2l6ZSgpKTsK
K30KKworVEVTVChXVEZfUmVmQ291bnRlZEZpeGVkVmVjdG9yLCBJdGVyYXRvcikKK3sKKyAgICBh
dXRvIGludFZlY3RvciA9IFJlZkNvdW50ZWRGaXhlZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0ZSg0
KTsKKyAgICBpbnRWZWN0b3IuZ2V0KClbMF0gPSAxMDsKKyAgICBpbnRWZWN0b3IuZ2V0KClbMV0g
PSAxMTsKKyAgICBpbnRWZWN0b3IuZ2V0KClbMl0gPSAxMjsKKyAgICBpbnRWZWN0b3IuZ2V0KClb
M10gPSAxMzsKKworICAgIGF1dG8gaXQgPSBpbnRWZWN0b3ItPmJlZ2luKCk7CisgICAgYXV0byBl
bmQgPSBpbnRWZWN0b3ItPmVuZCgpOworICAgIEVYUEVDVF9UUlVFKGVuZCAhPSBpdCk7CisKKyAg
ICBFWFBFQ1RfRVEoMTBVLCAqaXQpOworICAgICsraXQ7CisgICAgRVhQRUNUX0VRKDExVSwgKml0
KTsKKyAgICArK2l0OworICAgIEVYUEVDVF9FUSgxMlUsICppdCk7CisgICAgKytpdDsKKyAgICBF
WFBFQ1RfRVEoMTNVLCAqaXQpOworICAgICsraXQ7CisKKyAgICBFWFBFQ1RfVFJVRShlbmQgPT0g
aXQpOworfQorCitURVNUKFdURl9SZWZDb3VudGVkRml4ZWRWZWN0b3IsIE92ZXJsb2FkZWRPcGVy
YXRvckFtcGVyc2FuZCkKK3sKKyAgICBzdHJ1Y3QgVGVzdCB7CisgICAgcHJpdmF0ZToKKyAgICAg
ICAgVGVzdCogb3BlcmF0b3ImKCkgPSBkZWxldGU7CisgICAgfTsKKworICAgIGF1dG8gdmVjdG9y
ID0gUmVmQ291bnRlZEZpeGVkVmVjdG9yPFRlc3Q+OjpjcmVhdGUoMSk7CisgICAgdmVjdG9yLmdl
dCgpWzBdID0gVGVzdCgpOworfQorCitURVNUKFdURl9SZWZDb3VudGVkRml4ZWRWZWN0b3IsIENv
cHkpCit7CisgICAgYXV0byB2ZWMxID0gUmVmQ291bnRlZEZpeGVkVmVjdG9yPHVuc2lnbmVkPjo6
Y3JlYXRlKDMpOworICAgIHZlYzEuZ2V0KClbMF0gPSAwOworICAgIHZlYzEuZ2V0KClbMV0gPSAx
OworICAgIHZlYzEuZ2V0KClbMl0gPSAyOworCisgICAgYXV0byB2ZWMyID0gUmVmQ291bnRlZEZp
eGVkVmVjdG9yPHVuc2lnbmVkPjo6Y3JlYXRlKHZlYzEtPmJlZ2luKCksIHZlYzEtPmVuZCgpKTsK
KyAgICBFWFBFQ1RfRVEoM1UsIHZlYzEtPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDNVLCB2ZWMy
LT5zaXplKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2ZWMxLT5zaXplKCk7ICsr
aSkgeworICAgICAgICBFWFBFQ1RfRVEoaSwgdmVjMS5nZXQoKVtpXSk7CisgICAgICAgIEVYUEVD
VF9FUShpLCB2ZWMyLmdldCgpW2ldKTsKKyAgICB9CisgICAgdmVjMS5nZXQoKVsyXSA9IDQyOwor
ICAgIEVYUEVDVF9FUSg0MlUsIHZlYzEuZ2V0KClbMl0pOworICAgIEVYUEVDVF9FUSgyVSwgdmVj
Mi5nZXQoKVsyXSk7Cit9CisKK1RFU1QoV1RGX1JlZkNvdW50ZWRGaXhlZFZlY3RvciwgQ29weVZl
Y3RvcikKK3sKKyAgICBhdXRvIHZlYzEgPSBWZWN0b3I8dW5zaWduZWQ+Ojpmcm9tKDAsIDEsIDIs
IDMpOworICAgIEVYUEVDVF9FUSg0VSwgdmVjMS5zaXplKCkpOworICAgIGF1dG8gdmVjMiA9IFJl
ZkNvdW50ZWRGaXhlZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0ZUZyb21WZWN0b3IodmVjMSk7Cisg
ICAgRVhQRUNUX0VRKDRVLCB2ZWMxLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDRVLCB2ZWMyLT5z
aXplKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2ZWMxLnNpemUoKTsgKytpKSB7
CisgICAgICAgIEVYUEVDVF9FUShpLCB2ZWMxW2ldKTsKKyAgICAgICAgRVhQRUNUX0VRKGksIHZl
YzIuZ2V0KClbaV0pOworICAgIH0KKyAgICB2ZWMxWzJdID0gNDI7CisgICAgRVhQRUNUX0VRKDQy
VSwgdmVjMVsyXSk7CisgICAgRVhQRUNUX0VRKDJVLCB2ZWMyLmdldCgpWzJdKTsKK30KKworVEVT
VChXVEZfUmVmQ291bnRlZEZpeGVkVmVjdG9yLCBNb3ZlVmVjdG9yKQoreworICAgIGF1dG8gdmVj
MSA9IFZlY3RvcjxNb3ZlT25seT46OmZyb20oTW92ZU9ubHkoMCksIE1vdmVPbmx5KDEpLCBNb3Zl
T25seSgyKSwgTW92ZU9ubHkoMykpOworICAgIEVYUEVDVF9FUSg0VSwgdmVjMS5zaXplKCkpOwor
ICAgIGF1dG8gdmVjMiA9IFJlZkNvdW50ZWRGaXhlZFZlY3RvcjxNb3ZlT25seT46OmNyZWF0ZUZy
b21WZWN0b3IoV1RGTW92ZSh2ZWMxKSk7CisgICAgRVhQRUNUX0VRKDBVLCB2ZWMxLnNpemUoKSk7
CisgICAgRVhQRUNUX0VRKDRVLCB2ZWMyLT5zaXplKCkpOworICAgIGZvciAodW5zaWduZWQgaW5k
ZXggPSAwOyBpbmRleCA8IHZlYzItPnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgRVhQRUNUX0VR
KGluZGV4LCB2ZWMyLmdldCgpW2luZGV4XS52YWx1ZSgpKTsKK30KKworVEVTVChXVEZfUmVmQ291
bnRlZEZpeGVkVmVjdG9yLCBJdGVyYXRvckZvcikKK3sKKyAgICBhdXRvIHZlYzEgPSBSZWZDb3Vu
dGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+OjpjcmVhdGUoMyk7CisgICAgdmVjMS5nZXQoKVswXSA9
IDA7CisgICAgdmVjMS5nZXQoKVsxXSA9IDE7CisgICAgdmVjMS5nZXQoKVsyXSA9IDI7CisKKyAg
ICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgZm9yIChhdXRvIGl0ZXIgPSB2ZWMxLT5iZWdpbigp
OyBpdGVyICE9IHZlYzEtPmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgRVhQRUNUX0VRKGluZGV4
LCAqaXRlcik7CisgICAgICAgICsraW5kZXg7CisgICAgfQorfQorCitURVNUKFdURl9SZWZDb3Vu
dGVkRml4ZWRWZWN0b3IsIFJldmVyc2UpCit7CisgICAgYXV0byB2ZWMxID0gUmVmQ291bnRlZEZp
eGVkVmVjdG9yPHVuc2lnbmVkPjo6Y3JlYXRlKDMpOworICAgIHZlYzEuZ2V0KClbMF0gPSAwOwor
ICAgIHZlYzEuZ2V0KClbMV0gPSAxOworICAgIHZlYzEuZ2V0KClbMl0gPSAyOworCisgICAgdW5z
aWduZWQgaW5kZXggPSAwOworICAgIGZvciAoYXV0byBpdGVyID0gdmVjMS0+cmJlZ2luKCk7IGl0
ZXIgIT0gdmVjMS0+cmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgKytpbmRleDsKKyAgICAgICAg
RVhQRUNUX0VRKDNVIC0gaW5kZXgsICppdGVyKTsKKyAgICB9Cit9CisKK1RFU1QoV1RGX1JlZkNv
dW50ZWRGaXhlZFZlY3RvciwgRmlsbCkKK3sKKyAgICBhdXRvIHZlYzEgPSBSZWZDb3VudGVkRml4
ZWRWZWN0b3I8dW5zaWduZWQ+OjpjcmVhdGUoMyk7CisgICAgdmVjMS0+ZmlsbCg0Mik7CisKKyAg
ICBmb3IgKGF1dG8mIHZhbHVlIDogdmVjMS5nZXQoKSkKKyAgICAgICAgRVhQRUNUX0VRKHZhbHVl
LCA0MlUpOworfQorCitzdHJ1Y3QgRGVzdHJ1Y3Rvck9ic2VydmVyIHsKKyAgICBEZXN0cnVjdG9y
T2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBEZXN0cnVjdG9yT2JzZXJ2ZXIoYm9vbCogZGVz
dHJ1Y3RlZCkKKyAgICAgICAgOiBkZXN0cnVjdGVkKGRlc3RydWN0ZWQpCisgICAgeworICAgIH0K
KworICAgIH5EZXN0cnVjdG9yT2JzZXJ2ZXIoKQorICAgIHsKKyAgICAgICAgaWYgKGRlc3RydWN0
ZWQpCisgICAgICAgICAgICAqZGVzdHJ1Y3RlZCA9IHRydWU7CisgICAgfQorCisgICAgRGVzdHJ1
Y3Rvck9ic2VydmVyKERlc3RydWN0b3JPYnNlcnZlciYmIG90aGVyKQorICAgICAgICA6IGRlc3Ry
dWN0ZWQob3RoZXIuZGVzdHJ1Y3RlZCkKKyAgICB7CisgICAgICAgIG90aGVyLmRlc3RydWN0ZWQg
PSBudWxscHRyOworICAgIH0KKworICAgIERlc3RydWN0b3JPYnNlcnZlciYgb3BlcmF0b3I9KERl
c3RydWN0b3JPYnNlcnZlciYmIG90aGVyKQorICAgIHsKKyAgICAgICAgZGVzdHJ1Y3RlZCA9IG90
aGVyLmRlc3RydWN0ZWQ7CisgICAgICAgIG90aGVyLmRlc3RydWN0ZWQgPSBudWxscHRyOworICAg
ICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgYm9vbCogZGVzdHJ1Y3RlZCB7IG51bGxw
dHIgfTsKK307CisKK1RFU1QoV1RGX1JlZkNvdW50ZWRGaXhlZFZlY3RvciwgRGVzdHJ1Y3RvcikK
K3sKKyAgICBWZWN0b3I8Ym9vbD4gZmxhZ3MoMywgZmFsc2UpOworICAgIHsKKyAgICAgICAgYXV0
byB2ZWN0b3IgPSBSZWZDb3VudGVkRml4ZWRWZWN0b3I8RGVzdHJ1Y3Rvck9ic2VydmVyPjo6Y3Jl
YXRlKGZsYWdzLnNpemUoKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmbGFn
cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIHZlY3Rvci5nZXQoKVtpXSA9IERlc3RydWN0b3JP
YnNlcnZlcigmZmxhZ3NbaV0pOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmxh
Z3Muc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoZmxhZ3NbaV0pOworICAg
IH0KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmxhZ3Muc2l6ZSgpOyArK2kpCisgICAg
ICAgIEVYUEVDVF9UUlVFKGZsYWdzW2ldKTsKK30KKworVEVTVChXVEZfUmVmQ291bnRlZEZpeGVk
VmVjdG9yLCBEZXN0cnVjdG9yQWZ0ZXJNb3ZlKQoreworICAgIFZlY3Rvcjxib29sPiBmbGFncygz
LCBmYWxzZSk7CisgICAgeworICAgICAgICBSZWZQdHI8UmVmQ291bnRlZEZpeGVkVmVjdG9yPERl
c3RydWN0b3JPYnNlcnZlcj4+IG91dGVyVmVjdG9yOworICAgICAgICB7CisgICAgICAgICAgICBS
ZWZQdHI8UmVmQ291bnRlZEZpeGVkVmVjdG9yPERlc3RydWN0b3JPYnNlcnZlcj4+IG91dGVyVmVj
dG9yMjsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBhdXRvIHZlY3RvciA9IFJlZkNv
dW50ZWRGaXhlZFZlY3RvcjxEZXN0cnVjdG9yT2JzZXJ2ZXI+OjpjcmVhdGUoZmxhZ3Muc2l6ZSgp
KTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmxhZ3Muc2l6ZSgp
OyArK2kpCisgICAgICAgICAgICAgICAgICAgIHZlY3Rvci5nZXQoKVtpXSA9IERlc3RydWN0b3JP
YnNlcnZlcigmZmxhZ3NbaV0pOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBmbGFncy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgRVhQRUNUX0ZBTFNF
KGZsYWdzW2ldKTsKKyAgICAgICAgICAgICAgICBvdXRlclZlY3RvciA9IHZlY3Rvci5jb3B5UmVm
KCk7CisgICAgICAgICAgICAgICAgb3V0ZXJWZWN0b3IyID0gdmVjdG9yLmNvcHlSZWYoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmbGFncy5z
aXplKCk7ICsraSkKKyAgICAgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoZmxhZ3NbaV0pOworICAg
ICAgICAgICAgRVhQRUNUX0VRKG91dGVyVmVjdG9yLmdldCgpLCBvdXRlclZlY3RvcjIuZ2V0KCkp
OworICAgICAgICB9CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmbGFncy5zaXpl
KCk7ICsraSkKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShmbGFnc1tpXSk7CisgICAgfQorICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmbGFncy5zaXplKCk7ICsraSkKKyAgICAgICAgRVhQ
RUNUX1RSVUUoZmxhZ3NbaV0pOworfQorCitURVNUKFdURl9SZWZDb3VudGVkRml4ZWRWZWN0b3Is
IEJhc2ljKQoreworICAgIHN0ZDo6YXJyYXk8dW5zaWduZWQsIDQ+IGFycmF5IHsgeworICAgICAg
ICAwLCAxLCAyLCAzCisgICAgfSB9OworICAgIHsKKyAgICAgICAgYXV0byB2ZWN0b3IgPSBSZWZD
b3VudGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+OjpjcmVhdGUoYXJyYXkuYmVnaW4oKSwgYXJyYXku
ZW5kKCkpOworICAgICAgICBFWFBFQ1RfRVEoNFUsIHZlY3Rvci0+c2l6ZSgpKTsKKyAgICAgICAg
RVhQRUNUX0VRKDBVLCB2ZWN0b3ItPmF0KDApKTsKKyAgICAgICAgRVhQRUNUX0VRKDFVLCB2ZWN0
b3ItPmF0KDEpKTsKKyAgICAgICAgRVhQRUNUX0VRKDJVLCB2ZWN0b3ItPmF0KDIpKTsKKyAgICAg
ICAgRVhQRUNUX0VRKDNVLCB2ZWN0b3ItPmF0KDMpKTsKKyAgICB9Cit9CisKK1RFU1QoV1RGX1Jl
ZkNvdW50ZWRGaXhlZFZlY3RvciwgQ2xvbmUpCit7CisgICAgc3RkOjphcnJheTx1bnNpZ25lZCwg
ND4gYXJyYXkgeyB7CisgICAgICAgIDAsIDEsIDIsIDMKKyAgICB9IH07CisgICAgeworICAgICAg
ICBhdXRvIHZlY3RvciA9IFJlZkNvdW50ZWRGaXhlZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0ZShh
cnJheS5iZWdpbigpLCBhcnJheS5lbmQoKSk7CisgICAgICAgIEVYUEVDVF9FUSg0VSwgdmVjdG9y
LT5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVEoMFUsIHZlY3Rvci0+YXQoMCkpOworICAgICAg
ICBFWFBFQ1RfRVEoMVUsIHZlY3Rvci0+YXQoMSkpOworICAgICAgICBFWFBFQ1RfRVEoMlUsIHZl
Y3Rvci0+YXQoMikpOworICAgICAgICBFWFBFQ1RfRVEoM1UsIHZlY3Rvci0+YXQoMykpOworCisg
ICAgICAgIGF1dG8gY2xvbmVkID0gdmVjdG9yLT5jbG9uZSgpOworICAgICAgICBFWFBFQ1RfRVEo
NFUsIGNsb25lZC0+c2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDBVLCBjbG9uZWQtPmF0KDAp
KTsKKyAgICAgICAgRVhQRUNUX0VRKDFVLCBjbG9uZWQtPmF0KDEpKTsKKyAgICAgICAgRVhQRUNU
X0VRKDJVLCBjbG9uZWQtPmF0KDIpKTsKKyAgICAgICAgRVhQRUNUX0VRKDNVLCBjbG9uZWQtPmF0
KDMpKTsKKyAgICB9Cit9CisKK1RFU1QoV1RGX1JlZkNvdW50ZWRGaXhlZFZlY3RvciwgRXF1YWwp
Cit7CisgICAgYXV0byB2ZWMxID0gUmVmQ291bnRlZEZpeGVkVmVjdG9yPHVuc2lnbmVkPjo6Y3Jl
YXRlKDEwKTsKKyAgICBhdXRvIHZlYzIgPSBSZWZDb3VudGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+
OjpjcmVhdGUoMTApOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAxMDsgKytpKSB7Cisg
ICAgICAgIHZlYzEuZ2V0KClbaV0gPSBpOworICAgICAgICB2ZWMyLmdldCgpW2ldID0gaTsKKyAg
ICB9CisgICAgRVhQRUNUX0VRKHZlYzEuZ2V0KCksIHZlYzIuZ2V0KCkpOworICAgIHZlYzEuZ2V0
KClbMF0gPSA0MjsKKyAgICBFWFBFQ1RfTkUodmVjMS5nZXQoKSwgdmVjMi5nZXQoKSk7Cit9CisK
K30K
</data>
<flag name="commit-queue"
          id="472423"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446910</attachid>
            <date>2021-12-11 15:34:38 -0800</date>
            <delta_ts>2021-12-11 21:55:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234201-20211211153437.patch</filename>
            <type>text/plain</type>
            <size>76549</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MTc3YTdmMmEwODU3YTJiMjNhM2EzZTg4OTIzNTEyZDg4MGE2MDljLi4zNmM0YmU1MzJhM2M1NDM3
MTdmMWU3ZTFhMGZhMDE2Yzk5ODkxY2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAyMS0xMi0xMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtXVEZdIEludHJvZHVjZSBUcmFpbGluZ0FycmF5CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQyMDEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5o
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJhc2VsaW5lSklUQ29uc3RhbnRQb29sKToKKyAg
ICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlQW5kTGlua1dp
dGhvdXRGaW5hbGl6aW5nKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpKSVQ6OmxvYWRDb25zdGFudCk6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0
cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisKIDIwMjEtMTItMTAgIFl1c3VrZSBTdXp1
a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBXYXNtIGNhdGNoIHRodW5r
IHNob3VsZCBiZSBKSVQgY29kZSB0byB1c2UgRXhjZXB0aW9uSGFuZGxlclB0clRhZwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAw
NjI3NTc2ZGZlYWRiMjk3MjM4YWY1ZTUzNGRlZmM3N2QwMTUzOGMyLi5lY2E5YTcwMGE2ZTlkZjdi
YzdkZWEwZWM0NjEyY2UyYmUyNjg1MTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDIxLTEyLTEx
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gSW50
cm9kdWNlIFRyYWlsaW5nQXJyYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNDIwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBUcmFpbGluZ0FycmF5PERlcml2ZWQs
IFQ+LCB3aGljaCBhbGxvd3MgdXMgdG8gaW1wbGVtZW50IGNsYXNzCisgICAgICAgIHdpdGggdHJh
aWxpbmcgYXJyYXkgZWFzaWx5LiBCeSB1c2luZyB0aGlzLCB3ZSBpbXBsZW1lbnQgRW1iZWRkZWRG
aXhlZFZlY3RvciBhbmQgUmVmQ291bnRlZEZpeGVkVmVjdG9yLgorICAgICAgICBQbHVzLCB3ZSBy
ZXBsYWNlIHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24gb2YgRml4ZWRWZWN0b3IgZnJvbSBSZWZD
b3VudGVkQXJyYXkgdG8gRW1iZWRkZWRGaXhlZFZlY3RvcgorICAgICAgICBzaW5jZSByZWYtY291
bnRpbmcgaXMgbm90IG5lY2Vzc2FyeS4KKyAgICAgICAgSW4gYSBzdWJzZXF1ZW50IHBhdGNoLCB3
ZSB3aWxsIHJlbW92ZSBSZWZDb3VudGVkQXJyYXkgYW5kIHVzZSBSZWZDb3VudGVkRml4ZWRWZWN0
b3Igc2luY2UgUmVmQ291bnRlZEZpeGVkVmVjdG9yCisgICAgICAgIGlzIGZvbGxvd2luZyBub3Jt
YWwgUmVmIC8gUmVmUHRyIHByb3RvY29sLCBzbyBlYXN5IHRvIHVuZGVyc3RhbmQgdGhlIHNlbWFu
dGljcy4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvRW1iZWRkZWRGaXhlZFZlY3Rv
ci5oOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvRml4ZWRWZWN0b3IuaDoKKyAgICAgICAgKFdURjo6
Rml4ZWRWZWN0b3I6OkZpeGVkVmVjdG9yKToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6Om9w
ZXJhdG9yPSk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpzaXplIGNvbnN0KToKKyAgICAg
ICAgKFdURjo6Rml4ZWRWZWN0b3I6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoV1RGOjpGaXhl
ZFZlY3Rvcjo6Ynl0ZVNpemUgY29uc3QpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6ZGF0
YSk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpiZWdpbik6CisgICAgICAgIChXVEY6OkZp
eGVkVmVjdG9yOjplbmQpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6cmJlZ2luKToKKyAg
ICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OnJlbmQpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rv
cjo6cmJlZ2luIGNvbnN0KToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OnJlbmQgY29uc3Qp
OgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6YXQpOgorICAgICAgICAoV1RGOjpGaXhlZFZl
Y3Rvcjo6YXQgY29uc3QpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6b3BlcmF0b3JbXSk6
CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpvcGVyYXRvcltdIGNvbnN0KToKKyAgICAgICAg
KFdURjo6Rml4ZWRWZWN0b3I6OmZpbGwpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6b3Bl
cmF0b3IhPSBjb25zdCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpvcGVyYXRvcj09IGNv
bnN0KToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OnN3YXApOgorICAgICAgICAoV1RGOjpG
aXhlZFZlY3Rvcjo6Z2V0U3RvcmFnZSk6CisgICAgICAgICogd3RmL1JlZkNvdW50ZWRGaXhlZFZl
Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvVHJhaWxpbmdBcnJheS5oOiBBZGRlZC4KKyAg
ICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6VHJhaWxpbmdBcnJheSk6CisgICAgICAgIChXVEY6
OlRyYWlsaW5nQXJyYXk6On5UcmFpbGluZ0FycmF5KToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdB
cnJheTo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoV1RGOjpUcmFpbGluZ0FycmF5OjpzaXpl
IGNvbnN0KToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6aXNFbXB0eSBjb25zdCk6Cisg
ICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6OmJ5dGVTaXplIGNvbnN0KToKKyAgICAgICAgKFdU
Rjo6VHJhaWxpbmdBcnJheTo6ZGF0YSk6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6OmRh
dGEgY29uc3QpOgorICAgICAgICAoV1RGOjpUcmFpbGluZ0FycmF5OjpiZWdpbik6CisgICAgICAg
IChXVEY6OlRyYWlsaW5nQXJyYXk6OmVuZCk6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6
OmJlZ2luIGNvbnN0KToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6ZW5kIGNvbnN0KToK
KyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6Y2JlZ2luIGNvbnN0KToKKyAgICAgICAgKFdU
Rjo6VHJhaWxpbmdBcnJheTo6Y2VuZCBjb25zdCk6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJy
YXk6OnJiZWdpbik6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6OnJlbmQpOgorICAgICAg
ICAoV1RGOjpUcmFpbGluZ0FycmF5OjpyYmVnaW4gY29uc3QpOgorICAgICAgICAoV1RGOjpUcmFp
bGluZ0FycmF5OjpyZW5kIGNvbnN0KToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6Y3Ji
ZWdpbiBjb25zdCk6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6OmNyZW5kIGNvbnN0KToK
KyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6YXQpOgorICAgICAgICAoV1RGOjpUcmFpbGlu
Z0FycmF5OjphdCBjb25zdCk6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6Om9wZXJhdG9y
W10pOgorICAgICAgICAoV1RGOjpUcmFpbGluZ0FycmF5OjpvcGVyYXRvcltdIGNvbnN0KToKKyAg
ICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6Zmlyc3QpOgorICAgICAgICAoV1RGOjpUcmFpbGlu
Z0FycmF5OjpmaXJzdCBjb25zdCk6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6Omxhc3Qp
OgorICAgICAgICAoV1RGOjpUcmFpbGluZ0FycmF5OjpsYXN0IGNvbnN0KToKKyAgICAgICAgKFdU
Rjo6VHJhaWxpbmdBcnJheTo6ZmlsbCk6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6Om9m
ZnNldE9mU2l6ZSk6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6Om9mZnNldE9mRGF0YSk6
CisKIDIwMjEtMTItMTAgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgW21hY09TXSBBZGQgbmV3IHNjcmVlbiBhbmQgd2luZG93IGNhcHR1cmUgYmFja2Vu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGYyNjZi
YjQwYWQwOWJiN2YyYzE4YTdmZDUwZWY5N2Y4MzQxMTkzOWEuLjk2YTE0Zjk2M2YyODhmYTQ5NDhj
MzkyY2NhMGY4MWY4NWQxMzVhNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgKQEAgLTU1Nyw3ICs1NTcsNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMg
SlNDZWxsIHsKICAgICB2b2lkKiBiYXNlbGluZUpJVENvbnN0YW50UG9vbCgpCiAgICAgewogICAg
ICAgICBSRUxFQVNFX0FTU0VSVChtX2ppdERhdGEgJiYgaml0VHlwZSgpID09IEpJVFR5cGU6OkJh
c2VsaW5lSklUKTsKLSAgICAgICAgcmV0dXJuIG1faml0RGF0YS0+bV9qaXRDb25zdGFudFBvb2wu
ZGF0YSgpOworICAgICAgICByZXR1cm4gbV9qaXREYXRhLT5tX2ppdENvbnN0YW50UG9vbC5nZXRT
dG9yYWdlKCk7CiAgICAgfQogI2VuZGlmCiAgICAgc2l6ZV90IG51bWJlck9mVW5saW5rZWRTd2l0
Y2hKdW1wVGFibGVzKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPm51bWJlck9mVW5s
aW5rZWRTd2l0Y2hKdW1wVGFibGVzKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRl
eCBmNTdhNmUxMzQ1MDU4ZmRiZTg0MjM4ZjIyNzM3NjU3ZDA2Mzk5YTBiLi5jNTE1YzM5NTQyMWMz
YWYyZDgyOTBhM2FhZWM2MzUzMjkxZDQxZjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CkBAIC03OTksNyArNzk5LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFs
aXppbmcoSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gQ2FsbEZyYW1lOjphcmd1bWVu
dE9mZnNldEluY2x1ZGluZ1RoaXMoYXJndW1lbnQpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2Yo
UmVnaXN0ZXIpKTsKICAgICAgICAgICAgICAgICBsb2FkVmFsdWUoQWRkcmVzcyhjYWxsRnJhbWVS
ZWdpc3Rlciwgb2Zmc2V0KSwganNSZWdUMTApOwotICAgICAgICAgICAgICAgIHN0b3JlVmFsdWUo
anNSZWdUMTAsIEFkZHJlc3MocmVnVDIsIGFyZ3VtZW50ICogc2l6ZW9mKFZhbHVlUHJvZmlsZSkg
KyBWYWx1ZVByb2ZpbGU6Om9mZnNldE9mRmlyc3RCdWNrZXQoKSkpOworICAgICAgICAgICAgICAg
IHN0b3JlVmFsdWUoanNSZWdUMTAsIEFkZHJlc3MocmVnVDIsIEZpeGVkVmVjdG9yPFZhbHVlUHJv
ZmlsZT46OlN0b3JhZ2U6Om9mZnNldE9mRGF0YSgpICsgYXJndW1lbnQgKiBzaXplb2YoVmFsdWVQ
cm9maWxlKSArIFZhbHVlUHJvZmlsZTo6b2Zmc2V0T2ZGaXJzdEJ1Y2tldCgpKSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
cy5oCmluZGV4IDE3ZjQ2ZjdhMmQ4OTQ0MzhjM2I5YTBkZTY1YzZmMzFiODZjNjQ0MWMuLjU4NjQx
MmJjNDdlZTZiYjc0MGVmMTUyMDg0ZWYyY2EyMWE2YjE1OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lcy5oCkBAIC01MDUsNyArNTA1LDcgQEAgQUxXQVlTX0lOTElORSB2b2lk
IEpJVDo6bWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGNvbnN0IEJ5dGVjb2RlJiBieXRl
Y29kZSwKIAogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6bG9hZENvbnN0YW50KEpJVENvbnN0YW50
UG9vbDo6Q29uc3RhbnQgY29uc3RhbnRJbmRleCwgR1BSUmVnIHJlc3VsdCkKIHsKLSAgICBsb2Fk
UHRyKEFkZHJlc3Moc19jb25zdGFudHNHUFIsIHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oY29uc3Rh
bnRJbmRleCkgKiBzaXplb2Yodm9pZCopKSwgcmVzdWx0KTsKKyAgICBsb2FkUHRyKEFkZHJlc3Mo
c19jb25zdGFudHNHUFIsIEZpeGVkVmVjdG9yPHZvaWQqPjo6U3RvcmFnZTo6b2Zmc2V0T2ZEYXRh
KCkgKyBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGNvbnN0YW50SW5kZXgpICogc2l6ZW9mKHZvaWQq
KSksIHJlc3VsdCk7CiB9CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmxvYWRHbG9iYWxPYmpl
Y3QoR1BSUmVnIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggYjJjYWExODU0MTMwZmY4YjkzMTgwNzZk
MjdkZmViZGQyMTMzODQ0MS4uMzk3YjA1ZDg2YTA3MTJhN2EzOGNhMDIxZDIzMmNiMmQ5ZGI1MWI5
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4
dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0
c0V4dHJhY3Rvci5jcHAKQEAgLTg3LDggKzg3LDEzIEBAIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvciB7CiAgICAgLy8gVGhlc2UgdHlwZXMgYXJlIHVzZWZ1bCBzaW5jZSB3ZSBjYW4ndCB1c2Ug
JzwuLi4+JyBzeW50YXggaW4gTExJbnQgb2Zmc2V0cyBleHRyYWN0aW9uLiBlLmcuIFZlY3Rvcjxp
bnQ+OjptX2RhdGEKICAgICB1c2luZyBWZWN0b3IgPSBXVEY6OlZlY3RvcjxpbnQ+OwogICAgIHVz
aW5nIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwgPSBKU0M6OkpTSW50ZXJuYWxGaWVsZE9iamVj
dEltcGw8PjsKLSAgICB1c2luZyBGaXhlZFZlY3RvciA9IFdURjo6Rml4ZWRWZWN0b3I8aW50PjsK
LSAgICB1c2luZyBSZWZDb3VudGVkQXJyYXkgPSBXVEY6OlJlZkNvdW50ZWRBcnJheTxpbnQ+Owor
ICAgIHVzaW5nIFZhbHVlUHJvZmlsZUZpeGVkVmVjdG9yID0gV1RGOjpGaXhlZFZlY3RvcjxWYWx1
ZVByb2ZpbGU+OworICAgIHVzaW5nIEJpbmFyeUFyaXRoUHJvZmlsZUZpeGVkVmVjdG9yID0gRml4
ZWRWZWN0b3I8QmluYXJ5QXJpdGhQcm9maWxlPjsKKyAgICB1c2luZyBVbmFyeUFyaXRoUHJvZmls
ZUZpeGVkVmVjdG9yID0gRml4ZWRWZWN0b3I8VW5hcnlBcml0aFByb2ZpbGU+OworICAgIHVzaW5n
IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlRml4ZWRWZWN0b3IgPSBGaXhlZFZlY3RvcjxVbmxpbmtl
ZFNpbXBsZUp1bXBUYWJsZT47CisgICAgdXNpbmcgVW5saW5rZWRTdHJpbmdKdW1wVGFibGVGaXhl
ZFZlY3RvciA9IEZpeGVkVmVjdG9yPFVubGlua2VkU3RyaW5nSnVtcFRhYmxlPjsKKyAgICB1c2lu
ZyBJbnQzMkZpeGVkVmVjdG9yID0gRml4ZWRWZWN0b3I8aW50MzJfdD47CisgICAgdXNpbmcgVm9p
ZFBvaW50ZXJGaXhlZFZlY3RvciA9IEZpeGVkVmVjdG9yPHZvaWQqPjsKIAogcHVibGljOgogICAg
IHN0YXRpYyBjb25zdCBpbnQ2NF90KiBkdW1teSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGQyMTM5NmU5OGZhMGJj
NDg5Yjg5Nzk2ODc3YzYyNGZlOTZjMmUwNmIuLjEyMTBkYzFjMDlhNGY1NDU0NjIxOGZkNjZhZWZl
YjA4OGU0YTAwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTYyMyw4ICs2MjMsNiBAQCBjb25zdCBCbGFja1RocmVz
aG9sZCA9IGNvbnN0ZXhwciBibGFja1RocmVzaG9sZAogY29uc3QgVmVjdG9yQnVmZmVyT2Zmc2V0
ID0gVmVjdG9yOjptX2J1ZmZlcgogY29uc3QgVmVjdG9yU2l6ZU9mZnNldCA9IFZlY3Rvcjo6bV9z
aXplCiAKLWNvbnN0IFJlZkNvdW50ZWRBcnJheVN0b3JhZ2VOb25OdWxsU2l6ZU9mZnNldCA9IC0o
Y29uc3RleHByIChSZWZDb3VudGVkQXJyYXk6OkhlYWRlcjo6c2l6ZSgpKSkgKyBSZWZDb3VudGVk
QXJyYXk6OkhlYWRlcjo6bGVuZ3RoCi0KICMgU29tZSBjb21tb24gdXRpbGl0aWVzLgogbWFjcm8g
Y3Jhc2goKQogICAgIGlmIENfTE9PUCBvciBDX0xPT1BfV0lOCkBAIC0xNjc3LDEwICsxNjc1LDEx
IEBAIG1hY3JvIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24ocHJvZmlsZUFyZ1NraXApCiAgICAgYWRk
cCAtcHJvZmlsZUFyZ1NraXAsIHQwCiAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnBndGVxIHQwLCAw
LCBvayBlbmQpCiAgICAgYnRweiB0MCwgLmFyZ3VtZW50UHJvZmlsZURvbmUKLSAgICBsb2FkcCBD
b2RlQmxvY2s6Om1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFn
ZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3QxXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6
Om1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzICsgVmFsdWVQcm9maWxlRml4ZWRWZWN0b3I6Om1fc3Rv
cmFnZVt0MV0sIHQzCiAgICAgYnRweiB0MywgLmFyZ3VtZW50UHJvZmlsZURvbmUgIyBXaGVuIHdl
IGNhbid0IEpJVCwgd2UgZG9uJ3QgYWxsb2NhdGUgYW55IGFyZ3VtZW50IHZhbHVlIHByb2ZpbGVz
LgogICAgIG11bHAgc2l6ZW9mIFZhbHVlUHJvZmlsZSwgdDAsIHQyICMgQWFhYWFoaGhoISBOZWVk
IHN0cmVuZ3RoIHJlZHVjdGlvbiEKICAgICBsc2hpZnRwIDMsIHQwICMgb2Zmc2V0IG9mIGxhc3Qg
SlNWYWx1ZSBhcmd1bWVudHMgb24gdGhlIHN0YWNrLgorICAgIGFkZHAgKGNvbnN0ZXhwciAoVmFs
dWVQcm9maWxlRml4ZWRWZWN0b3I6OlN0b3JhZ2U6Om9mZnNldE9mRGF0YSgpKSksIHQzCiAgICAg
YWRkcCB0MiwgdDMgIyBwb2ludGVyIHRvIGVuZCBvZiBWYWx1ZVByb2ZpbGUgYXJyYXkgaW4gdGhl
IHZhbHVlIHByb2ZpbGUgYXJyYXkuCiAuYXJndW1lbnRQcm9maWxlTG9vcDoKICAgICBpZiBKU1ZB
TFVFNjQKQEAgLTI2MTAsNyArMjYwOSw3IEBAIGlmIEpJVAogICAgICAgICAjIEJhc2VsaW5lIHVz
ZXMgTExJbnQncyBQQiByZWdpc3RlciBmb3IgaXRzIEpJVCBjb25zdGFudCBwb29sLgogICAgICAg
ICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgUEIKICAgICAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2pp
dERhdGFbUEJdLCBQQgotICAgICAgICBsb2FkcCBDb2RlQmxvY2s6OkpJVERhdGE6Om1faml0Q29u
c3RhbnRQb29sW1BCXSwgUEIKKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrOjpKSVREYXRhOjptX2pp
dENvbnN0YW50UG9vbCArIFZvaWRQb2ludGVyRml4ZWRWZWN0b3I6Om1fc3RvcmFnZVtQQl0sIFBC
CiAgICAgZW5kCiAKICAgICBtYWNybyBzZXR1cFJldHVyblRvQmFzZWxpbmVBZnRlckNoZWNrcG9p
bnRFeGl0SWZOZWVkZWQoKQpAQCAtMjcyNSwxNiArMjcyNCwxNiBAQCBtYWNybyB1cGRhdGVVbmFy
eUFyaXRoUHJvZmlsZShzaXplLCBvcGNvZGVTdHJ1Y3QsIHR5cGUsIHNjcmF0Y2gxLCBzY3JhdGNo
MikKICAgICBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgbV9wcm9maWxlSW5kZXgsIHNjcmF0Y2gx
KQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBzY3JhdGNoMgogICAgIGxvYWRwIENvZGVCbG9j
azo6bV91bmxpbmtlZENvZGVbc2NyYXRjaDJdLCBzY3JhdGNoMgotICAgIGxvYWRwIFVubGlua2Vk
Q29kZUJsb2NrOjptX3VuYXJ5QXJpdGhQcm9maWxlcyArIEZpeGVkVmVjdG9yOjptX3N0b3JhZ2Ug
KyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVtzY3JhdGNoMl0sIHNjcmF0Y2gyCi0gICAgb3JoIHR5
cGUsIFVuYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNbc2NyYXRjaDIsIHNjcmF0Y2gxLCAyXQorICAg
IGxvYWRwIFVubGlua2VkQ29kZUJsb2NrOjptX3VuYXJ5QXJpdGhQcm9maWxlcyArIFVuYXJ5QXJp
dGhQcm9maWxlRml4ZWRWZWN0b3I6Om1fc3RvcmFnZVtzY3JhdGNoMl0sIHNjcmF0Y2gyCisgICAg
b3JoIHR5cGUsIChjb25zdGV4cHIgKFVuYXJ5QXJpdGhQcm9maWxlRml4ZWRWZWN0b3I6OlN0b3Jh
Z2U6Om9mZnNldE9mRGF0YSgpKSkgKyBVbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3NjcmF0Y2gy
LCBzY3JhdGNoMSwgMl0KIGVuZAogCiBtYWNybyB1cGRhdGVCaW5hcnlBcml0aFByb2ZpbGUoc2l6
ZSwgb3Bjb2RlU3RydWN0LCB0eXBlLCBzY3JhdGNoMSwgc2NyYXRjaDIpCiAgICAgZ2V0dShzaXpl
LCBvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZUluZGV4LCBzY3JhdGNoMSkKICAgICBsb2FkcCBDb2Rl
QmxvY2tbY2ZyXSwgc2NyYXRjaDIKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fdW5saW5rZWRDb2Rl
W3NjcmF0Y2gyXSwgc2NyYXRjaDIKLSAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6bV9iaW5h
cnlBcml0aFByb2ZpbGVzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJh
eTo6bV9kYXRhW3NjcmF0Y2gyXSwgc2NyYXRjaDIKLSAgICBvcmggdHlwZSwgQmluYXJ5QXJpdGhQ
cm9maWxlOjptX2JpdHNbc2NyYXRjaDIsIHNjcmF0Y2gxLCAyXQorICAgIGxvYWRwIFVubGlua2Vk
Q29kZUJsb2NrOjptX2JpbmFyeUFyaXRoUHJvZmlsZXMgKyBCaW5hcnlBcml0aFByb2ZpbGVGaXhl
ZFZlY3Rvcjo6bV9zdG9yYWdlW3NjcmF0Y2gyXSwgc2NyYXRjaDIKKyAgICBvcmggdHlwZSwgKGNv
bnN0ZXhwciAoQmluYXJ5QXJpdGhQcm9maWxlRml4ZWRWZWN0b3I6OlN0b3JhZ2U6Om9mZnNldE9m
RGF0YSgpKSkgKyBCaW5hcnlBcml0aFByb2ZpbGU6Om1fYml0c1tzY3JhdGNoMiwgc2NyYXRjaDEs
IDJdCiBlbmQKIAogLy8gRklYTUU6IFdlIHNob3VsZCBub3QgbmVlZCB0aGUgWDg2XzY0X1dJTiBj
b25kaXRpb24gaGVyZSwgc2luY2UgV0VCQVNTRU1CTFkgc2hvdWxkIGFscmVhZHkgYmUgZmFsc2Ug
b24gV2luZG93cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCBjZjFlYTIxNDI0MmI0YmY0ZWE1MTViOGZh
YzQ1NTE2ZGUwN2JmZjg3Li42MDU1MDFhZTA5MjQzNDgxMzgwNTdhZGMxZmE1NDQyYTc4MmRiYzA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMjA5OSwxNCArMjA5OSwxNSBAQCBsbGludE9wV2l0aEp1
bXAob3Bfc3dpdGNoX2ltbSwgT3BTd2l0Y2hJbW0sIG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRp
c3BhdGNoKQogICAgIGxvYWRwIENvZGVCbG9jazo6bV91bmxpbmtlZENvZGVbdDJdLCB0MgogICAg
IGxvYWRwIFVubGlua2VkQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKICAgICBtdWxpIHNp
emVvZiBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSwgdDMKLSAgICBsb2FkcCBVbmxpbmtlZENvZGVC
bG9jazo6UmFyZURhdGE6Om1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzICsgRml4ZWRWZWN0b3I6
Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3QyXSwgdDIKKyAgICBsb2FkcCBV
bmxpbmtlZENvZGVCbG9jazo6UmFyZURhdGE6Om1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzICsg
VW5saW5rZWRTaW1wbGVKdW1wVGFibGVGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlW3QyXSwgdDIKKyAg
ICBhZGRwIChjb25zdGV4cHIgKFVubGlua2VkU2ltcGxlSnVtcFRhYmxlRml4ZWRWZWN0b3I6OlN0
b3JhZ2U6Om9mZnNldE9mRGF0YSgpKSksIHQyCiAgICAgYWRkcCB0MywgdDIKICAgICBiaW5lcSB0
MSwgSW50MzJUYWcsIC5vcFN3aXRjaEltbU5vdEludAogICAgIHN1YmkgVW5saW5rZWRTaW1wbGVK
dW1wVGFibGU6Om1fbWluW3QyXSwgdDAKLSAgICBsb2FkcCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJs
ZTo6bV9icmFuY2hPZmZzZXRzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRB
cnJheTo6bV9kYXRhW3QyXSwgdDIKKyAgICBsb2FkcCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZTo6
bV9icmFuY2hPZmZzZXRzICsgSW50MzJGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlW3QyXSwgdDIKICAg
ICBidHB6IHQyLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAotICAgIGJpYWVxIHQwLCBSZWZDb3Vu
dGVkQXJyYXlTdG9yYWdlTm9uTnVsbFNpemVPZmZzZXRbdDJdLCAub3BTd2l0Y2hJbW1GYWxsVGhy
b3VnaAotICAgIGxvYWRpIFt0MiwgdDAsIDRdLCB0MQorICAgIGJpYWVxIHQwLCBJbnQzMkZpeGVk
VmVjdG9yOjpTdG9yYWdlOjptX3NpemVbdDJdLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAorICAg
IGxvYWRpIChjb25zdGV4cHIgKEludDMyRml4ZWRWZWN0b3I6OlN0b3JhZ2U6Om9mZnNldE9mRGF0
YSgpKSlbdDIsIHQwLCA0XSwgdDEKICAgICBidGl6IHQxLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3Vn
aAogICAgIGRpc3BhdGNoSW5kaXJlY3QodDEpCiAKQEAgLTIxMjksNyArMjEzMCw4IEBAIGxsaW50
T3BXaXRoSnVtcChvcF9zd2l0Y2hfY2hhciwgT3BTd2l0Y2hDaGFyLCBtYWNybyAoc2l6ZSwgZ2V0
LCBqdW1wLCBkaXNwYXRjaCkKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fdW5saW5rZWRDb2RlW3Qy
XSwgdDIKICAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCiAg
ICAgbXVsaSBzaXplb2YgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUsIHQzCi0gICAgbG9hZHAgVW5s
aW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhOjptX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlcyArIEZp
eGVkVmVjdG9yOjptX3N0b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0Ml0sIHQyCisg
ICAgbG9hZHAgVW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhOjptX3VubGlua2VkU3dpdGNoSnVt
cFRhYmxlcyArIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlRml4ZWRWZWN0b3I6Om1fc3RvcmFnZVt0
Ml0sIHQyCisgICAgYWRkcCAoY29uc3RleHByIChVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZUZpeGVk
VmVjdG9yOjpTdG9yYWdlOjpvZmZzZXRPZkRhdGEoKSkpLCB0MgogICAgIGFkZHAgdDMsIHQyCiAg
ICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAogICAgIGJibmVx
IEpTQ2VsbDo6bV90eXBlW3QwXSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdo
CkBAIC0yMTQ0LDEwICsyMTQ2LDEwIEBAIGxsaW50T3BXaXRoSnVtcChvcF9zd2l0Y2hfY2hhciwg
T3BTd2l0Y2hDaGFyLCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKICAgICBsb2Fk
YiBbdDBdLCB0MAogLm9wU3dpdGNoQ2hhclJlYWR5OgogICAgIHN1YmkgVW5saW5rZWRTaW1wbGVK
dW1wVGFibGU6Om1fbWluW3QyXSwgdDAKLSAgICBsb2FkcCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJs
ZTo6bV9icmFuY2hPZmZzZXRzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRB
cnJheTo6bV9kYXRhW3QyXSwgdDIKKyAgICBsb2FkcCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZTo6
bV9icmFuY2hPZmZzZXRzICsgSW50MzJGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlW3QyXSwgdDIKICAg
ICBidHB6IHQyLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKLSAgICBiaWFlcSB0MCwgUmVmQ291
bnRlZEFycmF5U3RvcmFnZU5vbk51bGxTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoQ2hhckZhbGxU
aHJvdWdoCi0gICAgbG9hZGkgW3QyLCB0MCwgNF0sIHQxCisgICAgYmlhZXEgdDAsIEludDMyRml4
ZWRWZWN0b3I6OlN0b3JhZ2U6Om1fc2l6ZVt0Ml0sIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAor
ICAgIGxvYWRpIChjb25zdGV4cHIgKEludDMyRml4ZWRWZWN0b3I6OlN0b3JhZ2U6Om9mZnNldE9m
RGF0YSgpKSlbdDIsIHQwLCA0XSwgdDEKICAgICBidGl6IHQxLCAub3BTd2l0Y2hDaGFyRmFsbFRo
cm91Z2gKICAgICBkaXNwYXRjaEluZGlyZWN0KHQxKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGEyM2RlNjBl
MGVkODg0NzZlNTUxOGMxNWVhMDM5NDYxMDRjYzkxN2UuLjcxZWNhMTBhNzY2MDBjMzkxOGYzNjM0
YjRlYWNlZjcwOGEzYTk0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0yMjkyLDE0ICsyMjkyLDE1IEBAIGxs
aW50T3BXaXRoSnVtcChvcF9zd2l0Y2hfaW1tLCBPcFN3aXRjaEltbSwgbWFjcm8gKHNpemUsIGdl
dCwganVtcCwgZGlzcGF0Y2gpCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX3VubGlua2VkQ29kZVt0
Ml0sIHQyCiAgICAgbG9hZHAgVW5saW5rZWRDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0Mgog
ICAgIG11bGkgc2l6ZW9mIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlLCB0MwotICAgIGxvYWRwIFVu
bGlua2VkQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV91bmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMgKyBG
aXhlZFZlY3Rvcjo6bV9zdG9yYWdlICsgUmVmQ291bnRlZEFycmF5OjptX2RhdGFbdDJdLCB0Mgor
ICAgIGxvYWRwIFVubGlua2VkQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV91bmxpbmtlZFN3aXRjaEp1
bXBUYWJsZXMgKyBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZUZpeGVkVmVjdG9yOjptX3N0b3JhZ2Vb
dDJdLCB0MgorICAgIGFkZHAgKGNvbnN0ZXhwciAoVW5saW5rZWRTaW1wbGVKdW1wVGFibGVGaXhl
ZFZlY3Rvcjo6U3RvcmFnZTo6b2Zmc2V0T2ZEYXRhKCkpKSwgdDIKICAgICBhZGRwIHQzLCB0Mgog
ICAgIGJxYiB0MSwgbnVtYmVyVGFnLCAub3BTd2l0Y2hJbW1Ob3RJbnQKICAgICBzdWJpIFVubGlu
a2VkU2ltcGxlSnVtcFRhYmxlOjptX21pblt0Ml0sIHQxCi0gICAgbG9hZHAgVW5saW5rZWRTaW1w
bGVKdW1wVGFibGU6Om1fYnJhbmNoT2Zmc2V0cyArIEZpeGVkVmVjdG9yOjptX3N0b3JhZ2UgKyBS
ZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0Ml0sIHQyCisgICAgbG9hZHAgVW5saW5rZWRTaW1wbGVK
dW1wVGFibGU6Om1fYnJhbmNoT2Zmc2V0cyArIEludDMyRml4ZWRWZWN0b3I6Om1fc3RvcmFnZVt0
Ml0sIHQyCiAgICAgYnRweiB0MiwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKLSAgICBiaWFlcSB0
MSwgUmVmQ291bnRlZEFycmF5U3RvcmFnZU5vbk51bGxTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNo
SW1tRmFsbFRocm91Z2gKLSAgICBsb2FkaXMgW3QyLCB0MSwgNF0sIHQxCisgICAgYmlhZXEgdDEs
IEludDMyRml4ZWRWZWN0b3I6OlN0b3JhZ2U6Om1fc2l6ZVt0Ml0sIC5vcFN3aXRjaEltbUZhbGxU
aHJvdWdoCisgICAgbG9hZGlzIChjb25zdGV4cHIgKEludDMyRml4ZWRWZWN0b3I6OlN0b3JhZ2U6
Om9mZnNldE9mRGF0YSgpKSlbdDIsIHQxLCA0XSwgdDEKICAgICBidGl6IHQxLCAub3BTd2l0Y2hJ
bW1GYWxsVGhyb3VnaAogICAgIGRpc3BhdGNoSW5kaXJlY3QodDEpCiAKQEAgLTIzMjIsNyArMjMy
Myw4IEBAIGxsaW50T3BXaXRoSnVtcChvcF9zd2l0Y2hfY2hhciwgT3BTd2l0Y2hDaGFyLCBtYWNy
byAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fdW5s
aW5rZWRDb2RlW3QyXSwgdDIKICAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6bV9yYXJlRGF0
YVt0Ml0sIHQyCiAgICAgbXVsaSBzaXplb2YgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUsIHQzCi0g
ICAgbG9hZHAgVW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhOjptX3VubGlua2VkU3dpdGNoSnVt
cFRhYmxlcyArIEZpeGVkVmVjdG9yOjptX3N0b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0
YVt0Ml0sIHQyCisgICAgbG9hZHAgVW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhOjptX3VubGlu
a2VkU3dpdGNoSnVtcFRhYmxlcyArIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlRml4ZWRWZWN0b3I6
Om1fc3RvcmFnZVt0Ml0sIHQyCisgICAgYWRkcCAoY29uc3RleHByIChVbmxpbmtlZFNpbXBsZUp1
bXBUYWJsZUZpeGVkVmVjdG9yOjpTdG9yYWdlOjpvZmZzZXRPZkRhdGEoKSkpLCB0MgogICAgIGFk
ZHAgdDMsIHQyCiAgICAgYnRxbnogdDEsIG5vdENlbGxNYXNrLCAub3BTd2l0Y2hDaGFyRmFsbFRo
cm91Z2gKICAgICBiYm5lcSBKU0NlbGw6Om1fdHlwZVt0MV0sIFN0cmluZ1R5cGUsIC5vcFN3aXRj
aENoYXJGYWxsVGhyb3VnaApAQCAtMjMzNywxMCArMjMzOSwxMCBAQCBsbGludE9wV2l0aEp1bXAo
b3Bfc3dpdGNoX2NoYXIsIE9wU3dpdGNoQ2hhciwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlz
cGF0Y2gpCiAgICAgbG9hZGIgW3QxXSwgdDAKIC5vcFN3aXRjaENoYXJSZWFkeToKICAgICBzdWJp
IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlOjptX21pblt0Ml0sIHQwCi0gICAgbG9hZHAgVW5saW5r
ZWRTaW1wbGVKdW1wVGFibGU6Om1fYnJhbmNoT2Zmc2V0cyArIEZpeGVkVmVjdG9yOjptX3N0b3Jh
Z2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0Ml0sIHQyCisgICAgbG9hZHAgVW5saW5rZWRT
aW1wbGVKdW1wVGFibGU6Om1fYnJhbmNoT2Zmc2V0cyArIEludDMyRml4ZWRWZWN0b3I6Om1fc3Rv
cmFnZVt0Ml0sIHQyCiAgICAgYnRweiB0MiwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCi0gICAg
YmlhZXEgdDAsIFJlZkNvdW50ZWRBcnJheVN0b3JhZ2VOb25OdWxsU2l6ZU9mZnNldFt0Ml0sIC5v
cFN3aXRjaENoYXJGYWxsVGhyb3VnaAotICAgIGxvYWRpcyBbdDIsIHQwLCA0XSwgdDEKKyAgICBi
aWFlcSB0MCwgSW50MzJGaXhlZFZlY3Rvcjo6U3RvcmFnZTo6bV9zaXplW3QyXSwgLm9wU3dpdGNo
Q2hhckZhbGxUaHJvdWdoCisgICAgbG9hZGlzIChjb25zdGV4cHIgKEludDMyRml4ZWRWZWN0b3I6
OlN0b3JhZ2U6Om9mZnNldE9mRGF0YSgpKSlbdDIsIHQwLCA0XSwgdDEKICAgICBidGl6IHQxLCAu
b3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKICAgICBkaXNwYXRjaEluZGlyZWN0KHQxKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3YzhkMzU0ZWQ2NTNiOWFk
NWRlYWZhMTRiODllYjBiNjExN2FkOWE0Li40OTM3M2U2ZjE3YzE3NGJlYjBhNjI3YTBkOTc3MTQ4
OWRiZTM3MTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTc1OCw2ICs3NTgsOCBAQAogCQlFMzM5QzE2MzI0NEI0RTg3MDAzNTlEQTkgLyogRGF0YVJlZi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhUmVmLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzM0Q1Rjg3MUZCRUQ2NjcwMEJGNjI1RSAvKiBSZWN1cnNhYmxl
TGFtYmRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlY3Vyc2FibGVMYW1i
ZGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM0Q0QwRDAyMjgxMEEwMjAwMjBE
Mjk5IC8qIFBhY2tlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWNrZWQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTM1MzhENEMyNzYyMjA4ODAwNzVEQTUwIC8qIEVtYmVkZGVkRml4ZWRW
ZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRW1iZWRkZWRGaXhlZFZlY3Rvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFMzUzOEQ0RDI3NjIyMDg4MDA3NURBNTAgLyogVHJhaWxpbmdB
cnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFpbGluZ0FycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzNjBDNzY0MjEyN0I4NUIwMEM5MEYwRSAvKiBVbmFsaWduZWRBY2Nlc3Mu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5hbGlnbmVkQWNjZXNzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNjBDNzY1MjEyN0I4NUMwMEM5MEYwRSAvKiBV
bmV4cGVjdGVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuZXhwZWN0ZWQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2ODk1Q0IyM0E0NDVDRDAwOERENEM4
IC8qIFBhY2tlZFJlZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWNrZWRSZWYuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTc4MSw2ICs3ODMsNyBAQAogCQlFM0UwRjA0RjI2MTk3MTU3MDA0
NjQwRkMgLyogRml4ZWRWZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRml4ZWRWZWN0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNFMTU4MjUxRUFEQTUzQzAwNEEwNzlEIC8qIFN5
c3RlbUZyZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3lzdGVtRnJlZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0U2NEYwQjIyODEzNDI4MDAxRTU1QjQg
LyogTm9ubW92YWJsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb25tb3ZhYmxlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzRTgxNjJGMjc2NDc5OTMwMEJBQTQ1QiAvKiBSZWZDb3VudGVk
Rml4ZWRWZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVmQ291bnRlZEZpeGVkVmVjdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0MTlGMkU2MjNBQjlFMjMwMEIyNjEyOSAvKiBW
ZWN0b3JIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZlY3Rvckhhc2gu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQzMUNDNEEyMTE4N0FEQjAwMEM4QTA3
IC8qIERpc3BhdGNoU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3Bh
dGNoU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0QTBBRDM3MUE5NjI0NTUw
MDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV29ya1F1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNzEs
NiArMTA3NCw3IEBACiAJCQkJQThBNDcyODAxNTFBODI1QTAwNDEyM0ZGIC8qIERvdWJseUxpbmtl
ZExpc3QuaCAqLywKIAkJCQlBOEE0NzI5NzE1MUE4MjVBMDA0MTIzRkYgLyogZHRvYS5jcHAgKi8s
CiAJCQkJQThBNDcyOTgxNTFBODI1QTAwNDEyM0ZGIC8qIGR0b2EuaCAqLywKKwkJCQlFMzUzOEQ0
QzI3NjIyMDg4MDA3NURBNTAgLyogRW1iZWRkZWRGaXhlZFZlY3Rvci5oICovLAogCQkJCTUzMzhF
QkE0MjNBQjA0RDEwMDM4MjY2MiAvKiBFbnVtQ2xhc3NPcGVyYXRvck92ZXJsb2Fkcy5oICovLAog
CQkJCTFBRUE4OEUxMUQ2QkJDRjQwMEU1QUQ2NCAvKiBFbnVtVHJhaXRzLmggKi8sCiAJCQkJQUQ3
QzQzNEExREQyQTRBNzAwMjY4ODhCIC8qIEV4cGVjdGVkLmggKi8sCkBAIC0xMjY3LDYgKzEyNzEs
NyBAQAogCQkJCUE4QTQ3MkZGMTUxQTgyNUIwMDQxMjNGRiAvKiBSZWZDb3VudGVkLmggKi8sCiAJ
CQkJMEZBNkYzOTAyMENDNjFFQjAwQTAzRENEIC8qIFJlZkNvdW50ZWRBcnJheS5jcHAgKi8sCiAJ
CQkJQThBNDczMDAxNTFBODI1QjAwNDEyM0ZGIC8qIFJlZkNvdW50ZWRBcnJheS5oICovLAorCQkJ
CUUzRTgxNjJGMjc2NDc5OTMwMEJBQTQ1QiAvKiBSZWZDb3VudGVkRml4ZWRWZWN0b3IuaCAqLywK
IAkJCQlBOEE0NzMwMTE1MUE4MjVCMDA0MTIzRkYgLyogUmVmQ291bnRlZExlYWtDb3VudGVyLmNw
cCAqLywKIAkJCQlBOEE0NzMwMjE1MUE4MjVCMDA0MTIzRkYgLyogUmVmQ291bnRlZExlYWtDb3Vu
dGVyLmggKi8sCiAJCQkJODZGNDZGNUYxQTI4NDBFRTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIuaCAq
LywKQEAgLTEzNTcsNiArMTM2Miw3IEBACiAJCQkJMEY3MDc1RjMxRkJGNTM3QTAwNDg5QUYwIC8q
IFRpbWluZ1Njb3BlLmggKi8sCiAJCQkJNTUzMDcxQzkxQzQwNDI3MjAwMzg0ODk4IC8qIFRpbnlM
UlVDYWNoZS5oICovLAogCQkJCTBGRUQ2N0I1MUIyMkQ0RDgwMDY2Q0UxNSAvKiBUaW55UHRyU2V0
LmggKi8sCisJCQkJRTM1MzhENEQyNzYyMjA4ODAwNzVEQTUwIC8qIFRyYWlsaW5nQXJyYXkuaCAq
LywKIAkJCQk1MjFDQzZCMzI0QTI3N0MyMDA0Mzc3RDYgLyogVHJhbnNsYXRlZFByb2Nlc3MuY3Bw
ICovLAogCQkJCTJEMUYyRjQ2MjQ5OEY3MzMwMEM2M0E4MyAvKiBUcmFuc2xhdGVkUHJvY2Vzcy5o
ICovLAogCQkJCTE0OUVGMTYyMTZCQkZFMEQwMDBBNDMzMSAvKiBUcmlTdGF0ZS5oICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9D
TWFrZUxpc3RzLnR4dAppbmRleCBkZTFkYmY2NzMzYTU4N2Y5YWU5MjViN2VlM2JhYmZjODVmMWFi
NDc5Li5lMjBhMGIzMzI5NmY5ZmIyZGE4ZjExNGMyYjgxM2Y0YzZiZTMzNTNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFr
ZUxpc3RzLnR4dApAQCAtNjIsNiArNjIsNyBAQCBzZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAgICAg
RGlzYWxsb3dDVHlwZS5oCiAgICAgRG9taW5hdG9ycy5oCiAgICAgRG91Ymx5TGlua2VkTGlzdC5o
CisgICAgRW1iZWRkZWRGaXhlZFZlY3Rvci5oCiAgICAgRW51bUNsYXNzT3BlcmF0b3JPdmVybG9h
ZHMuaAogICAgIEVudW1UcmFpdHMuaAogICAgIEV4cGVjdGVkLmgKQEAgLTIxOSw2ICsyMjAsNyBA
QCBzZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgUmVmLmgKICAgICBSZWZDb3VudGVkLmgKICAg
ICBSZWZDb3VudGVkQXJyYXkuaAorICAgIFJlZkNvdW50ZWRGaXhlZFZlY3Rvci5oCiAgICAgUmVm
Q291bnRlZExlYWtDb3VudGVyLmgKICAgICBSZWZDb3VudGVyLmgKICAgICBSZWZQdHIuaApAQCAt
Mjg5LDYgKzI5MSw3IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMKICAgICBUaW1pbmdTY29wZS5o
CiAgICAgVGlueUxSVUNhY2hlLmgKICAgICBUaW55UHRyU2V0LmgKKyAgICBUcmFpbGluZ0FycmF5
LmgKICAgICBUcmFuc2xhdGVkUHJvY2Vzcy5oCiAgICAgVHJpU3RhdGUuaAogICAgIFR5cGVDYXN0
cy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9FbWJlZGRlZEZpeGVkVmVjdG9yLmggYi9T
b3VyY2UvV1RGL3d0Zi9FbWJlZGRlZEZpeGVkVmVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTc3NzkxOGUw
MWFiODBmZGU2NjllZDlkZjQxN2M5ZmUyZDFjNGU2MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0VtYmVkZGVkRml4ZWRWZWN0b3IuaApAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL05vbm1vdmFibGUuaD4K
KyNpbmNsdWRlIDx3dGYvVHJhaWxpbmdBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBFbWJl
ZGRlZEZpeGVkVmVjdG9yIGZpbmFsIDogcHVibGljIFRyYWlsaW5nQXJyYXk8RW1iZWRkZWRGaXhl
ZFZlY3RvcjxUPiwgVD4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKEVtYmVkZGVkRml4
ZWRWZWN0b3IpOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEVtYmVkZGVkRml4ZWRWZWN0b3Ip
OworICAgIFdURl9NQUtFX05PTk1PVkFCTEUoRW1iZWRkZWRGaXhlZFZlY3Rvcik7CitwdWJsaWM6
CisgICAgdXNpbmcgQmFzZSA9IFRyYWlsaW5nQXJyYXk8RW1iZWRkZWRGaXhlZFZlY3RvcjxUPiwg
VD47CisKKyAgICBzdGF0aWMgVW5pcXVlUmVmPEVtYmVkZGVkRml4ZWRWZWN0b3I+IGNyZWF0ZSh1
bnNpZ25lZCBzaXplKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFVuaXF1ZVJlZiB7ICpuZXcgKE5v
dE51bGwsIGZhc3RNYWxsb2MoQmFzZTo6YWxsb2NhdGlvblNpemUoc2l6ZSkpKSBFbWJlZGRlZEZp
eGVkVmVjdG9yKHNpemUpIH07CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW5wdXRJ
dGVyYXRvcj4KKyAgICBzdGF0aWMgVW5pcXVlUmVmPEVtYmVkZGVkRml4ZWRWZWN0b3I+IGNyZWF0
ZShJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QpCisgICAgeworICAgICAg
ICB1bnNpZ25lZCBzaXplID0gc3RkOjpkaXN0YW5jZShmaXJzdCwgbGFzdCk7CisgICAgICAgIHJl
dHVybiBVbmlxdWVSZWYgeyAqbmV3IChOb3ROdWxsLCBmYXN0TWFsbG9jKEJhc2U6OmFsbG9jYXRp
b25TaXplKHNpemUpKSkgRW1iZWRkZWRGaXhlZFZlY3RvcihzaXplLCBmaXJzdCwgbGFzdCkgfTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92
ZXJmbG93SGFuZGxlcj4KKyAgICBzdGF0aWMgVW5pcXVlUmVmPEVtYmVkZGVkRml4ZWRWZWN0b3I+
IGNyZWF0ZUZyb21WZWN0b3IoY29uc3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxv
d0hhbmRsZXI+JiBvdGhlcikKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHNpemUgPSBzdGQ6OnNp
emUob3RoZXIpOworICAgICAgICByZXR1cm4gVW5pcXVlUmVmIHsgKm5ldyAoTm90TnVsbCwgZmFz
dE1hbGxvYyhCYXNlOjphbGxvY2F0aW9uU2l6ZShzaXplKSkpIEVtYmVkZGVkRml4ZWRWZWN0b3Io
c2l6ZSwgc3RkOjpiZWdpbihvdGhlciksIHN0ZDo6ZW5kKG90aGVyKSkgfTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxl
cj4KKyAgICBzdGF0aWMgVW5pcXVlUmVmPEVtYmVkZGVkRml4ZWRWZWN0b3I+IGNyZWF0ZUZyb21W
ZWN0b3IoVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiYgb3RoZXIp
CisgICAgeworICAgICAgICBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxl
cj4gY29udGFpbmVyID0gV1RGTW92ZShvdGhlcik7CisgICAgICAgIHVuc2lnbmVkIHNpemUgPSBz
dGQ6OnNpemUoY29udGFpbmVyKTsKKyAgICAgICAgcmV0dXJuIFVuaXF1ZVJlZiB7ICpuZXcgKE5v
dE51bGwsIGZhc3RNYWxsb2MoQmFzZTo6YWxsb2NhdGlvblNpemUoc2l6ZSkpKSBFbWJlZGRlZEZp
eGVkVmVjdG9yKHNpemUsIHN0ZDo6bW92ZV9pdGVyYXRvciB7IHN0ZDo6YmVnaW4oY29udGFpbmVy
KSB9LCBzdGQ6Om1vdmVfaXRlcmF0b3IgeyBzdGQ6OmVuZChjb250YWluZXIpIH0pIH07CisgICAg
fQorCisgICAgVW5pcXVlUmVmPEVtYmVkZGVkRml4ZWRWZWN0b3I+IGNsb25lKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBjcmVhdGUoQmFzZTo6YmVnaW4oKSwgQmFzZTo6ZW5kKCkpOwor
ICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBFbWJlZGRlZEZpeGVkVmVjdG9yJiBv
dGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKKyAg
ICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRW1iZWRkZWRGaXhlZFZlY3RvciYgb3Ro
ZXIpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoQmFzZTo6c2l6ZSgpICE9IG90aGVyLnNpemUo
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IEJhc2U6OnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAoQmFzZTo6YXQoaSkg
IT0gb3RoZXIuYXQoaSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBFbWJlZGRlZEZp
eGVkVmVjdG9yKHVuc2lnbmVkIHNpemUpCisgICAgICAgIDogQmFzZShzaXplKQorICAgIHsKKyAg
ICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yPgorICAgIEVtYmVkZGVk
Rml4ZWRWZWN0b3IodW5zaWduZWQgc2l6ZSwgSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVy
YXRvciBsYXN0KQorICAgICAgICA6IEJhc2Uoc2l6ZSwgZmlyc3QsIGxhc3QpCisgICAgeworICAg
IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OkVtYmVkZGVkRml4ZWRW
ZWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaXhlZFZlY3Rvci5oIGIvU291cmNl
L1dURi93dGYvRml4ZWRWZWN0b3IuaAppbmRleCAzMjhmOTgxNTEwYmY3YjY0ZjczMGYxYWJiOGVl
MTEwODMzNzZjMWQ0Li4yMjk0MzY2ZjA4ODI5MTE3YzYwNjhhNGQxZjc0Y2VjZTdlMWE0NjE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaXhlZFZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0ZpeGVkVmVjdG9yLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNp
bmNsdWRlIDx3dGYvRW1iZWRkZWRGaXhlZFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC0zNCw2ICszNSw3IEBAIG5hbWVzcGFj
ZSBXVEYgewogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNsYXNzIEZpeGVkVmVjdG9yIHsKIHB1Ymxp
YzoKKyAgICB1c2luZyBTdG9yYWdlID0gRW1iZWRkZWRGaXhlZFZlY3RvcjxUPjsKICAgICB1c2lu
ZyBpdGVyYXRvciA9IFQqOwogICAgIHVzaW5nIGNvbnN0X2l0ZXJhdG9yID0gY29uc3QgVCo7CiAg
ICAgdXNpbmcgcmV2ZXJzZV9pdGVyYXRvciA9IHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRv
cj47CkBAIC00MSw3ICs0Myw3IEBAIGNsYXNzIEZpeGVkVmVjdG9yIHsKIAogICAgIEZpeGVkVmVj
dG9yKCkgPSBkZWZhdWx0OwogICAgIEZpeGVkVmVjdG9yKGNvbnN0IEZpeGVkVmVjdG9yJiBvdGhl
cikKLSAgICAgICAgOiBtX3N0b3JhZ2Uob3RoZXIubV9zdG9yYWdlLmNsb25lKCkpCisgICAgICAg
IDogbV9zdG9yYWdlKG90aGVyLm1fc3RvcmFnZSA/IG90aGVyLm1fc3RvcmFnZS0+Y2xvbmUoKS5t
b3ZlVG9VbmlxdWVQdHIoKSA6IG51bGxwdHIpCiAgICAgeyB9CiAgICAgRml4ZWRWZWN0b3IoRml4
ZWRWZWN0b3ImJiBvdGhlcikgPSBkZWZhdWx0OwogCkBAIC02MCw3NiArNjIsMTAyIEBAIGNsYXNz
IEZpeGVkVmVjdG9yIHsKICAgICB9CiAKICAgICBleHBsaWNpdCBGaXhlZFZlY3RvcihzaXplX3Qg
c2l6ZSkKLSAgICAgICAgOiBtX3N0b3JhZ2Uoc2l6ZSkKKyAgICAgICAgOiBtX3N0b3JhZ2Uoc2l6
ZSA/IFN0b3JhZ2U6OmNyZWF0ZShzaXplKS5tb3ZlVG9VbmlxdWVQdHIoKSA6IG51bGxwdHIpCiAg
ICAgeyB9CiAKICAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92
ZXJmbG93SGFuZGxlcj4KICAgICBleHBsaWNpdCBGaXhlZFZlY3Rvcihjb25zdCBWZWN0b3I8VCwg
aW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4mIG90aGVyKQotICAgICAgICA6IG1fc3Rv
cmFnZShvdGhlcikKKyAgICAgICAgOiBtX3N0b3JhZ2Uob3RoZXIuaXNFbXB0eSgpID8gbnVsbHB0
ciA6IFN0b3JhZ2U6OmNyZWF0ZUZyb21WZWN0b3Iob3RoZXIpLm1vdmVUb1VuaXF1ZVB0cigpKQog
ICAgIHsgfQogCiAgICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBP
dmVyZmxvd0hhbmRsZXI+CiAgICAgRml4ZWRWZWN0b3ImIG9wZXJhdG9yPShjb25zdCBWZWN0b3I8
VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4mIG90aGVyKQogICAgIHsKLSAgICAg
ICAgbV9zdG9yYWdlID0gb3RoZXI7CisgICAgICAgIG1fc3RvcmFnZSA9IG90aGVyLmlzRW1wdHko
KSA/IG51bGxwdHIgOiBTdG9yYWdlOjpjcmVhdGVGcm9tVmVjdG9yKG90aGVyKS5tb3ZlVG9Vbmlx
dWVQdHIoKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHNp
emVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPgogICAgIGV4cGxp
Y2l0IEZpeGVkVmVjdG9yKFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVy
PiYmIG90aGVyKQotICAgICAgICA6IG1fc3RvcmFnZShXVEZNb3ZlKG90aGVyKSkKLSAgICB7IH0K
KyAgICB7CisgICAgICAgIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVy
PiB0YXJnZXQgPSBXVEZNb3ZlKG90aGVyKTsKKyAgICAgICAgbV9zdG9yYWdlID0gdGFyZ2V0Lmlz
RW1wdHkoKSA/IG51bGxwdHIgOiBTdG9yYWdlOjpjcmVhdGVGcm9tVmVjdG9yKFdURk1vdmUodGFy
Z2V0KSkubW92ZVRvVW5pcXVlUHRyKCk7CisgICAgfQogCiAgICAgdGVtcGxhdGU8c2l6ZV90IGlu
bGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+CiAgICAgRml4ZWRWZWN0b3Im
IG9wZXJhdG9yPShWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4mJiBv
dGhlcikKICAgICB7Ci0gICAgICAgIG1fc3RvcmFnZSA9IFdURk1vdmUob3RoZXIpOworICAgICAg
ICBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4gdGFyZ2V0ID0gV1RG
TW92ZShvdGhlcik7CisgICAgICAgIG1fc3RvcmFnZSA9IHRhcmdldC5pc0VtcHR5KCkgPyBudWxs
cHRyIDogU3RvcmFnZTo6Y3JlYXRlRnJvbVZlY3RvcihXVEZNb3ZlKHRhcmdldCkpLm1vdmVUb1Vu
aXF1ZVB0cigpOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgc2l6ZV90IHNp
emUoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2Uuc2l6ZSgpOyB9Ci0gICAgYm9vbCBpc0VtcHR5
KCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlLmlzRW1wdHkoKTsgfQotICAgIHNpemVfdCBieXRl
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZS5ieXRlU2l6ZSgpOyB9CisgICAgc2l6ZV90
IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UgPyBtX3N0b3JhZ2UtPnNpemUoKSA6IDA7
IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UgPyBtX3N0b3Jh
Z2UtPmlzRW1wdHkoKSA6IHRydWU7IH0KKyAgICBzaXplX3QgYnl0ZVNpemUoKSBjb25zdCB7IHJl
dHVybiBtX3N0b3JhZ2UgPyBtX3N0b3JhZ2UtPmJ5dGVTaXplKCkgOiAwOyB9CiAKLSAgICBUKiBk
YXRhKCkgeyByZXR1cm4gbV9zdG9yYWdlLmRhdGEoKTsgfQotICAgIGl0ZXJhdG9yIGJlZ2luKCkg
eyByZXR1cm4gbV9zdG9yYWdlLmJlZ2luKCk7IH0KLSAgICBpdGVyYXRvciBlbmQoKSB7IHJldHVy
biBtX3N0b3JhZ2UuZW5kKCk7IH0KKyAgICBUKiBkYXRhKCkgeyByZXR1cm4gbV9zdG9yYWdlID8g
bV9zdG9yYWdlLT5kYXRhKCkgOiBudWxscHRyOyB9CisgICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJl
dHVybiBtX3N0b3JhZ2UgPyBtX3N0b3JhZ2UtPmJlZ2luKCkgOiBudWxscHRyOyB9CisgICAgaXRl
cmF0b3IgZW5kKCkgeyByZXR1cm4gbV9zdG9yYWdlID8gbV9zdG9yYWdlLT5lbmQoKSA6IG51bGxw
dHI7IH0KIAogICAgIGNvbnN0IFQqIGRhdGEoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEZp
eGVkVmVjdG9yKj4odGhpcyktPmRhdGEoKTsgfQogICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkg
Y29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxGaXhlZFZlY3Rvcio+KHRoaXMpLT5iZWdpbigpOyB9
CiAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxGaXhl
ZFZlY3Rvcio+KHRoaXMpLT5lbmQoKTsgfQogCi0gICAgcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4o
KSB7IHJldHVybiBtX3N0b3JhZ2UucmJlZ2luKCk7IH0KLSAgICByZXZlcnNlX2l0ZXJhdG9yIHJl
bmQoKSB7IHJldHVybiBtX3N0b3JhZ2UucmVuZCgpOyB9Ci0gICAgY29uc3RfcmV2ZXJzZV9pdGVy
YXRvciByYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UucmJlZ2luKCk7IH0KLSAgICBj
b25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UucmVu
ZCgpOyB9CisgICAgcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSB7IHJldHVybiBtX3N0b3JhZ2Ug
PyBtX3N0b3JhZ2UtPnJiZWdpbigpIDogcmV2ZXJzZV9pdGVyYXRvcihudWxscHRyKTsgfQorICAg
IHJldmVyc2VfaXRlcmF0b3IgcmVuZCgpIHsgcmV0dXJuIG1fc3RvcmFnZSA/IG1fc3RvcmFnZS0+
cmVuZCgpIDogcmV2ZXJzZV9pdGVyYXRvcihudWxscHRyKTsgfQorICAgIGNvbnN0X3JldmVyc2Vf
aXRlcmF0b3IgcmJlZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlID8gbV9zdG9yYWdlLT5y
YmVnaW4oKSA6IGNvbnN0X3JldmVyc2VfaXRlcmF0b3IobnVsbHB0cik7IH0KKyAgICBjb25zdF9y
ZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UgPyBtX3N0b3Jh
Z2UtPnJlbmQoKSA6IGNvbnN0X3JldmVyc2VfaXRlcmF0b3IobnVsbHB0cik7IH0KIAotICAgIFQm
IGF0KHNpemVfdCBpKSB7IHJldHVybiBtX3N0b3JhZ2UuYXQoaSk7IH0KLSAgICBjb25zdCBUJiBh
dChzaXplX3QgaSkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlLmF0KGkpOyB9CisgICAgVCYgYXQo
c2l6ZV90IGkpIHsgcmV0dXJuIG1fc3RvcmFnZS0+YXQoaSk7IH0KKyAgICBjb25zdCBUJiBhdChz
aXplX3QgaSkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlLT5hdChpKTsgfQogCi0gICAgVCYgb3Bl
cmF0b3JbXShzaXplX3QgaSkgeyByZXR1cm4gYXQoaSk7IH0KLSAgICBjb25zdCBUJiBvcGVyYXRv
cltdKHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBhdChpKTsgfQorICAgIFQmIG9wZXJhdG9yW10o
c2l6ZV90IGkpIHsgcmV0dXJuIG1fc3RvcmFnZS0+YXQoaSk7IH0KKyAgICBjb25zdCBUJiBvcGVy
YXRvcltdKHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UtPmF0KGkpOyB9CiAKICAg
ICBUJiBmaXJzdCgpIHsgcmV0dXJuICgqdGhpcylbMF07IH0KICAgICBjb25zdCBUJiBmaXJzdCgp
IGNvbnN0IHsgcmV0dXJuICgqdGhpcylbMF07IH0KICAgICBUJiBsYXN0KCkgeyByZXR1cm4gKCp0
aGlzKVtzaXplKCkgLSAxXTsgfQogICAgIGNvbnN0IFQmIGxhc3QoKSBjb25zdCB7IHJldHVybiAo
KnRoaXMpW3NpemUoKSAtIDFdOyB9CiAKLSAgICB2b2lkIGZpbGwoY29uc3QgVCYgdmFsKSB7IG1f
c3RvcmFnZS5maWxsKHZhbCk7IH0KKyAgICB2b2lkIGZpbGwoY29uc3QgVCYgdmFsKQorICAgIHsK
KyAgICAgICAgaWYgKCFtX3N0b3JhZ2UpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1f
c3RvcmFnZS0+ZmlsbCh2YWwpOworICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBG
aXhlZFZlY3RvcjxUPiYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZSA9PSBvdGhlci5t
X3N0b3JhZ2U7IH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRml4ZWRWZWN0b3I8VD4mIG90
aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAg
IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaXhlZFZlY3RvcjxUPiYgb3RoZXIpIGNv
bnN0CisgICAgeworICAgICAgICBpZiAoIW1fc3RvcmFnZSkgeworICAgICAgICAgICAgaWYgKCFv
dGhlci5tX3N0b3JhZ2UpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ICByZXR1cm4gb3RoZXIubV9zdG9yYWdlLT5pc0VtcHR5KCk7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKCFvdGhlci5tX3N0b3JhZ2UpCisgICAgICAgICAgICByZXR1cm4gbV9zdG9yYWdlLT5pc0Vt
cHR5KCk7CisgICAgICAgIHJldHVybiAqbV9zdG9yYWdlID09ICpvdGhlci5tX3N0b3JhZ2U7Cisg
ICAgfQogCiAgICAgdm9pZCBzd2FwKEZpeGVkVmVjdG9yPFQ+JiBvdGhlcikKICAgICB7Ci0gICAg
ICAgIG1fc3RvcmFnZS5zd2FwKG90aGVyLm1fc3RvcmFnZSk7CisgICAgICAgIHVzaW5nIHN0ZDo6
c3dhcDsKKyAgICAgICAgc3dhcChtX3N0b3JhZ2UsIG90aGVyLm1fc3RvcmFnZSk7CiAgICAgfQog
CiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlN0b3JhZ2UoKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoRml4ZWRWZWN0b3IsIG1fc3RvcmFnZSk7IH0KIAorICAgIFN0b3JhZ2UqIGdldFN0
b3JhZ2UoKSB7IHJldHVybiBtX3N0b3JhZ2UuZ2V0KCk7IH0KKwogcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKLSAgICBSZWZDb3VudGVkQXJy
YXk8VD4gbV9zdG9yYWdlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTdG9yYWdlPiBtX3N0b3JhZ2U7
CiB9Owogc3RhdGljX2Fzc2VydChzaXplb2YoRml4ZWRWZWN0b3I8aW50PikgPT0gc2l6ZW9mKGlu
dCopKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUmVmQ291bnRlZEZpeGVkVmVjdG9y
LmggYi9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkRml4ZWRWZWN0b3IuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
MmYzMzczZTE5NmQ3ZWUyMDJjM2U5ODViMjhhYjJlN2UxYmViYjc2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dURi93dGYvUmVmQ291bnRlZEZpeGVkVmVjdG9yLmgKQEAgLTAsMCArMSwxMTAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UcmFpbGluZ0FycmF5Lmg+CisKK25hbWVzcGFjZSBXVEYg
eworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBib29sIGlzVGhyZWFkU2FmZT4KK2NsYXNzIFJlZkNv
dW50ZWRGaXhlZFZlY3RvckJhc2UgZmluYWwgOiBwdWJsaWMgc3RkOjpjb25kaXRpb25hbDxpc1Ro
cmVhZFNhZmUsIFRocmVhZFNhZmVSZWZDb3VudGVkPFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2U8
VCwgaXNUaHJlYWRTYWZlPj4sIFJlZkNvdW50ZWQ8UmVmQ291bnRlZEZpeGVkVmVjdG9yQmFzZTxU
LCBpc1RocmVhZFNhZmU+Pj46OnR5cGUsIHB1YmxpYyBUcmFpbGluZ0FycmF5PFJlZkNvdW50ZWRG
aXhlZFZlY3RvckJhc2U8VCwgaXNUaHJlYWRTYWZlPiwgVD4geworcHVibGljOgorICAgIHVzaW5n
IEJhc2UgPSBUcmFpbGluZ0FycmF5PFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2U8VCwgaXNUaHJl
YWRTYWZlPiwgVD47CisKKyAgICBzdGF0aWMgUmVmPFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2U+
IGNyZWF0ZSh1bnNpZ25lZCBzaXplKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgKE5vdE51bGwsIGZhc3RNYWxsb2MoQmFzZTo6YWxsb2NhdGlvblNpemUoc2l6ZSkpKSBSZWZD
b3VudGVkRml4ZWRWZWN0b3JCYXNlKHNpemUpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBJbnB1dEl0ZXJhdG9yPgorICAgIHN0YXRpYyBSZWY8UmVmQ291bnRlZEZpeGVkVmVjdG9y
QmFzZT4gY3JlYXRlKElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3IgbGFzdCkKKyAg
ICB7CisgICAgICAgIHVuc2lnbmVkIHNpemUgPSBzdGQ6OmRpc3RhbmNlKGZpcnN0LCBsYXN0KTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgKE5vdE51bGwsIGZhc3RNYWxsb2MoQmFzZTo6
YWxsb2NhdGlvblNpemUoc2l6ZSkpKSBSZWZDb3VudGVkRml4ZWRWZWN0b3JCYXNlKHNpemUsIGZp
cnN0LCBsYXN0KSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5
LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+CisgICAgc3RhdGljIFJlZjxSZWZDb3VudGVkRml4
ZWRWZWN0b3JCYXNlPiBjcmVhdGVGcm9tVmVjdG9yKGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBh
Y2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiYgb3RoZXIpCisgICAgeworICAgICAgICB1bnNpZ25lZCBz
aXplID0gc3RkOjpzaXplKG90aGVyKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgKE5v
dE51bGwsIGZhc3RNYWxsb2MoQmFzZTo6YWxsb2NhdGlvblNpemUoc2l6ZSkpKSBSZWZDb3VudGVk
Rml4ZWRWZWN0b3JCYXNlKHNpemUsIHN0ZDo6YmVnaW4ob3RoZXIpLCBzdGQ6OmVuZChvdGhlcikp
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1l
IE92ZXJmbG93SGFuZGxlcj4KKyAgICBzdGF0aWMgUmVmPFJlZkNvdW50ZWRGaXhlZFZlY3RvckJh
c2U+IGNyZWF0ZUZyb21WZWN0b3IoVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hh
bmRsZXI+JiYgb3RoZXIpCisgICAgeworICAgICAgICBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHks
IE92ZXJmbG93SGFuZGxlcj4gY29udGFpbmVyID0gV1RGTW92ZShvdGhlcik7CisgICAgICAgIHVu
c2lnbmVkIHNpemUgPSBzdGQ6OnNpemUoY29udGFpbmVyKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgKE5vdE51bGwsIGZhc3RNYWxsb2MoQmFzZTo6YWxsb2NhdGlvblNpemUoc2l6ZSkp
KSBSZWZDb3VudGVkRml4ZWRWZWN0b3JCYXNlKHNpemUsIHN0ZDo6bW92ZV9pdGVyYXRvciB7IHN0
ZDo6YmVnaW4oY29udGFpbmVyKSB9LCBzdGQ6Om1vdmVfaXRlcmF0b3IgeyBzdGQ6OmVuZChjb250
YWluZXIpIH0pKTsKKyAgICB9CisKKyAgICBSZWY8UmVmQ291bnRlZEZpeGVkVmVjdG9yQmFzZT4g
Y2xvbmUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZShCYXNlOjpiZWdpbigp
LCBCYXNlOjplbmQoKSk7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZkNv
dW50ZWRGaXhlZFZlY3RvckJhc2UmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
ICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBS
ZWZDb3VudGVkRml4ZWRWZWN0b3JCYXNlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIGlm
IChCYXNlOjpzaXplKCkgIT0gb3RoZXIuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgQmFzZTo6c2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgICAgIGlmIChCYXNlOjphdChpKSAhPSBvdGhlci5hdChpKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCitwcml2YXRlOgorICAgIFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2UodW5zaWduZWQgc2l6
ZSkKKyAgICAgICAgOiBCYXNlKHNpemUpCisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIElucHV0SXRlcmF0b3I+CisgICAgUmVmQ291bnRlZEZpeGVkVmVjdG9yQmFzZSh1bnNp
Z25lZCBzaXplLCBJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QpCisgICAg
ICAgIDogQmFzZShzaXplLCBmaXJzdCwgbGFzdCkKKyAgICB7CisgICAgfQorfTsKKwordGVtcGxh
dGU8dHlwZW5hbWUgVD4KK3VzaW5nIFJlZkNvdW50ZWRGaXhlZFZlY3RvciA9IFJlZkNvdW50ZWRG
aXhlZFZlY3RvckJhc2U8VCwgZmFsc2U+OwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3VzaW5nIFRo
cmVhZFNhZmVSZWZDb3VudGVkRml4ZWRWZWN0b3IgPSBSZWZDb3VudGVkRml4ZWRWZWN0b3JCYXNl
PFQsIHRydWU+OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpSZWZDb3VudGVk
Rml4ZWRWZWN0b3I7Cit1c2luZyBXVEY6OlRocmVhZFNhZmVSZWZDb3VudGVkRml4ZWRWZWN0b3I7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UcmFpbGluZ0FycmF5LmggYi9Tb3VyY2UvV1RG
L3d0Zi9UcmFpbGluZ0FycmF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQ1ZGMzN2IzN2U2Njc2MzYxNGQyOGU5
YmEzMDkyZGU4NTc4MDU0YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RyYWls
aW5nQXJyYXkuaApAQCAtMCwwICsxLDE0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8dHlwZV90cmFpdHM+
CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KworbmFtZXNwYWNlIFdURiB7CisKKy8vIFRyYWlsaW5nQXJyYXkgb2ZmZXJzIHRoZSBmZWF0dXJl
IHRyYWlsaW5nIGFycmF5IGluIHRoZSBkZXJpdmVkIGNsYXNzLgorLy8gV2UgY2FuIGFsbG9jYXRl
IGEgbWVtb3J5IGxpa2UgdGhlIGZvbGxvd2luZyBsYXlvdXQuCisvLworLy8gICAgIFsgIERlcml2
ZWRDbGFzcyAgXVsgVHJhaWxpbmcgQXJyYXkgXQorLy8KKy8vIEFuZCB0cmFpbGluZyBhcnJheSBv
ZmZlcnMgYXBwcm9wcmlhdGUgbWV0aG9kcyBmb3IgYWNjZXNzaW5nIGFuZCBkZXN0cnVjdGlvbnMu
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkLCB0eXBlbmFtZSBUPgorY2xhc3MgVHJhaWxpbmdB
cnJheSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVHJhaWxpbmdBcnJheSk7CisgICAgZnJp
ZW5kIGNsYXNzIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOworcHVibGljOgorICAgIHVzaW5n
IHZhbHVlX3R5cGUgPSBUOworICAgIHVzaW5nIHBvaW50ZXIgPSBUKjsKKyAgICB1c2luZyByZWZl
cmVuY2UgPSBUJjsKKyAgICB1c2luZyBjb25zdF9yZWZlcmVuY2UgPSBjb25zdCBUJjsKKyAgICB1
c2luZyBjb25zdF9wb2ludGVyID0gY29uc3QgVCo7CisgICAgdXNpbmcgc2l6ZV90eXBlID0gdW5z
aWduZWQ7CisgICAgdXNpbmcgZGlmZmVyZW5jZV90eXBlID0gc3RkOjptYWtlX3NpZ25lZF90PHNp
emVfdHlwZT47CisgICAgdXNpbmcgaXRlcmF0b3IgPSBUKjsKKyAgICB1c2luZyBjb25zdF9pdGVy
YXRvciA9IGNvbnN0IFQqOworICAgIHVzaW5nIHJldmVyc2VfaXRlcmF0b3IgPSBzdGQ6OnJldmVy
c2VfaXRlcmF0b3I8aXRlcmF0b3I+OworICAgIHVzaW5nIGNvbnN0X3JldmVyc2VfaXRlcmF0b3Ig
PSBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8Y29uc3RfaXRlcmF0b3I+OworCisgICAgZXhwbGljaXQg
VHJhaWxpbmdBcnJheSh1bnNpZ25lZCBzaXplKQorICAgICAgICA6IG1fc2l6ZShzaXplKQorICAg
IHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2ZpbmFsX3Y8RGVyaXZlZD4pOworICAg
ICAgICBWZWN0b3JUeXBlT3BlcmF0aW9uczxUPjo6aW5pdGlhbGl6ZUlmTm9uUE9EKGJlZ2luKCks
IGVuZCgpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yPgor
ICAgIFRyYWlsaW5nQXJyYXkodW5zaWduZWQgc2l6ZSwgSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5w
dXRJdGVyYXRvciBsYXN0KQorICAgICAgICA6IG1fc2l6ZShzaXplKQorICAgIHsKKyAgICAgICAg
c3RhdGljX2Fzc2VydChzdGQ6OmlzX2ZpbmFsX3Y8RGVyaXZlZD4pOworICAgICAgICBBU1NFUlQo
c3RkOjpkaXN0YW5jZShmaXJzdCwgbGFzdCkgPT0gc2l6ZSk7CisgICAgICAgIHN0ZDo6dW5pbml0
aWFsaXplZF9jb3B5KGZpcnN0LCBsYXN0LCBiZWdpbigpKTsKKyAgICB9CisKKyAgICB+VHJhaWxp
bmdBcnJheSgpCisgICAgeworICAgICAgICBWZWN0b3JUeXBlT3BlcmF0aW9uczxUPjo6ZGVzdHJ1
Y3QoYmVnaW4oKSwgZW5kKCkpOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90
IGFsbG9jYXRpb25TaXplKHVuc2lnbmVkIHNpemUpCisgICAgeworICAgICAgICByZXR1cm4gb2Zm
c2V0T2ZEYXRhKCkgKyBzaXplICogc2l6ZW9mKFQpOworICAgIH0KKworICAgIHVuc2lnbmVkIHNp
emUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiAhc2l6ZSgpOyB9CisgICAgdW5zaWduZWQgYnl0ZVNpemUoKSBjb25zdCB7IHJldHVy
biBzaXplKCkgKiBzaXplb2YoVCk7IH0KKworICAgIHBvaW50ZXIgZGF0YSgpIHsgcmV0dXJuIGJp
dHdpc2VfY2FzdDxUKj4oYml0d2lzZV9jYXN0PHVpbnQ4X3QqPih0aGlzKSArIG9mZnNldE9mRGF0
YSgpKTsgfQorICAgIGNvbnN0X3BvaW50ZXIgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDxjb25zdCBUKj4oYml0d2lzZV9jYXN0PGNvbnN0IHVpbnQ4X3QqPih0aGlzKSArIG9mZnNl
dE9mRGF0YSgpKTsgfQorCisgICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBkYXRhKCk7IH0K
KyAgICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiBkYXRhKCkgKyBzaXplKCk7IH0KKyAgICBjb25z
dF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGNiZWdpbigpOyB9CisgICAgY29uc3Rf
aXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gY2VuZCgpOyB9CisgICAgY29uc3RfaXRlcmF0
b3IgY2JlZ2luKCkgY29uc3QgeyByZXR1cm4gZGF0YSgpOyB9CisgICAgY29uc3RfaXRlcmF0b3Ig
Y2VuZCgpIGNvbnN0IHsgcmV0dXJuIGRhdGEoKSArIHNpemUoKTsgfQorCisgICAgcmV2ZXJzZV9p
dGVyYXRvciByYmVnaW4oKSB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsgfQorICAg
IHJldmVyc2VfaXRlcmF0b3IgcmVuZCgpIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoYmVnaW4o
KSk7IH0KKyAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0IHsgcmV0dXJu
IGNyYmVnaW4oKTsgfQorICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmVuZCgpIGNvbnN0IHsg
cmV0dXJuIGNyZW5kKCk7IH0KKyAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIGNyYmVnaW4oKSBj
b25zdCB7IHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsgfQorICAgIGNvbnN0
X3JldmVyc2VfaXRlcmF0b3IgY3JlbmQoKSBjb25zdCB7IHJldHVybiBjb25zdF9yZXZlcnNlX2l0
ZXJhdG9yKGJlZ2luKCkpOyB9CisKKyAgICByZWZlcmVuY2UgYXQodW5zaWduZWQgaSkKKyAgICB7
CisgICAgICAgIEFTU0VSVChpIDwgc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIGJlZ2luKClbaV07
CisgICAgfQorCisgICAgY29uc3RfcmVmZXJlbmNlIGF0KHVuc2lnbmVkIGkpIGNvbnN0CisgICAg
eworICAgICAgICBBU1NFUlQoaSA8IHNpemUoKSk7CisgICAgICAgIHJldHVybiBiZWdpbigpW2ld
OworICAgIH0KKworICAgIHJlZmVyZW5jZSBvcGVyYXRvcltdKHVuc2lnbmVkIGkpIHsgcmV0dXJu
IGF0KGkpOyB9CisgICAgY29uc3RfcmVmZXJlbmNlIG9wZXJhdG9yW10odW5zaWduZWQgaSkgY29u
c3QgeyByZXR1cm4gYXQoaSk7IH0KKworICAgIFQmIGZpcnN0KCkgeyByZXR1cm4gKCp0aGlzKVsw
XTsgfQorICAgIGNvbnN0IFQmIGZpcnN0KCkgY29uc3QgeyByZXR1cm4gKCp0aGlzKVswXTsgfQor
ICAgIFQmIGxhc3QoKSB7IHJldHVybiAoKnRoaXMpW3NpemUoKSAtIDFdOyB9CisgICAgY29uc3Qg
VCYgbGFzdCgpIGNvbnN0IHsgcmV0dXJuICgqdGhpcylbc2l6ZSgpIC0gMV07IH0KKworICAgIHZv
aWQgZmlsbChjb25zdCBUJiB2YWwpCisgICAgeworICAgICAgICBzdGQ6OmZpbGwoYmVnaW4oKSwg
ZW5kKCksIHZhbCk7CisgICAgfQorCisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlNpemUo
KSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRGVyaXZlZCwgbV9zaXplKTsgfQorICAgIHN0YXRp
YyBjb25zdGV4cHIgcHRyZGlmZl90IG9mZnNldE9mRGF0YSgpCisgICAgeworICAgICAgICByZXR1
cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPGFsaWdub2YoVCk+KHNpemVvZihEZXJpdmVkKSk7
CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgdW5zaWduZWQgbV9zaXplIHsgMCB9OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6VHJhaWxpbmdBcnJheTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5NmE4ZGJiODNiNzIy
NjQ0ZGM2ZjAyZWEzNWYyNTkwMTdhYjljNmJmLi41ZjZmZjg3MTY2NGRkNTdlZTY4MTUwMTQwZjZk
MjE1ODJjNThkZDk1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjEtMTItMTEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBJbnRyb2R1Y2UgVHJhaWxpbmdBcnJheQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MjAxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0VtYmVkZGVkRml4ZWRWZWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RGVzdHJ1Y3Rvck9ic2Vy
dmVyOjpEZXN0cnVjdG9yT2JzZXJ2ZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RGVzdHJ1
Y3Rvck9ic2VydmVyOjp+RGVzdHJ1Y3Rvck9ic2VydmVyKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OkRlc3RydWN0b3JPYnNlcnZlcjo6b3BlcmF0b3I9KToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9GaXhlZFZlY3Rvci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZDb3VudGVkRml4ZWRW
ZWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6RGVzdHJ1Y3Rvck9ic2VydmVyOjpEZXN0cnVjdG9yT2JzZXJ2ZXIp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RGVzdHJ1Y3Rvck9ic2VydmVyOjp+RGVzdHJ1Y3Rv
ck9ic2VydmVyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkRlc3RydWN0b3JPYnNlcnZlcjo6
b3BlcmF0b3I9KToKKwogMjAyMS0xMi0xMCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFw
cGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIEFkZCBuZXcgc2NyZWVuIGFuZCB3aW5kb3cgY2Fw
dHVyZSBiYWNrZW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMu
dHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAppbmRleCBmY2M5ZmZjNjEy
ZjZmOTAxN2Q2NDhkNjVmNTMwZTVmNjYzODg1NmU2Li5hMWE5MTQyZmZhOGI1NWY3N2I1NGU0ZmFl
ODU2ZGFmZjA5ZWMxYzNiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlz
dHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKQEAgLTM4LDYg
KzM4LDcgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgIFRlc3RzL1dURi9EYXRhTXV0ZXguY3Bw
CiAgICAgVGVzdHMvV1RGL0RhdGVNYXRoLmNwcAogICAgIFRlc3RzL1dURi9EZXF1ZS5jcHAKKyAg
ICBUZXN0cy9XVEYvRW1iZWRkZWRGaXhlZFZlY3Rvci5jcHAKICAgICBUZXN0cy9XVEYvRW51bVRy
YWl0cy5jcHAKICAgICBUZXN0cy9XVEYvRXhwZWN0ZWQuY3BwCiAgICAgVGVzdHMvV1RGL0ZpbGVT
eXN0ZW0uY3BwCkBAIC03NCw2ICs3NSw3IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICBUZXN0
cy9XVEYvUHJpb3JpdHlRdWV1ZS5jcHAKICAgICBUZXN0cy9XVEYvUmVkQmxhY2tUcmVlLmNwcAog
ICAgIFRlc3RzL1dURi9SZWYuY3BwCisgICAgVGVzdHMvV1RGL1JlZkNvdW50ZWRGaXhlZFZlY3Rv
ci5jcHAKICAgICBUZXN0cy9XVEYvUmVmQ291bnRlci5jcHAKICAgICBUZXN0cy9XVEYvUmVmTG9n
Z2VyLmNwcAogICAgIFRlc3RzL1dURi9SZWZQdHIuY3BwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDE3OGIzMDljNDVjM2EwNjRmMjhiMDdkYjBmYTkwMGI0NGQ3MTgyOWEuLmFjZDZjYmUyODBh
NDgyMTQyZGM4OWM3OWI4NDk1N2E2NTUxNzU4YmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC05NjUsNiArOTY1LDcgQEAKIAkJRTEyMjBEQ0ExNTVCMjhBQTAwMTNFMkZDIC8qIE1lbW9yeUNh
Y2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyMjBEQzkxNTVCMjg3RDAw
MTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0
bWwgKi87IH07CiAJCUUxOTRFMUJEMTc3RTUzQzcwMDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21E
aWRSZWNlaXZlUmVzcG9uc2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMTk0RTFCQzE3N0U1MzRBMDA5QzRENEUgLyogU3RvcExvYWRp
bmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLmh0bWwgKi87IH07CiAJCUUzMDJCREFBMjQwNEI5MjQw
MDg2NTI3NyAvKiBDb21wYWN0UmVmUHRyVHVwbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMwMkJEQTkyNDA0QjkyMzAwODY1Mjc3IC8qIENvbXBh
Y3RSZWZQdHJUdXBsZS5jcHAgKi87IH07CisJCUUzMTZENDIwMjc2NDdBMDIwMDI4N0IxNiAvKiBS
ZWZDb3VudGVkRml4ZWRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTMxNkQ0MUYyNzY0N0EwMjAwMjg3QjE2IC8qIFJlZkNvdW50ZWRGaXhl
ZFZlY3Rvci5jcHAgKi87IH07CiAJCUUzMjEwNTE5MjYxOTc5RjMwMDE1N0M2NyAvKiBGaXhlZFZl
Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzIxMDUxODI2MTk3OUYzMDAxNTdDNjcgLyogRml4ZWRWZWN0b3IuY3BwICovOyB9OwogCQlFMzI0
QTZGMDIwNDFDODIwMDBBNzY1OTMgLyogVW5pcXVlQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5OEJDMEYyMDQxQzc2MzAwMzg3MTM2IC8q
IFVuaXF1ZUFycmF5LmNwcCAqLzsgfTsKIAkJRTMyNUM5MDcyM0UzODcwMjAwQkM3RDNCIC8qIFBp
Y3R1cmVJblBpY3R1cmVTdXBwb3J0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTMyNUM5MDYyM0UzODcwMjAwQkM3RDNCIC8qIFBpY3R1cmVJblBpY3R1
cmVTdXBwb3J0Lm1tICovOyB9OwpAQCAtOTc0LDYgKzk3NSw3IEBACiAJCUUzNTVBNjMyMjYxNTcx
OEYwMDFDMTEyOSAvKiBSb2Jpbkhvb2RIYXNoTWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTVBNjMxMjYxNTcxOEYwMDFDMTEyOSAvKiBSb2Jp
bkhvb2RIYXNoTWFwLmNwcCAqLzsgfTsKIAkJRTM1QjkwODIyM0Y2MEREMDAwMDAxMUZGIC8qIExv
Y2FsaXplZERldmljZU1vZGVsLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM1QjkwODEyM0Y2MEREMDAwMDAxMUZGIC8qIExvY2FsaXplZERldmljZU1v
ZGVsLm1tICovOyB9OwogCQlFMzVGQzdCMjIyQjgyQTczMDBGMzJGOTggLyogSlNMb2NrVGFrZXNX
ZWJUaHJlYWRMb2NrLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM1RkM3QjEyMkI4MkE2RDAwRjMyRjk4IC8qIEpTTG9ja1Rha2VzV2ViVGhyZWFkTG9j
ay5tbSAqLzsgfTsKKwkJRTM2Qjg3QTMyNzYyMjE4NzAwNTlEMkY5IC8qIEVtYmVkZGVkRml4ZWRW
ZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM2Qjg3QTIyNzYyMjE4NjAwNTlEMkY5IC8qIEVtYmVkZGVkRml4ZWRWZWN0b3IuY3BwICovOyB9
OwogCQlFMzczRDc5MTFGMkNGMzUyMDBDNkZBQUYgLyogU2lnbmFscy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk1M0Y5NTFGMkNGMzIxMDBBNzZB
MkUgLyogU2lnbmFscy5jcHAgKi87IH07CiAJCUUzOEEwRDM1MUZENTBDQzMwMEU5OEM4QiAvKiBU
aHJlYWRpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM4QTBEMzQxRkQ1MENCQzAwRTk4QzhCIC8qIFRocmVhZGluZy5jcHAgKi87IH07CiAJCUUz
OEQ2NUNBMjNBNDVGQUEwMDYzRDY5QSAvKiBQYWNrZWRSZWYuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4RDY1QzgyM0E0NUZBOTAwNjNENjlBIC8q
IFBhY2tlZFJlZi5jcHAgKi87IH07CkBAIC0yODg4LDYgKzI4OTAsNyBAQAogCQlFMTk0RTFCQTE3
N0U1MTQ1MDA5QzRENEUgLyogU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU3RvcExvYWRpbmdGcm9tRGlk
UmVjZWl2ZVJlc3BvbnNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTk0RTFC
QzE3N0U1MzRBMDA5QzRENEUgLyogU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLmh0
bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmh0bWw7IHBhdGggPSBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UuaHRtbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMwMkJEQTkyNDA0QjkyMzAwODY1Mjc3IC8qIENv
bXBhY3RSZWZQdHJUdXBsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBDb21wYWN0UmVmUHRyVHVwbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
MzE2RDQxRjI3NjQ3QTAyMDAyODdCMTYgLyogUmVmQ291bnRlZEZpeGVkVmVjdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZkNvdW50ZWRGaXhlZFZlY3Rvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMjEwNTE4MjYxOTc5RjMwMDE1N0M2
NyAvKiBGaXhlZFZlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBGaXhlZFZlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMjVDOTA2
MjNFMzg3MDIwMEJDN0QzQiAvKiBQaWN0dXJlSW5QaWN0dXJlU3VwcG9ydC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFBpY3R1cmVJblBpY3R1cmVTdXBwb3J0Lm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzJCNTQ5MTIyODEwQUMwMDA4QUQ3MDIgLyogUGFja2VkLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFBhY2tlZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yODk2LDYgKzI4OTksNyBAQAogCQlFMzU1QTYzMTI2MTU3MThGMDAxQzExMjkgLyogUm9iaW5I
b29kSGFzaE1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSb2Jp
bkhvb2RIYXNoTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1QjkwODEy
M0Y2MEREMDAwMDAxMUZGIC8qIExvY2FsaXplZERldmljZU1vZGVsLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gTG9jYWxpemVkRGV2aWNlTW9kZWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzNUZDN0IxMjJCODJBNkQwMEYzMkY5OCAvKiBKU0xvY2tUYWtlc1dlYlRocmVhZExv
Y2subW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBKU0xvY2tUYWtl
c1dlYlRocmVhZExvY2subW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNkI4N0Ey
Mjc2MjIxODYwMDU5RDJGOSAvKiBFbWJlZGRlZEZpeGVkVmVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVtYmVkZGVkRml4ZWRWZWN0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4ODg3MDIwQzkwOTgxMDBFNjMyQkMgLyogV29ya2Vy
UG9vbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrZXJQb29s
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4QTBEMzQxRkQ1MENCQzAwRTk4
QzhCIC8qIFRocmVhZGluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBUaHJlYWRpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzhENjVDODIz
QTQ1RkE5MDA2M0Q2OUEgLyogUGFja2VkUmVmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFBhY2tlZFJlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC00NDgzLDYgKzQ0ODcsNyBAQAogCQkJCTdBQTAyMUJBMUFCMDlFQTcwMDUyOTUzRiAvKiBEYXRl
TWF0aC5jcHAgKi8sCiAJCQkJMUEzNTI0QTkxRDYyN0JENDAwMzE3MjlCIC8qIERlbGV0ZWRBZGRy
ZXNzT2ZPcGVyYXRvci5oICovLAogCQkJCUU0QTc1N0QzMTc4QUVBNUIwMEI1RDdBNCAvKiBEZXF1
ZS5jcHAgKi8sCisJCQkJRTM2Qjg3QTIyNzYyMjE4NjAwNTlEMkY5IC8qIEVtYmVkZGVkRml4ZWRW
ZWN0b3IuY3BwICovLAogCQkJCTFBRjdCMjFEMUQ2Q0QxMkUwMDhDMTI2QyAvKiBFbnVtVHJhaXRz
LmNwcCAqLywKIAkJCQlBRDdDNDM0QzFERDJBNTQ3MDAyNjg4OEIgLyogRXhwZWN0ZWQuY3BwICov
LAogCQkJCUEzMTA4MjcxMjFGMjk2RUMwMEMyOEI5NyAvKiBGaWxlU3lzdGVtLmNwcCAqLywKQEAg
LTQ1MjUsNiArNDUzMCw3IEBACiAJCQkJNTNFQzI1M0YxRTk2QkM4MDAwMDgzMUI5IC8qIFByaW9y
aXR5UXVldWUuY3BwICovLAogCQkJCTBGQzZDNENCMTQxMDI3RTAwMDVCN0YwQyAvKiBSZWRCbGFj
a1RyZWUuY3BwICovLAogCQkJCTkzQTQyN0FBMTgwREEyNjQwMENEMjRENyAvKiBSZWYuY3BwICov
LAorCQkJCUUzMTZENDFGMjc2NDdBMDIwMDI4N0IxNiAvKiBSZWZDb3VudGVkRml4ZWRWZWN0b3Iu
Y3BwICovLAogCQkJCTg2QkQxOTk3MUEyREIwNUIwMDZEQ0YwQSAvKiBSZWZDb3VudGVyLmNwcCAq
LywKIAkJCQk0NDJCQkY2ODFDOTFDQUQ5MDAxNzA4N0YgLyogUmVmTG9nZ2VyLmNwcCAqLywKIAkJ
CQk5M0E0MjdBRDE4MERBNjBGMDBDRDI0RDcgLyogUmVmTG9nZ2VyLmggKi8sCkBAIC01MjYzLDYg
KzUyNjksNyBAQAogCQkJCTVDMkMwMUE4MjczNDg4MzYwMEY4OUQzNyAvKiBDcm9zc1RocmVhZENv
cGllci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVBOTFEMEE1OTBDMDBGRUJDRjMgLyog
Q1N0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVBRDFEMEE1OTBDMDBGRUJDRjMg
LyogRGVxdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM2Qjg3QTMyNzYyMjE4NzAwNTlEMkY5
IC8qIEVtYmVkZGVkRml4ZWRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFGN0IyMUYx
RDZDRDE0RDAwOEMxMjZDIC8qIEVudW1UcmFpdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQUQ3
QzQzNEQxREQyQTU0RTAwMjY4ODhCIC8qIEV4cGVjdGVkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUEzMTA4MjcyMjFGMjk2RkYwMEMyOEI5NyAvKiBGaWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtNTMwNCw2ICs1MzExLDcgQEAKIAkJCQk1M0VDMjU0MTFFOTZGRDg3MDAwODMxQjkgLyog
UHJpb3JpdHlRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYxMzFEMEE1OTBDMDBG
RUJDRjMgLyogUmVkQmxhY2tUcmVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjE0MUQw
QTU5MEMwMEZFQkNGMyAvKiBSZWYuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTMxNkQ0MjAyNzY0
N0EwMjAwMjg3QjE2IC8qIFJlZkNvdW50ZWRGaXhlZFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3QzgzREYxNTFEMEE1OTBDMDBGRUJDRjMgLyogUmVmQ291bnRlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3QzgzREVENzFEMEE1OTBDMDBGRUJDRjMgLyogUmVmTG9nZ2VyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdDODNERjE2MUQwQTU5MEMwMEZFQkNGMyAvKiBSZWZQdHIuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9F
bWJlZGRlZEZpeGVkVmVjdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Vt
YmVkZGVkRml4ZWRWZWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhN2FiNTI0Y2JkZjBhMThjY2M3NDZh
NmM3MGE3NjllNmYwZjA4YzIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9FbWJlZGRlZEZpeGVkVmVjdG9yLmNwcApAQCAtMCwwICsxLDI3MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIk1vdmVPbmx5LmgiCisj
aW5jbHVkZSA8d3RmL0VtYmVkZGVkRml4ZWRWZWN0b3IuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgeworCitURVNUKFdURl9FbWJlZGRlZEZpeGVkVmVjdG9yLCBFbXB0eSkKK3sKKyAgICBh
dXRvIHZlY3RvciA9IEVtYmVkZGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+OjpjcmVhdGUoMCk7Cisg
ICAgRVhQRUNUX1RSVUUodmVjdG9yLT5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9FUSgwVSwgdmVj
dG9yLT5zaXplKCkpOworfQorCitURVNUKFdURl9FbWJlZGRlZEZpeGVkVmVjdG9yLCBJdGVyYXRv
cikKK3sKKyAgICBhdXRvIGludFZlY3RvciA9IEVtYmVkZGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+
OjpjcmVhdGUoNCk7CisgICAgaW50VmVjdG9yLmdldCgpWzBdID0gMTA7CisgICAgaW50VmVjdG9y
LmdldCgpWzFdID0gMTE7CisgICAgaW50VmVjdG9yLmdldCgpWzJdID0gMTI7CisgICAgaW50VmVj
dG9yLmdldCgpWzNdID0gMTM7CisKKyAgICBhdXRvIGl0ID0gaW50VmVjdG9yLT5iZWdpbigpOwor
ICAgIGF1dG8gZW5kID0gaW50VmVjdG9yLT5lbmQoKTsKKyAgICBFWFBFQ1RfVFJVRShlbmQgIT0g
aXQpOworCisgICAgRVhQRUNUX0VRKDEwVSwgKml0KTsKKyAgICArK2l0OworICAgIEVYUEVDVF9F
USgxMVUsICppdCk7CisgICAgKytpdDsKKyAgICBFWFBFQ1RfRVEoMTJVLCAqaXQpOworICAgICsr
aXQ7CisgICAgRVhQRUNUX0VRKDEzVSwgKml0KTsKKyAgICArK2l0OworCisgICAgRVhQRUNUX1RS
VUUoZW5kID09IGl0KTsKK30KKworVEVTVChXVEZfRW1iZWRkZWRGaXhlZFZlY3RvciwgT3Zlcmxv
YWRlZE9wZXJhdG9yQW1wZXJzYW5kKQoreworICAgIHN0cnVjdCBUZXN0IHsKKyAgICBwcml2YXRl
OgorICAgICAgICBUZXN0KiBvcGVyYXRvciYoKSA9IGRlbGV0ZTsKKyAgICB9OworCisgICAgYXV0
byB2ZWN0b3IgPSBFbWJlZGRlZEZpeGVkVmVjdG9yPFRlc3Q+OjpjcmVhdGUoMSk7CisgICAgdmVj
dG9yLmdldCgpWzBdID0gVGVzdCgpOworfQorCitURVNUKFdURl9FbWJlZGRlZEZpeGVkVmVjdG9y
LCBDb3B5KQoreworICAgIGF1dG8gdmVjMSA9IEVtYmVkZGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+
OjpjcmVhdGUoMyk7CisgICAgdmVjMS5nZXQoKVswXSA9IDA7CisgICAgdmVjMS5nZXQoKVsxXSA9
IDE7CisgICAgdmVjMS5nZXQoKVsyXSA9IDI7CisKKyAgICBhdXRvIHZlYzIgPSBFbWJlZGRlZEZp
eGVkVmVjdG9yPHVuc2lnbmVkPjo6Y3JlYXRlKHZlYzEtPmJlZ2luKCksIHZlYzEtPmVuZCgpKTsK
KyAgICBFWFBFQ1RfRVEoM1UsIHZlYzEtPnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDNVLCB2ZWMy
LT5zaXplKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2ZWMxLT5zaXplKCk7ICsr
aSkgeworICAgICAgICBFWFBFQ1RfRVEoaSwgdmVjMS5nZXQoKVtpXSk7CisgICAgICAgIEVYUEVD
VF9FUShpLCB2ZWMyLmdldCgpW2ldKTsKKyAgICB9CisgICAgdmVjMS5nZXQoKVsyXSA9IDQyOwor
ICAgIEVYUEVDVF9FUSg0MlUsIHZlYzEuZ2V0KClbMl0pOworICAgIEVYUEVDVF9FUSgyVSwgdmVj
Mi5nZXQoKVsyXSk7Cit9CisKK1RFU1QoV1RGX0VtYmVkZGVkRml4ZWRWZWN0b3IsIENvcHlWZWN0
b3IpCit7CisgICAgYXV0byB2ZWMxID0gVmVjdG9yPHVuc2lnbmVkPjo6ZnJvbSgwLCAxLCAyLCAz
KTsKKyAgICBFWFBFQ1RfRVEoNFUsIHZlYzEuc2l6ZSgpKTsKKyAgICBhdXRvIHZlYzIgPSBFbWJl
ZGRlZEZpeGVkVmVjdG9yPHVuc2lnbmVkPjo6Y3JlYXRlRnJvbVZlY3Rvcih2ZWMxKTsKKyAgICBF
WFBFQ1RfRVEoNFUsIHZlYzEuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoNFUsIHZlYzItPnNpemUo
KSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZlYzEuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgRVhQRUNUX0VRKGksIHZlYzFbaV0pOworICAgICAgICBFWFBFQ1RfRVEoaSwgdmVjMi5n
ZXQoKVtpXSk7CisgICAgfQorICAgIHZlYzFbMl0gPSA0MjsKKyAgICBFWFBFQ1RfRVEoNDJVLCB2
ZWMxWzJdKTsKKyAgICBFWFBFQ1RfRVEoMlUsIHZlYzIuZ2V0KClbMl0pOworfQorCitURVNUKFdU
Rl9FbWJlZGRlZEZpeGVkVmVjdG9yLCBNb3ZlVmVjdG9yKQoreworICAgIGF1dG8gdmVjMSA9IFZl
Y3RvcjxNb3ZlT25seT46OmZyb20oTW92ZU9ubHkoMCksIE1vdmVPbmx5KDEpLCBNb3ZlT25seSgy
KSwgTW92ZU9ubHkoMykpOworICAgIEVYUEVDVF9FUSg0VSwgdmVjMS5zaXplKCkpOworICAgIGF1
dG8gdmVjMiA9IEVtYmVkZGVkRml4ZWRWZWN0b3I8TW92ZU9ubHk+OjpjcmVhdGVGcm9tVmVjdG9y
KFdURk1vdmUodmVjMSkpOworICAgIEVYUEVDVF9FUSgwVSwgdmVjMS5zaXplKCkpOworICAgIEVY
UEVDVF9FUSg0VSwgdmVjMi0+c2l6ZSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsg
aW5kZXggPCB2ZWMyLT5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIEVYUEVDVF9FUShpbmRleCwg
dmVjMi5nZXQoKVtpbmRleF0udmFsdWUoKSk7Cit9CisKK1RFU1QoV1RGX0VtYmVkZGVkRml4ZWRW
ZWN0b3IsIEl0ZXJhdG9yRm9yKQoreworICAgIGF1dG8gdmVjMSA9IEVtYmVkZGVkRml4ZWRWZWN0
b3I8dW5zaWduZWQ+OjpjcmVhdGUoMyk7CisgICAgdmVjMS5nZXQoKVswXSA9IDA7CisgICAgdmVj
MS5nZXQoKVsxXSA9IDE7CisgICAgdmVjMS5nZXQoKVsyXSA9IDI7CisKKyAgICB1bnNpZ25lZCBp
bmRleCA9IDA7CisgICAgZm9yIChhdXRvIGl0ZXIgPSB2ZWMxLT5iZWdpbigpOyBpdGVyICE9IHZl
YzEtPmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgRVhQRUNUX0VRKGluZGV4LCAqaXRlcik7Cisg
ICAgICAgICsraW5kZXg7CisgICAgfQorfQorCitURVNUKFdURl9FbWJlZGRlZEZpeGVkVmVjdG9y
LCBSZXZlcnNlKQoreworICAgIGF1dG8gdmVjMSA9IEVtYmVkZGVkRml4ZWRWZWN0b3I8dW5zaWdu
ZWQ+OjpjcmVhdGUoMyk7CisgICAgdmVjMS5nZXQoKVswXSA9IDA7CisgICAgdmVjMS5nZXQoKVsx
XSA9IDE7CisgICAgdmVjMS5nZXQoKVsyXSA9IDI7CisKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7
CisgICAgZm9yIChhdXRvIGl0ZXIgPSB2ZWMxLT5yYmVnaW4oKTsgaXRlciAhPSB2ZWMxLT5yZW5k
KCk7ICsraXRlcikgeworICAgICAgICArK2luZGV4OworICAgICAgICBFWFBFQ1RfRVEoM1UgLSBp
bmRleCwgKml0ZXIpOworICAgIH0KK30KKworVEVTVChXVEZfRW1iZWRkZWRGaXhlZFZlY3Rvciwg
RmlsbCkKK3sKKyAgICBhdXRvIHZlYzEgPSBFbWJlZGRlZEZpeGVkVmVjdG9yPHVuc2lnbmVkPjo6
Y3JlYXRlKDMpOworICAgIHZlYzEtPmZpbGwoNDIpOworCisgICAgZm9yIChhdXRvJiB2YWx1ZSA6
IHZlYzEuZ2V0KCkpCisgICAgICAgIEVYUEVDVF9FUSg0MlUsIHZhbHVlKTsKK30KKworc3RydWN0
IERlc3RydWN0b3JPYnNlcnZlciB7CisgICAgRGVzdHJ1Y3Rvck9ic2VydmVyKCkgPSBkZWZhdWx0
OworCisgICAgRGVzdHJ1Y3Rvck9ic2VydmVyKGJvb2wqIGRlc3RydWN0ZWQpCisgICAgICAgIDog
ZGVzdHJ1Y3RlZChkZXN0cnVjdGVkKQorICAgIHsKKyAgICB9CisKKyAgICB+RGVzdHJ1Y3Rvck9i
c2VydmVyKCkKKyAgICB7CisgICAgICAgIGlmIChkZXN0cnVjdGVkKQorICAgICAgICAgICAgKmRl
c3RydWN0ZWQgPSB0cnVlOworICAgIH0KKworICAgIERlc3RydWN0b3JPYnNlcnZlcihEZXN0cnVj
dG9yT2JzZXJ2ZXImJiBvdGhlcikKKyAgICAgICAgOiBkZXN0cnVjdGVkKG90aGVyLmRlc3RydWN0
ZWQpCisgICAgeworICAgICAgICBvdGhlci5kZXN0cnVjdGVkID0gbnVsbHB0cjsKKyAgICB9CisK
KyAgICBEZXN0cnVjdG9yT2JzZXJ2ZXImIG9wZXJhdG9yPShEZXN0cnVjdG9yT2JzZXJ2ZXImJiBv
dGhlcikKKyAgICB7CisgICAgICAgIGRlc3RydWN0ZWQgPSBvdGhlci5kZXN0cnVjdGVkOworICAg
ICAgICBvdGhlci5kZXN0cnVjdGVkID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuICp0aGlzOwor
ICAgIH0KKworICAgIGJvb2wqIGRlc3RydWN0ZWQgeyBudWxscHRyIH07Cit9OworCitURVNUKFdU
Rl9FbWJlZGRlZEZpeGVkVmVjdG9yLCBEZXN0cnVjdG9yKQoreworICAgIFZlY3Rvcjxib29sPiBm
bGFncygzLCBmYWxzZSk7CisgICAgeworICAgICAgICBhdXRvIHZlY3RvciA9IEVtYmVkZGVkRml4
ZWRWZWN0b3I8RGVzdHJ1Y3Rvck9ic2VydmVyPjo6Y3JlYXRlKGZsYWdzLnNpemUoKSk7CisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmbGFncy5zaXplKCk7ICsraSkKKyAgICAgICAg
ICAgIHZlY3Rvci5nZXQoKVtpXSA9IERlc3RydWN0b3JPYnNlcnZlcigmZmxhZ3NbaV0pOworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmxhZ3Muc2l6ZSgpOyArK2kpCisgICAgICAg
ICAgICBFWFBFQ1RfRkFMU0UoZmxhZ3NbaV0pOworICAgIH0KKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgZmxhZ3Muc2l6ZSgpOyArK2kpCisgICAgICAgIEVYUEVDVF9UUlVFKGZsYWdzW2ld
KTsKK30KKworVEVTVChXVEZfRW1iZWRkZWRGaXhlZFZlY3RvciwgRGVzdHJ1Y3RvckFmdGVyTW92
ZSkKK3sKKyAgICBWZWN0b3I8Ym9vbD4gZmxhZ3MoMywgZmFsc2UpOworICAgIHsKKyAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPEVtYmVkZGVkRml4ZWRWZWN0b3I8RGVzdHJ1Y3Rvck9ic2VydmVyPj4g
b3V0ZXJWZWN0b3I7CisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gdmVjdG9yID0gRW1iZWRk
ZWRGaXhlZFZlY3RvcjxEZXN0cnVjdG9yT2JzZXJ2ZXI+OjpjcmVhdGUoZmxhZ3Muc2l6ZSgpKTsK
KyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmbGFncy5zaXplKCk7ICsraSkK
KyAgICAgICAgICAgICAgICB2ZWN0b3IuZ2V0KClbaV0gPSBEZXN0cnVjdG9yT2JzZXJ2ZXIoJmZs
YWdzW2ldKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmbGFncy5zaXpl
KCk7ICsraSkKKyAgICAgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoZmxhZ3NbaV0pOworICAgICAg
ICAgICAgb3V0ZXJWZWN0b3IgPSB2ZWN0b3IubW92ZVRvVW5pcXVlUHRyKCk7CisgICAgICAgIH0K
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZsYWdzLnNpemUoKTsgKytpKQorICAg
ICAgICAgICAgRVhQRUNUX0ZBTFNFKGZsYWdzW2ldKTsKKyAgICB9CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGZsYWdzLnNpemUoKTsgKytpKQorICAgICAgICBFWFBFQ1RfVFJVRShmbGFn
c1tpXSk7Cit9CisKK1RFU1QoV1RGX0VtYmVkZGVkRml4ZWRWZWN0b3IsIEJhc2ljKQoreworICAg
IHN0ZDo6YXJyYXk8dW5zaWduZWQsIDQ+IGFycmF5IHsgeworICAgICAgICAwLCAxLCAyLCAzCisg
ICAgfSB9OworICAgIHsKKyAgICAgICAgYXV0byB2ZWN0b3IgPSBFbWJlZGRlZEZpeGVkVmVjdG9y
PHVuc2lnbmVkPjo6Y3JlYXRlKGFycmF5LmJlZ2luKCksIGFycmF5LmVuZCgpKTsKKyAgICAgICAg
RVhQRUNUX0VRKDRVLCB2ZWN0b3ItPnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUSgwVSwgdmVj
dG9yLT5hdCgwKSk7CisgICAgICAgIEVYUEVDVF9FUSgxVSwgdmVjdG9yLT5hdCgxKSk7CisgICAg
ICAgIEVYUEVDVF9FUSgyVSwgdmVjdG9yLT5hdCgyKSk7CisgICAgICAgIEVYUEVDVF9FUSgzVSwg
dmVjdG9yLT5hdCgzKSk7CisgICAgfQorfQorCitURVNUKFdURl9FbWJlZGRlZEZpeGVkVmVjdG9y
LCBDbG9uZSkKK3sKKyAgICBzdGQ6OmFycmF5PHVuc2lnbmVkLCA0PiBhcnJheSB7IHsKKyAgICAg
ICAgMCwgMSwgMiwgMworICAgIH0gfTsKKyAgICB7CisgICAgICAgIGF1dG8gdmVjdG9yID0gRW1i
ZWRkZWRGaXhlZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0ZShhcnJheS5iZWdpbigpLCBhcnJheS5l
bmQoKSk7CisgICAgICAgIEVYUEVDVF9FUSg0VSwgdmVjdG9yLT5zaXplKCkpOworICAgICAgICBF
WFBFQ1RfRVEoMFUsIHZlY3Rvci0+YXQoMCkpOworICAgICAgICBFWFBFQ1RfRVEoMVUsIHZlY3Rv
ci0+YXQoMSkpOworICAgICAgICBFWFBFQ1RfRVEoMlUsIHZlY3Rvci0+YXQoMikpOworICAgICAg
ICBFWFBFQ1RfRVEoM1UsIHZlY3Rvci0+YXQoMykpOworCisgICAgICAgIGF1dG8gY2xvbmVkID0g
dmVjdG9yLT5jbG9uZSgpOworICAgICAgICBFWFBFQ1RfRVEoNFUsIGNsb25lZC0+c2l6ZSgpKTsK
KyAgICAgICAgRVhQRUNUX0VRKDBVLCBjbG9uZWQtPmF0KDApKTsKKyAgICAgICAgRVhQRUNUX0VR
KDFVLCBjbG9uZWQtPmF0KDEpKTsKKyAgICAgICAgRVhQRUNUX0VRKDJVLCBjbG9uZWQtPmF0KDIp
KTsKKyAgICAgICAgRVhQRUNUX0VRKDNVLCBjbG9uZWQtPmF0KDMpKTsKKyAgICB9Cit9CisKK1RF
U1QoV1RGX0VtYmVkZGVkRml4ZWRWZWN0b3IsIEVxdWFsKQoreworICAgIGF1dG8gdmVjMSA9IEVt
YmVkZGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+OjpjcmVhdGUoMTApOworICAgIGF1dG8gdmVjMiA9
IEVtYmVkZGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+OjpjcmVhdGUoMTApOworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCAxMDsgKytpKSB7CisgICAgICAgIHZlYzEuZ2V0KClbaV0gPSBpOwor
ICAgICAgICB2ZWMyLmdldCgpW2ldID0gaTsKKyAgICB9CisgICAgRVhQRUNUX0VRKHZlYzEuZ2V0
KCksIHZlYzIuZ2V0KCkpOworICAgIHZlYzEuZ2V0KClbMF0gPSA0MjsKKyAgICBFWFBFQ1RfTkUo
dmVjMS5nZXQoKSwgdmVjMi5nZXQoKSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0ZpeGVkVmVjdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0ZpeGVkVmVjdG9yLmNwcAppbmRleCAxNjE1M2RhYzk3MjVkMGI1OGRiZmZjY2I0
NjgyNjg3OTQ3ODAxNTVhLi5kMmVlY2JiOTUwZDg5ZGUxYzY1ZGFhZDU5OTQ0ZTIyMjcxYWViZTIw
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaXhlZFZlY3Rvci5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRml4ZWRWZWN0b3IuY3BwCkBA
IC04NiwxNSArODYsMTUgQEAgVEVTVChXVEZfRml4ZWRWZWN0b3IsIENvcHkpCiAgICAgdmVjMVsy
XSA9IDI7CiAKICAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVjMih2ZWMxKTsKLSAgICBFWFBF
Q1RfRVEodmVjMS5zaXplKCksIDNVKTsKLSAgICBFWFBFQ1RfRVEodmVjMi5zaXplKCksIDNVKTsK
KyAgICBFWFBFQ1RfRVEoM1UsIHZlYzEuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoM1UsIHZlYzIu
c2l6ZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmVjMS5zaXplKCk7ICsraSkg
ewotICAgICAgICBFWFBFQ1RfRVEodmVjMVtpXSwgaSk7Ci0gICAgICAgIEVYUEVDVF9FUSh2ZWMy
W2ldLCBpKTsKKyAgICAgICAgRVhQRUNUX0VRKGksIHZlYzFbaV0pOworICAgICAgICBFWFBFQ1Rf
RVEoaSwgdmVjMltpXSk7CiAgICAgfQogICAgIHZlYzFbMl0gPSA0MjsKLSAgICBFWFBFQ1RfRVEo
dmVjMVsyXSwgNDJVKTsKLSAgICBFWFBFQ1RfRVEodmVjMlsyXSwgMlUpOworICAgIEVYUEVDVF9F
USg0MlUsIHZlYzFbMl0pOworICAgIEVYUEVDVF9FUSgyVSwgdmVjMlsyXSk7CiB9CiAKIFRFU1Qo
V1RGX0ZpeGVkVmVjdG9yLCBDb3B5QXNzaWduKQpAQCAtMTA2LDE1ICsxMDYsMTUgQEAgVEVTVChX
VEZfRml4ZWRWZWN0b3IsIENvcHlBc3NpZ24pCiAKICAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4g
dmVjMjsKICAgICB2ZWMyID0gdmVjMTsKLSAgICBFWFBFQ1RfRVEodmVjMS5zaXplKCksIDNVKTsK
LSAgICBFWFBFQ1RfRVEodmVjMi5zaXplKCksIDNVKTsKKyAgICBFWFBFQ1RfRVEoM1UsIHZlYzEu
c2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoM1UsIHZlYzIuc2l6ZSgpKTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgdmVjMS5zaXplKCk7ICsraSkgewotICAgICAgICBFWFBFQ1RfRVEodmVj
MVtpXSwgaSk7Ci0gICAgICAgIEVYUEVDVF9FUSh2ZWMyW2ldLCBpKTsKKyAgICAgICAgRVhQRUNU
X0VRKGksIHZlYzFbaV0pOworICAgICAgICBFWFBFQ1RfRVEoaSwgdmVjMltpXSk7CiAgICAgfQog
ICAgIHZlYzFbMl0gPSA0MjsKLSAgICBFWFBFQ1RfRVEodmVjMVsyXSwgNDJVKTsKLSAgICBFWFBF
Q1RfRVEodmVjMlsyXSwgMlUpOworICAgIEVYUEVDVF9FUSg0MlUsIHZlYzFbMl0pOworICAgIEVY
UEVDVF9FUSgyVSwgdmVjMlsyXSk7CiB9CiAKIFRFU1QoV1RGX0ZpeGVkVmVjdG9yLCBNb3ZlKQpA
QCAtMTI1LDEwICsxMjUsMTAgQEAgVEVTVChXVEZfRml4ZWRWZWN0b3IsIE1vdmUpCiAgICAgdmVj
MVsyXSA9IDI7CiAKICAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVjMihXVEZNb3ZlKHZlYzEp
KTsKLSAgICBFWFBFQ1RfRVEodmVjMS5zaXplKCksIDBVKTsKLSAgICBFWFBFQ1RfRVEodmVjMi5z
aXplKCksIDNVKTsKKyAgICBFWFBFQ1RfRVEoMFUsIHZlYzEuc2l6ZSgpKTsKKyAgICBFWFBFQ1Rf
RVEoM1UsIHZlYzIuc2l6ZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmVjMi5z
aXplKCk7ICsraSkKLSAgICAgICAgRVhQRUNUX0VRKHZlYzJbaV0sIGkpOworICAgICAgICBFWFBF
Q1RfRVEoaSwgdmVjMltpXSk7CiB9CiAKIFRFU1QoV1RGX0ZpeGVkVmVjdG9yLCBNb3ZlQXNzaWdu
KQpAQCAtMTQwLDIxICsxNDAsMjEgQEAgVEVTVChXVEZfRml4ZWRWZWN0b3IsIE1vdmVBc3NpZ24p
CiAKICAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVjMjsKICAgICB2ZWMyID0gV1RGTW92ZSh2
ZWMxKTsKLSAgICBFWFBFQ1RfRVEodmVjMS5zaXplKCksIDBVKTsKLSAgICBFWFBFQ1RfRVEodmVj
Mi5zaXplKCksIDNVKTsKKyAgICBFWFBFQ1RfRVEoMFUsIHZlYzEuc2l6ZSgpKTsKKyAgICBFWFBF
Q1RfRVEoM1UsIHZlYzIuc2l6ZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmVj
Mi5zaXplKCk7ICsraSkKLSAgICAgICAgRVhQRUNUX0VRKHZlYzJbaV0sIGkpOworICAgICAgICBF
WFBFQ1RfRVEoaSwgdmVjMltpXSk7CiB9CiAKIFRFU1QoV1RGX0ZpeGVkVmVjdG9yLCBNb3ZlVmVj
dG9yKQogewogICAgIGF1dG8gdmVjMSA9IFZlY3RvcjxNb3ZlT25seT46OmZyb20oTW92ZU9ubHko
MCksIE1vdmVPbmx5KDEpLCBNb3ZlT25seSgyKSwgTW92ZU9ubHkoMykpOwotICAgIEVYUEVDVF9F
USh2ZWMxLnNpemUoKSwgNFUpOworICAgIEVYUEVDVF9FUSg0VSwgdmVjMS5zaXplKCkpOwogICAg
IEZpeGVkVmVjdG9yPE1vdmVPbmx5PiB2ZWMyKFdURk1vdmUodmVjMSkpOwotICAgIEVYUEVDVF9F
USh2ZWMxLnNpemUoKSwgMFUpOwotICAgIEVYUEVDVF9FUSh2ZWMyLnNpemUoKSwgNFUpOworICAg
IEVYUEVDVF9FUSgwVSwgdmVjMS5zaXplKCkpOworICAgIEVYUEVDVF9FUSg0VSwgdmVjMi5zaXpl
KCkpOwogICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IHZlYzIuc2l6ZSgpOyAr
K2luZGV4KQotICAgICAgICBFWFBFQ1RfRVEodmVjMltpbmRleF0udmFsdWUoKSwgaW5kZXgpOwor
ICAgICAgICBFWFBFQ1RfRVEoaW5kZXgsIHZlYzJbaW5kZXhdLnZhbHVlKCkpOwogfQogCiBURVNU
KFdURl9GaXhlZFZlY3RvciwgTW92ZUFzc2lnblZlY3RvcikKQEAgLTE2MiwxMyArMTYyLDEzIEBA
IFRFU1QoV1RGX0ZpeGVkVmVjdG9yLCBNb3ZlQXNzaWduVmVjdG9yKQogICAgIEZpeGVkVmVjdG9y
PE1vdmVPbmx5PiB2ZWMyOwogICAgIHsKICAgICAgICAgYXV0byB2ZWMxID0gVmVjdG9yPE1vdmVP
bmx5Pjo6ZnJvbShNb3ZlT25seSgwKSwgTW92ZU9ubHkoMSksIE1vdmVPbmx5KDIpLCBNb3ZlT25s
eSgzKSk7Ci0gICAgICAgIEVYUEVDVF9FUSh2ZWMxLnNpemUoKSwgNFUpOworICAgICAgICBFWFBF
Q1RfRVEoNFUsIHZlYzEuc2l6ZSgpKTsKICAgICAgICAgdmVjMiA9IFdURk1vdmUodmVjMSk7Ci0g
ICAgICAgIEVYUEVDVF9FUSh2ZWMxLnNpemUoKSwgMFUpOworICAgICAgICBFWFBFQ1RfRVEoMFUs
IHZlYzEuc2l6ZSgpKTsKICAgICB9Ci0gICAgRVhQRUNUX0VRKHZlYzIuc2l6ZSgpLCA0VSk7Cisg
ICAgRVhQRUNUX0VRKDRVLCB2ZWMyLnNpemUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9
IDA7IGluZGV4IDwgdmVjMi5zaXplKCk7ICsraW5kZXgpCi0gICAgICAgIEVYUEVDVF9FUSh2ZWMy
W2luZGV4XS52YWx1ZSgpLCBpbmRleCk7CisgICAgICAgIEVYUEVDVF9FUShpbmRleCwgdmVjMltp
bmRleF0udmFsdWUoKSk7CiB9CiAKIFRFU1QoV1RGX0ZpeGVkVmVjdG9yLCBTd2FwKQpAQCAtMTgw
LDEwICsxODAsMTAgQEAgVEVTVChXVEZfRml4ZWRWZWN0b3IsIFN3YXApCiAKICAgICBGaXhlZFZl
Y3Rvcjx1bnNpZ25lZD4gdmVjMjsKICAgICB2ZWMyLnN3YXAodmVjMSk7Ci0gICAgRVhQRUNUX0VR
KHZlYzEuc2l6ZSgpLCAwVSk7Ci0gICAgRVhQRUNUX0VRKHZlYzIuc2l6ZSgpLCAzVSk7CisgICAg
RVhQRUNUX0VRKDBVLCB2ZWMxLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDNVLCB2ZWMyLnNpemUo
KSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZlYzIuc2l6ZSgpOyArK2kpCi0gICAg
ICAgIEVYUEVDVF9FUSh2ZWMyW2ldLCBpKTsKKyAgICAgICAgRVhQRUNUX0VRKGksIHZlYzJbaV0p
OwogfQogCiBURVNUKFdURl9GaXhlZFZlY3RvciwgSXRlcmF0b3JGb3IpCkBAIC0xOTUsNyArMTk1
LDcgQEAgVEVTVChXVEZfRml4ZWRWZWN0b3IsIEl0ZXJhdG9yRm9yKQogCiAgICAgdW5zaWduZWQg
aW5kZXggPSAwOwogICAgIGZvciAoYXV0byBpdGVyID0gdmVjMS5iZWdpbigpOyBpdGVyICE9IHZl
YzEuZW5kKCk7ICsraXRlcikgewotICAgICAgICBFWFBFQ1RfRVEoKml0ZXIsIGluZGV4KTsKKyAg
ICAgICAgRVhQRUNUX0VRKGluZGV4LCAqaXRlcik7CiAgICAgICAgICsraW5kZXg7CiAgICAgfQog
fQpAQCAtMjEwLDcgKzIxMCw3IEBAIFRFU1QoV1RGX0ZpeGVkVmVjdG9yLCBSZXZlcnNlKQogICAg
IHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICBmb3IgKGF1dG8gaXRlciA9IHZlYzEucmJlZ2luKCk7
IGl0ZXIgIT0gdmVjMS5yZW5kKCk7ICsraXRlcikgewogICAgICAgICArK2luZGV4OwotICAgICAg
ICBFWFBFQ1RfRVEoKml0ZXIsIDNVIC0gaW5kZXgpOworICAgICAgICBFWFBFQ1RfRVEoM1UgLSBp
bmRleCwgKml0ZXIpOwogICAgIH0KIH0KIApAQCAtMjIwLDcgKzIyMCw3IEBAIFRFU1QoV1RGX0Zp
eGVkVmVjdG9yLCBGaWxsKQogICAgIHZlYzEuZmlsbCg0Mik7CiAKICAgICBmb3IgKGF1dG8mIHZh
bHVlIDogdmVjMSkKLSAgICAgICAgRVhQRUNUX0VRKHZhbHVlLCA0MlUpOworICAgICAgICBFWFBF
Q1RfRVEoNDJVLCB2YWx1ZSk7CiB9CiAKIHN0cnVjdCBEZXN0cnVjdG9yT2JzZXJ2ZXIgewpAQCAt
MjkzLDE0ICsyOTMsMTQgQEAgVEVTVChXVEZfRml4ZWRWZWN0b3IsIE1vdmVLZWVwc0RhdGEpCiAg
ICAgICAgIEZpeGVkVmVjdG9yPHVuc2lnbmVkPiB2ZWMxKDMpOwogICAgICAgICBhdXRvKiBkYXRh
MSA9IHZlYzEuZGF0YSgpOwogICAgICAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVjMihXVEZN
b3ZlKHZlYzEpKTsKLSAgICAgICAgRVhQRUNUX0VRKHZlYzIuZGF0YSgpLCBkYXRhMSk7CisgICAg
ICAgIEVYUEVDVF9FUShkYXRhMSwgdmVjMi5kYXRhKCkpOwogICAgIH0KICAgICB7CiAgICAgICAg
IEZpeGVkVmVjdG9yPHVuc2lnbmVkPiB2ZWMxKDMpOwogICAgICAgICBhdXRvKiBkYXRhMSA9IHZl
YzEuZGF0YSgpOwogICAgICAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVjMjsKICAgICAgICAg
dmVjMiA9IFdURk1vdmUodmVjMSk7Ci0gICAgICAgIEVYUEVDVF9FUSh2ZWMyLmRhdGEoKSwgZGF0
YTEpOworICAgICAgICBFWFBFQ1RfRVEoZGF0YTEsIHZlYzIuZGF0YSgpKTsKICAgICB9CiB9CiAK
QEAgLTMxMSw4ICszMTEsOCBAQCBURVNUKFdURl9GaXhlZFZlY3RvciwgTW92ZUtlZXBzRGF0YU5l
c3RlZCkKICAgICAgICAgdmVjMS5hcHBlbmQoRml4ZWRWZWN0b3I8dW5zaWduZWQ+KDMpKTsKICAg
ICAgICAgYXV0byogZGF0YTEgPSB2ZWMxWzBdLmRhdGEoKTsKICAgICAgICAgRml4ZWRWZWN0b3I8
Rml4ZWRWZWN0b3I8dW5zaWduZWQ+PiB2ZWMyKFdURk1vdmUodmVjMSkpOwotICAgICAgICBFWFBF
Q1RfRVEodmVjMi5zaXplKCksIDFVKTsKLSAgICAgICAgRVhQRUNUX0VRKHZlYzJbMF0uZGF0YSgp
LCBkYXRhMSk7CisgICAgICAgIEVYUEVDVF9FUSgxVSwgdmVjMi5zaXplKCkpOworICAgICAgICBF
WFBFQ1RfRVEoZGF0YTEsIHZlYzJbMF0uZGF0YSgpKTsKICAgICB9CiAgICAgewogICAgICAgICBW
ZWN0b3I8Rml4ZWRWZWN0b3I8dW5zaWduZWQ+PiB2ZWMxOwpAQCAtMzIwLDggKzMyMCwzOCBAQCBU
RVNUKFdURl9GaXhlZFZlY3RvciwgTW92ZUtlZXBzRGF0YU5lc3RlZCkKICAgICAgICAgYXV0byog
ZGF0YTEgPSB2ZWMxWzBdLmRhdGEoKTsKICAgICAgICAgRml4ZWRWZWN0b3I8Rml4ZWRWZWN0b3I8
dW5zaWduZWQ+PiB2ZWMyOwogICAgICAgICB2ZWMyID0gV1RGTW92ZSh2ZWMxKTsKLSAgICAgICAg
RVhQRUNUX0VRKHZlYzIuc2l6ZSgpLCAxVSk7Ci0gICAgICAgIEVYUEVDVF9FUSh2ZWMyWzBdLmRh
dGEoKSwgZGF0YTEpOworICAgICAgICBFWFBFQ1RfRVEoMVUsIHZlYzIuc2l6ZSgpKTsKKyAgICAg
ICAgRVhQRUNUX0VRKGRhdGExLCB2ZWMyWzBdLmRhdGEoKSk7CisgICAgfQorfQorCitURVNUKFdU
Rl9GaXhlZFZlY3RvciwgT2Zmc2V0KQoreworICAgIEVYUEVDVF9FUSgwLCBGaXhlZFZlY3Rvcjx1
bnNpZ25lZD46Om9mZnNldE9mU3RvcmFnZSgpKTsKKyAgICBFWFBFQ1RfRVEoNCwgRml4ZWRWZWN0
b3I8dW5zaWduZWQ+OjpTdG9yYWdlOjpvZmZzZXRPZkRhdGEoKSk7CisgICAgRVhQRUNUX0VRKDAs
IEZpeGVkVmVjdG9yPHZvaWQqPjo6b2Zmc2V0T2ZTdG9yYWdlKCkpOworICAgIEVYUEVDVF9FUShz
aXplb2Yodm9pZCopLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRml4ZWRWZWN0b3I8dm9pZCo+OjpT
dG9yYWdlOjpvZmZzZXRPZkRhdGEoKSkpOworfQorCitURVNUKFdURl9GaXhlZFZlY3RvciwgRXF1
YWwpCit7CisgICAgeworICAgICAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVjMSgxMCk7Cisg
ICAgICAgIEZpeGVkVmVjdG9yPHVuc2lnbmVkPiB2ZWMyKDEwKTsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IDEwOyArK2kpIHsKKyAgICAgICAgICAgIHZlYzFbaV0gPSBpOworICAg
ICAgICAgICAgdmVjMltpXSA9IGk7CisgICAgICAgIH0KKyAgICAgICAgRVhQRUNUX0VRKHZlYzIs
IHZlYzEpOworICAgICAgICB2ZWMxWzBdID0gNDI7CisgICAgICAgIEVYUEVDVF9ORSh2ZWMxLCB2
ZWMyKTsKKyAgICB9CisgICAgeworICAgICAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVjMTsK
KyAgICAgICAgRml4ZWRWZWN0b3I8dW5zaWduZWQ+IHZlYzI7CisgICAgICAgIEZpeGVkVmVjdG9y
PHVuc2lnbmVkPiB2ZWMzKDApOworICAgICAgICBFWFBFQ1RfRVEodmVjMiwgdmVjMSk7CisgICAg
ICAgIEVYUEVDVF9FUSh2ZWMzLCB2ZWMxKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZWRGaXhlZFZlY3Rvci5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZDb3VudGVkRml4ZWRWZWN0b3IuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjkyYTk0MGVlMDg5Y2NjMTYyZjgwMjNlYzBiMmYxOWNkMWNjODIzYWQKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZDb3VudGVkRml4ZWRW
ZWN0b3IuY3BwCkBAIC0wLDAgKzEsMjc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaW5jbHVkZSAiTW92ZU9ubHkuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZEZp
eGVkVmVjdG9yLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChXVEZfUmVm
Q291bnRlZEZpeGVkVmVjdG9yLCBFbXB0eSkKK3sKKyAgICBhdXRvIHZlY3RvciA9IFJlZkNvdW50
ZWRGaXhlZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0ZSgwKTsKKyAgICBFWFBFQ1RfVFJVRSh2ZWN0
b3ItPmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX0VRKDBVLCB2ZWN0b3ItPnNpemUoKSk7Cit9CisK
K1RFU1QoV1RGX1JlZkNvdW50ZWRGaXhlZFZlY3RvciwgSXRlcmF0b3IpCit7CisgICAgYXV0byBp
bnRWZWN0b3IgPSBSZWZDb3VudGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+OjpjcmVhdGUoNCk7Cisg
ICAgaW50VmVjdG9yLmdldCgpWzBdID0gMTA7CisgICAgaW50VmVjdG9yLmdldCgpWzFdID0gMTE7
CisgICAgaW50VmVjdG9yLmdldCgpWzJdID0gMTI7CisgICAgaW50VmVjdG9yLmdldCgpWzNdID0g
MTM7CisKKyAgICBhdXRvIGl0ID0gaW50VmVjdG9yLT5iZWdpbigpOworICAgIGF1dG8gZW5kID0g
aW50VmVjdG9yLT5lbmQoKTsKKyAgICBFWFBFQ1RfVFJVRShlbmQgIT0gaXQpOworCisgICAgRVhQ
RUNUX0VRKDEwVSwgKml0KTsKKyAgICArK2l0OworICAgIEVYUEVDVF9FUSgxMVUsICppdCk7Cisg
ICAgKytpdDsKKyAgICBFWFBFQ1RfRVEoMTJVLCAqaXQpOworICAgICsraXQ7CisgICAgRVhQRUNU
X0VRKDEzVSwgKml0KTsKKyAgICArK2l0OworCisgICAgRVhQRUNUX1RSVUUoZW5kID09IGl0KTsK
K30KKworVEVTVChXVEZfUmVmQ291bnRlZEZpeGVkVmVjdG9yLCBPdmVybG9hZGVkT3BlcmF0b3JB
bXBlcnNhbmQpCit7CisgICAgc3RydWN0IFRlc3QgeworICAgIHByaXZhdGU6CisgICAgICAgIFRl
c3QqIG9wZXJhdG9yJigpID0gZGVsZXRlOworICAgIH07CisKKyAgICBhdXRvIHZlY3RvciA9IFJl
ZkNvdW50ZWRGaXhlZFZlY3RvcjxUZXN0Pjo6Y3JlYXRlKDEpOworICAgIHZlY3Rvci5nZXQoKVsw
XSA9IFRlc3QoKTsKK30KKworVEVTVChXVEZfUmVmQ291bnRlZEZpeGVkVmVjdG9yLCBDb3B5KQor
eworICAgIGF1dG8gdmVjMSA9IFJlZkNvdW50ZWRGaXhlZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0
ZSgzKTsKKyAgICB2ZWMxLmdldCgpWzBdID0gMDsKKyAgICB2ZWMxLmdldCgpWzFdID0gMTsKKyAg
ICB2ZWMxLmdldCgpWzJdID0gMjsKKworICAgIGF1dG8gdmVjMiA9IFJlZkNvdW50ZWRGaXhlZFZl
Y3Rvcjx1bnNpZ25lZD46OmNyZWF0ZSh2ZWMxLT5iZWdpbigpLCB2ZWMxLT5lbmQoKSk7CisgICAg
RVhQRUNUX0VRKDNVLCB2ZWMxLT5zaXplKCkpOworICAgIEVYUEVDVF9FUSgzVSwgdmVjMi0+c2l6
ZSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmVjMS0+c2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgRVhQRUNUX0VRKGksIHZlYzEuZ2V0KClbaV0pOworICAgICAgICBFWFBFQ1RfRVEo
aSwgdmVjMi5nZXQoKVtpXSk7CisgICAgfQorICAgIHZlYzEuZ2V0KClbMl0gPSA0MjsKKyAgICBF
WFBFQ1RfRVEoNDJVLCB2ZWMxLmdldCgpWzJdKTsKKyAgICBFWFBFQ1RfRVEoMlUsIHZlYzIuZ2V0
KClbMl0pOworfQorCitURVNUKFdURl9SZWZDb3VudGVkRml4ZWRWZWN0b3IsIENvcHlWZWN0b3Ip
Cit7CisgICAgYXV0byB2ZWMxID0gVmVjdG9yPHVuc2lnbmVkPjo6ZnJvbSgwLCAxLCAyLCAzKTsK
KyAgICBFWFBFQ1RfRVEoNFUsIHZlYzEuc2l6ZSgpKTsKKyAgICBhdXRvIHZlYzIgPSBSZWZDb3Vu
dGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+OjpjcmVhdGVGcm9tVmVjdG9yKHZlYzEpOworICAgIEVY
UEVDVF9FUSg0VSwgdmVjMS5zaXplKCkpOworICAgIEVYUEVDVF9FUSg0VSwgdmVjMi0+c2l6ZSgp
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmVjMS5zaXplKCk7ICsraSkgeworICAg
ICAgICBFWFBFQ1RfRVEoaSwgdmVjMVtpXSk7CisgICAgICAgIEVYUEVDVF9FUShpLCB2ZWMyLmdl
dCgpW2ldKTsKKyAgICB9CisgICAgdmVjMVsyXSA9IDQyOworICAgIEVYUEVDVF9FUSg0MlUsIHZl
YzFbMl0pOworICAgIEVYUEVDVF9FUSgyVSwgdmVjMi5nZXQoKVsyXSk7Cit9CisKK1RFU1QoV1RG
X1JlZkNvdW50ZWRGaXhlZFZlY3RvciwgTW92ZVZlY3RvcikKK3sKKyAgICBhdXRvIHZlYzEgPSBW
ZWN0b3I8TW92ZU9ubHk+Ojpmcm9tKE1vdmVPbmx5KDApLCBNb3ZlT25seSgxKSwgTW92ZU9ubHko
MiksIE1vdmVPbmx5KDMpKTsKKyAgICBFWFBFQ1RfRVEoNFUsIHZlYzEuc2l6ZSgpKTsKKyAgICBh
dXRvIHZlYzIgPSBSZWZDb3VudGVkRml4ZWRWZWN0b3I8TW92ZU9ubHk+OjpjcmVhdGVGcm9tVmVj
dG9yKFdURk1vdmUodmVjMSkpOworICAgIEVYUEVDVF9FUSgwVSwgdmVjMS5zaXplKCkpOworICAg
IEVYUEVDVF9FUSg0VSwgdmVjMi0+c2l6ZSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0g
MDsgaW5kZXggPCB2ZWMyLT5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIEVYUEVDVF9FUShpbmRl
eCwgdmVjMi5nZXQoKVtpbmRleF0udmFsdWUoKSk7Cit9CisKK1RFU1QoV1RGX1JlZkNvdW50ZWRG
aXhlZFZlY3RvciwgSXRlcmF0b3JGb3IpCit7CisgICAgYXV0byB2ZWMxID0gUmVmQ291bnRlZEZp
eGVkVmVjdG9yPHVuc2lnbmVkPjo6Y3JlYXRlKDMpOworICAgIHZlYzEuZ2V0KClbMF0gPSAwOwor
ICAgIHZlYzEuZ2V0KClbMV0gPSAxOworICAgIHZlYzEuZ2V0KClbMl0gPSAyOworCisgICAgdW5z
aWduZWQgaW5kZXggPSAwOworICAgIGZvciAoYXV0byBpdGVyID0gdmVjMS0+YmVnaW4oKTsgaXRl
ciAhPSB2ZWMxLT5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgIEVYUEVDVF9FUShpbmRleCwgKml0
ZXIpOworICAgICAgICArK2luZGV4OworICAgIH0KK30KKworVEVTVChXVEZfUmVmQ291bnRlZEZp
eGVkVmVjdG9yLCBSZXZlcnNlKQoreworICAgIGF1dG8gdmVjMSA9IFJlZkNvdW50ZWRGaXhlZFZl
Y3Rvcjx1bnNpZ25lZD46OmNyZWF0ZSgzKTsKKyAgICB2ZWMxLmdldCgpWzBdID0gMDsKKyAgICB2
ZWMxLmdldCgpWzFdID0gMTsKKyAgICB2ZWMxLmdldCgpWzJdID0gMjsKKworICAgIHVuc2lnbmVk
IGluZGV4ID0gMDsKKyAgICBmb3IgKGF1dG8gaXRlciA9IHZlYzEtPnJiZWdpbigpOyBpdGVyICE9
IHZlYzEtPnJlbmQoKTsgKytpdGVyKSB7CisgICAgICAgICsraW5kZXg7CisgICAgICAgIEVYUEVD
VF9FUSgzVSAtIGluZGV4LCAqaXRlcik7CisgICAgfQorfQorCitURVNUKFdURl9SZWZDb3VudGVk
Rml4ZWRWZWN0b3IsIEZpbGwpCit7CisgICAgYXV0byB2ZWMxID0gUmVmQ291bnRlZEZpeGVkVmVj
dG9yPHVuc2lnbmVkPjo6Y3JlYXRlKDMpOworICAgIHZlYzEtPmZpbGwoNDIpOworCisgICAgZm9y
IChhdXRvJiB2YWx1ZSA6IHZlYzEuZ2V0KCkpCisgICAgICAgIEVYUEVDVF9FUSh2YWx1ZSwgNDJV
KTsKK30KKworc3RydWN0IERlc3RydWN0b3JPYnNlcnZlciB7CisgICAgRGVzdHJ1Y3Rvck9ic2Vy
dmVyKCkgPSBkZWZhdWx0OworCisgICAgRGVzdHJ1Y3Rvck9ic2VydmVyKGJvb2wqIGRlc3RydWN0
ZWQpCisgICAgICAgIDogZGVzdHJ1Y3RlZChkZXN0cnVjdGVkKQorICAgIHsKKyAgICB9CisKKyAg
ICB+RGVzdHJ1Y3Rvck9ic2VydmVyKCkKKyAgICB7CisgICAgICAgIGlmIChkZXN0cnVjdGVkKQor
ICAgICAgICAgICAgKmRlc3RydWN0ZWQgPSB0cnVlOworICAgIH0KKworICAgIERlc3RydWN0b3JP
YnNlcnZlcihEZXN0cnVjdG9yT2JzZXJ2ZXImJiBvdGhlcikKKyAgICAgICAgOiBkZXN0cnVjdGVk
KG90aGVyLmRlc3RydWN0ZWQpCisgICAgeworICAgICAgICBvdGhlci5kZXN0cnVjdGVkID0gbnVs
bHB0cjsKKyAgICB9CisKKyAgICBEZXN0cnVjdG9yT2JzZXJ2ZXImIG9wZXJhdG9yPShEZXN0cnVj
dG9yT2JzZXJ2ZXImJiBvdGhlcikKKyAgICB7CisgICAgICAgIGRlc3RydWN0ZWQgPSBvdGhlci5k
ZXN0cnVjdGVkOworICAgICAgICBvdGhlci5kZXN0cnVjdGVkID0gbnVsbHB0cjsKKyAgICAgICAg
cmV0dXJuICp0aGlzOworICAgIH0KKworICAgIGJvb2wqIGRlc3RydWN0ZWQgeyBudWxscHRyIH07
Cit9OworCitURVNUKFdURl9SZWZDb3VudGVkRml4ZWRWZWN0b3IsIERlc3RydWN0b3IpCit7Cisg
ICAgVmVjdG9yPGJvb2w+IGZsYWdzKDMsIGZhbHNlKTsKKyAgICB7CisgICAgICAgIGF1dG8gdmVj
dG9yID0gUmVmQ291bnRlZEZpeGVkVmVjdG9yPERlc3RydWN0b3JPYnNlcnZlcj46OmNyZWF0ZShm
bGFncy5zaXplKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmxhZ3Muc2l6
ZSgpOyArK2kpCisgICAgICAgICAgICB2ZWN0b3IuZ2V0KClbaV0gPSBEZXN0cnVjdG9yT2JzZXJ2
ZXIoJmZsYWdzW2ldKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZsYWdzLnNp
emUoKTsgKytpKQorICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGZsYWdzW2ldKTsKKyAgICB9Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZsYWdzLnNpemUoKTsgKytpKQorICAgICAgICBF
WFBFQ1RfVFJVRShmbGFnc1tpXSk7Cit9CisKK1RFU1QoV1RGX1JlZkNvdW50ZWRGaXhlZFZlY3Rv
ciwgRGVzdHJ1Y3RvckFmdGVyTW92ZSkKK3sKKyAgICBWZWN0b3I8Ym9vbD4gZmxhZ3MoMywgZmFs
c2UpOworICAgIHsKKyAgICAgICAgUmVmUHRyPFJlZkNvdW50ZWRGaXhlZFZlY3RvcjxEZXN0cnVj
dG9yT2JzZXJ2ZXI+PiBvdXRlclZlY3RvcjsKKyAgICAgICAgeworICAgICAgICAgICAgUmVmUHRy
PFJlZkNvdW50ZWRGaXhlZFZlY3RvcjxEZXN0cnVjdG9yT2JzZXJ2ZXI+PiBvdXRlclZlY3RvcjI7
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYXV0byB2ZWN0b3IgPSBSZWZDb3VudGVk
Rml4ZWRWZWN0b3I8RGVzdHJ1Y3Rvck9ic2VydmVyPjo6Y3JlYXRlKGZsYWdzLnNpemUoKSk7Cisg
ICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZsYWdzLnNpemUoKTsgKytp
KQorICAgICAgICAgICAgICAgICAgICB2ZWN0b3IuZ2V0KClbaV0gPSBEZXN0cnVjdG9yT2JzZXJ2
ZXIoJmZsYWdzW2ldKTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
ZmxhZ3Muc2l6ZSgpOyArK2kpCisgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9GQUxTRShmbGFn
c1tpXSk7CisgICAgICAgICAgICAgICAgb3V0ZXJWZWN0b3IgPSB2ZWN0b3IuY29weVJlZigpOwor
ICAgICAgICAgICAgICAgIG91dGVyVmVjdG9yMiA9IHZlY3Rvci5jb3B5UmVmKCk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmxhZ3Muc2l6ZSgp
OyArK2kpCisgICAgICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGZsYWdzW2ldKTsKKyAgICAgICAg
ICAgIEVYUEVDVF9FUShvdXRlclZlY3Rvci5nZXQoKSwgb3V0ZXJWZWN0b3IyLmdldCgpKTsKKyAg
ICAgICAgfQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmxhZ3Muc2l6ZSgpOyAr
K2kpCisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoZmxhZ3NbaV0pOworICAgIH0KKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgZmxhZ3Muc2l6ZSgpOyArK2kpCisgICAgICAgIEVYUEVDVF9U
UlVFKGZsYWdzW2ldKTsKK30KKworVEVTVChXVEZfUmVmQ291bnRlZEZpeGVkVmVjdG9yLCBCYXNp
YykKK3sKKyAgICBzdGQ6OmFycmF5PHVuc2lnbmVkLCA0PiBhcnJheSB7IHsKKyAgICAgICAgMCwg
MSwgMiwgMworICAgIH0gfTsKKyAgICB7CisgICAgICAgIGF1dG8gdmVjdG9yID0gUmVmQ291bnRl
ZEZpeGVkVmVjdG9yPHVuc2lnbmVkPjo6Y3JlYXRlKGFycmF5LmJlZ2luKCksIGFycmF5LmVuZCgp
KTsKKyAgICAgICAgRVhQRUNUX0VRKDRVLCB2ZWN0b3ItPnNpemUoKSk7CisgICAgICAgIEVYUEVD
VF9FUSgwVSwgdmVjdG9yLT5hdCgwKSk7CisgICAgICAgIEVYUEVDVF9FUSgxVSwgdmVjdG9yLT5h
dCgxKSk7CisgICAgICAgIEVYUEVDVF9FUSgyVSwgdmVjdG9yLT5hdCgyKSk7CisgICAgICAgIEVY
UEVDVF9FUSgzVSwgdmVjdG9yLT5hdCgzKSk7CisgICAgfQorfQorCitURVNUKFdURl9SZWZDb3Vu
dGVkRml4ZWRWZWN0b3IsIENsb25lKQoreworICAgIHN0ZDo6YXJyYXk8dW5zaWduZWQsIDQ+IGFy
cmF5IHsgeworICAgICAgICAwLCAxLCAyLCAzCisgICAgfSB9OworICAgIHsKKyAgICAgICAgYXV0
byB2ZWN0b3IgPSBSZWZDb3VudGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+OjpjcmVhdGUoYXJyYXku
YmVnaW4oKSwgYXJyYXkuZW5kKCkpOworICAgICAgICBFWFBFQ1RfRVEoNFUsIHZlY3Rvci0+c2l6
ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDBVLCB2ZWN0b3ItPmF0KDApKTsKKyAgICAgICAgRVhQ
RUNUX0VRKDFVLCB2ZWN0b3ItPmF0KDEpKTsKKyAgICAgICAgRVhQRUNUX0VRKDJVLCB2ZWN0b3It
PmF0KDIpKTsKKyAgICAgICAgRVhQRUNUX0VRKDNVLCB2ZWN0b3ItPmF0KDMpKTsKKworICAgICAg
ICBhdXRvIGNsb25lZCA9IHZlY3Rvci0+Y2xvbmUoKTsKKyAgICAgICAgRVhQRUNUX0VRKDRVLCBj
bG9uZWQtPnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUSgwVSwgY2xvbmVkLT5hdCgwKSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgxVSwgY2xvbmVkLT5hdCgxKSk7CisgICAgICAgIEVYUEVDVF9FUSgy
VSwgY2xvbmVkLT5hdCgyKSk7CisgICAgICAgIEVYUEVDVF9FUSgzVSwgY2xvbmVkLT5hdCgzKSk7
CisgICAgfQorfQorCitURVNUKFdURl9SZWZDb3VudGVkRml4ZWRWZWN0b3IsIEVxdWFsKQorewor
ICAgIGF1dG8gdmVjMSA9IFJlZkNvdW50ZWRGaXhlZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0ZSgx
MCk7CisgICAgYXV0byB2ZWMyID0gUmVmQ291bnRlZEZpeGVkVmVjdG9yPHVuc2lnbmVkPjo6Y3Jl
YXRlKDEwKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMTA7ICsraSkgeworICAgICAg
ICB2ZWMxLmdldCgpW2ldID0gaTsKKyAgICAgICAgdmVjMi5nZXQoKVtpXSA9IGk7CisgICAgfQor
ICAgIEVYUEVDVF9FUSh2ZWMxLmdldCgpLCB2ZWMyLmdldCgpKTsKKyAgICB2ZWMxLmdldCgpWzBd
ID0gNDI7CisgICAgRVhQRUNUX05FKHZlYzEuZ2V0KCksIHZlYzIuZ2V0KCkpOworfQorCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446921</attachid>
            <date>2021-12-11 21:55:44 -0800</date>
            <delta_ts>2021-12-11 22:03:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234201-20211211215543.patch</filename>
            <type>text/plain</type>
            <size>83002</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MTc3YTdmMmEwODU3YTJiMjNhM2EzZTg4OTIzNTEyZDg4MGE2MDljLi5iZTA5ZDgzNjM5MDc4N2Vk
MmUyZWFmM2Y3YjkyMmRjNDU5MmZjNmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAyMS0xMi0xMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtXVEZdIEludHJvZHVjZSBUcmFpbGluZ0FycmF5CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQyMDEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5o
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJhc2VsaW5lSklUQ29uc3RhbnRQb29sKToKKyAg
ICAgICAgKiBieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHA6CisgICAgICAg
IChKU0M6Ok9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjptZXJnZWRXaXRoIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6OmR1bXBJbkNvbnRleHQgY29u
c3QpOgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6aXNWYWxpZEFu
ZFdhdGNoYWJsZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXQuaDoKKyAgICAgICAgKEpTQzo6T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6Omlu
dmFsaWQpOgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6OmlzVmFsaWQgY29u
c3QpOgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6c2l6ZSBjb25z
dCk6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjpiZWdpbiBjb25z
dCk6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjplbmQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6T2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldDo6cmVsZWFzZVJhd1BvaW50ZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6YWRvcHRSYXdQb2ludGVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6OmZyb21SYXdQb2ludGVyKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6OkRhdGE6
OkRhdGEpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcpOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6bG9hZENvbnN0YW50KToKKyAgICAgICAgKiBs
bGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOgorICAgICAgICAqIGxsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKwogMjAy
MS0xMi0xMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtK
U0NdIFdhc20gY2F0Y2ggdGh1bmsgc2hvdWxkIGJlIEpJVCBjb2RlIHRvIHVzZSBFeGNlcHRpb25I
YW5kbGVyUHRyVGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCmluZGV4IDA2Mjc1NzZkZmVhZGIyOTcyMzhhZjVlNTM0ZGVmYzc3ZDAxNTM4
YzIuLmVjYTlhNzAwYTZlOWRmN2JjN2RlYTBlYzQ2MTJjZTJiZTI2ODUxN2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNzYgQEAKKzIwMjEtMTItMTEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
KworICAgICAgICBbV1RGXSBJbnRyb2R1Y2UgVHJhaWxpbmdBcnJheQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MjAxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIFRy
YWlsaW5nQXJyYXk8RGVyaXZlZCwgVD4sIHdoaWNoIGFsbG93cyB1cyB0byBpbXBsZW1lbnQgY2xh
c3MKKyAgICAgICAgd2l0aCB0cmFpbGluZyBhcnJheSBlYXNpbHkuIEJ5IHVzaW5nIHRoaXMsIHdl
IGltcGxlbWVudCBFbWJlZGRlZEZpeGVkVmVjdG9yIGFuZCBSZWZDb3VudGVkRml4ZWRWZWN0b3Iu
CisgICAgICAgIFBsdXMsIHdlIHJlcGxhY2UgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbiBvZiBG
aXhlZFZlY3RvciBmcm9tIFJlZkNvdW50ZWRBcnJheSB0byBFbWJlZGRlZEZpeGVkVmVjdG9yCisg
ICAgICAgIHNpbmNlIHJlZi1jb3VudGluZyBpcyBub3QgbmVjZXNzYXJ5LgorICAgICAgICBJbiBh
IHN1YnNlcXVlbnQgcGF0Y2gsIHdlIHdpbGwgcmVtb3ZlIFJlZkNvdW50ZWRBcnJheSBhbmQgdXNl
IFJlZkNvdW50ZWRGaXhlZFZlY3RvciBzaW5jZSBSZWZDb3VudGVkRml4ZWRWZWN0b3IKKyAgICAg
ICAgaXMgZm9sbG93aW5nIG5vcm1hbCBSZWYgLyBSZWZQdHIgcHJvdG9jb2wsIHNvIGVhc3kgdG8g
dW5kZXJzdGFuZCB0aGUgc2VtYW50aWNzLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0
Zi9FbWJlZGRlZEZpeGVkVmVjdG9yLmg6IEFkZGVkLgorICAgICAgICAqIHd0Zi9GaXhlZFZlY3Rv
ci5oOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6Rml4ZWRWZWN0b3IpOgorICAgICAgICAo
V1RGOjpGaXhlZFZlY3Rvcjo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6
OnNpemUgY29uc3QpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6aXNFbXB0eSBjb25zdCk6
CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpieXRlU2l6ZSBjb25zdCk6CisgICAgICAgIChX
VEY6OkZpeGVkVmVjdG9yOjpkYXRhKToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OmJlZ2lu
KToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OmVuZCk6CisgICAgICAgIChXVEY6OkZpeGVk
VmVjdG9yOjpyYmVnaW4pOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6cmVuZCk6CisgICAg
ICAgIChXVEY6OkZpeGVkVmVjdG9yOjpyYmVnaW4gY29uc3QpOgorICAgICAgICAoV1RGOjpGaXhl
ZFZlY3Rvcjo6cmVuZCBjb25zdCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjphdCk6Cisg
ICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjphdCBjb25zdCk6CisgICAgICAgIChXVEY6OkZpeGVk
VmVjdG9yOjpvcGVyYXRvcltdKToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6Om9wZXJhdG9y
W10gY29uc3QpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6ZmlsbCk6CisgICAgICAgIChX
VEY6OkZpeGVkVmVjdG9yOjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKFdURjo6Rml4ZWRW
ZWN0b3I6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6c3dh
cCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpnZXRTdG9yYWdlKToKKyAgICAgICAgKiB3
dGYvUmVmQ291bnRlZEZpeGVkVmVjdG9yLmg6IEFkZGVkLgorICAgICAgICAqIHd0Zi9UcmFpbGlu
Z0FycmF5Lmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpUcmFpbGluZ0FycmF5OjpUcmFpbGluZ0Fy
cmF5KToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6flRyYWlsaW5nQXJyYXkpOgorICAg
ICAgICAoV1RGOjpUcmFpbGluZ0FycmF5OjphbGxvY2F0aW9uU2l6ZSk6CisgICAgICAgIChXVEY6
OlRyYWlsaW5nQXJyYXk6OnNpemUgY29uc3QpOgorICAgICAgICAoV1RGOjpUcmFpbGluZ0FycmF5
Ojppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6Ynl0ZVNpemUg
Y29uc3QpOgorICAgICAgICAoV1RGOjpUcmFpbGluZ0FycmF5OjpkYXRhKToKKyAgICAgICAgKFdU
Rjo6VHJhaWxpbmdBcnJheTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJy
YXk6OmJlZ2luKToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6ZW5kKToKKyAgICAgICAg
KFdURjo6VHJhaWxpbmdBcnJheTo6YmVnaW4gY29uc3QpOgorICAgICAgICAoV1RGOjpUcmFpbGlu
Z0FycmF5OjplbmQgY29uc3QpOgorICAgICAgICAoV1RGOjpUcmFpbGluZ0FycmF5OjpjYmVnaW4g
Y29uc3QpOgorICAgICAgICAoV1RGOjpUcmFpbGluZ0FycmF5OjpjZW5kIGNvbnN0KToKKyAgICAg
ICAgKFdURjo6VHJhaWxpbmdBcnJheTo6cmJlZ2luKToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdB
cnJheTo6cmVuZCk6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6OnJiZWdpbiBjb25zdCk6
CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6OnJlbmQgY29uc3QpOgorICAgICAgICAoV1RG
OjpUcmFpbGluZ0FycmF5OjpjcmJlZ2luIGNvbnN0KToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdB
cnJheTo6Y3JlbmQgY29uc3QpOgorICAgICAgICAoV1RGOjpUcmFpbGluZ0FycmF5OjphdCk6Cisg
ICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6OmF0IGNvbnN0KToKKyAgICAgICAgKFdURjo6VHJh
aWxpbmdBcnJheTo6b3BlcmF0b3JbXSk6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6Om9w
ZXJhdG9yW10gY29uc3QpOgorICAgICAgICAoV1RGOjpUcmFpbGluZ0FycmF5OjpmaXJzdCk6Cisg
ICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6OmZpcnN0IGNvbnN0KToKKyAgICAgICAgKFdURjo6
VHJhaWxpbmdBcnJheTo6bGFzdCk6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6Omxhc3Qg
Y29uc3QpOgorICAgICAgICAoV1RGOjpUcmFpbGluZ0FycmF5OjpmaWxsKToKKyAgICAgICAgKFdU
Rjo6VHJhaWxpbmdBcnJheTo6b2Zmc2V0T2ZTaXplKToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdB
cnJheTo6b2Zmc2V0T2ZEYXRhKToKKwogMjAyMS0xMi0xMCAgRXJpYyBDYXJsc29uICA8ZXJpYy5j
YXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIEFkZCBuZXcgc2NyZWVuIGFuZCB3
aW5kb3cgY2FwdHVyZSBiYWNrZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgKaW5kZXggZjI2NmJiNDBhZDA5YmI3ZjJjMThhN2ZkNTBlZjk3ZjgzNDExOTM5YS4u
OTZhMTRmOTYzZjI4OGZhNDk0OGMzOTJjY2EwZjgxZjg1ZDEzNWE2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtNTU3LDcgKzU1Nyw3IEBAIGNsYXNz
IENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHZvaWQqIGJhc2VsaW5lSklUQ29uc3Rh
bnRQb29sKCkKICAgICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1faml0RGF0YSAmJiBqaXRU
eXBlKCkgPT0gSklUVHlwZTo6QmFzZWxpbmVKSVQpOwotICAgICAgICByZXR1cm4gbV9qaXREYXRh
LT5tX2ppdENvbnN0YW50UG9vbC5kYXRhKCk7CisgICAgICAgIHJldHVybiBtX2ppdERhdGEtPm1f
aml0Q29uc3RhbnRQb29sLmdldFN0b3JhZ2UoKTsKICAgICB9CiAjZW5kaWYKICAgICBzaXplX3Qg
bnVtYmVyT2ZVbmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMoKSBjb25zdCB7IHJldHVybiBtX3VubGlu
a2VkQ29kZS0+bnVtYmVyT2ZVbmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMoKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldC5jcHAKaW5kZXggZDA0NDA1ZDlkNDJmZDFmNDhjNGI4OWQ1ZjM2ODI2MzYxYWZk
ZGZiZC4uMWM2ZjU4NThjYWU5ZWY1NDg5ZTE4ZGZkY2E5YzliYzUwMTI0ZDY2MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXQuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXQgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6Om1lcmdlZFdpdGgoCiAgICAgVmVj
dG9yPE9iamVjdFByb3BlcnR5Q29uZGl0aW9uPiByZXN1bHQ7CiAgICAgCiAgICAgaWYgKCFpc0Vt
cHR5KCkpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQobV9kYXRhLT5tX3ZlY3Rvci5iZWdpbigpLCBt
X2RhdGEtPm1fdmVjdG9yLnNpemUoKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQobV9kYXRhLT5i
ZWdpbigpLCBtX2RhdGEtPnNpemUoKSk7CiAgICAgCiAgICAgZm9yIChjb25zdCBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvbiYgbmV3Q29uZGl0aW9uIDogb3RoZXIpIHsKICAgICAgICAgYm9vbCBmb3Vu
ZE1hdGNoID0gZmFsc2U7CkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldDo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCog
Y28KICAgICAKICAgICBvdXQucHJpbnQoIlsiKTsKICAgICBpZiAobV9kYXRhKQotICAgICAgICBv
dXQucHJpbnQobGlzdER1bXBJbkNvbnRleHQobV9kYXRhLT5tX3ZlY3RvciwgY29udGV4dCkpOwor
ICAgICAgICBvdXQucHJpbnQobGlzdER1bXBJbkNvbnRleHQoKm1fZGF0YSwgY29udGV4dCkpOwog
ICAgIG91dC5wcmludCgiXSIpOwogfQogCkBAIC0xODksNyArMTg5LDcgQEAgYm9vbCBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvblNldDo6aXNWYWxpZEFuZFdhdGNoYWJsZSgpIGNvbnN0CiAgICAgaWYg
KCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGZvciAoYXV0byYgY29u
ZGl0aW9uIDogbV9kYXRhLT5tX3ZlY3RvcikgeworICAgIGZvciAoYXV0byYgY29uZGl0aW9uIDog
Km1fZGF0YSkgewogICAgICAgICBpZiAoIWNvbmRpdGlvbi5pc1dhdGNoYWJsZSgpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgKaW5kZXggYmU3
M2ZkYjVlNWE3YTlmZjFiNzUyNzIwMjUyOTNjYjYyYTU4NDRmZS4uMjRkZTU2ZmQ3YTkzNWFmYzRj
MjkzYzQ5ZDFlNGY4MWVlY2Y1NjhlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmgKQEAgLTI3LDgg
KzI3LDggQEAKIAogI2luY2x1ZGUgIk9iamVjdFByb3BlcnR5Q29uZGl0aW9uLmgiCiAjaW5jbHVk
ZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNsdWRlIDx3dGYvRml4ZWRWZWN0b3IuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaGVyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRGaXhlZFZlY3Rvci5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00MywxMiAr
NDMsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0IHsKIHB1YmxpYzoKLSAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCgpIHsgfQorICAg
IHVzaW5nIENvbmRpdGlvbnMgPSBUaHJlYWRTYWZlUmVmQ291bnRlZEZpeGVkVmVjdG9yPE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uPjsKKworICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0KCkg
PSBkZWZhdWx0OwogICAgIAogICAgIHN0YXRpYyBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBp
bnZhbGlkKCkKICAgICB7CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IHJlc3Vs
dDsKLSAgICAgICAgcmVzdWx0Lm1fZGF0YSA9IGFkb3B0UmVmKG5ldyBEYXRhKCkpOworICAgICAg
ICByZXN1bHQubV9kYXRhID0gQ29uZGl0aW9uczo6Y3JlYXRlKDApOworICAgICAgICBBU1NFUlQo
IXJlc3VsdC5pc1ZhbGlkKCkpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAK
QEAgLTU4LDM3ICs2MSwzNyBAQCBjbGFzcyBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCB7CiAg
ICAgICAgICAgICByZXR1cm4gT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQoKTsKICAgICAgICAg
CiAgICAgICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IHJlc3VsdDsKLSAgICAgICAgcmVz
dWx0Lm1fZGF0YSA9IGFkb3B0UmVmKG5ldyBEYXRhKCkpOwotICAgICAgICByZXN1bHQubV9kYXRh
LT5tX3ZlY3RvciA9IEZpeGVkVmVjdG9yPE9iamVjdFByb3BlcnR5Q29uZGl0aW9uPihXVEZNb3Zl
KHZlY3RvcikpOworICAgICAgICByZXN1bHQubV9kYXRhID0gQ29uZGl0aW9uczo6Y3JlYXRlRnJv
bVZlY3RvcihXVEZNb3ZlKHZlY3RvcikpOworICAgICAgICBBU1NFUlQocmVzdWx0LmlzVmFsaWQo
KSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAogICAgIGJvb2wgaXNWYWxp
ZCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gIW1fZGF0YSB8fCAhbV9kYXRhLT5tX3Zl
Y3Rvci5pc0VtcHR5KCk7CisgICAgICAgIHJldHVybiAhbV9kYXRhIHx8ICFtX2RhdGEtPmlzRW1w
dHkoKTsKICAgICB9CiAKICAgICBib29sIGlzVmFsaWRBbmRXYXRjaGFibGUoKSBjb25zdDsKIAot
ICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhID8gbV9kYXRhLT5tX3ZlY3Rv
ci5zaXplKCkgOiAwOyB9CisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEg
PyBtX2RhdGEtPnNpemUoKSA6IDA7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdAogICAgIHsK
ICAgICAgICAgcmV0dXJuICFtX2RhdGE7CiAgICAgfQotICAgIAotICAgIHR5cGVkZWYgY29uc3Qg
T2JqZWN0UHJvcGVydHlDb25kaXRpb24qIGl0ZXJhdG9yOwotICAgIAotICAgIGl0ZXJhdG9yIGJl
Z2luKCkgY29uc3QKKworICAgIHVzaW5nIGNvbnN0X2l0ZXJhdG9yID0gQ29uZGl0aW9uczo6Y29u
c3RfaXRlcmF0b3I7CisKKyAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0CiAgICAgewog
ICAgICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAg
ICByZXR1cm4gbV9kYXRhLT5tX3ZlY3Rvci5iZWdpbigpOworICAgICAgICByZXR1cm4gbV9kYXRh
LT5jYmVnaW4oKTsKICAgICB9Ci0gICAgaXRlcmF0b3IgZW5kKCkgY29uc3QKKyAgICBjb25zdF9p
dGVyYXRvciBlbmQoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIG1fZGF0YS0+bV92ZWN0b3IuZW5k
KCk7CisgICAgICAgIHJldHVybiBtX2RhdGEtPmNlbmQoKTsKICAgICB9CiAKICAgICB1bnNpZ25l
ZCBoYXNoKCkgY29uc3QKQEAgLTE1MSw0NSArMTU0LDE1IEBAIGNsYXNzIE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0IHsKICAgICAKICAgICB2b2lkIGR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0m
LCBEdW1wQ29udGV4dCopIGNvbnN0OwogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0
OwotICAgIAotICAgIC8vIEhlbHBlcnMgZm9yIHVzaW5nIHRoaXMgaW4gYSB1bmlvbi4KLSAgICB2
b2lkKiByZWxlYXNlUmF3UG9pbnRlcigpCi0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8dm9pZCo+KG1fZGF0YS5sZWFrUmVmKCkpOwotICAgIH0KLSAgICBzdGF0aWMgT2JqZWN0UHJv
cGVydHlDb25kaXRpb25TZXQgYWRvcHRSYXdQb2ludGVyKHZvaWQqIHJhd1BvaW50ZXIpCi0gICAg
ewotICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCByZXN1bHQ7Ci0gICAgICAgIHJl
c3VsdC5tX2RhdGEgPSBhZG9wdFJlZihzdGF0aWNfY2FzdDxEYXRhKj4ocmF3UG9pbnRlcikpOwot
ICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICBzdGF0aWMgT2JqZWN0UHJvcGVydHlD
b25kaXRpb25TZXQgZnJvbVJhd1BvaW50ZXIodm9pZCogcmF3UG9pbnRlcikKLSAgICB7Ci0gICAg
ICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IHJlc3VsdDsKLSAgICAgICAgcmVzdWx0Lm1f
ZGF0YSA9IHN0YXRpY19jYXN0PERhdGEqPihyYXdQb2ludGVyKTsKLSAgICAgICAgcmV0dXJuIHJl
c3VsdDsKLSAgICB9CiAKLSAgICAvLyBGSVhNRTogRXZlcnl0aGluZyBiZWxvdyBoZXJlIHNob3Vs
ZCBiZSBwcml2YXRlLCBidXQgY2Fubm90IGJlIGJlY2F1c2Ugb2YgYSBidWcgaW4gVlMuCi0gICAg
CiAgICAgLy8gSW50ZXJuYWxseSwgdGhpcyByZXByZXNlbnRzIEludmFsaWQgdXNpbmcgYSBwb2lu
dGVyIHRvIGEgRGF0YSB0aGF0IGhhcyBhbiBlbXB0eSB2ZWN0b3IuCiAgICAgCiAgICAgLy8gRklY
TUU6IFRoaXMgY291bGQgYmUgbWFkZSBtb3JlIGNvbXBhY3QgYnkgaGF2aW5nIGl0IGludGVybmFs
bHkgdXNlIGEgdmVjdG9yIHRoYXQganVzdCBoYXMKICAgICAvLyB0aGUgbm9uLXVpZCBwb3J0aW9u
IG9mIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uLCBhbmQgdGhlbiByZXF1aXJpbmcgdGhhdCB0aGUg
Y2FsbGVycyBvZiBhbGwKICAgICAvLyBvZiB0aGUgQVBJcyBzdXBwbHkgdGhlIHVpZC4KLSAgICAK
LSAgICBjbGFzcyBEYXRhIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGE+IHsKLSAg
ICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGF0YSk7Ci0gICAgICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwotICAgICAgICAKLSAgICBwdWJsaWM6Ci0gICAgICAgIERhdGEoKSB7IH0KLSAg
ICAgICAgCi0gICAgICAgIEZpeGVkVmVjdG9yPE9iamVjdFByb3BlcnR5Q29uZGl0aW9uPiBtX3Zl
Y3RvcjsKLSAgICB9OwotICAgIAorCiBwcml2YXRlOgotICAgIFJlZlB0cjxEYXRhPiBtX2RhdGE7
CisgICAgUmVmUHRyPENvbmRpdGlvbnM+IG1fZGF0YTsKIH07CiAKIE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uIGdlbmVyYXRlQ29uZGl0aW9uRm9yU2VsZkVxdWl2YWxlbmNlKApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCmluZGV4IGY1N2E2ZTEzNDUwNThmZGJlODQyMzhmMjI3Mzc2NTdkMDYzOTlh
MGIuLmM1MTVjMzk1NDIxYzNhZjJkODI5MGEzYWFlYzYzNTMyOTFkNDFmODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKQEAgLTc5OSw3ICs3OTksNyBAQCB2b2lkIEpJVDo6Y29tcGlsZUFu
ZExpbmtXaXRob3V0RmluYWxpemluZyhKSVRDb21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSBD
YWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcyhhcmd1bWVudCkgKiBzdGF0aWNf
Y2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpOwogICAgICAgICAgICAgICAgIGxvYWRWYWx1ZShB
ZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBvZmZzZXQpLCBqc1JlZ1QxMCk7Ci0gICAgICAgICAg
ICAgICAgc3RvcmVWYWx1ZShqc1JlZ1QxMCwgQWRkcmVzcyhyZWdUMiwgYXJndW1lbnQgKiBzaXpl
b2YoVmFsdWVQcm9maWxlKSArIFZhbHVlUHJvZmlsZTo6b2Zmc2V0T2ZGaXJzdEJ1Y2tldCgpKSk7
CisgICAgICAgICAgICAgICAgc3RvcmVWYWx1ZShqc1JlZ1QxMCwgQWRkcmVzcyhyZWdUMiwgRml4
ZWRWZWN0b3I8VmFsdWVQcm9maWxlPjo6U3RvcmFnZTo6b2Zmc2V0T2ZEYXRhKCkgKyBhcmd1bWVu
dCAqIHNpemVvZihWYWx1ZVByb2ZpbGUpICsgVmFsdWVQcm9maWxlOjpvZmZzZXRPZkZpcnN0QnVj
a2V0KCkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVzLmgKaW5kZXggMTdmNDZmN2EyZDg5NDQzOGMzYjlhMGRlNjVjNmYz
MWI4NmM2NDQxYy4uNTg2NDEyYmM0N2VlNmJiNzQwZWYxNTIwODRlZjJjYTIxYTZiMTU5YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKQEAgLTUwNSw3ICs1MDUsNyBAQCBB
TFdBWVNfSU5MSU5FIHZvaWQgSklUOjptYXRlcmlhbGl6ZVBvaW50ZXJJbnRvTWV0YWRhdGEoY29u
c3QgQnl0ZWNvZGUmIGJ5dGVjb2RlLAogCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjpsb2FkQ29u
c3RhbnQoSklUQ29uc3RhbnRQb29sOjpDb25zdGFudCBjb25zdGFudEluZGV4LCBHUFJSZWcgcmVz
dWx0KQogewotICAgIGxvYWRQdHIoQWRkcmVzcyhzX2NvbnN0YW50c0dQUiwgc3RhdGljX2Nhc3Q8
dWludHB0cl90Pihjb25zdGFudEluZGV4KSAqIHNpemVvZih2b2lkKikpLCByZXN1bHQpOworICAg
IGxvYWRQdHIoQWRkcmVzcyhzX2NvbnN0YW50c0dQUiwgRml4ZWRWZWN0b3I8dm9pZCo+OjpTdG9y
YWdlOjpvZmZzZXRPZkRhdGEoKSArIHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oY29uc3RhbnRJbmRl
eCkgKiBzaXplb2Yodm9pZCopKSwgcmVzdWx0KTsKIH0KIAogQUxXQVlTX0lOTElORSB2b2lkIEpJ
VDo6bG9hZEdsb2JhbE9iamVjdChHUFJSZWcgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCBiMmNhYTE4
NTQxMzBmZjhiOTMxODA3NmQyN2RmZWJkZDIxMzM4NDQxLi4zOTdiMDVkODZhMDcxMmE3YTM4Y2Ew
MjFkMjMyY2IyZDlkYjUxYjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcApAQCAtODcsOCArODcsMTMgQEAgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yIHsKICAgICAvLyBUaGVzZSB0eXBlcyBhcmUgdXNlZnVsIHNp
bmNlIHdlIGNhbid0IHVzZSAnPC4uLj4nIHN5bnRheCBpbiBMTEludCBvZmZzZXRzIGV4dHJhY3Rp
b24uIGUuZy4gVmVjdG9yPGludD46Om1fZGF0YQogICAgIHVzaW5nIFZlY3RvciA9IFdURjo6VmVj
dG9yPGludD47CiAgICAgdXNpbmcgSlNJbnRlcm5hbEZpZWxkT2JqZWN0SW1wbCA9IEpTQzo6SlNJ
bnRlcm5hbEZpZWxkT2JqZWN0SW1wbDw+OwotICAgIHVzaW5nIEZpeGVkVmVjdG9yID0gV1RGOjpG
aXhlZFZlY3RvcjxpbnQ+OwotICAgIHVzaW5nIFJlZkNvdW50ZWRBcnJheSA9IFdURjo6UmVmQ291
bnRlZEFycmF5PGludD47CisgICAgdXNpbmcgVmFsdWVQcm9maWxlRml4ZWRWZWN0b3IgPSBXVEY6
OkZpeGVkVmVjdG9yPFZhbHVlUHJvZmlsZT47CisgICAgdXNpbmcgQmluYXJ5QXJpdGhQcm9maWxl
Rml4ZWRWZWN0b3IgPSBGaXhlZFZlY3RvcjxCaW5hcnlBcml0aFByb2ZpbGU+OworICAgIHVzaW5n
IFVuYXJ5QXJpdGhQcm9maWxlRml4ZWRWZWN0b3IgPSBGaXhlZFZlY3RvcjxVbmFyeUFyaXRoUHJv
ZmlsZT47CisgICAgdXNpbmcgVW5saW5rZWRTaW1wbGVKdW1wVGFibGVGaXhlZFZlY3RvciA9IEZp
eGVkVmVjdG9yPFVubGlua2VkU2ltcGxlSnVtcFRhYmxlPjsKKyAgICB1c2luZyBVbmxpbmtlZFN0
cmluZ0p1bXBUYWJsZUZpeGVkVmVjdG9yID0gRml4ZWRWZWN0b3I8VW5saW5rZWRTdHJpbmdKdW1w
VGFibGU+OworICAgIHVzaW5nIEludDMyRml4ZWRWZWN0b3IgPSBGaXhlZFZlY3RvcjxpbnQzMl90
PjsKKyAgICB1c2luZyBWb2lkUG9pbnRlckZpeGVkVmVjdG9yID0gRml4ZWRWZWN0b3I8dm9pZCo+
OwogCiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGludDY0X3QqIGR1bW15KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5k
ZXggZDIxMzk2ZTk4ZmEwYmM0ODliODk3OTY4NzdjNjI0ZmU5NmMyZTA2Yi4uMTIxMGRjMWMwOWE0
ZjU0NTQ2MjE4ZmQ2NmFlZmViMDg4ZTRhMDBlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtNjIzLDggKzYyMyw2IEBA
IGNvbnN0IEJsYWNrVGhyZXNob2xkID0gY29uc3RleHByIGJsYWNrVGhyZXNob2xkCiBjb25zdCBW
ZWN0b3JCdWZmZXJPZmZzZXQgPSBWZWN0b3I6Om1fYnVmZmVyCiBjb25zdCBWZWN0b3JTaXplT2Zm
c2V0ID0gVmVjdG9yOjptX3NpemUKIAotY29uc3QgUmVmQ291bnRlZEFycmF5U3RvcmFnZU5vbk51
bGxTaXplT2Zmc2V0ID0gLShjb25zdGV4cHIgKFJlZkNvdW50ZWRBcnJheTo6SGVhZGVyOjpzaXpl
KCkpKSArIFJlZkNvdW50ZWRBcnJheTo6SGVhZGVyOjpsZW5ndGgKLQogIyBTb21lIGNvbW1vbiB1
dGlsaXRpZXMuCiBtYWNybyBjcmFzaCgpCiAgICAgaWYgQ19MT09QIG9yIENfTE9PUF9XSU4KQEAg
LTE2NzcsMTAgKzE2NzUsMTEgQEAgbWFjcm8gZnVuY3Rpb25Jbml0aWFsaXphdGlvbihwcm9maWxl
QXJnU2tpcCkKICAgICBhZGRwIC1wcm9maWxlQXJnU2tpcCwgdDAKICAgICBhc3NlcnQobWFjcm8g
KG9rKSBicGd0ZXEgdDAsIDAsIG9rIGVuZCkKICAgICBidHB6IHQwLCAuYXJndW1lbnRQcm9maWxl
RG9uZQotICAgIGxvYWRwIENvZGVCbG9jazo6bV9hcmd1bWVudFZhbHVlUHJvZmlsZXMgKyBGaXhl
ZFZlY3Rvcjo6bV9zdG9yYWdlICsgUmVmQ291bnRlZEFycmF5OjptX2RhdGFbdDFdLCB0MworICAg
IGxvYWRwIENvZGVCbG9jazo6bV9hcmd1bWVudFZhbHVlUHJvZmlsZXMgKyBWYWx1ZVByb2ZpbGVG
aXhlZFZlY3Rvcjo6bV9zdG9yYWdlW3QxXSwgdDMKICAgICBidHB6IHQzLCAuYXJndW1lbnRQcm9m
aWxlRG9uZSAjIFdoZW4gd2UgY2FuJ3QgSklULCB3ZSBkb24ndCBhbGxvY2F0ZSBhbnkgYXJndW1l
bnQgdmFsdWUgcHJvZmlsZXMuCiAgICAgbXVscCBzaXplb2YgVmFsdWVQcm9maWxlLCB0MCwgdDIg
IyBBYWFhYWhoaGghIE5lZWQgc3RyZW5ndGggcmVkdWN0aW9uIQogICAgIGxzaGlmdHAgMywgdDAg
IyBvZmZzZXQgb2YgbGFzdCBKU1ZhbHVlIGFyZ3VtZW50cyBvbiB0aGUgc3RhY2suCisgICAgYWRk
cCAoY29uc3RleHByIChWYWx1ZVByb2ZpbGVGaXhlZFZlY3Rvcjo6U3RvcmFnZTo6b2Zmc2V0T2ZE
YXRhKCkpKSwgdDMKICAgICBhZGRwIHQyLCB0MyAjIHBvaW50ZXIgdG8gZW5kIG9mIFZhbHVlUHJv
ZmlsZSBhcnJheSBpbiB0aGUgdmFsdWUgcHJvZmlsZSBhcnJheS4KIC5hcmd1bWVudFByb2ZpbGVM
b29wOgogICAgIGlmIEpTVkFMVUU2NApAQCAtMjYxMCw3ICsyNjA5LDcgQEAgaWYgSklUCiAgICAg
ICAgICMgQmFzZWxpbmUgdXNlcyBMTEludCdzIFBCIHJlZ2lzdGVyIGZvciBpdHMgSklUIGNvbnN0
YW50IHBvb2wuCiAgICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBQQgogICAgICAgICBsb2Fk
cCBDb2RlQmxvY2s6Om1faml0RGF0YVtQQl0sIFBCCi0gICAgICAgIGxvYWRwIENvZGVCbG9jazo6
SklURGF0YTo6bV9qaXRDb25zdGFudFBvb2xbUEJdLCBQQgorICAgICAgICBsb2FkcCBDb2RlQmxv
Y2s6OkpJVERhdGE6Om1faml0Q29uc3RhbnRQb29sICsgVm9pZFBvaW50ZXJGaXhlZFZlY3Rvcjo6
bV9zdG9yYWdlW1BCXSwgUEIKICAgICBlbmQKIAogICAgIG1hY3JvIHNldHVwUmV0dXJuVG9CYXNl
bGluZUFmdGVyQ2hlY2twb2ludEV4aXRJZk5lZWRlZCgpCkBAIC0yNzI1LDE2ICsyNzI0LDE2IEBA
IG1hY3JvIHVwZGF0ZVVuYXJ5QXJpdGhQcm9maWxlKHNpemUsIG9wY29kZVN0cnVjdCwgdHlwZSwg
c2NyYXRjaDEsIHNjcmF0Y2gyKQogICAgIGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX3Byb2Zp
bGVJbmRleCwgc2NyYXRjaDEpCiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHNjcmF0Y2gyCiAg
ICAgbG9hZHAgQ29kZUJsb2NrOjptX3VubGlua2VkQ29kZVtzY3JhdGNoMl0sIHNjcmF0Y2gyCi0g
ICAgbG9hZHAgVW5saW5rZWRDb2RlQmxvY2s6Om1fdW5hcnlBcml0aFByb2ZpbGVzICsgRml4ZWRW
ZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3NjcmF0Y2gyXSwgc2Ny
YXRjaDIKLSAgICBvcmggdHlwZSwgVW5hcnlBcml0aFByb2ZpbGU6Om1fYml0c1tzY3JhdGNoMiwg
c2NyYXRjaDEsIDJdCisgICAgbG9hZHAgVW5saW5rZWRDb2RlQmxvY2s6Om1fdW5hcnlBcml0aFBy
b2ZpbGVzICsgVW5hcnlBcml0aFByb2ZpbGVGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlW3NjcmF0Y2gy
XSwgc2NyYXRjaDIKKyAgICBvcmggdHlwZSwgKGNvbnN0ZXhwciAoVW5hcnlBcml0aFByb2ZpbGVG
aXhlZFZlY3Rvcjo6U3RvcmFnZTo6b2Zmc2V0T2ZEYXRhKCkpKSArIFVuYXJ5QXJpdGhQcm9maWxl
OjptX2JpdHNbc2NyYXRjaDIsIHNjcmF0Y2gxLCAyXQogZW5kCiAKIG1hY3JvIHVwZGF0ZUJpbmFy
eUFyaXRoUHJvZmlsZShzaXplLCBvcGNvZGVTdHJ1Y3QsIHR5cGUsIHNjcmF0Y2gxLCBzY3JhdGNo
MikKICAgICBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgbV9wcm9maWxlSW5kZXgsIHNjcmF0Y2gx
KQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBzY3JhdGNoMgogICAgIGxvYWRwIENvZGVCbG9j
azo6bV91bmxpbmtlZENvZGVbc2NyYXRjaDJdLCBzY3JhdGNoMgotICAgIGxvYWRwIFVubGlua2Vk
Q29kZUJsb2NrOjptX2JpbmFyeUFyaXRoUHJvZmlsZXMgKyBGaXhlZFZlY3Rvcjo6bV9zdG9yYWdl
ICsgUmVmQ291bnRlZEFycmF5OjptX2RhdGFbc2NyYXRjaDJdLCBzY3JhdGNoMgotICAgIG9yaCB0
eXBlLCBCaW5hcnlBcml0aFByb2ZpbGU6Om1fYml0c1tzY3JhdGNoMiwgc2NyYXRjaDEsIDJdCisg
ICAgbG9hZHAgVW5saW5rZWRDb2RlQmxvY2s6Om1fYmluYXJ5QXJpdGhQcm9maWxlcyArIEJpbmFy
eUFyaXRoUHJvZmlsZUZpeGVkVmVjdG9yOjptX3N0b3JhZ2Vbc2NyYXRjaDJdLCBzY3JhdGNoMgor
ICAgIG9yaCB0eXBlLCAoY29uc3RleHByIChCaW5hcnlBcml0aFByb2ZpbGVGaXhlZFZlY3Rvcjo6
U3RvcmFnZTo6b2Zmc2V0T2ZEYXRhKCkpKSArIEJpbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3Nj
cmF0Y2gyLCBzY3JhdGNoMSwgMl0KIGVuZAogCiAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBuZWVk
IHRoZSBYODZfNjRfV0lOIGNvbmRpdGlvbiBoZXJlLCBzaW5jZSBXRUJBU1NFTUJMWSBzaG91bGQg
YWxyZWFkeSBiZSBmYWxzZSBvbiBXaW5kb3dzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IGNmMWVhMjE0
MjQyYjRiZjRlYTUxNWI4ZmFjNDU1MTZkZTA3YmZmODcuLjYwNTUwMWFlMDkyNDM0ODEzODA1N2Fk
YzFmYTU0NDJhNzgyZGJjMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0yMDk5LDE0ICsyMDk5LDE1
IEBAIGxsaW50T3BXaXRoSnVtcChvcF9zd2l0Y2hfaW1tLCBPcFN3aXRjaEltbSwgbWFjcm8gKHNp
emUsIGdldCwganVtcCwgZGlzcGF0Y2gpCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX3VubGlua2Vk
Q29kZVt0Ml0sIHQyCiAgICAgbG9hZHAgVW5saW5rZWRDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJd
LCB0MgogICAgIG11bGkgc2l6ZW9mIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlLCB0MwotICAgIGxv
YWRwIFVubGlua2VkQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV91bmxpbmtlZFN3aXRjaEp1bXBUYWJs
ZXMgKyBGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlICsgUmVmQ291bnRlZEFycmF5OjptX2RhdGFbdDJd
LCB0MgorICAgIGxvYWRwIFVubGlua2VkQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV91bmxpbmtlZFN3
aXRjaEp1bXBUYWJsZXMgKyBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZUZpeGVkVmVjdG9yOjptX3N0
b3JhZ2VbdDJdLCB0MgorICAgIGFkZHAgKGNvbnN0ZXhwciAoVW5saW5rZWRTaW1wbGVKdW1wVGFi
bGVGaXhlZFZlY3Rvcjo6U3RvcmFnZTo6b2Zmc2V0T2ZEYXRhKCkpKSwgdDIKICAgICBhZGRwIHQz
LCB0MgogICAgIGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wU3dpdGNoSW1tTm90SW50CiAgICAgc3Vi
aSBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZTo6bV9taW5bdDJdLCB0MAotICAgIGxvYWRwIFVubGlu
a2VkU2ltcGxlSnVtcFRhYmxlOjptX2JyYW5jaE9mZnNldHMgKyBGaXhlZFZlY3Rvcjo6bV9zdG9y
YWdlICsgUmVmQ291bnRlZEFycmF5OjptX2RhdGFbdDJdLCB0MgorICAgIGxvYWRwIFVubGlua2Vk
U2ltcGxlSnVtcFRhYmxlOjptX2JyYW5jaE9mZnNldHMgKyBJbnQzMkZpeGVkVmVjdG9yOjptX3N0
b3JhZ2VbdDJdLCB0MgogICAgIGJ0cHogdDIsIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCi0gICAg
YmlhZXEgdDAsIFJlZkNvdW50ZWRBcnJheVN0b3JhZ2VOb25OdWxsU2l6ZU9mZnNldFt0Ml0sIC5v
cFN3aXRjaEltbUZhbGxUaHJvdWdoCi0gICAgbG9hZGkgW3QyLCB0MCwgNF0sIHQxCisgICAgYmlh
ZXEgdDAsIEludDMyRml4ZWRWZWN0b3I6OlN0b3JhZ2U6Om1fc2l6ZVt0Ml0sIC5vcFN3aXRjaElt
bUZhbGxUaHJvdWdoCisgICAgbG9hZGkgKGNvbnN0ZXhwciAoSW50MzJGaXhlZFZlY3Rvcjo6U3Rv
cmFnZTo6b2Zmc2V0T2ZEYXRhKCkpKVt0MiwgdDAsIDRdLCB0MQogICAgIGJ0aXogdDEsIC5vcFN3
aXRjaEltbUZhbGxUaHJvdWdoCiAgICAgZGlzcGF0Y2hJbmRpcmVjdCh0MSkKIApAQCAtMjEyOSw3
ICsyMTMwLDggQEAgbGxpbnRPcFdpdGhKdW1wKG9wX3N3aXRjaF9jaGFyLCBPcFN3aXRjaENoYXIs
IG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRpc3BhdGNoKQogICAgIGxvYWRwIENvZGVCbG9jazo6
bV91bmxpbmtlZENvZGVbdDJdLCB0MgogICAgIGxvYWRwIFVubGlua2VkQ29kZUJsb2NrOjptX3Jh
cmVEYXRhW3QyXSwgdDIKICAgICBtdWxpIHNpemVvZiBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSwg
dDMKLSAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6UmFyZURhdGE6Om1fdW5saW5rZWRTd2l0
Y2hKdW1wVGFibGVzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6
bV9kYXRhW3QyXSwgdDIKKyAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6UmFyZURhdGE6Om1f
dW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzICsgVW5saW5rZWRTaW1wbGVKdW1wVGFibGVGaXhlZFZl
Y3Rvcjo6bV9zdG9yYWdlW3QyXSwgdDIKKyAgICBhZGRwIChjb25zdGV4cHIgKFVubGlua2VkU2lt
cGxlSnVtcFRhYmxlRml4ZWRWZWN0b3I6OlN0b3JhZ2U6Om9mZnNldE9mRGF0YSgpKSksIHQyCiAg
ICAgYWRkcCB0MywgdDIKICAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wU3dpdGNoQ2hhckZhbGxU
aHJvdWdoCiAgICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBTdHJpbmdUeXBlLCAub3BTd2l0
Y2hDaGFyRmFsbFRocm91Z2gKQEAgLTIxNDQsMTAgKzIxNDYsMTAgQEAgbGxpbnRPcFdpdGhKdW1w
KG9wX3N3aXRjaF9jaGFyLCBPcFN3aXRjaENoYXIsIG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRp
c3BhdGNoKQogICAgIGxvYWRiIFt0MF0sIHQwCiAub3BTd2l0Y2hDaGFyUmVhZHk6CiAgICAgc3Vi
aSBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZTo6bV9taW5bdDJdLCB0MAotICAgIGxvYWRwIFVubGlu
a2VkU2ltcGxlSnVtcFRhYmxlOjptX2JyYW5jaE9mZnNldHMgKyBGaXhlZFZlY3Rvcjo6bV9zdG9y
YWdlICsgUmVmQ291bnRlZEFycmF5OjptX2RhdGFbdDJdLCB0MgorICAgIGxvYWRwIFVubGlua2Vk
U2ltcGxlSnVtcFRhYmxlOjptX2JyYW5jaE9mZnNldHMgKyBJbnQzMkZpeGVkVmVjdG9yOjptX3N0
b3JhZ2VbdDJdLCB0MgogICAgIGJ0cHogdDIsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAotICAg
IGJpYWVxIHQwLCBSZWZDb3VudGVkQXJyYXlTdG9yYWdlTm9uTnVsbFNpemVPZmZzZXRbdDJdLCAu
b3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKLSAgICBsb2FkaSBbdDIsIHQwLCA0XSwgdDEKKyAgICBi
aWFlcSB0MCwgSW50MzJGaXhlZFZlY3Rvcjo6U3RvcmFnZTo6bV9zaXplW3QyXSwgLm9wU3dpdGNo
Q2hhckZhbGxUaHJvdWdoCisgICAgbG9hZGkgKGNvbnN0ZXhwciAoSW50MzJGaXhlZFZlY3Rvcjo6
U3RvcmFnZTo6b2Zmc2V0T2ZEYXRhKCkpKVt0MiwgdDAsIDRdLCB0MQogICAgIGJ0aXogdDEsIC5v
cFN3aXRjaENoYXJGYWxsVGhyb3VnaAogICAgIGRpc3BhdGNoSW5kaXJlY3QodDEpCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20KaW5kZXggYTIzZGU2MGUwZWQ4ODQ3NmU1NTE4YzE1ZWEwMzk0NjEwNGNjOTE3ZS4uNzFlY2Ex
MGE3NjYwMGMzOTE4ZjM2MzRiNGVhY2VmNzA4YTNhOTRmZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTIyOTIs
MTQgKzIyOTIsMTUgQEAgbGxpbnRPcFdpdGhKdW1wKG9wX3N3aXRjaF9pbW0sIE9wU3dpdGNoSW1t
LCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKICAgICBsb2FkcCBDb2RlQmxvY2s6
Om1fdW5saW5rZWRDb2RlW3QyXSwgdDIKICAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6bV9y
YXJlRGF0YVt0Ml0sIHQyCiAgICAgbXVsaSBzaXplb2YgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUs
IHQzCi0gICAgbG9hZHAgVW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhOjptX3VubGlua2VkU3dp
dGNoSnVtcFRhYmxlcyArIEZpeGVkVmVjdG9yOjptX3N0b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6
Om1fZGF0YVt0Ml0sIHQyCisgICAgbG9hZHAgVW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhOjpt
X3VubGlua2VkU3dpdGNoSnVtcFRhYmxlcyArIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlRml4ZWRW
ZWN0b3I6Om1fc3RvcmFnZVt0Ml0sIHQyCisgICAgYWRkcCAoY29uc3RleHByIChVbmxpbmtlZFNp
bXBsZUp1bXBUYWJsZUZpeGVkVmVjdG9yOjpTdG9yYWdlOjpvZmZzZXRPZkRhdGEoKSkpLCB0Mgog
ICAgIGFkZHAgdDMsIHQyCiAgICAgYnFiIHQxLCBudW1iZXJUYWcsIC5vcFN3aXRjaEltbU5vdElu
dAogICAgIHN1YmkgVW5saW5rZWRTaW1wbGVKdW1wVGFibGU6Om1fbWluW3QyXSwgdDEKLSAgICBs
b2FkcCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZTo6bV9icmFuY2hPZmZzZXRzICsgRml4ZWRWZWN0
b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3QyXSwgdDIKKyAgICBsb2Fk
cCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZTo6bV9icmFuY2hPZmZzZXRzICsgSW50MzJGaXhlZFZl
Y3Rvcjo6bV9zdG9yYWdlW3QyXSwgdDIKICAgICBidHB6IHQyLCAub3BTd2l0Y2hJbW1GYWxsVGhy
b3VnaAotICAgIGJpYWVxIHQxLCBSZWZDb3VudGVkQXJyYXlTdG9yYWdlTm9uTnVsbFNpemVPZmZz
ZXRbdDJdLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAotICAgIGxvYWRpcyBbdDIsIHQxLCA0XSwg
dDEKKyAgICBiaWFlcSB0MSwgSW50MzJGaXhlZFZlY3Rvcjo6U3RvcmFnZTo6bV9zaXplW3QyXSwg
Lm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBsb2FkaXMgKGNvbnN0ZXhwciAoSW50MzJGaXhl
ZFZlY3Rvcjo6U3RvcmFnZTo6b2Zmc2V0T2ZEYXRhKCkpKVt0MiwgdDEsIDRdLCB0MQogICAgIGJ0
aXogdDEsIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCiAgICAgZGlzcGF0Y2hJbmRpcmVjdCh0MSkK
IApAQCAtMjMyMiw3ICsyMzIzLDggQEAgbGxpbnRPcFdpdGhKdW1wKG9wX3N3aXRjaF9jaGFyLCBP
cFN3aXRjaENoYXIsIG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRpc3BhdGNoKQogICAgIGxvYWRw
IENvZGVCbG9jazo6bV91bmxpbmtlZENvZGVbdDJdLCB0MgogICAgIGxvYWRwIFVubGlua2VkQ29k
ZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKICAgICBtdWxpIHNpemVvZiBVbmxpbmtlZFNpbXBs
ZUp1bXBUYWJsZSwgdDMKLSAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6UmFyZURhdGE6Om1f
dW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNv
dW50ZWRBcnJheTo6bV9kYXRhW3QyXSwgdDIKKyAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6
UmFyZURhdGE6Om1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzICsgVW5saW5rZWRTaW1wbGVKdW1w
VGFibGVGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlW3QyXSwgdDIKKyAgICBhZGRwIChjb25zdGV4cHIg
KFVubGlua2VkU2ltcGxlSnVtcFRhYmxlRml4ZWRWZWN0b3I6OlN0b3JhZ2U6Om9mZnNldE9mRGF0
YSgpKSksIHQyCiAgICAgYWRkcCB0MywgdDIKICAgICBidHFueiB0MSwgbm90Q2VsbE1hc2ssIC5v
cFN3aXRjaENoYXJGYWxsVGhyb3VnaAogICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3QxXSwgU3Ry
aW5nVHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCkBAIC0yMzM3LDEwICsyMzM5LDEwIEBA
IGxsaW50T3BXaXRoSnVtcChvcF9zd2l0Y2hfY2hhciwgT3BTd2l0Y2hDaGFyLCBtYWNybyAoc2l6
ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKICAgICBsb2FkYiBbdDFdLCB0MAogLm9wU3dpdGNoQ2hh
clJlYWR5OgogICAgIHN1YmkgVW5saW5rZWRTaW1wbGVKdW1wVGFibGU6Om1fbWluW3QyXSwgdDAK
LSAgICBsb2FkcCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZTo6bV9icmFuY2hPZmZzZXRzICsgRml4
ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3QyXSwgdDIKKyAg
ICBsb2FkcCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZTo6bV9icmFuY2hPZmZzZXRzICsgSW50MzJG
aXhlZFZlY3Rvcjo6bV9zdG9yYWdlW3QyXSwgdDIKICAgICBidHB6IHQyLCAub3BTd2l0Y2hDaGFy
RmFsbFRocm91Z2gKLSAgICBiaWFlcSB0MCwgUmVmQ291bnRlZEFycmF5U3RvcmFnZU5vbk51bGxT
aXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCi0gICAgbG9hZGlzIFt0Miwg
dDAsIDRdLCB0MQorICAgIGJpYWVxIHQwLCBJbnQzMkZpeGVkVmVjdG9yOjpTdG9yYWdlOjptX3Np
emVbdDJdLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkaXMgKGNvbnN0ZXhwciAo
SW50MzJGaXhlZFZlY3Rvcjo6U3RvcmFnZTo6b2Zmc2V0T2ZEYXRhKCkpKVt0MiwgdDAsIDRdLCB0
MQogICAgIGJ0aXogdDEsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAogICAgIGRpc3BhdGNoSW5k
aXJlY3QodDEpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDdjOGQzNTRlZDY1M2I5YWQ1ZGVhZmExNGI4OWViMGI2MTE3YWQ5YTQuLjQ5MzczZTZmMTdjMTc0
YmViMGE2MjdhMGQ5NzcxNDg5ZGJlMzcxMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtNzU4LDYgKzc1OCw4IEBACiAJCUUzMzlDMTYzMjQ0QjRFODcwMDM1
OURBOSAvKiBEYXRhUmVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFS
ZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzRDVGODcxRkJFRDY2NzAwQkY2
MjVFIC8qIFJlY3Vyc2FibGVMYW1iZGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVjdXJzYWJsZUxhbWJkYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzRD
RDBEMDIyODEwQTAyMDAyMEQyOTkgLyogUGFja2VkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhY2tlZC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzUzOEQ0QzI3NjIyMDg4MDA3NURBNTAg
LyogRW1iZWRkZWRGaXhlZFZlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbWJlZGRlZEZpeGVkVmVj
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNTM4RDREMjc2MjIwODgwMDc1
REE1MCAvKiBUcmFpbGluZ0FycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYWlsaW5nQXJyYXkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2MEM3NjQyMTI3Qjg1QjAwQzkwRjBFIC8q
IFVuYWxpZ25lZEFjY2Vzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmFs
aWduZWRBY2Nlc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2MEM3NjUyMTI3
Qjg1QzAwQzkwRjBFIC8qIFVuZXhwZWN0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVW5leHBlY3RlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzY4OTVD
QjIzQTQ0NUNEMDA4REQ0QzggLyogUGFja2VkUmVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhY2tlZFJl
Zi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzgxLDYgKzc4Myw3IEBACiAJCUUz
RTBGMDRGMjYxOTcxNTcwMDQ2NDBGQyAvKiBGaXhlZFZlY3Rvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
aXhlZFZlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0UxNTgyNTFFQURB
NTNDMDA0QTA3OUQgLyogU3lzdGVtRnJlZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTeXN0ZW1GcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRTY0RjBC
MjI4MTM0MjgwMDFFNTVCNCAvKiBOb25tb3ZhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vbm1vdmFi
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNFODE2MkYyNzY0Nzk5MzAwQkFB
NDVCIC8qIFJlZkNvdW50ZWRGaXhlZFZlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWZDb3VudGVk
Rml4ZWRWZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQxOUYyRTYyM0FC
OUUyMzAwQjI2MTI5IC8qIFZlY3Rvckhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVmVjdG9ySGFzaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDMxQ0M0
QTIxMTg3QURCMDAwQzhBMDcgLyogRGlzcGF0Y2hTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGlzcGF0Y2hTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTRBMEFEMzcxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTA3MSw2ICsxMDc0LDcgQEAKIAkJCQlBOEE0NzI4MDE1MUE4MjVBMDA0MTIz
RkYgLyogRG91Ymx5TGlua2VkTGlzdC5oICovLAogCQkJCUE4QTQ3Mjk3MTUxQTgyNUEwMDQxMjNG
RiAvKiBkdG9hLmNwcCAqLywKIAkJCQlBOEE0NzI5ODE1MUE4MjVBMDA0MTIzRkYgLyogZHRvYS5o
ICovLAorCQkJCUUzNTM4RDRDMjc2MjIwODgwMDc1REE1MCAvKiBFbWJlZGRlZEZpeGVkVmVjdG9y
LmggKi8sCiAJCQkJNTMzOEVCQTQyM0FCMDREMTAwMzgyNjYyIC8qIEVudW1DbGFzc09wZXJhdG9y
T3ZlcmxvYWRzLmggKi8sCiAJCQkJMUFFQTg4RTExRDZCQkNGNDAwRTVBRDY0IC8qIEVudW1UcmFp
dHMuaCAqLywKIAkJCQlBRDdDNDM0QTFERDJBNEE3MDAyNjg4OEIgLyogRXhwZWN0ZWQuaCAqLywK
QEAgLTEyNjcsNiArMTI3MSw3IEBACiAJCQkJQThBNDcyRkYxNTFBODI1QjAwNDEyM0ZGIC8qIFJl
ZkNvdW50ZWQuaCAqLywKIAkJCQkwRkE2RjM5MDIwQ0M2MUVCMDBBMDNEQ0QgLyogUmVmQ291bnRl
ZEFycmF5LmNwcCAqLywKIAkJCQlBOEE0NzMwMDE1MUE4MjVCMDA0MTIzRkYgLyogUmVmQ291bnRl
ZEFycmF5LmggKi8sCisJCQkJRTNFODE2MkYyNzY0Nzk5MzAwQkFBNDVCIC8qIFJlZkNvdW50ZWRG
aXhlZFZlY3Rvci5oICovLAogCQkJCUE4QTQ3MzAxMTUxQTgyNUIwMDQxMjNGRiAvKiBSZWZDb3Vu
dGVkTGVha0NvdW50ZXIuY3BwICovLAogCQkJCUE4QTQ3MzAyMTUxQTgyNUIwMDQxMjNGRiAvKiBS
ZWZDb3VudGVkTGVha0NvdW50ZXIuaCAqLywKIAkJCQk4NkY0NkY1RjFBMjg0MEVFMDBDQ0JGMjIg
LyogUmVmQ291bnRlci5oICovLApAQCAtMTM1Nyw2ICsxMzYyLDcgQEAKIAkJCQkwRjcwNzVGMzFG
QkY1MzdBMDA0ODlBRjAgLyogVGltaW5nU2NvcGUuaCAqLywKIAkJCQk1NTMwNzFDOTFDNDA0Mjcy
MDAzODQ4OTggLyogVGlueUxSVUNhY2hlLmggKi8sCiAJCQkJMEZFRDY3QjUxQjIyRDREODAwNjZD
RTE1IC8qIFRpbnlQdHJTZXQuaCAqLywKKwkJCQlFMzUzOEQ0RDI3NjIyMDg4MDA3NURBNTAgLyog
VHJhaWxpbmdBcnJheS5oICovLAogCQkJCTUyMUNDNkIzMjRBMjc3QzIwMDQzNzdENiAvKiBUcmFu
c2xhdGVkUHJvY2Vzcy5jcHAgKi8sCiAJCQkJMkQxRjJGNDYyNDk4RjczMzAwQzYzQTgzIC8qIFRy
YW5zbGF0ZWRQcm9jZXNzLmggKi8sCiAJCQkJMTQ5RUYxNjIxNkJCRkUwRDAwMEE0MzMxIC8qIFRy
aVN0YXRlLmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IGRlMWRiZjY3MzNhNTg3ZjlhZTky
NWI3ZWUzYmFiZmM4NWYxYWI0NzkuLmUyMGEwYjMzMjk2ZjlmYjJkYThmMTE0YzJiODEzZjRjNmJl
MzM1M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC02Miw2ICs2Miw3IEBAIHNldChXVEZfUFVC
TElDX0hFQURFUlMKICAgICBEaXNhbGxvd0NUeXBlLmgKICAgICBEb21pbmF0b3JzLmgKICAgICBE
b3VibHlMaW5rZWRMaXN0LmgKKyAgICBFbWJlZGRlZEZpeGVkVmVjdG9yLmgKICAgICBFbnVtQ2xh
c3NPcGVyYXRvck92ZXJsb2Fkcy5oCiAgICAgRW51bVRyYWl0cy5oCiAgICAgRXhwZWN0ZWQuaApA
QCAtMjE5LDYgKzIyMCw3IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMKICAgICBSZWYuaAogICAg
IFJlZkNvdW50ZWQuaAogICAgIFJlZkNvdW50ZWRBcnJheS5oCisgICAgUmVmQ291bnRlZEZpeGVk
VmVjdG9yLmgKICAgICBSZWZDb3VudGVkTGVha0NvdW50ZXIuaAogICAgIFJlZkNvdW50ZXIuaAog
ICAgIFJlZlB0ci5oCkBAIC0yODksNiArMjkxLDcgQEAgc2V0KFdURl9QVUJMSUNfSEVBREVSUwog
ICAgIFRpbWluZ1Njb3BlLmgKICAgICBUaW55TFJVQ2FjaGUuaAogICAgIFRpbnlQdHJTZXQuaAor
ICAgIFRyYWlsaW5nQXJyYXkuaAogICAgIFRyYW5zbGF0ZWRQcm9jZXNzLmgKICAgICBUcmlTdGF0
ZS5oCiAgICAgVHlwZUNhc3RzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0VtYmVkZGVk
Rml4ZWRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0VtYmVkZGVkRml4ZWRWZWN0b3IuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xNzc3OTE4ZTAxYWI4MGZkZTY2OWVkOWRmNDE3YzlmZTJkMWM0ZTYyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dURi93dGYvRW1iZWRkZWRGaXhlZFZlY3Rvci5oCkBAIC0wLDAg
KzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3
dGYvTm9ubW92YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9UcmFpbGluZ0FycmF5Lmg+CisjaW5jbHVk
ZSA8d3RmL1VuaXF1ZVJlZi5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5h
bWUgVD4KK2NsYXNzIEVtYmVkZGVkRml4ZWRWZWN0b3IgZmluYWwgOiBwdWJsaWMgVHJhaWxpbmdB
cnJheTxFbWJlZGRlZEZpeGVkVmVjdG9yPFQ+LCBUPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQoRW1iZWRkZWRGaXhlZFZlY3Rvcik7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRW1i
ZWRkZWRGaXhlZFZlY3Rvcik7CisgICAgV1RGX01BS0VfTk9OTU9WQUJMRShFbWJlZGRlZEZpeGVk
VmVjdG9yKTsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gVHJhaWxpbmdBcnJheTxFbWJlZGRl
ZEZpeGVkVmVjdG9yPFQ+LCBUPjsKKworICAgIHN0YXRpYyBVbmlxdWVSZWY8RW1iZWRkZWRGaXhl
ZFZlY3Rvcj4gY3JlYXRlKHVuc2lnbmVkIHNpemUpCisgICAgeworICAgICAgICByZXR1cm4gVW5p
cXVlUmVmIHsgKm5ldyAoTm90TnVsbCwgZmFzdE1hbGxvYyhCYXNlOjphbGxvY2F0aW9uU2l6ZShz
aXplKSkpIEVtYmVkZGVkRml4ZWRWZWN0b3Ioc2l6ZSkgfTsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yPgorICAgIHN0YXRpYyBVbmlxdWVSZWY8RW1iZWRkZWRG
aXhlZFZlY3Rvcj4gY3JlYXRlKElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3IgbGFz
dCkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHNpemUgPSBzdGQ6OmRpc3RhbmNlKGZpcnN0LCBs
YXN0KTsKKyAgICAgICAgcmV0dXJuIFVuaXF1ZVJlZiB7ICpuZXcgKE5vdE51bGwsIGZhc3RNYWxs
b2MoQmFzZTo6YWxsb2NhdGlvblNpemUoc2l6ZSkpKSBFbWJlZGRlZEZpeGVkVmVjdG9yKHNpemUs
IGZpcnN0LCBsYXN0KSB9OworICAgIH0KKworICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPgorICAgIHN0YXRpYyBVbmlxdWVSZWY8RW1i
ZWRkZWRGaXhlZFZlY3Rvcj4gY3JlYXRlRnJvbVZlY3Rvcihjb25zdCBWZWN0b3I8VCwgaW5saW5l
Q2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4mIG90aGVyKQorICAgIHsKKyAgICAgICAgdW5zaWdu
ZWQgc2l6ZSA9IHN0ZDo6c2l6ZShvdGhlcik7CisgICAgICAgIHJldHVybiBVbmlxdWVSZWYgeyAq
bmV3IChOb3ROdWxsLCBmYXN0TWFsbG9jKEJhc2U6OmFsbG9jYXRpb25TaXplKHNpemUpKSkgRW1i
ZWRkZWRGaXhlZFZlY3RvcihzaXplLCBzdGQ6OmJlZ2luKG90aGVyKSwgc3RkOjplbmQob3RoZXIp
KSB9OworICAgIH0KKworICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5h
bWUgT3ZlcmZsb3dIYW5kbGVyPgorICAgIHN0YXRpYyBVbmlxdWVSZWY8RW1iZWRkZWRGaXhlZFZl
Y3Rvcj4gY3JlYXRlRnJvbVZlY3RvcihWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93
SGFuZGxlcj4mJiBvdGhlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0
eSwgT3ZlcmZsb3dIYW5kbGVyPiBjb250YWluZXIgPSBXVEZNb3ZlKG90aGVyKTsKKyAgICAgICAg
dW5zaWduZWQgc2l6ZSA9IHN0ZDo6c2l6ZShjb250YWluZXIpOworICAgICAgICByZXR1cm4gVW5p
cXVlUmVmIHsgKm5ldyAoTm90TnVsbCwgZmFzdE1hbGxvYyhCYXNlOjphbGxvY2F0aW9uU2l6ZShz
aXplKSkpIEVtYmVkZGVkRml4ZWRWZWN0b3Ioc2l6ZSwgc3RkOjptb3ZlX2l0ZXJhdG9yIHsgc3Rk
OjpiZWdpbihjb250YWluZXIpIH0sIHN0ZDo6bW92ZV9pdGVyYXRvciB7IHN0ZDo6ZW5kKGNvbnRh
aW5lcikgfSkgfTsKKyAgICB9CisKKyAgICBVbmlxdWVSZWY8RW1iZWRkZWRGaXhlZFZlY3Rvcj4g
Y2xvbmUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZShCYXNlOjpiZWdpbigp
LCBCYXNlOjplbmQoKSk7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEVtYmVk
ZGVkRml4ZWRWZWN0b3ImIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRo
aXMgPT0gb3RoZXIpOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFbWJlZGRl
ZEZpeGVkVmVjdG9yJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChCYXNlOjpzaXpl
KCkgIT0gb3RoZXIuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgQmFzZTo6c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAg
IGlmIChCYXNlOjphdChpKSAhPSBvdGhlci5hdChpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCitwcml2YXRl
OgorICAgIEVtYmVkZGVkRml4ZWRWZWN0b3IodW5zaWduZWQgc2l6ZSkKKyAgICAgICAgOiBCYXNl
KHNpemUpCisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIElucHV0SXRlcmF0
b3I+CisgICAgRW1iZWRkZWRGaXhlZFZlY3Rvcih1bnNpZ25lZCBzaXplLCBJbnB1dEl0ZXJhdG9y
IGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QpCisgICAgICAgIDogQmFzZShzaXplLCBmaXJzdCwg
bGFzdCkKKyAgICB7CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdU
Rjo6RW1iZWRkZWRGaXhlZFZlY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpeGVk
VmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaXhlZFZlY3Rvci5oCmluZGV4IDMyOGY5ODE1MTBi
ZjdiNjRmNzMwZjFhYmI4ZWUxMTA4MzM3NmMxZDQuLjIyOTQzNjZmMDg4MjkxMTdjNjA2OGE0ZDFm
NzRjZWNlN2UxYTQ2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpeGVkVmVjdG9yLmgK
KysrIGIvU291cmNlL1dURi93dGYvRml4ZWRWZWN0b3IuaApAQCAtMjUsNiArMjUsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPHd0Zi9FbWJlZGRlZEZpeGVkVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTM0LDYg
KzM1LDcgQEAgbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogY2xhc3MgRml4
ZWRWZWN0b3IgewogcHVibGljOgorICAgIHVzaW5nIFN0b3JhZ2UgPSBFbWJlZGRlZEZpeGVkVmVj
dG9yPFQ+OwogICAgIHVzaW5nIGl0ZXJhdG9yID0gVCo7CiAgICAgdXNpbmcgY29uc3RfaXRlcmF0
b3IgPSBjb25zdCBUKjsKICAgICB1c2luZyByZXZlcnNlX2l0ZXJhdG9yID0gc3RkOjpyZXZlcnNl
X2l0ZXJhdG9yPGl0ZXJhdG9yPjsKQEAgLTQxLDcgKzQzLDcgQEAgY2xhc3MgRml4ZWRWZWN0b3Ig
ewogCiAgICAgRml4ZWRWZWN0b3IoKSA9IGRlZmF1bHQ7CiAgICAgRml4ZWRWZWN0b3IoY29uc3Qg
Rml4ZWRWZWN0b3ImIG90aGVyKQotICAgICAgICA6IG1fc3RvcmFnZShvdGhlci5tX3N0b3JhZ2Uu
Y2xvbmUoKSkKKyAgICAgICAgOiBtX3N0b3JhZ2Uob3RoZXIubV9zdG9yYWdlID8gb3RoZXIubV9z
dG9yYWdlLT5jbG9uZSgpLm1vdmVUb1VuaXF1ZVB0cigpIDogbnVsbHB0cikKICAgICB7IH0KICAg
ICBGaXhlZFZlY3RvcihGaXhlZFZlY3RvciYmIG90aGVyKSA9IGRlZmF1bHQ7CiAKQEAgLTYwLDc2
ICs2MiwxMDIgQEAgY2xhc3MgRml4ZWRWZWN0b3IgewogICAgIH0KIAogICAgIGV4cGxpY2l0IEZp
eGVkVmVjdG9yKHNpemVfdCBzaXplKQotICAgICAgICA6IG1fc3RvcmFnZShzaXplKQorICAgICAg
ICA6IG1fc3RvcmFnZShzaXplID8gU3RvcmFnZTo6Y3JlYXRlKHNpemUpLm1vdmVUb1VuaXF1ZVB0
cigpIDogbnVsbHB0cikKICAgICB7IH0KIAogICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPgogICAgIGV4cGxpY2l0IEZpeGVkVmVjdG9y
KGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiYgb3RoZXIp
Ci0gICAgICAgIDogbV9zdG9yYWdlKG90aGVyKQorICAgICAgICA6IG1fc3RvcmFnZShvdGhlci5p
c0VtcHR5KCkgPyBudWxscHRyIDogU3RvcmFnZTo6Y3JlYXRlRnJvbVZlY3RvcihvdGhlcikubW92
ZVRvVW5pcXVlUHRyKCkpCiAgICAgeyB9CiAKICAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2Fw
YWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4KICAgICBGaXhlZFZlY3RvciYgb3BlcmF0
b3I9KGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiYgb3Ro
ZXIpCiAgICAgewotICAgICAgICBtX3N0b3JhZ2UgPSBvdGhlcjsKKyAgICAgICAgbV9zdG9yYWdl
ID0gb3RoZXIuaXNFbXB0eSgpID8gbnVsbHB0ciA6IFN0b3JhZ2U6OmNyZWF0ZUZyb21WZWN0b3Io
b3RoZXIpLm1vdmVUb1VuaXF1ZVB0cigpOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQog
CiAgICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hh
bmRsZXI+CiAgICAgZXhwbGljaXQgRml4ZWRWZWN0b3IoVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5
LCBPdmVyZmxvd0hhbmRsZXI+JiYgb3RoZXIpCi0gICAgICAgIDogbV9zdG9yYWdlKFdURk1vdmUo
b3RoZXIpKQotICAgIHsgfQorICAgIHsKKyAgICAgICAgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5
LCBPdmVyZmxvd0hhbmRsZXI+IHRhcmdldCA9IFdURk1vdmUob3RoZXIpOworICAgICAgICBtX3N0
b3JhZ2UgPSB0YXJnZXQuaXNFbXB0eSgpID8gbnVsbHB0ciA6IFN0b3JhZ2U6OmNyZWF0ZUZyb21W
ZWN0b3IoV1RGTW92ZSh0YXJnZXQpKS5tb3ZlVG9VbmlxdWVQdHIoKTsKKyAgICB9CiAKICAgICB0
ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4K
ICAgICBGaXhlZFZlY3RvciYgb3BlcmF0b3I9KFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3Zl
cmZsb3dIYW5kbGVyPiYmIG90aGVyKQogICAgIHsKLSAgICAgICAgbV9zdG9yYWdlID0gV1RGTW92
ZShvdGhlcik7CisgICAgICAgIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5k
bGVyPiB0YXJnZXQgPSBXVEZNb3ZlKG90aGVyKTsKKyAgICAgICAgbV9zdG9yYWdlID0gdGFyZ2V0
LmlzRW1wdHkoKSA/IG51bGxwdHIgOiBTdG9yYWdlOjpjcmVhdGVGcm9tVmVjdG9yKFdURk1vdmUo
dGFyZ2V0KSkubW92ZVRvVW5pcXVlUHRyKCk7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9
CiAKLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZS5zaXplKCk7IH0K
LSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UuaXNFbXB0eSgpOyB9
Ci0gICAgc2l6ZV90IGJ5dGVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlLmJ5dGVTaXpl
KCk7IH0KKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZSA/IG1fc3Rv
cmFnZS0+c2l6ZSgpIDogMDsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RvcmFnZSA/IG1fc3RvcmFnZS0+aXNFbXB0eSgpIDogdHJ1ZTsgfQorICAgIHNpemVfdCBieXRl
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZSA/IG1fc3RvcmFnZS0+Ynl0ZVNpemUoKSA6
IDA7IH0KIAotICAgIFQqIGRhdGEoKSB7IHJldHVybiBtX3N0b3JhZ2UuZGF0YSgpOyB9Ci0gICAg
aXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBtX3N0b3JhZ2UuYmVnaW4oKTsgfQotICAgIGl0ZXJh
dG9yIGVuZCgpIHsgcmV0dXJuIG1fc3RvcmFnZS5lbmQoKTsgfQorICAgIFQqIGRhdGEoKSB7IHJl
dHVybiBtX3N0b3JhZ2UgPyBtX3N0b3JhZ2UtPmRhdGEoKSA6IG51bGxwdHI7IH0KKyAgICBpdGVy
YXRvciBiZWdpbigpIHsgcmV0dXJuIG1fc3RvcmFnZSA/IG1fc3RvcmFnZS0+YmVnaW4oKSA6IG51
bGxwdHI7IH0KKyAgICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiBtX3N0b3JhZ2UgPyBtX3N0b3Jh
Z2UtPmVuZCgpIDogbnVsbHB0cjsgfQogCiAgICAgY29uc3QgVCogZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIGNvbnN0X2Nhc3Q8Rml4ZWRWZWN0b3IqPih0aGlzKS0+ZGF0YSgpOyB9CiAgICAgY29uc3Rf
aXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEZpeGVkVmVjdG9yKj4o
dGhpcyktPmJlZ2luKCk7IH0KICAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVy
biBjb25zdF9jYXN0PEZpeGVkVmVjdG9yKj4odGhpcyktPmVuZCgpOyB9CiAKLSAgICByZXZlcnNl
X2l0ZXJhdG9yIHJiZWdpbigpIHsgcmV0dXJuIG1fc3RvcmFnZS5yYmVnaW4oKTsgfQotICAgIHJl
dmVyc2VfaXRlcmF0b3IgcmVuZCgpIHsgcmV0dXJuIG1fc3RvcmFnZS5yZW5kKCk7IH0KLSAgICBj
b25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZS5y
YmVnaW4oKTsgfQotICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmVuZCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RvcmFnZS5yZW5kKCk7IH0KKyAgICByZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIHsg
cmV0dXJuIG1fc3RvcmFnZSA/IG1fc3RvcmFnZS0+cmJlZ2luKCkgOiByZXZlcnNlX2l0ZXJhdG9y
KG51bGxwdHIpOyB9CisgICAgcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkgeyByZXR1cm4gbV9zdG9y
YWdlID8gbV9zdG9yYWdlLT5yZW5kKCkgOiByZXZlcnNlX2l0ZXJhdG9yKG51bGxwdHIpOyB9Cisg
ICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX3N0b3Jh
Z2UgPyBtX3N0b3JhZ2UtPnJiZWdpbigpIDogY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihudWxscHRy
KTsgfQorICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmVuZCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RvcmFnZSA/IG1fc3RvcmFnZS0+cmVuZCgpIDogY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihudWxs
cHRyKTsgfQogCi0gICAgVCYgYXQoc2l6ZV90IGkpIHsgcmV0dXJuIG1fc3RvcmFnZS5hdChpKTsg
fQotICAgIGNvbnN0IFQmIGF0KHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UuYXQo
aSk7IH0KKyAgICBUJiBhdChzaXplX3QgaSkgeyByZXR1cm4gbV9zdG9yYWdlLT5hdChpKTsgfQor
ICAgIGNvbnN0IFQmIGF0KHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UtPmF0KGkp
OyB9CiAKLSAgICBUJiBvcGVyYXRvcltdKHNpemVfdCBpKSB7IHJldHVybiBhdChpKTsgfQotICAg
IGNvbnN0IFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIGF0KGkpOyB9Cisg
ICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyByZXR1cm4gbV9zdG9yYWdlLT5hdChpKTsgfQor
ICAgIGNvbnN0IFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFn
ZS0+YXQoaSk7IH0KIAogICAgIFQmIGZpcnN0KCkgeyByZXR1cm4gKCp0aGlzKVswXTsgfQogICAg
IGNvbnN0IFQmIGZpcnN0KCkgY29uc3QgeyByZXR1cm4gKCp0aGlzKVswXTsgfQogICAgIFQmIGxh
c3QoKSB7IHJldHVybiAoKnRoaXMpW3NpemUoKSAtIDFdOyB9CiAgICAgY29uc3QgVCYgbGFzdCgp
IGNvbnN0IHsgcmV0dXJuICgqdGhpcylbc2l6ZSgpIC0gMV07IH0KIAotICAgIHZvaWQgZmlsbChj
b25zdCBUJiB2YWwpIHsgbV9zdG9yYWdlLmZpbGwodmFsKTsgfQorICAgIHZvaWQgZmlsbChjb25z
dCBUJiB2YWwpCisgICAgeworICAgICAgICBpZiAoIW1fc3RvcmFnZSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgbV9zdG9yYWdlLT5maWxsKHZhbCk7CisgICAgfQogCi0gICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEZpeGVkVmVjdG9yPFQ+JiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9z
dG9yYWdlID09IG90aGVyLm1fc3RvcmFnZTsgfQorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBG
aXhlZFZlY3RvcjxUPiYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhp
cyA9PSBvdGhlcik7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpeGVkVmVj
dG9yPFQ+JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghbV9zdG9yYWdlKSB7Cisg
ICAgICAgICAgICBpZiAoIW90aGVyLm1fc3RvcmFnZSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBvdGhlci5tX3N0b3JhZ2UtPmlzRW1wdHkoKTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoIW90aGVyLm1fc3RvcmFnZSkKKyAgICAgICAgICAgIHJldHVy
biBtX3N0b3JhZ2UtPmlzRW1wdHkoKTsKKyAgICAgICAgcmV0dXJuICptX3N0b3JhZ2UgPT0gKm90
aGVyLm1fc3RvcmFnZTsKKyAgICB9CiAKICAgICB2b2lkIHN3YXAoRml4ZWRWZWN0b3I8VD4mIG90
aGVyKQogICAgIHsKLSAgICAgICAgbV9zdG9yYWdlLnN3YXAob3RoZXIubV9zdG9yYWdlKTsKKyAg
ICAgICAgdXNpbmcgc3RkOjpzd2FwOworICAgICAgICBzd2FwKG1fc3RvcmFnZSwgb3RoZXIubV9z
dG9yYWdlKTsKICAgICB9CiAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU3RvcmFnZSgp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihGaXhlZFZlY3RvciwgbV9zdG9yYWdlKTsgfQogCisg
ICAgU3RvcmFnZSogZ2V0U3RvcmFnZSgpIHsgcmV0dXJuIG1fc3RvcmFnZS5nZXQoKTsgfQorCiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAot
ICAgIFJlZkNvdW50ZWRBcnJheTxUPiBtX3N0b3JhZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRyPFN0
b3JhZ2U+IG1fc3RvcmFnZTsKIH07CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihGaXhlZFZlY3Rvcjxp
bnQ+KSA9PSBzaXplb2YoaW50KikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZWZD
b3VudGVkRml4ZWRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRGaXhlZFZlY3Rv
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjEyZjMzNzNlMTk2ZDdlZTIwMmMzZTk4NWIyOGFiMmU3ZTFiZWJiNzYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkRml4ZWRWZWN0b3Iu
aApAQCAtMCwwICsxLDExMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVk
ZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1RyYWlsaW5nQXJyYXkuaD4K
KworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIGJvb2wgaXNUaHJlYWRT
YWZlPgorY2xhc3MgUmVmQ291bnRlZEZpeGVkVmVjdG9yQmFzZSBmaW5hbCA6IHB1YmxpYyBzdGQ6
OmNvbmRpdGlvbmFsPGlzVGhyZWFkU2FmZSwgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVmQ291bnRl
ZEZpeGVkVmVjdG9yQmFzZTxULCBpc1RocmVhZFNhZmU+PiwgUmVmQ291bnRlZDxSZWZDb3VudGVk
Rml4ZWRWZWN0b3JCYXNlPFQsIGlzVGhyZWFkU2FmZT4+Pjo6dHlwZSwgcHVibGljIFRyYWlsaW5n
QXJyYXk8UmVmQ291bnRlZEZpeGVkVmVjdG9yQmFzZTxULCBpc1RocmVhZFNhZmU+LCBUPiB7Citw
dWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IFRyYWlsaW5nQXJyYXk8UmVmQ291bnRlZEZpeGVkVmVj
dG9yQmFzZTxULCBpc1RocmVhZFNhZmU+LCBUPjsKKworICAgIHN0YXRpYyBSZWY8UmVmQ291bnRl
ZEZpeGVkVmVjdG9yQmFzZT4gY3JlYXRlKHVuc2lnbmVkIHNpemUpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyAoTm90TnVsbCwgZmFzdE1hbGxvYyhCYXNlOjphbGxvY2F0aW9u
U2l6ZShzaXplKSkpIFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2Uoc2l6ZSkpOworICAgIH0KKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIElucHV0SXRlcmF0b3I+CisgICAgc3RhdGljIFJlZjxSZWZD
b3VudGVkRml4ZWRWZWN0b3JCYXNlPiBjcmVhdGUoSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJ
dGVyYXRvciBsYXN0KQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgc2l6ZSA9IHN0ZDo6ZGlzdGFu
Y2UoZmlyc3QsIGxhc3QpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyAoTm90TnVsbCwg
ZmFzdE1hbGxvYyhCYXNlOjphbGxvY2F0aW9uU2l6ZShzaXplKSkpIFJlZkNvdW50ZWRGaXhlZFZl
Y3RvckJhc2Uoc2l6ZSwgZmlyc3QsIGxhc3QpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxzaXpl
X3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4KKyAgICBzdGF0aWMg
UmVmPFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2U+IGNyZWF0ZUZyb21WZWN0b3IoY29uc3QgVmVj
dG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiBvdGhlcikKKyAgICB7Cisg
ICAgICAgIHVuc2lnbmVkIHNpemUgPSBzdGQ6OnNpemUob3RoZXIpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyAoTm90TnVsbCwgZmFzdE1hbGxvYyhCYXNlOjphbGxvY2F0aW9uU2l6ZShz
aXplKSkpIFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2Uoc2l6ZSwgc3RkOjpiZWdpbihvdGhlciks
IHN0ZDo6ZW5kKG90aGVyKSkpOworICAgIH0KKworICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVD
YXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPgorICAgIHN0YXRpYyBSZWY8UmVmQ291
bnRlZEZpeGVkVmVjdG9yQmFzZT4gY3JlYXRlRnJvbVZlY3RvcihWZWN0b3I8VCwgaW5saW5lQ2Fw
YWNpdHksIE92ZXJmbG93SGFuZGxlcj4mJiBvdGhlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxU
LCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiBjb250YWluZXIgPSBXVEZNb3ZlKG90
aGVyKTsKKyAgICAgICAgdW5zaWduZWQgc2l6ZSA9IHN0ZDo6c2l6ZShjb250YWluZXIpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyAoTm90TnVsbCwgZmFzdE1hbGxvYyhCYXNlOjphbGxv
Y2F0aW9uU2l6ZShzaXplKSkpIFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2Uoc2l6ZSwgc3RkOjpt
b3ZlX2l0ZXJhdG9yIHsgc3RkOjpiZWdpbihjb250YWluZXIpIH0sIHN0ZDo6bW92ZV9pdGVyYXRv
ciB7IHN0ZDo6ZW5kKGNvbnRhaW5lcikgfSkpOworICAgIH0KKworICAgIFJlZjxSZWZDb3VudGVk
Rml4ZWRWZWN0b3JCYXNlPiBjbG9uZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gY3Jl
YXRlKEJhc2U6OmJlZ2luKCksIEJhc2U6OmVuZCgpKTsKKyAgICB9CisKKyAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgUmVmQ291bnRlZEZpeGVkVmVjdG9yQmFzZSYgb3RoZXIpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQorCisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2UmIG90aGVyKSBjb25zdAor
ICAgIHsKKyAgICAgICAgaWYgKEJhc2U6OnNpemUoKSAhPSBvdGhlci5zaXplKCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBCYXNl
OjpzaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKEJhc2U6OmF0KGkpICE9IG90aGVyLmF0
KGkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUmVmQ291bnRlZEZpeGVkVmVjdG9y
QmFzZSh1bnNpZ25lZCBzaXplKQorICAgICAgICA6IEJhc2Uoc2l6ZSkKKyAgICB7CisgICAgfQor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW5wdXRJdGVyYXRvcj4KKyAgICBSZWZDb3VudGVkRml4
ZWRWZWN0b3JCYXNlKHVuc2lnbmVkIHNpemUsIElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRl
cmF0b3IgbGFzdCkKKyAgICAgICAgOiBCYXNlKHNpemUsIGZpcnN0LCBsYXN0KQorICAgIHsKKyAg
ICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordXNpbmcgUmVmQ291bnRlZEZpeGVkVmVj
dG9yID0gUmVmQ291bnRlZEZpeGVkVmVjdG9yQmFzZTxULCBmYWxzZT47Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgordXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50ZWRGaXhlZFZlY3RvciA9IFJlZkNvdW50
ZWRGaXhlZFZlY3RvckJhc2U8VCwgdHJ1ZT47CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2lu
ZyBXVEY6OlJlZkNvdW50ZWRGaXhlZFZlY3RvcjsKK3VzaW5nIFdURjo6VGhyZWFkU2FmZVJlZkNv
dW50ZWRGaXhlZFZlY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RyYWlsaW5nQXJy
YXkuaCBiL1NvdXJjZS9XVEYvd3RmL1RyYWlsaW5nQXJyYXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NWMyNmU3
NmZkOTE4NjhjMzdlMjE0MjNmNjI5YjRmNTExNzg3YTMzCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dURi93dGYvVHJhaWxpbmdBcnJheS5oCkBAIC0wLDAgKzEsMTQxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx0eXBlX3RyYWl0cz4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV1RGIHsKKworLy8gVHJhaWxpbmdBcnJheSBv
ZmZlcnMgdGhlIGZlYXR1cmUgdHJhaWxpbmcgYXJyYXkgaW4gdGhlIGRlcml2ZWQgY2xhc3MuCisv
LyBXZSBjYW4gYWxsb2NhdGUgYSBtZW1vcnkgbGlrZSB0aGUgZm9sbG93aW5nIGxheW91dC4KKy8v
CisvLyAgICAgWyAgRGVyaXZlZENsYXNzICBdWyBUcmFpbGluZyBBcnJheSBdCisvLworLy8gQW5k
IHRyYWlsaW5nIGFycmF5IG9mZmVycyBhcHByb3ByaWF0ZSBtZXRob2RzIGZvciBhY2Nlc3Npbmcg
YW5kIGRlc3RydWN0aW9ucy4KK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIFQ+
CitjbGFzcyBUcmFpbGluZ0FycmF5IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUcmFpbGlu
Z0FycmF5KTsKKyAgICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7Citw
dWJsaWM6CisgICAgdXNpbmcgdmFsdWVfdHlwZSA9IFQ7CisgICAgdXNpbmcgcG9pbnRlciA9IFQq
OworICAgIHVzaW5nIHJlZmVyZW5jZSA9IFQmOworICAgIHVzaW5nIGNvbnN0X3JlZmVyZW5jZSA9
IGNvbnN0IFQmOworICAgIHVzaW5nIGNvbnN0X3BvaW50ZXIgPSBjb25zdCBUKjsKKyAgICB1c2lu
ZyBzaXplX3R5cGUgPSB1bnNpZ25lZDsKKyAgICB1c2luZyBkaWZmZXJlbmNlX3R5cGUgPSBzdGQ6
Om1ha2Vfc2lnbmVkX3Q8c2l6ZV90eXBlPjsKKyAgICB1c2luZyBpdGVyYXRvciA9IFQqOworICAg
IHVzaW5nIGNvbnN0X2l0ZXJhdG9yID0gY29uc3QgVCo7CisgICAgdXNpbmcgcmV2ZXJzZV9pdGVy
YXRvciA9IHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj47CisgICAgdXNpbmcgY29uc3Rf
cmV2ZXJzZV9pdGVyYXRvciA9IHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxjb25zdF9pdGVyYXRvcj47
CisKKyAgICBleHBsaWNpdCBUcmFpbGluZ0FycmF5KHVuc2lnbmVkIHNpemUpCisgICAgICAgIDog
bV9zaXplKHNpemUpCisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfZmluYWxf
djxEZXJpdmVkPik7CisgICAgICAgIFZlY3RvclR5cGVPcGVyYXRpb25zPFQ+Ojppbml0aWFsaXpl
SWZOb25QT0QoYmVnaW4oKSwgZW5kKCkpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IElucHV0SXRlcmF0b3I+CisgICAgVHJhaWxpbmdBcnJheSh1bnNpZ25lZCBzaXplLCBJbnB1dEl0
ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QpCisgICAgICAgIDogbV9zaXplKHNpemUp
CisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfZmluYWxfdjxEZXJpdmVkPik7
CisgICAgICAgIEFTU0VSVChzdGQ6OmRpc3RhbmNlKGZpcnN0LCBsYXN0KSA9PSBzaXplKTsKKyAg
ICAgICAgc3RkOjp1bmluaXRpYWxpemVkX2NvcHkoZmlyc3QsIGxhc3QsIGJlZ2luKCkpOworICAg
IH0KKworICAgIH5UcmFpbGluZ0FycmF5KCkKKyAgICB7CisgICAgICAgIFZlY3RvclR5cGVPcGVy
YXRpb25zPFQ+OjpkZXN0cnVjdChiZWdpbigpLCBlbmQoKSk7CisgICAgfQorCisgICAgc3RhdGlj
IGNvbnN0ZXhwciBzaXplX3QgYWxsb2NhdGlvblNpemUodW5zaWduZWQgc2l6ZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBvZmZzZXRPZkRhdGEoKSArIHNpemUgKiBzaXplb2YoVCk7CisgICAgfQor
CisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzaXplKCk7IH0KKyAgICB1bnNpZ25lZCBieXRlU2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemUoKSAqIHNpemVvZihUKTsgfQorCisgICAgcG9pbnRlciBk
YXRhKCkgeyByZXR1cm4gYml0d2lzZV9jYXN0PFQqPihiaXR3aXNlX2Nhc3Q8dWludDhfdCo+KHN0
YXRpY19jYXN0PERlcml2ZWQqPih0aGlzKSkgKyBvZmZzZXRPZkRhdGEoKSk7IH0KKyAgICBjb25z
dF9wb2ludGVyIGRhdGEoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8Y29uc3QgVCo+KGJp
dHdpc2VfY2FzdDxjb25zdCB1aW50OF90Kj4oc3RhdGljX2Nhc3Q8Y29uc3QgRGVyaXZlZCo+KHRo
aXMpKSArIG9mZnNldE9mRGF0YSgpKTsgfQorCisgICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVy
biBkYXRhKCk7IH0KKyAgICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiBkYXRhKCkgKyBzaXplKCk7
IH0KKyAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGNiZWdpbigpOyB9
CisgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gY2VuZCgpOyB9CisgICAg
Y29uc3RfaXRlcmF0b3IgY2JlZ2luKCkgY29uc3QgeyByZXR1cm4gZGF0YSgpOyB9CisgICAgY29u
c3RfaXRlcmF0b3IgY2VuZCgpIGNvbnN0IHsgcmV0dXJuIGRhdGEoKSArIHNpemUoKTsgfQorCisg
ICAgcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGVu
ZCgpKTsgfQorICAgIHJldmVyc2VfaXRlcmF0b3IgcmVuZCgpIHsgcmV0dXJuIHJldmVyc2VfaXRl
cmF0b3IoYmVnaW4oKSk7IH0KKyAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIGNv
bnN0IHsgcmV0dXJuIGNyYmVnaW4oKTsgfQorICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmVu
ZCgpIGNvbnN0IHsgcmV0dXJuIGNyZW5kKCk7IH0KKyAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9y
IGNyYmVnaW4oKSBjb25zdCB7IHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsg
fQorICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgY3JlbmQoKSBjb25zdCB7IHJldHVybiBjb25z
dF9yZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOyB9CisKKyAgICByZWZlcmVuY2UgYXQodW5zaWdu
ZWQgaSkKKyAgICB7CisgICAgICAgIEFTU0VSVChpIDwgc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJu
IGJlZ2luKClbaV07CisgICAgfQorCisgICAgY29uc3RfcmVmZXJlbmNlIGF0KHVuc2lnbmVkIGkp
IGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaSA8IHNpemUoKSk7CisgICAgICAgIHJldHVy
biBiZWdpbigpW2ldOworICAgIH0KKworICAgIHJlZmVyZW5jZSBvcGVyYXRvcltdKHVuc2lnbmVk
IGkpIHsgcmV0dXJuIGF0KGkpOyB9CisgICAgY29uc3RfcmVmZXJlbmNlIG9wZXJhdG9yW10odW5z
aWduZWQgaSkgY29uc3QgeyByZXR1cm4gYXQoaSk7IH0KKworICAgIFQmIGZpcnN0KCkgeyByZXR1
cm4gKCp0aGlzKVswXTsgfQorICAgIGNvbnN0IFQmIGZpcnN0KCkgY29uc3QgeyByZXR1cm4gKCp0
aGlzKVswXTsgfQorICAgIFQmIGxhc3QoKSB7IHJldHVybiAoKnRoaXMpW3NpemUoKSAtIDFdOyB9
CisgICAgY29uc3QgVCYgbGFzdCgpIGNvbnN0IHsgcmV0dXJuICgqdGhpcylbc2l6ZSgpIC0gMV07
IH0KKworICAgIHZvaWQgZmlsbChjb25zdCBUJiB2YWwpCisgICAgeworICAgICAgICBzdGQ6OmZp
bGwoYmVnaW4oKSwgZW5kKCksIHZhbCk7CisgICAgfQorCisgICAgc3RhdGljIHB0cmRpZmZfdCBv
ZmZzZXRPZlNpemUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRGVyaXZlZCwgbV9zaXplKTsg
fQorICAgIHN0YXRpYyBjb25zdGV4cHIgcHRyZGlmZl90IG9mZnNldE9mRGF0YSgpCisgICAgewor
ICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPGFsaWdub2YoVCk+KHNpemVv
ZihEZXJpdmVkKSk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgdW5zaWduZWQgbV9zaXplIHsg
MCB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6VHJhaWxpbmdBcnJh
eTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5
NmE4ZGJiODNiNzIyNjQ0ZGM2ZjAyZWEzNWYyNTkwMTdhYjljNmJmLi41ZjZmZjg3MTY2NGRkNTdl
ZTY4MTUwMTQwZjZkMjE1ODJjNThkZDk1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjEtMTItMTEgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBJbnRyb2R1Y2UgVHJh
aWxpbmdBcnJheQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM0MjAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0VtYmVkZGVkRml4ZWRWZWN0b3IuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RGVz
dHJ1Y3Rvck9ic2VydmVyOjpEZXN0cnVjdG9yT2JzZXJ2ZXIpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6RGVzdHJ1Y3Rvck9ic2VydmVyOjp+RGVzdHJ1Y3Rvck9ic2VydmVyKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OkRlc3RydWN0b3JPYnNlcnZlcjo6b3BlcmF0b3I9KToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaXhlZFZlY3Rvci5jcHA6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZD
b3VudGVkRml4ZWRWZWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RGVzdHJ1Y3Rvck9ic2VydmVyOjpEZXN0cnVj
dG9yT2JzZXJ2ZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RGVzdHJ1Y3Rvck9ic2VydmVy
Ojp+RGVzdHJ1Y3Rvck9ic2VydmVyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkRlc3RydWN0
b3JPYnNlcnZlcjo6b3BlcmF0b3I9KToKKwogMjAyMS0xMi0xMCAgRXJpYyBDYXJsc29uICA8ZXJp
Yy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIEFkZCBuZXcgc2NyZWVuIGFu
ZCB3aW5kb3cgY2FwdHVyZSBiYWNrZW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAppbmRl
eCBmY2M5ZmZjNjEyZjZmOTAxN2Q2NDhkNjVmNTMwZTVmNjYzODg1NmU2Li5hMWE5MTQyZmZhOGI1
NWY3N2I1NGU0ZmFlODU2ZGFmZjA5ZWMxYzNiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50
eHQKQEAgLTM4LDYgKzM4LDcgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgIFRlc3RzL1dURi9E
YXRhTXV0ZXguY3BwCiAgICAgVGVzdHMvV1RGL0RhdGVNYXRoLmNwcAogICAgIFRlc3RzL1dURi9E
ZXF1ZS5jcHAKKyAgICBUZXN0cy9XVEYvRW1iZWRkZWRGaXhlZFZlY3Rvci5jcHAKICAgICBUZXN0
cy9XVEYvRW51bVRyYWl0cy5jcHAKICAgICBUZXN0cy9XVEYvRXhwZWN0ZWQuY3BwCiAgICAgVGVz
dHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC03NCw2ICs3NSw3IEBAIHNldChUZXN0V1RGX1NPVVJD
RVMKICAgICBUZXN0cy9XVEYvUHJpb3JpdHlRdWV1ZS5jcHAKICAgICBUZXN0cy9XVEYvUmVkQmxh
Y2tUcmVlLmNwcAogICAgIFRlc3RzL1dURi9SZWYuY3BwCisgICAgVGVzdHMvV1RGL1JlZkNvdW50
ZWRGaXhlZFZlY3Rvci5jcHAKICAgICBUZXN0cy9XVEYvUmVmQ291bnRlci5jcHAKICAgICBUZXN0
cy9XVEYvUmVmTG9nZ2VyLmNwcAogICAgIFRlc3RzL1dURi9SZWZQdHIuY3BwCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDE3OGIzMDljNDVjM2EwNjRmMjhiMDdkYjBmYTkwMGI0NGQ3MTgyOWEu
LmFjZDZjYmUyODBhNDgyMTQyZGM4OWM3OWI4NDk1N2E2NTUxNzU4YmMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC05NjUsNiArOTY1LDcgQEAKIAkJRTEyMjBEQ0ExNTVCMjhBQTAwMTNFMkZD
IC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyMjBE
QzkxNTVCMjg3RDAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9h
ZERlbGVnYXRlLmh0bWwgKi87IH07CiAJCUUxOTRFMUJEMTc3RTUzQzcwMDlDNEQ0RSAvKiBTdG9w
TG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTk0RTFCQzE3N0U1MzRBMDA5QzRENEUg
LyogU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLmh0bWwgKi87IH07CiAJCUUzMDJC
REFBMjQwNEI5MjQwMDg2NTI3NyAvKiBDb21wYWN0UmVmUHRyVHVwbGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMwMkJEQTkyNDA0QjkyMzAwODY1
Mjc3IC8qIENvbXBhY3RSZWZQdHJUdXBsZS5jcHAgKi87IH07CisJCUUzMTZENDIwMjc2NDdBMDIw
MDI4N0IxNiAvKiBSZWZDb3VudGVkRml4ZWRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMxNkQ0MUYyNzY0N0EwMjAwMjg3QjE2IC8qIFJl
ZkNvdW50ZWRGaXhlZFZlY3Rvci5jcHAgKi87IH07CiAJCUUzMjEwNTE5MjYxOTc5RjMwMDE1N0M2
NyAvKiBGaXhlZFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzIxMDUxODI2MTk3OUYzMDAxNTdDNjcgLyogRml4ZWRWZWN0b3IuY3BwICov
OyB9OwogCQlFMzI0QTZGMDIwNDFDODIwMDBBNzY1OTMgLyogVW5pcXVlQXJyYXkuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5OEJDMEYyMDQxQzc2
MzAwMzg3MTM2IC8qIFVuaXF1ZUFycmF5LmNwcCAqLzsgfTsKIAkJRTMyNUM5MDcyM0UzODcwMjAw
QkM3RDNCIC8qIFBpY3R1cmVJblBpY3R1cmVTdXBwb3J0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyNUM5MDYyM0UzODcwMjAwQkM3RDNCIC8qIFBp
Y3R1cmVJblBpY3R1cmVTdXBwb3J0Lm1tICovOyB9OwpAQCAtOTc0LDYgKzk3NSw3IEBACiAJCUUz
NTVBNjMyMjYxNTcxOEYwMDFDMTEyOSAvKiBSb2Jpbkhvb2RIYXNoTWFwLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTVBNjMxMjYxNTcxOEYwMDFD
MTEyOSAvKiBSb2Jpbkhvb2RIYXNoTWFwLmNwcCAqLzsgfTsKIAkJRTM1QjkwODIyM0Y2MEREMDAw
MDAxMUZGIC8qIExvY2FsaXplZERldmljZU1vZGVsLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1QjkwODEyM0Y2MEREMDAwMDAxMUZGIC8qIExvY2Fs
aXplZERldmljZU1vZGVsLm1tICovOyB9OwogCQlFMzVGQzdCMjIyQjgyQTczMDBGMzJGOTggLyog
SlNMb2NrVGFrZXNXZWJUaHJlYWRMb2NrLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM1RkM3QjEyMkI4MkE2RDAwRjMyRjk4IC8qIEpTTG9ja1Rha2Vz
V2ViVGhyZWFkTG9jay5tbSAqLzsgfTsKKwkJRTM2Qjg3QTMyNzYyMjE4NzAwNTlEMkY5IC8qIEVt
YmVkZGVkRml4ZWRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM2Qjg3QTIyNzYyMjE4NjAwNTlEMkY5IC8qIEVtYmVkZGVkRml4ZWRWZWN0
b3IuY3BwICovOyB9OwogCQlFMzczRDc5MTFGMkNGMzUyMDBDNkZBQUYgLyogU2lnbmFscy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk1M0Y5NTFG
MkNGMzIxMDBBNzZBMkUgLyogU2lnbmFscy5jcHAgKi87IH07CiAJCUUzOEEwRDM1MUZENTBDQzMw
MEU5OEM4QiAvKiBUaHJlYWRpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM4QTBEMzQxRkQ1MENCQzAwRTk4QzhCIC8qIFRocmVhZGluZy5jcHAg
Ki87IH07CiAJCUUzOEQ2NUNBMjNBNDVGQUEwMDYzRDY5QSAvKiBQYWNrZWRSZWYuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4RDY1QzgyM0E0NUZB
OTAwNjNENjlBIC8qIFBhY2tlZFJlZi5jcHAgKi87IH07CkBAIC0yODg4LDYgKzI4OTAsNyBAQAog
CQlFMTk0RTFCQTE3N0U1MTQ1MDA5QzRENEUgLyogU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJl
c3BvbnNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU3RvcExv
YWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMTk0RTFCQzE3N0U1MzRBMDA5QzRENEUgLyogU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2
ZVJlc3BvbnNlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9u
c2UuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMwMkJEQTkyNDA0QjkyMzAw
ODY1Mjc3IC8qIENvbXBhY3RSZWZQdHJUdXBsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDb21wYWN0UmVmUHRyVHVwbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFMzE2RDQxRjI3NjQ3QTAyMDAyODdCMTYgLyogUmVmQ291bnRlZEZpeGVkVmVj
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZkNvdW50ZWRG
aXhlZFZlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMjEwNTE4MjYx
OTc5RjMwMDE1N0M2NyAvKiBGaXhlZFZlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGaXhlZFZlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzMjVDOTA2MjNFMzg3MDIwMEJDN0QzQiAvKiBQaWN0dXJlSW5QaWN0dXJlU3VwcG9ydC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBpY3R1cmVJblBpY3R1cmVTdXBwb3J0Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzJCNTQ5MTIyODEwQUMwMDA4QUQ3MDIgLyogUGFj
a2VkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhY2tlZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yODk2LDYgKzI4OTksNyBAQAogCQlFMzU1QTYzMTI2MTU3MThGMDAxQzEx
MjkgLyogUm9iaW5Ib29kSGFzaE1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSb2Jpbkhvb2RIYXNoTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTM1QjkwODEyM0Y2MEREMDAwMDAxMUZGIC8qIExvY2FsaXplZERldmljZU1vZGVsLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gTG9jYWxpemVkRGV2aWNlTW9kZWwubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzNUZDN0IxMjJCODJBNkQwMEYzMkY5OCAvKiBKU0xvY2tUYWtl
c1dlYlRocmVhZExvY2subW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBKU0xvY2tUYWtlc1dlYlRocmVhZExvY2subW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzNkI4N0EyMjc2MjIxODYwMDU5RDJGOSAvKiBFbWJlZGRlZEZpeGVkVmVjdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVtYmVkZGVkRml4ZWRWZWN0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4ODg3MDIwQzkwOTgxMDBFNjMy
QkMgLyogV29ya2VyUG9vbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXb3JrZXJQb29sLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4QTBEMzQx
RkQ1MENCQzAwRTk4QzhCIC8qIFRocmVhZGluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBUaHJlYWRpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzhENjVDODIzQTQ1RkE5MDA2M0Q2OUEgLyogUGFja2VkUmVmLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhY2tlZFJlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC00NDgzLDYgKzQ0ODcsNyBAQAogCQkJCTdBQTAyMUJBMUFCMDlFQTcwMDUy
OTUzRiAvKiBEYXRlTWF0aC5jcHAgKi8sCiAJCQkJMUEzNTI0QTkxRDYyN0JENDAwMzE3MjlCIC8q
IERlbGV0ZWRBZGRyZXNzT2ZPcGVyYXRvci5oICovLAogCQkJCUU0QTc1N0QzMTc4QUVBNUIwMEI1
RDdBNCAvKiBEZXF1ZS5jcHAgKi8sCisJCQkJRTM2Qjg3QTIyNzYyMjE4NjAwNTlEMkY5IC8qIEVt
YmVkZGVkRml4ZWRWZWN0b3IuY3BwICovLAogCQkJCTFBRjdCMjFEMUQ2Q0QxMkUwMDhDMTI2QyAv
KiBFbnVtVHJhaXRzLmNwcCAqLywKIAkJCQlBRDdDNDM0QzFERDJBNTQ3MDAyNjg4OEIgLyogRXhw
ZWN0ZWQuY3BwICovLAogCQkJCUEzMTA4MjcxMjFGMjk2RUMwMEMyOEI5NyAvKiBGaWxlU3lzdGVt
LmNwcCAqLywKQEAgLTQ1MjUsNiArNDUzMCw3IEBACiAJCQkJNTNFQzI1M0YxRTk2QkM4MDAwMDgz
MUI5IC8qIFByaW9yaXR5UXVldWUuY3BwICovLAogCQkJCTBGQzZDNENCMTQxMDI3RTAwMDVCN0Yw
QyAvKiBSZWRCbGFja1RyZWUuY3BwICovLAogCQkJCTkzQTQyN0FBMTgwREEyNjQwMENEMjRENyAv
KiBSZWYuY3BwICovLAorCQkJCUUzMTZENDFGMjc2NDdBMDIwMDI4N0IxNiAvKiBSZWZDb3VudGVk
Rml4ZWRWZWN0b3IuY3BwICovLAogCQkJCTg2QkQxOTk3MUEyREIwNUIwMDZEQ0YwQSAvKiBSZWZD
b3VudGVyLmNwcCAqLywKIAkJCQk0NDJCQkY2ODFDOTFDQUQ5MDAxNzA4N0YgLyogUmVmTG9nZ2Vy
LmNwcCAqLywKIAkJCQk5M0E0MjdBRDE4MERBNjBGMDBDRDI0RDcgLyogUmVmTG9nZ2VyLmggKi8s
CkBAIC01MjYzLDYgKzUyNjksNyBAQAogCQkJCTVDMkMwMUE4MjczNDg4MzYwMEY4OUQzNyAvKiBD
cm9zc1RocmVhZENvcGllci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVBOTFEMEE1OTBD
MDBGRUJDRjMgLyogQ1N0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVBRDFEMEE1
OTBDMDBGRUJDRjMgLyogRGVxdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM2Qjg3QTMyNzYy
MjE4NzAwNTlEMkY5IC8qIEVtYmVkZGVkRml4ZWRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUFGN0IyMUYxRDZDRDE0RDAwOEMxMjZDIC8qIEVudW1UcmFpdHMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQUQ3QzQzNEQxREQyQTU0RTAwMjY4ODhCIC8qIEV4cGVjdGVkLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUEzMTA4MjcyMjFGMjk2RkYwMEMyOEI5NyAvKiBGaWxlU3lzdGVtLmNwcCBp
biBTb3VyY2VzICovLApAQCAtNTMwNCw2ICs1MzExLDcgQEAKIAkJCQk1M0VDMjU0MTFFOTZGRDg3
MDAwODMxQjkgLyogUHJpb3JpdHlRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYx
MzFEMEE1OTBDMDBGRUJDRjMgLyogUmVkQmxhY2tUcmVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTdDODNERjE0MUQwQTU5MEMwMEZFQkNGMyAvKiBSZWYuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
RTMxNkQ0MjAyNzY0N0EwMjAwMjg3QjE2IC8qIFJlZkNvdW50ZWRGaXhlZFZlY3Rvci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3QzgzREYxNTFEMEE1OTBDMDBGRUJDRjMgLyogUmVmQ291bnRlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVENzFEMEE1OTBDMDBGRUJDRjMgLyogUmVmTG9n
Z2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjE2MUQwQTU5MEMwMEZFQkNGMyAvKiBS
ZWZQdHIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9FbWJlZGRlZEZpeGVkVmVjdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0VtYmVkZGVkRml4ZWRWZWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhN2FiNTI0Y2Jk
ZjBhMThjY2M3NDZhNmM3MGE3NjllNmYwZjA4YzIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9FbWJlZGRlZEZpeGVkVmVjdG9yLmNwcApAQCAtMCwwICsx
LDI3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIk1v
dmVPbmx5LmgiCisjaW5jbHVkZSA8d3RmL0VtYmVkZGVkRml4ZWRWZWN0b3IuaD4KKworbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKFdURl9FbWJlZGRlZEZpeGVkVmVjdG9yLCBFbXB0
eSkKK3sKKyAgICBhdXRvIHZlY3RvciA9IEVtYmVkZGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+Ojpj
cmVhdGUoMCk7CisgICAgRVhQRUNUX1RSVUUodmVjdG9yLT5pc0VtcHR5KCkpOworICAgIEVYUEVD
VF9FUSgwVSwgdmVjdG9yLT5zaXplKCkpOworfQorCitURVNUKFdURl9FbWJlZGRlZEZpeGVkVmVj
dG9yLCBJdGVyYXRvcikKK3sKKyAgICBhdXRvIGludFZlY3RvciA9IEVtYmVkZGVkRml4ZWRWZWN0
b3I8dW5zaWduZWQ+OjpjcmVhdGUoNCk7CisgICAgaW50VmVjdG9yLmdldCgpWzBdID0gMTA7Cisg
ICAgaW50VmVjdG9yLmdldCgpWzFdID0gMTE7CisgICAgaW50VmVjdG9yLmdldCgpWzJdID0gMTI7
CisgICAgaW50VmVjdG9yLmdldCgpWzNdID0gMTM7CisKKyAgICBhdXRvIGl0ID0gaW50VmVjdG9y
LT5iZWdpbigpOworICAgIGF1dG8gZW5kID0gaW50VmVjdG9yLT5lbmQoKTsKKyAgICBFWFBFQ1Rf
VFJVRShlbmQgIT0gaXQpOworCisgICAgRVhQRUNUX0VRKDEwVSwgKml0KTsKKyAgICArK2l0Owor
ICAgIEVYUEVDVF9FUSgxMVUsICppdCk7CisgICAgKytpdDsKKyAgICBFWFBFQ1RfRVEoMTJVLCAq
aXQpOworICAgICsraXQ7CisgICAgRVhQRUNUX0VRKDEzVSwgKml0KTsKKyAgICArK2l0OworCisg
ICAgRVhQRUNUX1RSVUUoZW5kID09IGl0KTsKK30KKworVEVTVChXVEZfRW1iZWRkZWRGaXhlZFZl
Y3RvciwgT3ZlcmxvYWRlZE9wZXJhdG9yQW1wZXJzYW5kKQoreworICAgIHN0cnVjdCBUZXN0IHsK
KyAgICBwcml2YXRlOgorICAgICAgICBUZXN0KiBvcGVyYXRvciYoKSA9IGRlbGV0ZTsKKyAgICB9
OworCisgICAgYXV0byB2ZWN0b3IgPSBFbWJlZGRlZEZpeGVkVmVjdG9yPFRlc3Q+OjpjcmVhdGUo
MSk7CisgICAgdmVjdG9yLmdldCgpWzBdID0gVGVzdCgpOworfQorCitURVNUKFdURl9FbWJlZGRl
ZEZpeGVkVmVjdG9yLCBDb3B5KQoreworICAgIGF1dG8gdmVjMSA9IEVtYmVkZGVkRml4ZWRWZWN0
b3I8dW5zaWduZWQ+OjpjcmVhdGUoMyk7CisgICAgdmVjMS5nZXQoKVswXSA9IDA7CisgICAgdmVj
MS5nZXQoKVsxXSA9IDE7CisgICAgdmVjMS5nZXQoKVsyXSA9IDI7CisKKyAgICBhdXRvIHZlYzIg
PSBFbWJlZGRlZEZpeGVkVmVjdG9yPHVuc2lnbmVkPjo6Y3JlYXRlKHZlYzEtPmJlZ2luKCksIHZl
YzEtPmVuZCgpKTsKKyAgICBFWFBFQ1RfRVEoM1UsIHZlYzEtPnNpemUoKSk7CisgICAgRVhQRUNU
X0VRKDNVLCB2ZWMyLT5zaXplKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2ZWMx
LT5zaXplKCk7ICsraSkgeworICAgICAgICBFWFBFQ1RfRVEoaSwgdmVjMS5nZXQoKVtpXSk7Cisg
ICAgICAgIEVYUEVDVF9FUShpLCB2ZWMyLmdldCgpW2ldKTsKKyAgICB9CisgICAgdmVjMS5nZXQo
KVsyXSA9IDQyOworICAgIEVYUEVDVF9FUSg0MlUsIHZlYzEuZ2V0KClbMl0pOworICAgIEVYUEVD
VF9FUSgyVSwgdmVjMi5nZXQoKVsyXSk7Cit9CisKK1RFU1QoV1RGX0VtYmVkZGVkRml4ZWRWZWN0
b3IsIENvcHlWZWN0b3IpCit7CisgICAgYXV0byB2ZWMxID0gVmVjdG9yPHVuc2lnbmVkPjo6ZnJv
bSgwLCAxLCAyLCAzKTsKKyAgICBFWFBFQ1RfRVEoNFUsIHZlYzEuc2l6ZSgpKTsKKyAgICBhdXRv
IHZlYzIgPSBFbWJlZGRlZEZpeGVkVmVjdG9yPHVuc2lnbmVkPjo6Y3JlYXRlRnJvbVZlY3Rvcih2
ZWMxKTsKKyAgICBFWFBFQ1RfRVEoNFUsIHZlYzEuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoNFUs
IHZlYzItPnNpemUoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZlYzEuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgRVhQRUNUX0VRKGksIHZlYzFbaV0pOworICAgICAgICBFWFBFQ1Rf
RVEoaSwgdmVjMi5nZXQoKVtpXSk7CisgICAgfQorICAgIHZlYzFbMl0gPSA0MjsKKyAgICBFWFBF
Q1RfRVEoNDJVLCB2ZWMxWzJdKTsKKyAgICBFWFBFQ1RfRVEoMlUsIHZlYzIuZ2V0KClbMl0pOwor
fQorCitURVNUKFdURl9FbWJlZGRlZEZpeGVkVmVjdG9yLCBNb3ZlVmVjdG9yKQoreworICAgIGF1
dG8gdmVjMSA9IFZlY3RvcjxNb3ZlT25seT46OmZyb20oTW92ZU9ubHkoMCksIE1vdmVPbmx5KDEp
LCBNb3ZlT25seSgyKSwgTW92ZU9ubHkoMykpOworICAgIEVYUEVDVF9FUSg0VSwgdmVjMS5zaXpl
KCkpOworICAgIGF1dG8gdmVjMiA9IEVtYmVkZGVkRml4ZWRWZWN0b3I8TW92ZU9ubHk+OjpjcmVh
dGVGcm9tVmVjdG9yKFdURk1vdmUodmVjMSkpOworICAgIEVYUEVDVF9FUSgwVSwgdmVjMS5zaXpl
KCkpOworICAgIEVYUEVDVF9FUSg0VSwgdmVjMi0+c2l6ZSgpKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGluZGV4ID0gMDsgaW5kZXggPCB2ZWMyLT5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIEVYUEVD
VF9FUShpbmRleCwgdmVjMi5nZXQoKVtpbmRleF0udmFsdWUoKSk7Cit9CisKK1RFU1QoV1RGX0Vt
YmVkZGVkRml4ZWRWZWN0b3IsIEl0ZXJhdG9yRm9yKQoreworICAgIGF1dG8gdmVjMSA9IEVtYmVk
ZGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+OjpjcmVhdGUoMyk7CisgICAgdmVjMS5nZXQoKVswXSA9
IDA7CisgICAgdmVjMS5nZXQoKVsxXSA9IDE7CisgICAgdmVjMS5nZXQoKVsyXSA9IDI7CisKKyAg
ICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgZm9yIChhdXRvIGl0ZXIgPSB2ZWMxLT5iZWdpbigp
OyBpdGVyICE9IHZlYzEtPmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgRVhQRUNUX0VRKGluZGV4
LCAqaXRlcik7CisgICAgICAgICsraW5kZXg7CisgICAgfQorfQorCitURVNUKFdURl9FbWJlZGRl
ZEZpeGVkVmVjdG9yLCBSZXZlcnNlKQoreworICAgIGF1dG8gdmVjMSA9IEVtYmVkZGVkRml4ZWRW
ZWN0b3I8dW5zaWduZWQ+OjpjcmVhdGUoMyk7CisgICAgdmVjMS5nZXQoKVswXSA9IDA7CisgICAg
dmVjMS5nZXQoKVsxXSA9IDE7CisgICAgdmVjMS5nZXQoKVsyXSA9IDI7CisKKyAgICB1bnNpZ25l
ZCBpbmRleCA9IDA7CisgICAgZm9yIChhdXRvIGl0ZXIgPSB2ZWMxLT5yYmVnaW4oKTsgaXRlciAh
PSB2ZWMxLT5yZW5kKCk7ICsraXRlcikgeworICAgICAgICArK2luZGV4OworICAgICAgICBFWFBF
Q1RfRVEoM1UgLSBpbmRleCwgKml0ZXIpOworICAgIH0KK30KKworVEVTVChXVEZfRW1iZWRkZWRG
aXhlZFZlY3RvciwgRmlsbCkKK3sKKyAgICBhdXRvIHZlYzEgPSBFbWJlZGRlZEZpeGVkVmVjdG9y
PHVuc2lnbmVkPjo6Y3JlYXRlKDMpOworICAgIHZlYzEtPmZpbGwoNDIpOworCisgICAgZm9yIChh
dXRvJiB2YWx1ZSA6IHZlYzEuZ2V0KCkpCisgICAgICAgIEVYUEVDVF9FUSg0MlUsIHZhbHVlKTsK
K30KKworc3RydWN0IERlc3RydWN0b3JPYnNlcnZlciB7CisgICAgRGVzdHJ1Y3Rvck9ic2VydmVy
KCkgPSBkZWZhdWx0OworCisgICAgRGVzdHJ1Y3Rvck9ic2VydmVyKGJvb2wqIGRlc3RydWN0ZWQp
CisgICAgICAgIDogZGVzdHJ1Y3RlZChkZXN0cnVjdGVkKQorICAgIHsKKyAgICB9CisKKyAgICB+
RGVzdHJ1Y3Rvck9ic2VydmVyKCkKKyAgICB7CisgICAgICAgIGlmIChkZXN0cnVjdGVkKQorICAg
ICAgICAgICAgKmRlc3RydWN0ZWQgPSB0cnVlOworICAgIH0KKworICAgIERlc3RydWN0b3JPYnNl
cnZlcihEZXN0cnVjdG9yT2JzZXJ2ZXImJiBvdGhlcikKKyAgICAgICAgOiBkZXN0cnVjdGVkKG90
aGVyLmRlc3RydWN0ZWQpCisgICAgeworICAgICAgICBvdGhlci5kZXN0cnVjdGVkID0gbnVsbHB0
cjsKKyAgICB9CisKKyAgICBEZXN0cnVjdG9yT2JzZXJ2ZXImIG9wZXJhdG9yPShEZXN0cnVjdG9y
T2JzZXJ2ZXImJiBvdGhlcikKKyAgICB7CisgICAgICAgIGRlc3RydWN0ZWQgPSBvdGhlci5kZXN0
cnVjdGVkOworICAgICAgICBvdGhlci5kZXN0cnVjdGVkID0gbnVsbHB0cjsKKyAgICAgICAgcmV0
dXJuICp0aGlzOworICAgIH0KKworICAgIGJvb2wqIGRlc3RydWN0ZWQgeyBudWxscHRyIH07Cit9
OworCitURVNUKFdURl9FbWJlZGRlZEZpeGVkVmVjdG9yLCBEZXN0cnVjdG9yKQoreworICAgIFZl
Y3Rvcjxib29sPiBmbGFncygzLCBmYWxzZSk7CisgICAgeworICAgICAgICBhdXRvIHZlY3RvciA9
IEVtYmVkZGVkRml4ZWRWZWN0b3I8RGVzdHJ1Y3Rvck9ic2VydmVyPjo6Y3JlYXRlKGZsYWdzLnNp
emUoKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmbGFncy5zaXplKCk7ICsr
aSkKKyAgICAgICAgICAgIHZlY3Rvci5nZXQoKVtpXSA9IERlc3RydWN0b3JPYnNlcnZlcigmZmxh
Z3NbaV0pOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmxhZ3Muc2l6ZSgpOyAr
K2kpCisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoZmxhZ3NbaV0pOworICAgIH0KKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgZmxhZ3Muc2l6ZSgpOyArK2kpCisgICAgICAgIEVYUEVDVF9U
UlVFKGZsYWdzW2ldKTsKK30KKworVEVTVChXVEZfRW1iZWRkZWRGaXhlZFZlY3RvciwgRGVzdHJ1
Y3RvckFmdGVyTW92ZSkKK3sKKyAgICBWZWN0b3I8Ym9vbD4gZmxhZ3MoMywgZmFsc2UpOworICAg
IHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEVtYmVkZGVkRml4ZWRWZWN0b3I8RGVzdHJ1Y3Rv
ck9ic2VydmVyPj4gb3V0ZXJWZWN0b3I7CisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gdmVj
dG9yID0gRW1iZWRkZWRGaXhlZFZlY3RvcjxEZXN0cnVjdG9yT2JzZXJ2ZXI+OjpjcmVhdGUoZmxh
Z3Muc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmbGFncy5z
aXplKCk7ICsraSkKKyAgICAgICAgICAgICAgICB2ZWN0b3IuZ2V0KClbaV0gPSBEZXN0cnVjdG9y
T2JzZXJ2ZXIoJmZsYWdzW2ldKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBmbGFncy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoZmxhZ3Nb
aV0pOworICAgICAgICAgICAgb3V0ZXJWZWN0b3IgPSB2ZWN0b3IubW92ZVRvVW5pcXVlUHRyKCk7
CisgICAgICAgIH0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZsYWdzLnNpemUo
KTsgKytpKQorICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGZsYWdzW2ldKTsKKyAgICB9CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZsYWdzLnNpemUoKTsgKytpKQorICAgICAgICBFWFBF
Q1RfVFJVRShmbGFnc1tpXSk7Cit9CisKK1RFU1QoV1RGX0VtYmVkZGVkRml4ZWRWZWN0b3IsIEJh
c2ljKQoreworICAgIHN0ZDo6YXJyYXk8dW5zaWduZWQsIDQ+IGFycmF5IHsgeworICAgICAgICAw
LCAxLCAyLCAzCisgICAgfSB9OworICAgIHsKKyAgICAgICAgYXV0byB2ZWN0b3IgPSBFbWJlZGRl
ZEZpeGVkVmVjdG9yPHVuc2lnbmVkPjo6Y3JlYXRlKGFycmF5LmJlZ2luKCksIGFycmF5LmVuZCgp
KTsKKyAgICAgICAgRVhQRUNUX0VRKDRVLCB2ZWN0b3ItPnNpemUoKSk7CisgICAgICAgIEVYUEVD
VF9FUSgwVSwgdmVjdG9yLT5hdCgwKSk7CisgICAgICAgIEVYUEVDVF9FUSgxVSwgdmVjdG9yLT5h
dCgxKSk7CisgICAgICAgIEVYUEVDVF9FUSgyVSwgdmVjdG9yLT5hdCgyKSk7CisgICAgICAgIEVY
UEVDVF9FUSgzVSwgdmVjdG9yLT5hdCgzKSk7CisgICAgfQorfQorCitURVNUKFdURl9FbWJlZGRl
ZEZpeGVkVmVjdG9yLCBDbG9uZSkKK3sKKyAgICBzdGQ6OmFycmF5PHVuc2lnbmVkLCA0PiBhcnJh
eSB7IHsKKyAgICAgICAgMCwgMSwgMiwgMworICAgIH0gfTsKKyAgICB7CisgICAgICAgIGF1dG8g
dmVjdG9yID0gRW1iZWRkZWRGaXhlZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0ZShhcnJheS5iZWdp
bigpLCBhcnJheS5lbmQoKSk7CisgICAgICAgIEVYUEVDVF9FUSg0VSwgdmVjdG9yLT5zaXplKCkp
OworICAgICAgICBFWFBFQ1RfRVEoMFUsIHZlY3Rvci0+YXQoMCkpOworICAgICAgICBFWFBFQ1Rf
RVEoMVUsIHZlY3Rvci0+YXQoMSkpOworICAgICAgICBFWFBFQ1RfRVEoMlUsIHZlY3Rvci0+YXQo
MikpOworICAgICAgICBFWFBFQ1RfRVEoM1UsIHZlY3Rvci0+YXQoMykpOworCisgICAgICAgIGF1
dG8gY2xvbmVkID0gdmVjdG9yLT5jbG9uZSgpOworICAgICAgICBFWFBFQ1RfRVEoNFUsIGNsb25l
ZC0+c2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDBVLCBjbG9uZWQtPmF0KDApKTsKKyAgICAg
ICAgRVhQRUNUX0VRKDFVLCBjbG9uZWQtPmF0KDEpKTsKKyAgICAgICAgRVhQRUNUX0VRKDJVLCBj
bG9uZWQtPmF0KDIpKTsKKyAgICAgICAgRVhQRUNUX0VRKDNVLCBjbG9uZWQtPmF0KDMpKTsKKyAg
ICB9Cit9CisKK1RFU1QoV1RGX0VtYmVkZGVkRml4ZWRWZWN0b3IsIEVxdWFsKQoreworICAgIGF1
dG8gdmVjMSA9IEVtYmVkZGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+OjpjcmVhdGUoMTApOworICAg
IGF1dG8gdmVjMiA9IEVtYmVkZGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+OjpjcmVhdGUoMTApOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAxMDsgKytpKSB7CisgICAgICAgIHZlYzEuZ2V0
KClbaV0gPSBpOworICAgICAgICB2ZWMyLmdldCgpW2ldID0gaTsKKyAgICB9CisgICAgRVhQRUNU
X0VRKHZlYzEuZ2V0KCksIHZlYzIuZ2V0KCkpOworICAgIHZlYzEuZ2V0KClbMF0gPSA0MjsKKyAg
ICBFWFBFQ1RfTkUodmVjMS5nZXQoKSwgdmVjMi5nZXQoKSk7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpeGVkVmVjdG9yLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpeGVkVmVjdG9yLmNwcAppbmRleCAxNjE1M2RhYzk3MjVk
MGI1OGRiZmZjY2I0NjgyNjg3OTQ3ODAxNTVhLi5kMmVlY2JiOTUwZDg5ZGUxYzY1ZGFhZDU5OTQ0
ZTIyMjcxYWViZTIwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9G
aXhlZFZlY3Rvci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRml4ZWRW
ZWN0b3IuY3BwCkBAIC04NiwxNSArODYsMTUgQEAgVEVTVChXVEZfRml4ZWRWZWN0b3IsIENvcHkp
CiAgICAgdmVjMVsyXSA9IDI7CiAKICAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVjMih2ZWMx
KTsKLSAgICBFWFBFQ1RfRVEodmVjMS5zaXplKCksIDNVKTsKLSAgICBFWFBFQ1RfRVEodmVjMi5z
aXplKCksIDNVKTsKKyAgICBFWFBFQ1RfRVEoM1UsIHZlYzEuc2l6ZSgpKTsKKyAgICBFWFBFQ1Rf
RVEoM1UsIHZlYzIuc2l6ZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmVjMS5z
aXplKCk7ICsraSkgewotICAgICAgICBFWFBFQ1RfRVEodmVjMVtpXSwgaSk7Ci0gICAgICAgIEVY
UEVDVF9FUSh2ZWMyW2ldLCBpKTsKKyAgICAgICAgRVhQRUNUX0VRKGksIHZlYzFbaV0pOworICAg
ICAgICBFWFBFQ1RfRVEoaSwgdmVjMltpXSk7CiAgICAgfQogICAgIHZlYzFbMl0gPSA0MjsKLSAg
ICBFWFBFQ1RfRVEodmVjMVsyXSwgNDJVKTsKLSAgICBFWFBFQ1RfRVEodmVjMlsyXSwgMlUpOwor
ICAgIEVYUEVDVF9FUSg0MlUsIHZlYzFbMl0pOworICAgIEVYUEVDVF9FUSgyVSwgdmVjMlsyXSk7
CiB9CiAKIFRFU1QoV1RGX0ZpeGVkVmVjdG9yLCBDb3B5QXNzaWduKQpAQCAtMTA2LDE1ICsxMDYs
MTUgQEAgVEVTVChXVEZfRml4ZWRWZWN0b3IsIENvcHlBc3NpZ24pCiAKICAgICBGaXhlZFZlY3Rv
cjx1bnNpZ25lZD4gdmVjMjsKICAgICB2ZWMyID0gdmVjMTsKLSAgICBFWFBFQ1RfRVEodmVjMS5z
aXplKCksIDNVKTsKLSAgICBFWFBFQ1RfRVEodmVjMi5zaXplKCksIDNVKTsKKyAgICBFWFBFQ1Rf
RVEoM1UsIHZlYzEuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoM1UsIHZlYzIuc2l6ZSgpKTsKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmVjMS5zaXplKCk7ICsraSkgewotICAgICAgICBF
WFBFQ1RfRVEodmVjMVtpXSwgaSk7Ci0gICAgICAgIEVYUEVDVF9FUSh2ZWMyW2ldLCBpKTsKKyAg
ICAgICAgRVhQRUNUX0VRKGksIHZlYzFbaV0pOworICAgICAgICBFWFBFQ1RfRVEoaSwgdmVjMltp
XSk7CiAgICAgfQogICAgIHZlYzFbMl0gPSA0MjsKLSAgICBFWFBFQ1RfRVEodmVjMVsyXSwgNDJV
KTsKLSAgICBFWFBFQ1RfRVEodmVjMlsyXSwgMlUpOworICAgIEVYUEVDVF9FUSg0MlUsIHZlYzFb
Ml0pOworICAgIEVYUEVDVF9FUSgyVSwgdmVjMlsyXSk7CiB9CiAKIFRFU1QoV1RGX0ZpeGVkVmVj
dG9yLCBNb3ZlKQpAQCAtMTI1LDEwICsxMjUsMTAgQEAgVEVTVChXVEZfRml4ZWRWZWN0b3IsIE1v
dmUpCiAgICAgdmVjMVsyXSA9IDI7CiAKICAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVjMihX
VEZNb3ZlKHZlYzEpKTsKLSAgICBFWFBFQ1RfRVEodmVjMS5zaXplKCksIDBVKTsKLSAgICBFWFBF
Q1RfRVEodmVjMi5zaXplKCksIDNVKTsKKyAgICBFWFBFQ1RfRVEoMFUsIHZlYzEuc2l6ZSgpKTsK
KyAgICBFWFBFQ1RfRVEoM1UsIHZlYzIuc2l6ZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgdmVjMi5zaXplKCk7ICsraSkKLSAgICAgICAgRVhQRUNUX0VRKHZlYzJbaV0sIGkpOwor
ICAgICAgICBFWFBFQ1RfRVEoaSwgdmVjMltpXSk7CiB9CiAKIFRFU1QoV1RGX0ZpeGVkVmVjdG9y
LCBNb3ZlQXNzaWduKQpAQCAtMTQwLDIxICsxNDAsMjEgQEAgVEVTVChXVEZfRml4ZWRWZWN0b3Is
IE1vdmVBc3NpZ24pCiAKICAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVjMjsKICAgICB2ZWMy
ID0gV1RGTW92ZSh2ZWMxKTsKLSAgICBFWFBFQ1RfRVEodmVjMS5zaXplKCksIDBVKTsKLSAgICBF
WFBFQ1RfRVEodmVjMi5zaXplKCksIDNVKTsKKyAgICBFWFBFQ1RfRVEoMFUsIHZlYzEuc2l6ZSgp
KTsKKyAgICBFWFBFQ1RfRVEoM1UsIHZlYzIuc2l6ZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgdmVjMi5zaXplKCk7ICsraSkKLSAgICAgICAgRVhQRUNUX0VRKHZlYzJbaV0sIGkp
OworICAgICAgICBFWFBFQ1RfRVEoaSwgdmVjMltpXSk7CiB9CiAKIFRFU1QoV1RGX0ZpeGVkVmVj
dG9yLCBNb3ZlVmVjdG9yKQogewogICAgIGF1dG8gdmVjMSA9IFZlY3RvcjxNb3ZlT25seT46OmZy
b20oTW92ZU9ubHkoMCksIE1vdmVPbmx5KDEpLCBNb3ZlT25seSgyKSwgTW92ZU9ubHkoMykpOwot
ICAgIEVYUEVDVF9FUSh2ZWMxLnNpemUoKSwgNFUpOworICAgIEVYUEVDVF9FUSg0VSwgdmVjMS5z
aXplKCkpOwogICAgIEZpeGVkVmVjdG9yPE1vdmVPbmx5PiB2ZWMyKFdURk1vdmUodmVjMSkpOwot
ICAgIEVYUEVDVF9FUSh2ZWMxLnNpemUoKSwgMFUpOwotICAgIEVYUEVDVF9FUSh2ZWMyLnNpemUo
KSwgNFUpOworICAgIEVYUEVDVF9FUSgwVSwgdmVjMS5zaXplKCkpOworICAgIEVYUEVDVF9FUSg0
VSwgdmVjMi5zaXplKCkpOwogICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IHZl
YzIuc2l6ZSgpOyArK2luZGV4KQotICAgICAgICBFWFBFQ1RfRVEodmVjMltpbmRleF0udmFsdWUo
KSwgaW5kZXgpOworICAgICAgICBFWFBFQ1RfRVEoaW5kZXgsIHZlYzJbaW5kZXhdLnZhbHVlKCkp
OwogfQogCiBURVNUKFdURl9GaXhlZFZlY3RvciwgTW92ZUFzc2lnblZlY3RvcikKQEAgLTE2Miwx
MyArMTYyLDEzIEBAIFRFU1QoV1RGX0ZpeGVkVmVjdG9yLCBNb3ZlQXNzaWduVmVjdG9yKQogICAg
IEZpeGVkVmVjdG9yPE1vdmVPbmx5PiB2ZWMyOwogICAgIHsKICAgICAgICAgYXV0byB2ZWMxID0g
VmVjdG9yPE1vdmVPbmx5Pjo6ZnJvbShNb3ZlT25seSgwKSwgTW92ZU9ubHkoMSksIE1vdmVPbmx5
KDIpLCBNb3ZlT25seSgzKSk7Ci0gICAgICAgIEVYUEVDVF9FUSh2ZWMxLnNpemUoKSwgNFUpOwor
ICAgICAgICBFWFBFQ1RfRVEoNFUsIHZlYzEuc2l6ZSgpKTsKICAgICAgICAgdmVjMiA9IFdURk1v
dmUodmVjMSk7Ci0gICAgICAgIEVYUEVDVF9FUSh2ZWMxLnNpemUoKSwgMFUpOworICAgICAgICBF
WFBFQ1RfRVEoMFUsIHZlYzEuc2l6ZSgpKTsKICAgICB9Ci0gICAgRVhQRUNUX0VRKHZlYzIuc2l6
ZSgpLCA0VSk7CisgICAgRVhQRUNUX0VRKDRVLCB2ZWMyLnNpemUoKSk7CiAgICAgZm9yICh1bnNp
Z25lZCBpbmRleCA9IDA7IGluZGV4IDwgdmVjMi5zaXplKCk7ICsraW5kZXgpCi0gICAgICAgIEVY
UEVDVF9FUSh2ZWMyW2luZGV4XS52YWx1ZSgpLCBpbmRleCk7CisgICAgICAgIEVYUEVDVF9FUShp
bmRleCwgdmVjMltpbmRleF0udmFsdWUoKSk7CiB9CiAKIFRFU1QoV1RGX0ZpeGVkVmVjdG9yLCBT
d2FwKQpAQCAtMTgwLDEwICsxODAsMTAgQEAgVEVTVChXVEZfRml4ZWRWZWN0b3IsIFN3YXApCiAK
ICAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVjMjsKICAgICB2ZWMyLnN3YXAodmVjMSk7Ci0g
ICAgRVhQRUNUX0VRKHZlYzEuc2l6ZSgpLCAwVSk7Ci0gICAgRVhQRUNUX0VRKHZlYzIuc2l6ZSgp
LCAzVSk7CisgICAgRVhQRUNUX0VRKDBVLCB2ZWMxLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDNV
LCB2ZWMyLnNpemUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZlYzIuc2l6ZSgp
OyArK2kpCi0gICAgICAgIEVYUEVDVF9FUSh2ZWMyW2ldLCBpKTsKKyAgICAgICAgRVhQRUNUX0VR
KGksIHZlYzJbaV0pOwogfQogCiBURVNUKFdURl9GaXhlZFZlY3RvciwgSXRlcmF0b3JGb3IpCkBA
IC0xOTUsNyArMTk1LDcgQEAgVEVTVChXVEZfRml4ZWRWZWN0b3IsIEl0ZXJhdG9yRm9yKQogCiAg
ICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgIGZvciAoYXV0byBpdGVyID0gdmVjMS5iZWdpbigp
OyBpdGVyICE9IHZlYzEuZW5kKCk7ICsraXRlcikgewotICAgICAgICBFWFBFQ1RfRVEoKml0ZXIs
IGluZGV4KTsKKyAgICAgICAgRVhQRUNUX0VRKGluZGV4LCAqaXRlcik7CiAgICAgICAgICsraW5k
ZXg7CiAgICAgfQogfQpAQCAtMjEwLDcgKzIxMCw3IEBAIFRFU1QoV1RGX0ZpeGVkVmVjdG9yLCBS
ZXZlcnNlKQogICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICBmb3IgKGF1dG8gaXRlciA9IHZl
YzEucmJlZ2luKCk7IGl0ZXIgIT0gdmVjMS5yZW5kKCk7ICsraXRlcikgewogICAgICAgICArK2lu
ZGV4OwotICAgICAgICBFWFBFQ1RfRVEoKml0ZXIsIDNVIC0gaW5kZXgpOworICAgICAgICBFWFBF
Q1RfRVEoM1UgLSBpbmRleCwgKml0ZXIpOwogICAgIH0KIH0KIApAQCAtMjIwLDcgKzIyMCw3IEBA
IFRFU1QoV1RGX0ZpeGVkVmVjdG9yLCBGaWxsKQogICAgIHZlYzEuZmlsbCg0Mik7CiAKICAgICBm
b3IgKGF1dG8mIHZhbHVlIDogdmVjMSkKLSAgICAgICAgRVhQRUNUX0VRKHZhbHVlLCA0MlUpOwor
ICAgICAgICBFWFBFQ1RfRVEoNDJVLCB2YWx1ZSk7CiB9CiAKIHN0cnVjdCBEZXN0cnVjdG9yT2Jz
ZXJ2ZXIgewpAQCAtMjkzLDE0ICsyOTMsMTQgQEAgVEVTVChXVEZfRml4ZWRWZWN0b3IsIE1vdmVL
ZWVwc0RhdGEpCiAgICAgICAgIEZpeGVkVmVjdG9yPHVuc2lnbmVkPiB2ZWMxKDMpOwogICAgICAg
ICBhdXRvKiBkYXRhMSA9IHZlYzEuZGF0YSgpOwogICAgICAgICBGaXhlZFZlY3Rvcjx1bnNpZ25l
ZD4gdmVjMihXVEZNb3ZlKHZlYzEpKTsKLSAgICAgICAgRVhQRUNUX0VRKHZlYzIuZGF0YSgpLCBk
YXRhMSk7CisgICAgICAgIEVYUEVDVF9FUShkYXRhMSwgdmVjMi5kYXRhKCkpOwogICAgIH0KICAg
ICB7CiAgICAgICAgIEZpeGVkVmVjdG9yPHVuc2lnbmVkPiB2ZWMxKDMpOwogICAgICAgICBhdXRv
KiBkYXRhMSA9IHZlYzEuZGF0YSgpOwogICAgICAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVj
MjsKICAgICAgICAgdmVjMiA9IFdURk1vdmUodmVjMSk7Ci0gICAgICAgIEVYUEVDVF9FUSh2ZWMy
LmRhdGEoKSwgZGF0YTEpOworICAgICAgICBFWFBFQ1RfRVEoZGF0YTEsIHZlYzIuZGF0YSgpKTsK
ICAgICB9CiB9CiAKQEAgLTMxMSw4ICszMTEsOCBAQCBURVNUKFdURl9GaXhlZFZlY3RvciwgTW92
ZUtlZXBzRGF0YU5lc3RlZCkKICAgICAgICAgdmVjMS5hcHBlbmQoRml4ZWRWZWN0b3I8dW5zaWdu
ZWQ+KDMpKTsKICAgICAgICAgYXV0byogZGF0YTEgPSB2ZWMxWzBdLmRhdGEoKTsKICAgICAgICAg
Rml4ZWRWZWN0b3I8Rml4ZWRWZWN0b3I8dW5zaWduZWQ+PiB2ZWMyKFdURk1vdmUodmVjMSkpOwot
ICAgICAgICBFWFBFQ1RfRVEodmVjMi5zaXplKCksIDFVKTsKLSAgICAgICAgRVhQRUNUX0VRKHZl
YzJbMF0uZGF0YSgpLCBkYXRhMSk7CisgICAgICAgIEVYUEVDVF9FUSgxVSwgdmVjMi5zaXplKCkp
OworICAgICAgICBFWFBFQ1RfRVEoZGF0YTEsIHZlYzJbMF0uZGF0YSgpKTsKICAgICB9CiAgICAg
ewogICAgICAgICBWZWN0b3I8Rml4ZWRWZWN0b3I8dW5zaWduZWQ+PiB2ZWMxOwpAQCAtMzIwLDgg
KzMyMCwzOCBAQCBURVNUKFdURl9GaXhlZFZlY3RvciwgTW92ZUtlZXBzRGF0YU5lc3RlZCkKICAg
ICAgICAgYXV0byogZGF0YTEgPSB2ZWMxWzBdLmRhdGEoKTsKICAgICAgICAgRml4ZWRWZWN0b3I8
Rml4ZWRWZWN0b3I8dW5zaWduZWQ+PiB2ZWMyOwogICAgICAgICB2ZWMyID0gV1RGTW92ZSh2ZWMx
KTsKLSAgICAgICAgRVhQRUNUX0VRKHZlYzIuc2l6ZSgpLCAxVSk7Ci0gICAgICAgIEVYUEVDVF9F
USh2ZWMyWzBdLmRhdGEoKSwgZGF0YTEpOworICAgICAgICBFWFBFQ1RfRVEoMVUsIHZlYzIuc2l6
ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGRhdGExLCB2ZWMyWzBdLmRhdGEoKSk7CisgICAgfQor
fQorCitURVNUKFdURl9GaXhlZFZlY3RvciwgT2Zmc2V0KQoreworICAgIEVYUEVDVF9FUSgwLCBG
aXhlZFZlY3Rvcjx1bnNpZ25lZD46Om9mZnNldE9mU3RvcmFnZSgpKTsKKyAgICBFWFBFQ1RfRVEo
NCwgRml4ZWRWZWN0b3I8dW5zaWduZWQ+OjpTdG9yYWdlOjpvZmZzZXRPZkRhdGEoKSk7CisgICAg
RVhQRUNUX0VRKDAsIEZpeGVkVmVjdG9yPHZvaWQqPjo6b2Zmc2V0T2ZTdG9yYWdlKCkpOworICAg
IEVYUEVDVF9FUShzaXplb2Yodm9pZCopLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRml4ZWRWZWN0
b3I8dm9pZCo+OjpTdG9yYWdlOjpvZmZzZXRPZkRhdGEoKSkpOworfQorCitURVNUKFdURl9GaXhl
ZFZlY3RvciwgRXF1YWwpCit7CisgICAgeworICAgICAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4g
dmVjMSgxMCk7CisgICAgICAgIEZpeGVkVmVjdG9yPHVuc2lnbmVkPiB2ZWMyKDEwKTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDEwOyArK2kpIHsKKyAgICAgICAgICAgIHZlYzFb
aV0gPSBpOworICAgICAgICAgICAgdmVjMltpXSA9IGk7CisgICAgICAgIH0KKyAgICAgICAgRVhQ
RUNUX0VRKHZlYzIsIHZlYzEpOworICAgICAgICB2ZWMxWzBdID0gNDI7CisgICAgICAgIEVYUEVD
VF9ORSh2ZWMxLCB2ZWMyKTsKKyAgICB9CisgICAgeworICAgICAgICBGaXhlZFZlY3Rvcjx1bnNp
Z25lZD4gdmVjMTsKKyAgICAgICAgRml4ZWRWZWN0b3I8dW5zaWduZWQ+IHZlYzI7CisgICAgICAg
IEZpeGVkVmVjdG9yPHVuc2lnbmVkPiB2ZWMzKDApOworICAgICAgICBFWFBFQ1RfRVEodmVjMiwg
dmVjMSk7CisgICAgICAgIEVYUEVDVF9FUSh2ZWMzLCB2ZWMxKTsKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZWRGaXhlZFZlY3Rv
ci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZDb3VudGVkRml4ZWRWZWN0
b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjkyYTk0MGVlMDg5Y2NjMTYyZjgwMjNlYzBiMmYxOWNkMWNjODIz
YWQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZD
b3VudGVkRml4ZWRWZWN0b3IuY3BwCkBAIC0wLDAgKzEsMjc5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiTW92ZU9ubHkuaCIKKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZEZpeGVkVmVjdG9yLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKwor
VEVTVChXVEZfUmVmQ291bnRlZEZpeGVkVmVjdG9yLCBFbXB0eSkKK3sKKyAgICBhdXRvIHZlY3Rv
ciA9IFJlZkNvdW50ZWRGaXhlZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0ZSgwKTsKKyAgICBFWFBF
Q1RfVFJVRSh2ZWN0b3ItPmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX0VRKDBVLCB2ZWN0b3ItPnNp
emUoKSk7Cit9CisKK1RFU1QoV1RGX1JlZkNvdW50ZWRGaXhlZFZlY3RvciwgSXRlcmF0b3IpCit7
CisgICAgYXV0byBpbnRWZWN0b3IgPSBSZWZDb3VudGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+Ojpj
cmVhdGUoNCk7CisgICAgaW50VmVjdG9yLmdldCgpWzBdID0gMTA7CisgICAgaW50VmVjdG9yLmdl
dCgpWzFdID0gMTE7CisgICAgaW50VmVjdG9yLmdldCgpWzJdID0gMTI7CisgICAgaW50VmVjdG9y
LmdldCgpWzNdID0gMTM7CisKKyAgICBhdXRvIGl0ID0gaW50VmVjdG9yLT5iZWdpbigpOworICAg
IGF1dG8gZW5kID0gaW50VmVjdG9yLT5lbmQoKTsKKyAgICBFWFBFQ1RfVFJVRShlbmQgIT0gaXQp
OworCisgICAgRVhQRUNUX0VRKDEwVSwgKml0KTsKKyAgICArK2l0OworICAgIEVYUEVDVF9FUSgx
MVUsICppdCk7CisgICAgKytpdDsKKyAgICBFWFBFQ1RfRVEoMTJVLCAqaXQpOworICAgICsraXQ7
CisgICAgRVhQRUNUX0VRKDEzVSwgKml0KTsKKyAgICArK2l0OworCisgICAgRVhQRUNUX1RSVUUo
ZW5kID09IGl0KTsKK30KKworVEVTVChXVEZfUmVmQ291bnRlZEZpeGVkVmVjdG9yLCBPdmVybG9h
ZGVkT3BlcmF0b3JBbXBlcnNhbmQpCit7CisgICAgc3RydWN0IFRlc3QgeworICAgIHByaXZhdGU6
CisgICAgICAgIFRlc3QqIG9wZXJhdG9yJigpID0gZGVsZXRlOworICAgIH07CisKKyAgICBhdXRv
IHZlY3RvciA9IFJlZkNvdW50ZWRGaXhlZFZlY3RvcjxUZXN0Pjo6Y3JlYXRlKDEpOworICAgIHZl
Y3Rvci5nZXQoKVswXSA9IFRlc3QoKTsKK30KKworVEVTVChXVEZfUmVmQ291bnRlZEZpeGVkVmVj
dG9yLCBDb3B5KQoreworICAgIGF1dG8gdmVjMSA9IFJlZkNvdW50ZWRGaXhlZFZlY3Rvcjx1bnNp
Z25lZD46OmNyZWF0ZSgzKTsKKyAgICB2ZWMxLmdldCgpWzBdID0gMDsKKyAgICB2ZWMxLmdldCgp
WzFdID0gMTsKKyAgICB2ZWMxLmdldCgpWzJdID0gMjsKKworICAgIGF1dG8gdmVjMiA9IFJlZkNv
dW50ZWRGaXhlZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0ZSh2ZWMxLT5iZWdpbigpLCB2ZWMxLT5l
bmQoKSk7CisgICAgRVhQRUNUX0VRKDNVLCB2ZWMxLT5zaXplKCkpOworICAgIEVYUEVDVF9FUSgz
VSwgdmVjMi0+c2l6ZSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmVjMS0+c2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgRVhQRUNUX0VRKGksIHZlYzEuZ2V0KClbaV0pOworICAgICAg
ICBFWFBFQ1RfRVEoaSwgdmVjMi5nZXQoKVtpXSk7CisgICAgfQorICAgIHZlYzEuZ2V0KClbMl0g
PSA0MjsKKyAgICBFWFBFQ1RfRVEoNDJVLCB2ZWMxLmdldCgpWzJdKTsKKyAgICBFWFBFQ1RfRVEo
MlUsIHZlYzIuZ2V0KClbMl0pOworfQorCitURVNUKFdURl9SZWZDb3VudGVkRml4ZWRWZWN0b3Is
IENvcHlWZWN0b3IpCit7CisgICAgYXV0byB2ZWMxID0gVmVjdG9yPHVuc2lnbmVkPjo6ZnJvbSgw
LCAxLCAyLCAzKTsKKyAgICBFWFBFQ1RfRVEoNFUsIHZlYzEuc2l6ZSgpKTsKKyAgICBhdXRvIHZl
YzIgPSBSZWZDb3VudGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+OjpjcmVhdGVGcm9tVmVjdG9yKHZl
YzEpOworICAgIEVYUEVDVF9FUSg0VSwgdmVjMS5zaXplKCkpOworICAgIEVYUEVDVF9FUSg0VSwg
dmVjMi0+c2l6ZSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmVjMS5zaXplKCk7
ICsraSkgeworICAgICAgICBFWFBFQ1RfRVEoaSwgdmVjMVtpXSk7CisgICAgICAgIEVYUEVDVF9F
UShpLCB2ZWMyLmdldCgpW2ldKTsKKyAgICB9CisgICAgdmVjMVsyXSA9IDQyOworICAgIEVYUEVD
VF9FUSg0MlUsIHZlYzFbMl0pOworICAgIEVYUEVDVF9FUSgyVSwgdmVjMi5nZXQoKVsyXSk7Cit9
CisKK1RFU1QoV1RGX1JlZkNvdW50ZWRGaXhlZFZlY3RvciwgTW92ZVZlY3RvcikKK3sKKyAgICBh
dXRvIHZlYzEgPSBWZWN0b3I8TW92ZU9ubHk+Ojpmcm9tKE1vdmVPbmx5KDApLCBNb3ZlT25seSgx
KSwgTW92ZU9ubHkoMiksIE1vdmVPbmx5KDMpKTsKKyAgICBFWFBFQ1RfRVEoNFUsIHZlYzEuc2l6
ZSgpKTsKKyAgICBhdXRvIHZlYzIgPSBSZWZDb3VudGVkRml4ZWRWZWN0b3I8TW92ZU9ubHk+Ojpj
cmVhdGVGcm9tVmVjdG9yKFdURk1vdmUodmVjMSkpOworICAgIEVYUEVDVF9FUSgwVSwgdmVjMS5z
aXplKCkpOworICAgIEVYUEVDVF9FUSg0VSwgdmVjMi0+c2l6ZSgpKTsKKyAgICBmb3IgKHVuc2ln
bmVkIGluZGV4ID0gMDsgaW5kZXggPCB2ZWMyLT5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIEVY
UEVDVF9FUShpbmRleCwgdmVjMi5nZXQoKVtpbmRleF0udmFsdWUoKSk7Cit9CisKK1RFU1QoV1RG
X1JlZkNvdW50ZWRGaXhlZFZlY3RvciwgSXRlcmF0b3JGb3IpCit7CisgICAgYXV0byB2ZWMxID0g
UmVmQ291bnRlZEZpeGVkVmVjdG9yPHVuc2lnbmVkPjo6Y3JlYXRlKDMpOworICAgIHZlYzEuZ2V0
KClbMF0gPSAwOworICAgIHZlYzEuZ2V0KClbMV0gPSAxOworICAgIHZlYzEuZ2V0KClbMl0gPSAy
OworCisgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgIGZvciAoYXV0byBpdGVyID0gdmVjMS0+
YmVnaW4oKTsgaXRlciAhPSB2ZWMxLT5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgIEVYUEVDVF9F
UShpbmRleCwgKml0ZXIpOworICAgICAgICArK2luZGV4OworICAgIH0KK30KKworVEVTVChXVEZf
UmVmQ291bnRlZEZpeGVkVmVjdG9yLCBSZXZlcnNlKQoreworICAgIGF1dG8gdmVjMSA9IFJlZkNv
dW50ZWRGaXhlZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0ZSgzKTsKKyAgICB2ZWMxLmdldCgpWzBd
ID0gMDsKKyAgICB2ZWMxLmdldCgpWzFdID0gMTsKKyAgICB2ZWMxLmdldCgpWzJdID0gMjsKKwor
ICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICBmb3IgKGF1dG8gaXRlciA9IHZlYzEtPnJiZWdp
bigpOyBpdGVyICE9IHZlYzEtPnJlbmQoKTsgKytpdGVyKSB7CisgICAgICAgICsraW5kZXg7Cisg
ICAgICAgIEVYUEVDVF9FUSgzVSAtIGluZGV4LCAqaXRlcik7CisgICAgfQorfQorCitURVNUKFdU
Rl9SZWZDb3VudGVkRml4ZWRWZWN0b3IsIEZpbGwpCit7CisgICAgYXV0byB2ZWMxID0gUmVmQ291
bnRlZEZpeGVkVmVjdG9yPHVuc2lnbmVkPjo6Y3JlYXRlKDMpOworICAgIHZlYzEtPmZpbGwoNDIp
OworCisgICAgZm9yIChhdXRvJiB2YWx1ZSA6IHZlYzEuZ2V0KCkpCisgICAgICAgIEVYUEVDVF9F
USh2YWx1ZSwgNDJVKTsKK30KKworc3RydWN0IERlc3RydWN0b3JPYnNlcnZlciB7CisgICAgRGVz
dHJ1Y3Rvck9ic2VydmVyKCkgPSBkZWZhdWx0OworCisgICAgRGVzdHJ1Y3Rvck9ic2VydmVyKGJv
b2wqIGRlc3RydWN0ZWQpCisgICAgICAgIDogZGVzdHJ1Y3RlZChkZXN0cnVjdGVkKQorICAgIHsK
KyAgICB9CisKKyAgICB+RGVzdHJ1Y3Rvck9ic2VydmVyKCkKKyAgICB7CisgICAgICAgIGlmIChk
ZXN0cnVjdGVkKQorICAgICAgICAgICAgKmRlc3RydWN0ZWQgPSB0cnVlOworICAgIH0KKworICAg
IERlc3RydWN0b3JPYnNlcnZlcihEZXN0cnVjdG9yT2JzZXJ2ZXImJiBvdGhlcikKKyAgICAgICAg
OiBkZXN0cnVjdGVkKG90aGVyLmRlc3RydWN0ZWQpCisgICAgeworICAgICAgICBvdGhlci5kZXN0
cnVjdGVkID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBEZXN0cnVjdG9yT2JzZXJ2ZXImIG9wZXJh
dG9yPShEZXN0cnVjdG9yT2JzZXJ2ZXImJiBvdGhlcikKKyAgICB7CisgICAgICAgIGRlc3RydWN0
ZWQgPSBvdGhlci5kZXN0cnVjdGVkOworICAgICAgICBvdGhlci5kZXN0cnVjdGVkID0gbnVsbHB0
cjsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIGJvb2wqIGRlc3RydWN0ZWQg
eyBudWxscHRyIH07Cit9OworCitURVNUKFdURl9SZWZDb3VudGVkRml4ZWRWZWN0b3IsIERlc3Ry
dWN0b3IpCit7CisgICAgVmVjdG9yPGJvb2w+IGZsYWdzKDMsIGZhbHNlKTsKKyAgICB7CisgICAg
ICAgIGF1dG8gdmVjdG9yID0gUmVmQ291bnRlZEZpeGVkVmVjdG9yPERlc3RydWN0b3JPYnNlcnZl
cj46OmNyZWF0ZShmbGFncy5zaXplKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgZmxhZ3Muc2l6ZSgpOyArK2kpCisgICAgICAgICAgICB2ZWN0b3IuZ2V0KClbaV0gPSBEZXN0
cnVjdG9yT2JzZXJ2ZXIoJmZsYWdzW2ldKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGZsYWdzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGZsYWdzW2ld
KTsKKyAgICB9CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZsYWdzLnNpemUoKTsgKytp
KQorICAgICAgICBFWFBFQ1RfVFJVRShmbGFnc1tpXSk7Cit9CisKK1RFU1QoV1RGX1JlZkNvdW50
ZWRGaXhlZFZlY3RvciwgRGVzdHJ1Y3RvckFmdGVyTW92ZSkKK3sKKyAgICBWZWN0b3I8Ym9vbD4g
ZmxhZ3MoMywgZmFsc2UpOworICAgIHsKKyAgICAgICAgUmVmUHRyPFJlZkNvdW50ZWRGaXhlZFZl
Y3RvcjxEZXN0cnVjdG9yT2JzZXJ2ZXI+PiBvdXRlclZlY3RvcjsKKyAgICAgICAgeworICAgICAg
ICAgICAgUmVmUHRyPFJlZkNvdW50ZWRGaXhlZFZlY3RvcjxEZXN0cnVjdG9yT2JzZXJ2ZXI+PiBv
dXRlclZlY3RvcjI7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYXV0byB2ZWN0b3Ig
PSBSZWZDb3VudGVkRml4ZWRWZWN0b3I8RGVzdHJ1Y3Rvck9ic2VydmVyPjo6Y3JlYXRlKGZsYWdz
LnNpemUoKSk7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZsYWdz
LnNpemUoKTsgKytpKQorICAgICAgICAgICAgICAgICAgICB2ZWN0b3IuZ2V0KClbaV0gPSBEZXN0
cnVjdG9yT2JzZXJ2ZXIoJmZsYWdzW2ldKTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgZmxhZ3Muc2l6ZSgpOyArK2kpCisgICAgICAgICAgICAgICAgICAgIEVYUEVD
VF9GQUxTRShmbGFnc1tpXSk7CisgICAgICAgICAgICAgICAgb3V0ZXJWZWN0b3IgPSB2ZWN0b3Iu
Y29weVJlZigpOworICAgICAgICAgICAgICAgIG91dGVyVmVjdG9yMiA9IHZlY3Rvci5jb3B5UmVm
KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
ZmxhZ3Muc2l6ZSgpOyArK2kpCisgICAgICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGZsYWdzW2ld
KTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShvdXRlclZlY3Rvci5nZXQoKSwgb3V0ZXJWZWN0b3Iy
LmdldCgpKTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmxh
Z3Muc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoZmxhZ3NbaV0pOworICAg
IH0KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmxhZ3Muc2l6ZSgpOyArK2kpCisgICAg
ICAgIEVYUEVDVF9UUlVFKGZsYWdzW2ldKTsKK30KKworVEVTVChXVEZfUmVmQ291bnRlZEZpeGVk
VmVjdG9yLCBCYXNpYykKK3sKKyAgICBzdGQ6OmFycmF5PHVuc2lnbmVkLCA0PiBhcnJheSB7IHsK
KyAgICAgICAgMCwgMSwgMiwgMworICAgIH0gfTsKKyAgICB7CisgICAgICAgIGF1dG8gdmVjdG9y
ID0gUmVmQ291bnRlZEZpeGVkVmVjdG9yPHVuc2lnbmVkPjo6Y3JlYXRlKGFycmF5LmJlZ2luKCks
IGFycmF5LmVuZCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDRVLCB2ZWN0b3ItPnNpemUoKSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgwVSwgdmVjdG9yLT5hdCgwKSk7CisgICAgICAgIEVYUEVDVF9FUSgx
VSwgdmVjdG9yLT5hdCgxKSk7CisgICAgICAgIEVYUEVDVF9FUSgyVSwgdmVjdG9yLT5hdCgyKSk7
CisgICAgICAgIEVYUEVDVF9FUSgzVSwgdmVjdG9yLT5hdCgzKSk7CisgICAgfQorfQorCitURVNU
KFdURl9SZWZDb3VudGVkRml4ZWRWZWN0b3IsIENsb25lKQoreworICAgIHN0ZDo6YXJyYXk8dW5z
aWduZWQsIDQ+IGFycmF5IHsgeworICAgICAgICAwLCAxLCAyLCAzCisgICAgfSB9OworICAgIHsK
KyAgICAgICAgYXV0byB2ZWN0b3IgPSBSZWZDb3VudGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+Ojpj
cmVhdGUoYXJyYXkuYmVnaW4oKSwgYXJyYXkuZW5kKCkpOworICAgICAgICBFWFBFQ1RfRVEoNFUs
IHZlY3Rvci0+c2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDBVLCB2ZWN0b3ItPmF0KDApKTsK
KyAgICAgICAgRVhQRUNUX0VRKDFVLCB2ZWN0b3ItPmF0KDEpKTsKKyAgICAgICAgRVhQRUNUX0VR
KDJVLCB2ZWN0b3ItPmF0KDIpKTsKKyAgICAgICAgRVhQRUNUX0VRKDNVLCB2ZWN0b3ItPmF0KDMp
KTsKKworICAgICAgICBhdXRvIGNsb25lZCA9IHZlY3Rvci0+Y2xvbmUoKTsKKyAgICAgICAgRVhQ
RUNUX0VRKDRVLCBjbG9uZWQtPnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUSgwVSwgY2xvbmVk
LT5hdCgwKSk7CisgICAgICAgIEVYUEVDVF9FUSgxVSwgY2xvbmVkLT5hdCgxKSk7CisgICAgICAg
IEVYUEVDVF9FUSgyVSwgY2xvbmVkLT5hdCgyKSk7CisgICAgICAgIEVYUEVDVF9FUSgzVSwgY2xv
bmVkLT5hdCgzKSk7CisgICAgfQorfQorCitURVNUKFdURl9SZWZDb3VudGVkRml4ZWRWZWN0b3Is
IEVxdWFsKQoreworICAgIGF1dG8gdmVjMSA9IFJlZkNvdW50ZWRGaXhlZFZlY3Rvcjx1bnNpZ25l
ZD46OmNyZWF0ZSgxMCk7CisgICAgYXV0byB2ZWMyID0gUmVmQ291bnRlZEZpeGVkVmVjdG9yPHVu
c2lnbmVkPjo6Y3JlYXRlKDEwKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMTA7ICsr
aSkgeworICAgICAgICB2ZWMxLmdldCgpW2ldID0gaTsKKyAgICAgICAgdmVjMi5nZXQoKVtpXSA9
IGk7CisgICAgfQorICAgIEVYUEVDVF9FUSh2ZWMxLmdldCgpLCB2ZWMyLmdldCgpKTsKKyAgICB2
ZWMxLmdldCgpWzBdID0gNDI7CisgICAgRVhQRUNUX05FKHZlYzEuZ2V0KCksIHZlYzIuZ2V0KCkp
OworfQorCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446922</attachid>
            <date>2021-12-11 22:03:14 -0800</date>
            <delta_ts>2021-12-11 23:47:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234201-20211211220313.patch</filename>
            <type>text/plain</type>
            <size>83240</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MTc3YTdmMmEwODU3YTJiMjNhM2EzZTg4OTIzNTEyZDg4MGE2MDljLi5iZTA5ZDgzNjM5MDc4N2Vk
MmUyZWFmM2Y3YjkyMmRjNDU5MmZjNmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAyMS0xMi0xMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtXVEZdIEludHJvZHVjZSBUcmFpbGluZ0FycmF5CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQyMDEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5o
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJhc2VsaW5lSklUQ29uc3RhbnRQb29sKToKKyAg
ICAgICAgKiBieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHA6CisgICAgICAg
IChKU0M6Ok9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjptZXJnZWRXaXRoIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6OmR1bXBJbkNvbnRleHQgY29u
c3QpOgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6aXNWYWxpZEFu
ZFdhdGNoYWJsZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXQuaDoKKyAgICAgICAgKEpTQzo6T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6Omlu
dmFsaWQpOgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6OmlzVmFsaWQgY29u
c3QpOgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6c2l6ZSBjb25z
dCk6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjpiZWdpbiBjb25z
dCk6CisgICAgICAgIChKU0M6Ok9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjplbmQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6T2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNv
bmRpdGlvblNldDo6cmVsZWFzZVJhd1BvaW50ZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6YWRvcHRSYXdQb2ludGVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6OmZyb21SYXdQb2ludGVyKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6OkRhdGE6
OkRhdGEpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcpOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6bG9hZENvbnN0YW50KToKKyAgICAgICAgKiBs
bGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOgorICAgICAgICAqIGxsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKwogMjAy
MS0xMi0xMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtK
U0NdIFdhc20gY2F0Y2ggdGh1bmsgc2hvdWxkIGJlIEpJVCBjb2RlIHRvIHVzZSBFeGNlcHRpb25I
YW5kbGVyUHRyVGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCmluZGV4IDA2Mjc1NzZkZmVhZGIyOTcyMzhhZjVlNTM0ZGVmYzc3ZDAxNTM4
YzIuLjMwNzNlMjUzNmVhZDNjN2RiYmUxODFmNTlkZTQwNWE4NGU5NzI0YTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNzkgQEAKKzIwMjEtMTItMTEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
KworICAgICAgICBbV1RGXSBJbnRyb2R1Y2UgVHJhaWxpbmdBcnJheQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MjAxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIFRy
YWlsaW5nQXJyYXk8RGVyaXZlZCwgVD4sIHdoaWNoIGFsbG93cyB1cyB0byBpbXBsZW1lbnQgY2xh
c3MKKyAgICAgICAgd2l0aCB0cmFpbGluZyBhcnJheSBlYXNpbHkuIEJ5IHVzaW5nIHRoaXMsIHdl
IGltcGxlbWVudCBFbWJlZGRlZEZpeGVkVmVjdG9yIGFuZCBSZWZDb3VudGVkRml4ZWRWZWN0b3Iu
CisgICAgICAgIFBsdXMsIHdlIHJlcGxhY2UgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbiBvZiBG
aXhlZFZlY3RvciBmcm9tIFJlZkNvdW50ZWRBcnJheSB0byBFbWJlZGRlZEZpeGVkVmVjdG9yCisg
ICAgICAgIHNpbmNlIHJlZi1jb3VudGluZyBpcyBub3QgbmVjZXNzYXJ5LiBUaGlzIGlzIGdyZWF0
IGZvciBzd2FwcGluZzogd2hpbGUgUmVmQ291bnRlZEFycmF5IHdpbGwgZGVjcmVhc2UgcmVmCisg
ICAgICAgIGFuZCB0b3VjaGluZyBtZW1vcnkgd2hlbiBkZXN0cnlvaW5nLCBFbWJlZGRlZEZpeGVk
VmVjdG9yIGRvZXMgbm90LCBzbyB3ZSBjYW4ga2VlcCBtZW1vcnkgdW50b3VjaGVkIGlmCisgICAg
ICAgIEVtYmVkZGVkRml4ZWRWZWN0b3IncyBUIGlzIFBPRCB3aGVuIGRlc3Ryb3lpbmcuCisKKyAg
ICAgICAgSW4gYSBzdWJzZXF1ZW50IHBhdGNoLCB3ZSB3aWxsIHJlbW92ZSBSZWZDb3VudGVkQXJy
YXkgYW5kIHVzZSBSZWZDb3VudGVkRml4ZWRWZWN0b3Igc2luY2UgUmVmQ291bnRlZEZpeGVkVmVj
dG9yCisgICAgICAgIGlzIGZvbGxvd2luZyBub3JtYWwgUmVmIC8gUmVmUHRyIHByb3RvY29sLCBz
byBlYXN5IHRvIHVuZGVyc3RhbmQgdGhlIHNlbWFudGljcy4KKworICAgICAgICAqIFdURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiB3dGYvRW1iZWRkZWRGaXhlZFZlY3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiB3dGYv
Rml4ZWRWZWN0b3IuaDoKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OkZpeGVkVmVjdG9yKToK
KyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6Om9wZXJhdG9yPSk6CisgICAgICAgIChXVEY6OkZp
eGVkVmVjdG9yOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OmlzRW1w
dHkgY29uc3QpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6Ynl0ZVNpemUgY29uc3QpOgor
ICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6ZGF0YSk6CisgICAgICAgIChXVEY6OkZpeGVkVmVj
dG9yOjpiZWdpbik6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjplbmQpOgorICAgICAgICAo
V1RGOjpGaXhlZFZlY3Rvcjo6cmJlZ2luKToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OnJl
bmQpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6cmJlZ2luIGNvbnN0KToKKyAgICAgICAg
KFdURjo6Rml4ZWRWZWN0b3I6OnJlbmQgY29uc3QpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rv
cjo6YXQpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6YXQgY29uc3QpOgorICAgICAgICAo
V1RGOjpGaXhlZFZlY3Rvcjo6b3BlcmF0b3JbXSk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9y
OjpvcGVyYXRvcltdIGNvbnN0KToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OmZpbGwpOgor
ICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgIChX
VEY6OkZpeGVkVmVjdG9yOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKFdURjo6Rml4ZWRW
ZWN0b3I6OnN3YXApOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6Z2V0U3RvcmFnZSk6Cisg
ICAgICAgICogd3RmL1JlZkNvdW50ZWRGaXhlZFZlY3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiB3
dGYvVHJhaWxpbmdBcnJheS5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6
VHJhaWxpbmdBcnJheSk6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6On5UcmFpbGluZ0Fy
cmF5KToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6YWxsb2NhdGlvblNpemUpOgorICAg
ICAgICAoV1RGOjpUcmFpbGluZ0FycmF5OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdURjo6VHJh
aWxpbmdBcnJheTo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6
OmJ5dGVTaXplIGNvbnN0KToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6ZGF0YSk6Cisg
ICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6OmRhdGEgY29uc3QpOgorICAgICAgICAoV1RGOjpU
cmFpbGluZ0FycmF5OjpiZWdpbik6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6OmVuZCk6
CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6OmJlZ2luIGNvbnN0KToKKyAgICAgICAgKFdU
Rjo6VHJhaWxpbmdBcnJheTo6ZW5kIGNvbnN0KToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJh
eTo6Y2JlZ2luIGNvbnN0KToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6Y2VuZCBjb25z
dCk6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6OnJiZWdpbik6CisgICAgICAgIChXVEY6
OlRyYWlsaW5nQXJyYXk6OnJlbmQpOgorICAgICAgICAoV1RGOjpUcmFpbGluZ0FycmF5OjpyYmVn
aW4gY29uc3QpOgorICAgICAgICAoV1RGOjpUcmFpbGluZ0FycmF5OjpyZW5kIGNvbnN0KToKKyAg
ICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6Y3JiZWdpbiBjb25zdCk6CisgICAgICAgIChXVEY6
OlRyYWlsaW5nQXJyYXk6OmNyZW5kIGNvbnN0KToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJh
eTo6YXQpOgorICAgICAgICAoV1RGOjpUcmFpbGluZ0FycmF5OjphdCBjb25zdCk6CisgICAgICAg
IChXVEY6OlRyYWlsaW5nQXJyYXk6Om9wZXJhdG9yW10pOgorICAgICAgICAoV1RGOjpUcmFpbGlu
Z0FycmF5OjpvcGVyYXRvcltdIGNvbnN0KToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6
Zmlyc3QpOgorICAgICAgICAoV1RGOjpUcmFpbGluZ0FycmF5OjpmaXJzdCBjb25zdCk6CisgICAg
ICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6Omxhc3QpOgorICAgICAgICAoV1RGOjpUcmFpbGluZ0Fy
cmF5OjpsYXN0IGNvbnN0KToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6ZmlsbCk6Cisg
ICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6Om9mZnNldE9mU2l6ZSk6CisgICAgICAgIChXVEY6
OlRyYWlsaW5nQXJyYXk6Om9mZnNldE9mRGF0YSk6CisKIDIwMjEtMTItMTAgIEVyaWMgQ2FybHNv
biAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBZGQgbmV3IHNj
cmVlbiBhbmQgd2luZG93IGNhcHR1cmUgYmFja2VuZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGYyNjZiYjQwYWQwOWJiN2YyYzE4YTdmZDUwZWY5N2Y4
MzQxMTkzOWEuLjk2YTE0Zjk2M2YyODhmYTQ5NDhjMzkyY2NhMGY4MWY4NWQxMzVhNmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTU1Nyw3ICs1NTcs
NyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lkKiBiYXNlbGlu
ZUpJVENvbnN0YW50UG9vbCgpCiAgICAgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2ppdERh
dGEgJiYgaml0VHlwZSgpID09IEpJVFR5cGU6OkJhc2VsaW5lSklUKTsKLSAgICAgICAgcmV0dXJu
IG1faml0RGF0YS0+bV9qaXRDb25zdGFudFBvb2wuZGF0YSgpOworICAgICAgICByZXR1cm4gbV9q
aXREYXRhLT5tX2ppdENvbnN0YW50UG9vbC5nZXRTdG9yYWdlKCk7CiAgICAgfQogI2VuZGlmCiAg
ICAgc2l6ZV90IG51bWJlck9mVW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzKCkgY29uc3QgeyByZXR1
cm4gbV91bmxpbmtlZENvZGUtPm51bWJlck9mVW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzKCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0
UHJvcGVydHlDb25kaXRpb25TZXQuY3BwCmluZGV4IGQwNDQwNWQ5ZDQyZmQxZjQ4YzRiODlkNWYz
NjgyNjM2MWFmZGRmYmQuLjFjNmY1ODU4Y2FlOWVmNTQ4OWUxOGRmZGNhOWM5YmM1MDEyNGQ2NjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09i
amVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIE9iamVjdFBy
b3BlcnR5Q29uZGl0aW9uU2V0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjptZXJnZWRXaXRo
KAogICAgIFZlY3RvcjxPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbj4gcmVzdWx0OwogICAgIAogICAg
IGlmICghaXNFbXB0eSgpKQotICAgICAgICByZXN1bHQuYXBwZW5kKG1fZGF0YS0+bV92ZWN0b3Iu
YmVnaW4oKSwgbV9kYXRhLT5tX3ZlY3Rvci5zaXplKCkpOworICAgICAgICByZXN1bHQuYXBwZW5k
KG1fZGF0YS0+YmVnaW4oKSwgbV9kYXRhLT5zaXplKCkpOwogICAgIAogICAgIGZvciAoY29uc3Qg
T2JqZWN0UHJvcGVydHlDb25kaXRpb24mIG5ld0NvbmRpdGlvbiA6IG90aGVyKSB7CiAgICAgICAg
IGJvb2wgZm91bmRNYXRjaCA9IGZhbHNlOwpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgT2JqZWN0
UHJvcGVydHlDb25kaXRpb25TZXQ6OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVt
cENvbnRleHQqIGNvCiAgICAgCiAgICAgb3V0LnByaW50KCJbIik7CiAgICAgaWYgKG1fZGF0YSkK
LSAgICAgICAgb3V0LnByaW50KGxpc3REdW1wSW5Db250ZXh0KG1fZGF0YS0+bV92ZWN0b3IsIGNv
bnRleHQpKTsKKyAgICAgICAgb3V0LnByaW50KGxpc3REdW1wSW5Db250ZXh0KCptX2RhdGEsIGNv
bnRleHQpKTsKICAgICBvdXQucHJpbnQoIl0iKTsKIH0KIApAQCAtMTg5LDcgKzE4OSw3IEBAIGJv
b2wgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6OmlzVmFsaWRBbmRXYXRjaGFibGUoKSBjb25z
dAogICAgIGlmICghaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBmb3Ig
KGF1dG8mIGNvbmRpdGlvbiA6IG1fZGF0YS0+bV92ZWN0b3IpIHsKKyAgICBmb3IgKGF1dG8mIGNv
bmRpdGlvbiA6ICptX2RhdGEpIHsKICAgICAgICAgaWYgKCFjb25kaXRpb24uaXNXYXRjaGFibGUo
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5o
CmluZGV4IGJlNzNmZGI1ZTVhN2E5ZmYxYjc1MjcyMDI1MjkzY2I2MmE1ODQ0ZmUuLjI0ZGU1NmZk
N2E5MzVhZmM0YzI5M2M0OWQxZTRmODFlZWNmNTY4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5o
CkBAIC0yNyw4ICsyNyw4IEBACiAKICNpbmNsdWRlICJPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbi5o
IgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0jaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkRml4
ZWRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpA
QCAtNDMsMTIgKzQzLDE1IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldCB7CiBwdWJsaWM6Ci0gICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQo
KSB7IH0KKyAgICB1c2luZyBDb25kaXRpb25zID0gVGhyZWFkU2FmZVJlZkNvdW50ZWRGaXhlZFZl
Y3RvcjxPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbj47CisKKyAgICBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldCgpID0gZGVmYXVsdDsKICAgICAKICAgICBzdGF0aWMgT2JqZWN0UHJvcGVydHlDb25k
aXRpb25TZXQgaW52YWxpZCgpCiAgICAgewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
blNldCByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdC5tX2RhdGEgPSBhZG9wdFJlZihuZXcgRGF0YSgp
KTsKKyAgICAgICAgcmVzdWx0Lm1fZGF0YSA9IENvbmRpdGlvbnM6OmNyZWF0ZSgwKTsKKyAgICAg
ICAgQVNTRVJUKCFyZXN1bHQuaXNWYWxpZCgpKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAgICAgCkBAIC01OCwzNyArNjEsMzcgQEAgY2xhc3MgT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXQgewogICAgICAgICAgICAgcmV0dXJuIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0KCk7
CiAgICAgICAgIAogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCByZXN1bHQ7Ci0g
ICAgICAgIHJlc3VsdC5tX2RhdGEgPSBhZG9wdFJlZihuZXcgRGF0YSgpKTsKLSAgICAgICAgcmVz
dWx0Lm1fZGF0YS0+bV92ZWN0b3IgPSBGaXhlZFZlY3RvcjxPYmplY3RQcm9wZXJ0eUNvbmRpdGlv
bj4oV1RGTW92ZSh2ZWN0b3IpKTsKKyAgICAgICAgcmVzdWx0Lm1fZGF0YSA9IENvbmRpdGlvbnM6
OmNyZWF0ZUZyb21WZWN0b3IoV1RGTW92ZSh2ZWN0b3IpKTsKKyAgICAgICAgQVNTRVJUKHJlc3Vs
dC5pc1ZhbGlkKCkpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKICAgICBi
b29sIGlzVmFsaWQoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuICFtX2RhdGEgfHwgIW1f
ZGF0YS0+bV92ZWN0b3IuaXNFbXB0eSgpOworICAgICAgICByZXR1cm4gIW1fZGF0YSB8fCAhbV9k
YXRhLT5pc0VtcHR5KCk7CiAgICAgfQogCiAgICAgYm9vbCBpc1ZhbGlkQW5kV2F0Y2hhYmxlKCkg
Y29uc3Q7CiAKLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YSA/IG1fZGF0
YS0+bV92ZWN0b3Iuc2l6ZSgpIDogMDsgfQorICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhID8gbV9kYXRhLT5zaXplKCkgOiAwOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiAhbV9kYXRhOwogICAgIH0KLSAgICAKLSAgICB0eXBl
ZGVmIGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uKiBpdGVyYXRvcjsKLSAgICAKLSAgICBp
dGVyYXRvciBiZWdpbigpIGNvbnN0CisKKyAgICB1c2luZyBjb25zdF9pdGVyYXRvciA9IENvbmRp
dGlvbnM6OmNvbnN0X2l0ZXJhdG9yOworCisgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25z
dAogICAgIHsKICAgICAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICAgICAgcmV0dXJuIG1fZGF0YS0+bV92ZWN0b3IuYmVnaW4oKTsKKyAgICAgICAgcmV0
dXJuIG1fZGF0YS0+Y2JlZ2luKCk7CiAgICAgfQotICAgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0Cisg
ICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghbV9kYXRh
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJldHVybiBtX2RhdGEtPm1f
dmVjdG9yLmVuZCgpOworICAgICAgICByZXR1cm4gbV9kYXRhLT5jZW5kKCk7CiAgICAgfQogCiAg
ICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CkBAIC0xNTEsNDUgKzE1NCwxNSBAQCBjbGFzcyBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldCB7CiAgICAgCiAgICAgdm9pZCBkdW1wSW5Db250ZXh0KFBy
aW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25zdDsKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mKSBjb25zdDsKLSAgICAKLSAgICAvLyBIZWxwZXJzIGZvciB1c2luZyB0aGlzIGluIGEgdW5p
b24uCi0gICAgdm9pZCogcmVsZWFzZVJhd1BvaW50ZXIoKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PHZvaWQqPihtX2RhdGEubGVha1JlZigpKTsKLSAgICB9Ci0gICAgc3RhdGlj
IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGFkb3B0UmF3UG9pbnRlcih2b2lkKiByYXdQb2lu
dGVyKQotICAgIHsKLSAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgcmVzdWx0Owot
ICAgICAgICByZXN1bHQubV9kYXRhID0gYWRvcHRSZWYoc3RhdGljX2Nhc3Q8RGF0YSo+KHJhd1Bv
aW50ZXIpKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgc3RhdGljIE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uU2V0IGZyb21SYXdQb2ludGVyKHZvaWQqIHJhd1BvaW50ZXIpCi0g
ICAgewotICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCByZXN1bHQ7Ci0gICAgICAg
IHJlc3VsdC5tX2RhdGEgPSBzdGF0aWNfY2FzdDxEYXRhKj4ocmF3UG9pbnRlcik7Ci0gICAgICAg
IHJldHVybiByZXN1bHQ7Ci0gICAgfQogCi0gICAgLy8gRklYTUU6IEV2ZXJ5dGhpbmcgYmVsb3cg
aGVyZSBzaG91bGQgYmUgcHJpdmF0ZSwgYnV0IGNhbm5vdCBiZSBiZWNhdXNlIG9mIGEgYnVnIGlu
IFZTLgotICAgIAogICAgIC8vIEludGVybmFsbHksIHRoaXMgcmVwcmVzZW50cyBJbnZhbGlkIHVz
aW5nIGEgcG9pbnRlciB0byBhIERhdGEgdGhhdCBoYXMgYW4gZW1wdHkgdmVjdG9yLgogICAgIAog
ICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGJlIG1hZGUgbW9yZSBjb21wYWN0IGJ5IGhhdmluZyBp
dCBpbnRlcm5hbGx5IHVzZSBhIHZlY3RvciB0aGF0IGp1c3QgaGFzCiAgICAgLy8gdGhlIG5vbi11
aWQgcG9ydGlvbiBvZiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiwgYW5kIHRoZW4gcmVxdWlyaW5n
IHRoYXQgdGhlIGNhbGxlcnMgb2YgYWxsCiAgICAgLy8gb2YgdGhlIEFQSXMgc3VwcGx5IHRoZSB1
aWQuCi0gICAgCi0gICAgY2xhc3MgRGF0YSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxE
YXRhPiB7Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERhdGEpOwotICAgICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICAgICAgCi0gICAgcHVibGljOgotICAgICAgICBEYXRh
KCkgeyB9Ci0gICAgICAgIAotICAgICAgICBGaXhlZFZlY3RvcjxPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvbj4gbV92ZWN0b3I7Ci0gICAgfTsKLSAgICAKKwogcHJpdmF0ZToKLSAgICBSZWZQdHI8RGF0
YT4gbV9kYXRhOworICAgIFJlZlB0cjxDb25kaXRpb25zPiBtX2RhdGE7CiB9OwogCiBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvbiBnZW5lcmF0ZUNvbmRpdGlvbkZvclNlbGZFcXVpdmFsZW5jZSgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBmNTdhNmUxMzQ1MDU4ZmRiZTg0MjM4ZjIyNzM3
NjU3ZDA2Mzk5YTBiLi5jNTE1YzM5NTQyMWMzYWYyZDgyOTBhM2FhZWM2MzUzMjkxZDQxZjg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC03OTksNyArNzk5LDcgQEAgdm9pZCBKSVQ6
OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZpbmFsaXppbmcoSklUQ29tcGlsYXRpb25FZmZvcnQgZWZm
b3J0KQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBpbnQg
b2Zmc2V0ID0gQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoYXJndW1lbnQp
ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKTsKICAgICAgICAgICAgICAgICBs
b2FkVmFsdWUoQWRkcmVzcyhjYWxsRnJhbWVSZWdpc3Rlciwgb2Zmc2V0KSwganNSZWdUMTApOwot
ICAgICAgICAgICAgICAgIHN0b3JlVmFsdWUoanNSZWdUMTAsIEFkZHJlc3MocmVnVDIsIGFyZ3Vt
ZW50ICogc2l6ZW9mKFZhbHVlUHJvZmlsZSkgKyBWYWx1ZVByb2ZpbGU6Om9mZnNldE9mRmlyc3RC
dWNrZXQoKSkpOworICAgICAgICAgICAgICAgIHN0b3JlVmFsdWUoanNSZWdUMTAsIEFkZHJlc3Mo
cmVnVDIsIEZpeGVkVmVjdG9yPFZhbHVlUHJvZmlsZT46OlN0b3JhZ2U6Om9mZnNldE9mRGF0YSgp
ICsgYXJndW1lbnQgKiBzaXplb2YoVmFsdWVQcm9maWxlKSArIFZhbHVlUHJvZmlsZTo6b2Zmc2V0
T2ZGaXJzdEJ1Y2tldCgpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCmluZGV4IDE3ZjQ2ZjdhMmQ4OTQ0MzhjM2I5
YTBkZTY1YzZmMzFiODZjNjQ0MWMuLjU4NjQxMmJjNDdlZTZiYjc0MGVmMTUyMDg0ZWYyY2EyMWE2
YjE1OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC01MDUsNyAr
NTA1LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6bWF0ZXJpYWxpemVQb2ludGVySW50b01l
dGFkYXRhKGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSwKIAogQUxXQVlTX0lOTElORSB2b2lkIEpJ
VDo6bG9hZENvbnN0YW50KEpJVENvbnN0YW50UG9vbDo6Q29uc3RhbnQgY29uc3RhbnRJbmRleCwg
R1BSUmVnIHJlc3VsdCkKIHsKLSAgICBsb2FkUHRyKEFkZHJlc3Moc19jb25zdGFudHNHUFIsIHN0
YXRpY19jYXN0PHVpbnRwdHJfdD4oY29uc3RhbnRJbmRleCkgKiBzaXplb2Yodm9pZCopKSwgcmVz
dWx0KTsKKyAgICBsb2FkUHRyKEFkZHJlc3Moc19jb25zdGFudHNHUFIsIEZpeGVkVmVjdG9yPHZv
aWQqPjo6U3RvcmFnZTo6b2Zmc2V0T2ZEYXRhKCkgKyBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGNv
bnN0YW50SW5kZXgpICogc2l6ZW9mKHZvaWQqKSksIHJlc3VsdCk7CiB9CiAKIEFMV0FZU19JTkxJ
TkUgdm9pZCBKSVQ6OmxvYWRHbG9iYWxPYmplY3QoR1BSUmVnIHJlc3VsdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5k
ZXggYjJjYWExODU0MTMwZmY4YjkzMTgwNzZkMjdkZmViZGQyMTMzODQ0MS4uMzk3YjA1ZDg2YTA3
MTJhN2EzOGNhMDIxZDIzMmNiMmQ5ZGI1MWI5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTg3LDggKzg3LDEz
IEBAIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvciB7CiAgICAgLy8gVGhlc2UgdHlwZXMgYXJl
IHVzZWZ1bCBzaW5jZSB3ZSBjYW4ndCB1c2UgJzwuLi4+JyBzeW50YXggaW4gTExJbnQgb2Zmc2V0
cyBleHRyYWN0aW9uLiBlLmcuIFZlY3RvcjxpbnQ+OjptX2RhdGEKICAgICB1c2luZyBWZWN0b3Ig
PSBXVEY6OlZlY3RvcjxpbnQ+OwogICAgIHVzaW5nIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwg
PSBKU0M6OkpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8PjsKLSAgICB1c2luZyBGaXhlZFZlY3Rv
ciA9IFdURjo6Rml4ZWRWZWN0b3I8aW50PjsKLSAgICB1c2luZyBSZWZDb3VudGVkQXJyYXkgPSBX
VEY6OlJlZkNvdW50ZWRBcnJheTxpbnQ+OworICAgIHVzaW5nIFZhbHVlUHJvZmlsZUZpeGVkVmVj
dG9yID0gV1RGOjpGaXhlZFZlY3RvcjxWYWx1ZVByb2ZpbGU+OworICAgIHVzaW5nIEJpbmFyeUFy
aXRoUHJvZmlsZUZpeGVkVmVjdG9yID0gRml4ZWRWZWN0b3I8QmluYXJ5QXJpdGhQcm9maWxlPjsK
KyAgICB1c2luZyBVbmFyeUFyaXRoUHJvZmlsZUZpeGVkVmVjdG9yID0gRml4ZWRWZWN0b3I8VW5h
cnlBcml0aFByb2ZpbGU+OworICAgIHVzaW5nIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlRml4ZWRW
ZWN0b3IgPSBGaXhlZFZlY3RvcjxVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZT47CisgICAgdXNpbmcg
VW5saW5rZWRTdHJpbmdKdW1wVGFibGVGaXhlZFZlY3RvciA9IEZpeGVkVmVjdG9yPFVubGlua2Vk
U3RyaW5nSnVtcFRhYmxlPjsKKyAgICB1c2luZyBJbnQzMkZpeGVkVmVjdG9yID0gRml4ZWRWZWN0
b3I8aW50MzJfdD47CisgICAgdXNpbmcgVm9pZFBvaW50ZXJGaXhlZFZlY3RvciA9IEZpeGVkVmVj
dG9yPHZvaWQqPjsKIAogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBpbnQ2NF90KiBkdW1teSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCmluZGV4IGQyMTM5NmU5OGZhMGJjNDg5Yjg5Nzk2ODc3YzYyNGZlOTZjMmUwNmIuLjEy
MTBkYzFjMDlhNGY1NDU0NjIxOGZkNjZhZWZlYjA4OGU0YTAwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTYyMyw4
ICs2MjMsNiBAQCBjb25zdCBCbGFja1RocmVzaG9sZCA9IGNvbnN0ZXhwciBibGFja1RocmVzaG9s
ZAogY29uc3QgVmVjdG9yQnVmZmVyT2Zmc2V0ID0gVmVjdG9yOjptX2J1ZmZlcgogY29uc3QgVmVj
dG9yU2l6ZU9mZnNldCA9IFZlY3Rvcjo6bV9zaXplCiAKLWNvbnN0IFJlZkNvdW50ZWRBcnJheVN0
b3JhZ2VOb25OdWxsU2l6ZU9mZnNldCA9IC0oY29uc3RleHByIChSZWZDb3VudGVkQXJyYXk6Okhl
YWRlcjo6c2l6ZSgpKSkgKyBSZWZDb3VudGVkQXJyYXk6OkhlYWRlcjo6bGVuZ3RoCi0KICMgU29t
ZSBjb21tb24gdXRpbGl0aWVzLgogbWFjcm8gY3Jhc2goKQogICAgIGlmIENfTE9PUCBvciBDX0xP
T1BfV0lOCkBAIC0xNjc3LDEwICsxNjc1LDExIEBAIG1hY3JvIGZ1bmN0aW9uSW5pdGlhbGl6YXRp
b24ocHJvZmlsZUFyZ1NraXApCiAgICAgYWRkcCAtcHJvZmlsZUFyZ1NraXAsIHQwCiAgICAgYXNz
ZXJ0KG1hY3JvIChvaykgYnBndGVxIHQwLCAwLCBvayBlbmQpCiAgICAgYnRweiB0MCwgLmFyZ3Vt
ZW50UHJvZmlsZURvbmUKLSAgICBsb2FkcCBDb2RlQmxvY2s6Om1fYXJndW1lbnRWYWx1ZVByb2Zp
bGVzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3Qx
XSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzICsgVmFs
dWVQcm9maWxlRml4ZWRWZWN0b3I6Om1fc3RvcmFnZVt0MV0sIHQzCiAgICAgYnRweiB0MywgLmFy
Z3VtZW50UHJvZmlsZURvbmUgIyBXaGVuIHdlIGNhbid0IEpJVCwgd2UgZG9uJ3QgYWxsb2NhdGUg
YW55IGFyZ3VtZW50IHZhbHVlIHByb2ZpbGVzLgogICAgIG11bHAgc2l6ZW9mIFZhbHVlUHJvZmls
ZSwgdDAsIHQyICMgQWFhYWFoaGhoISBOZWVkIHN0cmVuZ3RoIHJlZHVjdGlvbiEKICAgICBsc2hp
ZnRwIDMsIHQwICMgb2Zmc2V0IG9mIGxhc3QgSlNWYWx1ZSBhcmd1bWVudHMgb24gdGhlIHN0YWNr
LgorICAgIGFkZHAgKGNvbnN0ZXhwciAoVmFsdWVQcm9maWxlRml4ZWRWZWN0b3I6OlN0b3JhZ2U6
Om9mZnNldE9mRGF0YSgpKSksIHQzCiAgICAgYWRkcCB0MiwgdDMgIyBwb2ludGVyIHRvIGVuZCBv
ZiBWYWx1ZVByb2ZpbGUgYXJyYXkgaW4gdGhlIHZhbHVlIHByb2ZpbGUgYXJyYXkuCiAuYXJndW1l
bnRQcm9maWxlTG9vcDoKICAgICBpZiBKU1ZBTFVFNjQKQEAgLTI2MTAsNyArMjYwOSw3IEBAIGlm
IEpJVAogICAgICAgICAjIEJhc2VsaW5lIHVzZXMgTExJbnQncyBQQiByZWdpc3RlciBmb3IgaXRz
IEpJVCBjb25zdGFudCBwb29sLgogICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgUEIKICAg
ICAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2ppdERhdGFbUEJdLCBQQgotICAgICAgICBsb2FkcCBD
b2RlQmxvY2s6OkpJVERhdGE6Om1faml0Q29uc3RhbnRQb29sW1BCXSwgUEIKKyAgICAgICAgbG9h
ZHAgQ29kZUJsb2NrOjpKSVREYXRhOjptX2ppdENvbnN0YW50UG9vbCArIFZvaWRQb2ludGVyRml4
ZWRWZWN0b3I6Om1fc3RvcmFnZVtQQl0sIFBCCiAgICAgZW5kCiAKICAgICBtYWNybyBzZXR1cFJl
dHVyblRvQmFzZWxpbmVBZnRlckNoZWNrcG9pbnRFeGl0SWZOZWVkZWQoKQpAQCAtMjcyNSwxNiAr
MjcyNCwxNiBAQCBtYWNybyB1cGRhdGVVbmFyeUFyaXRoUHJvZmlsZShzaXplLCBvcGNvZGVTdHJ1
Y3QsIHR5cGUsIHNjcmF0Y2gxLCBzY3JhdGNoMikKICAgICBnZXR1KHNpemUsIG9wY29kZVN0cnVj
dCwgbV9wcm9maWxlSW5kZXgsIHNjcmF0Y2gxKQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBz
Y3JhdGNoMgogICAgIGxvYWRwIENvZGVCbG9jazo6bV91bmxpbmtlZENvZGVbc2NyYXRjaDJdLCBz
Y3JhdGNoMgotICAgIGxvYWRwIFVubGlua2VkQ29kZUJsb2NrOjptX3VuYXJ5QXJpdGhQcm9maWxl
cyArIEZpeGVkVmVjdG9yOjptX3N0b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVtzY3Jh
dGNoMl0sIHNjcmF0Y2gyCi0gICAgb3JoIHR5cGUsIFVuYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNb
c2NyYXRjaDIsIHNjcmF0Y2gxLCAyXQorICAgIGxvYWRwIFVubGlua2VkQ29kZUJsb2NrOjptX3Vu
YXJ5QXJpdGhQcm9maWxlcyArIFVuYXJ5QXJpdGhQcm9maWxlRml4ZWRWZWN0b3I6Om1fc3RvcmFn
ZVtzY3JhdGNoMl0sIHNjcmF0Y2gyCisgICAgb3JoIHR5cGUsIChjb25zdGV4cHIgKFVuYXJ5QXJp
dGhQcm9maWxlRml4ZWRWZWN0b3I6OlN0b3JhZ2U6Om9mZnNldE9mRGF0YSgpKSkgKyBVbmFyeUFy
aXRoUHJvZmlsZTo6bV9iaXRzW3NjcmF0Y2gyLCBzY3JhdGNoMSwgMl0KIGVuZAogCiBtYWNybyB1
cGRhdGVCaW5hcnlBcml0aFByb2ZpbGUoc2l6ZSwgb3Bjb2RlU3RydWN0LCB0eXBlLCBzY3JhdGNo
MSwgc2NyYXRjaDIpCiAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZUluZGV4
LCBzY3JhdGNoMSkKICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgc2NyYXRjaDIKICAgICBsb2Fk
cCBDb2RlQmxvY2s6Om1fdW5saW5rZWRDb2RlW3NjcmF0Y2gyXSwgc2NyYXRjaDIKLSAgICBsb2Fk
cCBVbmxpbmtlZENvZGVCbG9jazo6bV9iaW5hcnlBcml0aFByb2ZpbGVzICsgRml4ZWRWZWN0b3I6
Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3NjcmF0Y2gyXSwgc2NyYXRjaDIK
LSAgICBvcmggdHlwZSwgQmluYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNbc2NyYXRjaDIsIHNjcmF0
Y2gxLCAyXQorICAgIGxvYWRwIFVubGlua2VkQ29kZUJsb2NrOjptX2JpbmFyeUFyaXRoUHJvZmls
ZXMgKyBCaW5hcnlBcml0aFByb2ZpbGVGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlW3NjcmF0Y2gyXSwg
c2NyYXRjaDIKKyAgICBvcmggdHlwZSwgKGNvbnN0ZXhwciAoQmluYXJ5QXJpdGhQcm9maWxlRml4
ZWRWZWN0b3I6OlN0b3JhZ2U6Om9mZnNldE9mRGF0YSgpKSkgKyBCaW5hcnlBcml0aFByb2ZpbGU6
Om1fYml0c1tzY3JhdGNoMiwgc2NyYXRjaDEsIDJdCiBlbmQKIAogLy8gRklYTUU6IFdlIHNob3Vs
ZCBub3QgbmVlZCB0aGUgWDg2XzY0X1dJTiBjb25kaXRpb24gaGVyZSwgc2luY2UgV0VCQVNTRU1C
TFkgc2hvdWxkIGFscmVhZHkgYmUgZmFsc2Ugb24gV2luZG93cwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRl
eCBjZjFlYTIxNDI0MmI0YmY0ZWE1MTViOGZhYzQ1NTE2ZGUwN2JmZjg3Li42MDU1MDFhZTA5MjQz
NDgxMzgwNTdhZGMxZmE1NDQyYTc4MmRiYzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMjA5OSwx
NCArMjA5OSwxNSBAQCBsbGludE9wV2l0aEp1bXAob3Bfc3dpdGNoX2ltbSwgT3BTd2l0Y2hJbW0s
IG1hY3JvIChzaXplLCBnZXQsIGp1bXAsIGRpc3BhdGNoKQogICAgIGxvYWRwIENvZGVCbG9jazo6
bV91bmxpbmtlZENvZGVbdDJdLCB0MgogICAgIGxvYWRwIFVubGlua2VkQ29kZUJsb2NrOjptX3Jh
cmVEYXRhW3QyXSwgdDIKICAgICBtdWxpIHNpemVvZiBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSwg
dDMKLSAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6UmFyZURhdGE6Om1fdW5saW5rZWRTd2l0
Y2hKdW1wVGFibGVzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6
bV9kYXRhW3QyXSwgdDIKKyAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6UmFyZURhdGE6Om1f
dW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzICsgVW5saW5rZWRTaW1wbGVKdW1wVGFibGVGaXhlZFZl
Y3Rvcjo6bV9zdG9yYWdlW3QyXSwgdDIKKyAgICBhZGRwIChjb25zdGV4cHIgKFVubGlua2VkU2lt
cGxlSnVtcFRhYmxlRml4ZWRWZWN0b3I6OlN0b3JhZ2U6Om9mZnNldE9mRGF0YSgpKSksIHQyCiAg
ICAgYWRkcCB0MywgdDIKICAgICBiaW5lcSB0MSwgSW50MzJUYWcsIC5vcFN3aXRjaEltbU5vdElu
dAogICAgIHN1YmkgVW5saW5rZWRTaW1wbGVKdW1wVGFibGU6Om1fbWluW3QyXSwgdDAKLSAgICBs
b2FkcCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZTo6bV9icmFuY2hPZmZzZXRzICsgRml4ZWRWZWN0
b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3QyXSwgdDIKKyAgICBsb2Fk
cCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZTo6bV9icmFuY2hPZmZzZXRzICsgSW50MzJGaXhlZFZl
Y3Rvcjo6bV9zdG9yYWdlW3QyXSwgdDIKICAgICBidHB6IHQyLCAub3BTd2l0Y2hJbW1GYWxsVGhy
b3VnaAotICAgIGJpYWVxIHQwLCBSZWZDb3VudGVkQXJyYXlTdG9yYWdlTm9uTnVsbFNpemVPZmZz
ZXRbdDJdLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAotICAgIGxvYWRpIFt0MiwgdDAsIDRdLCB0
MQorICAgIGJpYWVxIHQwLCBJbnQzMkZpeGVkVmVjdG9yOjpTdG9yYWdlOjptX3NpemVbdDJdLCAu
b3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAorICAgIGxvYWRpIChjb25zdGV4cHIgKEludDMyRml4ZWRW
ZWN0b3I6OlN0b3JhZ2U6Om9mZnNldE9mRGF0YSgpKSlbdDIsIHQwLCA0XSwgdDEKICAgICBidGl6
IHQxLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAogICAgIGRpc3BhdGNoSW5kaXJlY3QodDEpCiAK
QEAgLTIxMjksNyArMjEzMCw4IEBAIGxsaW50T3BXaXRoSnVtcChvcF9zd2l0Y2hfY2hhciwgT3BT
d2l0Y2hDaGFyLCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKICAgICBsb2FkcCBD
b2RlQmxvY2s6Om1fdW5saW5rZWRDb2RlW3QyXSwgdDIKICAgICBsb2FkcCBVbmxpbmtlZENvZGVC
bG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCiAgICAgbXVsaSBzaXplb2YgVW5saW5rZWRTaW1wbGVK
dW1wVGFibGUsIHQzCi0gICAgbG9hZHAgVW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhOjptX3Vu
bGlua2VkU3dpdGNoSnVtcFRhYmxlcyArIEZpeGVkVmVjdG9yOjptX3N0b3JhZ2UgKyBSZWZDb3Vu
dGVkQXJyYXk6Om1fZGF0YVt0Ml0sIHQyCisgICAgbG9hZHAgVW5saW5rZWRDb2RlQmxvY2s6OlJh
cmVEYXRhOjptX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlcyArIFVubGlua2VkU2ltcGxlSnVtcFRh
YmxlRml4ZWRWZWN0b3I6Om1fc3RvcmFnZVt0Ml0sIHQyCisgICAgYWRkcCAoY29uc3RleHByIChV
bmxpbmtlZFNpbXBsZUp1bXBUYWJsZUZpeGVkVmVjdG9yOjpTdG9yYWdlOjpvZmZzZXRPZkRhdGEo
KSkpLCB0MgogICAgIGFkZHAgdDMsIHQyCiAgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFN3aXRj
aENoYXJGYWxsVGhyb3VnaAogICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3QwXSwgU3RyaW5nVHlw
ZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCkBAIC0yMTQ0LDEwICsyMTQ2LDEwIEBAIGxsaW50
T3BXaXRoSnVtcChvcF9zd2l0Y2hfY2hhciwgT3BTd2l0Y2hDaGFyLCBtYWNybyAoc2l6ZSwgZ2V0
LCBqdW1wLCBkaXNwYXRjaCkKICAgICBsb2FkYiBbdDBdLCB0MAogLm9wU3dpdGNoQ2hhclJlYWR5
OgogICAgIHN1YmkgVW5saW5rZWRTaW1wbGVKdW1wVGFibGU6Om1fbWluW3QyXSwgdDAKLSAgICBs
b2FkcCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZTo6bV9icmFuY2hPZmZzZXRzICsgRml4ZWRWZWN0
b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3QyXSwgdDIKKyAgICBsb2Fk
cCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZTo6bV9icmFuY2hPZmZzZXRzICsgSW50MzJGaXhlZFZl
Y3Rvcjo6bV9zdG9yYWdlW3QyXSwgdDIKICAgICBidHB6IHQyLCAub3BTd2l0Y2hDaGFyRmFsbFRo
cm91Z2gKLSAgICBiaWFlcSB0MCwgUmVmQ291bnRlZEFycmF5U3RvcmFnZU5vbk51bGxTaXplT2Zm
c2V0W3QyXSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCi0gICAgbG9hZGkgW3QyLCB0MCwgNF0s
IHQxCisgICAgYmlhZXEgdDAsIEludDMyRml4ZWRWZWN0b3I6OlN0b3JhZ2U6Om1fc2l6ZVt0Ml0s
IC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRpIChjb25zdGV4cHIgKEludDMyRml4
ZWRWZWN0b3I6OlN0b3JhZ2U6Om9mZnNldE9mRGF0YSgpKSlbdDIsIHQwLCA0XSwgdDEKICAgICBi
dGl6IHQxLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKICAgICBkaXNwYXRjaEluZGlyZWN0KHQx
KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtCmluZGV4IGEyM2RlNjBlMGVkODg0NzZlNTUxOGMxNWVhMDM5NDYxMDRjYzkx
N2UuLjcxZWNhMTBhNzY2MDBjMzkxOGYzNjM0YjRlYWNlZjcwOGEzYTk0ZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
CkBAIC0yMjkyLDE0ICsyMjkyLDE1IEBAIGxsaW50T3BXaXRoSnVtcChvcF9zd2l0Y2hfaW1tLCBP
cFN3aXRjaEltbSwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCiAgICAgbG9hZHAg
Q29kZUJsb2NrOjptX3VubGlua2VkQ29kZVt0Ml0sIHQyCiAgICAgbG9hZHAgVW5saW5rZWRDb2Rl
QmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0MgogICAgIG11bGkgc2l6ZW9mIFVubGlua2VkU2ltcGxl
SnVtcFRhYmxlLCB0MwotICAgIGxvYWRwIFVubGlua2VkQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV91
bmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMgKyBGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlICsgUmVmQ291
bnRlZEFycmF5OjptX2RhdGFbdDJdLCB0MgorICAgIGxvYWRwIFVubGlua2VkQ29kZUJsb2NrOjpS
YXJlRGF0YTo6bV91bmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMgKyBVbmxpbmtlZFNpbXBsZUp1bXBU
YWJsZUZpeGVkVmVjdG9yOjptX3N0b3JhZ2VbdDJdLCB0MgorICAgIGFkZHAgKGNvbnN0ZXhwciAo
VW5saW5rZWRTaW1wbGVKdW1wVGFibGVGaXhlZFZlY3Rvcjo6U3RvcmFnZTo6b2Zmc2V0T2ZEYXRh
KCkpKSwgdDIKICAgICBhZGRwIHQzLCB0MgogICAgIGJxYiB0MSwgbnVtYmVyVGFnLCAub3BTd2l0
Y2hJbW1Ob3RJbnQKICAgICBzdWJpIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlOjptX21pblt0Ml0s
IHQxCi0gICAgbG9hZHAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGU6Om1fYnJhbmNoT2Zmc2V0cyAr
IEZpeGVkVmVjdG9yOjptX3N0b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0Ml0sIHQy
CisgICAgbG9hZHAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGU6Om1fYnJhbmNoT2Zmc2V0cyArIElu
dDMyRml4ZWRWZWN0b3I6Om1fc3RvcmFnZVt0Ml0sIHQyCiAgICAgYnRweiB0MiwgLm9wU3dpdGNo
SW1tRmFsbFRocm91Z2gKLSAgICBiaWFlcSB0MSwgUmVmQ291bnRlZEFycmF5U3RvcmFnZU5vbk51
bGxTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKLSAgICBsb2FkaXMgW3Qy
LCB0MSwgNF0sIHQxCisgICAgYmlhZXEgdDEsIEludDMyRml4ZWRWZWN0b3I6OlN0b3JhZ2U6Om1f
c2l6ZVt0Ml0sIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCisgICAgbG9hZGlzIChjb25zdGV4cHIg
KEludDMyRml4ZWRWZWN0b3I6OlN0b3JhZ2U6Om9mZnNldE9mRGF0YSgpKSlbdDIsIHQxLCA0XSwg
dDEKICAgICBidGl6IHQxLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAogICAgIGRpc3BhdGNoSW5k
aXJlY3QodDEpCiAKQEAgLTIzMjIsNyArMjMyMyw4IEBAIGxsaW50T3BXaXRoSnVtcChvcF9zd2l0
Y2hfY2hhciwgT3BTd2l0Y2hDaGFyLCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkK
ICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fdW5saW5rZWRDb2RlW3QyXSwgdDIKICAgICBsb2FkcCBV
bmxpbmtlZENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCiAgICAgbXVsaSBzaXplb2YgVW5s
aW5rZWRTaW1wbGVKdW1wVGFibGUsIHQzCi0gICAgbG9hZHAgVW5saW5rZWRDb2RlQmxvY2s6OlJh
cmVEYXRhOjptX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlcyArIEZpeGVkVmVjdG9yOjptX3N0b3Jh
Z2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0Ml0sIHQyCisgICAgbG9hZHAgVW5saW5rZWRD
b2RlQmxvY2s6OlJhcmVEYXRhOjptX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlcyArIFVubGlua2Vk
U2ltcGxlSnVtcFRhYmxlRml4ZWRWZWN0b3I6Om1fc3RvcmFnZVt0Ml0sIHQyCisgICAgYWRkcCAo
Y29uc3RleHByIChVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZUZpeGVkVmVjdG9yOjpTdG9yYWdlOjpv
ZmZzZXRPZkRhdGEoKSkpLCB0MgogICAgIGFkZHAgdDMsIHQyCiAgICAgYnRxbnogdDEsIG5vdENl
bGxNYXNrLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKICAgICBiYm5lcSBKU0NlbGw6Om1fdHlw
ZVt0MV0sIFN0cmluZ1R5cGUsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaApAQCAtMjMzNywxMCAr
MjMzOSwxMCBAQCBsbGludE9wV2l0aEp1bXAob3Bfc3dpdGNoX2NoYXIsIE9wU3dpdGNoQ2hhciwg
bWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCiAgICAgbG9hZGIgW3QxXSwgdDAKIC5v
cFN3aXRjaENoYXJSZWFkeToKICAgICBzdWJpIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlOjptX21p
blt0Ml0sIHQwCi0gICAgbG9hZHAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGU6Om1fYnJhbmNoT2Zm
c2V0cyArIEZpeGVkVmVjdG9yOjptX3N0b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0
Ml0sIHQyCisgICAgbG9hZHAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGU6Om1fYnJhbmNoT2Zmc2V0
cyArIEludDMyRml4ZWRWZWN0b3I6Om1fc3RvcmFnZVt0Ml0sIHQyCiAgICAgYnRweiB0MiwgLm9w
U3dpdGNoQ2hhckZhbGxUaHJvdWdoCi0gICAgYmlhZXEgdDAsIFJlZkNvdW50ZWRBcnJheVN0b3Jh
Z2VOb25OdWxsU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAotICAgIGxv
YWRpcyBbdDIsIHQwLCA0XSwgdDEKKyAgICBiaWFlcSB0MCwgSW50MzJGaXhlZFZlY3Rvcjo6U3Rv
cmFnZTo6bV9zaXplW3QyXSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZGlzIChj
b25zdGV4cHIgKEludDMyRml4ZWRWZWN0b3I6OlN0b3JhZ2U6Om9mZnNldE9mRGF0YSgpKSlbdDIs
IHQwLCA0XSwgdDEKICAgICBidGl6IHQxLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKICAgICBk
aXNwYXRjaEluZGlyZWN0KHQxKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA3YzhkMzU0ZWQ2NTNiOWFkNWRlYWZhMTRiODllYjBiNjExN2FkOWE0Li40OTM3
M2U2ZjE3YzE3NGJlYjBhNjI3YTBkOTc3MTQ4OWRiZTM3MTFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc1OCw2ICs3NTgsOCBAQAogCQlFMzM5QzE2MzI0
NEI0RTg3MDAzNTlEQTkgLyogRGF0YVJlZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEYXRhUmVmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzM0Q1Rjg3MUZC
RUQ2NjcwMEJGNjI1RSAvKiBSZWN1cnNhYmxlTGFtYmRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlY3Vyc2FibGVMYW1iZGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTM0Q0QwRDAyMjgxMEEwMjAwMjBEMjk5IC8qIFBhY2tlZC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQYWNrZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM1MzhENEMyNzYyMjA4
ODAwNzVEQTUwIC8qIEVtYmVkZGVkRml4ZWRWZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRW1iZWRk
ZWRGaXhlZFZlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzUzOEQ0RDI3
NjIyMDg4MDA3NURBNTAgLyogVHJhaWxpbmdBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFpbGlu
Z0FycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNjBDNzY0MjEyN0I4NUIw
MEM5MEYwRSAvKiBVbmFsaWduZWRBY2Nlc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVW5hbGlnbmVkQWNjZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
NjBDNzY1MjEyN0I4NUMwMEM5MEYwRSAvKiBVbmV4cGVjdGVkLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFVuZXhwZWN0ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTM2ODk1Q0IyM0E0NDVDRDAwOERENEM4IC8qIFBhY2tlZFJlZi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQYWNrZWRSZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc4MSw2ICs3ODMs
NyBAQAogCQlFM0UwRjA0RjI2MTk3MTU3MDA0NjQwRkMgLyogRml4ZWRWZWN0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRml4ZWRWZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNF
MTU4MjUxRUFEQTUzQzAwNEEwNzlEIC8qIFN5c3RlbUZyZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU3lzdGVtRnJlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFM0U2NEYwQjIyODEzNDI4MDAxRTU1QjQgLyogTm9ubW92YWJsZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBOb25tb3ZhYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRTgxNjJGMjc2
NDc5OTMwMEJBQTQ1QiAvKiBSZWZDb3VudGVkRml4ZWRWZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVmQ291bnRlZEZpeGVkVmVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0
MTlGMkU2MjNBQjlFMjMwMEIyNjEyOSAvKiBWZWN0b3JIYXNoLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFZlY3Rvckhhc2guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTQzMUNDNEEyMTE4N0FEQjAwMEM4QTA3IC8qIERpc3BhdGNoU1BJLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BhdGNoU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUU0QTBBRDM3MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya1F1ZXVlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNzEsNiArMTA3NCw3IEBACiAJCQkJQThBNDcyODAxNTFB
ODI1QTAwNDEyM0ZGIC8qIERvdWJseUxpbmtlZExpc3QuaCAqLywKIAkJCQlBOEE0NzI5NzE1MUE4
MjVBMDA0MTIzRkYgLyogZHRvYS5jcHAgKi8sCiAJCQkJQThBNDcyOTgxNTFBODI1QTAwNDEyM0ZG
IC8qIGR0b2EuaCAqLywKKwkJCQlFMzUzOEQ0QzI3NjIyMDg4MDA3NURBNTAgLyogRW1iZWRkZWRG
aXhlZFZlY3Rvci5oICovLAogCQkJCTUzMzhFQkE0MjNBQjA0RDEwMDM4MjY2MiAvKiBFbnVtQ2xh
c3NPcGVyYXRvck92ZXJsb2Fkcy5oICovLAogCQkJCTFBRUE4OEUxMUQ2QkJDRjQwMEU1QUQ2NCAv
KiBFbnVtVHJhaXRzLmggKi8sCiAJCQkJQUQ3QzQzNEExREQyQTRBNzAwMjY4ODhCIC8qIEV4cGVj
dGVkLmggKi8sCkBAIC0xMjY3LDYgKzEyNzEsNyBAQAogCQkJCUE4QTQ3MkZGMTUxQTgyNUIwMDQx
MjNGRiAvKiBSZWZDb3VudGVkLmggKi8sCiAJCQkJMEZBNkYzOTAyMENDNjFFQjAwQTAzRENEIC8q
IFJlZkNvdW50ZWRBcnJheS5jcHAgKi8sCiAJCQkJQThBNDczMDAxNTFBODI1QjAwNDEyM0ZGIC8q
IFJlZkNvdW50ZWRBcnJheS5oICovLAorCQkJCUUzRTgxNjJGMjc2NDc5OTMwMEJBQTQ1QiAvKiBS
ZWZDb3VudGVkRml4ZWRWZWN0b3IuaCAqLywKIAkJCQlBOEE0NzMwMTE1MUE4MjVCMDA0MTIzRkYg
LyogUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcCAqLywKIAkJCQlBOEE0NzMwMjE1MUE4MjVCMDA0
MTIzRkYgLyogUmVmQ291bnRlZExlYWtDb3VudGVyLmggKi8sCiAJCQkJODZGNDZGNUYxQTI4NDBF
RTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIuaCAqLywKQEAgLTEzNTcsNiArMTM2Miw3IEBACiAJCQkJ
MEY3MDc1RjMxRkJGNTM3QTAwNDg5QUYwIC8qIFRpbWluZ1Njb3BlLmggKi8sCiAJCQkJNTUzMDcx
QzkxQzQwNDI3MjAwMzg0ODk4IC8qIFRpbnlMUlVDYWNoZS5oICovLAogCQkJCTBGRUQ2N0I1MUIy
MkQ0RDgwMDY2Q0UxNSAvKiBUaW55UHRyU2V0LmggKi8sCisJCQkJRTM1MzhENEQyNzYyMjA4ODAw
NzVEQTUwIC8qIFRyYWlsaW5nQXJyYXkuaCAqLywKIAkJCQk1MjFDQzZCMzI0QTI3N0MyMDA0Mzc3
RDYgLyogVHJhbnNsYXRlZFByb2Nlc3MuY3BwICovLAogCQkJCTJEMUYyRjQ2MjQ5OEY3MzMwMEM2
M0E4MyAvKiBUcmFuc2xhdGVkUHJvY2Vzcy5oICovLAogCQkJCTE0OUVGMTYyMTZCQkZFMEQwMDBB
NDMzMSAvKiBUcmlTdGF0ZS5oICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCBkZTFkYmY2NzMz
YTU4N2Y5YWU5MjViN2VlM2JhYmZjODVmMWFiNDc5Li5lMjBhMGIzMzI5NmY5ZmIyZGE4ZjExNGMy
YjgxM2Y0YzZiZTMzNTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtNjIsNiArNjIsNyBAQCBz
ZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgRGlzYWxsb3dDVHlwZS5oCiAgICAgRG9taW5hdG9y
cy5oCiAgICAgRG91Ymx5TGlua2VkTGlzdC5oCisgICAgRW1iZWRkZWRGaXhlZFZlY3Rvci5oCiAg
ICAgRW51bUNsYXNzT3BlcmF0b3JPdmVybG9hZHMuaAogICAgIEVudW1UcmFpdHMuaAogICAgIEV4
cGVjdGVkLmgKQEAgLTIxOSw2ICsyMjAsNyBAQCBzZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAgICAg
UmVmLmgKICAgICBSZWZDb3VudGVkLmgKICAgICBSZWZDb3VudGVkQXJyYXkuaAorICAgIFJlZkNv
dW50ZWRGaXhlZFZlY3Rvci5oCiAgICAgUmVmQ291bnRlZExlYWtDb3VudGVyLmgKICAgICBSZWZD
b3VudGVyLmgKICAgICBSZWZQdHIuaApAQCAtMjg5LDYgKzI5MSw3IEBAIHNldChXVEZfUFVCTElD
X0hFQURFUlMKICAgICBUaW1pbmdTY29wZS5oCiAgICAgVGlueUxSVUNhY2hlLmgKICAgICBUaW55
UHRyU2V0LmgKKyAgICBUcmFpbGluZ0FycmF5LmgKICAgICBUcmFuc2xhdGVkUHJvY2Vzcy5oCiAg
ICAgVHJpU3RhdGUuaAogICAgIFR5cGVDYXN0cy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9FbWJlZGRlZEZpeGVkVmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9FbWJlZGRlZEZpeGVkVmVj
dG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTc3NzkxOGUwMWFiODBmZGU2NjllZDlkZjQxN2M5ZmUyZDFjNGU2
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL0VtYmVkZGVkRml4ZWRWZWN0b3Iu
aApAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Cisj
aW5jbHVkZSA8d3RmL05vbm1vdmFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVHJhaWxpbmdBcnJheS5o
PgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBFbWJlZGRlZEZpeGVkVmVjdG9yIGZpbmFsIDogcHVibGlj
IFRyYWlsaW5nQXJyYXk8RW1iZWRkZWRGaXhlZFZlY3RvcjxUPiwgVD4geworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEKEVtYmVkZGVkRml4ZWRWZWN0b3IpOworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEVtYmVkZGVkRml4ZWRWZWN0b3IpOworICAgIFdURl9NQUtFX05PTk1PVkFCTEUoRW1i
ZWRkZWRGaXhlZFZlY3Rvcik7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IFRyYWlsaW5nQXJy
YXk8RW1iZWRkZWRGaXhlZFZlY3RvcjxUPiwgVD47CisKKyAgICBzdGF0aWMgVW5pcXVlUmVmPEVt
YmVkZGVkRml4ZWRWZWN0b3I+IGNyZWF0ZSh1bnNpZ25lZCBzaXplKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIFVuaXF1ZVJlZiB7ICpuZXcgKE5vdE51bGwsIGZhc3RNYWxsb2MoQmFzZTo6YWxsb2Nh
dGlvblNpemUoc2l6ZSkpKSBFbWJlZGRlZEZpeGVkVmVjdG9yKHNpemUpIH07CisgICAgfQorCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgSW5wdXRJdGVyYXRvcj4KKyAgICBzdGF0aWMgVW5pcXVlUmVm
PEVtYmVkZGVkRml4ZWRWZWN0b3I+IGNyZWF0ZShJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0
ZXJhdG9yIGxhc3QpCisgICAgeworICAgICAgICB1bnNpZ25lZCBzaXplID0gc3RkOjpkaXN0YW5j
ZShmaXJzdCwgbGFzdCk7CisgICAgICAgIHJldHVybiBVbmlxdWVSZWYgeyAqbmV3IChOb3ROdWxs
LCBmYXN0TWFsbG9jKEJhc2U6OmFsbG9jYXRpb25TaXplKHNpemUpKSkgRW1iZWRkZWRGaXhlZFZl
Y3RvcihzaXplLCBmaXJzdCwgbGFzdCkgfTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxzaXplX3Qg
aW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4KKyAgICBzdGF0aWMgVW5p
cXVlUmVmPEVtYmVkZGVkRml4ZWRWZWN0b3I+IGNyZWF0ZUZyb21WZWN0b3IoY29uc3QgVmVjdG9y
PFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiBvdGhlcikKKyAgICB7CisgICAg
ICAgIHVuc2lnbmVkIHNpemUgPSBzdGQ6OnNpemUob3RoZXIpOworICAgICAgICByZXR1cm4gVW5p
cXVlUmVmIHsgKm5ldyAoTm90TnVsbCwgZmFzdE1hbGxvYyhCYXNlOjphbGxvY2F0aW9uU2l6ZShz
aXplKSkpIEVtYmVkZGVkRml4ZWRWZWN0b3Ioc2l6ZSwgc3RkOjpiZWdpbihvdGhlciksIHN0ZDo6
ZW5kKG90aGVyKSkgfTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNp
dHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4KKyAgICBzdGF0aWMgVW5pcXVlUmVmPEVtYmVk
ZGVkRml4ZWRWZWN0b3I+IGNyZWF0ZUZyb21WZWN0b3IoVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5
LCBPdmVyZmxvd0hhbmRsZXI+JiYgb3RoZXIpCisgICAgeworICAgICAgICBWZWN0b3I8VCwgaW5s
aW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4gY29udGFpbmVyID0gV1RGTW92ZShvdGhlcik7
CisgICAgICAgIHVuc2lnbmVkIHNpemUgPSBzdGQ6OnNpemUoY29udGFpbmVyKTsKKyAgICAgICAg
cmV0dXJuIFVuaXF1ZVJlZiB7ICpuZXcgKE5vdE51bGwsIGZhc3RNYWxsb2MoQmFzZTo6YWxsb2Nh
dGlvblNpemUoc2l6ZSkpKSBFbWJlZGRlZEZpeGVkVmVjdG9yKHNpemUsIHN0ZDo6bW92ZV9pdGVy
YXRvciB7IHN0ZDo6YmVnaW4oY29udGFpbmVyKSB9LCBzdGQ6Om1vdmVfaXRlcmF0b3IgeyBzdGQ6
OmVuZChjb250YWluZXIpIH0pIH07CisgICAgfQorCisgICAgVW5pcXVlUmVmPEVtYmVkZGVkRml4
ZWRWZWN0b3I+IGNsb25lKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBjcmVhdGUoQmFz
ZTo6YmVnaW4oKSwgQmFzZTo6ZW5kKCkpOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBFbWJlZGRlZEZpeGVkVmVjdG9yJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiAhKCp0aGlzID09IG90aGVyKTsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgRW1iZWRkZWRGaXhlZFZlY3RvciYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBpZiAo
QmFzZTo6c2l6ZSgpICE9IG90aGVyLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEJhc2U6OnNpemUoKTsgKytpKSB7Cisg
ICAgICAgICAgICBpZiAoQmFzZTo6YXQoaSkgIT0gb3RoZXIuYXQoaSkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBFbWJlZGRlZEZpeGVkVmVjdG9yKHVuc2lnbmVkIHNpemUpCisgICAg
ICAgIDogQmFzZShzaXplKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJ
bnB1dEl0ZXJhdG9yPgorICAgIEVtYmVkZGVkRml4ZWRWZWN0b3IodW5zaWduZWQgc2l6ZSwgSW5w
dXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0KQorICAgICAgICA6IEJhc2Uoc2l6
ZSwgZmlyc3QsIGxhc3QpCisgICAgeworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdURgor
Cit1c2luZyBXVEY6OkVtYmVkZGVkRml4ZWRWZWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaXhlZFZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvRml4ZWRWZWN0b3IuaAppbmRleCAz
MjhmOTgxNTEwYmY3YjY0ZjczMGYxYWJiOGVlMTEwODMzNzZjMWQ0Li4yMjk0MzY2ZjA4ODI5MTE3
YzYwNjhhNGQxZjc0Y2VjZTdlMWE0NjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaXhl
ZFZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpeGVkVmVjdG9yLmgKQEAgLTI1LDYgKzI1
LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYvRW1iZWRkZWRGaXhlZFZlY3Rv
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkQXJyYXkuaD4KIAogbmFtZXNwYWNlIFdURiB7
CkBAIC0zNCw2ICszNSw3IEBAIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8dHlwZW5hbWUgVD4K
IGNsYXNzIEZpeGVkVmVjdG9yIHsKIHB1YmxpYzoKKyAgICB1c2luZyBTdG9yYWdlID0gRW1iZWRk
ZWRGaXhlZFZlY3RvcjxUPjsKICAgICB1c2luZyBpdGVyYXRvciA9IFQqOwogICAgIHVzaW5nIGNv
bnN0X2l0ZXJhdG9yID0gY29uc3QgVCo7CiAgICAgdXNpbmcgcmV2ZXJzZV9pdGVyYXRvciA9IHN0
ZDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj47CkBAIC00MSw3ICs0Myw3IEBAIGNsYXNzIEZp
eGVkVmVjdG9yIHsKIAogICAgIEZpeGVkVmVjdG9yKCkgPSBkZWZhdWx0OwogICAgIEZpeGVkVmVj
dG9yKGNvbnN0IEZpeGVkVmVjdG9yJiBvdGhlcikKLSAgICAgICAgOiBtX3N0b3JhZ2Uob3RoZXIu
bV9zdG9yYWdlLmNsb25lKCkpCisgICAgICAgIDogbV9zdG9yYWdlKG90aGVyLm1fc3RvcmFnZSA/
IG90aGVyLm1fc3RvcmFnZS0+Y2xvbmUoKS5tb3ZlVG9VbmlxdWVQdHIoKSA6IG51bGxwdHIpCiAg
ICAgeyB9CiAgICAgRml4ZWRWZWN0b3IoRml4ZWRWZWN0b3ImJiBvdGhlcikgPSBkZWZhdWx0Owog
CkBAIC02MCw3NiArNjIsMTAyIEBAIGNsYXNzIEZpeGVkVmVjdG9yIHsKICAgICB9CiAKICAgICBl
eHBsaWNpdCBGaXhlZFZlY3RvcihzaXplX3Qgc2l6ZSkKLSAgICAgICAgOiBtX3N0b3JhZ2Uoc2l6
ZSkKKyAgICAgICAgOiBtX3N0b3JhZ2Uoc2l6ZSA/IFN0b3JhZ2U6OmNyZWF0ZShzaXplKS5tb3Zl
VG9VbmlxdWVQdHIoKSA6IG51bGxwdHIpCiAgICAgeyB9CiAKICAgICB0ZW1wbGF0ZTxzaXplX3Qg
aW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4KICAgICBleHBsaWNpdCBG
aXhlZFZlY3Rvcihjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxl
cj4mIG90aGVyKQotICAgICAgICA6IG1fc3RvcmFnZShvdGhlcikKKyAgICAgICAgOiBtX3N0b3Jh
Z2Uob3RoZXIuaXNFbXB0eSgpID8gbnVsbHB0ciA6IFN0b3JhZ2U6OmNyZWF0ZUZyb21WZWN0b3Io
b3RoZXIpLm1vdmVUb1VuaXF1ZVB0cigpKQogICAgIHsgfQogCiAgICAgdGVtcGxhdGU8c2l6ZV90
IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+CiAgICAgRml4ZWRWZWN0
b3ImIG9wZXJhdG9yPShjb25zdCBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFu
ZGxlcj4mIG90aGVyKQogICAgIHsKLSAgICAgICAgbV9zdG9yYWdlID0gb3RoZXI7CisgICAgICAg
IG1fc3RvcmFnZSA9IG90aGVyLmlzRW1wdHkoKSA/IG51bGxwdHIgOiBTdG9yYWdlOjpjcmVhdGVG
cm9tVmVjdG9yKG90aGVyKS5tb3ZlVG9VbmlxdWVQdHIoKTsKICAgICAgICAgcmV0dXJuICp0aGlz
OwogICAgIH0KIAogICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUg
T3ZlcmZsb3dIYW5kbGVyPgogICAgIGV4cGxpY2l0IEZpeGVkVmVjdG9yKFZlY3RvcjxULCBpbmxp
bmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiYmIG90aGVyKQotICAgICAgICA6IG1fc3RvcmFn
ZShXVEZNb3ZlKG90aGVyKSkKLSAgICB7IH0KKyAgICB7CisgICAgICAgIFZlY3RvcjxULCBpbmxp
bmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiB0YXJnZXQgPSBXVEZNb3ZlKG90aGVyKTsKKyAg
ICAgICAgbV9zdG9yYWdlID0gdGFyZ2V0LmlzRW1wdHkoKSA/IG51bGxwdHIgOiBTdG9yYWdlOjpj
cmVhdGVGcm9tVmVjdG9yKFdURk1vdmUodGFyZ2V0KSkubW92ZVRvVW5pcXVlUHRyKCk7CisgICAg
fQogCiAgICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxv
d0hhbmRsZXI+CiAgICAgRml4ZWRWZWN0b3ImIG9wZXJhdG9yPShWZWN0b3I8VCwgaW5saW5lQ2Fw
YWNpdHksIE92ZXJmbG93SGFuZGxlcj4mJiBvdGhlcikKICAgICB7Ci0gICAgICAgIG1fc3RvcmFn
ZSA9IFdURk1vdmUob3RoZXIpOworICAgICAgICBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92
ZXJmbG93SGFuZGxlcj4gdGFyZ2V0ID0gV1RGTW92ZShvdGhlcik7CisgICAgICAgIG1fc3RvcmFn
ZSA9IHRhcmdldC5pc0VtcHR5KCkgPyBudWxscHRyIDogU3RvcmFnZTo6Y3JlYXRlRnJvbVZlY3Rv
cihXVEZNb3ZlKHRhcmdldCkpLm1vdmVUb1VuaXF1ZVB0cigpOwogICAgICAgICByZXR1cm4gKnRo
aXM7CiAgICAgfQogCi0gICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2Uu
c2l6ZSgpOyB9Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlLmlz
RW1wdHkoKTsgfQotICAgIHNpemVfdCBieXRlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFn
ZS5ieXRlU2l6ZSgpOyB9CisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3N0b3Jh
Z2UgPyBtX3N0b3JhZ2UtPnNpemUoKSA6IDA7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiBtX3N0b3JhZ2UgPyBtX3N0b3JhZ2UtPmlzRW1wdHkoKSA6IHRydWU7IH0KKyAgICBz
aXplX3QgYnl0ZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UgPyBtX3N0b3JhZ2UtPmJ5
dGVTaXplKCkgOiAwOyB9CiAKLSAgICBUKiBkYXRhKCkgeyByZXR1cm4gbV9zdG9yYWdlLmRhdGEo
KTsgfQotICAgIGl0ZXJhdG9yIGJlZ2luKCkgeyByZXR1cm4gbV9zdG9yYWdlLmJlZ2luKCk7IH0K
LSAgICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiBtX3N0b3JhZ2UuZW5kKCk7IH0KKyAgICBUKiBk
YXRhKCkgeyByZXR1cm4gbV9zdG9yYWdlID8gbV9zdG9yYWdlLT5kYXRhKCkgOiBudWxscHRyOyB9
CisgICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBtX3N0b3JhZ2UgPyBtX3N0b3JhZ2UtPmJl
Z2luKCkgOiBudWxscHRyOyB9CisgICAgaXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gbV9zdG9yYWdl
ID8gbV9zdG9yYWdlLT5lbmQoKSA6IG51bGxwdHI7IH0KIAogICAgIGNvbnN0IFQqIGRhdGEoKSBj
b25zdCB7IHJldHVybiBjb25zdF9jYXN0PEZpeGVkVmVjdG9yKj4odGhpcyktPmRhdGEoKTsgfQog
ICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxGaXhl
ZFZlY3Rvcio+KHRoaXMpLT5iZWdpbigpOyB9CiAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29u
c3QgeyByZXR1cm4gY29uc3RfY2FzdDxGaXhlZFZlY3Rvcio+KHRoaXMpLT5lbmQoKTsgfQogCi0g
ICAgcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSB7IHJldHVybiBtX3N0b3JhZ2UucmJlZ2luKCk7
IH0KLSAgICByZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSB7IHJldHVybiBtX3N0b3JhZ2UucmVuZCgp
OyB9Ci0gICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSBjb25zdCB7IHJldHVybiBt
X3N0b3JhZ2UucmJlZ2luKCk7IH0KLSAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSBj
b25zdCB7IHJldHVybiBtX3N0b3JhZ2UucmVuZCgpOyB9CisgICAgcmV2ZXJzZV9pdGVyYXRvciBy
YmVnaW4oKSB7IHJldHVybiBtX3N0b3JhZ2UgPyBtX3N0b3JhZ2UtPnJiZWdpbigpIDogcmV2ZXJz
ZV9pdGVyYXRvcihudWxscHRyKTsgfQorICAgIHJldmVyc2VfaXRlcmF0b3IgcmVuZCgpIHsgcmV0
dXJuIG1fc3RvcmFnZSA/IG1fc3RvcmFnZS0+cmVuZCgpIDogcmV2ZXJzZV9pdGVyYXRvcihudWxs
cHRyKTsgfQorICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmJlZ2luKCkgY29uc3QgeyByZXR1
cm4gbV9zdG9yYWdlID8gbV9zdG9yYWdlLT5yYmVnaW4oKSA6IGNvbnN0X3JldmVyc2VfaXRlcmF0
b3IobnVsbHB0cik7IH0KKyAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSBjb25zdCB7
IHJldHVybiBtX3N0b3JhZ2UgPyBtX3N0b3JhZ2UtPnJlbmQoKSA6IGNvbnN0X3JldmVyc2VfaXRl
cmF0b3IobnVsbHB0cik7IH0KIAotICAgIFQmIGF0KHNpemVfdCBpKSB7IHJldHVybiBtX3N0b3Jh
Z2UuYXQoaSk7IH0KLSAgICBjb25zdCBUJiBhdChzaXplX3QgaSkgY29uc3QgeyByZXR1cm4gbV9z
dG9yYWdlLmF0KGkpOyB9CisgICAgVCYgYXQoc2l6ZV90IGkpIHsgcmV0dXJuIG1fc3RvcmFnZS0+
YXQoaSk7IH0KKyAgICBjb25zdCBUJiBhdChzaXplX3QgaSkgY29uc3QgeyByZXR1cm4gbV9zdG9y
YWdlLT5hdChpKTsgfQogCi0gICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyByZXR1cm4gYXQo
aSk7IH0KLSAgICBjb25zdCBUJiBvcGVyYXRvcltdKHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBh
dChpKTsgfQorICAgIFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIHsgcmV0dXJuIG1fc3RvcmFnZS0+
YXQoaSk7IH0KKyAgICBjb25zdCBUJiBvcGVyYXRvcltdKHNpemVfdCBpKSBjb25zdCB7IHJldHVy
biBtX3N0b3JhZ2UtPmF0KGkpOyB9CiAKICAgICBUJiBmaXJzdCgpIHsgcmV0dXJuICgqdGhpcylb
MF07IH0KICAgICBjb25zdCBUJiBmaXJzdCgpIGNvbnN0IHsgcmV0dXJuICgqdGhpcylbMF07IH0K
ICAgICBUJiBsYXN0KCkgeyByZXR1cm4gKCp0aGlzKVtzaXplKCkgLSAxXTsgfQogICAgIGNvbnN0
IFQmIGxhc3QoKSBjb25zdCB7IHJldHVybiAoKnRoaXMpW3NpemUoKSAtIDFdOyB9CiAKLSAgICB2
b2lkIGZpbGwoY29uc3QgVCYgdmFsKSB7IG1fc3RvcmFnZS5maWxsKHZhbCk7IH0KKyAgICB2b2lk
IGZpbGwoY29uc3QgVCYgdmFsKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3N0b3JhZ2UpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIG1fc3RvcmFnZS0+ZmlsbCh2YWwpOworICAgIH0KIAot
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaXhlZFZlY3RvcjxUPiYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuIG1fc3RvcmFnZSA9PSBvdGhlci5tX3N0b3JhZ2U7IH0KKyAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgRml4ZWRWZWN0b3I8VD4mIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBGaXhlZFZlY3RvcjxUPiYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIW1fc3Rv
cmFnZSkgeworICAgICAgICAgICAgaWYgKCFvdGhlci5tX3N0b3JhZ2UpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4gb3RoZXIubV9zdG9yYWdlLT5pc0Vt
cHR5KCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFvdGhlci5tX3N0b3JhZ2UpCisgICAgICAg
ICAgICByZXR1cm4gbV9zdG9yYWdlLT5pc0VtcHR5KCk7CisgICAgICAgIHJldHVybiAqbV9zdG9y
YWdlID09ICpvdGhlci5tX3N0b3JhZ2U7CisgICAgfQogCiAgICAgdm9pZCBzd2FwKEZpeGVkVmVj
dG9yPFQ+JiBvdGhlcikKICAgICB7Ci0gICAgICAgIG1fc3RvcmFnZS5zd2FwKG90aGVyLm1fc3Rv
cmFnZSk7CisgICAgICAgIHVzaW5nIHN0ZDo6c3dhcDsKKyAgICAgICAgc3dhcChtX3N0b3JhZ2Us
IG90aGVyLm1fc3RvcmFnZSk7CiAgICAgfQogCiAgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRP
ZlN0b3JhZ2UoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRml4ZWRWZWN0b3IsIG1fc3RvcmFn
ZSk7IH0KIAorICAgIFN0b3JhZ2UqIGdldFN0b3JhZ2UoKSB7IHJldHVybiBtX3N0b3JhZ2UuZ2V0
KCk7IH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAKLSAgICBSZWZDb3VudGVkQXJyYXk8VD4gbV9zdG9yYWdlOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxTdG9yYWdlPiBtX3N0b3JhZ2U7CiB9Owogc3RhdGljX2Fzc2VydChzaXplb2YoRml4
ZWRWZWN0b3I8aW50PikgPT0gc2l6ZW9mKGludCopKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvUmVmQ291bnRlZEZpeGVkVmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVk
Rml4ZWRWZWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMmYzMzczZTE5NmQ3ZWUyMDJjM2U5ODViMjhhYjJl
N2UxYmViYjc2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvUmVmQ291bnRlZEZp
eGVkVmVjdG9yLmgKQEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHR5cGVfdHJhaXRz
PgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9UcmFpbGlu
Z0FycmF5Lmg+CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBib29s
IGlzVGhyZWFkU2FmZT4KK2NsYXNzIFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2UgZmluYWwgOiBw
dWJsaWMgc3RkOjpjb25kaXRpb25hbDxpc1RocmVhZFNhZmUsIFRocmVhZFNhZmVSZWZDb3VudGVk
PFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2U8VCwgaXNUaHJlYWRTYWZlPj4sIFJlZkNvdW50ZWQ8
UmVmQ291bnRlZEZpeGVkVmVjdG9yQmFzZTxULCBpc1RocmVhZFNhZmU+Pj46OnR5cGUsIHB1Ymxp
YyBUcmFpbGluZ0FycmF5PFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2U8VCwgaXNUaHJlYWRTYWZl
PiwgVD4geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBUcmFpbGluZ0FycmF5PFJlZkNvdW50
ZWRGaXhlZFZlY3RvckJhc2U8VCwgaXNUaHJlYWRTYWZlPiwgVD47CisKKyAgICBzdGF0aWMgUmVm
PFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2U+IGNyZWF0ZSh1bnNpZ25lZCBzaXplKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgKE5vdE51bGwsIGZhc3RNYWxsb2MoQmFzZTo6
YWxsb2NhdGlvblNpemUoc2l6ZSkpKSBSZWZDb3VudGVkRml4ZWRWZWN0b3JCYXNlKHNpemUpKTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yPgorICAgIHN0YXRp
YyBSZWY8UmVmQ291bnRlZEZpeGVkVmVjdG9yQmFzZT4gY3JlYXRlKElucHV0SXRlcmF0b3IgZmly
c3QsIElucHV0SXRlcmF0b3IgbGFzdCkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHNpemUgPSBz
dGQ6OmRpc3RhbmNlKGZpcnN0LCBsYXN0KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
KE5vdE51bGwsIGZhc3RNYWxsb2MoQmFzZTo6YWxsb2NhdGlvblNpemUoc2l6ZSkpKSBSZWZDb3Vu
dGVkRml4ZWRWZWN0b3JCYXNlKHNpemUsIGZpcnN0LCBsYXN0KSk7CisgICAgfQorCisgICAgdGVt
cGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+Cisg
ICAgc3RhdGljIFJlZjxSZWZDb3VudGVkRml4ZWRWZWN0b3JCYXNlPiBjcmVhdGVGcm9tVmVjdG9y
KGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiYgb3RoZXIp
CisgICAgeworICAgICAgICB1bnNpZ25lZCBzaXplID0gc3RkOjpzaXplKG90aGVyKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgKE5vdE51bGwsIGZhc3RNYWxsb2MoQmFzZTo6YWxsb2Nh
dGlvblNpemUoc2l6ZSkpKSBSZWZDb3VudGVkRml4ZWRWZWN0b3JCYXNlKHNpemUsIHN0ZDo6YmVn
aW4ob3RoZXIpLCBzdGQ6OmVuZChvdGhlcikpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxzaXpl
X3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4KKyAgICBzdGF0aWMg
UmVmPFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2U+IGNyZWF0ZUZyb21WZWN0b3IoVmVjdG9yPFQs
IGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiYgb3RoZXIpCisgICAgeworICAgICAg
ICBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4gY29udGFpbmVyID0g
V1RGTW92ZShvdGhlcik7CisgICAgICAgIHVuc2lnbmVkIHNpemUgPSBzdGQ6OnNpemUoY29udGFp
bmVyKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgKE5vdE51bGwsIGZhc3RNYWxsb2Mo
QmFzZTo6YWxsb2NhdGlvblNpemUoc2l6ZSkpKSBSZWZDb3VudGVkRml4ZWRWZWN0b3JCYXNlKHNp
emUsIHN0ZDo6bW92ZV9pdGVyYXRvciB7IHN0ZDo6YmVnaW4oY29udGFpbmVyKSB9LCBzdGQ6Om1v
dmVfaXRlcmF0b3IgeyBzdGQ6OmVuZChjb250YWluZXIpIH0pKTsKKyAgICB9CisKKyAgICBSZWY8
UmVmQ291bnRlZEZpeGVkVmVjdG9yQmFzZT4gY2xvbmUoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIGNyZWF0ZShCYXNlOjpiZWdpbigpLCBCYXNlOjplbmQoKSk7CisgICAgfQorCisgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2UmIG90aGVyKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KKwor
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWZDb3VudGVkRml4ZWRWZWN0b3JCYXNlJiBvdGhl
cikgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChCYXNlOjpzaXplKCkgIT0gb3RoZXIuc2l6ZSgp
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgQmFzZTo6c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChCYXNlOjphdChpKSAh
PSBvdGhlci5hdChpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCitwcml2YXRlOgorICAgIFJlZkNvdW50ZWRG
aXhlZFZlY3RvckJhc2UodW5zaWduZWQgc2l6ZSkKKyAgICAgICAgOiBCYXNlKHNpemUpCisgICAg
eworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIElucHV0SXRlcmF0b3I+CisgICAgUmVm
Q291bnRlZEZpeGVkVmVjdG9yQmFzZSh1bnNpZ25lZCBzaXplLCBJbnB1dEl0ZXJhdG9yIGZpcnN0
LCBJbnB1dEl0ZXJhdG9yIGxhc3QpCisgICAgICAgIDogQmFzZShzaXplLCBmaXJzdCwgbGFzdCkK
KyAgICB7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3VzaW5nIFJlZkNvdW50
ZWRGaXhlZFZlY3RvciA9IFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2U8VCwgZmFsc2U+OwordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK3VzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkRml4ZWRWZWN0b3Ig
PSBSZWZDb3VudGVkRml4ZWRWZWN0b3JCYXNlPFQsIHRydWU+OworCit9IC8vIG5hbWVzcGFjZSBX
VEYKKwordXNpbmcgV1RGOjpSZWZDb3VudGVkRml4ZWRWZWN0b3I7Cit1c2luZyBXVEY6OlRocmVh
ZFNhZmVSZWZDb3VudGVkRml4ZWRWZWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9U
cmFpbGluZ0FycmF5LmggYi9Tb3VyY2UvV1RGL3d0Zi9UcmFpbGluZ0FycmF5LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNzVjMjZlNzZmZDkxODY4YzM3ZTIxNDIzZjYyOWI0ZjUxMTc4N2EzMwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1RyYWlsaW5nQXJyYXkuaApAQCAtMCwwICsxLDE0MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdURiB7CisKKy8vIFRyYWls
aW5nQXJyYXkgb2ZmZXJzIHRoZSBmZWF0dXJlIHRyYWlsaW5nIGFycmF5IGluIHRoZSBkZXJpdmVk
IGNsYXNzLgorLy8gV2UgY2FuIGFsbG9jYXRlIGEgbWVtb3J5IGxpa2UgdGhlIGZvbGxvd2luZyBs
YXlvdXQuCisvLworLy8gICAgIFsgIERlcml2ZWRDbGFzcyAgXVsgVHJhaWxpbmcgQXJyYXkgXQor
Ly8KKy8vIEFuZCB0cmFpbGluZyBhcnJheSBvZmZlcnMgYXBwcm9wcmlhdGUgbWV0aG9kcyBmb3Ig
YWNjZXNzaW5nIGFuZCBkZXN0cnVjdGlvbnMuCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkLCB0
eXBlbmFtZSBUPgorY2xhc3MgVHJhaWxpbmdBcnJheSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoVHJhaWxpbmdBcnJheSk7CisgICAgZnJpZW5kIGNsYXNzIEpTQzo6TExJbnRPZmZzZXRzRXh0
cmFjdG9yOworcHVibGljOgorICAgIHVzaW5nIHZhbHVlX3R5cGUgPSBUOworICAgIHVzaW5nIHBv
aW50ZXIgPSBUKjsKKyAgICB1c2luZyByZWZlcmVuY2UgPSBUJjsKKyAgICB1c2luZyBjb25zdF9y
ZWZlcmVuY2UgPSBjb25zdCBUJjsKKyAgICB1c2luZyBjb25zdF9wb2ludGVyID0gY29uc3QgVCo7
CisgICAgdXNpbmcgc2l6ZV90eXBlID0gdW5zaWduZWQ7CisgICAgdXNpbmcgZGlmZmVyZW5jZV90
eXBlID0gc3RkOjptYWtlX3NpZ25lZF90PHNpemVfdHlwZT47CisgICAgdXNpbmcgaXRlcmF0b3Ig
PSBUKjsKKyAgICB1c2luZyBjb25zdF9pdGVyYXRvciA9IGNvbnN0IFQqOworICAgIHVzaW5nIHJl
dmVyc2VfaXRlcmF0b3IgPSBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8aXRlcmF0b3I+OworICAgIHVz
aW5nIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgPSBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8Y29uc3Rf
aXRlcmF0b3I+OworCisgICAgZXhwbGljaXQgVHJhaWxpbmdBcnJheSh1bnNpZ25lZCBzaXplKQor
ICAgICAgICA6IG1fc2l6ZShzaXplKQorICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX2ZpbmFsX3Y8RGVyaXZlZD4pOworICAgICAgICBWZWN0b3JUeXBlT3BlcmF0aW9uczxUPjo6
aW5pdGlhbGl6ZUlmTm9uUE9EKGJlZ2luKCksIGVuZCgpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yPgorICAgIFRyYWlsaW5nQXJyYXkodW5zaWduZWQgc2l6
ZSwgSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0KQorICAgICAgICA6IG1f
c2l6ZShzaXplKQorICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2ZpbmFsX3Y8
RGVyaXZlZD4pOworICAgICAgICBBU1NFUlQoc3RkOjpkaXN0YW5jZShmaXJzdCwgbGFzdCkgPT0g
c2l6ZSk7CisgICAgICAgIHN0ZDo6dW5pbml0aWFsaXplZF9jb3B5KGZpcnN0LCBsYXN0LCBiZWdp
bigpKTsKKyAgICB9CisKKyAgICB+VHJhaWxpbmdBcnJheSgpCisgICAgeworICAgICAgICBWZWN0
b3JUeXBlT3BlcmF0aW9uczxUPjo6ZGVzdHJ1Y3QoYmVnaW4oKSwgZW5kKCkpOworICAgIH0KKwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGFsbG9jYXRpb25TaXplKHVuc2lnbmVkIHNpemUp
CisgICAgeworICAgICAgICByZXR1cm4gb2Zmc2V0T2ZEYXRhKCkgKyBzaXplICogc2l6ZW9mKFQp
OworICAgIH0KKworICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0K
KyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9CisgICAgdW5zaWdu
ZWQgYnl0ZVNpemUoKSBjb25zdCB7IHJldHVybiBzaXplKCkgKiBzaXplb2YoVCk7IH0KKworICAg
IHBvaW50ZXIgZGF0YSgpIHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxUKj4oYml0d2lzZV9jYXN0PHVp
bnQ4X3QqPihzdGF0aWNfY2FzdDxEZXJpdmVkKj4odGhpcykpICsgb2Zmc2V0T2ZEYXRhKCkpOyB9
CisgICAgY29uc3RfcG9pbnRlciBkYXRhKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PGNv
bnN0IFQqPihiaXR3aXNlX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0YXRpY19jYXN0PGNvbnN0IERl
cml2ZWQqPih0aGlzKSkgKyBvZmZzZXRPZkRhdGEoKSk7IH0KKworICAgIGl0ZXJhdG9yIGJlZ2lu
KCkgeyByZXR1cm4gZGF0YSgpOyB9CisgICAgaXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gZGF0YSgp
ICsgc2l6ZSgpOyB9CisgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBj
YmVnaW4oKTsgfQorICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGNlbmQo
KTsgfQorICAgIGNvbnN0X2l0ZXJhdG9yIGNiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGRhdGEoKTsg
fQorICAgIGNvbnN0X2l0ZXJhdG9yIGNlbmQoKSBjb25zdCB7IHJldHVybiBkYXRhKCkgKyBzaXpl
KCk7IH0KKworICAgIHJldmVyc2VfaXRlcmF0b3IgcmJlZ2luKCkgeyByZXR1cm4gcmV2ZXJzZV9p
dGVyYXRvcihlbmQoKSk7IH0KKyAgICByZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSB7IHJldHVybiBy
ZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOyB9CisgICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciBy
YmVnaW4oKSBjb25zdCB7IHJldHVybiBjcmJlZ2luKCk7IH0KKyAgICBjb25zdF9yZXZlcnNlX2l0
ZXJhdG9yIHJlbmQoKSBjb25zdCB7IHJldHVybiBjcmVuZCgpOyB9CisgICAgY29uc3RfcmV2ZXJz
ZV9pdGVyYXRvciBjcmJlZ2luKCkgY29uc3QgeyByZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRv
cihlbmQoKSk7IH0KKyAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIGNyZW5kKCkgY29uc3QgeyBy
ZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsgfQorCisgICAgcmVmZXJlbmNl
IGF0KHVuc2lnbmVkIGkpCisgICAgeworICAgICAgICBBU1NFUlQoaSA8IHNpemUoKSk7CisgICAg
ICAgIHJldHVybiBiZWdpbigpW2ldOworICAgIH0KKworICAgIGNvbnN0X3JlZmVyZW5jZSBhdCh1
bnNpZ25lZCBpKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGkgPCBzaXplKCkpOworICAg
ICAgICByZXR1cm4gYmVnaW4oKVtpXTsKKyAgICB9CisKKyAgICByZWZlcmVuY2Ugb3BlcmF0b3Jb
XSh1bnNpZ25lZCBpKSB7IHJldHVybiBhdChpKTsgfQorICAgIGNvbnN0X3JlZmVyZW5jZSBvcGVy
YXRvcltdKHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuIGF0KGkpOyB9CisKKyAgICBUJiBmaXJz
dCgpIHsgcmV0dXJuICgqdGhpcylbMF07IH0KKyAgICBjb25zdCBUJiBmaXJzdCgpIGNvbnN0IHsg
cmV0dXJuICgqdGhpcylbMF07IH0KKyAgICBUJiBsYXN0KCkgeyByZXR1cm4gKCp0aGlzKVtzaXpl
KCkgLSAxXTsgfQorICAgIGNvbnN0IFQmIGxhc3QoKSBjb25zdCB7IHJldHVybiAoKnRoaXMpW3Np
emUoKSAtIDFdOyB9CisKKyAgICB2b2lkIGZpbGwoY29uc3QgVCYgdmFsKQorICAgIHsKKyAgICAg
ICAgc3RkOjpmaWxsKGJlZ2luKCksIGVuZCgpLCB2YWwpOworICAgIH0KKworICAgIHN0YXRpYyBw
dHJkaWZmX3Qgb2Zmc2V0T2ZTaXplKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKERlcml2ZWQs
IG1fc2l6ZSk7IH0KKyAgICBzdGF0aWMgY29uc3RleHByIHB0cmRpZmZfdCBvZmZzZXRPZkRhdGEo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxhbGlnbm9m
KFQpPihzaXplb2YoRGVyaXZlZCkpOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIHVuc2lnbmVk
IG1fc2l6ZSB7IDAgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OlRy
YWlsaW5nQXJyYXk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggOTZhOGRiYjgzYjcyMjY0NGRjNmYwMmVhMzVmMjU5MDE3YWI5YzZiZi4uNWY2ZmY4
NzE2NjRkZDU3ZWU2ODE1MDE0MGY2ZDIxNTgyYzU4ZGQ5NSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIxLTEyLTEx
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gSW50
cm9kdWNlIFRyYWlsaW5nQXJyYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNDIwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9FbWJlZGRlZEZpeGVkVmVjdG9yLmNwcDog
QWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OkRlc3RydWN0b3JPYnNlcnZlcjo6RGVzdHJ1Y3Rvck9ic2VydmVyKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OkRlc3RydWN0b3JPYnNlcnZlcjo6fkRlc3RydWN0b3JPYnNlcnZlcik6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpEZXN0cnVjdG9yT2JzZXJ2ZXI6Om9wZXJhdG9yPSk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRml4ZWRWZWN0b3IuY3BwOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvUmVmQ291bnRlZEZpeGVkVmVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkRlc3RydWN0b3JPYnNlcnZl
cjo6RGVzdHJ1Y3Rvck9ic2VydmVyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkRlc3RydWN0
b3JPYnNlcnZlcjo6fkRlc3RydWN0b3JPYnNlcnZlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpEZXN0cnVjdG9yT2JzZXJ2ZXI6Om9wZXJhdG9yPSk6CisKIDIwMjEtMTItMTAgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBBZGQgbmV3
IHNjcmVlbiBhbmQgd2luZG93IGNhcHR1cmUgYmFja2VuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0
cy50eHQKaW5kZXggZmNjOWZmYzYxMmY2ZjkwMTdkNjQ4ZDY1ZjUzMGU1ZjY2Mzg4NTZlNi4uYTFh
OTE0MmZmYThiNTVmNzdiNTRlNGZhZTg1NmRhZmYwOWVjMWMzYiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NN
YWtlTGlzdHMudHh0CkBAIC0zOCw2ICszOCw3IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICBU
ZXN0cy9XVEYvRGF0YU11dGV4LmNwcAogICAgIFRlc3RzL1dURi9EYXRlTWF0aC5jcHAKICAgICBU
ZXN0cy9XVEYvRGVxdWUuY3BwCisgICAgVGVzdHMvV1RGL0VtYmVkZGVkRml4ZWRWZWN0b3IuY3Bw
CiAgICAgVGVzdHMvV1RGL0VudW1UcmFpdHMuY3BwCiAgICAgVGVzdHMvV1RGL0V4cGVjdGVkLmNw
cAogICAgIFRlc3RzL1dURi9GaWxlU3lzdGVtLmNwcApAQCAtNzQsNiArNzUsNyBAQCBzZXQoVGVz
dFdURl9TT1VSQ0VTCiAgICAgVGVzdHMvV1RGL1ByaW9yaXR5UXVldWUuY3BwCiAgICAgVGVzdHMv
V1RGL1JlZEJsYWNrVHJlZS5jcHAKICAgICBUZXN0cy9XVEYvUmVmLmNwcAorICAgIFRlc3RzL1dU
Ri9SZWZDb3VudGVkRml4ZWRWZWN0b3IuY3BwCiAgICAgVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3Bw
CiAgICAgVGVzdHMvV1RGL1JlZkxvZ2dlci5jcHAKICAgICBUZXN0cy9XVEYvUmVmUHRyLmNwcApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxNzhiMzA5YzQ1YzNhMDY0ZjI4YjA3ZGIwZmE5MDBi
NDRkNzE4MjlhLi5hY2Q2Y2JlMjgwYTQ4MjE0MmRjODljNzliODQ5NTdhNjU1MTc1OGJjIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTY1LDYgKzk2NSw3IEBACiAJCUUxMjIwRENBMTU1QjI4
QUEwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0
ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxMjIwREM5MTU1QjI4N0QwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5S
ZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sICovOyB9OwogCQlFMTk0RTFCRDE3N0U1M0M3MDA5QzRE
NEUgLyogU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5NEUxQkMxNzdFNTM0
QTAwOUM0RDRFIC8qIFN0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVSZXNwb25zZS5odG1sICovOyB9
OwogCQlFMzAyQkRBQTI0MDRCOTI0MDA4NjUyNzcgLyogQ29tcGFjdFJlZlB0clR1cGxlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMDJCREE5MjQw
NEI5MjMwMDg2NTI3NyAvKiBDb21wYWN0UmVmUHRyVHVwbGUuY3BwICovOyB9OworCQlFMzE2RDQy
MDI3NjQ3QTAyMDAyODdCMTYgLyogUmVmQ291bnRlZEZpeGVkVmVjdG9yLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMTZENDFGMjc2NDdBMDIwMDI4
N0IxNiAvKiBSZWZDb3VudGVkRml4ZWRWZWN0b3IuY3BwICovOyB9OwogCQlFMzIxMDUxOTI2MTk3
OUYzMDAxNTdDNjcgLyogRml4ZWRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyMTA1MTgyNjE5NzlGMzAwMTU3QzY3IC8qIEZpeGVkVmVj
dG9yLmNwcCAqLzsgfTsKIAkJRTMyNEE2RjAyMDQxQzgyMDAwQTc2NTkzIC8qIFVuaXF1ZUFycmF5
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOThC
QzBGMjA0MUM3NjMwMDM4NzEzNiAvKiBVbmlxdWVBcnJheS5jcHAgKi87IH07CiAJCUUzMjVDOTA3
MjNFMzg3MDIwMEJDN0QzQiAvKiBQaWN0dXJlSW5QaWN0dXJlU3VwcG9ydC5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMjVDOTA2MjNFMzg3MDIwMEJD
N0QzQiAvKiBQaWN0dXJlSW5QaWN0dXJlU3VwcG9ydC5tbSAqLzsgfTsKQEAgLTk3NCw2ICs5NzUs
NyBAQAogCQlFMzU1QTYzMjI2MTU3MThGMDAxQzExMjkgLyogUm9iaW5Ib29kSGFzaE1hcC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzU1QTYzMTI2
MTU3MThGMDAxQzExMjkgLyogUm9iaW5Ib29kSGFzaE1hcC5jcHAgKi87IH07CiAJCUUzNUI5MDgy
MjNGNjBERDAwMDAwMTFGRiAvKiBMb2NhbGl6ZWREZXZpY2VNb2RlbC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUI5MDgxMjNGNjBERDAwMDAwMTFG
RiAvKiBMb2NhbGl6ZWREZXZpY2VNb2RlbC5tbSAqLzsgfTsKIAkJRTM1RkM3QjIyMkI4MkE3MzAw
RjMyRjk4IC8qIEpTTG9ja1Rha2VzV2ViVGhyZWFkTG9jay5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNUZDN0IxMjJCODJBNkQwMEYzMkY5OCAvKiBK
U0xvY2tUYWtlc1dlYlRocmVhZExvY2subW0gKi87IH07CisJCUUzNkI4N0EzMjc2MjIxODcwMDU5
RDJGOSAvKiBFbWJlZGRlZEZpeGVkVmVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkI4N0EyMjc2MjIxODYwMDU5RDJGOSAvKiBFbWJlZGRl
ZEZpeGVkVmVjdG9yLmNwcCAqLzsgfTsKIAkJRTM3M0Q3OTExRjJDRjM1MjAwQzZGQUFGIC8qIFNp
Z25hbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM5NTNGOTUxRjJDRjMyMTAwQTc2QTJFIC8qIFNpZ25hbHMuY3BwICovOyB9OwogCQlFMzhBMEQz
NTFGRDUwQ0MzMDBFOThDOEIgLyogVGhyZWFkaW5nLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEEwRDM0MUZENTBDQkMwMEU5OEM4QiAvKiBUaHJl
YWRpbmcuY3BwICovOyB9OwogCQlFMzhENjVDQTIzQTQ1RkFBMDA2M0Q2OUEgLyogUGFja2VkUmVm
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOEQ2
NUM4MjNBNDVGQTkwMDYzRDY5QSAvKiBQYWNrZWRSZWYuY3BwICovOyB9OwpAQCAtMjg4OCw2ICsy
ODkwLDcgQEAKIAkJRTE5NEUxQkExNzdFNTE0NTAwOUM0RDRFIC8qIFN0b3BMb2FkaW5nRnJvbURp
ZFJlY2VpdmVSZXNwb25zZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFN0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVSZXNwb25zZS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTE5NEUxQkMxNzdFNTM0QTAwOUM0RDRFIC8qIFN0b3BMb2FkaW5nRnJv
bURpZFJlY2VpdmVSZXNwb25zZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gU3RvcExvYWRpbmdGcm9tRGlkUmVj
ZWl2ZVJlc3BvbnNlLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMDJCREE5
MjQwNEI5MjMwMDg2NTI3NyAvKiBDb21wYWN0UmVmUHRyVHVwbGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29tcGFjdFJlZlB0clR1cGxlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMxNkQ0MUYyNzY0N0EwMjAwMjg3QjE2IC8qIFJlZkNvdW50
ZWRGaXhlZFZlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZWZDb3VudGVkRml4ZWRWZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MzIxMDUxODI2MTk3OUYzMDAxNTdDNjcgLyogRml4ZWRWZWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRml4ZWRWZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzI1QzkwNjIzRTM4NzAyMDBCQzdEM0IgLyogUGljdHVyZUluUGljdHVy
ZVN1cHBvcnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQaWN0dXJlSW5QaWN0dXJlU3VwcG9y
dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMyQjU0OTEyMjgxMEFDMDAwOEFE
NzAyIC8qIFBhY2tlZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWNrZWQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjg5Niw2ICsyODk5LDcgQEAKIAkJRTM1NUE2MzEyNjE1
NzE4RjAwMUMxMTI5IC8qIFJvYmluSG9vZEhhc2hNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUm9iaW5Ib29kSGFzaE1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzNUI5MDgxMjNGNjBERDAwMDAwMTFGRiAvKiBMb2NhbGl6ZWREZXZpY2VN
b2RlbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IExvY2FsaXplZERldmljZU1vZGVsLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzVGQzdCMTIyQjgyQTZEMDBGMzJGOTggLyog
SlNMb2NrVGFrZXNXZWJUaHJlYWRMb2NrLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gSlNMb2NrVGFrZXNXZWJUaHJlYWRMb2NrLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFMzZCODdBMjI3NjIyMTg2MDA1OUQyRjkgLyogRW1iZWRkZWRGaXhlZFZl
Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFbWJlZGRlZEZp
eGVkVmVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4ODg4NzAyMEM5
MDk4MTAwRTYzMkJDIC8qIFdvcmtlclBvb2wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV29ya2VyUG9vbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzOEEwRDM0MUZENTBDQkMwMEU5OEM4QiAvKiBUaHJlYWRpbmcuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGhyZWFkaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM4RDY1QzgyM0E0NUZBOTAwNjNENjlBIC8qIFBhY2tlZFJlZi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWNrZWRSZWYuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQ4Myw2ICs0NDg3LDcgQEAKIAkJCQk3QUEwMjFCQTFB
QjA5RUE3MDA1Mjk1M0YgLyogRGF0ZU1hdGguY3BwICovLAogCQkJCTFBMzUyNEE5MUQ2MjdCRDQw
MDMxNzI5QiAvKiBEZWxldGVkQWRkcmVzc09mT3BlcmF0b3IuaCAqLywKIAkJCQlFNEE3NTdEMzE3
OEFFQTVCMDBCNUQ3QTQgLyogRGVxdWUuY3BwICovLAorCQkJCUUzNkI4N0EyMjc2MjIxODYwMDU5
RDJGOSAvKiBFbWJlZGRlZEZpeGVkVmVjdG9yLmNwcCAqLywKIAkJCQkxQUY3QjIxRDFENkNEMTJF
MDA4QzEyNkMgLyogRW51bVRyYWl0cy5jcHAgKi8sCiAJCQkJQUQ3QzQzNEMxREQyQTU0NzAwMjY4
ODhCIC8qIEV4cGVjdGVkLmNwcCAqLywKIAkJCQlBMzEwODI3MTIxRjI5NkVDMDBDMjhCOTcgLyog
RmlsZVN5c3RlbS5jcHAgKi8sCkBAIC00NTI1LDYgKzQ1MzAsNyBAQAogCQkJCTUzRUMyNTNGMUU5
NkJDODAwMDA4MzFCOSAvKiBQcmlvcml0eVF1ZXVlLmNwcCAqLywKIAkJCQkwRkM2QzRDQjE0MTAy
N0UwMDA1QjdGMEMgLyogUmVkQmxhY2tUcmVlLmNwcCAqLywKIAkJCQk5M0E0MjdBQTE4MERBMjY0
MDBDRDI0RDcgLyogUmVmLmNwcCAqLywKKwkJCQlFMzE2RDQxRjI3NjQ3QTAyMDAyODdCMTYgLyog
UmVmQ291bnRlZEZpeGVkVmVjdG9yLmNwcCAqLywKIAkJCQk4NkJEMTk5NzFBMkRCMDVCMDA2RENG
MEEgLyogUmVmQ291bnRlci5jcHAgKi8sCiAJCQkJNDQyQkJGNjgxQzkxQ0FEOTAwMTcwODdGIC8q
IFJlZkxvZ2dlci5jcHAgKi8sCiAJCQkJOTNBNDI3QUQxODBEQTYwRjAwQ0QyNEQ3IC8qIFJlZkxv
Z2dlci5oICovLApAQCAtNTI2Myw2ICs1MjY5LDcgQEAKIAkJCQk1QzJDMDFBODI3MzQ4ODM2MDBG
ODlEMzcgLyogQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RF
QTkxRDBBNTkwQzAwRkVCQ0YzIC8qIENTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4
M0RFQUQxRDBBNTkwQzAwRkVCQ0YzIC8qIERlcXVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUz
NkI4N0EzMjc2MjIxODcwMDU5RDJGOSAvKiBFbWJlZGRlZEZpeGVkVmVjdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBRjdCMjFGMUQ2Q0QxNEQwMDhDMTI2QyAvKiBFbnVtVHJhaXRzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUFEN0M0MzREMUREMkE1NEUwMDI2ODg4QiAvKiBFeHBlY3RlZC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBMzEwODI3MjIxRjI5NkZGMDBDMjhCOTcgLyogRmlsZVN5
c3RlbS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTUzMDQsNiArNTMxMSw3IEBACiAJCQkJNTNFQzI1
NDExRTk2RkQ4NzAwMDgzMUI5IC8qIFByaW9yaXR5UXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0M4M0RGMTMxRDBBNTkwQzAwRkVCQ0YzIC8qIFJlZEJsYWNrVHJlZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3QzgzREYxNDFEMEE1OTBDMDBGRUJDRjMgLyogUmVmLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUUzMTZENDIwMjc2NDdBMDIwMDI4N0IxNiAvKiBSZWZDb3VudGVkRml4ZWRWZWN0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RGMTUxRDBBNTkwQzAwRkVCQ0YzIC8qIFJl
ZkNvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0RFRDcxRDBBNTkwQzAwRkVCQ0Yz
IC8qIFJlZkxvZ2dlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYxNjFEMEE1OTBDMDBG
RUJDRjMgLyogUmVmUHRyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvRW1iZWRkZWRGaXhlZFZlY3Rvci5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9FbWJlZGRlZEZpeGVkVmVjdG9yLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
YTdhYjUyNGNiZGYwYTE4Y2NjNzQ2YTZjNzBhNzY5ZTZmMGYwOGMyCi0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRW1iZWRkZWRGaXhlZFZlY3Rvci5jcHAK
QEAgLTAsMCArMSwyNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
bmNsdWRlICJNb3ZlT25seS5oIgorI2luY2x1ZGUgPHd0Zi9FbWJlZGRlZEZpeGVkVmVjdG9yLmg+
CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChXVEZfRW1iZWRkZWRGaXhlZFZl
Y3RvciwgRW1wdHkpCit7CisgICAgYXV0byB2ZWN0b3IgPSBFbWJlZGRlZEZpeGVkVmVjdG9yPHVu
c2lnbmVkPjo6Y3JlYXRlKDApOworICAgIEVYUEVDVF9UUlVFKHZlY3Rvci0+aXNFbXB0eSgpKTsK
KyAgICBFWFBFQ1RfRVEoMFUsIHZlY3Rvci0+c2l6ZSgpKTsKK30KKworVEVTVChXVEZfRW1iZWRk
ZWRGaXhlZFZlY3RvciwgSXRlcmF0b3IpCit7CisgICAgYXV0byBpbnRWZWN0b3IgPSBFbWJlZGRl
ZEZpeGVkVmVjdG9yPHVuc2lnbmVkPjo6Y3JlYXRlKDQpOworICAgIGludFZlY3Rvci5nZXQoKVsw
XSA9IDEwOworICAgIGludFZlY3Rvci5nZXQoKVsxXSA9IDExOworICAgIGludFZlY3Rvci5nZXQo
KVsyXSA9IDEyOworICAgIGludFZlY3Rvci5nZXQoKVszXSA9IDEzOworCisgICAgYXV0byBpdCA9
IGludFZlY3Rvci0+YmVnaW4oKTsKKyAgICBhdXRvIGVuZCA9IGludFZlY3Rvci0+ZW5kKCk7Cisg
ICAgRVhQRUNUX1RSVUUoZW5kICE9IGl0KTsKKworICAgIEVYUEVDVF9FUSgxMFUsICppdCk7Cisg
ICAgKytpdDsKKyAgICBFWFBFQ1RfRVEoMTFVLCAqaXQpOworICAgICsraXQ7CisgICAgRVhQRUNU
X0VRKDEyVSwgKml0KTsKKyAgICArK2l0OworICAgIEVYUEVDVF9FUSgxM1UsICppdCk7CisgICAg
KytpdDsKKworICAgIEVYUEVDVF9UUlVFKGVuZCA9PSBpdCk7Cit9CisKK1RFU1QoV1RGX0VtYmVk
ZGVkRml4ZWRWZWN0b3IsIE92ZXJsb2FkZWRPcGVyYXRvckFtcGVyc2FuZCkKK3sKKyAgICBzdHJ1
Y3QgVGVzdCB7CisgICAgcHJpdmF0ZToKKyAgICAgICAgVGVzdCogb3BlcmF0b3ImKCkgPSBkZWxl
dGU7CisgICAgfTsKKworICAgIGF1dG8gdmVjdG9yID0gRW1iZWRkZWRGaXhlZFZlY3RvcjxUZXN0
Pjo6Y3JlYXRlKDEpOworICAgIHZlY3Rvci5nZXQoKVswXSA9IFRlc3QoKTsKK30KKworVEVTVChX
VEZfRW1iZWRkZWRGaXhlZFZlY3RvciwgQ29weSkKK3sKKyAgICBhdXRvIHZlYzEgPSBFbWJlZGRl
ZEZpeGVkVmVjdG9yPHVuc2lnbmVkPjo6Y3JlYXRlKDMpOworICAgIHZlYzEuZ2V0KClbMF0gPSAw
OworICAgIHZlYzEuZ2V0KClbMV0gPSAxOworICAgIHZlYzEuZ2V0KClbMl0gPSAyOworCisgICAg
YXV0byB2ZWMyID0gRW1iZWRkZWRGaXhlZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0ZSh2ZWMxLT5i
ZWdpbigpLCB2ZWMxLT5lbmQoKSk7CisgICAgRVhQRUNUX0VRKDNVLCB2ZWMxLT5zaXplKCkpOwor
ICAgIEVYUEVDVF9FUSgzVSwgdmVjMi0+c2l6ZSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgdmVjMS0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgRVhQRUNUX0VRKGksIHZlYzEuZ2V0
KClbaV0pOworICAgICAgICBFWFBFQ1RfRVEoaSwgdmVjMi5nZXQoKVtpXSk7CisgICAgfQorICAg
IHZlYzEuZ2V0KClbMl0gPSA0MjsKKyAgICBFWFBFQ1RfRVEoNDJVLCB2ZWMxLmdldCgpWzJdKTsK
KyAgICBFWFBFQ1RfRVEoMlUsIHZlYzIuZ2V0KClbMl0pOworfQorCitURVNUKFdURl9FbWJlZGRl
ZEZpeGVkVmVjdG9yLCBDb3B5VmVjdG9yKQoreworICAgIGF1dG8gdmVjMSA9IFZlY3Rvcjx1bnNp
Z25lZD46OmZyb20oMCwgMSwgMiwgMyk7CisgICAgRVhQRUNUX0VRKDRVLCB2ZWMxLnNpemUoKSk7
CisgICAgYXV0byB2ZWMyID0gRW1iZWRkZWRGaXhlZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0ZUZy
b21WZWN0b3IodmVjMSk7CisgICAgRVhQRUNUX0VRKDRVLCB2ZWMxLnNpemUoKSk7CisgICAgRVhQ
RUNUX0VRKDRVLCB2ZWMyLT5zaXplKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2
ZWMxLnNpemUoKTsgKytpKSB7CisgICAgICAgIEVYUEVDVF9FUShpLCB2ZWMxW2ldKTsKKyAgICAg
ICAgRVhQRUNUX0VRKGksIHZlYzIuZ2V0KClbaV0pOworICAgIH0KKyAgICB2ZWMxWzJdID0gNDI7
CisgICAgRVhQRUNUX0VRKDQyVSwgdmVjMVsyXSk7CisgICAgRVhQRUNUX0VRKDJVLCB2ZWMyLmdl
dCgpWzJdKTsKK30KKworVEVTVChXVEZfRW1iZWRkZWRGaXhlZFZlY3RvciwgTW92ZVZlY3RvcikK
K3sKKyAgICBhdXRvIHZlYzEgPSBWZWN0b3I8TW92ZU9ubHk+Ojpmcm9tKE1vdmVPbmx5KDApLCBN
b3ZlT25seSgxKSwgTW92ZU9ubHkoMiksIE1vdmVPbmx5KDMpKTsKKyAgICBFWFBFQ1RfRVEoNFUs
IHZlYzEuc2l6ZSgpKTsKKyAgICBhdXRvIHZlYzIgPSBFbWJlZGRlZEZpeGVkVmVjdG9yPE1vdmVP
bmx5Pjo6Y3JlYXRlRnJvbVZlY3RvcihXVEZNb3ZlKHZlYzEpKTsKKyAgICBFWFBFQ1RfRVEoMFUs
IHZlYzEuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoNFUsIHZlYzItPnNpemUoKSk7CisgICAgZm9y
ICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgdmVjMi0+c2l6ZSgpOyArK2luZGV4KQorICAg
ICAgICBFWFBFQ1RfRVEoaW5kZXgsIHZlYzIuZ2V0KClbaW5kZXhdLnZhbHVlKCkpOworfQorCitU
RVNUKFdURl9FbWJlZGRlZEZpeGVkVmVjdG9yLCBJdGVyYXRvckZvcikKK3sKKyAgICBhdXRvIHZl
YzEgPSBFbWJlZGRlZEZpeGVkVmVjdG9yPHVuc2lnbmVkPjo6Y3JlYXRlKDMpOworICAgIHZlYzEu
Z2V0KClbMF0gPSAwOworICAgIHZlYzEuZ2V0KClbMV0gPSAxOworICAgIHZlYzEuZ2V0KClbMl0g
PSAyOworCisgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgIGZvciAoYXV0byBpdGVyID0gdmVj
MS0+YmVnaW4oKTsgaXRlciAhPSB2ZWMxLT5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgIEVYUEVD
VF9FUShpbmRleCwgKml0ZXIpOworICAgICAgICArK2luZGV4OworICAgIH0KK30KKworVEVTVChX
VEZfRW1iZWRkZWRGaXhlZFZlY3RvciwgUmV2ZXJzZSkKK3sKKyAgICBhdXRvIHZlYzEgPSBFbWJl
ZGRlZEZpeGVkVmVjdG9yPHVuc2lnbmVkPjo6Y3JlYXRlKDMpOworICAgIHZlYzEuZ2V0KClbMF0g
PSAwOworICAgIHZlYzEuZ2V0KClbMV0gPSAxOworICAgIHZlYzEuZ2V0KClbMl0gPSAyOworCisg
ICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgIGZvciAoYXV0byBpdGVyID0gdmVjMS0+cmJlZ2lu
KCk7IGl0ZXIgIT0gdmVjMS0+cmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgKytpbmRleDsKKyAg
ICAgICAgRVhQRUNUX0VRKDNVIC0gaW5kZXgsICppdGVyKTsKKyAgICB9Cit9CisKK1RFU1QoV1RG
X0VtYmVkZGVkRml4ZWRWZWN0b3IsIEZpbGwpCit7CisgICAgYXV0byB2ZWMxID0gRW1iZWRkZWRG
aXhlZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0ZSgzKTsKKyAgICB2ZWMxLT5maWxsKDQyKTsKKwor
ICAgIGZvciAoYXV0byYgdmFsdWUgOiB2ZWMxLmdldCgpKQorICAgICAgICBFWFBFQ1RfRVEoNDJV
LCB2YWx1ZSk7Cit9CisKK3N0cnVjdCBEZXN0cnVjdG9yT2JzZXJ2ZXIgeworICAgIERlc3RydWN0
b3JPYnNlcnZlcigpID0gZGVmYXVsdDsKKworICAgIERlc3RydWN0b3JPYnNlcnZlcihib29sKiBk
ZXN0cnVjdGVkKQorICAgICAgICA6IGRlc3RydWN0ZWQoZGVzdHJ1Y3RlZCkKKyAgICB7CisgICAg
fQorCisgICAgfkRlc3RydWN0b3JPYnNlcnZlcigpCisgICAgeworICAgICAgICBpZiAoZGVzdHJ1
Y3RlZCkKKyAgICAgICAgICAgICpkZXN0cnVjdGVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICBEZXN0
cnVjdG9yT2JzZXJ2ZXIoRGVzdHJ1Y3Rvck9ic2VydmVyJiYgb3RoZXIpCisgICAgICAgIDogZGVz
dHJ1Y3RlZChvdGhlci5kZXN0cnVjdGVkKQorICAgIHsKKyAgICAgICAgb3RoZXIuZGVzdHJ1Y3Rl
ZCA9IG51bGxwdHI7CisgICAgfQorCisgICAgRGVzdHJ1Y3Rvck9ic2VydmVyJiBvcGVyYXRvcj0o
RGVzdHJ1Y3Rvck9ic2VydmVyJiYgb3RoZXIpCisgICAgeworICAgICAgICBkZXN0cnVjdGVkID0g
b3RoZXIuZGVzdHJ1Y3RlZDsKKyAgICAgICAgb3RoZXIuZGVzdHJ1Y3RlZCA9IG51bGxwdHI7Cisg
ICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBib29sKiBkZXN0cnVjdGVkIHsgbnVs
bHB0ciB9OworfTsKKworVEVTVChXVEZfRW1iZWRkZWRGaXhlZFZlY3RvciwgRGVzdHJ1Y3RvcikK
K3sKKyAgICBWZWN0b3I8Ym9vbD4gZmxhZ3MoMywgZmFsc2UpOworICAgIHsKKyAgICAgICAgYXV0
byB2ZWN0b3IgPSBFbWJlZGRlZEZpeGVkVmVjdG9yPERlc3RydWN0b3JPYnNlcnZlcj46OmNyZWF0
ZShmbGFncy5zaXplKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmxhZ3Mu
c2l6ZSgpOyArK2kpCisgICAgICAgICAgICB2ZWN0b3IuZ2V0KClbaV0gPSBEZXN0cnVjdG9yT2Jz
ZXJ2ZXIoJmZsYWdzW2ldKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZsYWdz
LnNpemUoKTsgKytpKQorICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGZsYWdzW2ldKTsKKyAgICB9
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZsYWdzLnNpemUoKTsgKytpKQorICAgICAg
ICBFWFBFQ1RfVFJVRShmbGFnc1tpXSk7Cit9CisKK1RFU1QoV1RGX0VtYmVkZGVkRml4ZWRWZWN0
b3IsIERlc3RydWN0b3JBZnRlck1vdmUpCit7CisgICAgVmVjdG9yPGJvb2w+IGZsYWdzKDMsIGZh
bHNlKTsKKyAgICB7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFbWJlZGRlZEZpeGVkVmVjdG9y
PERlc3RydWN0b3JPYnNlcnZlcj4+IG91dGVyVmVjdG9yOworICAgICAgICB7CisgICAgICAgICAg
ICBhdXRvIHZlY3RvciA9IEVtYmVkZGVkRml4ZWRWZWN0b3I8RGVzdHJ1Y3Rvck9ic2VydmVyPjo6
Y3JlYXRlKGZsYWdzLnNpemUoKSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgZmxhZ3Muc2l6ZSgpOyArK2kpCisgICAgICAgICAgICAgICAgdmVjdG9yLmdldCgpW2ldID0g
RGVzdHJ1Y3Rvck9ic2VydmVyKCZmbGFnc1tpXSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgZmxhZ3Muc2l6ZSgpOyArK2kpCisgICAgICAgICAgICAgICAgRVhQRUNUX0ZB
TFNFKGZsYWdzW2ldKTsKKyAgICAgICAgICAgIG91dGVyVmVjdG9yID0gdmVjdG9yLm1vdmVUb1Vu
aXF1ZVB0cigpOworICAgICAgICB9CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBm
bGFncy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShmbGFnc1tpXSk7Cisg
ICAgfQorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmbGFncy5zaXplKCk7ICsraSkKKyAg
ICAgICAgRVhQRUNUX1RSVUUoZmxhZ3NbaV0pOworfQorCitURVNUKFdURl9FbWJlZGRlZEZpeGVk
VmVjdG9yLCBCYXNpYykKK3sKKyAgICBzdGQ6OmFycmF5PHVuc2lnbmVkLCA0PiBhcnJheSB7IHsK
KyAgICAgICAgMCwgMSwgMiwgMworICAgIH0gfTsKKyAgICB7CisgICAgICAgIGF1dG8gdmVjdG9y
ID0gRW1iZWRkZWRGaXhlZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0ZShhcnJheS5iZWdpbigpLCBh
cnJheS5lbmQoKSk7CisgICAgICAgIEVYUEVDVF9FUSg0VSwgdmVjdG9yLT5zaXplKCkpOworICAg
ICAgICBFWFBFQ1RfRVEoMFUsIHZlY3Rvci0+YXQoMCkpOworICAgICAgICBFWFBFQ1RfRVEoMVUs
IHZlY3Rvci0+YXQoMSkpOworICAgICAgICBFWFBFQ1RfRVEoMlUsIHZlY3Rvci0+YXQoMikpOwor
ICAgICAgICBFWFBFQ1RfRVEoM1UsIHZlY3Rvci0+YXQoMykpOworICAgIH0KK30KKworVEVTVChX
VEZfRW1iZWRkZWRGaXhlZFZlY3RvciwgQ2xvbmUpCit7CisgICAgc3RkOjphcnJheTx1bnNpZ25l
ZCwgND4gYXJyYXkgeyB7CisgICAgICAgIDAsIDEsIDIsIDMKKyAgICB9IH07CisgICAgeworICAg
ICAgICBhdXRvIHZlY3RvciA9IEVtYmVkZGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+OjpjcmVhdGUo
YXJyYXkuYmVnaW4oKSwgYXJyYXkuZW5kKCkpOworICAgICAgICBFWFBFQ1RfRVEoNFUsIHZlY3Rv
ci0+c2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDBVLCB2ZWN0b3ItPmF0KDApKTsKKyAgICAg
ICAgRVhQRUNUX0VRKDFVLCB2ZWN0b3ItPmF0KDEpKTsKKyAgICAgICAgRVhQRUNUX0VRKDJVLCB2
ZWN0b3ItPmF0KDIpKTsKKyAgICAgICAgRVhQRUNUX0VRKDNVLCB2ZWN0b3ItPmF0KDMpKTsKKwor
ICAgICAgICBhdXRvIGNsb25lZCA9IHZlY3Rvci0+Y2xvbmUoKTsKKyAgICAgICAgRVhQRUNUX0VR
KDRVLCBjbG9uZWQtPnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUSgwVSwgY2xvbmVkLT5hdCgw
KSk7CisgICAgICAgIEVYUEVDVF9FUSgxVSwgY2xvbmVkLT5hdCgxKSk7CisgICAgICAgIEVYUEVD
VF9FUSgyVSwgY2xvbmVkLT5hdCgyKSk7CisgICAgICAgIEVYUEVDVF9FUSgzVSwgY2xvbmVkLT5h
dCgzKSk7CisgICAgfQorfQorCitURVNUKFdURl9FbWJlZGRlZEZpeGVkVmVjdG9yLCBFcXVhbCkK
K3sKKyAgICBhdXRvIHZlYzEgPSBFbWJlZGRlZEZpeGVkVmVjdG9yPHVuc2lnbmVkPjo6Y3JlYXRl
KDEwKTsKKyAgICBhdXRvIHZlYzIgPSBFbWJlZGRlZEZpeGVkVmVjdG9yPHVuc2lnbmVkPjo6Y3Jl
YXRlKDEwKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMTA7ICsraSkgeworICAgICAg
ICB2ZWMxLmdldCgpW2ldID0gaTsKKyAgICAgICAgdmVjMi5nZXQoKVtpXSA9IGk7CisgICAgfQor
ICAgIEVYUEVDVF9FUSh2ZWMxLmdldCgpLCB2ZWMyLmdldCgpKTsKKyAgICB2ZWMxLmdldCgpWzBd
ID0gNDI7CisgICAgRVhQRUNUX05FKHZlYzEuZ2V0KCksIHZlYzIuZ2V0KCkpOworfQorCit9CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaXhlZFZlY3Rvci5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaXhlZFZlY3Rvci5jcHAKaW5kZXggMTYx
NTNkYWM5NzI1ZDBiNThkYmZmY2NiNDY4MjY4Nzk0NzgwMTU1YS4uZDJlZWNiYjk1MGQ4OWRlMWM2
NWRhYWQ1OTk0NGUyMjI3MWFlYmUyMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvRml4ZWRWZWN0b3IuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0ZpeGVkVmVjdG9yLmNwcApAQCAtODYsMTUgKzg2LDE1IEBAIFRFU1QoV1RGX0ZpeGVkVmVj
dG9yLCBDb3B5KQogICAgIHZlYzFbMl0gPSAyOwogCiAgICAgRml4ZWRWZWN0b3I8dW5zaWduZWQ+
IHZlYzIodmVjMSk7Ci0gICAgRVhQRUNUX0VRKHZlYzEuc2l6ZSgpLCAzVSk7Ci0gICAgRVhQRUNU
X0VRKHZlYzIuc2l6ZSgpLCAzVSk7CisgICAgRVhQRUNUX0VRKDNVLCB2ZWMxLnNpemUoKSk7Cisg
ICAgRVhQRUNUX0VRKDNVLCB2ZWMyLnNpemUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHZlYzEuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgRVhQRUNUX0VRKHZlYzFbaV0sIGkpOwot
ICAgICAgICBFWFBFQ1RfRVEodmVjMltpXSwgaSk7CisgICAgICAgIEVYUEVDVF9FUShpLCB2ZWMx
W2ldKTsKKyAgICAgICAgRVhQRUNUX0VRKGksIHZlYzJbaV0pOwogICAgIH0KICAgICB2ZWMxWzJd
ID0gNDI7Ci0gICAgRVhQRUNUX0VRKHZlYzFbMl0sIDQyVSk7Ci0gICAgRVhQRUNUX0VRKHZlYzJb
Ml0sIDJVKTsKKyAgICBFWFBFQ1RfRVEoNDJVLCB2ZWMxWzJdKTsKKyAgICBFWFBFQ1RfRVEoMlUs
IHZlYzJbMl0pOwogfQogCiBURVNUKFdURl9GaXhlZFZlY3RvciwgQ29weUFzc2lnbikKQEAgLTEw
NiwxNSArMTA2LDE1IEBAIFRFU1QoV1RGX0ZpeGVkVmVjdG9yLCBDb3B5QXNzaWduKQogCiAgICAg
Rml4ZWRWZWN0b3I8dW5zaWduZWQ+IHZlYzI7CiAgICAgdmVjMiA9IHZlYzE7Ci0gICAgRVhQRUNU
X0VRKHZlYzEuc2l6ZSgpLCAzVSk7Ci0gICAgRVhQRUNUX0VRKHZlYzIuc2l6ZSgpLCAzVSk7Cisg
ICAgRVhQRUNUX0VRKDNVLCB2ZWMxLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDNVLCB2ZWMyLnNp
emUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZlYzEuc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgRVhQRUNUX0VRKHZlYzFbaV0sIGkpOwotICAgICAgICBFWFBFQ1RfRVEodmVjMltp
XSwgaSk7CisgICAgICAgIEVYUEVDVF9FUShpLCB2ZWMxW2ldKTsKKyAgICAgICAgRVhQRUNUX0VR
KGksIHZlYzJbaV0pOwogICAgIH0KICAgICB2ZWMxWzJdID0gNDI7Ci0gICAgRVhQRUNUX0VRKHZl
YzFbMl0sIDQyVSk7Ci0gICAgRVhQRUNUX0VRKHZlYzJbMl0sIDJVKTsKKyAgICBFWFBFQ1RfRVEo
NDJVLCB2ZWMxWzJdKTsKKyAgICBFWFBFQ1RfRVEoMlUsIHZlYzJbMl0pOwogfQogCiBURVNUKFdU
Rl9GaXhlZFZlY3RvciwgTW92ZSkKQEAgLTEyNSwxMCArMTI1LDEwIEBAIFRFU1QoV1RGX0ZpeGVk
VmVjdG9yLCBNb3ZlKQogICAgIHZlYzFbMl0gPSAyOwogCiAgICAgRml4ZWRWZWN0b3I8dW5zaWdu
ZWQ+IHZlYzIoV1RGTW92ZSh2ZWMxKSk7Ci0gICAgRVhQRUNUX0VRKHZlYzEuc2l6ZSgpLCAwVSk7
Ci0gICAgRVhQRUNUX0VRKHZlYzIuc2l6ZSgpLCAzVSk7CisgICAgRVhQRUNUX0VRKDBVLCB2ZWMx
LnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDNVLCB2ZWMyLnNpemUoKSk7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHZlYzIuc2l6ZSgpOyArK2kpCi0gICAgICAgIEVYUEVDVF9FUSh2ZWMy
W2ldLCBpKTsKKyAgICAgICAgRVhQRUNUX0VRKGksIHZlYzJbaV0pOwogfQogCiBURVNUKFdURl9G
aXhlZFZlY3RvciwgTW92ZUFzc2lnbikKQEAgLTE0MCwyMSArMTQwLDIxIEBAIFRFU1QoV1RGX0Zp
eGVkVmVjdG9yLCBNb3ZlQXNzaWduKQogCiAgICAgRml4ZWRWZWN0b3I8dW5zaWduZWQ+IHZlYzI7
CiAgICAgdmVjMiA9IFdURk1vdmUodmVjMSk7Ci0gICAgRVhQRUNUX0VRKHZlYzEuc2l6ZSgpLCAw
VSk7Ci0gICAgRVhQRUNUX0VRKHZlYzIuc2l6ZSgpLCAzVSk7CisgICAgRVhQRUNUX0VRKDBVLCB2
ZWMxLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDNVLCB2ZWMyLnNpemUoKSk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHZlYzIuc2l6ZSgpOyArK2kpCi0gICAgICAgIEVYUEVDVF9FUSh2
ZWMyW2ldLCBpKTsKKyAgICAgICAgRVhQRUNUX0VRKGksIHZlYzJbaV0pOwogfQogCiBURVNUKFdU
Rl9GaXhlZFZlY3RvciwgTW92ZVZlY3RvcikKIHsKICAgICBhdXRvIHZlYzEgPSBWZWN0b3I8TW92
ZU9ubHk+Ojpmcm9tKE1vdmVPbmx5KDApLCBNb3ZlT25seSgxKSwgTW92ZU9ubHkoMiksIE1vdmVP
bmx5KDMpKTsKLSAgICBFWFBFQ1RfRVEodmVjMS5zaXplKCksIDRVKTsKKyAgICBFWFBFQ1RfRVEo
NFUsIHZlYzEuc2l6ZSgpKTsKICAgICBGaXhlZFZlY3RvcjxNb3ZlT25seT4gdmVjMihXVEZNb3Zl
KHZlYzEpKTsKLSAgICBFWFBFQ1RfRVEodmVjMS5zaXplKCksIDBVKTsKLSAgICBFWFBFQ1RfRVEo
dmVjMi5zaXplKCksIDRVKTsKKyAgICBFWFBFQ1RfRVEoMFUsIHZlYzEuc2l6ZSgpKTsKKyAgICBF
WFBFQ1RfRVEoNFUsIHZlYzIuc2l6ZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsg
aW5kZXggPCB2ZWMyLnNpemUoKTsgKytpbmRleCkKLSAgICAgICAgRVhQRUNUX0VRKHZlYzJbaW5k
ZXhdLnZhbHVlKCksIGluZGV4KTsKKyAgICAgICAgRVhQRUNUX0VRKGluZGV4LCB2ZWMyW2luZGV4
XS52YWx1ZSgpKTsKIH0KIAogVEVTVChXVEZfRml4ZWRWZWN0b3IsIE1vdmVBc3NpZ25WZWN0b3Ip
CkBAIC0xNjIsMTMgKzE2MiwxMyBAQCBURVNUKFdURl9GaXhlZFZlY3RvciwgTW92ZUFzc2lnblZl
Y3RvcikKICAgICBGaXhlZFZlY3RvcjxNb3ZlT25seT4gdmVjMjsKICAgICB7CiAgICAgICAgIGF1
dG8gdmVjMSA9IFZlY3RvcjxNb3ZlT25seT46OmZyb20oTW92ZU9ubHkoMCksIE1vdmVPbmx5KDEp
LCBNb3ZlT25seSgyKSwgTW92ZU9ubHkoMykpOwotICAgICAgICBFWFBFQ1RfRVEodmVjMS5zaXpl
KCksIDRVKTsKKyAgICAgICAgRVhQRUNUX0VRKDRVLCB2ZWMxLnNpemUoKSk7CiAgICAgICAgIHZl
YzIgPSBXVEZNb3ZlKHZlYzEpOwotICAgICAgICBFWFBFQ1RfRVEodmVjMS5zaXplKCksIDBVKTsK
KyAgICAgICAgRVhQRUNUX0VRKDBVLCB2ZWMxLnNpemUoKSk7CiAgICAgfQotICAgIEVYUEVDVF9F
USh2ZWMyLnNpemUoKSwgNFUpOworICAgIEVYUEVDVF9FUSg0VSwgdmVjMi5zaXplKCkpOwogICAg
IGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IHZlYzIuc2l6ZSgpOyArK2luZGV4KQot
ICAgICAgICBFWFBFQ1RfRVEodmVjMltpbmRleF0udmFsdWUoKSwgaW5kZXgpOworICAgICAgICBF
WFBFQ1RfRVEoaW5kZXgsIHZlYzJbaW5kZXhdLnZhbHVlKCkpOwogfQogCiBURVNUKFdURl9GaXhl
ZFZlY3RvciwgU3dhcCkKQEAgLTE4MCwxMCArMTgwLDEwIEBAIFRFU1QoV1RGX0ZpeGVkVmVjdG9y
LCBTd2FwKQogCiAgICAgRml4ZWRWZWN0b3I8dW5zaWduZWQ+IHZlYzI7CiAgICAgdmVjMi5zd2Fw
KHZlYzEpOwotICAgIEVYUEVDVF9FUSh2ZWMxLnNpemUoKSwgMFUpOwotICAgIEVYUEVDVF9FUSh2
ZWMyLnNpemUoKSwgM1UpOworICAgIEVYUEVDVF9FUSgwVSwgdmVjMS5zaXplKCkpOworICAgIEVY
UEVDVF9FUSgzVSwgdmVjMi5zaXplKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2
ZWMyLnNpemUoKTsgKytpKQotICAgICAgICBFWFBFQ1RfRVEodmVjMltpXSwgaSk7CisgICAgICAg
IEVYUEVDVF9FUShpLCB2ZWMyW2ldKTsKIH0KIAogVEVTVChXVEZfRml4ZWRWZWN0b3IsIEl0ZXJh
dG9yRm9yKQpAQCAtMTk1LDcgKzE5NSw3IEBAIFRFU1QoV1RGX0ZpeGVkVmVjdG9yLCBJdGVyYXRv
ckZvcikKIAogICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICBmb3IgKGF1dG8gaXRlciA9IHZl
YzEuYmVnaW4oKTsgaXRlciAhPSB2ZWMxLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgRVhQRUNU
X0VRKCppdGVyLCBpbmRleCk7CisgICAgICAgIEVYUEVDVF9FUShpbmRleCwgKml0ZXIpOwogICAg
ICAgICArK2luZGV4OwogICAgIH0KIH0KQEAgLTIxMCw3ICsyMTAsNyBAQCBURVNUKFdURl9GaXhl
ZFZlY3RvciwgUmV2ZXJzZSkKICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgZm9yIChhdXRv
IGl0ZXIgPSB2ZWMxLnJiZWdpbigpOyBpdGVyICE9IHZlYzEucmVuZCgpOyArK2l0ZXIpIHsKICAg
ICAgICAgKytpbmRleDsKLSAgICAgICAgRVhQRUNUX0VRKCppdGVyLCAzVSAtIGluZGV4KTsKKyAg
ICAgICAgRVhQRUNUX0VRKDNVIC0gaW5kZXgsICppdGVyKTsKICAgICB9CiB9CiAKQEAgLTIyMCw3
ICsyMjAsNyBAQCBURVNUKFdURl9GaXhlZFZlY3RvciwgRmlsbCkKICAgICB2ZWMxLmZpbGwoNDIp
OwogCiAgICAgZm9yIChhdXRvJiB2YWx1ZSA6IHZlYzEpCi0gICAgICAgIEVYUEVDVF9FUSh2YWx1
ZSwgNDJVKTsKKyAgICAgICAgRVhQRUNUX0VRKDQyVSwgdmFsdWUpOwogfQogCiBzdHJ1Y3QgRGVz
dHJ1Y3Rvck9ic2VydmVyIHsKQEAgLTI5MywxNCArMjkzLDE0IEBAIFRFU1QoV1RGX0ZpeGVkVmVj
dG9yLCBNb3ZlS2VlcHNEYXRhKQogICAgICAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVjMSgz
KTsKICAgICAgICAgYXV0byogZGF0YTEgPSB2ZWMxLmRhdGEoKTsKICAgICAgICAgRml4ZWRWZWN0
b3I8dW5zaWduZWQ+IHZlYzIoV1RGTW92ZSh2ZWMxKSk7Ci0gICAgICAgIEVYUEVDVF9FUSh2ZWMy
LmRhdGEoKSwgZGF0YTEpOworICAgICAgICBFWFBFQ1RfRVEoZGF0YTEsIHZlYzIuZGF0YSgpKTsK
ICAgICB9CiAgICAgewogICAgICAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVjMSgzKTsKICAg
ICAgICAgYXV0byogZGF0YTEgPSB2ZWMxLmRhdGEoKTsKICAgICAgICAgRml4ZWRWZWN0b3I8dW5z
aWduZWQ+IHZlYzI7CiAgICAgICAgIHZlYzIgPSBXVEZNb3ZlKHZlYzEpOwotICAgICAgICBFWFBF
Q1RfRVEodmVjMi5kYXRhKCksIGRhdGExKTsKKyAgICAgICAgRVhQRUNUX0VRKGRhdGExLCB2ZWMy
LmRhdGEoKSk7CiAgICAgfQogfQogCkBAIC0zMTEsOCArMzExLDggQEAgVEVTVChXVEZfRml4ZWRW
ZWN0b3IsIE1vdmVLZWVwc0RhdGFOZXN0ZWQpCiAgICAgICAgIHZlYzEuYXBwZW5kKEZpeGVkVmVj
dG9yPHVuc2lnbmVkPigzKSk7CiAgICAgICAgIGF1dG8qIGRhdGExID0gdmVjMVswXS5kYXRhKCk7
CiAgICAgICAgIEZpeGVkVmVjdG9yPEZpeGVkVmVjdG9yPHVuc2lnbmVkPj4gdmVjMihXVEZNb3Zl
KHZlYzEpKTsKLSAgICAgICAgRVhQRUNUX0VRKHZlYzIuc2l6ZSgpLCAxVSk7Ci0gICAgICAgIEVY
UEVDVF9FUSh2ZWMyWzBdLmRhdGEoKSwgZGF0YTEpOworICAgICAgICBFWFBFQ1RfRVEoMVUsIHZl
YzIuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGRhdGExLCB2ZWMyWzBdLmRhdGEoKSk7CiAg
ICAgfQogICAgIHsKICAgICAgICAgVmVjdG9yPEZpeGVkVmVjdG9yPHVuc2lnbmVkPj4gdmVjMTsK
QEAgLTMyMCw4ICszMjAsMzggQEAgVEVTVChXVEZfRml4ZWRWZWN0b3IsIE1vdmVLZWVwc0RhdGFO
ZXN0ZWQpCiAgICAgICAgIGF1dG8qIGRhdGExID0gdmVjMVswXS5kYXRhKCk7CiAgICAgICAgIEZp
eGVkVmVjdG9yPEZpeGVkVmVjdG9yPHVuc2lnbmVkPj4gdmVjMjsKICAgICAgICAgdmVjMiA9IFdU
Rk1vdmUodmVjMSk7Ci0gICAgICAgIEVYUEVDVF9FUSh2ZWMyLnNpemUoKSwgMVUpOwotICAgICAg
ICBFWFBFQ1RfRVEodmVjMlswXS5kYXRhKCksIGRhdGExKTsKKyAgICAgICAgRVhQRUNUX0VRKDFV
LCB2ZWMyLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUShkYXRhMSwgdmVjMlswXS5kYXRhKCkp
OworICAgIH0KK30KKworVEVTVChXVEZfRml4ZWRWZWN0b3IsIE9mZnNldCkKK3sKKyAgICBFWFBF
Q1RfRVEoMCwgRml4ZWRWZWN0b3I8dW5zaWduZWQ+OjpvZmZzZXRPZlN0b3JhZ2UoKSk7CisgICAg
RVhQRUNUX0VRKDQsIEZpeGVkVmVjdG9yPHVuc2lnbmVkPjo6U3RvcmFnZTo6b2Zmc2V0T2ZEYXRh
KCkpOworICAgIEVYUEVDVF9FUSgwLCBGaXhlZFZlY3Rvcjx2b2lkKj46Om9mZnNldE9mU3RvcmFn
ZSgpKTsKKyAgICBFWFBFQ1RfRVEoc2l6ZW9mKHZvaWQqKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEZpeGVkVmVjdG9yPHZvaWQqPjo6U3RvcmFnZTo6b2Zmc2V0T2ZEYXRhKCkpKTsKK30KKworVEVT
VChXVEZfRml4ZWRWZWN0b3IsIEVxdWFsKQoreworICAgIHsKKyAgICAgICAgRml4ZWRWZWN0b3I8
dW5zaWduZWQ+IHZlYzEoMTApOworICAgICAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVjMigx
MCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAxMDsgKytpKSB7CisgICAgICAg
ICAgICB2ZWMxW2ldID0gaTsKKyAgICAgICAgICAgIHZlYzJbaV0gPSBpOworICAgICAgICB9Cisg
ICAgICAgIEVYUEVDVF9FUSh2ZWMyLCB2ZWMxKTsKKyAgICAgICAgdmVjMVswXSA9IDQyOworICAg
ICAgICBFWFBFQ1RfTkUodmVjMSwgdmVjMik7CisgICAgfQorICAgIHsKKyAgICAgICAgRml4ZWRW
ZWN0b3I8dW5zaWduZWQ+IHZlYzE7CisgICAgICAgIEZpeGVkVmVjdG9yPHVuc2lnbmVkPiB2ZWMy
OworICAgICAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVjMygwKTsKKyAgICAgICAgRVhQRUNU
X0VRKHZlYzIsIHZlYzEpOworICAgICAgICBFWFBFQ1RfRVEodmVjMywgdmVjMSk7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZDb3VudGVk
Rml4ZWRWZWN0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmQ291bnRl
ZEZpeGVkVmVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MmE5NDBlZTA4OWNjYzE2MmY4MDIzZWMwYjJm
MTljZDFjYzgyM2FkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvUmVmQ291bnRlZEZpeGVkVmVjdG9yLmNwcApAQCAtMCwwICsxLDI3OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIk1vdmVPbmx5LmgiCisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWRGaXhlZFZlY3Rvci5oPgorCituYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CisKK1RFU1QoV1RGX1JlZkNvdW50ZWRGaXhlZFZlY3RvciwgRW1wdHkpCit7CisgICAg
YXV0byB2ZWN0b3IgPSBSZWZDb3VudGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+OjpjcmVhdGUoMCk7
CisgICAgRVhQRUNUX1RSVUUodmVjdG9yLT5pc0VtcHR5KCkpOworICAgIEVYUEVDVF9FUSgwVSwg
dmVjdG9yLT5zaXplKCkpOworfQorCitURVNUKFdURl9SZWZDb3VudGVkRml4ZWRWZWN0b3IsIEl0
ZXJhdG9yKQoreworICAgIGF1dG8gaW50VmVjdG9yID0gUmVmQ291bnRlZEZpeGVkVmVjdG9yPHVu
c2lnbmVkPjo6Y3JlYXRlKDQpOworICAgIGludFZlY3Rvci5nZXQoKVswXSA9IDEwOworICAgIGlu
dFZlY3Rvci5nZXQoKVsxXSA9IDExOworICAgIGludFZlY3Rvci5nZXQoKVsyXSA9IDEyOworICAg
IGludFZlY3Rvci5nZXQoKVszXSA9IDEzOworCisgICAgYXV0byBpdCA9IGludFZlY3Rvci0+YmVn
aW4oKTsKKyAgICBhdXRvIGVuZCA9IGludFZlY3Rvci0+ZW5kKCk7CisgICAgRVhQRUNUX1RSVUUo
ZW5kICE9IGl0KTsKKworICAgIEVYUEVDVF9FUSgxMFUsICppdCk7CisgICAgKytpdDsKKyAgICBF
WFBFQ1RfRVEoMTFVLCAqaXQpOworICAgICsraXQ7CisgICAgRVhQRUNUX0VRKDEyVSwgKml0KTsK
KyAgICArK2l0OworICAgIEVYUEVDVF9FUSgxM1UsICppdCk7CisgICAgKytpdDsKKworICAgIEVY
UEVDVF9UUlVFKGVuZCA9PSBpdCk7Cit9CisKK1RFU1QoV1RGX1JlZkNvdW50ZWRGaXhlZFZlY3Rv
ciwgT3ZlcmxvYWRlZE9wZXJhdG9yQW1wZXJzYW5kKQoreworICAgIHN0cnVjdCBUZXN0IHsKKyAg
ICBwcml2YXRlOgorICAgICAgICBUZXN0KiBvcGVyYXRvciYoKSA9IGRlbGV0ZTsKKyAgICB9Owor
CisgICAgYXV0byB2ZWN0b3IgPSBSZWZDb3VudGVkRml4ZWRWZWN0b3I8VGVzdD46OmNyZWF0ZSgx
KTsKKyAgICB2ZWN0b3IuZ2V0KClbMF0gPSBUZXN0KCk7Cit9CisKK1RFU1QoV1RGX1JlZkNvdW50
ZWRGaXhlZFZlY3RvciwgQ29weSkKK3sKKyAgICBhdXRvIHZlYzEgPSBSZWZDb3VudGVkRml4ZWRW
ZWN0b3I8dW5zaWduZWQ+OjpjcmVhdGUoMyk7CisgICAgdmVjMS5nZXQoKVswXSA9IDA7CisgICAg
dmVjMS5nZXQoKVsxXSA9IDE7CisgICAgdmVjMS5nZXQoKVsyXSA9IDI7CisKKyAgICBhdXRvIHZl
YzIgPSBSZWZDb3VudGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+OjpjcmVhdGUodmVjMS0+YmVnaW4o
KSwgdmVjMS0+ZW5kKCkpOworICAgIEVYUEVDVF9FUSgzVSwgdmVjMS0+c2l6ZSgpKTsKKyAgICBF
WFBFQ1RfRVEoM1UsIHZlYzItPnNpemUoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHZlYzEtPnNpemUoKTsgKytpKSB7CisgICAgICAgIEVYUEVDVF9FUShpLCB2ZWMxLmdldCgpW2ld
KTsKKyAgICAgICAgRVhQRUNUX0VRKGksIHZlYzIuZ2V0KClbaV0pOworICAgIH0KKyAgICB2ZWMx
LmdldCgpWzJdID0gNDI7CisgICAgRVhQRUNUX0VRKDQyVSwgdmVjMS5nZXQoKVsyXSk7CisgICAg
RVhQRUNUX0VRKDJVLCB2ZWMyLmdldCgpWzJdKTsKK30KKworVEVTVChXVEZfUmVmQ291bnRlZEZp
eGVkVmVjdG9yLCBDb3B5VmVjdG9yKQoreworICAgIGF1dG8gdmVjMSA9IFZlY3Rvcjx1bnNpZ25l
ZD46OmZyb20oMCwgMSwgMiwgMyk7CisgICAgRVhQRUNUX0VRKDRVLCB2ZWMxLnNpemUoKSk7Cisg
ICAgYXV0byB2ZWMyID0gUmVmQ291bnRlZEZpeGVkVmVjdG9yPHVuc2lnbmVkPjo6Y3JlYXRlRnJv
bVZlY3Rvcih2ZWMxKTsKKyAgICBFWFBFQ1RfRVEoNFUsIHZlYzEuc2l6ZSgpKTsKKyAgICBFWFBF
Q1RfRVEoNFUsIHZlYzItPnNpemUoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZl
YzEuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgRVhQRUNUX0VRKGksIHZlYzFbaV0pOworICAgICAg
ICBFWFBFQ1RfRVEoaSwgdmVjMi5nZXQoKVtpXSk7CisgICAgfQorICAgIHZlYzFbMl0gPSA0MjsK
KyAgICBFWFBFQ1RfRVEoNDJVLCB2ZWMxWzJdKTsKKyAgICBFWFBFQ1RfRVEoMlUsIHZlYzIuZ2V0
KClbMl0pOworfQorCitURVNUKFdURl9SZWZDb3VudGVkRml4ZWRWZWN0b3IsIE1vdmVWZWN0b3Ip
Cit7CisgICAgYXV0byB2ZWMxID0gVmVjdG9yPE1vdmVPbmx5Pjo6ZnJvbShNb3ZlT25seSgwKSwg
TW92ZU9ubHkoMSksIE1vdmVPbmx5KDIpLCBNb3ZlT25seSgzKSk7CisgICAgRVhQRUNUX0VRKDRV
LCB2ZWMxLnNpemUoKSk7CisgICAgYXV0byB2ZWMyID0gUmVmQ291bnRlZEZpeGVkVmVjdG9yPE1v
dmVPbmx5Pjo6Y3JlYXRlRnJvbVZlY3RvcihXVEZNb3ZlKHZlYzEpKTsKKyAgICBFWFBFQ1RfRVEo
MFUsIHZlYzEuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoNFUsIHZlYzItPnNpemUoKSk7CisgICAg
Zm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgdmVjMi0+c2l6ZSgpOyArK2luZGV4KQor
ICAgICAgICBFWFBFQ1RfRVEoaW5kZXgsIHZlYzIuZ2V0KClbaW5kZXhdLnZhbHVlKCkpOworfQor
CitURVNUKFdURl9SZWZDb3VudGVkRml4ZWRWZWN0b3IsIEl0ZXJhdG9yRm9yKQoreworICAgIGF1
dG8gdmVjMSA9IFJlZkNvdW50ZWRGaXhlZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0ZSgzKTsKKyAg
ICB2ZWMxLmdldCgpWzBdID0gMDsKKyAgICB2ZWMxLmdldCgpWzFdID0gMTsKKyAgICB2ZWMxLmdl
dCgpWzJdID0gMjsKKworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICBmb3IgKGF1dG8gaXRl
ciA9IHZlYzEtPmJlZ2luKCk7IGl0ZXIgIT0gdmVjMS0+ZW5kKCk7ICsraXRlcikgeworICAgICAg
ICBFWFBFQ1RfRVEoaW5kZXgsICppdGVyKTsKKyAgICAgICAgKytpbmRleDsKKyAgICB9Cit9CisK
K1RFU1QoV1RGX1JlZkNvdW50ZWRGaXhlZFZlY3RvciwgUmV2ZXJzZSkKK3sKKyAgICBhdXRvIHZl
YzEgPSBSZWZDb3VudGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+OjpjcmVhdGUoMyk7CisgICAgdmVj
MS5nZXQoKVswXSA9IDA7CisgICAgdmVjMS5nZXQoKVsxXSA9IDE7CisgICAgdmVjMS5nZXQoKVsy
XSA9IDI7CisKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgZm9yIChhdXRvIGl0ZXIgPSB2
ZWMxLT5yYmVnaW4oKTsgaXRlciAhPSB2ZWMxLT5yZW5kKCk7ICsraXRlcikgeworICAgICAgICAr
K2luZGV4OworICAgICAgICBFWFBFQ1RfRVEoM1UgLSBpbmRleCwgKml0ZXIpOworICAgIH0KK30K
KworVEVTVChXVEZfUmVmQ291bnRlZEZpeGVkVmVjdG9yLCBGaWxsKQoreworICAgIGF1dG8gdmVj
MSA9IFJlZkNvdW50ZWRGaXhlZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0ZSgzKTsKKyAgICB2ZWMx
LT5maWxsKDQyKTsKKworICAgIGZvciAoYXV0byYgdmFsdWUgOiB2ZWMxLmdldCgpKQorICAgICAg
ICBFWFBFQ1RfRVEodmFsdWUsIDQyVSk7Cit9CisKK3N0cnVjdCBEZXN0cnVjdG9yT2JzZXJ2ZXIg
eworICAgIERlc3RydWN0b3JPYnNlcnZlcigpID0gZGVmYXVsdDsKKworICAgIERlc3RydWN0b3JP
YnNlcnZlcihib29sKiBkZXN0cnVjdGVkKQorICAgICAgICA6IGRlc3RydWN0ZWQoZGVzdHJ1Y3Rl
ZCkKKyAgICB7CisgICAgfQorCisgICAgfkRlc3RydWN0b3JPYnNlcnZlcigpCisgICAgeworICAg
ICAgICBpZiAoZGVzdHJ1Y3RlZCkKKyAgICAgICAgICAgICpkZXN0cnVjdGVkID0gdHJ1ZTsKKyAg
ICB9CisKKyAgICBEZXN0cnVjdG9yT2JzZXJ2ZXIoRGVzdHJ1Y3Rvck9ic2VydmVyJiYgb3RoZXIp
CisgICAgICAgIDogZGVzdHJ1Y3RlZChvdGhlci5kZXN0cnVjdGVkKQorICAgIHsKKyAgICAgICAg
b3RoZXIuZGVzdHJ1Y3RlZCA9IG51bGxwdHI7CisgICAgfQorCisgICAgRGVzdHJ1Y3Rvck9ic2Vy
dmVyJiBvcGVyYXRvcj0oRGVzdHJ1Y3Rvck9ic2VydmVyJiYgb3RoZXIpCisgICAgeworICAgICAg
ICBkZXN0cnVjdGVkID0gb3RoZXIuZGVzdHJ1Y3RlZDsKKyAgICAgICAgb3RoZXIuZGVzdHJ1Y3Rl
ZCA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBib29sKiBk
ZXN0cnVjdGVkIHsgbnVsbHB0ciB9OworfTsKKworVEVTVChXVEZfUmVmQ291bnRlZEZpeGVkVmVj
dG9yLCBEZXN0cnVjdG9yKQoreworICAgIFZlY3Rvcjxib29sPiBmbGFncygzLCBmYWxzZSk7Cisg
ICAgeworICAgICAgICBhdXRvIHZlY3RvciA9IFJlZkNvdW50ZWRGaXhlZFZlY3RvcjxEZXN0cnVj
dG9yT2JzZXJ2ZXI+OjpjcmVhdGUoZmxhZ3Muc2l6ZSgpKTsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGZsYWdzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgdmVjdG9yLmdldCgp
W2ldID0gRGVzdHJ1Y3Rvck9ic2VydmVyKCZmbGFnc1tpXSk7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBmbGFncy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIEVYUEVDVF9GQUxT
RShmbGFnc1tpXSk7CisgICAgfQorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmbGFncy5z
aXplKCk7ICsraSkKKyAgICAgICAgRVhQRUNUX1RSVUUoZmxhZ3NbaV0pOworfQorCitURVNUKFdU
Rl9SZWZDb3VudGVkRml4ZWRWZWN0b3IsIERlc3RydWN0b3JBZnRlck1vdmUpCit7CisgICAgVmVj
dG9yPGJvb2w+IGZsYWdzKDMsIGZhbHNlKTsKKyAgICB7CisgICAgICAgIFJlZlB0cjxSZWZDb3Vu
dGVkRml4ZWRWZWN0b3I8RGVzdHJ1Y3Rvck9ic2VydmVyPj4gb3V0ZXJWZWN0b3I7CisgICAgICAg
IHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWZDb3VudGVkRml4ZWRWZWN0b3I8RGVzdHJ1Y3Rvck9i
c2VydmVyPj4gb3V0ZXJWZWN0b3IyOworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGF1
dG8gdmVjdG9yID0gUmVmQ291bnRlZEZpeGVkVmVjdG9yPERlc3RydWN0b3JPYnNlcnZlcj46OmNy
ZWF0ZShmbGFncy5zaXplKCkpOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBmbGFncy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgdmVjdG9yLmdldCgp
W2ldID0gRGVzdHJ1Y3Rvck9ic2VydmVyKCZmbGFnc1tpXSk7CisgICAgICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGZsYWdzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgICAg
ICAgICBFWFBFQ1RfRkFMU0UoZmxhZ3NbaV0pOworICAgICAgICAgICAgICAgIG91dGVyVmVjdG9y
ID0gdmVjdG9yLmNvcHlSZWYoKTsKKyAgICAgICAgICAgICAgICBvdXRlclZlY3RvcjIgPSB2ZWN0
b3IuY29weVJlZigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGZsYWdzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgICAgIEVYUEVDVF9GQUxT
RShmbGFnc1tpXSk7CisgICAgICAgICAgICBFWFBFQ1RfRVEob3V0ZXJWZWN0b3IuZ2V0KCksIG91
dGVyVmVjdG9yMi5nZXQoKSk7CisgICAgICAgIH0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGZsYWdzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGZsYWdz
W2ldKTsKKyAgICB9CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZsYWdzLnNpemUoKTsg
KytpKQorICAgICAgICBFWFBFQ1RfVFJVRShmbGFnc1tpXSk7Cit9CisKK1RFU1QoV1RGX1JlZkNv
dW50ZWRGaXhlZFZlY3RvciwgQmFzaWMpCit7CisgICAgc3RkOjphcnJheTx1bnNpZ25lZCwgND4g
YXJyYXkgeyB7CisgICAgICAgIDAsIDEsIDIsIDMKKyAgICB9IH07CisgICAgeworICAgICAgICBh
dXRvIHZlY3RvciA9IFJlZkNvdW50ZWRGaXhlZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0ZShhcnJh
eS5iZWdpbigpLCBhcnJheS5lbmQoKSk7CisgICAgICAgIEVYUEVDVF9FUSg0VSwgdmVjdG9yLT5z
aXplKCkpOworICAgICAgICBFWFBFQ1RfRVEoMFUsIHZlY3Rvci0+YXQoMCkpOworICAgICAgICBF
WFBFQ1RfRVEoMVUsIHZlY3Rvci0+YXQoMSkpOworICAgICAgICBFWFBFQ1RfRVEoMlUsIHZlY3Rv
ci0+YXQoMikpOworICAgICAgICBFWFBFQ1RfRVEoM1UsIHZlY3Rvci0+YXQoMykpOworICAgIH0K
K30KKworVEVTVChXVEZfUmVmQ291bnRlZEZpeGVkVmVjdG9yLCBDbG9uZSkKK3sKKyAgICBzdGQ6
OmFycmF5PHVuc2lnbmVkLCA0PiBhcnJheSB7IHsKKyAgICAgICAgMCwgMSwgMiwgMworICAgIH0g
fTsKKyAgICB7CisgICAgICAgIGF1dG8gdmVjdG9yID0gUmVmQ291bnRlZEZpeGVkVmVjdG9yPHVu
c2lnbmVkPjo6Y3JlYXRlKGFycmF5LmJlZ2luKCksIGFycmF5LmVuZCgpKTsKKyAgICAgICAgRVhQ
RUNUX0VRKDRVLCB2ZWN0b3ItPnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUSgwVSwgdmVjdG9y
LT5hdCgwKSk7CisgICAgICAgIEVYUEVDVF9FUSgxVSwgdmVjdG9yLT5hdCgxKSk7CisgICAgICAg
IEVYUEVDVF9FUSgyVSwgdmVjdG9yLT5hdCgyKSk7CisgICAgICAgIEVYUEVDVF9FUSgzVSwgdmVj
dG9yLT5hdCgzKSk7CisKKyAgICAgICAgYXV0byBjbG9uZWQgPSB2ZWN0b3ItPmNsb25lKCk7Cisg
ICAgICAgIEVYUEVDVF9FUSg0VSwgY2xvbmVkLT5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVEo
MFUsIGNsb25lZC0+YXQoMCkpOworICAgICAgICBFWFBFQ1RfRVEoMVUsIGNsb25lZC0+YXQoMSkp
OworICAgICAgICBFWFBFQ1RfRVEoMlUsIGNsb25lZC0+YXQoMikpOworICAgICAgICBFWFBFQ1Rf
RVEoM1UsIGNsb25lZC0+YXQoMykpOworICAgIH0KK30KKworVEVTVChXVEZfUmVmQ291bnRlZEZp
eGVkVmVjdG9yLCBFcXVhbCkKK3sKKyAgICBhdXRvIHZlYzEgPSBSZWZDb3VudGVkRml4ZWRWZWN0
b3I8dW5zaWduZWQ+OjpjcmVhdGUoMTApOworICAgIGF1dG8gdmVjMiA9IFJlZkNvdW50ZWRGaXhl
ZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0ZSgxMCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IDEwOyArK2kpIHsKKyAgICAgICAgdmVjMS5nZXQoKVtpXSA9IGk7CisgICAgICAgIHZlYzIu
Z2V0KClbaV0gPSBpOworICAgIH0KKyAgICBFWFBFQ1RfRVEodmVjMS5nZXQoKSwgdmVjMi5nZXQo
KSk7CisgICAgdmVjMS5nZXQoKVswXSA9IDQyOworICAgIEVYUEVDVF9ORSh2ZWMxLmdldCgpLCB2
ZWMyLmdldCgpKTsKK30KKworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446924</attachid>
            <date>2021-12-11 23:47:52 -0800</date>
            <delta_ts>2021-12-14 10:42:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234201-20211211234751.patch</filename>
            <type>text/plain</type>
            <size>90013</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MTc3YTdmMmEwODU3YTJiMjNhM2EzZTg4OTIzNTEyZDg4MGE2MDljLi45ODgzMzU5ZDRkZWQ0MzY5
YzE0NzliZTc5YTUwMTllZDJkZGNmYmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MiBAQAorMjAyMS0xMi0xMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtXVEZdIEludHJvZHVjZSBUcmFpbGluZ0FycmF5CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQyMDEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgVGhyZWFkU2FmZVJlZkNvdW50
ZWRGaXhlZFZlY3RvciBpbiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBhbmQgV2FzbTo6TExJ
bnRDYWxsZWVzLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6YmFzZWxpbmVKSVRDb25zdGFudFBvb2wpOgorICAgICAgICAqIGJ5dGVj
b2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6T2JqZWN0
UHJvcGVydHlDb25kaXRpb25TZXQ6Om1lcmdlZFdpdGggY29uc3QpOgorICAgICAgICAoSlNDOjpP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6ZHVtcEluQ29udGV4dCBjb25zdCk6CisgICAgICAg
IChKU0M6Ok9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0Ojppc1ZhbGlkQW5kV2F0Y2hhYmxlIGNv
bnN0KToKKyAgICAgICAgKiBieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oOgor
ICAgICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6aW52YWxpZCk6CisgICAg
ICAgIChKU0M6Ok9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6aXNWYWxpZCBjb25zdCk6CisgICAgICAg
IChKU0M6Ok9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjpzaXplIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6OmJlZ2luIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6OmVuZCBjb25zdCk6CisgICAgICAgIChK
U0M6Ok9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0OjpPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNl
dCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0Ojpy
ZWxlYXNlUmF3UG9pbnRlcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok9iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0OjphZG9wdFJhd1BvaW50ZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpP
YmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6ZnJvbVJhd1BvaW50ZXIpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldDo6RGF0YTo6RGF0YSk6IERlbGV0
ZWQuCisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZUFu
ZExpbmtXaXRob3V0RmluYWxpemluZyk6CisgICAgICAgICogaml0L0pJVElubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6SklUOjpsb2FkQ29uc3RhbnQpOgorICAgICAgICAqIGxsaW50L0xMSW50T2Zm
c2V0c0V4dHJhY3Rvci5jcHA6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAg
ICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHdhc20vV2Fz
bUNhbGxlZS5oOgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludENhbGxlZXM6OmNyZWF0ZSk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6Oldhc206OkxMSW50Q2FsbGVlczo6YXQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludENhbGxlZXM6OmRhdGEgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpXYXNtOjpMTEludENhbGxlZXM6OkxMSW50Q2FsbGVlcyk6IERl
bGV0ZWQuCisgICAgICAgICogd2FzbS9XYXNtQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6Q29kZUJsb2NrOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpXYXNtOjpDb2RlQmxvY2s6
OkNvZGVCbG9jayk6CisgICAgICAgICogd2FzbS9XYXNtQ29kZUJsb2NrLmg6CisgICAgICAgICog
d2FzbS9XYXNtTW9kdWxlLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6TW9kdWxlOjpNb2R1bGUp
OgorICAgICAgICAoSlNDOjpXYXNtOjpNb2R1bGU6OmdldE9yQ3JlYXRlQ29kZUJsb2NrKToKKyAg
ICAgICAgKiB3YXNtL1dhc21Nb2R1bGUuaDoKKwogMjAyMS0xMi0xMCAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFdhc20gY2F0Y2ggdGh1bmsgc2hv
dWxkIGJlIEpJVCBjb2RlIHRvIHVzZSBFeGNlcHRpb25IYW5kbGVyUHRyVGFnCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA2Mjc1
NzZkZmVhZGIyOTcyMzhhZjVlNTM0ZGVmYzc3ZDAxNTM4YzIuLjMwNzNlMjUzNmVhZDNjN2RiYmUx
ODFmNTlkZTQwNWE4NGU5NzI0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzkgQEAKKzIwMjEtMTItMTEgIFl1
c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBJbnRyb2R1
Y2UgVHJhaWxpbmdBcnJheQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM0MjAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIFRyYWlsaW5nQXJyYXk8RGVyaXZlZCwgVD4s
IHdoaWNoIGFsbG93cyB1cyB0byBpbXBsZW1lbnQgY2xhc3MKKyAgICAgICAgd2l0aCB0cmFpbGlu
ZyBhcnJheSBlYXNpbHkuIEJ5IHVzaW5nIHRoaXMsIHdlIGltcGxlbWVudCBFbWJlZGRlZEZpeGVk
VmVjdG9yIGFuZCBSZWZDb3VudGVkRml4ZWRWZWN0b3IuCisgICAgICAgIFBsdXMsIHdlIHJlcGxh
Y2UgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbiBvZiBGaXhlZFZlY3RvciBmcm9tIFJlZkNvdW50
ZWRBcnJheSB0byBFbWJlZGRlZEZpeGVkVmVjdG9yCisgICAgICAgIHNpbmNlIHJlZi1jb3VudGlu
ZyBpcyBub3QgbmVjZXNzYXJ5LiBUaGlzIGlzIGdyZWF0IGZvciBzd2FwcGluZzogd2hpbGUgUmVm
Q291bnRlZEFycmF5IHdpbGwgZGVjcmVhc2UgcmVmCisgICAgICAgIGFuZCB0b3VjaGluZyBtZW1v
cnkgd2hlbiBkZXN0cnlvaW5nLCBFbWJlZGRlZEZpeGVkVmVjdG9yIGRvZXMgbm90LCBzbyB3ZSBj
YW4ga2VlcCBtZW1vcnkgdW50b3VjaGVkIGlmCisgICAgICAgIEVtYmVkZGVkRml4ZWRWZWN0b3In
cyBUIGlzIFBPRCB3aGVuIGRlc3Ryb3lpbmcuCisKKyAgICAgICAgSW4gYSBzdWJzZXF1ZW50IHBh
dGNoLCB3ZSB3aWxsIHJlbW92ZSBSZWZDb3VudGVkQXJyYXkgYW5kIHVzZSBSZWZDb3VudGVkRml4
ZWRWZWN0b3Igc2luY2UgUmVmQ291bnRlZEZpeGVkVmVjdG9yCisgICAgICAgIGlzIGZvbGxvd2lu
ZyBub3JtYWwgUmVmIC8gUmVmUHRyIHByb3RvY29sLCBzbyBlYXN5IHRvIHVuZGVyc3RhbmQgdGhl
IHNlbWFudGljcy4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvRW1iZWRkZWRGaXhl
ZFZlY3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvRml4ZWRWZWN0b3IuaDoKKyAgICAgICAg
KFdURjo6Rml4ZWRWZWN0b3I6OkZpeGVkVmVjdG9yKToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0
b3I6Om9wZXJhdG9yPSk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpzaXplIGNvbnN0KToK
KyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OmlzRW1wdHkgY29uc3QpOgorICAgICAgICAoV1RG
OjpGaXhlZFZlY3Rvcjo6Ynl0ZVNpemUgY29uc3QpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rv
cjo6ZGF0YSk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpiZWdpbik6CisgICAgICAgIChX
VEY6OkZpeGVkVmVjdG9yOjplbmQpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6cmJlZ2lu
KToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OnJlbmQpOgorICAgICAgICAoV1RGOjpGaXhl
ZFZlY3Rvcjo6cmJlZ2luIGNvbnN0KToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OnJlbmQg
Y29uc3QpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6YXQpOgorICAgICAgICAoV1RGOjpG
aXhlZFZlY3Rvcjo6YXQgY29uc3QpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6b3BlcmF0
b3JbXSk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpvcGVyYXRvcltdIGNvbnN0KToKKyAg
ICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OmZpbGwpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rv
cjo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpvcGVyYXRv
cj09IGNvbnN0KToKKyAgICAgICAgKFdURjo6Rml4ZWRWZWN0b3I6OnN3YXApOgorICAgICAgICAo
V1RGOjpGaXhlZFZlY3Rvcjo6Z2V0U3RvcmFnZSk6CisgICAgICAgICogd3RmL1JlZkNvdW50ZWRG
aXhlZFZlY3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvVHJhaWxpbmdBcnJheS5oOiBBZGRl
ZC4KKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6VHJhaWxpbmdBcnJheSk6CisgICAgICAg
IChXVEY6OlRyYWlsaW5nQXJyYXk6On5UcmFpbGluZ0FycmF5KToKKyAgICAgICAgKFdURjo6VHJh
aWxpbmdBcnJheTo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoV1RGOjpUcmFpbGluZ0FycmF5
OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6aXNFbXB0eSBjb25z
dCk6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6OmJ5dGVTaXplIGNvbnN0KToKKyAgICAg
ICAgKFdURjo6VHJhaWxpbmdBcnJheTo6ZGF0YSk6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJy
YXk6OmRhdGEgY29uc3QpOgorICAgICAgICAoV1RGOjpUcmFpbGluZ0FycmF5OjpiZWdpbik6Cisg
ICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6OmVuZCk6CisgICAgICAgIChXVEY6OlRyYWlsaW5n
QXJyYXk6OmJlZ2luIGNvbnN0KToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6ZW5kIGNv
bnN0KToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6Y2JlZ2luIGNvbnN0KToKKyAgICAg
ICAgKFdURjo6VHJhaWxpbmdBcnJheTo6Y2VuZCBjb25zdCk6CisgICAgICAgIChXVEY6OlRyYWls
aW5nQXJyYXk6OnJiZWdpbik6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6OnJlbmQpOgor
ICAgICAgICAoV1RGOjpUcmFpbGluZ0FycmF5OjpyYmVnaW4gY29uc3QpOgorICAgICAgICAoV1RG
OjpUcmFpbGluZ0FycmF5OjpyZW5kIGNvbnN0KToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJh
eTo6Y3JiZWdpbiBjb25zdCk6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6OmNyZW5kIGNv
bnN0KToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6YXQpOgorICAgICAgICAoV1RGOjpU
cmFpbGluZ0FycmF5OjphdCBjb25zdCk6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6Om9w
ZXJhdG9yW10pOgorICAgICAgICAoV1RGOjpUcmFpbGluZ0FycmF5OjpvcGVyYXRvcltdIGNvbnN0
KToKKyAgICAgICAgKFdURjo6VHJhaWxpbmdBcnJheTo6Zmlyc3QpOgorICAgICAgICAoV1RGOjpU
cmFpbGluZ0FycmF5OjpmaXJzdCBjb25zdCk6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6
Omxhc3QpOgorICAgICAgICAoV1RGOjpUcmFpbGluZ0FycmF5OjpsYXN0IGNvbnN0KToKKyAgICAg
ICAgKFdURjo6VHJhaWxpbmdBcnJheTo6ZmlsbCk6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJy
YXk6Om9mZnNldE9mU2l6ZSk6CisgICAgICAgIChXVEY6OlRyYWlsaW5nQXJyYXk6Om9mZnNldE9m
RGF0YSk6CisKIDIwMjEtMTItMTAgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW21hY09TXSBBZGQgbmV3IHNjcmVlbiBhbmQgd2luZG93IGNhcHR1cmUg
YmFja2VuZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4
IGYyNjZiYjQwYWQwOWJiN2YyYzE4YTdmZDUwZWY5N2Y4MzQxMTkzOWEuLjk2YTE0Zjk2M2YyODhm
YTQ5NDhjMzkyY2NhMGY4MWY4NWQxMzVhNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTU1Nyw3ICs1NTcsNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBw
dWJsaWMgSlNDZWxsIHsKICAgICB2b2lkKiBiYXNlbGluZUpJVENvbnN0YW50UG9vbCgpCiAgICAg
ewogICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2ppdERhdGEgJiYgaml0VHlwZSgpID09IEpJVFR5
cGU6OkJhc2VsaW5lSklUKTsKLSAgICAgICAgcmV0dXJuIG1faml0RGF0YS0+bV9qaXRDb25zdGFu
dFBvb2wuZGF0YSgpOworICAgICAgICByZXR1cm4gbV9qaXREYXRhLT5tX2ppdENvbnN0YW50UG9v
bC5nZXRTdG9yYWdlKCk7CiAgICAgfQogI2VuZGlmCiAgICAgc2l6ZV90IG51bWJlck9mVW5saW5r
ZWRTd2l0Y2hKdW1wVGFibGVzKCkgY29uc3QgeyByZXR1cm4gbV91bmxpbmtlZENvZGUtPm51bWJl
ck9mVW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuY3Bw
CmluZGV4IGQwNDQwNWQ5ZDQyZmQxZjQ4YzRiODlkNWYzNjgyNjM2MWFmZGRmYmQuLjFjNmY1ODU4
Y2FlOWVmNTQ4OWUxOGRmZGNhOWM5YmM1MDEyNGQ2NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0
LmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uU2V0OjptZXJnZWRXaXRoKAogICAgIFZlY3RvcjxPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvbj4gcmVzdWx0OwogICAgIAogICAgIGlmICghaXNFbXB0eSgpKQotICAgICAg
ICByZXN1bHQuYXBwZW5kKG1fZGF0YS0+bV92ZWN0b3IuYmVnaW4oKSwgbV9kYXRhLT5tX3ZlY3Rv
ci5zaXplKCkpOworICAgICAgICByZXN1bHQuYXBwZW5kKG1fZGF0YS0+YmVnaW4oKSwgbV9kYXRh
LT5zaXplKCkpOwogICAgIAogICAgIGZvciAoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24m
IG5ld0NvbmRpdGlvbiA6IG90aGVyKSB7CiAgICAgICAgIGJvb2wgZm91bmRNYXRjaCA9IGZhbHNl
OwpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQ6OmR1
bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvCiAgICAgCiAgICAg
b3V0LnByaW50KCJbIik7CiAgICAgaWYgKG1fZGF0YSkKLSAgICAgICAgb3V0LnByaW50KGxpc3RE
dW1wSW5Db250ZXh0KG1fZGF0YS0+bV92ZWN0b3IsIGNvbnRleHQpKTsKKyAgICAgICAgb3V0LnBy
aW50KGxpc3REdW1wSW5Db250ZXh0KCptX2RhdGEsIGNvbnRleHQpKTsKICAgICBvdXQucHJpbnQo
Il0iKTsKIH0KIApAQCAtMTg5LDcgKzE4OSw3IEBAIGJvb2wgT2JqZWN0UHJvcGVydHlDb25kaXRp
b25TZXQ6OmlzVmFsaWRBbmRXYXRjaGFibGUoKSBjb25zdAogICAgIGlmICghaXNWYWxpZCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBmb3IgKGF1dG8mIGNvbmRpdGlvbiA6IG1fZGF0
YS0+bV92ZWN0b3IpIHsKKyAgICBmb3IgKGF1dG8mIGNvbmRpdGlvbiA6ICptX2RhdGEpIHsKICAg
ICAgICAgaWYgKCFjb25kaXRpb24uaXNXYXRjaGFibGUoKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
T2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oCmluZGV4IGJlNzNmZGI1ZTVhN2E5ZmYx
Yjc1MjcyMDI1MjkzY2I2MmE1ODQ0ZmUuLjI0ZGU1NmZkN2E5MzVhZmM0YzI5M2M0OWQxZTRmODFl
ZWNmNTY4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldC5oCkBAIC0yNyw4ICsyNyw4IEBACiAKICNp
bmNsdWRlICJPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+Ci0jaW5jbHVkZSA8d3RmL0ZpeGVkVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hl
ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkRml4ZWRWZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDMsMTIgKzQzLDE1IEBAIG5hbWVz
cGFjZSBKU0MgewogCiBjbGFzcyBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCB7CiBwdWJsaWM6
Ci0gICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQoKSB7IH0KKyAgICB1c2luZyBDb25kaXRp
b25zID0gVGhyZWFkU2FmZVJlZkNvdW50ZWRGaXhlZFZlY3RvcjxPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvbj47CisKKyAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCgpID0gZGVmYXVsdDsKICAg
ICAKICAgICBzdGF0aWMgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgaW52YWxpZCgpCiAgICAg
ewogICAgICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCByZXN1bHQ7Ci0gICAgICAgIHJl
c3VsdC5tX2RhdGEgPSBhZG9wdFJlZihuZXcgRGF0YSgpKTsKKyAgICAgICAgcmVzdWx0Lm1fZGF0
YSA9IENvbmRpdGlvbnM6OmNyZWF0ZSgwKTsKKyAgICAgICAgQVNTRVJUKCFyZXN1bHQuaXNWYWxp
ZCgpKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCkBAIC01OCwzNyArNjEs
MzcgQEAgY2xhc3MgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgewogICAgICAgICAgICAgcmV0
dXJuIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0KCk7CiAgICAgICAgIAogICAgICAgICBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldCByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdC5tX2RhdGEgPSBh
ZG9wdFJlZihuZXcgRGF0YSgpKTsKLSAgICAgICAgcmVzdWx0Lm1fZGF0YS0+bV92ZWN0b3IgPSBG
aXhlZFZlY3RvcjxPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbj4oV1RGTW92ZSh2ZWN0b3IpKTsKKyAg
ICAgICAgcmVzdWx0Lm1fZGF0YSA9IENvbmRpdGlvbnM6OmNyZWF0ZUZyb21WZWN0b3IoV1RGTW92
ZSh2ZWN0b3IpKTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdC5pc1ZhbGlkKCkpOwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKICAgICBib29sIGlzVmFsaWQoKSBjb25zdAogICAg
IHsKLSAgICAgICAgcmV0dXJuICFtX2RhdGEgfHwgIW1fZGF0YS0+bV92ZWN0b3IuaXNFbXB0eSgp
OworICAgICAgICByZXR1cm4gIW1fZGF0YSB8fCAhbV9kYXRhLT5pc0VtcHR5KCk7CiAgICAgfQog
CiAgICAgYm9vbCBpc1ZhbGlkQW5kV2F0Y2hhYmxlKCkgY29uc3Q7CiAKLSAgICBzaXplX3Qgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YSA/IG1fZGF0YS0+bV92ZWN0b3Iuc2l6ZSgpIDogMDsg
fQorICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhID8gbV9kYXRhLT5zaXpl
KCkgOiAwOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biAhbV9kYXRhOwogICAgIH0KLSAgICAKLSAgICB0eXBlZGVmIGNvbnN0IE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uKiBpdGVyYXRvcjsKLSAgICAKLSAgICBpdGVyYXRvciBiZWdpbigpIGNvbnN0CisK
KyAgICB1c2luZyBjb25zdF9pdGVyYXRvciA9IENvbmRpdGlvbnM6OmNvbnN0X2l0ZXJhdG9yOwor
CisgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKCFt
X2RhdGEpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIG1fZGF0
YS0+bV92ZWN0b3IuYmVnaW4oKTsKKyAgICAgICAgcmV0dXJuIG1fZGF0YS0+Y2JlZ2luKCk7CiAg
ICAgfQotICAgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0CisgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkg
Y29uc3QKICAgICB7CiAgICAgICAgIGlmICghbV9kYXRhKQogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgICAgIHJldHVybiBtX2RhdGEtPm1fdmVjdG9yLmVuZCgpOworICAgICAgICBy
ZXR1cm4gbV9kYXRhLT5jZW5kKCk7CiAgICAgfQogCiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0
CkBAIC0xNTEsNDUgKzE1NCwxNSBAQCBjbGFzcyBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCB7
CiAgICAgCiAgICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQq
KSBjb25zdDsKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKLSAgICAKLSAgICAv
LyBIZWxwZXJzIGZvciB1c2luZyB0aGlzIGluIGEgdW5pb24uCi0gICAgdm9pZCogcmVsZWFzZVJh
d1BvaW50ZXIoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHZvaWQqPihtX2Rh
dGEubGVha1JlZigpKTsKLSAgICB9Ci0gICAgc3RhdGljIE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
U2V0IGFkb3B0UmF3UG9pbnRlcih2b2lkKiByYXdQb2ludGVyKQotICAgIHsKLSAgICAgICAgT2Jq
ZWN0UHJvcGVydHlDb25kaXRpb25TZXQgcmVzdWx0OwotICAgICAgICByZXN1bHQubV9kYXRhID0g
YWRvcHRSZWYoc3RhdGljX2Nhc3Q8RGF0YSo+KHJhd1BvaW50ZXIpKTsKLSAgICAgICAgcmV0dXJu
IHJlc3VsdDsKLSAgICB9Ci0gICAgc3RhdGljIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IGZy
b21SYXdQb2ludGVyKHZvaWQqIHJhd1BvaW50ZXIpCi0gICAgewotICAgICAgICBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvblNldCByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdC5tX2RhdGEgPSBzdGF0aWNf
Y2FzdDxEYXRhKj4ocmF3UG9pbnRlcik7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQog
Ci0gICAgLy8gRklYTUU6IEV2ZXJ5dGhpbmcgYmVsb3cgaGVyZSBzaG91bGQgYmUgcHJpdmF0ZSwg
YnV0IGNhbm5vdCBiZSBiZWNhdXNlIG9mIGEgYnVnIGluIFZTLgotICAgIAogICAgIC8vIEludGVy
bmFsbHksIHRoaXMgcmVwcmVzZW50cyBJbnZhbGlkIHVzaW5nIGEgcG9pbnRlciB0byBhIERhdGEg
dGhhdCBoYXMgYW4gZW1wdHkgdmVjdG9yLgogICAgIAogICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxk
IGJlIG1hZGUgbW9yZSBjb21wYWN0IGJ5IGhhdmluZyBpdCBpbnRlcm5hbGx5IHVzZSBhIHZlY3Rv
ciB0aGF0IGp1c3QgaGFzCiAgICAgLy8gdGhlIG5vbi11aWQgcG9ydGlvbiBvZiBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvbiwgYW5kIHRoZW4gcmVxdWlyaW5nIHRoYXQgdGhlIGNhbGxlcnMgb2YgYWxs
CiAgICAgLy8gb2YgdGhlIEFQSXMgc3VwcGx5IHRoZSB1aWQuCi0gICAgCi0gICAgY2xhc3MgRGF0
YSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhPiB7Ci0gICAgICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKERhdGEpOwotICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAg
ICAgICAgCi0gICAgcHVibGljOgotICAgICAgICBEYXRhKCkgeyB9Ci0gICAgICAgIAotICAgICAg
ICBGaXhlZFZlY3RvcjxPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbj4gbV92ZWN0b3I7Ci0gICAgfTsK
LSAgICAKKwogcHJpdmF0ZToKLSAgICBSZWZQdHI8RGF0YT4gbV9kYXRhOworICAgIFJlZlB0cjxD
b25kaXRpb25zPiBtX2RhdGE7CiB9OwogCiBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBnZW5lcmF0
ZUNvbmRpdGlvbkZvclNlbGZFcXVpdmFsZW5jZSgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApp
bmRleCBmNTdhNmUxMzQ1MDU4ZmRiZTg0MjM4ZjIyNzM3NjU3ZDA2Mzk5YTBiLi5jNTE1YzM5NTQy
MWMzYWYyZDgyOTBhM2FhZWM2MzUzMjkxZDQxZjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCkBAIC03OTksNyArNzk5LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVBbmRMaW5rV2l0aG91dEZp
bmFsaXppbmcoSklUQ29tcGlsYXRpb25FZmZvcnQgZWZmb3J0KQogICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gQ2FsbEZyYW1lOjphcmd1
bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoYXJndW1lbnQpICogc3RhdGljX2Nhc3Q8aW50PihzaXpl
b2YoUmVnaXN0ZXIpKTsKICAgICAgICAgICAgICAgICBsb2FkVmFsdWUoQWRkcmVzcyhjYWxsRnJh
bWVSZWdpc3Rlciwgb2Zmc2V0KSwganNSZWdUMTApOwotICAgICAgICAgICAgICAgIHN0b3JlVmFs
dWUoanNSZWdUMTAsIEFkZHJlc3MocmVnVDIsIGFyZ3VtZW50ICogc2l6ZW9mKFZhbHVlUHJvZmls
ZSkgKyBWYWx1ZVByb2ZpbGU6Om9mZnNldE9mRmlyc3RCdWNrZXQoKSkpOworICAgICAgICAgICAg
ICAgIHN0b3JlVmFsdWUoanNSZWdUMTAsIEFkZHJlc3MocmVnVDIsIEZpeGVkVmVjdG9yPFZhbHVl
UHJvZmlsZT46OlN0b3JhZ2U6Om9mZnNldE9mRGF0YSgpICsgYXJndW1lbnQgKiBzaXplb2YoVmFs
dWVQcm9maWxlKSArIFZhbHVlUHJvZmlsZTo6b2Zmc2V0T2ZGaXJzdEJ1Y2tldCgpKSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5s
aW5lcy5oCmluZGV4IDE3ZjQ2ZjdhMmQ4OTQ0MzhjM2I5YTBkZTY1YzZmMzFiODZjNjQ0MWMuLjU4
NjQxMmJjNDdlZTZiYjc0MGVmMTUyMDg0ZWYyY2EyMWE2YjE1OWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lcy5oCkBAIC01MDUsNyArNTA1LDcgQEAgQUxXQVlTX0lOTElORSB2
b2lkIEpJVDo6bWF0ZXJpYWxpemVQb2ludGVySW50b01ldGFkYXRhKGNvbnN0IEJ5dGVjb2RlJiBi
eXRlY29kZSwKIAogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6bG9hZENvbnN0YW50KEpJVENvbnN0
YW50UG9vbDo6Q29uc3RhbnQgY29uc3RhbnRJbmRleCwgR1BSUmVnIHJlc3VsdCkKIHsKLSAgICBs
b2FkUHRyKEFkZHJlc3Moc19jb25zdGFudHNHUFIsIHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oY29u
c3RhbnRJbmRleCkgKiBzaXplb2Yodm9pZCopKSwgcmVzdWx0KTsKKyAgICBsb2FkUHRyKEFkZHJl
c3Moc19jb25zdGFudHNHUFIsIEZpeGVkVmVjdG9yPHZvaWQqPjo6U3RvcmFnZTo6b2Zmc2V0T2ZE
YXRhKCkgKyBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGNvbnN0YW50SW5kZXgpICogc2l6ZW9mKHZv
aWQqKSksIHJlc3VsdCk7CiB9CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmxvYWRHbG9iYWxP
YmplY3QoR1BSUmVnIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggYjJjYWExODU0MTMwZmY4YjkzMTgw
NzZkMjdkZmViZGQyMTMzODQ0MS4uMzk3YjA1ZDg2YTA3MTJhN2EzOGNhMDIxZDIzMmNiMmQ5ZGI1
MWI5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0
c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zm
c2V0c0V4dHJhY3Rvci5jcHAKQEAgLTg3LDggKzg3LDEzIEBAIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvciB7CiAgICAgLy8gVGhlc2UgdHlwZXMgYXJlIHVzZWZ1bCBzaW5jZSB3ZSBjYW4ndCB1
c2UgJzwuLi4+JyBzeW50YXggaW4gTExJbnQgb2Zmc2V0cyBleHRyYWN0aW9uLiBlLmcuIFZlY3Rv
cjxpbnQ+OjptX2RhdGEKICAgICB1c2luZyBWZWN0b3IgPSBXVEY6OlZlY3RvcjxpbnQ+OwogICAg
IHVzaW5nIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGwgPSBKU0M6OkpTSW50ZXJuYWxGaWVsZE9i
amVjdEltcGw8PjsKLSAgICB1c2luZyBGaXhlZFZlY3RvciA9IFdURjo6Rml4ZWRWZWN0b3I8aW50
PjsKLSAgICB1c2luZyBSZWZDb3VudGVkQXJyYXkgPSBXVEY6OlJlZkNvdW50ZWRBcnJheTxpbnQ+
OworICAgIHVzaW5nIFZhbHVlUHJvZmlsZUZpeGVkVmVjdG9yID0gV1RGOjpGaXhlZFZlY3RvcjxW
YWx1ZVByb2ZpbGU+OworICAgIHVzaW5nIEJpbmFyeUFyaXRoUHJvZmlsZUZpeGVkVmVjdG9yID0g
Rml4ZWRWZWN0b3I8QmluYXJ5QXJpdGhQcm9maWxlPjsKKyAgICB1c2luZyBVbmFyeUFyaXRoUHJv
ZmlsZUZpeGVkVmVjdG9yID0gRml4ZWRWZWN0b3I8VW5hcnlBcml0aFByb2ZpbGU+OworICAgIHVz
aW5nIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlRml4ZWRWZWN0b3IgPSBGaXhlZFZlY3RvcjxVbmxp
bmtlZFNpbXBsZUp1bXBUYWJsZT47CisgICAgdXNpbmcgVW5saW5rZWRTdHJpbmdKdW1wVGFibGVG
aXhlZFZlY3RvciA9IEZpeGVkVmVjdG9yPFVubGlua2VkU3RyaW5nSnVtcFRhYmxlPjsKKyAgICB1
c2luZyBJbnQzMkZpeGVkVmVjdG9yID0gRml4ZWRWZWN0b3I8aW50MzJfdD47CisgICAgdXNpbmcg
Vm9pZFBvaW50ZXJGaXhlZFZlY3RvciA9IEZpeGVkVmVjdG9yPHZvaWQqPjsKIAogcHVibGljOgog
ICAgIHN0YXRpYyBjb25zdCBpbnQ2NF90KiBkdW1teSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGQyMTM5NmU5OGZh
MGJjNDg5Yjg5Nzk2ODc3YzYyNGZlOTZjMmUwNmIuLjEyMTBkYzFjMDlhNGY1NDU0NjIxOGZkNjZh
ZWZlYjA4OGU0YTAwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTYyMyw4ICs2MjMsNiBAQCBjb25zdCBCbGFja1Ro
cmVzaG9sZCA9IGNvbnN0ZXhwciBibGFja1RocmVzaG9sZAogY29uc3QgVmVjdG9yQnVmZmVyT2Zm
c2V0ID0gVmVjdG9yOjptX2J1ZmZlcgogY29uc3QgVmVjdG9yU2l6ZU9mZnNldCA9IFZlY3Rvcjo6
bV9zaXplCiAKLWNvbnN0IFJlZkNvdW50ZWRBcnJheVN0b3JhZ2VOb25OdWxsU2l6ZU9mZnNldCA9
IC0oY29uc3RleHByIChSZWZDb3VudGVkQXJyYXk6OkhlYWRlcjo6c2l6ZSgpKSkgKyBSZWZDb3Vu
dGVkQXJyYXk6OkhlYWRlcjo6bGVuZ3RoCi0KICMgU29tZSBjb21tb24gdXRpbGl0aWVzLgogbWFj
cm8gY3Jhc2goKQogICAgIGlmIENfTE9PUCBvciBDX0xPT1BfV0lOCkBAIC0xNjc3LDEwICsxNjc1
LDExIEBAIG1hY3JvIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24ocHJvZmlsZUFyZ1NraXApCiAgICAg
YWRkcCAtcHJvZmlsZUFyZ1NraXAsIHQwCiAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnBndGVxIHQw
LCAwLCBvayBlbmQpCiAgICAgYnRweiB0MCwgLmFyZ3VtZW50UHJvZmlsZURvbmUKLSAgICBsb2Fk
cCBDb2RlQmxvY2s6Om1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzICsgRml4ZWRWZWN0b3I6Om1fc3Rv
cmFnZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3QxXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzICsgVmFsdWVQcm9maWxlRml4ZWRWZWN0b3I6Om1f
c3RvcmFnZVt0MV0sIHQzCiAgICAgYnRweiB0MywgLmFyZ3VtZW50UHJvZmlsZURvbmUgIyBXaGVu
IHdlIGNhbid0IEpJVCwgd2UgZG9uJ3QgYWxsb2NhdGUgYW55IGFyZ3VtZW50IHZhbHVlIHByb2Zp
bGVzLgogICAgIG11bHAgc2l6ZW9mIFZhbHVlUHJvZmlsZSwgdDAsIHQyICMgQWFhYWFoaGhoISBO
ZWVkIHN0cmVuZ3RoIHJlZHVjdGlvbiEKICAgICBsc2hpZnRwIDMsIHQwICMgb2Zmc2V0IG9mIGxh
c3QgSlNWYWx1ZSBhcmd1bWVudHMgb24gdGhlIHN0YWNrLgorICAgIGFkZHAgKGNvbnN0ZXhwciAo
VmFsdWVQcm9maWxlRml4ZWRWZWN0b3I6OlN0b3JhZ2U6Om9mZnNldE9mRGF0YSgpKSksIHQzCiAg
ICAgYWRkcCB0MiwgdDMgIyBwb2ludGVyIHRvIGVuZCBvZiBWYWx1ZVByb2ZpbGUgYXJyYXkgaW4g
dGhlIHZhbHVlIHByb2ZpbGUgYXJyYXkuCiAuYXJndW1lbnRQcm9maWxlTG9vcDoKICAgICBpZiBK
U1ZBTFVFNjQKQEAgLTI2MTAsNyArMjYwOSw3IEBAIGlmIEpJVAogICAgICAgICAjIEJhc2VsaW5l
IHVzZXMgTExJbnQncyBQQiByZWdpc3RlciBmb3IgaXRzIEpJVCBjb25zdGFudCBwb29sLgogICAg
ICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgUEIKICAgICAgICAgbG9hZHAgQ29kZUJsb2NrOjpt
X2ppdERhdGFbUEJdLCBQQgotICAgICAgICBsb2FkcCBDb2RlQmxvY2s6OkpJVERhdGE6Om1faml0
Q29uc3RhbnRQb29sW1BCXSwgUEIKKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrOjpKSVREYXRhOjpt
X2ppdENvbnN0YW50UG9vbCArIFZvaWRQb2ludGVyRml4ZWRWZWN0b3I6Om1fc3RvcmFnZVtQQl0s
IFBCCiAgICAgZW5kCiAKICAgICBtYWNybyBzZXR1cFJldHVyblRvQmFzZWxpbmVBZnRlckNoZWNr
cG9pbnRFeGl0SWZOZWVkZWQoKQpAQCAtMjcyNSwxNiArMjcyNCwxNiBAQCBtYWNybyB1cGRhdGVV
bmFyeUFyaXRoUHJvZmlsZShzaXplLCBvcGNvZGVTdHJ1Y3QsIHR5cGUsIHNjcmF0Y2gxLCBzY3Jh
dGNoMikKICAgICBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgbV9wcm9maWxlSW5kZXgsIHNjcmF0
Y2gxKQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBzY3JhdGNoMgogICAgIGxvYWRwIENvZGVC
bG9jazo6bV91bmxpbmtlZENvZGVbc2NyYXRjaDJdLCBzY3JhdGNoMgotICAgIGxvYWRwIFVubGlu
a2VkQ29kZUJsb2NrOjptX3VuYXJ5QXJpdGhQcm9maWxlcyArIEZpeGVkVmVjdG9yOjptX3N0b3Jh
Z2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVtzY3JhdGNoMl0sIHNjcmF0Y2gyCi0gICAgb3Jo
IHR5cGUsIFVuYXJ5QXJpdGhQcm9maWxlOjptX2JpdHNbc2NyYXRjaDIsIHNjcmF0Y2gxLCAyXQor
ICAgIGxvYWRwIFVubGlua2VkQ29kZUJsb2NrOjptX3VuYXJ5QXJpdGhQcm9maWxlcyArIFVuYXJ5
QXJpdGhQcm9maWxlRml4ZWRWZWN0b3I6Om1fc3RvcmFnZVtzY3JhdGNoMl0sIHNjcmF0Y2gyCisg
ICAgb3JoIHR5cGUsIChjb25zdGV4cHIgKFVuYXJ5QXJpdGhQcm9maWxlRml4ZWRWZWN0b3I6OlN0
b3JhZ2U6Om9mZnNldE9mRGF0YSgpKSkgKyBVbmFyeUFyaXRoUHJvZmlsZTo6bV9iaXRzW3NjcmF0
Y2gyLCBzY3JhdGNoMSwgMl0KIGVuZAogCiBtYWNybyB1cGRhdGVCaW5hcnlBcml0aFByb2ZpbGUo
c2l6ZSwgb3Bjb2RlU3RydWN0LCB0eXBlLCBzY3JhdGNoMSwgc2NyYXRjaDIpCiAgICAgZ2V0dShz
aXplLCBvcGNvZGVTdHJ1Y3QsIG1fcHJvZmlsZUluZGV4LCBzY3JhdGNoMSkKICAgICBsb2FkcCBD
b2RlQmxvY2tbY2ZyXSwgc2NyYXRjaDIKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fdW5saW5rZWRD
b2RlW3NjcmF0Y2gyXSwgc2NyYXRjaDIKLSAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6bV9i
aW5hcnlBcml0aFByb2ZpbGVzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRB
cnJheTo6bV9kYXRhW3NjcmF0Y2gyXSwgc2NyYXRjaDIKLSAgICBvcmggdHlwZSwgQmluYXJ5QXJp
dGhQcm9maWxlOjptX2JpdHNbc2NyYXRjaDIsIHNjcmF0Y2gxLCAyXQorICAgIGxvYWRwIFVubGlu
a2VkQ29kZUJsb2NrOjptX2JpbmFyeUFyaXRoUHJvZmlsZXMgKyBCaW5hcnlBcml0aFByb2ZpbGVG
aXhlZFZlY3Rvcjo6bV9zdG9yYWdlW3NjcmF0Y2gyXSwgc2NyYXRjaDIKKyAgICBvcmggdHlwZSwg
KGNvbnN0ZXhwciAoQmluYXJ5QXJpdGhQcm9maWxlRml4ZWRWZWN0b3I6OlN0b3JhZ2U6Om9mZnNl
dE9mRGF0YSgpKSkgKyBCaW5hcnlBcml0aFByb2ZpbGU6Om1fYml0c1tzY3JhdGNoMiwgc2NyYXRj
aDEsIDJdCiBlbmQKIAogLy8gRklYTUU6IFdlIHNob3VsZCBub3QgbmVlZCB0aGUgWDg2XzY0X1dJ
TiBjb25kaXRpb24gaGVyZSwgc2luY2UgV0VCQVNTRU1CTFkgc2hvdWxkIGFscmVhZHkgYmUgZmFs
c2Ugb24gV2luZG93cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCBjZjFlYTIxNDI0MmI0YmY0ZWE1MTVi
OGZhYzQ1NTE2ZGUwN2JmZjg3Li42MDU1MDFhZTA5MjQzNDgxMzgwNTdhZGMxZmE1NDQyYTc4MmRi
YzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMjA5OSwxNCArMjA5OSwxNSBAQCBsbGludE9wV2l0
aEp1bXAob3Bfc3dpdGNoX2ltbSwgT3BTd2l0Y2hJbW0sIG1hY3JvIChzaXplLCBnZXQsIGp1bXAs
IGRpc3BhdGNoKQogICAgIGxvYWRwIENvZGVCbG9jazo6bV91bmxpbmtlZENvZGVbdDJdLCB0Mgog
ICAgIGxvYWRwIFVubGlua2VkQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKICAgICBtdWxp
IHNpemVvZiBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSwgdDMKLSAgICBsb2FkcCBVbmxpbmtlZENv
ZGVCbG9jazo6UmFyZURhdGE6Om1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVzICsgRml4ZWRWZWN0
b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50ZWRBcnJheTo6bV9kYXRhW3QyXSwgdDIKKyAgICBsb2Fk
cCBVbmxpbmtlZENvZGVCbG9jazo6UmFyZURhdGE6Om1fdW5saW5rZWRTd2l0Y2hKdW1wVGFibGVz
ICsgVW5saW5rZWRTaW1wbGVKdW1wVGFibGVGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlW3QyXSwgdDIK
KyAgICBhZGRwIChjb25zdGV4cHIgKFVubGlua2VkU2ltcGxlSnVtcFRhYmxlRml4ZWRWZWN0b3I6
OlN0b3JhZ2U6Om9mZnNldE9mRGF0YSgpKSksIHQyCiAgICAgYWRkcCB0MywgdDIKICAgICBiaW5l
cSB0MSwgSW50MzJUYWcsIC5vcFN3aXRjaEltbU5vdEludAogICAgIHN1YmkgVW5saW5rZWRTaW1w
bGVKdW1wVGFibGU6Om1fbWluW3QyXSwgdDAKLSAgICBsb2FkcCBVbmxpbmtlZFNpbXBsZUp1bXBU
YWJsZTo6bV9icmFuY2hPZmZzZXRzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50
ZWRBcnJheTo6bV9kYXRhW3QyXSwgdDIKKyAgICBsb2FkcCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJs
ZTo6bV9icmFuY2hPZmZzZXRzICsgSW50MzJGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlW3QyXSwgdDIK
ICAgICBidHB6IHQyLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAotICAgIGJpYWVxIHQwLCBSZWZD
b3VudGVkQXJyYXlTdG9yYWdlTm9uTnVsbFNpemVPZmZzZXRbdDJdLCAub3BTd2l0Y2hJbW1GYWxs
VGhyb3VnaAotICAgIGxvYWRpIFt0MiwgdDAsIDRdLCB0MQorICAgIGJpYWVxIHQwLCBJbnQzMkZp
eGVkVmVjdG9yOjpTdG9yYWdlOjptX3NpemVbdDJdLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAor
ICAgIGxvYWRpIChjb25zdGV4cHIgKEludDMyRml4ZWRWZWN0b3I6OlN0b3JhZ2U6Om9mZnNldE9m
RGF0YSgpKSlbdDIsIHQwLCA0XSwgdDEKICAgICBidGl6IHQxLCAub3BTd2l0Y2hJbW1GYWxsVGhy
b3VnaAogICAgIGRpc3BhdGNoSW5kaXJlY3QodDEpCiAKQEAgLTIxMjksNyArMjEzMCw4IEBAIGxs
aW50T3BXaXRoSnVtcChvcF9zd2l0Y2hfY2hhciwgT3BTd2l0Y2hDaGFyLCBtYWNybyAoc2l6ZSwg
Z2V0LCBqdW1wLCBkaXNwYXRjaCkKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fdW5saW5rZWRDb2Rl
W3QyXSwgdDIKICAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQy
CiAgICAgbXVsaSBzaXplb2YgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUsIHQzCi0gICAgbG9hZHAg
VW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhOjptX3VubGlua2VkU3dpdGNoSnVtcFRhYmxlcyAr
IEZpeGVkVmVjdG9yOjptX3N0b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0Ml0sIHQy
CisgICAgbG9hZHAgVW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhOjptX3VubGlua2VkU3dpdGNo
SnVtcFRhYmxlcyArIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlRml4ZWRWZWN0b3I6Om1fc3RvcmFn
ZVt0Ml0sIHQyCisgICAgYWRkcCAoY29uc3RleHByIChVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZUZp
eGVkVmVjdG9yOjpTdG9yYWdlOjpvZmZzZXRPZkRhdGEoKSkpLCB0MgogICAgIGFkZHAgdDMsIHQy
CiAgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAogICAgIGJi
bmVxIEpTQ2VsbDo6bV90eXBlW3QwXSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJv
dWdoCkBAIC0yMTQ0LDEwICsyMTQ2LDEwIEBAIGxsaW50T3BXaXRoSnVtcChvcF9zd2l0Y2hfY2hh
ciwgT3BTd2l0Y2hDaGFyLCBtYWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKICAgICBs
b2FkYiBbdDBdLCB0MAogLm9wU3dpdGNoQ2hhclJlYWR5OgogICAgIHN1YmkgVW5saW5rZWRTaW1w
bGVKdW1wVGFibGU6Om1fbWluW3QyXSwgdDAKLSAgICBsb2FkcCBVbmxpbmtlZFNpbXBsZUp1bXBU
YWJsZTo6bV9icmFuY2hPZmZzZXRzICsgRml4ZWRWZWN0b3I6Om1fc3RvcmFnZSArIFJlZkNvdW50
ZWRBcnJheTo6bV9kYXRhW3QyXSwgdDIKKyAgICBsb2FkcCBVbmxpbmtlZFNpbXBsZUp1bXBUYWJs
ZTo6bV9icmFuY2hPZmZzZXRzICsgSW50MzJGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlW3QyXSwgdDIK
ICAgICBidHB6IHQyLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKLSAgICBiaWFlcSB0MCwgUmVm
Q291bnRlZEFycmF5U3RvcmFnZU5vbk51bGxTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoQ2hhckZh
bGxUaHJvdWdoCi0gICAgbG9hZGkgW3QyLCB0MCwgNF0sIHQxCisgICAgYmlhZXEgdDAsIEludDMy
Rml4ZWRWZWN0b3I6OlN0b3JhZ2U6Om1fc2l6ZVt0Ml0sIC5vcFN3aXRjaENoYXJGYWxsVGhyb3Vn
aAorICAgIGxvYWRpIChjb25zdGV4cHIgKEludDMyRml4ZWRWZWN0b3I6OlN0b3JhZ2U6Om9mZnNl
dE9mRGF0YSgpKSlbdDIsIHQwLCA0XSwgdDEKICAgICBidGl6IHQxLCAub3BTd2l0Y2hDaGFyRmFs
bFRocm91Z2gKICAgICBkaXNwYXRjaEluZGlyZWN0KHQxKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGEyM2Rl
NjBlMGVkODg0NzZlNTUxOGMxNWVhMDM5NDYxMDRjYzkxN2UuLjcxZWNhMTBhNzY2MDBjMzkxOGYz
NjM0YjRlYWNlZjcwOGEzYTk0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0yMjkyLDE0ICsyMjkyLDE1IEBA
IGxsaW50T3BXaXRoSnVtcChvcF9zd2l0Y2hfaW1tLCBPcFN3aXRjaEltbSwgbWFjcm8gKHNpemUs
IGdldCwganVtcCwgZGlzcGF0Y2gpCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX3VubGlua2VkQ29k
ZVt0Ml0sIHQyCiAgICAgbG9hZHAgVW5saW5rZWRDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0
MgogICAgIG11bGkgc2l6ZW9mIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlLCB0MwotICAgIGxvYWRw
IFVubGlua2VkQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV91bmxpbmtlZFN3aXRjaEp1bXBUYWJsZXMg
KyBGaXhlZFZlY3Rvcjo6bV9zdG9yYWdlICsgUmVmQ291bnRlZEFycmF5OjptX2RhdGFbdDJdLCB0
MgorICAgIGxvYWRwIFVubGlua2VkQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV91bmxpbmtlZFN3aXRj
aEp1bXBUYWJsZXMgKyBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZUZpeGVkVmVjdG9yOjptX3N0b3Jh
Z2VbdDJdLCB0MgorICAgIGFkZHAgKGNvbnN0ZXhwciAoVW5saW5rZWRTaW1wbGVKdW1wVGFibGVG
aXhlZFZlY3Rvcjo6U3RvcmFnZTo6b2Zmc2V0T2ZEYXRhKCkpKSwgdDIKICAgICBhZGRwIHQzLCB0
MgogICAgIGJxYiB0MSwgbnVtYmVyVGFnLCAub3BTd2l0Y2hJbW1Ob3RJbnQKICAgICBzdWJpIFVu
bGlua2VkU2ltcGxlSnVtcFRhYmxlOjptX21pblt0Ml0sIHQxCi0gICAgbG9hZHAgVW5saW5rZWRT
aW1wbGVKdW1wVGFibGU6Om1fYnJhbmNoT2Zmc2V0cyArIEZpeGVkVmVjdG9yOjptX3N0b3JhZ2Ug
KyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0Ml0sIHQyCisgICAgbG9hZHAgVW5saW5rZWRTaW1w
bGVKdW1wVGFibGU6Om1fYnJhbmNoT2Zmc2V0cyArIEludDMyRml4ZWRWZWN0b3I6Om1fc3RvcmFn
ZVt0Ml0sIHQyCiAgICAgYnRweiB0MiwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKLSAgICBiaWFl
cSB0MSwgUmVmQ291bnRlZEFycmF5U3RvcmFnZU5vbk51bGxTaXplT2Zmc2V0W3QyXSwgLm9wU3dp
dGNoSW1tRmFsbFRocm91Z2gKLSAgICBsb2FkaXMgW3QyLCB0MSwgNF0sIHQxCisgICAgYmlhZXEg
dDEsIEludDMyRml4ZWRWZWN0b3I6OlN0b3JhZ2U6Om1fc2l6ZVt0Ml0sIC5vcFN3aXRjaEltbUZh
bGxUaHJvdWdoCisgICAgbG9hZGlzIChjb25zdGV4cHIgKEludDMyRml4ZWRWZWN0b3I6OlN0b3Jh
Z2U6Om9mZnNldE9mRGF0YSgpKSlbdDIsIHQxLCA0XSwgdDEKICAgICBidGl6IHQxLCAub3BTd2l0
Y2hJbW1GYWxsVGhyb3VnaAogICAgIGRpc3BhdGNoSW5kaXJlY3QodDEpCiAKQEAgLTIzMjIsNyAr
MjMyMyw4IEBAIGxsaW50T3BXaXRoSnVtcChvcF9zd2l0Y2hfY2hhciwgT3BTd2l0Y2hDaGFyLCBt
YWNybyAoc2l6ZSwgZ2V0LCBqdW1wLCBkaXNwYXRjaCkKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1f
dW5saW5rZWRDb2RlW3QyXSwgdDIKICAgICBsb2FkcCBVbmxpbmtlZENvZGVCbG9jazo6bV9yYXJl
RGF0YVt0Ml0sIHQyCiAgICAgbXVsaSBzaXplb2YgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUsIHQz
Ci0gICAgbG9hZHAgVW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhOjptX3VubGlua2VkU3dpdGNo
SnVtcFRhYmxlcyArIEZpeGVkVmVjdG9yOjptX3N0b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6Om1f
ZGF0YVt0Ml0sIHQyCisgICAgbG9hZHAgVW5saW5rZWRDb2RlQmxvY2s6OlJhcmVEYXRhOjptX3Vu
bGlua2VkU3dpdGNoSnVtcFRhYmxlcyArIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlRml4ZWRWZWN0
b3I6Om1fc3RvcmFnZVt0Ml0sIHQyCisgICAgYWRkcCAoY29uc3RleHByIChVbmxpbmtlZFNpbXBs
ZUp1bXBUYWJsZUZpeGVkVmVjdG9yOjpTdG9yYWdlOjpvZmZzZXRPZkRhdGEoKSkpLCB0MgogICAg
IGFkZHAgdDMsIHQyCiAgICAgYnRxbnogdDEsIG5vdENlbGxNYXNrLCAub3BTd2l0Y2hDaGFyRmFs
bFRocm91Z2gKICAgICBiYm5lcSBKU0NlbGw6Om1fdHlwZVt0MV0sIFN0cmluZ1R5cGUsIC5vcFN3
aXRjaENoYXJGYWxsVGhyb3VnaApAQCAtMjMzNywxMCArMjMzOSwxMCBAQCBsbGludE9wV2l0aEp1
bXAob3Bfc3dpdGNoX2NoYXIsIE9wU3dpdGNoQ2hhciwgbWFjcm8gKHNpemUsIGdldCwganVtcCwg
ZGlzcGF0Y2gpCiAgICAgbG9hZGIgW3QxXSwgdDAKIC5vcFN3aXRjaENoYXJSZWFkeToKICAgICBz
dWJpIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlOjptX21pblt0Ml0sIHQwCi0gICAgbG9hZHAgVW5s
aW5rZWRTaW1wbGVKdW1wVGFibGU6Om1fYnJhbmNoT2Zmc2V0cyArIEZpeGVkVmVjdG9yOjptX3N0
b3JhZ2UgKyBSZWZDb3VudGVkQXJyYXk6Om1fZGF0YVt0Ml0sIHQyCisgICAgbG9hZHAgVW5saW5r
ZWRTaW1wbGVKdW1wVGFibGU6Om1fYnJhbmNoT2Zmc2V0cyArIEludDMyRml4ZWRWZWN0b3I6Om1f
c3RvcmFnZVt0Ml0sIHQyCiAgICAgYnRweiB0MiwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCi0g
ICAgYmlhZXEgdDAsIFJlZkNvdW50ZWRBcnJheVN0b3JhZ2VOb25OdWxsU2l6ZU9mZnNldFt0Ml0s
IC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAotICAgIGxvYWRpcyBbdDIsIHQwLCA0XSwgdDEKKyAg
ICBiaWFlcSB0MCwgSW50MzJGaXhlZFZlY3Rvcjo6U3RvcmFnZTo6bV9zaXplW3QyXSwgLm9wU3dp
dGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZGlzIChjb25zdGV4cHIgKEludDMyRml4ZWRWZWN0
b3I6OlN0b3JhZ2U6Om9mZnNldE9mRGF0YSgpKSlbdDIsIHQwLCA0XSwgdDEKICAgICBidGl6IHQx
LCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKICAgICBkaXNwYXRjaEluZGlyZWN0KHQxKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGVlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ2FsbGVlLmgKaW5kZXggYWEyYjU0MThjMmNkNTQw
OWJhNWRiN2Q1MmFlMDAyNWMyZjJlZGVkMi4uNWVkN2ZhZmE3M2U5YTRjNzc1YzJmNjdiNDhlOWE5
ZmViYjY2ZjU5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNh
bGxlZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21DYWxsZWUuaApAQCAt
MzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIldhc21JbmRleE9yTmFtZS5oIgogI2luY2x1ZGUgIldh
c21MTEludFRpZXJVcENvdW50ZXIuaCIKICNpbmNsdWRlICJXYXNtVGllclVwQ291bnQuaCIKKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZEZpeGVkVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVh
ZFNhZmVSZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMjY3LDMxICsyNjgsNyBA
QCBjbGFzcyBMTEludENhbGxlZSBmaW5hbCA6IHB1YmxpYyBDYWxsZWUgewogICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cjxXYXNtRW50cnlQdHJUYWc+IG1fZW50cnlwb2ludDsKIH07CiAKLWNsYXNz
IExMSW50Q2FsbGVlcyA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxMTEludENhbGxlZXM+
IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPExMSW50Q2FsbGVlcz4gY3JlYXRlKFZlY3RvcjxS
ZWY8TExJbnRDYWxsZWU+PiYmIGxsaW50Q2FsbGVlcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IExMSW50Q2FsbGVlcyhXVEZNb3ZlKGxsaW50Q2FsbGVlcykpKTsKLSAgICB9
Ci0KLSAgICBjb25zdCBSZWY8TExJbnRDYWxsZWU+JiBhdCh1bnNpZ25lZCBpKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fbGxpbnRDYWxsZWVzLmF0KGkpOwotICAgIH0KLQotICAgIGNv
bnN0IFJlZjxMTEludENhbGxlZT4qIGRhdGEoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fbGxpbnRDYWxsZWVzLmRhdGEoKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgTExJbnRDYWxs
ZWVzKFZlY3RvcjxSZWY8TExJbnRDYWxsZWU+PiYmIGxsaW50Q2FsbGVlcykKLSAgICAgICAgOiBt
X2xsaW50Q2FsbGVlcyhXVEZNb3ZlKGxsaW50Q2FsbGVlcykpCi0gICAgewotICAgIH0KLQotICAg
IFZlY3RvcjxSZWY8TExJbnRDYWxsZWU+PiBtX2xsaW50Q2FsbGVlczsKLX07Cit1c2luZyBMTElu
dENhbGxlZXMgPSBUaHJlYWRTYWZlUmVmQ291bnRlZEZpeGVkVmVjdG9yPFJlZjxMTEludENhbGxl
ZT4+OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21Db2RlQmxvY2suY3BwCmluZGV4IGFhODg0ZThjMWRjYWVlMjA3Y2ZkOTg5
NTMwOGZhNTVlMzY2ZDgzOTIuLmViZjg1ZDU0M2E5MzVjYzg5ZWVhOTE5NjdjNzA4ZGE5ZDk3MGVj
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db2RlQmxvY2su
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db2RlQmxvY2suY3BwCkBA
IC0zNSw5ICszNSw5IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKLVJl
ZjxDb2RlQmxvY2s+IENvZGVCbG9jazo6Y3JlYXRlKENvbnRleHQqIGNvbnRleHQsIE1lbW9yeU1v
ZGUgbW9kZSwgTW9kdWxlSW5mb3JtYXRpb24mIG1vZHVsZUluZm9ybWF0aW9uLCBSZWZQdHI8TExJ
bnRDYWxsZWVzPiBsbGludENhbGxlZXMpCitSZWY8Q29kZUJsb2NrPiBDb2RlQmxvY2s6OmNyZWF0
ZShDb250ZXh0KiBjb250ZXh0LCBNZW1vcnlNb2RlIG1vZGUsIE1vZHVsZUluZm9ybWF0aW9uJiBt
b2R1bGVJbmZvcm1hdGlvbiwgUmVmUHRyPExMSW50Q2FsbGVlcz4mJiBsbGludENhbGxlZXMpCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29kZUJsb2NrKGNvbnRleHQsIG1vZGUsIG1vZHVs
ZUluZm9ybWF0aW9uLCBsbGludENhbGxlZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBD
b2RlQmxvY2soY29udGV4dCwgbW9kZSwgbW9kdWxlSW5mb3JtYXRpb24sIFdURk1vdmUobGxpbnRD
YWxsZWVzKSkpOwogfQogCiBSZWY8Q29kZUJsb2NrPiBDb2RlQmxvY2s6OmNyZWF0ZUZyb21FeGlz
dGluZyhNZW1vcnlNb2RlIG1vZGUsIGNvbnN0IENvZGVCbG9jayYgb3RoZXIpCkBAIC02MSwxMCAr
NjEsMTAgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soTWVtb3J5TW9kZSBtb2RlLCBjb25zdCBDb2Rl
QmxvY2smIG90aGVyKQogICAgIHNldENvbXBpbGF0aW9uRmluaXNoZWQoKTsKIH0KIAotQ29kZUJs
b2NrOjpDb2RlQmxvY2soQ29udGV4dCogY29udGV4dCwgTWVtb3J5TW9kZSBtb2RlLCBNb2R1bGVJ
bmZvcm1hdGlvbiYgbW9kdWxlSW5mb3JtYXRpb24sIFJlZlB0cjxMTEludENhbGxlZXM+IGxsaW50
Q2FsbGVlcykKK0NvZGVCbG9jazo6Q29kZUJsb2NrKENvbnRleHQqIGNvbnRleHQsIE1lbW9yeU1v
ZGUgbW9kZSwgTW9kdWxlSW5mb3JtYXRpb24mIG1vZHVsZUluZm9ybWF0aW9uLCBSZWZQdHI8TExJ
bnRDYWxsZWVzPiYmIGxsaW50Q2FsbGVlcykKICAgICA6IG1fY2FsbGVlQ291bnQobW9kdWxlSW5m
b3JtYXRpb24uaW50ZXJuYWxGdW5jdGlvbkNvdW50KCkpCiAgICAgLCBtX21vZGUobW9kZSkKLSAg
ICAsIG1fbGxpbnRDYWxsZWVzKGxsaW50Q2FsbGVlcykKKyAgICAsIG1fbGxpbnRDYWxsZWVzKFdU
Rk1vdmUobGxpbnRDYWxsZWVzKSkKIHsKICAgICBSZWZQdHI8Q29kZUJsb2NrPiBwcm90ZWN0ZWRU
aGlzID0gdGhpczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUNvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvZGVCbG9jay5o
CmluZGV4IDQ1MDZjOWJmM2FlNjRlNjgyNGM4NGE4ZjdmOTg5NTVjODhjMjk3NWQuLmIwZWMyMmM5
ZTVhMTA3ODFjMzJkNjE2YWIzOTA4YWI3ZTFkZGZmYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQ29kZUJsb2NrLmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgQ29kZUJsb2Nr
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENvZGVCbG9jaz4gewogcHVibGljOgogICAg
IHR5cGVkZWYgdm9pZCBDYWxsYmFja1R5cGUoUmVmPENvZGVCbG9jaz4mJik7CiAgICAgdXNpbmcg
QXN5bmNDb21waWxhdGlvbkNhbGxiYWNrID0gUmVmUHRyPFdURjo6U2hhcmVkVGFzazxDYWxsYmFj
a1R5cGU+PjsKLSAgICBzdGF0aWMgUmVmPENvZGVCbG9jaz4gY3JlYXRlKENvbnRleHQqLCBNZW1v
cnlNb2RlLCBNb2R1bGVJbmZvcm1hdGlvbiYsIFJlZlB0cjxMTEludENhbGxlZXM+KTsKKyAgICBz
dGF0aWMgUmVmPENvZGVCbG9jaz4gY3JlYXRlKENvbnRleHQqLCBNZW1vcnlNb2RlLCBNb2R1bGVJ
bmZvcm1hdGlvbiYsIFJlZlB0cjxMTEludENhbGxlZXM+JiYpOwogICAgIHN0YXRpYyBSZWY8Q29k
ZUJsb2NrPiBjcmVhdGVGcm9tRXhpc3RpbmcoTWVtb3J5TW9kZSwgY29uc3QgQ29kZUJsb2NrJik7
CiAKICAgICB2b2lkIHdhaXRVbnRpbEZpbmlzaGVkKCk7CkBAIC0xMzcsNyArMTM3LDcgQEAgY2xh
c3MgQ29kZUJsb2NrIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENvZGVCbG9jaz4gewog
ICAgIGZyaWVuZCBjbGFzcyBPTUdGb3JPU1JFbnRyeVBsYW47CiAjZW5kaWYKIAotICAgIENvZGVC
bG9jayhDb250ZXh0KiwgTWVtb3J5TW9kZSwgTW9kdWxlSW5mb3JtYXRpb24mLCBSZWZQdHI8TExJ
bnRDYWxsZWVzPik7CisgICAgQ29kZUJsb2NrKENvbnRleHQqLCBNZW1vcnlNb2RlLCBNb2R1bGVJ
bmZvcm1hdGlvbiYsIFJlZlB0cjxMTEludENhbGxlZXM+JiYpOwogICAgIENvZGVCbG9jayhNZW1v
cnlNb2RlLCBjb25zdCBDb2RlQmxvY2smKTsKICAgICB2b2lkIHNldENvbXBpbGF0aW9uRmluaXNo
ZWQoKTsKICAgICB1bnNpZ25lZCBtX2NhbGxlZUNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtTW9kdWxlLmNwcAppbmRleCBkMzhkYmU3NDQ5ZDhlODU1NzY1YTAzNTdkNzhlOTQ5
YTg1ZGIwMzVmLi41N2ZhYjk2ZjllYjMyZmNmN2NjMjIwMzdhNzA2MGIwM2QyNzYxMzY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmNwcApAQCAtMzYsNyArMzYsNyBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCiBNb2R1bGU6Ok1vZHVsZShMTElu
dFBsYW4mIHBsYW4pCiAgICAgOiBtX21vZHVsZUluZm9ybWF0aW9uKHBsYW4udGFrZU1vZHVsZUlu
Zm9ybWF0aW9uKCkpCi0gICAgLCBtX2xsaW50Q2FsbGVlcyhMTEludENhbGxlZXM6OmNyZWF0ZShw
bGFuLnRha2VDYWxsZWVzKCkpKQorICAgICwgbV9sbGludENhbGxlZXMoTExJbnRDYWxsZWVzOjpj
cmVhdGVGcm9tVmVjdG9yKHBsYW4udGFrZUNhbGxlZXMoKSkpCiAgICAgLCBtX2xsaW50RW50cnlU
aHVua3MocGxhbi50YWtlRW50cnlUaHVua3MoKSkKIHsKIH0KQEAgLTkxLDggKzkxLDggQEAgUmVm
PENvZGVCbG9jaz4gTW9kdWxlOjpnZXRPckNyZWF0ZUNvZGVCbG9jayhDb250ZXh0KiBjb250ZXh0
LCBNZW1vcnlNb2RlIG1vZGUpCiAgICAgaWYgKCFjb2RlQmxvY2sgfHwgKGNvZGVCbG9jay0+Y29t
cGlsYXRpb25GaW5pc2hlZCgpICYmICFjb2RlQmxvY2stPnJ1bm5hYmxlKCkpKSB7CiAgICAgICAg
IFJlZlB0cjxMTEludENhbGxlZXM+IGxsaW50Q2FsbGVlcyA9IG51bGxwdHI7CiAgICAgICAgIGlm
IChPcHRpb25zOjp1c2VXYXNtTExJbnQoKSkKLSAgICAgICAgICAgIGxsaW50Q2FsbGVlcyA9IG1f
bGxpbnRDYWxsZWVzOwotICAgICAgICBjb2RlQmxvY2sgPSBDb2RlQmxvY2s6OmNyZWF0ZShjb250
ZXh0LCBtb2RlLCBjb25zdF9jYXN0PE1vZHVsZUluZm9ybWF0aW9uJj4obW9kdWxlSW5mb3JtYXRp
b24oKSksIGxsaW50Q2FsbGVlcyk7CisgICAgICAgICAgICBsbGludENhbGxlZXMgPSBtX2xsaW50
Q2FsbGVlcy5jb3B5UmVmKCk7CisgICAgICAgIGNvZGVCbG9jayA9IENvZGVCbG9jazo6Y3JlYXRl
KGNvbnRleHQsIG1vZGUsIGNvbnN0X2Nhc3Q8TW9kdWxlSW5mb3JtYXRpb24mPihtb2R1bGVJbmZv
cm1hdGlvbigpKSwgV1RGTW92ZShsbGludENhbGxlZXMpKTsKICAgICAgICAgbV9jb2RlQmxvY2tz
W3N0YXRpY19jYXN0PHVpbnQ4X3Q+KG1vZGUpXSA9IGNvZGVCbG9jazsKICAgICB9CiAgICAgcmV0
dXJuIGNvZGVCbG9jay5yZWxlYXNlTm9uTnVsbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbU1vZHVsZS5oCmluZGV4IDBjMTU3YzZlNTI3MGQyNGU2N2Q0YTM2ODIyNTU2MzM2MmY5MjBi
ZDUuLjNjYzI4Mzk0N2FkYWY3MjA5OGUxNjkzNTM3ZWE2NjQ3MmEwOGJiYzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlLmgKQEAgLTc0LDcgKzc0LDcgQEAgY2xhc3MgTW9k
dWxlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1vZHVsZT4gewogICAgIE1vZHVsZShM
TEludFBsYW4mKTsKICAgICBSZWY8TW9kdWxlSW5mb3JtYXRpb24+IG1fbW9kdWxlSW5mb3JtYXRp
b247CiAgICAgUmVmUHRyPENvZGVCbG9jaz4gbV9jb2RlQmxvY2tzW1dhc206Ok51bWJlck9mTWVt
b3J5TW9kZXNdOwotICAgIFJlZlB0cjxMTEludENhbGxlZXM+IG1fbGxpbnRDYWxsZWVzOworICAg
IFJlZjxMTEludENhbGxlZXM+IG1fbGxpbnRDYWxsZWVzOwogICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRDb21waWxhdGlvblB0clRhZz4gbV9sbGludEVudHJ5VGh1bmtzOwogICAgIExvY2sg
bV9sb2NrOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDdjOGQzNTRlZDY1M2I5YWQ1ZGVhZmExNGI4OWViMGI2MTE3YWQ5YTQuLjQ5MzczZTZmMTdjMTc0
YmViMGE2MjdhMGQ5NzcxNDg5ZGJlMzcxMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtNzU4LDYgKzc1OCw4IEBACiAJCUUzMzlDMTYzMjQ0QjRFODcwMDM1
OURBOSAvKiBEYXRhUmVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFS
ZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMzRDVGODcxRkJFRDY2NzAwQkY2
MjVFIC8qIFJlY3Vyc2FibGVMYW1iZGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVjdXJzYWJsZUxhbWJkYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzRD
RDBEMDIyODEwQTAyMDAyMEQyOTkgLyogUGFja2VkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhY2tlZC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzUzOEQ0QzI3NjIyMDg4MDA3NURBNTAg
LyogRW1iZWRkZWRGaXhlZFZlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbWJlZGRlZEZpeGVkVmVj
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNTM4RDREMjc2MjIwODgwMDc1
REE1MCAvKiBUcmFpbGluZ0FycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYWlsaW5nQXJyYXkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2MEM3NjQyMTI3Qjg1QjAwQzkwRjBFIC8q
IFVuYWxpZ25lZEFjY2Vzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmFs
aWduZWRBY2Nlc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2MEM3NjUyMTI3
Qjg1QzAwQzkwRjBFIC8qIFVuZXhwZWN0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVW5leHBlY3RlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzY4OTVD
QjIzQTQ0NUNEMDA4REQ0QzggLyogUGFja2VkUmVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhY2tlZFJl
Zi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzgxLDYgKzc4Myw3IEBACiAJCUUz
RTBGMDRGMjYxOTcxNTcwMDQ2NDBGQyAvKiBGaXhlZFZlY3Rvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
aXhlZFZlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0UxNTgyNTFFQURB
NTNDMDA0QTA3OUQgLyogU3lzdGVtRnJlZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTeXN0ZW1GcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRTY0RjBC
MjI4MTM0MjgwMDFFNTVCNCAvKiBOb25tb3ZhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vbm1vdmFi
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNFODE2MkYyNzY0Nzk5MzAwQkFB
NDVCIC8qIFJlZkNvdW50ZWRGaXhlZFZlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWZDb3VudGVk
Rml4ZWRWZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQxOUYyRTYyM0FC
OUUyMzAwQjI2MTI5IC8qIFZlY3Rvckhhc2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVmVjdG9ySGFzaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDMxQ0M0
QTIxMTg3QURCMDAwQzhBMDcgLyogRGlzcGF0Y2hTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRGlzcGF0Y2hTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTRBMEFEMzcxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTA3MSw2ICsxMDc0LDcgQEAKIAkJCQlBOEE0NzI4MDE1MUE4MjVBMDA0MTIz
RkYgLyogRG91Ymx5TGlua2VkTGlzdC5oICovLAogCQkJCUE4QTQ3Mjk3MTUxQTgyNUEwMDQxMjNG
RiAvKiBkdG9hLmNwcCAqLywKIAkJCQlBOEE0NzI5ODE1MUE4MjVBMDA0MTIzRkYgLyogZHRvYS5o
ICovLAorCQkJCUUzNTM4RDRDMjc2MjIwODgwMDc1REE1MCAvKiBFbWJlZGRlZEZpeGVkVmVjdG9y
LmggKi8sCiAJCQkJNTMzOEVCQTQyM0FCMDREMTAwMzgyNjYyIC8qIEVudW1DbGFzc09wZXJhdG9y
T3ZlcmxvYWRzLmggKi8sCiAJCQkJMUFFQTg4RTExRDZCQkNGNDAwRTVBRDY0IC8qIEVudW1UcmFp
dHMuaCAqLywKIAkJCQlBRDdDNDM0QTFERDJBNEE3MDAyNjg4OEIgLyogRXhwZWN0ZWQuaCAqLywK
QEAgLTEyNjcsNiArMTI3MSw3IEBACiAJCQkJQThBNDcyRkYxNTFBODI1QjAwNDEyM0ZGIC8qIFJl
ZkNvdW50ZWQuaCAqLywKIAkJCQkwRkE2RjM5MDIwQ0M2MUVCMDBBMDNEQ0QgLyogUmVmQ291bnRl
ZEFycmF5LmNwcCAqLywKIAkJCQlBOEE0NzMwMDE1MUE4MjVCMDA0MTIzRkYgLyogUmVmQ291bnRl
ZEFycmF5LmggKi8sCisJCQkJRTNFODE2MkYyNzY0Nzk5MzAwQkFBNDVCIC8qIFJlZkNvdW50ZWRG
aXhlZFZlY3Rvci5oICovLAogCQkJCUE4QTQ3MzAxMTUxQTgyNUIwMDQxMjNGRiAvKiBSZWZDb3Vu
dGVkTGVha0NvdW50ZXIuY3BwICovLAogCQkJCUE4QTQ3MzAyMTUxQTgyNUIwMDQxMjNGRiAvKiBS
ZWZDb3VudGVkTGVha0NvdW50ZXIuaCAqLywKIAkJCQk4NkY0NkY1RjFBMjg0MEVFMDBDQ0JGMjIg
LyogUmVmQ291bnRlci5oICovLApAQCAtMTM1Nyw2ICsxMzYyLDcgQEAKIAkJCQkwRjcwNzVGMzFG
QkY1MzdBMDA0ODlBRjAgLyogVGltaW5nU2NvcGUuaCAqLywKIAkJCQk1NTMwNzFDOTFDNDA0Mjcy
MDAzODQ4OTggLyogVGlueUxSVUNhY2hlLmggKi8sCiAJCQkJMEZFRDY3QjUxQjIyRDREODAwNjZD
RTE1IC8qIFRpbnlQdHJTZXQuaCAqLywKKwkJCQlFMzUzOEQ0RDI3NjIyMDg4MDA3NURBNTAgLyog
VHJhaWxpbmdBcnJheS5oICovLAogCQkJCTUyMUNDNkIzMjRBMjc3QzIwMDQzNzdENiAvKiBUcmFu
c2xhdGVkUHJvY2Vzcy5jcHAgKi8sCiAJCQkJMkQxRjJGNDYyNDk4RjczMzAwQzYzQTgzIC8qIFRy
YW5zbGF0ZWRQcm9jZXNzLmggKi8sCiAJCQkJMTQ5RUYxNjIxNkJCRkUwRDAwMEE0MzMxIC8qIFRy
aVN0YXRlLmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IGRlMWRiZjY3MzNhNTg3ZjlhZTky
NWI3ZWUzYmFiZmM4NWYxYWI0NzkuLmUyMGEwYjMzMjk2ZjlmYjJkYThmMTE0YzJiODEzZjRjNmJl
MzM1M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC02Miw2ICs2Miw3IEBAIHNldChXVEZfUFVC
TElDX0hFQURFUlMKICAgICBEaXNhbGxvd0NUeXBlLmgKICAgICBEb21pbmF0b3JzLmgKICAgICBE
b3VibHlMaW5rZWRMaXN0LmgKKyAgICBFbWJlZGRlZEZpeGVkVmVjdG9yLmgKICAgICBFbnVtQ2xh
c3NPcGVyYXRvck92ZXJsb2Fkcy5oCiAgICAgRW51bVRyYWl0cy5oCiAgICAgRXhwZWN0ZWQuaApA
QCAtMjE5LDYgKzIyMCw3IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMKICAgICBSZWYuaAogICAg
IFJlZkNvdW50ZWQuaAogICAgIFJlZkNvdW50ZWRBcnJheS5oCisgICAgUmVmQ291bnRlZEZpeGVk
VmVjdG9yLmgKICAgICBSZWZDb3VudGVkTGVha0NvdW50ZXIuaAogICAgIFJlZkNvdW50ZXIuaAog
ICAgIFJlZlB0ci5oCkBAIC0yODksNiArMjkxLDcgQEAgc2V0KFdURl9QVUJMSUNfSEVBREVSUwog
ICAgIFRpbWluZ1Njb3BlLmgKICAgICBUaW55TFJVQ2FjaGUuaAogICAgIFRpbnlQdHJTZXQuaAor
ICAgIFRyYWlsaW5nQXJyYXkuaAogICAgIFRyYW5zbGF0ZWRQcm9jZXNzLmgKICAgICBUcmlTdGF0
ZS5oCiAgICAgVHlwZUNhc3RzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0VtYmVkZGVk
Rml4ZWRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0VtYmVkZGVkRml4ZWRWZWN0b3IuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xNzc3OTE4ZTAxYWI4MGZkZTY2OWVkOWRmNDE3YzlmZTJkMWM0ZTYyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dURi93dGYvRW1iZWRkZWRGaXhlZFZlY3Rvci5oCkBAIC0wLDAg
KzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3
dGYvTm9ubW92YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9UcmFpbGluZ0FycmF5Lmg+CisjaW5jbHVk
ZSA8d3RmL1VuaXF1ZVJlZi5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5h
bWUgVD4KK2NsYXNzIEVtYmVkZGVkRml4ZWRWZWN0b3IgZmluYWwgOiBwdWJsaWMgVHJhaWxpbmdB
cnJheTxFbWJlZGRlZEZpeGVkVmVjdG9yPFQ+LCBUPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQoRW1iZWRkZWRGaXhlZFZlY3Rvcik7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRW1i
ZWRkZWRGaXhlZFZlY3Rvcik7CisgICAgV1RGX01BS0VfTk9OTU9WQUJMRShFbWJlZGRlZEZpeGVk
VmVjdG9yKTsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gVHJhaWxpbmdBcnJheTxFbWJlZGRl
ZEZpeGVkVmVjdG9yPFQ+LCBUPjsKKworICAgIHN0YXRpYyBVbmlxdWVSZWY8RW1iZWRkZWRGaXhl
ZFZlY3Rvcj4gY3JlYXRlKHVuc2lnbmVkIHNpemUpCisgICAgeworICAgICAgICByZXR1cm4gVW5p
cXVlUmVmIHsgKm5ldyAoTm90TnVsbCwgZmFzdE1hbGxvYyhCYXNlOjphbGxvY2F0aW9uU2l6ZShz
aXplKSkpIEVtYmVkZGVkRml4ZWRWZWN0b3Ioc2l6ZSkgfTsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yPgorICAgIHN0YXRpYyBVbmlxdWVSZWY8RW1iZWRkZWRG
aXhlZFZlY3Rvcj4gY3JlYXRlKElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3IgbGFz
dCkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHNpemUgPSBzdGQ6OmRpc3RhbmNlKGZpcnN0LCBs
YXN0KTsKKyAgICAgICAgcmV0dXJuIFVuaXF1ZVJlZiB7ICpuZXcgKE5vdE51bGwsIGZhc3RNYWxs
b2MoQmFzZTo6YWxsb2NhdGlvblNpemUoc2l6ZSkpKSBFbWJlZGRlZEZpeGVkVmVjdG9yKHNpemUs
IGZpcnN0LCBsYXN0KSB9OworICAgIH0KKworICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPgorICAgIHN0YXRpYyBVbmlxdWVSZWY8RW1i
ZWRkZWRGaXhlZFZlY3Rvcj4gY3JlYXRlRnJvbVZlY3Rvcihjb25zdCBWZWN0b3I8VCwgaW5saW5l
Q2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4mIG90aGVyKQorICAgIHsKKyAgICAgICAgdW5zaWdu
ZWQgc2l6ZSA9IHN0ZDo6c2l6ZShvdGhlcik7CisgICAgICAgIHJldHVybiBVbmlxdWVSZWYgeyAq
bmV3IChOb3ROdWxsLCBmYXN0TWFsbG9jKEJhc2U6OmFsbG9jYXRpb25TaXplKHNpemUpKSkgRW1i
ZWRkZWRGaXhlZFZlY3RvcihzaXplLCBzdGQ6OmJlZ2luKG90aGVyKSwgc3RkOjplbmQob3RoZXIp
KSB9OworICAgIH0KKworICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5h
bWUgT3ZlcmZsb3dIYW5kbGVyPgorICAgIHN0YXRpYyBVbmlxdWVSZWY8RW1iZWRkZWRGaXhlZFZl
Y3Rvcj4gY3JlYXRlRnJvbVZlY3RvcihWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93
SGFuZGxlcj4mJiBvdGhlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0
eSwgT3ZlcmZsb3dIYW5kbGVyPiBjb250YWluZXIgPSBXVEZNb3ZlKG90aGVyKTsKKyAgICAgICAg
dW5zaWduZWQgc2l6ZSA9IHN0ZDo6c2l6ZShjb250YWluZXIpOworICAgICAgICByZXR1cm4gVW5p
cXVlUmVmIHsgKm5ldyAoTm90TnVsbCwgZmFzdE1hbGxvYyhCYXNlOjphbGxvY2F0aW9uU2l6ZShz
aXplKSkpIEVtYmVkZGVkRml4ZWRWZWN0b3Ioc2l6ZSwgc3RkOjptb3ZlX2l0ZXJhdG9yIHsgc3Rk
OjpiZWdpbihjb250YWluZXIpIH0sIHN0ZDo6bW92ZV9pdGVyYXRvciB7IHN0ZDo6ZW5kKGNvbnRh
aW5lcikgfSkgfTsKKyAgICB9CisKKyAgICBVbmlxdWVSZWY8RW1iZWRkZWRGaXhlZFZlY3Rvcj4g
Y2xvbmUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZShCYXNlOjpiZWdpbigp
LCBCYXNlOjplbmQoKSk7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEVtYmVk
ZGVkRml4ZWRWZWN0b3ImIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRo
aXMgPT0gb3RoZXIpOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFbWJlZGRl
ZEZpeGVkVmVjdG9yJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChCYXNlOjpzaXpl
KCkgIT0gb3RoZXIuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgQmFzZTo6c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAg
IGlmIChCYXNlOjphdChpKSAhPSBvdGhlci5hdChpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCitwcml2YXRl
OgorICAgIEVtYmVkZGVkRml4ZWRWZWN0b3IodW5zaWduZWQgc2l6ZSkKKyAgICAgICAgOiBCYXNl
KHNpemUpCisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIElucHV0SXRlcmF0
b3I+CisgICAgRW1iZWRkZWRGaXhlZFZlY3Rvcih1bnNpZ25lZCBzaXplLCBJbnB1dEl0ZXJhdG9y
IGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QpCisgICAgICAgIDogQmFzZShzaXplLCBmaXJzdCwg
bGFzdCkKKyAgICB7CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdU
Rjo6RW1iZWRkZWRGaXhlZFZlY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpeGVk
VmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaXhlZFZlY3Rvci5oCmluZGV4IDMyOGY5ODE1MTBi
ZjdiNjRmNzMwZjFhYmI4ZWUxMTA4MzM3NmMxZDQuLjIyOTQzNjZmMDg4MjkxMTdjNjA2OGE0ZDFm
NzRjZWNlN2UxYTQ2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpeGVkVmVjdG9yLmgK
KysrIGIvU291cmNlL1dURi93dGYvRml4ZWRWZWN0b3IuaApAQCAtMjUsNiArMjUsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPHd0Zi9FbWJlZGRlZEZpeGVkVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWRBcnJheS5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTM0LDYg
KzM1LDcgQEAgbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogY2xhc3MgRml4
ZWRWZWN0b3IgewogcHVibGljOgorICAgIHVzaW5nIFN0b3JhZ2UgPSBFbWJlZGRlZEZpeGVkVmVj
dG9yPFQ+OwogICAgIHVzaW5nIGl0ZXJhdG9yID0gVCo7CiAgICAgdXNpbmcgY29uc3RfaXRlcmF0
b3IgPSBjb25zdCBUKjsKICAgICB1c2luZyByZXZlcnNlX2l0ZXJhdG9yID0gc3RkOjpyZXZlcnNl
X2l0ZXJhdG9yPGl0ZXJhdG9yPjsKQEAgLTQxLDcgKzQzLDcgQEAgY2xhc3MgRml4ZWRWZWN0b3Ig
ewogCiAgICAgRml4ZWRWZWN0b3IoKSA9IGRlZmF1bHQ7CiAgICAgRml4ZWRWZWN0b3IoY29uc3Qg
Rml4ZWRWZWN0b3ImIG90aGVyKQotICAgICAgICA6IG1fc3RvcmFnZShvdGhlci5tX3N0b3JhZ2Uu
Y2xvbmUoKSkKKyAgICAgICAgOiBtX3N0b3JhZ2Uob3RoZXIubV9zdG9yYWdlID8gb3RoZXIubV9z
dG9yYWdlLT5jbG9uZSgpLm1vdmVUb1VuaXF1ZVB0cigpIDogbnVsbHB0cikKICAgICB7IH0KICAg
ICBGaXhlZFZlY3RvcihGaXhlZFZlY3RvciYmIG90aGVyKSA9IGRlZmF1bHQ7CiAKQEAgLTYwLDc2
ICs2MiwxMDIgQEAgY2xhc3MgRml4ZWRWZWN0b3IgewogICAgIH0KIAogICAgIGV4cGxpY2l0IEZp
eGVkVmVjdG9yKHNpemVfdCBzaXplKQotICAgICAgICA6IG1fc3RvcmFnZShzaXplKQorICAgICAg
ICA6IG1fc3RvcmFnZShzaXplID8gU3RvcmFnZTo6Y3JlYXRlKHNpemUpLm1vdmVUb1VuaXF1ZVB0
cigpIDogbnVsbHB0cikKICAgICB7IH0KIAogICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPgogICAgIGV4cGxpY2l0IEZpeGVkVmVjdG9y
KGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiYgb3RoZXIp
Ci0gICAgICAgIDogbV9zdG9yYWdlKG90aGVyKQorICAgICAgICA6IG1fc3RvcmFnZShvdGhlci5p
c0VtcHR5KCkgPyBudWxscHRyIDogU3RvcmFnZTo6Y3JlYXRlRnJvbVZlY3RvcihvdGhlcikubW92
ZVRvVW5pcXVlUHRyKCkpCiAgICAgeyB9CiAKICAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2Fw
YWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4KICAgICBGaXhlZFZlY3RvciYgb3BlcmF0
b3I9KGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiYgb3Ro
ZXIpCiAgICAgewotICAgICAgICBtX3N0b3JhZ2UgPSBvdGhlcjsKKyAgICAgICAgbV9zdG9yYWdl
ID0gb3RoZXIuaXNFbXB0eSgpID8gbnVsbHB0ciA6IFN0b3JhZ2U6OmNyZWF0ZUZyb21WZWN0b3Io
b3RoZXIpLm1vdmVUb1VuaXF1ZVB0cigpOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQog
CiAgICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hh
bmRsZXI+CiAgICAgZXhwbGljaXQgRml4ZWRWZWN0b3IoVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5
LCBPdmVyZmxvd0hhbmRsZXI+JiYgb3RoZXIpCi0gICAgICAgIDogbV9zdG9yYWdlKFdURk1vdmUo
b3RoZXIpKQotICAgIHsgfQorICAgIHsKKyAgICAgICAgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5
LCBPdmVyZmxvd0hhbmRsZXI+IHRhcmdldCA9IFdURk1vdmUob3RoZXIpOworICAgICAgICBtX3N0
b3JhZ2UgPSB0YXJnZXQuaXNFbXB0eSgpID8gbnVsbHB0ciA6IFN0b3JhZ2U6OmNyZWF0ZUZyb21W
ZWN0b3IoV1RGTW92ZSh0YXJnZXQpKS5tb3ZlVG9VbmlxdWVQdHIoKTsKKyAgICB9CiAKICAgICB0
ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4K
ICAgICBGaXhlZFZlY3RvciYgb3BlcmF0b3I9KFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3Zl
cmZsb3dIYW5kbGVyPiYmIG90aGVyKQogICAgIHsKLSAgICAgICAgbV9zdG9yYWdlID0gV1RGTW92
ZShvdGhlcik7CisgICAgICAgIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5k
bGVyPiB0YXJnZXQgPSBXVEZNb3ZlKG90aGVyKTsKKyAgICAgICAgbV9zdG9yYWdlID0gdGFyZ2V0
LmlzRW1wdHkoKSA/IG51bGxwdHIgOiBTdG9yYWdlOjpjcmVhdGVGcm9tVmVjdG9yKFdURk1vdmUo
dGFyZ2V0KSkubW92ZVRvVW5pcXVlUHRyKCk7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9
CiAKLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZS5zaXplKCk7IH0K
LSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UuaXNFbXB0eSgpOyB9
Ci0gICAgc2l6ZV90IGJ5dGVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlLmJ5dGVTaXpl
KCk7IH0KKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZSA/IG1fc3Rv
cmFnZS0+c2l6ZSgpIDogMDsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RvcmFnZSA/IG1fc3RvcmFnZS0+aXNFbXB0eSgpIDogdHJ1ZTsgfQorICAgIHNpemVfdCBieXRl
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZSA/IG1fc3RvcmFnZS0+Ynl0ZVNpemUoKSA6
IDA7IH0KIAotICAgIFQqIGRhdGEoKSB7IHJldHVybiBtX3N0b3JhZ2UuZGF0YSgpOyB9Ci0gICAg
aXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBtX3N0b3JhZ2UuYmVnaW4oKTsgfQotICAgIGl0ZXJh
dG9yIGVuZCgpIHsgcmV0dXJuIG1fc3RvcmFnZS5lbmQoKTsgfQorICAgIFQqIGRhdGEoKSB7IHJl
dHVybiBtX3N0b3JhZ2UgPyBtX3N0b3JhZ2UtPmRhdGEoKSA6IG51bGxwdHI7IH0KKyAgICBpdGVy
YXRvciBiZWdpbigpIHsgcmV0dXJuIG1fc3RvcmFnZSA/IG1fc3RvcmFnZS0+YmVnaW4oKSA6IG51
bGxwdHI7IH0KKyAgICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiBtX3N0b3JhZ2UgPyBtX3N0b3Jh
Z2UtPmVuZCgpIDogbnVsbHB0cjsgfQogCiAgICAgY29uc3QgVCogZGF0YSgpIGNvbnN0IHsgcmV0
dXJuIGNvbnN0X2Nhc3Q8Rml4ZWRWZWN0b3IqPih0aGlzKS0+ZGF0YSgpOyB9CiAgICAgY29uc3Rf
aXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEZpeGVkVmVjdG9yKj4o
dGhpcyktPmJlZ2luKCk7IH0KICAgICBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVy
biBjb25zdF9jYXN0PEZpeGVkVmVjdG9yKj4odGhpcyktPmVuZCgpOyB9CiAKLSAgICByZXZlcnNl
X2l0ZXJhdG9yIHJiZWdpbigpIHsgcmV0dXJuIG1fc3RvcmFnZS5yYmVnaW4oKTsgfQotICAgIHJl
dmVyc2VfaXRlcmF0b3IgcmVuZCgpIHsgcmV0dXJuIG1fc3RvcmFnZS5yZW5kKCk7IH0KLSAgICBj
b25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZS5y
YmVnaW4oKTsgfQotICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmVuZCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RvcmFnZS5yZW5kKCk7IH0KKyAgICByZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIHsg
cmV0dXJuIG1fc3RvcmFnZSA/IG1fc3RvcmFnZS0+cmJlZ2luKCkgOiByZXZlcnNlX2l0ZXJhdG9y
KG51bGxwdHIpOyB9CisgICAgcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkgeyByZXR1cm4gbV9zdG9y
YWdlID8gbV9zdG9yYWdlLT5yZW5kKCkgOiByZXZlcnNlX2l0ZXJhdG9yKG51bGxwdHIpOyB9Cisg
ICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX3N0b3Jh
Z2UgPyBtX3N0b3JhZ2UtPnJiZWdpbigpIDogY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihudWxscHRy
KTsgfQorICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmVuZCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RvcmFnZSA/IG1fc3RvcmFnZS0+cmVuZCgpIDogY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihudWxs
cHRyKTsgfQogCi0gICAgVCYgYXQoc2l6ZV90IGkpIHsgcmV0dXJuIG1fc3RvcmFnZS5hdChpKTsg
fQotICAgIGNvbnN0IFQmIGF0KHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UuYXQo
aSk7IH0KKyAgICBUJiBhdChzaXplX3QgaSkgeyByZXR1cm4gbV9zdG9yYWdlLT5hdChpKTsgfQor
ICAgIGNvbnN0IFQmIGF0KHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2UtPmF0KGkp
OyB9CiAKLSAgICBUJiBvcGVyYXRvcltdKHNpemVfdCBpKSB7IHJldHVybiBhdChpKTsgfQotICAg
IGNvbnN0IFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIGF0KGkpOyB9Cisg
ICAgVCYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyByZXR1cm4gbV9zdG9yYWdlLT5hdChpKTsgfQor
ICAgIGNvbnN0IFQmIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFn
ZS0+YXQoaSk7IH0KIAogICAgIFQmIGZpcnN0KCkgeyByZXR1cm4gKCp0aGlzKVswXTsgfQogICAg
IGNvbnN0IFQmIGZpcnN0KCkgY29uc3QgeyByZXR1cm4gKCp0aGlzKVswXTsgfQogICAgIFQmIGxh
c3QoKSB7IHJldHVybiAoKnRoaXMpW3NpemUoKSAtIDFdOyB9CiAgICAgY29uc3QgVCYgbGFzdCgp
IGNvbnN0IHsgcmV0dXJuICgqdGhpcylbc2l6ZSgpIC0gMV07IH0KIAotICAgIHZvaWQgZmlsbChj
b25zdCBUJiB2YWwpIHsgbV9zdG9yYWdlLmZpbGwodmFsKTsgfQorICAgIHZvaWQgZmlsbChjb25z
dCBUJiB2YWwpCisgICAgeworICAgICAgICBpZiAoIW1fc3RvcmFnZSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgbV9zdG9yYWdlLT5maWxsKHZhbCk7CisgICAgfQogCi0gICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IEZpeGVkVmVjdG9yPFQ+JiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9z
dG9yYWdlID09IG90aGVyLm1fc3RvcmFnZTsgfQorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBG
aXhlZFZlY3RvcjxUPiYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhp
cyA9PSBvdGhlcik7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpeGVkVmVj
dG9yPFQ+JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghbV9zdG9yYWdlKSB7Cisg
ICAgICAgICAgICBpZiAoIW90aGVyLm1fc3RvcmFnZSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBvdGhlci5tX3N0b3JhZ2UtPmlzRW1wdHkoKTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoIW90aGVyLm1fc3RvcmFnZSkKKyAgICAgICAgICAgIHJldHVy
biBtX3N0b3JhZ2UtPmlzRW1wdHkoKTsKKyAgICAgICAgcmV0dXJuICptX3N0b3JhZ2UgPT0gKm90
aGVyLm1fc3RvcmFnZTsKKyAgICB9CiAKICAgICB2b2lkIHN3YXAoRml4ZWRWZWN0b3I8VD4mIG90
aGVyKQogICAgIHsKLSAgICAgICAgbV9zdG9yYWdlLnN3YXAob3RoZXIubV9zdG9yYWdlKTsKKyAg
ICAgICAgdXNpbmcgc3RkOjpzd2FwOworICAgICAgICBzd2FwKG1fc3RvcmFnZSwgb3RoZXIubV9z
dG9yYWdlKTsKICAgICB9CiAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU3RvcmFnZSgp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihGaXhlZFZlY3RvciwgbV9zdG9yYWdlKTsgfQogCisg
ICAgU3RvcmFnZSogZ2V0U3RvcmFnZSgpIHsgcmV0dXJuIG1fc3RvcmFnZS5nZXQoKTsgfQorCiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAot
ICAgIFJlZkNvdW50ZWRBcnJheTxUPiBtX3N0b3JhZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRyPFN0
b3JhZ2U+IG1fc3RvcmFnZTsKIH07CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihGaXhlZFZlY3Rvcjxp
bnQ+KSA9PSBzaXplb2YoaW50KikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZWZD
b3VudGVkRml4ZWRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRGaXhlZFZlY3Rv
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjEyZjMzNzNlMTk2ZDdlZTIwMmMzZTk4NWIyOGFiMmU3ZTFiZWJiNzYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkRml4ZWRWZWN0b3Iu
aApAQCAtMCwwICsxLDExMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisjaW5jbHVk
ZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1RyYWlsaW5nQXJyYXkuaD4K
KworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIGJvb2wgaXNUaHJlYWRT
YWZlPgorY2xhc3MgUmVmQ291bnRlZEZpeGVkVmVjdG9yQmFzZSBmaW5hbCA6IHB1YmxpYyBzdGQ6
OmNvbmRpdGlvbmFsPGlzVGhyZWFkU2FmZSwgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVmQ291bnRl
ZEZpeGVkVmVjdG9yQmFzZTxULCBpc1RocmVhZFNhZmU+PiwgUmVmQ291bnRlZDxSZWZDb3VudGVk
Rml4ZWRWZWN0b3JCYXNlPFQsIGlzVGhyZWFkU2FmZT4+Pjo6dHlwZSwgcHVibGljIFRyYWlsaW5n
QXJyYXk8UmVmQ291bnRlZEZpeGVkVmVjdG9yQmFzZTxULCBpc1RocmVhZFNhZmU+LCBUPiB7Citw
dWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IFRyYWlsaW5nQXJyYXk8UmVmQ291bnRlZEZpeGVkVmVj
dG9yQmFzZTxULCBpc1RocmVhZFNhZmU+LCBUPjsKKworICAgIHN0YXRpYyBSZWY8UmVmQ291bnRl
ZEZpeGVkVmVjdG9yQmFzZT4gY3JlYXRlKHVuc2lnbmVkIHNpemUpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyAoTm90TnVsbCwgZmFzdE1hbGxvYyhCYXNlOjphbGxvY2F0aW9u
U2l6ZShzaXplKSkpIFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2Uoc2l6ZSkpOworICAgIH0KKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIElucHV0SXRlcmF0b3I+CisgICAgc3RhdGljIFJlZjxSZWZD
b3VudGVkRml4ZWRWZWN0b3JCYXNlPiBjcmVhdGUoSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJ
dGVyYXRvciBsYXN0KQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgc2l6ZSA9IHN0ZDo6ZGlzdGFu
Y2UoZmlyc3QsIGxhc3QpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyAoTm90TnVsbCwg
ZmFzdE1hbGxvYyhCYXNlOjphbGxvY2F0aW9uU2l6ZShzaXplKSkpIFJlZkNvdW50ZWRGaXhlZFZl
Y3RvckJhc2Uoc2l6ZSwgZmlyc3QsIGxhc3QpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxzaXpl
X3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4KKyAgICBzdGF0aWMg
UmVmPFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2U+IGNyZWF0ZUZyb21WZWN0b3IoY29uc3QgVmVj
dG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiBvdGhlcikKKyAgICB7Cisg
ICAgICAgIHVuc2lnbmVkIHNpemUgPSBzdGQ6OnNpemUob3RoZXIpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyAoTm90TnVsbCwgZmFzdE1hbGxvYyhCYXNlOjphbGxvY2F0aW9uU2l6ZShz
aXplKSkpIFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2Uoc2l6ZSwgc3RkOjpiZWdpbihvdGhlciks
IHN0ZDo6ZW5kKG90aGVyKSkpOworICAgIH0KKworICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVD
YXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVyPgorICAgIHN0YXRpYyBSZWY8UmVmQ291
bnRlZEZpeGVkVmVjdG9yQmFzZT4gY3JlYXRlRnJvbVZlY3RvcihWZWN0b3I8VCwgaW5saW5lQ2Fw
YWNpdHksIE92ZXJmbG93SGFuZGxlcj4mJiBvdGhlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxU
LCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiBjb250YWluZXIgPSBXVEZNb3ZlKG90
aGVyKTsKKyAgICAgICAgdW5zaWduZWQgc2l6ZSA9IHN0ZDo6c2l6ZShjb250YWluZXIpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyAoTm90TnVsbCwgZmFzdE1hbGxvYyhCYXNlOjphbGxv
Y2F0aW9uU2l6ZShzaXplKSkpIFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2Uoc2l6ZSwgc3RkOjpt
b3ZlX2l0ZXJhdG9yIHsgc3RkOjpiZWdpbihjb250YWluZXIpIH0sIHN0ZDo6bW92ZV9pdGVyYXRv
ciB7IHN0ZDo6ZW5kKGNvbnRhaW5lcikgfSkpOworICAgIH0KKworICAgIFJlZjxSZWZDb3VudGVk
Rml4ZWRWZWN0b3JCYXNlPiBjbG9uZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gY3Jl
YXRlKEJhc2U6OmJlZ2luKCksIEJhc2U6OmVuZCgpKTsKKyAgICB9CisKKyAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgUmVmQ291bnRlZEZpeGVkVmVjdG9yQmFzZSYgb3RoZXIpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQorCisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFJlZkNvdW50ZWRGaXhlZFZlY3RvckJhc2UmIG90aGVyKSBjb25zdAor
ICAgIHsKKyAgICAgICAgaWYgKEJhc2U6OnNpemUoKSAhPSBvdGhlci5zaXplKCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBCYXNl
OjpzaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKEJhc2U6OmF0KGkpICE9IG90aGVyLmF0
KGkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUmVmQ291bnRlZEZpeGVkVmVjdG9y
QmFzZSh1bnNpZ25lZCBzaXplKQorICAgICAgICA6IEJhc2Uoc2l6ZSkKKyAgICB7CisgICAgfQor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW5wdXRJdGVyYXRvcj4KKyAgICBSZWZDb3VudGVkRml4
ZWRWZWN0b3JCYXNlKHVuc2lnbmVkIHNpemUsIElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRl
cmF0b3IgbGFzdCkKKyAgICAgICAgOiBCYXNlKHNpemUsIGZpcnN0LCBsYXN0KQorICAgIHsKKyAg
ICB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordXNpbmcgUmVmQ291bnRlZEZpeGVkVmVj
dG9yID0gUmVmQ291bnRlZEZpeGVkVmVjdG9yQmFzZTxULCBmYWxzZT47Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgordXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50ZWRGaXhlZFZlY3RvciA9IFJlZkNvdW50
ZWRGaXhlZFZlY3RvckJhc2U8VCwgdHJ1ZT47CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2lu
ZyBXVEY6OlJlZkNvdW50ZWRGaXhlZFZlY3RvcjsKK3VzaW5nIFdURjo6VGhyZWFkU2FmZVJlZkNv
dW50ZWRGaXhlZFZlY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RyYWlsaW5nQXJy
YXkuaCBiL1NvdXJjZS9XVEYvd3RmL1RyYWlsaW5nQXJyYXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NWMyNmU3
NmZkOTE4NjhjMzdlMjE0MjNmNjI5YjRmNTExNzg3YTMzCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dURi93dGYvVHJhaWxpbmdBcnJheS5oCkBAIC0wLDAgKzEsMTQxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx0eXBlX3RyYWl0cz4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV1RGIHsKKworLy8gVHJhaWxpbmdBcnJheSBv
ZmZlcnMgdGhlIGZlYXR1cmUgdHJhaWxpbmcgYXJyYXkgaW4gdGhlIGRlcml2ZWQgY2xhc3MuCisv
LyBXZSBjYW4gYWxsb2NhdGUgYSBtZW1vcnkgbGlrZSB0aGUgZm9sbG93aW5nIGxheW91dC4KKy8v
CisvLyAgICAgWyAgRGVyaXZlZENsYXNzICBdWyBUcmFpbGluZyBBcnJheSBdCisvLworLy8gQW5k
IHRyYWlsaW5nIGFycmF5IG9mZmVycyBhcHByb3ByaWF0ZSBtZXRob2RzIGZvciBhY2Nlc3Npbmcg
YW5kIGRlc3RydWN0aW9ucy4KK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIFQ+
CitjbGFzcyBUcmFpbGluZ0FycmF5IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUcmFpbGlu
Z0FycmF5KTsKKyAgICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7Citw
dWJsaWM6CisgICAgdXNpbmcgdmFsdWVfdHlwZSA9IFQ7CisgICAgdXNpbmcgcG9pbnRlciA9IFQq
OworICAgIHVzaW5nIHJlZmVyZW5jZSA9IFQmOworICAgIHVzaW5nIGNvbnN0X3JlZmVyZW5jZSA9
IGNvbnN0IFQmOworICAgIHVzaW5nIGNvbnN0X3BvaW50ZXIgPSBjb25zdCBUKjsKKyAgICB1c2lu
ZyBzaXplX3R5cGUgPSB1bnNpZ25lZDsKKyAgICB1c2luZyBkaWZmZXJlbmNlX3R5cGUgPSBzdGQ6
Om1ha2Vfc2lnbmVkX3Q8c2l6ZV90eXBlPjsKKyAgICB1c2luZyBpdGVyYXRvciA9IFQqOworICAg
IHVzaW5nIGNvbnN0X2l0ZXJhdG9yID0gY29uc3QgVCo7CisgICAgdXNpbmcgcmV2ZXJzZV9pdGVy
YXRvciA9IHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj47CisgICAgdXNpbmcgY29uc3Rf
cmV2ZXJzZV9pdGVyYXRvciA9IHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxjb25zdF9pdGVyYXRvcj47
CisKKyAgICBleHBsaWNpdCBUcmFpbGluZ0FycmF5KHVuc2lnbmVkIHNpemUpCisgICAgICAgIDog
bV9zaXplKHNpemUpCisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfZmluYWxf
djxEZXJpdmVkPik7CisgICAgICAgIFZlY3RvclR5cGVPcGVyYXRpb25zPFQ+Ojppbml0aWFsaXpl
SWZOb25QT0QoYmVnaW4oKSwgZW5kKCkpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IElucHV0SXRlcmF0b3I+CisgICAgVHJhaWxpbmdBcnJheSh1bnNpZ25lZCBzaXplLCBJbnB1dEl0
ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QpCisgICAgICAgIDogbV9zaXplKHNpemUp
CisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfZmluYWxfdjxEZXJpdmVkPik7
CisgICAgICAgIEFTU0VSVChzdGQ6OmRpc3RhbmNlKGZpcnN0LCBsYXN0KSA9PSBzaXplKTsKKyAg
ICAgICAgc3RkOjp1bmluaXRpYWxpemVkX2NvcHkoZmlyc3QsIGxhc3QsIGJlZ2luKCkpOworICAg
IH0KKworICAgIH5UcmFpbGluZ0FycmF5KCkKKyAgICB7CisgICAgICAgIFZlY3RvclR5cGVPcGVy
YXRpb25zPFQ+OjpkZXN0cnVjdChiZWdpbigpLCBlbmQoKSk7CisgICAgfQorCisgICAgc3RhdGlj
IGNvbnN0ZXhwciBzaXplX3QgYWxsb2NhdGlvblNpemUodW5zaWduZWQgc2l6ZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBvZmZzZXRPZkRhdGEoKSArIHNpemUgKiBzaXplb2YoVCk7CisgICAgfQor
CisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFzaXplKCk7IH0KKyAgICB1bnNpZ25lZCBieXRlU2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIHNpemUoKSAqIHNpemVvZihUKTsgfQorCisgICAgcG9pbnRlciBk
YXRhKCkgeyByZXR1cm4gYml0d2lzZV9jYXN0PFQqPihiaXR3aXNlX2Nhc3Q8dWludDhfdCo+KHN0
YXRpY19jYXN0PERlcml2ZWQqPih0aGlzKSkgKyBvZmZzZXRPZkRhdGEoKSk7IH0KKyAgICBjb25z
dF9wb2ludGVyIGRhdGEoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8Y29uc3QgVCo+KGJp
dHdpc2VfY2FzdDxjb25zdCB1aW50OF90Kj4oc3RhdGljX2Nhc3Q8Y29uc3QgRGVyaXZlZCo+KHRo
aXMpKSArIG9mZnNldE9mRGF0YSgpKTsgfQorCisgICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJldHVy
biBkYXRhKCk7IH0KKyAgICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiBkYXRhKCkgKyBzaXplKCk7
IH0KKyAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGNiZWdpbigpOyB9
CisgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gY2VuZCgpOyB9CisgICAg
Y29uc3RfaXRlcmF0b3IgY2JlZ2luKCkgY29uc3QgeyByZXR1cm4gZGF0YSgpOyB9CisgICAgY29u
c3RfaXRlcmF0b3IgY2VuZCgpIGNvbnN0IHsgcmV0dXJuIGRhdGEoKSArIHNpemUoKTsgfQorCisg
ICAgcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGVu
ZCgpKTsgfQorICAgIHJldmVyc2VfaXRlcmF0b3IgcmVuZCgpIHsgcmV0dXJuIHJldmVyc2VfaXRl
cmF0b3IoYmVnaW4oKSk7IH0KKyAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIGNv
bnN0IHsgcmV0dXJuIGNyYmVnaW4oKTsgfQorICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmVu
ZCgpIGNvbnN0IHsgcmV0dXJuIGNyZW5kKCk7IH0KKyAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9y
IGNyYmVnaW4oKSBjb25zdCB7IHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsg
fQorICAgIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgY3JlbmQoKSBjb25zdCB7IHJldHVybiBjb25z
dF9yZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOyB9CisKKyAgICByZWZlcmVuY2UgYXQodW5zaWdu
ZWQgaSkKKyAgICB7CisgICAgICAgIEFTU0VSVChpIDwgc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJu
IGJlZ2luKClbaV07CisgICAgfQorCisgICAgY29uc3RfcmVmZXJlbmNlIGF0KHVuc2lnbmVkIGkp
IGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaSA8IHNpemUoKSk7CisgICAgICAgIHJldHVy
biBiZWdpbigpW2ldOworICAgIH0KKworICAgIHJlZmVyZW5jZSBvcGVyYXRvcltdKHVuc2lnbmVk
IGkpIHsgcmV0dXJuIGF0KGkpOyB9CisgICAgY29uc3RfcmVmZXJlbmNlIG9wZXJhdG9yW10odW5z
aWduZWQgaSkgY29uc3QgeyByZXR1cm4gYXQoaSk7IH0KKworICAgIFQmIGZpcnN0KCkgeyByZXR1
cm4gKCp0aGlzKVswXTsgfQorICAgIGNvbnN0IFQmIGZpcnN0KCkgY29uc3QgeyByZXR1cm4gKCp0
aGlzKVswXTsgfQorICAgIFQmIGxhc3QoKSB7IHJldHVybiAoKnRoaXMpW3NpemUoKSAtIDFdOyB9
CisgICAgY29uc3QgVCYgbGFzdCgpIGNvbnN0IHsgcmV0dXJuICgqdGhpcylbc2l6ZSgpIC0gMV07
IH0KKworICAgIHZvaWQgZmlsbChjb25zdCBUJiB2YWwpCisgICAgeworICAgICAgICBzdGQ6OmZp
bGwoYmVnaW4oKSwgZW5kKCksIHZhbCk7CisgICAgfQorCisgICAgc3RhdGljIHB0cmRpZmZfdCBv
ZmZzZXRPZlNpemUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRGVyaXZlZCwgbV9zaXplKTsg
fQorICAgIHN0YXRpYyBjb25zdGV4cHIgcHRyZGlmZl90IG9mZnNldE9mRGF0YSgpCisgICAgewor
ICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPGFsaWdub2YoVCk+KHNpemVv
ZihEZXJpdmVkKSk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgdW5zaWduZWQgbV9zaXplIHsg
MCB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6VHJhaWxpbmdBcnJh
eTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5
NmE4ZGJiODNiNzIyNjQ0ZGM2ZjAyZWEzNWYyNTkwMTdhYjljNmJmLi41ZjZmZjg3MTY2NGRkNTdl
ZTY4MTUwMTQwZjZkMjE1ODJjNThkZDk1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjEtMTItMTEgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBJbnRyb2R1Y2UgVHJh
aWxpbmdBcnJheQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM0MjAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0VtYmVkZGVkRml4ZWRWZWN0b3IuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RGVz
dHJ1Y3Rvck9ic2VydmVyOjpEZXN0cnVjdG9yT2JzZXJ2ZXIpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6RGVzdHJ1Y3Rvck9ic2VydmVyOjp+RGVzdHJ1Y3Rvck9ic2VydmVyKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OkRlc3RydWN0b3JPYnNlcnZlcjo6b3BlcmF0b3I9KToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaXhlZFZlY3Rvci5jcHA6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZD
b3VudGVkRml4ZWRWZWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RGVzdHJ1Y3Rvck9ic2VydmVyOjpEZXN0cnVj
dG9yT2JzZXJ2ZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6RGVzdHJ1Y3Rvck9ic2VydmVy
Ojp+RGVzdHJ1Y3Rvck9ic2VydmVyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkRlc3RydWN0
b3JPYnNlcnZlcjo6b3BlcmF0b3I9KToKKwogMjAyMS0xMi0xMCAgRXJpYyBDYXJsc29uICA8ZXJp
Yy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIEFkZCBuZXcgc2NyZWVuIGFu
ZCB3aW5kb3cgY2FwdHVyZSBiYWNrZW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAppbmRl
eCBmY2M5ZmZjNjEyZjZmOTAxN2Q2NDhkNjVmNTMwZTVmNjYzODg1NmU2Li5hMWE5MTQyZmZhOGI1
NWY3N2I1NGU0ZmFlODU2ZGFmZjA5ZWMxYzNiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50
eHQKQEAgLTM4LDYgKzM4LDcgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgIFRlc3RzL1dURi9E
YXRhTXV0ZXguY3BwCiAgICAgVGVzdHMvV1RGL0RhdGVNYXRoLmNwcAogICAgIFRlc3RzL1dURi9E
ZXF1ZS5jcHAKKyAgICBUZXN0cy9XVEYvRW1iZWRkZWRGaXhlZFZlY3Rvci5jcHAKICAgICBUZXN0
cy9XVEYvRW51bVRyYWl0cy5jcHAKICAgICBUZXN0cy9XVEYvRXhwZWN0ZWQuY3BwCiAgICAgVGVz
dHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC03NCw2ICs3NSw3IEBAIHNldChUZXN0V1RGX1NPVVJD
RVMKICAgICBUZXN0cy9XVEYvUHJpb3JpdHlRdWV1ZS5jcHAKICAgICBUZXN0cy9XVEYvUmVkQmxh
Y2tUcmVlLmNwcAogICAgIFRlc3RzL1dURi9SZWYuY3BwCisgICAgVGVzdHMvV1RGL1JlZkNvdW50
ZWRGaXhlZFZlY3Rvci5jcHAKICAgICBUZXN0cy9XVEYvUmVmQ291bnRlci5jcHAKICAgICBUZXN0
cy9XVEYvUmVmTG9nZ2VyLmNwcAogICAgIFRlc3RzL1dURi9SZWZQdHIuY3BwCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDE3OGIzMDljNDVjM2EwNjRmMjhiMDdkYjBmYTkwMGI0NGQ3MTgyOWEu
LmFjZDZjYmUyODBhNDgyMTQyZGM4OWM3OWI4NDk1N2E2NTUxNzU4YmMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC05NjUsNiArOTY1LDcgQEAKIAkJRTEyMjBEQ0ExNTVCMjhBQTAwMTNFMkZD
IC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEyMjBE
QzkxNTVCMjg3RDAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9h
ZERlbGVnYXRlLmh0bWwgKi87IH07CiAJCUUxOTRFMUJEMTc3RTUzQzcwMDlDNEQ0RSAvKiBTdG9w
TG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTk0RTFCQzE3N0U1MzRBMDA5QzRENEUg
LyogU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLmh0bWwgKi87IH07CiAJCUUzMDJC
REFBMjQwNEI5MjQwMDg2NTI3NyAvKiBDb21wYWN0UmVmUHRyVHVwbGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMwMkJEQTkyNDA0QjkyMzAwODY1
Mjc3IC8qIENvbXBhY3RSZWZQdHJUdXBsZS5jcHAgKi87IH07CisJCUUzMTZENDIwMjc2NDdBMDIw
MDI4N0IxNiAvKiBSZWZDb3VudGVkRml4ZWRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMxNkQ0MUYyNzY0N0EwMjAwMjg3QjE2IC8qIFJl
ZkNvdW50ZWRGaXhlZFZlY3Rvci5jcHAgKi87IH07CiAJCUUzMjEwNTE5MjYxOTc5RjMwMDE1N0M2
NyAvKiBGaXhlZFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzIxMDUxODI2MTk3OUYzMDAxNTdDNjcgLyogRml4ZWRWZWN0b3IuY3BwICov
OyB9OwogCQlFMzI0QTZGMDIwNDFDODIwMDBBNzY1OTMgLyogVW5pcXVlQXJyYXkuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5OEJDMEYyMDQxQzc2
MzAwMzg3MTM2IC8qIFVuaXF1ZUFycmF5LmNwcCAqLzsgfTsKIAkJRTMyNUM5MDcyM0UzODcwMjAw
QkM3RDNCIC8qIFBpY3R1cmVJblBpY3R1cmVTdXBwb3J0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMyNUM5MDYyM0UzODcwMjAwQkM3RDNCIC8qIFBp
Y3R1cmVJblBpY3R1cmVTdXBwb3J0Lm1tICovOyB9OwpAQCAtOTc0LDYgKzk3NSw3IEBACiAJCUUz
NTVBNjMyMjYxNTcxOEYwMDFDMTEyOSAvKiBSb2Jpbkhvb2RIYXNoTWFwLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNTVBNjMxMjYxNTcxOEYwMDFD
MTEyOSAvKiBSb2Jpbkhvb2RIYXNoTWFwLmNwcCAqLzsgfTsKIAkJRTM1QjkwODIyM0Y2MEREMDAw
MDAxMUZGIC8qIExvY2FsaXplZERldmljZU1vZGVsLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1QjkwODEyM0Y2MEREMDAwMDAxMUZGIC8qIExvY2Fs
aXplZERldmljZU1vZGVsLm1tICovOyB9OwogCQlFMzVGQzdCMjIyQjgyQTczMDBGMzJGOTggLyog
SlNMb2NrVGFrZXNXZWJUaHJlYWRMb2NrLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM1RkM3QjEyMkI4MkE2RDAwRjMyRjk4IC8qIEpTTG9ja1Rha2Vz
V2ViVGhyZWFkTG9jay5tbSAqLzsgfTsKKwkJRTM2Qjg3QTMyNzYyMjE4NzAwNTlEMkY5IC8qIEVt
YmVkZGVkRml4ZWRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM2Qjg3QTIyNzYyMjE4NjAwNTlEMkY5IC8qIEVtYmVkZGVkRml4ZWRWZWN0
b3IuY3BwICovOyB9OwogCQlFMzczRDc5MTFGMkNGMzUyMDBDNkZBQUYgLyogU2lnbmFscy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk1M0Y5NTFG
MkNGMzIxMDBBNzZBMkUgLyogU2lnbmFscy5jcHAgKi87IH07CiAJCUUzOEEwRDM1MUZENTBDQzMw
MEU5OEM4QiAvKiBUaHJlYWRpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM4QTBEMzQxRkQ1MENCQzAwRTk4QzhCIC8qIFRocmVhZGluZy5jcHAg
Ki87IH07CiAJCUUzOEQ2NUNBMjNBNDVGQUEwMDYzRDY5QSAvKiBQYWNrZWRSZWYuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4RDY1QzgyM0E0NUZB
OTAwNjNENjlBIC8qIFBhY2tlZFJlZi5jcHAgKi87IH07CkBAIC0yODg4LDYgKzI4OTAsNyBAQAog
CQlFMTk0RTFCQTE3N0U1MTQ1MDA5QzRENEUgLyogU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJl
c3BvbnNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU3RvcExv
YWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMTk0RTFCQzE3N0U1MzRBMDA5QzRENEUgLyogU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2
ZVJlc3BvbnNlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9u
c2UuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTMwMkJEQTkyNDA0QjkyMzAw
ODY1Mjc3IC8qIENvbXBhY3RSZWZQdHJUdXBsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDb21wYWN0UmVmUHRyVHVwbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFMzE2RDQxRjI3NjQ3QTAyMDAyODdCMTYgLyogUmVmQ291bnRlZEZpeGVkVmVj
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZkNvdW50ZWRG
aXhlZFZlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzMjEwNTE4MjYx
OTc5RjMwMDE1N0M2NyAvKiBGaXhlZFZlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGaXhlZFZlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzMjVDOTA2MjNFMzg3MDIwMEJDN0QzQiAvKiBQaWN0dXJlSW5QaWN0dXJlU3VwcG9ydC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBpY3R1cmVJblBpY3R1cmVTdXBwb3J0Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzJCNTQ5MTIyODEwQUMwMDA4QUQ3MDIgLyogUGFj
a2VkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhY2tlZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yODk2LDYgKzI4OTksNyBAQAogCQlFMzU1QTYzMTI2MTU3MThGMDAxQzEx
MjkgLyogUm9iaW5Ib29kSGFzaE1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSb2Jpbkhvb2RIYXNoTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTM1QjkwODEyM0Y2MEREMDAwMDAxMUZGIC8qIExvY2FsaXplZERldmljZU1vZGVsLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gTG9jYWxpemVkRGV2aWNlTW9kZWwubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzNUZDN0IxMjJCODJBNkQwMEYzMkY5OCAvKiBKU0xvY2tUYWtl
c1dlYlRocmVhZExvY2subW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBKU0xvY2tUYWtlc1dlYlRocmVhZExvY2subW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzNkI4N0EyMjc2MjIxODYwMDU5RDJGOSAvKiBFbWJlZGRlZEZpeGVkVmVjdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVtYmVkZGVkRml4ZWRWZWN0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg4ODg3MDIwQzkwOTgxMDBFNjMy
QkMgLyogV29ya2VyUG9vbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXb3JrZXJQb29sLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4QTBEMzQx
RkQ1MENCQzAwRTk4QzhCIC8qIFRocmVhZGluZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBUaHJlYWRpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzhENjVDODIzQTQ1RkE5MDA2M0Q2OUEgLyogUGFja2VkUmVmLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhY2tlZFJlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC00NDgzLDYgKzQ0ODcsNyBAQAogCQkJCTdBQTAyMUJBMUFCMDlFQTcwMDUy
OTUzRiAvKiBEYXRlTWF0aC5jcHAgKi8sCiAJCQkJMUEzNTI0QTkxRDYyN0JENDAwMzE3MjlCIC8q
IERlbGV0ZWRBZGRyZXNzT2ZPcGVyYXRvci5oICovLAogCQkJCUU0QTc1N0QzMTc4QUVBNUIwMEI1
RDdBNCAvKiBEZXF1ZS5jcHAgKi8sCisJCQkJRTM2Qjg3QTIyNzYyMjE4NjAwNTlEMkY5IC8qIEVt
YmVkZGVkRml4ZWRWZWN0b3IuY3BwICovLAogCQkJCTFBRjdCMjFEMUQ2Q0QxMkUwMDhDMTI2QyAv
KiBFbnVtVHJhaXRzLmNwcCAqLywKIAkJCQlBRDdDNDM0QzFERDJBNTQ3MDAyNjg4OEIgLyogRXhw
ZWN0ZWQuY3BwICovLAogCQkJCUEzMTA4MjcxMjFGMjk2RUMwMEMyOEI5NyAvKiBGaWxlU3lzdGVt
LmNwcCAqLywKQEAgLTQ1MjUsNiArNDUzMCw3IEBACiAJCQkJNTNFQzI1M0YxRTk2QkM4MDAwMDgz
MUI5IC8qIFByaW9yaXR5UXVldWUuY3BwICovLAogCQkJCTBGQzZDNENCMTQxMDI3RTAwMDVCN0Yw
QyAvKiBSZWRCbGFja1RyZWUuY3BwICovLAogCQkJCTkzQTQyN0FBMTgwREEyNjQwMENEMjRENyAv
KiBSZWYuY3BwICovLAorCQkJCUUzMTZENDFGMjc2NDdBMDIwMDI4N0IxNiAvKiBSZWZDb3VudGVk
Rml4ZWRWZWN0b3IuY3BwICovLAogCQkJCTg2QkQxOTk3MUEyREIwNUIwMDZEQ0YwQSAvKiBSZWZD
b3VudGVyLmNwcCAqLywKIAkJCQk0NDJCQkY2ODFDOTFDQUQ5MDAxNzA4N0YgLyogUmVmTG9nZ2Vy
LmNwcCAqLywKIAkJCQk5M0E0MjdBRDE4MERBNjBGMDBDRDI0RDcgLyogUmVmTG9nZ2VyLmggKi8s
CkBAIC01MjYzLDYgKzUyNjksNyBAQAogCQkJCTVDMkMwMUE4MjczNDg4MzYwMEY4OUQzNyAvKiBD
cm9zc1RocmVhZENvcGllci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVBOTFEMEE1OTBD
MDBGRUJDRjMgLyogQ1N0cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVBRDFEMEE1
OTBDMDBGRUJDRjMgLyogRGVxdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM2Qjg3QTMyNzYy
MjE4NzAwNTlEMkY5IC8qIEVtYmVkZGVkRml4ZWRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUFGN0IyMUYxRDZDRDE0RDAwOEMxMjZDIC8qIEVudW1UcmFpdHMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQUQ3QzQzNEQxREQyQTU0RTAwMjY4ODhCIC8qIEV4cGVjdGVkLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUEzMTA4MjcyMjFGMjk2RkYwMEMyOEI5NyAvKiBGaWxlU3lzdGVtLmNwcCBp
biBTb3VyY2VzICovLApAQCAtNTMwNCw2ICs1MzExLDcgQEAKIAkJCQk1M0VDMjU0MTFFOTZGRDg3
MDAwODMxQjkgLyogUHJpb3JpdHlRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREYx
MzFEMEE1OTBDMDBGRUJDRjMgLyogUmVkQmxhY2tUcmVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTdDODNERjE0MUQwQTU5MEMwMEZFQkNGMyAvKiBSZWYuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
RTMxNkQ0MjAyNzY0N0EwMjAwMjg3QjE2IC8qIFJlZkNvdW50ZWRGaXhlZFZlY3Rvci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3QzgzREYxNTFEMEE1OTBDMDBGRUJDRjMgLyogUmVmQ291bnRlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREVENzFEMEE1OTBDMDBGRUJDRjMgLyogUmVmTG9n
Z2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjE2MUQwQTU5MEMwMEZFQkNGMyAvKiBS
ZWZQdHIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9FbWJlZGRlZEZpeGVkVmVjdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0VtYmVkZGVkRml4ZWRWZWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhN2FiNTI0Y2Jk
ZjBhMThjY2M3NDZhNmM3MGE3NjllNmYwZjA4YzIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9FbWJlZGRlZEZpeGVkVmVjdG9yLmNwcApAQCAtMCwwICsx
LDI3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIk1v
dmVPbmx5LmgiCisjaW5jbHVkZSA8d3RmL0VtYmVkZGVkRml4ZWRWZWN0b3IuaD4KKworbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKFdURl9FbWJlZGRlZEZpeGVkVmVjdG9yLCBFbXB0
eSkKK3sKKyAgICBhdXRvIHZlY3RvciA9IEVtYmVkZGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+Ojpj
cmVhdGUoMCk7CisgICAgRVhQRUNUX1RSVUUodmVjdG9yLT5pc0VtcHR5KCkpOworICAgIEVYUEVD
VF9FUSgwVSwgdmVjdG9yLT5zaXplKCkpOworfQorCitURVNUKFdURl9FbWJlZGRlZEZpeGVkVmVj
dG9yLCBJdGVyYXRvcikKK3sKKyAgICBhdXRvIGludFZlY3RvciA9IEVtYmVkZGVkRml4ZWRWZWN0
b3I8dW5zaWduZWQ+OjpjcmVhdGUoNCk7CisgICAgaW50VmVjdG9yLmdldCgpWzBdID0gMTA7Cisg
ICAgaW50VmVjdG9yLmdldCgpWzFdID0gMTE7CisgICAgaW50VmVjdG9yLmdldCgpWzJdID0gMTI7
CisgICAgaW50VmVjdG9yLmdldCgpWzNdID0gMTM7CisKKyAgICBhdXRvIGl0ID0gaW50VmVjdG9y
LT5iZWdpbigpOworICAgIGF1dG8gZW5kID0gaW50VmVjdG9yLT5lbmQoKTsKKyAgICBFWFBFQ1Rf
VFJVRShlbmQgIT0gaXQpOworCisgICAgRVhQRUNUX0VRKDEwVSwgKml0KTsKKyAgICArK2l0Owor
ICAgIEVYUEVDVF9FUSgxMVUsICppdCk7CisgICAgKytpdDsKKyAgICBFWFBFQ1RfRVEoMTJVLCAq
aXQpOworICAgICsraXQ7CisgICAgRVhQRUNUX0VRKDEzVSwgKml0KTsKKyAgICArK2l0OworCisg
ICAgRVhQRUNUX1RSVUUoZW5kID09IGl0KTsKK30KKworVEVTVChXVEZfRW1iZWRkZWRGaXhlZFZl
Y3RvciwgT3ZlcmxvYWRlZE9wZXJhdG9yQW1wZXJzYW5kKQoreworICAgIHN0cnVjdCBUZXN0IHsK
KyAgICBwcml2YXRlOgorICAgICAgICBUZXN0KiBvcGVyYXRvciYoKSA9IGRlbGV0ZTsKKyAgICB9
OworCisgICAgYXV0byB2ZWN0b3IgPSBFbWJlZGRlZEZpeGVkVmVjdG9yPFRlc3Q+OjpjcmVhdGUo
MSk7CisgICAgdmVjdG9yLmdldCgpWzBdID0gVGVzdCgpOworfQorCitURVNUKFdURl9FbWJlZGRl
ZEZpeGVkVmVjdG9yLCBDb3B5KQoreworICAgIGF1dG8gdmVjMSA9IEVtYmVkZGVkRml4ZWRWZWN0
b3I8dW5zaWduZWQ+OjpjcmVhdGUoMyk7CisgICAgdmVjMS5nZXQoKVswXSA9IDA7CisgICAgdmVj
MS5nZXQoKVsxXSA9IDE7CisgICAgdmVjMS5nZXQoKVsyXSA9IDI7CisKKyAgICBhdXRvIHZlYzIg
PSBFbWJlZGRlZEZpeGVkVmVjdG9yPHVuc2lnbmVkPjo6Y3JlYXRlKHZlYzEtPmJlZ2luKCksIHZl
YzEtPmVuZCgpKTsKKyAgICBFWFBFQ1RfRVEoM1UsIHZlYzEtPnNpemUoKSk7CisgICAgRVhQRUNU
X0VRKDNVLCB2ZWMyLT5zaXplKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB2ZWMx
LT5zaXplKCk7ICsraSkgeworICAgICAgICBFWFBFQ1RfRVEoaSwgdmVjMS5nZXQoKVtpXSk7Cisg
ICAgICAgIEVYUEVDVF9FUShpLCB2ZWMyLmdldCgpW2ldKTsKKyAgICB9CisgICAgdmVjMS5nZXQo
KVsyXSA9IDQyOworICAgIEVYUEVDVF9FUSg0MlUsIHZlYzEuZ2V0KClbMl0pOworICAgIEVYUEVD
VF9FUSgyVSwgdmVjMi5nZXQoKVsyXSk7Cit9CisKK1RFU1QoV1RGX0VtYmVkZGVkRml4ZWRWZWN0
b3IsIENvcHlWZWN0b3IpCit7CisgICAgYXV0byB2ZWMxID0gVmVjdG9yPHVuc2lnbmVkPjo6ZnJv
bSgwLCAxLCAyLCAzKTsKKyAgICBFWFBFQ1RfRVEoNFUsIHZlYzEuc2l6ZSgpKTsKKyAgICBhdXRv
IHZlYzIgPSBFbWJlZGRlZEZpeGVkVmVjdG9yPHVuc2lnbmVkPjo6Y3JlYXRlRnJvbVZlY3Rvcih2
ZWMxKTsKKyAgICBFWFBFQ1RfRVEoNFUsIHZlYzEuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoNFUs
IHZlYzItPnNpemUoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZlYzEuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgRVhQRUNUX0VRKGksIHZlYzFbaV0pOworICAgICAgICBFWFBFQ1Rf
RVEoaSwgdmVjMi5nZXQoKVtpXSk7CisgICAgfQorICAgIHZlYzFbMl0gPSA0MjsKKyAgICBFWFBF
Q1RfRVEoNDJVLCB2ZWMxWzJdKTsKKyAgICBFWFBFQ1RfRVEoMlUsIHZlYzIuZ2V0KClbMl0pOwor
fQorCitURVNUKFdURl9FbWJlZGRlZEZpeGVkVmVjdG9yLCBNb3ZlVmVjdG9yKQoreworICAgIGF1
dG8gdmVjMSA9IFZlY3RvcjxNb3ZlT25seT46OmZyb20oTW92ZU9ubHkoMCksIE1vdmVPbmx5KDEp
LCBNb3ZlT25seSgyKSwgTW92ZU9ubHkoMykpOworICAgIEVYUEVDVF9FUSg0VSwgdmVjMS5zaXpl
KCkpOworICAgIGF1dG8gdmVjMiA9IEVtYmVkZGVkRml4ZWRWZWN0b3I8TW92ZU9ubHk+OjpjcmVh
dGVGcm9tVmVjdG9yKFdURk1vdmUodmVjMSkpOworICAgIEVYUEVDVF9FUSgwVSwgdmVjMS5zaXpl
KCkpOworICAgIEVYUEVDVF9FUSg0VSwgdmVjMi0+c2l6ZSgpKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGluZGV4ID0gMDsgaW5kZXggPCB2ZWMyLT5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIEVYUEVD
VF9FUShpbmRleCwgdmVjMi5nZXQoKVtpbmRleF0udmFsdWUoKSk7Cit9CisKK1RFU1QoV1RGX0Vt
YmVkZGVkRml4ZWRWZWN0b3IsIEl0ZXJhdG9yRm9yKQoreworICAgIGF1dG8gdmVjMSA9IEVtYmVk
ZGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+OjpjcmVhdGUoMyk7CisgICAgdmVjMS5nZXQoKVswXSA9
IDA7CisgICAgdmVjMS5nZXQoKVsxXSA9IDE7CisgICAgdmVjMS5nZXQoKVsyXSA9IDI7CisKKyAg
ICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgZm9yIChhdXRvIGl0ZXIgPSB2ZWMxLT5iZWdpbigp
OyBpdGVyICE9IHZlYzEtPmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgRVhQRUNUX0VRKGluZGV4
LCAqaXRlcik7CisgICAgICAgICsraW5kZXg7CisgICAgfQorfQorCitURVNUKFdURl9FbWJlZGRl
ZEZpeGVkVmVjdG9yLCBSZXZlcnNlKQoreworICAgIGF1dG8gdmVjMSA9IEVtYmVkZGVkRml4ZWRW
ZWN0b3I8dW5zaWduZWQ+OjpjcmVhdGUoMyk7CisgICAgdmVjMS5nZXQoKVswXSA9IDA7CisgICAg
dmVjMS5nZXQoKVsxXSA9IDE7CisgICAgdmVjMS5nZXQoKVsyXSA9IDI7CisKKyAgICB1bnNpZ25l
ZCBpbmRleCA9IDA7CisgICAgZm9yIChhdXRvIGl0ZXIgPSB2ZWMxLT5yYmVnaW4oKTsgaXRlciAh
PSB2ZWMxLT5yZW5kKCk7ICsraXRlcikgeworICAgICAgICArK2luZGV4OworICAgICAgICBFWFBF
Q1RfRVEoM1UgLSBpbmRleCwgKml0ZXIpOworICAgIH0KK30KKworVEVTVChXVEZfRW1iZWRkZWRG
aXhlZFZlY3RvciwgRmlsbCkKK3sKKyAgICBhdXRvIHZlYzEgPSBFbWJlZGRlZEZpeGVkVmVjdG9y
PHVuc2lnbmVkPjo6Y3JlYXRlKDMpOworICAgIHZlYzEtPmZpbGwoNDIpOworCisgICAgZm9yIChh
dXRvJiB2YWx1ZSA6IHZlYzEuZ2V0KCkpCisgICAgICAgIEVYUEVDVF9FUSg0MlUsIHZhbHVlKTsK
K30KKworc3RydWN0IERlc3RydWN0b3JPYnNlcnZlciB7CisgICAgRGVzdHJ1Y3Rvck9ic2VydmVy
KCkgPSBkZWZhdWx0OworCisgICAgRGVzdHJ1Y3Rvck9ic2VydmVyKGJvb2wqIGRlc3RydWN0ZWQp
CisgICAgICAgIDogZGVzdHJ1Y3RlZChkZXN0cnVjdGVkKQorICAgIHsKKyAgICB9CisKKyAgICB+
RGVzdHJ1Y3Rvck9ic2VydmVyKCkKKyAgICB7CisgICAgICAgIGlmIChkZXN0cnVjdGVkKQorICAg
ICAgICAgICAgKmRlc3RydWN0ZWQgPSB0cnVlOworICAgIH0KKworICAgIERlc3RydWN0b3JPYnNl
cnZlcihEZXN0cnVjdG9yT2JzZXJ2ZXImJiBvdGhlcikKKyAgICAgICAgOiBkZXN0cnVjdGVkKG90
aGVyLmRlc3RydWN0ZWQpCisgICAgeworICAgICAgICBvdGhlci5kZXN0cnVjdGVkID0gbnVsbHB0
cjsKKyAgICB9CisKKyAgICBEZXN0cnVjdG9yT2JzZXJ2ZXImIG9wZXJhdG9yPShEZXN0cnVjdG9y
T2JzZXJ2ZXImJiBvdGhlcikKKyAgICB7CisgICAgICAgIGRlc3RydWN0ZWQgPSBvdGhlci5kZXN0
cnVjdGVkOworICAgICAgICBvdGhlci5kZXN0cnVjdGVkID0gbnVsbHB0cjsKKyAgICAgICAgcmV0
dXJuICp0aGlzOworICAgIH0KKworICAgIGJvb2wqIGRlc3RydWN0ZWQgeyBudWxscHRyIH07Cit9
OworCitURVNUKFdURl9FbWJlZGRlZEZpeGVkVmVjdG9yLCBEZXN0cnVjdG9yKQoreworICAgIFZl
Y3Rvcjxib29sPiBmbGFncygzLCBmYWxzZSk7CisgICAgeworICAgICAgICBhdXRvIHZlY3RvciA9
IEVtYmVkZGVkRml4ZWRWZWN0b3I8RGVzdHJ1Y3Rvck9ic2VydmVyPjo6Y3JlYXRlKGZsYWdzLnNp
emUoKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmbGFncy5zaXplKCk7ICsr
aSkKKyAgICAgICAgICAgIHZlY3Rvci5nZXQoKVtpXSA9IERlc3RydWN0b3JPYnNlcnZlcigmZmxh
Z3NbaV0pOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmxhZ3Muc2l6ZSgpOyAr
K2kpCisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoZmxhZ3NbaV0pOworICAgIH0KKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgZmxhZ3Muc2l6ZSgpOyArK2kpCisgICAgICAgIEVYUEVDVF9U
UlVFKGZsYWdzW2ldKTsKK30KKworVEVTVChXVEZfRW1iZWRkZWRGaXhlZFZlY3RvciwgRGVzdHJ1
Y3RvckFmdGVyTW92ZSkKK3sKKyAgICBWZWN0b3I8Ym9vbD4gZmxhZ3MoMywgZmFsc2UpOworICAg
IHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEVtYmVkZGVkRml4ZWRWZWN0b3I8RGVzdHJ1Y3Rv
ck9ic2VydmVyPj4gb3V0ZXJWZWN0b3I7CisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gdmVj
dG9yID0gRW1iZWRkZWRGaXhlZFZlY3RvcjxEZXN0cnVjdG9yT2JzZXJ2ZXI+OjpjcmVhdGUoZmxh
Z3Muc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmbGFncy5z
aXplKCk7ICsraSkKKyAgICAgICAgICAgICAgICB2ZWN0b3IuZ2V0KClbaV0gPSBEZXN0cnVjdG9y
T2JzZXJ2ZXIoJmZsYWdzW2ldKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBmbGFncy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoZmxhZ3Nb
aV0pOworICAgICAgICAgICAgb3V0ZXJWZWN0b3IgPSB2ZWN0b3IubW92ZVRvVW5pcXVlUHRyKCk7
CisgICAgICAgIH0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZsYWdzLnNpemUo
KTsgKytpKQorICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGZsYWdzW2ldKTsKKyAgICB9CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZsYWdzLnNpemUoKTsgKytpKQorICAgICAgICBFWFBF
Q1RfVFJVRShmbGFnc1tpXSk7Cit9CisKK1RFU1QoV1RGX0VtYmVkZGVkRml4ZWRWZWN0b3IsIEJh
c2ljKQoreworICAgIHN0ZDo6YXJyYXk8dW5zaWduZWQsIDQ+IGFycmF5IHsgeworICAgICAgICAw
LCAxLCAyLCAzCisgICAgfSB9OworICAgIHsKKyAgICAgICAgYXV0byB2ZWN0b3IgPSBFbWJlZGRl
ZEZpeGVkVmVjdG9yPHVuc2lnbmVkPjo6Y3JlYXRlKGFycmF5LmJlZ2luKCksIGFycmF5LmVuZCgp
KTsKKyAgICAgICAgRVhQRUNUX0VRKDRVLCB2ZWN0b3ItPnNpemUoKSk7CisgICAgICAgIEVYUEVD
VF9FUSgwVSwgdmVjdG9yLT5hdCgwKSk7CisgICAgICAgIEVYUEVDVF9FUSgxVSwgdmVjdG9yLT5h
dCgxKSk7CisgICAgICAgIEVYUEVDVF9FUSgyVSwgdmVjdG9yLT5hdCgyKSk7CisgICAgICAgIEVY
UEVDVF9FUSgzVSwgdmVjdG9yLT5hdCgzKSk7CisgICAgfQorfQorCitURVNUKFdURl9FbWJlZGRl
ZEZpeGVkVmVjdG9yLCBDbG9uZSkKK3sKKyAgICBzdGQ6OmFycmF5PHVuc2lnbmVkLCA0PiBhcnJh
eSB7IHsKKyAgICAgICAgMCwgMSwgMiwgMworICAgIH0gfTsKKyAgICB7CisgICAgICAgIGF1dG8g
dmVjdG9yID0gRW1iZWRkZWRGaXhlZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0ZShhcnJheS5iZWdp
bigpLCBhcnJheS5lbmQoKSk7CisgICAgICAgIEVYUEVDVF9FUSg0VSwgdmVjdG9yLT5zaXplKCkp
OworICAgICAgICBFWFBFQ1RfRVEoMFUsIHZlY3Rvci0+YXQoMCkpOworICAgICAgICBFWFBFQ1Rf
RVEoMVUsIHZlY3Rvci0+YXQoMSkpOworICAgICAgICBFWFBFQ1RfRVEoMlUsIHZlY3Rvci0+YXQo
MikpOworICAgICAgICBFWFBFQ1RfRVEoM1UsIHZlY3Rvci0+YXQoMykpOworCisgICAgICAgIGF1
dG8gY2xvbmVkID0gdmVjdG9yLT5jbG9uZSgpOworICAgICAgICBFWFBFQ1RfRVEoNFUsIGNsb25l
ZC0+c2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDBVLCBjbG9uZWQtPmF0KDApKTsKKyAgICAg
ICAgRVhQRUNUX0VRKDFVLCBjbG9uZWQtPmF0KDEpKTsKKyAgICAgICAgRVhQRUNUX0VRKDJVLCBj
bG9uZWQtPmF0KDIpKTsKKyAgICAgICAgRVhQRUNUX0VRKDNVLCBjbG9uZWQtPmF0KDMpKTsKKyAg
ICB9Cit9CisKK1RFU1QoV1RGX0VtYmVkZGVkRml4ZWRWZWN0b3IsIEVxdWFsKQoreworICAgIGF1
dG8gdmVjMSA9IEVtYmVkZGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+OjpjcmVhdGUoMTApOworICAg
IGF1dG8gdmVjMiA9IEVtYmVkZGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+OjpjcmVhdGUoMTApOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAxMDsgKytpKSB7CisgICAgICAgIHZlYzEuZ2V0
KClbaV0gPSBpOworICAgICAgICB2ZWMyLmdldCgpW2ldID0gaTsKKyAgICB9CisgICAgRVhQRUNU
X0VRKHZlYzEuZ2V0KCksIHZlYzIuZ2V0KCkpOworICAgIHZlYzEuZ2V0KClbMF0gPSA0MjsKKyAg
ICBFWFBFQ1RfTkUodmVjMS5nZXQoKSwgdmVjMi5nZXQoKSk7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpeGVkVmVjdG9yLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpeGVkVmVjdG9yLmNwcAppbmRleCAxNjE1M2RhYzk3MjVk
MGI1OGRiZmZjY2I0NjgyNjg3OTQ3ODAxNTVhLi5kMmVlY2JiOTUwZDg5ZGUxYzY1ZGFhZDU5OTQ0
ZTIyMjcxYWViZTIwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9G
aXhlZFZlY3Rvci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRml4ZWRW
ZWN0b3IuY3BwCkBAIC04NiwxNSArODYsMTUgQEAgVEVTVChXVEZfRml4ZWRWZWN0b3IsIENvcHkp
CiAgICAgdmVjMVsyXSA9IDI7CiAKICAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVjMih2ZWMx
KTsKLSAgICBFWFBFQ1RfRVEodmVjMS5zaXplKCksIDNVKTsKLSAgICBFWFBFQ1RfRVEodmVjMi5z
aXplKCksIDNVKTsKKyAgICBFWFBFQ1RfRVEoM1UsIHZlYzEuc2l6ZSgpKTsKKyAgICBFWFBFQ1Rf
RVEoM1UsIHZlYzIuc2l6ZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmVjMS5z
aXplKCk7ICsraSkgewotICAgICAgICBFWFBFQ1RfRVEodmVjMVtpXSwgaSk7Ci0gICAgICAgIEVY
UEVDVF9FUSh2ZWMyW2ldLCBpKTsKKyAgICAgICAgRVhQRUNUX0VRKGksIHZlYzFbaV0pOworICAg
ICAgICBFWFBFQ1RfRVEoaSwgdmVjMltpXSk7CiAgICAgfQogICAgIHZlYzFbMl0gPSA0MjsKLSAg
ICBFWFBFQ1RfRVEodmVjMVsyXSwgNDJVKTsKLSAgICBFWFBFQ1RfRVEodmVjMlsyXSwgMlUpOwor
ICAgIEVYUEVDVF9FUSg0MlUsIHZlYzFbMl0pOworICAgIEVYUEVDVF9FUSgyVSwgdmVjMlsyXSk7
CiB9CiAKIFRFU1QoV1RGX0ZpeGVkVmVjdG9yLCBDb3B5QXNzaWduKQpAQCAtMTA2LDE1ICsxMDYs
MTUgQEAgVEVTVChXVEZfRml4ZWRWZWN0b3IsIENvcHlBc3NpZ24pCiAKICAgICBGaXhlZFZlY3Rv
cjx1bnNpZ25lZD4gdmVjMjsKICAgICB2ZWMyID0gdmVjMTsKLSAgICBFWFBFQ1RfRVEodmVjMS5z
aXplKCksIDNVKTsKLSAgICBFWFBFQ1RfRVEodmVjMi5zaXplKCksIDNVKTsKKyAgICBFWFBFQ1Rf
RVEoM1UsIHZlYzEuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoM1UsIHZlYzIuc2l6ZSgpKTsKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmVjMS5zaXplKCk7ICsraSkgewotICAgICAgICBF
WFBFQ1RfRVEodmVjMVtpXSwgaSk7Ci0gICAgICAgIEVYUEVDVF9FUSh2ZWMyW2ldLCBpKTsKKyAg
ICAgICAgRVhQRUNUX0VRKGksIHZlYzFbaV0pOworICAgICAgICBFWFBFQ1RfRVEoaSwgdmVjMltp
XSk7CiAgICAgfQogICAgIHZlYzFbMl0gPSA0MjsKLSAgICBFWFBFQ1RfRVEodmVjMVsyXSwgNDJV
KTsKLSAgICBFWFBFQ1RfRVEodmVjMlsyXSwgMlUpOworICAgIEVYUEVDVF9FUSg0MlUsIHZlYzFb
Ml0pOworICAgIEVYUEVDVF9FUSgyVSwgdmVjMlsyXSk7CiB9CiAKIFRFU1QoV1RGX0ZpeGVkVmVj
dG9yLCBNb3ZlKQpAQCAtMTI1LDEwICsxMjUsMTAgQEAgVEVTVChXVEZfRml4ZWRWZWN0b3IsIE1v
dmUpCiAgICAgdmVjMVsyXSA9IDI7CiAKICAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVjMihX
VEZNb3ZlKHZlYzEpKTsKLSAgICBFWFBFQ1RfRVEodmVjMS5zaXplKCksIDBVKTsKLSAgICBFWFBF
Q1RfRVEodmVjMi5zaXplKCksIDNVKTsKKyAgICBFWFBFQ1RfRVEoMFUsIHZlYzEuc2l6ZSgpKTsK
KyAgICBFWFBFQ1RfRVEoM1UsIHZlYzIuc2l6ZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgdmVjMi5zaXplKCk7ICsraSkKLSAgICAgICAgRVhQRUNUX0VRKHZlYzJbaV0sIGkpOwor
ICAgICAgICBFWFBFQ1RfRVEoaSwgdmVjMltpXSk7CiB9CiAKIFRFU1QoV1RGX0ZpeGVkVmVjdG9y
LCBNb3ZlQXNzaWduKQpAQCAtMTQwLDIxICsxNDAsMjEgQEAgVEVTVChXVEZfRml4ZWRWZWN0b3Is
IE1vdmVBc3NpZ24pCiAKICAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVjMjsKICAgICB2ZWMy
ID0gV1RGTW92ZSh2ZWMxKTsKLSAgICBFWFBFQ1RfRVEodmVjMS5zaXplKCksIDBVKTsKLSAgICBF
WFBFQ1RfRVEodmVjMi5zaXplKCksIDNVKTsKKyAgICBFWFBFQ1RfRVEoMFUsIHZlYzEuc2l6ZSgp
KTsKKyAgICBFWFBFQ1RfRVEoM1UsIHZlYzIuc2l6ZSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgdmVjMi5zaXplKCk7ICsraSkKLSAgICAgICAgRVhQRUNUX0VRKHZlYzJbaV0sIGkp
OworICAgICAgICBFWFBFQ1RfRVEoaSwgdmVjMltpXSk7CiB9CiAKIFRFU1QoV1RGX0ZpeGVkVmVj
dG9yLCBNb3ZlVmVjdG9yKQogewogICAgIGF1dG8gdmVjMSA9IFZlY3RvcjxNb3ZlT25seT46OmZy
b20oTW92ZU9ubHkoMCksIE1vdmVPbmx5KDEpLCBNb3ZlT25seSgyKSwgTW92ZU9ubHkoMykpOwot
ICAgIEVYUEVDVF9FUSh2ZWMxLnNpemUoKSwgNFUpOworICAgIEVYUEVDVF9FUSg0VSwgdmVjMS5z
aXplKCkpOwogICAgIEZpeGVkVmVjdG9yPE1vdmVPbmx5PiB2ZWMyKFdURk1vdmUodmVjMSkpOwot
ICAgIEVYUEVDVF9FUSh2ZWMxLnNpemUoKSwgMFUpOwotICAgIEVYUEVDVF9FUSh2ZWMyLnNpemUo
KSwgNFUpOworICAgIEVYUEVDVF9FUSgwVSwgdmVjMS5zaXplKCkpOworICAgIEVYUEVDVF9FUSg0
VSwgdmVjMi5zaXplKCkpOwogICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IHZl
YzIuc2l6ZSgpOyArK2luZGV4KQotICAgICAgICBFWFBFQ1RfRVEodmVjMltpbmRleF0udmFsdWUo
KSwgaW5kZXgpOworICAgICAgICBFWFBFQ1RfRVEoaW5kZXgsIHZlYzJbaW5kZXhdLnZhbHVlKCkp
OwogfQogCiBURVNUKFdURl9GaXhlZFZlY3RvciwgTW92ZUFzc2lnblZlY3RvcikKQEAgLTE2Miwx
MyArMTYyLDEzIEBAIFRFU1QoV1RGX0ZpeGVkVmVjdG9yLCBNb3ZlQXNzaWduVmVjdG9yKQogICAg
IEZpeGVkVmVjdG9yPE1vdmVPbmx5PiB2ZWMyOwogICAgIHsKICAgICAgICAgYXV0byB2ZWMxID0g
VmVjdG9yPE1vdmVPbmx5Pjo6ZnJvbShNb3ZlT25seSgwKSwgTW92ZU9ubHkoMSksIE1vdmVPbmx5
KDIpLCBNb3ZlT25seSgzKSk7Ci0gICAgICAgIEVYUEVDVF9FUSh2ZWMxLnNpemUoKSwgNFUpOwor
ICAgICAgICBFWFBFQ1RfRVEoNFUsIHZlYzEuc2l6ZSgpKTsKICAgICAgICAgdmVjMiA9IFdURk1v
dmUodmVjMSk7Ci0gICAgICAgIEVYUEVDVF9FUSh2ZWMxLnNpemUoKSwgMFUpOworICAgICAgICBF
WFBFQ1RfRVEoMFUsIHZlYzEuc2l6ZSgpKTsKICAgICB9Ci0gICAgRVhQRUNUX0VRKHZlYzIuc2l6
ZSgpLCA0VSk7CisgICAgRVhQRUNUX0VRKDRVLCB2ZWMyLnNpemUoKSk7CiAgICAgZm9yICh1bnNp
Z25lZCBpbmRleCA9IDA7IGluZGV4IDwgdmVjMi5zaXplKCk7ICsraW5kZXgpCi0gICAgICAgIEVY
UEVDVF9FUSh2ZWMyW2luZGV4XS52YWx1ZSgpLCBpbmRleCk7CisgICAgICAgIEVYUEVDVF9FUShp
bmRleCwgdmVjMltpbmRleF0udmFsdWUoKSk7CiB9CiAKIFRFU1QoV1RGX0ZpeGVkVmVjdG9yLCBT
d2FwKQpAQCAtMTgwLDEwICsxODAsMTAgQEAgVEVTVChXVEZfRml4ZWRWZWN0b3IsIFN3YXApCiAK
ICAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVjMjsKICAgICB2ZWMyLnN3YXAodmVjMSk7Ci0g
ICAgRVhQRUNUX0VRKHZlYzEuc2l6ZSgpLCAwVSk7Ci0gICAgRVhQRUNUX0VRKHZlYzIuc2l6ZSgp
LCAzVSk7CisgICAgRVhQRUNUX0VRKDBVLCB2ZWMxLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDNV
LCB2ZWMyLnNpemUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZlYzIuc2l6ZSgp
OyArK2kpCi0gICAgICAgIEVYUEVDVF9FUSh2ZWMyW2ldLCBpKTsKKyAgICAgICAgRVhQRUNUX0VR
KGksIHZlYzJbaV0pOwogfQogCiBURVNUKFdURl9GaXhlZFZlY3RvciwgSXRlcmF0b3JGb3IpCkBA
IC0xOTUsNyArMTk1LDcgQEAgVEVTVChXVEZfRml4ZWRWZWN0b3IsIEl0ZXJhdG9yRm9yKQogCiAg
ICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgIGZvciAoYXV0byBpdGVyID0gdmVjMS5iZWdpbigp
OyBpdGVyICE9IHZlYzEuZW5kKCk7ICsraXRlcikgewotICAgICAgICBFWFBFQ1RfRVEoKml0ZXIs
IGluZGV4KTsKKyAgICAgICAgRVhQRUNUX0VRKGluZGV4LCAqaXRlcik7CiAgICAgICAgICsraW5k
ZXg7CiAgICAgfQogfQpAQCAtMjEwLDcgKzIxMCw3IEBAIFRFU1QoV1RGX0ZpeGVkVmVjdG9yLCBS
ZXZlcnNlKQogICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICBmb3IgKGF1dG8gaXRlciA9IHZl
YzEucmJlZ2luKCk7IGl0ZXIgIT0gdmVjMS5yZW5kKCk7ICsraXRlcikgewogICAgICAgICArK2lu
ZGV4OwotICAgICAgICBFWFBFQ1RfRVEoKml0ZXIsIDNVIC0gaW5kZXgpOworICAgICAgICBFWFBF
Q1RfRVEoM1UgLSBpbmRleCwgKml0ZXIpOwogICAgIH0KIH0KIApAQCAtMjIwLDcgKzIyMCw3IEBA
IFRFU1QoV1RGX0ZpeGVkVmVjdG9yLCBGaWxsKQogICAgIHZlYzEuZmlsbCg0Mik7CiAKICAgICBm
b3IgKGF1dG8mIHZhbHVlIDogdmVjMSkKLSAgICAgICAgRVhQRUNUX0VRKHZhbHVlLCA0MlUpOwor
ICAgICAgICBFWFBFQ1RfRVEoNDJVLCB2YWx1ZSk7CiB9CiAKIHN0cnVjdCBEZXN0cnVjdG9yT2Jz
ZXJ2ZXIgewpAQCAtMjkzLDE0ICsyOTMsMTQgQEAgVEVTVChXVEZfRml4ZWRWZWN0b3IsIE1vdmVL
ZWVwc0RhdGEpCiAgICAgICAgIEZpeGVkVmVjdG9yPHVuc2lnbmVkPiB2ZWMxKDMpOwogICAgICAg
ICBhdXRvKiBkYXRhMSA9IHZlYzEuZGF0YSgpOwogICAgICAgICBGaXhlZFZlY3Rvcjx1bnNpZ25l
ZD4gdmVjMihXVEZNb3ZlKHZlYzEpKTsKLSAgICAgICAgRVhQRUNUX0VRKHZlYzIuZGF0YSgpLCBk
YXRhMSk7CisgICAgICAgIEVYUEVDVF9FUShkYXRhMSwgdmVjMi5kYXRhKCkpOwogICAgIH0KICAg
ICB7CiAgICAgICAgIEZpeGVkVmVjdG9yPHVuc2lnbmVkPiB2ZWMxKDMpOwogICAgICAgICBhdXRv
KiBkYXRhMSA9IHZlYzEuZGF0YSgpOwogICAgICAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVj
MjsKICAgICAgICAgdmVjMiA9IFdURk1vdmUodmVjMSk7Ci0gICAgICAgIEVYUEVDVF9FUSh2ZWMy
LmRhdGEoKSwgZGF0YTEpOworICAgICAgICBFWFBFQ1RfRVEoZGF0YTEsIHZlYzIuZGF0YSgpKTsK
ICAgICB9CiB9CiAKQEAgLTMxMSw4ICszMTEsOCBAQCBURVNUKFdURl9GaXhlZFZlY3RvciwgTW92
ZUtlZXBzRGF0YU5lc3RlZCkKICAgICAgICAgdmVjMS5hcHBlbmQoRml4ZWRWZWN0b3I8dW5zaWdu
ZWQ+KDMpKTsKICAgICAgICAgYXV0byogZGF0YTEgPSB2ZWMxWzBdLmRhdGEoKTsKICAgICAgICAg
Rml4ZWRWZWN0b3I8Rml4ZWRWZWN0b3I8dW5zaWduZWQ+PiB2ZWMyKFdURk1vdmUodmVjMSkpOwot
ICAgICAgICBFWFBFQ1RfRVEodmVjMi5zaXplKCksIDFVKTsKLSAgICAgICAgRVhQRUNUX0VRKHZl
YzJbMF0uZGF0YSgpLCBkYXRhMSk7CisgICAgICAgIEVYUEVDVF9FUSgxVSwgdmVjMi5zaXplKCkp
OworICAgICAgICBFWFBFQ1RfRVEoZGF0YTEsIHZlYzJbMF0uZGF0YSgpKTsKICAgICB9CiAgICAg
ewogICAgICAgICBWZWN0b3I8Rml4ZWRWZWN0b3I8dW5zaWduZWQ+PiB2ZWMxOwpAQCAtMzIwLDgg
KzMyMCwzOCBAQCBURVNUKFdURl9GaXhlZFZlY3RvciwgTW92ZUtlZXBzRGF0YU5lc3RlZCkKICAg
ICAgICAgYXV0byogZGF0YTEgPSB2ZWMxWzBdLmRhdGEoKTsKICAgICAgICAgRml4ZWRWZWN0b3I8
Rml4ZWRWZWN0b3I8dW5zaWduZWQ+PiB2ZWMyOwogICAgICAgICB2ZWMyID0gV1RGTW92ZSh2ZWMx
KTsKLSAgICAgICAgRVhQRUNUX0VRKHZlYzIuc2l6ZSgpLCAxVSk7Ci0gICAgICAgIEVYUEVDVF9F
USh2ZWMyWzBdLmRhdGEoKSwgZGF0YTEpOworICAgICAgICBFWFBFQ1RfRVEoMVUsIHZlYzIuc2l6
ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGRhdGExLCB2ZWMyWzBdLmRhdGEoKSk7CisgICAgfQor
fQorCitURVNUKFdURl9GaXhlZFZlY3RvciwgT2Zmc2V0KQoreworICAgIEVYUEVDVF9FUSgwLCBG
aXhlZFZlY3Rvcjx1bnNpZ25lZD46Om9mZnNldE9mU3RvcmFnZSgpKTsKKyAgICBFWFBFQ1RfRVEo
NCwgRml4ZWRWZWN0b3I8dW5zaWduZWQ+OjpTdG9yYWdlOjpvZmZzZXRPZkRhdGEoKSk7CisgICAg
RVhQRUNUX0VRKDAsIEZpeGVkVmVjdG9yPHZvaWQqPjo6b2Zmc2V0T2ZTdG9yYWdlKCkpOworICAg
IEVYUEVDVF9FUShzaXplb2Yodm9pZCopLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oRml4ZWRWZWN0
b3I8dm9pZCo+OjpTdG9yYWdlOjpvZmZzZXRPZkRhdGEoKSkpOworfQorCitURVNUKFdURl9GaXhl
ZFZlY3RvciwgRXF1YWwpCit7CisgICAgeworICAgICAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4g
dmVjMSgxMCk7CisgICAgICAgIEZpeGVkVmVjdG9yPHVuc2lnbmVkPiB2ZWMyKDEwKTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDEwOyArK2kpIHsKKyAgICAgICAgICAgIHZlYzFb
aV0gPSBpOworICAgICAgICAgICAgdmVjMltpXSA9IGk7CisgICAgICAgIH0KKyAgICAgICAgRVhQ
RUNUX0VRKHZlYzIsIHZlYzEpOworICAgICAgICB2ZWMxWzBdID0gNDI7CisgICAgICAgIEVYUEVD
VF9ORSh2ZWMxLCB2ZWMyKTsKKyAgICB9CisgICAgeworICAgICAgICBGaXhlZFZlY3Rvcjx1bnNp
Z25lZD4gdmVjMTsKKyAgICAgICAgRml4ZWRWZWN0b3I8dW5zaWduZWQ+IHZlYzI7CisgICAgICAg
IEZpeGVkVmVjdG9yPHVuc2lnbmVkPiB2ZWMzKDApOworICAgICAgICBFWFBFQ1RfRVEodmVjMiwg
dmVjMSk7CisgICAgICAgIEVYUEVDVF9FUSh2ZWMzLCB2ZWMxKTsKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZWRGaXhlZFZlY3Rv
ci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZDb3VudGVkRml4ZWRWZWN0
b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjkyYTk0MGVlMDg5Y2NjMTYyZjgwMjNlYzBiMmYxOWNkMWNjODIz
YWQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZD
b3VudGVkRml4ZWRWZWN0b3IuY3BwCkBAIC0wLDAgKzEsMjc5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiTW92ZU9ubHkuaCIKKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZEZpeGVkVmVjdG9yLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKwor
VEVTVChXVEZfUmVmQ291bnRlZEZpeGVkVmVjdG9yLCBFbXB0eSkKK3sKKyAgICBhdXRvIHZlY3Rv
ciA9IFJlZkNvdW50ZWRGaXhlZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0ZSgwKTsKKyAgICBFWFBF
Q1RfVFJVRSh2ZWN0b3ItPmlzRW1wdHkoKSk7CisgICAgRVhQRUNUX0VRKDBVLCB2ZWN0b3ItPnNp
emUoKSk7Cit9CisKK1RFU1QoV1RGX1JlZkNvdW50ZWRGaXhlZFZlY3RvciwgSXRlcmF0b3IpCit7
CisgICAgYXV0byBpbnRWZWN0b3IgPSBSZWZDb3VudGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+Ojpj
cmVhdGUoNCk7CisgICAgaW50VmVjdG9yLmdldCgpWzBdID0gMTA7CisgICAgaW50VmVjdG9yLmdl
dCgpWzFdID0gMTE7CisgICAgaW50VmVjdG9yLmdldCgpWzJdID0gMTI7CisgICAgaW50VmVjdG9y
LmdldCgpWzNdID0gMTM7CisKKyAgICBhdXRvIGl0ID0gaW50VmVjdG9yLT5iZWdpbigpOworICAg
IGF1dG8gZW5kID0gaW50VmVjdG9yLT5lbmQoKTsKKyAgICBFWFBFQ1RfVFJVRShlbmQgIT0gaXQp
OworCisgICAgRVhQRUNUX0VRKDEwVSwgKml0KTsKKyAgICArK2l0OworICAgIEVYUEVDVF9FUSgx
MVUsICppdCk7CisgICAgKytpdDsKKyAgICBFWFBFQ1RfRVEoMTJVLCAqaXQpOworICAgICsraXQ7
CisgICAgRVhQRUNUX0VRKDEzVSwgKml0KTsKKyAgICArK2l0OworCisgICAgRVhQRUNUX1RSVUUo
ZW5kID09IGl0KTsKK30KKworVEVTVChXVEZfUmVmQ291bnRlZEZpeGVkVmVjdG9yLCBPdmVybG9h
ZGVkT3BlcmF0b3JBbXBlcnNhbmQpCit7CisgICAgc3RydWN0IFRlc3QgeworICAgIHByaXZhdGU6
CisgICAgICAgIFRlc3QqIG9wZXJhdG9yJigpID0gZGVsZXRlOworICAgIH07CisKKyAgICBhdXRv
IHZlY3RvciA9IFJlZkNvdW50ZWRGaXhlZFZlY3RvcjxUZXN0Pjo6Y3JlYXRlKDEpOworICAgIHZl
Y3Rvci5nZXQoKVswXSA9IFRlc3QoKTsKK30KKworVEVTVChXVEZfUmVmQ291bnRlZEZpeGVkVmVj
dG9yLCBDb3B5KQoreworICAgIGF1dG8gdmVjMSA9IFJlZkNvdW50ZWRGaXhlZFZlY3Rvcjx1bnNp
Z25lZD46OmNyZWF0ZSgzKTsKKyAgICB2ZWMxLmdldCgpWzBdID0gMDsKKyAgICB2ZWMxLmdldCgp
WzFdID0gMTsKKyAgICB2ZWMxLmdldCgpWzJdID0gMjsKKworICAgIGF1dG8gdmVjMiA9IFJlZkNv
dW50ZWRGaXhlZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0ZSh2ZWMxLT5iZWdpbigpLCB2ZWMxLT5l
bmQoKSk7CisgICAgRVhQRUNUX0VRKDNVLCB2ZWMxLT5zaXplKCkpOworICAgIEVYUEVDVF9FUSgz
VSwgdmVjMi0+c2l6ZSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmVjMS0+c2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgRVhQRUNUX0VRKGksIHZlYzEuZ2V0KClbaV0pOworICAgICAg
ICBFWFBFQ1RfRVEoaSwgdmVjMi5nZXQoKVtpXSk7CisgICAgfQorICAgIHZlYzEuZ2V0KClbMl0g
PSA0MjsKKyAgICBFWFBFQ1RfRVEoNDJVLCB2ZWMxLmdldCgpWzJdKTsKKyAgICBFWFBFQ1RfRVEo
MlUsIHZlYzIuZ2V0KClbMl0pOworfQorCitURVNUKFdURl9SZWZDb3VudGVkRml4ZWRWZWN0b3Is
IENvcHlWZWN0b3IpCit7CisgICAgYXV0byB2ZWMxID0gVmVjdG9yPHVuc2lnbmVkPjo6ZnJvbSgw
LCAxLCAyLCAzKTsKKyAgICBFWFBFQ1RfRVEoNFUsIHZlYzEuc2l6ZSgpKTsKKyAgICBhdXRvIHZl
YzIgPSBSZWZDb3VudGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+OjpjcmVhdGVGcm9tVmVjdG9yKHZl
YzEpOworICAgIEVYUEVDVF9FUSg0VSwgdmVjMS5zaXplKCkpOworICAgIEVYUEVDVF9FUSg0VSwg
dmVjMi0+c2l6ZSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmVjMS5zaXplKCk7
ICsraSkgeworICAgICAgICBFWFBFQ1RfRVEoaSwgdmVjMVtpXSk7CisgICAgICAgIEVYUEVDVF9F
UShpLCB2ZWMyLmdldCgpW2ldKTsKKyAgICB9CisgICAgdmVjMVsyXSA9IDQyOworICAgIEVYUEVD
VF9FUSg0MlUsIHZlYzFbMl0pOworICAgIEVYUEVDVF9FUSgyVSwgdmVjMi5nZXQoKVsyXSk7Cit9
CisKK1RFU1QoV1RGX1JlZkNvdW50ZWRGaXhlZFZlY3RvciwgTW92ZVZlY3RvcikKK3sKKyAgICBh
dXRvIHZlYzEgPSBWZWN0b3I8TW92ZU9ubHk+Ojpmcm9tKE1vdmVPbmx5KDApLCBNb3ZlT25seSgx
KSwgTW92ZU9ubHkoMiksIE1vdmVPbmx5KDMpKTsKKyAgICBFWFBFQ1RfRVEoNFUsIHZlYzEuc2l6
ZSgpKTsKKyAgICBhdXRvIHZlYzIgPSBSZWZDb3VudGVkRml4ZWRWZWN0b3I8TW92ZU9ubHk+Ojpj
cmVhdGVGcm9tVmVjdG9yKFdURk1vdmUodmVjMSkpOworICAgIEVYUEVDVF9FUSgwVSwgdmVjMS5z
aXplKCkpOworICAgIEVYUEVDVF9FUSg0VSwgdmVjMi0+c2l6ZSgpKTsKKyAgICBmb3IgKHVuc2ln
bmVkIGluZGV4ID0gMDsgaW5kZXggPCB2ZWMyLT5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIEVY
UEVDVF9FUShpbmRleCwgdmVjMi5nZXQoKVtpbmRleF0udmFsdWUoKSk7Cit9CisKK1RFU1QoV1RG
X1JlZkNvdW50ZWRGaXhlZFZlY3RvciwgSXRlcmF0b3JGb3IpCit7CisgICAgYXV0byB2ZWMxID0g
UmVmQ291bnRlZEZpeGVkVmVjdG9yPHVuc2lnbmVkPjo6Y3JlYXRlKDMpOworICAgIHZlYzEuZ2V0
KClbMF0gPSAwOworICAgIHZlYzEuZ2V0KClbMV0gPSAxOworICAgIHZlYzEuZ2V0KClbMl0gPSAy
OworCisgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgIGZvciAoYXV0byBpdGVyID0gdmVjMS0+
YmVnaW4oKTsgaXRlciAhPSB2ZWMxLT5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgIEVYUEVDVF9F
UShpbmRleCwgKml0ZXIpOworICAgICAgICArK2luZGV4OworICAgIH0KK30KKworVEVTVChXVEZf
UmVmQ291bnRlZEZpeGVkVmVjdG9yLCBSZXZlcnNlKQoreworICAgIGF1dG8gdmVjMSA9IFJlZkNv
dW50ZWRGaXhlZFZlY3Rvcjx1bnNpZ25lZD46OmNyZWF0ZSgzKTsKKyAgICB2ZWMxLmdldCgpWzBd
ID0gMDsKKyAgICB2ZWMxLmdldCgpWzFdID0gMTsKKyAgICB2ZWMxLmdldCgpWzJdID0gMjsKKwor
ICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICBmb3IgKGF1dG8gaXRlciA9IHZlYzEtPnJiZWdp
bigpOyBpdGVyICE9IHZlYzEtPnJlbmQoKTsgKytpdGVyKSB7CisgICAgICAgICsraW5kZXg7Cisg
ICAgICAgIEVYUEVDVF9FUSgzVSAtIGluZGV4LCAqaXRlcik7CisgICAgfQorfQorCitURVNUKFdU
Rl9SZWZDb3VudGVkRml4ZWRWZWN0b3IsIEZpbGwpCit7CisgICAgYXV0byB2ZWMxID0gUmVmQ291
bnRlZEZpeGVkVmVjdG9yPHVuc2lnbmVkPjo6Y3JlYXRlKDMpOworICAgIHZlYzEtPmZpbGwoNDIp
OworCisgICAgZm9yIChhdXRvJiB2YWx1ZSA6IHZlYzEuZ2V0KCkpCisgICAgICAgIEVYUEVDVF9F
USh2YWx1ZSwgNDJVKTsKK30KKworc3RydWN0IERlc3RydWN0b3JPYnNlcnZlciB7CisgICAgRGVz
dHJ1Y3Rvck9ic2VydmVyKCkgPSBkZWZhdWx0OworCisgICAgRGVzdHJ1Y3Rvck9ic2VydmVyKGJv
b2wqIGRlc3RydWN0ZWQpCisgICAgICAgIDogZGVzdHJ1Y3RlZChkZXN0cnVjdGVkKQorICAgIHsK
KyAgICB9CisKKyAgICB+RGVzdHJ1Y3Rvck9ic2VydmVyKCkKKyAgICB7CisgICAgICAgIGlmIChk
ZXN0cnVjdGVkKQorICAgICAgICAgICAgKmRlc3RydWN0ZWQgPSB0cnVlOworICAgIH0KKworICAg
IERlc3RydWN0b3JPYnNlcnZlcihEZXN0cnVjdG9yT2JzZXJ2ZXImJiBvdGhlcikKKyAgICAgICAg
OiBkZXN0cnVjdGVkKG90aGVyLmRlc3RydWN0ZWQpCisgICAgeworICAgICAgICBvdGhlci5kZXN0
cnVjdGVkID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBEZXN0cnVjdG9yT2JzZXJ2ZXImIG9wZXJh
dG9yPShEZXN0cnVjdG9yT2JzZXJ2ZXImJiBvdGhlcikKKyAgICB7CisgICAgICAgIGRlc3RydWN0
ZWQgPSBvdGhlci5kZXN0cnVjdGVkOworICAgICAgICBvdGhlci5kZXN0cnVjdGVkID0gbnVsbHB0
cjsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIGJvb2wqIGRlc3RydWN0ZWQg
eyBudWxscHRyIH07Cit9OworCitURVNUKFdURl9SZWZDb3VudGVkRml4ZWRWZWN0b3IsIERlc3Ry
dWN0b3IpCit7CisgICAgVmVjdG9yPGJvb2w+IGZsYWdzKDMsIGZhbHNlKTsKKyAgICB7CisgICAg
ICAgIGF1dG8gdmVjdG9yID0gUmVmQ291bnRlZEZpeGVkVmVjdG9yPERlc3RydWN0b3JPYnNlcnZl
cj46OmNyZWF0ZShmbGFncy5zaXplKCkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgZmxhZ3Muc2l6ZSgpOyArK2kpCisgICAgICAgICAgICB2ZWN0b3IuZ2V0KClbaV0gPSBEZXN0
cnVjdG9yT2JzZXJ2ZXIoJmZsYWdzW2ldKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGZsYWdzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGZsYWdzW2ld
KTsKKyAgICB9CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZsYWdzLnNpemUoKTsgKytp
KQorICAgICAgICBFWFBFQ1RfVFJVRShmbGFnc1tpXSk7Cit9CisKK1RFU1QoV1RGX1JlZkNvdW50
ZWRGaXhlZFZlY3RvciwgRGVzdHJ1Y3RvckFmdGVyTW92ZSkKK3sKKyAgICBWZWN0b3I8Ym9vbD4g
ZmxhZ3MoMywgZmFsc2UpOworICAgIHsKKyAgICAgICAgUmVmUHRyPFJlZkNvdW50ZWRGaXhlZFZl
Y3RvcjxEZXN0cnVjdG9yT2JzZXJ2ZXI+PiBvdXRlclZlY3RvcjsKKyAgICAgICAgeworICAgICAg
ICAgICAgUmVmUHRyPFJlZkNvdW50ZWRGaXhlZFZlY3RvcjxEZXN0cnVjdG9yT2JzZXJ2ZXI+PiBv
dXRlclZlY3RvcjI7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYXV0byB2ZWN0b3Ig
PSBSZWZDb3VudGVkRml4ZWRWZWN0b3I8RGVzdHJ1Y3Rvck9ic2VydmVyPjo6Y3JlYXRlKGZsYWdz
LnNpemUoKSk7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZsYWdz
LnNpemUoKTsgKytpKQorICAgICAgICAgICAgICAgICAgICB2ZWN0b3IuZ2V0KClbaV0gPSBEZXN0
cnVjdG9yT2JzZXJ2ZXIoJmZsYWdzW2ldKTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgZmxhZ3Muc2l6ZSgpOyArK2kpCisgICAgICAgICAgICAgICAgICAgIEVYUEVD
VF9GQUxTRShmbGFnc1tpXSk7CisgICAgICAgICAgICAgICAgb3V0ZXJWZWN0b3IgPSB2ZWN0b3Iu
Y29weVJlZigpOworICAgICAgICAgICAgICAgIG91dGVyVmVjdG9yMiA9IHZlY3Rvci5jb3B5UmVm
KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
ZmxhZ3Muc2l6ZSgpOyArK2kpCisgICAgICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGZsYWdzW2ld
KTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShvdXRlclZlY3Rvci5nZXQoKSwgb3V0ZXJWZWN0b3Iy
LmdldCgpKTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmxh
Z3Muc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoZmxhZ3NbaV0pOworICAg
IH0KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZmxhZ3Muc2l6ZSgpOyArK2kpCisgICAg
ICAgIEVYUEVDVF9UUlVFKGZsYWdzW2ldKTsKK30KKworVEVTVChXVEZfUmVmQ291bnRlZEZpeGVk
VmVjdG9yLCBCYXNpYykKK3sKKyAgICBzdGQ6OmFycmF5PHVuc2lnbmVkLCA0PiBhcnJheSB7IHsK
KyAgICAgICAgMCwgMSwgMiwgMworICAgIH0gfTsKKyAgICB7CisgICAgICAgIGF1dG8gdmVjdG9y
ID0gUmVmQ291bnRlZEZpeGVkVmVjdG9yPHVuc2lnbmVkPjo6Y3JlYXRlKGFycmF5LmJlZ2luKCks
IGFycmF5LmVuZCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDRVLCB2ZWN0b3ItPnNpemUoKSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgwVSwgdmVjdG9yLT5hdCgwKSk7CisgICAgICAgIEVYUEVDVF9FUSgx
VSwgdmVjdG9yLT5hdCgxKSk7CisgICAgICAgIEVYUEVDVF9FUSgyVSwgdmVjdG9yLT5hdCgyKSk7
CisgICAgICAgIEVYUEVDVF9FUSgzVSwgdmVjdG9yLT5hdCgzKSk7CisgICAgfQorfQorCitURVNU
KFdURl9SZWZDb3VudGVkRml4ZWRWZWN0b3IsIENsb25lKQoreworICAgIHN0ZDo6YXJyYXk8dW5z
aWduZWQsIDQ+IGFycmF5IHsgeworICAgICAgICAwLCAxLCAyLCAzCisgICAgfSB9OworICAgIHsK
KyAgICAgICAgYXV0byB2ZWN0b3IgPSBSZWZDb3VudGVkRml4ZWRWZWN0b3I8dW5zaWduZWQ+Ojpj
cmVhdGUoYXJyYXkuYmVnaW4oKSwgYXJyYXkuZW5kKCkpOworICAgICAgICBFWFBFQ1RfRVEoNFUs
IHZlY3Rvci0+c2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDBVLCB2ZWN0b3ItPmF0KDApKTsK
KyAgICAgICAgRVhQRUNUX0VRKDFVLCB2ZWN0b3ItPmF0KDEpKTsKKyAgICAgICAgRVhQRUNUX0VR
KDJVLCB2ZWN0b3ItPmF0KDIpKTsKKyAgICAgICAgRVhQRUNUX0VRKDNVLCB2ZWN0b3ItPmF0KDMp
KTsKKworICAgICAgICBhdXRvIGNsb25lZCA9IHZlY3Rvci0+Y2xvbmUoKTsKKyAgICAgICAgRVhQ
RUNUX0VRKDRVLCBjbG9uZWQtPnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUSgwVSwgY2xvbmVk
LT5hdCgwKSk7CisgICAgICAgIEVYUEVDVF9FUSgxVSwgY2xvbmVkLT5hdCgxKSk7CisgICAgICAg
IEVYUEVDVF9FUSgyVSwgY2xvbmVkLT5hdCgyKSk7CisgICAgICAgIEVYUEVDVF9FUSgzVSwgY2xv
bmVkLT5hdCgzKSk7CisgICAgfQorfQorCitURVNUKFdURl9SZWZDb3VudGVkRml4ZWRWZWN0b3Is
IEVxdWFsKQoreworICAgIGF1dG8gdmVjMSA9IFJlZkNvdW50ZWRGaXhlZFZlY3Rvcjx1bnNpZ25l
ZD46OmNyZWF0ZSgxMCk7CisgICAgYXV0byB2ZWMyID0gUmVmQ291bnRlZEZpeGVkVmVjdG9yPHVu
c2lnbmVkPjo6Y3JlYXRlKDEwKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMTA7ICsr
aSkgeworICAgICAgICB2ZWMxLmdldCgpW2ldID0gaTsKKyAgICAgICAgdmVjMi5nZXQoKVtpXSA9
IGk7CisgICAgfQorICAgIEVYUEVDVF9FUSh2ZWMxLmdldCgpLCB2ZWMyLmdldCgpKTsKKyAgICB2
ZWMxLmdldCgpWzBdID0gNDI7CisgICAgRVhQRUNUX05FKHZlYzEuZ2V0KCksIHZlYzIuZ2V0KCkp
OworfQorCit9Cg==
</data>
<flag name="review"
          id="472447"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="472481"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>