<?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>234895</bug_id>
          
          <creation_ts>2022-01-05 13:21:52 -0800</creation_ts>
          <short_desc>[Web Animations] inserting a rule within a @keyframes rule should update animations</short_desc>
          <delta_ts>2022-12-09 04:07:45 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Animations</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=234955</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>235138</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1828372</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-01-05 13:21:52 -0800</bug_when>
    <thetext>[Web Animations] inserting a rule within a @keyframes rule should update animations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828377</commentid>
    <comment_count>1</comment_count>
      <attachid>448426</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-01-05 13:34:56 -0800</bug_when>
    <thetext>Created attachment 448426
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828413</commentid>
    <comment_count>2</comment_count>
      <attachid>448426</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-05 15:17:43 -0800</bug_when>
    <thetext>Comment on attachment 448426
Patch

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

&gt; Source/WebCore/animation/CSSAnimation.cpp:249
&gt; +    auto owningElement = this-&gt;owningElement();

Should this be RefPtr instead of auto?

&gt; Source/WebCore/css/CSSKeyframesRule.cpp:168
&gt; +    if (CSSStyleSheet* parent = parentStyleSheet()) {
&gt; +        if (Document* ownerDocument = parent-&gt;ownerDocument())
&gt; +            ownerDocument-&gt;cssKeyframesRuleDidChange(name());
&gt; +    }

Would be nice to not have this be pasted twice; a shared function perhaps. Separately, I suggest using auto more here.

&gt; Source/WebCore/dom/Document.h:1541
&gt; +    void cssKeyframesRuleDidChange(String);

I am not sure that the &quot;css&quot; here is needed; is there any other kind of keyframes rule other than a CSS one?

It’s not obvious that the string argument here is the name of the rule, so there should be an argument name &quot;name&quot; here.

I suggest either StringView (preferred) or const String&amp; as the type so we don’t do unnecessary reference count churn.

&gt; Source/WebCore/dom/Element.cpp:4067
&gt; +    if (auto* animationData = animationRareData(pseudoId))
&gt; +        return animationData-&gt;isPendingKeyframesUpdate();
&gt; +    return false;

How I would write this:

    auto data = animationRareData(pseudoId);
    return data &amp;&amp; data-&gt;isPendingKeyframesUpdate();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828510</commentid>
    <comment_count>3</comment_count>
      <attachid>448426</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-01-05 22:49:34 -0800</bug_when>
    <thetext>Comment on attachment 448426
Patch

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

&gt;&gt; Source/WebCore/css/CSSKeyframesRule.cpp:168
&gt;&gt; +    if (CSSStyleSheet* parent = parentStyleSheet()) {
&gt;&gt; +        if (Document* ownerDocument = parent-&gt;ownerDocument())
&gt;&gt; +            ownerDocument-&gt;cssKeyframesRuleDidChange(name());
&gt;&gt; +    }
&gt; 
&gt; Would be nice to not have this be pasted twice; a shared function perhaps. Separately, I suggest using auto more here.

The shared function exist already. This should be done in CSSStyleSheet::didMutateRules. There should probably be a new RuleMutationType for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828554</commentid>
    <comment_count>4</comment_count>
      <attachid>448484</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-01-06 03:50:10 -0800</bug_when>
    <thetext>Created attachment 448484
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828560</commentid>
    <comment_count>5</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-01-06 04:13:52 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 448426 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=448426&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/animation/CSSAnimation.cpp:249
&gt; &gt; +    auto owningElement = this-&gt;owningElement();
&gt; 
&gt; Should this be RefPtr instead of auto?

I started a thread about this on Slack: https://webkit.slack.com/archives/C01ARTA5TDM/p1641467768004500.

&gt; &gt; Source/WebCore/css/CSSKeyframesRule.cpp:168
&gt; &gt; +    if (CSSStyleSheet* parent = parentStyleSheet()) {
&gt; &gt; +        if (Document* ownerDocument = parent-&gt;ownerDocument())
&gt; &gt; +            ownerDocument-&gt;cssKeyframesRuleDidChange(name());
&gt; &gt; +    }
&gt; 
&gt; Would be nice to not have this be pasted twice; a shared function perhaps.
&gt; Separately, I suggest using auto more here.
&gt; 
&gt; &gt; Source/WebCore/dom/Document.h:1541
&gt; &gt; +    void cssKeyframesRuleDidChange(String);
&gt; 
&gt; I am not sure that the &quot;css&quot; here is needed; is there any other kind of
&gt; keyframes rule other than a CSS one?
&gt; 
&gt; It’s not obvious that the string argument here is the name of the rule, so
&gt; there should be an argument name &quot;name&quot; here.
&gt; 
&gt; I suggest either StringView (preferred) or const String&amp; as the type so we
&gt; don’t do unnecessary reference count churn.

Changed to `void keyframesRuleDidChange(const String&amp; name);`

&gt; &gt; Source/WebCore/dom/Element.cpp:4067
&gt; &gt; +    if (auto* animationData = animationRareData(pseudoId))
&gt; &gt; +        return animationData-&gt;isPendingKeyframesUpdate();
&gt; &gt; +    return false;
&gt; 
&gt; How I would write this:
&gt; 
&gt;     auto data = animationRareData(pseudoId);
&gt;     return data &amp;&amp; data-&gt;isPendingKeyframesUpdate();

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828561</commentid>
    <comment_count>6</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-01-06 04:14:14 -0800</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #3)
&gt; Comment on attachment 448426 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=448426&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/css/CSSKeyframesRule.cpp:168
&gt; &gt;&gt; +    if (CSSStyleSheet* parent = parentStyleSheet()) {
&gt; &gt;&gt; +        if (Document* ownerDocument = parent-&gt;ownerDocument())
&gt; &gt;&gt; +            ownerDocument-&gt;cssKeyframesRuleDidChange(name());
&gt; &gt;&gt; +    }
&gt; &gt; 
&gt; &gt; Would be nice to not have this be pasted twice; a shared function perhaps. Separately, I suggest using auto more here.
&gt; 
&gt; The shared function exist already. This should be done in
&gt; CSSStyleSheet::didMutateRules. There should probably be a new
&gt; RuleMutationType for it.

This is addressed in the patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828604</commentid>
    <comment_count>7</comment_count>
      <attachid>448484</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-01-06 07:09:19 -0800</bug_when>
    <thetext>Comment on attachment 448484
Patch for landing

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

&gt; Source/WebCore/css/CSSStyleSheet.h:105
&gt; -        RuleMutationScope(CSSStyleSheet*, RuleMutationType = OtherMutation, StyleRuleKeyframes* insertedKeyframesRule = nullptr);
&gt; +        RuleMutationScope(CSSStyleSheet*, RuleMutationType = RuleMutationType::OtherMutation, StyleRuleKeyframes* insertedKeyframesRule = nullptr);
&gt;          RuleMutationScope(CSSRule*);

I think it would be better to add RuleMutationType argument to the second constructor version and use it for CSSKeyframesRule mutations (or just test for CSSKeyframesRule in the constructor to set the appropriate mutation type). The idea here is that the first constructor is used when stylesheet is itself mutated while the seconds is used when some rule mutates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828618</commentid>
    <comment_count>8</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-01-06 08:10:30 -0800</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #7)
&gt; Comment on attachment 448484 [details]
&gt; Patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=448484&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CSSStyleSheet.h:105
&gt; &gt; -        RuleMutationScope(CSSStyleSheet*, RuleMutationType = OtherMutation, StyleRuleKeyframes* insertedKeyframesRule = nullptr);
&gt; &gt; +        RuleMutationScope(CSSStyleSheet*, RuleMutationType = RuleMutationType::OtherMutation, StyleRuleKeyframes* insertedKeyframesRule = nullptr);
&gt; &gt;          RuleMutationScope(CSSRule*);
&gt; 
&gt; I think it would be better to add RuleMutationType argument to the second
&gt; constructor version and use it for CSSKeyframesRule mutations (or just test
&gt; for CSSKeyframesRule in the constructor to set the appropriate mutation
&gt; type). The idea here is that the first constructor is used when stylesheet
&gt; is itself mutated while the seconds is used when some rule mutates.

OK, I&apos;ll infer the mutation type from the CSSRule type and add a `String m_modifiedKeyframesRuleName` member to `RuleMutationScope` to track the modified @keyframes rule name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828622</commentid>
    <comment_count>9</comment_count>
      <attachid>448504</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-01-06 08:18:05 -0800</bug_when>
    <thetext>Created attachment 448504
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828648</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-06 09:36:15 -0800</bug_when>
    <thetext>Two other thoughts for refinement (tiny nits), neither urgent:

I think that &quot;hasPendingKeyframesUpdate&quot; would be better than &quot;isPendingKeyframesUpdate&quot;.

One place here we have &quot;is&lt;CSSAnimation&gt;(animation)&quot; but it should be &quot;is&lt;CSSAnimation&gt;(*animation)&quot; since fact that the set uses pointers is an implementation detail and the pointers can never be null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828694</commentid>
    <comment_count>11</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-01-06 11:57:46 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #10)
&gt; Two other thoughts for refinement (tiny nits), neither urgent:
&gt; 
&gt; I think that &quot;hasPendingKeyframesUpdate&quot; would be better than
&gt; &quot;isPendingKeyframesUpdate&quot;.

I went back and forth between the two while writing the patch, but this tips me over to the other side. I&apos;ve made that change to the commit.

&gt; One place here we have &quot;is&lt;CSSAnimation&gt;(animation)&quot; but it should be
&gt; &quot;is&lt;CSSAnimation&gt;(*animation)&quot; since fact that the set uses pointers is an
&gt; implementation detail and the pointers can never be null.

Are you saying that the HashSet iterator skips over null values?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828695</commentid>
    <comment_count>12</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-01-06 11:57:52 -0800</bug_when>
    <thetext>Committed r287707 (245793@trunk): &lt;https://commits.webkit.org/245793@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828696</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-06 11:59:40 -0800</bug_when>
    <thetext>&lt;rdar://problem/87212387&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828731</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-06 13:07:16 -0800</bug_when>
    <thetext>(In reply to Antoine Quint from comment #11)
&gt; (In reply to Darin Adler from comment #10)
&gt; &gt; I think that &quot;hasPendingKeyframesUpdate&quot; would be better than
&gt; &gt; &quot;isPendingKeyframesUpdate&quot;.
&gt; 
&gt; I went back and forth between the two while writing the patch, but this tips
&gt; me over to the other side. I&apos;ve made that change to the commit.

Great!

&gt; Are you saying that the HashSet iterator skips over null values?

Sort of. You can’t put a nullptr into a HashSet of pointers, no values in the set can be nullptr. And yes the iterator does skip the null values, technically they are empty buckets.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828816</commentid>
    <comment_count>15</comment_count>
      <attachid>448504</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-01-06 21:12:40 -0800</bug_when>
    <thetext>Comment on attachment 448504
Patch for landing

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

&gt; Source/WebCore/css/CSSStyleSheet.cpp:181
&gt; +    if (mutationType == RuleInsertion &amp;&amp; !contentsWereClonedForMutation &amp;&amp; !scope-&gt;activeStyleSheetsContains(this)) {
&gt; +        if (insertedKeyframesRule) {
&gt; +            if (auto* resolver = scope-&gt;resolverIfExists())
&gt; +                resolver-&gt;addKeyframeStyle(*insertedKeyframesRule);
&gt; +            return;
&gt; +        }
&gt; +        scope-&gt;didChangeActiveStyleSheetCandidates();
&gt; +        return;
&gt; +    }

We don&apos;t need two copies if this section of code!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828834</commentid>
    <comment_count>16</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-01-07 00:29:16 -0800</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #15)
&gt; Comment on attachment 448504 [details]
&gt; Patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=448504&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CSSStyleSheet.cpp:181
&gt; &gt; +    if (mutationType == RuleInsertion &amp;&amp; !contentsWereClonedForMutation &amp;&amp; !scope-&gt;activeStyleSheetsContains(this)) {
&gt; &gt; +        if (insertedKeyframesRule) {
&gt; &gt; +            if (auto* resolver = scope-&gt;resolverIfExists())
&gt; &gt; +                resolver-&gt;addKeyframeStyle(*insertedKeyframesRule);
&gt; &gt; +            return;
&gt; &gt; +        }
&gt; &gt; +        scope-&gt;didChangeActiveStyleSheetCandidates();
&gt; &gt; +        return;
&gt; &gt; +    }
&gt; 
&gt; We don&apos;t need two copies if this section of code!

Oh no! Fixed in r287741.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828840</commentid>
    <comment_count>17</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-01-07 00:44:15 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #14)
&gt; (In reply to Antoine Quint from comment #11)
&gt; &gt; Are you saying that the HashSet iterator skips over null values?
&gt; 
&gt; Sort of. You can’t put a nullptr into a HashSet of pointers, no values in
&gt; the set can be nullptr. And yes the iterator does skip the null values,
&gt; technically they are empty buckets.

Filed a patch to remove the null checks in bug 234948.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1917903</commentid>
    <comment_count>18</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-12-09 04:07:45 -0800</bug_when>
    <thetext>*** Bug 210989 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448426</attachid>
            <date>2022-01-05 13:34:56 -0800</date>
            <delta_ts>2022-01-05 15:17:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234895-20220105223454.patch</filename>
            <type>text/plain</type>
            <size>20793</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDQwOGYzOTNlN2ZkMTJk
YzU0N2NjNDk2YTgxZjIxOTUwMjU5NWUzZi4uMDM3NmVmMzYxNTFhZThhYjU2NDBhZDFhM2QwZTRm
YjUxMjIwOTQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIyLTAxLTA1ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIFtXZWIgQW5pbWF0aW9u
c10gaW5zZXJ0aW5nIGEgcnVsZSB3aXRoaW4gYSBAa2V5ZnJhbWVzIHJ1bGUgc2hvdWxkIHVwZGF0
ZSBhbmltYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzQ4OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVc2luZyB0aGUgQ1NTT00sIGl0IGlzIHBvc3NpYmxlIHRvIGluc2VydCBvciBkZWxldGUg
cnVsZXMgd2l0aGluIGFuIEBrZXlmcmFtZXMgcnVsZS4KKyAgICAgICAgSW4gZmFjdCwgdGhlcmUg
YXJlIHR3byBXUFQgdGhhdCBjaGVjayB0aGlzIGJlaGF2aW9yIHdpdGggdGhlIGdldEtleWZyYW1l
cygpIGFuZAorICAgICAgICBzZXRLZXlmcmFtZXMoKSBtZXRob2RzLgorCisgICAgICAgIFRoaXMg
d291bGQgbm90IGhhdmUgYW55IGVmZmVjdCB1bnRpbCBub3cgYmVjYXVzZSB3aGVuIHdlIGNvbnNp
ZGVyIHdoZXRoZXIgdG8gaW52YWxpZGF0ZQorICAgICAgICBhbmltYXRpb25zIGluIFN0eWxlYWJs
ZTo6dXBkYXRlQ1NTQW5pbWF0aW9ucygpLCB3ZSBsb29rIGF0IHRoZSBwcmV2aW91cyBhbmQgY3Vy
cmVudAorICAgICAgICBBbmltYXRpb25MaXN0IGFuZCBkb24ndCBzZWUgYW55IGRpZmZlcmVuY2Ug
YmVjYXVzZSB3ZSBsb29rLCBhcyBmYXIgYXMga2V5ZnJhbWVzIGFyZQorICAgICAgICBjb25jZXJu
ZWQsIGF0IHRoZSBAa2V5ZnJhbWVzIG5hbWUgYnV0IG5vdCBhdCB0aGUga2V5ZnJhbWVzIGNvbnRl
bnQuCisKKyAgICAgICAgTm93LCB3aGVuIGEgcnVsZSBpcyBhZGRlZCBvciBkZWxldGVkIGZyb20g
YW4gQGtleWZyYW1lcyBydWxlIHVzaW5nIHRoZSBDU1NPTSwgd2Ugbm90aWZ5CisgICAgICAgIHRo
ZSBEb2N1bWVudCB1c2luZyB0aGUgbmV3IGNzc0tleWZyYW1lc1J1bGVEaWRDaGFuZ2UoKSBtZXRo
b2QsIHdoaWNoIGluIHR1cm4gY2hlY2tzIGFsbAorICAgICAgICBDU1NBbmltYXRpb24gb2JqZWN0
cyBhcHBsaWVkIHRvIGVsZW1lbnRzIGluIHRoYXQgZG9jdW1lbnQgdXNpbmcgdGhhdCBAa2V5ZnJh
bWVzIHJ1bGUKKyAgICAgICAgYW5kIG5vdGlmaWVzIHRoZW0gb2YgdGhlIGNoYW5nZSBieSBjYWxs
aW5nIGtleWZyYW1lc1J1bGVEaWRDaGFuZ2UoKS4KKworICAgICAgICBUaGlzIGNsZWFycyB0aGUg
a2V5ZnJhbWVzIG9uIHRoZSBhc3NvY2lhdGVkIEtleWZyYW1lRWZmZWN0LCBpbnZhbGlkYXRlcyB0
aGUgdGFyZ2V0CisgICAgICAgIGFuZCBzZXRzIGEgZmxhZyBvbiB0aGUgRWxlbWVudEFuaW1hdGlv
blJhcmVEYXRhIHRoYXQgdGhpcyBlbGVtZW50IGlzIHBlbmRpbmcgdXBkYXRlCisgICAgICAgIHRv
IGl0cyBDU1MgQW5pbWF0aW9ucycga2V5ZnJhbWUgc3VjaCB0aGF0IGR1cmluZyB0aGUgbmV4dCBj
YWxsCisgICAgICAgIFN0eWxlYWJsZTo6dXBkYXRlQ1NTQW5pbWF0aW9ucygpIHdlIGZvcmNlIHRo
ZSB1cGRhdGUgZXZlbiBpZiB0aGUgcHJldmlvdXMgYW5kIGN1cnJlbnQKKyAgICAgICAgQW5pbWF0
aW9uTGlzdCBsb29rIGlkZW50aWNhbC4KKworICAgICAgICBEdXJpbmcgdGhhdCBuZXh0IGNhbGwg
dG8gU3R5bGVhYmxlOjp1cGRhdGVDU1NBbmltYXRpb25zKCksIHdlIHdpbGwgY2FsbCBpbnRvIHRo
ZSBuZXcKKyAgICAgICAgQ1NTQW5pbWF0aW9uOjp1cGRhdGVLZXlmcmFtZXNJZk5lZWRlZCgpIHdo
aWNoIHdpbGwgcmUtY29tcHV0ZSB0aGUga2V5ZnJhbWVzIGJhc2VkIG9uIHRoZQorICAgICAgICBj
dXJyZW50IHNldCBvZiBydWxlcyB3aXRoaW4gdGhlIEBrZXlmcmFtZXMgcnVsZS4KKworICAgICAg
ICBUaGUgZmluYWwgcGllY2Ugb2Ygd29yayByZXF1aXJlZCBpcyB0byB0cmFjayB3aGVuIHNldEtl
eWZyYW1lcygpIGlzIGNhbGxlZCBvbiB0aGUgZWZmZWN0CisgICAgICAgIHRoYXQgdXBkYXRlcyB0
byB0aGUgQGtleWZyYW1lcyBydWxlIHNob3VsZCBubyBsb25nZXIgYXBwbHkgc2luY2UgdGhleSBr
ZXlmcmFtZXMgd2VyZSBvdmVycmlkZW4KKyAgICAgICAgYnkgdGhlIFdlYiBBbmltYXRpb25zIEFQ
SS4gVGhpcyBpcyBkb25lIGJ5IHNldHRpbmcgYW4gYWRkaXRpb25hbCBmbGFnIGluCisgICAgICAg
IENTU0FuaW1hdGlvbjo6ZWZmZWN0S2V5ZnJhbWVzV2VyZVNldFVzaW5nQmluZGluZ3MoKS4KKwor
ICAgICAgICAqIGFuaW1hdGlvbi9DU1NBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQW5pbWF0aW9uOjplZmZlY3RLZXlmcmFtZXNXZXJlU2V0VXNpbmdCaW5kaW5ncyk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NBbmltYXRpb246OmtleWZyYW1lc1J1bGVEaWRDaGFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTQW5pbWF0aW9uOjp1cGRhdGVLZXlmcmFtZXNJZk5lZWRlZCk6Cisg
ICAgICAgICogYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5oOgorICAgICAgICAqIGFuaW1hdGlvbi9F
bGVtZW50QW5pbWF0aW9uUmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBbmlt
YXRpb25SYXJlRGF0YTo6Y3NzQW5pbWF0aW9uc0RpZFVwZGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE6OmtleWZyYW1lc1J1bGVEaWRDaGFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudEFuaW1hdGlvblJhcmVEYXRhOjppc1BlbmRpbmdLZXlmcmFt
ZXNVcGRhdGUgY29uc3QpOgorICAgICAgICAqIGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6a2V5ZnJhbWVzUnVsZURpZENoYW5n
ZSk6CisgICAgICAgICogYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0Lmg6CisgICAgICAgICogY3Nz
L0NTU0tleWZyYW1lc1J1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTS2V5ZnJhbWVzUnVs
ZTo6YXBwZW5kUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NLZXlmcmFtZXNSdWxlOjpkZWxl
dGVSdWxlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmNzc0tleWZyYW1lc1J1bGVEaWRDaGFuZ2UpOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OmNzc0FuaW1hdGlvbnNEaWRVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6a2V5ZnJhbWVzUnVsZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpp
c1BlbmRpbmdLZXlmcmFtZXNVcGRhdGUgY29uc3QpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6
CisgICAgICAgICogc3R5bGUvU3R5bGVhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
YWJsZTo6dXBkYXRlQ1NTQW5pbWF0aW9ucyBjb25zdCk6CisgICAgICAgICogc3R5bGUvU3R5bGVh
YmxlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWFibGU6OmtleWZyYW1lc1J1bGVEaWRDaGFu
Z2UgY29uc3QpOgorCiAyMDIyLTAxLTA1ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBDU1MgYHRyYW5zZm9ybWAgcHJvcGVydHkgIHNob3VsZCB0YWtl
IGludG8gYWNjb3VudCB0cmFuc2Zvcm0gcmVmZXJlbmNlIGJveApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vQ1NTQW5pbWF0aW9uLmNwcAppbmRleCBiNzU2ZmI1NjA2ZjA3MDRlMzUxMDk4ZDk1NjAy
MTVhM2UwMjMzMTcxLi5mZmZmNTU4MzM1Yzk4NzhiNmE5OGIzNGZhMWIxYmI5NDhiOTFlZWUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uLmNwcApAQCAtMjM3LDkgKzIz
NywzMyBAQCB2b2lkIENTU0FuaW1hdGlvbjo6ZWZmZWN0S2V5ZnJhbWVzV2VyZVNldFVzaW5nQmlu
ZGluZ3MoKQogICAgIC8vIEFmdGVyIGEgc3VjY2Vzc2Z1bCBjYWxsIHRvIHNldEtleWZyYW1lcygp
IG9uIHRoZSBLZXlmcmFtZUVmZmVjdCBhc3NvY2lhdGVkIHdpdGggYSBDU1NBbmltYXRpb24sIGFu
eSBzdWJzZXF1ZW50IGNoYW5nZSB0bwogICAgIC8vIG1hdGNoaW5nIEBrZXlmcmFtZXMgcnVsZXMg
b3IgdGhlIHJlc29sdmVkIHZhbHVlIG9mIHRoZSBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uIHBy
b3BlcnR5IGZvciB0aGUgdGFyZ2V0IGVsZW1lbnQgd2lsbCBub3QKICAgICAvLyBiZSByZWZsZWN0
ZWQgaW4gdGhhdCBhbmltYXRpb24uCisgICAgbV9vdmVycmlkZGVuUHJvcGVydGllcy5hZGQoUHJv
cGVydHk6OktleWZyYW1lcyk7CiAgICAgbV9vdmVycmlkZGVuUHJvcGVydGllcy5hZGQoUHJvcGVy
dHk6OlRpbWluZ0Z1bmN0aW9uKTsKIH0KIAordm9pZCBDU1NBbmltYXRpb246OmtleWZyYW1lc1J1
bGVEaWRDaGFuZ2UoKQoreworICAgIGlmIChtX292ZXJyaWRkZW5Qcm9wZXJ0aWVzLmNvbnRhaW5z
KFByb3BlcnR5OjpLZXlmcmFtZXMpIHx8ICFpczxLZXlmcmFtZUVmZmVjdD4oZWZmZWN0KCkpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIG93bmluZ0VsZW1lbnQgPSB0aGlzLT5vd25pbmdF
bGVtZW50KCk7CisgICAgaWYgKCFvd25pbmdFbGVtZW50KQorICAgICAgICByZXR1cm47CisKKyAg
ICBkb3duY2FzdDxLZXlmcmFtZUVmZmVjdD4oKmVmZmVjdCgpKS5rZXlmcmFtZXNSdWxlRGlkQ2hh
bmdlKCk7CisgICAgb3duaW5nRWxlbWVudC0+a2V5ZnJhbWVzUnVsZURpZENoYW5nZSgpOworfQor
Cit2b2lkIENTU0FuaW1hdGlvbjo6dXBkYXRlS2V5ZnJhbWVzSWZOZWVkZWQoY29uc3QgUmVuZGVy
U3R5bGUqIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUsIGNvbnN0IFN0eWxl
OjpSZXNvbHV0aW9uQ29udGV4dCYgcmVzb2x1dGlvbkNvbnRleHQpCit7CisgICAgaWYgKG1fb3Zl
cnJpZGRlblByb3BlcnRpZXMuY29udGFpbnMoUHJvcGVydHk6OktleWZyYW1lcykgfHwgIWlzPEtl
eWZyYW1lRWZmZWN0PihlZmZlY3QoKSkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIGtl
eWZyYW1lRWZmZWN0ID0gZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KCplZmZlY3QoKSk7CisgICAg
aWYgKGtleWZyYW1lRWZmZWN0LmJsZW5kaW5nS2V5ZnJhbWVzKCkuaXNFbXB0eSgpKQorICAgICAg
ICBrZXlmcmFtZUVmZmVjdC5jb21wdXRlRGVjbGFyYXRpdmVBbmltYXRpb25CbGVuZGluZ0tleWZy
YW1lcyhvbGRTdHlsZSwgbmV3U3R5bGUsIHJlc29sdXRpb25Db250ZXh0KTsKK30KKwogUmVmPEFu
aW1hdGlvbkV2ZW50QmFzZT4gQ1NTQW5pbWF0aW9uOjpjcmVhdGVFdmVudChjb25zdCBBdG9tU3Ry
aW5nJiBldmVudFR5cGUsIGRvdWJsZSBlbGFwc2VkVGltZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9J
ZCwgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiB0aW1lbGluZVRpbWUpCiB7CiAgICAgcmV0dXJuIEFu
aW1hdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBtX2FuaW1hdGlvbk5hbWUsIGVsYXBzZWRU
aW1lLCBwc2V1ZG9JZCwgdGltZWxpbmVUaW1lLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9DU1NBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9DU1NBbmltYXRpb24uaAppbmRleCA1NWZiYzVjYzYxMzgzOTk0MzZmODJmZDFhNWRkNDQxMTA1
NzRlZjg4Li5lNDEzNGQ4OGU2NTgwYWZmZWRkODYzZTRiYjI1NDFjMTY0MTJkOTVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5oCkBAIC00Niw2ICs0Niw4IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgZWZmZWN0VGltaW5nV2FzVXBkYXRlZFVzaW5nQmluZGluZ3MoT3B0aW9u
YWxFZmZlY3RUaW1pbmcpOwogICAgIHZvaWQgZWZmZWN0S2V5ZnJhbWVzV2VyZVNldFVzaW5nQmlu
ZGluZ3MoKTsKKyAgICB2b2lkIGtleWZyYW1lc1J1bGVEaWRDaGFuZ2UoKTsKKyAgICB2b2lkIHVw
ZGF0ZUtleWZyYW1lc0lmTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSwgY29uc3Qg
UmVuZGVyU3R5bGUmIG5ld1N0eWxlLCBjb25zdCBTdHlsZTo6UmVzb2x1dGlvbkNvbnRleHQmKTsK
IAogcHJpdmF0ZToKICAgICBDU1NBbmltYXRpb24oY29uc3QgU3R5bGVhYmxlJiwgY29uc3QgQW5p
bWF0aW9uJik7CkBAIC01OSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRCaW5kaW5n
c1N0YXJ0VGltZShzdGQ6Om9wdGlvbmFsPGRvdWJsZT4pIGZpbmFsOwogICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IGJpbmRpbmdzUmV2ZXJzZSgpIGZpbmFsOwogCi0gICAgZW51bSBjbGFzcyBQcm9wZXJ0
eSA6IHVpbnQ4X3QgeworICAgIGVudW0gY2xhc3MgUHJvcGVydHkgOiB1aW50MTZfdCB7CiAgICAg
ICAgIE5hbWUgPSAxIDw8IDAsCiAgICAgICAgIER1cmF0aW9uID0gMSA8PCAxLAogICAgICAgICBU
aW1pbmdGdW5jdGlvbiA9IDEgPDwgMiwKQEAgLTY3LDcgKzY5LDggQEAgcHJpdmF0ZToKICAgICAg
ICAgRGlyZWN0aW9uID0gMSA8PCA0LAogICAgICAgICBQbGF5U3RhdGUgPSAxIDw8IDUsCiAgICAg
ICAgIERlbGF5ID0gMSA8PCA2LAotICAgICAgICBGaWxsTW9kZSA9IDEgPDwgNworICAgICAgICBG
aWxsTW9kZSA9IDEgPDwgNywKKyAgICAgICAgS2V5ZnJhbWVzID0gMSA8PCA4CiAgICAgfTsKIAog
ICAgIFN0cmluZyBtX2FuaW1hdGlvbk5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhLmgKaW5kZXggZDY5ZWU2OTg4ZmJlN2Q5YjQ3
NmRhNTAxNWM2OWI3MzQ4NDJhZGU5Ni4uZWUyMGE4ZjdiODU0OThiYWQwMWI3OWYwODIzMzcwZDdk
MjBmZTdiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0VsZW1lbnRBbmlt
YXRpb25SYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9FbGVtZW50QW5p
bWF0aW9uUmFyZURhdGEuaApAQCAtNTQsNiArNTQsOSBAQCBwdWJsaWM6CiAgICAgUHJvcGVydHlU
b1RyYW5zaXRpb25NYXAmIHJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoKSB7IHJldHVybiBt
X3J1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHk7IH0KICAgICBjb25zdCBSZW5kZXJTdHlsZSog
bGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFN0eWxlQ2hh
bmdlRXZlbnRTdHlsZS5nZXQoKTsgfQogICAgIHZvaWQgc2V0TGFzdFN0eWxlQ2hhbmdlRXZlbnRT
dHlsZShzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgUmVuZGVyU3R5bGU+JiYgc3R5bGUpIHsgbV9sYXN0
U3R5bGVDaGFuZ2VFdmVudFN0eWxlID0gV1RGTW92ZShzdHlsZSk7IH0KKyAgICB2b2lkIGNzc0Fu
aW1hdGlvbnNEaWRVcGRhdGUoKSB7IG1faXNQZW5kaW5nS2V5ZnJhbWVzVXBkYXRlID0gZmFsc2U7
IH0KKyAgICB2b2lkIGtleWZyYW1lc1J1bGVEaWRDaGFuZ2UoKSB7IG1faXNQZW5kaW5nS2V5ZnJh
bWVzVXBkYXRlID0gdHJ1ZTsgfQorICAgIGJvb2wgaXNQZW5kaW5nS2V5ZnJhbWVzVXBkYXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9pc1BlbmRpbmdLZXlmcmFtZXNVcGRhdGU7IH0KIAogcHJpdmF0ZToK
IApAQCAtNjQsNiArNjcsNyBAQCBwcml2YXRlOgogICAgIFByb3BlcnR5VG9UcmFuc2l0aW9uTWFw
IG1fY29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5OwogICAgIFByb3BlcnR5VG9UcmFuc2l0
aW9uTWFwIG1fcnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eTsKICAgICBQc2V1ZG9JZCBtX3Bz
ZXVkb0lkOworICAgIGJvb2wgbV9pc1BlbmRpbmdLZXlmcmFtZXNVcGRhdGUgeyBmYWxzZSB9Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9L
ZXlmcmFtZUVmZmVjdC5jcHAKaW5kZXggYzJjNzlkNzdmZTQxMDNhYjg2MGMzMGY5YTEyYjVjYTZk
YTQxMTgxOC4uNzVlYTk4NTE0MzExNmEwODEzNmJjOGVlZDA1ZWRjNWM1MzUxMmUwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCkBAIC03ODQsNiArNzg0
LDEzIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEtleWZyYW1lRWZmZWN0OjpzZXRLZXlmcmFtZXMoSlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplCiAgICAgcmV0dXJuIHByb2Nlc3NLZXlmcmFt
ZXNSZXN1bHQ7CiB9CiAKK3ZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmtleWZyYW1lc1J1bGVEaWRDaGFu
Z2UoKQoreworICAgIEFTU0VSVChpczxDU1NBbmltYXRpb24+KGFuaW1hdGlvbigpKSk7CisgICAg
Y2xlYXJCbGVuZGluZ0tleWZyYW1lcygpOworICAgIGludmFsaWRhdGUoKTsKK30KKwogRXhjZXB0
aW9uT3I8dm9pZD4gS2V5ZnJhbWVFZmZlY3Q6OnByb2Nlc3NLZXlmcmFtZXMoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIFN0cm9uZzxKU09iamVjdD4mJiBrZXlmcmFtZXNJbnB1
dCkKIHsKICAgICAvLyAxLiBJZiBvYmplY3QgaXMgbnVsbCwgcmV0dXJuIGFuIGVtcHR5IHNlcXVl
bmNlIG9mIGtleWZyYW1lcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9L
ZXlmcmFtZUVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0
LmgKaW5kZXggNGQ2ODQ0MWI4NDYxZDQ4NGJiNzFlOTQ5NGEyMjRkN2ZmYTU1NzE4YS4uMjU0NDA5
YzljYWY0MDcyOTNiODZiMTQ4NjFkODhhMzI1ZWE1MWQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0tleWZyYW1lRWZmZWN0LmgKQEAgLTE2OSw2ICsxNjksOCBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHN0b3BBY2NlbGVyYXRpbmdUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydGllcyhVc2VBY2Nl
bGVyYXRlZEFjdGlvbik7CiAKKyAgICB2b2lkIGtleWZyYW1lc1J1bGVEaWRDaGFuZ2UoKTsKKwog
cHJpdmF0ZToKICAgICBLZXlmcmFtZUVmZmVjdChFbGVtZW50KiwgUHNldWRvSWQpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKaW5kZXggMzY1MWVlYjNjOGU1OGE2ZGZi
ZmZmYTkxZTJlMGM5NDM3NWU1NmI0NS4uYjBhZTA1Mjc4ZDhkNTg2ODU4MDJjOTg2MWI4ZWIyOTc1
MmFhZTg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcApAQCAtMTYx
LDYgKzE2MSwxMSBAQCB2b2lkIENTU0tleWZyYW1lc1J1bGU6OmFwcGVuZFJ1bGUoY29uc3QgU3Ry
aW5nJiBydWxlVGV4dCkKICAgICBtX2tleWZyYW1lc1J1bGUtPndyYXBwZXJBcHBlbmRLZXlmcmFt
ZShrZXlmcmFtZS5yZWxlYXNlTm9uTnVsbCgpKTsKIAogICAgIG1fY2hpbGRSdWxlQ1NTT01XcmFw
cGVycy5ncm93KGxlbmd0aCgpKTsKKworICAgIGlmIChDU1NTdHlsZVNoZWV0KiBwYXJlbnQgPSBw
YXJlbnRTdHlsZVNoZWV0KCkpIHsKKyAgICAgICAgaWYgKERvY3VtZW50KiBvd25lckRvY3VtZW50
ID0gcGFyZW50LT5vd25lckRvY3VtZW50KCkpCisgICAgICAgICAgICBvd25lckRvY3VtZW50LT5j
c3NLZXlmcmFtZXNSdWxlRGlkQ2hhbmdlKG5hbWUoKSk7CisgICAgfQogfQogCiB2b2lkIENTU0tl
eWZyYW1lc1J1bGU6Omluc2VydFJ1bGUoY29uc3QgU3RyaW5nJiBydWxlVGV4dCkKQEAgLTE4Nyw2
ICsxOTIsMTEgQEAgdm9pZCBDU1NLZXlmcmFtZXNSdWxlOjpkZWxldGVSdWxlKGNvbnN0IFN0cmlu
ZyYgcykKICAgICBpZiAobV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzWyppXSkKICAgICAgICAgbV9j
aGlsZFJ1bGVDU1NPTVdyYXBwZXJzWyppXS0+c2V0UGFyZW50UnVsZShudWxscHRyKTsKICAgICBt
X2NoaWxkUnVsZUNTU09NV3JhcHBlcnMucmVtb3ZlKCppKTsKKworICAgIGlmIChDU1NTdHlsZVNo
ZWV0KiBwYXJlbnQgPSBwYXJlbnRTdHlsZVNoZWV0KCkpIHsKKyAgICAgICAgaWYgKERvY3VtZW50
KiBvd25lckRvY3VtZW50ID0gcGFyZW50LT5vd25lckRvY3VtZW50KCkpCisgICAgICAgICAgICBv
d25lckRvY3VtZW50LT5jc3NLZXlmcmFtZXNSdWxlRGlkQ2hhbmdlKG5hbWUoKSk7CisgICAgfQog
fQogCiBDU1NLZXlmcmFtZVJ1bGUqIENTU0tleWZyYW1lc1J1bGU6OmZpbmRSdWxlKGNvbnN0IFN0
cmluZyYgcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDQyZGFjZDJkZDVjZTNlNWY2MjMz
M2EyMTYyY2MzNzY3NDZlOGZiODkuLjY3MDRiYzQzNTRkNGI1YjVjZDQ1ZGRjYmJiMGU3YjM3MzU0
MTAyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1
ZGUgIkF0dHIuaCIKICNpbmNsdWRlICJCZWZvcmVVbmxvYWRFdmVudC5oIgogI2luY2x1ZGUgIkNE
QVRBU2VjdGlvbi5oIgorI2luY2x1ZGUgIkNTU0FuaW1hdGlvbi5oIgogI2luY2x1ZGUgIkNTU0Zv
bnRTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkNTU1N0eWxl
RGVjbGFyYXRpb24uaCIKQEAgLTg1NjksNiArODU3MCwyNCBAQCBWZWN0b3I8UmVmUHRyPFdlYkFu
aW1hdGlvbj4+IERvY3VtZW50OjptYXRjaGluZ0FuaW1hdGlvbnMoY29uc3QgRnVuY3Rpb248Ym9v
bChFbAogICAgIHJldHVybiBhbmltYXRpb25zOwogfQogCit2b2lkIERvY3VtZW50Ojpjc3NLZXlm
cmFtZXNSdWxlRGlkQ2hhbmdlKFN0cmluZyBuYW1lKQoreworICAgIGZvciAoYXV0byogYW5pbWF0
aW9uIDogV2ViQW5pbWF0aW9uOjppbnN0YW5jZXMoKSkgeworICAgICAgICBpZiAoIWlzPENTU0Fu
aW1hdGlvbj4oYW5pbWF0aW9uKSB8fCAhYW5pbWF0aW9uLT5pc1JlbGV2YW50KCkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvJiBjc3NBbmltYXRpb24gPSBkb3duY2FzdDxD
U1NBbmltYXRpb24+KCphbmltYXRpb24pOworICAgICAgICBpZiAoY3NzQW5pbWF0aW9uLmFuaW1h
dGlvbk5hbWUoKSAhPSBuYW1lKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0
byBvd25pbmdFbGVtZW50ID0gY3NzQW5pbWF0aW9uLm93bmluZ0VsZW1lbnQoKTsKKyAgICAgICAg
aWYgKCFvd25pbmdFbGVtZW50IHx8ICFvd25pbmdFbGVtZW50LT5lbGVtZW50LmlzQ29ubmVjdGVk
KCkgfHwgJm93bmluZ0VsZW1lbnQtPmVsZW1lbnQuZG9jdW1lbnQoKSAhPSB0aGlzKQorICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgY3NzQW5pbWF0aW9uLmtleWZyYW1lc1J1bGVEaWRD
aGFuZ2UoKTsKKyAgICB9Cit9CisKIHZvaWQgRG9jdW1lbnQ6OmFkZFRvcExheWVyRWxlbWVudChF
bGVtZW50JiBlbGVtZW50KQogewogICAgIFJFTEVBU0VfQVNTRVJUKCZlbGVtZW50LmRvY3VtZW50
KCkgPT0gdGhpcyAmJiBlbGVtZW50LmlzQ29ubmVjdGVkKCkgJiYgIWVsZW1lbnQuaXNJblRvcExh
eWVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA4MDVkMGNiNTZhNDBhOTJmYWQyMmI3N2Q3
ZWRmYzE2YWQ2NTU0ZjcyLi42YmQyMDYyMWQyMzk3YmM0ZDU3YTdjMWM5NTRjOTU3NzBjYTQ3N2I3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTUzOCw2ICsxNTM4LDcgQEAgcHVibGljOgogICAg
IFZlY3RvcjxSZWZQdHI8V2ViQW5pbWF0aW9uPj4gbWF0Y2hpbmdBbmltYXRpb25zKGNvbnN0IEZ1
bmN0aW9uPGJvb2woRWxlbWVudCYpPiYpOwogICAgIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxl
ciogdGltZWxpbmVzQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGltZWxpbmVzQ29udHJv
bGxlci5nZXQoKTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50VGltZWxpbmVzQ29udHJv
bGxlciYgZW5zdXJlVGltZWxpbmVzQ29udHJvbGxlcigpOworICAgIHZvaWQgY3NzS2V5ZnJhbWVz
UnVsZURpZENoYW5nZShTdHJpbmcpOwogCiAgICAgdm9pZCBhZGRUb3BMYXllckVsZW1lbnQoRWxl
bWVudCYpOwogICAgIHZvaWQgcmVtb3ZlVG9wTGF5ZXJFbGVtZW50KEVsZW1lbnQmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAppbmRleCBlZDI2MzU0NDI3OTI5MjI0MmExMWYxNTI2ZDg1NmVjOThlMzhj
ZGU5Li4wNWRmNWE3OTBjYWNjNzA3YmYxNTAwNWJkNTI0YWU3ZjlkN2I0YTUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCkBAIC00MDUwLDYgKzQwNTAsMjMgQEAgdm9pZCBFbGVtZW50OjpzZXRMYXN0
U3R5bGVDaGFuZ2VFdmVudFN0eWxlKFBzZXVkb0lkIHBzZXVkb0lkLCBzdGQ6OnVuaXF1ZV9wdHI8
Y28KICAgICAgICAgZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEocHNldWRvSWQpLnNldExhc3RTdHls
ZUNoYW5nZUV2ZW50U3R5bGUoV1RGTW92ZShzdHlsZSkpOwogfQogCit2b2lkIEVsZW1lbnQ6OmNz
c0FuaW1hdGlvbnNEaWRVcGRhdGUoUHNldWRvSWQgcHNldWRvSWQpCit7CisgICAgZW5zdXJlQW5p
bWF0aW9uUmFyZURhdGEocHNldWRvSWQpLmNzc0FuaW1hdGlvbnNEaWRVcGRhdGUoKTsKK30KKwor
dm9pZCBFbGVtZW50OjprZXlmcmFtZXNSdWxlRGlkQ2hhbmdlKFBzZXVkb0lkIHBzZXVkb0lkKQor
eworICAgIGVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKHBzZXVkb0lkKS5rZXlmcmFtZXNSdWxlRGlk
Q2hhbmdlKCk7Cit9CisKK2Jvb2wgRWxlbWVudDo6aXNQZW5kaW5nS2V5ZnJhbWVzVXBkYXRlKFBz
ZXVkb0lkIHBzZXVkb0lkKSBjb25zdAoreworICAgIGlmIChhdXRvKiBhbmltYXRpb25EYXRhID0g
YW5pbWF0aW9uUmFyZURhdGEocHNldWRvSWQpKQorICAgICAgICByZXR1cm4gYW5pbWF0aW9uRGF0
YS0+aXNQZW5kaW5nS2V5ZnJhbWVzVXBkYXRlKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2
b2lkIEVsZW1lbnQ6OmRpc2Nvbm5lY3RGcm9tUmVzaXplT2JzZXJ2ZXJzKCkKIHsKICAgICBhdXRv
KiBvYnNlcnZlckRhdGEgPSByZXNpemVPYnNlcnZlckRhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmlu
ZGV4IDNkOWQzOTQyNDAxOTE5OTY4MzcwZGUzYjk1MTc3NmJlOGYyZWQ0MDAuLmQwODQxMDFkOTMx
M2EzNzY4ZTdkMWU1ZjlhZTVhOGNmM2I3YzU1NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNTMy
LDYgKzUzMiwxMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgUmVuZGVyU3R5bGUqIGxhc3RTdHlsZUNo
YW5nZUV2ZW50U3R5bGUoUHNldWRvSWQpIGNvbnN0OwogICAgIHZvaWQgc2V0TGFzdFN0eWxlQ2hh
bmdlRXZlbnRTdHlsZShQc2V1ZG9JZCwgc3RkOjp1bmlxdWVfcHRyPGNvbnN0IFJlbmRlclN0eWxl
PiYmKTsKIAorICAgIHZvaWQgY3NzQW5pbWF0aW9uc0RpZFVwZGF0ZShQc2V1ZG9JZCk7CisgICAg
dm9pZCBrZXlmcmFtZXNSdWxlRGlkQ2hhbmdlKFBzZXVkb0lkKTsKKyAgICBib29sIGlzUGVuZGlu
Z0tleWZyYW1lc1VwZGF0ZShQc2V1ZG9JZCkgY29uc3Q7CisKICAgICBib29sIGlzSW5Ub3BMYXll
cigpIGNvbnN0IHsgcmV0dXJuIGhhc05vZGVGbGFnKE5vZGVGbGFnOjpJc0luVG9wTGF5ZXIpOyB9
CiAgICAgdm9pZCBhZGRUb1RvcExheWVyKCk7CiAgICAgdm9pZCByZW1vdmVGcm9tVG9wTGF5ZXIo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuY3BwCmluZGV4IGE4NmQzZjVmMjhjOTI4OGVkODEx
N2VjNDUyYWExZWNiNWQ2NDhiM2QuLmVhNTBlZWJiZTNmZWE4ZDFhODhiMDNmOTQ1NjRkYjc5ZmUx
NDYwNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVhYmxlLmNwcApAQCAtMjMwLDcgKzIzMCw3IEBA
IHZvaWQgU3R5bGVhYmxlOjp1cGRhdGVDU1NBbmltYXRpb25zKGNvbnN0IFJlbmRlclN0eWxlKiBj
dXJyZW50U3R5bGUsIGNvbnN0IFJlbmRlCiAKICAgICBhdXRvKiBjdXJyZW50QW5pbWF0aW9uTGlz
dCA9IG5ld1N0eWxlLmFuaW1hdGlvbnMoKTsKICAgICBhdXRvKiBwcmV2aW91c0FuaW1hdGlvbkxp
c3QgPSBrZXlmcmFtZUVmZmVjdFN0YWNrLmNzc0FuaW1hdGlvbkxpc3QoKTsKLSAgICBpZiAocHJl
dmlvdXNBbmltYXRpb25MaXN0ICYmICFwcmV2aW91c0FuaW1hdGlvbkxpc3QtPmlzRW1wdHkoKSAm
JiBuZXdTdHlsZS5oYXNBbmltYXRpb25zKCkgJiYgKihwcmV2aW91c0FuaW1hdGlvbkxpc3QpID09
ICoobmV3U3R5bGUuYW5pbWF0aW9ucygpKSkKKyAgICBpZiAoIWVsZW1lbnQuaXNQZW5kaW5nS2V5
ZnJhbWVzVXBkYXRlKHBzZXVkb0lkKSAmJiBwcmV2aW91c0FuaW1hdGlvbkxpc3QgJiYgIXByZXZp
b3VzQW5pbWF0aW9uTGlzdC0+aXNFbXB0eSgpICYmIG5ld1N0eWxlLmhhc0FuaW1hdGlvbnMoKSAm
JiAqKHByZXZpb3VzQW5pbWF0aW9uTGlzdCkgPT0gKihuZXdTdHlsZS5hbmltYXRpb25zKCkpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBDU1NBbmltYXRpb25Db2xsZWN0aW9uIG5ld0FuaW1hdGlv
bnM7CkBAIC0yNTcsNiArMjU3LDkgQEAgdm9pZCBTdHlsZWFibGU6OnVwZGF0ZUNTU0FuaW1hdGlv
bnMoY29uc3QgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgY29uc3QgUmVuZGUKICAgICAgICAg
ICAgICAgICAgICAgLy8gVGltaW5nIHByb3BlcnRpZXMgb3IgcGxheSBzdGF0ZSBtYXkgaGF2ZSBj
aGFuZ2VkIHNvIHdlIG5lZWQgdG8gdXBkYXRlIHRoZSBiYWNraW5nIGFuaW1hdGlvbiB3aXRoCiAg
ICAgICAgICAgICAgICAgICAgIC8vIHRoZSBBbmltYXRpb24gZm91bmQgaW4gdGhlIGN1cnJlbnQg
c3R5bGUuCiAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzQW5pbWF0aW9uLT5zZXRCYWNraW5n
QW5pbWF0aW9uKGN1cnJlbnRBbmltYXRpb24pOworICAgICAgICAgICAgICAgICAgICAvLyBLZXlm
cmFtZXMgbWF5IGhhdmUgYmVlbiBjbGVhcmVkIGlmIHRoZSBAa2V5ZnJhbWVzIHJ1bGVzIHdhcyBj
aGFuZ2VkIHNpbmNlCisgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBsYXN0IHN0eWxlIHVwZGF0
ZSwgc28gd2UgbXVzdCBlbnN1cmUga2V5ZnJhbWVzIGFyZSBwaWNrZWQgdXAuCisgICAgICAgICAg
ICAgICAgICAgIHByZXZpb3VzQW5pbWF0aW9uLT51cGRhdGVLZXlmcmFtZXNJZk5lZWRlZChjdXJy
ZW50U3R5bGUsIG5ld1N0eWxlLCByZXNvbHV0aW9uQ29udGV4dCk7CiAgICAgICAgICAgICAgICAg
ICAgIG5ld0FuaW1hdGlvbnMuYWRkKHByZXZpb3VzQW5pbWF0aW9uKTsKICAgICAgICAgICAgICAg
ICAgICAgLy8gUmVtb3ZlIHRoZSBtYXRjaGVkIGFuaW1hdGlvbiBmcm9tIHRoZSBsaXN0IG9mIHBy
ZXZpb3VzIGFuaW1hdGlvbnMgc28gd2UgbWF5IG5vdCBtYXRjaCBpdCBhZ2Fpbi4KICAgICAgICAg
ICAgICAgICAgICAgcHJldmlvdXNBbmltYXRpb25zLnJlbW92ZShwcmV2aW91c0FuaW1hdGlvbik7
CkBAIC0yODEsNiArMjg0LDggQEAgdm9pZCBTdHlsZWFibGU6OnVwZGF0ZUNTU0FuaW1hdGlvbnMo
Y29uc3QgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgY29uc3QgUmVuZGUKICAgICBzZXRBbmlt
YXRpb25zQ3JlYXRlZEJ5TWFya3VwKFdURk1vdmUobmV3QW5pbWF0aW9ucykpOwogCiAgICAga2V5
ZnJhbWVFZmZlY3RTdGFjay5zZXRDU1NBbmltYXRpb25MaXN0KGN1cnJlbnRBbmltYXRpb25MaXN0
KTsKKworICAgIGVsZW1lbnQuY3NzQW5pbWF0aW9uc0RpZFVwZGF0ZShwc2V1ZG9JZCk7CiB9CiAK
IHN0YXRpYyBLZXlmcmFtZUVmZmVjdCoga2V5ZnJhbWVFZmZlY3RGb3JFbGVtZW50QW5kUHJvcGVy
dHkoY29uc3QgU3R5bGVhYmxlJiBzdHlsZWFibGUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlYWJsZS5oCmluZGV4IDNhNTNiMzZjZjI0ZTU4YjRkZDhiYTRkMjY5ZTMx
MzlhOTU5Y2NjYjUuLjBkZjRiYjYyN2JlNzI0ZDgyZDc2OGE0YTAwZGUzMjY4ODU5ZmVlYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5oCkBAIC0xNDUsNiArMTQ1LDExIEBAIHN0cnVjdCBTdHls
ZWFibGUgewogICAgICAgICBlbGVtZW50LnNldExhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUocHNl
dWRvSWQsIFdURk1vdmUoc3R5bGUpKTsKICAgICB9CiAKKyAgICB2b2lkIGtleWZyYW1lc1J1bGVE
aWRDaGFuZ2UoKSBjb25zdAorICAgIHsKKyAgICAgICAgZWxlbWVudC5rZXlmcmFtZXNSdWxlRGlk
Q2hhbmdlKHBzZXVkb0lkKTsKKyAgICB9CisKICAgICB2b2lkIGVsZW1lbnRXYXNSZW1vdmVkKCkg
Y29uc3Q7CiAKICAgICB2b2lkIHdpbGxDaGFuZ2VSZW5kZXJlcigpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggYjMyOWZmNTY2NDAxNGZhN2U1NDZiZTgwMmUzMDI4MTBm
MzIxNjlkOS4uNjNiYzY0ODUxOWNjMWExNDcyYTEwY2I0MjZkNTdlMTg4ZWM0OTA2ZSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDEtMDUgIEFu
dG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dlYiBBbmltYXRp
b25zXSBpbnNlcnRpbmcgYSBydWxlIHdpdGhpbiBhIEBrZXlmcmFtZXMgcnVsZSBzaG91bGQgdXBk
YXRlIGFuaW1hdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzNDg5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE1hcmsgV1BUIHByb2dyZXNzaW9ucy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLWFuaW1hdGlvbnMvS2V5ZnJhbWVFZmZlY3QtZ2V0S2V5ZnJhbWVzLnRlbnRh
dGl2ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
YW5pbWF0aW9ucy9LZXlmcmFtZUVmZmVjdC1zZXRLZXlmcmFtZXMudGVudGF0aXZlLWV4cGVjdGVk
LnR4dDoKKwogMjAyMi0wMS0wNSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgQ1NTIGB0cmFuc2Zvcm1gIHByb3BlcnR5ICBzaG91bGQgdGFrZSBpbnRv
IGFjY291bnQgdHJhbnNmb3JtIHJlZmVyZW5jZSBib3gKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1hbmltYXRpb25zL0tleWZy
YW1lRWZmZWN0LWdldEtleWZyYW1lcy50ZW50YXRpdmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWFuaW1hdGlvbnMvS2V5
ZnJhbWVFZmZlY3QtZ2V0S2V5ZnJhbWVzLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKaW5kZXggZGE1
ZTk0OGNkODdlYmU5NWQ2YWJhNGYwZjQyZmRhZjI5NTAxN2U2Mi4uOGVhN2U4MTMzODJlZDVlMGU0
N2RjNGI3MjFlYTc5ZWIxNjk1ZDQwNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWFuaW1hdGlvbnMvS2V5ZnJhbWVFZmZlY3Qt
Z2V0S2V5ZnJhbWVzLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWFuaW1hdGlvbnMvS2V5ZnJhbWVF
ZmZlY3QtZ2V0S2V5ZnJhbWVzLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKQEAgLTIzLDUgKzIzLDUg
QEAgRkFJTCBLZXlmcmFtZUVmZmVjdC5nZXRLZXlmcmFtZXMoKSByZXR1cm5zIGV4cGVjdGVkIHZh
bHVlcyBmb3IgYW5pbWF0aW9ucyB3aXRoIEMKIFBBU1MgS2V5ZnJhbWVFZmZlY3QuZ2V0S2V5ZnJh
bWVzKCkgcmV0dXJucyBleHBlY3RlZCB2YWx1ZXMgZm9yIGFuaW1hdGlvbnMgd2l0aCBDU1MgdmFy
aWFibGVzIGFzIGtleWZyYW1lIHZhbHVlcyBpbiBhIHNob3J0aGFuZCBwcm9wZXJ0eQogUEFTUyBL
ZXlmcmFtZUVmZmVjdC5nZXRLZXlmcmFtZXMoKSByZXR1cm5zIGV4cGVjdGVkIHZhbHVlcyBmb3Ig
YW5pbWF0aW9ucyB3aXRoIGEgQ1NTIHZhcmlhYmxlIHdoaWNoIGlzIG92ZXJyaWRlbiBieSB0aGUg
dmFsdWUgaW4ga2V5ZnJhbWUKIEZBSUwgS2V5ZnJhbWVFZmZlY3QuZ2V0S2V5ZnJhbWVzKCkgcmV0
dXJucyBleHBlY3RlZCB2YWx1ZXMgZm9yIGFuaW1hdGlvbnMgd2l0aCBvbmx5IGN1c3RvbSBwcm9w
ZXJ0eSBpbiBhIGtleWZyYW1lIGFzc2VydF9lcXVhbHM6IHZhbHVlIGZvciAndHJhbnNmb3JtJyBv
biBLZXlmcmFtZSAjMCBzaG91bGQgbWF0Y2ggZXhwZWN0ZWQgInRyYW5zbGF0ZSgxMDBweCkiIGJ1
dCBnb3QgIm1hdHJpeCgxLCAwLCAwLCAxLCAxMDAsIDApIgotRkFJTCBLZXlmcmFtZUVmZmVjdC5n
ZXRLZXlmcmFtZXMoKSByZWZsZWN0cyBjaGFuZ2VzIHRvIEBrZXlmcmFtZXMgcnVsZXMgYXNzZXJ0
X2VxdWFsczogdmFsdWUgZm9yICdsZWZ0JyBvbiBLZXlmcmFtZXMgcmVmbGVjdHMgdGhlIHVwZGF0
ZWQgQGtleWZyYW1lcyBydWxlIHNob3VsZCBtYXRjaCBleHBlY3RlZCAiMjAwcHgiIGJ1dCBnb3Qg
IjEwMHB4IgorUEFTUyBLZXlmcmFtZUVmZmVjdC5nZXRLZXlmcmFtZXMoKSByZWZsZWN0cyBjaGFu
Z2VzIHRvIEBrZXlmcmFtZXMgcnVsZXMKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWFuaW1hdGlvbnMvS2V5ZnJhbWVFZmZl
Y3Qtc2V0S2V5ZnJhbWVzLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtYW5pbWF0aW9ucy9LZXlmcmFtZUVm
ZmVjdC1zZXRLZXlmcmFtZXMudGVudGF0aXZlLWV4cGVjdGVkLnR4dAppbmRleCBiMDUyY2E1OWRh
ZTliNzA2ODhjODRiNzBlYjE5NDlkMjIzMGViMDY0Li41MThlMWY5YTc3ODhkNjU4MjY1ZTMzNTA4
MmY5ZWI3YTY2YjBlYmZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtYW5pbWF0aW9ucy9LZXlmcmFtZUVmZmVjdC1zZXRLZXlm
cmFtZXMudGVudGF0aXZlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtYW5pbWF0aW9ucy9LZXlmcmFtZUVmZmVjdC1z
ZXRLZXlmcmFtZXMudGVudGF0aXZlLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKIAogUEFT
UyBLZXlmcmFtZUVmZmVjdC5zZXRLZXlmcmFtZXMoKSBjYXVzZXMgc3Vic2VxdWVudCBjaGFuZ2Vz
IHRvIEBrZXlmcmFtZXMgcnVsZXMgdG8gYmUgaWdub3JlZAogUEFTUyBLZXlmcmFtZUVmZmVjdC5z
ZXRLZXlmcmFtZXMoKSBjYXVzZXMgc3Vic2VxdWVudCBjaGFuZ2VzIHRvIGFuaW1hdGlvbi10aW1p
bmctZnVuY3Rpb24gdG8gYmUgaWdub3JlZAotRkFJTCBLZXlmcmFtZUVmZmVjdC5zZXRLZXlmcmFt
ZXMoKSBzaG91bGQgTk9UIGNhdXNlIHN1YnNlcXVlbnQgY2hhbmdlcyB0byBAa2V5ZnJhbWVzIHJ1
bGVzIHRvIGJlIGlnbm9yZWQgaWYgaXQgdGhyZXcgYXNzZXJ0X2VxdWFsczogdmFsdWUgZm9yICds
ZWZ0JyBvbiBLZXlmcmFtZXMgcmVmbGVjdCB0aGUgdmFsdWUgc2V0IHZpYSBzdHlsZSBzaG91bGQg
bWF0Y2ggZXhwZWN0ZWQgIjMwMHB4IiBidXQgZ290ICIxMDBweCIKK1BBU1MgS2V5ZnJhbWVFZmZl
Y3Quc2V0S2V5ZnJhbWVzKCkgc2hvdWxkIE5PVCBjYXVzZSBzdWJzZXF1ZW50IGNoYW5nZXMgdG8g
QGtleWZyYW1lcyBydWxlcyB0byBiZSBpZ25vcmVkIGlmIGl0IHRocmV3CiAK
</data>
<flag name="review"
          id="474288"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448484</attachid>
            <date>2022-01-06 03:50:10 -0800</date>
            <delta_ts>2022-01-06 08:17:14 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-234895-20220106125009.patch</filename>
            <type>text/plain</type>
            <size>24666</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3Njc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzFmNDAzZjY5MzY1NjU0
YThlMTQ1MzA0MzQ3NTc1YWMxY2NlYjU4NC4uNTNiODE5ZGJkYTk3MDFkMTlmYjQyMjlmNzk0NGFl
YzY4YzQzZGY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDIyLTAxLTA2ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIFtXZWIgQW5pbWF0aW9u
c10gaW5zZXJ0aW5nIGEgcnVsZSB3aXRoaW4gYSBAa2V5ZnJhbWVzIHJ1bGUgc2hvdWxkIHVwZGF0
ZSBhbmltYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzQ4OTUKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAg
ICBVc2luZyB0aGUgQ1NTT00sIGl0IGlzIHBvc3NpYmxlIHRvIGluc2VydCBvciBkZWxldGUgcnVs
ZXMgd2l0aGluIGFuIEBrZXlmcmFtZXMgcnVsZS4KKyAgICAgICAgSW4gZmFjdCwgdGhlcmUgYXJl
IHR3byBXUFQgdGhhdCBjaGVjayB0aGlzIGJlaGF2aW9yIHdpdGggdGhlIGdldEtleWZyYW1lcygp
IGFuZAorICAgICAgICBzZXRLZXlmcmFtZXMoKSBtZXRob2RzLgorCisgICAgICAgIFRoaXMgd291
bGQgbm90IGhhdmUgYW55IGVmZmVjdCB1bnRpbCBub3cgYmVjYXVzZSB3aGVuIHdlIGNvbnNpZGVy
IHdoZXRoZXIgdG8gaW52YWxpZGF0ZQorICAgICAgICBhbmltYXRpb25zIGluIFN0eWxlYWJsZTo6
dXBkYXRlQ1NTQW5pbWF0aW9ucygpLCB3ZSBsb29rIGF0IHRoZSBwcmV2aW91cyBhbmQgY3VycmVu
dAorICAgICAgICBBbmltYXRpb25MaXN0IGFuZCBkb24ndCBzZWUgYW55IGRpZmZlcmVuY2UgYmVj
YXVzZSB3ZSBsb29rLCBhcyBmYXIgYXMga2V5ZnJhbWVzIGFyZQorICAgICAgICBjb25jZXJuZWQs
IGF0IHRoZSBAa2V5ZnJhbWVzIG5hbWUgYnV0IG5vdCBhdCB0aGUga2V5ZnJhbWVzIGNvbnRlbnQu
CisKKyAgICAgICAgTm93LCB3aGVuIGEgcnVsZSBpcyBhZGRlZCBvciBkZWxldGVkIGZyb20gYW4g
QGtleWZyYW1lcyBydWxlIHVzaW5nIHRoZSBDU1NPTSwgd2Ugbm90aWZ5CisgICAgICAgIHRoZSBE
b2N1bWVudCB1c2luZyB0aGUgbmV3IGtleWZyYW1lc1J1bGVEaWRDaGFuZ2UoKSBtZXRob2QsIHdo
aWNoIGluIHR1cm4gY2hlY2tzIGFsbAorICAgICAgICBDU1NBbmltYXRpb24gb2JqZWN0cyBhcHBs
aWVkIHRvIGVsZW1lbnRzIGluIHRoYXQgZG9jdW1lbnQgdXNpbmcgdGhhdCBAa2V5ZnJhbWVzIHJ1
bGUKKyAgICAgICAgYW5kIG5vdGlmaWVzIHRoZW0gb2YgdGhlIGNoYW5nZSBieSBjYWxsaW5nIGtl
eWZyYW1lc1J1bGVEaWRDaGFuZ2UoKS4KKworICAgICAgICBUaGlzIGNsZWFycyB0aGUga2V5ZnJh
bWVzIG9uIHRoZSBhc3NvY2lhdGVkIEtleWZyYW1lRWZmZWN0LCBpbnZhbGlkYXRlcyB0aGUgdGFy
Z2V0CisgICAgICAgIGFuZCBzZXRzIGEgZmxhZyBvbiB0aGUgRWxlbWVudEFuaW1hdGlvblJhcmVE
YXRhIHRoYXQgdGhpcyBlbGVtZW50IGlzIHBlbmRpbmcgdXBkYXRlCisgICAgICAgIHRvIGl0cyBD
U1MgQW5pbWF0aW9ucycga2V5ZnJhbWUgc3VjaCB0aGF0IGR1cmluZyB0aGUgbmV4dCBjYWxsCisg
ICAgICAgIFN0eWxlYWJsZTo6dXBkYXRlQ1NTQW5pbWF0aW9ucygpIHdlIGZvcmNlIHRoZSB1cGRh
dGUgZXZlbiBpZiB0aGUgcHJldmlvdXMgYW5kIGN1cnJlbnQKKyAgICAgICAgQW5pbWF0aW9uTGlz
dCBsb29rIGlkZW50aWNhbC4KKworICAgICAgICBEdXJpbmcgdGhhdCBuZXh0IGNhbGwgdG8gU3R5
bGVhYmxlOjp1cGRhdGVDU1NBbmltYXRpb25zKCksIHdlIHdpbGwgY2FsbCBpbnRvIHRoZSBuZXcK
KyAgICAgICAgQ1NTQW5pbWF0aW9uOjp1cGRhdGVLZXlmcmFtZXNJZk5lZWRlZCgpIHdoaWNoIHdp
bGwgcmUtY29tcHV0ZSB0aGUga2V5ZnJhbWVzIGJhc2VkIG9uIHRoZQorICAgICAgICBjdXJyZW50
IHNldCBvZiBydWxlcyB3aXRoaW4gdGhlIEBrZXlmcmFtZXMgcnVsZS4KKworICAgICAgICBUaGUg
ZmluYWwgcGllY2Ugb2Ygd29yayByZXF1aXJlZCBpcyB0byB0cmFjayB3aGVuIHNldEtleWZyYW1l
cygpIGlzIGNhbGxlZCBvbiB0aGUgZWZmZWN0CisgICAgICAgIHRoYXQgdXBkYXRlcyB0byB0aGUg
QGtleWZyYW1lcyBydWxlIHNob3VsZCBubyBsb25nZXIgYXBwbHkgc2luY2UgdGhleSBrZXlmcmFt
ZXMgd2VyZSBvdmVycmlkZW4KKyAgICAgICAgYnkgdGhlIFdlYiBBbmltYXRpb25zIEFQSS4gVGhp
cyBpcyBkb25lIGJ5IHNldHRpbmcgYW4gYWRkaXRpb25hbCBmbGFnIGluCisgICAgICAgIENTU0Fu
aW1hdGlvbjo6ZWZmZWN0S2V5ZnJhbWVzV2VyZVNldFVzaW5nQmluZGluZ3MoKS4KKworICAgICAg
ICAqIGFuaW1hdGlvbi9DU1NBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQW5p
bWF0aW9uOjplZmZlY3RLZXlmcmFtZXNXZXJlU2V0VXNpbmdCaW5kaW5ncyk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NBbmltYXRpb246OmtleWZyYW1lc1J1bGVEaWRDaGFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTQW5pbWF0aW9uOjp1cGRhdGVLZXlmcmFtZXNJZk5lZWRlZCk6CisgICAgICAg
ICogYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5oOgorICAgICAgICAqIGFuaW1hdGlvbi9FbGVtZW50
QW5pbWF0aW9uUmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBbmltYXRpb25S
YXJlRGF0YTo6Y3NzQW5pbWF0aW9uc0RpZFVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50QW5pbWF0aW9uUmFyZURhdGE6OmtleWZyYW1lc1J1bGVEaWRDaGFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudEFuaW1hdGlvblJhcmVEYXRhOjppc1BlbmRpbmdLZXlmcmFtZXNVcGRh
dGUgY29uc3QpOgorICAgICAgICAqIGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6a2V5ZnJhbWVzUnVsZURpZENoYW5nZSk6Cisg
ICAgICAgICogYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0Lmg6CisgICAgICAgICogY3NzL0NTU0tl
eWZyYW1lc1J1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTS2V5ZnJhbWVzUnVsZTo6YXBw
ZW5kUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NLZXlmcmFtZXNSdWxlOjpkZWxldGVSdWxl
KToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NTdHlsZVNoZWV0OjpkaWRNdXRhdGVSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHls
ZVNoZWV0OjppbnNlcnRSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OlJ1
bGVNdXRhdGlvblNjb3BlOjpSdWxlTXV0YXRpb25TY29wZSk6CisgICAgICAgICogY3NzL0NTU1N0
eWxlU2hlZXQuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmtleWZyYW1lc1J1bGVEaWRDaGFuZ2UpOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OmNzc0FuaW1hdGlvbnNEaWRVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6a2V5ZnJhbWVzUnVsZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpp
c1BlbmRpbmdLZXlmcmFtZXNVcGRhdGUgY29uc3QpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6
CisgICAgICAgICogc3R5bGUvU3R5bGVhYmxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
YWJsZTo6dXBkYXRlQ1NTQW5pbWF0aW9ucyBjb25zdCk6CisgICAgICAgICogc3R5bGUvU3R5bGVh
YmxlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWFibGU6OmtleWZyYW1lc1J1bGVEaWRDaGFu
Z2UgY29uc3QpOgorCiAyMDIyLTAxLTA1ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQu
b3JnPgogCiAgICAgICAgIGNvbXB1dGVkIHN0eWxlIGZvciB0cmFuc2l0aW9uIGxvbmdoYW5kIHBy
b3BlcnRpZXMgaXMgd3JvbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9D
U1NBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5j
cHAKaW5kZXggYjc1NmZiNTYwNmYwNzA0ZTM1MTA5OGQ5NTYwMjE1YTNlMDIzMzE3MS4uZmZmZjU1
ODMzNWM5ODc4YjZhOThiMzRmYTFiMWJiOTQ4YjkxZWVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL0NTU0FuaW1hdGlvbi5jcHAKQEAgLTIzNyw5ICsyMzcsMzMgQEAgdm9pZCBDU1NBbmlt
YXRpb246OmVmZmVjdEtleWZyYW1lc1dlcmVTZXRVc2luZ0JpbmRpbmdzKCkKICAgICAvLyBBZnRl
ciBhIHN1Y2Nlc3NmdWwgY2FsbCB0byBzZXRLZXlmcmFtZXMoKSBvbiB0aGUgS2V5ZnJhbWVFZmZl
Y3QgYXNzb2NpYXRlZCB3aXRoIGEgQ1NTQW5pbWF0aW9uLCBhbnkgc3Vic2VxdWVudCBjaGFuZ2Ug
dG8KICAgICAvLyBtYXRjaGluZyBAa2V5ZnJhbWVzIHJ1bGVzIG9yIHRoZSByZXNvbHZlZCB2YWx1
ZSBvZiB0aGUgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbiBwcm9wZXJ0eSBmb3IgdGhlIHRhcmdl
dCBlbGVtZW50IHdpbGwgbm90CiAgICAgLy8gYmUgcmVmbGVjdGVkIGluIHRoYXQgYW5pbWF0aW9u
LgorICAgIG1fb3ZlcnJpZGRlblByb3BlcnRpZXMuYWRkKFByb3BlcnR5OjpLZXlmcmFtZXMpOwog
ICAgIG1fb3ZlcnJpZGRlblByb3BlcnRpZXMuYWRkKFByb3BlcnR5OjpUaW1pbmdGdW5jdGlvbik7
CiB9CiAKK3ZvaWQgQ1NTQW5pbWF0aW9uOjprZXlmcmFtZXNSdWxlRGlkQ2hhbmdlKCkKK3sKKyAg
ICBpZiAobV9vdmVycmlkZGVuUHJvcGVydGllcy5jb250YWlucyhQcm9wZXJ0eTo6S2V5ZnJhbWVz
KSB8fCAhaXM8S2V5ZnJhbWVFZmZlY3Q+KGVmZmVjdCgpKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYXV0byBvd25pbmdFbGVtZW50ID0gdGhpcy0+b3duaW5nRWxlbWVudCgpOworICAgIGlmICgh
b3duaW5nRWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZG93bmNhc3Q8S2V5ZnJhbWVF
ZmZlY3Q+KCplZmZlY3QoKSkua2V5ZnJhbWVzUnVsZURpZENoYW5nZSgpOworICAgIG93bmluZ0Vs
ZW1lbnQtPmtleWZyYW1lc1J1bGVEaWRDaGFuZ2UoKTsKK30KKwordm9pZCBDU1NBbmltYXRpb246
OnVwZGF0ZUtleWZyYW1lc0lmTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSwgY29u
c3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlLCBjb25zdCBTdHlsZTo6UmVzb2x1dGlvbkNvbnRleHQm
IHJlc29sdXRpb25Db250ZXh0KQoreworICAgIGlmIChtX292ZXJyaWRkZW5Qcm9wZXJ0aWVzLmNv
bnRhaW5zKFByb3BlcnR5OjpLZXlmcmFtZXMpIHx8ICFpczxLZXlmcmFtZUVmZmVjdD4oZWZmZWN0
KCkpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBrZXlmcmFtZUVmZmVjdCA9IGRvd25j
YXN0PEtleWZyYW1lRWZmZWN0PigqZWZmZWN0KCkpOworICAgIGlmIChrZXlmcmFtZUVmZmVjdC5i
bGVuZGluZ0tleWZyYW1lcygpLmlzRW1wdHkoKSkKKyAgICAgICAga2V5ZnJhbWVFZmZlY3QuY29t
cHV0ZURlY2xhcmF0aXZlQW5pbWF0aW9uQmxlbmRpbmdLZXlmcmFtZXMob2xkU3R5bGUsIG5ld1N0
eWxlLCByZXNvbHV0aW9uQ29udGV4dCk7Cit9CisKIFJlZjxBbmltYXRpb25FdmVudEJhc2U+IENT
U0FuaW1hdGlvbjo6Y3JlYXRlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBkb3Vi
bGUgZWxhcHNlZFRpbWUsIGNvbnN0IFN0cmluZyYgcHNldWRvSWQsIHN0ZDo6b3B0aW9uYWw8U2Vj
b25kcz4gdGltZWxpbmVUaW1lKQogewogICAgIHJldHVybiBBbmltYXRpb25FdmVudDo6Y3JlYXRl
KGV2ZW50VHlwZSwgbV9hbmltYXRpb25OYW1lLCBlbGFwc2VkVGltZSwgcHNldWRvSWQsIHRpbWVs
aW5lVGltZSwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NT
QW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uLmgKaW5k
ZXggNTVmYmM1Y2M2MTM4Mzk5NDM2ZjgyZmQxYTVkZDQ0MTEwNTc0ZWY4OC4uZTQxMzRkODhlNjU4
MGFmZmVkZDg2M2U0YmIyNTQxYzE2NDEyZDk1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9D
U1NBbmltYXRpb24uaApAQCAtNDYsNiArNDYsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGVmZmVj
dFRpbWluZ1dhc1VwZGF0ZWRVc2luZ0JpbmRpbmdzKE9wdGlvbmFsRWZmZWN0VGltaW5nKTsKICAg
ICB2b2lkIGVmZmVjdEtleWZyYW1lc1dlcmVTZXRVc2luZ0JpbmRpbmdzKCk7CisgICAgdm9pZCBr
ZXlmcmFtZXNSdWxlRGlkQ2hhbmdlKCk7CisgICAgdm9pZCB1cGRhdGVLZXlmcmFtZXNJZk5lZWRl
ZChjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHls
ZSwgY29uc3QgU3R5bGU6OlJlc29sdXRpb25Db250ZXh0Jik7CiAKIHByaXZhdGU6CiAgICAgQ1NT
QW5pbWF0aW9uKGNvbnN0IFN0eWxlYWJsZSYsIGNvbnN0IEFuaW1hdGlvbiYpOwpAQCAtNTksNyAr
NjEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0QmluZGluZ3NTdGFydFRpbWUoc3RkOjpvcHRp
b25hbDxkb3VibGU+KSBmaW5hbDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBiaW5kaW5nc1JldmVy
c2UoKSBmaW5hbDsKIAotICAgIGVudW0gY2xhc3MgUHJvcGVydHkgOiB1aW50OF90IHsKKyAgICBl
bnVtIGNsYXNzIFByb3BlcnR5IDogdWludDE2X3QgewogICAgICAgICBOYW1lID0gMSA8PCAwLAog
ICAgICAgICBEdXJhdGlvbiA9IDEgPDwgMSwKICAgICAgICAgVGltaW5nRnVuY3Rpb24gPSAxIDw8
IDIsCkBAIC02Nyw3ICs2OSw4IEBAIHByaXZhdGU6CiAgICAgICAgIERpcmVjdGlvbiA9IDEgPDwg
NCwKICAgICAgICAgUGxheVN0YXRlID0gMSA8PCA1LAogICAgICAgICBEZWxheSA9IDEgPDwgNiwK
LSAgICAgICAgRmlsbE1vZGUgPSAxIDw8IDcKKyAgICAgICAgRmlsbE1vZGUgPSAxIDw8IDcsCisg
ICAgICAgIEtleWZyYW1lcyA9IDEgPDwgOAogICAgIH07CiAKICAgICBTdHJpbmcgbV9hbmltYXRp
b25OYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0VsZW1lbnRBbmlt
YXRpb25SYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0VsZW1lbnRBbmltYXRp
b25SYXJlRGF0YS5oCmluZGV4IGQ2OWVlNjk4OGZiZTdkOWI0NzZkYTUwMTVjNjliNzM0ODQyYWRl
OTYuLmVlMjBhOGY3Yjg1NDk4YmFkMDFiNzlmMDgyMzM3MGQ3ZDIwZmU3YjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9FbGVtZW50QW5pbWF0aW9uUmFyZURhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhLmgKQEAg
LTU0LDYgKzU0LDkgQEAgcHVibGljOgogICAgIFByb3BlcnR5VG9UcmFuc2l0aW9uTWFwJiBydW5u
aW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KCkgeyByZXR1cm4gbV9ydW5uaW5nVHJhbnNpdGlvbnNC
eVByb3BlcnR5OyB9CiAgICAgY29uc3QgUmVuZGVyU3R5bGUqIGxhc3RTdHlsZUNoYW5nZUV2ZW50
U3R5bGUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUuZ2V0KCk7
IH0KICAgICB2b2lkIHNldExhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUoc3RkOjp1bmlxdWVfcHRy
PGNvbnN0IFJlbmRlclN0eWxlPiYmIHN0eWxlKSB7IG1fbGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHls
ZSA9IFdURk1vdmUoc3R5bGUpOyB9CisgICAgdm9pZCBjc3NBbmltYXRpb25zRGlkVXBkYXRlKCkg
eyBtX2lzUGVuZGluZ0tleWZyYW1lc1VwZGF0ZSA9IGZhbHNlOyB9CisgICAgdm9pZCBrZXlmcmFt
ZXNSdWxlRGlkQ2hhbmdlKCkgeyBtX2lzUGVuZGluZ0tleWZyYW1lc1VwZGF0ZSA9IHRydWU7IH0K
KyAgICBib29sIGlzUGVuZGluZ0tleWZyYW1lc1VwZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNQ
ZW5kaW5nS2V5ZnJhbWVzVXBkYXRlOyB9CiAKIHByaXZhdGU6CiAKQEAgLTY0LDYgKzY3LDcgQEAg
cHJpdmF0ZToKICAgICBQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCBtX2NvbXBsZXRlZFRyYW5zaXRp
b25zQnlQcm9wZXJ0eTsKICAgICBQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCBtX3J1bm5pbmdUcmFu
c2l0aW9uc0J5UHJvcGVydHk7CiAgICAgUHNldWRvSWQgbV9wc2V1ZG9JZDsKKyAgICBib29sIG1f
aXNQZW5kaW5nS2V5ZnJhbWVzVXBkYXRlIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVm
ZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCmlu
ZGV4IGMyYzc5ZDc3ZmU0MTAzYWI4NjBjMzBmOWExMmI1Y2E2ZGE0MTE4MTguLjc1ZWE5ODUxNDMx
MTZhMDgxMzZiYzhlZWQwNWVkYzVjNTM1MTJlMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0tleWZyYW1lRWZmZWN0LmNwcApAQCAtNzg0LDYgKzc4NCwxMyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBLZXlmcmFtZUVmZmVjdDo6c2V0S2V5ZnJhbWVzKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZQogICAgIHJldHVybiBwcm9jZXNzS2V5ZnJhbWVzUmVzdWx0OwogfQogCit2b2lk
IEtleWZyYW1lRWZmZWN0OjprZXlmcmFtZXNSdWxlRGlkQ2hhbmdlKCkKK3sKKyAgICBBU1NFUlQo
aXM8Q1NTQW5pbWF0aW9uPihhbmltYXRpb24oKSkpOworICAgIGNsZWFyQmxlbmRpbmdLZXlmcmFt
ZXMoKTsKKyAgICBpbnZhbGlkYXRlKCk7Cit9CisKIEV4Y2VwdGlvbk9yPHZvaWQ+IEtleWZyYW1l
RWZmZWN0Ojpwcm9jZXNzS2V5ZnJhbWVzKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBTdHJvbmc8SlNPYmplY3Q+JiYga2V5ZnJhbWVzSW5wdXQpCiB7CiAgICAgLy8gMS4gSWYg
b2JqZWN0IGlzIG51bGwsIHJldHVybiBhbiBlbXB0eSBzZXF1ZW5jZSBvZiBrZXlmcmFtZXMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oCmluZGV4IDRkNjg0NDFiODQ2
MWQ0ODRiYjcxZTk0OTRhMjI0ZDdmZmE1NTcxOGEuLjI1NDQwOWM5Y2FmNDA3MjkzYjg2YjE0ODYx
ZDg4YTMyNWVhNTFkOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlm
cmFtZUVmZmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVj
dC5oCkBAIC0xNjksNiArMTY5LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzdG9wQWNjZWxlcmF0
aW5nVHJhbnNmb3JtUmVsYXRlZFByb3BlcnRpZXMoVXNlQWNjZWxlcmF0ZWRBY3Rpb24pOwogCisg
ICAgdm9pZCBrZXlmcmFtZXNSdWxlRGlkQ2hhbmdlKCk7CisKIHByaXZhdGU6CiAgICAgS2V5ZnJh
bWVFZmZlY3QoRWxlbWVudCosIFBzZXVkb0lkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZy
YW1lc1J1bGUuY3BwCmluZGV4IDM2NTFlZWIzYzhlNThhNmRmYmZmZmE5MWUyZTBjOTQzNzVlNTZi
NDUuLmZhYzc4NDIzMzgwNjNhM2VlMjlkYTM4Njk3MWI4YTEyYmQ5NTNmMjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIENT
U0tleWZyYW1lc1J1bGU6OmFwcGVuZFJ1bGUoY29uc3QgU3RyaW5nJiBydWxlVGV4dCkKICAgICBp
ZiAoIWtleWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBDU1NTdHlsZVNoZWV0OjpSdWxl
TXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMpOworICAgIENTU1N0eWxlU2hlZXQ6OlJ1
bGVNdXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUocGFyZW50U3R5bGVTaGVldCgpLCBDU1NTdHls
ZVNoZWV0OjpSdWxlTXV0YXRpb25UeXBlOjpLZXlmcmFtZXNSdWxlTXV0YXRpb24sIG1fa2V5ZnJh
bWVzUnVsZS5wdHIoKSk7CiAKICAgICBtX2tleWZyYW1lc1J1bGUtPndyYXBwZXJBcHBlbmRLZXlm
cmFtZShrZXlmcmFtZS5yZWxlYXNlTm9uTnVsbCgpKTsKIApAQCAtMTgwLDcgKzE4MCw3IEBAIHZv
aWQgQ1NTS2V5ZnJhbWVzUnVsZTo6ZGVsZXRlUnVsZShjb25zdCBTdHJpbmcmIHMpCiAgICAgaWYg
KCFpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDU1NTdHlsZVNoZWV0OjpSdWxlTXV0YXRpb25T
Y29wZSBtdXRhdGlvblNjb3BlKHRoaXMpOworICAgIENTU1N0eWxlU2hlZXQ6OlJ1bGVNdXRhdGlv
blNjb3BlIG11dGF0aW9uU2NvcGUocGFyZW50U3R5bGVTaGVldCgpLCBDU1NTdHlsZVNoZWV0OjpS
dWxlTXV0YXRpb25UeXBlOjpLZXlmcmFtZXNSdWxlTXV0YXRpb24sIG1fa2V5ZnJhbWVzUnVsZS5w
dHIoKSk7CiAKICAgICBtX2tleWZyYW1lc1J1bGUtPndyYXBwZXJSZW1vdmVLZXlmcmFtZSgqaSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAppbmRleCA1MWUwMWYzMTUxN2I2MjE3
ZmViMmNlZDhhOGEzYTMyYjEyOTUyMTlkLi4yMWU0MmFhMTZiNzk3ODM4MDY3MTI3MjRjMTM0NzBl
ZDU1NGZkNjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBAIC0xNjAsNyAr
MTYwLDcgQEAgdm9pZCBDU1NTdHlsZVNoZWV0OjpkaWRNdXRhdGVSdWxlcyhSdWxlTXV0YXRpb25U
eXBlIG11dGF0aW9uVHlwZSwgV2hldGhlckNvbnRlbnQKICAgICBpZiAoIXNjb3BlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAobXV0YXRpb25UeXBlID09IFJ1bGVJbnNlcnRpb24gJiYgIWNv
bnRlbnRzV2VyZUNsb25lZEZvck11dGF0aW9uICYmICFzY29wZS0+YWN0aXZlU3R5bGVTaGVldHND
b250YWlucyh0aGlzKSkgeworICAgIGlmIChtdXRhdGlvblR5cGUgPT0gUnVsZU11dGF0aW9uVHlw
ZTo6UnVsZUluc2VydGlvbiAmJiAhY29udGVudHNXZXJlQ2xvbmVkRm9yTXV0YXRpb24gJiYgIXNj
b3BlLT5hY3RpdmVTdHlsZVNoZWV0c0NvbnRhaW5zKHRoaXMpKSB7CiAgICAgICAgIGlmIChpbnNl
cnRlZEtleWZyYW1lc1J1bGUpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiByZXNvbHZlciA9IHNj
b3BlLT5yZXNvbHZlcklmRXhpc3RzKCkpCiAgICAgICAgICAgICAgICAgcmVzb2x2ZXItPmFkZEtl
eWZyYW1lU3R5bGUoKmluc2VydGVkS2V5ZnJhbWVzUnVsZSk7CkBAIC0xNzAsNiArMTcwLDIyIEBA
IHZvaWQgQ1NTU3R5bGVTaGVldDo6ZGlkTXV0YXRlUnVsZXMoUnVsZU11dGF0aW9uVHlwZSBtdXRh
dGlvblR5cGUsIFdoZXRoZXJDb250ZW50CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBp
ZiAobXV0YXRpb25UeXBlID09IFJ1bGVNdXRhdGlvblR5cGU6OlJ1bGVJbnNlcnRpb24gJiYgIWNv
bnRlbnRzV2VyZUNsb25lZEZvck11dGF0aW9uICYmICFzY29wZS0+YWN0aXZlU3R5bGVTaGVldHND
b250YWlucyh0aGlzKSkgeworICAgICAgICBpZiAoaW5zZXJ0ZWRLZXlmcmFtZXNSdWxlKSB7Cisg
ICAgICAgICAgICBpZiAoYXV0byogcmVzb2x2ZXIgPSBzY29wZS0+cmVzb2x2ZXJJZkV4aXN0cygp
KQorICAgICAgICAgICAgICAgIHJlc29sdmVyLT5hZGRLZXlmcmFtZVN0eWxlKCppbnNlcnRlZEtl
eWZyYW1lc1J1bGUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHNj
b3BlLT5kaWRDaGFuZ2VBY3RpdmVTdHlsZVNoZWV0Q2FuZGlkYXRlcygpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaWYgKG11dGF0aW9uVHlwZSA9PSBSdWxlTXV0YXRpb25UeXBlOjpL
ZXlmcmFtZXNSdWxlTXV0YXRpb24pIHsKKyAgICAgICAgQVNTRVJUKGluc2VydGVkS2V5ZnJhbWVz
UnVsZSk7CisgICAgICAgIGlmIChhdXRvKiBvd25lckRvY3VtZW50ID0gdGhpcy0+b3duZXJEb2N1
bWVudCgpKQorICAgICAgICAgICAgb3duZXJEb2N1bWVudC0+a2V5ZnJhbWVzUnVsZURpZENoYW5n
ZShpbnNlcnRlZEtleWZyYW1lc1J1bGUtPm5hbWUoKSk7CisgICAgfQorCiAgICAgc2NvcGUtPmRp
ZENoYW5nZVN0eWxlU2hlZXRDb250ZW50cygpOwogCiAgICAgbV9tdXRhdGVkUnVsZXMgPSB0cnVl
OwpAQCAtMjYzLDcgKzI3OSw3IEBAIEV4Y2VwdGlvbk9yPHVuc2lnbmVkPiBDU1NTdHlsZVNoZWV0
OjppbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVsZVN0cmluZywgdW5zaWduCiAgICAgaWYgKCFy
dWxlKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKIAotICAgIFJ1
bGVNdXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhpcywgUnVsZUluc2VydGlvbiwgaXM8U3R5
bGVSdWxlS2V5ZnJhbWVzPigqcnVsZSkgPyBkb3duY2FzdDxTdHlsZVJ1bGVLZXlmcmFtZXM+KHJ1
bGUuZ2V0KCkpIDogbnVsbHB0cik7CisgICAgUnVsZU11dGF0aW9uU2NvcGUgbXV0YXRpb25TY29w
ZSh0aGlzLCBSdWxlTXV0YXRpb25UeXBlOjpSdWxlSW5zZXJ0aW9uLCBpczxTdHlsZVJ1bGVLZXlm
cmFtZXM+KCpydWxlKSA/IGRvd25jYXN0PFN0eWxlUnVsZUtleWZyYW1lcz4ocnVsZS5nZXQoKSkg
OiBudWxscHRyKTsKIAogICAgIGJvb2wgc3VjY2VzcyA9IG1fY29udGVudHMuZ2V0KCkud3JhcHBl
ckluc2VydFJ1bGUocnVsZS5yZWxlYXNlTm9uTnVsbCgpLCBpbmRleCk7CiAgICAgaWYgKCFzdWNj
ZXNzKQpAQCAtNDAxLDcgKzQxNyw3IEBAIENTU1N0eWxlU2hlZXQ6OlJ1bGVNdXRhdGlvblNjb3Bl
OjpSdWxlTXV0YXRpb25TY29wZShDU1NTdHlsZVNoZWV0KiBzaGVldCwgUnVsZU11CiAKIENTU1N0
eWxlU2hlZXQ6OlJ1bGVNdXRhdGlvblNjb3BlOjpSdWxlTXV0YXRpb25TY29wZShDU1NSdWxlKiBy
dWxlKQogICAgIDogbV9zdHlsZVNoZWV0KHJ1bGUgPyBydWxlLT5wYXJlbnRTdHlsZVNoZWV0KCkg
OiBudWxscHRyKQotICAgICwgbV9tdXRhdGlvblR5cGUoT3RoZXJNdXRhdGlvbikKKyAgICAsIG1f
bXV0YXRpb25UeXBlKFJ1bGVNdXRhdGlvblR5cGU6Ok90aGVyTXV0YXRpb24pCiAgICAgLCBtX2Nv
bnRlbnRzV2VyZUNsb25lZEZvck11dGF0aW9uKENvbnRlbnRzV2VyZU5vdENsb25lZEZvck11dGF0
aW9uKQogICAgICwgbV9pbnNlcnRlZEtleWZyYW1lc1J1bGUobnVsbHB0cikKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTaGVldC5oCmluZGV4IDVhNDcxMDQ5MTc5YWMyNjVmOTFlMTVhNTBlN2IwZmNh
MWUwMTZmYzMuLjg2NDQxNDY0NzU1YjA1ZjAyMDU5NTgyODEyZTMzNTRjMmQwM2FjMzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtOTUsMTMgKzk1LDEzIEBAIHB1YmxpYzoKICAg
ICBib29sIGhhZFJ1bGVzTXV0YXRpb24oKSBjb25zdCB7IHJldHVybiBtX211dGF0ZWRSdWxlczsg
fQogICAgIHZvaWQgY2xlYXJIYWRSdWxlc011dGF0aW9uKCkgeyBtX211dGF0ZWRSdWxlcyA9IGZh
bHNlOyB9CiAKLSAgICBlbnVtIFJ1bGVNdXRhdGlvblR5cGUgeyBPdGhlck11dGF0aW9uLCBSdWxl
SW5zZXJ0aW9uIH07CisgICAgZW51bSBjbGFzcyBSdWxlTXV0YXRpb25UeXBlIDogdWludDhfdCB7
IE90aGVyTXV0YXRpb24sIFJ1bGVJbnNlcnRpb24sIEtleWZyYW1lc1J1bGVNdXRhdGlvbiB9Owog
ICAgIGVudW0gV2hldGhlckNvbnRlbnRzV2VyZUNsb25lZEZvck11dGF0aW9uIHsgQ29udGVudHNX
ZXJlTm90Q2xvbmVkRm9yTXV0YXRpb24gPSAwLCBDb250ZW50c1dlcmVDbG9uZWRGb3JNdXRhdGlv
biB9OwogCiAgICAgY2xhc3MgUnVsZU11dGF0aW9uU2NvcGUgewogICAgICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShSdWxlTXV0YXRpb25TY29wZSk7CiAgICAgcHVibGljOgotICAgICAgICBSdWxl
TXV0YXRpb25TY29wZShDU1NTdHlsZVNoZWV0KiwgUnVsZU11dGF0aW9uVHlwZSA9IE90aGVyTXV0
YXRpb24sIFN0eWxlUnVsZUtleWZyYW1lcyogaW5zZXJ0ZWRLZXlmcmFtZXNSdWxlID0gbnVsbHB0
cik7CisgICAgICAgIFJ1bGVNdXRhdGlvblNjb3BlKENTU1N0eWxlU2hlZXQqLCBSdWxlTXV0YXRp
b25UeXBlID0gUnVsZU11dGF0aW9uVHlwZTo6T3RoZXJNdXRhdGlvbiwgU3R5bGVSdWxlS2V5ZnJh
bWVzKiBpbnNlcnRlZEtleWZyYW1lc1J1bGUgPSBudWxscHRyKTsKICAgICAgICAgUnVsZU11dGF0
aW9uU2NvcGUoQ1NTUnVsZSopOwogICAgICAgICB+UnVsZU11dGF0aW9uU2NvcGUoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNDJkYWNkMmRkNWNlM2U1ZjYyMzMzYTIxNjJjYzM3Njc0
NmU4ZmI4OS4uYzc5YjlhNDE3NDMxYWIwODk4MDFkYzdhYjcyZjI1ZjM2Y2Q1MmJlOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQXR0ci5oIgog
I2luY2x1ZGUgIkJlZm9yZVVubG9hZEV2ZW50LmgiCiAjaW5jbHVkZSAiQ0RBVEFTZWN0aW9uLmgi
CisjaW5jbHVkZSAiQ1NTQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTRm9udFNlbGVjdG9yLmgi
CiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVEZWNsYXJhdGlvbi5o
IgpAQCAtODU2OSw2ICs4NTcwLDI0IEBAIFZlY3RvcjxSZWZQdHI8V2ViQW5pbWF0aW9uPj4gRG9j
dW1lbnQ6Om1hdGNoaW5nQW5pbWF0aW9ucyhjb25zdCBGdW5jdGlvbjxib29sKEVsCiAgICAgcmV0
dXJuIGFuaW1hdGlvbnM7CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OmtleWZyYW1lc1J1bGVEaWRDaGFu
Z2UoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGZvciAoYXV0byogYW5pbWF0aW9uIDogV2Vi
QW5pbWF0aW9uOjppbnN0YW5jZXMoKSkgeworICAgICAgICBpZiAoIWlzPENTU0FuaW1hdGlvbj4o
YW5pbWF0aW9uKSB8fCAhYW5pbWF0aW9uLT5pc1JlbGV2YW50KCkpCisgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICBhdXRvJiBjc3NBbmltYXRpb24gPSBkb3duY2FzdDxDU1NBbmltYXRp
b24+KCphbmltYXRpb24pOworICAgICAgICBpZiAoY3NzQW5pbWF0aW9uLmFuaW1hdGlvbk5hbWUo
KSAhPSBuYW1lKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byBvd25pbmdF
bGVtZW50ID0gY3NzQW5pbWF0aW9uLm93bmluZ0VsZW1lbnQoKTsKKyAgICAgICAgaWYgKCFvd25p
bmdFbGVtZW50IHx8ICFvd25pbmdFbGVtZW50LT5lbGVtZW50LmlzQ29ubmVjdGVkKCkgfHwgJm93
bmluZ0VsZW1lbnQtPmVsZW1lbnQuZG9jdW1lbnQoKSAhPSB0aGlzKQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgY3NzQW5pbWF0aW9uLmtleWZyYW1lc1J1bGVEaWRDaGFuZ2UoKTsK
KyAgICB9Cit9CisKIHZvaWQgRG9jdW1lbnQ6OmFkZFRvcExheWVyRWxlbWVudChFbGVtZW50JiBl
bGVtZW50KQogewogICAgIFJFTEVBU0VfQVNTRVJUKCZlbGVtZW50LmRvY3VtZW50KCkgPT0gdGhp
cyAmJiBlbGVtZW50LmlzQ29ubmVjdGVkKCkgJiYgIWVsZW1lbnQuaXNJblRvcExheWVyKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAppbmRleCBjMzY2NDdhZmY4OTY2OTczZGQ4ZTRmYjdhOTgzZmE2Y2Fk
NzJmMzJlLi5kMzVkM2JlODA5ZmNiNzhmODQ5MmNlMWQwNjg2MjA2MTQwNDM1ZWEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaApAQCAtMTU0MSw2ICsxNTQxLDcgQEAgcHVibGljOgogICAgIFZlY3RvcjxS
ZWZQdHI8V2ViQW5pbWF0aW9uPj4gbWF0Y2hpbmdBbmltYXRpb25zKGNvbnN0IEZ1bmN0aW9uPGJv
b2woRWxlbWVudCYpPiYpOwogICAgIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlciogdGltZWxp
bmVzQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGltZWxpbmVzQ29udHJvbGxlci5nZXQo
KTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlciYgZW5z
dXJlVGltZWxpbmVzQ29udHJvbGxlcigpOworICAgIHZvaWQga2V5ZnJhbWVzUnVsZURpZENoYW5n
ZShjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgdm9pZCBhZGRUb3BMYXllckVsZW1lbnQoRWxl
bWVudCYpOwogICAgIHZvaWQgcmVtb3ZlVG9wTGF5ZXJFbGVtZW50KEVsZW1lbnQmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAppbmRleCBlZDI2MzU0NDI3OTI5MjI0MmExMWYxNTI2ZDg1NmVjOThlMzhj
ZGU5Li5lMGU2YTNlZThhOTczYzIxZDAwZTRkODAyZTU3NzkyYjkyZGE1NjQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCkBAIC00MDUwLDYgKzQwNTAsMjIgQEAgdm9pZCBFbGVtZW50OjpzZXRMYXN0
U3R5bGVDaGFuZ2VFdmVudFN0eWxlKFBzZXVkb0lkIHBzZXVkb0lkLCBzdGQ6OnVuaXF1ZV9wdHI8
Y28KICAgICAgICAgZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEocHNldWRvSWQpLnNldExhc3RTdHls
ZUNoYW5nZUV2ZW50U3R5bGUoV1RGTW92ZShzdHlsZSkpOwogfQogCit2b2lkIEVsZW1lbnQ6OmNz
c0FuaW1hdGlvbnNEaWRVcGRhdGUoUHNldWRvSWQgcHNldWRvSWQpCit7CisgICAgZW5zdXJlQW5p
bWF0aW9uUmFyZURhdGEocHNldWRvSWQpLmNzc0FuaW1hdGlvbnNEaWRVcGRhdGUoKTsKK30KKwor
dm9pZCBFbGVtZW50OjprZXlmcmFtZXNSdWxlRGlkQ2hhbmdlKFBzZXVkb0lkIHBzZXVkb0lkKQor
eworICAgIGVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKHBzZXVkb0lkKS5rZXlmcmFtZXNSdWxlRGlk
Q2hhbmdlKCk7Cit9CisKK2Jvb2wgRWxlbWVudDo6aXNQZW5kaW5nS2V5ZnJhbWVzVXBkYXRlKFBz
ZXVkb0lkIHBzZXVkb0lkKSBjb25zdAoreworICAgIGF1dG8qIGRhdGEgPSBhbmltYXRpb25SYXJl
RGF0YShwc2V1ZG9JZCk7CisgICAgcmV0dXJuIGRhdGEgJiYgZGF0YS0+aXNQZW5kaW5nS2V5ZnJh
bWVzVXBkYXRlKCk7Cit9CisKIHZvaWQgRWxlbWVudDo6ZGlzY29ubmVjdEZyb21SZXNpemVPYnNl
cnZlcnMoKQogewogICAgIGF1dG8qIG9ic2VydmVyRGF0YSA9IHJlc2l6ZU9ic2VydmVyRGF0YSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmgKaW5kZXggM2Q5ZDM5NDI0MDE5MTk5NjgzNzBkZTNiOTUxNzc2YmU4
ZjJlZDQwMC4uZDA4NDEwMWQ5MzEzYTM3NjhlN2QxZTVmOWFlNWE4Y2YzYjdjNTU1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oCkBAIC01MzIsNiArNTMyLDEwIEBAIHB1YmxpYzoKICAgICBjb25zdCBSZW5k
ZXJTdHlsZSogbGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZShQc2V1ZG9JZCkgY29uc3Q7CiAgICAg
dm9pZCBzZXRMYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxlKFBzZXVkb0lkLCBzdGQ6OnVuaXF1ZV9w
dHI8Y29uc3QgUmVuZGVyU3R5bGU+JiYpOwogCisgICAgdm9pZCBjc3NBbmltYXRpb25zRGlkVXBk
YXRlKFBzZXVkb0lkKTsKKyAgICB2b2lkIGtleWZyYW1lc1J1bGVEaWRDaGFuZ2UoUHNldWRvSWQp
OworICAgIGJvb2wgaXNQZW5kaW5nS2V5ZnJhbWVzVXBkYXRlKFBzZXVkb0lkKSBjb25zdDsKKwog
ICAgIGJvb2wgaXNJblRvcExheWVyKCkgY29uc3QgeyByZXR1cm4gaGFzTm9kZUZsYWcoTm9kZUZs
YWc6OklzSW5Ub3BMYXllcik7IH0KICAgICB2b2lkIGFkZFRvVG9wTGF5ZXIoKTsKICAgICB2b2lk
IHJlbW92ZUZyb21Ub3BMYXllcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5jcHAKaW5kZXgg
YTg2ZDNmNWYyOGM5Mjg4ZWQ4MTE3ZWM0NTJhYTFlY2I1ZDY0OGIzZC4uZWE1MGVlYmJlM2ZlYThk
MWE4OGIwM2Y5NDU2NGRiNzlmZTE0NjA0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuY3Bw
CkBAIC0yMzAsNyArMjMwLDcgQEAgdm9pZCBTdHlsZWFibGU6OnVwZGF0ZUNTU0FuaW1hdGlvbnMo
Y29uc3QgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgY29uc3QgUmVuZGUKIAogICAgIGF1dG8q
IGN1cnJlbnRBbmltYXRpb25MaXN0ID0gbmV3U3R5bGUuYW5pbWF0aW9ucygpOwogICAgIGF1dG8q
IHByZXZpb3VzQW5pbWF0aW9uTGlzdCA9IGtleWZyYW1lRWZmZWN0U3RhY2suY3NzQW5pbWF0aW9u
TGlzdCgpOwotICAgIGlmIChwcmV2aW91c0FuaW1hdGlvbkxpc3QgJiYgIXByZXZpb3VzQW5pbWF0
aW9uTGlzdC0+aXNFbXB0eSgpICYmIG5ld1N0eWxlLmhhc0FuaW1hdGlvbnMoKSAmJiAqKHByZXZp
b3VzQW5pbWF0aW9uTGlzdCkgPT0gKihuZXdTdHlsZS5hbmltYXRpb25zKCkpKQorICAgIGlmICgh
ZWxlbWVudC5pc1BlbmRpbmdLZXlmcmFtZXNVcGRhdGUocHNldWRvSWQpICYmIHByZXZpb3VzQW5p
bWF0aW9uTGlzdCAmJiAhcHJldmlvdXNBbmltYXRpb25MaXN0LT5pc0VtcHR5KCkgJiYgbmV3U3R5
bGUuaGFzQW5pbWF0aW9ucygpICYmICoocHJldmlvdXNBbmltYXRpb25MaXN0KSA9PSAqKG5ld1N0
eWxlLmFuaW1hdGlvbnMoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIENTU0FuaW1hdGlvbkNv
bGxlY3Rpb24gbmV3QW5pbWF0aW9uczsKQEAgLTI1Nyw2ICsyNTcsOSBAQCB2b2lkIFN0eWxlYWJs
ZTo6dXBkYXRlQ1NTQW5pbWF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBj
b25zdCBSZW5kZQogICAgICAgICAgICAgICAgICAgICAvLyBUaW1pbmcgcHJvcGVydGllcyBvciBw
bGF5IHN0YXRlIG1heSBoYXZlIGNoYW5nZWQgc28gd2UgbmVlZCB0byB1cGRhdGUgdGhlIGJhY2tp
bmcgYW5pbWF0aW9uIHdpdGgKICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIEFuaW1hdGlvbiBm
b3VuZCBpbiB0aGUgY3VycmVudCBzdHlsZS4KICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNB
bmltYXRpb24tPnNldEJhY2tpbmdBbmltYXRpb24oY3VycmVudEFuaW1hdGlvbik7CisgICAgICAg
ICAgICAgICAgICAgIC8vIEtleWZyYW1lcyBtYXkgaGF2ZSBiZWVuIGNsZWFyZWQgaWYgdGhlIEBr
ZXlmcmFtZXMgcnVsZXMgd2FzIGNoYW5nZWQgc2luY2UKKyAgICAgICAgICAgICAgICAgICAgLy8g
dGhlIGxhc3Qgc3R5bGUgdXBkYXRlLCBzbyB3ZSBtdXN0IGVuc3VyZSBrZXlmcmFtZXMgYXJlIHBp
Y2tlZCB1cC4KKyAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNBbmltYXRpb24tPnVwZGF0ZUtl
eWZyYW1lc0lmTmVlZGVkKGN1cnJlbnRTdHlsZSwgbmV3U3R5bGUsIHJlc29sdXRpb25Db250ZXh0
KTsKICAgICAgICAgICAgICAgICAgICAgbmV3QW5pbWF0aW9ucy5hZGQocHJldmlvdXNBbmltYXRp
b24pOwogICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgdGhlIG1hdGNoZWQgYW5pbWF0aW9u
IGZyb20gdGhlIGxpc3Qgb2YgcHJldmlvdXMgYW5pbWF0aW9ucyBzbyB3ZSBtYXkgbm90IG1hdGNo
IGl0IGFnYWluLgogICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0FuaW1hdGlvbnMucmVtb3Zl
KHByZXZpb3VzQW5pbWF0aW9uKTsKQEAgLTI4MSw2ICsyODQsOCBAQCB2b2lkIFN0eWxlYWJsZTo6
dXBkYXRlQ1NTQW5pbWF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBjb25z
dCBSZW5kZQogICAgIHNldEFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAoV1RGTW92ZShuZXdBbmlt
YXRpb25zKSk7CiAKICAgICBrZXlmcmFtZUVmZmVjdFN0YWNrLnNldENTU0FuaW1hdGlvbkxpc3Qo
Y3VycmVudEFuaW1hdGlvbkxpc3QpOworCisgICAgZWxlbWVudC5jc3NBbmltYXRpb25zRGlkVXBk
YXRlKHBzZXVkb0lkKTsKIH0KIAogc3RhdGljIEtleWZyYW1lRWZmZWN0KiBrZXlmcmFtZUVmZmVj
dEZvckVsZW1lbnRBbmRQcm9wZXJ0eShjb25zdCBTdHlsZWFibGUmIHN0eWxlYWJsZSwgQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
YWJsZS5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVhYmxlLmgKaW5kZXggM2E1M2IzNmNm
MjRlNThiNGRkOGJhNGQyNjllMzEzOWE5NTljY2NiNS4uMGRmNGJiNjI3YmU3MjRkODJkNzY4YTRh
MDBkZTMyNjg4NTlmZWViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVh
YmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVhYmxlLmgKQEAgLTE0NSw2ICsx
NDUsMTEgQEAgc3RydWN0IFN0eWxlYWJsZSB7CiAgICAgICAgIGVsZW1lbnQuc2V0TGFzdFN0eWxl
Q2hhbmdlRXZlbnRTdHlsZShwc2V1ZG9JZCwgV1RGTW92ZShzdHlsZSkpOwogICAgIH0KIAorICAg
IHZvaWQga2V5ZnJhbWVzUnVsZURpZENoYW5nZSgpIGNvbnN0CisgICAgeworICAgICAgICBlbGVt
ZW50LmtleWZyYW1lc1J1bGVEaWRDaGFuZ2UocHNldWRvSWQpOworICAgIH0KKwogICAgIHZvaWQg
ZWxlbWVudFdhc1JlbW92ZWQoKSBjb25zdDsKIAogICAgIHZvaWQgd2lsbENoYW5nZVJlbmRlcmVy
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCA2YWIzMzhjMjFhNzkw
OGI4MDQ0ZjcxYmNiY2ViZTcyMDgwZjZkMWNiLi5hNzY1ZjRjY2MyNzFmYTRhZThlMzM2ZTNkZWY1
MDEzZTZjZDExMTg2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAyMi0wMS0wNiAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBbV2ViIEFuaW1hdGlvbnNdIGluc2VydGluZyBhIHJ1bGUgd2l0aGluIGEgQGtleWZy
YW1lcyBydWxlIHNob3VsZCB1cGRhdGUgYW5pbWF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0ODk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgTWFyayBXUFQgcHJvZ3Jlc3Npb25zLgorCisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtYW5pbWF0aW9ucy9LZXlmcmFtZUVmZmVjdC1n
ZXRLZXlmcmFtZXMudGVudGF0aXZlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy1hbmltYXRpb25zL0tleWZyYW1lRWZmZWN0LXNldEtleWZyYW1lcy50
ZW50YXRpdmUtZXhwZWN0ZWQudHh0OgorCiAyMDIyLTAxLTA1ICBBbnRvaW5lIFF1aW50ICA8Z3Jh
b3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIGNvbXB1dGVkIHN0eWxlIGZvciB0cmFuc2l0aW9u
IGxvbmdoYW5kIHByb3BlcnRpZXMgaXMgd3JvbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1hbmltYXRpb25zL0tleWZyYW1l
RWZmZWN0LWdldEtleWZyYW1lcy50ZW50YXRpdmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWFuaW1hdGlvbnMvS2V5ZnJh
bWVFZmZlY3QtZ2V0S2V5ZnJhbWVzLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKaW5kZXggZGE1ZTk0
OGNkODdlYmU5NWQ2YWJhNGYwZjQyZmRhZjI5NTAxN2U2Mi4uOGVhN2U4MTMzODJlZDVlMGU0N2Rj
NGI3MjFlYTc5ZWIxNjk1ZDQwNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWFuaW1hdGlvbnMvS2V5ZnJhbWVFZmZlY3QtZ2V0
S2V5ZnJhbWVzLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWFuaW1hdGlvbnMvS2V5ZnJhbWVFZmZl
Y3QtZ2V0S2V5ZnJhbWVzLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKQEAgLTIzLDUgKzIzLDUgQEAg
RkFJTCBLZXlmcmFtZUVmZmVjdC5nZXRLZXlmcmFtZXMoKSByZXR1cm5zIGV4cGVjdGVkIHZhbHVl
cyBmb3IgYW5pbWF0aW9ucyB3aXRoIEMKIFBBU1MgS2V5ZnJhbWVFZmZlY3QuZ2V0S2V5ZnJhbWVz
KCkgcmV0dXJucyBleHBlY3RlZCB2YWx1ZXMgZm9yIGFuaW1hdGlvbnMgd2l0aCBDU1MgdmFyaWFi
bGVzIGFzIGtleWZyYW1lIHZhbHVlcyBpbiBhIHNob3J0aGFuZCBwcm9wZXJ0eQogUEFTUyBLZXlm
cmFtZUVmZmVjdC5nZXRLZXlmcmFtZXMoKSByZXR1cm5zIGV4cGVjdGVkIHZhbHVlcyBmb3IgYW5p
bWF0aW9ucyB3aXRoIGEgQ1NTIHZhcmlhYmxlIHdoaWNoIGlzIG92ZXJyaWRlbiBieSB0aGUgdmFs
dWUgaW4ga2V5ZnJhbWUKIEZBSUwgS2V5ZnJhbWVFZmZlY3QuZ2V0S2V5ZnJhbWVzKCkgcmV0dXJu
cyBleHBlY3RlZCB2YWx1ZXMgZm9yIGFuaW1hdGlvbnMgd2l0aCBvbmx5IGN1c3RvbSBwcm9wZXJ0
eSBpbiBhIGtleWZyYW1lIGFzc2VydF9lcXVhbHM6IHZhbHVlIGZvciAndHJhbnNmb3JtJyBvbiBL
ZXlmcmFtZSAjMCBzaG91bGQgbWF0Y2ggZXhwZWN0ZWQgInRyYW5zbGF0ZSgxMDBweCkiIGJ1dCBn
b3QgIm1hdHJpeCgxLCAwLCAwLCAxLCAxMDAsIDApIgotRkFJTCBLZXlmcmFtZUVmZmVjdC5nZXRL
ZXlmcmFtZXMoKSByZWZsZWN0cyBjaGFuZ2VzIHRvIEBrZXlmcmFtZXMgcnVsZXMgYXNzZXJ0X2Vx
dWFsczogdmFsdWUgZm9yICdsZWZ0JyBvbiBLZXlmcmFtZXMgcmVmbGVjdHMgdGhlIHVwZGF0ZWQg
QGtleWZyYW1lcyBydWxlIHNob3VsZCBtYXRjaCBleHBlY3RlZCAiMjAwcHgiIGJ1dCBnb3QgIjEw
MHB4IgorUEFTUyBLZXlmcmFtZUVmZmVjdC5nZXRLZXlmcmFtZXMoKSByZWZsZWN0cyBjaGFuZ2Vz
IHRvIEBrZXlmcmFtZXMgcnVsZXMKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWFuaW1hdGlvbnMvS2V5ZnJhbWVFZmZlY3Qt
c2V0S2V5ZnJhbWVzLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtYW5pbWF0aW9ucy9LZXlmcmFtZUVmZmVj
dC1zZXRLZXlmcmFtZXMudGVudGF0aXZlLWV4cGVjdGVkLnR4dAppbmRleCBiMDUyY2E1OWRhZTli
NzA2ODhjODRiNzBlYjE5NDlkMjIzMGViMDY0Li41MThlMWY5YTc3ODhkNjU4MjY1ZTMzNTA4MmY5
ZWI3YTY2YjBlYmZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtYW5pbWF0aW9ucy9LZXlmcmFtZUVmZmVjdC1zZXRLZXlmcmFt
ZXMudGVudGF0aXZlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtYW5pbWF0aW9ucy9LZXlmcmFtZUVmZmVjdC1zZXRL
ZXlmcmFtZXMudGVudGF0aXZlLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKIAogUEFTUyBL
ZXlmcmFtZUVmZmVjdC5zZXRLZXlmcmFtZXMoKSBjYXVzZXMgc3Vic2VxdWVudCBjaGFuZ2VzIHRv
IEBrZXlmcmFtZXMgcnVsZXMgdG8gYmUgaWdub3JlZAogUEFTUyBLZXlmcmFtZUVmZmVjdC5zZXRL
ZXlmcmFtZXMoKSBjYXVzZXMgc3Vic2VxdWVudCBjaGFuZ2VzIHRvIGFuaW1hdGlvbi10aW1pbmct
ZnVuY3Rpb24gdG8gYmUgaWdub3JlZAotRkFJTCBLZXlmcmFtZUVmZmVjdC5zZXRLZXlmcmFtZXMo
KSBzaG91bGQgTk9UIGNhdXNlIHN1YnNlcXVlbnQgY2hhbmdlcyB0byBAa2V5ZnJhbWVzIHJ1bGVz
IHRvIGJlIGlnbm9yZWQgaWYgaXQgdGhyZXcgYXNzZXJ0X2VxdWFsczogdmFsdWUgZm9yICdsZWZ0
JyBvbiBLZXlmcmFtZXMgcmVmbGVjdCB0aGUgdmFsdWUgc2V0IHZpYSBzdHlsZSBzaG91bGQgbWF0
Y2ggZXhwZWN0ZWQgIjMwMHB4IiBidXQgZ290ICIxMDBweCIKK1BBU1MgS2V5ZnJhbWVFZmZlY3Qu
c2V0S2V5ZnJhbWVzKCkgc2hvdWxkIE5PVCBjYXVzZSBzdWJzZXF1ZW50IGNoYW5nZXMgdG8gQGtl
eWZyYW1lcyBydWxlcyB0byBiZSBpZ25vcmVkIGlmIGl0IHRocmV3CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448504</attachid>
            <date>2022-01-06 08:18:05 -0800</date>
            <delta_ts>2022-01-06 08:18:05 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-234895-20220106171804.patch</filename>
            <type>text/plain</type>
            <size>23817</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3Njc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzFmNDAzZjY5MzY1NjU0
YThlMTQ1MzA0MzQ3NTc1YWMxY2NlYjU4NC4uNzlhMjIzOGU0MWZiMWNiZjBhZTZhNWVmOGM3NmNm
MDBjZWYyZTQyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDIyLTAxLTA2ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIFtXZWIgQW5pbWF0aW9u
c10gaW5zZXJ0aW5nIGEgcnVsZSB3aXRoaW4gYSBAa2V5ZnJhbWVzIHJ1bGUgc2hvdWxkIHVwZGF0
ZSBhbmltYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzQ4OTUKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAg
ICBVc2luZyB0aGUgQ1NTT00sIGl0IGlzIHBvc3NpYmxlIHRvIGluc2VydCBvciBkZWxldGUgcnVs
ZXMgd2l0aGluIGFuIEBrZXlmcmFtZXMgcnVsZS4KKyAgICAgICAgSW4gZmFjdCwgdGhlcmUgYXJl
IHR3byBXUFQgdGhhdCBjaGVjayB0aGlzIGJlaGF2aW9yIHdpdGggdGhlIGdldEtleWZyYW1lcygp
IGFuZAorICAgICAgICBzZXRLZXlmcmFtZXMoKSBtZXRob2RzLgorCisgICAgICAgIFRoaXMgd291
bGQgbm90IGhhdmUgYW55IGVmZmVjdCB1bnRpbCBub3cgYmVjYXVzZSB3aGVuIHdlIGNvbnNpZGVy
IHdoZXRoZXIgdG8gaW52YWxpZGF0ZQorICAgICAgICBhbmltYXRpb25zIGluIFN0eWxlYWJsZTo6
dXBkYXRlQ1NTQW5pbWF0aW9ucygpLCB3ZSBsb29rIGF0IHRoZSBwcmV2aW91cyBhbmQgY3VycmVu
dAorICAgICAgICBBbmltYXRpb25MaXN0IGFuZCBkb24ndCBzZWUgYW55IGRpZmZlcmVuY2UgYmVj
YXVzZSB3ZSBsb29rLCBhcyBmYXIgYXMga2V5ZnJhbWVzIGFyZQorICAgICAgICBjb25jZXJuZWQs
IGF0IHRoZSBAa2V5ZnJhbWVzIG5hbWUgYnV0IG5vdCBhdCB0aGUga2V5ZnJhbWVzIGNvbnRlbnQu
CisKKyAgICAgICAgTm93LCB3aGVuIGEgcnVsZSBpcyBhZGRlZCBvciBkZWxldGVkIGZyb20gYW4g
QGtleWZyYW1lcyBydWxlIHVzaW5nIHRoZSBDU1NPTSwgd2Ugbm90aWZ5CisgICAgICAgIHRoZSBE
b2N1bWVudCB1c2luZyB0aGUgbmV3IGtleWZyYW1lc1J1bGVEaWRDaGFuZ2UoKSBtZXRob2QsIHdo
aWNoIGluIHR1cm4gY2hlY2tzIGFsbAorICAgICAgICBDU1NBbmltYXRpb24gb2JqZWN0cyBhcHBs
aWVkIHRvIGVsZW1lbnRzIGluIHRoYXQgZG9jdW1lbnQgdXNpbmcgdGhhdCBAa2V5ZnJhbWVzIHJ1
bGUKKyAgICAgICAgYW5kIG5vdGlmaWVzIHRoZW0gb2YgdGhlIGNoYW5nZSBieSBjYWxsaW5nIGtl
eWZyYW1lc1J1bGVEaWRDaGFuZ2UoKS4KKworICAgICAgICBUaGlzIGNsZWFycyB0aGUga2V5ZnJh
bWVzIG9uIHRoZSBhc3NvY2lhdGVkIEtleWZyYW1lRWZmZWN0LCBpbnZhbGlkYXRlcyB0aGUgdGFy
Z2V0CisgICAgICAgIGFuZCBzZXRzIGEgZmxhZyBvbiB0aGUgRWxlbWVudEFuaW1hdGlvblJhcmVE
YXRhIHRoYXQgdGhpcyBlbGVtZW50IGlzIHBlbmRpbmcgdXBkYXRlCisgICAgICAgIHRvIGl0cyBD
U1MgQW5pbWF0aW9ucycga2V5ZnJhbWUgc3VjaCB0aGF0IGR1cmluZyB0aGUgbmV4dCBjYWxsCisg
ICAgICAgIFN0eWxlYWJsZTo6dXBkYXRlQ1NTQW5pbWF0aW9ucygpIHdlIGZvcmNlIHRoZSB1cGRh
dGUgZXZlbiBpZiB0aGUgcHJldmlvdXMgYW5kIGN1cnJlbnQKKyAgICAgICAgQW5pbWF0aW9uTGlz
dCBsb29rIGlkZW50aWNhbC4KKworICAgICAgICBEdXJpbmcgdGhhdCBuZXh0IGNhbGwgdG8gU3R5
bGVhYmxlOjp1cGRhdGVDU1NBbmltYXRpb25zKCksIHdlIHdpbGwgY2FsbCBpbnRvIHRoZSBuZXcK
KyAgICAgICAgQ1NTQW5pbWF0aW9uOjp1cGRhdGVLZXlmcmFtZXNJZk5lZWRlZCgpIHdoaWNoIHdp
bGwgcmUtY29tcHV0ZSB0aGUga2V5ZnJhbWVzIGJhc2VkIG9uIHRoZQorICAgICAgICBjdXJyZW50
IHNldCBvZiBydWxlcyB3aXRoaW4gdGhlIEBrZXlmcmFtZXMgcnVsZS4KKworICAgICAgICBUaGUg
ZmluYWwgcGllY2Ugb2Ygd29yayByZXF1aXJlZCBpcyB0byB0cmFjayB3aGVuIHNldEtleWZyYW1l
cygpIGlzIGNhbGxlZCBvbiB0aGUgZWZmZWN0CisgICAgICAgIHRoYXQgdXBkYXRlcyB0byB0aGUg
QGtleWZyYW1lcyBydWxlIHNob3VsZCBubyBsb25nZXIgYXBwbHkgc2luY2UgdGhleSBrZXlmcmFt
ZXMgd2VyZSBvdmVycmlkZW4KKyAgICAgICAgYnkgdGhlIFdlYiBBbmltYXRpb25zIEFQSS4gVGhp
cyBpcyBkb25lIGJ5IHNldHRpbmcgYW4gYWRkaXRpb25hbCBmbGFnIGluCisgICAgICAgIENTU0Fu
aW1hdGlvbjo6ZWZmZWN0S2V5ZnJhbWVzV2VyZVNldFVzaW5nQmluZGluZ3MoKS4KKworICAgICAg
ICAqIGFuaW1hdGlvbi9DU1NBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQW5p
bWF0aW9uOjplZmZlY3RLZXlmcmFtZXNXZXJlU2V0VXNpbmdCaW5kaW5ncyk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NBbmltYXRpb246OmtleWZyYW1lc1J1bGVEaWRDaGFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTQW5pbWF0aW9uOjp1cGRhdGVLZXlmcmFtZXNJZk5lZWRlZCk6CisgICAgICAg
ICogYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5oOgorICAgICAgICAqIGFuaW1hdGlvbi9FbGVtZW50
QW5pbWF0aW9uUmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBbmltYXRpb25S
YXJlRGF0YTo6Y3NzQW5pbWF0aW9uc0RpZFVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50QW5pbWF0aW9uUmFyZURhdGE6OmtleWZyYW1lc1J1bGVEaWRDaGFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudEFuaW1hdGlvblJhcmVEYXRhOjppc1BlbmRpbmdLZXlmcmFtZXNVcGRh
dGUgY29uc3QpOgorICAgICAgICAqIGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6a2V5ZnJhbWVzUnVsZURpZENoYW5nZSk6Cisg
ICAgICAgICogYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0Lmg6CisgICAgICAgICogY3NzL0NTU1N0
eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6ZGlkTXV0YXRl
UnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6UnVsZU11dGF0aW9uU2Nv
cGU6OlJ1bGVNdXRhdGlvblNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6
OlJ1bGVNdXRhdGlvblNjb3BlOjp+UnVsZU11dGF0aW9uU2NvcGUpOgorICAgICAgICAqIGNzcy9D
U1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjprZXlmcmFtZXNSdWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50Ojpjc3NBbmltYXRpb25zRGlkVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OmtleWZyYW1lc1J1bGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6aXNQZW5kaW5nS2V5ZnJhbWVzVXBkYXRlIGNvbnN0KToKKyAgICAgICAgKiBkb20vRWxlbWVu
dC5oOgorICAgICAgICAqIHN0eWxlL1N0eWxlYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZWFibGU6OnVwZGF0ZUNTU0FuaW1hdGlvbnMgY29uc3QpOgorICAgICAgICAqIHN0eWxlL1N0
eWxlYWJsZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVhYmxlOjprZXlmcmFtZXNSdWxlRGlk
Q2hhbmdlIGNvbnN0KToKKwogMjAyMi0wMS0wNSAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBjb21wdXRlZCBzdHlsZSBmb3IgdHJhbnNpdGlvbiBsb25naGFu
ZCBwcm9wZXJ0aWVzIGlzIHdyb25nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vQ1NTQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NBbmltYXRp
b24uY3BwCmluZGV4IGI3NTZmYjU2MDZmMDcwNGUzNTEwOThkOTU2MDIxNWEzZTAyMzMxNzEuLmZm
ZmY1NTgzMzVjOTg3OGI2YTk4YjM0ZmExYjFiYjk0OGI5MWVlZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9DU1NBbmltYXRpb24uY3BwCkBAIC0yMzcsOSArMjM3LDMzIEBAIHZvaWQgQ1NT
QW5pbWF0aW9uOjplZmZlY3RLZXlmcmFtZXNXZXJlU2V0VXNpbmdCaW5kaW5ncygpCiAgICAgLy8g
QWZ0ZXIgYSBzdWNjZXNzZnVsIGNhbGwgdG8gc2V0S2V5ZnJhbWVzKCkgb24gdGhlIEtleWZyYW1l
RWZmZWN0IGFzc29jaWF0ZWQgd2l0aCBhIENTU0FuaW1hdGlvbiwgYW55IHN1YnNlcXVlbnQgY2hh
bmdlIHRvCiAgICAgLy8gbWF0Y2hpbmcgQGtleWZyYW1lcyBydWxlcyBvciB0aGUgcmVzb2x2ZWQg
dmFsdWUgb2YgdGhlIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24gcHJvcGVydHkgZm9yIHRoZSB0
YXJnZXQgZWxlbWVudCB3aWxsIG5vdAogICAgIC8vIGJlIHJlZmxlY3RlZCBpbiB0aGF0IGFuaW1h
dGlvbi4KKyAgICBtX292ZXJyaWRkZW5Qcm9wZXJ0aWVzLmFkZChQcm9wZXJ0eTo6S2V5ZnJhbWVz
KTsKICAgICBtX292ZXJyaWRkZW5Qcm9wZXJ0aWVzLmFkZChQcm9wZXJ0eTo6VGltaW5nRnVuY3Rp
b24pOwogfQogCit2b2lkIENTU0FuaW1hdGlvbjo6a2V5ZnJhbWVzUnVsZURpZENoYW5nZSgpCit7
CisgICAgaWYgKG1fb3ZlcnJpZGRlblByb3BlcnRpZXMuY29udGFpbnMoUHJvcGVydHk6OktleWZy
YW1lcykgfHwgIWlzPEtleWZyYW1lRWZmZWN0PihlZmZlY3QoKSkpCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8gb3duaW5nRWxlbWVudCA9IHRoaXMtPm93bmluZ0VsZW1lbnQoKTsKKyAgICBp
ZiAoIW93bmluZ0VsZW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGRvd25jYXN0PEtleWZy
YW1lRWZmZWN0PigqZWZmZWN0KCkpLmtleWZyYW1lc1J1bGVEaWRDaGFuZ2UoKTsKKyAgICBvd25p
bmdFbGVtZW50LT5rZXlmcmFtZXNSdWxlRGlkQ2hhbmdlKCk7Cit9CisKK3ZvaWQgQ1NTQW5pbWF0
aW9uOjp1cGRhdGVLZXlmcmFtZXNJZk5lZWRlZChjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUs
IGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgY29uc3QgU3R5bGU6OlJlc29sdXRpb25Db250
ZXh0JiByZXNvbHV0aW9uQ29udGV4dCkKK3sKKyAgICBpZiAobV9vdmVycmlkZGVuUHJvcGVydGll
cy5jb250YWlucyhQcm9wZXJ0eTo6S2V5ZnJhbWVzKSB8fCAhaXM8S2V5ZnJhbWVFZmZlY3Q+KGVm
ZmVjdCgpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYga2V5ZnJhbWVFZmZlY3QgPSBk
b3duY2FzdDxLZXlmcmFtZUVmZmVjdD4oKmVmZmVjdCgpKTsKKyAgICBpZiAoa2V5ZnJhbWVFZmZl
Y3QuYmxlbmRpbmdLZXlmcmFtZXMoKS5pc0VtcHR5KCkpCisgICAgICAgIGtleWZyYW1lRWZmZWN0
LmNvbXB1dGVEZWNsYXJhdGl2ZUFuaW1hdGlvbkJsZW5kaW5nS2V5ZnJhbWVzKG9sZFN0eWxlLCBu
ZXdTdHlsZSwgcmVzb2x1dGlvbkNvbnRleHQpOworfQorCiBSZWY8QW5pbWF0aW9uRXZlbnRCYXNl
PiBDU1NBbmltYXRpb246OmNyZWF0ZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwg
ZG91YmxlIGVsYXBzZWRUaW1lLCBjb25zdCBTdHJpbmcmIHBzZXVkb0lkLCBzdGQ6Om9wdGlvbmFs
PFNlY29uZHM+IHRpbWVsaW5lVGltZSkKIHsKICAgICByZXR1cm4gQW5pbWF0aW9uRXZlbnQ6OmNy
ZWF0ZShldmVudFR5cGUsIG1fYW5pbWF0aW9uTmFtZSwgZWxhcHNlZFRpbWUsIHBzZXVkb0lkLCB0
aW1lbGluZVRpbWUsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0NTU0FuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5o
CmluZGV4IDU1ZmJjNWNjNjEzODM5OTQzNmY4MmZkMWE1ZGQ0NDExMDU3NGVmODguLmU0MTM0ZDg4
ZTY1ODBhZmZlZGQ4NjNlNGJiMjU0MWMxNjQxMmQ5NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9DU1NBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vQ1NTQW5pbWF0aW9uLmgKQEAgLTQ2LDYgKzQ2LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBl
ZmZlY3RUaW1pbmdXYXNVcGRhdGVkVXNpbmdCaW5kaW5ncyhPcHRpb25hbEVmZmVjdFRpbWluZyk7
CiAgICAgdm9pZCBlZmZlY3RLZXlmcmFtZXNXZXJlU2V0VXNpbmdCaW5kaW5ncygpOworICAgIHZv
aWQga2V5ZnJhbWVzUnVsZURpZENoYW5nZSgpOworICAgIHZvaWQgdXBkYXRlS2V5ZnJhbWVzSWZO
ZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3
U3R5bGUsIGNvbnN0IFN0eWxlOjpSZXNvbHV0aW9uQ29udGV4dCYpOwogCiBwcml2YXRlOgogICAg
IENTU0FuaW1hdGlvbihjb25zdCBTdHlsZWFibGUmLCBjb25zdCBBbmltYXRpb24mKTsKQEAgLTU5
LDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEJpbmRpbmdzU3RhcnRUaW1lKHN0ZDo6
b3B0aW9uYWw8ZG91YmxlPikgZmluYWw7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gYmluZGluZ3NS
ZXZlcnNlKCkgZmluYWw7CiAKLSAgICBlbnVtIGNsYXNzIFByb3BlcnR5IDogdWludDhfdCB7Cisg
ICAgZW51bSBjbGFzcyBQcm9wZXJ0eSA6IHVpbnQxNl90IHsKICAgICAgICAgTmFtZSA9IDEgPDwg
MCwKICAgICAgICAgRHVyYXRpb24gPSAxIDw8IDEsCiAgICAgICAgIFRpbWluZ0Z1bmN0aW9uID0g
MSA8PCAyLApAQCAtNjcsNyArNjksOCBAQCBwcml2YXRlOgogICAgICAgICBEaXJlY3Rpb24gPSAx
IDw8IDQsCiAgICAgICAgIFBsYXlTdGF0ZSA9IDEgPDwgNSwKICAgICAgICAgRGVsYXkgPSAxIDw8
IDYsCi0gICAgICAgIEZpbGxNb2RlID0gMSA8PCA3CisgICAgICAgIEZpbGxNb2RlID0gMSA8PCA3
LAorICAgICAgICBLZXlmcmFtZXMgPSAxIDw8IDgKICAgICB9OwogCiAgICAgU3RyaW5nIG1fYW5p
bWF0aW9uTmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9FbGVtZW50
QW5pbWF0aW9uUmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9FbGVtZW50QW5p
bWF0aW9uUmFyZURhdGEuaAppbmRleCBkNjllZTY5ODhmYmU3ZDliNDc2ZGE1MDE1YzY5YjczNDg0
MmFkZTk2Li5lZTIwYThmN2I4NTQ5OGJhZDAxYjc5ZjA4MjMzNzBkN2QyMGZlN2I0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0VsZW1lbnRBbmltYXRpb25SYXJlRGF0YS5o
CkBAIC01NCw2ICs1NCw5IEBAIHB1YmxpYzoKICAgICBQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCYg
cnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgpIHsgcmV0dXJuIG1fcnVubmluZ1RyYW5zaXRp
b25zQnlQcm9wZXJ0eTsgfQogICAgIGNvbnN0IFJlbmRlclN0eWxlKiBsYXN0U3R5bGVDaGFuZ2VF
dmVudFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxlLmdl
dCgpOyB9CiAgICAgdm9pZCBzZXRMYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxlKHN0ZDo6dW5pcXVl
X3B0cjxjb25zdCBSZW5kZXJTdHlsZT4mJiBzdHlsZSkgeyBtX2xhc3RTdHlsZUNoYW5nZUV2ZW50
U3R5bGUgPSBXVEZNb3ZlKHN0eWxlKTsgfQorICAgIHZvaWQgY3NzQW5pbWF0aW9uc0RpZFVwZGF0
ZSgpIHsgbV9pc1BlbmRpbmdLZXlmcmFtZXNVcGRhdGUgPSBmYWxzZTsgfQorICAgIHZvaWQga2V5
ZnJhbWVzUnVsZURpZENoYW5nZSgpIHsgbV9pc1BlbmRpbmdLZXlmcmFtZXNVcGRhdGUgPSB0cnVl
OyB9CisgICAgYm9vbCBpc1BlbmRpbmdLZXlmcmFtZXNVcGRhdGUoKSBjb25zdCB7IHJldHVybiBt
X2lzUGVuZGluZ0tleWZyYW1lc1VwZGF0ZTsgfQogCiBwcml2YXRlOgogCkBAIC02NCw2ICs2Nyw3
IEBAIHByaXZhdGU6CiAgICAgUHJvcGVydHlUb1RyYW5zaXRpb25NYXAgbV9jb21wbGV0ZWRUcmFu
c2l0aW9uc0J5UHJvcGVydHk7CiAgICAgUHJvcGVydHlUb1RyYW5zaXRpb25NYXAgbV9ydW5uaW5n
VHJhbnNpdGlvbnNCeVByb3BlcnR5OwogICAgIFBzZXVkb0lkIG1fcHNldWRvSWQ7CisgICAgYm9v
bCBtX2lzUGVuZGluZ0tleWZyYW1lc1VwZGF0ZSB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJh
bWVFZmZlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNw
cAppbmRleCBjMmM3OWQ3N2ZlNDEwM2FiODYwYzMwZjlhMTJiNWNhNmRhNDExODE4Li43NWVhOTg1
MTQzMTE2YTA4MTM2YmM4ZWVkMDVlZGM1YzUzNTEyZTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKQEAgLTc4NCw2ICs3ODQsMTMgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gS2V5ZnJhbWVFZmZlY3Q6OnNldEtleWZyYW1lcyhKU0dsb2JhbE9iamVjdCYgbGV4
aWNhbEdsb2JhbE9iamUKICAgICByZXR1cm4gcHJvY2Vzc0tleWZyYW1lc1Jlc3VsdDsKIH0KIAor
dm9pZCBLZXlmcmFtZUVmZmVjdDo6a2V5ZnJhbWVzUnVsZURpZENoYW5nZSgpCit7CisgICAgQVNT
RVJUKGlzPENTU0FuaW1hdGlvbj4oYW5pbWF0aW9uKCkpKTsKKyAgICBjbGVhckJsZW5kaW5nS2V5
ZnJhbWVzKCk7CisgICAgaW52YWxpZGF0ZSgpOworfQorCiBFeGNlcHRpb25Pcjx2b2lkPiBLZXlm
cmFtZUVmZmVjdDo6cHJvY2Vzc0tleWZyYW1lcyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2Jh
bE9iamVjdCwgU3Ryb25nPEpTT2JqZWN0PiYmIGtleWZyYW1lc0lucHV0KQogewogICAgIC8vIDEu
IElmIG9iamVjdCBpcyBudWxsLCByZXR1cm4gYW4gZW1wdHkgc2VxdWVuY2Ugb2Yga2V5ZnJhbWVz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaAppbmRleCA0ZDY4NDQx
Yjg0NjFkNDg0YmI3MWU5NDk0YTIyNGQ3ZmZhNTU3MThhLi4yNTQ0MDljOWNhZjQwNzI5M2I4NmIx
NDg2MWQ4OGEzMjVlYTUxZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
S2V5ZnJhbWVFZmZlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVF
ZmZlY3QuaApAQCAtMTY5LDYgKzE2OSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3RvcEFjY2Vs
ZXJhdGluZ1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0aWVzKFVzZUFjY2VsZXJhdGVkQWN0aW9uKTsK
IAorICAgIHZvaWQga2V5ZnJhbWVzUnVsZURpZENoYW5nZSgpOworCiBwcml2YXRlOgogICAgIEtl
eWZyYW1lRWZmZWN0KEVsZW1lbnQqLCBQc2V1ZG9JZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNoZWV0LmNwcAppbmRleCA1MWUwMWYzMTUxN2I2MjE3ZmViMmNlZDhhOGEzYTMyYjEyOTUyMTlk
Li5lNzA2ODQzYmY0NTYxZjE4OWE5NGZlODk2YmVkMGVkMWM0ZDViM2VmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBDU1NTdHlsZVNo
ZWV0OjpkaWRNdXRhdGVSdWxlRnJvbUNTU1N0eWxlRGVjbGFyYXRpb24oKQogICAgIGRpZE11dGF0
ZSgpOwogfQogCi12b2lkIENTU1N0eWxlU2hlZXQ6OmRpZE11dGF0ZVJ1bGVzKFJ1bGVNdXRhdGlv
blR5cGUgbXV0YXRpb25UeXBlLCBXaGV0aGVyQ29udGVudHNXZXJlQ2xvbmVkRm9yTXV0YXRpb24g
Y29udGVudHNXZXJlQ2xvbmVkRm9yTXV0YXRpb24sIFN0eWxlUnVsZUtleWZyYW1lcyogaW5zZXJ0
ZWRLZXlmcmFtZXNSdWxlKQordm9pZCBDU1NTdHlsZVNoZWV0OjpkaWRNdXRhdGVSdWxlcyhSdWxl
TXV0YXRpb25UeXBlIG11dGF0aW9uVHlwZSwgV2hldGhlckNvbnRlbnRzV2VyZUNsb25lZEZvck11
dGF0aW9uIGNvbnRlbnRzV2VyZUNsb25lZEZvck11dGF0aW9uLCBTdHlsZVJ1bGVLZXlmcmFtZXMq
IGluc2VydGVkS2V5ZnJhbWVzUnVsZSwgY29uc3QgU3RyaW5nJiBtb2RpZmllZEtleWZyYW1lc1J1
bGVOYW1lKQogewogICAgIEFTU0VSVChtX2NvbnRlbnRzLT5pc011dGFibGUoKSk7CiAgICAgQVNT
RVJUKG1fY29udGVudHMtPmhhc09uZUNsaWVudCgpKTsKQEAgLTE3MCw2ICsxNzAsMjEgQEAgdm9p
ZCBDU1NTdHlsZVNoZWV0OjpkaWRNdXRhdGVSdWxlcyhSdWxlTXV0YXRpb25UeXBlIG11dGF0aW9u
VHlwZSwgV2hldGhlckNvbnRlbnQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmICht
dXRhdGlvblR5cGUgPT0gUnVsZUluc2VydGlvbiAmJiAhY29udGVudHNXZXJlQ2xvbmVkRm9yTXV0
YXRpb24gJiYgIXNjb3BlLT5hY3RpdmVTdHlsZVNoZWV0c0NvbnRhaW5zKHRoaXMpKSB7CisgICAg
ICAgIGlmIChpbnNlcnRlZEtleWZyYW1lc1J1bGUpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBy
ZXNvbHZlciA9IHNjb3BlLT5yZXNvbHZlcklmRXhpc3RzKCkpCisgICAgICAgICAgICAgICAgcmVz
b2x2ZXItPmFkZEtleWZyYW1lU3R5bGUoKmluc2VydGVkS2V5ZnJhbWVzUnVsZSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgc2NvcGUtPmRpZENoYW5nZUFjdGl2ZVN0
eWxlU2hlZXRDYW5kaWRhdGVzKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
bXV0YXRpb25UeXBlID09IEtleWZyYW1lc1J1bGVNdXRhdGlvbikgeworICAgICAgICBpZiAoYXV0
byogb3duZXJEb2N1bWVudCA9IHRoaXMtPm93bmVyRG9jdW1lbnQoKSkKKyAgICAgICAgICAgIG93
bmVyRG9jdW1lbnQtPmtleWZyYW1lc1J1bGVEaWRDaGFuZ2UobW9kaWZpZWRLZXlmcmFtZXNSdWxl
TmFtZSk7CisgICAgfQorCiAgICAgc2NvcGUtPmRpZENoYW5nZVN0eWxlU2hlZXRDb250ZW50cygp
OwogCiAgICAgbV9tdXRhdGVkUnVsZXMgPSB0cnVlOwpAQCAtNDAxLDkgKzQxNiwxMCBAQCBDU1NT
dHlsZVNoZWV0OjpSdWxlTXV0YXRpb25TY29wZTo6UnVsZU11dGF0aW9uU2NvcGUoQ1NTU3R5bGVT
aGVldCogc2hlZXQsIFJ1bGVNdQogCiBDU1NTdHlsZVNoZWV0OjpSdWxlTXV0YXRpb25TY29wZTo6
UnVsZU11dGF0aW9uU2NvcGUoQ1NTUnVsZSogcnVsZSkKICAgICA6IG1fc3R5bGVTaGVldChydWxl
ID8gcnVsZS0+cGFyZW50U3R5bGVTaGVldCgpIDogbnVsbHB0cikKLSAgICAsIG1fbXV0YXRpb25U
eXBlKE90aGVyTXV0YXRpb24pCisgICAgLCBtX211dGF0aW9uVHlwZShpczxDU1NLZXlmcmFtZXNS
dWxlPihydWxlKSA/IEtleWZyYW1lc1J1bGVNdXRhdGlvbiA6IE90aGVyTXV0YXRpb24pCiAgICAg
LCBtX2NvbnRlbnRzV2VyZUNsb25lZEZvck11dGF0aW9uKENvbnRlbnRzV2VyZU5vdENsb25lZEZv
ck11dGF0aW9uKQogICAgICwgbV9pbnNlcnRlZEtleWZyYW1lc1J1bGUobnVsbHB0cikKKyAgICAs
IG1fbW9kaWZpZWRLZXlmcmFtZXNSdWxlTmFtZShpczxDU1NLZXlmcmFtZXNSdWxlPihydWxlKSA/
IGRvd25jYXN0PENTU0tleWZyYW1lc1J1bGU+KCpydWxlKS5uYW1lKCkgOiBlbXB0eVN0cmluZygp
KQogewogICAgIGlmIChtX3N0eWxlU2hlZXQpCiAgICAgICAgIG1fY29udGVudHNXZXJlQ2xvbmVk
Rm9yTXV0YXRpb24gPSBtX3N0eWxlU2hlZXQtPndpbGxNdXRhdGVSdWxlcygpOwpAQCAtNDEyLDcg
KzQyOCw3IEBAIENTU1N0eWxlU2hlZXQ6OlJ1bGVNdXRhdGlvblNjb3BlOjpSdWxlTXV0YXRpb25T
Y29wZShDU1NSdWxlKiBydWxlKQogQ1NTU3R5bGVTaGVldDo6UnVsZU11dGF0aW9uU2NvcGU6On5S
dWxlTXV0YXRpb25TY29wZSgpCiB7CiAgICAgaWYgKG1fc3R5bGVTaGVldCkKLSAgICAgICAgbV9z
dHlsZVNoZWV0LT5kaWRNdXRhdGVSdWxlcyhtX211dGF0aW9uVHlwZSwgbV9jb250ZW50c1dlcmVD
bG9uZWRGb3JNdXRhdGlvbiwgbV9pbnNlcnRlZEtleWZyYW1lc1J1bGUpOworICAgICAgICBtX3N0
eWxlU2hlZXQtPmRpZE11dGF0ZVJ1bGVzKG1fbXV0YXRpb25UeXBlLCBtX2NvbnRlbnRzV2VyZUNs
b25lZEZvck11dGF0aW9uLCBtX2luc2VydGVkS2V5ZnJhbWVzUnVsZSwgbV9tb2RpZmllZEtleWZy
YW1lc1J1bGVOYW1lKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKaW5kZXgg
NWE0NzEwNDkxNzlhYzI2NWY5MWUxNWE1MGU3YjBmY2ExZTAxNmZjMy4uMzAxZmRmNzM2M2ZjYWEw
YWJiOTBhZWYyZWZlYjg5Mzc2MWRjYjg5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5o
CkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhZFJ1bGVzTXV0YXRpb24oKSBj
b25zdCB7IHJldHVybiBtX211dGF0ZWRSdWxlczsgfQogICAgIHZvaWQgY2xlYXJIYWRSdWxlc011
dGF0aW9uKCkgeyBtX211dGF0ZWRSdWxlcyA9IGZhbHNlOyB9CiAKLSAgICBlbnVtIFJ1bGVNdXRh
dGlvblR5cGUgeyBPdGhlck11dGF0aW9uLCBSdWxlSW5zZXJ0aW9uIH07CisgICAgZW51bSBSdWxl
TXV0YXRpb25UeXBlIHsgT3RoZXJNdXRhdGlvbiwgUnVsZUluc2VydGlvbiwgS2V5ZnJhbWVzUnVs
ZU11dGF0aW9uIH07CiAgICAgZW51bSBXaGV0aGVyQ29udGVudHNXZXJlQ2xvbmVkRm9yTXV0YXRp
b24geyBDb250ZW50c1dlcmVOb3RDbG9uZWRGb3JNdXRhdGlvbiA9IDAsIENvbnRlbnRzV2VyZUNs
b25lZEZvck11dGF0aW9uIH07CiAKICAgICBjbGFzcyBSdWxlTXV0YXRpb25TY29wZSB7CkBAIC0x
MTAsMTAgKzExMCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIFJ1bGVNdXRhdGlvblR5cGUgbV9tdXRh
dGlvblR5cGU7CiAgICAgICAgIFdoZXRoZXJDb250ZW50c1dlcmVDbG9uZWRGb3JNdXRhdGlvbiBt
X2NvbnRlbnRzV2VyZUNsb25lZEZvck11dGF0aW9uOwogICAgICAgICBTdHlsZVJ1bGVLZXlmcmFt
ZXMqIG1faW5zZXJ0ZWRLZXlmcmFtZXNSdWxlOworICAgICAgICBTdHJpbmcgbV9tb2RpZmllZEtl
eWZyYW1lc1J1bGVOYW1lOwogICAgIH07CiAKICAgICBXaGV0aGVyQ29udGVudHNXZXJlQ2xvbmVk
Rm9yTXV0YXRpb24gd2lsbE11dGF0ZVJ1bGVzKCk7Ci0gICAgdm9pZCBkaWRNdXRhdGVSdWxlcyhS
dWxlTXV0YXRpb25UeXBlLCBXaGV0aGVyQ29udGVudHNXZXJlQ2xvbmVkRm9yTXV0YXRpb24sIFN0
eWxlUnVsZUtleWZyYW1lcyogaW5zZXJ0ZWRLZXlmcmFtZXNSdWxlKTsKKyAgICB2b2lkIGRpZE11
dGF0ZVJ1bGVzKFJ1bGVNdXRhdGlvblR5cGUsIFdoZXRoZXJDb250ZW50c1dlcmVDbG9uZWRGb3JN
dXRhdGlvbiwgU3R5bGVSdWxlS2V5ZnJhbWVzKiBpbnNlcnRlZEtleWZyYW1lc1J1bGUsIGNvbnN0
IFN0cmluZyYgbW9kaWZpZWRLZXlmcmFtZXNSdWxlTmFtZSk7CiAgICAgdm9pZCBkaWRNdXRhdGVS
dWxlRnJvbUNTU1N0eWxlRGVjbGFyYXRpb24oKTsKICAgICB2b2lkIGRpZE11dGF0ZSgpOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNDJkYWNkMmRkNWNlM2U1ZjYyMzMzYTIxNjJj
YzM3Njc0NmU4ZmI4OS4uYzc5YjlhNDE3NDMxYWIwODk4MDFkYzdhYjcyZjI1ZjM2Y2Q1MmJlOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQXR0
ci5oIgogI2luY2x1ZGUgIkJlZm9yZVVubG9hZEV2ZW50LmgiCiAjaW5jbHVkZSAiQ0RBVEFTZWN0
aW9uLmgiCisjaW5jbHVkZSAiQ1NTQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTRm9udFNlbGVj
dG9yLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVEZWNsYXJh
dGlvbi5oIgpAQCAtODU2OSw2ICs4NTcwLDI0IEBAIFZlY3RvcjxSZWZQdHI8V2ViQW5pbWF0aW9u
Pj4gRG9jdW1lbnQ6Om1hdGNoaW5nQW5pbWF0aW9ucyhjb25zdCBGdW5jdGlvbjxib29sKEVsCiAg
ICAgcmV0dXJuIGFuaW1hdGlvbnM7CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OmtleWZyYW1lc1J1bGVE
aWRDaGFuZ2UoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIGZvciAoYXV0byogYW5pbWF0aW9u
IDogV2ViQW5pbWF0aW9uOjppbnN0YW5jZXMoKSkgeworICAgICAgICBpZiAoIWlzPENTU0FuaW1h
dGlvbj4oYW5pbWF0aW9uKSB8fCAhYW5pbWF0aW9uLT5pc1JlbGV2YW50KCkpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICBhdXRvJiBjc3NBbmltYXRpb24gPSBkb3duY2FzdDxDU1NB
bmltYXRpb24+KCphbmltYXRpb24pOworICAgICAgICBpZiAoY3NzQW5pbWF0aW9uLmFuaW1hdGlv
bk5hbWUoKSAhPSBuYW1lKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byBv
d25pbmdFbGVtZW50ID0gY3NzQW5pbWF0aW9uLm93bmluZ0VsZW1lbnQoKTsKKyAgICAgICAgaWYg
KCFvd25pbmdFbGVtZW50IHx8ICFvd25pbmdFbGVtZW50LT5lbGVtZW50LmlzQ29ubmVjdGVkKCkg
fHwgJm93bmluZ0VsZW1lbnQtPmVsZW1lbnQuZG9jdW1lbnQoKSAhPSB0aGlzKQorICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgY3NzQW5pbWF0aW9uLmtleWZyYW1lc1J1bGVEaWRDaGFu
Z2UoKTsKKyAgICB9Cit9CisKIHZvaWQgRG9jdW1lbnQ6OmFkZFRvcExheWVyRWxlbWVudChFbGVt
ZW50JiBlbGVtZW50KQogewogICAgIFJFTEVBU0VfQVNTRVJUKCZlbGVtZW50LmRvY3VtZW50KCkg
PT0gdGhpcyAmJiBlbGVtZW50LmlzQ29ubmVjdGVkKCkgJiYgIWVsZW1lbnQuaXNJblRvcExheWVy
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBjMzY2NDdhZmY4OTY2OTczZGQ4ZTRmYjdhOTgz
ZmE2Y2FkNzJmMzJlLi5kMzVkM2JlODA5ZmNiNzhmODQ5MmNlMWQwNjg2MjA2MTQwNDM1ZWEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTU0MSw2ICsxNTQxLDcgQEAgcHVibGljOgogICAgIFZl
Y3RvcjxSZWZQdHI8V2ViQW5pbWF0aW9uPj4gbWF0Y2hpbmdBbmltYXRpb25zKGNvbnN0IEZ1bmN0
aW9uPGJvb2woRWxlbWVudCYpPiYpOwogICAgIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlciog
dGltZWxpbmVzQ29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGltZWxpbmVzQ29udHJvbGxl
ci5nZXQoKTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxl
ciYgZW5zdXJlVGltZWxpbmVzQ29udHJvbGxlcigpOworICAgIHZvaWQga2V5ZnJhbWVzUnVsZURp
ZENoYW5nZShjb25zdCBTdHJpbmcmIG5hbWUpOwogCiAgICAgdm9pZCBhZGRUb3BMYXllckVsZW1l
bnQoRWxlbWVudCYpOwogICAgIHZvaWQgcmVtb3ZlVG9wTGF5ZXJFbGVtZW50KEVsZW1lbnQmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBlZDI2MzU0NDI3OTI5MjI0MmExMWYxNTI2ZDg1NmVj
OThlMzhjZGU5Li5lMGU2YTNlZThhOTczYzIxZDAwZTRkODAyZTU3NzkyYjkyZGE1NjQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCkBAIC00MDUwLDYgKzQwNTAsMjIgQEAgdm9pZCBFbGVtZW50Ojpz
ZXRMYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxlKFBzZXVkb0lkIHBzZXVkb0lkLCBzdGQ6OnVuaXF1
ZV9wdHI8Y28KICAgICAgICAgZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEocHNldWRvSWQpLnNldExh
c3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUoV1RGTW92ZShzdHlsZSkpOwogfQogCit2b2lkIEVsZW1l
bnQ6OmNzc0FuaW1hdGlvbnNEaWRVcGRhdGUoUHNldWRvSWQgcHNldWRvSWQpCit7CisgICAgZW5z
dXJlQW5pbWF0aW9uUmFyZURhdGEocHNldWRvSWQpLmNzc0FuaW1hdGlvbnNEaWRVcGRhdGUoKTsK
K30KKwordm9pZCBFbGVtZW50OjprZXlmcmFtZXNSdWxlRGlkQ2hhbmdlKFBzZXVkb0lkIHBzZXVk
b0lkKQoreworICAgIGVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKHBzZXVkb0lkKS5rZXlmcmFtZXNS
dWxlRGlkQ2hhbmdlKCk7Cit9CisKK2Jvb2wgRWxlbWVudDo6aXNQZW5kaW5nS2V5ZnJhbWVzVXBk
YXRlKFBzZXVkb0lkIHBzZXVkb0lkKSBjb25zdAoreworICAgIGF1dG8qIGRhdGEgPSBhbmltYXRp
b25SYXJlRGF0YShwc2V1ZG9JZCk7CisgICAgcmV0dXJuIGRhdGEgJiYgZGF0YS0+aXNQZW5kaW5n
S2V5ZnJhbWVzVXBkYXRlKCk7Cit9CisKIHZvaWQgRWxlbWVudDo6ZGlzY29ubmVjdEZyb21SZXNp
emVPYnNlcnZlcnMoKQogewogICAgIGF1dG8qIG9ic2VydmVyRGF0YSA9IHJlc2l6ZU9ic2VydmVy
RGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggM2Q5ZDM5NDI0MDE5MTk5NjgzNzBkZTNiOTUx
Nzc2YmU4ZjJlZDQwMC4uZDA4NDEwMWQ5MzEzYTM3NjhlN2QxZTVmOWFlNWE4Y2YzYjdjNTU1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oCkBAIC01MzIsNiArNTMyLDEwIEBAIHB1YmxpYzoKICAgICBjb25z
dCBSZW5kZXJTdHlsZSogbGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZShQc2V1ZG9JZCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRMYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxlKFBzZXVkb0lkLCBzdGQ6OnVu
aXF1ZV9wdHI8Y29uc3QgUmVuZGVyU3R5bGU+JiYpOwogCisgICAgdm9pZCBjc3NBbmltYXRpb25z
RGlkVXBkYXRlKFBzZXVkb0lkKTsKKyAgICB2b2lkIGtleWZyYW1lc1J1bGVEaWRDaGFuZ2UoUHNl
dWRvSWQpOworICAgIGJvb2wgaXNQZW5kaW5nS2V5ZnJhbWVzVXBkYXRlKFBzZXVkb0lkKSBjb25z
dDsKKwogICAgIGJvb2wgaXNJblRvcExheWVyKCkgY29uc3QgeyByZXR1cm4gaGFzTm9kZUZsYWco
Tm9kZUZsYWc6OklzSW5Ub3BMYXllcik7IH0KICAgICB2b2lkIGFkZFRvVG9wTGF5ZXIoKTsKICAg
ICB2b2lkIHJlbW92ZUZyb21Ub3BMYXllcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5jcHAK
aW5kZXggYTg2ZDNmNWYyOGM5Mjg4ZWQ4MTE3ZWM0NTJhYTFlY2I1ZDY0OGIzZC4uZWE1MGVlYmJl
M2ZlYThkMWE4OGIwM2Y5NDU2NGRiNzlmZTE0NjA0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFi
bGUuY3BwCkBAIC0yMzAsNyArMjMwLDcgQEAgdm9pZCBTdHlsZWFibGU6OnVwZGF0ZUNTU0FuaW1h
dGlvbnMoY29uc3QgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgY29uc3QgUmVuZGUKIAogICAg
IGF1dG8qIGN1cnJlbnRBbmltYXRpb25MaXN0ID0gbmV3U3R5bGUuYW5pbWF0aW9ucygpOwogICAg
IGF1dG8qIHByZXZpb3VzQW5pbWF0aW9uTGlzdCA9IGtleWZyYW1lRWZmZWN0U3RhY2suY3NzQW5p
bWF0aW9uTGlzdCgpOwotICAgIGlmIChwcmV2aW91c0FuaW1hdGlvbkxpc3QgJiYgIXByZXZpb3Vz
QW5pbWF0aW9uTGlzdC0+aXNFbXB0eSgpICYmIG5ld1N0eWxlLmhhc0FuaW1hdGlvbnMoKSAmJiAq
KHByZXZpb3VzQW5pbWF0aW9uTGlzdCkgPT0gKihuZXdTdHlsZS5hbmltYXRpb25zKCkpKQorICAg
IGlmICghZWxlbWVudC5pc1BlbmRpbmdLZXlmcmFtZXNVcGRhdGUocHNldWRvSWQpICYmIHByZXZp
b3VzQW5pbWF0aW9uTGlzdCAmJiAhcHJldmlvdXNBbmltYXRpb25MaXN0LT5pc0VtcHR5KCkgJiYg
bmV3U3R5bGUuaGFzQW5pbWF0aW9ucygpICYmICoocHJldmlvdXNBbmltYXRpb25MaXN0KSA9PSAq
KG5ld1N0eWxlLmFuaW1hdGlvbnMoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIENTU0FuaW1h
dGlvbkNvbGxlY3Rpb24gbmV3QW5pbWF0aW9uczsKQEAgLTI1Nyw2ICsyNTcsOSBAQCB2b2lkIFN0
eWxlYWJsZTo6dXBkYXRlQ1NTQW5pbWF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSogY3VycmVudFN0
eWxlLCBjb25zdCBSZW5kZQogICAgICAgICAgICAgICAgICAgICAvLyBUaW1pbmcgcHJvcGVydGll
cyBvciBwbGF5IHN0YXRlIG1heSBoYXZlIGNoYW5nZWQgc28gd2UgbmVlZCB0byB1cGRhdGUgdGhl
IGJhY2tpbmcgYW5pbWF0aW9uIHdpdGgKICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIEFuaW1h
dGlvbiBmb3VuZCBpbiB0aGUgY3VycmVudCBzdHlsZS4KICAgICAgICAgICAgICAgICAgICAgcHJl
dmlvdXNBbmltYXRpb24tPnNldEJhY2tpbmdBbmltYXRpb24oY3VycmVudEFuaW1hdGlvbik7Cisg
ICAgICAgICAgICAgICAgICAgIC8vIEtleWZyYW1lcyBtYXkgaGF2ZSBiZWVuIGNsZWFyZWQgaWYg
dGhlIEBrZXlmcmFtZXMgcnVsZXMgd2FzIGNoYW5nZWQgc2luY2UKKyAgICAgICAgICAgICAgICAg
ICAgLy8gdGhlIGxhc3Qgc3R5bGUgdXBkYXRlLCBzbyB3ZSBtdXN0IGVuc3VyZSBrZXlmcmFtZXMg
YXJlIHBpY2tlZCB1cC4KKyAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNBbmltYXRpb24tPnVw
ZGF0ZUtleWZyYW1lc0lmTmVlZGVkKGN1cnJlbnRTdHlsZSwgbmV3U3R5bGUsIHJlc29sdXRpb25D
b250ZXh0KTsKICAgICAgICAgICAgICAgICAgICAgbmV3QW5pbWF0aW9ucy5hZGQocHJldmlvdXNB
bmltYXRpb24pOwogICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgdGhlIG1hdGNoZWQgYW5p
bWF0aW9uIGZyb20gdGhlIGxpc3Qgb2YgcHJldmlvdXMgYW5pbWF0aW9ucyBzbyB3ZSBtYXkgbm90
IG1hdGNoIGl0IGFnYWluLgogICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0FuaW1hdGlvbnMu
cmVtb3ZlKHByZXZpb3VzQW5pbWF0aW9uKTsKQEAgLTI4MSw2ICsyODQsOCBAQCB2b2lkIFN0eWxl
YWJsZTo6dXBkYXRlQ1NTQW5pbWF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxl
LCBjb25zdCBSZW5kZQogICAgIHNldEFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAoV1RGTW92ZShu
ZXdBbmltYXRpb25zKSk7CiAKICAgICBrZXlmcmFtZUVmZmVjdFN0YWNrLnNldENTU0FuaW1hdGlv
bkxpc3QoY3VycmVudEFuaW1hdGlvbkxpc3QpOworCisgICAgZWxlbWVudC5jc3NBbmltYXRpb25z
RGlkVXBkYXRlKHBzZXVkb0lkKTsKIH0KIAogc3RhdGljIEtleWZyYW1lRWZmZWN0KiBrZXlmcmFt
ZUVmZmVjdEZvckVsZW1lbnRBbmRQcm9wZXJ0eShjb25zdCBTdHlsZWFibGUmIHN0eWxlYWJsZSwg
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlYWJsZS5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVhYmxlLmgKaW5kZXggM2E1
M2IzNmNmMjRlNThiNGRkOGJhNGQyNjllMzEzOWE5NTljY2NiNS4uMGRmNGJiNjI3YmU3MjRkODJk
NzY4YTRhMDBkZTMyNjg4NTlmZWViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVhYmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVhYmxlLmgKQEAgLTE0
NSw2ICsxNDUsMTEgQEAgc3RydWN0IFN0eWxlYWJsZSB7CiAgICAgICAgIGVsZW1lbnQuc2V0TGFz
dFN0eWxlQ2hhbmdlRXZlbnRTdHlsZShwc2V1ZG9JZCwgV1RGTW92ZShzdHlsZSkpOwogICAgIH0K
IAorICAgIHZvaWQga2V5ZnJhbWVzUnVsZURpZENoYW5nZSgpIGNvbnN0CisgICAgeworICAgICAg
ICBlbGVtZW50LmtleWZyYW1lc1J1bGVEaWRDaGFuZ2UocHNldWRvSWQpOworICAgIH0KKwogICAg
IHZvaWQgZWxlbWVudFdhc1JlbW92ZWQoKSBjb25zdDsKIAogICAgIHZvaWQgd2lsbENoYW5nZVJl
bmRlcmVyKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCA2YWIzMzhj
MjFhNzkwOGI4MDQ0ZjcxYmNiY2ViZTcyMDgwZjZkMWNiLi5hNzY1ZjRjY2MyNzFmYTRhZThlMzM2
ZTNkZWY1MDEzZTZjZDExMTg2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMi0wMS0wNiAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9y
Zz4KKworICAgICAgICBbV2ViIEFuaW1hdGlvbnNdIGluc2VydGluZyBhIHJ1bGUgd2l0aGluIGEg
QGtleWZyYW1lcyBydWxlIHNob3VsZCB1cGRhdGUgYW5pbWF0aW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0ODk1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgTWFyayBXUFQgcHJvZ3Jlc3Npb25zLgorCisg
ICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtYW5pbWF0aW9ucy9LZXlmcmFtZUVm
ZmVjdC1nZXRLZXlmcmFtZXMudGVudGF0aXZlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1hbmltYXRpb25zL0tleWZyYW1lRWZmZWN0LXNldEtleWZy
YW1lcy50ZW50YXRpdmUtZXhwZWN0ZWQudHh0OgorCiAyMDIyLTAxLTA1ICBBbnRvaW5lIFF1aW50
ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIGNvbXB1dGVkIHN0eWxlIGZvciB0cmFu
c2l0aW9uIGxvbmdoYW5kIHByb3BlcnRpZXMgaXMgd3JvbmcKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1hbmltYXRpb25zL0tl
eWZyYW1lRWZmZWN0LWdldEtleWZyYW1lcy50ZW50YXRpdmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWFuaW1hdGlvbnMv
S2V5ZnJhbWVFZmZlY3QtZ2V0S2V5ZnJhbWVzLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKaW5kZXgg
ZGE1ZTk0OGNkODdlYmU5NWQ2YWJhNGYwZjQyZmRhZjI5NTAxN2U2Mi4uOGVhN2U4MTMzODJlZDVl
MGU0N2RjNGI3MjFlYTc5ZWIxNjk1ZDQwNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWFuaW1hdGlvbnMvS2V5ZnJhbWVFZmZl
Y3QtZ2V0S2V5ZnJhbWVzLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWFuaW1hdGlvbnMvS2V5ZnJh
bWVFZmZlY3QtZ2V0S2V5ZnJhbWVzLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKQEAgLTIzLDUgKzIz
LDUgQEAgRkFJTCBLZXlmcmFtZUVmZmVjdC5nZXRLZXlmcmFtZXMoKSByZXR1cm5zIGV4cGVjdGVk
IHZhbHVlcyBmb3IgYW5pbWF0aW9ucyB3aXRoIEMKIFBBU1MgS2V5ZnJhbWVFZmZlY3QuZ2V0S2V5
ZnJhbWVzKCkgcmV0dXJucyBleHBlY3RlZCB2YWx1ZXMgZm9yIGFuaW1hdGlvbnMgd2l0aCBDU1Mg
dmFyaWFibGVzIGFzIGtleWZyYW1lIHZhbHVlcyBpbiBhIHNob3J0aGFuZCBwcm9wZXJ0eQogUEFT
UyBLZXlmcmFtZUVmZmVjdC5nZXRLZXlmcmFtZXMoKSByZXR1cm5zIGV4cGVjdGVkIHZhbHVlcyBm
b3IgYW5pbWF0aW9ucyB3aXRoIGEgQ1NTIHZhcmlhYmxlIHdoaWNoIGlzIG92ZXJyaWRlbiBieSB0
aGUgdmFsdWUgaW4ga2V5ZnJhbWUKIEZBSUwgS2V5ZnJhbWVFZmZlY3QuZ2V0S2V5ZnJhbWVzKCkg
cmV0dXJucyBleHBlY3RlZCB2YWx1ZXMgZm9yIGFuaW1hdGlvbnMgd2l0aCBvbmx5IGN1c3RvbSBw
cm9wZXJ0eSBpbiBhIGtleWZyYW1lIGFzc2VydF9lcXVhbHM6IHZhbHVlIGZvciAndHJhbnNmb3Jt
JyBvbiBLZXlmcmFtZSAjMCBzaG91bGQgbWF0Y2ggZXhwZWN0ZWQgInRyYW5zbGF0ZSgxMDBweCki
IGJ1dCBnb3QgIm1hdHJpeCgxLCAwLCAwLCAxLCAxMDAsIDApIgotRkFJTCBLZXlmcmFtZUVmZmVj
dC5nZXRLZXlmcmFtZXMoKSByZWZsZWN0cyBjaGFuZ2VzIHRvIEBrZXlmcmFtZXMgcnVsZXMgYXNz
ZXJ0X2VxdWFsczogdmFsdWUgZm9yICdsZWZ0JyBvbiBLZXlmcmFtZXMgcmVmbGVjdHMgdGhlIHVw
ZGF0ZWQgQGtleWZyYW1lcyBydWxlIHNob3VsZCBtYXRjaCBleHBlY3RlZCAiMjAwcHgiIGJ1dCBn
b3QgIjEwMHB4IgorUEFTUyBLZXlmcmFtZUVmZmVjdC5nZXRLZXlmcmFtZXMoKSByZWZsZWN0cyBj
aGFuZ2VzIHRvIEBrZXlmcmFtZXMgcnVsZXMKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWFuaW1hdGlvbnMvS2V5ZnJhbWVF
ZmZlY3Qtc2V0S2V5ZnJhbWVzLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtYW5pbWF0aW9ucy9LZXlmcmFt
ZUVmZmVjdC1zZXRLZXlmcmFtZXMudGVudGF0aXZlLWV4cGVjdGVkLnR4dAppbmRleCBiMDUyY2E1
OWRhZTliNzA2ODhjODRiNzBlYjE5NDlkMjIzMGViMDY0Li41MThlMWY5YTc3ODhkNjU4MjY1ZTMz
NTA4MmY5ZWI3YTY2YjBlYmZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtYW5pbWF0aW9ucy9LZXlmcmFtZUVmZmVjdC1zZXRL
ZXlmcmFtZXMudGVudGF0aXZlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtYW5pbWF0aW9ucy9LZXlmcmFtZUVmZmVj
dC1zZXRLZXlmcmFtZXMudGVudGF0aXZlLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKIAog
UEFTUyBLZXlmcmFtZUVmZmVjdC5zZXRLZXlmcmFtZXMoKSBjYXVzZXMgc3Vic2VxdWVudCBjaGFu
Z2VzIHRvIEBrZXlmcmFtZXMgcnVsZXMgdG8gYmUgaWdub3JlZAogUEFTUyBLZXlmcmFtZUVmZmVj
dC5zZXRLZXlmcmFtZXMoKSBjYXVzZXMgc3Vic2VxdWVudCBjaGFuZ2VzIHRvIGFuaW1hdGlvbi10
aW1pbmctZnVuY3Rpb24gdG8gYmUgaWdub3JlZAotRkFJTCBLZXlmcmFtZUVmZmVjdC5zZXRLZXlm
cmFtZXMoKSBzaG91bGQgTk9UIGNhdXNlIHN1YnNlcXVlbnQgY2hhbmdlcyB0byBAa2V5ZnJhbWVz
IHJ1bGVzIHRvIGJlIGlnbm9yZWQgaWYgaXQgdGhyZXcgYXNzZXJ0X2VxdWFsczogdmFsdWUgZm9y
ICdsZWZ0JyBvbiBLZXlmcmFtZXMgcmVmbGVjdCB0aGUgdmFsdWUgc2V0IHZpYSBzdHlsZSBzaG91
bGQgbWF0Y2ggZXhwZWN0ZWQgIjMwMHB4IiBidXQgZ290ICIxMDBweCIKK1BBU1MgS2V5ZnJhbWVF
ZmZlY3Quc2V0S2V5ZnJhbWVzKCkgc2hvdWxkIE5PVCBjYXVzZSBzdWJzZXF1ZW50IGNoYW5nZXMg
dG8gQGtleWZyYW1lcyBydWxlcyB0byBiZSBpZ25vcmVkIGlmIGl0IHRocmV3CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>