<?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>234865</bug_id>
          
          <creation_ts>2022-01-04 16:24:56 -0800</creation_ts>
          <short_desc>Add a helper function that returns the value of a std::optional&lt;T&gt; or constructs T if needed</short_desc>
          <delta_ts>2022-01-06 16:21:21 -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>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=234851</see_also>
          <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="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>fujii</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jfernandez</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>rego</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>svillar</cc>
    
    <cc>tommyw</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1828144</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-04 16:24:56 -0800</bug_when>
    <thetext>Motivated by the fact that you can&apos;t do the following:

```
std::optional&lt;Foo&gt; foo;

…

return foo.value_or({ }); // Grab the optional&apos;s value if it exists, or create and return a new Foo() if it&apos;s nullopt.
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828163</commentid>
    <comment_count>1</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-04 17:18:31 -0800</bug_when>
    <thetext>I found 116 instances in WebKit where we can replace this:

```
optional.value_or(InnerType { })
```

...with this:

```
valueOrDefault(optional)
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828292</commentid>
    <comment_count>2</comment_count>
      <attachid>448393</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-05 08:52:03 -0800</bug_when>
    <thetext>Created attachment 448393
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828450</commentid>
    <comment_count>3</comment_count>
      <attachid>448393</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2022-01-05 16:19:14 -0800</bug_when>
    <thetext>Comment on attachment 448393
For EWS

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

&gt; Source/WTF/wtf/StdLibExtras.h:609
&gt; +}

Can we use Universal Reference to unify the valueOrDefault functions?

template&lt;typename OptionalType&gt; auto valueOrDefault(OptionalType&amp;&amp; optional)
{
    return std::forward&lt;OptionalType&gt;(optional).value_or(typename std::remove_reference_t&lt;OptionalType&gt;::value_type { });
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828507</commentid>
    <comment_count>4</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-05 21:09:50 -0800</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #3)
&gt; Comment on attachment 448393 [details]
&gt; For EWS
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=448393&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/StdLibExtras.h:609
&gt; &gt; +}
&gt; 
&gt; Can we use Universal Reference to unify the valueOrDefault functions?
&gt; 
&gt; template&lt;typename OptionalType&gt; auto valueOrDefault(OptionalType&amp;&amp; optional)
&gt; {
&gt;     return std::forward&lt;OptionalType&gt;(optional).value_or(typename
&gt; std::remove_reference_t&lt;OptionalType&gt;::value_type { });
&gt; }

Yes, this works and is much cleaner — thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828508</commentid>
    <comment_count>5</comment_count>
      <attachid>448467</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-05 21:11:53 -0800</bug_when>
    <thetext>Created attachment 448467
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828645</commentid>
    <comment_count>6</comment_count>
      <attachid>448467</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-06 09:29:49 -0800</bug_when>
    <thetext>Comment on attachment 448467
Patch

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

&gt; Source/WTF/wtf/StdLibExtras.h:601
&gt; +    return std::forward&lt;OptionalType&gt;(optional).value_or(typename std::remove_reference_t&lt;OptionalType&gt;::value_type { });

It would be even better to make this more generic to work with optional-like things that are not std::optional. I like the idea of one that is based on null checking and the dereferencing operator rather than on value_or and value_type:

    if (optional)
        return std::forward&lt;OptionalType&gt;(optional);
    return decltype(*optional) { };

Not sure that code is exactly correct, but it’s the concept. But of course, we can make this change *after* landing an initial version, because it should not have any effect on std::optional call sites.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828646</commentid>
    <comment_count>7</comment_count>
      <attachid>448467</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-06 09:32:55 -0800</bug_when>
    <thetext>Comment on attachment 448467
Patch

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

Thanks for the review!

&gt;&gt; Source/WTF/wtf/StdLibExtras.h:601
&gt;&gt; +    return std::forward&lt;OptionalType&gt;(optional).value_or(typename std::remove_reference_t&lt;OptionalType&gt;::value_type { });
&gt; 
&gt; It would be even better to make this more generic to work with optional-like things that are not std::optional. I like the idea of one that is based on null checking and the dereferencing operator rather than on value_or and value_type:
&gt; 
&gt;     if (optional)
&gt;         return std::forward&lt;OptionalType&gt;(optional);
&gt;     return decltype(*optional) { };
&gt; 
&gt; Not sure that code is exactly correct, but it’s the concept. But of course, we can make this change *after* landing an initial version, because it should not have any effect on std::optional call sites.

Sounds good! I&apos;ll give this a try, and land this non-std::optional-specific version if it works out — otherwise, I&apos;ll work towards it in a followup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828649</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-06 09:37:13 -0800</bug_when>
    <thetext>Could probably still use ? : instead of an if statement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828650</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-06 09:38:22 -0800</bug_when>
    <thetext>Sorry, not sure why I wrote &quot;still&quot;. The code was using value_or, not ? :, but somehow those hashed to the same thing in my brain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828718</commentid>
    <comment_count>10</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-06 12:38:26 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #6)
&gt; Comment on attachment 448467 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=448467&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/StdLibExtras.h:601
&gt; &gt; +    return std::forward&lt;OptionalType&gt;(optional).value_or(typename std::remove_reference_t&lt;OptionalType&gt;::value_type { });
&gt; 
&gt; It would be even better to make this more generic to work with optional-like
&gt; things that are not std::optional. I like the idea of one that is based on
&gt; null checking and the dereferencing operator rather than on value_or and
&gt; value_type:
&gt; 
&gt;     if (optional)
&gt;         return std::forward&lt;OptionalType&gt;(optional);
&gt;     return decltype(*optional) { };

Unfortunately, I seem to be having trouble getting the latter part to compile :(

```
struct Foo { int value { 0 }; };

…

template&lt;typename OptionalType&gt; auto valueOrDefault(OptionalType&amp;&amp; optional)
{
    if (optional)
        return std::forward&lt;OptionalType&gt;(optional);
    return decltype(*optional) { };
}

…

valueOrDefault(std::optional&lt;Foo&gt; { });
```

...with output:

```
main.cpp:31:12: error: non-const lvalue reference to type &apos;std::optional&lt;Foo&gt;::value_type&apos; (aka &apos;Foo&apos;) cannot bind to an initializer list temporary
    return decltype(*optional) { };
```

I think I&apos;ll land the `std::optional`-specific version for now, and see if I can make this work in a followup.

&gt; 
&gt; Not sure that code is exactly correct, but it’s the concept. But of course,
&gt; we can make this change *after* landing an initial version, because it
&gt; should not have any effect on std::optional call sites.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828719</commentid>
    <comment_count>11</comment_count>
      <attachid>448527</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-06 12:40:01 -0800</bug_when>
    <thetext>Created attachment 448527
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828724</commentid>
    <comment_count>12</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2022-01-06 12:53:42 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #10)
&gt; main.cpp:31:12: error: non-const lvalue reference to type
&gt; &apos;std::optional&lt;Foo&gt;::value_type&apos; (aka &apos;Foo&apos;) cannot bind to an initializer
&gt; list temporary
&gt;     return decltype(*optional) { };
&gt; ```
&gt; 

You need std::remove_reference_t. https://godbolt.org/z/fd3s54Tc3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828738</commentid>
    <comment_count>13</comment_count>
      <attachid>448533</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-06 13:28:09 -0800</bug_when>
    <thetext>Created attachment 448533
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828742</commentid>
    <comment_count>14</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2022-01-06 13:35:55 -0800</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #12)
&gt; (In reply to Wenson Hsieh from comment #10)
&gt; &gt; main.cpp:31:12: error: non-const lvalue reference to type
&gt; &gt; &apos;std::optional&lt;Foo&gt;::value_type&apos; (aka &apos;Foo&apos;) cannot bind to an initializer
&gt; &gt; list temporary
&gt; &gt;     return decltype(*optional) { };
&gt; &gt; ```
&gt; &gt; 
&gt; 
&gt; You need std::remove_reference_t. https://godbolt.org/z/fd3s54Tc3

Thanks! That&apos;s what I was missing 🤦🏻‍♂️</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828777</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-06 16:20:09 -0800</bug_when>
    <thetext>Committed r287731 (245806@main): &lt;https://commits.webkit.org/245806@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 448533.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828778</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-06 16:21:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/87224711&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448393</attachid>
            <date>2022-01-05 08:52:03 -0800</date>
            <delta_ts>2022-01-05 21:11:49 -0800</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-234865-20220105085202.patch</filename>
            <type>text/plain</type>
            <size>98691</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg4MWY1ODMwNGQyMmIwNjdiYTZmYjUw
OTZkZGZmOTdlYjExN2Q4OWEuLjQ1Nzg5NzdlYjNkYTgzMTkxOTI0OTIxMGI2MGNiYTJhNDhmYWJk
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjItMDEtMDUgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQg
cmV0dXJucyB0aGUgdmFsdWUgb2YgYSBzdGQ6Om9wdGlvbmFsPFQ+IG9yIGNvbnN0cnVjdHMgVCBp
ZiBuZWVkZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNDg2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBhIG5ldyBoZWxwZXIgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSB2YWx1ZSBvZiBhIGdp
dmVuIGBzdGQ6Om9wdGlvbmFsPFR5cGU+YCBpZiBpdCBleGlzdHMsIGFuZCBvdGhlcndpc2UKKyAg
ICAgICAgY29uc3RydWN0cyBhbmQgcmV0dXJucyBgVHlwZSB7IH1gLiBDdXJyZW50bHksIHRoZSBh
bHRlcm5hdGl2ZSB0byB0aGlzIGlzIHdyaXRpbmcgb3V0IHRoZSBgVHlwZSB7IH1gIGluIGZ1bGwg
d2hlbgorICAgICAgICBwYXNzaW5nIGluIGFuIGFyZ3VtZW50IHRvIGB2YWx1ZV9vcmA7IHVzaW5n
IHRoaXMgYXZvaWRzIHNvbWUgcmVkdW5kYW5jeSBhbmQgbWFrZXMgdGhlIGV4cHJlc3Npb24gYSBi
aXQgZWFzaWVyIHRvCisgICAgICAgIHJlYWQuCisKKyAgICAgICAgKiB3dGYvU3RkTGliRXh0cmFz
Lmg6CisgICAgICAgIChXVEY6OnZhbHVlT3JEZWZhdWx0KToKKworICAgICAgICBBZGQgdHdvIG92
ZXJsb2FkZWQgdmVyc2lvbnMgb2YgdGhpcyBoZWxwZXI6IG9uZSB0aGF0IHRha2VzIGEgY29uc3Qg
cmVmLCBhbmQgYW5vdGhlciB0aGF0IHRha2VzIGFuIHJ2YWx1ZS4gVGhlCisgICAgICAgIGxhdHRl
ciBpcyBuZWVkZWQgaW4gY2FzZXMgd2hlcmUgd2UncmUgcGFzc2luZyBub24tY29weWFibGUgdmFs
dWVzIGludG8gdGhlIGhlbHBlciwgYW5kIHRoZSBmb3JtZXIgaXMgdXNlZCBmb3IKKyAgICAgICAg
YWxsIG90aGVyIHNjZW5hcmlvcy4KKwogMjAyMS0xMi0zMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFJlcGxhY2UgVURJUzg2IHdpdGggWnlkaXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzOTliYmMxOGI4ZGUzMTkwMTI2NDgyMzFkMzU2ZWFiZGNiODc4ZTkyLi5h
NzRkZWRkZWU2ZWYxN2YwZGJhOGNjNTYzNTZiNzUzMjIwNDk3ZDliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTI3IEBACisyMDIyLTAxLTA1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBw
bGUuY29tPgorCisgICAgICAgIEFkZCBhIGhlbHBlciBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhl
IHZhbHVlIG9mIGEgc3RkOjpvcHRpb25hbDxUPiBvciBjb25zdHJ1Y3RzIFQgaWYgbmVlZGVkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ4NjUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgYHZhbHVl
T3JEZWZhdWx0YCB3aGVyZSBhcHByb3ByaWF0ZS4gU2VlIFdURi9DaGFuZ2VMb2cgZm9yIG1vcmUg
ZGV0YWlscy4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBw
bGVQYXlQYXltZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OmRpZEF1dGhvcml6ZVBheW1l
bnQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNvbnN0cmFpbnRzKToK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSVENJY2VDYW5kaWRhdGU6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxl
cy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxU
cmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbCk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUkJv
dW5kZWRSZWZlcmVuY2VTcGFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkJvdW5kZWRS
ZWZlcmVuY2VTcGFjZTo6dXBkYXRlSWZOZWVkZWQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgICogaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpzZXR1cERhdGVUaW1lQ2hvb3Nl
clBhcmFtZXRlcnMpOgorICAgICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OmhhbmRsZUNsaWNrKToKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmlzUG9pbnRJblBhdGhJbnRl
cm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpp
c1BvaW50SW5TdHJva2VJbnRlcm5hbCk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpMaW5lQm94QnVpbGRlcjo6YnVpbGQpOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94VmVydGljYWxBbGlnbmVyOjpjb21wdXRlTGlu
ZUJveExvZ2ljYWxIZWlnaHQgY29uc3QpOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OnNldFVzZWRHZW9tZXRyeUZvckNlbGxz
KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRl
ci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwOgor
ICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2UuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6
CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjp1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURyYWcpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjpsYXN0S25vd25Nb3VzZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VNb3ZlRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnRhcmdldFBvc2l0aW9uSW5XaW5kb3dGb3JTZWxlY3Rp
b25BdXRvc2Nyb2xsIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGlz
cGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRTb29uSW5RdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6ZmFrZU1vdXNlTW92ZUV2ZW50VGltZXJGaXJlZCk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhvdmVyVGltZXJGaXJlZCk6CisgICAgICAgICogcGFnZS9GcmFt
ZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzZXRMYXlvdXRWaWV3cG9y
dE92ZXJyaWRlUmVjdCk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2U6OnNhbXBsZWRQYWdlVG9wQ29sb3IgY29uc3QpOgorICAgICAgICAqIHBhZ2UvbWFj
L0V2ZW50SGFuZGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dGFy
Z2V0UG9zaXRpb25JbldpbmRvd0ZvclNlbGVjdGlvbkF1dG9zY3JvbGwgY29uc3QpOgorICAgICAg
ICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlcjo6bm9kZURp
ZEhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdS
ZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5D
b250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjpuYXR1cmFsU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDQTo6c2V0VmlzaWJsZUFuZENvdmVyYWdlUmVjdHMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VHJhbnNmb3JtU3RhdGU6Om1hcHBlZFBvaW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlRyYW5zZm9ybVN0YXRlOjptYXBRdWFkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5z
Zm9ybVN0YXRlOjpmbGF0dGVuV2l0aFRyYW5zZm9ybSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdEJhc2U6OnN5c3RlbVByZXZpZXdJbmZvIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2VCYXNlOjpmaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZUJhc2U6OnNhbml0aXplSFRUUEhlYWRlckZpZWxkc0FjY29yZGluZ1RvVGFpbnRpbmcp
OgorICAgICAgICAqIHJlbmRlcmluZy9QYWludEluZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
aW50SW5mbzo6YXBwbHlUcmFuc2Zvcm0pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6
cmVsYXRpdmVQb3NpdGlvbk9mZnNldCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6Y29tcHV0ZUF1dG9SZXBl
YXRUcmFja3NDb3VudCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRMYXllckJ5QXBwbHlpbmdUcmFu
c2Zvcm0pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclZpZXc6OmxheW91dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9MZWdh
Y3lSZW5kZXJTVkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVJlbmRlclNWR1Jv
b3Q6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRh
aW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6Om5vZGVBdEZs
b2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpub2RlQXRG
bG9hdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpub2RlQXRGbG9hdFBvaW50KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmhpdFRlc3RDbGlwQ29udGVu
dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3QgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6YWJzb2x1dGVSZWN0cyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSb290OjphYnNvbHV0ZVF1YWRzIGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1NoYXBlOjpub2RlQXRGbG9hdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6
bm9kZUF0RmxvYXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBw
b3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN1cHBvcnQ6OmNsaXBDb250ZXh0
VG9DU1NDbGlwcGluZ0FyZWEpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5n
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlw
VG9JbWFnZUJ1ZmZlcik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpjYWxjdWxhdGVU
b0F0RW5kT2ZEdXJhdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rp
b25FbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyk6CisgICAg
ICAgICogc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHVG9PVEZGb250Q29udmVydGVyOjpwcm9jZXNzR2x5cGhFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1RvT1RGRm9udENvbnZlcnRlcjo6U1ZHVG9PVEZGb250Q29udmVydGVyKToKKyAg
ICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8RmxvYXRQb2ludD46OmZyb21TdHJpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8RmxvYXRSZWN0Pjo6ZnJvbVN0cmluZyk6Cisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJu
YWxzOjpmcmFtZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxz
OjpwYWdlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NjcmlwdFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3JpcHRTdG9yYWdl
OjpTV1NjcmlwdFN0b3JhZ2UpOgorCiAyMDIyLTAxLTA0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25f
aHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIE1vZGFsQ29udGFpbmVyT2JzZXJ2ZXIgc2hvdWxk
IHNlYXJjaCBmb3IgdGV4dCBpbiBzdWJmcmFtZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IDQ1MTI0
YzNjZjQ5OWQzMzk1NDg3OTdhYmViMmQ2OGZiMGY0Njk5MmQuLmM2MTcwZWMwY2MyZTA4MzY5NDEx
Y2U5NjZmZjBhZTg2ZDE5MGE0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBA
CisyMDIyLTAxLTA1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisg
ICAgICAgIEFkZCBhIGhlbHBlciBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHZhbHVlIG9mIGEg
c3RkOjpvcHRpb25hbDxUPiBvciBjb25zdHJ1Y3RzIFQgaWYgbmVlZGVkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ4NjUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgYHZhbHVlT3JEZWZhdWx0YCB3
aGVyZSBhcHByb3ByaWF0ZS4gU2VlIFdURi9DaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlscy4KKwor
ICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21wdXRlUGFzc0VuY29k
ZXJJbXBsLmNwcDoKKyAgICAgICAgKFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXJJbXBs
OjpzZXRCaW5kR3JvdXApOgorICAgICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJH
UFVSZW5kZXJCdW5kbGVFbmNvZGVySW1wbC5jcHA6CisgICAgICAgIChQQUw6OldlYkdQVTo6UmVu
ZGVyQnVuZGxlRW5jb2RlckltcGw6OnNldEJpbmRHcm91cCk6CisgICAgICAgICogcGFsL2dyYXBo
aWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlclBhc3NFbmNvZGVySW1wbC5jcHA6CisgICAgICAg
IChQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXJJbXBsOjpzZXRCaW5kR3JvdXApOgorCiAy
MDIxLTEyLTIxICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
c3VwcG9ydCBmb3IgcHJlbXVsdGlwbGllZCBhbHBoYSBpbnRlcnBvbGF0ZWQgZ3JhZGllbnRzIGFu
ZCBkZWZhdWx0ZWQgb2ZmIG9wdGlvbiB0byB1c2UgdGhlbSBmb3IgQ1NTIEdyYWRpZW50cwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCBlYTc2ZjViYTk1MGFjMjlkZjM4ZmJkOWIxNzhiNzFjZjM1YWU5NzA0Li5jNGU1ZGVk
ZWFmZGE5MDFkMGM2Y2ZlYmExNGNjZmI2OWZjOTNlYjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0
IEBACisyMDIyLTAxLTA1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBhIGhlbHBlciBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHZhbHVlIG9m
IGEgc3RkOjpvcHRpb25hbDxUPiBvciBjb25zdHJ1Y3RzIFQgaWYgbmVlZGVkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ4NjUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgYHZhbHVlT3JEZWZhdWx0
YCB3aGVyZSBhcHByb3ByaWF0ZS4gU2VlIFdURi9DaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlscy4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNj
aGVkdWxlUmVzb3VyY2VMb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjplbnN1cmVTV1NlcnZl
cik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3Rl
bS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6ZmlsZVRpbWVzKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6TmV0d29ya1N0b3JhZ2VNYW5h
Z2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnRy
YW5zaXRpb25JbnB1dFNvdXJjZVRvU3RhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9X
ZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2Fy
ZFByb3h5OjpnZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9u
YWxQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnJlZ2lzdHJhYmxlRG9tYWluIGNvbnN0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2Fk
ZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3Ry
YXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdp
bjo6Y29udmVydEZyb21QREZWaWV3VG9Sb290VmlldyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlBERlBsdWdpbjo6Ym91bmRzT25TY3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQREZQ
bHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZy
YW1lSW5TY3JpcHRXb3JsZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpkaWRFbnRlckZ1bGxzY3JlZW4pOgorCiAyMDIyLTAxLTA0ICBXZW5zb24gSHNpZWggIDx3ZW5z
b25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6IHBhdGhuYW1l
cy5zaXplKCkgPT0gc2FuZGJveEV4dGVuc2lvbnNIYW5kbGVBcnJheS5zaXplKCkgaW4gV2ViS2l0
OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFBhdGhuYW1lc0ZvclR5cGUoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmggYi9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJF
eHRyYXMuaAppbmRleCBlOWIzNzU2ZjJiM2ZmMWE3ZWJjODc2YjAzMzFmZDhlMTdkYWJhYmZhLi4w
Y2I1ZTVkY2I4NzYzYTM1M2Y1NDFiOWE0OTc3MDU0ZWUyNjJhYWMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRy
YXMuaApAQCAtNTMxLDYgKzUzMSw4IEBAIEFMV0FZU19JTkxJTkUgY29uc3RleHByIHR5cGVuYW1l
IHJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGUmJiBtb3ZlKFQmJiB2YWx1ZSkKIAogfSAvLyBuYW1l
c3BhY2Ugc3RkCiAKKyNkZWZpbmUgV1RGTW92ZSh2YWx1ZSkgc3RkOjptb3ZlPFdURjo6Q2hlY2tN
b3ZlUGFyYW1ldGVyPih2YWx1ZSkKKwogbmFtZXNwYWNlIFdURiB7CiAKIHRlbXBsYXRlPGNsYXNz
IFQsIGNsYXNzLi4uIEFyZ3M+CkBAIC01OTYsOSArNTk4LDE3IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IE9wdGlvbmFsVHlwZSwgY2xhc3MgQ2FsbGJhY2s+IHR5cGVuYW1lIE9wdGlvbmFsVHlwZTo6dmFs
dWVfdHlwCiAgICAgcmV0dXJuIG9wdGlvbmFsID8gKm9wdGlvbmFsIDogY2FsbGJhY2soKTsKIH0K
IAotfSAvLyBuYW1lc3BhY2UgV1RGCit0ZW1wbGF0ZTx0eXBlbmFtZSBPcHRpb25hbFR5cGU+IHR5
cGVuYW1lIE9wdGlvbmFsVHlwZTo6dmFsdWVfdHlwZSB2YWx1ZU9yRGVmYXVsdChjb25zdCBPcHRp
b25hbFR5cGUmIG9wdGlvbmFsKQoreworICAgIHJldHVybiBvcHRpb25hbC52YWx1ZV9vcih0eXBl
bmFtZSBPcHRpb25hbFR5cGU6OnZhbHVlX3R5cGUgeyB9KTsKK30KIAotI2RlZmluZSBXVEZNb3Zl
KHZhbHVlKSBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KHZhbHVlKQordGVtcGxh
dGU8dHlwZW5hbWUgT3B0aW9uYWxUeXBlPiB0eXBlbmFtZSBPcHRpb25hbFR5cGU6OnZhbHVlX3R5
cGUgdmFsdWVPckRlZmF1bHQoT3B0aW9uYWxUeXBlJiYgb3B0aW9uYWwpCit7CisgICAgcmV0dXJu
IFdURk1vdmUob3B0aW9uYWwpLnZhbHVlX29yKHR5cGVuYW1lIE9wdGlvbmFsVHlwZTo6dmFsdWVf
dHlwZSB7IH0pOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpHQjsKIHVz
aW5nIFdURjo6S0I7CkBAIC02MjIsMyArNjMyLDQgQEAgdXNpbmcgV1RGOjpyb3VuZFVwVG9NdWx0
aXBsZU9mOwogdXNpbmcgV1RGOjpzYWZlQ2FzdDsKIHVzaW5nIFdURjo6dHJ5QmluYXJ5U2VhcmNo
OwogdXNpbmcgV1RGOjp2YWx1ZU9yQ29tcHV0ZTsKK3VzaW5nIFdURjo6dmFsdWVPckRlZmF1bHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1
ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcAppbmRleCBi
YTI4NmMyMzVhZmIxNzViMzMxOWMxMDBiOTc3NDNiMjI4YjUwY2UxLi5hOGI2MGVlNDc5MjIxNWJk
Mjc2NjhhYmUxZmQ3NDdmNGU0OTY3NjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQ
YXlQYXltZW50SGFuZGxlci5jcHAKQEAgLTc0Miw3ICs3NDIsNyBAQCB2b2lkIEFwcGxlUGF5UGF5
bWVudEhhbmRsZXI6OnZhbGlkYXRlTWVyY2hhbnQoVVJMJiYgdmFsaWRhdGlvblVSTCkKIAogc3Rh
dGljIFJlZjxQYXltZW50QWRkcmVzcz4gY29udmVydChjb25zdCBBcHBsZVBheVBheW1lbnRDb250
YWN0JiBjb250YWN0KQogewotICAgIHJldHVybiBQYXltZW50QWRkcmVzczo6Y3JlYXRlKGNvbnRh
Y3QuY291bnRyeUNvZGUsIGNvbnRhY3QuYWRkcmVzc0xpbmVzLnZhbHVlX29yKFZlY3RvcjxTdHJp
bmc+KCkpLCBjb250YWN0LmFkbWluaXN0cmF0aXZlQXJlYSwgY29udGFjdC5sb2NhbGl0eSwgY29u
dGFjdC5zdWJMb2NhbGl0eSwgY29udGFjdC5wb3N0YWxDb2RlLCBTdHJpbmcoKSwgU3RyaW5nKCks
IGNvbnRhY3QubG9jYWxpemVkTmFtZSwgY29udGFjdC5waG9uZU51bWJlcik7CisgICAgcmV0dXJu
IFBheW1lbnRBZGRyZXNzOjpjcmVhdGUoY29udGFjdC5jb3VudHJ5Q29kZSwgdmFsdWVPckRlZmF1
bHQoY29udGFjdC5hZGRyZXNzTGluZXMpLCBjb250YWN0LmFkbWluaXN0cmF0aXZlQXJlYSwgY29u
dGFjdC5sb2NhbGl0eSwgY29udGFjdC5zdWJMb2NhbGl0eSwgY29udGFjdC5wb3N0YWxDb2RlLCBT
dHJpbmcoKSwgU3RyaW5nKCksIGNvbnRhY3QubG9jYWxpemVkTmFtZSwgY29udGFjdC5waG9uZU51
bWJlcik7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBAIC03NTcsNyArNzU3LDcgQEAgdm9p
ZCBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpkaWRBdXRob3JpemVQYXltZW50KGNvbnN0IFBheW1l
bnQmIHBheW1lbnQpCiAgICAgQVNTRVJUKG1fdXBkYXRlU3RhdGUgPT0gVXBkYXRlU3RhdGU6Ok5v
bmUpOwogCiAgICAgYXV0byBhcHBsZVBheVBheW1lbnQgPSBwYXltZW50LnRvQXBwbGVQYXlQYXlt
ZW50KHZlcnNpb24oKSk7Ci0gICAgYXV0byBzaGlwcGluZ0NvbnRhY3QgPSBhcHBsZVBheVBheW1l
bnQuc2hpcHBpbmdDb250YWN0LnZhbHVlX29yKEFwcGxlUGF5UGF5bWVudENvbnRhY3QoKSk7Cisg
ICAgYXV0byBzaGlwcGluZ0NvbnRhY3QgPSB2YWx1ZU9yRGVmYXVsdChhcHBsZVBheVBheW1lbnQu
c2hpcHBpbmdDb250YWN0KTsKICAgICBhdXRvIGRldGFpbHNGdW5jdGlvbiA9IFthcHBsZVBheVBh
eW1lbnQgPSBXVEZNb3ZlKGFwcGxlUGF5UGF5bWVudCldKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QpIHsKICAgICAgICAgcmV0dXJuIHRvSlNEaWN0aW9uYXJ5KGxleGlj
YWxHbG9iYWxPYmplY3QsIGFwcGxlUGF5UGF5bWVudCk7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCmlu
ZGV4IDdiYzIxZTU2YWVjYzY1MWFkODg3MGUxNGY1YjdjNTc1YjQxYTE4YjIuLmFhMDFiMzU3MDEz
MTA5YWZlMTZhYTI0ZjA2ZGUzMGFmMjY4MGNjMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcApAQCAtMzg2LDcg
KzM4Niw3IEBAIHZvaWQgTWVkaWFTdHJlYW1UcmFjazo6YXBwbHlDb25zdHJhaW50cyhjb25zdCBz
dGQ6Om9wdGlvbmFsPE1lZGlhVHJhY2tDb25zdHJhaW50CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICAgICAgbV9wcm9taXNlLT5yZXNvbHZlKCk7Ci0gICAgICAgIG1fY29uc3Ry
YWludHMgPSBjb25zdHJhaW50cy52YWx1ZV9vcihNZWRpYVRyYWNrQ29uc3RyYWludHMgeyB9KTsK
KyAgICAgICAgbV9jb25zdHJhaW50cyA9IHZhbHVlT3JEZWZhdWx0KGNvbnN0cmFpbnRzKTsKICAg
ICB9OwogICAgIG1fcHJpdmF0ZS0+YXBwbHlDb25zdHJhaW50cyhjcmVhdGVNZWRpYUNvbnN0cmFp
bnRzKGNvbnN0cmFpbnRzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUu
Y3BwCmluZGV4IDhkOTViODEyOGE1MDg2ZDczNjg4ZmY5MjNkMGNhYjQyZmFmNzA2MmYuLjlmNzA2
ZGY2ZGY2NWU3Zjk1ODE1NzUxNDAyMjQ4ZTA4YzdhMjNmYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHAKQEAgLTU2
LDcgKzU2LDcgQEAgRXhjZXB0aW9uT3I8UmVmPFJUQ0ljZUNhbmRpZGF0ZT4+IFJUQ0ljZUNhbmRp
ZGF0ZTo6Y3JlYXRlKGNvbnN0IFJUQ0ljZUNhbmRpZGF0ZUkKICAgICBpZiAoZGljdGlvbmFyeS5z
ZHBNaWQuaXNOdWxsKCkgJiYgIWRpY3Rpb25hcnkuc2RwTUxpbmVJbmRleCkKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIkNhbmRpZGF0ZSBtdXN0IG5vdCBoYXZlIGJvdGgg
bnVsbCBzZHBNaWQgYW5kIHNkcE1MaW5lSW5kZXgiIH07CiAKLSAgICBhdXRvIGZpZWxkcyA9IHBh
cnNlSWNlQ2FuZGlkYXRlU0RQKGRpY3Rpb25hcnkuY2FuZGlkYXRlKS52YWx1ZV9vcihSVENJY2VD
YW5kaWRhdGU6OkZpZWxkcyB7IH0pOworICAgIGF1dG8gZmllbGRzID0gdmFsdWVPckRlZmF1bHQo
cGFyc2VJY2VDYW5kaWRhdGVTRFAoZGljdGlvbmFyeS5jYW5kaWRhdGUpKTsKICAgICBmaWVsZHMu
dXNlcm5hbWVGcmFnbWVudCA9IGRpY3Rpb25hcnkudXNlcm5hbWVGcmFnbWVudDsKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBSVENJY2VDYW5kaWRhdGUoZGljdGlvbmFyeS5jYW5kaWRhdGUsIGRp
Y3Rpb25hcnkuc2RwTWlkLCBkaWN0aW9uYXJ5LnNkcE1MaW5lSW5kZXgsIFdURk1vdmUoZmllbGRz
KSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NR
TFRyYW5zYWN0aW9uLmNwcAppbmRleCA3YTJjOWE3MzQ2YWYxMGI3ZmVhNzE1NjU5OTE5MTMxMTUz
ODg4Yjc3Li42ODMyYWNhOTBlZDZkOWViODFhYjlmMzU1OTU5M2JmNDY0MzBmZDBmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9u
LmNwcApAQCAtODMsNyArODMsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBTUUxUcmFuc2FjdGlvbjo6
ZXhlY3V0ZVNxbChjb25zdCBTdHJpbmcmIHNxbFN0YXRlbWVudCwgc3RkOjpvcAogICAgIGVsc2Ug
aWYgKG1fcmVhZE9ubHkpCiAgICAgICAgIHBlcm1pc3Npb25zIHw9IERhdGFiYXNlQXV0aG9yaXpl
cjo6UmVhZE9ubHlNYXNrOwogCi0gICAgYXV0byBzdGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFNRTFN0
YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsU3RhdGVtZW50LCBhcmd1bWVudHMudmFsdWVfb3IoVmVj
dG9yPFNRTFZhbHVlPiB7IH0pLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShjYWxsYmFja0Vy
cm9yKSwgcGVybWlzc2lvbnMpOworICAgIGF1dG8gc3RhdGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxT
dGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbFN0YXRlbWVudCwgdmFsdWVPckRlZmF1bHQoYXJndW1l
bnRzKSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoY2FsbGJhY2tFcnJvciksIHBlcm1pc3Np
b25zKTsKIAogICAgIGlmIChtX2RhdGFiYXNlLT5kZWxldGVkKCkpCiAgICAgICAgIHN0YXRlbWVu
dC0+c2V0RGF0YWJhc2VEZWxldGVkRXJyb3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNlU3BhY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5jcHAKaW5kZXgg
MTYxMWZjOWUzZjYzYzkwODFmZDZiYTRkOTQ0MWQ2ODg1M2IxNGM3YS4uN2U0YWM0OTU2MDg3NjVk
Y2VjODgyZjk2YzQ2MjkwZTJkNGNmMmJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5jcHAKQEAgLTEw
NSw3ICsxMDUsNyBAQCB2b2lkIFdlYlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlOjp1cGRhdGVJZk5l
ZWRlZCgpCiAKICAgICBpZiAoZnJhbWVEYXRhLnN0YWdlUGFyYW1ldGVycy5ib3VuZHMuc2l6ZSgp
ID49IE1pbmltdW1Cb3VuZHNWZXJ0aWNlcykgewogICAgICAgICAvLyBFYWNoIHBvaW50IGhhcyB0
byBtdWx0aXBsaWVkIGJ5IHRoZSBpbnZlcnNlIG9mIG9yaWdpbk9mZnNldC4KLSAgICAgICAgYXV0
byB0cmFuc2Zvcm0gPSBvcmlnaW5PZmZzZXQoKS5yYXdUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFs
dWVfb3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CisgICAgICAgIGF1dG8gdHJhbnNmb3JtID0g
dmFsdWVPckRlZmF1bHQob3JpZ2luT2Zmc2V0KCkucmF3VHJhbnNmb3JtKCkuaW52ZXJzZSgpKTsK
ICAgICAgICAgZm9yIChhdXRvJiBwb2ludCA6IGZyYW1lRGF0YS5zdGFnZVBhcmFtZXRlcnMuYm91
bmRzKSB7CiAgICAgICAgICAgICBhdXRvIG1hcHBlZFBvaW50ID0gdHJhbnNmb3JtLm1hcFBvaW50
KEZsb2F0UG9pbnQzRChwb2ludC54KCksIDAuMCwgcG9pbnQueSgpKSk7CiAgICAgICAgICAgICBt
X2JvdW5kc0dlb21ldHJ5LmFwcGVuZChET01Qb2ludFJlYWRPbmx5OjpjcmVhdGUocXVhbnRpemUo
bWFwcGVkUG9pbnQueCgpKSwgcXVhbnRpemUobWFwcGVkUG9pbnQueSgpKSwgcXVhbnRpemUobWFw
cGVkUG9pbnQueigpKSwgMS4wKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbXB1dGVQYXNzRW5jb2RlckltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21wdXRl
UGFzc0VuY29kZXJJbXBsLmNwcAppbmRleCBmYTI2Njc1YWMzNjJjM2ZhMmFlYmU1NjIxODE5YmY4
ZGJlMmE5NTg5Li5lZGQ1OWQ2NTk3NmYwNGE3YzFiMzdmZDFhYmIwOGQ1NGJlNGY3NjE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VUNvbXB1dGVQYXNzRW5jb2RlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Z3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVySW1wbC5jcHAKQEAg
LTgxLDcgKzgxLDcgQEAgdm9pZCBDb21wdXRlUGFzc0VuY29kZXJJbXBsOjplbmRQYXNzKCkKIHZv
aWQgQ29tcHV0ZVBhc3NFbmNvZGVySW1wbDo6c2V0QmluZEdyb3VwKEluZGV4MzIgaW5kZXgsIGNv
bnN0IEJpbmRHcm91cCYgYmluZEdyb3VwLAogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEJ1ZmZl
ckR5bmFtaWNPZmZzZXQ+PiYmIG9mZnNldHMpCiB7Ci0gICAgYXV0byBiYWNraW5nT2Zmc2V0cyA9
IG9mZnNldHMudmFsdWVfb3IoVmVjdG9yPEJ1ZmZlckR5bmFtaWNPZmZzZXQ+IHsgfSk7CisgICAg
YXV0byBiYWNraW5nT2Zmc2V0cyA9IHZhbHVlT3JEZWZhdWx0KG9mZnNldHMpOwogICAgIHdncHVD
b21wdXRlUGFzc0VuY29kZXJTZXRCaW5kR3JvdXAobV9iYWNraW5nLCBpbmRleCwgbV9jb252ZXJ0
VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhiaW5kR3JvdXApLCBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oYmFja2luZ09mZnNldHMuc2l6ZSgpKSwgYmFja2luZ09mZnNldHMuZGF0YSgp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJH
UFUvSW1wbC9XZWJHUFVSZW5kZXJCdW5kbGVFbmNvZGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlckJ1bmRsZUVuY29kZXJJ
bXBsLmNwcAppbmRleCBlZjE4YjUwM2VhZDFjNzM4NThkZDMxMzg4OTQ3MjA0ZmE5ZWY5NjkwLi4y
ODkyOWU1MTQ1NGYzZmVhYTYyY2FjZDdlYWVjMDcxYzk2M2JiNmMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlckJ1bmRs
ZUVuY29kZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dl
YkdQVS9JbXBsL1dlYkdQVVJlbmRlckJ1bmRsZUVuY29kZXJJbXBsLmNwcApAQCAtOTAsNyArOTAs
NyBAQCB2b2lkIFJlbmRlckJ1bmRsZUVuY29kZXJJbXBsOjpkcmF3SW5kZXhlZEluZGlyZWN0KGNv
bnN0IEJ1ZmZlciYgaW5kaXJlY3RCdWZmZXIsCiB2b2lkIFJlbmRlckJ1bmRsZUVuY29kZXJJbXBs
OjpzZXRCaW5kR3JvdXAoSW5kZXgzMiBpbmRleCwgY29uc3QgQmluZEdyb3VwJiBiaW5kR3JvdXAs
CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8QnVmZmVyRHluYW1pY09mZnNldD4+JiYgZHluYW1p
Y09mZnNldHMpCiB7Ci0gICAgYXV0byBiYWNraW5nT2Zmc2V0cyA9IGR5bmFtaWNPZmZzZXRzLnZh
bHVlX29yKFZlY3RvcjxCdWZmZXJEeW5hbWljT2Zmc2V0PiB7IH0pOworICAgIGF1dG8gYmFja2lu
Z09mZnNldHMgPSB2YWx1ZU9yRGVmYXVsdChkeW5hbWljT2Zmc2V0cyk7CiAgICAgd2dwdVJlbmRl
ckJ1bmRsZUVuY29kZXJTZXRCaW5kR3JvdXAobV9iYWNraW5nLCBpbmRleCwgbV9jb252ZXJ0VG9C
YWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhiaW5kR3JvdXApLCBiYWNraW5nT2Zmc2V0
cy5zaXplKCksIGJhY2tpbmdPZmZzZXRzLmRhdGEoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVyUGFzc0Vu
Y29kZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXJJbXBsLmNwcAppbmRleCA1YTFmOTI0NjZlYmI4MjJm
MDc3MTlkZTdkZWI0M2Y4ZjA4M2U4Y2Y3Li5kMmZlNWRmNTI2Y2MzNjBmN2EzZWQyMzNlMzJmMzRj
OTNkMTg2NjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dl
YkdQVS9JbXBsL1dlYkdQVVJlbmRlclBhc3NFbmNvZGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rl
ckltcGwuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgUmVuZGVyUGFzc0VuY29kZXJJbXBsOjpk
cmF3SW5kZXhlZEluZGlyZWN0KGNvbnN0IEJ1ZmZlciYgaW5kaXJlY3RCdWZmZXIsIFNpCiB2b2lk
IFJlbmRlclBhc3NFbmNvZGVySW1wbDo6c2V0QmluZEdyb3VwKEluZGV4MzIgaW5kZXgsIGNvbnN0
IEJpbmRHcm91cCYgYmluZEdyb3VwLAogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEJ1ZmZlckR5
bmFtaWNPZmZzZXQ+PiYmIGR5bmFtaWNPZmZzZXRzKQogewotICAgIGF1dG8gYmFja2luZ09mZnNl
dHMgPSBkeW5hbWljT2Zmc2V0cy52YWx1ZV9vcihWZWN0b3I8QnVmZmVyRHluYW1pY09mZnNldD4g
eyB9KTsKKyAgICBhdXRvIGJhY2tpbmdPZmZzZXRzID0gdmFsdWVPckRlZmF1bHQoZHluYW1pY09m
ZnNldHMpOwogICAgIHdncHVSZW5kZXJQYXNzRW5jb2RlclNldEJpbmRHcm91cChtX2JhY2tpbmcs
IGluZGV4LCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGJpbmRH
cm91cCksIGJhY2tpbmdPZmZzZXRzLnNpemUoKSwgYmFja2luZ09mZnNldHMuZGF0YSgpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNDJkYWNkMmRkNWNlM2U1ZjYyMzMzYTIxNjJj
YzM3Njc0NmU4ZmI4OS4uMmQ4YjliNWMzMmM3YTAwMzFjMjEzNWU2ZmQzMjJjYTVmYjNmZDBmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zNTIsOCArMzUyLDggQEAKICNpbmNsdWRlICJI
VE1MVmlkZW9FbGVtZW50LmgiCiAjZW5kaWYKIAotI2RlZmluZSBET0NVTUVOVF9SRUxFQVNFX0xP
RyhjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0coY2hhbm5lbCwgIiVwIC0gW3BhZ2VJRD0l
IiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgbWFpbj0lZF0gRG9jdW1lbnQ6OiIgZm10
LCB0aGlzLCBwYWdlSUQoKS52YWx1ZV9vcihQYWdlSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCks
IGZyYW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgpLCB0aGlz
ID09ICZ0b3BEb2N1bWVudCgpLCAjI19fVkFfQVJHU19fKQotI2RlZmluZSBET0NVTUVOVF9SRUxF
QVNFX0xPR19FUlJPUihjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoY2hhbm5l
bCwgIiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgbWFpbj0l
ZF0gRG9jdW1lbnQ6OiIgZm10LCB0aGlzLCBwYWdlSUQoKS52YWx1ZV9vcihQYWdlSWRlbnRpZmll
ciB7IH0pLnRvVUludDY0KCksIGZyYW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIgeyB9
KS50b1VJbnQ2NCgpLCB0aGlzID09ICZ0b3BEb2N1bWVudCgpLCAjI19fVkFfQVJHU19fKQorI2Rl
ZmluZSBET0NVTUVOVF9SRUxFQVNFX0xPRyhjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0co
Y2hhbm5lbCwgIiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwg
bWFpbj0lZF0gRG9jdW1lbnQ6OiIgZm10LCB0aGlzLCB2YWx1ZU9yRGVmYXVsdChwYWdlSUQoKSku
dG9VSW50NjQoKSwgdmFsdWVPckRlZmF1bHQoZnJhbWVJRCgpKS50b1VJbnQ2NCgpLCB0aGlzID09
ICZ0b3BEb2N1bWVudCgpLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBET0NVTUVOVF9SRUxFQVNF
X0xPR19FUlJPUihjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoY2hhbm5lbCwg
IiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgbWFpbj0lZF0g
RG9jdW1lbnQ6OiIgZm10LCB0aGlzLCB2YWx1ZU9yRGVmYXVsdChwYWdlSUQoKSkudG9VSW50NjQo
KSwgdmFsdWVPckRlZmF1bHQoZnJhbWVJRCgpKS50b1VJbnQ2NCgpLCB0aGlzID09ICZ0b3BEb2N1
bWVudCgpLCAjI19fVkFfQVJHU19fKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAppbmRleCA2YzM4
MWFhNzAxYzk0MDcyNjYxY2UwZTE1MmYyNTkxYjU0NzE0OTkxLi4xMTE3MDRmYTgxMWEwYTU0ZmU2
MmRhNmI0M2IzZTNlN2FlNWMxOWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jh
c2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNl
RGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCkBAIC01NDcsNyArNTQ3LDcgQEAgYm9vbCBCYXNlRGF0
ZUFuZFRpbWVJbnB1dFR5cGU6OnNldHVwRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycyhEYXRlVGlt
ZUNob29zZXJQYXIKICAgICBwYXJhbWV0ZXJzLmlzQW5jaG9yRWxlbWVudFJUTCA9IGNvbXB1dGVk
U3R5bGUtPmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OlJUTDsKICAgICBwYXJhbWV0ZXJz
LnVzZURhcmtBcHBlYXJhbmNlID0gZG9jdW1lbnQudXNlRGFya0FwcGVhcmFuY2UoY29tcHV0ZWRT
dHlsZSk7CiAKLSAgICBhdXRvIGRhdGUgPSBwYXJzZVRvRGF0ZUNvbXBvbmVudHMoZWxlbWVudC52
YWx1ZSgpKS52YWx1ZV9vcihEYXRlQ29tcG9uZW50cygpKTsKKyAgICBhdXRvIGRhdGUgPSB2YWx1
ZU9yRGVmYXVsdChwYXJzZVRvRGF0ZUNvbXBvbmVudHMoZWxlbWVudC52YWx1ZSgpKSk7CiAgICAg
cGFyYW1ldGVycy5oYXNTZWNvbmRGaWVsZCA9IHNob3VsZEhhdmVTZWNvbmRGaWVsZChkYXRlKTsK
ICAgICBwYXJhbWV0ZXJzLmhhc01pbGxpc2Vjb25kRmllbGQgPSBzaG91bGRIYXZlTWlsbGlzZWNv
bmRGaWVsZChkYXRlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5j
aG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNw
cAppbmRleCAwNDNjMTI1Y2E4YThhMTUzY2FhMGExNWU5ZTRkNjU2MWE2NmFiNTUyLi5jZTc4NGYw
ODI5MmUxZjE4ZTFmMmM5ZjMzZmIzMDc0Yzg3MTVlN2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBbmNob3JFbGVtZW50LmNwcApAQCAtNTEzLDcgKzUxMyw3IEBAIHZvaWQgSFRNTEFuY2hv
ckVsZW1lbnQ6OmhhbmRsZUNsaWNrKEV2ZW50JiBldmVudCkKICAgICBpZiAoc3lzdGVtUHJldmll
d0luZm8uaXNQcmV2aWV3KSB7CiAgICAgICAgIHN5c3RlbVByZXZpZXdJbmZvLmVsZW1lbnQuZWxl
bWVudElkZW50aWZpZXIgPSBkb2N1bWVudCgpLmlkZW50aWZpZXJGb3JFbGVtZW50KCp0aGlzKTsK
ICAgICAgICAgc3lzdGVtUHJldmlld0luZm8uZWxlbWVudC5kb2N1bWVudElkZW50aWZpZXIgPSBk
b2N1bWVudCgpLmlkZW50aWZpZXIoKTsKLSAgICAgICAgc3lzdGVtUHJldmlld0luZm8uZWxlbWVu
dC53ZWJQYWdlSWRlbnRpZmllciA9IGRvY3VtZW50KCkuZnJhbWUoKS0+bG9hZGVyKCkucGFnZUlE
KCkudmFsdWVfb3IoUGFnZUlkZW50aWZpZXIgeyB9KTsKKyAgICAgICAgc3lzdGVtUHJldmlld0lu
Zm8uZWxlbWVudC53ZWJQYWdlSWRlbnRpZmllciA9IHZhbHVlT3JEZWZhdWx0KGRvY3VtZW50KCku
ZnJhbWUoKS0+bG9hZGVyKCkucGFnZUlEKCkpOwogICAgICAgICBpZiAoYXV0byogY2hpbGQgPSBm
aXJzdEVsZW1lbnRDaGlsZCgpKQogICAgICAgICAgICAgc3lzdGVtUHJldmlld0luZm8ucHJldmll
d1JlY3QgPSBjaGlsZC0+Ym91bmRzSW5Sb290Vmlld1NwYWNlKCk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcAppbmRleCA2ZGVmZWI4MTJjMzcyMmMzOGVhMmZjOGQwNzkxZmFlMjliMTYwZDZl
Li41NzdkNTVlN2YwNDJhNzg0ODIyMGUzOGFjMzJkMzA2OTgzNmEzODlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcApAQCAtMTE1OCw3ICsxMTU4LDcgQEAgYm9vbCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjppc1BvaW50SW5QYXRoSW50ZXJuYWwoY29uc3QgUGF0aCYgcGF0aCwgZG91YmwK
ICAgICBpZiAoIXN0YXRlLmhhc0ludmVydGlibGVUcmFuc2Zvcm0pCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGF1dG8gdHJhbnNmb3JtZWRQb2ludCA9IHN0YXRlLnRyYW5zZm9ybS5pbnZl
cnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KEZsb2F0UG9pbnQoeCwg
eSkpOworICAgIGF1dG8gdHJhbnNmb3JtZWRQb2ludCA9IHZhbHVlT3JEZWZhdWx0KHN0YXRlLnRy
YW5zZm9ybS5pbnZlcnNlKCkpLm1hcFBvaW50KEZsb2F0UG9pbnQoeCwgeSkpOwogICAgIGlmICgh
c3RkOjppc2Zpbml0ZSh0cmFuc2Zvcm1lZFBvaW50LngoKSkgfHwgIXN0ZDo6aXNmaW5pdGUodHJh
bnNmb3JtZWRQb2ludC55KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTExNzMsNyAr
MTE3Myw3IEBAIGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6aXNQb2ludEluU3Ry
b2tlSW50ZXJuYWwoY29uc3QgUGF0aCYgcGF0aCwgZG91CiAgICAgaWYgKCFzdGF0ZS5oYXNJbnZl
cnRpYmxlVHJhbnNmb3JtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHRyYW5z
Zm9ybWVkUG9pbnQgPSBzdGF0ZS50cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRy
YW5zZm9ybSgpKS5tYXBQb2ludChGbG9hdFBvaW50KHgsIHkpKTsKKyAgICBhdXRvIHRyYW5zZm9y
bWVkUG9pbnQgPSB2YWx1ZU9yRGVmYXVsdChzdGF0ZS50cmFuc2Zvcm0uaW52ZXJzZSgpKS5tYXBQ
b2ludChGbG9hdFBvaW50KHgsIHkpKTsKICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodHJhbnNmb3Jt
ZWRQb2ludC54KCkpIHx8ICFzdGQ6OmlzZmluaXRlKHRyYW5zZm9ybWVkUG9pbnQueSgpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94
QnVpbGRlci5jcHAKaW5kZXggMjlmYTY0YWRiN2FkNzgyZDQ4OGU4MGJmYWE3ZjVjNjhjMmZmNDg4
OC4uMWM4OGYxMDEzOWI5NWE4ZTY0NTdiZGQ4NGIwNTFlMzYyZTg1ZDhhZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZUJveEJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBA
IExpbmVCb3hCdWlsZGVyOjpMaW5lQm94QnVpbGRlcihjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dCYgaW5saW5lRm9ybWF0dGluZ0NvCiBMaW5lQm94QnVpbGRlcjo6TGluZUJveEFuZEhlaWdo
dCBMaW5lQm94QnVpbGRlcjo6YnVpbGQoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50JiBs
aW5lQ29udGVudCwgc2l6ZV90IGxpbmVJbmRleCkKIHsKICAgICBhdXRvJiByb290U3R5bGUgPSBs
aW5lSW5kZXggPyByb290Qm94KCkuZmlyc3RMaW5lU3R5bGUoKSA6IHJvb3RCb3goKS5zdHlsZSgp
OwotICAgIGF1dG8gcm9vdElubGluZUJveEFsaWdubWVudE9mZnNldCA9IExheW91dDo6aG9yaXpv
bnRhbEFsaWdubWVudE9mZnNldChyb290U3R5bGUudGV4dEFsaWduKCksIGxpbmVDb250ZW50LCBy
b290U3R5bGUuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKS52YWx1ZV9vcihJbmxpbmVMYXlvdXRV
bml0IHsgfSk7CisgICAgYXV0byByb290SW5saW5lQm94QWxpZ25tZW50T2Zmc2V0ID0gdmFsdWVP
ckRlZmF1bHQoTGF5b3V0Ojpob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0KHJvb3RTdHlsZS50ZXh0
QWxpZ24oKSwgbGluZUNvbnRlbnQsIHJvb3RTdHlsZS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkp
KTsKICAgICAvLyBGSVhNRTogVGhlIG92ZXJmbG93aW5nIGhhbmdpbmcgY29udGVudCBzaG91bGQg
YmUgcGFydCBvZiB0aGUgaW5rIG92ZXJmbG93LiAgCiAgICAgYXV0byBsaW5lQm94ID0gTGluZUJv
eCB7IHJvb3RCb3goKSwgcm9vdElubGluZUJveEFsaWdubWVudE9mZnNldCwgbGluZUNvbnRlbnQu
Y29udGVudExvZ2ljYWxXaWR0aCAtIGxpbmVDb250ZW50LmhhbmdpbmdDb250ZW50V2lkdGgsIGxp
bmVJbmRleCwgbGluZUNvbnRlbnQubm9uU3Bhbm5pbmdJbmxpbmVMZXZlbEJveENvdW50IH07CiAg
ICAgYXV0byBsaW5lQm94TG9naWNhbEhlaWdodCA9IGNvbnN0cnVjdEFuZEFsaWduSW5saW5lTGV2
ZWxCb3hlcyhsaW5lQm94LCBsaW5lQ29udGVudCwgbGluZUluZGV4KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVC
b3hWZXJ0aWNhbEFsaWduZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5jcHAKaW5kZXggZGVm
MGE1ODdkZmNmNjAyNWVkOGE2MmMyOWU0Nzk5NzFmNjE0NGEwNy4uNmM4NTRlZDM0NmIzMjE3ZDc0
MjU1NDU5N2EyNGQzYjJkNzY0ZGFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBJbmxp
bmVMYXlvdXRVbml0IExpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmNvbXB1dGVMaW5lQm94TG9naWNh
bEhlaWdodChMaW5lQm94JiBsaQogICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRleHRCb3R0
b206IHsKICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0ZXh0LWJvdHRvbSBhbGlnbnMgd2l0aCB0
aGUgaW5saW5lIGJveCdzIGZvbnQgbWV0cmljcyBib3R0b20gKGRlc2NlbnQpIGFuZCBub3QgdGhl
IGxheW91dCBib3VuZHMgYm90dG9tLgogICAgICAgICAgICAgYXV0byBwYXJlbnRJbmxpbmVCb3hM
YXlvdXRCb3VuZHMgPSBwYXJlbnRJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCk7Ci0gICAgICAgICAg
ICBhdXRvIHBhcmVudElubGluZUJveExvZ2ljYWxCb3R0b20gPSBwYXJlbnRJbmxpbmVCb3hMYXlv
dXRCb3VuZHMuaGVpZ2h0KCkgLSBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3VuZHMuZGVzY2VudCAr
IHBhcmVudElubGluZUJveC5kZXNjZW50KCkudmFsdWVfb3IoSW5saW5lTGF5b3V0VW5pdCgpKTsK
KyAgICAgICAgICAgIGF1dG8gcGFyZW50SW5saW5lQm94TG9naWNhbEJvdHRvbSA9IHBhcmVudElu
bGluZUJveExheW91dEJvdW5kcy5oZWlnaHQoKSAtIHBhcmVudElubGluZUJveExheW91dEJvdW5k
cy5kZXNjZW50ICsgdmFsdWVPckRlZmF1bHQocGFyZW50SW5saW5lQm94LmRlc2NlbnQoKSk7CiAg
ICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94TG9naWNhbEJvdHRvbSAtIGlu
bGluZUxldmVsQm94LmxheW91dEJvdW5kcygpLmhlaWdodCgpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KQEAgLTIwOCw3ICsyMDgsNyBAQCBJbmxpbmVMYXlvdXRVbml0IExpbmVCb3hW
ZXJ0aWNhbEFsaWduZXI6OmNvbXB1dGVMaW5lQm94TG9naWNhbEhlaWdodChMaW5lQm94JiBsaQog
ICAgIC8vIFRoZSBsaW5lIGJveCBoZWlnaHQgY29tcHV0YXRpb24gaXMgYXMgZm9sbG93czoKICAg
ICAvLyAxLiBTdHJldGNoIHRoZSBsaW5lIGJveCB3aXRoIHRoZSBub24tbGluZS1ib3ggcmVsYXRp
dmUgYWxpZ25lZCBpbmxpbmUgYm94IGFic29sdXRlIHRvcCBhbmQgYm90dG9tIHZhbHVlcy4KICAg
ICAvLyAyLiBDaGVjayBpZiB0aGUgbGluZSBib3ggcmVsYXRpdmUgYWxpZ25lZCBpbmxpbmUgYm94
ZXMgKHRvcCwgYm90dG9tIGV0YykgaGF2ZSBlbm91Z2ggcm9vbSBhbmQgc3RyZXRjaCB0aGUgbGlu
ZSBib3ggZnVydGhlciBpZiBuZWVkZWQuCi0gICAgYXV0byBsaW5lQm94TG9naWNhbEhlaWdodCA9
IG1heGltdW1Mb2dpY2FsQm90dG9tLnZhbHVlX29yKElubGluZUxheW91dFVuaXQoKSkgLSBtaW5p
bXVtTG9naWNhbFRvcC52YWx1ZV9vcihJbmxpbmVMYXlvdXRVbml0KCkpOworICAgIGF1dG8gbGlu
ZUJveExvZ2ljYWxIZWlnaHQgPSB2YWx1ZU9yRGVmYXVsdChtYXhpbXVtTG9naWNhbEJvdHRvbSkg
LSB2YWx1ZU9yRGVmYXVsdChtaW5pbXVtTG9naWNhbFRvcCk7CiAgICAgZm9yIChhdXRvKiBsaW5l
Qm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveCA6IGxpbmVCb3hSZWxhdGl2ZUlubGluZUxldmVsQm94
ZXMpIHsKICAgICAgICAgaWYgKCFmb3JtYXR0aW5nR2VvbWV0cnkuaW5saW5lTGV2ZWxCb3hBZmZl
Y3RzTGluZUJveCgqbGluZUJveFJlbGF0aXZlSW5saW5lTGV2ZWxCb3gsIGxpbmVCb3gpKQogICAg
ICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdD
b250ZXh0LmNwcAppbmRleCA4MjAyM2U3NTU2YWI2MGU1OGQ0NWY3MjY5ZWM1ZTljM2NmZjYyMjQz
Li40YjczNWQwZWI1YWIyNWQwOTEzMDYwNjNlMDgyOThlZDRmNTY4MWE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0
dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTEyMyw4ICsxMjMsOCBA
QCB2b2lkIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OnNldFVzZWRHZW9tZXRyeUZvckNlbGxzKExh
eW91dFVuaXQgYXZhaWxhYmxlSG9yaXpvbgogCiAgICAgICAgICAgICAvLyBGSVhNRTogRmluZCBv
dXQgaWYgaXQgaXMgb2sgdG8gdXNlIHRoZSByZWd1bGFyIHBhZGRpbmcgaGVyZSB0byBhbGlnbiB0
aGUgY29udGVudCBib3ggaW5zaWRlIGEgdGFsbCBjZWxsIG9yIHdlIG5lZWQgdG8KICAgICAgICAg
ICAgIC8vIHVzZSBzb21lIGtpbmQgb2YgaW50cmluc2ljIHBhZGRpbmcgc2ltaWxhciB0byBSZW5k
ZXJUYWJsZUNlbGwuCi0gICAgICAgICAgICBhdXRvIHBhZGRpbmdUb3AgPSBjZWxsQm94R2VvbWV0
cnkucGFkZGluZ0JlZm9yZSgpLnZhbHVlX29yKExheW91dFVuaXQgeyB9KTsKLSAgICAgICAgICAg
IGF1dG8gcGFkZGluZ0JvdHRvbSA9IGNlbGxCb3hHZW9tZXRyeS5wYWRkaW5nQWZ0ZXIoKS52YWx1
ZV9vcihMYXlvdXRVbml0IHsgfSk7CisgICAgICAgICAgICBhdXRvIHBhZGRpbmdUb3AgPSB2YWx1
ZU9yRGVmYXVsdChjZWxsQm94R2VvbWV0cnkucGFkZGluZ0JlZm9yZSgpKTsKKyAgICAgICAgICAg
IGF1dG8gcGFkZGluZ0JvdHRvbSA9IHZhbHVlT3JEZWZhdWx0KGNlbGxCb3hHZW9tZXRyeS5wYWRk
aW5nQWZ0ZXIoKSk7CiAgICAgICAgICAgICBhdXRvIGludHJpbnNpY1BhZGRpbmdUb3AgPSBMYXlv
dXRVbml0IHsgfTsKICAgICAgICAgICAgIGF1dG8gaW50cmluc2ljUGFkZGluZ0JvdHRvbSA9IExh
eW91dFVuaXQgeyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApp
bmRleCA2YmYzYWMyOTdlYzZiMjYzYTA3ODY0MGJjZjNhZDU3NzlkYjBmZWRiLi5hMGQ2OGE3NzQ1
ZmQxNTJhYzgxNTVkZTBhZTgxZjMwYThlMTMyZWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAKQEAgLTEyOCw4ICsxMjgsOCBAQAogI2luY2x1ZGUgIk5ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5oIgogI2VuZGlmCiAKLSNkZWZpbmUgUEFHRV9JRCAoKG1fZnJhbWUgPyBt
X2ZyYW1lLT5wYWdlSUQoKS52YWx1ZV9vcihQYWdlSWRlbnRpZmllcigpKSA6IFBhZ2VJZGVudGlm
aWVyKCkpLnRvVUludDY0KCkpCi0jZGVmaW5lIEZSQU1FX0lEICgobV9mcmFtZSA/IG1fZnJhbWUt
PmZyYW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIoKSkgOiBGcmFtZUlkZW50aWZpZXIo
KSkudG9VSW50NjQoKSkKKyNkZWZpbmUgUEFHRV9JRCAoKG1fZnJhbWUgPyB2YWx1ZU9yRGVmYXVs
dChtX2ZyYW1lLT5wYWdlSUQoKSkgOiBQYWdlSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQorI2Rl
ZmluZSBGUkFNRV9JRCAoKG1fZnJhbWUgPyB2YWx1ZU9yRGVmYXVsdChtX2ZyYW1lLT5mcmFtZUlE
KCkpIDogRnJhbWVJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCiAjZGVmaW5lIElTX01BSU5fRlJB
TUUgKG1fZnJhbWUgPyBtX2ZyYW1lLT5pc01haW5GcmFtZSgpIDogZmFsc2UpCiAjZGVmaW5lIERP
Q1VNRU5UTE9BREVSX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhOZXR3b3JrLCAi
JXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBE
b2N1bWVudExvYWRlcjo6IiBmbXQsIHRoaXMsIFBBR0VfSUQsIEZSQU1FX0lELCBJU19NQUlOX0ZS
QU1FLCAjI19fVkFfQVJHU19fKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApp
bmRleCBmZGM5N2RjNDYyYzg3NTI2YWExODhmNzk2OGQ2MGEwYzgzZDY4MGQ5Li45NGFhZGYwZjZk
ZDA0ZDQyZGEzYjhlMTg2ZDMyZDdjMTRmNzNlMTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKQEAgLTE1Myw4ICsxNTMsOCBAQAogI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNh
dGlvbkNoZWNrcy5oIgogI2VuZGlmCiAKLSNkZWZpbmUgUEFHRV9JRCAoKHBhZ2VJRCgpLnZhbHVl
X29yKFBhZ2VJZGVudGlmaWVyKCkpKS50b1VJbnQ2NCgpKQotI2RlZmluZSBGUkFNRV9JRCAoKGZy
YW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIoKSkpLnRvVUludDY0KCkpCisjZGVmaW5l
IFBBR0VfSUQgKHZhbHVlT3JEZWZhdWx0KHBhZ2VJRCgpKS50b1VJbnQ2NCgpKQorI2RlZmluZSBG
UkFNRV9JRCAodmFsdWVPckRlZmF1bHQoZnJhbWVJRCgpKS50b1VJbnQ2NCgpKQogI2RlZmluZSBG
UkFNRUxPQURFUl9SRUxFQVNFX0xPRyhjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0coY2hh
bm5lbCwgIiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgbWFp
bj0lZF0gRnJhbWVMb2FkZXI6OiIgZm10LCB0aGlzLCBQQUdFX0lELCBGUkFNRV9JRCwgbV9mcmFt
ZS5pc01haW5GcmFtZSgpLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBGUkFNRUxPQURFUl9SRUxF
QVNFX0xPR19FUlJPUihjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoY2hhbm5l
bCwgIiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgbWFpbj0l
ZF0gRnJhbWVMb2FkZXI6OiIgZm10LCB0aGlzLCBQQUdFX0lELCBGUkFNRV9JRCwgbV9mcmFtZS5p
c01haW5GcmFtZSgpLCAjI19fVkFfQVJHU19fKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5
Q2hlY2tlci5jcHAKaW5kZXggZDA4MDU3OTVhZjIxZDM5ZmM2ODU4ZDRhYzAxNjg3NDVmMDExZmVj
NC4uYzNmYmI1Njk5OTlhMDY2NzE4OGVhYmUxYTQ2MGU2ZjA3NjY4NGYwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcApAQCAtNTQsOCArNTQsOCBAQAogI2luY2x1ZGUg
IlF1aWNrTG9vay5oIgogI2VuZGlmCiAKLSNkZWZpbmUgUEFHRV9JRCAobV9mcmFtZS5sb2FkZXIo
KS5wYWdlSUQoKS52YWx1ZV9vcihQYWdlSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQotI2RlZmlu
ZSBGUkFNRV9JRCAobV9mcmFtZS5sb2FkZXIoKS5mcmFtZUlEKCkudmFsdWVfb3IoRnJhbWVJZGVu
dGlmaWVyKCkpLnRvVUludDY0KCkpCisjZGVmaW5lIFBBR0VfSUQgKHZhbHVlT3JEZWZhdWx0KG1f
ZnJhbWUubG9hZGVyKCkucGFnZUlEKCkpLnRvVUludDY0KCkpCisjZGVmaW5lIEZSQU1FX0lEICh2
YWx1ZU9yRGVmYXVsdChtX2ZyYW1lLmxvYWRlcigpLmZyYW1lSUQoKSkudG9VSW50NjQoKSkKICNk
ZWZpbmUgUE9MSUNZQ0hFQ0tFUl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgUkVMRUFTRV9MT0coTG9h
ZGluZywgIiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIl0gUG9s
aWN5Q2hlY2tlcjo6IiBmbXQsIHRoaXMsIFBBR0VfSUQsIEZSQU1FX0lELCAjI19fVkFfQVJHU19f
KQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmNwcAppbmRleCA2ZGViYjI1ODhhM2U4MmIyMWM2MWQ3ZThmMzZlNGY0YmJiYTI1ZTYwLi5k
ZDI2YjNlMzNlODdjZDcyNjk3YzkwNTExNmZiNDg2YWMzNDI1ZTY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTY0LDggKzY0LDggQEAKICNlbmRpZgogCiAj
dW5kZWYgUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0cKLSNkZWZpbmUgUEFHRV9JRCAoKGZyYW1l
KCkgPyBmcmFtZSgpLT5wYWdlSUQoKS52YWx1ZV9vcihQYWdlSWRlbnRpZmllcigpKSA6IFBhZ2VJ
ZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCi0jZGVmaW5lIEZSQU1FX0lEICgoZnJhbWUoKSA/IGZy
YW1lKCktPmZyYW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIoKSkgOiBGcmFtZUlkZW50
aWZpZXIoKSkudG9VSW50NjQoKSkKKyNkZWZpbmUgUEFHRV9JRCAoKGZyYW1lKCkgPyB2YWx1ZU9y
RGVmYXVsdChmcmFtZSgpLT5wYWdlSUQoKSkgOiBQYWdlSWRlbnRpZmllcigpKS50b1VJbnQ2NCgp
KQorI2RlZmluZSBGUkFNRV9JRCAoKGZyYW1lKCkgPyB2YWx1ZU9yRGVmYXVsdChmcmFtZSgpLT5m
cmFtZUlEKCkpIDogRnJhbWVJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCiAjZGVmaW5lIFJFU09V
UkNFTE9BREVSX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAg
LSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUxvYWRlcj0l
cCwgcmVzb3VyY2VJRD0lIiBQUkl1NjQgIl0gUmVzb3VyY2VMb2FkZXI6OiIgZm10LCB0aGlzLCBQ
QUdFX0lELCBGUkFNRV9JRCwgZnJhbWVMb2FkZXIoKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCks
ICMjX19WQV9BUkdTX18pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDM3ZDBiYjgyMWFiZDg2YTliNTYwNmUx
MjdlZmM5NDEyYTUxYmIxYTkuLmM0YjA1MDQ2Y2EzYzVhZmZmZDI1YzI4Y2M0YWNhYzE1OWYyMzEy
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAt
NjksOCArNjksOCBAQAogCiAjdW5kZWYgU1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0cKICN1
bmRlZiBTVUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPR19FUlJPUgotI2RlZmluZSBQQUdFX0lE
ICgoZnJhbWUoKSA/IGZyYW1lKCktPnBhZ2VJRCgpLnZhbHVlX29yKFBhZ2VJZGVudGlmaWVyKCkp
IDogUGFnZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKLSNkZWZpbmUgRlJBTUVfSUQgKChmcmFt
ZSgpID8gZnJhbWUoKS0+ZnJhbWVJRCgpLnZhbHVlX29yKEZyYW1lSWRlbnRpZmllcigpKSA6IEZy
YW1lSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQorI2RlZmluZSBQQUdFX0lEICgoZnJhbWUoKSA/
IHZhbHVlT3JEZWZhdWx0KGZyYW1lKCktPnBhZ2VJRCgpKSA6IFBhZ2VJZGVudGlmaWVyKCkpLnRv
VUludDY0KCkpCisjZGVmaW5lIEZSQU1FX0lEICgoZnJhbWUoKSA/IHZhbHVlT3JEZWZhdWx0KGZy
YW1lKCktPmZyYW1lSUQoKSkgOiBGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKICNpZiBS
RUxFQVNFX0xPR19ESVNBQkxFRAogI2RlZmluZSBTVUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xP
RyhmbXQsIC4uLikgVU5VU0VEX1ZBUklBQkxFKHRoaXMpCiAjZGVmaW5lIFNVQlJFU09VUkNFTE9B
REVSX1JFTEVBU0VfTE9HX0VSUk9SKGZtdCwgLi4uKSBVTlVTRURfVkFSSUFCTEUodGhpcykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDlk
ZTBhMDRjZDVlYzVmM2ZhZDJmYjE2ZDdiMzIyYzg1OGEzOGE2YjIuLmE2OWMyMmM2ZmYyOWE4MWI5
ODBhNDUwMTc2ZWVjY2MyYWRhM2IwNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtNjQsOCArNjQsOCBAQAogI2VuZGlmCiAKICN1bmRl
ZiBDQUNIRURSRVNPVVJDRV9SRUxFQVNFX0xPRwotI2RlZmluZSBQQUdFX0lEKGZyYW1lKSAoZnJh
bWUucGFnZUlEKCkudmFsdWVfb3IoUGFnZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKLSNkZWZp
bmUgRlJBTUVfSUQoZnJhbWUpIChmcmFtZS5mcmFtZUlEKCkudmFsdWVfb3IoRnJhbWVJZGVudGlm
aWVyKCkpLnRvVUludDY0KCkpCisjZGVmaW5lIFBBR0VfSUQoZnJhbWUpICh2YWx1ZU9yRGVmYXVs
dChmcmFtZS5wYWdlSUQoKSkudG9VSW50NjQoKSkKKyNkZWZpbmUgRlJBTUVfSUQoZnJhbWUpICh2
YWx1ZU9yRGVmYXVsdChmcmFtZS5mcmFtZUlEKCkpLnRvVUludDY0KCkpCiAjZGVmaW5lIENBQ0hF
RFJFU09VUkNFX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAg
LSBDYWNoZWRSZXNvdXJjZTo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCiAjZGVmaW5lIENB
Q0hFRFJFU09VUkNFX1JFTEVBU0VfTE9HX1dJVEhfRlJBTUUoZm10LCBmcmFtZSwgLi4uKSBSRUxF
QVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBS
SXU2NCAiXSBDYWNoZWRSZXNvdXJjZTo6IiBmbXQsIHRoaXMsIFBBR0VfSUQoZnJhbWUpLCBGUkFN
RV9JRChmcmFtZSksICMjX19WQV9BUkdTX18pCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDg0YzAxNGJkNjQzMGEx
ODJjY2ZkN2Y0MmM4NWZhMzhiYjdjNDBhZjQuLmJlNTRlODBhZDhjMDg1MTliN2Y3ZmE5NzNlNWY4
N2I1MGU5MzBlNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtOTYsOCArOTYsOCBAQAogI2VuZGlmCiAKICN1bmRl
ZiBDQUNIRURSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRwotI2RlZmluZSBQQUdFX0lEKGZyYW1l
KSAoZnJhbWUucGFnZUlEKCkudmFsdWVfb3IoUGFnZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkK
LSNkZWZpbmUgRlJBTUVfSUQoZnJhbWUpIChmcmFtZS5mcmFtZUlEKCkudmFsdWVfb3IoRnJhbWVJ
ZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCisjZGVmaW5lIFBBR0VfSUQoZnJhbWUpICh2YWx1ZU9y
RGVmYXVsdChmcmFtZS5wYWdlSUQoKSkudG9VSW50NjQoKSkKKyNkZWZpbmUgRlJBTUVfSUQoZnJh
bWUpICh2YWx1ZU9yRGVmYXVsdChmcmFtZS5mcmFtZUlEKCkpLnRvVUludDY0KCkpCiAjZGVmaW5l
IENBQ0hFRFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhO
ZXR3b3JrLCAiJXAgLSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6IiBmbXQsIHRoaXMsICMjX19WQV9B
UkdTX18pCiAjZGVmaW5lIENBQ0hFRFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HX1dJVEhfRlJB
TUUoZm10LCBmcmFtZSwgLi4uKSBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBbcGFnZUlEPSUi
IFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiXSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6IiBm
bXQsIHRoaXMsIFBBR0VfSUQoZnJhbWUpLCBGUkFNRV9JRChmcmFtZSksICMjX19WQV9BUkdTX18p
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCA4ZTRlMTAwYTQ2ZTM5ODVh
YzNhY2UwMTQzMjhlZThhOGIwYTliMTUyLi5mMWRiNTIwODQ2NTQ1NjE2NWVmN2RmNmEzYzNiYzg1
ZDkzOWE2YTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC05NDcsNyAr
OTQ3LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZVNlbGVjdGlvbkZvck1vdXNlRHJhZygp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVl
c3Q6OlR5cGU+IGhpdFR5cGUgeyAgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OlJlYWRPbmx5LCBIaXRU
ZXN0UmVxdWVzdDo6VHlwZTo6QWN0aXZlLCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6TW92ZSwgSGl0
VGVzdFJlcXVlc3Q6OlR5cGU6OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCB9OwotICAg
IEhpdFRlc3RSZXN1bHQgcmVzdWx0KHZpZXctPndpbmRvd1RvQ29udGVudHMobV9sYXN0S25vd25N
b3VzZVBvc2l0aW9uLnZhbHVlX29yKEludFBvaW50KCkpKSk7CisgICAgSGl0VGVzdFJlc3VsdCBy
ZXN1bHQodmlldy0+d2luZG93VG9Db250ZW50cyh2YWx1ZU9yRGVmYXVsdChtX2xhc3RLbm93bk1v
dXNlUG9zaXRpb24pKSk7CiAgICAgZG9jdW1lbnQtPmhpdFRlc3QoaGl0VHlwZSwgcmVzdWx0KTsK
ICAgICB1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURyYWcocmVzdWx0KTsKIH0KQEAgLTEzMDcsNyAr
MTMwNyw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpsb2dpY2FsU2Nyb2xsUmVjdXJzaXZlbHkoU2Ny
b2xsTG9naWNhbERpcmVjdGlvbiBkaXJlY3Rpb24sIFNjCiAKIEludFBvaW50IEV2ZW50SGFuZGxl
cjo6bGFzdEtub3duTW91c2VQb3NpdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbGFzdEtu
b3duTW91c2VQb3NpdGlvbi52YWx1ZV9vcihJbnRQb2ludCgpKTsKKyAgICByZXR1cm4gdmFsdWVP
ckRlZmF1bHQobV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uKTsKIH0KIAogUmVmUHRyPEZyYW1lPiBF
dmVudEhhbmRsZXI6OnN1YmZyYW1lRm9ySGl0VGVzdFJlc3VsdChjb25zdCBNb3VzZUV2ZW50V2l0
aEhpdFRlc3RSZXN1bHRzJiBoaXRUZXN0UmVzdWx0KQpAQCAtMTk2MCw3ICsxOTYwLDcgQEAgYm9v
bCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTW92ZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYgcGxhdGZvcm1Nb3VzZUUKICNlbmRpZgogCiAgICAgaWYgKG1fc3ZnUGFuKSB7Ci0gICAg
ICAgIGRvd25jYXN0PFNWR0RvY3VtZW50PigqbV9mcmFtZS5kb2N1bWVudCgpKS51cGRhdGVQYW4o
bV9mcmFtZS52aWV3KCktPndpbmRvd1RvQ29udGVudHMobV9sYXN0S25vd25Nb3VzZVBvc2l0aW9u
LnZhbHVlX29yKEludFBvaW50KCkpKSk7CisgICAgICAgIGRvd25jYXN0PFNWR0RvY3VtZW50Pigq
bV9mcmFtZS5kb2N1bWVudCgpKS51cGRhdGVQYW4obV9mcmFtZS52aWV3KCktPndpbmRvd1RvQ29u
dGVudHModmFsdWVPckRlZmF1bHQobV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uKSkpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTIxMjYsNyArMjEyNiw3IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
IHBsYXRmb3JtTW91CiAKICAgICBpZiAobV9zdmdQYW4pIHsKICAgICAgICAgbV9zdmdQYW4gPSBm
YWxzZTsKLSAgICAgICAgZG93bmNhc3Q8U1ZHRG9jdW1lbnQ+KCptX2ZyYW1lLmRvY3VtZW50KCkp
LnVwZGF0ZVBhbihtX2ZyYW1lLnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhtX2xhc3RLbm93bk1v
dXNlUG9zaXRpb24udmFsdWVfb3IoSW50UG9pbnQoKSkpKTsKKyAgICAgICAgZG93bmNhc3Q8U1ZH
RG9jdW1lbnQ+KCptX2ZyYW1lLmRvY3VtZW50KCkpLnVwZGF0ZVBhbihtX2ZyYW1lLnZpZXcoKS0+
d2luZG93VG9Db250ZW50cyh2YWx1ZU9yRGVmYXVsdChtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24p
KSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjg2NCw3ICsyODY0LDcgQEAg
dm9pZCBFdmVudEhhbmRsZXI6OnByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmLCBjb24KICAgICAKIEludFBvaW50IEV2ZW50SGFuZGxlcjo6dGFy
Z2V0UG9zaXRpb25JbldpbmRvd0ZvclNlbGVjdGlvbkF1dG9zY3JvbGwoKSBjb25zdAogewotICAg
IHJldHVybiBtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24udmFsdWVfb3IoSW50UG9pbnQoKSk7Cisg
ICAgcmV0dXJuIHZhbHVlT3JEZWZhdWx0KG1fbGFzdEtub3duTW91c2VQb3NpdGlvbik7CiB9CiAg
ICAgCiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0zMzkxLDcgKzMzOTEsNyBA
QCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRTb29uSW5RdWFk
KGNvbnN0IEZsb2F0UXVhZCYgcXVhZCkKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmICghcXVhZC5jb250YWluc1BvaW50KHZpZXctPndpbmRvd1RvQ29udGVudHMobV9s
YXN0S25vd25Nb3VzZVBvc2l0aW9uLnZhbHVlX29yKEludFBvaW50KCkpKSkpCisgICAgaWYgKCFx
dWFkLmNvbnRhaW5zUG9pbnQodmlldy0+d2luZG93VG9Db250ZW50cyh2YWx1ZU9yRGVmYXVsdCht
X2xhc3RLbm93bk1vdXNlUG9zaXRpb24pKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGRpc3Bh
dGNoRmFrZU1vdXNlTW92ZUV2ZW50U29vbigpOwpAQCAtMzQyMCw3ICszNDIwLDcgQEAgdm9pZCBF
dmVudEhhbmRsZXI6OmZha2VNb3VzZU1vdmVFdmVudFRpbWVyRmlyZWQoKQogICAgIGJvb2wgYWx0
S2V5OwogICAgIGJvb2wgbWV0YUtleTsKICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmdldEN1
cnJlbnRNb2RpZmllclN0YXRlKHNoaWZ0S2V5LCBjdHJsS2V5LCBhbHRLZXksIG1ldGFLZXkpOwot
ICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VNb3ZlRXZlbnQobV9sYXN0S25vd25Nb3Vz
ZVBvc2l0aW9uLnZhbHVlX29yKEludFBvaW50KCkpLCBtX2xhc3RLbm93bk1vdXNlR2xvYmFsUG9z
aXRpb24sIE5vQnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBzaGlmdEtleSwg
Y3RybEtleSwgYWx0S2V5LCBtZXRhS2V5LCBXYWxsVGltZTo6bm93KCksIDAsIE5vVGFwKTsKKyAg
ICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlTW92ZUV2ZW50KHZhbHVlT3JEZWZhdWx0KG1f
bGFzdEtub3duTW91c2VQb3NpdGlvbiksIG1fbGFzdEtub3duTW91c2VHbG9iYWxQb3NpdGlvbiwg
Tm9CdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIHNoaWZ0S2V5LCBjdHJsS2V5
LCBhbHRLZXksIG1ldGFLZXksIFdhbGxUaW1lOjpub3coKSwgMCwgTm9UYXApOwogICAgIG1vdXNl
TW92ZWQoZmFrZU1vdXNlTW92ZUV2ZW50KTsKIH0KICNlbmRpZiAvLyAhRU5BQkxFKElPU19UT1VD
SF9FVkVOVFMpCkBAIC0zNDQ2LDcgKzM0NDYsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6aG92ZXJU
aW1lckZpcmVkKCkKIAogICAgIGlmIChSZWZQdHIgZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50
KCkpIHsKICAgICAgICAgaWYgKFJlZlB0ciB2aWV3ID0gbV9mcmFtZS52aWV3KCkpIHsKLSAgICAg
ICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHZpZXctPndpbmRvd1RvQ29udGVudHMobV9sYXN0
S25vd25Nb3VzZVBvc2l0aW9uLnZhbHVlX29yKEludFBvaW50KCkpKSk7CisgICAgICAgICAgICBI
aXRUZXN0UmVzdWx0IHJlc3VsdCh2aWV3LT53aW5kb3dUb0NvbnRlbnRzKHZhbHVlT3JEZWZhdWx0
KG1fbGFzdEtub3duTW91c2VQb3NpdGlvbikpKTsKICAgICAgICAgICAgIGNvbnN0ZXhwciBPcHRp
b25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6VHlw
ZTo6TW92ZSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRpc2FsbG93VXNlckFnZW50U2hhZG93Q29u
dGVudCB9OwogICAgICAgICAgICAgZG9jdW1lbnQtPmhpdFRlc3QoaGl0VHlwZSwgcmVzdWx0KTsK
ICAgICAgICAgICAgIGRvY3VtZW50LT51cGRhdGVIb3ZlckFjdGl2ZVN0YXRlKGhpdFR5cGUsIHJl
c3VsdC50YXJnZXRFbGVtZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDA2
MzdmMmQ5YTc5YzBmOTQxNzIzZDcxZGNjMTcxMzZmNGI3NWFjODQuLjhkYzc0MGJlMmI0MGUwNjE5
YzNlOWFmZGY1YmQ3YmUyZDEyMDA5NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAg
LTE0MCw4ICsxNDAsOCBAQAogI2luY2x1ZGUgIkxheW91dENvbnRleHQuaCIKICNlbmRpZgogCi0j
ZGVmaW5lIFBBR0VfSUQgZnJhbWUoKS5wYWdlSUQoKS52YWx1ZV9vcihQYWdlSWRlbnRpZmllcigp
KS50b1VJbnQ2NCgpCi0jZGVmaW5lIEZSQU1FX0lEIGZyYW1lKCkuZnJhbWVJRCgpLnZhbHVlX29y
KEZyYW1lSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpCisjZGVmaW5lIFBBR0VfSUQgdmFsdWVPckRl
ZmF1bHQoZnJhbWUoKS5wYWdlSUQoKSkudG9VSW50NjQoKQorI2RlZmluZSBGUkFNRV9JRCB2YWx1
ZU9yRGVmYXVsdChmcmFtZSgpLmZyYW1lSUQoKSkudG9VSW50NjQoKQogI2RlZmluZSBGUkFNRVZJ
RVdfUkVMRUFTRV9MT0coY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HKGNoYW5uZWwsICIl
cCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIG1haW49JWRdIEZy
YW1lVmlldzo6IiBmbXQsIHRoaXMsIFBBR0VfSUQsIEZSQU1FX0lELCBmcmFtZSgpLmlzTWFpbkZy
YW1lKCksICMjX19WQV9BUkdTX18pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE3MTYsNyAr
MTcxNiw3IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRMYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdChz
dGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+IHJlY3QsIFRyCiAgICAgaWYgKG9sZFJlY3QuaGVpZ2h0
KCkgIT0gbGF5b3V0Vmlld3BvcnRSZWN0KCkuaGVpZ2h0KCkpCiAgICAgICAgIGxheW91dFRyaWdn
ZXJpbmcgPSBUcmlnZ2VyTGF5b3V0T3JOb3Q6OlllczsKIAotICAgIExPR19XSVRIX1NUUkVBTShT
Y3JvbGxpbmcsIHN0cmVhbSA8PCAiXG5GcmFtZVZpZXcgIiA8PCB0aGlzIDw8ICIgc2V0TGF5b3V0
Vmlld3BvcnRPdmVycmlkZVJlY3QoKSAtIGNoYW5naW5nIG92ZXJyaWRlIGxheW91dCB2aWV3cG9y
dCBmcm9tICIgPDwgb2xkUmVjdCA8PCAiIHRvICIgPDwgbV9sYXlvdXRWaWV3cG9ydE92ZXJyaWRl
UmVjdC52YWx1ZV9vcihMYXlvdXRSZWN0KCkpIDw8ICIgbGF5b3V0VHJpZ2dlcmluZyAiIDw8IChs
YXlvdXRUcmlnZ2VyaW5nID09IFRyaWdnZXJMYXlvdXRPck5vdDo6WWVzID8gInllcyIgOiAibm8i
KSk7CisgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywgc3RyZWFtIDw8ICJcbkZyYW1lVmll
dyAiIDw8IHRoaXMgPDwgIiBzZXRMYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdCgpIC0gY2hhbmdp
bmcgb3ZlcnJpZGUgbGF5b3V0IHZpZXdwb3J0IGZyb20gIiA8PCBvbGRSZWN0IDw8ICIgdG8gIiA8
PCB2YWx1ZU9yRGVmYXVsdChtX2xheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KSA8PCAiIGxheW91
dFRyaWdnZXJpbmcgIiA8PCAobGF5b3V0VHJpZ2dlcmluZyA9PSBUcmlnZ2VyTGF5b3V0T3JOb3Q6
OlllcyA/ICJ5ZXMiIDogIm5vIikpOwogCiAgICAgaWYgKG9sZFJlY3QgIT0gbGF5b3V0Vmlld3Bv
cnRSZWN0KCkgJiYgbGF5b3V0VHJpZ2dlcmluZyA9PSBUcmlnZ2VyTGF5b3V0T3JOb3Q6OlllcykK
ICAgICAgICAgc2V0Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHNOZWVkTGF5b3V0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAppbmRleCAzZmIyYjY3Y2YyYjU0OWQyNGE4Mzc5ZjgxODQyNjI5Mzk5YjFhZmIx
Li41YWJlYjMxZTUyNWIzNjliNGJjYTRhZjYyNTdlMjZiZGQ1MDVjMDJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKQEAgLTI2NjgsNyArMjY2OCw3IEBAIENvbG9yIFBhZ2U6OnBhZ2VFeHRlbmRlZEJhY2tn
cm91bmRDb2xvcigpIGNvbnN0CiAKIENvbG9yIFBhZ2U6OnNhbXBsZWRQYWdlVG9wQ29sb3IoKSBj
b25zdAogewotICAgIHJldHVybiBtX3NhbXBsZWRQYWdlVG9wQ29sb3IudmFsdWVfb3IoQ29sb3Io
KSk7CisgICAgcmV0dXJuIHZhbHVlT3JEZWZhdWx0KG1fc2FtcGxlZFBhZ2VUb3BDb2xvcik7CiB9
CiAKIHZvaWQgUGFnZTo6c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUoQ29sb3Im
JiB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
bWFjL0V2ZW50SGFuZGxlck1hYy5tbQppbmRleCAxZWNkMGNjNzhlZDU1NTY0ZjAzMmIzMGM5Yzgz
ZWJmNTc0YWRlODAwLi41NjdmMWVlMjIzNzYzNmY5YjMwODBhODkxMjViNDQ3MWUxMjYwZjdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCkBAIC0xMDQ5LDEw
ICsxMDQ5LDEwIEBAIEludFBvaW50IEV2ZW50SGFuZGxlcjo6dGFyZ2V0UG9zaXRpb25JbldpbmRv
d0ZvclNlbGVjdGlvbkF1dG9zY3JvbGwoKSBjb25zdAogewogICAgIFBhZ2UqIHBhZ2UgPSBtX2Zy
YW1lLnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiBtX2xhc3RLbm93bk1v
dXNlUG9zaXRpb24udmFsdWVfb3IoSW50UG9pbnQoKSk7CisgICAgICAgIHJldHVybiB2YWx1ZU9y
RGVmYXVsdChtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24pOwogCiAgICAgYXV0byBmcmFtZSA9IHRv
VXNlclNwYWNlRm9yUHJpbWFyeVNjcmVlbihzY3JlZW5SZWN0Rm9yRGlzcGxheShwYWdlLT5jaHJv
bWUoKS5kaXNwbGF5SUQoKSkpOwotICAgIHJldHVybiBtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24u
dmFsdWVfb3IoSW50UG9pbnQoKSkgKyBhdXRvc2Nyb2xsQWRqdXN0bWVudEZhY3RvckZvclNjcmVl
bkJvdW5kYXJpZXMobV9sYXN0S25vd25Nb3VzZUdsb2JhbFBvc2l0aW9uLCBmcmFtZSk7CisgICAg
cmV0dXJuIHZhbHVlT3JEZWZhdWx0KG1fbGFzdEtub3duTW91c2VQb3NpdGlvbikgKyBhdXRvc2Ny
b2xsQWRqdXN0bWVudEZhY3RvckZvclNjcmVlbkJvdW5kYXJpZXMobV9sYXN0S25vd25Nb3VzZUds
b2JhbFBvc2l0aW9uLCBmcmFtZSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxl
ci5jcHAKaW5kZXggNWU1ZWZlNjAzNTgyNTBmZTI5ZDMwOTBhMDdlNDViZTRmZTJhMmQ1Ni4uYWFj
ZmRjNzg3ZTE4NzhkYjA1ODFlYzVlM2YzOWI3NGY3NTBiZDg0OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUxhdGNo
aW5nQ29udHJvbGxlci5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVM
YXRjaGluZ0NvbnRyb2xsZXI6Om5vZGVEaWRIYW5kbGVFdmVudChTY3JvbGxpbmdOb2RlSUQgc2Ny
b2xsaQogICAgICAgICBpZiAoIXdoZWVsRXZlbnQuaXNHZXN0dXJlQ29udGludWF0aW9uKCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKG1fcHJvY2Vzc2luZ1N0ZXBz
Rm9yQ3VycmVudEdlc3R1cmUudmFsdWVfb3IoT3B0aW9uU2V0PFdoZWVsRXZlbnRQcm9jZXNzaW5n
U3RlcHM+IHsgfSkuY29udGFpbnMoV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVh
ZEZvclNjcm9sbGluZykgJiYgcHJvY2Vzc2luZ1N0ZXBzLmNvbnRhaW5zKFdoZWVsRXZlbnRQcm9j
ZXNzaW5nU3RlcHM6OlNjcm9sbGluZ1RocmVhZCkpCisgICAgICAgIGlmICh2YWx1ZU9yRGVmYXVs
dChtX3Byb2Nlc3NpbmdTdGVwc0ZvckN1cnJlbnRHZXN0dXJlKS5jb250YWlucyhXaGVlbEV2ZW50
UHJvY2Vzc2luZ1N0ZXBzOjpNYWluVGhyZWFkRm9yU2Nyb2xsaW5nKSAmJiBwcm9jZXNzaW5nU3Rl
cHMuY29udGFpbnMoV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6U2Nyb2xsaW5nVGhyZWFkKSkK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKaW5kZXggZjhi
NjEwMmQ2ODNjZDRiNjlhODcwOTBmNTA2ZmNkNjA5ODk4YjZmMS4uYmIxMzhiNTI5N2E1MjFmYmY3
ZDY5M2NkMTE0MTA0NDAwZmNhYmM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKQEAgLTQwNCw3ICs0MDQsNyBAQCBzdGQ6Om9wdGlvbmFs
PFNoYWRvd0JsdXI6OkxheWVySW1hZ2VQcm9wZXJ0aWVzPiBTaGFkb3dCbHVyOjpjYWxjdWxhdGVM
YXllckJvdW5kaQogICAgIGlmIChtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zICYmICF0cmFuc2Zv
cm0uaXNJZGVudGl0eSgpKSB7CiAgICAgICAgIEZsb2F0UXVhZCB0cmFuc2Zvcm1lZFBvbHlnb24g
PSB0cmFuc2Zvcm0ubWFwUXVhZChGbG9hdFF1YWQoc2hhZG93ZWRSZWN0KSk7CiAgICAgICAgIHRy
YW5zZm9ybWVkUG9seWdvbi5tb3ZlKG1fb2Zmc2V0KTsKLSAgICAgICAgbGF5ZXJSZWN0ID0gdHJh
bnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUXVhZCh0cmFu
c2Zvcm1lZFBvbHlnb24pLmJvdW5kaW5nQm94KCk7CisgICAgICAgIGxheWVyUmVjdCA9IHZhbHVl
T3JEZWZhdWx0KHRyYW5zZm9ybS5pbnZlcnNlKCkpLm1hcFF1YWQodHJhbnNmb3JtZWRQb2x5Z29u
KS5ib3VuZGluZ0JveCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGxheWVyUmVjdCA9IHNoYWRv
d2VkUmVjdDsKICAgICAgICAgbGF5ZXJSZWN0Lm1vdmUobV9vZmZzZXQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDLm1tCmluZGV4IDAxNmI0Y2Y5MmRjOGI0MDE3NzMxMmE2MDI4OTUyNDI3NGU5NWI5
MzAuLjE1Y2YzNjU0NDY3OWRjNWIwNGU5ZjI4YjVmZmRiNDU3YWY1MDg1OTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakMubW0KQEAgLTEwMDcsNyArMTAwNyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFw
aGljc0NvCiAgICAgaWYgKCFtX3ZpZGVvVHJhbnNmb3JtKQogICAgICAgICBtX3ZpZGVvVHJhbnNm
b3JtID0gdmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeCgqbV9pbWFnZVBhaW50ZXIubWVkaWFTYW1w
bGUpOwogICAgIEFmZmluZVRyYW5zZm9ybSB2aWRlb1RyYW5zZm9ybSA9ICptX3ZpZGVvVHJhbnNm
b3JtOwotICAgIEZsb2F0UmVjdCB0cmFuc2Zvcm1lZERlc3RSZWN0ID0gdmlkZW9UcmFuc2Zvcm0u
aW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KGRlc3RSZWN0KTsK
KyAgICBGbG9hdFJlY3QgdHJhbnNmb3JtZWREZXN0UmVjdCA9IHZhbHVlT3JEZWZhdWx0KHZpZGVv
VHJhbnNmb3JtLmludmVyc2UoKSkubWFwUmVjdChkZXN0UmVjdCk7CiAgICAgY29udGV4dC5jb25j
YXRDVE0odmlkZW9UcmFuc2Zvcm0pOwogICAgIGNvbnRleHQuZHJhd05hdGl2ZUltYWdlKCppbWFn
ZSwgaW1hZ2VSZWN0LnNpemUoKSwgdHJhbnNmb3JtZWREZXN0UmVjdCwgaW1hZ2VSZWN0KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMubW0KaW5kZXggM2EyODY3YTFhYzI0M2JiOWM5M2M5ZDZiNzBjYTU2YjAyOTQ4ZmM5Yy4uMmE0
YzkxYjUzNjlmZWM1OGQ5YzlkOTRlOWZiNDI0NmQzY2JlZjkzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTEyNjgs
NyArMTI2OCw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OndpbGxTZWVrKCkK
IAogRmxvYXRTaXplIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpuYXR1cmFsU2l6ZSgpCiB7
Ci0gICAgcmV0dXJuIG1fY2FjaGVkU2l6ZS52YWx1ZV9vcihGbG9hdFNpemUoKSk7CisgICAgcmV0
dXJuIHZhbHVlT3JEZWZhdWx0KG1fY2FjaGVkU2l6ZSk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmRpZEJlY29tZVJlYWR5Rm9yTW9yZVNhbXBsZXModWludDY0X3QgdHJh
Y2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9H
cmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IDc3MjdhMjU4ODU4YzQzYjQ4YzRkNzY0YjBiMmYxZWM3
MDMzYjBmYTAuLmZkOWZhZmU4ZjE2OTdlNzlmMWZhOTE0NTZiNGJlYThlYTVkODI1MjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJD
QS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NM
YXllckNBLmNwcApAQCAtMTY2Niw3ICsxNjY2LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnNl
dFZpc2libGVBbmRDb3ZlcmFnZVJlY3RzKGNvbnN0IFZpc2libGVBbmRDb3ZlcmFnZVJlY3RzJgog
ICAgIGlmIChhdXRvIGV4dGVudCA9IGFuaW1hdGlvbkV4dGVudCgpKSB7CiAgICAgICAgIC8vIEFk
anVzdCB0aGUgYW5pbWF0aW9uIGV4dGVudCB0byBtYXRjaCB0aGUgY3VycmVudCBhbmltYXRpb24g
cG9zaXRpb24uCiAgICAgICAgIGF1dG8gYW5pbWF0aW5nVHJhbnNmb3JtV2l0aEFuY2hvclBvaW50
ID0gdHJhbnNmb3JtQnlBcHBseWluZ0FuY2hvclBvaW50KHJlY3RzLmFuaW1hdGluZ1RyYW5zZm9y
bSk7Ci0gICAgICAgIGJvdW5kcyA9IGFuaW1hdGluZ1RyYW5zZm9ybVdpdGhBbmNob3JQb2ludC5p
bnZlcnNlKCkudmFsdWVfb3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkubWFwUmVjdCgqZXh0ZW50
KTsKKyAgICAgICAgYm91bmRzID0gdmFsdWVPckRlZmF1bHQoYW5pbWF0aW5nVHJhbnNmb3JtV2l0
aEFuY2hvclBvaW50LmludmVyc2UoKSkubWFwUmVjdCgqZXh0ZW50KTsKICAgICB9CiAKICAgICAv
LyBGSVhNRTogd2UgbmVlZCB0byB0YWtlIHJlZmxlY3Rpb25zIGludG8gYWNjb3VudCB3aGVuIGRl
dGVybWluaW5nIHdoZXRoZXIgdGhpcyBsYXllciBpbnRlcnNlY3RzIHRoZSBjb3ZlcmFnZSByZWN0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2Zvcm1TdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcAppbmRleCA0YjQzZDc2Njk3MzNiNjE1NGNmNTRm
NGQ1ZWQ4Y2ZjMTA4NzFlOTQwLi4wYmQzMmYyMjU2YzgzNDI5NTEyNmQ2YjY2ODQ1ZWY4MTc5MGFh
ZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1RyYW5zZm9ybVN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcApAQCAtMTY5LDcgKzE2OSw3IEBAIEZs
b2F0UG9pbnQgVHJhbnNmb3JtU3RhdGU6Om1hcHBlZFBvaW50KGJvb2wqIHdhc0NsYW1wZWQpIGNv
bnN0CiAgICAgaWYgKG1fZGlyZWN0aW9uID09IEFwcGx5VHJhbnNmb3JtRGlyZWN0aW9uKQogICAg
ICAgICByZXR1cm4gbV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+bWFwUG9pbnQocG9pbnQpOwogCi0g
ICAgcmV0dXJuIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0tPmludmVyc2UoKS52YWx1ZV9vcihUcmFu
c2Zvcm1hdGlvbk1hdHJpeCgpKS5wcm9qZWN0UG9pbnQocG9pbnQsIHdhc0NsYW1wZWQpOworICAg
IHJldHVybiB2YWx1ZU9yRGVmYXVsdChtX2FjY3VtdWxhdGVkVHJhbnNmb3JtLT5pbnZlcnNlKCkp
LnByb2plY3RQb2ludChwb2ludCwgd2FzQ2xhbXBlZCk7CiB9CiAKIEZsb2F0UXVhZCBUcmFuc2Zv
cm1TdGF0ZTo6bWFwcGVkUXVhZChib29sKiB3YXNDbGFtcGVkKSBjb25zdApAQCAtMjE5LDcgKzIx
OSw3IEBAIHZvaWQgVHJhbnNmb3JtU3RhdGU6Om1hcFF1YWQoRmxvYXRRdWFkJiBxdWFkLCBUcmFu
c2Zvcm1EaXJlY3Rpb24gZGlyZWN0aW9uLCBib29sCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBxdWFkID0gbV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+aW52ZXJzZSgpLnZhbHVlX29yKFRy
YW5zZm9ybWF0aW9uTWF0cml4KCkpLnByb2plY3RRdWFkKHF1YWQsIHdhc0NsYW1wZWQpOworICAg
IHF1YWQgPSB2YWx1ZU9yRGVmYXVsdChtX2FjY3VtdWxhdGVkVHJhbnNmb3JtLT5pbnZlcnNlKCkp
LnByb2plY3RRdWFkKHF1YWQsIHdhc0NsYW1wZWQpOwogfQogCiB2b2lkIFRyYW5zZm9ybVN0YXRl
OjpmbGF0dGVuV2l0aFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdCwgYm9v
bCogd2FzQ2xhbXBlZCkKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIFRyYW5zZm9ybVN0YXRlOjpm
bGF0dGVuV2l0aFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdCwgYm9vbCog
dwogICAgICAgICAgICAgICAgIG1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQgPSB0Lm1hcFF1YWQo
Km1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaW52ZXJzZVRyYW5zZm9ybSA9IHQuaW52ZXJzZSgp
LnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOworICAgICAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBpbnZlcnNlVHJhbnNmb3JtID0gdmFsdWVPckRlZmF1bHQodC5pbnZlcnNlKCkpOwog
ICAgICAgICBpZiAobV9tYXBQb2ludCkKICAgICAgICAgICAgIG1fbGFzdFBsYW5hclBvaW50ID0g
aW52ZXJzZVRyYW5zZm9ybS5wcm9qZWN0UG9pbnQobV9sYXN0UGxhbmFyUG9pbnQpOwogICAgICAg
ICBpZiAobV9tYXBRdWFkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAppbmRleCBjNWU1OWExYmM2YmNkNWIzZDc2
OGIyNGY3MzJkNGRlMWY4NDlmMWZmLi5jNWE1N2Y0NzllNmIyODQyYTc0ZDQ4YTE1ZWM3NTY3MDVl
NjA2ZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVxdWVzdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKQEAgLTYyOCw3ICs2MjgsNyBAQCBib29sIFJlc291cmNl
UmVxdWVzdEJhc2U6OmlzU3lzdGVtUHJldmlldygpIGNvbnN0CiAKIFN5c3RlbVByZXZpZXdJbmZv
IFJlc291cmNlUmVxdWVzdEJhc2U6OnN5c3RlbVByZXZpZXdJbmZvKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9zeXN0ZW1QcmV2aWV3SW5mby52YWx1ZV9vcihTeXN0ZW1QcmV2aWV3SW5mbyB7IH0p
OworICAgIHJldHVybiB2YWx1ZU9yRGVmYXVsdChtX3N5c3RlbVByZXZpZXdJbmZvKTsKIH0KIAog
dm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRTeXN0ZW1QcmV2aWV3SW5mbyhjb25zdCBTeXN0
ZW1QcmV2aWV3SW5mbyYgaW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKaW5kZXggOTUwZTgyNjdlMmE1ZTg2
YmE3OWQ2NzllN2Q3MzYxMTAxYzBmYmFlYi4uMmQ1ODM4NWVjMTZkMmU1OTIzY2U4MTdkMTkwZjY3
ZmM0MTc4YTAxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKQEAgLTE5Miw3ICsxOTIsNyBAQCBSZXNvdXJj
ZVJlc3BvbnNlIFJlc291cmNlUmVzcG9uc2VCYXNlOjpmaWx0ZXIoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsCiAgICAgQVNTRVJUKHJlc3BvbnNlLnRhaW50aW5nKCkgPT0gVGFpbnRp
bmc6OkNvcnMpOwogICAgIGZpbHRlcmVkUmVzcG9uc2Uuc2V0VHlwZShUeXBlOjpDb3JzKTsKIAot
ICAgIGF1dG8gYWNjZXNzQ29udHJvbEV4cG9zZUhlYWRlclNldCA9IHBhcnNlQWNjZXNzQ29udHJv
bEFsbG93TGlzdDxBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+KHJlc3BvbnNlLmh0dHBIZWFkZXJG
aWVsZChIVFRQSGVhZGVyTmFtZTo6QWNjZXNzQ29udHJvbEV4cG9zZUhlYWRlcnMpKS52YWx1ZV9v
cihIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiB7IH0pOworICAgIGF1
dG8gYWNjZXNzQ29udHJvbEV4cG9zZUhlYWRlclNldCA9IHZhbHVlT3JEZWZhdWx0KHBhcnNlQWNj
ZXNzQ29udHJvbEFsbG93TGlzdDxBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+KHJlc3BvbnNlLmh0
dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6QWNjZXNzQ29udHJvbEV4cG9zZUhlYWRlcnMp
KSk7CiAgICAgaWYgKHBlcmZvcm1DaGVjayA9PSBQZXJmb3JtRXhwb3NlQWxsSGVhZGVyc0NoZWNr
OjpZZXMgJiYgYWNjZXNzQ29udHJvbEV4cG9zZUhlYWRlclNldC5jb250YWlucygiKiIpKQogICAg
ICAgICByZXR1cm4gZmlsdGVyZWRSZXNwb25zZTsKIApAQCAtNDU4LDcgKzQ1OCw3IEBAIHZvaWQg
UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNhbml0aXplSFRUUEhlYWRlckZpZWxkc0FjY29yZGluZ1Rv
VGFpbnRpbmcoKQogICAgIGNhc2UgUmVzb3VyY2VSZXNwb25zZTo6VGFpbnRpbmc6OkJhc2ljOgog
ICAgICAgICBicmVhazsKICAgICBjYXNlIFJlc291cmNlUmVzcG9uc2U6OlRhaW50aW5nOjpDb3Jz
OiB7Ci0gICAgICAgIGF1dG8gY29yc1NhZmVIZWFkZXJTZXQgPSBwYXJzZUFjY2Vzc0NvbnRyb2xB
bGxvd0xpc3Q8QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPihodHRwSGVhZGVyRmllbGQoSFRUUEhl
YWRlck5hbWU6OkFjY2Vzc0NvbnRyb2xFeHBvc2VIZWFkZXJzKSkudmFsdWVfb3IoSGFzaFNldDxT
dHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4geyB9KTsKKyAgICAgICAgYXV0byBjb3Jz
U2FmZUhlYWRlclNldCA9IHZhbHVlT3JEZWZhdWx0KHBhcnNlQWNjZXNzQ29udHJvbEFsbG93TGlz
dDxBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+KGh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFt
ZTo6QWNjZXNzQ29udHJvbEV4cG9zZUhlYWRlcnMpKSk7CiAgICAgICAgIGlmIChjb3JzU2FmZUhl
YWRlclNldC5jb250YWlucygiKiJfc3RyKSkKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1BhaW50SW5mby5oCmluZGV4IDUxZWY0MWRjZmQ1ZTVkMTJhOWFiNTZkYmZi
NTI0NDBjODUwY2Q3MzYuLjA1MGQ1Y2FmNmIyZmQzYmYzMjFlYmI5MWE4NzYxOWQzOTY4MTUwMGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludEluZm8uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgKQEAgLTExNiw3ICsxMTYsNyBAQCBz
dHJ1Y3QgUGFpbnRJbmZvIHsKICAgICAgICAgaWYgKHJlY3QuaXNJbmZpbml0ZSgpKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIEZsb2F0UmVjdCB0cmFuZm9ybWVkUmVjdChsb2NhbFRv
QW5jZXN0b3JUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5t
YXBSZWN0KHJlY3QpKTsKKyAgICAgICAgRmxvYXRSZWN0IHRyYW5mb3JtZWRSZWN0KHZhbHVlT3JE
ZWZhdWx0KGxvY2FsVG9BbmNlc3RvclRyYW5zZm9ybS5pbnZlcnNlKCkpLm1hcFJlY3QocmVjdCkp
OwogICAgICAgICByZWN0LnNldExvY2F0aW9uKExheW91dFBvaW50KHRyYW5mb3JtZWRSZWN0Lmxv
Y2F0aW9uKCkpKTsKICAgICAgICAgcmVjdC5zZXRTaXplKExheW91dFNpemUodHJhbmZvcm1lZFJl
Y3Quc2l6ZSgpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggMmRkMTU4NzFkN2I3MTYzODJlMDU3NjBkODIyZTll
NTc5NWU5YmY0Yi4uZDNlZDljNGU5MjdhNGExZWYwZGE2MmQzNWI3YjRhYzFkNzRhYzBiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3Bw
CkBAIC0zNDksNyArMzQ5LDcgQEAgTGF5b3V0U2l6ZSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cmVs
YXRpdmVQb3NpdGlvbk9mZnNldCgpIGNvbnN0CiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cu
b3JnL2Nzcy1ncmlkLyNncmlkLWl0ZW0tc2l6aW5nCiAgICAgaWYgKCFzdHlsZSgpLmxlZnQoKS5p
c0F1dG8oKSB8fCAhc3R5bGUoKS5yaWdodCgpLmlzQXV0bygpKSB7CiAgICAgICAgIExheW91dFVu
aXQgYXZhaWxhYmxlV2lkdGggPSBoYXNPdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFdp
ZHRoKCkKLSAgICAgICAgICAgID8gb3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRXaWR0
aCgpLnZhbHVlX29yKExheW91dFVuaXQoKSkgOiBjb250YWluaW5nQmxvY2soKS0+YXZhaWxhYmxl
V2lkdGgoKTsKKyAgICAgICAgICAgID8gdmFsdWVPckRlZmF1bHQob3ZlcnJpZGluZ0NvbnRhaW5p
bmdCbG9ja0NvbnRlbnRXaWR0aCgpKSA6IGNvbnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVXaWR0
aCgpOwogICAgICAgICBpZiAoIXN0eWxlKCkubGVmdCgpLmlzQXV0bygpKSB7CiAgICAgICAgICAg
ICBpZiAoIXN0eWxlKCkucmlnaHQoKS5pc0F1dG8oKSAmJiAhY29udGFpbmluZ0Jsb2NrKCktPnN0
eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQogICAgICAgICAgICAgICAgIG9mZnNldC5z
ZXRXaWR0aCgtdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5yaWdodCgpLCAhc3R5bGUoKS5yaWdodCgp
LmlzRml4ZWQoKSA/IGF2YWlsYWJsZVdpZHRoIDogMF9sdSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IDMxNzlkZWYwMjk5ZTRlYmQ3NWFjY2FjZmNkZDc0Nzk2
MDkxNTUxYjUuLjI2ZjhmY2JjMGFiMjc5NjBjNDkzOTIyM2U3NDhkOTNjM2I4M2M5OWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAgLTQ5NCw3ICs0OTQsNyBAQCB1
bnNpZ25lZCBSZW5kZXJHcmlkOjpjb21wdXRlQXV0b1JlcGVhdFRyYWNrc0NvdW50KEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbiBkaXJlYwogICAgICAgICBpZiAobWF4U2l6ZS5pc1NwZWNpZmllZCgp
KSB7CiAgICAgICAgICAgICBpZiAobWF4U2l6ZS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKICAg
ICAgICAgICAgICAgICBjb250YWluaW5nQmxvY2tBdmFpbGFibGVTaXplID0gaXNSb3dBeGlzID8g
Y29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVudCgpIDogY29udGFpbmluZ0Jsb2Nr
TG9naWNhbEhlaWdodEZvckNvbnRlbnQoRXhjbHVkZU1hcmdpbkJvcmRlclBhZGRpbmcpOwotICAg
ICAgICAgICAgTGF5b3V0VW5pdCBtYXhTaXplVmFsdWUgPSB2YWx1ZUZvckxlbmd0aChtYXhTaXpl
LCBjb250YWluaW5nQmxvY2tBdmFpbGFibGVTaXplLnZhbHVlX29yKExheW91dFVuaXQoKSkpOwor
ICAgICAgICAgICAgTGF5b3V0VW5pdCBtYXhTaXplVmFsdWUgPSB2YWx1ZUZvckxlbmd0aChtYXhT
aXplLCB2YWx1ZU9yRGVmYXVsdChjb250YWluaW5nQmxvY2tBdmFpbGFibGVTaXplKSk7CiAgICAg
ICAgICAgICBhdmFpbGFibGVNYXhTaXplID0gaXNSb3dBeGlzID8gYWRqdXN0Q29udGVudEJveExv
Z2ljYWxXaWR0aEZvckJveFNpemluZyhtYXhTaXplVmFsdWUsIG1heFNpemUudHlwZSgpKSA6IGFk
anVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKG1heFNpemVWYWx1ZSk7CiAg
ICAgICAgIH0KIApAQCAtNTA5LDcgKzUwOSw3IEBAIHVuc2lnbmVkIFJlbmRlckdyaWQ6OmNvbXB1
dGVBdXRvUmVwZWF0VHJhY2tzQ291bnQoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjCiAg
ICAgICAgIGlmIChtaW5TaXplLmlzU3BlY2lmaWVkKCkpIHsKICAgICAgICAgICAgIGlmICghY29u
dGFpbmluZ0Jsb2NrQXZhaWxhYmxlU2l6ZSAmJiBtaW5TaXplLmlzUGVyY2VudE9yQ2FsY3VsYXRl
ZCgpKQogICAgICAgICAgICAgICAgIGNvbnRhaW5pbmdCbG9ja0F2YWlsYWJsZVNpemUgPSBpc1Jv
d0F4aXMgPyBjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50KCkgOiBjb250YWlu
aW5nQmxvY2tMb2dpY2FsSGVpZ2h0Rm9yQ29udGVudChFeGNsdWRlTWFyZ2luQm9yZGVyUGFkZGlu
Zyk7Ci0gICAgICAgICAgICBMYXlvdXRVbml0IG1pblNpemVWYWx1ZSA9IHZhbHVlRm9yTGVuZ3Ro
KG1pblNpemUsIGNvbnRhaW5pbmdCbG9ja0F2YWlsYWJsZVNpemUudmFsdWVfb3IoTGF5b3V0VW5p
dCgpKSk7CisgICAgICAgICAgICBMYXlvdXRVbml0IG1pblNpemVWYWx1ZSA9IHZhbHVlRm9yTGVu
Z3RoKG1pblNpemUsIHZhbHVlT3JEZWZhdWx0KGNvbnRhaW5pbmdCbG9ja0F2YWlsYWJsZVNpemUp
KTsKICAgICAgICAgICAgIGF2YWlsYWJsZU1pblNpemUgPSBpc1Jvd0F4aXMgPyBhZGp1c3RDb250
ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKG1pblNpemVWYWx1ZSwgbWluU2l6ZS50eXBl
KCkpIDogYWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRGb3JCb3hTaXppbmcobWluU2l6ZVZh
bHVlKTsKICAgICAgICAgfSBlbHNlIGlmIChzaG91bGRDb21wdXRlTWluU2l6ZUZyb21Bc3BlY3RS
YXRpbykgewogICAgICAgICAgICAgYXV0byBbbG9naWNhbE1pbldpZHRoLCBsb2dpY2FsTWF4V2lk
dGhdID0gY29tcHV0ZU1pbk1heExvZ2ljYWxXaWR0aEZyb21Bc3BlY3RSYXRpbygpOwpAQCAtNTE4
LDcgKzUxOCw3IEBAIHVuc2lnbmVkIFJlbmRlckdyaWQ6OmNvbXB1dGVBdXRvUmVwZWF0VHJhY2tz
Q291bnQoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjCiAgICAgICAgIGlmICghbWF4U2l6
ZS5pc1NwZWNpZmllZCgpKQogICAgICAgICAgICAgbmVlZHNUb0Z1bGZpbGxNaW5pbXVtU2l6ZSA9
IHRydWU7CiAKLSAgICAgICAgYXZhaWxhYmxlU2l6ZSA9IHN0ZDo6bWF4KGF2YWlsYWJsZU1pblNp
emUudmFsdWVfb3IoTGF5b3V0VW5pdCgpKSwgYXZhaWxhYmxlTWF4U2l6ZS52YWx1ZV9vcihMYXlv
dXRVbml0KCkpKTsKKyAgICAgICAgYXZhaWxhYmxlU2l6ZSA9IHN0ZDo6bWF4KHZhbHVlT3JEZWZh
dWx0KGF2YWlsYWJsZU1pblNpemUpLCB2YWx1ZU9yRGVmYXVsdChhdmFpbGFibGVNYXhTaXplKSk7
CiAgICAgfQogCiAgICAgTGF5b3V0VW5pdCBhdXRvUmVwZWF0VHJhY2tzU2l6ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDliYTAzOTljZWVhYmY1N2NhYTA3
Mjk3NDcwNTkwODM2ZjJkMGVhZjguLjliMjJkM2I0OWQyNzY0MGFiZjk2NDE5MDMyYmM5Mzg3Y2U1
YjEwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMTAx
MCw3ICsxMDEwLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbnMoUmVu
ZGVyR2VvbWV0cnlNYXAqIGdlb21ldHJ5TWFwLCBPcHRpb25TZXQKICAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKHNob3VsZFJlcGFpbnRBZnRlckxheW91dCgpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIC8vIEZJWE1FOiBXZSB3aWxsIGNvbnZlcnQgdGhpcyB0byBqdXN0IHRha2UgdGhlIG9sZCBh
bmQgbmV3IFJlcGFpbnRMYXlvdXRSZWN0cyBvbmNlCiAgICAgICAgICAgICAgICAgICAgIC8vIHdl
IGNoYW5nZSBvdGhlciBjYWxsZXJzIHRvIHVzZSBSZXBhaW50TGF5b3V0UmVjdHMuCi0gICAgICAg
ICAgICAgICAgICAgIGF1dG8gcmVzb2x2ZWRPbGRSZWN0cyA9IG9sZFJlY3RzLnZhbHVlX29yKExh
eWVyUmVwYWludFJlY3RzIHsgfSk7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gcmVzb2x2ZWRP
bGRSZWN0cyA9IHZhbHVlT3JEZWZhdWx0KG9sZFJlY3RzKTsKICAgICAgICAgICAgICAgICAgICAg
cmVuZGVyZXIoKS5yZXBhaW50QWZ0ZXJMYXlvdXRJZk5lZWRlZChyZXBhaW50Q29udGFpbmVyLCBy
ZXNvbHZlZE9sZFJlY3RzLmNsaXBwZWRPdmVyZmxvd1JlY3QsIHJlc29sdmVkT2xkUmVjdHMub3V0
bGluZUJvdW5kc1JlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAmbmV3UmVjdHMtPmNsaXBw
ZWRPdmVyZmxvd1JlY3QsICZuZXdSZWN0cy0+b3V0bGluZUJvdW5kc1JlY3QpOwogICAgICAgICAg
ICAgICAgIH0KQEAgLTM0OTMsNyArMzQ5Myw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5
ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QKICAg
ICBMYXlvdXRTaXplIGFkanVzdGVkU3VicGl4ZWxPZmZzZXQgPSBvZmZzZXRGb3JUaGlzTGF5ZXIg
LSBMYXlvdXRTaXplKGRldmljZVBpeGVsU25hcHBlZE9mZnNldEZvclRoaXNMYXllcik7CiAgICAg
TGF5ZXJQYWludGluZ0luZm8gdHJhbnNmb3JtZWRQYWludGluZ0luZm8ocGFpbnRpbmdJbmZvKTsK
ICAgICB0cmFuc2Zvcm1lZFBhaW50aW5nSW5mby5yb290TGF5ZXIgPSB0aGlzOwotICAgIHRyYW5z
Zm9ybWVkUGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0ID0gTGF5b3V0UmVjdChlbmNsb3NlUmVj
dFRvRGV2aWNlUGl4ZWxzKHRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNm
b3JtKCkpLm1hcFJlY3QocGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0KSwgZGV2aWNlU2NhbGVG
YWN0b3IpKTsKKyAgICB0cmFuc2Zvcm1lZFBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCA9IExh
eW91dFJlY3QoZW5jbG9zZVJlY3RUb0RldmljZVBpeGVscyh2YWx1ZU9yRGVmYXVsdCh0cmFuc2Zv
cm0uaW52ZXJzZSgpKS5tYXBSZWN0KHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCksIGRldmlj
ZVNjYWxlRmFjdG9yKSk7CiAgICAgdHJhbnNmb3JtZWRQYWludGluZ0luZm8uc3VicGl4ZWxPZmZz
ZXQgPSBhZGp1c3RlZFN1YnBpeGVsT2Zmc2V0OwogICAgIHBhaW50TGF5ZXJDb250ZW50c0FuZFJl
ZmxlY3Rpb24oY29udGV4dCwgdHJhbnNmb3JtZWRQYWludGluZ0luZm8sIHBhaW50RmxhZ3MpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXggMTczOGE4YjZlNzU4
NTE1ZjUzZDc3YjY2ODQwN2MxNzlkZjVlZDNlZi4uNjBmZmIxNzA2NWMzMGI3OTQzYjkzZThjZmE3
NTI1NDI5MmMwYmRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcApA
QCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgUmVuZGVyVmlldzo6bGF5b3V0KCkKICAgICBpZiAoIW5l
ZWRzTGF5b3V0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExheW91dFN0YXRlTWFpbnRhaW5l
ciBzdGF0ZVB1c2hlcigqdGhpcywgeyB9LCBmYWxzZSwgbV9wYWdlTG9naWNhbFNpemUudmFsdWVf
b3IoTGF5b3V0U2l6ZSgpKS5oZWlnaHQoKSwgbV9wYWdlTG9naWNhbEhlaWdodENoYW5nZWQpOwor
ICAgIExheW91dFN0YXRlTWFpbnRhaW5lciBzdGF0ZVB1c2hlcigqdGhpcywgeyB9LCBmYWxzZSwg
dmFsdWVPckRlZmF1bHQobV9wYWdlTG9naWNhbFNpemUpLmhlaWdodCgpLCBtX3BhZ2VMb2dpY2Fs
SGVpZ2h0Q2hhbmdlZCk7CiAKICAgICBtX3BhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZCA9IGZhbHNl
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL0xlZ2FjeVJlbmRl
clNWR1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJT
VkdSb290LmNwcAppbmRleCBlODA4MjY1OWIyZjQwMjBlMjEyN2FiNDllNDg3OWU2MTIwOWJjNDE0
Li40NzQ2N2Y3ODM4MDY0YjFkNGI4NTViYjkxZWExYWQ0ZGQ5Yzk2MTdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNWR1Jvb3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvTGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHAKQEAg
LTQyOSw3ICs0MjksNyBAQCBib29sIExlZ2FjeVJlbmRlclNWR1Jvb3Q6Om5vZGVBdFBvaW50KGNv
bnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdQogICAgIC8vIFRlc3QgU1ZH
IGNvbnRlbnQgaWYgdGhlIHBvaW50IGlzIGluIG91ciBjb250ZW50IGJveCBvciBpdCBpcyBpbnNp
ZGUgdGhlIHZpc3VhbE92ZXJmbG93UmVjdCBhbmQgdGhlIG92ZXJmbG93IGlzIHZpc2libGUuCiAg
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGFuIGludGVyc2VjdGlvbiB3aGVuIHJlY3QtYmFz
ZWQgaGl0IHRlc3RzIGFyZSBzdXBwb3J0ZWQgYnkgbm9kZUF0RmxvYXRQb2ludC4KICAgICBpZiAo
Y29udGVudEJveFJlY3QoKS5jb250YWlucyhwb2ludEluQm9yZGVyQm94KSB8fCAoIXNob3VsZEFw
cGx5Vmlld3BvcnRDbGlwKCkgJiYgdmlzdWFsT3ZlcmZsb3dSZWN0KCkuY29udGFpbnMocG9pbnRJ
blBhcmVudCkpKSB7Ci0gICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJl
bnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBv
aW50KEZsb2F0UG9pbnQocG9pbnRJblBhcmVudCkpOworICAgICAgICBGbG9hdFBvaW50IGxvY2Fs
UG9pbnQgPSB2YWx1ZU9yRGVmYXVsdChsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgp
KS5tYXBQb2ludChGbG9hdFBvaW50KHBvaW50SW5QYXJlbnQpKTsKIAogICAgICAgICBmb3IgKFJl
bmRlck9iamVjdCogY2hpbGQgPSBsYXN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnBy
ZXZpb3VzU2libGluZygpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogbm9kZUF0RmxvYXRQb2lu
dCgpIGRvZXNuJ3QgaGFuZGxlIHJlY3QtYmFzZWQgaGl0IHRlc3RzIHlldC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAppbmRleCA4
YjA1NzRiN2Y3NDExNDkxMDRhMzIzZDZiZTI2NmQ0MjM4ZDhmYzgwLi5jMGQyNTc0YjZiOTU5YTQ1
ZjQyODhmYTA0ZTZjNGNkNDJmYjFkZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgYm9v
bCBSZW5kZXJTVkdDb250YWluZXI6Om5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVl
c3QmIHJlcXVlc3QsIEhpdFRlc3QKICAgICBpZiAoIXBvaW50SXNJbnNpZGVWaWV3cG9ydENsaXAo
cG9pbnRJblBhcmVudCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEZsb2F0UG9pbnQg
bG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVfb3Io
QWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOworICAgIEZsb2F0UG9p
bnQgbG9jYWxQb2ludCA9IHZhbHVlT3JEZWZhdWx0KGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5p
bnZlcnNlKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOwogCiAgICAgaWYgKCFTVkdSZW5kZXJT
dXBwb3J0Ojpwb2ludEluQ2xpcHBpbmdBcmVhKCp0aGlzLCBsb2NhbFBvaW50KSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAKaW5kZXggYTVkYjFiZTI2OTk0NzMyYTdjNjkwZTZl
YjQ4ZmE2YTFjOTIyOTFhZi4uMDEyOTkxOGIxYTkzM2E4OGQ2MzFlMWZmZGVhMmRiNjkxZTlmMDYx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3Jl
aWduT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0ZvcmVpZ25PYmplY3QuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgYm9vbCBSZW5kZXJTVkdGb3Jl
aWduT2JqZWN0Ojpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0
LCBIaXQKICAgICBpZiAoaGl0VGVzdEFjdGlvbiAhPSBIaXRUZXN0Rm9yZWdyb3VuZCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUcmFu
c2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBv
aW50SW5QYXJlbnQpOworICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IHZhbHVlT3JEZWZhdWx0
KGxvY2FsVHJhbnNmb3JtKCkuaW52ZXJzZSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKIAog
ICAgIC8vIEVhcmx5IGV4aXQgaWYgbG9jYWwgcG9pbnQgaXMgbm90IGNvbnRhaW5lZCBpbiBjbGlw
cGVkIHZpZXdwb3J0IGFyZWEKICAgICBpZiAoU1ZHUmVuZGVyU3VwcG9ydDo6aXNPdmVyZmxvd0hp
ZGRlbigqdGhpcykgJiYgIW1fdmlld3BvcnQuY29udGFpbnMobG9jYWxQb2ludCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCmluZGV4IGEyM2I0
OTEyMzc2NjhhOWNjMDU3MWIxMTMwOGJhYzgzODBiOWU5ZGQuLjYxZGM2NzhiOTIxZDBmN2E1N2Y2
NTMwNWI4Njk0MDIxMTk5MTVjMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCkBAIC0yMTksNyArMjE5LDcgQEAgYm9vbCBSZW5kZXJTVkdJ
bWFnZTo6bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0
VGVzdFJlc3UKICAgICBQb2ludGVyRXZlbnRzSGl0UnVsZXMgaGl0UnVsZXMoUG9pbnRlckV2ZW50
c0hpdFJ1bGVzOjpTVkdfSU1BR0VfSElUVEVTVElORywgcmVxdWVzdCwgc3R5bGUoKS5wb2ludGVy
RXZlbnRzKCkpOwogICAgIGJvb2wgaXNWaXNpYmxlID0gKHN0eWxlKCkudmlzaWJpbGl0eSgpID09
IFZpc2liaWxpdHk6OlZpc2libGUpOwogICAgIGlmIChpc1Zpc2libGUgfHwgIWhpdFJ1bGVzLnJl
cXVpcmVWaXNpYmxlKSB7Ci0gICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9Q
YXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1h
cFBvaW50KHBvaW50SW5QYXJlbnQpOworICAgICAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSB2
YWx1ZU9yRGVmYXVsdChsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgpKS5tYXBQb2lu
dChwb2ludEluUGFyZW50KTsKICAgICAgICAgICAgIAogICAgICAgICBpZiAoIVNWR1JlbmRlclN1
cHBvcnQ6OnBvaW50SW5DbGlwcGluZ0FyZWEoKnRoaXMsIGxvY2FsUG9pbnQpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCmluZGV4IGUzMTIxNzUzOGZiZDIzNjg4
MGZmYTcyNjI5YzU4ZmFjMzFlZTJiMjQuLmI0YTJkNGI2ZmNiMGFlMTE0ZWI2YmM4YjVkY2U5ODFl
MjE3NGI5NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKQEAgLTI4NSwxMCArMjg1LDEwIEBAIGJvb2wg
UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpoaXRUZXN0Q2xpcENvbnRlbnQoY29uc3QgRmxvYXRS
ZWN0JiBvYmplY3RCb3VuZGluCiAgICAgICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07CiAg
ICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUob2JqZWN0Qm91bmRpbmdCb3gubG9jYXRpb24oKSk7
CiAgICAgICAgIHRyYW5zZm9ybS5zY2FsZShvYmplY3RCb3VuZGluZ0JveC5zaXplKCkpOwotICAg
ICAgICBwb2ludCA9IHRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3Jt
KCkpLm1hcFBvaW50KHBvaW50KTsKKyAgICAgICAgcG9pbnQgPSB2YWx1ZU9yRGVmYXVsdCh0cmFu
c2Zvcm0uaW52ZXJzZSgpKS5tYXBQb2ludChwb2ludCk7CiAgICAgfQogCi0gICAgcG9pbnQgPSBj
bGlwUGF0aEVsZW1lbnQoKS5hbmltYXRlZExvY2FsVHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVl
X29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludCk7CisgICAgcG9pbnQgPSB2YWx1
ZU9yRGVmYXVsdChjbGlwUGF0aEVsZW1lbnQoKS5hbmltYXRlZExvY2FsVHJhbnNmb3JtKCkuaW52
ZXJzZSgpKS5tYXBQb2ludChwb2ludCk7CiAKICAgICBmb3IgKE5vZGUqIGNoaWxkTm9kZSA9IGNs
aXBQYXRoRWxlbWVudCgpLmZpcnN0Q2hpbGQoKTsgY2hpbGROb2RlOyBjaGlsZE5vZGUgPSBjaGls
ZE5vZGUtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IGNoaWxkTm9kZS0+cmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jvb3QuY3BwCmluZGV4IDU1OGIxYjBiMTFiMzMzOTgyYjNjZWExNGEzNmU0OTQz
ZGI0YTU1NGEuLjExNGFlMTUzZWQwYmRjZTI0ZjQ3ZmQ5Y2NkZjU3OGRhNWVjNTQ0NDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcApAQCAtNDE4
LDcgKzQxOCw3IEBAIExheW91dFJlY3QgUmVuZGVyU1ZHUm9vdDo6Y2xpcHBlZE92ZXJmbG93UmVj
dChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhCiAgICAgaWYgKHN0eWxlKCkudmlz
aWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgJiYgIWVuY2xvc2luZ0xheWVyKCktPmhh
c1Zpc2libGVDb250ZW50KCkpCiAgICAgICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CiAKLSAgICBh
dXRvIHJlcGFpbnRSZWN0ID0gTGF5b3V0UmVjdChtX3ZpZXdCb3hUcmFuc2Zvcm0uaW52ZXJzZSgp
LnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KGJvcmRlckJveFJlY3QoKSkpOwor
ICAgIGF1dG8gcmVwYWludFJlY3QgPSBMYXlvdXRSZWN0KHZhbHVlT3JEZWZhdWx0KG1fdmlld0Jv
eFRyYW5zZm9ybS5pbnZlcnNlKCkpLm1hcFJlY3QoYm9yZGVyQm94UmVjdCgpKSk7CiAgICAgcmV0
dXJuIGNvbXB1dGVSZWN0KHJlcGFpbnRSZWN0LCByZXBhaW50Q29udGFpbmVyLCBjb250ZXh0KTsK
IH0KIApAQCAtNjI4LDcgKzYyOCw3IEBAIHZvaWQgUmVuZGVyU1ZHUm9vdDo6YXBwbHlUcmFuc2Zv
cm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgUmVuZGVyCiAKIHZvaWQg
UmVuZGVyU1ZHUm9vdDo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25z
dCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0CiB7Ci0gICAgYXV0byBsb2Nh
bFJlY3QgPSBMYXlvdXRSZWN0KG1fc3VwcGxlbWVudGFsTG9jYWxUb1BhcmVudFRyYW5zZm9ybS5p
bnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QoYm9yZGVyQm94UmVj
dCgpKSk7CisgICAgYXV0byBsb2NhbFJlY3QgPSBMYXlvdXRSZWN0KHZhbHVlT3JEZWZhdWx0KG1f
c3VwcGxlbWVudGFsTG9jYWxUb1BhcmVudFRyYW5zZm9ybS5pbnZlcnNlKCkpLm1hcFJlY3QoYm9y
ZGVyQm94UmVjdCgpKSk7CiAgICAgcmVjdHMuYXBwZW5kKHNuYXBwZWRJbnRSZWN0KGFjY3VtdWxh
dGVkT2Zmc2V0LCBsb2NhbFJlY3Quc2l6ZSgpKSk7CiB9CiAKQEAgLTYzOCw3ICs2MzgsNyBAQCB2
b2lkIFJlbmRlclNWR1Jvb3Q6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRz
LCBib29sKiB3YXNGaXhlZCkgY29ucwogICAgIGlmIChmcmFnbWVudGVkRmxvdyAmJiBmcmFnbWVu
dGVkRmxvdy0+YWJzb2x1dGVRdWFkc0ZvckJveChxdWFkcywgd2FzRml4ZWQsIHRoaXMpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBhdXRvIGxvY2FsUmVjdCA9IEZsb2F0UmVjdChtX3N1cHBsZW1l
bnRhbExvY2FsVG9QYXJlbnRUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5z
Zm9ybSgpKS5tYXBSZWN0KGJvcmRlckJveFJlY3QoKSkpOworICAgIGF1dG8gbG9jYWxSZWN0ID0g
RmxvYXRSZWN0KHZhbHVlT3JEZWZhdWx0KG1fc3VwcGxlbWVudGFsTG9jYWxUb1BhcmVudFRyYW5z
Zm9ybS5pbnZlcnNlKCkpLm1hcFJlY3QoYm9yZGVyQm94UmVjdCgpKSk7CiAgICAgcXVhZHMuYXBw
ZW5kKGxvY2FsVG9BYnNvbHV0ZVF1YWQobG9jYWxSZWN0LCBVc2VUcmFuc2Zvcm1zLCB3YXNGaXhl
ZCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hh
cGUuY3BwCmluZGV4IDIzZDg0MGFmMmE2NDQ1YTFhYzBiZTk4MmM3YzVkNTIyNTdjMDVhY2UuLjQz
ODZhY2RiYmU0ZjY1ZTY0ZmY3M2ZlM2IxMzk2ZDQxZWJmYThiNDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCkBAIC0zNDcsNyArMzQ3LDcg
QEAgYm9vbCBSZW5kZXJTVkdTaGFwZTo6bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVx
dWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3UKICAgICBpZiAoaGl0VGVzdEFjdGlvbiAhPSBIaXRU
ZXN0Rm9yZWdyb3VuZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRmxvYXRQb2ludCBs
b2NhbFBvaW50ID0gbV9sb2NhbFRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJh
bnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOworICAgIEZsb2F0UG9pbnQgbG9jYWxQ
b2ludCA9IHZhbHVlT3JEZWZhdWx0KG1fbG9jYWxUcmFuc2Zvcm0uaW52ZXJzZSgpKS5tYXBQb2lu
dChwb2ludEluUGFyZW50KTsKIAogICAgIGlmICghU1ZHUmVuZGVyU3VwcG9ydDo6cG9pbnRJbkNs
aXBwaW5nQXJlYSgqdGhpcywgbG9jYWxQb2ludCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCmluZGV4IDYz
YWNhZWNmOTU2NzQzY2VlYjYxMjAwNWQ2ZDc5NzI2YTgyOTkzZjcuLjFkYjBlYTc1MGQ1NTRjZDNl
ZWMxMTRjYzM2MjYxZWE4YWU0YjVjODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdUZXh0LmNwcApAQCAtNDA5LDcgKzQwOSw3IEBAIGJvb2wgUmVuZGVyU1ZH
VGV4dDo6bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0
VGVzdFJlc3VsCiAgICAgaWYgKGlzVmlzaWJsZSB8fCAhaGl0UnVsZXMucmVxdWlyZVZpc2libGUp
IHsKICAgICAgICAgaWYgKChoaXRSdWxlcy5jYW5IaXRTdHJva2UgJiYgKHN0eWxlKCkuc3ZnU3R5
bGUoKS5oYXNTdHJva2UoKSB8fCAhaGl0UnVsZXMucmVxdWlyZVN0cm9rZSkpCiAgICAgICAgICAg
ICB8fCAoaGl0UnVsZXMuY2FuSGl0RmlsbCAmJiAoc3R5bGUoKS5zdmdTdHlsZSgpLmhhc0ZpbGwo
KSB8fCAhaGl0UnVsZXMucmVxdWlyZUZpbGwpKSkgewotICAgICAgICAgICAgRmxvYXRQb2ludCBs
b2NhbFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZV9vcihB
ZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CisgICAgICAgICAgICBG
bG9hdFBvaW50IGxvY2FsUG9pbnQgPSB2YWx1ZU9yRGVmYXVsdChsb2NhbFRvUGFyZW50VHJhbnNm
b3JtKCkuaW52ZXJzZSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKIAogICAgICAgICAgICAg
aWYgKCFTVkdSZW5kZXJTdXBwb3J0Ojpwb2ludEluQ2xpcHBpbmdBcmVhKCp0aGlzLCBsb2NhbFBv
aW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAgICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKaW5kZXggYWI1NjI2
NjhiNDBkYTgwN2FkYmMyOWQxODU2MDQzZTM2YWU3NDRlMy4uYzkzNTAwOTVhNzU0M2ExMzliZjBm
MjczMDMzODZhMmIyOWE2NWMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCkBAIC00MjEsNyArNDIxLDcgQEAgdm9pZCBTVkdSZW5k
ZXJTdXBwb3J0OjpjbGlwQ29udGV4dFRvQ1NTQ2xpcHBpbmdBcmVhKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY28KICAgICAgICAgcmVmZXJlbmNlQm94ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9y
bS5tYXBSZWN0KHJlZmVyZW5jZUJveCk7CiAKICAgICAgICAgYXV0byBwYXRoID0gY2xpcFBhdGgu
cGF0aEZvclJlZmVyZW5jZVJlY3QocmVmZXJlbmNlQm94KTsKLSAgICAgICAgcGF0aC50cmFuc2Zv
cm0obG9jYWxUb1BhcmVudFRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNm
b3JtKCkpKTsKKyAgICAgICAgcGF0aC50cmFuc2Zvcm0odmFsdWVPckRlZmF1bHQobG9jYWxUb1Bh
cmVudFRyYW5zZm9ybS5pbnZlcnNlKCkpKTsKIAogICAgICAgICBjb250ZXh0LmNsaXBQYXRoKHBh
dGgsIGNsaXBQYXRoLndpbmRSdWxlKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDc3ZTEyNmU2NjRh
MDIyMTBhNGY5ZGU3ZWMxNjI5MDg1YmYyMDIxZDMuLmEyOTFjZWQyMzVlNmFlNDYxNDY0ZWYxNDc5
YzU1OGZmMDBiYWNhNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMzA3LDcgKzMwNyw3IEBAIHZvaWQgU1ZHUmVu
ZGVyaW5nQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBBZmZpCiAKICAgICAvLyBUaGUgbWFzayBpbWFnZSBoYXMgYmVlbiBjcmVhdGVkIGlu
IHRoZSBhYnNvbHV0ZSBjb29yZGluYXRlIHNwYWNlLCBhcyB0aGUgaW1hZ2Ugc2hvdWxkIG5vdCBi
ZSBzY2FsZWQuCiAgICAgLy8gU28gdGhlIGFjdHVhbCBtYXNraW5nIHByb2Nlc3MgaGFzIHRvIGJl
IGRvbmUgaW4gdGhlIGFic29sdXRlIGNvb3JkaW5hdGUgc3BhY2UgYXMgd2VsbC4KLSAgICBjb250
ZXh0LmNvbmNhdENUTShhYnNvbHV0ZVRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5l
VHJhbnNmb3JtKCkpKTsKKyAgICBjb250ZXh0LmNvbmNhdENUTSh2YWx1ZU9yRGVmYXVsdChhYnNv
bHV0ZVRyYW5zZm9ybS5pbnZlcnNlKCkpKTsKICAgICBjb250ZXh0LmNsaXBUb0ltYWdlQnVmZmVy
KCppbWFnZUJ1ZmZlciwgYWJzb2x1dGVUYXJnZXRSZWN0KTsKICAgICBjb250ZXh0LmNvbmNhdENU
TShhYnNvbHV0ZVRyYW5zZm9ybSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZU1vdGlvbkVsZW1lbnQuY3BwCmluZGV4IDkwYjc2OTNlOGEzMzNmMTk5ZWUzYmQzMDE1YWQ5MzZl
MGEwNDNkNzAuLmY1Mjk5OTY2NmE4MWJmZDU0MGFkZmUzYzQ3ZjA5OWU4YjNkZmE5YzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcApAQCAtMTYx
LDE1ICsxNjEsMTUgQEAgdm9pZCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6c3RvcEFuaW1hdGlv
bihTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KQogCiBib29sIFNWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50OjpjYWxjdWxhdGVUb0F0RW5kT2ZEdXJhdGlvblZhbHVlKGNvbnN0IFN0cmluZyYgdG9BdEVu
ZE9mRHVyYXRpb25TdHJpbmcpCiB7Ci0gICAgbV90b1BvaW50QXRFbmRPZkR1cmF0aW9uID0gcGFy
c2VQb2ludCh0b0F0RW5kT2ZEdXJhdGlvblN0cmluZykudmFsdWVfb3IoRmxvYXRQb2ludCB7IH0p
OworICAgIG1fdG9Qb2ludEF0RW5kT2ZEdXJhdGlvbiA9IHZhbHVlT3JEZWZhdWx0KHBhcnNlUG9p
bnQodG9BdEVuZE9mRHVyYXRpb25TdHJpbmcpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9v
bCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6Y2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKGNvbnN0
IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykKIHsKICAgICBtX3Rv
UG9pbnRBdEVuZE9mRHVyYXRpb24gPSBzdGQ6Om51bGxvcHQ7Ci0gICAgbV9mcm9tUG9pbnQgPSBw
YXJzZVBvaW50KGZyb21TdHJpbmcpLnZhbHVlX29yKEZsb2F0UG9pbnQgeyB9KTsKLSAgICBtX3Rv
UG9pbnQgPSBwYXJzZVBvaW50KHRvU3RyaW5nKS52YWx1ZV9vcihGbG9hdFBvaW50IHsgfSk7Cisg
ICAgbV9mcm9tUG9pbnQgPSB2YWx1ZU9yRGVmYXVsdChwYXJzZVBvaW50KGZyb21TdHJpbmcpKTsK
KyAgICBtX3RvUG9pbnQgPSB2YWx1ZU9yRGVmYXVsdChwYXJzZVBvaW50KHRvU3RyaW5nKSk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAgICAgCkBAIC0xNzgsOCArMTc4LDggQEAgYm9vbCBTVkdBbmlt
YXRlTW90aW9uRWxlbWVudDo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKGNvbnN0IFN0cmluZyYg
ZnJvbVN0cmluZywKICAgICBtX3RvUG9pbnRBdEVuZE9mRHVyYXRpb24gPSBzdGQ6Om51bGxvcHQ7
CiAgICAgaWYgKGFuaW1hdGlvbk1vZGUoKSA9PSBBbmltYXRpb25Nb2RlOjpCeSAmJiAhaXNBZGRp
dGl2ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgbV9mcm9tUG9pbnQgPSBwYXJzZVBv
aW50KGZyb21TdHJpbmcpLnZhbHVlX29yKEZsb2F0UG9pbnQgeyB9KTsKLSAgICBhdXRvIGJ5UG9p
bnQgPSBwYXJzZVBvaW50KGJ5U3RyaW5nKS52YWx1ZV9vcihGbG9hdFBvaW50IHsgfSk7CisgICAg
bV9mcm9tUG9pbnQgPSB2YWx1ZU9yRGVmYXVsdChwYXJzZVBvaW50KGZyb21TdHJpbmcpKTsKKyAg
ICBhdXRvIGJ5UG9pbnQgPSB2YWx1ZU9yRGVmYXVsdChwYXJzZVBvaW50KGJ5U3RyaW5nKSk7CiAg
ICAgbV90b1BvaW50ID0gRmxvYXRQb2ludChtX2Zyb21Qb2ludC54KCkgKyBieVBvaW50LngoKSwg
bV9mcm9tUG9pbnQueSgpICsgYnlQb2ludC55KCkpOwogICAgIHJldHVybiB0cnVlOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwCmluZGV4IDU1ZTMx
ODI5ZGVhNGI3YWNkMTAxNTY1OGIzOWU0Y2UzZGFiYmY0NDIuLmM2NzFjMzcwZjM0Y2Y1MDc2ZmVl
MjRjMTkyNWQ4ZDk2MjE0NzIwNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
b09URkZvbnRDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZG
b250Q29udmVyc2lvbi5jcHAKQEAgLTEyOTIsNyArMTI5Miw3IEBAIHZvaWQgU1ZHVG9PVEZGb250
Q29udmVydGVyOjpwcm9jZXNzR2x5cGhFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQmIGdseXBoT3JN
aXNzaW5nCiAgICAgaWYgKGdseXBoQm91bmRpbmdCb3gpCiAgICAgICAgIG1fbWluUmlnaHRTaWRl
QmVhcmluZyA9IHN0ZDo6bWluKG1fbWluUmlnaHRTaWRlQmVhcmluZywgaG9yaXpvbnRhbEFkdmFu
Y2UgLSBnbHlwaEJvdW5kaW5nQm94LnZhbHVlKCkubWF4WCgpKTsKIAotICAgIG1fZ2x5cGhzLmFw
cGVuZChHbHlwaERhdGEoV1RGTW92ZShwYXRoKSwgZ2x5cGhFbGVtZW50LCBob3Jpem9udGFsQWR2
YW5jZSwgdmVydGljYWxBZHZhbmNlLCBnbHlwaEJvdW5kaW5nQm94LnZhbHVlX29yKEZsb2F0UmVj
dCgpKSwgY29kZXBvaW50cykpOworICAgIG1fZ2x5cGhzLmFwcGVuZChHbHlwaERhdGEoV1RGTW92
ZShwYXRoKSwgZ2x5cGhFbGVtZW50LCBob3Jpem9udGFsQWR2YW5jZSwgdmVydGljYWxBZHZhbmNl
LCB2YWx1ZU9yRGVmYXVsdChnbHlwaEJvdW5kaW5nQm94KSwgY29kZXBvaW50cykpOwogfQogCiB2
b2lkIFNWR1RvT1RGRm9udENvbnZlcnRlcjo6YXBwZW5kTGlnYXR1cmVHbHlwaHMoKQpAQCAtMTQx
Niw3ICsxNDE2LDcgQEAgU1ZHVG9PVEZGb250Q29udmVydGVyOjpTVkdUb09URkZvbnRDb252ZXJ0
ZXIoY29uc3QgU1ZHRm9udEVsZW1lbnQmIGZvbnRFbGVtZW50KQogICAgICAgICAgICAgcHJvY2Vz
c0dseXBoRWxlbWVudChnbHlwaEVsZW1lbnQsICZnbHlwaEVsZW1lbnQsIGRlZmF1bHRIb3Jpem9u
dGFsQWR2YW5jZSwgZGVmYXVsdFZlcnRpY2FsQWR2YW5jZSwgdW5pY29kZUF0dHJpYnV0ZSwgYm91
bmRpbmdCb3gpOwogICAgIH0KIAotICAgIG1fYm91bmRpbmdCb3ggPSBib3VuZGluZ0JveC52YWx1
ZV9vcihGbG9hdFJlY3QoKSk7CisgICAgbV9ib3VuZGluZ0JveCA9IHZhbHVlT3JEZWZhdWx0KGJv
dW5kaW5nQm94KTsKIAogICAgIGFwcGVuZExpZ2F0dXJlR2x5cGhzKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oCmluZGV4IDExMDRk
OTNhNzEzYjlkNTBiMzFhYzdkNDJmYjk1NjU2MjRmNWE5ZWMuLmZjMTc3OTBmYzRlNmI1NTY0Nzk0
MjQzNWFkMWU4YTJhYmYzMGY1MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuaApAQCAtMTA0LDcgKzEwNCw3IEBAIHN0cnVjdCBTVkdQ
cm9wZXJ0eVRyYWl0czxzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0Pj4gewogICAgIHN0YXRpYyBzdGQ6
OnBhaXI8ZmxvYXQsIGZsb2F0PiBpbml0aWFsVmFsdWUoKSB7IHJldHVybiB7IH07IH0KICAgICBz
dGF0aWMgc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gZnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0
cmluZykKICAgICB7Ci0gICAgICAgIHJldHVybiBwYXJzZU51bWJlck9wdGlvbmFsTnVtYmVyKHN0
cmluZykudmFsdWVfb3Ioc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4geyB9KTsKKyAgICAgICAgcmV0
dXJuIHZhbHVlT3JEZWZhdWx0KHBhcnNlTnVtYmVyT3B0aW9uYWxOdW1iZXIoc3RyaW5nKSk7CiAg
ICAgfQogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+PiBw
YXJzZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgU3RyaW5nJikgeyBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsgcmV0dXJuIGluaXRpYWxWYWx1ZSgpOyB9CiAgICAgc3RhdGljIFN0cmluZyB0b1N0
cmluZyhzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7IH0KQEAgLTExNSw3ICsxMTUsNyBAQCBzdHJ1Y3QgU1ZHUHJvcGVy
dHlUcmFpdHM8RmxvYXRQb2ludD4gewogICAgIHN0YXRpYyBGbG9hdFBvaW50IGluaXRpYWxWYWx1
ZSgpIHsgcmV0dXJuIEZsb2F0UG9pbnQoKTsgfQogICAgIHN0YXRpYyBGbG9hdFBvaW50IGZyb21T
dHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgewotICAgICAgICByZXR1cm4gcGFyc2VQ
b2ludChzdHJpbmcpLnZhbHVlX29yKEZsb2F0UG9pbnQgeyB9KTsKKyAgICAgICAgcmV0dXJuIHZh
bHVlT3JEZWZhdWx0KHBhcnNlUG9pbnQoc3RyaW5nKSk7CiAgICAgfQogICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IHBhcnNlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBT
dHJpbmcmIHN0cmluZykKICAgICB7CkBAIC0xMzIsNyArMTMyLDcgQEAgc3RydWN0IFNWR1Byb3Bl
cnR5VHJhaXRzPEZsb2F0UmVjdD4gewogICAgIHN0YXRpYyBGbG9hdFJlY3QgaW5pdGlhbFZhbHVl
KCkgeyByZXR1cm4gRmxvYXRSZWN0KCk7IH0KICAgICBzdGF0aWMgRmxvYXRSZWN0IGZyb21TdHJp
bmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgewotICAgICAgICByZXR1cm4gcGFyc2VSZWN0
KHN0cmluZykudmFsdWVfb3IoRmxvYXRSZWN0IHsgfSk7CisgICAgICAgIHJldHVybiB2YWx1ZU9y
RGVmYXVsdChwYXJzZVJlY3Qoc3RyaW5nKSk7CiAgICAgfQogICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPEZsb2F0UmVjdD4gcGFyc2UoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IFN0cmluZyYg
c3RyaW5nKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBjNzVm
NGU5YjIyOGI5M2Y0OGEwMWQyMDQ4NDkxMWU1YTc0ZGM0MzUzLi4zMWNkYTQ0MzE3NDZlNTRlMjc1
OGVlMDkyNTM3NWM0Mjk4NDdmNzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CkBAIC0yNzk0LDEzICsyNzk0LDEzIEBAIGJvb2wgSW50ZXJuYWxzOjppc0VsZW1lbnRBbGl2ZShE
b2N1bWVudCYgZG9jdW1lbnQsIHVpbnQ2NF90IGVsZW1lbnRJZGVudGlmaWVyKSBjCiB1aW50NjRf
dCBJbnRlcm5hbHM6OmZyYW1lSWRlbnRpZmllcihjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpIGNv
bnN0CiB7CiAgICAgaWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCkpCi0gICAgICAgIHJl
dHVybiBwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5mcmFtZUlEKCkudmFsdWVfb3IoRnJhbWVJ
ZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlT3JEZWZhdWx0
KHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmZyYW1lSUQoKSkudG9VSW50NjQoKTsKICAgICBy
ZXR1cm4gMDsKIH0KIAogdWludDY0X3QgSW50ZXJuYWxzOjpwYWdlSWRlbnRpZmllcihjb25zdCBE
b2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRvY3VtZW50LnBhZ2VJRCgp
LnZhbHVlX29yKFBhZ2VJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKTsKKyAgICByZXR1cm4gdmFs
dWVPckRlZmF1bHQoZG9jdW1lbnQucGFnZUlEKCkpLnRvVUludDY0KCk7CiB9CiAKIGJvb2wgSW50
ZXJuYWxzOjppc0FueVdvcmtsZXRHbG9iYWxTY29wZUFsaXZlKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdl
LmNwcAppbmRleCA5YThmYjM1Y2E1MzYxMDViYjZkNmZjNDZlZTEyMjQ1OTMzZjcwYmY4Li43NWQ5
OGE5MjY3Njg1MGNlY2IyNGI5ODkyZDBkMzZhMzBhNjJiMjM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3Bw
CkBAIC00NCw3ICs0NCw3IEBAIHN0YXRpYyBib29sIHNob3VsZFVzZUZpbGVNYXBwaW5nKHVpbnQ2
NF90IGZpbGVTaXplKQogCiBTV1NjcmlwdFN0b3JhZ2U6OlNXU2NyaXB0U3RvcmFnZShjb25zdCBT
dHJpbmcmIGRpcmVjdG9yeSkKICAgICA6IG1fZGlyZWN0b3J5KGRpcmVjdG9yeSkKLSAgICAsIG1f
c2FsdChGaWxlU3lzdGVtOjpyZWFkT3JNYWtlU2FsdChzYWx0UGF0aCgpKS52YWx1ZV9vcihGaWxl
U3lzdGVtOjpTYWx0KCkpKQorICAgICwgbV9zYWx0KHZhbHVlT3JEZWZhdWx0KEZpbGVTeXN0ZW06
OnJlYWRPck1ha2VTYWx0KHNhbHRQYXRoKCkpKSkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVh
ZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggOWM2ZGQ4Y2U0ZDhmMDZh
MjAzYjY0MGFhMjJhMDI1ZTk5N2YzMTAzNi4uNTU0ZGQxMDBiNDc5NDZiY2JlYTYzNDc4Yzg0ZjMx
ZDBkZGI5ZTdiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTQ5Nyw3ICs0OTcs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUZldAogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpzY2hlZHVsZVJlc291cmNlTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycyYmIGxvYWRQYXJhbWV0ZXJzLCBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyPiBleGlzdGluZ0xvYWRlclRvUmVzdW1lKQogewotICAgIENPTk5FQ1RJT05fUkVM
RUFTRV9MT0coTG9hZGluZywgInNjaGVkdWxlUmVzb3VyY2VMb2FkOiAocGFyZW50UElEPSVkLCBw
YWdlUHJveHlJRD0lIiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUi
IFBSSXU2NCAiLCByZXNvdXJjZUlEPSUiIFBSSXU2NCAiLCBleGlzdGluZ0xvYWRlclRvUmVzdW1l
PSUiIFBSSXU2NCAiKSIsIGxvYWRQYXJhbWV0ZXJzLnBhcmVudFBJRCwgbG9hZFBhcmFtZXRlcnMu
d2ViUGFnZVByb3h5SUQudG9VSW50NjQoKSwgbG9hZFBhcmFtZXRlcnMud2ViUGFnZUlELnRvVUlu
dDY0KCksIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQudG9VSW50NjQoKSwgbG9hZFBhcmFtZXRl
cnMuaWRlbnRpZmllci50b1VJbnQ2NCgpLCBleGlzdGluZ0xvYWRlclRvUmVzdW1lLnZhbHVlX29y
KE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKSk7CisgICAgQ09O
TkVDVElPTl9SRUxFQVNFX0xPRyhMb2FkaW5nLCAic2NoZWR1bGVSZXNvdXJjZUxvYWQ6IChwYXJl
bnRQSUQ9JWQsIHBhZ2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIs
IGZyYW1lSUQ9JSIgUFJJdTY0ICIsIHJlc291cmNlSUQ9JSIgUFJJdTY0ICIsIGV4aXN0aW5nTG9h
ZGVyVG9SZXN1bWU9JSIgUFJJdTY0ICIpIiwgbG9hZFBhcmFtZXRlcnMucGFyZW50UElELCBsb2Fk
UGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVycy53ZWJQ
YWdlSUQudG9VSW50NjQoKSwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRC50b1VJbnQ2NCgpLCBs
b2FkUGFyYW1ldGVycy5pZGVudGlmaWVyLnRvVUludDY0KCksIHZhbHVlT3JEZWZhdWx0KGV4aXN0
aW5nTG9hZGVyVG9SZXN1bWUpLnRvVUludDY0KCkpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRleCA4N2Rk
MGY3ODU0YzhiNGQ4ODExYTFhMWMwMDNkMGY3M2IwNGFlZmJlLi41NDA2MWEzYTU3NGY0Njg1ZTc0
MGQzOTY0ZjMwNTZlNDZiMjIyNjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtNjA3LDcgKzYwNyw3IEBAIHZvaWQgTmV0d29ya1Nl
c3Npb246OnVucmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
JiBjb25uZWN0CiBTV1NlcnZlciYgTmV0d29ya1Nlc3Npb246OmVuc3VyZVNXU2VydmVyKCkKIHsK
ICAgICBpZiAoIW1fc3dTZXJ2ZXIpIHsKLSAgICAgICAgYXV0byBpbmZvID0gbV9zZXJ2aWNlV29y
a2VySW5mby52YWx1ZV9vcihTZXJ2aWNlV29ya2VySW5mbyB7IH0pOworICAgICAgICBhdXRvIGlu
Zm8gPSB2YWx1ZU9yRGVmYXVsdChtX3NlcnZpY2VXb3JrZXJJbmZvKTsKICAgICAgICAgYXV0byBw
YXRoID0gaW5mby5kYXRhYmFzZVBhdGg7CiAgICAgICAgIC8vIFRoZXJlIHNob3VsZCBhbHJlYWR5
IGJlIGEgcmVnaXN0ZXJlZCBwYXRoIGZvciB0aGlzIFBBTDo6U2Vzc2lvbklELgogICAgICAgICAv
LyBJZiB0aGVyZSdzIG5vdCwgdGhlbiB3aGVyZSBkaWQgdGhpcyBQQUw6OlNlc3Npb25JRCBjb21l
IGZyb20/CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcAppbmRleCBjODc1YzkzNjRlZTA1MzUyNmQz
ZjllN2MzNjI3NWQ5MzE5YzVjMTBlLi42NWYwZTQ1MTJjY2E4NzFiNDU4ZTc5MjAyZjFhOTM4NmI4
NDBmZGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgRmls
ZVRpbWVzIGZpbGVUaW1lcyhjb25zdCBTdHJpbmcmIHBhdGgpCiAjZWxpZiBPUyhXSU5ET1dTKQog
ICAgIGF1dG8gY3JlYXRlVGltZSA9IEZpbGVTeXN0ZW06OmZpbGVDcmVhdGlvblRpbWUocGF0aCk7
CiAgICAgYXV0byBtb2RpZnlUaW1lID0gRmlsZVN5c3RlbTo6ZmlsZU1vZGlmaWNhdGlvblRpbWUo
cGF0aCk7Ci0gICAgcmV0dXJuIHsgY3JlYXRlVGltZS52YWx1ZV9vcihXYWxsVGltZSgpKSwgbW9k
aWZ5VGltZS52YWx1ZV9vcihXYWxsVGltZSgpKSB9OworICAgIHJldHVybiB7IHZhbHVlT3JEZWZh
dWx0KGNyZWF0ZVRpbWUpLCB2YWx1ZU9yRGVmYXVsdChtb2RpZnlUaW1lKSB9OwogI2VuZGlmCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3
b3JrU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9y
YWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggZTIxODExZTc2Mjg1Nzk0MTIzOGU4
NjcxNjZiZDRiODdhMzE4NzgzZC4uOTMwMDllMjQ5ZWQxYTRjODk3Y2E5MTkwYzNmMjRkNWEzYzQ1
NDg1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05l
dHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCBO
ZXR3b3JrU3RvcmFnZU1hbmFnZXI6Ok5ldHdvcmtTdG9yYWdlTWFuYWdlcihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFN0cgogICAgICAgICBtX2N1c3RvbUxvY2FsU3RvcmFnZVBhdGgg
PSBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoOwogICAgICAgICBpZiAoIW1fcGF0aC5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgIGF1dG8gc2FsdFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQobV9wYXRoLCAic2FsdCIpOwotICAgICAgICAgICAgbV9zYWx0ID0gRmlsZVN5
c3RlbTo6cmVhZE9yTWFrZVNhbHQoc2FsdFBhdGgpLnZhbHVlX29yKEZpbGVTeXN0ZW06OlNhbHQo
KSk7CisgICAgICAgICAgICBtX3NhbHQgPSB2YWx1ZU9yRGVmYXVsdChGaWxlU3lzdGVtOjpyZWFk
T3JNYWtlU2FsdChzYWx0UGF0aCkpOwogICAgICAgICB9CiAgICAgfSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0
Y2hlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRlZElu
cHV0RGlzcGF0Y2hlci5jcHAKaW5kZXggYTlmNTQ4NDNmZDliOWIzNTZjZGI2NmFhYjQ1ODA4ZDA5
MGM5M2U5Yi4uZTAzMzgxY2U1MDJlN2QxZTM5MTU3NDM5MjcwMWVmOGZkMzdiYjA3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERp
c3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vU2lt
dWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgU2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyOjp0cmFuc2l0aW9uSW5wdXRTb3VyY2VUb1N0YXRlKFNpbXVsYXRl
ZElucHV0U291cmNlCiAjaWYgIUVOQUJMRShXRUJEUklWRVJfTU9VU0VfSU5URVJBQ1RJT05TKQog
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2Vsc2UKLSAgICAgICAgcmVz
b2x2ZUxvY2F0aW9uKGEubG9jYXRpb24udmFsdWVfb3IoV2ViQ29yZTo6SW50UG9pbnQoKSksIGIu
bG9jYXRpb24sIGIub3JpZ2luLnZhbHVlX29yKE1vdXNlTW92ZU9yaWdpbjo6Vmlld3BvcnQpLCBi
Lm5vZGVIYW5kbGUsIFt0aGlzLCAmYSwgJmIsIGlucHV0U291cmNlID0gaW5wdXRTb3VyY2UudHlw
ZSwgZXZlbnREaXNwYXRjaEZpbmlzaGVkID0gV1RGTW92ZShldmVudERpc3BhdGNoRmluaXNoZWQp
XShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBsb2NhdGlvbiwgc3RkOjpvcHRpb25h
bDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgIHJlc29s
dmVMb2NhdGlvbih2YWx1ZU9yRGVmYXVsdChhLmxvY2F0aW9uKSwgYi5sb2NhdGlvbiwgYi5vcmln
aW4udmFsdWVfb3IoTW91c2VNb3ZlT3JpZ2luOjpWaWV3cG9ydCksIGIubm9kZUhhbmRsZSwgW3Ro
aXMsICZhLCAmYiwgaW5wdXRTb3VyY2UgPSBpbnB1dFNvdXJjZS50eXBlLCBldmVudERpc3BhdGNo
RmluaXNoZWQgPSBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCldKHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6SW50UG9pbnQ+IGxvY2F0aW9uLCBzdGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21t
YW5kRXJyb3I+IGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChlcnJvcikgewogICAg
ICAgICAgICAgICAgIGV2ZW50RGlzcGF0Y2hGaW5pc2hlZChlcnJvcik7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMzE2LDcgKzMxNiw3IEBAIHZvaWQgU2ltdWxhdGVkSW5wdXREaXNwYXRj
aGVyOjp0cmFuc2l0aW9uSW5wdXRTb3VyY2VUb1N0YXRlKFNpbXVsYXRlZElucHV0U291cmNlCiAj
aWYgIUVOQUJMRShXRUJEUklWRVJfVE9VQ0hfSU5URVJBQ1RJT05TKQogICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2Vsc2UKLSAgICAgICAgcmVzb2x2ZUxvY2F0aW9uKGEu
bG9jYXRpb24udmFsdWVfb3IoV2ViQ29yZTo6SW50UG9pbnQoKSksIGIubG9jYXRpb24sIGIub3Jp
Z2luLnZhbHVlX29yKE1vdXNlTW92ZU9yaWdpbjo6Vmlld3BvcnQpLCBiLm5vZGVIYW5kbGUsIFt0
aGlzLCAmYSwgJmIsIGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCA9IFdURk1vdmUoZXZlbnREaXNwYXRj
aEZpbmlzaGVkKV0oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gbG9jYXRpb24sIHN0
ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIG11dGFibGUgeworICAg
ICAgICByZXNvbHZlTG9jYXRpb24odmFsdWVPckRlZmF1bHQoYS5sb2NhdGlvbiksIGIubG9jYXRp
b24sIGIub3JpZ2luLnZhbHVlX29yKE1vdXNlTW92ZU9yaWdpbjo6Vmlld3BvcnQpLCBiLm5vZGVI
YW5kbGUsIFt0aGlzLCAmYSwgJmIsIGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCA9IFdURk1vdmUoZXZl
bnREaXNwYXRjaEZpbmlzaGVkKV0oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gbG9j
YXRpb24sIHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIG11dGFi
bGUgewogICAgICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICAgICAgZXZlbnREaXNw
YXRjaEZpbmlzaGVkKGVycm9yKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC00MjIsNyAr
NDIyLDcgQEAgdm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnRyYW5zaXRpb25JbnB1dFNv
dXJjZVRvU3RhdGUoU2ltdWxhdGVkSW5wdXRTb3VyY2UKICNpZiAhRU5BQkxFKFdFQkRSSVZFUl9X
SEVFTF9JTlRFUkFDVElPTlMpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAjZWxzZQotICAgICAgICByZXNvbHZlTG9jYXRpb24oYS5sb2NhdGlvbi52YWx1ZV9vcihXZWJD
b3JlOjpJbnRQb2ludCgpKSwgYi5sb2NhdGlvbiwgYi5vcmlnaW4udmFsdWVfb3IoTW91c2VNb3Zl
T3JpZ2luOjpWaWV3cG9ydCksIGIubm9kZUhhbmRsZSwgW3RoaXMsICZhLCAmYiwgZXZlbnREaXNw
YXRjaEZpbmlzaGVkID0gV1RGTW92ZShldmVudERpc3BhdGNoRmluaXNoZWQpXShzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OkludFBvaW50PiBsb2NhdGlvbiwgc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9u
Q29tbWFuZEVycm9yPiBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgIHJlc29sdmVMb2NhdGlvbih2
YWx1ZU9yRGVmYXVsdChhLmxvY2F0aW9uKSwgYi5sb2NhdGlvbiwgYi5vcmlnaW4udmFsdWVfb3Io
TW91c2VNb3ZlT3JpZ2luOjpWaWV3cG9ydCksIGIubm9kZUhhbmRsZSwgW3RoaXMsICZhLCAmYiwg
ZXZlbnREaXNwYXRjaEZpbmlzaGVkID0gV1RGTW92ZShldmVudERpc3BhdGNoRmluaXNoZWQpXShz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBsb2NhdGlvbiwgc3RkOjpvcHRpb25hbDxB
dXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAo
ZXJyb3IpIHsKICAgICAgICAgICAgICAgICBldmVudERpc3BhdGNoRmluaXNoZWQoZXJyb3IpOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KaW5kZXggM2E0MDViYjdhZDZi
MjdhNTljMDU4ZWE2Yjg2MGI0MmExMzk0OWZiMS4uMWYzNTBjNGJiODU4Mjg1ZmRjOTNjNWNiMzQ4
ZGFiNzE1MTU5MzJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lk
IFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGUoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aQogICAgICAgICAgICAgICAgIGlmICghW1tOU0ZpbGVNYW5hZ2Vy
IGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZpbGVuYW1lXSkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSB7IH07CiAKLSAgICAgICAg
ICAgICAgICByZXR1cm4gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGVuYW1lLCBT
YW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSkudmFsdWVfb3IoU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlIHsgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlT3JEZWZhdWx0KFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlbmFtZSwgU2FuZGJveEV4dGVuc2lvbjo6
VHlwZTo6UmVhZE9ubHkpKTsKICAgICAgICAgICAgIH0pOwogI2VuZGlmCiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAppbmRl
eCAyZTA2YWRkZjdlODc1NjYzMjM0NDhlMWZkM2Q4OTk5ODczMWE0ZGI0Li5mMzgxMjJhMzRhMWNi
YTljNGY0YWJjNjgzNTQyNTk2OWQ0MTE3MzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBQ
cm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9u
LCBjb25zdCBJUEM6OkRhdGEKIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVl
c3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIHN0ZDo6b3B0aW9uYWw8
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4s
IHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMsIHN0
ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IGV4aXN0aW5nTmV0d29y
a1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSkKIHsKLSAgICBQUk9WSVNJT05BTFBBR0VQ
Uk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJsb2FkUmVxdWVzdDogZXhpc3RpbmdO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lPSUiIFBSSXU2NCwgZXhpc3RpbmdO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lLnZhbHVlX29yKE5ldHdvcmtSZXNv
dXJjZUxvYWRJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKSk7CisgICAgUFJPVklTSU9OQUxQQUdF
UFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAibG9hZFJlcXVlc3Q6IGV4aXN0aW5n
TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZT0lIiBQUkl1NjQsIHZhbHVlT3JE
ZWZhdWx0KGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSkudG9V
SW50NjQoKSk7CiAgICAgQVNTRVJUKHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCAhPSBXZWJD
b3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vKTsKIAogICAgIC8vIElmIHRoaXMg
aXMgYSBjbGllbnQtc2lkZSByZWRpcmVjdCBjb250aW51aW5nIGluIGEgbmV3IHByb2Nlc3MsIHRo
ZW4gdGhlIG5ldyBwcm9jZXNzIHdpbGwgb3ZlcndyaXRlIHRoZSBmcm9tSXRlbSdzIFVSTC4gSW4g
dGhpcyBjYXNlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA2NmI0
MTI2OTFjZjc0NDcxMTQ0ODAxNGQ1ODk5MzdmNjlmNjg5N2UwLi4zMmM1NTQzMjU4NDdhN2FiYWI2
ODYxZWE3MTA3YzVhY2EyY2ZiYmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaApAQCAtMTQ5Miw3ICsxNDkyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXV0b1Npemlu
Z1Nob3VsZEV4cGFuZFRvVmlld0hlaWdodChib29sKTsKIAogICAgIHZvaWQgc2V0Vmlld3BvcnRT
aXplRm9yQ1NTVmlld3BvcnRVbml0cyhjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKLSAgICBX
ZWJDb3JlOjpGbG9hdFNpemUgdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpIGNvbnN0
IHsgcmV0dXJuIG1fdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cy52YWx1ZV9vcihXZWJD
b3JlOjpGbG9hdFNpemUoKSk7IH0KKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgdmlld3BvcnRTaXpl
Rm9yQ1NTVmlld3BvcnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIHZhbHVlT3JEZWZhdWx0KG1fdmll
d3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyk7IH0KIAogICAgIHZvaWQgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkoUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJv
eHk+JiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMpOwogICAgIHZvaWQgbmVnb3RpYXRlZExlZ2FjeVRM
UygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCBlZGM1
MDkwZWNmMjljMDMyZDNjMmQ3ODU1OGY2NjlhMzZmMGQzZGJiLi5mNTE0Yjk5MTZhZDQwODJhN2Yw
NzFmNjU3Mzc4ZmVmM2VkMjJhODMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaApAQCAtMTU0LDcgKzE1NCw3IEBAIHB1YmxpYzoKICAgICBXZWJQcm9jZXNzUG9v
bCYgcHJvY2Vzc1Bvb2woKSBjb25zdDsKIAogICAgIGJvb2wgaXNNYXRjaGluZ1JlZ2lzdHJhYmxl
RG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pIGNvbnN0IHsg
cmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW4gPyAqbV9yZWdpc3RyYWJsZURvbWFpbiA9PSBkb21h
aW4gOiBmYWxzZTsgfQotICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxl
RG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbi52YWx1ZV9vcihXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IH0pOyB9CisgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gcmVnaXN0cmFibGVEb21haW4oKSBjb25zdCB7IHJldHVybiB2YWx1ZU9yRGVmYXVsdCht
X3JlZ2lzdHJhYmxlRG9tYWluKTsgfQogICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+JiBvcHRpb25hbFJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsgfQogCiAgICAgZW51bSBjbGFzcyBXaWxsU2h1dERv
d24gOiBib29sIHsgTm8sIFllcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA3MWNmOTIwN2VmZDlj
YTI5NWFiODkwZDY3NmUyZDM5ZDQ5MmQ2NjU4Li5iYTQzM2I4M2ViZmExYTgyOTg2NGNlMzAwZWY4
ZDY1NDVmMmE3ZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTgzNyw3ICsxODM3LDcgQEAgV2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAg
ICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gYXBwQm91bmREb21haW5zOwog
I2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAoaXNBcHBCb3VuZElUUFJlbGF4
YXRpb25FbmFibGVkKQotICAgICAgICBhcHBCb3VuZERvbWFpbnMgPSBhcHBCb3VuZERvbWFpbnNJ
ZkluaXRpYWxpemVkKCkudmFsdWVfb3IoSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4geyB9KTsKKyAgICAgICAgYXBwQm91bmREb21haW5zID0gdmFsdWVPckRlZmF1bHQoYXBwQm91
bmREb21haW5zSWZJbml0aWFsaXplZCgpKTsKICNlbmRpZgogICAgIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsK
ICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGFyYW1ldGVycyA9IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCBkODYyNDNmNWE3ZmExYWE1MWZhMWIw
ZTMyZTg1OTEyMzAzOGVhZWZjLi42ZjY3N2VlZjRlNjg1OWNlNWQ0MDgwZTFlYzk1ZTdiN2I5NTE0
NzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJh
dGVneTo6bG9hZFJlc291cmNlKEZyYW1lJiBmcmFtZSwgQ2FjaGVkUmVzb3VyY2UmIHJlc291cmNl
LCBSZXMKICAgICAgICAgaWYgKGxvYWRlcikKICAgICAgICAgICAgIHNjaGVkdWxlTG9hZCgqbG9h
ZGVyLCByZXNvdXJjZS5nZXQoKSwgcmVmZXJyZXJQb2xpY3kgPT0gUmVmZXJyZXJQb2xpY3k6Ok5v
UmVmZXJyZXJXaGVuRG93bmdyYWRlKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgUkVMRUFT
RV9MT0coTmV0d29yaywgIiVwIC0gW3dlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQ
Ukl1NjQgIl0gV2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZTogVW5hYmxlIHRvIGNyZWF0
ZSBTdWJyZXNvdXJjZUxvYWRlciIsIHRoaXMsIGZyYW1lLT5wYWdlSUQoKS52YWx1ZV9vcihQYWdl
SWRlbnRpZmllcigpKS50b1VJbnQ2NCgpLCBmcmFtZS0+ZnJhbWVJRCgpLnZhbHVlX29yKEZyYW1l
SWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HKE5ldHdv
cmssICIlcCAtIFt3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICJdIFdl
YkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2U6IFVuYWJsZSB0byBjcmVhdGUgU3VicmVzb3Vy
Y2VMb2FkZXIiLCB0aGlzLCB2YWx1ZU9yRGVmYXVsdChmcmFtZS0+cGFnZUlEKCkpLnRvVUludDY0
KCksIHZhbHVlT3JEZWZhdWx0KGZyYW1lLT5mcmFtZUlEKCkpLnRvVUludDY0KCkpOwogICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGxvYWRlcikpOwogICAgIH0pOwogfQpAQCAtMTc4
LDEzICsxNzgsMTMgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKFJlc291
cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKIAogICAgIFdlYlJlc291cmNl
TG9hZGVyOjpUcmFja2luZ1BhcmFtZXRlcnMgdHJhY2tpbmdQYXJhbWV0ZXJzOwogICAgIGlmIChh
dXRvKiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IHRvV2ViRnJhbWVMb2FkZXJDbGllbnQoZnJhbWVM
b2FkZXJDbGllbnQpKQotICAgICAgICB0cmFja2luZ1BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQg
PSB3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViUGFnZVByb3h5SUQoKS52YWx1ZV9vcihXZWJQYWdl
UHJveHlJZGVudGlmaWVyIHsgfSk7CisgICAgICAgIHRyYWNraW5nUGFyYW1ldGVycy53ZWJQYWdl
UHJveHlJRCA9IHZhbHVlT3JEZWZhdWx0KHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJQYWdlUHJv
eHlJRCgpKTsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgZWxzZSBpZiAoaXM8U2Vy
dmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50PihmcmFtZUxvYWRlckNsaWVudCkpCiAgICAgICAg
IHRyYWNraW5nUGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCA9IGRvd25jYXN0PFNlcnZpY2VXb3Jr
ZXJGcmFtZUxvYWRlckNsaWVudD4oZnJhbWVMb2FkZXJDbGllbnQpLndlYlBhZ2VQcm94eUlEKCk7
CiAjZW5kaWYKLSAgICB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlEID0gZnJhbWVMb2FkZXJDbGll
bnQucGFnZUlEKCkudmFsdWVfb3IoUGFnZUlkZW50aWZpZXIgeyB9KTsKLSAgICB0cmFja2luZ1Bh
cmFtZXRlcnMuZnJhbWVJRCA9IGZyYW1lTG9hZGVyQ2xpZW50LmZyYW1lSUQoKS52YWx1ZV9vcihG
cmFtZUlkZW50aWZpZXIgeyB9KTsKKyAgICB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlEID0gdmFs
dWVPckRlZmF1bHQoZnJhbWVMb2FkZXJDbGllbnQucGFnZUlEKCkpOworICAgIHRyYWNraW5nUGFy
YW1ldGVycy5mcmFtZUlEID0gdmFsdWVPckRlZmF1bHQoZnJhbWVMb2FkZXJDbGllbnQuZnJhbWVJ
RCgpKTsKICAgICB0cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCA9IGlkZW50aWZpZXI7CiAK
ICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShNSFRNTCkKQEAgLTQ0OCw3ICs0NDgs
NyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nl
c3MoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTAogICAgIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXI+IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZp
ZXJUb1Jlc3VtZTsKICAgICBpZiAobG9hZFBhcmFtZXRlcnMuaXNNYWluRnJhbWVOYXZpZ2F0aW9u
KQogICAgICAgICBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUg
PSBzdGQ6OmV4Y2hhbmdlKG1fZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRv
UmVzdW1lLCBzdGQ6Om51bGxvcHQpOwotICAgIFdFQkxPQURFUlNUUkFURUdZX1JFTEVBU0VfTE9H
KCJzY2hlZHVsZUxvYWQ6IFJlc291cmNlIGlzIGJlaW5nIHNjaGVkdWxlZCB3aXRoIHRoZSBOZXR3
b3JrUHJvY2VzcyAocHJpb3JpdHk9JWQsIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50
aWZpZXJUb1Jlc3VtZT0lIiBQUkl1NjQgIikiLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9h
ZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSwgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRl
bnRpZmllclRvUmVzdW1lLnZhbHVlX29yKE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHsg
fSkudG9VSW50NjQoKSk7CisgICAgV0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9MT0coInNjaGVk
dWxlTG9hZDogUmVzb3VyY2UgaXMgYmVpbmcgc2NoZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9j
ZXNzIChwcmlvcml0eT0lZCwgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRv
UmVzdW1lPSUiIFBSSXU2NCAiKSIsIHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVx
dWVzdCgpLnByaW9yaXR5KCkpLCB2YWx1ZU9yRGVmYXVsdChleGlzdGluZ05ldHdvcmtSZXNvdXJj
ZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpLnRvVUludDY0KCkpOwogICAgIGlmICghV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTY2hlZHVs
ZVJlc291cmNlTG9hZChsb2FkUGFyYW1ldGVycywgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2Fk
SWRlbnRpZmllclRvUmVzdW1lKSwgMCkpIHsKICAgICAgICAgV0VCTE9BREVSU1RSQVRFR1lfUkVM
RUFTRV9MT0dfRVJST1IoInNjaGVkdWxlTG9hZDogVW5hYmxlIHRvIHNjaGVkdWxlIHJlc291cmNl
IHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChwcmlvcml0eT0lZCkiLCBzdGF0aWNfY2FzdDxpbnQ+
KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSk7CiAgICAgICAgIC8vIFdlIHBy
b2JhYmx5IGZhaWxlZCB0byBzY2hlZHVsZSB0aGlzIGxvYWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nl
c3MgYmVjYXVzZSBpdCBoYWQgY3Jhc2hlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGU1ZmEwNzEwOWE5MzE4NDUzOWZiMWUy
NDcwYTNmOTM4NmQ0MzE1NTguLjBmYWYyZDY1NjA5ODNhMjRmMmY5Nzc0N2U5YWU1YjU4MzFlZTFl
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbQpAQCAtMjA0NywxMyArMjA0NywxMyBAQCBJbnRQb2ludCBQREZQbHVnaW46OmNvbnZl
cnRGcm9tUm9vdFZpZXdUb1BsdWdpbihjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CiBJbnRQ
b2ludCBQREZQbHVnaW46OmNvbnZlcnRGcm9tUERGVmlld1RvUm9vdFZpZXcoY29uc3QgSW50UG9p
bnQmIHBvaW50KSBjb25zdAogewogICAgIEludFBvaW50IHBvaW50SW5QbHVnaW5Db29yZGluYXRl
cyhwb2ludC54KCksIHNpemUoKS5oZWlnaHQoKSAtIHBvaW50LnkoKSk7Ci0gICAgcmV0dXJuIG1f
cm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNm
b3JtKCkpLm1hcFBvaW50KHBvaW50SW5QbHVnaW5Db29yZGluYXRlcyk7CisgICAgcmV0dXJuIHZh
bHVlT3JEZWZhdWx0KG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCkpLm1hcFBv
aW50KHBvaW50SW5QbHVnaW5Db29yZGluYXRlcyk7CiB9CiAKIEludFJlY3QgUERGUGx1Z2luOjpj
b252ZXJ0RnJvbVBERlZpZXdUb1Jvb3RWaWV3KGNvbnN0IEludFJlY3QmIHJlY3QpIGNvbnN0CiB7
CiAgICAgSW50UmVjdCByZWN0SW5QbHVnaW5Db29yZGluYXRlcyhyZWN0LngoKSwgcmVjdC55KCks
IHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7Ci0gICAgcmV0dXJuIG1fcm9vdFZpZXdUb1Bs
dWdpblRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJl
Y3QocmVjdEluUGx1Z2luQ29vcmRpbmF0ZXMpOworICAgIHJldHVybiB2YWx1ZU9yRGVmYXVsdCht
X3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0uaW52ZXJzZSgpKS5tYXBSZWN0KHJlY3RJblBsdWdp
bkNvb3JkaW5hdGVzKTsKIH0KIAogSW50UG9pbnQgUERGUGx1Z2luOjpjb252ZXJ0RnJvbVJvb3RW
aWV3VG9QREZWaWV3KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKQEAgLTIwODYsNyArMjA4
Niw3IEBAIEludFJlY3QgUERGUGx1Z2luOjpib3VuZHNPblNjcmVlbigpIGNvbnN0CiAgICAgICAg
IHJldHVybiB7IH07CiAKICAgICBGbG9hdFJlY3QgYm91bmRzID0gRmxvYXRSZWN0KEZsb2F0UG9p
bnQoKSwgc2l6ZSgpKTsKLSAgICBGbG9hdFJlY3QgcmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyA9
IG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJh
bnNmb3JtKCkpLm1hcFJlY3QoYm91bmRzKTsKKyAgICBGbG9hdFJlY3QgcmVjdEluUm9vdFZpZXdD
b29yZGluYXRlcyA9IHZhbHVlT3JEZWZhdWx0KG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5p
bnZlcnNlKCkpLm1hcFJlY3QoYm91bmRzKTsKICAgICBhdXRvKiBwYWdlID0gbV9mcmFtZS0+Y29y
ZUZyYW1lKCktPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiB7IH07CkBA
IC0yMTEzLDcgKzIxMTMsNyBAQCB2b2lkIFBERlBsdWdpbjo6Z2VvbWV0cnlEaWRDaGFuZ2UoY29u
c3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgSW50UmVjdCYsIGNvbgogICAgICAgICByZXR1
cm47CiAKICAgICBtX3NpemUgPSBwbHVnaW5TaXplOwotICAgIG1fcm9vdFZpZXdUb1BsdWdpblRy
YW5zZm9ybSA9IHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFm
ZmluZVRyYW5zZm9ybSgpKTsKKyAgICBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0gPSB2YWx1
ZU9yRGVmYXVsdChwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLmludmVyc2UoKSk7CiAgICAgW21f
cGRmTGF5ZXJDb250cm9sbGVyIHNldEZyYW1lU2l6ZTpwbHVnaW5TaXplXTsKIAogICAgIFtDQVRy
YW5zYWN0aW9uIGJlZ2luXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKaW5kZXggOTQyZWRjNjIzYTRlNjUzYmIxODhhZWUwNTA2NDRhM2Y0YTAzMmU4OS4u
ZWI5Y2Q0MmJhMGJlYmRmMWMyYmMwYjMzZTQ4ZGE5MDM4MzUxYzZlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM3NjksNyArMzc2OSw3IEBA
IHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIFJ1bkphdmFTY3Jp
cHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVyCiAKIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdElu
RnJhbWVJblNjcmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIGNvbnN0IHN0
ZDo6cGFpcjxDb250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJpbmc+JiB3b3JsZERhdGEsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3Qgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewotICAgIFdFQlBBR0VfUkVMRUFTRV9MT0coUHJvY2VzcywgInJ1bkphdmFTY3JpcHRJbkZy
YW1lSW5TY3JpcHRXb3JsZDogZnJhbWVJRD0lIiBQUkl1NjQsIGZyYW1lSUQudmFsdWVfb3IoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKSk7CisgICAgV0VCUEFHRV9SRUxF
QVNFX0xPRyhQcm9jZXNzLCAicnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkOiBmcmFt
ZUlEPSUiIFBSSXU2NCwgdmFsdWVPckRlZmF1bHQoZnJhbWVJRCkudG9VSW50NjQoKSk7CiAgICAg
UmVmUHRyIHdlYkZyYW1lID0gZnJhbWVJRCA/IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZy
YW1lKCpmcmFtZUlEKSA6ICZtYWluV2ViRnJhbWUoKTsKIAogICAgIGlmIChhdXRvKiBuZXdXb3Js
ZCA9IG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRDb250ZW50V29ybGQod29ybGREYXRhKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxs
c2NyZWVuTWFuYWdlci5tbQppbmRleCBlMThkMTBjM2ZjNGYxOGQ3M2EyYTc0MGM1MzMxMzEzNDNm
ZjMzY2FmLi40MmJlOGNlYTUyNTBmYWZmZWI3OGUwMTFhNjdhNGVmYzBkYTU0YTc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlci5tbQpAQCAtNDgxLDcgKzQ4MSw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6ZGlkRW50ZXJGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lvbkNvbnRleHRJZGVudGlmaWVyCiAg
ICAgaWYgKCF2aWRlb0VsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHZpZGVvRWxlbWVu
dC0+ZGlkRW50ZXJGdWxsc2NyZWVuT3JQaWN0dXJlSW5QaWN0dXJlKHNpemUudmFsdWVfb3IoV2Vi
Q29yZTo6RmxvYXRTaXplKCkpKTsKKyAgICB2aWRlb0VsZW1lbnQtPmRpZEVudGVyRnVsbHNjcmVl
bk9yUGljdHVyZUluUGljdHVyZSh2YWx1ZU9yRGVmYXVsdChzaXplKSk7CiAKICAgICBpZiAoaW50
ZXJmYWNlLT50YXJnZXRJc0Z1bGxzY3JlZW4oKSB8fCBpbnRlcmZhY2UtPmZ1bGxzY3JlZW5TdGFu
ZGJ5KCkpCiAgICAgICAgIHJldHVybjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448467</attachid>
            <date>2022-01-05 21:11:53 -0800</date>
            <delta_ts>2022-01-06 13:28:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234865-20220105211152.patch</filename>
            <type>text/plain</type>
            <size>97914</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGFjZmU1ZGE3YmVjN2VhNmY2NTJiNjAz
M2VlMWQyMzg5OWU3NjNmNGEuLmZiOTY4OGU4M2QwZjE5M2UxMjcwZDY3MGRlZjU3ZDUwZjJkYmYy
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjItMDEtMDUgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQg
cmV0dXJucyB0aGUgdmFsdWUgb2YgYSBzdGQ6Om9wdGlvbmFsPFQ+IG9yIGNvbnN0cnVjdHMgVCBp
ZiBuZWVkZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNDg2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBhIG5ldyBoZWxwZXIgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSB2YWx1ZSBvZiBhIGdp
dmVuIGBzdGQ6Om9wdGlvbmFsPFR5cGU+YCBpZiBpdCBleGlzdHMsIGFuZCBvdGhlcndpc2UKKyAg
ICAgICAgY29uc3RydWN0cyBhbmQgcmV0dXJucyBgVHlwZSB7IH1gLiBDdXJyZW50bHksIHRoZSBh
bHRlcm5hdGl2ZSB0byB0aGlzIGlzIHdyaXRpbmcgb3V0IHRoZSBgVHlwZSB7IH1gIGluIGZ1bGwg
d2hlbgorICAgICAgICBwYXNzaW5nIGluIGFuIGFyZ3VtZW50IHRvIGB2YWx1ZV9vcmA7IHVzaW5n
IHRoaXMgYXZvaWRzIHNvbWUgcmVkdW5kYW5jeSBhbmQgbWFrZXMgdGhlIGV4cHJlc3Npb24gYSBi
aXQgZWFzaWVyIHRvCisgICAgICAgIHJlYWQuCisKKyAgICAgICAgKiB3dGYvU3RkTGliRXh0cmFz
Lmg6CisgICAgICAgIChXVEY6OnZhbHVlT3JEZWZhdWx0KToKKwogMjAyMi0wMS0wNSAgSm9obiBX
aWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBDaGFuZ2UgdmVyc2lvbiBu
dW1iZXIgZm9yIEhBVkVfUlNBX1BTU19PSUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4YjM3YzVmNTQzZDhjNWQ5
MGIxZGY4MzZmZjRlMWY3MjVmODhmZmM3Li5lNjhhMTM5MmM3NWU5MGRhYTNmZTlhMWIzOWE1ZmUw
ZmUyNDJhYjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI3IEBACisyMDIyLTAxLTA1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIGhlbHBl
ciBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHZhbHVlIG9mIGEgc3RkOjpvcHRpb25hbDxUPiBv
ciBjb25zdHJ1Y3RzIFQgaWYgbmVlZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzQ4NjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVc2UgYHZhbHVlT3JEZWZhdWx0YCB3aGVyZSBhcHByb3ByaWF0ZS4g
U2VlIFdURi9DaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIE1vZHVsZXMv
YXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVu
dEhhbmRsZXI6OmRpZEF1dGhvcml6ZVBheW1lbnQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVh
bVRyYWNrOjphcHBseUNvbnN0cmFpbnRzKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0ljZUNhbmRpZGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENJY2VDYW5kaWRhdGU6
OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbCk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6dXBkYXRlSWZOZWVkZWQp
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgICogaHRtbC9CYXNlRGF0ZUFu
ZFRpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5w
dXRUeXBlOjpzZXR1cERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMpOgorICAgICAgICAqIGh0bWwv
SFRNTEFuY2hvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1l
bnQ6OmhhbmRsZUNsaWNrKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OmlzUG9pbnRJblBhdGhJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjppc1BvaW50SW5TdHJva2VJbnRlcm5hbCk6CisgICAg
ICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRlcjo6YnVpbGQp
OgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVC
b3hWZXJ0aWNhbEFsaWduZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94
VmVydGljYWxBbGlnbmVyOjpjb21wdXRlTGluZUJveExvZ2ljYWxIZWlnaHQgY29uc3QpOgorICAg
ICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRl
eHQ6OnNldFVzZWRHZW9tZXRyeUZvckNlbGxzKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgICog
bG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVTZWxlY3Rpb25Gb3JN
b3VzZURyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpsYXN0S25vd25Nb3Vz
ZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxl
TW91c2VNb3ZlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVN
b3VzZVJlbGVhc2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnRhcmdl
dFBvc2l0aW9uSW5XaW5kb3dGb3JTZWxlY3Rpb25BdXRvc2Nyb2xsIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRTb29uSW5R
dWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZmFrZU1vdXNlTW92ZUV2ZW50
VGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhvdmVyVGltZXJG
aXJlZCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpzZXRMYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdCk6CisgICAgICAgICogcGFn
ZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNhbXBsZWRQYWdlVG9wQ29sb3Ig
Y29uc3QpOgorICAgICAgICAqIHBhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dGFyZ2V0UG9zaXRpb25JbldpbmRvd0ZvclNlbGVjdGlv
bkF1dG9zY3JvbGwgY29uc3QpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWVMYXRjaGluZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJl
ZUxhdGNoaW5nQ29udHJvbGxlcjo6bm9kZURpZEhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0Js
dXI6OmNhbGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpuYXR1cmFsU2l6
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0VmlzaWJsZUFuZENvdmVyYWdl
UmVjdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3Jt
U3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtU3RhdGU6Om1hcHBlZFBvaW50
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybVN0YXRlOjptYXBRdWFkIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybVN0YXRlOjpmbGF0dGVuV2l0aFRyYW5zZm9y
bSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnN5c3RlbVByZXZpZXdJbmZv
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpmaWx0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNhbml0aXplSFRUUEhlYWRl
ckZpZWxkc0FjY29yZGluZ1RvVGFpbnRpbmcpOgorICAgICAgICAqIHJlbmRlcmluZy9QYWludElu
Zm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50SW5mbzo6YXBwbHlUcmFuc2Zvcm0pOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cmVsYXRpdmVQb3NpdGlvbk9mZnNldCBjb25zdCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyR3JpZDo6Y29tcHV0ZUF1dG9SZXBlYXRUcmFja3NDb3VudCBjb25zdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjp1cGRhdGVMYXllclBvc2l0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6cGFpbnRMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0pOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmxheW91dCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdSb290LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxlZ2FjeVJlbmRlclNWR1Jvb3Q6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdDb250YWluZXI6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdGb3JlaWduT2JqZWN0Ojpub2RlQXRGbG9hdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lt
YWdlOjpub2RlQXRGbG9hdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlQ2xpcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZUNsaXBwZXI6OmhpdFRlc3RDbGlwQ29udGVudCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OmNsaXBw
ZWRPdmVyZmxvd1JlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6
YWJzb2x1dGVSZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSb290Ojph
YnNvbHV0ZVF1YWRzIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1No
YXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjpub2RlQXRGbG9hdFBv
aW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6bm9kZUF0RmxvYXRQb2ludCk6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1JlbmRlclN1cHBvcnQ6OmNsaXBDb250ZXh0VG9DU1NDbGlwcGluZ0FyZWEpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcik6CisgICAgICAgICogc3Zn
L1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1h
dGVNb3Rpb25FbGVtZW50OjpjYWxjdWxhdGVUb0F0RW5kT2ZEdXJhdGlvblZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kVG9W
YWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmNhbGN1
bGF0ZUZyb21BbmRCeVZhbHVlcyk6CisgICAgICAgICogc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVG9PVEZGb250Q29udmVydGVyOjpwcm9jZXNz
R2x5cGhFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RvT1RGRm9udENvbnZlcnRlcjo6
U1ZHVG9PVEZGb250Q29udmVydGVyKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9w
ZXJ0eVRyYWl0cy5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8RmxvYXRQ
b2ludD46OmZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8
RmxvYXRSZWN0Pjo6ZnJvbVN0cmluZyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpmcmFtZUlkZW50aWZpZXIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpwYWdlSWRlbnRpZmllciBjb25zdCk6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTY3JpcHRTdG9yYWdlOjpTV1NjcmlwdFN0b3JhZ2UpOgorCiAyMDIyLTAx
LTA1ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJlZmFj
dG9yIGNvbXB1dGVkIHN0eWxlIGNvZGUgZm9yIHRyYW5zaXRpb24tcHJvcGVydHkgYW5kIHRoZSB0
cmFuc2l0aW9uIHNob3J0aGFuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggNDUxMjRjM2NmNDk5ZDMz
OTU0ODc5N2FiZWIyZDY4ZmIwZjQ2OTkyZC4uYzYxNzBlYzBjYzJlMDgzNjk0MTFjZTk2NmZmMGFl
ODZkMTkwYTRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjItMDEt
MDUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRk
IGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgdmFsdWUgb2YgYSBzdGQ6Om9wdGlv
bmFsPFQ+IG9yIGNvbnN0cnVjdHMgVCBpZiBuZWVkZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDg2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBgdmFsdWVPckRlZmF1bHRgIHdoZXJlIGFwcHJv
cHJpYXRlLiBTZWUgV1RGL0NoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICog
cGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbXB1dGVQYXNzRW5jb2RlckltcGwuY3Bw
OgorICAgICAgICAoUEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2RlckltcGw6OnNldEJpbmRH
cm91cCk6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlckJ1
bmRsZUVuY29kZXJJbXBsLmNwcDoKKyAgICAgICAgKFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVF
bmNvZGVySW1wbDo6c2V0QmluZEdyb3VwKToKKyAgICAgICAgKiBwYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXJJbXBsLmNwcDoKKyAgICAgICAgKFBBTDo6V2Vi
R1BVOjpSZW5kZXJQYXNzRW5jb2RlckltcGw6OnNldEJpbmRHcm91cCk6CisKIDIwMjEtMTItMjEg
IFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZv
ciBwcmVtdWx0aXBsaWVkIGFscGhhIGludGVycG9sYXRlZCBncmFkaWVudHMgYW5kIGRlZmF1bHRl
ZCBvZmYgb3B0aW9uIHRvIHVzZSB0aGVtIGZvciBDU1MgR3JhZGllbnRzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGUw
N2U3ZTYwODExMDUyNDYyM2VlNTBhYTNiN2IyOGY0YWIyYzIxNTQuLjFmMzVmODIyMzIxMzkwNDQ2
NTViMzE0OWYxYmU0MWYyYzUwNDI3NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMjIt
MDEtMDUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAg
QWRkIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgdmFsdWUgb2YgYSBzdGQ6Om9w
dGlvbmFsPFQ+IG9yIGNvbnN0cnVjdHMgVCBpZiBuZWVkZWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDg2NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBgdmFsdWVPckRlZmF1bHRgIHdoZXJlIGFw
cHJvcHJpYXRlLiBTZWUgV1RGL0NoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2NoZWR1bGVSZXNv
dXJjZUxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmVuc3VyZVNXU2VydmVyKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpmaWxlVGltZXMpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXIpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvbklu
cHV0U291cmNlVG9TdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9h
cmRQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6Omdl
dFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94
eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6cmVnaXN0cmFibGVEb21haW4gY29uc3QpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3Ry
YXRlZ3k6OmxvYWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5
OjpzY2hlZHVsZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2No
ZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpjb252ZXJ0
RnJvbVBERlZpZXdUb1Jvb3RWaWV3IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2lu
Ojpib3VuZHNPblNjcmVlbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Z2Vv
bWV0cnlEaWRDaGFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlw
dFdvcmxkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEVudGVy
RnVsbHNjcmVlbik6CisKIDIwMjItMDEtMDUgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04oMjg3NTU2KTogRG9tYWluIG5hbWUgbm90IHNo
b3duIGluIEFjdGl2aXR5IE1vbml0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1N0ZExp
YkV4dHJhcy5oIGIvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgKaW5kZXggZTliMzc1NmYy
YjNmZjFhN2ViYzg3NmIwMzMxZmQ4ZTE3ZGFiYWJmYS4uZjA0ZDljODdjYzcyOGM3MDQ2OTI4OTIz
OWFkZmQ4OWRhNmI4ZmNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFz
LmgKKysrIGIvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmgKQEAgLTU5Niw2ICs1OTYsMTEg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgT3B0aW9uYWxUeXBlLCBjbGFzcyBDYWxsYmFjaz4gdHlwZW5h
bWUgT3B0aW9uYWxUeXBlOjp2YWx1ZV90eXAKICAgICByZXR1cm4gb3B0aW9uYWwgPyAqb3B0aW9u
YWwgOiBjYWxsYmFjaygpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBPcHRpb25hbFR5cGU+IGF1
dG8gdmFsdWVPckRlZmF1bHQoT3B0aW9uYWxUeXBlJiYgb3B0aW9uYWwpCit7CisgICAgcmV0dXJu
IHN0ZDo6Zm9yd2FyZDxPcHRpb25hbFR5cGU+KG9wdGlvbmFsKS52YWx1ZV9vcih0eXBlbmFtZSBz
dGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxPcHRpb25hbFR5cGU+Ojp2YWx1ZV90eXBlIHsgfSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiAjZGVmaW5lIFdURk1vdmUodmFsdWUpIHN0ZDo6bW92
ZTxXVEY6OkNoZWNrTW92ZVBhcmFtZXRlcj4odmFsdWUpCkBAIC02MjIsMyArNjI3LDQgQEAgdXNp
bmcgV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mOwogdXNpbmcgV1RGOjpzYWZlQ2FzdDsKIHVzaW5n
IFdURjo6dHJ5QmluYXJ5U2VhcmNoOwogdXNpbmcgV1RGOjp2YWx1ZU9yQ29tcHV0ZTsKK3VzaW5n
IFdURjo6dmFsdWVPckRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1l
bnRIYW5kbGVyLmNwcAppbmRleCBiYTI4NmMyMzVhZmIxNzViMzMxOWMxMDBiOTc3NDNiMjI4YjUw
Y2UxLi5hOGI2MGVlNDc5MjIxNWJkMjc2NjhhYmUxZmQ3NDdmNGU0OTY3NjBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5
UGF5bWVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
cGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHAKQEAgLTc0Miw3ICs3NDIs
NyBAQCB2b2lkIEFwcGxlUGF5UGF5bWVudEhhbmRsZXI6OnZhbGlkYXRlTWVyY2hhbnQoVVJMJiYg
dmFsaWRhdGlvblVSTCkKIAogc3RhdGljIFJlZjxQYXltZW50QWRkcmVzcz4gY29udmVydChjb25z
dCBBcHBsZVBheVBheW1lbnRDb250YWN0JiBjb250YWN0KQogewotICAgIHJldHVybiBQYXltZW50
QWRkcmVzczo6Y3JlYXRlKGNvbnRhY3QuY291bnRyeUNvZGUsIGNvbnRhY3QuYWRkcmVzc0xpbmVz
LnZhbHVlX29yKFZlY3RvcjxTdHJpbmc+KCkpLCBjb250YWN0LmFkbWluaXN0cmF0aXZlQXJlYSwg
Y29udGFjdC5sb2NhbGl0eSwgY29udGFjdC5zdWJMb2NhbGl0eSwgY29udGFjdC5wb3N0YWxDb2Rl
LCBTdHJpbmcoKSwgU3RyaW5nKCksIGNvbnRhY3QubG9jYWxpemVkTmFtZSwgY29udGFjdC5waG9u
ZU51bWJlcik7CisgICAgcmV0dXJuIFBheW1lbnRBZGRyZXNzOjpjcmVhdGUoY29udGFjdC5jb3Vu
dHJ5Q29kZSwgdmFsdWVPckRlZmF1bHQoY29udGFjdC5hZGRyZXNzTGluZXMpLCBjb250YWN0LmFk
bWluaXN0cmF0aXZlQXJlYSwgY29udGFjdC5sb2NhbGl0eSwgY29udGFjdC5zdWJMb2NhbGl0eSwg
Y29udGFjdC5wb3N0YWxDb2RlLCBTdHJpbmcoKSwgU3RyaW5nKCksIGNvbnRhY3QubG9jYWxpemVk
TmFtZSwgY29udGFjdC5waG9uZU51bWJlcik7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CkBA
IC03NTcsNyArNzU3LDcgQEAgdm9pZCBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpkaWRBdXRob3Jp
emVQYXltZW50KGNvbnN0IFBheW1lbnQmIHBheW1lbnQpCiAgICAgQVNTRVJUKG1fdXBkYXRlU3Rh
dGUgPT0gVXBkYXRlU3RhdGU6Ok5vbmUpOwogCiAgICAgYXV0byBhcHBsZVBheVBheW1lbnQgPSBw
YXltZW50LnRvQXBwbGVQYXlQYXltZW50KHZlcnNpb24oKSk7Ci0gICAgYXV0byBzaGlwcGluZ0Nv
bnRhY3QgPSBhcHBsZVBheVBheW1lbnQuc2hpcHBpbmdDb250YWN0LnZhbHVlX29yKEFwcGxlUGF5
UGF5bWVudENvbnRhY3QoKSk7CisgICAgYXV0byBzaGlwcGluZ0NvbnRhY3QgPSB2YWx1ZU9yRGVm
YXVsdChhcHBsZVBheVBheW1lbnQuc2hpcHBpbmdDb250YWN0KTsKICAgICBhdXRvIGRldGFpbHNG
dW5jdGlvbiA9IFthcHBsZVBheVBheW1lbnQgPSBXVEZNb3ZlKGFwcGxlUGF5UGF5bWVudCldKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QpIHsKICAgICAgICAgcmV0dXJu
IHRvSlNEaWN0aW9uYXJ5KGxleGljYWxHbG9iYWxPYmplY3QsIGFwcGxlUGF5UGF5bWVudCk7CiAg
ICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2suY3BwCmluZGV4IDdiYzIxZTU2YWVjYzY1MWFkODg3MGUxNGY1YjdjNTc1
YjQxYTE4YjIuLmFhMDFiMzU3MDEzMTA5YWZlMTZhYTI0ZjA2ZGUzMGFmMjY4MGNjMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFj
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVRyYWNrLmNwcApAQCAtMzg2LDcgKzM4Niw3IEBAIHZvaWQgTWVkaWFTdHJlYW1UcmFjazo6YXBw
bHlDb25zdHJhaW50cyhjb25zdCBzdGQ6Om9wdGlvbmFsPE1lZGlhVHJhY2tDb25zdHJhaW50CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgbV9wcm9taXNlLT5yZXNvbHZl
KCk7Ci0gICAgICAgIG1fY29uc3RyYWludHMgPSBjb25zdHJhaW50cy52YWx1ZV9vcihNZWRpYVRy
YWNrQ29uc3RyYWludHMgeyB9KTsKKyAgICAgICAgbV9jb25zdHJhaW50cyA9IHZhbHVlT3JEZWZh
dWx0KGNvbnN0cmFpbnRzKTsKICAgICB9OwogICAgIG1fcHJpdmF0ZS0+YXBwbHlDb25zdHJhaW50
cyhjcmVhdGVNZWRpYUNvbnN0cmFpbnRzKGNvbnN0cmFpbnRzKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENJY2VDYW5kaWRhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENJY2VDYW5kaWRhdGUuY3BwCmluZGV4IDhkOTViODEyOGE1MDg2ZDczNjg4ZmY5MjNk
MGNhYjQyZmFmNzA2MmYuLjlmNzA2ZGY2ZGY2NWU3Zjk1ODE1NzUxNDAyMjQ4ZTA4YzdhMjNmYTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2Fu
ZGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0lj
ZUNhbmRpZGF0ZS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgRXhjZXB0aW9uT3I8UmVmPFJUQ0ljZUNh
bmRpZGF0ZT4+IFJUQ0ljZUNhbmRpZGF0ZTo6Y3JlYXRlKGNvbnN0IFJUQ0ljZUNhbmRpZGF0ZUkK
ICAgICBpZiAoZGljdGlvbmFyeS5zZHBNaWQuaXNOdWxsKCkgJiYgIWRpY3Rpb25hcnkuc2RwTUxp
bmVJbmRleCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIkNhbmRpZGF0
ZSBtdXN0IG5vdCBoYXZlIGJvdGggbnVsbCBzZHBNaWQgYW5kIHNkcE1MaW5lSW5kZXgiIH07CiAK
LSAgICBhdXRvIGZpZWxkcyA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGRpY3Rpb25hcnkuY2FuZGlk
YXRlKS52YWx1ZV9vcihSVENJY2VDYW5kaWRhdGU6OkZpZWxkcyB7IH0pOworICAgIGF1dG8gZmll
bGRzID0gdmFsdWVPckRlZmF1bHQocGFyc2VJY2VDYW5kaWRhdGVTRFAoZGljdGlvbmFyeS5jYW5k
aWRhdGUpKTsKICAgICBmaWVsZHMudXNlcm5hbWVGcmFnbWVudCA9IGRpY3Rpb25hcnkudXNlcm5h
bWVGcmFnbWVudDsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSVENJY2VDYW5kaWRhdGUoZGlj
dGlvbmFyeS5jYW5kaWRhdGUsIGRpY3Rpb25hcnkuc2RwTWlkLCBkaWN0aW9uYXJ5LnNkcE1MaW5l
SW5kZXgsIFdURk1vdmUoZmllbGRzKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcAppbmRleCA3YTJjOWE3MzQ2YWYx
MGI3ZmVhNzE1NjU5OTE5MTMxMTUzODg4Yjc3Li42ODMyYWNhOTBlZDZkOWViODFhYjlmMzU1OTU5
M2JmNDY0MzBmZDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTFRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcApAQCAtODMsNyArODMsNyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbChjb25zdCBTdHJpbmcmIHNxbFN0YXRlbWVu
dCwgc3RkOjpvcAogICAgIGVsc2UgaWYgKG1fcmVhZE9ubHkpCiAgICAgICAgIHBlcm1pc3Npb25z
IHw9IERhdGFiYXNlQXV0aG9yaXplcjo6UmVhZE9ubHlNYXNrOwogCi0gICAgYXV0byBzdGF0ZW1l
bnQgPSBtYWtlVW5pcXVlPFNRTFN0YXRlbWVudD4obV9kYXRhYmFzZSwgc3FsU3RhdGVtZW50LCBh
cmd1bWVudHMudmFsdWVfb3IoVmVjdG9yPFNRTFZhbHVlPiB7IH0pLCBXVEZNb3ZlKGNhbGxiYWNr
KSwgV1RGTW92ZShjYWxsYmFja0Vycm9yKSwgcGVybWlzc2lvbnMpOworICAgIGF1dG8gc3RhdGVt
ZW50ID0gbWFrZVVuaXF1ZTxTUUxTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbFN0YXRlbWVudCwg
dmFsdWVPckRlZmF1bHQoYXJndW1lbnRzKSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoY2Fs
bGJhY2tFcnJvciksIHBlcm1pc3Npb25zKTsKIAogICAgIGlmIChtX2RhdGFiYXNlLT5kZWxldGVk
KCkpCiAgICAgICAgIHN0YXRlbWVudC0+c2V0RGF0YWJhc2VEZWxldGVkRXJyb3IoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNl
U3BhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZl
cmVuY2VTcGFjZS5jcHAKaW5kZXggMTYxMWZjOWUzZjYzYzkwODFmZDZiYTRkOTQ0MWQ2ODg1M2Ix
NGM3YS4uN2U0YWM0OTU2MDg3NjVkY2VjODgyZjk2YzQ2MjkwZTJkNGNmMmJjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZl
cmVuY2VTcGFjZS5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFdlYlhSQm91bmRlZFJlZmVy
ZW5jZVNwYWNlOjp1cGRhdGVJZk5lZWRlZCgpCiAKICAgICBpZiAoZnJhbWVEYXRhLnN0YWdlUGFy
YW1ldGVycy5ib3VuZHMuc2l6ZSgpID49IE1pbmltdW1Cb3VuZHNWZXJ0aWNlcykgewogICAgICAg
ICAvLyBFYWNoIHBvaW50IGhhcyB0byBtdWx0aXBsaWVkIGJ5IHRoZSBpbnZlcnNlIG9mIG9yaWdp
bk9mZnNldC4KLSAgICAgICAgYXV0byB0cmFuc2Zvcm0gPSBvcmlnaW5PZmZzZXQoKS5yYXdUcmFu
c2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVfb3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CisgICAg
ICAgIGF1dG8gdHJhbnNmb3JtID0gdmFsdWVPckRlZmF1bHQob3JpZ2luT2Zmc2V0KCkucmF3VHJh
bnNmb3JtKCkuaW52ZXJzZSgpKTsKICAgICAgICAgZm9yIChhdXRvJiBwb2ludCA6IGZyYW1lRGF0
YS5zdGFnZVBhcmFtZXRlcnMuYm91bmRzKSB7CiAgICAgICAgICAgICBhdXRvIG1hcHBlZFBvaW50
ID0gdHJhbnNmb3JtLm1hcFBvaW50KEZsb2F0UG9pbnQzRChwb2ludC54KCksIDAuMCwgcG9pbnQu
eSgpKSk7CiAgICAgICAgICAgICBtX2JvdW5kc0dlb21ldHJ5LmFwcGVuZChET01Qb2ludFJlYWRP
bmx5OjpjcmVhdGUocXVhbnRpemUobWFwcGVkUG9pbnQueCgpKSwgcXVhbnRpemUobWFwcGVkUG9p
bnQueSgpKSwgcXVhbnRpemUobWFwcGVkUG9pbnQueigpKSwgMS4wKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbXB1dGVQ
YXNzRW5jb2RlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJH
UFUvSW1wbC9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXJJbXBsLmNwcAppbmRleCBmYTI2Njc1YWMz
NjJjM2ZhMmFlYmU1NjIxODE5YmY4ZGJlMmE5NTg5Li5lZGQ1OWQ2NTk3NmYwNGE3YzFiMzdmZDFh
YmIwOGQ1NGJlNGY3NjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBo
aWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbXB1dGVQYXNzRW5jb2RlckltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tcHV0ZVBh
c3NFbmNvZGVySW1wbC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBDb21wdXRlUGFzc0VuY29k
ZXJJbXBsOjplbmRQYXNzKCkKIHZvaWQgQ29tcHV0ZVBhc3NFbmNvZGVySW1wbDo6c2V0QmluZEdy
b3VwKEluZGV4MzIgaW5kZXgsIGNvbnN0IEJpbmRHcm91cCYgYmluZEdyb3VwLAogICAgIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPEJ1ZmZlckR5bmFtaWNPZmZzZXQ+PiYmIG9mZnNldHMpCiB7Ci0gICAg
YXV0byBiYWNraW5nT2Zmc2V0cyA9IG9mZnNldHMudmFsdWVfb3IoVmVjdG9yPEJ1ZmZlckR5bmFt
aWNPZmZzZXQ+IHsgfSk7CisgICAgYXV0byBiYWNraW5nT2Zmc2V0cyA9IHZhbHVlT3JEZWZhdWx0
KG9mZnNldHMpOwogICAgIHdncHVDb21wdXRlUGFzc0VuY29kZXJTZXRCaW5kR3JvdXAobV9iYWNr
aW5nLCBpbmRleCwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhi
aW5kR3JvdXApLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYmFja2luZ09mZnNldHMuc2l6ZSgpKSwg
YmFja2luZ09mZnNldHMuZGF0YSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJCdW5kbGVFbmNvZGVySW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VVJlbmRlckJ1bmRsZUVuY29kZXJJbXBsLmNwcAppbmRleCBlZjE4YjUwM2VhZDFjNzM4NThkZDMx
Mzg4OTQ3MjA0ZmE5ZWY5NjkwLi4yODkyOWU1MTQ1NGYzZmVhYTYyY2FjZDdlYWVjMDcxYzk2M2Ji
NmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9J
bXBsL1dlYkdQVVJlbmRlckJ1bmRsZUVuY29kZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlckJ1bmRsZUVuY29kZXJJ
bXBsLmNwcApAQCAtOTAsNyArOTAsNyBAQCB2b2lkIFJlbmRlckJ1bmRsZUVuY29kZXJJbXBsOjpk
cmF3SW5kZXhlZEluZGlyZWN0KGNvbnN0IEJ1ZmZlciYgaW5kaXJlY3RCdWZmZXIsCiB2b2lkIFJl
bmRlckJ1bmRsZUVuY29kZXJJbXBsOjpzZXRCaW5kR3JvdXAoSW5kZXgzMiBpbmRleCwgY29uc3Qg
QmluZEdyb3VwJiBiaW5kR3JvdXAsCiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8QnVmZmVyRHlu
YW1pY09mZnNldD4+JiYgZHluYW1pY09mZnNldHMpCiB7Ci0gICAgYXV0byBiYWNraW5nT2Zmc2V0
cyA9IGR5bmFtaWNPZmZzZXRzLnZhbHVlX29yKFZlY3RvcjxCdWZmZXJEeW5hbWljT2Zmc2V0PiB7
IH0pOworICAgIGF1dG8gYmFja2luZ09mZnNldHMgPSB2YWx1ZU9yRGVmYXVsdChkeW5hbWljT2Zm
c2V0cyk7CiAgICAgd2dwdVJlbmRlckJ1bmRsZUVuY29kZXJTZXRCaW5kR3JvdXAobV9iYWNraW5n
LCBpbmRleCwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhiaW5k
R3JvdXApLCBiYWNraW5nT2Zmc2V0cy5zaXplKCksIGJhY2tpbmdPZmZzZXRzLmRhdGEoKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXJJbXBsLmNwcApp
bmRleCA1YTFmOTI0NjZlYmI4MjJmMDc3MTlkZTdkZWI0M2Y4ZjA4M2U4Y2Y3Li5kMmZlNWRmNTI2
Y2MzNjBmN2EzZWQyMzNlMzJmMzRjOTNkMTg2NjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlclBhc3NFbmNvZGVySW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9X
ZWJHUFVSZW5kZXJQYXNzRW5jb2RlckltcGwuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgUmVu
ZGVyUGFzc0VuY29kZXJJbXBsOjpkcmF3SW5kZXhlZEluZGlyZWN0KGNvbnN0IEJ1ZmZlciYgaW5k
aXJlY3RCdWZmZXIsIFNpCiB2b2lkIFJlbmRlclBhc3NFbmNvZGVySW1wbDo6c2V0QmluZEdyb3Vw
KEluZGV4MzIgaW5kZXgsIGNvbnN0IEJpbmRHcm91cCYgYmluZEdyb3VwLAogICAgIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPEJ1ZmZlckR5bmFtaWNPZmZzZXQ+PiYmIGR5bmFtaWNPZmZzZXRzKQogewot
ICAgIGF1dG8gYmFja2luZ09mZnNldHMgPSBkeW5hbWljT2Zmc2V0cy52YWx1ZV9vcihWZWN0b3I8
QnVmZmVyRHluYW1pY09mZnNldD4geyB9KTsKKyAgICBhdXRvIGJhY2tpbmdPZmZzZXRzID0gdmFs
dWVPckRlZmF1bHQoZHluYW1pY09mZnNldHMpOwogICAgIHdncHVSZW5kZXJQYXNzRW5jb2RlclNl
dEJpbmRHcm91cChtX2JhY2tpbmcsIGluZGV4LCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5j
b252ZXJ0VG9CYWNraW5nKGJpbmRHcm91cCksIGJhY2tpbmdPZmZzZXRzLnNpemUoKSwgYmFja2lu
Z09mZnNldHMuZGF0YSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNDJkYWNk
MmRkNWNlM2U1ZjYyMzMzYTIxNjJjYzM3Njc0NmU4ZmI4OS4uMmQ4YjliNWMzMmM3YTAwMzFjMjEz
NWU2ZmQzMjJjYTVmYjNmZDBmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zNTIsOCAr
MzUyLDggQEAKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCiAjZW5kaWYKIAotI2RlZmlu
ZSBET0NVTUVOVF9SRUxFQVNFX0xPRyhjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0coY2hh
bm5lbCwgIiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgbWFp
bj0lZF0gRG9jdW1lbnQ6OiIgZm10LCB0aGlzLCBwYWdlSUQoKS52YWx1ZV9vcihQYWdlSWRlbnRp
ZmllciB7IH0pLnRvVUludDY0KCksIGZyYW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIg
eyB9KS50b1VJbnQ2NCgpLCB0aGlzID09ICZ0b3BEb2N1bWVudCgpLCAjI19fVkFfQVJHU19fKQot
I2RlZmluZSBET0NVTUVOVF9SRUxFQVNFX0xPR19FUlJPUihjaGFubmVsLCBmbXQsIC4uLikgUkVM
RUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgIiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJ
RD0lIiBQUkl1NjQgIiwgbWFpbj0lZF0gRG9jdW1lbnQ6OiIgZm10LCB0aGlzLCBwYWdlSUQoKS52
YWx1ZV9vcihQYWdlSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCksIGZyYW1lSUQoKS52YWx1ZV9v
cihGcmFtZUlkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgpLCB0aGlzID09ICZ0b3BEb2N1bWVudCgp
LCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBET0NVTUVOVF9SRUxFQVNFX0xPRyhjaGFubmVsLCBm
bXQsIC4uLikgUkVMRUFTRV9MT0coY2hhbm5lbCwgIiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwg
ZnJhbWVJRD0lIiBQUkl1NjQgIiwgbWFpbj0lZF0gRG9jdW1lbnQ6OiIgZm10LCB0aGlzLCB2YWx1
ZU9yRGVmYXVsdChwYWdlSUQoKSkudG9VSW50NjQoKSwgdmFsdWVPckRlZmF1bHQoZnJhbWVJRCgp
KS50b1VJbnQ2NCgpLCB0aGlzID09ICZ0b3BEb2N1bWVudCgpLCAjI19fVkFfQVJHU19fKQorI2Rl
ZmluZSBET0NVTUVOVF9SRUxFQVNFX0xPR19FUlJPUihjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFT
RV9MT0dfRVJST1IoY2hhbm5lbCwgIiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0l
IiBQUkl1NjQgIiwgbWFpbj0lZF0gRG9jdW1lbnQ6OiIgZm10LCB0aGlzLCB2YWx1ZU9yRGVmYXVs
dChwYWdlSUQoKSkudG9VSW50NjQoKSwgdmFsdWVPckRlZmF1bHQoZnJhbWVJRCgpKS50b1VJbnQ2
NCgpLCB0aGlzID09ICZ0b3BEb2N1bWVudCgpLCAjI19fVkFfQVJHU19fKQogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRU
aW1lSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5w
dXRUeXBlLmNwcAppbmRleCA2YzM4MWFhNzAxYzk0MDcyNjYxY2UwZTE1MmYyNTkxYjU0NzE0OTkx
Li4xMTE3MDRmYTgxMWEwYTU0ZmU2MmRhNmI0M2IzZTNlN2FlNWMxOWU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCkBAIC01NDcsNyAr
NTQ3LDcgQEAgYm9vbCBCYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGU6OnNldHVwRGF0ZVRpbWVDaG9v
c2VyUGFyYW1ldGVycyhEYXRlVGltZUNob29zZXJQYXIKICAgICBwYXJhbWV0ZXJzLmlzQW5jaG9y
RWxlbWVudFJUTCA9IGNvbXB1dGVkU3R5bGUtPmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246
OlJUTDsKICAgICBwYXJhbWV0ZXJzLnVzZURhcmtBcHBlYXJhbmNlID0gZG9jdW1lbnQudXNlRGFy
a0FwcGVhcmFuY2UoY29tcHV0ZWRTdHlsZSk7CiAKLSAgICBhdXRvIGRhdGUgPSBwYXJzZVRvRGF0
ZUNvbXBvbmVudHMoZWxlbWVudC52YWx1ZSgpKS52YWx1ZV9vcihEYXRlQ29tcG9uZW50cygpKTsK
KyAgICBhdXRvIGRhdGUgPSB2YWx1ZU9yRGVmYXVsdChwYXJzZVRvRGF0ZUNvbXBvbmVudHMoZWxl
bWVudC52YWx1ZSgpKSk7CiAgICAgcGFyYW1ldGVycy5oYXNTZWNvbmRGaWVsZCA9IHNob3VsZEhh
dmVTZWNvbmRGaWVsZChkYXRlKTsKICAgICBwYXJhbWV0ZXJzLmhhc01pbGxpc2Vjb25kRmllbGQg
PSBzaG91bGRIYXZlTWlsbGlzZWNvbmRGaWVsZChkYXRlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBbmNob3JFbGVtZW50LmNwcAppbmRleCAwNDNjMTI1Y2E4YThhMTUzY2FhMGExNWU5ZTRk
NjU2MWE2NmFiNTUyLi5jZTc4NGYwODI5MmUxZjE4ZTFmMmM5ZjMzZmIzMDc0Yzg3MTVlN2U0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcApAQCAtNTEzLDcgKzUx
Myw3IEBAIHZvaWQgSFRNTEFuY2hvckVsZW1lbnQ6OmhhbmRsZUNsaWNrKEV2ZW50JiBldmVudCkK
ICAgICBpZiAoc3lzdGVtUHJldmlld0luZm8uaXNQcmV2aWV3KSB7CiAgICAgICAgIHN5c3RlbVBy
ZXZpZXdJbmZvLmVsZW1lbnQuZWxlbWVudElkZW50aWZpZXIgPSBkb2N1bWVudCgpLmlkZW50aWZp
ZXJGb3JFbGVtZW50KCp0aGlzKTsKICAgICAgICAgc3lzdGVtUHJldmlld0luZm8uZWxlbWVudC5k
b2N1bWVudElkZW50aWZpZXIgPSBkb2N1bWVudCgpLmlkZW50aWZpZXIoKTsKLSAgICAgICAgc3lz
dGVtUHJldmlld0luZm8uZWxlbWVudC53ZWJQYWdlSWRlbnRpZmllciA9IGRvY3VtZW50KCkuZnJh
bWUoKS0+bG9hZGVyKCkucGFnZUlEKCkudmFsdWVfb3IoUGFnZUlkZW50aWZpZXIgeyB9KTsKKyAg
ICAgICAgc3lzdGVtUHJldmlld0luZm8uZWxlbWVudC53ZWJQYWdlSWRlbnRpZmllciA9IHZhbHVl
T3JEZWZhdWx0KGRvY3VtZW50KCkuZnJhbWUoKS0+bG9hZGVyKCkucGFnZUlEKCkpOwogICAgICAg
ICBpZiAoYXV0byogY2hpbGQgPSBmaXJzdEVsZW1lbnRDaGlsZCgpKQogICAgICAgICAgICAgc3lz
dGVtUHJldmlld0luZm8ucHJldmlld1JlY3QgPSBjaGlsZC0+Ym91bmRzSW5Sb290Vmlld1NwYWNl
KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAppbmRleCA2ZGVmZWI4MTJjMzcyMmMzOGVh
MmZjOGQwNzkxZmFlMjliMTYwZDZlLi41NzdkNTVlN2YwNDJhNzg0ODIyMGUzOGFjMzJkMzA2OTgz
NmEzODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcApAQCAtMTE1OCw3ICsxMTU4LDcgQEAgYm9v
bCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjppc1BvaW50SW5QYXRoSW50ZXJuYWwoY29u
c3QgUGF0aCYgcGF0aCwgZG91YmwKICAgICBpZiAoIXN0YXRlLmhhc0ludmVydGlibGVUcmFuc2Zv
cm0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gdHJhbnNmb3JtZWRQb2ludCA9
IHN0YXRlLnRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1h
cFBvaW50KEZsb2F0UG9pbnQoeCwgeSkpOworICAgIGF1dG8gdHJhbnNmb3JtZWRQb2ludCA9IHZh
bHVlT3JEZWZhdWx0KHN0YXRlLnRyYW5zZm9ybS5pbnZlcnNlKCkpLm1hcFBvaW50KEZsb2F0UG9p
bnQoeCwgeSkpOwogICAgIGlmICghc3RkOjppc2Zpbml0ZSh0cmFuc2Zvcm1lZFBvaW50LngoKSkg
fHwgIXN0ZDo6aXNmaW5pdGUodHJhbnNmb3JtZWRQb2ludC55KCkpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKQEAgLTExNzMsNyArMTE3Myw3IEBAIGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZTo6aXNQb2ludEluU3Ryb2tlSW50ZXJuYWwoY29uc3QgUGF0aCYgcGF0aCwgZG91CiAg
ICAgaWYgKCFzdGF0ZS5oYXNJbnZlcnRpYmxlVHJhbnNmb3JtKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBhdXRvIHRyYW5zZm9ybWVkUG9pbnQgPSBzdGF0ZS50cmFuc2Zvcm0uaW52ZXJz
ZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChGbG9hdFBvaW50KHgsIHkp
KTsKKyAgICBhdXRvIHRyYW5zZm9ybWVkUG9pbnQgPSB2YWx1ZU9yRGVmYXVsdChzdGF0ZS50cmFu
c2Zvcm0uaW52ZXJzZSgpKS5tYXBQb2ludChGbG9hdFBvaW50KHgsIHkpKTsKICAgICBpZiAoIXN0
ZDo6aXNmaW5pdGUodHJhbnNmb3JtZWRQb2ludC54KCkpIHx8ICFzdGQ6OmlzZmluaXRlKHRyYW5z
Zm9ybWVkUG9pbnQueSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5l
Qm94QnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5jcHAKaW5kZXggMjlmYTY0YWRiN2FkNzgyZDQ4
OGU4MGJmYWE3ZjVjNjhjMmZmNDg4OC4uMWM4OGYxMDEzOWI5NWE4ZTY0NTdiZGQ4NGIwNTFlMzYy
ZTg1ZDhhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNw
cApAQCAtMTA2LDcgKzEwNiw3IEBAIExpbmVCb3hCdWlsZGVyOjpMaW5lQm94QnVpbGRlcihjb25z
dCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0dGluZ0NvCiBMaW5lQm94QnVp
bGRlcjo6TGluZUJveEFuZEhlaWdodCBMaW5lQm94QnVpbGRlcjo6YnVpbGQoY29uc3QgTGluZUJ1
aWxkZXI6OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCwgc2l6ZV90IGxpbmVJbmRleCkKIHsKICAg
ICBhdXRvJiByb290U3R5bGUgPSBsaW5lSW5kZXggPyByb290Qm94KCkuZmlyc3RMaW5lU3R5bGUo
KSA6IHJvb3RCb3goKS5zdHlsZSgpOwotICAgIGF1dG8gcm9vdElubGluZUJveEFsaWdubWVudE9m
ZnNldCA9IExheW91dDo6aG9yaXpvbnRhbEFsaWdubWVudE9mZnNldChyb290U3R5bGUudGV4dEFs
aWduKCksIGxpbmVDb250ZW50LCByb290U3R5bGUuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKS52
YWx1ZV9vcihJbmxpbmVMYXlvdXRVbml0IHsgfSk7CisgICAgYXV0byByb290SW5saW5lQm94QWxp
Z25tZW50T2Zmc2V0ID0gdmFsdWVPckRlZmF1bHQoTGF5b3V0Ojpob3Jpem9udGFsQWxpZ25tZW50
T2Zmc2V0KHJvb3RTdHlsZS50ZXh0QWxpZ24oKSwgbGluZUNvbnRlbnQsIHJvb3RTdHlsZS5pc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKCkpKTsKICAgICAvLyBGSVhNRTogVGhlIG92ZXJmbG93aW5nIGhh
bmdpbmcgY29udGVudCBzaG91bGQgYmUgcGFydCBvZiB0aGUgaW5rIG92ZXJmbG93LiAgCiAgICAg
YXV0byBsaW5lQm94ID0gTGluZUJveCB7IHJvb3RCb3goKSwgcm9vdElubGluZUJveEFsaWdubWVu
dE9mZnNldCwgbGluZUNvbnRlbnQuY29udGVudExvZ2ljYWxXaWR0aCAtIGxpbmVDb250ZW50Lmhh
bmdpbmdDb250ZW50V2lkdGgsIGxpbmVJbmRleCwgbGluZUNvbnRlbnQubm9uU3Bhbm5pbmdJbmxp
bmVMZXZlbEJveENvdW50IH07CiAgICAgYXV0byBsaW5lQm94TG9naWNhbEhlaWdodCA9IGNvbnN0
cnVjdEFuZEFsaWduSW5saW5lTGV2ZWxCb3hlcyhsaW5lQm94LCBsaW5lQ29udGVudCwgbGluZUlu
ZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2Fs
QWxpZ25lci5jcHAKaW5kZXggZGVmMGE1ODdkZmNmNjAyNWVkOGE2MmMyOWU0Nzk5NzFmNjE0NGEw
Ny4uNmM4NTRlZDM0NmIzMjE3ZDc0MjU1NDU5N2EyNGQzYjJkNzY0ZGFmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZUJveFZlcnRpY2FsQWxpZ25lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5jcHAKQEAg
LTE3Nyw3ICsxNzcsNyBAQCBJbmxpbmVMYXlvdXRVbml0IExpbmVCb3hWZXJ0aWNhbEFsaWduZXI6
OmNvbXB1dGVMaW5lQm94TG9naWNhbEhlaWdodChMaW5lQm94JiBsaQogICAgICAgICBjYXNlIFZl
cnRpY2FsQWxpZ246OlRleHRCb3R0b206IHsKICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0ZXh0
LWJvdHRvbSBhbGlnbnMgd2l0aCB0aGUgaW5saW5lIGJveCdzIGZvbnQgbWV0cmljcyBib3R0b20g
KGRlc2NlbnQpIGFuZCBub3QgdGhlIGxheW91dCBib3VuZHMgYm90dG9tLgogICAgICAgICAgICAg
YXV0byBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3VuZHMgPSBwYXJlbnRJbmxpbmVCb3gubGF5b3V0
Qm91bmRzKCk7Ci0gICAgICAgICAgICBhdXRvIHBhcmVudElubGluZUJveExvZ2ljYWxCb3R0b20g
PSBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3VuZHMuaGVpZ2h0KCkgLSBwYXJlbnRJbmxpbmVCb3hM
YXlvdXRCb3VuZHMuZGVzY2VudCArIHBhcmVudElubGluZUJveC5kZXNjZW50KCkudmFsdWVfb3Io
SW5saW5lTGF5b3V0VW5pdCgpKTsKKyAgICAgICAgICAgIGF1dG8gcGFyZW50SW5saW5lQm94TG9n
aWNhbEJvdHRvbSA9IHBhcmVudElubGluZUJveExheW91dEJvdW5kcy5oZWlnaHQoKSAtIHBhcmVu
dElubGluZUJveExheW91dEJvdW5kcy5kZXNjZW50ICsgdmFsdWVPckRlZmF1bHQocGFyZW50SW5s
aW5lQm94LmRlc2NlbnQoKSk7CiAgICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5l
Qm94TG9naWNhbEJvdHRvbSAtIGlubGluZUxldmVsQm94LmxheW91dEJvdW5kcygpLmhlaWdodCgp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTIwOCw3ICsyMDgsNyBAQCBJbmxp
bmVMYXlvdXRVbml0IExpbmVCb3hWZXJ0aWNhbEFsaWduZXI6OmNvbXB1dGVMaW5lQm94TG9naWNh
bEhlaWdodChMaW5lQm94JiBsaQogICAgIC8vIFRoZSBsaW5lIGJveCBoZWlnaHQgY29tcHV0YXRp
b24gaXMgYXMgZm9sbG93czoKICAgICAvLyAxLiBTdHJldGNoIHRoZSBsaW5lIGJveCB3aXRoIHRo
ZSBub24tbGluZS1ib3ggcmVsYXRpdmUgYWxpZ25lZCBpbmxpbmUgYm94IGFic29sdXRlIHRvcCBh
bmQgYm90dG9tIHZhbHVlcy4KICAgICAvLyAyLiBDaGVjayBpZiB0aGUgbGluZSBib3ggcmVsYXRp
dmUgYWxpZ25lZCBpbmxpbmUgYm94ZXMgKHRvcCwgYm90dG9tIGV0YykgaGF2ZSBlbm91Z2ggcm9v
bSBhbmQgc3RyZXRjaCB0aGUgbGluZSBib3ggZnVydGhlciBpZiBuZWVkZWQuCi0gICAgYXV0byBs
aW5lQm94TG9naWNhbEhlaWdodCA9IG1heGltdW1Mb2dpY2FsQm90dG9tLnZhbHVlX29yKElubGlu
ZUxheW91dFVuaXQoKSkgLSBtaW5pbXVtTG9naWNhbFRvcC52YWx1ZV9vcihJbmxpbmVMYXlvdXRV
bml0KCkpOworICAgIGF1dG8gbGluZUJveExvZ2ljYWxIZWlnaHQgPSB2YWx1ZU9yRGVmYXVsdCht
YXhpbXVtTG9naWNhbEJvdHRvbSkgLSB2YWx1ZU9yRGVmYXVsdChtaW5pbXVtTG9naWNhbFRvcCk7
CiAgICAgZm9yIChhdXRvKiBsaW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveCA6IGxpbmVCb3hS
ZWxhdGl2ZUlubGluZUxldmVsQm94ZXMpIHsKICAgICAgICAgaWYgKCFmb3JtYXR0aW5nR2VvbWV0
cnkuaW5saW5lTGV2ZWxCb3hBZmZlY3RzTGluZUJveCgqbGluZUJveFJlbGF0aXZlSW5saW5lTGV2
ZWxCb3gsIGxpbmVCb3gpKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGlu
Z0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90
YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCA4MjAyM2U3NTU2YWI2MGU1OGQ0
NWY3MjY5ZWM1ZTljM2NmZjYyMjQzLi40YjczNWQwZWI1YWIyNWQwOTEzMDYwNjNlMDgyOThlZDRm
NTY4MWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5j
cHAKQEAgLTEyMyw4ICsxMjMsOCBAQCB2b2lkIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OnNldFVz
ZWRHZW9tZXRyeUZvckNlbGxzKExheW91dFVuaXQgYXZhaWxhYmxlSG9yaXpvbgogCiAgICAgICAg
ICAgICAvLyBGSVhNRTogRmluZCBvdXQgaWYgaXQgaXMgb2sgdG8gdXNlIHRoZSByZWd1bGFyIHBh
ZGRpbmcgaGVyZSB0byBhbGlnbiB0aGUgY29udGVudCBib3ggaW5zaWRlIGEgdGFsbCBjZWxsIG9y
IHdlIG5lZWQgdG8KICAgICAgICAgICAgIC8vIHVzZSBzb21lIGtpbmQgb2YgaW50cmluc2ljIHBh
ZGRpbmcgc2ltaWxhciB0byBSZW5kZXJUYWJsZUNlbGwuCi0gICAgICAgICAgICBhdXRvIHBhZGRp
bmdUb3AgPSBjZWxsQm94R2VvbWV0cnkucGFkZGluZ0JlZm9yZSgpLnZhbHVlX29yKExheW91dFVu
aXQgeyB9KTsKLSAgICAgICAgICAgIGF1dG8gcGFkZGluZ0JvdHRvbSA9IGNlbGxCb3hHZW9tZXRy
eS5wYWRkaW5nQWZ0ZXIoKS52YWx1ZV9vcihMYXlvdXRVbml0IHsgfSk7CisgICAgICAgICAgICBh
dXRvIHBhZGRpbmdUb3AgPSB2YWx1ZU9yRGVmYXVsdChjZWxsQm94R2VvbWV0cnkucGFkZGluZ0Jl
Zm9yZSgpKTsKKyAgICAgICAgICAgIGF1dG8gcGFkZGluZ0JvdHRvbSA9IHZhbHVlT3JEZWZhdWx0
KGNlbGxCb3hHZW9tZXRyeS5wYWRkaW5nQWZ0ZXIoKSk7CiAgICAgICAgICAgICBhdXRvIGludHJp
bnNpY1BhZGRpbmdUb3AgPSBMYXlvdXRVbml0IHsgfTsKICAgICAgICAgICAgIGF1dG8gaW50cmlu
c2ljUGFkZGluZ0JvdHRvbSA9IExheW91dFVuaXQgeyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCA2YmYzYWMyOTdlYzZiMjYzYTA3ODY0MGJjZjNhZDU3
NzlkYjBmZWRiLi5hMGQ2OGE3NzQ1ZmQxNTJhYzgxNTVkZTBhZTgxZjMwYThlMTMyZWMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTEyOCw4ICsxMjgsOCBA
QAogI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2VuZGlmCiAKLSNkZWZpbmUg
UEFHRV9JRCAoKG1fZnJhbWUgPyBtX2ZyYW1lLT5wYWdlSUQoKS52YWx1ZV9vcihQYWdlSWRlbnRp
ZmllcigpKSA6IFBhZ2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCi0jZGVmaW5lIEZSQU1FX0lE
ICgobV9mcmFtZSA/IG1fZnJhbWUtPmZyYW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIo
KSkgOiBGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKKyNkZWZpbmUgUEFHRV9JRCAoKG1f
ZnJhbWUgPyB2YWx1ZU9yRGVmYXVsdChtX2ZyYW1lLT5wYWdlSUQoKSkgOiBQYWdlSWRlbnRpZmll
cigpKS50b1VJbnQ2NCgpKQorI2RlZmluZSBGUkFNRV9JRCAoKG1fZnJhbWUgPyB2YWx1ZU9yRGVm
YXVsdChtX2ZyYW1lLT5mcmFtZUlEKCkpIDogRnJhbWVJZGVudGlmaWVyKCkpLnRvVUludDY0KCkp
CiAjZGVmaW5lIElTX01BSU5fRlJBTUUgKG1fZnJhbWUgPyBtX2ZyYW1lLT5pc01haW5GcmFtZSgp
IDogZmFsc2UpCiAjZGVmaW5lIERPQ1VNRU5UTE9BREVSX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBS
RUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUi
IFBSSXU2NCAiLCBtYWluPSVkXSBEb2N1bWVudExvYWRlcjo6IiBmbXQsIHRoaXMsIFBBR0VfSUQs
IEZSQU1FX0lELCBJU19NQUlOX0ZSQU1FLCAjI19fVkFfQVJHU19fKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBmZGM5N2RjNDYyYzg3NTI2YWExODhmNzk2OGQ2MGEw
YzgzZDY4MGQ5Li45NGFhZGYwZjZkZDA0ZDQyZGEzYjhlMTg2ZDMyZDdjMTRmNzNlMTRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTE1Myw4ICsxNTMsOCBAQAogI2lu
Y2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2VuZGlmCiAKLSNkZWZpbmUgUEFH
RV9JRCAoKHBhZ2VJRCgpLnZhbHVlX29yKFBhZ2VJZGVudGlmaWVyKCkpKS50b1VJbnQ2NCgpKQot
I2RlZmluZSBGUkFNRV9JRCAoKGZyYW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIoKSkp
LnRvVUludDY0KCkpCisjZGVmaW5lIFBBR0VfSUQgKHZhbHVlT3JEZWZhdWx0KHBhZ2VJRCgpKS50
b1VJbnQ2NCgpKQorI2RlZmluZSBGUkFNRV9JRCAodmFsdWVPckRlZmF1bHQoZnJhbWVJRCgpKS50
b1VJbnQ2NCgpKQogI2RlZmluZSBGUkFNRUxPQURFUl9SRUxFQVNFX0xPRyhjaGFubmVsLCBmbXQs
IC4uLikgUkVMRUFTRV9MT0coY2hhbm5lbCwgIiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwgZnJh
bWVJRD0lIiBQUkl1NjQgIiwgbWFpbj0lZF0gRnJhbWVMb2FkZXI6OiIgZm10LCB0aGlzLCBQQUdF
X0lELCBGUkFNRV9JRCwgbV9mcmFtZS5pc01haW5GcmFtZSgpLCAjI19fVkFfQVJHU19fKQogI2Rl
ZmluZSBGUkFNRUxPQURFUl9SRUxFQVNFX0xPR19FUlJPUihjaGFubmVsLCBmbXQsIC4uLikgUkVM
RUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgIiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJ
RD0lIiBQUkl1NjQgIiwgbWFpbj0lZF0gRnJhbWVMb2FkZXI6OiIgZm10LCB0aGlzLCBQQUdFX0lE
LCBGUkFNRV9JRCwgbV9mcmFtZS5pc01haW5GcmFtZSgpLCAjI19fVkFfQVJHU19fKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKaW5kZXggZDA4MDU3OTVhZjIxZDM5ZmM2
ODU4ZDRhYzAxNjg3NDVmMDExZmVjNC4uYzNmYmI1Njk5OTlhMDY2NzE4OGVhYmUxYTQ2MGU2ZjA3
NjY4NGYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcApAQCAtNTQs
OCArNTQsOCBAQAogI2luY2x1ZGUgIlF1aWNrTG9vay5oIgogI2VuZGlmCiAKLSNkZWZpbmUgUEFH
RV9JRCAobV9mcmFtZS5sb2FkZXIoKS5wYWdlSUQoKS52YWx1ZV9vcihQYWdlSWRlbnRpZmllcigp
KS50b1VJbnQ2NCgpKQotI2RlZmluZSBGUkFNRV9JRCAobV9mcmFtZS5sb2FkZXIoKS5mcmFtZUlE
KCkudmFsdWVfb3IoRnJhbWVJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCisjZGVmaW5lIFBBR0Vf
SUQgKHZhbHVlT3JEZWZhdWx0KG1fZnJhbWUubG9hZGVyKCkucGFnZUlEKCkpLnRvVUludDY0KCkp
CisjZGVmaW5lIEZSQU1FX0lEICh2YWx1ZU9yRGVmYXVsdChtX2ZyYW1lLmxvYWRlcigpLmZyYW1l
SUQoKSkudG9VSW50NjQoKSkKICNkZWZpbmUgUE9MSUNZQ0hFQ0tFUl9SRUxFQVNFX0xPRyhmbXQs
IC4uLikgUkVMRUFTRV9MT0coTG9hZGluZywgIiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwgZnJh
bWVJRD0lIiBQUkl1NjQgIl0gUG9saWN5Q2hlY2tlcjo6IiBmbXQsIHRoaXMsIFBBR0VfSUQsIEZS
QU1FX0lELCAjI19fVkFfQVJHU19fKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCA2ZGViYjI1ODhhM2U4MmIyMWM2MWQ3
ZThmMzZlNGY0YmJiYTI1ZTYwLi5kZDI2YjNlMzNlODdjZDcyNjk3YzkwNTExNmZiNDg2YWMzNDI1
ZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTY0LDgg
KzY0LDggQEAKICNlbmRpZgogCiAjdW5kZWYgUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0cKLSNk
ZWZpbmUgUEFHRV9JRCAoKGZyYW1lKCkgPyBmcmFtZSgpLT5wYWdlSUQoKS52YWx1ZV9vcihQYWdl
SWRlbnRpZmllcigpKSA6IFBhZ2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCi0jZGVmaW5lIEZS
QU1FX0lEICgoZnJhbWUoKSA/IGZyYW1lKCktPmZyYW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50
aWZpZXIoKSkgOiBGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKKyNkZWZpbmUgUEFHRV9J
RCAoKGZyYW1lKCkgPyB2YWx1ZU9yRGVmYXVsdChmcmFtZSgpLT5wYWdlSUQoKSkgOiBQYWdlSWRl
bnRpZmllcigpKS50b1VJbnQ2NCgpKQorI2RlZmluZSBGUkFNRV9JRCAoKGZyYW1lKCkgPyB2YWx1
ZU9yRGVmYXVsdChmcmFtZSgpLT5mcmFtZUlEKCkpIDogRnJhbWVJZGVudGlmaWVyKCkpLnRvVUlu
dDY0KCkpCiAjZGVmaW5lIFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxF
QVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBS
SXU2NCAiLCBmcmFtZUxvYWRlcj0lcCwgcmVzb3VyY2VJRD0lIiBQUkl1NjQgIl0gUmVzb3VyY2VM
b2FkZXI6OiIgZm10LCB0aGlzLCBQQUdFX0lELCBGUkFNRV9JRCwgZnJhbWVMb2FkZXIoKSwgaWRl
bnRpZmllcigpLnRvVUludDY0KCksICMjX19WQV9BUkdTX18pCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDM3
ZDBiYjgyMWFiZDg2YTliNTYwNmUxMjdlZmM5NDEyYTUxYmIxYTkuLmM0YjA1MDQ2Y2EzYzVhZmZm
ZDI1YzI4Y2M0YWNhYzE1OWYyMzEyZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcApAQCAtNjksOCArNjksOCBAQAogCiAjdW5kZWYgU1VCUkVTT1VSQ0VM
T0FERVJfUkVMRUFTRV9MT0cKICN1bmRlZiBTVUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPR19F
UlJPUgotI2RlZmluZSBQQUdFX0lEICgoZnJhbWUoKSA/IGZyYW1lKCktPnBhZ2VJRCgpLnZhbHVl
X29yKFBhZ2VJZGVudGlmaWVyKCkpIDogUGFnZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKLSNk
ZWZpbmUgRlJBTUVfSUQgKChmcmFtZSgpID8gZnJhbWUoKS0+ZnJhbWVJRCgpLnZhbHVlX29yKEZy
YW1lSWRlbnRpZmllcigpKSA6IEZyYW1lSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQorI2RlZmlu
ZSBQQUdFX0lEICgoZnJhbWUoKSA/IHZhbHVlT3JEZWZhdWx0KGZyYW1lKCktPnBhZ2VJRCgpKSA6
IFBhZ2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCisjZGVmaW5lIEZSQU1FX0lEICgoZnJhbWUo
KSA/IHZhbHVlT3JEZWZhdWx0KGZyYW1lKCktPmZyYW1lSUQoKSkgOiBGcmFtZUlkZW50aWZpZXIo
KSkudG9VSW50NjQoKSkKICNpZiBSRUxFQVNFX0xPR19ESVNBQkxFRAogI2RlZmluZSBTVUJSRVNP
VVJDRUxPQURFUl9SRUxFQVNFX0xPRyhmbXQsIC4uLikgVU5VU0VEX1ZBUklBQkxFKHRoaXMpCiAj
ZGVmaW5lIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HX0VSUk9SKGZtdCwgLi4uKSBVTlVT
RURfVkFSSUFCTEUodGhpcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuY3BwCmluZGV4IDlkZTBhMDRjZDVlYzVmM2ZhZDJmYjE2ZDdiMzIyYzg1OGEzOGE2
YjIuLmE2OWMyMmM2ZmYyOWE4MWI5ODBhNDUwMTc2ZWVjY2MyYWRhM2IwNTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtNjQsOCArNjQs
OCBAQAogI2VuZGlmCiAKICN1bmRlZiBDQUNIRURSRVNPVVJDRV9SRUxFQVNFX0xPRwotI2RlZmlu
ZSBQQUdFX0lEKGZyYW1lKSAoZnJhbWUucGFnZUlEKCkudmFsdWVfb3IoUGFnZUlkZW50aWZpZXIo
KSkudG9VSW50NjQoKSkKLSNkZWZpbmUgRlJBTUVfSUQoZnJhbWUpIChmcmFtZS5mcmFtZUlEKCku
dmFsdWVfb3IoRnJhbWVJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCisjZGVmaW5lIFBBR0VfSUQo
ZnJhbWUpICh2YWx1ZU9yRGVmYXVsdChmcmFtZS5wYWdlSUQoKSkudG9VSW50NjQoKSkKKyNkZWZp
bmUgRlJBTUVfSUQoZnJhbWUpICh2YWx1ZU9yRGVmYXVsdChmcmFtZS5mcmFtZUlEKCkpLnRvVUlu
dDY0KCkpCiAjZGVmaW5lIENBQ0hFRFJFU09VUkNFX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxF
QVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBDYWNoZWRSZXNvdXJjZTo6IiBmbXQsIHRoaXMsICMjX19W
QV9BUkdTX18pCiAjZGVmaW5lIENBQ0hFRFJFU09VUkNFX1JFTEVBU0VfTE9HX1dJVEhfRlJBTUUo
Zm10LCBmcmFtZSwgLi4uKSBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBbcGFnZUlEPSUiIFBS
SXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiXSBDYWNoZWRSZXNvdXJjZTo6IiBmbXQsIHRoaXMs
IFBBR0VfSUQoZnJhbWUpLCBGUkFNRV9JRChmcmFtZSksICMjX19WQV9BUkdTX18pCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3Bw
CmluZGV4IDg0YzAxNGJkNjQzMGExODJjY2ZkN2Y0MmM4NWZhMzhiYjdjNDBhZjQuLmJlNTRlODBh
ZDhjMDg1MTliN2Y3ZmE5NzNlNWY4N2I1MGU5MzBlNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtOTYsOCArOTYs
OCBAQAogI2VuZGlmCiAKICN1bmRlZiBDQUNIRURSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRwot
I2RlZmluZSBQQUdFX0lEKGZyYW1lKSAoZnJhbWUucGFnZUlEKCkudmFsdWVfb3IoUGFnZUlkZW50
aWZpZXIoKSkudG9VSW50NjQoKSkKLSNkZWZpbmUgRlJBTUVfSUQoZnJhbWUpIChmcmFtZS5mcmFt
ZUlEKCkudmFsdWVfb3IoRnJhbWVJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCisjZGVmaW5lIFBB
R0VfSUQoZnJhbWUpICh2YWx1ZU9yRGVmYXVsdChmcmFtZS5wYWdlSUQoKSkudG9VSW50NjQoKSkK
KyNkZWZpbmUgRlJBTUVfSUQoZnJhbWUpICh2YWx1ZU9yRGVmYXVsdChmcmFtZS5mcmFtZUlEKCkp
LnRvVUludDY0KCkpCiAjZGVmaW5lIENBQ0hFRFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKGZt
dCwgLi4uKSBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCiAjZGVmaW5lIENBQ0hFRFJFU09VUkNFTE9BREVS
X1JFTEVBU0VfTE9HX1dJVEhfRlJBTUUoZm10LCBmcmFtZSwgLi4uKSBSRUxFQVNFX0xPRyhOZXR3
b3JrLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiXSBDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6IiBmbXQsIHRoaXMsIFBBR0VfSUQoZnJhbWUpLCBGUkFNRV9JRChm
cmFtZSksICMjX19WQV9BUkdTX18pCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApp
bmRleCA4ZTRlMTAwYTQ2ZTM5ODVhYzNhY2UwMTQzMjhlZThhOGIwYTliMTUyLi5mMWRiNTIwODQ2
NTQ1NjE2NWVmN2RmNmEzYzNiYzg1ZDkzOWE2YTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCkBAIC05NDcsNyArOTQ3LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZVNl
bGVjdGlvbkZvck1vdXNlRHJhZygpCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0ZXhwciBP
cHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFR5cGUgeyAgSGl0VGVzdFJlcXVlc3Q6
OlR5cGU6OlJlYWRPbmx5LCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6QWN0aXZlLCBIaXRUZXN0UmVx
dWVzdDo6VHlwZTo6TW92ZSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRpc2FsbG93VXNlckFnZW50
U2hhZG93Q29udGVudCB9OwotICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHZpZXctPndpbmRvd1Rv
Q29udGVudHMobV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uLnZhbHVlX29yKEludFBvaW50KCkpKSk7
CisgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQodmlldy0+d2luZG93VG9Db250ZW50cyh2YWx1ZU9y
RGVmYXVsdChtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24pKSk7CiAgICAgZG9jdW1lbnQtPmhpdFRl
c3QoaGl0VHlwZSwgcmVzdWx0KTsKICAgICB1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURyYWcocmVz
dWx0KTsKIH0KQEAgLTEzMDcsNyArMTMwNyw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpsb2dpY2Fs
U2Nyb2xsUmVjdXJzaXZlbHkoU2Nyb2xsTG9naWNhbERpcmVjdGlvbiBkaXJlY3Rpb24sIFNjCiAK
IEludFBvaW50IEV2ZW50SGFuZGxlcjo6bGFzdEtub3duTW91c2VQb3NpdGlvbigpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fbGFzdEtub3duTW91c2VQb3NpdGlvbi52YWx1ZV9vcihJbnRQb2ludCgp
KTsKKyAgICByZXR1cm4gdmFsdWVPckRlZmF1bHQobV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uKTsK
IH0KIAogUmVmUHRyPEZyYW1lPiBFdmVudEhhbmRsZXI6OnN1YmZyYW1lRm9ySGl0VGVzdFJlc3Vs
dChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBoaXRUZXN0UmVzdWx0KQpAQCAt
MTk2MCw3ICsxOTYwLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTW92ZUV2ZW50
KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxhdGZvcm1Nb3VzZUUKICNlbmRpZgogCiAgICAg
aWYgKG1fc3ZnUGFuKSB7Ci0gICAgICAgIGRvd25jYXN0PFNWR0RvY3VtZW50PigqbV9mcmFtZS5k
b2N1bWVudCgpKS51cGRhdGVQYW4obV9mcmFtZS52aWV3KCktPndpbmRvd1RvQ29udGVudHMobV9s
YXN0S25vd25Nb3VzZVBvc2l0aW9uLnZhbHVlX29yKEludFBvaW50KCkpKSk7CisgICAgICAgIGRv
d25jYXN0PFNWR0RvY3VtZW50PigqbV9mcmFtZS5kb2N1bWVudCgpKS51cGRhdGVQYW4obV9mcmFt
ZS52aWV3KCktPndpbmRvd1RvQ29udGVudHModmFsdWVPckRlZmF1bHQobV9sYXN0S25vd25Nb3Vz
ZVBvc2l0aW9uKSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTIxMjYsNyAr
MjEyNiw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmVudChjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3JtTW91CiAKICAgICBpZiAobV9zdmdQYW4pIHsK
ICAgICAgICAgbV9zdmdQYW4gPSBmYWxzZTsKLSAgICAgICAgZG93bmNhc3Q8U1ZHRG9jdW1lbnQ+
KCptX2ZyYW1lLmRvY3VtZW50KCkpLnVwZGF0ZVBhbihtX2ZyYW1lLnZpZXcoKS0+d2luZG93VG9D
b250ZW50cyhtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24udmFsdWVfb3IoSW50UG9pbnQoKSkpKTsK
KyAgICAgICAgZG93bmNhc3Q8U1ZHRG9jdW1lbnQ+KCptX2ZyYW1lLmRvY3VtZW50KCkpLnVwZGF0
ZVBhbihtX2ZyYW1lLnZpZXcoKS0+d2luZG93VG9Db250ZW50cyh2YWx1ZU9yRGVmYXVsdChtX2xh
c3RLbm93bk1vdXNlUG9zaXRpb24pKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApA
QCAtMjg2NCw3ICsyODY0LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnByb2Nlc3NXaGVlbEV2ZW50
Rm9yU2Nyb2xsU25hcChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBjb24KICAgICAKIEludFBv
aW50IEV2ZW50SGFuZGxlcjo6dGFyZ2V0UG9zaXRpb25JbldpbmRvd0ZvclNlbGVjdGlvbkF1dG9z
Y3JvbGwoKSBjb25zdAogewotICAgIHJldHVybiBtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24udmFs
dWVfb3IoSW50UG9pbnQoKSk7CisgICAgcmV0dXJuIHZhbHVlT3JEZWZhdWx0KG1fbGFzdEtub3du
TW91c2VQb3NpdGlvbik7CiB9CiAgICAgCiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPU19GQU1JTFkp
CkBAIC0zMzkxLDcgKzMzOTEsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hGYWtlTW91
c2VNb3ZlRXZlbnRTb29uSW5RdWFkKGNvbnN0IEZsb2F0UXVhZCYgcXVhZCkKICAgICBpZiAoIXZp
ZXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghcXVhZC5jb250YWluc1BvaW50KHZpZXct
PndpbmRvd1RvQ29udGVudHMobV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uLnZhbHVlX29yKEludFBv
aW50KCkpKSkpCisgICAgaWYgKCFxdWFkLmNvbnRhaW5zUG9pbnQodmlldy0+d2luZG93VG9Db250
ZW50cyh2YWx1ZU9yRGVmYXVsdChtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24pKSkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGRpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50U29vbigpOwpAQCAtMzQy
MCw3ICszNDIwLDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmZha2VNb3VzZU1vdmVFdmVudFRpbWVy
RmlyZWQoKQogICAgIGJvb2wgYWx0S2V5OwogICAgIGJvb2wgbWV0YUtleTsKICAgICBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQ6OmdldEN1cnJlbnRNb2RpZmllclN0YXRlKHNoaWZ0S2V5LCBjdHJsS2V5
LCBhbHRLZXksIG1ldGFLZXkpOwotICAgIFBsYXRmb3JtTW91c2VFdmVudCBmYWtlTW91c2VNb3Zl
RXZlbnQobV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uLnZhbHVlX29yKEludFBvaW50KCkpLCBtX2xh
c3RLbm93bk1vdXNlR2xvYmFsUG9zaXRpb24sIE5vQnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3Vz
ZU1vdmVkLCAwLCBzaGlmdEtleSwgY3RybEtleSwgYWx0S2V5LCBtZXRhS2V5LCBXYWxsVGltZTo6
bm93KCksIDAsIE5vVGFwKTsKKyAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNlTW92ZUV2
ZW50KHZhbHVlT3JEZWZhdWx0KG1fbGFzdEtub3duTW91c2VQb3NpdGlvbiksIG1fbGFzdEtub3du
TW91c2VHbG9iYWxQb3NpdGlvbiwgTm9CdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQs
IDAsIHNoaWZ0S2V5LCBjdHJsS2V5LCBhbHRLZXksIG1ldGFLZXksIFdhbGxUaW1lOjpub3coKSwg
MCwgTm9UYXApOwogICAgIG1vdXNlTW92ZWQoZmFrZU1vdXNlTW92ZUV2ZW50KTsKIH0KICNlbmRp
ZiAvLyAhRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCkBAIC0zNDQ2LDcgKzM0NDYsNyBAQCB2b2lk
IEV2ZW50SGFuZGxlcjo6aG92ZXJUaW1lckZpcmVkKCkKIAogICAgIGlmIChSZWZQdHIgZG9jdW1l
bnQgPSBtX2ZyYW1lLmRvY3VtZW50KCkpIHsKICAgICAgICAgaWYgKFJlZlB0ciB2aWV3ID0gbV9m
cmFtZS52aWV3KCkpIHsKLSAgICAgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHZpZXctPndp
bmRvd1RvQ29udGVudHMobV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uLnZhbHVlX29yKEludFBvaW50
KCkpKSk7CisgICAgICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCh2aWV3LT53aW5kb3dUb0Nv
bnRlbnRzKHZhbHVlT3JEZWZhdWx0KG1fbGFzdEtub3duTW91c2VQb3NpdGlvbikpKTsKICAgICAg
ICAgICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlR5cGU+IGhpdFR5cGUg
eyBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6TW92ZSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkRpc2Fs
bG93VXNlckFnZW50U2hhZG93Q29udGVudCB9OwogICAgICAgICAgICAgZG9jdW1lbnQtPmhpdFRl
c3QoaGl0VHlwZSwgcmVzdWx0KTsKICAgICAgICAgICAgIGRvY3VtZW50LT51cGRhdGVIb3ZlckFj
dGl2ZVN0YXRlKGhpdFR5cGUsIHJlc3VsdC50YXJnZXRFbGVtZW50KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCmluZGV4IDA2MzdmMmQ5YTc5YzBmOTQxNzIzZDcxZGNjMTcxMzZmNGI3NWFj
ODQuLjhkYzc0MGJlMmI0MGUwNjE5YzNlOWFmZGY1YmQ3YmUyZDEyMDA5NzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKQEAgLTE0MCw4ICsxNDAsOCBAQAogI2luY2x1ZGUgIkxheW91dENv
bnRleHQuaCIKICNlbmRpZgogCi0jZGVmaW5lIFBBR0VfSUQgZnJhbWUoKS5wYWdlSUQoKS52YWx1
ZV9vcihQYWdlSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpCi0jZGVmaW5lIEZSQU1FX0lEIGZyYW1l
KCkuZnJhbWVJRCgpLnZhbHVlX29yKEZyYW1lSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpCisjZGVm
aW5lIFBBR0VfSUQgdmFsdWVPckRlZmF1bHQoZnJhbWUoKS5wYWdlSUQoKSkudG9VSW50NjQoKQor
I2RlZmluZSBGUkFNRV9JRCB2YWx1ZU9yRGVmYXVsdChmcmFtZSgpLmZyYW1lSUQoKSkudG9VSW50
NjQoKQogI2RlZmluZSBGUkFNRVZJRVdfUkVMRUFTRV9MT0coY2hhbm5lbCwgZm10LCAuLi4pIFJF
TEVBU0VfTE9HKGNoYW5uZWwsICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIg
UFJJdTY0ICIsIG1haW49JWRdIEZyYW1lVmlldzo6IiBmbXQsIHRoaXMsIFBBR0VfSUQsIEZSQU1F
X0lELCBmcmFtZSgpLmlzTWFpbkZyYW1lKCksICMjX19WQV9BUkdTX18pCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTE3MTYsNyArMTcxNiw3IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRMYXlvdXRW
aWV3cG9ydE92ZXJyaWRlUmVjdChzdGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+IHJlY3QsIFRyCiAg
ICAgaWYgKG9sZFJlY3QuaGVpZ2h0KCkgIT0gbGF5b3V0Vmlld3BvcnRSZWN0KCkuaGVpZ2h0KCkp
CiAgICAgICAgIGxheW91dFRyaWdnZXJpbmcgPSBUcmlnZ2VyTGF5b3V0T3JOb3Q6OlllczsKIAot
ICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxpbmcsIHN0cmVhbSA8PCAiXG5GcmFtZVZpZXcgIiA8
PCB0aGlzIDw8ICIgc2V0TGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QoKSAtIGNoYW5naW5nIG92
ZXJyaWRlIGxheW91dCB2aWV3cG9ydCBmcm9tICIgPDwgb2xkUmVjdCA8PCAiIHRvICIgPDwgbV9s
YXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdC52YWx1ZV9vcihMYXlvdXRSZWN0KCkpIDw8ICIgbGF5
b3V0VHJpZ2dlcmluZyAiIDw8IChsYXlvdXRUcmlnZ2VyaW5nID09IFRyaWdnZXJMYXlvdXRPck5v
dDo6WWVzID8gInllcyIgOiAibm8iKSk7CisgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywg
c3RyZWFtIDw8ICJcbkZyYW1lVmlldyAiIDw8IHRoaXMgPDwgIiBzZXRMYXlvdXRWaWV3cG9ydE92
ZXJyaWRlUmVjdCgpIC0gY2hhbmdpbmcgb3ZlcnJpZGUgbGF5b3V0IHZpZXdwb3J0IGZyb20gIiA8
PCBvbGRSZWN0IDw8ICIgdG8gIiA8PCB2YWx1ZU9yRGVmYXVsdChtX2xheW91dFZpZXdwb3J0T3Zl
cnJpZGVSZWN0KSA8PCAiIGxheW91dFRyaWdnZXJpbmcgIiA8PCAobGF5b3V0VHJpZ2dlcmluZyA9
PSBUcmlnZ2VyTGF5b3V0T3JOb3Q6OlllcyA/ICJ5ZXMiIDogIm5vIikpOwogCiAgICAgaWYgKG9s
ZFJlY3QgIT0gbGF5b3V0Vmlld3BvcnRSZWN0KCkgJiYgbGF5b3V0VHJpZ2dlcmluZyA9PSBUcmln
Z2VyTGF5b3V0T3JOb3Q6OlllcykKICAgICAgICAgc2V0Vmlld3BvcnRDb25zdHJhaW5lZE9iamVj
dHNOZWVkTGF5b3V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAzZmIyYjY3Y2YyYjU0OWQyNGE4
Mzc5ZjgxODQyNjI5Mzk5YjFhZmIxLi41YWJlYjMxZTUyNWIzNjliNGJjYTRhZjYyNTdlMjZiZGQ1
MDVjMDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTI2NjgsNyArMjY2OCw3IEBAIENvbG9yIFBh
Z2U6OnBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcigpIGNvbnN0CiAKIENvbG9yIFBhZ2U6OnNh
bXBsZWRQYWdlVG9wQ29sb3IoKSBjb25zdAogewotICAgIHJldHVybiBtX3NhbXBsZWRQYWdlVG9w
Q29sb3IudmFsdWVfb3IoQ29sb3IoKSk7CisgICAgcmV0dXJuIHZhbHVlT3JEZWZhdWx0KG1fc2Ft
cGxlZFBhZ2VUb3BDb2xvcik7CiB9CiAKIHZvaWQgUGFnZTo6c2V0VW5kZXJQYWdlQmFja2dyb3Vu
ZENvbG9yT3ZlcnJpZGUoQ29sb3ImJiB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQppbmRleCAxZWNkMGNj
NzhlZDU1NTY0ZjAzMmIzMGM5YzgzZWJmNTc0YWRlODAwLi41NjdmMWVlMjIzNzYzNmY5YjMwODBh
ODkxMjViNDQ3MWUxMjYwZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9F
dmVudEhhbmRsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5k
bGVyTWFjLm1tCkBAIC0xMDQ5LDEwICsxMDQ5LDEwIEBAIEludFBvaW50IEV2ZW50SGFuZGxlcjo6
dGFyZ2V0UG9zaXRpb25JbldpbmRvd0ZvclNlbGVjdGlvbkF1dG9zY3JvbGwoKSBjb25zdAogewog
ICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCi0gICAgICAg
IHJldHVybiBtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24udmFsdWVfb3IoSW50UG9pbnQoKSk7Cisg
ICAgICAgIHJldHVybiB2YWx1ZU9yRGVmYXVsdChtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24pOwog
CiAgICAgYXV0byBmcmFtZSA9IHRvVXNlclNwYWNlRm9yUHJpbWFyeVNjcmVlbihzY3JlZW5SZWN0
Rm9yRGlzcGxheShwYWdlLT5jaHJvbWUoKS5kaXNwbGF5SUQoKSkpOwotICAgIHJldHVybiBtX2xh
c3RLbm93bk1vdXNlUG9zaXRpb24udmFsdWVfb3IoSW50UG9pbnQoKSkgKyBhdXRvc2Nyb2xsQWRq
dXN0bWVudEZhY3RvckZvclNjcmVlbkJvdW5kYXJpZXMobV9sYXN0S25vd25Nb3VzZUdsb2JhbFBv
c2l0aW9uLCBmcmFtZSk7CisgICAgcmV0dXJuIHZhbHVlT3JEZWZhdWx0KG1fbGFzdEtub3duTW91
c2VQb3NpdGlvbikgKyBhdXRvc2Nyb2xsQWRqdXN0bWVudEZhY3RvckZvclNjcmVlbkJvdW5kYXJp
ZXMobV9sYXN0S25vd25Nb3VzZUdsb2JhbFBvc2l0aW9uLCBmcmFtZSk7CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVMYXRjaGlu
Z0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZUxhdGNoaW5nQ29udHJvbGxlci5jcHAKaW5kZXggNWU1ZWZlNjAzNTgyNTBmZTI5ZDMwOTBh
MDdlNDViZTRmZTJhMmQ1Ni4uYWFjZmRjNzg3ZTE4NzhkYjA1ODFlYzVlM2YzOWI3NGY3NTBiZDg0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJl
ZUxhdGNoaW5nQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlci5jcHAKQEAgLTExMiw3ICsxMTIsNyBA
QCB2b2lkIFNjcm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xsZXI6Om5vZGVEaWRIYW5kbGVFdmVu
dChTY3JvbGxpbmdOb2RlSUQgc2Nyb2xsaQogICAgICAgICBpZiAoIXdoZWVsRXZlbnQuaXNHZXN0
dXJlQ29udGludWF0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAg
aWYgKG1fcHJvY2Vzc2luZ1N0ZXBzRm9yQ3VycmVudEdlc3R1cmUudmFsdWVfb3IoT3B0aW9uU2V0
PFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM+IHsgfSkuY29udGFpbnMoV2hlZWxFdmVudFByb2Nl
c3NpbmdTdGVwczo6TWFpblRocmVhZEZvclNjcm9sbGluZykgJiYgcHJvY2Vzc2luZ1N0ZXBzLmNv
bnRhaW5zKFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM6OlNjcm9sbGluZ1RocmVhZCkpCisgICAg
ICAgIGlmICh2YWx1ZU9yRGVmYXVsdChtX3Byb2Nlc3NpbmdTdGVwc0ZvckN1cnJlbnRHZXN0dXJl
KS5jb250YWlucyhXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzOjpNYWluVGhyZWFkRm9yU2Nyb2xs
aW5nKSAmJiBwcm9jZXNzaW5nU3RlcHMuY29udGFpbnMoV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVw
czo6U2Nyb2xsaW5nVGhyZWFkKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NoYWRvd0JsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hh
ZG93Qmx1ci5jcHAKaW5kZXggZjhiNjEwMmQ2ODNjZDRiNjlhODcwOTBmNTA2ZmNkNjA5ODk4YjZm
MS4uYmIxMzhiNTI5N2E1MjFmYmY3ZDY5M2NkMTE0MTA0NDAwZmNhYmM0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKQEAgLTQwNCw3ICs0
MDQsNyBAQCBzdGQ6Om9wdGlvbmFsPFNoYWRvd0JsdXI6OkxheWVySW1hZ2VQcm9wZXJ0aWVzPiBT
aGFkb3dCbHVyOjpjYWxjdWxhdGVMYXllckJvdW5kaQogICAgIGlmIChtX3NoYWRvd3NJZ25vcmVU
cmFuc2Zvcm1zICYmICF0cmFuc2Zvcm0uaXNJZGVudGl0eSgpKSB7CiAgICAgICAgIEZsb2F0UXVh
ZCB0cmFuc2Zvcm1lZFBvbHlnb24gPSB0cmFuc2Zvcm0ubWFwUXVhZChGbG9hdFF1YWQoc2hhZG93
ZWRSZWN0KSk7CiAgICAgICAgIHRyYW5zZm9ybWVkUG9seWdvbi5tb3ZlKG1fb2Zmc2V0KTsKLSAg
ICAgICAgbGF5ZXJSZWN0ID0gdHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFu
c2Zvcm0oKSkubWFwUXVhZCh0cmFuc2Zvcm1lZFBvbHlnb24pLmJvdW5kaW5nQm94KCk7CisgICAg
ICAgIGxheWVyUmVjdCA9IHZhbHVlT3JEZWZhdWx0KHRyYW5zZm9ybS5pbnZlcnNlKCkpLm1hcFF1
YWQodHJhbnNmb3JtZWRQb2x5Z29uKS5ib3VuZGluZ0JveCgpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIGxheWVyUmVjdCA9IHNoYWRvd2VkUmVjdDsKICAgICAgICAgbGF5ZXJSZWN0Lm1vdmUobV9v
ZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IDAxNmI0Y2Y5MmRjOGI0MDE3
NzMxMmE2MDI4OTUyNDI3NGU5NWI5MzAuLjE1Y2YzNjU0NDY3OWRjNWIwNGU5ZjI4YjVmZmRiNDU3
YWY1MDg1OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTEwMDcsNyArMTAwNyw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpwYWludEN1cnJl
bnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvCiAgICAgaWYgKCFtX3ZpZGVvVHJhbnNmb3JtKQog
ICAgICAgICBtX3ZpZGVvVHJhbnNmb3JtID0gdmlkZW9UcmFuc2Zvcm1hdGlvbk1hdHJpeCgqbV9p
bWFnZVBhaW50ZXIubWVkaWFTYW1wbGUpOwogICAgIEFmZmluZVRyYW5zZm9ybSB2aWRlb1RyYW5z
Zm9ybSA9ICptX3ZpZGVvVHJhbnNmb3JtOwotICAgIEZsb2F0UmVjdCB0cmFuc2Zvcm1lZERlc3RS
ZWN0ID0gdmlkZW9UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgp
KS5tYXBSZWN0KGRlc3RSZWN0KTsKKyAgICBGbG9hdFJlY3QgdHJhbnNmb3JtZWREZXN0UmVjdCA9
IHZhbHVlT3JEZWZhdWx0KHZpZGVvVHJhbnNmb3JtLmludmVyc2UoKSkubWFwUmVjdChkZXN0UmVj
dCk7CiAgICAgY29udGV4dC5jb25jYXRDVE0odmlkZW9UcmFuc2Zvcm0pOwogICAgIGNvbnRleHQu
ZHJhd05hdGl2ZUltYWdlKCppbWFnZSwgaW1hZ2VSZWN0LnNpemUoKSwgdHJhbnNmb3JtZWREZXN0
UmVjdCwgaW1hZ2VSZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggM2EyODY3YTFhYzI0M2JiOWM5M2M5ZDZi
NzBjYTU2YjAyOTQ4ZmM5Yy4uMmE0YzkxYjUzNjlmZWM1OGQ5YzlkOTRlOWZiNDI0NmQzY2JlZjkz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMubW0KQEAgLTEyNjgsNyArMTI2OCw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6OndpbGxTZWVrKCkKIAogRmxvYXRTaXplIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpuYXR1cmFsU2l6ZSgpCiB7Ci0gICAgcmV0dXJuIG1fY2FjaGVkU2l6ZS52YWx1ZV9vcihG
bG9hdFNpemUoKSk7CisgICAgcmV0dXJuIHZhbHVlT3JEZWZhdWx0KG1fY2FjaGVkU2l6ZSk7CiB9
CiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZEJlY29tZVJlYWR5Rm9yTW9y
ZVNhbXBsZXModWludDY0X3QgdHJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IDc3MjdhMjU4ODU4
YzQzYjQ4YzRkNzY0YjBiMmYxZWM3MDMzYjBmYTAuLmZkOWZhZmU4ZjE2OTdlNzlmMWZhOTE0NTZi
NGJlYThlYTVkODI1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMTY2Niw3ICsxNjY2LDcgQEAgdm9p
ZCBHcmFwaGljc0xheWVyQ0E6OnNldFZpc2libGVBbmRDb3ZlcmFnZVJlY3RzKGNvbnN0IFZpc2li
bGVBbmRDb3ZlcmFnZVJlY3RzJgogICAgIGlmIChhdXRvIGV4dGVudCA9IGFuaW1hdGlvbkV4dGVu
dCgpKSB7CiAgICAgICAgIC8vIEFkanVzdCB0aGUgYW5pbWF0aW9uIGV4dGVudCB0byBtYXRjaCB0
aGUgY3VycmVudCBhbmltYXRpb24gcG9zaXRpb24uCiAgICAgICAgIGF1dG8gYW5pbWF0aW5nVHJh
bnNmb3JtV2l0aEFuY2hvclBvaW50ID0gdHJhbnNmb3JtQnlBcHBseWluZ0FuY2hvclBvaW50KHJl
Y3RzLmFuaW1hdGluZ1RyYW5zZm9ybSk7Ci0gICAgICAgIGJvdW5kcyA9IGFuaW1hdGluZ1RyYW5z
Zm9ybVdpdGhBbmNob3JQb2ludC5pbnZlcnNlKCkudmFsdWVfb3IoVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSkubWFwUmVjdCgqZXh0ZW50KTsKKyAgICAgICAgYm91bmRzID0gdmFsdWVPckRlZmF1bHQo
YW5pbWF0aW5nVHJhbnNmb3JtV2l0aEFuY2hvclBvaW50LmludmVyc2UoKSkubWFwUmVjdCgqZXh0
ZW50KTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogd2UgbmVlZCB0byB0YWtlIHJlZmxlY3Rpb25z
IGludG8gYWNjb3VudCB3aGVuIGRldGVybWluaW5nIHdoZXRoZXIgdGhpcyBsYXllciBpbnRlcnNl
Y3RzIHRoZSBjb3ZlcmFnZSByZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcAppbmRleCA0
YjQzZDc2Njk3MzNiNjE1NGNmNTRmNGQ1ZWQ4Y2ZjMTA4NzFlOTQwLi4wYmQzMmYyMjU2YzgzNDI5
NTEyNmQ2YjY2ODQ1ZWY4MTc5MGFhZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcApA
QCAtMTY5LDcgKzE2OSw3IEBAIEZsb2F0UG9pbnQgVHJhbnNmb3JtU3RhdGU6Om1hcHBlZFBvaW50
KGJvb2wqIHdhc0NsYW1wZWQpIGNvbnN0CiAgICAgaWYgKG1fZGlyZWN0aW9uID09IEFwcGx5VHJh
bnNmb3JtRGlyZWN0aW9uKQogICAgICAgICByZXR1cm4gbV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+
bWFwUG9pbnQocG9pbnQpOwogCi0gICAgcmV0dXJuIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0tPmlu
dmVyc2UoKS52YWx1ZV9vcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKS5wcm9qZWN0UG9pbnQocG9p
bnQsIHdhc0NsYW1wZWQpOworICAgIHJldHVybiB2YWx1ZU9yRGVmYXVsdChtX2FjY3VtdWxhdGVk
VHJhbnNmb3JtLT5pbnZlcnNlKCkpLnByb2plY3RQb2ludChwb2ludCwgd2FzQ2xhbXBlZCk7CiB9
CiAKIEZsb2F0UXVhZCBUcmFuc2Zvcm1TdGF0ZTo6bWFwcGVkUXVhZChib29sKiB3YXNDbGFtcGVk
KSBjb25zdApAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgVHJhbnNmb3JtU3RhdGU6Om1hcFF1YWQo
RmxvYXRRdWFkJiBxdWFkLCBUcmFuc2Zvcm1EaXJlY3Rpb24gZGlyZWN0aW9uLCBib29sCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBxdWFkID0gbV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+
aW52ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpLnByb2plY3RRdWFkKHF1
YWQsIHdhc0NsYW1wZWQpOworICAgIHF1YWQgPSB2YWx1ZU9yRGVmYXVsdChtX2FjY3VtdWxhdGVk
VHJhbnNmb3JtLT5pbnZlcnNlKCkpLnByb2plY3RRdWFkKHF1YWQsIHdhc0NsYW1wZWQpOwogfQog
CiB2b2lkIFRyYW5zZm9ybVN0YXRlOjpmbGF0dGVuV2l0aFRyYW5zZm9ybShjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgdCwgYm9vbCogd2FzQ2xhbXBlZCkKQEAgLTIzMyw3ICsyMzMsNyBAQCB2
b2lkIFRyYW5zZm9ybVN0YXRlOjpmbGF0dGVuV2l0aFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdCwgYm9vbCogdwogICAgICAgICAgICAgICAgIG1fbGFzdFBsYW5hclNlY29u
ZGFyeVF1YWQgPSB0Lm1hcFF1YWQoKm1fbGFzdFBsYW5hclNlY29uZGFyeVF1YWQpOwogICAgICAg
ICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaW52ZXJzZVRy
YW5zZm9ybSA9IHQuaW52ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOwor
ICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpbnZlcnNlVHJhbnNmb3JtID0gdmFsdWVPckRl
ZmF1bHQodC5pbnZlcnNlKCkpOwogICAgICAgICBpZiAobV9tYXBQb2ludCkKICAgICAgICAgICAg
IG1fbGFzdFBsYW5hclBvaW50ID0gaW52ZXJzZVRyYW5zZm9ybS5wcm9qZWN0UG9pbnQobV9sYXN0
UGxhbmFyUG9pbnQpOwogICAgICAgICBpZiAobV9tYXBRdWFkKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAppbmRl
eCBjNWU1OWExYmM2YmNkNWIzZDc2OGIyNGY3MzJkNGRlMWY4NDlmMWZmLi5jNWE1N2Y0NzllNmIy
ODQyYTc0ZDQ4YTE1ZWM3NTY3MDVlNjA2ZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKQEAgLTYyOCw3ICs2
MjgsNyBAQCBib29sIFJlc291cmNlUmVxdWVzdEJhc2U6OmlzU3lzdGVtUHJldmlldygpIGNvbnN0
CiAKIFN5c3RlbVByZXZpZXdJbmZvIFJlc291cmNlUmVxdWVzdEJhc2U6OnN5c3RlbVByZXZpZXdJ
bmZvKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zeXN0ZW1QcmV2aWV3SW5mby52YWx1ZV9vcihT
eXN0ZW1QcmV2aWV3SW5mbyB7IH0pOworICAgIHJldHVybiB2YWx1ZU9yRGVmYXVsdChtX3N5c3Rl
bVByZXZpZXdJbmZvKTsKIH0KIAogdm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRTeXN0ZW1Q
cmV2aWV3SW5mbyhjb25zdCBTeXN0ZW1QcmV2aWV3SW5mbyYgaW5mbykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAK
aW5kZXggOTUwZTgyNjdlMmE1ZTg2YmE3OWQ2NzllN2Q3MzYxMTAxYzBmYmFlYi4uMmQ1ODM4NWVj
MTZkMmU1OTIzY2U4MTdkMTkwZjY3ZmM0MTc4YTAxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKQEAgLTE5
Miw3ICsxOTIsNyBAQCBSZXNvdXJjZVJlc3BvbnNlIFJlc291cmNlUmVzcG9uc2VCYXNlOjpmaWx0
ZXIoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsCiAgICAgQVNTRVJUKHJlc3BvbnNl
LnRhaW50aW5nKCkgPT0gVGFpbnRpbmc6OkNvcnMpOwogICAgIGZpbHRlcmVkUmVzcG9uc2Uuc2V0
VHlwZShUeXBlOjpDb3JzKTsKIAotICAgIGF1dG8gYWNjZXNzQ29udHJvbEV4cG9zZUhlYWRlclNl
dCA9IHBhcnNlQWNjZXNzQ29udHJvbEFsbG93TGlzdDxBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
KHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6QWNjZXNzQ29udHJvbEV4
cG9zZUhlYWRlcnMpKS52YWx1ZV9vcihIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRp
dmVIYXNoPiB7IH0pOworICAgIGF1dG8gYWNjZXNzQ29udHJvbEV4cG9zZUhlYWRlclNldCA9IHZh
bHVlT3JEZWZhdWx0KHBhcnNlQWNjZXNzQ29udHJvbEFsbG93TGlzdDxBU0NJSUNhc2VJbnNlbnNp
dGl2ZUhhc2g+KHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6QWNjZXNz
Q29udHJvbEV4cG9zZUhlYWRlcnMpKSk7CiAgICAgaWYgKHBlcmZvcm1DaGVjayA9PSBQZXJmb3Jt
RXhwb3NlQWxsSGVhZGVyc0NoZWNrOjpZZXMgJiYgYWNjZXNzQ29udHJvbEV4cG9zZUhlYWRlclNl
dC5jb250YWlucygiKiIpKQogICAgICAgICByZXR1cm4gZmlsdGVyZWRSZXNwb25zZTsKIApAQCAt
NDU4LDcgKzQ1OCw3IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNhbml0aXplSFRUUEhl
YWRlckZpZWxkc0FjY29yZGluZ1RvVGFpbnRpbmcoKQogICAgIGNhc2UgUmVzb3VyY2VSZXNwb25z
ZTo6VGFpbnRpbmc6OkJhc2ljOgogICAgICAgICBicmVhazsKICAgICBjYXNlIFJlc291cmNlUmVz
cG9uc2U6OlRhaW50aW5nOjpDb3JzOiB7Ci0gICAgICAgIGF1dG8gY29yc1NhZmVIZWFkZXJTZXQg
PSBwYXJzZUFjY2Vzc0NvbnRyb2xBbGxvd0xpc3Q8QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiho
dHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkFjY2Vzc0NvbnRyb2xFeHBvc2VIZWFkZXJz
KSkudmFsdWVfb3IoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4geyB9
KTsKKyAgICAgICAgYXV0byBjb3JzU2FmZUhlYWRlclNldCA9IHZhbHVlT3JEZWZhdWx0KHBhcnNl
QWNjZXNzQ29udHJvbEFsbG93TGlzdDxBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+KGh0dHBIZWFk
ZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6QWNjZXNzQ29udHJvbEV4cG9zZUhlYWRlcnMpKSk7CiAg
ICAgICAgIGlmIChjb3JzU2FmZUhlYWRlclNldC5jb250YWlucygiKiJfc3RyKSkKICAgICAgICAg
ICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50
SW5mby5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oCmluZGV4IDUxZWY0
MWRjZmQ1ZTVkMTJhOWFiNTZkYmZiNTI0NDBjODUwY2Q3MzYuLjA1MGQ1Y2FmNmIyZmQzYmYzMjFl
YmI5MWE4NzYxOWQzOTY4MTUwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9QYWludEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgK
QEAgLTExNiw3ICsxMTYsNyBAQCBzdHJ1Y3QgUGFpbnRJbmZvIHsKICAgICAgICAgaWYgKHJlY3Qu
aXNJbmZpbml0ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIEZsb2F0UmVjdCB0
cmFuZm9ybWVkUmVjdChsb2NhbFRvQW5jZXN0b3JUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29y
KEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KHJlY3QpKTsKKyAgICAgICAgRmxvYXRSZWN0IHRy
YW5mb3JtZWRSZWN0KHZhbHVlT3JEZWZhdWx0KGxvY2FsVG9BbmNlc3RvclRyYW5zZm9ybS5pbnZl
cnNlKCkpLm1hcFJlY3QocmVjdCkpOwogICAgICAgICByZWN0LnNldExvY2F0aW9uKExheW91dFBv
aW50KHRyYW5mb3JtZWRSZWN0LmxvY2F0aW9uKCkpKTsKICAgICAgICAgcmVjdC5zZXRTaXplKExh
eW91dFNpemUodHJhbmZvcm1lZFJlY3Quc2l6ZSgpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggMmRkMTU4NzFk
N2I3MTYzODJlMDU3NjBkODIyZTllNTc5NWU5YmY0Yi4uZDNlZDljNGU5MjdhNGExZWYwZGE2MmQz
NWI3YjRhYzFkNzRhYzBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC0zNDksNyArMzQ5LDcgQEAgTGF5b3V0U2l6ZSBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6cmVsYXRpdmVQb3NpdGlvbk9mZnNldCgpIGNvbnN0CiAgICAgLy8g
aHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1ncmlkLyNncmlkLWl0ZW0tc2l6aW5nCiAgICAg
aWYgKCFzdHlsZSgpLmxlZnQoKS5pc0F1dG8oKSB8fCAhc3R5bGUoKS5yaWdodCgpLmlzQXV0bygp
KSB7CiAgICAgICAgIExheW91dFVuaXQgYXZhaWxhYmxlV2lkdGggPSBoYXNPdmVycmlkaW5nQ29u
dGFpbmluZ0Jsb2NrQ29udGVudFdpZHRoKCkKLSAgICAgICAgICAgID8gb3ZlcnJpZGluZ0NvbnRh
aW5pbmdCbG9ja0NvbnRlbnRXaWR0aCgpLnZhbHVlX29yKExheW91dFVuaXQoKSkgOiBjb250YWlu
aW5nQmxvY2soKS0+YXZhaWxhYmxlV2lkdGgoKTsKKyAgICAgICAgICAgID8gdmFsdWVPckRlZmF1
bHQob3ZlcnJpZGluZ0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRXaWR0aCgpKSA6IGNvbnRhaW5pbmdC
bG9jaygpLT5hdmFpbGFibGVXaWR0aCgpOwogICAgICAgICBpZiAoIXN0eWxlKCkubGVmdCgpLmlz
QXV0bygpKSB7CiAgICAgICAgICAgICBpZiAoIXN0eWxlKCkucmlnaHQoKS5pc0F1dG8oKSAmJiAh
Y29udGFpbmluZ0Jsb2NrKCktPnN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQogICAg
ICAgICAgICAgICAgIG9mZnNldC5zZXRXaWR0aCgtdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5yaWdo
dCgpLCAhc3R5bGUoKS5yaWdodCgpLmlzRml4ZWQoKSA/IGF2YWlsYWJsZVdpZHRoIDogMF9sdSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IDMxNzlkZWYwMjk5
ZTRlYmQ3NWFjY2FjZmNkZDc0Nzk2MDkxNTUxYjUuLjI2ZjhmY2JjMGFiMjc5NjBjNDkzOTIyM2U3
NDhkOTNjM2I4M2M5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAK
QEAgLTQ5NCw3ICs0OTQsNyBAQCB1bnNpZ25lZCBSZW5kZXJHcmlkOjpjb21wdXRlQXV0b1JlcGVh
dFRyYWNrc0NvdW50KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlYwogICAgICAgICBpZiAo
bWF4U2l6ZS5pc1NwZWNpZmllZCgpKSB7CiAgICAgICAgICAgICBpZiAobWF4U2l6ZS5pc1BlcmNl
bnRPckNhbGN1bGF0ZWQoKSkKICAgICAgICAgICAgICAgICBjb250YWluaW5nQmxvY2tBdmFpbGFi
bGVTaXplID0gaXNSb3dBeGlzID8gY29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVu
dCgpIDogY29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodEZvckNvbnRlbnQoRXhjbHVkZU1hcmdp
bkJvcmRlclBhZGRpbmcpOwotICAgICAgICAgICAgTGF5b3V0VW5pdCBtYXhTaXplVmFsdWUgPSB2
YWx1ZUZvckxlbmd0aChtYXhTaXplLCBjb250YWluaW5nQmxvY2tBdmFpbGFibGVTaXplLnZhbHVl
X29yKExheW91dFVuaXQoKSkpOworICAgICAgICAgICAgTGF5b3V0VW5pdCBtYXhTaXplVmFsdWUg
PSB2YWx1ZUZvckxlbmd0aChtYXhTaXplLCB2YWx1ZU9yRGVmYXVsdChjb250YWluaW5nQmxvY2tB
dmFpbGFibGVTaXplKSk7CiAgICAgICAgICAgICBhdmFpbGFibGVNYXhTaXplID0gaXNSb3dBeGlz
ID8gYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyhtYXhTaXplVmFsdWUs
IG1heFNpemUudHlwZSgpKSA6IGFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6
aW5nKG1heFNpemVWYWx1ZSk7CiAgICAgICAgIH0KIApAQCAtNTA5LDcgKzUwOSw3IEBAIHVuc2ln
bmVkIFJlbmRlckdyaWQ6OmNvbXB1dGVBdXRvUmVwZWF0VHJhY2tzQ291bnQoR3JpZFRyYWNrU2l6
aW5nRGlyZWN0aW9uIGRpcmVjCiAgICAgICAgIGlmIChtaW5TaXplLmlzU3BlY2lmaWVkKCkpIHsK
ICAgICAgICAgICAgIGlmICghY29udGFpbmluZ0Jsb2NrQXZhaWxhYmxlU2l6ZSAmJiBtaW5TaXpl
LmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKQogICAgICAgICAgICAgICAgIGNvbnRhaW5pbmdCbG9j
a0F2YWlsYWJsZVNpemUgPSBpc1Jvd0F4aXMgPyBjb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhG
b3JDb250ZW50KCkgOiBjb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0Rm9yQ29udGVudChFeGNs
dWRlTWFyZ2luQm9yZGVyUGFkZGluZyk7Ci0gICAgICAgICAgICBMYXlvdXRVbml0IG1pblNpemVW
YWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKG1pblNpemUsIGNvbnRhaW5pbmdCbG9ja0F2YWlsYWJsZVNp
emUudmFsdWVfb3IoTGF5b3V0VW5pdCgpKSk7CisgICAgICAgICAgICBMYXlvdXRVbml0IG1pblNp
emVWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKG1pblNpemUsIHZhbHVlT3JEZWZhdWx0KGNvbnRhaW5p
bmdCbG9ja0F2YWlsYWJsZVNpemUpKTsKICAgICAgICAgICAgIGF2YWlsYWJsZU1pblNpemUgPSBp
c1Jvd0F4aXMgPyBhZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5nKG1pblNp
emVWYWx1ZSwgbWluU2l6ZS50eXBlKCkpIDogYWRqdXN0Q29udGVudEJveExvZ2ljYWxIZWlnaHRG
b3JCb3hTaXppbmcobWluU2l6ZVZhbHVlKTsKICAgICAgICAgfSBlbHNlIGlmIChzaG91bGRDb21w
dXRlTWluU2l6ZUZyb21Bc3BlY3RSYXRpbykgewogICAgICAgICAgICAgYXV0byBbbG9naWNhbE1p
bldpZHRoLCBsb2dpY2FsTWF4V2lkdGhdID0gY29tcHV0ZU1pbk1heExvZ2ljYWxXaWR0aEZyb21B
c3BlY3RSYXRpbygpOwpAQCAtNTE4LDcgKzUxOCw3IEBAIHVuc2lnbmVkIFJlbmRlckdyaWQ6OmNv
bXB1dGVBdXRvUmVwZWF0VHJhY2tzQ291bnQoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVj
CiAgICAgICAgIGlmICghbWF4U2l6ZS5pc1NwZWNpZmllZCgpKQogICAgICAgICAgICAgbmVlZHNU
b0Z1bGZpbGxNaW5pbXVtU2l6ZSA9IHRydWU7CiAKLSAgICAgICAgYXZhaWxhYmxlU2l6ZSA9IHN0
ZDo6bWF4KGF2YWlsYWJsZU1pblNpemUudmFsdWVfb3IoTGF5b3V0VW5pdCgpKSwgYXZhaWxhYmxl
TWF4U2l6ZS52YWx1ZV9vcihMYXlvdXRVbml0KCkpKTsKKyAgICAgICAgYXZhaWxhYmxlU2l6ZSA9
IHN0ZDo6bWF4KHZhbHVlT3JEZWZhdWx0KGF2YWlsYWJsZU1pblNpemUpLCB2YWx1ZU9yRGVmYXVs
dChhdmFpbGFibGVNYXhTaXplKSk7CiAgICAgfQogCiAgICAgTGF5b3V0VW5pdCBhdXRvUmVwZWF0
VHJhY2tzU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4
IDliYTAzOTljZWVhYmY1N2NhYTA3Mjk3NDcwNTkwODM2ZjJkMGVhZjguLjliMjJkM2I0OWQyNzY0
MGFiZjk2NDE5MDMyYmM5Mzg3Y2U1YjEwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcApAQCAtMTAxMCw3ICsxMDEwLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBk
YXRlTGF5ZXJQb3NpdGlvbnMoUmVuZGVyR2VvbWV0cnlNYXAqIGdlb21ldHJ5TWFwLCBPcHRpb25T
ZXQKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNob3VsZFJlcGFpbnRBZnRlckxheW91dCgp
KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSB3aWxsIGNvbnZlcnQgdGhpcyB0
byBqdXN0IHRha2UgdGhlIG9sZCBhbmQgbmV3IFJlcGFpbnRMYXlvdXRSZWN0cyBvbmNlCiAgICAg
ICAgICAgICAgICAgICAgIC8vIHdlIGNoYW5nZSBvdGhlciBjYWxsZXJzIHRvIHVzZSBSZXBhaW50
TGF5b3V0UmVjdHMuCi0gICAgICAgICAgICAgICAgICAgIGF1dG8gcmVzb2x2ZWRPbGRSZWN0cyA9
IG9sZFJlY3RzLnZhbHVlX29yKExheWVyUmVwYWludFJlY3RzIHsgfSk7CisgICAgICAgICAgICAg
ICAgICAgIGF1dG8gcmVzb2x2ZWRPbGRSZWN0cyA9IHZhbHVlT3JEZWZhdWx0KG9sZFJlY3RzKTsK
ICAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXIoKS5yZXBhaW50QWZ0ZXJMYXlvdXRJZk5lZWRl
ZChyZXBhaW50Q29udGFpbmVyLCByZXNvbHZlZE9sZFJlY3RzLmNsaXBwZWRPdmVyZmxvd1JlY3Qs
IHJlc29sdmVkT2xkUmVjdHMub3V0bGluZUJvdW5kc1JlY3QsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAmbmV3UmVjdHMtPmNsaXBwZWRPdmVyZmxvd1JlY3QsICZuZXdSZWN0cy0+b3V0bGluZUJv
dW5kc1JlY3QpOwogICAgICAgICAgICAgICAgIH0KQEAgLTM0OTMsNyArMzQ5Myw3IEBAIHZvaWQg
UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJCeUFwcGx5aW5nVHJhbnNmb3JtKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QKICAgICBMYXlvdXRTaXplIGFkanVzdGVkU3VicGl4ZWxPZmZzZXQg
PSBvZmZzZXRGb3JUaGlzTGF5ZXIgLSBMYXlvdXRTaXplKGRldmljZVBpeGVsU25hcHBlZE9mZnNl
dEZvclRoaXNMYXllcik7CiAgICAgTGF5ZXJQYWludGluZ0luZm8gdHJhbnNmb3JtZWRQYWludGlu
Z0luZm8ocGFpbnRpbmdJbmZvKTsKICAgICB0cmFuc2Zvcm1lZFBhaW50aW5nSW5mby5yb290TGF5
ZXIgPSB0aGlzOwotICAgIHRyYW5zZm9ybWVkUGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0ID0g
TGF5b3V0UmVjdChlbmNsb3NlUmVjdFRvRGV2aWNlUGl4ZWxzKHRyYW5zZm9ybS5pbnZlcnNlKCku
dmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QocGFpbnRpbmdJbmZvLnBhaW50RGly
dHlSZWN0KSwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKKyAgICB0cmFuc2Zvcm1lZFBhaW50aW5nSW5m
by5wYWludERpcnR5UmVjdCA9IExheW91dFJlY3QoZW5jbG9zZVJlY3RUb0RldmljZVBpeGVscyh2
YWx1ZU9yRGVmYXVsdCh0cmFuc2Zvcm0uaW52ZXJzZSgpKS5tYXBSZWN0KHBhaW50aW5nSW5mby5w
YWludERpcnR5UmVjdCksIGRldmljZVNjYWxlRmFjdG9yKSk7CiAgICAgdHJhbnNmb3JtZWRQYWlu
dGluZ0luZm8uc3VicGl4ZWxPZmZzZXQgPSBhZGp1c3RlZFN1YnBpeGVsT2Zmc2V0OwogICAgIHBh
aW50TGF5ZXJDb250ZW50c0FuZFJlZmxlY3Rpb24oY29udGV4dCwgdHJhbnNmb3JtZWRQYWludGlu
Z0luZm8sIHBhaW50RmxhZ3MpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5j
cHAKaW5kZXggMTczOGE4YjZlNzU4NTE1ZjUzZDc3YjY2ODQwN2MxNzlkZjVlZDNlZi4uNjBmZmIx
NzA2NWMzMGI3OTQzYjkzZThjZmE3NTI1NDI5MmMwYmRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWaWV3LmNwcApAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgUmVuZGVyVmlldzo6
bGF5b3V0KCkKICAgICBpZiAoIW5lZWRzTGF5b3V0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IExheW91dFN0YXRlTWFpbnRhaW5lciBzdGF0ZVB1c2hlcigqdGhpcywgeyB9LCBmYWxzZSwgbV9w
YWdlTG9naWNhbFNpemUudmFsdWVfb3IoTGF5b3V0U2l6ZSgpKS5oZWlnaHQoKSwgbV9wYWdlTG9n
aWNhbEhlaWdodENoYW5nZWQpOworICAgIExheW91dFN0YXRlTWFpbnRhaW5lciBzdGF0ZVB1c2hl
cigqdGhpcywgeyB9LCBmYWxzZSwgdmFsdWVPckRlZmF1bHQobV9wYWdlTG9naWNhbFNpemUpLmhl
aWdodCgpLCBtX3BhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZCk7CiAKICAgICBtX3BhZ2VMb2dpY2Fs
SGVpZ2h0Q2hhbmdlZCA9IGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNWR1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdSb290LmNwcAppbmRleCBlODA4MjY1OWIyZjQwMjBlMjEy
N2FiNDllNDg3OWU2MTIwOWJjNDE0Li40NzQ2N2Y3ODM4MDY0YjFkNGI4NTViYjkxZWExYWQ0ZGQ5
Yzk2MTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL0xlZ2FjeVJl
bmRlclNWR1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvTGVnYWN5
UmVuZGVyU1ZHUm9vdC5jcHAKQEAgLTQyOSw3ICs0MjksNyBAQCBib29sIExlZ2FjeVJlbmRlclNW
R1Jvb3Q6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0
UmVzdQogICAgIC8vIFRlc3QgU1ZHIGNvbnRlbnQgaWYgdGhlIHBvaW50IGlzIGluIG91ciBjb250
ZW50IGJveCBvciBpdCBpcyBpbnNpZGUgdGhlIHZpc3VhbE92ZXJmbG93UmVjdCBhbmQgdGhlIG92
ZXJmbG93IGlzIHZpc2libGUuCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGFuIGludGVy
c2VjdGlvbiB3aGVuIHJlY3QtYmFzZWQgaGl0IHRlc3RzIGFyZSBzdXBwb3J0ZWQgYnkgbm9kZUF0
RmxvYXRQb2ludC4KICAgICBpZiAoY29udGVudEJveFJlY3QoKS5jb250YWlucyhwb2ludEluQm9y
ZGVyQm94KSB8fCAoIXNob3VsZEFwcGx5Vmlld3BvcnRDbGlwKCkgJiYgdmlzdWFsT3ZlcmZsb3dS
ZWN0KCkuY29udGFpbnMocG9pbnRJblBhcmVudCkpKSB7Ci0gICAgICAgIEZsb2F0UG9pbnQgbG9j
YWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVfb3IoQWZm
aW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KEZsb2F0UG9pbnQocG9pbnRJblBhcmVudCkpOworICAg
ICAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSB2YWx1ZU9yRGVmYXVsdChsb2NhbFRvUGFyZW50
VHJhbnNmb3JtKCkuaW52ZXJzZSgpKS5tYXBQb2ludChGbG9hdFBvaW50KHBvaW50SW5QYXJlbnQp
KTsKIAogICAgICAgICBmb3IgKFJlbmRlck9iamVjdCogY2hpbGQgPSBsYXN0Q2hpbGQoKTsgY2hp
bGQ7IGNoaWxkID0gY2hpbGQtPnByZXZpb3VzU2libGluZygpKSB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogbm9kZUF0RmxvYXRQb2ludCgpIGRvZXNuJ3QgaGFuZGxlIHJlY3QtYmFzZWQgaGl0IHRl
c3RzIHlldC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Q29udGFpbmVyLmNwcAppbmRleCA4YjA1NzRiN2Y3NDExNDkxMDRhMzIzZDZiZTI2NmQ0MjM4ZDhm
YzgwLi5jMGQyNTc0YjZiOTU5YTQ1ZjQyODhmYTA0ZTZjNGNkNDJmYjFkZTdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCkBA
IC0xNjEsNyArMTYxLDcgQEAgYm9vbCBSZW5kZXJTVkdDb250YWluZXI6Om5vZGVBdEZsb2F0UG9p
bnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3QKICAgICBpZiAoIXBvaW50
SXNJbnNpZGVWaWV3cG9ydENsaXAocG9pbnRJblBhcmVudCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0o
KS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5Q
YXJlbnQpOworICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IHZhbHVlT3JEZWZhdWx0KGxvY2Fs
VG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOwog
CiAgICAgaWYgKCFTVkdSZW5kZXJTdXBwb3J0Ojpwb2ludEluQ2xpcHBpbmdBcmVhKCp0aGlzLCBs
b2NhbFBvaW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAKaW5kZXggYTVk
YjFiZTI2OTk0NzMyYTdjNjkwZTZlYjQ4ZmE2YTFjOTIyOTFhZi4uMDEyOTkxOGIxYTkzM2E4OGQ2
MzFlMWZmZGVhMmRiNjkxZTlmMDYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCkBAIC0xNjksNyArMTY5LDcg
QEAgYm9vbCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhp
dFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXQKICAgICBpZiAoaGl0VGVzdEFjdGlvbiAhPSBIaXRU
ZXN0Rm9yZWdyb3VuZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRmxvYXRQb2ludCBs
b2NhbFBvaW50ID0gbG9jYWxUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJh
bnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOworICAgIEZsb2F0UG9pbnQgbG9jYWxQ
b2ludCA9IHZhbHVlT3JEZWZhdWx0KGxvY2FsVHJhbnNmb3JtKCkuaW52ZXJzZSgpKS5tYXBQb2lu
dChwb2ludEluUGFyZW50KTsKIAogICAgIC8vIEVhcmx5IGV4aXQgaWYgbG9jYWwgcG9pbnQgaXMg
bm90IGNvbnRhaW5lZCBpbiBjbGlwcGVkIHZpZXdwb3J0IGFyZWEKICAgICBpZiAoU1ZHUmVuZGVy
U3VwcG9ydDo6aXNPdmVyZmxvd0hpZGRlbigqdGhpcykgJiYgIW1fdmlld3BvcnQuY29udGFpbnMo
bG9jYWxQb2ludCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
SW1hZ2UuY3BwCmluZGV4IGEyM2I0OTEyMzc2NjhhOWNjMDU3MWIxMTMwOGJhYzgzODBiOWU5ZGQu
LjYxZGM2NzhiOTIxZDBmN2E1N2Y2NTMwNWI4Njk0MDIxMTk5MTVjMzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCkBAIC0yMTksNyArMjE5
LDcgQEAgYm9vbCBSZW5kZXJTVkdJbWFnZTo6bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0
UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3UKICAgICBQb2ludGVyRXZlbnRzSGl0UnVsZXMg
aGl0UnVsZXMoUG9pbnRlckV2ZW50c0hpdFJ1bGVzOjpTVkdfSU1BR0VfSElUVEVTVElORywgcmVx
dWVzdCwgc3R5bGUoKS5wb2ludGVyRXZlbnRzKCkpOwogICAgIGJvb2wgaXNWaXNpYmxlID0gKHN0
eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUpOwogICAgIGlmIChpc1Zp
c2libGUgfHwgIWhpdFJ1bGVzLnJlcXVpcmVWaXNpYmxlKSB7Ci0gICAgICAgIEZsb2F0UG9pbnQg
bG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVfb3Io
QWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOworICAgICAgICBGbG9h
dFBvaW50IGxvY2FsUG9pbnQgPSB2YWx1ZU9yRGVmYXVsdChsb2NhbFRvUGFyZW50VHJhbnNmb3Jt
KCkuaW52ZXJzZSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKICAgICAgICAgICAgIAogICAg
ICAgICBpZiAoIVNWR1JlbmRlclN1cHBvcnQ6OnBvaW50SW5DbGlwcGluZ0FyZWEoKnRoaXMsIGxv
Y2FsUG9pbnQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCmlu
ZGV4IGUzMTIxNzUzOGZiZDIzNjg4MGZmYTcyNjI5YzU4ZmFjMzFlZTJiMjQuLmI0YTJkNGI2ZmNi
MGFlMTE0ZWI2YmM4YjVkY2U5ODFlMjE3NGI5NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKQEAgLTI4
NSwxMCArMjg1LDEwIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpoaXRUZXN0Q2xp
cENvbnRlbnQoY29uc3QgRmxvYXRSZWN0JiBvYmplY3RCb3VuZGluCiAgICAgICAgIEFmZmluZVRy
YW5zZm9ybSB0cmFuc2Zvcm07CiAgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUob2JqZWN0Qm91
bmRpbmdCb3gubG9jYXRpb24oKSk7CiAgICAgICAgIHRyYW5zZm9ybS5zY2FsZShvYmplY3RCb3Vu
ZGluZ0JveC5zaXplKCkpOwotICAgICAgICBwb2ludCA9IHRyYW5zZm9ybS5pbnZlcnNlKCkudmFs
dWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50KTsKKyAgICAgICAgcG9pbnQg
PSB2YWx1ZU9yRGVmYXVsdCh0cmFuc2Zvcm0uaW52ZXJzZSgpKS5tYXBQb2ludChwb2ludCk7CiAg
ICAgfQogCi0gICAgcG9pbnQgPSBjbGlwUGF0aEVsZW1lbnQoKS5hbmltYXRlZExvY2FsVHJhbnNm
b3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2lu
dCk7CisgICAgcG9pbnQgPSB2YWx1ZU9yRGVmYXVsdChjbGlwUGF0aEVsZW1lbnQoKS5hbmltYXRl
ZExvY2FsVHJhbnNmb3JtKCkuaW52ZXJzZSgpKS5tYXBQb2ludChwb2ludCk7CiAKICAgICBmb3Ig
KE5vZGUqIGNoaWxkTm9kZSA9IGNsaXBQYXRoRWxlbWVudCgpLmZpcnN0Q2hpbGQoKTsgY2hpbGRO
b2RlOyBjaGlsZE5vZGUgPSBjaGlsZE5vZGUtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IGNoaWxkTm9kZS0+cmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCmluZGV4IDU1OGIxYjBiMTFi
MzMzOTgyYjNjZWExNGEzNmU0OTQzZGI0YTU1NGEuLjExNGFlMTUzZWQwYmRjZTI0ZjQ3ZmQ5Y2Nk
ZjU3OGRhNWVjNTQ0NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSb290LmNwcApAQCAtNDE4LDcgKzQxOCw3IEBAIExheW91dFJlY3QgUmVuZGVyU1ZHUm9v
dDo6Y2xpcHBlZE92ZXJmbG93UmVjdChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBh
CiAgICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxpdHk6OlZpc2libGUgJiYg
IWVuY2xvc2luZ0xheWVyKCktPmhhc1Zpc2libGVDb250ZW50KCkpCiAgICAgICAgIHJldHVybiBM
YXlvdXRSZWN0KCk7CiAKLSAgICBhdXRvIHJlcGFpbnRSZWN0ID0gTGF5b3V0UmVjdChtX3ZpZXdC
b3hUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0
KGJvcmRlckJveFJlY3QoKSkpOworICAgIGF1dG8gcmVwYWludFJlY3QgPSBMYXlvdXRSZWN0KHZh
bHVlT3JEZWZhdWx0KG1fdmlld0JveFRyYW5zZm9ybS5pbnZlcnNlKCkpLm1hcFJlY3QoYm9yZGVy
Qm94UmVjdCgpKSk7CiAgICAgcmV0dXJuIGNvbXB1dGVSZWN0KHJlcGFpbnRSZWN0LCByZXBhaW50
Q29udGFpbmVyLCBjb250ZXh0KTsKIH0KIApAQCAtNjI4LDcgKzYyOCw3IEBAIHZvaWQgUmVuZGVy
U1ZHUm9vdDo6YXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwg
Y29uc3QgUmVuZGVyCiAKIHZvaWQgUmVuZGVyU1ZHUm9vdDo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8
SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNv
bnN0CiB7Ci0gICAgYXV0byBsb2NhbFJlY3QgPSBMYXlvdXRSZWN0KG1fc3VwcGxlbWVudGFsTG9j
YWxUb1BhcmVudFRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkp
Lm1hcFJlY3QoYm9yZGVyQm94UmVjdCgpKSk7CisgICAgYXV0byBsb2NhbFJlY3QgPSBMYXlvdXRS
ZWN0KHZhbHVlT3JEZWZhdWx0KG1fc3VwcGxlbWVudGFsTG9jYWxUb1BhcmVudFRyYW5zZm9ybS5p
bnZlcnNlKCkpLm1hcFJlY3QoYm9yZGVyQm94UmVjdCgpKSk7CiAgICAgcmVjdHMuYXBwZW5kKHNu
YXBwZWRJbnRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBsb2NhbFJlY3Quc2l6ZSgpKSk7CiB9CiAK
QEAgLTYzOCw3ICs2MzgsNyBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6OmFic29sdXRlUXVhZHMoVmVj
dG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29ucwogICAgIGlmIChmcmFn
bWVudGVkRmxvdyAmJiBmcmFnbWVudGVkRmxvdy0+YWJzb2x1dGVRdWFkc0ZvckJveChxdWFkcywg
d2FzRml4ZWQsIHRoaXMpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGxvY2FsUmVjdCA9
IEZsb2F0UmVjdChtX3N1cHBsZW1lbnRhbExvY2FsVG9QYXJlbnRUcmFuc2Zvcm0uaW52ZXJzZSgp
LnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KGJvcmRlckJveFJlY3QoKSkpOwor
ICAgIGF1dG8gbG9jYWxSZWN0ID0gRmxvYXRSZWN0KHZhbHVlT3JEZWZhdWx0KG1fc3VwcGxlbWVu
dGFsTG9jYWxUb1BhcmVudFRyYW5zZm9ybS5pbnZlcnNlKCkpLm1hcFJlY3QoYm9yZGVyQm94UmVj
dCgpKSk7CiAgICAgcXVhZHMuYXBwZW5kKGxvY2FsVG9BYnNvbHV0ZVF1YWQobG9jYWxSZWN0LCBV
c2VUcmFuc2Zvcm1zLCB3YXNGaXhlZCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCmluZGV4IDIzZDg0MGFmMmE2NDQ1YTFhYzBiZTk4
MmM3YzVkNTIyNTdjMDVhY2UuLjQzODZhY2RiYmU0ZjY1ZTY0ZmY3M2ZlM2IxMzk2ZDQxZWJmYThi
NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hh
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUu
Y3BwCkBAIC0zNDcsNyArMzQ3LDcgQEAgYm9vbCBSZW5kZXJTVkdTaGFwZTo6bm9kZUF0RmxvYXRQ
b2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3UKICAgICBpZiAo
aGl0VGVzdEFjdGlvbiAhPSBIaXRUZXN0Rm9yZWdyb3VuZCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbV9sb2NhbFRyYW5zZm9ybS5pbnZlcnNl
KCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOwor
ICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IHZhbHVlT3JEZWZhdWx0KG1fbG9jYWxUcmFuc2Zv
cm0uaW52ZXJzZSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKIAogICAgIGlmICghU1ZHUmVu
ZGVyU3VwcG9ydDo6cG9pbnRJbkNsaXBwaW5nQXJlYSgqdGhpcywgbG9jYWxQb2ludCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1RleHQuY3BwCmluZGV4IDYzYWNhZWNmOTU2NzQzY2VlYjYxMjAwNWQ2ZDc5NzI2YTgyOTkz
ZjcuLjFkYjBlYTc1MGQ1NTRjZDNlZWMxMTRjYzM2MjYxZWE4YWU0YjVjODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcApAQCAtNDA5LDcgKzQw
OSw3IEBAIGJvb2wgUmVuZGVyU1ZHVGV4dDo6bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0
UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsCiAgICAgaWYgKGlzVmlzaWJsZSB8fCAhaGl0
UnVsZXMucmVxdWlyZVZpc2libGUpIHsKICAgICAgICAgaWYgKChoaXRSdWxlcy5jYW5IaXRTdHJv
a2UgJiYgKHN0eWxlKCkuc3ZnU3R5bGUoKS5oYXNTdHJva2UoKSB8fCAhaGl0UnVsZXMucmVxdWly
ZVN0cm9rZSkpCiAgICAgICAgICAgICB8fCAoaGl0UnVsZXMuY2FuSGl0RmlsbCAmJiAoc3R5bGUo
KS5zdmdTdHlsZSgpLmhhc0ZpbGwoKSB8fCAhaGl0UnVsZXMucmVxdWlyZUZpbGwpKSkgewotICAg
ICAgICAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgp
LmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBh
cmVudCk7CisgICAgICAgICAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSB2YWx1ZU9yRGVmYXVs
dChsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgpKS5tYXBQb2ludChwb2ludEluUGFy
ZW50KTsKIAogICAgICAgICAgICAgaWYgKCFTVkdSZW5kZXJTdXBwb3J0Ojpwb2ludEluQ2xpcHBp
bmdBcmVhKCp0aGlzLCBsb2NhbFBvaW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
ICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5k
ZXJTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3Vw
cG9ydC5jcHAKaW5kZXggYWI1NjI2NjhiNDBkYTgwN2FkYmMyOWQxODU2MDQzZTM2YWU3NDRlMy4u
YzkzNTAwOTVhNzU0M2ExMzliZjBmMjczMDMzODZhMmIyOWE2NWMwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCkBAIC00MjEsNyAr
NDIxLDcgQEAgdm9pZCBTVkdSZW5kZXJTdXBwb3J0OjpjbGlwQ29udGV4dFRvQ1NTQ2xpcHBpbmdB
cmVhKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY28KICAgICAgICAgcmVmZXJlbmNlQm94ID0g
bG9jYWxUb1BhcmVudFRyYW5zZm9ybS5tYXBSZWN0KHJlZmVyZW5jZUJveCk7CiAKICAgICAgICAg
YXV0byBwYXRoID0gY2xpcFBhdGgucGF0aEZvclJlZmVyZW5jZVJlY3QocmVmZXJlbmNlQm94KTsK
LSAgICAgICAgcGF0aC50cmFuc2Zvcm0obG9jYWxUb1BhcmVudFRyYW5zZm9ybS5pbnZlcnNlKCku
dmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpKTsKKyAgICAgICAgcGF0aC50cmFuc2Zvcm0odmFs
dWVPckRlZmF1bHQobG9jYWxUb1BhcmVudFRyYW5zZm9ybS5pbnZlcnNlKCkpKTsKIAogICAgICAg
ICBjb250ZXh0LmNsaXBQYXRoKHBhdGgsIGNsaXBQYXRoLndpbmRSdWxlKCkpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQu
Y3BwCmluZGV4IDc3ZTEyNmU2NjRhMDIyMTBhNGY5ZGU3ZWMxNjI5MDg1YmYyMDIxZDMuLmEyOTFj
ZWQyMzVlNmFlNDYxNDY0ZWYxNDc5YzU1OGZmMDBiYWNhNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMzA3LDcg
KzMwNyw3IEBAIHZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBBZmZpCiAKICAgICAvLyBUaGUgbWFzayBpbWFn
ZSBoYXMgYmVlbiBjcmVhdGVkIGluIHRoZSBhYnNvbHV0ZSBjb29yZGluYXRlIHNwYWNlLCBhcyB0
aGUgaW1hZ2Ugc2hvdWxkIG5vdCBiZSBzY2FsZWQuCiAgICAgLy8gU28gdGhlIGFjdHVhbCBtYXNr
aW5nIHByb2Nlc3MgaGFzIHRvIGJlIGRvbmUgaW4gdGhlIGFic29sdXRlIGNvb3JkaW5hdGUgc3Bh
Y2UgYXMgd2VsbC4KLSAgICBjb250ZXh0LmNvbmNhdENUTShhYnNvbHV0ZVRyYW5zZm9ybS5pbnZl
cnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpKTsKKyAgICBjb250ZXh0LmNvbmNhdENU
TSh2YWx1ZU9yRGVmYXVsdChhYnNvbHV0ZVRyYW5zZm9ybS5pbnZlcnNlKCkpKTsKICAgICBjb250
ZXh0LmNsaXBUb0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgYWJzb2x1dGVUYXJnZXRSZWN0KTsK
ICAgICBjb250ZXh0LmNvbmNhdENUTShhYnNvbHV0ZVRyYW5zZm9ybSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCmluZGV4IDkwYjc2OTNlOGEz
MzNmMTk5ZWUzYmQzMDE1YWQ5MzZlMGEwNDNkNzAuLmY1Mjk5OTY2NmE4MWJmZDU0MGFkZmUzYzQ3
ZjA5OWU4YjNkZmE5YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
TW90aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rp
b25FbGVtZW50LmNwcApAQCAtMTYxLDE1ICsxNjEsMTUgQEAgdm9pZCBTVkdBbmltYXRlTW90aW9u
RWxlbWVudDo6c3RvcEFuaW1hdGlvbihTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KQogCiBib29s
IFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpjYWxjdWxhdGVUb0F0RW5kT2ZEdXJhdGlvblZhbHVl
KGNvbnN0IFN0cmluZyYgdG9BdEVuZE9mRHVyYXRpb25TdHJpbmcpCiB7Ci0gICAgbV90b1BvaW50
QXRFbmRPZkR1cmF0aW9uID0gcGFyc2VQb2ludCh0b0F0RW5kT2ZEdXJhdGlvblN0cmluZykudmFs
dWVfb3IoRmxvYXRQb2ludCB7IH0pOworICAgIG1fdG9Qb2ludEF0RW5kT2ZEdXJhdGlvbiA9IHZh
bHVlT3JEZWZhdWx0KHBhcnNlUG9pbnQodG9BdEVuZE9mRHVyYXRpb25TdHJpbmcpKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6Y2FsY3VsYXRl
RnJvbUFuZFRvVmFsdWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0
b1N0cmluZykKIHsKICAgICBtX3RvUG9pbnRBdEVuZE9mRHVyYXRpb24gPSBzdGQ6Om51bGxvcHQ7
Ci0gICAgbV9mcm9tUG9pbnQgPSBwYXJzZVBvaW50KGZyb21TdHJpbmcpLnZhbHVlX29yKEZsb2F0
UG9pbnQgeyB9KTsKLSAgICBtX3RvUG9pbnQgPSBwYXJzZVBvaW50KHRvU3RyaW5nKS52YWx1ZV9v
cihGbG9hdFBvaW50IHsgfSk7CisgICAgbV9mcm9tUG9pbnQgPSB2YWx1ZU9yRGVmYXVsdChwYXJz
ZVBvaW50KGZyb21TdHJpbmcpKTsKKyAgICBtX3RvUG9pbnQgPSB2YWx1ZU9yRGVmYXVsdChwYXJz
ZVBvaW50KHRvU3RyaW5nKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAgICAgCkBAIC0xNzgsOCAr
MTc4LDggQEAgYm9vbCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6Y2FsY3VsYXRlRnJvbUFuZEJ5
VmFsdWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywKICAgICBtX3RvUG9pbnRBdEVuZE9mRHVy
YXRpb24gPSBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKGFuaW1hdGlvbk1vZGUoKSA9PSBBbmltYXRp
b25Nb2RlOjpCeSAmJiAhaXNBZGRpdGl2ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
bV9mcm9tUG9pbnQgPSBwYXJzZVBvaW50KGZyb21TdHJpbmcpLnZhbHVlX29yKEZsb2F0UG9pbnQg
eyB9KTsKLSAgICBhdXRvIGJ5UG9pbnQgPSBwYXJzZVBvaW50KGJ5U3RyaW5nKS52YWx1ZV9vcihG
bG9hdFBvaW50IHsgfSk7CisgICAgbV9mcm9tUG9pbnQgPSB2YWx1ZU9yRGVmYXVsdChwYXJzZVBv
aW50KGZyb21TdHJpbmcpKTsKKyAgICBhdXRvIGJ5UG9pbnQgPSB2YWx1ZU9yRGVmYXVsdChwYXJz
ZVBvaW50KGJ5U3RyaW5nKSk7CiAgICAgbV90b1BvaW50ID0gRmxvYXRQb2ludChtX2Zyb21Qb2lu
dC54KCkgKyBieVBvaW50LngoKSwgbV9mcm9tUG9pbnQueSgpICsgYnlQb2ludC55KCkpOwogICAg
IHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RG
Rm9udENvbnZlcnNpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZl
cnNpb24uY3BwCmluZGV4IDU1ZTMxODI5ZGVhNGI3YWNkMTAxNTY1OGIzOWU0Y2UzZGFiYmY0NDIu
LmM2NzFjMzcwZjM0Y2Y1MDc2ZmVlMjRjMTkyNWQ4ZDk2MjE0NzIwNDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAKQEAgLTEyOTIsNyArMTI5Miw3
IEBAIHZvaWQgU1ZHVG9PVEZGb250Q29udmVydGVyOjpwcm9jZXNzR2x5cGhFbGVtZW50KGNvbnN0
IFNWR0VsZW1lbnQmIGdseXBoT3JNaXNzaW5nCiAgICAgaWYgKGdseXBoQm91bmRpbmdCb3gpCiAg
ICAgICAgIG1fbWluUmlnaHRTaWRlQmVhcmluZyA9IHN0ZDo6bWluKG1fbWluUmlnaHRTaWRlQmVh
cmluZywgaG9yaXpvbnRhbEFkdmFuY2UgLSBnbHlwaEJvdW5kaW5nQm94LnZhbHVlKCkubWF4WCgp
KTsKIAotICAgIG1fZ2x5cGhzLmFwcGVuZChHbHlwaERhdGEoV1RGTW92ZShwYXRoKSwgZ2x5cGhF
bGVtZW50LCBob3Jpem9udGFsQWR2YW5jZSwgdmVydGljYWxBZHZhbmNlLCBnbHlwaEJvdW5kaW5n
Qm94LnZhbHVlX29yKEZsb2F0UmVjdCgpKSwgY29kZXBvaW50cykpOworICAgIG1fZ2x5cGhzLmFw
cGVuZChHbHlwaERhdGEoV1RGTW92ZShwYXRoKSwgZ2x5cGhFbGVtZW50LCBob3Jpem9udGFsQWR2
YW5jZSwgdmVydGljYWxBZHZhbmNlLCB2YWx1ZU9yRGVmYXVsdChnbHlwaEJvdW5kaW5nQm94KSwg
Y29kZXBvaW50cykpOwogfQogCiB2b2lkIFNWR1RvT1RGRm9udENvbnZlcnRlcjo6YXBwZW5kTGln
YXR1cmVHbHlwaHMoKQpAQCAtMTQxNiw3ICsxNDE2LDcgQEAgU1ZHVG9PVEZGb250Q29udmVydGVy
OjpTVkdUb09URkZvbnRDb252ZXJ0ZXIoY29uc3QgU1ZHRm9udEVsZW1lbnQmIGZvbnRFbGVtZW50
KQogICAgICAgICAgICAgcHJvY2Vzc0dseXBoRWxlbWVudChnbHlwaEVsZW1lbnQsICZnbHlwaEVs
ZW1lbnQsIGRlZmF1bHRIb3Jpem9udGFsQWR2YW5jZSwgZGVmYXVsdFZlcnRpY2FsQWR2YW5jZSwg
dW5pY29kZUF0dHJpYnV0ZSwgYm91bmRpbmdCb3gpOwogICAgIH0KIAotICAgIG1fYm91bmRpbmdC
b3ggPSBib3VuZGluZ0JveC52YWx1ZV9vcihGbG9hdFJlY3QoKSk7CisgICAgbV9ib3VuZGluZ0Jv
eCA9IHZhbHVlT3JEZWZhdWx0KGJvdW5kaW5nQm94KTsKIAogICAgIGFwcGVuZExpZ2F0dXJlR2x5
cGhzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1By
b3BlcnR5VHJhaXRzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0
eVRyYWl0cy5oCmluZGV4IDExMDRkOTNhNzEzYjlkNTBiMzFhYzdkNDJmYjk1NjU2MjRmNWE5ZWMu
LmZjMTc3OTBmYzRlNmI1NTY0Nzk0MjQzNWFkMWU4YTJhYmYzMGY1MGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuaApAQCAtMTA0LDcg
KzEwNCw3IEBAIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0
Pj4gewogICAgIHN0YXRpYyBzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiBpbml0aWFsVmFsdWUoKSB7
IHJldHVybiB7IH07IH0KICAgICBzdGF0aWMgc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gZnJvbVN0
cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICB7Ci0gICAgICAgIHJldHVybiBwYXJzZU51
bWJlck9wdGlvbmFsTnVtYmVyKHN0cmluZykudmFsdWVfb3Ioc3RkOjpwYWlyPGZsb2F0LCBmbG9h
dD4geyB9KTsKKyAgICAgICAgcmV0dXJuIHZhbHVlT3JEZWZhdWx0KHBhcnNlTnVtYmVyT3B0aW9u
YWxOdW1iZXIoc3RyaW5nKSk7CiAgICAgfQogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6
cGFpcjxmbG9hdCwgZmxvYXQ+PiBwYXJzZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgU3Ry
aW5nJikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGluaXRpYWxWYWx1ZSgpOyB9CiAg
ICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PikgeyBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KQEAgLTExNSw3ICsxMTUs
NyBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8RmxvYXRQb2ludD4gewogICAgIHN0YXRpYyBG
bG9hdFBvaW50IGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIEZsb2F0UG9pbnQoKTsgfQogICAgIHN0
YXRpYyBGbG9hdFBvaW50IGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgewot
ICAgICAgICByZXR1cm4gcGFyc2VQb2ludChzdHJpbmcpLnZhbHVlX29yKEZsb2F0UG9pbnQgeyB9
KTsKKyAgICAgICAgcmV0dXJuIHZhbHVlT3JEZWZhdWx0KHBhcnNlUG9pbnQoc3RyaW5nKSk7CiAg
ICAgfQogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IHBhcnNlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICB7CkBAIC0xMzIsNyArMTMy
LDcgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPEZsb2F0UmVjdD4gewogICAgIHN0YXRpYyBG
bG9hdFJlY3QgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gRmxvYXRSZWN0KCk7IH0KICAgICBzdGF0
aWMgRmxvYXRSZWN0IGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgewotICAg
ICAgICByZXR1cm4gcGFyc2VSZWN0KHN0cmluZykudmFsdWVfb3IoRmxvYXRSZWN0IHsgfSk7Cisg
ICAgICAgIHJldHVybiB2YWx1ZU9yRGVmYXVsdChwYXJzZVJlY3Qoc3RyaW5nKSk7CiAgICAgfQog
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4gcGFyc2UoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAppbmRleCA5MGM3MTAyM2E4ZDhlMzJlNDczYzE2MzY5OWE4ZDU4NWVhMDE3OTc4
Li44N2RlZTViYTljODEzZGJmZGVkOTgzM2EwNWM0NzBlYTMwYTUyYTI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yNzk0LDEzICsyNzk0LDEzIEBAIGJvb2wgSW50ZXJu
YWxzOjppc0VsZW1lbnRBbGl2ZShEb2N1bWVudCYgZG9jdW1lbnQsIHVpbnQ2NF90IGVsZW1lbnRJ
ZGVudGlmaWVyKSBjCiB1aW50NjRfdCBJbnRlcm5hbHM6OmZyYW1lSWRlbnRpZmllcihjb25zdCBE
b2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVu
dC5wYWdlKCkpCi0gICAgICAgIHJldHVybiBwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5mcmFt
ZUlEKCkudmFsdWVfb3IoRnJhbWVJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKTsKKyAgICAgICAg
cmV0dXJuIHZhbHVlT3JEZWZhdWx0KHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmZyYW1lSUQo
KSkudG9VSW50NjQoKTsKICAgICByZXR1cm4gMDsKIH0KIAogdWludDY0X3QgSW50ZXJuYWxzOjpw
YWdlSWRlbnRpZmllcihjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIGRvY3VtZW50LnBhZ2VJRCgpLnZhbHVlX29yKFBhZ2VJZGVudGlmaWVyIHsgfSkudG9VSW50
NjQoKTsKKyAgICByZXR1cm4gdmFsdWVPckRlZmF1bHQoZG9jdW1lbnQucGFnZUlEKCkpLnRvVUlu
dDY0KCk7CiB9CiAKIGJvb2wgSW50ZXJuYWxzOjppc0FueVdvcmtsZXRHbG9iYWxTY29wZUFsaXZl
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAppbmRleCA5YThmYjM1Y2E1MzYxMDViYjZkNmZjNDZl
ZTEyMjQ1OTMzZjcwYmY4Li43NWQ5OGE5MjY3Njg1MGNlY2IyNGI5ODkyZDBkMzZhMzBhNjJiMjM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Ny
aXB0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NjcmlwdFN0b3JhZ2UuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHN0YXRpYyBib29sIHNob3Vs
ZFVzZUZpbGVNYXBwaW5nKHVpbnQ2NF90IGZpbGVTaXplKQogCiBTV1NjcmlwdFN0b3JhZ2U6OlNX
U2NyaXB0U3RvcmFnZShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkKICAgICA6IG1fZGlyZWN0b3J5
KGRpcmVjdG9yeSkKLSAgICAsIG1fc2FsdChGaWxlU3lzdGVtOjpyZWFkT3JNYWtlU2FsdChzYWx0
UGF0aCgpKS52YWx1ZV9vcihGaWxlU3lzdGVtOjpTYWx0KCkpKQorICAgICwgbV9zYWx0KHZhbHVl
T3JEZWZhdWx0KEZpbGVTeXN0ZW06OnJlYWRPck1ha2VTYWx0KHNhbHRQYXRoKCkpKSkKIHsKICAg
ICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
aW5kZXggN2I2NGVhYzBlNmEzYTkwMTE0ZmI4MTk4NTM0YjVkZDkyY2I5ZGEyZi4uMWZhNTQyNjUw
MzE4ZGMxMjBhZWE5MmE0ZGYwOGNiNTViYmViMjMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKQEAgLTQ5Nyw3ICs0OTcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZl
dGNoVGFzaz4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNyZWF0ZUZldAogCiB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzY2hlZHVsZVJlc291cmNlTG9hZChOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzLCBzdGQ6Om9wdGlvbmFs
PE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPiBleGlzdGluZ0xvYWRlclRvUmVzdW1lKQog
ewotICAgIENPTk5FQ1RJT05fUkVMRUFTRV9MT0coTG9hZGluZywgInNjaGVkdWxlUmVzb3VyY2VM
b2FkOiAocGFyZW50UElEPSVkLCBwYWdlUHJveHlJRD0lIiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUi
IFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCByZXNvdXJjZUlEPSUiIFBSSXU2NCAiLCBl
eGlzdGluZ0xvYWRlclRvUmVzdW1lPSUiIFBSSXU2NCAiKSIsIGxvYWRQYXJhbWV0ZXJzLnBhcmVu
dFBJRCwgbG9hZFBhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQudG9VSW50NjQoKSwgbG9hZFBhcmFt
ZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQudG9V
SW50NjQoKSwgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllci50b1VJbnQ2NCgpLCBleGlzdGluZ0xv
YWRlclRvUmVzdW1lLnZhbHVlX29yKE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHsgfSku
dG9VSW50NjQoKSk7CisgICAgQ09OTkVDVElPTl9SRUxFQVNFX0xPRyhMb2FkaW5nLCAic2NoZWR1
bGVSZXNvdXJjZUxvYWQ6IChwYXJlbnRQSUQ9JWQsIHBhZ2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3
ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIHJlc291cmNlSUQ9JSIg
UFJJdTY0ICIsIGV4aXN0aW5nTG9hZGVyVG9SZXN1bWU9JSIgUFJJdTY0ICIpIiwgbG9hZFBhcmFt
ZXRlcnMucGFyZW50UElELCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRC50b1VJbnQ2NCgp
LCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbG9hZFBhcmFtZXRlcnMud2Vi
RnJhbWVJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyLnRvVUludDY0KCks
IHZhbHVlT3JEZWZhdWx0KGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUpLnRvVUludDY0KCkpOwogCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29y
a1Nlc3Npb24oKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmNwcAppbmRleCBiMDExYTU4YmEwZGE1YzA2ZjRiOGVjY2Q5ZThhNDhiYTA2ZWUwZDlj
Li43ZDYzMzQzZjJmNThjNzhmNjk2NWU3MjRkMjEyNzMwMDIwZjVkODZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtNjA3LDcgKzYw
Nyw3IEBAIHZvaWQgTmV0d29ya1Nlc3Npb246OnVucmVnaXN0ZXJTV1NlcnZlckNvbm5lY3Rpb24o
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb25uZWN0CiBTV1NlcnZlciYgTmV0d29ya1Nlc3Npb246
OmVuc3VyZVNXU2VydmVyKCkKIHsKICAgICBpZiAoIW1fc3dTZXJ2ZXIpIHsKLSAgICAgICAgYXV0
byBpbmZvID0gbV9zZXJ2aWNlV29ya2VySW5mby52YWx1ZV9vcihTZXJ2aWNlV29ya2VySW5mbyB7
IH0pOworICAgICAgICBhdXRvIGluZm8gPSB2YWx1ZU9yRGVmYXVsdChtX3NlcnZpY2VXb3JrZXJJ
bmZvKTsKICAgICAgICAgYXV0byBwYXRoID0gaW5mby5kYXRhYmFzZVBhdGg7CiAgICAgICAgIC8v
IFRoZXJlIHNob3VsZCBhbHJlYWR5IGJlIGEgcmVnaXN0ZXJlZCBwYXRoIGZvciB0aGlzIFBBTDo6
U2Vzc2lvbklELgogICAgICAgICAvLyBJZiB0aGVyZSdzIG5vdCwgdGhlbiB3aGVyZSBkaWQgdGhp
cyBQQUw6OlNlc3Npb25JRCBjb21lIGZyb20/CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcAppbmRl
eCBjODc1YzkzNjRlZTA1MzUyNmQzZjllN2MzNjI3NWQ5MzE5YzVjMTBlLi42NWYwZTQ1MTJjY2E4
NzFiNDU4ZTc5MjAyZjFhOTM4NmI4NDBmZGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAK
QEAgLTg0LDcgKzg0LDcgQEAgRmlsZVRpbWVzIGZpbGVUaW1lcyhjb25zdCBTdHJpbmcmIHBhdGgp
CiAjZWxpZiBPUyhXSU5ET1dTKQogICAgIGF1dG8gY3JlYXRlVGltZSA9IEZpbGVTeXN0ZW06OmZp
bGVDcmVhdGlvblRpbWUocGF0aCk7CiAgICAgYXV0byBtb2RpZnlUaW1lID0gRmlsZVN5c3RlbTo6
ZmlsZU1vZGlmaWNhdGlvblRpbWUocGF0aCk7Ci0gICAgcmV0dXJuIHsgY3JlYXRlVGltZS52YWx1
ZV9vcihXYWxsVGltZSgpKSwgbW9kaWZ5VGltZS52YWx1ZV9vcihXYWxsVGltZSgpKSB9OworICAg
IHJldHVybiB7IHZhbHVlT3JEZWZhdWx0KGNyZWF0ZVRpbWUpLCB2YWx1ZU9yRGVmYXVsdChtb2Rp
ZnlUaW1lKSB9OwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXgg
ZTIxODExZTc2Mjg1Nzk0MTIzOGU4NjcxNjZiZDRiODdhMzE4NzgzZC4uOTMwMDllMjQ5ZWQxYTRj
ODk3Y2E5MTkwYzNmMjRkNWEzYzQ1NDg1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05ldHdvcmtTdG9yYWdlTWFuYWdlci5jcHAK
QEAgLTExOCw3ICsxMTgsNyBAQCBOZXR3b3JrU3RvcmFnZU1hbmFnZXI6Ok5ldHdvcmtTdG9yYWdl
TWFuYWdlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cgogICAgICAgICBtX2N1
c3RvbUxvY2FsU3RvcmFnZVBhdGggPSBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoOwogICAgICAgICBp
ZiAoIW1fcGF0aC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGF1dG8gc2FsdFBhdGggPSBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9wYXRoLCAic2FsdCIpOwotICAgICAg
ICAgICAgbV9zYWx0ID0gRmlsZVN5c3RlbTo6cmVhZE9yTWFrZVNhbHQoc2FsdFBhdGgpLnZhbHVl
X29yKEZpbGVTeXN0ZW06OlNhbHQoKSk7CisgICAgICAgICAgICBtX3NhbHQgPSB2YWx1ZU9yRGVm
YXVsdChGaWxlU3lzdGVtOjpyZWFkT3JNYWtlU2FsdChzYWx0UGF0aCkpOwogICAgICAgICB9CiAg
ICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1NpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5jcHAKaW5kZXggYTlmNTQ4NDNmZDli
OWIzNTZjZGI2NmFhYjQ1ODA4ZDA5MGM5M2U5Yi4uZTAzMzgxY2U1MDJlN2QxZTM5MTU3NDM5Mjcw
MWVmOGZkMzdiYjA3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcApAQCAtMjc1LDcg
KzI3NSw3IEBAIHZvaWQgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjp0cmFuc2l0aW9uSW5wdXRT
b3VyY2VUb1N0YXRlKFNpbXVsYXRlZElucHV0U291cmNlCiAjaWYgIUVOQUJMRShXRUJEUklWRVJf
TU9VU0VfSU5URVJBQ1RJT05TKQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogI2Vsc2UKLSAgICAgICAgcmVzb2x2ZUxvY2F0aW9uKGEubG9jYXRpb24udmFsdWVfb3IoV2Vi
Q29yZTo6SW50UG9pbnQoKSksIGIubG9jYXRpb24sIGIub3JpZ2luLnZhbHVlX29yKE1vdXNlTW92
ZU9yaWdpbjo6Vmlld3BvcnQpLCBiLm5vZGVIYW5kbGUsIFt0aGlzLCAmYSwgJmIsIGlucHV0U291
cmNlID0gaW5wdXRTb3VyY2UudHlwZSwgZXZlbnREaXNwYXRjaEZpbmlzaGVkID0gV1RGTW92ZShl
dmVudERpc3BhdGNoRmluaXNoZWQpXShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBs
b2NhdGlvbiwgc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgbXV0
YWJsZSB7CisgICAgICAgIHJlc29sdmVMb2NhdGlvbih2YWx1ZU9yRGVmYXVsdChhLmxvY2F0aW9u
KSwgYi5sb2NhdGlvbiwgYi5vcmlnaW4udmFsdWVfb3IoTW91c2VNb3ZlT3JpZ2luOjpWaWV3cG9y
dCksIGIubm9kZUhhbmRsZSwgW3RoaXMsICZhLCAmYiwgaW5wdXRTb3VyY2UgPSBpbnB1dFNvdXJj
ZS50eXBlLCBldmVudERpc3BhdGNoRmluaXNoZWQgPSBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hGaW5p
c2hlZCldKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGxvY2F0aW9uLCBzdGQ6Om9w
dGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgICAgIGV2ZW50RGlzcGF0Y2hGaW5pc2hlZChl
cnJvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzE2LDcgKzMxNiw3IEBAIHZvaWQg
U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjp0cmFuc2l0aW9uSW5wdXRTb3VyY2VUb1N0YXRlKFNp
bXVsYXRlZElucHV0U291cmNlCiAjaWYgIUVOQUJMRShXRUJEUklWRVJfVE9VQ0hfSU5URVJBQ1RJ
T05TKQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2Vsc2UKLSAgICAg
ICAgcmVzb2x2ZUxvY2F0aW9uKGEubG9jYXRpb24udmFsdWVfb3IoV2ViQ29yZTo6SW50UG9pbnQo
KSksIGIubG9jYXRpb24sIGIub3JpZ2luLnZhbHVlX29yKE1vdXNlTW92ZU9yaWdpbjo6Vmlld3Bv
cnQpLCBiLm5vZGVIYW5kbGUsIFt0aGlzLCAmYSwgJmIsIGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCA9
IFdURk1vdmUoZXZlbnREaXNwYXRjaEZpbmlzaGVkKV0oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpJ
bnRQb2ludD4gbG9jYXRpb24sIHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4g
ZXJyb3IpIG11dGFibGUgeworICAgICAgICByZXNvbHZlTG9jYXRpb24odmFsdWVPckRlZmF1bHQo
YS5sb2NhdGlvbiksIGIubG9jYXRpb24sIGIub3JpZ2luLnZhbHVlX29yKE1vdXNlTW92ZU9yaWdp
bjo6Vmlld3BvcnQpLCBiLm5vZGVIYW5kbGUsIFt0aGlzLCAmYSwgJmIsIGV2ZW50RGlzcGF0Y2hG
aW5pc2hlZCA9IFdURk1vdmUoZXZlbnREaXNwYXRjaEZpbmlzaGVkKV0oc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpJbnRQb2ludD4gbG9jYXRpb24sIHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1h
bmRFcnJvcj4gZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAg
ICAgICAgICAgICAgZXZlbnREaXNwYXRjaEZpbmlzaGVkKGVycm9yKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CkBAIC00MjIsNyArNDIyLDcgQEAgdm9pZCBTaW11bGF0ZWRJbnB1dERpc3BhdGNo
ZXI6OnRyYW5zaXRpb25JbnB1dFNvdXJjZVRvU3RhdGUoU2ltdWxhdGVkSW5wdXRTb3VyY2UKICNp
ZiAhRU5BQkxFKFdFQkRSSVZFUl9XSEVFTF9JTlRFUkFDVElPTlMpCiAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZWxzZQotICAgICAgICByZXNvbHZlTG9jYXRpb24oYS5s
b2NhdGlvbi52YWx1ZV9vcihXZWJDb3JlOjpJbnRQb2ludCgpKSwgYi5sb2NhdGlvbiwgYi5vcmln
aW4udmFsdWVfb3IoTW91c2VNb3ZlT3JpZ2luOjpWaWV3cG9ydCksIGIubm9kZUhhbmRsZSwgW3Ro
aXMsICZhLCAmYiwgZXZlbnREaXNwYXRjaEZpbmlzaGVkID0gV1RGTW92ZShldmVudERpc3BhdGNo
RmluaXNoZWQpXShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBsb2NhdGlvbiwgc3Rk
OjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgbXV0YWJsZSB7CisgICAg
ICAgIHJlc29sdmVMb2NhdGlvbih2YWx1ZU9yRGVmYXVsdChhLmxvY2F0aW9uKSwgYi5sb2NhdGlv
biwgYi5vcmlnaW4udmFsdWVfb3IoTW91c2VNb3ZlT3JpZ2luOjpWaWV3cG9ydCksIGIubm9kZUhh
bmRsZSwgW3RoaXMsICZhLCAmYiwgZXZlbnREaXNwYXRjaEZpbmlzaGVkID0gV1RGTW92ZShldmVu
dERpc3BhdGNoRmluaXNoZWQpXShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBsb2Nh
dGlvbiwgc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgICBldmVudERpc3Bh
dGNoRmluaXNoZWQoZXJyb3IpOwogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2Eu
bW0KaW5kZXggM2E0MDViYjdhZDZiMjdhNTljMDU4ZWE2Yjg2MGI0MmExMzk0OWZiMS4uMWYzNTBj
NGJiODU4Mjg1ZmRjOTNjNWNiMzQ4ZGFiNzE1MTU5MzJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0KQEAg
LTE3Nyw3ICsxNzcsNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFBh
dGhuYW1lc0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aQogICAgICAgICAgICAgICAg
IGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmZp
bGVuYW1lXSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSB7IH07CiAKLSAgICAgICAgICAgICAgICByZXR1cm4gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlKGZpbGVuYW1lLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSkudmFs
dWVfb3IoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHsgfSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHZhbHVlT3JEZWZhdWx0KFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlbmFt
ZSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHkpKTsKICAgICAgICAgICAgIH0pOwog
I2VuZGlmCiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lv
bmFsUGFnZVByb3h5LmNwcAppbmRleCAyZTA2YWRkZjdlODc1NjYzMjM0NDhlMWZkM2Q4OTk5ODcz
MWE0ZGI0Li5mMzgxMjJhMzRhMWNiYTljNGY0YWJjNjgzNTQyNTk2OWQ0MTE3MzlhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCkBAIC0x
ODYsNyArMTg2LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZERhdGEoQVBJOjpO
YXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJUEM6OkRhdGEKIAogdm9pZCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdl
YkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWlu
Z0xvYWQsIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4sIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4m
JiB3ZWJzaXRlUG9saWNpZXMsIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50
aWZpZXI+IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSkKIHsK
LSAgICBQUk9WSVNJT05BTFBBR0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJs
b2FkUmVxdWVzdDogZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1l
PSUiIFBSSXU2NCwgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1l
LnZhbHVlX29yKE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKSk7
CisgICAgUFJPVklTSU9OQUxQQUdFUFJPWFlfUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAi
bG9hZFJlcXVlc3Q6IGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3Vt
ZT0lIiBQUkl1NjQsIHZhbHVlT3JEZWZhdWx0KGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElk
ZW50aWZpZXJUb1Jlc3VtZSkudG9VSW50NjQoKSk7CiAgICAgQVNTRVJUKHNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZCAhPSBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5v
KTsKIAogICAgIC8vIElmIHRoaXMgaXMgYSBjbGllbnQtc2lkZSByZWRpcmVjdCBjb250aW51aW5n
IGluIGEgbmV3IHByb2Nlc3MsIHRoZW4gdGhlIG5ldyBwcm9jZXNzIHdpbGwgb3ZlcndyaXRlIHRo
ZSBmcm9tSXRlbSdzIFVSTC4gSW4gdGhpcyBjYXNlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCA2NmI0MTI2OTFjZjc0NDcxMTQ0ODAxNGQ1ODk5MzdmNjlmNjg5N2Uw
Li4zMmM1NTQzMjU4NDdhN2FiYWI2ODYxZWE3MTA3YzVhY2EyY2ZiYmExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTQ5Miw3ICsxNDkyLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0QXV0b1NpemluZ1Nob3VsZEV4cGFuZFRvVmlld0hlaWdodChib29sKTsKIAog
ICAgIHZvaWQgc2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyhjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmKTsKLSAgICBXZWJDb3JlOjpGbG9hdFNpemUgdmlld3BvcnRTaXplRm9yQ1NT
Vmlld3BvcnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fdmlld3BvcnRTaXplRm9yQ1NTVmlld3Bv
cnRVbml0cy52YWx1ZV9vcihXZWJDb3JlOjpGbG9hdFNpemUoKSk7IH0KKyAgICBXZWJDb3JlOjpG
bG9hdFNpemUgdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cygpIGNvbnN0IHsgcmV0dXJu
IHZhbHVlT3JEZWZhdWx0KG1fdmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyk7IH0KIAog
ICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkoUmVmPEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYsIE5lZ290aWF0ZWRMZWdhY3lUTFMpOwogICAgIHZv
aWQgbmVnb3RpYXRlZExlZ2FjeVRMUygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaAppbmRleCBlZGM1MDkwZWNmMjljMDMyZDNjMmQ3ODU1OGY2NjlhMzZmMGQzZGJi
Li5mNTE0Yjk5MTZhZDQwODJhN2YwNzFmNjU3Mzc4ZmVmM2VkMjJhODMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMTU0LDcgKzE1NCw3IEBAIHB1Ymxp
YzoKICAgICBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2woKSBjb25zdDsKIAogICAgIGJvb2wg
aXNNYXRjaGluZ1JlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiBkb21haW4pIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW4gPyAqbV9yZWdp
c3RyYWJsZURvbWFpbiA9PSBkb21haW4gOiBmYWxzZTsgfQotICAgIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJs
ZURvbWFpbi52YWx1ZV9vcihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IH0pOyB9CisgICAg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4oKSBjb25zdCB7IHJl
dHVybiB2YWx1ZU9yRGVmYXVsdChtX3JlZ2lzdHJhYmxlRG9tYWluKTsgfQogICAgIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiBvcHRpb25hbFJlZ2lzdHJh
YmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsgfQogCiAgICAg
ZW51bSBjbGFzcyBXaWxsU2h1dERvd24gOiBib29sIHsgTm8sIFllcyB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cAppbmRleCA3MWNmOTIwN2VmZDljYTI5NWFiODkwZDY3NmUyZDM5ZDQ5MmQ2NjU4Li5iYTQzM2I4
M2ViZmExYTgyOTg2NGNlMzAwZWY4ZDY1NDVmMmE3ZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAt
MTgzNyw3ICsxODM3LDcgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFT
dG9yZTo6cGFyYW1ldGVycygpCiAgICAgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bj4gYXBwQm91bmREb21haW5zOwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBp
ZiAoaXNBcHBCb3VuZElUUFJlbGF4YXRpb25FbmFibGVkKQotICAgICAgICBhcHBCb3VuZERvbWFp
bnMgPSBhcHBCb3VuZERvbWFpbnNJZkluaXRpYWxpemVkKCkudmFsdWVfb3IoSGFzaFNldDxXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbj4geyB9KTsKKyAgICAgICAgYXBwQm91bmREb21haW5zID0g
dmFsdWVPckRlZmF1bHQoYXBwQm91bmREb21haW5zSWZJbml0aWFsaXplZCgpKTsKICNlbmRpZgog
ICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51
YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVy
cyByZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyA9IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCBk
ODYyNDNmNWE3ZmExYWE1MWZhMWIwZTMyZTg1OTEyMzAzOGVhZWZjLi42ZjY3N2VlZjRlNjg1OWNl
NWQ0MDgwZTFlYzk1ZTdiN2I5NTE0NzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC0xMTYsNyArMTE2LDcg
QEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlKEZyYW1lJiBmcmFtZSwgQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlLCBSZXMKICAgICAgICAgaWYgKGxvYWRlcikKICAgICAgICAg
ICAgIHNjaGVkdWxlTG9hZCgqbG9hZGVyLCByZXNvdXJjZS5nZXQoKSwgcmVmZXJyZXJQb2xpY3kg
PT0gUmVmZXJyZXJQb2xpY3k6Ok5vUmVmZXJyZXJXaGVuRG93bmdyYWRlKTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gW3dlYlBhZ2VJRD0lIiBQ
Ukl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIl0gV2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNv
dXJjZTogVW5hYmxlIHRvIGNyZWF0ZSBTdWJyZXNvdXJjZUxvYWRlciIsIHRoaXMsIGZyYW1lLT5w
YWdlSUQoKS52YWx1ZV9vcihQYWdlSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpLCBmcmFtZS0+ZnJh
bWVJRCgpLnZhbHVlX29yKEZyYW1lSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKTsKKyAgICAgICAg
ICAgIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIFt3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIGZy
YW1lSUQ9JSIgUFJJdTY0ICJdIFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2U6IFVuYWJs
ZSB0byBjcmVhdGUgU3VicmVzb3VyY2VMb2FkZXIiLCB0aGlzLCB2YWx1ZU9yRGVmYXVsdChmcmFt
ZS0+cGFnZUlEKCkpLnRvVUludDY0KCksIHZhbHVlT3JEZWZhdWx0KGZyYW1lLT5mcmFtZUlEKCkp
LnRvVUludDY0KCkpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGxvYWRlcikp
OwogICAgIH0pOwogfQpAQCAtMTc4LDEzICsxNzgsMTMgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVn
eTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVz
b3UKIAogICAgIFdlYlJlc291cmNlTG9hZGVyOjpUcmFja2luZ1BhcmFtZXRlcnMgdHJhY2tpbmdQ
YXJhbWV0ZXJzOwogICAgIGlmIChhdXRvKiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IHRvV2ViRnJh
bWVMb2FkZXJDbGllbnQoZnJhbWVMb2FkZXJDbGllbnQpKQotICAgICAgICB0cmFja2luZ1BhcmFt
ZXRlcnMud2ViUGFnZVByb3h5SUQgPSB3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViUGFnZVByb3h5
SUQoKS52YWx1ZV9vcihXZWJQYWdlUHJveHlJZGVudGlmaWVyIHsgfSk7CisgICAgICAgIHRyYWNr
aW5nUGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCA9IHZhbHVlT3JEZWZhdWx0KHdlYkZyYW1lTG9h
ZGVyQ2xpZW50LT53ZWJQYWdlUHJveHlJRCgpKTsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAgICAgZWxzZSBpZiAoaXM8U2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50PihmcmFtZUxv
YWRlckNsaWVudCkpCiAgICAgICAgIHRyYWNraW5nUGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCA9
IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudD4oZnJhbWVMb2FkZXJDbGll
bnQpLndlYlBhZ2VQcm94eUlEKCk7CiAjZW5kaWYKLSAgICB0cmFja2luZ1BhcmFtZXRlcnMucGFn
ZUlEID0gZnJhbWVMb2FkZXJDbGllbnQucGFnZUlEKCkudmFsdWVfb3IoUGFnZUlkZW50aWZpZXIg
eyB9KTsKLSAgICB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCA9IGZyYW1lTG9hZGVyQ2xpZW50
LmZyYW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIgeyB9KTsKKyAgICB0cmFja2luZ1Bh
cmFtZXRlcnMucGFnZUlEID0gdmFsdWVPckRlZmF1bHQoZnJhbWVMb2FkZXJDbGllbnQucGFnZUlE
KCkpOworICAgIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlEID0gdmFsdWVPckRlZmF1bHQoZnJh
bWVMb2FkZXJDbGllbnQuZnJhbWVJRCgpKTsKICAgICB0cmFja2luZ1BhcmFtZXRlcnMucmVzb3Vy
Y2VJRCA9IGlkZW50aWZpZXI7CiAKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJMRShN
SFRNTCkKQEAgLTQ0OCw3ICs0NDgsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVs
ZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTAogICAgIHN0
ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXI+IGV4aXN0aW5nTmV0d29y
a1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZTsKICAgICBpZiAobG9hZFBhcmFtZXRlcnMu
aXNNYWluRnJhbWVOYXZpZ2F0aW9uKQogICAgICAgICBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxv
YWRJZGVudGlmaWVyVG9SZXN1bWUgPSBzdGQ6OmV4Y2hhbmdlKG1fZXhpc3RpbmdOZXR3b3JrUmVz
b3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lLCBzdGQ6Om51bGxvcHQpOwotICAgIFdFQkxPQURF
UlNUUkFURUdZX1JFTEVBU0VfTE9HKCJzY2hlZHVsZUxvYWQ6IFJlc291cmNlIGlzIGJlaW5nIHNj
aGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAocHJpb3JpdHk9JWQsIGV4aXN0aW5nTmV0
d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZT0lIiBQUkl1NjQgIikiLCBzdGF0aWNf
Y2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSwgZXhpc3RpbmdO
ZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lLnZhbHVlX29yKE5ldHdvcmtSZXNv
dXJjZUxvYWRJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKSk7CisgICAgV0VCTE9BREVSU1RSQVRF
R1lfUkVMRUFTRV9MT0coInNjaGVkdWxlTG9hZDogUmVzb3VyY2UgaXMgYmVpbmcgc2NoZWR1bGVk
IHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChwcmlvcml0eT0lZCwgZXhpc3RpbmdOZXR3b3JrUmVz
b3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lPSUiIFBSSXU2NCAiKSIsIHN0YXRpY19jYXN0PGlu
dD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCB2YWx1ZU9yRGVmYXVsdChl
eGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpLnRvVUludDY0KCkp
OwogICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpTY2hlZHVsZVJlc291cmNlTG9hZChsb2FkUGFyYW1ldGVycywgZXhpc3Rp
bmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKSwgMCkpIHsKICAgICAgICAg
V0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9MT0dfRVJST1IoInNjaGVkdWxlTG9hZDogVW5hYmxl
IHRvIHNjaGVkdWxlIHJlc291cmNlIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChwcmlvcml0eT0l
ZCkiLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgp
KSk7CiAgICAgICAgIC8vIFdlIHByb2JhYmx5IGZhaWxlZCB0byBzY2hlZHVsZSB0aGlzIGxvYWQg
d2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgYmVjYXVzZSBpdCBoYWQgY3Jhc2hlZC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IGU1
ZmEwNzEwOWE5MzE4NDUzOWZiMWUyNDcwYTNmOTM4NmQ0MzE1NTguLjBmYWYyZDY1NjA5ODNhMjRm
MmY5Nzc0N2U5YWU1YjU4MzFlZTFlOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtMjA0NywxMyArMjA0NywxMyBAQCBJbnRQ
b2ludCBQREZQbHVnaW46OmNvbnZlcnRGcm9tUm9vdFZpZXdUb1BsdWdpbihjb25zdCBJbnRQb2lu
dCYgcG9pbnQpIGNvbnN0CiBJbnRQb2ludCBQREZQbHVnaW46OmNvbnZlcnRGcm9tUERGVmlld1Rv
Um9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogewogICAgIEludFBvaW50IHBv
aW50SW5QbHVnaW5Db29yZGluYXRlcyhwb2ludC54KCksIHNpemUoKS5oZWlnaHQoKSAtIHBvaW50
LnkoKSk7Ci0gICAgcmV0dXJuIG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCku
dmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QbHVnaW5Db29yZGlu
YXRlcyk7CisgICAgcmV0dXJuIHZhbHVlT3JEZWZhdWx0KG1fcm9vdFZpZXdUb1BsdWdpblRyYW5z
Zm9ybS5pbnZlcnNlKCkpLm1hcFBvaW50KHBvaW50SW5QbHVnaW5Db29yZGluYXRlcyk7CiB9CiAK
IEludFJlY3QgUERGUGx1Z2luOjpjb252ZXJ0RnJvbVBERlZpZXdUb1Jvb3RWaWV3KGNvbnN0IElu
dFJlY3QmIHJlY3QpIGNvbnN0CiB7CiAgICAgSW50UmVjdCByZWN0SW5QbHVnaW5Db29yZGluYXRl
cyhyZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7Ci0gICAg
cmV0dXJuIG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZm
aW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QocmVjdEluUGx1Z2luQ29vcmRpbmF0ZXMpOworICAgIHJl
dHVybiB2YWx1ZU9yRGVmYXVsdChtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0uaW52ZXJzZSgp
KS5tYXBSZWN0KHJlY3RJblBsdWdpbkNvb3JkaW5hdGVzKTsKIH0KIAogSW50UG9pbnQgUERGUGx1
Z2luOjpjb252ZXJ0RnJvbVJvb3RWaWV3VG9QREZWaWV3KGNvbnN0IEludFBvaW50JiBwb2ludCkg
Y29uc3QKQEAgLTIwODYsNyArMjA4Niw3IEBAIEludFJlY3QgUERGUGx1Z2luOjpib3VuZHNPblNj
cmVlbigpIGNvbnN0CiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBGbG9hdFJlY3QgYm91bmRz
ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSgpKTsKLSAgICBGbG9hdFJlY3QgcmVjdElu
Um9vdFZpZXdDb29yZGluYXRlcyA9IG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNl
KCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QoYm91bmRzKTsKKyAgICBGbG9h
dFJlY3QgcmVjdEluUm9vdFZpZXdDb29yZGluYXRlcyA9IHZhbHVlT3JEZWZhdWx0KG1fcm9vdFZp
ZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCkpLm1hcFJlY3QoYm91bmRzKTsKICAgICBhdXRv
KiBwYWdlID0gbV9mcmFtZS0+Y29yZUZyYW1lKCktPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCiAg
ICAgICAgIHJldHVybiB7IH07CkBAIC0yMTEzLDcgKzIxMTMsNyBAQCB2b2lkIFBERlBsdWdpbjo6
Z2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgSW50UmVj
dCYsIGNvbgogICAgICAgICByZXR1cm47CiAKICAgICBtX3NpemUgPSBwbHVnaW5TaXplOwotICAg
IG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybSA9IHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0u
aW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICBtX3Jvb3RWaWV3VG9Q
bHVnaW5UcmFuc2Zvcm0gPSB2YWx1ZU9yRGVmYXVsdChwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3Jt
LmludmVyc2UoKSk7CiAgICAgW21fcGRmTGF5ZXJDb250cm9sbGVyIHNldEZyYW1lU2l6ZTpwbHVn
aW5TaXplXTsKIAogICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggOTQyZWRjNjIzYTRlNjUzYmIxODhh
ZWUwNTA2NDRhM2Y0YTAzMmU4OS4uZWI5Y2Q0MmJhMGJlYmRmMWMyYmMwYjMzZTQ4ZGE5MDM4MzUx
YzZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
QEAgLTM3NjksNyArMzc2OSw3IEBAIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFt
ZSogZnJhbWUsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVyCiAKIHZvaWQgV2Vi
UGFnZTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQYXJh
bWV0ZXJzJiYgcGFyYW1ldGVycywgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXI+IGZyYW1lSUQsIGNvbnN0IHN0ZDo6cGFpcjxDb250ZW50V29ybGRJZGVudGlmaWVyLCBTdHJp
bmc+JiB3b3JsZERhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFdFQlBBR0VfUkVMRUFTRV9MT0coUHJvY2Vz
cywgInJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZDogZnJhbWVJRD0lIiBQUkl1NjQs
IGZyYW1lSUQudmFsdWVfb3IoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHsgfSkudG9VSW50NjQo
KSk7CisgICAgV0VCUEFHRV9SRUxFQVNFX0xPRyhQcm9jZXNzLCAicnVuSmF2YVNjcmlwdEluRnJh
bWVJblNjcmlwdFdvcmxkOiBmcmFtZUlEPSUiIFBSSXU2NCwgdmFsdWVPckRlZmF1bHQoZnJhbWVJ
RCkudG9VSW50NjQoKSk7CiAgICAgUmVmUHRyIHdlYkZyYW1lID0gZnJhbWVJRCA/IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKCpmcmFtZUlEKSA6ICZtYWluV2ViRnJhbWUoKTsKIAog
ICAgIGlmIChhdXRvKiBuZXdXb3JsZCA9IG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRDb250
ZW50V29ybGQod29ybGREYXRhKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCBlMThkMTBjM2ZjNGYx
OGQ3M2EyYTc0MGM1MzMxMzEzNDNmZjMzY2FmLi40MmJlOGNlYTUyNTBmYWZmZWI3OGUwMTFhNjdh
NGVmYzBkYTU0YTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
VmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtNDgxLDcgKzQ4MSw3IEBAIHZvaWQg
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRW50ZXJGdWxsc2NyZWVuKFBsYXliYWNrU2Vzc2lv
bkNvbnRleHRJZGVudGlmaWVyCiAgICAgaWYgKCF2aWRlb0VsZW1lbnQpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHZpZGVvRWxlbWVudC0+ZGlkRW50ZXJGdWxsc2NyZWVuT3JQaWN0dXJlSW5QaWN0
dXJlKHNpemUudmFsdWVfb3IoV2ViQ29yZTo6RmxvYXRTaXplKCkpKTsKKyAgICB2aWRlb0VsZW1l
bnQtPmRpZEVudGVyRnVsbHNjcmVlbk9yUGljdHVyZUluUGljdHVyZSh2YWx1ZU9yRGVmYXVsdChz
aXplKSk7CiAKICAgICBpZiAoaW50ZXJmYWNlLT50YXJnZXRJc0Z1bGxzY3JlZW4oKSB8fCBpbnRl
cmZhY2UtPmZ1bGxzY3JlZW5TdGFuZGJ5KCkpCiAgICAgICAgIHJldHVybjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448527</attachid>
            <date>2022-01-06 12:40:01 -0800</date>
            <delta_ts>2022-01-06 13:15:39 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-234865-20220106124000.patch</filename>
            <type>text/plain</type>
            <size>97885</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NjkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGFjZmU1ZGE3YmVjN2VhNmY2NTJiNjAz
M2VlMWQyMzg5OWU3NjNmNGEuLjAzZmVlNTVkYmZjYTVlZjI3ODdjZDc0YTlmOTFkY2IzODk2ODFm
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjItMDEtMDYgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQg
cmV0dXJucyB0aGUgdmFsdWUgb2YgYSBzdGQ6Om9wdGlvbmFsPFQ+IG9yIGNvbnN0cnVjdHMgVCBp
ZiBuZWVkZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNDg2NQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEFk
ZCBhIG5ldyBoZWxwZXIgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSB2YWx1ZSBvZiBhIGdpdmVu
IGBzdGQ6Om9wdGlvbmFsPFR5cGU+YCBpZiBpdCBleGlzdHMsIGFuZCBvdGhlcndpc2UKKyAgICAg
ICAgY29uc3RydWN0cyBhbmQgcmV0dXJucyBgVHlwZSB7IH1gLiBDdXJyZW50bHksIHRoZSBhbHRl
cm5hdGl2ZSB0byB0aGlzIGlzIHdyaXRpbmcgb3V0IHRoZSBgVHlwZSB7IH1gIGluIGZ1bGwgd2hl
bgorICAgICAgICBwYXNzaW5nIGluIGFuIGFyZ3VtZW50IHRvIGB2YWx1ZV9vcmA7IHVzaW5nIHRo
aXMgYXZvaWRzIHNvbWUgcmVkdW5kYW5jeSBhbmQgbWFrZXMgdGhlIGV4cHJlc3Npb24gYSBiaXQg
ZWFzaWVyIHRvCisgICAgICAgIHJlYWQuCisKKyAgICAgICAgKiB3dGYvU3RkTGliRXh0cmFzLmg6
CisgICAgICAgIChXVEY6OnZhbHVlT3JEZWZhdWx0KToKKwogMjAyMi0wMS0wNSAgSm9obiBXaWxh
bmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBDaGFuZ2UgdmVyc2lvbiBudW1i
ZXIgZm9yIEhBVkVfUlNBX1BTU19PSUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkNjJhM2I3MGI5ZGFkOTdmZjE2
NWZhZWI2ZTAyZTUzOGJmNDFiZjFmLi41NWFkZTA4YzA3NDMyY2E3OTkyZTkxZTg3ZDI4M2E4ZWUy
MGQ1ZTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI3IEBACisyMDIyLTAxLTA2ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIGhlbHBlciBm
dW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHZhbHVlIG9mIGEgc3RkOjpvcHRpb25hbDxUPiBvciBj
b25zdHJ1Y3RzIFQgaWYgbmVlZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzQ4NjUKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
KworICAgICAgICBVc2UgYHZhbHVlT3JEZWZhdWx0YCB3aGVyZSBhcHByb3ByaWF0ZS4gU2VlIFdU
Ri9DaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGVw
YXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudEhhbmRs
ZXI6OmRpZEF1dGhvcml6ZVBheW1lbnQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNr
OjphcHBseUNvbnN0cmFpbnRzKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0lj
ZUNhbmRpZGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENJY2VDYW5kaWRhdGU6OmNyZWF0
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbCk6CisgICAgICAgICog
TW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6dXBkYXRlSWZOZWVkZWQpOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgICogaHRtbC9CYXNlRGF0ZUFuZFRpbWVJ
bnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
OjpzZXR1cERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMpOgorICAgICAgICAqIGh0bWwvSFRNTEFu
Y2hvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6Omhh
bmRsZUNsaWNrKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2U6OmlzUG9pbnRJblBhdGhJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlOjppc1BvaW50SW5TdHJva2VJbnRlcm5hbCk6CisgICAgICAgICog
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRlcjo6YnVpbGQpOgorICAg
ICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0
aWNhbEFsaWduZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94VmVydGlj
YWxBbGlnbmVyOjpjb21wdXRlTGluZUJveExvZ2ljYWxIZWlnaHQgY29uc3QpOgorICAgICAgICAq
IGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OnNl
dFVzZWRHZW9tZXRyeUZvckNlbGxzKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVy
L1BvbGljeUNoZWNrZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6
CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURy
YWcpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpsYXN0S25vd25Nb3VzZVBvc2l0
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VN
b3ZlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJl
bGVhc2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnRhcmdldFBvc2l0
aW9uSW5XaW5kb3dGb3JTZWxlY3Rpb25BdXRvc2Nyb2xsIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRTb29uSW5RdWFkKToK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZmFrZU1vdXNlTW92ZUV2ZW50VGltZXJG
aXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhvdmVyVGltZXJGaXJlZCk6
CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpzZXRMYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdCk6CisgICAgICAgICogcGFnZS9QYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNhbXBsZWRQYWdlVG9wQ29sb3IgY29uc3Qp
OgorICAgICAgICAqIHBhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6dGFyZ2V0UG9zaXRpb25JbldpbmRvd0ZvclNlbGVjdGlvbkF1dG9z
Y3JvbGwgY29uc3QpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVMYXRj
aGluZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUxhdGNo
aW5nQ29udHJvbGxlcjo6bm9kZURpZEhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9TaGFkb3dCbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmNh
bGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpuYXR1cmFsU2l6ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0VmlzaWJsZUFuZENvdmVyYWdlUmVjdHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtU3RhdGU6Om1hcHBlZFBvaW50IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybVN0YXRlOjptYXBRdWFkIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybVN0YXRlOjpmbGF0dGVuV2l0aFRyYW5zZm9ybSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnN5c3RlbVByZXZpZXdJbmZvIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpmaWx0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNhbml0aXplSFRUUEhlYWRlckZpZWxk
c0FjY29yZGluZ1RvVGFpbnRpbmcpOgorICAgICAgICAqIHJlbmRlcmluZy9QYWludEluZm8uaDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhaW50SW5mbzo6YXBwbHlUcmFuc2Zvcm0pOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cmVsYXRpdmVQb3NpdGlvbk9mZnNldCBjb25zdCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
R3JpZDo6Y29tcHV0ZUF1dG9SZXBlYXRUcmFja3NDb3VudCBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1
cGRhdGVMYXllclBvc2l0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFp
bnRMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmxheW91dCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeVJlbmRlclNWR1Jvb3Q6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdDb250YWluZXI6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdG
b3JlaWduT2JqZWN0Ojpub2RlQXRGbG9hdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpu
b2RlQXRGbG9hdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlQ2xpcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBw
ZXI6OmhpdFRlc3RDbGlwQ29udGVudCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OmNsaXBwZWRPdmVy
Zmxvd1JlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6YWJzb2x1
dGVSZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSb290OjphYnNvbHV0
ZVF1YWRzIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjpub2RlQXRGbG9hdFBvaW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHVGV4dDo6bm9kZUF0RmxvYXRQb2ludCk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRl
clN1cHBvcnQ6OmNsaXBDb250ZXh0VG9DU1NDbGlwcGluZ0FyZWEpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdS
ZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcik6CisgICAgICAgICogc3ZnL1NWR0Fu
aW1hdGVNb3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rp
b25FbGVtZW50OjpjYWxjdWxhdGVUb0F0RW5kT2ZEdXJhdGlvblZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmNhbGN1bGF0ZUZy
b21BbmRCeVZhbHVlcyk6CisgICAgICAgICogc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVG9PVEZGb250Q29udmVydGVyOjpwcm9jZXNzR2x5cGhF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RvT1RGRm9udENvbnZlcnRlcjo6U1ZHVG9P
VEZGb250Q29udmVydGVyKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRy
YWl0cy5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8RmxvYXRQb2ludD46
OmZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8RmxvYXRS
ZWN0Pjo6ZnJvbVN0cmluZyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpmcmFtZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpwYWdlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1dTY3JpcHRTdG9yYWdlOjpTV1NjcmlwdFN0b3JhZ2UpOgorCiAyMDIyLTAxLTA2ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRHJvcCBpbXBsZW1lbnRh
dGlvbiBmb3IgQ09PUCAvIENPRVAgdmlvbGF0aW9uIHJlcG9ydGluZwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cK
aW5kZXggNDUxMjRjM2NmNDk5ZDMzOTU0ODc5N2FiZWIyZDY4ZmIwZjQ2OTkyZC4uNjI5NzQxNTBj
ZmYwNDc1ZTU4MzA1OGJhNDg3ZjQxNzQ0ODAyZDRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMjItMDEtMDYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUg
dmFsdWUgb2YgYSBzdGQ6Om9wdGlvbmFsPFQ+IG9yIGNvbnN0cnVjdHMgVCBpZiBuZWVkZWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDg2NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFVzZSBgdmFsdWVPckRl
ZmF1bHRgIHdoZXJlIGFwcHJvcHJpYXRlLiBTZWUgV1RGL0NoYW5nZUxvZyBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbXB1dGVQ
YXNzRW5jb2RlckltcGwuY3BwOgorICAgICAgICAoUEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5j
b2RlckltcGw6OnNldEJpbmRHcm91cCk6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9J
bXBsL1dlYkdQVVJlbmRlckJ1bmRsZUVuY29kZXJJbXBsLmNwcDoKKyAgICAgICAgKFBBTDo6V2Vi
R1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVySW1wbDo6c2V0QmluZEdyb3VwKToKKyAgICAgICAgKiBw
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXJJbXBsLmNwcDoK
KyAgICAgICAgKFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2RlckltcGw6OnNldEJpbmRHcm91
cCk6CisKIDIwMjEtMTItMjEgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFkZCBzdXBwb3J0IGZvciBwcmVtdWx0aXBsaWVkIGFscGhhIGludGVycG9sYXRlZCBncmFk
aWVudHMgYW5kIGRlZmF1bHRlZCBvZmYgb3B0aW9uIHRvIHVzZSB0aGVtIGZvciBDU1MgR3JhZGll
bnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDNjNThlMmVmM2UxYjRkZWEwYzM0ZTkwNGNiYmZkMjRhNDhjNzljZDUu
LmU5ZjIxMDcyYTI5MjQ3MDY4ZTAzOGM0ODg5Njg2ZTJmZWZjZWEzZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDQgQEAKKzIwMjItMDEtMDYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUg
dmFsdWUgb2YgYSBzdGQ6Om9wdGlvbmFsPFQ+IG9yIGNvbnN0cnVjdHMgVCBpZiBuZWVkZWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDg2NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFVzZSBgdmFsdWVPckRl
ZmF1bHRgIHdoZXJlIGFwcHJvcHJpYXRlLiBTZWUgV1RGL0NoYW5nZUxvZyBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6c2NoZWR1bGVSZXNvdXJjZUxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmVuc3VyZVNX
U2VydmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxl
U3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpmaWxlVGltZXMpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpOZXR3b3JrU3RvcmFn
ZU1hbmFnZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRlZElucHV0
RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0Y2hl
cjo6dHJhbnNpdGlvbklucHV0U291cmNlVG9TdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0
ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92
aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cmVnaXN0cmFibGVEb21haW4gY29uc3QpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2Fk
ZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERG
UGx1Z2luOjpjb252ZXJ0RnJvbVBERlZpZXdUb1Jvb3RWaWV3IGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UERGUGx1Z2luOjpib3VuZHNPblNjcmVlbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlBERlBsdWdpbjo6Z2VvbWV0cnlEaWRDaGFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cnVuSmF2YVNjcmlw
dEluRnJhbWVJblNjcmlwdFdvcmxkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OmRpZEVudGVyRnVsbHNjcmVlbik6CisKIDIwMjItMDEtMDYgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBEcm9wIGltcGxlbWVudGF0aW9uIGZvciBDT09Q
IC8gQ09FUCB2aW9sYXRpb24gcmVwb3J0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9T
dGRMaWJFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCmluZGV4IGU5YjM3
NTZmMmIzZmYxYTdlYmM4NzZiMDMzMWZkOGUxN2RhYmFiZmEuLmYwNGQ5Yzg3Y2M3MjhjNzA0Njky
ODkyMzlhZGZkODlkYTZiOGZjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4
dHJhcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCkBAIC01OTYsNiArNTk2
LDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIE9wdGlvbmFsVHlwZSwgY2xhc3MgQ2FsbGJhY2s+IHR5
cGVuYW1lIE9wdGlvbmFsVHlwZTo6dmFsdWVfdHlwCiAgICAgcmV0dXJuIG9wdGlvbmFsID8gKm9w
dGlvbmFsIDogY2FsbGJhY2soKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgT3B0aW9uYWxUeXBl
PiBhdXRvIHZhbHVlT3JEZWZhdWx0KE9wdGlvbmFsVHlwZSYmIG9wdGlvbmFsKQoreworICAgIHJl
dHVybiBzdGQ6OmZvcndhcmQ8T3B0aW9uYWxUeXBlPihvcHRpb25hbCkudmFsdWVfb3IodHlwZW5h
bWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8T3B0aW9uYWxUeXBlPjo6dmFsdWVfdHlwZSB7IH0p
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogI2RlZmluZSBXVEZNb3ZlKHZhbHVlKSBzdGQ6
Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KHZhbHVlKQpAQCAtNjIyLDMgKzYyNyw0IEBA
IHVzaW5nIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjsKIHVzaW5nIFdURjo6c2FmZUNhc3Q7CiB1
c2luZyBXVEY6OnRyeUJpbmFyeVNlYXJjaDsKIHVzaW5nIFdURjo6dmFsdWVPckNvbXB1dGU7Cit1
c2luZyBXVEY6OnZhbHVlT3JEZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQ
YXltZW50SGFuZGxlci5jcHAKaW5kZXggYmEyODZjMjM1YWZiMTc1YjMzMTljMTAwYjk3NzQzYjIy
OGI1MGNlMS4uYThiNjBlZTQ3OTIyMTViZDI3NjY4YWJlMWZkNzQ3ZjRlNDk2NzYwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBs
ZVBheVBheW1lbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwCkBAIC03NDIsNyAr
NzQyLDcgQEAgdm9pZCBBcHBsZVBheVBheW1lbnRIYW5kbGVyOjp2YWxpZGF0ZU1lcmNoYW50KFVS
TCYmIHZhbGlkYXRpb25VUkwpCiAKIHN0YXRpYyBSZWY8UGF5bWVudEFkZHJlc3M+IGNvbnZlcnQo
Y29uc3QgQXBwbGVQYXlQYXltZW50Q29udGFjdCYgY29udGFjdCkKIHsKLSAgICByZXR1cm4gUGF5
bWVudEFkZHJlc3M6OmNyZWF0ZShjb250YWN0LmNvdW50cnlDb2RlLCBjb250YWN0LmFkZHJlc3NM
aW5lcy52YWx1ZV9vcihWZWN0b3I8U3RyaW5nPigpKSwgY29udGFjdC5hZG1pbmlzdHJhdGl2ZUFy
ZWEsIGNvbnRhY3QubG9jYWxpdHksIGNvbnRhY3Quc3ViTG9jYWxpdHksIGNvbnRhY3QucG9zdGFs
Q29kZSwgU3RyaW5nKCksIFN0cmluZygpLCBjb250YWN0LmxvY2FsaXplZE5hbWUsIGNvbnRhY3Qu
cGhvbmVOdW1iZXIpOworICAgIHJldHVybiBQYXltZW50QWRkcmVzczo6Y3JlYXRlKGNvbnRhY3Qu
Y291bnRyeUNvZGUsIHZhbHVlT3JEZWZhdWx0KGNvbnRhY3QuYWRkcmVzc0xpbmVzKSwgY29udGFj
dC5hZG1pbmlzdHJhdGl2ZUFyZWEsIGNvbnRhY3QubG9jYWxpdHksIGNvbnRhY3Quc3ViTG9jYWxp
dHksIGNvbnRhY3QucG9zdGFsQ29kZSwgU3RyaW5nKCksIFN0cmluZygpLCBjb250YWN0LmxvY2Fs
aXplZE5hbWUsIGNvbnRhY3QucGhvbmVOdW1iZXIpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgpAQCAtNzU3LDcgKzc1Nyw3IEBAIHZvaWQgQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6ZGlkQXV0
aG9yaXplUGF5bWVudChjb25zdCBQYXltZW50JiBwYXltZW50KQogICAgIEFTU0VSVChtX3VwZGF0
ZVN0YXRlID09IFVwZGF0ZVN0YXRlOjpOb25lKTsKIAogICAgIGF1dG8gYXBwbGVQYXlQYXltZW50
ID0gcGF5bWVudC50b0FwcGxlUGF5UGF5bWVudCh2ZXJzaW9uKCkpOwotICAgIGF1dG8gc2hpcHBp
bmdDb250YWN0ID0gYXBwbGVQYXlQYXltZW50LnNoaXBwaW5nQ29udGFjdC52YWx1ZV9vcihBcHBs
ZVBheVBheW1lbnRDb250YWN0KCkpOworICAgIGF1dG8gc2hpcHBpbmdDb250YWN0ID0gdmFsdWVP
ckRlZmF1bHQoYXBwbGVQYXlQYXltZW50LnNoaXBwaW5nQ29udGFjdCk7CiAgICAgYXV0byBkZXRh
aWxzRnVuY3Rpb24gPSBbYXBwbGVQYXlQYXltZW50ID0gV1RGTW92ZShhcHBsZVBheVBheW1lbnQp
XShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0KSB7CiAgICAgICAgIHJl
dHVybiB0b0pTRGljdGlvbmFyeShsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcHBsZVBheVBheW1lbnQp
OwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrLmNwcAppbmRleCA3YmMyMWU1NmFlY2M2NTFhZDg4NzBlMTRmNWI3
YzU3NWI0MWExOGIyLi5hYTAxYjM1NzAxMzEwOWFmZTE2YWEyNGYwNmRlMzBhZjI2ODBjYzA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFjay5jcHAKQEAgLTM4Niw3ICszODYsNyBAQCB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6
OmFwcGx5Q29uc3RyYWludHMoY29uc3Qgc3RkOjpvcHRpb25hbDxNZWRpYVRyYWNrQ29uc3RyYWlu
dAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIG1fcHJvbWlzZS0+cmVz
b2x2ZSgpOwotICAgICAgICBtX2NvbnN0cmFpbnRzID0gY29uc3RyYWludHMudmFsdWVfb3IoTWVk
aWFUcmFja0NvbnN0cmFpbnRzIHsgfSk7CisgICAgICAgIG1fY29uc3RyYWludHMgPSB2YWx1ZU9y
RGVmYXVsdChjb25zdHJhaW50cyk7CiAgICAgfTsKICAgICBtX3ByaXZhdGUtPmFwcGx5Q29uc3Ry
YWludHMoY3JlYXRlTWVkaWFDb25zdHJhaW50cyhjb25zdHJhaW50cyksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmNwcAppbmRleCA4ZDk1YjgxMjhhNTA4NmQ3MzY4OGZm
OTIzZDBjYWI0MmZhZjcwNjJmLi45ZjcwNmRmNmRmNjVlN2Y5NTgxNTc1MTQwMjI0OGUwOGM3YTIz
ZmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0lj
ZUNhbmRpZGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENJY2VDYW5kaWRhdGUuY3BwCkBAIC01Niw3ICs1Niw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENJ
Y2VDYW5kaWRhdGU+PiBSVENJY2VDYW5kaWRhdGU6OmNyZWF0ZShjb25zdCBSVENJY2VDYW5kaWRh
dGVJCiAgICAgaWYgKGRpY3Rpb25hcnkuc2RwTWlkLmlzTnVsbCgpICYmICFkaWN0aW9uYXJ5LnNk
cE1MaW5lSW5kZXgpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJDYW5k
aWRhdGUgbXVzdCBub3QgaGF2ZSBib3RoIG51bGwgc2RwTWlkIGFuZCBzZHBNTGluZUluZGV4IiB9
OwogCi0gICAgYXV0byBmaWVsZHMgPSBwYXJzZUljZUNhbmRpZGF0ZVNEUChkaWN0aW9uYXJ5LmNh
bmRpZGF0ZSkudmFsdWVfb3IoUlRDSWNlQ2FuZGlkYXRlOjpGaWVsZHMgeyB9KTsKKyAgICBhdXRv
IGZpZWxkcyA9IHZhbHVlT3JEZWZhdWx0KHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGRpY3Rpb25hcnku
Y2FuZGlkYXRlKSk7CiAgICAgZmllbGRzLnVzZXJuYW1lRnJhZ21lbnQgPSBkaWN0aW9uYXJ5LnVz
ZXJuYW1lRnJhZ21lbnQ7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDSWNlQ2FuZGlkYXRl
KGRpY3Rpb25hcnkuY2FuZGlkYXRlLCBkaWN0aW9uYXJ5LnNkcE1pZCwgZGljdGlvbmFyeS5zZHBN
TGluZUluZGV4LCBXVEZNb3ZlKGZpZWxkcykpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKaW5kZXggN2EyYzlhNzM0
NmFmMTBiN2ZlYTcxNTY1OTkxOTEzMTE1Mzg4OGI3Ny4uNjgzMmFjYTkwZWQ2ZDllYjgxYWI5ZjM1
NTk1OTNiZjQ2NDMwZmQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gU1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWwoY29uc3QgU3RyaW5nJiBzcWxTdGF0
ZW1lbnQsIHN0ZDo6b3AKICAgICBlbHNlIGlmIChtX3JlYWRPbmx5KQogICAgICAgICBwZXJtaXNz
aW9ucyB8PSBEYXRhYmFzZUF1dGhvcml6ZXI6OlJlYWRPbmx5TWFzazsKIAotICAgIGF1dG8gc3Rh
dGVtZW50ID0gbWFrZVVuaXF1ZTxTUUxTdGF0ZW1lbnQ+KG1fZGF0YWJhc2UsIHNxbFN0YXRlbWVu
dCwgYXJndW1lbnRzLnZhbHVlX29yKFZlY3RvcjxTUUxWYWx1ZT4geyB9KSwgV1RGTW92ZShjYWxs
YmFjayksIFdURk1vdmUoY2FsbGJhY2tFcnJvciksIHBlcm1pc3Npb25zKTsKKyAgICBhdXRvIHN0
YXRlbWVudCA9IG1ha2VVbmlxdWU8U1FMU3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWxTdGF0ZW1l
bnQsIHZhbHVlT3JEZWZhdWx0KGFyZ3VtZW50cyksIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3Zl
KGNhbGxiYWNrRXJyb3IpLCBwZXJtaXNzaW9ucyk7CiAKICAgICBpZiAobV9kYXRhYmFzZS0+ZGVs
ZXRlZCgpKQogICAgICAgICBzdGF0ZW1lbnQtPnNldERhdGFiYXNlRGVsZXRlZEVycm9yKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSQm91bmRlZFJlZmVy
ZW5jZVNwYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVk
UmVmZXJlbmNlU3BhY2UuY3BwCmluZGV4IDE2MTFmYzllM2Y2M2M5MDgxZmQ2YmE0ZDk0NDFkNjg4
NTNiMTRjN2EuLjdlNGFjNDk1NjA4NzY1ZGNlYzg4MmY5NmM0NjI5MGUyZDRjZjJiYzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVkUmVmZXJlbmNl
U3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJCb3VuZGVk
UmVmZXJlbmNlU3BhY2UuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBXZWJYUkJvdW5kZWRS
ZWZlcmVuY2VTcGFjZTo6dXBkYXRlSWZOZWVkZWQoKQogCiAgICAgaWYgKGZyYW1lRGF0YS5zdGFn
ZVBhcmFtZXRlcnMuYm91bmRzLnNpemUoKSA+PSBNaW5pbXVtQm91bmRzVmVydGljZXMpIHsKICAg
ICAgICAgLy8gRWFjaCBwb2ludCBoYXMgdG8gbXVsdGlwbGllZCBieSB0aGUgaW52ZXJzZSBvZiBv
cmlnaW5PZmZzZXQuCi0gICAgICAgIGF1dG8gdHJhbnNmb3JtID0gb3JpZ2luT2Zmc2V0KCkucmF3
VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOwor
ICAgICAgICBhdXRvIHRyYW5zZm9ybSA9IHZhbHVlT3JEZWZhdWx0KG9yaWdpbk9mZnNldCgpLnJh
d1RyYW5zZm9ybSgpLmludmVyc2UoKSk7CiAgICAgICAgIGZvciAoYXV0byYgcG9pbnQgOiBmcmFt
ZURhdGEuc3RhZ2VQYXJhbWV0ZXJzLmJvdW5kcykgewogICAgICAgICAgICAgYXV0byBtYXBwZWRQ
b2ludCA9IHRyYW5zZm9ybS5tYXBQb2ludChGbG9hdFBvaW50M0QocG9pbnQueCgpLCAwLjAsIHBv
aW50LnkoKSkpOwogICAgICAgICAgICAgbV9ib3VuZHNHZW9tZXRyeS5hcHBlbmQoRE9NUG9pbnRS
ZWFkT25seTo6Y3JlYXRlKHF1YW50aXplKG1hcHBlZFBvaW50LngoKSksIHF1YW50aXplKG1hcHBl
ZFBvaW50LnkoKSksIHF1YW50aXplKG1hcHBlZFBvaW50LnooKSksIDEuMCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21w
dXRlUGFzc0VuY29kZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3Mv
V2ViR1BVL0ltcGwvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVySW1wbC5jcHAKaW5kZXggZmEyNjY3
NWFjMzYyYzNmYTJhZWJlNTYyMTgxOWJmOGRiZTJhOTU4OS4uZWRkNTlkNjU5NzZmMDRhN2MxYjM3
ZmQxYWJiMDhkNTRiZTRmNzYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVDb21wdXRlUGFzc0VuY29kZXJJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbXB1
dGVQYXNzRW5jb2RlckltcGwuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgQ29tcHV0ZVBhc3NF
bmNvZGVySW1wbDo6ZW5kUGFzcygpCiB2b2lkIENvbXB1dGVQYXNzRW5jb2RlckltcGw6OnNldEJp
bmRHcm91cChJbmRleDMyIGluZGV4LCBjb25zdCBCaW5kR3JvdXAmIGJpbmRHcm91cCwKICAgICBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxCdWZmZXJEeW5hbWljT2Zmc2V0Pj4mJiBvZmZzZXRzKQogewot
ICAgIGF1dG8gYmFja2luZ09mZnNldHMgPSBvZmZzZXRzLnZhbHVlX29yKFZlY3RvcjxCdWZmZXJE
eW5hbWljT2Zmc2V0PiB7IH0pOworICAgIGF1dG8gYmFja2luZ09mZnNldHMgPSB2YWx1ZU9yRGVm
YXVsdChvZmZzZXRzKTsKICAgICB3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyU2V0QmluZEdyb3VwKG1f
YmFja2luZywgaW5kZXgsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tp
bmcoYmluZEdyb3VwKSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGJhY2tpbmdPZmZzZXRzLnNpemUo
KSksIGJhY2tpbmdPZmZzZXRzLmRhdGEoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVyQnVuZGxlRW5jb2Rl
ckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9X
ZWJHUFVSZW5kZXJCdW5kbGVFbmNvZGVySW1wbC5jcHAKaW5kZXggZWYxOGI1MDNlYWQxYzczODU4
ZGQzMTM4ODk0NzIwNGZhOWVmOTY5MC4uMjg5MjllNTE0NTRmM2ZlYWE2MmNhY2Q3ZWFlYzA3MWM5
NjNiYjZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJH
UFUvSW1wbC9XZWJHUFVSZW5kZXJCdW5kbGVFbmNvZGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJCdW5kbGVFbmNv
ZGVySW1wbC5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBSZW5kZXJCdW5kbGVFbmNvZGVySW1w
bDo6ZHJhd0luZGV4ZWRJbmRpcmVjdChjb25zdCBCdWZmZXImIGluZGlyZWN0QnVmZmVyLAogdm9p
ZCBSZW5kZXJCdW5kbGVFbmNvZGVySW1wbDo6c2V0QmluZEdyb3VwKEluZGV4MzIgaW5kZXgsIGNv
bnN0IEJpbmRHcm91cCYgYmluZEdyb3VwLAogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPEJ1ZmZl
ckR5bmFtaWNPZmZzZXQ+PiYmIGR5bmFtaWNPZmZzZXRzKQogewotICAgIGF1dG8gYmFja2luZ09m
ZnNldHMgPSBkeW5hbWljT2Zmc2V0cy52YWx1ZV9vcihWZWN0b3I8QnVmZmVyRHluYW1pY09mZnNl
dD4geyB9KTsKKyAgICBhdXRvIGJhY2tpbmdPZmZzZXRzID0gdmFsdWVPckRlZmF1bHQoZHluYW1p
Y09mZnNldHMpOwogICAgIHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyU2V0QmluZEdyb3VwKG1fYmFj
a2luZywgaW5kZXgsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmco
YmluZEdyb3VwKSwgYmFja2luZ09mZnNldHMuc2l6ZSgpLCBiYWNraW5nT2Zmc2V0cy5kYXRhKCkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQ
VS9JbXBsL1dlYkdQVVJlbmRlclBhc3NFbmNvZGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlclBhc3NFbmNvZGVySW1wbC5j
cHAKaW5kZXggNWExZjkyNDY2ZWJiODIyZjA3NzE5ZGU3ZGViNDNmOGYwODNlOGNmNy4uZDJmZTVk
ZjUyNmNjMzYwZjdhM2VkMjMzZTMyZjM0YzkzZDE4NjYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJQYXNzRW5jb2Rl
ckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXJJbXBsLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lk
IFJlbmRlclBhc3NFbmNvZGVySW1wbDo6ZHJhd0luZGV4ZWRJbmRpcmVjdChjb25zdCBCdWZmZXIm
IGluZGlyZWN0QnVmZmVyLCBTaQogdm9pZCBSZW5kZXJQYXNzRW5jb2RlckltcGw6OnNldEJpbmRH
cm91cChJbmRleDMyIGluZGV4LCBjb25zdCBCaW5kR3JvdXAmIGJpbmRHcm91cCwKICAgICBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxCdWZmZXJEeW5hbWljT2Zmc2V0Pj4mJiBkeW5hbWljT2Zmc2V0cykK
IHsKLSAgICBhdXRvIGJhY2tpbmdPZmZzZXRzID0gZHluYW1pY09mZnNldHMudmFsdWVfb3IoVmVj
dG9yPEJ1ZmZlckR5bmFtaWNPZmZzZXQ+IHsgfSk7CisgICAgYXV0byBiYWNraW5nT2Zmc2V0cyA9
IHZhbHVlT3JEZWZhdWx0KGR5bmFtaWNPZmZzZXRzKTsKICAgICB3Z3B1UmVuZGVyUGFzc0VuY29k
ZXJTZXRCaW5kR3JvdXAobV9iYWNraW5nLCBpbmRleCwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4
dC0+Y29udmVydFRvQmFja2luZyhiaW5kR3JvdXApLCBiYWNraW5nT2Zmc2V0cy5zaXplKCksIGJh
Y2tpbmdPZmZzZXRzLmRhdGEoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDQy
ZGFjZDJkZDVjZTNlNWY2MjMzM2EyMTYyY2MzNzY3NDZlOGZiODkuLjJkOGI5YjVjMzJjN2EwMDMx
YzIxMzVlNmZkMzIyY2E1ZmIzZmQwZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMzUy
LDggKzM1Miw4IEBACiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgogI2VuZGlmCiAKLSNk
ZWZpbmUgRE9DVU1FTlRfUkVMRUFTRV9MT0coY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9H
KGNoYW5uZWwsICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIs
IG1haW49JWRdIERvY3VtZW50OjoiIGZtdCwgdGhpcywgcGFnZUlEKCkudmFsdWVfb3IoUGFnZUlk
ZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgpLCBmcmFtZUlEKCkudmFsdWVfb3IoRnJhbWVJZGVudGlm
aWVyIHsgfSkudG9VSW50NjQoKSwgdGhpcyA9PSAmdG9wRG9jdW1lbnQoKSwgIyNfX1ZBX0FSR1Nf
XykKLSNkZWZpbmUgRE9DVU1FTlRfUkVMRUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgZm10LCAuLi4p
IFJFTEVBU0VfTE9HX0VSUk9SKGNoYW5uZWwsICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIsIGZy
YW1lSUQ9JSIgUFJJdTY0ICIsIG1haW49JWRdIERvY3VtZW50OjoiIGZtdCwgdGhpcywgcGFnZUlE
KCkudmFsdWVfb3IoUGFnZUlkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgpLCBmcmFtZUlEKCkudmFs
dWVfb3IoRnJhbWVJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKSwgdGhpcyA9PSAmdG9wRG9jdW1l
bnQoKSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgRE9DVU1FTlRfUkVMRUFTRV9MT0coY2hhbm5l
bCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HKGNoYW5uZWwsICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0
ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIG1haW49JWRdIERvY3VtZW50OjoiIGZtdCwgdGhpcywg
dmFsdWVPckRlZmF1bHQocGFnZUlEKCkpLnRvVUludDY0KCksIHZhbHVlT3JEZWZhdWx0KGZyYW1l
SUQoKSkudG9VSW50NjQoKSwgdGhpcyA9PSAmdG9wRG9jdW1lbnQoKSwgIyNfX1ZBX0FSR1NfXykK
KyNkZWZpbmUgRE9DVU1FTlRfUkVMRUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgZm10LCAuLi4pIFJF
TEVBU0VfTE9HX0VSUk9SKGNoYW5uZWwsICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1l
SUQ9JSIgUFJJdTY0ICIsIG1haW49JWRdIERvY3VtZW50OjoiIGZtdCwgdGhpcywgdmFsdWVPckRl
ZmF1bHQocGFnZUlEKCkpLnRvVUludDY0KCksIHZhbHVlT3JEZWZhdWx0KGZyYW1lSUQoKSkudG9V
SW50NjQoKSwgdGhpcyA9PSAmdG9wRG9jdW1lbnQoKSwgIyNfX1ZBX0FSR1NfXykKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRl
QW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGlt
ZUlucHV0VHlwZS5jcHAKaW5kZXggNmMzODFhYTcwMWM5NDA3MjY2MWNlMGUxNTJmMjU5MWI1NDcx
NDk5MS4uMTExNzA0ZmE4MTFhMGE1NGZlNjJkYTZiNDNiM2UzZTdhZTVjMTllOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcApAQCAtNTQ3
LDcgKzU0Nyw3IEBAIGJvb2wgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlOjpzZXR1cERhdGVUaW1l
Q2hvb3NlclBhcmFtZXRlcnMoRGF0ZVRpbWVDaG9vc2VyUGFyCiAgICAgcGFyYW1ldGVycy5pc0Fu
Y2hvckVsZW1lbnRSVEwgPSBjb21wdXRlZFN0eWxlLT5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0
aW9uOjpSVEw7CiAgICAgcGFyYW1ldGVycy51c2VEYXJrQXBwZWFyYW5jZSA9IGRvY3VtZW50LnVz
ZURhcmtBcHBlYXJhbmNlKGNvbXB1dGVkU3R5bGUpOwogCi0gICAgYXV0byBkYXRlID0gcGFyc2VU
b0RhdGVDb21wb25lbnRzKGVsZW1lbnQudmFsdWUoKSkudmFsdWVfb3IoRGF0ZUNvbXBvbmVudHMo
KSk7CisgICAgYXV0byBkYXRlID0gdmFsdWVPckRlZmF1bHQocGFyc2VUb0RhdGVDb21wb25lbnRz
KGVsZW1lbnQudmFsdWUoKSkpOwogICAgIHBhcmFtZXRlcnMuaGFzU2Vjb25kRmllbGQgPSBzaG91
bGRIYXZlU2Vjb25kRmllbGQoZGF0ZSk7CiAgICAgcGFyYW1ldGVycy5oYXNNaWxsaXNlY29uZEZp
ZWxkID0gc2hvdWxkSGF2ZU1pbGxpc2Vjb25kRmllbGQoZGF0ZSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKaW5kZXggMDQzYzEyNWNhOGE4YTE1M2NhYTBhMTVl
OWU0ZDY1NjFhNjZhYjU1Mi4uY2U3ODRmMDgyOTJlMWYxOGUxZjJjOWYzM2ZiMzA3NGM4NzE1ZTdl
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKQEAgLTUxMyw3
ICs1MTMsNyBAQCB2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpoYW5kbGVDbGljayhFdmVudCYgZXZl
bnQpCiAgICAgaWYgKHN5c3RlbVByZXZpZXdJbmZvLmlzUHJldmlldykgewogICAgICAgICBzeXN0
ZW1QcmV2aWV3SW5mby5lbGVtZW50LmVsZW1lbnRJZGVudGlmaWVyID0gZG9jdW1lbnQoKS5pZGVu
dGlmaWVyRm9yRWxlbWVudCgqdGhpcyk7CiAgICAgICAgIHN5c3RlbVByZXZpZXdJbmZvLmVsZW1l
bnQuZG9jdW1lbnRJZGVudGlmaWVyID0gZG9jdW1lbnQoKS5pZGVudGlmaWVyKCk7Ci0gICAgICAg
IHN5c3RlbVByZXZpZXdJbmZvLmVsZW1lbnQud2ViUGFnZUlkZW50aWZpZXIgPSBkb2N1bWVudCgp
LmZyYW1lKCktPmxvYWRlcigpLnBhZ2VJRCgpLnZhbHVlX29yKFBhZ2VJZGVudGlmaWVyIHsgfSk7
CisgICAgICAgIHN5c3RlbVByZXZpZXdJbmZvLmVsZW1lbnQud2ViUGFnZUlkZW50aWZpZXIgPSB2
YWx1ZU9yRGVmYXVsdChkb2N1bWVudCgpLmZyYW1lKCktPmxvYWRlcigpLnBhZ2VJRCgpKTsKICAg
ICAgICAgaWYgKGF1dG8qIGNoaWxkID0gZmlyc3RFbGVtZW50Q2hpbGQoKSkKICAgICAgICAgICAg
IHN5c3RlbVByZXZpZXdJbmZvLnByZXZpZXdSZWN0ID0gY2hpbGQtPmJvdW5kc0luUm9vdFZpZXdT
cGFjZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggNmRlZmViODEyYzM3MjJj
MzhlYTJmYzhkMDc5MWZhZTI5YjE2MGQ2ZS4uNTc3ZDU1ZTdmMDQyYTc4NDgyMjBlMzhhYzMyZDMw
Njk4MzZhMzg5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTExNTgsNyArMTE1OCw3IEBA
IGJvb2wgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6aXNQb2ludEluUGF0aEludGVybmFs
KGNvbnN0IFBhdGgmIHBhdGgsIGRvdWJsCiAgICAgaWYgKCFzdGF0ZS5oYXNJbnZlcnRpYmxlVHJh
bnNmb3JtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIHRyYW5zZm9ybWVkUG9p
bnQgPSBzdGF0ZS50cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgp
KS5tYXBQb2ludChGbG9hdFBvaW50KHgsIHkpKTsKKyAgICBhdXRvIHRyYW5zZm9ybWVkUG9pbnQg
PSB2YWx1ZU9yRGVmYXVsdChzdGF0ZS50cmFuc2Zvcm0uaW52ZXJzZSgpKS5tYXBQb2ludChGbG9h
dFBvaW50KHgsIHkpKTsKICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodHJhbnNmb3JtZWRQb2ludC54
KCkpIHx8ICFzdGQ6OmlzZmluaXRlKHRyYW5zZm9ybWVkUG9pbnQueSgpKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCkBAIC0xMTczLDcgKzExNzMsNyBAQCBib29sIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2U6OmlzUG9pbnRJblN0cm9rZUludGVybmFsKGNvbnN0IFBhdGgmIHBhdGgsIGRv
dQogICAgIGlmICghc3RhdGUuaGFzSW52ZXJ0aWJsZVRyYW5zZm9ybSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgYXV0byB0cmFuc2Zvcm1lZFBvaW50ID0gc3RhdGUudHJhbnNmb3JtLmlu
dmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQoRmxvYXRQb2ludCh4
LCB5KSk7CisgICAgYXV0byB0cmFuc2Zvcm1lZFBvaW50ID0gdmFsdWVPckRlZmF1bHQoc3RhdGUu
dHJhbnNmb3JtLmludmVyc2UoKSkubWFwUG9pbnQoRmxvYXRQb2ludCh4LCB5KSk7CiAgICAgaWYg
KCFzdGQ6OmlzZmluaXRlKHRyYW5zZm9ybWVkUG9pbnQueCgpKSB8fCAhc3RkOjppc2Zpbml0ZSh0
cmFuc2Zvcm1lZFBvaW50LnkoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZUJveEJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuY3BwCmluZGV4IDI5ZmE2NGFkYjdhZDc4
MmQ0ODhlODBiZmFhN2Y1YzY4YzJmZjQ4ODguLjFjODhmMTAxMzliOTVhOGU2NDU3YmRkODRiMDUx
ZTM2MmU4NWQ4YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRl
ci5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBMaW5lQm94QnVpbGRlcjo6TGluZUJveEJ1aWxkZXIo
Y29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIGlubGluZUZvcm1hdHRpbmdDbwogTGluZUJv
eEJ1aWxkZXI6OkxpbmVCb3hBbmRIZWlnaHQgTGluZUJveEJ1aWxkZXI6OmJ1aWxkKGNvbnN0IExp
bmVCdWlsZGVyOjpMaW5lQ29udGVudCYgbGluZUNvbnRlbnQsIHNpemVfdCBsaW5lSW5kZXgpCiB7
CiAgICAgYXV0byYgcm9vdFN0eWxlID0gbGluZUluZGV4ID8gcm9vdEJveCgpLmZpcnN0TGluZVN0
eWxlKCkgOiByb290Qm94KCkuc3R5bGUoKTsKLSAgICBhdXRvIHJvb3RJbmxpbmVCb3hBbGlnbm1l
bnRPZmZzZXQgPSBMYXlvdXQ6Omhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQocm9vdFN0eWxlLnRl
eHRBbGlnbigpLCBsaW5lQ29udGVudCwgcm9vdFN0eWxlLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24o
KSkudmFsdWVfb3IoSW5saW5lTGF5b3V0VW5pdCB7IH0pOworICAgIGF1dG8gcm9vdElubGluZUJv
eEFsaWdubWVudE9mZnNldCA9IHZhbHVlT3JEZWZhdWx0KExheW91dDo6aG9yaXpvbnRhbEFsaWdu
bWVudE9mZnNldChyb290U3R5bGUudGV4dEFsaWduKCksIGxpbmVDb250ZW50LCByb290U3R5bGUu
aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKSk7CiAgICAgLy8gRklYTUU6IFRoZSBvdmVyZmxvd2lu
ZyBoYW5naW5nIGNvbnRlbnQgc2hvdWxkIGJlIHBhcnQgb2YgdGhlIGluayBvdmVyZmxvdy4gIAog
ICAgIGF1dG8gbGluZUJveCA9IExpbmVCb3ggeyByb290Qm94KCksIHJvb3RJbmxpbmVCb3hBbGln
bm1lbnRPZmZzZXQsIGxpbmVDb250ZW50LmNvbnRlbnRMb2dpY2FsV2lkdGggLSBsaW5lQ29udGVu
dC5oYW5naW5nQ29udGVudFdpZHRoLCBsaW5lSW5kZXgsIGxpbmVDb250ZW50Lm5vblNwYW5uaW5n
SW5saW5lTGV2ZWxCb3hDb3VudCB9OwogICAgIGF1dG8gbGluZUJveExvZ2ljYWxIZWlnaHQgPSBj
b25zdHJ1Y3RBbmRBbGlnbklubGluZUxldmVsQm94ZXMobGluZUJveCwgbGluZUNvbnRlbnQsIGxp
bmVJbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0
aWNhbEFsaWduZXIuY3BwCmluZGV4IGRlZjBhNTg3ZGZjZjYwMjVlZDhhNjJjMjllNDc5OTcxZjYx
NDRhMDcuLjZjODU0ZWQzNDZiMzIxN2Q3NDI1NTQ1OTdhMjRkM2IyZDc2NGRhZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0aWNhbEFsaWduZXIuY3Bw
CkBAIC0xNzcsNyArMTc3LDcgQEAgSW5saW5lTGF5b3V0VW5pdCBMaW5lQm94VmVydGljYWxBbGln
bmVyOjpjb21wdXRlTGluZUJveExvZ2ljYWxIZWlnaHQoTGluZUJveCYgbGkKICAgICAgICAgY2Fz
ZSBWZXJ0aWNhbEFsaWduOjpUZXh0Qm90dG9tOiB7CiAgICAgICAgICAgICAvLyBOb3RlIHRoYXQg
dGV4dC1ib3R0b20gYWxpZ25zIHdpdGggdGhlIGlubGluZSBib3gncyBmb250IG1ldHJpY3MgYm90
dG9tIChkZXNjZW50KSBhbmQgbm90IHRoZSBsYXlvdXQgYm91bmRzIGJvdHRvbS4KICAgICAgICAg
ICAgIGF1dG8gcGFyZW50SW5saW5lQm94TGF5b3V0Qm91bmRzID0gcGFyZW50SW5saW5lQm94Lmxh
eW91dEJvdW5kcygpOwotICAgICAgICAgICAgYXV0byBwYXJlbnRJbmxpbmVCb3hMb2dpY2FsQm90
dG9tID0gcGFyZW50SW5saW5lQm94TGF5b3V0Qm91bmRzLmhlaWdodCgpIC0gcGFyZW50SW5saW5l
Qm94TGF5b3V0Qm91bmRzLmRlc2NlbnQgKyBwYXJlbnRJbmxpbmVCb3guZGVzY2VudCgpLnZhbHVl
X29yKElubGluZUxheW91dFVuaXQoKSk7CisgICAgICAgICAgICBhdXRvIHBhcmVudElubGluZUJv
eExvZ2ljYWxCb3R0b20gPSBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3VuZHMuaGVpZ2h0KCkgLSBw
YXJlbnRJbmxpbmVCb3hMYXlvdXRCb3VuZHMuZGVzY2VudCArIHZhbHVlT3JEZWZhdWx0KHBhcmVu
dElubGluZUJveC5kZXNjZW50KCkpOwogICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElu
bGluZUJveExvZ2ljYWxCb3R0b20gLSBpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3VuZHMoKS5oZWln
aHQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yMDgsNyArMjA4LDcgQEAg
SW5saW5lTGF5b3V0VW5pdCBMaW5lQm94VmVydGljYWxBbGlnbmVyOjpjb21wdXRlTGluZUJveExv
Z2ljYWxIZWlnaHQoTGluZUJveCYgbGkKICAgICAvLyBUaGUgbGluZSBib3ggaGVpZ2h0IGNvbXB1
dGF0aW9uIGlzIGFzIGZvbGxvd3M6CiAgICAgLy8gMS4gU3RyZXRjaCB0aGUgbGluZSBib3ggd2l0
aCB0aGUgbm9uLWxpbmUtYm94IHJlbGF0aXZlIGFsaWduZWQgaW5saW5lIGJveCBhYnNvbHV0ZSB0
b3AgYW5kIGJvdHRvbSB2YWx1ZXMuCiAgICAgLy8gMi4gQ2hlY2sgaWYgdGhlIGxpbmUgYm94IHJl
bGF0aXZlIGFsaWduZWQgaW5saW5lIGJveGVzICh0b3AsIGJvdHRvbSBldGMpIGhhdmUgZW5vdWdo
IHJvb20gYW5kIHN0cmV0Y2ggdGhlIGxpbmUgYm94IGZ1cnRoZXIgaWYgbmVlZGVkLgotICAgIGF1
dG8gbGluZUJveExvZ2ljYWxIZWlnaHQgPSBtYXhpbXVtTG9naWNhbEJvdHRvbS52YWx1ZV9vcihJ
bmxpbmVMYXlvdXRVbml0KCkpIC0gbWluaW11bUxvZ2ljYWxUb3AudmFsdWVfb3IoSW5saW5lTGF5
b3V0VW5pdCgpKTsKKyAgICBhdXRvIGxpbmVCb3hMb2dpY2FsSGVpZ2h0ID0gdmFsdWVPckRlZmF1
bHQobWF4aW11bUxvZ2ljYWxCb3R0b20pIC0gdmFsdWVPckRlZmF1bHQobWluaW11bUxvZ2ljYWxU
b3ApOwogICAgIGZvciAoYXV0byogbGluZUJveFJlbGF0aXZlSW5saW5lTGV2ZWxCb3ggOiBsaW5l
Qm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveGVzKSB7CiAgICAgICAgIGlmICghZm9ybWF0dGluZ0dl
b21ldHJ5LmlubGluZUxldmVsQm94QWZmZWN0c0xpbmVCb3goKmxpbmVCb3hSZWxhdGl2ZUlubGlu
ZUxldmVsQm94LCBsaW5lQm94KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1h
dHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggODIwMjNlNzU1NmFiNjBl
NThkNDVmNzI2OWVjNWU5YzNjZmY2MjI0My4uNGI3MzVkMGViNWFiMjVkMDkxMzA2MDYzZTA4Mjk4
ZWQ0ZjU2ODFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRl
eHQuY3BwCkBAIC0xMjMsOCArMTIzLDggQEAgdm9pZCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0Ojpz
ZXRVc2VkR2VvbWV0cnlGb3JDZWxscyhMYXlvdXRVbml0IGF2YWlsYWJsZUhvcml6b24KIAogICAg
ICAgICAgICAgLy8gRklYTUU6IEZpbmQgb3V0IGlmIGl0IGlzIG9rIHRvIHVzZSB0aGUgcmVndWxh
ciBwYWRkaW5nIGhlcmUgdG8gYWxpZ24gdGhlIGNvbnRlbnQgYm94IGluc2lkZSBhIHRhbGwgY2Vs
bCBvciB3ZSBuZWVkIHRvCiAgICAgICAgICAgICAvLyB1c2Ugc29tZSBraW5kIG9mIGludHJpbnNp
YyBwYWRkaW5nIHNpbWlsYXIgdG8gUmVuZGVyVGFibGVDZWxsLgotICAgICAgICAgICAgYXV0byBw
YWRkaW5nVG9wID0gY2VsbEJveEdlb21ldHJ5LnBhZGRpbmdCZWZvcmUoKS52YWx1ZV9vcihMYXlv
dXRVbml0IHsgfSk7Ci0gICAgICAgICAgICBhdXRvIHBhZGRpbmdCb3R0b20gPSBjZWxsQm94R2Vv
bWV0cnkucGFkZGluZ0FmdGVyKCkudmFsdWVfb3IoTGF5b3V0VW5pdCB7IH0pOworICAgICAgICAg
ICAgYXV0byBwYWRkaW5nVG9wID0gdmFsdWVPckRlZmF1bHQoY2VsbEJveEdlb21ldHJ5LnBhZGRp
bmdCZWZvcmUoKSk7CisgICAgICAgICAgICBhdXRvIHBhZGRpbmdCb3R0b20gPSB2YWx1ZU9yRGVm
YXVsdChjZWxsQm94R2VvbWV0cnkucGFkZGluZ0FmdGVyKCkpOwogICAgICAgICAgICAgYXV0byBp
bnRyaW5zaWNQYWRkaW5nVG9wID0gTGF5b3V0VW5pdCB7IH07CiAgICAgICAgICAgICBhdXRvIGlu
dHJpbnNpY1BhZGRpbmdCb3R0b20gPSBMYXlvdXRVbml0IHsgfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggOTE1NWZkMWQ0NjA5YWRmYmM1YTk4YjBkZjZj
ZmY1MzU5M2RhYTY3Yy4uMzJjODhiNWQzNmRiMDczODliN2ZjNjAzODRhZTJjNjcxYzgxODA5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0xMjcsOCArMTI3
LDggQEAKICNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKICNlbmRpZgogCi0jZGVm
aW5lIFBBR0VfSUQgKChtX2ZyYW1lID8gbV9mcmFtZS0+cGFnZUlEKCkudmFsdWVfb3IoUGFnZUlk
ZW50aWZpZXIoKSkgOiBQYWdlSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQotI2RlZmluZSBGUkFN
RV9JRCAoKG1fZnJhbWUgPyBtX2ZyYW1lLT5mcmFtZUlEKCkudmFsdWVfb3IoRnJhbWVJZGVudGlm
aWVyKCkpIDogRnJhbWVJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCisjZGVmaW5lIFBBR0VfSUQg
KChtX2ZyYW1lID8gdmFsdWVPckRlZmF1bHQobV9mcmFtZS0+cGFnZUlEKCkpIDogUGFnZUlkZW50
aWZpZXIoKSkudG9VSW50NjQoKSkKKyNkZWZpbmUgRlJBTUVfSUQgKChtX2ZyYW1lID8gdmFsdWVP
ckRlZmF1bHQobV9mcmFtZS0+ZnJhbWVJRCgpKSA6IEZyYW1lSWRlbnRpZmllcigpKS50b1VJbnQ2
NCgpKQogI2RlZmluZSBJU19NQUlOX0ZSQU1FIChtX2ZyYW1lID8gbV9mcmFtZS0+aXNNYWluRnJh
bWUoKSA6IGZhbHNlKQogI2RlZmluZSBET0NVTUVOVExPQURFUl9SRUxFQVNFX0xPRyhmbXQsIC4u
LikgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJ
RD0lIiBQUkl1NjQgIiwgbWFpbj0lZF0gRG9jdW1lbnRMb2FkZXI6OiIgZm10LCB0aGlzLCBQQUdF
X0lELCBGUkFNRV9JRCwgSVNfTUFJTl9GUkFNRSwgIyNfX1ZBX0FSR1NfXykKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggYmI1MjkxYTY3ZmZmZTdhMTE2ZjhjMmNmYmY0
ZmFiOTRmODg0ODI1Mi4uNWE3NGMyOTkyYWUxZjE5YzQ5YTIwMjc1MDdjMDk5MWI3Y2M0ZGZlOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0xNTMsOCArMTUzLDggQEAK
ICNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNlbmRpZgogCi0jZGVmaW5l
IFBBR0VfSUQgKChwYWdlSUQoKS52YWx1ZV9vcihQYWdlSWRlbnRpZmllcigpKSkudG9VSW50NjQo
KSkKLSNkZWZpbmUgRlJBTUVfSUQgKChmcmFtZUlEKCkudmFsdWVfb3IoRnJhbWVJZGVudGlmaWVy
KCkpKS50b1VJbnQ2NCgpKQorI2RlZmluZSBQQUdFX0lEICh2YWx1ZU9yRGVmYXVsdChwYWdlSUQo
KSkudG9VSW50NjQoKSkKKyNkZWZpbmUgRlJBTUVfSUQgKHZhbHVlT3JEZWZhdWx0KGZyYW1lSUQo
KSkudG9VSW50NjQoKSkKICNkZWZpbmUgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0coY2hhbm5lbCwg
Zm10LCAuLi4pIFJFTEVBU0VfTE9HKGNoYW5uZWwsICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIs
IGZyYW1lSUQ9JSIgUFJJdTY0ICIsIG1haW49JWRdIEZyYW1lTG9hZGVyOjoiIGZtdCwgdGhpcywg
UEFHRV9JRCwgRlJBTUVfSUQsIG1fZnJhbWUuaXNNYWluRnJhbWUoKSwgIyNfX1ZBX0FSR1NfXykK
ICNkZWZpbmUgRlJBTUVMT0FERVJfUkVMRUFTRV9MT0dfRVJST1IoY2hhbm5lbCwgZm10LCAuLi4p
IFJFTEVBU0VfTE9HX0VSUk9SKGNoYW5uZWwsICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIsIGZy
YW1lSUQ9JSIgUFJJdTY0ICIsIG1haW49JWRdIEZyYW1lTG9hZGVyOjoiIGZtdCwgdGhpcywgUEFH
RV9JRCwgRlJBTUVfSUQsIG1fZnJhbWUuaXNNYWluRnJhbWUoKSwgIyNfX1ZBX0FSR1NfXykKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCmluZGV4IGQwODA1Nzk1YWYyMWQz
OWZjNjg1OGQ0YWMwMTY4NzQ1ZjAxMWZlYzQuLmMzZmJiNTY5OTk5YTA2NjcxODhlYWJlMWE0NjBl
NmYwNzY2ODRmMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVj
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKQEAg
LTU0LDggKzU0LDggQEAKICNpbmNsdWRlICJRdWlja0xvb2suaCIKICNlbmRpZgogCi0jZGVmaW5l
IFBBR0VfSUQgKG1fZnJhbWUubG9hZGVyKCkucGFnZUlEKCkudmFsdWVfb3IoUGFnZUlkZW50aWZp
ZXIoKSkudG9VSW50NjQoKSkKLSNkZWZpbmUgRlJBTUVfSUQgKG1fZnJhbWUubG9hZGVyKCkuZnJh
bWVJRCgpLnZhbHVlX29yKEZyYW1lSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQorI2RlZmluZSBQ
QUdFX0lEICh2YWx1ZU9yRGVmYXVsdChtX2ZyYW1lLmxvYWRlcigpLnBhZ2VJRCgpKS50b1VJbnQ2
NCgpKQorI2RlZmluZSBGUkFNRV9JRCAodmFsdWVPckRlZmF1bHQobV9mcmFtZS5sb2FkZXIoKS5m
cmFtZUlEKCkpLnRvVUludDY0KCkpCiAjZGVmaW5lIFBPTElDWUNIRUNLRVJfUkVMRUFTRV9MT0co
Zm10LCAuLi4pIFJFTEVBU0VfTE9HKExvYWRpbmcsICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIs
IGZyYW1lSUQ9JSIgUFJJdTY0ICJdIFBvbGljeUNoZWNrZXI6OiIgZm10LCB0aGlzLCBQQUdFX0lE
LCBGUkFNRV9JRCwgIyNfX1ZBX0FSR1NfXykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNjY0N2MyNzA4MTE4MGViY2Vj
MmI1Y2EyOWZkNjBiNzIzYWI2NDgzNi4uZGM0Mjk4MGU5YjI1ZjU5ZWRlNjE3ZDE4NjNkZjViYTQ2
OTc2YTYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC02
NCw4ICs2NCw4IEBACiAjZW5kaWYKIAogI3VuZGVmIFJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9H
Ci0jZGVmaW5lIFBBR0VfSUQgKChmcmFtZSgpID8gZnJhbWUoKS0+cGFnZUlEKCkudmFsdWVfb3Io
UGFnZUlkZW50aWZpZXIoKSkgOiBQYWdlSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQotI2RlZmlu
ZSBGUkFNRV9JRCAoKGZyYW1lKCkgPyBmcmFtZSgpLT5mcmFtZUlEKCkudmFsdWVfb3IoRnJhbWVJ
ZGVudGlmaWVyKCkpIDogRnJhbWVJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCisjZGVmaW5lIFBB
R0VfSUQgKChmcmFtZSgpID8gdmFsdWVPckRlZmF1bHQoZnJhbWUoKS0+cGFnZUlEKCkpIDogUGFn
ZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKKyNkZWZpbmUgRlJBTUVfSUQgKChmcmFtZSgpID8g
dmFsdWVPckRlZmF1bHQoZnJhbWUoKS0+ZnJhbWVJRCgpKSA6IEZyYW1lSWRlbnRpZmllcigpKS50
b1VJbnQ2NCgpKQogI2RlZmluZSBSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRyhmbXQsIC4uLikg
UkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0l
IiBQUkl1NjQgIiwgZnJhbWVMb2FkZXI9JXAsIHJlc291cmNlSUQ9JSIgUFJJdTY0ICJdIFJlc291
cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgUEFHRV9JRCwgRlJBTUVfSUQsIGZyYW1lTG9hZGVyKCks
IGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAjI19fVkFfQVJHU19fKQogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRl
eCA5NzJmMmFmMjI2MDNmNDI0Y2Q4Nzc1ZjU5MTAxMGUyZDc2OTM4YTAxLi5lNmUwZjc0NzJhMWE3
MWMzZjMyZGNhZjNkMGRhMzJhY2RlNWY2ZjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTY5LDggKzY5LDggQEAKIAogI3VuZGVmIFNVQlJFU09V
UkNFTE9BREVSX1JFTEVBU0VfTE9HCiAjdW5kZWYgU1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9M
T0dfRVJST1IKLSNkZWZpbmUgUEFHRV9JRCAoKGZyYW1lKCkgPyBmcmFtZSgpLT5wYWdlSUQoKS52
YWx1ZV9vcihQYWdlSWRlbnRpZmllcigpKSA6IFBhZ2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCkp
Ci0jZGVmaW5lIEZSQU1FX0lEICgoZnJhbWUoKSA/IGZyYW1lKCktPmZyYW1lSUQoKS52YWx1ZV9v
cihGcmFtZUlkZW50aWZpZXIoKSkgOiBGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKKyNk
ZWZpbmUgUEFHRV9JRCAoKGZyYW1lKCkgPyB2YWx1ZU9yRGVmYXVsdChmcmFtZSgpLT5wYWdlSUQo
KSkgOiBQYWdlSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQorI2RlZmluZSBGUkFNRV9JRCAoKGZy
YW1lKCkgPyB2YWx1ZU9yRGVmYXVsdChmcmFtZSgpLT5mcmFtZUlEKCkpIDogRnJhbWVJZGVudGlm
aWVyKCkpLnRvVUludDY0KCkpCiAjaWYgUkVMRUFTRV9MT0dfRElTQUJMRUQKICNkZWZpbmUgU1VC
UkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0coZm10LCAuLi4pIFVOVVNFRF9WQVJJQUJMRSh0aGlz
KQogI2RlZmluZSBTVUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPR19FUlJPUihmbXQsIC4uLikg
VU5VU0VEX1ZBUklBQkxFKHRoaXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmNwcAppbmRleCA3YjljNjFmOTY2MTc1NDZiNjZiY2MzYzYzZWNhMGU4NTdl
MjYyZWY1Li5iYmMxYjMwNTk1MjdmNGI1YzBmMGM0ZTk2NmQ5Y2Q0OGRkMjg3YWYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKQEAgLTY0LDgg
KzY0LDggQEAKICNlbmRpZgogCiAjdW5kZWYgQ0FDSEVEUkVTT1VSQ0VfUkVMRUFTRV9MT0cKLSNk
ZWZpbmUgUEFHRV9JRChmcmFtZSkgKGZyYW1lLnBhZ2VJRCgpLnZhbHVlX29yKFBhZ2VJZGVudGlm
aWVyKCkpLnRvVUludDY0KCkpCi0jZGVmaW5lIEZSQU1FX0lEKGZyYW1lKSAoZnJhbWUuZnJhbWVJ
RCgpLnZhbHVlX29yKEZyYW1lSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQorI2RlZmluZSBQQUdF
X0lEKGZyYW1lKSAodmFsdWVPckRlZmF1bHQoZnJhbWUucGFnZUlEKCkpLnRvVUludDY0KCkpCisj
ZGVmaW5lIEZSQU1FX0lEKGZyYW1lKSAodmFsdWVPckRlZmF1bHQoZnJhbWUuZnJhbWVJRCgpKS50
b1VJbnQ2NCgpKQogI2RlZmluZSBDQUNIRURSRVNPVVJDRV9SRUxFQVNFX0xPRyhmbXQsIC4uLikg
UkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gQ2FjaGVkUmVzb3VyY2U6OiIgZm10LCB0aGlzLCAj
I19fVkFfQVJHU19fKQogI2RlZmluZSBDQUNIRURSRVNPVVJDRV9SRUxFQVNFX0xPR19XSVRIX0ZS
QU1FKGZtdCwgZnJhbWUsIC4uLikgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gW3BhZ2VJRD0l
IiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIl0gQ2FjaGVkUmVzb3VyY2U6OiIgZm10LCB0
aGlzLCBQQUdFX0lEKGZyYW1lKSwgRlJBTUVfSUQoZnJhbWUpLCAjI19fVkFfQVJHU19fKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmNwcAppbmRleCA4NGMwMTRiZDY0MzBhMTgyY2NmZDdmNDJjODVmYTM4YmI3YzQwYWY0Li5iZTU0
ZTgwYWQ4YzA4NTE5YjdmN2ZhOTczZTVmODdiNTBlOTMwZTY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTk2LDgg
Kzk2LDggQEAKICNlbmRpZgogCiAjdW5kZWYgQ0FDSEVEUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9M
T0cKLSNkZWZpbmUgUEFHRV9JRChmcmFtZSkgKGZyYW1lLnBhZ2VJRCgpLnZhbHVlX29yKFBhZ2VJ
ZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCi0jZGVmaW5lIEZSQU1FX0lEKGZyYW1lKSAoZnJhbWUu
ZnJhbWVJRCgpLnZhbHVlX29yKEZyYW1lSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQorI2RlZmlu
ZSBQQUdFX0lEKGZyYW1lKSAodmFsdWVPckRlZmF1bHQoZnJhbWUucGFnZUlEKCkpLnRvVUludDY0
KCkpCisjZGVmaW5lIEZSQU1FX0lEKGZyYW1lKSAodmFsdWVPckRlZmF1bHQoZnJhbWUuZnJhbWVJ
RCgpKS50b1VJbnQ2NCgpKQogI2RlZmluZSBDQUNIRURSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xP
RyhmbXQsIC4uLikgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBDQUNIRURSRVNPVVJDRUxP
QURFUl9SRUxFQVNFX0xPR19XSVRIX0ZSQU1FKGZtdCwgZnJhbWUsIC4uLikgUkVMRUFTRV9MT0co
TmV0d29yaywgIiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIl0g
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OiIgZm10LCB0aGlzLCBQQUdFX0lEKGZyYW1lKSwgRlJBTUVf
SUQoZnJhbWUpLCAjI19fVkFfQVJHU19fKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAKaW5kZXggOGU0ZTEwMGE0NmUzOTg1YWMzYWNlMDE0MzI4ZWU4YThiMGE5YjE1Mi4uZjFkYjUy
MDg0NjU0NTYxNjVlZjdkZjZhM2MzYmM4NWQ5MzlhNmE5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmNwcApAQCAtOTQ3LDcgKzk0Nyw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRh
dGVTZWxlY3Rpb25Gb3JNb3VzZURyYWcoKQogICAgICAgICByZXR1cm47CiAKICAgICBjb25zdGV4
cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiBoaXRUeXBlIHsgIEhpdFRlc3RSZXF1
ZXN0OjpUeXBlOjpSZWFkT25seSwgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6OkFjdGl2ZSwgSGl0VGVz
dFJlcXVlc3Q6OlR5cGU6Ok1vdmUsIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpEaXNhbGxvd1VzZXJB
Z2VudFNoYWRvd0NvbnRlbnQgfTsKLSAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCh2aWV3LT53aW5k
b3dUb0NvbnRlbnRzKG1fbGFzdEtub3duTW91c2VQb3NpdGlvbi52YWx1ZV9vcihJbnRQb2ludCgp
KSkpOworICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHZpZXctPndpbmRvd1RvQ29udGVudHModmFs
dWVPckRlZmF1bHQobV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uKSkpOwogICAgIGRvY3VtZW50LT5o
aXRUZXN0KGhpdFR5cGUsIHJlc3VsdCk7CiAgICAgdXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFn
KHJlc3VsdCk7CiB9CkBAIC0xMzA3LDcgKzEzMDcsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6bG9n
aWNhbFNjcm9sbFJlY3Vyc2l2ZWx5KFNjcm9sbExvZ2ljYWxEaXJlY3Rpb24gZGlyZWN0aW9uLCBT
YwogCiBJbnRQb2ludCBFdmVudEhhbmRsZXI6Omxhc3RLbm93bk1vdXNlUG9zaXRpb24oKSBjb25z
dAogewotICAgIHJldHVybiBtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24udmFsdWVfb3IoSW50UG9p
bnQoKSk7CisgICAgcmV0dXJuIHZhbHVlT3JEZWZhdWx0KG1fbGFzdEtub3duTW91c2VQb3NpdGlv
bik7CiB9CiAKIFJlZlB0cjxGcmFtZT4gRXZlbnRIYW5kbGVyOjpzdWJmcmFtZUZvckhpdFRlc3RS
ZXN1bHQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgaGl0VGVzdFJlc3VsdCkK
QEAgLTE5NjAsNyArMTk2MCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZU1vdmVF
dmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIHBsYXRmb3JtTW91c2VFCiAjZW5kaWYKIAog
ICAgIGlmIChtX3N2Z1BhbikgewotICAgICAgICBkb3duY2FzdDxTVkdEb2N1bWVudD4oKm1fZnJh
bWUuZG9jdW1lbnQoKSkudXBkYXRlUGFuKG1fZnJhbWUudmlldygpLT53aW5kb3dUb0NvbnRlbnRz
KG1fbGFzdEtub3duTW91c2VQb3NpdGlvbi52YWx1ZV9vcihJbnRQb2ludCgpKSkpOworICAgICAg
ICBkb3duY2FzdDxTVkdEb2N1bWVudD4oKm1fZnJhbWUuZG9jdW1lbnQoKSkudXBkYXRlUGFuKG1f
ZnJhbWUudmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHZhbHVlT3JEZWZhdWx0KG1fbGFzdEtub3du
TW91c2VQb3NpdGlvbikpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yMTI2
LDcgKzIxMjYsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQo
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGF0Zm9ybU1vdQogCiAgICAgaWYgKG1fc3ZnUGFu
KSB7CiAgICAgICAgIG1fc3ZnUGFuID0gZmFsc2U7Ci0gICAgICAgIGRvd25jYXN0PFNWR0RvY3Vt
ZW50PigqbV9mcmFtZS5kb2N1bWVudCgpKS51cGRhdGVQYW4obV9mcmFtZS52aWV3KCktPndpbmRv
d1RvQ29udGVudHMobV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uLnZhbHVlX29yKEludFBvaW50KCkp
KSk7CisgICAgICAgIGRvd25jYXN0PFNWR0RvY3VtZW50PigqbV9mcmFtZS5kb2N1bWVudCgpKS51
cGRhdGVQYW4obV9mcmFtZS52aWV3KCktPndpbmRvd1RvQ29udGVudHModmFsdWVPckRlZmF1bHQo
bV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uKSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKQEAgLTI4NjQsNyArMjg2NCw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpwcm9jZXNzV2hlZWxF
dmVudEZvclNjcm9sbFNuYXAoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgY29uCiAgICAgCiBJ
bnRQb2ludCBFdmVudEhhbmRsZXI6OnRhcmdldFBvc2l0aW9uSW5XaW5kb3dGb3JTZWxlY3Rpb25B
dXRvc2Nyb2xsKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9sYXN0S25vd25Nb3VzZVBvc2l0aW9u
LnZhbHVlX29yKEludFBvaW50KCkpOworICAgIHJldHVybiB2YWx1ZU9yRGVmYXVsdChtX2xhc3RL
bm93bk1vdXNlUG9zaXRpb24pOwogfQogICAgIAogI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFN
SUxZKQpAQCAtMzM5MSw3ICszMzkxLDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRpc3BhdGNoRmFr
ZU1vdXNlTW92ZUV2ZW50U29vbkluUXVhZChjb25zdCBGbG9hdFF1YWQmIHF1YWQpCiAgICAgaWYg
KCF2aWV3KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXF1YWQuY29udGFpbnNQb2ludCh2
aWV3LT53aW5kb3dUb0NvbnRlbnRzKG1fbGFzdEtub3duTW91c2VQb3NpdGlvbi52YWx1ZV9vcihJ
bnRQb2ludCgpKSkpKQorICAgIGlmICghcXVhZC5jb250YWluc1BvaW50KHZpZXctPndpbmRvd1Rv
Q29udGVudHModmFsdWVPckRlZmF1bHQobV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uKSkpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBkaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudFNvb24oKTsKQEAg
LTM0MjAsNyArMzQyMCw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpmYWtlTW91c2VNb3ZlRXZlbnRU
aW1lckZpcmVkKCkKICAgICBib29sIGFsdEtleTsKICAgICBib29sIG1ldGFLZXk7CiAgICAgUGxh
dGZvcm1LZXlib2FyZEV2ZW50OjpnZXRDdXJyZW50TW9kaWZpZXJTdGF0ZShzaGlmdEtleSwgY3Ry
bEtleSwgYWx0S2V5LCBtZXRhS2V5KTsKLSAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZmFrZU1vdXNl
TW92ZUV2ZW50KG1fbGFzdEtub3duTW91c2VQb3NpdGlvbi52YWx1ZV9vcihJbnRQb2ludCgpKSwg
bV9sYXN0S25vd25Nb3VzZUdsb2JhbFBvc2l0aW9uLCBOb0J1dHRvbiwgUGxhdGZvcm1FdmVudDo6
TW91c2VNb3ZlZCwgMCwgc2hpZnRLZXksIGN0cmxLZXksIGFsdEtleSwgbWV0YUtleSwgV2FsbFRp
bWU6Om5vdygpLCAwLCBOb1RhcCk7CisgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGZha2VNb3VzZU1v
dmVFdmVudCh2YWx1ZU9yRGVmYXVsdChtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24pLCBtX2xhc3RL
bm93bk1vdXNlR2xvYmFsUG9zaXRpb24sIE5vQnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1v
dmVkLCAwLCBzaGlmdEtleSwgY3RybEtleSwgYWx0S2V5LCBtZXRhS2V5LCBXYWxsVGltZTo6bm93
KCksIDAsIE5vVGFwKTsKICAgICBtb3VzZU1vdmVkKGZha2VNb3VzZU1vdmVFdmVudCk7CiB9CiAj
ZW5kaWYgLy8gIUVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQpAQCAtMzQ0Niw3ICszNDQ2LDcgQEAg
dm9pZCBFdmVudEhhbmRsZXI6OmhvdmVyVGltZXJGaXJlZCgpCiAKICAgICBpZiAoUmVmUHRyIGRv
Y3VtZW50ID0gbV9mcmFtZS5kb2N1bWVudCgpKSB7CiAgICAgICAgIGlmIChSZWZQdHIgdmlldyA9
IG1fZnJhbWUudmlldygpKSB7Ci0gICAgICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCh2aWV3
LT53aW5kb3dUb0NvbnRlbnRzKG1fbGFzdEtub3duTW91c2VQb3NpdGlvbi52YWx1ZV9vcihJbnRQ
b2ludCgpKSkpOworICAgICAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQodmlldy0+d2luZG93
VG9Db250ZW50cyh2YWx1ZU9yRGVmYXVsdChtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24pKSk7CiAg
ICAgICAgICAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpUeXBlPiBoaXRU
eXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlR5cGU6Ok1vdmUsIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpE
aXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQgfTsKICAgICAgICAgICAgIGRvY3VtZW50LT5o
aXRUZXN0KGhpdFR5cGUsIHJlc3VsdCk7CiAgICAgICAgICAgICBkb2N1bWVudC0+dXBkYXRlSG92
ZXJBY3RpdmVTdGF0ZShoaXRUeXBlLCByZXN1bHQudGFyZ2V0RWxlbWVudCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcAppbmRleCAwNjM3ZjJkOWE3OWMwZjk0MTcyM2Q3MWRjYzE3MTM2ZjRi
NzVhYzg0Li44ZGM3NDBiZTJiNDBlMDYxOWMzZTlhZmRmNWJkN2JlMmQxMjAwOTc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC0xNDAsOCArMTQwLDggQEAKICNpbmNsdWRlICJMYXlv
dXRDb250ZXh0LmgiCiAjZW5kaWYKIAotI2RlZmluZSBQQUdFX0lEIGZyYW1lKCkucGFnZUlEKCku
dmFsdWVfb3IoUGFnZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKQotI2RlZmluZSBGUkFNRV9JRCBm
cmFtZSgpLmZyYW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKQor
I2RlZmluZSBQQUdFX0lEIHZhbHVlT3JEZWZhdWx0KGZyYW1lKCkucGFnZUlEKCkpLnRvVUludDY0
KCkKKyNkZWZpbmUgRlJBTUVfSUQgdmFsdWVPckRlZmF1bHQoZnJhbWUoKS5mcmFtZUlEKCkpLnRv
VUludDY0KCkKICNkZWZpbmUgRlJBTUVWSUVXX1JFTEVBU0VfTE9HKGNoYW5uZWwsIGZtdCwgLi4u
KSBSRUxFQVNFX0xPRyhjaGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlE
PSUiIFBSSXU2NCAiLCBtYWluPSVkXSBGcmFtZVZpZXc6OiIgZm10LCB0aGlzLCBQQUdFX0lELCBG
UkFNRV9JRCwgZnJhbWUoKS5pc01haW5GcmFtZSgpLCAjI19fVkFfQVJHU19fKQogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC0xNzE2LDcgKzE3MTYsNyBAQCB2b2lkIEZyYW1lVmlldzo6c2V0TGF5
b3V0Vmlld3BvcnRPdmVycmlkZVJlY3Qoc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiByZWN0LCBU
cgogICAgIGlmIChvbGRSZWN0LmhlaWdodCgpICE9IGxheW91dFZpZXdwb3J0UmVjdCgpLmhlaWdo
dCgpKQogICAgICAgICBsYXlvdXRUcmlnZ2VyaW5nID0gVHJpZ2dlckxheW91dE9yTm90OjpZZXM7
CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIlxuRnJhbWVWaWV3
ICIgPDwgdGhpcyA8PCAiIHNldExheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KCkgLSBjaGFuZ2lu
ZyBvdmVycmlkZSBsYXlvdXQgdmlld3BvcnQgZnJvbSAiIDw8IG9sZFJlY3QgPDwgIiB0byAiIDw8
IG1fbGF5b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QudmFsdWVfb3IoTGF5b3V0UmVjdCgpKSA8PCAi
IGxheW91dFRyaWdnZXJpbmcgIiA8PCAobGF5b3V0VHJpZ2dlcmluZyA9PSBUcmlnZ2VyTGF5b3V0
T3JOb3Q6OlllcyA/ICJ5ZXMiIDogIm5vIikpOworICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxp
bmcsIHN0cmVhbSA8PCAiXG5GcmFtZVZpZXcgIiA8PCB0aGlzIDw8ICIgc2V0TGF5b3V0Vmlld3Bv
cnRPdmVycmlkZVJlY3QoKSAtIGNoYW5naW5nIG92ZXJyaWRlIGxheW91dCB2aWV3cG9ydCBmcm9t
ICIgPDwgb2xkUmVjdCA8PCAiIHRvICIgPDwgdmFsdWVPckRlZmF1bHQobV9sYXlvdXRWaWV3cG9y
dE92ZXJyaWRlUmVjdCkgPDwgIiBsYXlvdXRUcmlnZ2VyaW5nICIgPDwgKGxheW91dFRyaWdnZXJp
bmcgPT0gVHJpZ2dlckxheW91dE9yTm90OjpZZXMgPyAieWVzIiA6ICJubyIpKTsKIAogICAgIGlm
IChvbGRSZWN0ICE9IGxheW91dFZpZXdwb3J0UmVjdCgpICYmIGxheW91dFRyaWdnZXJpbmcgPT0g
VHJpZ2dlckxheW91dE9yTm90OjpZZXMpCiAgICAgICAgIHNldFZpZXdwb3J0Q29uc3RyYWluZWRP
YmplY3RzTmVlZExheW91dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggOGFlY2JhNjQxMzg4NzAw
NmNjYTM5Njg3ZGVjYjIxZTk5MTY4NGEyMS4uZTBlYzRmOWFlNDk0ZWM4YWMzMTAwZTlmNDk0Y2U2
OGM3Mjc4NjYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0yNjY2LDcgKzI2NjYsNyBAQCBDb2xv
ciBQYWdlOjpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogCiBDb2xvciBQYWdl
OjpzYW1wbGVkUGFnZVRvcENvbG9yKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zYW1wbGVkUGFn
ZVRvcENvbG9yLnZhbHVlX29yKENvbG9yKCkpOworICAgIHJldHVybiB2YWx1ZU9yRGVmYXVsdCht
X3NhbXBsZWRQYWdlVG9wQ29sb3IpOwogfQogCiB2b2lkIFBhZ2U6OnNldFVuZGVyUGFnZUJhY2tn
cm91bmRDb2xvck92ZXJyaWRlKENvbG9yJiYgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJp
ZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KaW5kZXggMWVj
ZDBjYzc4ZWQ1NTU2NGYwMzJiMzBjOWM4M2ViZjU3NGFkZTgwMC4uNTY3ZjFlZTIyMzc2MzZmOWIz
MDgwYTg5MTI1YjQ0NzFlMTI2MGY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvRXZlbnRIYW5kbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50
SGFuZGxlck1hYy5tbQpAQCAtMTA0OSwxMCArMTA0OSwxMCBAQCBJbnRQb2ludCBFdmVudEhhbmRs
ZXI6OnRhcmdldFBvc2l0aW9uSW5XaW5kb3dGb3JTZWxlY3Rpb25BdXRvc2Nyb2xsKCkgY29uc3QK
IHsKICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQotICAg
ICAgICByZXR1cm4gbV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uLnZhbHVlX29yKEludFBvaW50KCkp
OworICAgICAgICByZXR1cm4gdmFsdWVPckRlZmF1bHQobV9sYXN0S25vd25Nb3VzZVBvc2l0aW9u
KTsKIAogICAgIGF1dG8gZnJhbWUgPSB0b1VzZXJTcGFjZUZvclByaW1hcnlTY3JlZW4oc2NyZWVu
UmVjdEZvckRpc3BsYXkocGFnZS0+Y2hyb21lKCkuZGlzcGxheUlEKCkpKTsKLSAgICByZXR1cm4g
bV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uLnZhbHVlX29yKEludFBvaW50KCkpICsgYXV0b3Njcm9s
bEFkanVzdG1lbnRGYWN0b3JGb3JTY3JlZW5Cb3VuZGFyaWVzKG1fbGFzdEtub3duTW91c2VHbG9i
YWxQb3NpdGlvbiwgZnJhbWUpOworICAgIHJldHVybiB2YWx1ZU9yRGVmYXVsdChtX2xhc3RLbm93
bk1vdXNlUG9zaXRpb24pICsgYXV0b3Njcm9sbEFkanVzdG1lbnRGYWN0b3JGb3JTY3JlZW5Cb3Vu
ZGFyaWVzKG1fbGFzdEtub3duTW91c2VHbG9iYWxQb3NpdGlvbiwgZnJhbWUpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTGF0
Y2hpbmdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xsZXIuY3BwCmluZGV4IDVlNWVmZTYwMzU4MjUwZmUyOWQz
MDkwYTA3ZTQ1YmU0ZmUyYTJkNTYuLmFhY2ZkYzc4N2UxODc4ZGIwNTgxZWM1ZTNmMzliNzRmNzUw
YmQ4NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWVMYXRjaGluZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWVMYXRjaGluZ0NvbnRyb2xsZXIuY3BwCkBAIC0xMTIsNyArMTEy
LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyOjpub2RlRGlkSGFuZGxl
RXZlbnQoU2Nyb2xsaW5nTm9kZUlEIHNjcm9sbGkKICAgICAgICAgaWYgKCF3aGVlbEV2ZW50Lmlz
R2VzdHVyZUNvbnRpbnVhdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
ICAgIGlmIChtX3Byb2Nlc3NpbmdTdGVwc0ZvckN1cnJlbnRHZXN0dXJlLnZhbHVlX29yKE9wdGlv
blNldDxXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzPiB7IH0pLmNvbnRhaW5zKFdoZWVsRXZlbnRQ
cm9jZXNzaW5nU3RlcHM6Ok1haW5UaHJlYWRGb3JTY3JvbGxpbmcpICYmIHByb2Nlc3NpbmdTdGVw
cy5jb250YWlucyhXaGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzOjpTY3JvbGxpbmdUaHJlYWQpKQor
ICAgICAgICBpZiAodmFsdWVPckRlZmF1bHQobV9wcm9jZXNzaW5nU3RlcHNGb3JDdXJyZW50R2Vz
dHVyZSkuY29udGFpbnMoV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6TWFpblRocmVhZEZvclNj
cm9sbGluZykgJiYgcHJvY2Vzc2luZ1N0ZXBzLmNvbnRhaW5zKFdoZWVsRXZlbnRQcm9jZXNzaW5n
U3RlcHM6OlNjcm9sbGluZ1RocmVhZCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9TaGFkb3dCbHVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1NoYWRvd0JsdXIuY3BwCmluZGV4IGY4YjYxMDJkNjgzY2Q0YjY5YTg3MDkwZjUwNmZjZDYwOTg5
OGI2ZjEuLmJiMTM4YjUyOTdhNTIxZmJmN2Q2OTNjZDExNDEwNDQwMGZjYWJjNGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCkBAIC00MDQs
NyArNDA0LDcgQEAgc3RkOjpvcHRpb25hbDxTaGFkb3dCbHVyOjpMYXllckltYWdlUHJvcGVydGll
cz4gU2hhZG93Qmx1cjo6Y2FsY3VsYXRlTGF5ZXJCb3VuZGkKICAgICBpZiAobV9zaGFkb3dzSWdu
b3JlVHJhbnNmb3JtcyAmJiAhdHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkgewogICAgICAgICBGbG9h
dFF1YWQgdHJhbnNmb3JtZWRQb2x5Z29uID0gdHJhbnNmb3JtLm1hcFF1YWQoRmxvYXRRdWFkKHNo
YWRvd2VkUmVjdCkpOwogICAgICAgICB0cmFuc2Zvcm1lZFBvbHlnb24ubW92ZShtX29mZnNldCk7
Ci0gICAgICAgIGxheWVyUmVjdCA9IHRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5l
VHJhbnNmb3JtKCkpLm1hcFF1YWQodHJhbnNmb3JtZWRQb2x5Z29uKS5ib3VuZGluZ0JveCgpOwor
ICAgICAgICBsYXllclJlY3QgPSB2YWx1ZU9yRGVmYXVsdCh0cmFuc2Zvcm0uaW52ZXJzZSgpKS5t
YXBRdWFkKHRyYW5zZm9ybWVkUG9seWdvbikuYm91bmRpbmdCb3goKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBsYXllclJlY3QgPSBzaGFkb3dlZFJlY3Q7CiAgICAgICAgIGxheWVyUmVjdC5tb3Zl
KG1fb2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRleCAwMTZiNGNmOTJkYzhi
NDAxNzczMTJhNjAyODk1MjQyNzRlOTViOTMwLi4xNWNmMzY1NDQ2NzlkYzViMDRlOWYyOGI1ZmZk
YjQ1N2FmNTA4NTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCkBAIC0xMDA3LDcgKzEw
MDcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cGFpbnRD
dXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDbwogICAgIGlmICghbV92aWRlb1RyYW5zZm9y
bSkKICAgICAgICAgbV92aWRlb1RyYW5zZm9ybSA9IHZpZGVvVHJhbnNmb3JtYXRpb25NYXRyaXgo
Km1faW1hZ2VQYWludGVyLm1lZGlhU2FtcGxlKTsKICAgICBBZmZpbmVUcmFuc2Zvcm0gdmlkZW9U
cmFuc2Zvcm0gPSAqbV92aWRlb1RyYW5zZm9ybTsKLSAgICBGbG9hdFJlY3QgdHJhbnNmb3JtZWRE
ZXN0UmVjdCA9IHZpZGVvVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zv
cm0oKSkubWFwUmVjdChkZXN0UmVjdCk7CisgICAgRmxvYXRSZWN0IHRyYW5zZm9ybWVkRGVzdFJl
Y3QgPSB2YWx1ZU9yRGVmYXVsdCh2aWRlb1RyYW5zZm9ybS5pbnZlcnNlKCkpLm1hcFJlY3QoZGVz
dFJlY3QpOwogICAgIGNvbnRleHQuY29uY2F0Q1RNKHZpZGVvVHJhbnNmb3JtKTsKICAgICBjb250
ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIGltYWdlUmVjdC5zaXplKCksIHRyYW5zZm9ybWVk
RGVzdFJlY3QsIGltYWdlUmVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCmluZGV4IDNhMjg2N2ExYWMyNDNiYjljOTNj
OWQ2YjcwY2E1NmIwMjk0OGZjOWMuLjJhNGM5MWI1MzY5ZmVjNThkOWM5ZDk0ZTlmYjQyNDZkM2Ni
ZWY5MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDLm1tCkBAIC0xMjY4LDcgKzEyNjgsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjp3aWxsU2VlaygpCiAKIEZsb2F0U2l6ZSBTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6bmF0dXJhbFNpemUoKQogewotICAgIHJldHVybiBtX2NhY2hlZFNpemUudmFsdWVf
b3IoRmxvYXRTaXplKCkpOworICAgIHJldHVybiB2YWx1ZU9yRGVmYXVsdChtX2NhY2hlZFNpemUp
OwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRCZWNvbWVSZWFkeUZv
ck1vcmVTYW1wbGVzKHVpbnQ2NF90IHRyYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCA3NzI3YTI1
ODg1OGM0M2I0OGM0ZDc2NGIwYjJmMWVjNzAzM2IwZmEwLi5mZDlmYWZlOGYxNjk3ZTc5ZjFmYTkx
NDU2YjRiZWE4ZWE1ZDgyNTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTE2NjYsNyArMTY2Niw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllckNBOjpzZXRWaXNpYmxlQW5kQ292ZXJhZ2VSZWN0cyhjb25zdCBW
aXNpYmxlQW5kQ292ZXJhZ2VSZWN0cyYKICAgICBpZiAoYXV0byBleHRlbnQgPSBhbmltYXRpb25F
eHRlbnQoKSkgewogICAgICAgICAvLyBBZGp1c3QgdGhlIGFuaW1hdGlvbiBleHRlbnQgdG8gbWF0
Y2ggdGhlIGN1cnJlbnQgYW5pbWF0aW9uIHBvc2l0aW9uLgogICAgICAgICBhdXRvIGFuaW1hdGlu
Z1RyYW5zZm9ybVdpdGhBbmNob3JQb2ludCA9IHRyYW5zZm9ybUJ5QXBwbHlpbmdBbmNob3JQb2lu
dChyZWN0cy5hbmltYXRpbmdUcmFuc2Zvcm0pOwotICAgICAgICBib3VuZHMgPSBhbmltYXRpbmdU
cmFuc2Zvcm1XaXRoQW5jaG9yUG9pbnQuaW52ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9u
TWF0cml4KCkpLm1hcFJlY3QoKmV4dGVudCk7CisgICAgICAgIGJvdW5kcyA9IHZhbHVlT3JEZWZh
dWx0KGFuaW1hdGluZ1RyYW5zZm9ybVdpdGhBbmNob3JQb2ludC5pbnZlcnNlKCkpLm1hcFJlY3Qo
KmV4dGVudCk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGFrZSByZWZsZWN0
aW9ucyBpbnRvIGFjY291bnQgd2hlbiBkZXRlcm1pbmluZyB3aGV0aGVyIHRoaXMgbGF5ZXIgaW50
ZXJzZWN0cyB0aGUgY292ZXJhZ2UgcmVjdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAKaW5k
ZXggNGI0M2Q3NjY5NzMzYjYxNTRjZjU0ZjRkNWVkOGNmYzEwODcxZTk0MC4uMGJkMzJmMjI1NmM4
MzQyOTUxMjZkNmI2Njg0NWVmODE3OTBhYWZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1TdGF0ZS5j
cHAKQEAgLTE2OSw3ICsxNjksNyBAQCBGbG9hdFBvaW50IFRyYW5zZm9ybVN0YXRlOjptYXBwZWRQ
b2ludChib29sKiB3YXNDbGFtcGVkKSBjb25zdAogICAgIGlmIChtX2RpcmVjdGlvbiA9PSBBcHBs
eVRyYW5zZm9ybURpcmVjdGlvbikKICAgICAgICAgcmV0dXJuIG1fYWNjdW11bGF0ZWRUcmFuc2Zv
cm0tPm1hcFBvaW50KHBvaW50KTsKIAotICAgIHJldHVybiBtX2FjY3VtdWxhdGVkVHJhbnNmb3Jt
LT5pbnZlcnNlKCkudmFsdWVfb3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkucHJvamVjdFBvaW50
KHBvaW50LCB3YXNDbGFtcGVkKTsKKyAgICByZXR1cm4gdmFsdWVPckRlZmF1bHQobV9hY2N1bXVs
YXRlZFRyYW5zZm9ybS0+aW52ZXJzZSgpKS5wcm9qZWN0UG9pbnQocG9pbnQsIHdhc0NsYW1wZWQp
OwogfQogCiBGbG9hdFF1YWQgVHJhbnNmb3JtU3RhdGU6Om1hcHBlZFF1YWQoYm9vbCogd2FzQ2xh
bXBlZCkgY29uc3QKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIFRyYW5zZm9ybVN0YXRlOjptYXBR
dWFkKEZsb2F0UXVhZCYgcXVhZCwgVHJhbnNmb3JtRGlyZWN0aW9uIGRpcmVjdGlvbiwgYm9vbAog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcXVhZCA9IG1fYWNjdW11bGF0ZWRUcmFuc2Zv
cm0tPmludmVyc2UoKS52YWx1ZV9vcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKS5wcm9qZWN0UXVh
ZChxdWFkLCB3YXNDbGFtcGVkKTsKKyAgICBxdWFkID0gdmFsdWVPckRlZmF1bHQobV9hY2N1bXVs
YXRlZFRyYW5zZm9ybS0+aW52ZXJzZSgpKS5wcm9qZWN0UXVhZChxdWFkLCB3YXNDbGFtcGVkKTsK
IH0KIAogdm9pZCBUcmFuc2Zvcm1TdGF0ZTo6ZmxhdHRlbldpdGhUcmFuc2Zvcm0oY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHQsIGJvb2wqIHdhc0NsYW1wZWQpCkBAIC0yMzMsNyArMjMzLDcg
QEAgdm9pZCBUcmFuc2Zvcm1TdGF0ZTo6ZmxhdHRlbldpdGhUcmFuc2Zvcm0oY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHQsIGJvb2wqIHcKICAgICAgICAgICAgICAgICBtX2xhc3RQbGFuYXJT
ZWNvbmRhcnlRdWFkID0gdC5tYXBRdWFkKCptX2xhc3RQbGFuYXJTZWNvbmRhcnlRdWFkKTsKICAg
ICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGludmVy
c2VUcmFuc2Zvcm0gPSB0LmludmVyc2UoKS52YWx1ZV9vcihUcmFuc2Zvcm1hdGlvbk1hdHJpeCgp
KTsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaW52ZXJzZVRyYW5zZm9ybSA9IHZhbHVl
T3JEZWZhdWx0KHQuaW52ZXJzZSgpKTsKICAgICAgICAgaWYgKG1fbWFwUG9pbnQpCiAgICAgICAg
ICAgICBtX2xhc3RQbGFuYXJQb2ludCA9IGludmVyc2VUcmFuc2Zvcm0ucHJvamVjdFBvaW50KG1f
bGFzdFBsYW5hclBvaW50KTsKICAgICAgICAgaWYgKG1fbWFwUXVhZCkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAK
aW5kZXggYzVlNTlhMWJjNmJjZDViM2Q3NjhiMjRmNzMyZDRkZTFmODQ5ZjFmZi4uYzVhNTdmNDc5
ZTZiMjg0MmE3NGQ0OGExNWVjNzU2NzA1ZTYwNmVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCkBAIC02Mjgs
NyArNjI4LDcgQEAgYm9vbCBSZXNvdXJjZVJlcXVlc3RCYXNlOjppc1N5c3RlbVByZXZpZXcoKSBj
b25zdAogCiBTeXN0ZW1QcmV2aWV3SW5mbyBSZXNvdXJjZVJlcXVlc3RCYXNlOjpzeXN0ZW1QcmV2
aWV3SW5mbygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3lzdGVtUHJldmlld0luZm8udmFsdWVf
b3IoU3lzdGVtUHJldmlld0luZm8geyB9KTsKKyAgICByZXR1cm4gdmFsdWVPckRlZmF1bHQobV9z
eXN0ZW1QcmV2aWV3SW5mbyk7CiB9CiAKIHZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0U3lz
dGVtUHJldmlld0luZm8oY29uc3QgU3lzdGVtUHJldmlld0luZm8mIGluZm8pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2Uu
Y3BwCmluZGV4IDk1MGU4MjY3ZTJhNWU4NmJhNzlkNjc5ZTdkNzM2MTEwMWMwZmJhZWIuLjJkNTgz
ODVlYzE2ZDJlNTkyM2NlODE3ZDE5MGY2N2ZjNDE3OGEwMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCkBA
IC0xOTIsNyArMTkyLDcgQEAgUmVzb3VyY2VSZXNwb25zZSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6
ZmlsdGVyKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLAogICAgIEFTU0VSVChyZXNw
b25zZS50YWludGluZygpID09IFRhaW50aW5nOjpDb3JzKTsKICAgICBmaWx0ZXJlZFJlc3BvbnNl
LnNldFR5cGUoVHlwZTo6Q29ycyk7CiAKLSAgICBhdXRvIGFjY2Vzc0NvbnRyb2xFeHBvc2VIZWFk
ZXJTZXQgPSBwYXJzZUFjY2Vzc0NvbnRyb2xBbGxvd0xpc3Q8QVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPihyZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkFjY2Vzc0NvbnRy
b2xFeHBvc2VIZWFkZXJzKSkudmFsdWVfb3IoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4geyB9KTsKKyAgICBhdXRvIGFjY2Vzc0NvbnRyb2xFeHBvc2VIZWFkZXJTZXQg
PSB2YWx1ZU9yRGVmYXVsdChwYXJzZUFjY2Vzc0NvbnRyb2xBbGxvd0xpc3Q8QVNDSUlDYXNlSW5z
ZW5zaXRpdmVIYXNoPihyZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkFj
Y2Vzc0NvbnRyb2xFeHBvc2VIZWFkZXJzKSkpOwogICAgIGlmIChwZXJmb3JtQ2hlY2sgPT0gUGVy
Zm9ybUV4cG9zZUFsbEhlYWRlcnNDaGVjazo6WWVzICYmIGFjY2Vzc0NvbnRyb2xFeHBvc2VIZWFk
ZXJTZXQuY29udGFpbnMoIioiKSkKICAgICAgICAgcmV0dXJuIGZpbHRlcmVkUmVzcG9uc2U7CiAK
QEAgLTQ1OCw3ICs0NTgsNyBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzYW5pdGl6ZUhU
VFBIZWFkZXJGaWVsZHNBY2NvcmRpbmdUb1RhaW50aW5nKCkKICAgICBjYXNlIFJlc291cmNlUmVz
cG9uc2U6OlRhaW50aW5nOjpCYXNpYzoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZXNvdXJj
ZVJlc3BvbnNlOjpUYWludGluZzo6Q29yczogewotICAgICAgICBhdXRvIGNvcnNTYWZlSGVhZGVy
U2V0ID0gcGFyc2VBY2Nlc3NDb250cm9sQWxsb3dMaXN0PEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4oaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpBY2Nlc3NDb250cm9sRXhwb3NlSGVh
ZGVycykpLnZhbHVlX29yKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
IHsgfSk7CisgICAgICAgIGF1dG8gY29yc1NhZmVIZWFkZXJTZXQgPSB2YWx1ZU9yRGVmYXVsdChw
YXJzZUFjY2Vzc0NvbnRyb2xBbGxvd0xpc3Q8QVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPihodHRw
SGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkFjY2Vzc0NvbnRyb2xFeHBvc2VIZWFkZXJzKSkp
OwogICAgICAgICBpZiAoY29yc1NhZmVIZWFkZXJTZXQuY29udGFpbnMoIioiX3N0cikpCiAgICAg
ICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Q
YWludEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludEluZm8uaAppbmRleCA1
MWVmNDFkY2ZkNWU1ZDEyYTlhYjU2ZGJmYjUyNDQwYzg1MGNkNzM2Li4wNTBkNWNhZjZiMmZkM2Jm
MzIxZWJiOTFhODc2MTlkMzk2ODE1MDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUGFpbnRJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5m
by5oCkBAIC0xMTYsNyArMTE2LDcgQEAgc3RydWN0IFBhaW50SW5mbyB7CiAgICAgICAgIGlmIChy
ZWN0LmlzSW5maW5pdGUoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBGbG9hdFJl
Y3QgdHJhbmZvcm1lZFJlY3QobG9jYWxUb0FuY2VzdG9yVHJhbnNmb3JtLmludmVyc2UoKS52YWx1
ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChyZWN0KSk7CisgICAgICAgIEZsb2F0UmVj
dCB0cmFuZm9ybWVkUmVjdCh2YWx1ZU9yRGVmYXVsdChsb2NhbFRvQW5jZXN0b3JUcmFuc2Zvcm0u
aW52ZXJzZSgpKS5tYXBSZWN0KHJlY3QpKTsKICAgICAgICAgcmVjdC5zZXRMb2NhdGlvbihMYXlv
dXRQb2ludCh0cmFuZm9ybWVkUmVjdC5sb2NhdGlvbigpKSk7CiAgICAgICAgIHJlY3Quc2V0U2l6
ZShMYXlvdXRTaXplKHRyYW5mb3JtZWRSZWN0LnNpemUoKSkpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDJkZDE1
ODcxZDdiNzE2MzgyZTA1NzYwZDgyMmU5ZTU3OTVlOWJmNGIuLmQzZWQ5YzRlOTI3YTRhMWVmMGRh
NjJkMzViN2I0YWMxZDc0YWMwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtMzQ5LDcgKzM0OSw3IEBAIExheW91dFNpemUg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OnJlbGF0aXZlUG9zaXRpb25PZmZzZXQoKSBjb25zdAogICAg
IC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtZ3JpZC8jZ3JpZC1pdGVtLXNpemluZwog
ICAgIGlmICghc3R5bGUoKS5sZWZ0KCkuaXNBdXRvKCkgfHwgIXN0eWxlKCkucmlnaHQoKS5pc0F1
dG8oKSkgewogICAgICAgICBMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoID0gaGFzT3ZlcnJpZGlu
Z0NvbnRhaW5pbmdCbG9ja0NvbnRlbnRXaWR0aCgpCi0gICAgICAgICAgICA/IG92ZXJyaWRpbmdD
b250YWluaW5nQmxvY2tDb250ZW50V2lkdGgoKS52YWx1ZV9vcihMYXlvdXRVbml0KCkpIDogY29u
dGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZVdpZHRoKCk7CisgICAgICAgICAgICA/IHZhbHVlT3JE
ZWZhdWx0KG92ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50V2lkdGgoKSkgOiBjb250YWlu
aW5nQmxvY2soKS0+YXZhaWxhYmxlV2lkdGgoKTsKICAgICAgICAgaWYgKCFzdHlsZSgpLmxlZnQo
KS5pc0F1dG8oKSkgewogICAgICAgICAgICAgaWYgKCFzdHlsZSgpLnJpZ2h0KCkuaXNBdXRvKCkg
JiYgIWNvbnRhaW5pbmdCbG9jaygpLT5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkK
ICAgICAgICAgICAgICAgICBvZmZzZXQuc2V0V2lkdGgoLXZhbHVlRm9yTGVuZ3RoKHN0eWxlKCku
cmlnaHQoKSwgIXN0eWxlKCkucmlnaHQoKS5pc0ZpeGVkKCkgPyBhdmFpbGFibGVXaWR0aCA6IDBf
bHUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAppbmRleCAzMTc5ZGVm
MDI5OWU0ZWJkNzVhY2NhY2ZjZGQ3NDc5NjA5MTU1MWI1Li4yNmY4ZmNiYzBhYjI3OTYwYzQ5Mzky
MjNlNzQ4ZDkzYzNiODNjOTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyR3JpZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQu
Y3BwCkBAIC00OTQsNyArNDk0LDcgQEAgdW5zaWduZWQgUmVuZGVyR3JpZDo6Y29tcHV0ZUF1dG9S
ZXBlYXRUcmFja3NDb3VudChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWMKICAgICAgICAg
aWYgKG1heFNpemUuaXNTcGVjaWZpZWQoKSkgewogICAgICAgICAgICAgaWYgKG1heFNpemUuaXNQ
ZXJjZW50T3JDYWxjdWxhdGVkKCkpCiAgICAgICAgICAgICAgICAgY29udGFpbmluZ0Jsb2NrQXZh
aWxhYmxlU2l6ZSA9IGlzUm93QXhpcyA/IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZvckNv
bnRlbnQoKSA6IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHRGb3JDb250ZW50KEV4Y2x1ZGVN
YXJnaW5Cb3JkZXJQYWRkaW5nKTsKLSAgICAgICAgICAgIExheW91dFVuaXQgbWF4U2l6ZVZhbHVl
ID0gdmFsdWVGb3JMZW5ndGgobWF4U2l6ZSwgY29udGFpbmluZ0Jsb2NrQXZhaWxhYmxlU2l6ZS52
YWx1ZV9vcihMYXlvdXRVbml0KCkpKTsKKyAgICAgICAgICAgIExheW91dFVuaXQgbWF4U2l6ZVZh
bHVlID0gdmFsdWVGb3JMZW5ndGgobWF4U2l6ZSwgdmFsdWVPckRlZmF1bHQoY29udGFpbmluZ0Js
b2NrQXZhaWxhYmxlU2l6ZSkpOwogICAgICAgICAgICAgYXZhaWxhYmxlTWF4U2l6ZSA9IGlzUm93
QXhpcyA/IGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JCb3hTaXppbmcobWF4U2l6ZVZh
bHVlLCBtYXhTaXplLnR5cGUoKSkgOiBhZGp1c3RDb250ZW50Qm94TG9naWNhbEhlaWdodEZvckJv
eFNpemluZyhtYXhTaXplVmFsdWUpOwogICAgICAgICB9CiAKQEAgLTUwOSw3ICs1MDksNyBAQCB1
bnNpZ25lZCBSZW5kZXJHcmlkOjpjb21wdXRlQXV0b1JlcGVhdFRyYWNrc0NvdW50KEdyaWRUcmFj
a1NpemluZ0RpcmVjdGlvbiBkaXJlYwogICAgICAgICBpZiAobWluU2l6ZS5pc1NwZWNpZmllZCgp
KSB7CiAgICAgICAgICAgICBpZiAoIWNvbnRhaW5pbmdCbG9ja0F2YWlsYWJsZVNpemUgJiYgbWlu
U2l6ZS5pc1BlcmNlbnRPckNhbGN1bGF0ZWQoKSkKICAgICAgICAgICAgICAgICBjb250YWluaW5n
QmxvY2tBdmFpbGFibGVTaXplID0gaXNSb3dBeGlzID8gY29udGFpbmluZ0Jsb2NrTG9naWNhbFdp
ZHRoRm9yQ29udGVudCgpIDogY29udGFpbmluZ0Jsb2NrTG9naWNhbEhlaWdodEZvckNvbnRlbnQo
RXhjbHVkZU1hcmdpbkJvcmRlclBhZGRpbmcpOwotICAgICAgICAgICAgTGF5b3V0VW5pdCBtaW5T
aXplVmFsdWUgPSB2YWx1ZUZvckxlbmd0aChtaW5TaXplLCBjb250YWluaW5nQmxvY2tBdmFpbGFi
bGVTaXplLnZhbHVlX29yKExheW91dFVuaXQoKSkpOworICAgICAgICAgICAgTGF5b3V0VW5pdCBt
aW5TaXplVmFsdWUgPSB2YWx1ZUZvckxlbmd0aChtaW5TaXplLCB2YWx1ZU9yRGVmYXVsdChjb250
YWluaW5nQmxvY2tBdmFpbGFibGVTaXplKSk7CiAgICAgICAgICAgICBhdmFpbGFibGVNaW5TaXpl
ID0gaXNSb3dBeGlzID8gYWRqdXN0Q29udGVudEJveExvZ2ljYWxXaWR0aEZvckJveFNpemluZyht
aW5TaXplVmFsdWUsIG1pblNpemUudHlwZSgpKSA6IGFkanVzdENvbnRlbnRCb3hMb2dpY2FsSGVp
Z2h0Rm9yQm94U2l6aW5nKG1pblNpemVWYWx1ZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoc2hvdWxk
Q29tcHV0ZU1pblNpemVGcm9tQXNwZWN0UmF0aW8pIHsKICAgICAgICAgICAgIGF1dG8gW2xvZ2lj
YWxNaW5XaWR0aCwgbG9naWNhbE1heFdpZHRoXSA9IGNvbXB1dGVNaW5NYXhMb2dpY2FsV2lkdGhG
cm9tQXNwZWN0UmF0aW8oKTsKQEAgLTUxOCw3ICs1MTgsNyBAQCB1bnNpZ25lZCBSZW5kZXJHcmlk
Ojpjb21wdXRlQXV0b1JlcGVhdFRyYWNrc0NvdW50KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBk
aXJlYwogICAgICAgICBpZiAoIW1heFNpemUuaXNTcGVjaWZpZWQoKSkKICAgICAgICAgICAgIG5l
ZWRzVG9GdWxmaWxsTWluaW11bVNpemUgPSB0cnVlOwogCi0gICAgICAgIGF2YWlsYWJsZVNpemUg
PSBzdGQ6Om1heChhdmFpbGFibGVNaW5TaXplLnZhbHVlX29yKExheW91dFVuaXQoKSksIGF2YWls
YWJsZU1heFNpemUudmFsdWVfb3IoTGF5b3V0VW5pdCgpKSk7CisgICAgICAgIGF2YWlsYWJsZVNp
emUgPSBzdGQ6Om1heCh2YWx1ZU9yRGVmYXVsdChhdmFpbGFibGVNaW5TaXplKSwgdmFsdWVPckRl
ZmF1bHQoYXZhaWxhYmxlTWF4U2l6ZSkpOwogICAgIH0KIAogICAgIExheW91dFVuaXQgYXV0b1Jl
cGVhdFRyYWNrc1NpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApp
bmRleCA5YmEwMzk5Y2VlYWJmNTdjYWEwNzI5NzQ3MDU5MDgzNmYyZDBlYWY4Li45YjIyZDNiNDlk
Mjc2NDBhYmY5NjQxOTAzMmJjOTM4N2NlNWIxMGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKQEAgLTEwMTAsNyArMTAxMCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6
OnVwZGF0ZUxheWVyUG9zaXRpb25zKFJlbmRlckdlb21ldHJ5TWFwKiBnZW9tZXRyeU1hcCwgT3B0
aW9uU2V0CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzaG91bGRSZXBhaW50QWZ0ZXJMYXlv
dXQoKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugd2lsbCBjb252ZXJ0IHRo
aXMgdG8ganVzdCB0YWtlIHRoZSBvbGQgYW5kIG5ldyBSZXBhaW50TGF5b3V0UmVjdHMgb25jZQog
ICAgICAgICAgICAgICAgICAgICAvLyB3ZSBjaGFuZ2Ugb3RoZXIgY2FsbGVycyB0byB1c2UgUmVw
YWludExheW91dFJlY3RzLgotICAgICAgICAgICAgICAgICAgICBhdXRvIHJlc29sdmVkT2xkUmVj
dHMgPSBvbGRSZWN0cy52YWx1ZV9vcihMYXllclJlcGFpbnRSZWN0cyB7IH0pOworICAgICAgICAg
ICAgICAgICAgICBhdXRvIHJlc29sdmVkT2xkUmVjdHMgPSB2YWx1ZU9yRGVmYXVsdChvbGRSZWN0
cyk7CiAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmVyKCkucmVwYWludEFmdGVyTGF5b3V0SWZO
ZWVkZWQocmVwYWludENvbnRhaW5lciwgcmVzb2x2ZWRPbGRSZWN0cy5jbGlwcGVkT3ZlcmZsb3dS
ZWN0LCByZXNvbHZlZE9sZFJlY3RzLm91dGxpbmVCb3VuZHNSZWN0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgJm5ld1JlY3RzLT5jbGlwcGVkT3ZlcmZsb3dSZWN0LCAmbmV3UmVjdHMtPm91dGxp
bmVCb3VuZHNSZWN0KTsKICAgICAgICAgICAgICAgICB9CkBAIC0zNDkzLDcgKzM0OTMsNyBAQCB2
b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQnlBcHBseWluZ1RyYW5zZm9ybShHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0CiAgICAgTGF5b3V0U2l6ZSBhZGp1c3RlZFN1YnBpeGVsT2Zm
c2V0ID0gb2Zmc2V0Rm9yVGhpc0xheWVyIC0gTGF5b3V0U2l6ZShkZXZpY2VQaXhlbFNuYXBwZWRP
ZmZzZXRGb3JUaGlzTGF5ZXIpOwogICAgIExheWVyUGFpbnRpbmdJbmZvIHRyYW5zZm9ybWVkUGFp
bnRpbmdJbmZvKHBhaW50aW5nSW5mbyk7CiAgICAgdHJhbnNmb3JtZWRQYWludGluZ0luZm8ucm9v
dExheWVyID0gdGhpczsKLSAgICB0cmFuc2Zvcm1lZFBhaW50aW5nSW5mby5wYWludERpcnR5UmVj
dCA9IExheW91dFJlY3QoZW5jbG9zZVJlY3RUb0RldmljZVBpeGVscyh0cmFuc2Zvcm0uaW52ZXJz
ZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KHBhaW50aW5nSW5mby5wYWlu
dERpcnR5UmVjdCksIGRldmljZVNjYWxlRmFjdG9yKSk7CisgICAgdHJhbnNmb3JtZWRQYWludGlu
Z0luZm8ucGFpbnREaXJ0eVJlY3QgPSBMYXlvdXRSZWN0KGVuY2xvc2VSZWN0VG9EZXZpY2VQaXhl
bHModmFsdWVPckRlZmF1bHQodHJhbnNmb3JtLmludmVyc2UoKSkubWFwUmVjdChwYWludGluZ0lu
Zm8ucGFpbnREaXJ0eVJlY3QpLCBkZXZpY2VTY2FsZUZhY3RvcikpOwogICAgIHRyYW5zZm9ybWVk
UGFpbnRpbmdJbmZvLnN1YnBpeGVsT2Zmc2V0ID0gYWRqdXN0ZWRTdWJwaXhlbE9mZnNldDsKICAg
ICBwYWludExheWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKGNvbnRleHQsIHRyYW5zZm9ybWVkUGFp
bnRpbmdJbmZvLCBwYWludEZsYWdzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZXcuY3BwCmluZGV4IDE3MzhhOGI2ZTc1ODUxNWY1M2Q3N2I2Njg0MDdjMTc5ZGY1ZWQzZWYuLjYw
ZmZiMTcwNjVjMzBiNzk0M2I5M2U4Y2ZhNzUyNTQyOTJjMGJkZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIFJlbmRlclZp
ZXc6OmxheW91dCgpCiAgICAgaWYgKCFuZWVkc0xheW91dCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBMYXlvdXRTdGF0ZU1haW50YWluZXIgc3RhdGVQdXNoZXIoKnRoaXMsIHsgfSwgZmFsc2Us
IG1fcGFnZUxvZ2ljYWxTaXplLnZhbHVlX29yKExheW91dFNpemUoKSkuaGVpZ2h0KCksIG1fcGFn
ZUxvZ2ljYWxIZWlnaHRDaGFuZ2VkKTsKKyAgICBMYXlvdXRTdGF0ZU1haW50YWluZXIgc3RhdGVQ
dXNoZXIoKnRoaXMsIHsgfSwgZmFsc2UsIHZhbHVlT3JEZWZhdWx0KG1fcGFnZUxvZ2ljYWxTaXpl
KS5oZWlnaHQoKSwgbV9wYWdlTG9naWNhbEhlaWdodENoYW5nZWQpOwogCiAgICAgbV9wYWdlTG9n
aWNhbEhlaWdodENoYW5nZWQgPSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvTGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHAKaW5kZXggZTgwODI2NTliMmY0MDIw
ZTIxMjdhYjQ5ZTQ4NzllNjEyMDliYzQxNC4uNDc0NjdmNzgzODA2NGIxZDRiODU1YmI5MWVhMWFk
NGRkOWM5NjE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9MZWdh
Y3lSZW5kZXJTVkdSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL0xl
Z2FjeVJlbmRlclNWR1Jvb3QuY3BwCkBAIC00MjksNyArNDI5LDcgQEAgYm9vbCBMZWdhY3lSZW5k
ZXJTVkdSb290Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0
VGVzdFJlc3UKICAgICAvLyBUZXN0IFNWRyBjb250ZW50IGlmIHRoZSBwb2ludCBpcyBpbiBvdXIg
Y29udGVudCBib3ggb3IgaXQgaXMgaW5zaWRlIHRoZSB2aXN1YWxPdmVyZmxvd1JlY3QgYW5kIHRo
ZSBvdmVyZmxvdyBpcyB2aXNpYmxlLgogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhbiBp
bnRlcnNlY3Rpb24gd2hlbiByZWN0LWJhc2VkIGhpdCB0ZXN0cyBhcmUgc3VwcG9ydGVkIGJ5IG5v
ZGVBdEZsb2F0UG9pbnQuCiAgICAgaWYgKGNvbnRlbnRCb3hSZWN0KCkuY29udGFpbnMocG9pbnRJ
bkJvcmRlckJveCkgfHwgKCFzaG91bGRBcHBseVZpZXdwb3J0Q2xpcCgpICYmIHZpc3VhbE92ZXJm
bG93UmVjdCgpLmNvbnRhaW5zKHBvaW50SW5QYXJlbnQpKSkgewotICAgICAgICBGbG9hdFBvaW50
IGxvY2FsUG9pbnQgPSBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlX29y
KEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChGbG9hdFBvaW50KHBvaW50SW5QYXJlbnQpKTsK
KyAgICAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gdmFsdWVPckRlZmF1bHQobG9jYWxUb1Bh
cmVudFRyYW5zZm9ybSgpLmludmVyc2UoKSkubWFwUG9pbnQoRmxvYXRQb2ludChwb2ludEluUGFy
ZW50KSk7CiAKICAgICAgICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gbGFzdENoaWxkKCk7
IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSkgewogICAgICAgICAgICAg
Ly8gRklYTUU6IG5vZGVBdEZsb2F0UG9pbnQoKSBkb2Vzbid0IGhhbmRsZSByZWN0LWJhc2VkIGhp
dCB0ZXN0cyB5ZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL0xl
Z2FjeVJlbmRlclNWR1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvTGVn
YWN5UmVuZGVyU1ZHU2hhcGUuY3BwCmluZGV4IDk1NWNmMzhmYzFiOThlYWNmOGJiMGYzZDgxMjhm
YjVlYTk5YjNlNjMuLjk4NjRkZjhjZmEzODE5MzQzM2U3NTYwNWM5ZDBiNjdkYjhhY2JkYmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvTGVnYWN5UmVuZGVyU1ZHU2hh
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvTGVnYWN5UmVuZGVyU1ZH
U2hhcGUuY3BwCkBAIC0zNDcsNyArMzQ3LDcgQEAgYm9vbCBMZWdhY3lSZW5kZXJTVkdTaGFwZTo6
bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGUKICAg
ICBpZiAoaGl0VGVzdEFjdGlvbiAhPSBIaXRUZXN0Rm9yZWdyb3VuZCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbV9sb2NhbFRyYW5zZm9ybS5p
bnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJl
bnQpOworICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IHZhbHVlT3JEZWZhdWx0KG1fbG9jYWxU
cmFuc2Zvcm0uaW52ZXJzZSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKIAogICAgIGlmICgh
U1ZHUmVuZGVyU3VwcG9ydDo6cG9pbnRJbkNsaXBwaW5nQXJlYSgqdGhpcywgbG9jYWxQb2ludCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAppbmRleCA4YjA1NzRiN2Y3NDExNDkxMDRhMzIz
ZDZiZTI2NmQ0MjM4ZDhmYzgwLi5jMGQyNTc0YjZiOTU5YTQ1ZjQyODhmYTA0ZTZjNGNkNDJmYjFk
ZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Nv
bnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdD
b250YWluZXIuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgYm9vbCBSZW5kZXJTVkdDb250YWluZXI6
Om5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3QK
ICAgICBpZiAoIXBvaW50SXNJbnNpZGVWaWV3cG9ydENsaXAocG9pbnRJblBhcmVudCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9Q
YXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1h
cFBvaW50KHBvaW50SW5QYXJlbnQpOworICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IHZhbHVl
T3JEZWZhdWx0KGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkpLm1hcFBvaW50KHBv
aW50SW5QYXJlbnQpOwogCiAgICAgaWYgKCFTVkdSZW5kZXJTdXBwb3J0Ojpwb2ludEluQ2xpcHBp
bmdBcmVhKCp0aGlzLCBsb2NhbFBvaW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVj
dC5jcHAKaW5kZXggYTVkYjFiZTI2OTk0NzMyYTdjNjkwZTZlYjQ4ZmE2YTFjOTIyOTFhZi4uMDEy
OTkxOGIxYTkzM2E4OGQ2MzFlMWZmZGVhMmRiNjkxZTlmMDYxNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwCkBA
IC0xNjksNyArMTY5LDcgQEAgYm9vbCBSZW5kZXJTVkdGb3JlaWduT2JqZWN0Ojpub2RlQXRGbG9h
dFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXQKICAgICBpZiAoaGl0VGVz
dEFjdGlvbiAhPSBIaXRUZXN0Rm9yZWdyb3VuZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFs
dWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOworICAgIEZs
b2F0UG9pbnQgbG9jYWxQb2ludCA9IHZhbHVlT3JEZWZhdWx0KGxvY2FsVHJhbnNmb3JtKCkuaW52
ZXJzZSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKIAogICAgIC8vIEVhcmx5IGV4aXQgaWYg
bG9jYWwgcG9pbnQgaXMgbm90IGNvbnRhaW5lZCBpbiBjbGlwcGVkIHZpZXdwb3J0IGFyZWEKICAg
ICBpZiAoU1ZHUmVuZGVyU3VwcG9ydDo6aXNPdmVyZmxvd0hpZGRlbigqdGhpcykgJiYgIW1fdmll
d3BvcnQuY29udGFpbnMobG9jYWxQb2ludCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCmluZGV4IGEyM2I0OTEyMzc2NjhhOWNjMDU3MWIxMTMw
OGJhYzgzODBiOWU5ZGQuLjYxZGM2NzhiOTIxZDBmN2E1N2Y2NTMwNWI4Njk0MDIxMTk5MTVjMzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3Bw
CkBAIC0yMTksNyArMjE5LDcgQEAgYm9vbCBSZW5kZXJTVkdJbWFnZTo6bm9kZUF0RmxvYXRQb2lu
dChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3UKICAgICBQb2ludGVy
RXZlbnRzSGl0UnVsZXMgaGl0UnVsZXMoUG9pbnRlckV2ZW50c0hpdFJ1bGVzOjpTVkdfSU1BR0Vf
SElUVEVTVElORywgcmVxdWVzdCwgc3R5bGUoKS5wb2ludGVyRXZlbnRzKCkpOwogICAgIGJvb2wg
aXNWaXNpYmxlID0gKHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUp
OwogICAgIGlmIChpc1Zpc2libGUgfHwgIWhpdFJ1bGVzLnJlcXVpcmVWaXNpYmxlKSB7Ci0gICAg
ICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZl
cnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQp
OworICAgICAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSB2YWx1ZU9yRGVmYXVsdChsb2NhbFRv
UGFyZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKICAg
ICAgICAgICAgIAogICAgICAgICBpZiAoIVNWR1JlbmRlclN1cHBvcnQ6OnBvaW50SW5DbGlwcGlu
Z0FyZWEoKnRoaXMsIGxvY2FsUG9pbnQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNs
aXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUNsaXBwZXIuY3BwCmluZGV4IDVmNjBhZWY1YjkwMzI1YjAxYTBkOGFjYzkwYjgzZjRjMjhmMTA4
OTkuLjUzNTNlMGJlYjQ5NmI4Nzc5MTdlYmNhMjk4ZDc5YTczYjZmYzU0MDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xp
cHBlci5jcHAKQEAgLTI4NSwxMCArMjg1LDEwIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlw
cGVyOjpoaXRUZXN0Q2xpcENvbnRlbnQoY29uc3QgRmxvYXRSZWN0JiBvYmplY3RCb3VuZGluCiAg
ICAgICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07CiAgICAgICAgIHRyYW5zZm9ybS50cmFu
c2xhdGUob2JqZWN0Qm91bmRpbmdCb3gubG9jYXRpb24oKSk7CiAgICAgICAgIHRyYW5zZm9ybS5z
Y2FsZShvYmplY3RCb3VuZGluZ0JveC5zaXplKCkpOwotICAgICAgICBwb2ludCA9IHRyYW5zZm9y
bS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KHBvaW50KTsK
KyAgICAgICAgcG9pbnQgPSB2YWx1ZU9yRGVmYXVsdCh0cmFuc2Zvcm0uaW52ZXJzZSgpKS5tYXBQ
b2ludChwb2ludCk7CiAgICAgfQogCi0gICAgcG9pbnQgPSBjbGlwUGF0aEVsZW1lbnQoKS5hbmlt
YXRlZExvY2FsVHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgp
KS5tYXBQb2ludChwb2ludCk7CisgICAgcG9pbnQgPSB2YWx1ZU9yRGVmYXVsdChjbGlwUGF0aEVs
ZW1lbnQoKS5hbmltYXRlZExvY2FsVHJhbnNmb3JtKCkuaW52ZXJzZSgpKS5tYXBQb2ludChwb2lu
dCk7CiAKICAgICBmb3IgKE5vZGUqIGNoaWxkTm9kZSA9IGNsaXBQYXRoRWxlbWVudCgpLmZpcnN0
Q2hpbGQoKTsgY2hpbGROb2RlOyBjaGlsZE5vZGUgPSBjaGlsZE5vZGUtPm5leHRTaWJsaW5nKCkp
IHsKICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGNoaWxkTm9kZS0+cmVuZGVyZXIo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9v
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCmlu
ZGV4IDU1OGIxYjBiMTFiMzMzOTgyYjNjZWExNGEzNmU0OTQzZGI0YTU1NGEuLjExNGFlMTUzZWQw
YmRjZTI0ZjQ3ZmQ5Y2NkZjU3OGRhNWVjNTQ0NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcApAQCAtNDE4LDcgKzQxOCw3IEBAIExheW91dFJl
Y3QgUmVuZGVyU1ZHUm9vdDo6Y2xpcHBlZE92ZXJmbG93UmVjdChjb25zdCBSZW5kZXJMYXllck1v
ZGVsT2JqZWN0KiByZXBhCiAgICAgaWYgKHN0eWxlKCkudmlzaWJpbGl0eSgpICE9IFZpc2liaWxp
dHk6OlZpc2libGUgJiYgIWVuY2xvc2luZ0xheWVyKCktPmhhc1Zpc2libGVDb250ZW50KCkpCiAg
ICAgICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CiAKLSAgICBhdXRvIHJlcGFpbnRSZWN0ID0gTGF5
b3V0UmVjdChtX3ZpZXdCb3hUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5z
Zm9ybSgpKS5tYXBSZWN0KGJvcmRlckJveFJlY3QoKSkpOworICAgIGF1dG8gcmVwYWludFJlY3Qg
PSBMYXlvdXRSZWN0KHZhbHVlT3JEZWZhdWx0KG1fdmlld0JveFRyYW5zZm9ybS5pbnZlcnNlKCkp
Lm1hcFJlY3QoYm9yZGVyQm94UmVjdCgpKSk7CiAgICAgcmV0dXJuIGNvbXB1dGVSZWN0KHJlcGFp
bnRSZWN0LCByZXBhaW50Q29udGFpbmVyLCBjb250ZXh0KTsKIH0KIApAQCAtNjI4LDcgKzYyOCw3
IEBAIHZvaWQgUmVuZGVyU1ZHUm9vdDo6YXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHRyYW5zZm9ybSwgY29uc3QgUmVuZGVyCiAKIHZvaWQgUmVuZGVyU1ZHUm9vdDo6YWJzb2x1
dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11
bGF0ZWRPZmZzZXQpIGNvbnN0CiB7Ci0gICAgYXV0byBsb2NhbFJlY3QgPSBMYXlvdXRSZWN0KG1f
c3VwcGxlbWVudGFsTG9jYWxUb1BhcmVudFRyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZm
aW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QoYm9yZGVyQm94UmVjdCgpKSk7CisgICAgYXV0byBsb2Nh
bFJlY3QgPSBMYXlvdXRSZWN0KHZhbHVlT3JEZWZhdWx0KG1fc3VwcGxlbWVudGFsTG9jYWxUb1Bh
cmVudFRyYW5zZm9ybS5pbnZlcnNlKCkpLm1hcFJlY3QoYm9yZGVyQm94UmVjdCgpKSk7CiAgICAg
cmVjdHMuYXBwZW5kKHNuYXBwZWRJbnRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0LCBsb2NhbFJlY3Qu
c2l6ZSgpKSk7CiB9CiAKQEAgLTYzOCw3ICs2MzgsNyBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6OmFi
c29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29u
cwogICAgIGlmIChmcmFnbWVudGVkRmxvdyAmJiBmcmFnbWVudGVkRmxvdy0+YWJzb2x1dGVRdWFk
c0ZvckJveChxdWFkcywgd2FzRml4ZWQsIHRoaXMpKQogICAgICAgICByZXR1cm47CiAKLSAgICBh
dXRvIGxvY2FsUmVjdCA9IEZsb2F0UmVjdChtX3N1cHBsZW1lbnRhbExvY2FsVG9QYXJlbnRUcmFu
c2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KGJvcmRl
ckJveFJlY3QoKSkpOworICAgIGF1dG8gbG9jYWxSZWN0ID0gRmxvYXRSZWN0KHZhbHVlT3JEZWZh
dWx0KG1fc3VwcGxlbWVudGFsTG9jYWxUb1BhcmVudFRyYW5zZm9ybS5pbnZlcnNlKCkpLm1hcFJl
Y3QoYm9yZGVyQm94UmVjdCgpKSk7CiAgICAgcXVhZHMuYXBwZW5kKGxvY2FsVG9BYnNvbHV0ZVF1
YWQobG9jYWxSZWN0LCBVc2VUcmFuc2Zvcm1zLCB3YXNGaXhlZCkpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAppbmRleCA2M2FjYWVjZjk1
Njc0M2NlZWI2MTIwMDVkNmQ3OTcyNmE4Mjk5M2Y3Li4xZGIwZWE3NTBkNTU0Y2QzZWVjMTE0Y2Mz
NjI2MWVhOGFlNGI1Yzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVGV4dC5jcHAKQEAgLTQwOSw3ICs0MDksNyBAQCBib29sIFJlbmRlclNWR1RleHQ6Om5v
ZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1
bAogICAgIGlmIChpc1Zpc2libGUgfHwgIWhpdFJ1bGVzLnJlcXVpcmVWaXNpYmxlKSB7CiAgICAg
ICAgIGlmICgoaGl0UnVsZXMuY2FuSGl0U3Ryb2tlICYmIChzdHlsZSgpLnN2Z1N0eWxlKCkuaGFz
U3Ryb2tlKCkgfHwgIWhpdFJ1bGVzLnJlcXVpcmVTdHJva2UpKQogICAgICAgICAgICAgfHwgKGhp
dFJ1bGVzLmNhbkhpdEZpbGwgJiYgKHN0eWxlKCkuc3ZnU3R5bGUoKS5oYXNGaWxsKCkgfHwgIWhp
dFJ1bGVzLnJlcXVpcmVGaWxsKSkpIHsKLSAgICAgICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQb2lu
dCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJh
bnNmb3JtKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOworICAgICAgICAgICAgRmxvYXRQb2lu
dCBsb2NhbFBvaW50ID0gdmFsdWVPckRlZmF1bHQobG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLmlu
dmVyc2UoKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CiAKICAgICAgICAgICAgIGlmICghU1ZH
UmVuZGVyU3VwcG9ydDo6cG9pbnRJbkNsaXBwaW5nQXJlYSgqdGhpcywgbG9jYWxQb2ludCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCmluZGV4IGY5ZDQ3ZTE0MzhlN2Q3
MDAyNmEwMzlmNGIxMmJmNjgyZTk5OWM0NzUuLjc0Y2VjYzQxZjg1OTM2YTBhM2EzNzhkMTNhM2Rk
MDRhODM2ZDFlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
UmVuZGVyU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdS
ZW5kZXJTdXBwb3J0LmNwcApAQCAtNDIxLDcgKzQyMSw3IEBAIHZvaWQgU1ZHUmVuZGVyU3VwcG9y
dDo6Y2xpcENvbnRleHRUb0NTU0NsaXBwaW5nQXJlYShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvCiAgICAgICAgIHJlZmVyZW5jZUJveCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0ubWFwUmVj
dChyZWZlcmVuY2VCb3gpOwogCiAgICAgICAgIGF1dG8gcGF0aCA9IGNsaXBQYXRoLnBhdGhGb3JS
ZWZlcmVuY2VSZWN0KHJlZmVyZW5jZUJveCk7Ci0gICAgICAgIHBhdGgudHJhbnNmb3JtKGxvY2Fs
VG9QYXJlbnRUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKSk7
CisgICAgICAgIHBhdGgudHJhbnNmb3JtKHZhbHVlT3JEZWZhdWx0KGxvY2FsVG9QYXJlbnRUcmFu
c2Zvcm0uaW52ZXJzZSgpKSk7CiAKICAgICAgICAgY29udGV4dC5jbGlwUGF0aChwYXRoLCBjbGlw
UGF0aC53aW5kUnVsZSgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA3N2UxMjZlNjY0YTAyMjEwYTRm
OWRlN2VjMTYyOTA4NWJmMjAyMWQzLi5hMjkxY2VkMjM1ZTZhZTQ2MTQ2NGVmMTQ3OWM1NThmZjAw
YmFjYTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRl
cmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyaW5nQ29udGV4dC5jcHAKQEAgLTMwNyw3ICszMDcsNyBAQCB2b2lkIFNWR1JlbmRlcmluZ0Nv
bnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
QWZmaQogCiAgICAgLy8gVGhlIG1hc2sgaW1hZ2UgaGFzIGJlZW4gY3JlYXRlZCBpbiB0aGUgYWJz
b2x1dGUgY29vcmRpbmF0ZSBzcGFjZSwgYXMgdGhlIGltYWdlIHNob3VsZCBub3QgYmUgc2NhbGVk
LgogICAgIC8vIFNvIHRoZSBhY3R1YWwgbWFza2luZyBwcm9jZXNzIGhhcyB0byBiZSBkb25lIGlu
IHRoZSBhYnNvbHV0ZSBjb29yZGluYXRlIHNwYWNlIGFzIHdlbGwuCi0gICAgY29udGV4dC5jb25j
YXRDVE0oYWJzb2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9y
bSgpKSk7CisgICAgY29udGV4dC5jb25jYXRDVE0odmFsdWVPckRlZmF1bHQoYWJzb2x1dGVUcmFu
c2Zvcm0uaW52ZXJzZSgpKSk7CiAgICAgY29udGV4dC5jbGlwVG9JbWFnZUJ1ZmZlcigqaW1hZ2VC
dWZmZXIsIGFic29sdXRlVGFyZ2V0UmVjdCk7CiAgICAgY29udGV4dC5jb25jYXRDVE0oYWJzb2x1
dGVUcmFuc2Zvcm0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZU1vdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25F
bGVtZW50LmNwcAppbmRleCA5MGI3NjkzZThhMzMzZjE5OWVlM2JkMzAxNWFkOTM2ZTBhMDQzZDcw
Li5mNTI5OTk2NjZhODFiZmQ1NDBhZGZlM2M0N2YwOTllOGIzZGZhOWMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKQEAgLTE2MSwxNSArMTYx
LDE1IEBAIHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OnN0b3BBbmltYXRpb24oU1ZHRWxl
bWVudCogdGFyZ2V0RWxlbWVudCkKIAogYm9vbCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6Y2Fs
Y3VsYXRlVG9BdEVuZE9mRHVyYXRpb25WYWx1ZShjb25zdCBTdHJpbmcmIHRvQXRFbmRPZkR1cmF0
aW9uU3RyaW5nKQogewotICAgIG1fdG9Qb2ludEF0RW5kT2ZEdXJhdGlvbiA9IHBhcnNlUG9pbnQo
dG9BdEVuZE9mRHVyYXRpb25TdHJpbmcpLnZhbHVlX29yKEZsb2F0UG9pbnQgeyB9KTsKKyAgICBt
X3RvUG9pbnRBdEVuZE9mRHVyYXRpb24gPSB2YWx1ZU9yRGVmYXVsdChwYXJzZVBvaW50KHRvQXRF
bmRPZkR1cmF0aW9uU3RyaW5nKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgU1ZHQW5p
bWF0ZU1vdGlvbkVsZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhjb25zdCBTdHJpbmcm
IGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCiB7CiAgICAgbV90b1BvaW50QXRF
bmRPZkR1cmF0aW9uID0gc3RkOjpudWxsb3B0OwotICAgIG1fZnJvbVBvaW50ID0gcGFyc2VQb2lu
dChmcm9tU3RyaW5nKS52YWx1ZV9vcihGbG9hdFBvaW50IHsgfSk7Ci0gICAgbV90b1BvaW50ID0g
cGFyc2VQb2ludCh0b1N0cmluZykudmFsdWVfb3IoRmxvYXRQb2ludCB7IH0pOworICAgIG1fZnJv
bVBvaW50ID0gdmFsdWVPckRlZmF1bHQocGFyc2VQb2ludChmcm9tU3RyaW5nKSk7CisgICAgbV90
b1BvaW50ID0gdmFsdWVPckRlZmF1bHQocGFyc2VQb2ludCh0b1N0cmluZykpOwogICAgIHJldHVy
biB0cnVlOwogfQogICAgIApAQCAtMTc4LDggKzE3OCw4IEBAIGJvb2wgU1ZHQW5pbWF0ZU1vdGlv
bkVsZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhjb25zdCBTdHJpbmcmIGZyb21TdHJp
bmcsCiAgICAgbV90b1BvaW50QXRFbmRPZkR1cmF0aW9uID0gc3RkOjpudWxsb3B0OwogICAgIGlm
IChhbmltYXRpb25Nb2RlKCkgPT0gQW5pbWF0aW9uTW9kZTo6QnkgJiYgIWlzQWRkaXRpdmUoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1fZnJvbVBvaW50ID0gcGFyc2VQb2ludChmcm9t
U3RyaW5nKS52YWx1ZV9vcihGbG9hdFBvaW50IHsgfSk7Ci0gICAgYXV0byBieVBvaW50ID0gcGFy
c2VQb2ludChieVN0cmluZykudmFsdWVfb3IoRmxvYXRQb2ludCB7IH0pOworICAgIG1fZnJvbVBv
aW50ID0gdmFsdWVPckRlZmF1bHQocGFyc2VQb2ludChmcm9tU3RyaW5nKSk7CisgICAgYXV0byBi
eVBvaW50ID0gdmFsdWVPckRlZmF1bHQocGFyc2VQb2ludChieVN0cmluZykpOwogICAgIG1fdG9Q
b2ludCA9IEZsb2F0UG9pbnQobV9mcm9tUG9pbnQueCgpICsgYnlQb2ludC54KCksIG1fZnJvbVBv
aW50LnkoKSArIGJ5UG9pbnQueSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcAppbmRleCA1NWUzMTgyOWRlYTRi
N2FjZDEwMTU2NThiMzllNGNlM2RhYmJmNDQyLi5jNjcxYzM3MGYzNGNmNTA3NmZlZTI0YzE5MjVk
OGQ5NjIxNDcyMDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250
Q29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZl
cnNpb24uY3BwCkBAIC0xMjkyLDcgKzEyOTIsNyBAQCB2b2lkIFNWR1RvT1RGRm9udENvbnZlcnRl
cjo6cHJvY2Vzc0dseXBoRWxlbWVudChjb25zdCBTVkdFbGVtZW50JiBnbHlwaE9yTWlzc2luZwog
ICAgIGlmIChnbHlwaEJvdW5kaW5nQm94KQogICAgICAgICBtX21pblJpZ2h0U2lkZUJlYXJpbmcg
PSBzdGQ6Om1pbihtX21pblJpZ2h0U2lkZUJlYXJpbmcsIGhvcml6b250YWxBZHZhbmNlIC0gZ2x5
cGhCb3VuZGluZ0JveC52YWx1ZSgpLm1heFgoKSk7CiAKLSAgICBtX2dseXBocy5hcHBlbmQoR2x5
cGhEYXRhKFdURk1vdmUocGF0aCksIGdseXBoRWxlbWVudCwgaG9yaXpvbnRhbEFkdmFuY2UsIHZl
cnRpY2FsQWR2YW5jZSwgZ2x5cGhCb3VuZGluZ0JveC52YWx1ZV9vcihGbG9hdFJlY3QoKSksIGNv
ZGVwb2ludHMpKTsKKyAgICBtX2dseXBocy5hcHBlbmQoR2x5cGhEYXRhKFdURk1vdmUocGF0aCks
IGdseXBoRWxlbWVudCwgaG9yaXpvbnRhbEFkdmFuY2UsIHZlcnRpY2FsQWR2YW5jZSwgdmFsdWVP
ckRlZmF1bHQoZ2x5cGhCb3VuZGluZ0JveCksIGNvZGVwb2ludHMpKTsKIH0KIAogdm9pZCBTVkdU
b09URkZvbnRDb252ZXJ0ZXI6OmFwcGVuZExpZ2F0dXJlR2x5cGhzKCkKQEAgLTE0MTYsNyArMTQx
Niw3IEBAIFNWR1RvT1RGRm9udENvbnZlcnRlcjo6U1ZHVG9PVEZGb250Q29udmVydGVyKGNvbnN0
IFNWR0ZvbnRFbGVtZW50JiBmb250RWxlbWVudCkKICAgICAgICAgICAgIHByb2Nlc3NHbHlwaEVs
ZW1lbnQoZ2x5cGhFbGVtZW50LCAmZ2x5cGhFbGVtZW50LCBkZWZhdWx0SG9yaXpvbnRhbEFkdmFu
Y2UsIGRlZmF1bHRWZXJ0aWNhbEFkdmFuY2UsIHVuaWNvZGVBdHRyaWJ1dGUsIGJvdW5kaW5nQm94
KTsKICAgICB9CiAKLSAgICBtX2JvdW5kaW5nQm94ID0gYm91bmRpbmdCb3gudmFsdWVfb3IoRmxv
YXRSZWN0KCkpOworICAgIG1fYm91bmRpbmdCb3ggPSB2YWx1ZU9yRGVmYXVsdChib3VuZGluZ0Jv
eCk7CiAKICAgICBhcHBlbmRMaWdhdHVyZUdseXBocygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuaAppbmRleCAxMTA0ZDkzYTcxM2I5
ZDUwYjMxYWM3ZDQyZmI5NTY1NjI0ZjVhOWVjLi5mYzE3NzkwZmM0ZTZiNTU2NDc5NDI0MzVhZDFl
OGEyYWJmMzBmNTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdQcm9wZXJ0eVRyYWl0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R1Byb3BlcnR5VHJhaXRzLmgKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdHJ1Y3QgU1ZHUHJvcGVydHlU
cmFpdHM8c3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4+IHsKICAgICBzdGF0aWMgc3RkOjpwYWlyPGZs
b2F0LCBmbG9hdD4gaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4geyB9OyB9CiAgICAgc3RhdGljIHN0
ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IGZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAg
ICAgewotICAgICAgICByZXR1cm4gcGFyc2VOdW1iZXJPcHRpb25hbE51bWJlcihzdHJpbmcpLnZh
bHVlX29yKHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IHsgfSk7CisgICAgICAgIHJldHVybiB2YWx1
ZU9yRGVmYXVsdChwYXJzZU51bWJlck9wdGlvbmFsTnVtYmVyKHN0cmluZykpOwogICAgIH0KICAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0Pj4gcGFyc2UoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IFN0cmluZyYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IHJldHVybiBpbml0aWFsVmFsdWUoKTsgfQogICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoc3Rk
OjpwYWlyPGZsb2F0LCBmbG9hdD4pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBlbXB0
eVN0cmluZygpOyB9CkBAIC0xMTUsNyArMTE1LDcgQEAgc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRz
PEZsb2F0UG9pbnQ+IHsKICAgICBzdGF0aWMgRmxvYXRQb2ludCBpbml0aWFsVmFsdWUoKSB7IHJl
dHVybiBGbG9hdFBvaW50KCk7IH0KICAgICBzdGF0aWMgRmxvYXRQb2ludCBmcm9tU3RyaW5nKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHBhcnNlUG9pbnQoc3Ry
aW5nKS52YWx1ZV9vcihGbG9hdFBvaW50IHsgfSk7CisgICAgICAgIHJldHVybiB2YWx1ZU9yRGVm
YXVsdChwYXJzZVBvaW50KHN0cmluZykpOwogICAgIH0KICAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxGbG9hdFBvaW50PiBwYXJzZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgU3RyaW5nJiBz
dHJpbmcpCiAgICAgewpAQCAtMTMyLDcgKzEzMiw3IEBAIHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0
czxGbG9hdFJlY3Q+IHsKICAgICBzdGF0aWMgRmxvYXRSZWN0IGluaXRpYWxWYWx1ZSgpIHsgcmV0
dXJuIEZsb2F0UmVjdCgpOyB9CiAgICAgc3RhdGljIEZsb2F0UmVjdCBmcm9tU3RyaW5nKGNvbnN0
IFN0cmluZyYgc3RyaW5nKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHBhcnNlUmVjdChzdHJpbmcp
LnZhbHVlX29yKEZsb2F0UmVjdCB7IH0pOworICAgICAgICByZXR1cm4gdmFsdWVPckRlZmF1bHQo
cGFyc2VSZWN0KHN0cmluZykpOwogICAgIH0KICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxGbG9h
dFJlY3Q+IHBhcnNlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBTdHJpbmcmIHN0cmluZykK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggOTBjNzEwMjNhOGQ4
ZTMyZTQ3M2MxNjM2OTlhOGQ1ODVlYTAxNzk3OC4uODdkZWU1YmE5YzgxM2RiZmRlZDk4MzNhMDVj
NDcwZWEzMGE1MmEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMjc5
NCwxMyArMjc5NCwxMyBAQCBib29sIEludGVybmFsczo6aXNFbGVtZW50QWxpdmUoRG9jdW1lbnQm
IGRvY3VtZW50LCB1aW50NjRfdCBlbGVtZW50SWRlbnRpZmllcikgYwogdWludDY0X3QgSW50ZXJu
YWxzOjpmcmFtZUlkZW50aWZpZXIoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAogewog
ICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQucGFnZSgpKQotICAgICAgICByZXR1cm4gcGFn
ZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuZnJhbWVJRCgpLnZhbHVlX29yKEZyYW1lSWRlbnRpZmll
ciB7IH0pLnRvVUludDY0KCk7CisgICAgICAgIHJldHVybiB2YWx1ZU9yRGVmYXVsdChwYWdlLT5t
YWluRnJhbWUoKS5sb2FkZXIoKS5mcmFtZUlEKCkpLnRvVUludDY0KCk7CiAgICAgcmV0dXJuIDA7
CiB9CiAKIHVpbnQ2NF90IEludGVybmFsczo6cGFnZUlkZW50aWZpZXIoY29uc3QgRG9jdW1lbnQm
IGRvY3VtZW50KSBjb25zdAogewotICAgIHJldHVybiBkb2N1bWVudC5wYWdlSUQoKS52YWx1ZV9v
cihQYWdlSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCk7CisgICAgcmV0dXJuIHZhbHVlT3JEZWZh
dWx0KGRvY3VtZW50LnBhZ2VJRCgpKS50b1VJbnQ2NCgpOwogfQogCiBib29sIEludGVybmFsczo6
aXNBbnlXb3JrbGV0R2xvYmFsU2NvcGVBbGl2ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKaW5k
ZXggOWE4ZmIzNWNhNTM2MTA1YmI2ZDZmYzQ2ZWUxMjI0NTkzM2Y3MGJmOC4uNzVkOThhOTI2NzY4
NTBjZWNiMjRiOTg5MmQwZDM2YTMwYTYyYjIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcApAQCAtNDQs
NyArNDQsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRVc2VGaWxlTWFwcGluZyh1aW50NjRfdCBmaWxl
U2l6ZSkKIAogU1dTY3JpcHRTdG9yYWdlOjpTV1NjcmlwdFN0b3JhZ2UoY29uc3QgU3RyaW5nJiBk
aXJlY3RvcnkpCiAgICAgOiBtX2RpcmVjdG9yeShkaXJlY3RvcnkpCi0gICAgLCBtX3NhbHQoRmls
ZVN5c3RlbTo6cmVhZE9yTWFrZVNhbHQoc2FsdFBhdGgoKSkudmFsdWVfb3IoRmlsZVN5c3RlbTo6
U2FsdCgpKSkKKyAgICAsIG1fc2FsdCh2YWx1ZU9yRGVmYXVsdChGaWxlU3lzdGVtOjpyZWFkT3JN
YWtlU2FsdChzYWx0UGF0aCgpKSkpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDdiNjRlYWMwZTZhM2E5MDExNGZiODE5
ODUzNGI1ZGQ5MmNiOWRhMmYuLjFmYTU0MjY1MDMxOGRjMTIwYWVhOTJhNGRmMDhjYjU1YmJlYjIz
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC00OTcsNyArNDk3LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpjcmVhdGVGZXQKIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6c2NoZWR1bGVSZXNvdXJjZUxvYWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBs
b2FkUGFyYW1ldGVycywgc3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmll
cj4gZXhpc3RpbmdMb2FkZXJUb1Jlc3VtZSkKIHsKLSAgICBDT05ORUNUSU9OX1JFTEVBU0VfTE9H
KExvYWRpbmcsICJzY2hlZHVsZVJlc291cmNlTG9hZDogKHBhcmVudFBJRD0lZCwgcGFnZVByb3h5
SUQ9JSIgUFJJdTY0ICIsIHdlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQg
IiwgcmVzb3VyY2VJRD0lIiBQUkl1NjQgIiwgZXhpc3RpbmdMb2FkZXJUb1Jlc3VtZT0lIiBQUkl1
NjQgIikiLCBsb2FkUGFyYW1ldGVycy5wYXJlbnRQSUQsIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VQ
cm94eUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBs
b2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLmlkZW50
aWZpZXIudG9VSW50NjQoKSwgZXhpc3RpbmdMb2FkZXJUb1Jlc3VtZS52YWx1ZV9vcihOZXR3b3Jr
UmVzb3VyY2VMb2FkSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCkpOworICAgIENPTk5FQ1RJT05f
UkVMRUFTRV9MT0coTG9hZGluZywgInNjaGVkdWxlUmVzb3VyY2VMb2FkOiAocGFyZW50UElEPSVk
LCBwYWdlUHJveHlJRD0lIiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlE
PSUiIFBSSXU2NCAiLCByZXNvdXJjZUlEPSUiIFBSSXU2NCAiLCBleGlzdGluZ0xvYWRlclRvUmVz
dW1lPSUiIFBSSXU2NCAiKSIsIGxvYWRQYXJhbWV0ZXJzLnBhcmVudFBJRCwgbG9hZFBhcmFtZXRl
cnMud2ViUGFnZVByb3h5SUQudG9VSW50NjQoKSwgbG9hZFBhcmFtZXRlcnMud2ViUGFnZUlELnRv
VUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQudG9VSW50NjQoKSwgbG9hZFBhcmFt
ZXRlcnMuaWRlbnRpZmllci50b1VJbnQ2NCgpLCB2YWx1ZU9yRGVmYXVsdChleGlzdGluZ0xvYWRl
clRvUmVzdW1lKS50b1VJbnQ2NCgpKTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAg
ICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggYjAxMWE1OGJhMGRh
NWMwNmY0YjhlY2NkOWU4YTQ4YmEwNmVlMGQ5Yy4uN2Q2MzM0M2YyZjU4Yzc4ZjY5NjVlNzI0ZDIx
MjczMDAyMGY1ZDg2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5jcHAKQEAgLTYwNyw3ICs2MDcsNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjp1
bnJlZ2lzdGVyU1dTZXJ2ZXJDb25uZWN0aW9uKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYgY29ubmVj
dAogU1dTZXJ2ZXImIE5ldHdvcmtTZXNzaW9uOjplbnN1cmVTV1NlcnZlcigpCiB7CiAgICAgaWYg
KCFtX3N3U2VydmVyKSB7Ci0gICAgICAgIGF1dG8gaW5mbyA9IG1fc2VydmljZVdvcmtlckluZm8u
dmFsdWVfb3IoU2VydmljZVdvcmtlckluZm8geyB9KTsKKyAgICAgICAgYXV0byBpbmZvID0gdmFs
dWVPckRlZmF1bHQobV9zZXJ2aWNlV29ya2VySW5mbyk7CiAgICAgICAgIGF1dG8gcGF0aCA9IGlu
Zm8uZGF0YWJhc2VQYXRoOwogICAgICAgICAvLyBUaGVyZSBzaG91bGQgYWxyZWFkeSBiZSBhIHJl
Z2lzdGVyZWQgcGF0aCBmb3IgdGhpcyBQQUw6OlNlc3Npb25JRC4KICAgICAgICAgLy8gSWYgdGhl
cmUncyBub3QsIHRoZW4gd2hlcmUgZGlkIHRoaXMgUEFMOjpTZXNzaW9uSUQgY29tZSBmcm9tPwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVGaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKaW5kZXggYzg3NWM5MzY0ZWUwNTM1MjZkM2Y5ZTdjMzYy
NzVkOTMxOWM1YzEwZS4uNjVmMGU0NTEyY2NhODcxYjQ1OGU3OTIwMmYxYTkzODZiODQwZmRkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVGaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCkBAIC04NCw3ICs4NCw3IEBAIEZpbGVUaW1lcyBm
aWxlVGltZXMoY29uc3QgU3RyaW5nJiBwYXRoKQogI2VsaWYgT1MoV0lORE9XUykKICAgICBhdXRv
IGNyZWF0ZVRpbWUgPSBGaWxlU3lzdGVtOjpmaWxlQ3JlYXRpb25UaW1lKHBhdGgpOwogICAgIGF1
dG8gbW9kaWZ5VGltZSA9IEZpbGVTeXN0ZW06OmZpbGVNb2RpZmljYXRpb25UaW1lKHBhdGgpOwot
ICAgIHJldHVybiB7IGNyZWF0ZVRpbWUudmFsdWVfb3IoV2FsbFRpbWUoKSksIG1vZGlmeVRpbWUu
dmFsdWVfb3IoV2FsbFRpbWUoKSkgfTsKKyAgICByZXR1cm4geyB2YWx1ZU9yRGVmYXVsdChjcmVh
dGVUaW1lKSwgdmFsdWVPckRlZmF1bHQobW9kaWZ5VGltZSkgfTsKICNlbmRpZgogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3Jh
Z2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3
b3JrU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IGUyMTgxMWU3NjI4NTc5NDEyMzhlODY3MTY2YmQ0
Yjg3YTMxODc4M2QuLjkzMDA5ZTI0OWVkMWE0Yzg5N2NhOTE5MGMzZjI0ZDVhM2M0NTQ4NWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3Rv
cmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgTmV0d29ya1N0
b3JhZ2VNYW5hZ2VyOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBTdHIKICAgICAgICAgbV9jdXN0b21Mb2NhbFN0b3JhZ2VQYXRoID0gY3VzdG9t
TG9jYWxTdG9yYWdlUGF0aDsKICAgICAgICAgaWYgKCFtX3BhdGguaXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICBhdXRvIHNhbHRQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KG1fcGF0aCwgInNhbHQiKTsKLSAgICAgICAgICAgIG1fc2FsdCA9IEZpbGVTeXN0ZW06OnJl
YWRPck1ha2VTYWx0KHNhbHRQYXRoKS52YWx1ZV9vcihGaWxlU3lzdGVtOjpTYWx0KCkpOworICAg
ICAgICAgICAgbV9zYWx0ID0gdmFsdWVPckRlZmF1bHQoRmlsZVN5c3RlbTo6cmVhZE9yTWFrZVNh
bHQoc2FsdFBhdGgpKTsKICAgICAgICAgfQogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9TaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXIuY3BwCmluZGV4IGE5ZjU0ODQzZmQ5YjliMzU2Y2RiNjZhYWI0NTgwOGQwOTBjOTNlOWIu
LmUwMzM4MWNlNTAyZTdkMWUzOTE1NzQzOTI3MDFlZjhmZDM3YmIwN2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRlZElu
cHV0RGlzcGF0Y2hlci5jcHAKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIFNpbXVsYXRlZElucHV0
RGlzcGF0Y2hlcjo6dHJhbnNpdGlvbklucHV0U291cmNlVG9TdGF0ZShTaW11bGF0ZWRJbnB1dFNv
dXJjZQogI2lmICFFTkFCTEUoV0VCRFJJVkVSX01PVVNFX0lOVEVSQUNUSU9OUykKICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICNlbHNlCi0gICAgICAgIHJlc29sdmVMb2Nh
dGlvbihhLmxvY2F0aW9uLnZhbHVlX29yKFdlYkNvcmU6OkludFBvaW50KCkpLCBiLmxvY2F0aW9u
LCBiLm9yaWdpbi52YWx1ZV9vcihNb3VzZU1vdmVPcmlnaW46OlZpZXdwb3J0KSwgYi5ub2RlSGFu
ZGxlLCBbdGhpcywgJmEsICZiLCBpbnB1dFNvdXJjZSA9IGlucHV0U291cmNlLnR5cGUsIGV2ZW50
RGlzcGF0Y2hGaW5pc2hlZCA9IFdURk1vdmUoZXZlbnREaXNwYXRjaEZpbmlzaGVkKV0oc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gbG9jYXRpb24sIHN0ZDo6b3B0aW9uYWw8QXV0b21h
dGlvbkNvbW1hbmRFcnJvcj4gZXJyb3IpIG11dGFibGUgeworICAgICAgICByZXNvbHZlTG9jYXRp
b24odmFsdWVPckRlZmF1bHQoYS5sb2NhdGlvbiksIGIubG9jYXRpb24sIGIub3JpZ2luLnZhbHVl
X29yKE1vdXNlTW92ZU9yaWdpbjo6Vmlld3BvcnQpLCBiLm5vZGVIYW5kbGUsIFt0aGlzLCAmYSwg
JmIsIGlucHV0U291cmNlID0gaW5wdXRTb3VyY2UudHlwZSwgZXZlbnREaXNwYXRjaEZpbmlzaGVk
ID0gV1RGTW92ZShldmVudERpc3BhdGNoRmluaXNoZWQpXShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkludFBvaW50PiBsb2NhdGlvbiwgc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9y
PiBlcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAg
ICAgICBldmVudERpc3BhdGNoRmluaXNoZWQoZXJyb3IpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTMxNiw3ICszMTYsNyBAQCB2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJh
bnNpdGlvbklucHV0U291cmNlVG9TdGF0ZShTaW11bGF0ZWRJbnB1dFNvdXJjZQogI2lmICFFTkFC
TEUoV0VCRFJJVkVSX1RPVUNIX0lOVEVSQUNUSU9OUykKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICNlbHNlCi0gICAgICAgIHJlc29sdmVMb2NhdGlvbihhLmxvY2F0aW9u
LnZhbHVlX29yKFdlYkNvcmU6OkludFBvaW50KCkpLCBiLmxvY2F0aW9uLCBiLm9yaWdpbi52YWx1
ZV9vcihNb3VzZU1vdmVPcmlnaW46OlZpZXdwb3J0KSwgYi5ub2RlSGFuZGxlLCBbdGhpcywgJmEs
ICZiLCBldmVudERpc3BhdGNoRmluaXNoZWQgPSBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hGaW5pc2hl
ZCldKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGxvY2F0aW9uLCBzdGQ6Om9wdGlv
bmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgcmVz
b2x2ZUxvY2F0aW9uKHZhbHVlT3JEZWZhdWx0KGEubG9jYXRpb24pLCBiLmxvY2F0aW9uLCBiLm9y
aWdpbi52YWx1ZV9vcihNb3VzZU1vdmVPcmlnaW46OlZpZXdwb3J0KSwgYi5ub2RlSGFuZGxlLCBb
dGhpcywgJmEsICZiLCBldmVudERpc3BhdGNoRmluaXNoZWQgPSBXVEZNb3ZlKGV2ZW50RGlzcGF0
Y2hGaW5pc2hlZCldKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGxvY2F0aW9uLCBz
dGQ6Om9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgICAgIGV2ZW50RGlzcGF0Y2hGaW5p
c2hlZChlcnJvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDIyLDcgKzQyMiw3IEBA
IHZvaWQgU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyOjp0cmFuc2l0aW9uSW5wdXRTb3VyY2VUb1N0
YXRlKFNpbXVsYXRlZElucHV0U291cmNlCiAjaWYgIUVOQUJMRShXRUJEUklWRVJfV0hFRUxfSU5U
RVJBQ1RJT05TKQogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2Vsc2UK
LSAgICAgICAgcmVzb2x2ZUxvY2F0aW9uKGEubG9jYXRpb24udmFsdWVfb3IoV2ViQ29yZTo6SW50
UG9pbnQoKSksIGIubG9jYXRpb24sIGIub3JpZ2luLnZhbHVlX29yKE1vdXNlTW92ZU9yaWdpbjo6
Vmlld3BvcnQpLCBiLm5vZGVIYW5kbGUsIFt0aGlzLCAmYSwgJmIsIGV2ZW50RGlzcGF0Y2hGaW5p
c2hlZCA9IFdURk1vdmUoZXZlbnREaXNwYXRjaEZpbmlzaGVkKV0oc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpJbnRQb2ludD4gbG9jYXRpb24sIHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRF
cnJvcj4gZXJyb3IpIG11dGFibGUgeworICAgICAgICByZXNvbHZlTG9jYXRpb24odmFsdWVPckRl
ZmF1bHQoYS5sb2NhdGlvbiksIGIubG9jYXRpb24sIGIub3JpZ2luLnZhbHVlX29yKE1vdXNlTW92
ZU9yaWdpbjo6Vmlld3BvcnQpLCBiLm5vZGVIYW5kbGUsIFt0aGlzLCAmYSwgJmIsIGV2ZW50RGlz
cGF0Y2hGaW5pc2hlZCA9IFdURk1vdmUoZXZlbnREaXNwYXRjaEZpbmlzaGVkKV0oc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpJbnRQb2ludD4gbG9jYXRpb24sIHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlv
bkNvbW1hbmRFcnJvcj4gZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKGVycm9yKSB7
CiAgICAgICAgICAgICAgICAgZXZlbnREaXNwYXRjaEZpbmlzaGVkKGVycm9yKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCmluZGV4IDNhNDA1YmI3YWQ2YjI3YTU5YzA1
OGVhNmI4NjBiNDJhMTM5NDlmYjEuLjFmMzUwYzRiYjg1ODI4NWZkYzkzYzVjYjM0OGRhYjcxNTE1
OTMyYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3Rl
Ym9hcmRQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCkBAIC0xNzcsNyArMTc3LDcgQEAgdm9pZCBXZWJQYXN0
ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGkKICAgICAgICAgICAgICAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpmaWxlbmFtZV0pCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgeyB9OwogCi0gICAgICAgICAgICAgICAg
cmV0dXJuIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlbmFtZSwgU2FuZGJveEV4
dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHkpLnZhbHVlX29yKFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSB7IH0pOworICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZU9yRGVmYXVsdChTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZmlsZW5hbWUsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJl
YWRPbmx5KSk7CiAgICAgICAgICAgICB9KTsKICNlbmRpZgogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5kZXggMmUwNmFk
ZGY3ZTg3NTY2MzIzNDQ4ZTFmZDNkODk5OTg3MzFhNGRiNC4uZjM4MTIyYTM0YTFjYmE5YzRmNGFi
YzY4MzU0MjU5NjlkNDExNzM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmNwcApAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgUHJvdmlzaW9u
YWxQYWdlUHJveHk6OmxvYWREYXRhKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29uc3Qg
SVBDOjpEYXRhCiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KEFQSTo6
TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWlu
Z0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBzdGQ6Om9w
dGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBzdGQ6Om9wdGlv
bmFsPE5ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyPiBleGlzdGluZ05ldHdvcmtSZXNvdXJj
ZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpCiB7Ci0gICAgUFJPVklTSU9OQUxQQUdFUFJPWFlfUkVM
RUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAibG9hZFJlcXVlc3Q6IGV4aXN0aW5nTmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZT0lIiBQUkl1NjQsIGV4aXN0aW5nTmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZS52YWx1ZV9vcihOZXR3b3JrUmVzb3VyY2VMb2Fk
SWRlbnRpZmllciB7IH0pLnRvVUludDY0KCkpOworICAgIFBST1ZJU0lPTkFMUEFHRVBST1hZX1JF
TEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgImxvYWRSZXF1ZXN0OiBleGlzdGluZ05ldHdvcmtS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU9JSIgUFJJdTY0LCB2YWx1ZU9yRGVmYXVsdChl
eGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUpLnRvVUludDY0KCkp
OwogICAgIEFTU0VSVChzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgIT0gV2ViQ29yZTo6U2hv
dWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObyk7CiAKICAgICAvLyBJZiB0aGlzIGlzIGEgY2xp
ZW50LXNpZGUgcmVkaXJlY3QgY29udGludWluZyBpbiBhIG5ldyBwcm9jZXNzLCB0aGVuIHRoZSBu
ZXcgcHJvY2VzcyB3aWxsIG92ZXJ3cml0ZSB0aGUgZnJvbUl0ZW0ncyBVUkwuIEluIHRoaXMgY2Fz
ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNjZiNDEyNjkxY2Y3
NDQ3MTE0NDgwMTRkNTg5OTM3ZjY5ZjY4OTdlMC4uMzJjNTU0MzI1ODQ3YTdhYmFiNjg2MWVhNzEw
N2M1YWNhMmNmYmJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAg
LTE0OTIsNyArMTQ5Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEF1dG9TaXppbmdTaG91bGRF
eHBhbmRUb1ZpZXdIZWlnaHQoYm9vbCk7CiAKICAgICB2b2lkIHNldFZpZXdwb3J0U2l6ZUZvckNT
U1ZpZXdwb3J0VW5pdHMoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7Ci0gICAgV2ViQ29yZTo6
RmxvYXRTaXplIHZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKSBjb25zdCB7IHJldHVy
biBtX3ZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMudmFsdWVfb3IoV2ViQ29yZTo6Rmxv
YXRTaXplKCkpOyB9CisgICAgV2ViQ29yZTo6RmxvYXRTaXplIHZpZXdwb3J0U2l6ZUZvckNTU1Zp
ZXdwb3J0VW5pdHMoKSBjb25zdCB7IHJldHVybiB2YWx1ZU9yRGVmYXVsdChtX3ZpZXdwb3J0U2l6
ZUZvckNTU1ZpZXdwb3J0VW5pdHMpOyB9CiAKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5KFJlZjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiYmLCBO
ZWdvdGlhdGVkTGVnYWN5VExTKTsKICAgICB2b2lkIG5lZ290aWF0ZWRMZWdhY3lUTFMoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggZWRjNTA5MGVjZjI5
YzAzMmQzYzJkNzg1NThmNjY5YTM2ZjBkM2RiYi4uZjUxNGI5OTE2YWQ0MDgyYTdmMDcxZjY1NzM3
OGZlZjNlZDIyYTgzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmgKQEAgLTE1NCw3ICsxNTQsNyBAQCBwdWJsaWM6CiAgICAgV2ViUHJvY2Vzc1Bvb2wmIHByb2Nl
c3NQb29sKCkgY29uc3Q7CiAKICAgICBib29sIGlzTWF0Y2hpbmdSZWdpc3RyYWJsZURvbWFpbihj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSBjb25zdCB7IHJldHVybiBt
X3JlZ2lzdHJhYmxlRG9tYWluID8gKm1fcmVnaXN0cmFibGVEb21haW4gPT0gZG9tYWluIDogZmFs
c2U7IH0KLSAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbigp
IGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW4udmFsdWVfb3IoV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4geyB9KTsgfQorICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJl
Z2lzdHJhYmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gdmFsdWVPckRlZmF1bHQobV9yZWdpc3Ry
YWJsZURvbWFpbik7IH0KICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluPiYgb3B0aW9uYWxSZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1f
cmVnaXN0cmFibGVEb21haW47IH0KIAogICAgIGVudW0gY2xhc3MgV2lsbFNodXREb3duIDogYm9v
bCB7IE5vLCBZZXMgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggNzFjZjkyMDdlZmQ5Y2EyOTVhYjg5
MGQ2NzZlMmQzOWQ0OTJkNjY1OC4uYmE0MzNiODNlYmZhMWE4Mjk4NjRjZTMwMGVmOGQ2NTQ1ZjJh
N2UxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE4MzcsNyArMTgzNyw3IEBAIFdlYnNpdGVEYXRh
U3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgIEhhc2hT
ZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGFwcEJvdW5kRG9tYWluczsKICNpZiBFTkFC
TEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgaWYgKGlzQXBwQm91bmRJVFBSZWxheGF0aW9uRW5h
YmxlZCkKLSAgICAgICAgYXBwQm91bmREb21haW5zID0gYXBwQm91bmREb21haW5zSWZJbml0aWFs
aXplZCgpLnZhbHVlX29yKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IHsgfSk7
CisgICAgICAgIGFwcEJvdW5kRG9tYWlucyA9IHZhbHVlT3JEZWZhdWx0KGFwcEJvdW5kRG9tYWlu
c0lmSW5pdGlhbGl6ZWQoKSk7CiAjZW5kaWYKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biByZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2U7CiAgICAgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFt
ZXRlcnMgPSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggZDg2MjQzZjVhN2ZhMWFhNTFmYTFiMGUzMmU4NTkx
MjMwMzhlYWVmYy4uNmY2NzdlZWY0ZTY4NTljZTVkNDA4MGUxZWM5NWU3YjdiOTUxNDcwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0
cmF0ZWd5LmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6Omxv
YWRSZXNvdXJjZShGcmFtZSYgZnJhbWUsIENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgUmVzCiAg
ICAgICAgIGlmIChsb2FkZXIpCiAgICAgICAgICAgICBzY2hlZHVsZUxvYWQoKmxvYWRlciwgcmVz
b3VyY2UuZ2V0KCksIHJlZmVycmVyUG9saWN5ID09IFJlZmVycmVyUG9saWN5OjpOb1JlZmVycmVy
V2hlbkRvd25ncmFkZSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HKE5l
dHdvcmssICIlcCAtIFt3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICJd
IFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2U6IFVuYWJsZSB0byBjcmVhdGUgU3VicmVz
b3VyY2VMb2FkZXIiLCB0aGlzLCBmcmFtZS0+cGFnZUlEKCkudmFsdWVfb3IoUGFnZUlkZW50aWZp
ZXIoKSkudG9VSW50NjQoKSwgZnJhbWUtPmZyYW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZp
ZXIoKSkudG9VSW50NjQoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAg
LSBbd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiXSBXZWJMb2FkZXJT
dHJhdGVneTo6bG9hZFJlc291cmNlOiBVbmFibGUgdG8gY3JlYXRlIFN1YnJlc291cmNlTG9hZGVy
IiwgdGhpcywgdmFsdWVPckRlZmF1bHQoZnJhbWUtPnBhZ2VJRCgpKS50b1VJbnQ2NCgpLCB2YWx1
ZU9yRGVmYXVsdChmcmFtZS0+ZnJhbWVJRCgpKS50b1VJbnQ2NCgpKTsKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShsb2FkZXIpKTsKICAgICB9KTsKIH0KQEAgLTE3OCwxMyArMTc4
LDEzIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRl
ciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAKICAgICBXZWJSZXNvdXJjZUxvYWRlcjo6
VHJhY2tpbmdQYXJhbWV0ZXJzIHRyYWNraW5nUGFyYW1ldGVyczsKICAgICBpZiAoYXV0byogd2Vi
RnJhbWVMb2FkZXJDbGllbnQgPSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KGZyYW1lTG9hZGVyQ2xp
ZW50KSkKLSAgICAgICAgdHJhY2tpbmdQYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlEID0gd2ViRnJh
bWVMb2FkZXJDbGllbnQtPndlYlBhZ2VQcm94eUlEKCkudmFsdWVfb3IoV2ViUGFnZVByb3h5SWRl
bnRpZmllciB7IH0pOworICAgICAgICB0cmFja2luZ1BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQg
PSB2YWx1ZU9yRGVmYXVsdCh3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViUGFnZVByb3h5SUQoKSk7
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGVsc2UgaWYgKGlzPFNlcnZpY2VXb3Jr
ZXJGcmFtZUxvYWRlckNsaWVudD4oZnJhbWVMb2FkZXJDbGllbnQpKQogICAgICAgICB0cmFja2lu
Z1BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyRnJhbWVM
b2FkZXJDbGllbnQ+KGZyYW1lTG9hZGVyQ2xpZW50KS53ZWJQYWdlUHJveHlJRCgpOwogI2VuZGlm
Ci0gICAgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCA9IGZyYW1lTG9hZGVyQ2xpZW50LnBhZ2VJ
RCgpLnZhbHVlX29yKFBhZ2VJZGVudGlmaWVyIHsgfSk7Ci0gICAgdHJhY2tpbmdQYXJhbWV0ZXJz
LmZyYW1lSUQgPSBmcmFtZUxvYWRlckNsaWVudC5mcmFtZUlEKCkudmFsdWVfb3IoRnJhbWVJZGVu
dGlmaWVyIHsgfSk7CisgICAgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCA9IHZhbHVlT3JEZWZh
dWx0KGZyYW1lTG9hZGVyQ2xpZW50LnBhZ2VJRCgpKTsKKyAgICB0cmFja2luZ1BhcmFtZXRlcnMu
ZnJhbWVJRCA9IHZhbHVlT3JEZWZhdWx0KGZyYW1lTG9hZGVyQ2xpZW50LmZyYW1lSUQoKSk7CiAg
ICAgdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQgPSBpZGVudGlmaWVyOwogCiAjaWYgRU5B
QkxFKFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCkBAIC00NDgsNyArNDQ4LDcgQEAgdm9p
ZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKFJlc291
cmNlTG9hZGVyJiByZXNvdXJjZUwKICAgICBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtSZXNvdXJjZUxv
YWRJZGVudGlmaWVyPiBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1
bWU7CiAgICAgaWYgKGxvYWRQYXJhbWV0ZXJzLmlzTWFpbkZyYW1lTmF2aWdhdGlvbikKICAgICAg
ICAgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lID0gc3RkOjpl
eGNoYW5nZShtX2V4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSwg
c3RkOjpudWxsb3B0KTsKLSAgICBXRUJMT0FERVJTVFJBVEVHWV9SRUxFQVNFX0xPRygic2NoZWR1
bGVMb2FkOiBSZXNvdXJjZSBpcyBiZWluZyBzY2hlZHVsZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nl
c3MgKHByaW9yaXR5PSVkLCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9S
ZXN1bWU9JSIgUFJJdTY0ICIpIiwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1
ZXN0KCkucHJpb3JpdHkoKSksIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJU
b1Jlc3VtZS52YWx1ZV9vcihOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllciB7IH0pLnRvVUlu
dDY0KCkpOworICAgIFdFQkxPQURFUlNUUkFURUdZX1JFTEVBU0VfTE9HKCJzY2hlZHVsZUxvYWQ6
IFJlc291cmNlIGlzIGJlaW5nIHNjaGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAocHJp
b3JpdHk9JWQsIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZT0l
IiBQUkl1NjQgIikiLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5w
cmlvcml0eSgpKSwgdmFsdWVPckRlZmF1bHQoZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRl
bnRpZmllclRvUmVzdW1lKS50b1VJbnQ2NCgpKTsKICAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2NoZWR1bGVSZXNvdXJj
ZUxvYWQobG9hZFBhcmFtZXRlcnMsIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZp
ZXJUb1Jlc3VtZSksIDApKSB7CiAgICAgICAgIFdFQkxPQURFUlNUUkFURUdZX1JFTEVBU0VfTE9H
X0VSUk9SKCJzY2hlZHVsZUxvYWQ6IFVuYWJsZSB0byBzY2hlZHVsZSByZXNvdXJjZSB3aXRoIHRo
ZSBOZXR3b3JrUHJvY2VzcyAocHJpb3JpdHk9JWQpIiwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJj
ZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSkpOwogICAgICAgICAvLyBXZSBwcm9iYWJseSBm
YWlsZWQgdG8gc2NoZWR1bGUgdGhpcyBsb2FkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIGJlY2F1
c2UgaXQgaGFkIGNyYXNoZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5tbQppbmRleCBmYTZjZTZmNjlmYzAyZjcwMWY4ODUxMzg4NDc1ZGVm
M2YyNDMxNGNkLi5hNDVjNjkyMzg3NzRmNjQ0ZWQ4MTk3ZjFjZjBjMTA5NmEyZTU2NTg0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0K
QEAgLTIwNDgsMTMgKzIwNDgsMTMgQEAgSW50UG9pbnQgUERGUGx1Z2luOjpjb252ZXJ0RnJvbVJv
b3RWaWV3VG9QbHVnaW4oY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogSW50UG9pbnQgUERG
UGx1Z2luOjpjb252ZXJ0RnJvbVBERlZpZXdUb1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JiBwb2lu
dCkgY29uc3QKIHsKICAgICBJbnRQb2ludCBwb2ludEluUGx1Z2luQ29vcmRpbmF0ZXMocG9pbnQu
eCgpLCBzaXplKCkuaGVpZ2h0KCkgLSBwb2ludC55KCkpOwotICAgIHJldHVybiBtX3Jvb3RWaWV3
VG9QbHVnaW5UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5t
YXBQb2ludChwb2ludEluUGx1Z2luQ29vcmRpbmF0ZXMpOworICAgIHJldHVybiB2YWx1ZU9yRGVm
YXVsdChtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0uaW52ZXJzZSgpKS5tYXBQb2ludChwb2lu
dEluUGx1Z2luQ29vcmRpbmF0ZXMpOwogfQogCiBJbnRSZWN0IFBERlBsdWdpbjo6Y29udmVydEZy
b21QREZWaWV3VG9Sb290Vmlldyhjb25zdCBJbnRSZWN0JiByZWN0KSBjb25zdAogewogICAgIElu
dFJlY3QgcmVjdEluUGx1Z2luQ29vcmRpbmF0ZXMocmVjdC54KCksIHJlY3QueSgpLCByZWN0Lndp
ZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwotICAgIHJldHVybiBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFu
c2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KHJlY3RJ
blBsdWdpbkNvb3JkaW5hdGVzKTsKKyAgICByZXR1cm4gdmFsdWVPckRlZmF1bHQobV9yb290Vmll
d1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2UoKSkubWFwUmVjdChyZWN0SW5QbHVnaW5Db29yZGlu
YXRlcyk7CiB9CiAKIEludFBvaW50IFBERlBsdWdpbjo6Y29udmVydEZyb21Sb290Vmlld1RvUERG
Vmlldyhjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CkBAIC0yMDg3LDcgKzIwODcsNyBAQCBJ
bnRSZWN0IFBERlBsdWdpbjo6Ym91bmRzT25TY3JlZW4oKSBjb25zdAogICAgICAgICByZXR1cm4g
eyB9OwogCiAgICAgRmxvYXRSZWN0IGJvdW5kcyA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNp
emUoKSk7Ci0gICAgRmxvYXRSZWN0IHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMgPSBtX3Jvb3RW
aWV3VG9QbHVnaW5UcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgp
KS5tYXBSZWN0KGJvdW5kcyk7CisgICAgRmxvYXRSZWN0IHJlY3RJblJvb3RWaWV3Q29vcmRpbmF0
ZXMgPSB2YWx1ZU9yRGVmYXVsdChtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0uaW52ZXJzZSgp
KS5tYXBSZWN0KGJvdW5kcyk7CiAgICAgYXV0byogcGFnZSA9IG1fZnJhbWUtPmNvcmVGcmFtZSgp
LT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMjExNCw3
ICsyMTE0LDcgQEAgdm9pZCBQREZQbHVnaW46Omdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IEludFNp
emUmIHBsdWdpblNpemUsIGNvbnN0IEludFJlY3QmLCBjb24KICAgICAgICAgcmV0dXJuOwogCiAg
ICAgbV9zaXplID0gcGx1Z2luU2l6ZTsKLSAgICBtX3Jvb3RWaWV3VG9QbHVnaW5UcmFuc2Zvcm0g
PSBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFu
c2Zvcm0oKSk7CisgICAgbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtID0gdmFsdWVPckRlZmF1
bHQocGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybS5pbnZlcnNlKCkpOwogICAgIFttX3BkZkxheWVy
Q29udHJvbGxlciBzZXRGcmFtZVNpemU6cGx1Z2luU2l6ZV07CiAKICAgICBbQ0FUcmFuc2FjdGlv
biBiZWdpbl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CmluZGV4IDc3ODQyNmNlOWM5Y2MwYmJkNmQyNTU3MzNiNzM4YzZmNDExNzRkZTUuLjI2MGEzZmJl
YWZiMjNmODQyYTNhOThjODAzZjFlNzZhODZiOTE2NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zNzY3LDcgKzM3NjcsNyBAQCB2b2lkIFdl
YlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2NyaXB0UGFyYW1l
dGVycyYmIHBhcmFtZXRlcgogCiB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5T
Y3JpcHRXb3JsZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBjb25zdCBzdGQ6OnBhaXI8
Q29udGVudFdvcmxkSWRlbnRpZmllciwgU3RyaW5nPiYgd29ybGREYXRhLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICBXRUJQQUdFX1JFTEVBU0VfTE9HKFByb2Nlc3MsICJydW5KYXZhU2NyaXB0SW5GcmFtZUluU2Ny
aXB0V29ybGQ6IGZyYW1lSUQ9JSIgUFJJdTY0LCBmcmFtZUlELnZhbHVlX29yKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCkpOworICAgIFdFQlBBR0VfUkVMRUFTRV9MT0co
UHJvY2VzcywgInJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZDogZnJhbWVJRD0lIiBQ
Ukl1NjQsIHZhbHVlT3JEZWZhdWx0KGZyYW1lSUQpLnRvVUludDY0KCkpOwogICAgIFJlZlB0ciB3
ZWJGcmFtZSA9IGZyYW1lSUQgPyBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZSgqZnJh
bWVJRCkgOiAmbWFpbldlYkZyYW1lKCk7CiAKICAgICBpZiAoYXV0byogbmV3V29ybGQgPSBtX3Vz
ZXJDb250ZW50Q29udHJvbGxlci0+YWRkQ29udGVudFdvcmxkKHdvcmxkRGF0YSkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIubW0KaW5kZXggZTE4ZDEwYzNmYzRmMThkNzNhMmE3NDBjNTMzMTMxMzQzZmYzM2NhZi4u
NDJiZThjZWE1MjUwZmFmZmViNzhlMDExYTY3YTRlZmMwZGE1NGE3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
bW0KQEAgLTQ4MSw3ICs0ODEsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEVu
dGVyRnVsbHNjcmVlbihQbGF5YmFja1Nlc3Npb25Db250ZXh0SWRlbnRpZmllcgogICAgIGlmICgh
dmlkZW9FbGVtZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICB2aWRlb0VsZW1lbnQtPmRpZEVu
dGVyRnVsbHNjcmVlbk9yUGljdHVyZUluUGljdHVyZShzaXplLnZhbHVlX29yKFdlYkNvcmU6OkZs
b2F0U2l6ZSgpKSk7CisgICAgdmlkZW9FbGVtZW50LT5kaWRFbnRlckZ1bGxzY3JlZW5PclBpY3R1
cmVJblBpY3R1cmUodmFsdWVPckRlZmF1bHQoc2l6ZSkpOwogCiAgICAgaWYgKGludGVyZmFjZS0+
dGFyZ2V0SXNGdWxsc2NyZWVuKCkgfHwgaW50ZXJmYWNlLT5mdWxsc2NyZWVuU3RhbmRieSgpKQog
ICAgICAgICByZXR1cm47Cg==
</data>
<flag name="commit-queue"
          id="474404"
          type_id="3"
          status="+"
          setter="wenson_hsieh"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448533</attachid>
            <date>2022-01-06 13:28:09 -0800</date>
            <delta_ts>2022-01-06 16:20:13 -0800</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-234865-20220106132808.patch</filename>
            <type>text/plain</type>
            <size>97895</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NjkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGFjZmU1ZGE3YmVjN2VhNmY2NTJiNjAz
M2VlMWQyMzg5OWU3NjNmNGEuLjAzZmVlNTVkYmZjYTVlZjI3ODdjZDc0YTlmOTFkY2IzODk2ODFm
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjItMDEtMDYgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQg
cmV0dXJucyB0aGUgdmFsdWUgb2YgYSBzdGQ6Om9wdGlvbmFsPFQ+IG9yIGNvbnN0cnVjdHMgVCBp
ZiBuZWVkZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNDg2NQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEFk
ZCBhIG5ldyBoZWxwZXIgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSB2YWx1ZSBvZiBhIGdpdmVu
IGBzdGQ6Om9wdGlvbmFsPFR5cGU+YCBpZiBpdCBleGlzdHMsIGFuZCBvdGhlcndpc2UKKyAgICAg
ICAgY29uc3RydWN0cyBhbmQgcmV0dXJucyBgVHlwZSB7IH1gLiBDdXJyZW50bHksIHRoZSBhbHRl
cm5hdGl2ZSB0byB0aGlzIGlzIHdyaXRpbmcgb3V0IHRoZSBgVHlwZSB7IH1gIGluIGZ1bGwgd2hl
bgorICAgICAgICBwYXNzaW5nIGluIGFuIGFyZ3VtZW50IHRvIGB2YWx1ZV9vcmA7IHVzaW5nIHRo
aXMgYXZvaWRzIHNvbWUgcmVkdW5kYW5jeSBhbmQgbWFrZXMgdGhlIGV4cHJlc3Npb24gYSBiaXQg
ZWFzaWVyIHRvCisgICAgICAgIHJlYWQuCisKKyAgICAgICAgKiB3dGYvU3RkTGliRXh0cmFzLmg6
CisgICAgICAgIChXVEY6OnZhbHVlT3JEZWZhdWx0KToKKwogMjAyMi0wMS0wNSAgSm9obiBXaWxh
bmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBDaGFuZ2UgdmVyc2lvbiBudW1i
ZXIgZm9yIEhBVkVfUlNBX1BTU19PSUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkNjJhM2I3MGI5ZGFkOTdmZjE2
NWZhZWI2ZTAyZTUzOGJmNDFiZjFmLi41NWFkZTA4YzA3NDMyY2E3OTkyZTkxZTg3ZDI4M2E4ZWUy
MGQ1ZTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI3IEBACisyMDIyLTAxLTA2ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIGhlbHBlciBm
dW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHZhbHVlIG9mIGEgc3RkOjpvcHRpb25hbDxUPiBvciBj
b25zdHJ1Y3RzIFQgaWYgbmVlZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzQ4NjUKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
KworICAgICAgICBVc2UgYHZhbHVlT3JEZWZhdWx0YCB3aGVyZSBhcHByb3ByaWF0ZS4gU2VlIFdU
Ri9DaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIE1vZHVsZXMvYXBwbGVw
YXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb252ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxlUGF5UGF5bWVudEhhbmRs
ZXI6OmRpZEF1dGhvcml6ZVBheW1lbnQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNr
OjphcHBseUNvbnN0cmFpbnRzKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0lj
ZUNhbmRpZGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENJY2VDYW5kaWRhdGU6OmNyZWF0
ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbCk6CisgICAgICAgICog
TW9kdWxlcy93ZWJ4ci9XZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUkJvdW5kZWRSZWZlcmVuY2VTcGFjZTo6dXBkYXRlSWZOZWVkZWQpOgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgICogaHRtbC9CYXNlRGF0ZUFuZFRpbWVJ
bnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
OjpzZXR1cERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMpOgorICAgICAgICAqIGh0bWwvSFRNTEFu
Y2hvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6Omhh
bmRsZUNsaWNrKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2U6OmlzUG9pbnRJblBhdGhJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlOjppc1BvaW50SW5TdHJva2VJbnRlcm5hbCk6CisgICAgICAgICog
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVpbGRlcjo6YnVpbGQpOgorICAg
ICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hWZXJ0
aWNhbEFsaWduZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94VmVydGlj
YWxBbGlnbmVyOjpjb21wdXRlTGluZUJveExvZ2ljYWxIZWlnaHQgY29uc3QpOgorICAgICAgICAq
IGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OnNl
dFVzZWRHZW9tZXRyeUZvckNlbGxzKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVy
L1BvbGljeUNoZWNrZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6
CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURy
YWcpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpsYXN0S25vd25Nb3VzZVBvc2l0
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VN
b3ZlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVJl
bGVhc2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnRhcmdldFBvc2l0
aW9uSW5XaW5kb3dGb3JTZWxlY3Rpb25BdXRvc2Nyb2xsIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRTb29uSW5RdWFkKToK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZmFrZU1vdXNlTW92ZUV2ZW50VGltZXJG
aXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhvdmVyVGltZXJGaXJlZCk6
CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpzZXRMYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdCk6CisgICAgICAgICogcGFnZS9QYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNhbXBsZWRQYWdlVG9wQ29sb3IgY29uc3Qp
OgorICAgICAgICAqIHBhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6dGFyZ2V0UG9zaXRpb25JbldpbmRvd0ZvclNlbGVjdGlvbkF1dG9z
Y3JvbGwgY29uc3QpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVMYXRj
aGluZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUxhdGNo
aW5nQ29udHJvbGxlcjo6bm9kZURpZEhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9TaGFkb3dCbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmNh
bGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW06
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6
OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpuYXR1cmFsU2l6ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c2V0VmlzaWJsZUFuZENvdmVyYWdlUmVjdHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtU3RhdGU6Om1hcHBlZFBvaW50IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybVN0YXRlOjptYXBRdWFkIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybVN0YXRlOjpmbGF0dGVuV2l0aFRyYW5zZm9ybSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OnN5c3RlbVByZXZpZXdJbmZvIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpmaWx0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNhbml0aXplSFRUUEhlYWRlckZpZWxk
c0FjY29yZGluZ1RvVGFpbnRpbmcpOgorICAgICAgICAqIHJlbmRlcmluZy9QYWludEluZm8uaDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhaW50SW5mbzo6YXBwbHlUcmFuc2Zvcm0pOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cmVsYXRpdmVQb3NpdGlvbk9mZnNldCBjb25zdCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
R3JpZDo6Y29tcHV0ZUF1dG9SZXBlYXRUcmFja3NDb3VudCBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1
cGRhdGVMYXllclBvc2l0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFp
bnRMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmxheW91dCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxlZ2FjeVJlbmRlclNWR1Jvb3Q6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdDb250YWluZXI6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdG
b3JlaWduT2JqZWN0Ojpub2RlQXRGbG9hdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0ltYWdlOjpu
b2RlQXRGbG9hdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlQ2xpcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBw
ZXI6OmhpdFRlc3RDbGlwQ29udGVudCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OmNsaXBwZWRPdmVy
Zmxvd1JlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6YWJzb2x1
dGVSZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSb290OjphYnNvbHV0
ZVF1YWRzIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjpub2RlQXRGbG9hdFBvaW50KToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHVGV4dDo6bm9kZUF0RmxvYXRQb2ludCk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRl
clN1cHBvcnQ6OmNsaXBDb250ZXh0VG9DU1NDbGlwcGluZ0FyZWEpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdS
ZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcik6CisgICAgICAgICogc3ZnL1NWR0Fu
aW1hdGVNb3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rp
b25FbGVtZW50OjpjYWxjdWxhdGVUb0F0RW5kT2ZEdXJhdGlvblZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmNhbGN1bGF0ZUZy
b21BbmRCeVZhbHVlcyk6CisgICAgICAgICogc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVG9PVEZGb250Q29udmVydGVyOjpwcm9jZXNzR2x5cGhF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RvT1RGRm9udENvbnZlcnRlcjo6U1ZHVG9P
VEZGb250Q29udmVydGVyKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRy
YWl0cy5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8RmxvYXRQb2ludD46
OmZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8RmxvYXRS
ZWN0Pjo6ZnJvbVN0cmluZyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpmcmFtZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpwYWdlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1dTY3JpcHRTdG9yYWdlOjpTV1NjcmlwdFN0b3JhZ2UpOgorCiAyMDIyLTAxLTA2ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRHJvcCBpbXBsZW1lbnRh
dGlvbiBmb3IgQ09PUCAvIENPRVAgdmlvbGF0aW9uIHJlcG9ydGluZwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cK
aW5kZXggNDUxMjRjM2NmNDk5ZDMzOTU0ODc5N2FiZWIyZDY4ZmIwZjQ2OTkyZC4uNjI5NzQxNTBj
ZmYwNDc1ZTU4MzA1OGJhNDg3ZjQxNzQ0ODAyZDRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMjItMDEtMDYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUg
dmFsdWUgb2YgYSBzdGQ6Om9wdGlvbmFsPFQ+IG9yIGNvbnN0cnVjdHMgVCBpZiBuZWVkZWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDg2NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFVzZSBgdmFsdWVPckRl
ZmF1bHRgIHdoZXJlIGFwcHJvcHJpYXRlLiBTZWUgV1RGL0NoYW5nZUxvZyBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbXB1dGVQ
YXNzRW5jb2RlckltcGwuY3BwOgorICAgICAgICAoUEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5j
b2RlckltcGw6OnNldEJpbmRHcm91cCk6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9J
bXBsL1dlYkdQVVJlbmRlckJ1bmRsZUVuY29kZXJJbXBsLmNwcDoKKyAgICAgICAgKFBBTDo6V2Vi
R1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVySW1wbDo6c2V0QmluZEdyb3VwKToKKyAgICAgICAgKiBw
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVyUGFzc0VuY29kZXJJbXBsLmNwcDoK
KyAgICAgICAgKFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2RlckltcGw6OnNldEJpbmRHcm91
cCk6CisKIDIwMjEtMTItMjEgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFkZCBzdXBwb3J0IGZvciBwcmVtdWx0aXBsaWVkIGFscGhhIGludGVycG9sYXRlZCBncmFk
aWVudHMgYW5kIGRlZmF1bHRlZCBvZmYgb3B0aW9uIHRvIHVzZSB0aGVtIGZvciBDU1MgR3JhZGll
bnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDNjNThlMmVmM2UxYjRkZWEwYzM0ZTkwNGNiYmZkMjRhNDhjNzljZDUu
LmU5ZjIxMDcyYTI5MjQ3MDY4ZTAzOGM0ODg5Njg2ZTJmZWZjZWEzZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDQgQEAKKzIwMjItMDEtMDYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CisKKyAgICAgICAgQWRkIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUg
dmFsdWUgb2YgYSBzdGQ6Om9wdGlvbmFsPFQ+IG9yIGNvbnN0cnVjdHMgVCBpZiBuZWVkZWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDg2NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFVzZSBgdmFsdWVPckRl
ZmF1bHRgIHdoZXJlIGFwcHJvcHJpYXRlLiBTZWUgV1RGL0NoYW5nZUxvZyBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6c2NoZWR1bGVSZXNvdXJjZUxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmVuc3VyZVNX
U2VydmVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxl
U3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpmaWxlVGltZXMpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpOZXR3b3JrU3RvcmFn
ZU1hbmFnZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRlZElucHV0
RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNpbXVsYXRlZElucHV0RGlzcGF0Y2hl
cjo6dHJhbnNpdGlvbklucHV0U291cmNlVG9TdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0
ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92
aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cmVnaXN0cmFibGVEb21haW4gY29uc3QpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2Fk
ZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERG
UGx1Z2luOjpjb252ZXJ0RnJvbVBERlZpZXdUb1Jvb3RWaWV3IGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UERGUGx1Z2luOjpib3VuZHNPblNjcmVlbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlBERlBsdWdpbjo6Z2VvbWV0cnlEaWRDaGFuZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cnVuSmF2YVNjcmlw
dEluRnJhbWVJblNjcmlwdFdvcmxkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OmRpZEVudGVyRnVsbHNjcmVlbik6CisKIDIwMjItMDEtMDYgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBEcm9wIGltcGxlbWVudGF0aW9uIGZvciBDT09Q
IC8gQ09FUCB2aW9sYXRpb24gcmVwb3J0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9T
dGRMaWJFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCmluZGV4IGU5YjM3
NTZmMmIzZmYxYTdlYmM4NzZiMDMzMWZkOGUxN2RhYmFiZmEuLmVjZDM3MWM2MjMyNmM4YmM4Y2U4
YTRhOGJhOGI0YWM5YzA5YmMwODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4
dHJhcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCkBAIC01OTYsNiArNTk2
LDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIE9wdGlvbmFsVHlwZSwgY2xhc3MgQ2FsbGJhY2s+IHR5
cGVuYW1lIE9wdGlvbmFsVHlwZTo6dmFsdWVfdHlwCiAgICAgcmV0dXJuIG9wdGlvbmFsID8gKm9w
dGlvbmFsIDogY2FsbGJhY2soKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgT3B0aW9uYWxUeXBl
PiBhdXRvIHZhbHVlT3JEZWZhdWx0KE9wdGlvbmFsVHlwZSYmIG9wdGlvbmFsVmFsdWUpCit7Cisg
ICAgcmV0dXJuIG9wdGlvbmFsVmFsdWUgPyAqc3RkOjpmb3J3YXJkPE9wdGlvbmFsVHlwZT4ob3B0
aW9uYWxWYWx1ZSkgOiBzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxkZWNsdHlwZSgqb3B0aW9uYWxW
YWx1ZSk+IHsgfTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKICNkZWZpbmUgV1RGTW92ZSh2
YWx1ZSkgc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3ZlUGFyYW1ldGVyPih2YWx1ZSkKQEAgLTYyMiwz
ICs2MjcsNCBAQCB1c2luZyBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y7CiB1c2luZyBXVEY6OnNh
ZmVDYXN0OwogdXNpbmcgV1RGOjp0cnlCaW5hcnlTZWFyY2g7CiB1c2luZyBXVEY6OnZhbHVlT3JD
b21wdXRlOwordXNpbmcgV1RGOjp2YWx1ZU9yRGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFu
ZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0
L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwCmluZGV4IGJhMjg2YzIzNWFmYjE3NWIzMzE5YzEw
MGI5Nzc0M2IyMjhiNTBjZTEuLmE4YjYwZWU0NzkyMjE1YmQyNzY2OGFiZTFmZDc0N2Y0ZTQ5Njc2
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJl
cXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcApA
QCAtNzQyLDcgKzc0Miw3IEBAIHZvaWQgQXBwbGVQYXlQYXltZW50SGFuZGxlcjo6dmFsaWRhdGVN
ZXJjaGFudChVUkwmJiB2YWxpZGF0aW9uVVJMKQogCiBzdGF0aWMgUmVmPFBheW1lbnRBZGRyZXNz
PiBjb252ZXJ0KGNvbnN0IEFwcGxlUGF5UGF5bWVudENvbnRhY3QmIGNvbnRhY3QpCiB7Ci0gICAg
cmV0dXJuIFBheW1lbnRBZGRyZXNzOjpjcmVhdGUoY29udGFjdC5jb3VudHJ5Q29kZSwgY29udGFj
dC5hZGRyZXNzTGluZXMudmFsdWVfb3IoVmVjdG9yPFN0cmluZz4oKSksIGNvbnRhY3QuYWRtaW5p
c3RyYXRpdmVBcmVhLCBjb250YWN0LmxvY2FsaXR5LCBjb250YWN0LnN1YkxvY2FsaXR5LCBjb250
YWN0LnBvc3RhbENvZGUsIFN0cmluZygpLCBTdHJpbmcoKSwgY29udGFjdC5sb2NhbGl6ZWROYW1l
LCBjb250YWN0LnBob25lTnVtYmVyKTsKKyAgICByZXR1cm4gUGF5bWVudEFkZHJlc3M6OmNyZWF0
ZShjb250YWN0LmNvdW50cnlDb2RlLCB2YWx1ZU9yRGVmYXVsdChjb250YWN0LmFkZHJlc3NMaW5l
cyksIGNvbnRhY3QuYWRtaW5pc3RyYXRpdmVBcmVhLCBjb250YWN0LmxvY2FsaXR5LCBjb250YWN0
LnN1YkxvY2FsaXR5LCBjb250YWN0LnBvc3RhbENvZGUsIFN0cmluZygpLCBTdHJpbmcoKSwgY29u
dGFjdC5sb2NhbGl6ZWROYW1lLCBjb250YWN0LnBob25lTnVtYmVyKTsKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVD4KQEAgLTc1Nyw3ICs3NTcsNyBAQCB2b2lkIEFwcGxlUGF5UGF5bWVudEhhbmRs
ZXI6OmRpZEF1dGhvcml6ZVBheW1lbnQoY29uc3QgUGF5bWVudCYgcGF5bWVudCkKICAgICBBU1NF
UlQobV91cGRhdGVTdGF0ZSA9PSBVcGRhdGVTdGF0ZTo6Tm9uZSk7CiAKICAgICBhdXRvIGFwcGxl
UGF5UGF5bWVudCA9IHBheW1lbnQudG9BcHBsZVBheVBheW1lbnQodmVyc2lvbigpKTsKLSAgICBh
dXRvIHNoaXBwaW5nQ29udGFjdCA9IGFwcGxlUGF5UGF5bWVudC5zaGlwcGluZ0NvbnRhY3QudmFs
dWVfb3IoQXBwbGVQYXlQYXltZW50Q29udGFjdCgpKTsKKyAgICBhdXRvIHNoaXBwaW5nQ29udGFj
dCA9IHZhbHVlT3JEZWZhdWx0KGFwcGxlUGF5UGF5bWVudC5zaGlwcGluZ0NvbnRhY3QpOwogICAg
IGF1dG8gZGV0YWlsc0Z1bmN0aW9uID0gW2FwcGxlUGF5UGF5bWVudCA9IFdURk1vdmUoYXBwbGVQ
YXlQYXltZW50KV0oSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCkgewog
ICAgICAgICByZXR1cm4gdG9KU0RpY3Rpb25hcnkobGV4aWNhbEdsb2JhbE9iamVjdCwgYXBwbGVQ
YXlQYXltZW50KTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKaW5kZXggN2JjMjFlNTZhZWNjNjUxYWQ4
ODcwZTE0ZjViN2M1NzViNDFhMThiMi4uYWEwMWIzNTcwMTMxMDlhZmUxNmFhMjRmMDZkZTMwYWYy
NjgwY2MwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCkBAIC0zODYsNyArMzg2LDcgQEAgdm9pZCBNZWRpYVN0
cmVhbVRyYWNrOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVkaWFUcmFj
a0NvbnN0cmFpbnQKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBtX3By
b21pc2UtPnJlc29sdmUoKTsKLSAgICAgICAgbV9jb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzLnZh
bHVlX29yKE1lZGlhVHJhY2tDb25zdHJhaW50cyB7IH0pOworICAgICAgICBtX2NvbnN0cmFpbnRz
ID0gdmFsdWVPckRlZmF1bHQoY29uc3RyYWludHMpOwogICAgIH07CiAgICAgbV9wcml2YXRlLT5h
cHBseUNvbnN0cmFpbnRzKGNyZWF0ZU1lZGlhQ29uc3RyYWludHMoY29uc3RyYWludHMpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHAKaW5kZXggOGQ5NWI4MTI4YTUw
ODZkNzM2ODhmZjkyM2QwY2FiNDJmYWY3MDYyZi4uOWY3MDZkZjZkZjY1ZTdmOTU4MTU3NTE0MDIy
NDhlMDhjN2EyM2ZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENJY2VDYW5kaWRhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlLmNwcApAQCAtNTYsNyArNTYsNyBAQCBFeGNlcHRpb25P
cjxSZWY8UlRDSWNlQ2FuZGlkYXRlPj4gUlRDSWNlQ2FuZGlkYXRlOjpjcmVhdGUoY29uc3QgUlRD
SWNlQ2FuZGlkYXRlSQogICAgIGlmIChkaWN0aW9uYXJ5LnNkcE1pZC5pc051bGwoKSAmJiAhZGlj
dGlvbmFyeS5zZHBNTGluZUluZGV4KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVy
cm9yLCAiQ2FuZGlkYXRlIG11c3Qgbm90IGhhdmUgYm90aCBudWxsIHNkcE1pZCBhbmQgc2RwTUxp
bmVJbmRleCIgfTsKIAotICAgIGF1dG8gZmllbGRzID0gcGFyc2VJY2VDYW5kaWRhdGVTRFAoZGlj
dGlvbmFyeS5jYW5kaWRhdGUpLnZhbHVlX29yKFJUQ0ljZUNhbmRpZGF0ZTo6RmllbGRzIHsgfSk7
CisgICAgYXV0byBmaWVsZHMgPSB2YWx1ZU9yRGVmYXVsdChwYXJzZUljZUNhbmRpZGF0ZVNEUChk
aWN0aW9uYXJ5LmNhbmRpZGF0ZSkpOwogICAgIGZpZWxkcy51c2VybmFtZUZyYWdtZW50ID0gZGlj
dGlvbmFyeS51c2VybmFtZUZyYWdtZW50OwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ0lj
ZUNhbmRpZGF0ZShkaWN0aW9uYXJ5LmNhbmRpZGF0ZSwgZGljdGlvbmFyeS5zZHBNaWQsIGRpY3Rp
b25hcnkuc2RwTUxpbmVJbmRleCwgV1RGTW92ZShmaWVsZHMpKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCmluZGV4
IDdhMmM5YTczNDZhZjEwYjdmZWE3MTU2NTk5MTkxMzExNTM4ODhiNzcuLjY4MzJhY2E5MGVkNmQ5
ZWI4MWFiOWYzNTU5NTkzYmY0NjQzMGZkMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCkBAIC04Myw3ICs4Myw3IEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IFNRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKGNvbnN0IFN0cmlu
ZyYgc3FsU3RhdGVtZW50LCBzdGQ6Om9wCiAgICAgZWxzZSBpZiAobV9yZWFkT25seSkKICAgICAg
ICAgcGVybWlzc2lvbnMgfD0gRGF0YWJhc2VBdXRob3JpemVyOjpSZWFkT25seU1hc2s7CiAKLSAg
ICBhdXRvIHN0YXRlbWVudCA9IG1ha2VVbmlxdWU8U1FMU3RhdGVtZW50PihtX2RhdGFiYXNlLCBz
cWxTdGF0ZW1lbnQsIGFyZ3VtZW50cy52YWx1ZV9vcihWZWN0b3I8U1FMVmFsdWU+IHsgfSksIFdU
Rk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGNhbGxiYWNrRXJyb3IpLCBwZXJtaXNzaW9ucyk7Cisg
ICAgYXV0byBzdGF0ZW1lbnQgPSBtYWtlVW5pcXVlPFNRTFN0YXRlbWVudD4obV9kYXRhYmFzZSwg
c3FsU3RhdGVtZW50LCB2YWx1ZU9yRGVmYXVsdChhcmd1bWVudHMpLCBXVEZNb3ZlKGNhbGxiYWNr
KSwgV1RGTW92ZShjYWxsYmFja0Vycm9yKSwgcGVybWlzc2lvbnMpOwogCiAgICAgaWYgKG1fZGF0
YWJhc2UtPmRlbGV0ZWQoKSkKICAgICAgICAgc3RhdGVtZW50LT5zZXREYXRhYmFzZURlbGV0ZWRF
cnJvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkJv
dW5kZWRSZWZlcmVuY2VTcGFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmNwcAppbmRleCAxNjExZmM5ZTNmNjNjOTA4MWZkNmJh
NGQ5NDQxZDY4ODUzYjE0YzdhLi43ZTRhYzQ5NTYwODc2NWRjZWM4ODJmOTZjNDYyOTBlMmQ0Y2Yy
YmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSQm91bmRl
ZFJlZmVyZW5jZVNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSQm91bmRlZFJlZmVyZW5jZVNwYWNlLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgV2Vi
WFJCb3VuZGVkUmVmZXJlbmNlU3BhY2U6OnVwZGF0ZUlmTmVlZGVkKCkKIAogICAgIGlmIChmcmFt
ZURhdGEuc3RhZ2VQYXJhbWV0ZXJzLmJvdW5kcy5zaXplKCkgPj0gTWluaW11bUJvdW5kc1ZlcnRp
Y2VzKSB7CiAgICAgICAgIC8vIEVhY2ggcG9pbnQgaGFzIHRvIG11bHRpcGxpZWQgYnkgdGhlIGlu
dmVyc2Ugb2Ygb3JpZ2luT2Zmc2V0LgotICAgICAgICBhdXRvIHRyYW5zZm9ybSA9IG9yaWdpbk9m
ZnNldCgpLnJhd1RyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZV9vcihUcmFuc2Zvcm1hdGlvbk1h
dHJpeCgpKTsKKyAgICAgICAgYXV0byB0cmFuc2Zvcm0gPSB2YWx1ZU9yRGVmYXVsdChvcmlnaW5P
ZmZzZXQoKS5yYXdUcmFuc2Zvcm0oKS5pbnZlcnNlKCkpOwogICAgICAgICBmb3IgKGF1dG8mIHBv
aW50IDogZnJhbWVEYXRhLnN0YWdlUGFyYW1ldGVycy5ib3VuZHMpIHsKICAgICAgICAgICAgIGF1
dG8gbWFwcGVkUG9pbnQgPSB0cmFuc2Zvcm0ubWFwUG9pbnQoRmxvYXRQb2ludDNEKHBvaW50Lngo
KSwgMC4wLCBwb2ludC55KCkpKTsKICAgICAgICAgICAgIG1fYm91bmRzR2VvbWV0cnkuYXBwZW5k
KERPTVBvaW50UmVhZE9ubHk6OmNyZWF0ZShxdWFudGl6ZShtYXBwZWRQb2ludC54KCkpLCBxdWFu
dGl6ZShtYXBwZWRQb2ludC55KCkpLCBxdWFudGl6ZShtYXBwZWRQb2ludC56KCkpLCAxLjApKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUNvbXB1dGVQYXNzRW5jb2RlckltcGwuY3BwCmlu
ZGV4IGZhMjY2NzVhYzM2MmMzZmEyYWViZTU2MjE4MTliZjhkYmUyYTk1ODkuLmVkZDU5ZDY1OTc2
ZjA0YTdjMWIzN2ZkMWFiYjA4ZDU0YmU0Zjc2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVySW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9X
ZWJHUFVDb21wdXRlUGFzc0VuY29kZXJJbXBsLmNwcApAQCAtODEsNyArODEsNyBAQCB2b2lkIENv
bXB1dGVQYXNzRW5jb2RlckltcGw6OmVuZFBhc3MoKQogdm9pZCBDb21wdXRlUGFzc0VuY29kZXJJ
bXBsOjpzZXRCaW5kR3JvdXAoSW5kZXgzMiBpbmRleCwgY29uc3QgQmluZEdyb3VwJiBiaW5kR3Jv
dXAsCiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8QnVmZmVyRHluYW1pY09mZnNldD4+JiYgb2Zm
c2V0cykKIHsKLSAgICBhdXRvIGJhY2tpbmdPZmZzZXRzID0gb2Zmc2V0cy52YWx1ZV9vcihWZWN0
b3I8QnVmZmVyRHluYW1pY09mZnNldD4geyB9KTsKKyAgICBhdXRvIGJhY2tpbmdPZmZzZXRzID0g
dmFsdWVPckRlZmF1bHQob2Zmc2V0cyk7CiAgICAgd2dwdUNvbXB1dGVQYXNzRW5jb2RlclNldEJp
bmRHcm91cChtX2JhY2tpbmcsIGluZGV4LCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252
ZXJ0VG9CYWNraW5nKGJpbmRHcm91cCksIHN0YXRpY19jYXN0PHVpbnQzMl90PihiYWNraW5nT2Zm
c2V0cy5zaXplKCkpLCBiYWNraW5nT2Zmc2V0cy5kYXRhKCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlckJ1
bmRsZUVuY29kZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2Vi
R1BVL0ltcGwvV2ViR1BVUmVuZGVyQnVuZGxlRW5jb2RlckltcGwuY3BwCmluZGV4IGVmMThiNTAz
ZWFkMWM3Mzg1OGRkMzEzODg5NDcyMDRmYTllZjk2OTAuLjI4OTI5ZTUxNDU0ZjNmZWFhNjJjYWNk
N2VhZWMwNzFjOTYzYmI2YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3Jh
cGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVyQnVuZGxlRW5jb2RlckltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVy
QnVuZGxlRW5jb2RlckltcGwuY3BwCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgUmVuZGVyQnVuZGxl
RW5jb2RlckltcGw6OmRyYXdJbmRleGVkSW5kaXJlY3QoY29uc3QgQnVmZmVyJiBpbmRpcmVjdEJ1
ZmZlciwKIHZvaWQgUmVuZGVyQnVuZGxlRW5jb2RlckltcGw6OnNldEJpbmRHcm91cChJbmRleDMy
IGluZGV4LCBjb25zdCBCaW5kR3JvdXAmIGJpbmRHcm91cCwKICAgICBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxCdWZmZXJEeW5hbWljT2Zmc2V0Pj4mJiBkeW5hbWljT2Zmc2V0cykKIHsKLSAgICBhdXRv
IGJhY2tpbmdPZmZzZXRzID0gZHluYW1pY09mZnNldHMudmFsdWVfb3IoVmVjdG9yPEJ1ZmZlckR5
bmFtaWNPZmZzZXQ+IHsgfSk7CisgICAgYXV0byBiYWNraW5nT2Zmc2V0cyA9IHZhbHVlT3JEZWZh
dWx0KGR5bmFtaWNPZmZzZXRzKTsKICAgICB3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlclNldEJpbmRH
cm91cChtX2JhY2tpbmcsIGluZGV4LCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0
VG9CYWNraW5nKGJpbmRHcm91cCksIGJhY2tpbmdPZmZzZXRzLnNpemUoKSwgYmFja2luZ09mZnNl
dHMuZGF0YSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFw
aGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJQYXNzRW5jb2RlckltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVSZW5kZXJQYXNzRW5j
b2RlckltcGwuY3BwCmluZGV4IDVhMWY5MjQ2NmViYjgyMmYwNzcxOWRlN2RlYjQzZjhmMDgzZThj
ZjcuLmQyZmU1ZGY1MjZjYzM2MGY3YTNlZDIzM2UzMmYzNGM5M2QxODY2MTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVUmVuZGVy
UGFzc0VuY29kZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNz
L1dlYkdQVS9JbXBsL1dlYkdQVVJlbmRlclBhc3NFbmNvZGVySW1wbC5jcHAKQEAgLTkxLDcgKzkx
LDcgQEAgdm9pZCBSZW5kZXJQYXNzRW5jb2RlckltcGw6OmRyYXdJbmRleGVkSW5kaXJlY3QoY29u
c3QgQnVmZmVyJiBpbmRpcmVjdEJ1ZmZlciwgU2kKIHZvaWQgUmVuZGVyUGFzc0VuY29kZXJJbXBs
OjpzZXRCaW5kR3JvdXAoSW5kZXgzMiBpbmRleCwgY29uc3QgQmluZEdyb3VwJiBiaW5kR3JvdXAs
CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8QnVmZmVyRHluYW1pY09mZnNldD4+JiYgZHluYW1p
Y09mZnNldHMpCiB7Ci0gICAgYXV0byBiYWNraW5nT2Zmc2V0cyA9IGR5bmFtaWNPZmZzZXRzLnZh
bHVlX29yKFZlY3RvcjxCdWZmZXJEeW5hbWljT2Zmc2V0PiB7IH0pOworICAgIGF1dG8gYmFja2lu
Z09mZnNldHMgPSB2YWx1ZU9yRGVmYXVsdChkeW5hbWljT2Zmc2V0cyk7CiAgICAgd2dwdVJlbmRl
clBhc3NFbmNvZGVyU2V0QmluZEdyb3VwKG1fYmFja2luZywgaW5kZXgsIG1fY29udmVydFRvQmFj
a2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoYmluZEdyb3VwKSwgYmFja2luZ09mZnNldHMu
c2l6ZSgpLCBiYWNraW5nT2Zmc2V0cy5kYXRhKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAppbmRleCA0MmRhY2QyZGQ1Y2UzZTVmNjIzMzNhMjE2MmNjMzc2NzQ2ZThmYjg5Li4yZDhiOWI1
YzMyYzdhMDAzMWMyMTM1ZTZmZDMyMmNhNWZiM2ZkMGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKQEAgLTM1Miw4ICszNTIsOCBAQAogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKICNl
bmRpZgogCi0jZGVmaW5lIERPQ1VNRU5UX1JFTEVBU0VfTE9HKGNoYW5uZWwsIGZtdCwgLi4uKSBS
RUxFQVNFX0xPRyhjaGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUi
IFBSSXU2NCAiLCBtYWluPSVkXSBEb2N1bWVudDo6IiBmbXQsIHRoaXMsIHBhZ2VJRCgpLnZhbHVl
X29yKFBhZ2VJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKSwgZnJhbWVJRCgpLnZhbHVlX29yKEZy
YW1lSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCksIHRoaXMgPT0gJnRvcERvY3VtZW50KCksICMj
X19WQV9BUkdTX18pCi0jZGVmaW5lIERPQ1VNRU5UX1JFTEVBU0VfTE9HX0VSUk9SKGNoYW5uZWws
IGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihjaGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBS
SXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBEb2N1bWVudDo6IiBmbXQsIHRo
aXMsIHBhZ2VJRCgpLnZhbHVlX29yKFBhZ2VJZGVudGlmaWVyIHsgfSkudG9VSW50NjQoKSwgZnJh
bWVJRCgpLnZhbHVlX29yKEZyYW1lSWRlbnRpZmllciB7IH0pLnRvVUludDY0KCksIHRoaXMgPT0g
JnRvcERvY3VtZW50KCksICMjX19WQV9BUkdTX18pCisjZGVmaW5lIERPQ1VNRU5UX1JFTEVBU0Vf
TE9HKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhjaGFubmVsLCAiJXAgLSBbcGFnZUlE
PSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBEb2N1bWVudDo6IiBm
bXQsIHRoaXMsIHZhbHVlT3JEZWZhdWx0KHBhZ2VJRCgpKS50b1VJbnQ2NCgpLCB2YWx1ZU9yRGVm
YXVsdChmcmFtZUlEKCkpLnRvVUludDY0KCksIHRoaXMgPT0gJnRvcERvY3VtZW50KCksICMjX19W
QV9BUkdTX18pCisjZGVmaW5lIERPQ1VNRU5UX1JFTEVBU0VfTE9HX0VSUk9SKGNoYW5uZWwsIGZt
dCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihjaGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2
NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBEb2N1bWVudDo6IiBmbXQsIHRoaXMs
IHZhbHVlT3JEZWZhdWx0KHBhZ2VJRCgpKS50b1VJbnQ2NCgpLCB2YWx1ZU9yRGVmYXVsdChmcmFt
ZUlEKCkpLnRvVUludDY0KCksIHRoaXMgPT0gJnRvcERvY3VtZW50KCksICMjX19WQV9BUkdTX18p
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNl
RGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCmluZGV4IDZjMzgxYWE3MDFjOTQwNzI2NjFjZTBlMTUy
ZjI1OTFiNTQ3MTQ5OTEuLjExMTcwNGZhODExYTBhNTRmZTYyZGE2YjQzYjNlM2U3YWU1YzE5ZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5j
cHAKQEAgLTU0Nyw3ICs1NDcsNyBAQCBib29sIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6c2V0
dXBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzKERhdGVUaW1lQ2hvb3NlclBhcgogICAgIHBhcmFt
ZXRlcnMuaXNBbmNob3JFbGVtZW50UlRMID0gY29tcHV0ZWRTdHlsZS0+ZGlyZWN0aW9uKCkgPT0g
VGV4dERpcmVjdGlvbjo6UlRMOwogICAgIHBhcmFtZXRlcnMudXNlRGFya0FwcGVhcmFuY2UgPSBk
b2N1bWVudC51c2VEYXJrQXBwZWFyYW5jZShjb21wdXRlZFN0eWxlKTsKIAotICAgIGF1dG8gZGF0
ZSA9IHBhcnNlVG9EYXRlQ29tcG9uZW50cyhlbGVtZW50LnZhbHVlKCkpLnZhbHVlX29yKERhdGVD
b21wb25lbnRzKCkpOworICAgIGF1dG8gZGF0ZSA9IHZhbHVlT3JEZWZhdWx0KHBhcnNlVG9EYXRl
Q29tcG9uZW50cyhlbGVtZW50LnZhbHVlKCkpKTsKICAgICBwYXJhbWV0ZXJzLmhhc1NlY29uZEZp
ZWxkID0gc2hvdWxkSGF2ZVNlY29uZEZpZWxkKGRhdGUpOwogICAgIHBhcmFtZXRlcnMuaGFzTWls
bGlzZWNvbmRGaWVsZCA9IHNob3VsZEhhdmVNaWxsaXNlY29uZEZpZWxkKGRhdGUpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCmluZGV4IDA0M2MxMjVjYThhOGEx
NTNjYWEwYTE1ZTllNGQ2NTYxYTY2YWI1NTIuLmNlNzg0ZjA4MjkyZTFmMThlMWYyYzlmMzNmYjMw
NzRjODcxNWU3ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3Bw
CkBAIC01MTMsNyArNTEzLDcgQEAgdm9pZCBIVE1MQW5jaG9yRWxlbWVudDo6aGFuZGxlQ2xpY2so
RXZlbnQmIGV2ZW50KQogICAgIGlmIChzeXN0ZW1QcmV2aWV3SW5mby5pc1ByZXZpZXcpIHsKICAg
ICAgICAgc3lzdGVtUHJldmlld0luZm8uZWxlbWVudC5lbGVtZW50SWRlbnRpZmllciA9IGRvY3Vt
ZW50KCkuaWRlbnRpZmllckZvckVsZW1lbnQoKnRoaXMpOwogICAgICAgICBzeXN0ZW1QcmV2aWV3
SW5mby5lbGVtZW50LmRvY3VtZW50SWRlbnRpZmllciA9IGRvY3VtZW50KCkuaWRlbnRpZmllcigp
OwotICAgICAgICBzeXN0ZW1QcmV2aWV3SW5mby5lbGVtZW50LndlYlBhZ2VJZGVudGlmaWVyID0g
ZG9jdW1lbnQoKS5mcmFtZSgpLT5sb2FkZXIoKS5wYWdlSUQoKS52YWx1ZV9vcihQYWdlSWRlbnRp
ZmllciB7IH0pOworICAgICAgICBzeXN0ZW1QcmV2aWV3SW5mby5lbGVtZW50LndlYlBhZ2VJZGVu
dGlmaWVyID0gdmFsdWVPckRlZmF1bHQoZG9jdW1lbnQoKS5mcmFtZSgpLT5sb2FkZXIoKS5wYWdl
SUQoKSk7CiAgICAgICAgIGlmIChhdXRvKiBjaGlsZCA9IGZpcnN0RWxlbWVudENoaWxkKCkpCiAg
ICAgICAgICAgICBzeXN0ZW1QcmV2aWV3SW5mby5wcmV2aWV3UmVjdCA9IGNoaWxkLT5ib3VuZHNJ
blJvb3RWaWV3U3BhY2UoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCmluZGV4IDZkZWZl
YjgxMmMzNzIyYzM4ZWEyZmM4ZDA3OTFmYWUyOWIxNjBkNmUuLjU3N2Q1NWU3ZjA0MmE3ODQ4MjIw
ZTM4YWMzMmQzMDY5ODM2YTM4OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCkBAIC0xMTU4LDcg
KzExNTgsNyBAQCBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmlzUG9pbnRJblBh
dGhJbnRlcm5hbChjb25zdCBQYXRoJiBwYXRoLCBkb3VibAogICAgIGlmICghc3RhdGUuaGFzSW52
ZXJ0aWJsZVRyYW5zZm9ybSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byB0cmFu
c2Zvcm1lZFBvaW50ID0gc3RhdGUudHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVU
cmFuc2Zvcm0oKSkubWFwUG9pbnQoRmxvYXRQb2ludCh4LCB5KSk7CisgICAgYXV0byB0cmFuc2Zv
cm1lZFBvaW50ID0gdmFsdWVPckRlZmF1bHQoc3RhdGUudHJhbnNmb3JtLmludmVyc2UoKSkubWFw
UG9pbnQoRmxvYXRQb2ludCh4LCB5KSk7CiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHRyYW5zZm9y
bWVkUG9pbnQueCgpKSB8fCAhc3RkOjppc2Zpbml0ZSh0cmFuc2Zvcm1lZFBvaW50LnkoKSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTE3Myw3ICsxMTczLDcgQEAgYm9vbCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlOjppc1BvaW50SW5TdHJva2VJbnRlcm5hbChjb25zdCBQYXRo
JiBwYXRoLCBkb3UKICAgICBpZiAoIXN0YXRlLmhhc0ludmVydGlibGVUcmFuc2Zvcm0pCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gdHJhbnNmb3JtZWRQb2ludCA9IHN0YXRlLnRy
YW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFBvaW50KEZs
b2F0UG9pbnQoeCwgeSkpOworICAgIGF1dG8gdHJhbnNmb3JtZWRQb2ludCA9IHZhbHVlT3JEZWZh
dWx0KHN0YXRlLnRyYW5zZm9ybS5pbnZlcnNlKCkpLm1hcFBvaW50KEZsb2F0UG9pbnQoeCwgeSkp
OwogICAgIGlmICghc3RkOjppc2Zpbml0ZSh0cmFuc2Zvcm1lZFBvaW50LngoKSkgfHwgIXN0ZDo6
aXNmaW5pdGUodHJhbnNmb3JtZWRQb2ludC55KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcAppbmRleCAyOWZh
NjRhZGI3YWQ3ODJkNDg4ZTgwYmZhYTdmNWM2OGMyZmY0ODg4Li4xYzg4ZjEwMTM5Yjk1YThlNjQ1
N2JkZDg0YjA1MWUzNjJlODVkOGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZUJveEJ1aWxkZXIuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgTGluZUJveEJ1aWxkZXI6OkxpbmVC
b3hCdWlsZGVyKGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBpbmxpbmVGb3JtYXR0aW5n
Q28KIExpbmVCb3hCdWlsZGVyOjpMaW5lQm94QW5kSGVpZ2h0IExpbmVCb3hCdWlsZGVyOjpidWls
ZChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmIGxpbmVDb250ZW50LCBzaXplX3QgbGlu
ZUluZGV4KQogewogICAgIGF1dG8mIHJvb3RTdHlsZSA9IGxpbmVJbmRleCA/IHJvb3RCb3goKS5m
aXJzdExpbmVTdHlsZSgpIDogcm9vdEJveCgpLnN0eWxlKCk7Ci0gICAgYXV0byByb290SW5saW5l
Qm94QWxpZ25tZW50T2Zmc2V0ID0gTGF5b3V0Ojpob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0KHJv
b3RTdHlsZS50ZXh0QWxpZ24oKSwgbGluZUNvbnRlbnQsIHJvb3RTdHlsZS5pc0xlZnRUb1JpZ2h0
RGlyZWN0aW9uKCkpLnZhbHVlX29yKElubGluZUxheW91dFVuaXQgeyB9KTsKKyAgICBhdXRvIHJv
b3RJbmxpbmVCb3hBbGlnbm1lbnRPZmZzZXQgPSB2YWx1ZU9yRGVmYXVsdChMYXlvdXQ6Omhvcml6
b250YWxBbGlnbm1lbnRPZmZzZXQocm9vdFN0eWxlLnRleHRBbGlnbigpLCBsaW5lQ29udGVudCwg
cm9vdFN0eWxlLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkpOwogICAgIC8vIEZJWE1FOiBUaGUg
b3ZlcmZsb3dpbmcgaGFuZ2luZyBjb250ZW50IHNob3VsZCBiZSBwYXJ0IG9mIHRoZSBpbmsgb3Zl
cmZsb3cuICAKICAgICBhdXRvIGxpbmVCb3ggPSBMaW5lQm94IHsgcm9vdEJveCgpLCByb290SW5s
aW5lQm94QWxpZ25tZW50T2Zmc2V0LCBsaW5lQ29udGVudC5jb250ZW50TG9naWNhbFdpZHRoIC0g
bGluZUNvbnRlbnQuaGFuZ2luZ0NvbnRlbnRXaWR0aCwgbGluZUluZGV4LCBsaW5lQ29udGVudC5u
b25TcGFubmluZ0lubGluZUxldmVsQm94Q291bnQgfTsKICAgICBhdXRvIGxpbmVCb3hMb2dpY2Fs
SGVpZ2h0ID0gY29uc3RydWN0QW5kQWxpZ25JbmxpbmVMZXZlbEJveGVzKGxpbmVCb3gsIGxpbmVD
b250ZW50LCBsaW5lSW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVM
aW5lQm94VmVydGljYWxBbGlnbmVyLmNwcAppbmRleCBkZWYwYTU4N2RmY2Y2MDI1ZWQ4YTYyYzI5
ZTQ3OTk3MWY2MTQ0YTA3Li42Yzg1NGVkMzQ2YjMyMTdkNzQyNTU0NTk3YTI0ZDNiMmQ3NjRkYWYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVMaW5lQm94VmVydGljYWxBbGlnbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94VmVydGljYWxB
bGlnbmVyLmNwcApAQCAtMTc3LDcgKzE3Nyw3IEBAIElubGluZUxheW91dFVuaXQgTGluZUJveFZl
cnRpY2FsQWxpZ25lcjo6Y29tcHV0ZUxpbmVCb3hMb2dpY2FsSGVpZ2h0KExpbmVCb3gmIGxpCiAg
ICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6VGV4dEJvdHRvbTogewogICAgICAgICAgICAgLy8g
Tm90ZSB0aGF0IHRleHQtYm90dG9tIGFsaWducyB3aXRoIHRoZSBpbmxpbmUgYm94J3MgZm9udCBt
ZXRyaWNzIGJvdHRvbSAoZGVzY2VudCkgYW5kIG5vdCB0aGUgbGF5b3V0IGJvdW5kcyBib3R0b20u
CiAgICAgICAgICAgICBhdXRvIHBhcmVudElubGluZUJveExheW91dEJvdW5kcyA9IHBhcmVudElu
bGluZUJveC5sYXlvdXRCb3VuZHMoKTsKLSAgICAgICAgICAgIGF1dG8gcGFyZW50SW5saW5lQm94
TG9naWNhbEJvdHRvbSA9IHBhcmVudElubGluZUJveExheW91dEJvdW5kcy5oZWlnaHQoKSAtIHBh
cmVudElubGluZUJveExheW91dEJvdW5kcy5kZXNjZW50ICsgcGFyZW50SW5saW5lQm94LmRlc2Nl
bnQoKS52YWx1ZV9vcihJbmxpbmVMYXlvdXRVbml0KCkpOworICAgICAgICAgICAgYXV0byBwYXJl
bnRJbmxpbmVCb3hMb2dpY2FsQm90dG9tID0gcGFyZW50SW5saW5lQm94TGF5b3V0Qm91bmRzLmhl
aWdodCgpIC0gcGFyZW50SW5saW5lQm94TGF5b3V0Qm91bmRzLmRlc2NlbnQgKyB2YWx1ZU9yRGVm
YXVsdChwYXJlbnRJbmxpbmVCb3guZGVzY2VudCgpKTsKICAgICAgICAgICAgIGxvZ2ljYWxUb3Ag
PSBwYXJlbnRJbmxpbmVCb3hMb2dpY2FsQm90dG9tIC0gaW5saW5lTGV2ZWxCb3gubGF5b3V0Qm91
bmRzKCkuaGVpZ2h0KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjA4LDcg
KzIwOCw3IEBAIElubGluZUxheW91dFVuaXQgTGluZUJveFZlcnRpY2FsQWxpZ25lcjo6Y29tcHV0
ZUxpbmVCb3hMb2dpY2FsSGVpZ2h0KExpbmVCb3gmIGxpCiAgICAgLy8gVGhlIGxpbmUgYm94IGhl
aWdodCBjb21wdXRhdGlvbiBpcyBhcyBmb2xsb3dzOgogICAgIC8vIDEuIFN0cmV0Y2ggdGhlIGxp
bmUgYm94IHdpdGggdGhlIG5vbi1saW5lLWJveCByZWxhdGl2ZSBhbGlnbmVkIGlubGluZSBib3gg
YWJzb2x1dGUgdG9wIGFuZCBib3R0b20gdmFsdWVzLgogICAgIC8vIDIuIENoZWNrIGlmIHRoZSBs
aW5lIGJveCByZWxhdGl2ZSBhbGlnbmVkIGlubGluZSBib3hlcyAodG9wLCBib3R0b20gZXRjKSBo
YXZlIGVub3VnaCByb29tIGFuZCBzdHJldGNoIHRoZSBsaW5lIGJveCBmdXJ0aGVyIGlmIG5lZWRl
ZC4KLSAgICBhdXRvIGxpbmVCb3hMb2dpY2FsSGVpZ2h0ID0gbWF4aW11bUxvZ2ljYWxCb3R0b20u
dmFsdWVfb3IoSW5saW5lTGF5b3V0VW5pdCgpKSAtIG1pbmltdW1Mb2dpY2FsVG9wLnZhbHVlX29y
KElubGluZUxheW91dFVuaXQoKSk7CisgICAgYXV0byBsaW5lQm94TG9naWNhbEhlaWdodCA9IHZh
bHVlT3JEZWZhdWx0KG1heGltdW1Mb2dpY2FsQm90dG9tKSAtIHZhbHVlT3JEZWZhdWx0KG1pbmlt
dW1Mb2dpY2FsVG9wKTsKICAgICBmb3IgKGF1dG8qIGxpbmVCb3hSZWxhdGl2ZUlubGluZUxldmVs
Qm94IDogbGluZUJveFJlbGF0aXZlSW5saW5lTGV2ZWxCb3hlcykgewogICAgICAgICBpZiAoIWZv
cm1hdHRpbmdHZW9tZXRyeS5pbmxpbmVMZXZlbEJveEFmZmVjdHNMaW5lQm94KCpsaW5lQm94UmVs
YXRpdmVJbmxpbmVMZXZlbEJveCwgbGluZUJveCkpCiAgICAgICAgICAgICBjb250aW51ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUv
VGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDgyMDIz
ZTc1NTZhYjYwZTU4ZDQ1ZjcyNjllYzVlOWMzY2ZmNjIyNDMuLjRiNzM1ZDBlYjVhYjI1ZDA5MTMw
NjA2M2UwODI5OGVkNGY1NjgxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1h
dHRpbmdDb250ZXh0LmNwcApAQCAtMTIzLDggKzEyMyw4IEBAIHZvaWQgVGFibGVGb3JtYXR0aW5n
Q29udGV4dDo6c2V0VXNlZEdlb21ldHJ5Rm9yQ2VsbHMoTGF5b3V0VW5pdCBhdmFpbGFibGVIb3Jp
em9uCiAKICAgICAgICAgICAgIC8vIEZJWE1FOiBGaW5kIG91dCBpZiBpdCBpcyBvayB0byB1c2Ug
dGhlIHJlZ3VsYXIgcGFkZGluZyBoZXJlIHRvIGFsaWduIHRoZSBjb250ZW50IGJveCBpbnNpZGUg
YSB0YWxsIGNlbGwgb3Igd2UgbmVlZCB0bwogICAgICAgICAgICAgLy8gdXNlIHNvbWUga2luZCBv
ZiBpbnRyaW5zaWMgcGFkZGluZyBzaW1pbGFyIHRvIFJlbmRlclRhYmxlQ2VsbC4KLSAgICAgICAg
ICAgIGF1dG8gcGFkZGluZ1RvcCA9IGNlbGxCb3hHZW9tZXRyeS5wYWRkaW5nQmVmb3JlKCkudmFs
dWVfb3IoTGF5b3V0VW5pdCB7IH0pOwotICAgICAgICAgICAgYXV0byBwYWRkaW5nQm90dG9tID0g
Y2VsbEJveEdlb21ldHJ5LnBhZGRpbmdBZnRlcigpLnZhbHVlX29yKExheW91dFVuaXQgeyB9KTsK
KyAgICAgICAgICAgIGF1dG8gcGFkZGluZ1RvcCA9IHZhbHVlT3JEZWZhdWx0KGNlbGxCb3hHZW9t
ZXRyeS5wYWRkaW5nQmVmb3JlKCkpOworICAgICAgICAgICAgYXV0byBwYWRkaW5nQm90dG9tID0g
dmFsdWVPckRlZmF1bHQoY2VsbEJveEdlb21ldHJ5LnBhZGRpbmdBZnRlcigpKTsKICAgICAgICAg
ICAgIGF1dG8gaW50cmluc2ljUGFkZGluZ1RvcCA9IExheW91dFVuaXQgeyB9OwogICAgICAgICAg
ICAgYXV0byBpbnRyaW5zaWNQYWRkaW5nQm90dG9tID0gTGF5b3V0VW5pdCB7IH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDkxNTVmZDFkNDYwOWFkZmJj
NWE5OGIwZGY2Y2ZmNTM1OTNkYWE2N2MuLjMyYzg4YjVkMzZkYjA3Mzg5YjdmYzYwMzg0YWUyYzY3
MWM4MTgwOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAt
MTI3LDggKzEyNyw4IEBACiAjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCiAjZW5k
aWYKIAotI2RlZmluZSBQQUdFX0lEICgobV9mcmFtZSA/IG1fZnJhbWUtPnBhZ2VJRCgpLnZhbHVl
X29yKFBhZ2VJZGVudGlmaWVyKCkpIDogUGFnZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKLSNk
ZWZpbmUgRlJBTUVfSUQgKChtX2ZyYW1lID8gbV9mcmFtZS0+ZnJhbWVJRCgpLnZhbHVlX29yKEZy
YW1lSWRlbnRpZmllcigpKSA6IEZyYW1lSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQorI2RlZmlu
ZSBQQUdFX0lEICgobV9mcmFtZSA/IHZhbHVlT3JEZWZhdWx0KG1fZnJhbWUtPnBhZ2VJRCgpKSA6
IFBhZ2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCisjZGVmaW5lIEZSQU1FX0lEICgobV9mcmFt
ZSA/IHZhbHVlT3JEZWZhdWx0KG1fZnJhbWUtPmZyYW1lSUQoKSkgOiBGcmFtZUlkZW50aWZpZXIo
KSkudG9VSW50NjQoKSkKICNkZWZpbmUgSVNfTUFJTl9GUkFNRSAobV9mcmFtZSA/IG1fZnJhbWUt
PmlzTWFpbkZyYW1lKCkgOiBmYWxzZSkKICNkZWZpbmUgRE9DVU1FTlRMT0FERVJfUkVMRUFTRV9M
T0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0
ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICIsIG1haW49JWRdIERvY3VtZW50TG9hZGVyOjoiIGZtdCwg
dGhpcywgUEFHRV9JRCwgRlJBTUVfSUQsIElTX01BSU5fRlJBTUUsICMjX19WQV9BUkdTX18pCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGJiNTI5MWE2N2ZmZmU3YTEx
NmY4YzJjZmJmNGZhYjk0Zjg4NDgyNTIuLjVhNzRjMjk5MmFlMWYxOWM0OWEyMDI3NTA3YzA5OTFi
N2NjNGRmZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTUzLDgg
KzE1Myw4IEBACiAjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjZW5kaWYK
IAotI2RlZmluZSBQQUdFX0lEICgocGFnZUlEKCkudmFsdWVfb3IoUGFnZUlkZW50aWZpZXIoKSkp
LnRvVUludDY0KCkpCi0jZGVmaW5lIEZSQU1FX0lEICgoZnJhbWVJRCgpLnZhbHVlX29yKEZyYW1l
SWRlbnRpZmllcigpKSkudG9VSW50NjQoKSkKKyNkZWZpbmUgUEFHRV9JRCAodmFsdWVPckRlZmF1
bHQocGFnZUlEKCkpLnRvVUludDY0KCkpCisjZGVmaW5lIEZSQU1FX0lEICh2YWx1ZU9yRGVmYXVs
dChmcmFtZUlEKCkpLnRvVUludDY0KCkpCiAjZGVmaW5lIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9H
KGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhjaGFubmVsLCAiJXAgLSBbcGFnZUlEPSUi
IFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBGcmFtZUxvYWRlcjo6IiBm
bXQsIHRoaXMsIFBBR0VfSUQsIEZSQU1FX0lELCBtX2ZyYW1lLmlzTWFpbkZyYW1lKCksICMjX19W
QV9BUkdTX18pCiAjZGVmaW5lIEZSQU1FTE9BREVSX1JFTEVBU0VfTE9HX0VSUk9SKGNoYW5uZWws
IGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihjaGFubmVsLCAiJXAgLSBbcGFnZUlEPSUiIFBS
SXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBtYWluPSVkXSBGcmFtZUxvYWRlcjo6IiBmbXQs
IHRoaXMsIFBBR0VfSUQsIEZSQU1FX0lELCBtX2ZyYW1lLmlzTWFpbkZyYW1lKCksICMjX19WQV9B
UkdTX18pCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAppbmRleCBkMDgw
NTc5NWFmMjFkMzlmYzY4NThkNGFjMDE2ODc0NWYwMTFmZWM0Li5jM2ZiYjU2OTk5OWEwNjY3MTg4
ZWFiZTFhNDYwZTZmMDc2Njg0ZjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UG9saWN5Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNr
ZXIuY3BwCkBAIC01NCw4ICs1NCw4IEBACiAjaW5jbHVkZSAiUXVpY2tMb29rLmgiCiAjZW5kaWYK
IAotI2RlZmluZSBQQUdFX0lEIChtX2ZyYW1lLmxvYWRlcigpLnBhZ2VJRCgpLnZhbHVlX29yKFBh
Z2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCi0jZGVmaW5lIEZSQU1FX0lEIChtX2ZyYW1lLmxv
YWRlcigpLmZyYW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkK
KyNkZWZpbmUgUEFHRV9JRCAodmFsdWVPckRlZmF1bHQobV9mcmFtZS5sb2FkZXIoKS5wYWdlSUQo
KSkudG9VSW50NjQoKSkKKyNkZWZpbmUgRlJBTUVfSUQgKHZhbHVlT3JEZWZhdWx0KG1fZnJhbWUu
bG9hZGVyKCkuZnJhbWVJRCgpKS50b1VJbnQ2NCgpKQogI2RlZmluZSBQT0xJQ1lDSEVDS0VSX1JF
TEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiJXAgLSBbcGFnZUlEPSUi
IFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiXSBQb2xpY3lDaGVja2VyOjoiIGZtdCwgdGhp
cywgUEFHRV9JRCwgRlJBTUVfSUQsICMjX19WQV9BUkdTX18pCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDY2NDdjMjcw
ODExODBlYmNlYzJiNWNhMjlmZDYwYjcyM2FiNjQ4MzYuLmRjNDI5ODBlOWIyNWY1OWVkZTYxN2Qx
ODYzZGY1YmE0Njk3NmE2MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVy
LmNwcApAQCAtNjQsOCArNjQsOCBAQAogI2VuZGlmCiAKICN1bmRlZiBSRVNPVVJDRUxPQURFUl9S
RUxFQVNFX0xPRwotI2RlZmluZSBQQUdFX0lEICgoZnJhbWUoKSA/IGZyYW1lKCktPnBhZ2VJRCgp
LnZhbHVlX29yKFBhZ2VJZGVudGlmaWVyKCkpIDogUGFnZUlkZW50aWZpZXIoKSkudG9VSW50NjQo
KSkKLSNkZWZpbmUgRlJBTUVfSUQgKChmcmFtZSgpID8gZnJhbWUoKS0+ZnJhbWVJRCgpLnZhbHVl
X29yKEZyYW1lSWRlbnRpZmllcigpKSA6IEZyYW1lSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQor
I2RlZmluZSBQQUdFX0lEICgoZnJhbWUoKSA/IHZhbHVlT3JEZWZhdWx0KGZyYW1lKCktPnBhZ2VJ
RCgpKSA6IFBhZ2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCisjZGVmaW5lIEZSQU1FX0lEICgo
ZnJhbWUoKSA/IHZhbHVlT3JEZWZhdWx0KGZyYW1lKCktPmZyYW1lSUQoKSkgOiBGcmFtZUlkZW50
aWZpZXIoKSkudG9VSW50NjQoKSkKICNkZWZpbmUgUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0co
Zm10LCAuLi4pIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIs
IGZyYW1lSUQ9JSIgUFJJdTY0ICIsIGZyYW1lTG9hZGVyPSVwLCByZXNvdXJjZUlEPSUiIFBSSXU2
NCAiXSBSZXNvdXJjZUxvYWRlcjo6IiBmbXQsIHRoaXMsIFBBR0VfSUQsIEZSQU1FX0lELCBmcmFt
ZUxvYWRlcigpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSwgIyNfX1ZBX0FSR1NfXykKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHAKaW5kZXggOTcyZjJhZjIyNjAzZjQyNGNkODc3NWY1OTEwMTBlMmQ3NjkzOGEwMS4uZTZl
MGY3NDcyYTFhNzFjM2YzMmRjYWYzZDBkYTMyYWNkZTVmNmYxZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCkBAIC02OSw4ICs2OSw4IEBACiAKICN1bmRl
ZiBTVUJSRVNPVVJDRUxPQURFUl9SRUxFQVNFX0xPRwogI3VuZGVmIFNVQlJFU09VUkNFTE9BREVS
X1JFTEVBU0VfTE9HX0VSUk9SCi0jZGVmaW5lIFBBR0VfSUQgKChmcmFtZSgpID8gZnJhbWUoKS0+
cGFnZUlEKCkudmFsdWVfb3IoUGFnZUlkZW50aWZpZXIoKSkgOiBQYWdlSWRlbnRpZmllcigpKS50
b1VJbnQ2NCgpKQotI2RlZmluZSBGUkFNRV9JRCAoKGZyYW1lKCkgPyBmcmFtZSgpLT5mcmFtZUlE
KCkudmFsdWVfb3IoRnJhbWVJZGVudGlmaWVyKCkpIDogRnJhbWVJZGVudGlmaWVyKCkpLnRvVUlu
dDY0KCkpCisjZGVmaW5lIFBBR0VfSUQgKChmcmFtZSgpID8gdmFsdWVPckRlZmF1bHQoZnJhbWUo
KS0+cGFnZUlEKCkpIDogUGFnZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKKyNkZWZpbmUgRlJB
TUVfSUQgKChmcmFtZSgpID8gdmFsdWVPckRlZmF1bHQoZnJhbWUoKS0+ZnJhbWVJRCgpKSA6IEZy
YW1lSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQogI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECiAj
ZGVmaW5lIFNVQlJFU09VUkNFTE9BREVSX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBVTlVTRURfVkFS
SUFCTEUodGhpcykKICNkZWZpbmUgU1VCUkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0dfRVJST1Io
Zm10LCAuLi4pIFVOVVNFRF9WQVJJQUJMRSh0aGlzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggN2I5YzYxZjk2NjE3NTQ2YjY2YmNjM2M2
M2VjYTBlODU3ZTI2MmVmNS4uYmJjMWIzMDU5NTI3ZjRiNWMwZjBjNGU5NjZkOWNkNDhkZDI4N2Fm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CkBAIC02NCw4ICs2NCw4IEBACiAjZW5kaWYKIAogI3VuZGVmIENBQ0hFRFJFU09VUkNFX1JFTEVB
U0VfTE9HCi0jZGVmaW5lIFBBR0VfSUQoZnJhbWUpIChmcmFtZS5wYWdlSUQoKS52YWx1ZV9vcihQ
YWdlSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQotI2RlZmluZSBGUkFNRV9JRChmcmFtZSkgKGZy
YW1lLmZyYW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkKKyNk
ZWZpbmUgUEFHRV9JRChmcmFtZSkgKHZhbHVlT3JEZWZhdWx0KGZyYW1lLnBhZ2VJRCgpKS50b1VJ
bnQ2NCgpKQorI2RlZmluZSBGUkFNRV9JRChmcmFtZSkgKHZhbHVlT3JEZWZhdWx0KGZyYW1lLmZy
YW1lSUQoKSkudG9VSW50NjQoKSkKICNkZWZpbmUgQ0FDSEVEUkVTT1VSQ0VfUkVMRUFTRV9MT0co
Zm10LCAuLi4pIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIENhY2hlZFJlc291cmNlOjoiIGZt
dCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKICNkZWZpbmUgQ0FDSEVEUkVTT1VSQ0VfUkVMRUFTRV9M
T0dfV0lUSF9GUkFNRShmbXQsIGZyYW1lLCAuLi4pIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAt
IFtwYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIgUFJJdTY0ICJdIENhY2hlZFJlc291cmNl
OjoiIGZtdCwgdGhpcywgUEFHRV9JRChmcmFtZSksIEZSQU1FX0lEKGZyYW1lKSwgIyNfX1ZBX0FS
R1NfXykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggODRjMDE0YmQ2NDMwYTE4MmNjZmQ3ZjQyYzg1ZmEzOGJiN2M0
MGFmNC4uYmU1NGU4MGFkOGMwODUxOWI3ZjdmYTk3M2U1Zjg3YjUwZTkzMGU2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3Bw
CkBAIC05Niw4ICs5Niw4IEBACiAjZW5kaWYKIAogI3VuZGVmIENBQ0hFRFJFU09VUkNFTE9BREVS
X1JFTEVBU0VfTE9HCi0jZGVmaW5lIFBBR0VfSUQoZnJhbWUpIChmcmFtZS5wYWdlSUQoKS52YWx1
ZV9vcihQYWdlSWRlbnRpZmllcigpKS50b1VJbnQ2NCgpKQotI2RlZmluZSBGUkFNRV9JRChmcmFt
ZSkgKGZyYW1lLmZyYW1lSUQoKS52YWx1ZV9vcihGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50NjQo
KSkKKyNkZWZpbmUgUEFHRV9JRChmcmFtZSkgKHZhbHVlT3JEZWZhdWx0KGZyYW1lLnBhZ2VJRCgp
KS50b1VJbnQ2NCgpKQorI2RlZmluZSBGUkFNRV9JRChmcmFtZSkgKHZhbHVlT3JEZWZhdWx0KGZy
YW1lLmZyYW1lSUQoKSkudG9VSW50NjQoKSkKICNkZWZpbmUgQ0FDSEVEUkVTT1VSQ0VMT0FERVJf
UkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIENhY2hlZFJl
c291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKICNkZWZpbmUgQ0FDSEVE
UkVTT1VSQ0VMT0FERVJfUkVMRUFTRV9MT0dfV0lUSF9GUkFNRShmbXQsIGZyYW1lLCAuLi4pIFJF
TEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIFtwYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9JSIg
UFJJdTY0ICJdIENhY2hlZFJlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgUEFHRV9JRChmcmFt
ZSksIEZSQU1FX0lEKGZyYW1lKSwgIyNfX1ZBX0FSR1NfXykKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCmluZGV4IDhlNGUxMDBhNDZlMzk4NWFjM2FjZTAxNDMyOGVlOGE4YjBhOWIx
NTIuLmYxZGI1MjA4NDY1NDU2MTY1ZWY3ZGY2YTNjM2JjODVkOTM5YTZhOTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTk0Nyw3ICs5NDcsNyBAQCB2b2lkIEV2ZW50SGFu
ZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFnKCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6VHlwZT4gaGl0VHlwZSB7ICBI
aXRUZXN0UmVxdWVzdDo6VHlwZTo6UmVhZE9ubHksIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpBY3Rp
dmUsIEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpNb3ZlLCBIaXRUZXN0UmVxdWVzdDo6VHlwZTo6RGlz
YWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50IH07Ci0gICAgSGl0VGVzdFJlc3VsdCByZXN1bHQo
dmlldy0+d2luZG93VG9Db250ZW50cyhtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24udmFsdWVfb3Io
SW50UG9pbnQoKSkpKTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCh2aWV3LT53aW5kb3dUb0Nv
bnRlbnRzKHZhbHVlT3JEZWZhdWx0KG1fbGFzdEtub3duTW91c2VQb3NpdGlvbikpKTsKICAgICBk
b2N1bWVudC0+aGl0VGVzdChoaXRUeXBlLCByZXN1bHQpOwogICAgIHVwZGF0ZVNlbGVjdGlvbkZv
ck1vdXNlRHJhZyhyZXN1bHQpOwogfQpAQCAtMTMwNyw3ICsxMzA3LDcgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmxvZ2ljYWxTY3JvbGxSZWN1cnNpdmVseShTY3JvbGxMb2dpY2FsRGlyZWN0aW9uIGRp
cmVjdGlvbiwgU2MKIAogSW50UG9pbnQgRXZlbnRIYW5kbGVyOjpsYXN0S25vd25Nb3VzZVBvc2l0
aW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uLnZhbHVl
X29yKEludFBvaW50KCkpOworICAgIHJldHVybiB2YWx1ZU9yRGVmYXVsdChtX2xhc3RLbm93bk1v
dXNlUG9zaXRpb24pOwogfQogCiBSZWZQdHI8RnJhbWU+IEV2ZW50SGFuZGxlcjo6c3ViZnJhbWVG
b3JIaXRUZXN0UmVzdWx0KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGhpdFRl
c3RSZXN1bHQpCkBAIC0xOTYwLDcgKzE5NjAsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxl
TW91c2VNb3ZlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGF0Zm9ybU1vdXNlRQog
I2VuZGlmCiAKICAgICBpZiAobV9zdmdQYW4pIHsKLSAgICAgICAgZG93bmNhc3Q8U1ZHRG9jdW1l
bnQ+KCptX2ZyYW1lLmRvY3VtZW50KCkpLnVwZGF0ZVBhbihtX2ZyYW1lLnZpZXcoKS0+d2luZG93
VG9Db250ZW50cyhtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24udmFsdWVfb3IoSW50UG9pbnQoKSkp
KTsKKyAgICAgICAgZG93bmNhc3Q8U1ZHRG9jdW1lbnQ+KCptX2ZyYW1lLmRvY3VtZW50KCkpLnVw
ZGF0ZVBhbihtX2ZyYW1lLnZpZXcoKS0+d2luZG93VG9Db250ZW50cyh2YWx1ZU9yRGVmYXVsdCht
X2xhc3RLbm93bk1vdXNlUG9zaXRpb24pKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IApAQCAtMjEyNiw3ICsyMTI2LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVs
ZWFzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxhdGZvcm1Nb3UKIAogICAgIGlm
IChtX3N2Z1BhbikgewogICAgICAgICBtX3N2Z1BhbiA9IGZhbHNlOwotICAgICAgICBkb3duY2Fz
dDxTVkdEb2N1bWVudD4oKm1fZnJhbWUuZG9jdW1lbnQoKSkudXBkYXRlUGFuKG1fZnJhbWUudmll
dygpLT53aW5kb3dUb0NvbnRlbnRzKG1fbGFzdEtub3duTW91c2VQb3NpdGlvbi52YWx1ZV9vcihJ
bnRQb2ludCgpKSkpOworICAgICAgICBkb3duY2FzdDxTVkdEb2N1bWVudD4oKm1fZnJhbWUuZG9j
dW1lbnQoKSkudXBkYXRlUGFuKG1fZnJhbWUudmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHZhbHVl
T3JEZWZhdWx0KG1fbGFzdEtub3duTW91c2VQb3NpdGlvbikpKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCkBAIC0yODY0LDcgKzI4NjQsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6cHJv
Y2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIGNv
bgogICAgIAogSW50UG9pbnQgRXZlbnRIYW5kbGVyOjp0YXJnZXRQb3NpdGlvbkluV2luZG93Rm9y
U2VsZWN0aW9uQXV0b3Njcm9sbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbGFzdEtub3duTW91
c2VQb3NpdGlvbi52YWx1ZV9vcihJbnRQb2ludCgpKTsKKyAgICByZXR1cm4gdmFsdWVPckRlZmF1
bHQobV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uKTsKIH0KICAgICAKICNlbmRpZiAvLyAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKQEAgLTMzOTEsNyArMzM5MSw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpk
aXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudFNvb25JblF1YWQoY29uc3QgRmxvYXRRdWFkJiBxdWFk
KQogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFxdWFkLmNvbnRh
aW5zUG9pbnQodmlldy0+d2luZG93VG9Db250ZW50cyhtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24u
dmFsdWVfb3IoSW50UG9pbnQoKSkpKSkKKyAgICBpZiAoIXF1YWQuY29udGFpbnNQb2ludCh2aWV3
LT53aW5kb3dUb0NvbnRlbnRzKHZhbHVlT3JEZWZhdWx0KG1fbGFzdEtub3duTW91c2VQb3NpdGlv
bikpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRT
b29uKCk7CkBAIC0zNDIwLDcgKzM0MjAsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZmFrZU1vdXNl
TW92ZUV2ZW50VGltZXJGaXJlZCgpCiAgICAgYm9vbCBhbHRLZXk7CiAgICAgYm9vbCBtZXRhS2V5
OwogICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Z2V0Q3VycmVudE1vZGlmaWVyU3RhdGUoc2hp
ZnRLZXksIGN0cmxLZXksIGFsdEtleSwgbWV0YUtleSk7Ci0gICAgUGxhdGZvcm1Nb3VzZUV2ZW50
IGZha2VNb3VzZU1vdmVFdmVudChtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24udmFsdWVfb3IoSW50
UG9pbnQoKSksIG1fbGFzdEtub3duTW91c2VHbG9iYWxQb3NpdGlvbiwgTm9CdXR0b24sIFBsYXRm
b3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIHNoaWZ0S2V5LCBjdHJsS2V5LCBhbHRLZXksIG1ldGFL
ZXksIFdhbGxUaW1lOjpub3coKSwgMCwgTm9UYXApOworICAgIFBsYXRmb3JtTW91c2VFdmVudCBm
YWtlTW91c2VNb3ZlRXZlbnQodmFsdWVPckRlZmF1bHQobV9sYXN0S25vd25Nb3VzZVBvc2l0aW9u
KSwgbV9sYXN0S25vd25Nb3VzZUdsb2JhbFBvc2l0aW9uLCBOb0J1dHRvbiwgUGxhdGZvcm1FdmVu
dDo6TW91c2VNb3ZlZCwgMCwgc2hpZnRLZXksIGN0cmxLZXksIGFsdEtleSwgbWV0YUtleSwgV2Fs
bFRpbWU6Om5vdygpLCAwLCBOb1RhcCk7CiAgICAgbW91c2VNb3ZlZChmYWtlTW91c2VNb3ZlRXZl
bnQpOwogfQogI2VuZGlmIC8vICFFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKQEAgLTM0NDYsNyAr
MzQ0Niw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpob3ZlclRpbWVyRmlyZWQoKQogCiAgICAgaWYg
KFJlZlB0ciBkb2N1bWVudCA9IG1fZnJhbWUuZG9jdW1lbnQoKSkgewogICAgICAgICBpZiAoUmVm
UHRyIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKSkgewotICAgICAgICAgICAgSGl0VGVzdFJlc3VsdCBy
ZXN1bHQodmlldy0+d2luZG93VG9Db250ZW50cyhtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24udmFs
dWVfb3IoSW50UG9pbnQoKSkpKTsKKyAgICAgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHZp
ZXctPndpbmRvd1RvQ29udGVudHModmFsdWVPckRlZmF1bHQobV9sYXN0S25vd25Nb3VzZVBvc2l0
aW9uKSkpOwogICAgICAgICAgICAgY29uc3RleHByIE9wdGlvblNldDxIaXRUZXN0UmVxdWVzdDo6
VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpUeXBlOjpNb3ZlLCBIaXRUZXN0UmVxdWVz
dDo6VHlwZTo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50IH07CiAgICAgICAgICAgICBk
b2N1bWVudC0+aGl0VGVzdChoaXRUeXBlLCByZXN1bHQpOwogICAgICAgICAgICAgZG9jdW1lbnQt
PnVwZGF0ZUhvdmVyQWN0aXZlU3RhdGUoaGl0VHlwZSwgcmVzdWx0LnRhcmdldEVsZW1lbnQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMDYzN2YyZDlhNzljMGY5NDE3MjNkNzFk
Y2MxNzEzNmY0Yjc1YWM4NC4uOGRjNzQwYmUyYjQwZTA2MTljM2U5YWZkZjViZDdiZTJkMTIwMDk3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMTQwLDggKzE0MCw4IEBACiAjaW5j
bHVkZSAiTGF5b3V0Q29udGV4dC5oIgogI2VuZGlmCiAKLSNkZWZpbmUgUEFHRV9JRCBmcmFtZSgp
LnBhZ2VJRCgpLnZhbHVlX29yKFBhZ2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCkKLSNkZWZpbmUg
RlJBTUVfSUQgZnJhbWUoKS5mcmFtZUlEKCkudmFsdWVfb3IoRnJhbWVJZGVudGlmaWVyKCkpLnRv
VUludDY0KCkKKyNkZWZpbmUgUEFHRV9JRCB2YWx1ZU9yRGVmYXVsdChmcmFtZSgpLnBhZ2VJRCgp
KS50b1VJbnQ2NCgpCisjZGVmaW5lIEZSQU1FX0lEIHZhbHVlT3JEZWZhdWx0KGZyYW1lKCkuZnJh
bWVJRCgpKS50b1VJbnQ2NCgpCiAjZGVmaW5lIEZSQU1FVklFV19SRUxFQVNFX0xPRyhjaGFubmVs
LCBmbXQsIC4uLikgUkVMRUFTRV9MT0coY2hhbm5lbCwgIiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQg
IiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgbWFpbj0lZF0gRnJhbWVWaWV3OjoiIGZtdCwgdGhpcywg
UEFHRV9JRCwgRlJBTUVfSUQsIGZyYW1lKCkuaXNNYWluRnJhbWUoKSwgIyNfX1ZBX0FSR1NfXykK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTcxNiw3ICsxNzE2LDcgQEAgdm9pZCBGcmFtZVZp
ZXc6OnNldExheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KHN0ZDo6b3B0aW9uYWw8TGF5b3V0UmVj
dD4gcmVjdCwgVHIKICAgICBpZiAob2xkUmVjdC5oZWlnaHQoKSAhPSBsYXlvdXRWaWV3cG9ydFJl
Y3QoKS5oZWlnaHQoKSkKICAgICAgICAgbGF5b3V0VHJpZ2dlcmluZyA9IFRyaWdnZXJMYXlvdXRP
ck5vdDo6WWVzOwogCi0gICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywgc3RyZWFtIDw8ICJc
bkZyYW1lVmlldyAiIDw8IHRoaXMgPDwgIiBzZXRMYXlvdXRWaWV3cG9ydE92ZXJyaWRlUmVjdCgp
IC0gY2hhbmdpbmcgb3ZlcnJpZGUgbGF5b3V0IHZpZXdwb3J0IGZyb20gIiA8PCBvbGRSZWN0IDw8
ICIgdG8gIiA8PCBtX2xheW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0LnZhbHVlX29yKExheW91dFJl
Y3QoKSkgPDwgIiBsYXlvdXRUcmlnZ2VyaW5nICIgPDwgKGxheW91dFRyaWdnZXJpbmcgPT0gVHJp
Z2dlckxheW91dE9yTm90OjpZZXMgPyAieWVzIiA6ICJubyIpKTsKKyAgICBMT0dfV0lUSF9TVFJF
QU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIlxuRnJhbWVWaWV3ICIgPDwgdGhpcyA8PCAiIHNldExh
eW91dFZpZXdwb3J0T3ZlcnJpZGVSZWN0KCkgLSBjaGFuZ2luZyBvdmVycmlkZSBsYXlvdXQgdmll
d3BvcnQgZnJvbSAiIDw8IG9sZFJlY3QgPDwgIiB0byAiIDw8IHZhbHVlT3JEZWZhdWx0KG1fbGF5
b3V0Vmlld3BvcnRPdmVycmlkZVJlY3QpIDw8ICIgbGF5b3V0VHJpZ2dlcmluZyAiIDw8IChsYXlv
dXRUcmlnZ2VyaW5nID09IFRyaWdnZXJMYXlvdXRPck5vdDo6WWVzID8gInllcyIgOiAibm8iKSk7
CiAKICAgICBpZiAob2xkUmVjdCAhPSBsYXlvdXRWaWV3cG9ydFJlY3QoKSAmJiBsYXlvdXRUcmln
Z2VyaW5nID09IFRyaWdnZXJMYXlvdXRPck5vdDo6WWVzKQogICAgICAgICBzZXRWaWV3cG9ydENv
bnN0cmFpbmVkT2JqZWN0c05lZWRMYXlvdXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDhhZWNi
YTY0MTM4ODcwMDZjY2EzOTY4N2RlY2IyMWU5OTE2ODRhMjEuLmUwZWM0ZjlhZTQ5NGVjOGFjMzEw
MGU5ZjQ5NGNlNjhjNzI3ODY2MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMjY2Niw3ICsyNjY2
LDcgQEAgQ29sb3IgUGFnZTo6cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKCkgY29uc3QKIAog
Q29sb3IgUGFnZTo6c2FtcGxlZFBhZ2VUb3BDb2xvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
c2FtcGxlZFBhZ2VUb3BDb2xvci52YWx1ZV9vcihDb2xvcigpKTsKKyAgICByZXR1cm4gdmFsdWVP
ckRlZmF1bHQobV9zYW1wbGVkUGFnZVRvcENvbG9yKTsKIH0KIAogdm9pZCBQYWdlOjpzZXRVbmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlkZShDb2xvciYmIHVuZGVyUGFnZUJhY2tncm91bmRD
b2xvck92ZXJyaWRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRI
YW5kbGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1t
CmluZGV4IDFlY2QwY2M3OGVkNTU1NjRmMDMyYjMwYzljODNlYmY1NzRhZGU4MDAuLjU2N2YxZWUy
MjM3NjM2ZjliMzA4MGE4OTEyNWI0NDcxZTEyNjBmN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L21hYy9FdmVudEhhbmRsZXJNYWMubW0KQEAgLTEwNDksMTAgKzEwNDksMTAgQEAgSW50UG9pbnQg
RXZlbnRIYW5kbGVyOjp0YXJnZXRQb3NpdGlvbkluV2luZG93Rm9yU2VsZWN0aW9uQXV0b3Njcm9s
bCgpIGNvbnN0CiB7CiAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpOwogICAgIGlmICgh
cGFnZSkKLSAgICAgICAgcmV0dXJuIG1fbGFzdEtub3duTW91c2VQb3NpdGlvbi52YWx1ZV9vcihJ
bnRQb2ludCgpKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlT3JEZWZhdWx0KG1fbGFzdEtub3duTW91
c2VQb3NpdGlvbik7CiAKICAgICBhdXRvIGZyYW1lID0gdG9Vc2VyU3BhY2VGb3JQcmltYXJ5U2Ny
ZWVuKHNjcmVlblJlY3RGb3JEaXNwbGF5KHBhZ2UtPmNocm9tZSgpLmRpc3BsYXlJRCgpKSk7Ci0g
ICAgcmV0dXJuIG1fbGFzdEtub3duTW91c2VQb3NpdGlvbi52YWx1ZV9vcihJbnRQb2ludCgpKSAr
IGF1dG9zY3JvbGxBZGp1c3RtZW50RmFjdG9yRm9yU2NyZWVuQm91bmRhcmllcyhtX2xhc3RLbm93
bk1vdXNlR2xvYmFsUG9zaXRpb24sIGZyYW1lKTsKKyAgICByZXR1cm4gdmFsdWVPckRlZmF1bHQo
bV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uKSArIGF1dG9zY3JvbGxBZGp1c3RtZW50RmFjdG9yRm9y
U2NyZWVuQm91bmRhcmllcyhtX2xhc3RLbm93bk1vdXNlR2xvYmFsUG9zaXRpb24sIGZyYW1lKTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyLmNwcAppbmRleCA1ZTVlZmU2MDM1
ODI1MGZlMjlkMzA5MGEwN2U0NWJlNGZlMmEyZDU2Li5hYWNmZGM3ODdlMTg3OGRiMDU4MWVjNWUz
ZjM5Yjc0Zjc1MGJkODQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTGF0Y2hpbmdDb250cm9sbGVyLmNwcApAQCAt
MTEyLDcgKzExMiw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUxhdGNoaW5nQ29udHJvbGxlcjo6bm9k
ZURpZEhhbmRsZUV2ZW50KFNjcm9sbGluZ05vZGVJRCBzY3JvbGxpCiAgICAgICAgIGlmICghd2hl
ZWxFdmVudC5pc0dlc3R1cmVDb250aW51YXRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgICAgICBpZiAobV9wcm9jZXNzaW5nU3RlcHNGb3JDdXJyZW50R2VzdHVyZS52YWx1
ZV9vcihPcHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4geyB9KS5jb250YWlucyhX
aGVlbEV2ZW50UHJvY2Vzc2luZ1N0ZXBzOjpNYWluVGhyZWFkRm9yU2Nyb2xsaW5nKSAmJiBwcm9j
ZXNzaW5nU3RlcHMuY29udGFpbnMoV2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwczo6U2Nyb2xsaW5n
VGhyZWFkKSkKKyAgICAgICAgaWYgKHZhbHVlT3JEZWZhdWx0KG1fcHJvY2Vzc2luZ1N0ZXBzRm9y
Q3VycmVudEdlc3R1cmUpLmNvbnRhaW5zKFdoZWVsRXZlbnRQcm9jZXNzaW5nU3RlcHM6Ok1haW5U
aHJlYWRGb3JTY3JvbGxpbmcpICYmIHByb2Nlc3NpbmdTdGVwcy5jb250YWlucyhXaGVlbEV2ZW50
UHJvY2Vzc2luZ1N0ZXBzOjpTY3JvbGxpbmdUaHJlYWQpKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAppbmRleCBmOGI2MTAyZDY4M2NkNGI2OWE4NzA5MGY1
MDZmY2Q2MDk4OThiNmYxLi5iYjEzOGI1Mjk3YTUyMWZiZjdkNjkzY2QxMTQxMDQ0MDBmY2FiYzRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNw
cApAQCAtNDA0LDcgKzQwNCw3IEBAIHN0ZDo6b3B0aW9uYWw8U2hhZG93Qmx1cjo6TGF5ZXJJbWFn
ZVByb3BlcnRpZXM+IFNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxheWVyQm91bmRpCiAgICAgaWYgKG1f
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgJiYgIXRyYW5zZm9ybS5pc0lkZW50aXR5KCkpIHsKICAg
ICAgICAgRmxvYXRRdWFkIHRyYW5zZm9ybWVkUG9seWdvbiA9IHRyYW5zZm9ybS5tYXBRdWFkKEZs
b2F0UXVhZChzaGFkb3dlZFJlY3QpKTsKICAgICAgICAgdHJhbnNmb3JtZWRQb2x5Z29uLm1vdmUo
bV9vZmZzZXQpOwotICAgICAgICBsYXllclJlY3QgPSB0cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVl
X29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBRdWFkKHRyYW5zZm9ybWVkUG9seWdvbikuYm91bmRp
bmdCb3goKTsKKyAgICAgICAgbGF5ZXJSZWN0ID0gdmFsdWVPckRlZmF1bHQodHJhbnNmb3JtLmlu
dmVyc2UoKSkubWFwUXVhZCh0cmFuc2Zvcm1lZFBvbHlnb24pLmJvdW5kaW5nQm94KCk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgbGF5ZXJSZWN0ID0gc2hhZG93ZWRSZWN0OwogICAgICAgICBsYXll
clJlY3QubW92ZShtX29mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KaW5kZXggMDE2
YjRjZjkyZGM4YjQwMTc3MzEyYTYwMjg5NTI0Mjc0ZTk1YjkzMC4uMTVjZjM2NTQ0Njc5ZGM1YjA0
ZTlmMjhiNWZmZGI0NTdhZjUwODU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAt
MTAwNyw3ICsxMDA3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNzQ28KICAgICBpZiAoIW1fdmlk
ZW9UcmFuc2Zvcm0pCiAgICAgICAgIG1fdmlkZW9UcmFuc2Zvcm0gPSB2aWRlb1RyYW5zZm9ybWF0
aW9uTWF0cml4KCptX2ltYWdlUGFpbnRlci5tZWRpYVNhbXBsZSk7CiAgICAgQWZmaW5lVHJhbnNm
b3JtIHZpZGVvVHJhbnNmb3JtID0gKm1fdmlkZW9UcmFuc2Zvcm07Ci0gICAgRmxvYXRSZWN0IHRy
YW5zZm9ybWVkRGVzdFJlY3QgPSB2aWRlb1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3IoQWZm
aW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QoZGVzdFJlY3QpOworICAgIEZsb2F0UmVjdCB0cmFuc2Zv
cm1lZERlc3RSZWN0ID0gdmFsdWVPckRlZmF1bHQodmlkZW9UcmFuc2Zvcm0uaW52ZXJzZSgpKS5t
YXBSZWN0KGRlc3RSZWN0KTsKICAgICBjb250ZXh0LmNvbmNhdENUTSh2aWRlb1RyYW5zZm9ybSk7
CiAgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmltYWdlLCBpbWFnZVJlY3Quc2l6ZSgpLCB0
cmFuc2Zvcm1lZERlc3RSZWN0LCBpbWFnZVJlY3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRleCAzYTI4NjdhMWFj
MjQzYmI5YzkzYzlkNmI3MGNhNTZiMDI5NDhmYzljLi4yYTRjOTFiNTM2OWZlYzU4ZDljOWQ5NGU5
ZmI0MjQ2ZDNjYmVmOTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAtMTI2OCw3ICsxMjY4LDcgQEAgdm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6d2lsbFNlZWsoKQogCiBGbG9hdFNpemUgU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6Om5hdHVyYWxTaXplKCkKIHsKLSAgICByZXR1cm4gbV9jYWNoZWRT
aXplLnZhbHVlX29yKEZsb2F0U2l6ZSgpKTsKKyAgICByZXR1cm4gdmFsdWVPckRlZmF1bHQobV9j
YWNoZWRTaXplKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkQmVj
b21lUmVhZHlGb3JNb3JlU2FtcGxlcyh1aW50NjRfdCB0cmFja0lEKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5k
ZXggNzcyN2EyNTg4NThjNDNiNDhjNGQ3NjRiMGIyZjFlYzcwMzNiMGZhMC4uZmQ5ZmFmZThmMTY5
N2U3OWYxZmE5MTQ1NmI0YmVhOGVhNWQ4MjUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0xNjY2LDcg
KzE2NjYsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c2V0VmlzaWJsZUFuZENvdmVyYWdlUmVj
dHMoY29uc3QgVmlzaWJsZUFuZENvdmVyYWdlUmVjdHMmCiAgICAgaWYgKGF1dG8gZXh0ZW50ID0g
YW5pbWF0aW9uRXh0ZW50KCkpIHsKICAgICAgICAgLy8gQWRqdXN0IHRoZSBhbmltYXRpb24gZXh0
ZW50IHRvIG1hdGNoIHRoZSBjdXJyZW50IGFuaW1hdGlvbiBwb3NpdGlvbi4KICAgICAgICAgYXV0
byBhbmltYXRpbmdUcmFuc2Zvcm1XaXRoQW5jaG9yUG9pbnQgPSB0cmFuc2Zvcm1CeUFwcGx5aW5n
QW5jaG9yUG9pbnQocmVjdHMuYW5pbWF0aW5nVHJhbnNmb3JtKTsKLSAgICAgICAgYm91bmRzID0g
YW5pbWF0aW5nVHJhbnNmb3JtV2l0aEFuY2hvclBvaW50LmludmVyc2UoKS52YWx1ZV9vcihUcmFu
c2Zvcm1hdGlvbk1hdHJpeCgpKS5tYXBSZWN0KCpleHRlbnQpOworICAgICAgICBib3VuZHMgPSB2
YWx1ZU9yRGVmYXVsdChhbmltYXRpbmdUcmFuc2Zvcm1XaXRoQW5jaG9yUG9pbnQuaW52ZXJzZSgp
KS5tYXBSZWN0KCpleHRlbnQpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRh
a2UgcmVmbGVjdGlvbnMgaW50byBhY2NvdW50IHdoZW4gZGV0ZXJtaW5pbmcgd2hldGhlciB0aGlz
IGxheWVyIGludGVyc2VjdHMgdGhlIGNvdmVyYWdlIHJlY3QuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybVN0YXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3Rh
dGUuY3BwCmluZGV4IDRiNDNkNzY2OTczM2I2MTU0Y2Y1NGY0ZDVlZDhjZmMxMDg3MWU5NDAuLjBi
ZDMyZjIyNTZjODM0Mjk1MTI2ZDZiNjY4NDVlZjgxNzkwYWFmY2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtU3RhdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNm
b3JtU3RhdGUuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgRmxvYXRQb2ludCBUcmFuc2Zvcm1TdGF0
ZTo6bWFwcGVkUG9pbnQoYm9vbCogd2FzQ2xhbXBlZCkgY29uc3QKICAgICBpZiAobV9kaXJlY3Rp
b24gPT0gQXBwbHlUcmFuc2Zvcm1EaXJlY3Rpb24pCiAgICAgICAgIHJldHVybiBtX2FjY3VtdWxh
dGVkVHJhbnNmb3JtLT5tYXBQb2ludChwb2ludCk7CiAKLSAgICByZXR1cm4gbV9hY2N1bXVsYXRl
ZFRyYW5zZm9ybS0+aW52ZXJzZSgpLnZhbHVlX29yKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpLnBy
b2plY3RQb2ludChwb2ludCwgd2FzQ2xhbXBlZCk7CisgICAgcmV0dXJuIHZhbHVlT3JEZWZhdWx0
KG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0tPmludmVyc2UoKSkucHJvamVjdFBvaW50KHBvaW50LCB3
YXNDbGFtcGVkKTsKIH0KIAogRmxvYXRRdWFkIFRyYW5zZm9ybVN0YXRlOjptYXBwZWRRdWFkKGJv
b2wqIHdhc0NsYW1wZWQpIGNvbnN0CkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBUcmFuc2Zvcm1T
dGF0ZTo6bWFwUXVhZChGbG9hdFF1YWQmIHF1YWQsIFRyYW5zZm9ybURpcmVjdGlvbiBkaXJlY3Rp
b24sIGJvb2wKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHF1YWQgPSBtX2FjY3VtdWxh
dGVkVHJhbnNmb3JtLT5pbnZlcnNlKCkudmFsdWVfb3IoVHJhbnNmb3JtYXRpb25NYXRyaXgoKSku
cHJvamVjdFF1YWQocXVhZCwgd2FzQ2xhbXBlZCk7CisgICAgcXVhZCA9IHZhbHVlT3JEZWZhdWx0
KG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0tPmludmVyc2UoKSkucHJvamVjdFF1YWQocXVhZCwgd2Fz
Q2xhbXBlZCk7CiB9CiAKIHZvaWQgVHJhbnNmb3JtU3RhdGU6OmZsYXR0ZW5XaXRoVHJhbnNmb3Jt
KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0LCBib29sKiB3YXNDbGFtcGVkKQpAQCAtMjMz
LDcgKzIzMyw3IEBAIHZvaWQgVHJhbnNmb3JtU3RhdGU6OmZsYXR0ZW5XaXRoVHJhbnNmb3JtKGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0LCBib29sKiB3CiAgICAgICAgICAgICAgICAgbV9s
YXN0UGxhbmFyU2Vjb25kYXJ5UXVhZCA9IHQubWFwUXVhZCgqbV9sYXN0UGxhbmFyU2Vjb25kYXJ5
UXVhZCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBpbnZlcnNlVHJhbnNmb3JtID0gdC5pbnZlcnNlKCkudmFsdWVfb3IoVHJhbnNmb3JtYXRp
b25NYXRyaXgoKSk7CisgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGludmVyc2VUcmFuc2Zv
cm0gPSB2YWx1ZU9yRGVmYXVsdCh0LmludmVyc2UoKSk7CiAgICAgICAgIGlmIChtX21hcFBvaW50
KQogICAgICAgICAgICAgbV9sYXN0UGxhbmFyUG9pbnQgPSBpbnZlcnNlVHJhbnNmb3JtLnByb2pl
Y3RQb2ludChtX2xhc3RQbGFuYXJQb2ludCk7CiAgICAgICAgIGlmIChtX21hcFF1YWQpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVz
dEJhc2UuY3BwCmluZGV4IGM1ZTU5YTFiYzZiY2Q1YjNkNzY4YjI0ZjczMmQ0ZGUxZjg0OWYxZmYu
LmM1YTU3ZjQ3OWU2YjI4NDJhNzRkNDhhMTVlYzc1NjcwNWU2MDZlZDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNw
cApAQCAtNjI4LDcgKzYyOCw3IEBAIGJvb2wgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6aXNTeXN0ZW1Q
cmV2aWV3KCkgY29uc3QKIAogU3lzdGVtUHJldmlld0luZm8gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6
c3lzdGVtUHJldmlld0luZm8oKSBjb25zdAogewotICAgIHJldHVybiBtX3N5c3RlbVByZXZpZXdJ
bmZvLnZhbHVlX29yKFN5c3RlbVByZXZpZXdJbmZvIHsgfSk7CisgICAgcmV0dXJuIHZhbHVlT3JE
ZWZhdWx0KG1fc3lzdGVtUHJldmlld0luZm8pOwogfQogCiB2b2lkIFJlc291cmNlUmVxdWVzdEJh
c2U6OnNldFN5c3RlbVByZXZpZXdJbmZvKGNvbnN0IFN5c3RlbVByZXZpZXdJbmZvJiBpbmZvKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3Bv
bnNlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVz
cG9uc2VCYXNlLmNwcAppbmRleCA5NTBlODI2N2UyYTVlODZiYTc5ZDY3OWU3ZDczNjExMDFjMGZi
YWViLi4yZDU4Mzg1ZWMxNmQyZTU5MjNjZTgxN2QxOTBmNjdmYzQxNzhhMDE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VC
YXNlLmNwcApAQCAtMTkyLDcgKzE5Miw3IEBAIFJlc291cmNlUmVzcG9uc2UgUmVzb3VyY2VSZXNw
b25zZUJhc2U6OmZpbHRlcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwKICAgICBB
U1NFUlQocmVzcG9uc2UudGFpbnRpbmcoKSA9PSBUYWludGluZzo6Q29ycyk7CiAgICAgZmlsdGVy
ZWRSZXNwb25zZS5zZXRUeXBlKFR5cGU6OkNvcnMpOwogCi0gICAgYXV0byBhY2Nlc3NDb250cm9s
RXhwb3NlSGVhZGVyU2V0ID0gcGFyc2VBY2Nlc3NDb250cm9sQWxsb3dMaXN0PEFTQ0lJQ2FzZUlu
c2Vuc2l0aXZlSGFzaD4ocmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpB
Y2Nlc3NDb250cm9sRXhwb3NlSGVhZGVycykpLnZhbHVlX29yKEhhc2hTZXQ8U3RyaW5nLCBBU0NJ
SUNhc2VJbnNlbnNpdGl2ZUhhc2g+IHsgfSk7CisgICAgYXV0byBhY2Nlc3NDb250cm9sRXhwb3Nl
SGVhZGVyU2V0ID0gdmFsdWVPckRlZmF1bHQocGFyc2VBY2Nlc3NDb250cm9sQWxsb3dMaXN0PEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4ocmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFk
ZXJOYW1lOjpBY2Nlc3NDb250cm9sRXhwb3NlSGVhZGVycykpKTsKICAgICBpZiAocGVyZm9ybUNo
ZWNrID09IFBlcmZvcm1FeHBvc2VBbGxIZWFkZXJzQ2hlY2s6OlllcyAmJiBhY2Nlc3NDb250cm9s
RXhwb3NlSGVhZGVyU2V0LmNvbnRhaW5zKCIqIikpCiAgICAgICAgIHJldHVybiBmaWx0ZXJlZFJl
c3BvbnNlOwogCkBAIC00NTgsNyArNDU4LDcgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6
c2FuaXRpemVIVFRQSGVhZGVyRmllbGRzQWNjb3JkaW5nVG9UYWludGluZygpCiAgICAgY2FzZSBS
ZXNvdXJjZVJlc3BvbnNlOjpUYWludGluZzo6QmFzaWM6CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgUmVzb3VyY2VSZXNwb25zZTo6VGFpbnRpbmc6OkNvcnM6IHsKLSAgICAgICAgYXV0byBjb3Jz
U2FmZUhlYWRlclNldCA9IHBhcnNlQWNjZXNzQ29udHJvbEFsbG93TGlzdDxBU0NJSUNhc2VJbnNl
bnNpdGl2ZUhhc2g+KGh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6QWNjZXNzQ29udHJv
bEV4cG9zZUhlYWRlcnMpKS52YWx1ZV9vcihIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5z
aXRpdmVIYXNoPiB7IH0pOworICAgICAgICBhdXRvIGNvcnNTYWZlSGVhZGVyU2V0ID0gdmFsdWVP
ckRlZmF1bHQocGFyc2VBY2Nlc3NDb250cm9sQWxsb3dMaXN0PEFTQ0lJQ2FzZUluc2Vuc2l0aXZl
SGFzaD4oaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpBY2Nlc3NDb250cm9sRXhwb3Nl
SGVhZGVycykpKTsKICAgICAgICAgaWYgKGNvcnNTYWZlSGVhZGVyU2V0LmNvbnRhaW5zKCIqIl9z
dHIpKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUGFpbnRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZv
LmgKaW5kZXggNTFlZjQxZGNmZDVlNWQxMmE5YWI1NmRiZmI1MjQ0MGM4NTBjZDczNi4uMDUwZDVj
YWY2YjJmZDNiZjMyMWViYjkxYTg3NjE5ZDM5NjgxNTAwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9QYWludEluZm8uaApAQCAtMTE2LDcgKzExNiw3IEBAIHN0cnVjdCBQYWludEluZm8gewogICAg
ICAgICBpZiAocmVjdC5pc0luZmluaXRlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgRmxvYXRSZWN0IHRyYW5mb3JtZWRSZWN0KGxvY2FsVG9BbmNlc3RvclRyYW5zZm9ybS5pbnZl
cnNlKCkudmFsdWVfb3IoQWZmaW5lVHJhbnNmb3JtKCkpLm1hcFJlY3QocmVjdCkpOworICAgICAg
ICBGbG9hdFJlY3QgdHJhbmZvcm1lZFJlY3QodmFsdWVPckRlZmF1bHQobG9jYWxUb0FuY2VzdG9y
VHJhbnNmb3JtLmludmVyc2UoKSkubWFwUmVjdChyZWN0KSk7CiAgICAgICAgIHJlY3Quc2V0TG9j
YXRpb24oTGF5b3V0UG9pbnQodHJhbmZvcm1lZFJlY3QubG9jYXRpb24oKSkpOwogICAgICAgICBy
ZWN0LnNldFNpemUoTGF5b3V0U2l6ZSh0cmFuZm9ybWVkUmVjdC5zaXplKCkpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApp
bmRleCAyZGQxNTg3MWQ3YjcxNjM4MmUwNTc2MGQ4MjJlOWU1Nzk1ZTliZjRiLi5kM2VkOWM0ZTky
N2E0YTFlZjBkYTYyZDM1YjdiNGFjMWQ3NGFjMGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTM0OSw3ICszNDksNyBAQCBM
YXlvdXRTaXplIFJlbmRlckJveE1vZGVsT2JqZWN0OjpyZWxhdGl2ZVBvc2l0aW9uT2Zmc2V0KCkg
Y29uc3QKICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWdyaWQvI2dyaWQtaXRl
bS1zaXppbmcKICAgICBpZiAoIXN0eWxlKCkubGVmdCgpLmlzQXV0bygpIHx8ICFzdHlsZSgpLnJp
Z2h0KCkuaXNBdXRvKCkpIHsKICAgICAgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCA9IGhh
c092ZXJyaWRpbmdDb250YWluaW5nQmxvY2tDb250ZW50V2lkdGgoKQotICAgICAgICAgICAgPyBv
dmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFdpZHRoKCkudmFsdWVfb3IoTGF5b3V0VW5p
dCgpKSA6IGNvbnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVXaWR0aCgpOworICAgICAgICAgICAg
PyB2YWx1ZU9yRGVmYXVsdChvdmVycmlkaW5nQ29udGFpbmluZ0Jsb2NrQ29udGVudFdpZHRoKCkp
IDogY29udGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZVdpZHRoKCk7CiAgICAgICAgIGlmICghc3R5
bGUoKS5sZWZ0KCkuaXNBdXRvKCkpIHsKICAgICAgICAgICAgIGlmICghc3R5bGUoKS5yaWdodCgp
LmlzQXV0bygpICYmICFjb250YWluaW5nQmxvY2soKS0+c3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCkpCiAgICAgICAgICAgICAgICAgb2Zmc2V0LnNldFdpZHRoKC12YWx1ZUZvckxlbmd0
aChzdHlsZSgpLnJpZ2h0KCksICFzdHlsZSgpLnJpZ2h0KCkuaXNGaXhlZCgpID8gYXZhaWxhYmxl
V2lkdGggOiAwX2x1KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKaW5k
ZXggMzE3OWRlZjAyOTllNGViZDc1YWNjYWNmY2RkNzQ3OTYwOTE1NTFiNS4uMjZmOGZjYmMwYWIy
Nzk2MGM0OTM5MjIzZTc0OGQ5M2MzYjgzYzk5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJHcmlkLmNwcApAQCAtNDk0LDcgKzQ5NCw3IEBAIHVuc2lnbmVkIFJlbmRlckdyaWQ6OmNv
bXB1dGVBdXRvUmVwZWF0VHJhY2tzQ291bnQoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVj
CiAgICAgICAgIGlmIChtYXhTaXplLmlzU3BlY2lmaWVkKCkpIHsKICAgICAgICAgICAgIGlmICht
YXhTaXplLmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKQogICAgICAgICAgICAgICAgIGNvbnRhaW5p
bmdCbG9ja0F2YWlsYWJsZVNpemUgPSBpc1Jvd0F4aXMgPyBjb250YWluaW5nQmxvY2tMb2dpY2Fs
V2lkdGhGb3JDb250ZW50KCkgOiBjb250YWluaW5nQmxvY2tMb2dpY2FsSGVpZ2h0Rm9yQ29udGVu
dChFeGNsdWRlTWFyZ2luQm9yZGVyUGFkZGluZyk7Ci0gICAgICAgICAgICBMYXlvdXRVbml0IG1h
eFNpemVWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKG1heFNpemUsIGNvbnRhaW5pbmdCbG9ja0F2YWls
YWJsZVNpemUudmFsdWVfb3IoTGF5b3V0VW5pdCgpKSk7CisgICAgICAgICAgICBMYXlvdXRVbml0
IG1heFNpemVWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKG1heFNpemUsIHZhbHVlT3JEZWZhdWx0KGNv
bnRhaW5pbmdCbG9ja0F2YWlsYWJsZVNpemUpKTsKICAgICAgICAgICAgIGF2YWlsYWJsZU1heFNp
emUgPSBpc1Jvd0F4aXMgPyBhZGp1c3RDb250ZW50Qm94TG9naWNhbFdpZHRoRm9yQm94U2l6aW5n
KG1heFNpemVWYWx1ZSwgbWF4U2l6ZS50eXBlKCkpIDogYWRqdXN0Q29udGVudEJveExvZ2ljYWxI
ZWlnaHRGb3JCb3hTaXppbmcobWF4U2l6ZVZhbHVlKTsKICAgICAgICAgfQogCkBAIC01MDksNyAr
NTA5LDcgQEAgdW5zaWduZWQgUmVuZGVyR3JpZDo6Y29tcHV0ZUF1dG9SZXBlYXRUcmFja3NDb3Vu
dChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWMKICAgICAgICAgaWYgKG1pblNpemUuaXNT
cGVjaWZpZWQoKSkgewogICAgICAgICAgICAgaWYgKCFjb250YWluaW5nQmxvY2tBdmFpbGFibGVT
aXplICYmIG1pblNpemUuaXNQZXJjZW50T3JDYWxjdWxhdGVkKCkpCiAgICAgICAgICAgICAgICAg
Y29udGFpbmluZ0Jsb2NrQXZhaWxhYmxlU2l6ZSA9IGlzUm93QXhpcyA/IGNvbnRhaW5pbmdCbG9j
a0xvZ2ljYWxXaWR0aEZvckNvbnRlbnQoKSA6IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWlnaHRG
b3JDb250ZW50KEV4Y2x1ZGVNYXJnaW5Cb3JkZXJQYWRkaW5nKTsKLSAgICAgICAgICAgIExheW91
dFVuaXQgbWluU2l6ZVZhbHVlID0gdmFsdWVGb3JMZW5ndGgobWluU2l6ZSwgY29udGFpbmluZ0Js
b2NrQXZhaWxhYmxlU2l6ZS52YWx1ZV9vcihMYXlvdXRVbml0KCkpKTsKKyAgICAgICAgICAgIExh
eW91dFVuaXQgbWluU2l6ZVZhbHVlID0gdmFsdWVGb3JMZW5ndGgobWluU2l6ZSwgdmFsdWVPckRl
ZmF1bHQoY29udGFpbmluZ0Jsb2NrQXZhaWxhYmxlU2l6ZSkpOwogICAgICAgICAgICAgYXZhaWxh
YmxlTWluU2l6ZSA9IGlzUm93QXhpcyA/IGFkanVzdENvbnRlbnRCb3hMb2dpY2FsV2lkdGhGb3JC
b3hTaXppbmcobWluU2l6ZVZhbHVlLCBtaW5TaXplLnR5cGUoKSkgOiBhZGp1c3RDb250ZW50Qm94
TG9naWNhbEhlaWdodEZvckJveFNpemluZyhtaW5TaXplVmFsdWUpOwogICAgICAgICB9IGVsc2Ug
aWYgKHNob3VsZENvbXB1dGVNaW5TaXplRnJvbUFzcGVjdFJhdGlvKSB7CiAgICAgICAgICAgICBh
dXRvIFtsb2dpY2FsTWluV2lkdGgsIGxvZ2ljYWxNYXhXaWR0aF0gPSBjb21wdXRlTWluTWF4TG9n
aWNhbFdpZHRoRnJvbUFzcGVjdFJhdGlvKCk7CkBAIC01MTgsNyArNTE4LDcgQEAgdW5zaWduZWQg
UmVuZGVyR3JpZDo6Y29tcHV0ZUF1dG9SZXBlYXRUcmFja3NDb3VudChHcmlkVHJhY2tTaXppbmdE
aXJlY3Rpb24gZGlyZWMKICAgICAgICAgaWYgKCFtYXhTaXplLmlzU3BlY2lmaWVkKCkpCiAgICAg
ICAgICAgICBuZWVkc1RvRnVsZmlsbE1pbmltdW1TaXplID0gdHJ1ZTsKIAotICAgICAgICBhdmFp
bGFibGVTaXplID0gc3RkOjptYXgoYXZhaWxhYmxlTWluU2l6ZS52YWx1ZV9vcihMYXlvdXRVbml0
KCkpLCBhdmFpbGFibGVNYXhTaXplLnZhbHVlX29yKExheW91dFVuaXQoKSkpOworICAgICAgICBh
dmFpbGFibGVTaXplID0gc3RkOjptYXgodmFsdWVPckRlZmF1bHQoYXZhaWxhYmxlTWluU2l6ZSks
IHZhbHVlT3JEZWZhdWx0KGF2YWlsYWJsZU1heFNpemUpKTsKICAgICB9CiAKICAgICBMYXlvdXRV
bml0IGF1dG9SZXBlYXRUcmFja3NTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5jcHAKaW5kZXggOWJhMDM5OWNlZWFiZjU3Y2FhMDcyOTc0NzA1OTA4MzZmMmQwZWFmOC4u
OWIyMmQzYjQ5ZDI3NjQwYWJmOTY0MTkwMzJiYzkzODdjZTViMTBhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0xMDEwLDcgKzEwMTAsNyBAQCB2b2lkIFJl
bmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9ucyhSZW5kZXJHZW9tZXRyeU1hcCogZ2VvbWV0
cnlNYXAsIE9wdGlvblNldAogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkUmVwYWlu
dEFmdGVyTGF5b3V0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIHdpbGwg
Y29udmVydCB0aGlzIHRvIGp1c3QgdGFrZSB0aGUgb2xkIGFuZCBuZXcgUmVwYWludExheW91dFJl
Y3RzIG9uY2UKICAgICAgICAgICAgICAgICAgICAgLy8gd2UgY2hhbmdlIG90aGVyIGNhbGxlcnMg
dG8gdXNlIFJlcGFpbnRMYXlvdXRSZWN0cy4KLSAgICAgICAgICAgICAgICAgICAgYXV0byByZXNv
bHZlZE9sZFJlY3RzID0gb2xkUmVjdHMudmFsdWVfb3IoTGF5ZXJSZXBhaW50UmVjdHMgeyB9KTsK
KyAgICAgICAgICAgICAgICAgICAgYXV0byByZXNvbHZlZE9sZFJlY3RzID0gdmFsdWVPckRlZmF1
bHQob2xkUmVjdHMpOwogICAgICAgICAgICAgICAgICAgICByZW5kZXJlcigpLnJlcGFpbnRBZnRl
ckxheW91dElmTmVlZGVkKHJlcGFpbnRDb250YWluZXIsIHJlc29sdmVkT2xkUmVjdHMuY2xpcHBl
ZE92ZXJmbG93UmVjdCwgcmVzb2x2ZWRPbGRSZWN0cy5vdXRsaW5lQm91bmRzUmVjdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICZuZXdSZWN0cy0+Y2xpcHBlZE92ZXJmbG93UmVjdCwgJm5ld1Jl
Y3RzLT5vdXRsaW5lQm91bmRzUmVjdCk7CiAgICAgICAgICAgICAgICAgfQpAQCAtMzQ5Myw3ICsz
NDkzLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckJ5QXBwbHlpbmdUcmFuc2Zvcm0o
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdAogICAgIExheW91dFNpemUgYWRqdXN0ZWRT
dWJwaXhlbE9mZnNldCA9IG9mZnNldEZvclRoaXNMYXllciAtIExheW91dFNpemUoZGV2aWNlUGl4
ZWxTbmFwcGVkT2Zmc2V0Rm9yVGhpc0xheWVyKTsKICAgICBMYXllclBhaW50aW5nSW5mbyB0cmFu
c2Zvcm1lZFBhaW50aW5nSW5mbyhwYWludGluZ0luZm8pOwogICAgIHRyYW5zZm9ybWVkUGFpbnRp
bmdJbmZvLnJvb3RMYXllciA9IHRoaXM7Ci0gICAgdHJhbnNmb3JtZWRQYWludGluZ0luZm8ucGFp
bnREaXJ0eVJlY3QgPSBMYXlvdXRSZWN0KGVuY2xvc2VSZWN0VG9EZXZpY2VQaXhlbHModHJhbnNm
b3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChwYWludGlu
Z0luZm8ucGFpbnREaXJ0eVJlY3QpLCBkZXZpY2VTY2FsZUZhY3RvcikpOworICAgIHRyYW5zZm9y
bWVkUGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0ID0gTGF5b3V0UmVjdChlbmNsb3NlUmVjdFRv
RGV2aWNlUGl4ZWxzKHZhbHVlT3JEZWZhdWx0KHRyYW5zZm9ybS5pbnZlcnNlKCkpLm1hcFJlY3Qo
cGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0KSwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKICAgICB0
cmFuc2Zvcm1lZFBhaW50aW5nSW5mby5zdWJwaXhlbE9mZnNldCA9IGFkanVzdGVkU3VicGl4ZWxP
ZmZzZXQ7CiAgICAgcGFpbnRMYXllckNvbnRlbnRzQW5kUmVmbGVjdGlvbihjb250ZXh0LCB0cmFu
c2Zvcm1lZFBhaW50aW5nSW5mbywgcGFpbnRGbGFncyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWaWV3LmNwcAppbmRleCAxNzM4YThiNmU3NTg1MTVmNTNkNzdiNjY4NDA3YzE3OWRm
NWVkM2VmLi42MGZmYjE3MDY1YzMwYjc5NDNiOTNlOGNmYTc1MjU0MjkyYzBiZGY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgdm9p
ZCBSZW5kZXJWaWV3OjpsYXlvdXQoKQogICAgIGlmICghbmVlZHNMYXlvdXQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgTGF5b3V0U3RhdGVNYWludGFpbmVyIHN0YXRlUHVzaGVyKCp0aGlzLCB7
IH0sIGZhbHNlLCBtX3BhZ2VMb2dpY2FsU2l6ZS52YWx1ZV9vcihMYXlvdXRTaXplKCkpLmhlaWdo
dCgpLCBtX3BhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZCk7CisgICAgTGF5b3V0U3RhdGVNYWludGFp
bmVyIHN0YXRlUHVzaGVyKCp0aGlzLCB7IH0sIGZhbHNlLCB2YWx1ZU9yRGVmYXVsdChtX3BhZ2VM
b2dpY2FsU2l6ZSkuaGVpZ2h0KCksIG1fcGFnZUxvZ2ljYWxIZWlnaHRDaGFuZ2VkKTsKIAogICAg
IG1fcGFnZUxvZ2ljYWxIZWlnaHRDaGFuZ2VkID0gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvTGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL0xlZ2FjeVJlbmRlclNWR1Jvb3QuY3BwCmluZGV4IGU4MDgy
NjU5YjJmNDAyMGUyMTI3YWI0OWU0ODc5ZTYxMjA5YmM0MTQuLjQ3NDY3Zjc4MzgwNjRiMWQ0Yjg1
NWJiOTFlYTFhZDRkZDljOTYxN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvTGVnYWN5UmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdSb290LmNwcApAQCAtNDI5LDcgKzQyOSw3IEBAIGJvb2wg
TGVnYWN5UmVuZGVyU1ZHUm9vdDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJl
cXVlc3QsIEhpdFRlc3RSZXN1CiAgICAgLy8gVGVzdCBTVkcgY29udGVudCBpZiB0aGUgcG9pbnQg
aXMgaW4gb3VyIGNvbnRlbnQgYm94IG9yIGl0IGlzIGluc2lkZSB0aGUgdmlzdWFsT3ZlcmZsb3dS
ZWN0IGFuZCB0aGUgb3ZlcmZsb3cgaXMgdmlzaWJsZS4KICAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQgYmUgYW4gaW50ZXJzZWN0aW9uIHdoZW4gcmVjdC1iYXNlZCBoaXQgdGVzdHMgYXJlIHN1cHBv
cnRlZCBieSBub2RlQXRGbG9hdFBvaW50LgogICAgIGlmIChjb250ZW50Qm94UmVjdCgpLmNvbnRh
aW5zKHBvaW50SW5Cb3JkZXJCb3gpIHx8ICghc2hvdWxkQXBwbHlWaWV3cG9ydENsaXAoKSAmJiB2
aXN1YWxPdmVyZmxvd1JlY3QoKS5jb250YWlucyhwb2ludEluUGFyZW50KSkpIHsKLSAgICAgICAg
RmxvYXRQb2ludCBsb2NhbFBvaW50ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLmludmVyc2Uo
KS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFwUG9pbnQoRmxvYXRQb2ludChwb2ludElu
UGFyZW50KSk7CisgICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IHZhbHVlT3JEZWZhdWx0
KGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkpLm1hcFBvaW50KEZsb2F0UG9pbnQo
cG9pbnRJblBhcmVudCkpOwogCiAgICAgICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IGxh
c3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+cHJldmlvdXNTaWJsaW5nKCkpIHsKICAg
ICAgICAgICAgIC8vIEZJWE1FOiBub2RlQXRGbG9hdFBvaW50KCkgZG9lc24ndCBoYW5kbGUgcmVj
dC1iYXNlZCBoaXQgdGVzdHMgeWV0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9MZWdhY3lSZW5kZXJTVkdTaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL0xlZ2FjeVJlbmRlclNWR1NoYXBlLmNwcAppbmRleCA5NTVjZjM4ZmMxYjk4ZWFjZjhi
YjBmM2Q4MTI4ZmI1ZWE5OWIzZTYzLi45ODY0ZGY4Y2ZhMzgxOTM0MzNlNzU2MDVjOWQwYjY3ZGI4
YWNiZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL0xlZ2FjeVJl
bmRlclNWR1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL0xlZ2Fj
eVJlbmRlclNWR1NoYXBlLmNwcApAQCAtMzQ3LDcgKzM0Nyw3IEBAIGJvb2wgTGVnYWN5UmVuZGVy
U1ZHU2hhcGU6Om5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3Qs
IEhpdFRlCiAgICAgaWYgKGhpdFRlc3RBY3Rpb24gIT0gSGl0VGVzdEZvcmVncm91bmQpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IG1fbG9jYWxU
cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChw
b2ludEluUGFyZW50KTsKKyAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSB2YWx1ZU9yRGVmYXVs
dChtX2xvY2FsVHJhbnNmb3JtLmludmVyc2UoKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CiAK
ICAgICBpZiAoIVNWR1JlbmRlclN1cHBvcnQ6OnBvaW50SW5DbGlwcGluZ0FyZWEoKnRoaXMsIGxv
Y2FsUG9pbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKaW5kZXggOGIwNTc0YjdmNzQx
MTQ5MTA0YTMyM2Q2YmUyNjZkNDIzOGQ4ZmM4MC4uYzBkMjU3NGI2Yjk1OWE0NWY0Mjg4ZmEwNGU2
YzRjZDQyZmIxZGU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHQ29udGFpbmVyLmNwcApAQCAtMTYxLDcgKzE2MSw3IEBAIGJvb2wgUmVuZGVyU1ZH
Q29udGFpbmVyOjpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0
LCBIaXRUZXN0CiAgICAgaWYgKCFwb2ludElzSW5zaWRlVmlld3BvcnRDbGlwKHBvaW50SW5QYXJl
bnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQg
PSBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5z
Zm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKKyAgICBGbG9hdFBvaW50IGxvY2FsUG9p
bnQgPSB2YWx1ZU9yRGVmYXVsdChsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgpKS5t
YXBQb2ludChwb2ludEluUGFyZW50KTsKIAogICAgIGlmICghU1ZHUmVuZGVyU3VwcG9ydDo6cG9p
bnRJbkNsaXBwaW5nQXJlYSgqdGhpcywgbG9jYWxQb2ludCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9y
ZWlnbk9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Zv
cmVpZ25PYmplY3QuY3BwCmluZGV4IGE1ZGIxYmUyNjk5NDczMmE3YzY5MGU2ZWI0OGZhNmExYzky
MjkxYWYuLjAxMjk5MThiMWE5MzNhODhkNjMxZTFmZmRlYTJkYjY5MWU5ZjA2MTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2Jq
ZWN0LmNwcApAQCAtMTY5LDcgKzE2OSw3IEBAIGJvb2wgUmVuZGVyU1ZHRm9yZWlnbk9iamVjdDo6
bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0CiAgICAg
aWYgKGhpdFRlc3RBY3Rpb24gIT0gSGl0VGVzdEZvcmVncm91bmQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IGxvY2FsVHJhbnNmb3JtKCkuaW52
ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50
KTsKKyAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSB2YWx1ZU9yRGVmYXVsdChsb2NhbFRyYW5z
Zm9ybSgpLmludmVyc2UoKSkubWFwUG9pbnQocG9pbnRJblBhcmVudCk7CiAKICAgICAvLyBFYXJs
eSBleGl0IGlmIGxvY2FsIHBvaW50IGlzIG5vdCBjb250YWluZWQgaW4gY2xpcHBlZCB2aWV3cG9y
dCBhcmVhCiAgICAgaWYgKFNWR1JlbmRlclN1cHBvcnQ6OmlzT3ZlcmZsb3dIaWRkZW4oKnRoaXMp
ICYmICFtX3ZpZXdwb3J0LmNvbnRhaW5zKGxvY2FsUG9pbnQpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAppbmRleCBhMjNiNDkxMjM3NjY4YTlj
YzA1NzFiMTEzMDhiYWM4MzgwYjllOWRkLi42MWRjNjc4YjkyMWQwZjdhNTdmNjUzMDViODY5NDAy
MTE5OTE1YzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0ltYWdlLmNwcApAQCAtMjE5LDcgKzIxOSw3IEBAIGJvb2wgUmVuZGVyU1ZHSW1hZ2U6Om5vZGVB
dEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1CiAg
ICAgUG9pbnRlckV2ZW50c0hpdFJ1bGVzIGhpdFJ1bGVzKFBvaW50ZXJFdmVudHNIaXRSdWxlczo6
U1ZHX0lNQUdFX0hJVFRFU1RJTkcsIHJlcXVlc3QsIHN0eWxlKCkucG9pbnRlckV2ZW50cygpKTsK
ICAgICBib29sIGlzVmlzaWJsZSA9IChzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5
OjpWaXNpYmxlKTsKICAgICBpZiAoaXNWaXNpYmxlIHx8ICFoaXRSdWxlcy5yZXF1aXJlVmlzaWJs
ZSkgewotICAgICAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBsb2NhbFRvUGFyZW50VHJhbnNm
b3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2lu
dEluUGFyZW50KTsKKyAgICAgICAgRmxvYXRQb2ludCBsb2NhbFBvaW50ID0gdmFsdWVPckRlZmF1
bHQobG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLmludmVyc2UoKSkubWFwUG9pbnQocG9pbnRJblBh
cmVudCk7CiAgICAgICAgICAgICAKICAgICAgICAgaWYgKCFTVkdSZW5kZXJTdXBwb3J0Ojpwb2lu
dEluQ2xpcHBpbmdBcmVhKCp0aGlzLCBsb2NhbFBvaW50KSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VDbGlwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAppbmRleCA1ZjYwYWVmNWI5MDMyNWIwMWEwZDhhY2M5MGI4
M2Y0YzI4ZjEwODk5Li41MzUzZTBiZWI0OTZiODc3OTE3ZWJjYTI5OGQ3OWE3M2I2ZmM1NDAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
Q2xpcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXIuY3BwCkBAIC0yODUsMTAgKzI4NSwxMCBAQCBib29sIFJlbmRlclNWR1Jl
c291cmNlQ2xpcHBlcjo6aGl0VGVzdENsaXBDb250ZW50KGNvbnN0IEZsb2F0UmVjdCYgb2JqZWN0
Qm91bmRpbgogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwogICAgICAgICB0cmFu
c2Zvcm0udHJhbnNsYXRlKG9iamVjdEJvdW5kaW5nQm94LmxvY2F0aW9uKCkpOwogICAgICAgICB0
cmFuc2Zvcm0uc2NhbGUob2JqZWN0Qm91bmRpbmdCb3guc2l6ZSgpKTsKLSAgICAgICAgcG9pbnQg
PSB0cmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2lu
dChwb2ludCk7CisgICAgICAgIHBvaW50ID0gdmFsdWVPckRlZmF1bHQodHJhbnNmb3JtLmludmVy
c2UoKSkubWFwUG9pbnQocG9pbnQpOwogICAgIH0KIAotICAgIHBvaW50ID0gY2xpcFBhdGhFbGVt
ZW50KCkuYW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVU
cmFuc2Zvcm0oKSkubWFwUG9pbnQocG9pbnQpOworICAgIHBvaW50ID0gdmFsdWVPckRlZmF1bHQo
Y2xpcFBhdGhFbGVtZW50KCkuYW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpLmludmVyc2UoKSkubWFw
UG9pbnQocG9pbnQpOwogCiAgICAgZm9yIChOb2RlKiBjaGlsZE5vZGUgPSBjbGlwUGF0aEVsZW1l
bnQoKS5maXJzdENoaWxkKCk7IGNoaWxkTm9kZTsgY2hpbGROb2RlID0gY2hpbGROb2RlLT5uZXh0
U2libGluZygpKSB7CiAgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBjaGlsZE5vZGUt
PnJlbmRlcmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
b290LmNwcAppbmRleCA1NThiMWIwYjExYjMzMzk4MmIzY2VhMTRhMzZlNDk0M2RiNGE1NTRhLi4x
MTRhZTE1M2VkMGJkY2UyNGY0N2ZkOWNjZGY1NzhkYTVlYzU0NDQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKQEAgLTQxOCw3ICs0MTgsNyBA
QCBMYXlvdXRSZWN0IFJlbmRlclNWR1Jvb3Q6OmNsaXBwZWRPdmVyZmxvd1JlY3QoY29uc3QgUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYQogICAgIGlmIChzdHlsZSgpLnZpc2liaWxpdHkoKSAh
PSBWaXNpYmlsaXR5OjpWaXNpYmxlICYmICFlbmNsb3NpbmdMYXllcigpLT5oYXNWaXNpYmxlQ29u
dGVudCgpKQogICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwogCi0gICAgYXV0byByZXBhaW50
UmVjdCA9IExheW91dFJlY3QobV92aWV3Qm94VHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihB
ZmZpbmVUcmFuc2Zvcm0oKSkubWFwUmVjdChib3JkZXJCb3hSZWN0KCkpKTsKKyAgICBhdXRvIHJl
cGFpbnRSZWN0ID0gTGF5b3V0UmVjdCh2YWx1ZU9yRGVmYXVsdChtX3ZpZXdCb3hUcmFuc2Zvcm0u
aW52ZXJzZSgpKS5tYXBSZWN0KGJvcmRlckJveFJlY3QoKSkpOwogICAgIHJldHVybiBjb21wdXRl
UmVjdChyZXBhaW50UmVjdCwgcmVwYWludENvbnRhaW5lciwgY29udGV4dCk7CiB9CiAKQEAgLTYy
OCw3ICs2MjgsNyBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6OmFwcGx5VHJhbnNmb3JtKFRyYW5zZm9y
bWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IFJlbmRlcgogCiB2b2lkIFJlbmRlclNWR1Jv
b3Q6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9p
bnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdAogewotICAgIGF1dG8gbG9jYWxSZWN0ID0gTGF5
b3V0UmVjdChtX3N1cHBsZW1lbnRhbExvY2FsVG9QYXJlbnRUcmFuc2Zvcm0uaW52ZXJzZSgpLnZh
bHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKS5tYXBSZWN0KGJvcmRlckJveFJlY3QoKSkpOworICAg
IGF1dG8gbG9jYWxSZWN0ID0gTGF5b3V0UmVjdCh2YWx1ZU9yRGVmYXVsdChtX3N1cHBsZW1lbnRh
bExvY2FsVG9QYXJlbnRUcmFuc2Zvcm0uaW52ZXJzZSgpKS5tYXBSZWN0KGJvcmRlckJveFJlY3Qo
KSkpOwogICAgIHJlY3RzLmFwcGVuZChzbmFwcGVkSW50UmVjdChhY2N1bXVsYXRlZE9mZnNldCwg
bG9jYWxSZWN0LnNpemUoKSkpOwogfQogCkBAIC02MzgsNyArNjM4LDcgQEAgdm9pZCBSZW5kZXJT
VkdSb290OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2Fz
Rml4ZWQpIGNvbnMKICAgICBpZiAoZnJhZ21lbnRlZEZsb3cgJiYgZnJhZ21lbnRlZEZsb3ctPmFi
c29sdXRlUXVhZHNGb3JCb3gocXVhZHMsIHdhc0ZpeGVkLCB0aGlzKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgYXV0byBsb2NhbFJlY3QgPSBGbG9hdFJlY3QobV9zdXBwbGVtZW50YWxMb2NhbFRv
UGFyZW50VHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFw
UmVjdChib3JkZXJCb3hSZWN0KCkpKTsKKyAgICBhdXRvIGxvY2FsUmVjdCA9IEZsb2F0UmVjdCh2
YWx1ZU9yRGVmYXVsdChtX3N1cHBsZW1lbnRhbExvY2FsVG9QYXJlbnRUcmFuc2Zvcm0uaW52ZXJz
ZSgpKS5tYXBSZWN0KGJvcmRlckJveFJlY3QoKSkpOwogICAgIHF1YWRzLmFwcGVuZChsb2NhbFRv
QWJzb2x1dGVRdWFkKGxvY2FsUmVjdCwgVXNlVHJhbnNmb3Jtcywgd2FzRml4ZWQpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKaW5kZXgg
NjNhY2FlY2Y5NTY3NDNjZWViNjEyMDA1ZDZkNzk3MjZhODI5OTNmNy4uMWRiMGVhNzUwZDU1NGNk
M2VlYzExNGNjMzYyNjFlYThhZTRiNWM4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCkBAIC00MDksNyArNDA5LDcgQEAgYm9vbCBSZW5kZXJT
VkdUZXh0Ojpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBI
aXRUZXN0UmVzdWwKICAgICBpZiAoaXNWaXNpYmxlIHx8ICFoaXRSdWxlcy5yZXF1aXJlVmlzaWJs
ZSkgewogICAgICAgICBpZiAoKGhpdFJ1bGVzLmNhbkhpdFN0cm9rZSAmJiAoc3R5bGUoKS5zdmdT
dHlsZSgpLmhhc1N0cm9rZSgpIHx8ICFoaXRSdWxlcy5yZXF1aXJlU3Ryb2tlKSkKICAgICAgICAg
ICAgIHx8IChoaXRSdWxlcy5jYW5IaXRGaWxsICYmIChzdHlsZSgpLnN2Z1N0eWxlKCkuaGFzRmls
bCgpIHx8ICFoaXRSdWxlcy5yZXF1aXJlRmlsbCkpKSB7Ci0gICAgICAgICAgICBGbG9hdFBvaW50
IGxvY2FsUG9pbnQgPSBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlX29y
KEFmZmluZVRyYW5zZm9ybSgpKS5tYXBQb2ludChwb2ludEluUGFyZW50KTsKKyAgICAgICAgICAg
IEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IHZhbHVlT3JEZWZhdWx0KGxvY2FsVG9QYXJlbnRUcmFu
c2Zvcm0oKS5pbnZlcnNlKCkpLm1hcFBvaW50KHBvaW50SW5QYXJlbnQpOwogCiAgICAgICAgICAg
ICBpZiAoIVNWR1JlbmRlclN1cHBvcnQ6OnBvaW50SW5DbGlwcGluZ0FyZWEoKnRoaXMsIGxvY2Fs
UG9pbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgICAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAppbmRleCBmOWQ0
N2UxNDM4ZTdkNzAwMjZhMDM5ZjRiMTJiZjY4MmU5OTljNDc1Li43NGNlY2M0MWY4NTkzNmEwYTNh
Mzc4ZDEzYTNkZDA0YTgzNmQxZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKQEAgLTQyMSw3ICs0MjEsNyBAQCB2b2lkIFNWR1Jl
bmRlclN1cHBvcnQ6OmNsaXBDb250ZXh0VG9DU1NDbGlwcGluZ0FyZWEoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjbwogICAgICAgICByZWZlcmVuY2VCb3ggPSBsb2NhbFRvUGFyZW50VHJhbnNm
b3JtLm1hcFJlY3QocmVmZXJlbmNlQm94KTsKIAogICAgICAgICBhdXRvIHBhdGggPSBjbGlwUGF0
aC5wYXRoRm9yUmVmZXJlbmNlUmVjdChyZWZlcmVuY2VCb3gpOwotICAgICAgICBwYXRoLnRyYW5z
Zm9ybShsb2NhbFRvUGFyZW50VHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFu
c2Zvcm0oKSkpOworICAgICAgICBwYXRoLnRyYW5zZm9ybSh2YWx1ZU9yRGVmYXVsdChsb2NhbFRv
UGFyZW50VHJhbnNmb3JtLmludmVyc2UoKSkpOwogCiAgICAgICAgIGNvbnRleHQuY2xpcFBhdGgo
cGF0aCwgY2xpcFBhdGgud2luZFJ1bGUoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNzdlMTI2ZTY2
NGEwMjIxMGE0ZjlkZTdlYzE2MjkwODViZjIwMjFkMy4uYTI5MWNlZDIzNWU2YWU0NjE0NjRlZjE0
NzljNTU4ZmYwMGJhY2E3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0zMDcsNyArMzA3LDcgQEAgdm9pZCBTVkdS
ZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEFmZmkKIAogICAgIC8vIFRoZSBtYXNrIGltYWdlIGhhcyBiZWVuIGNyZWF0ZWQg
aW4gdGhlIGFic29sdXRlIGNvb3JkaW5hdGUgc3BhY2UsIGFzIHRoZSBpbWFnZSBzaG91bGQgbm90
IGJlIHNjYWxlZC4KICAgICAvLyBTbyB0aGUgYWN0dWFsIG1hc2tpbmcgcHJvY2VzcyBoYXMgdG8g
YmUgZG9uZSBpbiB0aGUgYWJzb2x1dGUgY29vcmRpbmF0ZSBzcGFjZSBhcyB3ZWxsLgotICAgIGNv
bnRleHQuY29uY2F0Q1RNKGFic29sdXRlVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZp
bmVUcmFuc2Zvcm0oKSkpOworICAgIGNvbnRleHQuY29uY2F0Q1RNKHZhbHVlT3JEZWZhdWx0KGFi
c29sdXRlVHJhbnNmb3JtLmludmVyc2UoKSkpOwogICAgIGNvbnRleHQuY2xpcFRvSW1hZ2VCdWZm
ZXIoKmltYWdlQnVmZmVyLCBhYnNvbHV0ZVRhcmdldFJlY3QpOwogICAgIGNvbnRleHQuY29uY2F0
Q1RNKGFic29sdXRlVHJhbnNmb3JtKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlTW90aW9uRWxlbWVudC5jcHAKaW5kZXggOTBiNzY5M2U4YTMzM2YxOTllZTNiZDMwMTVhZDkz
NmUwYTA0M2Q3MC4uZjUyOTk5NjY2YTgxYmZkNTQwYWRmZTNjNDdmMDk5ZThiM2RmYTljMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCkBAIC0x
NjEsMTUgKzE2MSwxNSBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpzdG9wQW5pbWF0
aW9uKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpCiAKIGJvb2wgU1ZHQW5pbWF0ZU1vdGlvbkVs
ZW1lbnQ6OmNhbGN1bGF0ZVRvQXRFbmRPZkR1cmF0aW9uVmFsdWUoY29uc3QgU3RyaW5nJiB0b0F0
RW5kT2ZEdXJhdGlvblN0cmluZykKIHsKLSAgICBtX3RvUG9pbnRBdEVuZE9mRHVyYXRpb24gPSBw
YXJzZVBvaW50KHRvQXRFbmRPZkR1cmF0aW9uU3RyaW5nKS52YWx1ZV9vcihGbG9hdFBvaW50IHsg
fSk7CisgICAgbV90b1BvaW50QXRFbmRPZkR1cmF0aW9uID0gdmFsdWVPckRlZmF1bHQocGFyc2VQ
b2ludCh0b0F0RW5kT2ZEdXJhdGlvblN0cmluZykpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBi
b29sIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoY29u
c3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKQogewogICAgIG1f
dG9Qb2ludEF0RW5kT2ZEdXJhdGlvbiA9IHN0ZDo6bnVsbG9wdDsKLSAgICBtX2Zyb21Qb2ludCA9
IHBhcnNlUG9pbnQoZnJvbVN0cmluZykudmFsdWVfb3IoRmxvYXRQb2ludCB7IH0pOwotICAgIG1f
dG9Qb2ludCA9IHBhcnNlUG9pbnQodG9TdHJpbmcpLnZhbHVlX29yKEZsb2F0UG9pbnQgeyB9KTsK
KyAgICBtX2Zyb21Qb2ludCA9IHZhbHVlT3JEZWZhdWx0KHBhcnNlUG9pbnQoZnJvbVN0cmluZykp
OworICAgIG1fdG9Qb2ludCA9IHZhbHVlT3JEZWZhdWx0KHBhcnNlUG9pbnQodG9TdHJpbmcpKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KICAgICAKQEAgLTE3OCw4ICsxNzgsOCBAQCBib29sIFNWR0Fu
aW1hdGVNb3Rpb25FbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoY29uc3QgU3RyaW5n
JiBmcm9tU3RyaW5nLAogICAgIG1fdG9Qb2ludEF0RW5kT2ZEdXJhdGlvbiA9IHN0ZDo6bnVsbG9w
dDsKICAgICBpZiAoYW5pbWF0aW9uTW9kZSgpID09IEFuaW1hdGlvbk1vZGU6OkJ5ICYmICFpc0Fk
ZGl0aXZlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX2Zyb21Qb2ludCA9IHBhcnNl
UG9pbnQoZnJvbVN0cmluZykudmFsdWVfb3IoRmxvYXRQb2ludCB7IH0pOwotICAgIGF1dG8gYnlQ
b2ludCA9IHBhcnNlUG9pbnQoYnlTdHJpbmcpLnZhbHVlX29yKEZsb2F0UG9pbnQgeyB9KTsKKyAg
ICBtX2Zyb21Qb2ludCA9IHZhbHVlT3JEZWZhdWx0KHBhcnNlUG9pbnQoZnJvbVN0cmluZykpOwor
ICAgIGF1dG8gYnlQb2ludCA9IHZhbHVlT3JEZWZhdWx0KHBhcnNlUG9pbnQoYnlTdHJpbmcpKTsK
ICAgICBtX3RvUG9pbnQgPSBGbG9hdFBvaW50KG1fZnJvbVBvaW50LngoKSArIGJ5UG9pbnQueCgp
LCBtX2Zyb21Qb2ludC55KCkgKyBieVBvaW50LnkoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAKaW5kZXggNTVl
MzE4MjlkZWE0YjdhY2QxMDE1NjU4YjM5ZTRjZTNkYWJiZjQ0Mi4uYzY3MWMzNzBmMzRjZjUwNzZm
ZWUyNGMxOTI1ZDhkOTYyMTQ3MjA0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RvT1RGRm9udENvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09U
RkZvbnRDb252ZXJzaW9uLmNwcApAQCAtMTI5Miw3ICsxMjkyLDcgQEAgdm9pZCBTVkdUb09URkZv
bnRDb252ZXJ0ZXI6OnByb2Nlc3NHbHlwaEVsZW1lbnQoY29uc3QgU1ZHRWxlbWVudCYgZ2x5cGhP
ck1pc3NpbmcKICAgICBpZiAoZ2x5cGhCb3VuZGluZ0JveCkKICAgICAgICAgbV9taW5SaWdodFNp
ZGVCZWFyaW5nID0gc3RkOjptaW4obV9taW5SaWdodFNpZGVCZWFyaW5nLCBob3Jpem9udGFsQWR2
YW5jZSAtIGdseXBoQm91bmRpbmdCb3gudmFsdWUoKS5tYXhYKCkpOwogCi0gICAgbV9nbHlwaHMu
YXBwZW5kKEdseXBoRGF0YShXVEZNb3ZlKHBhdGgpLCBnbHlwaEVsZW1lbnQsIGhvcml6b250YWxB
ZHZhbmNlLCB2ZXJ0aWNhbEFkdmFuY2UsIGdseXBoQm91bmRpbmdCb3gudmFsdWVfb3IoRmxvYXRS
ZWN0KCkpLCBjb2RlcG9pbnRzKSk7CisgICAgbV9nbHlwaHMuYXBwZW5kKEdseXBoRGF0YShXVEZN
b3ZlKHBhdGgpLCBnbHlwaEVsZW1lbnQsIGhvcml6b250YWxBZHZhbmNlLCB2ZXJ0aWNhbEFkdmFu
Y2UsIHZhbHVlT3JEZWZhdWx0KGdseXBoQm91bmRpbmdCb3gpLCBjb2RlcG9pbnRzKSk7CiB9CiAK
IHZvaWQgU1ZHVG9PVEZGb250Q29udmVydGVyOjphcHBlbmRMaWdhdHVyZUdseXBocygpCkBAIC0x
NDE2LDcgKzE0MTYsNyBAQCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OlNWR1RvT1RGRm9udENvbnZl
cnRlcihjb25zdCBTVkdGb250RWxlbWVudCYgZm9udEVsZW1lbnQpCiAgICAgICAgICAgICBwcm9j
ZXNzR2x5cGhFbGVtZW50KGdseXBoRWxlbWVudCwgJmdseXBoRWxlbWVudCwgZGVmYXVsdEhvcml6
b250YWxBZHZhbmNlLCBkZWZhdWx0VmVydGljYWxBZHZhbmNlLCB1bmljb2RlQXR0cmlidXRlLCBi
b3VuZGluZ0JveCk7CiAgICAgfQogCi0gICAgbV9ib3VuZGluZ0JveCA9IGJvdW5kaW5nQm94LnZh
bHVlX29yKEZsb2F0UmVjdCgpKTsKKyAgICBtX2JvdW5kaW5nQm94ID0gdmFsdWVPckRlZmF1bHQo
Ym91bmRpbmdCb3gpOwogCiAgICAgYXBwZW5kTGlnYXR1cmVHbHlwaHMoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VHJhaXRzLmgKaW5kZXggMTEw
NGQ5M2E3MTNiOWQ1MGIzMWFjN2Q0MmZiOTU2NTYyNGY1YTllYy4uZmMxNzc5MGZjNGU2YjU1NjQ3
OTQyNDM1YWQxZThhMmFiZjMwZjUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHUHJvcGVydHlUcmFpdHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdQcm9wZXJ0eVRyYWl0cy5oCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RydWN0IFNW
R1Byb3BlcnR5VHJhaXRzPHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+PiB7CiAgICAgc3RhdGljIHN0
ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIHsgfTsgfQogICAg
IHN0YXRpYyBzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYg
c3RyaW5nKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHBhcnNlTnVtYmVyT3B0aW9uYWxOdW1iZXIo
c3RyaW5nKS52YWx1ZV9vcihzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiB7IH0pOworICAgICAgICBy
ZXR1cm4gdmFsdWVPckRlZmF1bHQocGFyc2VOdW1iZXJPcHRpb25hbE51bWJlcihzdHJpbmcpKTsK
ICAgICB9CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4+
IHBhcnNlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBTdHJpbmcmKSB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyByZXR1cm4gaW5pdGlhbFZhbHVlKCk7IH0KICAgICBzdGF0aWMgU3RyaW5nIHRv
U3RyaW5nKHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQpAQCAtMTE1LDcgKzExNSw3IEBAIHN0cnVjdCBTVkdQcm9w
ZXJ0eVRyYWl0czxGbG9hdFBvaW50PiB7CiAgICAgc3RhdGljIEZsb2F0UG9pbnQgaW5pdGlhbFZh
bHVlKCkgeyByZXR1cm4gRmxvYXRQb2ludCgpOyB9CiAgICAgc3RhdGljIEZsb2F0UG9pbnQgZnJv
bVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICB7Ci0gICAgICAgIHJldHVybiBwYXJz
ZVBvaW50KHN0cmluZykudmFsdWVfb3IoRmxvYXRQb2ludCB7IH0pOworICAgICAgICByZXR1cm4g
dmFsdWVPckRlZmF1bHQocGFyc2VQb2ludChzdHJpbmcpKTsKICAgICB9CiAgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gcGFyc2UoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IFN0cmluZyYgc3RyaW5nKQogICAgIHsKQEAgLTEzMiw3ICsxMzIsNyBAQCBzdHJ1Y3QgU1ZHUHJv
cGVydHlUcmFpdHM8RmxvYXRSZWN0PiB7CiAgICAgc3RhdGljIEZsb2F0UmVjdCBpbml0aWFsVmFs
dWUoKSB7IHJldHVybiBGbG9hdFJlY3QoKTsgfQogICAgIHN0YXRpYyBGbG9hdFJlY3QgZnJvbVN0
cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICB7Ci0gICAgICAgIHJldHVybiBwYXJzZVJl
Y3Qoc3RyaW5nKS52YWx1ZV9vcihGbG9hdFJlY3QgeyB9KTsKKyAgICAgICAgcmV0dXJuIHZhbHVl
T3JEZWZhdWx0KHBhcnNlUmVjdChzdHJpbmcpKTsKICAgICB9CiAgICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8RmxvYXRSZWN0PiBwYXJzZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgU3RyaW5n
JiBzdHJpbmcpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDkw
YzcxMDIzYThkOGUzMmU0NzNjMTYzNjk5YThkNTg1ZWEwMTc5NzguLjg3ZGVlNWJhOWM4MTNkYmZk
ZWQ5ODMzYTA1YzQ3MGVhMzBhNTJhMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKQEAgLTI3OTQsMTMgKzI3OTQsMTMgQEAgYm9vbCBJbnRlcm5hbHM6OmlzRWxlbWVudEFsaXZl
KERvY3VtZW50JiBkb2N1bWVudCwgdWludDY0X3QgZWxlbWVudElkZW50aWZpZXIpIGMKIHVpbnQ2
NF90IEludGVybmFsczo6ZnJhbWVJZGVudGlmaWVyKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkg
Y29uc3QKIHsKICAgICBpZiAoYXV0byogcGFnZSA9IGRvY3VtZW50LnBhZ2UoKSkKLSAgICAgICAg
cmV0dXJuIHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmZyYW1lSUQoKS52YWx1ZV9vcihGcmFt
ZUlkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgpOworICAgICAgICByZXR1cm4gdmFsdWVPckRlZmF1
bHQocGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuZnJhbWVJRCgpKS50b1VJbnQ2NCgpOwogICAg
IHJldHVybiAwOwogfQogCiB1aW50NjRfdCBJbnRlcm5hbHM6OnBhZ2VJZGVudGlmaWVyKGNvbnN0
IERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKIHsKLSAgICByZXR1cm4gZG9jdW1lbnQucGFnZUlE
KCkudmFsdWVfb3IoUGFnZUlkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgpOworICAgIHJldHVybiB2
YWx1ZU9yRGVmYXVsdChkb2N1bWVudC5wYWdlSUQoKSkudG9VSW50NjQoKTsKIH0KIAogYm9vbCBJ
bnRlcm5hbHM6OmlzQW55V29ya2xldEdsb2JhbFNjb3BlQWxpdmUoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3Jh
Z2UuY3BwCmluZGV4IDlhOGZiMzVjYTUzNjEwNWJiNmQ2ZmM0NmVlMTIyNDU5MzNmNzBiZjguLjc1
ZDk4YTkyNjc2ODUwY2VjYjI0Yjk4OTJkMGQzNmEzMGE2MmIyMzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5j
cHAKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkVXNlRmlsZU1hcHBpbmcodWlu
dDY0X3QgZmlsZVNpemUpCiAKIFNXU2NyaXB0U3RvcmFnZTo6U1dTY3JpcHRTdG9yYWdlKGNvbnN0
IFN0cmluZyYgZGlyZWN0b3J5KQogICAgIDogbV9kaXJlY3RvcnkoZGlyZWN0b3J5KQotICAgICwg
bV9zYWx0KEZpbGVTeXN0ZW06OnJlYWRPck1ha2VTYWx0KHNhbHRQYXRoKCkpLnZhbHVlX29yKEZp
bGVTeXN0ZW06OlNhbHQoKSkpCisgICAgLCBtX3NhbHQodmFsdWVPckRlZmF1bHQoRmlsZVN5c3Rl
bTo6cmVhZE9yTWFrZVNhbHQoc2FsdFBhdGgoKSkpKQogewogICAgIEFTU0VSVCghaXNNYWluVGhy
ZWFkKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA3YjY0ZWFjMGU2YTNh
OTAxMTRmYjgxOTg1MzRiNWRkOTJjYjlkYTJmLi4xZmE1NDI2NTAzMThkYzEyMGFlYTkyYTRkZjA4
Y2I1NWJiZWIyMzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNDk3LDcgKzQ5
Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y3JlYXRlRmV0CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnNjaGVkdWxlUmVzb3VyY2VMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMsIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Jlc291cmNlTG9h
ZElkZW50aWZpZXI+IGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUpCiB7Ci0gICAgQ09OTkVDVElPTl9S
RUxFQVNFX0xPRyhMb2FkaW5nLCAic2NoZWR1bGVSZXNvdXJjZUxvYWQ6IChwYXJlbnRQSUQ9JWQs
IHBhZ2VQcm94eUlEPSUiIFBSSXU2NCAiLCB3ZWJQYWdlSUQ9JSIgUFJJdTY0ICIsIGZyYW1lSUQ9
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQ9JSIgUFJJdTY0ICIsIGV4aXN0aW5nTG9hZGVyVG9SZXN1
bWU9JSIgUFJJdTY0ICIpIiwgbG9hZFBhcmFtZXRlcnMucGFyZW50UElELCBsb2FkUGFyYW1ldGVy
cy53ZWJQYWdlUHJveHlJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQudG9V
SW50NjQoKSwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1l
dGVycy5pZGVudGlmaWVyLnRvVUludDY0KCksIGV4aXN0aW5nTG9hZGVyVG9SZXN1bWUudmFsdWVf
b3IoTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgpKTsKKyAgICBD
T05ORUNUSU9OX1JFTEVBU0VfTE9HKExvYWRpbmcsICJzY2hlZHVsZVJlc291cmNlTG9hZDogKHBh
cmVudFBJRD0lZCwgcGFnZVByb3h5SUQ9JSIgUFJJdTY0ICIsIHdlYlBhZ2VJRD0lIiBQUkl1NjQg
IiwgZnJhbWVJRD0lIiBQUkl1NjQgIiwgcmVzb3VyY2VJRD0lIiBQUkl1NjQgIiwgZXhpc3RpbmdM
b2FkZXJUb1Jlc3VtZT0lIiBQUkl1NjQgIikiLCBsb2FkUGFyYW1ldGVycy5wYXJlbnRQSUQsIGxv
YWRQYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLndl
YlBhZ2VJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELnRvVUludDY0KCks
IGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIudG9VSW50NjQoKSwgdmFsdWVPckRlZmF1bHQoZXhp
c3RpbmdMb2FkZXJUb1Jlc3VtZSkudG9VSW50NjQoKSk7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IGIw
MTFhNThiYTBkYTVjMDZmNGI4ZWNjZDllOGE0OGJhMDZlZTBkOWMuLjdkNjMzNDNmMmY1OGM3OGY2
OTY1ZTcyNGQyMTI3MzAwMjBmNWQ4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC02MDcsNyArNjA3LDcgQEAgdm9pZCBOZXR3b3Jr
U2Vzc2lvbjo6dW5yZWdpc3RlclNXU2VydmVyQ29ubmVjdGlvbihXZWJTV1NlcnZlckNvbm5lY3Rp
b24mIGNvbm5lY3QKIFNXU2VydmVyJiBOZXR3b3JrU2Vzc2lvbjo6ZW5zdXJlU1dTZXJ2ZXIoKQog
ewogICAgIGlmICghbV9zd1NlcnZlcikgewotICAgICAgICBhdXRvIGluZm8gPSBtX3NlcnZpY2VX
b3JrZXJJbmZvLnZhbHVlX29yKFNlcnZpY2VXb3JrZXJJbmZvIHsgfSk7CisgICAgICAgIGF1dG8g
aW5mbyA9IHZhbHVlT3JEZWZhdWx0KG1fc2VydmljZVdvcmtlckluZm8pOwogICAgICAgICBhdXRv
IHBhdGggPSBpbmZvLmRhdGFiYXNlUGF0aDsKICAgICAgICAgLy8gVGhlcmUgc2hvdWxkIGFscmVh
ZHkgYmUgYSByZWdpc3RlcmVkIHBhdGggZm9yIHRoaXMgUEFMOjpTZXNzaW9uSUQuCiAgICAgICAg
IC8vIElmIHRoZXJlJ3Mgbm90LCB0aGVuIHdoZXJlIGRpZCB0aGlzIFBBTDo6U2Vzc2lvbklEIGNv
bWUgZnJvbT8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCmluZGV4IGM4NzVjOTM2NGVlMDUzNTI2
ZDNmOWU3YzM2Mjc1ZDkzMTljNWMxMGUuLjY1ZjBlNDUxMmNjYTg3MWI0NThlNzkyMDJmMWE5Mzg2
Yjg0MGZkZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcApAQCAtODQsNyArODQsNyBAQCBG
aWxlVGltZXMgZmlsZVRpbWVzKGNvbnN0IFN0cmluZyYgcGF0aCkKICNlbGlmIE9TKFdJTkRPV1Mp
CiAgICAgYXV0byBjcmVhdGVUaW1lID0gRmlsZVN5c3RlbTo6ZmlsZUNyZWF0aW9uVGltZShwYXRo
KTsKICAgICBhdXRvIG1vZGlmeVRpbWUgPSBGaWxlU3lzdGVtOjpmaWxlTW9kaWZpY2F0aW9uVGlt
ZShwYXRoKTsKLSAgICByZXR1cm4geyBjcmVhdGVUaW1lLnZhbHVlX29yKFdhbGxUaW1lKCkpLCBt
b2RpZnlUaW1lLnZhbHVlX29yKFdhbGxUaW1lKCkpIH07CisgICAgcmV0dXJuIHsgdmFsdWVPckRl
ZmF1bHQoY3JlYXRlVGltZSksIHZhbHVlT3JEZWZhdWx0KG1vZGlmeVRpbWUpIH07CiAjZW5kaWYK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL05l
dHdvcmtTdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCBlMjE4MTFlNzYyODU3OTQxMjM4
ZTg2NzE2NmJkNGI4N2EzMTg3ODNkLi45MzAwOWUyNDllZDFhNGM4OTdjYTkxOTBjM2YyNGQ1YTNj
NDU0ODVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtMTE4LDcgKzExOCw3IEBA
IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgU3RyCiAgICAgICAgIG1fY3VzdG9tTG9jYWxTdG9yYWdlUGF0
aCA9IGN1c3RvbUxvY2FsU3RvcmFnZVBhdGg7CiAgICAgICAgIGlmICghbV9wYXRoLmlzRW1wdHko
KSkgewogICAgICAgICAgICAgYXV0byBzYWx0UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChtX3BhdGgsICJzYWx0Iik7Ci0gICAgICAgICAgICBtX3NhbHQgPSBGaWxl
U3lzdGVtOjpyZWFkT3JNYWtlU2FsdChzYWx0UGF0aCkudmFsdWVfb3IoRmlsZVN5c3RlbTo6U2Fs
dCgpKTsKKyAgICAgICAgICAgIG1fc2FsdCA9IHZhbHVlT3JEZWZhdWx0KEZpbGVTeXN0ZW06OnJl
YWRPck1ha2VTYWx0KHNhbHRQYXRoKSk7CiAgICAgICAgIH0KICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVkSW5wdXREaXNw
YXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vU2ltdWxhdGVk
SW5wdXREaXNwYXRjaGVyLmNwcAppbmRleCBhOWY1NDg0M2ZkOWI5YjM1NmNkYjY2YWFiNDU4MDhk
MDkwYzkzZTliLi5lMDMzODFjZTUwMmU3ZDFlMzkxNTc0MzkyNzAxZWY4ZmQzN2JiMDdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1NpbXVsYXRlZElucHV0
RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9T
aW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBTaW11
bGF0ZWRJbnB1dERpc3BhdGNoZXI6OnRyYW5zaXRpb25JbnB1dFNvdXJjZVRvU3RhdGUoU2ltdWxh
dGVkSW5wdXRTb3VyY2UKICNpZiAhRU5BQkxFKFdFQkRSSVZFUl9NT1VTRV9JTlRFUkFDVElPTlMp
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZWxzZQotICAgICAgICBy
ZXNvbHZlTG9jYXRpb24oYS5sb2NhdGlvbi52YWx1ZV9vcihXZWJDb3JlOjpJbnRQb2ludCgpKSwg
Yi5sb2NhdGlvbiwgYi5vcmlnaW4udmFsdWVfb3IoTW91c2VNb3ZlT3JpZ2luOjpWaWV3cG9ydCks
IGIubm9kZUhhbmRsZSwgW3RoaXMsICZhLCAmYiwgaW5wdXRTb3VyY2UgPSBpbnB1dFNvdXJjZS50
eXBlLCBldmVudERpc3BhdGNoRmluaXNoZWQgPSBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hGaW5pc2hl
ZCldKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGxvY2F0aW9uLCBzdGQ6Om9wdGlv
bmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgcmVz
b2x2ZUxvY2F0aW9uKHZhbHVlT3JEZWZhdWx0KGEubG9jYXRpb24pLCBiLmxvY2F0aW9uLCBiLm9y
aWdpbi52YWx1ZV9vcihNb3VzZU1vdmVPcmlnaW46OlZpZXdwb3J0KSwgYi5ub2RlSGFuZGxlLCBb
dGhpcywgJmEsICZiLCBpbnB1dFNvdXJjZSA9IGlucHV0U291cmNlLnR5cGUsIGV2ZW50RGlzcGF0
Y2hGaW5pc2hlZCA9IFdURk1vdmUoZXZlbnREaXNwYXRjaEZpbmlzaGVkKV0oc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpJbnRQb2ludD4gbG9jYXRpb24sIHN0ZDo6b3B0aW9uYWw8QXV0b21hdGlvbkNv
bW1hbmRFcnJvcj4gZXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKGVycm9yKSB7CiAg
ICAgICAgICAgICAgICAgZXZlbnREaXNwYXRjaEZpbmlzaGVkKGVycm9yKTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CkBAIC0zMTYsNyArMzE2LDcgQEAgdm9pZCBTaW11bGF0ZWRJbnB1dERpc3Bh
dGNoZXI6OnRyYW5zaXRpb25JbnB1dFNvdXJjZVRvU3RhdGUoU2ltdWxhdGVkSW5wdXRTb3VyY2UK
ICNpZiAhRU5BQkxFKFdFQkRSSVZFUl9UT1VDSF9JTlRFUkFDVElPTlMpCiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZWxzZQotICAgICAgICByZXNvbHZlTG9jYXRpb24o
YS5sb2NhdGlvbi52YWx1ZV9vcihXZWJDb3JlOjpJbnRQb2ludCgpKSwgYi5sb2NhdGlvbiwgYi5v
cmlnaW4udmFsdWVfb3IoTW91c2VNb3ZlT3JpZ2luOjpWaWV3cG9ydCksIGIubm9kZUhhbmRsZSwg
W3RoaXMsICZhLCAmYiwgZXZlbnREaXNwYXRjaEZpbmlzaGVkID0gV1RGTW92ZShldmVudERpc3Bh
dGNoRmluaXNoZWQpXShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBsb2NhdGlvbiwg
c3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgbXV0YWJsZSB7Cisg
ICAgICAgIHJlc29sdmVMb2NhdGlvbih2YWx1ZU9yRGVmYXVsdChhLmxvY2F0aW9uKSwgYi5sb2Nh
dGlvbiwgYi5vcmlnaW4udmFsdWVfb3IoTW91c2VNb3ZlT3JpZ2luOjpWaWV3cG9ydCksIGIubm9k
ZUhhbmRsZSwgW3RoaXMsICZhLCAmYiwgZXZlbnREaXNwYXRjaEZpbmlzaGVkID0gV1RGTW92ZShl
dmVudERpc3BhdGNoRmluaXNoZWQpXShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBs
b2NhdGlvbiwgc3RkOjpvcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPiBlcnJvcikgbXV0
YWJsZSB7CiAgICAgICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgICBldmVudERp
c3BhdGNoRmluaXNoZWQoZXJyb3IpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTQyMiw3
ICs0MjIsNyBAQCB2b2lkIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcjo6dHJhbnNpdGlvbklucHV0
U291cmNlVG9TdGF0ZShTaW11bGF0ZWRJbnB1dFNvdXJjZQogI2lmICFFTkFCTEUoV0VCRFJJVkVS
X1dIRUVMX0lOVEVSQUNUSU9OUykKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICNlbHNlCi0gICAgICAgIHJlc29sdmVMb2NhdGlvbihhLmxvY2F0aW9uLnZhbHVlX29yKFdl
YkNvcmU6OkludFBvaW50KCkpLCBiLmxvY2F0aW9uLCBiLm9yaWdpbi52YWx1ZV9vcihNb3VzZU1v
dmVPcmlnaW46OlZpZXdwb3J0KSwgYi5ub2RlSGFuZGxlLCBbdGhpcywgJmEsICZiLCBldmVudERp
c3BhdGNoRmluaXNoZWQgPSBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCldKHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGxvY2F0aW9uLCBzdGQ6Om9wdGlvbmFsPEF1dG9tYXRp
b25Db21tYW5kRXJyb3I+IGVycm9yKSBtdXRhYmxlIHsKKyAgICAgICAgcmVzb2x2ZUxvY2F0aW9u
KHZhbHVlT3JEZWZhdWx0KGEubG9jYXRpb24pLCBiLmxvY2F0aW9uLCBiLm9yaWdpbi52YWx1ZV9v
cihNb3VzZU1vdmVPcmlnaW46OlZpZXdwb3J0KSwgYi5ub2RlSGFuZGxlLCBbdGhpcywgJmEsICZi
LCBldmVudERpc3BhdGNoRmluaXNoZWQgPSBXVEZNb3ZlKGV2ZW50RGlzcGF0Y2hGaW5pc2hlZCld
KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGxvY2F0aW9uLCBzdGQ6Om9wdGlvbmFs
PEF1dG9tYXRpb25Db21tYW5kRXJyb3I+IGVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlm
IChlcnJvcikgewogICAgICAgICAgICAgICAgIGV2ZW50RGlzcGF0Y2hGaW5pc2hlZChlcnJvcik7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQppbmRleCAzYTQwNWJiN2Fk
NmIyN2E1OWMwNThlYTZiODYwYjQyYTEzOTQ5ZmIxLi4xZjM1MGM0YmI4NTgyODVmZGM5M2M1Y2Iz
NDhkYWI3MTUxNTkzMmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHZv
aWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3RpCiAgICAgICAgICAgICAgICAgaWYgKCFbW05TRmlsZU1hbmFn
ZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZmlsZW5hbWVdKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHsgfTsKIAotICAgICAg
ICAgICAgICAgIHJldHVybiBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZmlsZW5hbWUs
IFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5KS52YWx1ZV9vcihTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUgeyB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVPckRlZmF1bHQo
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGVuYW1lLCBTYW5kYm94RXh0ZW5zaW9u
OjpUeXBlOjpSZWFkT25seSkpOwogICAgICAgICAgICAgfSk7CiAjZW5kaWYKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmlu
ZGV4IDJlMDZhZGRmN2U4NzU2NjMyMzQ0OGUxZmQzZDg5OTk4NzMxYTRkYjQuLmYzODEyMmEzNGEx
Y2JhOWM0ZjRhYmM2ODM1NDI1OTY5ZDQxMTczOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lk
IFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkRGF0YShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRp
b24sIGNvbnN0IElQQzo6RGF0YQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVx
dWVzdChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgc3RkOjpvcHRpb25h
bDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
biwgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywg
c3RkOjpvcHRpb25hbDxOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhpc3RpbmdOZXR3
b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKQogewotICAgIFBST1ZJU0lPTkFMUEFH
RVBST1hZX1JFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgImxvYWRSZXF1ZXN0OiBleGlzdGlu
Z05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWU9JSIgUFJJdTY0LCBleGlzdGlu
Z05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVyVG9SZXN1bWUudmFsdWVfb3IoTmV0d29ya1Jl
c291cmNlTG9hZElkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgpKTsKKyAgICBQUk9WSVNJT05BTFBB
R0VQUk9YWV9SRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICJsb2FkUmVxdWVzdDogZXhpc3Rp
bmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lPSUiIFBSSXU2NCwgdmFsdWVP
ckRlZmF1bHQoZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllclRvUmVzdW1lKS50
b1VJbnQ2NCgpKTsKICAgICBBU1NFUlQoc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkICE9IFdl
YkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8pOwogCiAgICAgLy8gSWYgdGhp
cyBpcyBhIGNsaWVudC1zaWRlIHJlZGlyZWN0IGNvbnRpbnVpbmcgaW4gYSBuZXcgcHJvY2Vzcywg
dGhlbiB0aGUgbmV3IHByb2Nlc3Mgd2lsbCBvdmVyd3JpdGUgdGhlIGZyb21JdGVtJ3MgVVJMLiBJ
biB0aGlzIGNhc2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDY2
YjQxMjY5MWNmNzQ0NzExNDQ4MDE0ZDU4OTkzN2Y2OWY2ODk3ZTAuLjMyYzU1NDMyNTg0N2E3YWJh
YjY4NjFlYTcxMDdjNWFjYTJjZmJiYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCkBAIC0xNDkyLDcgKzE0OTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBdXRvU2l6
aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0KGJvb2wpOwogCiAgICAgdm9pZCBzZXRWaWV3cG9y
dFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwotICAg
IFdlYkNvcmU6OkZsb2F0U2l6ZSB2aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKCkgY29u
c3QgeyByZXR1cm4gbV92aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzLnZhbHVlX29yKFdl
YkNvcmU6OkZsb2F0U2l6ZSgpKTsgfQorICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSB2aWV3cG9ydFNp
emVGb3JDU1NWaWV3cG9ydFVuaXRzKCkgY29uc3QgeyByZXR1cm4gdmFsdWVPckRlZmF1bHQobV92
aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKTsgfQogCiAgICAgdm9pZCBkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eShSZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQ
cm94eT4mJiwgTmVnb3RpYXRlZExlZ2FjeVRMUyk7CiAgICAgdm9pZCBuZWdvdGlhdGVkTGVnYWN5
VExTKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IGVk
YzUwOTBlY2YyOWMwMzJkM2MyZDc4NTU4ZjY2OWEzNmYwZDNkYmIuLmY1MTRiOTkxNmFkNDA4MmE3
ZjA3MWY2NTczNzhmZWYzZWQyMmE4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oCkBAIC0xNTQsNyArMTU0LDcgQEAgcHVibGljOgogICAgIFdlYlByb2Nlc3NQ
b29sJiBwcm9jZXNzUG9vbCgpIGNvbnN0OwogCiAgICAgYm9vbCBpc01hdGNoaW5nUmVnaXN0cmFi
bGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikgY29uc3Qg
eyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbiA/ICptX3JlZ2lzdHJhYmxlRG9tYWluID09IGRv
bWFpbiA6IGZhbHNlOyB9Ci0gICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFi
bGVEb21haW4oKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluLnZhbHVlX29yKFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgfSk7IH0KKyAgICBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0IHsgcmV0dXJuIHZhbHVlT3JEZWZhdWx0
KG1fcmVnaXN0cmFibGVEb21haW4pOyB9CiAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbj4mIG9wdGlvbmFsUmVnaXN0cmFibGVEb21haW4oKSBjb25zdCB7
IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluOyB9CiAKICAgICBlbnVtIGNsYXNzIFdpbGxTaHV0
RG93biA6IGJvb2wgeyBObywgWWVzIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDcxY2Y5MjA3ZWZk
OWNhMjk1YWI4OTBkNjc2ZTJkMzlkNDkyZDY2NTguLmJhNDMzYjgzZWJmYTFhODI5ODY0Y2UzMDBl
ZjhkNjU0NWYyYTdlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xODM3LDcgKzE4MzcsNyBAQCBX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkK
ICAgICBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBhcHBCb3VuZERvbWFpbnM7
CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIGlmIChpc0FwcEJvdW5kSVRQUmVs
YXhhdGlvbkVuYWJsZWQpCi0gICAgICAgIGFwcEJvdW5kRG9tYWlucyA9IGFwcEJvdW5kRG9tYWlu
c0lmSW5pdGlhbGl6ZWQoKS52YWx1ZV9vcihIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluPiB7IH0pOworICAgICAgICBhcHBCb3VuZERvbWFpbnMgPSB2YWx1ZU9yRGVmYXVsdChhcHBC
b3VuZERvbWFpbnNJZkluaXRpYWxpemVkKCkpOwogI2VuZGlmCiAgICAgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gcmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNl
OwogICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzIHJlc291cmNlTG9hZFN0YXRp
c3RpY3NQYXJhbWV0ZXJzID0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IGQ4NjI0M2Y1YTdmYTFhYTUxZmEx
YjBlMzJlODU5MTIzMDM4ZWFlZmMuLjZmNjc3ZWVmNGU2ODU5Y2U1ZDQwODBlMWVjOTVlN2I3Yjk1
MTQ3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxv
YWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIFdlYkxvYWRlclN0
cmF0ZWd5Ojpsb2FkUmVzb3VyY2UoRnJhbWUmIGZyYW1lLCBDYWNoZWRSZXNvdXJjZSYgcmVzb3Vy
Y2UsIFJlcwogICAgICAgICBpZiAobG9hZGVyKQogICAgICAgICAgICAgc2NoZWR1bGVMb2FkKCps
b2FkZXIsIHJlc291cmNlLmdldCgpLCByZWZlcnJlclBvbGljeSA9PSBSZWZlcnJlclBvbGljeTo6
Tm9SZWZlcnJlcldoZW5Eb3duZ3JhZGUpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBSRUxF
QVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBbd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUi
IFBSSXU2NCAiXSBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlOiBVbmFibGUgdG8gY3Jl
YXRlIFN1YnJlc291cmNlTG9hZGVyIiwgdGhpcywgZnJhbWUtPnBhZ2VJRCgpLnZhbHVlX29yKFBh
Z2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCksIGZyYW1lLT5mcmFtZUlEKCkudmFsdWVfb3IoRnJh
bWVJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0coTmV0
d29yaywgIiVwIC0gW3dlYlBhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0lIiBQUkl1NjQgIl0g
V2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZTogVW5hYmxlIHRvIGNyZWF0ZSBTdWJyZXNv
dXJjZUxvYWRlciIsIHRoaXMsIHZhbHVlT3JEZWZhdWx0KGZyYW1lLT5wYWdlSUQoKSkudG9VSW50
NjQoKSwgdmFsdWVPckRlZmF1bHQoZnJhbWUtPmZyYW1lSUQoKSkudG9VSW50NjQoKSk7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUobG9hZGVyKSk7CiAgICAgfSk7CiB9CkBAIC0x
NzgsMTMgKzE3OCwxMyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVz
b3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogCiAgICAgV2ViUmVzb3Vy
Y2VMb2FkZXI6OlRyYWNraW5nUGFyYW1ldGVycyB0cmFja2luZ1BhcmFtZXRlcnM7CiAgICAgaWYg
KGF1dG8qIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVudChmcmFt
ZUxvYWRlckNsaWVudCkpCi0gICAgICAgIHRyYWNraW5nUGFyYW1ldGVycy53ZWJQYWdlUHJveHlJ
RCA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJQYWdlUHJveHlJRCgpLnZhbHVlX29yKFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIgeyB9KTsKKyAgICAgICAgdHJhY2tpbmdQYXJhbWV0ZXJzLndlYlBh
Z2VQcm94eUlEID0gdmFsdWVPckRlZmF1bHQod2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYlBhZ2VQ
cm94eUlEKCkpOwogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBlbHNlIGlmIChpczxT
ZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQ+KGZyYW1lTG9hZGVyQ2xpZW50KSkKICAgICAg
ICAgdHJhY2tpbmdQYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlEID0gZG93bmNhc3Q8U2VydmljZVdv
cmtlckZyYW1lTG9hZGVyQ2xpZW50PihmcmFtZUxvYWRlckNsaWVudCkud2ViUGFnZVByb3h5SUQo
KTsKICNlbmRpZgotICAgIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQgPSBmcmFtZUxvYWRlckNs
aWVudC5wYWdlSUQoKS52YWx1ZV9vcihQYWdlSWRlbnRpZmllciB7IH0pOwotICAgIHRyYWNraW5n
UGFyYW1ldGVycy5mcmFtZUlEID0gZnJhbWVMb2FkZXJDbGllbnQuZnJhbWVJRCgpLnZhbHVlX29y
KEZyYW1lSWRlbnRpZmllciB7IH0pOworICAgIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQgPSB2
YWx1ZU9yRGVmYXVsdChmcmFtZUxvYWRlckNsaWVudC5wYWdlSUQoKSk7CisgICAgdHJhY2tpbmdQ
YXJhbWV0ZXJzLmZyYW1lSUQgPSB2YWx1ZU9yRGVmYXVsdChmcmFtZUxvYWRlckNsaWVudC5mcmFt
ZUlEKCkpOwogICAgIHRyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEID0gaWRlbnRpZmllcjsK
IAogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQpAQCAtNDQ4LDcgKzQ0
OCw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJv
Y2VzcyhSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMCiAgICAgc3RkOjpvcHRpb25hbDxOZXR3b3Jr
UmVzb3VyY2VMb2FkSWRlbnRpZmllcj4gZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRp
ZmllclRvUmVzdW1lOwogICAgIGlmIChsb2FkUGFyYW1ldGVycy5pc01haW5GcmFtZU5hdmlnYXRp
b24pCiAgICAgICAgIGV4aXN0aW5nTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXJUb1Jlc3Vt
ZSA9IHN0ZDo6ZXhjaGFuZ2UobV9leGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVy
VG9SZXN1bWUsIHN0ZDo6bnVsbG9wdCk7Ci0gICAgV0VCTE9BREVSU1RSQVRFR1lfUkVMRUFTRV9M
T0coInNjaGVkdWxlTG9hZDogUmVzb3VyY2UgaXMgYmVpbmcgc2NoZWR1bGVkIHdpdGggdGhlIE5l
dHdvcmtQcm9jZXNzIChwcmlvcml0eT0lZCwgZXhpc3RpbmdOZXR3b3JrUmVzb3VyY2VMb2FkSWRl
bnRpZmllclRvUmVzdW1lPSUiIFBSSXU2NCAiKSIsIHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VM
b2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyVG9SZXN1bWUudmFsdWVfb3IoTmV0d29ya1Jlc291cmNlTG9hZElkZW50aWZpZXIg
eyB9KS50b1VJbnQ2NCgpKTsKKyAgICBXRUJMT0FERVJTVFJBVEVHWV9SRUxFQVNFX0xPRygic2No
ZWR1bGVMb2FkOiBSZXNvdXJjZSBpcyBiZWluZyBzY2hlZHVsZWQgd2l0aCB0aGUgTmV0d29ya1By
b2Nlc3MgKHByaW9yaXR5PSVkLCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxvYWRJZGVudGlmaWVy
VG9SZXN1bWU9JSIgUFJJdTY0ICIpIiwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5y
ZXF1ZXN0KCkucHJpb3JpdHkoKSksIHZhbHVlT3JEZWZhdWx0KGV4aXN0aW5nTmV0d29ya1Jlc291
cmNlTG9hZElkZW50aWZpZXJUb1Jlc3VtZSkudG9VSW50NjQoKSk7CiAgICAgaWYgKCFXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNjaGVk
dWxlUmVzb3VyY2VMb2FkKGxvYWRQYXJhbWV0ZXJzLCBleGlzdGluZ05ldHdvcmtSZXNvdXJjZUxv
YWRJZGVudGlmaWVyVG9SZXN1bWUpLCAwKSkgewogICAgICAgICBXRUJMT0FERVJTVFJBVEVHWV9S
RUxFQVNFX0xPR19FUlJPUigic2NoZWR1bGVMb2FkOiBVbmFibGUgdG8gc2NoZWR1bGUgcmVzb3Vy
Y2Ugd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKHByaW9yaXR5PSVkKSIsIHN0YXRpY19jYXN0PGlu
dD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpKTsKICAgICAgICAgLy8gV2Ug
cHJvYmFibHkgZmFpbGVkIHRvIHNjaGVkdWxlIHRoaXMgbG9hZCB3aXRoIHRoZSBOZXR3b3JrUHJv
Y2VzcyBiZWNhdXNlIGl0IGhhZCBjcmFzaGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggZmE2Y2U2ZjY5ZmMwMmY3MDFmODg1
MTM4ODQ3NWRlZjNmMjQzMTRjZC4uYTQ1YzY5MjM4Nzc0ZjY0NGVkODE5N2YxY2YwYzEwOTZhMmU1
NjU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLm1tCkBAIC0yMDQ4LDEzICsyMDQ4LDEzIEBAIEludFBvaW50IFBERlBsdWdpbjo6Y29u
dmVydEZyb21Sb290Vmlld1RvUGx1Z2luKGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKIElu
dFBvaW50IFBERlBsdWdpbjo6Y29udmVydEZyb21QREZWaWV3VG9Sb290Vmlldyhjb25zdCBJbnRQ
b2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgSW50UG9pbnQgcG9pbnRJblBsdWdpbkNvb3JkaW5h
dGVzKHBvaW50LngoKSwgc2l6ZSgpLmhlaWdodCgpIC0gcG9pbnQueSgpKTsKLSAgICByZXR1cm4g
bV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFu
c2Zvcm0oKSkubWFwUG9pbnQocG9pbnRJblBsdWdpbkNvb3JkaW5hdGVzKTsKKyAgICByZXR1cm4g
dmFsdWVPckRlZmF1bHQobV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2UoKSkubWFw
UG9pbnQocG9pbnRJblBsdWdpbkNvb3JkaW5hdGVzKTsKIH0KIAogSW50UmVjdCBQREZQbHVnaW46
OmNvbnZlcnRGcm9tUERGVmlld1RvUm9vdFZpZXcoY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3QK
IHsKICAgICBJbnRSZWN0IHJlY3RJblBsdWdpbkNvb3JkaW5hdGVzKHJlY3QueCgpLCByZWN0Lnko
KSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKLSAgICByZXR1cm4gbV9yb290Vmlld1Rv
UGx1Z2luVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkubWFw
UmVjdChyZWN0SW5QbHVnaW5Db29yZGluYXRlcyk7CisgICAgcmV0dXJuIHZhbHVlT3JEZWZhdWx0
KG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybS5pbnZlcnNlKCkpLm1hcFJlY3QocmVjdEluUGx1
Z2luQ29vcmRpbmF0ZXMpOwogfQogCiBJbnRQb2ludCBQREZQbHVnaW46OmNvbnZlcnRGcm9tUm9v
dFZpZXdUb1BERlZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdApAQCAtMjA4Nyw3ICsy
MDg3LDcgQEAgSW50UmVjdCBQREZQbHVnaW46OmJvdW5kc09uU2NyZWVuKCkgY29uc3QKICAgICAg
ICAgcmV0dXJuIHsgfTsKIAogICAgIEZsb2F0UmVjdCBib3VuZHMgPSBGbG9hdFJlY3QoRmxvYXRQ
b2ludCgpLCBzaXplKCkpOwotICAgIEZsb2F0UmVjdCByZWN0SW5Sb290Vmlld0Nvb3JkaW5hdGVz
ID0gbV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVU
cmFuc2Zvcm0oKSkubWFwUmVjdChib3VuZHMpOworICAgIEZsb2F0UmVjdCByZWN0SW5Sb290Vmll
d0Nvb3JkaW5hdGVzID0gdmFsdWVPckRlZmF1bHQobV9yb290Vmlld1RvUGx1Z2luVHJhbnNmb3Jt
LmludmVyc2UoKSkubWFwUmVjdChib3VuZHMpOwogICAgIGF1dG8qIHBhZ2UgPSBtX2ZyYW1lLT5j
b3JlRnJhbWUoKS0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIHsgfTsK
QEAgLTIxMTQsNyArMjExNCw3IEBAIHZvaWQgUERGUGx1Z2luOjpnZW9tZXRyeURpZENoYW5nZShj
b25zdCBJbnRTaXplJiBwbHVnaW5TaXplLCBjb25zdCBJbnRSZWN0JiwgY29uCiAgICAgICAgIHJl
dHVybjsKIAogICAgIG1fc2l6ZSA9IHBsdWdpblNpemU7Ci0gICAgbV9yb290Vmlld1RvUGx1Z2lu
VHJhbnNmb3JtID0gcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybS5pbnZlcnNlKCkudmFsdWVfb3Io
QWZmaW5lVHJhbnNmb3JtKCkpOworICAgIG1fcm9vdFZpZXdUb1BsdWdpblRyYW5zZm9ybSA9IHZh
bHVlT3JEZWZhdWx0KHBsdWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0uaW52ZXJzZSgpKTsKICAgICBb
bV9wZGZMYXllckNvbnRyb2xsZXIgc2V0RnJhbWVTaXplOnBsdWdpblNpemVdOwogCiAgICAgW0NB
VHJhbnNhY3Rpb24gYmVnaW5dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAppbmRleCA3Nzg0MjZjZTljOWNjMGJiZDZkMjU1NzMzYjczOGM2ZjQxMTc0ZGU1
Li4yNjBhM2ZiZWFmYjIzZjg0MmEzYTk4YzgwM2YxZTc2YTg2YjkxNjRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzc2Nyw3ICszNzY3LDcg
QEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgUnVuSmF2YVNj
cmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXIKIAogdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0
SW5GcmFtZUluU2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
LCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgY29uc3Qg
c3RkOjpwYWlyPENvbnRlbnRXb3JsZElkZW50aWZpZXIsIFN0cmluZz4mIHdvcmxkRGF0YSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+Jik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7Ci0gICAgV0VCUEFHRV9SRUxFQVNFX0xPRyhQcm9jZXNzLCAicnVuSmF2YVNjcmlwdElu
RnJhbWVJblNjcmlwdFdvcmxkOiBmcmFtZUlEPSUiIFBSSXU2NCwgZnJhbWVJRC52YWx1ZV9vcihX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgeyB9KS50b1VJbnQ2NCgpKTsKKyAgICBXRUJQQUdFX1JF
TEVBU0VfTE9HKFByb2Nlc3MsICJydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQ6IGZy
YW1lSUQ9JSIgUFJJdTY0LCB2YWx1ZU9yRGVmYXVsdChmcmFtZUlEKS50b1VJbnQ2NCgpKTsKICAg
ICBSZWZQdHIgd2ViRnJhbWUgPSBmcmFtZUlEID8gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2Vi
RnJhbWUoKmZyYW1lSUQpIDogJm1haW5XZWJGcmFtZSgpOwogCiAgICAgaWYgKGF1dG8qIG5ld1dv
cmxkID0gbV91c2VyQ29udGVudENvbnRyb2xsZXItPmFkZENvbnRlbnRXb3JsZCh3b3JsZERhdGEp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxs
c2NyZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyLm1tCmluZGV4IGUxOGQxMGMzZmM0ZjE4ZDczYTJhNzQwYzUzMzEzMTM0
M2ZmMzNjYWYuLjQyYmU4Y2VhNTI1MGZhZmZlYjc4ZTAxMWE2N2E0ZWZjMGRhNTRhNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyLm1tCkBAIC00ODEsNyArNDgxLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpkaWRFbnRlckZ1bGxzY3JlZW4oUGxheWJhY2tTZXNzaW9uQ29udGV4dElkZW50aWZpZXIK
ICAgICBpZiAoIXZpZGVvRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdmlkZW9FbGVt
ZW50LT5kaWRFbnRlckZ1bGxzY3JlZW5PclBpY3R1cmVJblBpY3R1cmUoc2l6ZS52YWx1ZV9vcihX
ZWJDb3JlOjpGbG9hdFNpemUoKSkpOworICAgIHZpZGVvRWxlbWVudC0+ZGlkRW50ZXJGdWxsc2Ny
ZWVuT3JQaWN0dXJlSW5QaWN0dXJlKHZhbHVlT3JEZWZhdWx0KHNpemUpKTsKIAogICAgIGlmIChp
bnRlcmZhY2UtPnRhcmdldElzRnVsbHNjcmVlbigpIHx8IGludGVyZmFjZS0+ZnVsbHNjcmVlblN0
YW5kYnkoKSkKICAgICAgICAgcmV0dXJuOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>