<?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>226708</bug_id>
          
          <creation_ts>2021-06-06 23:08:10 -0700</creation_ts>
          <short_desc>Fix CSS serialization issues affecting css-counter-styles tests</short_desc>
          <delta_ts>2021-06-19 13:31:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>226694</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>andersca</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>pdr</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1767308</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-06 23:08:10 -0700</bug_when>
    <thetext>Fixe CSS serialization issues affecting css-counter-styles tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767324</commentid>
    <comment_count>1</comment_count>
      <attachid>430716</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-06 23:52:02 -0700</bug_when>
    <thetext>Created attachment 430716
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767513</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-07 12:33:32 -0700</bug_when>
    <thetext>The image URL issue is a little more complicated than I thought.

The cssText from the computed style must include the full resolved URL! But the cssText from the rule in the style sheet should reflect the not-yet-resolved URL. It seems, given WPT expected results for others tests and for the css-counter-styles test.

Now I am a little confused: Is the css-counter-styles test expected result correct? Is there somewhere this behavior is documented that I am missing? I’m not really in the mood to download the other browsers to check their behavior, but maybe I should.

I’m sure I can implement this correctly and efficiently once I figure out what rule I am trying to implement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767515</commentid>
    <comment_count>3</comment_count>
      <attachid>430716</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-07 12:37:09 -0700</bug_when>
    <thetext>Comment on attachment 430716
Patch

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

&gt; LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/counter-style-additive-symbols-syntax-expected.txt:2
&gt; +PASS @counter-style &apos;additive-symbols: 0 &quot;X&quot;&apos; is valid

Chrome and Firefox are passing all checks in this test.

&gt; LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/counter-style-symbols-syntax-expected.txt:5
&gt; +PASS @counter-style &apos;symbols: ident &quot;X&quot; url(&quot;foo.jpg&quot;)&apos; is valid

Chrome and Firefox are both failing this check so this change is a compatibility risk and the test is likely wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767516</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-07 12:38:29 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #3)
&gt; Comment on attachment 430716 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=430716&amp;action=review
&gt; 
&gt; &gt; LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/counter-style-additive-symbols-syntax-expected.txt:2
&gt; &gt; +PASS @counter-style &apos;additive-symbols: 0 &quot;X&quot;&apos; is valid
&gt; 
&gt; Chrome and Firefox are passing all checks in this test.
&gt; 
&gt; &gt; LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/counter-style-symbols-syntax-expected.txt:5
&gt; &gt; +PASS @counter-style &apos;symbols: ident &quot;X&quot; url(&quot;foo.jpg&quot;)&apos; is valid
&gt; 
&gt; Chrome and Firefox are both failing this check so this change is a
&gt; compatibility risk and the test is likely wrong.

In Firefox:
assert_equals: expected (undefined) undefined but got (string) &quot;ident \&quot;X\&quot; url(\&quot;foo.jpg\&quot;)&quot;

In Chrome:
assert_not_equals: got disallowed value -1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767567</commentid>
    <comment_count>5</comment_count>
      <attachid>430716</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-07 15:05:35 -0700</bug_when>
    <thetext>Comment on attachment 430716
Patch

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

&gt;&gt; LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/counter-style-symbols-syntax-expected.txt:5
&gt;&gt; +PASS @counter-style &apos;symbols: ident &quot;X&quot; url(&quot;foo.jpg&quot;)&apos; is valid
&gt; 
&gt; Chrome and Firefox are both failing this check so this change is a compatibility risk and the test is likely wrong.

Thank you for checking.

This feature, images, is not all browser has agreed we should be implementing. It’s switched with a separate feature flag, CSSCounterStyleAtRuleImageSymbolsEnabled. Not the main feature flag, CSSCounterStyleAtRulesEnabled.

But the real question is: in other similar uses, outside of this feature, such as background-image URLs, are such image URLs serializing as a full completed URLs when examining the style sheet, or as partial URLs. In computed style, they are serializing as full completed URLs. There may be a mistake in the way this test checks the cssText, aside from the fact that it tests the likely-not-to-be implemented image symbols. That’s something I want to figure out.

The Firefox result you cited here is peculiar:

    assert_equals: expected (undefined) undefined but got (string) &quot;ident \&quot;X\&quot; url(\&quot;foo.jpg\&quot;)&quot;

Why would it expect undefined? Is the copy of WPT running in Firefox testing that the feature is not implemented?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767569</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-07 15:07:59 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)
&gt; Comment on attachment 430716 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=430716&amp;action=review
&gt; 
&gt; &gt;&gt; LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/counter-style-symbols-syntax-expected.txt:5
&gt; &gt;&gt; +PASS @counter-style &apos;symbols: ident &quot;X&quot; url(&quot;foo.jpg&quot;)&apos; is valid
&gt; &gt; 
&gt; &gt; Chrome and Firefox are both failing this check so this change is a compatibility risk and the test is likely wrong.
&gt; 
&gt; Thank you for checking.
&gt; 
&gt; This feature, images, is not all browser has agreed we should be
&gt; implementing. It’s switched with a separate feature flag,
&gt; CSSCounterStyleAtRuleImageSymbolsEnabled. Not the main feature flag,
&gt; CSSCounterStyleAtRulesEnabled.
&gt; 
&gt; But the real question is: in other similar uses, outside of this feature,
&gt; such as background-image URLs, are such image URLs serializing as a full
&gt; completed URLs when examining the style sheet, or as partial URLs. In
&gt; computed style, they are serializing as full completed URLs. There may be a
&gt; mistake in the way this test checks the cssText, aside from the fact that it
&gt; tests the likely-not-to-be implemented image symbols. That’s something I
&gt; want to figure out.
&gt; 
&gt; The Firefox result you cited here is peculiar:
&gt; 
&gt;     assert_equals: expected (undefined) undefined but got (string) &quot;ident
&gt; \&quot;X\&quot; url(\&quot;foo.jpg\&quot;)&quot;
&gt; 
&gt; Why would it expect undefined? Is the copy of WPT running in Firefox testing
&gt; that the feature is not implemented?

This is the check that Firefox is failing:
```
    let rule = style.sheet.cssRules[0];
    // TODO: The spec is inconsistent on when the entire rule is invalid
    // (and hence absent from OM), and when only the descriptor is invalid.
    // Revise when spec issue is resolved.
    // See https://github.com/w3c/csswg-drafts/issues/5717
    if (!rule) {
      assert_equals(expected, undefined);
      return;
    }
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767573</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-07 15:08:33 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; (In reply to Darin Adler from comment #5)
&gt; &gt; Comment on attachment 430716 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=430716&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/counter-style-symbols-syntax-expected.txt:5
&gt; &gt; &gt;&gt; +PASS @counter-style &apos;symbols: ident &quot;X&quot; url(&quot;foo.jpg&quot;)&apos; is valid
&gt; &gt; &gt; 
&gt; &gt; &gt; Chrome and Firefox are both failing this check so this change is a compatibility risk and the test is likely wrong.
&gt; &gt; 
&gt; &gt; Thank you for checking.
&gt; &gt; 
&gt; &gt; This feature, images, is not all browser has agreed we should be
&gt; &gt; implementing. It’s switched with a separate feature flag,
&gt; &gt; CSSCounterStyleAtRuleImageSymbolsEnabled. Not the main feature flag,
&gt; &gt; CSSCounterStyleAtRulesEnabled.
&gt; &gt; 
&gt; &gt; But the real question is: in other similar uses, outside of this feature,
&gt; &gt; such as background-image URLs, are such image URLs serializing as a full
&gt; &gt; completed URLs when examining the style sheet, or as partial URLs. In
&gt; &gt; computed style, they are serializing as full completed URLs. There may be a
&gt; &gt; mistake in the way this test checks the cssText, aside from the fact that it
&gt; &gt; tests the likely-not-to-be implemented image symbols. That’s something I
&gt; &gt; want to figure out.
&gt; &gt; 
&gt; &gt; The Firefox result you cited here is peculiar:
&gt; &gt; 
&gt; &gt;     assert_equals: expected (undefined) undefined but got (string) &quot;ident
&gt; &gt; \&quot;X\&quot; url(\&quot;foo.jpg\&quot;)&quot;
&gt; &gt; 
&gt; &gt; Why would it expect undefined? Is the copy of WPT running in Firefox testing
&gt; &gt; that the feature is not implemented?
&gt; 
&gt; This is the check that Firefox is failing:
&gt; ```
&gt;     let rule = style.sheet.cssRules[0];
&gt;     // TODO: The spec is inconsistent on when the entire rule is invalid
&gt;     // (and hence absent from OM), and when only the descriptor is invalid.
&gt;     // Revise when spec issue is resolved.
&gt;     // See https://github.com/w3c/csswg-drafts/issues/5717
&gt;     if (!rule) {
&gt;       assert_equals(expected, undefined);
&gt;       return;
&gt;     }
&gt; ```

I merely opened http://w3c-test.org/css/css-counter-styles/counter-style-symbols-syntax.html in Firefox so it should be the latest version of the WPT test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767582</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-07 15:29:00 -0700</bug_when>
    <thetext>The real question is what the browsers do on a test file like this:

    &lt;style&gt;a { background-image: url(&quot;foo.jpg&quot;) }&lt;/style&gt;
    &lt;script&gt; document.write(document.head.firstChild.sheet.cssRules[0].cssText) &lt;/script&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767583</commentid>
    <comment_count>9</comment_count>
      <attachid>430790</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-07 15:29:30 -0700</bug_when>
    <thetext>Created attachment 430790
Simple URL serialization test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767584</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-07 15:30:59 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #8)
&gt; The real question is what the browsers do on a test file like this:
&gt; 
&gt;     &lt;style&gt;a { background-image: url(&quot;foo.jpg&quot;) }&lt;/style&gt;
&gt;     &lt;script&gt;
&gt; document.write(document.head.firstChild.sheet.cssRules[0].cssText) &lt;/script&gt;

Safari:
a { background-image: url(&quot;file:///Users/cdumez/Downloads/foo.jpg&quot;); }

Chrome:
a { background-image: url(&quot;foo.jpg&quot;); }

Firefox:
a { background-image: url(&quot;foo.jpg&quot;); }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767585</commentid>
    <comment_count>11</comment_count>
      <attachid>430716</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-07 15:34:34 -0700</bug_when>
    <thetext>Comment on attachment 430716
Patch

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

&gt;&gt;&gt;&gt;&gt; LayoutTests/imported/w3c/web-platform-tests/css/css-counter-styles/counter-style-symbols-syntax-expected.txt:5
&gt;&gt;&gt;&gt;&gt; +PASS @counter-style &apos;symbols: ident &quot;X&quot; url(&quot;foo.jpg&quot;)&apos; is valid
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Chrome and Firefox are both failing this check so this change is a compatibility risk and the test is likely wrong.
&gt;&gt;&gt; 
&gt;&gt;&gt; Thank you for checking.
&gt;&gt;&gt; 
&gt;&gt;&gt; This feature, images, is not all browser has agreed we should be implementing. It’s switched with a separate feature flag, CSSCounterStyleAtRuleImageSymbolsEnabled. Not the main feature flag, CSSCounterStyleAtRulesEnabled.
&gt;&gt;&gt; 
&gt;&gt;&gt; But the real question is: in other similar uses, outside of this feature, such as background-image URLs, are such image URLs serializing as a full completed URLs when examining the style sheet, or as partial URLs. In computed style, they are serializing as full completed URLs. There may be a mistake in the way this test checks the cssText, aside from the fact that it tests the likely-not-to-be implemented image symbols. That’s something I want to figure out.
&gt;&gt;&gt; 
&gt;&gt;&gt; The Firefox result you cited here is peculiar:
&gt;&gt;&gt; 
&gt;&gt;&gt;     assert_equals: expected (undefined) undefined but got (string) &quot;ident \&quot;X\&quot; url(\&quot;foo.jpg\&quot;)&quot;
&gt;&gt;&gt; 
&gt;&gt;&gt; Why would it expect undefined? Is the copy of WPT running in Firefox testing that the feature is not implemented?
&gt;&gt; 
&gt;&gt; This is the check that Firefox is failing:
&gt;&gt; ```
&gt;&gt;     let rule = style.sheet.cssRules[0];
&gt;&gt;     // TODO: The spec is inconsistent on when the entire rule is invalid
&gt;&gt;     // (and hence absent from OM), and when only the descriptor is invalid.
&gt;&gt;     // Revise when spec issue is resolved.
&gt;&gt;     // See https://github.com/w3c/csswg-drafts/issues/5717
&gt;&gt;     if (!rule) {
&gt;&gt;       assert_equals(expected, undefined);
&gt;&gt;       return;
&gt;&gt;     }
&gt;&gt; ```
&gt; 
&gt; I merely opened http://w3c-test.org/css/css-counter-styles/counter-style-symbols-syntax.html in Firefox so it should be the latest version of the WPT test.

OK, makes sense. The confusing message is because the test script css/css-counter-styles/support/counter-style-testcommon.js  has an error, it should be:

      assert_equals(undefined, expected)

Because the script has an error, the message is backwards. Given that mistake, then the message simply means they haven’t implemented parsing of the image URL at all here, which makes sense given that a lot of people are unsure whether to support it.

Leaves the question about partial vs. resolved URLs still outstanding. Maybe you can try my test file in the other browsers for me?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767586</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-07 15:35:26 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #10)
&gt; Safari:
&gt; a { background-image: url(&quot;file:///Users/cdumez/Downloads/foo.jpg&quot;); }
&gt; 
&gt; Chrome:
&gt; a { background-image: url(&quot;foo.jpg&quot;); }
&gt; 
&gt; Firefox:
&gt; a { background-image: url(&quot;foo.jpg&quot;); }

Yes, this is what I am trying to fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767587</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-07 15:38:00 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #12)
&gt; (In reply to Chris Dumez from comment #10)
&gt; &gt; Safari:
&gt; &gt; a { background-image: url(&quot;file:///Users/cdumez/Downloads/foo.jpg&quot;); }
&gt; &gt; 
&gt; &gt; Chrome:
&gt; &gt; a { background-image: url(&quot;foo.jpg&quot;); }
&gt; &gt; 
&gt; &gt; Firefox:
&gt; &gt; a { background-image: url(&quot;foo.jpg&quot;); }
&gt; 
&gt; Yes, this is what I am trying to fix.

Just to clarify, this is the output from the test you asked me to run. So it does appear we are not aligned with other browsers here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767589</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-07 15:55:53 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #13)
&gt; So it
&gt; does appear we are not aligned with other browsers here.

Yes, this is what I am trying to fix. Without breaking other related things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768396</commentid>
    <comment_count>15</comment_count>
      <attachid>431026</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-09 17:01:32 -0700</bug_when>
    <thetext>Created attachment 431026
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768415</commentid>
    <comment_count>16</comment_count>
      <attachid>431036</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-09 18:01:12 -0700</bug_when>
    <thetext>Created attachment 431036
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768438</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-09 19:19:18 -0700</bug_when>
    <thetext>Looks like some of the EWS failures may be real (although EWS has been terrible in terms of false positives in the last few days...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768449</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-09 20:25:01 -0700</bug_when>
    <thetext>I will look at those WK1 test results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768478</commentid>
    <comment_count>19</comment_count>
      <attachid>431036</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-06-10 00:49:21 -0700</bug_when>
    <thetext>Comment on attachment 431036
Patch

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

&gt; Source/WebCore/css/CSSImageValue.cpp:37
&gt; +CSSImageValue::CSSImageValue(URL&amp;&amp; url, URL&amp;&amp; resolvedURL, LoadedFromOpaqueSource loadedFromOpaqueSource)

Looking into this patch I feel baseURL/url pair would result in more understandable code. 

Also maybe the pair should be factored into a struct, something like URLAndBase?  I think there are other places it should be used like CSSFontFaceSrcValue.

&gt; Source/WebCore/css/CSSImageValue.cpp:79
&gt; +URL CSSImageValue::resolvedURL(const Document&amp; document) const
&gt; +{
&gt; +    return document.completeURL(m_resolvedURLString.isNull() ? m_url.string() : m_resolvedURLString);
&gt; +}

Why are we ever calling completeURL on resolved URL?

&gt; Source/WebCore/css/parser/CSSPropertyParser.cpp:2269
&gt; +        std::optional&lt;IntPoint&gt; hotSpot;
&gt;          if (auto x = consumeNumberRaw(range)) {
&gt; -            hotSpot.setX(static_cast&lt;int&gt;(*x));
&gt;              auto y = consumeNumberRaw(range);
&gt;              if (!y)
&gt;                  return nullptr;
&gt; -            hotSpot.setY(static_cast&lt;int&gt;(*y));
&gt; -            hotSpotSpecified = true;
&gt; +            // FIXME: Should we clamp or round instead of just casting from double to int?
&gt; +            hotSpot = IntPoint { static_cast&lt;int&gt;(*x), static_cast&lt;int&gt;(*y) };
&gt;          }

I like factoring this sort of code into a lambda.

&gt; Source/WebCore/css/parser/CSSPropertyParser.cpp:4703
&gt; +        if (integer &amp;&amp; symbol) {
&gt; +            auto pair = CSSValueList::createSpaceSeparated();
&gt; +            pair-&gt;append(integer.releaseNonNull());
&gt; +            pair-&gt;append(symbol.releaseNonNull());
&gt; +            values-&gt;append(WTFMove(pair));
&gt; +        } else if (integer)
&gt; +            values-&gt;append(integer.releaseNonNull());
&gt; +        else
&gt; +            values-&gt;append(symbol.releaseNonNull());

This too might read better as a lambda

auto symbolToAppend = [&amp;] { ... };

value-&gt;append(symbolToAppend());</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768660</commentid>
    <comment_count>20</comment_count>
      <attachid>431036</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-10 12:10:52 -0700</bug_when>
    <thetext>Comment on attachment 431036
Patch

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

Thanks for your comments Antti!

&gt;&gt; Source/WebCore/css/CSSImageValue.cpp:37
&gt;&gt; +CSSImageValue::CSSImageValue(URL&amp;&amp; url, URL&amp;&amp; resolvedURL, LoadedFromOpaqueSource loadedFromOpaqueSource)
&gt; 
&gt; Looking into this patch I feel baseURL/url pair would result in more understandable code. 
&gt; 
&gt; Also maybe the pair should be factored into a struct, something like URLAndBase?  I think there are other places it should be used like CSSFontFaceSrcValue.

I did the baseURL/URL pair at first, implemented it that way. I liked it better than what you had suggested.

But that didn’t work, because to replicate the CSSParserContext::completeURL algorithm, besides baseURL, we also need charset and CSSParserMode. And saying this, I now realize that my current patch screws that up, because it breaks the blocking of non-data URLs in VTT parsing since it does not correctly interpret a null resolved URL as &quot;block this URL entirely&quot;. I will fix that, but I don’t think I want to pass all that context in. I think I need to stick with resolvedURL.

I am totally willing to factor it into a struct, for use elsewhere, yes absolutely. But didn’t seem important to do that in this patch. It’s already pretty confusing!

&gt;&gt; Source/WebCore/css/CSSImageValue.cpp:79
&gt;&gt; +}
&gt; 
&gt; Why are we ever calling completeURL on resolved URL?

Because sometimes the CSS parser context does not come with a base URL, like styles in a document that doesn’t have a URL. And in those cases the so called &quot;resolved&quot; URL is not fully resolved. If I don’t call completeURL here on already-resolved URLs then we have tests that will fail. I know because I tried it!

&gt;&gt; Source/WebCore/css/parser/CSSPropertyParser.cpp:2269
&gt;&gt;          }
&gt; 
&gt; I like factoring this sort of code into a lambda.

OK, not to my taste (yet), but I will try it your way.

&gt;&gt; Source/WebCore/css/parser/CSSPropertyParser.cpp:4703
&gt;&gt; +            values-&gt;append(symbol.releaseNonNull());
&gt; 
&gt; This too might read better as a lambda
&gt; 
&gt; auto symbolToAppend = [&amp;] { ... };
&gt; 
&gt; value-&gt;append(symbolToAppend());

Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768973</commentid>
    <comment_count>21</comment_count>
      <attachid>431036</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-11 10:27:27 -0700</bug_when>
    <thetext>Comment on attachment 431036
Patch

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

&gt;&gt;&gt; Source/WebCore/css/parser/CSSPropertyParser.cpp:2269
&gt;&gt;&gt;          }
&gt;&gt; 
&gt;&gt; I like factoring this sort of code into a lambda.
&gt; 
&gt; OK, not to my taste (yet), but I will try it your way.

I decided to do everything you suggested (including this).

I tried to turn this code into a lambda in an elegant way, and the hard part was handling the failure case (x but not y). How do I reflect that? Can’t use std::nullopt for that, because that means &quot;neither X nor Y&quot;. What would you do in a case like that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768974</commentid>
    <comment_count>22</comment_count>
      <attachid>431036</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-11 10:27:39 -0700</bug_when>
    <thetext>Comment on attachment 431036
Patch

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

&gt;&gt;&gt; Source/WebCore/css/parser/CSSPropertyParser.cpp:2269
&gt;&gt;&gt;          }
&gt;&gt; 
&gt;&gt; I like factoring this sort of code into a lambda.
&gt; 
&gt; OK, not to my taste (yet), but I will try it your way.

I decided to do everything you suggested (including this).

I tried to turn this code into a lambda in an elegant way, and the hard part was handling the failure case (x but not y). How do I reflect that? Can’t use std::nullopt for that, because that means &quot;neither X nor Y&quot;. What would you do in a case like that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769324</commentid>
    <comment_count>23</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-13 23:09:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/79274857&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769622</commentid>
    <comment_count>24</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-14 16:50:43 -0700</bug_when>
    <thetext>Here’s why I am not done yet:

Turns out we have two ways that we depend on CSS values not being copied when we do style resolution:

1) When building a web archive, we collect a list of subresource URLs to figure out what to include in the archive. StyledElement::addSubresourceAttributeURLs does this by calling traverseSubresources on the inline style object, which calls traverseSubresources on all the CSS values. That only worked before because the actual cached resources were pointed-to by the CSS values from the inline style. That’s no longer true with my patch because style resolution creates new CSS values. Not 100% clear how to work around this. Would be nice to be able to get the URLs from the resolved style rather than from the specified style.

2) When deciding whether a stylesheet is &quot;still loading&quot; in StyleSheetContents::subresourcesAllowReuse we use CSS image values to get to cached resources. Same problem as above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769906</commentid>
    <comment_count>25</comment_count>
      <attachid>431462</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-15 12:10:43 -0700</bug_when>
    <thetext>Created attachment 431462
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769956</commentid>
    <comment_count>26</comment_count>
      <attachid>431462</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-15 14:07:33 -0700</bug_when>
    <thetext>Comment on attachment 431462
Patch

Oops, two more things I need to fix!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770024</commentid>
    <comment_count>27</comment_count>
      <attachid>431500</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-15 17:05:09 -0700</bug_when>
    <thetext>Created attachment 431500
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770055</commentid>
    <comment_count>28</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-15 18:50:40 -0700</bug_when>
    <thetext>Finally passing tests and ready for a real review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770563</commentid>
    <comment_count>29</comment_count>
      <attachid>431500</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-06-17 02:29:55 -0700</bug_when>
    <thetext>Comment on attachment 431500
Patch

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

&gt; Source/WebCore/css/CSSImageValue.h:45
&gt; +// FIXME: Move to another header? Better name? Should we call this DualURL, CSSDualURL, CSSParsedURL, or something else?
&gt; +struct DualLocation {
&gt; +    String specifiedURLString;
&gt; +    String resolvedURLString;
&gt; +};

&quot;DualLocation&quot; is a strange name for this. The type represents a single location after all, in resolved and unresolved form.

The name should have &apos;URL&apos; in it. CompletedURL would be a good candidate, with this being the return type of completeURL(). Other alternatives: ResolvedURL, StyleURL, ...

Why does this use String instead of URL for the members?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770625</commentid>
    <comment_count>30</comment_count>
      <attachid>431500</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-17 07:41:20 -0700</bug_when>
    <thetext>Comment on attachment 431500
Patch

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

&gt;&gt; Source/WebCore/css/CSSImageValue.h:45
&gt;&gt; +};
&gt; 
&gt; &quot;DualLocation&quot; is a strange name for this. The type represents a single location after all, in resolved and unresolved form.
&gt; 
&gt; The name should have &apos;URL&apos; in it. CompletedURL would be a good candidate, with this being the return type of completeURL(). Other alternatives: ResolvedURL, StyleURL, ...
&gt; 
&gt; Why does this use String instead of URL for the members?

I’ll go with ResolvedURL for now. I guess I will also change resolvedURLString to be a URL.

This used String because the resolved URL string is mostly used by re-parsing again to resolve against a different base URL, required in cases where the CSS itself was parsed in a context without a base URL. That requires a String and ignores the fact that it’s an already-parsed URL. As I mentioned earlier, font-face src values were storing String and image values were storing URL, and I had to choose one or the other. Storing the various offsets and the “is this valid” flag didn’t seem to offer much value, so I chose the smaller object.

It seems more logical to store a URL object for the resolved URL and just use a string for the specifiedURLString, and there is no big downside to that, but no big upside either. I am a bit torn, but I will change it to what seems logical.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770680</commentid>
    <comment_count>31</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-06-17 09:25:54 -0700</bug_when>
    <thetext>
&gt; I’ll go with ResolvedURL for now. I guess I will also change
&gt; resolvedURLString to be a URL.

Also the field can be called just &quot;url&quot;, &quot;resolved&quot; is in the type name after all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1771118</commentid>
    <comment_count>32</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-19 13:31:20 -0700</bug_when>
    <thetext>Committed r279050 (238970@main): &lt;https://commits.webkit.org/238970@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430716</attachid>
            <date>2021-06-06 23:52:02 -0700</date>
            <delta_ts>2021-06-09 17:01:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226708-20210606235201.patch</filename>
            <type>text/plain</type>
            <size>130895</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTRlYjExOWJhZDE5ZmY5
NDZhZTQzYTNlYzUxMjhjY2YxMWNjZDViMi4uOTc0NGEyYTYzNzMyMTc2Mjk0MDQ5ZGQ1ZmQzNDQ5
OWZhMDFiZmZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxNyBAQAorMjAyMS0wNi0wNiAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4ZSBDU1Mgc2VyaWFsaXph
dGlvbiBpc3N1ZXMgYWZmZWN0aW5nIGNzcy1jb3VudGVyLXN0eWxlcyB0ZXN0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NzA4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBmaXhlcyB0
d28gc2VyaWFsaXphdGlvbiBpc3NzdWVzIGFmZmVjdGluZyBjc3MtY291bnRlci1zdHlsZXMgdGVz
dHM6CisKKyAgICAgICAgMSkgVVJMcyB3ZXJlIHNlcmlhbGl6aW5nIHRoZSBmdWxsIHJlc29sdmVk
IFVSTCwgcmF0aGVyIHRoYW4gdGhlCisgICAgICAgICAgIHBhcnRpYWwgVVJMIHN0cmluZyBmcm9t
IHRoZSBzdHlsZSBzaGVldC4KKyAgICAgICAgMikgSXRlbXMgaW4gYWRkaXRpdmUtc3ltYm9scyB0
aGF0IGhhZCBib3RoIGFuIGludGVnZXIgYW5kIGEgc3RyaW5nCisgICAgICAgICAgIHdvdWxkIGlu
Y29ycmVjdGx5IHNlcmlhbGl6ZSB3aXRoIGEgY29tbWEgd2l0aGluIHRoZSBpdGVtLgorCisgICAg
ICAgIEFuZCBxdWl0ZSBhIGJpdCBvZiByZWZhY3RvcmluZyB0byByZWxhdGVkIENTUyBjb2RlLgor
CisgICAgICAgICogY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6Q1NTQ3Vyc29ySW1hZ2VWYWx1ZSk6IENoYW5nZWQgdGhl
IGhvdCBzcG90CisgICAgICAgIHRvIHVzZSBzdGQ6Om9wdGlvbmFsIGluc3RlYWQgb2YgYSBzZXBh
cmF0ZSBib29sZWFuLiBBbHNvIHJlcGxhY2VkIHRoZQorICAgICAgICBleGlzdGluZyBtX29yaWdp
bmFsVVJMLCBhIFVSTCwgd2l0aCB0aGUgc2ltaWxhciBidXQgbm90IGlkZW50aWNhbAorICAgICAg
ICBtX29yaWdpbmFsU3BlY2lmaWVkVVJMU3RyaW5nLCBhIFN0cmluZywgdG8gaGVscCBjbGFyaWZ5
IHRoaXMgaXMgdGhlCisgICAgICAgIHNwZWNpZmllZCBVUkwsIG5vdCB0aGUgcmVzb2x2ZWQgYWJz
b2x1dGUgVVJMIGNvbXB1dGVkIGZyb20gaXQuCisgICAgICAgIChXZWJDb3JlOjpDU1NDdXJzb3JJ
bWFnZVZhbHVlOjpjcmVhdGUpOiBNb3ZlZCB0aGlzIG91dCBvZiB0aGUgaGVhZGVyCisgICAgICAg
IGJlY2F1c2UgaXQncyBub3QgYmV0dGVyIGZvciBpbmxpbmluZyB0byBoYXZlIGl0IHRoZXJlLgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCBjb25z
dCk6IFVwZGF0ZWQgZm9yIHRoZQorICAgICAgICBtX2hvdFNwb3QgY2hhbmdlcy4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU0N1cnNvckltYWdlVmFsdWU6OnVwZGF0ZUN1cnNvckVsZW1lbnQpOiBSZW1v
dmVkIHVubmVlZGVkCisgICAgICAgIGNoZWNrIG9mIGhhc0ZyYWdtZW50SWRlbnRpZmllciwgd2hp
Y2ggaXMgYWxyZWFkeSBkb25lIGJ5IHRoZQorICAgICAgICBTVkdVUklSZWZlcmVuY2U6OnRhcmdl
dEVsZW1lbnRGcm9tSVJJU3RyaW5nIGZ1bmN0aW9uLiBVcGRhdGVkIHRvIHVzZQorICAgICAgICBt
X29yaWdpbmFsU3BlY2lmaWVkVVJMU3RyaW5nLCBhbmQgYWRkZWQgYSBGSVhNRSBhYm91dCB0aGUg
c3RyYW5nZSB3YXkKKyAgICAgICAgdGhpcyBqdXN0IGtlZXBzIGFjY3VtdWxhdGluZyBtb3JlIGFu
ZCBtb3JlIGNsaWVudHMgaW4gYSBzZXQsIGJ1dCBkaWQKKyAgICAgICAgbm90IGNoYW5nZSB0aGF0
IGJlaGF2aW9yLgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6Y3Vyc29y
RWxlbWVudFJlbW92ZWQpOiBBZGRlZCBhIEZJWE1FLgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Vy
c29ySW1hZ2VWYWx1ZTo6Y3Vyc29yRWxlbWVudENoYW5nZWQpOiBVcGRhdGVkIGZvciB0aGUKKyAg
ICAgICAgY2hhbmdlIHRvIG1faG90U3BvdCBhbmQgYWRkZGVkIHNvbWUgRklYTUUuCisgICAgICAg
IChXZWJDb3JlOjpDU1NDdXJzb3JJbWFnZVZhbHVlOjpzZWxlY3RCZXN0Rml0SW1hZ2UpOiBBZGRl
ZCBhIEZJWE1FLCBhbmQKKyAgICAgICAgdXBkYXRlZCB0byB1c2UgQ1NTSW1hZ2VWYWx1ZTo6c3Bl
Y2lmaWVkVVJMU3RyaW5nIGFuZCBubyBsb25nZXIgY2FsbAorICAgICAgICBjb21wZXRlVVJMIG9u
IHRoZSBVUkwgYmVmb3JlIGNhbGxpbmcgQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlLgorICAgICAgICAo
V2ViQ29yZTo6Q1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6ZXF1YWxzIGNvbnN0KTogVXBkYXRlZCBmb3Ig
dGhlIG1faG90U3BvdAorICAgICAgICBjaGFuZ2U7IG11Y2ggc2ltcGxlciBzaW5jZSBzdGQ6Om9w
dGlvbmFsIGRvZXMgdGhlIHJpZ2h0IHRoaW5nLgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Vyc29y
SW1hZ2VWYWx1ZTo6cmVzb2x2ZWRVUkwgY29uc3QpOiBBZGRlZC4gUmVwbGFjZXMKKyAgICAgICAg
dGhlIG9sZCBpbWFnZVVSTCBmdW5jdGlvbi4gTGlrZSB0aGF0IG9sZCBmdW5jdGlvbiwgZG9lc24n
dCB3b3JrIHdoZW4KKyAgICAgICAgaXQncyBhbiBpbWFnZSBzZXQgcmF0aGVyIHRoYW4gYSBzaW5n
bGUgaW1hZ2UhCisgICAgICAgICogY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaDogVXBkYXRlZCBm
b3IgdGhlIGFib3ZlIGNoYW5nZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVZhbHVlOjpDU1NJbWFnZVZhbHVlKTogQ2hhbmdl
ZCB0aGUgYXJndW1lbnRzLiBXZQorICAgICAgICBub3cgc3RvcmUgdGhlIHNwZWNpZmllZCBVUkwg
c3RyaW5nIHJhdGhlciB0aGFuIGEgVVJMLCBleGNlcHQgdGhhdCBmb3IKKyAgICAgICAgbm93IHRo
ZXJlIGlzIGFsc28gYSB3YXkgdG8gcGFzc3MgaW4gdGhlIGFscmVhZHktcmVzb2x2ZWQgVVJMIHRv
CisgICAgICAgIHByZXNlcnZlIHRoZSBvbGQgYmVoYXZpb3IuIFdlIHVzZSB0aGUgc3BlY2lmaWMg
VVJMIHN0cmluZyBmb3IKKyAgICAgICAgZXZlcnl0aGluZywgaW5jbHVkaW5nIHNlcmlhbGl6YXRp
b24uIFRoZSBhbHJlYWR5LXJlc29sdmVkIFVSTCBpcyBvbmx5CisgICAgICAgIHVzZWQgZm9yIHRo
ZSByZXNvbHZlZFVSTCBmdW5jdGlvbiwgd2hpY2ggaXMgbW9zdGx5IHVzZWQgZm9yIHRoZSBhY3R1
YWwKKyAgICAgICAgaW1hZ2UgbG9hZGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlVmFs
dWU6OmNyZWF0ZSk6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZSBhbmQgbW92ZWQgaGVyZQorICAgICAg
ICBmcm9tIHRoZSBoZWFkZXIuCisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVZhbHVlOjppc1Bl
bmRpbmcgY29uc3QpOiBNb3ZlZCB0byB0aGUgaGVhZGVyLgorICAgICAgICAoV2ViQ29yZTo6Q1NT
SW1hZ2VWYWx1ZTo6bG9hZEltYWdlKTogQ2hhbmdlZCB0aGUgbmFtZSBvZiBtX2FjY2Vzc2VkSW1h
Z2UKKyAgICAgICAgdG8gbV9zdGFydGVkSW1hZ2VMb2FkLiBDaGFuZ2VkIHRoaXMgZnVuY3Rpb24g
dG8gdXNlIHJlc29sdmVkVVJMIHRvIGZldGNoCisgICAgICAgIHRoZSBVUkwgcmF0aGVyIHRoYW4g
Y2FsbGluZyBjb21wbGV0ZVVSTCBvbiB0aGUgY29udGVudHMgb2YgYSBVUkwsIHdoaWNoCisgICAg
ICAgIHdhcyBhIHByZXR0eSBwZWN1bGlhciBpZGlvbSBiZWZvcmUuCisgICAgICAgIChXZWJDb3Jl
OjpDU1NJbWFnZVZhbHVlOjp0cmF2ZXJzZVN1YnJlc291cmNlcyBjb25zdCk6IFR3ZWFrZWQgY29k
ZSBzdHlsZS4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlVmFsdWU6OmVxdWFscyBjb25zdCk6
IENvbXBhcmVzIHNwZWNpZmllZFVSTFN0cmluZy4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdl
VmFsdWU6OnNwZWNpZmllZFVSTFN0cmluZyBjb25zdCk6IEFkZGVkLiBVc2VzCisgICAgICAgIG1f
c3BlY2lmaWVkVVJMU3RyaW5nLCBidXQgbV9jYWNoZWRJbWFnZSdzIFVSTCBpZiB0aGF0IGlzIG51
bGwuCisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0
KTogVXNlIHNwZWNpZmllZFVSTFN0cmluZy4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlVmFs
dWU6OmNyZWF0ZURlcHJlY2F0ZWRDU1NPTVdyYXBwZXIgY29uc3QpOiBESXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ltYWdlVmFsdWU6Omtub3duVG9CZU9wYXF1ZSBjb25zdCk6IFR3ZWFrZWQg
Y29kZSBzdHlsZS4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlVmFsdWU6OnJlc29sdmVkVVJM
IGNvbnN0KTogQWRkZWQuIFVzZXMgbV9jYWNoZWRJbWFnZQorICAgICAgICBpZiB3ZSBoYXZlIGl0
LCB0aGVuIG1fYWxyZWFkeVJlc29sdmVkVVJMIGlmIHdlIGhhdmUgaXQsIGFuZCBmaW5hbGx5Cisg
ICAgICAgIG1fc3BlY2lmaWVkVVJMU3RyaW5nLCB3aGljaCBpcyByZXNvbHZlZCBhZ2FpbnN0IHRo
ZSBkb2N1bWVudCdzIGJhc2UuCisgICAgICAgICogY3NzL0NTU0ltYWdlVmFsdWUuaDogVXBkYXRl
ZCBmb3IgdGhlIGFib3ZlIGNoYW5nZXMuIEFsc28gZGVsZXRlZAorICAgICAgICB0aGUgY3NzVmFs
dWVUeXBlIGFuZCBjc3NUZXh0IGZ1bmN0aW9ucyBqdXN0IGZvciBmdW4gc2luY2Ugd2UgY2FuIGNh
bGwKKyAgICAgICAgbW9yZSBkaXJlY3QgZnVuY3Rpb25zIGlmIHdlIGhhdmUgYSBzcGVjaWZpY2Fs
bHktdHlwZWQgQ1NTSW1hZ2VWYWx1ZS4KKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVy
dHlQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXI6OnBhcnNl
U2luZ2xlVmFsdWUpOiBVc2UgYXV0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFy
c2VyOjpwYXJzZVR5cGVkQ3VzdG9tUHJvcGVydHlWYWx1ZSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlVmFsdWVTdGFydCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6Y29uc3VtZVdpbGxDaGFuZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OmNvbnN1bWVGb250VmFyaWF0aW9uU2V0dGluZ3MpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OmNvbnN1bWVRdW90ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVGb250VmFy
aWFudEVhc3RBc2lhbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUZvbnRGYW1p
bHkpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVGb250RmFtaWx5RGVzY3JpcHRv
cik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUZvbnRTeW50aGVzaXMpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVMaW5lSGVpZ2h0KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OmNvbnN1bWVDb3VudGVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpjb25zdW1l
U2l6ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZVRleHRJbmRlbnQpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVDbGlwKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpjb25zdW1lQ29sdW1uV2lkdGgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1
bWVBbmltYXRpb25Qcm9wZXJ0eUxpc3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1
bWVTaGFkb3cpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVUZXh0RGVjb3JhdGlv
bkxpbmUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVUZXh0RGVjb3JhdGlvblNr
aXApOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVUZXh0RW1waGFzaXNTdHlsZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZVRyYW5zbGF0ZTNkKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpjb25zdW1lTnVtYmVycyk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6Y29uc3VtZVBlcnNwZWN0aXZlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpjb25zdW1l
VHJhbnNmb3JtVmFsdWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVUcmFuc2Zv
cm0pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVUcmFuc2xhdGUpOiBVc2UgYXV0
byBhbmQgcmV3cml0ZSB0aGUgdW5uZWNlc3NhcmlseQorICAgICAgICBjb21wbGljYXRlZCBjb2Rl
IGZvciBvbWl0dGluZyB5IGFuZCB6IHZhbHVlcyB3aGVuIHRoZSBtYXRjaCB0aGUgZGVmYXVsdC4K
KyAgICAgICAgTmV3IHZlcnNpb24gaXMgbW9yZSBzdHJhaWdodGZvcndhcmQgYW5kLCBJIGhvcGUs
IG1vcmUgY2xlYXIuCisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lU2NhbGUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnN1bWVSb3RhdGUpOiBVc2UgYXV0by4KKyAgICAgICAgKFdlYkNv
cmU6OmNvbnN1bWVQYWludFN0cm9rZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Y29uc3Vt
ZVBhaW50T3JkZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVLZXJuaW5nKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lU3Ryb2tlRGFzaGFycmF5KTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lQ3Vyc29yKTogVXNlIGF1dG8gYW5kIHN0ZDo6b3B0
aW9uYWwuCisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lQ291bnRlckNvbnRlbnQpOiBVc2UgYXV0
by4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVDb250ZW50KTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpjb25zdW1lU2Nyb2xsU25hcEFsaWduKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
Ojpjb25zdW1lU2Nyb2xsU25hcFR5cGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1
bWVCb3JkZXJSYWRpdXNDb3JuZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVW
ZXJ0aWNhbEFsaWduKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lQmFzaWNTaGFw
ZUNpcmNsZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUJhc2ljU2hhcGVQb2x5
Z29uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lQmFzaWNTaGFwZUluc2V0KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lQmFzaWNTaGFwZU9yQm94KTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lQ2xpcFBhdGgpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OmNvbnN1bWVTaGFwZU91dHNpZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNv
bnN1bWVCYXNlbGluZUtleXdvcmQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVD
b250ZW50RGlzdHJpYnV0aW9uT3ZlcmZsb3dQb3NpdGlvbik6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Y29uc3VtZUJvcmRlckltYWdlUmVwZWF0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
Ojpjb25zdW1lQm9yZGVySW1hZ2VTbGljZSk6IFJlbW92ZWQgdW5uZWVlZGVkICJ7IDAgfSIgdG8K
KyAgICAgICAgaW5pdGFsaXplIGFuIGFycmF5IG9mIFJlZlB0ciwgd2hpY2ggZG9lcyBmaW5lIHdp
dGggbm8gaW5pdGlhbGl6ZXIuCisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lQm9yZGVySW1hZ2VP
dXRzZXQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVSZWZsZWN0KTogVXNlIGF1
dG8uCisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lUHJlZml4ZWRCYWNrZ3JvdW5kQm94KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lQmFja2dyb3VuZFNpemUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnN1bWVHcmlkQXV0b0Zsb3cpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OmFkZEJhY2tncm91bmRWYWx1ZSk6IFVzZSBhdXRvIGFuZCBzdGQ6OmV4Y2hhbmdlLgor
ICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUNvbW1hU2VwYXJhdGVkQmFja2dyb3VuZENvbXBvbmVu
dCk6IFVzZSBhdXRvLgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZVNlbGZQb3NpdGlvbk92ZXJm
bG93UG9zaXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVKdXN0aWZ5SXRl
bXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVGaXRDb250ZW50KTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lR3JpZExpbmUpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OmlzR3JpZFRyYWNrRml4ZWRTaXplZCk6IFVzZSByZXR1cm4gd2l0aG91dCBpZi4KKyAg
ICAgICAgKFdlYkNvcmU6OmNvbnN1bWVHcmlkVHJhY2tTaXplKTogVXNlIGF1dG8uCisgICAgICAg
IChXZWJDb3JlOjpjb25zdW1lR3JpZExpbmVOYW1lcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6Y29uc3VtZUdyaWRUcmFja1JlcGVhdEZ1bmN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpjb25zdW1lR3JpZFRyYWNrTGlzdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Y29u
c3VtZUluaXRpYWxMZXR0ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVTcGVh
a0FzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lSGFuZ2luZ1B1bmN0dWF0aW9u
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lVGV4dEVtcGhhc2lzUG9zaXRpb24p
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVDb2xvclNjaGVtZSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUNvdW50ZXJTdHlsZU5lZ2F0aXZlKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpjb25zdW1lQ291bnRlclN0eWxlU3ltYm9scyk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6Y29uc3VtZUNvdW50ZXJTdHlsZUFkZGl0aXZlU3ltYm9scyk6IEFkZGVk
IG1pc3NpbmcgbG9naWMgdG8KKyAgICAgICAgcHV0IHRoZSBpbnRlZ2VyIGFuZCBzeW1ib2wgaW50
byB0aGVpciBvd24gc3BhY2Utc2VwYXJhdGVkIHZhbHVlIGxpc3QsCisgICAgICAgIHJhdGhlciB0
aGFuIGFkZGluZyB0aGVtIGFzIHNlcGFyYXRlIGl0ZW1zIHRvIHRoZSBjb21tYS1zZXBhcmF0ZWQg
dG9wCisgICAgICAgIGxldmUgb25lLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJz
ZXI6OmNvbnN1bWVGb250KTogVXNlIGF1dG8uCisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0
eVBhcnNlcjo6Y29uc3VtZUJvcmRlclNwYWNpbmcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkNTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lMlZhbHVlU2hvcnRoYW5kKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZTRWYWx1ZVNob3J0aGFuZCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVMZWdh
Y3lCcmVha1Byb3BlcnR5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBh
cnNlcjo6Y29uc3VtZUdyaWRJdGVtUG9zaXRpb25TaG9ydGhhbmQpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lR3JpZEFyZWFTaG9ydGhhbmQpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lR3JpZFRl
bXBsYXRlUm93c0FuZEFyZWFzQW5kQ29sdW1ucyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVHcmlkVGVtcGxhdGVTaG9ydGhhbmQpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVJbXBsaWNpdEdyaWRBdXRvRmxvdyk6IFVzZSBhdXRv
LgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVQbGFjZUNvbnRl
bnRTaG9ydGhhbmQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2Vy
Ojpjb25zdW1lUGxhY2VJdGVtc1Nob3J0aGFuZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVQbGFjZVNlbGZTaG9ydGhhbmQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lT3ZlcnNjcm9sbEJlaGF2
aW9yU2hvcnRoYW5kKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNl
cjo6cGFyc2VTaG9ydGhhbmQpOiBEaXR0by4KKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFy
c2VySGVscGVyczo6Y29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudFBvaW50KToKKyAgICAgICAgQ2hh
bmVkIHRvIGEgbW9yZSBzcGVjaWZpYyByZXR1cm4gdHlwZS4KKyAgICAgICAgKFdlYkNvcmU6OkNT
U1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lRGVw
cmVjYXRlZFJhZGlhbEdyYWRpZW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9w
ZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVSYWRpYWxHcmFkaWVudCk6IFVzZSBhdXRvIGFuZAor
ICAgICAgICBhIG1vcmUtc3BlY2lmaWMgcmV0dXJuIHR5cGUuCisgICAgICAgIChXZWJDb3JlOjpD
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVMaW5lYXJHcmFkaWVudCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lQ29uaWNH
cmFkaWVudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxw
ZXJzOjpjb25zdW1lQ3Jvc3NGYWRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9w
ZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVXZWJraXRDYW52YXMpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZVdlYmtpdE5hbWVkSW1h
Z2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6
Y29uc3VtZUltYWdlKTogUGFzcyB0aGUgc3BlY2lmaWVkCisgICAgICAgIFVSTCBzdHJpbmcgdGhy
b3VnaCB0byBDU1NJbWFnZVZhbHVlIGFsb25nIHdpdGggdGhlIHJlc29sdmVkIFVSTC4KKyAgICAg
ICAgVGhpcyBhbGxvd3MgdXMgdG8gc2VyaWFsaXplIGl0IGNvcnJlY3RseS4KKworICAgICAgICAq
IGNzcy90eXBlZG9tL1R5cGVkT01DU1NJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlR5cGVkT01DU1NJbWFnZVZhbHVlOjpjcmVhdGUpOiBNb3ZlZCB0aGlzIGhlcmUgZnJvbSB0aGUg
aGVhZGVyLgorICAgICAgICAoV2ViQ29yZTo6VHlwZWRPTUNTU0ltYWdlVmFsdWU6OmRvY3VtZW50
IGNvbnN0KTogTW92ZWQgdGhpcyB0byB0aGUgaGVhZGVyLgorICAgICAgICAqIGNzcy90eXBlZG9t
L1R5cGVkT01DU1NJbWFnZVZhbHVlLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAg
ICAqIGh0bWwvSFRNTEJvZHlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCb2R5
RWxlbWVudDo6Y29sbGVjdFByZXNlbnRhdGlvbmFsSGludHNGb3JBdHRyaWJ1dGUpOgorICAgICAg
ICBUd2Vha2VkIGNvZGluZyBzdHlsZSBhIGJpdCwgYW5kIHJlbW92ZWQgdGhlIGNvZGUgdGhhdCBj
YWxscyBjb21wbGV0ZVVSTAorICAgICAgICBiZWZvcmUgY2FsbGluZyBDU1NJbWFnZVZhbHVlOjpj
cmVhdGUuCisgICAgICAgICogaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OmNvbGxlY3RQcmVzZW50YXRpb25hbEhpbnRzRm9yQXR0
cmlidXRlKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVQYXJ0RWxlbWVudDo6Y29sbGVjdFByZXNlbnRh
dGlvbmFsSGludHNGb3JBdHRyaWJ1dGUpOiBEaXR0by4KKworICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ2FjaGVk
SW1hZ2U6OlN0eWxlQ2FjaGVkSW1hZ2UpOiBBZGRlZCBhIEZJWE1FIGNvbW1lbnQKKyAgICAgICAg
YWJvdXQgdW5uZWVkZWQgcmVwZXRpdGlvbiBvZiB0aGluZ3MgZnJvbSBDU1NJbWFnZVZhbHVlLgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVDYWNoZWRJbWFnZTo6aW1hZ2VVUkwpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVDYWNoZWRJbWFnZTo6c2V0Q29udGFpbmVyQ29udGV4dEZv
clJlbmRlcmVyKTogQ2FsbAorICAgICAgICBDU1NJbWFnZVZhbHVlOjpyZXNvbHZlZFVSTC4KKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5oOiBVcGRhdGVkIGZvciB0
aGUgYWJvdmUuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXJzb3JJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUN1cnNvckltYWdlOjpzZXRDb250YWluZXJDb250
ZXh0Rm9yUmVuZGVyZXIpOgorICAgICAgICBDYWxsIENTU0N1cnNvckltYWdlVmFsdWU6OnJlc29s
dmVkVVJMLgorCiAyMDIxLTA2LTA2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgU3RvcCB1c2luZyBsZWdhY3kgRXZlbnRMb29wRGVmZXJyYWJsZVRhc2sKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcAppbmRleCA4MmRkMGU4YzhiMDE4
YzcwNWQ2YTZiOWI4ZDA3OTlkMDA0NjNlZjMwLi4zMzIxNDY1ODc1YWU3NjczYmM2NjdhYmY1MGI3
ZmYyNzJlMWFkZDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1h
Z2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUu
Y3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBSb2IgQnVpcyA8
YnVpc0BrZGUub3JnPgogICogICAgICAgICAgIChDKSAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8
emltbWVybWFubkBrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNCwyNiAr
MjQsMjYgQEAKIAogI2luY2x1ZGUgIkNTU0ltYWdlU2V0VmFsdWUuaCIKICNpbmNsdWRlICJDU1NJ
bWFnZVZhbHVlLmgiCi0jaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKLSNpbmNsdWRlICJDYWNoZWRS
ZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlNWR0N1cnNvckVsZW1lbnQuaCIKICNpbmNsdWRl
ICJTVkdMZW5ndGhDb250ZXh0LmgiCiAjaW5jbHVkZSAiU1ZHVVJJUmVmZXJlbmNlLmgiCiAjaW5j
bHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6Q1NTQ3Vyc29ySW1hZ2VWYWx1ZShSZWY8Q1NTVmFs
dWU+JiYgaW1hZ2VWYWx1ZSwgYm9vbCBoYXNIb3RTcG90LCBjb25zdCBJbnRQb2ludCYgaG90U3Bv
dCwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSBsb2FkZWRGcm9tT3BhcXVlU291cmNlKQorQ1NTQ3Vy
c29ySW1hZ2VWYWx1ZTo6Q1NTQ3Vyc29ySW1hZ2VWYWx1ZShSZWY8Q1NTVmFsdWU+JiYgaW1hZ2VW
YWx1ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4mIGhvdFNwb3QsIExvYWRlZEZyb21P
cGFxdWVTb3VyY2UgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKICAgICA6IENTU1ZhbHVlKEN1cnNv
ckltYWdlQ2xhc3MpCiAgICAgLCBtX2ltYWdlVmFsdWUoV1RGTW92ZShpbWFnZVZhbHVlKSkKLSAg
ICAsIG1faGFzSG90U3BvdChoYXNIb3RTcG90KQogICAgICwgbV9ob3RTcG90KGhvdFNwb3QpCiAg
ICAgLCBtX2xvYWRlZEZyb21PcGFxdWVTb3VyY2UobG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKKyAg
ICAsIG1fb3JpZ2luYWxTcGVjaWZpZWRVUkxTdHJpbmcoaXM8Q1NTSW1hZ2VWYWx1ZT4obV9pbWFn
ZVZhbHVlLmdldCgpKSA/IGRvd25jYXN0PENTU0ltYWdlVmFsdWU+KG1faW1hZ2VWYWx1ZS5nZXQo
KSkuc3BlY2lmaWVkVVJMU3RyaW5nKCkgOiBTdHJpbmcgeyB9KQogewotICAgIGlmIChpczxDU1NJ
bWFnZVZhbHVlPihtX2ltYWdlVmFsdWUuZ2V0KCkpKQotICAgICAgICBtX29yaWdpbmFsVVJMID0g
ZG93bmNhc3Q8Q1NTSW1hZ2VWYWx1ZT4obV9pbWFnZVZhbHVlLmdldCgpKS51cmwoKTsKK30KKwor
UmVmPENTU0N1cnNvckltYWdlVmFsdWU+IENTU0N1cnNvckltYWdlVmFsdWU6OmNyZWF0ZShSZWY8
Q1NTVmFsdWU+JiYgaW1hZ2VWYWx1ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4mIGhv
dFNwb3QsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NDdXJzb3JJbWFnZVZhbHVlKFdURk1vdmUoaW1h
Z2VWYWx1ZSksIGhvdFNwb3QsIGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpKTsKIH0KIAogQ1NTQ3Vy
c29ySW1hZ2VWYWx1ZTo6fkNTU0N1cnNvckltYWdlVmFsdWUoKQpAQCAtNTUsMjEgKzU1LDE5IEBA
IENTU0N1cnNvckltYWdlVmFsdWU6On5DU1NDdXJzb3JJbWFnZVZhbHVlKCkKIFN0cmluZyBDU1ND
dXJzb3JJbWFnZVZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKIHsKICAgICBTdHJpbmcgdGV4
dCA9IG1faW1hZ2VWYWx1ZS5nZXQoKS5jc3NUZXh0KCk7Ci0gICAgaWYgKCFtX2hhc0hvdFNwb3Qp
CisgICAgaWYgKCFtX2hvdFNwb3QpCiAgICAgICAgIHJldHVybiB0ZXh0OwotICAgIHJldHVybiBt
YWtlU3RyaW5nKHRleHQsICcgJywgbV9ob3RTcG90LngoKSwgJyAnLCBtX2hvdFNwb3QueSgpKTsK
KyAgICByZXR1cm4gbWFrZVN0cmluZyh0ZXh0LCAnICcsIG1faG90U3BvdC0+eCgpLCAnICcsIG1f
aG90U3BvdC0+eSgpKTsKIH0KIAogLy8gRklYTUU6IFNob3VsZCB0aGlzIGZ1bmN0aW9uIHRha2Ug
YSBUcmVlU2NvcGUgaW5zdGVhZD8KIFNWR0N1cnNvckVsZW1lbnQqIENTU0N1cnNvckltYWdlVmFs
dWU6OnVwZGF0ZUN1cnNvckVsZW1lbnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAg
IGlmICghbV9vcmlnaW5hbFVSTC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIGVsZW1lbnQgPSBTVkdVUklSZWZlcmVuY2U6OnRhcmdl
dEVsZW1lbnRGcm9tSVJJU3RyaW5nKG1fb3JpZ2luYWxVUkwuc3RyaW5nKCksIGRvY3VtZW50KS5l
bGVtZW50OworICAgIGF1dG8gZWxlbWVudCA9IFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVu
dEZyb21JUklTdHJpbmcobV9vcmlnaW5hbFNwZWNpZmllZFVSTFN0cmluZywgZG9jdW1lbnQpLmVs
ZW1lbnQ7CiAgICAgaWYgKCFpczxTVkdDdXJzb3JFbGVtZW50PihlbGVtZW50KSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKKyAgICAvLyBGSVhNRTogTm90IHJpZ2h0IHRvIGtlZXAgb2xkIGN1
cnNvciBlbGVtZW50cyBhcyBjbGllbnRzLiBUaGUgbmV3IG9uZSBzaG91bGQgcmVwbGFjZSB0aGUg
b2xkLCBub3Qgam9pbiBpdCBpbiBhIHNldC4KICAgICBhdXRvJiBjdXJzb3JFbGVtZW50ID0gZG93
bmNhc3Q8U1ZHQ3Vyc29yRWxlbWVudD4oKmVsZW1lbnQpOwogICAgIGlmIChtX2N1cnNvckVsZW1l
bnRzLmFkZCgmY3Vyc29yRWxlbWVudCkuaXNOZXdFbnRyeSkgewogICAgICAgICBjdXJzb3JFbGVt
ZW50Q2hhbmdlZChjdXJzb3JFbGVtZW50KTsKQEAgLTgwLDE5ICs3OCwyMSBAQCBTVkdDdXJzb3JF
bGVtZW50KiBDU1NDdXJzb3JJbWFnZVZhbHVlOjp1cGRhdGVDdXJzb3JFbGVtZW50KGNvbnN0IERv
Y3VtZW50JiBkb2N1bQogCiB2b2lkIENTU0N1cnNvckltYWdlVmFsdWU6OmN1cnNvckVsZW1lbnRS
ZW1vdmVkKFNWR0N1cnNvckVsZW1lbnQmIGN1cnNvckVsZW1lbnQpCiB7CisgICAgLy8gRklYTUU6
IE5vdCByaWdodCB0byBzdGF5IGEgY2xpZW50IG9mIGEgY3Vyc29yIGVsZW1lbnQgdW50aWwgdGhl
IGVsZW1lbnQgaXMgZGVzdHJveWVkLiBXZSdkIHdhbnQgdG8gc3RvcCBiZWluZyBhIGNsaWVudCBv
bmNlIGl0J3Mgbm8gbG9uZ2VyIGEgdmFsaWQgdGFyZ2V0LCBsaWtlIHdoZW4gaXQncyBkaXNjb25u
ZWN0ZWQuCiAgICAgbV9jdXJzb3JFbGVtZW50cy5yZW1vdmUoJmN1cnNvckVsZW1lbnQpOwogfQog
CiB2b2lkIENTU0N1cnNvckltYWdlVmFsdWU6OmN1cnNvckVsZW1lbnRDaGFuZ2VkKFNWR0N1cnNv
ckVsZW1lbnQmIGN1cnNvckVsZW1lbnQpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgd2lsbCBvdmVy
cmlkZSBob3Qgc3BvdCBzcGVjaWZpZWQgaW4gQ1NTLCB3aGljaCBpcyBwcm9iYWJseSBpbmNvcnJl
Y3QuCisgICAgLy8gRklYTUU6IFdoeSBkb2Vzbid0IHRoaXMgY29kZSBjaGVjayBmb3IgYSBjaGFu
Z2UgdG8gdGhlIGhyZWYgb2YgdGhlIGN1cnNvciBlbGVtZW50PyBXZSBkeW5hbWljYWxseSB0cmFj
ayBjaGFuZ2VzIHRvIHgveSBidXQgbm90IGhyZWY/CisKKyAgICAvLyBGSVhNRTogTWFrZXMgbm8g
c2Vuc2UgdGhhdCBjaGFuZ2luZyBhbiBvbGQgY3Vyc29yIGVsZW1lbnQsIG9uZSB0aGF0IHRoYXQg
aXMgbm8gbG9uZ2VyIHRoZSB0YXJnZXQgZWxlbWVudCwgY2hhbmdlcyB0aGUgaG90IHNwb3QuCisg
ICAgLy8gRklYTUU6IFRoaXMgd2lsbCBvdmVycmlkZSBhIGhvdCBzcG90IHRoYXQgd2FzIHNwZWNp
ZmllZCBpbiBDU1MsIHdoaWNoIGlzIHByb2JhYmx5IGluY29ycmVjdC4KICAgICBTVkdMZW5ndGhD
b250ZXh0IGxlbmd0aENvbnRleHQobnVsbHB0cik7Ci0gICAgbV9oYXNIb3RTcG90ID0gdHJ1ZTsK
ICAgICBmbG9hdCB4ID0gc3RkOjpyb3VuZChjdXJzb3JFbGVtZW50LngoKS52YWx1ZShsZW5ndGhD
b250ZXh0KSk7Ci0gICAgbV9ob3RTcG90LnNldFgoc3RhdGljX2Nhc3Q8aW50Pih4KSk7Ci0KICAg
ICBmbG9hdCB5ID0gc3RkOjpyb3VuZChjdXJzb3JFbGVtZW50LnkoKS52YWx1ZShsZW5ndGhDb250
ZXh0KSk7Ci0gICAgbV9ob3RTcG90LnNldFkoc3RhdGljX2Nhc3Q8aW50Pih5KSk7CisgICAgLy8g
RklYTUU6IFNob3VsZCB3ZSBjbGFtcCBpbnN0ZWFkIG9mIGp1c3QgY2FzdGluZyB0byBpbnQgaGVy
ZT8KKyAgICBtX2hvdFNwb3QgPSBJbnRQb2ludCB7IHN0YXRpY19jYXN0PGludD4oeCksIHN0YXRp
Y19jYXN0PGludD4oeSkgfTsKIH0KIAogSW1hZ2VXaXRoU2NhbGUgQ1NTQ3Vyc29ySW1hZ2VWYWx1
ZTo6c2VsZWN0QmVzdEZpdEltYWdlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTEwMCw5
ICsxMDAsMTEgQEAgSW1hZ2VXaXRoU2NhbGUgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6c2VsZWN0QmVz
dEZpdEltYWdlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKICAgICBpZiAoaXM8Q1NTSW1hZ2VT
ZXRWYWx1ZT4obV9pbWFnZVZhbHVlLmdldCgpKSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PENT
U0ltYWdlU2V0VmFsdWU+KG1faW1hZ2VWYWx1ZS5nZXQoKSkuc2VsZWN0QmVzdEZpdEltYWdlKGRv
Y3VtZW50KTsKIAotICAgIGlmIChhdXRvKiBjdXJzb3JFbGVtZW50ID0gdXBkYXRlQ3Vyc29yRWxl
bWVudChkb2N1bWVudCkpIHsKLSAgICAgICAgaWYgKGN1cnNvckVsZW1lbnQtPmhyZWYoKSAhPSBk
b3duY2FzdDxDU1NJbWFnZVZhbHVlPihtX2ltYWdlVmFsdWUuZ2V0KCkpLnVybCgpKQotICAgICAg
ICAgICAgbV9pbWFnZVZhbHVlID0gQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKGRvY3VtZW50LmNvbXBs
ZXRlVVJMKGN1cnNvckVsZW1lbnQtPmhyZWYoKSksIG1fbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSk7
CisgICAgaWYgKGF1dG8gY3Vyc29yRWxlbWVudCA9IHVwZGF0ZUN1cnNvckVsZW1lbnQoZG9jdW1l
bnQpKSB7CisgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgYmUgc3RyaXBwaW5nIGxlYWRpbmcg
YW5kIHRyYWlsaW5nIEhUTUwgc3BhY2VzIGhlcmU/CisgICAgICAgIGF1dG8gaHJlZiA9IGN1cnNv
ckVsZW1lbnQtPmhyZWYoKTsKKyAgICAgICAgaWYgKGhyZWYgIT0gZG93bmNhc3Q8Q1NTSW1hZ2VW
YWx1ZT4obV9pbWFnZVZhbHVlLmdldCgpKS5zcGVjaWZpZWRVUkxTdHJpbmcoKSkKKyAgICAgICAg
ICAgIG1faW1hZ2VWYWx1ZSA9IENTU0ltYWdlVmFsdWU6OmNyZWF0ZShXVEZNb3ZlKGhyZWYpLCBt
X2xvYWRlZEZyb21PcGFxdWVTb3VyY2UpOwogICAgIH0KIAogICAgIHJldHVybiB7IG1faW1hZ2VW
YWx1ZS5wdHIoKSAsIDEgfTsKQEAgLTExMCw4ICsxMTIsMTMgQEAgSW1hZ2VXaXRoU2NhbGUgQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZTo6c2VsZWN0QmVzdEZpdEltYWdlKGNvbnN0IERvY3VtZW50JiBkb2N1
bWVudCkKIAogYm9vbCBDU1NDdXJzb3JJbWFnZVZhbHVlOjplcXVhbHMoY29uc3QgQ1NTQ3Vyc29y
SW1hZ2VWYWx1ZSYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faGFzSG90U3BvdCA/IG90
aGVyLm1faGFzSG90U3BvdCAmJiBtX2hvdFNwb3QgPT0gb3RoZXIubV9ob3RTcG90IDogIW90aGVy
Lm1faGFzSG90U3BvdAotICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWUobV9pbWFnZVZhbHVlLCBv
dGhlci5tX2ltYWdlVmFsdWUpOworICAgIHJldHVybiBtX2hvdFNwb3QgPT0gb3RoZXIubV9ob3RT
cG90ICYmIGNvbXBhcmVDU1NWYWx1ZShtX2ltYWdlVmFsdWUsIG90aGVyLm1faW1hZ2VWYWx1ZSk7
Cit9CisKK1VSTCBDU1NDdXJzb3JJbWFnZVZhbHVlOjpyZXNvbHZlZFVSTChEb2N1bWVudCYgZG9j
dW1lbnQpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IE5vdCBjbGVhciB0aGF0IHJldHVybmluZyBh
IG51bGwgVVJMIGZvciB0aGUgQ1NTSW1hZ2VTZXRWYWx1ZSBjYXNlIGlzIE9LLgorICAgIHJldHVy
biBpczxDU1NJbWFnZVZhbHVlPihtX2ltYWdlVmFsdWUuZ2V0KCkpID8gZG93bmNhc3Q8Q1NTSW1h
Z2VWYWx1ZT4obV9pbWFnZVZhbHVlLmdldCgpKS5yZXNvbHZlZFVSTChkb2N1bWVudCkgOiBVUkwg
eyB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1
cnNvckltYWdlVmFsdWUuaAppbmRleCBiMzA2ZmRhNDg1ZWMyMjgxOTc4NGIzNWI2ODY3MWMzNmE1
YTJmYTQ4Li4yMTk1YjY4ODk0NWVhZWQ5ZmQ2M2RkM2VkOTZhNWJiMGE3MjI3ZTg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmgKQEAgLTEsNiArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmln
aHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHQgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodCByZXNlcnZlZC4KICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtMjcsNjIgKzI3LDQxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgQ2FjaGVkSW1hZ2U7Ci1jbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIERvY3Vt
ZW50OwotY2xhc3MgRWxlbWVudDsKIGNsYXNzIFNWR0N1cnNvckVsZW1lbnQ7Ci1jbGFzcyBTVkdF
bGVtZW50OwogCiBzdHJ1Y3QgSW1hZ2VXaXRoU2NhbGU7CiAKLW5hbWVzcGFjZSBTdHlsZSB7Ci1j
bGFzcyBCdWlsZGVyU3RhdGU7Ci19Ci0KIGNsYXNzIENTU0N1cnNvckltYWdlVmFsdWUgZmluYWwg
OiBwdWJsaWMgQ1NTVmFsdWUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q1NTQ3Vyc29ySW1h
Z2VWYWx1ZT4gY3JlYXRlKFJlZjxDU1NWYWx1ZT4mJiBpbWFnZVZhbHVlLCBib29sIGhhc0hvdFNw
b3QsIGNvbnN0IEludFBvaW50JiBob3RTcG90LCBMb2FkZWRGcm9tT3BhcXVlU291cmNlIGxvYWRl
ZEZyb21PcGFxdWVTb3VyY2UpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBD
U1NDdXJzb3JJbWFnZVZhbHVlKFdURk1vdmUoaW1hZ2VWYWx1ZSksIGhhc0hvdFNwb3QsIGhvdFNw
b3QsIGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpKTsKLSAgICB9Ci0KKyAgICBzdGF0aWMgUmVmPENT
U0N1cnNvckltYWdlVmFsdWU+IGNyZWF0ZShSZWY8Q1NTVmFsdWU+JiYgaW1hZ2VWYWx1ZSwgY29u
c3Qgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4mIGhvdFNwb3QsIExvYWRlZEZyb21PcGFxdWVTb3Vy
Y2UpOwogICAgIH5DU1NDdXJzb3JJbWFnZVZhbHVlKCk7CiAKLSAgICBib29sIGhhc0hvdFNwb3Qo
KSBjb25zdCB7IHJldHVybiBtX2hhc0hvdFNwb3Q7IH0KLQotICAgIEludFBvaW50IGhvdFNwb3Qo
KSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKG1faGFzSG90U3BvdCkKLSAgICAgICAgICAgIHJl
dHVybiBtX2hvdFNwb3Q7Ci0gICAgICAgIHJldHVybiBJbnRQb2ludCgtMSwgLTEpOwotICAgIH0K
KyAgICBib29sIGhhc0hvdFNwb3QoKSBjb25zdCB7IHJldHVybiBtX2hvdFNwb3QuaGFzX3ZhbHVl
KCk7IH0KKyAgICBJbnRQb2ludCBob3RTcG90KCkgY29uc3QgeyByZXR1cm4gbV9ob3RTcG90LnZh
bHVlX29yKEludFBvaW50IHsgLTEsIC0xIH0pOyB9CiAKLSAgICBjb25zdCBVUkwmIGltYWdlVVJM
KCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5hbFVSTDsgfQorICAgIFVSTCByZXNvbHZlZFVSTChE
b2N1bWVudCYpIGNvbnN0OwogCiAgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdDsKIAog
ICAgIEltYWdlV2l0aFNjYWxlIHNlbGVjdEJlc3RGaXRJbWFnZShjb25zdCBEb2N1bWVudCYpOwog
Ci0gICAgdm9pZCByZW1vdmVSZWZlcmVuY2VkRWxlbWVudChTVkdFbGVtZW50Kik7Ci0KICAgICBi
b29sIGVxdWFscyhjb25zdCBDU1NDdXJzb3JJbWFnZVZhbHVlJikgY29uc3Q7CiAKICAgICB2b2lk
IGN1cnNvckVsZW1lbnRSZW1vdmVkKFNWR0N1cnNvckVsZW1lbnQmKTsKICAgICB2b2lkIGN1cnNv
ckVsZW1lbnRDaGFuZ2VkKFNWR0N1cnNvckVsZW1lbnQmKTsKIAogcHJpdmF0ZToKLSAgICBDU1ND
dXJzb3JJbWFnZVZhbHVlKFJlZjxDU1NWYWx1ZT4mJiBpbWFnZVZhbHVlLCBib29sIGhhc0hvdFNw
b3QsIGNvbnN0IEludFBvaW50JiBob3RTcG90LCBMb2FkZWRGcm9tT3BhcXVlU291cmNlKTsKKyAg
ICBDU1NDdXJzb3JJbWFnZVZhbHVlKFJlZjxDU1NWYWx1ZT4mJiBpbWFnZVZhbHVlLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPEludFBvaW50PiYgaG90U3BvdCwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSk7
CiAKICAgICBTVkdDdXJzb3JFbGVtZW50KiB1cGRhdGVDdXJzb3JFbGVtZW50KGNvbnN0IERvY3Vt
ZW50Jik7CiAKLSAgICBVUkwgbV9vcmlnaW5hbFVSTDsKICAgICBSZWY8Q1NTVmFsdWU+IG1faW1h
Z2VWYWx1ZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBtX2hvdFNwb3Q7CisgICAgTG9h
ZGVkRnJvbU9wYXF1ZVNvdXJjZSBtX2xvYWRlZEZyb21PcGFxdWVTb3VyY2UgeyBMb2FkZWRGcm9t
T3BhcXVlU291cmNlOjpObyB9OwogCi0gICAgYm9vbCBtX2hhc0hvdFNwb3Q7Ci0gICAgSW50UG9p
bnQgbV9ob3RTcG90OworICAgIFN0cmluZyBtX29yaWdpbmFsU3BlY2lmaWVkVVJMU3RyaW5nOwog
ICAgIEhhc2hTZXQ8U1ZHQ3Vyc29yRWxlbWVudCo+IG1fY3Vyc29yRWxlbWVudHM7Ci0gICAgTG9h
ZGVkRnJvbU9wYXF1ZVNvdXJjZSBtX2xvYWRlZEZyb21PcGFxdWVTb3VyY2UgeyBMb2FkZWRGcm9t
T3BhcXVlU291cmNlOjpObyB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCmluZGV4IGMwZjVhMTZkN2VmOGRjYjQxZTIzMDliMzQx
MWMwZTM5Y2E5MGIwMjEuLjc0NmI3MGJkNDA3MzgyODI4YTM2YjYzZGI4OWNiM2MyMWIyZWZlMmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgog
ICogKEMpIDE5OTktMjAwMyBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQotICogQ29weXJpZ2h0
IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA0LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC0zNCw0NyArMzQsNTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1DU1NJbWFnZVZhbHVlOjpDU1NJbWFnZVZhbHVlKFVSTCYmIHVybCwgTG9hZGVkRnJvbU9wYXF1
ZVNvdXJjZSBsb2FkZWRGcm9tT3BhcXVlU291cmNlKQorQ1NTSW1hZ2VWYWx1ZTo6Q1NTSW1hZ2VW
YWx1ZShTdHJpbmcmJiBzcGVjaWZpZWRVUkxTdHJpbmcsIFVSTCYmIGFscmVhZHlSZXNvbHZlZFVS
TCwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSBsb2FkZWRGcm9tT3BhcXVlU291cmNlKQogICAgIDog
Q1NTVmFsdWUoSW1hZ2VDbGFzcykKLSAgICAsIG1fdXJsKFdURk1vdmUodXJsKSkKLSAgICAsIG1f
YWNjZXNzZWRJbWFnZShmYWxzZSkKKyAgICAsIG1fc3BlY2lmaWVkVVJMU3RyaW5nKFdURk1vdmUo
c3BlY2lmaWVkVVJMU3RyaW5nKSkKKyAgICAsIG1fYWxyZWFkeVJlc29sdmVkVVJMKFdURk1vdmUo
YWxyZWFkeVJlc29sdmVkVVJMKSkKICAgICAsIG1fbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZShsb2Fk
ZWRGcm9tT3BhcXVlU291cmNlKQogewogfQogCiBDU1NJbWFnZVZhbHVlOjpDU1NJbWFnZVZhbHVl
KENhY2hlZEltYWdlJiBpbWFnZSkKICAgICA6IENTU1ZhbHVlKEltYWdlQ2xhc3MpCi0gICAgLCBt
X3VybChpbWFnZS51cmwoKSkKICAgICAsIG1fY2FjaGVkSW1hZ2UoJmltYWdlKQotICAgICwgbV9h
Y2Nlc3NlZEltYWdlKHRydWUpCisgICAgLCBtX3N0YXJ0ZWRJbWFnZUxvYWQodHJ1ZSkKIHsKIH0K
IAorUmVmPENTU0ltYWdlVmFsdWU+IENTU0ltYWdlVmFsdWU6OmNyZWF0ZShTdHJpbmcmJiBzcGVj
aWZpZWRVUkxTdHJpbmcsIFVSTCYmIGFscmVhZHlSZXNvbHZlZFVSTCwgTG9hZGVkRnJvbU9wYXF1
ZVNvdXJjZSBsb2FkZWRGcm9tT3BhcXVlU291cmNlKQoreworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IENTU0ltYWdlVmFsdWUoV1RGTW92ZShzcGVjaWZpZWRVUkxTdHJpbmcpLCBXVEZNb3ZlKGFs
cmVhZHlSZXNvbHZlZFVSTCksIGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpKTsKK30KIAotQ1NTSW1h
Z2VWYWx1ZTo6fkNTU0ltYWdlVmFsdWUoKSA9IGRlZmF1bHQ7CitSZWY8Q1NTSW1hZ2VWYWx1ZT4g
Q1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKFN0cmluZyYmIHNwZWNpZmllZFVSTFN0cmluZywgTG9hZGVk
RnJvbU9wYXF1ZVNvdXJjZSBsb2FkZWRGcm9tT3BhcXVlU291cmNlKQoreworICAgIHJldHVybiBj
cmVhdGUoV1RGTW92ZShzcGVjaWZpZWRVUkxTdHJpbmcpLCB7IH0sIGxvYWRlZEZyb21PcGFxdWVT
b3VyY2UpOworfQogCi1ib29sIENTU0ltYWdlVmFsdWU6OmlzUGVuZGluZygpIGNvbnN0CitSZWY8
Q1NTSW1hZ2VWYWx1ZT4gQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKENhY2hlZEltYWdlJiBpbWFnZSkK
IHsKLSAgICByZXR1cm4gIW1fYWNjZXNzZWRJbWFnZTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBDU1NJbWFnZVZhbHVlKGltYWdlKSk7CiB9CiAKK0NTU0ltYWdlVmFsdWU6On5DU1NJbWFnZVZh
bHVlKCkgPSBkZWZhdWx0OworCiBDYWNoZWRJbWFnZSogQ1NTSW1hZ2VWYWx1ZTo6bG9hZEltYWdl
KENhY2hlZFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9u
cyYgb3B0aW9ucykKIHsKLSAgICBpZiAoIW1fYWNjZXNzZWRJbWFnZSkgewotICAgICAgICBtX2Fj
Y2Vzc2VkSW1hZ2UgPSB0cnVlOwotCi0gICAgICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucyBsb2Fk
T3B0aW9ucyA9IG9wdGlvbnM7CisgICAgaWYgKCFtX3N0YXJ0ZWRJbWFnZUxvYWQgJiYgbG9hZGVy
LmRvY3VtZW50KCkpIHsKKyAgICAgICAgbV9zdGFydGVkSW1hZ2VMb2FkID0gdHJ1ZTsKKyAgICAg
ICAgYXV0byYgZG9jdW1lbnQgPSAqbG9hZGVyLmRvY3VtZW50KCk7CisgICAgICAgIGF1dG8gbG9h
ZE9wdGlvbnMgPSBvcHRpb25zOwogICAgICAgICBsb2FkT3B0aW9ucy5sb2FkZWRGcm9tT3BhcXVl
U291cmNlID0gbV9sb2FkZWRGcm9tT3BhcXVlU291cmNlOwotICAgICAgICBDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJlcXVlc3QobG9hZGVyLmRvY3VtZW50KCktPmNvbXBs
ZXRlVVJMKG1fdXJsLnN0cmluZygpKSksIGxvYWRPcHRpb25zKTsKKyAgICAgICAgQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KHJlc29sdmVkVVJMKGRvY3VtZW50
KSksIGxvYWRPcHRpb25zKTsKICAgICAgICAgaWYgKG1faW5pdGlhdG9yTmFtZS5pc0VtcHR5KCkp
CiAgICAgICAgICAgICByZXF1ZXN0LnNldEluaXRpYXRvcihjYWNoZWRSZXNvdXJjZVJlcXVlc3RJ
bml0aWF0b3JzKCkuY3NzKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVxdWVzdC5zZXRJ
bml0aWF0b3IobV9pbml0aWF0b3JOYW1lKTsKLQotICAgICAgICBpZiAob3B0aW9ucy5tb2RlID09
IEZldGNoT3B0aW9uczo6TW9kZTo6Q29ycykgewotICAgICAgICAgICAgQVNTRVJUKGxvYWRlci5k
b2N1bWVudCgpKTsKLSAgICAgICAgICAgIHJlcXVlc3QudXBkYXRlRm9yQWNjZXNzQ29udHJvbCgq
bG9hZGVyLmRvY3VtZW50KCkpOwotICAgICAgICB9CisgICAgICAgIGlmIChvcHRpb25zLm1vZGUg
PT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpDb3JzKQorICAgICAgICAgICAgcmVxdWVzdC51cGRhdGVG
b3JBY2Nlc3NDb250cm9sKGRvY3VtZW50KTsKICAgICAgICAgbV9jYWNoZWRJbWFnZSA9IGxvYWRl
ci5yZXF1ZXN0SW1hZ2UoV1RGTW92ZShyZXF1ZXN0KSkudmFsdWVfb3IobnVsbHB0cik7CiAgICAg
fQogICAgIHJldHVybiBtX2NhY2hlZEltYWdlLmdldCgpOwpAQCAtODIsMzIgKzg3LDQ0IEBAIENh
Y2hlZEltYWdlKiBDU1NJbWFnZVZhbHVlOjpsb2FkSW1hZ2UoQ2FjaGVkUmVzb3VyY2VMb2FkZXIm
IGxvYWRlciwgY29uc3QgUmVzb3VyCiAKIGJvb2wgQ1NTSW1hZ2VWYWx1ZTo6dHJhdmVyc2VTdWJy
ZXNvdXJjZXMoY29uc3QgV1RGOjpGdW5jdGlvbjxib29sIChjb25zdCBDYWNoZWRSZXNvdXJjZSYp
PiYgaGFuZGxlcikgY29uc3QKIHsKLSAgICBpZiAoIW1fY2FjaGVkSW1hZ2UpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICByZXR1cm4gaGFuZGxlcigqbV9jYWNoZWRJbWFnZSk7CisgICAgcmV0
dXJuIG1fY2FjaGVkSW1hZ2UgJiYgaGFuZGxlcigqbV9jYWNoZWRJbWFnZSk7CiB9CiAKIGJvb2wg
Q1NTSW1hZ2VWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU0ltYWdlVmFsdWUmIG90aGVyKSBjb25zdAog
ewotICAgIHJldHVybiBtX3VybCA9PSBvdGhlci5tX3VybDsKKyAgICByZXR1cm4gc3BlY2lmaWVk
VVJMU3RyaW5nKCkgPT0gb3RoZXIuc3BlY2lmaWVkVVJMU3RyaW5nKCk7Cit9CisKK1N0cmluZyBD
U1NJbWFnZVZhbHVlOjpzcGVjaWZpZWRVUkxTdHJpbmcoKSBjb25zdAoreworICAgIGlmIChtX3Nw
ZWNpZmllZFVSTFN0cmluZy5pc051bGwoKSAmJiBtX2NhY2hlZEltYWdlKQorICAgICAgICByZXR1
cm4gbV9jYWNoZWRJbWFnZS0+dXJsKCkuc3RyaW5nKCk7CisgICAgcmV0dXJuIG1fc3BlY2lmaWVk
VVJMU3RyaW5nOwogfQogCiBTdHJpbmcgQ1NTSW1hZ2VWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIHNlcmlhbGl6ZVVSTChtX3VybC5zdHJpbmcoKSk7CisgICAgcmV0
dXJuIHNlcmlhbGl6ZVVSTChzcGVjaWZpZWRVUkxTdHJpbmcoKSk7CiB9CiAKIFJlZjxEZXByZWNh
dGVkQ1NTT01WYWx1ZT4gQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlRGVwcmVjYXRlZENTU09NV3JhcHBl
cihDU1NTdHlsZURlY2xhcmF0aW9uJiBzdHlsZURlY2xhcmF0aW9uKSBjb25zdAogewotICAgIC8v
IE5PVEU6IFdlIGV4cG9zZSBDU1NJbWFnZVZhbHVlcyBhcyBVUkkgcHJpbWl0aXZlIHZhbHVlcyBp
biBDU1NPTSB0byBtYWludGFpbiBvbGQgYmVoYXZpb3IuCi0gICAgcmV0dXJuIERlcHJlY2F0ZWRD
U1NPTVByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShtX3Vy
bC5zdHJpbmcoKSwgQ1NTVW5pdFR5cGU6OkNTU19VUkkpLCBzdHlsZURlY2xhcmF0aW9uKTsKKyAg
ICAvLyBXZSBleHBvc2UgdGhlc2UgYXMgVVJJIHByaW1pdGl2ZSB2YWx1ZXMgdG8gbWFpbnRhaW4g
bGVnYWN5IGJlaGF2aW9yLgorICAgIHJldHVybiBEZXByZWNhdGVkQ1NTT01QcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoc3BlY2lmaWVkVVJMU3RyaW5nKCks
IENTU1VuaXRUeXBlOjpDU1NfVVJJKSwgc3R5bGVEZWNsYXJhdGlvbik7CiB9CiAKIGJvb2wgQ1NT
SW1hZ2VWYWx1ZTo6a25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVy
KSBjb25zdAogewotICAgIGlmICghbV9jYWNoZWRJbWFnZSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIHJldHVybiBtX2NhY2hlZEltYWdlLT5jdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUo
JnJlbmRlcmVyKTsKKyAgICByZXR1cm4gbV9jYWNoZWRJbWFnZSAmJiBtX2NhY2hlZEltYWdlLT5j
dXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoJnJlbmRlcmVyKTsKK30KKworVVJMIENTU0ltYWdl
VmFsdWU6OnJlc29sdmVkVVJMKERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKK3sKKyAgICBpZiAo
bV9jYWNoZWRJbWFnZSkKKyAgICAgICAgcmV0dXJuIG1fY2FjaGVkSW1hZ2UtPnVybCgpOworICAg
IGlmICghbV9hbHJlYWR5UmVzb2x2ZWRVUkwuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBtX2Fs
cmVhZHlSZXNvbHZlZFVSTDsKKyAgICByZXR1cm4gZG9jdW1lbnQuY29tcGxldGVVUkwobV9zcGVj
aWZpZWRVUkxTdHJpbmcpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ltYWdlVmFsdWUuaAppbmRleCA3ZTZiYmI5NTE0NTMyNTI2ODM2NGM1N2NiNTY3NjIyMzcx
NGI0Yjc2Li5kN2Y4OGMxZDM4ODExZTRlYTIwOTIyYmQ2YTQzNWQzNGQ4YWU4ZjQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgKQEAgLTM2LDE1ICszNiwxOSBAQCBjbGFzcyBSZW5kZXJF
bGVtZW50OwogCiBjbGFzcyBDU1NJbWFnZVZhbHVlIGZpbmFsIDogcHVibGljIENTU1ZhbHVlIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENTU0ltYWdlVmFsdWU+IGNyZWF0ZShVUkwmJiB1cmws
IExvYWRlZEZyb21PcGFxdWVTb3VyY2UgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDU1NJbWFnZVZhbHVlKFdURk1vdmUodXJsKSwgbG9hZGVkRnJvbU9wYXF1
ZVNvdXJjZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxDU1NJbWFnZVZhbHVlPiBjcmVhdGUoQ2FjaGVk
SW1hZ2UmIGltYWdlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENTU0ltYWdlVmFsdWUoaW1hZ2Up
KTsgfQorICAgIHN0YXRpYyBSZWY8Q1NTSW1hZ2VWYWx1ZT4gY3JlYXRlKFN0cmluZyYmIHNwZWNp
ZmllZFVSTFN0cmluZywgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSk7CisgICAgc3RhdGljIFJlZjxD
U1NJbWFnZVZhbHVlPiBjcmVhdGUoQ2FjaGVkSW1hZ2UmKTsKICAgICB+Q1NTSW1hZ2VWYWx1ZSgp
OwogCisgICAgLy8gRklYTUU6IFRoaXMgdGFrZXMgYm90aCBhIHN0cmluZyBmb3IgdGhlIFVSTCBh
bmQgYW4gYWxyZWFkeS1yZXNvbHZlZCBVUkwuIFRoZSBzdHJpbmcgaXMgbmVlZGVkIGZvciBjb3Jy
ZWN0IHNlcmlhbGl6YXRpb24uIFRoZSBhbHJlYWR5LXJlc29sdmVkIFVSTCBpcyBhcHBhcmVudGx5
IHVzZWQgZm9yIHByb3BlciBjaGFyYWN0ZXIgc2V0IGhhbmRsaW5nIChzZWUgQ1NTUGFyc2VyQ29u
dGV4dDo6Y29tcGxldGVVUkwpIGJ1dCB0aGF0IHNlZW1zIHVubmVlZGVkOyB3ZSBzaG91bGQgY29u
ZmlybSB0aGF0IGFuZCBkZWxldGUgdGhpcy4KKyAgICBzdGF0aWMgUmVmPENTU0ltYWdlVmFsdWU+
IGNyZWF0ZShTdHJpbmcmJiBzcGVjaWZpZWRVUkxTdHJpbmcsIFVSTCYmIGFscmVhZHlSZXNvbHZl
ZFVSTCwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSk7CisKICAgICBib29sIGlzUGVuZGluZygpIGNv
bnN0OwogICAgIENhY2hlZEltYWdlKiBsb2FkSW1hZ2UoQ2FjaGVkUmVzb3VyY2VMb2FkZXImLCBj
b25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1h
Z2UoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlLmdldCgpOyB9CiAKLSAgICBjb25zdCBV
UkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgU3RyaW5nIHNwZWNpZmllZFVS
TFN0cmluZygpIGNvbnN0OworICAgIFVSTCByZXNvbHZlZFVSTChEb2N1bWVudCYpIGNvbnN0Owog
CiAgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdDsKIApAQCAtNTksMTYgKzYzLDI1IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldEluaXRpYXRvcihjb25zdCBBdG9tU3RyaW5nJiBuYW1lKSB7
IG1faW5pdGlhdG9yTmFtZSA9IG5hbWU7IH0KIAogcHJpdmF0ZToKLSAgICBDU1NJbWFnZVZhbHVl
KFVSTCYmLCBMb2FkZWRGcm9tT3BhcXVlU291cmNlKTsKKyAgICBDU1NJbWFnZVZhbHVlKFN0cmlu
ZyYmLCBVUkwmJiwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSk7CiAgICAgZXhwbGljaXQgQ1NTSW1h
Z2VWYWx1ZShDYWNoZWRJbWFnZSYpOwogCi0gICAgVVJMIG1fdXJsOworICAgIFR5cGUgY3NzVmFs
dWVUeXBlKCkgY29uc3QgPSBkZWxldGU7CisgICAgU3RyaW5nIGNzc1RleHQoKSBjb25zdCA9IGRl
bGV0ZTsKKworICAgIFN0cmluZyBtX3NwZWNpZmllZFVSTFN0cmluZzsKKyAgICBVUkwgbV9hbHJl
YWR5UmVzb2x2ZWRVUkw7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IG1f
Y2FjaGVkSW1hZ2U7Ci0gICAgYm9vbCBtX2FjY2Vzc2VkSW1hZ2U7CisgICAgYm9vbCBtX3N0YXJ0
ZWRJbWFnZUxvYWQgeyBmYWxzZSB9OwogICAgIEF0b21TdHJpbmcgbV9pbml0aWF0b3JOYW1lOwog
ICAgIExvYWRlZEZyb21PcGFxdWVTb3VyY2UgbV9sb2FkZWRGcm9tT3BhcXVlU291cmNlIHsgTG9h
ZGVkRnJvbU9wYXF1ZVNvdXJjZTo6Tm8gfTsKIH07CiAKK2lubGluZSBib29sIENTU0ltYWdlVmFs
dWU6OmlzUGVuZGluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX3N0YXJ0ZWRJbWFnZUxvYWQ7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19D
U1NfVkFMVUUoQ1NTSW1hZ2VWYWx1ZSwgaXNJbWFnZVZhbHVlKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCmluZGV4IDY4NDUyMzc4NjkzMjYw
ODZjYmNhZTBlZDk0ZGJjM2E1NmRlYjUyZjUuLmM3OWEzYjE1NDFiMDI3YTU0Y2Q4YmViOGRjNjE5
NjU3OTk5MGQ0ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJv
cGVydHlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVy
dHlQYXJzZXIuY3BwCkBAIC0yNzMsNyArMjczLDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDU1NQcm9w
ZXJ0eVBhcnNlcjo6cGFyc2VTaW5nbGVWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb24K
ICAgICBpZiAoYXV0byB2YWx1ZSA9IG1heWJlQ29uc3VtZUNTU1dpZGVLZXl3b3JkKHBhcnNlci5t
X3JhbmdlKSkKICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIAotICAgIFJlZlB0cjxDU1NWYWx1
ZT4gdmFsdWUgPSBwYXJzZXIucGFyc2VTaW5nbGVWYWx1ZShwcm9wZXJ0eSk7CisgICAgYXV0byB2
YWx1ZSA9IHBhcnNlci5wYXJzZVNpbmdsZVZhbHVlKHByb3BlcnR5KTsKICAgICBpZiAoIXZhbHVl
IHx8ICFwYXJzZXIubV9yYW5nZS5hdEVuZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICByZXR1cm4gdmFsdWU7CkBAIC0yODgsNyArMjg4LDcgQEAgYm9vbCBDU1NQcm9wZXJ0eVBhcnNl
cjo6Y2FuUGFyc2VUeXBlZEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgU3RyaW5nJiBzeW50YXgs
IGMKIFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFy
c2VUeXBlZEN1c3RvbVByb3BlcnR5VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIHN5bnRheCwgY29uc3QgQ1NTUGFyc2VyVG9rZW5SYW5nZSYgdG9rZW5zLCBjb25zdCBTdHls
ZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNv
bnRleHQpCiB7CiAgICAgQ1NTUHJvcGVydHlQYXJzZXIgcGFyc2VyKHRva2VucywgY29udGV4dCwg
bnVsbHB0ciwgZmFsc2UpOwotICAgIFJlZlB0cjxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPiB2YWx1
ZSA9IHBhcnNlci5wYXJzZVR5cGVkQ3VzdG9tUHJvcGVydHlWYWx1ZShuYW1lLCBzeW50YXgsIGJ1
aWxkZXJTdGF0ZSk7CisgICAgYXV0byB2YWx1ZSA9IHBhcnNlci5wYXJzZVR5cGVkQ3VzdG9tUHJv
cGVydHlWYWx1ZShuYW1lLCBzeW50YXgsIGJ1aWxkZXJTdGF0ZSk7CiAgICAgaWYgKCF2YWx1ZSB8
fCAhcGFyc2VyLm1fcmFuZ2UuYXRFbmQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
cmV0dXJuIHZhbHVlOwpAQCAtMzEzLDcgKzMxMyw3IEBAIGJvb2wgQ1NTUHJvcGVydHlQYXJzZXI6
OnBhcnNlVmFsdWVTdGFydChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGJvb2wgaW1wb3J0YW50
CiAgICAgICAgIGlmIChwYXJzZVNob3J0aGFuZChwcm9wZXJ0eUlELCBpbXBvcnRhbnQpKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUmVmUHRyPENTU1Zh
bHVlPiBwYXJzZWRWYWx1ZSA9IHBhcnNlU2luZ2xlVmFsdWUocHJvcGVydHlJRCk7CisgICAgICAg
IGF1dG8gcGFyc2VkVmFsdWUgPSBwYXJzZVNpbmdsZVZhbHVlKHByb3BlcnR5SUQpOwogICAgICAg
ICBpZiAocGFyc2VkVmFsdWUgJiYgbV9yYW5nZS5hdEVuZCgpKSB7CiAgICAgICAgICAgICBhZGRQ
cm9wZXJ0eShwcm9wZXJ0eUlELCBDU1NQcm9wZXJ0eUludmFsaWQsICpwYXJzZWRWYWx1ZSwgaW1w
b3J0YW50KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNDg3LDcgKzQ4Nyw3IEBAIHN0
YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVXaWxsQ2hhbmdlKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlKQogICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NWYWx1ZUF1dG8pCiAg
ICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOwogCi0gICAgUmVmUHRyPENTU1ZhbHVl
TGlzdD4gdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAg
IGF1dG8gdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAg
IC8vIEV2ZXJ5IGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGlkZW50aWZpZXJzIGlzIGEgdmFsaWQg
d2lsbC1jaGFuZ2UgdmFsdWUsCiAgICAgLy8gdW5sZXNzIHRoZSBsaXN0IGluY2x1ZGVzIGFuIGV4
cGxpY2l0bHkgZGlzYWxsb3dlZCBpZGVudGlmaWVyLgogICAgIHdoaWxlICh0cnVlKSB7CkBAIC01
MjcsNyArNTI3LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVdpbGxDaGFuZ2Uo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKLSAgICByZXR1cm4gdmFsdWVzOworICAgIHJldHVybiBXVEZNb3ZlKHZhbHVlcyk7
CiB9CiAKICNpZiBFTkFCTEUoVkFSSUFUSU9OX0ZPTlRTKQpAQCAtNTY2LDcgKzU2Niw3IEBAIHN0
YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVGb250VmFyaWF0aW9uU2V0dGluZ3MoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiAgICAgCiAgICAgYXV0byBzZXR0aW5ncyA9IENTU1ZhbHVl
TGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICBkbyB7Ci0gICAgICAgIFJlZlB0cjxD
U1NWYWx1ZT4gdmFyaWF0aW9uVmFsdWUgPSBjb25zdW1lRm9udFZhcmlhdGlvblRhZyhyYW5nZSk7
CisgICAgICAgIGF1dG8gdmFyaWF0aW9uVmFsdWUgPSBjb25zdW1lRm9udFZhcmlhdGlvblRhZyhy
YW5nZSk7CiAgICAgICAgIGlmICghdmFyaWF0aW9uVmFsdWUpCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgc2V0dGluZ3MtPmFwcGVuZCh2YXJpYXRpb25WYWx1ZS5yZWxlYXNl
Tm9uTnVsbCgpKTsKQEAgLTU3NSw3ICs1NzUsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBj
b25zdW1lRm9udFZhcmlhdGlvblNldHRpbmdzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQog
ICAgIGlmICghc2V0dGluZ3MtPmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIHJldHVybiBzZXR0aW5nczsKKyAgICByZXR1cm4gV1RGTW92ZShzZXR0aW5ncyk7CiB9CiAj
ZW5kaWYgLy8gRU5BQkxFKFZBUklBVElPTl9GT05UUykKIApAQCAtNTkxLDE1ICs1OTEsMTUgQEAg
c3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVF1b3RlcyhDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSkKICAgICBhdXRvIGlkID0gcmFuZ2UucGVlaygpLmlkKCk7CiAgICAgaWYgKGlkID09
IENTU1ZhbHVlTm9uZSB8fCBpZCA9PSBDU1NWYWx1ZUF1dG8pCiAgICAgICAgIHJldHVybiBjb25z
dW1lSWRlbnQocmFuZ2UpOwotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHZhbHVlcyA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBhdXRvIHZhbHVlcyA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICB3aGlsZSAoIXJhbmdlLmF0RW5k
KCkpIHsKLSAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZWRWYWx1ZSA9IGNv
bnN1bWVTdHJpbmcocmFuZ2UpOworICAgICAgICBhdXRvIHBhcnNlZFZhbHVlID0gY29uc3VtZVN0
cmluZyhyYW5nZSk7CiAgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgdmFsdWVzLT5hcHBlbmQocGFyc2VkVmFsdWUucmVsZWFzZU5v
bk51bGwoKSk7CiAgICAgfQogICAgIGlmICh2YWx1ZXMtPmxlbmd0aCgpICYmIHZhbHVlcy0+bGVu
Z3RoKCkgJSAyID09IDApCi0gICAgICAgIHJldHVybiB2YWx1ZXM7CisgICAgICAgIHJldHVybiBX
VEZNb3ZlKHZhbHVlcyk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTY5MCw3ICs2OTAs
NyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lRm9udFZhcmlhbnRFYXN0QXNpYW4o
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiAgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09
IENTU1ZhbHVlTm9ybWFsKQogICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKICAg
ICAKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgYXV0byB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgRm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50IHZhcmlh
bnQgPSBGb250VmFyaWFudEVhc3RBc2lhblZhcmlhbnQ6Ok5vcm1hbDsKICAgICBGb250VmFyaWFu
dEVhc3RBc2lhbldpZHRoIHdpZHRoID0gRm9udFZhcmlhbnRFYXN0QXNpYW5XaWR0aDo6Tm9ybWFs
OwogICAgIEZvbnRWYXJpYW50RWFzdEFzaWFuUnVieSBydWJ5ID0gRm9udFZhcmlhbnRFYXN0QXNp
YW5SdWJ5OjpOb3JtYWw7CkBAIC03ODAsNyArNzgwLDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1
ZT4gY29uc3VtZUZvbnRWYXJpYW50RWFzdEFzaWFuKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
KQogICAgIGlmICghdmFsdWVzLT5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICByZXR1cm4gdmFsdWVzOworICAgIHJldHVybiBXVEZNb3ZlKHZhbHVlcyk7CiB9CiAgICAg
CiBzdGF0aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lRm9udFZhcmlhbnRDYXBz
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQpAQCAtOTIxLDcgKzkyMSw3IEBAIHN0YXRpYyBS
ZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVHZW5lcmljRmFtaWx5KENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlKQogCiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlTGlzdD4gY29uc3VtZUZvbnRGYW1pbHko
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiB7Ci0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4g
bGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICBhdXRvIGxp
c3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgZG8gewogICAg
ICAgICBpZiAoYXV0byBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVHZW5lcmljRmFtaWx5KHJhbmdlKSkK
ICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChwYXJzZWRWYWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsK
QEAgLTkzMiw3ICs5MzIsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlTGlzdD4gY29uc3VtZUZv
bnRGYW1pbHkoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRp
bmdXaGl0ZXNwYWNlKHJhbmdlKSk7Ci0gICAgcmV0dXJuIGxpc3Q7CisgICAgcmV0dXJuIFdURk1v
dmUobGlzdCk7CiB9CiAKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBjb25zdW1lRm9udEZh
bWlseURlc2NyaXB0b3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCkBAIC05NDIsOSArOTQy
LDggQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGNvbnN1bWVGb250RmFtaWx5RGVzY3Jp
cHRvcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW4KICAgICAvLyBPbmNlIHRoZSBvbGQgcGFyc2Vy
IGlzIGdvbmUsIHdlIGNhbiBkZWxldGUgdGhpcyBmdW5jdGlvbiwgbWFrZSB0aGUgY2FsbGVyCiAg
ICAgLy8gdXNlIGNvbnN1bWVGYW1pbHlOYW1lIGluc3RlYWQsIGFuZCB0aGVuIHBhdGNoIHRoZSBA
Zm9udC1mYWNlIGNvZGUgdG8KICAgICAvLyBub3QgZXhwZWN0IGEgbGlzdCB3aXRoIGEgc2luZ2xl
IG5hbWUgaW4gaXQuCi0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlz
dDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlZFZh
bHVlID0gY29uc3VtZUZhbWlseU5hbWUocmFuZ2UpOwotICAgIGlmIChwYXJzZWRWYWx1ZSkKKyAg
ICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CisgICAg
aWYgKGF1dG8gcGFyc2VkVmFsdWUgPSBjb25zdW1lRmFtaWx5TmFtZShyYW5nZSkpCiAgICAgICAg
IGxpc3QtPmFwcGVuZChwYXJzZWRWYWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAKICAgICBp
ZiAoIXJhbmdlLmF0RW5kKCkgfHwgIWxpc3QtPmxlbmd0aCgpKQpAQCAtOTYwLDcgKzk1OSw3IEBA
IHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVGb250U3ludGhlc2lzKENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlKQogICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUpCiAgICAgICAgIHJl
dHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOwogICAgIAotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgYXV0byBs
aXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgIHdoaWxlICh0
cnVlKSB7CiAgICAgICAgIGF1dG8gaWRlbnQgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVXZWlnaHQs
IENTU1ZhbHVlU3R5bGUsIENTU1ZhbHVlU21hbGxDYXBzPihyYW5nZSk7CiAgICAgICAgIGlmICgh
aWRlbnQpCkBAIC05NzIsNyArOTcxLDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3Vt
ZUZvbnRTeW50aGVzaXMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiAgICAgCiAgICAgaWYg
KCFsaXN0LT5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGxp
c3Q7CisgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAKIHN0YXRpYyBSZWZQdHI8Q1NTVmFs
dWU+IGNvbnN1bWVMZXR0ZXJTcGFjaW5nKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQ
YXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCkBAIC0xMDIxLDI4ICsxMDIwLDI0IEBAIHN0YXRpYyBS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVMaW5lSGVpZ2h0KENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlLCBDCiB7CiAgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVl
Tm9ybWFsKQogICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKLQotICAgIFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gbGluZUhlaWdodCA9IGNvbnN1bWVOdW1iZXIocmFuZ2UsIFZh
bHVlUmFuZ2U6Ok5vbk5lZ2F0aXZlKTsKLSAgICBpZiAobGluZUhlaWdodCkKKyAgICBpZiAoYXV0
byBsaW5lSGVpZ2h0ID0gY29uc3VtZU51bWJlcihyYW5nZSwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRp
dmUpKQogICAgICAgICByZXR1cm4gbGluZUhlaWdodDsKICAgICByZXR1cm4gY29uc3VtZUxlbmd0
aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUp
OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgotc3RhdGljIFJlZjxDU1NQcmltaXRp
dmVWYWx1ZT4gY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKEFyZ3MmJi4uLiBhcmdzKQordGVtcGxh
dGU8dHlwZW5hbWUuLi4gQXJncz4gc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRl
UHJpbWl0aXZlVmFsdWVQYWlyKEFyZ3MmJi4uLiBhcmdzKQogewogICAgIHJldHVybiBDU1NWYWx1
ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKFBhaXI6OmNyZWF0ZShzdGQ6OmZvcndhcmQ8
QXJncz4oYXJncykuLi4pKTsKIH0KIAotCiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1l
Q291bnRlcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgaW50IGRlZmF1bHRWYWx1ZSkKIHsK
ICAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICByZXR1
cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKIAotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3Qg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgYXV0byBsaXN0ID0g
Q1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgIGRvIHsKLSAgICAgICAg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb3VudGVyTmFtZSA9IGNvbnN1bWVDdXN0b21JZGVu
dChyYW5nZSk7CisgICAgICAgIGF1dG8gY291bnRlck5hbWUgPSBjb25zdW1lQ3VzdG9tSWRlbnQo
cmFuZ2UpOwogICAgICAgICBpZiAoIWNvdW50ZXJOYW1lKQogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgICAgIGludCBpID0gZGVmYXVsdFZhbHVlOwpAQCAtMTA1MCw3ICsxMDQ1LDcg
QEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUNvdW50ZXIoQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIGludCBkZWZhdWx0VmEKICAgICAgICAgICAgIGkgPSAqY291bnRlclZhbHVl
OwogICAgICAgICBsaXN0LT5hcHBlbmQoY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKGNvdW50ZXJO
YW1lLnJlbGVhc2VOb25OdWxsKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoaSwgQ1NTVW5p
dFR5cGU6OkNTU19OVU1CRVIpLCBQYWlyOjpJZGVudGljYWxWYWx1ZUVuY29kaW5nOjpDb2FsZXNj
ZSkpOwogICAgIH0gd2hpbGUgKCFyYW5nZS5hdEVuZCgpKTsKLSAgICByZXR1cm4gbGlzdDsKKyAg
ICByZXR1cm4gV1RGTW92ZShsaXN0KTsKIH0KIAogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29u
c3VtZVBhZ2VTaXplKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQpAQCAtMTA2MCwyMyArMTA1
NSwyMyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lUGFnZVNpemUoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UpCiAKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBjb25zdW1l
U2l6ZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJN
b2RlKQogewotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHJlc3VsdCA9IENTU1ZhbHVlTGlzdDo6
Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBhdXRvIHJlc3VsdCA9IENTU1ZhbHVlTGlzdDo6
Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKIAogICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBD
U1NWYWx1ZUF1dG8pIHsKICAgICAgICAgcmVzdWx0LT5hcHBlbmQoY29uc3VtZUlkZW50KHJhbmdl
KS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAg
ICBpZiAoUmVmUHRyPENTU1ZhbHVlPiB3aWR0aCA9IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1Bh
cnNlck1vZGUsIFZhbHVlUmFuZ2U6Ok5vbk5lZ2F0aXZlKSkgewotICAgICAgICBSZWZQdHI8Q1NT
VmFsdWU+IGhlaWdodCA9IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVl
UmFuZ2U6Ok5vbk5lZ2F0aXZlKTsKKyAgICBpZiAoYXV0byB3aWR0aCA9IGNvbnN1bWVMZW5ndGgo
cmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2U6Ok5vbk5lZ2F0aXZlKSkgeworICAgICAg
ICBhdXRvIGhlaWdodCA9IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVl
UmFuZ2U6Ok5vbk5lZ2F0aXZlKTsKICAgICAgICAgcmVzdWx0LT5hcHBlbmQod2lkdGgucmVsZWFz
ZU5vbk51bGwoKSk7CiAgICAgICAgIGlmIChoZWlnaHQpCiAgICAgICAgICAgICByZXN1bHQtPmFw
cGVuZChoZWlnaHQucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQogCi0gICAgUmVmUHRyPENTU1ZhbHVlPiBwYWdlU2l6ZSA9IGNvbnN1bWVQYWdlU2l6ZShy
YW5nZSk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiBvcmllbnRhdGlvbiA9IGNvbnN1bWVJZGVudDxD
U1NWYWx1ZVBvcnRyYWl0LCBDU1NWYWx1ZUxhbmRzY2FwZT4ocmFuZ2UpOworICAgIGF1dG8gcGFn
ZVNpemUgPSBjb25zdW1lUGFnZVNpemUocmFuZ2UpOworICAgIGF1dG8gb3JpZW50YXRpb24gPSBj
b25zdW1lSWRlbnQ8Q1NTVmFsdWVQb3J0cmFpdCwgQ1NTVmFsdWVMYW5kc2NhcGU+KHJhbmdlKTsK
ICAgICBpZiAoIXBhZ2VTaXplKQogICAgICAgICBwYWdlU2l6ZSA9IGNvbnN1bWVQYWdlU2l6ZShy
YW5nZSk7CiAKQEAgLTEwOTgsNyArMTA5Myw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNv
bnN1bWVUZXh0SW5kZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNCiAK
ICAgICBkbyB7CiAgICAgICAgIGlmICghbGVuZ3RoT3JQZXJjZW50YWdlKSB7Ci0gICAgICAgICAg
ICBpZiAoUmVmUHRyPENTU1ZhbHVlPiB0ZXh0SW5kZW50ID0gY29uc3VtZUxlbmd0aE9yUGVyY2Vu
dChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZTo6QWxsLCBVbml0bGVzc1F1aXJrOjpB
bGxvdykpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHRleHRJbmRlbnQgPSBjb25zdW1lTGVuZ3Ro
T3JQZXJjZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlOjpBbGwsIFVuaXRsZXNz
UXVpcms6OkFsbG93KSkgewogICAgICAgICAgICAgICAgIGxlbmd0aE9yUGVyY2VudGFnZSA9IHRl
eHRJbmRlbnQ7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CkBAIC0x
MTIxLDE0ICsxMTE2LDEzIEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVUZXh0SW5k
ZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNCiAgICAgaWYgKCFsZW5n
dGhPclBlcmNlbnRhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPENT
U1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsK
KyAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAg
ICAgbGlzdC0+YXBwZW5kKCpsZW5ndGhPclBlcmNlbnRhZ2UpOwogICAgIGlmIChoYW5naW5nKQog
ICAgICAgICBsaXN0LT5hcHBlbmQoaGFuZ2luZy5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICBpZiAo
ZWFjaExpbmUpCiAgICAgICAgIGxpc3QtPmFwcGVuZChlYWNoTGluZS5yZWxlYXNlTm9uTnVsbCgp
KTsKLQotICAgIHJldHVybiBsaXN0OworICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogfQogCiBz
dGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lU2Nyb2xsUGFkZGluZyhDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQpAQCAtMTE4NCwxNyAr
MTE3OCwxNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lQ2xpcChDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjcwogCiAgICAgQ1NTUGFyc2VyVG9rZW5S
YW5nZSBhcmdzID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdlKTsKICAgICAvLyByZWN0KHQsIHIsIGIs
IGwpIHx8IHJlY3QodCByIGIgbCkKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHRvcCA9
IGNvbnN1bWVDbGlwQ29tcG9uZW50KGFyZ3MsIGNzc1BhcnNlck1vZGUpOworICAgIGF1dG8gdG9w
ID0gY29uc3VtZUNsaXBDb21wb25lbnQoYXJncywgY3NzUGFyc2VyTW9kZSk7CiAgICAgaWYgKCF0
b3ApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGJvb2wgbmVlZHNDb21tYSA9IGNvbnN1
bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncyk7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiByaWdodCA9IGNvbnN1bWVDbGlwQ29tcG9uZW50KGFyZ3MsIGNzc1BhcnNlck1vZGUp
OworICAgIGF1dG8gcmlnaHQgPSBjb25zdW1lQ2xpcENvbXBvbmVudChhcmdzLCBjc3NQYXJzZXJN
b2RlKTsKICAgICBpZiAoIXJpZ2h0IHx8IChuZWVkc0NvbW1hICYmICFjb25zdW1lQ29tbWFJbmNs
dWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBib3R0b20gPSBjb25zdW1lQ2xpcENvbXBvbmVudChhcmdz
LCBjc3NQYXJzZXJNb2RlKTsKKyAgICBhdXRvIGJvdHRvbSA9IGNvbnN1bWVDbGlwQ29tcG9uZW50
KGFyZ3MsIGNzc1BhcnNlck1vZGUpOwogICAgIGlmICghYm90dG9tIHx8IChuZWVkc0NvbW1hICYm
ICFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBsZWZ0ID0gY29uc3VtZUNs
aXBDb21wb25lbnQoYXJncywgY3NzUGFyc2VyTW9kZSk7CisgICAgYXV0byBsZWZ0ID0gY29uc3Vt
ZUNsaXBDb21wb25lbnQoYXJncywgY3NzUGFyc2VyTW9kZSk7CiAgICAgaWYgKCFsZWZ0IHx8ICFh
cmdzLmF0RW5kKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIApAQCAtMTI1NSw3ICsx
MjQ5LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUNvbHVtbldpZHRoKENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlKQogICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdl
KTsKICAgICAvLyBBbHdheXMgcGFyc2UgbGVuZ3RocyBpbiBzdHJpY3QgbW9kZSBoZXJlLCBzaW5j
ZSBpdCB3b3VsZCBiZSBhbWJpZ3VvdXMgb3RoZXJ3aXNlIHdoZW4gdXNlZCBpbgogICAgIC8vIHRo
ZSAnY29sdW1ucycgc2hvcnRoYW5kIHByb3BlcnR5LgotICAgIFJlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gY29sdW1uV2lkdGggPSBjb25zdW1lTGVuZ3RoKHJhbmdlLCBIVE1MU3RhbmRhcmRNb2Rl
LCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSk7CisgICAgYXV0byBjb2x1bW5XaWR0aCA9IGNvbnN1
bWVMZW5ndGgocmFuZ2UsIEhUTUxTdGFuZGFyZE1vZGUsIFZhbHVlUmFuZ2U6Ok5vbk5lZ2F0aXZl
KTsKICAgICBpZiAoIWNvbHVtbldpZHRoIHx8IGNvbHVtbldpZHRoLT5pc1plcm8oKS52YWx1ZV9v
cihmYWxzZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xNTM4LDcgKzE1MzIsNyBA
QCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lQW5pbWF0aW9uUHJvcGVydHlMaXN0KENT
U1Byb3BlcnR5SUQgcHJvcGVydHksIENTUwogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3Q7
CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBzaW5nbGV0b247CiAgICAgZG8gewotICAgICAgICBSZWZQ
dHI8Q1NTVmFsdWU+IGN1cnJlbnRWYWx1ZSA9IGNvbnN1bWVBbmltYXRpb25WYWx1ZShwcm9wZXJ0
eSwgcmFuZ2UsIGNvbnRleHQpOworICAgICAgICBhdXRvIGN1cnJlbnRWYWx1ZSA9IGNvbnN1bWVB
bmltYXRpb25WYWx1ZShwcm9wZXJ0eSwgcmFuZ2UsIGNvbnRleHQpOwogICAgICAgICBpZiAoIWN1
cnJlbnRWYWx1ZSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAKQEAgLTE2
MjMsMTQgKzE2MTcsMTQgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVNoYWRvdyhD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2UKICAgICBpZiAocmFuZ2Uu
cGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50
KHJhbmdlKTsKIAotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHNoYWRvd1ZhbHVlTGlzdCA9IENT
U1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICBhdXRvIHNoYWRvd1ZhbHVl
TGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICBkbyB7CiAg
ICAgICAgIGlmIChhdXRvIHNoYWRvd1ZhbHVlID0gY29uc3VtZVNpbmdsZVNoYWRvdyhyYW5nZSwg
Y29udGV4dCwgaXNCb3hTaGFkb3dQcm9wZXJ0eSwgaXNCb3hTaGFkb3dQcm9wZXJ0eSkpCiAgICAg
ICAgICAgICBzaGFkb3dWYWx1ZUxpc3QtPmFwcGVuZChzaGFkb3dWYWx1ZS5yZWxlYXNlTm9uTnVs
bCgpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfSB3
aGlsZSAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkpOwotICAgIHJldHVy
biBzaGFkb3dWYWx1ZUxpc3Q7CisgICAgcmV0dXJuIFdURk1vdmUoc2hhZG93VmFsdWVMaXN0KTsK
IH0KIAogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVRleHREZWNvcmF0aW9uTGluZShD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKQEAgLTE2MzksMTIgKzE2MzMsMTIgQEAgc3RhdGlj
IFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVRleHREZWNvcmF0aW9uTGluZShDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSkKICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICByZXR1
cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKIAotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3Qg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgYXV0byBsaXN0ID0g
Q1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgIHdoaWxlICh0cnVlKSB7
CiAjaWYgRU5BQkxFKExFVFRFUlBSRVNTKQotICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IGlkZW50ID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQmxpbmssIENTU1ZhbHVlVW5kZXJsaW5l
LCBDU1NWYWx1ZU92ZXJsaW5lLCBDU1NWYWx1ZUxpbmVUaHJvdWdoLCBDU1NWYWx1ZVdlYmtpdExl
dHRlcnByZXNzPihyYW5nZSk7CisgICAgICAgIGF1dG8gaWRlbnQgPSBjb25zdW1lSWRlbnQ8Q1NT
VmFsdWVCbGluaywgQ1NTVmFsdWVVbmRlcmxpbmUsIENTU1ZhbHVlT3ZlcmxpbmUsIENTU1ZhbHVl
TGluZVRocm91Z2gsIENTU1ZhbHVlV2Via2l0TGV0dGVycHJlc3M+KHJhbmdlKTsKICNlbHNlCi0g
ICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gaWRlbnQgPSBjb25zdW1lSWRlbnQ8Q1NT
VmFsdWVCbGluaywgQ1NTVmFsdWVVbmRlcmxpbmUsIENTU1ZhbHVlT3ZlcmxpbmUsIENTU1ZhbHVl
TGluZVRocm91Z2g+KHJhbmdlKTsKKyAgICAgICAgYXV0byBpZGVudCA9IGNvbnN1bWVJZGVudDxD
U1NWYWx1ZUJsaW5rLCBDU1NWYWx1ZVVuZGVybGluZSwgQ1NTVmFsdWVPdmVybGluZSwgQ1NTVmFs
dWVMaW5lVGhyb3VnaD4ocmFuZ2UpOwogI2VuZGlmCiAgICAgICAgIGlmICghaWRlbnQpCiAgICAg
ICAgICAgICBicmVhazsKQEAgLTE2NjQsNyArMTY1OCw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFs
dWU+IGNvbnN1bWVUZXh0RGVjb3JhdGlvblNraXAoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Up
CiAgICAgaWYgKGlkID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVu
dChyYW5nZSk7CiAKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0
OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6
Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBhdXRv
IGlkZW50ID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVJbmssIENTU1ZhbHVl
T2JqZWN0cz4ocmFuZ2UpOwogICAgICAgICBpZiAoIWlkZW50KQpAQCAtMTY3Niw3ICsxNjcwLDcg
QEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVRleHREZWNvcmF0aW9uU2tpcChDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIAogICAgIGlmICghbGlzdC0+bGVuZ3RoKCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBsaXN0OworICAgIHJldHVybiBXVEZNb3Zl
KGxpc3QpOwogfQogCiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lVGV4dEVtcGhhc2lz
U3R5bGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCkBAIC0xNjg1LDIzICsxNjc5LDIzIEBA
IHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVUZXh0RW1waGFzaXNTdHlsZShDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSkKICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVOb25lKQogICAgICAg
ICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKIAotICAgIGlmIChSZWZQdHI8Q1NTVmFsdWU+
IHRleHRFbXBoYXNpc1N0eWxlID0gY29uc3VtZVN0cmluZyhyYW5nZSkpCi0gICAgICAgIHJldHVy
biB0ZXh0RW1waGFzaXNTdHlsZTsKKyAgICBpZiAoYXV0byB0ZXh0RW1waGFzaXNTdHlsZSA9IGNv
bnN1bWVTdHJpbmcocmFuZ2UpKQorICAgICAgICByZXR1cm4gV1RGTW92ZSh0ZXh0RW1waGFzaXNT
dHlsZSk7CiAKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGZpbGwgPSBjb25zdW1lSWRl
bnQ8Q1NTVmFsdWVGaWxsZWQsIENTU1ZhbHVlT3Blbj4ocmFuZ2UpOwotICAgIFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gc2hhcGUgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVEb3QsIENTU1ZhbHVl
Q2lyY2xlLCBDU1NWYWx1ZURvdWJsZUNpcmNsZSwgQ1NTVmFsdWVUcmlhbmdsZSwgQ1NTVmFsdWVT
ZXNhbWU+KHJhbmdlKTsKKyAgICBhdXRvIGZpbGwgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVGaWxs
ZWQsIENTU1ZhbHVlT3Blbj4ocmFuZ2UpOworICAgIGF1dG8gc2hhcGUgPSBjb25zdW1lSWRlbnQ8
Q1NTVmFsdWVEb3QsIENTU1ZhbHVlQ2lyY2xlLCBDU1NWYWx1ZURvdWJsZUNpcmNsZSwgQ1NTVmFs
dWVUcmlhbmdsZSwgQ1NTVmFsdWVTZXNhbWU+KHJhbmdlKTsKICAgICBpZiAoIWZpbGwpCiAgICAg
ICAgIGZpbGwgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVGaWxsZWQsIENTU1ZhbHVlT3Blbj4ocmFu
Z2UpOwogICAgIGlmIChmaWxsICYmIHNoYXBlKSB7Ci0gICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxp
c3Q+IHBhcnNlZFZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsK
KyAgICAgICAgYXV0byBwYXJzZWRWYWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2Vw
YXJhdGVkKCk7CiAgICAgICAgIHBhcnNlZFZhbHVlcy0+YXBwZW5kKGZpbGwucmVsZWFzZU5vbk51
bGwoKSk7CiAgICAgICAgIHBhcnNlZFZhbHVlcy0+YXBwZW5kKHNoYXBlLnJlbGVhc2VOb25OdWxs
KCkpOwotICAgICAgICByZXR1cm4gcGFyc2VkVmFsdWVzOworICAgICAgICByZXR1cm4gV1RGTW92
ZShwYXJzZWRWYWx1ZXMpOwogICAgIH0KICAgICBpZiAoZmlsbCkKLSAgICAgICAgcmV0dXJuIGZp
bGw7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKGZpbGwpOwogICAgIGlmIChzaGFwZSkKLSAgICAg
ICAgcmV0dXJuIHNoYXBlOworICAgICAgICByZXR1cm4gV1RGTW92ZShzaGFwZSk7CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKQEAgLTE3NDMsNyArMTczNyw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVDb2x1bW5SdWxlV2lkdGgoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuCiAgICAgcmV0dXJuIGNvbnN1bWVMaW5lV2lkdGgocmFuZ2UsIGNzc1BhcnNlck1vZGUs
IFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CiB9CiAKLXN0YXRpYyBib29sIGNvbnN1bWVUcmFuc2xh
dGUzZChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1v
ZGUsIFJlZlB0cjxDU1NGdW5jdGlvblZhbHVlPiYgdHJhbnNmb3JtVmFsdWUpCitzdGF0aWMgYm9v
bCBjb25zdW1lVHJhbnNsYXRlM2QoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2Vy
TW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NGdW5jdGlvblZhbHVlJiB0cmFuc2Zvcm1WYWx1ZSkKIHsK
ICAgICB1bnNpZ25lZCBudW1iZXJPZkFyZ3VtZW50cyA9IDI7CiAgICAgUmVmUHRyPENTU1ZhbHVl
PiBwYXJzZWRWYWx1ZTsKQEAgLTE3NTEsNDEgKzE3NDUsNDEgQEAgc3RhdGljIGJvb2wgY29uc3Vt
ZVRyYW5zbGF0ZTNkKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1BhcnNlck1vZGUgY3Nz
UGFyc2UKICAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KGFyZ3Ms
IGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2U6OkFsbCk7CiAgICAgICAgIGlmICghcGFyc2VkVmFs
dWUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHRyYW5zZm9ybVZhbHVlLT5h
cHBlbmQoKnBhcnNlZFZhbHVlKTsKKyAgICAgICAgdHJhbnNmb3JtVmFsdWUuYXBwZW5kKCpwYXJz
ZWRWYWx1ZSk7CiAgICAgICAgIGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShh
cmdzKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9IHdoaWxlICgtLW51bWJlck9m
QXJndW1lbnRzKTsKICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVMZW5ndGgoYXJncywgY3NzUGFy
c2VyTW9kZSwgVmFsdWVSYW5nZTo6QWxsKTsKICAgICBpZiAoIXBhcnNlZFZhbHVlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVuZCgqcGFyc2VkVmFsdWUp
OworICAgIHRyYW5zZm9ybVZhbHVlLmFwcGVuZCgqcGFyc2VkVmFsdWUpOwogICAgIHJldHVybiB0
cnVlOwogfQogCi1zdGF0aWMgYm9vbCBjb25zdW1lTnVtYmVycyhDU1NQYXJzZXJUb2tlblJhbmdl
JiBhcmdzLCBSZWZQdHI8Q1NTRnVuY3Rpb25WYWx1ZT4mIHRyYW5zZm9ybVZhbHVlLCB1bnNpZ25l
ZCBudW1iZXJPZkFyZ3VtZW50cykKK3N0YXRpYyBib29sIGNvbnN1bWVOdW1iZXJzKENTU1BhcnNl
clRva2VuUmFuZ2UmIGFyZ3MsIENTU0Z1bmN0aW9uVmFsdWUmIHRyYW5zZm9ybVZhbHVlLCB1bnNp
Z25lZCBudW1iZXJPZkFyZ3VtZW50cykKIHsKICAgICBkbyB7Ci0gICAgICAgIFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gcGFyc2VkVmFsdWUgPSBjb25zdW1lTnVtYmVyKGFyZ3MsIFZhbHVlUmFu
Z2U6OkFsbCk7CisgICAgICAgIGF1dG8gcGFyc2VkVmFsdWUgPSBjb25zdW1lTnVtYmVyKGFyZ3Ms
IFZhbHVlUmFuZ2U6OkFsbCk7CiAgICAgICAgIGlmICghcGFyc2VkVmFsdWUpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQocGFyc2VkVmFs
dWUucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIHRyYW5zZm9ybVZhbHVlLmFwcGVuZChwYXJz
ZWRWYWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgaWYgKC0tbnVtYmVyT2ZBcmd1bWVu
dHMgJiYgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfSB3aGlsZSAobnVtYmVyT2ZBcmd1bWVudHMpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCBjb25zdW1lUGVyc3BlY3RpdmUoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgYXJncywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBSZWZQdHI8Q1NT
RnVuY3Rpb25WYWx1ZT4mIHRyYW5zZm9ybVZhbHVlKQorc3RhdGljIGJvb2wgY29uc3VtZVBlcnNw
ZWN0aXZlKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIENTU1BhcnNlck1vZGUgY3NzUGFyc2Vy
TW9kZSwgQ1NTRnVuY3Rpb25WYWx1ZSYgdHJhbnNmb3JtVmFsdWUpCiB7CiAgICAgaWYgKGF1dG8g
cGFyc2VkVmFsdWUgPSBjb25zdW1lTGVuZ3RoKGFyZ3MsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFu
Z2U6Ok5vbk5lZ2F0aXZlKSkgewotICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKHBhcnNl
ZFZhbHVlLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICB0cmFuc2Zvcm1WYWx1ZS5hcHBlbmQo
cGFyc2VkVmFsdWUucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIAogICAgIGF1dG8gcGVyc3BlY3RpdmUgPSBjb25zdW1lTnVtYmVyUmF3KGFyZ3MpOwogICAg
IGlmICghcGVyc3BlY3RpdmUgfHwgKnBlcnNwZWN0aXZlIDwgMCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZSgqcGVyc3BlY3RpdmUsIENTU1VuaXRUeXBlOjpDU1NfUFgpKTsKKyAgICB0cmFuc2Zvcm1WYWx1
ZS5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgqcGVyc3BlY3RpdmUsIENTU1VuaXRU
eXBlOjpDU1NfUFgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTc5OCw3ICsxNzkyLDcg
QEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVRyYW5zZm9ybVZhbHVlKENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXIKICAgICBpZiAoYXJncy5hdEVuZCgpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBSZWZQdHI8Q1NTRnVuY3Rpb25WYWx1ZT4gdHJh
bnNmb3JtVmFsdWUgPSBDU1NGdW5jdGlvblZhbHVlOjpjcmVhdGUoZnVuY3Rpb25JZCk7CisgICAg
YXV0byB0cmFuc2Zvcm1WYWx1ZSA9IENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShmdW5jdGlvbklk
KTsKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlZFZhbHVlOwogICAgIHN3aXRjaCAoZnVuY3Rp
b25JZCkgewogICAgIGNhc2UgQ1NTVmFsdWVSb3RhdGU6CkBAIC0xODg3LDE1ICsxODgxLDE1IEBA
IHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVUcmFuc2Zvcm0oQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vCiAgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENT
U1ZhbHVlTm9uZSkKICAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CiAKLSAgICBS
ZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFy
YXRlZCgpOworICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0
ZWQoKTsKICAgICBkbyB7Ci0gICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VkVHJhbnNmb3Jt
VmFsdWUgPSBjb25zdW1lVHJhbnNmb3JtVmFsdWUocmFuZ2UsIGNzc1BhcnNlck1vZGUpOworICAg
ICAgICBhdXRvIHBhcnNlZFRyYW5zZm9ybVZhbHVlID0gY29uc3VtZVRyYW5zZm9ybVZhbHVlKHJh
bmdlLCBjc3NQYXJzZXJNb2RlKTsKICAgICAgICAgaWYgKCFwYXJzZWRUcmFuc2Zvcm1WYWx1ZSkK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBsaXN0LT5hcHBlbmQocGFyc2Vk
VHJhbnNmb3JtVmFsdWUucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfSB3aGlsZSAoIXJhbmdlLmF0
RW5kKCkpOwogCi0gICAgcmV0dXJuIGxpc3Q7CisgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9
CiAKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVUcmFuc2xhdGUoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkKQEAgLTE5MDMsOCAr
MTg5Nyw2IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVUcmFuc2xhdGUoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vCiAgICAgaWYgKHJhbmdlLnBlZWsoKS5p
ZCgpID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7
CiAKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVT
cGFjZVNlcGFyYXRlZCgpOwotCiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy10
cmFuc2Zvcm1zLTIvI3Byb3BkZWYtdHJhbnNsYXRlCiAgICAgLy8KICAgICAvLyBUaGUgdHJhbnNs
YXRlIHByb3BlcnR5IGFjY2VwdHMgMS0zIHZhbHVlcywgZWFjaCBzcGVjaWZ5aW5nIGEgdHJhbnNs
YXRpb24gYWdhaW5zdCBvbmUgYXhpcywgaW4gdGhlIG9yZGVyIFgsIFksIHRoZW4gWi4KQEAgLTE5
MTIsNDEgKzE5MDQsMzYgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVRyYW5zbGF0
ZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW8KICAgICAvLyB2YWx1ZSBp
cyBtaXNzaW5nLCBpdCBkZWZhdWx0cyB0byAwcHguIElmIHRocmVlIHZhbHVlcyBhcmUgZ2l2ZW4s
IHRoaXMgc3BlY2lmaWVzIGEgM2QgdHJhbnNsYXRpb24sIGVxdWl2YWxlbnQgdG8gdGhlCiAgICAg
Ly8gdHJhbnNsYXRlM2QoKSBmdW5jdGlvbi4KIAotICAgIFJlZlB0cjxDU1NWYWx1ZT4geCA9IGNv
bnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2U6OkFs
bCk7Ci0gICAgaWYgKCF4KQotICAgICAgICByZXR1cm4gbGlzdDsKLQotICAgIC8vIElmIHdlIGdv
dCB0aGlzIGZhciB3ZSBoYXZlIGEgdmFsaWQgeCB2YWx1ZSwgc28gd2UgY2FuIGRpcmVjdGx5IGFk
ZCBpdCB0byB0aGUgbGlzdC4KLSAgICBsaXN0LT5hcHBlbmQoKngpOworICAgIGF1dG8geCA9IGNv
bnN1bWVMZW5ndGhPclBlcmNlbnQocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2U6OkFs
bCk7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB5OworICAgIFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gejsKKyAgICBpZiAoeCkgeworICAgICAgICByYW5nZS5jb25zdW1lV2hpdGVz
cGFjZSgpOworICAgICAgICB5ID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFy
c2VyTW9kZSwgVmFsdWVSYW5nZTo6QWxsKTsKKyAgICAgICAgaWYgKHkpIHsKKyAgICAgICAgICAg
IHJhbmdlLmNvbnN1bWVXaGl0ZXNwYWNlKCk7CisgICAgICAgICAgICB6ID0gY29uc3VtZUxlbmd0
aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZTo6QWxsKTsKIAotICAgIHJhbmdlLmNv
bnN1bWVXaGl0ZXNwYWNlKCk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiB5ID0gY29uc3VtZUxlbmd0
aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZTo6QWxsKTsKLSAgICBp
ZiAoIXkpCi0gICAgICAgIHJldHVybiBsaXN0OworICAgICAgICAgICAgLy8gTGVhdmUgb2ZmIFog
aWYgaXQgaXMgemVyby4KKyAgICAgICAgICAgIGlmICh6ICYmIHotPmlzWmVybygpLnZhbHVlX29y
KGZhbHNlKSkKKyAgICAgICAgICAgICAgICB6ID0gbnVsbHB0cjsKIAotICAgIC8vIElmIHdlIGhh
dmUgYSBjYWxjKCkgb3Igbm9uLXplcm8geSB2YWx1ZSwgd2UgY2FuIGRpcmVjdGx5IGFkZCBpdCB0
byB0aGUgbGlzdC4gV2Ugb25seQotICAgIC8vIHdhbnQgdG8gYWRkIGEgemVybyB5IHZhbHVlIGlm
IGEgbm9uLXplcm8geiB2YWx1ZSBpcyBzcGVjaWZpZWQuCi0gICAgaWYgKGlzPENTU1ByaW1pdGl2
ZVZhbHVlPih5KSkgewotICAgICAgICBhdXRvJiB5UHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4oKnkpOwotICAgICAgICBpZiAoeVByaW1pdGl2ZVZhbHVlLmlzQ2Fs
Y3VsYXRlZCgpIHx8ICEqeVByaW1pdGl2ZVZhbHVlLmlzWmVybygpKQotICAgICAgICAgICAgbGlz
dC0+YXBwZW5kKCp5KTsKKyAgICAgICAgICAgIC8vIExlYXZlIG9mZiBZIGlmIHRoZXJlIGlzIG5v
IFogYW5kIFkgaXMgemVyby4KKyAgICAgICAgICAgIGlmICgheiAmJiB5LT5pc1plcm8oKS52YWx1
ZV9vcihmYWxzZSkpCisgICAgICAgICAgICAgICAgeSA9IG51bGxwdHI7CisgICAgICAgIH0KICAg
ICB9CiAKLSAgICByYW5nZS5jb25zdW1lV2hpdGVzcGFjZSgpOwotICAgIFJlZlB0cjxDU1NWYWx1
ZT4geiA9IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2U6OkFs
bCk7Ci0KLSAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHopKSB7Ci0gICAgICAgIGF1dG8m
IHpQcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqeik7Ci0gICAg
ICAgIC8vIElmIHRoZSB6IHZhbHVlIGlzIGEgemVybyB2YWx1ZSwgd2UgaGF2ZSBub3RoaW5nIGxl
ZnQgdG8gYWRkIHRvIHRoZSBsaXN0LgotICAgICAgICBpZiAoIXpQcmltaXRpdmVWYWx1ZS5pc0Nh
bGN1bGF0ZWQoKSAmJiAqelByaW1pdGl2ZVZhbHVlLmlzWmVybygpKQotICAgICAgICAgICAgcmV0
dXJuIGxpc3Q7Ci0gICAgICAgIC8vIEFkZCB0aGUgemVybyB2YWx1ZSBmb3IgeSBpZiB3ZSBkaWQg
bm90IGFscmVhZHkgYWRkIGEgeSB2YWx1ZS4KLSAgICAgICAgaWYgKGxpc3QtPmxlbmd0aCgpID09
IDEpCi0gICAgICAgICAgICBsaXN0LT5hcHBlbmQoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgw
LCBDU1NVbml0VHlwZTo6Q1NTX1BYKSk7Ci0gICAgICAgIGxpc3QtPmFwcGVuZCgqeik7CisgICAg
YXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGlm
ICh4KSB7CisgICAgICAgIGxpc3QtPmFwcGVuZCh4LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAg
ICBpZiAoeSkgeworICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHkucmVsZWFzZU5vbk51bGwoKSk7
CisgICAgICAgICAgICBpZiAoeikKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoei5yZWxl
YXNlTm9uTnVsbCgpKTsKKyAgICAgICAgfQogICAgIH0KLQotICAgIHJldHVybiBsaXN0OworICAg
IHJldHVybiBXVEZNb3ZlKGxpc3QpOwogfQogCiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25z
dW1lU2NhbGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUpCkBAIC0x
OTYzLDM2ICsxOTUwLDM3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVTY2FsZShD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSkKICAgICAvLyBJZiBvbmUg
b3IgdHdvIHZhbHVlcyBhcmUgZ2l2ZW4sIHRoaXMgc3BlY2lmaWVzIGEgMmQgc2NhbGluZywgZXF1
aXZhbGVudCB0byB0aGUgc2NhbGUoKSBmdW5jdGlvbi4KICAgICAvLyBJZiB0aHJlZSB2YWx1ZXMg
YXJlIGdpdmVuLCB0aGlzIHNwZWNpZmllcyBhIDNkIHNjYWxpbmcsIGVxdWl2YWxlbnQgdG8gdGhl
IHNjYWxlM2QoKSBmdW5jdGlvbi4KIAotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7Ci0KLSAgICBSZWZQdHI8Q1NTVmFs
dWU+IHggPSBjb25zdW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJhbmdlOjpBbGwpOwotICAgIGlmICgh
eCkKLSAgICAgICAgcmV0dXJuIGxpc3Q7Ci0gICAgbGlzdC0+YXBwZW5kKCp4KTsKLSAgICByYW5n
ZS5jb25zdW1lV2hpdGVzcGFjZSgpOwotCi0gICAgUmVmUHRyPENTU1ZhbHVlPiB5ID0gY29uc3Vt
ZU51bWJlcihyYW5nZSwgVmFsdWVSYW5nZTo6QWxsKTsKLSAgICBpZiAoIXkpCi0gICAgICAgIHJl
dHVybiBsaXN0OworICAgIGF1dG8geCA9IGNvbnN1bWVOdW1iZXIocmFuZ2UsIFZhbHVlUmFuZ2U6
OkFsbCk7CisgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB5OworICAgIFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gejsKKyAgICBpZiAoeCkgeworICAgICAgICByYW5nZS5jb25zdW1lV2hp
dGVzcGFjZSgpOworICAgICAgICB5ID0gY29uc3VtZU51bWJlcihyYW5nZSwgVmFsdWVSYW5nZTo6
QWxsKTsKKyAgICAgICAgaWYgKHkpIHsKKyAgICAgICAgICAgIHJhbmdlLmNvbnN1bWVXaGl0ZXNw
YWNlKCk7CisgICAgICAgICAgICB6ID0gY29uc3VtZU51bWJlcihyYW5nZSwgVmFsdWVSYW5nZTo6
QWxsKTsKIAotICAgIC8vIElmIHRoZSB4IGFuZCB5IHZhbHVlcyBhcmUgdGhlIHNhbWUsIHRoZSB5
IHZhbHVlIGlzIG5vdCBuZWVkZWQuCi0gICAgaWYgKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
PigqeCkuZmxvYXRWYWx1ZSgpICE9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqeSkuZmxv
YXRWYWx1ZSgpKQotICAgICAgICBsaXN0LT5hcHBlbmQoKnkpOwotICAgIHJhbmdlLmNvbnN1bWVX
aGl0ZXNwYWNlKCk7CisgICAgICAgICAgICAvLyBMZWF2ZSBvZmYgWiBpZiBpdCBpcyAxLgorICAg
ICAgICAgICAgaWYgKHogJiYgei0+ZmxvYXRWYWx1ZSgpID09IDEuMCkKKyAgICAgICAgICAgICAg
ICB6ID0gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxDU1NWYWx1ZT4geiA9IGNvbnN1bWVOdW1iZXIo
cmFuZ2UsIFZhbHVlUmFuZ2U6OkFsbCk7Ci0gICAgaWYgKCF6KQotICAgICAgICByZXR1cm4gbGlz
dDsKLSAgICBpZiAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp6KS5mbG9hdFZhbHVlKCkg
IT0gMS4wKSB7Ci0gICAgICAgIC8vIFdlIG9ubHkgbmVlZCB0byBhcHBlbmQgdGhlIHogdmFsdWUg
aWYgaXQncyBzZXQgdG8gc29tZXRoaW5nIG90aGVyIHRoYW4gMS4KLSAgICAgICAgLy8gSW4gY2Fz
ZSB5IHdhcyBub3QgYWRkZWQgeWV0LCBiZWNhdXNlIGl0IHdhcyBlcXVhbCB0byB4LCB3ZSBtdXN0
IGFwcGVuZCBpdAotICAgICAgICAvLyBwcmlvciB0byBhcHBlbmRpbmcgei4KLSAgICAgICAgaWYg
KGxpc3QtPmxlbmd0aCgpID09IDEpCi0gICAgICAgICAgICBsaXN0LT5hcHBlbmQoKnkpOwotICAg
ICAgICBsaXN0LT5hcHBlbmQoKnopOworICAgICAgICAgICAgLy8gTGVhdmUgb2ZmIFkgdGhlcmUg
aXMgbm8gWiBhbmQgWCBpcyBlcXVhbCB0byBZLgorICAgICAgICAgICAgLy8gRklYTUU6IFNob3Vs
ZCB0aGlzIHVzZSBkb3VibGVWYWx1ZSBvciBlcXVhbHMgaW5zdGVhZCBvZiBmbG9hdFZhbHVlPwor
ICAgICAgICAgICAgaWYgKCF6ICYmIHgtPmZsb2F0VmFsdWUoKSA9PSB5LT5mbG9hdFZhbHVlKCkp
CisgICAgICAgICAgICAgICAgeSA9IG51bGxwdHI7CisgICAgICAgIH0KICAgICB9CiAKLSAgICBy
ZXR1cm4gbGlzdDsKKyAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2Vw
YXJhdGVkKCk7CisgICAgaWYgKHgpIHsKKyAgICAgICAgbGlzdC0+YXBwZW5kKHgucmVsZWFzZU5v
bk51bGwoKSk7CisgICAgICAgIGlmICh5KSB7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQoeS5y
ZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgICAgIGlmICh6KQorICAgICAgICAgICAgICAgIGxp
c3QtPmFwcGVuZCh6LnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICB9CisgICAgfQorICAgIHJl
dHVybiBXVEZNb3ZlKGxpc3QpOwogfQogCiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1l
Um90YXRlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNl
ck1vZGUpCkBAIC0yMDAwLDcgKzE5ODgsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25z
dW1lUm90YXRlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlCiAgICAg
aWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgcmV0dXJuIGNv
bnN1bWVJZGVudChyYW5nZSk7CiAKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NT
VmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGF1dG8gbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKIAogICAgIC8vIGh0dHBzOi8vd3d3Lncz
Lm9yZy9UUi9jc3MtdHJhbnNmb3Jtcy0yLyNwcm9wZGVmLXJvdGF0ZQogICAgIC8vCkBAIC0yMDE4
LDM1ICsyMDA2LDMzIEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVSb3RhdGUoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUKIAogICAgIHdoaWxlICghcmFu
Z2UuYXRFbmQoKSkgewogICAgICAgICAvLyBGaXJzdCwgYXR0ZW1wdCB0byBwYXJzZSBhIG51bWJl
ciwgd2hpY2ggbWlnaHQgYmUgaW4gYSBzZXJpZXMgb2YgMyBzcGVjaWZ5aW5nIHRoZSByb3RhdGlv
biBheGlzLgotICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlZFZhbHVlID0gY29uc3VtZU51
bWJlcihyYW5nZSwgVmFsdWVSYW5nZTo6QWxsKTsKLSAgICAgICAgaWYgKHBhcnNlZFZhbHVlKSB7
CisgICAgICAgIGlmIChhdXRvIHBhcnNlZFZhbHVlID0gY29uc3VtZU51bWJlcihyYW5nZSwgVmFs
dWVSYW5nZTo6QWxsKSkgewogICAgICAgICAgICAgLy8gSWYgd2UndmUgZW5jb3VudGVyZWQgYW4g
YXhpcyBpZGVudGlmaWVyLCB0aGVuIHRoaXMgdmFsdXMgaXMgaW52YWxpZC4KICAgICAgICAgICAg
IGlmIChheGlzSWRlbnRpZmllcikKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZCgqcGFyc2VkVmFsdWUpOworICAgICAgICAgICAgbGlzdC0+
YXBwZW5kKHBhcnNlZFZhbHVlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICAgICAgcmFuZ2Uu
Y29uc3VtZVdoaXRlc3BhY2UoKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAK
ICAgICAgICAgLy8gVGhlbiwgYXR0ZW1wdCB0byBwYXJzZSBhbiBhbmdsZS4gV2UgdHJ5IHRoaXMg
YXMgYSBmYWxsYmFjayByYXRoZXIgdGhhbiB0aGUgZmlyc3Qgb3B0aW9uIGJlY2F1c2UKICAgICAg
ICAgLy8gYSB1bml0bGVzcyAwIGFuZ2xlIHdvdWxkIGJlIGNvbnN1bWVkIGFzIGFuIGFuZ2xlLgot
ICAgICAgICBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVBbmdsZShyYW5nZSwgY3NzUGFyc2VyTW9kZSwg
VW5pdGxlc3NRdWlyazo6Rm9yYmlkLCBVbml0bGVzc1plcm9RdWlyazo6QWxsb3cpOwotICAgICAg
ICBpZiAocGFyc2VkVmFsdWUpIHsKKyAgICAgICAgaWYgKGF1dG8gcGFyc2VkVmFsdWUgPSBjb25z
dW1lQW5nbGUocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgVW5p
dGxlc3NaZXJvUXVpcms6OkFsbG93KSkgewogICAgICAgICAgICAgLy8gSWYgd2UgaGFkIGFscmVh
ZHkgcGFyc2VkIGFuIGFuZ2xlIG9yIG51bWJlcnMgYnV0IG5vdCAzIGluIGEgcm93LCB0aGlzIHZh
bHVlIGlzIGludmFsaWQuCiAgICAgICAgICAgICBpZiAoYW5nbGUgfHwgKGxpc3QtPmxlbmd0aCgp
ICYmIGxpc3QtPmxlbmd0aCgpICE9IDMpKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgICAgICAgICAgYW5nbGUgPSBwYXJzZWRWYWx1ZTsKKyAgICAgICAgICAgIGFuZ2xlID0g
V1RGTW92ZShwYXJzZWRWYWx1ZSk7CiAgICAgICAgICAgICByYW5nZS5jb25zdW1lV2hpdGVzcGFj
ZSgpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBGaW5h
bGx5LCBhdHRlbXB0IHRvIHBhcnNlIG9uZSBvZiB0aGUgYXhpcyBpZGVudGlmaWVycy4KLSAgICAg
ICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVYLCBDU1NWYWx1ZVksIENTU1Zh
bHVlWj4ocmFuZ2UpOworICAgICAgICBhdXRvIHBhcnNlZFZhbHVlID0gY29uc3VtZUlkZW50PENT
U1ZhbHVlWCwgQ1NTVmFsdWVZLCBDU1NWYWx1ZVo+KHJhbmdlKTsKICAgICAgICAgLy8gSWYgd2Ug
ZmFpbGVkIHRvIGZpbmQgb25lIG9mIHRob3NlIGlkZW50aWZpZXJzIG9yIG9uZSB3YXMgYWxyZWFk
eSBzcGVjaWZpZWQsIG9yIHdlJ2QgcHJldmlvdXNseQogICAgICAgICAvLyBlbmNvdW50ZXJlZCBu
dW1iZXJzIHRvIHNwZWNpZnkgYSByb3RhdGlvbiBheGlzLCB0aGVuIHRoaXMgdmFsdWUgaXMgaW52
YWxpZC4KICAgICAgICAgaWYgKCFwYXJzZWRWYWx1ZSB8fCBheGlzSWRlbnRpZmllciB8fCBsaXN0
LT5sZW5ndGgoKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBheGlzSWRl
bnRpZmllciA9IHBhcnNlZFZhbHVlOworICAgICAgICBheGlzSWRlbnRpZmllciA9IFdURk1vdmUo
cGFyc2VkVmFsdWUpOwogICAgICAgICByYW5nZS5jb25zdW1lV2hpdGVzcGFjZSgpOwogICAgIH0K
IApAQCAtMjA4NSw3ICsyMDcxLDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVJv
dGF0ZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZQogICAgIH0gZWxz
ZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBsaXN0OworICAgIHJldHVy
biBXVEZNb3ZlKGxpc3QpOwogfQogCiB0ZW1wbGF0ZSA8Q1NTVmFsdWVJRCBzdGFydCwgQ1NTVmFs
dWVJRCBlbmQ+CkBAIC0yMTIyLDE4ICsyMTA4LDE3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+
IGNvbnN1bWVQYWludFN0cm9rZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NT
CiB7CiAgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAg
cmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiB1cmwgPSBjb25zdW1lVXJsKHJhbmdlKTsKLSAgICBpZiAodXJsKSB7CisgICAgaWYgKGF1dG8g
dXJsID0gY29uc3VtZVVybChyYW5nZSkpIHsKICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJz
ZWRWYWx1ZTsKICAgICAgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkK
ICAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUlkZW50KHJhbmdlKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBjb25zdW1lQ29sb3IocmFuZ2UsIGNvbnRl
eHQpOwogICAgICAgICBpZiAocGFyc2VkVmFsdWUpIHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NW
YWx1ZUxpc3Q+IHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsK
KyAgICAgICAgICAgIGF1dG8gdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFy
YXRlZCgpOwogICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQodXJsLnJlbGVhc2VOb25OdWxsKCkp
OwogICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQocGFyc2VkVmFsdWUucmVsZWFzZU5vbk51bGwo
KSk7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWVzOworICAgICAgICAgICAgcmV0dXJuIFdURk1v
dmUodmFsdWVzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdXJsOwogICAgIH0KQEAgLTIx
NzcsNyArMjE2Miw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVQYWludE9yZGVy
KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogICAgIC8vIHBvcCBhIGxhc3QgbGlzdCBpdGVt
cyBmcm9tIENTU1ZhbHVlTGlzdCB3aXRob3V0IGJpZ2dlciBjb3N0LCB3ZSBjcmVhdGUgdGhlCiAg
ICAgLy8gbGlzdCBhZnRlciBwYXJzaW5nLgogICAgIENTU1ZhbHVlSUQgZmlyc3RQYWludE9yZGVy
VHlwZSA9IHBhaW50VHlwZUxpc3QuYXQoMCk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gcGFp
bnRPcmRlckxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAg
YXV0byBwYWludE9yZGVyTGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQo
KTsKICAgICBzd2l0Y2ggKGZpcnN0UGFpbnRPcmRlclR5cGUpIHsKICAgICBjYXNlIENTU1ZhbHVl
RmlsbDoKICAgICBjYXNlIENTU1ZhbHVlU3Ryb2tlOgpAQCAtMjE5OCw3ICsyMTgzLDcgQEAgc3Rh
dGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVBhaW50T3JkZXIoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIHJl
dHVybiBwYWludE9yZGVyTGlzdDsKKyAgICByZXR1cm4gV1RGTW92ZShwYWludE9yZGVyTGlzdCk7
CiB9CiAKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVOb25lT3JVUkkoQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgcmFuZ2UpCkBAIC0yMjE4LDggKzIyMDMsNyBAQCBzdGF0aWMgUmVmUHRyPENT
U1ZhbHVlPiBjb25zdW1lRmxleEJhc2lzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQ
YXJzZXJNbwogCiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lS2VybmluZyhDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBtb2RlKQogewotICAgIFJlZlB0cjxD
U1NWYWx1ZT4gcmVzdWx0ID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVOb3Jt
YWw+KHJhbmdlKTsKLSAgICBpZiAocmVzdWx0KQorICAgIGlmIChhdXRvIHJlc3VsdCA9IGNvbnN1
bWVJZGVudDxDU1NWYWx1ZUF1dG8sIENTU1ZhbHVlTm9ybWFsPihyYW5nZSkpCiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGgocmFuZ2UsIG1vZGUsIFZhbHVl
UmFuZ2U6OkFsbCwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOwogfQpAQCAtMjIzMCwxNCArMjIxNCwx
NCBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lU3Ryb2tlRGFzaGFycmF5KENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlKQogICAgIGlmIChpZCA9PSBDU1NWYWx1ZU5vbmUpCiAgICAg
ICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOwogCi0gICAgUmVmUHRyPENTU1ZhbHVlTGlz
dD4gZGFzaGVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOworICAgIGF1
dG8gZGFzaGVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgIGRv
IHsKLSAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBkYXNoID0gY29uc3VtZUxlbmd0
aE9yUGVyY2VudChyYW5nZSwgU1ZHQXR0cmlidXRlTW9kZSwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRp
dmUpOworICAgICAgICBhdXRvIGRhc2ggPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBT
VkdBdHRyaWJ1dGVNb2RlLCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSk7CiAgICAgICAgIGlmICgh
ZGFzaCB8fCAoY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShyYW5nZSkgJiYgcmFuZ2Uu
YXRFbmQoKSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgZGFzaGVzLT5h
cHBlbmQoZGFzaC5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9IHdoaWxlICghcmFuZ2UuYXRFbmQo
KSk7Ci0gICAgcmV0dXJuIGRhc2hlczsKKyAgICByZXR1cm4gV1RGTW92ZShkYXNoZXMpOwogfQog
CiBzdGF0aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lQmFzZWxpbmVTaGlmdChD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKQEAgLTIyNTgsMjIgKzIyNDIsMjAgQEAgc3RhdGlj
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVJ4T3JSeShDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSwgQ1NTUGEKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVDdXJzb3Io
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRl
eHQsIGJvb2wgaW5RdWlya3NNb2RlKQogewogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3Q7
Ci0gICAgd2hpbGUgKFJlZlB0cjxDU1NWYWx1ZT4gaW1hZ2UgPSBjb25zdW1lSW1hZ2UocmFuZ2Us
IGNvbnRleHQsIHsgQWxsb3dlZEltYWdlVHlwZTo6VVJMRnVuY3Rpb24sIEFsbG93ZWRJbWFnZVR5
cGU6OkltYWdlU2V0IH0pKSB7Ci0gICAgICAgIEludFBvaW50IGhvdFNwb3QoLTEsIC0xKTsKLSAg
ICAgICAgYm9vbCBob3RTcG90U3BlY2lmaWVkID0gZmFsc2U7CisgICAgd2hpbGUgKGF1dG8gaW1h
Z2UgPSBjb25zdW1lSW1hZ2UocmFuZ2UsIGNvbnRleHQsIHsgQWxsb3dlZEltYWdlVHlwZTo6VVJM
RnVuY3Rpb24sIEFsbG93ZWRJbWFnZVR5cGU6OkltYWdlU2V0IH0pKSB7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3Q7CiAgICAgICAgIGlmIChhdXRvIHggPSBjb25zdW1l
TnVtYmVyUmF3KHJhbmdlKSkgewotICAgICAgICAgICAgaG90U3BvdC5zZXRYKHN0YXRpY19jYXN0
PGludD4oKngpKTsKICAgICAgICAgICAgIGF1dG8geSA9IGNvbnN1bWVOdW1iZXJSYXcocmFuZ2Up
OwogICAgICAgICAgICAgaWYgKCF5KQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgICAgICAgICAgaG90U3BvdC5zZXRZKHN0YXRpY19jYXN0PGludD4oKnkpKTsKLSAgICAgICAg
ICAgIGhvdFNwb3RTcGVjaWZpZWQgPSB0cnVlOworICAgICAgICAgICAgLy8gRklYTUU6IFNob3Vs
ZCB3ZSBjbGFtcCBvciByb3VuZCBpbnN0ZWFkIG9mIGp1c3QgY2FzdGluZyBmcm9tIGRvdWJsZSB0
byBpbnQ/CisgICAgICAgICAgICBob3RTcG90ID0gSW50UG9pbnQgeyBzdGF0aWNfY2FzdDxpbnQ+
KCp4KSwgc3RhdGljX2Nhc3Q8aW50PigqeSkgfTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgh
bGlzdCkKICAgICAgICAgICAgIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJh
dGVkKCk7CiAKLSAgICAgICAgbGlzdC0+YXBwZW5kKENTU0N1cnNvckltYWdlVmFsdWU6OmNyZWF0
ZShpbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCBob3RTcG90U3BlY2lmaWVkLCBob3RTcG90LCBjb250
ZXh0LmlzQ29udGVudE9wYXF1ZSA/IExvYWRlZEZyb21PcGFxdWVTb3VyY2U6OlllcyA6IExvYWRl
ZEZyb21PcGFxdWVTb3VyY2U6Ok5vKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NDdXJzb3JJ
bWFnZVZhbHVlOjpjcmVhdGUoaW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgaG90U3BvdCwgY29udGV4
dC5pc0NvbnRlbnRPcGFxdWUgPyBMb2FkZWRGcm9tT3BhcXVlU291cmNlOjpZZXMgOiBMb2FkZWRG
cm9tT3BhcXVlU291cmNlOjpObykpOwogICAgICAgICBpZiAoIWNvbnN1bWVDb21tYUluY2x1ZGlu
Z1doaXRlc3BhY2UocmFuZ2UpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpA
QCAtMjMxNiw3ICsyMjk4LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUF0dHIo
Q1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzLCBDU1NQYXJzZXJDb250ZXh0IGMKIAogc3RhdGljIFJl
ZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUNvdW50ZXJDb250ZW50KENTU1BhcnNlclRva2VuUmFuZ2Ug
YXJncywgYm9vbCBjb3VudGVycykKIHsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGlk
ZW50aWZpZXIgPSBjb25zdW1lQ3VzdG9tSWRlbnQoYXJncyk7CisgICAgYXV0byBpZGVudGlmaWVy
ID0gY29uc3VtZUN1c3RvbUlkZW50KGFyZ3MpOwogICAgIGlmICghaWRlbnRpZmllcikKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTIzNTAsMTAgKzIzMzIsMTAgQEAgc3RhdGljIFJlZlB0
cjxDU1NWYWx1ZT4gY29uc3VtZUNvbnRlbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENT
U1BhcnNlckNvbnQKICAgICBpZiAoaWRlbnRNYXRjaGVzPENTU1ZhbHVlTm9uZSwgQ1NTVmFsdWVO
b3JtYWw+KHJhbmdlLnBlZWsoKS5pZCgpKSkKICAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChy
YW5nZSk7CiAKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6
OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgYXV0byB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6
OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAKICAgICBkbyB7Ci0gICAgICAgIFJlZlB0cjxDU1NW
YWx1ZT4gcGFyc2VkVmFsdWUgPSBjb25zdW1lSW1hZ2UocmFuZ2UsIGNvbnRleHQpOworICAgICAg
ICBhdXRvIHBhcnNlZFZhbHVlID0gY29uc3VtZUltYWdlKHJhbmdlLCBjb250ZXh0KTsKICAgICAg
ICAgaWYgKCFwYXJzZWRWYWx1ZSkKICAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gY29uc3VtZUlk
ZW50PENTU1ZhbHVlT3BlblF1b3RlLCBDU1NWYWx1ZUNsb3NlUXVvdGUsIENTU1ZhbHVlTm9PcGVu
UXVvdGUsIENTU1ZhbHVlTm9DbG9zZVF1b3RlPihyYW5nZSk7CiAgICAgICAgIGlmICghcGFyc2Vk
VmFsdWUpCkBAIC0yMzcxLDcgKzIzNTMsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25z
dW1lQ29udGVudChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyQ29udAogICAg
ICAgICB2YWx1ZXMtPmFwcGVuZChwYXJzZWRWYWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9
IHdoaWxlICghcmFuZ2UuYXRFbmQoKSk7CiAKLSAgICByZXR1cm4gdmFsdWVzOworICAgIHJldHVy
biBXVEZNb3ZlKHZhbHVlcyk7CiB9CiAKIHN0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IGNvbnN1bWVQZXJzcGVjdGl2ZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2Vy
TW9kZSBjc3NQYXJzZXJNb2RlKQpAQCAtMjQwMyw3ICsyMzg1LDcgQEAgc3RhdGljIFJlZlB0cjxD
U1NWYWx1ZUxpc3Q+IGNvbnN1bWVTY3JvbGxTbmFwQWxpZ24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UpCiAgICAgYXV0byBzZWNvbmRWYWx1ZSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZU5vbmUs
IENTU1ZhbHVlU3RhcnQsIENTU1ZhbHVlQ2VudGVyLCBDU1NWYWx1ZUVuZD4ocmFuZ2UpOwogICAg
IGJvb2wgc2hvdWxkQWRkU2Vjb25kVmFsdWUgPSBzZWNvbmRWYWx1ZSAmJiAhc2Vjb25kVmFsdWUt
PmVxdWFscygqZmlyc3RWYWx1ZSk7CiAKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBhbGlnbm1l
bnRWYWx1ZSA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBhdXRv
IGFsaWdubWVudFZhbHVlID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwog
ICAgIGFsaWdubWVudFZhbHVlLT5hcHBlbmQoZmlyc3RWYWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsK
IAogICAgIC8vIE9ubHkgYWRkIHRoZSBzZWNvbmQgdmFsdWUgaWYgaXQgZGlmZmVycyBmcm9tIHRo
ZSBmaXJzdCBzbyB0aGF0IHdlIHByb2R1Y2UgdGhlIGNhbm9uaWNhbApAQCAtMjQxMSwxMiArMjM5
MywxMiBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlTGlzdD4gY29uc3VtZVNjcm9sbFNuYXBBbGln
bihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKICAgICBpZiAoc2hvdWxkQWRkU2Vjb25kVmFs
dWUpCiAgICAgICAgIGFsaWdubWVudFZhbHVlLT5hcHBlbmQoc2Vjb25kVmFsdWUucmVsZWFzZU5v
bk51bGwoKSk7CiAKLSAgICByZXR1cm4gYWxpZ25tZW50VmFsdWU7CisgICAgcmV0dXJuIFdURk1v
dmUoYWxpZ25tZW50VmFsdWUpOwogfQogCiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlTGlzdD4gY29u
c3VtZVNjcm9sbFNuYXBUeXBlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogewotICAgIFJl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IHR5cGVWYWx1ZSA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VT
ZXBhcmF0ZWQoKTsKKyAgICBhdXRvIHR5cGVWYWx1ZSA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3Bh
Y2VTZXBhcmF0ZWQoKTsKIAogICAgIGF1dG8gZmlyc3RWYWx1ZSA9IGNvbnN1bWVJZGVudDxDU1NW
YWx1ZU5vbmUsIENTU1ZhbHVlWCwgQ1NTVmFsdWVZLCBDU1NWYWx1ZUJsb2NrLCBDU1NWYWx1ZUlu
bGluZSwgQ1NTVmFsdWVCb3RoPihyYW5nZSk7CiAgICAgaWYgKCFmaXJzdFZhbHVlKQpAQCAtMjQy
OSw3ICsyNDExLDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGNvbnN1bWVTY3JvbGxT
bmFwVHlwZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKICAgICBpZiAoc2Vjb25kVmFsdWUg
JiYgc2Vjb25kVmFsdWUtPnZhbHVlSUQoKSAhPSBDU1NWYWx1ZVByb3hpbWl0eSkKICAgICAgICAg
dHlwZVZhbHVlLT5hcHBlbmQoc2Vjb25kVmFsdWUucmVsZWFzZU5vbk51bGwoKSk7CiAKLSAgICBy
ZXR1cm4gdHlwZVZhbHVlOworICAgIHJldHVybiBXVEZNb3ZlKHR5cGVWYWx1ZSk7CiB9CiAKICNl
bmRpZgpAQCAtMjQ1MiwxMCArMjQzNCwxMCBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25z
dW1lT3ZlcnNjcm9sbEJlaGF2aW9yKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogCiBzdGF0
aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lQm9yZGVyUmFkaXVzQ29ybmVyKENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCiB7Ci0gICAgUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwYXJzZWRWYWx1ZTEgPSBjb25zdW1lTGVuZ3RoT3JQZXJj
ZW50KHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSk7CisgICAg
YXV0byBwYXJzZWRWYWx1ZTEgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50KHJhbmdlLCBjc3NQYXJz
ZXJNb2RlLCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSk7CiAgICAgaWYgKCFwYXJzZWRWYWx1ZTEp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
cGFyc2VkVmFsdWUyID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9k
ZSwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUpOworICAgIGF1dG8gcGFyc2VkVmFsdWUyID0gY29u
c3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZTo6Tm9u
TmVnYXRpdmUpOwogICAgIGlmICghcGFyc2VkVmFsdWUyKQogICAgICAgICBwYXJzZWRWYWx1ZTIg
PSBwYXJzZWRWYWx1ZTE7CiAgICAgcmV0dXJuIGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihwYXJz
ZWRWYWx1ZTEucmVsZWFzZU5vbk51bGwoKSwgcGFyc2VkVmFsdWUyLnJlbGVhc2VOb25OdWxsKCks
IFBhaXI6OklkZW50aWNhbFZhbHVlRW5jb2Rpbmc6OkNvYWxlc2NlKTsKQEAgLTI0NzcsNyArMjQ1
OSw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVUZXh0RGVjb3JhdGlvblRoaWNr
bmVzcyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nCiAKIHN0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IGNvbnN1bWVWZXJ0aWNhbEFsaWduKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdl
LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCiB7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVJZGVudFJhbmdlKHJhbmdlLCBDU1NWYWx1ZUJh
c2VsaW5lLCBDU1NWYWx1ZVdlYmtpdEJhc2VsaW5lTWlkZGxlKTsKKyAgICBhdXRvIHBhcnNlZFZh
bHVlID0gY29uc3VtZUlkZW50UmFuZ2UocmFuZ2UsIENTU1ZhbHVlQmFzZWxpbmUsIENTU1ZhbHVl
V2Via2l0QmFzZWxpbmVNaWRkbGUpOwogICAgIGlmICghcGFyc2VkVmFsdWUpCiAgICAgICAgIHBh
cnNlZFZhbHVlID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChyYW5nZSwgY3NzUGFyc2VyTW9kZSwg
VmFsdWVSYW5nZTo6QWxsLCBVbml0bGVzc1F1aXJrOjpBbGxvdyk7CiAgICAgcmV0dXJuIHBhcnNl
ZFZhbHVlOwpAQCAtMjQ5NCw4ICsyNDc2LDggQEAgc3RhdGljIFJlZlB0cjxDU1NCYXNpY1NoYXBl
Q2lyY2xlPiBjb25zdW1lQmFzaWNTaGFwZUNpcmNsZShDU1NQYXJzZXJUb2tlblJhbmdlJgogewog
ICAgIC8vIHNwZWM6IGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3Mtc2hhcGVzLyNzdXBwb3J0
ZWQtYmFzaWMtc2hhcGVzCiAgICAgLy8gY2lyY2xlKCBbPHNoYXBlLXJhZGl1cz5dPyBbYXQgPHBv
c2l0aW9uPl0/ICkKLSAgICBSZWZQdHI8Q1NTQmFzaWNTaGFwZUNpcmNsZT4gc2hhcGUgPSBDU1NC
YXNpY1NoYXBlQ2lyY2xlOjpjcmVhdGUoKTsKLSAgICBpZiAoUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiByYWRpdXMgPSBjb25zdW1lU2hhcGVSYWRpdXMoYXJncywgY29udGV4dC5tb2RlKSkKKyAg
ICBhdXRvIHNoYXBlID0gQ1NTQmFzaWNTaGFwZUNpcmNsZTo6Y3JlYXRlKCk7CisgICAgaWYgKGF1
dG8gcmFkaXVzID0gY29uc3VtZVNoYXBlUmFkaXVzKGFyZ3MsIGNvbnRleHQubW9kZSkpCiAgICAg
ICAgIHNoYXBlLT5zZXRSYWRpdXMocmFkaXVzLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIGlmIChj
b25zdW1lSWRlbnQ8Q1NTVmFsdWVBdD4oYXJncykpIHsKICAgICAgICAgYXV0byBjZW50ZXJDb29y
ZGluYXRlcyA9IGNvbnN1bWVQb3NpdGlvbkNvb3JkaW5hdGVzKGFyZ3MsIGNvbnRleHQubW9kZSwg
VW5pdGxlc3NRdWlyazo6Rm9yYmlkLCBQb3NpdGlvblN5bnRheDo6UG9zaXRpb24pOwpAQCAtMjUw
NCw3ICsyNDg2LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NCYXNpY1NoYXBlQ2lyY2xlPiBjb25zdW1l
QmFzaWNTaGFwZUNpcmNsZShDU1NQYXJzZXJUb2tlblJhbmdlJgogICAgICAgICBzaGFwZS0+c2V0
Q2VudGVyWChXVEZNb3ZlKGNlbnRlckNvb3JkaW5hdGVzLT54KSk7CiAgICAgICAgIHNoYXBlLT5z
ZXRDZW50ZXJZKFdURk1vdmUoY2VudGVyQ29vcmRpbmF0ZXMtPnkpKTsKICAgICB9Ci0gICAgcmV0
dXJuIHNoYXBlOworICAgIHJldHVybiBXVEZNb3ZlKHNoYXBlKTsKIH0KIAogc3RhdGljIFJlZlB0
cjxDU1NCYXNpY1NoYXBlRWxsaXBzZT4gY29uc3VtZUJhc2ljU2hhcGVFbGxpcHNlKENTU1BhcnNl
clRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCkBAIC0y
NTMxLDcgKzI1MTMsNyBAQCBzdGF0aWMgUmVmUHRyPENTU0Jhc2ljU2hhcGVFbGxpcHNlPiBjb25z
dW1lQmFzaWNTaGFwZUVsbGlwc2UoQ1NTUGFyc2VyVG9rZW5SYW5nZQogCiBzdGF0aWMgUmVmUHRy
PENTU0Jhc2ljU2hhcGVQb2x5Z29uPiBjb25zdW1lQmFzaWNTaGFwZVBvbHlnb24oQ1NTUGFyc2Vy
VG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKIHsKLSAg
ICBSZWZQdHI8Q1NTQmFzaWNTaGFwZVBvbHlnb24+IHNoYXBlID0gQ1NTQmFzaWNTaGFwZVBvbHln
b246OmNyZWF0ZSgpOworICAgIGF1dG8gc2hhcGUgPSBDU1NCYXNpY1NoYXBlUG9seWdvbjo6Y3Jl
YXRlKCk7CiAgICAgaWYgKGlkZW50TWF0Y2hlczxDU1NWYWx1ZUV2ZW5vZGQsIENTU1ZhbHVlTm9u
emVybz4oYXJncy5wZWVrKCkuaWQoKSkpIHsKICAgICAgICAgc2hhcGUtPnNldFdpbmRSdWxlKGFy
Z3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpID09IENTU1ZhbHVlRXZlbm9kZCA/
IFdpbmRSdWxlOjpFdmVuT2RkIDogV2luZFJ1bGU6Ok5vblplcm8pOwogICAgICAgICBpZiAoIWNv
bnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCkBAIC0yNTM5LDE1ICsyNTIxLDE1
IEBAIHN0YXRpYyBSZWZQdHI8Q1NTQmFzaWNTaGFwZVBvbHlnb24+IGNvbnN1bWVCYXNpY1NoYXBl
UG9seWdvbihDU1NQYXJzZXJUb2tlblJhbmdlCiAgICAgfQogCiAgICAgZG8gewotICAgICAgICBS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHhMZW5ndGggPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50
KGFyZ3MsIGNvbnRleHQubW9kZSwgVmFsdWVSYW5nZTo6QWxsKTsKKyAgICAgICAgYXV0byB4TGVu
Z3RoID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjb250ZXh0Lm1vZGUsIFZhbHVlUmFu
Z2U6OkFsbCk7CiAgICAgICAgIGlmICgheExlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHlMZW5ndGggPSBjb25zdW1l
TGVuZ3RoT3JQZXJjZW50KGFyZ3MsIGNvbnRleHQubW9kZSwgVmFsdWVSYW5nZTo6QWxsKTsKKyAg
ICAgICAgYXV0byB5TGVuZ3RoID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjb250ZXh0
Lm1vZGUsIFZhbHVlUmFuZ2U6OkFsbCk7CiAgICAgICAgIGlmICgheUxlbmd0aCkKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBzaGFwZS0+YXBwZW5kUG9pbnQoeExlbmd0aC5y
ZWxlYXNlTm9uTnVsbCgpLCB5TGVuZ3RoLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0gd2hpbGUg
KGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpOwotICAgIHJldHVybiBzaGFw
ZTsKKyAgICByZXR1cm4gV1RGTW92ZShzaGFwZSk7CiB9CiAKIHN0YXRpYyBSZWZQdHI8Q1NTQmFz
aWNTaGFwZVBhdGg+IGNvbnN1bWVCYXNpY1NoYXBlUGF0aChDU1NQYXJzZXJUb2tlblJhbmdlJiBh
cmdzKQpAQCAtMjYyMywxMSArMjYwNSwxMSBAQCBzdGF0aWMgYm9vbCBjb25zdW1lUmFkaWkoUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBob3Jpem9udGFsUmFkaWlbNF0sIFJlZlB0cjxDUwogCiBz
dGF0aWMgUmVmUHRyPENTU0Jhc2ljU2hhcGVJbnNldD4gY29uc3VtZUJhc2ljU2hhcGVJbnNldChD
U1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0
KQogewotICAgIFJlZlB0cjxDU1NCYXNpY1NoYXBlSW5zZXQ+IHNoYXBlID0gQ1NTQmFzaWNTaGFw
ZUluc2V0OjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHRvcCA9IGNv
bnN1bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlOjpBbGwp
OworICAgIGF1dG8gc2hhcGUgPSBDU1NCYXNpY1NoYXBlSW5zZXQ6OmNyZWF0ZSgpOworICAgIGF1
dG8gdG9wID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjb250ZXh0Lm1vZGUsIFZhbHVl
UmFuZ2U6OkFsbCk7CiAgICAgaWYgKCF0b3ApCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmlnaHQgPSBjb25zdW1lTGVuZ3RoT3JQZXJjZW50
KGFyZ3MsIGNvbnRleHQubW9kZSwgVmFsdWVSYW5nZTo6QWxsKTsKKyAgICBhdXRvIHJpZ2h0ID0g
Y29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjb250ZXh0Lm1vZGUsIFZhbHVlUmFuZ2U6OkFs
bCk7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBib3R0b207CiAgICAgUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiBsZWZ0OwogICAgIGlmIChyaWdodCkgewpAQCAtMjY0NSw4ICsyNjI3
LDggQEAgc3RhdGljIFJlZlB0cjxDU1NCYXNpY1NoYXBlSW5zZXQ+IGNvbnN1bWVCYXNpY1NoYXBl
SW5zZXQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXIKICAgICAgICAgc2hhcGUtPnVwZGF0ZVNoYXBl
U2l6ZTFWYWx1ZSh0b3AucmVsZWFzZU5vbk51bGwoKSk7CiAKICAgICBpZiAoY29uc3VtZUlkZW50
PENTU1ZhbHVlUm91bmQ+KGFyZ3MpKSB7Ci0gICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gaG9yaXpvbnRhbFJhZGlpWzRdID0geyAwIH07Ci0gICAgICAgIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gdmVydGljYWxSYWRpaVs0XSA9IHsgMCB9OworICAgICAgICBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IGhvcml6b250YWxSYWRpaVs0XTsKKyAgICAgICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiB2ZXJ0aWNhbFJhZGlpWzRdOwogICAgICAgICBpZiAoIWNvbnN1bWVSYWRpaSho
b3Jpem9udGFsUmFkaWksIHZlcnRpY2FsUmFkaWksIGFyZ3MsIGNvbnRleHQubW9kZSwgZmFsc2Up
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHNoYXBlLT5zZXRUb3BMZWZ0
UmFkaXVzKGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihob3Jpem9udGFsUmFkaWlbMF0ucmVsZWFz
ZU5vbk51bGwoKSwgdmVydGljYWxSYWRpaVswXS5yZWxlYXNlTm9uTnVsbCgpLCBQYWlyOjpJZGVu
dGljYWxWYWx1ZUVuY29kaW5nOjpDb2FsZXNjZSkpOwpAQCAtMjY1NCw3ICsyNjM2LDcgQEAgc3Rh
dGljIFJlZlB0cjxDU1NCYXNpY1NoYXBlSW5zZXQ+IGNvbnN1bWVCYXNpY1NoYXBlSW5zZXQoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgYXIKICAgICAgICAgc2hhcGUtPnNldEJvdHRvbVJpZ2h0UmFkaXVz
KGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihob3Jpem9udGFsUmFkaWlbMl0ucmVsZWFzZU5vbk51
bGwoKSwgdmVydGljYWxSYWRpaVsyXS5yZWxlYXNlTm9uTnVsbCgpLCBQYWlyOjpJZGVudGljYWxW
YWx1ZUVuY29kaW5nOjpDb2FsZXNjZSkpOwogICAgICAgICBzaGFwZS0+c2V0Qm90dG9tTGVmdFJh
ZGl1cyhjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIoaG9yaXpvbnRhbFJhZGlpWzNdLnJlbGVhc2VO
b25OdWxsKCksIHZlcnRpY2FsUmFkaWlbM10ucmVsZWFzZU5vbk51bGwoKSwgUGFpcjo6SWRlbnRp
Y2FsVmFsdWVFbmNvZGluZzo6Q29hbGVzY2UpKTsKICAgICB9Ci0gICAgcmV0dXJuIHNoYXBlOwor
ICAgIHJldHVybiBXVEZNb3ZlKHNoYXBlKTsKIH0KIAogc3RhdGljIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gY29uc3VtZUJhc2ljU2hhcGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNv
bnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCkBAIC0yNjg3LDkgKzI2NjksOSBAQCBzdGF0
aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lQmFzaWNTaGFwZShDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSwgYwogICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigp
LmNyZWF0ZVZhbHVlKHNoYXBlLnJlbGVhc2VOb25OdWxsKCkpOwogfQogCi1zdGF0aWMgUmVmUHRy
PENTU1ZhbHVlPiBjb25zdW1lQmFzaWNTaGFwZU9yQm94KENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQorc3RhdGljIFJlZlB0cjxDU1NW
YWx1ZUxpc3Q+IGNvbnN1bWVCYXNpY1NoYXBlT3JCb3goQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFu
Z2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgUmVmUHRyPENTU1Zh
bHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAg
ICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAg
Ym9vbCBzaGFwZUZvdW5kID0gZmFsc2U7CiAgICAgYm9vbCBib3hGb3VuZCA9IGZhbHNlOwogICAg
IHdoaWxlICghcmFuZ2UuYXRFbmQoKSAmJiAhKHNoYXBlRm91bmQgJiYgYm94Rm91bmQpKSB7CkBA
IC0yNzA5LDM3ICsyNjkxLDM3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVCYXNp
Y1NoYXBlT3JCb3goQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0CiAgICAgaWYgKCFy
YW5nZS5hdEVuZCgpIHx8ICFsaXN0LT5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgCi0gICAgcmV0dXJuIGxpc3Q7CisgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAg
ICAgCiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lQ2xpcFBhdGgoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAg
aWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgcmV0dXJuIGNv
bnN1bWVJZGVudChyYW5nZSk7Ci0gICAgaWYgKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdXJs
ID0gY29uc3VtZVVybChyYW5nZSkpCi0gICAgICAgIHJldHVybiB1cmw7CisgICAgaWYgKGF1dG8g
dXJsID0gY29uc3VtZVVybChyYW5nZSkpCisgICAgICAgIHJldHVybiBXVEZNb3ZlKHVybCk7CiAg
ICAgcmV0dXJuIGNvbnN1bWVCYXNpY1NoYXBlT3JCb3gocmFuZ2UsIGNvbnRleHQpOwogfQogCiBz
dGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lU2hhcGVPdXRzaWRlKENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQogewotICAgIGlm
IChSZWZQdHI8Q1NTVmFsdWU+IGltYWdlVmFsdWUgPSBjb25zdW1lSW1hZ2VPck5vbmUocmFuZ2Us
IGNvbnRleHQpKQorICAgIGlmIChhdXRvIGltYWdlVmFsdWUgPSBjb25zdW1lSW1hZ2VPck5vbmUo
cmFuZ2UsIGNvbnRleHQpKQogICAgICAgICByZXR1cm4gaW1hZ2VWYWx1ZTsKLSAgICBSZWZQdHI8
Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgp
OwotICAgIGlmIChSZWZQdHI8Q1NTVmFsdWU+IGJveFZhbHVlID0gY29uc3VtZUlkZW50PENTU1Zh
bHVlQ29udGVudEJveCwgQ1NTVmFsdWVQYWRkaW5nQm94LCBDU1NWYWx1ZUJvcmRlckJveCwgQ1NT
VmFsdWVNYXJnaW5Cb3g+KHJhbmdlKSkKKyAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNy
ZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgaWYgKGF1dG8gYm94VmFsdWUgPSBjb25zdW1lSWRl
bnQ8Q1NTVmFsdWVDb250ZW50Qm94LCBDU1NWYWx1ZVBhZGRpbmdCb3gsIENTU1ZhbHVlQm9yZGVy
Qm94LCBDU1NWYWx1ZU1hcmdpbkJveD4ocmFuZ2UpKQogICAgICAgICBsaXN0LT5hcHBlbmQoYm94
VmFsdWUucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgaWYgKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gc2hhcGVWYWx1ZSA9IGNvbnN1bWVCYXNpY1NoYXBlKHJhbmdlLCBjb250ZXh0KSkgeworICAg
IGlmIChhdXRvIHNoYXBlVmFsdWUgPSBjb25zdW1lQmFzaWNTaGFwZShyYW5nZSwgY29udGV4dCkp
IHsKICAgICAgICAgaWYgKHNoYXBlVmFsdWUtPnNoYXBlVmFsdWUoKS0+dHlwZSgpID09IENTU0Jh
c2ljU2hhcGVDaXJjbGU6OkNTU0Jhc2ljU2hhcGVQYXRoVHlwZSkKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICBsaXN0LT5hcHBlbmQoc2hhcGVWYWx1ZS5yZWxlYXNlTm9uTnVs
bCgpKTsKICAgICAgICAgaWYgKGxpc3QtPmxlbmd0aCgpIDwgMikgewotICAgICAgICAgICAgaWYg
KFJlZlB0cjxDU1NWYWx1ZT4gYm94VmFsdWUgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVDb250ZW50
Qm94LCBDU1NWYWx1ZVBhZGRpbmdCb3gsIENTU1ZhbHVlQm9yZGVyQm94LCBDU1NWYWx1ZU1hcmdp
bkJveD4ocmFuZ2UpKQorICAgICAgICAgICAgaWYgKGF1dG8gYm94VmFsdWUgPSBjb25zdW1lSWRl
bnQ8Q1NTVmFsdWVDb250ZW50Qm94LCBDU1NWYWx1ZVBhZGRpbmdCb3gsIENTU1ZhbHVlQm9yZGVy
Qm94LCBDU1NWYWx1ZU1hcmdpbkJveD4ocmFuZ2UpKQogICAgICAgICAgICAgICAgIGxpc3QtPmFw
cGVuZChib3hWYWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgfQogICAgIH0KICAgICBp
ZiAoIWxpc3QtPmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4g
bGlzdDsKKyAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKIH0KIAogc3RhdGljIGJvb2wgaXNBdXRv
KENTU1ZhbHVlSUQgaWQpCkBAIC0yODAxLDggKzI3ODMsOCBAQCBzdGF0aWMgQ1NTVmFsdWVJRCBn
ZXRCYXNlbGluZUtleXdvcmQoUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSkKIAogc3RhdGljIFJlZlB0
cjxDU1NWYWx1ZT4gY29uc3VtZUJhc2VsaW5lS2V5d29yZChDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSkKIHsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHByZWZlcmVuY2UgPSBjb25z
dW1lSWRlbnQ8Q1NTVmFsdWVGaXJzdCwgQ1NTVmFsdWVMYXN0PihyYW5nZSk7Ci0gICAgUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBiYXNlbGluZSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUJhc2Vs
aW5lPihyYW5nZSk7CisgICAgYXV0byBwcmVmZXJlbmNlID0gY29uc3VtZUlkZW50PENTU1ZhbHVl
Rmlyc3QsIENTU1ZhbHVlTGFzdD4ocmFuZ2UpOworICAgIGF1dG8gYmFzZWxpbmUgPSBjb25zdW1l
SWRlbnQ8Q1NTVmFsdWVCYXNlbGluZT4ocmFuZ2UpOwogICAgIGlmICghYmFzZWxpbmUpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIGlmIChwcmVmZXJlbmNlICYmIHByZWZlcmVuY2UtPnZh
bHVlSUQoKSA9PSBDU1NWYWx1ZUxhc3QpCkBAIC0yODIwLDcgKzI4MDIsNyBAQCBzdGF0aWMgUmVm
UHRyPENTU1ZhbHVlPiBjb25zdW1lQ29udGVudERpc3RyaWJ1dGlvbk92ZXJmbG93UG9zaXRpb24o
Q1NTUGFyc2VyVG9rZQogICAgICAgICByZXR1cm4gQ1NTQ29udGVudERpc3RyaWJ1dGlvblZhbHVl
OjpjcmVhdGUoQ1NTVmFsdWVJbnZhbGlkLCByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFj
ZSgpLmlkKCksIENTU1ZhbHVlSW52YWxpZCk7CiAKICAgICBpZiAoaXNCYXNlbGluZUtleXdvcmQo
aWQpKSB7Ci0gICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gYmFzZWxpbmUgPSBjb25zdW1lQmFzZWxp
bmVLZXl3b3JkKHJhbmdlKTsKKyAgICAgICAgYXV0byBiYXNlbGluZSA9IGNvbnN1bWVCYXNlbGlu
ZUtleXdvcmQocmFuZ2UpOwogICAgICAgICBpZiAoIWJhc2VsaW5lKQogICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVybiBDU1NDb250ZW50RGlzdHJpYnV0aW9uVmFsdWU6
OmNyZWF0ZShDU1NWYWx1ZUludmFsaWQsIGdldEJhc2VsaW5lS2V5d29yZChiYXNlbGluZSksIENT
U1ZhbHVlSW52YWxpZCk7CkBAIC0yODQzLDEwICsyODI1LDEwIEBAIHN0YXRpYyBSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVCb3JkZXJJbWFnZVJlcGVhdEtleXdvcmQoQ1NTUGFyc2Vy
VG9rZW5SCiAKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVCb3JkZXJJbWFnZVJlcGVh
dChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIHsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IGhvcml6b250YWwgPSBjb25zdW1lQm9yZGVySW1hZ2VSZXBlYXRLZXl3b3JkKHJhbmdl
KTsKKyAgICBhdXRvIGhvcml6b250YWwgPSBjb25zdW1lQm9yZGVySW1hZ2VSZXBlYXRLZXl3b3Jk
KHJhbmdlKTsKICAgICBpZiAoIWhvcml6b250YWwpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmVydGljYWwgPSBjb25zdW1lQm9yZGVySW1h
Z2VSZXBlYXRLZXl3b3JkKHJhbmdlKTsKKyAgICBhdXRvIHZlcnRpY2FsID0gY29uc3VtZUJvcmRl
ckltYWdlUmVwZWF0S2V5d29yZChyYW5nZSk7CiAgICAgaWYgKCF2ZXJ0aWNhbCkKICAgICAgICAg
dmVydGljYWwgPSBob3Jpem9udGFsOwogICAgIHJldHVybiBjcmVhdGVQcmltaXRpdmVWYWx1ZVBh
aXIoaG9yaXpvbnRhbC5yZWxlYXNlTm9uTnVsbCgpLCB2ZXJ0aWNhbC5yZWxlYXNlTm9uTnVsbCgp
LCBQYWlyOjpJZGVudGljYWxWYWx1ZUVuY29kaW5nOjpDb2FsZXNjZSk7CkBAIC0yODU1LDEwICsy
ODM3LDEwIEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVCb3JkZXJJbWFnZVJlcGVh
dChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNv
bnN1bWVCb3JkZXJJbWFnZVNsaWNlKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlKQogewogICAgIGJvb2wgZmlsbCA9IGNvbnN1bWVJZGVudDxDU1NWYWx1
ZUZpbGw+KHJhbmdlKTsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNsaWNlc1s0XSA9
IHsgMCB9OworICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc2xpY2VzWzRdOwogCiAgICAg
Zm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IDQ7ICsraW5kZXgpIHsKLSAgICAgICAgUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZSA9IGNvbnN1bWVQZXJjZW50KHJhbmdlLCBWYWx1
ZVJhbmdlOjpOb25OZWdhdGl2ZSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSBjb25zdW1lUGVyY2Vu
dChyYW5nZSwgVmFsdWVSYW5nZTo6Tm9uTmVnYXRpdmUpOwogICAgICAgICBpZiAoIXZhbHVlKQog
ICAgICAgICAgICAgdmFsdWUgPSBjb25zdW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJhbmdlOjpOb25O
ZWdhdGl2ZSk7CiAgICAgICAgIGlmICghdmFsdWUpCkBAIC0yODkyLDcgKzI4NzQsNyBAQCBzdGF0
aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lQm9yZGVySW1hZ2VTbGljZShDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5LCBDU1NQYXJzZQogCiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lQm9y
ZGVySW1hZ2VPdXRzZXQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiB7Ci0gICAgUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBvdXRzZXRzWzRdID0geyAwIH07CisgICAgUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBvdXRzZXRzWzRdOwogCiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiB2YWx1ZTsKICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgNDsgKytpbmRleCkg
ewpAQCAtMzAwMSw3ICsyOTgzLDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVJl
ZmxlY3QoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnMKICAgICBpZiAo
cmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICByZXR1cm4gY29uc3Vt
ZUlkZW50KHJhbmdlKTsKICAgICAKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGRpcmVj
dGlvbiA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUFib3ZlLCBDU1NWYWx1ZUJlbG93LCBDU1NWYWx1
ZUxlZnQsIENTU1ZhbHVlUmlnaHQ+KHJhbmdlKTsKKyAgICBhdXRvIGRpcmVjdGlvbiA9IGNvbnN1
bWVJZGVudDxDU1NWYWx1ZUFib3ZlLCBDU1NWYWx1ZUJlbG93LCBDU1NWYWx1ZUxlZnQsIENTU1Zh
bHVlUmlnaHQ+KHJhbmdlKTsKICAgICBpZiAoIWRpcmVjdGlvbikKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKQEAgLTMwNjEsNyArMzA0Myw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IGNvbnN1bWVXZWJraXRNYXNrU291cmNlVHlwZShDU1NQYXJzZXJUb2tlblJhbmdlCiBz
dGF0aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lUHJlZml4ZWRCYWNrZ3JvdW5k
Qm94KENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBj
b25zdCBDU1NQYXJzZXJDb250ZXh0JiAvKmNvbnRleHQqLykKIHsKICAgICAvLyBUaGUgdmFsdWVz
ICdib3JkZXInLCAncGFkZGluZycgYW5kICdjb250ZW50JyBhcmUgZGVwcmVjYXRlZCBhbmQgZG8g
bm90IGFwcGx5IHRvIHRoZSB2ZXJzaW9uIG9mIHRoZSBwcm9wZXJ0eSB0aGF0IGhhcyB0aGUgLXdl
YmtpdC0gcHJlZml4IHJlbW92ZWQuCi0gICAgaWYgKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
dmFsdWUgPSBjb25zdW1lSWRlbnRSYW5nZShyYW5nZSwgQ1NTVmFsdWVCb3JkZXIsIENTU1ZhbHVl
UGFkZGluZ0JveCkpCisgICAgaWYgKGF1dG8gdmFsdWUgPSBjb25zdW1lSWRlbnRSYW5nZShyYW5n
ZSwgQ1NTVmFsdWVCb3JkZXIsIENTU1ZhbHVlUGFkZGluZ0JveCkpCiAgICAgICAgIHJldHVybiB2
YWx1ZTsKICAgICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVXZWJraXRUZXh0IHx8
ICgocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ2xpcCB8fCBwcm9wZXJ0
eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwKSAmJiByYW5nZS5wZWVrKCkuaWQoKSA9PSBD
U1NWYWx1ZVRleHQpKQogICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50KHJhbmdlKTsKQEAgLTMw
NzUsNyArMzA1Nyw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNvbnN1bWVC
YWNrZ3JvdW5kU2l6ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDCiAKICAgICAvLyBGSVhNRTog
V2UncmUgYWxsb3dpbmcgdGhlIHVuaXRsZXNzIHF1aXJrIG9uIHRoaXMgcHJvcGVydHkgYmVjYXVz
ZSBvdXIKICAgICAvLyB0ZXN0cyBhc3N1bWUgdGhhdC4gT3RoZXIgYnJvd3NlciBlbmdpbmVzIGRv
bid0IGFsbG93IGl0IHRob3VnaC4KLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGhvcml6
b250YWwgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVBdXRvPihyYW5nZSk7CisgICAgYXV0byBob3Jp
em9udGFsID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQXV0bz4ocmFuZ2UpOwogICAgIGlmICghaG9y
aXpvbnRhbCkKICAgICAgICAgaG9yaXpvbnRhbCA9IGNvbnN1bWVMZW5ndGhPclBlcmNlbnQocmFu
Z2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2U6Ok5vbk5lZ2F0aXZlLCBVbml0bGVzc1F1aXJr
OjpBbGxvdyk7CiAKQEAgLTMwOTYsMTkgKzMwNzgsMTkgQEAgc3RhdGljIFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gY29uc3VtZUJhY2tncm91bmRTaXplKENTU1Byb3BlcnR5SUQgcHJvcGVydHks
IEMKIAogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGNvbnN1bWVHcmlkQXV0b0Zsb3coQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiB7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiByb3dPckNvbHVtblZhbHVlID0gY29uc3VtZUlkZW50PENTU1ZhbHVlUm93LCBDU1NWYWx1ZUNv
bHVtbj4ocmFuZ2UpOwotICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gZGVuc2VBbGdvcml0
aG0gPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVEZW5zZT4ocmFuZ2UpOworICAgIGF1dG8gcm93T3JD
b2x1bW5WYWx1ZSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZVJvdywgQ1NTVmFsdWVDb2x1bW4+KHJh
bmdlKTsKKyAgICBhdXRvIGRlbnNlQWxnb3JpdGhtID0gY29uc3VtZUlkZW50PENTU1ZhbHVlRGVu
c2U+KHJhbmdlKTsKICAgICBpZiAoIXJvd09yQ29sdW1uVmFsdWUpIHsKICAgICAgICAgcm93T3JD
b2x1bW5WYWx1ZSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZVJvdywgQ1NTVmFsdWVDb2x1bW4+KHJh
bmdlKTsKICAgICAgICAgaWYgKCFyb3dPckNvbHVtblZhbHVlICYmICFkZW5zZUFsZ29yaXRobSkK
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICBSZWZQdHI8Q1NTVmFsdWVM
aXN0PiBwYXJzZWRWYWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7
CisgICAgYXV0byBwYXJzZWRWYWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJh
dGVkKCk7CiAgICAgaWYgKHJvd09yQ29sdW1uVmFsdWUpCiAgICAgICAgIHBhcnNlZFZhbHVlcy0+
YXBwZW5kKHJvd09yQ29sdW1uVmFsdWUucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgaWYgKGRlbnNl
QWxnb3JpdGhtKQogICAgICAgICBwYXJzZWRWYWx1ZXMtPmFwcGVuZChkZW5zZUFsZ29yaXRobS5y
ZWxlYXNlTm9uTnVsbCgpKTsKLSAgICByZXR1cm4gcGFyc2VkVmFsdWVzOworICAgIHJldHVybiBX
VEZNb3ZlKHBhcnNlZFZhbHVlcyk7CiB9CiAKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1
bWVCYWNrZ3JvdW5kQ29tcG9uZW50KENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQpAQCAtMzE1
Nyw4ICszMTM5LDcgQEAgc3RhdGljIHZvaWQgYWRkQmFja2dyb3VuZFZhbHVlKFJlZlB0cjxDU1NW
YWx1ZT4mIGxpc3QsIFJlZjxDU1NWYWx1ZT4mJiB2YWx1ZSkKIHsKICAgICBpZiAobGlzdCkgewog
ICAgICAgICBpZiAoIWxpc3QtPmlzQmFzZVZhbHVlTGlzdCgpKSB7Ci0gICAgICAgICAgICBSZWZQ
dHI8Q1NTVmFsdWU+IGZpcnN0VmFsdWUgPSBsaXN0OwotICAgICAgICAgICAgbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIGF1dG8gZmlyc3RW
YWx1ZSA9IHN0ZDo6ZXhjaGFuZ2UobGlzdCwgQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFy
YXRlZCgpKTsKICAgICAgICAgICAgIGRvd25jYXN0PENTU1ZhbHVlTGlzdD4oKmxpc3QpLmFwcGVu
ZChmaXJzdFZhbHVlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICB9CiAgICAgICAgIGRvd25j
YXN0PENTU1ZhbHVlTGlzdD4oKmxpc3QpLmFwcGVuZChXVEZNb3ZlKHZhbHVlKSk7CkBAIC0zMTcy
LDcgKzMxNTMsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lQ29tbWFTZXBhcmF0
ZWRCYWNrZ3JvdW5kQ29tcG9uZW50KENTU1Byb3BlcnR5SUQgcAogewogICAgIFJlZlB0cjxDU1NW
YWx1ZT4gcmVzdWx0OwogICAgIGRvIHsKLSAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9
IGNvbnN1bWVCYWNrZ3JvdW5kQ29tcG9uZW50KHByb3BlcnR5LCByYW5nZSwgY29udGV4dCk7Cisg
ICAgICAgIGF1dG8gdmFsdWUgPSBjb25zdW1lQmFja2dyb3VuZENvbXBvbmVudChwcm9wZXJ0eSwg
cmFuZ2UsIGNvbnRleHQpOwogICAgICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgIGFkZEJhY2tncm91bmRWYWx1ZShyZXN1bHQsIHZhbHVlLnJlbGVh
c2VOb25OdWxsKCkpOwpAQCAtMzIwMCwxMCArMzE4MSwxMCBAQCBzdGF0aWMgUmVmUHRyPENTU1Zh
bHVlPiBjb25zdW1lU2VsZlBvc2l0aW9uT3ZlcmZsb3dQb3NpdGlvbihDU1NQYXJzZXJUb2tlblJh
bmdlJgogICAgIGlmIChpc0Jhc2VsaW5lS2V5d29yZChpZCkpCiAgICAgICAgIHJldHVybiBjb25z
dW1lQmFzZWxpbmVLZXl3b3JkKHJhbmdlKTsKIAotICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1
ZT4gb3ZlcmZsb3dQb3NpdGlvbiA9IGNvbnN1bWVPdmVyZmxvd1Bvc2l0aW9uS2V5d29yZChyYW5n
ZSk7CisgICAgYXV0byBvdmVyZmxvd1Bvc2l0aW9uID0gY29uc3VtZU92ZXJmbG93UG9zaXRpb25L
ZXl3b3JkKHJhbmdlKTsKICAgICBpZiAoIWlzUG9zaXRpb25LZXl3b3JkKHJhbmdlLnBlZWsoKS5p
ZCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZh
bHVlPiBzZWxmUG9zaXRpb24gPSBjb25zdW1lSWRlbnQocmFuZ2UpOworICAgIGF1dG8gc2VsZlBv
c2l0aW9uID0gY29uc3VtZUlkZW50KHJhbmdlKTsKICAgICBpZiAob3ZlcmZsb3dQb3NpdGlvbikK
ICAgICAgICAgcmV0dXJuIGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihvdmVyZmxvd1Bvc2l0aW9u
LnJlbGVhc2VOb25OdWxsKCksIHNlbGZQb3NpdGlvbi5yZWxlYXNlTm9uTnVsbCgpLCBQYWlyOjpJ
ZGVudGljYWxWYWx1ZUVuY29kaW5nOjpDb2FsZXNjZSk7CiAgICAgcmV0dXJuIHNlbGZQb3NpdGlv
bjsKQEAgLTMyMjMsOCArMzIwNCw4IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVK
dXN0aWZ5SXRlbXMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiAgICAgaWYgKGlkZW50TWF0
Y2hlczxDU1NWYWx1ZUF1dG8+KHJhbmdlLnBlZWsoKS5pZCgpKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZUNvcHkgPSByYW5nZTsKLSAgICBS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxlZ2FjeSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUxl
Z2FjeT4ocmFuZ2VDb3B5KTsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBvc2l0aW9u
S2V5d29yZCA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUNlbnRlciwgQ1NTVmFsdWVMZWZ0LCBDU1NW
YWx1ZVJpZ2h0PihyYW5nZUNvcHkpOworICAgIGF1dG8gbGVnYWN5ID0gY29uc3VtZUlkZW50PENT
U1ZhbHVlTGVnYWN5PihyYW5nZUNvcHkpOworICAgIGF1dG8gcG9zaXRpb25LZXl3b3JkID0gY29u
c3VtZUlkZW50PENTU1ZhbHVlQ2VudGVyLCBDU1NWYWx1ZUxlZnQsIENTU1ZhbHVlUmlnaHQ+KHJh
bmdlQ29weSk7CiAgICAgaWYgKCFsZWdhY3kpCiAgICAgICAgIGxlZ2FjeSA9IGNvbnN1bWVJZGVu
dDxDU1NWYWx1ZUxlZ2FjeT4ocmFuZ2VDb3B5KTsKICAgICBpZiAobGVnYWN5KSB7CkBAIC0zMjM4
LDE1ICszMjE5LDE1IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVKdXN0aWZ5SXRl
bXMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiAKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+
IGNvbnN1bWVGaXRDb250ZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJN
b2RlIGNzc1BhcnNlck1vZGUpCiB7Ci0gICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZUNvcHkg
PSByYW5nZTsKLSAgICBDU1NQYXJzZXJUb2tlblJhbmdlIGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24o
cmFuZ2VDb3B5KTsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxlbmd0aCA9IGNvbnN1
bWVMZW5ndGhPclBlcmNlbnQoYXJncywgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZTo6Tm9uTmVn
YXRpdmUsIFVuaXRsZXNzUXVpcms6OkFsbG93KTsKKyAgICBhdXRvIHJhbmdlQ29weSA9IHJhbmdl
OworICAgIGF1dG8gYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZUNvcHkpOworICAgIGF1dG8g
bGVuZ3RoID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjc3NQYXJzZXJNb2RlLCBWYWx1
ZVJhbmdlOjpOb25OZWdhdGl2ZSwgVW5pdGxlc3NRdWlyazo6QWxsb3cpOwogICAgIGlmICghbGVu
Z3RoIHx8ICFhcmdzLmF0RW5kKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJhbmdl
ID0gcmFuZ2VDb3B5OwotICAgIFJlZlB0cjxDU1NGdW5jdGlvblZhbHVlPiByZXN1bHQgPSBDU1NG
dW5jdGlvblZhbHVlOjpjcmVhdGUoQ1NTVmFsdWVGaXRDb250ZW50KTsKKyAgICBhdXRvIHJlc3Vs
dCA9IENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShDU1NWYWx1ZUZpdENvbnRlbnQpOwogICAgIHJl
c3VsdC0+YXBwZW5kKGxlbmd0aC5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICByZXR1cm4gcmVzdWx0
OworICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CiB9CiAKIHN0YXRpYyBSZWZQdHI8Q1NTUHJp
bWl0aXZlVmFsdWU+IGNvbnN1bWVDdXN0b21JZGVudEZvckdyaWRMaW5lKENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlKQpAQCAtMzI2Myw3ICszMjQ0LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1
ZT4gY29uc3VtZUdyaWRMaW5lKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogCiAgICAgUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzcGFuVmFsdWU7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBncmlkTGluZU5hbWU7Ci0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBudW1l
cmljVmFsdWUgPSBjb25zdW1lSW50ZWdlcihyYW5nZSk7CisgICAgYXV0byBudW1lcmljVmFsdWUg
PSBjb25zdW1lSW50ZWdlcihyYW5nZSk7CiAgICAgaWYgKG51bWVyaWNWYWx1ZSkgewogICAgICAg
ICBncmlkTGluZU5hbWUgPSBjb25zdW1lQ3VzdG9tSWRlbnRGb3JHcmlkTGluZShyYW5nZSk7CiAg
ICAgICAgIHNwYW5WYWx1ZSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZVNwYW4+KHJhbmdlKTsKQEAg
LTMyOTQsNyArMzI3NSw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVHcmlkTGlu
ZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKICAgICBpZiAobnVtZXJpY1ZhbHVlICYmIG51
bWVyaWNWYWx1ZS0+aW50VmFsdWUoKSA9PSAwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsgLy8g
QW4gPGludGVnZXI+IHZhbHVlIG9mIHplcm8gbWFrZXMgdGhlIGRlY2xhcmF0aW9uIGludmFsaWQu
CiAKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgYXV0byB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgaWYgKHNwYW5WYWx1ZSkKICAgICAgICAgdmFsdWVzLT5h
cHBlbmQoc3BhblZhbHVlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIGlmIChudW1lcmljVmFsdWUp
CkBAIC0zMzAyLDE2ICszMjgzLDEzIEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVH
cmlkTGluZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKICAgICBpZiAoZ3JpZExpbmVOYW1l
KQogICAgICAgICB2YWx1ZXMtPmFwcGVuZChncmlkTGluZU5hbWUucmVsZWFzZU5vbk51bGwoKSk7
CiAgICAgQVNTRVJUKHZhbHVlcy0+bGVuZ3RoKCkpOwotICAgIHJldHVybiB2YWx1ZXM7CisgICAg
cmV0dXJuIFdURk1vdmUodmFsdWVzKTsKIH0KIAogc3RhdGljIGJvb2wgaXNHcmlkVHJhY2tGaXhl
ZFNpemVkKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiBwcmltaXRpdmVWYWx1ZSkKIHsKICAgICBD
U1NWYWx1ZUlEIHZhbHVlSUQgPSBwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCk7Ci0gICAgaWYgKHZh
bHVlSUQgPT0gQ1NTVmFsdWVNaW5Db250ZW50IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVXZWJraXRN
aW5Db250ZW50IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVNYXhDb250ZW50IHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVXZWJraXRNYXhDb250ZW50IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHBy
aW1pdGl2ZVZhbHVlLmlzRmxleCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1
cm4gdHJ1ZTsKKyAgICByZXR1cm4gISh2YWx1ZUlEID09IENTU1ZhbHVlTWluQ29udGVudCB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlV2Via2l0TWluQ29udGVudCB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
TWF4Q29udGVudCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2Via2l0TWF4Q29udGVudCB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlQXV0byB8fCBwcmltaXRpdmVWYWx1ZS5pc0ZsZXgoKSk7CiB9CiAKIHN0
YXRpYyBib29sIGlzR3JpZFRyYWNrRml4ZWRTaXplZChjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCkBA
IC0zNDQ1LDE3ICszNDIzLDE3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVHcmlk
VHJhY2tTaXplKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzCiAgICAgaWYgKHRv
a2VuLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZU1pbm1heCkgewogICAgICAgICBDU1NQYXJzZXJU
b2tlblJhbmdlIHJhbmdlQ29weSA9IHJhbmdlOwogICAgICAgICBDU1NQYXJzZXJUb2tlblJhbmdl
IGFyZ3MgPSBjb25zdW1lRnVuY3Rpb24ocmFuZ2VDb3B5KTsKLSAgICAgICAgUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBtaW5UcmFja0JyZWFkdGggPSBjb25zdW1lR3JpZEJyZWFkdGgoYXJncywg
Y3NzUGFyc2VyTW9kZSk7CisgICAgICAgIGF1dG8gbWluVHJhY2tCcmVhZHRoID0gY29uc3VtZUdy
aWRCcmVhZHRoKGFyZ3MsIGNzc1BhcnNlck1vZGUpOwogICAgICAgICBpZiAoIW1pblRyYWNrQnJl
YWR0aCB8fCBtaW5UcmFja0JyZWFkdGgtPmlzRmxleCgpIHx8ICFjb25zdW1lQ29tbWFJbmNsdWRp
bmdXaGl0ZXNwYWNlKGFyZ3MpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAg
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbWF4VHJhY2tCcmVhZHRoID0gY29uc3VtZUdyaWRC
cmVhZHRoKGFyZ3MsIGNzc1BhcnNlck1vZGUpOworICAgICAgICBhdXRvIG1heFRyYWNrQnJlYWR0
aCA9IGNvbnN1bWVHcmlkQnJlYWR0aChhcmdzLCBjc3NQYXJzZXJNb2RlKTsKICAgICAgICAgaWYg
KCFtYXhUcmFja0JyZWFkdGggfHwgIWFyZ3MuYXRFbmQoKSkKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICByYW5nZSA9IHJhbmdlQ29weTsKLSAgICAgICAgUmVmUHRyPENTU0Z1
bmN0aW9uVmFsdWU+IHJlc3VsdCA9IENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShDU1NWYWx1ZU1p
bm1heCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gQ1NTRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKENT
U1ZhbHVlTWlubWF4KTsKICAgICAgICAgcmVzdWx0LT5hcHBlbmQobWluVHJhY2tCcmVhZHRoLnJl
bGVhc2VOb25OdWxsKCkpOwogICAgICAgICByZXN1bHQtPmFwcGVuZChtYXhUcmFja0JyZWFkdGgu
cmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVy
biBXVEZNb3ZlKHJlc3VsdCk7CiAgICAgfQogCiAgICAgaWYgKHRva2VuLmZ1bmN0aW9uSWQoKSA9
PSBDU1NWYWx1ZUZpdENvbnRlbnQpCkBAIC0zNDc0LDcgKzM0NTIsNyBAQCBzdGF0aWMgUmVmUHRy
PENTU0dyaWRMaW5lTmFtZXNWYWx1ZT4gY29uc3VtZUdyaWRMaW5lTmFtZXMoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcgogICAgIFJlZlB0cjxDU1NHcmlkTGluZU5hbWVzVmFsdWU+IHJlc3VsdCA9IGxp
bmVOYW1lczsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmVzdWx0ID0gQ1NTR3JpZExpbmVO
YW1lc1ZhbHVlOjpjcmVhdGUoKTsKLSAgICB3aGlsZSAoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBsaW5lTmFtZSA9IGNvbnN1bWVDdXN0b21JZGVudEZvckdyaWRMaW5lKHJhbmdlQ29weSkpCisg
ICAgd2hpbGUgKGF1dG8gbGluZU5hbWUgPSBjb25zdW1lQ3VzdG9tSWRlbnRGb3JHcmlkTGluZShy
YW5nZUNvcHkpKQogICAgICAgICByZXN1bHQtPmFwcGVuZChsaW5lTmFtZS5yZWxlYXNlTm9uTnVs
bCgpKTsKICAgICBpZiAocmFuZ2VDb3B5LmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkudHlw
ZSgpICE9IFJpZ2h0QnJhY2tldFRva2VuKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTM1
MDEsMjEgKzM0NzksMTkgQEAgc3RhdGljIGJvb2wgY29uc3VtZUdyaWRUcmFja1JlcGVhdEZ1bmN0
aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXIKICAgICB9CiAgICAgaWYg
KCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgUmVmUHRyPENTU0dyaWRMaW5lTmFtZXNWYWx1ZT4gbGluZU5hbWVzID0gY29u
c3VtZUdyaWRMaW5lTmFtZXMoYXJncyk7Ci0gICAgaWYgKGxpbmVOYW1lcykKKyAgICBpZiAoYXV0
byBsaW5lTmFtZXMgPSBjb25zdW1lR3JpZExpbmVOYW1lcyhhcmdzKSkKICAgICAgICAgcmVwZWF0
ZWRWYWx1ZXMtPmFwcGVuZChsaW5lTmFtZXMucmVsZWFzZU5vbk51bGwoKSk7CiAKICAgICBzaXpl
X3QgbnVtYmVyT2ZUcmFja3MgPSAwOwogICAgIHdoaWxlICghYXJncy5hdEVuZCgpKSB7Ci0gICAg
ICAgIFJlZlB0cjxDU1NWYWx1ZT4gdHJhY2tTaXplID0gY29uc3VtZUdyaWRUcmFja1NpemUoYXJn
cywgY3NzUGFyc2VyTW9kZSk7CisgICAgICAgIGF1dG8gdHJhY2tTaXplID0gY29uc3VtZUdyaWRU
cmFja1NpemUoYXJncywgY3NzUGFyc2VyTW9kZSk7CiAgICAgICAgIGlmICghdHJhY2tTaXplKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoYWxsVHJhY2tzQXJlRml4ZWRT
aXplZCkKICAgICAgICAgICAgIGFsbFRyYWNrc0FyZUZpeGVkU2l6ZWQgPSBpc0dyaWRUcmFja0Zp
eGVkU2l6ZWQoKnRyYWNrU2l6ZSk7CiAgICAgICAgIHJlcGVhdGVkVmFsdWVzLT5hcHBlbmQodHJh
Y2tTaXplLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICArK251bWJlck9mVHJhY2tzOwotICAg
ICAgICBsaW5lTmFtZXMgPSBjb25zdW1lR3JpZExpbmVOYW1lcyhhcmdzKTsKLSAgICAgICAgaWYg
KGxpbmVOYW1lcykKKyAgICAgICAgaWYgKGF1dG8gbGluZU5hbWVzID0gY29uc3VtZUdyaWRMaW5l
TmFtZXMoYXJncykpCiAgICAgICAgICAgICByZXBlYXRlZFZhbHVlcy0+YXBwZW5kKGxpbmVOYW1l
cy5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9CiAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgZm91bmQg
YXQgbGVhc3Qgb25lIDx0cmFjay1zaXplPiBvciBlbHNlIGl0IGlzIG5vdCBhIHZhbGlkIDx0cmFj
ay1saXN0Pi4KQEAgLTM1MjcsMTAgKzM1MDMsMTAgQEAgc3RhdGljIGJvb2wgY29uc3VtZUdyaWRU
cmFja1JlcGVhdEZ1bmN0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXIK
ICAgICBlbHNlIHsKICAgICAgICAgLy8gV2UgY2xhbXAgdGhlIHJlcGV0aXRpb25zIHRvIGEgbXVs
dGlwbGUgb2YgdGhlIHJlcGVhdCgpIHRyYWNrIGxpc3QncyBzaXplLCB3aGlsZSBzdGF5aW5nIGJl
bG93IHRoZSBtYXggZ3JpZCBzaXplLgogICAgICAgICByZXBldGl0aW9ucyA9IHN0ZDo6bWluKHJl
cGV0aXRpb25zLCBHcmlkUG9zaXRpb246Om1heCgpIC8gbnVtYmVyT2ZUcmFja3MpOwotICAgICAg
ICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBpbnRlZ2VyUmVwZWF0ZWRWYWx1ZXMgPSBDU1NHcmlkSW50
ZWdlclJlcGVhdFZhbHVlOjpjcmVhdGUocmVwZXRpdGlvbnMpOworICAgICAgICBhdXRvIGludGVn
ZXJSZXBlYXRlZFZhbHVlcyA9IENTU0dyaWRJbnRlZ2VyUmVwZWF0VmFsdWU6OmNyZWF0ZShyZXBl
dGl0aW9ucyk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVwZWF0ZWRWYWx1ZXMt
Pmxlbmd0aCgpOyArK2kpCiAgICAgICAgICAgICBpbnRlZ2VyUmVwZWF0ZWRWYWx1ZXMtPmFwcGVu
ZCgqcmVwZWF0ZWRWYWx1ZXMtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soaSkpOwotICAgICAgICBs
aXN0LmFwcGVuZChpbnRlZ2VyUmVwZWF0ZWRWYWx1ZXMucmVsZWFzZU5vbk51bGwoKSk7CisgICAg
ICAgIGxpc3QuYXBwZW5kKFdURk1vdmUoaW50ZWdlclJlcGVhdGVkVmFsdWVzKSk7CiAgICAgfQog
ICAgIHJldHVybiB0cnVlOwogfQpAQCAtMzU0MCwxMCArMzUxNiwxMCBAQCBlbnVtIFRyYWNrTGlz
dFR5cGUgeyBHcmlkVGVtcGxhdGUsIEdyaWRUZW1wbGF0ZU5vUmVwZWF0LCBHcmlkQXV0byB9Owog
c3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUdyaWRUcmFja0xpc3QoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgVHJhY2tMaXN0VHlw
ZSB0cmFja0xpc3RUeXBlKQogewogICAgIGJvb2wgYWxsb3dHcmlkTGluZU5hbWVzID0gdHJhY2tM
aXN0VHlwZSAhPSBHcmlkQXV0bzsKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiB2YWx1ZXMgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgYXV0byB2YWx1ZXMgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgaWYgKCFhbGxvd0dyaWRM
aW5lTmFtZXMgJiYgcmFuZ2UucGVlaygpLnR5cGUoKSA9PSBMZWZ0QnJhY2tldFRva2VuKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBSZWZQdHI8Q1NTR3JpZExpbmVOYW1lc1ZhbHVlPiBs
aW5lTmFtZXMgPSBjb25zdW1lR3JpZExpbmVOYW1lcyhyYW5nZSk7CisgICAgYXV0byBsaW5lTmFt
ZXMgPSBjb25zdW1lR3JpZExpbmVOYW1lcyhyYW5nZSk7CiAgICAgaWYgKGxpbmVOYW1lcykKICAg
ICAgICAgdmFsdWVzLT5hcHBlbmQobGluZU5hbWVzLnJlbGVhc2VOb25OdWxsKCkpOwogICAgIApA
QCAtMzU1NSwxMiArMzUzMSwxMiBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lR3Jp
ZFRyYWNrTGlzdChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFycwogICAgICAgICBp
ZiAocmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZVJlcGVhdCkgewogICAgICAg
ICAgICAgaWYgKCFhbGxvd1JlcGVhdCkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICAgICAgICAgIGlmICghY29uc3VtZUdyaWRUcmFja1JlcGVhdEZ1bmN0aW9uKHJhbmdlLCBj
c3NQYXJzZXJNb2RlLCAqdmFsdWVzLCBpc0F1dG9SZXBlYXQsIGFsbFRyYWNrc0FyZUZpeGVkU2l6
ZWQpKQorICAgICAgICAgICAgaWYgKCFjb25zdW1lR3JpZFRyYWNrUmVwZWF0RnVuY3Rpb24ocmFu
Z2UsIGNzc1BhcnNlck1vZGUsIHZhbHVlcywgaXNBdXRvUmVwZWF0LCBhbGxUcmFja3NBcmVGaXhl
ZFNpemVkKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIGlm
IChpc0F1dG9SZXBlYXQgJiYgc2VlbkF1dG9SZXBlYXQpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgICAgICBzZWVuQXV0b1JlcGVhdCA9IHNlZW5BdXRvUmVwZWF0IHx8
IGlzQXV0b1JlcGVhdDsKLSAgICAgICAgfSBlbHNlIGlmIChSZWZQdHI8Q1NTVmFsdWU+IHZhbHVl
ID0gY29uc3VtZUdyaWRUcmFja1NpemUocmFuZ2UsIGNzc1BhcnNlck1vZGUpKSB7CisgICAgICAg
IH0gZWxzZSBpZiAoYXV0byB2YWx1ZSA9IGNvbnN1bWVHcmlkVHJhY2tTaXplKHJhbmdlLCBjc3NQ
YXJzZXJNb2RlKSkgewogICAgICAgICAgICAgaWYgKGFsbFRyYWNrc0FyZUZpeGVkU2l6ZWQpCiAg
ICAgICAgICAgICAgICAgYWxsVHJhY2tzQXJlRml4ZWRTaXplZCA9IGlzR3JpZFRyYWNrRml4ZWRT
aXplZCgqdmFsdWUpOwogICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQodmFsdWUucmVsZWFzZU5v
bk51bGwoKSk7CkBAIC0zNjYzLDExICszNjM5LDEwIEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+
IGNvbnN1bWVMaW5lR3JpZChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIAogc3RhdGljIFJl
ZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUluaXRpYWxMZXR0ZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UpCiB7Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiBpZGVudCA9IGNvbnN1bWVJZGVudDxDU1NW
YWx1ZU5vcm1hbD4ocmFuZ2UpOwotICAgIGlmIChpZGVudCkKKyAgICBpZiAoYXV0byBpZGVudCA9
IGNvbnN1bWVJZGVudDxDU1NWYWx1ZU5vcm1hbD4ocmFuZ2UpKQogICAgICAgICByZXR1cm4gaWRl
bnQ7CiAgICAgCi0gICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBoZWlnaHQgPSBjb25zdW1l
TnVtYmVyKHJhbmdlLCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSk7CisgICAgYXV0byBoZWlnaHQg
PSBjb25zdW1lTnVtYmVyKHJhbmdlLCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSk7CiAgICAgaWYg
KCFoZWlnaHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIApAQCAtMzY4Nyw3ICszNjYy
LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVNwZWFrQXMoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCiAgICAgaWYgKHJhbmdlLnBlZWsoKS5pZCgpID09IENTU1ZhbHVlTm9u
ZSkKICAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CiAgICAgCi0gICAgUmVmUHRy
PENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQo
KTsKKyAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7
CiAgICAgCiAgICAgYm9vbCBzZWVuTm9ybWFsID0gZmFsc2U7CiAgICAgYm9vbCBzZWVuU3BlbGxP
dXQgPSBmYWxzZTsKQEAgLTM3MDIsNyArMzY3Nyw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+
IGNvbnN1bWVTcGVha0FzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogICAgICAgICAgICAg
fHwgKHZhbHVlSUQgPT0gQ1NTVmFsdWVMaXRlcmFsUHVuY3R1YXRpb24gJiYgc2Vlbk5vUHVuY3R1
YXRpb24pCiAgICAgICAgICAgICB8fCAodmFsdWVJRCA9PSBDU1NWYWx1ZU5vUHVuY3R1YXRpb24g
JiYgc2VlbkxpdGVyYWxQdW5jdHVhdGlvbikpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiBpZGVudCA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZU5v
cm1hbCwgQ1NTVmFsdWVTcGVsbE91dCwgQ1NTVmFsdWVEaWdpdHMsIENTU1ZhbHVlTGl0ZXJhbFB1
bmN0dWF0aW9uLCBDU1NWYWx1ZU5vUHVuY3R1YXRpb24+KHJhbmdlKTsKKyAgICAgICAgYXV0byBp
ZGVudCA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZU5vcm1hbCwgQ1NTVmFsdWVTcGVsbE91dCwgQ1NT
VmFsdWVEaWdpdHMsIENTU1ZhbHVlTGl0ZXJhbFB1bmN0dWF0aW9uLCBDU1NWYWx1ZU5vUHVuY3R1
YXRpb24+KHJhbmdlKTsKICAgICAgICAgaWYgKCFpZGVudCkKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICBzd2l0Y2ggKHZhbHVlSUQpIHsKQEAgLTM3MjMsOCArMzY5OCwxMCBA
QCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lU3BlYWtBcyhDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSkKICAgICAgICAgfQogICAgICAgICBsaXN0LT5hcHBlbmQoaWRlbnQucmVsZWFz
ZU5vbk51bGwoKSk7CiAgICAgfQotICAgIAotICAgIHJldHVybiBsaXN0LT5sZW5ndGgoKSA/IGxp
c3QgOiBudWxscHRyOworCisgICAgaWYgKCFsaXN0LT5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAgICAgCiBzdGF0aWMgUmVm
UHRyPENTU1ZhbHVlPiBjb25zdW1lSGFuZ2luZ1B1bmN0dWF0aW9uKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlKQpAQCAtMzczMiw3ICszNzA5LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4g
Y29uc3VtZUhhbmdpbmdQdW5jdHVhdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKICAg
ICBpZiAocmFuZ2UucGVlaygpLmlkKCkgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICByZXR1cm4g
Y29uc3VtZUlkZW50KHJhbmdlKTsKICAgICAKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0
ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgIGF1dG8gbGlzdCA9
IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKIAogICAgIGJvb2wgc2VlbkZv
cmNlRW5kID0gZmFsc2U7CiAgICAgYm9vbCBzZWVuQWxsb3dFbmQgPSBmYWxzZTsKQEAgLTM3NDYs
NyArMzcyMyw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVIYW5naW5nUHVuY3R1
YXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiAgICAgICAgICAgICB8fCAodmFsdWVJ
RCA9PSBDU1NWYWx1ZUFsbG93RW5kICYmIChzZWVuQWxsb3dFbmQgfHwgc2VlbkZvcmNlRW5kKSkK
ICAgICAgICAgICAgIHx8ICh2YWx1ZUlEID09IENTU1ZhbHVlRm9yY2VFbmQgJiYgKHNlZW5BbGxv
d0VuZCB8fCBzZWVuRm9yY2VFbmQpKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
ICAgICBSZWZQdHI8Q1NTVmFsdWU+IGlkZW50ID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQWxsb3dF
bmQsIENTU1ZhbHVlRm9yY2VFbmQsIENTU1ZhbHVlRmlyc3QsIENTU1ZhbHVlTGFzdD4ocmFuZ2Up
OworICAgICAgICBhdXRvIGlkZW50ID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQWxsb3dFbmQsIENT
U1ZhbHVlRm9yY2VFbmQsIENTU1ZhbHVlRmlyc3QsIENTU1ZhbHVlTGFzdD4ocmFuZ2UpOwogICAg
ICAgICBpZiAoIWlkZW50KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHN3
aXRjaCAodmFsdWVJRCkgewpAQCAtMzc2OCw3ICszNzQ1LDkgQEAgc3RhdGljIFJlZlB0cjxDU1NW
YWx1ZT4gY29uc3VtZUhhbmdpbmdQdW5jdHVhdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSkKICAgICAgICAgbGlzdC0+YXBwZW5kKGlkZW50LnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0K
ICAgICAKLSAgICByZXR1cm4gbGlzdC0+bGVuZ3RoKCkgPyBsaXN0IDogbnVsbHB0cjsKKyAgICBp
ZiAoIWxpc3QtPmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4g
V1RGTW92ZShsaXN0KTsKIH0KIAogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVdlYmtp
dE1hcnF1ZWVJbmNyZW1lbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1v
ZGUgY3NzUGFyc2VyTW9kZSkKQEAgLTM5MTAsMTEgKzM4ODksMTEgQEAgc3RhdGljIFJlZlB0cjxD
U1NWYWx1ZT4gY29uc3VtZVRleHRFbXBoYXNpc1Bvc2l0aW9uKENTU1BhcnNlclRva2VuUmFuZ2Um
IHJhbmdlKQogICAgIH0KICAgICBpZiAoIWZvdW5kT3Zlck9yVW5kZXIpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6
OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0Ojpj
cmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNp
bmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShvdmVyVW5kZXJWYWx1ZUlEKSk7CiAgICAg
aWYgKGZvdW5kTGVmdE9yUmlnaHQpCiAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6
OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShsZWZ0UmlnaHRWYWx1ZUlEKSk7Ci0g
ICAgcmV0dXJuIGxpc3Q7CisgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAKICNpZiBFTkFC
TEUoREFSS19NT0RFX0NTUykKQEAgLTM5NTMsMTAgKzM5MzIsMTAgQEAgc3RhdGljIFJlZlB0cjxD
U1NWYWx1ZT4gY29uc3VtZUNvbG9yU2NoZW1lKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQog
ICAgICAgICByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOwogICAgIH0KIAotICAg
IFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2Vw
YXJhdGVkKCk7CisgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFy
YXRlZCgpOwogICAgIGZvciAoYXV0byBpZCA6IGlkZW50aWZpZXJzKQogICAgICAgICBsaXN0LT5h
cHBlbmQoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoaWQp
KTsKLSAgICByZXR1cm4gbGlzdDsKKyAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKIH0KIAogI2Vu
ZGlmCkBAIC00NTgyLDEwICs0NTYxLDEwIEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1
bWVDb3VudGVyU3R5bGVOZWdhdGl2ZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwKICAgICBp
ZiAoIWFwcGVuZFZhbHVlIHx8ICFyYW5nZS5hdEVuZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3Jl
YXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICBhdXRvIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3Jl
YXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICB2YWx1ZXMtPmFwcGVuZChwcmVwZW5kVmFsdWUucmVs
ZWFzZU5vbk51bGwoKSk7CiAgICAgdmFsdWVzLT5hcHBlbmQoYXBwZW5kVmFsdWUucmVsZWFzZU5v
bk51bGwoKSk7Ci0gICAgcmV0dXJuIHZhbHVlczsKKyAgICByZXR1cm4gV1RGTW92ZSh2YWx1ZXMp
OwogfQogCiAvLyBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLWNvdW50ZXItc3R5bGVzLTMvI2Nv
dW50ZXItc3R5bGUtcmFuZ2UKQEAgLTQ2NjIsNyArNDY0MSw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NT
VmFsdWU+IGNvbnN1bWVDb3VudGVyU3R5bGVTeW1ib2xzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlLCBjCiAgICAgfQogICAgIGlmICghc3ltYm9scy0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIHJldHVybiBzeW1ib2xzOworICAgIHJldHVybiBXVEZNb3ZlKHN5bWJv
bHMpOwogfQogCiAvLyBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLWNvdW50ZXItc3R5bGVzLTMv
I2NvdW50ZXItc3R5bGUtc3ltYm9scwpAQCAtNDY5NCwxMiArNDY3MywxOSBAQCBzdGF0aWMgUmVm
UHRyPENTU1ZhbHVlPiBjb25zdW1lQ291bnRlclN0eWxlQWRkaXRpdmVTeW1ib2xzKENTU1BhcnNl
clRva2VuUmFuZ2UmCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0K
ICAgICAgICAgbGFzdEludGVnZXIgPSBpbnRlZ2VyOwotICAgICAgICB2YWx1ZXMtPmFwcGVuZChp
bnRlZ2VyLnJlbGVhc2VOb25OdWxsKCkpOwotICAgICAgICB2YWx1ZXMtPmFwcGVuZChzeW1ib2wu
cmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIGlmIChpbnRlZ2VyICYmIHN5bWJvbCkgeworICAg
ICAgICAgICAgYXV0byBwYWlyID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgp
OworICAgICAgICAgICAgcGFpci0+YXBwZW5kKGludGVnZXIucmVsZWFzZU5vbk51bGwoKSk7Cisg
ICAgICAgICAgICBwYWlyLT5hcHBlbmQoc3ltYm9sLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAg
ICAgICAgdmFsdWVzLT5hcHBlbmQoV1RGTW92ZShwYWlyKSk7CisgICAgICAgIH0gZWxzZSBpZiAo
aW50ZWdlcikKKyAgICAgICAgICAgIHZhbHVlcy0+YXBwZW5kKGludGVnZXIucmVsZWFzZU5vbk51
bGwoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHZhbHVlcy0+YXBwZW5kKHN5bWJvbC5y
ZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0
ZXNwYWNlKHJhbmdlKSk7CiAgICAgaWYgKCFyYW5nZS5hdEVuZCgpIHx8ICF2YWx1ZXMtPmxlbmd0
aCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gdmFsdWVzOworICAgIHJl
dHVybiBXVEZNb3ZlKHZhbHVlcyk7CiB9CiAKIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3Mt
Y291bnRlci1zdHlsZXMtMy8jY291bnRlci1zdHlsZS1zcGVhay1hcwpAQCAtNDkxMywxNCArNDg5
OSwxNCBAQCBib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lRm9udChib29sIGltcG9ydGFu
dCkKICAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTdHJldGNoLCBDU1NQcm9wZXJ0eUZv
bnQsIGZvbnRTdHJldGNoID8gZm9udFN0cmV0Y2gucmVsZWFzZU5vbk51bGwoKSA6IENTU1ZhbHVl
UG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9ybWFsKSwg
aW1wb3J0YW50LCAhaGFzU3RyZXRjaCk7CiAKICAgICAvLyBOb3cgYSBmb250IHNpemUgX211c3Rf
IGNvbWUuCi0gICAgUmVmUHRyPENTU1ZhbHVlPiBmb250U2l6ZSA9IGNvbnN1bWVGb250U2l6ZSht
X3JhbmdlLCBtX2NvbnRleHQubW9kZSk7CisgICAgYXV0byBmb250U2l6ZSA9IGNvbnN1bWVGb250
U2l6ZShtX3JhbmdlLCBtX2NvbnRleHQubW9kZSk7CiAgICAgaWYgKCFmb250U2l6ZSB8fCBtX3Jh
bmdlLmF0RW5kKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGFkZFByb3BlcnR5KENT
U1Byb3BlcnR5Rm9udFNpemUsIENTU1Byb3BlcnR5Rm9udCwgKmZvbnRTaXplLCBpbXBvcnRhbnQp
OwogCiAgICAgaWYgKGNvbnN1bWVTbGFzaEluY2x1ZGluZ1doaXRlc3BhY2UobV9yYW5nZSkpIHsK
LSAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBsaW5lSGVpZ2h0ID0gY29uc3VtZUxp
bmVIZWlnaHQobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUpOworICAgICAgICBhdXRvIGxpbmVIZWln
aHQgPSBjb25zdW1lTGluZUhlaWdodChtX3JhbmdlLCBtX2NvbnRleHQubW9kZSk7CiAgICAgICAg
IGlmICghbGluZUhlaWdodCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgYWRk
UHJvcGVydHkoQ1NTUHJvcGVydHlMaW5lSGVpZ2h0LCBDU1NQcm9wZXJ0eUZvbnQsIGxpbmVIZWln
aHQucmVsZWFzZU5vbk51bGwoKSwgaW1wb3J0YW50KTsKQEAgLTQ5MjgsNyArNDkxNCw3IEBAIGJv
b2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVGb250KGJvb2wgaW1wb3J0YW50KQogICAgICAg
ICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUxpbmVIZWlnaHQsIENTU1Byb3BlcnR5Rm9udCwgQ1NT
VmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3Jt
YWwpLCBpbXBvcnRhbnQsIHRydWUpOwogCiAgICAgLy8gRm9udCBmYW1pbHkgbXVzdCBjb21lIG5v
dy4KLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlZEZhbWlseVZhbHVlID0gY29uc3VtZUZvbnRG
YW1pbHkobV9yYW5nZSk7CisgICAgYXV0byBwYXJzZWRGYW1pbHlWYWx1ZSA9IGNvbnN1bWVGb250
RmFtaWx5KG1fcmFuZ2UpOwogICAgIGlmICghcGFyc2VkRmFtaWx5VmFsdWUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApAQCAtNTAwOSwxMCArNDk5NSwxMCBAQCBib29sIENTU1Byb3BlcnR5UGFy
c2VyOjpjb25zdW1lRm9udFZhcmlhbnRTaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpCiAKIGJvb2wg
Q1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVCb3JkZXJTcGFjaW5nKGJvb2wgaW1wb3J0YW50KQog
ewotICAgIFJlZlB0cjxDU1NWYWx1ZT4gaG9yaXpvbnRhbFNwYWNpbmcgPSBjb25zdW1lTGVuZ3Ro
KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSwgVW5pdGxl
c3NRdWlyazo6QWxsb3cpOworICAgIGF1dG8gaG9yaXpvbnRhbFNwYWNpbmcgPSBjb25zdW1lTGVu
Z3RoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlLCBWYWx1ZVJhbmdlOjpOb25OZWdhdGl2ZSwgVW5p
dGxlc3NRdWlyazo6QWxsb3cpOwogICAgIGlmICghaG9yaXpvbnRhbFNwYWNpbmcpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHZlcnRpY2FsU3BhY2luZyA9IGhv
cml6b250YWxTcGFjaW5nOworICAgIGF1dG8gdmVydGljYWxTcGFjaW5nID0gaG9yaXpvbnRhbFNw
YWNpbmc7CiAgICAgaWYgKCFtX3JhbmdlLmF0RW5kKCkpCiAgICAgICAgIHZlcnRpY2FsU3BhY2lu
ZyA9IGNvbnN1bWVMZW5ndGgobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUsIFZhbHVlUmFuZ2U6Ok5v
bk5lZ2F0aXZlLCBVbml0bGVzc1F1aXJrOjpBbGxvdyk7CiAgICAgaWYgKCF2ZXJ0aWNhbFNwYWNp
bmcgfHwgIW1fcmFuZ2UuYXRFbmQoKSkKQEAgLTUxOTAsMTEgKzUxNzYsMTEgQEAgYm9vbCBDU1NQ
cm9wZXJ0eVBhcnNlcjo6Y29uc3VtZTJWYWx1ZVNob3J0aGFuZChjb25zdCBTdHlsZVByb3BlcnR5
U2hvcnRoYW5kJiBzaG8KIHsKICAgICBBU1NFUlQoc2hvcnRoYW5kLmxlbmd0aCgpID09IDIpOwog
ICAgIGNvbnN0IENTU1Byb3BlcnR5SUQqIGxvbmdoYW5kcyA9IHNob3J0aGFuZC5wcm9wZXJ0aWVz
KCk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiBzdGFydCA9IHBhcnNlU2luZ2xlVmFsdWUobG9uZ2hh
bmRzWzBdLCBzaG9ydGhhbmQuaWQoKSk7CisgICAgYXV0byBzdGFydCA9IHBhcnNlU2luZ2xlVmFs
dWUobG9uZ2hhbmRzWzBdLCBzaG9ydGhhbmQuaWQoKSk7CiAgICAgaWYgKCFzdGFydCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmVmUHRyPENTU1ZhbHVlPiBlbmQgPSBwYXJzZVNpbmds
ZVZhbHVlKGxvbmdoYW5kc1sxXSwgc2hvcnRoYW5kLmlkKCkpOworICAgIGF1dG8gZW5kID0gcGFy
c2VTaW5nbGVWYWx1ZShsb25naGFuZHNbMV0sIHNob3J0aGFuZC5pZCgpKTsKICAgICBib29sIGVu
ZEltcGxpY2l0ID0gIWVuZDsKICAgICBpZiAoZW5kSW1wbGljaXQpCiAgICAgICAgIGVuZCA9IHN0
YXJ0OwpAQCAtNTIwOCwxMSArNTE5NCwxMSBAQCBib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25z
dW1lNFZhbHVlU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNobwogewog
ICAgIEFTU0VSVChzaG9ydGhhbmQubGVuZ3RoKCkgPT0gNCk7CiAgICAgY29uc3QgQ1NTUHJvcGVy
dHlJRCogbG9uZ2hhbmRzID0gc2hvcnRoYW5kLnByb3BlcnRpZXMoKTsKLSAgICBSZWZQdHI8Q1NT
VmFsdWU+IHRvcCA9IHBhcnNlU2luZ2xlVmFsdWUobG9uZ2hhbmRzWzBdLCBzaG9ydGhhbmQuaWQo
KSk7CisgICAgYXV0byB0b3AgPSBwYXJzZVNpbmdsZVZhbHVlKGxvbmdoYW5kc1swXSwgc2hvcnRo
YW5kLmlkKCkpOwogICAgIGlmICghdG9wKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBS
ZWZQdHI8Q1NTVmFsdWU+IHJpZ2h0ID0gcGFyc2VTaW5nbGVWYWx1ZShsb25naGFuZHNbMV0sIHNo
b3J0aGFuZC5pZCgpKTsKKyAgICBhdXRvIHJpZ2h0ID0gcGFyc2VTaW5nbGVWYWx1ZShsb25naGFu
ZHNbMV0sIHNob3J0aGFuZC5pZCgpKTsKICAgICBSZWZQdHI8Q1NTVmFsdWU+IGJvdHRvbTsKICAg
ICBSZWZQdHI8Q1NTVmFsdWU+IGxlZnQ7CiAgICAgaWYgKHJpZ2h0KSB7CkBAIC01MzI0LDcgKzUz
MTAsNyBAQCBib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lTGVnYWN5QnJlYWtQcm9wZXJ0
eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBib29sCiAgICAgLy8gVGhlIGZyYWdtZW50YXRpb24g
c3BlYyBzYXlzIHRoYXQgcGFnZS1icmVhay0oYWZ0ZXJ8YmVmb3JlfGluc2lkZSkgYXJlIHRvIGJl
IHRyZWF0ZWQgYXMKICAgICAvLyBzaG9ydGhhbmRzIGZvciB0aGVpciBicmVhay0oYWZ0ZXJ8YmVm
b3JlfGluc2lkZSkgY291bnRlcnBhcnRzLiBXZSdsbCBkbyB0aGUgc2FtZSBmb3IgdGhlCiAgICAg
Ly8gbm9uLXN0YW5kYXJkIHByb3BlcnRpZXMgLXdlYmtpdC1jb2x1bW4tYnJlYWstKGFmdGVyfGJl
Zm9yZXxpbnNpZGUpLgotICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4ga2V5d29yZCA9IGNv
bnN1bWVJZGVudChtX3JhbmdlKTsKKyAgICBhdXRvIGtleXdvcmQgPSBjb25zdW1lSWRlbnQobV9y
YW5nZSk7CiAgICAgaWYgKCFrZXl3b3JkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYg
KCFtX3JhbmdlLmF0RW5kKCkpCkBAIC01NTM0LDcgKzU1MjAsNyBAQCBib29sIENTU1Byb3BlcnR5
UGFyc2VyOjpjb25zdW1lR3JpZEl0ZW1Qb3NpdGlvblNob3J0aGFuZChDU1NQcm9wZXJ0eUlEIHNo
b3J0aGFuZAogewogICAgIGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCA9
IHNob3J0aGFuZEZvclByb3BlcnR5KHNob3J0aGFuZElkKTsKICAgICBBU1NFUlQoc2hvcnRoYW5k
Lmxlbmd0aCgpID09IDIpOwotICAgIFJlZlB0cjxDU1NWYWx1ZT4gc3RhcnRWYWx1ZSA9IGNvbnN1
bWVHcmlkTGluZShtX3JhbmdlKTsKKyAgICBhdXRvIHN0YXJ0VmFsdWUgPSBjb25zdW1lR3JpZExp
bmUobV9yYW5nZSk7CiAgICAgaWYgKCFzdGFydFZhbHVlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKQEAgLTU1NTUsNyArNTU0MSw3IEBAIGJvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVH
cmlkSXRlbVBvc2l0aW9uU2hvcnRoYW5kKENTU1Byb3BlcnR5SUQgc2hvcnRoYW5kCiAKIGJvb2wg
Q1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVHcmlkQXJlYVNob3J0aGFuZChib29sIGltcG9ydGFu
dCkKIHsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHJvd1N0YXJ0VmFsdWUgPSBjb25zdW1lR3JpZExp
bmUobV9yYW5nZSk7CisgICAgYXV0byByb3dTdGFydFZhbHVlID0gY29uc3VtZUdyaWRMaW5lKG1f
cmFuZ2UpOwogICAgIGlmICghcm93U3RhcnRWYWx1ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIFJlZlB0cjxDU1NWYWx1ZT4gY29sdW1uU3RhcnRWYWx1ZTsKQEAgLTU1OTcsNyArNTU4Myw3
IEBAIGJvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVHcmlkVGVtcGxhdGVSb3dzQW5kQXJl
YXNBbmRDb2x1bW5zKENTU1Byb3BlcnR5SUQKICAgICBOYW1lZEdyaWRBcmVhTWFwIGdyaWRBcmVh
TWFwOwogICAgIHNpemVfdCByb3dDb3VudCA9IDA7CiAgICAgc2l6ZV90IGNvbHVtbkNvdW50ID0g
MDsKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiB0ZW1wbGF0ZVJvd3MgPSBDU1NWYWx1ZUxpc3Q6
OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgYXV0byB0ZW1wbGF0ZVJvd3MgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAKICAgICAvLyBQZXJzaXN0cyBiZXR3ZWVu
IGxvb3AgaXRlcmF0aW9ucyBzbyB3ZSBjYW4gdXNlIHRoZSBzYW1lIHZhbHVlIGZvcgogICAgIC8v
IGNvbnNlY3V0aXZlIDxsaW5lLW5hbWVzPiB2YWx1ZXMKQEAgLTU2MTYsNyArNTYwMiw3IEBAIGJv
b2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVHcmlkVGVtcGxhdGVSb3dzQW5kQXJlYXNBbmRD
b2x1bW5zKENTU1Byb3BlcnR5SUQKICAgICAgICAgKytyb3dDb3VudDsKIAogICAgICAgICAvLyBI
YW5kbGUgdGVtcGxhdGUtcm93cydzIHRyYWNrLXNpemUuCi0gICAgICAgIFJlZlB0cjxDU1NWYWx1
ZT4gdmFsdWUgPSBjb25zdW1lR3JpZFRyYWNrU2l6ZShtX3JhbmdlLCBtX2NvbnRleHQubW9kZSk7
CisgICAgICAgIGF1dG8gdmFsdWUgPSBjb25zdW1lR3JpZFRyYWNrU2l6ZShtX3JhbmdlLCBtX2Nv
bnRleHQubW9kZSk7CiAgICAgICAgIGlmICghdmFsdWUpCiAgICAgICAgICAgICB2YWx1ZSA9IENT
U1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0
byk7CiAgICAgICAgIHRlbXBsYXRlUm93cy0+YXBwZW5kKCp2YWx1ZSk7CkBAIC01NjM3LDcgKzU2
MjMsNyBAQCBib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lR3JpZFRlbXBsYXRlUm93c0Fu
ZEFyZWFzQW5kQ29sdW1ucyhDU1NQcm9wZXJ0eUlECiAgICAgfSBlbHNlIHsKICAgICAgICAgY29s
dW1uc1ZhbHVlID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFs
dWUoQ1NTVmFsdWVOb25lKTsKICAgICB9Ci0gICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlk
VGVtcGxhdGVSb3dzLCBzaG9ydGhhbmRJZCwgdGVtcGxhdGVSb3dzLnJlbGVhc2VOb25OdWxsKCks
IGltcG9ydGFudCk7CisgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlHcmlkVGVtcGxhdGVSb3dz
LCBzaG9ydGhhbmRJZCwgV1RGTW92ZSh0ZW1wbGF0ZVJvd3MpLCBpbXBvcnRhbnQpOwogICAgIGFk
ZFByb3BlcnR5KENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlQ29sdW1ucywgc2hvcnRoYW5kSWQsIGNv
bHVtbnNWYWx1ZS5yZWxlYXNlTm9uTnVsbCgpLCBpbXBvcnRhbnQpOwogICAgIGFkZFByb3BlcnR5
KENTU1Byb3BlcnR5R3JpZFRlbXBsYXRlQXJlYXMsIHNob3J0aGFuZElkLCBDU1NHcmlkVGVtcGxh
dGVBcmVhc1ZhbHVlOjpjcmVhdGUoZ3JpZEFyZWFNYXAsIHJvd0NvdW50LCBjb2x1bW5Db3VudCks
IGltcG9ydGFudCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC01NjYzLDcgKzU2NDksNyBAQCBib29s
IENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lR3JpZFRlbXBsYXRlU2hvcnRoYW5kKENTU1Byb3Bl
cnR5SUQgc2hvcnRoYW5kSWQsCiAgICAgaWYgKHJvd3NWYWx1ZSkgewogICAgICAgICBpZiAoIWNv
bnN1bWVTbGFzaEluY2x1ZGluZ1doaXRlc3BhY2UobV9yYW5nZSkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gY29sdW1uc1ZhbHVlID0gY29uc3Vt
ZUdyaWRUZW1wbGF0ZXNSb3dzT3JDb2x1bW5zKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKTsKKyAg
ICAgICAgYXV0byBjb2x1bW5zVmFsdWUgPSBjb25zdW1lR3JpZFRlbXBsYXRlc1Jvd3NPckNvbHVt
bnMobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUpOwogICAgICAgICBpZiAoIWNvbHVtbnNWYWx1ZSB8
fCAhbV9yYW5nZS5hdEVuZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC01Njg3
LDcgKzU2NzMsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lSW1wbGljaXRHcmlk
QXV0b0Zsb3coQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsCiAgICAgbGlzdC0+YXBwZW5kKFdU
Rk1vdmUoZmxvd0RpcmVjdGlvbikpOwogICAgIGlmIChyYW5nZS5wZWVrKCkuaWQoKSA9PSBDU1NW
YWx1ZUF1dG9GbG93KSB7CiAgICAgICAgIHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNl
KCk7Ci0gICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gZGVuc2VJZGVudCA9IGNvbnN1bWVJZGVudDxD
U1NWYWx1ZURlbnNlPihyYW5nZSk7CisgICAgICAgIGF1dG8gZGVuc2VJZGVudCA9IGNvbnN1bWVJ
ZGVudDxDU1NWYWx1ZURlbnNlPihyYW5nZSk7CiAgICAgICAgIGlmIChkZW5zZUlkZW50KQogICAg
ICAgICAgICAgbGlzdC0+YXBwZW5kKGRlbnNlSWRlbnQucmVsZWFzZU5vbk51bGwoKSk7CiAgICAg
fSBlbHNlIHsKQEAgLTU3OTQsNyArNTc4MCw3IEBAIGJvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNv
bnN1bWVQbGFjZUNvbnRlbnRTaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpCiAKICAgICBDU1NQYXJz
ZXJUb2tlblJhbmdlIHJhbmdlQ29weSA9IG1fcmFuZ2U7CiAgICAgYm9vbCBpc0Jhc2VsaW5lID0g
aXNCYXNlbGluZUtleXdvcmQobV9yYW5nZS5wZWVrKCkuaWQoKSk7Ci0gICAgUmVmUHRyPENTU1Zh
bHVlPiBhbGlnbkNvbnRlbnRWYWx1ZSA9IGNvbnN1bWVDb250ZW50RGlzdHJpYnV0aW9uT3ZlcmZs
b3dQb3NpdGlvbihtX3JhbmdlLCBpc0NvbnRlbnRQb3NpdGlvbktleXdvcmQpOworICAgIGF1dG8g
YWxpZ25Db250ZW50VmFsdWUgPSBjb25zdW1lQ29udGVudERpc3RyaWJ1dGlvbk92ZXJmbG93UG9z
aXRpb24obV9yYW5nZSwgaXNDb250ZW50UG9zaXRpb25LZXl3b3JkKTsKICAgICBpZiAoIWFsaWdu
Q29udGVudFZhbHVlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTU4MDYsNyArNTc5Miw3
IEBAIGJvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OmNvbnN1bWVQbGFjZUNvbnRlbnRTaG9ydGhhbmQo
Ym9vbCBpbXBvcnRhbnQpCiAKICAgICBpZiAobV9yYW5nZS5hdEVuZCgpKQogICAgICAgICBtX3Jh
bmdlID0gcmFuZ2VDb3B5OwotICAgIFJlZlB0cjxDU1NWYWx1ZT4ganVzdGlmeUNvbnRlbnRWYWx1
ZSA9IGNvbnN1bWVDb250ZW50RGlzdHJpYnV0aW9uT3ZlcmZsb3dQb3NpdGlvbihtX3JhbmdlLCBp
c0NvbnRlbnRQb3NpdGlvbk9yTGVmdE9yUmlnaHRLZXl3b3JkKTsKKyAgICBhdXRvIGp1c3RpZnlD
b250ZW50VmFsdWUgPSBjb25zdW1lQ29udGVudERpc3RyaWJ1dGlvbk92ZXJmbG93UG9zaXRpb24o
bV9yYW5nZSwgaXNDb250ZW50UG9zaXRpb25PckxlZnRPclJpZ2h0S2V5d29yZCk7CiAgICAgaWYg
KCFqdXN0aWZ5Q29udGVudFZhbHVlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFt
X3JhbmdlLmF0RW5kKCkpCkBAIC01ODIyLDEzICs1ODA4LDEzIEBAIGJvb2wgQ1NTUHJvcGVydHlQ
YXJzZXI6OmNvbnN1bWVQbGFjZUl0ZW1zU2hvcnRoYW5kKGJvb2wgaW1wb3J0YW50KQogICAgIEFT
U0VSVChzaG9ydGhhbmRGb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eVBsYWNlSXRlbXMpLmxlbmd0aCgp
ID09IDIpOwogCiAgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZUNvcHkgPSBtX3JhbmdlOwot
ICAgIFJlZlB0cjxDU1NWYWx1ZT4gYWxpZ25JdGVtc1ZhbHVlID0gY29uc3VtZUFsaWduSXRlbXMo
bV9yYW5nZSk7CisgICAgYXV0byBhbGlnbkl0ZW1zVmFsdWUgPSBjb25zdW1lQWxpZ25JdGVtcyht
X3JhbmdlKTsKICAgICBpZiAoIWFsaWduSXRlbXNWYWx1ZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgaWYgKG1fcmFuZ2UuYXRFbmQoKSkKICAgICAgICAgbV9yYW5nZSA9IHJhbmdlQ29w
eTsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IGp1c3RpZnlJdGVtc1ZhbHVlID0gY29uc3VtZUp1c3Rp
ZnlJdGVtcyhtX3JhbmdlKTsKKyAgICBhdXRvIGp1c3RpZnlJdGVtc1ZhbHVlID0gY29uc3VtZUp1
c3RpZnlJdGVtcyhtX3JhbmdlKTsKICAgICBpZiAoIWp1c3RpZnlJdGVtc1ZhbHVlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKQEAgLTU4NDUsMTMgKzU4MzEsMTMgQEAgYm9vbCBDU1NQcm9wZXJ0
eVBhcnNlcjo6Y29uc3VtZVBsYWNlU2VsZlNob3J0aGFuZChib29sIGltcG9ydGFudCkKICAgICBB
U1NFUlQoc2hvcnRoYW5kRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlQbGFjZVNlbGYpLmxlbmd0aCgp
ID09IDIpOwogCiAgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZUNvcHkgPSBtX3JhbmdlOwot
ICAgIFJlZlB0cjxDU1NWYWx1ZT4gYWxpZ25TZWxmVmFsdWUgPSBjb25zdW1lU2VsZlBvc2l0aW9u
T3ZlcmZsb3dQb3NpdGlvbihtX3JhbmdlLCBpc1NlbGZQb3NpdGlvbktleXdvcmQpOworICAgIGF1
dG8gYWxpZ25TZWxmVmFsdWUgPSBjb25zdW1lU2VsZlBvc2l0aW9uT3ZlcmZsb3dQb3NpdGlvbiht
X3JhbmdlLCBpc1NlbGZQb3NpdGlvbktleXdvcmQpOwogICAgIGlmICghYWxpZ25TZWxmVmFsdWUp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChtX3JhbmdlLmF0RW5kKCkpCiAgICAg
ICAgIG1fcmFuZ2UgPSByYW5nZUNvcHk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiBqdXN0aWZ5U2Vs
ZlZhbHVlID0gY29uc3VtZVNlbGZQb3NpdGlvbk92ZXJmbG93UG9zaXRpb24obV9yYW5nZSwgaXNT
ZWxmUG9zaXRpb25PckxlZnRPclJpZ2h0S2V5d29yZCk7CisgICAgYXV0byBqdXN0aWZ5U2VsZlZh
bHVlID0gY29uc3VtZVNlbGZQb3NpdGlvbk92ZXJmbG93UG9zaXRpb24obV9yYW5nZSwgaXNTZWxm
UG9zaXRpb25PckxlZnRPclJpZ2h0S2V5d29yZCk7CiAgICAgaWYgKCFqdXN0aWZ5U2VsZlZhbHVl
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTU4NzIsNyArNTg1OCw3IEBAIGJvb2wgQ1NT
UHJvcGVydHlQYXJzZXI6OmNvbnN1bWVPdmVyc2Nyb2xsQmVoYXZpb3JTaG9ydGhhbmQoYm9vbCBp
bXBvcnRhbnQpCiAgICAgaWYgKG1fcmFuZ2UuYXRFbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgUmVmUHRyPENTU1ZhbHVlPiBvdmVyc2Nyb2xsQmVoYXZpb3JYID0gY29uc3VtZU92
ZXJzY3JvbGxCZWhhdmlvcihtX3JhbmdlKTsKKyAgICBhdXRvIG92ZXJzY3JvbGxCZWhhdmlvclgg
PSBjb25zdW1lT3ZlcnNjcm9sbEJlaGF2aW9yKG1fcmFuZ2UpOwogICAgIGlmICghb3ZlcnNjcm9s
bEJlaGF2aW9yWCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC02MDE2LDcgKzYwMDIsNyBA
QCBib29sIENTU1Byb3BlcnR5UGFyc2VyOjpwYXJzZVNob3J0aGFuZChDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5LCBib29sIGltcG9ydGFudCkKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0
cm9rZToKICAgICAgICAgcmV0dXJuIGNvbnN1bWVTaG9ydGhhbmRHcmVlZGlseSh3ZWJraXRUZXh0
U3Ryb2tlU2hvcnRoYW5kKCksIGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmtl
cjogewotICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IG1hcmtlciA9IHBhcnNlU2luZ2xlVmFsdWUo
Q1NTUHJvcGVydHlNYXJrZXJTdGFydCk7CisgICAgICAgIGF1dG8gbWFya2VyID0gcGFyc2VTaW5n
bGVWYWx1ZShDU1NQcm9wZXJ0eU1hcmtlclN0YXJ0KTsKICAgICAgICAgaWYgKCFtYXJrZXIgfHwg
IW1fcmFuZ2UuYXRFbmQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgYXV0
byBtYXJrZXJSZWYgPSBtYXJrZXIucmVsZWFzZU5vbk51bGwoKTsKQEAgLTYxMTEsOCArNjA5Nyw4
IEBAIGJvb2wgQ1NTUHJvcGVydHlQYXJzZXI6OnBhcnNlU2hvcnRoYW5kKENTU1Byb3BlcnR5SUQg
cHJvcGVydHksIGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVydHlQZXJzcGVjdGl2
ZU9yaWdpbjoKICAgICAgICAgcmV0dXJuIGNvbnN1bWVQZXJzcGVjdGl2ZU9yaWdpbihpbXBvcnRh
bnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlHYXA6IHsKLSAgICAgICAgUmVmUHRyPENTU1ZhbHVl
PiByb3dHYXAgPSBjb25zdW1lR2FwTGVuZ3RoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKTsKLSAg
ICAgICAgUmVmUHRyPENTU1ZhbHVlPiBjb2x1bW5HYXAgPSBjb25zdW1lR2FwTGVuZ3RoKG1fcmFu
Z2UsIG1fY29udGV4dC5tb2RlKTsKKyAgICAgICAgYXV0byByb3dHYXAgPSBjb25zdW1lR2FwTGVu
Z3RoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKTsKKyAgICAgICAgYXV0byBjb2x1bW5HYXAgPSBj
b25zdW1lR2FwTGVuZ3RoKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKTsKICAgICAgICAgaWYgKCFy
b3dHYXAgfHwgIW1fcmFuZ2UuYXRFbmQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgaWYgKCFjb2x1bW5HYXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAKaW5kZXggODYwN2IwODRhODQyNjAwYTQy
OGZhMTUyNTlmMGNlMjc1M2ZlMDQxMi4uODdhOTA0ZjA2ZjIxOTZiMDgxMTk3MTc4NGM0MzkxNWU3
NWE2NzViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzLmNwcApAQCAtMjc3NCw3ICsyNzc0LDcgQEAgc3RhdGljIFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudFBvaW50KENTU1Bh
cnNlclRva2VuUmEKICAgICAgICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigp
LmNyZWF0ZVZhbHVlKDUwLiwgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcmVz
dWx0ID0gY29uc3VtZVBlcmNlbnQoYXJncywgVmFsdWVSYW5nZTo6QWxsKTsKKyAgICBhdXRvIHJl
c3VsdCA9IGNvbnN1bWVQZXJjZW50KGFyZ3MsIFZhbHVlUmFuZ2U6OkFsbCk7CiAgICAgaWYgKCFy
ZXN1bHQpCiAgICAgICAgIHJlc3VsdCA9IGNvbnN1bWVOdW1iZXIoYXJncywgVmFsdWVSYW5nZTo6
QWxsKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjgxNCw3ICsyODE0LDcgQEAgc3RhdGljIGJv
b2wgY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudENvbG9yU3RvcChDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSwgQ1NTR3IKICAgICByZXR1cm4gc3RvcC5jb2xvciAmJiBhcmdzLmF0RW5kKCk7CiB9
CiAKLXN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVEZXByZWNhdGVkR3JhZGllbnQoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkK
K3N0YXRpYyBSZWZQdHI8Q1NTR3JhZGllbnRWYWx1ZT4gY29uc3VtZURlcHJlY2F0ZWRHcmFkaWVu
dChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250
ZXh0KQogewogICAgIFJlZlB0cjxDU1NHcmFkaWVudFZhbHVlPiByZXN1bHQ7CiAgICAgQ1NTVmFs
dWVJRCBpZCA9IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS5pZCgpOwpAQCAtMjky
MCw3ICsyOTIwLDcgQEAgc3RhdGljIGJvb2wgY29uc3VtZUdyYWRpZW50Q29sb3JTdG9wcyhDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2UKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZURlcHJlY2F0ZWRSYWRpYWxHcmFk
aWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBj
b250ZXh0LCBDU1NHcmFkaWVudFJlcGVhdCByZXBlYXRpbmcpCitzdGF0aWMgUmVmUHRyPENTU1Jh
ZGlhbEdyYWRpZW50VmFsdWU+IGNvbnN1bWVEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgQ1NT
R3JhZGllbnRSZXBlYXQgcmVwZWF0aW5nKQogewogICAgIGF1dG8gcmVzdWx0ID0gQ1NTUmFkaWFs
R3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGluZywgQ1NTUHJlZml4ZWRSYWRpYWxHcmFkaWVu
dCk7CiAKQEAgLTI5NjEsMTIgKzI5NjEsMTIgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29u
c3VtZURlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmcKICAg
ICByZXN1bHQtPnNldFNoYXBlKFdURk1vdmUoc2hhcGUpKTsKICAgICByZXN1bHQtPnNldFNpemlu
Z0JlaGF2aW9yKFdURk1vdmUoc2l6ZUtleXdvcmQpKTsKIAotICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKIH0KIAotc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4g
Y29uc3VtZVJhZGlhbEdyYWRpZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENT
U1BhcnNlckNvbnRleHQmIGNvbnRleHQsIENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdGluZykKK3N0
YXRpYyBSZWZQdHI8Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZT4gY29uc3VtZVJhZGlhbEdyYWRpZW50
KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRl
eHQsIENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdGluZykKIHsKLSAgICBSZWZQdHI8Q1NTUmFkaWFs
R3JhZGllbnRWYWx1ZT4gcmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJl
cGVhdGluZywgQ1NTUmFkaWFsR3JhZGllbnQpOworICAgIGF1dG8gcmVzdWx0ID0gQ1NTUmFkaWFs
R3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGluZywgQ1NTUmFkaWFsR3JhZGllbnQpOwogCiAg
ICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzaGFwZTsKICAgICBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IHNpemVLZXl3b3JkOwpAQCAtMzA0NCw3ICszMDQ0LDcgQEAgc3RhdGljIFJlZlB0
cjxDU1NWYWx1ZT4gY29uc3VtZVJhZGlhbEdyYWRpZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFy
Z3MsIGNvbnN0IEMKIAogICAgIGlmICgoc2hhcGUgfHwgc2l6ZUtleXdvcmQgfHwgaG9yaXpvbnRh
bFNpemUgfHwgY2VudGVyWCB8fCBjZW50ZXJZKSAmJiAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hp
dGVzcGFjZShhcmdzKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKCFjb25zdW1l
R3JhZGllbnRDb2xvclN0b3BzKGFyZ3MsIGNvbnRleHQsICpyZXN1bHQpKQorICAgIGlmICghY29u
c3VtZUdyYWRpZW50Q29sb3JTdG9wcyhhcmdzLCBjb250ZXh0LCByZXN1bHQpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIHJlc3VsdC0+c2V0U2hhcGUoV1RGTW92ZShzaGFwZSkpOwpA
QCAtMzA1MiwxNSArMzA1MiwxNSBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lUmFk
aWFsR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQwogICAgIHJlc3Vs
dC0+c2V0RW5kSG9yaXpvbnRhbFNpemUoV1RGTW92ZShob3Jpem9udGFsU2l6ZSkpOwogICAgIHJl
c3VsdC0+c2V0RW5kVmVydGljYWxTaXplKFdURk1vdmUodmVydGljYWxTaXplKSk7CiAKLSAgICBy
ZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CiB9CiAKLXN0YXRpYyBS
ZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVMaW5lYXJHcmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdl
JiBhcmdzLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBDU1NHcmFkaWVudFJlcGVh
dCByZXBlYXRpbmcsIENTU0dyYWRpZW50VHlwZSBncmFkaWVudFR5cGUpCitzdGF0aWMgUmVmUHRy
PENTU0xpbmVhckdyYWRpZW50VmFsdWU+IGNvbnN1bWVMaW5lYXJHcmFkaWVudChDU1NQYXJzZXJU
b2tlblJhbmdlJiBhcmdzLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBDU1NHcmFk
aWVudFJlcGVhdCByZXBlYXRpbmcsIENTU0dyYWRpZW50VHlwZSBncmFkaWVudFR5cGUpCiB7Ci0g
ICAgUmVmUHRyPENTU0xpbmVhckdyYWRpZW50VmFsdWU+IHJlc3VsdCA9IENTU0xpbmVhckdyYWRp
ZW50VmFsdWU6OmNyZWF0ZShyZXBlYXRpbmcsIGdyYWRpZW50VHlwZSk7CisgICAgYXV0byByZXN1
bHQgPSBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjcmVhdGUocmVwZWF0aW5nLCBncmFkaWVudFR5
cGUpOwogCiAgICAgYm9vbCBleHBlY3RDb21tYSA9IHRydWU7Ci0gICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBhbmdsZSA9IGNvbnN1bWVBbmdsZShhcmdzLCBjb250ZXh0Lm1vZGUsIFVuaXRs
ZXNzUXVpcms6OkZvcmJpZCwgVW5pdGxlc3NaZXJvUXVpcms6OkFsbG93KTsKKyAgICBhdXRvIGFu
Z2xlID0gY29uc3VtZUFuZ2xlKGFyZ3MsIGNvbnRleHQubW9kZSwgVW5pdGxlc3NRdWlyazo6Rm9y
YmlkLCBVbml0bGVzc1plcm9RdWlyazo6QWxsb3cpOwogICAgIGlmIChhbmdsZSkKICAgICAgICAg
cmVzdWx0LT5zZXRBbmdsZShhbmdsZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICBlbHNlIGlmIChn
cmFkaWVudFR5cGUgPT0gQ1NTUHJlZml4ZWRMaW5lYXJHcmFkaWVudCB8fCBjb25zdW1lSWRlbnQ8
Q1NTVmFsdWVUbz4oYXJncykpIHsKQEAgLTMwODMsMTUgKzMwODMsMTUgQEAgc3RhdGljIFJlZlB0
cjxDU1NWYWx1ZT4gY29uc3VtZUxpbmVhckdyYWRpZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFy
Z3MsIGNvbnN0IEMKIAogICAgIGlmIChleHBlY3RDb21tYSAmJiAhY29uc3VtZUNvbW1hSW5jbHVk
aW5nV2hpdGVzcGFjZShhcmdzKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgaWYgKCFj
b25zdW1lR3JhZGllbnRDb2xvclN0b3BzKGFyZ3MsIGNvbnRleHQsICpyZXN1bHQpKQorICAgIGlm
ICghY29uc3VtZUdyYWRpZW50Q29sb3JTdG9wcyhhcmdzLCBjb250ZXh0LCByZXN1bHQpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBXVEZN
b3ZlKHJlc3VsdCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVDb25pY0dy
YWRpZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQm
IGNvbnRleHQsIENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdGluZykKK3N0YXRpYyBSZWZQdHI8Q1NT
Q29uaWNHcmFkaWVudFZhbHVlPiBjb25zdW1lQ29uaWNHcmFkaWVudChDU1NQYXJzZXJUb2tlblJh
bmdlJiBhcmdzLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBDU1NHcmFkaWVudFJl
cGVhdCByZXBlYXRpbmcpCiB7CiAjaWYgRU5BQkxFKENTU19DT05JQ19HUkFESUVOVFMpCi0gICAg
UmVmUHRyPENTU0NvbmljR3JhZGllbnRWYWx1ZT4gcmVzdWx0ID0gQ1NTQ29uaWNHcmFkaWVudFZh
bHVlOjpjcmVhdGUocmVwZWF0aW5nKTsKKyAgICBhdXRvIHJlc3VsdCA9IENTU0NvbmljR3JhZGll
bnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGluZyk7CiAKICAgICBib29sIGV4cGVjdENvbW1hID0gZmFs
c2U7CiAgICAgaWYgKGFyZ3MucGVlaygpLnR5cGUoKSA9PSBJZGVudFRva2VuKSB7CkBAIC0zMTIy
LDkgKzMxMjIsOSBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lQ29uaWNHcmFkaWVu
dChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBjb25zdCBDUwogCiAgICAgaWYgKGV4cGVjdENv
bW1hICYmICFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICBpZiAoIWNvbnN1bWVHcmFkaWVudENvbG9yU3RvcHMoYXJncywg
Y29udGV4dCwgKnJlc3VsdCkpCisgICAgaWYgKCFjb25zdW1lR3JhZGllbnRDb2xvclN0b3BzKGFy
Z3MsIGNvbnRleHQsIHJlc3VsdCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVy
biByZXN1bHQ7CisgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKICNlbHNlCiAgICAgVU5VU0VE
X1BBUkFNKGFyZ3MpOwogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKQEAgLTMxNDAsNyArMzE0
MCw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUltYWdlT3JOb25lKENTU1BhcnNlclRva2Vu
UmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDCiAgICAgcmV0dXJuIGNvbnN1bWVJbWFnZShy
YW5nZSwgY29udGV4dCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVDcm9z
c0ZhZGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYg
Y29udGV4dCwgYm9vbCBwcmVmaXhlZCkKK3N0YXRpYyBSZWZQdHI8Q1NTQ3Jvc3NmYWRlVmFsdWU+
IGNvbnN1bWVDcm9zc0ZhZGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFy
c2VyQ29udGV4dCYgY29udGV4dCwgYm9vbCBwcmVmaXhlZCkKIHsKICAgICBhdXRvIGZyb21JbWFn
ZVZhbHVlID0gY29uc3VtZUltYWdlT3JOb25lKGFyZ3MsIGNvbnRleHQpOwogICAgIGlmICghZnJv
bUltYWdlVmFsdWUgfHwgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykpCkBA
IC0zMTU2LDcgKzMxNTYsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lQ3Jvc3NG
YWRlKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcgogICAgIHJldHVybiBD
U1NDcm9zc2ZhZGVWYWx1ZTo6Y3JlYXRlKGZyb21JbWFnZVZhbHVlLnJlbGVhc2VOb25OdWxsKCks
IHRvSW1hZ2VWYWx1ZS5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKHBlcmNlbnRhZ2VWYWx1ZSks
IHByZWZpeGVkKTsKIH0KIAotc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVdlYmtpdENh
bnZhcyhDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzKQorc3RhdGljIFJlZlB0cjxDU1NDYW52YXNW
YWx1ZT4gY29uc3VtZVdlYmtpdENhbnZhcyhDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzKQogewog
ICAgIGlmIChhcmdzLnBlZWsoKS50eXBlKCkgIT0gSWRlbnRUb2tlbikKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0zMTY2LDcgKzMxNjYsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBj
b25zdW1lV2Via2l0Q2FudmFzKENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MpCiAgICAgcmV0dXJu
IENTU0NhbnZhc1ZhbHVlOjpjcmVhdGUoY2FudmFzTmFtZSk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8
Q1NTVmFsdWU+IGNvbnN1bWVXZWJraXROYW1lZEltYWdlKENTU1BhcnNlclRva2VuUmFuZ2UmIGFy
Z3MpCitzdGF0aWMgUmVmUHRyPENTU05hbWVkSW1hZ2VWYWx1ZT4gY29uc3VtZVdlYmtpdE5hbWVk
SW1hZ2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncykKIHsKICAgICBpZiAoYXJncy5wZWVrKCku
dHlwZSgpICE9IElkZW50VG9rZW4pCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzQ5OSw4
ICszNDk5LDggQEAgUmVmUHRyPENTU1NoYWRvd1ZhbHVlPiBjb25zdW1lU2luZ2xlU2hhZG93KENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1MKIFJlZlB0cjxDU1NWYWx1ZT4gY29u
c3VtZUltYWdlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250
ZXh0JiBjb250ZXh0LCBPcHRpb25TZXQ8QWxsb3dlZEltYWdlVHlwZT4gYWxsb3dlZEltYWdlVHlw
ZXMpCiB7CiAgICAgaWYgKChyYW5nZS5wZWVrKCkudHlwZSgpID09IFN0cmluZ1Rva2VuKSAmJiAo
YWxsb3dlZEltYWdlVHlwZXMuY29udGFpbnMoQWxsb3dlZEltYWdlVHlwZTo6UmF3U3RyaW5nQXNV
UkwpKSkgewotICAgICAgICBhdXRvIHVybFN0cmluZ1ZpZXcgPSByYW5nZS5jb25zdW1lSW5jbHVk
aW5nV2hpdGVzcGFjZSgpLnZhbHVlKCk7Ci0gICAgICAgIHJldHVybiBDU1NJbWFnZVZhbHVlOjpj
cmVhdGUoY29tcGxldGVVUkwoY29udGV4dCwgdXJsU3RyaW5nVmlldy50b0F0b21TdHJpbmcoKSks
IGNvbnRleHQuaXNDb250ZW50T3BhcXVlID8gTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZTo6WWVzIDog
TG9hZGVkRnJvbU9wYXF1ZVNvdXJjZTo6Tm8pOworICAgICAgICBhdXRvIHNwZWNpZmllZFVSTFN0
cmluZyA9IHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNlKCkudmFsdWUoKS50b0F0b21T
dHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIENTU0ltYWdlVmFsdWU6OmNyZWF0ZShTdHJpbmcgeyBz
cGVjaWZpZWRVUkxTdHJpbmcgfSwgY29udGV4dC5jb21wbGV0ZVVSTChzcGVjaWZpZWRVUkxTdHJp
bmcpLCBjb250ZXh0LmlzQ29udGVudE9wYXF1ZSA/IExvYWRlZEZyb21PcGFxdWVTb3VyY2U6Olll
cyA6IExvYWRlZEZyb21PcGFxdWVTb3VyY2U6Ok5vKTsKICAgICB9CiAKICAgICBpZiAocmFuZ2Uu
cGVlaygpLnR5cGUoKSA9PSBGdW5jdGlvblRva2VuKSB7CkBAIC0zNTE3LDkgKzM1MTcsOCBAQCBS
ZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVJbWFnZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwg
Y29uc3QgQ1NTUGFyc2VyQ29udGV4dAogICAgIH0KIAogICAgIGlmIChhbGxvd2VkSW1hZ2VUeXBl
cy5jb250YWlucyhBbGxvd2VkSW1hZ2VUeXBlOjpVUkxGdW5jdGlvbikpIHsKLSAgICAgICAgYXV0
byB1cmkgPSBjb25zdW1lVXJsQXNTdHJpbmdWaWV3KHJhbmdlKTsKLSAgICAgICAgaWYgKCF1cmku
aXNOdWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKGNvbXBs
ZXRlVVJMKGNvbnRleHQsIHVyaS50b0F0b21TdHJpbmcoKSksIGNvbnRleHQuaXNDb250ZW50T3Bh
cXVlID8gTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZTo6WWVzIDogTG9hZGVkRnJvbU9wYXF1ZVNvdXJj
ZTo6Tm8pOworICAgICAgICBpZiAoYXV0byBzcGVjaWZpZWRVUkxTdHJpbmcgPSBjb25zdW1lVXJs
QXNTdHJpbmdWaWV3KHJhbmdlKS50b0F0b21TdHJpbmcoKTsgIXNwZWNpZmllZFVSTFN0cmluZy5p
c051bGwoKSkKKyAgICAgICAgICAgIHJldHVybiBDU1NJbWFnZVZhbHVlOjpjcmVhdGUoU3RyaW5n
IHsgc3BlY2lmaWVkVVJMU3RyaW5nIH0sIGNvbnRleHQuY29tcGxldGVVUkwoc3BlY2lmaWVkVVJM
U3RyaW5nKSwgY29udGV4dC5pc0NvbnRlbnRPcGFxdWUgPyBMb2FkZWRGcm9tT3BhcXVlU291cmNl
OjpZZXMgOiBMb2FkZWRGcm9tT3BhcXVlU291cmNlOjpObyk7CiAgICAgfQogCiAgICAgcmV0dXJu
IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9UeXBlZE9N
Q1NTSW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9UeXBlZE9NQ1NT
SW1hZ2VWYWx1ZS5jcHAKaW5kZXggZDU2YWIzNDI5NzBiNWZhMWY3ZjRiNjY2ZWE3ZWQ1NzI3NTRi
ZmZkNy4uMWE3MzQ5ZmE4MTBmNGRmMTA4YzhhMmU3MzEzYjY4MmZjNGIzOGZmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vVHlwZWRPTUNTU0ltYWdlVmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL1R5cGVkT01DU1NJbWFnZVZhbHVlLmNwcApA
QCAtNDYsNyArNDYsMTAgQEAgVHlwZWRPTUNTU0ltYWdlVmFsdWU6OlR5cGVkT01DU1NJbWFnZVZh
bHVlKENTU0ltYWdlVmFsdWUmIGNzc1ZhbHVlLCBEb2N1bWVudCYgZG8KIHsKIH0KIAotRG9jdW1l
bnQqIFR5cGVkT01DU1NJbWFnZVZhbHVlOjpkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9j
dW1lbnQuZ2V0KCk7IH0KK1JlZjxUeXBlZE9NQ1NTSW1hZ2VWYWx1ZT4gVHlwZWRPTUNTU0ltYWdl
VmFsdWU6OmNyZWF0ZShDU1NJbWFnZVZhbHVlJiBjc3NWYWx1ZSwgRG9jdW1lbnQmIGRvY3VtZW50
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFR5cGVkT01DU1NJbWFnZVZhbHVlKGNzc1Zh
bHVlLCBkb2N1bWVudCkpOworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL1R5cGVkT01DU1NJbWFnZVZhbHVlLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9UeXBlZE9NQ1NTSW1hZ2VWYWx1ZS5oCmluZGV4IDdk
NzQ1NzcxZmJiMTE4N2E3ZTQ2ZDlhNjEyMGUzODM1YzEzNmE1MWMuLjlkYTlmZmFhMDcxYzNiNzgy
NzgyZGRmOGVkZmE0YmEzYmViOTk2ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90
eXBlZG9tL1R5cGVkT01DU1NJbWFnZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3R5
cGVkb20vVHlwZWRPTUNTU0ltYWdlVmFsdWUuaApAQCAtMjksMTAgKzI5LDcgQEAKIAogI2luY2x1
ZGUgIkNTU0ltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJUeXBlZE9NQ1NTU3R5bGVWYWx1ZS5oIgot
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MSwxNSAr
MzgsMTEgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBUeXBlZE9NQ1NTSW1hZ2VWYWx1ZSBmaW5h
bCA6IHB1YmxpYyBUeXBlZE9NQ1NTU3R5bGVWYWx1ZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9D
QVRFRChUeXBlZE9NQ1NTSW1hZ2VWYWx1ZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxUeXBl
ZE9NQ1NTSW1hZ2VWYWx1ZT4gY3JlYXRlKENTU0ltYWdlVmFsdWUmIGNzc1ZhbHVlLCBEb2N1bWVu
dCYgZG9jdW1lbnQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUeXBlZE9N
Q1NTSW1hZ2VWYWx1ZShjc3NWYWx1ZSwgZG9jdW1lbnQpKTsKLSAgICB9Ci0KLSAgICBTdHJpbmcg
dG9TdHJpbmcoKSBmaW5hbCB7IHJldHVybiBtX2Nzc1ZhbHVlLT5jc3NUZXh0KCk7IH0KKyAgICBz
dGF0aWMgUmVmPFR5cGVkT01DU1NJbWFnZVZhbHVlPiBjcmVhdGUoQ1NTSW1hZ2VWYWx1ZSYsIERv
Y3VtZW50Jik7CiAKKyAgICBTdHJpbmcgdG9TdHJpbmcoKSBmaW5hbCB7IHJldHVybiBtX2Nzc1Zh
bHVlLT5jdXN0b21DU1NUZXh0KCk7IH0KICAgICBDYWNoZWRJbWFnZSogaW1hZ2UoKSB7IHJldHVy
biBtX2Nzc1ZhbHVlLT5jYWNoZWRJbWFnZSgpOyB9Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50KCkg
Y29uc3Q7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVu
dC5nZXQoKTsgfQogCiBwcml2YXRlOgogICAgIFR5cGVkT01DU1NJbWFnZVZhbHVlKENTU0ltYWdl
VmFsdWUmIGNzc1ZhbHVlLCBEb2N1bWVudCYgZG9jdW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQm9keUVsZW1lbnQuY3BwCmluZGV4IGNlMTNmMzdmODVjNzkyOTgxNDU2NjA2YTczYjJmNWI4
MmYxYTFlOGQuLjA3NmIxYjdiYmQ3M2MyZGI0YzYxOGFjZWI0Mzc3NzIyNzZiZTVmMDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKQEAgLTcyLDExICs3MiwxMCBAQCBi
b29sIEhUTUxCb2R5RWxlbWVudDo6aGFzUHJlc2VudGF0aW9uYWxIaW50c0ZvckF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYQogdm9pZCBIVE1MQm9keUVsZW1lbnQ6OmNvbGxlY3RQcmVz
ZW50YXRpb25hbEhpbnRzRm9yQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21TdHJpbmcmIHZhbHVlLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBzdHlsZSkKIHsK
ICAgICBpZiAobmFtZSA9PSBiYWNrZ3JvdW5kQXR0cikgewotICAgICAgICBTdHJpbmcgdXJsID0g
c3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHZhbHVlKTsKLSAgICAgICAgaWYgKCF1
cmwuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBhdXRvIGltYWdlVmFsdWUgPSBDU1NJbWFnZVZh
bHVlOjpjcmVhdGUoZG9jdW1lbnQoKS5jb21wbGV0ZVVSTCh1cmwpLCBMb2FkZWRGcm9tT3BhcXVl
U291cmNlOjpObyk7Ci0gICAgICAgICAgICBpbWFnZVZhbHVlLmdldCgpLnNldEluaXRpYXRvcihs
b2NhbE5hbWUoKSk7Ci0gICAgICAgICAgICBzdHlsZS5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eShD
U1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSwgV1RGTW92ZShpbWFnZVZhbHVlKSkpOworICAgICAg
ICBpZiAoYXV0byBzdHJpbmcgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXModmFs
dWUpOyAhc3RyaW5nLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgYXV0byBiYWNrZ3JvdW5kSW1h
Z2UgPSBDU1NJbWFnZVZhbHVlOjpjcmVhdGUoV1RGTW92ZShzdHJpbmcpLCBMb2FkZWRGcm9tT3Bh
cXVlU291cmNlOjpObyk7CisgICAgICAgICAgICBiYWNrZ3JvdW5kSW1hZ2UtPnNldEluaXRpYXRv
cihsb2NhbE5hbWUoKSk7CisgICAgICAgICAgICBzdHlsZS5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0
eShDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSwgV1RGTW92ZShiYWNrZ3JvdW5kSW1hZ2UpKSk7
CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gbWFyZ2lud2lkdGhBdHRyIHx8IG5h
bWUgPT0gbGVmdG1hcmdpbkF0dHIpIHsKICAgICAgICAgYWRkSFRNTExlbmd0aFRvU3R5bGUoc3R5
bGUsIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZUVsZW1lbnQuY3BwCmluZGV4IDRkZTQ1MzRjYWE1MjE5OTQ5MWJhYzAzZjBhZTQ3N2Vm
ODE5NmE5MDYuLmFiYmMxMTZlZGE2MTAzM2EyNDNhNTE5M2UwMWY4ZjgzMTlhMTcyNDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcApAQCAtMzE4LDkgKzMxOCw4IEBA
IHZvaWQgSFRNTFRhYmxlRWxlbWVudDo6Y29sbGVjdFByZXNlbnRhdGlvbmFsSGludHNGb3JBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtCiAgICAgfSBlbHNlIGlmIChuYW1lID09IGJnY29sb3JB
dHRyKQogICAgICAgICBhZGRIVE1MQ29sb3JUb1N0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRDb2xvciwgdmFsdWUpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gYmFja2dyb3VuZEF0dHIp
IHsKLSAgICAgICAgU3RyaW5nIHVybCA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNl
cyh2YWx1ZSk7Ci0gICAgICAgIGlmICghdXJsLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHN0eWxl
LnNldFByb3BlcnR5KENTU1Byb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLCBDU1NJ
bWFnZVZhbHVlOjpjcmVhdGUoZG9jdW1lbnQoKS5jb21wbGV0ZVVSTCh1cmwpLCBMb2FkZWRGcm9t
T3BhcXVlU291cmNlOjpObykpKTsKKyAgICAgICAgaWYgKGF1dG8gcmVsYXRpdmVVUkxTdHJpbmcg
PSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXModmFsdWUpOyAhcmVsYXRpdmVVUkxT
dHJpbmcuaXNFbXB0eSgpKQorICAgICAgICAgICAgc3R5bGUuc2V0UHJvcGVydHkoQ1NTUHJvcGVy
dHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsIENTU0ltYWdlVmFsdWU6OmNyZWF0ZShXVEZN
b3ZlKHJlbGF0aXZlVVJMU3RyaW5nKSwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZTo6Tm8pKSk7CiAg
ICAgfSBlbHNlIGlmIChuYW1lID09IHZhbGlnbkF0dHIpIHsKICAgICAgICAgaWYgKCF2YWx1ZS5p
c0VtcHR5KCkpCiAgICAgICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uYWxIaW50U3R5
bGUoc3R5bGUsIENTU1Byb3BlcnR5VmVydGljYWxBbGlnbiwgdmFsdWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmNwcAppbmRleCBlYWU1NjI4MDRmNTUxY2Mw
ZjFjOTNkNDVkZjcwMTE5NzA1OTUyYTQ0Li4wM2U3ODcyY2Y5ZjZjODJjM2VjNTQxZWVlNmQxMGRh
YmRmMGRmNzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50
LmNwcApAQCAtNTQsOSArNTQsOCBAQCB2b2lkIEhUTUxUYWJsZVBhcnRFbGVtZW50Ojpjb2xsZWN0
UHJlc2VudGF0aW9uYWxIaW50c0ZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZQogICAgIGlmIChu
YW1lID09IGJnY29sb3JBdHRyKQogICAgICAgICBhZGRIVE1MQ29sb3JUb1N0eWxlKHN0eWxlLCBD
U1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgdmFsdWUpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0g
YmFja2dyb3VuZEF0dHIpIHsKLSAgICAgICAgU3RyaW5nIHVybCA9IHN0cmlwTGVhZGluZ0FuZFRy
YWlsaW5nSFRNTFNwYWNlcyh2YWx1ZSk7Ci0gICAgICAgIGlmICghdXJsLmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgIHN0eWxlLnNldFByb3BlcnR5KENTU1Byb3BlcnR5KENTU1Byb3BlcnR5QmFja2dy
b3VuZEltYWdlLCBDU1NJbWFnZVZhbHVlOjpjcmVhdGUoZG9jdW1lbnQoKS5jb21wbGV0ZVVSTCh1
cmwpLCBMb2FkZWRGcm9tT3BhcXVlU291cmNlOjpObykpKTsKKyAgICAgICAgaWYgKGF1dG8gcmVs
YXRpdmVVUkxTdHJpbmcgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXModmFsdWUp
OyAhcmVsYXRpdmVVUkxTdHJpbmcuaXNFbXB0eSgpKQorICAgICAgICAgICAgc3R5bGUuc2V0UHJv
cGVydHkoQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsIENTU0ltYWdlVmFs
dWU6OmNyZWF0ZShXVEZNb3ZlKHJlbGF0aXZlVVJMU3RyaW5nKSwgTG9hZGVkRnJvbU9wYXF1ZVNv
dXJjZTo6Tm8pKSk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IHZhbGlnbkF0dHIpIHsKICAgICAg
ICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAidG9wIikpCiAgICAg
ICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uYWxIaW50U3R5bGUoc3R5bGUsIENTU1By
b3BlcnR5VmVydGljYWxBbGlnbiwgQ1NTVmFsdWVUb3ApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IDUwMTUwYTNiNDM5
MTE4ZDQ0YTcyYjE5MDYzNmFiMWUyMTYwNjFmMmEuLmI0ODkzYmRhMzZmMmJkZDI4MmM3MTYyMGNl
MWY1MWI1NWM4ZjI2NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZUNhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAKQEAgLTQyLDYgKzQyLDcgQEAgU3R5bGVDYWNoZWRJbWFn
ZTo6U3R5bGVDYWNoZWRJbWFnZShDU1NJbWFnZVZhbHVlJiBjc3NWYWx1ZSwgZmxvYXQgc2NhbGVG
YWN0b3IpCiB7CiAgICAgbV9pc0NhY2hlZEltYWdlID0gdHJ1ZTsKICAgICBtX2NhY2hlZEltYWdl
ID0gbV9jc3NWYWx1ZS0+Y2FjaGVkSW1hZ2UoKTsKKyAgICAvLyBGSVhNRTogU2VlbXMgdW5uZWNl
c3NhcnkgZm9yIHRoaXMgY2xhc3MgdG8gaGF2ZSBpdHMgb3duIGlzUGVuZGluZyBmbGFnOiBDU1NJ
bWFnZVZhbHVlIGFscmVhZHkgaGFzIG9uZS4KICAgICBpZiAobV9jYWNoZWRJbWFnZSkKICAgICAg
ICAgbV9pc1BlbmRpbmcgPSBmYWxzZTsKIH0KQEAgLTY0LDExICs2NSw2IEBAIGJvb2wgU3R5bGVD
YWNoZWRJbWFnZTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZUltYWdlJiBvdGhlcikgY29uc3QKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLVVSTCBTdHlsZUNhY2hlZEltYWdlOjppbWFnZVVSTCgpCi17
Ci0gICAgcmV0dXJuIG1fY3NzVmFsdWUtPnVybCgpOwotfQotCiB2b2lkIFN0eWxlQ2FjaGVkSW1h
Z2U6OmxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VMb2Fk
ZXJPcHRpb25zJiBvcHRpb25zKQogewogICAgIEFTU0VSVChtX2lzUGVuZGluZyk7CkBAIC0xNTMs
NyArMTQ5LDcgQEAgdm9pZCBTdHlsZUNhY2hlZEltYWdlOjpzZXRDb250YWluZXJDb250ZXh0Rm9y
UmVuZGVyZXIoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGUKIHsKICAgICBpZiAoIW1fY2FjaGVk
SW1hZ2UpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NhY2hlZEltYWdlLT5zZXRDb250YWluZXJD
b250ZXh0Rm9yQ2xpZW50KHJlbmRlcmVyLCBMYXlvdXRTaXplKGNvbnRhaW5lclNpemUpLCBjb250
YWluZXJab29tLCBpbWFnZVVSTCgpKTsKKyAgICBtX2NhY2hlZEltYWdlLT5zZXRDb250YWluZXJD
b250ZXh0Rm9yQ2xpZW50KHJlbmRlcmVyLCBMYXlvdXRTaXplKGNvbnRhaW5lclNpemUpLCBjb250
YWluZXJab29tLCBtX2Nzc1ZhbHVlLT5yZXNvbHZlZFVSTChyZW5kZXJlci5kb2N1bWVudCgpKSk7
CiB9CiAKIHZvaWQgU3R5bGVDYWNoZWRJbWFnZTo6YWRkQ2xpZW50KFJlbmRlckVsZW1lbnQmIHJl
bmRlcmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
Q2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hl
ZEltYWdlLmgKaW5kZXggYjU0YTJlYWYyMGZkZGYzM2ViZTRkYmM2MzFmY2UzODdlNjA4MGUxYy4u
NmM1NzJkNGY0N2NkMTIyNDQ0ZjU0NDgyZmQzNTg4NTRiZTFmNjUxMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5oCkBAIC02Nyw3ICs2
Nyw2IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBTdHlsZUNhY2hlZEltYWdlKENTU0ltYWdl
VmFsdWUmLCBmbG9hdCk7Ci0gICAgVVJMIGltYWdlVVJMKCk7CiAKICAgICBSZWY8Q1NTSW1hZ2VW
YWx1ZT4gbV9jc3NWYWx1ZTsKICAgICBib29sIG1faXNQZW5kaW5nIHsgdHJ1ZSB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3Vyc29ySW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3Vyc29ySW1hZ2UuY3BwCmlu
ZGV4IDNmNjNiNzE3N2FmYjVlMGNlZjhjNzViZWM3YmQ1MTdiYmI3MzVhOGYuLmIxZTNlYWMxYmNi
YzMxYTdhYjExZDNhOGEwNDM2ZTM5YzM5OGJhZGQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1cnNvckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXJzb3JJbWFnZS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAg
dm9pZCBTdHlsZUN1cnNvckltYWdlOjpzZXRDb250YWluZXJDb250ZXh0Rm9yUmVuZGVyZXIoY29u
c3QgUmVuZGVyRWxlbWVudCYgcmVuZGUKIHsKICAgICBpZiAoIWhhc0NhY2hlZEltYWdlKCkpCiAg
ICAgICAgIHJldHVybjsKLSAgICBjYWNoZWRJbWFnZSgpLT5zZXRDb250YWluZXJDb250ZXh0Rm9y
Q2xpZW50KHJlbmRlcmVyLCBMYXlvdXRTaXplKGNvbnRhaW5lclNpemUpLCBjb250YWluZXJab29t
LCBtX2Nzc1ZhbHVlLT5pbWFnZVVSTCgpKTsKKyAgICBjYWNoZWRJbWFnZSgpLT5zZXRDb250YWlu
ZXJDb250ZXh0Rm9yQ2xpZW50KHJlbmRlcmVyLCBMYXlvdXRTaXplKGNvbnRhaW5lclNpemUpLCBj
b250YWluZXJab29tLCBtX2Nzc1ZhbHVlLT5yZXNvbHZlZFVSTChyZW5kZXJlci5kb2N1bWVudCgp
KSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IGFjMmY1NGMxOWJi
NGZjZWMyYTU3OTAwY2VkYzQ1MjY5ZDdiMmVmNTcuLjI3ZmI3ODAzNDAyNDRmOTNkMTljZGM3OGQ0
OGE2OWExYTRkYjlhODUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDIxLTA2LTA2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAg
ICAgICBGaXggQ1NTIHNlcmlhbGl6YXRpb24gaXNzdWVzIGFmZmVjdGluZyBjc3MtY291bnRlci1z
dHlsZXMgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyNjcwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY291bnRlci1zdHlsZXMvY291bnRlci1z
dHlsZS1hZGRpdGl2ZS1zeW1ib2xzLXN5bnRheC1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY291bnRlci1zdHlsZXMvY291bnRlci1zdHlsZS1zeW1i
b2xzLXN5bnRheC1leHBlY3RlZC50eHQ6CisgICAgICAgIFJlYmFzZWQgdG8gcmVmbGVjdCBwcm9n
cmVzc2lvbnMuCisKIDIwMjEtMDYtMDYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIEhhbmRsZSBjdXN0b20gaWRlbnRpZmllcnMgYW5kIHN0cmluZ3Mgc2VwYXJhdGVs
eSwgc28gd2UgY2FuIHF1b3RlIHN0cmluZ3MgY29ycmVjdGx5IGNvbnNpc3RlbnRseQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWNvdW50ZXItc3R5bGVzL2NvdW50ZXItc3R5bGUtYWRkaXRpdmUtc3ltYm9scy1zeW50YXgtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLWNvdW50ZXItc3R5bGVzL2NvdW50ZXItc3R5bGUtYWRkaXRpdmUtc3ltYm9scy1zeW50
YXgtZXhwZWN0ZWQudHh0CmluZGV4IDRlZGNhYTRmYzFmYTliMWM5ZGJiNGJiZmQxYWMxMTI5ZjM4
YjI0OWYuLmQ5NjU4NzZiNjBkMzA2NTQxMDk4NWFiMDczNzc3NTIxNWJmNGRmMjkgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1j
b3VudGVyLXN0eWxlcy9jb3VudGVyLXN0eWxlLWFkZGl0aXZlLXN5bWJvbHMtc3ludGF4LWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtY291bnRlci1zdHlsZXMvY291bnRlci1zdHlsZS1hZGRpdGl2ZS1zeW1ib2xzLXN5
bnRheC1leHBlY3RlZC50eHQKQEAgLTEsOCArMSw4IEBACiAKLUZBSUwgQGNvdW50ZXItc3R5bGUg
J2FkZGl0aXZlLXN5bWJvbHM6IDAgIlgiJyBpcyB2YWxpZCBhc3NlcnRfbm90X2VxdWFsczogZ290
IGRpc2FsbG93ZWQgdmFsdWUgLTEKLUZBSUwgQGNvdW50ZXItc3R5bGUgJ2FkZGl0aXZlLXN5bWJv
bHM6IDEgIlgiJyBpcyB2YWxpZCBhc3NlcnRfbm90X2VxdWFsczogZ290IGRpc2FsbG93ZWQgdmFs
dWUgLTEKLUZBSUwgQGNvdW50ZXItc3R5bGUgJ2FkZGl0aXZlLXN5bWJvbHM6ICJYIiAxJyBpcyB2
YWxpZCBhc3NlcnRfbm90X2VxdWFsczogZ290IGRpc2FsbG93ZWQgdmFsdWUgLTEKLUZBSUwgQGNv
dW50ZXItc3R5bGUgJ2FkZGl0aXZlLXN5bWJvbHM6IDUgIlYiLCAxICJJIicgaXMgdmFsaWQgYXNz
ZXJ0X25vdF9lcXVhbHM6IGdvdCBkaXNhbGxvd2VkIHZhbHVlIC0xCitQQVNTIEBjb3VudGVyLXN0
eWxlICdhZGRpdGl2ZS1zeW1ib2xzOiAwICJYIicgaXMgdmFsaWQKK1BBU1MgQGNvdW50ZXItc3R5
bGUgJ2FkZGl0aXZlLXN5bWJvbHM6IDEgIlgiJyBpcyB2YWxpZAorUEFTUyBAY291bnRlci1zdHls
ZSAnYWRkaXRpdmUtc3ltYm9sczogIlgiIDEnIGlzIHZhbGlkCitQQVNTIEBjb3VudGVyLXN0eWxl
ICdhZGRpdGl2ZS1zeW1ib2xzOiA1ICJWIiwgMSAiSSInIGlzIHZhbGlkCiBQQVNTIEBjb3VudGVy
LXN0eWxlICdhZGRpdGl2ZS1zeW1ib2xzOiAnIGlzIGludmFsaWQKIFBBU1MgQGNvdW50ZXItc3R5
bGUgJ2FkZGl0aXZlLXN5bWJvbHM6IC0xICJYIicgaXMgaW52YWxpZAogUEFTUyBAY291bnRlci1z
dHlsZSAnYWRkaXRpdmUtc3ltYm9sczogMSAiSSIsIDUgIlYiJyBpcyBpbnZhbGlkCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
Y291bnRlci1zdHlsZXMvY291bnRlci1zdHlsZS1zeW1ib2xzLXN5bnRheC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY291
bnRlci1zdHlsZXMvY291bnRlci1zdHlsZS1zeW1ib2xzLXN5bnRheC1leHBlY3RlZC50eHQKaW5k
ZXggMjZiMWRiOGZhMDhhNzg4MWQ1NTc5YjFmMWEzMDkxMDYwNTYyYzExNS4uNGUyZWU1Y2UyOTc4
MWU5ZDEzZGViZjcwYWFmMTI2OGI5OGU3NDRhNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvdW50ZXItc3R5bGVzL2NvdW50
ZXItc3R5bGUtc3ltYm9scy1zeW50YXgtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb3VudGVyLXN0eWxlcy9jb3Vu
dGVyLXN0eWxlLXN5bWJvbHMtc3ludGF4LWV4cGVjdGVkLnR4dApAQCAtMiw3ICsyLDcgQEAKIFBB
U1MgQGNvdW50ZXItc3R5bGUgJ3N5bWJvbHM6ICJYIicgaXMgdmFsaWQKIFBBU1MgQGNvdW50ZXIt
c3R5bGUgJ3N5bWJvbHM6ICJYIiAiWCInIGlzIHZhbGlkCiBQQVNTIEBjb3VudGVyLXN0eWxlICdz
eW1ib2xzOiBpZGVudCAiWCInIGlzIHZhbGlkCi1GQUlMIEBjb3VudGVyLXN0eWxlICdzeW1ib2xz
OiBpZGVudCAiWCIgdXJsKCJmb28uanBnIiknIGlzIHZhbGlkIGFzc2VydF9ub3RfZXF1YWxzOiBn
b3QgZGlzYWxsb3dlZCB2YWx1ZSAtMQorUEFTUyBAY291bnRlci1zdHlsZSAnc3ltYm9sczogaWRl
bnQgIlgiIHVybCgiZm9vLmpwZyIpJyBpcyB2YWxpZAogUEFTUyBAY291bnRlci1zdHlsZSAnc3lt
Ym9sczogJyBpcyBpbnZhbGlkCiBQQVNTIEBjb3VudGVyLXN0eWxlICdzeW1ib2xzOiBpbml0aWFs
ICJYIiAiWCInIGlzIGludmFsaWQKIFBBU1MgQGNvdW50ZXItc3R5bGUgJ3N5bWJvbHM6IGluaGVy
aXQgIlgiICJYIicgaXMgaW52YWxpZAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>430790</attachid>
            <date>2021-06-07 15:29:30 -0700</date>
            <delta_ts>2021-06-07 15:29:30 -0700</delta_ts>
            <desc>Simple URL serialization test</desc>
            <filename>test.html</filename>
            <type>text/html</type>
            <size>140</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">PHN0eWxlPmEgeyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImZvby5qcGciKSB9PC9zdHlsZT4KPHNj
cmlwdD4gZG9jdW1lbnQud3JpdGUoZG9jdW1lbnQuaGVhZC5maXJzdENoaWxkLnNoZWV0LmNzc1J1
bGVzWzBdLmNzc1RleHQpIDwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431026</attachid>
            <date>2021-06-09 17:01:32 -0700</date>
            <delta_ts>2021-06-09 18:01:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226708-20210609170132.patch</filename>
            <type>text/plain</type>
            <size>48839</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMyYTk0MjAxMDdmZDgx
NTU2NjhmZjdjOGQ3ODJhMGRhNDFiYTgyYS4uNmNhZTRiNWQ4MDZjOTk1ZDFiZDZiZjk2NTUwMjlk
Mzc0ODk2MjkzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDIxLTA2LTA5ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggQ1NTIHNlcmlhbGl6YXRp
b24gaXNzdWVzIGFmZmVjdGluZyBjc3MtY291bnRlci1zdHlsZXMgdGVzdHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjcwOAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCB0d28gc2VyaWFsaXphdGlv
biBpc3NzdWVzIGFmZmVjdGluZyBjc3MtY291bnRlci1zdHlsZXMgdGVzdHM6CisgICAgCisgICAg
ICAgIDEpIFVSTHMgd2VyZSBzZXJpYWxpemluZyB0aGUgZnVsbCByZXNvbHZlZCBVUkwsIHJhdGhl
ciB0aGFuIHRoZQorICAgICAgICAgICBwYXJ0aWFsIFVSTCBzdHJpbmcgZnJvbSB0aGUgc3R5bGUg
c2hlZXQuCisgICAgICAgIDIpIEl0ZW1zIGluIGFkZGl0aXZlLXN5bWJvbHMgdGhhdCBoYWQgYm90
aCBhbiBpbnRlZ2VyIGFuZCBhIHN0cmluZworICAgICAgICAgICB3b3VsZCBpbmNvcnJlY3RseSBz
ZXJpYWxpemUgd2l0aCBhIGNvbW1hIHdpdGhpbiB0aGUgaXRlbS4KKworICAgICAgICAqIGNzcy9D
U1NDcm9zc2ZhZGVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1
ZTo6dmFsdWVXaXRoU3R5bGVzUmVzb2x2ZWQpOiBBZGRlZC4KKyAgICAgICAgQ2FsbHMgcmVzb2x2
ZUltYWdlU3R5bGVzIG9uIHRoZSBpbWFnZSB2YWx1ZXMuCisgICAgICAgICogY3NzL0NTU0Nyb3Nz
ZmFkZVZhbHVlLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIGNzcy9DU1ND
dXJzb3JJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1cnNvckltYWdlVmFs
dWU6OkNTU0N1cnNvckltYWdlVmFsdWUpOiBDaGFuZ2VkIHRoZSBob3Qgc3BvdAorICAgICAgICB0
byB1c2Ugc3RkOjpvcHRpb25hbCBpbnN0ZWFkIG9mIGEgc2VwYXJhdGUgYm9vbGVhbi4KKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0N1cnNvckltYWdlVmFsdWU6OmNyZWF0ZSk6IE1vdmVkIHRoaXMgb3V0
IG9mIHRoZSBoZWFkZXIKKyAgICAgICAgYmVjYXVzZSBpdCdzIG5vdCBiZXR0ZXIgZm9yIGlubGlu
aW5nIHRvIGhhdmUgaXQgdGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpDU1NDdXJzb3JJbWFnZVZh
bHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KTogVXBkYXRlZCBmb3IgdGhlCisgICAgICAgIG1faG90
U3BvdCBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6dXBk
YXRlQ3Vyc29yRWxlbWVudCk6IFJlbW92ZWQgdW5uZWVkZWQKKyAgICAgICAgY2hlY2sgb2YgaGFz
RnJhZ21lbnRJZGVudGlmaWVyLCB3aGljaCBpcyBhbHJlYWR5IGRvbmUgYnkgdGhlCisgICAgICAg
IFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcgZnVuY3Rpb24uIFVw
ZGF0ZWQgdG8gdXNlCisgICAgICAgIG1fb3JpZ2luYWxTcGVjaWZpZWRVUkxTdHJpbmcsIGFuZCBh
ZGRlZCBhIEZJWE1FIGFib3V0IHRoZSBzdHJhbmdlIHdheQorICAgICAgICB0aGlzIGp1c3Qga2Vl
cHMgYWNjdW11bGF0aW5nIG1vcmUgYW5kIG1vcmUgY2xpZW50cyBpbiBhIHNldCwgYnV0IGRpZAor
ICAgICAgICBub3QgY2hhbmdlIHRoYXQgYmVoYXZpb3IuCisgICAgICAgIChXZWJDb3JlOjpDU1ND
dXJzb3JJbWFnZVZhbHVlOjpjdXJzb3JFbGVtZW50UmVtb3ZlZCk6IEFkZGVkIGEgRklYTUUuCisg
ICAgICAgIChXZWJDb3JlOjpDU1NDdXJzb3JJbWFnZVZhbHVlOjpjdXJzb3JFbGVtZW50Q2hhbmdl
ZCk6IFVwZGF0ZWQgZm9yIHRoZQorICAgICAgICBjaGFuZ2UgdG8gbV9ob3RTcG90IGFuZCBhZGRk
ZWQgc29tZSBGSVhNRS4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1cnNvckltYWdlVmFsdWU6OmVx
dWFscyBjb25zdCk6IFVwZGF0ZWQgZm9yIHRoZSBtX2hvdFNwb3QKKyAgICAgICAgY2hhbmdlOyBt
dWNoIHNpbXBsZXIgc2luY2Ugc3RkOjpvcHRpb25hbCBkb2VzIHRoZSByaWdodCB0aGluZy4KKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0N1cnNvckltYWdlVmFsdWU6OnZhbHVlV2l0aFN0eWxlc1Jlc29s
dmVkKTogQWRkZWQuCisgICAgICAgIENhbGxzIHJlc29sdmVJbWFnZVN0eWxlcyBvbiB0aGUgaW1h
Z2UgdmFsdWUuCisgICAgICAgICogY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaDogVXBkYXRlZCBm
b3IgdGhlIGFib3ZlIGNoYW5nZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTRmlsdGVySW1hZ2VWYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXJJbWFnZVZhbHVlOjp2YWx1ZVdpdGhT
dHlsZXNSZXNvbHZlZCk6IEFkZGVkLgorICAgICAgICBDYWxscyByc2Vzb2x2ZUltYWdlU3R5bGVz
IG9uIHRoZSBpbWFnZSB2YWx1ZSBhbmQgYWxzbyBjYWxscworICAgICAgICBjcmVhdGVGaWx0ZXJP
cGVyYXRpb25zLgorICAgICAgICAqIGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmg6IFVwZGF0ZWQg
Zm9yIHRoZSBhYm9ldi4KKworICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0dyYWRpZW50VmFsdWU6OnZhbHVlV2l0aFN0eWxlc1Jlc29sdmVk
KTogUmVuYW1lZCBmcm9tCisgICAgICAgIGdyYWRpZW50V2l0aFN0eWxlc1Jlc29sdmVkLgorICAg
ICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKwor
ICAgICAgICAqIGNzcy9DU1NJbWFnZVNldFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ltYWdlU2V0VmFsdWU6OnZhbHVlV2l0aFN0eWxlc1Jlc29sdmVkKTogUmVuYW1lZCBmcm9tCisg
ICAgICAgIGltYWdlU2V0V2l0aFN0eWxlc1Jlc29sdmVkLiBUd2Vha2VkIGNvZGluZyBzdHlsZSBh
IGJpdC4KKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oOiBVcGRhdGVkIGZvciB0aGUg
YWJvdmUuCisKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NJbWFnZVZhbHVlOjpDU1NJbWFnZVZhbHVlKTogQWRkZWQgcmVzb2x2ZWRVUkwgYXJn
dW1lbnQKKyAgICAgICAgYW5kIG1fcmVzb2x2ZWRVUkxTdHJpbmcuCisgICAgICAgIChXZWJDb3Jl
OjpDU1NJbWFnZVZhbHVlOjpjcmVhdGUpOiBBZGRlZCBhbiBvdmVybG9hZCB0aGF0IHRha2VzIHRo
ZQorICAgICAgICByZXNvbHZlZFVSTCBhcmd1bWVudCBhbmQgYWxzbyBtb3ZlZCBoZXJlIGZyb20g
dGhlIGhlYWRlciBzaW5jZSB3ZQorICAgICAgICBkb24ndCBnZXQgYW55IGJlbmVmaXQgZnJvbSBp
bmxpbmluZy4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlVmFsdWU6OnJlc29sdmVkVVJMIGNv
bnN0KTogQWRkZWQuIFVzZWQgc28gd2UgY2FuCisgICAgICAgIHNoYXJlIGNvZGUgYmV0d2VlbiB0
aGUgZm9sbG93aW5nIGZ1bmN0aW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlVmFsdWU6
OnZhbHVlV2l0aFN0eWxlc1Jlc29sdmVkKTogQWRkZWQuIENvbXB1dGVzCisgICAgICAgIHRoZSBm
dWxseSByZXNvbHZlZCBVUkwgYW5kIG1ha2VzIGEgbmV3IGltYWdlIHZhbHVlIGlmIG5lZWRlZCB0
aGF0CisgICAgICAgIGhhcyB0aGF0IGluc3RlYWQgb2YgdGhlIG9yaWdpbmFsIHJlbGF0aXZlIFVS
TCBzdHJpbmcuCisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVZhbHVlOjpsb2FkSW1hZ2UpOiBV
c2UgdGhlIG5ldyByZXNvbHZlZFVSTCBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0lt
YWdlVmFsdWU6OmVxdWFscyBjb25zdCk6IFRha2UgbV9yZXNvbHZlZFVSTFN0cmluZworICAgICAg
ICBpbnRvIGFjY291bnQgd2hlbiBjb21wYXJpbmcgdmFsdWVzLgorICAgICAgICAqIGNzcy9DU1NJ
bWFnZVZhbHVlLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIGNzcy9wYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUN1cnNv
cik6IFVzZSBzdGQ6Om9wdGlvbmFsIGZvciB0aGUgaG90IHNwb3QuCisgICAgICAgIChXZWJDb3Jl
Ojpjb25zdW1lQ291bnRlclN0eWxlQWRkaXRpdmVTeW1ib2xzKTogUHV0IHRoZSBpbnRlZ2VyL3N5
bWJvbAorICAgICAgICBwYWlyIGludG8gYSBzZXBhcmF0ZSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBp
bnN0ZWFkIG9mIGFwcGVuZGluZyBib3RoCisgICAgICAgIHRvIHRoZSB0b3AgbGV2ZWwgY29tbWFu
ZC1zZXBhcmF0ZWQgbGlzdC4KKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJz
ZXJIZWxwZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVy
czo6Y29uc3VtZUltYWdlKTogQ2FsbCB0aGUgbmV3CisJb3ZlcmxvYWQgb2YgQ1NTSW1hZ2VWYWx1
ZTo6Y3JlYXRlLCBwYXNzaW5nIGJvdGggdGhlIG9yaWdpbmFsIHN0cmluZworICAgICAgICBhbmQg
dGhlIHJlc29sdmVkIFVSTC4KKworICAgICAgICAqIHN0eWxlL1N0eWxlQnVpbGRlckN1c3RvbS5o
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDb250
ZW50KTogQ2FsbAorICAgICAgICByZXNvbHZlSW1hZ2VTdHlsZXMgY29uc2lzdGVudGx5LgorCisg
ICAgICAgICogc3R5bGUvU3R5bGVCdWlsZGVyU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OkJ1aWxkZXJTdGF0ZTo6cmVzb2x2ZUltYWdlU3R5bGVzKTogQ2FsbCB0aGUgbmV3Cisg
ICAgICAgIHZhbHVlV2l0aFN0eWxlc1Jlc29sdmVkIGZ1bmN0aW9uIG9uIGFsbCB0aGUgZGlmZmVy
ZW50IGltYWdlIHZhbHVlCisgICAgICAgIHR5cGVzLiBUaGlzIHVuaWZpZXMgdGhlIGFwcHJvYWNo
IGFjcm9zcyBhbGwgNiBjbGFzc2VzLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXJT
dGF0ZTo6Y3JlYXRlU3R5bGVJbWFnZSk6IFR3ZWFrZWQgc3R5bGUuCisKIDIwMjEtMDYtMDYgIEFu
dHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIEZhY3RvciBzZWxlY3Rp
b24gY2xhbXBpbmcgaW50byBhIHR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDcm9zc2ZhZGVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFs
dWUuY3BwCmluZGV4IDhlYmVhNGIyYWIxZTI0N2RmNWVhNWNjNDZjODg1Y2MxMGNjN2IwZWEuLjJk
ZmY1YjE1MTVjMjlhNjA3ZGQwODE4ZjAxODBlODNjZWRiNzc3MzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5o
IgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKKyNpbmNsdWRlICJTdHlsZUJ1aWxkZXJTdGF0
ZS5oIgogI2luY2x1ZGUgIlN0eWxlQ2FjaGVkSW1hZ2UuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjI4LDEwICsyMjgs
MTggQEAgYm9vbCBDU1NDcm9zc2ZhZGVWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU0Nyb3NzZmFkZVZh
bHVlJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gZXF1YWxJbnB1dEltYWdlcyhvdGhlcikgJiYg
Y29tcGFyZUNTU1ZhbHVlKG1fcGVyY2VudGFnZVZhbHVlLCBvdGhlci5tX3BlcmNlbnRhZ2VWYWx1
ZSk7CiB9CiAKLQogYm9vbCBDU1NDcm9zc2ZhZGVWYWx1ZTo6ZXF1YWxJbnB1dEltYWdlcyhjb25z
dCBDU1NDcm9zc2ZhZGVWYWx1ZSYgb3RoZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvbXBhcmVD
U1NWYWx1ZShtX2Zyb21WYWx1ZSwgb3RoZXIubV9mcm9tVmFsdWUpICYmIGNvbXBhcmVDU1NWYWx1
ZShtX3RvVmFsdWUsIG90aGVyLm1fdG9WYWx1ZSk7CiB9CiAKK1JlZjxDU1NDcm9zc2ZhZGVWYWx1
ZT4gQ1NTQ3Jvc3NmYWRlVmFsdWU6OnZhbHVlV2l0aFN0eWxlc1Jlc29sdmVkKFN0eWxlOjpCdWls
ZGVyU3RhdGUmIHN0YXRlKQoreworICAgIGF1dG8gZnJvbVZhbHVlID0gc3RhdGUucmVzb2x2ZUlt
YWdlU3R5bGVzKG1fZnJvbVZhbHVlLmdldCgpKTsKKyAgICBhdXRvIHRvVmFsdWUgPSBzdGF0ZS5y
ZXNvbHZlSW1hZ2VTdHlsZXMobV90b1ZhbHVlLmdldCgpKTsKKyAgICBpZiAoZnJvbVZhbHVlLnB0
cigpID09IG1fZnJvbVZhbHVlLnB0cigpICYmIHRvVmFsdWUucHRyKCkgPT0gbV90b1ZhbHVlLnB0
cigpKQorICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGZy
b21WYWx1ZSksIFdURk1vdmUodG9WYWx1ZSksIFJlZiB7IG1fcGVyY2VudGFnZVZhbHVlIH0sIG1f
aXNQcmVmaXhlZCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0Nyb3NzZmFkZVZhbHVlLmgKaW5kZXggZWJhYjdhY2RlYzY4ZDVhZjk5NDNhMDVlOGE4MDUz
ZDUyOTllODlmOS4uMjkzZTc1OTVlNWQzMDExZWJmOTNlNjI0NzBkYWExYzhhYzI1NmExMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjAsNiArNjAsOCBAQCBwdWJsaWM6
CiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQ3Jvc3NmYWRlVmFsdWUmKSBjb25zdDsKICAgICBi
b29sIGVxdWFsSW5wdXRJbWFnZXMoY29uc3QgQ1NTQ3Jvc3NmYWRlVmFsdWUmKSBjb25zdDsKIAor
ICAgIFJlZjxDU1NDcm9zc2ZhZGVWYWx1ZT4gdmFsdWVXaXRoU3R5bGVzUmVzb2x2ZWQoU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYpOworCiBwcml2YXRlOgogICAgIENTU0Nyb3NzZmFkZVZhbHVlKFJlZjxD
U1NWYWx1ZT4mJiBmcm9tVmFsdWUsIFJlZjxDU1NWYWx1ZT4mJiB0b1ZhbHVlLCBSZWY8Q1NTUHJp
bWl0aXZlVmFsdWU+JiYgcGVyY2VudGFnZVZhbHVlLCBib29sIHByZWZpeGVkKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCmluZGV4IDgyZGQwZThjOGIwMThj
NzA1ZDZhNmI5YjhkMDc5OWQwMDQ2M2VmMzAuLmY0MzZlY2UyZGU4NzMyNjMzODhkYjllYzcxMDk3
MzZhNTJmZDZkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFn
ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5j
cHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IFJvYiBCdWlzIDxi
dWlzQGtkZS5vcmc+CiAgKiAgICAgICAgICAgKEMpIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6
aW1tZXJtYW5uQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI0LDIxICsy
NCwxNyBAQAogCiAjaW5jbHVkZSAiQ1NTSW1hZ2VTZXRWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0lt
YWdlVmFsdWUuaCIKLSNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgotI2luY2x1ZGUgIkNhY2hlZFJl
c291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiU1ZHQ3Vyc29yRWxlbWVudC5oIgogI2luY2x1ZGUg
IlNWR0xlbmd0aENvbnRleHQuaCIKICNpbmNsdWRlICJTVkdVUklSZWZlcmVuY2UuaCIKICNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1DU1NDdXJzb3JJbWFnZVZhbHVlOjpDU1NDdXJzb3JJbWFnZVZhbHVlKFJlZjxDU1NWYWx1
ZT4mJiBpbWFnZVZhbHVlLCBib29sIGhhc0hvdFNwb3QsIGNvbnN0IEludFBvaW50JiBob3RTcG90
LCBMb2FkZWRGcm9tT3BhcXVlU291cmNlIGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpCitDU1NDdXJz
b3JJbWFnZVZhbHVlOjpDU1NDdXJzb3JJbWFnZVZhbHVlKFJlZjxDU1NWYWx1ZT4mJiBpbWFnZVZh
bHVlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiYgaG90U3BvdCwgTG9hZGVkRnJvbU9w
YXF1ZVNvdXJjZSBsb2FkZWRGcm9tT3BhcXVlU291cmNlKQogICAgIDogQ1NTVmFsdWUoQ3Vyc29y
SW1hZ2VDbGFzcykKICAgICAsIG1faW1hZ2VWYWx1ZShXVEZNb3ZlKGltYWdlVmFsdWUpKQotICAg
ICwgbV9oYXNIb3RTcG90KGhhc0hvdFNwb3QpCiAgICAgLCBtX2hvdFNwb3QoaG90U3BvdCkKICAg
ICAsIG1fbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZShsb2FkZWRGcm9tT3BhcXVlU291cmNlKQogewpA
QCAtNDYsNiArNDIsMTEgQEAgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6Q1NTQ3Vyc29ySW1hZ2VWYWx1
ZShSZWY8Q1NTVmFsdWU+JiYgaW1hZ2VWYWx1ZSwgYm9vbCBoYXNIb3QKICAgICAgICAgbV9vcmln
aW5hbFVSTCA9IGRvd25jYXN0PENTU0ltYWdlVmFsdWU+KG1faW1hZ2VWYWx1ZS5nZXQoKSkudXJs
KCk7CiB9CiAKK1JlZjxDU1NDdXJzb3JJbWFnZVZhbHVlPiBDU1NDdXJzb3JJbWFnZVZhbHVlOjpj
cmVhdGUoUmVmPENTU1ZhbHVlPiYmIGltYWdlVmFsdWUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SW50
UG9pbnQ+JiBob3RTcG90LCBMb2FkZWRGcm9tT3BhcXVlU291cmNlIGxvYWRlZEZyb21PcGFxdWVT
b3VyY2UpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZShX
VEZNb3ZlKGltYWdlVmFsdWUpLCBob3RTcG90LCBsb2FkZWRGcm9tT3BhcXVlU291cmNlKSk7Cit9
CisKIENTU0N1cnNvckltYWdlVmFsdWU6On5DU1NDdXJzb3JJbWFnZVZhbHVlKCkKIHsKICAgICBm
b3IgKGF1dG8qIGVsZW1lbnQgOiBtX2N1cnNvckVsZW1lbnRzKQpAQCAtNTUsMjEgKzU2LDE5IEBA
IENTU0N1cnNvckltYWdlVmFsdWU6On5DU1NDdXJzb3JJbWFnZVZhbHVlKCkKIFN0cmluZyBDU1ND
dXJzb3JJbWFnZVZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKIHsKICAgICBTdHJpbmcgdGV4
dCA9IG1faW1hZ2VWYWx1ZS5nZXQoKS5jc3NUZXh0KCk7Ci0gICAgaWYgKCFtX2hhc0hvdFNwb3Qp
CisgICAgaWYgKCFtX2hvdFNwb3QpCiAgICAgICAgIHJldHVybiB0ZXh0OwotICAgIHJldHVybiBt
YWtlU3RyaW5nKHRleHQsICcgJywgbV9ob3RTcG90LngoKSwgJyAnLCBtX2hvdFNwb3QueSgpKTsK
KyAgICByZXR1cm4gbWFrZVN0cmluZyh0ZXh0LCAnICcsIG1faG90U3BvdC0+eCgpLCAnICcsIG1f
aG90U3BvdC0+eSgpKTsKIH0KIAogLy8gRklYTUU6IFNob3VsZCB0aGlzIGZ1bmN0aW9uIHRha2Ug
YSBUcmVlU2NvcGUgaW5zdGVhZD8KIFNWR0N1cnNvckVsZW1lbnQqIENTU0N1cnNvckltYWdlVmFs
dWU6OnVwZGF0ZUN1cnNvckVsZW1lbnQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAg
IGlmICghbV9vcmlnaW5hbFVSTC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KICAgICBhdXRvIGVsZW1lbnQgPSBTVkdVUklSZWZlcmVuY2U6OnRhcmdl
dEVsZW1lbnRGcm9tSVJJU3RyaW5nKG1fb3JpZ2luYWxVUkwuc3RyaW5nKCksIGRvY3VtZW50KS5l
bGVtZW50OwogICAgIGlmICghaXM8U1ZHQ3Vyc29yRWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCisgICAgLy8gRklYTUU6IE5vdCByaWdodCB0byBrZWVwIG9sZCBj
dXJzb3IgZWxlbWVudHMgYXMgY2xpZW50cy4gVGhlIG5ldyBvbmUgc2hvdWxkIHJlcGxhY2UgdGhl
IG9sZCwgbm90IGpvaW4gaXQgaW4gYSBzZXQuCiAgICAgYXV0byYgY3Vyc29yRWxlbWVudCA9IGRv
d25jYXN0PFNWR0N1cnNvckVsZW1lbnQ+KCplbGVtZW50KTsKICAgICBpZiAobV9jdXJzb3JFbGVt
ZW50cy5hZGQoJmN1cnNvckVsZW1lbnQpLmlzTmV3RW50cnkpIHsKICAgICAgICAgY3Vyc29yRWxl
bWVudENoYW5nZWQoY3Vyc29yRWxlbWVudCk7CkBAIC04MCwxOSArNzksMjEgQEAgU1ZHQ3Vyc29y
RWxlbWVudCogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6dXBkYXRlQ3Vyc29yRWxlbWVudChjb25zdCBE
b2N1bWVudCYgZG9jdW0KIAogdm9pZCBDU1NDdXJzb3JJbWFnZVZhbHVlOjpjdXJzb3JFbGVtZW50
UmVtb3ZlZChTVkdDdXJzb3JFbGVtZW50JiBjdXJzb3JFbGVtZW50KQogeworICAgIC8vIEZJWE1F
OiBOb3QgcmlnaHQgdG8gc3RheSBhIGNsaWVudCBvZiBhIGN1cnNvciBlbGVtZW50IHVudGlsIHRo
ZSBlbGVtZW50IGlzIGRlc3Ryb3llZC4gV2UnZCB3YW50IHRvIHN0b3AgYmVpbmcgYSBjbGllbnQg
b25jZSBpdCdzIG5vIGxvbmdlciBhIHZhbGlkIHRhcmdldCwgbGlrZSB3aGVuIGl0J3MgZGlzY29u
bmVjdGVkLgogICAgIG1fY3Vyc29yRWxlbWVudHMucmVtb3ZlKCZjdXJzb3JFbGVtZW50KTsKIH0K
IAogdm9pZCBDU1NDdXJzb3JJbWFnZVZhbHVlOjpjdXJzb3JFbGVtZW50Q2hhbmdlZChTVkdDdXJz
b3JFbGVtZW50JiBjdXJzb3JFbGVtZW50KQogewotICAgIC8vIEZJWE1FOiBUaGlzIHdpbGwgb3Zl
cnJpZGUgaG90IHNwb3Qgc3BlY2lmaWVkIGluIENTUywgd2hpY2ggaXMgcHJvYmFibHkgaW5jb3Jy
ZWN0LgorICAgIC8vIEZJWE1FOiBXaHkgZG9lc24ndCB0aGlzIGNvZGUgY2hlY2sgZm9yIGEgY2hh
bmdlIHRvIHRoZSBocmVmIG9mIHRoZSBjdXJzb3IgZWxlbWVudD8gV2UgZHluYW1pY2FsbHkgdHJh
Y2sgY2hhbmdlcyB0byB4L3kgYnV0IG5vdCBocmVmPworCisgICAgLy8gRklYTUU6IE1ha2VzIG5v
IHNlbnNlIHRoYXQgY2hhbmdpbmcgYW4gb2xkIGN1cnNvciBlbGVtZW50LCBvbmUgdGhhdCB0aGF0
IGlzIG5vIGxvbmdlciB0aGUgdGFyZ2V0IGVsZW1lbnQsIGNoYW5nZXMgdGhlIGhvdCBzcG90Lgor
ICAgIC8vIEZJWE1FOiBUaGlzIHdpbGwgb3ZlcnJpZGUgYSBob3Qgc3BvdCB0aGF0IHdhcyBzcGVj
aWZpZWQgaW4gQ1NTLCB3aGljaCBpcyBwcm9iYWJseSBpbmNvcnJlY3QuCiAgICAgU1ZHTGVuZ3Ro
Q29udGV4dCBsZW5ndGhDb250ZXh0KG51bGxwdHIpOwotICAgIG1faGFzSG90U3BvdCA9IHRydWU7
CiAgICAgZmxvYXQgeCA9IHN0ZDo6cm91bmQoY3Vyc29yRWxlbWVudC54KCkudmFsdWUobGVuZ3Ro
Q29udGV4dCkpOwotICAgIG1faG90U3BvdC5zZXRYKHN0YXRpY19jYXN0PGludD4oeCkpOwotCiAg
ICAgZmxvYXQgeSA9IHN0ZDo6cm91bmQoY3Vyc29yRWxlbWVudC55KCkudmFsdWUobGVuZ3RoQ29u
dGV4dCkpOwotICAgIG1faG90U3BvdC5zZXRZKHN0YXRpY19jYXN0PGludD4oeSkpOworICAgIC8v
IEZJWE1FOiBTaG91bGQgd2UgY2xhbXAgaW5zdGVhZCBvZiBqdXN0IGNhc3RpbmcgdG8gaW50IGhl
cmU/CisgICAgbV9ob3RTcG90ID0gSW50UG9pbnQgeyBzdGF0aWNfY2FzdDxpbnQ+KHgpLCBzdGF0
aWNfY2FzdDxpbnQ+KHkpIH07CiB9CiAKIEltYWdlV2l0aFNjYWxlIENTU0N1cnNvckltYWdlVmFs
dWU6OnNlbGVjdEJlc3RGaXRJbWFnZShjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC0xMTAs
OCArMTExLDE1IEBAIEltYWdlV2l0aFNjYWxlIENTU0N1cnNvckltYWdlVmFsdWU6OnNlbGVjdEJl
c3RGaXRJbWFnZShjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiAKIGJvb2wgQ1NTQ3Vyc29ySW1h
Z2VWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU0N1cnNvckltYWdlVmFsdWUmIG90aGVyKSBjb25zdAog
ewotICAgIHJldHVybiBtX2hhc0hvdFNwb3QgPyBvdGhlci5tX2hhc0hvdFNwb3QgJiYgbV9ob3RT
cG90ID09IG90aGVyLm1faG90U3BvdCA6ICFvdGhlci5tX2hhc0hvdFNwb3QKLSAgICAgICAgJiYg
Y29tcGFyZUNTU1ZhbHVlKG1faW1hZ2VWYWx1ZSwgb3RoZXIubV9pbWFnZVZhbHVlKTsKKyAgICBy
ZXR1cm4gbV9ob3RTcG90ID09IG90aGVyLm1faG90U3BvdCAmJiBjb21wYXJlQ1NTVmFsdWUobV9p
bWFnZVZhbHVlLCBvdGhlci5tX2ltYWdlVmFsdWUpOworfQorCitSZWY8Q1NTQ3Vyc29ySW1hZ2VW
YWx1ZT4gQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6dmFsdWVXaXRoU3R5bGVzUmVzb2x2ZWQoU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYgc3RhdGUpCit7CisgICAgYXV0byBpbWFnZVZhbHVlID0gc3RhdGUucmVz
b2x2ZUltYWdlU3R5bGVzKG1faW1hZ2VWYWx1ZS5nZXQoKSk7CisgICAgaWYgKGltYWdlVmFsdWUu
cHRyKCkgPT0gbV9pbWFnZVZhbHVlLnB0cigpKQorICAgICAgICByZXR1cm4gKnRoaXM7CisgICAg
cmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGltYWdlVmFsdWUpLCBtX2hvdFNwb3QsIG1fbG9hZGVkRnJv
bU9wYXF1ZVNvdXJjZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oCmluZGV4IGIzMDZmZGE0ODVlYzIyODE5Nzg0YjM1
YjY4NjcxYzM2YTVhMmZhNDguLmJiODM1YWUwNTg0ZWNlOTJhZjJkYzhkZDZkNjc5N2JhNjFhNThh
ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaApAQCAtMSw2ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4K
LSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodCByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0IHJlc2VydmVkLgog
ICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNywzNiArMjcsMTggQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBDYWNoZWRJbWFnZTsKLWNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwog
Y2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBFbGVtZW50OwogY2xhc3MgU1ZHQ3Vyc29yRWxlbWVudDsK
LWNsYXNzIFNWR0VsZW1lbnQ7CiAKIHN0cnVjdCBJbWFnZVdpdGhTY2FsZTsKIAotbmFtZXNwYWNl
IFN0eWxlIHsKLWNsYXNzIEJ1aWxkZXJTdGF0ZTsKLX0KLQogY2xhc3MgQ1NTQ3Vyc29ySW1hZ2VW
YWx1ZSBmaW5hbCA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxD
U1NDdXJzb3JJbWFnZVZhbHVlPiBjcmVhdGUoUmVmPENTU1ZhbHVlPiYmIGltYWdlVmFsdWUsIGJv
b2wgaGFzSG90U3BvdCwgY29uc3QgSW50UG9pbnQmIGhvdFNwb3QsIExvYWRlZEZyb21PcGFxdWVT
b3VyY2UgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IENTU0N1cnNvckltYWdlVmFsdWUoV1RGTW92ZShpbWFnZVZhbHVlKSwgaGFzSG90
U3BvdCwgaG90U3BvdCwgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkpOwotICAgIH0KLQorICAgIHN0
YXRpYyBSZWY8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZT4gY3JlYXRlKFJlZjxDU1NWYWx1ZT4mJiBpbWFn
ZVZhbHVlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiYgaG90U3BvdCwgTG9hZGVkRnJv
bU9wYXF1ZVNvdXJjZSk7CiAgICAgfkNTU0N1cnNvckltYWdlVmFsdWUoKTsKIAotICAgIGJvb2wg
aGFzSG90U3BvdCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzSG90U3BvdDsgfQotCi0gICAgSW50UG9p
bnQgaG90U3BvdCgpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAobV9oYXNIb3RTcG90KQotICAg
ICAgICAgICAgcmV0dXJuIG1faG90U3BvdDsKLSAgICAgICAgcmV0dXJuIEludFBvaW50KC0xLCAt
MSk7Ci0gICAgfQorICAgIGJvb2wgaGFzSG90U3BvdCgpIGNvbnN0IHsgcmV0dXJuIG1faG90U3Bv
dC5oYXNfdmFsdWUoKTsgfQorICAgIEludFBvaW50IGhvdFNwb3QoKSBjb25zdCB7IHJldHVybiBt
X2hvdFNwb3QudmFsdWVfb3IoSW50UG9pbnQgeyAtMSwgLTEgfSk7IH0KIAogICAgIGNvbnN0IFVS
TCYgaW1hZ2VVUkwoKSBjb25zdCB7IHJldHVybiBtX29yaWdpbmFsVVJMOyB9CiAKQEAgLTY0LDIz
ICs0NiwyMSBAQCBwdWJsaWM6CiAKICAgICBJbWFnZVdpdGhTY2FsZSBzZWxlY3RCZXN0Rml0SW1h
Z2UoY29uc3QgRG9jdW1lbnQmKTsKIAotICAgIHZvaWQgcmVtb3ZlUmVmZXJlbmNlZEVsZW1lbnQo
U1ZHRWxlbWVudCopOwotCiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQ3Vyc29ySW1hZ2VWYWx1
ZSYpIGNvbnN0OwogCiAgICAgdm9pZCBjdXJzb3JFbGVtZW50UmVtb3ZlZChTVkdDdXJzb3JFbGVt
ZW50Jik7CiAgICAgdm9pZCBjdXJzb3JFbGVtZW50Q2hhbmdlZChTVkdDdXJzb3JFbGVtZW50Jik7
CiAKKyAgICBSZWY8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZT4gdmFsdWVXaXRoU3R5bGVzUmVzb2x2ZWQo
U3R5bGU6OkJ1aWxkZXJTdGF0ZSYpOworCiBwcml2YXRlOgotICAgIENTU0N1cnNvckltYWdlVmFs
dWUoUmVmPENTU1ZhbHVlPiYmIGltYWdlVmFsdWUsIGJvb2wgaGFzSG90U3BvdCwgY29uc3QgSW50
UG9pbnQmIGhvdFNwb3QsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UpOworICAgIENTU0N1cnNvcklt
YWdlVmFsdWUoUmVmPENTU1ZhbHVlPiYmIGltYWdlVmFsdWUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
SW50UG9pbnQ+JiBob3RTcG90LCBMb2FkZWRGcm9tT3BhcXVlU291cmNlKTsKIAogICAgIFNWR0N1
cnNvckVsZW1lbnQqIHVwZGF0ZUN1cnNvckVsZW1lbnQoY29uc3QgRG9jdW1lbnQmKTsKIAogICAg
IFVSTCBtX29yaWdpbmFsVVJMOwogICAgIFJlZjxDU1NWYWx1ZT4gbV9pbWFnZVZhbHVlOwotCi0g
ICAgYm9vbCBtX2hhc0hvdFNwb3Q7Ci0gICAgSW50UG9pbnQgbV9ob3RTcG90OworICAgIHN0ZDo6
b3B0aW9uYWw8SW50UG9pbnQ+IG1faG90U3BvdDsKICAgICBIYXNoU2V0PFNWR0N1cnNvckVsZW1l
bnQqPiBtX2N1cnNvckVsZW1lbnRzOwogICAgIExvYWRlZEZyb21PcGFxdWVTb3VyY2UgbV9sb2Fk
ZWRGcm9tT3BhcXVlU291cmNlIHsgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZTo6Tm8gfTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKaW5kZXggMjlhM2NjOGIy
NmVjNTcxM2ZjZGUyMzFhOGQyOGIzZTJhN2FiMzgxZC4uOGNmOTA5YWU5ZTUzNzI0YjkxZGI0YWNl
MTRhZTI4NTcxZGQ5NTUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRl
ckltYWdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZh
bHVlLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUg
U3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHQgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDcgKzM2LDYgQEAKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50
LmgiCiAjaW5jbHVkZSAiU3R5bGVCdWlsZGVyU3RhdGUuaCIKICNpbmNsdWRlICJTdHlsZUNhY2hl
ZEltYWdlLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTE3Myw0ICsxNzMsMTYgQEAgYm9vbCBDU1NGaWx0ZXJJbWFnZVZh
bHVlOjplcXVhbElucHV0SW1hZ2VzKGNvbnN0IENTU0ZpbHRlckltYWdlVmFsdWUmIG90aGVyKSBj
b24KICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlKG1faW1hZ2VWYWx1ZSwgb3RoZXIubV9pbWFn
ZVZhbHVlKTsKIH0KIAorUmVmPENTU0ZpbHRlckltYWdlVmFsdWU+IENTU0ZpbHRlckltYWdlVmFs
dWU6OnZhbHVlV2l0aFN0eWxlc1Jlc29sdmVkKFN0eWxlOjpCdWlsZGVyU3RhdGUmIHN0YXRlKQor
eworICAgIGF1dG8gaW1hZ2VWYWx1ZSA9IHN0YXRlLnJlc29sdmVJbWFnZVN0eWxlcyhtX2ltYWdl
VmFsdWUuZ2V0KCkpOworICAgIGlmIChpbWFnZVZhbHVlLnB0cigpID09IG1faW1hZ2VWYWx1ZS5w
dHIoKSkgeworICAgICAgICBjcmVhdGVGaWx0ZXJPcGVyYXRpb25zKHN0YXRlKTsKKyAgICAgICAg
cmV0dXJuICp0aGlzOworICAgIH0KKyAgICBhdXRvIGZpbHRlckltYWdlVmFsdWUgPSBjcmVhdGUo
V1RGTW92ZShpbWFnZVZhbHVlKSwgUmVmIHsgbV9maWx0ZXJWYWx1ZSB9KTsKKyAgICBmaWx0ZXJJ
bWFnZVZhbHVlLT5jcmVhdGVGaWx0ZXJPcGVyYXRpb25zKHN0YXRlKTsKKyAgICByZXR1cm4gZmls
dGVySW1hZ2VWYWx1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmgKaW5kZXggM2E3YjQzN2I5YTI3ZTQ5YTRlODU1M2Ji
MDUwYTZiMDdiYjAwMmIwZS4uNTA0YzJhZDhkMTVjYjRjNTNlMjQyOTMxMDNkMjFkNmEzYzAyNjg2
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRl
ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTM1LDEwICszNiw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ2FjaGVkSW1h
Z2U7CiBjbGFzcyBGaWx0ZXJTdWJpbWFnZU9ic2VydmVyUHJveHk7CiBjbGFzcyBSZW5kZXJFbGVt
ZW50OwotY2xhc3MgRG9jdW1lbnQ7CiAKIG5hbWVzcGFjZSBTdHlsZSB7CiBjbGFzcyBCdWlsZGVy
U3RhdGU7CkBAIC03MSwxNSArNzAsMTIgQEAgcHVibGljOgogCiAgICAgYm9vbCBlcXVhbElucHV0
SW1hZ2VzKGNvbnN0IENTU0ZpbHRlckltYWdlVmFsdWUmKSBjb25zdDsKIAotICAgIHZvaWQgY3Jl
YXRlRmlsdGVyT3BlcmF0aW9ucyhTdHlsZTo6QnVpbGRlclN0YXRlJik7Ci0KICAgICBjb25zdCBG
aWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJPcGVyYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9maWx0
ZXJPcGVyYXRpb25zOyB9Ci0gICAgdm9pZCBzZXRGaWx0ZXJPcGVyYXRpb25zKGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMmIGZpbHRlck9wZXJhdGlvbnMpCi0gICAgewotICAgICAgICBtX2ZpbHRlck9w
ZXJhdGlvbnMgPSBmaWx0ZXJPcGVyYXRpb25zOwotICAgIH0KKyAgICB2b2lkIHNldEZpbHRlck9w
ZXJhdGlvbnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVyT3BlcmF0aW9ucykgeyBtX2Zp
bHRlck9wZXJhdGlvbnMgPSBmaWx0ZXJPcGVyYXRpb25zOyB9CiAgICAgQ2FjaGVkSW1hZ2UqIGNh
Y2hlZEltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZS5nZXQoKTsgfQogCisgICAg
UmVmPENTU0ZpbHRlckltYWdlVmFsdWU+IHZhbHVlV2l0aFN0eWxlc1Jlc29sdmVkKFN0eWxlOjpC
dWlsZGVyU3RhdGUmKTsKKwogcHJpdmF0ZToKICAgICBDU1NGaWx0ZXJJbWFnZVZhbHVlKFJlZjxD
U1NWYWx1ZT4mJiBpbWFnZVZhbHVlLCBSZWY8Q1NTVmFsdWU+JiYgZmlsdGVyVmFsdWUpCiAgICAg
ICAgIDogQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZShGaWx0ZXJJbWFnZUNsYXNzKQpAQCAtMTA2LDYg
KzEwMiw3IEBAIHByaXZhdGU6CiAgICAgfTsKIAogICAgIHZvaWQgZmlsdGVySW1hZ2VDaGFuZ2Vk
KGNvbnN0IEludFJlY3QmKTsKKyAgICB2b2lkIGNyZWF0ZUZpbHRlck9wZXJhdGlvbnMoU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYpOwogCiAgICAgUmVmPENTU1ZhbHVlPiBtX2ltYWdlVmFsdWU7CiAgICAg
UmVmPENTU1ZhbHVlPiBtX2ZpbHRlclZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50
VmFsdWUuY3BwCmluZGV4IDQ3ZjBmZWFmNzNhOWE3NGRlYjcyOTg2YzJmNGNmNjY0Y2NhN2Q2MDMu
LjU4YmNhNmUyOTIxNmY0ZjIxNTFkN2RmODU3N2IyZWU0MDllODVkMTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBib29sIENTU0dy
YWRpZW50VmFsdWU6Omhhc0NvbG9yRGVyaXZlZEZyb21FbGVtZW50KCkgY29uc3QKICAgICByZXR1
cm4gKm1faGFzQ29sb3JEZXJpdmVkRnJvbUVsZW1lbnQ7CiB9CiAKLVJlZjxDU1NHcmFkaWVudFZh
bHVlPiBDU1NHcmFkaWVudFZhbHVlOjpncmFkaWVudFdpdGhTdHlsZXNSZXNvbHZlZChTdHlsZTo6
QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitSZWY8Q1NTR3JhZGllbnRWYWx1ZT4gQ1NTR3Jh
ZGllbnRWYWx1ZTo6dmFsdWVXaXRoU3R5bGVzUmVzb2x2ZWQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYg
YnVpbGRlclN0YXRlKQogewogICAgIGF1dG8gcmVzdWx0ID0gaGFzQ29sb3JEZXJpdmVkRnJvbUVs
ZW1lbnQoKSA/IGNsb25lKCp0aGlzKSA6IG1ha2VSZWYoKnRoaXMpOwogICAgIHJlc29sdmVTdG9w
Q29sb3JzKHJlc3VsdC0+bV9zdG9wcywgWyZdKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiBjb2xv
clZhbHVlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1
ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAppbmRleCBmOWExODc2
YTMxMGIzYmI3NWU5NjRlZWExMWIxZjZlYWQ4MWIzZDlkLi5jOWUyMmI3ZGQ1Nzk3Yzg2N2M1NGRh
NzBiYzliZGMzNThhNWNkYTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jh
ZGllbnRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgK
QEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1Bl
bmRpbmcoKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHN0YXRpYyB2b2lkIGxvYWRTdWJpbWFnZXMo
Q2FjaGVkUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKSB7IH0K
IAotICAgIFJlZjxDU1NHcmFkaWVudFZhbHVlPiBncmFkaWVudFdpdGhTdHlsZXNSZXNvbHZlZChT
dHlsZTo6QnVpbGRlclN0YXRlJik7CisgICAgUmVmPENTU0dyYWRpZW50VmFsdWU+IHZhbHVlV2l0
aFN0eWxlc1Jlc29sdmVkKFN0eWxlOjpCdWlsZGVyU3RhdGUmKTsKIAogcHJvdGVjdGVkOgogICAg
IENTU0dyYWRpZW50VmFsdWUoQ2xhc3NUeXBlIGNsYXNzVHlwZSwgQ1NTR3JhZGllbnRSZXBlYXQg
cmVwZWF0LCBDU1NHcmFkaWVudFR5cGUgZ3JhZGllbnRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ltYWdlU2V0VmFsdWUuY3BwCmluZGV4IGE5MzIwMzA4MjVhYmI2NTViNTI3OGFmNWM2MTUyZTNi
NTQ3ZWFkN2IuLjkwNDkxNjk5NTI5ZjU4MTdjMzVmMzdlNzQ3YTQxNjE4ZTZlZmMxNmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAKQEAgLTExMywxNSArMTEzLDE0IEBA
IHZvaWQgQ1NTSW1hZ2VTZXRWYWx1ZTo6dXBkYXRlRGV2aWNlU2NhbGVGYWN0b3IoY29uc3QgRG9j
dW1lbnQmIGRvY3VtZW50KQogICAgIG1fc2VsZWN0ZWRJbWFnZVZhbHVlID0gbnVsbHB0cjsKIH0K
IAotUmVmPENTU0ltYWdlU2V0VmFsdWU+IENTU0ltYWdlU2V0VmFsdWU6OmltYWdlU2V0V2l0aFN0
eWxlc1Jlc29sdmVkKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK1JlZjxDU1NJ
bWFnZVNldFZhbHVlPiBDU1NJbWFnZVNldFZhbHVlOjp2YWx1ZVdpdGhTdHlsZXNSZXNvbHZlZChT
dHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7Ci0gICAgUmVmPENTU0ltYWdlU2V0
VmFsdWU+IHJlc3VsdCA9IENTU0ltYWdlU2V0VmFsdWU6OmNyZWF0ZSgpOwotICAgIHNpemVfdCBs
ZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSArIDEgPCBs
ZW5ndGg7IGkgKz0gMikgeworICAgIC8vIEZJWE1FOiBXb3VsZCBiZSBuaWNlIHRvIG9wdGltaXpl
IHRoZSBjYXNlIHdoZXJlIHJlc29sdmluZyB0aGUgc3R5bGVzIGRvZXMgbm90IGNoYW5nZSBhbnl0
aGluZy4KKyAgICBhdXRvIHJlc3VsdCA9IGNyZWF0ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
LCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsgaSArIDEgPCBsZW5ndGg7IGkgKz0gMikgewogICAg
ICAgICByZXN1bHQtPmFwcGVuZChidWlsZGVyU3RhdGUucmVzb2x2ZUltYWdlU3R5bGVzKCppdGVt
V2l0aG91dEJvdW5kc0NoZWNrKGkpKSk7CiAgICAgICAgIHJlc3VsdC0+YXBwZW5kKCppdGVtV2l0
aG91dEJvdW5kc0NoZWNrKGkgKyAxKSk7CiAgICAgfQotCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmgKaW5kZXggMDFlYTRjNWM1NGExYjZm
ZmJlZDMzMjNmNmIzOGRhZDQ4MzU1MWU1ZS4uNzNkMTI1YWZlYTMwMzQ4YzFiZDZmMjJmMTZmNzll
ZTFjYzJiNmEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFs
dWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oCkBAIC02MSw3
ICs2MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlRGV2aWNlU2NhbGVGYWN0b3IoY29u
c3QgRG9jdW1lbnQmKTsKIAotICAgIFJlZjxDU1NJbWFnZVNldFZhbHVlPiBpbWFnZVNldFdpdGhT
dHlsZXNSZXNvbHZlZChTdHlsZTo6QnVpbGRlclN0YXRlJik7CisgICAgUmVmPENTU0ltYWdlU2V0
VmFsdWU+IHZhbHVlV2l0aFN0eWxlc1Jlc29sdmVkKFN0eWxlOjpCdWlsZGVyU3RhdGUmKTsKIAog
cHJpdmF0ZToKICAgICBDU1NJbWFnZVNldFZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VW
YWx1ZS5jcHAKaW5kZXggYzBmNWExNmQ3ZWY4ZGNiNDFlMjMwOWIzNDExYzBlMzljYTkwYjAyMS4u
ZTY2YTFlZTczM2FiZmM0ZmM0MzA5ZTg2ODk3NTlhZWNkYzI3YmY1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NJbWFnZVZhbHVlLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAoQykgMTk5OS0yMDAz
IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAg
LTM0LDkgKzM0LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ1NTSW1hZ2VWYWx1ZTo6
Q1NTSW1hZ2VWYWx1ZShVUkwmJiB1cmwsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UgbG9hZGVkRnJv
bU9wYXF1ZVNvdXJjZSkKK0NTU0ltYWdlVmFsdWU6OkNTU0ltYWdlVmFsdWUoVVJMJiYgdXJsLCBV
UkwmJiByZXNvbHZlZFVSTCwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSBsb2FkZWRGcm9tT3BhcXVl
U291cmNlKQogICAgIDogQ1NTVmFsdWUoSW1hZ2VDbGFzcykKICAgICAsIG1fdXJsKFdURk1vdmUo
dXJsKSkKKyAgICAsIG1fcmVzb2x2ZWRVUkxTdHJpbmcocmVzb2x2ZWRVUkwuc3RyaW5nKCkpCiAg
ICAgLCBtX2FjY2Vzc2VkSW1hZ2UoZmFsc2UpCiAgICAgLCBtX2xvYWRlZEZyb21PcGFxdWVTb3Vy
Y2UobG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKIHsKQEAgLTUwLDYgKzUxLDIwIEBAIENTU0ltYWdl
VmFsdWU6OkNTU0ltYWdlVmFsdWUoQ2FjaGVkSW1hZ2UmIGltYWdlKQogewogfQogCitSZWY8Q1NT
SW1hZ2VWYWx1ZT4gQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKFVSTCYmIGltYWdlVVJMLCBVUkwmJiBy
ZXNvbHZlZFVSTCwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSBsb2FkZWRGcm9tT3BhcXVlU291cmNl
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0ltYWdlVmFsdWUoV1RGTW92ZShpbWFn
ZVVSTCksIFdURk1vdmUocmVzb2x2ZWRVUkwpLCBsb2FkZWRGcm9tT3BhcXVlU291cmNlKSk7Cit9
CisKK1JlZjxDU1NJbWFnZVZhbHVlPiBDU1NJbWFnZVZhbHVlOjpjcmVhdGUoVVJMJiYgaW1hZ2VV
UkwsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKK3sKKyAg
ICByZXR1cm4gY3JlYXRlKFdURk1vdmUoaW1hZ2VVUkwpLCB7IH0sIGxvYWRlZEZyb21PcGFxdWVT
b3VyY2UpOworfQorCitSZWY8Q1NTSW1hZ2VWYWx1ZT4gQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKENh
Y2hlZEltYWdlJiBpbWFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NJbWFnZVZh
bHVlKGltYWdlKSk7Cit9CiAKIENTU0ltYWdlVmFsdWU6On5DU1NJbWFnZVZhbHVlKCkgPSBkZWZh
dWx0OwogCkBAIC01OCw2ICs3MywyMSBAQCBib29sIENTU0ltYWdlVmFsdWU6OmlzUGVuZGluZygp
IGNvbnN0CiAgICAgcmV0dXJuICFtX2FjY2Vzc2VkSW1hZ2U7CiB9CiAKK1VSTCBDU1NJbWFnZVZh
bHVlOjpyZXNvbHZlZFVSTChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGRvY3VtZW50LmNvbXBsZXRlVVJMKG1fcmVzb2x2ZWRVUkxTdHJpbmcuaXNOdWxsKCkg
PyBtX3VybC5zdHJpbmcoKSA6IG1fcmVzb2x2ZWRVUkxTdHJpbmcpOworfQorCitSZWY8Q1NTSW1h
Z2VWYWx1ZT4gQ1NTSW1hZ2VWYWx1ZTo6dmFsdWVXaXRoU3R5bGVzUmVzb2x2ZWQoU3R5bGU6OkJ1
aWxkZXJTdGF0ZSYgc3RhdGUpCit7CisgICAgYXV0byByZXNvbHZlZFVSTCA9IHRoaXMtPnJlc29s
dmVkVVJMKHN0YXRlLmRvY3VtZW50KCkpOworICAgIGlmIChtX3VybCA9PSByZXNvbHZlZFVSTCkK
KyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIGF1dG8gcmVzdWx0ID0gY3JlYXRlKFdURk1vdmUo
cmVzb2x2ZWRVUkwpLCBtX2xvYWRlZEZyb21PcGFxdWVTb3VyY2UpOworICAgIHJlc3VsdC0+bV9p
bml0aWF0b3JOYW1lID0gbV9pbml0aWF0b3JOYW1lOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
IENhY2hlZEltYWdlKiBDU1NJbWFnZVZhbHVlOjpsb2FkSW1hZ2UoQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQogewogICAg
IGlmICghbV9hY2Nlc3NlZEltYWdlKSB7CkBAIC02NSwxMiArOTUsMTEgQEAgQ2FjaGVkSW1hZ2Uq
IENTU0ltYWdlVmFsdWU6OmxvYWRJbWFnZShDYWNoZWRSZXNvdXJjZUxvYWRlciYgbG9hZGVyLCBj
b25zdCBSZXNvdXIKIAogICAgICAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMgbG9hZE9wdGlvbnMg
PSBvcHRpb25zOwogICAgICAgICBsb2FkT3B0aW9ucy5sb2FkZWRGcm9tT3BhcXVlU291cmNlID0g
bV9sb2FkZWRGcm9tT3BhcXVlU291cmNlOwotICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdChSZXNvdXJjZVJlcXVlc3QobG9hZGVyLmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKG1f
dXJsLnN0cmluZygpKSksIGxvYWRPcHRpb25zKTsKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KHJlc29sdmVkVVJMKCpsb2FkZXIuZG9jdW1lbnQo
KSkpLCBsb2FkT3B0aW9ucyk7CiAgICAgICAgIGlmIChtX2luaXRpYXRvck5hbWUuaXNFbXB0eSgp
KQogICAgICAgICAgICAgcmVxdWVzdC5zZXRJbml0aWF0b3IoY2FjaGVkUmVzb3VyY2VSZXF1ZXN0
SW5pdGlhdG9ycygpLmNzcyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlcXVlc3Quc2V0
SW5pdGlhdG9yKG1faW5pdGlhdG9yTmFtZSk7Ci0KICAgICAgICAgaWYgKG9wdGlvbnMubW9kZSA9
PSBGZXRjaE9wdGlvbnM6Ok1vZGU6OkNvcnMpIHsKICAgICAgICAgICAgIEFTU0VSVChsb2FkZXIu
ZG9jdW1lbnQoKSk7CiAgICAgICAgICAgICByZXF1ZXN0LnVwZGF0ZUZvckFjY2Vzc0NvbnRyb2wo
KmxvYWRlci5kb2N1bWVudCgpKTsKQEAgLTg5LDcgKzExOCw3IEBAIGJvb2wgQ1NTSW1hZ2VWYWx1
ZTo6dHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3QgV1RGOjpGdW5jdGlvbjxib29sIChjb25zdCBD
YWNoZWRSCiAKIGJvb2wgQ1NTSW1hZ2VWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU0ltYWdlVmFsdWUm
IG90aGVyKSBjb25zdAogewotICAgIHJldHVybiBtX3VybCA9PSBvdGhlci5tX3VybDsKKyAgICBy
ZXR1cm4gbV91cmwgPT0gb3RoZXIubV91cmwgJiYgbV9yZXNvbHZlZFVSTFN0cmluZyA9PSBvdGhl
ci5tX3Jlc29sdmVkVVJMU3RyaW5nOwogfQogCiBTdHJpbmcgQ1NTSW1hZ2VWYWx1ZTo6Y3VzdG9t
Q1NTVGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VW
YWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAppbmRleCA3ZTZiYmI5
NTE0NTMyNTI2ODM2NGM1N2NiNTY3NjIyMzcxNGI0Yjc2Li45YmEzNzY1NTVhNzY5YThkNjZjYTVl
MzgyZmI0ZWIyNWI5ZWU3YWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1h
Z2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgKQEAgLTM0
LDEwICszNCwxNSBAQCBjbGFzcyBEZXByZWNhdGVkQ1NTT01WYWx1ZTsKIGNsYXNzIENTU1N0eWxl
RGVjbGFyYXRpb247CiBjbGFzcyBSZW5kZXJFbGVtZW50OwogCituYW1lc3BhY2UgU3R5bGUgewor
Y2xhc3MgQnVpbGRlclN0YXRlOworfQorCiBjbGFzcyBDU1NJbWFnZVZhbHVlIGZpbmFsIDogcHVi
bGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENTU0ltYWdlVmFsdWU+IGNy
ZWF0ZShVUkwmJiB1cmwsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UgbG9hZGVkRnJvbU9wYXF1ZVNv
dXJjZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NJbWFnZVZhbHVlKFdURk1vdmUodXJsKSwg
bG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxDU1NJbWFnZVZhbHVl
PiBjcmVhdGUoQ2FjaGVkSW1hZ2UmIGltYWdlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENTU0lt
YWdlVmFsdWUoaW1hZ2UpKTsgfQorICAgIHN0YXRpYyBSZWY8Q1NTSW1hZ2VWYWx1ZT4gY3JlYXRl
KFVSTCYmLCBMb2FkZWRGcm9tT3BhcXVlU291cmNlKTsKKyAgICBzdGF0aWMgUmVmPENTU0ltYWdl
VmFsdWU+IGNyZWF0ZShVUkwmJiwgVVJMJiYgcmVzb2x2ZWRVUkwsIExvYWRlZEZyb21PcGFxdWVT
b3VyY2UpOworICAgIHN0YXRpYyBSZWY8Q1NTSW1hZ2VWYWx1ZT4gY3JlYXRlKENhY2hlZEltYWdl
Jik7CiAgICAgfkNTU0ltYWdlVmFsdWUoKTsKIAogICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3Q7
CkBAIC01OCwxMSArNjMsMTYgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRJbml0aWF0b3IoY29u
c3QgQXRvbVN0cmluZyYgbmFtZSkgeyBtX2luaXRpYXRvck5hbWUgPSBuYW1lOyB9CiAKKyAgICBS
ZWY8Q1NTSW1hZ2VWYWx1ZT4gdmFsdWVXaXRoU3R5bGVzUmVzb2x2ZWQoU3R5bGU6OkJ1aWxkZXJT
dGF0ZSYpOworCiBwcml2YXRlOgotICAgIENTU0ltYWdlVmFsdWUoVVJMJiYsIExvYWRlZEZyb21P
cGFxdWVTb3VyY2UpOworICAgIENTU0ltYWdlVmFsdWUoVVJMJiYsIFVSTCYmIHJlc29sdmVkVVJM
LCBMb2FkZWRGcm9tT3BhcXVlU291cmNlKTsKICAgICBleHBsaWNpdCBDU1NJbWFnZVZhbHVlKENh
Y2hlZEltYWdlJik7CiAKKyAgICBVUkwgcmVzb2x2ZWRVUkwoY29uc3QgRG9jdW1lbnQmKSBjb25z
dDsKKwogICAgIFVSTCBtX3VybDsKKyAgICBTdHJpbmcgbV9yZXNvbHZlZFVSTFN0cmluZzsKICAg
ICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gbV9jYWNoZWRJbWFnZTsKICAgICBi
b29sIG1fYWNjZXNzZWRJbWFnZTsKICAgICBBdG9tU3RyaW5nIG1faW5pdGlhdG9yTmFtZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKaW5kZXgg
Njg0NTIzNzg2OTMyNjA4NmNiY2FlMGVkOTRkYmMzYTU2ZGViNTJmNS4uNTNkMTI4OTJjOTZlMTZl
MDU2MTIxNzY1MDlmMGRkNmFjYjhlNWVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTIyNTgsMjIgKzIyNTgsMjAgQEAgc3RhdGlj
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVJ4T3JSeShDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSwgQ1NTUGEKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVDdXJzb3Io
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRl
eHQsIGJvb2wgaW5RdWlya3NNb2RlKQogewogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3Q7
Ci0gICAgd2hpbGUgKFJlZlB0cjxDU1NWYWx1ZT4gaW1hZ2UgPSBjb25zdW1lSW1hZ2UocmFuZ2Us
IGNvbnRleHQsIHsgQWxsb3dlZEltYWdlVHlwZTo6VVJMRnVuY3Rpb24sIEFsbG93ZWRJbWFnZVR5
cGU6OkltYWdlU2V0IH0pKSB7Ci0gICAgICAgIEludFBvaW50IGhvdFNwb3QoLTEsIC0xKTsKLSAg
ICAgICAgYm9vbCBob3RTcG90U3BlY2lmaWVkID0gZmFsc2U7CisgICAgd2hpbGUgKGF1dG8gaW1h
Z2UgPSBjb25zdW1lSW1hZ2UocmFuZ2UsIGNvbnRleHQsIHsgQWxsb3dlZEltYWdlVHlwZTo6VVJM
RnVuY3Rpb24sIEFsbG93ZWRJbWFnZVR5cGU6OkltYWdlU2V0IH0pKSB7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3Q7CiAgICAgICAgIGlmIChhdXRvIHggPSBjb25zdW1l
TnVtYmVyUmF3KHJhbmdlKSkgewotICAgICAgICAgICAgaG90U3BvdC5zZXRYKHN0YXRpY19jYXN0
PGludD4oKngpKTsKICAgICAgICAgICAgIGF1dG8geSA9IGNvbnN1bWVOdW1iZXJSYXcocmFuZ2Up
OwogICAgICAgICAgICAgaWYgKCF5KQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgICAgICAgICAgaG90U3BvdC5zZXRZKHN0YXRpY19jYXN0PGludD4oKnkpKTsKLSAgICAgICAg
ICAgIGhvdFNwb3RTcGVjaWZpZWQgPSB0cnVlOworICAgICAgICAgICAgLy8gRklYTUU6IFNob3Vs
ZCB3ZSBjbGFtcCBvciByb3VuZCBpbnN0ZWFkIG9mIGp1c3QgY2FzdGluZyBmcm9tIGRvdWJsZSB0
byBpbnQ/CisgICAgICAgICAgICBob3RTcG90ID0gSW50UG9pbnQgeyBzdGF0aWNfY2FzdDxpbnQ+
KCp4KSwgc3RhdGljX2Nhc3Q8aW50PigqeSkgfTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgh
bGlzdCkKICAgICAgICAgICAgIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJh
dGVkKCk7CiAKLSAgICAgICAgbGlzdC0+YXBwZW5kKENTU0N1cnNvckltYWdlVmFsdWU6OmNyZWF0
ZShpbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCBob3RTcG90U3BlY2lmaWVkLCBob3RTcG90LCBjb250
ZXh0LmlzQ29udGVudE9wYXF1ZSA/IExvYWRlZEZyb21PcGFxdWVTb3VyY2U6OlllcyA6IExvYWRl
ZEZyb21PcGFxdWVTb3VyY2U6Ok5vKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NDdXJzb3JJ
bWFnZVZhbHVlOjpjcmVhdGUoaW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgaG90U3BvdCwgY29udGV4
dC5pc0NvbnRlbnRPcGFxdWUgPyBMb2FkZWRGcm9tT3BhcXVlU291cmNlOjpZZXMgOiBMb2FkZWRG
cm9tT3BhcXVlU291cmNlOjpObykpOwogICAgICAgICBpZiAoIWNvbnN1bWVDb21tYUluY2x1ZGlu
Z1doaXRlc3BhY2UocmFuZ2UpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpA
QCAtNDY5NCwxMiArNDY5MiwxOSBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lQ291
bnRlclN0eWxlQWRkaXRpdmVTeW1ib2xzKENTU1BhcnNlclRva2VuUmFuZ2UmCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgbGFzdEludGVnZXIgPSBp
bnRlZ2VyOwotICAgICAgICB2YWx1ZXMtPmFwcGVuZChpbnRlZ2VyLnJlbGVhc2VOb25OdWxsKCkp
OwotICAgICAgICB2YWx1ZXMtPmFwcGVuZChzeW1ib2wucmVsZWFzZU5vbk51bGwoKSk7CisgICAg
ICAgIGlmIChpbnRlZ2VyICYmIHN5bWJvbCkgeworICAgICAgICAgICAgYXV0byBwYWlyID0gQ1NT
VmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAgICAgICAgcGFpci0+YXBw
ZW5kKGludGVnZXIucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgICAgICBwYWlyLT5hcHBlbmQo
c3ltYm9sLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQoV1RG
TW92ZShwYWlyKSk7CisgICAgICAgIH0gZWxzZSBpZiAoaW50ZWdlcikKKyAgICAgICAgICAgIHZh
bHVlcy0+YXBwZW5kKGludGVnZXIucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHZhbHVlcy0+YXBwZW5kKHN5bWJvbC5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9
IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSk7CiAgICAgaWYg
KCFyYW5nZS5hdEVuZCgpIHx8ICF2YWx1ZXMtPmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICByZXR1cm4gdmFsdWVzOworICAgIHJldHVybiBXVEZNb3ZlKHZhbHVlcyk7CiB9
CiAKIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtY291bnRlci1zdHlsZXMtMy8jY291bnRl
ci1zdHlsZS1zcGVhay1hcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCmluZGV4IDg2MDdiMDg0YTg0MjYwMGE0MjhmYTE1
MjU5ZjBjZTI3NTNmZTA0MTIuLmVjNGU5ODM0Y2VjN2U4YTNlNWNhNTUzNjFlM2JkNDVmMmQwODAy
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJz
ZXJIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5
UGFyc2VySGVscGVycy5jcHAKQEAgLTM0OTksOCArMzQ5OSw4IEBAIFJlZlB0cjxDU1NTaGFkb3dW
YWx1ZT4gY29uc3VtZVNpbmdsZVNoYWRvdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29u
c3QgQ1NTCiBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVJbWFnZShDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgT3B0aW9uU2V0PEFsbG93
ZWRJbWFnZVR5cGU+IGFsbG93ZWRJbWFnZVR5cGVzKQogewogICAgIGlmICgocmFuZ2UucGVlaygp
LnR5cGUoKSA9PSBTdHJpbmdUb2tlbikgJiYgKGFsbG93ZWRJbWFnZVR5cGVzLmNvbnRhaW5zKEFs
bG93ZWRJbWFnZVR5cGU6OlJhd1N0cmluZ0FzVVJMKSkpIHsKLSAgICAgICAgYXV0byB1cmxTdHJp
bmdWaWV3ID0gcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1ZSgpOwotICAg
ICAgICByZXR1cm4gQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKGNvbXBsZXRlVVJMKGNvbnRleHQsIHVy
bFN0cmluZ1ZpZXcudG9BdG9tU3RyaW5nKCkpLCBjb250ZXh0LmlzQ29udGVudE9wYXF1ZSA/IExv
YWRlZEZyb21PcGFxdWVTb3VyY2U6OlllcyA6IExvYWRlZEZyb21PcGFxdWVTb3VyY2U6Ok5vKTsK
KyAgICAgICAgYXV0byB1cmxTdHJpbmcgPSByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFj
ZSgpLnZhbHVlKCkudG9BdG9tU3RyaW5nKCkuc3RyaW5nKCk7CisgICAgICAgIHJldHVybiBDU1NJ
bWFnZVZhbHVlOjpjcmVhdGUoeyB7IH0sIHVybFN0cmluZyB9LCBjb250ZXh0LmNvbXBsZXRlVVJM
KHVybFN0cmluZyksIGNvbnRleHQuaXNDb250ZW50T3BhcXVlID8gTG9hZGVkRnJvbU9wYXF1ZVNv
dXJjZTo6WWVzIDogTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZTo6Tm8pOwogICAgIH0KIAogICAgIGlm
IChyYW5nZS5wZWVrKCkudHlwZSgpID09IEZ1bmN0aW9uVG9rZW4pIHsKQEAgLTM1MTcsOSArMzUx
NywxMCBAQCBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVJbWFnZShDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dAogICAgIH0KIAogICAgIGlmIChhbGxvd2Vk
SW1hZ2VUeXBlcy5jb250YWlucyhBbGxvd2VkSW1hZ2VUeXBlOjpVUkxGdW5jdGlvbikpIHsKLSAg
ICAgICAgYXV0byB1cmkgPSBjb25zdW1lVXJsQXNTdHJpbmdWaWV3KHJhbmdlKTsKLSAgICAgICAg
aWYgKCF1cmkuaXNOdWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gQ1NTSW1hZ2VWYWx1ZTo6Y3Jl
YXRlKGNvbXBsZXRlVVJMKGNvbnRleHQsIHVyaS50b0F0b21TdHJpbmcoKSksIGNvbnRleHQuaXND
b250ZW50T3BhcXVlID8gTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZTo6WWVzIDogTG9hZGVkRnJvbU9w
YXF1ZVNvdXJjZTo6Tm8pOworICAgICAgICBpZiAoYXV0byB1cmxTdHJpbmdWaWV3ID0gY29uc3Vt
ZVVybEFzU3RyaW5nVmlldyhyYW5nZSk7ICF1cmxTdHJpbmdWaWV3LmlzTnVsbCgpKSB7CisgICAg
ICAgICAgICBhdXRvIHVybFN0cmluZyA9IHVybFN0cmluZ1ZpZXcudG9BdG9tU3RyaW5nKCkuc3Ry
aW5nKCk7CisgICAgICAgICAgICByZXR1cm4gQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKHsgeyB9LCB1
cmxTdHJpbmcgfSwgY29udGV4dC5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpLCBjb250ZXh0LmlzQ29u
dGVudE9wYXF1ZSA/IExvYWRlZEZyb21PcGFxdWVTb3VyY2U6OlllcyA6IExvYWRlZEZyb21PcGFx
dWVTb3VyY2U6Ok5vKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmggYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaAppbmRleCBmNmU2ZjdhODI3
MDc5ZDY0ZjczZTgxNjA2YzFjNjdkODM2NGY5ZGYwLi5kNzE3OWEwZWJlNzQ5ZTc2N2Q4MjNlZWY1
NDgxN2YyZjE1ZGI5YWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1
aWxkZXJDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0
b20uaApAQCAtMTUzOCwxOSArMTUzOCwxOSBAQCBpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9tOjph
cHBseVZhbHVlQ29udGVudChCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdQogICAg
IGZvciAoYXV0byYgaXRlbSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7CiAgICAg
ICAgIGlmIChpczxDU1NJbWFnZUdlbmVyYXRvclZhbHVlPihpdGVtKSkgewogICAgICAgICAgICAg
aWYgKGlzPENTU0dyYWRpZW50VmFsdWU+KGl0ZW0pKQotICAgICAgICAgICAgICAgIGJ1aWxkZXJT
dGF0ZS5zdHlsZSgpLnNldENvbnRlbnQoU3R5bGVHZW5lcmF0ZWRJbWFnZTo6Y3JlYXRlKGRvd25j
YXN0PENTU0dyYWRpZW50VmFsdWU+KGl0ZW0uZ2V0KCkpLmdyYWRpZW50V2l0aFN0eWxlc1Jlc29s
dmVkKGJ1aWxkZXJTdGF0ZSkpLCBkaWRTZXQpOworICAgICAgICAgICAgICAgIGJ1aWxkZXJTdGF0
ZS5zdHlsZSgpLnNldENvbnRlbnQoU3R5bGVHZW5lcmF0ZWRJbWFnZTo6Y3JlYXRlKGRvd25jYXN0
PENTU0dyYWRpZW50VmFsdWU+KGJ1aWxkZXJTdGF0ZS5yZXNvbHZlSW1hZ2VTdHlsZXMoaXRlbS5n
ZXQoKSkuZ2V0KCkpKSwgZGlkU2V0KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRDb250ZW50KFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNy
ZWF0ZShkb3duY2FzdDxDU1NJbWFnZUdlbmVyYXRvclZhbHVlPihpdGVtLmdldCgpKSksIGRpZFNl
dCk7CisgICAgICAgICAgICAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0Q29udGVudChTdHls
ZUdlbmVyYXRlZEltYWdlOjpjcmVhdGUoZG93bmNhc3Q8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZT4o
YnVpbGRlclN0YXRlLnJlc29sdmVJbWFnZVN0eWxlcyhpdGVtLmdldCgpKS5nZXQoKSkpLCBkaWRT
ZXQpOwogICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICAKKwog
ICAgICAgICBpZiAoaXM8Q1NTSW1hZ2VTZXRWYWx1ZT4oaXRlbSkpIHsKLSAgICAgICAgICAgIGJ1
aWxkZXJTdGF0ZS5zdHlsZSgpLnNldENvbnRlbnQoU3R5bGVJbWFnZVNldDo6Y3JlYXRlKGRvd25j
YXN0PENTU0ltYWdlU2V0VmFsdWU+KGl0ZW0uZ2V0KCkpLmltYWdlU2V0V2l0aFN0eWxlc1Jlc29s
dmVkKGJ1aWxkZXJTdGF0ZSkpLCBkaWRTZXQpOworICAgICAgICAgICAgYnVpbGRlclN0YXRlLnN0
eWxlKCkuc2V0Q29udGVudChTdHlsZUltYWdlU2V0OjpjcmVhdGUoZG93bmNhc3Q8Q1NTSW1hZ2VT
ZXRWYWx1ZT4oYnVpbGRlclN0YXRlLnJlc29sdmVJbWFnZVN0eWxlcyhpdGVtLmdldCgpKS5nZXQo
KSkpLCBkaWRTZXQpOwogICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmIChpczxDU1NJbWFnZVZhbHVlPihpdGVtKSkgewotICAgICAgICAgICAgYnVpbGRl
clN0YXRlLnN0eWxlKCkuc2V0Q29udGVudChTdHlsZUNhY2hlZEltYWdlOjpjcmVhdGUoZG93bmNh
c3Q8Q1NTSW1hZ2VWYWx1ZT4oaXRlbS5nZXQoKSkpLCBkaWRTZXQpOworICAgICAgICAgICAgYnVp
bGRlclN0YXRlLnN0eWxlKCkuc2V0Q29udGVudChTdHlsZUNhY2hlZEltYWdlOjpjcmVhdGUoZG93
bmNhc3Q8Q1NTSW1hZ2VWYWx1ZT4oYnVpbGRlclN0YXRlLnJlc29sdmVJbWFnZVN0eWxlcyhpdGVt
LmdldCgpKS5nZXQoKSkpLCBkaWRTZXQpOwogICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZUJ1aWxkZXJTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZUJ1aWxkZXJTdGF0ZS5jcHAKaW5kZXggYzY2YzhiMjdhNjVhODQ0YjY3NGVmMWVlYTBmOGFmYWEw
MjMzM2VlYi4uYjQyMjlhMTEwMDk2NmZhYjBkYTkzZmZjZmM3YTdiZjYzMDVmMDRiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyU3RhdGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlclN0YXRlLmNwcApAQCAtMzAsNiArMzAsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN0eWxlQnVpbGRlclN0YXRlLmgiCiAK
KyNpbmNsdWRlICJDU1NDcm9zc2ZhZGVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0N1cnNvckltYWdl
VmFsdWUuaCIKICNpbmNsdWRlICJDU1NGaWx0ZXJJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NT
Rm9udFNlbGVjdG9yLmgiCkBAIC00MSw3ICs0Miw2IEBACiAjaW5jbHVkZSAiRm9udENhY2hlLmgi
CiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgotI2lu
Y2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdHlsZUJ1aWxkZXIuaCIKQEAgLTg0LDMzICs4NCwz
MSBAQCBib29sIEJ1aWxkZXJTdGF0ZTo6dXNlU1ZHWm9vbVJ1bGVzRm9yTGVuZ3RoKCkgY29uc3QK
IAogUmVmPENTU1ZhbHVlPiBCdWlsZGVyU3RhdGU6OnJlc29sdmVJbWFnZVN0eWxlcyhDU1NWYWx1
ZSYgdmFsdWUpCiB7CisgICAgaWYgKGlzPENTU0Nyb3NzZmFkZVZhbHVlPih2YWx1ZSkpCisgICAg
ICAgIHJldHVybiBkb3duY2FzdDxDU1NDcm9zc2ZhZGVWYWx1ZT4odmFsdWUpLnZhbHVlV2l0aFN0
eWxlc1Jlc29sdmVkKCp0aGlzKTsKKyAgICBpZiAoaXM8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZT4odmFs
dWUpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZT4odmFsdWUp
LnZhbHVlV2l0aFN0eWxlc1Jlc29sdmVkKCp0aGlzKTsKKyAgICBpZiAoaXM8Q1NTRmlsdGVySW1h
Z2VWYWx1ZT4odmFsdWUpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTRmlsdGVySW1hZ2VW
YWx1ZT4odmFsdWUpLnZhbHVlV2l0aFN0eWxlc1Jlc29sdmVkKCp0aGlzKTsKICAgICBpZiAoaXM8
Q1NTR3JhZGllbnRWYWx1ZT4odmFsdWUpKQotICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTR3Jh
ZGllbnRWYWx1ZT4odmFsdWUpLmdyYWRpZW50V2l0aFN0eWxlc1Jlc29sdmVkKCp0aGlzKTsKLQor
ICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTR3JhZGllbnRWYWx1ZT4odmFsdWUpLnZhbHVlV2l0
aFN0eWxlc1Jlc29sdmVkKCp0aGlzKTsKICAgICBpZiAoaXM8Q1NTSW1hZ2VTZXRWYWx1ZT4odmFs
dWUpKQotICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTSW1hZ2VTZXRWYWx1ZT4odmFsdWUpLmlt
YWdlU2V0V2l0aFN0eWxlc1Jlc29sdmVkKCp0aGlzKTsKLQotICAgIC8vIENyZWF0aW5nIGZpbHRl
ciBvcGVyYXRpb25zIGRvZXNuJ3QgY3JlYXRlIGEgbmV3IENTU1ZhbHVlIHJlZmVyZW5jZS4KLSAg
ICBpZiAoaXM8Q1NTRmlsdGVySW1hZ2VWYWx1ZT4odmFsdWUpKQotICAgICAgICBkb3duY2FzdDxD
U1NGaWx0ZXJJbWFnZVZhbHVlPih2YWx1ZSkuY3JlYXRlRmlsdGVyT3BlcmF0aW9ucygqdGhpcyk7
Ci0KKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0ltYWdlU2V0VmFsdWU+KHZhbHVlKS52YWx1
ZVdpdGhTdHlsZXNSZXNvbHZlZCgqdGhpcyk7CisgICAgaWYgKGlzPENTU0ltYWdlVmFsdWU+KHZh
bHVlKSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0ltYWdlVmFsdWU+KHZhbHVlKS52YWx1
ZVdpdGhTdHlsZXNSZXNvbHZlZCgqdGhpcyk7CiAgICAgcmV0dXJuIG1ha2VSZWYodmFsdWUpOwog
fQogCiBSZWZQdHI8U3R5bGVJbWFnZT4gQnVpbGRlclN0YXRlOjpjcmVhdGVTdHlsZUltYWdlKENT
U1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTSW1hZ2VWYWx1ZT4odmFsdWUpKQotICAg
ICAgICByZXR1cm4gU3R5bGVDYWNoZWRJbWFnZTo6Y3JlYXRlKGRvd25jYXN0PENTU0ltYWdlVmFs
dWU+KHZhbHVlKSk7Ci0KKyAgICAgICAgcmV0dXJuIFN0eWxlQ2FjaGVkSW1hZ2U6OmNyZWF0ZShk
b3duY2FzdDxDU1NJbWFnZVZhbHVlPihyZXNvbHZlSW1hZ2VTdHlsZXModmFsdWUpLmdldCgpKSk7
CiAgICAgaWYgKGlzPENTU0N1cnNvckltYWdlVmFsdWU+KHZhbHVlKSkKLSAgICAgICAgcmV0dXJu
IFN0eWxlQ3Vyc29ySW1hZ2U6OmNyZWF0ZShkb3duY2FzdDxDU1NDdXJzb3JJbWFnZVZhbHVlPih2
YWx1ZSkpOwotCisgICAgICAgIHJldHVybiBTdHlsZUN1cnNvckltYWdlOjpjcmVhdGUoZG93bmNh
c3Q8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZT4ocmVzb2x2ZUltYWdlU3R5bGVzKHZhbHVlKS5nZXQoKSkp
OwogICAgIGlmIChpczxDU1NJbWFnZUdlbmVyYXRvclZhbHVlPih2YWx1ZSkpCiAgICAgICAgIHJl
dHVybiBTdHlsZUdlbmVyYXRlZEltYWdlOjpjcmVhdGUoZG93bmNhc3Q8Q1NTSW1hZ2VHZW5lcmF0
b3JWYWx1ZT4ocmVzb2x2ZUltYWdlU3R5bGVzKHZhbHVlKS5nZXQoKSkpOwotICAgIAogICAgIGlm
IChpczxDU1NJbWFnZVNldFZhbHVlPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiBTdHlsZUltYWdl
U2V0OjpjcmVhdGUoZG93bmNhc3Q8Q1NTSW1hZ2VTZXRWYWx1ZT4ocmVzb2x2ZUltYWdlU3R5bGVz
KHZhbHVlKS5nZXQoKSkpOwotCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxNmMz
MmM0OWFiNmZlMzEwOTFhNjkwYWQwMDEzOWM5ZWQ2MmEwZmIwLi5jYzFlNTcwNTBjMGMyYzEyNzU2
N2NkZmNmMzU1MzM0N2VmZTViYWJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMDYtMDkg
IERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBDU1Mgc2VyaWFs
aXphdGlvbiBpc3N1ZXMgYWZmZWN0aW5nIGNzcy1jb3VudGVyLXN0eWxlcyB0ZXN0cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NzA4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Nzcy9wYXJz
ZS1ib3JkZXItaW1hZ2UtcmVwZWF0LW51bGwtY3Jhc2gtZXhwZWN0ZWQudHh0OiBVcGRhdGUgdG8g
cmVmbGVjdCBjb3JyZWN0CisgICAgICAgIHBhdGg7IG5vdCByZWFsbHkgcmVsZXZhbnQgdG8gd2hh
dCB3YXMgYmVpbmcgdGVzdGVkIGhlcmUuCisKKyAgICAgICAgKiBmYXN0L2Nzcy91cmktdG9rZW4t
cGFyc2luZy1leHBlY3RlZC50eHQ6IFVwZGF0ZWQgdG8gYmVoYXZpb3IgdGhhdCBub3cgbWF0Y2hl
cyBGaXJlZm94LgorICAgICAgICAqIGZhc3QvY3NzL3VyaS10b2tlbi1wYXJzaW5nLmh0bWw6IERp
dHRvLgorCisgICAgICAgICogZmFzdC9pbm5lckhUTUwvaW5uZXJIVE1MLXVyaS1yZXNvbHV0aW9u
Lmh0bWw6IFVwZGF0ZWQgdGVzdCB0byB1c2UgY29tcHV0ZWQgc3R5bGUgc28KKyAgICAgICAgaXQg
bm8gbG9uZ2VyIGRlcGVuZHMgb24gV2ViS2l0LW9ubHkgYmVoYXZpb3IgdG8gcnVuIGNvcnJlY3Rs
eS4KKwogMjAyMS0wNi0wNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgSGFuZGxlIGN1c3RvbSBpZGVudGlmaWVycyBhbmQgc3RyaW5ncyBzZXBhcmF0ZWx5LCBzbyB3
ZSBjYW4gcXVvdGUgc3RyaW5ncyBjb3JyZWN0bHkgY29uc2lzdGVudGx5CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZwppbmRleCBhYzJmNTRjMTliYjRmY2VjMmE1NzkwMGNlZGM0NTI2OWQ3YjJl
ZjU3Li4xYmM3NTllM2U4ZTAyMmZhMGFlYjE3N2I3NjFkOWZiMjA5ODAzYjA0IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wNi0wOSAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IENTUyBzZXJpYWxpemF0aW9u
IGlzc3VlcyBhZmZlY3RpbmcgY3NzLWNvdW50ZXItc3R5bGVzIHRlc3RzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY3MDgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLWNvdW50ZXItc3R5bGVzL2NvdW50ZXItc3R5bGUtYWRkaXRpdmUtc3ltYm9scy1zeW50
YXgtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNv
dW50ZXItc3R5bGVzL2NvdW50ZXItc3R5bGUtc3ltYm9scy1zeW50YXgtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXN5bnRheC91cmwtd2hpdGVzcGFj
ZS1jb25zdW1wdGlvbi1leHBlY3RlZC50eHQ6CisgICAgICAgIFVwZGF0ZWQgdG8gcmVmbGVjdCBw
cm9ncmVzc2lvbnMuCisKIDIwMjEtMDYtMDYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIEhhbmRsZSBjdXN0b20gaWRlbnRpZmllcnMgYW5kIHN0cmluZ3Mgc2VwYXJh
dGVseSwgc28gd2UgY2FuIHF1b3RlIHN0cmluZ3MgY29ycmVjdGx5IGNvbnNpc3RlbnRseQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2UtYm9yZGVyLWltYWdlLXJlcGVhdC1u
dWxsLWNyYXNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BhcnNlLWJvcmRl
ci1pbWFnZS1yZXBlYXQtbnVsbC1jcmFzaC1leHBlY3RlZC50eHQKaW5kZXggYzAyMmY5ODE0ZGJl
ZGE5NzE4NDI1N2NhMDU0YzEzMGQ0YTk2ODkzMS4uZTllYTU0MGEyM2Q1ZWEwODFhNzZjNzRmMGYz
MDJkYWYyMjBjY2JlOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2UtYm9y
ZGVyLWltYWdlLXJlcGVhdC1udWxsLWNyYXNoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy9wYXJzZS1ib3JkZXItaW1hZ2UtcmVwZWF0LW51bGwtY3Jhc2gtZXhwZWN0ZWQu
dHh0CkBAIC0xLDIgKzEsMiBAQAotQ09OU09MRSBNRVNTQUdFOiBib3JkZXItaW1hZ2Utc291cmNl
OiB1cmwoInNoYWRvdy1ib3JkZXIucG5nIik7IGJvcmRlci1pbWFnZS1zbGljZTogMTA7IGJvcmRl
ci1pbWFnZS1yZXBlYXQ6IHN0cmV0Y2g7CitDT05TT0xFIE1FU1NBR0U6IGJvcmRlci1pbWFnZS1z
b3VyY2U6IHVybCgiaW1hZ2VzL3NoYWRvdy1ib3JkZXIucG5nIik7IGJvcmRlci1pbWFnZS1zbGlj
ZTogMTA7IGJvcmRlci1pbWFnZS1yZXBlYXQ6IHN0cmV0Y2g7CiBUaGlzIHRlc3Qgc2hvdWxkIG5v
dCBjcmFzaApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdXJpLXRva2VuLXBhcnNp
bmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdXJpLXRva2VuLXBhcnNpbmct
ZXhwZWN0ZWQudHh0CmluZGV4IDljYzBlNDM4NmI1Mjc1MjQwZWZjZWE5NDk4NzQ4ZWVhMzIxMGEx
NzMuLjdiNWI0OGYzYjExODA1OTU1Y2M4NDQwMjZkNzMyZjNlZTFhM2Q5NWMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvY3NzL3VyaS10b2tlbi1wYXJzaW5nLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy91cmktdG9rZW4tcGFyc2luZy1leHBlY3RlZC50eHQKQEAg
LTksMTQgKzksMTQgQEAgUnVsZXMgZnJvbSB0aGUgc3R5bGVzaGVldDoKICNjIHsgY29udGVudDog
dXJsKCJlIik7IH0KICNkIHsgY29udGVudDogdXJsKCJmIik7IH0KICNmIHsgY29udGVudDogdXJs
KCJjIik7IH0KLSNnIHsgY29udGVudDogdXJsKCJkIik7IH0KLSNoIHsgY29udGVudDogdXJsKCJl
Iik7IH0KLSNpIHsgY29udGVudDogdXJsKCJmIik7IH0KKyNnIHsgY29udGVudDogdXJsKCIgZCIp
OyB9CisjaCB7IGNvbnRlbnQ6IHVybCgiZSAiKTsgfQorI2kgeyBjb250ZW50OiB1cmwoIiBmICIp
OyB9CiAjaiB7IGNvbnRlbnQ6IHVybCgidXJsKGcpIik7IH0KICNsIHsgY29udGVudDogdXJsKCJj
Iik7IH0KLSNtIHsgY29udGVudDogdXJsKCJkIik7IH0KLSNuIHsgY29udGVudDogdXJsKCJlIik7
IH0KLSNvIHsgY29udGVudDogdXJsKCJmIik7IH0KKyNtIHsgY29udGVudDogdXJsKCIgZCIpOyB9
CisjbiB7IGNvbnRlbnQ6IHVybCgiZSAiKTsgfQorI28geyBjb250ZW50OiB1cmwoIiBmICIpOyB9
CiAjcCB7IGNvbnRlbnQ6IHVybCgidXJsKGcpIik7IH0KICNxIHsgY3Vyc29yOiB1cmwoInVybChx
KSIpLCBkZWZhdWx0OyB9CiAjciB7IGxpc3Qtc3R5bGUtaW1hZ2U6IHVybCgidXJsKHIpIik7IH0K
QEAgLTI0LDkgKzI0LDkgQEAgUnVsZXMgZnJvbSB0aGUgc3R5bGVzaGVldDoKICN0IHsgLXdlYmtp
dC1tYXNrLWltYWdlOiB1cmwoInVybCh0KSIpOyB9CiAjdSB7IC13ZWJraXQtYm9yZGVyLWltYWdl
OiB1cmwoInVybCh1KSIpIDEgMiAzIDQgZmlsbCBzdHJldGNoIHJvdW5kOyB9CiAjdiB7IC13ZWJr
aXQtbWFzay1ib3gtaW1hZ2U6IHVybCgidXJsKHYpIikgMSAyIDMgNCBmaWxsIHN0cmV0Y2ggcm91
bmQ7IH0KLSN3IHsgY29udGVudDogdXJsKCJ3dyIpOyB9Ci0jeCB7IGNvbnRlbnQ6IHVybCgieCUy
MHh4Iik7IH0KLSN5IHsgY29udGVudDogdXJsKCJ5JTIweXkiKTsgfQorI3cgeyBjb250ZW50OiB1
cmwoIndcZCB3Iik7IH0KKyN4IHsgY29udGVudDogdXJsKCIgeCB4XDkgeCAiKTsgfQorI3kgeyBj
b250ZW50OiB1cmwoInkgeVw5IHkiKTsgfQogRXhwZWN0ZWQgcmVzdWx0OgogCiAjYSB7IGNvbnRl
bnQ6IHVybCgiYyIpOyB9CkBAIC0zNCwxNCArMzQsMTQgQEAgRXhwZWN0ZWQgcmVzdWx0OgogI2Mg
eyBjb250ZW50OiB1cmwoImUiKTsgfQogI2QgeyBjb250ZW50OiB1cmwoImYiKTsgfQogI2YgeyBj
b250ZW50OiB1cmwoImMiKTsgfQotI2cgeyBjb250ZW50OiB1cmwoImQiKTsgfQotI2ggeyBjb250
ZW50OiB1cmwoImUiKTsgfQotI2kgeyBjb250ZW50OiB1cmwoImYiKTsgfQorI2cgeyBjb250ZW50
OiB1cmwoIiBkIik7IH0KKyNoIHsgY29udGVudDogdXJsKCJlICIpOyB9CisjaSB7IGNvbnRlbnQ6
IHVybCgiIGYgIik7IH0KICNqIHsgY29udGVudDogdXJsKCJ1cmwoZykiKTsgfQogI2wgeyBjb250
ZW50OiB1cmwoImMiKTsgfQotI20geyBjb250ZW50OiB1cmwoImQiKTsgfQotI24geyBjb250ZW50
OiB1cmwoImUiKTsgfQotI28geyBjb250ZW50OiB1cmwoImYiKTsgfQorI20geyBjb250ZW50OiB1
cmwoIiBkIik7IH0KKyNuIHsgY29udGVudDogdXJsKCJlICIpOyB9CisjbyB7IGNvbnRlbnQ6IHVy
bCgiIGYgIik7IH0KICNwIHsgY29udGVudDogdXJsKCJ1cmwoZykiKTsgfQogI3EgeyBjdXJzb3I6
IHVybCgidXJsKHEpIiksIGRlZmF1bHQ7IH0KICNyIHsgbGlzdC1zdHlsZS1pbWFnZTogdXJsKCJ1
cmwocikiKTsgfQpAQCAtNDksNyArNDksNyBAQCBFeHBlY3RlZCByZXN1bHQ6CiAjdCB7IC13ZWJr
aXQtbWFzay1pbWFnZTogdXJsKCJ1cmwodCkiKTsgfQogI3UgeyAtd2Via2l0LWJvcmRlci1pbWFn
ZTogdXJsKCJ1cmwodSkiKSAxIDIgMyA0IGZpbGwgc3RyZXRjaCByb3VuZDsgfQogI3YgeyAtd2Vi
a2l0LW1hc2stYm94LWltYWdlOiB1cmwoInVybCh2KSIpIDEgMiAzIDQgZmlsbCBzdHJldGNoIHJv
dW5kOyB9Ci0jdyB7IGNvbnRlbnQ6IHVybCgid3ciKTsgfQotI3ggeyBjb250ZW50OiB1cmwoIngl
MjB4eCIpOyB9Ci0jeSB7IGNvbnRlbnQ6IHVybCgieSUyMHl5Iik7IH0KKyN3IHsgY29udGVudDog
dXJsKCJ3XGQgdyIpOyB9CisjeCB7IGNvbnRlbnQ6IHVybCgiIHggeFw5IHggIik7IH0KKyN5IHsg
Y29udGVudDogdXJsKCJ5IHlcOSB5Iik7IH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9jc3MvdXJpLXRva2VuLXBhcnNpbmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3VyaS10
b2tlbi1wYXJzaW5nLmh0bWwKaW5kZXggNjc3YzlkMTUzNGVkNzI2NWFhMjNhMWIwMGZhZDIzNTI2
OTJmNWE3ZC4uNjFlNTcyMTI4MmI4NTUzYWJmYWNiM2MwNzIzMTg1MzI3ODRmNzUyMyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdXJpLXRva2VuLXBhcnNpbmcuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy91cmktdG9rZW4tcGFyc2luZy5odG1sCkBAIC00NCwxMyArNDQs
NyBAQCBmdW5jdGlvbiBydW5UZXN0KCkKICAgICB2YXIgcnVsZXMgPSBkb2N1bWVudC5zdHlsZVNo
ZWV0c1swXS5jc3NSdWxlczsKICAgICB2YXIgdGV4dCA9ICIiOwogICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgcnVsZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgdmFyIGl0ZW1UZXh0ID0gcnVsZXMu
aXRlbShpKS5jc3NUZXh0OwotCi0gICAgICAgIC8vIFdvcmsgYXJvdW5kIGJ1ZyB3aGVyZSBXZWJL
aXQgY29tcGxldGVzIHRoZSBVUkxzIGluIHRoZSBDU1MgRE9NLgotICAgICAgICAvLyBUaGUgY29t
cGxldGlvbiBvZiB0aGUgVVJMIHNob3VsZCBiZSB3aGVuIHRoZXkgYXJlIHVzZWQsIG5vdCBpbiB0
aGUgRE9NLgotICAgICAgICBpdGVtVGV4dCA9IGl0ZW1UZXh0LnJlcGxhY2UoL2ZpbGU6LipMYXlv
dXRUZXN0c1wvZmFzdFwvY3NzXC8vLCAiIik7Ci0KLSAgICAgICAgdGV4dCArPSBpdGVtVGV4dDsK
KyAgICAgICAgdGV4dCArPSBydWxlcy5pdGVtKGkpLmNzc1RleHQ7CiAgICAgICAgIHRleHQgKz0g
IlxuIjsKICAgICB9CiAKQEAgLTgzLDE0ICs3NywxNCBAQCBmdW5jdGlvbiBydW5UZXN0KCkKICNj
IHsgY29udGVudDogdXJsKCJlIik7IH0KICNkIHsgY29udGVudDogdXJsKCJmIik7IH0KICNmIHsg
Y29udGVudDogdXJsKCJjIik7IH0KLSNnIHsgY29udGVudDogdXJsKCJkIik7IH0KLSNoIHsgY29u
dGVudDogdXJsKCJlIik7IH0KLSNpIHsgY29udGVudDogdXJsKCJmIik7IH0KKyNnIHsgY29udGVu
dDogdXJsKCIgZCIpOyB9CisjaCB7IGNvbnRlbnQ6IHVybCgiZSAiKTsgfQorI2kgeyBjb250ZW50
OiB1cmwoIiBmICIpOyB9CiAjaiB7IGNvbnRlbnQ6IHVybCgidXJsKGcpIik7IH0KICNsIHsgY29u
dGVudDogdXJsKCJjIik7IH0KLSNtIHsgY29udGVudDogdXJsKCJkIik7IH0KLSNuIHsgY29udGVu
dDogdXJsKCJlIik7IH0KLSNvIHsgY29udGVudDogdXJsKCJmIik7IH0KKyNtIHsgY29udGVudDog
dXJsKCIgZCIpOyB9CisjbiB7IGNvbnRlbnQ6IHVybCgiZSAiKTsgfQorI28geyBjb250ZW50OiB1
cmwoIiBmICIpOyB9CiAjcCB7IGNvbnRlbnQ6IHVybCgidXJsKGcpIik7IH0KICNxIHsgY3Vyc29y
OiB1cmwoInVybChxKSIpLCBkZWZhdWx0OyB9CiAjciB7IGxpc3Qtc3R5bGUtaW1hZ2U6IHVybCgi
dXJsKHIpIik7IH0KQEAgLTk4LDkgKzkyLDkgQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAjdCB7IC13
ZWJraXQtbWFzay1pbWFnZTogdXJsKCJ1cmwodCkiKTsgfQogI3UgeyAtd2Via2l0LWJvcmRlci1p
bWFnZTogdXJsKCJ1cmwodSkiKSAxIDIgMyA0IGZpbGwgc3RyZXRjaCByb3VuZDsgfQogI3YgeyAt
d2Via2l0LW1hc2stYm94LWltYWdlOiB1cmwoInVybCh2KSIpIDEgMiAzIDQgZmlsbCBzdHJldGNo
IHJvdW5kOyB9Ci0jdyB7IGNvbnRlbnQ6IHVybCgid3ciKTsgfQotI3ggeyBjb250ZW50OiB1cmwo
InglMjB4eCIpOyB9Ci0jeSB7IGNvbnRlbnQ6IHVybCgieSUyMHl5Iik7IH0KKyN3IHsgY29udGVu
dDogdXJsKCJ3XGQgdyIpOyB9CisjeCB7IGNvbnRlbnQ6IHVybCgiIHggeFw5IHggIik7IH0KKyN5
IHsgY29udGVudDogdXJsKCJ5IHlcOSB5Iik7IH0KIDwvcHJlPgogCiA8c2NyaXB0PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbm5lckhUTUwvaW5uZXJIVE1MLXVyaS1yZXNvbHV0aW9u
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2lubmVySFRNTC9pbm5lckhUTUwtdXJpLXJlc29sdXRp
b24uaHRtbAppbmRleCA4NTRlMGYxYTBiNzEzNzY5Y2MzOTY2ODU0NDY3MzFkODJkYzEwNTMxLi40
NDQ0MjU0ZmJhMWM5YzE3OGVjMTFiNjUwZjRmNTYyYTJmZTgwYzU4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L2lubmVySFRNTC9pbm5lckhUTUwtdXJpLXJlc29sdXRpb24uaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2lubmVySFRNTC9pbm5lckhUTUwtdXJpLXJlc29sdXRpb24uaHRt
bApAQCAtMTMsMTEgKzEzLDExIEBACiAgIAogICB2YXIgY3VycmVudFVyaSA9IGRvY3VtZW50Lmxv
Y2F0aW9uLmhyZWY7CiAgIHZhciBjdXJyZW50UGF0aCA9IGN1cnJlbnRVcmkuc3Vic3RyaW5nKDAs
IGN1cnJlbnRVcmkubGFzdEluZGV4T2YoJy8nKSk7Ci0gIHZhciBjc3NVcmlXYXNSZXNvbHZlZEFn
YWluc3REb2N1bWVudFVyaSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0LXNwYW4iKS5z
dHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPT0gJ3VybCgiJyArIGN1cnJlbnRQYXRoICsgJy9pbWFnZS5w
bmciKSc7CisgIHZhciBjc3NVcmlXYXNSZXNvbHZlZEFnYWluc3REb2N1bWVudFVyaSA9IGdldENv
bXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3Qtc3BhbiIpKS5iYWNrZ3Jv
dW5kSW1hZ2UgPT0gJ3VybCgiJyArIGN1cnJlbnRQYXRoICsgJy9pbWFnZS5wbmciKSc7CiAgIAog
ICAvLyBDYW4ndCBsb2cgdGhlIGFjdHVhbCBwYXRoIHNpbmNlIGl0J3MgZGlmZmVyZW50IGRlcGVu
ZGluZyBvbiB3aGVyZSB0aGUgdGVzdCBpcyBydW4uCiAgIHNob3VsZEJlVHJ1ZSgnY3NzVXJpV2Fz
UmVzb2x2ZWRBZ2FpbnN0RG9jdW1lbnRVcmknKTsKIDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgotPC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb3VudGVyLXN0
eWxlcy9jb3VudGVyLXN0eWxlLWFkZGl0aXZlLXN5bWJvbHMtc3ludGF4LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb3Vu
dGVyLXN0eWxlcy9jb3VudGVyLXN0eWxlLWFkZGl0aXZlLXN5bWJvbHMtc3ludGF4LWV4cGVjdGVk
LnR4dAppbmRleCA0ZWRjYWE0ZmMxZmE5YjFjOWRiYjRiYmZkMWFjMTEyOWYzOGIyNDlmLi5kOTY1
ODc2YjYwZDMwNjU0MTA5ODVhYjA3Mzc3NzUyMTViZjRkZjI5IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY291bnRlci1zdHls
ZXMvY291bnRlci1zdHlsZS1hZGRpdGl2ZS1zeW1ib2xzLXN5bnRheC1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNv
dW50ZXItc3R5bGVzL2NvdW50ZXItc3R5bGUtYWRkaXRpdmUtc3ltYm9scy1zeW50YXgtZXhwZWN0
ZWQudHh0CkBAIC0xLDggKzEsOCBAQAogCi1GQUlMIEBjb3VudGVyLXN0eWxlICdhZGRpdGl2ZS1z
eW1ib2xzOiAwICJYIicgaXMgdmFsaWQgYXNzZXJ0X25vdF9lcXVhbHM6IGdvdCBkaXNhbGxvd2Vk
IHZhbHVlIC0xCi1GQUlMIEBjb3VudGVyLXN0eWxlICdhZGRpdGl2ZS1zeW1ib2xzOiAxICJYIicg
aXMgdmFsaWQgYXNzZXJ0X25vdF9lcXVhbHM6IGdvdCBkaXNhbGxvd2VkIHZhbHVlIC0xCi1GQUlM
IEBjb3VudGVyLXN0eWxlICdhZGRpdGl2ZS1zeW1ib2xzOiAiWCIgMScgaXMgdmFsaWQgYXNzZXJ0
X25vdF9lcXVhbHM6IGdvdCBkaXNhbGxvd2VkIHZhbHVlIC0xCi1GQUlMIEBjb3VudGVyLXN0eWxl
ICdhZGRpdGl2ZS1zeW1ib2xzOiA1ICJWIiwgMSAiSSInIGlzIHZhbGlkIGFzc2VydF9ub3RfZXF1
YWxzOiBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAtMQorUEFTUyBAY291bnRlci1zdHlsZSAnYWRkaXRp
dmUtc3ltYm9sczogMCAiWCInIGlzIHZhbGlkCitQQVNTIEBjb3VudGVyLXN0eWxlICdhZGRpdGl2
ZS1zeW1ib2xzOiAxICJYIicgaXMgdmFsaWQKK1BBU1MgQGNvdW50ZXItc3R5bGUgJ2FkZGl0aXZl
LXN5bWJvbHM6ICJYIiAxJyBpcyB2YWxpZAorUEFTUyBAY291bnRlci1zdHlsZSAnYWRkaXRpdmUt
c3ltYm9sczogNSAiViIsIDEgIkkiJyBpcyB2YWxpZAogUEFTUyBAY291bnRlci1zdHlsZSAnYWRk
aXRpdmUtc3ltYm9sczogJyBpcyBpbnZhbGlkCiBQQVNTIEBjb3VudGVyLXN0eWxlICdhZGRpdGl2
ZS1zeW1ib2xzOiAtMSAiWCInIGlzIGludmFsaWQKIFBBU1MgQGNvdW50ZXItc3R5bGUgJ2FkZGl0
aXZlLXN5bWJvbHM6IDEgIkkiLCA1ICJWIicgaXMgaW52YWxpZApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvdW50ZXItc3R5
bGVzL2NvdW50ZXItc3R5bGUtc3ltYm9scy1zeW50YXgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvdW50ZXItc3R5bGVz
L2NvdW50ZXItc3R5bGUtc3ltYm9scy1zeW50YXgtZXhwZWN0ZWQudHh0CmluZGV4IDI2YjFkYjhm
YTA4YTc4ODFkNTU3OWIxZjFhMzA5MTA2MDU2MmMxMTUuLjRlMmVlNWNlMjk3ODFlOWQxM2RlYmY3
MGFhZjEyNjhiOThlNzQ0YTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb3VudGVyLXN0eWxlcy9jb3VudGVyLXN0eWxlLXN5
bWJvbHMtc3ludGF4LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY291bnRlci1zdHlsZXMvY291bnRlci1zdHlsZS1z
eW1ib2xzLXN5bnRheC1leHBlY3RlZC50eHQKQEAgLTIsNyArMiw3IEBACiBQQVNTIEBjb3VudGVy
LXN0eWxlICdzeW1ib2xzOiAiWCInIGlzIHZhbGlkCiBQQVNTIEBjb3VudGVyLXN0eWxlICdzeW1i
b2xzOiAiWCIgIlgiJyBpcyB2YWxpZAogUEFTUyBAY291bnRlci1zdHlsZSAnc3ltYm9sczogaWRl
bnQgIlgiJyBpcyB2YWxpZAotRkFJTCBAY291bnRlci1zdHlsZSAnc3ltYm9sczogaWRlbnQgIlgi
IHVybCgiZm9vLmpwZyIpJyBpcyB2YWxpZCBhc3NlcnRfbm90X2VxdWFsczogZ290IGRpc2FsbG93
ZWQgdmFsdWUgLTEKK1BBU1MgQGNvdW50ZXItc3R5bGUgJ3N5bWJvbHM6IGlkZW50ICJYIiB1cmwo
ImZvby5qcGciKScgaXMgdmFsaWQKIFBBU1MgQGNvdW50ZXItc3R5bGUgJ3N5bWJvbHM6ICcgaXMg
aW52YWxpZAogUEFTUyBAY291bnRlci1zdHlsZSAnc3ltYm9sczogaW5pdGlhbCAiWCIgIlgiJyBp
cyBpbnZhbGlkCiBQQVNTIEBjb3VudGVyLXN0eWxlICdzeW1ib2xzOiBpbmhlcml0ICJYIiAiWCIn
IGlzIGludmFsaWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1zeW50YXgvdXJsLXdoaXRlc3BhY2UtY29uc3VtcHRpb24tZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLXN5bnRheC91cmwtd2hpdGVzcGFjZS1jb25zdW1wdGlvbi1leHBlY3RlZC50eHQKaW5k
ZXggMTI0ODY5OWQwMTk0NTBlZDEwNzc5MmFhMGE3YmY2ZTk2NDY1NjI4MC4uZmZlOTRiOGRiNWI2
MzNhMDAwZjdjMWIzNGNlYzQwZDkwYTdmZTA4MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXN5bnRheC91cmwtd2hpdGVzcGFj
ZS1jb25zdW1wdGlvbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXN5bnRheC91cmwtd2hpdGVzcGFjZS1jb25zdW1w
dGlvbi1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgd2hpdGVzcGFjZSBpcyBv
cHRpb25hbCBiZXR3ZWVuIHVybCggdG9rZW4gYW5kIHRoZSBzdHJpbmcgdG9rZW4gYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgInVybChcImZvb1wiKSIgYnV0IGdvdCAidXJsKFwiaHR0cDovL2xvY2Fs
aG9zdDo4ODAwL2Nzcy9jc3Mtc3ludGF4L2Zvb1wiKSIKK1BBU1Mgd2hpdGVzcGFjZSBpcyBvcHRp
b25hbCBiZXR3ZWVuIHVybCggdG9rZW4gYW5kIHRoZSBzdHJpbmcgdG9rZW4KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431036</attachid>
            <date>2021-06-09 18:01:12 -0700</date>
            <delta_ts>2021-06-15 12:10:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226708-20210609180111.patch</filename>
            <type>text/plain</type>
            <size>48842</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMyYTk0MjAxMDdmZDgx
NTU2NjhmZjdjOGQ3ODJhMGRhNDFiYTgyYS4uOTk1MzU4NDI5YjY4NmYwMzQ4MmRhNTNlMDBlN2Y4
Mjg2OWQ3NmE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDIxLTA2LTA5ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggQ1NTIHNlcmlhbGl6YXRp
b24gaXNzdWVzIGFmZmVjdGluZyBjc3MtY291bnRlci1zdHlsZXMgdGVzdHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjcwOAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCB0d28gc2VyaWFsaXphdGlv
biBpc3NzdWVzIGFmZmVjdGluZyBjc3MtY291bnRlci1zdHlsZXMgdGVzdHM6CisgICAgCisgICAg
ICAgIDEpIFVSTHMgd2VyZSBzZXJpYWxpemluZyB0aGUgZnVsbCByZXNvbHZlZCBVUkwsIHJhdGhl
ciB0aGFuIHRoZQorICAgICAgICAgICBwYXJ0aWFsIFVSTCBzdHJpbmcgZnJvbSB0aGUgc3R5bGUg
c2hlZXQuCisgICAgICAgIDIpIEl0ZW1zIGluIGFkZGl0aXZlLXN5bWJvbHMgdGhhdCBoYWQgYm90
aCBhbiBpbnRlZ2VyIGFuZCBhIHN0cmluZworICAgICAgICAgICB3b3VsZCBpbmNvcnJlY3RseSBz
ZXJpYWxpemUgd2l0aCBhIGNvbW1hIHdpdGhpbiB0aGUgaXRlbS4KKworICAgICAgICAqIGNzcy9D
U1NDcm9zc2ZhZGVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1
ZTo6dmFsdWVXaXRoU3R5bGVzUmVzb2x2ZWQpOiBBZGRlZC4KKyAgICAgICAgQ2FsbHMgcmVzb2x2
ZUltYWdlU3R5bGVzIG9uIHRoZSBpbWFnZSB2YWx1ZXMuCisgICAgICAgICogY3NzL0NTU0Nyb3Nz
ZmFkZVZhbHVlLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIGNzcy9DU1ND
dXJzb3JJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1cnNvckltYWdlVmFs
dWU6OkNTU0N1cnNvckltYWdlVmFsdWUpOiBDaGFuZ2VkIHRoZSBob3Qgc3BvdAorICAgICAgICB0
byB1c2Ugc3RkOjpvcHRpb25hbCBpbnN0ZWFkIG9mIGEgc2VwYXJhdGUgYm9vbGVhbi4KKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0N1cnNvckltYWdlVmFsdWU6OmNyZWF0ZSk6IE1vdmVkIHRoaXMgb3V0
IG9mIHRoZSBoZWFkZXIKKyAgICAgICAgYmVjYXVzZSBpdCdzIG5vdCBiZXR0ZXIgZm9yIGlubGlu
aW5nIHRvIGhhdmUgaXQgdGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpDU1NDdXJzb3JJbWFnZVZh
bHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KTogVXBkYXRlZCBmb3IgdGhlCisgICAgICAgIG1faG90
U3BvdCBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6dXBk
YXRlQ3Vyc29yRWxlbWVudCk6IFJlbW92ZWQgdW5uZWVkZWQKKyAgICAgICAgY2hlY2sgb2YgaGFz
RnJhZ21lbnRJZGVudGlmaWVyLCB3aGljaCBpcyBhbHJlYWR5IGRvbmUgYnkgdGhlCisgICAgICAg
IFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcgZnVuY3Rpb24uIFVw
ZGF0ZWQgdG8gdXNlCisgICAgICAgIG1fb3JpZ2luYWxTcGVjaWZpZWRVUkxTdHJpbmcsIGFuZCBh
ZGRlZCBhIEZJWE1FIGFib3V0IHRoZSBzdHJhbmdlIHdheQorICAgICAgICB0aGlzIGp1c3Qga2Vl
cHMgYWNjdW11bGF0aW5nIG1vcmUgYW5kIG1vcmUgY2xpZW50cyBpbiBhIHNldCwgYnV0IGRpZAor
ICAgICAgICBub3QgY2hhbmdlIHRoYXQgYmVoYXZpb3IuCisgICAgICAgIChXZWJDb3JlOjpDU1ND
dXJzb3JJbWFnZVZhbHVlOjpjdXJzb3JFbGVtZW50UmVtb3ZlZCk6IEFkZGVkIGEgRklYTUUuCisg
ICAgICAgIChXZWJDb3JlOjpDU1NDdXJzb3JJbWFnZVZhbHVlOjpjdXJzb3JFbGVtZW50Q2hhbmdl
ZCk6IFVwZGF0ZWQgZm9yIHRoZQorICAgICAgICBjaGFuZ2UgdG8gbV9ob3RTcG90IGFuZCBhZGRk
ZWQgc29tZSBGSVhNRS4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1cnNvckltYWdlVmFsdWU6OmVx
dWFscyBjb25zdCk6IFVwZGF0ZWQgZm9yIHRoZSBtX2hvdFNwb3QKKyAgICAgICAgY2hhbmdlOyBt
dWNoIHNpbXBsZXIgc2luY2Ugc3RkOjpvcHRpb25hbCBkb2VzIHRoZSByaWdodCB0aGluZy4KKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0N1cnNvckltYWdlVmFsdWU6OnZhbHVlV2l0aFN0eWxlc1Jlc29s
dmVkKTogQWRkZWQuCisgICAgICAgIENhbGxzIHJlc29sdmVJbWFnZVN0eWxlcyBvbiB0aGUgaW1h
Z2UgdmFsdWUuCisgICAgICAgICogY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaDogVXBkYXRlZCBm
b3IgdGhlIGFib3ZlIGNoYW5nZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTRmlsdGVySW1hZ2VWYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXJJbWFnZVZhbHVlOjp2YWx1ZVdpdGhT
dHlsZXNSZXNvbHZlZCk6IEFkZGVkLgorICAgICAgICBDYWxscyByc2Vzb2x2ZUltYWdlU3R5bGVz
IG9uIHRoZSBpbWFnZSB2YWx1ZSBhbmQgYWxzbyBjYWxscworICAgICAgICBjcmVhdGVGaWx0ZXJP
cGVyYXRpb25zLgorICAgICAgICAqIGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmg6IFVwZGF0ZWQg
Zm9yIHRoZSBhYm9ldi4KKworICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0dyYWRpZW50VmFsdWU6OnZhbHVlV2l0aFN0eWxlc1Jlc29sdmVk
KTogUmVuYW1lZCBmcm9tCisgICAgICAgIGdyYWRpZW50V2l0aFN0eWxlc1Jlc29sdmVkLgorICAg
ICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKwor
ICAgICAgICAqIGNzcy9DU1NJbWFnZVNldFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ltYWdlU2V0VmFsdWU6OnZhbHVlV2l0aFN0eWxlc1Jlc29sdmVkKTogUmVuYW1lZCBmcm9tCisg
ICAgICAgIGltYWdlU2V0V2l0aFN0eWxlc1Jlc29sdmVkLiBUd2Vha2VkIGNvZGluZyBzdHlsZSBh
IGJpdC4KKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oOiBVcGRhdGVkIGZvciB0aGUg
YWJvdmUuCisKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NJbWFnZVZhbHVlOjpDU1NJbWFnZVZhbHVlKTogQWRkZWQgcmVzb2x2ZWRVUkwgYXJn
dW1lbnQKKyAgICAgICAgYW5kIG1fcmVzb2x2ZWRVUkxTdHJpbmcuCisgICAgICAgIChXZWJDb3Jl
OjpDU1NJbWFnZVZhbHVlOjpjcmVhdGUpOiBBZGRlZCBhbiBvdmVybG9hZCB0aGF0IHRha2VzIHRo
ZQorICAgICAgICByZXNvbHZlZFVSTCBhcmd1bWVudCBhbmQgYWxzbyBtb3ZlZCBoZXJlIGZyb20g
dGhlIGhlYWRlciBzaW5jZSB3ZQorICAgICAgICBkb24ndCBnZXQgYW55IGJlbmVmaXQgZnJvbSBp
bmxpbmluZy4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlVmFsdWU6OnJlc29sdmVkVVJMIGNv
bnN0KTogQWRkZWQuIFVzZWQgc28gd2UgY2FuCisgICAgICAgIHNoYXJlIGNvZGUgYmV0d2VlbiB0
aGUgZm9sbG93aW5nIGZ1bmN0aW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlVmFsdWU6
OnZhbHVlV2l0aFN0eWxlc1Jlc29sdmVkKTogQWRkZWQuIENvbXB1dGVzCisgICAgICAgIHRoZSBm
dWxseSByZXNvbHZlZCBVUkwgYW5kIG1ha2VzIGEgbmV3IGltYWdlIHZhbHVlIGlmIG5lZWRlZCB0
aGF0CisgICAgICAgIGhhcyB0aGF0IGluc3RlYWQgb2YgdGhlIG9yaWdpbmFsIHJlbGF0aXZlIFVS
TCBzdHJpbmcuCisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVZhbHVlOjpsb2FkSW1hZ2UpOiBV
c2UgdGhlIG5ldyByZXNvbHZlZFVSTCBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0lt
YWdlVmFsdWU6OmVxdWFscyBjb25zdCk6IFRha2UgbV9yZXNvbHZlZFVSTFN0cmluZworICAgICAg
ICBpbnRvIGFjY291bnQgd2hlbiBjb21wYXJpbmcgdmFsdWVzLgorICAgICAgICAqIGNzcy9DU1NJ
bWFnZVZhbHVlLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIGNzcy9wYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3VtZUN1cnNv
cik6IFVzZSBzdGQ6Om9wdGlvbmFsIGZvciB0aGUgaG90IHNwb3QuCisgICAgICAgIChXZWJDb3Jl
Ojpjb25zdW1lQ291bnRlclN0eWxlQWRkaXRpdmVTeW1ib2xzKTogUHV0IHRoZSBpbnRlZ2VyL3N5
bWJvbAorICAgICAgICBwYWlyIGludG8gYSBzZXBhcmF0ZSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBp
bnN0ZWFkIG9mIGFwcGVuZGluZyBib3RoCisgICAgICAgIHRvIHRoZSB0b3AgbGV2ZWwgY29tbWFu
ZC1zZXBhcmF0ZWQgbGlzdC4KKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJz
ZXJIZWxwZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVy
czo6Y29uc3VtZUltYWdlKTogQ2FsbCB0aGUgbmV3CisgICAgICAgIG92ZXJsb2FkIG9mIENTU0lt
YWdlVmFsdWU6OmNyZWF0ZSwgcGFzc2luZyBib3RoIHRoZSBvcmlnaW5hbCBzdHJpbmcKKyAgICAg
ICAgYW5kIHRoZSByZXNvbHZlZCBVUkwuCisKKyAgICAgICAgKiBzdHlsZS9TdHlsZUJ1aWxkZXJD
dXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjphcHBseVZh
bHVlQ29udGVudCk6IENhbGwKKyAgICAgICAgcmVzb2x2ZUltYWdlU3R5bGVzIGNvbnNpc3RlbnRs
eS4KKworICAgICAgICAqIHN0eWxlL1N0eWxlQnVpbGRlclN0YXRlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpCdWlsZGVyU3RhdGU6OnJlc29sdmVJbWFnZVN0eWxlcyk6IENhbGwgdGhl
IG5ldworICAgICAgICB2YWx1ZVdpdGhTdHlsZXNSZXNvbHZlZCBmdW5jdGlvbiBvbiBhbGwgdGhl
IGRpZmZlcmVudCBpbWFnZSB2YWx1ZQorICAgICAgICB0eXBlcy4gVGhpcyB1bmlmaWVzIHRoZSBh
cHByb2FjaCBhY3Jvc3MgYWxsIDYgY2xhc3Nlcy4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpC
dWlsZGVyU3RhdGU6OmNyZWF0ZVN0eWxlSW1hZ2UpOiBUd2Vha2VkIHN0eWxlLgorCiAyMDIxLTA2
LTA2ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBGYWN0b3Ig
c2VsZWN0aW9uIGNsYW1waW5nIGludG8gYSB0eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3Nz
ZmFkZVZhbHVlLmNwcAppbmRleCA4ZWJlYTRiMmFiMWUyNDdkZjVlYTVjYzQ2Yzg4NWNjMTBjYzdi
MGVhLi4yZGZmNWIxNTE1YzI5YTYwN2RkMDgxOGYwMTgwZTgzY2VkYjc3NzMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzMsOCArMzMsOCBAQAogI2luY2x1
ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ3Jvc3NmYWRlR2VuZXJhdGVk
SW1hZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCisjaW5jbHVkZSAiU3R5bGVCdWls
ZGVyU3RhdGUuaCIKICNpbmNsdWRlICJTdHlsZUNhY2hlZEltYWdlLmgiCi0jaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIyOCwx
MCArMjI4LDE4IEBAIGJvb2wgQ1NTQ3Jvc3NmYWRlVmFsdWU6OmVxdWFscyhjb25zdCBDU1NDcm9z
c2ZhZGVWYWx1ZSYgb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIGVxdWFsSW5wdXRJbWFnZXMob3Ro
ZXIpICYmIGNvbXBhcmVDU1NWYWx1ZShtX3BlcmNlbnRhZ2VWYWx1ZSwgb3RoZXIubV9wZXJjZW50
YWdlVmFsdWUpOwogfQogCi0KIGJvb2wgQ1NTQ3Jvc3NmYWRlVmFsdWU6OmVxdWFsSW5wdXRJbWFn
ZXMoY29uc3QgQ1NTQ3Jvc3NmYWRlVmFsdWUmIG90aGVyKSBjb25zdAogewogICAgIHJldHVybiBj
b21wYXJlQ1NTVmFsdWUobV9mcm9tVmFsdWUsIG90aGVyLm1fZnJvbVZhbHVlKSAmJiBjb21wYXJl
Q1NTVmFsdWUobV90b1ZhbHVlLCBvdGhlci5tX3RvVmFsdWUpOwogfQogCitSZWY8Q1NTQ3Jvc3Nm
YWRlVmFsdWU+IENTU0Nyb3NzZmFkZVZhbHVlOjp2YWx1ZVdpdGhTdHlsZXNSZXNvbHZlZChTdHls
ZTo6QnVpbGRlclN0YXRlJiBzdGF0ZSkKK3sKKyAgICBhdXRvIGZyb21WYWx1ZSA9IHN0YXRlLnJl
c29sdmVJbWFnZVN0eWxlcyhtX2Zyb21WYWx1ZS5nZXQoKSk7CisgICAgYXV0byB0b1ZhbHVlID0g
c3RhdGUucmVzb2x2ZUltYWdlU3R5bGVzKG1fdG9WYWx1ZS5nZXQoKSk7CisgICAgaWYgKGZyb21W
YWx1ZS5wdHIoKSA9PSBtX2Zyb21WYWx1ZS5wdHIoKSAmJiB0b1ZhbHVlLnB0cigpID09IG1fdG9W
YWx1ZS5wdHIoKSkKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIHJldHVybiBjcmVhdGUoV1RG
TW92ZShmcm9tVmFsdWUpLCBXVEZNb3ZlKHRvVmFsdWUpLCBSZWYgeyBtX3BlcmNlbnRhZ2VWYWx1
ZSB9LCBtX2lzUHJlZml4ZWQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCmluZGV4IGViYWI3YWNkZWM2OGQ1YWY5OTQzYTA1
ZThhODA1M2Q1Mjk5ZTg5ZjkuLjI5M2U3NTk1ZTVkMzAxMWViZjkzZTYyNDcwZGFhMWM4YWMyNTZh
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYwLDYgKzYwLDggQEAg
cHVibGljOgogICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU0Nyb3NzZmFkZVZhbHVlJikgY29uc3Q7
CiAgICAgYm9vbCBlcXVhbElucHV0SW1hZ2VzKGNvbnN0IENTU0Nyb3NzZmFkZVZhbHVlJikgY29u
c3Q7CiAKKyAgICBSZWY8Q1NTQ3Jvc3NmYWRlVmFsdWU+IHZhbHVlV2l0aFN0eWxlc1Jlc29sdmVk
KFN0eWxlOjpCdWlsZGVyU3RhdGUmKTsKKwogcHJpdmF0ZToKICAgICBDU1NDcm9zc2ZhZGVWYWx1
ZShSZWY8Q1NTVmFsdWU+JiYgZnJvbVZhbHVlLCBSZWY8Q1NTVmFsdWU+JiYgdG9WYWx1ZSwgUmVm
PENTU1ByaW1pdGl2ZVZhbHVlPiYmIHBlcmNlbnRhZ2VWYWx1ZSwgYm9vbCBwcmVmaXhlZCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcAppbmRleCA4MmRkMGU4
YzhiMDE4YzcwNWQ2YTZiOWI4ZDA3OTlkMDA0NjNlZjMwLi5mNDM2ZWNlMmRlODczMjYzMzg4ZGI5
ZWM3MTA5NzM2YTUyZmQ2ZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vy
c29ySW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdl
VmFsdWUuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBSb2Ig
QnVpcyA8YnVpc0BrZGUub3JnPgogICogICAgICAgICAgIChDKSAyMDA4IE5pa29sYXMgWmltbWVy
bWFubiA8emltbWVybWFubkBrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0y
NCwyMSArMjQsMTcgQEAKIAogI2luY2x1ZGUgIkNTU0ltYWdlU2V0VmFsdWUuaCIKICNpbmNsdWRl
ICJDU1NJbWFnZVZhbHVlLmgiCi0jaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKLSNpbmNsdWRlICJD
YWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlNWR0N1cnNvckVsZW1lbnQuaCIKICNp
bmNsdWRlICJTVkdMZW5ndGhDb250ZXh0LmgiCiAjaW5jbHVkZSAiU1ZHVVJJUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6Q1NTQ3Vyc29ySW1hZ2VWYWx1ZShSZWY8
Q1NTVmFsdWU+JiYgaW1hZ2VWYWx1ZSwgYm9vbCBoYXNIb3RTcG90LCBjb25zdCBJbnRQb2ludCYg
aG90U3BvdCwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSBsb2FkZWRGcm9tT3BhcXVlU291cmNlKQor
Q1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6Q1NTQ3Vyc29ySW1hZ2VWYWx1ZShSZWY8Q1NTVmFsdWU+JiYg
aW1hZ2VWYWx1ZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4mIGhvdFNwb3QsIExvYWRl
ZEZyb21PcGFxdWVTb3VyY2UgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKICAgICA6IENTU1ZhbHVl
KEN1cnNvckltYWdlQ2xhc3MpCiAgICAgLCBtX2ltYWdlVmFsdWUoV1RGTW92ZShpbWFnZVZhbHVl
KSkKLSAgICAsIG1faGFzSG90U3BvdChoYXNIb3RTcG90KQogICAgICwgbV9ob3RTcG90KGhvdFNw
b3QpCiAgICAgLCBtX2xvYWRlZEZyb21PcGFxdWVTb3VyY2UobG9hZGVkRnJvbU9wYXF1ZVNvdXJj
ZSkKIHsKQEAgLTQ2LDYgKzQyLDExIEBAIENTU0N1cnNvckltYWdlVmFsdWU6OkNTU0N1cnNvcklt
YWdlVmFsdWUoUmVmPENTU1ZhbHVlPiYmIGltYWdlVmFsdWUsIGJvb2wgaGFzSG90CiAgICAgICAg
IG1fb3JpZ2luYWxVUkwgPSBkb3duY2FzdDxDU1NJbWFnZVZhbHVlPihtX2ltYWdlVmFsdWUuZ2V0
KCkpLnVybCgpOwogfQogCitSZWY8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZT4gQ1NTQ3Vyc29ySW1hZ2VW
YWx1ZTo6Y3JlYXRlKFJlZjxDU1NWYWx1ZT4mJiBpbWFnZVZhbHVlLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPEludFBvaW50PiYgaG90U3BvdCwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSBsb2FkZWRGcm9t
T3BhcXVlU291cmNlKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0N1cnNvckltYWdl
VmFsdWUoV1RGTW92ZShpbWFnZVZhbHVlKSwgaG90U3BvdCwgbG9hZGVkRnJvbU9wYXF1ZVNvdXJj
ZSkpOworfQorCiBDU1NDdXJzb3JJbWFnZVZhbHVlOjp+Q1NTQ3Vyc29ySW1hZ2VWYWx1ZSgpCiB7
CiAgICAgZm9yIChhdXRvKiBlbGVtZW50IDogbV9jdXJzb3JFbGVtZW50cykKQEAgLTU1LDIxICs1
NiwxOSBAQCBDU1NDdXJzb3JJbWFnZVZhbHVlOjp+Q1NTQ3Vyc29ySW1hZ2VWYWx1ZSgpCiBTdHJp
bmcgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiB7CiAgICAgU3Ry
aW5nIHRleHQgPSBtX2ltYWdlVmFsdWUuZ2V0KCkuY3NzVGV4dCgpOwotICAgIGlmICghbV9oYXNI
b3RTcG90KQorICAgIGlmICghbV9ob3RTcG90KQogICAgICAgICByZXR1cm4gdGV4dDsKLSAgICBy
ZXR1cm4gbWFrZVN0cmluZyh0ZXh0LCAnICcsIG1faG90U3BvdC54KCksICcgJywgbV9ob3RTcG90
LnkoKSk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcodGV4dCwgJyAnLCBtX2hvdFNwb3QtPngoKSwg
JyAnLCBtX2hvdFNwb3QtPnkoKSk7CiB9CiAKIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBmdW5jdGlv
biB0YWtlIGEgVHJlZVNjb3BlIGluc3RlYWQ/CiBTVkdDdXJzb3JFbGVtZW50KiBDU1NDdXJzb3JJ
bWFnZVZhbHVlOjp1cGRhdGVDdXJzb3JFbGVtZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkK
IHsKLSAgICBpZiAoIW1fb3JpZ2luYWxVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotCiAgICAgYXV0byBlbGVtZW50ID0gU1ZHVVJJUmVmZXJlbmNl
Ojp0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZyhtX29yaWdpbmFsVVJMLnN0cmluZygpLCBkb2N1
bWVudCkuZWxlbWVudDsKICAgICBpZiAoIWlzPFNWR0N1cnNvckVsZW1lbnQ+KGVsZW1lbnQpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAorICAgIC8vIEZJWE1FOiBOb3QgcmlnaHQgdG8ga2Vl
cCBvbGQgY3Vyc29yIGVsZW1lbnRzIGFzIGNsaWVudHMuIFRoZSBuZXcgb25lIHNob3VsZCByZXBs
YWNlIHRoZSBvbGQsIG5vdCBqb2luIGl0IGluIGEgc2V0LgogICAgIGF1dG8mIGN1cnNvckVsZW1l
bnQgPSBkb3duY2FzdDxTVkdDdXJzb3JFbGVtZW50PigqZWxlbWVudCk7CiAgICAgaWYgKG1fY3Vy
c29yRWxlbWVudHMuYWRkKCZjdXJzb3JFbGVtZW50KS5pc05ld0VudHJ5KSB7CiAgICAgICAgIGN1
cnNvckVsZW1lbnRDaGFuZ2VkKGN1cnNvckVsZW1lbnQpOwpAQCAtODAsMTkgKzc5LDIxIEBAIFNW
R0N1cnNvckVsZW1lbnQqIENTU0N1cnNvckltYWdlVmFsdWU6OnVwZGF0ZUN1cnNvckVsZW1lbnQo
Y29uc3QgRG9jdW1lbnQmIGRvY3VtCiAKIHZvaWQgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6Y3Vyc29y
RWxlbWVudFJlbW92ZWQoU1ZHQ3Vyc29yRWxlbWVudCYgY3Vyc29yRWxlbWVudCkKIHsKKyAgICAv
LyBGSVhNRTogTm90IHJpZ2h0IHRvIHN0YXkgYSBjbGllbnQgb2YgYSBjdXJzb3IgZWxlbWVudCB1
bnRpbCB0aGUgZWxlbWVudCBpcyBkZXN0cm95ZWQuIFdlJ2Qgd2FudCB0byBzdG9wIGJlaW5nIGEg
Y2xpZW50IG9uY2UgaXQncyBubyBsb25nZXIgYSB2YWxpZCB0YXJnZXQsIGxpa2Ugd2hlbiBpdCdz
IGRpc2Nvbm5lY3RlZC4KICAgICBtX2N1cnNvckVsZW1lbnRzLnJlbW92ZSgmY3Vyc29yRWxlbWVu
dCk7CiB9CiAKIHZvaWQgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6Y3Vyc29yRWxlbWVudENoYW5nZWQo
U1ZHQ3Vyc29yRWxlbWVudCYgY3Vyc29yRWxlbWVudCkKIHsKLSAgICAvLyBGSVhNRTogVGhpcyB3
aWxsIG92ZXJyaWRlIGhvdCBzcG90IHNwZWNpZmllZCBpbiBDU1MsIHdoaWNoIGlzIHByb2JhYmx5
IGluY29ycmVjdC4KKyAgICAvLyBGSVhNRTogV2h5IGRvZXNuJ3QgdGhpcyBjb2RlIGNoZWNrIGZv
ciBhIGNoYW5nZSB0byB0aGUgaHJlZiBvZiB0aGUgY3Vyc29yIGVsZW1lbnQ/IFdlIGR5bmFtaWNh
bGx5IHRyYWNrIGNoYW5nZXMgdG8geC95IGJ1dCBub3QgaHJlZj8KKworICAgIC8vIEZJWE1FOiBN
YWtlcyBubyBzZW5zZSB0aGF0IGNoYW5naW5nIGFuIG9sZCBjdXJzb3IgZWxlbWVudCwgb25lIHRo
YXQgdGhhdCBpcyBubyBsb25nZXIgdGhlIHRhcmdldCBlbGVtZW50LCBjaGFuZ2VzIHRoZSBob3Qg
c3BvdC4KKyAgICAvLyBGSVhNRTogVGhpcyB3aWxsIG92ZXJyaWRlIGEgaG90IHNwb3QgdGhhdCB3
YXMgc3BlY2lmaWVkIGluIENTUywgd2hpY2ggaXMgcHJvYmFibHkgaW5jb3JyZWN0LgogICAgIFNW
R0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dChudWxscHRyKTsKLSAgICBtX2hhc0hvdFNwb3Qg
PSB0cnVlOwogICAgIGZsb2F0IHggPSBzdGQ6OnJvdW5kKGN1cnNvckVsZW1lbnQueCgpLnZhbHVl
KGxlbmd0aENvbnRleHQpKTsKLSAgICBtX2hvdFNwb3Quc2V0WChzdGF0aWNfY2FzdDxpbnQ+KHgp
KTsKLQogICAgIGZsb2F0IHkgPSBzdGQ6OnJvdW5kKGN1cnNvckVsZW1lbnQueSgpLnZhbHVlKGxl
bmd0aENvbnRleHQpKTsKLSAgICBtX2hvdFNwb3Quc2V0WShzdGF0aWNfY2FzdDxpbnQ+KHkpKTsK
KyAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGNsYW1wIGluc3RlYWQgb2YganVzdCBjYXN0aW5nIHRv
IGludCBoZXJlPworICAgIG1faG90U3BvdCA9IEludFBvaW50IHsgc3RhdGljX2Nhc3Q8aW50Pih4
KSwgc3RhdGljX2Nhc3Q8aW50Pih5KSB9OwogfQogCiBJbWFnZVdpdGhTY2FsZSBDU1NDdXJzb3JJ
bWFnZVZhbHVlOjpzZWxlY3RCZXN0Rml0SW1hZ2UoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQpA
QCAtMTEwLDggKzExMSwxNSBAQCBJbWFnZVdpdGhTY2FsZSBDU1NDdXJzb3JJbWFnZVZhbHVlOjpz
ZWxlY3RCZXN0Rml0SW1hZ2UoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogCiBib29sIENTU0N1
cnNvckltYWdlVmFsdWU6OmVxdWFscyhjb25zdCBDU1NDdXJzb3JJbWFnZVZhbHVlJiBvdGhlcikg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9oYXNIb3RTcG90ID8gb3RoZXIubV9oYXNIb3RTcG90ICYm
IG1faG90U3BvdCA9PSBvdGhlci5tX2hvdFNwb3QgOiAhb3RoZXIubV9oYXNIb3RTcG90Ci0gICAg
ICAgICYmIGNvbXBhcmVDU1NWYWx1ZShtX2ltYWdlVmFsdWUsIG90aGVyLm1faW1hZ2VWYWx1ZSk7
CisgICAgcmV0dXJuIG1faG90U3BvdCA9PSBvdGhlci5tX2hvdFNwb3QgJiYgY29tcGFyZUNTU1Zh
bHVlKG1faW1hZ2VWYWx1ZSwgb3RoZXIubV9pbWFnZVZhbHVlKTsKK30KKworUmVmPENTU0N1cnNv
ckltYWdlVmFsdWU+IENTU0N1cnNvckltYWdlVmFsdWU6OnZhbHVlV2l0aFN0eWxlc1Jlc29sdmVk
KFN0eWxlOjpCdWlsZGVyU3RhdGUmIHN0YXRlKQoreworICAgIGF1dG8gaW1hZ2VWYWx1ZSA9IHN0
YXRlLnJlc29sdmVJbWFnZVN0eWxlcyhtX2ltYWdlVmFsdWUuZ2V0KCkpOworICAgIGlmIChpbWFn
ZVZhbHVlLnB0cigpID09IG1faW1hZ2VWYWx1ZS5wdHIoKSkKKyAgICAgICAgcmV0dXJuICp0aGlz
OworICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShpbWFnZVZhbHVlKSwgbV9ob3RTcG90LCBtX2xv
YWRlZEZyb21PcGFxdWVTb3VyY2UpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaAppbmRleCBiMzA2ZmRhNDg1ZWMyMjgx
OTc4NGIzNWI2ODY3MWMzNmE1YTJmYTQ4Li5jMDEwMDVmOWVhYjZjODUzZGE3NzBkYTc3Mzc5MzEx
M2JhNDYzYTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VW
YWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmgKQEAg
LTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IFJvYiBCdWlzIDxidWlzQGtk
ZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHQgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodCByZXNl
cnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjcsMTIgKzI3LDggQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBDYWNoZWRJbWFnZTsKLWNsYXNzIENhY2hlZFJlc291cmNlTG9h
ZGVyOwogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBFbGVtZW50OwogY2xhc3MgU1ZHQ3Vyc29yRWxl
bWVudDsKLWNsYXNzIFNWR0VsZW1lbnQ7CiAKIHN0cnVjdCBJbWFnZVdpdGhTY2FsZTsKIApAQCAt
NDIsMjEgKzM4LDExIEBAIGNsYXNzIEJ1aWxkZXJTdGF0ZTsKIAogY2xhc3MgQ1NTQ3Vyc29ySW1h
Z2VWYWx1ZSBmaW5hbCA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxDU1NDdXJzb3JJbWFnZVZhbHVlPiBjcmVhdGUoUmVmPENTU1ZhbHVlPiYmIGltYWdlVmFsdWUs
IGJvb2wgaGFzSG90U3BvdCwgY29uc3QgSW50UG9pbnQmIGhvdFNwb3QsIExvYWRlZEZyb21PcGFx
dWVTb3VyY2UgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IENTU0N1cnNvckltYWdlVmFsdWUoV1RGTW92ZShpbWFnZVZhbHVlKSwgaGFz
SG90U3BvdCwgaG90U3BvdCwgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkpOwotICAgIH0KLQorICAg
IHN0YXRpYyBSZWY8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZT4gY3JlYXRlKFJlZjxDU1NWYWx1ZT4mJiBp
bWFnZVZhbHVlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiYgaG90U3BvdCwgTG9hZGVk
RnJvbU9wYXF1ZVNvdXJjZSk7CiAgICAgfkNTU0N1cnNvckltYWdlVmFsdWUoKTsKIAotICAgIGJv
b2wgaGFzSG90U3BvdCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzSG90U3BvdDsgfQotCi0gICAgSW50
UG9pbnQgaG90U3BvdCgpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAobV9oYXNIb3RTcG90KQot
ICAgICAgICAgICAgcmV0dXJuIG1faG90U3BvdDsKLSAgICAgICAgcmV0dXJuIEludFBvaW50KC0x
LCAtMSk7Ci0gICAgfQorICAgIGJvb2wgaGFzSG90U3BvdCgpIGNvbnN0IHsgcmV0dXJuIG1faG90
U3BvdC5oYXNfdmFsdWUoKTsgfQorICAgIEludFBvaW50IGhvdFNwb3QoKSBjb25zdCB7IHJldHVy
biBtX2hvdFNwb3QudmFsdWVfb3IoSW50UG9pbnQgeyAtMSwgLTEgfSk7IH0KIAogICAgIGNvbnN0
IFVSTCYgaW1hZ2VVUkwoKSBjb25zdCB7IHJldHVybiBtX29yaWdpbmFsVVJMOyB9CiAKQEAgLTY0
LDIzICs1MCwyMSBAQCBwdWJsaWM6CiAKICAgICBJbWFnZVdpdGhTY2FsZSBzZWxlY3RCZXN0Rml0
SW1hZ2UoY29uc3QgRG9jdW1lbnQmKTsKIAotICAgIHZvaWQgcmVtb3ZlUmVmZXJlbmNlZEVsZW1l
bnQoU1ZHRWxlbWVudCopOwotCiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQ3Vyc29ySW1hZ2VW
YWx1ZSYpIGNvbnN0OwogCiAgICAgdm9pZCBjdXJzb3JFbGVtZW50UmVtb3ZlZChTVkdDdXJzb3JF
bGVtZW50Jik7CiAgICAgdm9pZCBjdXJzb3JFbGVtZW50Q2hhbmdlZChTVkdDdXJzb3JFbGVtZW50
Jik7CiAKKyAgICBSZWY8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZT4gdmFsdWVXaXRoU3R5bGVzUmVzb2x2
ZWQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYpOworCiBwcml2YXRlOgotICAgIENTU0N1cnNvckltYWdl
VmFsdWUoUmVmPENTU1ZhbHVlPiYmIGltYWdlVmFsdWUsIGJvb2wgaGFzSG90U3BvdCwgY29uc3Qg
SW50UG9pbnQmIGhvdFNwb3QsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UpOworICAgIENTU0N1cnNv
ckltYWdlVmFsdWUoUmVmPENTU1ZhbHVlPiYmIGltYWdlVmFsdWUsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8SW50UG9pbnQ+JiBob3RTcG90LCBMb2FkZWRGcm9tT3BhcXVlU291cmNlKTsKIAogICAgIFNW
R0N1cnNvckVsZW1lbnQqIHVwZGF0ZUN1cnNvckVsZW1lbnQoY29uc3QgRG9jdW1lbnQmKTsKIAog
ICAgIFVSTCBtX29yaWdpbmFsVVJMOwogICAgIFJlZjxDU1NWYWx1ZT4gbV9pbWFnZVZhbHVlOwot
Ci0gICAgYm9vbCBtX2hhc0hvdFNwb3Q7Ci0gICAgSW50UG9pbnQgbV9ob3RTcG90OworICAgIHN0
ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IG1faG90U3BvdDsKICAgICBIYXNoU2V0PFNWR0N1cnNvckVs
ZW1lbnQqPiBtX2N1cnNvckVsZW1lbnRzOwogICAgIExvYWRlZEZyb21PcGFxdWVTb3VyY2UgbV9s
b2FkZWRGcm9tT3BhcXVlU291cmNlIHsgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZTo6Tm8gfTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKaW5kZXggMjlhM2Nj
OGIyNmVjNTcxM2ZjZGUyMzFhOGQyOGIzZTJhN2FiMzgxZC4uOGNmOTA5YWU5ZTUzNzI0YjkxZGI0
YWNlMTRhZTI4NTcxZGQ5NTUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zp
bHRlckltYWdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFn
ZVZhbHVlLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQWRv
YmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHQgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDcgKzM2LDYgQEAKICNpbmNsdWRlICJSZW5kZXJFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiU3R5bGVCdWlsZGVyU3RhdGUuaCIKICNpbmNsdWRlICJTdHlsZUNh
Y2hlZEltYWdlLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE3Myw0ICsxNzMsMTYgQEAgYm9vbCBDU1NGaWx0ZXJJbWFn
ZVZhbHVlOjplcXVhbElucHV0SW1hZ2VzKGNvbnN0IENTU0ZpbHRlckltYWdlVmFsdWUmIG90aGVy
KSBjb24KICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlKG1faW1hZ2VWYWx1ZSwgb3RoZXIubV9p
bWFnZVZhbHVlKTsKIH0KIAorUmVmPENTU0ZpbHRlckltYWdlVmFsdWU+IENTU0ZpbHRlckltYWdl
VmFsdWU6OnZhbHVlV2l0aFN0eWxlc1Jlc29sdmVkKFN0eWxlOjpCdWlsZGVyU3RhdGUmIHN0YXRl
KQoreworICAgIGF1dG8gaW1hZ2VWYWx1ZSA9IHN0YXRlLnJlc29sdmVJbWFnZVN0eWxlcyhtX2lt
YWdlVmFsdWUuZ2V0KCkpOworICAgIGlmIChpbWFnZVZhbHVlLnB0cigpID09IG1faW1hZ2VWYWx1
ZS5wdHIoKSkgeworICAgICAgICBjcmVhdGVGaWx0ZXJPcGVyYXRpb25zKHN0YXRlKTsKKyAgICAg
ICAgcmV0dXJuICp0aGlzOworICAgIH0KKyAgICBhdXRvIGZpbHRlckltYWdlVmFsdWUgPSBjcmVh
dGUoV1RGTW92ZShpbWFnZVZhbHVlKSwgUmVmIHsgbV9maWx0ZXJWYWx1ZSB9KTsKKyAgICBmaWx0
ZXJJbWFnZVZhbHVlLT5jcmVhdGVGaWx0ZXJPcGVyYXRpb25zKHN0YXRlKTsKKyAgICByZXR1cm4g
ZmlsdGVySW1hZ2VWYWx1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmgKaW5kZXggM2E3YjQzN2I5YTI3ZTQ5YTRlODU1
M2JiMDUwYTZiMDdiYjAwMmIwZS4uNTA0YzJhZDhkMTVjYjRjNTNlMjQyOTMxMDNkMjFkNmEzYzAy
Njg2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oCkBAIC0xLDUg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9y
YXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM1LDEwICszNiw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ2FjaGVk
SW1hZ2U7CiBjbGFzcyBGaWx0ZXJTdWJpbWFnZU9ic2VydmVyUHJveHk7CiBjbGFzcyBSZW5kZXJF
bGVtZW50OwotY2xhc3MgRG9jdW1lbnQ7CiAKIG5hbWVzcGFjZSBTdHlsZSB7CiBjbGFzcyBCdWls
ZGVyU3RhdGU7CkBAIC03MSwxNSArNzAsMTIgQEAgcHVibGljOgogCiAgICAgYm9vbCBlcXVhbElu
cHV0SW1hZ2VzKGNvbnN0IENTU0ZpbHRlckltYWdlVmFsdWUmKSBjb25zdDsKIAotICAgIHZvaWQg
Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhTdHlsZTo6QnVpbGRlclN0YXRlJik7Ci0KICAgICBjb25z
dCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJPcGVyYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9m
aWx0ZXJPcGVyYXRpb25zOyB9Ci0gICAgdm9pZCBzZXRGaWx0ZXJPcGVyYXRpb25zKGNvbnN0IEZp
bHRlck9wZXJhdGlvbnMmIGZpbHRlck9wZXJhdGlvbnMpCi0gICAgewotICAgICAgICBtX2ZpbHRl
ck9wZXJhdGlvbnMgPSBmaWx0ZXJPcGVyYXRpb25zOwotICAgIH0KKyAgICB2b2lkIHNldEZpbHRl
ck9wZXJhdGlvbnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVyT3BlcmF0aW9ucykgeyBt
X2ZpbHRlck9wZXJhdGlvbnMgPSBmaWx0ZXJPcGVyYXRpb25zOyB9CiAgICAgQ2FjaGVkSW1hZ2Uq
IGNhY2hlZEltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZS5nZXQoKTsgfQogCisg
ICAgUmVmPENTU0ZpbHRlckltYWdlVmFsdWU+IHZhbHVlV2l0aFN0eWxlc1Jlc29sdmVkKFN0eWxl
OjpCdWlsZGVyU3RhdGUmKTsKKwogcHJpdmF0ZToKICAgICBDU1NGaWx0ZXJJbWFnZVZhbHVlKFJl
ZjxDU1NWYWx1ZT4mJiBpbWFnZVZhbHVlLCBSZWY8Q1NTVmFsdWU+JiYgZmlsdGVyVmFsdWUpCiAg
ICAgICAgIDogQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZShGaWx0ZXJJbWFnZUNsYXNzKQpAQCAtMTA2
LDYgKzEwMiw3IEBAIHByaXZhdGU6CiAgICAgfTsKIAogICAgIHZvaWQgZmlsdGVySW1hZ2VDaGFu
Z2VkKGNvbnN0IEludFJlY3QmKTsKKyAgICB2b2lkIGNyZWF0ZUZpbHRlck9wZXJhdGlvbnMoU3R5
bGU6OkJ1aWxkZXJTdGF0ZSYpOwogCiAgICAgUmVmPENTU1ZhbHVlPiBtX2ltYWdlVmFsdWU7CiAg
ICAgUmVmPENTU1ZhbHVlPiBtX2ZpbHRlclZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRp
ZW50VmFsdWUuY3BwCmluZGV4IDQ3ZjBmZWFmNzNhOWE3NGRlYjcyOTg2YzJmNGNmNjY0Y2NhN2Q2
MDMuLjU4YmNhNmUyOTIxNmY0ZjIxNTFkN2RmODU3N2IyZWU0MDllODVkMTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBib29sIENT
U0dyYWRpZW50VmFsdWU6Omhhc0NvbG9yRGVyaXZlZEZyb21FbGVtZW50KCkgY29uc3QKICAgICBy
ZXR1cm4gKm1faGFzQ29sb3JEZXJpdmVkRnJvbUVsZW1lbnQ7CiB9CiAKLVJlZjxDU1NHcmFkaWVu
dFZhbHVlPiBDU1NHcmFkaWVudFZhbHVlOjpncmFkaWVudFdpdGhTdHlsZXNSZXNvbHZlZChTdHls
ZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitSZWY8Q1NTR3JhZGllbnRWYWx1ZT4gQ1NT
R3JhZGllbnRWYWx1ZTo6dmFsdWVXaXRoU3R5bGVzUmVzb2x2ZWQoU3R5bGU6OkJ1aWxkZXJTdGF0
ZSYgYnVpbGRlclN0YXRlKQogewogICAgIGF1dG8gcmVzdWx0ID0gaGFzQ29sb3JEZXJpdmVkRnJv
bUVsZW1lbnQoKSA/IGNsb25lKCp0aGlzKSA6IG1ha2VSZWYoKnRoaXMpOwogICAgIHJlc29sdmVT
dG9wQ29sb3JzKHJlc3VsdC0+bV9zdG9wcywgWyZdKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiBj
b2xvclZhbHVlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRW
YWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAppbmRleCBmOWEx
ODc2YTMxMGIzYmI3NWU5NjRlZWExMWIxZjZlYWQ4MWIzZDlkLi5jOWUyMmI3ZGQ1Nzk3Yzg2N2M1
NGRhNzBiYzliZGMzNThhNWNkYTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
R3JhZGllbnRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVl
LmgKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBp
c1BlbmRpbmcoKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHN0YXRpYyB2b2lkIGxvYWRTdWJpbWFn
ZXMoQ2FjaGVkUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKSB7
IH0KIAotICAgIFJlZjxDU1NHcmFkaWVudFZhbHVlPiBncmFkaWVudFdpdGhTdHlsZXNSZXNvbHZl
ZChTdHlsZTo6QnVpbGRlclN0YXRlJik7CisgICAgUmVmPENTU0dyYWRpZW50VmFsdWU+IHZhbHVl
V2l0aFN0eWxlc1Jlc29sdmVkKFN0eWxlOjpCdWlsZGVyU3RhdGUmKTsKIAogcHJvdGVjdGVkOgog
ICAgIENTU0dyYWRpZW50VmFsdWUoQ2xhc3NUeXBlIGNsYXNzVHlwZSwgQ1NTR3JhZGllbnRSZXBl
YXQgcmVwZWF0LCBDU1NHcmFkaWVudFR5cGUgZ3JhZGllbnRUeXBlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ltYWdlU2V0VmFsdWUuY3BwCmluZGV4IGE5MzIwMzA4MjVhYmI2NTViNTI3OGFmNWM2MTUy
ZTNiNTQ3ZWFkN2IuLjkwNDkxNjk5NTI5ZjU4MTdjMzVmMzdlNzQ3YTQxNjE4ZTZlZmMxNmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAKQEAgLTExMywxNSArMTEzLDE0
IEBAIHZvaWQgQ1NTSW1hZ2VTZXRWYWx1ZTo6dXBkYXRlRGV2aWNlU2NhbGVGYWN0b3IoY29uc3Qg
RG9jdW1lbnQmIGRvY3VtZW50KQogICAgIG1fc2VsZWN0ZWRJbWFnZVZhbHVlID0gbnVsbHB0cjsK
IH0KIAotUmVmPENTU0ltYWdlU2V0VmFsdWU+IENTU0ltYWdlU2V0VmFsdWU6OmltYWdlU2V0V2l0
aFN0eWxlc1Jlc29sdmVkKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKK1JlZjxD
U1NJbWFnZVNldFZhbHVlPiBDU1NJbWFnZVNldFZhbHVlOjp2YWx1ZVdpdGhTdHlsZXNSZXNvbHZl
ZChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCiB7Ci0gICAgUmVmPENTU0ltYWdl
U2V0VmFsdWU+IHJlc3VsdCA9IENTU0ltYWdlU2V0VmFsdWU6OmNyZWF0ZSgpOwotICAgIHNpemVf
dCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSArIDEg
PCBsZW5ndGg7IGkgKz0gMikgeworICAgIC8vIEZJWE1FOiBXb3VsZCBiZSBuaWNlIHRvIG9wdGlt
aXplIHRoZSBjYXNlIHdoZXJlIHJlc29sdmluZyB0aGUgc3R5bGVzIGRvZXMgbm90IGNoYW5nZSBh
bnl0aGluZy4KKyAgICBhdXRvIHJlc3VsdCA9IGNyZWF0ZSgpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwLCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsgaSArIDEgPCBsZW5ndGg7IGkgKz0gMikgewog
ICAgICAgICByZXN1bHQtPmFwcGVuZChidWlsZGVyU3RhdGUucmVzb2x2ZUltYWdlU3R5bGVzKCpp
dGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKSk7CiAgICAgICAgIHJlc3VsdC0+YXBwZW5kKCppdGVt
V2l0aG91dEJvdW5kc0NoZWNrKGkgKyAxKSk7CiAgICAgfQotCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmgKaW5kZXggMDFlYTRjNWM1NGEx
YjZmZmJlZDMzMjNmNmIzOGRhZDQ4MzU1MWU1ZS4uNzNkMTI1YWZlYTMwMzQ4YzFiZDZmMjJmMTZm
NzllZTFjYzJiNmEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0
VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oCkBAIC02
MSw3ICs2MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlRGV2aWNlU2NhbGVGYWN0b3Io
Y29uc3QgRG9jdW1lbnQmKTsKIAotICAgIFJlZjxDU1NJbWFnZVNldFZhbHVlPiBpbWFnZVNldFdp
dGhTdHlsZXNSZXNvbHZlZChTdHlsZTo6QnVpbGRlclN0YXRlJik7CisgICAgUmVmPENTU0ltYWdl
U2V0VmFsdWU+IHZhbHVlV2l0aFN0eWxlc1Jlc29sdmVkKFN0eWxlOjpCdWlsZGVyU3RhdGUmKTsK
IAogcHJpdmF0ZToKICAgICBDU1NJbWFnZVNldFZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1h
Z2VWYWx1ZS5jcHAKaW5kZXggYzBmNWExNmQ3ZWY4ZGNiNDFlMjMwOWIzNDExYzBlMzljYTkwYjAy
MS4uZTY2YTFlZTczM2FiZmM0ZmM0MzA5ZTg2ODk3NTlhZWNkYzI3YmY1NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NJbWFnZVZhbHVlLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAoQykgMTk5OS0y
MDAzIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
QEAgLTM0LDkgKzM0LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ1NTSW1hZ2VWYWx1
ZTo6Q1NTSW1hZ2VWYWx1ZShVUkwmJiB1cmwsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UgbG9hZGVk
RnJvbU9wYXF1ZVNvdXJjZSkKK0NTU0ltYWdlVmFsdWU6OkNTU0ltYWdlVmFsdWUoVVJMJiYgdXJs
LCBVUkwmJiByZXNvbHZlZFVSTCwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSBsb2FkZWRGcm9tT3Bh
cXVlU291cmNlKQogICAgIDogQ1NTVmFsdWUoSW1hZ2VDbGFzcykKICAgICAsIG1fdXJsKFdURk1v
dmUodXJsKSkKKyAgICAsIG1fcmVzb2x2ZWRVUkxTdHJpbmcocmVzb2x2ZWRVUkwuc3RyaW5nKCkp
CiAgICAgLCBtX2FjY2Vzc2VkSW1hZ2UoZmFsc2UpCiAgICAgLCBtX2xvYWRlZEZyb21PcGFxdWVT
b3VyY2UobG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKIHsKQEAgLTUwLDYgKzUxLDIwIEBAIENTU0lt
YWdlVmFsdWU6OkNTU0ltYWdlVmFsdWUoQ2FjaGVkSW1hZ2UmIGltYWdlKQogewogfQogCitSZWY8
Q1NTSW1hZ2VWYWx1ZT4gQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKFVSTCYmIGltYWdlVVJMLCBVUkwm
JiByZXNvbHZlZFVSTCwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSBsb2FkZWRGcm9tT3BhcXVlU291
cmNlKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0ltYWdlVmFsdWUoV1RGTW92ZShp
bWFnZVVSTCksIFdURk1vdmUocmVzb2x2ZWRVUkwpLCBsb2FkZWRGcm9tT3BhcXVlU291cmNlKSk7
Cit9CisKK1JlZjxDU1NJbWFnZVZhbHVlPiBDU1NJbWFnZVZhbHVlOjpjcmVhdGUoVVJMJiYgaW1h
Z2VVUkwsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKK3sK
KyAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUoaW1hZ2VVUkwpLCB7IH0sIGxvYWRlZEZyb21PcGFx
dWVTb3VyY2UpOworfQorCitSZWY8Q1NTSW1hZ2VWYWx1ZT4gQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRl
KENhY2hlZEltYWdlJiBpbWFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NJbWFn
ZVZhbHVlKGltYWdlKSk7Cit9CiAKIENTU0ltYWdlVmFsdWU6On5DU1NJbWFnZVZhbHVlKCkgPSBk
ZWZhdWx0OwogCkBAIC01OCw2ICs3MywyMSBAQCBib29sIENTU0ltYWdlVmFsdWU6OmlzUGVuZGlu
ZygpIGNvbnN0CiAgICAgcmV0dXJuICFtX2FjY2Vzc2VkSW1hZ2U7CiB9CiAKK1VSTCBDU1NJbWFn
ZVZhbHVlOjpyZXNvbHZlZFVSTChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGRvY3VtZW50LmNvbXBsZXRlVVJMKG1fcmVzb2x2ZWRVUkxTdHJpbmcuaXNOdWxs
KCkgPyBtX3VybC5zdHJpbmcoKSA6IG1fcmVzb2x2ZWRVUkxTdHJpbmcpOworfQorCitSZWY8Q1NT
SW1hZ2VWYWx1ZT4gQ1NTSW1hZ2VWYWx1ZTo6dmFsdWVXaXRoU3R5bGVzUmVzb2x2ZWQoU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYgc3RhdGUpCit7CisgICAgYXV0byByZXNvbHZlZFVSTCA9IHRoaXMtPnJl
c29sdmVkVVJMKHN0YXRlLmRvY3VtZW50KCkpOworICAgIGlmIChtX3VybCA9PSByZXNvbHZlZFVS
TCkKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIGF1dG8gcmVzdWx0ID0gY3JlYXRlKFdURk1v
dmUocmVzb2x2ZWRVUkwpLCBtX2xvYWRlZEZyb21PcGFxdWVTb3VyY2UpOworICAgIHJlc3VsdC0+
bV9pbml0aWF0b3JOYW1lID0gbV9pbml0aWF0b3JOYW1lOworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKIENhY2hlZEltYWdlKiBDU1NJbWFnZVZhbHVlOjpsb2FkSW1hZ2UoQ2FjaGVkUmVzb3VyY2VM
b2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIGlmICghbV9hY2Nlc3NlZEltYWdlKSB7CkBAIC02NSwxMiArOTUsMTEgQEAgQ2FjaGVkSW1h
Z2UqIENTU0ltYWdlVmFsdWU6OmxvYWRJbWFnZShDYWNoZWRSZXNvdXJjZUxvYWRlciYgbG9hZGVy
LCBjb25zdCBSZXNvdXIKIAogICAgICAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMgbG9hZE9wdGlv
bnMgPSBvcHRpb25zOwogICAgICAgICBsb2FkT3B0aW9ucy5sb2FkZWRGcm9tT3BhcXVlU291cmNl
ID0gbV9sb2FkZWRGcm9tT3BhcXVlU291cmNlOwotICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdChSZXNvdXJjZVJlcXVlc3QobG9hZGVyLmRvY3VtZW50KCktPmNvbXBsZXRlVVJM
KG1fdXJsLnN0cmluZygpKSksIGxvYWRPcHRpb25zKTsKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KHJlc29sdmVkVVJMKCpsb2FkZXIuZG9jdW1l
bnQoKSkpLCBsb2FkT3B0aW9ucyk7CiAgICAgICAgIGlmIChtX2luaXRpYXRvck5hbWUuaXNFbXB0
eSgpKQogICAgICAgICAgICAgcmVxdWVzdC5zZXRJbml0aWF0b3IoY2FjaGVkUmVzb3VyY2VSZXF1
ZXN0SW5pdGlhdG9ycygpLmNzcyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlcXVlc3Qu
c2V0SW5pdGlhdG9yKG1faW5pdGlhdG9yTmFtZSk7Ci0KICAgICAgICAgaWYgKG9wdGlvbnMubW9k
ZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6OkNvcnMpIHsKICAgICAgICAgICAgIEFTU0VSVChsb2Fk
ZXIuZG9jdW1lbnQoKSk7CiAgICAgICAgICAgICByZXF1ZXN0LnVwZGF0ZUZvckFjY2Vzc0NvbnRy
b2woKmxvYWRlci5kb2N1bWVudCgpKTsKQEAgLTg5LDcgKzExOCw3IEBAIGJvb2wgQ1NTSW1hZ2VW
YWx1ZTo6dHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3QgV1RGOjpGdW5jdGlvbjxib29sIChjb25z
dCBDYWNoZWRSCiAKIGJvb2wgQ1NTSW1hZ2VWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU0ltYWdlVmFs
dWUmIG90aGVyKSBjb25zdAogewotICAgIHJldHVybiBtX3VybCA9PSBvdGhlci5tX3VybDsKKyAg
ICByZXR1cm4gbV91cmwgPT0gb3RoZXIubV91cmwgJiYgbV9yZXNvbHZlZFVSTFN0cmluZyA9PSBv
dGhlci5tX3Jlc29sdmVkVVJMU3RyaW5nOwogfQogCiBTdHJpbmcgQ1NTSW1hZ2VWYWx1ZTo6Y3Vz
dG9tQ1NTVGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1h
Z2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAppbmRleCA3ZTZi
YmI5NTE0NTMyNTI2ODM2NGM1N2NiNTY3NjIyMzcxNGI0Yjc2Li45YmEzNzY1NTVhNzY5YThkNjZj
YTVlMzgyZmI0ZWIyNWI5ZWU3YWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
SW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgKQEAg
LTM0LDEwICszNCwxNSBAQCBjbGFzcyBEZXByZWNhdGVkQ1NTT01WYWx1ZTsKIGNsYXNzIENTU1N0
eWxlRGVjbGFyYXRpb247CiBjbGFzcyBSZW5kZXJFbGVtZW50OwogCituYW1lc3BhY2UgU3R5bGUg
eworY2xhc3MgQnVpbGRlclN0YXRlOworfQorCiBjbGFzcyBDU1NJbWFnZVZhbHVlIGZpbmFsIDog
cHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENTU0ltYWdlVmFsdWU+
IGNyZWF0ZShVUkwmJiB1cmwsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UgbG9hZGVkRnJvbU9wYXF1
ZVNvdXJjZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NJbWFnZVZhbHVlKFdURk1vdmUodXJs
KSwgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxDU1NJbWFnZVZh
bHVlPiBjcmVhdGUoQ2FjaGVkSW1hZ2UmIGltYWdlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENT
U0ltYWdlVmFsdWUoaW1hZ2UpKTsgfQorICAgIHN0YXRpYyBSZWY8Q1NTSW1hZ2VWYWx1ZT4gY3Jl
YXRlKFVSTCYmLCBMb2FkZWRGcm9tT3BhcXVlU291cmNlKTsKKyAgICBzdGF0aWMgUmVmPENTU0lt
YWdlVmFsdWU+IGNyZWF0ZShVUkwmJiwgVVJMJiYgcmVzb2x2ZWRVUkwsIExvYWRlZEZyb21PcGFx
dWVTb3VyY2UpOworICAgIHN0YXRpYyBSZWY8Q1NTSW1hZ2VWYWx1ZT4gY3JlYXRlKENhY2hlZElt
YWdlJik7CiAgICAgfkNTU0ltYWdlVmFsdWUoKTsKIAogICAgIGJvb2wgaXNQZW5kaW5nKCkgY29u
c3Q7CkBAIC01OCwxMSArNjMsMTYgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRJbml0aWF0b3Io
Y29uc3QgQXRvbVN0cmluZyYgbmFtZSkgeyBtX2luaXRpYXRvck5hbWUgPSBuYW1lOyB9CiAKKyAg
ICBSZWY8Q1NTSW1hZ2VWYWx1ZT4gdmFsdWVXaXRoU3R5bGVzUmVzb2x2ZWQoU3R5bGU6OkJ1aWxk
ZXJTdGF0ZSYpOworCiBwcml2YXRlOgotICAgIENTU0ltYWdlVmFsdWUoVVJMJiYsIExvYWRlZEZy
b21PcGFxdWVTb3VyY2UpOworICAgIENTU0ltYWdlVmFsdWUoVVJMJiYsIFVSTCYmIHJlc29sdmVk
VVJMLCBMb2FkZWRGcm9tT3BhcXVlU291cmNlKTsKICAgICBleHBsaWNpdCBDU1NJbWFnZVZhbHVl
KENhY2hlZEltYWdlJik7CiAKKyAgICBVUkwgcmVzb2x2ZWRVUkwoY29uc3QgRG9jdW1lbnQmKSBj
b25zdDsKKwogICAgIFVSTCBtX3VybDsKKyAgICBTdHJpbmcgbV9yZXNvbHZlZFVSTFN0cmluZzsK
ICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gbV9jYWNoZWRJbWFnZTsKICAg
ICBib29sIG1fYWNjZXNzZWRJbWFnZTsKICAgICBBdG9tU3RyaW5nIG1faW5pdGlhdG9yTmFtZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKaW5k
ZXggNjg0NTIzNzg2OTMyNjA4NmNiY2FlMGVkOTRkYmMzYTU2ZGViNTJmNS4uNTNkMTI4OTJjOTZl
MTZlMDU2MTIxNzY1MDlmMGRkNmFjYjhlNWVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTIyNTgsMjIgKzIyNTgsMjAgQEAgc3Rh
dGljIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVJ4T3JSeShDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSwgQ1NTUGEKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVDdXJz
b3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNv
bnRleHQsIGJvb2wgaW5RdWlya3NNb2RlKQogewogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxp
c3Q7Ci0gICAgd2hpbGUgKFJlZlB0cjxDU1NWYWx1ZT4gaW1hZ2UgPSBjb25zdW1lSW1hZ2UocmFu
Z2UsIGNvbnRleHQsIHsgQWxsb3dlZEltYWdlVHlwZTo6VVJMRnVuY3Rpb24sIEFsbG93ZWRJbWFn
ZVR5cGU6OkltYWdlU2V0IH0pKSB7Ci0gICAgICAgIEludFBvaW50IGhvdFNwb3QoLTEsIC0xKTsK
LSAgICAgICAgYm9vbCBob3RTcG90U3BlY2lmaWVkID0gZmFsc2U7CisgICAgd2hpbGUgKGF1dG8g
aW1hZ2UgPSBjb25zdW1lSW1hZ2UocmFuZ2UsIGNvbnRleHQsIHsgQWxsb3dlZEltYWdlVHlwZTo6
VVJMRnVuY3Rpb24sIEFsbG93ZWRJbWFnZVR5cGU6OkltYWdlU2V0IH0pKSB7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3Q7CiAgICAgICAgIGlmIChhdXRvIHggPSBjb25z
dW1lTnVtYmVyUmF3KHJhbmdlKSkgewotICAgICAgICAgICAgaG90U3BvdC5zZXRYKHN0YXRpY19j
YXN0PGludD4oKngpKTsKICAgICAgICAgICAgIGF1dG8geSA9IGNvbnN1bWVOdW1iZXJSYXcocmFu
Z2UpOwogICAgICAgICAgICAgaWYgKCF5KQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgICAgICAgICAgaG90U3BvdC5zZXRZKHN0YXRpY19jYXN0PGludD4oKnkpKTsKLSAgICAg
ICAgICAgIGhvdFNwb3RTcGVjaWZpZWQgPSB0cnVlOworICAgICAgICAgICAgLy8gRklYTUU6IFNo
b3VsZCB3ZSBjbGFtcCBvciByb3VuZCBpbnN0ZWFkIG9mIGp1c3QgY2FzdGluZyBmcm9tIGRvdWJs
ZSB0byBpbnQ/CisgICAgICAgICAgICBob3RTcG90ID0gSW50UG9pbnQgeyBzdGF0aWNfY2FzdDxp
bnQ+KCp4KSwgc3RhdGljX2Nhc3Q8aW50PigqeSkgfTsKICAgICAgICAgfQogCiAgICAgICAgIGlm
ICghbGlzdCkKICAgICAgICAgICAgIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2Vw
YXJhdGVkKCk7CiAKLSAgICAgICAgbGlzdC0+YXBwZW5kKENTU0N1cnNvckltYWdlVmFsdWU6OmNy
ZWF0ZShpbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCBob3RTcG90U3BlY2lmaWVkLCBob3RTcG90LCBj
b250ZXh0LmlzQ29udGVudE9wYXF1ZSA/IExvYWRlZEZyb21PcGFxdWVTb3VyY2U6OlllcyA6IExv
YWRlZEZyb21PcGFxdWVTb3VyY2U6Ok5vKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NDdXJz
b3JJbWFnZVZhbHVlOjpjcmVhdGUoaW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgaG90U3BvdCwgY29u
dGV4dC5pc0NvbnRlbnRPcGFxdWUgPyBMb2FkZWRGcm9tT3BhcXVlU291cmNlOjpZZXMgOiBMb2Fk
ZWRGcm9tT3BhcXVlU291cmNlOjpObykpOwogICAgICAgICBpZiAoIWNvbnN1bWVDb21tYUluY2x1
ZGluZ1doaXRlc3BhY2UocmFuZ2UpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQpAQCAtNDY5NCwxMiArNDY5MiwxOSBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1l
Q291bnRlclN0eWxlQWRkaXRpdmVTeW1ib2xzKENTU1BhcnNlclRva2VuUmFuZ2UmCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgbGFzdEludGVnZXIg
PSBpbnRlZ2VyOwotICAgICAgICB2YWx1ZXMtPmFwcGVuZChpbnRlZ2VyLnJlbGVhc2VOb25OdWxs
KCkpOwotICAgICAgICB2YWx1ZXMtPmFwcGVuZChzeW1ib2wucmVsZWFzZU5vbk51bGwoKSk7Cisg
ICAgICAgIGlmIChpbnRlZ2VyICYmIHN5bWJvbCkgeworICAgICAgICAgICAgYXV0byBwYWlyID0g
Q1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOworICAgICAgICAgICAgcGFpci0+
YXBwZW5kKGludGVnZXIucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgICAgICBwYWlyLT5hcHBl
bmQoc3ltYm9sLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICAgICAgdmFsdWVzLT5hcHBlbmQo
V1RGTW92ZShwYWlyKSk7CisgICAgICAgIH0gZWxzZSBpZiAoaW50ZWdlcikKKyAgICAgICAgICAg
IHZhbHVlcy0+YXBwZW5kKGludGVnZXIucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHZhbHVlcy0+YXBwZW5kKHN5bWJvbC5yZWxlYXNlTm9uTnVsbCgpKTsKICAg
ICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSk7CiAgICAg
aWYgKCFyYW5nZS5hdEVuZCgpIHx8ICF2YWx1ZXMtPmxlbmd0aCgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICByZXR1cm4gdmFsdWVzOworICAgIHJldHVybiBXVEZNb3ZlKHZhbHVlcyk7
CiB9CiAKIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtY291bnRlci1zdHlsZXMtMy8jY291
bnRlci1zdHlsZS1zcGVhay1hcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCmluZGV4IDg2MDdiMDg0YTg0MjYwMGE0Mjhm
YTE1MjU5ZjBjZTI3NTNmZTA0MTIuLmVjNGU5ODM0Y2VjN2U4YTNlNWNhNTUzNjFlM2JkNDVmMmQw
ODAyNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQ
YXJzZXJIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3Bl
cnR5UGFyc2VySGVscGVycy5jcHAKQEAgLTM0OTksOCArMzQ5OSw4IEBAIFJlZlB0cjxDU1NTaGFk
b3dWYWx1ZT4gY29uc3VtZVNpbmdsZVNoYWRvdyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwg
Y29uc3QgQ1NTCiBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVJbWFnZShDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCwgT3B0aW9uU2V0PEFs
bG93ZWRJbWFnZVR5cGU+IGFsbG93ZWRJbWFnZVR5cGVzKQogewogICAgIGlmICgocmFuZ2UucGVl
aygpLnR5cGUoKSA9PSBTdHJpbmdUb2tlbikgJiYgKGFsbG93ZWRJbWFnZVR5cGVzLmNvbnRhaW5z
KEFsbG93ZWRJbWFnZVR5cGU6OlJhd1N0cmluZ0FzVVJMKSkpIHsKLSAgICAgICAgYXV0byB1cmxT
dHJpbmdWaWV3ID0gcmFuZ2UuY29uc3VtZUluY2x1ZGluZ1doaXRlc3BhY2UoKS52YWx1ZSgpOwot
ICAgICAgICByZXR1cm4gQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKGNvbXBsZXRlVVJMKGNvbnRleHQs
IHVybFN0cmluZ1ZpZXcudG9BdG9tU3RyaW5nKCkpLCBjb250ZXh0LmlzQ29udGVudE9wYXF1ZSA/
IExvYWRlZEZyb21PcGFxdWVTb3VyY2U6OlllcyA6IExvYWRlZEZyb21PcGFxdWVTb3VyY2U6Ok5v
KTsKKyAgICAgICAgYXV0byB1cmxTdHJpbmcgPSByYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVz
cGFjZSgpLnZhbHVlKCkudG9BdG9tU3RyaW5nKCkuc3RyaW5nKCk7CisgICAgICAgIHJldHVybiBD
U1NJbWFnZVZhbHVlOjpjcmVhdGUoeyB7IH0sIHVybFN0cmluZyB9LCBjb250ZXh0LmNvbXBsZXRl
VVJMKHVybFN0cmluZyksIGNvbnRleHQuaXNDb250ZW50T3BhcXVlID8gTG9hZGVkRnJvbU9wYXF1
ZVNvdXJjZTo6WWVzIDogTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZTo6Tm8pOwogICAgIH0KIAogICAg
IGlmIChyYW5nZS5wZWVrKCkudHlwZSgpID09IEZ1bmN0aW9uVG9rZW4pIHsKQEAgLTM1MTcsOSAr
MzUxNywxMCBAQCBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVJbWFnZShDU1NQYXJzZXJUb2tlblJh
bmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dAogICAgIH0KIAogICAgIGlmIChhbGxv
d2VkSW1hZ2VUeXBlcy5jb250YWlucyhBbGxvd2VkSW1hZ2VUeXBlOjpVUkxGdW5jdGlvbikpIHsK
LSAgICAgICAgYXV0byB1cmkgPSBjb25zdW1lVXJsQXNTdHJpbmdWaWV3KHJhbmdlKTsKLSAgICAg
ICAgaWYgKCF1cmkuaXNOdWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gQ1NTSW1hZ2VWYWx1ZTo6
Y3JlYXRlKGNvbXBsZXRlVVJMKGNvbnRleHQsIHVyaS50b0F0b21TdHJpbmcoKSksIGNvbnRleHQu
aXNDb250ZW50T3BhcXVlID8gTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZTo6WWVzIDogTG9hZGVkRnJv
bU9wYXF1ZVNvdXJjZTo6Tm8pOworICAgICAgICBpZiAoYXV0byB1cmxTdHJpbmdWaWV3ID0gY29u
c3VtZVVybEFzU3RyaW5nVmlldyhyYW5nZSk7ICF1cmxTdHJpbmdWaWV3LmlzTnVsbCgpKSB7Cisg
ICAgICAgICAgICBhdXRvIHVybFN0cmluZyA9IHVybFN0cmluZ1ZpZXcudG9BdG9tU3RyaW5nKCku
c3RyaW5nKCk7CisgICAgICAgICAgICByZXR1cm4gQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKHsgeyB9
LCB1cmxTdHJpbmcgfSwgY29udGV4dC5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpLCBjb250ZXh0Lmlz
Q29udGVudE9wYXF1ZSA/IExvYWRlZEZyb21PcGFxdWVTb3VyY2U6OlllcyA6IExvYWRlZEZyb21P
cGFxdWVTb3VyY2U6Ok5vKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaAppbmRleCBmNmU2Zjdh
ODI3MDc5ZDY0ZjczZTgxNjA2YzFjNjdkODM2NGY5ZGYwLi5kNzE3OWEwZWJlNzQ5ZTc2N2Q4MjNl
ZWY1NDgxN2YyZjE1ZGI5YWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZUJ1aWxkZXJDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJD
dXN0b20uaApAQCAtMTUzOCwxOSArMTUzOCwxOSBAQCBpbmxpbmUgdm9pZCBCdWlsZGVyQ3VzdG9t
OjphcHBseVZhbHVlQ29udGVudChCdWlsZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSwgQ1NTVmFsdQog
ICAgIGZvciAoYXV0byYgaXRlbSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7CiAg
ICAgICAgIGlmIChpczxDU1NJbWFnZUdlbmVyYXRvclZhbHVlPihpdGVtKSkgewogICAgICAgICAg
ICAgaWYgKGlzPENTU0dyYWRpZW50VmFsdWU+KGl0ZW0pKQotICAgICAgICAgICAgICAgIGJ1aWxk
ZXJTdGF0ZS5zdHlsZSgpLnNldENvbnRlbnQoU3R5bGVHZW5lcmF0ZWRJbWFnZTo6Y3JlYXRlKGRv
d25jYXN0PENTU0dyYWRpZW50VmFsdWU+KGl0ZW0uZ2V0KCkpLmdyYWRpZW50V2l0aFN0eWxlc1Jl
c29sdmVkKGJ1aWxkZXJTdGF0ZSkpLCBkaWRTZXQpOworICAgICAgICAgICAgICAgIGJ1aWxkZXJT
dGF0ZS5zdHlsZSgpLnNldENvbnRlbnQoU3R5bGVHZW5lcmF0ZWRJbWFnZTo6Y3JlYXRlKGRvd25j
YXN0PENTU0dyYWRpZW50VmFsdWU+KGJ1aWxkZXJTdGF0ZS5yZXNvbHZlSW1hZ2VTdHlsZXMoaXRl
bS5nZXQoKSkuZ2V0KCkpKSwgZGlkU2V0KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRDb250ZW50KFN0eWxlR2VuZXJhdGVkSW1hZ2U6
OmNyZWF0ZShkb3duY2FzdDxDU1NJbWFnZUdlbmVyYXRvclZhbHVlPihpdGVtLmdldCgpKSksIGRp
ZFNldCk7CisgICAgICAgICAgICAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0Q29udGVudChT
dHlsZUdlbmVyYXRlZEltYWdlOjpjcmVhdGUoZG93bmNhc3Q8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1
ZT4oYnVpbGRlclN0YXRlLnJlc29sdmVJbWFnZVN0eWxlcyhpdGVtLmdldCgpKS5nZXQoKSkpLCBk
aWRTZXQpOwogICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICAK
KwogICAgICAgICBpZiAoaXM8Q1NTSW1hZ2VTZXRWYWx1ZT4oaXRlbSkpIHsKLSAgICAgICAgICAg
IGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldENvbnRlbnQoU3R5bGVJbWFnZVNldDo6Y3JlYXRlKGRv
d25jYXN0PENTU0ltYWdlU2V0VmFsdWU+KGl0ZW0uZ2V0KCkpLmltYWdlU2V0V2l0aFN0eWxlc1Jl
c29sdmVkKGJ1aWxkZXJTdGF0ZSkpLCBkaWRTZXQpOworICAgICAgICAgICAgYnVpbGRlclN0YXRl
LnN0eWxlKCkuc2V0Q29udGVudChTdHlsZUltYWdlU2V0OjpjcmVhdGUoZG93bmNhc3Q8Q1NTSW1h
Z2VTZXRWYWx1ZT4oYnVpbGRlclN0YXRlLnJlc29sdmVJbWFnZVN0eWxlcyhpdGVtLmdldCgpKS5n
ZXQoKSkpLCBkaWRTZXQpOwogICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKICAgICAgICAgfQog
CiAgICAgICAgIGlmIChpczxDU1NJbWFnZVZhbHVlPihpdGVtKSkgewotICAgICAgICAgICAgYnVp
bGRlclN0YXRlLnN0eWxlKCkuc2V0Q29udGVudChTdHlsZUNhY2hlZEltYWdlOjpjcmVhdGUoZG93
bmNhc3Q8Q1NTSW1hZ2VWYWx1ZT4oaXRlbS5nZXQoKSkpLCBkaWRTZXQpOworICAgICAgICAgICAg
YnVpbGRlclN0YXRlLnN0eWxlKCkuc2V0Q29udGVudChTdHlsZUNhY2hlZEltYWdlOjpjcmVhdGUo
ZG93bmNhc3Q8Q1NTSW1hZ2VWYWx1ZT4oYnVpbGRlclN0YXRlLnJlc29sdmVJbWFnZVN0eWxlcyhp
dGVtLmdldCgpKS5nZXQoKSkpLCBkaWRTZXQpOwogICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZUJ1aWxkZXJTdGF0ZS5jcHAKaW5kZXggYzY2YzhiMjdhNjVhODQ0YjY3NGVmMWVlYTBmOGFm
YWEwMjMzM2VlYi4uYjQyMjlhMTEwMDk2NmZhYjBkYTkzZmZjZmM3YTdiZjYzMDVmMDRiZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyU3RhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlclN0YXRlLmNwcApAQCAtMzAsNiArMzAs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN0eWxlQnVpbGRlclN0YXRlLmgi
CiAKKyNpbmNsdWRlICJDU1NDcm9zc2ZhZGVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0N1cnNvcklt
YWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NGaWx0ZXJJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAi
Q1NTRm9udFNlbGVjdG9yLmgiCkBAIC00MSw3ICs0Miw2IEBACiAjaW5jbHVkZSAiRm9udENhY2hl
LmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgot
I2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCiAjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdHlsZUJ1aWxkZXIuaCIKQEAgLTg0LDMzICs4
NCwzMSBAQCBib29sIEJ1aWxkZXJTdGF0ZTo6dXNlU1ZHWm9vbVJ1bGVzRm9yTGVuZ3RoKCkgY29u
c3QKIAogUmVmPENTU1ZhbHVlPiBCdWlsZGVyU3RhdGU6OnJlc29sdmVJbWFnZVN0eWxlcyhDU1NW
YWx1ZSYgdmFsdWUpCiB7CisgICAgaWYgKGlzPENTU0Nyb3NzZmFkZVZhbHVlPih2YWx1ZSkpCisg
ICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NDcm9zc2ZhZGVWYWx1ZT4odmFsdWUpLnZhbHVlV2l0
aFN0eWxlc1Jlc29sdmVkKCp0aGlzKTsKKyAgICBpZiAoaXM8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZT4o
dmFsdWUpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZT4odmFs
dWUpLnZhbHVlV2l0aFN0eWxlc1Jlc29sdmVkKCp0aGlzKTsKKyAgICBpZiAoaXM8Q1NTRmlsdGVy
SW1hZ2VWYWx1ZT4odmFsdWUpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTRmlsdGVySW1h
Z2VWYWx1ZT4odmFsdWUpLnZhbHVlV2l0aFN0eWxlc1Jlc29sdmVkKCp0aGlzKTsKICAgICBpZiAo
aXM8Q1NTR3JhZGllbnRWYWx1ZT4odmFsdWUpKQotICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NT
R3JhZGllbnRWYWx1ZT4odmFsdWUpLmdyYWRpZW50V2l0aFN0eWxlc1Jlc29sdmVkKCp0aGlzKTsK
LQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTR3JhZGllbnRWYWx1ZT4odmFsdWUpLnZhbHVl
V2l0aFN0eWxlc1Jlc29sdmVkKCp0aGlzKTsKICAgICBpZiAoaXM8Q1NTSW1hZ2VTZXRWYWx1ZT4o
dmFsdWUpKQotICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTSW1hZ2VTZXRWYWx1ZT4odmFsdWUp
LmltYWdlU2V0V2l0aFN0eWxlc1Jlc29sdmVkKCp0aGlzKTsKLQotICAgIC8vIENyZWF0aW5nIGZp
bHRlciBvcGVyYXRpb25zIGRvZXNuJ3QgY3JlYXRlIGEgbmV3IENTU1ZhbHVlIHJlZmVyZW5jZS4K
LSAgICBpZiAoaXM8Q1NTRmlsdGVySW1hZ2VWYWx1ZT4odmFsdWUpKQotICAgICAgICBkb3duY2Fz
dDxDU1NGaWx0ZXJJbWFnZVZhbHVlPih2YWx1ZSkuY3JlYXRlRmlsdGVyT3BlcmF0aW9ucygqdGhp
cyk7Ci0KKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0ltYWdlU2V0VmFsdWU+KHZhbHVlKS52
YWx1ZVdpdGhTdHlsZXNSZXNvbHZlZCgqdGhpcyk7CisgICAgaWYgKGlzPENTU0ltYWdlVmFsdWU+
KHZhbHVlKSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0ltYWdlVmFsdWU+KHZhbHVlKS52
YWx1ZVdpdGhTdHlsZXNSZXNvbHZlZCgqdGhpcyk7CiAgICAgcmV0dXJuIG1ha2VSZWYodmFsdWUp
OwogfQogCiBSZWZQdHI8U3R5bGVJbWFnZT4gQnVpbGRlclN0YXRlOjpjcmVhdGVTdHlsZUltYWdl
KENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTSW1hZ2VWYWx1ZT4odmFsdWUpKQot
ICAgICAgICByZXR1cm4gU3R5bGVDYWNoZWRJbWFnZTo6Y3JlYXRlKGRvd25jYXN0PENTU0ltYWdl
VmFsdWU+KHZhbHVlKSk7Ci0KKyAgICAgICAgcmV0dXJuIFN0eWxlQ2FjaGVkSW1hZ2U6OmNyZWF0
ZShkb3duY2FzdDxDU1NJbWFnZVZhbHVlPihyZXNvbHZlSW1hZ2VTdHlsZXModmFsdWUpLmdldCgp
KSk7CiAgICAgaWYgKGlzPENTU0N1cnNvckltYWdlVmFsdWU+KHZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIFN0eWxlQ3Vyc29ySW1hZ2U6OmNyZWF0ZShkb3duY2FzdDxDU1NDdXJzb3JJbWFnZVZhbHVl
Pih2YWx1ZSkpOwotCisgICAgICAgIHJldHVybiBTdHlsZUN1cnNvckltYWdlOjpjcmVhdGUoZG93
bmNhc3Q8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZT4ocmVzb2x2ZUltYWdlU3R5bGVzKHZhbHVlKS5nZXQo
KSkpOwogICAgIGlmIChpczxDU1NJbWFnZUdlbmVyYXRvclZhbHVlPih2YWx1ZSkpCiAgICAgICAg
IHJldHVybiBTdHlsZUdlbmVyYXRlZEltYWdlOjpjcmVhdGUoZG93bmNhc3Q8Q1NTSW1hZ2VHZW5l
cmF0b3JWYWx1ZT4ocmVzb2x2ZUltYWdlU3R5bGVzKHZhbHVlKS5nZXQoKSkpOwotICAgIAogICAg
IGlmIChpczxDU1NJbWFnZVNldFZhbHVlPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiBTdHlsZUlt
YWdlU2V0OjpjcmVhdGUoZG93bmNhc3Q8Q1NTSW1hZ2VTZXRWYWx1ZT4ocmVzb2x2ZUltYWdlU3R5
bGVzKHZhbHVlKS5nZXQoKSkpOwotCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAx
NmMzMmM0OWFiNmZlMzEwOTFhNjkwYWQwMDEzOWM5ZWQ2MmEwZmIwLi5jYzFlNTcwNTBjMGMyYzEy
NzU2N2NkZmNmMzU1MzM0N2VmZTViYWJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMDYt
MDkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBDU1Mgc2Vy
aWFsaXphdGlvbiBpc3N1ZXMgYWZmZWN0aW5nIGNzcy1jb3VudGVyLXN0eWxlcyB0ZXN0cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NzA4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Nzcy9w
YXJzZS1ib3JkZXItaW1hZ2UtcmVwZWF0LW51bGwtY3Jhc2gtZXhwZWN0ZWQudHh0OiBVcGRhdGUg
dG8gcmVmbGVjdCBjb3JyZWN0CisgICAgICAgIHBhdGg7IG5vdCByZWFsbHkgcmVsZXZhbnQgdG8g
d2hhdCB3YXMgYmVpbmcgdGVzdGVkIGhlcmUuCisKKyAgICAgICAgKiBmYXN0L2Nzcy91cmktdG9r
ZW4tcGFyc2luZy1leHBlY3RlZC50eHQ6IFVwZGF0ZWQgdG8gYmVoYXZpb3IgdGhhdCBub3cgbWF0
Y2hlcyBGaXJlZm94LgorICAgICAgICAqIGZhc3QvY3NzL3VyaS10b2tlbi1wYXJzaW5nLmh0bWw6
IERpdHRvLgorCisgICAgICAgICogZmFzdC9pbm5lckhUTUwvaW5uZXJIVE1MLXVyaS1yZXNvbHV0
aW9uLmh0bWw6IFVwZGF0ZWQgdGVzdCB0byB1c2UgY29tcHV0ZWQgc3R5bGUgc28KKyAgICAgICAg
aXQgbm8gbG9uZ2VyIGRlcGVuZHMgb24gV2ViS2l0LW9ubHkgYmVoYXZpb3IgdG8gcnVuIGNvcnJl
Y3RseS4KKwogMjAyMS0wNi0wNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgSGFuZGxlIGN1c3RvbSBpZGVudGlmaWVycyBhbmQgc3RyaW5ncyBzZXBhcmF0ZWx5LCBz
byB3ZSBjYW4gcXVvdGUgc3RyaW5ncyBjb3JyZWN0bHkgY29uc2lzdGVudGx5CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBhYzJmNTRjMTliYjRmY2VjMmE1NzkwMGNlZGM0NTI2OWQ3
YjJlZjU3Li4xYmM3NTllM2U4ZTAyMmZhMGFlYjE3N2I3NjFkOWZiMjA5ODAzYjA0IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wNi0wOSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IENTUyBzZXJpYWxpemF0
aW9uIGlzc3VlcyBhZmZlY3RpbmcgY3NzLWNvdW50ZXItc3R5bGVzIHRlc3RzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY3MDgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLWNvdW50ZXItc3R5bGVzL2NvdW50ZXItc3R5bGUtYWRkaXRpdmUtc3ltYm9scy1z
eW50YXgtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWNvdW50ZXItc3R5bGVzL2NvdW50ZXItc3R5bGUtc3ltYm9scy1zeW50YXgtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXN5bnRheC91cmwtd2hpdGVz
cGFjZS1jb25zdW1wdGlvbi1leHBlY3RlZC50eHQ6CisgICAgICAgIFVwZGF0ZWQgdG8gcmVmbGVj
dCBwcm9ncmVzc2lvbnMuCisKIDIwMjEtMDYtMDYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIEhhbmRsZSBjdXN0b20gaWRlbnRpZmllcnMgYW5kIHN0cmluZ3Mgc2Vw
YXJhdGVseSwgc28gd2UgY2FuIHF1b3RlIHN0cmluZ3MgY29ycmVjdGx5IGNvbnNpc3RlbnRseQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2UtYm9yZGVyLWltYWdlLXJlcGVh
dC1udWxsLWNyYXNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BhcnNlLWJv
cmRlci1pbWFnZS1yZXBlYXQtbnVsbC1jcmFzaC1leHBlY3RlZC50eHQKaW5kZXggYzAyMmY5ODE0
ZGJlZGE5NzE4NDI1N2NhMDU0YzEzMGQ0YTk2ODkzMS4uZTllYTU0MGEyM2Q1ZWEwODFhNzZjNzRm
MGYzMDJkYWYyMjBjY2JlOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2Ut
Ym9yZGVyLWltYWdlLXJlcGVhdC1udWxsLWNyYXNoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9wYXJzZS1ib3JkZXItaW1hZ2UtcmVwZWF0LW51bGwtY3Jhc2gtZXhwZWN0
ZWQudHh0CkBAIC0xLDIgKzEsMiBAQAotQ09OU09MRSBNRVNTQUdFOiBib3JkZXItaW1hZ2Utc291
cmNlOiB1cmwoInNoYWRvdy1ib3JkZXIucG5nIik7IGJvcmRlci1pbWFnZS1zbGljZTogMTA7IGJv
cmRlci1pbWFnZS1yZXBlYXQ6IHN0cmV0Y2g7CitDT05TT0xFIE1FU1NBR0U6IGJvcmRlci1pbWFn
ZS1zb3VyY2U6IHVybCgiaW1hZ2VzL3NoYWRvdy1ib3JkZXIucG5nIik7IGJvcmRlci1pbWFnZS1z
bGljZTogMTA7IGJvcmRlci1pbWFnZS1yZXBlYXQ6IHN0cmV0Y2g7CiBUaGlzIHRlc3Qgc2hvdWxk
IG5vdCBjcmFzaApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdXJpLXRva2VuLXBh
cnNpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdXJpLXRva2VuLXBhcnNp
bmctZXhwZWN0ZWQudHh0CmluZGV4IDljYzBlNDM4NmI1Mjc1MjQwZWZjZWE5NDk4NzQ4ZWVhMzIx
MGExNzMuLjdiNWI0OGYzYjExODA1OTU1Y2M4NDQwMjZkNzMyZjNlZTFhM2Q5NWMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3VyaS10b2tlbi1wYXJzaW5nLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy91cmktdG9rZW4tcGFyc2luZy1leHBlY3RlZC50eHQK
QEAgLTksMTQgKzksMTQgQEAgUnVsZXMgZnJvbSB0aGUgc3R5bGVzaGVldDoKICNjIHsgY29udGVu
dDogdXJsKCJlIik7IH0KICNkIHsgY29udGVudDogdXJsKCJmIik7IH0KICNmIHsgY29udGVudDog
dXJsKCJjIik7IH0KLSNnIHsgY29udGVudDogdXJsKCJkIik7IH0KLSNoIHsgY29udGVudDogdXJs
KCJlIik7IH0KLSNpIHsgY29udGVudDogdXJsKCJmIik7IH0KKyNnIHsgY29udGVudDogdXJsKCIg
ZCIpOyB9CisjaCB7IGNvbnRlbnQ6IHVybCgiZSAiKTsgfQorI2kgeyBjb250ZW50OiB1cmwoIiBm
ICIpOyB9CiAjaiB7IGNvbnRlbnQ6IHVybCgidXJsKGcpIik7IH0KICNsIHsgY29udGVudDogdXJs
KCJjIik7IH0KLSNtIHsgY29udGVudDogdXJsKCJkIik7IH0KLSNuIHsgY29udGVudDogdXJsKCJl
Iik7IH0KLSNvIHsgY29udGVudDogdXJsKCJmIik7IH0KKyNtIHsgY29udGVudDogdXJsKCIgZCIp
OyB9CisjbiB7IGNvbnRlbnQ6IHVybCgiZSAiKTsgfQorI28geyBjb250ZW50OiB1cmwoIiBmICIp
OyB9CiAjcCB7IGNvbnRlbnQ6IHVybCgidXJsKGcpIik7IH0KICNxIHsgY3Vyc29yOiB1cmwoInVy
bChxKSIpLCBkZWZhdWx0OyB9CiAjciB7IGxpc3Qtc3R5bGUtaW1hZ2U6IHVybCgidXJsKHIpIik7
IH0KQEAgLTI0LDkgKzI0LDkgQEAgUnVsZXMgZnJvbSB0aGUgc3R5bGVzaGVldDoKICN0IHsgLXdl
YmtpdC1tYXNrLWltYWdlOiB1cmwoInVybCh0KSIpOyB9CiAjdSB7IC13ZWJraXQtYm9yZGVyLWlt
YWdlOiB1cmwoInVybCh1KSIpIDEgMiAzIDQgZmlsbCBzdHJldGNoIHJvdW5kOyB9CiAjdiB7IC13
ZWJraXQtbWFzay1ib3gtaW1hZ2U6IHVybCgidXJsKHYpIikgMSAyIDMgNCBmaWxsIHN0cmV0Y2gg
cm91bmQ7IH0KLSN3IHsgY29udGVudDogdXJsKCJ3dyIpOyB9Ci0jeCB7IGNvbnRlbnQ6IHVybCgi
eCUyMHh4Iik7IH0KLSN5IHsgY29udGVudDogdXJsKCJ5JTIweXkiKTsgfQorI3cgeyBjb250ZW50
OiB1cmwoIndcZCB3Iik7IH0KKyN4IHsgY29udGVudDogdXJsKCIgeCB4XDkgeCAiKTsgfQorI3kg
eyBjb250ZW50OiB1cmwoInkgeVw5IHkiKTsgfQogRXhwZWN0ZWQgcmVzdWx0OgogCiAjYSB7IGNv
bnRlbnQ6IHVybCgiYyIpOyB9CkBAIC0zNCwxNCArMzQsMTQgQEAgRXhwZWN0ZWQgcmVzdWx0Ogog
I2MgeyBjb250ZW50OiB1cmwoImUiKTsgfQogI2QgeyBjb250ZW50OiB1cmwoImYiKTsgfQogI2Yg
eyBjb250ZW50OiB1cmwoImMiKTsgfQotI2cgeyBjb250ZW50OiB1cmwoImQiKTsgfQotI2ggeyBj
b250ZW50OiB1cmwoImUiKTsgfQotI2kgeyBjb250ZW50OiB1cmwoImYiKTsgfQorI2cgeyBjb250
ZW50OiB1cmwoIiBkIik7IH0KKyNoIHsgY29udGVudDogdXJsKCJlICIpOyB9CisjaSB7IGNvbnRl
bnQ6IHVybCgiIGYgIik7IH0KICNqIHsgY29udGVudDogdXJsKCJ1cmwoZykiKTsgfQogI2wgeyBj
b250ZW50OiB1cmwoImMiKTsgfQotI20geyBjb250ZW50OiB1cmwoImQiKTsgfQotI24geyBjb250
ZW50OiB1cmwoImUiKTsgfQotI28geyBjb250ZW50OiB1cmwoImYiKTsgfQorI20geyBjb250ZW50
OiB1cmwoIiBkIik7IH0KKyNuIHsgY29udGVudDogdXJsKCJlICIpOyB9CisjbyB7IGNvbnRlbnQ6
IHVybCgiIGYgIik7IH0KICNwIHsgY29udGVudDogdXJsKCJ1cmwoZykiKTsgfQogI3EgeyBjdXJz
b3I6IHVybCgidXJsKHEpIiksIGRlZmF1bHQ7IH0KICNyIHsgbGlzdC1zdHlsZS1pbWFnZTogdXJs
KCJ1cmwocikiKTsgfQpAQCAtNDksNyArNDksNyBAQCBFeHBlY3RlZCByZXN1bHQ6CiAjdCB7IC13
ZWJraXQtbWFzay1pbWFnZTogdXJsKCJ1cmwodCkiKTsgfQogI3UgeyAtd2Via2l0LWJvcmRlci1p
bWFnZTogdXJsKCJ1cmwodSkiKSAxIDIgMyA0IGZpbGwgc3RyZXRjaCByb3VuZDsgfQogI3YgeyAt
d2Via2l0LW1hc2stYm94LWltYWdlOiB1cmwoInVybCh2KSIpIDEgMiAzIDQgZmlsbCBzdHJldGNo
IHJvdW5kOyB9Ci0jdyB7IGNvbnRlbnQ6IHVybCgid3ciKTsgfQotI3ggeyBjb250ZW50OiB1cmwo
InglMjB4eCIpOyB9Ci0jeSB7IGNvbnRlbnQ6IHVybCgieSUyMHl5Iik7IH0KKyN3IHsgY29udGVu
dDogdXJsKCJ3XGQgdyIpOyB9CisjeCB7IGNvbnRlbnQ6IHVybCgiIHggeFw5IHggIik7IH0KKyN5
IHsgY29udGVudDogdXJsKCJ5IHlcOSB5Iik7IH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvdXJpLXRva2VuLXBhcnNpbmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3Vy
aS10b2tlbi1wYXJzaW5nLmh0bWwKaW5kZXggNjc3YzlkMTUzNGVkNzI2NWFhMjNhMWIwMGZhZDIz
NTI2OTJmNWE3ZC4uNjFlNTcyMTI4MmI4NTUzYWJmYWNiM2MwNzIzMTg1MzI3ODRmNzUyMyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdXJpLXRva2VuLXBhcnNpbmcuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy91cmktdG9rZW4tcGFyc2luZy5odG1sCkBAIC00NCwxMyAr
NDQsNyBAQCBmdW5jdGlvbiBydW5UZXN0KCkKICAgICB2YXIgcnVsZXMgPSBkb2N1bWVudC5zdHls
ZVNoZWV0c1swXS5jc3NSdWxlczsKICAgICB2YXIgdGV4dCA9ICIiOwogICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgcnVsZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgdmFyIGl0ZW1UZXh0ID0gcnVs
ZXMuaXRlbShpKS5jc3NUZXh0OwotCi0gICAgICAgIC8vIFdvcmsgYXJvdW5kIGJ1ZyB3aGVyZSBX
ZWJLaXQgY29tcGxldGVzIHRoZSBVUkxzIGluIHRoZSBDU1MgRE9NLgotICAgICAgICAvLyBUaGUg
Y29tcGxldGlvbiBvZiB0aGUgVVJMIHNob3VsZCBiZSB3aGVuIHRoZXkgYXJlIHVzZWQsIG5vdCBp
biB0aGUgRE9NLgotICAgICAgICBpdGVtVGV4dCA9IGl0ZW1UZXh0LnJlcGxhY2UoL2ZpbGU6LipM
YXlvdXRUZXN0c1wvZmFzdFwvY3NzXC8vLCAiIik7Ci0KLSAgICAgICAgdGV4dCArPSBpdGVtVGV4
dDsKKyAgICAgICAgdGV4dCArPSBydWxlcy5pdGVtKGkpLmNzc1RleHQ7CiAgICAgICAgIHRleHQg
Kz0gIlxuIjsKICAgICB9CiAKQEAgLTgzLDE0ICs3NywxNCBAQCBmdW5jdGlvbiBydW5UZXN0KCkK
ICNjIHsgY29udGVudDogdXJsKCJlIik7IH0KICNkIHsgY29udGVudDogdXJsKCJmIik7IH0KICNm
IHsgY29udGVudDogdXJsKCJjIik7IH0KLSNnIHsgY29udGVudDogdXJsKCJkIik7IH0KLSNoIHsg
Y29udGVudDogdXJsKCJlIik7IH0KLSNpIHsgY29udGVudDogdXJsKCJmIik7IH0KKyNnIHsgY29u
dGVudDogdXJsKCIgZCIpOyB9CisjaCB7IGNvbnRlbnQ6IHVybCgiZSAiKTsgfQorI2kgeyBjb250
ZW50OiB1cmwoIiBmICIpOyB9CiAjaiB7IGNvbnRlbnQ6IHVybCgidXJsKGcpIik7IH0KICNsIHsg
Y29udGVudDogdXJsKCJjIik7IH0KLSNtIHsgY29udGVudDogdXJsKCJkIik7IH0KLSNuIHsgY29u
dGVudDogdXJsKCJlIik7IH0KLSNvIHsgY29udGVudDogdXJsKCJmIik7IH0KKyNtIHsgY29udGVu
dDogdXJsKCIgZCIpOyB9CisjbiB7IGNvbnRlbnQ6IHVybCgiZSAiKTsgfQorI28geyBjb250ZW50
OiB1cmwoIiBmICIpOyB9CiAjcCB7IGNvbnRlbnQ6IHVybCgidXJsKGcpIik7IH0KICNxIHsgY3Vy
c29yOiB1cmwoInVybChxKSIpLCBkZWZhdWx0OyB9CiAjciB7IGxpc3Qtc3R5bGUtaW1hZ2U6IHVy
bCgidXJsKHIpIik7IH0KQEAgLTk4LDkgKzkyLDkgQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAjdCB7
IC13ZWJraXQtbWFzay1pbWFnZTogdXJsKCJ1cmwodCkiKTsgfQogI3UgeyAtd2Via2l0LWJvcmRl
ci1pbWFnZTogdXJsKCJ1cmwodSkiKSAxIDIgMyA0IGZpbGwgc3RyZXRjaCByb3VuZDsgfQogI3Yg
eyAtd2Via2l0LW1hc2stYm94LWltYWdlOiB1cmwoInVybCh2KSIpIDEgMiAzIDQgZmlsbCBzdHJl
dGNoIHJvdW5kOyB9Ci0jdyB7IGNvbnRlbnQ6IHVybCgid3ciKTsgfQotI3ggeyBjb250ZW50OiB1
cmwoInglMjB4eCIpOyB9Ci0jeSB7IGNvbnRlbnQ6IHVybCgieSUyMHl5Iik7IH0KKyN3IHsgY29u
dGVudDogdXJsKCJ3XGQgdyIpOyB9CisjeCB7IGNvbnRlbnQ6IHVybCgiIHggeFw5IHggIik7IH0K
KyN5IHsgY29udGVudDogdXJsKCJ5IHlcOSB5Iik7IH0KIDwvcHJlPgogCiA8c2NyaXB0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbm5lckhUTUwvaW5uZXJIVE1MLXVyaS1yZXNvbHV0
aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2lubmVySFRNTC9pbm5lckhUTUwtdXJpLXJlc29s
dXRpb24uaHRtbAppbmRleCA4NTRlMGYxYTBiNzEzNzY5Y2MzOTY2ODU0NDY3MzFkODJkYzEwNTMx
Li40NDQ0MjU0ZmJhMWM5YzE3OGVjMTFiNjUwZjRmNTYyYTJmZTgwYzU4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2lubmVySFRNTC9pbm5lckhUTUwtdXJpLXJlc29sdXRpb24uaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2lubmVySFRNTC9pbm5lckhUTUwtdXJpLXJlc29sdXRpb24u
aHRtbApAQCAtMTMsMTEgKzEzLDExIEBACiAgIAogICB2YXIgY3VycmVudFVyaSA9IGRvY3VtZW50
LmxvY2F0aW9uLmhyZWY7CiAgIHZhciBjdXJyZW50UGF0aCA9IGN1cnJlbnRVcmkuc3Vic3RyaW5n
KDAsIGN1cnJlbnRVcmkubGFzdEluZGV4T2YoJy8nKSk7Ci0gIHZhciBjc3NVcmlXYXNSZXNvbHZl
ZEFnYWluc3REb2N1bWVudFVyaSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0LXNwYW4i
KS5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2UgPT0gJ3VybCgiJyArIGN1cnJlbnRQYXRoICsgJy9pbWFn
ZS5wbmciKSc7CisgIHZhciBjc3NVcmlXYXNSZXNvbHZlZEFnYWluc3REb2N1bWVudFVyaSA9IGdl
dENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3Qtc3BhbiIpKS5iYWNr
Z3JvdW5kSW1hZ2UgPT0gJ3VybCgiJyArIGN1cnJlbnRQYXRoICsgJy9pbWFnZS5wbmciKSc7CiAg
IAogICAvLyBDYW4ndCBsb2cgdGhlIGFjdHVhbCBwYXRoIHNpbmNlIGl0J3MgZGlmZmVyZW50IGRl
cGVuZGluZyBvbiB3aGVyZSB0aGUgdGVzdCBpcyBydW4uCiAgIHNob3VsZEJlVHJ1ZSgnY3NzVXJp
V2FzUmVzb2x2ZWRBZ2FpbnN0RG9jdW1lbnRVcmknKTsKIDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgotPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb3VudGVy
LXN0eWxlcy9jb3VudGVyLXN0eWxlLWFkZGl0aXZlLXN5bWJvbHMtc3ludGF4LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1j
b3VudGVyLXN0eWxlcy9jb3VudGVyLXN0eWxlLWFkZGl0aXZlLXN5bWJvbHMtc3ludGF4LWV4cGVj
dGVkLnR4dAppbmRleCA0ZWRjYWE0ZmMxZmE5YjFjOWRiYjRiYmZkMWFjMTEyOWYzOGIyNDlmLi5k
OTY1ODc2YjYwZDMwNjU0MTA5ODVhYjA3Mzc3NzUyMTViZjRkZjI5IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY291bnRlci1z
dHlsZXMvY291bnRlci1zdHlsZS1hZGRpdGl2ZS1zeW1ib2xzLXN5bnRheC1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWNvdW50ZXItc3R5bGVzL2NvdW50ZXItc3R5bGUtYWRkaXRpdmUtc3ltYm9scy1zeW50YXgtZXhw
ZWN0ZWQudHh0CkBAIC0xLDggKzEsOCBAQAogCi1GQUlMIEBjb3VudGVyLXN0eWxlICdhZGRpdGl2
ZS1zeW1ib2xzOiAwICJYIicgaXMgdmFsaWQgYXNzZXJ0X25vdF9lcXVhbHM6IGdvdCBkaXNhbGxv
d2VkIHZhbHVlIC0xCi1GQUlMIEBjb3VudGVyLXN0eWxlICdhZGRpdGl2ZS1zeW1ib2xzOiAxICJY
IicgaXMgdmFsaWQgYXNzZXJ0X25vdF9lcXVhbHM6IGdvdCBkaXNhbGxvd2VkIHZhbHVlIC0xCi1G
QUlMIEBjb3VudGVyLXN0eWxlICdhZGRpdGl2ZS1zeW1ib2xzOiAiWCIgMScgaXMgdmFsaWQgYXNz
ZXJ0X25vdF9lcXVhbHM6IGdvdCBkaXNhbGxvd2VkIHZhbHVlIC0xCi1GQUlMIEBjb3VudGVyLXN0
eWxlICdhZGRpdGl2ZS1zeW1ib2xzOiA1ICJWIiwgMSAiSSInIGlzIHZhbGlkIGFzc2VydF9ub3Rf
ZXF1YWxzOiBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAtMQorUEFTUyBAY291bnRlci1zdHlsZSAnYWRk
aXRpdmUtc3ltYm9sczogMCAiWCInIGlzIHZhbGlkCitQQVNTIEBjb3VudGVyLXN0eWxlICdhZGRp
dGl2ZS1zeW1ib2xzOiAxICJYIicgaXMgdmFsaWQKK1BBU1MgQGNvdW50ZXItc3R5bGUgJ2FkZGl0
aXZlLXN5bWJvbHM6ICJYIiAxJyBpcyB2YWxpZAorUEFTUyBAY291bnRlci1zdHlsZSAnYWRkaXRp
dmUtc3ltYm9sczogNSAiViIsIDEgIkkiJyBpcyB2YWxpZAogUEFTUyBAY291bnRlci1zdHlsZSAn
YWRkaXRpdmUtc3ltYm9sczogJyBpcyBpbnZhbGlkCiBQQVNTIEBjb3VudGVyLXN0eWxlICdhZGRp
dGl2ZS1zeW1ib2xzOiAtMSAiWCInIGlzIGludmFsaWQKIFBBU1MgQGNvdW50ZXItc3R5bGUgJ2Fk
ZGl0aXZlLXN5bWJvbHM6IDEgIkkiLCA1ICJWIicgaXMgaW52YWxpZApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvdW50ZXIt
c3R5bGVzL2NvdW50ZXItc3R5bGUtc3ltYm9scy1zeW50YXgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvdW50ZXItc3R5
bGVzL2NvdW50ZXItc3R5bGUtc3ltYm9scy1zeW50YXgtZXhwZWN0ZWQudHh0CmluZGV4IDI2YjFk
YjhmYTA4YTc4ODFkNTU3OWIxZjFhMzA5MTA2MDU2MmMxMTUuLjRlMmVlNWNlMjk3ODFlOWQxM2Rl
YmY3MGFhZjEyNjhiOThlNzQ0YTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb3VudGVyLXN0eWxlcy9jb3VudGVyLXN0eWxl
LXN5bWJvbHMtc3ludGF4LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY291bnRlci1zdHlsZXMvY291bnRlci1zdHls
ZS1zeW1ib2xzLXN5bnRheC1leHBlY3RlZC50eHQKQEAgLTIsNyArMiw3IEBACiBQQVNTIEBjb3Vu
dGVyLXN0eWxlICdzeW1ib2xzOiAiWCInIGlzIHZhbGlkCiBQQVNTIEBjb3VudGVyLXN0eWxlICdz
eW1ib2xzOiAiWCIgIlgiJyBpcyB2YWxpZAogUEFTUyBAY291bnRlci1zdHlsZSAnc3ltYm9sczog
aWRlbnQgIlgiJyBpcyB2YWxpZAotRkFJTCBAY291bnRlci1zdHlsZSAnc3ltYm9sczogaWRlbnQg
IlgiIHVybCgiZm9vLmpwZyIpJyBpcyB2YWxpZCBhc3NlcnRfbm90X2VxdWFsczogZ290IGRpc2Fs
bG93ZWQgdmFsdWUgLTEKK1BBU1MgQGNvdW50ZXItc3R5bGUgJ3N5bWJvbHM6IGlkZW50ICJYIiB1
cmwoImZvby5qcGciKScgaXMgdmFsaWQKIFBBU1MgQGNvdW50ZXItc3R5bGUgJ3N5bWJvbHM6ICcg
aXMgaW52YWxpZAogUEFTUyBAY291bnRlci1zdHlsZSAnc3ltYm9sczogaW5pdGlhbCAiWCIgIlgi
JyBpcyBpbnZhbGlkCiBQQVNTIEBjb3VudGVyLXN0eWxlICdzeW1ib2xzOiBpbmhlcml0ICJYIiAi
WCInIGlzIGludmFsaWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zeW50YXgvdXJsLXdoaXRlc3BhY2UtY29uc3VtcHRpb24t
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLXN5bnRheC91cmwtd2hpdGVzcGFjZS1jb25zdW1wdGlvbi1leHBlY3RlZC50eHQK
aW5kZXggMTI0ODY5OWQwMTk0NTBlZDEwNzc5MmFhMGE3YmY2ZTk2NDY1NjI4MC4uZmZlOTRiOGRi
NWI2MzNhMDAwZjdjMWIzNGNlYzQwZDkwYTdmZTA4MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXN5bnRheC91cmwtd2hpdGVz
cGFjZS1jb25zdW1wdGlvbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXN5bnRheC91cmwtd2hpdGVzcGFjZS1jb25z
dW1wdGlvbi1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgd2hpdGVzcGFjZSBp
cyBvcHRpb25hbCBiZXR3ZWVuIHVybCggdG9rZW4gYW5kIHRoZSBzdHJpbmcgdG9rZW4gYXNzZXJ0
X2VxdWFsczogZXhwZWN0ZWQgInVybChcImZvb1wiKSIgYnV0IGdvdCAidXJsKFwiaHR0cDovL2xv
Y2FsaG9zdDo4ODAwL2Nzcy9jc3Mtc3ludGF4L2Zvb1wiKSIKK1BBU1Mgd2hpdGVzcGFjZSBpcyBv
cHRpb25hbCBiZXR3ZWVuIHVybCggdG9rZW4gYW5kIHRoZSBzdHJpbmcgdG9rZW4KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431462</attachid>
            <date>2021-06-15 12:10:43 -0700</date>
            <delta_ts>2021-06-15 17:05:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226708-20210615121042.patch</filename>
            <type>text/plain</type>
            <size>79299</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2M0ZmQzOWYxYjdjYTQ2
ZTJkODRmYjhjZjY5NTQ1N2YxNWViODlhYy4uODkyOTVlNTk3ZGE2MGNjOGEzODBjYjAxNTdmY2Ey
NDdjODg4NzY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0OCBAQAorMjAyMS0wNi0xNSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IENTUyBzZXJpYWxpemF0
aW9uIGlzc3VlcyBhZmZlY3RpbmcgY3NzLWNvdW50ZXItc3R5bGVzIHRlc3RzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY3MDgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggdHdvIHNlcmlhbGl6YXRp
b24gaXNzc3VlcyBhZmZlY3RpbmcgY3NzLWNvdW50ZXItc3R5bGVzIHRlc3RzOgorCisgICAgICAg
IDEpIFVSTHMgd2VyZSBzZXJpYWxpemluZyB0aGUgZnVsbCByZXNvbHZlZCBVUkwsIHJhdGhlciB0
aGFuIHRoZQorICAgICAgICAgICBwYXJ0aWFsIFVSTCBzdHJpbmcgZnJvbSB0aGUgc3R5bGUgc2hl
ZXQuCisgICAgICAgIDIpIEl0ZW1zIGluIGFkZGl0aXZlLXN5bWJvbHMgdGhhdCBoYWQgYm90aCBh
biBpbnRlZ2VyIGFuZCBhIHN0cmluZworICAgICAgICAgICB3b3VsZCBpbmNvcnJlY3RseSBzZXJp
YWxpemUgd2l0aCBhIGNvbW1hIHdpdGhpbiB0aGUgaXRlbS4KKworICAgICAgICAqIGNzcy9DU1ND
cm9zc2ZhZGVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1ZTo6
dmFsdWVXaXRoU3R5bGVzUmVzb2x2ZWQpOiBBZGRlZC4KKyAgICAgICAgQ2FsbHMgcmVzb2x2ZUlt
YWdlU3R5bGVzIG9uIHRoZSBpbWFnZSB2YWx1ZXMuCisgICAgICAgICogY3NzL0NTU0Nyb3NzZmFk
ZVZhbHVlLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIGNzcy9DU1NDdXJz
b3JJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1cnNvckltYWdlVmFsdWU6
OkNTU0N1cnNvckltYWdlVmFsdWUpOiBDaGFuZ2VkIHRoZSBob3Qgc3BvdAorICAgICAgICB0byB1
c2Ugc3RkOjpvcHRpb25hbCBpbnN0ZWFkIG9mIGEgc2VwYXJhdGUgYm9vbGVhbi4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU0N1cnNvckltYWdlVmFsdWU6OmNyZWF0ZSk6IE1vdmVkIHRoaXMgb3V0IG9m
IHRoZSBoZWFkZXIKKyAgICAgICAgYmVjYXVzZSBpdCdzIG5vdCBiZXR0ZXIgZm9yIGlubGluaW5n
IHRvIGhhdmUgaXQgdGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpDU1NDdXJzb3JJbWFnZVZhbHVl
OjpjdXN0b21DU1NUZXh0IGNvbnN0KTogVXBkYXRlZCBmb3IgdGhlCisgICAgICAgIG1faG90U3Bv
dCBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6dXBkYXRl
Q3Vyc29yRWxlbWVudCk6IFJlbW92ZWQgdW5uZWVkZWQKKyAgICAgICAgY2hlY2sgb2YgaGFzRnJh
Z21lbnRJZGVudGlmaWVyLCB3aGljaCBpcyBhbHJlYWR5IGRvbmUgYnkgdGhlCisgICAgICAgIFNW
R1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcgZnVuY3Rpb24uIFVwZGF0
ZWQgdG8gdXNlCisgICAgICAgIG1fb3JpZ2luYWxTcGVjaWZpZWRVUkxTdHJpbmcsIGFuZCBhZGRl
ZCBhIEZJWE1FIGFib3V0IHRoZSBzdHJhbmdlIHdheQorICAgICAgICB0aGlzIGp1c3Qga2VlcHMg
YWNjdW11bGF0aW5nIG1vcmUgYW5kIG1vcmUgY2xpZW50cyBpbiBhIHNldCwgYnV0IGRpZAorICAg
ICAgICBub3QgY2hhbmdlIHRoYXQgYmVoYXZpb3IuCisgICAgICAgIChXZWJDb3JlOjpDU1NDdXJz
b3JJbWFnZVZhbHVlOjpjdXJzb3JFbGVtZW50UmVtb3ZlZCk6IEFkZGVkIGEgRklYTUUuCisgICAg
ICAgIChXZWJDb3JlOjpDU1NDdXJzb3JJbWFnZVZhbHVlOjpjdXJzb3JFbGVtZW50Q2hhbmdlZCk6
IFVwZGF0ZWQgZm9yIHRoZQorICAgICAgICBjaGFuZ2UgdG8gbV9ob3RTcG90IGFuZCBhZGRkZWQg
c29tZSBGSVhNRS4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1cnNvckltYWdlVmFsdWU6OmVxdWFs
cyBjb25zdCk6IFVwZGF0ZWQgZm9yIHRoZSBtX2hvdFNwb3QKKyAgICAgICAgY2hhbmdlOyBtdWNo
IHNpbXBsZXIgc2luY2Ugc3RkOjpvcHRpb25hbCBkb2VzIHRoZSByaWdodCB0aGluZy4KKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0N1cnNvckltYWdlVmFsdWU6OnZhbHVlV2l0aFN0eWxlc1Jlc29sdmVk
KTogQWRkZWQuCisgICAgICAgIENhbGxzIHJlc29sdmVJbWFnZVN0eWxlcyBvbiB0aGUgaW1hZ2Ug
dmFsdWUuCisgICAgICAgICogY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaDogVXBkYXRlZCBmb3Ig
dGhlIGFib3ZlIGNoYW5nZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXJJbWFnZVZhbHVlOjp2YWx1ZVdpdGhTdHls
ZXNSZXNvbHZlZCk6IEFkZGVkLgorICAgICAgICBDYWxscyByZXNvbHZlSW1hZ2VTdHlsZXMgb24g
dGhlIGltYWdlIHZhbHVlIGFuZCBhbHNvIGNhbGxzCisgICAgICAgIGNyZWF0ZUZpbHRlck9wZXJh
dGlvbnMuCisgICAgICAgICogY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuaDogVXBkYXRlZCBmb3Ig
dGhlIGFib3ZlLgorCisgICAgICAgICogY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRWYWx1ZTo6dmFsdWVXaXRoU3R5bGVzUmVzb2x2ZWQpOiBS
ZW5hbWVkIGZyb20KKyAgICAgICAgZ3JhZGllbnRXaXRoU3R5bGVzUmVzb2x2ZWQuCisgICAgICAg
ICogY3NzL0NTU0dyYWRpZW50VmFsdWUuaDogVXBkYXRlZCBmb3IgdGhlIGFib3ZlLgorCisgICAg
ICAgICogY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1h
Z2VTZXRWYWx1ZTo6dmFsdWVXaXRoU3R5bGVzUmVzb2x2ZWQpOiBSZW5hbWVkIGZyb20KKyAgICAg
ICAgaW1hZ2VTZXRXaXRoU3R5bGVzUmVzb2x2ZWQuIE9wdGltaXplZCB0aGUgY2FzZSB3aGVyZSB0
aGUgcmVzb2x2ZWQKKyAgICAgICAgdmVyc2lvbiBpcyBub3QgZGlmZmVyZW50IHRvIHJlLXVzZSB0
aGUgb3JpZ2luYWwgQ1NTSW1hZ2VTZXRWYWx1ZS4KKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VTZXRW
YWx1ZS5oOiBVcGRhdGVkIGZvciB0aGUgYWJvdmUuCisKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VW
YWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KTogQWRkZWQuIENoZWNrIGlm
IHR3byBEdWFsTG9jYXRpb24gYXJlIGVxdWFsLgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VW
YWx1ZTo6Q1NTSW1hZ2VWYWx1ZSk6IFRha2UgRHVhbExvY2F0aW9uIGluc3RlYWQKKyAgICAgICAg
b2YgYSBVUkwuIEFsc28gdXBkYXRlZCB0byB1c2Ugc3RkOjpvcHRpb25hbCBpbnN0ZWFkIG9mIGEg
c2VwYXJhdGUKKyAgICAgICAgbV9hY2Nlc3NlZEltYWdlIGJvb2xlYW4uCisgICAgICAgIChXZWJD
b3JlOjpDU1NJbWFnZVZhbHVlOjpjcmVhdGUpOiBBZGRlZCBhbiBvdmVybG9hZCB0aGF0IHRha2Vz
CisgICAgICAgIER1YWxMb2NhdGlvbiBhcmd1bWVudCBhbmQgYWxzbyBtb3ZlZCBoZXJlIGZyb20g
dGhlIGhlYWRlciBzaW5jZSB3ZQorICAgICAgICBkb24ndCBnZXQgYW55IGJlbmVmaXQgZnJvbSBp
bmxpbmluZy4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlVmFsdWU6OmlzUGVuZGluZyBjb25z
dCk6IFVwZGF0ZXMgc2luY2UgbV9jYWNoZWRJbWFnZQorICAgICAgICBpcyBub3cgYSBzdGQ6Om9w
dGlvbmFsLCBhbmQgdGhlIHN0ZDo6bnVsbG9wdCBjYXNlIGlzIHVzZWQgZm9yIHRoaXMuCisgICAg
ICAgIChXZWJDb3JlOjpDU1NJbWFnZVZhbHVlOjpyZXNvbHZlZFVSTCBjb25zdCk6IEFkZGVkLiBV
c2VkIHNvIHdlIGNhbgorICAgICAgICBzaGFyZSBjb2RlIGJldHdlZW4gdGhlIGZvbGxvd2luZyBm
dW5jdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVZhbHVlOjp2YWx1ZVdpdGhTdHls
ZXNSZXNvbHZlZCk6IEFkZGVkLiBDb21wdXRlcworICAgICAgICB0aGUgZnVsbHkgcmVzb2x2ZWQg
VVJMIGFuZCBtYWtlcyBhIG5ldyBpbWFnZSB2YWx1ZSBpZiBuZWVkZWQgdGhhdAorICAgICAgICBh
bHdheXMgdXNlcyBpdC4gQWxzbyBwb2ludHMgdGhlIG5ldyB2YWx1ZSBhdCB0aGUgb2xkIG9uZSBz
byB3ZSBjYW4KKyAgICAgICAgdXBkYXRlIG1fY2FjaGVkSW1hZ2UgaW4gYm90aC4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ltYWdlVmFsdWU6OmxvYWRJbWFnZSk6IFVzZSB0aGUgbmV3IHJlc29sdmVk
VVJMIGZ1bmN0aW9uLgorICAgICAgICBBbHNvIHVwZGF0ZSBtX2NhY2hlZEltYWdlIGluIGFueSB1
bmRlcmx5aW5nIG9iamVjdHMuCisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVZhbHVlOjp0cmF2
ZXJzZVN1YnJlc291cmNlcyk6IFVwZGF0ZWQgZm9yIGNoYW5nZQorICAgICAgICB0byBtX2NhY2hl
ZEltYWdlLgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VWYWx1ZTo6ZXF1YWxzIGNvbnN0KTog
VXBkYXRlZCBmb3IgY2hhbmdlIHRvIHVzZQorICAgICAgICBEdWFsTG9jYXRpb24uCisgICAgICAg
IChXZWJDb3JlOjpDU1NJbWFnZVZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KTogRGl0dG8uIFRo
aXMgaXMgdGhlCisgICAgICAgIG9ubHkgcGxhY2Ugd2hlcmUgd2UgdXNlIHNwZWNpZmllZFVSTFN0
cmluZy4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlVmFsdWU6OmNyZWF0ZURlcHJlY2F0ZWRD
U1NPTVdyYXBwZXIgY29uc3QpOiBVcGRhdGVkCisgICAgICAgIGZvciBjaGFuZ2UgZnJvbSBtX3Vy
bC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlVmFsdWU6Omtub3duVG9CZU9wYXF1ZSBjb25z
dCk6IFVwZGF0ZWQgZm9yIGNoYW5nZQorICAgICAgICB0byBtX2NhY2hlZEltYWdlLgorICAgICAg
ICAqIGNzcy9DU1NJbWFnZVZhbHVlLmg6IEFkZGVkIER1YWxMb2NhdGlvbiwgbmV3IGNyZWF0ZQor
ICAgICAgICBvdmVybG9hZHMuIFJlcGxhY2VkIHVybCgpIGZ1bmN0aW9uIHdpdGggbG9jYXRpb24o
KSBmdW5jdGlvbiwgd2hpY2gKKyAgICAgICAgcmV0dXJucyBhIHN0cmluZy4gTm90ZSB0aGF0IHRo
aXMgYWx3YXlzIHJldHVybnMgdGhlIHJlc29sdmVkIHN0cmluZywKKyAgICAgICAgb25seSBjdXN0
b21DU1NUZXh0IHJldHVybnMgdGhlIG9yaWdpbmFsIHN0cmluZy4gUmVwbGFjZWQgbV91cmwgd2l0
aAorICAgICAgICBtX2xvY2F0aW9uLCBlbGltaW5hdGVkIG1fYWNjZXNzZWRJbWFnZSBhbmQgbWFk
ZSBtX2NhY2hlZEltYWdlIHVzZQorICAgICAgICBzdGQ6Om9wdGlvbmFsIGluc3RlYWQuIEFkZGVk
IG1fdW5yZXNvbHZlZFZhbHVlLgorCisgICAgICAgICogY3NzL1N0eWxlU2hlZXRDb250ZW50cy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoZWV0Q29udGVudHM6OmNvbXBsZXRlVVJMIGNv
bnN0KTogRGVsZXRlZCB1bnVzZWQgZnVuY3Rpb24uCisgICAgICAgICogY3NzL1N0eWxlU2hlZXRD
b250ZW50cy5oOiBEaXR0by4KKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0Ojpjb21wbGV0ZVVSTCBj
b25zdCk6IFVwZGF0ZWQgdG8gcmV0dXJuCisgICAgICAgIER1YWxMb2NhdGlvbiBpbnN0ZWFkIG9m
IGEgVVJMLgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oOiBEaXR0by4K
KworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNvbXBsZXRlVVJMKTogRGVsZXRlZCB1bnVzZWQgZnVuY3Rpb24uCisgICAgICAgICog
Y3NzL3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuaDogRGl0dG8uCisKKyAgICAgICAgKiBjc3MvcGFy
c2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVDdXJz
b3IpOiBVc2Ugc3RkOjpvcHRpb25hbCBmb3IgdGhlIGhvdCBzcG90LgorICAgICAgICAoV2ViQ29y
ZTo6Y29uc3VtZUNvdW50ZXJTdHlsZUFkZGl0aXZlU3ltYm9scyk6IFB1dCB0aGUgaW50ZWdlci9z
eW1ib2wKKyAgICAgICAgcGFpciBpbnRvIGEgc2VwYXJhdGUgc3BhY2Utc2VwYXJhdGVkIGxpc3Qg
aW5zdGVhZCBvZiBhcHBlbmRpbmcgYm90aAorICAgICAgICB0byB0aGUgdG9wIGxldmVsIGNvbW1h
bmQtc2VwYXJhdGVkIGxpc3QuIEFsc28gcmVtb3ZlZCBzdXBwb3J0IGZvcgorICAgICAgICBub24t
c3RhbmRhcmQgImltYWdlIHdpdGhvdXQgc3ltYm9sIiBhbmQgInN5bWJvbCB3aXRob3V0IGltYWdl
Ii4KKyAgICAgICAgTmVpdGhlciB0aGUgc3BlY2lmaWNhdGlvbiBub3IgdGhlIHdlYiBwbGF0Zm9y
bSB0ZXN0cyBjdXJyZW50bHkgY2FsbAorICAgICAgICBmb3IgdGhhdC4KKworICAgICAgICAqIGNz
cy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZUltYWdlKTogQ2FsbCB0aGUgbmV3Cisg
ICAgICAgIG92ZXJsb2FkIG9mIENTU0ltYWdlVmFsdWU6OmNyZWF0ZSwgcGFzc2luZyBhIER1YWxM
b2NhdGlvbi4KKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJXb3JrZXJT
YWZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyc1dvcmtl
clNhZmU6OmNvbnN1bWVGb250RmFjZVNyY1VSSSk6CisgICAgICAgIFVwZGF0ZSBmb3IgdGhlIGNo
YW5nZSB0byBjb21wbGV0ZVVSTCBhbmQgcmVmYWN0b3IgYSBiaXQuIExhdGVyIHdlIGNvdWxkCisg
ICAgICAgIG1ha2UgdGhlIHNhbWUga2luZCBvZiBmaXggZm9yIENTU0ZvbnRGYWNlU3JjVmFsdWUg
dGhhdCB3ZSBkaWQgaW4gdGhpcworICAgICAgICBwYXRjaCBmb3IgQ1NTSW1hZ2VWYWx1ZSwgYnV0
IGRpZCBub3QgdHJ5IHRoYXQgZm9yIG5vdy4KKworICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWRkQ3Vyc29y
KTogVXBkYXRlZCB0byB0YWtlIGEgc3RkOjpvcHRpb25hbCBmb3IKKyAgICAgICAgdGhlIGhvdCBz
cG90LgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOiBEaXR0by4KKwor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlQ2FjaGVkSW1hZ2U6OmltYWdlVVJMKTogVXBkYXRlZCBmb3IgQ1NTSW1h
Z2VWYWx1ZTo6bG9jYXRpb24uCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3Vyc29y
SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXJzb3JJbWFnZTo6c2V0Q29udGFp
bmVyQ29udGV4dEZvclJlbmRlcmVyKTogRGl0dG8uCisKKyAgICAgICAgKiBzdHlsZS9TdHlsZUJ1
aWxkZXJDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjph
cHBseVZhbHVlQ29udGVudCk6IENhbGwKKyAgICAgICAgcmVzb2x2ZUltYWdlU3R5bGVzIGNvbnNp
c3RlbnRseS4KKworICAgICAgICAqIHN0eWxlL1N0eWxlQnVpbGRlclN0YXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyU3RhdGU6OnJlc29sdmVJbWFnZVN0eWxlcyk6IENh
bGwgdGhlIG5ldworICAgICAgICB2YWx1ZVdpdGhTdHlsZXNSZXNvbHZlZCBmdW5jdGlvbiBvbiBh
bGwgdGhlIGRpZmZlcmVudCBpbWFnZSB2YWx1ZQorICAgICAgICB0eXBlcy4gVGhpcyB1bmlmaWVz
IHRoZSBhcHByb2FjaCBhY3Jvc3MgYWxsIDYgY2xhc3Nlcy4KKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpCdWlsZGVyU3RhdGU6OmNyZWF0ZVN0eWxlSW1hZ2UpOiBUd2Vha2VkIHN0eWxlLgorCiAy
MDIxLTA2LTE1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtHUFUgUHJvY2Vzc10gQWRkIGEgYm91bmRzIGNoZWNrIGJlZm9yZSByZWFkaW5nIGRhdGEg
bGVuZ3RoIGZvciBvdXQtb2YtbGluZSBkaXNwbGF5IGxpc3QgaXRlbXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCmluZGV4IDhlYmVhNGIyYWIxZTI0N2RmNWVhNWNjNDZj
ODg1Y2MxMGNjN2IwZWEuLjJkZmY1YjE1MTVjMjlhNjA3ZGQwODE4ZjAxODBlODNjZWRiNzc3MzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0
ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zMyw4ICszMyw4
IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJDcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJTdHlsZUJ1aWxkZXJTdGF0ZS5oIgogI2luY2x1ZGUgIlN0eWxlQ2FjaGVkSW1hZ2UuaCIKLSNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtMjI4LDEwICsyMjgsMTggQEAgYm9vbCBDU1NDcm9zc2ZhZGVWYWx1ZTo6ZXF1YWxzKGNv
bnN0IENTU0Nyb3NzZmFkZVZhbHVlJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gZXF1YWxJbnB1
dEltYWdlcyhvdGhlcikgJiYgY29tcGFyZUNTU1ZhbHVlKG1fcGVyY2VudGFnZVZhbHVlLCBvdGhl
ci5tX3BlcmNlbnRhZ2VWYWx1ZSk7CiB9CiAKLQogYm9vbCBDU1NDcm9zc2ZhZGVWYWx1ZTo6ZXF1
YWxJbnB1dEltYWdlcyhjb25zdCBDU1NDcm9zc2ZhZGVWYWx1ZSYgb3RoZXIpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGNvbXBhcmVDU1NWYWx1ZShtX2Zyb21WYWx1ZSwgb3RoZXIubV9mcm9tVmFsdWUp
ICYmIGNvbXBhcmVDU1NWYWx1ZShtX3RvVmFsdWUsIG90aGVyLm1fdG9WYWx1ZSk7CiB9CiAKK1Jl
ZjxDU1NDcm9zc2ZhZGVWYWx1ZT4gQ1NTQ3Jvc3NmYWRlVmFsdWU6OnZhbHVlV2l0aFN0eWxlc1Jl
c29sdmVkKFN0eWxlOjpCdWlsZGVyU3RhdGUmIHN0YXRlKQoreworICAgIGF1dG8gZnJvbVZhbHVl
ID0gc3RhdGUucmVzb2x2ZUltYWdlU3R5bGVzKG1fZnJvbVZhbHVlLmdldCgpKTsKKyAgICBhdXRv
IHRvVmFsdWUgPSBzdGF0ZS5yZXNvbHZlSW1hZ2VTdHlsZXMobV90b1ZhbHVlLmdldCgpKTsKKyAg
ICBpZiAoZnJvbVZhbHVlLnB0cigpID09IG1fZnJvbVZhbHVlLnB0cigpICYmIHRvVmFsdWUucHRy
KCkgPT0gbV90b1ZhbHVlLnB0cigpKQorICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgcmV0dXJu
IGNyZWF0ZShXVEZNb3ZlKGZyb21WYWx1ZSksIFdURk1vdmUodG9WYWx1ZSksIFJlZiB7IG1fcGVy
Y2VudGFnZVZhbHVlIH0sIG1faXNQcmVmaXhlZCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgKaW5kZXggZWJhYjdhY2RlYzY4
ZDVhZjk5NDNhMDVlOGE4MDUzZDUyOTllODlmOS4uMjkzZTc1OTVlNWQzMDExZWJmOTNlNjI0NzBk
YWExYzhhYzI1NmExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFk
ZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjAs
NiArNjAsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQ3Jvc3NmYWRlVmFs
dWUmKSBjb25zdDsKICAgICBib29sIGVxdWFsSW5wdXRJbWFnZXMoY29uc3QgQ1NTQ3Jvc3NmYWRl
VmFsdWUmKSBjb25zdDsKIAorICAgIFJlZjxDU1NDcm9zc2ZhZGVWYWx1ZT4gdmFsdWVXaXRoU3R5
bGVzUmVzb2x2ZWQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYpOworCiBwcml2YXRlOgogICAgIENTU0Ny
b3NzZmFkZVZhbHVlKFJlZjxDU1NWYWx1ZT4mJiBmcm9tVmFsdWUsIFJlZjxDU1NWYWx1ZT4mJiB0
b1ZhbHVlLCBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+JiYgcGVyY2VudGFnZVZhbHVlLCBib29sIHBy
ZWZpeGVkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdl
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCmlu
ZGV4IDgyZGQwZThjOGIwMThjNzA1ZDZhNmI5YjhkMDc5OWQwMDQ2M2VmMzAuLjNkZWY4NjNkMmFh
NzMyYTA2ZWM3ZjQxYzdjMzcxOTc2MmY1YzVmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZS5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgKiAgICAgICAgICAgKEMpIDIwMDggTmlr
b2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIw
MDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKQEAgLTI0LDI2ICsyNCwyNyBAQAogCiAjaW5jbHVkZSAiQ1NTSW1hZ2VTZXRWYWx1ZS5o
IgogI2luY2x1ZGUgIkNTU0ltYWdlVmFsdWUuaCIKLSNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgot
I2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiU1ZHQ3Vyc29yRWxl
bWVudC5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aENvbnRleHQuaCIKICNpbmNsdWRlICJTVkdVUklS
ZWZlcmVuY2UuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1DU1NDdXJzb3JJbWFnZVZhbHVlOjpDU1NDdXJzb3JJbWFn
ZVZhbHVlKFJlZjxDU1NWYWx1ZT4mJiBpbWFnZVZhbHVlLCBib29sIGhhc0hvdFNwb3QsIGNvbnN0
IEludFBvaW50JiBob3RTcG90LCBMb2FkZWRGcm9tT3BhcXVlU291cmNlIGxvYWRlZEZyb21PcGFx
dWVTb3VyY2UpCitDU1NDdXJzb3JJbWFnZVZhbHVlOjpDU1NDdXJzb3JJbWFnZVZhbHVlKFJlZjxD
U1NWYWx1ZT4mJiBpbWFnZVZhbHVlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiYgaG90
U3BvdCwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSBsb2FkZWRGcm9tT3BhcXVlU291cmNlKQogICAg
IDogQ1NTVmFsdWUoQ3Vyc29ySW1hZ2VDbGFzcykKICAgICAsIG1faW1hZ2VWYWx1ZShXVEZNb3Zl
KGltYWdlVmFsdWUpKQotICAgICwgbV9oYXNIb3RTcG90KGhhc0hvdFNwb3QpCiAgICAgLCBtX2hv
dFNwb3QoaG90U3BvdCkKICAgICAsIG1fbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZShsb2FkZWRGcm9t
T3BhcXVlU291cmNlKQogewogICAgIGlmIChpczxDU1NJbWFnZVZhbHVlPihtX2ltYWdlVmFsdWUu
Z2V0KCkpKQotICAgICAgICBtX29yaWdpbmFsVVJMID0gZG93bmNhc3Q8Q1NTSW1hZ2VWYWx1ZT4o
bV9pbWFnZVZhbHVlLmdldCgpKS51cmwoKTsKKyAgICAgICAgbV9vcmlnaW5hbExvY2F0aW9uID0g
ZG93bmNhc3Q8Q1NTSW1hZ2VWYWx1ZT4obV9pbWFnZVZhbHVlLmdldCgpKS5sb2NhdGlvbigpOwor
fQorCitSZWY8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZT4gQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6Y3JlYXRl
KFJlZjxDU1NWYWx1ZT4mJiBpbWFnZVZhbHVlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEludFBvaW50
PiYgaG90U3BvdCwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSBsb2FkZWRGcm9tT3BhcXVlU291cmNl
KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0N1cnNvckltYWdlVmFsdWUoV1RGTW92
ZShpbWFnZVZhbHVlKSwgaG90U3BvdCwgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkpOwogfQogCiBD
U1NDdXJzb3JJbWFnZVZhbHVlOjp+Q1NTQ3Vyc29ySW1hZ2VWYWx1ZSgpCkBAIC01NSwyMSArNTYs
MTkgQEAgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6fkNTU0N1cnNvckltYWdlVmFsdWUoKQogU3RyaW5n
IENTU0N1cnNvckltYWdlVmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogewogICAgIFN0cmlu
ZyB0ZXh0ID0gbV9pbWFnZVZhbHVlLmdldCgpLmNzc1RleHQoKTsKLSAgICBpZiAoIW1faGFzSG90
U3BvdCkKKyAgICBpZiAoIW1faG90U3BvdCkKICAgICAgICAgcmV0dXJuIHRleHQ7Ci0gICAgcmV0
dXJuIG1ha2VTdHJpbmcodGV4dCwgJyAnLCBtX2hvdFNwb3QueCgpLCAnICcsIG1faG90U3BvdC55
KCkpOworICAgIHJldHVybiBtYWtlU3RyaW5nKHRleHQsICcgJywgbV9ob3RTcG90LT54KCksICcg
JywgbV9ob3RTcG90LT55KCkpOwogfQogCiAvLyBGSVhNRTogU2hvdWxkIHRoaXMgZnVuY3Rpb24g
dGFrZSBhIFRyZWVTY29wZSBpbnN0ZWFkPwogU1ZHQ3Vyc29yRWxlbWVudCogQ1NTQ3Vyc29ySW1h
Z2VWYWx1ZTo6dXBkYXRlQ3Vyc29yRWxlbWVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7
Ci0gICAgaWYgKCFtX29yaWdpbmFsVVJMLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1dG8gZWxlbWVudCA9IFNWR1VSSVJlZmVyZW5jZTo6
dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcobV9vcmlnaW5hbFVSTC5zdHJpbmcoKSwgZG9jdW1l
bnQpLmVsZW1lbnQ7CisgICAgYXV0byBlbGVtZW50ID0gU1ZHVVJJUmVmZXJlbmNlOjp0YXJnZXRF
bGVtZW50RnJvbUlSSVN0cmluZyhtX29yaWdpbmFsTG9jYXRpb24sIGRvY3VtZW50KS5lbGVtZW50
OwogICAgIGlmICghaXM8U1ZHQ3Vyc29yRWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCisgICAgLy8gRklYTUU6IE5vdCByaWdodCB0byBrZWVwIG9sZCBjdXJzb3Ig
ZWxlbWVudHMgYXMgY2xpZW50cy4gVGhlIG5ldyBvbmUgc2hvdWxkIHJlcGxhY2UgdGhlIG9sZCwg
bm90IGpvaW4gaXQgaW4gYSBzZXQuCiAgICAgYXV0byYgY3Vyc29yRWxlbWVudCA9IGRvd25jYXN0
PFNWR0N1cnNvckVsZW1lbnQ+KCplbGVtZW50KTsKICAgICBpZiAobV9jdXJzb3JFbGVtZW50cy5h
ZGQoJmN1cnNvckVsZW1lbnQpLmlzTmV3RW50cnkpIHsKICAgICAgICAgY3Vyc29yRWxlbWVudENo
YW5nZWQoY3Vyc29yRWxlbWVudCk7CkBAIC04MCwxOSArNzksMjIgQEAgU1ZHQ3Vyc29yRWxlbWVu
dCogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6dXBkYXRlQ3Vyc29yRWxlbWVudChjb25zdCBEb2N1bWVu
dCYgZG9jdW0KIAogdm9pZCBDU1NDdXJzb3JJbWFnZVZhbHVlOjpjdXJzb3JFbGVtZW50UmVtb3Zl
ZChTVkdDdXJzb3JFbGVtZW50JiBjdXJzb3JFbGVtZW50KQogeworICAgIC8vIEZJWE1FOiBOb3Qg
cmlnaHQgdG8gc3RheSBhIGNsaWVudCBvZiBhIGN1cnNvciBlbGVtZW50IHVudGlsIHRoZSBlbGVt
ZW50IGlzIGRlc3Ryb3llZC4gV2UnZCB3YW50IHRvIHN0b3AgYmVpbmcgYSBjbGllbnQgb25jZSBp
dCdzIG5vIGxvbmdlciBhIHZhbGlkIHRhcmdldCwgbGlrZSB3aGVuIGl0J3MgZGlzY29ubmVjdGVk
LgogICAgIG1fY3Vyc29yRWxlbWVudHMucmVtb3ZlKCZjdXJzb3JFbGVtZW50KTsKIH0KIAogdm9p
ZCBDU1NDdXJzb3JJbWFnZVZhbHVlOjpjdXJzb3JFbGVtZW50Q2hhbmdlZChTVkdDdXJzb3JFbGVt
ZW50JiBjdXJzb3JFbGVtZW50KQogewotICAgIC8vIEZJWE1FOiBUaGlzIHdpbGwgb3ZlcnJpZGUg
aG90IHNwb3Qgc3BlY2lmaWVkIGluIENTUywgd2hpY2ggaXMgcHJvYmFibHkgaW5jb3JyZWN0Lgor
ICAgIC8vIEZJWE1FOiBTZWVtcyB3cm9uZyB0aGF0IGNoYW5naW5nIGFuIG9sZCBjdXJzb3IgZWxl
bWVudCwgb25lIHRoYXQgdGhhdCBpcyBubyBsb25nZXIgdGhlIHRhcmdldCwgY2hhbmdlcyB0aGUg
aG90IHNwb3QuCisgICAgLy8gRklYTUU6IFRoaXMgd2lsbCBvdmVycmlkZSBhIGhvdCBzcG90IHRo
YXQgd2FzIHNwZWNpZmllZCBpbiBDU1MsIHdoaWNoIGlzIHByb2JhYmx5IGluY29ycmVjdC4KKyAg
ICAvLyBGSVhNRTogU2hvdWxkIHdlIGNsYW1wIGZyb20gZmxvYXQgdG8gaW50IGluc3RlYWQgb2Yg
anVzdCBjYXN0aW5nIGhlcmU/CiAgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KG51
bGxwdHIpOwotICAgIG1faGFzSG90U3BvdCA9IHRydWU7Ci0gICAgZmxvYXQgeCA9IHN0ZDo6cm91
bmQoY3Vyc29yRWxlbWVudC54KCkudmFsdWUobGVuZ3RoQ29udGV4dCkpOwotICAgIG1faG90U3Bv
dC5zZXRYKHN0YXRpY19jYXN0PGludD4oeCkpOworICAgIG1faG90U3BvdCA9IEludFBvaW50IHsK
KyAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihzdGQ6OnJvdW5kKGN1cnNvckVsZW1lbnQueCgpLnZh
bHVlKGxlbmd0aENvbnRleHQpKSksCisgICAgICAgIHN0YXRpY19jYXN0PGludD4oc3RkOjpyb3Vu
ZChjdXJzb3JFbGVtZW50LnkoKS52YWx1ZShsZW5ndGhDb250ZXh0KSkpCisgICAgfTsKIAotICAg
IGZsb2F0IHkgPSBzdGQ6OnJvdW5kKGN1cnNvckVsZW1lbnQueSgpLnZhbHVlKGxlbmd0aENvbnRl
eHQpKTsKLSAgICBtX2hvdFNwb3Quc2V0WShzdGF0aWNfY2FzdDxpbnQ+KHkpKTsKKyAgICAvLyBG
SVhNRTogV2h5IGRvZXNuJ3QgdGhpcyBmdW50aW9uIGNoZWNrIGZvciBhIGNoYW5nZSB0byB0aGUg
aHJlZiBvZiB0aGUgY3Vyc29yIGVsZW1lbnQ/IFdoeSB3b3VsZCB3ZSBkeW5hbWljYWxseSB0cmFj
ayBjaGFuZ2VzIHRvIHgveSBidXQgbm90IGhyZWY/CiB9CiAKIEltYWdlV2l0aFNjYWxlIENTU0N1
cnNvckltYWdlVmFsdWU6OnNlbGVjdEJlc3RGaXRJbWFnZShjb25zdCBEb2N1bWVudCYgZG9jdW1l
bnQpCkBAIC0xMDEsOCArMTAzLDkgQEAgSW1hZ2VXaXRoU2NhbGUgQ1NTQ3Vyc29ySW1hZ2VWYWx1
ZTo6c2VsZWN0QmVzdEZpdEltYWdlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKICAgICAgICAg
cmV0dXJuIGRvd25jYXN0PENTU0ltYWdlU2V0VmFsdWU+KG1faW1hZ2VWYWx1ZS5nZXQoKSkuc2Vs
ZWN0QmVzdEZpdEltYWdlKGRvY3VtZW50KTsKIAogICAgIGlmIChhdXRvKiBjdXJzb3JFbGVtZW50
ID0gdXBkYXRlQ3Vyc29yRWxlbWVudChkb2N1bWVudCkpIHsKLSAgICAgICAgaWYgKGN1cnNvckVs
ZW1lbnQtPmhyZWYoKSAhPSBkb3duY2FzdDxDU1NJbWFnZVZhbHVlPihtX2ltYWdlVmFsdWUuZ2V0
KCkpLnVybCgpKQotICAgICAgICAgICAgbV9pbWFnZVZhbHVlID0gQ1NTSW1hZ2VWYWx1ZTo6Y3Jl
YXRlKGRvY3VtZW50LmNvbXBsZXRlVVJMKGN1cnNvckVsZW1lbnQtPmhyZWYoKSksIG1fbG9hZGVk
RnJvbU9wYXF1ZVNvdXJjZSk7CisgICAgICAgIGF1dG8gbG9jYXRpb24gPSBkb2N1bWVudC5jb21w
bGV0ZVVSTChjdXJzb3JFbGVtZW50LT5ocmVmKCkpOworICAgICAgICBpZiAobG9jYXRpb24uc3Ry
aW5nKCkgIT0gZG93bmNhc3Q8Q1NTSW1hZ2VWYWx1ZT4obV9pbWFnZVZhbHVlLmdldCgpKS5sb2Nh
dGlvbigpKQorICAgICAgICAgICAgbV9pbWFnZVZhbHVlID0gQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRl
KFdURk1vdmUobG9jYXRpb24pLCBtX2xvYWRlZEZyb21PcGFxdWVTb3VyY2UpOwogICAgIH0KIAog
ICAgIHJldHVybiB7IG1faW1hZ2VWYWx1ZS5wdHIoKSAsIDEgfTsKQEAgLTExMCw4ICsxMTMsMTUg
QEAgSW1hZ2VXaXRoU2NhbGUgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6c2VsZWN0QmVzdEZpdEltYWdl
KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKIAogYm9vbCBDU1NDdXJzb3JJbWFnZVZhbHVlOjpl
cXVhbHMoY29uc3QgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1faGFzSG90U3BvdCA/IG90aGVyLm1faGFzSG90U3BvdCAmJiBtX2hvdFNwb3QgPT0gb3Ro
ZXIubV9ob3RTcG90IDogIW90aGVyLm1faGFzSG90U3BvdAotICAgICAgICAmJiBjb21wYXJlQ1NT
VmFsdWUobV9pbWFnZVZhbHVlLCBvdGhlci5tX2ltYWdlVmFsdWUpOworICAgIHJldHVybiBtX2hv
dFNwb3QgPT0gb3RoZXIubV9ob3RTcG90ICYmIGNvbXBhcmVDU1NWYWx1ZShtX2ltYWdlVmFsdWUs
IG90aGVyLm1faW1hZ2VWYWx1ZSk7Cit9CisKK1JlZjxDU1NDdXJzb3JJbWFnZVZhbHVlPiBDU1ND
dXJzb3JJbWFnZVZhbHVlOjp2YWx1ZVdpdGhTdHlsZXNSZXNvbHZlZChTdHlsZTo6QnVpbGRlclN0
YXRlJiBzdGF0ZSkKK3sKKyAgICBhdXRvIGltYWdlVmFsdWUgPSBzdGF0ZS5yZXNvbHZlSW1hZ2VT
dHlsZXMobV9pbWFnZVZhbHVlLmdldCgpKTsKKyAgICBpZiAoaW1hZ2VWYWx1ZS5wdHIoKSA9PSBt
X2ltYWdlVmFsdWUucHRyKCkpCisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICByZXR1cm4gY3Jl
YXRlKFdURk1vdmUoaW1hZ2VWYWx1ZSksIG1faG90U3BvdCwgbV9sb2FkZWRGcm9tT3BhcXVlU291
cmNlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
dXJzb3JJbWFnZVZhbHVlLmgKaW5kZXggYjMwNmZkYTQ4NWVjMjI4MTk3ODRiMzViNjg2NzFjMzZh
NWEyZmE0OC4uODVlNjQxY2NlMDVhZjViNjU2YjY1MTU5NmZiMzE2NThlZDEzNDEwMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oCkBAIC0xLDYgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29weXJp
Z2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0IHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHQgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTI3LDEyICsyNyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgQ2FjaGVkSW1hZ2U7Ci1jbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIERvY3Vt
ZW50OwotY2xhc3MgRWxlbWVudDsKIGNsYXNzIFNWR0N1cnNvckVsZW1lbnQ7Ci1jbGFzcyBTVkdF
bGVtZW50OwogCiBzdHJ1Y3QgSW1hZ2VXaXRoU2NhbGU7CiAKQEAgLTQyLDQ1ICszOCwzMiBAQCBj
bGFzcyBCdWlsZGVyU3RhdGU7CiAKIGNsYXNzIENTU0N1cnNvckltYWdlVmFsdWUgZmluYWwgOiBw
dWJsaWMgQ1NTVmFsdWUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q1NTQ3Vyc29ySW1hZ2VW
YWx1ZT4gY3JlYXRlKFJlZjxDU1NWYWx1ZT4mJiBpbWFnZVZhbHVlLCBib29sIGhhc0hvdFNwb3Qs
IGNvbnN0IEludFBvaW50JiBob3RTcG90LCBMb2FkZWRGcm9tT3BhcXVlU291cmNlIGxvYWRlZEZy
b21PcGFxdWVTb3VyY2UpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1ND
dXJzb3JJbWFnZVZhbHVlKFdURk1vdmUoaW1hZ2VWYWx1ZSksIGhhc0hvdFNwb3QsIGhvdFNwb3Qs
IGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpKTsKLSAgICB9Ci0KKyAgICBzdGF0aWMgUmVmPENTU0N1
cnNvckltYWdlVmFsdWU+IGNyZWF0ZShSZWY8Q1NTVmFsdWU+JiYgaW1hZ2VWYWx1ZSwgY29uc3Qg
c3RkOjpvcHRpb25hbDxJbnRQb2ludD4mIGhvdFNwb3QsIExvYWRlZEZyb21PcGFxdWVTb3VyY2Up
OwogICAgIH5DU1NDdXJzb3JJbWFnZVZhbHVlKCk7CiAKLSAgICBib29sIGhhc0hvdFNwb3QoKSBj
b25zdCB7IHJldHVybiBtX2hhc0hvdFNwb3Q7IH0KLQotICAgIEludFBvaW50IGhvdFNwb3QoKSBj
b25zdAotICAgIHsKLSAgICAgICAgaWYgKG1faGFzSG90U3BvdCkKLSAgICAgICAgICAgIHJldHVy
biBtX2hvdFNwb3Q7Ci0gICAgICAgIHJldHVybiBJbnRQb2ludCgtMSwgLTEpOwotICAgIH0KKyAg
ICBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3QgeyByZXR1cm4gbV9ob3RT
cG90OyB9CiAKLSAgICBjb25zdCBVUkwmIGltYWdlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9vcmln
aW5hbFVSTDsgfQorICAgIGNvbnN0IFN0cmluZyYgbG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X29yaWdpbmFsTG9jYXRpb247IH0KIAogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7
CiAKICAgICBJbWFnZVdpdGhTY2FsZSBzZWxlY3RCZXN0Rml0SW1hZ2UoY29uc3QgRG9jdW1lbnQm
KTsKIAotICAgIHZvaWQgcmVtb3ZlUmVmZXJlbmNlZEVsZW1lbnQoU1ZHRWxlbWVudCopOwotCiAg
ICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSYpIGNvbnN0OwogCiAgICAg
dm9pZCBjdXJzb3JFbGVtZW50UmVtb3ZlZChTVkdDdXJzb3JFbGVtZW50Jik7CiAgICAgdm9pZCBj
dXJzb3JFbGVtZW50Q2hhbmdlZChTVkdDdXJzb3JFbGVtZW50Jik7CiAKKyAgICBSZWY8Q1NTQ3Vy
c29ySW1hZ2VWYWx1ZT4gdmFsdWVXaXRoU3R5bGVzUmVzb2x2ZWQoU3R5bGU6OkJ1aWxkZXJTdGF0
ZSYpOworCiBwcml2YXRlOgotICAgIENTU0N1cnNvckltYWdlVmFsdWUoUmVmPENTU1ZhbHVlPiYm
IGltYWdlVmFsdWUsIGJvb2wgaGFzSG90U3BvdCwgY29uc3QgSW50UG9pbnQmIGhvdFNwb3QsIExv
YWRlZEZyb21PcGFxdWVTb3VyY2UpOworICAgIENTU0N1cnNvckltYWdlVmFsdWUoUmVmPENTU1Zh
bHVlPiYmIGltYWdlVmFsdWUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+JiBob3RTcG90
LCBMb2FkZWRGcm9tT3BhcXVlU291cmNlKTsKIAogICAgIFNWR0N1cnNvckVsZW1lbnQqIHVwZGF0
ZUN1cnNvckVsZW1lbnQoY29uc3QgRG9jdW1lbnQmKTsKIAotICAgIFVSTCBtX29yaWdpbmFsVVJM
OworICAgIFN0cmluZyBtX29yaWdpbmFsTG9jYXRpb247CiAgICAgUmVmPENTU1ZhbHVlPiBtX2lt
YWdlVmFsdWU7Ci0KLSAgICBib29sIG1faGFzSG90U3BvdDsKLSAgICBJbnRQb2ludCBtX2hvdFNw
b3Q7CisgICAgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gbV9ob3RTcG90OwogICAgIEhhc2hTZXQ8
U1ZHQ3Vyc29yRWxlbWVudCo+IG1fY3Vyc29yRWxlbWVudHM7CiAgICAgTG9hZGVkRnJvbU9wYXF1
ZVNvdXJjZSBtX2xvYWRlZEZyb21PcGFxdWVTb3VyY2UgeyBMb2FkZWRGcm9tT3BhcXVlU291cmNl
OjpObyB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFn
ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcApp
bmRleCAyOWEzY2M4YjI2ZWM1NzEzZmNkZTIzMWE4ZDI4YjNlMmE3YWIzODFkLi44Y2Y5MDlhZTll
NTM3MjRiOTFkYjRhY2UxNGFlMjg1NzFkZDk1NTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZpbHRlckltYWdlVmFsdWUuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodCByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsNyArMzYsNiBAQAogI2luY2x1ZGUg
IlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJTdHlsZUJ1aWxkZXJTdGF0ZS5oIgogI2luY2x1
ZGUgIlN0eWxlQ2FjaGVkSW1hZ2UuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTczLDQgKzE3MywxNiBAQCBib29sIENT
U0ZpbHRlckltYWdlVmFsdWU6OmVxdWFsSW5wdXRJbWFnZXMoY29uc3QgQ1NTRmlsdGVySW1hZ2VW
YWx1ZSYgb3RoZXIpIGNvbgogICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWUobV9pbWFnZVZhbHVl
LCBvdGhlci5tX2ltYWdlVmFsdWUpOwogfQogCitSZWY8Q1NTRmlsdGVySW1hZ2VWYWx1ZT4gQ1NT
RmlsdGVySW1hZ2VWYWx1ZTo6dmFsdWVXaXRoU3R5bGVzUmVzb2x2ZWQoU3R5bGU6OkJ1aWxkZXJT
dGF0ZSYgc3RhdGUpCit7CisgICAgYXV0byBpbWFnZVZhbHVlID0gc3RhdGUucmVzb2x2ZUltYWdl
U3R5bGVzKG1faW1hZ2VWYWx1ZS5nZXQoKSk7CisgICAgaWYgKGltYWdlVmFsdWUucHRyKCkgPT0g
bV9pbWFnZVZhbHVlLnB0cigpKSB7CisgICAgICAgIGNyZWF0ZUZpbHRlck9wZXJhdGlvbnMoc3Rh
dGUpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorICAgIGF1dG8gZmlsdGVySW1hZ2VW
YWx1ZSA9IGNyZWF0ZShXVEZNb3ZlKGltYWdlVmFsdWUpLCBSZWYgeyBtX2ZpbHRlclZhbHVlIH0p
OworICAgIGZpbHRlckltYWdlVmFsdWUtPmNyZWF0ZUZpbHRlck9wZXJhdGlvbnMoc3RhdGUpOwor
ICAgIHJldHVybiBmaWx0ZXJJbWFnZVZhbHVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuaAppbmRleCAzYTdiNDM3Yjlh
MjdlNDlhNGU4NTUzYmIwNTBhNmIwN2JiMDAyYjBlLi41MDRjMmFkOGQxNWNiNGM1M2UyNDI5MzEw
M2QyMWQ2YTNjMDI2ODY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVy
SW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVl
LmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3Rl
bXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzUsMTAgKzM2LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBDYWNoZWRJbWFnZTsKIGNsYXNzIEZpbHRlclN1YmltYWdlT2JzZXJ2ZXJQcm94eTsKIGNs
YXNzIFJlbmRlckVsZW1lbnQ7Ci1jbGFzcyBEb2N1bWVudDsKIAogbmFtZXNwYWNlIFN0eWxlIHsK
IGNsYXNzIEJ1aWxkZXJTdGF0ZTsKQEAgLTcxLDE1ICs3MCwxMiBAQCBwdWJsaWM6CiAKICAgICBi
b29sIGVxdWFsSW5wdXRJbWFnZXMoY29uc3QgQ1NTRmlsdGVySW1hZ2VWYWx1ZSYpIGNvbnN0Owog
Ci0gICAgdm9pZCBjcmVhdGVGaWx0ZXJPcGVyYXRpb25zKFN0eWxlOjpCdWlsZGVyU3RhdGUmKTsK
LQogICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlck9wZXJhdGlvbnMoKSBjb25zdCB7
IHJldHVybiBtX2ZpbHRlck9wZXJhdGlvbnM7IH0KLSAgICB2b2lkIHNldEZpbHRlck9wZXJhdGlv
bnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVyT3BlcmF0aW9ucykKLSAgICB7Ci0gICAg
ICAgIG1fZmlsdGVyT3BlcmF0aW9ucyA9IGZpbHRlck9wZXJhdGlvbnM7Ci0gICAgfQorICAgIHZv
aWQgc2V0RmlsdGVyT3BlcmF0aW9ucyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJPcGVy
YXRpb25zKSB7IG1fZmlsdGVyT3BlcmF0aW9ucyA9IGZpbHRlck9wZXJhdGlvbnM7IH0KICAgICBD
YWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlLmdl
dCgpOyB9CiAKKyAgICBSZWY8Q1NTRmlsdGVySW1hZ2VWYWx1ZT4gdmFsdWVXaXRoU3R5bGVzUmVz
b2x2ZWQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYpOworCiBwcml2YXRlOgogICAgIENTU0ZpbHRlcklt
YWdlVmFsdWUoUmVmPENTU1ZhbHVlPiYmIGltYWdlVmFsdWUsIFJlZjxDU1NWYWx1ZT4mJiBmaWx0
ZXJWYWx1ZSkKICAgICAgICAgOiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlKEZpbHRlckltYWdlQ2xh
c3MpCkBAIC0xMDYsNiArMTAyLDcgQEAgcHJpdmF0ZToKICAgICB9OwogCiAgICAgdm9pZCBmaWx0
ZXJJbWFnZUNoYW5nZWQoY29uc3QgSW50UmVjdCYpOworICAgIHZvaWQgY3JlYXRlRmlsdGVyT3Bl
cmF0aW9ucyhTdHlsZTo6QnVpbGRlclN0YXRlJik7CiAKICAgICBSZWY8Q1NTVmFsdWU+IG1faW1h
Z2VWYWx1ZTsKICAgICBSZWY8Q1NTVmFsdWU+IG1fZmlsdGVyVmFsdWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKaW5kZXggNDdmMGZlYWY3M2E5YTc0ZGViNzI5ODZjMmY0
Y2Y2NjRjY2E3ZDYwMy4uNWNmY2FjY2Y5MGM5ZDNiYjJiNDlmZTUyMTRiNmNmNWY4MjFjZGJjMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDcsNyArMTA3LDcgQEAg
Ym9vbCBDU1NHcmFkaWVudFZhbHVlOjpoYXNDb2xvckRlcml2ZWRGcm9tRWxlbWVudCgpIGNvbnN0
CiAgICAgcmV0dXJuICptX2hhc0NvbG9yRGVyaXZlZEZyb21FbGVtZW50OwogfQogCi1SZWY8Q1NT
R3JhZGllbnRWYWx1ZT4gQ1NTR3JhZGllbnRWYWx1ZTo6Z3JhZGllbnRXaXRoU3R5bGVzUmVzb2x2
ZWQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQorUmVmPENTU0dyYWRpZW50VmFs
dWU+IENTU0dyYWRpZW50VmFsdWU6OnZhbHVlV2l0aFN0eWxlc1Jlc29sdmVkKFN0eWxlOjpCdWls
ZGVyU3RhdGUmIGJ1aWxkZXJTdGF0ZSkKIHsKICAgICBhdXRvIHJlc3VsdCA9IGhhc0NvbG9yRGVy
aXZlZEZyb21FbGVtZW50KCkgPyBjbG9uZSgqdGhpcykgOiBtYWtlUmVmKCp0aGlzKTsKICAgICBy
ZXNvbHZlU3RvcENvbG9ycyhyZXN1bHQtPm1fc3RvcHMsIFsmXShjb25zdCBDU1NQcmltaXRpdmVW
YWx1ZSYgY29sb3JWYWx1ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dy
YWRpZW50VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgKaW5k
ZXggZjlhMTg3NmEzMTBiM2JiNzVlOTY0ZWVhMTFiMWY2ZWFkODFiM2Q5ZC4uMzc2MWViNDE4MTk0
ODQ4YWQ1ZTExNDkwOWJjYzFjNWJhOWZlNDc0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0dyYWRpZW50VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGll
bnRWYWx1ZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBpc1BlbmRpbmcoKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHN0YXRpYyB2b2lkIGxvYWRTdWJp
bWFnZXMoQ2FjaGVkUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMm
KSB7IH0KIAotICAgIFJlZjxDU1NHcmFkaWVudFZhbHVlPiBncmFkaWVudFdpdGhTdHlsZXNSZXNv
bHZlZChTdHlsZTo6QnVpbGRlclN0YXRlJik7CisgICAgUmVmPENTU0dyYWRpZW50VmFsdWU+IHZh
bHVlV2l0aFN0eWxlc1Jlc29sdmVkKFN0eWxlOjpCdWlsZGVyU3RhdGUmKTsKIAogcHJvdGVjdGVk
OgogICAgIENTU0dyYWRpZW50VmFsdWUoQ2xhc3NUeXBlIGNsYXNzVHlwZSwgQ1NTR3JhZGllbnRS
ZXBlYXQgcmVwZWF0LCBDU1NHcmFkaWVudFR5cGUgZ3JhZGllbnRUeXBlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwCmluZGV4IGE5MzIwMzA4MjVhYmI2NTViNTI3OGFmNWM2
MTUyZTNiNTQ3ZWFkN2IuLjE1NTEwMTI4M2M2MjZjYTE4YTMzYjAyYmFiMTI3OGU5NmI4YjBmMzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTMsMTYgKzEx
MywxNCBAQCB2b2lkIENTU0ltYWdlU2V0VmFsdWU6OnVwZGF0ZURldmljZVNjYWxlRmFjdG9yKGNv
bnN0IERvY3VtZW50JiBkb2N1bWVudCkKICAgICBtX3NlbGVjdGVkSW1hZ2VWYWx1ZSA9IG51bGxw
dHI7CiB9CiAKLVJlZjxDU1NJbWFnZVNldFZhbHVlPiBDU1NJbWFnZVNldFZhbHVlOjppbWFnZVNl
dFdpdGhTdHlsZXNSZXNvbHZlZChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitS
ZWY8Q1NTSW1hZ2VTZXRWYWx1ZT4gQ1NTSW1hZ2VTZXRWYWx1ZTo6dmFsdWVXaXRoU3R5bGVzUmVz
b2x2ZWQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewotICAgIFJlZjxDU1NJ
bWFnZVNldFZhbHVlPiByZXN1bHQgPSBDU1NJbWFnZVNldFZhbHVlOjpjcmVhdGUoKTsKLSAgICBz
aXplX3QgbGVuZ3RoID0gdGhpcy0+bGVuZ3RoKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
KyAxIDwgbGVuZ3RoOyBpICs9IDIpIHsKKyAgICBhdXRvIHJlc3VsdCA9IGNyZWF0ZSgpOworICAg
IGZvciAoc2l6ZV90IGkgPSAwLCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsgaSArIDEgPCBsZW5n
dGg7IGkgKz0gMikgewogICAgICAgICByZXN1bHQtPmFwcGVuZChidWlsZGVyU3RhdGUucmVzb2x2
ZUltYWdlU3R5bGVzKCppdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKSk7CiAgICAgICAgIHJlc3Vs
dC0+YXBwZW5kKCppdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkgKyAxKSk7CiAgICAgfQotCi0gICAg
cmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gZXF1YWxzKHJlc3VsdCkgPyBSZWYgeyAqdGhpcyB9
IDogcmVzdWx0OwogfQogCiBTdHJpbmcgQ1NTSW1hZ2VTZXRWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuaAppbmRleCAwMWVhNGM1YzU0
YTFiNmZmYmVkMzMyM2Y2YjM4ZGFkNDgzNTUxZTVlLi45NTAyMTdkNDA0YmYxNDkwNTI3MDcyNTQw
NjExOTYxOTBmMTdiZTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VT
ZXRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjEs
NyArNjEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZURldmljZVNjYWxlRmFjdG9yKGNv
bnN0IERvY3VtZW50Jik7CiAKLSAgICBSZWY8Q1NTSW1hZ2VTZXRWYWx1ZT4gaW1hZ2VTZXRXaXRo
U3R5bGVzUmVzb2x2ZWQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYpOworICAgIFJlZjxDU1NJbWFnZVNl
dFZhbHVlPiB2YWx1ZVdpdGhTdHlsZXNSZXNvbHZlZChTdHlsZTo6QnVpbGRlclN0YXRlJik7CiAK
IHByaXZhdGU6CiAgICAgQ1NTSW1hZ2VTZXRWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdl
VmFsdWUuY3BwCmluZGV4IGMwZjVhMTZkN2VmOGRjYjQxZTIzMDliMzQxMWMwZTM5Y2E5MGIwMjEu
LjQ0MWYxN2IyMmE2MGE1MzUyMWFmMWNhNDE2MWM3YTkwY2Q1YTljMjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogKEMpIDE5OTktMjAw
MyBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0zNCw4MCArMzQsMTE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ1NTSW1hZ2VWYWx1
ZTo6Q1NTSW1hZ2VWYWx1ZShVUkwmJiB1cmwsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UgbG9hZGVk
RnJvbU9wYXF1ZVNvdXJjZSkKK3N0YXRpYyBib29sIG9wZXJhdG9yPT0oY29uc3QgRHVhbExvY2F0
aW9uJiBhLCBjb25zdCBEdWFsTG9jYXRpb24mIGIpCit7CisgICAgcmV0dXJuIGEuc3BlY2lmaWVk
VVJMU3RyaW5nID09IGIuc3BlY2lmaWVkVVJMU3RyaW5nICYmIGEucmVzb2x2ZWRVUkxTdHJpbmcg
PT0gYi5yZXNvbHZlZFVSTFN0cmluZzsKK30KKworQ1NTSW1hZ2VWYWx1ZTo6Q1NTSW1hZ2VWYWx1
ZShEdWFsTG9jYXRpb24mJiBsb2NhdGlvbiwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSBsb2FkZWRG
cm9tT3BhcXVlU291cmNlKQogICAgIDogQ1NTVmFsdWUoSW1hZ2VDbGFzcykKLSAgICAsIG1fdXJs
KFdURk1vdmUodXJsKSkKLSAgICAsIG1fYWNjZXNzZWRJbWFnZShmYWxzZSkKKyAgICAsIG1fbG9j
YXRpb24oV1RGTW92ZShsb2NhdGlvbikpCiAgICAgLCBtX2xvYWRlZEZyb21PcGFxdWVTb3VyY2Uo
bG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKIHsKIH0KIAogQ1NTSW1hZ2VWYWx1ZTo6Q1NTSW1hZ2VW
YWx1ZShDYWNoZWRJbWFnZSYgaW1hZ2UpCiAgICAgOiBDU1NWYWx1ZShJbWFnZUNsYXNzKQotICAg
ICwgbV91cmwoaW1hZ2UudXJsKCkpCisgICAgLCBtX2xvY2F0aW9uIHsgaW1hZ2UudXJsKCkuc3Ry
aW5nKCksIGltYWdlLnVybCgpLnN0cmluZygpIH0KICAgICAsIG1fY2FjaGVkSW1hZ2UoJmltYWdl
KQotICAgICwgbV9hY2Nlc3NlZEltYWdlKHRydWUpCiB7CiB9CiAKK1JlZjxDU1NJbWFnZVZhbHVl
PiBDU1NJbWFnZVZhbHVlOjpjcmVhdGUoRHVhbExvY2F0aW9uJiYgbG9jYXRpb24sIExvYWRlZEZy
b21PcGFxdWVTb3VyY2UgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDU1NJbWFnZVZhbHVlKFdURk1vdmUobG9jYXRpb24pLCBsb2FkZWRGcm9tT3Bh
cXVlU291cmNlKSk7Cit9CisKK1JlZjxDU1NJbWFnZVZhbHVlPiBDU1NJbWFnZVZhbHVlOjpjcmVh
dGUoVVJMJiYgaW1hZ2VVUkwsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UgbG9hZGVkRnJvbU9wYXF1
ZVNvdXJjZSkKK3sKKyAgICByZXR1cm4gY3JlYXRlKHsgaW1hZ2VVUkwuc3RyaW5nKCksIGltYWdl
VVJMLnN0cmluZygpIH0sIGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpOworfQorCitSZWY8Q1NTSW1h
Z2VWYWx1ZT4gQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKENhY2hlZEltYWdlJiBpbWFnZSkKK3sKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NJbWFnZVZhbHVlKGltYWdlKSk7Cit9CiAKIENTU0lt
YWdlVmFsdWU6On5DU1NJbWFnZVZhbHVlKCkgPSBkZWZhdWx0OwogCiBib29sIENTU0ltYWdlVmFs
dWU6OmlzUGVuZGluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFtX2FjY2Vzc2VkSW1hZ2U7Cisg
ICAgcmV0dXJuICFtX2NhY2hlZEltYWdlOwogfQogCi1DYWNoZWRJbWFnZSogQ1NTSW1hZ2VWYWx1
ZTo6bG9hZEltYWdlKENhY2hlZFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNl
TG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKK1VSTCBDU1NJbWFnZVZhbHVlOjpyZXNvbHZlZFVSTChj
b25zdCBEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2FjY2Vzc2VkSW1h
Z2UpIHsKLSAgICAgICAgbV9hY2Nlc3NlZEltYWdlID0gdHJ1ZTsKKyAgICByZXR1cm4gZG9jdW1l
bnQuY29tcGxldGVVUkwobG9jYXRpb24oKSk7Cit9CiAKK1JlZjxDU1NJbWFnZVZhbHVlPiBDU1NJ
bWFnZVZhbHVlOjp2YWx1ZVdpdGhTdHlsZXNSZXNvbHZlZChTdHlsZTo6QnVpbGRlclN0YXRlJiBz
dGF0ZSkKK3sKKyAgICBhdXRvIHJlc29sdmVkVVJMID0gdGhpcy0+cmVzb2x2ZWRVUkwoc3RhdGUu
ZG9jdW1lbnQoKSk7CisgICAgRHVhbExvY2F0aW9uIGxvY2F0aW9uIHsgcmVzb2x2ZWRVUkwuc3Ry
aW5nKCksIHJlc29sdmVkVVJMLnN0cmluZygpIH07CisgICAgaWYgKG1fbG9jYXRpb24gPT0gbG9j
YXRpb24pCisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICBhdXRvIHJlc3VsdCA9IGNyZWF0ZShX
VEZNb3ZlKGxvY2F0aW9uKSwgbV9sb2FkZWRGcm9tT3BhcXVlU291cmNlKTsKKyAgICByZXN1bHQt
Pm1fY2FjaGVkSW1hZ2UgPSBtX2NhY2hlZEltYWdlOworICAgIHJlc3VsdC0+bV9pbml0aWF0b3JO
YW1lID0gbV9pbml0aWF0b3JOYW1lOworICAgIHJlc3VsdC0+bV91bnJlc29sdmVkVmFsdWUgPSB0
aGlzOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0NhY2hlZEltYWdlKiBDU1NJbWFnZVZhbHVl
Ojpsb2FkSW1hZ2UoQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VM
b2FkZXJPcHRpb25zJiBvcHRpb25zKQoreworICAgIGlmICghbV9jYWNoZWRJbWFnZSkgewogICAg
ICAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMgbG9hZE9wdGlvbnMgPSBvcHRpb25zOwogICAgICAg
ICBsb2FkT3B0aW9ucy5sb2FkZWRGcm9tT3BhcXVlU291cmNlID0gbV9sb2FkZWRGcm9tT3BhcXVl
U291cmNlOwotICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QobG9hZGVyLmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKG1fdXJsLnN0cmluZygpKSksIGxv
YWRPcHRpb25zKTsKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0KHJlc29sdmVkVVJMKCpsb2FkZXIuZG9jdW1lbnQoKSkpLCBsb2FkT3B0aW9ucyk7
CiAgICAgICAgIGlmIChtX2luaXRpYXRvck5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmVx
dWVzdC5zZXRJbml0aWF0b3IoY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmNzcyk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKG1faW5pdGlh
dG9yTmFtZSk7Ci0KICAgICAgICAgaWYgKG9wdGlvbnMubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1v
ZGU6OkNvcnMpIHsKICAgICAgICAgICAgIEFTU0VSVChsb2FkZXIuZG9jdW1lbnQoKSk7CiAgICAg
ICAgICAgICByZXF1ZXN0LnVwZGF0ZUZvckFjY2Vzc0NvbnRyb2woKmxvYWRlci5kb2N1bWVudCgp
KTsKICAgICAgICAgfQogICAgICAgICBtX2NhY2hlZEltYWdlID0gbG9hZGVyLnJlcXVlc3RJbWFn
ZShXVEZNb3ZlKHJlcXVlc3QpKS52YWx1ZV9vcihudWxscHRyKTsKKyAgICAgICAgZm9yIChhdXRv
IGltYWdlVmFsdWUgPSB0aGlzOyAoaW1hZ2VWYWx1ZSA9IGltYWdlVmFsdWUtPm1fdW5yZXNvbHZl
ZFZhbHVlLmdldCgpKTsgKQorICAgICAgICAgICAgaW1hZ2VWYWx1ZS0+bV9jYWNoZWRJbWFnZSA9
IG1fY2FjaGVkSW1hZ2U7CiAgICAgfQotICAgIHJldHVybiBtX2NhY2hlZEltYWdlLmdldCgpOwor
ICAgIHJldHVybiBtX2NhY2hlZEltYWdlLnZhbHVlKCkuZ2V0KCk7CiB9CiAKIGJvb2wgQ1NTSW1h
Z2VWYWx1ZTo6dHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3QgV1RGOjpGdW5jdGlvbjxib29sIChj
b25zdCBDYWNoZWRSZXNvdXJjZSYpPiYgaGFuZGxlcikgY29uc3QKIHsKLSAgICBpZiAoIW1fY2Fj
aGVkSW1hZ2UpCisgICAgaWYgKCFtX2NhY2hlZEltYWdlLnZhbHVlX29yKG51bGxwdHIpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGhhbmRsZXIoKm1fY2FjaGVkSW1hZ2UpOwor
ICAgIHJldHVybiBoYW5kbGVyKCoqbV9jYWNoZWRJbWFnZSk7CiB9CiAKIGJvb2wgQ1NTSW1hZ2VW
YWx1ZTo6ZXF1YWxzKGNvbnN0IENTU0ltYWdlVmFsdWUmIG90aGVyKSBjb25zdAogewotICAgIHJl
dHVybiBtX3VybCA9PSBvdGhlci5tX3VybDsKKyAgICByZXR1cm4gbV9sb2NhdGlvbiA9PSBvdGhl
ci5tX2xvY2F0aW9uOwogfQogCiBTdHJpbmcgQ1NTSW1hZ2VWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNlcmlhbGl6ZVVSTChtX3VybC5zdHJpbmcoKSk7CisgICAg
cmV0dXJuIHNlcmlhbGl6ZVVSTChtX2xvY2F0aW9uLnNwZWNpZmllZFVSTFN0cmluZyk7CiB9CiAK
IFJlZjxEZXByZWNhdGVkQ1NTT01WYWx1ZT4gQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlRGVwcmVjYXRl
ZENTU09NV3JhcHBlcihDU1NTdHlsZURlY2xhcmF0aW9uJiBzdHlsZURlY2xhcmF0aW9uKSBjb25z
dAogewogICAgIC8vIE5PVEU6IFdlIGV4cG9zZSBDU1NJbWFnZVZhbHVlcyBhcyBVUkkgcHJpbWl0
aXZlIHZhbHVlcyBpbiBDU1NPTSB0byBtYWludGFpbiBvbGQgYmVoYXZpb3IuCi0gICAgcmV0dXJu
IERlcHJlY2F0ZWRDU1NPTVByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShtX3VybC5zdHJpbmcoKSwgQ1NTVW5pdFR5cGU6OkNTU19VUkkpLCBzdHlsZURlY2xh
cmF0aW9uKTsKKyAgICByZXR1cm4gRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZShDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGxvY2F0aW9uKCksIENTU1VuaXRUeXBlOjpDU1Nf
VVJJKSwgc3R5bGVEZWNsYXJhdGlvbik7CiB9CiAKIGJvb2wgQ1NTSW1hZ2VWYWx1ZTo6a25vd25U
b0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKSBjb25zdAogewotICAgIGlm
ICghbV9jYWNoZWRJbWFnZSkKKyAgICBpZiAoIW1fY2FjaGVkSW1hZ2UudmFsdWVfb3IobnVsbHB0
cikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gbV9jYWNoZWRJbWFnZS0+Y3Vy
cmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCZyZW5kZXJlcik7CisgICAgcmV0dXJuICgqKm1fY2Fj
aGVkSW1hZ2UpLmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgmcmVuZGVyZXIpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
SW1hZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAppbmRleCA3
ZTZiYmI5NTE0NTMyNTI2ODM2NGM1N2NiNTY3NjIyMzcxNGI0Yjc2Li43N2ZhY2ZiMjdhOTQxMjQ1
YjYwMDNjZjIxMjc3NDA2NjgxYjliZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTSW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgK
QEAgLTEsNiArMSw2IEBACiAvKgogICogKEMpIDE5OTktMjAwMyBMYXJzIEtub2xsIChrbm9sbEBr
ZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAt
OSw3ICs5LDcgQEAKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhl
IEdOVQogICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CiAgKgogICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQpAQCAtMzQsMTcgKzM0LDI4IEBAIGNsYXNzIERlcHJl
Y2F0ZWRDU1NPTVZhbHVlOwogY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvbjsKIGNsYXNzIFJlbmRl
ckVsZW1lbnQ7CiAKK25hbWVzcGFjZSBTdHlsZSB7CitjbGFzcyBCdWlsZGVyU3RhdGU7Cit9CisK
Ky8vIEZJWE1FOiBNb3ZlIHRvIGFub3RoZXIgaGVhZGVyPyBCZXR0ZXIgbmFtZT8gU2hvdWxkIHdl
IGNhbGwgdGhpcyBEdWFsVVJMLCBDU1NEdWFsVVJMLCBDU1NQYXJzZWRVUkwsIG9yIHNvbWV0aGlu
ZyBlbHNlPworc3RydWN0IER1YWxMb2NhdGlvbiB7CisgICAgU3RyaW5nIHNwZWNpZmllZFVSTFN0
cmluZzsKKyAgICBTdHJpbmcgcmVzb2x2ZWRVUkxTdHJpbmc7Cit9OworCiBjbGFzcyBDU1NJbWFn
ZVZhbHVlIGZpbmFsIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PENTU0ltYWdlVmFsdWU+IGNyZWF0ZShVUkwmJiB1cmwsIExvYWRlZEZyb21PcGFxdWVTb3VyY2Ug
bG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NJbWFnZVZh
bHVlKFdURk1vdmUodXJsKSwgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkpOyB9Ci0gICAgc3RhdGlj
IFJlZjxDU1NJbWFnZVZhbHVlPiBjcmVhdGUoQ2FjaGVkSW1hZ2UmIGltYWdlKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IENTU0ltYWdlVmFsdWUoaW1hZ2UpKTsgfQorICAgIHN0YXRpYyBSZWY8Q1NT
SW1hZ2VWYWx1ZT4gY3JlYXRlKER1YWxMb2NhdGlvbiYmLCBMb2FkZWRGcm9tT3BhcXVlU291cmNl
KTsKKyAgICBzdGF0aWMgUmVmPENTU0ltYWdlVmFsdWU+IGNyZWF0ZShVUkwmJiwgTG9hZGVkRnJv
bU9wYXF1ZVNvdXJjZSk7CisgICAgc3RhdGljIFJlZjxDU1NJbWFnZVZhbHVlPiBjcmVhdGUoQ2Fj
aGVkSW1hZ2UmKTsKICAgICB+Q1NTSW1hZ2VWYWx1ZSgpOwogCiAgICAgYm9vbCBpc1BlbmRpbmco
KSBjb25zdDsKICAgICBDYWNoZWRJbWFnZSogbG9hZEltYWdlKENhY2hlZFJlc291cmNlTG9hZGVy
JiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7Ci0gICAgQ2FjaGVkSW1hZ2UqIGNhY2hl
ZEltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZS5nZXQoKTsgfQorICAgIENhY2hl
ZEltYWdlKiBjYWNoZWRJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgPyBtX2Nh
Y2hlZEltYWdlLnZhbHVlKCkuZ2V0KCkgOiBudWxscHRyOyB9CiAKLSAgICBjb25zdCBVUkwmIHVy
bCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgY29uc3QgU3RyaW5nJiBsb2NhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fbG9jYXRpb24ucmVzb2x2ZWRVUkxTdHJpbmc7IH0KIAogICAgIFN0
cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CiAKQEAgLTU4LDE1ICs2OSwxOSBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHNldEluaXRpYXRvcihjb25zdCBBdG9tU3RyaW5nJiBuYW1lKSB7IG1faW5p
dGlhdG9yTmFtZSA9IG5hbWU7IH0KIAorICAgIFJlZjxDU1NJbWFnZVZhbHVlPiB2YWx1ZVdpdGhT
dHlsZXNSZXNvbHZlZChTdHlsZTo6QnVpbGRlclN0YXRlJik7CisKIHByaXZhdGU6Ci0gICAgQ1NT
SW1hZ2VWYWx1ZShVUkwmJiwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSk7CisgICAgQ1NTSW1hZ2VW
YWx1ZShEdWFsTG9jYXRpb24mJiwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSk7CiAgICAgZXhwbGlj
aXQgQ1NTSW1hZ2VWYWx1ZShDYWNoZWRJbWFnZSYpOwogCi0gICAgVVJMIG1fdXJsOwotICAgIENh
Y2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEltYWdlPiBtX2NhY2hlZEltYWdlOwotICAgIGJvb2wg
bV9hY2Nlc3NlZEltYWdlOworICAgIFVSTCByZXNvbHZlZFVSTChjb25zdCBEb2N1bWVudCYpIGNv
bnN0OworCisgICAgRHVhbExvY2F0aW9uIG1fbG9jYXRpb247CisgICAgc3RkOjpvcHRpb25hbDxD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4+IG1fY2FjaGVkSW1hZ2U7CiAgICAgQXRv
bVN0cmluZyBtX2luaXRpYXRvck5hbWU7CiAgICAgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSBtX2xv
YWRlZEZyb21PcGFxdWVTb3VyY2UgeyBMb2FkZWRGcm9tT3BhcXVlU291cmNlOjpObyB9OworICAg
IFJlZlB0cjxDU1NJbWFnZVZhbHVlPiBtX3VucmVzb2x2ZWRWYWx1ZTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0
Q29udGVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAK
aW5kZXggNWQ5NjQ0Njc0OTVhNjBjYzMyNTNmNDc3YjM5NDBiZjY5ZDY2NTFkMC4uYTFhMGU0NmVj
MWM0NmNlNzlmMDVmMTczYzJhYmVjYjVjMWE5MmE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlU2hlZXRDb250ZW50cy5jcHAKQEAgLTQxNywxMSArNDE3LDYgQEAgRG9jdW1lbnQqIFN0eWxl
U2hlZXRDb250ZW50czo6c2luZ2xlT3duZXJEb2N1bWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG93
bmVyTm9kZSA/ICZvd25lck5vZGUtPmRvY3VtZW50KCkgOiAwOwogfQogCi1VUkwgU3R5bGVTaGVl
dENvbnRlbnRzOjpjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9wYXJzZXJDb250ZXh0LmNvbXBsZXRlVVJMKHVybCk7Ci19Ci0KIHN0YXRpYyBib29s
IHRyYXZlcnNlUnVsZXNJblZlY3Rvcihjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+
PiYgcnVsZXMsIGNvbnN0IFdURjo6RnVuY3Rpb248Ym9vbCAoY29uc3QgU3R5bGVSdWxlQmFzZSYp
PiYgaGFuZGxlcikKIHsKICAgICBmb3IgKGF1dG8mIHJ1bGUgOiBydWxlcykgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5oCmluZGV4IGQ5NGM0OWFlMTliYmRjY2M3ZjFhNjA5
ZDY2MTc3NDc5NTZkZmMxNDAuLjYwNzdmZDRlN2RmMzk5NDJlNjVjMDZjZDhlYzAyMTczNGEzZjc1
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmgKQEAgLTg2LDcgKzg2
LDYgQEAgcHVibGljOgogCiAgICAgYm9vbCBsb2FkQ29tcGxldGVkKCkgY29uc3QgeyByZXR1cm4g
bV9sb2FkQ29tcGxldGVkOyB9CiAKLSAgICBVUkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1
cmwpIGNvbnN0OwogICAgIGJvb2wgdHJhdmVyc2VSdWxlcyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJv
b2wgKGNvbnN0IFN0eWxlUnVsZUJhc2UmKT4mIGhhbmRsZXIpIGNvbnN0OwogICAgIGJvb2wgdHJh
dmVyc2VTdWJyZXNvdXJjZXMoY29uc3QgV1RGOjpGdW5jdGlvbjxib29sIChjb25zdCBDYWNoZWRS
ZXNvdXJjZSYpPiYgaGFuZGxlcikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1BhcnNlckNvbnRleHQuY3BwCmluZGV4IDM4ZmQ0NWE5MzhmMmE4NjgzNzUxZWVkNzE0
OGM3MjlmMjNhMTNmZjEuLmY2MGI3ZTZhYzA3YzRjZjZlMWJkODEwNDM1NGQ0ODhjZjJkNTg1NDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmNwcApA
QCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU1BhcnNl
ckNvbnRleHQuaCIKIAorI2luY2x1ZGUgIkNTU0ltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpA
QCAtMjIwLDIwICsyMjEsMTkgQEAgYm9vbCBDU1NQYXJzZXJDb250ZXh0Ojppc1Byb3BlcnR5UnVu
dGltZURpc2FibGVkKENTU1Byb3BlcnR5SUQgcHJvcGVydHkpIGNvbnN0CiAgICAgfQogfQogCi1V
UkwgQ1NTUGFyc2VyQ29udGV4dDo6Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0
CitEdWFsTG9jYXRpb24gQ1NTUGFyc2VyQ29udGV4dDo6Y29tcGxldGVVUkwoY29uc3QgU3RyaW5n
JiBzdHJpbmcpIGNvbnN0CiB7Ci0gICAgYXV0byBjb21wbGV0ZWRVUkwgPSBbJl0gewotICAgICAg
ICBpZiAodXJsLmlzTnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIFVSTCgpOworICAgIGF1dG8g
Y29tcGxldGVkVVJMID0gWyZdICgpIC0+IER1YWxMb2NhdGlvbiB7CisgICAgICAgIGlmIChzdHJp
bmcuaXNOdWxsKCkpCisgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICBpZiAoY2hhcnNl
dC5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gVVJMKGJhc2VVUkwsIHVybCk7Ci0gICAg
ICAgIFRleHRFbmNvZGluZyBlbmNvZGluZyhjaGFyc2V0KTsKLSAgICAgICAgYXV0byYgZW5jb2Rp
bmdGb3JVUkxQYXJzaW5nID0gZW5jb2RpbmcuZW5jb2RpbmdGb3JGb3JtU3VibWlzc2lvbk9yVVJM
UGFyc2luZygpOwotICAgICAgICByZXR1cm4gVVJMKGJhc2VVUkwsIHVybCwgZW5jb2RpbmdGb3JV
UkxQYXJzaW5nID09IFVURjhFbmNvZGluZygpID8gbnVsbHB0ciA6ICZlbmNvZGluZ0ZvclVSTFBh
cnNpbmcpOworICAgICAgICAgICAgcmV0dXJuIHsgc3RyaW5nLCBVUkwgeyBiYXNlVVJMLCBzdHJp
bmcgfS5zdHJpbmcoKSB9OworICAgICAgICBhdXRvIGVuY29kaW5nRm9yVVJMUGFyc2luZyA9IFRl
eHRFbmNvZGluZyB7IGNoYXJzZXQgfS5lbmNvZGluZ0ZvckZvcm1TdWJtaXNzaW9uT3JVUkxQYXJz
aW5nKCk7CisgICAgICAgIHJldHVybiB7IHN0cmluZywgVVJMIHsgYmFzZVVSTCwgc3RyaW5nLCBl
bmNvZGluZ0ZvclVSTFBhcnNpbmcgPT0gVVRGOEVuY29kaW5nKCkgPyBudWxscHRyIDogJmVuY29k
aW5nRm9yVVJMUGFyc2luZyB9LnN0cmluZygpIH07CiAgICAgfSgpOwogCi0gICAgaWYgKG1vZGUg
PT0gV2ViVlRUTW9kZSAmJiAhY29tcGxldGVkVVJMLnByb3RvY29sSXNEYXRhKCkpCi0gICAgICAg
IHJldHVybiBVUkwoKTsKKyAgICBpZiAobW9kZSA9PSBXZWJWVFRNb2RlICYmICFwcm90b2NvbElz
KGNvbXBsZXRlZFVSTC5yZXNvbHZlZFVSTFN0cmluZywgImRhdGEiKSkKKyAgICAgICAgcmV0dXJu
IHsgfTsKIAogICAgIHJldHVybiBjb21wbGV0ZWRVUkw7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oCmluZGV4IDkxMjA5YjMwNGVjY2QxODI4YmRlNTM1
OThlYzU0YmM2NTk3YTg4NDUuLjJlNzY3Mjc1ZGMxNmJiMTgyMzcxYjliZTVkMmQwNTEwOWVhZjI4
YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oCkBA
IC0zNyw2ICszNyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CiAK
K3N0cnVjdCBEdWFsTG9jYXRpb247CisKIHN0cnVjdCBDU1NQYXJzZXJDb250ZXh0IHsKICAgICBX
VEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CiAKQEAgLTg4LDcgKzkwLDcgQEAgc3RydWN0
IENTU1BhcnNlckNvbnRleHQgewogICAgIENTU1BhcnNlckNvbnRleHQoQ1NTUGFyc2VyTW9kZSwg
Y29uc3QgVVJMJiBiYXNlVVJMID0gVVJMKCkpOwogICAgIFdFQkNPUkVfRVhQT1JUIENTU1BhcnNl
ckNvbnRleHQoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBVUkwmIGJhc2VVUkwgPSBVUkwoKSwgY29u
c3QgU3RyaW5nJiBjaGFyc2V0ID0gZW1wdHlTdHJpbmcoKSk7CiAgICAgYm9vbCBpc1Byb3BlcnR5
UnVudGltZURpc2FibGVkKENTU1Byb3BlcnR5SUQpIGNvbnN0OwotICAgIFVSTCBjb21wbGV0ZVVS
TChjb25zdCBTdHJpbmcmIHJlbGF0aXZlVVJMKSBjb25zdDsKKyAgICBEdWFsTG9jYXRpb24gY29t
cGxldGVVUkwoY29uc3QgU3RyaW5nJikgY29uc3Q7CiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29u
c3QgQ1NTUGFyc2VyQ29udGV4dCYsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmNwcAppbmRleCAyNjZlN2JjNzhh
ZTMxNjVmNzA3MDljMmFhM2U0OWIzMmQ2YzBlOTM5Li42NTQ0ZjI2ZjUxYTkyM2VlNjMwZTc5MThk
YjkzMzg2ZmNhNWU1N2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1BhcnNlcklkaW9tcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJz
ZXJJZGlvbXMuY3BwCkBAIC00NSw5ICs0NSw0IEBAIGJvb2wgaXNWYWx1ZUFsbG93ZWRJbk1vZGUo
dW5zaWduZWQgc2hvcnQgaWQsIENTU1BhcnNlck1vZGUgbW9kZSkKICAgICB9CiB9CiAKLVVSTCBj
b21wbGV0ZVVSTChjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IHVybCkKLXsKLSAgICByZXR1cm4gY29udGV4dC5jb21wbGV0ZVVSTCh1cmwpOwotfQotCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1BhcnNlcklkaW9tcy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJ
ZGlvbXMuaAppbmRleCAyNTc1YzBkZjJiODdjNTkwNWY3ZGJjMmNlNmZjYzM1NGZiN2E5N2JkLi44
MTc0YzczMmU2ODFkZDdkM2U0MDEwNDE0ZDBjYjAxYTNlM2M0Y2EzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmgKQEAgLTU5LDYgKzU5LDQgQEAgYm9vbCBp
c05hbWVDb2RlUG9pbnQoQ2hhcmFjdGVyVHlwZSBjKQogCiBib29sIGlzVmFsdWVBbGxvd2VkSW5N
b2RlKHVuc2lnbmVkIHNob3J0LCBDU1NQYXJzZXJNb2RlKTsKIAotVVJMIGNvbXBsZXRlVVJMKGNv
bnN0IENTU1BhcnNlckNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHVybCk7Ci0KIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJv
cGVydHlQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBh
cnNlci5jcHAKaW5kZXggODg0ZjA0MTg4NmFkMzYxMTJmNzU5MzgzNTI5MTFkOTMxNTljMDg2Zi4u
Njc3YjVmZGU2YTUxZDk3MmE5NTg1MDc0NWFhZTViN2JjM2I3YWM3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTIyNTgsMjIgKzIy
NTgsMjAgQEAgc3RhdGljIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVJ4T3JSeShD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGEKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+
IGNvbnN1bWVDdXJzb3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNl
ckNvbnRleHQmIGNvbnRleHQsIGJvb2wgaW5RdWlya3NNb2RlKQogewogICAgIFJlZlB0cjxDU1NW
YWx1ZUxpc3Q+IGxpc3Q7Ci0gICAgd2hpbGUgKFJlZlB0cjxDU1NWYWx1ZT4gaW1hZ2UgPSBjb25z
dW1lSW1hZ2UocmFuZ2UsIGNvbnRleHQsIHsgQWxsb3dlZEltYWdlVHlwZTo6VVJMRnVuY3Rpb24s
IEFsbG93ZWRJbWFnZVR5cGU6OkltYWdlU2V0IH0pKSB7Ci0gICAgICAgIEludFBvaW50IGhvdFNw
b3QoLTEsIC0xKTsKLSAgICAgICAgYm9vbCBob3RTcG90U3BlY2lmaWVkID0gZmFsc2U7CisgICAg
d2hpbGUgKGF1dG8gaW1hZ2UgPSBjb25zdW1lSW1hZ2UocmFuZ2UsIGNvbnRleHQsIHsgQWxsb3dl
ZEltYWdlVHlwZTo6VVJMRnVuY3Rpb24sIEFsbG93ZWRJbWFnZVR5cGU6OkltYWdlU2V0IH0pKSB7
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3Q7CiAgICAgICAgIGlmIChh
dXRvIHggPSBjb25zdW1lTnVtYmVyUmF3KHJhbmdlKSkgewotICAgICAgICAgICAgaG90U3BvdC5z
ZXRYKHN0YXRpY19jYXN0PGludD4oKngpKTsKICAgICAgICAgICAgIGF1dG8geSA9IGNvbnN1bWVO
dW1iZXJSYXcocmFuZ2UpOwogICAgICAgICAgICAgaWYgKCF5KQogICAgICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgICAgICAgICAgaG90U3BvdC5zZXRZKHN0YXRpY19jYXN0PGludD4o
KnkpKTsKLSAgICAgICAgICAgIGhvdFNwb3RTcGVjaWZpZWQgPSB0cnVlOworICAgICAgICAgICAg
Ly8gRklYTUU6IFNob3VsZCB3ZSBjbGFtcCBvciByb3VuZCBpbnN0ZWFkIG9mIGp1c3QgY2FzdGlu
ZyBmcm9tIGRvdWJsZSB0byBpbnQ/CisgICAgICAgICAgICBob3RTcG90ID0gSW50UG9pbnQgeyBz
dGF0aWNfY2FzdDxpbnQ+KCp4KSwgc3RhdGljX2Nhc3Q8aW50PigqeSkgfTsKICAgICAgICAgfQog
CiAgICAgICAgIGlmICghbGlzdCkKICAgICAgICAgICAgIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNy
ZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAKLSAgICAgICAgbGlzdC0+YXBwZW5kKENTU0N1cnNvcklt
YWdlVmFsdWU6OmNyZWF0ZShpbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCBob3RTcG90U3BlY2lmaWVk
LCBob3RTcG90LCBjb250ZXh0LmlzQ29udGVudE9wYXF1ZSA/IExvYWRlZEZyb21PcGFxdWVTb3Vy
Y2U6OlllcyA6IExvYWRlZEZyb21PcGFxdWVTb3VyY2U6Ok5vKSk7CisgICAgICAgIGxpc3QtPmFw
cGVuZChDU1NDdXJzb3JJbWFnZVZhbHVlOjpjcmVhdGUoaW1hZ2UucmVsZWFzZU5vbk51bGwoKSwg
aG90U3BvdCwgY29udGV4dC5pc0NvbnRlbnRPcGFxdWUgPyBMb2FkZWRGcm9tT3BhcXVlU291cmNl
OjpZZXMgOiBMb2FkZWRGcm9tT3BhcXVlU291cmNlOjpObykpOwogICAgICAgICBpZiAoIWNvbnN1
bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UocmFuZ2UpKQogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQpAQCAtNDY2OCwzNyArNDY2NiwyOSBAQCBzdGF0aWMgUmVmUHRyPENTU1Zh
bHVlPiBjb25zdW1lQ291bnRlclN0eWxlU3ltYm9scyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgYwogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUNvdW50ZXJTdHlsZUFkZGl0aXZl
U3ltYm9scyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4
dCYgY29udGV4dCkKIHsKICAgICBhdXRvIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29t
bWFTZXBhcmF0ZWQoKTsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxhc3RJbnRlZ2Vy
OworICAgIHN0ZDo6b3B0aW9uYWw8aW50PiBsYXN0V2VpZ2h0OwogICAgIGRvIHsKLSAgICAgICAg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBpbnRlZ2VyOwotICAgICAgICBSZWZQdHI8Q1NTVmFs
dWU+IHN5bWJvbDsKLSAgICAgICAgd2hpbGUgKCFpbnRlZ2VyIHx8ICFzeW1ib2wpIHsKLSAgICAg
ICAgICAgIGlmICghaW50ZWdlcikgewotICAgICAgICAgICAgICAgIGludGVnZXIgPSBjb25zdW1l
SW50ZWdlcihyYW5nZSwgMCk7Ci0gICAgICAgICAgICAgICAgaWYgKGludGVnZXIpCi0gICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFz
eW1ib2wpIHsKLSAgICAgICAgICAgICAgICBzeW1ib2wgPSBjb25zdW1lQ291bnRlclN0eWxlU3lt
Ym9sKHJhbmdlLCBjb250ZXh0KTsKLSAgICAgICAgICAgICAgICBpZiAoc3ltYm9sKQotICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgYXV0byBpbnRl
Z2VyID0gY29uc3VtZUludGVnZXIocmFuZ2UsIDApOworICAgICAgICBpZiAoIWludGVnZXIpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgYXV0byBzeW1ib2wgPSBjb25zdW1l
Q291bnRlclN0eWxlU3ltYm9sKHJhbmdlLCBjb250ZXh0KTsKKyAgICAgICAgaWYgKCFzeW1ib2wp
CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQogCi0gICAgICAgIGlmIChs
YXN0SW50ZWdlcikgewotICAgICAgICAgICAgLy8gVGhlIGFkZGl0aXZlIHR1cGxlcyBtdXN0IGJl
IHNwZWNpZmllZCBpbiBvcmRlciBvZiBzdHJpY3RseSBkZXNjZW5kaW5nCi0gICAgICAgICAgICAv
LyB3ZWlnaHQ7IG90aGVyd2lzZSwgdGhlIGRlY2xhcmF0aW9uIGlzIGludmFsaWQgYW5kIG11c3Qg
YmUgaWdub3JlZC4KLSAgICAgICAgICAgIGlmIChpbnRlZ2VyLT5pbnRWYWx1ZSgpID49IGxhc3RJ
bnRlZ2VyLT5pbnRWYWx1ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
ICAgICB9Ci0gICAgICAgIGxhc3RJbnRlZ2VyID0gaW50ZWdlcjsKLSAgICAgICAgdmFsdWVzLT5h
cHBlbmQoaW50ZWdlci5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICAgICAgdmFsdWVzLT5hcHBlbmQo
c3ltYm9sLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICAvLyBBZGRpdGl2ZSB0dXBsZXMgbXVz
dCBiZSBzcGVjaWZpZWQgaW4gb3JkZXIgb2Ygc3RyaWN0bHkgZGVzY2VuZGluZyB3ZWlnaHQuCisg
ICAgICAgIGF1dG8gd2VpZ2h0ID0gaW50ZWdlci0+aW50VmFsdWUoKTsKKyAgICAgICAgaWYgKGxh
c3RXZWlnaHQgJiYgISh3ZWlnaHQgPCBsYXN0V2VpZ2h0KSkKKyAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICBsYXN0V2VpZ2h0ID0gd2VpZ2h0OworCisgICAgICAgIGF1dG8gcGFp
ciA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKKyAgICAgICAgcGFpci0+
YXBwZW5kKGludGVnZXIucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIHBhaXItPmFwcGVuZChz
eW1ib2wucmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIHZhbHVlcy0+YXBwZW5kKFdURk1vdmUo
cGFpcikpOwogICAgIH0gd2hpbGUgKGNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UocmFu
Z2UpKTsKICAgICBpZiAoIXJhbmdlLmF0RW5kKCkgfHwgIXZhbHVlcy0+bGVuZ3RoKCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiB2YWx1ZXM7CisgICAgcmV0dXJuIFdURk1v
dmUodmFsdWVzKTsKIH0KIAogLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1jb3VudGVyLXN0
eWxlcy0zLyNjb3VudGVyLXN0eWxlLXNwZWFrLWFzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAKaW5kZXggOTY4OGE2NzYx
ODk4MGE5MzYzMGM0OTM4NGNiNWViNTQxNjU1NTAxZS4uNDFjYjQ5NTM1YzhlOGE5ZDgwYTdlN2Nm
ZTBmMTcwNjcxZWIyNmFiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcApAQCAtMzUwMiw5ICszNTAyLDkgQEAgUmVm
UHRyPENTU1NoYWRvd1ZhbHVlPiBjb25zdW1lU2luZ2xlU2hhZG93KENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlLCBjb25zdCBDU1MKIAogUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lSW1hZ2UoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQs
IE9wdGlvblNldDxBbGxvd2VkSW1hZ2VUeXBlPiBhbGxvd2VkSW1hZ2VUeXBlcykKIHsKLSAgICBp
ZiAoKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gU3RyaW5nVG9rZW4pICYmIChhbGxvd2VkSW1hZ2VU
eXBlcy5jb250YWlucyhBbGxvd2VkSW1hZ2VUeXBlOjpSYXdTdHJpbmdBc1VSTCkpKSB7Ci0gICAg
ICAgIGF1dG8gdXJsU3RyaW5nVmlldyA9IHJhbmdlLmNvbnN1bWVJbmNsdWRpbmdXaGl0ZXNwYWNl
KCkudmFsdWUoKTsKLSAgICAgICAgcmV0dXJuIENTU0ltYWdlVmFsdWU6OmNyZWF0ZShjb21wbGV0
ZVVSTChjb250ZXh0LCB1cmxTdHJpbmdWaWV3LnRvQXRvbVN0cmluZygpKSwgY29udGV4dC5pc0Nv
bnRlbnRPcGFxdWUgPyBMb2FkZWRGcm9tT3BhcXVlU291cmNlOjpZZXMgOiBMb2FkZWRGcm9tT3Bh
cXVlU291cmNlOjpObyk7CisgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gU3RyaW5nVG9r
ZW4gJiYgYWxsb3dlZEltYWdlVHlwZXMuY29udGFpbnMoQWxsb3dlZEltYWdlVHlwZTo6UmF3U3Ry
aW5nQXNVUkwpKSB7CisgICAgICAgIHJldHVybiBDU1NJbWFnZVZhbHVlOjpjcmVhdGUoY29udGV4
dC5jb21wbGV0ZVVSTChyYW5nZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpLnZhbHVlKCku
dG9BdG9tU3RyaW5nKCkuc3RyaW5nKCkpLAorICAgICAgICAgICAgY29udGV4dC5pc0NvbnRlbnRP
cGFxdWUgPyBMb2FkZWRGcm9tT3BhcXVlU291cmNlOjpZZXMgOiBMb2FkZWRGcm9tT3BhcXVlU291
cmNlOjpObyk7CiAgICAgfQogCiAgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgPT0gRnVuY3Rp
b25Ub2tlbikgewpAQCAtMzUyMSw5ICszNTIxLDEwIEBAIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3Vt
ZUltYWdlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0
CiAgICAgfQogCiAgICAgaWYgKGFsbG93ZWRJbWFnZVR5cGVzLmNvbnRhaW5zKEFsbG93ZWRJbWFn
ZVR5cGU6OlVSTEZ1bmN0aW9uKSkgewotICAgICAgICBhdXRvIHVyaSA9IGNvbnN1bWVVcmxBc1N0
cmluZ1ZpZXcocmFuZ2UpOwotICAgICAgICBpZiAoIXVyaS5pc051bGwoKSkKLSAgICAgICAgICAg
IHJldHVybiBDU1NJbWFnZVZhbHVlOjpjcmVhdGUoY29tcGxldGVVUkwoY29udGV4dCwgdXJpLnRv
QXRvbVN0cmluZygpKSwgY29udGV4dC5pc0NvbnRlbnRPcGFxdWUgPyBMb2FkZWRGcm9tT3BhcXVl
U291cmNlOjpZZXMgOiBMb2FkZWRGcm9tT3BhcXVlU291cmNlOjpObyk7CisgICAgICAgIGlmIChh
dXRvIHN0cmluZyA9IGNvbnN1bWVVcmxBc1N0cmluZ1ZpZXcocmFuZ2UpOyAhc3RyaW5nLmlzTnVs
bCgpKSB7CisgICAgICAgICAgICByZXR1cm4gQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKGNvbnRleHQu
Y29tcGxldGVVUkwoc3RyaW5nLnRvQXRvbVN0cmluZygpLnN0cmluZygpKSwKKyAgICAgICAgICAg
ICAgICBjb250ZXh0LmlzQ29udGVudE9wYXF1ZSA/IExvYWRlZEZyb21PcGFxdWVTb3VyY2U6Olll
cyA6IExvYWRlZEZyb21PcGFxdWVTb3VyY2U6Ok5vKTsKKyAgICAgICAgfQogICAgIH0KIAogICAg
IHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQcm9wZXJ0eVBhcnNlcldvcmtlclNhZmUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQcm9wZXJ0eVBhcnNlcldvcmtlclNhZmUuY3BwCmluZGV4IGZkOTUzNzhiZjhiNjNjYWY3
N2RlZjQyMTI0ZmY4MmQ3Y2MwZTAxYzYuLjk1NTY1NDExYWM2YjUwNmNmMjhkNTIxODQ4OGE0M2Qw
YWJjZjIxYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVy
dHlQYXJzZXJXb3JrZXJTYWZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1Byb3BlcnR5UGFyc2VyV29ya2VyU2FmZS5jcHAKQEAgLTE5OCwyOCArMTk4LDI4IEBAIFJlZlB0
cjxDU1NWYWx1ZT4gQ1NTUHJvcGVydHlQYXJzZXJXb3JrZXJTYWZlOjpwYXJzZUZvbnRGYWNlRGlz
cGxheShjb25zdCBTdHJpbmcmCiAKIG5hbWVzcGFjZSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnNX
b3JrZXJTYWZlIHsKIAotc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUZvbnRGYWNlU3Jj
VVJJKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBj
b250ZXh0KQorc3RhdGljIFJlZlB0cjxDU1NGb250RmFjZVNyY1ZhbHVlPiBjb25zdW1lRm9udEZh
Y2VTcmNVUkkoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRl
eHQmIGNvbnRleHQpCiB7Ci0gICAgU3RyaW5nIHVybCA9IENTU1Byb3BlcnR5UGFyc2VySGVscGVy
czo6Y29uc3VtZVVybEFzU3RyaW5nVmlldyhyYW5nZSkudG9TdHJpbmcoKTsKLSAgICBpZiAodXJs
LmlzTnVsbCgpKQorICAgIGF1dG8gbG9jYXRpb24gPSBjb250ZXh0LmNvbXBsZXRlVVJMKENTU1By
b3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZVVybEFzU3RyaW5nVmlldyhyYW5nZSkudG9TdHJp
bmcoKSkucmVzb2x2ZWRVUkxTdHJpbmc7CisgICAgaWYgKGxvY2F0aW9uLmlzTnVsbCgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxDU1NGb250RmFjZVNyY1ZhbHVlPiB1
cmlWYWx1ZSA9IENTU0ZvbnRGYWNlU3JjVmFsdWU6OmNyZWF0ZShjb250ZXh0LmNvbXBsZXRlVVJM
KHVybCkuc3RyaW5nKCksIGNvbnRleHQuaXNDb250ZW50T3BhcXVlID8gTG9hZGVkRnJvbU9wYXF1
ZVNvdXJjZTo6WWVzIDogTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZTo6Tm8pOwotCi0gICAgaWYgKHJh
bmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgIT0gQ1NTVmFsdWVGb3JtYXQpCi0gICAgICAgIHJldHVy
biB1cmlWYWx1ZTsKKyAgICBTdHJpbmcgZm9ybWF0OworICAgIGlmIChyYW5nZS5wZWVrKCkuZnVu
Y3Rpb25JZCgpID09IENTU1ZhbHVlRm9ybWF0KSB7CisgICAgICAgIC8vIGh0dHBzOi8vZHJhZnRz
LmNzc3dnLm9yZy9jc3MtZm9udHMvI2Rlc2NkZWYtZm9udC1mYWNlLXNyYworICAgICAgICAvLyBG
SVhNRTogVGhlIGZvcm1hdCBzaG91bGQgYmUgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdDsgYXQgdGhp
cyB0aW1lIHdlIHN1cHBvcnQgb25seSBvbmUuCisgICAgICAgIC8vIEZJWE1FOiBXZSBhbGxvdyBh
bnkgaWRlbnRpZmllciBoZXJlIGFuZCBjb252ZXJ0IGFsbCB0byBzdHJpbmdzOyBzcGVjaWZpY2F0
aW9uIGNhbGxzIGZvciBvbmx5IGNlcnRhaW4gaWRlbnRpZmllcnMuCisgICAgICAgIGF1dG8gYXJn
cyA9IENTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZUZ1bmN0aW9uKHJhbmdlKTsKKyAg
ICAgICAgYXV0byYgYXJnID0gYXJncy5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAg
ICAgICBpZiAoKGFyZy50eXBlKCkgIT0gU3RyaW5nVG9rZW4gJiYgYXJnLnR5cGUoKSAhPSBJZGVu
dFRva2VuKSB8fCAhYXJncy5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIGZvcm1hdCA9IGFyZy52YWx1ZSgpLnRvU3RyaW5nKCk7CisgICAgfQogCi0gICAgLy8g
RklYTUU6IGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtZm9udHMgc2F5cyB0aGF0IGZvcm1h
dCgpIGNvbnRhaW5zIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2Ygc3RyaW5ncywKLSAgICAvLyBi
dXQgQ1NTRm9udEZhY2VTcmNWYWx1ZSBzdG9yZXMgb25seSBvbmUgZm9ybWF0LiBBbGxvd2luZyBv
bmUgZm9ybWF0IGZvciBub3cuCi0gICAgLy8gRklYTUU6IFdlJ3JlIGFsbG93aW5nIHRoZSBmb3Jt
YXQgdG8gYmUgYW4gaWRlbnRpZmllciBhcyB3ZWxsIGFzIGEgc3RyaW5nLCBiZWNhdXNlIHRoZSBv
bGQKLSAgICAvLyBwYXJzZXIgZGlkLiBJdCdzIG5vdCBjbGVhciBpZiB3ZSBuZWVkIHRvIGNvbnRp
bnVlIHRvIHN1cHBvcnQgdGhpcyBiZWhhdmlvciwgYnV0IHdlIGhhdmUgbG90cyBvZgotICAgIC8v
IGxheW91dCB0ZXN0cyB0aGF0IHJlbHkgb24gaXQuCi0gICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBh
cmdzID0gQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lRnVuY3Rpb24ocmFuZ2UpOwot
ICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiBhcmcgPSBhcmdzLmNvbnN1bWVJbmNsdWRpbmdXaGl0
ZXNwYWNlKCk7Ci0gICAgaWYgKChhcmcudHlwZSgpICE9IFN0cmluZ1Rva2VuICYmIGFyZy50eXBl
KCkgIT0gSWRlbnRUb2tlbikgfHwgIWFyZ3MuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgdXJpVmFsdWUtPnNldEZvcm1hdChhcmcudmFsdWUoKS50b1N0cmluZygpKTsKLSAg
ICByZXR1cm4gdXJpVmFsdWU7CisgICAgLy8gRklYTUU6IENoYW5nZSBDU1NGb250RmFjZVNyY1Zh
bHVlOjpjcmVhdGUgdG8gdGFrZSBmb3JtYXQgc28gd2UgZG9uJ3QgbmVlZCBhIHNlcGFyYXRlIHNl
dEZvcm1hdCBjYWxsLgorICAgIGF1dG8gc3JjVmFsdWUgPSBDU1NGb250RmFjZVNyY1ZhbHVlOjpj
cmVhdGUobG9jYXRpb24sIGNvbnRleHQuaXNDb250ZW50T3BhcXVlID8gTG9hZGVkRnJvbU9wYXF1
ZVNvdXJjZTo6WWVzIDogTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZTo6Tm8pOworICAgIHNyY1ZhbHVl
LT5zZXRGb3JtYXQoZm9ybWF0KTsKKyAgICByZXR1cm4gV1RGTW92ZShzcmNWYWx1ZSk7CiB9CiAK
IHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVGb250RmFjZVNyY0xvY2FsKENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5jcHAKaW5kZXggZTk0NDZlZDc2MmE3YmQyMDEyMGNmMGRmNGQzNmY4ODM5YjUy
YWRjNC4uNzhhOTgzYWQyN2EwNWQyYWRjMjU1MmE0ZTYwYzYyMDRhYTgxZjlmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC0xMjYxLDEy
ICsxMjYxLDEzIEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldENsaXAoTGVuZ3RoJiYgdG9wLCBMZW5n
dGgmJiByaWdodCwgTGVuZ3RoJiYgYm90dG9tLCBMZW5ndGgmCiAgICAgZGF0YS5jbGlwLmxlZnQo
KSA9IFdURk1vdmUobGVmdCk7CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OmFkZEN1cnNvcihSZWZQ
dHI8U3R5bGVJbWFnZT4mJiBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGhvdFNwb3QpCit2b2lkIFJl
bmRlclN0eWxlOjphZGRDdXJzb3IoUmVmUHRyPFN0eWxlSW1hZ2U+JiYgaW1hZ2UsIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8SW50UG9pbnQ+JiBob3RTcG90KQogewogICAgIGF1dG8mIGN1cnNvckRhdGEg
PSBtX3JhcmVJbmhlcml0ZWREYXRhLmFjY2VzcygpLmN1cnNvckRhdGE7CiAgICAgaWYgKCFjdXJz
b3JEYXRhKQogICAgICAgICBjdXJzb3JEYXRhID0gQ3Vyc29yTGlzdDo6Y3JlYXRlKCk7Ci0gICAg
Y3Vyc29yRGF0YS0+YXBwZW5kKEN1cnNvckRhdGEoV1RGTW92ZShpbWFnZSksIGhvdFNwb3QpKTsK
KyAgICAvLyBGSVhNRTogV291bGQgaXQgYmUgYmV0dGVyIHRvIGV4dGVuZCB0aGUgY29uY2VwdCBv
ZiAibm8gaG90IHNwb3QiIGRlZXBlciwgaW50byBDdXJzb3JEYXRhIGFuZCBiZXlvbmQsIHJhdGhl
ciB0aGFuIHVzaW5nIDAsMCBmb3IgaXQ/CisgICAgY3Vyc29yRGF0YS0+YXBwZW5kKEN1cnNvckRh
dGEoV1RGTW92ZShpbWFnZSksIGhvdFNwb3QudmFsdWVfb3IoSW50UG9pbnQgeyB9KSkpOwogfQog
CiB2b2lkIFJlbmRlclN0eWxlOjpzZXRDdXJzb3JMaXN0KFJlZlB0cjxDdXJzb3JMaXN0PiYmIGxp
c3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4
IDkzZDk1NzFlNmRlNTU1N2E3NmNkMDQ5NWQ0MjU1OTBiNmEwZmVhNzEuLjNiYWQzY2QyMmRlMWRi
YjQwZjdkMjAwN2RiNmY4MDcwMjBjZjk4M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC0xMDcxLDcgKzEwNzEsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRQYWRkaW5nUmlnaHQoTGVuZ3RoJiYgbGVuZ3RoKSB7IFNFVF9WQVIobV9zdXJyb3Vu
ZERhdGEsIHBhZGRpbmcucmlnaHQoKSwgV1RGTW92ZShsZW5ndGgpKTsgfQogCiAgICAgdm9pZCBz
ZXRDdXJzb3IoQ3Vyc29yVHlwZSBjKSB7IG1faW5oZXJpdGVkRmxhZ3MuY3Vyc29yID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGMpOyB9Ci0gICAgdm9pZCBhZGRDdXJzb3IoUmVmUHRyPFN0eWxlSW1h
Z2U+JiYsIGNvbnN0IEludFBvaW50JiBob3RTcG90ID0gSW50UG9pbnQoKSk7CisgICAgdm9pZCBh
ZGRDdXJzb3IoUmVmUHRyPFN0eWxlSW1hZ2U+JiYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SW50UG9p
bnQ+JiBob3RTcG90KTsKICAgICB2b2lkIHNldEN1cnNvckxpc3QoUmVmUHRyPEN1cnNvckxpc3Q+
JiYpOwogICAgIHZvaWQgY2xlYXJDdXJzb3JMaXN0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcAppbmRleCA1MDE1MGEzYjQz
OTExOGQ0NGE3MmIxOTA2MzZhYjFlMjE2MDYxZjJhLi5lNDQ5MmE5NGU0ZjczZjIwODE2MzRiZTQ0
NTg4OTRjZDYyZmNjMDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwCkBAIC02Niw3ICs2Niw3IEBAIGJvb2wgU3R5bGVDYWNo
ZWRJbWFnZTo6b3BlcmF0b3I9PShjb25zdCBTdHlsZUltYWdlJiBvdGhlcikgY29uc3QKIAogVVJM
IFN0eWxlQ2FjaGVkSW1hZ2U6OmltYWdlVVJMKCkKIHsKLSAgICByZXR1cm4gbV9jc3NWYWx1ZS0+
dXJsKCk7CisgICAgcmV0dXJuIHsgeyB9LCBtX2Nzc1ZhbHVlLT5sb2NhdGlvbigpIH07CiB9CiAK
IHZvaWQgU3R5bGVDYWNoZWRJbWFnZTo6bG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciYgbG9hZGVy
LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXJzb3JJbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXJzb3JJbWFnZS5jcHAKaW5kZXggM2Y2M2I3
MTc3YWZiNWUwY2VmOGM3NWJlYzdiZDUxN2JiYjczNWE4Zi4uYTEwMWY2ZTk0NjQ4MTdlYjA5ZTMy
ZmVlNzA2M2UwOGI4YzU0NTMwNyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlQ3Vyc29ySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUN1cnNvckltYWdlLmNwcApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIFN0eWxl
Q3Vyc29ySW1hZ2U6OnNldENvbnRhaW5lckNvbnRleHRGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJF
bGVtZW50JiByZW5kZQogewogICAgIGlmICghaGFzQ2FjaGVkSW1hZ2UoKSkKICAgICAgICAgcmV0
dXJuOwotICAgIGNhY2hlZEltYWdlKCktPnNldENvbnRhaW5lckNvbnRleHRGb3JDbGllbnQocmVu
ZGVyZXIsIExheW91dFNpemUoY29udGFpbmVyU2l6ZSksIGNvbnRhaW5lclpvb20sIG1fY3NzVmFs
dWUtPmltYWdlVVJMKCkpOworICAgIGNhY2hlZEltYWdlKCktPnNldENvbnRhaW5lckNvbnRleHRG
b3JDbGllbnQocmVuZGVyZXIsIExheW91dFNpemUoY29udGFpbmVyU2l6ZSksIGNvbnRhaW5lclpv
b20sIHsgeyB9LCBtX2Nzc1ZhbHVlLT5sb2NhdGlvbigpIH0pOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDdXN0b20uaCBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlQnVpbGRlckN1c3RvbS5oCmluZGV4IGY2ZTZmN2E4MjcwNzlkNjRmNzNl
ODE2MDZjMWM2N2Q4MzY0ZjlkZjAuLmQ3MTc5YTBlYmU3NDllNzY3ZDgyM2VlZjU0ODE3ZjJmMTVk
YjlhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckN1c3Rv
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckN1c3RvbS5oCkBAIC0x
NTM4LDE5ICsxNTM4LDE5IEBAIGlubGluZSB2b2lkIEJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVD
b250ZW50KEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlLCBDU1NWYWx1CiAgICAgZm9yIChhdXRv
JiBpdGVtIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKICAgICAgICAgaWYgKGlz
PENTU0ltYWdlR2VuZXJhdG9yVmFsdWU+KGl0ZW0pKSB7CiAgICAgICAgICAgICBpZiAoaXM8Q1NT
R3JhZGllbnRWYWx1ZT4oaXRlbSkpCi0gICAgICAgICAgICAgICAgYnVpbGRlclN0YXRlLnN0eWxl
KCkuc2V0Q29udGVudChTdHlsZUdlbmVyYXRlZEltYWdlOjpjcmVhdGUoZG93bmNhc3Q8Q1NTR3Jh
ZGllbnRWYWx1ZT4oaXRlbS5nZXQoKSkuZ3JhZGllbnRXaXRoU3R5bGVzUmVzb2x2ZWQoYnVpbGRl
clN0YXRlKSksIGRpZFNldCk7CisgICAgICAgICAgICAgICAgYnVpbGRlclN0YXRlLnN0eWxlKCku
c2V0Q29udGVudChTdHlsZUdlbmVyYXRlZEltYWdlOjpjcmVhdGUoZG93bmNhc3Q8Q1NTR3JhZGll
bnRWYWx1ZT4oYnVpbGRlclN0YXRlLnJlc29sdmVJbWFnZVN0eWxlcyhpdGVtLmdldCgpKS5nZXQo
KSkpLCBkaWRTZXQpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGJ1aWxkZXJT
dGF0ZS5zdHlsZSgpLnNldENvbnRlbnQoU3R5bGVHZW5lcmF0ZWRJbWFnZTo6Y3JlYXRlKGRvd25j
YXN0PENTU0ltYWdlR2VuZXJhdG9yVmFsdWU+KGl0ZW0uZ2V0KCkpKSwgZGlkU2V0KTsKKyAgICAg
ICAgICAgICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRDb250ZW50KFN0eWxlR2VuZXJhdGVk
SW1hZ2U6OmNyZWF0ZShkb3duY2FzdDxDU1NJbWFnZUdlbmVyYXRvclZhbHVlPihidWlsZGVyU3Rh
dGUucmVzb2x2ZUltYWdlU3R5bGVzKGl0ZW0uZ2V0KCkpLmdldCgpKSksIGRpZFNldCk7CiAgICAg
ICAgICAgICBkaWRTZXQgPSB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGlm
IChpczxDU1NJbWFnZVNldFZhbHVlPihpdGVtKSkgewotICAgICAgICAgICAgYnVpbGRlclN0YXRl
LnN0eWxlKCkuc2V0Q29udGVudChTdHlsZUltYWdlU2V0OjpjcmVhdGUoZG93bmNhc3Q8Q1NTSW1h
Z2VTZXRWYWx1ZT4oaXRlbS5nZXQoKSkuaW1hZ2VTZXRXaXRoU3R5bGVzUmVzb2x2ZWQoYnVpbGRl
clN0YXRlKSksIGRpZFNldCk7CisgICAgICAgICAgICBidWlsZGVyU3RhdGUuc3R5bGUoKS5zZXRD
b250ZW50KFN0eWxlSW1hZ2VTZXQ6OmNyZWF0ZShkb3duY2FzdDxDU1NJbWFnZVNldFZhbHVlPihi
dWlsZGVyU3RhdGUucmVzb2x2ZUltYWdlU3R5bGVzKGl0ZW0uZ2V0KCkpLmdldCgpKSksIGRpZFNl
dCk7CiAgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOwogICAgICAgICB9CiAKICAgICAgICAgaWYg
KGlzPENTU0ltYWdlVmFsdWU+KGl0ZW0pKSB7Ci0gICAgICAgICAgICBidWlsZGVyU3RhdGUuc3R5
bGUoKS5zZXRDb250ZW50KFN0eWxlQ2FjaGVkSW1hZ2U6OmNyZWF0ZShkb3duY2FzdDxDU1NJbWFn
ZVZhbHVlPihpdGVtLmdldCgpKSksIGRpZFNldCk7CisgICAgICAgICAgICBidWlsZGVyU3RhdGUu
c3R5bGUoKS5zZXRDb250ZW50KFN0eWxlQ2FjaGVkSW1hZ2U6OmNyZWF0ZShkb3duY2FzdDxDU1NJ
bWFnZVZhbHVlPihidWlsZGVyU3RhdGUucmVzb2x2ZUltYWdlU3R5bGVzKGl0ZW0uZ2V0KCkpLmdl
dCgpKSksIGRpZFNldCk7CiAgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOwogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlQnVpbGRlclN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlclN0
YXRlLmNwcAppbmRleCBjNjZjOGIyN2E2NWE4NDRiNjc0ZWYxZWVhMGY4YWZhYTAyMzMzZWViLi5i
NDIyOWExMTAwOTY2ZmFiMGRhOTNmZmNmYzdhN2JmNjMwNWYwNGJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVCdWlsZGVyU3RhdGUuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3R5bGVCdWlsZGVyU3RhdGUuaCIKIAorI2luY2x1ZGUg
IkNTU0Nyb3NzZmFkZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIgog
I2luY2x1ZGUgIkNTU0ZpbHRlckltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NGb250U2VsZWN0
b3IuaCIKQEAgLTQxLDcgKzQyLDYgQEAKICNpbmNsdWRlICJGb250Q2FjaGUuaCIKICNpbmNsdWRl
ICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCi0jaW5jbHVkZSAiU1ZH
RWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTZXR0aW5n
cy5oIgogI2luY2x1ZGUgIlN0eWxlQnVpbGRlci5oIgpAQCAtODQsMzMgKzg0LDMxIEBAIGJvb2wg
QnVpbGRlclN0YXRlOjp1c2VTVkdab29tUnVsZXNGb3JMZW5ndGgoKSBjb25zdAogCiBSZWY8Q1NT
VmFsdWU+IEJ1aWxkZXJTdGF0ZTo6cmVzb2x2ZUltYWdlU3R5bGVzKENTU1ZhbHVlJiB2YWx1ZSkK
IHsKKyAgICBpZiAoaXM8Q1NTQ3Jvc3NmYWRlVmFsdWU+KHZhbHVlKSkKKyAgICAgICAgcmV0dXJu
IGRvd25jYXN0PENTU0Nyb3NzZmFkZVZhbHVlPih2YWx1ZSkudmFsdWVXaXRoU3R5bGVzUmVzb2x2
ZWQoKnRoaXMpOworICAgIGlmIChpczxDU1NDdXJzb3JJbWFnZVZhbHVlPih2YWx1ZSkpCisgICAg
ICAgIHJldHVybiBkb3duY2FzdDxDU1NDdXJzb3JJbWFnZVZhbHVlPih2YWx1ZSkudmFsdWVXaXRo
U3R5bGVzUmVzb2x2ZWQoKnRoaXMpOworICAgIGlmIChpczxDU1NGaWx0ZXJJbWFnZVZhbHVlPih2
YWx1ZSkpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NGaWx0ZXJJbWFnZVZhbHVlPih2YWx1
ZSkudmFsdWVXaXRoU3R5bGVzUmVzb2x2ZWQoKnRoaXMpOwogICAgIGlmIChpczxDU1NHcmFkaWVu
dFZhbHVlPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NHcmFkaWVudFZhbHVl
Pih2YWx1ZSkuZ3JhZGllbnRXaXRoU3R5bGVzUmVzb2x2ZWQoKnRoaXMpOwotCisgICAgICAgIHJl
dHVybiBkb3duY2FzdDxDU1NHcmFkaWVudFZhbHVlPih2YWx1ZSkudmFsdWVXaXRoU3R5bGVzUmVz
b2x2ZWQoKnRoaXMpOwogICAgIGlmIChpczxDU1NJbWFnZVNldFZhbHVlPih2YWx1ZSkpCi0gICAg
ICAgIHJldHVybiBkb3duY2FzdDxDU1NJbWFnZVNldFZhbHVlPih2YWx1ZSkuaW1hZ2VTZXRXaXRo
U3R5bGVzUmVzb2x2ZWQoKnRoaXMpOwotCi0gICAgLy8gQ3JlYXRpbmcgZmlsdGVyIG9wZXJhdGlv
bnMgZG9lc24ndCBjcmVhdGUgYSBuZXcgQ1NTVmFsdWUgcmVmZXJlbmNlLgotICAgIGlmIChpczxD
U1NGaWx0ZXJJbWFnZVZhbHVlPih2YWx1ZSkpCi0gICAgICAgIGRvd25jYXN0PENTU0ZpbHRlcklt
YWdlVmFsdWU+KHZhbHVlKS5jcmVhdGVGaWx0ZXJPcGVyYXRpb25zKCp0aGlzKTsKLQorICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8Q1NTSW1hZ2VTZXRWYWx1ZT4odmFsdWUpLnZhbHVlV2l0aFN0eWxl
c1Jlc29sdmVkKCp0aGlzKTsKKyAgICBpZiAoaXM8Q1NTSW1hZ2VWYWx1ZT4odmFsdWUpKQorICAg
ICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTSW1hZ2VWYWx1ZT4odmFsdWUpLnZhbHVlV2l0aFN0eWxl
c1Jlc29sdmVkKCp0aGlzKTsKICAgICByZXR1cm4gbWFrZVJlZih2YWx1ZSk7CiB9CiAKIFJlZlB0
cjxTdHlsZUltYWdlPiBCdWlsZGVyU3RhdGU6OmNyZWF0ZVN0eWxlSW1hZ2UoQ1NTVmFsdWUmIHZh
bHVlKQogewogICAgIGlmIChpczxDU1NJbWFnZVZhbHVlPih2YWx1ZSkpCi0gICAgICAgIHJldHVy
biBTdHlsZUNhY2hlZEltYWdlOjpjcmVhdGUoZG93bmNhc3Q8Q1NTSW1hZ2VWYWx1ZT4odmFsdWUp
KTsKLQorICAgICAgICByZXR1cm4gU3R5bGVDYWNoZWRJbWFnZTo6Y3JlYXRlKGRvd25jYXN0PENT
U0ltYWdlVmFsdWU+KHJlc29sdmVJbWFnZVN0eWxlcyh2YWx1ZSkuZ2V0KCkpKTsKICAgICBpZiAo
aXM8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZT4odmFsdWUpKQotICAgICAgICByZXR1cm4gU3R5bGVDdXJz
b3JJbWFnZTo6Y3JlYXRlKGRvd25jYXN0PENTU0N1cnNvckltYWdlVmFsdWU+KHZhbHVlKSk7Ci0K
KyAgICAgICAgcmV0dXJuIFN0eWxlQ3Vyc29ySW1hZ2U6OmNyZWF0ZShkb3duY2FzdDxDU1NDdXJz
b3JJbWFnZVZhbHVlPihyZXNvbHZlSW1hZ2VTdHlsZXModmFsdWUpLmdldCgpKSk7CiAgICAgaWYg
KGlzPENTU0ltYWdlR2VuZXJhdG9yVmFsdWU+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIFN0eWxl
R2VuZXJhdGVkSW1hZ2U6OmNyZWF0ZShkb3duY2FzdDxDU1NJbWFnZUdlbmVyYXRvclZhbHVlPihy
ZXNvbHZlSW1hZ2VTdHlsZXModmFsdWUpLmdldCgpKSk7Ci0gICAgCiAgICAgaWYgKGlzPENTU0lt
YWdlU2V0VmFsdWU+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIFN0eWxlSW1hZ2VTZXQ6OmNyZWF0
ZShkb3duY2FzdDxDU1NJbWFnZVNldFZhbHVlPihyZXNvbHZlSW1hZ2VTdHlsZXModmFsdWUpLmdl
dCgpKSk7Ci0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDIzOThiYWY3YzBkNGIy
ZDI1YThlODAwZGJlOTdjZGEyODJjM2VmNzkuLjNhZDc0YmFhYWU1MmQwMWIzZTIxODJlM2I1ZDll
MjlkNjQ4M2E4YmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAyMS0wNi0xNSAgRGFyaW4gQWRs
ZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IENTUyBzZXJpYWxpemF0aW9uIGlz
c3VlcyBhZmZlY3RpbmcgY3NzLWNvdW50ZXItc3R5bGVzIHRlc3RzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY3MDgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvY3NzL3BhcnNlLWJvcmRlci1p
bWFnZS1yZXBlYXQtbnVsbC1jcmFzaC1leHBlY3RlZC50eHQ6IFVwZGF0ZSB0byByZWZsZWN0IGNv
cnJlY3QKKyAgICAgICAgcGF0aDsgdGhlIHBhdGggaXMgbm90IHJlYWxseSByZWxldmFudCB0byB3
aGF0IHdhcyBiZWluZyB0ZXN0ZWQgaGVyZSBlaXRoZXIgd2F5LgorCisgICAgICAgICogZmFzdC9j
c3MvdXJpLXRva2VuLXBhcnNpbmctZXhwZWN0ZWQudHh0OiBVcGRhdGVkIHRvIGV4cGVjdCBiZWhh
dmlvciB0aGF0IGlzIHNlbnNpYmxlCisgICAgICAgIGFuZCBhbHNvIG1hdGNoZXMgRmlyZWZveC4K
KyAgICAgICAgKiBmYXN0L2Nzcy91cmktdG9rZW4tcGFyc2luZy5odG1sOiBEaXR0by4KKworICAg
ICAgICAqIGZhc3QvZmFzdC9jc3MvdXJsLXdpdGgtbXVsdGktYnl0ZS11bmljb2RlLWVzY2FwZS1l
eHBlY3RlZC50eHQ6IFVwZGF0ZWQgdG8gZXhwZWN0IHRoYXQKKyAgICAgICAgVVJMIGlzIHN0aWxs
IGVuY29kZWQgYXMgVVRGLTgsIG5vdCB5ZXQgcmUtVVJMLWVuY29kZWQgYXMgaXQgd2lsbCBiZSBm
b3IgbG9hZGluZy4gVGhlCisgICAgICAgIG9uZSB0aGF0IHdpbGwgYmUgdXNlZCBmb3IgbG9hZGlu
ZyBjYW4gc3RpbGwgYmUgc2VlbiBpbiBjb21wdXRlZCBzdHlsZS4gVGhlIHRlc3Qgc3RpbGwKKyAg
ICAgICAgY292ZXJzIGNvcnJlY2x0eSBwYXJzaWcgdGhpcyBVUkwuCisgICAgICAgICogZmFzdC9m
YXN0L2Nzcy91cmwtd2l0aC1tdWx0aS1ieXRlLXVuaWNvZGUtZXNjYXBlLmh0bWw6IERpdHRvLgor
CisgICAgICAgICogZmFzdC9maWx0ZXItaW1hZ2UvcGFyc2UtZmlsdGVyLWltYWdlLWV4cGVjdGVk
LnR4dDogVXBkYXRlZCB0byBubyBsb25nZXIgdGVzdCBhZGRpdGlvbgorICAgICAgICBvZiB0cmFp
bGluZyBzbGFzaGVzIHRvIHBlY3VsaWFyIFVSTHMgdGhhdCBhcmUgbWFkZSBieSB1c2luZyBmaWxl
bmFtZXMgYXMgaG9zdCBuYW1lcy4KKyAgICAgICAgTm93IHRoaXMgY2hlY2tzIFVSTHMgdGhhdCBq
dXN0IGNvbnRhaW4gZmlsZW5hbWVzLCB3aGljaCBtYWtlcyBtb3JlIGxvZ2ljYWwgc2Vuc2UsIGFu
ZAorICAgICAgICBubyB0cmFpbGluZyBzbGFzaCBhZGRpdGlvbiBpcyBleHBlY3RlZC4KKyAgICAg
ICAgKiBmYXN0L2ZpbHRlci1pbWFnZS9wYXJzZS1maWx0ZXItaW1hZ2UuaHRtbDogRGl0dG8uCisK
KyAgICAgICAgKiBmYXN0L2lubmVySFRNTC9pbm5lckhUTUwtdXJpLXJlc29sdXRpb24uaHRtbDog
VXBkYXRlZCB0ZXN0IHRvIHVzZSBjb21wdXRlZCBzdHlsZSBzbworICAgICAgICBpdCBubyBsb25n
ZXIgZGVwZW5kcyBvbiBXZWJLaXQtb25seSBiZWhhdmlvciB0byBydW4gY29ycmVjdGx5LgorCiAy
MDIxLTA2LTE1ICBDaHJpcyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBTY3Jv
bGxiYXJzIGFyZSBub3QgY2xpcHBlZCB0byBsYXllciBib3VuZHMgaW4gUmVuZGVyTGF5ZXJCYWNr
aW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCBkMDNhOWM4OTgzOGJiMGFlOWM4
NmM5ZmVhYTg1ZTBhN2UyZGU1ZmJiLi4yNmUwNzAyZmU2MjczZmFkMTczNmRjMzc1Y2JmZmNhYjNh
MjQ0ZWIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAyMS0wNi0xNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4
IENTUyBzZXJpYWxpemF0aW9uIGlzc3VlcyBhZmZlY3RpbmcgY3NzLWNvdW50ZXItc3R5bGVzIHRl
c3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY3
MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvdW50ZXItc3R5bGVzL2NvdW50ZXItc3R5bGUtYWRk
aXRpdmUtc3ltYm9scy1zeW50YXgtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWNvdW50ZXItc3R5bGVzL2NvdW50ZXItc3R5bGUtc3ltYm9scy1zeW50
YXgtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXN5
bnRheC91cmwtd2hpdGVzcGFjZS1jb25zdW1wdGlvbi1leHBlY3RlZC50eHQ6CisgICAgICAgIFVw
ZGF0ZWQgdG8gcmVmbGVjdCBwcm9ncmVzc2lvbnMuCisKIDIwMjEtMDYtMTUgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBDaGVjayBmb3IgInhu
LS0iIGluIGFueSBzdWJkb21haW4gd2hlbiBwYXJzaW5nIFVSTCBob3N0cwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2UtYm9yZGVyLWltYWdlLXJlcGVhdC1udWxsLWNyYXNo
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BhcnNlLWJvcmRlci1pbWFnZS1y
ZXBlYXQtbnVsbC1jcmFzaC1leHBlY3RlZC50eHQKaW5kZXggYzAyMmY5ODE0ZGJlZGE5NzE4NDI1
N2NhMDU0YzEzMGQ0YTk2ODkzMS4uZTllYTU0MGEyM2Q1ZWEwODFhNzZjNzRmMGYzMDJkYWYyMjBj
Y2JlOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2UtYm9yZGVyLWltYWdl
LXJlcGVhdC1udWxsLWNyYXNoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9wYXJzZS1ib3JkZXItaW1hZ2UtcmVwZWF0LW51bGwtY3Jhc2gtZXhwZWN0ZWQudHh0CkBAIC0x
LDIgKzEsMiBAQAotQ09OU09MRSBNRVNTQUdFOiBib3JkZXItaW1hZ2Utc291cmNlOiB1cmwoInNo
YWRvdy1ib3JkZXIucG5nIik7IGJvcmRlci1pbWFnZS1zbGljZTogMTA7IGJvcmRlci1pbWFnZS1y
ZXBlYXQ6IHN0cmV0Y2g7CitDT05TT0xFIE1FU1NBR0U6IGJvcmRlci1pbWFnZS1zb3VyY2U6IHVy
bCgiaW1hZ2VzL3NoYWRvdy1ib3JkZXIucG5nIik7IGJvcmRlci1pbWFnZS1zbGljZTogMTA7IGJv
cmRlci1pbWFnZS1yZXBlYXQ6IHN0cmV0Y2g7CiBUaGlzIHRlc3Qgc2hvdWxkIG5vdCBjcmFzaApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdXJpLXRva2VuLXBhcnNpbmctZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdXJpLXRva2VuLXBhcnNpbmctZXhwZWN0ZWQu
dHh0CmluZGV4IDljYzBlNDM4NmI1Mjc1MjQwZWZjZWE5NDk4NzQ4ZWVhMzIxMGExNzMuLjdiNWI0
OGYzYjExODA1OTU1Y2M4NDQwMjZkNzMyZjNlZTFhM2Q5NWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvY3NzL3VyaS10b2tlbi1wYXJzaW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy91cmktdG9rZW4tcGFyc2luZy1leHBlY3RlZC50eHQKQEAgLTksMTQgKzks
MTQgQEAgUnVsZXMgZnJvbSB0aGUgc3R5bGVzaGVldDoKICNjIHsgY29udGVudDogdXJsKCJlIik7
IH0KICNkIHsgY29udGVudDogdXJsKCJmIik7IH0KICNmIHsgY29udGVudDogdXJsKCJjIik7IH0K
LSNnIHsgY29udGVudDogdXJsKCJkIik7IH0KLSNoIHsgY29udGVudDogdXJsKCJlIik7IH0KLSNp
IHsgY29udGVudDogdXJsKCJmIik7IH0KKyNnIHsgY29udGVudDogdXJsKCIgZCIpOyB9CisjaCB7
IGNvbnRlbnQ6IHVybCgiZSAiKTsgfQorI2kgeyBjb250ZW50OiB1cmwoIiBmICIpOyB9CiAjaiB7
IGNvbnRlbnQ6IHVybCgidXJsKGcpIik7IH0KICNsIHsgY29udGVudDogdXJsKCJjIik7IH0KLSNt
IHsgY29udGVudDogdXJsKCJkIik7IH0KLSNuIHsgY29udGVudDogdXJsKCJlIik7IH0KLSNvIHsg
Y29udGVudDogdXJsKCJmIik7IH0KKyNtIHsgY29udGVudDogdXJsKCIgZCIpOyB9CisjbiB7IGNv
bnRlbnQ6IHVybCgiZSAiKTsgfQorI28geyBjb250ZW50OiB1cmwoIiBmICIpOyB9CiAjcCB7IGNv
bnRlbnQ6IHVybCgidXJsKGcpIik7IH0KICNxIHsgY3Vyc29yOiB1cmwoInVybChxKSIpLCBkZWZh
dWx0OyB9CiAjciB7IGxpc3Qtc3R5bGUtaW1hZ2U6IHVybCgidXJsKHIpIik7IH0KQEAgLTI0LDkg
KzI0LDkgQEAgUnVsZXMgZnJvbSB0aGUgc3R5bGVzaGVldDoKICN0IHsgLXdlYmtpdC1tYXNrLWlt
YWdlOiB1cmwoInVybCh0KSIpOyB9CiAjdSB7IC13ZWJraXQtYm9yZGVyLWltYWdlOiB1cmwoInVy
bCh1KSIpIDEgMiAzIDQgZmlsbCBzdHJldGNoIHJvdW5kOyB9CiAjdiB7IC13ZWJraXQtbWFzay1i
b3gtaW1hZ2U6IHVybCgidXJsKHYpIikgMSAyIDMgNCBmaWxsIHN0cmV0Y2ggcm91bmQ7IH0KLSN3
IHsgY29udGVudDogdXJsKCJ3dyIpOyB9Ci0jeCB7IGNvbnRlbnQ6IHVybCgieCUyMHh4Iik7IH0K
LSN5IHsgY29udGVudDogdXJsKCJ5JTIweXkiKTsgfQorI3cgeyBjb250ZW50OiB1cmwoIndcZCB3
Iik7IH0KKyN4IHsgY29udGVudDogdXJsKCIgeCB4XDkgeCAiKTsgfQorI3kgeyBjb250ZW50OiB1
cmwoInkgeVw5IHkiKTsgfQogRXhwZWN0ZWQgcmVzdWx0OgogCiAjYSB7IGNvbnRlbnQ6IHVybCgi
YyIpOyB9CkBAIC0zNCwxNCArMzQsMTQgQEAgRXhwZWN0ZWQgcmVzdWx0OgogI2MgeyBjb250ZW50
OiB1cmwoImUiKTsgfQogI2QgeyBjb250ZW50OiB1cmwoImYiKTsgfQogI2YgeyBjb250ZW50OiB1
cmwoImMiKTsgfQotI2cgeyBjb250ZW50OiB1cmwoImQiKTsgfQotI2ggeyBjb250ZW50OiB1cmwo
ImUiKTsgfQotI2kgeyBjb250ZW50OiB1cmwoImYiKTsgfQorI2cgeyBjb250ZW50OiB1cmwoIiBk
Iik7IH0KKyNoIHsgY29udGVudDogdXJsKCJlICIpOyB9CisjaSB7IGNvbnRlbnQ6IHVybCgiIGYg
Iik7IH0KICNqIHsgY29udGVudDogdXJsKCJ1cmwoZykiKTsgfQogI2wgeyBjb250ZW50OiB1cmwo
ImMiKTsgfQotI20geyBjb250ZW50OiB1cmwoImQiKTsgfQotI24geyBjb250ZW50OiB1cmwoImUi
KTsgfQotI28geyBjb250ZW50OiB1cmwoImYiKTsgfQorI20geyBjb250ZW50OiB1cmwoIiBkIik7
IH0KKyNuIHsgY29udGVudDogdXJsKCJlICIpOyB9CisjbyB7IGNvbnRlbnQ6IHVybCgiIGYgIik7
IH0KICNwIHsgY29udGVudDogdXJsKCJ1cmwoZykiKTsgfQogI3EgeyBjdXJzb3I6IHVybCgidXJs
KHEpIiksIGRlZmF1bHQ7IH0KICNyIHsgbGlzdC1zdHlsZS1pbWFnZTogdXJsKCJ1cmwocikiKTsg
fQpAQCAtNDksNyArNDksNyBAQCBFeHBlY3RlZCByZXN1bHQ6CiAjdCB7IC13ZWJraXQtbWFzay1p
bWFnZTogdXJsKCJ1cmwodCkiKTsgfQogI3UgeyAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJsKCJ1
cmwodSkiKSAxIDIgMyA0IGZpbGwgc3RyZXRjaCByb3VuZDsgfQogI3YgeyAtd2Via2l0LW1hc2st
Ym94LWltYWdlOiB1cmwoInVybCh2KSIpIDEgMiAzIDQgZmlsbCBzdHJldGNoIHJvdW5kOyB9Ci0j
dyB7IGNvbnRlbnQ6IHVybCgid3ciKTsgfQotI3ggeyBjb250ZW50OiB1cmwoInglMjB4eCIpOyB9
Ci0jeSB7IGNvbnRlbnQ6IHVybCgieSUyMHl5Iik7IH0KKyN3IHsgY29udGVudDogdXJsKCJ3XGQg
dyIpOyB9CisjeCB7IGNvbnRlbnQ6IHVybCgiIHggeFw5IHggIik7IH0KKyN5IHsgY29udGVudDog
dXJsKCJ5IHlcOSB5Iik7IH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdXJp
LXRva2VuLXBhcnNpbmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3VyaS10b2tlbi1wYXJz
aW5nLmh0bWwKaW5kZXggNjc3YzlkMTUzNGVkNzI2NWFhMjNhMWIwMGZhZDIzNTI2OTJmNWE3ZC4u
NjFlNTcyMTI4MmI4NTUzYWJmYWNiM2MwNzIzMTg1MzI3ODRmNzUyMyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9jc3MvdXJpLXRva2VuLXBhcnNpbmcuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy91cmktdG9rZW4tcGFyc2luZy5odG1sCkBAIC00NCwxMyArNDQsNyBAQCBmdW5j
dGlvbiBydW5UZXN0KCkKICAgICB2YXIgcnVsZXMgPSBkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5j
c3NSdWxlczsKICAgICB2YXIgdGV4dCA9ICIiOwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcnVs
ZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgdmFyIGl0ZW1UZXh0ID0gcnVsZXMuaXRlbShpKS5j
c3NUZXh0OwotCi0gICAgICAgIC8vIFdvcmsgYXJvdW5kIGJ1ZyB3aGVyZSBXZWJLaXQgY29tcGxl
dGVzIHRoZSBVUkxzIGluIHRoZSBDU1MgRE9NLgotICAgICAgICAvLyBUaGUgY29tcGxldGlvbiBv
ZiB0aGUgVVJMIHNob3VsZCBiZSB3aGVuIHRoZXkgYXJlIHVzZWQsIG5vdCBpbiB0aGUgRE9NLgot
ICAgICAgICBpdGVtVGV4dCA9IGl0ZW1UZXh0LnJlcGxhY2UoL2ZpbGU6LipMYXlvdXRUZXN0c1wv
ZmFzdFwvY3NzXC8vLCAiIik7Ci0KLSAgICAgICAgdGV4dCArPSBpdGVtVGV4dDsKKyAgICAgICAg
dGV4dCArPSBydWxlcy5pdGVtKGkpLmNzc1RleHQ7CiAgICAgICAgIHRleHQgKz0gIlxuIjsKICAg
ICB9CiAKQEAgLTgzLDE0ICs3NywxNCBAQCBmdW5jdGlvbiBydW5UZXN0KCkKICNjIHsgY29udGVu
dDogdXJsKCJlIik7IH0KICNkIHsgY29udGVudDogdXJsKCJmIik7IH0KICNmIHsgY29udGVudDog
dXJsKCJjIik7IH0KLSNnIHsgY29udGVudDogdXJsKCJkIik7IH0KLSNoIHsgY29udGVudDogdXJs
KCJlIik7IH0KLSNpIHsgY29udGVudDogdXJsKCJmIik7IH0KKyNnIHsgY29udGVudDogdXJsKCIg
ZCIpOyB9CisjaCB7IGNvbnRlbnQ6IHVybCgiZSAiKTsgfQorI2kgeyBjb250ZW50OiB1cmwoIiBm
ICIpOyB9CiAjaiB7IGNvbnRlbnQ6IHVybCgidXJsKGcpIik7IH0KICNsIHsgY29udGVudDogdXJs
KCJjIik7IH0KLSNtIHsgY29udGVudDogdXJsKCJkIik7IH0KLSNuIHsgY29udGVudDogdXJsKCJl
Iik7IH0KLSNvIHsgY29udGVudDogdXJsKCJmIik7IH0KKyNtIHsgY29udGVudDogdXJsKCIgZCIp
OyB9CisjbiB7IGNvbnRlbnQ6IHVybCgiZSAiKTsgfQorI28geyBjb250ZW50OiB1cmwoIiBmICIp
OyB9CiAjcCB7IGNvbnRlbnQ6IHVybCgidXJsKGcpIik7IH0KICNxIHsgY3Vyc29yOiB1cmwoInVy
bChxKSIpLCBkZWZhdWx0OyB9CiAjciB7IGxpc3Qtc3R5bGUtaW1hZ2U6IHVybCgidXJsKHIpIik7
IH0KQEAgLTk4LDkgKzkyLDkgQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAjdCB7IC13ZWJraXQtbWFz
ay1pbWFnZTogdXJsKCJ1cmwodCkiKTsgfQogI3UgeyAtd2Via2l0LWJvcmRlci1pbWFnZTogdXJs
KCJ1cmwodSkiKSAxIDIgMyA0IGZpbGwgc3RyZXRjaCByb3VuZDsgfQogI3YgeyAtd2Via2l0LW1h
c2stYm94LWltYWdlOiB1cmwoInVybCh2KSIpIDEgMiAzIDQgZmlsbCBzdHJldGNoIHJvdW5kOyB9
Ci0jdyB7IGNvbnRlbnQ6IHVybCgid3ciKTsgfQotI3ggeyBjb250ZW50OiB1cmwoInglMjB4eCIp
OyB9Ci0jeSB7IGNvbnRlbnQ6IHVybCgieSUyMHl5Iik7IH0KKyN3IHsgY29udGVudDogdXJsKCJ3
XGQgdyIpOyB9CisjeCB7IGNvbnRlbnQ6IHVybCgiIHggeFw5IHggIik7IH0KKyN5IHsgY29udGVu
dDogdXJsKCJ5IHlcOSB5Iik7IH0KIDwvcHJlPgogCiA8c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9jc3MvdXJsLXdpdGgtbXVsdGktYnl0ZS11bmljb2RlLWVzY2FwZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy91cmwtd2l0aC1tdWx0aS1ieXRlLXVuaWNv
ZGUtZXNjYXBlLWV4cGVjdGVkLnR4dAppbmRleCA1MzYxM2JlOGUxZTA4MzY1ODk4Yzg2N2Y3NjNj
YmZhNmJlYmE5N2Q2Li5iMzdiNGZhZDk5N2QyOTNiZmQwZjI5YmQ5MTMyMDBmOGMyNjg4OTcyIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy91cmwtd2l0aC1tdWx0aS1ieXRlLXVuaWNv
ZGUtZXNjYXBlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy91cmwtd2l0
aC1tdWx0aS1ieXRlLXVuaWNvZGUtZXNjYXBlLWV4cGVjdGVkLnR4dApAQCAtNCw4ICs0LDggQEAg
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAogCiBQQVNTIGRvY3VtZW50LnN0eWxlU2hlZXRzWzBd
LmNzc1J1bGVzLmxlbmd0aCBpcyAyCi1QQVNTIGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmNzc1J1
bGVzWzBdLnN0eWxlLmdldFByb3BlcnR5VmFsdWUoImJhY2tncm91bmQtaW1hZ2UiKSBpcyAidXJs
KFwiZGF0YTolQzQlODBcIikiCi1QQVNTIGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmNzc1J1bGVz
WzBdLnN0eWxlLmdldFByb3BlcnR5VmFsdWUoImJvcmRlci1pbWFnZS1zb3VyY2UiKSBpcyAidXJs
KFwiZGF0YTolQzQlODBcIikiCitQQVNTIGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmNzc1J1bGVz
WzBdLnN0eWxlLmdldFByb3BlcnR5VmFsdWUoImJhY2tncm91bmQtaW1hZ2UiKSBpcyAidXJsKFwi
ZGF0YTrEgFwiKSIKK1BBU1MgZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMF0uc3R5
bGUuZ2V0UHJvcGVydHlWYWx1ZSgiYm9yZGVyLWltYWdlLXNvdXJjZSIpIGlzICJ1cmwoXCJkYXRh
OsSAXCIpIgogUEFTUyBkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5jc3NSdWxlc1sxXS5zdHlsZS5n
ZXRQcm9wZXJ0eVZhbHVlKCJiYWNrZ3JvdW5kLWNvbG9yIikgaXMgImdyZWVuIgogUEFTUyB3aW5k
b3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpKS5nZXRQ
cm9wZXJ0eVZhbHVlKCJiYWNrZ3JvdW5kLWNvbG9yIikgaXMgInJnYigwLCAxMjgsIDApIgogUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9jc3MvdXJsLXdpdGgtbXVsdGktYnl0ZS11bmljb2RlLWVzY2FwZS5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9jc3MvdXJsLXdpdGgtbXVsdGktYnl0ZS11bmljb2RlLWVzY2FwZS5odG1sCmluZGV4
IDc0MzU2MjAzN2Q2MmMxNzliYzAwODJhMzc1ZTQwOGYyOWJhZWYzNGMuLmRmMGM2OGU0YjMwYmNj
NTgwYTg0YmY2OTQ1MTlhNDA1YmVlODM5NGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL3VybC13aXRoLW11bHRpLWJ5dGUtdW5pY29kZS1lc2NhcGUuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy91cmwtd2l0aC1tdWx0aS1ieXRlLXVuaWNvZGUtZXNjYXBlLmh0bWwKQEAg
LTEzLDggKzEzLDggQEAKIDxzY3JpcHQ+CiAgICAgZGVzY3JpcHRpb24oJ1Rlc3QgcGFyc2luZyBh
IENTUyBVUkkgY29udGFpbmluZyBhIG11bHRpLWJ5dGUgVW5pY29kZSBlc2NhcGUgc2VxdWVuY2Uu
Jyk7CiAgICAgc2hvdWxkQmUoJ2RvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmNzc1J1bGVzLmxlbmd0
aCcsICcyJyk7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5zdHlsZVNoZWV0
c1swXS5jc3NSdWxlc1swXS5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCJiYWNrZ3JvdW5kLWltYWdl
IiknLCAndXJsKCJkYXRhOiVDNCU4MCIpJyk7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdk
b2N1bWVudC5zdHlsZVNoZWV0c1swXS5jc3NSdWxlc1swXS5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVl
KCJib3JkZXItaW1hZ2Utc291cmNlIiknLCAndXJsKCJkYXRhOiVDNCU4MCIpJyk7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5jc3NSdWxlc1swXS5z
dHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCJiYWNrZ3JvdW5kLWltYWdlIiknLCAndXJsKCJkYXRhOlx1
MDEwMCIpJyk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkb2N1bWVudC5zdHlsZVNoZWV0
c1swXS5jc3NSdWxlc1swXS5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCJib3JkZXItaW1hZ2Utc291
cmNlIiknLCAndXJsKCJkYXRhOlx1MDEwMCIpJyk7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCdkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5jc3NSdWxlc1sxXS5zdHlsZS5nZXRQcm9wZXJ0eVZh
bHVlKCJiYWNrZ3JvdW5kLWNvbG9yIiknLCAnZ3JlZW4nKTsKICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoJ3dpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0
ZXN0IikpLmdldFByb3BlcnR5VmFsdWUoImJhY2tncm91bmQtY29sb3IiKScsICdyZ2IoMCwgMTI4
LCAwKScpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbHRlci1p
bWFnZS9wYXJzZS1maWx0ZXItaW1hZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9m
aWx0ZXItaW1hZ2UvcGFyc2UtZmlsdGVyLWltYWdlLWV4cGVjdGVkLnR4dAppbmRleCAzMGJmNDFl
ZjNhMmViNDQ1YjA0NTliMDdhYmUyNTc3ODg4NTEwZWMzLi45MmVhZjM4ZjQ2NWMwN2EyMjVjZGQx
NDFiNjZkMGI5M2MzMTA0ZDdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbHRlci1p
bWFnZS9wYXJzZS1maWx0ZXItaW1hZ2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZmlsdGVyLWltYWdlL3BhcnNlLWZpbHRlci1pbWFnZS1leHBlY3RlZC50eHQKQEAgLTc4LDEz
ICs3OCwxMyBAQCBQQVNTIGlubmVyU3R5bGUoImJhY2tncm91bmQtaW1hZ2UiLCAiZmlsdGVyKHJh
ZGlhbC1ncmFkaWVudChlbGxpcHNlIGNsb3Nlc3QtY29ybgogUEFTUyBpbm5lclN0eWxlKCJiYWNr
Z3JvdW5kLWltYWdlIiwgImZpbHRlcihsaW5lYXItZ3JhZGllbnQod2hpdGUsIGJsYWNrKSwgaHVl
LXJvdGF0ZSg5MGRlZykpIikgaXMgImZpbHRlcihsaW5lYXItZ3JhZGllbnQod2hpdGUsIGJsYWNr
KSwgaHVlLXJvdGF0ZSg5MGRlZykpIgogUEFTUyBpbm5lclN0eWxlKCJiYWNrZ3JvdW5kLWltYWdl
IiwgImZpbHRlcihsaW5lYXItZ3JhZGllbnQodG8gdG9wIGxlZnQsIHdoaXRlLCBibGFjayksIGh1
ZS1yb3RhdGUoOTBkZWcpKSIpIGlzICJmaWx0ZXIobGluZWFyLWdyYWRpZW50KHRvIGxlZnQgdG9w
LCB3aGl0ZSwgYmxhY2spLCBodWUtcm90YXRlKDkwZGVnKSkiCiBQQVNTIGlubmVyU3R5bGUoImJh
Y2tncm91bmQtaW1hZ2UiLCAiZmlsdGVyKGxpbmVhci1ncmFkaWVudCgwZGVnLCB3aGl0ZSAtMjAl
LCBibHVlLCBibGFjayAxMjAlKSwgaHVlLXJvdGF0ZSg5MGRlZykpIikgaXMgImZpbHRlcihsaW5l
YXItZ3JhZGllbnQoMGRlZywgd2hpdGUgLTIwJSwgYmx1ZSwgYmxhY2sgMTIwJSksIGh1ZS1yb3Rh
dGUoOTBkZWcpKSIKLVBBU1MgaW5uZXJTdHlsZSgiYmFja2dyb3VuZC1pbWFnZSIsICJmaWx0ZXIo
LXdlYmtpdC1jcm9zcy1mYWRlKHVybChodHRwOi8vaW1hZ2UxLnBuZyksIHVybChodHRwOi8vaW1h
Z2UyLnBuZyksIDUwJSksIGNvbnRyYXN0KDAuNSkpIikgaXMgImZpbHRlcigtd2Via2l0LWNyb3Nz
LWZhZGUodXJsKFwiaHR0cDovL2ltYWdlMS5wbmcvXCIpLCB1cmwoXCJodHRwOi8vaW1hZ2UyLnBu
Zy9cIiksIDAuNSksIGNvbnRyYXN0KDAuNSkpIgotUEFTUyBpbm5lclN0eWxlKCJiYWNrZ3JvdW5k
LWltYWdlIiwgImZpbHRlcih1cmwoaHR0cDovL2ltYWdlMS5wbmcpLCBicmlnaHRuZXNzKDUwJSkp
IikgaXMgImZpbHRlcih1cmwoXCJodHRwOi8vaW1hZ2UxLnBuZy9cIiksIGJyaWdodG5lc3MoNTAl
KSkiCi1QQVNTIGlubmVyU3R5bGUoImJhY2tncm91bmQtaW1hZ2UiLCAiZmlsdGVyKHVybCgnaHR0
cDovL2ltYWdlMS5wbmcnKSwgYnJpZ2h0bmVzcyg1MCUpKSIpIGlzICJmaWx0ZXIodXJsKFwiaHR0
cDovL2ltYWdlMS5wbmcvXCIpLCBicmlnaHRuZXNzKDUwJSkpIgotUEFTUyBpbm5lclN0eWxlKCJi
b3JkZXItaW1hZ2Utc291cmNlIiwgImZpbHRlcih1cmwoaHR0cDovL2ltYWdlMS5wbmcpLCBpbnZl
cnQoNTAlKSkiKSBpcyAiZmlsdGVyKHVybChcImh0dHA6Ly9pbWFnZTEucG5nL1wiKSwgaW52ZXJ0
KDUwJSkpIgotUEFTUyBpbm5lclN0eWxlKCItd2Via2l0LW1hc2staW1hZ2UiLCAiZmlsdGVyKHVy
bChodHRwOi8vaW1hZ2UxLnBuZyksIGludmVydCg1MCUpKSIpIGlzICJmaWx0ZXIodXJsKFwiaHR0
cDovL2ltYWdlMS5wbmcvXCIpLCBpbnZlcnQoNTAlKSkiCi1QQVNTIGlubmVyU3R5bGUoIi13ZWJr
aXQtbWFzay1ib3gtaW1hZ2Utc291cmNlIiwgImZpbHRlcih1cmwoaHR0cDovL2ltYWdlMS5wbmcp
LCBpbnZlcnQoNTAlKSkiKSBpcyAiZmlsdGVyKHVybChcImh0dHA6Ly9pbWFnZTEucG5nL1wiKSwg
aW52ZXJ0KDUwJSkpIgotUEFTUyBpbm5lclN0eWxlKCJjb250ZW50IiwgImZpbHRlcih1cmwoaHR0
cDovL2ltYWdlMS5wbmcpLCBpbnZlcnQoNTAlKSkiKSBpcyAiZmlsdGVyKHVybChcImh0dHA6Ly9p
bWFnZTEucG5nL1wiKSwgaW52ZXJ0KDUwJSkpIgorUEFTUyBpbm5lclN0eWxlKCJiYWNrZ3JvdW5k
LWltYWdlIiwgImZpbHRlcigtd2Via2l0LWNyb3NzLWZhZGUodXJsKGltYWdlMS5wbmcpLCB1cmwo
aW1hZ2UyLnBuZyksIDUwJSksIGNvbnRyYXN0KDAuNSkpIikgaXMgImZpbHRlcigtd2Via2l0LWNy
b3NzLWZhZGUodXJsKFwiaW1hZ2UxLnBuZ1wiKSwgdXJsKFwiaW1hZ2UyLnBuZ1wiKSwgMC41KSwg
Y29udHJhc3QoMC41KSkiCitQQVNTIGlubmVyU3R5bGUoImJhY2tncm91bmQtaW1hZ2UiLCAiZmls
dGVyKHVybChpbWFnZTEucG5nKSwgYnJpZ2h0bmVzcyg1MCUpKSIpIGlzICJmaWx0ZXIodXJsKFwi
aW1hZ2UxLnBuZ1wiKSwgYnJpZ2h0bmVzcyg1MCUpKSIKK1BBU1MgaW5uZXJTdHlsZSgiYmFja2dy
b3VuZC1pbWFnZSIsICJmaWx0ZXIodXJsKCdpbWFnZTEucG5nJyksIGJyaWdodG5lc3MoNTAlKSki
KSBpcyAiZmlsdGVyKHVybChcImltYWdlMS5wbmdcIiksIGJyaWdodG5lc3MoNTAlKSkiCitQQVNT
IGlubmVyU3R5bGUoImJvcmRlci1pbWFnZS1zb3VyY2UiLCAiZmlsdGVyKHVybChpbWFnZTEucG5n
KSwgaW52ZXJ0KDUwJSkpIikgaXMgImZpbHRlcih1cmwoXCJpbWFnZTEucG5nXCIpLCBpbnZlcnQo
NTAlKSkiCitQQVNTIGlubmVyU3R5bGUoIi13ZWJraXQtbWFzay1pbWFnZSIsICJmaWx0ZXIodXJs
KGltYWdlMS5wbmcpLCBpbnZlcnQoNTAlKSkiKSBpcyAiZmlsdGVyKHVybChcImltYWdlMS5wbmdc
IiksIGludmVydCg1MCUpKSIKK1BBU1MgaW5uZXJTdHlsZSgiLXdlYmtpdC1tYXNrLWJveC1pbWFn
ZS1zb3VyY2UiLCAiZmlsdGVyKHVybChpbWFnZTEucG5nKSwgaW52ZXJ0KDUwJSkpIikgaXMgImZp
bHRlcih1cmwoXCJpbWFnZTEucG5nXCIpLCBpbnZlcnQoNTAlKSkiCitQQVNTIGlubmVyU3R5bGUo
ImNvbnRlbnQiLCAiZmlsdGVyKHVybChpbWFnZTEucG5nKSwgaW52ZXJ0KDUwJSkpIikgaXMgImZp
bHRlcih1cmwoXCJpbWFnZTEucG5nXCIpLCBpbnZlcnQoNTAlKSkiCiBQQVNTIGlubmVyU3R5bGUo
ImJhY2tncm91bmQtaW1hZ2UiLCAiZmlsdGVyKCkiKSBpcyAiIgogUEFTUyBjb21wdXRlZFN0eWxl
KCJiYWNrZ3JvdW5kLWltYWdlIiwgImZpbHRlcigpIikgaXMgIm5vbmUiCiBQQVNTIGlubmVyU3R5
bGUoImJhY2tncm91bmQtaW1hZ2UiLCAiZmlsdGVyKHVybChpbWFnZTEucG5nKSkiKSBpcyAiIgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWx0ZXItaW1hZ2UvcGFyc2UtZmlsdGVyLWlt
YWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbHRlci1pbWFnZS9wYXJzZS1maWx0ZXItaW1h
Z2UuaHRtbAppbmRleCBhNGFjNjQwZmZiZGY3Y2RmNWMxZjU5N2JlNDM2OTkyNzNjYTkyYjk2Li4y
NDc0MTQ5YjZmNTlmZDNkMWU5ODJjNDc5YWEyY2YyZDRjYTkwOWI4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L2ZpbHRlci1pbWFnZS9wYXJzZS1maWx0ZXItaW1hZ2UuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2ZpbHRlci1pbWFnZS9wYXJzZS1maWx0ZXItaW1hZ2UuaHRtbApAQCAt
MzQ1LDM0ICszNDUsMzQgQEAgdGVzdElubmVyKAogICAgICJmaWx0ZXIobGluZWFyLWdyYWRpZW50
KDBkZWcsIHdoaXRlIC0yMCUsIGJsdWUsIGJsYWNrIDEyMCUpLCBodWUtcm90YXRlKDkwZGVnKSki
KTsKIHRlc3RJbm5lcigKICAgICAiYmFja2dyb3VuZC1pbWFnZSIsCi0gICAgImZpbHRlcigtd2Vi
a2l0LWNyb3NzLWZhZGUodXJsKGh0dHA6Ly9pbWFnZTEucG5nKSwgdXJsKGh0dHA6Ly9pbWFnZTIu
cG5nKSwgNTAlKSwgY29udHJhc3QoMC41KSkiLAotICAgICJmaWx0ZXIoLXdlYmtpdC1jcm9zcy1m
YWRlKHVybChcImh0dHA6Ly9pbWFnZTEucG5nL1wiKSwgdXJsKFwiaHR0cDovL2ltYWdlMi5wbmcv
XCIpLCAwLjUpLCBjb250cmFzdCgwLjUpKSIpOworICAgICJmaWx0ZXIoLXdlYmtpdC1jcm9zcy1m
YWRlKHVybChpbWFnZTEucG5nKSwgdXJsKGltYWdlMi5wbmcpLCA1MCUpLCBjb250cmFzdCgwLjUp
KSIsCisgICAgImZpbHRlcigtd2Via2l0LWNyb3NzLWZhZGUodXJsKFwiaW1hZ2UxLnBuZ1wiKSwg
dXJsKFwiaW1hZ2UyLnBuZ1wiKSwgMC41KSwgY29udHJhc3QoMC41KSkiKTsKIHRlc3RJbm5lcigK
ICAgICAiYmFja2dyb3VuZC1pbWFnZSIsCi0gICAgImZpbHRlcih1cmwoaHR0cDovL2ltYWdlMS5w
bmcpLCBicmlnaHRuZXNzKDUwJSkpIiwKLSAgICAiZmlsdGVyKHVybChcImh0dHA6Ly9pbWFnZTEu
cG5nL1wiKSwgYnJpZ2h0bmVzcyg1MCUpKSIpOworICAgICJmaWx0ZXIodXJsKGltYWdlMS5wbmcp
LCBicmlnaHRuZXNzKDUwJSkpIiwKKyAgICAiZmlsdGVyKHVybChcImltYWdlMS5wbmdcIiksIGJy
aWdodG5lc3MoNTAlKSkiKTsKIHRlc3RJbm5lcigKICAgICAiYmFja2dyb3VuZC1pbWFnZSIsCi0g
ICAgImZpbHRlcih1cmwoJ2h0dHA6Ly9pbWFnZTEucG5nJyksIGJyaWdodG5lc3MoNTAlKSkiLAot
ICAgICJmaWx0ZXIodXJsKFwiaHR0cDovL2ltYWdlMS5wbmcvXCIpLCBicmlnaHRuZXNzKDUwJSkp
Iik7CisgICAgImZpbHRlcih1cmwoJ2ltYWdlMS5wbmcnKSwgYnJpZ2h0bmVzcyg1MCUpKSIsCisg
ICAgImZpbHRlcih1cmwoXCJpbWFnZTEucG5nXCIpLCBicmlnaHRuZXNzKDUwJSkpIik7CiAKIC8v
IFRlc3QgZGlmZmVyZW50IHByb3BlcnRpZXMsIHRha2luZyBDU1MgSW1hZ2UgdmFsdWVzLgogdGVz
dElubmVyKAogICAgICJib3JkZXItaW1hZ2Utc291cmNlIiwKLSAgICAiZmlsdGVyKHVybChodHRw
Oi8vaW1hZ2UxLnBuZyksIGludmVydCg1MCUpKSIsCi0gICAgImZpbHRlcih1cmwoXCJodHRwOi8v
aW1hZ2UxLnBuZy9cIiksIGludmVydCg1MCUpKSIpOworICAgICJmaWx0ZXIodXJsKGltYWdlMS5w
bmcpLCBpbnZlcnQoNTAlKSkiLAorICAgICJmaWx0ZXIodXJsKFwiaW1hZ2UxLnBuZ1wiKSwgaW52
ZXJ0KDUwJSkpIik7CiB0ZXN0SW5uZXIoCiAgICAgIi13ZWJraXQtbWFzay1pbWFnZSIsCi0gICAg
ImZpbHRlcih1cmwoaHR0cDovL2ltYWdlMS5wbmcpLCBpbnZlcnQoNTAlKSkiLAotICAgICJmaWx0
ZXIodXJsKFwiaHR0cDovL2ltYWdlMS5wbmcvXCIpLCBpbnZlcnQoNTAlKSkiKTsKKyAgICAiZmls
dGVyKHVybChpbWFnZTEucG5nKSwgaW52ZXJ0KDUwJSkpIiwKKyAgICAiZmlsdGVyKHVybChcImlt
YWdlMS5wbmdcIiksIGludmVydCg1MCUpKSIpOwogdGVzdElubmVyKAogICAgICItd2Via2l0LW1h
c2stYm94LWltYWdlLXNvdXJjZSIsCi0gICAgImZpbHRlcih1cmwoaHR0cDovL2ltYWdlMS5wbmcp
LCBpbnZlcnQoNTAlKSkiLAotICAgICJmaWx0ZXIodXJsKFwiaHR0cDovL2ltYWdlMS5wbmcvXCIp
LCBpbnZlcnQoNTAlKSkiKTsKKyAgICAiZmlsdGVyKHVybChpbWFnZTEucG5nKSwgaW52ZXJ0KDUw
JSkpIiwKKyAgICAiZmlsdGVyKHVybChcImltYWdlMS5wbmdcIiksIGludmVydCg1MCUpKSIpOwog
dGVzdElubmVyKAogICAgICJjb250ZW50IiwKLSAgICAiZmlsdGVyKHVybChodHRwOi8vaW1hZ2Ux
LnBuZyksIGludmVydCg1MCUpKSIsCi0gICAgImZpbHRlcih1cmwoXCJodHRwOi8vaW1hZ2UxLnBu
Zy9cIiksIGludmVydCg1MCUpKSIpOworICAgICJmaWx0ZXIodXJsKGltYWdlMS5wbmcpLCBpbnZl
cnQoNTAlKSkiLAorICAgICJmaWx0ZXIodXJsKFwiaW1hZ2UxLnBuZ1wiKSwgaW52ZXJ0KDUwJSkp
Iik7CiAKIC8vIG5lZ2F0aXZlIHRlc3RzCiBuZWdhdGl2ZVRlc3QoImJhY2tncm91bmQtaW1hZ2Ui
LCAiZmlsdGVyKCkiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW5uZXJIVE1ML2lu
bmVySFRNTC11cmktcmVzb2x1dGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9pbm5lckhUTUwv
aW5uZXJIVE1MLXVyaS1yZXNvbHV0aW9uLmh0bWwKaW5kZXggODU0ZTBmMWEwYjcxMzc2OWNjMzk2
Njg1NDQ2NzMxZDgyZGMxMDUzMS4uNDQ0NDI1NGZiYTFjOWMxNzhlYzExYjY1MGY0ZjU2MmEyZmU4
MGM1OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9pbm5lckhUTUwvaW5uZXJIVE1MLXVy
aS1yZXNvbHV0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbm5lckhUTUwvaW5uZXJI
VE1MLXVyaS1yZXNvbHV0aW9uLmh0bWwKQEAgLTEzLDExICsxMywxMSBAQAogICAKICAgdmFyIGN1
cnJlbnRVcmkgPSBkb2N1bWVudC5sb2NhdGlvbi5ocmVmOwogICB2YXIgY3VycmVudFBhdGggPSBj
dXJyZW50VXJpLnN1YnN0cmluZygwLCBjdXJyZW50VXJpLmxhc3RJbmRleE9mKCcvJykpOwotICB2
YXIgY3NzVXJpV2FzUmVzb2x2ZWRBZ2FpbnN0RG9jdW1lbnRVcmkgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidGVzdC1zcGFuIikuc3R5bGUuYmFja2dyb3VuZEltYWdlID09ICd1cmwoIicgKyBj
dXJyZW50UGF0aCArICcvaW1hZ2UucG5nIiknOworICB2YXIgY3NzVXJpV2FzUmVzb2x2ZWRBZ2Fp
bnN0RG9jdW1lbnRVcmkgPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJ0ZXN0LXNwYW4iKSkuYmFja2dyb3VuZEltYWdlID09ICd1cmwoIicgKyBjdXJyZW50UGF0aCAr
ICcvaW1hZ2UucG5nIiknOwogICAKICAgLy8gQ2FuJ3QgbG9nIHRoZSBhY3R1YWwgcGF0aCBzaW5j
ZSBpdCdzIGRpZmZlcmVudCBkZXBlbmRpbmcgb24gd2hlcmUgdGhlIHRlc3QgaXMgcnVuLgogICBz
aG91bGRCZVRydWUoJ2Nzc1VyaVdhc1Jlc29sdmVkQWdhaW5zdERvY3VtZW50VXJpJyk7CiA8L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KIDwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3MtY291bnRlci1zdHlsZXMvY291bnRlci1zdHlsZS1hZGRpdGl2ZS1zeW1ib2xz
LXN5bnRheC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtY291bnRlci1zdHlsZXMvY291bnRlci1zdHlsZS1hZGRpdGl2ZS1z
eW1ib2xzLXN5bnRheC1leHBlY3RlZC50eHQKaW5kZXggNGVkY2FhNGZjMWZhOWIxYzlkYmI0YmJm
ZDFhYzExMjlmMzhiMjQ5Zi4uZDk2NTg3NmI2MGQzMDY1NDEwOTg1YWIwNzM3Nzc1MjE1YmY0ZGYy
OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLWNvdW50ZXItc3R5bGVzL2NvdW50ZXItc3R5bGUtYWRkaXRpdmUtc3ltYm9scy1z
eW50YXgtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvY3NzL2Nzcy1jb3VudGVyLXN0eWxlcy9jb3VudGVyLXN0eWxlLWFkZGl0aXZl
LXN5bWJvbHMtc3ludGF4LWV4cGVjdGVkLnR4dApAQCAtMSw4ICsxLDggQEAKIAotRkFJTCBAY291
bnRlci1zdHlsZSAnYWRkaXRpdmUtc3ltYm9sczogMCAiWCInIGlzIHZhbGlkIGFzc2VydF9ub3Rf
ZXF1YWxzOiBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAtMQotRkFJTCBAY291bnRlci1zdHlsZSAnYWRk
aXRpdmUtc3ltYm9sczogMSAiWCInIGlzIHZhbGlkIGFzc2VydF9ub3RfZXF1YWxzOiBnb3QgZGlz
YWxsb3dlZCB2YWx1ZSAtMQotRkFJTCBAY291bnRlci1zdHlsZSAnYWRkaXRpdmUtc3ltYm9sczog
IlgiIDEnIGlzIHZhbGlkIGFzc2VydF9ub3RfZXF1YWxzOiBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAt
MQotRkFJTCBAY291bnRlci1zdHlsZSAnYWRkaXRpdmUtc3ltYm9sczogNSAiViIsIDEgIkkiJyBp
cyB2YWxpZCBhc3NlcnRfbm90X2VxdWFsczogZ290IGRpc2FsbG93ZWQgdmFsdWUgLTEKK1BBU1Mg
QGNvdW50ZXItc3R5bGUgJ2FkZGl0aXZlLXN5bWJvbHM6IDAgIlgiJyBpcyB2YWxpZAorUEFTUyBA
Y291bnRlci1zdHlsZSAnYWRkaXRpdmUtc3ltYm9sczogMSAiWCInIGlzIHZhbGlkCitQQVNTIEBj
b3VudGVyLXN0eWxlICdhZGRpdGl2ZS1zeW1ib2xzOiAiWCIgMScgaXMgdmFsaWQKK1BBU1MgQGNv
dW50ZXItc3R5bGUgJ2FkZGl0aXZlLXN5bWJvbHM6IDUgIlYiLCAxICJJIicgaXMgdmFsaWQKIFBB
U1MgQGNvdW50ZXItc3R5bGUgJ2FkZGl0aXZlLXN5bWJvbHM6ICcgaXMgaW52YWxpZAogUEFTUyBA
Y291bnRlci1zdHlsZSAnYWRkaXRpdmUtc3ltYm9sczogLTEgIlgiJyBpcyBpbnZhbGlkCiBQQVNT
IEBjb3VudGVyLXN0eWxlICdhZGRpdGl2ZS1zeW1ib2xzOiAxICJJIiwgNSAiViInIGlzIGludmFs
aWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1jb3VudGVyLXN0eWxlcy9jb3VudGVyLXN0eWxlLXN5bWJvbHMtc3ludGF4LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy1jb3VudGVyLXN0eWxlcy9jb3VudGVyLXN0eWxlLXN5bWJvbHMtc3ludGF4LWV4cGVj
dGVkLnR4dAppbmRleCAyNmIxZGI4ZmEwOGE3ODgxZDU1NzliMWYxYTMwOTEwNjA1NjJjMTE1Li40
ZTJlZTVjZTI5NzgxZTlkMTNkZWJmNzBhYWYxMjY4Yjk4ZTc0NGE2IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY291bnRlci1z
dHlsZXMvY291bnRlci1zdHlsZS1zeW1ib2xzLXN5bnRheC1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvdW50ZXIt
c3R5bGVzL2NvdW50ZXItc3R5bGUtc3ltYm9scy1zeW50YXgtZXhwZWN0ZWQudHh0CkBAIC0yLDcg
KzIsNyBAQAogUEFTUyBAY291bnRlci1zdHlsZSAnc3ltYm9sczogIlgiJyBpcyB2YWxpZAogUEFT
UyBAY291bnRlci1zdHlsZSAnc3ltYm9sczogIlgiICJYIicgaXMgdmFsaWQKIFBBU1MgQGNvdW50
ZXItc3R5bGUgJ3N5bWJvbHM6IGlkZW50ICJYIicgaXMgdmFsaWQKLUZBSUwgQGNvdW50ZXItc3R5
bGUgJ3N5bWJvbHM6IGlkZW50ICJYIiB1cmwoImZvby5qcGciKScgaXMgdmFsaWQgYXNzZXJ0X25v
dF9lcXVhbHM6IGdvdCBkaXNhbGxvd2VkIHZhbHVlIC0xCitQQVNTIEBjb3VudGVyLXN0eWxlICdz
eW1ib2xzOiBpZGVudCAiWCIgdXJsKCJmb28uanBnIiknIGlzIHZhbGlkCiBQQVNTIEBjb3VudGVy
LXN0eWxlICdzeW1ib2xzOiAnIGlzIGludmFsaWQKIFBBU1MgQGNvdW50ZXItc3R5bGUgJ3N5bWJv
bHM6IGluaXRpYWwgIlgiICJYIicgaXMgaW52YWxpZAogUEFTUyBAY291bnRlci1zdHlsZSAnc3lt
Ym9sczogaW5oZXJpdCAiWCIgIlgiJyBpcyBpbnZhbGlkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc3ludGF4L3VybC13aGl0
ZXNwYWNlLWNvbnN1bXB0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zeW50YXgvdXJsLXdoaXRlc3BhY2UtY29uc3Vt
cHRpb24tZXhwZWN0ZWQudHh0CmluZGV4IDEyNDg2OTlkMDE5NDUwZWQxMDc3OTJhYTBhN2JmNmU5
NjQ2NTYyODAuLmZmZTk0YjhkYjViNjMzYTAwMGY3YzFiMzRjZWM0MGQ5MGE3ZmUwODEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nz
cy1zeW50YXgvdXJsLXdoaXRlc3BhY2UtY29uc3VtcHRpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1zeW50YXgv
dXJsLXdoaXRlc3BhY2UtY29uc3VtcHRpb24tZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAog
Ci1GQUlMIHdoaXRlc3BhY2UgaXMgb3B0aW9uYWwgYmV0d2VlbiB1cmwoIHRva2VuIGFuZCB0aGUg
c3RyaW5nIHRva2VuIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJ1cmwoXCJmb29cIikiIGJ1dCBn
b3QgInVybChcImh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9jc3MvY3NzLXN5bnRheC9mb29cIikiCitQ
QVNTIHdoaXRlc3BhY2UgaXMgb3B0aW9uYWwgYmV0d2VlbiB1cmwoIHRva2VuIGFuZCB0aGUgc3Ry
aW5nIHRva2VuCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431500</attachid>
            <date>2021-06-15 17:05:09 -0700</date>
            <delta_ts>2021-06-17 02:29:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226708-20210615170508.patch</filename>
            <type>text/plain</type>
            <size>79546</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4OTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTg1NmNiN2Q5MDNmNDY4
Y2E3YjM5ZjM2NDA2OWM3ZjNkMzcxNTgwNi4uMDFkMDlhMDY5Yjg3ZmQ4ZTJiYTNiNjBmMDhlYTlm
YjI1MTk3Mjk1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0OCBAQAorMjAyMS0wNi0xNSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IENTUyBzZXJpYWxpemF0
aW9uIGlzc3VlcyBhZmZlY3RpbmcgY3NzLWNvdW50ZXItc3R5bGVzIHRlc3RzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY3MDgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggdHdvIHNlcmlhbGl6YXRp
b24gaXNzc3VlcyBhZmZlY3RpbmcgY3NzLWNvdW50ZXItc3R5bGVzIHRlc3RzOgorCisgICAgICAg
IDEpIFVSTHMgd2VyZSBzZXJpYWxpemluZyB0aGUgZnVsbCByZXNvbHZlZCBVUkwsIHJhdGhlciB0
aGFuIHRoZQorICAgICAgICAgICBwYXJ0aWFsIFVSTCBzdHJpbmcgZnJvbSB0aGUgc3R5bGUgc2hl
ZXQuCisgICAgICAgIDIpIEl0ZW1zIGluIGFkZGl0aXZlLXN5bWJvbHMgdGhhdCBoYWQgYm90aCBh
biBpbnRlZ2VyIGFuZCBhIHN0cmluZworICAgICAgICAgICB3b3VsZCBpbmNvcnJlY3RseSBzZXJp
YWxpemUgd2l0aCBhIGNvbW1hIHdpdGhpbiB0aGUgaXRlbS4KKworICAgICAgICAqIGNzcy9DU1ND
cm9zc2ZhZGVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1ZTo6
dmFsdWVXaXRoU3R5bGVzUmVzb2x2ZWQpOiBBZGRlZC4KKyAgICAgICAgQ2FsbHMgcmVzb2x2ZUlt
YWdlU3R5bGVzIG9uIHRoZSBpbWFnZSB2YWx1ZXMuCisgICAgICAgICogY3NzL0NTU0Nyb3NzZmFk
ZVZhbHVlLmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZS4KKworICAgICAgICAqIGNzcy9DU1NDdXJz
b3JJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1cnNvckltYWdlVmFsdWU6
OkNTU0N1cnNvckltYWdlVmFsdWUpOiBDaGFuZ2VkIHRoZSBob3Qgc3BvdAorICAgICAgICB0byB1
c2Ugc3RkOjpvcHRpb25hbCBpbnN0ZWFkIG9mIGEgc2VwYXJhdGUgYm9vbGVhbi4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU0N1cnNvckltYWdlVmFsdWU6OmNyZWF0ZSk6IE1vdmVkIHRoaXMgb3V0IG9m
IHRoZSBoZWFkZXIKKyAgICAgICAgYmVjYXVzZSBpdCdzIG5vdCBiZXR0ZXIgZm9yIGlubGluaW5n
IHRvIGhhdmUgaXQgdGhlcmUuCisgICAgICAgIChXZWJDb3JlOjpDU1NDdXJzb3JJbWFnZVZhbHVl
OjpjdXN0b21DU1NUZXh0IGNvbnN0KTogVXBkYXRlZCBmb3IgdGhlCisgICAgICAgIG1faG90U3Bv
dCBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6dXBkYXRl
Q3Vyc29yRWxlbWVudCk6IFJlbW92ZWQgdW5uZWVkZWQKKyAgICAgICAgY2hlY2sgb2YgaGFzRnJh
Z21lbnRJZGVudGlmaWVyLCB3aGljaCBpcyBhbHJlYWR5IGRvbmUgYnkgdGhlCisgICAgICAgIFNW
R1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcgZnVuY3Rpb24uIFVwZGF0
ZWQgdG8gdXNlCisgICAgICAgIG1fb3JpZ2luYWxTcGVjaWZpZWRVUkxTdHJpbmcsIGFuZCBhZGRl
ZCBhIEZJWE1FIGFib3V0IHRoZSBzdHJhbmdlIHdheQorICAgICAgICB0aGlzIGp1c3Qga2VlcHMg
YWNjdW11bGF0aW5nIG1vcmUgYW5kIG1vcmUgY2xpZW50cyBpbiBhIHNldCwgYnV0IGRpZAorICAg
ICAgICBub3QgY2hhbmdlIHRoYXQgYmVoYXZpb3IuCisgICAgICAgIChXZWJDb3JlOjpDU1NDdXJz
b3JJbWFnZVZhbHVlOjpjdXJzb3JFbGVtZW50UmVtb3ZlZCk6IEFkZGVkIGEgRklYTUUuCisgICAg
ICAgIChXZWJDb3JlOjpDU1NDdXJzb3JJbWFnZVZhbHVlOjpjdXJzb3JFbGVtZW50Q2hhbmdlZCk6
IFVwZGF0ZWQgZm9yIHRoZQorICAgICAgICBjaGFuZ2UgdG8gbV9ob3RTcG90IGFuZCBhZGRkZWQg
c29tZSBGSVhNRS4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1cnNvckltYWdlVmFsdWU6OmVxdWFs
cyBjb25zdCk6IFVwZGF0ZWQgZm9yIHRoZSBtX2hvdFNwb3QKKyAgICAgICAgY2hhbmdlOyBtdWNo
IHNpbXBsZXIgc2luY2Ugc3RkOjpvcHRpb25hbCBkb2VzIHRoZSByaWdodCB0aGluZy4KKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0N1cnNvckltYWdlVmFsdWU6OnZhbHVlV2l0aFN0eWxlc1Jlc29sdmVk
KTogQWRkZWQuCisgICAgICAgIENhbGxzIHJlc29sdmVJbWFnZVN0eWxlcyBvbiB0aGUgaW1hZ2Ug
dmFsdWUuCisgICAgICAgICogY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaDogVXBkYXRlZCBmb3Ig
dGhlIGFib3ZlIGNoYW5nZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXJJbWFnZVZhbHVlOjp2YWx1ZVdpdGhTdHls
ZXNSZXNvbHZlZCk6IEFkZGVkLgorICAgICAgICBDYWxscyByZXNvbHZlSW1hZ2VTdHlsZXMgb24g
dGhlIGltYWdlIHZhbHVlIGFuZCBhbHNvIGNhbGxzCisgICAgICAgIGNyZWF0ZUZpbHRlck9wZXJh
dGlvbnMuCisgICAgICAgICogY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuaDogVXBkYXRlZCBmb3Ig
dGhlIGFib3ZlLgorCisgICAgICAgICogY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRWYWx1ZTo6dmFsdWVXaXRoU3R5bGVzUmVzb2x2ZWQpOiBS
ZW5hbWVkIGZyb20KKyAgICAgICAgZ3JhZGllbnRXaXRoU3R5bGVzUmVzb2x2ZWQuCisgICAgICAg
ICogY3NzL0NTU0dyYWRpZW50VmFsdWUuaDogVXBkYXRlZCBmb3IgdGhlIGFib3ZlLgorCisgICAg
ICAgICogY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1h
Z2VTZXRWYWx1ZTo6dmFsdWVXaXRoU3R5bGVzUmVzb2x2ZWQpOiBSZW5hbWVkIGZyb20KKyAgICAg
ICAgaW1hZ2VTZXRXaXRoU3R5bGVzUmVzb2x2ZWQuIE9wdGltaXplZCB0aGUgY2FzZSB3aGVyZSB0
aGUgcmVzb2x2ZWQKKyAgICAgICAgdmVyc2lvbiBpcyBub3QgZGlmZmVyZW50IHRvIHJlLXVzZSB0
aGUgb3JpZ2luYWwgQ1NTSW1hZ2VTZXRWYWx1ZS4KKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VTZXRW
YWx1ZS5oOiBVcGRhdGVkIGZvciB0aGUgYWJvdmUuCisKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VW
YWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KTogQWRkZWQuIENoZWNrIGlm
IHR3byBEdWFsTG9jYXRpb24gYXJlIGVxdWFsLgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VW
YWx1ZTo6Q1NTSW1hZ2VWYWx1ZSk6IFRha2UgRHVhbExvY2F0aW9uIGluc3RlYWQKKyAgICAgICAg
b2YgYSBVUkwuIEFsc28gdXBkYXRlZCB0byB1c2Ugc3RkOjpvcHRpb25hbCBpbnN0ZWFkIG9mIGEg
c2VwYXJhdGUKKyAgICAgICAgbV9hY2Nlc3NlZEltYWdlIGJvb2xlYW4uCisgICAgICAgIChXZWJD
b3JlOjpDU1NJbWFnZVZhbHVlOjpjcmVhdGUpOiBBZGRlZCBhbiBvdmVybG9hZCB0aGF0IHRha2Vz
CisgICAgICAgIER1YWxMb2NhdGlvbiBhcmd1bWVudCBhbmQgYWxzbyBtb3ZlZCBoZXJlIGZyb20g
dGhlIGhlYWRlciBzaW5jZSB3ZQorICAgICAgICBkb24ndCBnZXQgYW55IGJlbmVmaXQgZnJvbSBp
bmxpbmluZy4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlVmFsdWU6OmlzUGVuZGluZyBjb25z
dCk6IFVwZGF0ZXMgc2luY2UgbV9jYWNoZWRJbWFnZQorICAgICAgICBpcyBub3cgYSBzdGQ6Om9w
dGlvbmFsLCBhbmQgdGhlIHN0ZDo6bnVsbG9wdCBjYXNlIGlzIHVzZWQgZm9yIHRoaXMuCisgICAg
ICAgIChXZWJDb3JlOjpDU1NJbWFnZVZhbHVlOjpyZXNvbHZlZFVSTCBjb25zdCk6IEFkZGVkLiBV
c2VkIHNvIHdlIGNhbgorICAgICAgICBzaGFyZSBjb2RlIGJldHdlZW4gdGhlIGZvbGxvd2luZyBm
dW5jdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVZhbHVlOjp2YWx1ZVdpdGhTdHls
ZXNSZXNvbHZlZCk6IEFkZGVkLiBDb21wdXRlcworICAgICAgICB0aGUgZnVsbHkgcmVzb2x2ZWQg
VVJMIGFuZCBtYWtlcyBhIG5ldyBpbWFnZSB2YWx1ZSBpZiBuZWVkZWQgdGhhdAorICAgICAgICBh
bHdheXMgdXNlcyBpdC4gQWxzbyBwb2ludHMgdGhlIG5ldyB2YWx1ZSBhdCB0aGUgb2xkIG9uZSBz
byB3ZSBjYW4KKyAgICAgICAgdXBkYXRlIG1fY2FjaGVkSW1hZ2UgaW4gYm90aC4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ltYWdlVmFsdWU6OmxvYWRJbWFnZSk6IFVzZSB0aGUgbmV3IHJlc29sdmVk
VVJMIGZ1bmN0aW9uLgorICAgICAgICBBbHNvIHVwZGF0ZSBtX2NhY2hlZEltYWdlIGluIGFueSB1
bmRlcmx5aW5nIG9iamVjdHMuCisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVZhbHVlOjp0cmF2
ZXJzZVN1YnJlc291cmNlcyk6IFVwZGF0ZWQgZm9yIGNoYW5nZQorICAgICAgICB0byBtX2NhY2hl
ZEltYWdlLgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VWYWx1ZTo6ZXF1YWxzIGNvbnN0KTog
VXBkYXRlZCBmb3IgY2hhbmdlIHRvIHVzZQorICAgICAgICBEdWFsTG9jYXRpb24uCisgICAgICAg
IChXZWJDb3JlOjpDU1NJbWFnZVZhbHVlOjpjdXN0b21DU1NUZXh0IGNvbnN0KTogRGl0dG8uIFRo
aXMgaXMgdGhlCisgICAgICAgIG9ubHkgcGxhY2Ugd2hlcmUgd2UgdXNlIHNwZWNpZmllZFVSTFN0
cmluZy4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlVmFsdWU6OmNyZWF0ZURlcHJlY2F0ZWRD
U1NPTVdyYXBwZXIgY29uc3QpOiBVcGRhdGVkCisgICAgICAgIGZvciBjaGFuZ2UgZnJvbSBtX3Vy
bC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlVmFsdWU6Omtub3duVG9CZU9wYXF1ZSBjb25z
dCk6IFVwZGF0ZWQgZm9yIGNoYW5nZQorICAgICAgICB0byBtX2NhY2hlZEltYWdlLgorICAgICAg
ICAqIGNzcy9DU1NJbWFnZVZhbHVlLmg6IEFkZGVkIER1YWxMb2NhdGlvbiwgbmV3IGNyZWF0ZQor
ICAgICAgICBvdmVybG9hZHMuIFJlcGxhY2VkIHVybCgpIGZ1bmN0aW9uIHdpdGggbG9jYXRpb24o
KSBmdW5jdGlvbiwgd2hpY2gKKyAgICAgICAgcmV0dXJucyBhIHN0cmluZy4gTm90ZSB0aGF0IHRo
aXMgYWx3YXlzIHJldHVybnMgdGhlIHJlc29sdmVkIHN0cmluZywKKyAgICAgICAgb25seSBjdXN0
b21DU1NUZXh0IHJldHVybnMgdGhlIG9yaWdpbmFsIHN0cmluZy4gUmVwbGFjZWQgbV91cmwgd2l0
aAorICAgICAgICBtX2xvY2F0aW9uLCBlbGltaW5hdGVkIG1fYWNjZXNzZWRJbWFnZSBhbmQgbWFk
ZSBtX2NhY2hlZEltYWdlIHVzZQorICAgICAgICBzdGQ6Om9wdGlvbmFsIGluc3RlYWQuIEFkZGVk
IG1fdW5yZXNvbHZlZFZhbHVlLgorCisgICAgICAgICogY3NzL1N0eWxlU2hlZXRDb250ZW50cy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoZWV0Q29udGVudHM6OmNvbXBsZXRlVVJMIGNv
bnN0KTogRGVsZXRlZCB1bnVzZWQgZnVuY3Rpb24uCisgICAgICAgICogY3NzL1N0eWxlU2hlZXRD
b250ZW50cy5oOiBEaXR0by4KKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJDb250ZXh0Ojpjb21wbGV0ZVVSTCBj
b25zdCk6IFVwZGF0ZWQgdG8gcmV0dXJuCisgICAgICAgIER1YWxMb2NhdGlvbiBpbnN0ZWFkIG9m
IGEgVVJMLgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oOiBEaXR0by4K
KworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNvbXBsZXRlVVJMKTogRGVsZXRlZCB1bnVzZWQgZnVuY3Rpb24uCisgICAgICAgICog
Y3NzL3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuaDogRGl0dG8uCisKKyAgICAgICAgKiBjc3MvcGFy
c2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN1bWVDdXJz
b3IpOiBVc2Ugc3RkOjpvcHRpb25hbCBmb3IgdGhlIGhvdCBzcG90LgorICAgICAgICAoV2ViQ29y
ZTo6Y29uc3VtZUNvdW50ZXJTdHlsZUFkZGl0aXZlU3ltYm9scyk6IFB1dCB0aGUgaW50ZWdlci9z
eW1ib2wKKyAgICAgICAgcGFpciBpbnRvIGEgc2VwYXJhdGUgc3BhY2Utc2VwYXJhdGVkIGxpc3Qg
aW5zdGVhZCBvZiBhcHBlbmRpbmcgYm90aAorICAgICAgICB0byB0aGUgdG9wIGxldmVsIGNvbW1h
bmQtc2VwYXJhdGVkIGxpc3QuIEFsc28gcmVtb3ZlZCBzdXBwb3J0IGZvcgorICAgICAgICBub24t
c3RhbmRhcmQgImltYWdlIHdpdGhvdXQgc3ltYm9sIiBhbmQgInN5bWJvbCB3aXRob3V0IGltYWdl
Ii4KKyAgICAgICAgTmVpdGhlciB0aGUgc3BlY2lmaWNhdGlvbiBub3IgdGhlIHdlYiBwbGF0Zm9y
bSB0ZXN0cyBjdXJyZW50bHkgY2FsbAorICAgICAgICBmb3IgdGhhdC4KKworICAgICAgICAqIGNz
cy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZUltYWdlKTogQ2FsbCB0aGUgbmV3Cisg
ICAgICAgIG92ZXJsb2FkIG9mIENTU0ltYWdlVmFsdWU6OmNyZWF0ZSwgcGFzc2luZyBhIER1YWxM
b2NhdGlvbi4KKworICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJXb3JrZXJT
YWZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyc1dvcmtl
clNhZmU6OmNvbnN1bWVGb250RmFjZVNyY1VSSSk6CisgICAgICAgIFVwZGF0ZSBmb3IgdGhlIGNo
YW5nZSB0byBjb21wbGV0ZVVSTCBhbmQgcmVmYWN0b3IgYSBiaXQuIExhdGVyIHdlIGNvdWxkCisg
ICAgICAgIG1ha2UgdGhlIHNhbWUga2luZCBvZiBmaXggZm9yIENTU0ZvbnRGYWNlU3JjVmFsdWUg
dGhhdCB3ZSBkaWQgaW4gdGhpcworICAgICAgICBwYXRjaCBmb3IgQ1NTSW1hZ2VWYWx1ZSwgYnV0
IGRpZCBub3QgdHJ5IHRoYXQgZm9yIG5vdy4KKworICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YWRkQ3Vyc29y
KTogVXBkYXRlZCB0byB0YWtlIGEgc3RkOjpvcHRpb25hbCBmb3IKKyAgICAgICAgdGhlIGhvdCBz
cG90LgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOiBEaXR0by4KKwor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlQ2FjaGVkSW1hZ2U6OmltYWdlVVJMKTogVXBkYXRlZCBmb3IgQ1NTSW1h
Z2VWYWx1ZTo6bG9jYXRpb24uCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3Vyc29y
SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXJzb3JJbWFnZTo6c2V0Q29udGFp
bmVyQ29udGV4dEZvclJlbmRlcmVyKTogRGl0dG8uCisKKyAgICAgICAgKiBzdHlsZS9TdHlsZUJ1
aWxkZXJDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ3VzdG9tOjph
cHBseVZhbHVlQ29udGVudCk6IENhbGwKKyAgICAgICAgcmVzb2x2ZUltYWdlU3R5bGVzIGNvbnNp
c3RlbnRseS4KKworICAgICAgICAqIHN0eWxlL1N0eWxlQnVpbGRlclN0YXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyU3RhdGU6OnJlc29sdmVJbWFnZVN0eWxlcyk6IENh
bGwgdGhlIG5ldworICAgICAgICB2YWx1ZVdpdGhTdHlsZXNSZXNvbHZlZCBmdW5jdGlvbiBvbiBh
bGwgdGhlIGRpZmZlcmVudCBpbWFnZSB2YWx1ZQorICAgICAgICB0eXBlcy4gVGhpcyB1bmlmaWVz
IHRoZSBhcHByb2FjaCBhY3Jvc3MgYWxsIDYgY2xhc3Nlcy4KKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpCdWlsZGVyU3RhdGU6OmNyZWF0ZVN0eWxlSW1hZ2UpOiBUd2Vha2VkIHN0eWxlLgorCiAy
MDIxLTA2LTE1ICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBpT1MgLSBWb2ljZU92ZXIgcmVhZHMgaW5jb3JyZWN0bHkgaW4gY29udGVudCBlZGl0YWJs
ZSBlbGVtZW50IGlmIHJvbGU9ImRvY3VtZW50Ii4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3Nm
YWRlVmFsdWUuY3BwCmluZGV4IDhlYmVhNGIyYWIxZTI0N2RmNWVhNWNjNDZjODg1Y2MxMGNjN2Iw
ZWEuLjJkZmY1YjE1MTVjMjlhNjA3ZGQwODE4ZjAxODBlODNjZWRiNzc3MzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJDcm9zc2ZhZGVHZW5lcmF0ZWRJ
bWFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKKyNpbmNsdWRlICJTdHlsZUJ1aWxk
ZXJTdGF0ZS5oIgogI2luY2x1ZGUgIlN0eWxlQ2FjaGVkSW1hZ2UuaCIKLSNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjI4LDEw
ICsyMjgsMTggQEAgYm9vbCBDU1NDcm9zc2ZhZGVWYWx1ZTo6ZXF1YWxzKGNvbnN0IENTU0Nyb3Nz
ZmFkZVZhbHVlJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gZXF1YWxJbnB1dEltYWdlcyhvdGhl
cikgJiYgY29tcGFyZUNTU1ZhbHVlKG1fcGVyY2VudGFnZVZhbHVlLCBvdGhlci5tX3BlcmNlbnRh
Z2VWYWx1ZSk7CiB9CiAKLQogYm9vbCBDU1NDcm9zc2ZhZGVWYWx1ZTo6ZXF1YWxJbnB1dEltYWdl
cyhjb25zdCBDU1NDcm9zc2ZhZGVWYWx1ZSYgb3RoZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNv
bXBhcmVDU1NWYWx1ZShtX2Zyb21WYWx1ZSwgb3RoZXIubV9mcm9tVmFsdWUpICYmIGNvbXBhcmVD
U1NWYWx1ZShtX3RvVmFsdWUsIG90aGVyLm1fdG9WYWx1ZSk7CiB9CiAKK1JlZjxDU1NDcm9zc2Zh
ZGVWYWx1ZT4gQ1NTQ3Jvc3NmYWRlVmFsdWU6OnZhbHVlV2l0aFN0eWxlc1Jlc29sdmVkKFN0eWxl
OjpCdWlsZGVyU3RhdGUmIHN0YXRlKQoreworICAgIGF1dG8gZnJvbVZhbHVlID0gc3RhdGUucmVz
b2x2ZUltYWdlU3R5bGVzKG1fZnJvbVZhbHVlLmdldCgpKTsKKyAgICBhdXRvIHRvVmFsdWUgPSBz
dGF0ZS5yZXNvbHZlSW1hZ2VTdHlsZXMobV90b1ZhbHVlLmdldCgpKTsKKyAgICBpZiAoZnJvbVZh
bHVlLnB0cigpID09IG1fZnJvbVZhbHVlLnB0cigpICYmIHRvVmFsdWUucHRyKCkgPT0gbV90b1Zh
bHVlLnB0cigpKQorICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgcmV0dXJuIGNyZWF0ZShXVEZN
b3ZlKGZyb21WYWx1ZSksIFdURk1vdmUodG9WYWx1ZSksIFJlZiB7IG1fcGVyY2VudGFnZVZhbHVl
IH0sIG1faXNQcmVmaXhlZCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgKaW5kZXggZWJhYjdhY2RlYzY4ZDVhZjk5NDNhMDVl
OGE4MDUzZDUyOTllODlmOS4uMjkzZTc1OTVlNWQzMDExZWJmOTNlNjI0NzBkYWExYzhhYzI1NmEx
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjAsNiArNjAsOCBAQCBw
dWJsaWM6CiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQ3Jvc3NmYWRlVmFsdWUmKSBjb25zdDsK
ICAgICBib29sIGVxdWFsSW5wdXRJbWFnZXMoY29uc3QgQ1NTQ3Jvc3NmYWRlVmFsdWUmKSBjb25z
dDsKIAorICAgIFJlZjxDU1NDcm9zc2ZhZGVWYWx1ZT4gdmFsdWVXaXRoU3R5bGVzUmVzb2x2ZWQo
U3R5bGU6OkJ1aWxkZXJTdGF0ZSYpOworCiBwcml2YXRlOgogICAgIENTU0Nyb3NzZmFkZVZhbHVl
KFJlZjxDU1NWYWx1ZT4mJiBmcm9tVmFsdWUsIFJlZjxDU1NWYWx1ZT4mJiB0b1ZhbHVlLCBSZWY8
Q1NTUHJpbWl0aXZlVmFsdWU+JiYgcGVyY2VudGFnZVZhbHVlLCBib29sIHByZWZpeGVkKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCmluZGV4IDgyZGQwZThj
OGIwMThjNzA1ZDZhNmI5YjhkMDc5OWQwMDQ2M2VmMzAuLjNkZWY4NjNkMmFhNzMyYTA2ZWM3ZjQx
YzdjMzcxOTc2MmY1YzVmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJz
b3JJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VW
YWx1ZS5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IFJvYiBC
dWlzIDxidWlzQGtkZS5vcmc+CiAgKiAgICAgICAgICAgKEMpIDIwMDggTmlrb2xhcyBaaW1tZXJt
YW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI0
LDI2ICsyNCwyNyBAQAogCiAjaW5jbHVkZSAiQ1NTSW1hZ2VTZXRWYWx1ZS5oIgogI2luY2x1ZGUg
IkNTU0ltYWdlVmFsdWUuaCIKLSNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgotI2luY2x1ZGUgIkNh
Y2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiU1ZHQ3Vyc29yRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIlNWR0xlbmd0aENvbnRleHQuaCIKICNpbmNsdWRlICJTVkdVUklSZWZlcmVuY2UuaCIK
ICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1DU1NDdXJzb3JJbWFnZVZhbHVlOjpDU1NDdXJzb3JJbWFnZVZhbHVlKFJlZjxD
U1NWYWx1ZT4mJiBpbWFnZVZhbHVlLCBib29sIGhhc0hvdFNwb3QsIGNvbnN0IEludFBvaW50JiBo
b3RTcG90LCBMb2FkZWRGcm9tT3BhcXVlU291cmNlIGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpCitD
U1NDdXJzb3JJbWFnZVZhbHVlOjpDU1NDdXJzb3JJbWFnZVZhbHVlKFJlZjxDU1NWYWx1ZT4mJiBp
bWFnZVZhbHVlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiYgaG90U3BvdCwgTG9hZGVk
RnJvbU9wYXF1ZVNvdXJjZSBsb2FkZWRGcm9tT3BhcXVlU291cmNlKQogICAgIDogQ1NTVmFsdWUo
Q3Vyc29ySW1hZ2VDbGFzcykKICAgICAsIG1faW1hZ2VWYWx1ZShXVEZNb3ZlKGltYWdlVmFsdWUp
KQotICAgICwgbV9oYXNIb3RTcG90KGhhc0hvdFNwb3QpCiAgICAgLCBtX2hvdFNwb3QoaG90U3Bv
dCkKICAgICAsIG1fbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZShsb2FkZWRGcm9tT3BhcXVlU291cmNl
KQogewogICAgIGlmIChpczxDU1NJbWFnZVZhbHVlPihtX2ltYWdlVmFsdWUuZ2V0KCkpKQotICAg
ICAgICBtX29yaWdpbmFsVVJMID0gZG93bmNhc3Q8Q1NTSW1hZ2VWYWx1ZT4obV9pbWFnZVZhbHVl
LmdldCgpKS51cmwoKTsKKyAgICAgICAgbV9vcmlnaW5hbExvY2F0aW9uID0gZG93bmNhc3Q8Q1NT
SW1hZ2VWYWx1ZT4obV9pbWFnZVZhbHVlLmdldCgpKS5sb2NhdGlvbigpOworfQorCitSZWY8Q1NT
Q3Vyc29ySW1hZ2VWYWx1ZT4gQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6Y3JlYXRlKFJlZjxDU1NWYWx1
ZT4mJiBpbWFnZVZhbHVlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiYgaG90U3BvdCwg
TG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSBsb2FkZWRGcm9tT3BhcXVlU291cmNlKQoreworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IENTU0N1cnNvckltYWdlVmFsdWUoV1RGTW92ZShpbWFnZVZhbHVl
KSwgaG90U3BvdCwgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkpOwogfQogCiBDU1NDdXJzb3JJbWFn
ZVZhbHVlOjp+Q1NTQ3Vyc29ySW1hZ2VWYWx1ZSgpCkBAIC01NSwyMSArNTYsMTkgQEAgQ1NTQ3Vy
c29ySW1hZ2VWYWx1ZTo6fkNTU0N1cnNvckltYWdlVmFsdWUoKQogU3RyaW5nIENTU0N1cnNvcklt
YWdlVmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogewogICAgIFN0cmluZyB0ZXh0ID0gbV9p
bWFnZVZhbHVlLmdldCgpLmNzc1RleHQoKTsKLSAgICBpZiAoIW1faGFzSG90U3BvdCkKKyAgICBp
ZiAoIW1faG90U3BvdCkKICAgICAgICAgcmV0dXJuIHRleHQ7Ci0gICAgcmV0dXJuIG1ha2VTdHJp
bmcodGV4dCwgJyAnLCBtX2hvdFNwb3QueCgpLCAnICcsIG1faG90U3BvdC55KCkpOworICAgIHJl
dHVybiBtYWtlU3RyaW5nKHRleHQsICcgJywgbV9ob3RTcG90LT54KCksICcgJywgbV9ob3RTcG90
LT55KCkpOwogfQogCiAvLyBGSVhNRTogU2hvdWxkIHRoaXMgZnVuY3Rpb24gdGFrZSBhIFRyZWVT
Y29wZSBpbnN0ZWFkPwogU1ZHQ3Vyc29yRWxlbWVudCogQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6dXBk
YXRlQ3Vyc29yRWxlbWVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgaWYgKCFt
X29yaWdpbmFsVVJMLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIGF1dG8gZWxlbWVudCA9IFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVu
dEZyb21JUklTdHJpbmcobV9vcmlnaW5hbFVSTC5zdHJpbmcoKSwgZG9jdW1lbnQpLmVsZW1lbnQ7
CisgICAgYXV0byBlbGVtZW50ID0gU1ZHVVJJUmVmZXJlbmNlOjp0YXJnZXRFbGVtZW50RnJvbUlS
SVN0cmluZyhtX29yaWdpbmFsTG9jYXRpb24sIGRvY3VtZW50KS5lbGVtZW50OwogICAgIGlmICgh
aXM8U1ZHQ3Vyc29yRWxlbWVudD4oZWxlbWVudCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CisgICAgLy8gRklYTUU6IE5vdCByaWdodCB0byBrZWVwIG9sZCBjdXJzb3IgZWxlbWVudHMgYXMg
Y2xpZW50cy4gVGhlIG5ldyBvbmUgc2hvdWxkIHJlcGxhY2UgdGhlIG9sZCwgbm90IGpvaW4gaXQg
aW4gYSBzZXQuCiAgICAgYXV0byYgY3Vyc29yRWxlbWVudCA9IGRvd25jYXN0PFNWR0N1cnNvckVs
ZW1lbnQ+KCplbGVtZW50KTsKICAgICBpZiAobV9jdXJzb3JFbGVtZW50cy5hZGQoJmN1cnNvckVs
ZW1lbnQpLmlzTmV3RW50cnkpIHsKICAgICAgICAgY3Vyc29yRWxlbWVudENoYW5nZWQoY3Vyc29y
RWxlbWVudCk7CkBAIC04MCwxOSArNzksMjIgQEAgU1ZHQ3Vyc29yRWxlbWVudCogQ1NTQ3Vyc29y
SW1hZ2VWYWx1ZTo6dXBkYXRlQ3Vyc29yRWxlbWVudChjb25zdCBEb2N1bWVudCYgZG9jdW0KIAog
dm9pZCBDU1NDdXJzb3JJbWFnZVZhbHVlOjpjdXJzb3JFbGVtZW50UmVtb3ZlZChTVkdDdXJzb3JF
bGVtZW50JiBjdXJzb3JFbGVtZW50KQogeworICAgIC8vIEZJWE1FOiBOb3QgcmlnaHQgdG8gc3Rh
eSBhIGNsaWVudCBvZiBhIGN1cnNvciBlbGVtZW50IHVudGlsIHRoZSBlbGVtZW50IGlzIGRlc3Ry
b3llZC4gV2UnZCB3YW50IHRvIHN0b3AgYmVpbmcgYSBjbGllbnQgb25jZSBpdCdzIG5vIGxvbmdl
ciBhIHZhbGlkIHRhcmdldCwgbGlrZSB3aGVuIGl0J3MgZGlzY29ubmVjdGVkLgogICAgIG1fY3Vy
c29yRWxlbWVudHMucmVtb3ZlKCZjdXJzb3JFbGVtZW50KTsKIH0KIAogdm9pZCBDU1NDdXJzb3JJ
bWFnZVZhbHVlOjpjdXJzb3JFbGVtZW50Q2hhbmdlZChTVkdDdXJzb3JFbGVtZW50JiBjdXJzb3JF
bGVtZW50KQogewotICAgIC8vIEZJWE1FOiBUaGlzIHdpbGwgb3ZlcnJpZGUgaG90IHNwb3Qgc3Bl
Y2lmaWVkIGluIENTUywgd2hpY2ggaXMgcHJvYmFibHkgaW5jb3JyZWN0LgorICAgIC8vIEZJWE1F
OiBTZWVtcyB3cm9uZyB0aGF0IGNoYW5naW5nIGFuIG9sZCBjdXJzb3IgZWxlbWVudCwgb25lIHRo
YXQgdGhhdCBpcyBubyBsb25nZXIgdGhlIHRhcmdldCwgY2hhbmdlcyB0aGUgaG90IHNwb3QuCisg
ICAgLy8gRklYTUU6IFRoaXMgd2lsbCBvdmVycmlkZSBhIGhvdCBzcG90IHRoYXQgd2FzIHNwZWNp
ZmllZCBpbiBDU1MsIHdoaWNoIGlzIHByb2JhYmx5IGluY29ycmVjdC4KKyAgICAvLyBGSVhNRTog
U2hvdWxkIHdlIGNsYW1wIGZyb20gZmxvYXQgdG8gaW50IGluc3RlYWQgb2YganVzdCBjYXN0aW5n
IGhlcmU/CiAgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KG51bGxwdHIpOwotICAg
IG1faGFzSG90U3BvdCA9IHRydWU7Ci0gICAgZmxvYXQgeCA9IHN0ZDo6cm91bmQoY3Vyc29yRWxl
bWVudC54KCkudmFsdWUobGVuZ3RoQ29udGV4dCkpOwotICAgIG1faG90U3BvdC5zZXRYKHN0YXRp
Y19jYXN0PGludD4oeCkpOworICAgIG1faG90U3BvdCA9IEludFBvaW50IHsKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8aW50PihzdGQ6OnJvdW5kKGN1cnNvckVsZW1lbnQueCgpLnZhbHVlKGxlbmd0aENv
bnRleHQpKSksCisgICAgICAgIHN0YXRpY19jYXN0PGludD4oc3RkOjpyb3VuZChjdXJzb3JFbGVt
ZW50LnkoKS52YWx1ZShsZW5ndGhDb250ZXh0KSkpCisgICAgfTsKIAotICAgIGZsb2F0IHkgPSBz
dGQ6OnJvdW5kKGN1cnNvckVsZW1lbnQueSgpLnZhbHVlKGxlbmd0aENvbnRleHQpKTsKLSAgICBt
X2hvdFNwb3Quc2V0WShzdGF0aWNfY2FzdDxpbnQ+KHkpKTsKKyAgICAvLyBGSVhNRTogV2h5IGRv
ZXNuJ3QgdGhpcyBmdW50aW9uIGNoZWNrIGZvciBhIGNoYW5nZSB0byB0aGUgaHJlZiBvZiB0aGUg
Y3Vyc29yIGVsZW1lbnQ/IFdoeSB3b3VsZCB3ZSBkeW5hbWljYWxseSB0cmFjayBjaGFuZ2VzIHRv
IHgveSBidXQgbm90IGhyZWY/CiB9CiAKIEltYWdlV2l0aFNjYWxlIENTU0N1cnNvckltYWdlVmFs
dWU6OnNlbGVjdEJlc3RGaXRJbWFnZShjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC0xMDEs
OCArMTAzLDkgQEAgSW1hZ2VXaXRoU2NhbGUgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6c2VsZWN0QmVz
dEZpdEltYWdlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIGRvd25j
YXN0PENTU0ltYWdlU2V0VmFsdWU+KG1faW1hZ2VWYWx1ZS5nZXQoKSkuc2VsZWN0QmVzdEZpdElt
YWdlKGRvY3VtZW50KTsKIAogICAgIGlmIChhdXRvKiBjdXJzb3JFbGVtZW50ID0gdXBkYXRlQ3Vy
c29yRWxlbWVudChkb2N1bWVudCkpIHsKLSAgICAgICAgaWYgKGN1cnNvckVsZW1lbnQtPmhyZWYo
KSAhPSBkb3duY2FzdDxDU1NJbWFnZVZhbHVlPihtX2ltYWdlVmFsdWUuZ2V0KCkpLnVybCgpKQot
ICAgICAgICAgICAgbV9pbWFnZVZhbHVlID0gQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKGRvY3VtZW50
LmNvbXBsZXRlVVJMKGN1cnNvckVsZW1lbnQtPmhyZWYoKSksIG1fbG9hZGVkRnJvbU9wYXF1ZVNv
dXJjZSk7CisgICAgICAgIGF1dG8gbG9jYXRpb24gPSBkb2N1bWVudC5jb21wbGV0ZVVSTChjdXJz
b3JFbGVtZW50LT5ocmVmKCkpOworICAgICAgICBpZiAobG9jYXRpb24uc3RyaW5nKCkgIT0gZG93
bmNhc3Q8Q1NTSW1hZ2VWYWx1ZT4obV9pbWFnZVZhbHVlLmdldCgpKS5sb2NhdGlvbigpKQorICAg
ICAgICAgICAgbV9pbWFnZVZhbHVlID0gQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKFdURk1vdmUobG9j
YXRpb24pLCBtX2xvYWRlZEZyb21PcGFxdWVTb3VyY2UpOwogICAgIH0KIAogICAgIHJldHVybiB7
IG1faW1hZ2VWYWx1ZS5wdHIoKSAsIDEgfTsKQEAgLTExMCw4ICsxMTMsMTUgQEAgSW1hZ2VXaXRo
U2NhbGUgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6c2VsZWN0QmVzdEZpdEltYWdlKGNvbnN0IERvY3Vt
ZW50JiBkb2N1bWVudCkKIAogYm9vbCBDU1NDdXJzb3JJbWFnZVZhbHVlOjplcXVhbHMoY29uc3Qg
Q1NTQ3Vyc29ySW1hZ2VWYWx1ZSYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faGFzSG90
U3BvdCA/IG90aGVyLm1faGFzSG90U3BvdCAmJiBtX2hvdFNwb3QgPT0gb3RoZXIubV9ob3RTcG90
IDogIW90aGVyLm1faGFzSG90U3BvdAotICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWUobV9pbWFn
ZVZhbHVlLCBvdGhlci5tX2ltYWdlVmFsdWUpOworICAgIHJldHVybiBtX2hvdFNwb3QgPT0gb3Ro
ZXIubV9ob3RTcG90ICYmIGNvbXBhcmVDU1NWYWx1ZShtX2ltYWdlVmFsdWUsIG90aGVyLm1faW1h
Z2VWYWx1ZSk7Cit9CisKK1JlZjxDU1NDdXJzb3JJbWFnZVZhbHVlPiBDU1NDdXJzb3JJbWFnZVZh
bHVlOjp2YWx1ZVdpdGhTdHlsZXNSZXNvbHZlZChTdHlsZTo6QnVpbGRlclN0YXRlJiBzdGF0ZSkK
K3sKKyAgICBhdXRvIGltYWdlVmFsdWUgPSBzdGF0ZS5yZXNvbHZlSW1hZ2VTdHlsZXMobV9pbWFn
ZVZhbHVlLmdldCgpKTsKKyAgICBpZiAoaW1hZ2VWYWx1ZS5wdHIoKSA9PSBtX2ltYWdlVmFsdWUu
cHRyKCkpCisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICByZXR1cm4gY3JlYXRlKFdURk1vdmUo
aW1hZ2VWYWx1ZSksIG1faG90U3BvdCwgbV9sb2FkZWRGcm9tT3BhcXVlU291cmNlKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0N1cnNvckltYWdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZh
bHVlLmgKaW5kZXggYjMwNmZkYTQ4NWVjMjI4MTk3ODRiMzViNjg2NzFjMzZhNWEyZmE0OC4uODVl
NjQxY2NlMDVhZjViNjU2YjY1MTU5NmZiMzE2NThlZDEzNDEwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHQgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAg
LTI3LDEyICsyNyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ2FjaGVkSW1h
Z2U7Ci1jbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIERvY3VtZW50OwotY2xhc3Mg
RWxlbWVudDsKIGNsYXNzIFNWR0N1cnNvckVsZW1lbnQ7Ci1jbGFzcyBTVkdFbGVtZW50OwogCiBz
dHJ1Y3QgSW1hZ2VXaXRoU2NhbGU7CiAKQEAgLTQyLDQ1ICszOCwzMiBAQCBjbGFzcyBCdWlsZGVy
U3RhdGU7CiAKIGNsYXNzIENTU0N1cnNvckltYWdlVmFsdWUgZmluYWwgOiBwdWJsaWMgQ1NTVmFs
dWUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZT4gY3JlYXRl
KFJlZjxDU1NWYWx1ZT4mJiBpbWFnZVZhbHVlLCBib29sIGhhc0hvdFNwb3QsIGNvbnN0IEludFBv
aW50JiBob3RTcG90LCBMb2FkZWRGcm9tT3BhcXVlU291cmNlIGxvYWRlZEZyb21PcGFxdWVTb3Vy
Y2UpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NDdXJzb3JJbWFnZVZh
bHVlKFdURk1vdmUoaW1hZ2VWYWx1ZSksIGhhc0hvdFNwb3QsIGhvdFNwb3QsIGxvYWRlZEZyb21P
cGFxdWVTb3VyY2UpKTsKLSAgICB9Ci0KKyAgICBzdGF0aWMgUmVmPENTU0N1cnNvckltYWdlVmFs
dWU+IGNyZWF0ZShSZWY8Q1NTVmFsdWU+JiYgaW1hZ2VWYWx1ZSwgY29uc3Qgc3RkOjpvcHRpb25h
bDxJbnRQb2ludD4mIGhvdFNwb3QsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UpOwogICAgIH5DU1ND
dXJzb3JJbWFnZVZhbHVlKCk7CiAKLSAgICBib29sIGhhc0hvdFNwb3QoKSBjb25zdCB7IHJldHVy
biBtX2hhc0hvdFNwb3Q7IH0KLQotICAgIEludFBvaW50IGhvdFNwb3QoKSBjb25zdAotICAgIHsK
LSAgICAgICAgaWYgKG1faGFzSG90U3BvdCkKLSAgICAgICAgICAgIHJldHVybiBtX2hvdFNwb3Q7
Ci0gICAgICAgIHJldHVybiBJbnRQb2ludCgtMSwgLTEpOwotICAgIH0KKyAgICBzdGQ6Om9wdGlv
bmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3QgeyByZXR1cm4gbV9ob3RTcG90OyB9CiAKLSAg
ICBjb25zdCBVUkwmIGltYWdlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW5hbFVSTDsgfQor
ICAgIGNvbnN0IFN0cmluZyYgbG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbmFsTG9j
YXRpb247IH0KIAogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CiAKICAgICBJbWFn
ZVdpdGhTY2FsZSBzZWxlY3RCZXN0Rml0SW1hZ2UoY29uc3QgRG9jdW1lbnQmKTsKIAotICAgIHZv
aWQgcmVtb3ZlUmVmZXJlbmNlZEVsZW1lbnQoU1ZHRWxlbWVudCopOwotCiAgICAgYm9vbCBlcXVh
bHMoY29uc3QgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSYpIGNvbnN0OwogCiAgICAgdm9pZCBjdXJzb3JF
bGVtZW50UmVtb3ZlZChTVkdDdXJzb3JFbGVtZW50Jik7CiAgICAgdm9pZCBjdXJzb3JFbGVtZW50
Q2hhbmdlZChTVkdDdXJzb3JFbGVtZW50Jik7CiAKKyAgICBSZWY8Q1NTQ3Vyc29ySW1hZ2VWYWx1
ZT4gdmFsdWVXaXRoU3R5bGVzUmVzb2x2ZWQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYpOworCiBwcml2
YXRlOgotICAgIENTU0N1cnNvckltYWdlVmFsdWUoUmVmPENTU1ZhbHVlPiYmIGltYWdlVmFsdWUs
IGJvb2wgaGFzSG90U3BvdCwgY29uc3QgSW50UG9pbnQmIGhvdFNwb3QsIExvYWRlZEZyb21PcGFx
dWVTb3VyY2UpOworICAgIENTU0N1cnNvckltYWdlVmFsdWUoUmVmPENTU1ZhbHVlPiYmIGltYWdl
VmFsdWUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+JiBob3RTcG90LCBMb2FkZWRGcm9t
T3BhcXVlU291cmNlKTsKIAogICAgIFNWR0N1cnNvckVsZW1lbnQqIHVwZGF0ZUN1cnNvckVsZW1l
bnQoY29uc3QgRG9jdW1lbnQmKTsKIAotICAgIFVSTCBtX29yaWdpbmFsVVJMOworICAgIFN0cmlu
ZyBtX29yaWdpbmFsTG9jYXRpb247CiAgICAgUmVmPENTU1ZhbHVlPiBtX2ltYWdlVmFsdWU7Ci0K
LSAgICBib29sIG1faGFzSG90U3BvdDsKLSAgICBJbnRQb2ludCBtX2hvdFNwb3Q7CisgICAgc3Rk
OjpvcHRpb25hbDxJbnRQb2ludD4gbV9ob3RTcG90OwogICAgIEhhc2hTZXQ8U1ZHQ3Vyc29yRWxl
bWVudCo+IG1fY3Vyc29yRWxlbWVudHM7CiAgICAgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSBtX2xv
YWRlZEZyb21PcGFxdWVTb3VyY2UgeyBMb2FkZWRGcm9tT3BhcXVlU291cmNlOjpObyB9OwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAppbmRleCAyOWEzY2M4
YjI2ZWM1NzEzZmNkZTIzMWE4ZDI4YjNlMmE3YWIzODFkLi44Y2Y5MDlhZTllNTM3MjRiOTFkYjRh
Y2UxNGFlMjg1NzFkZDk1NTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmls
dGVySW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdl
VmFsdWUuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMyBBZG9i
ZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodCByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsNyArMzYsNiBAQAogI2luY2x1ZGUgIlJlbmRlckVsZW1l
bnQuaCIKICNpbmNsdWRlICJTdHlsZUJ1aWxkZXJTdGF0ZS5oIgogI2luY2x1ZGUgIlN0eWxlQ2Fj
aGVkSW1hZ2UuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtMTczLDQgKzE3MywxNiBAQCBib29sIENTU0ZpbHRlckltYWdl
VmFsdWU6OmVxdWFsSW5wdXRJbWFnZXMoY29uc3QgQ1NTRmlsdGVySW1hZ2VWYWx1ZSYgb3RoZXIp
IGNvbgogICAgIHJldHVybiBjb21wYXJlQ1NTVmFsdWUobV9pbWFnZVZhbHVlLCBvdGhlci5tX2lt
YWdlVmFsdWUpOwogfQogCitSZWY8Q1NTRmlsdGVySW1hZ2VWYWx1ZT4gQ1NTRmlsdGVySW1hZ2VW
YWx1ZTo6dmFsdWVXaXRoU3R5bGVzUmVzb2x2ZWQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYgc3RhdGUp
Cit7CisgICAgYXV0byBpbWFnZVZhbHVlID0gc3RhdGUucmVzb2x2ZUltYWdlU3R5bGVzKG1faW1h
Z2VWYWx1ZS5nZXQoKSk7CisgICAgaWYgKGltYWdlVmFsdWUucHRyKCkgPT0gbV9pbWFnZVZhbHVl
LnB0cigpKSB7CisgICAgICAgIGNyZWF0ZUZpbHRlck9wZXJhdGlvbnMoc3RhdGUpOworICAgICAg
ICByZXR1cm4gKnRoaXM7CisgICAgfQorICAgIGF1dG8gZmlsdGVySW1hZ2VWYWx1ZSA9IGNyZWF0
ZShXVEZNb3ZlKGltYWdlVmFsdWUpLCBSZWYgeyBtX2ZpbHRlclZhbHVlIH0pOworICAgIGZpbHRl
ckltYWdlVmFsdWUtPmNyZWF0ZUZpbHRlck9wZXJhdGlvbnMoc3RhdGUpOworICAgIHJldHVybiBm
aWx0ZXJJbWFnZVZhbHVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuaAppbmRleCAzYTdiNDM3YjlhMjdlNDlhNGU4NTUz
YmIwNTBhNmIwN2JiMDAyYjBlLi41MDRjMmFkOGQxNWNiNGM1M2UyNDI5MzEwM2QyMWQ2YTNjMDI2
ODY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmgKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3Jh
dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzUsMTAgKzM2LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDYWNoZWRJ
bWFnZTsKIGNsYXNzIEZpbHRlclN1YmltYWdlT2JzZXJ2ZXJQcm94eTsKIGNsYXNzIFJlbmRlckVs
ZW1lbnQ7Ci1jbGFzcyBEb2N1bWVudDsKIAogbmFtZXNwYWNlIFN0eWxlIHsKIGNsYXNzIEJ1aWxk
ZXJTdGF0ZTsKQEAgLTcxLDE1ICs3MCwxMiBAQCBwdWJsaWM6CiAKICAgICBib29sIGVxdWFsSW5w
dXRJbWFnZXMoY29uc3QgQ1NTRmlsdGVySW1hZ2VWYWx1ZSYpIGNvbnN0OwogCi0gICAgdm9pZCBj
cmVhdGVGaWx0ZXJPcGVyYXRpb25zKFN0eWxlOjpCdWlsZGVyU3RhdGUmKTsKLQogICAgIGNvbnN0
IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlck9wZXJhdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2Zp
bHRlck9wZXJhdGlvbnM7IH0KLSAgICB2b2lkIHNldEZpbHRlck9wZXJhdGlvbnMoY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYgZmlsdGVyT3BlcmF0aW9ucykKLSAgICB7Ci0gICAgICAgIG1fZmlsdGVy
T3BlcmF0aW9ucyA9IGZpbHRlck9wZXJhdGlvbnM7Ci0gICAgfQorICAgIHZvaWQgc2V0RmlsdGVy
T3BlcmF0aW9ucyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJPcGVyYXRpb25zKSB7IG1f
ZmlsdGVyT3BlcmF0aW9ucyA9IGZpbHRlck9wZXJhdGlvbnM7IH0KICAgICBDYWNoZWRJbWFnZSog
Y2FjaGVkSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZEltYWdlLmdldCgpOyB9CiAKKyAg
ICBSZWY8Q1NTRmlsdGVySW1hZ2VWYWx1ZT4gdmFsdWVXaXRoU3R5bGVzUmVzb2x2ZWQoU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYpOworCiBwcml2YXRlOgogICAgIENTU0ZpbHRlckltYWdlVmFsdWUoUmVm
PENTU1ZhbHVlPiYmIGltYWdlVmFsdWUsIFJlZjxDU1NWYWx1ZT4mJiBmaWx0ZXJWYWx1ZSkKICAg
ICAgICAgOiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlKEZpbHRlckltYWdlQ2xhc3MpCkBAIC0xMDYs
NiArMTAyLDcgQEAgcHJpdmF0ZToKICAgICB9OwogCiAgICAgdm9pZCBmaWx0ZXJJbWFnZUNoYW5n
ZWQoY29uc3QgSW50UmVjdCYpOworICAgIHZvaWQgY3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhTdHls
ZTo6QnVpbGRlclN0YXRlJik7CiAKICAgICBSZWY8Q1NTVmFsdWU+IG1faW1hZ2VWYWx1ZTsKICAg
ICBSZWY8Q1NTVmFsdWU+IG1fZmlsdGVyVmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGll
bnRWYWx1ZS5jcHAKaW5kZXggNDdmMGZlYWY3M2E5YTc0ZGViNzI5ODZjMmY0Y2Y2NjRjY2E3ZDYw
My4uNWNmY2FjY2Y5MGM5ZDNiYjJiNDlmZTUyMTRiNmNmNWY4MjFjZGJjMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDcsNyArMTA3LDcgQEAgYm9vbCBDU1NHcmFk
aWVudFZhbHVlOjpoYXNDb2xvckRlcml2ZWRGcm9tRWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJu
ICptX2hhc0NvbG9yRGVyaXZlZEZyb21FbGVtZW50OwogfQogCi1SZWY8Q1NTR3JhZGllbnRWYWx1
ZT4gQ1NTR3JhZGllbnRWYWx1ZTo6Z3JhZGllbnRXaXRoU3R5bGVzUmVzb2x2ZWQoU3R5bGU6OkJ1
aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQorUmVmPENTU0dyYWRpZW50VmFsdWU+IENTU0dyYWRp
ZW50VmFsdWU6OnZhbHVlV2l0aFN0eWxlc1Jlc29sdmVkKFN0eWxlOjpCdWlsZGVyU3RhdGUmIGJ1
aWxkZXJTdGF0ZSkKIHsKICAgICBhdXRvIHJlc3VsdCA9IGhhc0NvbG9yRGVyaXZlZEZyb21FbGVt
ZW50KCkgPyBjbG9uZSgqdGhpcykgOiBtYWtlUmVmKCp0aGlzKTsKICAgICByZXNvbHZlU3RvcENv
bG9ycyhyZXN1bHQtPm1fc3RvcHMsIFsmXShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgY29sb3JW
YWx1ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgKaW5kZXggZjlhMTg3NmEz
MTBiM2JiNzVlOTY0ZWVhMTFiMWY2ZWFkODFiM2Q5ZC4uMzc2MWViNDE4MTk0ODQ4YWQ1ZTExNDkw
OWJjYzFjNWJhOWZlNDc0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRp
ZW50VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc4
LDcgKzc4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc1BlbmRpbmco
KSB7IHJldHVybiBmYWxzZTsgfQogICAgIHN0YXRpYyB2b2lkIGxvYWRTdWJpbWFnZXMoQ2FjaGVk
UmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKSB7IH0KIAotICAg
IFJlZjxDU1NHcmFkaWVudFZhbHVlPiBncmFkaWVudFdpdGhTdHlsZXNSZXNvbHZlZChTdHlsZTo6
QnVpbGRlclN0YXRlJik7CisgICAgUmVmPENTU0dyYWRpZW50VmFsdWU+IHZhbHVlV2l0aFN0eWxl
c1Jlc29sdmVkKFN0eWxlOjpCdWlsZGVyU3RhdGUmKTsKIAogcHJvdGVjdGVkOgogICAgIENTU0dy
YWRpZW50VmFsdWUoQ2xhc3NUeXBlIGNsYXNzVHlwZSwgQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0
LCBDU1NHcmFkaWVudFR5cGUgZ3JhZGllbnRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdl
U2V0VmFsdWUuY3BwCmluZGV4IGE5MzIwMzA4MjVhYmI2NTViNTI3OGFmNWM2MTUyZTNiNTQ3ZWFk
N2IuLjE1NTEwMTI4M2M2MjZjYTE4YTMzYjAyYmFiMTI3OGU5NmI4YjBmMzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEyLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTMsMTYgKzExMywxNCBAQCB2b2lk
IENTU0ltYWdlU2V0VmFsdWU6OnVwZGF0ZURldmljZVNjYWxlRmFjdG9yKGNvbnN0IERvY3VtZW50
JiBkb2N1bWVudCkKICAgICBtX3NlbGVjdGVkSW1hZ2VWYWx1ZSA9IG51bGxwdHI7CiB9CiAKLVJl
ZjxDU1NJbWFnZVNldFZhbHVlPiBDU1NJbWFnZVNldFZhbHVlOjppbWFnZVNldFdpdGhTdHlsZXNS
ZXNvbHZlZChTdHlsZTo6QnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUpCitSZWY8Q1NTSW1hZ2VT
ZXRWYWx1ZT4gQ1NTSW1hZ2VTZXRWYWx1ZTo6dmFsdWVXaXRoU3R5bGVzUmVzb2x2ZWQoU3R5bGU6
OkJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YXRlKQogewotICAgIFJlZjxDU1NJbWFnZVNldFZhbHVl
PiByZXN1bHQgPSBDU1NJbWFnZVNldFZhbHVlOjpjcmVhdGUoKTsKLSAgICBzaXplX3QgbGVuZ3Ro
ID0gdGhpcy0+bGVuZ3RoKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgKyAxIDwgbGVuZ3Ro
OyBpICs9IDIpIHsKKyAgICBhdXRvIHJlc3VsdCA9IGNyZWF0ZSgpOworICAgIGZvciAoc2l6ZV90
IGkgPSAwLCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoKTsgaSArIDEgPCBsZW5ndGg7IGkgKz0gMikg
ewogICAgICAgICByZXN1bHQtPmFwcGVuZChidWlsZGVyU3RhdGUucmVzb2x2ZUltYWdlU3R5bGVz
KCppdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKSk7CiAgICAgICAgIHJlc3VsdC0+YXBwZW5kKCpp
dGVtV2l0aG91dEJvdW5kc0NoZWNrKGkgKyAxKSk7CiAgICAgfQotCi0gICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICByZXR1cm4gZXF1YWxzKHJlc3VsdCkgPyBSZWYgeyAqdGhpcyB9IDogcmVzdWx0Owog
fQogCiBTdHJpbmcgQ1NTSW1hZ2VTZXRWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuaAppbmRleCAwMWVhNGM1YzU0YTFiNmZmYmVkMzMy
M2Y2YjM4ZGFkNDgzNTUxZTVlLi45NTAyMTdkNDA0YmYxNDkwNTI3MDcyNTQwNjExOTYxOTBmMTdi
ZTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjEsNyArNjEsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZURldmljZVNjYWxlRmFjdG9yKGNvbnN0IERvY3VtZW50
Jik7CiAKLSAgICBSZWY8Q1NTSW1hZ2VTZXRWYWx1ZT4gaW1hZ2VTZXRXaXRoU3R5bGVzUmVzb2x2
ZWQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYpOworICAgIFJlZjxDU1NJbWFnZVNldFZhbHVlPiB2YWx1
ZVdpdGhTdHlsZXNSZXNvbHZlZChTdHlsZTo6QnVpbGRlclN0YXRlJik7CiAKIHByaXZhdGU6CiAg
ICAgQ1NTSW1hZ2VTZXRWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCmlu
ZGV4IGMwZjVhMTZkN2VmOGRjYjQxZTIzMDliMzQxMWMwZTM5Y2E5MGIwMjEuLjQ0MWYxN2IyMmE2
MGE1MzUyMWFmMWNhNDE2MWM3YTkwY2Q1YTljMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VW
YWx1ZS5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogKEMpIDE5OTktMjAwMyBMYXJzIEtub2xs
IChrbm9sbEBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNCw4MCArMzQs
MTE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ1NTSW1hZ2VWYWx1ZTo6Q1NTSW1hZ2VW
YWx1ZShVUkwmJiB1cmwsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UgbG9hZGVkRnJvbU9wYXF1ZVNv
dXJjZSkKK3N0YXRpYyBib29sIG9wZXJhdG9yPT0oY29uc3QgRHVhbExvY2F0aW9uJiBhLCBjb25z
dCBEdWFsTG9jYXRpb24mIGIpCit7CisgICAgcmV0dXJuIGEuc3BlY2lmaWVkVVJMU3RyaW5nID09
IGIuc3BlY2lmaWVkVVJMU3RyaW5nICYmIGEucmVzb2x2ZWRVUkxTdHJpbmcgPT0gYi5yZXNvbHZl
ZFVSTFN0cmluZzsKK30KKworQ1NTSW1hZ2VWYWx1ZTo6Q1NTSW1hZ2VWYWx1ZShEdWFsTG9jYXRp
b24mJiBsb2NhdGlvbiwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSBsb2FkZWRGcm9tT3BhcXVlU291
cmNlKQogICAgIDogQ1NTVmFsdWUoSW1hZ2VDbGFzcykKLSAgICAsIG1fdXJsKFdURk1vdmUodXJs
KSkKLSAgICAsIG1fYWNjZXNzZWRJbWFnZShmYWxzZSkKKyAgICAsIG1fbG9jYXRpb24oV1RGTW92
ZShsb2NhdGlvbikpCiAgICAgLCBtX2xvYWRlZEZyb21PcGFxdWVTb3VyY2UobG9hZGVkRnJvbU9w
YXF1ZVNvdXJjZSkKIHsKIH0KIAogQ1NTSW1hZ2VWYWx1ZTo6Q1NTSW1hZ2VWYWx1ZShDYWNoZWRJ
bWFnZSYgaW1hZ2UpCiAgICAgOiBDU1NWYWx1ZShJbWFnZUNsYXNzKQotICAgICwgbV91cmwoaW1h
Z2UudXJsKCkpCisgICAgLCBtX2xvY2F0aW9uIHsgaW1hZ2UudXJsKCkuc3RyaW5nKCksIGltYWdl
LnVybCgpLnN0cmluZygpIH0KICAgICAsIG1fY2FjaGVkSW1hZ2UoJmltYWdlKQotICAgICwgbV9h
Y2Nlc3NlZEltYWdlKHRydWUpCiB7CiB9CiAKK1JlZjxDU1NJbWFnZVZhbHVlPiBDU1NJbWFnZVZh
bHVlOjpjcmVhdGUoRHVhbExvY2F0aW9uJiYgbG9jYXRpb24sIExvYWRlZEZyb21PcGFxdWVTb3Vy
Y2UgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBD
U1NJbWFnZVZhbHVlKFdURk1vdmUobG9jYXRpb24pLCBsb2FkZWRGcm9tT3BhcXVlU291cmNlKSk7
Cit9CisKK1JlZjxDU1NJbWFnZVZhbHVlPiBDU1NJbWFnZVZhbHVlOjpjcmVhdGUoVVJMJiYgaW1h
Z2VVUkwsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkKK3sK
KyAgICByZXR1cm4gY3JlYXRlKHsgaW1hZ2VVUkwuc3RyaW5nKCksIGltYWdlVVJMLnN0cmluZygp
IH0sIGxvYWRlZEZyb21PcGFxdWVTb3VyY2UpOworfQorCitSZWY8Q1NTSW1hZ2VWYWx1ZT4gQ1NT
SW1hZ2VWYWx1ZTo6Y3JlYXRlKENhY2hlZEltYWdlJiBpbWFnZSkKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBDU1NJbWFnZVZhbHVlKGltYWdlKSk7Cit9CiAKIENTU0ltYWdlVmFsdWU6On5D
U1NJbWFnZVZhbHVlKCkgPSBkZWZhdWx0OwogCiBib29sIENTU0ltYWdlVmFsdWU6OmlzUGVuZGlu
ZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFtX2FjY2Vzc2VkSW1hZ2U7CisgICAgcmV0dXJuICFt
X2NhY2hlZEltYWdlOwogfQogCi1DYWNoZWRJbWFnZSogQ1NTSW1hZ2VWYWx1ZTo6bG9hZEltYWdl
KENhY2hlZFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9u
cyYgb3B0aW9ucykKK1VSTCBDU1NJbWFnZVZhbHVlOjpyZXNvbHZlZFVSTChjb25zdCBEb2N1bWVu
dCYgZG9jdW1lbnQpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2FjY2Vzc2VkSW1hZ2UpIHsKLSAgICAg
ICAgbV9hY2Nlc3NlZEltYWdlID0gdHJ1ZTsKKyAgICByZXR1cm4gZG9jdW1lbnQuY29tcGxldGVV
UkwobG9jYXRpb24oKSk7Cit9CiAKK1JlZjxDU1NJbWFnZVZhbHVlPiBDU1NJbWFnZVZhbHVlOjp2
YWx1ZVdpdGhTdHlsZXNSZXNvbHZlZChTdHlsZTo6QnVpbGRlclN0YXRlJiBzdGF0ZSkKK3sKKyAg
ICBhdXRvIHJlc29sdmVkVVJMID0gdGhpcy0+cmVzb2x2ZWRVUkwoc3RhdGUuZG9jdW1lbnQoKSk7
CisgICAgRHVhbExvY2F0aW9uIGxvY2F0aW9uIHsgcmVzb2x2ZWRVUkwuc3RyaW5nKCksIHJlc29s
dmVkVVJMLnN0cmluZygpIH07CisgICAgaWYgKG1fbG9jYXRpb24gPT0gbG9jYXRpb24pCisgICAg
ICAgIHJldHVybiAqdGhpczsKKyAgICBhdXRvIHJlc3VsdCA9IGNyZWF0ZShXVEZNb3ZlKGxvY2F0
aW9uKSwgbV9sb2FkZWRGcm9tT3BhcXVlU291cmNlKTsKKyAgICByZXN1bHQtPm1fY2FjaGVkSW1h
Z2UgPSBtX2NhY2hlZEltYWdlOworICAgIHJlc3VsdC0+bV9pbml0aWF0b3JOYW1lID0gbV9pbml0
aWF0b3JOYW1lOworICAgIHJlc3VsdC0+bV91bnJlc29sdmVkVmFsdWUgPSB0aGlzOworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK0NhY2hlZEltYWdlKiBDU1NJbWFnZVZhbHVlOjpsb2FkSW1hZ2Uo
Q2FjaGVkUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25z
JiBvcHRpb25zKQoreworICAgIGlmICghbV9jYWNoZWRJbWFnZSkgewogICAgICAgICBSZXNvdXJj
ZUxvYWRlck9wdGlvbnMgbG9hZE9wdGlvbnMgPSBvcHRpb25zOwogICAgICAgICBsb2FkT3B0aW9u
cy5sb2FkZWRGcm9tT3BhcXVlU291cmNlID0gbV9sb2FkZWRGcm9tT3BhcXVlU291cmNlOwotICAg
ICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJlcXVlc3QobG9hZGVy
LmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKG1fdXJsLnN0cmluZygpKSksIGxvYWRPcHRpb25zKTsK
KyAgICAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KHJl
c29sdmVkVVJMKCpsb2FkZXIuZG9jdW1lbnQoKSkpLCBsb2FkT3B0aW9ucyk7CiAgICAgICAgIGlm
IChtX2luaXRpYXRvck5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmVxdWVzdC5zZXRJbml0
aWF0b3IoY2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycygpLmNzcyk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9yKG1faW5pdGlhdG9yTmFtZSk7Ci0K
ICAgICAgICAgaWYgKG9wdGlvbnMubW9kZSA9PSBGZXRjaE9wdGlvbnM6Ok1vZGU6OkNvcnMpIHsK
ICAgICAgICAgICAgIEFTU0VSVChsb2FkZXIuZG9jdW1lbnQoKSk7CiAgICAgICAgICAgICByZXF1
ZXN0LnVwZGF0ZUZvckFjY2Vzc0NvbnRyb2woKmxvYWRlci5kb2N1bWVudCgpKTsKICAgICAgICAg
fQogICAgICAgICBtX2NhY2hlZEltYWdlID0gbG9hZGVyLnJlcXVlc3RJbWFnZShXVEZNb3ZlKHJl
cXVlc3QpKS52YWx1ZV9vcihudWxscHRyKTsKKyAgICAgICAgZm9yIChhdXRvIGltYWdlVmFsdWUg
PSB0aGlzOyAoaW1hZ2VWYWx1ZSA9IGltYWdlVmFsdWUtPm1fdW5yZXNvbHZlZFZhbHVlLmdldCgp
KTsgKQorICAgICAgICAgICAgaW1hZ2VWYWx1ZS0+bV9jYWNoZWRJbWFnZSA9IG1fY2FjaGVkSW1h
Z2U7CiAgICAgfQotICAgIHJldHVybiBtX2NhY2hlZEltYWdlLmdldCgpOworICAgIHJldHVybiBt
X2NhY2hlZEltYWdlLnZhbHVlKCkuZ2V0KCk7CiB9CiAKIGJvb2wgQ1NTSW1hZ2VWYWx1ZTo6dHJh
dmVyc2VTdWJyZXNvdXJjZXMoY29uc3QgV1RGOjpGdW5jdGlvbjxib29sIChjb25zdCBDYWNoZWRS
ZXNvdXJjZSYpPiYgaGFuZGxlcikgY29uc3QKIHsKLSAgICBpZiAoIW1fY2FjaGVkSW1hZ2UpCisg
ICAgaWYgKCFtX2NhY2hlZEltYWdlLnZhbHVlX29yKG51bGxwdHIpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuIGhhbmRsZXIoKm1fY2FjaGVkSW1hZ2UpOworICAgIHJldHVybiBo
YW5kbGVyKCoqbV9jYWNoZWRJbWFnZSk7CiB9CiAKIGJvb2wgQ1NTSW1hZ2VWYWx1ZTo6ZXF1YWxz
KGNvbnN0IENTU0ltYWdlVmFsdWUmIG90aGVyKSBjb25zdAogewotICAgIHJldHVybiBtX3VybCA9
PSBvdGhlci5tX3VybDsKKyAgICByZXR1cm4gbV9sb2NhdGlvbiA9PSBvdGhlci5tX2xvY2F0aW9u
OwogfQogCiBTdHJpbmcgQ1NTSW1hZ2VWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHNlcmlhbGl6ZVVSTChtX3VybC5zdHJpbmcoKSk7CisgICAgcmV0dXJuIHNlcmlh
bGl6ZVVSTChtX2xvY2F0aW9uLnNwZWNpZmllZFVSTFN0cmluZyk7CiB9CiAKIFJlZjxEZXByZWNh
dGVkQ1NTT01WYWx1ZT4gQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlRGVwcmVjYXRlZENTU09NV3JhcHBl
cihDU1NTdHlsZURlY2xhcmF0aW9uJiBzdHlsZURlY2xhcmF0aW9uKSBjb25zdAogewogICAgIC8v
IE5PVEU6IFdlIGV4cG9zZSBDU1NJbWFnZVZhbHVlcyBhcyBVUkkgcHJpbWl0aXZlIHZhbHVlcyBp
biBDU1NPTSB0byBtYWludGFpbiBvbGQgYmVoYXZpb3IuCi0gICAgcmV0dXJuIERlcHJlY2F0ZWRD
U1NPTVByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShtX3Vy
bC5zdHJpbmcoKSwgQ1NTVW5pdFR5cGU6OkNTU19VUkkpLCBzdHlsZURlY2xhcmF0aW9uKTsKKyAg
ICByZXR1cm4gRGVwcmVjYXRlZENTU09NUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKGxvY2F0aW9uKCksIENTU1VuaXRUeXBlOjpDU1NfVVJJKSwgc3R5bGVE
ZWNsYXJhdGlvbik7CiB9CiAKIGJvb2wgQ1NTSW1hZ2VWYWx1ZTo6a25vd25Ub0JlT3BhcXVlKGNv
bnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKSBjb25zdAogewotICAgIGlmICghbV9jYWNoZWRJ
bWFnZSkKKyAgICBpZiAoIW1fY2FjaGVkSW1hZ2UudmFsdWVfb3IobnVsbHB0cikpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gbV9jYWNoZWRJbWFnZS0+Y3VycmVudEZyYW1lS25v
d25Ub0JlT3BhcXVlKCZyZW5kZXJlcik7CisgICAgcmV0dXJuICgqKm1fY2FjaGVkSW1hZ2UpLmN1
cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgmcmVuZGVyZXIpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAppbmRleCA3ZTZiYmI5NTE0NTMy
NTI2ODM2NGM1N2NiNTY3NjIyMzcxNGI0Yjc2Li43N2ZhY2ZiMjdhOTQxMjQ1YjYwMDNjZjIxMjc3
NDA2NjgxYjliZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgKQEAgLTEsNiArMSw2
IEBACiAvKgogICogKEMpIDE5OTktMjAwMyBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQotICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtOSw3ICs5LDcgQEAK
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKICAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQogICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAgKgogICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQpAQCAtMzQsMTcgKzM0LDI4IEBAIGNsYXNzIERlcHJlY2F0ZWRDU1NPTVZh
bHVlOwogY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvbjsKIGNsYXNzIFJlbmRlckVsZW1lbnQ7CiAK
K25hbWVzcGFjZSBTdHlsZSB7CitjbGFzcyBCdWlsZGVyU3RhdGU7Cit9CisKKy8vIEZJWE1FOiBN
b3ZlIHRvIGFub3RoZXIgaGVhZGVyPyBCZXR0ZXIgbmFtZT8gU2hvdWxkIHdlIGNhbGwgdGhpcyBE
dWFsVVJMLCBDU1NEdWFsVVJMLCBDU1NQYXJzZWRVUkwsIG9yIHNvbWV0aGluZyBlbHNlPworc3Ry
dWN0IER1YWxMb2NhdGlvbiB7CisgICAgU3RyaW5nIHNwZWNpZmllZFVSTFN0cmluZzsKKyAgICBT
dHJpbmcgcmVzb2x2ZWRVUkxTdHJpbmc7Cit9OworCiBjbGFzcyBDU1NJbWFnZVZhbHVlIGZpbmFs
IDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENTU0ltYWdlVmFs
dWU+IGNyZWF0ZShVUkwmJiB1cmwsIExvYWRlZEZyb21PcGFxdWVTb3VyY2UgbG9hZGVkRnJvbU9w
YXF1ZVNvdXJjZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NJbWFnZVZhbHVlKFdURk1vdmUo
dXJsKSwgbG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSkpOyB9Ci0gICAgc3RhdGljIFJlZjxDU1NJbWFn
ZVZhbHVlPiBjcmVhdGUoQ2FjaGVkSW1hZ2UmIGltYWdlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IENTU0ltYWdlVmFsdWUoaW1hZ2UpKTsgfQorICAgIHN0YXRpYyBSZWY8Q1NTSW1hZ2VWYWx1ZT4g
Y3JlYXRlKER1YWxMb2NhdGlvbiYmLCBMb2FkZWRGcm9tT3BhcXVlU291cmNlKTsKKyAgICBzdGF0
aWMgUmVmPENTU0ltYWdlVmFsdWU+IGNyZWF0ZShVUkwmJiwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJj
ZSk7CisgICAgc3RhdGljIFJlZjxDU1NJbWFnZVZhbHVlPiBjcmVhdGUoQ2FjaGVkSW1hZ2UmKTsK
ICAgICB+Q1NTSW1hZ2VWYWx1ZSgpOwogCiAgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdDsKICAg
ICBDYWNoZWRJbWFnZSogbG9hZEltYWdlKENhY2hlZFJlc291cmNlTG9hZGVyJiwgY29uc3QgUmVz
b3VyY2VMb2FkZXJPcHRpb25zJik7Ci0gICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlKCkgY29u
c3QgeyByZXR1cm4gbV9jYWNoZWRJbWFnZS5nZXQoKTsgfQorICAgIENhY2hlZEltYWdlKiBjYWNo
ZWRJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgPyBtX2NhY2hlZEltYWdlLnZh
bHVlKCkuZ2V0KCkgOiBudWxscHRyOyB9CiAKLSAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsg
cmV0dXJuIG1fdXJsOyB9CisgICAgY29uc3QgU3RyaW5nJiBsb2NhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fbG9jYXRpb24ucmVzb2x2ZWRVUkxTdHJpbmc7IH0KIAogICAgIFN0cmluZyBjdXN0b21D
U1NUZXh0KCkgY29uc3Q7CiAKQEAgLTU4LDE1ICs2OSwxOSBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHNldEluaXRpYXRvcihjb25zdCBBdG9tU3RyaW5nJiBuYW1lKSB7IG1faW5pdGlhdG9yTmFtZSA9
IG5hbWU7IH0KIAorICAgIFJlZjxDU1NJbWFnZVZhbHVlPiB2YWx1ZVdpdGhTdHlsZXNSZXNvbHZl
ZChTdHlsZTo6QnVpbGRlclN0YXRlJik7CisKIHByaXZhdGU6Ci0gICAgQ1NTSW1hZ2VWYWx1ZShV
UkwmJiwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSk7CisgICAgQ1NTSW1hZ2VWYWx1ZShEdWFsTG9j
YXRpb24mJiwgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSk7CiAgICAgZXhwbGljaXQgQ1NTSW1hZ2VW
YWx1ZShDYWNoZWRJbWFnZSYpOwogCi0gICAgVVJMIG1fdXJsOwotICAgIENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZEltYWdlPiBtX2NhY2hlZEltYWdlOwotICAgIGJvb2wgbV9hY2Nlc3NlZElt
YWdlOworICAgIFVSTCByZXNvbHZlZFVSTChjb25zdCBEb2N1bWVudCYpIGNvbnN0OworCisgICAg
RHVhbExvY2F0aW9uIG1fbG9jYXRpb247CisgICAgc3RkOjpvcHRpb25hbDxDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRJbWFnZT4+IG1fY2FjaGVkSW1hZ2U7CiAgICAgQXRvbVN0cmluZyBtX2lu
aXRpYXRvck5hbWU7CiAgICAgTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZSBtX2xvYWRlZEZyb21PcGFx
dWVTb3VyY2UgeyBMb2FkZWRGcm9tT3BhcXVlU291cmNlOjpObyB9OworICAgIFJlZlB0cjxDU1NJ
bWFnZVZhbHVlPiBtX3VucmVzb2x2ZWRWYWx1ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAKaW5kZXggNWQ5NjQ0
Njc0OTVhNjBjYzMyNTNmNDc3YjM5NDBiZjY5ZDY2NTFkMC4uYTFhMGU0NmVjMWM0NmNlNzlmMDVm
MTczYzJhYmVjYjVjMWE5MmE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
U2hlZXRDb250ZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250
ZW50cy5jcHAKQEAgLTQxNywxMSArNDE3LDYgQEAgRG9jdW1lbnQqIFN0eWxlU2hlZXRDb250ZW50
czo6c2luZ2xlT3duZXJEb2N1bWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG93bmVyTm9kZSA/ICZv
d25lck5vZGUtPmRvY3VtZW50KCkgOiAwOwogfQogCi1VUkwgU3R5bGVTaGVldENvbnRlbnRzOjpj
b21wbGV0ZVVSTChjb25zdCBTdHJpbmcmIHVybCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wYXJz
ZXJDb250ZXh0LmNvbXBsZXRlVVJMKHVybCk7Ci19Ci0KIHN0YXRpYyBib29sIHRyYXZlcnNlUnVs
ZXNJblZlY3Rvcihjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgcnVsZXMsIGNv
bnN0IFdURjo6RnVuY3Rpb248Ym9vbCAoY29uc3QgU3R5bGVSdWxlQmFzZSYpPiYgaGFuZGxlcikK
IHsKICAgICBmb3IgKGF1dG8mIHJ1bGUgOiBydWxlcykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
U2hlZXRDb250ZW50cy5oCmluZGV4IGQ5NGM0OWFlMTliYmRjY2M3ZjFhNjA5ZDY2MTc3NDc5NTZk
ZmMxNDAuLjYwNzdmZDRlN2RmMzk5NDJlNjVjMDZjZDhlYzAyMTczNGEzZjc1MzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmgKQEAgLTg2LDcgKzg2LDYgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBsb2FkQ29tcGxldGVkKCkgY29uc3QgeyByZXR1cm4gbV9sb2FkQ29tcGxl
dGVkOyB9CiAKLSAgICBVUkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0Owog
ICAgIGJvb2wgdHJhdmVyc2VSdWxlcyhjb25zdCBXVEY6OkZ1bmN0aW9uPGJvb2wgKGNvbnN0IFN0
eWxlUnVsZUJhc2UmKT4mIGhhbmRsZXIpIGNvbnN0OwogICAgIGJvb2wgdHJhdmVyc2VTdWJyZXNv
dXJjZXMoY29uc3QgV1RGOjpGdW5jdGlvbjxib29sIChjb25zdCBDYWNoZWRSZXNvdXJjZSYpPiYg
aGFuZGxlcikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUGFyc2VyQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNl
ckNvbnRleHQuY3BwCmluZGV4IDM4ZmQ0NWE5MzhmMmE4NjgzNzUxZWVkNzE0OGM3MjlmMjNhMTNm
ZjEuLmY2MGI3ZTZhYzA3YzRjZjZlMWJkODEwNDM1NGQ0ODhjZjJkNTg1NDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmNwcApAQCAtMjYsNiArMjYs
NyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU1BhcnNlckNvbnRleHQuaCIK
IAorI2luY2x1ZGUgIkNTU0ltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMjIwLDIwICsy
MjEsMTkgQEAgYm9vbCBDU1NQYXJzZXJDb250ZXh0Ojppc1Byb3BlcnR5UnVudGltZURpc2FibGVk
KENTU1Byb3BlcnR5SUQgcHJvcGVydHkpIGNvbnN0CiAgICAgfQogfQogCi1VUkwgQ1NTUGFyc2Vy
Q29udGV4dDo6Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0CitEdWFsTG9jYXRp
b24gQ1NTUGFyc2VyQ29udGV4dDo6Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiBzdHJpbmcpIGNv
bnN0CiB7Ci0gICAgYXV0byBjb21wbGV0ZWRVUkwgPSBbJl0gewotICAgICAgICBpZiAodXJsLmlz
TnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIFVSTCgpOworICAgIGF1dG8gY29tcGxldGVkVVJM
ID0gWyZdICgpIC0+IER1YWxMb2NhdGlvbiB7CisgICAgICAgIGlmIChzdHJpbmcuaXNOdWxsKCkp
CisgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICBpZiAoY2hhcnNldC5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICByZXR1cm4gVVJMKGJhc2VVUkwsIHVybCk7Ci0gICAgICAgIFRleHRFbmNv
ZGluZyBlbmNvZGluZyhjaGFyc2V0KTsKLSAgICAgICAgYXV0byYgZW5jb2RpbmdGb3JVUkxQYXJz
aW5nID0gZW5jb2RpbmcuZW5jb2RpbmdGb3JGb3JtU3VibWlzc2lvbk9yVVJMUGFyc2luZygpOwot
ICAgICAgICByZXR1cm4gVVJMKGJhc2VVUkwsIHVybCwgZW5jb2RpbmdGb3JVUkxQYXJzaW5nID09
IFVURjhFbmNvZGluZygpID8gbnVsbHB0ciA6ICZlbmNvZGluZ0ZvclVSTFBhcnNpbmcpOworICAg
ICAgICAgICAgcmV0dXJuIHsgc3RyaW5nLCBVUkwgeyBiYXNlVVJMLCBzdHJpbmcgfS5zdHJpbmco
KSB9OworICAgICAgICBhdXRvIGVuY29kaW5nRm9yVVJMUGFyc2luZyA9IFRleHRFbmNvZGluZyB7
IGNoYXJzZXQgfS5lbmNvZGluZ0ZvckZvcm1TdWJtaXNzaW9uT3JVUkxQYXJzaW5nKCk7CisgICAg
ICAgIHJldHVybiB7IHN0cmluZywgVVJMIHsgYmFzZVVSTCwgc3RyaW5nLCBlbmNvZGluZ0ZvclVS
TFBhcnNpbmcgPT0gVVRGOEVuY29kaW5nKCkgPyBudWxscHRyIDogJmVuY29kaW5nRm9yVVJMUGFy
c2luZyB9LnN0cmluZygpIH07CiAgICAgfSgpOwogCi0gICAgaWYgKG1vZGUgPT0gV2ViVlRUTW9k
ZSAmJiAhY29tcGxldGVkVVJMLnByb3RvY29sSXNEYXRhKCkpCi0gICAgICAgIHJldHVybiBVUkwo
KTsKKyAgICBpZiAobW9kZSA9PSBXZWJWVFRNb2RlICYmICFwcm90b2NvbElzKGNvbXBsZXRlZFVS
TC5yZXNvbHZlZFVSTFN0cmluZywgImRhdGEiKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAg
IHJldHVybiBjb21wbGV0ZWRVUkw7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlckNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UGFyc2VyQ29udGV4dC5oCmluZGV4IDkxMjA5YjMwNGVjY2QxODI4YmRlNTM1OThlYzU0YmM2NTk3
YTg4NDUuLjJlNzY3Mjc1ZGMxNmJiMTgyMzcxYjliZTVkMmQwNTEwOWVhZjI4YjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oCkBAIC0zNyw2ICszNyw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CiAKK3N0cnVjdCBEdWFs
TG9jYXRpb247CisKIHN0cnVjdCBDU1NQYXJzZXJDb250ZXh0IHsKICAgICBXVEZfTUFLRV9TVFJV
Q1RfRkFTVF9BTExPQ0FURUQ7CiAKQEAgLTg4LDcgKzkwLDcgQEAgc3RydWN0IENTU1BhcnNlckNv
bnRleHQgewogICAgIENTU1BhcnNlckNvbnRleHQoQ1NTUGFyc2VyTW9kZSwgY29uc3QgVVJMJiBi
YXNlVVJMID0gVVJMKCkpOwogICAgIFdFQkNPUkVfRVhQT1JUIENTU1BhcnNlckNvbnRleHQoY29u
c3QgRG9jdW1lbnQmLCBjb25zdCBVUkwmIGJhc2VVUkwgPSBVUkwoKSwgY29uc3QgU3RyaW5nJiBj
aGFyc2V0ID0gZW1wdHlTdHJpbmcoKSk7CiAgICAgYm9vbCBpc1Byb3BlcnR5UnVudGltZURpc2Fi
bGVkKENTU1Byb3BlcnR5SUQpIGNvbnN0OwotICAgIFVSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJp
bmcmIHJlbGF0aXZlVVJMKSBjb25zdDsKKyAgICBEdWFsTG9jYXRpb24gY29tcGxldGVVUkwoY29u
c3QgU3RyaW5nJikgY29uc3Q7CiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTUGFyc2Vy
Q29udGV4dCYsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmNwcAppbmRleCAyNjZlN2JjNzhhZTMxNjVmNzA3MDlj
MmFhM2U0OWIzMmQ2YzBlOTM5Li42NTQ0ZjI2ZjUxYTkyM2VlNjMwZTc5MThkYjkzMzg2ZmNhNWU1
N2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9t
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuY3Bw
CkBAIC00NSw5ICs0NSw0IEBAIGJvb2wgaXNWYWx1ZUFsbG93ZWRJbk1vZGUodW5zaWduZWQgc2hv
cnQgaWQsIENTU1BhcnNlck1vZGUgbW9kZSkKICAgICB9CiB9CiAKLVVSTCBjb21wbGV0ZVVSTChj
b25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHVybCkKLXsKLSAg
ICByZXR1cm4gY29udGV4dC5jb21wbGV0ZVVSTCh1cmwpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklk
aW9tcy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuaAppbmRl
eCAyNTc1YzBkZjJiODdjNTkwNWY3ZGJjMmNlNmZjYzM1NGZiN2E5N2JkLi44MTc0YzczMmU2ODFk
ZDdkM2U0MDEwNDE0ZDBjYjAxYTNlM2M0Y2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VySWRpb21zLmgKQEAgLTU5LDYgKzU5LDQgQEAgYm9vbCBpc05hbWVDb2RlUG9p
bnQoQ2hhcmFjdGVyVHlwZSBjKQogCiBib29sIGlzVmFsdWVBbGxvd2VkSW5Nb2RlKHVuc2lnbmVk
IHNob3J0LCBDU1NQYXJzZXJNb2RlKTsKIAotVVJMIGNvbXBsZXRlVVJMKGNvbnN0IENTU1BhcnNl
ckNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHVybCk7Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKaW5k
ZXggODg0ZjA0MTg4NmFkMzYxMTJmNzU5MzgzNTI5MTFkOTMxNTljMDg2Zi4uZDRlNjA1Y2E3NzQ0
MTY1YmUzYTEzMmI3YWQ5N2Q1ZjRmMmU4ZWU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTIyNTgsMjIgKzIyNTgsMjAgQEAgc3Rh
dGljIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVJ4T3JSeShDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSwgQ1NTUGEKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVDdXJz
b3IoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNv
bnRleHQsIGJvb2wgaW5RdWlya3NNb2RlKQogewogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxp
c3Q7Ci0gICAgd2hpbGUgKFJlZlB0cjxDU1NWYWx1ZT4gaW1hZ2UgPSBjb25zdW1lSW1hZ2UocmFu
Z2UsIGNvbnRleHQsIHsgQWxsb3dlZEltYWdlVHlwZTo6VVJMRnVuY3Rpb24sIEFsbG93ZWRJbWFn
ZVR5cGU6OkltYWdlU2V0IH0pKSB7Ci0gICAgICAgIEludFBvaW50IGhvdFNwb3QoLTEsIC0xKTsK
LSAgICAgICAgYm9vbCBob3RTcG90U3BlY2lmaWVkID0gZmFsc2U7CisgICAgd2hpbGUgKGF1dG8g
aW1hZ2UgPSBjb25zdW1lSW1hZ2UocmFuZ2UsIGNvbnRleHQsIHsgQWxsb3dlZEltYWdlVHlwZTo6
VVJMRnVuY3Rpb24sIEFsbG93ZWRJbWFnZVR5cGU6OkltYWdlU2V0IH0pKSB7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3Q7CiAgICAgICAgIGlmIChhdXRvIHggPSBjb25z
dW1lTnVtYmVyUmF3KHJhbmdlKSkgewotICAgICAgICAgICAgaG90U3BvdC5zZXRYKHN0YXRpY19j
YXN0PGludD4oKngpKTsKICAgICAgICAgICAgIGF1dG8geSA9IGNvbnN1bWVOdW1iZXJSYXcocmFu
Z2UpOwogICAgICAgICAgICAgaWYgKCF5KQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgICAgICAgICAgaG90U3BvdC5zZXRZKHN0YXRpY19jYXN0PGludD4oKnkpKTsKLSAgICAg
ICAgICAgIGhvdFNwb3RTcGVjaWZpZWQgPSB0cnVlOworICAgICAgICAgICAgLy8gRklYTUU6IFNo
b3VsZCB3ZSBjbGFtcCBvciByb3VuZCBpbnN0ZWFkIG9mIGp1c3QgY2FzdGluZyBmcm9tIGRvdWJs
ZSB0byBpbnQ/CisgICAgICAgICAgICBob3RTcG90ID0gSW50UG9pbnQgeyBzdGF0aWNfY2FzdDxp
bnQ+KCp4KSwgc3RhdGljX2Nhc3Q8aW50PigqeSkgfTsKICAgICAgICAgfQogCiAgICAgICAgIGlm
ICghbGlzdCkKICAgICAgICAgICAgIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2Vw
YXJhdGVkKCk7CiAKLSAgICAgICAgbGlzdC0+YXBwZW5kKENTU0N1cnNvckltYWdlVmFsdWU6OmNy
ZWF0ZShpbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCBob3RTcG90U3BlY2lmaWVkLCBob3RTcG90LCBj
b250ZXh0LmlzQ29udGVudE9wYXF1ZSA/IExvYWRlZEZyb21PcGFxdWVTb3VyY2U6OlllcyA6IExv
YWRlZEZyb21PcGFxdWVTb3VyY2U6Ok5vKSk7CisgICAgICAgIGxpc3QtPmFwcGVuZChDU1NDdXJz
b3JJbWFnZVZhbHVlOjpjcmVhdGUoaW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgaG90U3BvdCwgY29u
dGV4dC5pc0NvbnRlbnRPcGFxdWUgPyBMb2FkZWRGcm9tT3BhcXVlU291cmNlOjpZZXMgOiBMb2Fk
ZWRGcm9tT3BhcXVlU291cmNlOjpObykpOwogICAgICAgICBpZiAoIWNvbnN1bWVDb21tYUluY2x1
ZGluZ1doaXRlc3BhY2UocmFuZ2UpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQpAQCAtNDY2OCwzNyArNDY2NiwzMiBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1l
Q291bnRlclN0eWxlU3ltYm9scyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgYwogc3RhdGlj
IFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUNvdW50ZXJTdHlsZUFkZGl0aXZlU3ltYm9scyhDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkK
IHsKICAgICBhdXRvIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQo
KTsKLSAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGxhc3RJbnRlZ2VyOworICAgIHN0ZDo6
b3B0aW9uYWw8aW50PiBsYXN0V2VpZ2h0OwogICAgIGRvIHsKLSAgICAgICAgUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiBpbnRlZ2VyOwotICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHN5bWJvbDsK
LSAgICAgICAgd2hpbGUgKCFpbnRlZ2VyIHx8ICFzeW1ib2wpIHsKLSAgICAgICAgICAgIGlmICgh
aW50ZWdlcikgewotICAgICAgICAgICAgICAgIGludGVnZXIgPSBjb25zdW1lSW50ZWdlcihyYW5n
ZSwgMCk7Ci0gICAgICAgICAgICAgICAgaWYgKGludGVnZXIpCi0gICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFzeW1ib2wpIHsKLSAg
ICAgICAgICAgICAgICBzeW1ib2wgPSBjb25zdW1lQ291bnRlclN0eWxlU3ltYm9sKHJhbmdlLCBj
b250ZXh0KTsKLSAgICAgICAgICAgICAgICBpZiAoc3ltYm9sKQotICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGxhc3RJbnRlZ2VyKSB7Ci0gICAgICAgICAgICAvLyBU
aGUgYWRkaXRpdmUgdHVwbGVzIG11c3QgYmUgc3BlY2lmaWVkIGluIG9yZGVyIG9mIHN0cmljdGx5
IGRlc2NlbmRpbmcKLSAgICAgICAgICAgIC8vIHdlaWdodDsgb3RoZXJ3aXNlLCB0aGUgZGVjbGFy
YXRpb24gaXMgaW52YWxpZCBhbmQgbXVzdCBiZSBpZ25vcmVkLgotICAgICAgICAgICAgaWYgKGlu
dGVnZXItPmludFZhbHVlKCkgPj0gbGFzdEludGVnZXItPmludFZhbHVlKCkpCisgICAgICAgIGF1
dG8gaW50ZWdlciA9IGNvbnN1bWVJbnRlZ2VyKHJhbmdlLCAwKTsKKyAgICAgICAgYXV0byBzeW1i
b2wgPSBjb25zdW1lQ291bnRlclN0eWxlU3ltYm9sKHJhbmdlLCBjb250ZXh0KTsKKyAgICAgICAg
aWYgKCFpbnRlZ2VyKSB7CisgICAgICAgICAgICBpZiAoIXN5bWJvbCkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGludGVnZXIgPSBjb25zdW1lSW50ZWdlcihy
YW5nZSwgMCk7CisgICAgICAgICAgICBpZiAoIWludGVnZXIpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgIH0KLSAgICAgICAgbGFzdEludGVnZXIgPSBpbnRlZ2VyOwot
ICAgICAgICB2YWx1ZXMtPmFwcGVuZChpbnRlZ2VyLnJlbGVhc2VOb25OdWxsKCkpOwotICAgICAg
ICB2YWx1ZXMtPmFwcGVuZChzeW1ib2wucmVsZWFzZU5vbk51bGwoKSk7CisKKyAgICAgICAgLy8g
QWRkaXRpdmUgdHVwbGVzIG11c3QgYmUgc3BlY2lmaWVkIGluIG9yZGVyIG9mIHN0cmljdGx5IGRl
c2NlbmRpbmcgd2VpZ2h0LgorICAgICAgICBhdXRvIHdlaWdodCA9IGludGVnZXItPmludFZhbHVl
KCk7CisgICAgICAgIGlmIChsYXN0V2VpZ2h0ICYmICEod2VpZ2h0IDwgbGFzdFdlaWdodCkpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgbGFzdFdlaWdodCA9IHdlaWdodDsK
KworICAgICAgICBhdXRvIHBhaXIgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVk
KCk7CisgICAgICAgIHBhaXItPmFwcGVuZChpbnRlZ2VyLnJlbGVhc2VOb25OdWxsKCkpOworICAg
ICAgICBwYWlyLT5hcHBlbmQoc3ltYm9sLnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICB2YWx1
ZXMtPmFwcGVuZChXVEZNb3ZlKHBhaXIpKTsKICAgICB9IHdoaWxlIChjb25zdW1lQ29tbWFJbmNs
dWRpbmdXaGl0ZXNwYWNlKHJhbmdlKSk7CiAgICAgaWYgKCFyYW5nZS5hdEVuZCgpIHx8ICF2YWx1
ZXMtPmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gdmFsdWVz
OworICAgIHJldHVybiBXVEZNb3ZlKHZhbHVlcyk7CiB9CiAKIC8vIGh0dHBzOi8vd3d3LnczLm9y
Zy9UUi9jc3MtY291bnRlci1zdHlsZXMtMy8jY291bnRlci1zdHlsZS1zcGVhay1hcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMu
Y3BwCmluZGV4IDk2ODhhNjc2MTg5ODBhOTM2MzBjNDkzODRjYjVlYjU0MTY1NTUwMWUuLjQxY2I0
OTUzNWM4ZThhOWQ4MGE3ZTdjZmUwZjE3MDY3MWViMjZhYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAKQEAgLTM1
MDIsOSArMzUwMiw5IEBAIFJlZlB0cjxDU1NTaGFkb3dWYWx1ZT4gY29uc3VtZVNpbmdsZVNoYWRv
dyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTCiAKIFJlZlB0cjxDU1NWYWx1
ZT4gY29uc3VtZUltYWdlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdCBDU1NQYXJz
ZXJDb250ZXh0JiBjb250ZXh0LCBPcHRpb25TZXQ8QWxsb3dlZEltYWdlVHlwZT4gYWxsb3dlZElt
YWdlVHlwZXMpCiB7Ci0gICAgaWYgKChyYW5nZS5wZWVrKCkudHlwZSgpID09IFN0cmluZ1Rva2Vu
KSAmJiAoYWxsb3dlZEltYWdlVHlwZXMuY29udGFpbnMoQWxsb3dlZEltYWdlVHlwZTo6UmF3U3Ry
aW5nQXNVUkwpKSkgewotICAgICAgICBhdXRvIHVybFN0cmluZ1ZpZXcgPSByYW5nZS5jb25zdW1l
SW5jbHVkaW5nV2hpdGVzcGFjZSgpLnZhbHVlKCk7Ci0gICAgICAgIHJldHVybiBDU1NJbWFnZVZh
bHVlOjpjcmVhdGUoY29tcGxldGVVUkwoY29udGV4dCwgdXJsU3RyaW5nVmlldy50b0F0b21TdHJp
bmcoKSksIGNvbnRleHQuaXNDb250ZW50T3BhcXVlID8gTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZTo6
WWVzIDogTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZTo6Tm8pOworICAgIGlmIChyYW5nZS5wZWVrKCku
dHlwZSgpID09IFN0cmluZ1Rva2VuICYmIGFsbG93ZWRJbWFnZVR5cGVzLmNvbnRhaW5zKEFsbG93
ZWRJbWFnZVR5cGU6OlJhd1N0cmluZ0FzVVJMKSkgeworICAgICAgICByZXR1cm4gQ1NTSW1hZ2VW
YWx1ZTo6Y3JlYXRlKGNvbnRleHQuY29tcGxldGVVUkwocmFuZ2UuY29uc3VtZUluY2x1ZGluZ1do
aXRlc3BhY2UoKS52YWx1ZSgpLnRvQXRvbVN0cmluZygpLnN0cmluZygpKSwKKyAgICAgICAgICAg
IGNvbnRleHQuaXNDb250ZW50T3BhcXVlID8gTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZTo6WWVzIDog
TG9hZGVkRnJvbU9wYXF1ZVNvdXJjZTo6Tm8pOwogICAgIH0KIAogICAgIGlmIChyYW5nZS5wZWVr
KCkudHlwZSgpID09IEZ1bmN0aW9uVG9rZW4pIHsKQEAgLTM1MjEsOSArMzUyMSwxMCBAQCBSZWZQ
dHI8Q1NTVmFsdWU+IGNvbnN1bWVJbWFnZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29u
c3QgQ1NTUGFyc2VyQ29udGV4dAogICAgIH0KIAogICAgIGlmIChhbGxvd2VkSW1hZ2VUeXBlcy5j
b250YWlucyhBbGxvd2VkSW1hZ2VUeXBlOjpVUkxGdW5jdGlvbikpIHsKLSAgICAgICAgYXV0byB1
cmkgPSBjb25zdW1lVXJsQXNTdHJpbmdWaWV3KHJhbmdlKTsKLSAgICAgICAgaWYgKCF1cmkuaXNO
dWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKGNvbXBsZXRl
VVJMKGNvbnRleHQsIHVyaS50b0F0b21TdHJpbmcoKSksIGNvbnRleHQuaXNDb250ZW50T3BhcXVl
ID8gTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZTo6WWVzIDogTG9hZGVkRnJvbU9wYXF1ZVNvdXJjZTo6
Tm8pOworICAgICAgICBpZiAoYXV0byBzdHJpbmcgPSBjb25zdW1lVXJsQXNTdHJpbmdWaWV3KHJh
bmdlKTsgIXN0cmluZy5pc051bGwoKSkgeworICAgICAgICAgICAgcmV0dXJuIENTU0ltYWdlVmFs
dWU6OmNyZWF0ZShjb250ZXh0LmNvbXBsZXRlVVJMKHN0cmluZy50b0F0b21TdHJpbmcoKS5zdHJp
bmcoKSksCisgICAgICAgICAgICAgICAgY29udGV4dC5pc0NvbnRlbnRPcGFxdWUgPyBMb2FkZWRG
cm9tT3BhcXVlU291cmNlOjpZZXMgOiBMb2FkZWRGcm9tT3BhcXVlU291cmNlOjpObyk7CisgICAg
ICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJXb3JrZXJTYWZlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJXb3JrZXJTYWZlLmNwcAppbmRl
eCBmZDk1Mzc4YmY4YjYzY2FmNzdkZWY0MjEyNGZmODJkN2NjMGUwMWM2Li45NTU2NTQxMWFjNmI1
MDZjZjI4ZDUyMTg0ODhhNDNkMGFiY2YyMWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyV29ya2VyU2FmZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlcldvcmtlclNhZmUuY3BwCkBAIC0xOTgs
MjggKzE5OCwyOCBAQCBSZWZQdHI8Q1NTVmFsdWU+IENTU1Byb3BlcnR5UGFyc2VyV29ya2VyU2Fm
ZTo6cGFyc2VGb250RmFjZURpc3BsYXkoY29uc3QgU3RyaW5nJgogCiBuYW1lc3BhY2UgQ1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzV29ya2VyU2FmZSB7CiAKLXN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+
IGNvbnN1bWVGb250RmFjZVNyY1VSSShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3Qg
Q1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKK3N0YXRpYyBSZWZQdHI8Q1NTRm9udEZhY2VTcmNW
YWx1ZT4gY29uc3VtZUZvbnRGYWNlU3JjVVJJKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBj
b25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0KQogewotICAgIFN0cmluZyB1cmwgPSBDU1NQ
cm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVVcmxBc1N0cmluZ1ZpZXcocmFuZ2UpLnRvU3Ry
aW5nKCk7Ci0gICAgaWYgKHVybC5pc051bGwoKSkKKyAgICBhdXRvIGxvY2F0aW9uID0gY29udGV4
dC5jb21wbGV0ZVVSTChDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVVcmxBc1N0cmlu
Z1ZpZXcocmFuZ2UpLnRvU3RyaW5nKCkpLnJlc29sdmVkVVJMU3RyaW5nOworICAgIGlmIChsb2Nh
dGlvbi5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8Q1NT
Rm9udEZhY2VTcmNWYWx1ZT4gdXJpVmFsdWUgPSBDU1NGb250RmFjZVNyY1ZhbHVlOjpjcmVhdGUo
Y29udGV4dC5jb21wbGV0ZVVSTCh1cmwpLnN0cmluZygpLCBjb250ZXh0LmlzQ29udGVudE9wYXF1
ZSA/IExvYWRlZEZyb21PcGFxdWVTb3VyY2U6OlllcyA6IExvYWRlZEZyb21PcGFxdWVTb3VyY2U6
Ok5vKTsKLQotICAgIGlmIChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpICE9IENTU1ZhbHVlRm9y
bWF0KQotICAgICAgICByZXR1cm4gdXJpVmFsdWU7CisgICAgU3RyaW5nIGZvcm1hdDsKKyAgICBp
ZiAocmFuZ2UucGVlaygpLmZ1bmN0aW9uSWQoKSA9PSBDU1NWYWx1ZUZvcm1hdCkgeworICAgICAg
ICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWZvbnRzLyNkZXNjZGVmLWZvbnQtZmFj
ZS1zcmMKKyAgICAgICAgLy8gRklYTUU6IFRoZSBmb3JtYXQgc2hvdWxkIGJlIGEgY29tbWEtc2Vw
YXJhdGVkIGxpc3Q7IGF0IHRoaXMgdGltZSB3ZSBzdXBwb3J0IG9ubHkgb25lLgorICAgICAgICAv
LyBGSVhNRTogV2UgYWxsb3cgYW55IGlkZW50aWZpZXIgaGVyZSBhbmQgY29udmVydCBhbGwgdG8g
c3RyaW5nczsgc3BlY2lmaWNhdGlvbiBjYWxscyBmb3Igb25seSBjZXJ0YWluIGlkZW50aWZpZXJz
LgorICAgICAgICBhdXRvIGFyZ3MgPSBDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVG
dW5jdGlvbihyYW5nZSk7CisgICAgICAgIGF1dG8mIGFyZyA9IGFyZ3MuY29uc3VtZUluY2x1ZGlu
Z1doaXRlc3BhY2UoKTsKKyAgICAgICAgaWYgKChhcmcudHlwZSgpICE9IFN0cmluZ1Rva2VuICYm
IGFyZy50eXBlKCkgIT0gSWRlbnRUb2tlbikgfHwgIWFyZ3MuYXRFbmQoKSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICBmb3JtYXQgPSBhcmcudmFsdWUoKS50b1N0cmluZygp
OworICAgIH0KIAotICAgIC8vIEZJWE1FOiBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLWZv
bnRzIHNheXMgdGhhdCBmb3JtYXQoKSBjb250YWlucyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9m
IHN0cmluZ3MsCi0gICAgLy8gYnV0IENTU0ZvbnRGYWNlU3JjVmFsdWUgc3RvcmVzIG9ubHkgb25l
IGZvcm1hdC4gQWxsb3dpbmcgb25lIGZvcm1hdCBmb3Igbm93LgotICAgIC8vIEZJWE1FOiBXZSdy
ZSBhbGxvd2luZyB0aGUgZm9ybWF0IHRvIGJlIGFuIGlkZW50aWZpZXIgYXMgd2VsbCBhcyBhIHN0
cmluZywgYmVjYXVzZSB0aGUgb2xkCi0gICAgLy8gcGFyc2VyIGRpZC4gSXQncyBub3QgY2xlYXIg
aWYgd2UgbmVlZCB0byBjb250aW51ZSB0byBzdXBwb3J0IHRoaXMgYmVoYXZpb3IsIGJ1dCB3ZSBo
YXZlIGxvdHMgb2YKLSAgICAvLyBsYXlvdXQgdGVzdHMgdGhhdCByZWx5IG9uIGl0LgotICAgIENT
U1BhcnNlclRva2VuUmFuZ2UgYXJncyA9IENTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3Vt
ZUZ1bmN0aW9uKHJhbmdlKTsKLSAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgYXJnID0gYXJncy5j
b25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOwotICAgIGlmICgoYXJnLnR5cGUoKSAhPSBTdHJp
bmdUb2tlbiAmJiBhcmcudHlwZSgpICE9IElkZW50VG9rZW4pIHx8ICFhcmdzLmF0RW5kKCkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHVyaVZhbHVlLT5zZXRGb3JtYXQoYXJnLnZhbHVl
KCkudG9TdHJpbmcoKSk7Ci0gICAgcmV0dXJuIHVyaVZhbHVlOworICAgIC8vIEZJWE1FOiBDaGFu
Z2UgQ1NTRm9udEZhY2VTcmNWYWx1ZTo6Y3JlYXRlIHRvIHRha2UgZm9ybWF0IHNvIHdlIGRvbid0
IG5lZWQgYSBzZXBhcmF0ZSBzZXRGb3JtYXQgY2FsbC4KKyAgICBhdXRvIHNyY1ZhbHVlID0gQ1NT
Rm9udEZhY2VTcmNWYWx1ZTo6Y3JlYXRlKGxvY2F0aW9uLCBjb250ZXh0LmlzQ29udGVudE9wYXF1
ZSA/IExvYWRlZEZyb21PcGFxdWVTb3VyY2U6OlllcyA6IExvYWRlZEZyb21PcGFxdWVTb3VyY2U6
Ok5vKTsKKyAgICBzcmNWYWx1ZS0+c2V0Rm9ybWF0KGZvcm1hdCk7CisgICAgcmV0dXJuIFdURk1v
dmUoc3JjVmFsdWUpOwogfQogCiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lRm9udEZh
Y2VTcmNMb2NhbChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IGU5NDQ2ZWQ3NjJhN2JkMjAx
MjBjZjBkZjRkMzZmODgzOWI1MmFkYzQuLmIzMTllY2Y1YTMyMmQwODA0NTYxZTlkODdhNDI3ODQ0
MDA2NmQ1OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcApAQCAtMTI2MSwxMiArMTI2MSwxNCBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRDbGlw
KExlbmd0aCYmIHRvcCwgTGVuZ3RoJiYgcmlnaHQsIExlbmd0aCYmIGJvdHRvbSwgTGVuZ3RoJgog
ICAgIGRhdGEuY2xpcC5sZWZ0KCkgPSBXVEZNb3ZlKGxlZnQpOwogfQogCi12b2lkIFJlbmRlclN0
eWxlOjphZGRDdXJzb3IoUmVmUHRyPFN0eWxlSW1hZ2U+JiYgaW1hZ2UsIGNvbnN0IEludFBvaW50
JiBob3RTcG90KQordm9pZCBSZW5kZXJTdHlsZTo6YWRkQ3Vyc29yKFJlZlB0cjxTdHlsZUltYWdl
PiYmIGltYWdlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiYgaG90U3BvdCkKIHsKICAg
ICBhdXRvJiBjdXJzb3JEYXRhID0gbV9yYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS5jdXJzb3JE
YXRhOwogICAgIGlmICghY3Vyc29yRGF0YSkKICAgICAgICAgY3Vyc29yRGF0YSA9IEN1cnNvckxp
c3Q6OmNyZWF0ZSgpOwotICAgIGN1cnNvckRhdGEtPmFwcGVuZChDdXJzb3JEYXRhKFdURk1vdmUo
aW1hZ2UpLCBob3RTcG90KSk7CisgICAgLy8gUG9pbnQgb3V0c2lkZSB0aGUgaW1hZ2UgaXMgaG93
IHdlIHRlbGwgdGhlIGN1cnNvciBtYWNoaW5lcnkgdGhlcmUgaXMgbm8gaG90IHNwb3QsIGFuZCBp
dCBzaG91bGQgZ2VuZXJhdGUgb25lIChkb25lIGluIHRoZSBDdXJzb3IgY2xhc3MpLgorICAgIC8v
IEZJWE1FOiBXb3VsZCBpdCBiZSBiZXR0ZXIgdG8gZXh0ZW5kIHRoZSBjb25jZXB0IG9mICJubyBo
b3Qgc3BvdCIgZGVlcGVyLCBpbnRvIEN1cnNvckRhdGEgYW5kIGJleW9uZCwgcmF0aGVyIHRoYW4g
dXNpbmcgLTEvLTEgZm9yIGl0PworICAgIGN1cnNvckRhdGEtPmFwcGVuZChDdXJzb3JEYXRhKFdU
Rk1vdmUoaW1hZ2UpLCBob3RTcG90LnZhbHVlX29yKEludFBvaW50IHsgLTEsIC0xIH0pKSk7CiB9
CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldEN1cnNvckxpc3QoUmVmUHRyPEN1cnNvckxpc3Q+JiYg
bGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5k
ZXggOTNkOTU3MWU2ZGU1NTU3YTc2Y2QwNDk1ZDQyNTU5MGI2YTBmZWE3MS4uM2JhZDNjZDIyZGUx
ZGJiNDBmN2QyMDA3ZGI2ZjgwNzAyMGNmOTgzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTEwNzEsNyArMTA3MSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFBhZGRpbmdSaWdodChMZW5ndGgmJiBsZW5ndGgpIHsgU0VUX1ZBUihtX3N1cnJv
dW5kRGF0YSwgcGFkZGluZy5yaWdodCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CiAKICAgICB2b2lk
IHNldEN1cnNvcihDdXJzb3JUeXBlIGMpIHsgbV9pbmhlcml0ZWRGbGFncy5jdXJzb3IgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oYyk7IH0KLSAgICB2b2lkIGFkZEN1cnNvcihSZWZQdHI8U3R5bGVJ
bWFnZT4mJiwgY29uc3QgSW50UG9pbnQmIGhvdFNwb3QgPSBJbnRQb2ludCgpKTsKKyAgICB2b2lk
IGFkZEN1cnNvcihSZWZQdHI8U3R5bGVJbWFnZT4mJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxJbnRQ
b2ludD4mIGhvdFNwb3QpOwogICAgIHZvaWQgc2V0Q3Vyc29yTGlzdChSZWZQdHI8Q3Vyc29yTGlz
dD4mJik7CiAgICAgdm9pZCBjbGVhckN1cnNvckxpc3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IDUwMTUwYTNi
NDM5MTE4ZDQ0YTcyYjE5MDYzNmFiMWUyMTYwNjFmMmEuLmU0NDkyYTk0ZTRmNzNmMjA4MTYzNGJl
NDQ1ODg5NGNkNjJmY2MwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgYm9vbCBTdHlsZUNh
Y2hlZEltYWdlOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlSW1hZ2UmIG90aGVyKSBjb25zdAogCiBV
UkwgU3R5bGVDYWNoZWRJbWFnZTo6aW1hZ2VVUkwoKQogewotICAgIHJldHVybiBtX2Nzc1ZhbHVl
LT51cmwoKTsKKyAgICByZXR1cm4geyB7IH0sIG1fY3NzVmFsdWUtPmxvY2F0aW9uKCkgfTsKIH0K
IAogdm9pZCBTdHlsZUNhY2hlZEltYWdlOjpsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyJiBsb2Fk
ZXIsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1cnNvckltYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1cnNvckltYWdlLmNwcAppbmRleCAzZjYz
YjcxNzdhZmI1ZTBjZWY4Yzc1YmVjN2JkNTE3YmJiNzM1YThmLi5hMTAxZjZlOTQ2NDgxN2ViMDll
MzJmZWU3MDYzZTA4YjhjNTQ1MzA3IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVDdXJzb3JJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlQ3Vyc29ySW1hZ2UuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgU3R5
bGVDdXJzb3JJbWFnZTo6c2V0Q29udGFpbmVyQ29udGV4dEZvclJlbmRlcmVyKGNvbnN0IFJlbmRl
ckVsZW1lbnQmIHJlbmRlCiB7CiAgICAgaWYgKCFoYXNDYWNoZWRJbWFnZSgpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgY2FjaGVkSW1hZ2UoKS0+c2V0Q29udGFpbmVyQ29udGV4dEZvckNsaWVudChy
ZW5kZXJlciwgTGF5b3V0U2l6ZShjb250YWluZXJTaXplKSwgY29udGFpbmVyWm9vbSwgbV9jc3NW
YWx1ZS0+aW1hZ2VVUkwoKSk7CisgICAgY2FjaGVkSW1hZ2UoKS0+c2V0Q29udGFpbmVyQ29udGV4
dEZvckNsaWVudChyZW5kZXJlciwgTGF5b3V0U2l6ZShjb250YWluZXJTaXplKSwgY29udGFpbmVy
Wm9vbSwgeyB7IH0sIG1fY3NzVmFsdWUtPmxvY2F0aW9uKCkgfSk7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlckN1c3RvbS5oIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKaW5kZXggZjZlNmY3YTgyNzA3OWQ2NGY3
M2U4MTYwNmMxYzY3ZDgzNjRmOWRmMC4uZDcxNzlhMGViZTc0OWU3NjdkODIzZWVmNTQ4MTdmMmYx
NWRiOWFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3Vz
dG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKQEAg
LTE1MzgsMTkgKzE1MzgsMTkgQEAgaW5saW5lIHZvaWQgQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1
ZUNvbnRlbnQoQnVpbGRlclN0YXRlJiBidWlsZGVyU3RhdGUsIENTU1ZhbHUKICAgICBmb3IgKGF1
dG8mIGl0ZW0gOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgewogICAgICAgICBpZiAo
aXM8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZT4oaXRlbSkpIHsKICAgICAgICAgICAgIGlmIChpczxD
U1NHcmFkaWVudFZhbHVlPihpdGVtKSkKLSAgICAgICAgICAgICAgICBidWlsZGVyU3RhdGUuc3R5
bGUoKS5zZXRDb250ZW50KFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNyZWF0ZShkb3duY2FzdDxDU1NH
cmFkaWVudFZhbHVlPihpdGVtLmdldCgpKS5ncmFkaWVudFdpdGhTdHlsZXNSZXNvbHZlZChidWls
ZGVyU3RhdGUpKSwgZGlkU2V0KTsKKyAgICAgICAgICAgICAgICBidWlsZGVyU3RhdGUuc3R5bGUo
KS5zZXRDb250ZW50KFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNyZWF0ZShkb3duY2FzdDxDU1NHcmFk
aWVudFZhbHVlPihidWlsZGVyU3RhdGUucmVzb2x2ZUltYWdlU3R5bGVzKGl0ZW0uZ2V0KCkpLmdl
dCgpKSksIGRpZFNldCk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYnVpbGRl
clN0YXRlLnN0eWxlKCkuc2V0Q29udGVudChTdHlsZUdlbmVyYXRlZEltYWdlOjpjcmVhdGUoZG93
bmNhc3Q8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZT4oaXRlbS5nZXQoKSkpLCBkaWRTZXQpOworICAg
ICAgICAgICAgICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNldENvbnRlbnQoU3R5bGVHZW5lcmF0
ZWRJbWFnZTo6Y3JlYXRlKGRvd25jYXN0PENTU0ltYWdlR2VuZXJhdG9yVmFsdWU+KGJ1aWxkZXJT
dGF0ZS5yZXNvbHZlSW1hZ2VTdHlsZXMoaXRlbS5nZXQoKSkuZ2V0KCkpKSwgZGlkU2V0KTsKICAg
ICAgICAgICAgIGRpZFNldCA9IHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAg
aWYgKGlzPENTU0ltYWdlU2V0VmFsdWU+KGl0ZW0pKSB7Ci0gICAgICAgICAgICBidWlsZGVyU3Rh
dGUuc3R5bGUoKS5zZXRDb250ZW50KFN0eWxlSW1hZ2VTZXQ6OmNyZWF0ZShkb3duY2FzdDxDU1NJ
bWFnZVNldFZhbHVlPihpdGVtLmdldCgpKS5pbWFnZVNldFdpdGhTdHlsZXNSZXNvbHZlZChidWls
ZGVyU3RhdGUpKSwgZGlkU2V0KTsKKyAgICAgICAgICAgIGJ1aWxkZXJTdGF0ZS5zdHlsZSgpLnNl
dENvbnRlbnQoU3R5bGVJbWFnZVNldDo6Y3JlYXRlKGRvd25jYXN0PENTU0ltYWdlU2V0VmFsdWU+
KGJ1aWxkZXJTdGF0ZS5yZXNvbHZlSW1hZ2VTdHlsZXMoaXRlbS5nZXQoKSkuZ2V0KCkpKSwgZGlk
U2V0KTsKICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7CiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoaXM8Q1NTSW1hZ2VWYWx1ZT4oaXRlbSkpIHsKLSAgICAgICAgICAgIGJ1aWxkZXJTdGF0ZS5z
dHlsZSgpLnNldENvbnRlbnQoU3R5bGVDYWNoZWRJbWFnZTo6Y3JlYXRlKGRvd25jYXN0PENTU0lt
YWdlVmFsdWU+KGl0ZW0uZ2V0KCkpKSwgZGlkU2V0KTsKKyAgICAgICAgICAgIGJ1aWxkZXJTdGF0
ZS5zdHlsZSgpLnNldENvbnRlbnQoU3R5bGVDYWNoZWRJbWFnZTo6Y3JlYXRlKGRvd25jYXN0PENT
U0ltYWdlVmFsdWU+KGJ1aWxkZXJTdGF0ZS5yZXNvbHZlSW1hZ2VTdHlsZXMoaXRlbS5nZXQoKSku
Z2V0KCkpKSwgZGlkU2V0KTsKICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7CiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVCdWlsZGVyU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVy
U3RhdGUuY3BwCmluZGV4IGM2NmM4YjI3YTY1YTg0NGI2NzRlZjFlZWEwZjhhZmFhMDIzMzNlZWIu
LmI0MjI5YTExMDA5NjZmYWIwZGE5M2ZmY2ZjN2E3YmY2MzA1ZjA0YmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlclN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJTdGF0ZS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTdHlsZUJ1aWxkZXJTdGF0ZS5oIgogCisjaW5jbHVk
ZSAiQ1NTQ3Jvc3NmYWRlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NDdXJzb3JJbWFnZVZhbHVlLmgi
CiAjaW5jbHVkZSAiQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ZvbnRTZWxl
Y3Rvci5oIgpAQCAtNDEsNyArNDIsNiBAQAogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1
ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKLSNpbmNsdWRlICJT
VkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCiAjaW5jbHVkZSAiU3R5bGVCdWlsZGVyLmgiCkBAIC04NCwzMyArODQsMzEgQEAgYm9v
bCBCdWlsZGVyU3RhdGU6OnVzZVNWR1pvb21SdWxlc0Zvckxlbmd0aCgpIGNvbnN0CiAKIFJlZjxD
U1NWYWx1ZT4gQnVpbGRlclN0YXRlOjpyZXNvbHZlSW1hZ2VTdHlsZXMoQ1NTVmFsdWUmIHZhbHVl
KQogeworICAgIGlmIChpczxDU1NDcm9zc2ZhZGVWYWx1ZT4odmFsdWUpKQorICAgICAgICByZXR1
cm4gZG93bmNhc3Q8Q1NTQ3Jvc3NmYWRlVmFsdWU+KHZhbHVlKS52YWx1ZVdpdGhTdHlsZXNSZXNv
bHZlZCgqdGhpcyk7CisgICAgaWYgKGlzPENTU0N1cnNvckltYWdlVmFsdWU+KHZhbHVlKSkKKyAg
ICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0N1cnNvckltYWdlVmFsdWU+KHZhbHVlKS52YWx1ZVdp
dGhTdHlsZXNSZXNvbHZlZCgqdGhpcyk7CisgICAgaWYgKGlzPENTU0ZpbHRlckltYWdlVmFsdWU+
KHZhbHVlKSkKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0ZpbHRlckltYWdlVmFsdWU+KHZh
bHVlKS52YWx1ZVdpdGhTdHlsZXNSZXNvbHZlZCgqdGhpcyk7CiAgICAgaWYgKGlzPENTU0dyYWRp
ZW50VmFsdWU+KHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0dyYWRpZW50VmFs
dWU+KHZhbHVlKS5ncmFkaWVudFdpdGhTdHlsZXNSZXNvbHZlZCgqdGhpcyk7Ci0KKyAgICAgICAg
cmV0dXJuIGRvd25jYXN0PENTU0dyYWRpZW50VmFsdWU+KHZhbHVlKS52YWx1ZVdpdGhTdHlsZXNS
ZXNvbHZlZCgqdGhpcyk7CiAgICAgaWYgKGlzPENTU0ltYWdlU2V0VmFsdWU+KHZhbHVlKSkKLSAg
ICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0ltYWdlU2V0VmFsdWU+KHZhbHVlKS5pbWFnZVNldFdp
dGhTdHlsZXNSZXNvbHZlZCgqdGhpcyk7Ci0KLSAgICAvLyBDcmVhdGluZyBmaWx0ZXIgb3BlcmF0
aW9ucyBkb2Vzbid0IGNyZWF0ZSBhIG5ldyBDU1NWYWx1ZSByZWZlcmVuY2UuCi0gICAgaWYgKGlz
PENTU0ZpbHRlckltYWdlVmFsdWU+KHZhbHVlKSkKLSAgICAgICAgZG93bmNhc3Q8Q1NTRmlsdGVy
SW1hZ2VWYWx1ZT4odmFsdWUpLmNyZWF0ZUZpbHRlck9wZXJhdGlvbnMoKnRoaXMpOwotCisgICAg
ICAgIHJldHVybiBkb3duY2FzdDxDU1NJbWFnZVNldFZhbHVlPih2YWx1ZSkudmFsdWVXaXRoU3R5
bGVzUmVzb2x2ZWQoKnRoaXMpOworICAgIGlmIChpczxDU1NJbWFnZVZhbHVlPih2YWx1ZSkpCisg
ICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NJbWFnZVZhbHVlPih2YWx1ZSkudmFsdWVXaXRoU3R5
bGVzUmVzb2x2ZWQoKnRoaXMpOwogICAgIHJldHVybiBtYWtlUmVmKHZhbHVlKTsKIH0KIAogUmVm
UHRyPFN0eWxlSW1hZ2U+IEJ1aWxkZXJTdGF0ZTo6Y3JlYXRlU3R5bGVJbWFnZShDU1NWYWx1ZSYg
dmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU0ltYWdlVmFsdWU+KHZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIFN0eWxlQ2FjaGVkSW1hZ2U6OmNyZWF0ZShkb3duY2FzdDxDU1NJbWFnZVZhbHVlPih2YWx1
ZSkpOwotCisgICAgICAgIHJldHVybiBTdHlsZUNhY2hlZEltYWdlOjpjcmVhdGUoZG93bmNhc3Q8
Q1NTSW1hZ2VWYWx1ZT4ocmVzb2x2ZUltYWdlU3R5bGVzKHZhbHVlKS5nZXQoKSkpOwogICAgIGlm
IChpczxDU1NDdXJzb3JJbWFnZVZhbHVlPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiBTdHlsZUN1
cnNvckltYWdlOjpjcmVhdGUoZG93bmNhc3Q8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZT4odmFsdWUpKTsK
LQorICAgICAgICByZXR1cm4gU3R5bGVDdXJzb3JJbWFnZTo6Y3JlYXRlKGRvd25jYXN0PENTU0N1
cnNvckltYWdlVmFsdWU+KHJlc29sdmVJbWFnZVN0eWxlcyh2YWx1ZSkuZ2V0KCkpKTsKICAgICBp
ZiAoaXM8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZT4odmFsdWUpKQogICAgICAgICByZXR1cm4gU3R5
bGVHZW5lcmF0ZWRJbWFnZTo6Y3JlYXRlKGRvd25jYXN0PENTU0ltYWdlR2VuZXJhdG9yVmFsdWU+
KHJlc29sdmVJbWFnZVN0eWxlcyh2YWx1ZSkuZ2V0KCkpKTsKLSAgICAKICAgICBpZiAoaXM8Q1NT
SW1hZ2VTZXRWYWx1ZT4odmFsdWUpKQogICAgICAgICByZXR1cm4gU3R5bGVJbWFnZVNldDo6Y3Jl
YXRlKGRvd25jYXN0PENTU0ltYWdlU2V0VmFsdWU+KHJlc29sdmVJbWFnZVN0eWxlcyh2YWx1ZSku
Z2V0KCkpKTsKLQogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzNmZWM4ZDllY2Iy
YzRlNWExMjc3ZWUzYzZiOThkMDY0NzFjMmRiMi4uMDg5NmQ3NTlhOGI3M2Y2Nzc4OWI2YzI2ZTQx
ZGZhZTRmMTE5MDZjOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIxLTA2LTE1ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggQ1NTIHNlcmlhbGl6YXRpb24g
aXNzdWVzIGFmZmVjdGluZyBjc3MtY291bnRlci1zdHlsZXMgdGVzdHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjcwOAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9jc3MvcGFyc2UtYm9yZGVy
LWltYWdlLXJlcGVhdC1udWxsLWNyYXNoLWV4cGVjdGVkLnR4dDogVXBkYXRlIHRvIHJlZmxlY3Qg
Y29ycmVjdAorICAgICAgICBwYXRoOyB0aGUgcGF0aCBpcyBub3QgcmVhbGx5IHJlbGV2YW50IHRv
IHdoYXQgd2FzIGJlaW5nIHRlc3RlZCBoZXJlIGVpdGhlciB3YXkuCisKKyAgICAgICAgKiBmYXN0
L2Nzcy91cmktdG9rZW4tcGFyc2luZy1leHBlY3RlZC50eHQ6IFVwZGF0ZWQgdG8gZXhwZWN0IGJl
aGF2aW9yIHRoYXQgaXMgc2Vuc2libGUKKyAgICAgICAgYW5kIGFsc28gbWF0Y2hlcyBGaXJlZm94
LgorICAgICAgICAqIGZhc3QvY3NzL3VyaS10b2tlbi1wYXJzaW5nLmh0bWw6IERpdHRvLgorCisg
ICAgICAgICogZmFzdC9mYXN0L2Nzcy91cmwtd2l0aC1tdWx0aS1ieXRlLXVuaWNvZGUtZXNjYXBl
LWV4cGVjdGVkLnR4dDogVXBkYXRlZCB0byBleHBlY3QgdGhhdAorICAgICAgICBVUkwgaXMgc3Rp
bGwgZW5jb2RlZCBhcyBVVEYtOCwgbm90IHlldCByZS1VUkwtZW5jb2RlZCBhcyBpdCB3aWxsIGJl
IGZvciBsb2FkaW5nLiBUaGUKKyAgICAgICAgb25lIHRoYXQgd2lsbCBiZSB1c2VkIGZvciBsb2Fk
aW5nIGNhbiBzdGlsbCBiZSBzZWVuIGluIGNvbXB1dGVkIHN0eWxlLiBUaGUgdGVzdCBzdGlsbAor
ICAgICAgICBjb3ZlcnMgY29ycmVjbHR5IHBhcnNpZyB0aGlzIFVSTC4KKyAgICAgICAgKiBmYXN0
L2Zhc3QvY3NzL3VybC13aXRoLW11bHRpLWJ5dGUtdW5pY29kZS1lc2NhcGUuaHRtbDogRGl0dG8u
CisKKyAgICAgICAgKiBmYXN0L2ZpbHRlci1pbWFnZS9wYXJzZS1maWx0ZXItaW1hZ2UtZXhwZWN0
ZWQudHh0OiBVcGRhdGVkIHRvIG5vIGxvbmdlciB0ZXN0IGFkZGl0aW9uCisgICAgICAgIG9mIHRy
YWlsaW5nIHNsYXNoZXMgdG8gcGVjdWxpYXIgVVJMcyB0aGF0IGFyZSBtYWRlIGJ5IHVzaW5nIGZp
bGVuYW1lcyBhcyBob3N0IG5hbWVzLgorICAgICAgICBOb3cgdGhpcyBjaGVja3MgVVJMcyB0aGF0
IGp1c3QgY29udGFpbiBmaWxlbmFtZXMsIHdoaWNoIG1ha2VzIG1vcmUgbG9naWNhbCBzZW5zZSwg
YW5kCisgICAgICAgIG5vIHRyYWlsaW5nIHNsYXNoIGFkZGl0aW9uIGlzIGV4cGVjdGVkLgorICAg
ICAgICAqIGZhc3QvZmlsdGVyLWltYWdlL3BhcnNlLWZpbHRlci1pbWFnZS5odG1sOiBEaXR0by4K
KworICAgICAgICAqIGZhc3QvaW5uZXJIVE1ML2lubmVySFRNTC11cmktcmVzb2x1dGlvbi5odG1s
OiBVcGRhdGVkIHRlc3QgdG8gdXNlIGNvbXB1dGVkIHN0eWxlIHNvCisgICAgICAgIGl0IG5vIGxv
bmdlciBkZXBlbmRzIG9uIFdlYktpdC1vbmx5IGJlaGF2aW9yIHRvIHJ1biBjb3JyZWN0bHkuCisK
IDIwMjEtMDYtMTUgIERpZWdvIFBpbm8gR2FyY2lhICA8ZHBpbm9AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR0xJQl0gVW5yZXZpZXdlZCB0ZXN0IGdhcmRlbmluZy4gVXBkYXRlZCB0ZXN0IGV4cGVj
dGF0aW9ucyBhZnRlciByMjc3ODk2LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXgg
ZDAzYTljODk4MzhiYjBhZTljODZjOWZlYWE4NWUwYTdlMmRlNWZiYi4uMjZlMDcwMmZlNjI3M2Zh
ZDE3MzZkYzM3NWNiZmZjYWIzYTI0NGViMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDYtMTUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIEZpeCBDU1Mgc2VyaWFsaXphdGlvbiBpc3N1ZXMgYWZmZWN0aW5nIGNz
cy1jb3VudGVyLXN0eWxlcyB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI2NzA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb3VudGVyLXN0eWxl
cy9jb3VudGVyLXN0eWxlLWFkZGl0aXZlLXN5bWJvbHMtc3ludGF4LWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb3VudGVyLXN0eWxlcy9jb3VudGVy
LXN0eWxlLXN5bWJvbHMtc3ludGF4LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1zeW50YXgvdXJsLXdoaXRlc3BhY2UtY29uc3VtcHRpb24tZXhwZWN0
ZWQudHh0OgorICAgICAgICBVcGRhdGVkIHRvIHJlZmxlY3QgcHJvZ3Jlc3Npb25zLgorCiAyMDIx
LTA2LTE1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgQ2hlY2sgZm9yICJ4bi0tIiBpbiBhbnkgc3ViZG9tYWluIHdoZW4gcGFyc2luZyBVUkwg
aG9zdHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BhcnNlLWJvcmRlci1pbWFn
ZS1yZXBlYXQtbnVsbC1jcmFzaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9w
YXJzZS1ib3JkZXItaW1hZ2UtcmVwZWF0LW51bGwtY3Jhc2gtZXhwZWN0ZWQudHh0CmluZGV4IGMw
MjJmOTgxNGRiZWRhOTcxODQyNTdjYTA1NGMxMzBkNGE5Njg5MzEuLmU5ZWE1NDBhMjNkNWVhMDgx
YTc2Yzc0ZjBmMzAyZGFmMjIwY2NiZTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3Nz
L3BhcnNlLWJvcmRlci1pbWFnZS1yZXBlYXQtbnVsbC1jcmFzaC1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvcGFyc2UtYm9yZGVyLWltYWdlLXJlcGVhdC1udWxsLWNyYXNo
LWV4cGVjdGVkLnR4dApAQCAtMSwyICsxLDIgQEAKLUNPTlNPTEUgTUVTU0FHRTogYm9yZGVyLWlt
YWdlLXNvdXJjZTogdXJsKCJzaGFkb3ctYm9yZGVyLnBuZyIpOyBib3JkZXItaW1hZ2Utc2xpY2U6
IDEwOyBib3JkZXItaW1hZ2UtcmVwZWF0OiBzdHJldGNoOworQ09OU09MRSBNRVNTQUdFOiBib3Jk
ZXItaW1hZ2Utc291cmNlOiB1cmwoImltYWdlcy9zaGFkb3ctYm9yZGVyLnBuZyIpOyBib3JkZXIt
aW1hZ2Utc2xpY2U6IDEwOyBib3JkZXItaW1hZ2UtcmVwZWF0OiBzdHJldGNoOwogVGhpcyB0ZXN0
IHNob3VsZCBub3QgY3Jhc2gKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3VyaS10
b2tlbi1wYXJzaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3VyaS10b2tl
bi1wYXJzaW5nLWV4cGVjdGVkLnR4dAppbmRleCA5Y2MwZTQzODZiNTI3NTI0MGVmY2VhOTQ5ODc0
OGVlYTMyMTBhMTczLi43YjViNDhmM2IxMTgwNTk1NWNjODQ0MDI2ZDczMmYzZWUxYTNkOTVjIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy91cmktdG9rZW4tcGFyc2luZy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdXJpLXRva2VuLXBhcnNpbmctZXhwZWN0
ZWQudHh0CkBAIC05LDE0ICs5LDE0IEBAIFJ1bGVzIGZyb20gdGhlIHN0eWxlc2hlZXQ6CiAjYyB7
IGNvbnRlbnQ6IHVybCgiZSIpOyB9CiAjZCB7IGNvbnRlbnQ6IHVybCgiZiIpOyB9CiAjZiB7IGNv
bnRlbnQ6IHVybCgiYyIpOyB9Ci0jZyB7IGNvbnRlbnQ6IHVybCgiZCIpOyB9Ci0jaCB7IGNvbnRl
bnQ6IHVybCgiZSIpOyB9Ci0jaSB7IGNvbnRlbnQ6IHVybCgiZiIpOyB9CisjZyB7IGNvbnRlbnQ6
IHVybCgiIGQiKTsgfQorI2ggeyBjb250ZW50OiB1cmwoImUgIik7IH0KKyNpIHsgY29udGVudDog
dXJsKCIgZiAiKTsgfQogI2ogeyBjb250ZW50OiB1cmwoInVybChnKSIpOyB9CiAjbCB7IGNvbnRl
bnQ6IHVybCgiYyIpOyB9Ci0jbSB7IGNvbnRlbnQ6IHVybCgiZCIpOyB9Ci0jbiB7IGNvbnRlbnQ6
IHVybCgiZSIpOyB9Ci0jbyB7IGNvbnRlbnQ6IHVybCgiZiIpOyB9CisjbSB7IGNvbnRlbnQ6IHVy
bCgiIGQiKTsgfQorI24geyBjb250ZW50OiB1cmwoImUgIik7IH0KKyNvIHsgY29udGVudDogdXJs
KCIgZiAiKTsgfQogI3AgeyBjb250ZW50OiB1cmwoInVybChnKSIpOyB9CiAjcSB7IGN1cnNvcjog
dXJsKCJ1cmwocSkiKSwgZGVmYXVsdDsgfQogI3IgeyBsaXN0LXN0eWxlLWltYWdlOiB1cmwoInVy
bChyKSIpOyB9CkBAIC0yNCw5ICsyNCw5IEBAIFJ1bGVzIGZyb20gdGhlIHN0eWxlc2hlZXQ6CiAj
dCB7IC13ZWJraXQtbWFzay1pbWFnZTogdXJsKCJ1cmwodCkiKTsgfQogI3UgeyAtd2Via2l0LWJv
cmRlci1pbWFnZTogdXJsKCJ1cmwodSkiKSAxIDIgMyA0IGZpbGwgc3RyZXRjaCByb3VuZDsgfQog
I3YgeyAtd2Via2l0LW1hc2stYm94LWltYWdlOiB1cmwoInVybCh2KSIpIDEgMiAzIDQgZmlsbCBz
dHJldGNoIHJvdW5kOyB9Ci0jdyB7IGNvbnRlbnQ6IHVybCgid3ciKTsgfQotI3ggeyBjb250ZW50
OiB1cmwoInglMjB4eCIpOyB9Ci0jeSB7IGNvbnRlbnQ6IHVybCgieSUyMHl5Iik7IH0KKyN3IHsg
Y29udGVudDogdXJsKCJ3XGQgdyIpOyB9CisjeCB7IGNvbnRlbnQ6IHVybCgiIHggeFw5IHggIik7
IH0KKyN5IHsgY29udGVudDogdXJsKCJ5IHlcOSB5Iik7IH0KIEV4cGVjdGVkIHJlc3VsdDoKIAog
I2EgeyBjb250ZW50OiB1cmwoImMiKTsgfQpAQCAtMzQsMTQgKzM0LDE0IEBAIEV4cGVjdGVkIHJl
c3VsdDoKICNjIHsgY29udGVudDogdXJsKCJlIik7IH0KICNkIHsgY29udGVudDogdXJsKCJmIik7
IH0KICNmIHsgY29udGVudDogdXJsKCJjIik7IH0KLSNnIHsgY29udGVudDogdXJsKCJkIik7IH0K
LSNoIHsgY29udGVudDogdXJsKCJlIik7IH0KLSNpIHsgY29udGVudDogdXJsKCJmIik7IH0KKyNn
IHsgY29udGVudDogdXJsKCIgZCIpOyB9CisjaCB7IGNvbnRlbnQ6IHVybCgiZSAiKTsgfQorI2kg
eyBjb250ZW50OiB1cmwoIiBmICIpOyB9CiAjaiB7IGNvbnRlbnQ6IHVybCgidXJsKGcpIik7IH0K
ICNsIHsgY29udGVudDogdXJsKCJjIik7IH0KLSNtIHsgY29udGVudDogdXJsKCJkIik7IH0KLSNu
IHsgY29udGVudDogdXJsKCJlIik7IH0KLSNvIHsgY29udGVudDogdXJsKCJmIik7IH0KKyNtIHsg
Y29udGVudDogdXJsKCIgZCIpOyB9CisjbiB7IGNvbnRlbnQ6IHVybCgiZSAiKTsgfQorI28geyBj
b250ZW50OiB1cmwoIiBmICIpOyB9CiAjcCB7IGNvbnRlbnQ6IHVybCgidXJsKGcpIik7IH0KICNx
IHsgY3Vyc29yOiB1cmwoInVybChxKSIpLCBkZWZhdWx0OyB9CiAjciB7IGxpc3Qtc3R5bGUtaW1h
Z2U6IHVybCgidXJsKHIpIik7IH0KQEAgLTQ5LDcgKzQ5LDcgQEAgRXhwZWN0ZWQgcmVzdWx0Ogog
I3QgeyAtd2Via2l0LW1hc2staW1hZ2U6IHVybCgidXJsKHQpIik7IH0KICN1IHsgLXdlYmtpdC1i
b3JkZXItaW1hZ2U6IHVybCgidXJsKHUpIikgMSAyIDMgNCBmaWxsIHN0cmV0Y2ggcm91bmQ7IH0K
ICN2IHsgLXdlYmtpdC1tYXNrLWJveC1pbWFnZTogdXJsKCJ1cmwodikiKSAxIDIgMyA0IGZpbGwg
c3RyZXRjaCByb3VuZDsgfQotI3cgeyBjb250ZW50OiB1cmwoInd3Iik7IH0KLSN4IHsgY29udGVu
dDogdXJsKCJ4JTIweHgiKTsgfQotI3kgeyBjb250ZW50OiB1cmwoInklMjB5eSIpOyB9CisjdyB7
IGNvbnRlbnQ6IHVybCgid1xkIHciKTsgfQorI3ggeyBjb250ZW50OiB1cmwoIiB4IHhcOSB4ICIp
OyB9CisjeSB7IGNvbnRlbnQ6IHVybCgieSB5XDkgeSIpOyB9CiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY3NzL3VyaS10b2tlbi1wYXJzaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy91cmktdG9rZW4tcGFyc2luZy5odG1sCmluZGV4IDY3N2M5ZDE1MzRlZDcyNjVhYTIzYTFi
MDBmYWQyMzUyNjkyZjVhN2QuLjYxZTU3MjEyODJiODU1M2FiZmFjYjNjMDcyMzE4NTMyNzg0Zjc1
MjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3VyaS10b2tlbi1wYXJzaW5nLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdXJpLXRva2VuLXBhcnNpbmcuaHRtbApAQCAt
NDQsMTMgKzQ0LDcgQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgdmFyIHJ1bGVzID0gZG9jdW1l
bnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXM7CiAgICAgdmFyIHRleHQgPSAiIjsKICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHJ1bGVzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIHZhciBpdGVtVGV4
dCA9IHJ1bGVzLml0ZW0oaSkuY3NzVGV4dDsKLQotICAgICAgICAvLyBXb3JrIGFyb3VuZCBidWcg
d2hlcmUgV2ViS2l0IGNvbXBsZXRlcyB0aGUgVVJMcyBpbiB0aGUgQ1NTIERPTS4KLSAgICAgICAg
Ly8gVGhlIGNvbXBsZXRpb24gb2YgdGhlIFVSTCBzaG91bGQgYmUgd2hlbiB0aGV5IGFyZSB1c2Vk
LCBub3QgaW4gdGhlIERPTS4KLSAgICAgICAgaXRlbVRleHQgPSBpdGVtVGV4dC5yZXBsYWNlKC9m
aWxlOi4qTGF5b3V0VGVzdHNcL2Zhc3RcL2Nzc1wvLywgIiIpOwotCi0gICAgICAgIHRleHQgKz0g
aXRlbVRleHQ7CisgICAgICAgIHRleHQgKz0gcnVsZXMuaXRlbShpKS5jc3NUZXh0OwogICAgICAg
ICB0ZXh0ICs9ICJcbiI7CiAgICAgfQogCkBAIC04MywxNCArNzcsMTQgQEAgZnVuY3Rpb24gcnVu
VGVzdCgpCiAjYyB7IGNvbnRlbnQ6IHVybCgiZSIpOyB9CiAjZCB7IGNvbnRlbnQ6IHVybCgiZiIp
OyB9CiAjZiB7IGNvbnRlbnQ6IHVybCgiYyIpOyB9Ci0jZyB7IGNvbnRlbnQ6IHVybCgiZCIpOyB9
Ci0jaCB7IGNvbnRlbnQ6IHVybCgiZSIpOyB9Ci0jaSB7IGNvbnRlbnQ6IHVybCgiZiIpOyB9Cisj
ZyB7IGNvbnRlbnQ6IHVybCgiIGQiKTsgfQorI2ggeyBjb250ZW50OiB1cmwoImUgIik7IH0KKyNp
IHsgY29udGVudDogdXJsKCIgZiAiKTsgfQogI2ogeyBjb250ZW50OiB1cmwoInVybChnKSIpOyB9
CiAjbCB7IGNvbnRlbnQ6IHVybCgiYyIpOyB9Ci0jbSB7IGNvbnRlbnQ6IHVybCgiZCIpOyB9Ci0j
biB7IGNvbnRlbnQ6IHVybCgiZSIpOyB9Ci0jbyB7IGNvbnRlbnQ6IHVybCgiZiIpOyB9CisjbSB7
IGNvbnRlbnQ6IHVybCgiIGQiKTsgfQorI24geyBjb250ZW50OiB1cmwoImUgIik7IH0KKyNvIHsg
Y29udGVudDogdXJsKCIgZiAiKTsgfQogI3AgeyBjb250ZW50OiB1cmwoInVybChnKSIpOyB9CiAj
cSB7IGN1cnNvcjogdXJsKCJ1cmwocSkiKSwgZGVmYXVsdDsgfQogI3IgeyBsaXN0LXN0eWxlLWlt
YWdlOiB1cmwoInVybChyKSIpOyB9CkBAIC05OCw5ICs5Miw5IEBAIGZ1bmN0aW9uIHJ1blRlc3Qo
KQogI3QgeyAtd2Via2l0LW1hc2staW1hZ2U6IHVybCgidXJsKHQpIik7IH0KICN1IHsgLXdlYmtp
dC1ib3JkZXItaW1hZ2U6IHVybCgidXJsKHUpIikgMSAyIDMgNCBmaWxsIHN0cmV0Y2ggcm91bmQ7
IH0KICN2IHsgLXdlYmtpdC1tYXNrLWJveC1pbWFnZTogdXJsKCJ1cmwodikiKSAxIDIgMyA0IGZp
bGwgc3RyZXRjaCByb3VuZDsgfQotI3cgeyBjb250ZW50OiB1cmwoInd3Iik7IH0KLSN4IHsgY29u
dGVudDogdXJsKCJ4JTIweHgiKTsgfQotI3kgeyBjb250ZW50OiB1cmwoInklMjB5eSIpOyB9Cisj
dyB7IGNvbnRlbnQ6IHVybCgid1xkIHciKTsgfQorI3ggeyBjb250ZW50OiB1cmwoIiB4IHhcOSB4
ICIpOyB9CisjeSB7IGNvbnRlbnQ6IHVybCgieSB5XDkgeSIpOyB9CiA8L3ByZT4KIAogPHNjcmlw
dD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3VybC13aXRoLW11bHRpLWJ5dGUt
dW5pY29kZS1lc2NhcGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdXJsLXdp
dGgtbXVsdGktYnl0ZS11bmljb2RlLWVzY2FwZS1leHBlY3RlZC50eHQKaW5kZXggNTM2MTNiZThl
MWUwODM2NTg5OGM4NjdmNzYzY2JmYTZiZWJhOTdkNi4uYjM3YjRmYWQ5OTdkMjkzYmZkMGYyOWJk
OTEzMjAwZjhjMjY4ODk3MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdXJsLXdp
dGgtbXVsdGktYnl0ZS11bmljb2RlLWVzY2FwZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9jc3MvdXJsLXdpdGgtbXVsdGktYnl0ZS11bmljb2RlLWVzY2FwZS1leHBlY3RlZC50
eHQKQEAgLTQsOCArNCw4IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIAogUEFTUyBkb2N1
bWVudC5zdHlsZVNoZWV0c1swXS5jc3NSdWxlcy5sZW5ndGggaXMgMgotUEFTUyBkb2N1bWVudC5z
dHlsZVNoZWV0c1swXS5jc3NSdWxlc1swXS5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCJiYWNrZ3Jv
dW5kLWltYWdlIikgaXMgInVybChcImRhdGE6JUM0JTgwXCIpIgotUEFTUyBkb2N1bWVudC5zdHls
ZVNoZWV0c1swXS5jc3NSdWxlc1swXS5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCJib3JkZXItaW1h
Z2Utc291cmNlIikgaXMgInVybChcImRhdGE6JUM0JTgwXCIpIgorUEFTUyBkb2N1bWVudC5zdHls
ZVNoZWV0c1swXS5jc3NSdWxlc1swXS5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCJiYWNrZ3JvdW5k
LWltYWdlIikgaXMgInVybChcImRhdGE6xIBcIikiCitQQVNTIGRvY3VtZW50LnN0eWxlU2hlZXRz
WzBdLmNzc1J1bGVzWzBdLnN0eWxlLmdldFByb3BlcnR5VmFsdWUoImJvcmRlci1pbWFnZS1zb3Vy
Y2UiKSBpcyAidXJsKFwiZGF0YTrEgFwiKSIKIFBBU1MgZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0u
Y3NzUnVsZXNbMV0uc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgiYmFja2dyb3VuZC1jb2xvciIpIGlz
ICJncmVlbiIKIFBBU1Mgd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRlc3QiKSkuZ2V0UHJvcGVydHlWYWx1ZSgiYmFja2dyb3VuZC1jb2xvciIpIGlzICJy
Z2IoMCwgMTI4LCAwKSIKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3VybC13aXRoLW11bHRpLWJ5dGUtdW5pY29kZS1lc2Nh
cGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3VybC13aXRoLW11bHRpLWJ5dGUtdW5pY29k
ZS1lc2NhcGUuaHRtbAppbmRleCA3NDM1NjIwMzdkNjJjMTc5YmMwMDgyYTM3NWU0MDhmMjliYWVm
MzRjLi5kZjBjNjhlNGIzMGJjYzU4MGE4NGJmNjk0NTE5YTQwNWJlZTgzOTRjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy91cmwtd2l0aC1tdWx0aS1ieXRlLXVuaWNvZGUtZXNjYXBl
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdXJsLXdpdGgtbXVsdGktYnl0ZS11bmlj
b2RlLWVzY2FwZS5odG1sCkBAIC0xMyw4ICsxMyw4IEBACiA8c2NyaXB0PgogICAgIGRlc2NyaXB0
aW9uKCdUZXN0IHBhcnNpbmcgYSBDU1MgVVJJIGNvbnRhaW5pbmcgYSBtdWx0aS1ieXRlIFVuaWNv
ZGUgZXNjYXBlIHNlcXVlbmNlLicpOwogICAgIHNob3VsZEJlKCdkb2N1bWVudC5zdHlsZVNoZWV0
c1swXS5jc3NSdWxlcy5sZW5ndGgnLCAnMicpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygn
ZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMF0uc3R5bGUuZ2V0UHJvcGVydHlWYWx1
ZSgiYmFja2dyb3VuZC1pbWFnZSIpJywgJ3VybCgiZGF0YTolQzQlODAiKScpOwotICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMF0uc3R5
bGUuZ2V0UHJvcGVydHlWYWx1ZSgiYm9yZGVyLWltYWdlLXNvdXJjZSIpJywgJ3VybCgiZGF0YTol
QzQlODAiKScpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuc3R5bGVTaGVl
dHNbMF0uY3NzUnVsZXNbMF0uc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgiYmFja2dyb3VuZC1pbWFn
ZSIpJywgJ3VybCgiZGF0YTpcdTAxMDAiKScpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygn
ZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMF0uc3R5bGUuZ2V0UHJvcGVydHlWYWx1
ZSgiYm9yZGVyLWltYWdlLXNvdXJjZSIpJywgJ3VybCgiZGF0YTpcdTAxMDAiKScpOwogICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygnZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMV0u
c3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgiYmFja2dyb3VuZC1jb2xvciIpJywgJ2dyZWVuJyk7CiAg
ICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGVzdCIpKS5nZXRQcm9wZXJ0eVZhbHVlKCJiYWNrZ3JvdW5kLWNv
bG9yIiknLCAncmdiKDAsIDEyOCwgMCknKTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9maWx0ZXItaW1hZ2UvcGFyc2UtZmlsdGVyLWltYWdlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZmlsdGVyLWltYWdlL3BhcnNlLWZpbHRlci1pbWFnZS1leHBlY3Rl
ZC50eHQKaW5kZXggMzBiZjQxZWYzYTJlYjQ0NWIwNDU5YjA3YWJlMjU3Nzg4ODUxMGVjMy4uOTJl
YWYzOGY0NjVjMDdhMjI1Y2RkMTQxYjY2ZDBiOTNjMzEwNGQ3YiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9maWx0ZXItaW1hZ2UvcGFyc2UtZmlsdGVyLWltYWdlLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbHRlci1pbWFnZS9wYXJzZS1maWx0ZXItaW1hZ2UtZXhw
ZWN0ZWQudHh0CkBAIC03OCwxMyArNzgsMTMgQEAgUEFTUyBpbm5lclN0eWxlKCJiYWNrZ3JvdW5k
LWltYWdlIiwgImZpbHRlcihyYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBjbG9zZXN0LWNvcm4KIFBB
U1MgaW5uZXJTdHlsZSgiYmFja2dyb3VuZC1pbWFnZSIsICJmaWx0ZXIobGluZWFyLWdyYWRpZW50
KHdoaXRlLCBibGFjayksIGh1ZS1yb3RhdGUoOTBkZWcpKSIpIGlzICJmaWx0ZXIobGluZWFyLWdy
YWRpZW50KHdoaXRlLCBibGFjayksIGh1ZS1yb3RhdGUoOTBkZWcpKSIKIFBBU1MgaW5uZXJTdHls
ZSgiYmFja2dyb3VuZC1pbWFnZSIsICJmaWx0ZXIobGluZWFyLWdyYWRpZW50KHRvIHRvcCBsZWZ0
LCB3aGl0ZSwgYmxhY2spLCBodWUtcm90YXRlKDkwZGVnKSkiKSBpcyAiZmlsdGVyKGxpbmVhci1n
cmFkaWVudCh0byBsZWZ0IHRvcCwgd2hpdGUsIGJsYWNrKSwgaHVlLXJvdGF0ZSg5MGRlZykpIgog
UEFTUyBpbm5lclN0eWxlKCJiYWNrZ3JvdW5kLWltYWdlIiwgImZpbHRlcihsaW5lYXItZ3JhZGll
bnQoMGRlZywgd2hpdGUgLTIwJSwgYmx1ZSwgYmxhY2sgMTIwJSksIGh1ZS1yb3RhdGUoOTBkZWcp
KSIpIGlzICJmaWx0ZXIobGluZWFyLWdyYWRpZW50KDBkZWcsIHdoaXRlIC0yMCUsIGJsdWUsIGJs
YWNrIDEyMCUpLCBodWUtcm90YXRlKDkwZGVnKSkiCi1QQVNTIGlubmVyU3R5bGUoImJhY2tncm91
bmQtaW1hZ2UiLCAiZmlsdGVyKC13ZWJraXQtY3Jvc3MtZmFkZSh1cmwoaHR0cDovL2ltYWdlMS5w
bmcpLCB1cmwoaHR0cDovL2ltYWdlMi5wbmcpLCA1MCUpLCBjb250cmFzdCgwLjUpKSIpIGlzICJm
aWx0ZXIoLXdlYmtpdC1jcm9zcy1mYWRlKHVybChcImh0dHA6Ly9pbWFnZTEucG5nL1wiKSwgdXJs
KFwiaHR0cDovL2ltYWdlMi5wbmcvXCIpLCAwLjUpLCBjb250cmFzdCgwLjUpKSIKLVBBU1MgaW5u
ZXJTdHlsZSgiYmFja2dyb3VuZC1pbWFnZSIsICJmaWx0ZXIodXJsKGh0dHA6Ly9pbWFnZTEucG5n
KSwgYnJpZ2h0bmVzcyg1MCUpKSIpIGlzICJmaWx0ZXIodXJsKFwiaHR0cDovL2ltYWdlMS5wbmcv
XCIpLCBicmlnaHRuZXNzKDUwJSkpIgotUEFTUyBpbm5lclN0eWxlKCJiYWNrZ3JvdW5kLWltYWdl
IiwgImZpbHRlcih1cmwoJ2h0dHA6Ly9pbWFnZTEucG5nJyksIGJyaWdodG5lc3MoNTAlKSkiKSBp
cyAiZmlsdGVyKHVybChcImh0dHA6Ly9pbWFnZTEucG5nL1wiKSwgYnJpZ2h0bmVzcyg1MCUpKSIK
LVBBU1MgaW5uZXJTdHlsZSgiYm9yZGVyLWltYWdlLXNvdXJjZSIsICJmaWx0ZXIodXJsKGh0dHA6
Ly9pbWFnZTEucG5nKSwgaW52ZXJ0KDUwJSkpIikgaXMgImZpbHRlcih1cmwoXCJodHRwOi8vaW1h
Z2UxLnBuZy9cIiksIGludmVydCg1MCUpKSIKLVBBU1MgaW5uZXJTdHlsZSgiLXdlYmtpdC1tYXNr
LWltYWdlIiwgImZpbHRlcih1cmwoaHR0cDovL2ltYWdlMS5wbmcpLCBpbnZlcnQoNTAlKSkiKSBp
cyAiZmlsdGVyKHVybChcImh0dHA6Ly9pbWFnZTEucG5nL1wiKSwgaW52ZXJ0KDUwJSkpIgotUEFT
UyBpbm5lclN0eWxlKCItd2Via2l0LW1hc2stYm94LWltYWdlLXNvdXJjZSIsICJmaWx0ZXIodXJs
KGh0dHA6Ly9pbWFnZTEucG5nKSwgaW52ZXJ0KDUwJSkpIikgaXMgImZpbHRlcih1cmwoXCJodHRw
Oi8vaW1hZ2UxLnBuZy9cIiksIGludmVydCg1MCUpKSIKLVBBU1MgaW5uZXJTdHlsZSgiY29udGVu
dCIsICJmaWx0ZXIodXJsKGh0dHA6Ly9pbWFnZTEucG5nKSwgaW52ZXJ0KDUwJSkpIikgaXMgImZp
bHRlcih1cmwoXCJodHRwOi8vaW1hZ2UxLnBuZy9cIiksIGludmVydCg1MCUpKSIKK1BBU1MgaW5u
ZXJTdHlsZSgiYmFja2dyb3VuZC1pbWFnZSIsICJmaWx0ZXIoLXdlYmtpdC1jcm9zcy1mYWRlKHVy
bChpbWFnZTEucG5nKSwgdXJsKGltYWdlMi5wbmcpLCA1MCUpLCBjb250cmFzdCgwLjUpKSIpIGlz
ICJmaWx0ZXIoLXdlYmtpdC1jcm9zcy1mYWRlKHVybChcImltYWdlMS5wbmdcIiksIHVybChcImlt
YWdlMi5wbmdcIiksIDAuNSksIGNvbnRyYXN0KDAuNSkpIgorUEFTUyBpbm5lclN0eWxlKCJiYWNr
Z3JvdW5kLWltYWdlIiwgImZpbHRlcih1cmwoaW1hZ2UxLnBuZyksIGJyaWdodG5lc3MoNTAlKSki
KSBpcyAiZmlsdGVyKHVybChcImltYWdlMS5wbmdcIiksIGJyaWdodG5lc3MoNTAlKSkiCitQQVNT
IGlubmVyU3R5bGUoImJhY2tncm91bmQtaW1hZ2UiLCAiZmlsdGVyKHVybCgnaW1hZ2UxLnBuZycp
LCBicmlnaHRuZXNzKDUwJSkpIikgaXMgImZpbHRlcih1cmwoXCJpbWFnZTEucG5nXCIpLCBicmln
aHRuZXNzKDUwJSkpIgorUEFTUyBpbm5lclN0eWxlKCJib3JkZXItaW1hZ2Utc291cmNlIiwgImZp
bHRlcih1cmwoaW1hZ2UxLnBuZyksIGludmVydCg1MCUpKSIpIGlzICJmaWx0ZXIodXJsKFwiaW1h
Z2UxLnBuZ1wiKSwgaW52ZXJ0KDUwJSkpIgorUEFTUyBpbm5lclN0eWxlKCItd2Via2l0LW1hc2st
aW1hZ2UiLCAiZmlsdGVyKHVybChpbWFnZTEucG5nKSwgaW52ZXJ0KDUwJSkpIikgaXMgImZpbHRl
cih1cmwoXCJpbWFnZTEucG5nXCIpLCBpbnZlcnQoNTAlKSkiCitQQVNTIGlubmVyU3R5bGUoIi13
ZWJraXQtbWFzay1ib3gtaW1hZ2Utc291cmNlIiwgImZpbHRlcih1cmwoaW1hZ2UxLnBuZyksIGlu
dmVydCg1MCUpKSIpIGlzICJmaWx0ZXIodXJsKFwiaW1hZ2UxLnBuZ1wiKSwgaW52ZXJ0KDUwJSkp
IgorUEFTUyBpbm5lclN0eWxlKCJjb250ZW50IiwgImZpbHRlcih1cmwoaW1hZ2UxLnBuZyksIGlu
dmVydCg1MCUpKSIpIGlzICJmaWx0ZXIodXJsKFwiaW1hZ2UxLnBuZ1wiKSwgaW52ZXJ0KDUwJSkp
IgogUEFTUyBpbm5lclN0eWxlKCJiYWNrZ3JvdW5kLWltYWdlIiwgImZpbHRlcigpIikgaXMgIiIK
IFBBU1MgY29tcHV0ZWRTdHlsZSgiYmFja2dyb3VuZC1pbWFnZSIsICJmaWx0ZXIoKSIpIGlzICJu
b25lIgogUEFTUyBpbm5lclN0eWxlKCJiYWNrZ3JvdW5kLWltYWdlIiwgImZpbHRlcih1cmwoaW1h
Z2UxLnBuZykpIikgaXMgIiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsdGVyLWlt
YWdlL3BhcnNlLWZpbHRlci1pbWFnZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9maWx0ZXItaW1h
Z2UvcGFyc2UtZmlsdGVyLWltYWdlLmh0bWwKaW5kZXggYTRhYzY0MGZmYmRmN2NkZjVjMWY1OTdi
ZTQzNjk5MjczY2E5MmI5Ni4uMjQ3NDE0OWI2ZjU5ZmQzZDFlOTgyYzQ3OWFhMmNmMmQ0Y2E5MDli
OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9maWx0ZXItaW1hZ2UvcGFyc2UtZmlsdGVy
LWltYWdlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWx0ZXItaW1hZ2UvcGFyc2UtZmls
dGVyLWltYWdlLmh0bWwKQEAgLTM0NSwzNCArMzQ1LDM0IEBAIHRlc3RJbm5lcigKICAgICAiZmls
dGVyKGxpbmVhci1ncmFkaWVudCgwZGVnLCB3aGl0ZSAtMjAlLCBibHVlLCBibGFjayAxMjAlKSwg
aHVlLXJvdGF0ZSg5MGRlZykpIik7CiB0ZXN0SW5uZXIoCiAgICAgImJhY2tncm91bmQtaW1hZ2Ui
LAotICAgICJmaWx0ZXIoLXdlYmtpdC1jcm9zcy1mYWRlKHVybChodHRwOi8vaW1hZ2UxLnBuZyks
IHVybChodHRwOi8vaW1hZ2UyLnBuZyksIDUwJSksIGNvbnRyYXN0KDAuNSkpIiwKLSAgICAiZmls
dGVyKC13ZWJraXQtY3Jvc3MtZmFkZSh1cmwoXCJodHRwOi8vaW1hZ2UxLnBuZy9cIiksIHVybChc
Imh0dHA6Ly9pbWFnZTIucG5nL1wiKSwgMC41KSwgY29udHJhc3QoMC41KSkiKTsKKyAgICAiZmls
dGVyKC13ZWJraXQtY3Jvc3MtZmFkZSh1cmwoaW1hZ2UxLnBuZyksIHVybChpbWFnZTIucG5nKSwg
NTAlKSwgY29udHJhc3QoMC41KSkiLAorICAgICJmaWx0ZXIoLXdlYmtpdC1jcm9zcy1mYWRlKHVy
bChcImltYWdlMS5wbmdcIiksIHVybChcImltYWdlMi5wbmdcIiksIDAuNSksIGNvbnRyYXN0KDAu
NSkpIik7CiB0ZXN0SW5uZXIoCiAgICAgImJhY2tncm91bmQtaW1hZ2UiLAotICAgICJmaWx0ZXIo
dXJsKGh0dHA6Ly9pbWFnZTEucG5nKSwgYnJpZ2h0bmVzcyg1MCUpKSIsCi0gICAgImZpbHRlcih1
cmwoXCJodHRwOi8vaW1hZ2UxLnBuZy9cIiksIGJyaWdodG5lc3MoNTAlKSkiKTsKKyAgICAiZmls
dGVyKHVybChpbWFnZTEucG5nKSwgYnJpZ2h0bmVzcyg1MCUpKSIsCisgICAgImZpbHRlcih1cmwo
XCJpbWFnZTEucG5nXCIpLCBicmlnaHRuZXNzKDUwJSkpIik7CiB0ZXN0SW5uZXIoCiAgICAgImJh
Y2tncm91bmQtaW1hZ2UiLAotICAgICJmaWx0ZXIodXJsKCdodHRwOi8vaW1hZ2UxLnBuZycpLCBi
cmlnaHRuZXNzKDUwJSkpIiwKLSAgICAiZmlsdGVyKHVybChcImh0dHA6Ly9pbWFnZTEucG5nL1wi
KSwgYnJpZ2h0bmVzcyg1MCUpKSIpOworICAgICJmaWx0ZXIodXJsKCdpbWFnZTEucG5nJyksIGJy
aWdodG5lc3MoNTAlKSkiLAorICAgICJmaWx0ZXIodXJsKFwiaW1hZ2UxLnBuZ1wiKSwgYnJpZ2h0
bmVzcyg1MCUpKSIpOwogCiAvLyBUZXN0IGRpZmZlcmVudCBwcm9wZXJ0aWVzLCB0YWtpbmcgQ1NT
IEltYWdlIHZhbHVlcy4KIHRlc3RJbm5lcigKICAgICAiYm9yZGVyLWltYWdlLXNvdXJjZSIsCi0g
ICAgImZpbHRlcih1cmwoaHR0cDovL2ltYWdlMS5wbmcpLCBpbnZlcnQoNTAlKSkiLAotICAgICJm
aWx0ZXIodXJsKFwiaHR0cDovL2ltYWdlMS5wbmcvXCIpLCBpbnZlcnQoNTAlKSkiKTsKKyAgICAi
ZmlsdGVyKHVybChpbWFnZTEucG5nKSwgaW52ZXJ0KDUwJSkpIiwKKyAgICAiZmlsdGVyKHVybChc
ImltYWdlMS5wbmdcIiksIGludmVydCg1MCUpKSIpOwogdGVzdElubmVyKAogICAgICItd2Via2l0
LW1hc2staW1hZ2UiLAotICAgICJmaWx0ZXIodXJsKGh0dHA6Ly9pbWFnZTEucG5nKSwgaW52ZXJ0
KDUwJSkpIiwKLSAgICAiZmlsdGVyKHVybChcImh0dHA6Ly9pbWFnZTEucG5nL1wiKSwgaW52ZXJ0
KDUwJSkpIik7CisgICAgImZpbHRlcih1cmwoaW1hZ2UxLnBuZyksIGludmVydCg1MCUpKSIsCisg
ICAgImZpbHRlcih1cmwoXCJpbWFnZTEucG5nXCIpLCBpbnZlcnQoNTAlKSkiKTsKIHRlc3RJbm5l
cigKICAgICAiLXdlYmtpdC1tYXNrLWJveC1pbWFnZS1zb3VyY2UiLAotICAgICJmaWx0ZXIodXJs
KGh0dHA6Ly9pbWFnZTEucG5nKSwgaW52ZXJ0KDUwJSkpIiwKLSAgICAiZmlsdGVyKHVybChcImh0
dHA6Ly9pbWFnZTEucG5nL1wiKSwgaW52ZXJ0KDUwJSkpIik7CisgICAgImZpbHRlcih1cmwoaW1h
Z2UxLnBuZyksIGludmVydCg1MCUpKSIsCisgICAgImZpbHRlcih1cmwoXCJpbWFnZTEucG5nXCIp
LCBpbnZlcnQoNTAlKSkiKTsKIHRlc3RJbm5lcigKICAgICAiY29udGVudCIsCi0gICAgImZpbHRl
cih1cmwoaHR0cDovL2ltYWdlMS5wbmcpLCBpbnZlcnQoNTAlKSkiLAotICAgICJmaWx0ZXIodXJs
KFwiaHR0cDovL2ltYWdlMS5wbmcvXCIpLCBpbnZlcnQoNTAlKSkiKTsKKyAgICAiZmlsdGVyKHVy
bChpbWFnZTEucG5nKSwgaW52ZXJ0KDUwJSkpIiwKKyAgICAiZmlsdGVyKHVybChcImltYWdlMS5w
bmdcIiksIGludmVydCg1MCUpKSIpOwogCiAvLyBuZWdhdGl2ZSB0ZXN0cwogbmVnYXRpdmVUZXN0
KCJiYWNrZ3JvdW5kLWltYWdlIiwgImZpbHRlcigpIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2lubmVySFRNTC9pbm5lckhUTUwtdXJpLXJlc29sdXRpb24uaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvaW5uZXJIVE1ML2lubmVySFRNTC11cmktcmVzb2x1dGlvbi5odG1sCmluZGV4IDg1
NGUwZjFhMGI3MTM3NjljYzM5NjY4NTQ0NjczMWQ4MmRjMTA1MzEuLjQ0NDQyNTRmYmExYzljMTc4
ZWMxMWI2NTBmNGY1NjJhMmZlODBjNTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvaW5u
ZXJIVE1ML2lubmVySFRNTC11cmktcmVzb2x1dGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvaW5uZXJIVE1ML2lubmVySFRNTC11cmktcmVzb2x1dGlvbi5odG1sCkBAIC0xMywxMSArMTMs
MTEgQEAKICAgCiAgIHZhciBjdXJyZW50VXJpID0gZG9jdW1lbnQubG9jYXRpb24uaHJlZjsKICAg
dmFyIGN1cnJlbnRQYXRoID0gY3VycmVudFVyaS5zdWJzdHJpbmcoMCwgY3VycmVudFVyaS5sYXN0
SW5kZXhPZignLycpKTsKLSAgdmFyIGNzc1VyaVdhc1Jlc29sdmVkQWdhaW5zdERvY3VtZW50VXJp
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3Qtc3BhbiIpLnN0eWxlLmJhY2tncm91bmRJ
bWFnZSA9PSAndXJsKCInICsgY3VycmVudFBhdGggKyAnL2ltYWdlLnBuZyIpJzsKKyAgdmFyIGNz
c1VyaVdhc1Jlc29sdmVkQWdhaW5zdERvY3VtZW50VXJpID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdC1zcGFuIikpLmJhY2tncm91bmRJbWFnZSA9PSAndXJs
KCInICsgY3VycmVudFBhdGggKyAnL2ltYWdlLnBuZyIpJzsKICAgCiAgIC8vIENhbid0IGxvZyB0
aGUgYWN0dWFsIHBhdGggc2luY2UgaXQncyBkaWZmZXJlbnQgZGVwZW5kaW5nIG9uIHdoZXJlIHRo
ZSB0ZXN0IGlzIHJ1bi4KICAgc2hvdWxkQmVUcnVlKCdjc3NVcmlXYXNSZXNvbHZlZEFnYWluc3RE
b2N1bWVudFVyaScpOwogPC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvdW50ZXItc3R5bGVzL2NvdW50ZXItc3R5
bGUtYWRkaXRpdmUtc3ltYm9scy1zeW50YXgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvdW50ZXItc3R5bGVzL2NvdW50
ZXItc3R5bGUtYWRkaXRpdmUtc3ltYm9scy1zeW50YXgtZXhwZWN0ZWQudHh0CmluZGV4IDRlZGNh
YTRmYzFmYTliMWM5ZGJiNGJiZmQxYWMxMTI5ZjM4YjI0OWYuLmQ5NjU4NzZiNjBkMzA2NTQxMDk4
NWFiMDczNzc3NTIxNWJmNGRmMjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jb3VudGVyLXN0eWxlcy9jb3VudGVyLXN0eWxl
LWFkZGl0aXZlLXN5bWJvbHMtc3ludGF4LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY291bnRlci1zdHlsZXMvY291
bnRlci1zdHlsZS1hZGRpdGl2ZS1zeW1ib2xzLXN5bnRheC1leHBlY3RlZC50eHQKQEAgLTEsOCAr
MSw4IEBACiAKLUZBSUwgQGNvdW50ZXItc3R5bGUgJ2FkZGl0aXZlLXN5bWJvbHM6IDAgIlgiJyBp
cyB2YWxpZCBhc3NlcnRfbm90X2VxdWFsczogZ290IGRpc2FsbG93ZWQgdmFsdWUgLTEKLUZBSUwg
QGNvdW50ZXItc3R5bGUgJ2FkZGl0aXZlLXN5bWJvbHM6IDEgIlgiJyBpcyB2YWxpZCBhc3NlcnRf
bm90X2VxdWFsczogZ290IGRpc2FsbG93ZWQgdmFsdWUgLTEKLUZBSUwgQGNvdW50ZXItc3R5bGUg
J2FkZGl0aXZlLXN5bWJvbHM6ICJYIiAxJyBpcyB2YWxpZCBhc3NlcnRfbm90X2VxdWFsczogZ290
IGRpc2FsbG93ZWQgdmFsdWUgLTEKLUZBSUwgQGNvdW50ZXItc3R5bGUgJ2FkZGl0aXZlLXN5bWJv
bHM6IDUgIlYiLCAxICJJIicgaXMgdmFsaWQgYXNzZXJ0X25vdF9lcXVhbHM6IGdvdCBkaXNhbGxv
d2VkIHZhbHVlIC0xCitQQVNTIEBjb3VudGVyLXN0eWxlICdhZGRpdGl2ZS1zeW1ib2xzOiAwICJY
IicgaXMgdmFsaWQKK1BBU1MgQGNvdW50ZXItc3R5bGUgJ2FkZGl0aXZlLXN5bWJvbHM6IDEgIlgi
JyBpcyB2YWxpZAorUEFTUyBAY291bnRlci1zdHlsZSAnYWRkaXRpdmUtc3ltYm9sczogIlgiIDEn
IGlzIHZhbGlkCitQQVNTIEBjb3VudGVyLXN0eWxlICdhZGRpdGl2ZS1zeW1ib2xzOiA1ICJWIiwg
MSAiSSInIGlzIHZhbGlkCiBQQVNTIEBjb3VudGVyLXN0eWxlICdhZGRpdGl2ZS1zeW1ib2xzOiAn
IGlzIGludmFsaWQKIFBBU1MgQGNvdW50ZXItc3R5bGUgJ2FkZGl0aXZlLXN5bWJvbHM6IC0xICJY
IicgaXMgaW52YWxpZAogUEFTUyBAY291bnRlci1zdHlsZSAnYWRkaXRpdmUtc3ltYm9sczogMSAi
SSIsIDUgIlYiJyBpcyBpbnZhbGlkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY291bnRlci1zdHlsZXMvY291bnRlci1zdHls
ZS1zeW1ib2xzLXN5bnRheC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY291bnRlci1zdHlsZXMvY291bnRlci1zdHlsZS1z
eW1ib2xzLXN5bnRheC1leHBlY3RlZC50eHQKaW5kZXggMjZiMWRiOGZhMDhhNzg4MWQ1NTc5YjFm
MWEzMDkxMDYwNTYyYzExNS4uNGUyZWU1Y2UyOTc4MWU5ZDEzZGViZjcwYWFmMTI2OGI5OGU3NDRh
NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvY3NzLWNvdW50ZXItc3R5bGVzL2NvdW50ZXItc3R5bGUtc3ltYm9scy1zeW50YXgtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy1jb3VudGVyLXN0eWxlcy9jb3VudGVyLXN0eWxlLXN5bWJvbHMtc3ludGF4LWV4
cGVjdGVkLnR4dApAQCAtMiw3ICsyLDcgQEAKIFBBU1MgQGNvdW50ZXItc3R5bGUgJ3N5bWJvbHM6
ICJYIicgaXMgdmFsaWQKIFBBU1MgQGNvdW50ZXItc3R5bGUgJ3N5bWJvbHM6ICJYIiAiWCInIGlz
IHZhbGlkCiBQQVNTIEBjb3VudGVyLXN0eWxlICdzeW1ib2xzOiBpZGVudCAiWCInIGlzIHZhbGlk
Ci1GQUlMIEBjb3VudGVyLXN0eWxlICdzeW1ib2xzOiBpZGVudCAiWCIgdXJsKCJmb28uanBnIikn
IGlzIHZhbGlkIGFzc2VydF9ub3RfZXF1YWxzOiBnb3QgZGlzYWxsb3dlZCB2YWx1ZSAtMQorUEFT
UyBAY291bnRlci1zdHlsZSAnc3ltYm9sczogaWRlbnQgIlgiIHVybCgiZm9vLmpwZyIpJyBpcyB2
YWxpZAogUEFTUyBAY291bnRlci1zdHlsZSAnc3ltYm9sczogJyBpcyBpbnZhbGlkCiBQQVNTIEBj
b3VudGVyLXN0eWxlICdzeW1ib2xzOiBpbml0aWFsICJYIiAiWCInIGlzIGludmFsaWQKIFBBU1Mg
QGNvdW50ZXItc3R5bGUgJ3N5bWJvbHM6IGluaGVyaXQgIlgiICJYIicgaXMgaW52YWxpZApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXN5bnRheC91cmwtd2hpdGVzcGFjZS1jb25zdW1wdGlvbi1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc3ludGF4L3Vy
bC13aGl0ZXNwYWNlLWNvbnN1bXB0aW9uLWV4cGVjdGVkLnR4dAppbmRleCAxMjQ4Njk5ZDAxOTQ1
MGVkMTA3NzkyYWEwYTdiZjZlOTY0NjU2MjgwLi5mZmU5NGI4ZGI1YjYzM2EwMDBmN2MxYjM0Y2Vj
NDBkOTBhN2ZlMDgxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3Mtc3ludGF4L3VybC13aGl0ZXNwYWNlLWNvbnN1bXB0aW9uLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2Nzcy9jc3Mtc3ludGF4L3VybC13aGl0ZXNwYWNlLWNvbnN1bXB0aW9uLWV4cGVjdGVkLnR4
dApAQCAtMSwzICsxLDMgQEAKIAotRkFJTCB3aGl0ZXNwYWNlIGlzIG9wdGlvbmFsIGJldHdlZW4g
dXJsKCB0b2tlbiBhbmQgdGhlIHN0cmluZyB0b2tlbiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAi
dXJsKFwiZm9vXCIpIiBidXQgZ290ICJ1cmwoXCJodHRwOi8vbG9jYWxob3N0Ojg4MDAvY3NzL2Nz
cy1zeW50YXgvZm9vXCIpIgorUEFTUyB3aGl0ZXNwYWNlIGlzIG9wdGlvbmFsIGJldHdlZW4gdXJs
KCB0b2tlbiBhbmQgdGhlIHN0cmluZyB0b2tlbgogCg==
</data>
<flag name="review"
          id="453298"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>