<?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>227621</bug_id>
          
          <creation_ts>2021-07-02 05:50:59 -0700</creation_ts>
          <short_desc>[Model] Allow disabling interaction</short_desc>
          <delta_ts>2022-02-11 01:13:07 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=236493</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>235697</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1774433</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-07-02 05:50:59 -0700</bug_when>
    <thetext>We support inline interaction of &lt;model&gt; elements, at least on iOS, but there should be a way to disable it, or rather opt into it. This means that there likely needs to be an HTML attribute / HTMLModelElement property and also a way to use preventDefault() on a touchstart/mousedown/pointerdown to selectively disable interaction for a given interaction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774434</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-02 05:51:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/80079703&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819230</commentid>
    <comment_count>2</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-12-01 07:40:30 -0800</bug_when>
    <thetext>We need to be sure that we integrate with touch-action correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834455</commentid>
    <comment_count>3</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-01-27 01:17:50 -0800</bug_when>
    <thetext>Bug 235697 is a dependency since we would hit a crash when interaction is disabled and dragging on macOS otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834474</commentid>
    <comment_count>4</comment_count>
      <attachid>450122</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-01-27 03:27:07 -0800</bug_when>
    <thetext>Created attachment 450122
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834524</commentid>
    <comment_count>5</comment_count>
      <attachid>450122</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-27 08:00:50 -0800</bug_when>
    <thetext>Comment on attachment 450122
Patch

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

&gt; Source/WebCore/Modules/model-element/HTMLModelElement.cpp:347
&gt; +void HTMLModelElement::attributeChanged(const QualifiedName&amp; attributeName, const AtomString&amp; oldValue, const AtomString&amp; newValue, AttributeModificationReason modificationReason)

Would give these arguments single-word names, &quot;name&quot; and &quot;reason&quot;, unless they seem ambiguous in this context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834542</commentid>
    <comment_count>6</comment_count>
      <attachid>450143</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-01-27 08:49:26 -0800</bug_when>
    <thetext>Created attachment 450143
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834546</commentid>
    <comment_count>7</comment_count>
      <attachid>450143</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-27 09:03:44 -0800</bug_when>
    <thetext>Comment on attachment 450143
Patch for landing

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

I looked this over again and had a few other thoughts. Probably none urgent. Sorry I didn’t see these the first time. Good for follow-up I guess.

&gt; Source/WebCore/Modules/model-element/HTMLModelElement.cpp:344
&gt; +    if (m_modelPlayer &amp;&amp; wasInteractive != isInteractive)
&gt; +        m_modelPlayer-&gt;setInteractionEnabled(isInteractive);

This code is *not* needed. It will just redo what HTMLModelElement::attributeChanged has already done.

&gt; Source/WebCore/Modules/model-element/HTMLModelElement.cpp:380
&gt; +    if (type == eventNames().mousedownEvent &amp;&amp; !m_isDragging &amp;&amp; !event.defaultPrevented() &amp;&amp; interactive())
&gt;          dragDidStart(mouseEvent);
&gt;      else if (type == eventNames().mousemoveEvent &amp;&amp; m_isDragging)
&gt;          dragDidChange(mouseEvent);
&gt;      else if (type == eventNames().mouseupEvent &amp;&amp; m_isDragging)
&gt;          dragDidEnd(mouseEvent);

I don’t fully understand why we should check defaultPrevented only for start, and not for change/end.

&gt; Source/WebCore/Modules/model-element/HTMLModelElement.cpp:382
&gt; +    else
&gt; +        HTMLElement::defaultEventHandler(event);

I think it would be better to always call through to the base class, rather than doing it only in the else. Unless there is some correctness or significant performance benefit to not calling through in those other cases.

&gt; Source/WebCore/Modules/model-element/HTMLModelElement.h:74
&gt; +    bool interactive() const;
&gt; +    void setInteractive(bool);

We don’t need these functions at all. We can just use [Reflect] in the IDL file. I suggest we delete them.

&gt; Source/WebCore/Modules/model-element/HTMLModelElement.h:125
&gt; +    void attributeChanged(const QualifiedName&amp;, const AtomString&amp; oldValue, const AtomString&amp; newValue, AttributeModificationReason = ModifiedDirectly) final;

I don’t think we need the &quot;= ModifiedDirectly&quot; here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834547</commentid>
    <comment_count>8</comment_count>
      <attachid>450143</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-27 09:03:46 -0800</bug_when>
    <thetext>Comment on attachment 450143
Patch for landing

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

I looked this over again and had a few other thoughts. Probably none urgent. Sorry I didn’t see these the first time. Good for follow-up I guess.

&gt; Source/WebCore/Modules/model-element/HTMLModelElement.cpp:344
&gt; +    if (m_modelPlayer &amp;&amp; wasInteractive != isInteractive)
&gt; +        m_modelPlayer-&gt;setInteractionEnabled(isInteractive);

This code is *not* needed. It will just redo what HTMLModelElement::attributeChanged has already done.

&gt; Source/WebCore/Modules/model-element/HTMLModelElement.cpp:380
&gt; +    if (type == eventNames().mousedownEvent &amp;&amp; !m_isDragging &amp;&amp; !event.defaultPrevented() &amp;&amp; interactive())
&gt;          dragDidStart(mouseEvent);
&gt;      else if (type == eventNames().mousemoveEvent &amp;&amp; m_isDragging)
&gt;          dragDidChange(mouseEvent);
&gt;      else if (type == eventNames().mouseupEvent &amp;&amp; m_isDragging)
&gt;          dragDidEnd(mouseEvent);

I don’t fully understand why we should check defaultPrevented only for start, and not for change/end.

&gt; Source/WebCore/Modules/model-element/HTMLModelElement.cpp:382
&gt; +    else
&gt; +        HTMLElement::defaultEventHandler(event);

I think it would be better to always call through to the base class, rather than doing it only in the else. Unless there is some correctness or significant performance benefit to not calling through in those other cases.

&gt; Source/WebCore/Modules/model-element/HTMLModelElement.h:74
&gt; +    bool interactive() const;
&gt; +    void setInteractive(bool);

We don’t need these functions at all. We can just use [Reflect] in the IDL file. I suggest we delete them.

&gt; Source/WebCore/Modules/model-element/HTMLModelElement.h:125
&gt; +    void attributeChanged(const QualifiedName&amp;, const AtomString&amp; oldValue, const AtomString&amp; newValue, AttributeModificationReason = ModifiedDirectly) final;

I don’t think we need the &quot;= ModifiedDirectly&quot; here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834651</commentid>
    <comment_count>9</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-01-27 12:41:06 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #8)
&gt; Comment on attachment 450143 [details]
&gt; Patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=450143&amp;action=review
&gt; 
&gt; I looked this over again and had a few other thoughts. Probably none urgent.
&gt; Sorry I didn’t see these the first time. Good for follow-up I guess.

No, let&apos;s fix them now :)

&gt; &gt; Source/WebCore/Modules/model-element/HTMLModelElement.cpp:344
&gt; &gt; +    if (m_modelPlayer &amp;&amp; wasInteractive != isInteractive)
&gt; &gt; +        m_modelPlayer-&gt;setInteractionEnabled(isInteractive);
&gt; 
&gt; This code is *not* needed. It will just redo what
&gt; HTMLModelElement::attributeChanged has already done.

Right, will remove it.

&gt; &gt; Source/WebCore/Modules/model-element/HTMLModelElement.cpp:380
&gt; &gt; +    if (type == eventNames().mousedownEvent &amp;&amp; !m_isDragging &amp;&amp; !event.defaultPrevented() &amp;&amp; interactive())
&gt; &gt;          dragDidStart(mouseEvent);
&gt; &gt;      else if (type == eventNames().mousemoveEvent &amp;&amp; m_isDragging)
&gt; &gt;          dragDidChange(mouseEvent);
&gt; &gt;      else if (type == eventNames().mouseupEvent &amp;&amp; m_isDragging)
&gt; &gt;          dragDidEnd(mouseEvent);
&gt; 
&gt; I don’t fully understand why we should check defaultPrevented only for
&gt; start, and not for change/end.

We&apos;ve decided that preventDefault() could only interrupt an interaction as it&apos;s initiated, not afterwards, for the built-in support to drag to set the camera for &lt;model&gt;. This may be revisited as the &lt;model&gt; proposal goes through the various steps to becoming a Web standard, but I think this is outside of the scope of this particular code review.

&gt; &gt; Source/WebCore/Modules/model-element/HTMLModelElement.cpp:382
&gt; &gt; +    else
&gt; &gt; +        HTMLElement::defaultEventHandler(event);
&gt; 
&gt; I think it would be better to always call through to the base class, rather
&gt; than doing it only in the else. Unless there is some correctness or
&gt; significant performance benefit to not calling through in those other cases.

It seems a lot of classes, maybe all, don&apos;t call super by default but only if it elects not to take over handling of the event in question. That makes sense to me, and I followed that pattern.

&gt; &gt; Source/WebCore/Modules/model-element/HTMLModelElement.h:74
&gt; &gt; +    bool interactive() const;
&gt; &gt; +    void setInteractive(bool);
&gt; 
&gt; We don’t need these functions at all. We can just use [Reflect] in the IDL
&gt; file. I suggest we delete them.

Wow! Did not know about that. I&apos;ll probably keep interactive() as a private method to avoid calling hasAttributeWithoutSynchronization(HTMLNames::interactiveAttr) instead.

&gt; &gt; Source/WebCore/Modules/model-element/HTMLModelElement.h:125
&gt; &gt; +    void attributeChanged(const QualifiedName&amp;, const AtomString&amp; oldValue, const AtomString&amp; newValue, AttributeModificationReason = ModifiedDirectly) final;
&gt; 
&gt; I don’t think we need the &quot;= ModifiedDirectly&quot; here.

Will remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834656</commentid>
    <comment_count>10</comment_count>
      <attachid>450143</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-27 12:49:11 -0800</bug_when>
    <thetext>Comment on attachment 450143
Patch for landing

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

&gt;&gt;&gt;&gt; Source/WebCore/Modules/model-element/HTMLModelElement.cpp:382
&gt;&gt;&gt;&gt; +        HTMLElement::defaultEventHandler(event);
&gt;&gt;&gt; 
&gt;&gt;&gt; I think it would be better to always call through to the base class, rather than doing it only in the else. Unless there is some correctness or significant performance benefit to not calling through in those other cases.
&gt;&gt; 
&gt;&gt; I think it would be better to always call through to the base class, rather than doing it only in the else. Unless there is some correctness or significant performance benefit to not calling through in those other cases.
&gt; 
&gt; It seems a lot of classes, maybe all, don&apos;t call super by default but only if it elects not to take over handling of the event in question. That makes sense to me, and I followed that pattern.

This is kind of a deep subject.

It really depends on what code is in the base class’s defaultEventHandler function. Whether this class does *something* or not is not the whole story. If the base class has some additional handling to do, we’d possibly want to call through to it. Unless it’s something that we should prevent since this class has &quot;fully handled&quot; the event.

I personally think calling the base class unconditionally the more maintainable pattern. After all, to know it’s safe to not call through, you need to know that nothing in the base class function needs to run. In some rare case, it may be that the derived class version really does need to actively prevent what the base class would have done. In that case it’s necessary not to call through.

&gt;&gt;&gt;&gt; Source/WebCore/Modules/model-element/HTMLModelElement.h:74
&gt;&gt;&gt;&gt; +    void setInteractive(bool);
&gt;&gt;&gt; 
&gt;&gt;&gt; We don’t need these functions at all. We can just use [Reflect] in the IDL file. I suggest we delete them.
&gt;&gt; 
&gt;&gt; We don’t need these functions at all. We can just use [Reflect] in the IDL file. I suggest we delete them.
&gt; 
&gt; Wow! Did not know about that. I&apos;ll probably keep interactive() as a private method to avoid calling hasAttributeWithoutSynchronization(HTMLNames::interactiveAttr) instead.

I’d name the private one isInteractive(), I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834672</commentid>
    <comment_count>11</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-01-27 13:12:37 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #10)
&gt; Comment on attachment 450143 [details]
&gt; Patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=450143&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/WebCore/Modules/model-element/HTMLModelElement.cpp:382
&gt; &gt;&gt;&gt;&gt; +        HTMLElement::defaultEventHandler(event);
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; I think it would be better to always call through to the base class, rather than doing it only in the else. Unless there is some correctness or significant performance benefit to not calling through in those other cases.
&gt; &gt;&gt; 
&gt; &gt;&gt; I think it would be better to always call through to the base class, rather than doing it only in the else. Unless there is some correctness or significant performance benefit to not calling through in those other cases.
&gt; &gt; 
&gt; &gt; It seems a lot of classes, maybe all, don&apos;t call super by default but only if it elects not to take over handling of the event in question. That makes sense to me, and I followed that pattern.
&gt; 
&gt; This is kind of a deep subject.
&gt; 
&gt; It really depends on what code is in the base class’s defaultEventHandler
&gt; function. Whether this class does *something* or not is not the whole story.
&gt; If the base class has some additional handling to do, we’d possibly want to
&gt; call through to it. Unless it’s something that we should prevent since this
&gt; class has &quot;fully handled&quot; the event.
&gt; 
&gt; I personally think calling the base class unconditionally the more
&gt; maintainable pattern. After all, to know it’s safe to not call through, you
&gt; need to know that nothing in the base class function needs to run. In some
&gt; rare case, it may be that the derived class version really does need to
&gt; actively prevent what the base class would have done. In that case it’s
&gt; necessary not to call through.

OK, I&apos;ll move the call to HTMLElement::defaultEventHandler to the top of the function.

&gt; &gt;&gt;&gt;&gt; Source/WebCore/Modules/model-element/HTMLModelElement.h:74
&gt; &gt;&gt;&gt;&gt; +    void setInteractive(bool);
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; We don’t need these functions at all. We can just use [Reflect] in the IDL file. I suggest we delete them.
&gt; &gt;&gt; 
&gt; &gt;&gt; We don’t need these functions at all. We can just use [Reflect] in the IDL file. I suggest we delete them.
&gt; &gt; 
&gt; &gt; Wow! Did not know about that. I&apos;ll probably keep interactive() as a private method to avoid calling hasAttributeWithoutSynchronization(HTMLNames::interactiveAttr) instead.
&gt; 
&gt; I’d name the private one isInteractive(), I think.

Sure, will do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834827</commentid>
    <comment_count>12</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-01-27 23:02:46 -0800</bug_when>
    <thetext>Committed r288728 (246521@trunk): &lt;https://commits.webkit.org/246521@trunk&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450122</attachid>
            <date>2022-01-27 03:27:07 -0800</date>
            <delta_ts>2022-01-27 09:06:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227621-20220127122706.patch</filename>
            <type>text/plain</type>
            <size>28709</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDNmZDk1MjgwZjUyMWU4
MTYxNjY2MGJmM2I4NWM2OGRjZWViNTZlNC4uNThlYmFkZmI2NzhiNDZmZTAwMzlhOWI3NWE3ZmNl
YTdmMTRjOGU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIyLTAxLTI3ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIFtNb2RlbF0gQWxsb3cg
ZGlzYWJsaW5nIGludGVyYWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjc2MjEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgwMDc5NzAzPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGFkZCBz
dXBwb3J0IGZvciB0aGUgImludGVyYWN0aXZlIiBJREwgcHJvcGVydHkgYW5kIEhUTUwgYXR0cmli
dXRlIGFzIGRpc2N1c3NlZAorICAgICAgICBpbiB0aGUgPG1vZGVsPiBleHBsYWluZXIgYXQgaHR0
cHM6Ly9naXRodWIuY29tL1dlYktpdC9leHBsYWluZXJzL3RyZWUvbWFpbi9tb2RlbC4KKworICAg
ICAgICBJZiB0aGUgImludGVyYWN0aXZlIiBwcm9wZXJ0eSBpcyAidHJ1ZSIsIHRoZW4gdGhlIEhU
TUwgImludGVyYWN0aXZlIiBhdHRyaWJ1dGUgaXMKKyAgICAgICAgc2V0IG9uIHRoZSBlbGVtZW50
LiBJZiB0aGUgcHJvcGVydHkgaXMgImZhbHNlIiwgdGhlbiB0aGUgSFRNTCBhdHRyaWJ1dGUgaXMg
YWJzZW50LgorCisgICAgICAgIExpa2V3aXNlLCBpZiB0aGUgSFRNTCBhdHRyaWJ1dGUgaXMgcHJl
c2VudCwgdGhlIHByb3BlcnR5IHJldHVybnMgInRydWUiLiBJZiB0aGUKKyAgICAgICAgSFRNTCBh
dHRyaWJ1dGUgaXMgbWlkZGluZywgdGhlIHByb3BlcnR5IHJldHVybnMgImZhbHNlIi4KKworICAg
ICAgICBOb3RlIHRoYXQgdGhlIHZhbHVlIGhlbGQgYnkgdGhlIEhUTUwgYXR0cmlidXRlIGlzIG5v
dCB0YWtlbiBpbnRvIGFjY291bnQsIGl0cyBtZXJlCisgICAgICAgIHByZXNlbmNlIGlzIGFsbCB0
aGF0IGlzIHJlcXVpcmVkLgorCisgICAgICAgIEJhc2VkIG9uIHRoZSB2YWx1ZSBvZiB0aGUgImlu
dGVyYWN0aXZlIiBwcm9wZXJ0eSwgd2UgZWl0aGVyIGRpc2FibGUgb3IgZW5hYmxlCisgICAgICAg
IGludGVyYWN0aW9uLiBPbiBtYWNPUywgd2UgY2hlY2sgdGhlIHByb3BlcnR5IGluIEhUTUxNb2Rl
bEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoKQorICAgICAgICB3aGlsZSBvbiBpT1MsIHdo
ZXJlIGRyYWdnaW5nIGlzIHBlcmZvcm1lZCBlbnRpcmVseSBpbiB0aGUgVUkgcHJvY2Vzcywgd2Ug
dXNlIHRoZQorICAgICAgICBuZXcgTW9kZWxQbGF5ZXI6OnNldEludGVyYWN0aW9uRW5hYmxlZCgp
IG1ldGhvZC4KKworICAgICAgICBCeSBkZWZhdWx0LCBpbnRlcmFjdGlvbiBpcyBkaXNhYmxlZC4K
KworICAgICAgICBUZXN0czogbW9kZWwtZWxlbWVudC9tb2RlbC1lbGVtZW50LWludGVyYWN0aXZl
LWRyYWdnaW5nLmh0bWwKKyAgICAgICAgICAgICAgIG1vZGVsLWVsZW1lbnQvbW9kZWwtZWxlbWVu
dC1pbnRlcmFjdGl2ZS5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojpp
bnRlcmFjdGl2ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojpz
ZXRJbnRlcmFjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjphdHRy
aWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6OmRlZmF1
bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50Lmg6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVs
ZW1lbnQuaWRsOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNb2RlbFBsYXllcjo6c2V0SW50ZXJhY3Rpb25FbmFibGVk
KToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXIuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjoKKwogMjAyMi0wMS0yNyAgQW50b2luZSBR
dWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAgICA8bW9kZWw+IHNob3VsZCBvbmx5
IGJlIGRyYWdnYWJsZSBvbiBpT1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTYwZmRiOTY3OGU5YzQ0ODcyOGUwNjJl
MzlkMGViYjJjYjU0MWYzYS4uODY2YTk5MmFiODQwYTM3ZWZjOTc3ZTA4Zjk2ZDIzMjMzMmU4M2Vm
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAyMi0wMS0yNyAgQW50b2luZSBRdWludCAg
PGdyYW91dHNAd2Via2l0Lm9yZz4KKworICAgICAgICBbTW9kZWxdIEFsbG93IGRpc2FibGluZyBp
bnRlcmFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI3NjIxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MDA3OTcwMz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPdmVycmlkZSB0aGUgbmV3IE1v
ZGVsUGxheWVyOjpzZXRJbnRlcmFjdGlvbkVuYWJsZWQoKSBtZXRob2QgZm9yIHRoZSBpT1MgZmxh
dm9yCisgICAgICAgIGFuZCBzZW5kIHRoZSB2YWx1ZSB1cCB0byB0aGUgVUkgcHJvY2VzcyBzdWNo
IHRoYXQgaXQgbWF5IHNldCB0aGUgbWF0Y2hpbmcgdmFsdWUKKyAgICAgICAgZm9yIFVJVmlldy51
c2VySW50ZXJhY3Rpb25FbmFibGVkIG9uIHRoZSBtYXRjaGluZyBXS01vZGVsVmlldy4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Nb2RlbEVsZW1lbnRDb250cm9sbGVyQ29jb2EubW06Cisg
ICAgICAgIChXZWJLaXQ6Ok1vZGVsRWxlbWVudENvbnRyb2xsZXI6OnNldEludGVyYWN0aW9uRW5h
YmxlZEZvck1vZGVsRWxlbWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL01vZGVsRWxlbWVudENv
bnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojptb2RlbEVsZW1lbnRTZXRJbnRlcmFjdGlvbkVuYWJs
ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
V0tNb2RlbFZpZXcubW06CisgICAgICAgICgtW1dLTW9kZWxWaWV3IGluaXRXaXRoTW9kZWw6XSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9pb3MvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQ
bGF5ZXJJT1MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL2lvcy9BUktpdElubGluZVBy
ZXZpZXdNb2RlbFBsYXllcklPUy5tbToKKyAgICAgICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2
aWV3TW9kZWxQbGF5ZXJJT1M6OnNldEludGVyYWN0aW9uRW5hYmxlZCk6CisKIDIwMjItMDEtMjcg
IEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgPG1vZGVsPiBz
aG91bGQgb25seSBiZSBkcmFnZ2FibGUgb24gaU9TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKaW5kZXggM2Fj
MTkwMjA2NjNhM2U4YTNhZTNjYTkyZTdmMWU5ZWNhMGY1MTFmZC4uMDg1ZWRjNzI2OWRkZDk3ODdj
NzA4MjFhMmQ3OTJkMTQ0NmUyOTMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAtMzMxLDI3ICsz
MzEsNTUgQEAgYm9vbCBIVE1MTW9kZWxFbGVtZW50Ojppc0RyYWdnYWJsZUlnbm9yaW5nQXR0cmli
dXRlcygpIGNvbnN0CiAgICAgcmV0dXJuIHN1cHBvcnRzRHJhZ2dpbmcoKTsKIH0KIAorYm9vbCBI
VE1MTW9kZWxFbGVtZW50OjppbnRlcmFjdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGhhc0F0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjppbnRlcmFjdGl2ZUF0dHIp
OworfQorCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldEludGVyYWN0aXZlKGJvb2wgaXNJbnRl
cmFjdGl2ZSkKK3sKKyAgICBhdXRvIHdhc0ludGVyYWN0aXZlID0gaW50ZXJhY3RpdmUoKTsKKyAg
ICBzZXRCb29sZWFuQXR0cmlidXRlKEhUTUxOYW1lczo6aW50ZXJhY3RpdmVBdHRyLCBpc0ludGVy
YWN0aXZlKTsKKyAgICBpZiAobV9tb2RlbFBsYXllciAmJiB3YXNJbnRlcmFjdGl2ZSAhPSBpc0lu
dGVyYWN0aXZlKQorICAgICAgICBtX21vZGVsUGxheWVyLT5zZXRJbnRlcmFjdGlvbkVuYWJsZWQo
aXNJbnRlcmFjdGl2ZSk7Cit9CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6YXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9tU3RyaW5n
JiBvbGRWYWx1ZSwgY29uc3QgQXRvbVN0cmluZyYgbmV3VmFsdWUsIEF0dHJpYnV0ZU1vZGlmaWNh
dGlvblJlYXNvbiBtb2RpZmljYXRpb25SZWFzb24pCit7CisgICAgSFRNTEVsZW1lbnQ6OmF0dHJp
YnV0ZUNoYW5nZWQoYXR0cmlidXRlTmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCBtb2RpZmljYXRp
b25SZWFzb24pOworICAgIGlmIChtX21vZGVsUGxheWVyICYmIGF0dHJpYnV0ZU5hbWUgPT0gSFRN
TE5hbWVzOjppbnRlcmFjdGl2ZUF0dHIpCisgICAgICAgIG1fbW9kZWxQbGF5ZXItPnNldEludGVy
YWN0aW9uRW5hYmxlZChpbnRlcmFjdGl2ZSgpKTsKK30KKwogdm9pZCBIVE1MTW9kZWxFbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50JiBldmVudCkKIHsKLSAgICBpZiAoIW1fbW9kZWxQ
bGF5ZXIgfHwgIW1fbW9kZWxQbGF5ZXItPnN1cHBvcnRzTW91c2VJbnRlcmFjdGlvbigpKQorICAg
IGlmICghbV9tb2RlbFBsYXllciB8fCAhbV9tb2RlbFBsYXllci0+c3VwcG9ydHNNb3VzZUludGVy
YWN0aW9uKCkpIHsKKyAgICAgICAgSFRNTEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZl
bnQpOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgYXV0byB0eXBlID0gZXZlbnQudHlw
ZSgpOwotICAgIGlmICh0eXBlICE9IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCAmJiB0eXBl
ICE9IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCAmJiB0eXBlICE9IGV2ZW50TmFtZXMoKS5t
b3VzZXVwRXZlbnQpCisgICAgaWYgKHR5cGUgIT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50
ICYmIHR5cGUgIT0gZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50ICYmIHR5cGUgIT0gZXZlbnRO
YW1lcygpLm1vdXNldXBFdmVudCkgeworICAgICAgICBIVE1MRWxlbWVudDo6ZGVmYXVsdEV2ZW50
SGFuZGxlcihldmVudCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBBU1NFUlQoaXM8
TW91c2VFdmVudD4oZXZlbnQpKTsKICAgICBhdXRvJiBtb3VzZUV2ZW50ID0gZG93bmNhc3Q8TW91
c2VFdmVudD4oZXZlbnQpOwogCi0gICAgaWYgKG1vdXNlRXZlbnQuYnV0dG9uKCkgIT0gTGVmdEJ1
dHRvbikKKyAgICBpZiAobW91c2VFdmVudC5idXR0b24oKSAhPSBMZWZ0QnV0dG9uKSB7CisgICAg
ICAgIEhUTUxFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKICAgICAgICAgcmV0
dXJuOworICAgIH0KIAotICAgIGlmICh0eXBlID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVu
dCAmJiAhbV9pc0RyYWdnaW5nICYmICFldmVudC5kZWZhdWx0UHJldmVudGVkKCkpCisgICAgaWYg
KHR5cGUgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50ICYmICFtX2lzRHJhZ2dpbmcgJiYg
IWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQoKSAmJiBpbnRlcmFjdGl2ZSgpKQogICAgICAgICBkcmFn
RGlkU3RhcnQobW91c2VFdmVudCk7CiAgICAgZWxzZSBpZiAodHlwZSA9PSBldmVudE5hbWVzKCku
bW91c2Vtb3ZlRXZlbnQgJiYgbV9pc0RyYWdnaW5nKQogICAgICAgICBkcmFnRGlkQ2hhbmdlKG1v
dXNlRXZlbnQpOwogICAgIGVsc2UgaWYgKHR5cGUgPT0gZXZlbnROYW1lcygpLm1vdXNldXBFdmVu
dCAmJiBtX2lzRHJhZ2dpbmcpCiAgICAgICAgIGRyYWdEaWRFbmQobW91c2VFdmVudCk7CisgICAg
ZWxzZQorICAgICAgICBIVE1MRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CiB9
CiAKIExheW91dFBvaW50IEhUTUxNb2RlbEVsZW1lbnQ6OmZsaXBwZWRMb2NhdGlvbkluRWxlbWVu
dEZvck1vdXNlRXZlbnQoTW91c2VFdmVudCYgZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCA3NDY4
YTMzMjQ3YmRhN2ZlNjk2MjAzOTlmNDlkNDIzOTFlZWE5YTg2Li5lN2FhN2U2YzFhOGRmMmZlYmU4
Y2Y5ODdkZGQ0ZDRkODgwOTk0MGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKQEAgLTcwLDYgKzcwLDkgQEAg
cHVibGljOgogICAgIGJvb2wgdXNlc1BsYXRmb3JtTGF5ZXIoKSBjb25zdDsKICAgICBQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CiAKKyAgICBib29sIGludGVyYWN0aXZlKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRJbnRlcmFjdGl2ZShib29sKTsKKwogICAgIHZvaWQgZW50ZXJG
dWxsc2NyZWVuKCk7CiAKICAgICB1c2luZyBDYW1lcmFQcm9taXNlID0gRE9NUHJvbWlzZURlZmVy
cmVkPElETERpY3Rpb25hcnk8SFRNTE1vZGVsRWxlbWVudENhbWVyYT4+OwpAQCAtMTE5LDYgKzEy
Miw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBET00gb3ZlcnJpZGVzLgogICAgIHZvaWQgZGlkTW92
ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1l
bnQpIGZpbmFsOworICAgIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbVN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21TdHJpbmcmIG5ld1ZhbHVl
LCBBdHRyaWJ1dGVNb2RpZmljYXRpb25SZWFzb24gPSBNb2RpZmllZERpcmVjdGx5KSBmaW5hbDsK
IAogICAgIC8vIFJlbmRlcmluZyBvdmVycmlkZXMuCiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9k
ZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmlkbAppbmRleCA0NWI4ZmQyNmM3NGZlYzNi
OTIwYzM1NDg0MDBjZDcyZTgyYzU4ZmVhLi43YWNiNTQ1NTE0Y2MyMzVmNmMyMTAxZmNlNmZmNjU4
MTk0YWVlZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvSFRNTE1vZGVsRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaWRsCkBAIC0zMyw2ICszMyw4IEBACiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gY29tcGxldGU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IFByb21pc2U8SFRNTE1vZGVsRWxlbWVudD4gcmVhZHk7CiAKKyAgICBhdHRyaWJ1dGUgYm9vbGVh
biBpbnRlcmFjdGl2ZTsKKwogICAgIHVuZGVmaW5lZCBlbnRlckZ1bGxzY3JlZW4oKTsKIAogICAg
IFtDb25kaXRpb25hbD1BUktJVF9JTkxJTkVfUFJFVklFV19DQU1FUkFfVFJBTlNGT1JNXSBQcm9t
aXNlPEhUTUxNb2RlbEVsZW1lbnRDYW1lcmE+IGdldENhbWVyYSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllci5jcHAKaW5kZXggOWYw
ZWM3YzU4MGVkYTEyOTg3YzhkMGViODdlNmM2OTYyZThlNDU1OC4uNTBlOTEzZDJjYzNlMzRiNGQx
OTc0MzgzNmI0OTYyZTg4ZjJkZDFmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXIuY3BwCkBAIC00MCw0ICs0MCw4IEBAIGJvb2wg
TW9kZWxQbGF5ZXI6OnN1cHBvcnRzRHJhZ2dpbmcoKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAor
dm9pZCBNb2RlbFBsYXllcjo6c2V0SW50ZXJhY3Rpb25FbmFibGVkKGJvb2wpCit7Cit9CisKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBs
YXllci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVy
LmgKaW5kZXggODkyYWE5NzE3MWY2NmE5NTMyMGU2NTc2N2Q5MzRiNzZiZThkODYxZC4uZTY3NDY3
MjY4ZmY4YTI3NWM4MTAwNjkzOTQzNmI1NzIxOTllM2E4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyLmgKQEAgLTQ4LDYgKzQ4LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKSA9IDA7CiAgICAg
dmlydHVhbCBib29sIHN1cHBvcnRzTW91c2VJbnRlcmFjdGlvbigpOwogICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c0RyYWdnaW5nKCk7CisgICAgdmlydHVhbCB2b2lkIHNldEludGVyYWN0aW9uRW5h
YmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlTW91c2VEb3duKGNvbnN0IExheW91
dFBvaW50JiwgTW9ub3RvbmljVGltZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVNb3Vz
ZU1vdmUoY29uc3QgTGF5b3V0UG9pbnQmLCBNb25vdG9uaWNUaW1lKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGhhbmRsZU1vdXNlVXAoY29uc3QgTGF5b3V0UG9pbnQmLCBNb25vdG9uaWNUaW1lKSA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5p
biBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCmluZGV4IGE2OTI1
MDExMTljODA2ODlkOGRmOGE1MGNiYTJlNjZhMjY4MjY1NzUuLjA4Mzk4NGMyMThhZWE4ZTIzNGZh
NWE5MzMwMDUxY2Y3MzJlODJhMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEF0dHJpYnV0ZU5hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0
ZU5hbWVzLmluCkBAIC0xNjEsNiArMTYxLDcgQEAgaW5kZXRlcm1pbmF0ZQogaW5lcnQKIGlucHV0
bW9kZQogaW50ZWdyaXR5CitpbnRlcmFjdGl2ZQogaXMKIGlzbWFwCiBpdGVtaWQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01vZGVsRWxlbWVudENvbnRyb2xsZXJD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01vZGVsRWxlbWVudENvbnRy
b2xsZXJDb2NvYS5tbQppbmRleCBjZTJiMTZhYjdmODYzZDA3YzljOGQ2NTQ2YzhmM2Q3ODYzNWQz
ZDRkLi5mNWQzYzdjZWU2ZjI0Zjc2OTBhNjhjY2MzN2MxZjQ2MGRmNzc1MDVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Nb2RlbEVsZW1lbnRDb250cm9sbGVyQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTW9kZWxFbGVtZW50Q29u
dHJvbGxlckNvY29hLm1tCkBAIC0xMzEsNiArMTMxLDEyIEBAIHZvaWQgTW9kZWxFbGVtZW50Q29u
dHJvbGxlcjo6dGFrZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4oTW9kZWxJZGVudGlmaWVyIG1vZGVs
SWRlCiAgICAgfV07CiB9CiAKK3ZvaWQgTW9kZWxFbGVtZW50Q29udHJvbGxlcjo6c2V0SW50ZXJh
Y3Rpb25FbmFibGVkRm9yTW9kZWxFbGVtZW50KE1vZGVsSWRlbnRpZmllciBtb2RlbElkZW50aWZp
ZXIsIGJvb2wgaXNJbnRlcmFjdGlvbkVuYWJsZWQpCit7CisgICAgaWYgKGF1dG8gKm1vZGVsVmll
dyA9IG1vZGVsVmlld0Zvck1vZGVsSWRlbnRpZmllcihtb2RlbElkZW50aWZpZXIpKQorICAgICAg
ICBtb2RlbFZpZXcudXNlckludGVyYWN0aW9uRW5hYmxlZCA9IGlzSW50ZXJhY3Rpb25FbmFibGVk
OworfQorCiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Nb2RlbEVsZW1lbnRDb250cm9sbGVy
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Nb2RlbEVsZW1lbnRDb250cm9sbGVyLmgKaW5k
ZXggMWU5YzY5OGIyM2JkYjM4YjBkNzFmNWVjNmRhNWY0ODYyYzU1ZDg3Ny4uOWM0MzZkMmU1ZGRm
MWIyODVhOTVkNDljYWRkYjU5ZDEzNzQ0NTM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTW9kZWxFbGVtZW50Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL01vZGVsRWxlbWVudENvbnRyb2xsZXIuaApAQCAtNjcsNiArNjcsNyBAQCBwdWJsaWM6
CiAjZW5kaWYKICNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfSU9TKQogICAgIHZvaWQg
dGFrZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4oTW9kZWxJZGVudGlmaWVyKTsKKyAgICB2b2lkIHNl
dEludGVyYWN0aW9uRW5hYmxlZEZvck1vZGVsRWxlbWVudChNb2RlbElkZW50aWZpZXIsIGJvb2wp
OwogI2VuZGlmCiAjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKICAgICB2b2lk
IG1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoVVJMLCBTdHJpbmcsIFdlYkNvcmU6OkZsb2F0
U2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxzdGQ6OnBhaXI8U3RyaW5nLCB1
aW50MzJfdD4sIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+KT4mJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBmMjQwZmY0OTAyYmZhMWI2NDBjMDc0MmJiYjZh
OWRjMjVjNzQwNzE3Li5lNTBkY2Q2YTViMWE1NjA3MTU3OWVmZTdhNzlkOWYxN2FmZDc1ZTdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTExMDAzLDYgKzEx
MDAzLDExIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0YWtlTW9kZWxFbGVtZW50RnVsbHNjcmVlbihN
b2RlbElkZW50aWZpZXIgbW9kZWxJZGVudGlmaWVyKQogewogICAgIG1vZGVsRWxlbWVudENvbnRy
b2xsZXIoKS0+dGFrZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4obW9kZWxJZGVudGlmaWVyKTsKIH0K
Kwordm9pZCBXZWJQYWdlUHJveHk6Om1vZGVsRWxlbWVudFNldEludGVyYWN0aW9uRW5hYmxlZChN
b2RlbElkZW50aWZpZXIgbW9kZWxJZGVudGlmaWVyLCBib29sIGlzSW50ZXJhY3Rpb25FbmFibGVk
KQoreworICAgIG1vZGVsRWxlbWVudENvbnRyb2xsZXIoKS0+c2V0SW50ZXJhY3Rpb25FbmFibGVk
Rm9yTW9kZWxFbGVtZW50KG1vZGVsSWRlbnRpZmllciwgaXNJbnRlcmFjdGlvbkVuYWJsZWQpOwor
fQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAwYzg2MDYwYjNjMGI0OGM1ZTYwNmYx
NTg1MDY4NTNhMjZmZjAzMDg0Li4zNWZmZjY5ZDhlYmE1YzhhYzVkMDkxYjUwODY0NjIwOWExZTM2
Yjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNjA1LDYgKzYw
NSw3IEBAIHB1YmxpYzoKICNlbmRpZgogI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19J
T1MpCiAgICAgdm9pZCB0YWtlTW9kZWxFbGVtZW50RnVsbHNjcmVlbihNb2RlbElkZW50aWZpZXIp
OworICAgIHZvaWQgbW9kZWxFbGVtZW50U2V0SW50ZXJhY3Rpb25FbmFibGVkKE1vZGVsSWRlbnRp
ZmllciwgYm9vbCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFD
KQogICAgIHZvaWQgbW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEV4cGVjdGVkPHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQzMl90PiwgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvcj4pPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgppbmRleCBhODY2ZTUzNjJkOTZjNDc2ZjhkNzRkY2Q1MTdiMWNhOTZhMjkw
NzdjLi4xNWNkMGUzZDU5NjhiYzY2MTdlYTVjNGEyOGYwMTdhMTE0ZGFiOTViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC01ODUs
NiArNTg1LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogI2lmIEVOQUJMRShBUktJ
VF9JTkxJTkVfUFJFVklFV19JT1MpCiAgICAgVGFrZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4oc3Ry
dWN0IFdlYktpdDo6TW9kZWxJZGVudGlmaWVyIG1vZGVsSWRlbnRpZmllcikKKyAgICBNb2RlbEVs
ZW1lbnRTZXRJbnRlcmFjdGlvbkVuYWJsZWQoc3RydWN0IFdlYktpdDo6TW9kZWxJZGVudGlmaWVy
IG1vZGVsSWRlbnRpZmllciwgYm9vbCBpc0ludGVyYWN0aW9uRW5hYmxlZCkKICNlbmRpZgogI2lm
IEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCiAgICAgTW9kZWxFbGVtZW50RGlkQ3Jl
YXRlUHJldmlldyhVUkwgdXJsLCBTdHJpbmcgdXVpZCwgV2ViQ29yZTo6RmxvYXRTaXplIHNpemUp
IC0+IChFeHBlY3RlZDxzdGQ6OnBhaXI8U3RyaW5nLCB1aW50MzJfdD4sIFdlYkNvcmU6OlJlc291
cmNlRXJyb3I+IHJlc3VsdCkgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS01vZGVsVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS01v
ZGVsVmlldy5tbQppbmRleCA3ZTkzNzBmYTMzNjU3NjBkYTA1ZWFhMjdlNTJlYzdmMGJkMjJjZjAw
Li40NGZhODVmMDI5ZmMyNmQ1YjZhMWRiOWExM2ZhMmIyNDdkZWY1ZTIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tNb2RlbFZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLTW9kZWxWaWV3Lm1tCkBAIC05OSw2ICs5OSw3IEBAIC0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aE1vZGVsOihXZWJDb3JlOjpNb2RlbCYpbW9kZWwKIAogICAgIF9t
b2RlbEludGVyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIgPSBhZG9wdE5TKFtbV0tNb2RlbEludGVy
YWN0aW9uR2VzdHVyZVJlY29nbml6ZXIgYWxsb2NdIGluaXRdKTsKICAgICBbc2VsZiBhZGRHZXN0
dXJlUmVjb2duaXplcjpfbW9kZWxJbnRlcmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsK
KyAgICBzZWxmLnVzZXJJbnRlcmFjdGlvbkVuYWJsZWQgPSBOTzsKIAogICAgIHJldHVybiBzZWxm
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL2lvcy9BUktp
dElubGluZVByZXZpZXdNb2RlbFBsYXllcklPUy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L01vZGVsL2lvcy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcklPUy5oCmluZGV4IGFmYzI5
ODQ0ZjNkZGY5ZWRlNjNiNDQ1MzNiY2EwNjU5YThhYjZhNzYuLmRjY2UyNzg2ZTY3MTQ5YWRmOWI4
YmRmZDk0NjJmMmY0MjJlZmJiM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9Nb2RlbC9pb3MvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJJT1MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvaW9zL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxh
eWVySU9TLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgcHJpdmF0ZToKICAgICAvLyBXZWJDb3JlOjpNb2Rl
bFBsYXllciBvdmVycmlkZXMuCiAgICAgYm9vbCBzdXBwb3J0c0RyYWdnaW5nKCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEludGVy
YWN0aW9uRW5hYmxlZChib29sKSBvdmVycmlkZTsKICAgICB2b2lkIGhhbmRsZU1vdXNlRG93bihj
b25zdCBXZWJDb3JlOjpMYXlvdXRQb2ludCYsIE1vbm90b25pY1RpbWUpIG92ZXJyaWRlOwogICAg
IHZvaWQgaGFuZGxlTW91c2VNb3ZlKGNvbnN0IFdlYkNvcmU6OkxheW91dFBvaW50JiwgTW9ub3Rv
bmljVGltZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBoYW5kbGVNb3VzZVVwKGNvbnN0IFdlYkNvcmU6
OkxheW91dFBvaW50JiwgTW9ub3RvbmljVGltZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvaW9zL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxh
eWVySU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL2lvcy9BUktpdElubGlu
ZVByZXZpZXdNb2RlbFBsYXllcklPUy5tbQppbmRleCAxMzg2YTRlZTRmNzIxMmYzNTY1Y2Y1Zjli
MTEzNDdlODMzMTA4YTVmLi5hNDQzMGI0NGI1ODFhZTVjNjVkMDRkZDIzMWY1MjM4ZDNhMTc4NDBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvaW9zL0FSS2l0SW5s
aW5lUHJldmlld01vZGVsUGxheWVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9Nb2RlbC9pb3MvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJJT1MubW0KQEAgLTc2LDYg
Kzc2LDE2IEBAIHZvaWQgQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJJT1M6OmVudGVyRnVs
bHNjcmVlbigpCiAgICAgICAgIHN0cm9uZ1BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6VGFrZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4oKm1vZGVsSWRlbnRpZmllcikpOwogfQogCit2
b2lkIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVySU9TOjpzZXRJbnRlcmFjdGlvbkVuYWJs
ZWQoYm9vbCBpc0ludGVyYWN0aW9uRW5hYmxlZCkKK3sKKyAgICBSZWZQdHIgc3Ryb25nUGFnZSA9
IHBhZ2UoKTsKKyAgICBpZiAoIXN0cm9uZ1BhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChhdXRvIG1vZGVsSWRlbnRpZmllciA9IHRoaXMtPm1vZGVsSWRlbnRpZmllcigpKQorICAgICAg
ICBzdHJvbmdQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Ok1vZGVsRWxlbWVudFNl
dEludGVyYWN0aW9uRW5hYmxlZCgqbW9kZWxJZGVudGlmaWVyLCBpc0ludGVyYWN0aW9uRW5hYmxl
ZCkpOworfQorCiB2b2lkIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVySU9TOjpoYW5kbGVN
b3VzZURvd24oY29uc3QgV2ViQ29yZTo6TGF5b3V0UG9pbnQmLCBNb25vdG9uaWNUaW1lKQogewog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDZhMTIzNzVlMTc5N2Q4ZmVkZmE5YjZl
ZGRlZGNjNjBkNWRlZmZmYTIuLmUyNTdhZDg4NjI1OWEwZTc1MzY5NWRhY2I1MTc0NTYwMjk0MjRm
NGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAyMi0wMS0yNyAgQW50b2luZSBRdWludCAgPGdy
YW91dHNAd2Via2l0Lm9yZz4KKworICAgICAgICBbTW9kZWxdIEFsbG93IGRpc2FibGluZyBpbnRl
cmFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI3NjIxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MDA3OTcwMz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdHdvIG5ldyB0ZXN0czoKKyAg
ICAgICAgCisgICAgICAgIC0gbW9kZWwtZWxlbWVudC9tb2RlbC1lbGVtZW50LWludGVyYWN0aXZl
Lmh0bWwgdGVzdHMgdGhlICJpbnRlcmFjdGl2ZSIgSURMIHByb3BlcnR5CisgICAgICAgIGFuZCB0
aGUgImludGVyYWN0aXZlIiBIVE1MIGF0dHJpYnV0ZSwKKyAgICAgICAgLSBtb2RlbC1lbGVtZW50
L21vZGVsLWVsZW1lbnQtaW50ZXJhY3RpdmUtZHJhZ2dpbmcuaHRtbCB0ZXN0cyB0aGF0IHRoZSAi
aW50ZXJhY3RpdmUiCisgICAgICAgIElETCBwcm9wZXJ0eSBjb3JyZWN0bHkgZGlzYWJsZXMgc2V0
dGluZyB0aGUgY2FtZXJhIGJ5IGRyYWdnaW5nIHdoZW4gImZhbHNlIiwgYW5kIGFsbG93cworICAg
ICAgICBpdCB3aGVuICJ0cnVlIi4KKworICAgICAgICBXZSBhbHNvIHJlZmFjdG9yIHNvbWUgY29k
ZSBwcmV2aW91c2x5IGZvdW5kIGluIG1vZGVsLWVsZW1lbnQvbW9kZWwtZWxlbWVudC1jYW1lcmEu
aHRtbAorICAgICAgICB0byBub3cgYmUgaW4gdGhlIHNoYXJlZCBtb2RlbC1lbGVtZW50L3Jlc291
cmNlcy9tb2RlbC11dGlscy5qcyB0byBlYXNlIHdyaXRpbmcgPG1vZGVsPgorICAgICAgICB0ZXN0
cy4KKworICAgICAgICAqIG1vZGVsLWVsZW1lbnQvbW9kZWwtZWxlbWVudC1jYW1lcmEuaHRtbDoK
KyAgICAgICAgKiBtb2RlbC1lbGVtZW50L21vZGVsLWVsZW1lbnQtaW50ZXJhY3RpdmUtZHJhZ2dp
bmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtb2RlbC1lbGVtZW50L21vZGVsLWVs
ZW1lbnQtaW50ZXJhY3RpdmUtZHJhZ2dpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICogbW9kZWwt
ZWxlbWVudC9tb2RlbC1lbGVtZW50LWludGVyYWN0aXZlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogbW9kZWwtZWxlbWVudC9tb2RlbC1lbGVtZW50LWludGVyYWN0aXZlLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIG1vZGVsLWVsZW1lbnQvcmVzb3VyY2VzL21vZGVsLXV0aWxzLmpzOiBB
ZGRlZC4KKyAgICAgICAgKGNvbnN0Lm1ha2VNb2RlbCk6CisgICAgICAgIChjb25zdC5ib2R5QXZh
aWxhYmlsaXR5LmFzeW5jIHJldHVybik6CisgICAgICAgIChjb25zdC5ib2R5QXZhaWxhYmlsaXR5
KToKKyAgICAgICAgKGNvbnN0LnJlYWR5TW9kZWwuYXN5bmMgdGVzdCk6CisgICAgICAgIChjb25z
dC5hc3NlcnRfY2FtZXJhc19hcmVfZXF1YWwpOgorICAgICAgICAoY29uc3QuYXNzZXJ0X2NhbWVy
YXNfYXJlX25vdF9lcXVhbCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlv
bnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjItMDEt
MjcgIENhbWVyb24gTWNDb3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KIAogICAgICAgICBBdm9p
ZCBzZXR0aW5nIGFuZCBjbGVhcmluZyA6YWN0aXZlIHN0YXRlIHdoZW4gZGlzcGF0Y2hpbmcgc3lu
dGhldGljIGNsaWNrIGV2ZW50cyB3aGVuIHBvc3NpYmxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9tb2RlbC1lbGVtZW50L21vZGVsLWVsZW1lbnQtY2FtZXJhLmh0bWwgYi9MYXlvdXRUZXN0cy9t
b2RlbC1lbGVtZW50L21vZGVsLWVsZW1lbnQtY2FtZXJhLmh0bWwKaW5kZXggM2RjYmM0Y2E0ZjRh
YjA5NGRlNTllMjA2Zjg2MmNlZTE5NjgwYjdjNC4uNmQwOTcyZmZhNjU1YmNhYTE4NjBjNGMxYWZl
NzdlNmMzODEzZjg4YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbW9kZWwtZWxlbWVudC9tb2Rl
bC1lbGVtZW50LWNhbWVyYS5odG1sCisrKyBiL0xheW91dFRlc3RzL21vZGVsLWVsZW1lbnQvbW9k
ZWwtZWxlbWVudC1jYW1lcmEuaHRtbApAQCAtMSwzMyArMSw4IEBACiA8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9tb2RlbC11dGlscy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCi1jb25zdCBtYWtlTW9k
ZWwgPSAoKSA9PiB7Ci0gICAgY29uc3Qgc291cmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
c291cmNlIik7Ci0gICAgc291cmNlLnNyYyA9ICJyZXNvdXJjZXMvY3ViZS51c2R6IjsKLSAgICBj
b25zdCBtb2RlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm1vZGVsIik7Ci0gICAgbW9kZWwu
YXBwZW5kQ2hpbGQoc291cmNlKTsKLSAgICByZXR1cm4gbW9kZWw7Ci19Ci0KLWNvbnN0IGJvZHlB
dmFpbGFiaWxpdHkgPSBhc3luYyAoKSA9PiB7Ci0gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29s
dmUgPT4gewotICAgICAgICBpZiAoZG9jdW1lbnQuYm9keSkKLSAgICAgICAgICAgIHJlc29sdmUo
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIkRP
TUNvbnRlbnRMb2FkZWQiLCBldmVudCA9PiByZXNvbHZlKCkpOwotICAgIH0pOwotfTsKLQotY29u
c3QgcmVhZHlNb2RlbCA9IGFzeW5jICh0ZXN0KSA9PiB7Ci0gICAgYXdhaXQgYm9keUF2YWlsYWJp
bGl0eSgpOwotICAgIGNvbnN0IG1vZGVsID0gZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChtYWtl
TW9kZWwoKSk7Ci0gICAgdGVzdC5hZGRfY2xlYW51cCgoKSA9PiBtb2RlbC5yZW1vdmUoKSk7Ci0g
ICAgYXdhaXQgbW9kZWwucmVhZHk7Ci0gICAgcmV0dXJuIG1vZGVsOwotfTsKLQotY29uc3QgZXBz
aWxvbiA9IDAuMDAxOwogY29uc3QgZXhwZWN0ZWRDYW1lcmEgPSB7IHBpdGNoOiAxMCwgeWF3OiA0
MCwgc2NhbGU6IDIgfTsKIAogdGVzdCgoKSA9PiB7CkBAIC01Nyw5ICszMiw3IEBAIHByb21pc2Vf
dGVzdChhc3luYyB0ZXN0ID0+IHsKICAgICBjb25zdCBtb2RlbCA9IGF3YWl0IHJlYWR5TW9kZWwo
dGVzdCk7CiAgICAgYXdhaXQgbW9kZWwuc2V0Q2FtZXJhKGV4cGVjdGVkQ2FtZXJhKTsKICAgICBj
b25zdCBhY3R1YWxDYW1lcmEgPSBhd2FpdCBtb2RlbC5nZXRDYW1lcmEoKTsKLSAgICBhc3NlcnRf
YXBwcm94X2VxdWFscyhhY3R1YWxDYW1lcmEucGl0Y2gsIGV4cGVjdGVkQ2FtZXJhLnBpdGNoLCBl
cHNpbG9uLCAiQ2FtZXJhIGhhcyBleHBlY3RlZCBwaXRjaCIpOwotICAgIGFzc2VydF9hcHByb3hf
ZXF1YWxzKGFjdHVhbENhbWVyYS55YXcsIGV4cGVjdGVkQ2FtZXJhLnlhdywgZXBzaWxvbiwgIkNh
bWVyYSBoYXMgZXhwZWN0ZWQgeWF3Iik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYWN0dWFs
Q2FtZXJhLnNjYWxlLCBleHBlY3RlZENhbWVyYS5zY2FsZSwgZXBzaWxvbiwgIkNhbWVyYSBoYXMg
ZXhwZWN0ZWQgc2NhbGUiKTsKKyAgICBhc3NlcnRfY2FtZXJhc19hcmVfZXF1YWwoYWN0dWFsQ2Ft
ZXJhLCBleHBlY3RlZENhbWVyYSk7CiB9LCAiPG1vZGVsPiBjYW4gc2V0IHRoZSBjYW1lcmEgYW5k
IHJlYWQgaXQgYmFjayIpOwogCiBwcm9taXNlX3Rlc3QoYXN5bmMgdGVzdCA9PiB7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9tb2RlbC1lbGVtZW50L21vZGVsLWVsZW1lbnQtaW50ZXJhY3RpdmUt
ZHJhZ2dpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbW9kZWwtZWxlbWVudC9tb2RlbC1l
bGVtZW50LWludGVyYWN0aXZlLWRyYWdnaW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYjAy
NzkxNWU4ZGE5ZDVjMGUyZWQzN2NkOGUyOGRjMDM1NjkyMGUzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvbW9kZWwtZWxlbWVudC9tb2RlbC1lbGVtZW50LWludGVyYWN0aXZlLWRyYWdn
aW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBEcmFnZ2luZyBvdmVyIGEg
PG1vZGVsPiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBjYW1lcmEgd2hlbiBpbnRlcmFjdGl2ZSBpcyBm
YWxzZQorUEFTUyBEcmFnZ2luZyBvdmVyIGEgPG1vZGVsPiBhZmZlY3RzIHRoZSBjYW1lcmEgd2hl
biBpbnRlcmFjdGl2ZSBpcyB0cnVlCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21vZGVsLWVs
ZW1lbnQvbW9kZWwtZWxlbWVudC1pbnRlcmFjdGl2ZS1kcmFnZ2luZy5odG1sIGIvTGF5b3V0VGVz
dHMvbW9kZWwtZWxlbWVudC9tb2RlbC1lbGVtZW50LWludGVyYWN0aXZlLWRyYWdnaW5nLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDI2MzQ4MGUwNGI1NTk2N2ZhMGYzMTI2NzliNGEyOTU3Y2IzMzkwOQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21vZGVsLWVsZW1lbnQvbW9kZWwtZWxlbWVudC1p
bnRlcmFjdGl2ZS1kcmFnZ2luZy5odG1sCkBAIC0wLDAgKzEsNjEgQEAKKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL21vZGVsLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKworbW9kZWwgeworICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgbGVmdDogMDsKKyAgICB3aWR0
aDogNDAwcHg7CisgICAgaGVpZ2h0OiA0MDBweDsKK30KKworPC9zdHlsZT4KKzxzY3JpcHQ+CisK
K2NvbnN0IGRyYWdNb2RlbCA9IGFzeW5jIChtb2RlbCkgPT4geworICAgIGNvbnN0IGJvdW5kcyA9
IG1vZGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgIGNvbnN0IHN0YXJ0UG9pbnQgPSBu
ZXcgRE9NUG9pbnQoCisgICAgICAgIGJvdW5kcy54ICsgYm91bmRzLndpZHRoIC8gMiwKKyAgICAg
ICAgYm91bmRzLnkgKyBib3VuZHMuaGVpZ2h0IC8gMgorICAgICk7CisgICAgY29uc3QgZW5kUG9p
bnQgPSBuZXcgRE9NUG9pbnQoCisgICAgICAgIHN0YXJ0UG9pbnQueCArIGJvdW5kcy53aWR0aCAv
IDQsCisgICAgICAgIHN0YXJ0UG9pbnQueSArIGJvdW5kcy5oZWlnaHQgLyA0CisgICAgKTsKKyAg
ICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICBpZiAo
ISgiZXZlbnRTZW5kZXIiIGluIHdpbmRvdykpIHsKKyAgICAgICAgICAgIHJlamVjdCgpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oc3RhcnRQb2ludC54LCBzdGFydFBvaW50LnkpOworICAgICAgICBldmVudFNlbmRlci5t
b3VzZURvd24oKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oZW5kUG9pbnQueCwg
ZW5kUG9pbnQueSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgcmVz
b2x2ZSgpOworICAgIH0pOworfTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHRlc3QgPT4geworICAg
IGNvbnN0IG1vZGVsID0gYXdhaXQgcmVhZHlNb2RlbCh0ZXN0KTsKKyAgICBtb2RlbC5pbnRlcmFj
dGl2ZSA9IGZhbHNlOworICAgIGNvbnN0IGNhbWVyYUJlZm9yZURyYWcgPSBhd2FpdCBtb2RlbC5n
ZXRDYW1lcmEoKTsKKyAgICBhd2FpdCBkcmFnTW9kZWwobW9kZWwpOworICAgIGNvbnN0IGNhbWVy
YUFmdGVyRHJhZyA9IGF3YWl0IG1vZGVsLmdldENhbWVyYSgpOworICAgIGFzc2VydF9jYW1lcmFz
X2FyZV9lcXVhbChjYW1lcmFBZnRlckRyYWcsIGNhbWVyYUJlZm9yZURyYWcsICJjYW1lcmFzIGJl
Zm9yZSBhbmQgYWZ0ZXIgZHJhZyBtYXRjaCIpOworfSwgIkRyYWdnaW5nIG92ZXIgYSA8bW9kZWw+
IGhhcyBubyBlZmZlY3Qgb24gdGhlIGNhbWVyYSB3aGVuIGludGVyYWN0aXZlIGlzIGZhbHNlIik7
CisKK3Byb21pc2VfdGVzdChhc3luYyB0ZXN0ID0+IHsKKyAgICBjb25zdCBtb2RlbCA9IGF3YWl0
IHJlYWR5TW9kZWwodGVzdCk7CisgICAgbW9kZWwuaW50ZXJhY3RpdmUgPSB0cnVlOworICAgIGNv
bnN0IGNhbWVyYUJlZm9yZURyYWcgPSBhd2FpdCBtb2RlbC5nZXRDYW1lcmEoKTsKKyAgICBhd2Fp
dCBkcmFnTW9kZWwobW9kZWwpOworICAgIGNvbnN0IGNhbWVyYUFmdGVyRHJhZyA9IGF3YWl0IG1v
ZGVsLmdldENhbWVyYSgpOworICAgIGFzc2VydF9jYW1lcmFzX2FyZV9ub3RfZXF1YWwoY2FtZXJh
QWZ0ZXJEcmFnLCBjYW1lcmFCZWZvcmVEcmFnLCAiY2FtZXJhcyBiZWZvcmUgYW5kIGFmdGVyIGRy
YWcgYXJlIGRpZmZlcmVudCIpOworfSwgIkRyYWdnaW5nIG92ZXIgYSA8bW9kZWw+IGFmZmVjdHMg
dGhlIGNhbWVyYSB3aGVuIGludGVyYWN0aXZlIGlzIHRydWUiKTsKKworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tb2RlbC1lbGVtZW50L21vZGVs
LWVsZW1lbnQtaW50ZXJhY3RpdmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbW9kZWwtZWxl
bWVudC9tb2RlbC1lbGVtZW50LWludGVyYWN0aXZlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
ODFjZmVmZGI5MzBlOTMzMDAxYmVjY2ExNzc2NzQzMGU5OGQ1M2U4Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvbW9kZWwtZWxlbWVudC9tb2RlbC1lbGVtZW50LWludGVyYWN0aXZlLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKKworUEFTUyA8bW9kZWw+IGhhcyBpbnRlcmFjdGl2
ZSBwcm9wZXJ0eQorUEFTUyA8bW9kZWw+IGludGVyYWN0aXZlIHByb3BlcnR5IGRlZmF1bHQgdG8g
ZmFsc2UKK1BBU1MgPG1vZGVsPiBpbnRlcmFjdGl2ZSBwcm9wZXJ0eSByZWZsZWN0cyB0aGUgaW50
ZXJhY3RpdmUgSFRNTCBhdHRyaWJ1dGUKK1BBU1MgPG1vZGVsPiBpbnRlcmFjdGl2ZSBIVE1MIGF0
dHJpYnV0ZSByZWZsZWN0cyB0aGUgaW50ZXJhY3RpdmUgcHJvcGVydHkKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvbW9kZWwtZWxlbWVudC9tb2RlbC1lbGVtZW50LWludGVyYWN0aXZlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9tb2RlbC1lbGVtZW50L21vZGVsLWVsZW1lbnQtaW50ZXJhY3RpdmUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42YTRhYmQyMjUyZmNmYmE3YTZkMzM5OWUzMWVhODFjMTg2OWE4MDU0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbW9kZWwtZWxlbWVudC9tb2RlbC1lbGVtZW50
LWludGVyYWN0aXZlLmh0bWwKQEAgLTAsMCArMSw0MCBAQAorPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK3Rlc3QoKCkgPT4g
eworICAgIGNvbnN0IG1vZGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibW9kZWwiKTsKKyAg
ICBhc3NlcnRfaWRsX2F0dHJpYnV0ZShtb2RlbCwgImludGVyYWN0aXZlIiwgImludGVyYWN0aXZl
IGlzIGRlZmluZWQiKTsKK30sICI8bW9kZWw+IGhhcyBpbnRlcmFjdGl2ZSBwcm9wZXJ0eSIpOwor
Cit0ZXN0KCgpID0+IHsKKyAgICBjb25zdCBtb2RlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
Im1vZGVsIik7CisgICAgYXNzZXJ0X2ZhbHNlKG1vZGVsLmludGVyYWN0aXZlLCAiaW50ZXJhY3Rp
dmUgaXMgZmFsc2UiKTsKK30sICI8bW9kZWw+IGludGVyYWN0aXZlIHByb3BlcnR5IGRlZmF1bHQg
dG8gZmFsc2UiKTsKKwordGVzdCgoKSA9PiB7CisgICAgY29uc3QgbW9kZWwgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJtb2RlbCIpOworCisgICAgbW9kZWwuc2V0QXR0cmlidXRlKCJpbnRlcmFj
dGl2ZSIsICIiKTsKKyAgICBhc3NlcnRfdHJ1ZShtb2RlbC5pbnRlcmFjdGl2ZSwgImludGVyYWN0
aXZlIGlzIHRydWUgd2hlbiB0aGUgSFRNTCBhdHRyaWJ1dGUgaGFzIG5vIHZhbHVlIik7CisKKyAg
ICBtb2RlbC5zZXRBdHRyaWJ1dGUoImludGVyYWN0aXZlIiwgImZhbHNlIik7CisgICAgYXNzZXJ0
X3RydWUobW9kZWwuaW50ZXJhY3RpdmUsICJpbnRlcmFjdGl2ZSBpcyB0cnVlIHdoZW4gdGhlIEhU
TUwgYXR0cmlidXRlIGhhcyBhICdmYWxzZScgdmFsdWUiKTsKKworICAgIG1vZGVsLnJlbW92ZUF0
dHJpYnV0ZSgiaW50ZXJhY3RpdmUiKTsKKyAgICBhc3NlcnRfZmFsc2UobW9kZWwuaW50ZXJhY3Rp
dmUsICJpbnRlcmFjdGl2ZSBpcyBmYWxzZSIpOworfSwgIjxtb2RlbD4gaW50ZXJhY3RpdmUgcHJv
cGVydHkgcmVmbGVjdHMgdGhlIGludGVyYWN0aXZlIEhUTUwgYXR0cmlidXRlIik7CisKK3Rlc3Qo
KCkgPT4geworICAgIGNvbnN0IG1vZGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibW9kZWwi
KTsKKworICAgIG1vZGVsLmludGVyYWN0aXZlID0gdHJ1ZTsKKyAgICBhc3NlcnRfdHJ1ZShtb2Rl
bC5oYXNBdHRyaWJ1dGUoImludGVyYWN0aXZlIiksICJpbnRlcmFjdGl2ZSBIVE1MIGF0dHJpYnV0
ZSBpcyBwcmVzZW50IHdoZW4gaW50ZXJhY3RpdmUgaXMgdHJ1ZSIpOworCisgICAgbW9kZWwuaW50
ZXJhY3RpdmUgPSBmYWxzZTsKKyAgICBhc3NlcnRfZmFsc2UobW9kZWwuaGFzQXR0cmlidXRlKCJp
bnRlcmFjdGl2ZSIpLCAiaW50ZXJhY3RpdmUgSFRNTCBhdHRyaWJ1dGUgaXMgbm90IHByZXNlbnQg
d2hlbiBpbnRlcmFjdGl2ZSBpcyBmYWxzZSIpOworfSwgIjxtb2RlbD4gaW50ZXJhY3RpdmUgSFRN
TCBhdHRyaWJ1dGUgcmVmbGVjdHMgdGhlIGludGVyYWN0aXZlIHByb3BlcnR5Iik7CisKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbW9kZWwtZWxl
bWVudC9yZXNvdXJjZXMvbW9kZWwtdXRpbHMuanMgYi9MYXlvdXRUZXN0cy9tb2RlbC1lbGVtZW50
L3Jlc291cmNlcy9tb2RlbC11dGlscy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOThmNzM3MTdmOWU2MzI1ZTQz
NDZiZTRlMDg2MjY2YjZmMGFjYzQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbW9k
ZWwtZWxlbWVudC9yZXNvdXJjZXMvbW9kZWwtdXRpbHMuanMKQEAgLTAsMCArMSw0MCBAQAorCitj
b25zdCBtYWtlTW9kZWwgPSAoKSA9PiB7CisgICAgY29uc3Qgc291cmNlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgic291cmNlIik7CisgICAgc291cmNlLnNyYyA9ICJyZXNvdXJjZXMvY3ViZS51
c2R6IjsKKyAgICBjb25zdCBtb2RlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm1vZGVsIik7
CisgICAgbW9kZWwuYXBwZW5kQ2hpbGQoc291cmNlKTsKKyAgICByZXR1cm4gbW9kZWw7Cit9CisK
K2NvbnN0IGJvZHlBdmFpbGFiaWxpdHkgPSBhc3luYyAoKSA9PiB7CisgICAgcmV0dXJuIG5ldyBQ
cm9taXNlKHJlc29sdmUgPT4geworICAgICAgICBpZiAoZG9jdW1lbnQuYm9keSkKKyAgICAgICAg
ICAgIHJlc29sdmUoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50
TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBldmVudCA9PiByZXNvbHZlKCkpOworICAgIH0p
OworfTsKKworY29uc3QgcmVhZHlNb2RlbCA9IGFzeW5jICh0ZXN0KSA9PiB7CisgICAgYXdhaXQg
Ym9keUF2YWlsYWJpbGl0eSgpOworICAgIGNvbnN0IG1vZGVsID0gZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChtYWtlTW9kZWwoKSk7CisgICAgdGVzdC5hZGRfY2xlYW51cCgoKSA9PiBtb2RlbC5y
ZW1vdmUoKSk7CisgICAgYXdhaXQgbW9kZWwucmVhZHk7CisgICAgcmV0dXJuIG1vZGVsOworfTsK
KworY29uc3QgZXBzaWxvbiA9IDAuMDAxOworCitjb25zdCBhc3NlcnRfY2FtZXJhc19hcmVfZXF1
YWwgPSAoYWN0dWFsQ2FtZXJhLCBleHBlY3RlZENhbWVyYSwgZGVzY3JpcHRpb24pID0+IHsKKyAg
ICBhc3NlcnRfYXBwcm94X2VxdWFscyhhY3R1YWxDYW1lcmEucGl0Y2gsIGV4cGVjdGVkQ2FtZXJh
LnBpdGNoLCBlcHNpbG9uLCBgJHtkZXNjcmlwdGlvbn06IGNhbWVyYSBoYXMgZXhwZWN0ZWQgcGl0
Y2hgKTsKKyAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhY3R1YWxDYW1lcmEueWF3LCBleHBlY3Rl
ZENhbWVyYS55YXcsIGVwc2lsb24sIGAke2Rlc2NyaXB0aW9ufTogY2FtZXJhIGhhcyBleHBlY3Rl
ZCB5YXdgKTsKKyAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhY3R1YWxDYW1lcmEuc2NhbGUsIGV4
cGVjdGVkQ2FtZXJhLnNjYWxlLCBlcHNpbG9uLCBgJHtkZXNjcmlwdGlvbn06IGNhbWVyYSBoYXMg
ZXhwZWN0ZWQgc2NhbGVgKTsKK307CisKK2NvbnN0IGFzc2VydF9jYW1lcmFzX2FyZV9ub3RfZXF1
YWwgPSAoYWN0dWFsQ2FtZXJhLCBleHBlY3RlZENhbWVyYSwgZGVzY3JpcHRpb24pID0+IHsKKyAg
ICBjb25zdCBjYW1lcmFzTWF0Y2ggPSBNYXRoLmFicyhhY3R1YWxDYW1lcmEucGl0Y2ggLSBleHBl
Y3RlZENhbWVyYS5waXRjaCkgPiBlcHNpbG9uICYmCisgICAgICAgICAgICAgICAgICAgICAgICAg
TWF0aC5hYnMoYWN0dWFsQ2FtZXJhLnlhdyAtIGV4cGVjdGVkQ2FtZXJhLnlhdykgPiBlcHNpbG9u
ICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5hYnMoYWN0dWFsQ2FtZXJhLnNjYWxl
IC0gZXhwZWN0ZWRDYW1lcmEuc2NhbGUpID4gZXBzaWxvbjsKKyAgICBhc3NlcnRfZmFsc2UoY2Ft
ZXJhc01hdGNoLCBkZXNjcmlwdGlvbik7Cit9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVz
dEV4cGVjdGF0aW9ucwppbmRleCBjMTAxZmI3N2QzZjQ0NmJjOTNmMTM0MzE1YmJhMzcxYzI5OTRm
OTZjLi5lNzVhOWIxMjIyY2YzZDUxNTI5ZDk2ODY0NTdkZDE1NWFhY2ZjZmM0IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzQxOSw2ICszNDE5LDcgQEAg
ZmFzdC9jYW52YXMvY2FudmFzLWJsZW5kaW5nLXRleHQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAK
ICMgVGhpcyB0ZXN0IHJlcXVpcmVzIEFSUUwgU1BJcyBub3QgeWV0IGF2YWlsYWJsZSB0byBPcGVu
U291cmNlIGJ1aWxkcy4KIG1vZGVsLWVsZW1lbnQvbW9kZWwtZWxlbWVudC1jYW1lcmEuaHRtbCBb
IFNraXAgXQorbW9kZWwtZWxlbWVudC9tb2RlbC1lbGVtZW50LWludGVyYWN0aXZlLWRyYWdnaW5n
Lmh0bWwgWyBTa2lwIF0KIAogIyBUaGVzZSB0ZXN0cyByZXF1aXJlIHRoZSBkZXNpZ24gc3lzdGVt
IHVpIGZvbnRzIHRvIGJlIGluc3RhbGxlZC4KIGZhc3QvdGV4dC9kZXNpZ24tc3lzdGVtLXVpLTEx
Lmh0bWwgWyBQYXNzIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0
RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMK
aW5kZXggODk3ZTdhMjhhMjM3OTYwZjY1NDFmMTMzOTg4MTE5OTEzMDZiNWFmMy4uMGM4ZjIxZGIz
ZDgzZjBjNjRkOWNjOWUwNGViMWUyMGZkZDc5NzY5ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTEwOSw2ICsxMDksNyBAQCBtb2RlbC1lbGVtZW50L21v
ZGVsLWVsZW1lbnQtY29udGVudHMtbGF5ZXItdXBkYXRlcy5odG1sIFsgU2tpcCBdCiAKICMgVGhp
cyB0ZXN0IHJlcXVpcmVzIEFSUUwgU1BJcyBub3QgeWV0IGF2YWlsYWJsZSB0byBPcGVuU291cmNl
IGJ1aWxkcy4KIG1vZGVsLWVsZW1lbnQvbW9kZWwtZWxlbWVudC1jYW1lcmEuaHRtbCBbIFNraXAg
XQorbW9kZWwtZWxlbWVudC9tb2RlbC1lbGVtZW50LWludGVyYWN0aXZlLWRyYWdnaW5nLmh0bWwg
WyBTa2lwIF0KIAogIyBBY2Nlc3NpYmlsaXR5IHRlc3RzIGZvciBub3RpZmljYXRpb25zIHRoYXQg
ZG9uJ3QgZXhpc3Qgb3IgYXJlbid0IG5lZWRlZCBvbiBNYWMgT1MgWC4KIGFjY2Vzc2liaWxpdHkv
YXJpYS1jaGVja2JveC1zZW5kcy1ub3RpZmljYXRpb24uaHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450143</attachid>
            <date>2022-01-27 08:49:26 -0800</date>
            <delta_ts>2022-01-27 09:06:41 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-227621-20220127174925.patch</filename>
            <type>text/plain</type>
            <size>28649</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDNmZDk1MjgwZjUyMWU4
MTYxNjY2MGJmM2I4NWM2OGRjZWViNTZlNC4uNjE0MDRhMDY4ZWRhMDkwYjY0Y2UzZDQ3MmZlODI1
M2Y5Yzk5ZGQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIyLTAxLTI3ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIFtNb2RlbF0gQWxsb3cg
ZGlzYWJsaW5nIGludGVyYWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjc2MjEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgwMDc5NzAzPgor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFdlIGFkZCBzdXBw
b3J0IGZvciB0aGUgImludGVyYWN0aXZlIiBJREwgcHJvcGVydHkgYW5kIEhUTUwgYXR0cmlidXRl
IGFzIGRpc2N1c3NlZAorICAgICAgICBpbiB0aGUgPG1vZGVsPiBleHBsYWluZXIgYXQgaHR0cHM6
Ly9naXRodWIuY29tL1dlYktpdC9leHBsYWluZXJzL3RyZWUvbWFpbi9tb2RlbC4KKworICAgICAg
ICBJZiB0aGUgImludGVyYWN0aXZlIiBwcm9wZXJ0eSBpcyAidHJ1ZSIsIHRoZW4gdGhlIEhUTUwg
ImludGVyYWN0aXZlIiBhdHRyaWJ1dGUgaXMKKyAgICAgICAgc2V0IG9uIHRoZSBlbGVtZW50LiBJ
ZiB0aGUgcHJvcGVydHkgaXMgImZhbHNlIiwgdGhlbiB0aGUgSFRNTCBhdHRyaWJ1dGUgaXMgYWJz
ZW50LgorCisgICAgICAgIExpa2V3aXNlLCBpZiB0aGUgSFRNTCBhdHRyaWJ1dGUgaXMgcHJlc2Vu
dCwgdGhlIHByb3BlcnR5IHJldHVybnMgInRydWUiLiBJZiB0aGUKKyAgICAgICAgSFRNTCBhdHRy
aWJ1dGUgaXMgbWlkZGluZywgdGhlIHByb3BlcnR5IHJldHVybnMgImZhbHNlIi4KKworICAgICAg
ICBOb3RlIHRoYXQgdGhlIHZhbHVlIGhlbGQgYnkgdGhlIEhUTUwgYXR0cmlidXRlIGlzIG5vdCB0
YWtlbiBpbnRvIGFjY291bnQsIGl0cyBtZXJlCisgICAgICAgIHByZXNlbmNlIGlzIGFsbCB0aGF0
IGlzIHJlcXVpcmVkLgorCisgICAgICAgIEJhc2VkIG9uIHRoZSB2YWx1ZSBvZiB0aGUgImludGVy
YWN0aXZlIiBwcm9wZXJ0eSwgd2UgZWl0aGVyIGRpc2FibGUgb3IgZW5hYmxlCisgICAgICAgIGlu
dGVyYWN0aW9uLiBPbiBtYWNPUywgd2UgY2hlY2sgdGhlIHByb3BlcnR5IGluIEhUTUxNb2RlbEVs
ZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoKQorICAgICAgICB3aGlsZSBvbiBpT1MsIHdoZXJl
IGRyYWdnaW5nIGlzIHBlcmZvcm1lZCBlbnRpcmVseSBpbiB0aGUgVUkgcHJvY2Vzcywgd2UgdXNl
IHRoZQorICAgICAgICBuZXcgTW9kZWxQbGF5ZXI6OnNldEludGVyYWN0aW9uRW5hYmxlZCgpIG1l
dGhvZC4KKworICAgICAgICBCeSBkZWZhdWx0LCBpbnRlcmFjdGlvbiBpcyBkaXNhYmxlZC4KKwor
ICAgICAgICBUZXN0czogbW9kZWwtZWxlbWVudC9tb2RlbC1lbGVtZW50LWludGVyYWN0aXZlLWRy
YWdnaW5nLmh0bWwKKyAgICAgICAgICAgICAgIG1vZGVsLWVsZW1lbnQvbW9kZWwtZWxlbWVudC1p
bnRlcmFjdGl2ZS5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1v
ZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjppbnRl
cmFjdGl2ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRJ
bnRlcmFjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjphdHRyaWJ1
dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6OmRlZmF1bHRF
dmVudEhhbmRsZXIpOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50Lmg6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1l
bnQuaWRsOgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNb2RlbFBsYXllcjo6c2V0SW50ZXJhY3Rpb25FbmFibGVkKToK
KyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXIuaDoKKyAgICAgICAg
KiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjoKKwogMjAyMi0wMS0yNyAgQW50b2luZSBRdWlu
dCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAgICA8bW9kZWw+IHNob3VsZCBvbmx5IGJl
IGRyYWdnYWJsZSBvbiBpT1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTYwZmRiOTY3OGU5YzQ0ODcyOGUwNjJlMzlk
MGViYjJjYjU0MWYzYS4uMjZlNWZlMmM0MDM4NDlhYTU3MGNlOTgyYTk4NmEzMDA3OTdiNTUwYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAyMi0wMS0yNyAgQW50b2luZSBRdWludCAgPGdy
YW91dHNAd2Via2l0Lm9yZz4KKworICAgICAgICBbTW9kZWxdIEFsbG93IGRpc2FibGluZyBpbnRl
cmFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI3NjIxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MDA3OTcwMz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBPdmVycmlkZSB0aGUgbmV3IE1vZGVsUGxh
eWVyOjpzZXRJbnRlcmFjdGlvbkVuYWJsZWQoKSBtZXRob2QgZm9yIHRoZSBpT1MgZmxhdm9yCisg
ICAgICAgIGFuZCBzZW5kIHRoZSB2YWx1ZSB1cCB0byB0aGUgVUkgcHJvY2VzcyBzdWNoIHRoYXQg
aXQgbWF5IHNldCB0aGUgbWF0Y2hpbmcgdmFsdWUKKyAgICAgICAgZm9yIFVJVmlldy51c2VySW50
ZXJhY3Rpb25FbmFibGVkIG9uIHRoZSBtYXRjaGluZyBXS01vZGVsVmlldy4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9Nb2RlbEVsZW1lbnRDb250cm9sbGVyQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6Ok1vZGVsRWxlbWVudENvbnRyb2xsZXI6OnNldEludGVyYWN0aW9uRW5hYmxlZEZv
ck1vZGVsRWxlbWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL01vZGVsRWxlbWVudENvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5Ojptb2RlbEVsZW1lbnRTZXRJbnRlcmFjdGlvbkVuYWJsZWQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tNb2Rl
bFZpZXcubW06CisgICAgICAgICgtW1dLTW9kZWxWaWV3IGluaXRXaXRoTW9kZWw6XSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9pb3MvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJJ
T1MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL2lvcy9BUktpdElubGluZVByZXZpZXdN
b2RlbFBsYXllcklPUy5tbToKKyAgICAgICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3TW9k
ZWxQbGF5ZXJJT1M6OnNldEludGVyYWN0aW9uRW5hYmxlZCk6CisKIDIwMjItMDEtMjcgIEFudG9p
bmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgPG1vZGVsPiBzaG91bGQg
b25seSBiZSBkcmFnZ2FibGUgb24gaU9TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKaW5kZXggM2FjMTkwMjA2
NjNhM2U4YTNhZTNjYTkyZTdmMWU5ZWNhMGY1MTFmZC4uNGIyZDgyM2Y0M2EyMTAyY2EwN2ViMTgx
MjFkZjE4ZjUxM2U3NWUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcApAQCAtMzMxLDI3ICszMzEsNTUg
QEAgYm9vbCBIVE1MTW9kZWxFbGVtZW50Ojppc0RyYWdnYWJsZUlnbm9yaW5nQXR0cmlidXRlcygp
IGNvbnN0CiAgICAgcmV0dXJuIHN1cHBvcnRzRHJhZ2dpbmcoKTsKIH0KIAorYm9vbCBIVE1MTW9k
ZWxFbGVtZW50OjppbnRlcmFjdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGhhc0F0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjppbnRlcmFjdGl2ZUF0dHIpOworfQor
Cit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldEludGVyYWN0aXZlKGJvb2wgaXNJbnRlcmFjdGl2
ZSkKK3sKKyAgICBhdXRvIHdhc0ludGVyYWN0aXZlID0gaW50ZXJhY3RpdmUoKTsKKyAgICBzZXRC
b29sZWFuQXR0cmlidXRlKEhUTUxOYW1lczo6aW50ZXJhY3RpdmVBdHRyLCBpc0ludGVyYWN0aXZl
KTsKKyAgICBpZiAobV9tb2RlbFBsYXllciAmJiB3YXNJbnRlcmFjdGl2ZSAhPSBpc0ludGVyYWN0
aXZlKQorICAgICAgICBtX21vZGVsUGxheWVyLT5zZXRJbnRlcmFjdGlvbkVuYWJsZWQoaXNJbnRl
cmFjdGl2ZSk7Cit9CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBvbGRWYWx1ZSwgY29u
c3QgQXRvbVN0cmluZyYgbmV3VmFsdWUsIEF0dHJpYnV0ZU1vZGlmaWNhdGlvblJlYXNvbiByZWFz
b24pCit7CisgICAgSFRNTEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQobmFtZSwgb2xkVmFsdWUs
IG5ld1ZhbHVlLCByZWFzb24pOworICAgIGlmIChtX21vZGVsUGxheWVyICYmIG5hbWUgPT0gSFRN
TE5hbWVzOjppbnRlcmFjdGl2ZUF0dHIpCisgICAgICAgIG1fbW9kZWxQbGF5ZXItPnNldEludGVy
YWN0aW9uRW5hYmxlZChpbnRlcmFjdGl2ZSgpKTsKK30KKwogdm9pZCBIVE1MTW9kZWxFbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50JiBldmVudCkKIHsKLSAgICBpZiAoIW1fbW9kZWxQ
bGF5ZXIgfHwgIW1fbW9kZWxQbGF5ZXItPnN1cHBvcnRzTW91c2VJbnRlcmFjdGlvbigpKQorICAg
IGlmICghbV9tb2RlbFBsYXllciB8fCAhbV9tb2RlbFBsYXllci0+c3VwcG9ydHNNb3VzZUludGVy
YWN0aW9uKCkpIHsKKyAgICAgICAgSFRNTEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZl
bnQpOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgYXV0byB0eXBlID0gZXZlbnQudHlw
ZSgpOwotICAgIGlmICh0eXBlICE9IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCAmJiB0eXBl
ICE9IGV2ZW50TmFtZXMoKS5tb3VzZW1vdmVFdmVudCAmJiB0eXBlICE9IGV2ZW50TmFtZXMoKS5t
b3VzZXVwRXZlbnQpCisgICAgaWYgKHR5cGUgIT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50
ICYmIHR5cGUgIT0gZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50ICYmIHR5cGUgIT0gZXZlbnRO
YW1lcygpLm1vdXNldXBFdmVudCkgeworICAgICAgICBIVE1MRWxlbWVudDo6ZGVmYXVsdEV2ZW50
SGFuZGxlcihldmVudCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBBU1NFUlQoaXM8
TW91c2VFdmVudD4oZXZlbnQpKTsKICAgICBhdXRvJiBtb3VzZUV2ZW50ID0gZG93bmNhc3Q8TW91
c2VFdmVudD4oZXZlbnQpOwogCi0gICAgaWYgKG1vdXNlRXZlbnQuYnV0dG9uKCkgIT0gTGVmdEJ1
dHRvbikKKyAgICBpZiAobW91c2VFdmVudC5idXR0b24oKSAhPSBMZWZ0QnV0dG9uKSB7CisgICAg
ICAgIEhUTUxFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKICAgICAgICAgcmV0
dXJuOworICAgIH0KIAotICAgIGlmICh0eXBlID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVu
dCAmJiAhbV9pc0RyYWdnaW5nICYmICFldmVudC5kZWZhdWx0UHJldmVudGVkKCkpCisgICAgaWYg
KHR5cGUgPT0gZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50ICYmICFtX2lzRHJhZ2dpbmcgJiYg
IWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQoKSAmJiBpbnRlcmFjdGl2ZSgpKQogICAgICAgICBkcmFn
RGlkU3RhcnQobW91c2VFdmVudCk7CiAgICAgZWxzZSBpZiAodHlwZSA9PSBldmVudE5hbWVzKCku
bW91c2Vtb3ZlRXZlbnQgJiYgbV9pc0RyYWdnaW5nKQogICAgICAgICBkcmFnRGlkQ2hhbmdlKG1v
dXNlRXZlbnQpOwogICAgIGVsc2UgaWYgKHR5cGUgPT0gZXZlbnROYW1lcygpLm1vdXNldXBFdmVu
dCAmJiBtX2lzRHJhZ2dpbmcpCiAgICAgICAgIGRyYWdEaWRFbmQobW91c2VFdmVudCk7CisgICAg
ZWxzZQorICAgICAgICBIVE1MRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CiB9
CiAKIExheW91dFBvaW50IEhUTUxNb2RlbEVsZW1lbnQ6OmZsaXBwZWRMb2NhdGlvbkluRWxlbWVu
dEZvck1vdXNlRXZlbnQoTW91c2VFdmVudCYgZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAppbmRleCA3NDY4
YTMzMjQ3YmRhN2ZlNjk2MjAzOTlmNDlkNDIzOTFlZWE5YTg2Li5lN2FhN2U2YzFhOGRmMmZlYmU4
Y2Y5ODdkZGQ0ZDRkODgwOTk0MGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKQEAgLTcwLDYgKzcwLDkgQEAg
cHVibGljOgogICAgIGJvb2wgdXNlc1BsYXRmb3JtTGF5ZXIoKSBjb25zdDsKICAgICBQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CiAKKyAgICBib29sIGludGVyYWN0aXZlKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRJbnRlcmFjdGl2ZShib29sKTsKKwogICAgIHZvaWQgZW50ZXJG
dWxsc2NyZWVuKCk7CiAKICAgICB1c2luZyBDYW1lcmFQcm9taXNlID0gRE9NUHJvbWlzZURlZmVy
cmVkPElETERpY3Rpb25hcnk8SFRNTE1vZGVsRWxlbWVudENhbWVyYT4+OwpAQCAtMTE5LDYgKzEy
Miw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBET00gb3ZlcnJpZGVzLgogICAgIHZvaWQgZGlkTW92
ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1l
bnQpIGZpbmFsOworICAgIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbVN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21TdHJpbmcmIG5ld1ZhbHVl
LCBBdHRyaWJ1dGVNb2RpZmljYXRpb25SZWFzb24gPSBNb2RpZmllZERpcmVjdGx5KSBmaW5hbDsK
IAogICAgIC8vIFJlbmRlcmluZyBvdmVycmlkZXMuCiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9k
ZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmlkbAppbmRleCA0NWI4ZmQyNmM3NGZlYzNi
OTIwYzM1NDg0MDBjZDcyZTgyYzU4ZmVhLi43YWNiNTQ1NTE0Y2MyMzVmNmMyMTAxZmNlNmZmNjU4
MTk0YWVlZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvSFRNTE1vZGVsRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaWRsCkBAIC0zMyw2ICszMyw4IEBACiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gY29tcGxldGU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IFByb21pc2U8SFRNTE1vZGVsRWxlbWVudD4gcmVhZHk7CiAKKyAgICBhdHRyaWJ1dGUgYm9vbGVh
biBpbnRlcmFjdGl2ZTsKKwogICAgIHVuZGVmaW5lZCBlbnRlckZ1bGxzY3JlZW4oKTsKIAogICAg
IFtDb25kaXRpb25hbD1BUktJVF9JTkxJTkVfUFJFVklFV19DQU1FUkFfVFJBTlNGT1JNXSBQcm9t
aXNlPEhUTUxNb2RlbEVsZW1lbnRDYW1lcmE+IGdldENhbWVyYSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllci5jcHAKaW5kZXggOWYw
ZWM3YzU4MGVkYTEyOTg3YzhkMGViODdlNmM2OTYyZThlNDU1OC4uNTBlOTEzZDJjYzNlMzRiNGQx
OTc0MzgzNmI0OTYyZTg4ZjJkZDFmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXIuY3BwCkBAIC00MCw0ICs0MCw4IEBAIGJvb2wg
TW9kZWxQbGF5ZXI6OnN1cHBvcnRzRHJhZ2dpbmcoKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAor
dm9pZCBNb2RlbFBsYXllcjo6c2V0SW50ZXJhY3Rpb25FbmFibGVkKGJvb2wpCit7Cit9CisKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBs
YXllci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVy
LmgKaW5kZXggODkyYWE5NzE3MWY2NmE5NTMyMGU2NTc2N2Q5MzRiNzZiZThkODYxZC4uZTY3NDY3
MjY4ZmY4YTI3NWM4MTAwNjkzOTQzNmI1NzIxOTllM2E4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyLmgKQEAgLTQ4LDYgKzQ4LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKSA9IDA7CiAgICAg
dmlydHVhbCBib29sIHN1cHBvcnRzTW91c2VJbnRlcmFjdGlvbigpOwogICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c0RyYWdnaW5nKCk7CisgICAgdmlydHVhbCB2b2lkIHNldEludGVyYWN0aW9uRW5h
YmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlTW91c2VEb3duKGNvbnN0IExheW91
dFBvaW50JiwgTW9ub3RvbmljVGltZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVNb3Vz
ZU1vdmUoY29uc3QgTGF5b3V0UG9pbnQmLCBNb25vdG9uaWNUaW1lKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGhhbmRsZU1vdXNlVXAoY29uc3QgTGF5b3V0UG9pbnQmLCBNb25vdG9uaWNUaW1lKSA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5p
biBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCmluZGV4IGE2OTI1
MDExMTljODA2ODlkOGRmOGE1MGNiYTJlNjZhMjY4MjY1NzUuLjA4Mzk4NGMyMThhZWE4ZTIzNGZh
NWE5MzMwMDUxY2Y3MzJlODJhMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEF0dHJpYnV0ZU5hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0
ZU5hbWVzLmluCkBAIC0xNjEsNiArMTYxLDcgQEAgaW5kZXRlcm1pbmF0ZQogaW5lcnQKIGlucHV0
bW9kZQogaW50ZWdyaXR5CitpbnRlcmFjdGl2ZQogaXMKIGlzbWFwCiBpdGVtaWQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01vZGVsRWxlbWVudENvbnRyb2xsZXJD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01vZGVsRWxlbWVudENvbnRy
b2xsZXJDb2NvYS5tbQppbmRleCBjZTJiMTZhYjdmODYzZDA3YzljOGQ2NTQ2YzhmM2Q3ODYzNWQz
ZDRkLi5mNWQzYzdjZWU2ZjI0Zjc2OTBhNjhjY2MzN2MxZjQ2MGRmNzc1MDVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Nb2RlbEVsZW1lbnRDb250cm9sbGVyQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTW9kZWxFbGVtZW50Q29u
dHJvbGxlckNvY29hLm1tCkBAIC0xMzEsNiArMTMxLDEyIEBAIHZvaWQgTW9kZWxFbGVtZW50Q29u
dHJvbGxlcjo6dGFrZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4oTW9kZWxJZGVudGlmaWVyIG1vZGVs
SWRlCiAgICAgfV07CiB9CiAKK3ZvaWQgTW9kZWxFbGVtZW50Q29udHJvbGxlcjo6c2V0SW50ZXJh
Y3Rpb25FbmFibGVkRm9yTW9kZWxFbGVtZW50KE1vZGVsSWRlbnRpZmllciBtb2RlbElkZW50aWZp
ZXIsIGJvb2wgaXNJbnRlcmFjdGlvbkVuYWJsZWQpCit7CisgICAgaWYgKGF1dG8gKm1vZGVsVmll
dyA9IG1vZGVsVmlld0Zvck1vZGVsSWRlbnRpZmllcihtb2RlbElkZW50aWZpZXIpKQorICAgICAg
ICBtb2RlbFZpZXcudXNlckludGVyYWN0aW9uRW5hYmxlZCA9IGlzSW50ZXJhY3Rpb25FbmFibGVk
OworfQorCiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Nb2RlbEVsZW1lbnRDb250cm9sbGVy
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Nb2RlbEVsZW1lbnRDb250cm9sbGVyLmgKaW5k
ZXggMWU5YzY5OGIyM2JkYjM4YjBkNzFmNWVjNmRhNWY0ODYyYzU1ZDg3Ny4uOWM0MzZkMmU1ZGRm
MWIyODVhOTVkNDljYWRkYjU5ZDEzNzQ0NTM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTW9kZWxFbGVtZW50Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL01vZGVsRWxlbWVudENvbnRyb2xsZXIuaApAQCAtNjcsNiArNjcsNyBAQCBwdWJsaWM6
CiAjZW5kaWYKICNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfSU9TKQogICAgIHZvaWQg
dGFrZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4oTW9kZWxJZGVudGlmaWVyKTsKKyAgICB2b2lkIHNl
dEludGVyYWN0aW9uRW5hYmxlZEZvck1vZGVsRWxlbWVudChNb2RlbElkZW50aWZpZXIsIGJvb2wp
OwogI2VuZGlmCiAjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKICAgICB2b2lk
IG1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoVVJMLCBTdHJpbmcsIFdlYkNvcmU6OkZsb2F0
U2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxzdGQ6OnBhaXI8U3RyaW5nLCB1
aW50MzJfdD4sIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+KT4mJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBmMjQwZmY0OTAyYmZhMWI2NDBjMDc0MmJiYjZh
OWRjMjVjNzQwNzE3Li5lNTBkY2Q2YTViMWE1NjA3MTU3OWVmZTdhNzlkOWYxN2FmZDc1ZTdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTExMDAzLDYgKzEx
MDAzLDExIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0YWtlTW9kZWxFbGVtZW50RnVsbHNjcmVlbihN
b2RlbElkZW50aWZpZXIgbW9kZWxJZGVudGlmaWVyKQogewogICAgIG1vZGVsRWxlbWVudENvbnRy
b2xsZXIoKS0+dGFrZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4obW9kZWxJZGVudGlmaWVyKTsKIH0K
Kwordm9pZCBXZWJQYWdlUHJveHk6Om1vZGVsRWxlbWVudFNldEludGVyYWN0aW9uRW5hYmxlZChN
b2RlbElkZW50aWZpZXIgbW9kZWxJZGVudGlmaWVyLCBib29sIGlzSW50ZXJhY3Rpb25FbmFibGVk
KQoreworICAgIG1vZGVsRWxlbWVudENvbnRyb2xsZXIoKS0+c2V0SW50ZXJhY3Rpb25FbmFibGVk
Rm9yTW9kZWxFbGVtZW50KG1vZGVsSWRlbnRpZmllciwgaXNJbnRlcmFjdGlvbkVuYWJsZWQpOwor
fQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAwYzg2MDYwYjNjMGI0OGM1ZTYwNmYx
NTg1MDY4NTNhMjZmZjAzMDg0Li4zNWZmZjY5ZDhlYmE1YzhhYzVkMDkxYjUwODY0NjIwOWExZTM2
Yjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNjA1LDYgKzYw
NSw3IEBAIHB1YmxpYzoKICNlbmRpZgogI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19J
T1MpCiAgICAgdm9pZCB0YWtlTW9kZWxFbGVtZW50RnVsbHNjcmVlbihNb2RlbElkZW50aWZpZXIp
OworICAgIHZvaWQgbW9kZWxFbGVtZW50U2V0SW50ZXJhY3Rpb25FbmFibGVkKE1vZGVsSWRlbnRp
ZmllciwgYm9vbCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFD
KQogICAgIHZvaWQgbW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEV4cGVjdGVkPHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQzMl90PiwgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvcj4pPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgppbmRleCBhODY2ZTUzNjJkOTZjNDc2ZjhkNzRkY2Q1MTdiMWNhOTZhMjkw
NzdjLi4xNWNkMGUzZDU5NjhiYzY2MTdlYTVjNGEyOGYwMTdhMTE0ZGFiOTViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC01ODUs
NiArNTg1LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogI2lmIEVOQUJMRShBUktJ
VF9JTkxJTkVfUFJFVklFV19JT1MpCiAgICAgVGFrZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4oc3Ry
dWN0IFdlYktpdDo6TW9kZWxJZGVudGlmaWVyIG1vZGVsSWRlbnRpZmllcikKKyAgICBNb2RlbEVs
ZW1lbnRTZXRJbnRlcmFjdGlvbkVuYWJsZWQoc3RydWN0IFdlYktpdDo6TW9kZWxJZGVudGlmaWVy
IG1vZGVsSWRlbnRpZmllciwgYm9vbCBpc0ludGVyYWN0aW9uRW5hYmxlZCkKICNlbmRpZgogI2lm
IEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCiAgICAgTW9kZWxFbGVtZW50RGlkQ3Jl
YXRlUHJldmlldyhVUkwgdXJsLCBTdHJpbmcgdXVpZCwgV2ViQ29yZTo6RmxvYXRTaXplIHNpemUp
IC0+IChFeHBlY3RlZDxzdGQ6OnBhaXI8U3RyaW5nLCB1aW50MzJfdD4sIFdlYkNvcmU6OlJlc291
cmNlRXJyb3I+IHJlc3VsdCkgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS01vZGVsVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS01v
ZGVsVmlldy5tbQppbmRleCA3ZTkzNzBmYTMzNjU3NjBkYTA1ZWFhMjdlNTJlYzdmMGJkMjJjZjAw
Li40NGZhODVmMDI5ZmMyNmQ1YjZhMWRiOWExM2ZhMmIyNDdkZWY1ZTIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tNb2RlbFZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLTW9kZWxWaWV3Lm1tCkBAIC05OSw2ICs5OSw3IEBAIC0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aE1vZGVsOihXZWJDb3JlOjpNb2RlbCYpbW9kZWwKIAogICAgIF9t
b2RlbEludGVyYWN0aW9uR2VzdHVyZVJlY29nbml6ZXIgPSBhZG9wdE5TKFtbV0tNb2RlbEludGVy
YWN0aW9uR2VzdHVyZVJlY29nbml6ZXIgYWxsb2NdIGluaXRdKTsKICAgICBbc2VsZiBhZGRHZXN0
dXJlUmVjb2duaXplcjpfbW9kZWxJbnRlcmFjdGlvbkdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsK
KyAgICBzZWxmLnVzZXJJbnRlcmFjdGlvbkVuYWJsZWQgPSBOTzsKIAogICAgIHJldHVybiBzZWxm
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL2lvcy9BUktp
dElubGluZVByZXZpZXdNb2RlbFBsYXllcklPUy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L01vZGVsL2lvcy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcklPUy5oCmluZGV4IGFmYzI5
ODQ0ZjNkZGY5ZWRlNjNiNDQ1MzNiY2EwNjU5YThhYjZhNzYuLmRjY2UyNzg2ZTY3MTQ5YWRmOWI4
YmRmZDk0NjJmMmY0MjJlZmJiM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9Nb2RlbC9pb3MvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJJT1MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvaW9zL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxh
eWVySU9TLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgcHJpdmF0ZToKICAgICAvLyBXZWJDb3JlOjpNb2Rl
bFBsYXllciBvdmVycmlkZXMuCiAgICAgYm9vbCBzdXBwb3J0c0RyYWdnaW5nKCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEludGVy
YWN0aW9uRW5hYmxlZChib29sKSBvdmVycmlkZTsKICAgICB2b2lkIGhhbmRsZU1vdXNlRG93bihj
b25zdCBXZWJDb3JlOjpMYXlvdXRQb2ludCYsIE1vbm90b25pY1RpbWUpIG92ZXJyaWRlOwogICAg
IHZvaWQgaGFuZGxlTW91c2VNb3ZlKGNvbnN0IFdlYkNvcmU6OkxheW91dFBvaW50JiwgTW9ub3Rv
bmljVGltZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBoYW5kbGVNb3VzZVVwKGNvbnN0IFdlYkNvcmU6
OkxheW91dFBvaW50JiwgTW9ub3RvbmljVGltZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvaW9zL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxh
eWVySU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL2lvcy9BUktpdElubGlu
ZVByZXZpZXdNb2RlbFBsYXllcklPUy5tbQppbmRleCAxMzg2YTRlZTRmNzIxMmYzNTY1Y2Y1Zjli
MTEzNDdlODMzMTA4YTVmLi5hNDQzMGI0NGI1ODFhZTVjNjVkMDRkZDIzMWY1MjM4ZDNhMTc4NDBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvaW9zL0FSS2l0SW5s
aW5lUHJldmlld01vZGVsUGxheWVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9Nb2RlbC9pb3MvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJJT1MubW0KQEAgLTc2LDYg
Kzc2LDE2IEBAIHZvaWQgQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJJT1M6OmVudGVyRnVs
bHNjcmVlbigpCiAgICAgICAgIHN0cm9uZ1BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6VGFrZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4oKm1vZGVsSWRlbnRpZmllcikpOwogfQogCit2
b2lkIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVySU9TOjpzZXRJbnRlcmFjdGlvbkVuYWJs
ZWQoYm9vbCBpc0ludGVyYWN0aW9uRW5hYmxlZCkKK3sKKyAgICBSZWZQdHIgc3Ryb25nUGFnZSA9
IHBhZ2UoKTsKKyAgICBpZiAoIXN0cm9uZ1BhZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChhdXRvIG1vZGVsSWRlbnRpZmllciA9IHRoaXMtPm1vZGVsSWRlbnRpZmllcigpKQorICAgICAg
ICBzdHJvbmdQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Ok1vZGVsRWxlbWVudFNl
dEludGVyYWN0aW9uRW5hYmxlZCgqbW9kZWxJZGVudGlmaWVyLCBpc0ludGVyYWN0aW9uRW5hYmxl
ZCkpOworfQorCiB2b2lkIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVySU9TOjpoYW5kbGVN
b3VzZURvd24oY29uc3QgV2ViQ29yZTo6TGF5b3V0UG9pbnQmLCBNb25vdG9uaWNUaW1lKQogewog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDZhMTIzNzVlMTc5N2Q4ZmVkZmE5YjZl
ZGRlZGNjNjBkNWRlZmZmYTIuLjY2MzQ0MTZjMDA2ZTg1MzUxY2UyZmI5ODdlNDk4OWVhZDZkYTAx
MGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAyMi0wMS0yNyAgQW50b2luZSBRdWludCAgPGdy
YW91dHNAd2Via2l0Lm9yZz4KKworICAgICAgICBbTW9kZWxdIEFsbG93IGRpc2FibGluZyBpbnRl
cmFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI3NjIxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MDA3OTcwMz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBBZGQgdHdvIG5ldyB0ZXN0czoKKyAgICAg
ICAgCisgICAgICAgIC0gbW9kZWwtZWxlbWVudC9tb2RlbC1lbGVtZW50LWludGVyYWN0aXZlLmh0
bWwgdGVzdHMgdGhlICJpbnRlcmFjdGl2ZSIgSURMIHByb3BlcnR5CisgICAgICAgIGFuZCB0aGUg
ImludGVyYWN0aXZlIiBIVE1MIGF0dHJpYnV0ZSwKKyAgICAgICAgLSBtb2RlbC1lbGVtZW50L21v
ZGVsLWVsZW1lbnQtaW50ZXJhY3RpdmUtZHJhZ2dpbmcuaHRtbCB0ZXN0cyB0aGF0IHRoZSAiaW50
ZXJhY3RpdmUiCisgICAgICAgIElETCBwcm9wZXJ0eSBjb3JyZWN0bHkgZGlzYWJsZXMgc2V0dGlu
ZyB0aGUgY2FtZXJhIGJ5IGRyYWdnaW5nIHdoZW4gImZhbHNlIiwgYW5kIGFsbG93cworICAgICAg
ICBpdCB3aGVuICJ0cnVlIi4KKworICAgICAgICBXZSBhbHNvIHJlZmFjdG9yIHNvbWUgY29kZSBw
cmV2aW91c2x5IGZvdW5kIGluIG1vZGVsLWVsZW1lbnQvbW9kZWwtZWxlbWVudC1jYW1lcmEuaHRt
bAorICAgICAgICB0byBub3cgYmUgaW4gdGhlIHNoYXJlZCBtb2RlbC1lbGVtZW50L3Jlc291cmNl
cy9tb2RlbC11dGlscy5qcyB0byBlYXNlIHdyaXRpbmcgPG1vZGVsPgorICAgICAgICB0ZXN0cy4K
KworICAgICAgICAqIG1vZGVsLWVsZW1lbnQvbW9kZWwtZWxlbWVudC1jYW1lcmEuaHRtbDoKKyAg
ICAgICAgKiBtb2RlbC1lbGVtZW50L21vZGVsLWVsZW1lbnQtaW50ZXJhY3RpdmUtZHJhZ2dpbmct
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtb2RlbC1lbGVtZW50L21vZGVsLWVsZW1l
bnQtaW50ZXJhY3RpdmUtZHJhZ2dpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICogbW9kZWwtZWxl
bWVudC9tb2RlbC1lbGVtZW50LWludGVyYWN0aXZlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogbW9kZWwtZWxlbWVudC9tb2RlbC1lbGVtZW50LWludGVyYWN0aXZlLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIG1vZGVsLWVsZW1lbnQvcmVzb3VyY2VzL21vZGVsLXV0aWxzLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGNvbnN0Lm1ha2VNb2RlbCk6CisgICAgICAgIChjb25zdC5ib2R5QXZhaWxh
YmlsaXR5LmFzeW5jIHJldHVybik6CisgICAgICAgIChjb25zdC5ib2R5QXZhaWxhYmlsaXR5KToK
KyAgICAgICAgKGNvbnN0LnJlYWR5TW9kZWwuYXN5bmMgdGVzdCk6CisgICAgICAgIChjb25zdC5h
c3NlcnRfY2FtZXJhc19hcmVfZXF1YWwpOgorICAgICAgICAoY29uc3QuYXNzZXJ0X2NhbWVyYXNf
YXJlX25vdF9lcXVhbCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjItMDEtMjcg
IENhbWVyb24gTWNDb3JtYWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KIAogICAgICAgICBBdm9pZCBz
ZXR0aW5nIGFuZCBjbGVhcmluZyA6YWN0aXZlIHN0YXRlIHdoZW4gZGlzcGF0Y2hpbmcgc3ludGhl
dGljIGNsaWNrIGV2ZW50cyB3aGVuIHBvc3NpYmxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9t
b2RlbC1lbGVtZW50L21vZGVsLWVsZW1lbnQtY2FtZXJhLmh0bWwgYi9MYXlvdXRUZXN0cy9tb2Rl
bC1lbGVtZW50L21vZGVsLWVsZW1lbnQtY2FtZXJhLmh0bWwKaW5kZXggM2RjYmM0Y2E0ZjRhYjA5
NGRlNTllMjA2Zjg2MmNlZTE5NjgwYjdjNC4uNmQwOTcyZmZhNjU1YmNhYTE4NjBjNGMxYWZlNzdl
NmMzODEzZjg4YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbW9kZWwtZWxlbWVudC9tb2RlbC1l
bGVtZW50LWNhbWVyYS5odG1sCisrKyBiL0xheW91dFRlc3RzL21vZGVsLWVsZW1lbnQvbW9kZWwt
ZWxlbWVudC1jYW1lcmEuaHRtbApAQCAtMSwzMyArMSw4IEBACiA8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9tb2RlbC11dGlscy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogCi1jb25zdCBtYWtlTW9kZWwg
PSAoKSA9PiB7Ci0gICAgY29uc3Qgc291cmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic291
cmNlIik7Ci0gICAgc291cmNlLnNyYyA9ICJyZXNvdXJjZXMvY3ViZS51c2R6IjsKLSAgICBjb25z
dCBtb2RlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm1vZGVsIik7Ci0gICAgbW9kZWwuYXBw
ZW5kQ2hpbGQoc291cmNlKTsKLSAgICByZXR1cm4gbW9kZWw7Ci19Ci0KLWNvbnN0IGJvZHlBdmFp
bGFiaWxpdHkgPSBhc3luYyAoKSA9PiB7Ci0gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUg
PT4gewotICAgICAgICBpZiAoZG9jdW1lbnQuYm9keSkKLSAgICAgICAgICAgIHJlc29sdmUoKTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNv
bnRlbnRMb2FkZWQiLCBldmVudCA9PiByZXNvbHZlKCkpOwotICAgIH0pOwotfTsKLQotY29uc3Qg
cmVhZHlNb2RlbCA9IGFzeW5jICh0ZXN0KSA9PiB7Ci0gICAgYXdhaXQgYm9keUF2YWlsYWJpbGl0
eSgpOwotICAgIGNvbnN0IG1vZGVsID0gZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChtYWtlTW9k
ZWwoKSk7Ci0gICAgdGVzdC5hZGRfY2xlYW51cCgoKSA9PiBtb2RlbC5yZW1vdmUoKSk7Ci0gICAg
YXdhaXQgbW9kZWwucmVhZHk7Ci0gICAgcmV0dXJuIG1vZGVsOwotfTsKLQotY29uc3QgZXBzaWxv
biA9IDAuMDAxOwogY29uc3QgZXhwZWN0ZWRDYW1lcmEgPSB7IHBpdGNoOiAxMCwgeWF3OiA0MCwg
c2NhbGU6IDIgfTsKIAogdGVzdCgoKSA9PiB7CkBAIC01Nyw5ICszMiw3IEBAIHByb21pc2VfdGVz
dChhc3luYyB0ZXN0ID0+IHsKICAgICBjb25zdCBtb2RlbCA9IGF3YWl0IHJlYWR5TW9kZWwodGVz
dCk7CiAgICAgYXdhaXQgbW9kZWwuc2V0Q2FtZXJhKGV4cGVjdGVkQ2FtZXJhKTsKICAgICBjb25z
dCBhY3R1YWxDYW1lcmEgPSBhd2FpdCBtb2RlbC5nZXRDYW1lcmEoKTsKLSAgICBhc3NlcnRfYXBw
cm94X2VxdWFscyhhY3R1YWxDYW1lcmEucGl0Y2gsIGV4cGVjdGVkQ2FtZXJhLnBpdGNoLCBlcHNp
bG9uLCAiQ2FtZXJhIGhhcyBleHBlY3RlZCBwaXRjaCIpOwotICAgIGFzc2VydF9hcHByb3hfZXF1
YWxzKGFjdHVhbENhbWVyYS55YXcsIGV4cGVjdGVkQ2FtZXJhLnlhdywgZXBzaWxvbiwgIkNhbWVy
YSBoYXMgZXhwZWN0ZWQgeWF3Iik7Ci0gICAgYXNzZXJ0X2FwcHJveF9lcXVhbHMoYWN0dWFsQ2Ft
ZXJhLnNjYWxlLCBleHBlY3RlZENhbWVyYS5zY2FsZSwgZXBzaWxvbiwgIkNhbWVyYSBoYXMgZXhw
ZWN0ZWQgc2NhbGUiKTsKKyAgICBhc3NlcnRfY2FtZXJhc19hcmVfZXF1YWwoYWN0dWFsQ2FtZXJh
LCBleHBlY3RlZENhbWVyYSk7CiB9LCAiPG1vZGVsPiBjYW4gc2V0IHRoZSBjYW1lcmEgYW5kIHJl
YWQgaXQgYmFjayIpOwogCiBwcm9taXNlX3Rlc3QoYXN5bmMgdGVzdCA9PiB7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9tb2RlbC1lbGVtZW50L21vZGVsLWVsZW1lbnQtaW50ZXJhY3RpdmUtZHJh
Z2dpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbW9kZWwtZWxlbWVudC9tb2RlbC1lbGVt
ZW50LWludGVyYWN0aXZlLWRyYWdnaW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYjAyNzkx
NWU4ZGE5ZDVjMGUyZWQzN2NkOGUyOGRjMDM1NjkyMGUzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvbW9kZWwtZWxlbWVudC9tb2RlbC1lbGVtZW50LWludGVyYWN0aXZlLWRyYWdnaW5n
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBEcmFnZ2luZyBvdmVyIGEgPG1v
ZGVsPiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBjYW1lcmEgd2hlbiBpbnRlcmFjdGl2ZSBpcyBmYWxz
ZQorUEFTUyBEcmFnZ2luZyBvdmVyIGEgPG1vZGVsPiBhZmZlY3RzIHRoZSBjYW1lcmEgd2hlbiBp
bnRlcmFjdGl2ZSBpcyB0cnVlCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21vZGVsLWVsZW1l
bnQvbW9kZWwtZWxlbWVudC1pbnRlcmFjdGl2ZS1kcmFnZ2luZy5odG1sIGIvTGF5b3V0VGVzdHMv
bW9kZWwtZWxlbWVudC9tb2RlbC1lbGVtZW50LWludGVyYWN0aXZlLWRyYWdnaW5nLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDI2MzQ4MGUwNGI1NTk2N2ZhMGYzMTI2NzliNGEyOTU3Y2IzMzkwOQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL21vZGVsLWVsZW1lbnQvbW9kZWwtZWxlbWVudC1pbnRl
cmFjdGl2ZS1kcmFnZ2luZy5odG1sCkBAIC0wLDAgKzEsNjEgQEAKKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL21vZGVsLXV0aWxzLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKworbW9kZWwgeworICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgbGVmdDogMDsKKyAgICB3aWR0aDog
NDAwcHg7CisgICAgaGVpZ2h0OiA0MDBweDsKK30KKworPC9zdHlsZT4KKzxzY3JpcHQ+CisKK2Nv
bnN0IGRyYWdNb2RlbCA9IGFzeW5jIChtb2RlbCkgPT4geworICAgIGNvbnN0IGJvdW5kcyA9IG1v
ZGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgIGNvbnN0IHN0YXJ0UG9pbnQgPSBuZXcg
RE9NUG9pbnQoCisgICAgICAgIGJvdW5kcy54ICsgYm91bmRzLndpZHRoIC8gMiwKKyAgICAgICAg
Ym91bmRzLnkgKyBib3VuZHMuaGVpZ2h0IC8gMgorICAgICk7CisgICAgY29uc3QgZW5kUG9pbnQg
PSBuZXcgRE9NUG9pbnQoCisgICAgICAgIHN0YXJ0UG9pbnQueCArIGJvdW5kcy53aWR0aCAvIDQs
CisgICAgICAgIHN0YXJ0UG9pbnQueSArIGJvdW5kcy5oZWlnaHQgLyA0CisgICAgKTsKKyAgICBy
ZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICBpZiAoISgi
ZXZlbnRTZW5kZXIiIGluIHdpbmRvdykpIHsKKyAgICAgICAgICAgIHJlamVjdCgpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb2ludC54LCBzdGFydFBvaW50LnkpOworICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZURvd24oKTsKKyAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oZW5kUG9pbnQueCwgZW5k
UG9pbnQueSk7CisgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgcmVzb2x2
ZSgpOworICAgIH0pOworfTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIHRlc3QgPT4geworICAgIGNv
bnN0IG1vZGVsID0gYXdhaXQgcmVhZHlNb2RlbCh0ZXN0KTsKKyAgICBtb2RlbC5pbnRlcmFjdGl2
ZSA9IGZhbHNlOworICAgIGNvbnN0IGNhbWVyYUJlZm9yZURyYWcgPSBhd2FpdCBtb2RlbC5nZXRD
YW1lcmEoKTsKKyAgICBhd2FpdCBkcmFnTW9kZWwobW9kZWwpOworICAgIGNvbnN0IGNhbWVyYUFm
dGVyRHJhZyA9IGF3YWl0IG1vZGVsLmdldENhbWVyYSgpOworICAgIGFzc2VydF9jYW1lcmFzX2Fy
ZV9lcXVhbChjYW1lcmFBZnRlckRyYWcsIGNhbWVyYUJlZm9yZURyYWcsICJjYW1lcmFzIGJlZm9y
ZSBhbmQgYWZ0ZXIgZHJhZyBtYXRjaCIpOworfSwgIkRyYWdnaW5nIG92ZXIgYSA8bW9kZWw+IGhh
cyBubyBlZmZlY3Qgb24gdGhlIGNhbWVyYSB3aGVuIGludGVyYWN0aXZlIGlzIGZhbHNlIik7CisK
K3Byb21pc2VfdGVzdChhc3luYyB0ZXN0ID0+IHsKKyAgICBjb25zdCBtb2RlbCA9IGF3YWl0IHJl
YWR5TW9kZWwodGVzdCk7CisgICAgbW9kZWwuaW50ZXJhY3RpdmUgPSB0cnVlOworICAgIGNvbnN0
IGNhbWVyYUJlZm9yZURyYWcgPSBhd2FpdCBtb2RlbC5nZXRDYW1lcmEoKTsKKyAgICBhd2FpdCBk
cmFnTW9kZWwobW9kZWwpOworICAgIGNvbnN0IGNhbWVyYUFmdGVyRHJhZyA9IGF3YWl0IG1vZGVs
LmdldENhbWVyYSgpOworICAgIGFzc2VydF9jYW1lcmFzX2FyZV9ub3RfZXF1YWwoY2FtZXJhQWZ0
ZXJEcmFnLCBjYW1lcmFCZWZvcmVEcmFnLCAiY2FtZXJhcyBiZWZvcmUgYW5kIGFmdGVyIGRyYWcg
YXJlIGRpZmZlcmVudCIpOworfSwgIkRyYWdnaW5nIG92ZXIgYSA8bW9kZWw+IGFmZmVjdHMgdGhl
IGNhbWVyYSB3aGVuIGludGVyYWN0aXZlIGlzIHRydWUiKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tb2RlbC1lbGVtZW50L21vZGVsLWVs
ZW1lbnQtaW50ZXJhY3RpdmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbW9kZWwtZWxlbWVu
dC9tb2RlbC1lbGVtZW50LWludGVyYWN0aXZlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODFj
ZmVmZGI5MzBlOTMzMDAxYmVjY2ExNzc2NzQzMGU5OGQ1M2U4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvbW9kZWwtZWxlbWVudC9tb2RlbC1lbGVtZW50LWludGVyYWN0aXZlLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDYgQEAKKworUEFTUyA8bW9kZWw+IGhhcyBpbnRlcmFjdGl2ZSBw
cm9wZXJ0eQorUEFTUyA8bW9kZWw+IGludGVyYWN0aXZlIHByb3BlcnR5IGRlZmF1bHQgdG8gZmFs
c2UKK1BBU1MgPG1vZGVsPiBpbnRlcmFjdGl2ZSBwcm9wZXJ0eSByZWZsZWN0cyB0aGUgaW50ZXJh
Y3RpdmUgSFRNTCBhdHRyaWJ1dGUKK1BBU1MgPG1vZGVsPiBpbnRlcmFjdGl2ZSBIVE1MIGF0dHJp
YnV0ZSByZWZsZWN0cyB0aGUgaW50ZXJhY3RpdmUgcHJvcGVydHkKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvbW9kZWwtZWxlbWVudC9tb2RlbC1lbGVtZW50LWludGVyYWN0aXZlLmh0bWwgYi9M
YXlvdXRUZXN0cy9tb2RlbC1lbGVtZW50L21vZGVsLWVsZW1lbnQtaW50ZXJhY3RpdmUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42YTRhYmQyMjUyZmNmYmE3YTZkMzM5OWUzMWVhODFjMTg2OWE4MDU0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbW9kZWwtZWxlbWVudC9tb2RlbC1lbGVtZW50LWlu
dGVyYWN0aXZlLmh0bWwKQEAgLTAsMCArMSw0MCBAQAorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK3Rlc3QoKCkgPT4gewor
ICAgIGNvbnN0IG1vZGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibW9kZWwiKTsKKyAgICBh
c3NlcnRfaWRsX2F0dHJpYnV0ZShtb2RlbCwgImludGVyYWN0aXZlIiwgImludGVyYWN0aXZlIGlz
IGRlZmluZWQiKTsKK30sICI8bW9kZWw+IGhhcyBpbnRlcmFjdGl2ZSBwcm9wZXJ0eSIpOworCit0
ZXN0KCgpID0+IHsKKyAgICBjb25zdCBtb2RlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm1v
ZGVsIik7CisgICAgYXNzZXJ0X2ZhbHNlKG1vZGVsLmludGVyYWN0aXZlLCAiaW50ZXJhY3RpdmUg
aXMgZmFsc2UiKTsKK30sICI8bW9kZWw+IGludGVyYWN0aXZlIHByb3BlcnR5IGRlZmF1bHQgdG8g
ZmFsc2UiKTsKKwordGVzdCgoKSA9PiB7CisgICAgY29uc3QgbW9kZWwgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJtb2RlbCIpOworCisgICAgbW9kZWwuc2V0QXR0cmlidXRlKCJpbnRlcmFjdGl2
ZSIsICIiKTsKKyAgICBhc3NlcnRfdHJ1ZShtb2RlbC5pbnRlcmFjdGl2ZSwgImludGVyYWN0aXZl
IGlzIHRydWUgd2hlbiB0aGUgSFRNTCBhdHRyaWJ1dGUgaGFzIG5vIHZhbHVlIik7CisKKyAgICBt
b2RlbC5zZXRBdHRyaWJ1dGUoImludGVyYWN0aXZlIiwgImZhbHNlIik7CisgICAgYXNzZXJ0X3Ry
dWUobW9kZWwuaW50ZXJhY3RpdmUsICJpbnRlcmFjdGl2ZSBpcyB0cnVlIHdoZW4gdGhlIEhUTUwg
YXR0cmlidXRlIGhhcyBhICdmYWxzZScgdmFsdWUiKTsKKworICAgIG1vZGVsLnJlbW92ZUF0dHJp
YnV0ZSgiaW50ZXJhY3RpdmUiKTsKKyAgICBhc3NlcnRfZmFsc2UobW9kZWwuaW50ZXJhY3RpdmUs
ICJpbnRlcmFjdGl2ZSBpcyBmYWxzZSIpOworfSwgIjxtb2RlbD4gaW50ZXJhY3RpdmUgcHJvcGVy
dHkgcmVmbGVjdHMgdGhlIGludGVyYWN0aXZlIEhUTUwgYXR0cmlidXRlIik7CisKK3Rlc3QoKCkg
PT4geworICAgIGNvbnN0IG1vZGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibW9kZWwiKTsK
KworICAgIG1vZGVsLmludGVyYWN0aXZlID0gdHJ1ZTsKKyAgICBhc3NlcnRfdHJ1ZShtb2RlbC5o
YXNBdHRyaWJ1dGUoImludGVyYWN0aXZlIiksICJpbnRlcmFjdGl2ZSBIVE1MIGF0dHJpYnV0ZSBp
cyBwcmVzZW50IHdoZW4gaW50ZXJhY3RpdmUgaXMgdHJ1ZSIpOworCisgICAgbW9kZWwuaW50ZXJh
Y3RpdmUgPSBmYWxzZTsKKyAgICBhc3NlcnRfZmFsc2UobW9kZWwuaGFzQXR0cmlidXRlKCJpbnRl
cmFjdGl2ZSIpLCAiaW50ZXJhY3RpdmUgSFRNTCBhdHRyaWJ1dGUgaXMgbm90IHByZXNlbnQgd2hl
biBpbnRlcmFjdGl2ZSBpcyBmYWxzZSIpOworfSwgIjxtb2RlbD4gaW50ZXJhY3RpdmUgSFRNTCBh
dHRyaWJ1dGUgcmVmbGVjdHMgdGhlIGludGVyYWN0aXZlIHByb3BlcnR5Iik7CisKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbW9kZWwtZWxlbWVu
dC9yZXNvdXJjZXMvbW9kZWwtdXRpbHMuanMgYi9MYXlvdXRUZXN0cy9tb2RlbC1lbGVtZW50L3Jl
c291cmNlcy9tb2RlbC11dGlscy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOThmNzM3MTdmOWU2MzI1ZTQzNDZi
ZTRlMDg2MjY2YjZmMGFjYzQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbW9kZWwt
ZWxlbWVudC9yZXNvdXJjZXMvbW9kZWwtdXRpbHMuanMKQEAgLTAsMCArMSw0MCBAQAorCitjb25z
dCBtYWtlTW9kZWwgPSAoKSA9PiB7CisgICAgY29uc3Qgc291cmNlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgic291cmNlIik7CisgICAgc291cmNlLnNyYyA9ICJyZXNvdXJjZXMvY3ViZS51c2R6
IjsKKyAgICBjb25zdCBtb2RlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm1vZGVsIik7Cisg
ICAgbW9kZWwuYXBwZW5kQ2hpbGQoc291cmNlKTsKKyAgICByZXR1cm4gbW9kZWw7Cit9CisKK2Nv
bnN0IGJvZHlBdmFpbGFiaWxpdHkgPSBhc3luYyAoKSA9PiB7CisgICAgcmV0dXJuIG5ldyBQcm9t
aXNlKHJlc29sdmUgPT4geworICAgICAgICBpZiAoZG9jdW1lbnQuYm9keSkKKyAgICAgICAgICAg
IHJlc29sdmUoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlz
dGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBldmVudCA9PiByZXNvbHZlKCkpOworICAgIH0pOwor
fTsKKworY29uc3QgcmVhZHlNb2RlbCA9IGFzeW5jICh0ZXN0KSA9PiB7CisgICAgYXdhaXQgYm9k
eUF2YWlsYWJpbGl0eSgpOworICAgIGNvbnN0IG1vZGVsID0gZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZChtYWtlTW9kZWwoKSk7CisgICAgdGVzdC5hZGRfY2xlYW51cCgoKSA9PiBtb2RlbC5yZW1v
dmUoKSk7CisgICAgYXdhaXQgbW9kZWwucmVhZHk7CisgICAgcmV0dXJuIG1vZGVsOworfTsKKwor
Y29uc3QgZXBzaWxvbiA9IDAuMDAxOworCitjb25zdCBhc3NlcnRfY2FtZXJhc19hcmVfZXF1YWwg
PSAoYWN0dWFsQ2FtZXJhLCBleHBlY3RlZENhbWVyYSwgZGVzY3JpcHRpb24pID0+IHsKKyAgICBh
c3NlcnRfYXBwcm94X2VxdWFscyhhY3R1YWxDYW1lcmEucGl0Y2gsIGV4cGVjdGVkQ2FtZXJhLnBp
dGNoLCBlcHNpbG9uLCBgJHtkZXNjcmlwdGlvbn06IGNhbWVyYSBoYXMgZXhwZWN0ZWQgcGl0Y2hg
KTsKKyAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhY3R1YWxDYW1lcmEueWF3LCBleHBlY3RlZENh
bWVyYS55YXcsIGVwc2lsb24sIGAke2Rlc2NyaXB0aW9ufTogY2FtZXJhIGhhcyBleHBlY3RlZCB5
YXdgKTsKKyAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhhY3R1YWxDYW1lcmEuc2NhbGUsIGV4cGVj
dGVkQ2FtZXJhLnNjYWxlLCBlcHNpbG9uLCBgJHtkZXNjcmlwdGlvbn06IGNhbWVyYSBoYXMgZXhw
ZWN0ZWQgc2NhbGVgKTsKK307CisKK2NvbnN0IGFzc2VydF9jYW1lcmFzX2FyZV9ub3RfZXF1YWwg
PSAoYWN0dWFsQ2FtZXJhLCBleHBlY3RlZENhbWVyYSwgZGVzY3JpcHRpb24pID0+IHsKKyAgICBj
b25zdCBjYW1lcmFzTWF0Y2ggPSBNYXRoLmFicyhhY3R1YWxDYW1lcmEucGl0Y2ggLSBleHBlY3Rl
ZENhbWVyYS5waXRjaCkgPiBlcHNpbG9uICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgTWF0
aC5hYnMoYWN0dWFsQ2FtZXJhLnlhdyAtIGV4cGVjdGVkQ2FtZXJhLnlhdykgPiBlcHNpbG9uICYm
CisgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5hYnMoYWN0dWFsQ2FtZXJhLnNjYWxlIC0g
ZXhwZWN0ZWRDYW1lcmEuc2NhbGUpID4gZXBzaWxvbjsKKyAgICBhc3NlcnRfZmFsc2UoY2FtZXJh
c01hdGNoLCBkZXNjcmlwdGlvbik7Cit9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4
cGVjdGF0aW9ucwppbmRleCBjMTAxZmI3N2QzZjQ0NmJjOTNmMTM0MzE1YmJhMzcxYzI5OTRmOTZj
Li5lNzVhOWIxMjIyY2YzZDUxNTI5ZDk2ODY0NTdkZDE1NWFhY2ZjZmM0IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzQxOSw2ICszNDE5LDcgQEAgZmFz
dC9jYW52YXMvY2FudmFzLWJsZW5kaW5nLXRleHQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKICMg
VGhpcyB0ZXN0IHJlcXVpcmVzIEFSUUwgU1BJcyBub3QgeWV0IGF2YWlsYWJsZSB0byBPcGVuU291
cmNlIGJ1aWxkcy4KIG1vZGVsLWVsZW1lbnQvbW9kZWwtZWxlbWVudC1jYW1lcmEuaHRtbCBbIFNr
aXAgXQorbW9kZWwtZWxlbWVudC9tb2RlbC1lbGVtZW50LWludGVyYWN0aXZlLWRyYWdnaW5nLmh0
bWwgWyBTa2lwIF0KIAogIyBUaGVzZSB0ZXN0cyByZXF1aXJlIHRoZSBkZXNpZ24gc3lzdGVtIHVp
IGZvbnRzIHRvIGJlIGluc3RhbGxlZC4KIGZhc3QvdGV4dC9kZXNpZ24tc3lzdGVtLXVpLTExLmh0
bWwgWyBQYXNzIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhw
ZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggODk3ZTdhMjhhMjM3OTYwZjY1NDFmMTMzOTg4MTE5OTEzMDZiNWFmMy4uMGM4ZjIxZGIzZDgz
ZjBjNjRkOWNjOWUwNGViMWUyMGZkZDc5NzY5ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTEwOSw2ICsxMDksNyBAQCBtb2RlbC1lbGVtZW50L21vZGVs
LWVsZW1lbnQtY29udGVudHMtbGF5ZXItdXBkYXRlcy5odG1sIFsgU2tpcCBdCiAKICMgVGhpcyB0
ZXN0IHJlcXVpcmVzIEFSUUwgU1BJcyBub3QgeWV0IGF2YWlsYWJsZSB0byBPcGVuU291cmNlIGJ1
aWxkcy4KIG1vZGVsLWVsZW1lbnQvbW9kZWwtZWxlbWVudC1jYW1lcmEuaHRtbCBbIFNraXAgXQor
bW9kZWwtZWxlbWVudC9tb2RlbC1lbGVtZW50LWludGVyYWN0aXZlLWRyYWdnaW5nLmh0bWwgWyBT
a2lwIF0KIAogIyBBY2Nlc3NpYmlsaXR5IHRlc3RzIGZvciBub3RpZmljYXRpb25zIHRoYXQgZG9u
J3QgZXhpc3Qgb3IgYXJlbid0IG5lZWRlZCBvbiBNYWMgT1MgWC4KIGFjY2Vzc2liaWxpdHkvYXJp
YS1jaGVja2JveC1zZW5kcy1ub3RpZmljYXRpb24uaHRtbAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>