<?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>233901</bug_id>
          
          <creation_ts>2021-12-06 16:15:07 -0800</creation_ts>
          <short_desc>[VTT] Fix various issues with complicated rendering of VTT cues</short_desc>
          <delta_ts>2021-12-09 10:38:28 -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>Media</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=234090</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jean-yves.avenard</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1820803</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-12-06 16:15:07 -0800</bug_when>
    <thetext>[VTT] Fix various issues with complicated rendering of VTT cues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820821</commentid>
    <comment_count>1</comment_count>
      <attachid>446099</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-12-06 16:53:15 -0800</bug_when>
    <thetext>Created attachment 446099
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820826</commentid>
    <comment_count>2</comment_count>
      <attachid>446101</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-12-06 17:02:16 -0800</bug_when>
    <thetext>Created attachment 446101
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820922</commentid>
    <comment_count>3</comment_count>
      <attachid>446101</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-07 00:23:07 -0800</bug_when>
    <thetext>Comment on attachment 446101
Patch

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

&gt; Source/WebCore/html/track/VTTCue.h:248
&gt; +    std::pair&lt;float, float&gt; m_displayPosition { undefinedPosition, undefinedPosition };

I think this should be std::optional&lt;std::pair&lt;...&gt;&gt; ; having particular values doing a particular behaviour is often a later source of error.

&gt; Source/WebCore/rendering/RenderVTTCue.cpp:173
&gt; +    return overlappingObjectForRect(backdropBox().absoluteBoundingBoxRect());

const RenderVTTCue*

&gt; Source/WebCore/rendering/RenderVTTCue.cpp:359
&gt;      if (downcast&lt;TextTrackCueGeneric&gt;(*m_cue).useDefaultPosition() &amp;&amp; firstLineBox) {

could be testing for firstLineBox first

&gt; Source/WebCore/rendering/RenderVTTCue.cpp:392
&gt; +RenderBlockFlow&amp; RenderVTTCue::backdropBox() const

const RenderBlockFlow&amp;

&gt; Source/WebCore/rendering/RenderVTTCue.h:53
&gt; +    RenderVTTCue* overlappingObjectForRect(const IntRect&amp;) const;

both should return `const RenderVTTCue*`

&gt; Source/WebCore/rendering/RenderVTTCue.h:68
&gt; +    RenderInline&amp; cueBox() const;

this should return a const reference; particularly as the method is const.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821044</commentid>
    <comment_count>4</comment_count>
      <attachid>446176</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-12-07 08:29:39 -0800</bug_when>
    <thetext>Created attachment 446176
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821068</commentid>
    <comment_count>5</comment_count>
      <attachid>446176</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-12-07 09:24:34 -0800</bug_when>
    <thetext>Comment on attachment 446176
Patch

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

r=me

&gt; Source/WebCore/rendering/RenderVTTCue.cpp:157
&gt; +    return !rectIsWithinContainer(backdropBox().absoluteBoundingBoxRect());

It would be nice to have a convenience method on RenderVTTCue to replace all of the  `backdropBox().absoluteBoundingBoxRect()`.

&gt; LayoutTests/media/track/track-webvtt-no-snap-to-lines-overlap.html:36
&gt; +	&lt;title&gt;track-webvtt-no-snap-to-lines-overlap&lt;/title&gt;
&gt; +	&lt;style&gt;
&gt; +		html { overflow:hidden }
&gt; +		body { margin:0 }
&gt; +		::cue {
&gt; +		    font-family: Ahem, sans-serif;
&gt; +		    font-size: 12px;
&gt; +		    background-color: black;
&gt; +		    color: green;
&gt; +		}
&gt; +	&lt;/style&gt;
&gt; +	&lt;script&gt;var requirePixelDump = true;&lt;/script&gt;
&gt; +	&lt;script src=&quot;../video-test.js&quot;&gt;&lt;/script&gt;
&gt; +	&lt;script src=&quot;../media-file.js&quot;&gt;&lt;/script&gt;
&gt; +	&lt;script&gt;
&gt; +	window.addEventListener(&apos;load&apos;, async event =&gt; {
&gt; +		findMediaElement();
&gt; +
&gt; +		run(`video.querySelector(&quot;track&quot;).src = &quot;captions-webvtt/no-snap-to-lines-overlap.vtt&quot;`);
&gt; +		run(`video.textTracks[0].mode = &quot;showing&quot;`);
&gt; +		await waitFor(video.querySelector(&apos;track&apos;), &apos;load&apos;);
&gt; +
&gt; +		run(`video.src = findMediaFile(&quot;video&quot;, &quot;w3c/track/webvtt/media/white&quot;)`);
&gt; +		await waitFor(video, &apos;canplaythrough&apos;);
&gt; +
&gt; +		endTest();
&gt; +	});
&gt; +	&lt;/script&gt;
&gt; +&lt;/head&gt;
&gt; +&lt;body&gt;
&gt; +	&lt;video&gt;
&gt; +        &lt;track id=&quot;testTrack&quot; kind=&quot;captions&quot; default&gt;
&gt; +	&lt;/video&gt;

Mixed tabs and spaces!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821255</commentid>
    <comment_count>6</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-12-07 15:51:54 -0800</bug_when>
    <thetext>(In reply to Jean-Yves Avenard [:jya] from comment #3)
&gt; Comment on attachment 446101 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=446101&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/track/VTTCue.h:248
&gt; &gt; +    std::pair&lt;float, float&gt; m_displayPosition { undefinedPosition, undefinedPosition };
&gt; 
&gt; I think this should be std::optional&lt;std::pair&lt;...&gt;&gt; ; having particular
&gt; values doing a particular behaviour is often a later source of error.

Agreed!

&gt; &gt; Source/WebCore/rendering/RenderVTTCue.cpp:173
&gt; &gt; +    return overlappingObjectForRect(backdropBox().absoluteBoundingBoxRect());
&gt; 
&gt; const RenderVTTCue*

I don&apos;t think that&apos;s necessary. The object returned doesn&apos;t belong to this RenderVTTCue at all.

&gt; &gt; Source/WebCore/rendering/RenderVTTCue.cpp:359
&gt; &gt;      if (downcast&lt;TextTrackCueGeneric&gt;(*m_cue).useDefaultPosition() &amp;&amp; firstLineBox) {
&gt; 
&gt; could be testing for firstLineBox first

Ok.

&gt; &gt; Source/WebCore/rendering/RenderVTTCue.cpp:392
&gt; &gt; +RenderBlockFlow&amp; RenderVTTCue::backdropBox() const
&gt; 
&gt; const RenderBlockFlow&amp;

Since RenderElement::firstChild() is const and returns a non-const pointer, and this is just a wrapper around firstChild(), I don&apos;t actually think it&apos;s necessary here.

&gt; &gt; Source/WebCore/rendering/RenderVTTCue.h:53
&gt; &gt; +    RenderVTTCue* overlappingObjectForRect(const IntRect&amp;) const;
&gt; 
&gt; both should return `const RenderVTTCue*`

Disagree for overlappingObjectForRect(); it&apos;s not owned by this RenderVTTCue object.

&gt; &gt; Source/WebCore/rendering/RenderVTTCue.h:68
&gt; &gt; +    RenderInline&amp; cueBox() const;
&gt; 
&gt; this should return a const reference; particularly as the method is const.

Ditto for above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821256</commentid>
    <comment_count>7</comment_count>
      <attachid>446246</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-12-07 16:01:07 -0800</bug_when>
    <thetext>Created attachment 446246
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821285</commentid>
    <comment_count>8</comment_count>
      <attachid>446254</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-12-07 16:46:53 -0800</bug_when>
    <thetext>Created attachment 446254
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821424</commentid>
    <comment_count>9</comment_count>
      <attachid>446312</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-12-07 23:07:23 -0800</bug_when>
    <thetext>Created attachment 446312
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821442</commentid>
    <comment_count>10</comment_count>
      <attachid>446101</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-12-08 00:12:08 -0800</bug_when>
    <thetext>Comment on attachment 446101
Patch

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

&gt;&gt;&gt; Source/WebCore/rendering/RenderVTTCue.h:53
&gt;&gt;&gt; +    RenderVTTCue* overlappingObjectForRect(const IntRect&amp;) const;
&gt;&gt; 
&gt;&gt; both should return `const RenderVTTCue*`
&gt; 
&gt; Disagree for overlappingObjectForRect(); it&apos;s not owned by this RenderVTTCue object.

I don&apos;t think that this should prevent a pointer or reference from being made const.

It&apos;s not just about ownership IMHO, but also to indicate that this is a read-only object and that only read-only methods can be used with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821626</commentid>
    <comment_count>11</comment_count>
      <attachid>446385</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-12-08 10:46:33 -0800</bug_when>
    <thetext>Created attachment 446385
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821646</commentid>
    <comment_count>12</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-12-08 11:09:36 -0800</bug_when>
    <thetext>(In reply to Jean-Yves Avenard [:jya] from comment #10)
&gt; Comment on attachment 446101 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=446101&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/rendering/RenderVTTCue.h:53
&gt; &gt;&gt;&gt; +    RenderVTTCue* overlappingObjectForRect(const IntRect&amp;) const;
&gt; &gt;&gt; 
&gt; &gt;&gt; both should return `const RenderVTTCue*`
&gt; &gt; 
&gt; &gt; Disagree for overlappingObjectForRect(); it&apos;s not owned by this RenderVTTCue object.
&gt; 
&gt; I don&apos;t think that this should prevent a pointer or reference from being
&gt; made const.
&gt; 
&gt; It&apos;s not just about ownership IMHO, but also to indicate that this is a
&gt; read-only object and that only read-only methods can be used with it.

It (the return value) is not a read-only object though.

Const isn&apos;t _necessarily_ transitive. All const says is that the call will not mutate the state of the underlying object. Policy can be made that const means more than that, but that&apos;s policy, not const, and WebKit does not have that policy, AFAIK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821798</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-08 15:01:04 -0800</bug_when>
    <thetext>Committed r286743 (244990@main): &lt;https://commits.webkit.org/244990@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 446385.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821801</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-08 15:02:35 -0800</bug_when>
    <thetext>&lt;rdar://problem/86233716&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446099</attachid>
            <date>2021-12-06 16:53:15 -0800</date>
            <delta_ts>2021-12-06 17:15:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233901-20211206165314.patch</filename>
            <type>text/plain</type>
            <size>28442</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2Mjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODM3N2M1MGVlZjE1OGUz
YTM3YjQ5N2U1NzdhZmQzMmUxNGEwZWM5ZS4uNDE5ZTA2NmIyYWY5ZTNiNzYxYjU5NmJlMmY3ZjNk
MWJkZTBjNmI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIxLTEyLTA2ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtWVFRdIEZpeCB2YXJpb3Vz
IGlzc3VlcyB3aXRoIGNvbXBsaWNhdGVkIHJlbmRlcmluZyBvZiBWVFQgY3VlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzOTAxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL3RyYWNr
L3RyYWNrLXdlYnZ0dC1uby1zbmFwLXRvLWxpbmVzLW92ZXJsYXAuaHRtbAorICAgICAgICAgICAg
ICAgbWVkaWEvdHJhY2svdHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMtaW5saW5lLXN0eWxlLmh0
bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRvLWxpbmVz
LWxlZnQtcmlnaHQuaHRtbAorCisgICAgICAgIFdoZW4gcG9zaXRpb25pbmcgVlRUIGN1ZXMsIHRo
ZSBzcGVjIHJlcXVpcmVzIFVBcyB0byBhdm9pZCBjb2xsaXNpb25zIGJldHdlZW4gY3VlcworICAg
ICAgICBieSBkZXRlY3RpbmcgdGhhdCB0d28gY3VlcyBvdmVybGFwIGVhY2ggb3RoZXIuIEhvd2V2
ZXIsIFdlYktpdCdzIGltcGxlbWVudGF0aW9uCisgICAgICAgIGxvb2tzIGZvciBjb2xsaXNpb25z
IGJldHdlZW4gbm9uLWRpc3BsYXlpbmcgcG9ydGlvbnMgb2YgdGhlIGN1ZXM7IG5hbWVseSB0aGUg
CisgICAgICAgIDo6LXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWRpc3BsYXkgZWxlbWVudCwgd2hp
Y2ggaXMgdXNlZCB0byBwb3NpdGlvbiB0aGUgZGlzcGxheWluZworICAgICAgICBwb3J0aW9uIG9m
IHRoZSBjdWUuIEluc3RlYWQsIHRoZSBVQSBzaG91bGQgbG9vayBmb3IgY29sbGlzaW9ucyBiZXR3
ZWVuIHRoZSAKKyAgICAgICAgOjotd2Via2l0LW1lZGlhLXRleHQtdHJhY2stZGlzcGxheS1iYWNr
ZHJvcCBlbGVtZW50LCB3aGljaCBob2xkcyB0aGUgYmFja2dyb3VuZAorICAgICAgICBvZiB0aGUg
Y3VlLCBpZiBwcmVzZW50LgorCisgICAgICAgIEFkZCBhIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRv
IHJldHJpZXZlIHRoZSBiYWNrZHJvcCBlbGVtZW50LCBhbmQgYW5vdGhlciB0byByZXRyaWV2ZQor
ICAgICAgICB0aGUgY3VlIGl0c2VsZi4KKworICAgICAgICBBZGQgY2FzdCBtYWNyb3MgZm9yIFJl
bmRlclZUVEN1ZSB0byBhbGxvdyBkb3duY2FzdDw+aW5nLiBVc2UgdGhpcyBtYWNybyB0byByZXRy
aWV2ZQorICAgICAgICBvdGhlciBjdWVzJ3MgYmFja2Ryb3AgZWxlbWVudHMgZm9yIGNvbGxpc2lv
biBhdm9pZGFuY2UuCisKKyAgICAgICAgVlRUQ3VlQm94OjphcHBseUNTU1Byb3BlcnRpZXMoKSBo
YWQgYSBzZWN0aW9uIGZvciBtb3ZpbmcgY3VlcyBpbnRvIHBsYWNlIHRoYXQgaXMgZW50aXJlbHkK
KyAgICAgICAgdW5uZWVkZWQgaWYgVlRUQ3VlOjpnZXRDU1NQb3NpdGlvbigpIHJldHVybnMgdGhl
IHByZS1jYWxjdWxhdGVkIG1fZGlzcGxheVBvc2l0aW9uLgorCisgICAgICAgIFJlbmRlclZUVEN1
ZTo6aW5pdGlhbGl6ZUxheW91dFBhcmFtZXRlcnMoKSBpcyBhIGNhcmVmdWwgaW1wbGVtZW50YXRp
b24gb2YgdGhlIHNwZWNpZmljYXRpb24sCisgICAgICAgIGFjY3VyYXRlbHkgbGF5b3V0IG91dCBj
dWVzJyBpbml0aWFsIHBvc2l0aW9uIHNvIHRoYXQgdGhlIHRleHQgcnVuIGlzIGV4YWN0bHkgYXQg
dGhlCisgICAgICAgIGJvdHRvbSBvZiB0aGUgY29udGVudCBib3guIEhvd2V2ZXIsIGlmIHRoZSBj
dWUgaGFzIGEgYm9yZGVyLCBwYWRkaW5nLCBvciBleHRyYSBoZWlnaHQsCisgICAgICAgIHRoaXMg
d2lsbCByZXN1bHQgaW4gdGhlIGN1ZSBiZWluZyBwdXNoZWQgb3V0c2lkZSB0aGUgY29udGVudCBi
b3guIFRvIGFjY291bnQgZm9yIHRoaXMsCisgICAgICAgIGFkanVzdCB0aGUgaW5pdGFsIGxheW91
dCBwYXJhbWV0ZXIgYnkgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgY3VlIHRleHQgc2l6ZSBh
bmQgdGhlCisgICAgICAgIGJhY2tkcm9wIGVsZW1lbnQgc2l6ZS4KKworICAgICAgICBSZW5kZXJW
VFRDdWU6OmxheW91dCgpIHdpbGwgY3JlYXRlIGEgTGF5b3V0U3RhdGVNYWludGFpbmVyLCB3aGlj
aCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YKKyAgICAgICAgbGF5b3V0IG1hY2hpbmVyeSBkdXJp
bmcgdGhlIGxheW91dCBpdHNlbGYuIEhvd2V2ZXIsIGNlcnRhaW4gY2hpbGQgcmVuZGVyZXJzIGdl
dCBkcmFtYXRpY2FsbHkKKyAgICAgICAgaW5jb3JyZWN0IHJlc3VsdHMgZm9yIGFic29sdXRlQm91
bmRpbmdSZWN0KCkgdW5sZXNzIHRoZSBtYWludGFpbmVyIGV4cGxpY2l0bHkgc2V0cyBkaXNhYmxl
U3RhdGUuCisKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZUVEN1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWVFRDdWVCb3g6OmFwcGx5Q1NTUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpW
VFRDdWU6OmdldENTU1Bvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZUVEN1
ZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck9iamVjdDo6aXNSZW5kZXJWVFRDdWUgY29uc3QpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJWVFRDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVlRUQ3VlOjps
YXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVlRUQ3VlOjppbml0aWFsaXplTGF5b3V0
UGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWVFRDdWU6OmlzT3V0c2lkZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWVFRDdWU6Om92ZXJsYXBwaW5nT2JqZWN0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZUVEN1ZTo6b3ZlcmxhcHBpbmdPYmpl
Y3RGb3JSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZUVEN1ZTo6bW92ZUlm
TmVjZXNzYXJ5VG9LZWVwV2l0aGluQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clZUVEN1ZTo6ZmluZE5vbk92ZXJsYXBwaW5nUG9zaXRpb24gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVlRUQ3VlOjpyZXBvc2l0aW9uR2VuZXJpY0N1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJWVFRDdWU6OmJhY2tkcm9wQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclZUVEN1ZTo6Y3VlQm94IGNvbnN0KToKKwogMjAyMS0xMC0yMiAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYW4gZXhwZXJpbWVudGFsIHRyYWNr
Q29uZmlndXJhdGlvbiBhY2Nlc3NvciBvbiBBdWRpb1RyYWNrICYgVmlkZW9UcmFjay4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAppbmRleCA5NTdlYjhjNTgxNTEwM2YzNGU4ODEyMDcx
MDQwMjZiNTMzOWQ2MDcyLi5jNTZkYzAyNGQ1YjAxNzU0M2E2M2M2ODM5ZmJmNmQ0ZWY4MDc0ZTFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCkBAIC0yMzYsMjEgKzIzNiw4IEBA
IHZvaWQgVlRUQ3VlQm94OjphcHBseUNTU1Byb3BlcnRpZXMoY29uc3QgSW50U2l6ZSYgdmlkZW9T
aXplKQogICAgIC8vIGFsaWdubWVudDoKICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1By
b3BlcnR5VGV4dEFsaWduLCBjdWUtPmdldENTU0FsaWdubWVudCgpKTsKICAgICAKLSAgICBpZiAo
IWN1ZS0+c25hcFRvTGluZXMoKSkgewotICAgICAgICAvLyAxMC4xMy4xIFNldCB1cCB4IGFuZCB5
OgotICAgICAgICAvLyBOb3RlOiB4IGFuZCB5IGFyZSBzZXQgdGhyb3VnaCB0aGUgQ1NTIGxlZnQg
YW5kIHRvcCBhYm92ZS4KLQotICAgICAgICAvLyAxMC4xMy4yIFBvc2l0aW9uIHRoZSBib3hlcyBp
biBib3hlcyBzdWNoIHRoYXQgdGhlIHBvaW50IHglIGFsb25nIHRoZQotICAgICAgICAvLyB3aWR0
aCBvZiB0aGUgYm91bmRpbmcgYm94IG9mIHRoZSBib3hlcyBpbiBib3hlcyBpcyB4JSBvZiB0aGUg
d2F5Ci0gICAgICAgIC8vIGFjcm9zcyB0aGUgd2lkdGggb2YgdGhlIHZpZGVvJ3MgcmVuZGVyaW5n
IGFyZWEsIGFuZCB0aGUgcG9pbnQgeSUKLSAgICAgICAgLy8gYWxvbmcgdGhlIGhlaWdodCBvZiB0
aGUgYm91bmRpbmcgYm94IG9mIHRoZSBib3hlcyBpbiBib3hlcyBpcyB5JQotICAgICAgICAvLyBv
ZiB0aGUgd2F5IGFjcm9zcyB0aGUgaGVpZ2h0IG9mIHRoZSB2aWRlbydzIHJlbmRlcmluZyBhcmVh
LCB3aGlsZQotICAgICAgICAvLyBtYWludGFpbmluZyB0aGUgcmVsYXRpdmUgcG9zaXRpb25zIG9m
IHRoZSBib3hlcyBpbiBib3hlcyB0byBlYWNoCi0gICAgICAgIC8vIG90aGVyLgotICAgICAgICBz
ZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VHJhbnNmb3JtLCBtYWtlU3RyaW5nKCJ0
cmFuc2xhdGUoIiwgLXBvc2l0aW9uLmZpcnN0LCAiJSwgIiwgLXBvc2l0aW9uLnNlY29uZCwgIiUp
IikpOwotCisgICAgaWYgKCFjdWUtPnNuYXBUb0xpbmVzKCkpCiAgICAgICAgIHNldElubGluZVN0
eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCBDU1NWYWx1ZVByZSk7Ci0gICAgfQog
CiAgICAgLy8gTWFrZSBzdXJlIHNoYWRvdyBvciBzdHJva2UgaXMgbm90IGNsaXBwZWQuCiAgICAg
c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU92ZXJmbG93LCBDU1NWYWx1ZVZpc2li
bGUpOwpAQCAtMTMyMSw5ICsxMzA4LDYgQEAgaW50IFZUVEN1ZTo6Z2V0Q1NTU2l6ZSgpIGNvbnN0
CiAKIHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4gVlRUQ3VlOjpnZXRDU1NQb3NpdGlvbigpIGNv
bnN0CiB7Ci0gICAgaWYgKCFtX3NuYXBUb0xpbmVzKQotICAgICAgICByZXR1cm4gZ2V0UG9zaXRp
b25Db29yZGluYXRlcygpOwotCiAgICAgcmV0dXJuIG1fZGlzcGxheVBvc2l0aW9uOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9WVFRDdWUuaAppbmRleCA3NDk2YzIyOTFlYzBjOWRhYWFjNTYyMGY1
MjlkMjI2MTUyZDhiZjVlLi41NzVlZmM2OTY5ZWUyYmViN2Q5NzllYzNjYmRkOTdhODg0ZjViZWVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmgKQEAgLTI0NSw3ICsyNDUsNyBAQCBwcml2
YXRlOgogCiAgICAgQ1NTVmFsdWVJRCBtX2Rpc3BsYXlEaXJlY3Rpb24geyBDU1NWYWx1ZUx0ciB9
OwogICAgIGludCBtX2Rpc3BsYXlTaXplIHsgMCB9OwotICAgIHN0ZDo6cGFpcjxmbG9hdCwgZmxv
YXQ+IG1fZGlzcGxheVBvc2l0aW9uOworICAgIHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IG1fZGlz
cGxheVBvc2l0aW9uIHsgdW5kZWZpbmVkUG9zaXRpb24sIHVuZGVmaW5lZFBvc2l0aW9uIH07CiAK
ICAgICBNZWRpYVRpbWUgbV9vcmlnaW5hbFN0YXJ0VGltZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5oCmluZGV4IGQ0OTk4Nzg3MmVmMzQxMDNhYzBlODI0ZDcxZjM5NGM2
ZWJjZTk3ZDMuLmQ0Y2ZiZTM0YzM4ZTgwNjE4Y2E3ZWM1MzExODg5MzA4NmZhNzdlMTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTI2OSw2ICsyNjksNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vo
b2xkZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCBib29sIGlzUmVu
ZGVyU2Nyb2xsYmFyUGFydCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIGlzUmVuZGVyVlRUQ3VlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIGJvb2wg
aXNEb2N1bWVudEVsZW1lbnRSZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIGRvY3VtZW50KCkuZG9j
dW1lbnRFbGVtZW50KCkgPT0gJm1fbm9kZTsgfQogICAgIGJvb2wgaXNCb2R5KCkgY29uc3QgeyBy
ZXR1cm4gbm9kZSgpICYmIG5vZGUoKS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmJvZHlUYWcpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuY3BwCmluZGV4IDViYWU4ZWZl
N2E4ZmM4MTYyMmIyMGU4OGE3ZmViNWEyY2I0ZmVlYzQuLmMyMTIwMzAxZGY0MzFkNWQ0MTFlY2Q5
YzM5NWJhYTU2ZDg1NGIxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWVFRDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRD
dWUuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgUmVuZGVyVlRUQ3VlOjpsYXlvdXQoKQogICAg
IGlmICghbV9jdWUtPnJlZ2lvbklkKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBMYXlvdXRTdGF0ZU1haW50YWluZXIgc3RhdGVQdXNoZXIoKnRoaXMsIGxvY2F0aW9uT2Zmc2V0
KCksIGhhc1RyYW5zZm9ybSgpIHx8IGhhc1JlZmxlY3Rpb24oKSB8fCBzdHlsZSgpLmlzRmxpcHBl
ZEJsb2Nrc1dyaXRpbmdNb2RlKCkpOworICAgIExheW91dFN0YXRlTWFpbnRhaW5lciBzdGF0ZVB1
c2hlcigqdGhpcywgbG9jYXRpb25PZmZzZXQoKSwgdHJ1ZSk7CiAKICAgICBpZiAobV9jdWUtPmN1
ZVR5cGUoKT09IFRleHRUcmFja0N1ZTo6V2ViVlRUKSB7CiAgICAgICAgIGlmIChtX2N1ZS0+c25h
cFRvTGluZXMoKSkKQEAgLTc5LDEyICs3OSw3IEBAIGJvb2wgUmVuZGVyVlRUQ3VlOjppbml0aWFs
aXplTGF5b3V0UGFyYW1ldGVycyhMZWdhY3lJbmxpbmVGbG93Qm94KiYgZmlyc3RMaW5lQm94CiAK
ICAgICBSZW5kZXJCbG9jayogcGFyZW50QmxvY2sgPSBjb250YWluaW5nQmxvY2soKTsKIAotICAg
IC8vIGZpcnN0Q2hpbGQoKSByZXR1cm5zIHRoZSB3cmFwcGluZyAoYmFja2Ryb3ApIDxkaXY+LiBU
aGUgY3VlIG9iamVjdCBpcwotICAgIC8vIHRoZSA8ZGl2PidzIGZpcnN0IGNoaWxkLgotICAgIFJl
bmRlck9iamVjdCYgZmlyc3RDaGlsZCA9ICp0aGlzLT5maXJzdENoaWxkKCk7Ci0gICAgUmVuZGVy
RWxlbWVudCYgYmFja2Ryb3BFbGVtZW50ID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oZmlyc3RD
aGlsZCk7Ci0gICAgCi0gICAgZmlyc3RMaW5lQm94ID0gZG93bmNhc3Q8UmVuZGVySW5saW5lPigq
YmFja2Ryb3BFbGVtZW50LmZpcnN0Q2hpbGQoKSkuZmlyc3RMaW5lQm94KCk7CisgICAgZmlyc3RM
aW5lQm94ID0gY3VlQm94KCkuZmlyc3RMaW5lQm94KCk7CiAgICAgaWYgKCFmaXJzdExpbmVCb3gp
CiAgICAgICAgIGZpcnN0TGluZUJveCA9IHRoaXMtPmZpcnN0Um9vdEJveCgpOwogCkBAIC05Miw2
ICs4NywxOSBAQCBib29sIFJlbmRlclZUVEN1ZTo6aW5pdGlhbGl6ZUxheW91dFBhcmFtZXRlcnMo
TGVnYWN5SW5saW5lRmxvd0JveComIGZpcnN0TGluZUJveAogICAgIC8vICAgIFZlcnRpY2FsOiBM
ZXQgc3RlcCBiZSB0aGUgd2lkdGggb2YgdGhlIGZpcnN0IGxpbmUgYm94IGluIGJveGVzLgogICAg
IHN0ZXAgPSBtX2N1ZS0+Z2V0V3JpdGluZ0RpcmVjdGlvbigpID09IFZUVEN1ZTo6SG9yaXpvbnRh
bCA/IGZpcnN0TGluZUJveC0+aGVpZ2h0KCkgOiBmaXJzdExpbmVCb3gtPndpZHRoKCk7CiAKKyAg
ICAvLyBOb3RlOiB0aGUgcHJldmlvdXMgcnVsZXMgaW4gaW5pdGlhbGl6ZUxheW91dFBhcmFtZXRl
cnMoKSBvbmx5IGFjY291bnQgZm9yCisgICAgLy8gdGhlIGhlaWdodCBvZiB0aGUgbGluZSBib3hl
cyBjb250YWluZWQgd2l0aGluIHRoZSBjdWUsIGFuZCBub3QgdGhlIGN1ZSdzIGhlaWdodAorICAg
IC8vIG5vciBpdHMgcGFkZGluZywgbm9yIGl0cyBib3JkZXJzLiBJZ25vcmluZyB0aGVzZSB3aWxs
IGxlYWQgdG8gZXJyb3JzCisgICAgLy8gaW4gdGhlIGluaXRpYWwgcGxhY2VtZW50IG9mIGN1ZXMs
IGFzIHRoZSByZXN1bHRpbmcgcGxhY2VtZW50IHdpbGwgcmVzdWx0IGluCisgICAgLy8gdGhlIGN1
ZSBhbHdheXMgYmVpbmcgcGFydGlhbGx5IG91dHNpZGUgaXRzIGNvbnRhaW5pbmcgYmxvY2ssIHJh
dGhlciB0aGFuIGF0CisgICAgLy8gaXRzIGluaXRpYWwgcG9zaXRpb24uIENvcnJlY3QgdGhlIGlu
aXRpYWwgcG9zaXRpb24gYnkgc3VidHJhY3RpbmcgZnJvbQorICAgIC8vIHBvc2l0aW9uIHRoZSBk
aWZmZXJlbmNlIGJldHdlZW4gdGhlIHRoZSBsb2dpY2FsSGVpZ2h0IG9mIHRoZSBjdWUgYW5kIGl0
cworICAgIC8vIGZpcnN0IGxpbmUgYm94LgorICAgIGF1dG8mIGJhY2tkcm9wQm94ID0gdGhpcy0+
YmFja2Ryb3BCb3goKTsKKyAgICBhdXRvIGxvZ2ljYWxIZWlnaHREZWx0YSA9IGJhY2tkcm9wQm94
LmxvZ2ljYWxIZWlnaHQoKSAtIGZpcnN0TGluZUJveC0+bG9naWNhbEhlaWdodCgpOworICAgIGlm
IChsb2dpY2FsSGVpZ2h0RGVsdGEgPiAwKQorICAgICAgICBzdGVwICs9IGxvZ2ljYWxIZWlnaHRE
ZWx0YTsKKwogICAgIC8vIDIuIElmIHN0ZXAgaXMgemVybywgdGhlbiBqdW1wIHRvIHRoZSBzdGVw
IGxhYmVsZWQgZG9uZSBwb3NpdGlvbmluZyBiZWxvdy4KICAgICBpZiAoIXN0ZXApCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTE0Niw3ICsxNTQsNyBAQCB2b2lkIFJlbmRlclZUVEN1ZTo6cGxh
Y2VCb3hJbkRlZmF1bHRQb3NpdGlvbihMYXlvdXRVbml0IHBvc2l0aW9uLCBib29sJiBzd2l0Y2hl
ZAogCiBib29sIFJlbmRlclZUVEN1ZTo6aXNPdXRzaWRlKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
IXJlY3RJc1dpdGhpbkNvbnRhaW5lcihhYnNvbHV0ZUNvbnRlbnRCb3goKSk7CisgICAgcmV0dXJu
ICFyZWN0SXNXaXRoaW5Db250YWluZXIoYmFja2Ryb3BCb3goKS5hYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdCgpKTsKIH0KIAogYm9vbCBSZW5kZXJWVFRDdWU6OnJlY3RJc1dpdGhpbkNvbnRhaW5lcihj
b25zdCBJbnRSZWN0JiByZWN0KSBjb25zdApAQCAtMTYwLDE4ICsxNjgsMjAgQEAgYm9vbCBSZW5k
ZXJWVFRDdWU6OmlzT3ZlcmxhcHBpbmcoKSBjb25zdAogICAgIHJldHVybiBvdmVybGFwcGluZ09i
amVjdCgpOwogfQogCi1SZW5kZXJPYmplY3QqIFJlbmRlclZUVEN1ZTo6b3ZlcmxhcHBpbmdPYmpl
Y3QoKSBjb25zdAorUmVuZGVyVlRUQ3VlKiBSZW5kZXJWVFRDdWU6Om92ZXJsYXBwaW5nT2JqZWN0
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gb3ZlcmxhcHBpbmdPYmplY3RGb3JSZWN0KGFic29sdXRl
Qm91bmRpbmdCb3hSZWN0KCkpOworICAgIHJldHVybiBvdmVybGFwcGluZ09iamVjdEZvclJlY3Qo
YmFja2Ryb3BCb3goKS5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsKIH0KIAotUmVuZGVyT2Jq
ZWN0KiBSZW5kZXJWVFRDdWU6Om92ZXJsYXBwaW5nT2JqZWN0Rm9yUmVjdChjb25zdCBJbnRSZWN0
JiByZWN0KSBjb25zdAorUmVuZGVyVlRUQ3VlKiBSZW5kZXJWVFRDdWU6Om92ZXJsYXBwaW5nT2Jq
ZWN0Rm9yUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KSBjb25zdAogewotICAgIGZvciAoUmVuZGVy
T2JqZWN0KiBib3ggPSBwcmV2aW91c1NpYmxpbmcoKTsgYm94OyBib3ggPSBib3gtPnByZXZpb3Vz
U2libGluZygpKSB7Ci0gICAgICAgIEludFJlY3QgYm94UmVjdCA9IGJveC0+YWJzb2x1dGVCb3Vu
ZGluZ0JveFJlY3QoKTsKKyAgICBmb3IgKFJlbmRlck9iamVjdCogc2libGluZyA9IHByZXZpb3Vz
U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+cHJldmlvdXNTaWJsaW5nKCkp
IHsKKyAgICAgICAgYXV0byogcHJldmlvdXNDdWUgPSBkb3duY2FzdDxSZW5kZXJWVFRDdWU+KHNp
YmxpbmcpOworICAgICAgICBpZiAoIXByZXZpb3VzQ3VlKQorICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgaWYgKHJlY3QuaW50ZXJzZWN0cyhib3hSZWN0KSkKLSAgICAgICAgICAgIHJl
dHVybiBib3g7CisgICAgICAgIGlmIChyZWN0LmludGVyc2VjdHMocHJldmlvdXNDdWUtPmJhY2tk
cm9wQm94KCkuYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSkpCisgICAgICAgICAgICByZXR1cm4g
cHJldmlvdXNDdWU7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CkBAIC0yNDMsNyArMjUzLDcgQEAg
Ym9vbCBSZW5kZXJWVFRDdWU6OnN3aXRjaERpcmVjdGlvbihib29sJiBzd2l0Y2hlZCwgTGF5b3V0
VW5pdCYgc3RlcCkKIHZvaWQgUmVuZGVyVlRUQ3VlOjptb3ZlSWZOZWNlc3NhcnlUb0tlZXBXaXRo
aW5Db250YWluZXIoKQogewogICAgIEludFJlY3QgY29udGFpbmVyUmVjdCA9IGNvbnRhaW5pbmdC
bG9jaygpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOwotICAgIEludFJlY3QgY3VlUmVjdCA9
IGFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CisgICAgSW50UmVjdCBjdWVSZWN0ID0gYmFja2Ry
b3BCb3goKS5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOwogCiAgICAgaW50IHRvcE92ZXJmbG93
ID0gY3VlUmVjdC55KCkgLSBjb250YWluZXJSZWN0LnkoKTsKICAgICBpbnQgYm90dG9tT3ZlcmZs
b3cgPSBjb250YWluZXJSZWN0Lm1heFkoKSAtIGN1ZVJlY3QubWF4WSgpOwpAQCAtMjc0LDE1ICsy
ODQsMTUgQEAgYm9vbCBSZW5kZXJWVFRDdWU6OmZpbmROb25PdmVybGFwcGluZ1Bvc2l0aW9uKGlu
dCYgbmV3WCwgaW50JiBuZXdZKSBjb25zdAogewogICAgIG5ld1ggPSB4KCk7CiAgICAgbmV3WSA9
IHkoKTsKLSAgICBJbnRSZWN0IHNyY1JlY3QgPSBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOwor
ICAgIEludFJlY3Qgc3JjUmVjdCA9IGJhY2tkcm9wQm94KCkuYWJzb2x1dGVCb3VuZGluZ0JveFJl
Y3QoKTsKICAgICBJbnRSZWN0IGRlc3RSZWN0ID0gc3JjUmVjdDsKIAogICAgIC8vIE1vdmUgdGhl
IGJveCB1cCwgbG9va2luZyBmb3IgYSBub24tb3ZlcmxhcHBpbmcgcG9zaXRpb246Ci0gICAgd2hp
bGUgKFJlbmRlck9iamVjdCogYm94ID0gb3ZlcmxhcHBpbmdPYmplY3RGb3JSZWN0KGRlc3RSZWN0
KSkgeworICAgIHdoaWxlIChSZW5kZXJWVFRDdWUqIGN1ZSA9IG92ZXJsYXBwaW5nT2JqZWN0Rm9y
UmVjdChkZXN0UmVjdCkpIHsKICAgICAgICAgaWYgKG1fY3VlLT5nZXRXcml0aW5nRGlyZWN0aW9u
KCkgPT0gVlRUQ3VlOjpIb3Jpem9udGFsKQotICAgICAgICAgICAgZGVzdFJlY3Quc2V0WShib3gt
PmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkueSgpIC0gZGVzdFJlY3QuaGVpZ2h0KCkpOworICAg
ICAgICAgICAgZGVzdFJlY3Quc2V0WShjdWUtPmJhY2tkcm9wQm94KCkuYWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3QoKS55KCkgLSBkZXN0UmVjdC5oZWlnaHQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGRlc3RSZWN0LnNldFgoYm94LT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpLngoKSAt
IGRlc3RSZWN0LndpZHRoKCkpOworICAgICAgICAgICAgZGVzdFJlY3Quc2V0WChjdWUtPmJhY2tk
cm9wQm94KCkuYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKS54KCkgLSBkZXN0UmVjdC53aWR0aCgp
KTsKICAgICB9CiAKICAgICBpZiAocmVjdElzV2l0aGluQ29udGFpbmVyKGRlc3RSZWN0KSkgewpA
QCAtMjk0LDExICszMDQsMTEgQEAgYm9vbCBSZW5kZXJWVFRDdWU6OmZpbmROb25PdmVybGFwcGlu
Z1Bvc2l0aW9uKGludCYgbmV3WCwgaW50JiBuZXdZKSBjb25zdAogICAgIGRlc3RSZWN0ID0gc3Jj
UmVjdDsKIAogICAgIC8vIE1vdmUgdGhlIGJveCBkb3duLCBsb29raW5nIGZvciBhIG5vbi1vdmVy
bGFwcGluZyBwb3NpdGlvbjoKLSAgICB3aGlsZSAoUmVuZGVyT2JqZWN0KiBib3ggPSBvdmVybGFw
cGluZ09iamVjdEZvclJlY3QoZGVzdFJlY3QpKSB7CisgICAgd2hpbGUgKFJlbmRlclZUVEN1ZSog
Y3VlID0gb3ZlcmxhcHBpbmdPYmplY3RGb3JSZWN0KGRlc3RSZWN0KSkgewogICAgICAgICBpZiAo
bV9jdWUtPmdldFdyaXRpbmdEaXJlY3Rpb24oKSA9PSBWVFRDdWU6Okhvcml6b250YWwpCi0gICAg
ICAgICAgICBkZXN0UmVjdC5zZXRZKGJveC0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKS5tYXhZ
KCkpOworICAgICAgICAgICAgZGVzdFJlY3Quc2V0WShjdWUtPmJhY2tkcm9wQm94KCkuYWJzb2x1
dGVCb3VuZGluZ0JveFJlY3QoKS5tYXhZKCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBk
ZXN0UmVjdC5zZXRYKGJveC0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKS5tYXhYKCkpOworICAg
ICAgICAgICAgZGVzdFJlY3Quc2V0WChjdWUtPmJhY2tkcm9wQm94KCkuYWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3QoKS5tYXhYKCkpOwogICAgIH0KIAogICAgIGlmIChyZWN0SXNXaXRoaW5Db250YWlu
ZXIoZGVzdFJlY3QpKSB7CkBAIC0zNDUsMTIgKzM1NSw3IEBAIHZvaWQgUmVuZGVyVlRUQ3VlOjpy
ZXBvc2l0aW9uR2VuZXJpY0N1ZSgpCiB7CiAgICAgQVNTRVJUKGZpcnN0Q2hpbGQoKSk7CiAKLSAg
ICAvLyBmaXJzdENoaWxkKCkgcmV0dXJucyB0aGUgd3JhcHBpbmcgKGJhY2tkcm9wKSA8ZGl2Pi4g
VGhlIGN1ZSBvYmplY3QgaXMKLSAgICAvLyB0aGUgPGRpdj4ncyBmaXJzdCBjaGlsZC4KLSAgICBS
ZW5kZXJPYmplY3QmIGZpcnN0Q2hpbGQgPSAqdGhpcy0+Zmlyc3RDaGlsZCgpOwotICAgIFJlbmRl
ckVsZW1lbnQmIGJhY2tkcm9wRWxlbWVudCA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KGZpcnN0
Q2hpbGQpOwotICAgIAotICAgIExlZ2FjeUlubGluZUZsb3dCb3gqIGZpcnN0TGluZUJveCA9IGRv
d25jYXN0PFJlbmRlcklubGluZT4oKmJhY2tkcm9wRWxlbWVudC5maXJzdENoaWxkKCkpLmZpcnN0
TGluZUJveCgpOworICAgIExlZ2FjeUlubGluZUZsb3dCb3gqIGZpcnN0TGluZUJveCA9IGN1ZUJv
eCgpLmZpcnN0TGluZUJveCgpOwogICAgIGlmIChkb3duY2FzdDxUZXh0VHJhY2tDdWVHZW5lcmlj
PigqbV9jdWUpLnVzZURlZmF1bHRQb3NpdGlvbigpICYmIGZpcnN0TGluZUJveCkgewogICAgICAg
ICBMYXlvdXRVbml0IHBhcmVudFdpZHRoID0gY29udGFpbmluZ0Jsb2NrKCktPmxvZ2ljYWxXaWR0
aCgpOwogICAgICAgICBMYXlvdXRVbml0IHdpZHRoIHsgZmlyc3RMaW5lQm94LT53aWR0aCgpIH07
CkBAIC0zODQsNiArMzg5LDIxIEBAIHZvaWQgUmVuZGVyVlRUQ3VlOjpyZXBvc2l0aW9uQ3VlU25h
cFRvTGluZXNOb3RTZXQoKQogICAgIHNldFkoeSk7CiB9CiAKK1JlbmRlckJsb2NrRmxvdyYgUmVu
ZGVyVlRUQ3VlOjpiYWNrZHJvcEJveCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGZpcnN0Q2hpbGQo
KSk7CisKKyAgICAvLyBmaXJzdENoaWxkKCkgcmV0dXJucyB0aGUgd3JhcHBpbmcgKGJhY2tkcm9w
KSA8ZGl2Pi4gVGhlIGN1ZSBvYmplY3QgaXMKKyAgICAvLyB0aGUgPGRpdj4ncyBmaXJzdCBjaGls
ZC4KKyAgICBSZW5kZXJPYmplY3QmIGZpcnN0Q2hpbGQgPSAqdGhpcy0+Zmlyc3RDaGlsZCgpOwor
ICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KGZpcnN0Q2hpbGQpOworfQorCitS
ZW5kZXJJbmxpbmUmIFJlbmRlclZUVEN1ZTo6Y3VlQm94KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ZG93bmNhc3Q8UmVuZGVySW5saW5lPigqYmFja2Ryb3BCb3goKS5maXJzdENoaWxkKCkpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGU5Nzg2NGY1ZDI2NTVm
ZDNhMmQwMGEwZTI1ZGIzYTM4YWJlNzU5ZWQuLjBiMzc4YjEyZmQyYWMwM2FlZTQ2MWRmZDI3Mjk5
ZDdjM2Q1MTY4NWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMS0xMi0wNiAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbVlRUXSBGaXggdmFyaW91cyBpc3N1
ZXMgd2l0aCBjb21wbGljYXRlZCByZW5kZXJpbmcgb2YgVlRUIGN1ZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzkwMQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEvdHJhY2svY2FwdGlvbnMt
d2VidnR0L25vLXNuYXAtdG8tbGluZXMtb3ZlcmxhcC52dHQ6IEFkZGVkLgorICAgICAgICAqIG1l
ZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zbmFwLXRvLWxpbmVzLWlubGluZS1zdHlsZS52dHQ6
IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zbmFwLXRvLWxp
bmVzLWxlZnQtYW5kLXJpZ2h0LnZ0dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdHJhY2svdHJh
Y2std2VidnR0LW5vLXNuYXAtdG8tbGluZXMtb3ZlcmxhcC1leHBlY3RlZC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay13ZWJ2dHQtbm8tc25hcC10by1saW5lcy1vdmVy
bGFwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFw
LXRvLWxpbmVzLWlubGluZS1zdHlsZS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBt
ZWRpYS90cmFjay90cmFjay13ZWJ2dHQtc25hcC10by1saW5lcy1pbmxpbmUtc3R5bGUuaHRtbDog
QWRkZWQuCisgICAgICAgICogbWVkaWEvdHJhY2svdHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMt
bGVmdC1yaWdodC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay90
cmFjay13ZWJ2dHQtc25hcC10by1saW5lcy1sZWZ0LXJpZ2h0Lmh0bWw6IEFkZGVkLgorCiAyMDIx
LTEwLTIyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBh
biBleHBlcmltZW50YWwgdHJhY2tDb25maWd1cmF0aW9uIGFjY2Vzc29yIG9uIEF1ZGlvVHJhY2sg
JiBWaWRlb1RyYWNrLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svY2FwdGlv
bnMtd2VidnR0L25vLXNuYXAtdG8tbGluZXMtb3ZlcmxhcC52dHQgYi9MYXlvdXRUZXN0cy9tZWRp
YS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvbm8tc25hcC10by1saW5lcy1vdmVybGFwLnZ0dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zN2Y2ZjQ0ZjRkOWE3ZTEyZDBjNmVkZmRlMmJhZTgxNDRlOWJlMjg1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L25vLXNu
YXAtdG8tbGluZXMtb3ZlcmxhcC52dHQKQEAgLTAsMCArMSwzMyBAQAorV0VCVlRUCisKKzEKKzAw
OjAwOjAwLjAwMCAtLT4gMDA6MDA6MDAuNTAwIGFsaWduOmxlZnQgbGluZTowJQorTGVmdAorCisy
CiswMDowMDowMC4wMDAgLS0+IDAwOjAwOjAwLjUwMCBhbGlnbjpyaWdodCBsaW5lOjAlCitSaWdo
dAorCiszCiswMDowMDowMC4wMDAgLS0+IDAwOjAwOjAwLjUwMCBhbGlnbjpsZWZ0IGxpbmU6MCUK
K0JlbG93CisKKzQKKzAwOjAwOjAwLjAwMCAtLT4gMDA6MDA6MDAuNTAwIGFsaWduOnJpZ2h0IGxp
bmU6MCUKK0JlbG93CisKKzEKKzAwOjAwOjAwLjAwMCAtLT4gMDA6MDA6MDAuNTAwIGFsaWduOmxl
ZnQgbGluZToxMDAlCitMZWZ0CisKKzIKKzAwOjAwOjAwLjAwMCAtLT4gMDA6MDA6MDAuNTAwIGFs
aWduOnJpZ2h0IGxpbmU6MTAwJQorUmlnaHQKKworMworMDA6MDA6MDAuMDAwIC0tPiAwMDowMDow
MC41MDAgYWxpZ246bGVmdCBsaW5lOjEwMCUKK0Fib3ZlCisKKzQKKzAwOjAwOjAwLjAwMCAtLT4g
MDA6MDA6MDAuNTAwIGFsaWduOnJpZ2h0IGxpbmU6MTAwJQorQWJvdmUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zbmFwLXRvLWxpbmVzLWlubGlu
ZS1zdHlsZS52dHQgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvc25h
cC10by1saW5lcy1pbmxpbmUtc3R5bGUudnR0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmYzU2NTZhNDFiODllY2E4
MDE1MTE3NGE1NDgwMjQzZjY2MWYzNTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9t
ZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvc25hcC10by1saW5lcy1pbmxpbmUtc3R5bGUudnR0
CkBAIC0wLDAgKzEsMjAgQEAKK1dFQlZUVAorCitTVFlMRQorOjpjdWUoLmRvdWJsZUhlaWdodCkg
eyBmb250LXNpemU6IDIwMCU7IGJhY2tncm91bmQtY29sb3I6IGJsYWNrIH0KKworMQorMDA6MDA6
MDAuMDAwIC0tPiAwMDowMDowMC41MDAgYWxpZ246bGVmdAorPGMuZG91YmxlSGVpZ2h0PkxlZnQ8
L2M+CisKKzIKKzAwOjAwOjAwLjAwMCAtLT4gMDA6MDA6MDAuNTAwIGFsaWduOnJpZ2h0IHBvc2l0
aW9uOjEwMCUKKzxjLmRvdWJsZUhlaWdodD5SaWdodDwvYz4KKworMworMDA6MDA6MDAuMDAwIC0t
PiAwMDowMDowMC41MDAgYWxpZ246bGVmdAorPGMuZG91YmxlSGVpZ2h0PkFib3ZlPC9jPgorCis0
CiswMDowMDowMC4wMDAgLS0+IDAwOjAwOjAwLjUwMCBhbGlnbjpyaWdodCBwb3NpdGlvbjoxMDAl
Cis8Yy5kb3VibGVIZWlnaHQ+QWJvdmU8L2M+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRp
YS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvc25hcC10by1saW5lcy1sZWZ0LWFuZC1yaWdodC52dHQg
Yi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvc25hcC10by1saW5lcy1s
ZWZ0LWFuZC1yaWdodC52dHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzA5NjllMGRkYjE1NmNiM2Y2NDE0NjcyZDMy
NjE0YTljZTllMGJjZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNr
L2NhcHRpb25zLXdlYnZ0dC9zbmFwLXRvLWxpbmVzLWxlZnQtYW5kLXJpZ2h0LnZ0dApAQCAtMCww
ICsxLDE3IEBACitXRUJWVFQKKworMQorMDA6MDA6MDAuMDAwIC0tPiAwMDowMDowMC41MDAgYWxp
Z246bGVmdAorTGVmdAorCisyCiswMDowMDowMC4wMDAgLS0+IDAwOjAwOjAwLjUwMCBhbGlnbjpy
aWdodCBwb3NpdGlvbjoxMDAlCitSaWdodAorCiszCiswMDowMDowMC4wMDAgLS0+IDAwOjAwOjAw
LjUwMCBhbGlnbjpsZWZ0CitBYm92ZQorCis0CiswMDowMDowMC4wMDAgLS0+IDAwOjAwOjAwLjUw
MCBhbGlnbjpyaWdodCBwb3NpdGlvbjoxMDAlCitBYm92ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvbWVkaWEvdHJhY2svdHJhY2std2VidnR0LW5vLXNuYXAtdG8tbGluZXMtb3ZlcmxhcC1leHBl
Y3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2std2VidnR0LW5vLXNuYXAt
dG8tbGluZXMtb3ZlcmxhcC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3N2I1NTM2NGUwOThl
MDM1N2ExODFkODBkN2IzMDQzMDYxYmYzMDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9tZWRpYS90cmFjay90cmFjay13ZWJ2dHQtbm8tc25hcC10by1saW5lcy1vdmVybGFwLWV4cGVj
dGVkLmh0bWwKQEAgLTAsMCArMSw1OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorICAgIDx0aXRsZT50cmFjay13ZWJ2dHQtbm8tc25hcC10by1saW5lcy1vdmVybGFwPC90aXRs
ZT4KKyAgICA8c3R5bGU+CisgICAgICAgIC52aWRlbyB7IAorICAgICAgICAgICAgZGlzcGxheTog
aW5saW5lLWJsb2NrOworICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICAg
ICAgd2lkdGg6IDMyMHB4OworICAgICAgICAgICAgaGVpZ2h0OiAyNDBweDsKKyAgICAgICAgfQor
ICAgICAgICBodG1sIHsgb3ZlcmZsb3c6aGlkZGVuIH0KKyAgICAgICAgYm9keSB7IG1hcmdpbjow
IH0KKyAgICAgICAgLmN1ZS1ib3ggeworICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwor
ICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4OworICAgICAgICB9CisgICAgICAgIC5jdWUgewor
ICAgICAgICAgICAgZm9udC1mYW1pbHk6IEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgICAgICBi
YWNrZ3JvdW5kLWNvbG9yOiBibGFjazsKKyAgICAgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICAg
ICAgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdD52YXIgcmVxdWlyZVBpeGVsRHVtcCA9IHRy
dWU7PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSIuLi9tZWRpYS1maWxlLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0PgorICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgYXN5bmMgZXZlbnQgPT4g
eworICAgICAgICBjb25zb2xlV3JpdGUoJ1JVTih2aWRlby5xdWVyeVNlbGVjdG9yKCJ0cmFjayIp
LnNyYyA9ICJjYXB0aW9ucy13ZWJ2dHQvbm8tc25hcC10by1saW5lcy1vdmVybGFwLnZ0dCIpJyk7
CisgICAgICAgIGNvbnNvbGVXcml0ZSgnUlVOKHZpZGVvLnRleHRUcmFja3NbMF0ubW9kZSA9ICJz
aG93aW5nIiknKTsKKyAgICAgICAgY29uc29sZVdyaXRlKCdFVkVOVChsb2FkKScpOworICAgICAg
ICBjb25zb2xlV3JpdGUoJ1JVTih2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJ3
M2MvdHJhY2svd2VidnR0L21lZGlhL3doaXRlIikpJyk7CisgICAgICAgIGNvbnNvbGVXcml0ZSgn
RVZFTlQoY2FucGxheXRocm91Z2gpJyk7CisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9KTsKKyAg
ICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgY2xhc3M9InZpZGVvIj4KKyAg
ICAgICAgPGRpdiBjbGFzcz0iY3VlLWJveCIgc3R5bGU9ImxlZnQ6MDsgdG9wOjA7IHRleHQtYWxp
Z246IGxlZnQ7Ij4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjdWUiPkxlZnQ8L3NwYW4+PGJy
PgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImN1ZSI+QmVsb3c8L3NwYW4+CisgICAgICAgIDwv
ZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJjdWUtYm94IiBzdHlsZT0icmlnaHQ6MDsgdG9wOjA7
IHRleHQtYWxpZ246IHJpZ2h0Ij4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjdWUiPlJpZ2h0
PC9zcGFuPjxicj4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjdWUiPkJlbG93PC9zcGFuPgor
ICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY3VlLWJveCIgc3R5bGU9ImxlZnQ6
MDsgYm90dG9tOjA7IHRleHQtYWxpZ246IGxlZnQiPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9
ImN1ZSI+QWJvdmU8L3NwYW4+PGJyPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImN1ZSI+TGVm
dDwvc3Bhbj4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImN1ZS1ib3giIHN0
eWxlPSJyaWdodDowOyBib3R0b206MDsgdGV4dC1hbGlnbjogcmlnaHQiPgorICAgICAgICAgICAg
PHNwYW4gY2xhc3M9ImN1ZSI+QWJvdmU8L3NwYW4+PGJyPgorICAgICAgICAgICAgPHNwYW4gY2xh
c3M9ImN1ZSI+UmlnaHQ8L3NwYW4+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1uby1zbmFwLXRvLWxpbmVzLW92ZXJsYXAu
aHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1uby1zbmFwLXRvLWxp
bmVzLW92ZXJsYXAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MjMzNDBkODU1NjVjMDc2NjUwYjIzNTFhYTI4
YTczMDcyMzNjZGU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2sv
dHJhY2std2VidnR0LW5vLXNuYXAtdG8tbGluZXMtb3ZlcmxhcC5odG1sCkBAIC0wLDAgKzEsMzgg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKwk8dGl0bGU+dHJhY2std2VidnR0
LW5vLXNuYXAtdG8tbGluZXMtb3ZlcmxhcDwvdGl0bGU+CisJPHN0eWxlPgorCQlodG1sIHsgb3Zl
cmZsb3c6aGlkZGVuIH0KKwkJYm9keSB7IG1hcmdpbjowIH0KKwkJOjpjdWUgeworCQkgICAgZm9u
dC1mYW1pbHk6IEFoZW0sIHNhbnMtc2VyaWY7CisJCSAgICBmb250LXNpemU6IDEycHg7CisJCSAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsKKwkJICAgIGNvbG9yOiBncmVlbjsKKwkJfQorCTwv
c3R5bGU+CisJPHNjcmlwdD52YXIgcmVxdWlyZVBpeGVsRHVtcCA9IHRydWU7PC9zY3JpcHQ+CisJ
PHNjcmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgorCTxzY3JpcHQgc3JjPSIu
Li9tZWRpYS1maWxlLmpzIj48L3NjcmlwdD4KKwk8c2NyaXB0PgorCXdpbmRvdy5hZGRFdmVudExp
c3RlbmVyKCdsb2FkJywgYXN5bmMgZXZlbnQgPT4geworCQlmaW5kTWVkaWFFbGVtZW50KCk7CisK
KwkJcnVuKGB2aWRlby5xdWVyeVNlbGVjdG9yKCJ0cmFjayIpLnNyYyA9ICJjYXB0aW9ucy13ZWJ2
dHQvbm8tc25hcC10by1saW5lcy1vdmVybGFwLnZ0dCJgKTsKKwkJcnVuKGB2aWRlby50ZXh0VHJh
Y2tzWzBdLm1vZGUgPSAic2hvd2luZyJgKTsKKwkJYXdhaXQgd2FpdEZvcih2aWRlby5xdWVyeVNl
bGVjdG9yKCd0cmFjaycpLCAnbG9hZCcpOworCisJCXJ1bihgdmlkZW8uc3JjID0gZmluZE1lZGlh
RmlsZSgidmlkZW8iLCAidzNjL3RyYWNrL3dlYnZ0dC9tZWRpYS93aGl0ZSIpYCk7CisJCWF3YWl0
IHdhaXRGb3IodmlkZW8sICdjYW5wbGF5dGhyb3VnaCcpOworCisJCWVuZFRlc3QoKTsKKwl9KTsK
Kwk8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCTx2aWRlbz4KKyAgICAgICAgPHRyYWNrIGlk
PSJ0ZXN0VHJhY2siIGtpbmQ9ImNhcHRpb25zIiBkZWZhdWx0PgorCTwvdmlkZW8+Cis8L2JvZHk+
Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvbWVkaWEvdHJhY2svdHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMtaW5saW5lLXN0eWxl
LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay13ZWJ2dHQtc25h
cC10by1saW5lcy1pbmxpbmUtc3R5bGUtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ODk4ZTVm
Y2MxNGYzYjVhNDcxMDE1MDdkYmE3ZDU1MzUzNzYxNjVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMtaW5saW5lLXN0
eWxlLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw1MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorICAgIDx0aXRsZT50cmFjay13ZWJ2dHQtc25hcC10by1saW5lcy1pbmxpbmUt
c3R5bGU8L3RpdGxlPgorICAgIDxzdHlsZT4KKyAgICAgICAgLnZpZGVvIHsgCisgICAgICAgICAg
ICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7
CisgICAgICAgICAgICB3aWR0aDogMzIwcHg7CisgICAgICAgICAgICBoZWlnaHQ6IDI0MHB4Owor
ICAgICAgICB9CisgICAgICAgIGh0bWwgeyBvdmVyZmxvdzpoaWRkZW4gfQorICAgICAgICBib2R5
IHsgbWFyZ2luOjAgfQorICAgICAgICAuY3VlLWJveCB7CisgICAgICAgICAgICBwb3NpdGlvbjog
YWJzb2x1dGU7CisgICAgICAgIH0KKyAgICAgICAgLmN1ZSB7CisgICAgICAgICAgICBmb250LWZh
bWlseTogQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJs
YWNrOworICAgICAgICAgICAgY29sb3I6IGdyZWVuOworICAgICAgICAgICAgZm9udC1zaXplOiAy
NHB4OworICAgICAgICB9CisgICAgPC9zdHlsZT4KKyAgICA8c2NyaXB0PnZhciByZXF1aXJlUGl4
ZWxEdW1wID0gdHJ1ZTs8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQ+CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBhc3lu
YyBldmVudCA9PiB7CisgICAgICAgIGNvbnNvbGVXcml0ZSgnUlVOKHZpZGVvLnF1ZXJ5U2VsZWN0
b3IoInRyYWNrIikuc3JjID0gImNhcHRpb25zLXdlYnZ0dC9zbmFwLXRvLWxpbmVzLWlubGluZS1z
dHlsZS52dHQiKScpOworICAgICAgICBjb25zb2xlV3JpdGUoJ1JVTih2aWRlby50ZXh0VHJhY2tz
WzBdLm1vZGUgPSAic2hvd2luZyIpJyk7CisgICAgICAgIGNvbnNvbGVXcml0ZSgnRVZFTlQobG9h
ZCknKTsKKyAgICAgICAgY29uc29sZVdyaXRlKCdSVU4odmlkZW8uc3JjID0gZmluZE1lZGlhRmls
ZSgidmlkZW8iLCAidzNjL3RyYWNrL3dlYnZ0dC9tZWRpYS93aGl0ZSIpKScpOworICAgICAgICBj
b25zb2xlV3JpdGUoJ0VWRU5UKGNhbnBsYXl0aHJvdWdoKScpOworICAgICAgICBlbmRUZXN0KCk7
CisgICAgfSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGNsYXNz
PSJ2aWRlbyI+CisgICAgICAgIDxkaXYgY2xhc3M9ImN1ZS1ib3giIHN0eWxlPSJsZWZ0OjA7IGJv
dHRvbTowOyB0ZXh0LWFsaWduOiBsZWZ0Ij4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjdWUi
PkFib3ZlPC9zcGFuPjxicj4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjdWUiPkxlZnQ8L3Nw
YW4+CisgICAgICAgIDwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJjdWUtYm94IiBzdHlsZT0i
cmlnaHQ6MDsgYm90dG9tOjA7IHRleHQtYWxpZ246IHJpZ2h0Ij4KKyAgICAgICAgICAgIDxzcGFu
IGNsYXNzPSJjdWUiPkFib3ZlPC9zcGFuPjxicj4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJj
dWUiPlJpZ2h0PC9zcGFuPgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKzwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9tZWRpYS90cmFjay90cmFjay13ZWJ2dHQtc25hcC10by1saW5lcy1pbmxpbmUtc3R5bGUuaHRt
bCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRvLWxpbmVzLWlu
bGluZS1zdHlsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3YzFjMzM0NGMyM2RhMTkxZmM5MGI4NzQwNzk4
MDQzM2RlMzRkMzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90
cmFjay13ZWJ2dHQtc25hcC10by1saW5lcy1pbmxpbmUtc3R5bGUuaHRtbApAQCAtMCwwICsxLDM4
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPnRyYWNrLXdl
YnZ0dC1zbmFwLXRvLWxpbmVzLWlubGluZS1zdHlsZTwvdGl0bGU+CisgICAgPHN0eWxlPgorICAg
ICAgICBodG1sIHsgb3ZlcmZsb3c6aGlkZGVuIH0KKyAgICAgICAgYm9keSB7IG1hcmdpbjowIH0K
KyAgICAgICAgOjpjdWUgeworICAgICAgICAgICAgZm9udC1mYW1pbHk6IEFoZW0sIHNhbnMtc2Vy
aWY7CisgICAgICAgICAgICBmb250LXNpemU6IDEycHg7CisgICAgICAgICAgICBiYWNrZ3JvdW5k
LWNvbG9yOiBibGFjazsKKyAgICAgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICAgICAgfQorICAg
IDwvc3R5bGU+CisgICAgPHNjcmlwdD52YXIgcmVxdWlyZVBpeGVsRHVtcCA9IHRydWU7PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSIuLi9tZWRpYS1maWxlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAg
IHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgYXN5bmMgZXZlbnQgPT4geworICAgICAg
ICBmaW5kTWVkaWFFbGVtZW50KCk7CisKKyAgICAgICAgcnVuKGB2aWRlby5xdWVyeVNlbGVjdG9y
KCJ0cmFjayIpLnNyYyA9ICJjYXB0aW9ucy13ZWJ2dHQvc25hcC10by1saW5lcy1pbmxpbmUtc3R5
bGUudnR0ImApOworICAgICAgICBydW4oYHZpZGVvLnRleHRUcmFja3NbMF0ubW9kZSA9ICJzaG93
aW5nImApOworICAgICAgICBhd2FpdCB3YWl0Rm9yKHZpZGVvLnF1ZXJ5U2VsZWN0b3IoJ3RyYWNr
JyksICdsb2FkJyk7CisKKyAgICAgICAgcnVuKGB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2
aWRlbyIsICJ3M2MvdHJhY2svd2VidnR0L21lZGlhL3doaXRlIilgKTsKKyAgICAgICAgYXdhaXQg
d2FpdEZvcih2aWRlbywgJ2NhbnBsYXl0aHJvdWdoJyk7CisKKyAgICAgICAgZW5kVGVzdCgpOwor
ICAgIH0pOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHZpZGVvPgorICAg
ICAgICA8dHJhY2sgaWQ9InRlc3RUcmFjayIgc3JjPSJjYXB0aW9ucy13ZWJ2dHQvc25hcC10by1s
aW5lcy1pbmxpbmUtc3R5bGUudnR0IiBraW5kPSJjYXB0aW9ucyIgZGVmYXVsdD4KKyAgICA8L3Zp
ZGVvPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRvLWxpbmVz
LWxlZnQtcmlnaHQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNr
LXdlYnZ0dC1zbmFwLXRvLWxpbmVzLWxlZnQtcmlnaHQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42NTRmYzBiZGY3MzE1ZGUwMTBiOTQ4M2VjNDkyYmMyNTRjOGRiODk5Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMt
bGVmdC1yaWdodC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsNTAgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+dHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMt
bGVmdC1yaWdodDwvdGl0bGU+CisgICAgPHN0eWxlPgorICAgICAgICAudmlkZW8geyAKKyAgICAg
ICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgIHBvc2l0aW9uOiByZWxh
dGl2ZTsKKyAgICAgICAgICAgIHdpZHRoOiAzMjBweDsKKyAgICAgICAgICAgIGhlaWdodDogMjQw
cHg7CisgICAgICAgIH0KKyAgICAgICAgaHRtbCB7IG92ZXJmbG93OmhpZGRlbiB9CisgICAgICAg
IGJvZHkgeyBtYXJnaW46MCB9CisgICAgICAgIC5jdWUtYm94IHsKKyAgICAgICAgICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsKKyAgICAgICAgfQor
ICAgICAgICAuY3VlIHsKKyAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBBaGVtLCBzYW5zLXNlcmlm
OworICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7CisgICAgICAgICAgICBjb2xv
cjogZ3JlZW47CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQ+dmFyIHJlcXVp
cmVQaXhlbER1bXAgPSB0cnVlOzwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10
ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vbWVkaWEtZmlsZS5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcs
IGFzeW5jIGV2ZW50ID0+IHsKKyAgICAgICAgY29uc29sZVdyaXRlKCdSVU4odmlkZW8ucXVlcnlT
ZWxlY3RvcigidHJhY2siKS5zcmMgPSAiY2FwdGlvbnMtd2VidnR0L3NuYXAtdG8tbGluZXMtbGVm
dC1hbmQtcmlnaHQudnR0IiknKTsKKyAgICAgICAgY29uc29sZVdyaXRlKCdSVU4odmlkZW8udGV4
dFRyYWNrc1swXS5tb2RlID0gInNob3dpbmciKScpOworICAgICAgICBjb25zb2xlV3JpdGUoJ0VW
RU5UKGxvYWQpJyk7CisgICAgICAgIGNvbnNvbGVXcml0ZSgnUlVOKHZpZGVvLnNyYyA9IGZpbmRN
ZWRpYUZpbGUoInZpZGVvIiwgInczYy90cmFjay93ZWJ2dHQvbWVkaWEvd2hpdGUiKSknKTsKKyAg
ICAgICAgY29uc29sZVdyaXRlKCdFVkVOVChjYW5wbGF5dGhyb3VnaCknKTsKKyAgICAgICAgZW5k
VGVzdCgpOworICAgIH0pOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRp
diBjbGFzcz0idmlkZW8iPgorICAgICAgICA8ZGl2IGNsYXNzPSJjdWUtYm94IiBzdHlsZT0ibGVm
dDowOyBib3R0b206MDsgdGV4dC1hbGlnbjogbGVmdCI+CisgICAgICAgICAgICA8c3BhbiBjbGFz
cz0iY3VlIj5BYm92ZTwvc3Bhbj48YnI+CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3VlIj5M
ZWZ0PC9zcGFuPgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY3VlLWJveCIg
c3R5bGU9InJpZ2h0OjA7IGJvdHRvbTowOyB0ZXh0LWFsaWduOiByaWdodCI+CisgICAgICAgICAg
ICA8c3BhbiBjbGFzcz0iY3VlIj5BYm92ZTwvc3Bhbj48YnI+CisgICAgICAgICAgICA8c3BhbiBj
bGFzcz0iY3VlIj5SaWdodDwvc3Bhbj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMtbGVmdC1yaWdo
dC5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2std2VidnR0LXNuYXAtdG8tbGlu
ZXMtbGVmdC1yaWdodC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5ODk3ZGZlNTMwMDdiMzQwMThmYmNmOGY1
YjczNGJmMzdjYzJiMWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFj
ay90cmFjay13ZWJ2dHQtc25hcC10by1saW5lcy1sZWZ0LXJpZ2h0Lmh0bWwKQEAgLTAsMCArMSwz
OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT50cmFjay13
ZWJ2dHQtc25hcC10by1saW5lcy1sZWZ0LXJpZ2h0PC90aXRsZT4KKyAgICA8c3R5bGU+CisgICAg
ICAgIGh0bWwgeyBvdmVyZmxvdzpoaWRkZW4gfQorICAgICAgICBib2R5IHsgbWFyZ2luOjAgfQor
ICAgICAgICA6OmN1ZSB7CisgICAgICAgICAgICBmb250LWZhbWlseTogQWhlbSwgc2Fucy1zZXJp
ZjsKKyAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsKKyAgICAgICAgICAgIGJhY2tncm91bmQt
Y29sb3I6IGJsYWNrOworICAgICAgICAgICAgY29sb3I6IGdyZWVuOworICAgICAgICB9CisgICAg
PC9zdHlsZT4KKyAgICA8c2NyaXB0PnZhciByZXF1aXJlUGl4ZWxEdW1wID0gdHJ1ZTs8L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAg
d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBhc3luYyBldmVudCA9PiB7CisgICAgICAg
IGZpbmRNZWRpYUVsZW1lbnQoKTsKKworICAgICAgICBydW4oYHZpZGVvLnF1ZXJ5U2VsZWN0b3Io
InRyYWNrIikuc3JjID0gImNhcHRpb25zLXdlYnZ0dC9zbmFwLXRvLWxpbmVzLWxlZnQtYW5kLXJp
Z2h0LnZ0dCJgKTsKKyAgICAgICAgcnVuKGB2aWRlby50ZXh0VHJhY2tzWzBdLm1vZGUgPSAic2hv
d2luZyJgKTsKKyAgICAgICAgYXdhaXQgd2FpdEZvcih2aWRlby5xdWVyeVNlbGVjdG9yKCd0cmFj
aycpLCAnbG9hZCcpOworCisgICAgICAgIHJ1bihgdmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgi
dmlkZW8iLCAidzNjL3RyYWNrL3dlYnZ0dC9tZWRpYS93aGl0ZSIpYCk7CisgICAgICAgIGF3YWl0
IHdhaXRGb3IodmlkZW8sICdjYW5wbGF5dGhyb3VnaCcpOworCisgICAgICAgIGVuZFRlc3QoKTsK
KyAgICB9KTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDx2aWRlbz4KKyAg
ICAgICAgPHRyYWNrIGlkPSJ0ZXN0VHJhY2siIGtpbmQ9ImNhcHRpb25zIiBkZWZhdWx0PgorICAg
IDwvdmlkZW8+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>
<flag name="commit-queue"
          id="471433"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446101</attachid>
            <date>2021-12-06 17:02:16 -0800</date>
            <delta_ts>2021-12-07 08:29:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233901-20211206170215.patch</filename>
            <type>text/plain</type>
            <size>29731</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2Mjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODM3N2M1MGVlZjE1OGUz
YTM3YjQ5N2U1NzdhZmQzMmUxNGEwZWM5ZS4uNDE5ZTA2NmIyYWY5ZTNiNzYxYjU5NmJlMmY3ZjNk
MWJkZTBjNmI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIxLTEyLTA2ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtWVFRdIEZpeCB2YXJpb3Vz
IGlzc3VlcyB3aXRoIGNvbXBsaWNhdGVkIHJlbmRlcmluZyBvZiBWVFQgY3VlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzOTAxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL3RyYWNr
L3RyYWNrLXdlYnZ0dC1uby1zbmFwLXRvLWxpbmVzLW92ZXJsYXAuaHRtbAorICAgICAgICAgICAg
ICAgbWVkaWEvdHJhY2svdHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMtaW5saW5lLXN0eWxlLmh0
bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRvLWxpbmVz
LWxlZnQtcmlnaHQuaHRtbAorCisgICAgICAgIFdoZW4gcG9zaXRpb25pbmcgVlRUIGN1ZXMsIHRo
ZSBzcGVjIHJlcXVpcmVzIFVBcyB0byBhdm9pZCBjb2xsaXNpb25zIGJldHdlZW4gY3VlcworICAg
ICAgICBieSBkZXRlY3RpbmcgdGhhdCB0d28gY3VlcyBvdmVybGFwIGVhY2ggb3RoZXIuIEhvd2V2
ZXIsIFdlYktpdCdzIGltcGxlbWVudGF0aW9uCisgICAgICAgIGxvb2tzIGZvciBjb2xsaXNpb25z
IGJldHdlZW4gbm9uLWRpc3BsYXlpbmcgcG9ydGlvbnMgb2YgdGhlIGN1ZXM7IG5hbWVseSB0aGUg
CisgICAgICAgIDo6LXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWRpc3BsYXkgZWxlbWVudCwgd2hp
Y2ggaXMgdXNlZCB0byBwb3NpdGlvbiB0aGUgZGlzcGxheWluZworICAgICAgICBwb3J0aW9uIG9m
IHRoZSBjdWUuIEluc3RlYWQsIHRoZSBVQSBzaG91bGQgbG9vayBmb3IgY29sbGlzaW9ucyBiZXR3
ZWVuIHRoZSAKKyAgICAgICAgOjotd2Via2l0LW1lZGlhLXRleHQtdHJhY2stZGlzcGxheS1iYWNr
ZHJvcCBlbGVtZW50LCB3aGljaCBob2xkcyB0aGUgYmFja2dyb3VuZAorICAgICAgICBvZiB0aGUg
Y3VlLCBpZiBwcmVzZW50LgorCisgICAgICAgIEFkZCBhIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRv
IHJldHJpZXZlIHRoZSBiYWNrZHJvcCBlbGVtZW50LCBhbmQgYW5vdGhlciB0byByZXRyaWV2ZQor
ICAgICAgICB0aGUgY3VlIGl0c2VsZi4KKworICAgICAgICBBZGQgY2FzdCBtYWNyb3MgZm9yIFJl
bmRlclZUVEN1ZSB0byBhbGxvdyBkb3duY2FzdDw+aW5nLiBVc2UgdGhpcyBtYWNybyB0byByZXRy
aWV2ZQorICAgICAgICBvdGhlciBjdWVzJ3MgYmFja2Ryb3AgZWxlbWVudHMgZm9yIGNvbGxpc2lv
biBhdm9pZGFuY2UuCisKKyAgICAgICAgVlRUQ3VlQm94OjphcHBseUNTU1Byb3BlcnRpZXMoKSBo
YWQgYSBzZWN0aW9uIGZvciBtb3ZpbmcgY3VlcyBpbnRvIHBsYWNlIHRoYXQgaXMgZW50aXJlbHkK
KyAgICAgICAgdW5uZWVkZWQgaWYgVlRUQ3VlOjpnZXRDU1NQb3NpdGlvbigpIHJldHVybnMgdGhl
IHByZS1jYWxjdWxhdGVkIG1fZGlzcGxheVBvc2l0aW9uLgorCisgICAgICAgIFJlbmRlclZUVEN1
ZTo6aW5pdGlhbGl6ZUxheW91dFBhcmFtZXRlcnMoKSBpcyBhIGNhcmVmdWwgaW1wbGVtZW50YXRp
b24gb2YgdGhlIHNwZWNpZmljYXRpb24sCisgICAgICAgIGFjY3VyYXRlbHkgbGF5b3V0IG91dCBj
dWVzJyBpbml0aWFsIHBvc2l0aW9uIHNvIHRoYXQgdGhlIHRleHQgcnVuIGlzIGV4YWN0bHkgYXQg
dGhlCisgICAgICAgIGJvdHRvbSBvZiB0aGUgY29udGVudCBib3guIEhvd2V2ZXIsIGlmIHRoZSBj
dWUgaGFzIGEgYm9yZGVyLCBwYWRkaW5nLCBvciBleHRyYSBoZWlnaHQsCisgICAgICAgIHRoaXMg
d2lsbCByZXN1bHQgaW4gdGhlIGN1ZSBiZWluZyBwdXNoZWQgb3V0c2lkZSB0aGUgY29udGVudCBi
b3guIFRvIGFjY291bnQgZm9yIHRoaXMsCisgICAgICAgIGFkanVzdCB0aGUgaW5pdGFsIGxheW91
dCBwYXJhbWV0ZXIgYnkgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgY3VlIHRleHQgc2l6ZSBh
bmQgdGhlCisgICAgICAgIGJhY2tkcm9wIGVsZW1lbnQgc2l6ZS4KKworICAgICAgICBSZW5kZXJW
VFRDdWU6OmxheW91dCgpIHdpbGwgY3JlYXRlIGEgTGF5b3V0U3RhdGVNYWludGFpbmVyLCB3aGlj
aCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YKKyAgICAgICAgbGF5b3V0IG1hY2hpbmVyeSBkdXJp
bmcgdGhlIGxheW91dCBpdHNlbGYuIEhvd2V2ZXIsIGNlcnRhaW4gY2hpbGQgcmVuZGVyZXJzIGdl
dCBkcmFtYXRpY2FsbHkKKyAgICAgICAgaW5jb3JyZWN0IHJlc3VsdHMgZm9yIGFic29sdXRlQm91
bmRpbmdSZWN0KCkgdW5sZXNzIHRoZSBtYWludGFpbmVyIGV4cGxpY2l0bHkgc2V0cyBkaXNhYmxl
U3RhdGUuCisKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZUVEN1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWVFRDdWVCb3g6OmFwcGx5Q1NTUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpW
VFRDdWU6OmdldENTU1Bvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZUVEN1
ZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck9iamVjdDo6aXNSZW5kZXJWVFRDdWUgY29uc3QpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJWVFRDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVlRUQ3VlOjps
YXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVlRUQ3VlOjppbml0aWFsaXplTGF5b3V0
UGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWVFRDdWU6OmlzT3V0c2lkZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWVFRDdWU6Om92ZXJsYXBwaW5nT2JqZWN0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZUVEN1ZTo6b3ZlcmxhcHBpbmdPYmpl
Y3RGb3JSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZUVEN1ZTo6bW92ZUlm
TmVjZXNzYXJ5VG9LZWVwV2l0aGluQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clZUVEN1ZTo6ZmluZE5vbk92ZXJsYXBwaW5nUG9zaXRpb24gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVlRUQ3VlOjpyZXBvc2l0aW9uR2VuZXJpY0N1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJWVFRDdWU6OmJhY2tkcm9wQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclZUVEN1ZTo6Y3VlQm94IGNvbnN0KToKKwogMjAyMS0xMC0yMiAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYW4gZXhwZXJpbWVudGFsIHRyYWNr
Q29uZmlndXJhdGlvbiBhY2Nlc3NvciBvbiBBdWRpb1RyYWNrICYgVmlkZW9UcmFjay4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAppbmRleCA5NTdlYjhjNTgxNTEwM2YzNGU4ODEyMDcx
MDQwMjZiNTMzOWQ2MDcyLi5jNTZkYzAyNGQ1YjAxNzU0M2E2M2M2ODM5ZmJmNmQ0ZWY4MDc0ZTFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCkBAIC0yMzYsMjEgKzIzNiw4IEBA
IHZvaWQgVlRUQ3VlQm94OjphcHBseUNTU1Byb3BlcnRpZXMoY29uc3QgSW50U2l6ZSYgdmlkZW9T
aXplKQogICAgIC8vIGFsaWdubWVudDoKICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1By
b3BlcnR5VGV4dEFsaWduLCBjdWUtPmdldENTU0FsaWdubWVudCgpKTsKICAgICAKLSAgICBpZiAo
IWN1ZS0+c25hcFRvTGluZXMoKSkgewotICAgICAgICAvLyAxMC4xMy4xIFNldCB1cCB4IGFuZCB5
OgotICAgICAgICAvLyBOb3RlOiB4IGFuZCB5IGFyZSBzZXQgdGhyb3VnaCB0aGUgQ1NTIGxlZnQg
YW5kIHRvcCBhYm92ZS4KLQotICAgICAgICAvLyAxMC4xMy4yIFBvc2l0aW9uIHRoZSBib3hlcyBp
biBib3hlcyBzdWNoIHRoYXQgdGhlIHBvaW50IHglIGFsb25nIHRoZQotICAgICAgICAvLyB3aWR0
aCBvZiB0aGUgYm91bmRpbmcgYm94IG9mIHRoZSBib3hlcyBpbiBib3hlcyBpcyB4JSBvZiB0aGUg
d2F5Ci0gICAgICAgIC8vIGFjcm9zcyB0aGUgd2lkdGggb2YgdGhlIHZpZGVvJ3MgcmVuZGVyaW5n
IGFyZWEsIGFuZCB0aGUgcG9pbnQgeSUKLSAgICAgICAgLy8gYWxvbmcgdGhlIGhlaWdodCBvZiB0
aGUgYm91bmRpbmcgYm94IG9mIHRoZSBib3hlcyBpbiBib3hlcyBpcyB5JQotICAgICAgICAvLyBv
ZiB0aGUgd2F5IGFjcm9zcyB0aGUgaGVpZ2h0IG9mIHRoZSB2aWRlbydzIHJlbmRlcmluZyBhcmVh
LCB3aGlsZQotICAgICAgICAvLyBtYWludGFpbmluZyB0aGUgcmVsYXRpdmUgcG9zaXRpb25zIG9m
IHRoZSBib3hlcyBpbiBib3hlcyB0byBlYWNoCi0gICAgICAgIC8vIG90aGVyLgotICAgICAgICBz
ZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VHJhbnNmb3JtLCBtYWtlU3RyaW5nKCJ0
cmFuc2xhdGUoIiwgLXBvc2l0aW9uLmZpcnN0LCAiJSwgIiwgLXBvc2l0aW9uLnNlY29uZCwgIiUp
IikpOwotCisgICAgaWYgKCFjdWUtPnNuYXBUb0xpbmVzKCkpCiAgICAgICAgIHNldElubGluZVN0
eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCBDU1NWYWx1ZVByZSk7Ci0gICAgfQog
CiAgICAgLy8gTWFrZSBzdXJlIHNoYWRvdyBvciBzdHJva2UgaXMgbm90IGNsaXBwZWQuCiAgICAg
c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU92ZXJmbG93LCBDU1NWYWx1ZVZpc2li
bGUpOwpAQCAtMTMyMSw5ICsxMzA4LDYgQEAgaW50IFZUVEN1ZTo6Z2V0Q1NTU2l6ZSgpIGNvbnN0
CiAKIHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4gVlRUQ3VlOjpnZXRDU1NQb3NpdGlvbigpIGNv
bnN0CiB7Ci0gICAgaWYgKCFtX3NuYXBUb0xpbmVzKQotICAgICAgICByZXR1cm4gZ2V0UG9zaXRp
b25Db29yZGluYXRlcygpOwotCiAgICAgcmV0dXJuIG1fZGlzcGxheVBvc2l0aW9uOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9WVFRDdWUuaAppbmRleCA3NDk2YzIyOTFlYzBjOWRhYWFjNTYyMGY1
MjlkMjI2MTUyZDhiZjVlLi41NzVlZmM2OTY5ZWUyYmViN2Q5NzllYzNjYmRkOTdhODg0ZjViZWVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmgKQEAgLTI0NSw3ICsyNDUsNyBAQCBwcml2
YXRlOgogCiAgICAgQ1NTVmFsdWVJRCBtX2Rpc3BsYXlEaXJlY3Rpb24geyBDU1NWYWx1ZUx0ciB9
OwogICAgIGludCBtX2Rpc3BsYXlTaXplIHsgMCB9OwotICAgIHN0ZDo6cGFpcjxmbG9hdCwgZmxv
YXQ+IG1fZGlzcGxheVBvc2l0aW9uOworICAgIHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IG1fZGlz
cGxheVBvc2l0aW9uIHsgdW5kZWZpbmVkUG9zaXRpb24sIHVuZGVmaW5lZFBvc2l0aW9uIH07CiAK
ICAgICBNZWRpYVRpbWUgbV9vcmlnaW5hbFN0YXJ0VGltZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5oCmluZGV4IGQ0OTk4Nzg3MmVmMzQxMDNhYzBlODI0ZDcxZjM5NGM2
ZWJjZTk3ZDMuLmQ0Y2ZiZTM0YzM4ZTgwNjE4Y2E3ZWM1MzExODg5MzA4NmZhNzdlMTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTI2OSw2ICsyNjksNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vo
b2xkZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCBib29sIGlzUmVu
ZGVyU2Nyb2xsYmFyUGFydCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIGlzUmVuZGVyVlRUQ3VlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIGJvb2wg
aXNEb2N1bWVudEVsZW1lbnRSZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIGRvY3VtZW50KCkuZG9j
dW1lbnRFbGVtZW50KCkgPT0gJm1fbm9kZTsgfQogICAgIGJvb2wgaXNCb2R5KCkgY29uc3QgeyBy
ZXR1cm4gbm9kZSgpICYmIG5vZGUoKS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmJvZHlUYWcpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuY3BwCmluZGV4IDViYWU4ZWZl
N2E4ZmM4MTYyMmIyMGU4OGE3ZmViNWEyY2I0ZmVlYzQuLmMyMTIwMzAxZGY0MzFkNWQ0MTFlY2Q5
YzM5NWJhYTU2ZDg1NGIxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWVFRDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRD
dWUuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgUmVuZGVyVlRUQ3VlOjpsYXlvdXQoKQogICAg
IGlmICghbV9jdWUtPnJlZ2lvbklkKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBMYXlvdXRTdGF0ZU1haW50YWluZXIgc3RhdGVQdXNoZXIoKnRoaXMsIGxvY2F0aW9uT2Zmc2V0
KCksIGhhc1RyYW5zZm9ybSgpIHx8IGhhc1JlZmxlY3Rpb24oKSB8fCBzdHlsZSgpLmlzRmxpcHBl
ZEJsb2Nrc1dyaXRpbmdNb2RlKCkpOworICAgIExheW91dFN0YXRlTWFpbnRhaW5lciBzdGF0ZVB1
c2hlcigqdGhpcywgbG9jYXRpb25PZmZzZXQoKSwgdHJ1ZSk7CiAKICAgICBpZiAobV9jdWUtPmN1
ZVR5cGUoKT09IFRleHRUcmFja0N1ZTo6V2ViVlRUKSB7CiAgICAgICAgIGlmIChtX2N1ZS0+c25h
cFRvTGluZXMoKSkKQEAgLTc5LDEyICs3OSw3IEBAIGJvb2wgUmVuZGVyVlRUQ3VlOjppbml0aWFs
aXplTGF5b3V0UGFyYW1ldGVycyhMZWdhY3lJbmxpbmVGbG93Qm94KiYgZmlyc3RMaW5lQm94CiAK
ICAgICBSZW5kZXJCbG9jayogcGFyZW50QmxvY2sgPSBjb250YWluaW5nQmxvY2soKTsKIAotICAg
IC8vIGZpcnN0Q2hpbGQoKSByZXR1cm5zIHRoZSB3cmFwcGluZyAoYmFja2Ryb3ApIDxkaXY+LiBU
aGUgY3VlIG9iamVjdCBpcwotICAgIC8vIHRoZSA8ZGl2PidzIGZpcnN0IGNoaWxkLgotICAgIFJl
bmRlck9iamVjdCYgZmlyc3RDaGlsZCA9ICp0aGlzLT5maXJzdENoaWxkKCk7Ci0gICAgUmVuZGVy
RWxlbWVudCYgYmFja2Ryb3BFbGVtZW50ID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oZmlyc3RD
aGlsZCk7Ci0gICAgCi0gICAgZmlyc3RMaW5lQm94ID0gZG93bmNhc3Q8UmVuZGVySW5saW5lPigq
YmFja2Ryb3BFbGVtZW50LmZpcnN0Q2hpbGQoKSkuZmlyc3RMaW5lQm94KCk7CisgICAgZmlyc3RM
aW5lQm94ID0gY3VlQm94KCkuZmlyc3RMaW5lQm94KCk7CiAgICAgaWYgKCFmaXJzdExpbmVCb3gp
CiAgICAgICAgIGZpcnN0TGluZUJveCA9IHRoaXMtPmZpcnN0Um9vdEJveCgpOwogCkBAIC05Miw2
ICs4NywxOSBAQCBib29sIFJlbmRlclZUVEN1ZTo6aW5pdGlhbGl6ZUxheW91dFBhcmFtZXRlcnMo
TGVnYWN5SW5saW5lRmxvd0JveComIGZpcnN0TGluZUJveAogICAgIC8vICAgIFZlcnRpY2FsOiBM
ZXQgc3RlcCBiZSB0aGUgd2lkdGggb2YgdGhlIGZpcnN0IGxpbmUgYm94IGluIGJveGVzLgogICAg
IHN0ZXAgPSBtX2N1ZS0+Z2V0V3JpdGluZ0RpcmVjdGlvbigpID09IFZUVEN1ZTo6SG9yaXpvbnRh
bCA/IGZpcnN0TGluZUJveC0+aGVpZ2h0KCkgOiBmaXJzdExpbmVCb3gtPndpZHRoKCk7CiAKKyAg
ICAvLyBOb3RlOiB0aGUgcHJldmlvdXMgcnVsZXMgaW4gaW5pdGlhbGl6ZUxheW91dFBhcmFtZXRl
cnMoKSBvbmx5IGFjY291bnQgZm9yCisgICAgLy8gdGhlIGhlaWdodCBvZiB0aGUgbGluZSBib3hl
cyBjb250YWluZWQgd2l0aGluIHRoZSBjdWUsIGFuZCBub3QgdGhlIGN1ZSdzIGhlaWdodAorICAg
IC8vIG5vciBpdHMgcGFkZGluZywgbm9yIGl0cyBib3JkZXJzLiBJZ25vcmluZyB0aGVzZSB3aWxs
IGxlYWQgdG8gZXJyb3JzCisgICAgLy8gaW4gdGhlIGluaXRpYWwgcGxhY2VtZW50IG9mIGN1ZXMs
IGFzIHRoZSByZXN1bHRpbmcgcGxhY2VtZW50IHdpbGwgcmVzdWx0IGluCisgICAgLy8gdGhlIGN1
ZSBhbHdheXMgYmVpbmcgcGFydGlhbGx5IG91dHNpZGUgaXRzIGNvbnRhaW5pbmcgYmxvY2ssIHJh
dGhlciB0aGFuIGF0CisgICAgLy8gaXRzIGluaXRpYWwgcG9zaXRpb24uIENvcnJlY3QgdGhlIGlu
aXRpYWwgcG9zaXRpb24gYnkgc3VidHJhY3RpbmcgZnJvbQorICAgIC8vIHBvc2l0aW9uIHRoZSBk
aWZmZXJlbmNlIGJldHdlZW4gdGhlIHRoZSBsb2dpY2FsSGVpZ2h0IG9mIHRoZSBjdWUgYW5kIGl0
cworICAgIC8vIGZpcnN0IGxpbmUgYm94LgorICAgIGF1dG8mIGJhY2tkcm9wQm94ID0gdGhpcy0+
YmFja2Ryb3BCb3goKTsKKyAgICBhdXRvIGxvZ2ljYWxIZWlnaHREZWx0YSA9IGJhY2tkcm9wQm94
LmxvZ2ljYWxIZWlnaHQoKSAtIGZpcnN0TGluZUJveC0+bG9naWNhbEhlaWdodCgpOworICAgIGlm
IChsb2dpY2FsSGVpZ2h0RGVsdGEgPiAwKQorICAgICAgICBzdGVwICs9IGxvZ2ljYWxIZWlnaHRE
ZWx0YTsKKwogICAgIC8vIDIuIElmIHN0ZXAgaXMgemVybywgdGhlbiBqdW1wIHRvIHRoZSBzdGVw
IGxhYmVsZWQgZG9uZSBwb3NpdGlvbmluZyBiZWxvdy4KICAgICBpZiAoIXN0ZXApCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTE0Niw3ICsxNTQsNyBAQCB2b2lkIFJlbmRlclZUVEN1ZTo6cGxh
Y2VCb3hJbkRlZmF1bHRQb3NpdGlvbihMYXlvdXRVbml0IHBvc2l0aW9uLCBib29sJiBzd2l0Y2hl
ZAogCiBib29sIFJlbmRlclZUVEN1ZTo6aXNPdXRzaWRlKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
IXJlY3RJc1dpdGhpbkNvbnRhaW5lcihhYnNvbHV0ZUNvbnRlbnRCb3goKSk7CisgICAgcmV0dXJu
ICFyZWN0SXNXaXRoaW5Db250YWluZXIoYmFja2Ryb3BCb3goKS5hYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdCgpKTsKIH0KIAogYm9vbCBSZW5kZXJWVFRDdWU6OnJlY3RJc1dpdGhpbkNvbnRhaW5lcihj
b25zdCBJbnRSZWN0JiByZWN0KSBjb25zdApAQCAtMTYwLDE4ICsxNjgsMjAgQEAgYm9vbCBSZW5k
ZXJWVFRDdWU6OmlzT3ZlcmxhcHBpbmcoKSBjb25zdAogICAgIHJldHVybiBvdmVybGFwcGluZ09i
amVjdCgpOwogfQogCi1SZW5kZXJPYmplY3QqIFJlbmRlclZUVEN1ZTo6b3ZlcmxhcHBpbmdPYmpl
Y3QoKSBjb25zdAorUmVuZGVyVlRUQ3VlKiBSZW5kZXJWVFRDdWU6Om92ZXJsYXBwaW5nT2JqZWN0
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gb3ZlcmxhcHBpbmdPYmplY3RGb3JSZWN0KGFic29sdXRl
Qm91bmRpbmdCb3hSZWN0KCkpOworICAgIHJldHVybiBvdmVybGFwcGluZ09iamVjdEZvclJlY3Qo
YmFja2Ryb3BCb3goKS5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsKIH0KIAotUmVuZGVyT2Jq
ZWN0KiBSZW5kZXJWVFRDdWU6Om92ZXJsYXBwaW5nT2JqZWN0Rm9yUmVjdChjb25zdCBJbnRSZWN0
JiByZWN0KSBjb25zdAorUmVuZGVyVlRUQ3VlKiBSZW5kZXJWVFRDdWU6Om92ZXJsYXBwaW5nT2Jq
ZWN0Rm9yUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KSBjb25zdAogewotICAgIGZvciAoUmVuZGVy
T2JqZWN0KiBib3ggPSBwcmV2aW91c1NpYmxpbmcoKTsgYm94OyBib3ggPSBib3gtPnByZXZpb3Vz
U2libGluZygpKSB7Ci0gICAgICAgIEludFJlY3QgYm94UmVjdCA9IGJveC0+YWJzb2x1dGVCb3Vu
ZGluZ0JveFJlY3QoKTsKKyAgICBmb3IgKFJlbmRlck9iamVjdCogc2libGluZyA9IHByZXZpb3Vz
U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+cHJldmlvdXNTaWJsaW5nKCkp
IHsKKyAgICAgICAgYXV0byogcHJldmlvdXNDdWUgPSBkb3duY2FzdDxSZW5kZXJWVFRDdWU+KHNp
YmxpbmcpOworICAgICAgICBpZiAoIXByZXZpb3VzQ3VlKQorICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgaWYgKHJlY3QuaW50ZXJzZWN0cyhib3hSZWN0KSkKLSAgICAgICAgICAgIHJl
dHVybiBib3g7CisgICAgICAgIGlmIChyZWN0LmludGVyc2VjdHMocHJldmlvdXNDdWUtPmJhY2tk
cm9wQm94KCkuYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSkpCisgICAgICAgICAgICByZXR1cm4g
cHJldmlvdXNDdWU7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CkBAIC0yNDMsNyArMjUzLDcgQEAg
Ym9vbCBSZW5kZXJWVFRDdWU6OnN3aXRjaERpcmVjdGlvbihib29sJiBzd2l0Y2hlZCwgTGF5b3V0
VW5pdCYgc3RlcCkKIHZvaWQgUmVuZGVyVlRUQ3VlOjptb3ZlSWZOZWNlc3NhcnlUb0tlZXBXaXRo
aW5Db250YWluZXIoKQogewogICAgIEludFJlY3QgY29udGFpbmVyUmVjdCA9IGNvbnRhaW5pbmdC
bG9jaygpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOwotICAgIEludFJlY3QgY3VlUmVjdCA9
IGFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CisgICAgSW50UmVjdCBjdWVSZWN0ID0gYmFja2Ry
b3BCb3goKS5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOwogCiAgICAgaW50IHRvcE92ZXJmbG93
ID0gY3VlUmVjdC55KCkgLSBjb250YWluZXJSZWN0LnkoKTsKICAgICBpbnQgYm90dG9tT3ZlcmZs
b3cgPSBjb250YWluZXJSZWN0Lm1heFkoKSAtIGN1ZVJlY3QubWF4WSgpOwpAQCAtMjc0LDE1ICsy
ODQsMTUgQEAgYm9vbCBSZW5kZXJWVFRDdWU6OmZpbmROb25PdmVybGFwcGluZ1Bvc2l0aW9uKGlu
dCYgbmV3WCwgaW50JiBuZXdZKSBjb25zdAogewogICAgIG5ld1ggPSB4KCk7CiAgICAgbmV3WSA9
IHkoKTsKLSAgICBJbnRSZWN0IHNyY1JlY3QgPSBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOwor
ICAgIEludFJlY3Qgc3JjUmVjdCA9IGJhY2tkcm9wQm94KCkuYWJzb2x1dGVCb3VuZGluZ0JveFJl
Y3QoKTsKICAgICBJbnRSZWN0IGRlc3RSZWN0ID0gc3JjUmVjdDsKIAogICAgIC8vIE1vdmUgdGhl
IGJveCB1cCwgbG9va2luZyBmb3IgYSBub24tb3ZlcmxhcHBpbmcgcG9zaXRpb246Ci0gICAgd2hp
bGUgKFJlbmRlck9iamVjdCogYm94ID0gb3ZlcmxhcHBpbmdPYmplY3RGb3JSZWN0KGRlc3RSZWN0
KSkgeworICAgIHdoaWxlIChSZW5kZXJWVFRDdWUqIGN1ZSA9IG92ZXJsYXBwaW5nT2JqZWN0Rm9y
UmVjdChkZXN0UmVjdCkpIHsKICAgICAgICAgaWYgKG1fY3VlLT5nZXRXcml0aW5nRGlyZWN0aW9u
KCkgPT0gVlRUQ3VlOjpIb3Jpem9udGFsKQotICAgICAgICAgICAgZGVzdFJlY3Quc2V0WShib3gt
PmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkueSgpIC0gZGVzdFJlY3QuaGVpZ2h0KCkpOworICAg
ICAgICAgICAgZGVzdFJlY3Quc2V0WShjdWUtPmJhY2tkcm9wQm94KCkuYWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3QoKS55KCkgLSBkZXN0UmVjdC5oZWlnaHQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGRlc3RSZWN0LnNldFgoYm94LT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpLngoKSAt
IGRlc3RSZWN0LndpZHRoKCkpOworICAgICAgICAgICAgZGVzdFJlY3Quc2V0WChjdWUtPmJhY2tk
cm9wQm94KCkuYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKS54KCkgLSBkZXN0UmVjdC53aWR0aCgp
KTsKICAgICB9CiAKICAgICBpZiAocmVjdElzV2l0aGluQ29udGFpbmVyKGRlc3RSZWN0KSkgewpA
QCAtMjk0LDExICszMDQsMTEgQEAgYm9vbCBSZW5kZXJWVFRDdWU6OmZpbmROb25PdmVybGFwcGlu
Z1Bvc2l0aW9uKGludCYgbmV3WCwgaW50JiBuZXdZKSBjb25zdAogICAgIGRlc3RSZWN0ID0gc3Jj
UmVjdDsKIAogICAgIC8vIE1vdmUgdGhlIGJveCBkb3duLCBsb29raW5nIGZvciBhIG5vbi1vdmVy
bGFwcGluZyBwb3NpdGlvbjoKLSAgICB3aGlsZSAoUmVuZGVyT2JqZWN0KiBib3ggPSBvdmVybGFw
cGluZ09iamVjdEZvclJlY3QoZGVzdFJlY3QpKSB7CisgICAgd2hpbGUgKFJlbmRlclZUVEN1ZSog
Y3VlID0gb3ZlcmxhcHBpbmdPYmplY3RGb3JSZWN0KGRlc3RSZWN0KSkgewogICAgICAgICBpZiAo
bV9jdWUtPmdldFdyaXRpbmdEaXJlY3Rpb24oKSA9PSBWVFRDdWU6Okhvcml6b250YWwpCi0gICAg
ICAgICAgICBkZXN0UmVjdC5zZXRZKGJveC0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKS5tYXhZ
KCkpOworICAgICAgICAgICAgZGVzdFJlY3Quc2V0WShjdWUtPmJhY2tkcm9wQm94KCkuYWJzb2x1
dGVCb3VuZGluZ0JveFJlY3QoKS5tYXhZKCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBk
ZXN0UmVjdC5zZXRYKGJveC0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKS5tYXhYKCkpOworICAg
ICAgICAgICAgZGVzdFJlY3Quc2V0WChjdWUtPmJhY2tkcm9wQm94KCkuYWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3QoKS5tYXhYKCkpOwogICAgIH0KIAogICAgIGlmIChyZWN0SXNXaXRoaW5Db250YWlu
ZXIoZGVzdFJlY3QpKSB7CkBAIC0zNDUsMTIgKzM1NSw3IEBAIHZvaWQgUmVuZGVyVlRUQ3VlOjpy
ZXBvc2l0aW9uR2VuZXJpY0N1ZSgpCiB7CiAgICAgQVNTRVJUKGZpcnN0Q2hpbGQoKSk7CiAKLSAg
ICAvLyBmaXJzdENoaWxkKCkgcmV0dXJucyB0aGUgd3JhcHBpbmcgKGJhY2tkcm9wKSA8ZGl2Pi4g
VGhlIGN1ZSBvYmplY3QgaXMKLSAgICAvLyB0aGUgPGRpdj4ncyBmaXJzdCBjaGlsZC4KLSAgICBS
ZW5kZXJPYmplY3QmIGZpcnN0Q2hpbGQgPSAqdGhpcy0+Zmlyc3RDaGlsZCgpOwotICAgIFJlbmRl
ckVsZW1lbnQmIGJhY2tkcm9wRWxlbWVudCA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KGZpcnN0
Q2hpbGQpOwotICAgIAotICAgIExlZ2FjeUlubGluZUZsb3dCb3gqIGZpcnN0TGluZUJveCA9IGRv
d25jYXN0PFJlbmRlcklubGluZT4oKmJhY2tkcm9wRWxlbWVudC5maXJzdENoaWxkKCkpLmZpcnN0
TGluZUJveCgpOworICAgIExlZ2FjeUlubGluZUZsb3dCb3gqIGZpcnN0TGluZUJveCA9IGN1ZUJv
eCgpLmZpcnN0TGluZUJveCgpOwogICAgIGlmIChkb3duY2FzdDxUZXh0VHJhY2tDdWVHZW5lcmlj
PigqbV9jdWUpLnVzZURlZmF1bHRQb3NpdGlvbigpICYmIGZpcnN0TGluZUJveCkgewogICAgICAg
ICBMYXlvdXRVbml0IHBhcmVudFdpZHRoID0gY29udGFpbmluZ0Jsb2NrKCktPmxvZ2ljYWxXaWR0
aCgpOwogICAgICAgICBMYXlvdXRVbml0IHdpZHRoIHsgZmlyc3RMaW5lQm94LT53aWR0aCgpIH07
CkBAIC0zODQsNiArMzg5LDIxIEBAIHZvaWQgUmVuZGVyVlRUQ3VlOjpyZXBvc2l0aW9uQ3VlU25h
cFRvTGluZXNOb3RTZXQoKQogICAgIHNldFkoeSk7CiB9CiAKK1JlbmRlckJsb2NrRmxvdyYgUmVu
ZGVyVlRUQ3VlOjpiYWNrZHJvcEJveCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGZpcnN0Q2hpbGQo
KSk7CisKKyAgICAvLyBmaXJzdENoaWxkKCkgcmV0dXJucyB0aGUgd3JhcHBpbmcgKGJhY2tkcm9w
KSA8ZGl2Pi4gVGhlIGN1ZSBvYmplY3QgaXMKKyAgICAvLyB0aGUgPGRpdj4ncyBmaXJzdCBjaGls
ZC4KKyAgICBSZW5kZXJPYmplY3QmIGZpcnN0Q2hpbGQgPSAqdGhpcy0+Zmlyc3RDaGlsZCgpOwor
ICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KGZpcnN0Q2hpbGQpOworfQorCitS
ZW5kZXJJbmxpbmUmIFJlbmRlclZUVEN1ZTo6Y3VlQm94KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ZG93bmNhc3Q8UmVuZGVySW5saW5lPigqYmFja2Ryb3BCb3goKS5maXJzdENoaWxkKCkpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZUVEN1ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclZUVEN1ZS5oCmluZGV4IDJjNTU3YjZkZTYwODU2OGRmODE2YzRhY2IzMTk3MTE5NTZh
OTY0MjQuLjYxZjllODE2NjYzYjc5ZjE3NjkyMzA4MzNkNTZhZGQwZDNhNmE4YTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmgKQEAgLTQyLDEzICs0MiwxNSBAQCBwdWJs
aWM6CiAgICAgUmVuZGVyVlRUQ3VlKFZUVEN1ZUJveCYsIFJlbmRlclN0eWxlJiYpOwogCiBwcml2
YXRlOgorICAgIGJvb2wgaXNSZW5kZXJWVFRDdWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVl
OyB9CisKICAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc091dHNpZGUo
KSBjb25zdDsKICAgICBib29sIHJlY3RJc1dpdGhpbkNvbnRhaW5lcihjb25zdCBJbnRSZWN0Jikg
Y29uc3Q7CiAgICAgYm9vbCBpc092ZXJsYXBwaW5nKCkgY29uc3Q7Ci0gICAgUmVuZGVyT2JqZWN0
KiBvdmVybGFwcGluZ09iamVjdCgpIGNvbnN0OwotICAgIFJlbmRlck9iamVjdCogb3ZlcmxhcHBp
bmdPYmplY3RGb3JSZWN0KGNvbnN0IEludFJlY3QmKSBjb25zdDsKKyAgICBSZW5kZXJWVFRDdWUq
IG92ZXJsYXBwaW5nT2JqZWN0KCkgY29uc3Q7CisgICAgUmVuZGVyVlRUQ3VlKiBvdmVybGFwcGlu
Z09iamVjdEZvclJlY3QoY29uc3QgSW50UmVjdCYpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkU3dp
dGNoRGlyZWN0aW9uKExlZ2FjeUlubGluZUZsb3dCb3gqLCBMYXlvdXRVbml0KSBjb25zdDsKIAog
ICAgIHZvaWQgbW92ZUJveGVzQnlTdGVwKExheW91dFVuaXQpOwpAQCAtNjIsMTAgKzY0LDE1IEBA
IHByaXZhdGU6CiAgICAgdm9pZCByZXBvc2l0aW9uQ3VlU25hcFRvTGluZXNOb3RTZXQoKTsKICAg
ICB2b2lkIHJlcG9zaXRpb25HZW5lcmljQ3VlKCk7CiAKKyAgICBSZW5kZXJCbG9ja0Zsb3cmIGJh
Y2tkcm9wQm94KCkgY29uc3Q7CisgICAgUmVuZGVySW5saW5lJiBjdWVCb3goKSBjb25zdDsKKwog
ICAgIFZUVEN1ZSogbV9jdWU7CiAgICAgRmxvYXRQb2ludCBtX2ZhbGxiYWNrUG9zaXRpb247CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfUkVO
REVSX09CSkVDVChSZW5kZXJWVFRDdWUsIGlzUmVuZGVyVlRUQ3VlKCkpCisKICNlbmRpZiAvLyBF
TkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTk3ODY0ZjVkMjY1NWZkM2EyZDAwYTBlMjVkYjNhMzhhYmU3
NTllZC4uMGIzNzhiMTJmZDJhYzAzYWVlNDYxZGZkMjcyOTlkN2MzZDUxNjg1YyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIwIEBACisyMDIxLTEyLTA2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29t
PgorCisgICAgICAgIFtWVFRdIEZpeCB2YXJpb3VzIGlzc3VlcyB3aXRoIGNvbXBsaWNhdGVkIHJl
bmRlcmluZyBvZiBWVFQgY3VlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMzOTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBtZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvbm8tc25hcC10by1saW5l
cy1vdmVybGFwLnZ0dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdHJhY2svY2FwdGlvbnMtd2Vi
dnR0L3NuYXAtdG8tbGluZXMtaW5saW5lLXN0eWxlLnZ0dDogQWRkZWQuCisgICAgICAgICogbWVk
aWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L3NuYXAtdG8tbGluZXMtbGVmdC1hbmQtcmlnaHQudnR0
OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay13ZWJ2dHQtbm8tc25hcC10by1s
aW5lcy1vdmVybGFwLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3RyYWNr
L3RyYWNrLXdlYnZ0dC1uby1zbmFwLXRvLWxpbmVzLW92ZXJsYXAuaHRtbDogQWRkZWQuCisgICAg
ICAgICogbWVkaWEvdHJhY2svdHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMtaW5saW5lLXN0eWxl
LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0
dC1zbmFwLXRvLWxpbmVzLWlubGluZS1zdHlsZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRp
YS90cmFjay90cmFjay13ZWJ2dHQtc25hcC10by1saW5lcy1sZWZ0LXJpZ2h0LWV4cGVjdGVkLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRvLWxp
bmVzLWxlZnQtcmlnaHQuaHRtbDogQWRkZWQuCisKIDIwMjEtMTAtMjIgIEplciBOb2JsZSAgPGpl
ci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGFuIGV4cGVyaW1lbnRhbCB0cmFja0Nv
bmZpZ3VyYXRpb24gYWNjZXNzb3Igb24gQXVkaW9UcmFjayAmIFZpZGVvVHJhY2suCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvbm8tc25hcC10by1s
aW5lcy1vdmVybGFwLnZ0dCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0
dC9uby1zbmFwLXRvLWxpbmVzLW92ZXJsYXAudnR0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3ZjZmNDRmNGQ5YTdl
MTJkMGM2ZWRmZGUyYmFlODE0NGU5YmUyODUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9tZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvbm8tc25hcC10by1saW5lcy1vdmVybGFwLnZ0
dApAQCAtMCwwICsxLDMzIEBACitXRUJWVFQKKworMQorMDA6MDA6MDAuMDAwIC0tPiAwMDowMDow
MC41MDAgYWxpZ246bGVmdCBsaW5lOjAlCitMZWZ0CisKKzIKKzAwOjAwOjAwLjAwMCAtLT4gMDA6
MDA6MDAuNTAwIGFsaWduOnJpZ2h0IGxpbmU6MCUKK1JpZ2h0CisKKzMKKzAwOjAwOjAwLjAwMCAt
LT4gMDA6MDA6MDAuNTAwIGFsaWduOmxlZnQgbGluZTowJQorQmVsb3cKKworNAorMDA6MDA6MDAu
MDAwIC0tPiAwMDowMDowMC41MDAgYWxpZ246cmlnaHQgbGluZTowJQorQmVsb3cKKworMQorMDA6
MDA6MDAuMDAwIC0tPiAwMDowMDowMC41MDAgYWxpZ246bGVmdCBsaW5lOjEwMCUKK0xlZnQKKwor
MgorMDA6MDA6MDAuMDAwIC0tPiAwMDowMDowMC41MDAgYWxpZ246cmlnaHQgbGluZToxMDAlCitS
aWdodAorCiszCiswMDowMDowMC4wMDAgLS0+IDAwOjAwOjAwLjUwMCBhbGlnbjpsZWZ0IGxpbmU6
MTAwJQorQWJvdmUKKworNAorMDA6MDA6MDAuMDAwIC0tPiAwMDowMDowMC41MDAgYWxpZ246cmln
aHQgbGluZToxMDAlCitBYm92ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2sv
Y2FwdGlvbnMtd2VidnR0L3NuYXAtdG8tbGluZXMtaW5saW5lLXN0eWxlLnZ0dCBiL0xheW91dFRl
c3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zbmFwLXRvLWxpbmVzLWlubGluZS1zdHls
ZS52dHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uY2ZjNTY1NmE0MWI4OWVjYTgwMTUxMTc0YTU0ODAyNDNmNjYxZjM1
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdl
YnZ0dC9zbmFwLXRvLWxpbmVzLWlubGluZS1zdHlsZS52dHQKQEAgLTAsMCArMSwyMCBAQAorV0VC
VlRUCisKK1NUWUxFCis6OmN1ZSguZG91YmxlSGVpZ2h0KSB7IGZvbnQtc2l6ZTogMjAwJTsgYmFj
a2dyb3VuZC1jb2xvcjogYmxhY2sgfQorCisxCiswMDowMDowMC4wMDAgLS0+IDAwOjAwOjAwLjUw
MCBhbGlnbjpsZWZ0Cis8Yy5kb3VibGVIZWlnaHQ+TGVmdDwvYz4KKworMgorMDA6MDA6MDAuMDAw
IC0tPiAwMDowMDowMC41MDAgYWxpZ246cmlnaHQgcG9zaXRpb246MTAwJQorPGMuZG91YmxlSGVp
Z2h0PlJpZ2h0PC9jPgorCiszCiswMDowMDowMC4wMDAgLS0+IDAwOjAwOjAwLjUwMCBhbGlnbjps
ZWZ0Cis8Yy5kb3VibGVIZWlnaHQ+QWJvdmU8L2M+CisKKzQKKzAwOjAwOjAwLjAwMCAtLT4gMDA6
MDA6MDAuNTAwIGFsaWduOnJpZ2h0IHBvc2l0aW9uOjEwMCUKKzxjLmRvdWJsZUhlaWdodD5BYm92
ZTwvYz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0
dC9zbmFwLXRvLWxpbmVzLWxlZnQtYW5kLXJpZ2h0LnZ0dCBiL0xheW91dFRlc3RzL21lZGlhL3Ry
YWNrL2NhcHRpb25zLXdlYnZ0dC9zbmFwLXRvLWxpbmVzLWxlZnQtYW5kLXJpZ2h0LnZ0dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zMDk2OWUwZGRiMTU2Y2IzZjY0MTQ2NzJkMzI2MTRhOWNlOWUwYmNlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L3NuYXAt
dG8tbGluZXMtbGVmdC1hbmQtcmlnaHQudnR0CkBAIC0wLDAgKzEsMTcgQEAKK1dFQlZUVAorCisx
CiswMDowMDowMC4wMDAgLS0+IDAwOjAwOjAwLjUwMCBhbGlnbjpsZWZ0CitMZWZ0CisKKzIKKzAw
OjAwOjAwLjAwMCAtLT4gMDA6MDA6MDAuNTAwIGFsaWduOnJpZ2h0IHBvc2l0aW9uOjEwMCUKK1Jp
Z2h0CisKKzMKKzAwOjAwOjAwLjAwMCAtLT4gMDA6MDA6MDAuNTAwIGFsaWduOmxlZnQKK0Fib3Zl
CisKKzQKKzAwOjAwOjAwLjAwMCAtLT4gMDA6MDA6MDAuNTAwIGFsaWduOnJpZ2h0IHBvc2l0aW9u
OjEwMCUKK0Fib3ZlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay13
ZWJ2dHQtbm8tc25hcC10by1saW5lcy1vdmVybGFwLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9tZWRpYS90cmFjay90cmFjay13ZWJ2dHQtbm8tc25hcC10by1saW5lcy1vdmVybGFwLWV4cGVj
dGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjc3YjU1MzY0ZTA5OGUwMzU3YTE4MWQ4MGQ3YjMwNDMwNjFi
ZjMwMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdl
YnZ0dC1uby1zbmFwLXRvLWxpbmVzLW92ZXJsYXAtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDU4
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPnRyYWNrLXdl
YnZ0dC1uby1zbmFwLXRvLWxpbmVzLW92ZXJsYXA8L3RpdGxlPgorICAgIDxzdHlsZT4KKyAgICAg
ICAgLnZpZGVvIHsgCisgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAg
ICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICAgICAgICB3aWR0aDogMzIwcHg7CisgICAg
ICAgICAgICBoZWlnaHQ6IDI0MHB4OworICAgICAgICB9CisgICAgICAgIGh0bWwgeyBvdmVyZmxv
dzpoaWRkZW4gfQorICAgICAgICBib2R5IHsgbWFyZ2luOjAgfQorICAgICAgICAuY3VlLWJveCB7
CisgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgICAgICBmb250LXNpemU6
IDEycHg7CisgICAgICAgIH0KKyAgICAgICAgLmN1ZSB7CisgICAgICAgICAgICBmb250LWZhbWls
eTogQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNr
OworICAgICAgICAgICAgY29sb3I6IGdyZWVuOworICAgICAgICB9CisgICAgPC9zdHlsZT4KKyAg
ICA8c2NyaXB0PnZhciByZXF1aXJlUGl4ZWxEdW1wID0gdHJ1ZTs8L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4u
L21lZGlhLWZpbGUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgd2luZG93LmFkZEV2
ZW50TGlzdGVuZXIoJ2xvYWQnLCBhc3luYyBldmVudCA9PiB7CisgICAgICAgIGNvbnNvbGVXcml0
ZSgnUlVOKHZpZGVvLnF1ZXJ5U2VsZWN0b3IoInRyYWNrIikuc3JjID0gImNhcHRpb25zLXdlYnZ0
dC9uby1zbmFwLXRvLWxpbmVzLW92ZXJsYXAudnR0IiknKTsKKyAgICAgICAgY29uc29sZVdyaXRl
KCdSVU4odmlkZW8udGV4dFRyYWNrc1swXS5tb2RlID0gInNob3dpbmciKScpOworICAgICAgICBj
b25zb2xlV3JpdGUoJ0VWRU5UKGxvYWQpJyk7CisgICAgICAgIGNvbnNvbGVXcml0ZSgnUlVOKHZp
ZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgInczYy90cmFjay93ZWJ2dHQvbWVkaWEv
d2hpdGUiKSknKTsKKyAgICAgICAgY29uc29sZVdyaXRlKCdFVkVOVChjYW5wbGF5dGhyb3VnaCkn
KTsKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0pOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+CisgICAgPGRpdiBjbGFzcz0idmlkZW8iPgorICAgICAgICA8ZGl2IGNsYXNzPSJjdWUt
Ym94IiBzdHlsZT0ibGVmdDowOyB0b3A6MDsgdGV4dC1hbGlnbjogbGVmdDsiPgorICAgICAgICAg
ICAgPHNwYW4gY2xhc3M9ImN1ZSI+TGVmdDwvc3Bhbj48YnI+CisgICAgICAgICAgICA8c3BhbiBj
bGFzcz0iY3VlIj5CZWxvdzwvc3Bhbj4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXYgY2xh
c3M9ImN1ZS1ib3giIHN0eWxlPSJyaWdodDowOyB0b3A6MDsgdGV4dC1hbGlnbjogcmlnaHQiPgor
ICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImN1ZSI+UmlnaHQ8L3NwYW4+PGJyPgorICAgICAgICAg
ICAgPHNwYW4gY2xhc3M9ImN1ZSI+QmVsb3c8L3NwYW4+CisgICAgICAgIDwvZGl2PgorICAgICAg
ICA8ZGl2IGNsYXNzPSJjdWUtYm94IiBzdHlsZT0ibGVmdDowOyBib3R0b206MDsgdGV4dC1hbGln
bjogbGVmdCI+CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3VlIj5BYm92ZTwvc3Bhbj48YnI+
CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3VlIj5MZWZ0PC9zcGFuPgorICAgICAgICA8L2Rp
dj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY3VlLWJveCIgc3R5bGU9InJpZ2h0OjA7IGJvdHRvbTow
OyB0ZXh0LWFsaWduOiByaWdodCI+CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3VlIj5BYm92
ZTwvc3Bhbj48YnI+CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3VlIj5SaWdodDwvc3Bhbj4K
KyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJh
Y2std2VidnR0LW5vLXNuYXAtdG8tbGluZXMtb3ZlcmxhcC5odG1sIGIvTGF5b3V0VGVzdHMvbWVk
aWEvdHJhY2svdHJhY2std2VidnR0LW5vLXNuYXAtdG8tbGluZXMtb3ZlcmxhcC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjYyMzM0MGQ4NTU2NWMwNzY2NTBiMjM1MWFhMjhhNzMwNzIzM2NkZTkKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay13ZWJ2dHQtbm8tc25hcC10
by1saW5lcy1vdmVybGFwLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorCTx0aXRsZT50cmFjay13ZWJ2dHQtbm8tc25hcC10by1saW5lcy1vdmVy
bGFwPC90aXRsZT4KKwk8c3R5bGU+CisJCWh0bWwgeyBvdmVyZmxvdzpoaWRkZW4gfQorCQlib2R5
IHsgbWFyZ2luOjAgfQorCQk6OmN1ZSB7CisJCSAgICBmb250LWZhbWlseTogQWhlbSwgc2Fucy1z
ZXJpZjsKKwkJICAgIGZvbnQtc2l6ZTogMTJweDsKKwkJICAgIGJhY2tncm91bmQtY29sb3I6IGJs
YWNrOworCQkgICAgY29sb3I6IGdyZWVuOworCQl9CisJPC9zdHlsZT4KKwk8c2NyaXB0PnZhciBy
ZXF1aXJlUGl4ZWxEdW1wID0gdHJ1ZTs8L3NjcmlwdD4KKwk8c2NyaXB0IHNyYz0iLi4vdmlkZW8t
dGVzdC5qcyI+PC9zY3JpcHQ+CisJPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUuanMiPjwvc2Ny
aXB0PgorCTxzY3JpcHQ+CisJd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBhc3luYyBl
dmVudCA9PiB7CisJCWZpbmRNZWRpYUVsZW1lbnQoKTsKKworCQlydW4oYHZpZGVvLnF1ZXJ5U2Vs
ZWN0b3IoInRyYWNrIikuc3JjID0gImNhcHRpb25zLXdlYnZ0dC9uby1zbmFwLXRvLWxpbmVzLW92
ZXJsYXAudnR0ImApOworCQlydW4oYHZpZGVvLnRleHRUcmFja3NbMF0ubW9kZSA9ICJzaG93aW5n
ImApOworCQlhd2FpdCB3YWl0Rm9yKHZpZGVvLnF1ZXJ5U2VsZWN0b3IoJ3RyYWNrJyksICdsb2Fk
Jyk7CisKKwkJcnVuKGB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJ3M2MvdHJh
Y2svd2VidnR0L21lZGlhL3doaXRlIilgKTsKKwkJYXdhaXQgd2FpdEZvcih2aWRlbywgJ2NhbnBs
YXl0aHJvdWdoJyk7CisKKwkJZW5kVGVzdCgpOworCX0pOworCTwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+CisJPHZpZGVvPgorICAgICAgICA8dHJhY2sgaWQ9InRlc3RUcmFjayIga2luZD0iY2Fw
dGlvbnMiIGRlZmF1bHQ+CisJPC92aWRlbz4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFj
ay13ZWJ2dHQtc25hcC10by1saW5lcy1pbmxpbmUtc3R5bGUtZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRvLWxpbmVzLWlubGluZS1zdHls
ZS1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4OThlNWZjYzE0ZjNiNWE0NzEwMTUwN2RiYTdk
NTUzNTM3NjE2NWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90
cmFjay13ZWJ2dHQtc25hcC10by1saW5lcy1pbmxpbmUtc3R5bGUtZXhwZWN0ZWQuaHRtbApAQCAt
MCwwICsxLDUwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxl
PnRyYWNrLXdlYnZ0dC1zbmFwLXRvLWxpbmVzLWlubGluZS1zdHlsZTwvdGl0bGU+CisgICAgPHN0
eWxlPgorICAgICAgICAudmlkZW8geyAKKyAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKKyAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgICAgIHdpZHRoOiAz
MjBweDsKKyAgICAgICAgICAgIGhlaWdodDogMjQwcHg7CisgICAgICAgIH0KKyAgICAgICAgaHRt
bCB7IG92ZXJmbG93OmhpZGRlbiB9CisgICAgICAgIGJvZHkgeyBtYXJnaW46MCB9CisgICAgICAg
IC5jdWUtYm94IHsKKyAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgfQor
ICAgICAgICAuY3VlIHsKKyAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBBaGVtLCBzYW5zLXNlcmlm
OworICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7CisgICAgICAgICAgICBjb2xv
cjogZ3JlZW47CisgICAgICAgICAgICBmb250LXNpemU6IDI0cHg7CisgICAgICAgIH0KKyAgICA8
L3N0eWxlPgorICAgIDxzY3JpcHQ+dmFyIHJlcXVpcmVQaXhlbER1bXAgPSB0cnVlOzwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iLi4vbWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICB3
aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGFzeW5jIGV2ZW50ID0+IHsKKyAgICAgICAg
Y29uc29sZVdyaXRlKCdSVU4odmlkZW8ucXVlcnlTZWxlY3RvcigidHJhY2siKS5zcmMgPSAiY2Fw
dGlvbnMtd2VidnR0L3NuYXAtdG8tbGluZXMtaW5saW5lLXN0eWxlLnZ0dCIpJyk7CisgICAgICAg
IGNvbnNvbGVXcml0ZSgnUlVOKHZpZGVvLnRleHRUcmFja3NbMF0ubW9kZSA9ICJzaG93aW5nIikn
KTsKKyAgICAgICAgY29uc29sZVdyaXRlKCdFVkVOVChsb2FkKScpOworICAgICAgICBjb25zb2xl
V3JpdGUoJ1JVTih2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJ3M2MvdHJhY2sv
d2VidnR0L21lZGlhL3doaXRlIikpJyk7CisgICAgICAgIGNvbnNvbGVXcml0ZSgnRVZFTlQoY2Fu
cGxheXRocm91Z2gpJyk7CisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9KTsKKyAgICA8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgY2xhc3M9InZpZGVvIj4KKyAgICAgICAgPGRp
diBjbGFzcz0iY3VlLWJveCIgc3R5bGU9ImxlZnQ6MDsgYm90dG9tOjA7IHRleHQtYWxpZ246IGxl
ZnQiPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImN1ZSI+QWJvdmU8L3NwYW4+PGJyPgorICAg
ICAgICAgICAgPHNwYW4gY2xhc3M9ImN1ZSI+TGVmdDwvc3Bhbj4KKyAgICAgICAgPC9kaXY+Cisg
ICAgICAgIDxkaXYgY2xhc3M9ImN1ZS1ib3giIHN0eWxlPSJyaWdodDowOyBib3R0b206MDsgdGV4
dC1hbGlnbjogcmlnaHQiPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImN1ZSI+QWJvdmU8L3Nw
YW4+PGJyPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImN1ZSI+UmlnaHQ8L3NwYW4+CisgICAg
ICAgIDwvZGl2PgorICAgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdl
YnZ0dC1zbmFwLXRvLWxpbmVzLWlubGluZS1zdHlsZS5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEv
dHJhY2svdHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMtaW5saW5lLXN0eWxlLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTdjMWMzMzQ0YzIzZGExOTFmYzkwYjg3NDA3OTgwNDMzZGUzNGQzNAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRvLWxp
bmVzLWlubGluZS1zdHlsZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+dHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMtaW5s
aW5lLXN0eWxlPC90aXRsZT4KKyAgICA8c3R5bGU+CisgICAgICAgIGh0bWwgeyBvdmVyZmxvdzpo
aWRkZW4gfQorICAgICAgICBib2R5IHsgbWFyZ2luOjAgfQorICAgICAgICA6OmN1ZSB7CisgICAg
ICAgICAgICBmb250LWZhbWlseTogQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAgICAgICAgIGZvbnQt
c2l6ZTogMTJweDsKKyAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrOworICAgICAg
ICAgICAgY29sb3I6IGdyZWVuOworICAgICAgICB9CisgICAgPC9zdHlsZT4KKyAgICA8c2NyaXB0
PnZhciByZXF1aXJlUGl4ZWxEdW1wID0gdHJ1ZTs8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
Li4vdmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZp
bGUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVu
ZXIoJ2xvYWQnLCBhc3luYyBldmVudCA9PiB7CisgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsK
KworICAgICAgICBydW4oYHZpZGVvLnF1ZXJ5U2VsZWN0b3IoInRyYWNrIikuc3JjID0gImNhcHRp
b25zLXdlYnZ0dC9zbmFwLXRvLWxpbmVzLWlubGluZS1zdHlsZS52dHQiYCk7CisgICAgICAgIHJ1
bihgdmlkZW8udGV4dFRyYWNrc1swXS5tb2RlID0gInNob3dpbmciYCk7CisgICAgICAgIGF3YWl0
IHdhaXRGb3IodmlkZW8ucXVlcnlTZWxlY3RvcigndHJhY2snKSwgJ2xvYWQnKTsKKworICAgICAg
ICBydW4oYHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgInczYy90cmFjay93ZWJ2
dHQvbWVkaWEvd2hpdGUiKWApOworICAgICAgICBhd2FpdCB3YWl0Rm9yKHZpZGVvLCAnY2FucGxh
eXRocm91Z2gnKTsKKworICAgICAgICBlbmRUZXN0KCk7CisgICAgfSk7CisgICAgPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8dmlkZW8+CisgICAgICAgIDx0cmFjayBpZD0idGVzdFRy
YWNrIiBzcmM9ImNhcHRpb25zLXdlYnZ0dC9zbmFwLXRvLWxpbmVzLWlubGluZS1zdHlsZS52dHQi
IGtpbmQ9ImNhcHRpb25zIiBkZWZhdWx0PgorICAgIDwvdmlkZW8+Cis8L2JvZHk+Cis8L2h0bWw+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVk
aWEvdHJhY2svdHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMtbGVmdC1yaWdodC1leHBlY3RlZC5o
dG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMt
bGVmdC1yaWdodC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1NGZjMGJkZjczMTVkZTAxMGI5
NDgzZWM0OTJiYzI1NGM4ZGI4OTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRp
YS90cmFjay90cmFjay13ZWJ2dHQtc25hcC10by1saW5lcy1sZWZ0LXJpZ2h0LWV4cGVjdGVkLmh0
bWwKQEAgLTAsMCArMSw1MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAg
IDx0aXRsZT50cmFjay13ZWJ2dHQtc25hcC10by1saW5lcy1sZWZ0LXJpZ2h0PC90aXRsZT4KKyAg
ICA8c3R5bGU+CisgICAgICAgIC52aWRlbyB7IAorICAgICAgICAgICAgZGlzcGxheTogaW5saW5l
LWJsb2NrOworICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICAgICAgd2lk
dGg6IDMyMHB4OworICAgICAgICAgICAgaGVpZ2h0OiAyNDBweDsKKyAgICAgICAgfQorICAgICAg
ICBodG1sIHsgb3ZlcmZsb3c6aGlkZGVuIH0KKyAgICAgICAgYm9keSB7IG1hcmdpbjowIH0KKyAg
ICAgICAgLmN1ZS1ib3ggeworICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAg
ICAgICAgZm9udC1zaXplOiAxMnB4OworICAgICAgICB9CisgICAgICAgIC5jdWUgeworICAgICAg
ICAgICAgZm9udC1mYW1pbHk6IEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgICAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiBibGFjazsKKyAgICAgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICAgICAgfQor
ICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdD52YXIgcmVxdWlyZVBpeGVsRHVtcCA9IHRydWU7PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSIuLi9tZWRpYS1maWxlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0Pgor
ICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgYXN5bmMgZXZlbnQgPT4geworICAg
ICAgICBjb25zb2xlV3JpdGUoJ1JVTih2aWRlby5xdWVyeVNlbGVjdG9yKCJ0cmFjayIpLnNyYyA9
ICJjYXB0aW9ucy13ZWJ2dHQvc25hcC10by1saW5lcy1sZWZ0LWFuZC1yaWdodC52dHQiKScpOwor
ICAgICAgICBjb25zb2xlV3JpdGUoJ1JVTih2aWRlby50ZXh0VHJhY2tzWzBdLm1vZGUgPSAic2hv
d2luZyIpJyk7CisgICAgICAgIGNvbnNvbGVXcml0ZSgnRVZFTlQobG9hZCknKTsKKyAgICAgICAg
Y29uc29sZVdyaXRlKCdSVU4odmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAidzNj
L3RyYWNrL3dlYnZ0dC9tZWRpYS93aGl0ZSIpKScpOworICAgICAgICBjb25zb2xlV3JpdGUoJ0VW
RU5UKGNhbnBsYXl0aHJvdWdoKScpOworICAgICAgICBlbmRUZXN0KCk7CisgICAgfSk7CisgICAg
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGNsYXNzPSJ2aWRlbyI+CisgICAg
ICAgIDxkaXYgY2xhc3M9ImN1ZS1ib3giIHN0eWxlPSJsZWZ0OjA7IGJvdHRvbTowOyB0ZXh0LWFs
aWduOiBsZWZ0Ij4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjdWUiPkFib3ZlPC9zcGFuPjxi
cj4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjdWUiPkxlZnQ8L3NwYW4+CisgICAgICAgIDwv
ZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJjdWUtYm94IiBzdHlsZT0icmlnaHQ6MDsgYm90dG9t
OjA7IHRleHQtYWxpZ246IHJpZ2h0Ij4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjdWUiPkFi
b3ZlPC9zcGFuPjxicj4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjdWUiPlJpZ2h0PC9zcGFu
PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90
cmFjay13ZWJ2dHQtc25hcC10by1saW5lcy1sZWZ0LXJpZ2h0Lmh0bWwgYi9MYXlvdXRUZXN0cy9t
ZWRpYS90cmFjay90cmFjay13ZWJ2dHQtc25hcC10by1saW5lcy1sZWZ0LXJpZ2h0Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjk4OTdkZmU1MzAwN2IzNDAxOGZiY2Y4ZjViNzM0YmYzN2NjMmIxZgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRv
LWxpbmVzLWxlZnQtcmlnaHQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPnRyYWNrLXdlYnZ0dC1zbmFwLXRvLWxpbmVzLWxl
ZnQtcmlnaHQ8L3RpdGxlPgorICAgIDxzdHlsZT4KKyAgICAgICAgaHRtbCB7IG92ZXJmbG93Omhp
ZGRlbiB9CisgICAgICAgIGJvZHkgeyBtYXJnaW46MCB9CisgICAgICAgIDo6Y3VlIHsKKyAgICAg
ICAgICAgIGZvbnQtZmFtaWx5OiBBaGVtLCBzYW5zLXNlcmlmOworICAgICAgICAgICAgZm9udC1z
aXplOiAxMnB4OworICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7CisgICAgICAg
ICAgICBjb2xvcjogZ3JlZW47CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQ+
dmFyIHJlcXVpcmVQaXhlbER1bXAgPSB0cnVlOzwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIu
Li92aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vbWVkaWEtZmls
ZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cignbG9hZCcsIGFzeW5jIGV2ZW50ID0+IHsKKyAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOwor
CisgICAgICAgIHJ1bihgdmlkZW8ucXVlcnlTZWxlY3RvcigidHJhY2siKS5zcmMgPSAiY2FwdGlv
bnMtd2VidnR0L3NuYXAtdG8tbGluZXMtbGVmdC1hbmQtcmlnaHQudnR0ImApOworICAgICAgICBy
dW4oYHZpZGVvLnRleHRUcmFja3NbMF0ubW9kZSA9ICJzaG93aW5nImApOworICAgICAgICBhd2Fp
dCB3YWl0Rm9yKHZpZGVvLnF1ZXJ5U2VsZWN0b3IoJ3RyYWNrJyksICdsb2FkJyk7CisKKyAgICAg
ICAgcnVuKGB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJ3M2MvdHJhY2svd2Vi
dnR0L21lZGlhL3doaXRlIilgKTsKKyAgICAgICAgYXdhaXQgd2FpdEZvcih2aWRlbywgJ2NhbnBs
YXl0aHJvdWdoJyk7CisKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0pOworICAgIDwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHZpZGVvPgorICAgICAgICA8dHJhY2sgaWQ9InRlc3RU
cmFjayIga2luZD0iY2FwdGlvbnMiIGRlZmF1bHQ+CisgICAgPC92aWRlbz4KKzwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446176</attachid>
            <date>2021-12-07 08:29:39 -0800</date>
            <delta_ts>2021-12-07 10:35:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233901-20211207082938.patch</filename>
            <type>text/plain</type>
            <size>31812</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2Mjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODM3N2M1MGVlZjE1OGUz
YTM3YjQ5N2U1NzdhZmQzMmUxNGEwZWM5ZS4uNDE5ZTA2NmIyYWY5ZTNiNzYxYjU5NmJlMmY3ZjNk
MWJkZTBjNmI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIxLTEyLTA2ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtWVFRdIEZpeCB2YXJpb3Vz
IGlzc3VlcyB3aXRoIGNvbXBsaWNhdGVkIHJlbmRlcmluZyBvZiBWVFQgY3VlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzOTAxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL3RyYWNr
L3RyYWNrLXdlYnZ0dC1uby1zbmFwLXRvLWxpbmVzLW92ZXJsYXAuaHRtbAorICAgICAgICAgICAg
ICAgbWVkaWEvdHJhY2svdHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMtaW5saW5lLXN0eWxlLmh0
bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRvLWxpbmVz
LWxlZnQtcmlnaHQuaHRtbAorCisgICAgICAgIFdoZW4gcG9zaXRpb25pbmcgVlRUIGN1ZXMsIHRo
ZSBzcGVjIHJlcXVpcmVzIFVBcyB0byBhdm9pZCBjb2xsaXNpb25zIGJldHdlZW4gY3VlcworICAg
ICAgICBieSBkZXRlY3RpbmcgdGhhdCB0d28gY3VlcyBvdmVybGFwIGVhY2ggb3RoZXIuIEhvd2V2
ZXIsIFdlYktpdCdzIGltcGxlbWVudGF0aW9uCisgICAgICAgIGxvb2tzIGZvciBjb2xsaXNpb25z
IGJldHdlZW4gbm9uLWRpc3BsYXlpbmcgcG9ydGlvbnMgb2YgdGhlIGN1ZXM7IG5hbWVseSB0aGUg
CisgICAgICAgIDo6LXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWRpc3BsYXkgZWxlbWVudCwgd2hp
Y2ggaXMgdXNlZCB0byBwb3NpdGlvbiB0aGUgZGlzcGxheWluZworICAgICAgICBwb3J0aW9uIG9m
IHRoZSBjdWUuIEluc3RlYWQsIHRoZSBVQSBzaG91bGQgbG9vayBmb3IgY29sbGlzaW9ucyBiZXR3
ZWVuIHRoZSAKKyAgICAgICAgOjotd2Via2l0LW1lZGlhLXRleHQtdHJhY2stZGlzcGxheS1iYWNr
ZHJvcCBlbGVtZW50LCB3aGljaCBob2xkcyB0aGUgYmFja2dyb3VuZAorICAgICAgICBvZiB0aGUg
Y3VlLCBpZiBwcmVzZW50LgorCisgICAgICAgIEFkZCBhIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRv
IHJldHJpZXZlIHRoZSBiYWNrZHJvcCBlbGVtZW50LCBhbmQgYW5vdGhlciB0byByZXRyaWV2ZQor
ICAgICAgICB0aGUgY3VlIGl0c2VsZi4KKworICAgICAgICBBZGQgY2FzdCBtYWNyb3MgZm9yIFJl
bmRlclZUVEN1ZSB0byBhbGxvdyBkb3duY2FzdDw+aW5nLiBVc2UgdGhpcyBtYWNybyB0byByZXRy
aWV2ZQorICAgICAgICBvdGhlciBjdWVzJ3MgYmFja2Ryb3AgZWxlbWVudHMgZm9yIGNvbGxpc2lv
biBhdm9pZGFuY2UuCisKKyAgICAgICAgVlRUQ3VlQm94OjphcHBseUNTU1Byb3BlcnRpZXMoKSBo
YWQgYSBzZWN0aW9uIGZvciBtb3ZpbmcgY3VlcyBpbnRvIHBsYWNlIHRoYXQgaXMgZW50aXJlbHkK
KyAgICAgICAgdW5uZWVkZWQgaWYgVlRUQ3VlOjpnZXRDU1NQb3NpdGlvbigpIHJldHVybnMgdGhl
IHByZS1jYWxjdWxhdGVkIG1fZGlzcGxheVBvc2l0aW9uLgorCisgICAgICAgIFJlbmRlclZUVEN1
ZTo6aW5pdGlhbGl6ZUxheW91dFBhcmFtZXRlcnMoKSBpcyBhIGNhcmVmdWwgaW1wbGVtZW50YXRp
b24gb2YgdGhlIHNwZWNpZmljYXRpb24sCisgICAgICAgIGFjY3VyYXRlbHkgbGF5b3V0IG91dCBj
dWVzJyBpbml0aWFsIHBvc2l0aW9uIHNvIHRoYXQgdGhlIHRleHQgcnVuIGlzIGV4YWN0bHkgYXQg
dGhlCisgICAgICAgIGJvdHRvbSBvZiB0aGUgY29udGVudCBib3guIEhvd2V2ZXIsIGlmIHRoZSBj
dWUgaGFzIGEgYm9yZGVyLCBwYWRkaW5nLCBvciBleHRyYSBoZWlnaHQsCisgICAgICAgIHRoaXMg
d2lsbCByZXN1bHQgaW4gdGhlIGN1ZSBiZWluZyBwdXNoZWQgb3V0c2lkZSB0aGUgY29udGVudCBi
b3guIFRvIGFjY291bnQgZm9yIHRoaXMsCisgICAgICAgIGFkanVzdCB0aGUgaW5pdGFsIGxheW91
dCBwYXJhbWV0ZXIgYnkgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgY3VlIHRleHQgc2l6ZSBh
bmQgdGhlCisgICAgICAgIGJhY2tkcm9wIGVsZW1lbnQgc2l6ZS4KKworICAgICAgICBSZW5kZXJW
VFRDdWU6OmxheW91dCgpIHdpbGwgY3JlYXRlIGEgTGF5b3V0U3RhdGVNYWludGFpbmVyLCB3aGlj
aCBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YKKyAgICAgICAgbGF5b3V0IG1hY2hpbmVyeSBkdXJp
bmcgdGhlIGxheW91dCBpdHNlbGYuIEhvd2V2ZXIsIGNlcnRhaW4gY2hpbGQgcmVuZGVyZXJzIGdl
dCBkcmFtYXRpY2FsbHkKKyAgICAgICAgaW5jb3JyZWN0IHJlc3VsdHMgZm9yIGFic29sdXRlQm91
bmRpbmdSZWN0KCkgdW5sZXNzIHRoZSBtYWludGFpbmVyIGV4cGxpY2l0bHkgc2V0cyBkaXNhYmxl
U3RhdGUuCisKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZUVEN1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWVFRDdWVCb3g6OmFwcGx5Q1NTUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpW
VFRDdWU6OmdldENTU1Bvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1ZUVEN1
ZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck9iamVjdDo6aXNSZW5kZXJWVFRDdWUgY29uc3QpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJWVFRDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVlRUQ3VlOjps
YXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVlRUQ3VlOjppbml0aWFsaXplTGF5b3V0
UGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWVFRDdWU6OmlzT3V0c2lkZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWVFRDdWU6Om92ZXJsYXBwaW5nT2JqZWN0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZUVEN1ZTo6b3ZlcmxhcHBpbmdPYmpl
Y3RGb3JSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZUVEN1ZTo6bW92ZUlm
TmVjZXNzYXJ5VG9LZWVwV2l0aGluQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clZUVEN1ZTo6ZmluZE5vbk92ZXJsYXBwaW5nUG9zaXRpb24gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVlRUQ3VlOjpyZXBvc2l0aW9uR2VuZXJpY0N1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJWVFRDdWU6OmJhY2tkcm9wQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclZUVEN1ZTo6Y3VlQm94IGNvbnN0KToKKwogMjAyMS0xMC0yMiAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYW4gZXhwZXJpbWVudGFsIHRyYWNr
Q29uZmlndXJhdGlvbiBhY2Nlc3NvciBvbiBBdWRpb1RyYWNrICYgVmlkZW9UcmFjay4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNwcAppbmRleCA5NTdlYjhjNTgxNTEwM2YzNGU4ODEyMDcx
MDQwMjZiNTMzOWQ2MDcyLi5jNTZkYzAyNGQ1YjAxNzU0M2E2M2M2ODM5ZmJmNmQ0ZWY4MDc0ZTFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCkBAIC0yMzYsMjEgKzIzNiw4IEBA
IHZvaWQgVlRUQ3VlQm94OjphcHBseUNTU1Byb3BlcnRpZXMoY29uc3QgSW50U2l6ZSYgdmlkZW9T
aXplKQogICAgIC8vIGFsaWdubWVudDoKICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1By
b3BlcnR5VGV4dEFsaWduLCBjdWUtPmdldENTU0FsaWdubWVudCgpKTsKICAgICAKLSAgICBpZiAo
IWN1ZS0+c25hcFRvTGluZXMoKSkgewotICAgICAgICAvLyAxMC4xMy4xIFNldCB1cCB4IGFuZCB5
OgotICAgICAgICAvLyBOb3RlOiB4IGFuZCB5IGFyZSBzZXQgdGhyb3VnaCB0aGUgQ1NTIGxlZnQg
YW5kIHRvcCBhYm92ZS4KLQotICAgICAgICAvLyAxMC4xMy4yIFBvc2l0aW9uIHRoZSBib3hlcyBp
biBib3hlcyBzdWNoIHRoYXQgdGhlIHBvaW50IHglIGFsb25nIHRoZQotICAgICAgICAvLyB3aWR0
aCBvZiB0aGUgYm91bmRpbmcgYm94IG9mIHRoZSBib3hlcyBpbiBib3hlcyBpcyB4JSBvZiB0aGUg
d2F5Ci0gICAgICAgIC8vIGFjcm9zcyB0aGUgd2lkdGggb2YgdGhlIHZpZGVvJ3MgcmVuZGVyaW5n
IGFyZWEsIGFuZCB0aGUgcG9pbnQgeSUKLSAgICAgICAgLy8gYWxvbmcgdGhlIGhlaWdodCBvZiB0
aGUgYm91bmRpbmcgYm94IG9mIHRoZSBib3hlcyBpbiBib3hlcyBpcyB5JQotICAgICAgICAvLyBv
ZiB0aGUgd2F5IGFjcm9zcyB0aGUgaGVpZ2h0IG9mIHRoZSB2aWRlbydzIHJlbmRlcmluZyBhcmVh
LCB3aGlsZQotICAgICAgICAvLyBtYWludGFpbmluZyB0aGUgcmVsYXRpdmUgcG9zaXRpb25zIG9m
IHRoZSBib3hlcyBpbiBib3hlcyB0byBlYWNoCi0gICAgICAgIC8vIG90aGVyLgotICAgICAgICBz
ZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VHJhbnNmb3JtLCBtYWtlU3RyaW5nKCJ0
cmFuc2xhdGUoIiwgLXBvc2l0aW9uLmZpcnN0LCAiJSwgIiwgLXBvc2l0aW9uLnNlY29uZCwgIiUp
IikpOwotCisgICAgaWYgKCFjdWUtPnNuYXBUb0xpbmVzKCkpCiAgICAgICAgIHNldElubGluZVN0
eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXaGl0ZVNwYWNlLCBDU1NWYWx1ZVByZSk7Ci0gICAgfQog
CiAgICAgLy8gTWFrZSBzdXJlIHNoYWRvdyBvciBzdHJva2UgaXMgbm90IGNsaXBwZWQuCiAgICAg
c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eU92ZXJmbG93LCBDU1NWYWx1ZVZpc2li
bGUpOwpAQCAtMTMyMSw5ICsxMzA4LDYgQEAgaW50IFZUVEN1ZTo6Z2V0Q1NTU2l6ZSgpIGNvbnN0
CiAKIHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4gVlRUQ3VlOjpnZXRDU1NQb3NpdGlvbigpIGNv
bnN0CiB7Ci0gICAgaWYgKCFtX3NuYXBUb0xpbmVzKQotICAgICAgICByZXR1cm4gZ2V0UG9zaXRp
b25Db29yZGluYXRlcygpOwotCiAgICAgcmV0dXJuIG1fZGlzcGxheVBvc2l0aW9uOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9WVFRDdWUuaAppbmRleCA3NDk2YzIyOTFlYzBjOWRhYWFjNTYyMGY1
MjlkMjI2MTUyZDhiZjVlLi41NzVlZmM2OTY5ZWUyYmViN2Q5NzllYzNjYmRkOTdhODg0ZjViZWVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmgKQEAgLTI0NSw3ICsyNDUsNyBAQCBwcml2
YXRlOgogCiAgICAgQ1NTVmFsdWVJRCBtX2Rpc3BsYXlEaXJlY3Rpb24geyBDU1NWYWx1ZUx0ciB9
OwogICAgIGludCBtX2Rpc3BsYXlTaXplIHsgMCB9OwotICAgIHN0ZDo6cGFpcjxmbG9hdCwgZmxv
YXQ+IG1fZGlzcGxheVBvc2l0aW9uOworICAgIHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IG1fZGlz
cGxheVBvc2l0aW9uIHsgdW5kZWZpbmVkUG9zaXRpb24sIHVuZGVmaW5lZFBvc2l0aW9uIH07CiAK
ICAgICBNZWRpYVRpbWUgbV9vcmlnaW5hbFN0YXJ0VGltZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5oCmluZGV4IGQ0OTk4Nzg3MmVmMzQxMDNhYzBlODI0ZDcxZjM5NGM2
ZWJjZTk3ZDMuLmQ0Y2ZiZTM0YzM4ZTgwNjE4Y2E3ZWM1MzExODg5MzA4NmZhNzdlMTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTI2OSw2ICsyNjksNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vo
b2xkZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCBib29sIGlzUmVu
ZGVyU2Nyb2xsYmFyUGFydCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIGlzUmVuZGVyVlRUQ3VlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIGJvb2wg
aXNEb2N1bWVudEVsZW1lbnRSZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIGRvY3VtZW50KCkuZG9j
dW1lbnRFbGVtZW50KCkgPT0gJm1fbm9kZTsgfQogICAgIGJvb2wgaXNCb2R5KCkgY29uc3QgeyBy
ZXR1cm4gbm9kZSgpICYmIG5vZGUoKS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmJvZHlUYWcpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuY3BwCmluZGV4IDViYWU4ZWZl
N2E4ZmM4MTYyMmIyMGU4OGE3ZmViNWEyY2I0ZmVlYzQuLmMyMTIwMzAxZGY0MzFkNWQ0MTFlY2Q5
YzM5NWJhYTU2ZDg1NGIxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJWVFRDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRD
dWUuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgUmVuZGVyVlRUQ3VlOjpsYXlvdXQoKQogICAg
IGlmICghbV9jdWUtPnJlZ2lvbklkKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBMYXlvdXRTdGF0ZU1haW50YWluZXIgc3RhdGVQdXNoZXIoKnRoaXMsIGxvY2F0aW9uT2Zmc2V0
KCksIGhhc1RyYW5zZm9ybSgpIHx8IGhhc1JlZmxlY3Rpb24oKSB8fCBzdHlsZSgpLmlzRmxpcHBl
ZEJsb2Nrc1dyaXRpbmdNb2RlKCkpOworICAgIExheW91dFN0YXRlTWFpbnRhaW5lciBzdGF0ZVB1
c2hlcigqdGhpcywgbG9jYXRpb25PZmZzZXQoKSwgdHJ1ZSk7CiAKICAgICBpZiAobV9jdWUtPmN1
ZVR5cGUoKT09IFRleHRUcmFja0N1ZTo6V2ViVlRUKSB7CiAgICAgICAgIGlmIChtX2N1ZS0+c25h
cFRvTGluZXMoKSkKQEAgLTc5LDEyICs3OSw3IEBAIGJvb2wgUmVuZGVyVlRUQ3VlOjppbml0aWFs
aXplTGF5b3V0UGFyYW1ldGVycyhMZWdhY3lJbmxpbmVGbG93Qm94KiYgZmlyc3RMaW5lQm94CiAK
ICAgICBSZW5kZXJCbG9jayogcGFyZW50QmxvY2sgPSBjb250YWluaW5nQmxvY2soKTsKIAotICAg
IC8vIGZpcnN0Q2hpbGQoKSByZXR1cm5zIHRoZSB3cmFwcGluZyAoYmFja2Ryb3ApIDxkaXY+LiBU
aGUgY3VlIG9iamVjdCBpcwotICAgIC8vIHRoZSA8ZGl2PidzIGZpcnN0IGNoaWxkLgotICAgIFJl
bmRlck9iamVjdCYgZmlyc3RDaGlsZCA9ICp0aGlzLT5maXJzdENoaWxkKCk7Ci0gICAgUmVuZGVy
RWxlbWVudCYgYmFja2Ryb3BFbGVtZW50ID0gZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4oZmlyc3RD
aGlsZCk7Ci0gICAgCi0gICAgZmlyc3RMaW5lQm94ID0gZG93bmNhc3Q8UmVuZGVySW5saW5lPigq
YmFja2Ryb3BFbGVtZW50LmZpcnN0Q2hpbGQoKSkuZmlyc3RMaW5lQm94KCk7CisgICAgZmlyc3RM
aW5lQm94ID0gY3VlQm94KCkuZmlyc3RMaW5lQm94KCk7CiAgICAgaWYgKCFmaXJzdExpbmVCb3gp
CiAgICAgICAgIGZpcnN0TGluZUJveCA9IHRoaXMtPmZpcnN0Um9vdEJveCgpOwogCkBAIC05Miw2
ICs4NywxOSBAQCBib29sIFJlbmRlclZUVEN1ZTo6aW5pdGlhbGl6ZUxheW91dFBhcmFtZXRlcnMo
TGVnYWN5SW5saW5lRmxvd0JveComIGZpcnN0TGluZUJveAogICAgIC8vICAgIFZlcnRpY2FsOiBM
ZXQgc3RlcCBiZSB0aGUgd2lkdGggb2YgdGhlIGZpcnN0IGxpbmUgYm94IGluIGJveGVzLgogICAg
IHN0ZXAgPSBtX2N1ZS0+Z2V0V3JpdGluZ0RpcmVjdGlvbigpID09IFZUVEN1ZTo6SG9yaXpvbnRh
bCA/IGZpcnN0TGluZUJveC0+aGVpZ2h0KCkgOiBmaXJzdExpbmVCb3gtPndpZHRoKCk7CiAKKyAg
ICAvLyBOb3RlOiB0aGUgcHJldmlvdXMgcnVsZXMgaW4gaW5pdGlhbGl6ZUxheW91dFBhcmFtZXRl
cnMoKSBvbmx5IGFjY291bnQgZm9yCisgICAgLy8gdGhlIGhlaWdodCBvZiB0aGUgbGluZSBib3hl
cyBjb250YWluZWQgd2l0aGluIHRoZSBjdWUsIGFuZCBub3QgdGhlIGN1ZSdzIGhlaWdodAorICAg
IC8vIG5vciBpdHMgcGFkZGluZywgbm9yIGl0cyBib3JkZXJzLiBJZ25vcmluZyB0aGVzZSB3aWxs
IGxlYWQgdG8gZXJyb3JzCisgICAgLy8gaW4gdGhlIGluaXRpYWwgcGxhY2VtZW50IG9mIGN1ZXMs
IGFzIHRoZSByZXN1bHRpbmcgcGxhY2VtZW50IHdpbGwgcmVzdWx0IGluCisgICAgLy8gdGhlIGN1
ZSBhbHdheXMgYmVpbmcgcGFydGlhbGx5IG91dHNpZGUgaXRzIGNvbnRhaW5pbmcgYmxvY2ssIHJh
dGhlciB0aGFuIGF0CisgICAgLy8gaXRzIGluaXRpYWwgcG9zaXRpb24uIENvcnJlY3QgdGhlIGlu
aXRpYWwgcG9zaXRpb24gYnkgc3VidHJhY3RpbmcgZnJvbQorICAgIC8vIHBvc2l0aW9uIHRoZSBk
aWZmZXJlbmNlIGJldHdlZW4gdGhlIHRoZSBsb2dpY2FsSGVpZ2h0IG9mIHRoZSBjdWUgYW5kIGl0
cworICAgIC8vIGZpcnN0IGxpbmUgYm94LgorICAgIGF1dG8mIGJhY2tkcm9wQm94ID0gdGhpcy0+
YmFja2Ryb3BCb3goKTsKKyAgICBhdXRvIGxvZ2ljYWxIZWlnaHREZWx0YSA9IGJhY2tkcm9wQm94
LmxvZ2ljYWxIZWlnaHQoKSAtIGZpcnN0TGluZUJveC0+bG9naWNhbEhlaWdodCgpOworICAgIGlm
IChsb2dpY2FsSGVpZ2h0RGVsdGEgPiAwKQorICAgICAgICBzdGVwICs9IGxvZ2ljYWxIZWlnaHRE
ZWx0YTsKKwogICAgIC8vIDIuIElmIHN0ZXAgaXMgemVybywgdGhlbiBqdW1wIHRvIHRoZSBzdGVw
IGxhYmVsZWQgZG9uZSBwb3NpdGlvbmluZyBiZWxvdy4KICAgICBpZiAoIXN0ZXApCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTE0Niw3ICsxNTQsNyBAQCB2b2lkIFJlbmRlclZUVEN1ZTo6cGxh
Y2VCb3hJbkRlZmF1bHRQb3NpdGlvbihMYXlvdXRVbml0IHBvc2l0aW9uLCBib29sJiBzd2l0Y2hl
ZAogCiBib29sIFJlbmRlclZUVEN1ZTo6aXNPdXRzaWRlKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
IXJlY3RJc1dpdGhpbkNvbnRhaW5lcihhYnNvbHV0ZUNvbnRlbnRCb3goKSk7CisgICAgcmV0dXJu
ICFyZWN0SXNXaXRoaW5Db250YWluZXIoYmFja2Ryb3BCb3goKS5hYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdCgpKTsKIH0KIAogYm9vbCBSZW5kZXJWVFRDdWU6OnJlY3RJc1dpdGhpbkNvbnRhaW5lcihj
b25zdCBJbnRSZWN0JiByZWN0KSBjb25zdApAQCAtMTYwLDE4ICsxNjgsMjAgQEAgYm9vbCBSZW5k
ZXJWVFRDdWU6OmlzT3ZlcmxhcHBpbmcoKSBjb25zdAogICAgIHJldHVybiBvdmVybGFwcGluZ09i
amVjdCgpOwogfQogCi1SZW5kZXJPYmplY3QqIFJlbmRlclZUVEN1ZTo6b3ZlcmxhcHBpbmdPYmpl
Y3QoKSBjb25zdAorUmVuZGVyVlRUQ3VlKiBSZW5kZXJWVFRDdWU6Om92ZXJsYXBwaW5nT2JqZWN0
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gb3ZlcmxhcHBpbmdPYmplY3RGb3JSZWN0KGFic29sdXRl
Qm91bmRpbmdCb3hSZWN0KCkpOworICAgIHJldHVybiBvdmVybGFwcGluZ09iamVjdEZvclJlY3Qo
YmFja2Ryb3BCb3goKS5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsKIH0KIAotUmVuZGVyT2Jq
ZWN0KiBSZW5kZXJWVFRDdWU6Om92ZXJsYXBwaW5nT2JqZWN0Rm9yUmVjdChjb25zdCBJbnRSZWN0
JiByZWN0KSBjb25zdAorUmVuZGVyVlRUQ3VlKiBSZW5kZXJWVFRDdWU6Om92ZXJsYXBwaW5nT2Jq
ZWN0Rm9yUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KSBjb25zdAogewotICAgIGZvciAoUmVuZGVy
T2JqZWN0KiBib3ggPSBwcmV2aW91c1NpYmxpbmcoKTsgYm94OyBib3ggPSBib3gtPnByZXZpb3Vz
U2libGluZygpKSB7Ci0gICAgICAgIEludFJlY3QgYm94UmVjdCA9IGJveC0+YWJzb2x1dGVCb3Vu
ZGluZ0JveFJlY3QoKTsKKyAgICBmb3IgKFJlbmRlck9iamVjdCogc2libGluZyA9IHByZXZpb3Vz
U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+cHJldmlvdXNTaWJsaW5nKCkp
IHsKKyAgICAgICAgYXV0byogcHJldmlvdXNDdWUgPSBkb3duY2FzdDxSZW5kZXJWVFRDdWU+KHNp
YmxpbmcpOworICAgICAgICBpZiAoIXByZXZpb3VzQ3VlKQorICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgaWYgKHJlY3QuaW50ZXJzZWN0cyhib3hSZWN0KSkKLSAgICAgICAgICAgIHJl
dHVybiBib3g7CisgICAgICAgIGlmIChyZWN0LmludGVyc2VjdHMocHJldmlvdXNDdWUtPmJhY2tk
cm9wQm94KCkuYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSkpCisgICAgICAgICAgICByZXR1cm4g
cHJldmlvdXNDdWU7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CkBAIC0yNDMsNyArMjUzLDcgQEAg
Ym9vbCBSZW5kZXJWVFRDdWU6OnN3aXRjaERpcmVjdGlvbihib29sJiBzd2l0Y2hlZCwgTGF5b3V0
VW5pdCYgc3RlcCkKIHZvaWQgUmVuZGVyVlRUQ3VlOjptb3ZlSWZOZWNlc3NhcnlUb0tlZXBXaXRo
aW5Db250YWluZXIoKQogewogICAgIEludFJlY3QgY29udGFpbmVyUmVjdCA9IGNvbnRhaW5pbmdC
bG9jaygpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOwotICAgIEludFJlY3QgY3VlUmVjdCA9
IGFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CisgICAgSW50UmVjdCBjdWVSZWN0ID0gYmFja2Ry
b3BCb3goKS5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOwogCiAgICAgaW50IHRvcE92ZXJmbG93
ID0gY3VlUmVjdC55KCkgLSBjb250YWluZXJSZWN0LnkoKTsKICAgICBpbnQgYm90dG9tT3ZlcmZs
b3cgPSBjb250YWluZXJSZWN0Lm1heFkoKSAtIGN1ZVJlY3QubWF4WSgpOwpAQCAtMjc0LDE1ICsy
ODQsMTUgQEAgYm9vbCBSZW5kZXJWVFRDdWU6OmZpbmROb25PdmVybGFwcGluZ1Bvc2l0aW9uKGlu
dCYgbmV3WCwgaW50JiBuZXdZKSBjb25zdAogewogICAgIG5ld1ggPSB4KCk7CiAgICAgbmV3WSA9
IHkoKTsKLSAgICBJbnRSZWN0IHNyY1JlY3QgPSBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOwor
ICAgIEludFJlY3Qgc3JjUmVjdCA9IGJhY2tkcm9wQm94KCkuYWJzb2x1dGVCb3VuZGluZ0JveFJl
Y3QoKTsKICAgICBJbnRSZWN0IGRlc3RSZWN0ID0gc3JjUmVjdDsKIAogICAgIC8vIE1vdmUgdGhl
IGJveCB1cCwgbG9va2luZyBmb3IgYSBub24tb3ZlcmxhcHBpbmcgcG9zaXRpb246Ci0gICAgd2hp
bGUgKFJlbmRlck9iamVjdCogYm94ID0gb3ZlcmxhcHBpbmdPYmplY3RGb3JSZWN0KGRlc3RSZWN0
KSkgeworICAgIHdoaWxlIChSZW5kZXJWVFRDdWUqIGN1ZSA9IG92ZXJsYXBwaW5nT2JqZWN0Rm9y
UmVjdChkZXN0UmVjdCkpIHsKICAgICAgICAgaWYgKG1fY3VlLT5nZXRXcml0aW5nRGlyZWN0aW9u
KCkgPT0gVlRUQ3VlOjpIb3Jpem9udGFsKQotICAgICAgICAgICAgZGVzdFJlY3Quc2V0WShib3gt
PmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkueSgpIC0gZGVzdFJlY3QuaGVpZ2h0KCkpOworICAg
ICAgICAgICAgZGVzdFJlY3Quc2V0WShjdWUtPmJhY2tkcm9wQm94KCkuYWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3QoKS55KCkgLSBkZXN0UmVjdC5oZWlnaHQoKSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGRlc3RSZWN0LnNldFgoYm94LT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpLngoKSAt
IGRlc3RSZWN0LndpZHRoKCkpOworICAgICAgICAgICAgZGVzdFJlY3Quc2V0WChjdWUtPmJhY2tk
cm9wQm94KCkuYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKS54KCkgLSBkZXN0UmVjdC53aWR0aCgp
KTsKICAgICB9CiAKICAgICBpZiAocmVjdElzV2l0aGluQ29udGFpbmVyKGRlc3RSZWN0KSkgewpA
QCAtMjk0LDExICszMDQsMTEgQEAgYm9vbCBSZW5kZXJWVFRDdWU6OmZpbmROb25PdmVybGFwcGlu
Z1Bvc2l0aW9uKGludCYgbmV3WCwgaW50JiBuZXdZKSBjb25zdAogICAgIGRlc3RSZWN0ID0gc3Jj
UmVjdDsKIAogICAgIC8vIE1vdmUgdGhlIGJveCBkb3duLCBsb29raW5nIGZvciBhIG5vbi1vdmVy
bGFwcGluZyBwb3NpdGlvbjoKLSAgICB3aGlsZSAoUmVuZGVyT2JqZWN0KiBib3ggPSBvdmVybGFw
cGluZ09iamVjdEZvclJlY3QoZGVzdFJlY3QpKSB7CisgICAgd2hpbGUgKFJlbmRlclZUVEN1ZSog
Y3VlID0gb3ZlcmxhcHBpbmdPYmplY3RGb3JSZWN0KGRlc3RSZWN0KSkgewogICAgICAgICBpZiAo
bV9jdWUtPmdldFdyaXRpbmdEaXJlY3Rpb24oKSA9PSBWVFRDdWU6Okhvcml6b250YWwpCi0gICAg
ICAgICAgICBkZXN0UmVjdC5zZXRZKGJveC0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKS5tYXhZ
KCkpOworICAgICAgICAgICAgZGVzdFJlY3Quc2V0WShjdWUtPmJhY2tkcm9wQm94KCkuYWJzb2x1
dGVCb3VuZGluZ0JveFJlY3QoKS5tYXhZKCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBk
ZXN0UmVjdC5zZXRYKGJveC0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKS5tYXhYKCkpOworICAg
ICAgICAgICAgZGVzdFJlY3Quc2V0WChjdWUtPmJhY2tkcm9wQm94KCkuYWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3QoKS5tYXhYKCkpOwogICAgIH0KIAogICAgIGlmIChyZWN0SXNXaXRoaW5Db250YWlu
ZXIoZGVzdFJlY3QpKSB7CkBAIC0zNDUsMTIgKzM1NSw3IEBAIHZvaWQgUmVuZGVyVlRUQ3VlOjpy
ZXBvc2l0aW9uR2VuZXJpY0N1ZSgpCiB7CiAgICAgQVNTRVJUKGZpcnN0Q2hpbGQoKSk7CiAKLSAg
ICAvLyBmaXJzdENoaWxkKCkgcmV0dXJucyB0aGUgd3JhcHBpbmcgKGJhY2tkcm9wKSA8ZGl2Pi4g
VGhlIGN1ZSBvYmplY3QgaXMKLSAgICAvLyB0aGUgPGRpdj4ncyBmaXJzdCBjaGlsZC4KLSAgICBS
ZW5kZXJPYmplY3QmIGZpcnN0Q2hpbGQgPSAqdGhpcy0+Zmlyc3RDaGlsZCgpOwotICAgIFJlbmRl
ckVsZW1lbnQmIGJhY2tkcm9wRWxlbWVudCA9IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KGZpcnN0
Q2hpbGQpOwotICAgIAotICAgIExlZ2FjeUlubGluZUZsb3dCb3gqIGZpcnN0TGluZUJveCA9IGRv
d25jYXN0PFJlbmRlcklubGluZT4oKmJhY2tkcm9wRWxlbWVudC5maXJzdENoaWxkKCkpLmZpcnN0
TGluZUJveCgpOworICAgIExlZ2FjeUlubGluZUZsb3dCb3gqIGZpcnN0TGluZUJveCA9IGN1ZUJv
eCgpLmZpcnN0TGluZUJveCgpOwogICAgIGlmIChkb3duY2FzdDxUZXh0VHJhY2tDdWVHZW5lcmlj
PigqbV9jdWUpLnVzZURlZmF1bHRQb3NpdGlvbigpICYmIGZpcnN0TGluZUJveCkgewogICAgICAg
ICBMYXlvdXRVbml0IHBhcmVudFdpZHRoID0gY29udGFpbmluZ0Jsb2NrKCktPmxvZ2ljYWxXaWR0
aCgpOwogICAgICAgICBMYXlvdXRVbml0IHdpZHRoIHsgZmlyc3RMaW5lQm94LT53aWR0aCgpIH07
CkBAIC0zODQsNiArMzg5LDIxIEBAIHZvaWQgUmVuZGVyVlRUQ3VlOjpyZXBvc2l0aW9uQ3VlU25h
cFRvTGluZXNOb3RTZXQoKQogICAgIHNldFkoeSk7CiB9CiAKK1JlbmRlckJsb2NrRmxvdyYgUmVu
ZGVyVlRUQ3VlOjpiYWNrZHJvcEJveCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGZpcnN0Q2hpbGQo
KSk7CisKKyAgICAvLyBmaXJzdENoaWxkKCkgcmV0dXJucyB0aGUgd3JhcHBpbmcgKGJhY2tkcm9w
KSA8ZGl2Pi4gVGhlIGN1ZSBvYmplY3QgaXMKKyAgICAvLyB0aGUgPGRpdj4ncyBmaXJzdCBjaGls
ZC4KKyAgICBSZW5kZXJPYmplY3QmIGZpcnN0Q2hpbGQgPSAqdGhpcy0+Zmlyc3RDaGlsZCgpOwor
ICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KGZpcnN0Q2hpbGQpOworfQorCitS
ZW5kZXJJbmxpbmUmIFJlbmRlclZUVEN1ZTo6Y3VlQm94KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ZG93bmNhc3Q8UmVuZGVySW5saW5lPigqYmFja2Ryb3BCb3goKS5maXJzdENoaWxkKCkpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZUVEN1ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclZUVEN1ZS5oCmluZGV4IDJjNTU3YjZkZTYwODU2OGRmODE2YzRhY2IzMTk3MTE5NTZh
OTY0MjQuLjYxZjllODE2NjYzYjc5ZjE3NjkyMzA4MzNkNTZhZGQwZDNhNmE4YTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmgKQEAgLTQyLDEzICs0MiwxNSBAQCBwdWJs
aWM6CiAgICAgUmVuZGVyVlRUQ3VlKFZUVEN1ZUJveCYsIFJlbmRlclN0eWxlJiYpOwogCiBwcml2
YXRlOgorICAgIGJvb2wgaXNSZW5kZXJWVFRDdWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVl
OyB9CisKICAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc091dHNpZGUo
KSBjb25zdDsKICAgICBib29sIHJlY3RJc1dpdGhpbkNvbnRhaW5lcihjb25zdCBJbnRSZWN0Jikg
Y29uc3Q7CiAgICAgYm9vbCBpc092ZXJsYXBwaW5nKCkgY29uc3Q7Ci0gICAgUmVuZGVyT2JqZWN0
KiBvdmVybGFwcGluZ09iamVjdCgpIGNvbnN0OwotICAgIFJlbmRlck9iamVjdCogb3ZlcmxhcHBp
bmdPYmplY3RGb3JSZWN0KGNvbnN0IEludFJlY3QmKSBjb25zdDsKKyAgICBSZW5kZXJWVFRDdWUq
IG92ZXJsYXBwaW5nT2JqZWN0KCkgY29uc3Q7CisgICAgUmVuZGVyVlRUQ3VlKiBvdmVybGFwcGlu
Z09iamVjdEZvclJlY3QoY29uc3QgSW50UmVjdCYpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkU3dp
dGNoRGlyZWN0aW9uKExlZ2FjeUlubGluZUZsb3dCb3gqLCBMYXlvdXRVbml0KSBjb25zdDsKIAog
ICAgIHZvaWQgbW92ZUJveGVzQnlTdGVwKExheW91dFVuaXQpOwpAQCAtNjIsMTAgKzY0LDE1IEBA
IHByaXZhdGU6CiAgICAgdm9pZCByZXBvc2l0aW9uQ3VlU25hcFRvTGluZXNOb3RTZXQoKTsKICAg
ICB2b2lkIHJlcG9zaXRpb25HZW5lcmljQ3VlKCk7CiAKKyAgICBSZW5kZXJCbG9ja0Zsb3cmIGJh
Y2tkcm9wQm94KCkgY29uc3Q7CisgICAgUmVuZGVySW5saW5lJiBjdWVCb3goKSBjb25zdDsKKwog
ICAgIFZUVEN1ZSogbV9jdWU7CiAgICAgRmxvYXRQb2ludCBtX2ZhbGxiYWNrUG9zaXRpb247CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfUkVO
REVSX09CSkVDVChSZW5kZXJWVFRDdWUsIGlzUmVuZGVyVlRUQ3VlKCkpCisKICNlbmRpZiAvLyBF
TkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggNzZlMDBk
YzFiODc3NmYxMjk4NWQ5NTQ1NDE5NDQ2ZWRhZjhlYWE2ZC4uNTU2MjYzMjhiN2MxODZjYzkzNzk4
ZjdkNmMwNjU5YTEzNDA4NDMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApA
QCAtNDkyLDYgKzQ5Miw4IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UHJpbnRDb250ZXh0PiYg
cHJpbnRDb250ZXh0Rm9yVGVzdGluZygpCiAKIGNvbnN0IGNoYXIqIEludGVybmFsczo6aW50ZXJu
YWxzSWQgPSAiaW50ZXJuYWxzIjsKIAorc3RhdGljIHVuc2lnbmVkIGludGVybmFsc0NvdW50IHsg
MCB9OworCiBSZWY8SW50ZXJuYWxzPiBJbnRlcm5hbHM6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1l
bnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW50ZXJuYWxzKGRvY3VtZW50KSk7CkBA
IC01MDYsNiArNTA4LDExIEBAIEludGVybmFsczo6fkludGVybmFscygpCiAgICAgaWYgKG1fYXJ0
d29ya0ltYWdlUHJvbWlzZSkKICAgICAgICAgbV9hcnR3b3JrSW1hZ2VQcm9taXNlLT5yZWplY3Qo
RXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoVklE
RU8pCisgICAgQVNTRVJUKGludGVybmFsc0NvdW50KTsKKyAgICBpZiAoIS0taW50ZXJuYWxzQ291
bnQgJiYgY29udGV4dERvY3VtZW50KCktPnBhZ2UoKSkKKyAgICAgICAgY29udGV4dERvY3VtZW50
KCktPnBhZ2UoKS0+Z3JvdXAoKS5lbnN1cmVDYXB0aW9uUHJlZmVyZW5jZXMoKS5zZXRUZXN0aW5n
TW9kZShmYWxzZSk7CisjZW5kaWYKIH0KIAogdm9pZCBJbnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0
ZW50U3RhdGUoUGFnZSYgcGFnZSkKQEAgLTU0NSwxMCArNTUyLDggQEAgdm9pZCBJbnRlcm5hbHM6
OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUoUGFnZSYgcGFnZSkKICAgICBwYWdlLm1haW5GcmFtZSgp
LmxvYWRlcigpLmNsZWFyVGVzdGluZ092ZXJyaWRlcygpOwogICAgIHBhZ2UuYXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UoKS5zZXREZWZhdWx0T3JpZ2luUXVvdGEoQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U6Om5vUXVvdGEoKSk7CiAjaWYgRU5BQkxFKFZJREVPKQotICAgIHBhZ2UuZ3JvdXAoKS5lbnN1
cmVDYXB0aW9uUHJlZmVyZW5jZXMoKS5zZXRUZXN0aW5nTW9kZSh0cnVlKTsKICAgICBwYWdlLmdy
b3VwKCkuZW5zdXJlQ2FwdGlvblByZWZlcmVuY2VzKCkuc2V0Q2FwdGlvbkRpc3BsYXlNb2RlKENh
cHRpb25Vc2VyUHJlZmVyZW5jZXM6OkZvcmNlZE9ubHkpOwogICAgIHBhZ2UuZ3JvdXAoKS5lbnN1
cmVDYXB0aW9uUHJlZmVyZW5jZXMoKS5zZXRDYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZShlbXB0
eVN0cmluZygpKTsKLSAgICBwYWdlLmdyb3VwKCkuZW5zdXJlQ2FwdGlvblByZWZlcmVuY2VzKCku
c2V0VGVzdGluZ01vZGUoZmFsc2UpOwogICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6
c2hhcmVkTWFuYWdlcigpLnJlc2V0SGF2ZUV2ZXJSZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBwbGlj
YXRpb25Gb3JUZXN0aW5nKCk7CiAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFy
ZWRNYW5hZ2VyKCkucmVzZXRSZXN0cmljdGlvbnMoKTsKICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zZXRXaWxsSWdub3JlU3lzdGVtSW50ZXJydXB0aW9u
cyh0cnVlKTsKQEAgLTYyNSw3ICs2MzAsNyBAQCBJbnRlcm5hbHM6OkludGVybmFscyhEb2N1bWVu
dCYgZG9jdW1lbnQpCiAjZW5kaWYKIHsKICNpZiBFTkFCTEUoVklERU8pCi0gICAgaWYgKGRvY3Vt
ZW50LnBhZ2UoKSkKKyAgICBpZiAoKytpbnRlcm5hbHNDb3VudCA9PSAxICYmIGRvY3VtZW50LnBh
Z2UoKSkKICAgICAgICAgZG9jdW1lbnQucGFnZSgpLT5ncm91cCgpLmVuc3VyZUNhcHRpb25QcmVm
ZXJlbmNlcygpLnNldFRlc3RpbmdNb2RlKHRydWUpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlOTc4NjRm
NWQyNjU1ZmQzYTJkMDBhMGUyNWRiM2EzOGFiZTc1OWVkLi4wYjM3OGIxMmZkMmFjMDNhZWU0NjFk
ZmQyNzI5OWQ3YzNkNTE2ODVjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjEtMTItMDYgIEpl
ciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1ZUVF0gRml4IHZhcmlv
dXMgaXNzdWVzIHdpdGggY29tcGxpY2F0ZWQgcmVuZGVyaW5nIG9mIFZUVCBjdWVzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM5MDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1lZGlhL3RyYWNrL2Nh
cHRpb25zLXdlYnZ0dC9uby1zbmFwLXRvLWxpbmVzLW92ZXJsYXAudnR0OiBBZGRlZC4KKyAgICAg
ICAgKiBtZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvc25hcC10by1saW5lcy1pbmxpbmUtc3R5
bGUudnR0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvc25h
cC10by1saW5lcy1sZWZ0LWFuZC1yaWdodC52dHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3Ry
YWNrL3RyYWNrLXdlYnZ0dC1uby1zbmFwLXRvLWxpbmVzLW92ZXJsYXAtZXhwZWN0ZWQuaHRtbDog
QWRkZWQuCisgICAgICAgICogbWVkaWEvdHJhY2svdHJhY2std2VidnR0LW5vLXNuYXAtdG8tbGlu
ZXMtb3ZlcmxhcC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay13ZWJ2
dHQtc25hcC10by1saW5lcy1pbmxpbmUtc3R5bGUtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogbWVkaWEvdHJhY2svdHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMtaW5saW5lLXN0eWxl
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRv
LWxpbmVzLWxlZnQtcmlnaHQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogbWVkaWEv
dHJhY2svdHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMtbGVmdC1yaWdodC5odG1sOiBBZGRlZC4K
KwogMjAyMS0xMC0yMiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgYW4gZXhwZXJpbWVudGFsIHRyYWNrQ29uZmlndXJhdGlvbiBhY2Nlc3NvciBvbiBBdWRp
b1RyYWNrICYgVmlkZW9UcmFjay4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNr
L2NhcHRpb25zLXdlYnZ0dC9uby1zbmFwLXRvLWxpbmVzLW92ZXJsYXAudnR0IGIvTGF5b3V0VGVz
dHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L25vLXNuYXAtdG8tbGluZXMtb3ZlcmxhcC52
dHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzdmNmY0NGY0ZDlhN2UxMmQwYzZlZGZkZTJiYWU4MTQ0ZTliZTI4NQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0
dC9uby1zbmFwLXRvLWxpbmVzLW92ZXJsYXAudnR0CkBAIC0wLDAgKzEsMzMgQEAKK1dFQlZUVAor
CisxCiswMDowMDowMC4wMDAgLS0+IDAwOjAwOjAwLjUwMCBhbGlnbjpsZWZ0IGxpbmU6MCUKK0xl
ZnQKKworMgorMDA6MDA6MDAuMDAwIC0tPiAwMDowMDowMC41MDAgYWxpZ246cmlnaHQgbGluZTow
JQorUmlnaHQKKworMworMDA6MDA6MDAuMDAwIC0tPiAwMDowMDowMC41MDAgYWxpZ246bGVmdCBs
aW5lOjAlCitCZWxvdworCis0CiswMDowMDowMC4wMDAgLS0+IDAwOjAwOjAwLjUwMCBhbGlnbjpy
aWdodCBsaW5lOjAlCitCZWxvdworCisxCiswMDowMDowMC4wMDAgLS0+IDAwOjAwOjAwLjUwMCBh
bGlnbjpsZWZ0IGxpbmU6MTAwJQorTGVmdAorCisyCiswMDowMDowMC4wMDAgLS0+IDAwOjAwOjAw
LjUwMCBhbGlnbjpyaWdodCBsaW5lOjEwMCUKK1JpZ2h0CisKKzMKKzAwOjAwOjAwLjAwMCAtLT4g
MDA6MDA6MDAuNTAwIGFsaWduOmxlZnQgbGluZToxMDAlCitBYm92ZQorCis0CiswMDowMDowMC4w
MDAgLS0+IDAwOjAwOjAwLjUwMCBhbGlnbjpyaWdodCBsaW5lOjEwMCUKK0Fib3ZlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvc25hcC10by1saW5l
cy1pbmxpbmUtc3R5bGUudnR0IGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2Vi
dnR0L3NuYXAtdG8tbGluZXMtaW5saW5lLXN0eWxlLnZ0dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZmM1NjU2YTQx
Yjg5ZWNhODAxNTExNzRhNTQ4MDI0M2Y2NjFmMzUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L3NuYXAtdG8tbGluZXMtaW5saW5lLXN0
eWxlLnZ0dApAQCAtMCwwICsxLDIwIEBACitXRUJWVFQKKworU1RZTEUKKzo6Y3VlKC5kb3VibGVI
ZWlnaHQpIHsgZm9udC1zaXplOiAyMDAlOyBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjayB9CisKKzEK
KzAwOjAwOjAwLjAwMCAtLT4gMDA6MDA6MDAuNTAwIGFsaWduOmxlZnQKKzxjLmRvdWJsZUhlaWdo
dD5MZWZ0PC9jPgorCisyCiswMDowMDowMC4wMDAgLS0+IDAwOjAwOjAwLjUwMCBhbGlnbjpyaWdo
dCBwb3NpdGlvbjoxMDAlCis8Yy5kb3VibGVIZWlnaHQ+UmlnaHQ8L2M+CisKKzMKKzAwOjAwOjAw
LjAwMCAtLT4gMDA6MDA6MDAuNTAwIGFsaWduOmxlZnQKKzxjLmRvdWJsZUhlaWdodD5BYm92ZTwv
Yz4KKworNAorMDA6MDA6MDAuMDAwIC0tPiAwMDowMDowMC41MDAgYWxpZ246cmlnaHQgcG9zaXRp
b246MTAwJQorPGMuZG91YmxlSGVpZ2h0PkFib3ZlPC9jPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L3NuYXAtdG8tbGluZXMtbGVmdC1hbmQtcmln
aHQudnR0IGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L3NuYXAtdG8t
bGluZXMtbGVmdC1hbmQtcmlnaHQudnR0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwOTY5ZTBkZGIxNTZjYjNmNjQx
NDY3MmQzMjYxNGE5Y2U5ZTBiY2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRp
YS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvc25hcC10by1saW5lcy1sZWZ0LWFuZC1yaWdodC52dHQK
QEAgLTAsMCArMSwxNyBAQAorV0VCVlRUCisKKzEKKzAwOjAwOjAwLjAwMCAtLT4gMDA6MDA6MDAu
NTAwIGFsaWduOmxlZnQKK0xlZnQKKworMgorMDA6MDA6MDAuMDAwIC0tPiAwMDowMDowMC41MDAg
YWxpZ246cmlnaHQgcG9zaXRpb246MTAwJQorUmlnaHQKKworMworMDA6MDA6MDAuMDAwIC0tPiAw
MDowMDowMC41MDAgYWxpZ246bGVmdAorQWJvdmUKKworNAorMDA6MDA6MDAuMDAwIC0tPiAwMDow
MDowMC41MDAgYWxpZ246cmlnaHQgcG9zaXRpb246MTAwJQorQWJvdmUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1uby1zbmFwLXRvLWxpbmVzLW92ZXJs
YXAtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1u
by1zbmFwLXRvLWxpbmVzLW92ZXJsYXAtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzdiNTUz
NjRlMDk4ZTAzNTdhMTgxZDgwZDdiMzA0MzA2MWJmMzAxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2std2VidnR0LW5vLXNuYXAtdG8tbGluZXMtb3Zlcmxh
cC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsNTggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKyAgICA8dGl0bGU+dHJhY2std2VidnR0LW5vLXNuYXAtdG8tbGluZXMtb3Zlcmxh
cDwvdGl0bGU+CisgICAgPHN0eWxlPgorICAgICAgICAudmlkZW8geyAKKyAgICAgICAgICAgIGRp
c3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAg
ICAgICAgICAgIHdpZHRoOiAzMjBweDsKKyAgICAgICAgICAgIGhlaWdodDogMjQwcHg7CisgICAg
ICAgIH0KKyAgICAgICAgaHRtbCB7IG92ZXJmbG93OmhpZGRlbiB9CisgICAgICAgIGJvZHkgeyBt
YXJnaW46MCB9CisgICAgICAgIC5jdWUtYm94IHsKKyAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKKyAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsKKyAgICAgICAgfQorICAgICAgICAu
Y3VlIHsKKyAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBBaGVtLCBzYW5zLXNlcmlmOworICAgICAg
ICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7CisgICAgICAgICAgICBjb2xvcjogZ3JlZW47
CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQ+dmFyIHJlcXVpcmVQaXhlbER1
bXAgPSB0cnVlOzwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0LmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vbWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdD4KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGFzeW5jIGV2
ZW50ID0+IHsKKyAgICAgICAgY29uc29sZVdyaXRlKCdSVU4odmlkZW8ucXVlcnlTZWxlY3Rvcigi
dHJhY2siKS5zcmMgPSAiY2FwdGlvbnMtd2VidnR0L25vLXNuYXAtdG8tbGluZXMtb3ZlcmxhcC52
dHQiKScpOworICAgICAgICBjb25zb2xlV3JpdGUoJ1JVTih2aWRlby50ZXh0VHJhY2tzWzBdLm1v
ZGUgPSAic2hvd2luZyIpJyk7CisgICAgICAgIGNvbnNvbGVXcml0ZSgnRVZFTlQobG9hZCknKTsK
KyAgICAgICAgY29uc29sZVdyaXRlKCdSVU4odmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlk
ZW8iLCAidzNjL3RyYWNrL3dlYnZ0dC9tZWRpYS93aGl0ZSIpKScpOworICAgICAgICBjb25zb2xl
V3JpdGUoJ0VWRU5UKGNhbnBsYXl0aHJvdWdoKScpOworICAgICAgICBlbmRUZXN0KCk7CisgICAg
fSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGNsYXNzPSJ2aWRl
byI+CisgICAgICAgIDxkaXYgY2xhc3M9ImN1ZS1ib3giIHN0eWxlPSJsZWZ0OjA7IHRvcDowOyB0
ZXh0LWFsaWduOiBsZWZ0OyI+CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3VlIj5MZWZ0PC9z
cGFuPjxicj4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjdWUiPkJlbG93PC9zcGFuPgorICAg
ICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY3VlLWJveCIgc3R5bGU9InJpZ2h0OjA7
IHRvcDowOyB0ZXh0LWFsaWduOiByaWdodCI+CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3Vl
Ij5SaWdodDwvc3Bhbj48YnI+CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3VlIj5CZWxvdzwv
c3Bhbj4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImN1ZS1ib3giIHN0eWxl
PSJsZWZ0OjA7IGJvdHRvbTowOyB0ZXh0LWFsaWduOiBsZWZ0Ij4KKyAgICAgICAgICAgIDxzcGFu
IGNsYXNzPSJjdWUiPkFib3ZlPC9zcGFuPjxicj4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJj
dWUiPkxlZnQ8L3NwYW4+CisgICAgICAgIDwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJjdWUt
Ym94IiBzdHlsZT0icmlnaHQ6MDsgYm90dG9tOjA7IHRleHQtYWxpZ246IHJpZ2h0Ij4KKyAgICAg
ICAgICAgIDxzcGFuIGNsYXNzPSJjdWUiPkFib3ZlPC9zcGFuPjxicj4KKyAgICAgICAgICAgIDxz
cGFuIGNsYXNzPSJjdWUiPlJpZ2h0PC9zcGFuPgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4K
KzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay13ZWJ2dHQtbm8tc25hcC10by1saW5lcy1v
dmVybGFwLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay13ZWJ2dHQtbm8tc25h
cC10by1saW5lcy1vdmVybGFwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjIzMzQwZDg1NTY1YzA3NjY1MGIy
MzUxYWEyOGE3MzA3MjMzY2RlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlh
L3RyYWNrL3RyYWNrLXdlYnZ0dC1uby1zbmFwLXRvLWxpbmVzLW92ZXJsYXAuaHRtbApAQCAtMCww
ICsxLDM4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisJPHRpdGxlPnRyYWNr
LXdlYnZ0dC1uby1zbmFwLXRvLWxpbmVzLW92ZXJsYXA8L3RpdGxlPgorCTxzdHlsZT4KKwkJaHRt
bCB7IG92ZXJmbG93OmhpZGRlbiB9CisJCWJvZHkgeyBtYXJnaW46MCB9CisJCTo6Y3VlIHsKKwkJ
ICAgIGZvbnQtZmFtaWx5OiBBaGVtLCBzYW5zLXNlcmlmOworCQkgICAgZm9udC1zaXplOiAxMnB4
OworCQkgICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7CisJCSAgICBjb2xvcjogZ3JlZW47CisJ
CX0KKwk8L3N0eWxlPgorCTxzY3JpcHQ+dmFyIHJlcXVpcmVQaXhlbER1bXAgPSB0cnVlOzwvc2Ny
aXB0PgorCTxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KKwk8c2NyaXB0
IHNyYz0iLi4vbWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+CisJPHNjcmlwdD4KKwl3aW5kb3cuYWRk
RXZlbnRMaXN0ZW5lcignbG9hZCcsIGFzeW5jIGV2ZW50ID0+IHsKKwkJZmluZE1lZGlhRWxlbWVu
dCgpOworCisJCXJ1bihgdmlkZW8ucXVlcnlTZWxlY3RvcigidHJhY2siKS5zcmMgPSAiY2FwdGlv
bnMtd2VidnR0L25vLXNuYXAtdG8tbGluZXMtb3ZlcmxhcC52dHQiYCk7CisJCXJ1bihgdmlkZW8u
dGV4dFRyYWNrc1swXS5tb2RlID0gInNob3dpbmciYCk7CisJCWF3YWl0IHdhaXRGb3IodmlkZW8u
cXVlcnlTZWxlY3RvcigndHJhY2snKSwgJ2xvYWQnKTsKKworCQlydW4oYHZpZGVvLnNyYyA9IGZp
bmRNZWRpYUZpbGUoInZpZGVvIiwgInczYy90cmFjay93ZWJ2dHQvbWVkaWEvd2hpdGUiKWApOwor
CQlhd2FpdCB3YWl0Rm9yKHZpZGVvLCAnY2FucGxheXRocm91Z2gnKTsKKworCQllbmRUZXN0KCk7
CisJfSk7CisJPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKwk8dmlkZW8+CisgICAgICAgIDx0
cmFjayBpZD0idGVzdFRyYWNrIiBraW5kPSJjYXB0aW9ucyIgZGVmYXVsdD4KKwk8L3ZpZGVvPgor
PC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRvLWxpbmVzLWlubGlu
ZS1zdHlsZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2std2Vi
dnR0LXNuYXAtdG8tbGluZXMtaW5saW5lLXN0eWxlLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Nzg5OGU1ZmNjMTRmM2I1YTQ3MTAxNTA3ZGJhN2Q1NTM1Mzc2MTY1ZAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRvLWxpbmVzLWlu
bGluZS1zdHlsZS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsNTAgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+dHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMt
aW5saW5lLXN0eWxlPC90aXRsZT4KKyAgICA8c3R5bGU+CisgICAgICAgIC52aWRlbyB7IAorICAg
ICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgcG9zaXRpb246IHJl
bGF0aXZlOworICAgICAgICAgICAgd2lkdGg6IDMyMHB4OworICAgICAgICAgICAgaGVpZ2h0OiAy
NDBweDsKKyAgICAgICAgfQorICAgICAgICBodG1sIHsgb3ZlcmZsb3c6aGlkZGVuIH0KKyAgICAg
ICAgYm9keSB7IG1hcmdpbjowIH0KKyAgICAgICAgLmN1ZS1ib3ggeworICAgICAgICAgICAgcG9z
aXRpb246IGFic29sdXRlOworICAgICAgICB9CisgICAgICAgIC5jdWUgeworICAgICAgICAgICAg
Zm9udC1mYW1pbHk6IEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgICAgICBiYWNrZ3JvdW5kLWNv
bG9yOiBibGFjazsKKyAgICAgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICAgICAgICAgIGZvbnQt
c2l6ZTogMjRweDsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdD52YXIgcmVx
dWlyZVBpeGVsRHVtcCA9IHRydWU7PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3ZpZGVv
LXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9tZWRpYS1maWxlLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2Fk
JywgYXN5bmMgZXZlbnQgPT4geworICAgICAgICBjb25zb2xlV3JpdGUoJ1JVTih2aWRlby5xdWVy
eVNlbGVjdG9yKCJ0cmFjayIpLnNyYyA9ICJjYXB0aW9ucy13ZWJ2dHQvc25hcC10by1saW5lcy1p
bmxpbmUtc3R5bGUudnR0IiknKTsKKyAgICAgICAgY29uc29sZVdyaXRlKCdSVU4odmlkZW8udGV4
dFRyYWNrc1swXS5tb2RlID0gInNob3dpbmciKScpOworICAgICAgICBjb25zb2xlV3JpdGUoJ0VW
RU5UKGxvYWQpJyk7CisgICAgICAgIGNvbnNvbGVXcml0ZSgnUlVOKHZpZGVvLnNyYyA9IGZpbmRN
ZWRpYUZpbGUoInZpZGVvIiwgInczYy90cmFjay93ZWJ2dHQvbWVkaWEvd2hpdGUiKSknKTsKKyAg
ICAgICAgY29uc29sZVdyaXRlKCdFVkVOVChjYW5wbGF5dGhyb3VnaCknKTsKKyAgICAgICAgZW5k
VGVzdCgpOworICAgIH0pOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRp
diBjbGFzcz0idmlkZW8iPgorICAgICAgICA8ZGl2IGNsYXNzPSJjdWUtYm94IiBzdHlsZT0ibGVm
dDowOyBib3R0b206MDsgdGV4dC1hbGlnbjogbGVmdCI+CisgICAgICAgICAgICA8c3BhbiBjbGFz
cz0iY3VlIj5BYm92ZTwvc3Bhbj48YnI+CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3VlIj5M
ZWZ0PC9zcGFuPgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY3VlLWJveCIg
c3R5bGU9InJpZ2h0OjA7IGJvdHRvbTowOyB0ZXh0LWFsaWduOiByaWdodCI+CisgICAgICAgICAg
ICA8c3BhbiBjbGFzcz0iY3VlIj5BYm92ZTwvc3Bhbj48YnI+CisgICAgICAgICAgICA8c3BhbiBj
bGFzcz0iY3VlIj5SaWdodDwvc3Bhbj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMtaW5saW5lLXN0
eWxlLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay13ZWJ2dHQtc25hcC10by1s
aW5lcy1pbmxpbmUtc3R5bGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xN2MxYzMzNDRjMjNkYTE5MWZjOTBi
ODc0MDc5ODA0MzNkZTM0ZDM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEv
dHJhY2svdHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMtaW5saW5lLXN0eWxlLmh0bWwKQEAgLTAs
MCArMSwzOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT50
cmFjay13ZWJ2dHQtc25hcC10by1saW5lcy1pbmxpbmUtc3R5bGU8L3RpdGxlPgorICAgIDxzdHls
ZT4KKyAgICAgICAgaHRtbCB7IG92ZXJmbG93OmhpZGRlbiB9CisgICAgICAgIGJvZHkgeyBtYXJn
aW46MCB9CisgICAgICAgIDo6Y3VlIHsKKyAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBBaGVtLCBz
YW5zLXNlcmlmOworICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4OworICAgICAgICAgICAgYmFj
a2dyb3VuZC1jb2xvcjogYmxhY2s7CisgICAgICAgICAgICBjb2xvcjogZ3JlZW47CisgICAgICAg
IH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQ+dmFyIHJlcXVpcmVQaXhlbER1bXAgPSB0cnVl
Ozwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0LmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iLi4vbWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dD4KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGFzeW5jIGV2ZW50ID0+IHsK
KyAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOworCisgICAgICAgIHJ1bihgdmlkZW8ucXVlcnlT
ZWxlY3RvcigidHJhY2siKS5zcmMgPSAiY2FwdGlvbnMtd2VidnR0L3NuYXAtdG8tbGluZXMtaW5s
aW5lLXN0eWxlLnZ0dCJgKTsKKyAgICAgICAgcnVuKGB2aWRlby50ZXh0VHJhY2tzWzBdLm1vZGUg
PSAic2hvd2luZyJgKTsKKyAgICAgICAgYXdhaXQgd2FpdEZvcih2aWRlby5xdWVyeVNlbGVjdG9y
KCd0cmFjaycpLCAnbG9hZCcpOworCisgICAgICAgIHJ1bihgdmlkZW8uc3JjID0gZmluZE1lZGlh
RmlsZSgidmlkZW8iLCAidzNjL3RyYWNrL3dlYnZ0dC9tZWRpYS93aGl0ZSIpYCk7CisgICAgICAg
IGF3YWl0IHdhaXRGb3IodmlkZW8sICdjYW5wbGF5dGhyb3VnaCcpOworCisgICAgICAgIGVuZFRl
c3QoKTsKKyAgICB9KTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDx2aWRl
bz4KKyAgICAgICAgPHRyYWNrIGlkPSJ0ZXN0VHJhY2siIHNyYz0iY2FwdGlvbnMtd2VidnR0L3Nu
YXAtdG8tbGluZXMtaW5saW5lLXN0eWxlLnZ0dCIga2luZD0iY2FwdGlvbnMiIGRlZmF1bHQ+Cisg
ICAgPC92aWRlbz4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay13ZWJ2dHQtc25hcC10
by1saW5lcy1sZWZ0LXJpZ2h0LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFj
ay90cmFjay13ZWJ2dHQtc25hcC10by1saW5lcy1sZWZ0LXJpZ2h0LWV4cGVjdGVkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjU0ZmMwYmRmNzMxNWRlMDEwYjk0ODNlYzQ5MmJjMjU0YzhkYjg5OQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRv
LWxpbmVzLWxlZnQtcmlnaHQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDUwIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPnRyYWNrLXdlYnZ0dC1zbmFwLXRv
LWxpbmVzLWxlZnQtcmlnaHQ8L3RpdGxlPgorICAgIDxzdHlsZT4KKyAgICAgICAgLnZpZGVvIHsg
CisgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICBwb3NpdGlv
bjogcmVsYXRpdmU7CisgICAgICAgICAgICB3aWR0aDogMzIwcHg7CisgICAgICAgICAgICBoZWln
aHQ6IDI0MHB4OworICAgICAgICB9CisgICAgICAgIGh0bWwgeyBvdmVyZmxvdzpoaWRkZW4gfQor
ICAgICAgICBib2R5IHsgbWFyZ2luOjAgfQorICAgICAgICAuY3VlLWJveCB7CisgICAgICAgICAg
ICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgICAgICBmb250LXNpemU6IDEycHg7CisgICAg
ICAgIH0KKyAgICAgICAgLmN1ZSB7CisgICAgICAgICAgICBmb250LWZhbWlseTogQWhlbSwgc2Fu
cy1zZXJpZjsKKyAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrOworICAgICAgICAg
ICAgY29sb3I6IGdyZWVuOworICAgICAgICB9CisgICAgPC9zdHlsZT4KKyAgICA8c2NyaXB0PnZh
ciByZXF1aXJlUGl4ZWxEdW1wID0gdHJ1ZTs8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4v
dmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIo
J2xvYWQnLCBhc3luYyBldmVudCA9PiB7CisgICAgICAgIGNvbnNvbGVXcml0ZSgnUlVOKHZpZGVv
LnF1ZXJ5U2VsZWN0b3IoInRyYWNrIikuc3JjID0gImNhcHRpb25zLXdlYnZ0dC9zbmFwLXRvLWxp
bmVzLWxlZnQtYW5kLXJpZ2h0LnZ0dCIpJyk7CisgICAgICAgIGNvbnNvbGVXcml0ZSgnUlVOKHZp
ZGVvLnRleHRUcmFja3NbMF0ubW9kZSA9ICJzaG93aW5nIiknKTsKKyAgICAgICAgY29uc29sZVdy
aXRlKCdFVkVOVChsb2FkKScpOworICAgICAgICBjb25zb2xlV3JpdGUoJ1JVTih2aWRlby5zcmMg
PSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJ3M2MvdHJhY2svd2VidnR0L21lZGlhL3doaXRlIikp
Jyk7CisgICAgICAgIGNvbnNvbGVXcml0ZSgnRVZFTlQoY2FucGxheXRocm91Z2gpJyk7CisgICAg
ICAgIGVuZFRlc3QoKTsKKyAgICB9KTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
ICAgIDxkaXYgY2xhc3M9InZpZGVvIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY3VlLWJveCIgc3R5
bGU9ImxlZnQ6MDsgYm90dG9tOjA7IHRleHQtYWxpZ246IGxlZnQiPgorICAgICAgICAgICAgPHNw
YW4gY2xhc3M9ImN1ZSI+QWJvdmU8L3NwYW4+PGJyPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9
ImN1ZSI+TGVmdDwvc3Bhbj4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImN1
ZS1ib3giIHN0eWxlPSJyaWdodDowOyBib3R0b206MDsgdGV4dC1hbGlnbjogcmlnaHQiPgorICAg
ICAgICAgICAgPHNwYW4gY2xhc3M9ImN1ZSI+QWJvdmU8L3NwYW4+PGJyPgorICAgICAgICAgICAg
PHNwYW4gY2xhc3M9ImN1ZSI+UmlnaHQ8L3NwYW4+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2
PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRvLWxpbmVzLWxl
ZnQtcmlnaHQuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFw
LXRvLWxpbmVzLWxlZnQtcmlnaHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOTg5N2RmZTUzMDA3YjM0MDE4
ZmJjZjhmNWI3MzRiZjM3Y2MyYjFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVk
aWEvdHJhY2svdHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMtbGVmdC1yaWdodC5odG1sCkBAIC0w
LDAgKzEsMzggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+
dHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMtbGVmdC1yaWdodDwvdGl0bGU+CisgICAgPHN0eWxl
PgorICAgICAgICBodG1sIHsgb3ZlcmZsb3c6aGlkZGVuIH0KKyAgICAgICAgYm9keSB7IG1hcmdp
bjowIH0KKyAgICAgICAgOjpjdWUgeworICAgICAgICAgICAgZm9udC1mYW1pbHk6IEFoZW0sIHNh
bnMtc2VyaWY7CisgICAgICAgICAgICBmb250LXNpemU6IDEycHg7CisgICAgICAgICAgICBiYWNr
Z3JvdW5kLWNvbG9yOiBibGFjazsKKyAgICAgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICAgICAg
fQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdD52YXIgcmVxdWlyZVBpeGVsRHVtcCA9IHRydWU7
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSIuLi9tZWRpYS1maWxlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
PgorICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgYXN5bmMgZXZlbnQgPT4gewor
ICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisKKyAgICAgICAgcnVuKGB2aWRlby5xdWVyeVNl
bGVjdG9yKCJ0cmFjayIpLnNyYyA9ICJjYXB0aW9ucy13ZWJ2dHQvc25hcC10by1saW5lcy1sZWZ0
LWFuZC1yaWdodC52dHQiYCk7CisgICAgICAgIHJ1bihgdmlkZW8udGV4dFRyYWNrc1swXS5tb2Rl
ID0gInNob3dpbmciYCk7CisgICAgICAgIGF3YWl0IHdhaXRGb3IodmlkZW8ucXVlcnlTZWxlY3Rv
cigndHJhY2snKSwgJ2xvYWQnKTsKKworICAgICAgICBydW4oYHZpZGVvLnNyYyA9IGZpbmRNZWRp
YUZpbGUoInZpZGVvIiwgInczYy90cmFjay93ZWJ2dHQvbWVkaWEvd2hpdGUiKWApOworICAgICAg
ICBhd2FpdCB3YWl0Rm9yKHZpZGVvLCAnY2FucGxheXRocm91Z2gnKTsKKworICAgICAgICBlbmRU
ZXN0KCk7CisgICAgfSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8dmlk
ZW8+CisgICAgICAgIDx0cmFjayBpZD0idGVzdFRyYWNrIiBraW5kPSJjYXB0aW9ucyIgZGVmYXVs
dD4KKyAgICA8L3ZpZGVvPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUK
</data>
<flag name="review"
          id="471501"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
    <flag name="commit-queue"
          id="471532"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446246</attachid>
            <date>2021-12-07 16:01:07 -0800</date>
            <delta_ts>2021-12-07 17:16:05 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-233901-20211207160106.patch</filename>
            <type>text/plain</type>
            <size>47785</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDkwNjM1N2I0MDk4YjJj
MjA3N2ZjMzFmNmNmMTUzYjEyOTA0OWMwZS4uNjg5MjMwYWUwNjljYmJmNmViOTJjZGU0MWQyMGYy
ODFkYzdjNjMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIxLTEyLTA2ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtWVFRdIEZpeCB2YXJpb3Vz
IGlzc3VlcyB3aXRoIGNvbXBsaWNhdGVkIHJlbmRlcmluZyBvZiBWVFQgY3VlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzOTAxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIFRlc3RzOiBtZWRpYS90cmFjay90
cmFjay13ZWJ2dHQtbm8tc25hcC10by1saW5lcy1vdmVybGFwLmh0bWwKKyAgICAgICAgICAgICAg
IG1lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRvLWxpbmVzLWlubGluZS1zdHlsZS5odG1s
CisgICAgICAgICAgICAgICBtZWRpYS90cmFjay90cmFjay13ZWJ2dHQtc25hcC10by1saW5lcy1s
ZWZ0LXJpZ2h0Lmh0bWwKKworICAgICAgICBXaGVuIHBvc2l0aW9uaW5nIFZUVCBjdWVzLCB0aGUg
c3BlYyByZXF1aXJlcyBVQXMgdG8gYXZvaWQgY29sbGlzaW9ucyBiZXR3ZWVuIGN1ZXMKKyAgICAg
ICAgYnkgZGV0ZWN0aW5nIHRoYXQgdHdvIGN1ZXMgb3ZlcmxhcCBlYWNoIG90aGVyLiBIb3dldmVy
LCBXZWJLaXQncyBpbXBsZW1lbnRhdGlvbgorICAgICAgICBsb29rcyBmb3IgY29sbGlzaW9ucyBi
ZXR3ZWVuIG5vbi1kaXNwbGF5aW5nIHBvcnRpb25zIG9mIHRoZSBjdWVzOyBuYW1lbHkgdGhlIAor
ICAgICAgICA6Oi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1kaXNwbGF5IGVsZW1lbnQsIHdoaWNo
IGlzIHVzZWQgdG8gcG9zaXRpb24gdGhlIGRpc3BsYXlpbmcKKyAgICAgICAgcG9ydGlvbiBvZiB0
aGUgY3VlLiBJbnN0ZWFkLCB0aGUgVUEgc2hvdWxkIGxvb2sgZm9yIGNvbGxpc2lvbnMgYmV0d2Vl
biB0aGUgCisgICAgICAgIDo6LXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWRpc3BsYXktYmFja2Ry
b3AgZWxlbWVudCwgd2hpY2ggaG9sZHMgdGhlIGJhY2tncm91bmQKKyAgICAgICAgb2YgdGhlIGN1
ZSwgaWYgcHJlc2VudC4KKworICAgICAgICBBZGQgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0byBy
ZXRyaWV2ZSB0aGUgYmFja2Ryb3AgZWxlbWVudCwgYW5kIGFub3RoZXIgdG8gcmV0cmlldmUKKyAg
ICAgICAgdGhlIGN1ZSBpdHNlbGYuCisKKyAgICAgICAgQWRkIGNhc3QgbWFjcm9zIGZvciBSZW5k
ZXJWVFRDdWUgdG8gYWxsb3cgZG93bmNhc3Q8PmluZy4gVXNlIHRoaXMgbWFjcm8gdG8gcmV0cmll
dmUKKyAgICAgICAgb3RoZXIgY3VlcydzIGJhY2tkcm9wIGVsZW1lbnRzIGZvciBjb2xsaXNpb24g
YXZvaWRhbmNlLgorCisgICAgICAgIFZUVEN1ZUJveDo6YXBwbHlDU1NQcm9wZXJ0aWVzKCkgaGFk
IGEgc2VjdGlvbiBmb3IgbW92aW5nIGN1ZXMgaW50byBwbGFjZSB0aGF0IGlzIGVudGlyZWx5Cisg
ICAgICAgIHVubmVlZGVkIGlmIFZUVEN1ZTo6Z2V0Q1NTUG9zaXRpb24oKSByZXR1cm5zIHRoZSBw
cmUtY2FsY3VsYXRlZCBtX2Rpc3BsYXlQb3NpdGlvbi4KKworICAgICAgICBSZW5kZXJWVFRDdWU6
OmluaXRpYWxpemVMYXlvdXRQYXJhbWV0ZXJzKCkgaXMgYSBjYXJlZnVsIGltcGxlbWVudGF0aW9u
IG9mIHRoZSBzcGVjaWZpY2F0aW9uLAorICAgICAgICBhY2N1cmF0ZWx5IGxheW91dCBvdXQgY3Vl
cycgaW5pdGlhbCBwb3NpdGlvbiBzbyB0aGF0IHRoZSB0ZXh0IHJ1biBpcyBleGFjdGx5IGF0IHRo
ZQorICAgICAgICBib3R0b20gb2YgdGhlIGNvbnRlbnQgYm94LiBIb3dldmVyLCBpZiB0aGUgY3Vl
IGhhcyBhIGJvcmRlciwgcGFkZGluZywgb3IgZXh0cmEgaGVpZ2h0LAorICAgICAgICB0aGlzIHdp
bGwgcmVzdWx0IGluIHRoZSBjdWUgYmVpbmcgcHVzaGVkIG91dHNpZGUgdGhlIGNvbnRlbnQgYm94
LiBUbyBhY2NvdW50IGZvciB0aGlzLAorICAgICAgICBhZGp1c3QgdGhlIGluaXRhbCBsYXlvdXQg
cGFyYW1ldGVyIGJ5IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGN1ZSB0ZXh0IHNpemUgYW5k
IHRoZQorICAgICAgICBiYWNrZHJvcCBlbGVtZW50IHNpemUuCisKKyAgICAgICAgUmVuZGVyVlRU
Q3VlOjpsYXlvdXQoKSB3aWxsIGNyZWF0ZSBhIExheW91dFN0YXRlTWFpbnRhaW5lciwgd2hpY2gg
bW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mCisgICAgICAgIGxheW91dCBtYWNoaW5lcnkgZHVyaW5n
IHRoZSBsYXlvdXQgaXRzZWxmLiBIb3dldmVyLCBjZXJ0YWluIGNoaWxkIHJlbmRlcmVycyBnZXQg
ZHJhbWF0aWNhbGx5CisgICAgICAgIGluY29ycmVjdCByZXN1bHRzIGZvciBhYnNvbHV0ZUJvdW5k
aW5nUmVjdCgpIHVubGVzcyB0aGUgbWFpbnRhaW5lciBleHBsaWNpdGx5IHNldHMgZGlzYWJsZVN0
YXRlLgorCisgICAgICAgICogaHRtbC90cmFjay9WVFRDdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VlRUQ3VlQm94OjphcHBseUNTU1Byb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6VlRU
Q3VlOjpnZXRDU1NQb3NpdGlvbiBjb25zdCk6CisgICAgICAgICogaHRtbC90cmFjay9WVFRDdWUu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmlzUmVuZGVyVlRUQ3VlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVlRUQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZUVEN1ZTo6bGF5
b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZUVEN1ZTo6aW5pdGlhbGl6ZUxheW91dFBh
cmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVlRUQ3VlOjppc091dHNpZGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVlRUQ3VlOjpvdmVybGFwcGluZ09iamVjdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWVFRDdWU6Om92ZXJsYXBwaW5nT2JqZWN0
Rm9yUmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWVFRDdWU6Om1vdmVJZk5l
Y2Vzc2FyeVRvS2VlcFdpdGhpbkNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJW
VFRDdWU6OmZpbmROb25PdmVybGFwcGluZ1Bvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclZUVEN1ZTo6cmVwb3NpdGlvbkdlbmVyaWNDdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVlRUQ3VlOjpiYWNrZHJvcEJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJWVFRDdWU6OmN1ZUJveCBjb25zdCk6CisKIDIwMjEtMTItMDcgIEFudHRpIEtvaXZpc3Rv
ICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBtb3JlIHNwZWNpZmljIGtleXMgZm9y
IHBzZXVkby1jbGFzcyBpbnZhbGlkYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVlRUQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNw
cAppbmRleCA5NTdlYjhjNTgxNTEwM2YzNGU4ODEyMDcxMDQwMjZiNTMzOWQ2MDcyLi4wMDg4YmZh
ZTA5MzRjOWI0YWNmMGQwNDJlMTkyMDM1NDQ1MjBjMDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9WVFRDdWUuY3BwCkBAIC0xODYsMTQgKzE4NiwxNSBAQCB2b2lkIFZUVEN1ZUJveDo6YXBwbHlD
U1NQcm9wZXJ0aWVzKGNvbnN0IEludFNpemUmIHZpZGVvU2l6ZSkKICAgICAvLyB0aGUgJ3dyaXRp
bmctbW9kZScgcHJvcGVydHkgbXVzdCBiZSBzZXQgdG8gd3JpdGluZy1tb2RlCiAgICAgc2V0SW5s
aW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdyaXRpbmdNb2RlLCBjdWUtPmdldENTU1dyaXRp
bmdNb2RlKCksIGZhbHNlKTsKIAotICAgIGF1dG8gcG9zaXRpb24gPSBjdWUtPmdldENTU1Bvc2l0
aW9uKCk7CisgICAgYXV0byYgcG9zaXRpb24gPSBjdWUtPmdldENTU1Bvc2l0aW9uKCk7CiAKICAg
ICAvLyB0aGUgJ3RvcCcgcHJvcGVydHkgbXVzdCBiZSBzZXQgdG8gdG9wLAotICAgIHNldElubGlu
ZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUb3AsIHBvc2l0aW9uLnNlY29uZCwgQ1NTVW5pdFR5
cGU6OkNTU19QRVJDRU5UQUdFKTsKKyAgICBpZiAocG9zaXRpb24uc2Vjb25kKQorICAgICAgICBz
ZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VG9wLCAqcG9zaXRpb24uc2Vjb25kLCBD
U1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOwogCiAgICAgLy8gdGhlICdsZWZ0JyBwcm9wZXJ0
eSBtdXN0IGJlIHNldCB0byBsZWZ0Ci0gICAgaWYgKGN1ZS0+dmVydGljYWwoKSA9PSBob3Jpem9u
dGFsS2V5d29yZCgpKQotICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
TGVmdCwgcG9zaXRpb24uZmlyc3QsIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7CisgICAg
aWYgKGN1ZS0+dmVydGljYWwoKSA9PSBob3Jpem9udGFsS2V5d29yZCgpICYmIHBvc2l0aW9uLmZp
cnN0KQorICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TGVmdCwgKnBv
c2l0aW9uLmZpcnN0LCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOwogICAgIGVsc2UgaWYg
KGN1ZS0+dmVydGljYWwoKSA9PSB2ZXJ0aWNhbEdyb3dpbmdSaWdodEtleXdvcmQoKSkgewogICAg
ICAgICAvLyBGSVhNRTogV2h5IHVzZSBjYWxjIHRvIGRvIHRoZSBtYXRoIGluc3RlYWQgb2YgZG9p
bmcgdGhlIHN1YnRyYWN0aW9uIGhlcmU/CiAgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHko
Q1NTUHJvcGVydHlMZWZ0LCBtYWtlU3RyaW5nKCJjYWxjKC0iLCB2aWRlb1NpemUud2lkdGgoKSwg
InB4IC0gIiwgY3VlLT5nZXRDU1NTaXplKCksICJweCkiKSk7CkBAIC0yMTksMTUgKzIyMCwxNSBA
QCB2b2lkIFZUVEN1ZUJveDo6YXBwbHlDU1NQcm9wZXJ0aWVzKGNvbnN0IEludFNpemUmIHZpZGVv
U2l6ZSkKICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwg
Q1NTVmFsdWVBdXRvKTsKICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eU1pbldpZHRoLCAibWluLWNvbnRlbnQiKTsKICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0
eShDU1NQcm9wZXJ0eU1heFdpZHRoLCBtYXhTaXplLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRB
R0UpOwotICAgICAgICBpZiAoKGFsaWdubWVudCA9PSBDU1NWYWx1ZU1pZGRsZSB8fCBhbGlnbm1l
bnQgPT0gQ1NTVmFsdWVDZW50ZXIpICYmIG11bHRpcGxpZXIgIT0gMS4wKQotICAgICAgICAgICAg
c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQsIHN0YXRpY19jYXN0PGRvdWJs
ZT4ocG9zaXRpb24uZmlyc3QgLSAobmV3Q3VlU2l6ZSAtIGN1ZS0+Z2V0Q1NTU2l6ZSgpKSAvIDIp
LCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOworICAgICAgICBpZiAoKGFsaWdubWVudCA9
PSBDU1NWYWx1ZU1pZGRsZSB8fCBhbGlnbm1lbnQgPT0gQ1NTVmFsdWVDZW50ZXIpICYmIG11bHRp
cGxpZXIgIT0gMS4wICYmIHBvc2l0aW9uLmZpcnN0KQorICAgICAgICAgICAgc2V0SW5saW5lU3R5
bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQsIHN0YXRpY19jYXN0PGRvdWJsZT4oKnBvc2l0aW9u
LmZpcnN0IC0gKG5ld0N1ZVNpemUgLSBjdWUtPmdldENTU1NpemUoKSkgLyAyKSwgQ1NTVW5pdFR5
cGU6OkNTU19QRVJDRU5UQUdFKTsKICAgICB9IGVsc2UgewogICAgICAgICBzZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIENTU1ZhbHVlQXV0byk7CiAgICAgICAgIHNldElu
bGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQsIG5ld0N1ZVNpemUsIENTU1VuaXRU
eXBlOjpDU1NfUEVSQ0VOVEFHRSk7CiAgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NT
UHJvcGVydHlNaW5IZWlnaHQsICJtaW4tY29udGVudCIpOwogICAgICAgICBzZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5TWF4SGVpZ2h0LCBtYXhTaXplLCBDU1NVbml0VHlwZTo6Q1NT
X1BFUkNFTlRBR0UpOwotICAgICAgICBpZiAoKGFsaWdubWVudCA9PSBDU1NWYWx1ZU1pZGRsZSB8
fCBhbGlnbm1lbnQgPT0gQ1NTVmFsdWVDZW50ZXIpICYmIG11bHRpcGxpZXIgIT0gMS4wKQotICAg
ICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRvcCwgc3RhdGljX2Nh
c3Q8ZG91YmxlPihwb3NpdGlvbi5zZWNvbmQgLSAobmV3Q3VlU2l6ZSAtIGN1ZS0+Z2V0Q1NTU2l6
ZSgpKSAvIDIpLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOworICAgICAgICBpZiAoKGFs
aWdubWVudCA9PSBDU1NWYWx1ZU1pZGRsZSB8fCBhbGlnbm1lbnQgPT0gQ1NTVmFsdWVDZW50ZXIp
ICYmIG11bHRpcGxpZXIgIT0gMS4wICYmIHBvc2l0aW9uLnNlY29uZCkKKyAgICAgICAgICAgIHNl
dElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUb3AsIHN0YXRpY19jYXN0PGRvdWJsZT4o
KnBvc2l0aW9uLnNlY29uZCAtIChuZXdDdWVTaXplIC0gY3VlLT5nZXRDU1NTaXplKCkpIC8gMiks
IENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7CiAgICAgfQogCiAgICAgLy8gVGhlICd0ZXh0
LWFsaWduJyBwcm9wZXJ0eSBvbiB0aGUgKHJvb3QpIExpc3Qgb2YgV2ViVlRUIE5vZGUgT2JqZWN0
cyBtdXN0CkBAIC0yMzYsMjEgKzIzNyw4IEBAIHZvaWQgVlRUQ3VlQm94OjphcHBseUNTU1Byb3Bl
cnRpZXMoY29uc3QgSW50U2l6ZSYgdmlkZW9TaXplKQogICAgIC8vIGFsaWdubWVudDoKICAgICBz
ZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBjdWUtPmdldENTU0Fs
aWdubWVudCgpKTsKICAgICAKLSAgICBpZiAoIWN1ZS0+c25hcFRvTGluZXMoKSkgewotICAgICAg
ICAvLyAxMC4xMy4xIFNldCB1cCB4IGFuZCB5OgotICAgICAgICAvLyBOb3RlOiB4IGFuZCB5IGFy
ZSBzZXQgdGhyb3VnaCB0aGUgQ1NTIGxlZnQgYW5kIHRvcCBhYm92ZS4KLQotICAgICAgICAvLyAx
MC4xMy4yIFBvc2l0aW9uIHRoZSBib3hlcyBpbiBib3hlcyBzdWNoIHRoYXQgdGhlIHBvaW50IHgl
IGFsb25nIHRoZQotICAgICAgICAvLyB3aWR0aCBvZiB0aGUgYm91bmRpbmcgYm94IG9mIHRoZSBi
b3hlcyBpbiBib3hlcyBpcyB4JSBvZiB0aGUgd2F5Ci0gICAgICAgIC8vIGFjcm9zcyB0aGUgd2lk
dGggb2YgdGhlIHZpZGVvJ3MgcmVuZGVyaW5nIGFyZWEsIGFuZCB0aGUgcG9pbnQgeSUKLSAgICAg
ICAgLy8gYWxvbmcgdGhlIGhlaWdodCBvZiB0aGUgYm91bmRpbmcgYm94IG9mIHRoZSBib3hlcyBp
biBib3hlcyBpcyB5JQotICAgICAgICAvLyBvZiB0aGUgd2F5IGFjcm9zcyB0aGUgaGVpZ2h0IG9m
IHRoZSB2aWRlbydzIHJlbmRlcmluZyBhcmVhLCB3aGlsZQotICAgICAgICAvLyBtYWludGFpbmlu
ZyB0aGUgcmVsYXRpdmUgcG9zaXRpb25zIG9mIHRoZSBib3hlcyBpbiBib3hlcyB0byBlYWNoCi0g
ICAgICAgIC8vIG90aGVyLgotICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5VHJhbnNmb3JtLCBtYWtlU3RyaW5nKCJ0cmFuc2xhdGUoIiwgLXBvc2l0aW9uLmZpcnN0LCAi
JSwgIiwgLXBvc2l0aW9uLnNlY29uZCwgIiUpIikpOwotCisgICAgaWYgKCFjdWUtPnNuYXBUb0xp
bmVzKCkpCiAgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXaGl0ZVNw
YWNlLCBDU1NWYWx1ZVByZSk7Ci0gICAgfQogCiAgICAgLy8gTWFrZSBzdXJlIHNoYWRvdyBvciBz
dHJva2UgaXMgbm90IGNsaXBwZWQuCiAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eU92ZXJmbG93LCBDU1NWYWx1ZVZpc2libGUpOwpAQCAtMzg0LDI2ICszNzIsMjEgQEAgdm9p
ZCBWVFRDdWU6OnNldFNuYXBUb0xpbmVzKGJvb2wgdmFsdWUpCiAKIFZUVEN1ZTo6TGluZUFuZFBv
c2l0aW9uU2V0dGluZyBWVFRDdWU6OmxpbmUoKSBjb25zdAogewotICAgIGlmIChzdGQ6OmlzbmFu
KG1fbGluZVBvc2l0aW9uKSkKKyAgICBpZiAoIW1fbGluZVBvc2l0aW9uKQogICAgICAgICByZXR1
cm4gQXV0bzsKIAotICAgIHJldHVybiBtX2xpbmVQb3NpdGlvbjsKKyAgICByZXR1cm4gKm1fbGlu
ZVBvc2l0aW9uOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBWVFRDdWU6OnNldExpbmUoY29uc3Qg
TGluZUFuZFBvc2l0aW9uU2V0dGluZyYgcG9zaXRpb24pCiB7Ci0gICAgZG91YmxlIGxpbmVQb3Np
dGlvbiA9IDA7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGxpbmVQb3NpdGlvbjsKIAotICAg
IGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPEF1dG9LZXl3b3JkPihwb3NpdGlvbikpIHsKLSAg
ICAgICAgaWYgKHN0ZDo6aXNuYW4obV9saW5lUG9zaXRpb24pKQotICAgICAgICAgICAgcmV0dXJu
IHsgfTsKLSAgICAgICAgbGluZVBvc2l0aW9uID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+
OjpxdWlldF9OYU4oKTsKLSAgICB9IGVsc2UgeworICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxBdXRvS2V5d29yZD4ocG9zaXRpb24pKQogICAgICAgICBsaW5lUG9zaXRpb24gPSBzdGQ6
OmdldDxkb3VibGU+KHBvc2l0aW9uKTsKIAotICAgICAgICBpZiAobV9saW5lUG9zaXRpb24gPT0g
bGluZVBvc2l0aW9uKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9CisgICAgaWYgKG1f
bGluZVBvc2l0aW9uID09IGxpbmVQb3NpdGlvbikKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAg
IHdpbGxDaGFuZ2UoKTsKICAgICBtX2xpbmVQb3NpdGlvbiA9IGxpbmVQb3NpdGlvbjsKQEAgLTQ1
Myw5ICs0MzYsOSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBWVFRDdWU6OnNldExpbmVBbGlnbihjb25z
dCBTdHJpbmcmIHZhbHVlKQogCiBWVFRDdWU6OkxpbmVBbmRQb3NpdGlvblNldHRpbmcgVlRUQ3Vl
Ojpwb3NpdGlvbigpIGNvbnN0CiB7Ci0gICAgaWYgKHRleHRQb3NpdGlvbklzQXV0bygpKQotICAg
ICAgICByZXR1cm4gQXV0bzsKLSAgICByZXR1cm4gbV90ZXh0UG9zaXRpb247CisgICAgaWYgKG1f
dGV4dFBvc2l0aW9uKQorICAgICAgICByZXR1cm4gKm1fdGV4dFBvc2l0aW9uOworICAgIHJldHVy
biBBdXRvOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBWVFRDdWU6OnNldFBvc2l0aW9uKGNvbnN0
IExpbmVBbmRQb3NpdGlvblNldHRpbmcmIHBvc2l0aW9uKQpAQCAtNDY1LDIzICs0NDgsMjAgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gVlRUQ3VlOjpzZXRQb3NpdGlvbihjb25zdCBMaW5lQW5kUG9zaXRp
b25TZXR0aW5nJiBwb3NpdGlvbikKICAgICAvLyBJbmRleFNpemVFcnJvciBleGNlcHRpb24gbXVz
dCBiZSB0aHJvd24uIE90aGVyd2lzZSwgdGhlIFdlYlZUVCBjdWUKICAgICAvLyBwb3NpdGlvbiBt
dXN0IGJlIHNldCB0byB0aGUgbmV3IHZhbHVlOyBpZiB0aGUgbmV3IHZhbHVlIGlzIHRoZSBzdHJp
bmcKICAgICAvLyAiYXV0byIsIHRoZW4gaXQgbXVzdCBiZSBpbnRlcnByZXRlZCBhcyB0aGUgc3Bl
Y2lhbCB2YWx1ZSBhdXRvLgotICAgIGRvdWJsZSB0ZXh0UG9zaXRpb24gPSAwOwotICAgIGlmIChz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPEF1dG9LZXl3b3JkPihwb3NpdGlvbikpIHsKLSAgICAgICAg
aWYgKHRleHRQb3NpdGlvbklzQXV0bygpKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAg
ICAgdGV4dFBvc2l0aW9uID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4o
KTsKLSAgICB9IGVsc2UgeworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0ZXh0UG9zaXRpb247
CisKKyAgICAvLyBPdGhlcndpc2UsIHNldCB0aGUgdGV4dCB0cmFjayBjdWUgbGluZSBwb3NpdGlv
biB0byB0aGUgbmV3IHZhbHVlLgorICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxBdXRv
S2V5d29yZD4ocG9zaXRpb24pKSB7CiAgICAgICAgIHRleHRQb3NpdGlvbiA9IHN0ZDo6Z2V0PGRv
dWJsZT4ocG9zaXRpb24pOwogICAgICAgICBpZiAoISh0ZXh0UG9zaXRpb24gPj0gMCAmJiB0ZXh0
UG9zaXRpb24gPD0gMTAwKSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNp
emVFcnJvciB9OwotCi0gICAgICAgIC8vIE90aGVyd2lzZSwgc2V0IHRoZSB0ZXh0IHRyYWNrIGN1
ZSBsaW5lIHBvc2l0aW9uIHRvIHRoZSBuZXcgdmFsdWUuCi0gICAgICAgIGlmIChtX3RleHRQb3Np
dGlvbiA9PSB0ZXh0UG9zaXRpb24pCi0gICAgICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAor
ICAgIGlmIChtX3RleHRQb3NpdGlvbiA9PSB0ZXh0UG9zaXRpb24pCisgICAgICAgIHJldHVybiB7
IH07CisKICAgICB3aWxsQ2hhbmdlKCk7Ci0gICAgbV90ZXh0UG9zaXRpb24gPSB0ZXh0UG9zaXRp
b247CisgICAgbV90ZXh0UG9zaXRpb24gPSBXVEZNb3ZlKHRleHRQb3NpdGlvbik7CiAgICAgZGlk
Q2hhbmdlKCk7CiAKICAgICByZXR1cm4geyB9OwpAQCAtNzE0LDE0ICs2OTQsMTQgQEAgY29uc3Qg
U3RyaW5nJiBWVFRDdWU6OnJlZ2lvbklkKCkKICAgICByZXR1cm4gbV9yZWdpb24tPmlkKCk7CiB9
CiAKLWludCBWVFRDdWU6OmNhbGN1bGF0ZUNvbXB1dGVkTGluZVBvc2l0aW9uKCkKK2ludCBWVFRD
dWU6OmNhbGN1bGF0ZUNvbXB1dGVkTGluZVBvc2l0aW9uKCkgY29uc3QKIHsKICAgICAvLyBodHRw
Oi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90
aGUtdmlkZW8tZWxlbWVudC5odG1sI3RleHQtdHJhY2stY3VlLWNvbXB1dGVkLWxpbmUtcG9zaXRp
b24KIAogICAgIC8vIElmIHRoZSB0ZXh0IHRyYWNrIGN1ZSBsaW5lIHBvc2l0aW9uIGlzIG51bWVy
aWMsIHRoZW4gdGhhdCBpcyB0aGUgdGV4dAogICAgIC8vIHRyYWNrIGN1ZSBjb21wdXRlZCBsaW5l
IHBvc2l0aW9uLgotICAgIGlmICghc3RkOjppc25hbihtX2xpbmVQb3NpdGlvbikpCi0gICAgICAg
IHJldHVybiBtX2xpbmVQb3NpdGlvbjsKKyAgICBpZiAobV9saW5lUG9zaXRpb24pCisgICAgICAg
IHJldHVybiAqbV9saW5lUG9zaXRpb247CiAKICAgICAvLyBJZiB0aGUgdGV4dCB0cmFjayBjdWUg
c25hcC10by1saW5lcyBmbGFnIG9mIHRoZSB0ZXh0IHRyYWNrIGN1ZSBpcyBub3QKICAgICAvLyBz
ZXQsIHRoZSB0ZXh0IHRyYWNrIGN1ZSBjb21wdXRlZCBsaW5lIHBvc2l0aW9uIGlzIHRoZSB2YWx1
ZSAxMDA7CkBAIC03NTYsMTEgKzczNiw2IEBAIHN0YXRpYyBib29sIGlzQ3VlUGFyYWdyYXBoU2Vw
YXJhdG9yKFVDaGFyIGNoYXJhY3RlcikKICAgICByZXR1cm4gdV9jaGFyVHlwZShjaGFyYWN0ZXIp
ID09IFVfUEFSQUdSQVBIX1NFUEFSQVRPUjsKIH0KIAotYm9vbCBWVFRDdWU6OnRleHRQb3NpdGlv
bklzQXV0bygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN0ZDo6aXNuYW4obV90ZXh0UG9zaXRpb24p
OwotfQotCiB2b2lkIFZUVEN1ZTo6ZGV0ZXJtaW5lVGV4dERpcmVjdGlvbigpCiB7CiAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gcnRUYWcoTUFLRV9TVEFUSUNfU1RSSU5H
X0lNUEwoInJ0IikpOwpAQCAtODEwLDggKzc4NSw4IEBAIGRvdWJsZSBWVFRDdWU6OmNhbGN1bGF0
ZUNvbXB1dGVkVGV4dFBvc2l0aW9uKCkgY29uc3QKICAgICAKICAgICAvLyAxLiBJZiB0aGUgcG9z
aXRpb24gaXMgbnVtZXJpYywgdGhlbiByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBwb3NpdGlvbiBh
bmQKICAgICAvLyBhYm9ydCB0aGVzZSBzdGVwcy4gKE90aGVyd2lzZSwgdGhlIHBvc2l0aW9uIGlz
IHRoZSBzcGVjaWFsIHZhbHVlIGF1dG8uKQotICAgIGlmICghdGV4dFBvc2l0aW9uSXNBdXRvKCkp
Ci0gICAgICAgIHJldHVybiBtX3RleHRQb3NpdGlvbjsKKyAgICBpZiAobV90ZXh0UG9zaXRpb24p
CisgICAgICAgIHJldHVybiAqbV90ZXh0UG9zaXRpb247CiAgICAgCiAgICAgc3dpdGNoIChtX2N1
ZUFsaWdubWVudCkgewogICAgIGNhc2UgU3RhcnQ6CkBAIC05MjEsMTggKzg5NiwxOCBAQCB2b2lk
IFZUVEN1ZTo6Y2FsY3VsYXRlRGlzcGxheVBhcmFtZXRlcnMoKQogICAgIC8vIDEwLjkgRGV0ZXJt
aW5lIHRoZSB2YWx1ZSBvZiB3aGljaGV2ZXIgb2YgeC1wb3NpdGlvbiBvciB5LXBvc2l0aW9uIGlz
IG5vdAogICAgIC8vIHlldCBjYWxjdWxhdGVkIGZvciBjdWUgYXMgcGVyIHRoZSBhcHByb3ByaWF0
ZSBydWxlcyBmcm9tIHRoZSBmb2xsb3dpbmcKICAgICAvLyBsaXN0OgotICAgIGlmIChtX3NuYXBU
b0xpbmVzICYmIG1fZGlzcGxheVBvc2l0aW9uLnNlY29uZCA9PSB1bmRlZmluZWRQb3NpdGlvbiAm
JiBtX3dyaXRpbmdEaXJlY3Rpb24gPT0gSG9yaXpvbnRhbCkKKyAgICBpZiAobV9zbmFwVG9MaW5l
cyAmJiAhbV9kaXNwbGF5UG9zaXRpb24uc2Vjb25kICYmIG1fd3JpdGluZ0RpcmVjdGlvbiA9PSBI
b3Jpem9udGFsKQogICAgICAgICBtX2Rpc3BsYXlQb3NpdGlvbi5zZWNvbmQgPSAwOwogCi0gICAg
aWYgKCFtX3NuYXBUb0xpbmVzICYmIG1fZGlzcGxheVBvc2l0aW9uLnNlY29uZCA9PSB1bmRlZmlu
ZWRQb3NpdGlvbiAmJiBtX3dyaXRpbmdEaXJlY3Rpb24gPT0gSG9yaXpvbnRhbCkKLSAgICAgICAg
bV9kaXNwbGF5UG9zaXRpb24uc2Vjb25kID0gbV9jb21wdXRlZExpbmVQb3NpdGlvbjsKKyAgICBp
ZiAoIW1fc25hcFRvTGluZXMgJiYgIW1fZGlzcGxheVBvc2l0aW9uLnNlY29uZCAmJiBtX3dyaXRp
bmdEaXJlY3Rpb24gPT0gSG9yaXpvbnRhbCkKKyAgICAgICAgbV9kaXNwbGF5UG9zaXRpb24uc2Vj
b25kID0gKm1fY29tcHV0ZWRMaW5lUG9zaXRpb247CiAKLSAgICBpZiAobV9zbmFwVG9MaW5lcyAm
JiBtX2Rpc3BsYXlQb3NpdGlvbi5maXJzdCA9PSB1bmRlZmluZWRQb3NpdGlvbgorICAgIGlmICht
X3NuYXBUb0xpbmVzICYmICFtX2Rpc3BsYXlQb3NpdGlvbi5maXJzdAogICAgICAgICAmJiAobV93
cml0aW5nRGlyZWN0aW9uID09IFZlcnRpY2FsR3Jvd2luZ0xlZnQgfHwgbV93cml0aW5nRGlyZWN0
aW9uID09IFZlcnRpY2FsR3Jvd2luZ1JpZ2h0KSkKICAgICAgICAgbV9kaXNwbGF5UG9zaXRpb24u
Zmlyc3QgPSAwOwogCiAgICAgaWYgKCFtX3NuYXBUb0xpbmVzICYmIChtX3dyaXRpbmdEaXJlY3Rp
b24gPT0gVmVydGljYWxHcm93aW5nTGVmdCB8fCBtX3dyaXRpbmdEaXJlY3Rpb24gPT0gVmVydGlj
YWxHcm93aW5nUmlnaHQpKQotICAgICAgICBtX2Rpc3BsYXlQb3NpdGlvbi5maXJzdCA9IG1fY29t
cHV0ZWRMaW5lUG9zaXRpb247CisgICAgICAgIG1fZGlzcGxheVBvc2l0aW9uLmZpcnN0ID0gKm1f
Y29tcHV0ZWRMaW5lUG9zaXRpb247CiB9CiAgICAgCiB2b2lkIFZUVEN1ZTo6bWFya0Z1dHVyZUFu
ZFBhc3ROb2RlcyhDb250YWluZXJOb2RlKiByb290LCBjb25zdCBNZWRpYVRpbWUmIHByZXZpb3Vz
VGltZXN0YW1wLCBjb25zdCBNZWRpYVRpbWUmIG1vdmllVGltZSkKQEAgLTEwNzYsMzAgKzEwNTEs
MzEgQEAgc3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPiBWVFRDdWU6OmdldFBvc2l0aW9uQ29vcmRp
bmF0ZXMoKSBjb25zdAogICAgIHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4gY29vcmRpbmF0ZXM7
CiAKICAgICBhdXRvIHRleHRQb3NpdGlvbiA9IGNhbGN1bGF0ZUNvbXB1dGVkVGV4dFBvc2l0aW9u
KCk7CisgICAgYXV0byBjb21wdXRlZExpbmVQb3NpdGlvbiA9IG1fY29tcHV0ZWRMaW5lUG9zaXRp
b24gPyAqbV9jb21wdXRlZExpbmVQb3NpdGlvbiA6IGNhbGN1bGF0ZUNvbXB1dGVkTGluZVBvc2l0
aW9uKCk7CiAgICAgCiAgICAgaWYgKG1fd3JpdGluZ0RpcmVjdGlvbiA9PSBIb3Jpem9udGFsICYm
IG1fZGlzcGxheURpcmVjdGlvbiA9PSBDU1NWYWx1ZUx0cikgewogICAgICAgICBjb29yZGluYXRl
cy5maXJzdCA9IHRleHRQb3NpdGlvbjsKLSAgICAgICAgY29vcmRpbmF0ZXMuc2Vjb25kID0gbV9j
b21wdXRlZExpbmVQb3NpdGlvbjsKKyAgICAgICAgY29vcmRpbmF0ZXMuc2Vjb25kID0gY29tcHV0
ZWRMaW5lUG9zaXRpb247CiAKICAgICAgICAgcmV0dXJuIGNvb3JkaW5hdGVzOwogICAgIH0KIAog
ICAgIGlmIChtX3dyaXRpbmdEaXJlY3Rpb24gPT0gSG9yaXpvbnRhbCAmJiBtX2Rpc3BsYXlEaXJl
Y3Rpb24gPT0gQ1NTVmFsdWVSdGwpIHsKICAgICAgICAgY29vcmRpbmF0ZXMuZmlyc3QgPSAxMDAg
LSB0ZXh0UG9zaXRpb247Ci0gICAgICAgIGNvb3JkaW5hdGVzLnNlY29uZCA9IG1fY29tcHV0ZWRM
aW5lUG9zaXRpb247CisgICAgICAgIGNvb3JkaW5hdGVzLnNlY29uZCA9IGNvbXB1dGVkTGluZVBv
c2l0aW9uOwogCiAgICAgICAgIHJldHVybiBjb29yZGluYXRlczsKICAgICB9CiAKICAgICBpZiAo
bV93cml0aW5nRGlyZWN0aW9uID09IFZlcnRpY2FsR3Jvd2luZ0xlZnQpIHsKLSAgICAgICAgY29v
cmRpbmF0ZXMuZmlyc3QgPSAxMDAgLSBtX2NvbXB1dGVkTGluZVBvc2l0aW9uOworICAgICAgICBj
b29yZGluYXRlcy5maXJzdCA9IDEwMCAtICptX2NvbXB1dGVkTGluZVBvc2l0aW9uOwogICAgICAg
ICBjb29yZGluYXRlcy5zZWNvbmQgPSB0ZXh0UG9zaXRpb247CiAKICAgICAgICAgcmV0dXJuIGNv
b3JkaW5hdGVzOwogICAgIH0KIAogICAgIGlmIChtX3dyaXRpbmdEaXJlY3Rpb24gPT0gVmVydGlj
YWxHcm93aW5nUmlnaHQpIHsKLSAgICAgICAgY29vcmRpbmF0ZXMuZmlyc3QgPSBtX2NvbXB1dGVk
TGluZVBvc2l0aW9uOworICAgICAgICBjb29yZGluYXRlcy5maXJzdCA9IGNvbXB1dGVkTGluZVBv
c2l0aW9uOwogICAgICAgICBjb29yZGluYXRlcy5zZWNvbmQgPSB0ZXh0UG9zaXRpb247CiAKICAg
ICAgICAgcmV0dXJuIGNvb3JkaW5hdGVzOwpAQCAtMTMxOSwxNCArMTI5NSw2IEBAIGludCBWVFRD
dWU6OmdldENTU1NpemUoKSBjb25zdAogICAgIHJldHVybiBtX2Rpc3BsYXlTaXplOwogfQogCi1z
dGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+IFZUVEN1ZTo6Z2V0Q1NTUG9zaXRpb24oKSBjb25zdAot
ewotICAgIGlmICghbV9zbmFwVG9MaW5lcykKLSAgICAgICAgcmV0dXJuIGdldFBvc2l0aW9uQ29v
cmRpbmF0ZXMoKTsKLQotICAgIHJldHVybiBtX2Rpc3BsYXlQb3NpdGlvbjsKLX0KLQogYm9vbCBW
VFRDdWU6OmN1ZUNvbnRlbnRzTWF0Y2goY29uc3QgVGV4dFRyYWNrQ3VlJiBvdGhlclRleHRUcmFj
a0N1ZSkgY29uc3QKIHsKICAgICBhdXRvJiBvdGhlciA9IGRvd25jYXN0PFZUVEN1ZT4ob3RoZXJU
ZXh0VHJhY2tDdWUpOwpAQCAtMTM2MCwxMSArMTMyOCwxNCBAQCB2b2lkIFZUVEN1ZTo6dG9KU09O
KEpTT046Ok9iamVjdCYgb2JqZWN0KSBjb25zdAogCiAgICAgb2JqZWN0LnNldFN0cmluZygidmVy
dGljYWwiX3MsIHZlcnRpY2FsKCkpOwogICAgIG9iamVjdC5zZXRCb29sZWFuKCJzbmFwVG9MaW5l
cyJfcywgc25hcFRvTGluZXMoKSk7Ci0gICAgb2JqZWN0LnNldERvdWJsZSgibGluZSJfcywgbV9s
aW5lUG9zaXRpb24pOwotICAgIGlmICh0ZXh0UG9zaXRpb25Jc0F1dG8oKSkKLSAgICAgICAgb2Jq
ZWN0LnNldFN0cmluZygicG9zaXRpb24iX3MsICJhdXRvIl9zKTsKKyAgICBpZiAobV9saW5lUG9z
aXRpb24pCisgICAgICAgIG9iamVjdC5zZXRTdHJpbmcoImxpbmUiX3MsICJhdXRvIl9zKTsKICAg
ICBlbHNlCi0gICAgICAgIG9iamVjdC5zZXREb3VibGUoInBvc2l0aW9uIl9zLCBtX3RleHRQb3Np
dGlvbik7CisgICAgICAgIG9iamVjdC5zZXREb3VibGUoImxpbmUiX3MsICptX2xpbmVQb3NpdGlv
bik7CisgICAgaWYgKG1fdGV4dFBvc2l0aW9uKQorICAgICAgICBvYmplY3Quc2V0RG91YmxlKCJw
b3NpdGlvbiJfcywgKm1fdGV4dFBvc2l0aW9uKTsKKyAgICBlbHNlCisgICAgICAgIG9iamVjdC5z
ZXRTdHJpbmcoInBvc2l0aW9uIl9zLCAiYXV0byJfcyk7CiAgICAgb2JqZWN0LnNldEludGVnZXIo
InNpemUiX3MsIG1fY3VlU2l6ZSk7CiAgICAgb2JqZWN0LnNldFN0cmluZygiYWxpZ24iX3MsIGFs
aWduKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmgKaW5kZXggNzQ5NmMyMjkxZWMw
YzlkYWFhYzU2MjBmNTI5ZDIyNjE1MmQ4YmY1ZS4uYzkxYTQ5MDk2NjUwODMzNjRhMjg5OGYxMDhl
NTViNDA5ZmZmN2QwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRD
dWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5oCkBAIC0xMzYsMTAg
KzEzNiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVEaXNwbGF5VHJlZSgpIGZpbmFsOwog
ICAgIHZvaWQgbWFya0Z1dHVyZUFuZFBhc3ROb2RlcyhDb250YWluZXJOb2RlKiwgY29uc3QgTWVk
aWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJik7CiAKLSAgICBpbnQgY2FsY3VsYXRlQ29tcHV0ZWRM
aW5lUG9zaXRpb24oKTsKKyAgICBpbnQgY2FsY3VsYXRlQ29tcHV0ZWRMaW5lUG9zaXRpb24oKSBj
b25zdDsKICAgICBzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+IGdldFBvc2l0aW9uQ29vcmRpbmF0
ZXMoKSBjb25zdDsKIAotICAgIHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4gZ2V0Q1NTUG9zaXRp
b24oKSBjb25zdDsKKyAgICB1c2luZyBEaXNwbGF5UG9zaXRpb24gPSBzdGQ6OnBhaXI8c3RkOjpv
cHRpb25hbDxkb3VibGU+LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4+OworICAgIGNvbnN0IERpc3Bs
YXlQb3NpdGlvbiYgZ2V0Q1NTUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlQb3Np
dGlvbjsgfTsKIAogICAgIENTU1ZhbHVlSUQgZ2V0Q1NTQWxpZ25tZW50KCkgY29uc3Q7CiAgICAg
aW50IGdldENTU1NpemUoKSBjb25zdDsKQEAgLTIwNyw4ICsyMDgsNiBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBwYXJzZVNldHRpbmdzKGNvbnN0IFN0cmluZyYpOwogCi0gICAgYm9vbCB0ZXh0UG9z
aXRpb25Jc0F1dG8oKSBjb25zdDsKLQogICAgIHZvaWQgZGV0ZXJtaW5lVGV4dERpcmVjdGlvbigp
OwogICAgIHZvaWQgY2FsY3VsYXRlRGlzcGxheVBhcmFtZXRlcnMoKTsKIApAQCAtMjIzLDEzICsy
MjIsMTEgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIEN1ZVNldHRpbmcgc2V0dGluZ05hbWUoVlRU
U2Nhbm5lciYpOwogCi0gICAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgdW5kZWZpbmVkUG9zaXRp
b24gPSAtMTsKLQogICAgIFN0cmluZyBtX2NvbnRlbnQ7CiAgICAgU3RyaW5nIG1fc2V0dGluZ3M7
Ci0gICAgZG91YmxlIG1fbGluZVBvc2l0aW9uIHsgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+
OjpxdWlldF9OYU4oKSB9OwotICAgIGRvdWJsZSBtX2NvbXB1dGVkTGluZVBvc2l0aW9uIHsgc3Rk
OjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSB9OwotICAgIGRvdWJsZSBtX3Rl
eHRQb3NpdGlvbiB7IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkgfTsK
KyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbV9saW5lUG9zaXRpb247CisgICAgc3RkOjpvcHRp
b25hbDxkb3VibGU+IG1fY29tcHV0ZWRMaW5lUG9zaXRpb247CisgICAgc3RkOjpvcHRpb25hbDxk
b3VibGU+IG1fdGV4dFBvc2l0aW9uOwogICAgIGludCBtX2N1ZVNpemUgeyAxMDAgfTsKIAogICAg
IFdyaXRpbmdEaXJlY3Rpb24gbV93cml0aW5nRGlyZWN0aW9uIHsgSG9yaXpvbnRhbCB9OwpAQCAt
MjQ1LDcgKzI0Miw3IEBAIHByaXZhdGU6CiAKICAgICBDU1NWYWx1ZUlEIG1fZGlzcGxheURpcmVj
dGlvbiB7IENTU1ZhbHVlTHRyIH07CiAgICAgaW50IG1fZGlzcGxheVNpemUgeyAwIH07Ci0gICAg
c3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gbV9kaXNwbGF5UG9zaXRpb247CisgICAgRGlzcGxheVBv
c2l0aW9uIG1fZGlzcGxheVBvc2l0aW9uOwogCiAgICAgTWVkaWFUaW1lIG1fb3JpZ2luYWxTdGFy
dFRpbWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMu
Y3BwCmluZGV4IDkzNTQxNzJjZjM0NjNhZjBjODY4YTc5NWU1MzZlYzg2NDdiMDE2ZmUuLjMzNGU2
NDI1NjIzNTMzNTQ2NWQ1ZTkxYmZjOGExNjFjYWMyMTY4M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcApAQCAtOTcsNyArOTcsNyBAQCBDYXB0
aW9uVXNlclByZWZlcmVuY2VzOjpDYXB0aW9uRGlzcGxheU1vZGUgQ2FwdGlvblVzZXJQcmVmZXJl
bmNlczo6Y2FwdGlvbkRpc3BsYQogdm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpzZXRDYXB0
aW9uRGlzcGxheU1vZGUoQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6Q2FwdGlvbkRpc3BsYXlNb2Rl
IG1vZGUpCiB7CiAgICAgbV9kaXNwbGF5TW9kZSA9IG1vZGU7Ci0gICAgaWYgKG1fdGVzdGluZ01v
ZGUgJiYgbW9kZSAhPSBBbHdheXNPbikgeworICAgIGlmICh0ZXN0aW5nTW9kZSgpICYmIG1vZGUg
IT0gQWx3YXlzT24pIHsKICAgICAgICAgc2V0VXNlclByZWZlcnNDYXB0aW9ucyhmYWxzZSk7CiAg
ICAgICAgIHNldFVzZXJQcmVmZXJzU3VidGl0bGVzKGZhbHNlKTsKICAgICB9CkBAIC0xNzYsNyAr
MTc2LDcgQEAgdm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpjYXB0aW9uUHJlZmVyZW5jZXND
aGFuZ2VkKCkKIFZlY3RvcjxTdHJpbmc+IENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnByZWZlcnJl
ZExhbmd1YWdlcygpIGNvbnN0CiB7CiAgICAgVmVjdG9yPFN0cmluZz4gbGFuZ3VhZ2VzID0gdXNl
clByZWZlcnJlZExhbmd1YWdlcyhTaG91bGRNaW5pbWl6ZUxhbmd1YWdlczo6Tm8pOwotICAgIGlm
IChtX3Rlc3RpbmdNb2RlICYmICFtX3VzZXJQcmVmZXJyZWRMYW5ndWFnZS5pc0VtcHR5KCkpCisg
ICAgaWYgKHRlc3RpbmdNb2RlKCkgJiYgIW1fdXNlclByZWZlcnJlZExhbmd1YWdlLmlzRW1wdHko
KSkKICAgICAgICAgbGFuZ3VhZ2VzLmluc2VydCgwLCBtX3VzZXJQcmVmZXJyZWRMYW5ndWFnZSk7
CiAKICAgICByZXR1cm4gbGFuZ3VhZ2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25V
c2VyUHJlZmVyZW5jZXMuaAppbmRleCBjYzUwMWY3OTE1MzE2ZTE0MDM5YzBkNzJmZjkxNDU0ZTMz
MDM1M2ZlLi43ZTY3ZWE0NzI3YWVjYWViNThmODM5MTY2NmJhM2RkYjJlYWJlZjY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaApAQCAtMzYsNiArMzYs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNUZXN0aW5nTW9kZVRva2VuOwogY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKIGNsYXNzIFBhZ2U7
CiBjbGFzcyBQYWdlR3JvdXA7CkBAIC05OCw4ICs5OSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRQcmltYXJ5QXVkaW9UcmFja0xhbmd1YWdlT3ZlcnJpZGUoY29uc3QgU3RyaW5nJiBsYW5ndWFn
ZSkgeyBtX3ByaW1hcnlBdWRpb1RyYWNrTGFuZ3VhZ2VPdmVycmlkZSA9IGxhbmd1YWdlOyAgfQog
ICAgIFN0cmluZyBwcmltYXJ5QXVkaW9UcmFja0xhbmd1YWdlT3ZlcnJpZGUoKSBjb25zdDsKIAot
ICAgIHZpcnR1YWwgYm9vbCB0ZXN0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGVzdGluZ01v
ZGU7IH0KLSAgICB2b2lkIHNldFRlc3RpbmdNb2RlKGJvb2wgb3ZlcnJpZGUpIHsgbV90ZXN0aW5n
TW9kZSA9IG92ZXJyaWRlOyB9CisgICAgdmlydHVhbCBib29sIHRlc3RpbmdNb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV90ZXN0aW5nTW9kZUNvdW50OyB9CisKKyAgICBmcmllbmQgY2xhc3MgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc1Rlc3RpbmdNb2RlVG9rZW47CisgICAgVW5pcXVlUmVmPENhcHRpb25V
c2VyUHJlZmVyZW5jZXNUZXN0aW5nTW9kZVRva2VuPiBjcmVhdGVUZXN0aW5nTW9kZVRva2VuKCkg
eyByZXR1cm4gbWFrZVVuaXF1ZVJlZjxDYXB0aW9uVXNlclByZWZlcmVuY2VzVGVzdGluZ01vZGVU
b2tlbj4oKnRoaXMpOyB9CiAgICAgCiAgICAgUGFnZUdyb3VwJiBwYWdlR3JvdXAoKSBjb25zdCB7
IHJldHVybiBtX3BhZ2VHcm91cDsgfQogCkBAIC0xMTEsNiArMTE0LDE0IEBAIHByb3RlY3RlZDoK
ICAgICB2b2lkIGVuZEJsb2NraW5nTm90aWZpY2F0aW9ucygpOwogCiBwcml2YXRlOgorICAgIHZv
aWQgaW5jcmVtZW50VGVzdGluZ01vZGVDb3VudCgpIHsgKyttX3Rlc3RpbmdNb2RlQ291bnQ7IH0K
KyAgICB2b2lkIGRlY3JlbWVudFRlc3RpbmdNb2RlQ291bnQoKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKG1fdGVzdGluZ01vZGVDb3VudCk7CisgICAgICAgIGlmIChtX3Rlc3RpbmdNb2RlQ291bnQp
CisgICAgICAgICAgICAtLW1fdGVzdGluZ01vZGVDb3VudDsKKyAgICB9CisKICAgICB2b2lkIHRp
bWVyRmlyZWQoKTsKICAgICB2b2lkIG5vdGlmeSgpOwogICAgIFBhZ2UqIGN1cnJlbnRQYWdlKCkg
Y29uc3Q7CkBAIC0xMjMsOCArMTM0LDI1IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fY2FwdGlv
bnNTdHlsZVNoZWV0T3ZlcnJpZGU7CiAgICAgU3RyaW5nIG1fcHJpbWFyeUF1ZGlvVHJhY2tMYW5n
dWFnZU92ZXJyaWRlOwogICAgIHVuc2lnbmVkIG1fYmxvY2tOb3RpZmljYXRpb25zQ291bnRlciB7
IDAgfTsKLSAgICBib29sIG1fdGVzdGluZ01vZGUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXZl
UHJlZmVyZW5jZXMgeyBmYWxzZSB9OworICAgIHVuc2lnbmVkIG1fdGVzdGluZ01vZGVDb3VudCB7
IDAgfTsKK307CisKK2NsYXNzIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNUZXN0aW5nTW9kZVRva2Vu
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBDYXB0aW9uVXNl
clByZWZlcmVuY2VzVGVzdGluZ01vZGVUb2tlbihDYXB0aW9uVXNlclByZWZlcmVuY2VzJiBwYXJl
bnQpCisgICAgICAgIDogbV9wYXJlbnQocGFyZW50KQorICAgIHsKKyAgICAgICAgcGFyZW50Lmlu
Y3JlbWVudFRlc3RpbmdNb2RlQ291bnQoKTsKKyAgICB9CisgICAgfkNhcHRpb25Vc2VyUHJlZmVy
ZW5jZXNUZXN0aW5nTW9kZVRva2VuKCkKKyAgICB7CisgICAgICAgIGlmIChtX3BhcmVudCkKKyAg
ICAgICAgICAgIG1fcGFyZW50LT5kZWNyZW1lbnRUZXN0aW5nTW9kZUNvdW50KCk7CisgICAgfQor
cHJpdmF0ZToKKyAgICBXZWFrUHRyPENhcHRpb25Vc2VyUHJlZmVyZW5jZXM+IG1fcGFyZW50Owog
fTsKICAgICAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCA4
ZWJjZjI5NGZiNjdhNDViMmY0NzBmOWY3ZmQxYjcxNjViNjJlNGEzLi44NzIwODQwOGE2Yzk1Yzcy
YzZjZGJmZmMxZTEyZDkzNGQ5Yzg3ODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oCkBAIC0yNjksNiArMjY5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBp
c1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclNjcm9sbGJhclBhcnQoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclZUVEN1ZSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBib29sIGlzRG9jdW1lbnRFbGVtZW50UmVuZGVyZXIo
KSBjb25zdCB7IHJldHVybiBkb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpID09ICZtX25vZGU7
IH0KICAgICBib29sIGlzQm9keSgpIGNvbnN0IHsgcmV0dXJuIG5vZGUoKSAmJiBub2RlKCktPmhh
c1RhZ05hbWUoSFRNTE5hbWVzOjpib2R5VGFnKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZUVEN1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVlRUQ3VlLmNwcAppbmRleCA1YmFlOGVmZTdhOGZjODE2MjJiMjBlODhhN2ZlYjVhMmNi
NGZlZWM0Li5jMjEyMDMwMWRmNDMxZDVkNDExZWNkOWMzOTViYWE1NmQ4NTRiMWQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmNwcApAQCAtNjAsNyArNjAsNyBAQCB2
b2lkIFJlbmRlclZUVEN1ZTo6bGF5b3V0KCkKICAgICBpZiAoIW1fY3VlLT5yZWdpb25JZCgpLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTGF5b3V0U3RhdGVNYWludGFpbmVyIHN0
YXRlUHVzaGVyKCp0aGlzLCBsb2NhdGlvbk9mZnNldCgpLCBoYXNUcmFuc2Zvcm0oKSB8fCBoYXNS
ZWZsZWN0aW9uKCkgfHwgc3R5bGUoKS5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKTsKKyAg
ICBMYXlvdXRTdGF0ZU1haW50YWluZXIgc3RhdGVQdXNoZXIoKnRoaXMsIGxvY2F0aW9uT2Zmc2V0
KCksIHRydWUpOwogCiAgICAgaWYgKG1fY3VlLT5jdWVUeXBlKCk9PSBUZXh0VHJhY2tDdWU6Oldl
YlZUVCkgewogICAgICAgICBpZiAobV9jdWUtPnNuYXBUb0xpbmVzKCkpCkBAIC03OSwxMiArNzks
NyBAQCBib29sIFJlbmRlclZUVEN1ZTo6aW5pdGlhbGl6ZUxheW91dFBhcmFtZXRlcnMoTGVnYWN5
SW5saW5lRmxvd0JveComIGZpcnN0TGluZUJveAogCiAgICAgUmVuZGVyQmxvY2sqIHBhcmVudEJs
b2NrID0gY29udGFpbmluZ0Jsb2NrKCk7CiAKLSAgICAvLyBmaXJzdENoaWxkKCkgcmV0dXJucyB0
aGUgd3JhcHBpbmcgKGJhY2tkcm9wKSA8ZGl2Pi4gVGhlIGN1ZSBvYmplY3QgaXMKLSAgICAvLyB0
aGUgPGRpdj4ncyBmaXJzdCBjaGlsZC4KLSAgICBSZW5kZXJPYmplY3QmIGZpcnN0Q2hpbGQgPSAq
dGhpcy0+Zmlyc3RDaGlsZCgpOwotICAgIFJlbmRlckVsZW1lbnQmIGJhY2tkcm9wRWxlbWVudCA9
IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KGZpcnN0Q2hpbGQpOwotICAgIAotICAgIGZpcnN0TGlu
ZUJveCA9IGRvd25jYXN0PFJlbmRlcklubGluZT4oKmJhY2tkcm9wRWxlbWVudC5maXJzdENoaWxk
KCkpLmZpcnN0TGluZUJveCgpOworICAgIGZpcnN0TGluZUJveCA9IGN1ZUJveCgpLmZpcnN0TGlu
ZUJveCgpOwogICAgIGlmICghZmlyc3RMaW5lQm94KQogICAgICAgICBmaXJzdExpbmVCb3ggPSB0
aGlzLT5maXJzdFJvb3RCb3goKTsKIApAQCAtOTIsNiArODcsMTkgQEAgYm9vbCBSZW5kZXJWVFRD
dWU6OmluaXRpYWxpemVMYXlvdXRQYXJhbWV0ZXJzKExlZ2FjeUlubGluZUZsb3dCb3gqJiBmaXJz
dExpbmVCb3gKICAgICAvLyAgICBWZXJ0aWNhbDogTGV0IHN0ZXAgYmUgdGhlIHdpZHRoIG9mIHRo
ZSBmaXJzdCBsaW5lIGJveCBpbiBib3hlcy4KICAgICBzdGVwID0gbV9jdWUtPmdldFdyaXRpbmdE
aXJlY3Rpb24oKSA9PSBWVFRDdWU6Okhvcml6b250YWwgPyBmaXJzdExpbmVCb3gtPmhlaWdodCgp
IDogZmlyc3RMaW5lQm94LT53aWR0aCgpOwogCisgICAgLy8gTm90ZTogdGhlIHByZXZpb3VzIHJ1
bGVzIGluIGluaXRpYWxpemVMYXlvdXRQYXJhbWV0ZXJzKCkgb25seSBhY2NvdW50IGZvcgorICAg
IC8vIHRoZSBoZWlnaHQgb2YgdGhlIGxpbmUgYm94ZXMgY29udGFpbmVkIHdpdGhpbiB0aGUgY3Vl
LCBhbmQgbm90IHRoZSBjdWUncyBoZWlnaHQKKyAgICAvLyBub3IgaXRzIHBhZGRpbmcsIG5vciBp
dHMgYm9yZGVycy4gSWdub3JpbmcgdGhlc2Ugd2lsbCBsZWFkIHRvIGVycm9ycworICAgIC8vIGlu
IHRoZSBpbml0aWFsIHBsYWNlbWVudCBvZiBjdWVzLCBhcyB0aGUgcmVzdWx0aW5nIHBsYWNlbWVu
dCB3aWxsIHJlc3VsdCBpbgorICAgIC8vIHRoZSBjdWUgYWx3YXlzIGJlaW5nIHBhcnRpYWxseSBv
dXRzaWRlIGl0cyBjb250YWluaW5nIGJsb2NrLCByYXRoZXIgdGhhbiBhdAorICAgIC8vIGl0cyBp
bml0aWFsIHBvc2l0aW9uLiBDb3JyZWN0IHRoZSBpbml0aWFsIHBvc2l0aW9uIGJ5IHN1YnRyYWN0
aW5nIGZyb20KKyAgICAvLyBwb3NpdGlvbiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0aGUg
bG9naWNhbEhlaWdodCBvZiB0aGUgY3VlIGFuZCBpdHMKKyAgICAvLyBmaXJzdCBsaW5lIGJveC4K
KyAgICBhdXRvJiBiYWNrZHJvcEJveCA9IHRoaXMtPmJhY2tkcm9wQm94KCk7CisgICAgYXV0byBs
b2dpY2FsSGVpZ2h0RGVsdGEgPSBiYWNrZHJvcEJveC5sb2dpY2FsSGVpZ2h0KCkgLSBmaXJzdExp
bmVCb3gtPmxvZ2ljYWxIZWlnaHQoKTsKKyAgICBpZiAobG9naWNhbEhlaWdodERlbHRhID4gMCkK
KyAgICAgICAgc3RlcCArPSBsb2dpY2FsSGVpZ2h0RGVsdGE7CisKICAgICAvLyAyLiBJZiBzdGVw
IGlzIHplcm8sIHRoZW4ganVtcCB0byB0aGUgc3RlcCBsYWJlbGVkIGRvbmUgcG9zaXRpb25pbmcg
YmVsb3cuCiAgICAgaWYgKCFzdGVwKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNDYsNyAr
MTU0LDcgQEAgdm9pZCBSZW5kZXJWVFRDdWU6OnBsYWNlQm94SW5EZWZhdWx0UG9zaXRpb24oTGF5
b3V0VW5pdCBwb3NpdGlvbiwgYm9vbCYgc3dpdGNoZWQKIAogYm9vbCBSZW5kZXJWVFRDdWU6Omlz
T3V0c2lkZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFyZWN0SXNXaXRoaW5Db250YWluZXIoYWJz
b2x1dGVDb250ZW50Qm94KCkpOworICAgIHJldHVybiAhcmVjdElzV2l0aGluQ29udGFpbmVyKGJh
Y2tkcm9wQm94KCkuYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSk7CiB9CiAKIGJvb2wgUmVuZGVy
VlRUQ3VlOjpyZWN0SXNXaXRoaW5Db250YWluZXIoY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3QK
QEAgLTE2MCwxOCArMTY4LDIwIEBAIGJvb2wgUmVuZGVyVlRUQ3VlOjppc092ZXJsYXBwaW5nKCkg
Y29uc3QKICAgICByZXR1cm4gb3ZlcmxhcHBpbmdPYmplY3QoKTsKIH0KIAotUmVuZGVyT2JqZWN0
KiBSZW5kZXJWVFRDdWU6Om92ZXJsYXBwaW5nT2JqZWN0KCkgY29uc3QKK1JlbmRlclZUVEN1ZSog
UmVuZGVyVlRUQ3VlOjpvdmVybGFwcGluZ09iamVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG92
ZXJsYXBwaW5nT2JqZWN0Rm9yUmVjdChhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsKKyAgICBy
ZXR1cm4gb3ZlcmxhcHBpbmdPYmplY3RGb3JSZWN0KGJhY2tkcm9wQm94KCkuYWJzb2x1dGVCb3Vu
ZGluZ0JveFJlY3QoKSk7CiB9CiAKLVJlbmRlck9iamVjdCogUmVuZGVyVlRUQ3VlOjpvdmVybGFw
cGluZ09iamVjdEZvclJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3QKK1JlbmRlclZUVEN1
ZSogUmVuZGVyVlRUQ3VlOjpvdmVybGFwcGluZ09iamVjdEZvclJlY3QoY29uc3QgSW50UmVjdCYg
cmVjdCkgY29uc3QKIHsKLSAgICBmb3IgKFJlbmRlck9iamVjdCogYm94ID0gcHJldmlvdXNTaWJs
aW5nKCk7IGJveDsgYm94ID0gYm94LT5wcmV2aW91c1NpYmxpbmcoKSkgewotICAgICAgICBJbnRS
ZWN0IGJveFJlY3QgPSBib3gtPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CisgICAgZm9yIChS
ZW5kZXJPYmplY3QqIHNpYmxpbmcgPSBwcmV2aW91c1NpYmxpbmcoKTsgc2libGluZzsgc2libGlu
ZyA9IHNpYmxpbmctPnByZXZpb3VzU2libGluZygpKSB7CisgICAgICAgIGF1dG8qIHByZXZpb3Vz
Q3VlID0gZG93bmNhc3Q8UmVuZGVyVlRUQ3VlPihzaWJsaW5nKTsKKyAgICAgICAgaWYgKCFwcmV2
aW91c0N1ZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChyZWN0LmludGVy
c2VjdHMoYm94UmVjdCkpCi0gICAgICAgICAgICByZXR1cm4gYm94OworICAgICAgICBpZiAocmVj
dC5pbnRlcnNlY3RzKHByZXZpb3VzQ3VlLT5iYWNrZHJvcEJveCgpLmFic29sdXRlQm91bmRpbmdC
b3hSZWN0KCkpKQorICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzQ3VlOwogICAgIH0KIAogICAg
IHJldHVybiAwOwpAQCAtMjQzLDcgKzI1Myw3IEBAIGJvb2wgUmVuZGVyVlRUQ3VlOjpzd2l0Y2hE
aXJlY3Rpb24oYm9vbCYgc3dpdGNoZWQsIExheW91dFVuaXQmIHN0ZXApCiB2b2lkIFJlbmRlclZU
VEN1ZTo6bW92ZUlmTmVjZXNzYXJ5VG9LZWVwV2l0aGluQ29udGFpbmVyKCkKIHsKICAgICBJbnRS
ZWN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluaW5nQmxvY2soKS0+YWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3QoKTsKLSAgICBJbnRSZWN0IGN1ZVJlY3QgPSBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgp
OworICAgIEludFJlY3QgY3VlUmVjdCA9IGJhY2tkcm9wQm94KCkuYWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3QoKTsKIAogICAgIGludCB0b3BPdmVyZmxvdyA9IGN1ZVJlY3QueSgpIC0gY29udGFpbmVy
UmVjdC55KCk7CiAgICAgaW50IGJvdHRvbU92ZXJmbG93ID0gY29udGFpbmVyUmVjdC5tYXhZKCkg
LSBjdWVSZWN0Lm1heFkoKTsKQEAgLTI3NCwxNSArMjg0LDE1IEBAIGJvb2wgUmVuZGVyVlRUQ3Vl
OjpmaW5kTm9uT3ZlcmxhcHBpbmdQb3NpdGlvbihpbnQmIG5ld1gsIGludCYgbmV3WSkgY29uc3QK
IHsKICAgICBuZXdYID0geCgpOwogICAgIG5ld1kgPSB5KCk7Ci0gICAgSW50UmVjdCBzcmNSZWN0
ID0gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKKyAgICBJbnRSZWN0IHNyY1JlY3QgPSBiYWNr
ZHJvcEJveCgpLmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CiAgICAgSW50UmVjdCBkZXN0UmVj
dCA9IHNyY1JlY3Q7CiAKICAgICAvLyBNb3ZlIHRoZSBib3ggdXAsIGxvb2tpbmcgZm9yIGEgbm9u
LW92ZXJsYXBwaW5nIHBvc2l0aW9uOgotICAgIHdoaWxlIChSZW5kZXJPYmplY3QqIGJveCA9IG92
ZXJsYXBwaW5nT2JqZWN0Rm9yUmVjdChkZXN0UmVjdCkpIHsKKyAgICB3aGlsZSAoUmVuZGVyVlRU
Q3VlKiBjdWUgPSBvdmVybGFwcGluZ09iamVjdEZvclJlY3QoZGVzdFJlY3QpKSB7CiAgICAgICAg
IGlmIChtX2N1ZS0+Z2V0V3JpdGluZ0RpcmVjdGlvbigpID09IFZUVEN1ZTo6SG9yaXpvbnRhbCkK
LSAgICAgICAgICAgIGRlc3RSZWN0LnNldFkoYm94LT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgp
LnkoKSAtIGRlc3RSZWN0LmhlaWdodCgpKTsKKyAgICAgICAgICAgIGRlc3RSZWN0LnNldFkoY3Vl
LT5iYWNrZHJvcEJveCgpLmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkueSgpIC0gZGVzdFJlY3Qu
aGVpZ2h0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBkZXN0UmVjdC5zZXRYKGJveC0+
YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKS54KCkgLSBkZXN0UmVjdC53aWR0aCgpKTsKKyAgICAg
ICAgICAgIGRlc3RSZWN0LnNldFgoY3VlLT5iYWNrZHJvcEJveCgpLmFic29sdXRlQm91bmRpbmdC
b3hSZWN0KCkueCgpIC0gZGVzdFJlY3Qud2lkdGgoKSk7CiAgICAgfQogCiAgICAgaWYgKHJlY3RJ
c1dpdGhpbkNvbnRhaW5lcihkZXN0UmVjdCkpIHsKQEAgLTI5NCwxMSArMzA0LDExIEBAIGJvb2wg
UmVuZGVyVlRUQ3VlOjpmaW5kTm9uT3ZlcmxhcHBpbmdQb3NpdGlvbihpbnQmIG5ld1gsIGludCYg
bmV3WSkgY29uc3QKICAgICBkZXN0UmVjdCA9IHNyY1JlY3Q7CiAKICAgICAvLyBNb3ZlIHRoZSBi
b3ggZG93biwgbG9va2luZyBmb3IgYSBub24tb3ZlcmxhcHBpbmcgcG9zaXRpb246Ci0gICAgd2hp
bGUgKFJlbmRlck9iamVjdCogYm94ID0gb3ZlcmxhcHBpbmdPYmplY3RGb3JSZWN0KGRlc3RSZWN0
KSkgeworICAgIHdoaWxlIChSZW5kZXJWVFRDdWUqIGN1ZSA9IG92ZXJsYXBwaW5nT2JqZWN0Rm9y
UmVjdChkZXN0UmVjdCkpIHsKICAgICAgICAgaWYgKG1fY3VlLT5nZXRXcml0aW5nRGlyZWN0aW9u
KCkgPT0gVlRUQ3VlOjpIb3Jpem9udGFsKQotICAgICAgICAgICAgZGVzdFJlY3Quc2V0WShib3gt
PmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkubWF4WSgpKTsKKyAgICAgICAgICAgIGRlc3RSZWN0
LnNldFkoY3VlLT5iYWNrZHJvcEJveCgpLmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkubWF4WSgp
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZGVzdFJlY3Quc2V0WChib3gtPmFic29sdXRl
Qm91bmRpbmdCb3hSZWN0KCkubWF4WCgpKTsKKyAgICAgICAgICAgIGRlc3RSZWN0LnNldFgoY3Vl
LT5iYWNrZHJvcEJveCgpLmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkubWF4WCgpKTsKICAgICB9
CiAKICAgICBpZiAocmVjdElzV2l0aGluQ29udGFpbmVyKGRlc3RSZWN0KSkgewpAQCAtMzQ1LDEy
ICszNTUsNyBAQCB2b2lkIFJlbmRlclZUVEN1ZTo6cmVwb3NpdGlvbkdlbmVyaWNDdWUoKQogewog
ICAgIEFTU0VSVChmaXJzdENoaWxkKCkpOwogCi0gICAgLy8gZmlyc3RDaGlsZCgpIHJldHVybnMg
dGhlIHdyYXBwaW5nIChiYWNrZHJvcCkgPGRpdj4uIFRoZSBjdWUgb2JqZWN0IGlzCi0gICAgLy8g
dGhlIDxkaXY+J3MgZmlyc3QgY2hpbGQuCi0gICAgUmVuZGVyT2JqZWN0JiBmaXJzdENoaWxkID0g
KnRoaXMtPmZpcnN0Q2hpbGQoKTsKLSAgICBSZW5kZXJFbGVtZW50JiBiYWNrZHJvcEVsZW1lbnQg
PSBkb3duY2FzdDxSZW5kZXJFbGVtZW50PihmaXJzdENoaWxkKTsKLSAgICAKLSAgICBMZWdhY3lJ
bmxpbmVGbG93Qm94KiBmaXJzdExpbmVCb3ggPSBkb3duY2FzdDxSZW5kZXJJbmxpbmU+KCpiYWNr
ZHJvcEVsZW1lbnQuZmlyc3RDaGlsZCgpKS5maXJzdExpbmVCb3goKTsKKyAgICBMZWdhY3lJbmxp
bmVGbG93Qm94KiBmaXJzdExpbmVCb3ggPSBjdWVCb3goKS5maXJzdExpbmVCb3goKTsKICAgICBp
ZiAoZG93bmNhc3Q8VGV4dFRyYWNrQ3VlR2VuZXJpYz4oKm1fY3VlKS51c2VEZWZhdWx0UG9zaXRp
b24oKSAmJiBmaXJzdExpbmVCb3gpIHsKICAgICAgICAgTGF5b3V0VW5pdCBwYXJlbnRXaWR0aCA9
IGNvbnRhaW5pbmdCbG9jaygpLT5sb2dpY2FsV2lkdGgoKTsKICAgICAgICAgTGF5b3V0VW5pdCB3
aWR0aCB7IGZpcnN0TGluZUJveC0+d2lkdGgoKSB9OwpAQCAtMzg0LDYgKzM4OSwyMSBAQCB2b2lk
IFJlbmRlclZUVEN1ZTo6cmVwb3NpdGlvbkN1ZVNuYXBUb0xpbmVzTm90U2V0KCkKICAgICBzZXRZ
KHkpOwogfQogCitSZW5kZXJCbG9ja0Zsb3cmIFJlbmRlclZUVEN1ZTo6YmFja2Ryb3BCb3goKSBj
b25zdAoreworICAgIEFTU0VSVChmaXJzdENoaWxkKCkpOworCisgICAgLy8gZmlyc3RDaGlsZCgp
IHJldHVybnMgdGhlIHdyYXBwaW5nIChiYWNrZHJvcCkgPGRpdj4uIFRoZSBjdWUgb2JqZWN0IGlz
CisgICAgLy8gdGhlIDxkaXY+J3MgZmlyc3QgY2hpbGQuCisgICAgUmVuZGVyT2JqZWN0JiBmaXJz
dENoaWxkID0gKnRoaXMtPmZpcnN0Q2hpbGQoKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVy
QmxvY2tGbG93PihmaXJzdENoaWxkKTsKK30KKworUmVuZGVySW5saW5lJiBSZW5kZXJWVFRDdWU6
OmN1ZUJveCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlcklubGluZT4oKmJh
Y2tkcm9wQm94KCkuZmlyc3RDaGlsZCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRD
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuaAppbmRleCAyYzU1
N2I2ZGU2MDg1NjhkZjgxNmM0YWNiMzE5NzExOTU2YTk2NDI0Li42MWY5ZTgxNjY2M2I3OWYxNzY5
MjMwODMzZDU2YWRkMGQzYTZhOGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVlRUQ3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZU
VEN1ZS5oCkBAIC00MiwxMyArNDIsMTUgQEAgcHVibGljOgogICAgIFJlbmRlclZUVEN1ZShWVFRD
dWVCb3gmLCBSZW5kZXJTdHlsZSYmKTsKIAogcHJpdmF0ZToKKyAgICBib29sIGlzUmVuZGVyVlRU
Q3VlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorCiAgICAgdm9pZCBsYXlvdXQoKSBv
dmVycmlkZTsKIAogICAgIGJvb2wgaXNPdXRzaWRlKCkgY29uc3Q7CiAgICAgYm9vbCByZWN0SXNX
aXRoaW5Db250YWluZXIoY29uc3QgSW50UmVjdCYpIGNvbnN0OwogICAgIGJvb2wgaXNPdmVybGFw
cGluZygpIGNvbnN0OwotICAgIFJlbmRlck9iamVjdCogb3ZlcmxhcHBpbmdPYmplY3QoKSBjb25z
dDsKLSAgICBSZW5kZXJPYmplY3QqIG92ZXJsYXBwaW5nT2JqZWN0Rm9yUmVjdChjb25zdCBJbnRS
ZWN0JikgY29uc3Q7CisgICAgUmVuZGVyVlRUQ3VlKiBvdmVybGFwcGluZ09iamVjdCgpIGNvbnN0
OworICAgIFJlbmRlclZUVEN1ZSogb3ZlcmxhcHBpbmdPYmplY3RGb3JSZWN0KGNvbnN0IEludFJl
Y3QmKSBjb25zdDsKICAgICBib29sIHNob3VsZFN3aXRjaERpcmVjdGlvbihMZWdhY3lJbmxpbmVG
bG93Qm94KiwgTGF5b3V0VW5pdCkgY29uc3Q7CiAKICAgICB2b2lkIG1vdmVCb3hlc0J5U3RlcChM
YXlvdXRVbml0KTsKQEAgLTYyLDEwICs2NCwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVwb3Np
dGlvbkN1ZVNuYXBUb0xpbmVzTm90U2V0KCk7CiAgICAgdm9pZCByZXBvc2l0aW9uR2VuZXJpY0N1
ZSgpOwogCisgICAgUmVuZGVyQmxvY2tGbG93JiBiYWNrZHJvcEJveCgpIGNvbnN0OworICAgIFJl
bmRlcklubGluZSYgY3VlQm94KCkgY29uc3Q7CisKICAgICBWVFRDdWUqIG1fY3VlOwogICAgIEZs
b2F0UG9pbnQgbV9mYWxsYmFja1Bvc2l0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyVlRUQ3VlLCBp
c1JlbmRlclZUVEN1ZSgpKQorCiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDQyZTljMGQ2ODU4ZWM5MWMzMTljYjIzMzRjZTBiMjIx
NTMzMWZhNmMuLjU5M2U0NGFhYTNmYjRhNDBjNjlmYzM0NzljMmI2NGUwYmIwYWZmNmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTU0NSwxMCArNTQ1LDggQEAgdm9pZCBJ
bnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUoUGFnZSYgcGFnZSkKICAgICBwYWdlLm1h
aW5GcmFtZSgpLmxvYWRlcigpLmNsZWFyVGVzdGluZ092ZXJyaWRlcygpOwogICAgIHBhZ2UuYXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UoKS5zZXREZWZhdWx0T3JpZ2luUXVvdGEoQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6Om5vUXVvdGEoKSk7CiAjaWYgRU5BQkxFKFZJREVPKQotICAgIHBhZ2UuZ3Jv
dXAoKS5lbnN1cmVDYXB0aW9uUHJlZmVyZW5jZXMoKS5zZXRUZXN0aW5nTW9kZSh0cnVlKTsKICAg
ICBwYWdlLmdyb3VwKCkuZW5zdXJlQ2FwdGlvblByZWZlcmVuY2VzKCkuc2V0Q2FwdGlvbkRpc3Bs
YXlNb2RlKENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkZvcmNlZE9ubHkpOwogICAgIHBhZ2UuZ3Jv
dXAoKS5lbnN1cmVDYXB0aW9uUHJlZmVyZW5jZXMoKS5zZXRDYXB0aW9uc1N0eWxlU2hlZXRPdmVy
cmlkZShlbXB0eVN0cmluZygpKTsKLSAgICBwYWdlLmdyb3VwKCkuZW5zdXJlQ2FwdGlvblByZWZl
cmVuY2VzKCkuc2V0VGVzdGluZ01vZGUoZmFsc2UpOwogICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnJlc2V0SGF2ZUV2ZXJSZWdpc3RlcmVkQXNOb3dQbGF5
aW5nQXBwbGljYXRpb25Gb3JUZXN0aW5nKCk7CiAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVzZXRSZXN0cmljdGlvbnMoKTsKICAgICBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zZXRXaWxsSWdub3JlU3lzdGVtSW50
ZXJydXB0aW9ucyh0cnVlKTsKQEAgLTYyMywxMiArNjIxLDEwIEBAIEludGVybmFsczo6SW50ZXJu
YWxzKERvY3VtZW50JiBkb2N1bWVudCkKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgICwg
bV9vcmllbnRhdGlvbk5vdGlmaWVyKDApCiAjZW5kaWYKLXsKICNpZiBFTkFCTEUoVklERU8pCi0g
ICAgaWYgKGRvY3VtZW50LnBhZ2UoKSkKLSAgICAgICAgZG9jdW1lbnQucGFnZSgpLT5ncm91cCgp
LmVuc3VyZUNhcHRpb25QcmVmZXJlbmNlcygpLnNldFRlc3RpbmdNb2RlKHRydWUpOworICAgICwg
bV90ZXN0aW5nTW9kZVRva2VuKGRvY3VtZW50LnBhZ2UoKS0+Z3JvdXAoKS5lbnN1cmVDYXB0aW9u
UHJlZmVyZW5jZXMoKS5jcmVhdGVUZXN0aW5nTW9kZVRva2VuKCkpCiAjZW5kaWYKLQorewogI2lm
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgaWYgKGRvY3VtZW50LnBhZ2Uo
KSkKICAgICAgICAgZG9jdW1lbnQucGFnZSgpLT5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlckVuYWJsZWQodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA4ZDM0
NzU3ZjhlZDRkYmFjMjQzMjlkNjJjYWY1NDI1OTlmZjM0YzhkLi5lMjY3OGZmNGNjMDQ2Y2I4Mjg2
ZWVlM2Y1MjljYjE0YTIyNjIyNzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAg
LTU2LDYgKzU2LDcgQEAgY2xhc3MgQXVkaW9UcmFjazsKIGNsYXNzIEJhc2VBdWRpb0NvbnRleHQ7
CiBjbGFzcyBCbG9iOwogY2xhc3MgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKK2NsYXNzIENhcHRp
b25Vc2VyUHJlZmVyZW5jZXNUZXN0aW5nTW9kZVRva2VuOwogY2xhc3MgRE9NUG9pbnRSZWFkT25s
eTsKIGNsYXNzIERPTVJlY3Q7CiBjbGFzcyBET01SZWN0TGlzdDsKQEAgLTEyNjIsNiArMTI2Myw5
IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT05fQ09PUkRJTkFUT1IpCiAgICAg
UmVmUHRyPE1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcj4gbV9tb2NrTWVkaWFTZXNzaW9uQ29v
cmRpbmF0b3I7CiAjZW5kaWYKKyNpZiBFTkFCTEUoVklERU8pCisgICAgVW5pcXVlUmVmPENhcHRp
b25Vc2VyUHJlZmVyZW5jZXNUZXN0aW5nTW9kZVRva2VuPiBtX3Rlc3RpbmdNb2RlVG9rZW47Cisj
ZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2MjEwZjVhMzMxNjcz
NDQ0Y2UxMzUyM2FiYzIwMzIwM2MyY2I1NDlmLi5kNDIwMjcyNDg5MmY4MmUxNGQ5YzI3YzFiYTlm
OWQwY2MzODQ2YjM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjEtMTItMDYgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1ZUVF0gRml4IHZhcmlvdXMgaXNz
dWVzIHdpdGggY29tcGxpY2F0ZWQgcmVuZGVyaW5nIG9mIFZUVCBjdWVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM5MDEKKworICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBtZWRpYS90cmFjay9jYXB0aW9ucy13
ZWJ2dHQvbm8tc25hcC10by1saW5lcy1vdmVybGFwLnZ0dDogQWRkZWQuCisgICAgICAgICogbWVk
aWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L3NuYXAtdG8tbGluZXMtaW5saW5lLXN0eWxlLnZ0dDog
QWRkZWQuCisgICAgICAgICogbWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L3NuYXAtdG8tbGlu
ZXMtbGVmdC1hbmQtcmlnaHQudnR0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay90cmFj
ay13ZWJ2dHQtbm8tc25hcC10by1saW5lcy1vdmVybGFwLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1uby1zbmFwLXRvLWxpbmVzLW92ZXJs
YXAuaHRtbDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdHJhY2svdHJhY2std2VidnR0LXNuYXAt
dG8tbGluZXMtaW5saW5lLXN0eWxlLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1l
ZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRvLWxpbmVzLWlubGluZS1zdHlsZS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay13ZWJ2dHQtc25hcC10by1saW5lcy1s
ZWZ0LXJpZ2h0LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3RyYWNrL3Ry
YWNrLXdlYnZ0dC1zbmFwLXRvLWxpbmVzLWxlZnQtcmlnaHQuaHRtbDogQWRkZWQuCisKIDIwMjEt
MTItMDMgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW2Nzcy1mbGV4Ym94XSBBY2NvdW50IGZvciBjYXB0aW9ucyB3aGVuIGZsZXhpbmcgdGFibGVz
IHdpdGggc3BlY2lmaWVkIHNpemVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFj
ay9jYXB0aW9ucy13ZWJ2dHQvbm8tc25hcC10by1saW5lcy1vdmVybGFwLnZ0dCBiL0xheW91dFRl
c3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9uby1zbmFwLXRvLWxpbmVzLW92ZXJsYXAu
dnR0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM3ZjZmNDRmNGQ5YTdlMTJkMGM2ZWRmZGUyYmFlODE0NGU5YmUyODUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2
dHQvbm8tc25hcC10by1saW5lcy1vdmVybGFwLnZ0dApAQCAtMCwwICsxLDMzIEBACitXRUJWVFQK
KworMQorMDA6MDA6MDAuMDAwIC0tPiAwMDowMDowMC41MDAgYWxpZ246bGVmdCBsaW5lOjAlCitM
ZWZ0CisKKzIKKzAwOjAwOjAwLjAwMCAtLT4gMDA6MDA6MDAuNTAwIGFsaWduOnJpZ2h0IGxpbmU6
MCUKK1JpZ2h0CisKKzMKKzAwOjAwOjAwLjAwMCAtLT4gMDA6MDA6MDAuNTAwIGFsaWduOmxlZnQg
bGluZTowJQorQmVsb3cKKworNAorMDA6MDA6MDAuMDAwIC0tPiAwMDowMDowMC41MDAgYWxpZ246
cmlnaHQgbGluZTowJQorQmVsb3cKKworMQorMDA6MDA6MDAuMDAwIC0tPiAwMDowMDowMC41MDAg
YWxpZ246bGVmdCBsaW5lOjEwMCUKK0xlZnQKKworMgorMDA6MDA6MDAuMDAwIC0tPiAwMDowMDow
MC41MDAgYWxpZ246cmlnaHQgbGluZToxMDAlCitSaWdodAorCiszCiswMDowMDowMC4wMDAgLS0+
IDAwOjAwOjAwLjUwMCBhbGlnbjpsZWZ0IGxpbmU6MTAwJQorQWJvdmUKKworNAorMDA6MDA6MDAu
MDAwIC0tPiAwMDowMDowMC41MDAgYWxpZ246cmlnaHQgbGluZToxMDAlCitBYm92ZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L3NuYXAtdG8tbGlu
ZXMtaW5saW5lLXN0eWxlLnZ0dCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdl
YnZ0dC9zbmFwLXRvLWxpbmVzLWlubGluZS1zdHlsZS52dHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2ZjNTY1NmE0
MWI4OWVjYTgwMTUxMTc0YTU0ODAyNDNmNjYxZjM1MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zbmFwLXRvLWxpbmVzLWlubGluZS1z
dHlsZS52dHQKQEAgLTAsMCArMSwyMCBAQAorV0VCVlRUCisKK1NUWUxFCis6OmN1ZSguZG91Ymxl
SGVpZ2h0KSB7IGZvbnQtc2l6ZTogMjAwJTsgYmFja2dyb3VuZC1jb2xvcjogYmxhY2sgfQorCisx
CiswMDowMDowMC4wMDAgLS0+IDAwOjAwOjAwLjUwMCBhbGlnbjpsZWZ0Cis8Yy5kb3VibGVIZWln
aHQ+TGVmdDwvYz4KKworMgorMDA6MDA6MDAuMDAwIC0tPiAwMDowMDowMC41MDAgYWxpZ246cmln
aHQgcG9zaXRpb246MTAwJQorPGMuZG91YmxlSGVpZ2h0PlJpZ2h0PC9jPgorCiszCiswMDowMDow
MC4wMDAgLS0+IDAwOjAwOjAwLjUwMCBhbGlnbjpsZWZ0Cis8Yy5kb3VibGVIZWlnaHQ+QWJvdmU8
L2M+CisKKzQKKzAwOjAwOjAwLjAwMCAtLT4gMDA6MDA6MDAuNTAwIGFsaWduOnJpZ2h0IHBvc2l0
aW9uOjEwMCUKKzxjLmRvdWJsZUhlaWdodD5BYm92ZTwvYz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zbmFwLXRvLWxpbmVzLWxlZnQtYW5kLXJp
Z2h0LnZ0dCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zbmFwLXRv
LWxpbmVzLWxlZnQtYW5kLXJpZ2h0LnZ0dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMDk2OWUwZGRiMTU2Y2IzZjY0
MTQ2NzJkMzI2MTRhOWNlOWUwYmNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVk
aWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L3NuYXAtdG8tbGluZXMtbGVmdC1hbmQtcmlnaHQudnR0
CkBAIC0wLDAgKzEsMTcgQEAKK1dFQlZUVAorCisxCiswMDowMDowMC4wMDAgLS0+IDAwOjAwOjAw
LjUwMCBhbGlnbjpsZWZ0CitMZWZ0CisKKzIKKzAwOjAwOjAwLjAwMCAtLT4gMDA6MDA6MDAuNTAw
IGFsaWduOnJpZ2h0IHBvc2l0aW9uOjEwMCUKK1JpZ2h0CisKKzMKKzAwOjAwOjAwLjAwMCAtLT4g
MDA6MDA6MDAuNTAwIGFsaWduOmxlZnQKK0Fib3ZlCisKKzQKKzAwOjAwOjAwLjAwMCAtLT4gMDA6
MDA6MDAuNTAwIGFsaWduOnJpZ2h0IHBvc2l0aW9uOjEwMCUKK0Fib3ZlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay13ZWJ2dHQtbm8tc25hcC10by1saW5lcy1vdmVy
bGFwLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay13ZWJ2dHQt
bm8tc25hcC10by1saW5lcy1vdmVybGFwLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjc3YjU1
MzY0ZTA5OGUwMzU3YTE4MWQ4MGQ3YjMwNDMwNjFiZjMwMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1uby1zbmFwLXRvLWxpbmVzLW92ZXJs
YXAtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDU4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+CisgICAgPHRpdGxlPnRyYWNrLXdlYnZ0dC1uby1zbmFwLXRvLWxpbmVzLW92ZXJs
YXA8L3RpdGxlPgorICAgIDxzdHlsZT4KKyAgICAgICAgLnZpZGVvIHsgCisgICAgICAgICAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cisg
ICAgICAgICAgICB3aWR0aDogMzIwcHg7CisgICAgICAgICAgICBoZWlnaHQ6IDI0MHB4OworICAg
ICAgICB9CisgICAgICAgIGh0bWwgeyBvdmVyZmxvdzpoaWRkZW4gfQorICAgICAgICBib2R5IHsg
bWFyZ2luOjAgfQorICAgICAgICAuY3VlLWJveCB7CisgICAgICAgICAgICBwb3NpdGlvbjogYWJz
b2x1dGU7CisgICAgICAgICAgICBmb250LXNpemU6IDEycHg7CisgICAgICAgIH0KKyAgICAgICAg
LmN1ZSB7CisgICAgICAgICAgICBmb250LWZhbWlseTogQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAg
ICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrOworICAgICAgICAgICAgY29sb3I6IGdyZWVu
OworICAgICAgICB9CisgICAgPC9zdHlsZT4KKyAgICA8c2NyaXB0PnZhciByZXF1aXJlUGl4ZWxE
dW1wID0gdHJ1ZTs8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQ+CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBhc3luYyBl
dmVudCA9PiB7CisgICAgICAgIGNvbnNvbGVXcml0ZSgnUlVOKHZpZGVvLnF1ZXJ5U2VsZWN0b3Io
InRyYWNrIikuc3JjID0gImNhcHRpb25zLXdlYnZ0dC9uby1zbmFwLXRvLWxpbmVzLW92ZXJsYXAu
dnR0IiknKTsKKyAgICAgICAgY29uc29sZVdyaXRlKCdSVU4odmlkZW8udGV4dFRyYWNrc1swXS5t
b2RlID0gInNob3dpbmciKScpOworICAgICAgICBjb25zb2xlV3JpdGUoJ0VWRU5UKGxvYWQpJyk7
CisgICAgICAgIGNvbnNvbGVXcml0ZSgnUlVOKHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZp
ZGVvIiwgInczYy90cmFjay93ZWJ2dHQvbWVkaWEvd2hpdGUiKSknKTsKKyAgICAgICAgY29uc29s
ZVdyaXRlKCdFVkVOVChjYW5wbGF5dGhyb3VnaCknKTsKKyAgICAgICAgZW5kVGVzdCgpOworICAg
IH0pOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBjbGFzcz0idmlk
ZW8iPgorICAgICAgICA8ZGl2IGNsYXNzPSJjdWUtYm94IiBzdHlsZT0ibGVmdDowOyB0b3A6MDsg
dGV4dC1hbGlnbjogbGVmdDsiPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImN1ZSI+TGVmdDwv
c3Bhbj48YnI+CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3VlIj5CZWxvdzwvc3Bhbj4KKyAg
ICAgICAgPC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImN1ZS1ib3giIHN0eWxlPSJyaWdodDow
OyB0b3A6MDsgdGV4dC1hbGlnbjogcmlnaHQiPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImN1
ZSI+UmlnaHQ8L3NwYW4+PGJyPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImN1ZSI+QmVsb3c8
L3NwYW4+CisgICAgICAgIDwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJjdWUtYm94IiBzdHls
ZT0ibGVmdDowOyBib3R0b206MDsgdGV4dC1hbGlnbjogbGVmdCI+CisgICAgICAgICAgICA8c3Bh
biBjbGFzcz0iY3VlIj5BYm92ZTwvc3Bhbj48YnI+CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0i
Y3VlIj5MZWZ0PC9zcGFuPgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY3Vl
LWJveCIgc3R5bGU9InJpZ2h0OjA7IGJvdHRvbTowOyB0ZXh0LWFsaWduOiByaWdodCI+CisgICAg
ICAgICAgICA8c3BhbiBjbGFzcz0iY3VlIj5BYm92ZTwvc3Bhbj48YnI+CisgICAgICAgICAgICA8
c3BhbiBjbGFzcz0iY3VlIj5SaWdodDwvc3Bhbj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+
Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2std2VidnR0LW5vLXNuYXAtdG8tbGluZXMt
b3ZlcmxhcC5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2std2VidnR0LW5vLXNu
YXAtdG8tbGluZXMtb3ZlcmxhcC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhZjRiMjA2ZWE5MGNiODA3MDFl
N2M2YTI5NmZmOTc2ODVmYjA1MDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRp
YS90cmFjay90cmFjay13ZWJ2dHQtbm8tc25hcC10by1saW5lcy1vdmVybGFwLmh0bWwKQEAgLTAs
MCArMSwzOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT50
cmFjay13ZWJ2dHQtbm8tc25hcC10by1saW5lcy1vdmVybGFwPC90aXRsZT4KKyAgICA8c3R5bGU+
CisgICAgICAgIGh0bWwgeyBvdmVyZmxvdzpoaWRkZW4gfQorICAgICAgICBib2R5IHsgbWFyZ2lu
OjAgfQorICAgICAgICA6OmN1ZSB7CisgICAgICAgICAgICBmb250LWZhbWlseTogQWhlbSwgc2Fu
cy1zZXJpZjsKKyAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsKKyAgICAgICAgICAgIGJhY2tn
cm91bmQtY29sb3I6IGJsYWNrOworICAgICAgICAgICAgY29sb3I6IGdyZWVuOworICAgICAgICB9
CisgICAgPC9zdHlsZT4KKyAgICA8c2NyaXB0PnZhciByZXF1aXJlUGl4ZWxEdW1wID0gdHJ1ZTs8
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+
CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBhc3luYyBldmVudCA9PiB7Cisg
ICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKworICAgICAgICBydW4oYHZpZGVvLnF1ZXJ5U2Vs
ZWN0b3IoInRyYWNrIikuc3JjID0gImNhcHRpb25zLXdlYnZ0dC9uby1zbmFwLXRvLWxpbmVzLW92
ZXJsYXAudnR0ImApOworICAgICAgICBydW4oYHZpZGVvLnRleHRUcmFja3NbMF0ubW9kZSA9ICJz
aG93aW5nImApOworICAgICAgICBhd2FpdCB3YWl0Rm9yKHZpZGVvLnF1ZXJ5U2VsZWN0b3IoJ3Ry
YWNrJyksICdsb2FkJyk7CisKKyAgICAgICAgcnVuKGB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxl
KCJ2aWRlbyIsICJ3M2MvdHJhY2svd2VidnR0L21lZGlhL3doaXRlIilgKTsKKyAgICAgICAgYXdh
aXQgd2FpdEZvcih2aWRlbywgJ2NhbnBsYXl0aHJvdWdoJyk7CisKKyAgICAgICAgZW5kVGVzdCgp
OworICAgIH0pOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHZpZGVvPgor
ICAgICAgICA8dHJhY2sgaWQ9InRlc3RUcmFjayIga2luZD0iY2FwdGlvbnMiIGRlZmF1bHQ+Cisg
ICAgPC92aWRlbz4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay13ZWJ2dHQtc25hcC10
by1saW5lcy1pbmxpbmUtc3R5bGUtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3Ry
YWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRvLWxpbmVzLWlubGluZS1zdHlsZS1leHBlY3RlZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjc4OThlNWZjYzE0ZjNiNWE0NzEwMTUwN2RiYTdkNTUzNTM3NjE2NWQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay13ZWJ2dHQtc25h
cC10by1saW5lcy1pbmxpbmUtc3R5bGUtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDUwIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPnRyYWNrLXdlYnZ0dC1z
bmFwLXRvLWxpbmVzLWlubGluZS1zdHlsZTwvdGl0bGU+CisgICAgPHN0eWxlPgorICAgICAgICAu
dmlkZW8geyAKKyAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAg
IHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgICAgIHdpZHRoOiAzMjBweDsKKyAgICAgICAg
ICAgIGhlaWdodDogMjQwcHg7CisgICAgICAgIH0KKyAgICAgICAgaHRtbCB7IG92ZXJmbG93Omhp
ZGRlbiB9CisgICAgICAgIGJvZHkgeyBtYXJnaW46MCB9CisgICAgICAgIC5jdWUtYm94IHsKKyAg
ICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgfQorICAgICAgICAuY3VlIHsK
KyAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBBaGVtLCBzYW5zLXNlcmlmOworICAgICAgICAgICAg
YmFja2dyb3VuZC1jb2xvcjogYmxhY2s7CisgICAgICAgICAgICBjb2xvcjogZ3JlZW47CisgICAg
ICAgICAgICBmb250LXNpemU6IDI0cHg7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxz
Y3JpcHQ+dmFyIHJlcXVpcmVQaXhlbER1bXAgPSB0cnVlOzwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSIuLi92aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vbWVk
aWEtZmlsZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICB3aW5kb3cuYWRkRXZlbnRM
aXN0ZW5lcignbG9hZCcsIGFzeW5jIGV2ZW50ID0+IHsKKyAgICAgICAgY29uc29sZVdyaXRlKCdS
VU4odmlkZW8ucXVlcnlTZWxlY3RvcigidHJhY2siKS5zcmMgPSAiY2FwdGlvbnMtd2VidnR0L3Nu
YXAtdG8tbGluZXMtaW5saW5lLXN0eWxlLnZ0dCIpJyk7CisgICAgICAgIGNvbnNvbGVXcml0ZSgn
UlVOKHZpZGVvLnRleHRUcmFja3NbMF0ubW9kZSA9ICJzaG93aW5nIiknKTsKKyAgICAgICAgY29u
c29sZVdyaXRlKCdFVkVOVChsb2FkKScpOworICAgICAgICBjb25zb2xlV3JpdGUoJ1JVTih2aWRl
by5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJ3M2MvdHJhY2svd2VidnR0L21lZGlhL3do
aXRlIikpJyk7CisgICAgICAgIGNvbnNvbGVXcml0ZSgnRVZFTlQoY2FucGxheXRocm91Z2gpJyk7
CisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9KTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorICAgIDxkaXYgY2xhc3M9InZpZGVvIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY3VlLWJv
eCIgc3R5bGU9ImxlZnQ6MDsgYm90dG9tOjA7IHRleHQtYWxpZ246IGxlZnQiPgorICAgICAgICAg
ICAgPHNwYW4gY2xhc3M9ImN1ZSI+QWJvdmU8L3NwYW4+PGJyPgorICAgICAgICAgICAgPHNwYW4g
Y2xhc3M9ImN1ZSI+TGVmdDwvc3Bhbj4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXYgY2xh
c3M9ImN1ZS1ib3giIHN0eWxlPSJyaWdodDowOyBib3R0b206MDsgdGV4dC1hbGlnbjogcmlnaHQi
PgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImN1ZSI+QWJvdmU8L3NwYW4+PGJyPgorICAgICAg
ICAgICAgPHNwYW4gY2xhc3M9ImN1ZSI+UmlnaHQ8L3NwYW4+CisgICAgICAgIDwvZGl2PgorICAg
IDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRvLWxp
bmVzLWlubGluZS1zdHlsZS5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2std2Vi
dnR0LXNuYXAtdG8tbGluZXMtaW5saW5lLXN0eWxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTdjMWMzMzQ0
YzIzZGExOTFmYzkwYjg3NDA3OTgwNDMzZGUzNGQzNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRvLWxpbmVzLWlubGluZS1zdHls
ZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KyAgICA8dGl0bGU+dHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMtaW5saW5lLXN0eWxlPC90aXRs
ZT4KKyAgICA8c3R5bGU+CisgICAgICAgIGh0bWwgeyBvdmVyZmxvdzpoaWRkZW4gfQorICAgICAg
ICBib2R5IHsgbWFyZ2luOjAgfQorICAgICAgICA6OmN1ZSB7CisgICAgICAgICAgICBmb250LWZh
bWlseTogQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsKKyAg
ICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrOworICAgICAgICAgICAgY29sb3I6IGdy
ZWVuOworICAgICAgICB9CisgICAgPC9zdHlsZT4KKyAgICA8c2NyaXB0PnZhciByZXF1aXJlUGl4
ZWxEdW1wID0gdHJ1ZTs8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQ+CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBhc3lu
YyBldmVudCA9PiB7CisgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKworICAgICAgICBydW4o
YHZpZGVvLnF1ZXJ5U2VsZWN0b3IoInRyYWNrIikuc3JjID0gImNhcHRpb25zLXdlYnZ0dC9zbmFw
LXRvLWxpbmVzLWlubGluZS1zdHlsZS52dHQiYCk7CisgICAgICAgIHJ1bihgdmlkZW8udGV4dFRy
YWNrc1swXS5tb2RlID0gInNob3dpbmciYCk7CisgICAgICAgIGF3YWl0IHdhaXRGb3IodmlkZW8u
cXVlcnlTZWxlY3RvcigndHJhY2snKSwgJ2xvYWQnKTsKKworICAgICAgICBydW4oYHZpZGVvLnNy
YyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgInczYy90cmFjay93ZWJ2dHQvbWVkaWEvd2hpdGUi
KWApOworICAgICAgICBhd2FpdCB3YWl0Rm9yKHZpZGVvLCAnY2FucGxheXRocm91Z2gnKTsKKwor
ICAgICAgICBlbmRUZXN0KCk7CisgICAgfSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKyAgICA8dmlkZW8+CisgICAgICAgIDx0cmFjayBpZD0idGVzdFRyYWNrIiBzcmM9ImNhcHRp
b25zLXdlYnZ0dC9zbmFwLXRvLWxpbmVzLWlubGluZS1zdHlsZS52dHQiIGtpbmQ9ImNhcHRpb25z
IiBkZWZhdWx0PgorICAgIDwvdmlkZW8+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2st
d2VidnR0LXNuYXAtdG8tbGluZXMtbGVmdC1yaWdodC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVz
dHMvbWVkaWEvdHJhY2svdHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMtbGVmdC1yaWdodC1leHBl
Y3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1NGZjMGJkZjczMTVkZTAxMGI5NDgzZWM0OTJiYzI1NGM4
ZGI4OTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay13
ZWJ2dHQtc25hcC10by1saW5lcy1sZWZ0LXJpZ2h0LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw1
MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT50cmFjay13
ZWJ2dHQtc25hcC10by1saW5lcy1sZWZ0LXJpZ2h0PC90aXRsZT4KKyAgICA8c3R5bGU+CisgICAg
ICAgIC52aWRlbyB7IAorICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAg
ICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICAgICAgd2lkdGg6IDMyMHB4OworICAg
ICAgICAgICAgaGVpZ2h0OiAyNDBweDsKKyAgICAgICAgfQorICAgICAgICBodG1sIHsgb3ZlcmZs
b3c6aGlkZGVuIH0KKyAgICAgICAgYm9keSB7IG1hcmdpbjowIH0KKyAgICAgICAgLmN1ZS1ib3gg
eworICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICAgICAgZm9udC1zaXpl
OiAxMnB4OworICAgICAgICB9CisgICAgICAgIC5jdWUgeworICAgICAgICAgICAgZm9udC1mYW1p
bHk6IEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFj
azsKKyAgICAgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+Cisg
ICAgPHNjcmlwdD52YXIgcmVxdWlyZVBpeGVsRHVtcCA9IHRydWU7PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIu
Li9tZWRpYS1maWxlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIHdpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCdsb2FkJywgYXN5bmMgZXZlbnQgPT4geworICAgICAgICBjb25zb2xlV3Jp
dGUoJ1JVTih2aWRlby5xdWVyeVNlbGVjdG9yKCJ0cmFjayIpLnNyYyA9ICJjYXB0aW9ucy13ZWJ2
dHQvc25hcC10by1saW5lcy1sZWZ0LWFuZC1yaWdodC52dHQiKScpOworICAgICAgICBjb25zb2xl
V3JpdGUoJ1JVTih2aWRlby50ZXh0VHJhY2tzWzBdLm1vZGUgPSAic2hvd2luZyIpJyk7CisgICAg
ICAgIGNvbnNvbGVXcml0ZSgnRVZFTlQobG9hZCknKTsKKyAgICAgICAgY29uc29sZVdyaXRlKCdS
VU4odmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAidzNjL3RyYWNrL3dlYnZ0dC9t
ZWRpYS93aGl0ZSIpKScpOworICAgICAgICBjb25zb2xlV3JpdGUoJ0VWRU5UKGNhbnBsYXl0aHJv
dWdoKScpOworICAgICAgICBlbmRUZXN0KCk7CisgICAgfSk7CisgICAgPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGNsYXNzPSJ2aWRlbyI+CisgICAgICAgIDxkaXYgY2xhc3M9
ImN1ZS1ib3giIHN0eWxlPSJsZWZ0OjA7IGJvdHRvbTowOyB0ZXh0LWFsaWduOiBsZWZ0Ij4KKyAg
ICAgICAgICAgIDxzcGFuIGNsYXNzPSJjdWUiPkFib3ZlPC9zcGFuPjxicj4KKyAgICAgICAgICAg
IDxzcGFuIGNsYXNzPSJjdWUiPkxlZnQ8L3NwYW4+CisgICAgICAgIDwvZGl2PgorICAgICAgICA8
ZGl2IGNsYXNzPSJjdWUtYm94IiBzdHlsZT0icmlnaHQ6MDsgYm90dG9tOjA7IHRleHQtYWxpZ246
IHJpZ2h0Ij4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjdWUiPkFib3ZlPC9zcGFuPjxicj4K
KyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjdWUiPlJpZ2h0PC9zcGFuPgorICAgICAgICA8L2Rp
dj4KKyAgICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay13ZWJ2dHQtc25h
cC10by1saW5lcy1sZWZ0LXJpZ2h0Lmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFj
ay13ZWJ2dHQtc25hcC10by1saW5lcy1sZWZ0LXJpZ2h0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjk4OTdk
ZmU1MzAwN2IzNDAxOGZiY2Y4ZjViNzM0YmYzN2NjMmIxZgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRvLWxpbmVzLWxlZnQtcmln
aHQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
CisgICAgPHRpdGxlPnRyYWNrLXdlYnZ0dC1zbmFwLXRvLWxpbmVzLWxlZnQtcmlnaHQ8L3RpdGxl
PgorICAgIDxzdHlsZT4KKyAgICAgICAgaHRtbCB7IG92ZXJmbG93OmhpZGRlbiB9CisgICAgICAg
IGJvZHkgeyBtYXJnaW46MCB9CisgICAgICAgIDo6Y3VlIHsKKyAgICAgICAgICAgIGZvbnQtZmFt
aWx5OiBBaGVtLCBzYW5zLXNlcmlmOworICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4OworICAg
ICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7CisgICAgICAgICAgICBjb2xvcjogZ3Jl
ZW47CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQ+dmFyIHJlcXVpcmVQaXhl
bER1bXAgPSB0cnVlOzwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vbWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdD4KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGFzeW5j
IGV2ZW50ID0+IHsKKyAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOworCisgICAgICAgIHJ1bihg
dmlkZW8ucXVlcnlTZWxlY3RvcigidHJhY2siKS5zcmMgPSAiY2FwdGlvbnMtd2VidnR0L3NuYXAt
dG8tbGluZXMtbGVmdC1hbmQtcmlnaHQudnR0ImApOworICAgICAgICBydW4oYHZpZGVvLnRleHRU
cmFja3NbMF0ubW9kZSA9ICJzaG93aW5nImApOworICAgICAgICBhd2FpdCB3YWl0Rm9yKHZpZGVv
LnF1ZXJ5U2VsZWN0b3IoJ3RyYWNrJyksICdsb2FkJyk7CisKKyAgICAgICAgcnVuKGB2aWRlby5z
cmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJ3M2MvdHJhY2svd2VidnR0L21lZGlhL3doaXRl
IilgKTsKKyAgICAgICAgYXdhaXQgd2FpdEZvcih2aWRlbywgJ2NhbnBsYXl0aHJvdWdoJyk7CisK
KyAgICAgICAgZW5kVGVzdCgpOworICAgIH0pOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+CisgICAgPHZpZGVvPgorICAgICAgICA8dHJhY2sgaWQ9InRlc3RUcmFjayIga2luZD0iY2Fw
dGlvbnMiIGRlZmF1bHQ+CisgICAgPC92aWRlbz4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>
<flag name="commit-queue"
          id="471613"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446254</attachid>
            <date>2021-12-07 16:46:53 -0800</date>
            <delta_ts>2021-12-08 11:05:52 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-233901-20211207164652.patch</filename>
            <type>text/plain</type>
            <size>47978</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDkwNjM1N2I0MDk4YjJj
MjA3N2ZjMzFmNmNmMTUzYjEyOTA0OWMwZS4uNjg5MjMwYWUwNjljYmJmNmViOTJjZGU0MWQyMGYy
ODFkYzdjNjMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIxLTEyLTA2ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtWVFRdIEZpeCB2YXJpb3Vz
IGlzc3VlcyB3aXRoIGNvbXBsaWNhdGVkIHJlbmRlcmluZyBvZiBWVFQgY3VlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzOTAxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIFRlc3RzOiBtZWRpYS90cmFjay90
cmFjay13ZWJ2dHQtbm8tc25hcC10by1saW5lcy1vdmVybGFwLmh0bWwKKyAgICAgICAgICAgICAg
IG1lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRvLWxpbmVzLWlubGluZS1zdHlsZS5odG1s
CisgICAgICAgICAgICAgICBtZWRpYS90cmFjay90cmFjay13ZWJ2dHQtc25hcC10by1saW5lcy1s
ZWZ0LXJpZ2h0Lmh0bWwKKworICAgICAgICBXaGVuIHBvc2l0aW9uaW5nIFZUVCBjdWVzLCB0aGUg
c3BlYyByZXF1aXJlcyBVQXMgdG8gYXZvaWQgY29sbGlzaW9ucyBiZXR3ZWVuIGN1ZXMKKyAgICAg
ICAgYnkgZGV0ZWN0aW5nIHRoYXQgdHdvIGN1ZXMgb3ZlcmxhcCBlYWNoIG90aGVyLiBIb3dldmVy
LCBXZWJLaXQncyBpbXBsZW1lbnRhdGlvbgorICAgICAgICBsb29rcyBmb3IgY29sbGlzaW9ucyBi
ZXR3ZWVuIG5vbi1kaXNwbGF5aW5nIHBvcnRpb25zIG9mIHRoZSBjdWVzOyBuYW1lbHkgdGhlIAor
ICAgICAgICA6Oi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1kaXNwbGF5IGVsZW1lbnQsIHdoaWNo
IGlzIHVzZWQgdG8gcG9zaXRpb24gdGhlIGRpc3BsYXlpbmcKKyAgICAgICAgcG9ydGlvbiBvZiB0
aGUgY3VlLiBJbnN0ZWFkLCB0aGUgVUEgc2hvdWxkIGxvb2sgZm9yIGNvbGxpc2lvbnMgYmV0d2Vl
biB0aGUgCisgICAgICAgIDo6LXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWRpc3BsYXktYmFja2Ry
b3AgZWxlbWVudCwgd2hpY2ggaG9sZHMgdGhlIGJhY2tncm91bmQKKyAgICAgICAgb2YgdGhlIGN1
ZSwgaWYgcHJlc2VudC4KKworICAgICAgICBBZGQgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0byBy
ZXRyaWV2ZSB0aGUgYmFja2Ryb3AgZWxlbWVudCwgYW5kIGFub3RoZXIgdG8gcmV0cmlldmUKKyAg
ICAgICAgdGhlIGN1ZSBpdHNlbGYuCisKKyAgICAgICAgQWRkIGNhc3QgbWFjcm9zIGZvciBSZW5k
ZXJWVFRDdWUgdG8gYWxsb3cgZG93bmNhc3Q8PmluZy4gVXNlIHRoaXMgbWFjcm8gdG8gcmV0cmll
dmUKKyAgICAgICAgb3RoZXIgY3VlcydzIGJhY2tkcm9wIGVsZW1lbnRzIGZvciBjb2xsaXNpb24g
YXZvaWRhbmNlLgorCisgICAgICAgIFZUVEN1ZUJveDo6YXBwbHlDU1NQcm9wZXJ0aWVzKCkgaGFk
IGEgc2VjdGlvbiBmb3IgbW92aW5nIGN1ZXMgaW50byBwbGFjZSB0aGF0IGlzIGVudGlyZWx5Cisg
ICAgICAgIHVubmVlZGVkIGlmIFZUVEN1ZTo6Z2V0Q1NTUG9zaXRpb24oKSByZXR1cm5zIHRoZSBw
cmUtY2FsY3VsYXRlZCBtX2Rpc3BsYXlQb3NpdGlvbi4KKworICAgICAgICBSZW5kZXJWVFRDdWU6
OmluaXRpYWxpemVMYXlvdXRQYXJhbWV0ZXJzKCkgaXMgYSBjYXJlZnVsIGltcGxlbWVudGF0aW9u
IG9mIHRoZSBzcGVjaWZpY2F0aW9uLAorICAgICAgICBhY2N1cmF0ZWx5IGxheW91dCBvdXQgY3Vl
cycgaW5pdGlhbCBwb3NpdGlvbiBzbyB0aGF0IHRoZSB0ZXh0IHJ1biBpcyBleGFjdGx5IGF0IHRo
ZQorICAgICAgICBib3R0b20gb2YgdGhlIGNvbnRlbnQgYm94LiBIb3dldmVyLCBpZiB0aGUgY3Vl
IGhhcyBhIGJvcmRlciwgcGFkZGluZywgb3IgZXh0cmEgaGVpZ2h0LAorICAgICAgICB0aGlzIHdp
bGwgcmVzdWx0IGluIHRoZSBjdWUgYmVpbmcgcHVzaGVkIG91dHNpZGUgdGhlIGNvbnRlbnQgYm94
LiBUbyBhY2NvdW50IGZvciB0aGlzLAorICAgICAgICBhZGp1c3QgdGhlIGluaXRhbCBsYXlvdXQg
cGFyYW1ldGVyIGJ5IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGN1ZSB0ZXh0IHNpemUgYW5k
IHRoZQorICAgICAgICBiYWNrZHJvcCBlbGVtZW50IHNpemUuCisKKyAgICAgICAgUmVuZGVyVlRU
Q3VlOjpsYXlvdXQoKSB3aWxsIGNyZWF0ZSBhIExheW91dFN0YXRlTWFpbnRhaW5lciwgd2hpY2gg
bW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mCisgICAgICAgIGxheW91dCBtYWNoaW5lcnkgZHVyaW5n
IHRoZSBsYXlvdXQgaXRzZWxmLiBIb3dldmVyLCBjZXJ0YWluIGNoaWxkIHJlbmRlcmVycyBnZXQg
ZHJhbWF0aWNhbGx5CisgICAgICAgIGluY29ycmVjdCByZXN1bHRzIGZvciBhYnNvbHV0ZUJvdW5k
aW5nUmVjdCgpIHVubGVzcyB0aGUgbWFpbnRhaW5lciBleHBsaWNpdGx5IHNldHMgZGlzYWJsZVN0
YXRlLgorCisgICAgICAgICogaHRtbC90cmFjay9WVFRDdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VlRUQ3VlQm94OjphcHBseUNTU1Byb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6VlRU
Q3VlOjpnZXRDU1NQb3NpdGlvbiBjb25zdCk6CisgICAgICAgICogaHRtbC90cmFjay9WVFRDdWUu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmlzUmVuZGVyVlRUQ3VlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVlRUQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZUVEN1ZTo6bGF5
b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZUVEN1ZTo6aW5pdGlhbGl6ZUxheW91dFBh
cmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVlRUQ3VlOjppc091dHNpZGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVlRUQ3VlOjpvdmVybGFwcGluZ09iamVjdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWVFRDdWU6Om92ZXJsYXBwaW5nT2JqZWN0
Rm9yUmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWVFRDdWU6Om1vdmVJZk5l
Y2Vzc2FyeVRvS2VlcFdpdGhpbkNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJW
VFRDdWU6OmZpbmROb25PdmVybGFwcGluZ1Bvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclZUVEN1ZTo6cmVwb3NpdGlvbkdlbmVyaWNDdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVlRUQ3VlOjpiYWNrZHJvcEJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJWVFRDdWU6OmN1ZUJveCBjb25zdCk6CisKIDIwMjEtMTItMDcgIEFudHRpIEtvaXZpc3Rv
ICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBtb3JlIHNwZWNpZmljIGtleXMgZm9y
IHBzZXVkby1jbGFzcyBpbnZhbGlkYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVlRUQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNw
cAppbmRleCA5NTdlYjhjNTgxNTEwM2YzNGU4ODEyMDcxMDQwMjZiNTMzOWQ2MDcyLi4wMDg4YmZh
ZTA5MzRjOWI0YWNmMGQwNDJlMTkyMDM1NDQ1MjBjMDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9WVFRDdWUuY3BwCkBAIC0xODYsMTQgKzE4NiwxNSBAQCB2b2lkIFZUVEN1ZUJveDo6YXBwbHlD
U1NQcm9wZXJ0aWVzKGNvbnN0IEludFNpemUmIHZpZGVvU2l6ZSkKICAgICAvLyB0aGUgJ3dyaXRp
bmctbW9kZScgcHJvcGVydHkgbXVzdCBiZSBzZXQgdG8gd3JpdGluZy1tb2RlCiAgICAgc2V0SW5s
aW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdyaXRpbmdNb2RlLCBjdWUtPmdldENTU1dyaXRp
bmdNb2RlKCksIGZhbHNlKTsKIAotICAgIGF1dG8gcG9zaXRpb24gPSBjdWUtPmdldENTU1Bvc2l0
aW9uKCk7CisgICAgYXV0byYgcG9zaXRpb24gPSBjdWUtPmdldENTU1Bvc2l0aW9uKCk7CiAKICAg
ICAvLyB0aGUgJ3RvcCcgcHJvcGVydHkgbXVzdCBiZSBzZXQgdG8gdG9wLAotICAgIHNldElubGlu
ZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUb3AsIHBvc2l0aW9uLnNlY29uZCwgQ1NTVW5pdFR5
cGU6OkNTU19QRVJDRU5UQUdFKTsKKyAgICBpZiAocG9zaXRpb24uc2Vjb25kKQorICAgICAgICBz
ZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VG9wLCAqcG9zaXRpb24uc2Vjb25kLCBD
U1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOwogCiAgICAgLy8gdGhlICdsZWZ0JyBwcm9wZXJ0
eSBtdXN0IGJlIHNldCB0byBsZWZ0Ci0gICAgaWYgKGN1ZS0+dmVydGljYWwoKSA9PSBob3Jpem9u
dGFsS2V5d29yZCgpKQotICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
TGVmdCwgcG9zaXRpb24uZmlyc3QsIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7CisgICAg
aWYgKGN1ZS0+dmVydGljYWwoKSA9PSBob3Jpem9udGFsS2V5d29yZCgpICYmIHBvc2l0aW9uLmZp
cnN0KQorICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TGVmdCwgKnBv
c2l0aW9uLmZpcnN0LCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOwogICAgIGVsc2UgaWYg
KGN1ZS0+dmVydGljYWwoKSA9PSB2ZXJ0aWNhbEdyb3dpbmdSaWdodEtleXdvcmQoKSkgewogICAg
ICAgICAvLyBGSVhNRTogV2h5IHVzZSBjYWxjIHRvIGRvIHRoZSBtYXRoIGluc3RlYWQgb2YgZG9p
bmcgdGhlIHN1YnRyYWN0aW9uIGhlcmU/CiAgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHko
Q1NTUHJvcGVydHlMZWZ0LCBtYWtlU3RyaW5nKCJjYWxjKC0iLCB2aWRlb1NpemUud2lkdGgoKSwg
InB4IC0gIiwgY3VlLT5nZXRDU1NTaXplKCksICJweCkiKSk7CkBAIC0yMTksMTUgKzIyMCwxNSBA
QCB2b2lkIFZUVEN1ZUJveDo6YXBwbHlDU1NQcm9wZXJ0aWVzKGNvbnN0IEludFNpemUmIHZpZGVv
U2l6ZSkKICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwg
Q1NTVmFsdWVBdXRvKTsKICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eU1pbldpZHRoLCAibWluLWNvbnRlbnQiKTsKICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0
eShDU1NQcm9wZXJ0eU1heFdpZHRoLCBtYXhTaXplLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRB
R0UpOwotICAgICAgICBpZiAoKGFsaWdubWVudCA9PSBDU1NWYWx1ZU1pZGRsZSB8fCBhbGlnbm1l
bnQgPT0gQ1NTVmFsdWVDZW50ZXIpICYmIG11bHRpcGxpZXIgIT0gMS4wKQotICAgICAgICAgICAg
c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQsIHN0YXRpY19jYXN0PGRvdWJs
ZT4ocG9zaXRpb24uZmlyc3QgLSAobmV3Q3VlU2l6ZSAtIGN1ZS0+Z2V0Q1NTU2l6ZSgpKSAvIDIp
LCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOworICAgICAgICBpZiAoKGFsaWdubWVudCA9
PSBDU1NWYWx1ZU1pZGRsZSB8fCBhbGlnbm1lbnQgPT0gQ1NTVmFsdWVDZW50ZXIpICYmIG11bHRp
cGxpZXIgIT0gMS4wICYmIHBvc2l0aW9uLmZpcnN0KQorICAgICAgICAgICAgc2V0SW5saW5lU3R5
bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQsIHN0YXRpY19jYXN0PGRvdWJsZT4oKnBvc2l0aW9u
LmZpcnN0IC0gKG5ld0N1ZVNpemUgLSBjdWUtPmdldENTU1NpemUoKSkgLyAyKSwgQ1NTVW5pdFR5
cGU6OkNTU19QRVJDRU5UQUdFKTsKICAgICB9IGVsc2UgewogICAgICAgICBzZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIENTU1ZhbHVlQXV0byk7CiAgICAgICAgIHNldElu
bGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQsIG5ld0N1ZVNpemUsIENTU1VuaXRU
eXBlOjpDU1NfUEVSQ0VOVEFHRSk7CiAgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NT
UHJvcGVydHlNaW5IZWlnaHQsICJtaW4tY29udGVudCIpOwogICAgICAgICBzZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5TWF4SGVpZ2h0LCBtYXhTaXplLCBDU1NVbml0VHlwZTo6Q1NT
X1BFUkNFTlRBR0UpOwotICAgICAgICBpZiAoKGFsaWdubWVudCA9PSBDU1NWYWx1ZU1pZGRsZSB8
fCBhbGlnbm1lbnQgPT0gQ1NTVmFsdWVDZW50ZXIpICYmIG11bHRpcGxpZXIgIT0gMS4wKQotICAg
ICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRvcCwgc3RhdGljX2Nh
c3Q8ZG91YmxlPihwb3NpdGlvbi5zZWNvbmQgLSAobmV3Q3VlU2l6ZSAtIGN1ZS0+Z2V0Q1NTU2l6
ZSgpKSAvIDIpLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOworICAgICAgICBpZiAoKGFs
aWdubWVudCA9PSBDU1NWYWx1ZU1pZGRsZSB8fCBhbGlnbm1lbnQgPT0gQ1NTVmFsdWVDZW50ZXIp
ICYmIG11bHRpcGxpZXIgIT0gMS4wICYmIHBvc2l0aW9uLnNlY29uZCkKKyAgICAgICAgICAgIHNl
dElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUb3AsIHN0YXRpY19jYXN0PGRvdWJsZT4o
KnBvc2l0aW9uLnNlY29uZCAtIChuZXdDdWVTaXplIC0gY3VlLT5nZXRDU1NTaXplKCkpIC8gMiks
IENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7CiAgICAgfQogCiAgICAgLy8gVGhlICd0ZXh0
LWFsaWduJyBwcm9wZXJ0eSBvbiB0aGUgKHJvb3QpIExpc3Qgb2YgV2ViVlRUIE5vZGUgT2JqZWN0
cyBtdXN0CkBAIC0yMzYsMjEgKzIzNyw4IEBAIHZvaWQgVlRUQ3VlQm94OjphcHBseUNTU1Byb3Bl
cnRpZXMoY29uc3QgSW50U2l6ZSYgdmlkZW9TaXplKQogICAgIC8vIGFsaWdubWVudDoKICAgICBz
ZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBjdWUtPmdldENTU0Fs
aWdubWVudCgpKTsKICAgICAKLSAgICBpZiAoIWN1ZS0+c25hcFRvTGluZXMoKSkgewotICAgICAg
ICAvLyAxMC4xMy4xIFNldCB1cCB4IGFuZCB5OgotICAgICAgICAvLyBOb3RlOiB4IGFuZCB5IGFy
ZSBzZXQgdGhyb3VnaCB0aGUgQ1NTIGxlZnQgYW5kIHRvcCBhYm92ZS4KLQotICAgICAgICAvLyAx
MC4xMy4yIFBvc2l0aW9uIHRoZSBib3hlcyBpbiBib3hlcyBzdWNoIHRoYXQgdGhlIHBvaW50IHgl
IGFsb25nIHRoZQotICAgICAgICAvLyB3aWR0aCBvZiB0aGUgYm91bmRpbmcgYm94IG9mIHRoZSBi
b3hlcyBpbiBib3hlcyBpcyB4JSBvZiB0aGUgd2F5Ci0gICAgICAgIC8vIGFjcm9zcyB0aGUgd2lk
dGggb2YgdGhlIHZpZGVvJ3MgcmVuZGVyaW5nIGFyZWEsIGFuZCB0aGUgcG9pbnQgeSUKLSAgICAg
ICAgLy8gYWxvbmcgdGhlIGhlaWdodCBvZiB0aGUgYm91bmRpbmcgYm94IG9mIHRoZSBib3hlcyBp
biBib3hlcyBpcyB5JQotICAgICAgICAvLyBvZiB0aGUgd2F5IGFjcm9zcyB0aGUgaGVpZ2h0IG9m
IHRoZSB2aWRlbydzIHJlbmRlcmluZyBhcmVhLCB3aGlsZQotICAgICAgICAvLyBtYWludGFpbmlu
ZyB0aGUgcmVsYXRpdmUgcG9zaXRpb25zIG9mIHRoZSBib3hlcyBpbiBib3hlcyB0byBlYWNoCi0g
ICAgICAgIC8vIG90aGVyLgotICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5VHJhbnNmb3JtLCBtYWtlU3RyaW5nKCJ0cmFuc2xhdGUoIiwgLXBvc2l0aW9uLmZpcnN0LCAi
JSwgIiwgLXBvc2l0aW9uLnNlY29uZCwgIiUpIikpOwotCisgICAgaWYgKCFjdWUtPnNuYXBUb0xp
bmVzKCkpCiAgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXaGl0ZVNw
YWNlLCBDU1NWYWx1ZVByZSk7Ci0gICAgfQogCiAgICAgLy8gTWFrZSBzdXJlIHNoYWRvdyBvciBz
dHJva2UgaXMgbm90IGNsaXBwZWQuCiAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eU92ZXJmbG93LCBDU1NWYWx1ZVZpc2libGUpOwpAQCAtMzg0LDI2ICszNzIsMjEgQEAgdm9p
ZCBWVFRDdWU6OnNldFNuYXBUb0xpbmVzKGJvb2wgdmFsdWUpCiAKIFZUVEN1ZTo6TGluZUFuZFBv
c2l0aW9uU2V0dGluZyBWVFRDdWU6OmxpbmUoKSBjb25zdAogewotICAgIGlmIChzdGQ6OmlzbmFu
KG1fbGluZVBvc2l0aW9uKSkKKyAgICBpZiAoIW1fbGluZVBvc2l0aW9uKQogICAgICAgICByZXR1
cm4gQXV0bzsKIAotICAgIHJldHVybiBtX2xpbmVQb3NpdGlvbjsKKyAgICByZXR1cm4gKm1fbGlu
ZVBvc2l0aW9uOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBWVFRDdWU6OnNldExpbmUoY29uc3Qg
TGluZUFuZFBvc2l0aW9uU2V0dGluZyYgcG9zaXRpb24pCiB7Ci0gICAgZG91YmxlIGxpbmVQb3Np
dGlvbiA9IDA7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGxpbmVQb3NpdGlvbjsKIAotICAg
IGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPEF1dG9LZXl3b3JkPihwb3NpdGlvbikpIHsKLSAg
ICAgICAgaWYgKHN0ZDo6aXNuYW4obV9saW5lUG9zaXRpb24pKQotICAgICAgICAgICAgcmV0dXJu
IHsgfTsKLSAgICAgICAgbGluZVBvc2l0aW9uID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+
OjpxdWlldF9OYU4oKTsKLSAgICB9IGVsc2UgeworICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxBdXRvS2V5d29yZD4ocG9zaXRpb24pKQogICAgICAgICBsaW5lUG9zaXRpb24gPSBzdGQ6
OmdldDxkb3VibGU+KHBvc2l0aW9uKTsKIAotICAgICAgICBpZiAobV9saW5lUG9zaXRpb24gPT0g
bGluZVBvc2l0aW9uKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9CisgICAgaWYgKG1f
bGluZVBvc2l0aW9uID09IGxpbmVQb3NpdGlvbikKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAg
IHdpbGxDaGFuZ2UoKTsKICAgICBtX2xpbmVQb3NpdGlvbiA9IGxpbmVQb3NpdGlvbjsKQEAgLTQ1
Myw5ICs0MzYsOSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBWVFRDdWU6OnNldExpbmVBbGlnbihjb25z
dCBTdHJpbmcmIHZhbHVlKQogCiBWVFRDdWU6OkxpbmVBbmRQb3NpdGlvblNldHRpbmcgVlRUQ3Vl
Ojpwb3NpdGlvbigpIGNvbnN0CiB7Ci0gICAgaWYgKHRleHRQb3NpdGlvbklzQXV0bygpKQotICAg
ICAgICByZXR1cm4gQXV0bzsKLSAgICByZXR1cm4gbV90ZXh0UG9zaXRpb247CisgICAgaWYgKG1f
dGV4dFBvc2l0aW9uKQorICAgICAgICByZXR1cm4gKm1fdGV4dFBvc2l0aW9uOworICAgIHJldHVy
biBBdXRvOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBWVFRDdWU6OnNldFBvc2l0aW9uKGNvbnN0
IExpbmVBbmRQb3NpdGlvblNldHRpbmcmIHBvc2l0aW9uKQpAQCAtNDY1LDIzICs0NDgsMjAgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gVlRUQ3VlOjpzZXRQb3NpdGlvbihjb25zdCBMaW5lQW5kUG9zaXRp
b25TZXR0aW5nJiBwb3NpdGlvbikKICAgICAvLyBJbmRleFNpemVFcnJvciBleGNlcHRpb24gbXVz
dCBiZSB0aHJvd24uIE90aGVyd2lzZSwgdGhlIFdlYlZUVCBjdWUKICAgICAvLyBwb3NpdGlvbiBt
dXN0IGJlIHNldCB0byB0aGUgbmV3IHZhbHVlOyBpZiB0aGUgbmV3IHZhbHVlIGlzIHRoZSBzdHJp
bmcKICAgICAvLyAiYXV0byIsIHRoZW4gaXQgbXVzdCBiZSBpbnRlcnByZXRlZCBhcyB0aGUgc3Bl
Y2lhbCB2YWx1ZSBhdXRvLgotICAgIGRvdWJsZSB0ZXh0UG9zaXRpb24gPSAwOwotICAgIGlmIChz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPEF1dG9LZXl3b3JkPihwb3NpdGlvbikpIHsKLSAgICAgICAg
aWYgKHRleHRQb3NpdGlvbklzQXV0bygpKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAg
ICAgdGV4dFBvc2l0aW9uID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4o
KTsKLSAgICB9IGVsc2UgeworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0ZXh0UG9zaXRpb247
CisKKyAgICAvLyBPdGhlcndpc2UsIHNldCB0aGUgdGV4dCB0cmFjayBjdWUgbGluZSBwb3NpdGlv
biB0byB0aGUgbmV3IHZhbHVlLgorICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxBdXRv
S2V5d29yZD4ocG9zaXRpb24pKSB7CiAgICAgICAgIHRleHRQb3NpdGlvbiA9IHN0ZDo6Z2V0PGRv
dWJsZT4ocG9zaXRpb24pOwogICAgICAgICBpZiAoISh0ZXh0UG9zaXRpb24gPj0gMCAmJiB0ZXh0
UG9zaXRpb24gPD0gMTAwKSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNp
emVFcnJvciB9OwotCi0gICAgICAgIC8vIE90aGVyd2lzZSwgc2V0IHRoZSB0ZXh0IHRyYWNrIGN1
ZSBsaW5lIHBvc2l0aW9uIHRvIHRoZSBuZXcgdmFsdWUuCi0gICAgICAgIGlmIChtX3RleHRQb3Np
dGlvbiA9PSB0ZXh0UG9zaXRpb24pCi0gICAgICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAor
ICAgIGlmIChtX3RleHRQb3NpdGlvbiA9PSB0ZXh0UG9zaXRpb24pCisgICAgICAgIHJldHVybiB7
IH07CisKICAgICB3aWxsQ2hhbmdlKCk7Ci0gICAgbV90ZXh0UG9zaXRpb24gPSB0ZXh0UG9zaXRp
b247CisgICAgbV90ZXh0UG9zaXRpb24gPSBXVEZNb3ZlKHRleHRQb3NpdGlvbik7CiAgICAgZGlk
Q2hhbmdlKCk7CiAKICAgICByZXR1cm4geyB9OwpAQCAtNzE0LDE0ICs2OTQsMTQgQEAgY29uc3Qg
U3RyaW5nJiBWVFRDdWU6OnJlZ2lvbklkKCkKICAgICByZXR1cm4gbV9yZWdpb24tPmlkKCk7CiB9
CiAKLWludCBWVFRDdWU6OmNhbGN1bGF0ZUNvbXB1dGVkTGluZVBvc2l0aW9uKCkKK2ludCBWVFRD
dWU6OmNhbGN1bGF0ZUNvbXB1dGVkTGluZVBvc2l0aW9uKCkgY29uc3QKIHsKICAgICAvLyBodHRw
Oi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90
aGUtdmlkZW8tZWxlbWVudC5odG1sI3RleHQtdHJhY2stY3VlLWNvbXB1dGVkLWxpbmUtcG9zaXRp
b24KIAogICAgIC8vIElmIHRoZSB0ZXh0IHRyYWNrIGN1ZSBsaW5lIHBvc2l0aW9uIGlzIG51bWVy
aWMsIHRoZW4gdGhhdCBpcyB0aGUgdGV4dAogICAgIC8vIHRyYWNrIGN1ZSBjb21wdXRlZCBsaW5l
IHBvc2l0aW9uLgotICAgIGlmICghc3RkOjppc25hbihtX2xpbmVQb3NpdGlvbikpCi0gICAgICAg
IHJldHVybiBtX2xpbmVQb3NpdGlvbjsKKyAgICBpZiAobV9saW5lUG9zaXRpb24pCisgICAgICAg
IHJldHVybiAqbV9saW5lUG9zaXRpb247CiAKICAgICAvLyBJZiB0aGUgdGV4dCB0cmFjayBjdWUg
c25hcC10by1saW5lcyBmbGFnIG9mIHRoZSB0ZXh0IHRyYWNrIGN1ZSBpcyBub3QKICAgICAvLyBz
ZXQsIHRoZSB0ZXh0IHRyYWNrIGN1ZSBjb21wdXRlZCBsaW5lIHBvc2l0aW9uIGlzIHRoZSB2YWx1
ZSAxMDA7CkBAIC03NTYsMTEgKzczNiw2IEBAIHN0YXRpYyBib29sIGlzQ3VlUGFyYWdyYXBoU2Vw
YXJhdG9yKFVDaGFyIGNoYXJhY3RlcikKICAgICByZXR1cm4gdV9jaGFyVHlwZShjaGFyYWN0ZXIp
ID09IFVfUEFSQUdSQVBIX1NFUEFSQVRPUjsKIH0KIAotYm9vbCBWVFRDdWU6OnRleHRQb3NpdGlv
bklzQXV0bygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN0ZDo6aXNuYW4obV90ZXh0UG9zaXRpb24p
OwotfQotCiB2b2lkIFZUVEN1ZTo6ZGV0ZXJtaW5lVGV4dERpcmVjdGlvbigpCiB7CiAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gcnRUYWcoTUFLRV9TVEFUSUNfU1RSSU5H
X0lNUEwoInJ0IikpOwpAQCAtODEwLDggKzc4NSw4IEBAIGRvdWJsZSBWVFRDdWU6OmNhbGN1bGF0
ZUNvbXB1dGVkVGV4dFBvc2l0aW9uKCkgY29uc3QKICAgICAKICAgICAvLyAxLiBJZiB0aGUgcG9z
aXRpb24gaXMgbnVtZXJpYywgdGhlbiByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBwb3NpdGlvbiBh
bmQKICAgICAvLyBhYm9ydCB0aGVzZSBzdGVwcy4gKE90aGVyd2lzZSwgdGhlIHBvc2l0aW9uIGlz
IHRoZSBzcGVjaWFsIHZhbHVlIGF1dG8uKQotICAgIGlmICghdGV4dFBvc2l0aW9uSXNBdXRvKCkp
Ci0gICAgICAgIHJldHVybiBtX3RleHRQb3NpdGlvbjsKKyAgICBpZiAobV90ZXh0UG9zaXRpb24p
CisgICAgICAgIHJldHVybiAqbV90ZXh0UG9zaXRpb247CiAgICAgCiAgICAgc3dpdGNoIChtX2N1
ZUFsaWdubWVudCkgewogICAgIGNhc2UgU3RhcnQ6CkBAIC05MjEsMTggKzg5NiwxOCBAQCB2b2lk
IFZUVEN1ZTo6Y2FsY3VsYXRlRGlzcGxheVBhcmFtZXRlcnMoKQogICAgIC8vIDEwLjkgRGV0ZXJt
aW5lIHRoZSB2YWx1ZSBvZiB3aGljaGV2ZXIgb2YgeC1wb3NpdGlvbiBvciB5LXBvc2l0aW9uIGlz
IG5vdAogICAgIC8vIHlldCBjYWxjdWxhdGVkIGZvciBjdWUgYXMgcGVyIHRoZSBhcHByb3ByaWF0
ZSBydWxlcyBmcm9tIHRoZSBmb2xsb3dpbmcKICAgICAvLyBsaXN0OgotICAgIGlmIChtX3NuYXBU
b0xpbmVzICYmIG1fZGlzcGxheVBvc2l0aW9uLnNlY29uZCA9PSB1bmRlZmluZWRQb3NpdGlvbiAm
JiBtX3dyaXRpbmdEaXJlY3Rpb24gPT0gSG9yaXpvbnRhbCkKKyAgICBpZiAobV9zbmFwVG9MaW5l
cyAmJiAhbV9kaXNwbGF5UG9zaXRpb24uc2Vjb25kICYmIG1fd3JpdGluZ0RpcmVjdGlvbiA9PSBI
b3Jpem9udGFsKQogICAgICAgICBtX2Rpc3BsYXlQb3NpdGlvbi5zZWNvbmQgPSAwOwogCi0gICAg
aWYgKCFtX3NuYXBUb0xpbmVzICYmIG1fZGlzcGxheVBvc2l0aW9uLnNlY29uZCA9PSB1bmRlZmlu
ZWRQb3NpdGlvbiAmJiBtX3dyaXRpbmdEaXJlY3Rpb24gPT0gSG9yaXpvbnRhbCkKLSAgICAgICAg
bV9kaXNwbGF5UG9zaXRpb24uc2Vjb25kID0gbV9jb21wdXRlZExpbmVQb3NpdGlvbjsKKyAgICBp
ZiAoIW1fc25hcFRvTGluZXMgJiYgIW1fZGlzcGxheVBvc2l0aW9uLnNlY29uZCAmJiBtX3dyaXRp
bmdEaXJlY3Rpb24gPT0gSG9yaXpvbnRhbCkKKyAgICAgICAgbV9kaXNwbGF5UG9zaXRpb24uc2Vj
b25kID0gKm1fY29tcHV0ZWRMaW5lUG9zaXRpb247CiAKLSAgICBpZiAobV9zbmFwVG9MaW5lcyAm
JiBtX2Rpc3BsYXlQb3NpdGlvbi5maXJzdCA9PSB1bmRlZmluZWRQb3NpdGlvbgorICAgIGlmICht
X3NuYXBUb0xpbmVzICYmICFtX2Rpc3BsYXlQb3NpdGlvbi5maXJzdAogICAgICAgICAmJiAobV93
cml0aW5nRGlyZWN0aW9uID09IFZlcnRpY2FsR3Jvd2luZ0xlZnQgfHwgbV93cml0aW5nRGlyZWN0
aW9uID09IFZlcnRpY2FsR3Jvd2luZ1JpZ2h0KSkKICAgICAgICAgbV9kaXNwbGF5UG9zaXRpb24u
Zmlyc3QgPSAwOwogCiAgICAgaWYgKCFtX3NuYXBUb0xpbmVzICYmIChtX3dyaXRpbmdEaXJlY3Rp
b24gPT0gVmVydGljYWxHcm93aW5nTGVmdCB8fCBtX3dyaXRpbmdEaXJlY3Rpb24gPT0gVmVydGlj
YWxHcm93aW5nUmlnaHQpKQotICAgICAgICBtX2Rpc3BsYXlQb3NpdGlvbi5maXJzdCA9IG1fY29t
cHV0ZWRMaW5lUG9zaXRpb247CisgICAgICAgIG1fZGlzcGxheVBvc2l0aW9uLmZpcnN0ID0gKm1f
Y29tcHV0ZWRMaW5lUG9zaXRpb247CiB9CiAgICAgCiB2b2lkIFZUVEN1ZTo6bWFya0Z1dHVyZUFu
ZFBhc3ROb2RlcyhDb250YWluZXJOb2RlKiByb290LCBjb25zdCBNZWRpYVRpbWUmIHByZXZpb3Vz
VGltZXN0YW1wLCBjb25zdCBNZWRpYVRpbWUmIG1vdmllVGltZSkKQEAgLTEwNzYsMzAgKzEwNTEs
MzEgQEAgc3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPiBWVFRDdWU6OmdldFBvc2l0aW9uQ29vcmRp
bmF0ZXMoKSBjb25zdAogICAgIHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4gY29vcmRpbmF0ZXM7
CiAKICAgICBhdXRvIHRleHRQb3NpdGlvbiA9IGNhbGN1bGF0ZUNvbXB1dGVkVGV4dFBvc2l0aW9u
KCk7CisgICAgYXV0byBjb21wdXRlZExpbmVQb3NpdGlvbiA9IG1fY29tcHV0ZWRMaW5lUG9zaXRp
b24gPyAqbV9jb21wdXRlZExpbmVQb3NpdGlvbiA6IGNhbGN1bGF0ZUNvbXB1dGVkTGluZVBvc2l0
aW9uKCk7CiAgICAgCiAgICAgaWYgKG1fd3JpdGluZ0RpcmVjdGlvbiA9PSBIb3Jpem9udGFsICYm
IG1fZGlzcGxheURpcmVjdGlvbiA9PSBDU1NWYWx1ZUx0cikgewogICAgICAgICBjb29yZGluYXRl
cy5maXJzdCA9IHRleHRQb3NpdGlvbjsKLSAgICAgICAgY29vcmRpbmF0ZXMuc2Vjb25kID0gbV9j
b21wdXRlZExpbmVQb3NpdGlvbjsKKyAgICAgICAgY29vcmRpbmF0ZXMuc2Vjb25kID0gY29tcHV0
ZWRMaW5lUG9zaXRpb247CiAKICAgICAgICAgcmV0dXJuIGNvb3JkaW5hdGVzOwogICAgIH0KIAog
ICAgIGlmIChtX3dyaXRpbmdEaXJlY3Rpb24gPT0gSG9yaXpvbnRhbCAmJiBtX2Rpc3BsYXlEaXJl
Y3Rpb24gPT0gQ1NTVmFsdWVSdGwpIHsKICAgICAgICAgY29vcmRpbmF0ZXMuZmlyc3QgPSAxMDAg
LSB0ZXh0UG9zaXRpb247Ci0gICAgICAgIGNvb3JkaW5hdGVzLnNlY29uZCA9IG1fY29tcHV0ZWRM
aW5lUG9zaXRpb247CisgICAgICAgIGNvb3JkaW5hdGVzLnNlY29uZCA9IGNvbXB1dGVkTGluZVBv
c2l0aW9uOwogCiAgICAgICAgIHJldHVybiBjb29yZGluYXRlczsKICAgICB9CiAKICAgICBpZiAo
bV93cml0aW5nRGlyZWN0aW9uID09IFZlcnRpY2FsR3Jvd2luZ0xlZnQpIHsKLSAgICAgICAgY29v
cmRpbmF0ZXMuZmlyc3QgPSAxMDAgLSBtX2NvbXB1dGVkTGluZVBvc2l0aW9uOworICAgICAgICBj
b29yZGluYXRlcy5maXJzdCA9IDEwMCAtICptX2NvbXB1dGVkTGluZVBvc2l0aW9uOwogICAgICAg
ICBjb29yZGluYXRlcy5zZWNvbmQgPSB0ZXh0UG9zaXRpb247CiAKICAgICAgICAgcmV0dXJuIGNv
b3JkaW5hdGVzOwogICAgIH0KIAogICAgIGlmIChtX3dyaXRpbmdEaXJlY3Rpb24gPT0gVmVydGlj
YWxHcm93aW5nUmlnaHQpIHsKLSAgICAgICAgY29vcmRpbmF0ZXMuZmlyc3QgPSBtX2NvbXB1dGVk
TGluZVBvc2l0aW9uOworICAgICAgICBjb29yZGluYXRlcy5maXJzdCA9IGNvbXB1dGVkTGluZVBv
c2l0aW9uOwogICAgICAgICBjb29yZGluYXRlcy5zZWNvbmQgPSB0ZXh0UG9zaXRpb247CiAKICAg
ICAgICAgcmV0dXJuIGNvb3JkaW5hdGVzOwpAQCAtMTMxOSwxNCArMTI5NSw2IEBAIGludCBWVFRD
dWU6OmdldENTU1NpemUoKSBjb25zdAogICAgIHJldHVybiBtX2Rpc3BsYXlTaXplOwogfQogCi1z
dGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+IFZUVEN1ZTo6Z2V0Q1NTUG9zaXRpb24oKSBjb25zdAot
ewotICAgIGlmICghbV9zbmFwVG9MaW5lcykKLSAgICAgICAgcmV0dXJuIGdldFBvc2l0aW9uQ29v
cmRpbmF0ZXMoKTsKLQotICAgIHJldHVybiBtX2Rpc3BsYXlQb3NpdGlvbjsKLX0KLQogYm9vbCBW
VFRDdWU6OmN1ZUNvbnRlbnRzTWF0Y2goY29uc3QgVGV4dFRyYWNrQ3VlJiBvdGhlclRleHRUcmFj
a0N1ZSkgY29uc3QKIHsKICAgICBhdXRvJiBvdGhlciA9IGRvd25jYXN0PFZUVEN1ZT4ob3RoZXJU
ZXh0VHJhY2tDdWUpOwpAQCAtMTM2MCwxMSArMTMyOCwxNCBAQCB2b2lkIFZUVEN1ZTo6dG9KU09O
KEpTT046Ok9iamVjdCYgb2JqZWN0KSBjb25zdAogCiAgICAgb2JqZWN0LnNldFN0cmluZygidmVy
dGljYWwiX3MsIHZlcnRpY2FsKCkpOwogICAgIG9iamVjdC5zZXRCb29sZWFuKCJzbmFwVG9MaW5l
cyJfcywgc25hcFRvTGluZXMoKSk7Ci0gICAgb2JqZWN0LnNldERvdWJsZSgibGluZSJfcywgbV9s
aW5lUG9zaXRpb24pOwotICAgIGlmICh0ZXh0UG9zaXRpb25Jc0F1dG8oKSkKLSAgICAgICAgb2Jq
ZWN0LnNldFN0cmluZygicG9zaXRpb24iX3MsICJhdXRvIl9zKTsKKyAgICBpZiAobV9saW5lUG9z
aXRpb24pCisgICAgICAgIG9iamVjdC5zZXRTdHJpbmcoImxpbmUiX3MsICJhdXRvIl9zKTsKICAg
ICBlbHNlCi0gICAgICAgIG9iamVjdC5zZXREb3VibGUoInBvc2l0aW9uIl9zLCBtX3RleHRQb3Np
dGlvbik7CisgICAgICAgIG9iamVjdC5zZXREb3VibGUoImxpbmUiX3MsICptX2xpbmVQb3NpdGlv
bik7CisgICAgaWYgKG1fdGV4dFBvc2l0aW9uKQorICAgICAgICBvYmplY3Quc2V0RG91YmxlKCJw
b3NpdGlvbiJfcywgKm1fdGV4dFBvc2l0aW9uKTsKKyAgICBlbHNlCisgICAgICAgIG9iamVjdC5z
ZXRTdHJpbmcoInBvc2l0aW9uIl9zLCAiYXV0byJfcyk7CiAgICAgb2JqZWN0LnNldEludGVnZXIo
InNpemUiX3MsIG1fY3VlU2l6ZSk7CiAgICAgb2JqZWN0LnNldFN0cmluZygiYWxpZ24iX3MsIGFs
aWduKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmgKaW5kZXggNzQ5NmMyMjkxZWMw
YzlkYWFhYzU2MjBmNTI5ZDIyNjE1MmQ4YmY1ZS4uYzkxYTQ5MDk2NjUwODMzNjRhMjg5OGYxMDhl
NTViNDA5ZmZmN2QwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRD
dWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5oCkBAIC0xMzYsMTAg
KzEzNiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVEaXNwbGF5VHJlZSgpIGZpbmFsOwog
ICAgIHZvaWQgbWFya0Z1dHVyZUFuZFBhc3ROb2RlcyhDb250YWluZXJOb2RlKiwgY29uc3QgTWVk
aWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJik7CiAKLSAgICBpbnQgY2FsY3VsYXRlQ29tcHV0ZWRM
aW5lUG9zaXRpb24oKTsKKyAgICBpbnQgY2FsY3VsYXRlQ29tcHV0ZWRMaW5lUG9zaXRpb24oKSBj
b25zdDsKICAgICBzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+IGdldFBvc2l0aW9uQ29vcmRpbmF0
ZXMoKSBjb25zdDsKIAotICAgIHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4gZ2V0Q1NTUG9zaXRp
b24oKSBjb25zdDsKKyAgICB1c2luZyBEaXNwbGF5UG9zaXRpb24gPSBzdGQ6OnBhaXI8c3RkOjpv
cHRpb25hbDxkb3VibGU+LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4+OworICAgIGNvbnN0IERpc3Bs
YXlQb3NpdGlvbiYgZ2V0Q1NTUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlQb3Np
dGlvbjsgfTsKIAogICAgIENTU1ZhbHVlSUQgZ2V0Q1NTQWxpZ25tZW50KCkgY29uc3Q7CiAgICAg
aW50IGdldENTU1NpemUoKSBjb25zdDsKQEAgLTIwNyw4ICsyMDgsNiBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBwYXJzZVNldHRpbmdzKGNvbnN0IFN0cmluZyYpOwogCi0gICAgYm9vbCB0ZXh0UG9z
aXRpb25Jc0F1dG8oKSBjb25zdDsKLQogICAgIHZvaWQgZGV0ZXJtaW5lVGV4dERpcmVjdGlvbigp
OwogICAgIHZvaWQgY2FsY3VsYXRlRGlzcGxheVBhcmFtZXRlcnMoKTsKIApAQCAtMjIzLDEzICsy
MjIsMTEgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIEN1ZVNldHRpbmcgc2V0dGluZ05hbWUoVlRU
U2Nhbm5lciYpOwogCi0gICAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgdW5kZWZpbmVkUG9zaXRp
b24gPSAtMTsKLQogICAgIFN0cmluZyBtX2NvbnRlbnQ7CiAgICAgU3RyaW5nIG1fc2V0dGluZ3M7
Ci0gICAgZG91YmxlIG1fbGluZVBvc2l0aW9uIHsgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+
OjpxdWlldF9OYU4oKSB9OwotICAgIGRvdWJsZSBtX2NvbXB1dGVkTGluZVBvc2l0aW9uIHsgc3Rk
OjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSB9OwotICAgIGRvdWJsZSBtX3Rl
eHRQb3NpdGlvbiB7IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkgfTsK
KyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbV9saW5lUG9zaXRpb247CisgICAgc3RkOjpvcHRp
b25hbDxkb3VibGU+IG1fY29tcHV0ZWRMaW5lUG9zaXRpb247CisgICAgc3RkOjpvcHRpb25hbDxk
b3VibGU+IG1fdGV4dFBvc2l0aW9uOwogICAgIGludCBtX2N1ZVNpemUgeyAxMDAgfTsKIAogICAg
IFdyaXRpbmdEaXJlY3Rpb24gbV93cml0aW5nRGlyZWN0aW9uIHsgSG9yaXpvbnRhbCB9OwpAQCAt
MjQ1LDcgKzI0Miw3IEBAIHByaXZhdGU6CiAKICAgICBDU1NWYWx1ZUlEIG1fZGlzcGxheURpcmVj
dGlvbiB7IENTU1ZhbHVlTHRyIH07CiAgICAgaW50IG1fZGlzcGxheVNpemUgeyAwIH07Ci0gICAg
c3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gbV9kaXNwbGF5UG9zaXRpb247CisgICAgRGlzcGxheVBv
c2l0aW9uIG1fZGlzcGxheVBvc2l0aW9uOwogCiAgICAgTWVkaWFUaW1lIG1fb3JpZ2luYWxTdGFy
dFRpbWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMu
Y3BwCmluZGV4IDkzNTQxNzJjZjM0NjNhZjBjODY4YTc5NWU1MzZlYzg2NDdiMDE2ZmUuLjMzNGU2
NDI1NjIzNTMzNTQ2NWQ1ZTkxYmZjOGExNjFjYWMyMTY4M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcApAQCAtOTcsNyArOTcsNyBAQCBDYXB0
aW9uVXNlclByZWZlcmVuY2VzOjpDYXB0aW9uRGlzcGxheU1vZGUgQ2FwdGlvblVzZXJQcmVmZXJl
bmNlczo6Y2FwdGlvbkRpc3BsYQogdm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpzZXRDYXB0
aW9uRGlzcGxheU1vZGUoQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6Q2FwdGlvbkRpc3BsYXlNb2Rl
IG1vZGUpCiB7CiAgICAgbV9kaXNwbGF5TW9kZSA9IG1vZGU7Ci0gICAgaWYgKG1fdGVzdGluZ01v
ZGUgJiYgbW9kZSAhPSBBbHdheXNPbikgeworICAgIGlmICh0ZXN0aW5nTW9kZSgpICYmIG1vZGUg
IT0gQWx3YXlzT24pIHsKICAgICAgICAgc2V0VXNlclByZWZlcnNDYXB0aW9ucyhmYWxzZSk7CiAg
ICAgICAgIHNldFVzZXJQcmVmZXJzU3VidGl0bGVzKGZhbHNlKTsKICAgICB9CkBAIC0xNzYsNyAr
MTc2LDcgQEAgdm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpjYXB0aW9uUHJlZmVyZW5jZXND
aGFuZ2VkKCkKIFZlY3RvcjxTdHJpbmc+IENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnByZWZlcnJl
ZExhbmd1YWdlcygpIGNvbnN0CiB7CiAgICAgVmVjdG9yPFN0cmluZz4gbGFuZ3VhZ2VzID0gdXNl
clByZWZlcnJlZExhbmd1YWdlcyhTaG91bGRNaW5pbWl6ZUxhbmd1YWdlczo6Tm8pOwotICAgIGlm
IChtX3Rlc3RpbmdNb2RlICYmICFtX3VzZXJQcmVmZXJyZWRMYW5ndWFnZS5pc0VtcHR5KCkpCisg
ICAgaWYgKHRlc3RpbmdNb2RlKCkgJiYgIW1fdXNlclByZWZlcnJlZExhbmd1YWdlLmlzRW1wdHko
KSkKICAgICAgICAgbGFuZ3VhZ2VzLmluc2VydCgwLCBtX3VzZXJQcmVmZXJyZWRMYW5ndWFnZSk7
CiAKICAgICByZXR1cm4gbGFuZ3VhZ2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25V
c2VyUHJlZmVyZW5jZXMuaAppbmRleCBjYzUwMWY3OTE1MzE2ZTE0MDM5YzBkNzJmZjkxNDU0ZTMz
MDM1M2ZlLi43ZTY3ZWE0NzI3YWVjYWViNThmODM5MTY2NmJhM2RkYjJlYWJlZjY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaApAQCAtMzYsNiArMzYs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNUZXN0aW5nTW9kZVRva2VuOwogY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKIGNsYXNzIFBhZ2U7
CiBjbGFzcyBQYWdlR3JvdXA7CkBAIC05OCw4ICs5OSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRQcmltYXJ5QXVkaW9UcmFja0xhbmd1YWdlT3ZlcnJpZGUoY29uc3QgU3RyaW5nJiBsYW5ndWFn
ZSkgeyBtX3ByaW1hcnlBdWRpb1RyYWNrTGFuZ3VhZ2VPdmVycmlkZSA9IGxhbmd1YWdlOyAgfQog
ICAgIFN0cmluZyBwcmltYXJ5QXVkaW9UcmFja0xhbmd1YWdlT3ZlcnJpZGUoKSBjb25zdDsKIAot
ICAgIHZpcnR1YWwgYm9vbCB0ZXN0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGVzdGluZ01v
ZGU7IH0KLSAgICB2b2lkIHNldFRlc3RpbmdNb2RlKGJvb2wgb3ZlcnJpZGUpIHsgbV90ZXN0aW5n
TW9kZSA9IG92ZXJyaWRlOyB9CisgICAgdmlydHVhbCBib29sIHRlc3RpbmdNb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV90ZXN0aW5nTW9kZUNvdW50OyB9CisKKyAgICBmcmllbmQgY2xhc3MgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc1Rlc3RpbmdNb2RlVG9rZW47CisgICAgVW5pcXVlUmVmPENhcHRpb25V
c2VyUHJlZmVyZW5jZXNUZXN0aW5nTW9kZVRva2VuPiBjcmVhdGVUZXN0aW5nTW9kZVRva2VuKCkg
eyByZXR1cm4gbWFrZVVuaXF1ZVJlZjxDYXB0aW9uVXNlclByZWZlcmVuY2VzVGVzdGluZ01vZGVU
b2tlbj4oKnRoaXMpOyB9CiAgICAgCiAgICAgUGFnZUdyb3VwJiBwYWdlR3JvdXAoKSBjb25zdCB7
IHJldHVybiBtX3BhZ2VHcm91cDsgfQogCkBAIC0xMTEsNiArMTE0LDE0IEBAIHByb3RlY3RlZDoK
ICAgICB2b2lkIGVuZEJsb2NraW5nTm90aWZpY2F0aW9ucygpOwogCiBwcml2YXRlOgorICAgIHZv
aWQgaW5jcmVtZW50VGVzdGluZ01vZGVDb3VudCgpIHsgKyttX3Rlc3RpbmdNb2RlQ291bnQ7IH0K
KyAgICB2b2lkIGRlY3JlbWVudFRlc3RpbmdNb2RlQ291bnQoKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKG1fdGVzdGluZ01vZGVDb3VudCk7CisgICAgICAgIGlmIChtX3Rlc3RpbmdNb2RlQ291bnQp
CisgICAgICAgICAgICAtLW1fdGVzdGluZ01vZGVDb3VudDsKKyAgICB9CisKICAgICB2b2lkIHRp
bWVyRmlyZWQoKTsKICAgICB2b2lkIG5vdGlmeSgpOwogICAgIFBhZ2UqIGN1cnJlbnRQYWdlKCkg
Y29uc3Q7CkBAIC0xMjMsOCArMTM0LDI1IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fY2FwdGlv
bnNTdHlsZVNoZWV0T3ZlcnJpZGU7CiAgICAgU3RyaW5nIG1fcHJpbWFyeUF1ZGlvVHJhY2tMYW5n
dWFnZU92ZXJyaWRlOwogICAgIHVuc2lnbmVkIG1fYmxvY2tOb3RpZmljYXRpb25zQ291bnRlciB7
IDAgfTsKLSAgICBib29sIG1fdGVzdGluZ01vZGUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXZl
UHJlZmVyZW5jZXMgeyBmYWxzZSB9OworICAgIHVuc2lnbmVkIG1fdGVzdGluZ01vZGVDb3VudCB7
IDAgfTsKK307CisKK2NsYXNzIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNUZXN0aW5nTW9kZVRva2Vu
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBDYXB0aW9uVXNl
clByZWZlcmVuY2VzVGVzdGluZ01vZGVUb2tlbihDYXB0aW9uVXNlclByZWZlcmVuY2VzJiBwYXJl
bnQpCisgICAgICAgIDogbV9wYXJlbnQocGFyZW50KQorICAgIHsKKyAgICAgICAgcGFyZW50Lmlu
Y3JlbWVudFRlc3RpbmdNb2RlQ291bnQoKTsKKyAgICB9CisgICAgfkNhcHRpb25Vc2VyUHJlZmVy
ZW5jZXNUZXN0aW5nTW9kZVRva2VuKCkKKyAgICB7CisgICAgICAgIGlmIChtX3BhcmVudCkKKyAg
ICAgICAgICAgIG1fcGFyZW50LT5kZWNyZW1lbnRUZXN0aW5nTW9kZUNvdW50KCk7CisgICAgfQor
cHJpdmF0ZToKKyAgICBXZWFrUHRyPENhcHRpb25Vc2VyUHJlZmVyZW5jZXM+IG1fcGFyZW50Owog
fTsKICAgICAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCA4
ZWJjZjI5NGZiNjdhNDViMmY0NzBmOWY3ZmQxYjcxNjViNjJlNGEzLi44NzIwODQwOGE2Yzk1Yzcy
YzZjZGJmZmMxZTEyZDkzNGQ5Yzg3ODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oCkBAIC0yNjksNiArMjY5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBp
c1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclNjcm9sbGJhclBhcnQoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclZUVEN1ZSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBib29sIGlzRG9jdW1lbnRFbGVtZW50UmVuZGVyZXIo
KSBjb25zdCB7IHJldHVybiBkb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpID09ICZtX25vZGU7
IH0KICAgICBib29sIGlzQm9keSgpIGNvbnN0IHsgcmV0dXJuIG5vZGUoKSAmJiBub2RlKCktPmhh
c1RhZ05hbWUoSFRNTE5hbWVzOjpib2R5VGFnKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZUVEN1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVlRUQ3VlLmNwcAppbmRleCA1YmFlOGVmZTdhOGZjODE2MjJiMjBlODhhN2ZlYjVhMmNi
NGZlZWM0Li5jMjEyMDMwMWRmNDMxZDVkNDExZWNkOWMzOTViYWE1NmQ4NTRiMWQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmNwcApAQCAtNjAsNyArNjAsNyBAQCB2
b2lkIFJlbmRlclZUVEN1ZTo6bGF5b3V0KCkKICAgICBpZiAoIW1fY3VlLT5yZWdpb25JZCgpLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTGF5b3V0U3RhdGVNYWludGFpbmVyIHN0
YXRlUHVzaGVyKCp0aGlzLCBsb2NhdGlvbk9mZnNldCgpLCBoYXNUcmFuc2Zvcm0oKSB8fCBoYXNS
ZWZsZWN0aW9uKCkgfHwgc3R5bGUoKS5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKTsKKyAg
ICBMYXlvdXRTdGF0ZU1haW50YWluZXIgc3RhdGVQdXNoZXIoKnRoaXMsIGxvY2F0aW9uT2Zmc2V0
KCksIHRydWUpOwogCiAgICAgaWYgKG1fY3VlLT5jdWVUeXBlKCk9PSBUZXh0VHJhY2tDdWU6Oldl
YlZUVCkgewogICAgICAgICBpZiAobV9jdWUtPnNuYXBUb0xpbmVzKCkpCkBAIC03OSwxMiArNzks
NyBAQCBib29sIFJlbmRlclZUVEN1ZTo6aW5pdGlhbGl6ZUxheW91dFBhcmFtZXRlcnMoTGVnYWN5
SW5saW5lRmxvd0JveComIGZpcnN0TGluZUJveAogCiAgICAgUmVuZGVyQmxvY2sqIHBhcmVudEJs
b2NrID0gY29udGFpbmluZ0Jsb2NrKCk7CiAKLSAgICAvLyBmaXJzdENoaWxkKCkgcmV0dXJucyB0
aGUgd3JhcHBpbmcgKGJhY2tkcm9wKSA8ZGl2Pi4gVGhlIGN1ZSBvYmplY3QgaXMKLSAgICAvLyB0
aGUgPGRpdj4ncyBmaXJzdCBjaGlsZC4KLSAgICBSZW5kZXJPYmplY3QmIGZpcnN0Q2hpbGQgPSAq
dGhpcy0+Zmlyc3RDaGlsZCgpOwotICAgIFJlbmRlckVsZW1lbnQmIGJhY2tkcm9wRWxlbWVudCA9
IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KGZpcnN0Q2hpbGQpOwotICAgIAotICAgIGZpcnN0TGlu
ZUJveCA9IGRvd25jYXN0PFJlbmRlcklubGluZT4oKmJhY2tkcm9wRWxlbWVudC5maXJzdENoaWxk
KCkpLmZpcnN0TGluZUJveCgpOworICAgIGZpcnN0TGluZUJveCA9IGN1ZUJveCgpLmZpcnN0TGlu
ZUJveCgpOwogICAgIGlmICghZmlyc3RMaW5lQm94KQogICAgICAgICBmaXJzdExpbmVCb3ggPSB0
aGlzLT5maXJzdFJvb3RCb3goKTsKIApAQCAtOTIsNiArODcsMTkgQEAgYm9vbCBSZW5kZXJWVFRD
dWU6OmluaXRpYWxpemVMYXlvdXRQYXJhbWV0ZXJzKExlZ2FjeUlubGluZUZsb3dCb3gqJiBmaXJz
dExpbmVCb3gKICAgICAvLyAgICBWZXJ0aWNhbDogTGV0IHN0ZXAgYmUgdGhlIHdpZHRoIG9mIHRo
ZSBmaXJzdCBsaW5lIGJveCBpbiBib3hlcy4KICAgICBzdGVwID0gbV9jdWUtPmdldFdyaXRpbmdE
aXJlY3Rpb24oKSA9PSBWVFRDdWU6Okhvcml6b250YWwgPyBmaXJzdExpbmVCb3gtPmhlaWdodCgp
IDogZmlyc3RMaW5lQm94LT53aWR0aCgpOwogCisgICAgLy8gTm90ZTogdGhlIHByZXZpb3VzIHJ1
bGVzIGluIGluaXRpYWxpemVMYXlvdXRQYXJhbWV0ZXJzKCkgb25seSBhY2NvdW50IGZvcgorICAg
IC8vIHRoZSBoZWlnaHQgb2YgdGhlIGxpbmUgYm94ZXMgY29udGFpbmVkIHdpdGhpbiB0aGUgY3Vl
LCBhbmQgbm90IHRoZSBjdWUncyBoZWlnaHQKKyAgICAvLyBub3IgaXRzIHBhZGRpbmcsIG5vciBp
dHMgYm9yZGVycy4gSWdub3JpbmcgdGhlc2Ugd2lsbCBsZWFkIHRvIGVycm9ycworICAgIC8vIGlu
IHRoZSBpbml0aWFsIHBsYWNlbWVudCBvZiBjdWVzLCBhcyB0aGUgcmVzdWx0aW5nIHBsYWNlbWVu
dCB3aWxsIHJlc3VsdCBpbgorICAgIC8vIHRoZSBjdWUgYWx3YXlzIGJlaW5nIHBhcnRpYWxseSBv
dXRzaWRlIGl0cyBjb250YWluaW5nIGJsb2NrLCByYXRoZXIgdGhhbiBhdAorICAgIC8vIGl0cyBp
bml0aWFsIHBvc2l0aW9uLiBDb3JyZWN0IHRoZSBpbml0aWFsIHBvc2l0aW9uIGJ5IHN1YnRyYWN0
aW5nIGZyb20KKyAgICAvLyBwb3NpdGlvbiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0aGUg
bG9naWNhbEhlaWdodCBvZiB0aGUgY3VlIGFuZCBpdHMKKyAgICAvLyBmaXJzdCBsaW5lIGJveC4K
KyAgICBhdXRvJiBiYWNrZHJvcEJveCA9IHRoaXMtPmJhY2tkcm9wQm94KCk7CisgICAgYXV0byBs
b2dpY2FsSGVpZ2h0RGVsdGEgPSBiYWNrZHJvcEJveC5sb2dpY2FsSGVpZ2h0KCkgLSBmaXJzdExp
bmVCb3gtPmxvZ2ljYWxIZWlnaHQoKTsKKyAgICBpZiAobG9naWNhbEhlaWdodERlbHRhID4gMCkK
KyAgICAgICAgc3RlcCArPSBsb2dpY2FsSGVpZ2h0RGVsdGE7CisKICAgICAvLyAyLiBJZiBzdGVw
IGlzIHplcm8sIHRoZW4ganVtcCB0byB0aGUgc3RlcCBsYWJlbGVkIGRvbmUgcG9zaXRpb25pbmcg
YmVsb3cuCiAgICAgaWYgKCFzdGVwKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNDYsNyAr
MTU0LDcgQEAgdm9pZCBSZW5kZXJWVFRDdWU6OnBsYWNlQm94SW5EZWZhdWx0UG9zaXRpb24oTGF5
b3V0VW5pdCBwb3NpdGlvbiwgYm9vbCYgc3dpdGNoZWQKIAogYm9vbCBSZW5kZXJWVFRDdWU6Omlz
T3V0c2lkZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFyZWN0SXNXaXRoaW5Db250YWluZXIoYWJz
b2x1dGVDb250ZW50Qm94KCkpOworICAgIHJldHVybiAhcmVjdElzV2l0aGluQ29udGFpbmVyKGJh
Y2tkcm9wQm94KCkuYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSk7CiB9CiAKIGJvb2wgUmVuZGVy
VlRUQ3VlOjpyZWN0SXNXaXRoaW5Db250YWluZXIoY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3QK
QEAgLTE2MCwxOCArMTY4LDIwIEBAIGJvb2wgUmVuZGVyVlRUQ3VlOjppc092ZXJsYXBwaW5nKCkg
Y29uc3QKICAgICByZXR1cm4gb3ZlcmxhcHBpbmdPYmplY3QoKTsKIH0KIAotUmVuZGVyT2JqZWN0
KiBSZW5kZXJWVFRDdWU6Om92ZXJsYXBwaW5nT2JqZWN0KCkgY29uc3QKK1JlbmRlclZUVEN1ZSog
UmVuZGVyVlRUQ3VlOjpvdmVybGFwcGluZ09iamVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG92
ZXJsYXBwaW5nT2JqZWN0Rm9yUmVjdChhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsKKyAgICBy
ZXR1cm4gb3ZlcmxhcHBpbmdPYmplY3RGb3JSZWN0KGJhY2tkcm9wQm94KCkuYWJzb2x1dGVCb3Vu
ZGluZ0JveFJlY3QoKSk7CiB9CiAKLVJlbmRlck9iamVjdCogUmVuZGVyVlRUQ3VlOjpvdmVybGFw
cGluZ09iamVjdEZvclJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3QKK1JlbmRlclZUVEN1
ZSogUmVuZGVyVlRUQ3VlOjpvdmVybGFwcGluZ09iamVjdEZvclJlY3QoY29uc3QgSW50UmVjdCYg
cmVjdCkgY29uc3QKIHsKLSAgICBmb3IgKFJlbmRlck9iamVjdCogYm94ID0gcHJldmlvdXNTaWJs
aW5nKCk7IGJveDsgYm94ID0gYm94LT5wcmV2aW91c1NpYmxpbmcoKSkgewotICAgICAgICBJbnRS
ZWN0IGJveFJlY3QgPSBib3gtPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CisgICAgZm9yIChS
ZW5kZXJPYmplY3QqIHNpYmxpbmcgPSBwcmV2aW91c1NpYmxpbmcoKTsgc2libGluZzsgc2libGlu
ZyA9IHNpYmxpbmctPnByZXZpb3VzU2libGluZygpKSB7CisgICAgICAgIGF1dG8qIHByZXZpb3Vz
Q3VlID0gZG93bmNhc3Q8UmVuZGVyVlRUQ3VlPihzaWJsaW5nKTsKKyAgICAgICAgaWYgKCFwcmV2
aW91c0N1ZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChyZWN0LmludGVy
c2VjdHMoYm94UmVjdCkpCi0gICAgICAgICAgICByZXR1cm4gYm94OworICAgICAgICBpZiAocmVj
dC5pbnRlcnNlY3RzKHByZXZpb3VzQ3VlLT5iYWNrZHJvcEJveCgpLmFic29sdXRlQm91bmRpbmdC
b3hSZWN0KCkpKQorICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzQ3VlOwogICAgIH0KIAogICAg
IHJldHVybiAwOwpAQCAtMjQzLDcgKzI1Myw3IEBAIGJvb2wgUmVuZGVyVlRUQ3VlOjpzd2l0Y2hE
aXJlY3Rpb24oYm9vbCYgc3dpdGNoZWQsIExheW91dFVuaXQmIHN0ZXApCiB2b2lkIFJlbmRlclZU
VEN1ZTo6bW92ZUlmTmVjZXNzYXJ5VG9LZWVwV2l0aGluQ29udGFpbmVyKCkKIHsKICAgICBJbnRS
ZWN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluaW5nQmxvY2soKS0+YWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3QoKTsKLSAgICBJbnRSZWN0IGN1ZVJlY3QgPSBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgp
OworICAgIEludFJlY3QgY3VlUmVjdCA9IGJhY2tkcm9wQm94KCkuYWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3QoKTsKIAogICAgIGludCB0b3BPdmVyZmxvdyA9IGN1ZVJlY3QueSgpIC0gY29udGFpbmVy
UmVjdC55KCk7CiAgICAgaW50IGJvdHRvbU92ZXJmbG93ID0gY29udGFpbmVyUmVjdC5tYXhZKCkg
LSBjdWVSZWN0Lm1heFkoKTsKQEAgLTI3NCwxNSArMjg0LDE1IEBAIGJvb2wgUmVuZGVyVlRUQ3Vl
OjpmaW5kTm9uT3ZlcmxhcHBpbmdQb3NpdGlvbihpbnQmIG5ld1gsIGludCYgbmV3WSkgY29uc3QK
IHsKICAgICBuZXdYID0geCgpOwogICAgIG5ld1kgPSB5KCk7Ci0gICAgSW50UmVjdCBzcmNSZWN0
ID0gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKKyAgICBJbnRSZWN0IHNyY1JlY3QgPSBiYWNr
ZHJvcEJveCgpLmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CiAgICAgSW50UmVjdCBkZXN0UmVj
dCA9IHNyY1JlY3Q7CiAKICAgICAvLyBNb3ZlIHRoZSBib3ggdXAsIGxvb2tpbmcgZm9yIGEgbm9u
LW92ZXJsYXBwaW5nIHBvc2l0aW9uOgotICAgIHdoaWxlIChSZW5kZXJPYmplY3QqIGJveCA9IG92
ZXJsYXBwaW5nT2JqZWN0Rm9yUmVjdChkZXN0UmVjdCkpIHsKKyAgICB3aGlsZSAoUmVuZGVyVlRU
Q3VlKiBjdWUgPSBvdmVybGFwcGluZ09iamVjdEZvclJlY3QoZGVzdFJlY3QpKSB7CiAgICAgICAg
IGlmIChtX2N1ZS0+Z2V0V3JpdGluZ0RpcmVjdGlvbigpID09IFZUVEN1ZTo6SG9yaXpvbnRhbCkK
LSAgICAgICAgICAgIGRlc3RSZWN0LnNldFkoYm94LT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgp
LnkoKSAtIGRlc3RSZWN0LmhlaWdodCgpKTsKKyAgICAgICAgICAgIGRlc3RSZWN0LnNldFkoY3Vl
LT5iYWNrZHJvcEJveCgpLmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkueSgpIC0gZGVzdFJlY3Qu
aGVpZ2h0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBkZXN0UmVjdC5zZXRYKGJveC0+
YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKS54KCkgLSBkZXN0UmVjdC53aWR0aCgpKTsKKyAgICAg
ICAgICAgIGRlc3RSZWN0LnNldFgoY3VlLT5iYWNrZHJvcEJveCgpLmFic29sdXRlQm91bmRpbmdC
b3hSZWN0KCkueCgpIC0gZGVzdFJlY3Qud2lkdGgoKSk7CiAgICAgfQogCiAgICAgaWYgKHJlY3RJ
c1dpdGhpbkNvbnRhaW5lcihkZXN0UmVjdCkpIHsKQEAgLTI5NCwxMSArMzA0LDExIEBAIGJvb2wg
UmVuZGVyVlRUQ3VlOjpmaW5kTm9uT3ZlcmxhcHBpbmdQb3NpdGlvbihpbnQmIG5ld1gsIGludCYg
bmV3WSkgY29uc3QKICAgICBkZXN0UmVjdCA9IHNyY1JlY3Q7CiAKICAgICAvLyBNb3ZlIHRoZSBi
b3ggZG93biwgbG9va2luZyBmb3IgYSBub24tb3ZlcmxhcHBpbmcgcG9zaXRpb246Ci0gICAgd2hp
bGUgKFJlbmRlck9iamVjdCogYm94ID0gb3ZlcmxhcHBpbmdPYmplY3RGb3JSZWN0KGRlc3RSZWN0
KSkgeworICAgIHdoaWxlIChSZW5kZXJWVFRDdWUqIGN1ZSA9IG92ZXJsYXBwaW5nT2JqZWN0Rm9y
UmVjdChkZXN0UmVjdCkpIHsKICAgICAgICAgaWYgKG1fY3VlLT5nZXRXcml0aW5nRGlyZWN0aW9u
KCkgPT0gVlRUQ3VlOjpIb3Jpem9udGFsKQotICAgICAgICAgICAgZGVzdFJlY3Quc2V0WShib3gt
PmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkubWF4WSgpKTsKKyAgICAgICAgICAgIGRlc3RSZWN0
LnNldFkoY3VlLT5iYWNrZHJvcEJveCgpLmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkubWF4WSgp
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZGVzdFJlY3Quc2V0WChib3gtPmFic29sdXRl
Qm91bmRpbmdCb3hSZWN0KCkubWF4WCgpKTsKKyAgICAgICAgICAgIGRlc3RSZWN0LnNldFgoY3Vl
LT5iYWNrZHJvcEJveCgpLmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkubWF4WCgpKTsKICAgICB9
CiAKICAgICBpZiAocmVjdElzV2l0aGluQ29udGFpbmVyKGRlc3RSZWN0KSkgewpAQCAtMzQ1LDEy
ICszNTUsNyBAQCB2b2lkIFJlbmRlclZUVEN1ZTo6cmVwb3NpdGlvbkdlbmVyaWNDdWUoKQogewog
ICAgIEFTU0VSVChmaXJzdENoaWxkKCkpOwogCi0gICAgLy8gZmlyc3RDaGlsZCgpIHJldHVybnMg
dGhlIHdyYXBwaW5nIChiYWNrZHJvcCkgPGRpdj4uIFRoZSBjdWUgb2JqZWN0IGlzCi0gICAgLy8g
dGhlIDxkaXY+J3MgZmlyc3QgY2hpbGQuCi0gICAgUmVuZGVyT2JqZWN0JiBmaXJzdENoaWxkID0g
KnRoaXMtPmZpcnN0Q2hpbGQoKTsKLSAgICBSZW5kZXJFbGVtZW50JiBiYWNrZHJvcEVsZW1lbnQg
PSBkb3duY2FzdDxSZW5kZXJFbGVtZW50PihmaXJzdENoaWxkKTsKLSAgICAKLSAgICBMZWdhY3lJ
bmxpbmVGbG93Qm94KiBmaXJzdExpbmVCb3ggPSBkb3duY2FzdDxSZW5kZXJJbmxpbmU+KCpiYWNr
ZHJvcEVsZW1lbnQuZmlyc3RDaGlsZCgpKS5maXJzdExpbmVCb3goKTsKKyAgICBMZWdhY3lJbmxp
bmVGbG93Qm94KiBmaXJzdExpbmVCb3ggPSBjdWVCb3goKS5maXJzdExpbmVCb3goKTsKICAgICBp
ZiAoZG93bmNhc3Q8VGV4dFRyYWNrQ3VlR2VuZXJpYz4oKm1fY3VlKS51c2VEZWZhdWx0UG9zaXRp
b24oKSAmJiBmaXJzdExpbmVCb3gpIHsKICAgICAgICAgTGF5b3V0VW5pdCBwYXJlbnRXaWR0aCA9
IGNvbnRhaW5pbmdCbG9jaygpLT5sb2dpY2FsV2lkdGgoKTsKICAgICAgICAgTGF5b3V0VW5pdCB3
aWR0aCB7IGZpcnN0TGluZUJveC0+d2lkdGgoKSB9OwpAQCAtMzg0LDYgKzM4OSwyMSBAQCB2b2lk
IFJlbmRlclZUVEN1ZTo6cmVwb3NpdGlvbkN1ZVNuYXBUb0xpbmVzTm90U2V0KCkKICAgICBzZXRZ
KHkpOwogfQogCitSZW5kZXJCbG9ja0Zsb3cmIFJlbmRlclZUVEN1ZTo6YmFja2Ryb3BCb3goKSBj
b25zdAoreworICAgIEFTU0VSVChmaXJzdENoaWxkKCkpOworCisgICAgLy8gZmlyc3RDaGlsZCgp
IHJldHVybnMgdGhlIHdyYXBwaW5nIChiYWNrZHJvcCkgPGRpdj4uIFRoZSBjdWUgb2JqZWN0IGlz
CisgICAgLy8gdGhlIDxkaXY+J3MgZmlyc3QgY2hpbGQuCisgICAgUmVuZGVyT2JqZWN0JiBmaXJz
dENoaWxkID0gKnRoaXMtPmZpcnN0Q2hpbGQoKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVy
QmxvY2tGbG93PihmaXJzdENoaWxkKTsKK30KKworUmVuZGVySW5saW5lJiBSZW5kZXJWVFRDdWU6
OmN1ZUJveCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlcklubGluZT4oKmJh
Y2tkcm9wQm94KCkuZmlyc3RDaGlsZCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRD
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuaAppbmRleCAyYzU1
N2I2ZGU2MDg1NjhkZjgxNmM0YWNiMzE5NzExOTU2YTk2NDI0Li42MWY5ZTgxNjY2M2I3OWYxNzY5
MjMwODMzZDU2YWRkMGQzYTZhOGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVlRUQ3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZU
VEN1ZS5oCkBAIC00MiwxMyArNDIsMTUgQEAgcHVibGljOgogICAgIFJlbmRlclZUVEN1ZShWVFRD
dWVCb3gmLCBSZW5kZXJTdHlsZSYmKTsKIAogcHJpdmF0ZToKKyAgICBib29sIGlzUmVuZGVyVlRU
Q3VlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorCiAgICAgdm9pZCBsYXlvdXQoKSBv
dmVycmlkZTsKIAogICAgIGJvb2wgaXNPdXRzaWRlKCkgY29uc3Q7CiAgICAgYm9vbCByZWN0SXNX
aXRoaW5Db250YWluZXIoY29uc3QgSW50UmVjdCYpIGNvbnN0OwogICAgIGJvb2wgaXNPdmVybGFw
cGluZygpIGNvbnN0OwotICAgIFJlbmRlck9iamVjdCogb3ZlcmxhcHBpbmdPYmplY3QoKSBjb25z
dDsKLSAgICBSZW5kZXJPYmplY3QqIG92ZXJsYXBwaW5nT2JqZWN0Rm9yUmVjdChjb25zdCBJbnRS
ZWN0JikgY29uc3Q7CisgICAgUmVuZGVyVlRUQ3VlKiBvdmVybGFwcGluZ09iamVjdCgpIGNvbnN0
OworICAgIFJlbmRlclZUVEN1ZSogb3ZlcmxhcHBpbmdPYmplY3RGb3JSZWN0KGNvbnN0IEludFJl
Y3QmKSBjb25zdDsKICAgICBib29sIHNob3VsZFN3aXRjaERpcmVjdGlvbihMZWdhY3lJbmxpbmVG
bG93Qm94KiwgTGF5b3V0VW5pdCkgY29uc3Q7CiAKICAgICB2b2lkIG1vdmVCb3hlc0J5U3RlcChM
YXlvdXRVbml0KTsKQEAgLTYyLDEwICs2NCwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVwb3Np
dGlvbkN1ZVNuYXBUb0xpbmVzTm90U2V0KCk7CiAgICAgdm9pZCByZXBvc2l0aW9uR2VuZXJpY0N1
ZSgpOwogCisgICAgUmVuZGVyQmxvY2tGbG93JiBiYWNrZHJvcEJveCgpIGNvbnN0OworICAgIFJl
bmRlcklubGluZSYgY3VlQm94KCkgY29uc3Q7CisKICAgICBWVFRDdWUqIG1fY3VlOwogICAgIEZs
b2F0UG9pbnQgbV9mYWxsYmFja1Bvc2l0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyVlRUQ3VlLCBp
c1JlbmRlclZUVEN1ZSgpKQorCiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDQyZTljMGQ2ODU4ZWM5MWMzMTljYjIzMzRjZTBiMjIx
NTMzMWZhNmMuLjU5M2U0NGFhYTNmYjRhNDBjNjlmYzM0NzljMmI2NGUwYmIwYWZmNmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTU0NSwxMCArNTQ1LDggQEAgdm9pZCBJ
bnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUoUGFnZSYgcGFnZSkKICAgICBwYWdlLm1h
aW5GcmFtZSgpLmxvYWRlcigpLmNsZWFyVGVzdGluZ092ZXJyaWRlcygpOwogICAgIHBhZ2UuYXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UoKS5zZXREZWZhdWx0T3JpZ2luUXVvdGEoQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6Om5vUXVvdGEoKSk7CiAjaWYgRU5BQkxFKFZJREVPKQotICAgIHBhZ2UuZ3Jv
dXAoKS5lbnN1cmVDYXB0aW9uUHJlZmVyZW5jZXMoKS5zZXRUZXN0aW5nTW9kZSh0cnVlKTsKICAg
ICBwYWdlLmdyb3VwKCkuZW5zdXJlQ2FwdGlvblByZWZlcmVuY2VzKCkuc2V0Q2FwdGlvbkRpc3Bs
YXlNb2RlKENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkZvcmNlZE9ubHkpOwogICAgIHBhZ2UuZ3Jv
dXAoKS5lbnN1cmVDYXB0aW9uUHJlZmVyZW5jZXMoKS5zZXRDYXB0aW9uc1N0eWxlU2hlZXRPdmVy
cmlkZShlbXB0eVN0cmluZygpKTsKLSAgICBwYWdlLmdyb3VwKCkuZW5zdXJlQ2FwdGlvblByZWZl
cmVuY2VzKCkuc2V0VGVzdGluZ01vZGUoZmFsc2UpOwogICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnJlc2V0SGF2ZUV2ZXJSZWdpc3RlcmVkQXNOb3dQbGF5
aW5nQXBwbGljYXRpb25Gb3JUZXN0aW5nKCk7CiAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVzZXRSZXN0cmljdGlvbnMoKTsKICAgICBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zZXRXaWxsSWdub3JlU3lzdGVtSW50
ZXJydXB0aW9ucyh0cnVlKTsKQEAgLTYyMywxMiArNjIxLDEwIEBAIEludGVybmFsczo6SW50ZXJu
YWxzKERvY3VtZW50JiBkb2N1bWVudCkKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogICAgICwg
bV9vcmllbnRhdGlvbk5vdGlmaWVyKDApCiAjZW5kaWYKLXsKICNpZiBFTkFCTEUoVklERU8pCi0g
ICAgaWYgKGRvY3VtZW50LnBhZ2UoKSkKLSAgICAgICAgZG9jdW1lbnQucGFnZSgpLT5ncm91cCgp
LmVuc3VyZUNhcHRpb25QcmVmZXJlbmNlcygpLnNldFRlc3RpbmdNb2RlKHRydWUpOworICAgICwg
bV90ZXN0aW5nTW9kZVRva2VuKGRvY3VtZW50LnBhZ2UoKS0+Z3JvdXAoKS5lbnN1cmVDYXB0aW9u
UHJlZmVyZW5jZXMoKS5jcmVhdGVUZXN0aW5nTW9kZVRva2VuKCkpCiAjZW5kaWYKLQorewogI2lm
IEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgaWYgKGRvY3VtZW50LnBhZ2Uo
KSkKICAgICAgICAgZG9jdW1lbnQucGFnZSgpLT5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlckVuYWJsZWQodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA4ZDM0
NzU3ZjhlZDRkYmFjMjQzMjlkNjJjYWY1NDI1OTlmZjM0YzhkLi4wZWRmODcwNzk2MDQwYWZjMmQx
MDhiMjFhMjg4ZTVkZmQwNzZiMWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAg
LTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJUZXh0SW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAiVlA5
VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRm9yd2FyZC5oPgorI2luY2x1
ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogI2lmIEVOQUJMRShWSURFTykKICNpbmNsdWRlICJNZWRp
YUVsZW1lbnRTZXNzaW9uLmgiCkBAIC01Niw2ICs1Nyw3IEBAIGNsYXNzIEF1ZGlvVHJhY2s7CiBj
bGFzcyBCYXNlQXVkaW9Db250ZXh0OwogY2xhc3MgQmxvYjsKIGNsYXNzIENhY2hlU3RvcmFnZUNv
bm5lY3Rpb247CitjbGFzcyBDYXB0aW9uVXNlclByZWZlcmVuY2VzVGVzdGluZ01vZGVUb2tlbjsK
IGNsYXNzIERPTVBvaW50UmVhZE9ubHk7CiBjbGFzcyBET01SZWN0OwogY2xhc3MgRE9NUmVjdExp
c3Q7CkBAIC0xMjYyLDYgKzEyNjQsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNRURJQV9TRVNT
SU9OX0NPT1JESU5BVE9SKQogICAgIFJlZlB0cjxNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I+
IG1fbW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOwogI2VuZGlmCisjaWYgRU5BQkxFKFZJREVP
KQorICAgIFVuaXF1ZVJlZjxDYXB0aW9uVXNlclByZWZlcmVuY2VzVGVzdGluZ01vZGVUb2tlbj4g
bV90ZXN0aW5nTW9kZVRva2VuOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggNjIxMGY1YTMzMTY3MzQ0NGNlMTM1MjNhYmMyMDMyMDNjMmNiNTQ5Zi4uZDQyMDI3
MjQ4OTJmODJlMTRkOWMyN2MxYmE5ZjlkMGNjMzg0NmIzNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBA
CisyMDIxLTEyLTA2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAg
IFtWVFRdIEZpeCB2YXJpb3VzIGlzc3VlcyB3aXRoIGNvbXBsaWNhdGVkIHJlbmRlcmluZyBvZiBW
VFQgY3VlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMzOTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICog
bWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L25vLXNuYXAtdG8tbGluZXMtb3ZlcmxhcC52dHQ6
IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zbmFwLXRvLWxp
bmVzLWlubGluZS1zdHlsZS52dHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3RyYWNrL2NhcHRp
b25zLXdlYnZ0dC9zbmFwLXRvLWxpbmVzLWxlZnQtYW5kLXJpZ2h0LnZ0dDogQWRkZWQuCisgICAg
ICAgICogbWVkaWEvdHJhY2svdHJhY2std2VidnR0LW5vLXNuYXAtdG8tbGluZXMtb3ZlcmxhcC1l
eHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay13ZWJ2dHQt
bm8tc25hcC10by1saW5lcy1vdmVybGFwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3Ry
YWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRvLWxpbmVzLWlubGluZS1zdHlsZS1leHBlY3RlZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay13ZWJ2dHQtc25hcC10by1saW5l
cy1pbmxpbmUtc3R5bGUuaHRtbDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdHJhY2svdHJhY2st
d2VidnR0LXNuYXAtdG8tbGluZXMtbGVmdC1yaWdodC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBtZWRpYS90cmFjay90cmFjay13ZWJ2dHQtc25hcC10by1saW5lcy1sZWZ0LXJpZ2h0
Lmh0bWw6IEFkZGVkLgorCiAyMDIxLTEyLTAzICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxh
ckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjc3MtZmxleGJveF0gQWNjb3VudCBmb3IgY2FwdGlv
bnMgd2hlbiBmbGV4aW5nIHRhYmxlcyB3aXRoIHNwZWNpZmllZCBzaXplcwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L25vLXNuYXAtdG8tbGluZXMt
b3ZlcmxhcC52dHQgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvbm8t
c25hcC10by1saW5lcy1vdmVybGFwLnZ0dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zN2Y2ZjQ0ZjRkOWE3ZTEyZDBj
NmVkZmRlMmJhZTgxNDRlOWJlMjg1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVk
aWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L25vLXNuYXAtdG8tbGluZXMtb3ZlcmxhcC52dHQKQEAg
LTAsMCArMSwzMyBAQAorV0VCVlRUCisKKzEKKzAwOjAwOjAwLjAwMCAtLT4gMDA6MDA6MDAuNTAw
IGFsaWduOmxlZnQgbGluZTowJQorTGVmdAorCisyCiswMDowMDowMC4wMDAgLS0+IDAwOjAwOjAw
LjUwMCBhbGlnbjpyaWdodCBsaW5lOjAlCitSaWdodAorCiszCiswMDowMDowMC4wMDAgLS0+IDAw
OjAwOjAwLjUwMCBhbGlnbjpsZWZ0IGxpbmU6MCUKK0JlbG93CisKKzQKKzAwOjAwOjAwLjAwMCAt
LT4gMDA6MDA6MDAuNTAwIGFsaWduOnJpZ2h0IGxpbmU6MCUKK0JlbG93CisKKzEKKzAwOjAwOjAw
LjAwMCAtLT4gMDA6MDA6MDAuNTAwIGFsaWduOmxlZnQgbGluZToxMDAlCitMZWZ0CisKKzIKKzAw
OjAwOjAwLjAwMCAtLT4gMDA6MDA6MDAuNTAwIGFsaWduOnJpZ2h0IGxpbmU6MTAwJQorUmlnaHQK
KworMworMDA6MDA6MDAuMDAwIC0tPiAwMDowMDowMC41MDAgYWxpZ246bGVmdCBsaW5lOjEwMCUK
K0Fib3ZlCisKKzQKKzAwOjAwOjAwLjAwMCAtLT4gMDA6MDA6MDAuNTAwIGFsaWduOnJpZ2h0IGxp
bmU6MTAwJQorQWJvdmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRp
b25zLXdlYnZ0dC9zbmFwLXRvLWxpbmVzLWlubGluZS1zdHlsZS52dHQgYi9MYXlvdXRUZXN0cy9t
ZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvc25hcC10by1saW5lcy1pbmxpbmUtc3R5bGUudnR0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmNmYzU2NTZhNDFiODllY2E4MDE1MTE3NGE1NDgwMjQzZjY2MWYzNTEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQv
c25hcC10by1saW5lcy1pbmxpbmUtc3R5bGUudnR0CkBAIC0wLDAgKzEsMjAgQEAKK1dFQlZUVAor
CitTVFlMRQorOjpjdWUoLmRvdWJsZUhlaWdodCkgeyBmb250LXNpemU6IDIwMCU7IGJhY2tncm91
bmQtY29sb3I6IGJsYWNrIH0KKworMQorMDA6MDA6MDAuMDAwIC0tPiAwMDowMDowMC41MDAgYWxp
Z246bGVmdAorPGMuZG91YmxlSGVpZ2h0PkxlZnQ8L2M+CisKKzIKKzAwOjAwOjAwLjAwMCAtLT4g
MDA6MDA6MDAuNTAwIGFsaWduOnJpZ2h0IHBvc2l0aW9uOjEwMCUKKzxjLmRvdWJsZUhlaWdodD5S
aWdodDwvYz4KKworMworMDA6MDA6MDAuMDAwIC0tPiAwMDowMDowMC41MDAgYWxpZ246bGVmdAor
PGMuZG91YmxlSGVpZ2h0PkFib3ZlPC9jPgorCis0CiswMDowMDowMC4wMDAgLS0+IDAwOjAwOjAw
LjUwMCBhbGlnbjpyaWdodCBwb3NpdGlvbjoxMDAlCis8Yy5kb3VibGVIZWlnaHQ+QWJvdmU8L2M+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvc25h
cC10by1saW5lcy1sZWZ0LWFuZC1yaWdodC52dHQgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9j
YXB0aW9ucy13ZWJ2dHQvc25hcC10by1saW5lcy1sZWZ0LWFuZC1yaWdodC52dHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzA5NjllMGRkYjE1NmNiM2Y2NDE0NjcyZDMyNjE0YTljZTllMGJjZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zbmFwLXRvLWxp
bmVzLWxlZnQtYW5kLXJpZ2h0LnZ0dApAQCAtMCwwICsxLDE3IEBACitXRUJWVFQKKworMQorMDA6
MDA6MDAuMDAwIC0tPiAwMDowMDowMC41MDAgYWxpZ246bGVmdAorTGVmdAorCisyCiswMDowMDow
MC4wMDAgLS0+IDAwOjAwOjAwLjUwMCBhbGlnbjpyaWdodCBwb3NpdGlvbjoxMDAlCitSaWdodAor
CiszCiswMDowMDowMC4wMDAgLS0+IDAwOjAwOjAwLjUwMCBhbGlnbjpsZWZ0CitBYm92ZQorCis0
CiswMDowMDowMC4wMDAgLS0+IDAwOjAwOjAwLjUwMCBhbGlnbjpyaWdodCBwb3NpdGlvbjoxMDAl
CitBYm92ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2std2VidnR0
LW5vLXNuYXAtdG8tbGluZXMtb3ZlcmxhcC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvbWVk
aWEvdHJhY2svdHJhY2std2VidnR0LW5vLXNuYXAtdG8tbGluZXMtb3ZlcmxhcC1leHBlY3RlZC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmY3N2I1NTM2NGUwOThlMDM1N2ExODFkODBkN2IzMDQzMDYxYmYzMDEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay13ZWJ2dHQt
bm8tc25hcC10by1saW5lcy1vdmVybGFwLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw1OCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT50cmFjay13ZWJ2dHQt
bm8tc25hcC10by1saW5lcy1vdmVybGFwPC90aXRsZT4KKyAgICA8c3R5bGU+CisgICAgICAgIC52
aWRlbyB7IAorICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAg
cG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICAgICAgd2lkdGg6IDMyMHB4OworICAgICAgICAg
ICAgaGVpZ2h0OiAyNDBweDsKKyAgICAgICAgfQorICAgICAgICBodG1sIHsgb3ZlcmZsb3c6aGlk
ZGVuIH0KKyAgICAgICAgYm9keSB7IG1hcmdpbjowIH0KKyAgICAgICAgLmN1ZS1ib3ggeworICAg
ICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4
OworICAgICAgICB9CisgICAgICAgIC5jdWUgeworICAgICAgICAgICAgZm9udC1mYW1pbHk6IEFo
ZW0sIHNhbnMtc2VyaWY7CisgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsKKyAg
ICAgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+CisgICAgPHNj
cmlwdD52YXIgcmVxdWlyZVBpeGVsRHVtcCA9IHRydWU7PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9tZWRp
YS1maWxlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIHdpbmRvdy5hZGRFdmVudExp
c3RlbmVyKCdsb2FkJywgYXN5bmMgZXZlbnQgPT4geworICAgICAgICBjb25zb2xlV3JpdGUoJ1JV
Tih2aWRlby5xdWVyeVNlbGVjdG9yKCJ0cmFjayIpLnNyYyA9ICJjYXB0aW9ucy13ZWJ2dHQvbm8t
c25hcC10by1saW5lcy1vdmVybGFwLnZ0dCIpJyk7CisgICAgICAgIGNvbnNvbGVXcml0ZSgnUlVO
KHZpZGVvLnRleHRUcmFja3NbMF0ubW9kZSA9ICJzaG93aW5nIiknKTsKKyAgICAgICAgY29uc29s
ZVdyaXRlKCdFVkVOVChsb2FkKScpOworICAgICAgICBjb25zb2xlV3JpdGUoJ1JVTih2aWRlby5z
cmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJ3M2MvdHJhY2svd2VidnR0L21lZGlhL3doaXRl
IikpJyk7CisgICAgICAgIGNvbnNvbGVXcml0ZSgnRVZFTlQoY2FucGxheXRocm91Z2gpJyk7Cisg
ICAgICAgIGVuZFRlc3QoKTsKKyAgICB9KTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorICAgIDxkaXYgY2xhc3M9InZpZGVvIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY3VlLWJveCIg
c3R5bGU9ImxlZnQ6MDsgdG9wOjA7IHRleHQtYWxpZ246IGxlZnQ7Ij4KKyAgICAgICAgICAgIDxz
cGFuIGNsYXNzPSJjdWUiPkxlZnQ8L3NwYW4+PGJyPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9
ImN1ZSI+QmVsb3c8L3NwYW4+CisgICAgICAgIDwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJj
dWUtYm94IiBzdHlsZT0icmlnaHQ6MDsgdG9wOjA7IHRleHQtYWxpZ246IHJpZ2h0Ij4KKyAgICAg
ICAgICAgIDxzcGFuIGNsYXNzPSJjdWUiPlJpZ2h0PC9zcGFuPjxicj4KKyAgICAgICAgICAgIDxz
cGFuIGNsYXNzPSJjdWUiPkJlbG93PC9zcGFuPgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRp
diBjbGFzcz0iY3VlLWJveCIgc3R5bGU9ImxlZnQ6MDsgYm90dG9tOjA7IHRleHQtYWxpZ246IGxl
ZnQiPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImN1ZSI+QWJvdmU8L3NwYW4+PGJyPgorICAg
ICAgICAgICAgPHNwYW4gY2xhc3M9ImN1ZSI+TGVmdDwvc3Bhbj4KKyAgICAgICAgPC9kaXY+Cisg
ICAgICAgIDxkaXYgY2xhc3M9ImN1ZS1ib3giIHN0eWxlPSJyaWdodDowOyBib3R0b206MDsgdGV4
dC1hbGlnbjogcmlnaHQiPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImN1ZSI+QWJvdmU8L3Nw
YW4+PGJyPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImN1ZSI+UmlnaHQ8L3NwYW4+CisgICAg
ICAgIDwvZGl2PgorICAgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdl
YnZ0dC1uby1zbmFwLXRvLWxpbmVzLW92ZXJsYXAuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3Ry
YWNrL3RyYWNrLXdlYnZ0dC1uby1zbmFwLXRvLWxpbmVzLW92ZXJsYXAuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xYWY0YjIwNmVhOTBjYjgwNzAxZTdjNmEyOTZmZjk3Njg1ZmIwNTAxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2std2VidnR0LW5vLXNuYXAtdG8tbGlu
ZXMtb3ZlcmxhcC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKyAgICA8dGl0bGU+dHJhY2std2VidnR0LW5vLXNuYXAtdG8tbGluZXMtb3Zlcmxh
cDwvdGl0bGU+CisgICAgPHN0eWxlPgorICAgICAgICBodG1sIHsgb3ZlcmZsb3c6aGlkZGVuIH0K
KyAgICAgICAgYm9keSB7IG1hcmdpbjowIH0KKyAgICAgICAgOjpjdWUgeworICAgICAgICAgICAg
Zm9udC1mYW1pbHk6IEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgICAgICBmb250LXNpemU6IDEy
cHg7CisgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsKKyAgICAgICAgICAgIGNv
bG9yOiBncmVlbjsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdD52YXIgcmVx
dWlyZVBpeGVsRHVtcCA9IHRydWU7PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3ZpZGVv
LXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9tZWRpYS1maWxlLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2Fk
JywgYXN5bmMgZXZlbnQgPT4geworICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisKKyAgICAg
ICAgcnVuKGB2aWRlby5xdWVyeVNlbGVjdG9yKCJ0cmFjayIpLnNyYyA9ICJjYXB0aW9ucy13ZWJ2
dHQvbm8tc25hcC10by1saW5lcy1vdmVybGFwLnZ0dCJgKTsKKyAgICAgICAgcnVuKGB2aWRlby50
ZXh0VHJhY2tzWzBdLm1vZGUgPSAic2hvd2luZyJgKTsKKyAgICAgICAgYXdhaXQgd2FpdEZvcih2
aWRlby5xdWVyeVNlbGVjdG9yKCd0cmFjaycpLCAnbG9hZCcpOworCisgICAgICAgIHJ1bihgdmlk
ZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAidzNjL3RyYWNrL3dlYnZ0dC9tZWRpYS93
aGl0ZSIpYCk7CisgICAgICAgIGF3YWl0IHdhaXRGb3IodmlkZW8sICdjYW5wbGF5dGhyb3VnaCcp
OworCisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9KTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorICAgIDx2aWRlbz4KKyAgICAgICAgPHRyYWNrIGlkPSJ0ZXN0VHJhY2siIGtpbmQ9
ImNhcHRpb25zIiBkZWZhdWx0PgorICAgIDwvdmlkZW8+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJh
Y2svdHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMtaW5saW5lLXN0eWxlLWV4cGVjdGVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay13ZWJ2dHQtc25hcC10by1saW5lcy1pbmxp
bmUtc3R5bGUtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ODk4ZTVmY2MxNGYzYjVhNDcxMDE1
MDdkYmE3ZDU1MzUzNzYxNjVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEv
dHJhY2svdHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMtaW5saW5lLXN0eWxlLWV4cGVjdGVkLmh0
bWwKQEAgLTAsMCArMSw1MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAg
IDx0aXRsZT50cmFjay13ZWJ2dHQtc25hcC10by1saW5lcy1pbmxpbmUtc3R5bGU8L3RpdGxlPgor
ICAgIDxzdHlsZT4KKyAgICAgICAgLnZpZGVvIHsgCisgICAgICAgICAgICBkaXNwbGF5OiBpbmxp
bmUtYmxvY2s7CisgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICAgICAgICB3
aWR0aDogMzIwcHg7CisgICAgICAgICAgICBoZWlnaHQ6IDI0MHB4OworICAgICAgICB9CisgICAg
ICAgIGh0bWwgeyBvdmVyZmxvdzpoaWRkZW4gfQorICAgICAgICBib2R5IHsgbWFyZ2luOjAgfQor
ICAgICAgICAuY3VlLWJveCB7CisgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAg
ICAgIH0KKyAgICAgICAgLmN1ZSB7CisgICAgICAgICAgICBmb250LWZhbWlseTogQWhlbSwgc2Fu
cy1zZXJpZjsKKyAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrOworICAgICAgICAg
ICAgY29sb3I6IGdyZWVuOworICAgICAgICAgICAgZm9udC1zaXplOiAyNHB4OworICAgICAgICB9
CisgICAgPC9zdHlsZT4KKyAgICA8c2NyaXB0PnZhciByZXF1aXJlUGl4ZWxEdW1wID0gdHJ1ZTs8
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+
CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBhc3luYyBldmVudCA9PiB7Cisg
ICAgICAgIGNvbnNvbGVXcml0ZSgnUlVOKHZpZGVvLnF1ZXJ5U2VsZWN0b3IoInRyYWNrIikuc3Jj
ID0gImNhcHRpb25zLXdlYnZ0dC9zbmFwLXRvLWxpbmVzLWlubGluZS1zdHlsZS52dHQiKScpOwor
ICAgICAgICBjb25zb2xlV3JpdGUoJ1JVTih2aWRlby50ZXh0VHJhY2tzWzBdLm1vZGUgPSAic2hv
d2luZyIpJyk7CisgICAgICAgIGNvbnNvbGVXcml0ZSgnRVZFTlQobG9hZCknKTsKKyAgICAgICAg
Y29uc29sZVdyaXRlKCdSVU4odmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAidzNj
L3RyYWNrL3dlYnZ0dC9tZWRpYS93aGl0ZSIpKScpOworICAgICAgICBjb25zb2xlV3JpdGUoJ0VW
RU5UKGNhbnBsYXl0aHJvdWdoKScpOworICAgICAgICBlbmRUZXN0KCk7CisgICAgfSk7CisgICAg
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGNsYXNzPSJ2aWRlbyI+CisgICAg
ICAgIDxkaXYgY2xhc3M9ImN1ZS1ib3giIHN0eWxlPSJsZWZ0OjA7IGJvdHRvbTowOyB0ZXh0LWFs
aWduOiBsZWZ0Ij4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjdWUiPkFib3ZlPC9zcGFuPjxi
cj4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjdWUiPkxlZnQ8L3NwYW4+CisgICAgICAgIDwv
ZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJjdWUtYm94IiBzdHlsZT0icmlnaHQ6MDsgYm90dG9t
OjA7IHRleHQtYWxpZ246IHJpZ2h0Ij4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjdWUiPkFi
b3ZlPC9zcGFuPjxicj4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjdWUiPlJpZ2h0PC9zcGFu
PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90
cmFjay13ZWJ2dHQtc25hcC10by1saW5lcy1pbmxpbmUtc3R5bGUuaHRtbCBiL0xheW91dFRlc3Rz
L21lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRvLWxpbmVzLWlubGluZS1zdHlsZS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE3YzFjMzM0NGMyM2RhMTkxZmM5MGI4NzQwNzk4MDQzM2RlMzRkMzQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay13ZWJ2dHQtc25h
cC10by1saW5lcy1pbmxpbmUtc3R5bGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPnRyYWNrLXdlYnZ0dC1zbmFwLXRvLWxp
bmVzLWlubGluZS1zdHlsZTwvdGl0bGU+CisgICAgPHN0eWxlPgorICAgICAgICBodG1sIHsgb3Zl
cmZsb3c6aGlkZGVuIH0KKyAgICAgICAgYm9keSB7IG1hcmdpbjowIH0KKyAgICAgICAgOjpjdWUg
eworICAgICAgICAgICAgZm9udC1mYW1pbHk6IEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgICAg
ICBmb250LXNpemU6IDEycHg7CisgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsK
KyAgICAgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+CisgICAg
PHNjcmlwdD52YXIgcmVxdWlyZVBpeGVsRHVtcCA9IHRydWU7PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9t
ZWRpYS1maWxlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIHdpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCdsb2FkJywgYXN5bmMgZXZlbnQgPT4geworICAgICAgICBmaW5kTWVkaWFFbGVt
ZW50KCk7CisKKyAgICAgICAgcnVuKGB2aWRlby5xdWVyeVNlbGVjdG9yKCJ0cmFjayIpLnNyYyA9
ICJjYXB0aW9ucy13ZWJ2dHQvc25hcC10by1saW5lcy1pbmxpbmUtc3R5bGUudnR0ImApOworICAg
ICAgICBydW4oYHZpZGVvLnRleHRUcmFja3NbMF0ubW9kZSA9ICJzaG93aW5nImApOworICAgICAg
ICBhd2FpdCB3YWl0Rm9yKHZpZGVvLnF1ZXJ5U2VsZWN0b3IoJ3RyYWNrJyksICdsb2FkJyk7CisK
KyAgICAgICAgcnVuKGB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJ3M2MvdHJh
Y2svd2VidnR0L21lZGlhL3doaXRlIilgKTsKKyAgICAgICAgYXdhaXQgd2FpdEZvcih2aWRlbywg
J2NhbnBsYXl0aHJvdWdoJyk7CisKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0pOworICAgIDwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHZpZGVvPgorICAgICAgICA8dHJhY2sgaWQ9
InRlc3RUcmFjayIgc3JjPSJjYXB0aW9ucy13ZWJ2dHQvc25hcC10by1saW5lcy1pbmxpbmUtc3R5
bGUudnR0IiBraW5kPSJjYXB0aW9ucyIgZGVmYXVsdD4KKyAgICA8L3ZpZGVvPgorPC9ib2R5Pgor
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL21lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRvLWxpbmVzLWxlZnQtcmlnaHQtZXhw
ZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRv
LWxpbmVzLWxlZnQtcmlnaHQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTRmYzBiZGY3MzE1
ZGUwMTBiOTQ4M2VjNDkyYmMyNTRjOGRiODk5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvbWVkaWEvdHJhY2svdHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMtbGVmdC1yaWdodC1leHBl
Y3RlZC5odG1sCkBAIC0wLDAgKzEsNTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKyAgICA8dGl0bGU+dHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMtbGVmdC1yaWdodDwvdGl0
bGU+CisgICAgPHN0eWxlPgorICAgICAgICAudmlkZW8geyAKKyAgICAgICAgICAgIGRpc3BsYXk6
IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAg
ICAgIHdpZHRoOiAzMjBweDsKKyAgICAgICAgICAgIGhlaWdodDogMjQwcHg7CisgICAgICAgIH0K
KyAgICAgICAgaHRtbCB7IG92ZXJmbG93OmhpZGRlbiB9CisgICAgICAgIGJvZHkgeyBtYXJnaW46
MCB9CisgICAgICAgIC5jdWUtYm94IHsKKyAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
KyAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsKKyAgICAgICAgfQorICAgICAgICAuY3VlIHsK
KyAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBBaGVtLCBzYW5zLXNlcmlmOworICAgICAgICAgICAg
YmFja2dyb3VuZC1jb2xvcjogYmxhY2s7CisgICAgICAgICAgICBjb2xvcjogZ3JlZW47CisgICAg
ICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQ+dmFyIHJlcXVpcmVQaXhlbER1bXAgPSB0
cnVlOzwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0LmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vbWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdD4KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGFzeW5jIGV2ZW50ID0+
IHsKKyAgICAgICAgY29uc29sZVdyaXRlKCdSVU4odmlkZW8ucXVlcnlTZWxlY3RvcigidHJhY2si
KS5zcmMgPSAiY2FwdGlvbnMtd2VidnR0L3NuYXAtdG8tbGluZXMtbGVmdC1hbmQtcmlnaHQudnR0
IiknKTsKKyAgICAgICAgY29uc29sZVdyaXRlKCdSVU4odmlkZW8udGV4dFRyYWNrc1swXS5tb2Rl
ID0gInNob3dpbmciKScpOworICAgICAgICBjb25zb2xlV3JpdGUoJ0VWRU5UKGxvYWQpJyk7Cisg
ICAgICAgIGNvbnNvbGVXcml0ZSgnUlVOKHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVv
IiwgInczYy90cmFjay93ZWJ2dHQvbWVkaWEvd2hpdGUiKSknKTsKKyAgICAgICAgY29uc29sZVdy
aXRlKCdFVkVOVChjYW5wbGF5dGhyb3VnaCknKTsKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0p
OworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBjbGFzcz0idmlkZW8i
PgorICAgICAgICA8ZGl2IGNsYXNzPSJjdWUtYm94IiBzdHlsZT0ibGVmdDowOyBib3R0b206MDsg
dGV4dC1hbGlnbjogbGVmdCI+CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3VlIj5BYm92ZTwv
c3Bhbj48YnI+CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3VlIj5MZWZ0PC9zcGFuPgorICAg
ICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY3VlLWJveCIgc3R5bGU9InJpZ2h0OjA7
IGJvdHRvbTowOyB0ZXh0LWFsaWduOiByaWdodCI+CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0i
Y3VlIj5BYm92ZTwvc3Bhbj48YnI+CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3VlIj5SaWdo
dDwvc3Bhbj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEv
dHJhY2svdHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMtbGVmdC1yaWdodC5odG1sIGIvTGF5b3V0
VGVzdHMvbWVkaWEvdHJhY2svdHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMtbGVmdC1yaWdodC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmI5ODk3ZGZlNTMwMDdiMzQwMThmYmNmOGY1YjczNGJmMzdjYzJiMWYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay13ZWJ2dHQt
c25hcC10by1saW5lcy1sZWZ0LXJpZ2h0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT50cmFjay13ZWJ2dHQtc25hcC10by1s
aW5lcy1sZWZ0LXJpZ2h0PC90aXRsZT4KKyAgICA8c3R5bGU+CisgICAgICAgIGh0bWwgeyBvdmVy
ZmxvdzpoaWRkZW4gfQorICAgICAgICBib2R5IHsgbWFyZ2luOjAgfQorICAgICAgICA6OmN1ZSB7
CisgICAgICAgICAgICBmb250LWZhbWlseTogQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAgICAgICAg
IGZvbnQtc2l6ZTogMTJweDsKKyAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrOwor
ICAgICAgICAgICAgY29sb3I6IGdyZWVuOworICAgICAgICB9CisgICAgPC9zdHlsZT4KKyAgICA8
c2NyaXB0PnZhciByZXF1aXJlUGl4ZWxEdW1wID0gdHJ1ZTs8L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL21l
ZGlhLWZpbGUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgd2luZG93LmFkZEV2ZW50
TGlzdGVuZXIoJ2xvYWQnLCBhc3luYyBldmVudCA9PiB7CisgICAgICAgIGZpbmRNZWRpYUVsZW1l
bnQoKTsKKworICAgICAgICBydW4oYHZpZGVvLnF1ZXJ5U2VsZWN0b3IoInRyYWNrIikuc3JjID0g
ImNhcHRpb25zLXdlYnZ0dC9zbmFwLXRvLWxpbmVzLWxlZnQtYW5kLXJpZ2h0LnZ0dCJgKTsKKyAg
ICAgICAgcnVuKGB2aWRlby50ZXh0VHJhY2tzWzBdLm1vZGUgPSAic2hvd2luZyJgKTsKKyAgICAg
ICAgYXdhaXQgd2FpdEZvcih2aWRlby5xdWVyeVNlbGVjdG9yKCd0cmFjaycpLCAnbG9hZCcpOwor
CisgICAgICAgIHJ1bihgdmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAidzNjL3Ry
YWNrL3dlYnZ0dC9tZWRpYS93aGl0ZSIpYCk7CisgICAgICAgIGF3YWl0IHdhaXRGb3IodmlkZW8s
ICdjYW5wbGF5dGhyb3VnaCcpOworCisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9KTsKKyAgICA8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDx2aWRlbz4KKyAgICAgICAgPHRyYWNrIGlk
PSJ0ZXN0VHJhY2siIGtpbmQ9ImNhcHRpb25zIiBkZWZhdWx0PgorICAgIDwvdmlkZW8+Cis8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>
<flag name="commit-queue"
          id="471629"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446312</attachid>
            <date>2021-12-07 23:07:23 -0800</date>
            <delta_ts>2021-12-08 11:05:42 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-233901-20211207230722.patch</filename>
            <type>text/plain</type>
            <size>47984</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDkwNjM1N2I0MDk4YjJj
MjA3N2ZjMzFmNmNmMTUzYjEyOTA0OWMwZS4uNjg5MjMwYWUwNjljYmJmNmViOTJjZGU0MWQyMGYy
ODFkYzdjNjMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIxLTEyLTA2ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtWVFRdIEZpeCB2YXJpb3Vz
IGlzc3VlcyB3aXRoIGNvbXBsaWNhdGVkIHJlbmRlcmluZyBvZiBWVFQgY3VlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzOTAxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIFRlc3RzOiBtZWRpYS90cmFjay90
cmFjay13ZWJ2dHQtbm8tc25hcC10by1saW5lcy1vdmVybGFwLmh0bWwKKyAgICAgICAgICAgICAg
IG1lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRvLWxpbmVzLWlubGluZS1zdHlsZS5odG1s
CisgICAgICAgICAgICAgICBtZWRpYS90cmFjay90cmFjay13ZWJ2dHQtc25hcC10by1saW5lcy1s
ZWZ0LXJpZ2h0Lmh0bWwKKworICAgICAgICBXaGVuIHBvc2l0aW9uaW5nIFZUVCBjdWVzLCB0aGUg
c3BlYyByZXF1aXJlcyBVQXMgdG8gYXZvaWQgY29sbGlzaW9ucyBiZXR3ZWVuIGN1ZXMKKyAgICAg
ICAgYnkgZGV0ZWN0aW5nIHRoYXQgdHdvIGN1ZXMgb3ZlcmxhcCBlYWNoIG90aGVyLiBIb3dldmVy
LCBXZWJLaXQncyBpbXBsZW1lbnRhdGlvbgorICAgICAgICBsb29rcyBmb3IgY29sbGlzaW9ucyBi
ZXR3ZWVuIG5vbi1kaXNwbGF5aW5nIHBvcnRpb25zIG9mIHRoZSBjdWVzOyBuYW1lbHkgdGhlIAor
ICAgICAgICA6Oi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1kaXNwbGF5IGVsZW1lbnQsIHdoaWNo
IGlzIHVzZWQgdG8gcG9zaXRpb24gdGhlIGRpc3BsYXlpbmcKKyAgICAgICAgcG9ydGlvbiBvZiB0
aGUgY3VlLiBJbnN0ZWFkLCB0aGUgVUEgc2hvdWxkIGxvb2sgZm9yIGNvbGxpc2lvbnMgYmV0d2Vl
biB0aGUgCisgICAgICAgIDo6LXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWRpc3BsYXktYmFja2Ry
b3AgZWxlbWVudCwgd2hpY2ggaG9sZHMgdGhlIGJhY2tncm91bmQKKyAgICAgICAgb2YgdGhlIGN1
ZSwgaWYgcHJlc2VudC4KKworICAgICAgICBBZGQgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0byBy
ZXRyaWV2ZSB0aGUgYmFja2Ryb3AgZWxlbWVudCwgYW5kIGFub3RoZXIgdG8gcmV0cmlldmUKKyAg
ICAgICAgdGhlIGN1ZSBpdHNlbGYuCisKKyAgICAgICAgQWRkIGNhc3QgbWFjcm9zIGZvciBSZW5k
ZXJWVFRDdWUgdG8gYWxsb3cgZG93bmNhc3Q8PmluZy4gVXNlIHRoaXMgbWFjcm8gdG8gcmV0cmll
dmUKKyAgICAgICAgb3RoZXIgY3VlcydzIGJhY2tkcm9wIGVsZW1lbnRzIGZvciBjb2xsaXNpb24g
YXZvaWRhbmNlLgorCisgICAgICAgIFZUVEN1ZUJveDo6YXBwbHlDU1NQcm9wZXJ0aWVzKCkgaGFk
IGEgc2VjdGlvbiBmb3IgbW92aW5nIGN1ZXMgaW50byBwbGFjZSB0aGF0IGlzIGVudGlyZWx5Cisg
ICAgICAgIHVubmVlZGVkIGlmIFZUVEN1ZTo6Z2V0Q1NTUG9zaXRpb24oKSByZXR1cm5zIHRoZSBw
cmUtY2FsY3VsYXRlZCBtX2Rpc3BsYXlQb3NpdGlvbi4KKworICAgICAgICBSZW5kZXJWVFRDdWU6
OmluaXRpYWxpemVMYXlvdXRQYXJhbWV0ZXJzKCkgaXMgYSBjYXJlZnVsIGltcGxlbWVudGF0aW9u
IG9mIHRoZSBzcGVjaWZpY2F0aW9uLAorICAgICAgICBhY2N1cmF0ZWx5IGxheW91dCBvdXQgY3Vl
cycgaW5pdGlhbCBwb3NpdGlvbiBzbyB0aGF0IHRoZSB0ZXh0IHJ1biBpcyBleGFjdGx5IGF0IHRo
ZQorICAgICAgICBib3R0b20gb2YgdGhlIGNvbnRlbnQgYm94LiBIb3dldmVyLCBpZiB0aGUgY3Vl
IGhhcyBhIGJvcmRlciwgcGFkZGluZywgb3IgZXh0cmEgaGVpZ2h0LAorICAgICAgICB0aGlzIHdp
bGwgcmVzdWx0IGluIHRoZSBjdWUgYmVpbmcgcHVzaGVkIG91dHNpZGUgdGhlIGNvbnRlbnQgYm94
LiBUbyBhY2NvdW50IGZvciB0aGlzLAorICAgICAgICBhZGp1c3QgdGhlIGluaXRhbCBsYXlvdXQg
cGFyYW1ldGVyIGJ5IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGN1ZSB0ZXh0IHNpemUgYW5k
IHRoZQorICAgICAgICBiYWNrZHJvcCBlbGVtZW50IHNpemUuCisKKyAgICAgICAgUmVuZGVyVlRU
Q3VlOjpsYXlvdXQoKSB3aWxsIGNyZWF0ZSBhIExheW91dFN0YXRlTWFpbnRhaW5lciwgd2hpY2gg
bW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mCisgICAgICAgIGxheW91dCBtYWNoaW5lcnkgZHVyaW5n
IHRoZSBsYXlvdXQgaXRzZWxmLiBIb3dldmVyLCBjZXJ0YWluIGNoaWxkIHJlbmRlcmVycyBnZXQg
ZHJhbWF0aWNhbGx5CisgICAgICAgIGluY29ycmVjdCByZXN1bHRzIGZvciBhYnNvbHV0ZUJvdW5k
aW5nUmVjdCgpIHVubGVzcyB0aGUgbWFpbnRhaW5lciBleHBsaWNpdGx5IHNldHMgZGlzYWJsZVN0
YXRlLgorCisgICAgICAgICogaHRtbC90cmFjay9WVFRDdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VlRUQ3VlQm94OjphcHBseUNTU1Byb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6VlRU
Q3VlOjpnZXRDU1NQb3NpdGlvbiBjb25zdCk6CisgICAgICAgICogaHRtbC90cmFjay9WVFRDdWUu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmlzUmVuZGVyVlRUQ3VlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVlRUQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZUVEN1ZTo6bGF5
b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZUVEN1ZTo6aW5pdGlhbGl6ZUxheW91dFBh
cmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVlRUQ3VlOjppc091dHNpZGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVlRUQ3VlOjpvdmVybGFwcGluZ09iamVjdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWVFRDdWU6Om92ZXJsYXBwaW5nT2JqZWN0
Rm9yUmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWVFRDdWU6Om1vdmVJZk5l
Y2Vzc2FyeVRvS2VlcFdpdGhpbkNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJW
VFRDdWU6OmZpbmROb25PdmVybGFwcGluZ1Bvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclZUVEN1ZTo6cmVwb3NpdGlvbkdlbmVyaWNDdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVlRUQ3VlOjpiYWNrZHJvcEJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJWVFRDdWU6OmN1ZUJveCBjb25zdCk6CisKIDIwMjEtMTItMDcgIEFudHRpIEtvaXZpc3Rv
ICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBtb3JlIHNwZWNpZmljIGtleXMgZm9y
IHBzZXVkby1jbGFzcyBpbnZhbGlkYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVlRUQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNw
cAppbmRleCA5NTdlYjhjNTgxNTEwM2YzNGU4ODEyMDcxMDQwMjZiNTMzOWQ2MDcyLi4wMDg4YmZh
ZTA5MzRjOWI0YWNmMGQwNDJlMTkyMDM1NDQ1MjBjMDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9WVFRDdWUuY3BwCkBAIC0xODYsMTQgKzE4NiwxNSBAQCB2b2lkIFZUVEN1ZUJveDo6YXBwbHlD
U1NQcm9wZXJ0aWVzKGNvbnN0IEludFNpemUmIHZpZGVvU2l6ZSkKICAgICAvLyB0aGUgJ3dyaXRp
bmctbW9kZScgcHJvcGVydHkgbXVzdCBiZSBzZXQgdG8gd3JpdGluZy1tb2RlCiAgICAgc2V0SW5s
aW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdyaXRpbmdNb2RlLCBjdWUtPmdldENTU1dyaXRp
bmdNb2RlKCksIGZhbHNlKTsKIAotICAgIGF1dG8gcG9zaXRpb24gPSBjdWUtPmdldENTU1Bvc2l0
aW9uKCk7CisgICAgYXV0byYgcG9zaXRpb24gPSBjdWUtPmdldENTU1Bvc2l0aW9uKCk7CiAKICAg
ICAvLyB0aGUgJ3RvcCcgcHJvcGVydHkgbXVzdCBiZSBzZXQgdG8gdG9wLAotICAgIHNldElubGlu
ZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUb3AsIHBvc2l0aW9uLnNlY29uZCwgQ1NTVW5pdFR5
cGU6OkNTU19QRVJDRU5UQUdFKTsKKyAgICBpZiAocG9zaXRpb24uc2Vjb25kKQorICAgICAgICBz
ZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VG9wLCAqcG9zaXRpb24uc2Vjb25kLCBD
U1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOwogCiAgICAgLy8gdGhlICdsZWZ0JyBwcm9wZXJ0
eSBtdXN0IGJlIHNldCB0byBsZWZ0Ci0gICAgaWYgKGN1ZS0+dmVydGljYWwoKSA9PSBob3Jpem9u
dGFsS2V5d29yZCgpKQotICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
TGVmdCwgcG9zaXRpb24uZmlyc3QsIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7CisgICAg
aWYgKGN1ZS0+dmVydGljYWwoKSA9PSBob3Jpem9udGFsS2V5d29yZCgpICYmIHBvc2l0aW9uLmZp
cnN0KQorICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TGVmdCwgKnBv
c2l0aW9uLmZpcnN0LCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOwogICAgIGVsc2UgaWYg
KGN1ZS0+dmVydGljYWwoKSA9PSB2ZXJ0aWNhbEdyb3dpbmdSaWdodEtleXdvcmQoKSkgewogICAg
ICAgICAvLyBGSVhNRTogV2h5IHVzZSBjYWxjIHRvIGRvIHRoZSBtYXRoIGluc3RlYWQgb2YgZG9p
bmcgdGhlIHN1YnRyYWN0aW9uIGhlcmU/CiAgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHko
Q1NTUHJvcGVydHlMZWZ0LCBtYWtlU3RyaW5nKCJjYWxjKC0iLCB2aWRlb1NpemUud2lkdGgoKSwg
InB4IC0gIiwgY3VlLT5nZXRDU1NTaXplKCksICJweCkiKSk7CkBAIC0yMTksMTUgKzIyMCwxNSBA
QCB2b2lkIFZUVEN1ZUJveDo6YXBwbHlDU1NQcm9wZXJ0aWVzKGNvbnN0IEludFNpemUmIHZpZGVv
U2l6ZSkKICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwg
Q1NTVmFsdWVBdXRvKTsKICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eU1pbldpZHRoLCAibWluLWNvbnRlbnQiKTsKICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0
eShDU1NQcm9wZXJ0eU1heFdpZHRoLCBtYXhTaXplLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRB
R0UpOwotICAgICAgICBpZiAoKGFsaWdubWVudCA9PSBDU1NWYWx1ZU1pZGRsZSB8fCBhbGlnbm1l
bnQgPT0gQ1NTVmFsdWVDZW50ZXIpICYmIG11bHRpcGxpZXIgIT0gMS4wKQotICAgICAgICAgICAg
c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQsIHN0YXRpY19jYXN0PGRvdWJs
ZT4ocG9zaXRpb24uZmlyc3QgLSAobmV3Q3VlU2l6ZSAtIGN1ZS0+Z2V0Q1NTU2l6ZSgpKSAvIDIp
LCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOworICAgICAgICBpZiAoKGFsaWdubWVudCA9
PSBDU1NWYWx1ZU1pZGRsZSB8fCBhbGlnbm1lbnQgPT0gQ1NTVmFsdWVDZW50ZXIpICYmIG11bHRp
cGxpZXIgIT0gMS4wICYmIHBvc2l0aW9uLmZpcnN0KQorICAgICAgICAgICAgc2V0SW5saW5lU3R5
bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQsIHN0YXRpY19jYXN0PGRvdWJsZT4oKnBvc2l0aW9u
LmZpcnN0IC0gKG5ld0N1ZVNpemUgLSBjdWUtPmdldENTU1NpemUoKSkgLyAyKSwgQ1NTVW5pdFR5
cGU6OkNTU19QRVJDRU5UQUdFKTsKICAgICB9IGVsc2UgewogICAgICAgICBzZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIENTU1ZhbHVlQXV0byk7CiAgICAgICAgIHNldElu
bGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQsIG5ld0N1ZVNpemUsIENTU1VuaXRU
eXBlOjpDU1NfUEVSQ0VOVEFHRSk7CiAgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NT
UHJvcGVydHlNaW5IZWlnaHQsICJtaW4tY29udGVudCIpOwogICAgICAgICBzZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5TWF4SGVpZ2h0LCBtYXhTaXplLCBDU1NVbml0VHlwZTo6Q1NT
X1BFUkNFTlRBR0UpOwotICAgICAgICBpZiAoKGFsaWdubWVudCA9PSBDU1NWYWx1ZU1pZGRsZSB8
fCBhbGlnbm1lbnQgPT0gQ1NTVmFsdWVDZW50ZXIpICYmIG11bHRpcGxpZXIgIT0gMS4wKQotICAg
ICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRvcCwgc3RhdGljX2Nh
c3Q8ZG91YmxlPihwb3NpdGlvbi5zZWNvbmQgLSAobmV3Q3VlU2l6ZSAtIGN1ZS0+Z2V0Q1NTU2l6
ZSgpKSAvIDIpLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOworICAgICAgICBpZiAoKGFs
aWdubWVudCA9PSBDU1NWYWx1ZU1pZGRsZSB8fCBhbGlnbm1lbnQgPT0gQ1NTVmFsdWVDZW50ZXIp
ICYmIG11bHRpcGxpZXIgIT0gMS4wICYmIHBvc2l0aW9uLnNlY29uZCkKKyAgICAgICAgICAgIHNl
dElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUb3AsIHN0YXRpY19jYXN0PGRvdWJsZT4o
KnBvc2l0aW9uLnNlY29uZCAtIChuZXdDdWVTaXplIC0gY3VlLT5nZXRDU1NTaXplKCkpIC8gMiks
IENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7CiAgICAgfQogCiAgICAgLy8gVGhlICd0ZXh0
LWFsaWduJyBwcm9wZXJ0eSBvbiB0aGUgKHJvb3QpIExpc3Qgb2YgV2ViVlRUIE5vZGUgT2JqZWN0
cyBtdXN0CkBAIC0yMzYsMjEgKzIzNyw4IEBAIHZvaWQgVlRUQ3VlQm94OjphcHBseUNTU1Byb3Bl
cnRpZXMoY29uc3QgSW50U2l6ZSYgdmlkZW9TaXplKQogICAgIC8vIGFsaWdubWVudDoKICAgICBz
ZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBjdWUtPmdldENTU0Fs
aWdubWVudCgpKTsKICAgICAKLSAgICBpZiAoIWN1ZS0+c25hcFRvTGluZXMoKSkgewotICAgICAg
ICAvLyAxMC4xMy4xIFNldCB1cCB4IGFuZCB5OgotICAgICAgICAvLyBOb3RlOiB4IGFuZCB5IGFy
ZSBzZXQgdGhyb3VnaCB0aGUgQ1NTIGxlZnQgYW5kIHRvcCBhYm92ZS4KLQotICAgICAgICAvLyAx
MC4xMy4yIFBvc2l0aW9uIHRoZSBib3hlcyBpbiBib3hlcyBzdWNoIHRoYXQgdGhlIHBvaW50IHgl
IGFsb25nIHRoZQotICAgICAgICAvLyB3aWR0aCBvZiB0aGUgYm91bmRpbmcgYm94IG9mIHRoZSBi
b3hlcyBpbiBib3hlcyBpcyB4JSBvZiB0aGUgd2F5Ci0gICAgICAgIC8vIGFjcm9zcyB0aGUgd2lk
dGggb2YgdGhlIHZpZGVvJ3MgcmVuZGVyaW5nIGFyZWEsIGFuZCB0aGUgcG9pbnQgeSUKLSAgICAg
ICAgLy8gYWxvbmcgdGhlIGhlaWdodCBvZiB0aGUgYm91bmRpbmcgYm94IG9mIHRoZSBib3hlcyBp
biBib3hlcyBpcyB5JQotICAgICAgICAvLyBvZiB0aGUgd2F5IGFjcm9zcyB0aGUgaGVpZ2h0IG9m
IHRoZSB2aWRlbydzIHJlbmRlcmluZyBhcmVhLCB3aGlsZQotICAgICAgICAvLyBtYWludGFpbmlu
ZyB0aGUgcmVsYXRpdmUgcG9zaXRpb25zIG9mIHRoZSBib3hlcyBpbiBib3hlcyB0byBlYWNoCi0g
ICAgICAgIC8vIG90aGVyLgotICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5VHJhbnNmb3JtLCBtYWtlU3RyaW5nKCJ0cmFuc2xhdGUoIiwgLXBvc2l0aW9uLmZpcnN0LCAi
JSwgIiwgLXBvc2l0aW9uLnNlY29uZCwgIiUpIikpOwotCisgICAgaWYgKCFjdWUtPnNuYXBUb0xp
bmVzKCkpCiAgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXaGl0ZVNw
YWNlLCBDU1NWYWx1ZVByZSk7Ci0gICAgfQogCiAgICAgLy8gTWFrZSBzdXJlIHNoYWRvdyBvciBz
dHJva2UgaXMgbm90IGNsaXBwZWQuCiAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eU92ZXJmbG93LCBDU1NWYWx1ZVZpc2libGUpOwpAQCAtMzg0LDI2ICszNzIsMjEgQEAgdm9p
ZCBWVFRDdWU6OnNldFNuYXBUb0xpbmVzKGJvb2wgdmFsdWUpCiAKIFZUVEN1ZTo6TGluZUFuZFBv
c2l0aW9uU2V0dGluZyBWVFRDdWU6OmxpbmUoKSBjb25zdAogewotICAgIGlmIChzdGQ6OmlzbmFu
KG1fbGluZVBvc2l0aW9uKSkKKyAgICBpZiAoIW1fbGluZVBvc2l0aW9uKQogICAgICAgICByZXR1
cm4gQXV0bzsKIAotICAgIHJldHVybiBtX2xpbmVQb3NpdGlvbjsKKyAgICByZXR1cm4gKm1fbGlu
ZVBvc2l0aW9uOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBWVFRDdWU6OnNldExpbmUoY29uc3Qg
TGluZUFuZFBvc2l0aW9uU2V0dGluZyYgcG9zaXRpb24pCiB7Ci0gICAgZG91YmxlIGxpbmVQb3Np
dGlvbiA9IDA7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGxpbmVQb3NpdGlvbjsKIAotICAg
IGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPEF1dG9LZXl3b3JkPihwb3NpdGlvbikpIHsKLSAg
ICAgICAgaWYgKHN0ZDo6aXNuYW4obV9saW5lUG9zaXRpb24pKQotICAgICAgICAgICAgcmV0dXJu
IHsgfTsKLSAgICAgICAgbGluZVBvc2l0aW9uID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+
OjpxdWlldF9OYU4oKTsKLSAgICB9IGVsc2UgeworICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxBdXRvS2V5d29yZD4ocG9zaXRpb24pKQogICAgICAgICBsaW5lUG9zaXRpb24gPSBzdGQ6
OmdldDxkb3VibGU+KHBvc2l0aW9uKTsKIAotICAgICAgICBpZiAobV9saW5lUG9zaXRpb24gPT0g
bGluZVBvc2l0aW9uKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9CisgICAgaWYgKG1f
bGluZVBvc2l0aW9uID09IGxpbmVQb3NpdGlvbikKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAg
IHdpbGxDaGFuZ2UoKTsKICAgICBtX2xpbmVQb3NpdGlvbiA9IGxpbmVQb3NpdGlvbjsKQEAgLTQ1
Myw5ICs0MzYsOSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBWVFRDdWU6OnNldExpbmVBbGlnbihjb25z
dCBTdHJpbmcmIHZhbHVlKQogCiBWVFRDdWU6OkxpbmVBbmRQb3NpdGlvblNldHRpbmcgVlRUQ3Vl
Ojpwb3NpdGlvbigpIGNvbnN0CiB7Ci0gICAgaWYgKHRleHRQb3NpdGlvbklzQXV0bygpKQotICAg
ICAgICByZXR1cm4gQXV0bzsKLSAgICByZXR1cm4gbV90ZXh0UG9zaXRpb247CisgICAgaWYgKG1f
dGV4dFBvc2l0aW9uKQorICAgICAgICByZXR1cm4gKm1fdGV4dFBvc2l0aW9uOworICAgIHJldHVy
biBBdXRvOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBWVFRDdWU6OnNldFBvc2l0aW9uKGNvbnN0
IExpbmVBbmRQb3NpdGlvblNldHRpbmcmIHBvc2l0aW9uKQpAQCAtNDY1LDIzICs0NDgsMjAgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gVlRUQ3VlOjpzZXRQb3NpdGlvbihjb25zdCBMaW5lQW5kUG9zaXRp
b25TZXR0aW5nJiBwb3NpdGlvbikKICAgICAvLyBJbmRleFNpemVFcnJvciBleGNlcHRpb24gbXVz
dCBiZSB0aHJvd24uIE90aGVyd2lzZSwgdGhlIFdlYlZUVCBjdWUKICAgICAvLyBwb3NpdGlvbiBt
dXN0IGJlIHNldCB0byB0aGUgbmV3IHZhbHVlOyBpZiB0aGUgbmV3IHZhbHVlIGlzIHRoZSBzdHJp
bmcKICAgICAvLyAiYXV0byIsIHRoZW4gaXQgbXVzdCBiZSBpbnRlcnByZXRlZCBhcyB0aGUgc3Bl
Y2lhbCB2YWx1ZSBhdXRvLgotICAgIGRvdWJsZSB0ZXh0UG9zaXRpb24gPSAwOwotICAgIGlmIChz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPEF1dG9LZXl3b3JkPihwb3NpdGlvbikpIHsKLSAgICAgICAg
aWYgKHRleHRQb3NpdGlvbklzQXV0bygpKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAg
ICAgdGV4dFBvc2l0aW9uID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4o
KTsKLSAgICB9IGVsc2UgeworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0ZXh0UG9zaXRpb247
CisKKyAgICAvLyBPdGhlcndpc2UsIHNldCB0aGUgdGV4dCB0cmFjayBjdWUgbGluZSBwb3NpdGlv
biB0byB0aGUgbmV3IHZhbHVlLgorICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxBdXRv
S2V5d29yZD4ocG9zaXRpb24pKSB7CiAgICAgICAgIHRleHRQb3NpdGlvbiA9IHN0ZDo6Z2V0PGRv
dWJsZT4ocG9zaXRpb24pOwogICAgICAgICBpZiAoISh0ZXh0UG9zaXRpb24gPj0gMCAmJiB0ZXh0
UG9zaXRpb24gPD0gMTAwKSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNp
emVFcnJvciB9OwotCi0gICAgICAgIC8vIE90aGVyd2lzZSwgc2V0IHRoZSB0ZXh0IHRyYWNrIGN1
ZSBsaW5lIHBvc2l0aW9uIHRvIHRoZSBuZXcgdmFsdWUuCi0gICAgICAgIGlmIChtX3RleHRQb3Np
dGlvbiA9PSB0ZXh0UG9zaXRpb24pCi0gICAgICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAor
ICAgIGlmIChtX3RleHRQb3NpdGlvbiA9PSB0ZXh0UG9zaXRpb24pCisgICAgICAgIHJldHVybiB7
IH07CisKICAgICB3aWxsQ2hhbmdlKCk7Ci0gICAgbV90ZXh0UG9zaXRpb24gPSB0ZXh0UG9zaXRp
b247CisgICAgbV90ZXh0UG9zaXRpb24gPSBXVEZNb3ZlKHRleHRQb3NpdGlvbik7CiAgICAgZGlk
Q2hhbmdlKCk7CiAKICAgICByZXR1cm4geyB9OwpAQCAtNzE0LDE0ICs2OTQsMTQgQEAgY29uc3Qg
U3RyaW5nJiBWVFRDdWU6OnJlZ2lvbklkKCkKICAgICByZXR1cm4gbV9yZWdpb24tPmlkKCk7CiB9
CiAKLWludCBWVFRDdWU6OmNhbGN1bGF0ZUNvbXB1dGVkTGluZVBvc2l0aW9uKCkKK2ludCBWVFRD
dWU6OmNhbGN1bGF0ZUNvbXB1dGVkTGluZVBvc2l0aW9uKCkgY29uc3QKIHsKICAgICAvLyBodHRw
Oi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90
aGUtdmlkZW8tZWxlbWVudC5odG1sI3RleHQtdHJhY2stY3VlLWNvbXB1dGVkLWxpbmUtcG9zaXRp
b24KIAogICAgIC8vIElmIHRoZSB0ZXh0IHRyYWNrIGN1ZSBsaW5lIHBvc2l0aW9uIGlzIG51bWVy
aWMsIHRoZW4gdGhhdCBpcyB0aGUgdGV4dAogICAgIC8vIHRyYWNrIGN1ZSBjb21wdXRlZCBsaW5l
IHBvc2l0aW9uLgotICAgIGlmICghc3RkOjppc25hbihtX2xpbmVQb3NpdGlvbikpCi0gICAgICAg
IHJldHVybiBtX2xpbmVQb3NpdGlvbjsKKyAgICBpZiAobV9saW5lUG9zaXRpb24pCisgICAgICAg
IHJldHVybiAqbV9saW5lUG9zaXRpb247CiAKICAgICAvLyBJZiB0aGUgdGV4dCB0cmFjayBjdWUg
c25hcC10by1saW5lcyBmbGFnIG9mIHRoZSB0ZXh0IHRyYWNrIGN1ZSBpcyBub3QKICAgICAvLyBz
ZXQsIHRoZSB0ZXh0IHRyYWNrIGN1ZSBjb21wdXRlZCBsaW5lIHBvc2l0aW9uIGlzIHRoZSB2YWx1
ZSAxMDA7CkBAIC03NTYsMTEgKzczNiw2IEBAIHN0YXRpYyBib29sIGlzQ3VlUGFyYWdyYXBoU2Vw
YXJhdG9yKFVDaGFyIGNoYXJhY3RlcikKICAgICByZXR1cm4gdV9jaGFyVHlwZShjaGFyYWN0ZXIp
ID09IFVfUEFSQUdSQVBIX1NFUEFSQVRPUjsKIH0KIAotYm9vbCBWVFRDdWU6OnRleHRQb3NpdGlv
bklzQXV0bygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN0ZDo6aXNuYW4obV90ZXh0UG9zaXRpb24p
OwotfQotCiB2b2lkIFZUVEN1ZTo6ZGV0ZXJtaW5lVGV4dERpcmVjdGlvbigpCiB7CiAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gcnRUYWcoTUFLRV9TVEFUSUNfU1RSSU5H
X0lNUEwoInJ0IikpOwpAQCAtODEwLDggKzc4NSw4IEBAIGRvdWJsZSBWVFRDdWU6OmNhbGN1bGF0
ZUNvbXB1dGVkVGV4dFBvc2l0aW9uKCkgY29uc3QKICAgICAKICAgICAvLyAxLiBJZiB0aGUgcG9z
aXRpb24gaXMgbnVtZXJpYywgdGhlbiByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBwb3NpdGlvbiBh
bmQKICAgICAvLyBhYm9ydCB0aGVzZSBzdGVwcy4gKE90aGVyd2lzZSwgdGhlIHBvc2l0aW9uIGlz
IHRoZSBzcGVjaWFsIHZhbHVlIGF1dG8uKQotICAgIGlmICghdGV4dFBvc2l0aW9uSXNBdXRvKCkp
Ci0gICAgICAgIHJldHVybiBtX3RleHRQb3NpdGlvbjsKKyAgICBpZiAobV90ZXh0UG9zaXRpb24p
CisgICAgICAgIHJldHVybiAqbV90ZXh0UG9zaXRpb247CiAgICAgCiAgICAgc3dpdGNoIChtX2N1
ZUFsaWdubWVudCkgewogICAgIGNhc2UgU3RhcnQ6CkBAIC05MjEsMTggKzg5NiwxOCBAQCB2b2lk
IFZUVEN1ZTo6Y2FsY3VsYXRlRGlzcGxheVBhcmFtZXRlcnMoKQogICAgIC8vIDEwLjkgRGV0ZXJt
aW5lIHRoZSB2YWx1ZSBvZiB3aGljaGV2ZXIgb2YgeC1wb3NpdGlvbiBvciB5LXBvc2l0aW9uIGlz
IG5vdAogICAgIC8vIHlldCBjYWxjdWxhdGVkIGZvciBjdWUgYXMgcGVyIHRoZSBhcHByb3ByaWF0
ZSBydWxlcyBmcm9tIHRoZSBmb2xsb3dpbmcKICAgICAvLyBsaXN0OgotICAgIGlmIChtX3NuYXBU
b0xpbmVzICYmIG1fZGlzcGxheVBvc2l0aW9uLnNlY29uZCA9PSB1bmRlZmluZWRQb3NpdGlvbiAm
JiBtX3dyaXRpbmdEaXJlY3Rpb24gPT0gSG9yaXpvbnRhbCkKKyAgICBpZiAobV9zbmFwVG9MaW5l
cyAmJiAhbV9kaXNwbGF5UG9zaXRpb24uc2Vjb25kICYmIG1fd3JpdGluZ0RpcmVjdGlvbiA9PSBI
b3Jpem9udGFsKQogICAgICAgICBtX2Rpc3BsYXlQb3NpdGlvbi5zZWNvbmQgPSAwOwogCi0gICAg
aWYgKCFtX3NuYXBUb0xpbmVzICYmIG1fZGlzcGxheVBvc2l0aW9uLnNlY29uZCA9PSB1bmRlZmlu
ZWRQb3NpdGlvbiAmJiBtX3dyaXRpbmdEaXJlY3Rpb24gPT0gSG9yaXpvbnRhbCkKLSAgICAgICAg
bV9kaXNwbGF5UG9zaXRpb24uc2Vjb25kID0gbV9jb21wdXRlZExpbmVQb3NpdGlvbjsKKyAgICBp
ZiAoIW1fc25hcFRvTGluZXMgJiYgIW1fZGlzcGxheVBvc2l0aW9uLnNlY29uZCAmJiBtX3dyaXRp
bmdEaXJlY3Rpb24gPT0gSG9yaXpvbnRhbCkKKyAgICAgICAgbV9kaXNwbGF5UG9zaXRpb24uc2Vj
b25kID0gKm1fY29tcHV0ZWRMaW5lUG9zaXRpb247CiAKLSAgICBpZiAobV9zbmFwVG9MaW5lcyAm
JiBtX2Rpc3BsYXlQb3NpdGlvbi5maXJzdCA9PSB1bmRlZmluZWRQb3NpdGlvbgorICAgIGlmICht
X3NuYXBUb0xpbmVzICYmICFtX2Rpc3BsYXlQb3NpdGlvbi5maXJzdAogICAgICAgICAmJiAobV93
cml0aW5nRGlyZWN0aW9uID09IFZlcnRpY2FsR3Jvd2luZ0xlZnQgfHwgbV93cml0aW5nRGlyZWN0
aW9uID09IFZlcnRpY2FsR3Jvd2luZ1JpZ2h0KSkKICAgICAgICAgbV9kaXNwbGF5UG9zaXRpb24u
Zmlyc3QgPSAwOwogCiAgICAgaWYgKCFtX3NuYXBUb0xpbmVzICYmIChtX3dyaXRpbmdEaXJlY3Rp
b24gPT0gVmVydGljYWxHcm93aW5nTGVmdCB8fCBtX3dyaXRpbmdEaXJlY3Rpb24gPT0gVmVydGlj
YWxHcm93aW5nUmlnaHQpKQotICAgICAgICBtX2Rpc3BsYXlQb3NpdGlvbi5maXJzdCA9IG1fY29t
cHV0ZWRMaW5lUG9zaXRpb247CisgICAgICAgIG1fZGlzcGxheVBvc2l0aW9uLmZpcnN0ID0gKm1f
Y29tcHV0ZWRMaW5lUG9zaXRpb247CiB9CiAgICAgCiB2b2lkIFZUVEN1ZTo6bWFya0Z1dHVyZUFu
ZFBhc3ROb2RlcyhDb250YWluZXJOb2RlKiByb290LCBjb25zdCBNZWRpYVRpbWUmIHByZXZpb3Vz
VGltZXN0YW1wLCBjb25zdCBNZWRpYVRpbWUmIG1vdmllVGltZSkKQEAgLTEwNzYsMzAgKzEwNTEs
MzEgQEAgc3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPiBWVFRDdWU6OmdldFBvc2l0aW9uQ29vcmRp
bmF0ZXMoKSBjb25zdAogICAgIHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4gY29vcmRpbmF0ZXM7
CiAKICAgICBhdXRvIHRleHRQb3NpdGlvbiA9IGNhbGN1bGF0ZUNvbXB1dGVkVGV4dFBvc2l0aW9u
KCk7CisgICAgYXV0byBjb21wdXRlZExpbmVQb3NpdGlvbiA9IG1fY29tcHV0ZWRMaW5lUG9zaXRp
b24gPyAqbV9jb21wdXRlZExpbmVQb3NpdGlvbiA6IGNhbGN1bGF0ZUNvbXB1dGVkTGluZVBvc2l0
aW9uKCk7CiAgICAgCiAgICAgaWYgKG1fd3JpdGluZ0RpcmVjdGlvbiA9PSBIb3Jpem9udGFsICYm
IG1fZGlzcGxheURpcmVjdGlvbiA9PSBDU1NWYWx1ZUx0cikgewogICAgICAgICBjb29yZGluYXRl
cy5maXJzdCA9IHRleHRQb3NpdGlvbjsKLSAgICAgICAgY29vcmRpbmF0ZXMuc2Vjb25kID0gbV9j
b21wdXRlZExpbmVQb3NpdGlvbjsKKyAgICAgICAgY29vcmRpbmF0ZXMuc2Vjb25kID0gY29tcHV0
ZWRMaW5lUG9zaXRpb247CiAKICAgICAgICAgcmV0dXJuIGNvb3JkaW5hdGVzOwogICAgIH0KIAog
ICAgIGlmIChtX3dyaXRpbmdEaXJlY3Rpb24gPT0gSG9yaXpvbnRhbCAmJiBtX2Rpc3BsYXlEaXJl
Y3Rpb24gPT0gQ1NTVmFsdWVSdGwpIHsKICAgICAgICAgY29vcmRpbmF0ZXMuZmlyc3QgPSAxMDAg
LSB0ZXh0UG9zaXRpb247Ci0gICAgICAgIGNvb3JkaW5hdGVzLnNlY29uZCA9IG1fY29tcHV0ZWRM
aW5lUG9zaXRpb247CisgICAgICAgIGNvb3JkaW5hdGVzLnNlY29uZCA9IGNvbXB1dGVkTGluZVBv
c2l0aW9uOwogCiAgICAgICAgIHJldHVybiBjb29yZGluYXRlczsKICAgICB9CiAKICAgICBpZiAo
bV93cml0aW5nRGlyZWN0aW9uID09IFZlcnRpY2FsR3Jvd2luZ0xlZnQpIHsKLSAgICAgICAgY29v
cmRpbmF0ZXMuZmlyc3QgPSAxMDAgLSBtX2NvbXB1dGVkTGluZVBvc2l0aW9uOworICAgICAgICBj
b29yZGluYXRlcy5maXJzdCA9IDEwMCAtICptX2NvbXB1dGVkTGluZVBvc2l0aW9uOwogICAgICAg
ICBjb29yZGluYXRlcy5zZWNvbmQgPSB0ZXh0UG9zaXRpb247CiAKICAgICAgICAgcmV0dXJuIGNv
b3JkaW5hdGVzOwogICAgIH0KIAogICAgIGlmIChtX3dyaXRpbmdEaXJlY3Rpb24gPT0gVmVydGlj
YWxHcm93aW5nUmlnaHQpIHsKLSAgICAgICAgY29vcmRpbmF0ZXMuZmlyc3QgPSBtX2NvbXB1dGVk
TGluZVBvc2l0aW9uOworICAgICAgICBjb29yZGluYXRlcy5maXJzdCA9IGNvbXB1dGVkTGluZVBv
c2l0aW9uOwogICAgICAgICBjb29yZGluYXRlcy5zZWNvbmQgPSB0ZXh0UG9zaXRpb247CiAKICAg
ICAgICAgcmV0dXJuIGNvb3JkaW5hdGVzOwpAQCAtMTMxOSwxNCArMTI5NSw2IEBAIGludCBWVFRD
dWU6OmdldENTU1NpemUoKSBjb25zdAogICAgIHJldHVybiBtX2Rpc3BsYXlTaXplOwogfQogCi1z
dGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+IFZUVEN1ZTo6Z2V0Q1NTUG9zaXRpb24oKSBjb25zdAot
ewotICAgIGlmICghbV9zbmFwVG9MaW5lcykKLSAgICAgICAgcmV0dXJuIGdldFBvc2l0aW9uQ29v
cmRpbmF0ZXMoKTsKLQotICAgIHJldHVybiBtX2Rpc3BsYXlQb3NpdGlvbjsKLX0KLQogYm9vbCBW
VFRDdWU6OmN1ZUNvbnRlbnRzTWF0Y2goY29uc3QgVGV4dFRyYWNrQ3VlJiBvdGhlclRleHRUcmFj
a0N1ZSkgY29uc3QKIHsKICAgICBhdXRvJiBvdGhlciA9IGRvd25jYXN0PFZUVEN1ZT4ob3RoZXJU
ZXh0VHJhY2tDdWUpOwpAQCAtMTM2MCwxMSArMTMyOCwxNCBAQCB2b2lkIFZUVEN1ZTo6dG9KU09O
KEpTT046Ok9iamVjdCYgb2JqZWN0KSBjb25zdAogCiAgICAgb2JqZWN0LnNldFN0cmluZygidmVy
dGljYWwiX3MsIHZlcnRpY2FsKCkpOwogICAgIG9iamVjdC5zZXRCb29sZWFuKCJzbmFwVG9MaW5l
cyJfcywgc25hcFRvTGluZXMoKSk7Ci0gICAgb2JqZWN0LnNldERvdWJsZSgibGluZSJfcywgbV9s
aW5lUG9zaXRpb24pOwotICAgIGlmICh0ZXh0UG9zaXRpb25Jc0F1dG8oKSkKLSAgICAgICAgb2Jq
ZWN0LnNldFN0cmluZygicG9zaXRpb24iX3MsICJhdXRvIl9zKTsKKyAgICBpZiAobV9saW5lUG9z
aXRpb24pCisgICAgICAgIG9iamVjdC5zZXRTdHJpbmcoImxpbmUiX3MsICJhdXRvIl9zKTsKICAg
ICBlbHNlCi0gICAgICAgIG9iamVjdC5zZXREb3VibGUoInBvc2l0aW9uIl9zLCBtX3RleHRQb3Np
dGlvbik7CisgICAgICAgIG9iamVjdC5zZXREb3VibGUoImxpbmUiX3MsICptX2xpbmVQb3NpdGlv
bik7CisgICAgaWYgKG1fdGV4dFBvc2l0aW9uKQorICAgICAgICBvYmplY3Quc2V0RG91YmxlKCJw
b3NpdGlvbiJfcywgKm1fdGV4dFBvc2l0aW9uKTsKKyAgICBlbHNlCisgICAgICAgIG9iamVjdC5z
ZXRTdHJpbmcoInBvc2l0aW9uIl9zLCAiYXV0byJfcyk7CiAgICAgb2JqZWN0LnNldEludGVnZXIo
InNpemUiX3MsIG1fY3VlU2l6ZSk7CiAgICAgb2JqZWN0LnNldFN0cmluZygiYWxpZ24iX3MsIGFs
aWduKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmgKaW5kZXggNzQ5NmMyMjkxZWMw
YzlkYWFhYzU2MjBmNTI5ZDIyNjE1MmQ4YmY1ZS4uYzkxYTQ5MDk2NjUwODMzNjRhMjg5OGYxMDhl
NTViNDA5ZmZmN2QwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRD
dWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5oCkBAIC0xMzYsMTAg
KzEzNiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVEaXNwbGF5VHJlZSgpIGZpbmFsOwog
ICAgIHZvaWQgbWFya0Z1dHVyZUFuZFBhc3ROb2RlcyhDb250YWluZXJOb2RlKiwgY29uc3QgTWVk
aWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJik7CiAKLSAgICBpbnQgY2FsY3VsYXRlQ29tcHV0ZWRM
aW5lUG9zaXRpb24oKTsKKyAgICBpbnQgY2FsY3VsYXRlQ29tcHV0ZWRMaW5lUG9zaXRpb24oKSBj
b25zdDsKICAgICBzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+IGdldFBvc2l0aW9uQ29vcmRpbmF0
ZXMoKSBjb25zdDsKIAotICAgIHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4gZ2V0Q1NTUG9zaXRp
b24oKSBjb25zdDsKKyAgICB1c2luZyBEaXNwbGF5UG9zaXRpb24gPSBzdGQ6OnBhaXI8c3RkOjpv
cHRpb25hbDxkb3VibGU+LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4+OworICAgIGNvbnN0IERpc3Bs
YXlQb3NpdGlvbiYgZ2V0Q1NTUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlQb3Np
dGlvbjsgfTsKIAogICAgIENTU1ZhbHVlSUQgZ2V0Q1NTQWxpZ25tZW50KCkgY29uc3Q7CiAgICAg
aW50IGdldENTU1NpemUoKSBjb25zdDsKQEAgLTIwNyw4ICsyMDgsNiBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBwYXJzZVNldHRpbmdzKGNvbnN0IFN0cmluZyYpOwogCi0gICAgYm9vbCB0ZXh0UG9z
aXRpb25Jc0F1dG8oKSBjb25zdDsKLQogICAgIHZvaWQgZGV0ZXJtaW5lVGV4dERpcmVjdGlvbigp
OwogICAgIHZvaWQgY2FsY3VsYXRlRGlzcGxheVBhcmFtZXRlcnMoKTsKIApAQCAtMjIzLDEzICsy
MjIsMTEgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIEN1ZVNldHRpbmcgc2V0dGluZ05hbWUoVlRU
U2Nhbm5lciYpOwogCi0gICAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgdW5kZWZpbmVkUG9zaXRp
b24gPSAtMTsKLQogICAgIFN0cmluZyBtX2NvbnRlbnQ7CiAgICAgU3RyaW5nIG1fc2V0dGluZ3M7
Ci0gICAgZG91YmxlIG1fbGluZVBvc2l0aW9uIHsgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+
OjpxdWlldF9OYU4oKSB9OwotICAgIGRvdWJsZSBtX2NvbXB1dGVkTGluZVBvc2l0aW9uIHsgc3Rk
OjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSB9OwotICAgIGRvdWJsZSBtX3Rl
eHRQb3NpdGlvbiB7IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkgfTsK
KyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbV9saW5lUG9zaXRpb247CisgICAgc3RkOjpvcHRp
b25hbDxkb3VibGU+IG1fY29tcHV0ZWRMaW5lUG9zaXRpb247CisgICAgc3RkOjpvcHRpb25hbDxk
b3VibGU+IG1fdGV4dFBvc2l0aW9uOwogICAgIGludCBtX2N1ZVNpemUgeyAxMDAgfTsKIAogICAg
IFdyaXRpbmdEaXJlY3Rpb24gbV93cml0aW5nRGlyZWN0aW9uIHsgSG9yaXpvbnRhbCB9OwpAQCAt
MjQ1LDcgKzI0Miw3IEBAIHByaXZhdGU6CiAKICAgICBDU1NWYWx1ZUlEIG1fZGlzcGxheURpcmVj
dGlvbiB7IENTU1ZhbHVlTHRyIH07CiAgICAgaW50IG1fZGlzcGxheVNpemUgeyAwIH07Ci0gICAg
c3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gbV9kaXNwbGF5UG9zaXRpb247CisgICAgRGlzcGxheVBv
c2l0aW9uIG1fZGlzcGxheVBvc2l0aW9uOwogCiAgICAgTWVkaWFUaW1lIG1fb3JpZ2luYWxTdGFy
dFRpbWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMu
Y3BwCmluZGV4IDkzNTQxNzJjZjM0NjNhZjBjODY4YTc5NWU1MzZlYzg2NDdiMDE2ZmUuLjMzNGU2
NDI1NjIzNTMzNTQ2NWQ1ZTkxYmZjOGExNjFjYWMyMTY4M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcApAQCAtOTcsNyArOTcsNyBAQCBDYXB0
aW9uVXNlclByZWZlcmVuY2VzOjpDYXB0aW9uRGlzcGxheU1vZGUgQ2FwdGlvblVzZXJQcmVmZXJl
bmNlczo6Y2FwdGlvbkRpc3BsYQogdm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpzZXRDYXB0
aW9uRGlzcGxheU1vZGUoQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6Q2FwdGlvbkRpc3BsYXlNb2Rl
IG1vZGUpCiB7CiAgICAgbV9kaXNwbGF5TW9kZSA9IG1vZGU7Ci0gICAgaWYgKG1fdGVzdGluZ01v
ZGUgJiYgbW9kZSAhPSBBbHdheXNPbikgeworICAgIGlmICh0ZXN0aW5nTW9kZSgpICYmIG1vZGUg
IT0gQWx3YXlzT24pIHsKICAgICAgICAgc2V0VXNlclByZWZlcnNDYXB0aW9ucyhmYWxzZSk7CiAg
ICAgICAgIHNldFVzZXJQcmVmZXJzU3VidGl0bGVzKGZhbHNlKTsKICAgICB9CkBAIC0xNzYsNyAr
MTc2LDcgQEAgdm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpjYXB0aW9uUHJlZmVyZW5jZXND
aGFuZ2VkKCkKIFZlY3RvcjxTdHJpbmc+IENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnByZWZlcnJl
ZExhbmd1YWdlcygpIGNvbnN0CiB7CiAgICAgVmVjdG9yPFN0cmluZz4gbGFuZ3VhZ2VzID0gdXNl
clByZWZlcnJlZExhbmd1YWdlcyhTaG91bGRNaW5pbWl6ZUxhbmd1YWdlczo6Tm8pOwotICAgIGlm
IChtX3Rlc3RpbmdNb2RlICYmICFtX3VzZXJQcmVmZXJyZWRMYW5ndWFnZS5pc0VtcHR5KCkpCisg
ICAgaWYgKHRlc3RpbmdNb2RlKCkgJiYgIW1fdXNlclByZWZlcnJlZExhbmd1YWdlLmlzRW1wdHko
KSkKICAgICAgICAgbGFuZ3VhZ2VzLmluc2VydCgwLCBtX3VzZXJQcmVmZXJyZWRMYW5ndWFnZSk7
CiAKICAgICByZXR1cm4gbGFuZ3VhZ2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25V
c2VyUHJlZmVyZW5jZXMuaAppbmRleCBjYzUwMWY3OTE1MzE2ZTE0MDM5YzBkNzJmZjkxNDU0ZTMz
MDM1M2ZlLi43ZTY3ZWE0NzI3YWVjYWViNThmODM5MTY2NmJhM2RkYjJlYWJlZjY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaApAQCAtMzYsNiArMzYs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNUZXN0aW5nTW9kZVRva2VuOwogY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKIGNsYXNzIFBhZ2U7
CiBjbGFzcyBQYWdlR3JvdXA7CkBAIC05OCw4ICs5OSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRQcmltYXJ5QXVkaW9UcmFja0xhbmd1YWdlT3ZlcnJpZGUoY29uc3QgU3RyaW5nJiBsYW5ndWFn
ZSkgeyBtX3ByaW1hcnlBdWRpb1RyYWNrTGFuZ3VhZ2VPdmVycmlkZSA9IGxhbmd1YWdlOyAgfQog
ICAgIFN0cmluZyBwcmltYXJ5QXVkaW9UcmFja0xhbmd1YWdlT3ZlcnJpZGUoKSBjb25zdDsKIAot
ICAgIHZpcnR1YWwgYm9vbCB0ZXN0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGVzdGluZ01v
ZGU7IH0KLSAgICB2b2lkIHNldFRlc3RpbmdNb2RlKGJvb2wgb3ZlcnJpZGUpIHsgbV90ZXN0aW5n
TW9kZSA9IG92ZXJyaWRlOyB9CisgICAgdmlydHVhbCBib29sIHRlc3RpbmdNb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV90ZXN0aW5nTW9kZUNvdW50OyB9CisKKyAgICBmcmllbmQgY2xhc3MgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc1Rlc3RpbmdNb2RlVG9rZW47CisgICAgVW5pcXVlUmVmPENhcHRpb25V
c2VyUHJlZmVyZW5jZXNUZXN0aW5nTW9kZVRva2VuPiBjcmVhdGVUZXN0aW5nTW9kZVRva2VuKCkg
eyByZXR1cm4gbWFrZVVuaXF1ZVJlZjxDYXB0aW9uVXNlclByZWZlcmVuY2VzVGVzdGluZ01vZGVU
b2tlbj4oKnRoaXMpOyB9CiAgICAgCiAgICAgUGFnZUdyb3VwJiBwYWdlR3JvdXAoKSBjb25zdCB7
IHJldHVybiBtX3BhZ2VHcm91cDsgfQogCkBAIC0xMTEsNiArMTE0LDE0IEBAIHByb3RlY3RlZDoK
ICAgICB2b2lkIGVuZEJsb2NraW5nTm90aWZpY2F0aW9ucygpOwogCiBwcml2YXRlOgorICAgIHZv
aWQgaW5jcmVtZW50VGVzdGluZ01vZGVDb3VudCgpIHsgKyttX3Rlc3RpbmdNb2RlQ291bnQ7IH0K
KyAgICB2b2lkIGRlY3JlbWVudFRlc3RpbmdNb2RlQ291bnQoKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKG1fdGVzdGluZ01vZGVDb3VudCk7CisgICAgICAgIGlmIChtX3Rlc3RpbmdNb2RlQ291bnQp
CisgICAgICAgICAgICAtLW1fdGVzdGluZ01vZGVDb3VudDsKKyAgICB9CisKICAgICB2b2lkIHRp
bWVyRmlyZWQoKTsKICAgICB2b2lkIG5vdGlmeSgpOwogICAgIFBhZ2UqIGN1cnJlbnRQYWdlKCkg
Y29uc3Q7CkBAIC0xMjMsOCArMTM0LDI1IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fY2FwdGlv
bnNTdHlsZVNoZWV0T3ZlcnJpZGU7CiAgICAgU3RyaW5nIG1fcHJpbWFyeUF1ZGlvVHJhY2tMYW5n
dWFnZU92ZXJyaWRlOwogICAgIHVuc2lnbmVkIG1fYmxvY2tOb3RpZmljYXRpb25zQ291bnRlciB7
IDAgfTsKLSAgICBib29sIG1fdGVzdGluZ01vZGUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXZl
UHJlZmVyZW5jZXMgeyBmYWxzZSB9OworICAgIHVuc2lnbmVkIG1fdGVzdGluZ01vZGVDb3VudCB7
IDAgfTsKK307CisKK2NsYXNzIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNUZXN0aW5nTW9kZVRva2Vu
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBDYXB0aW9uVXNl
clByZWZlcmVuY2VzVGVzdGluZ01vZGVUb2tlbihDYXB0aW9uVXNlclByZWZlcmVuY2VzJiBwYXJl
bnQpCisgICAgICAgIDogbV9wYXJlbnQocGFyZW50KQorICAgIHsKKyAgICAgICAgcGFyZW50Lmlu
Y3JlbWVudFRlc3RpbmdNb2RlQ291bnQoKTsKKyAgICB9CisgICAgfkNhcHRpb25Vc2VyUHJlZmVy
ZW5jZXNUZXN0aW5nTW9kZVRva2VuKCkKKyAgICB7CisgICAgICAgIGlmIChtX3BhcmVudCkKKyAg
ICAgICAgICAgIG1fcGFyZW50LT5kZWNyZW1lbnRUZXN0aW5nTW9kZUNvdW50KCk7CisgICAgfQor
cHJpdmF0ZToKKyAgICBXZWFrUHRyPENhcHRpb25Vc2VyUHJlZmVyZW5jZXM+IG1fcGFyZW50Owog
fTsKICAgICAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCA4
ZWJjZjI5NGZiNjdhNDViMmY0NzBmOWY3ZmQxYjcxNjViNjJlNGEzLi44NzIwODQwOGE2Yzk1Yzcy
YzZjZGJmZmMxZTEyZDkzNGQ5Yzg3ODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oCkBAIC0yNjksNiArMjY5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBp
c1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclNjcm9sbGJhclBhcnQoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclZUVEN1ZSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBib29sIGlzRG9jdW1lbnRFbGVtZW50UmVuZGVyZXIo
KSBjb25zdCB7IHJldHVybiBkb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpID09ICZtX25vZGU7
IH0KICAgICBib29sIGlzQm9keSgpIGNvbnN0IHsgcmV0dXJuIG5vZGUoKSAmJiBub2RlKCktPmhh
c1RhZ05hbWUoSFRNTE5hbWVzOjpib2R5VGFnKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZUVEN1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVlRUQ3VlLmNwcAppbmRleCA1YmFlOGVmZTdhOGZjODE2MjJiMjBlODhhN2ZlYjVhMmNi
NGZlZWM0Li5jMjEyMDMwMWRmNDMxZDVkNDExZWNkOWMzOTViYWE1NmQ4NTRiMWQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmNwcApAQCAtNjAsNyArNjAsNyBAQCB2
b2lkIFJlbmRlclZUVEN1ZTo6bGF5b3V0KCkKICAgICBpZiAoIW1fY3VlLT5yZWdpb25JZCgpLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTGF5b3V0U3RhdGVNYWludGFpbmVyIHN0
YXRlUHVzaGVyKCp0aGlzLCBsb2NhdGlvbk9mZnNldCgpLCBoYXNUcmFuc2Zvcm0oKSB8fCBoYXNS
ZWZsZWN0aW9uKCkgfHwgc3R5bGUoKS5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKTsKKyAg
ICBMYXlvdXRTdGF0ZU1haW50YWluZXIgc3RhdGVQdXNoZXIoKnRoaXMsIGxvY2F0aW9uT2Zmc2V0
KCksIHRydWUpOwogCiAgICAgaWYgKG1fY3VlLT5jdWVUeXBlKCk9PSBUZXh0VHJhY2tDdWU6Oldl
YlZUVCkgewogICAgICAgICBpZiAobV9jdWUtPnNuYXBUb0xpbmVzKCkpCkBAIC03OSwxMiArNzks
NyBAQCBib29sIFJlbmRlclZUVEN1ZTo6aW5pdGlhbGl6ZUxheW91dFBhcmFtZXRlcnMoTGVnYWN5
SW5saW5lRmxvd0JveComIGZpcnN0TGluZUJveAogCiAgICAgUmVuZGVyQmxvY2sqIHBhcmVudEJs
b2NrID0gY29udGFpbmluZ0Jsb2NrKCk7CiAKLSAgICAvLyBmaXJzdENoaWxkKCkgcmV0dXJucyB0
aGUgd3JhcHBpbmcgKGJhY2tkcm9wKSA8ZGl2Pi4gVGhlIGN1ZSBvYmplY3QgaXMKLSAgICAvLyB0
aGUgPGRpdj4ncyBmaXJzdCBjaGlsZC4KLSAgICBSZW5kZXJPYmplY3QmIGZpcnN0Q2hpbGQgPSAq
dGhpcy0+Zmlyc3RDaGlsZCgpOwotICAgIFJlbmRlckVsZW1lbnQmIGJhY2tkcm9wRWxlbWVudCA9
IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KGZpcnN0Q2hpbGQpOwotICAgIAotICAgIGZpcnN0TGlu
ZUJveCA9IGRvd25jYXN0PFJlbmRlcklubGluZT4oKmJhY2tkcm9wRWxlbWVudC5maXJzdENoaWxk
KCkpLmZpcnN0TGluZUJveCgpOworICAgIGZpcnN0TGluZUJveCA9IGN1ZUJveCgpLmZpcnN0TGlu
ZUJveCgpOwogICAgIGlmICghZmlyc3RMaW5lQm94KQogICAgICAgICBmaXJzdExpbmVCb3ggPSB0
aGlzLT5maXJzdFJvb3RCb3goKTsKIApAQCAtOTIsNiArODcsMTkgQEAgYm9vbCBSZW5kZXJWVFRD
dWU6OmluaXRpYWxpemVMYXlvdXRQYXJhbWV0ZXJzKExlZ2FjeUlubGluZUZsb3dCb3gqJiBmaXJz
dExpbmVCb3gKICAgICAvLyAgICBWZXJ0aWNhbDogTGV0IHN0ZXAgYmUgdGhlIHdpZHRoIG9mIHRo
ZSBmaXJzdCBsaW5lIGJveCBpbiBib3hlcy4KICAgICBzdGVwID0gbV9jdWUtPmdldFdyaXRpbmdE
aXJlY3Rpb24oKSA9PSBWVFRDdWU6Okhvcml6b250YWwgPyBmaXJzdExpbmVCb3gtPmhlaWdodCgp
IDogZmlyc3RMaW5lQm94LT53aWR0aCgpOwogCisgICAgLy8gTm90ZTogdGhlIHByZXZpb3VzIHJ1
bGVzIGluIGluaXRpYWxpemVMYXlvdXRQYXJhbWV0ZXJzKCkgb25seSBhY2NvdW50IGZvcgorICAg
IC8vIHRoZSBoZWlnaHQgb2YgdGhlIGxpbmUgYm94ZXMgY29udGFpbmVkIHdpdGhpbiB0aGUgY3Vl
LCBhbmQgbm90IHRoZSBjdWUncyBoZWlnaHQKKyAgICAvLyBub3IgaXRzIHBhZGRpbmcsIG5vciBp
dHMgYm9yZGVycy4gSWdub3JpbmcgdGhlc2Ugd2lsbCBsZWFkIHRvIGVycm9ycworICAgIC8vIGlu
IHRoZSBpbml0aWFsIHBsYWNlbWVudCBvZiBjdWVzLCBhcyB0aGUgcmVzdWx0aW5nIHBsYWNlbWVu
dCB3aWxsIHJlc3VsdCBpbgorICAgIC8vIHRoZSBjdWUgYWx3YXlzIGJlaW5nIHBhcnRpYWxseSBv
dXRzaWRlIGl0cyBjb250YWluaW5nIGJsb2NrLCByYXRoZXIgdGhhbiBhdAorICAgIC8vIGl0cyBp
bml0aWFsIHBvc2l0aW9uLiBDb3JyZWN0IHRoZSBpbml0aWFsIHBvc2l0aW9uIGJ5IHN1YnRyYWN0
aW5nIGZyb20KKyAgICAvLyBwb3NpdGlvbiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0aGUg
bG9naWNhbEhlaWdodCBvZiB0aGUgY3VlIGFuZCBpdHMKKyAgICAvLyBmaXJzdCBsaW5lIGJveC4K
KyAgICBhdXRvJiBiYWNrZHJvcEJveCA9IHRoaXMtPmJhY2tkcm9wQm94KCk7CisgICAgYXV0byBs
b2dpY2FsSGVpZ2h0RGVsdGEgPSBiYWNrZHJvcEJveC5sb2dpY2FsSGVpZ2h0KCkgLSBmaXJzdExp
bmVCb3gtPmxvZ2ljYWxIZWlnaHQoKTsKKyAgICBpZiAobG9naWNhbEhlaWdodERlbHRhID4gMCkK
KyAgICAgICAgc3RlcCArPSBsb2dpY2FsSGVpZ2h0RGVsdGE7CisKICAgICAvLyAyLiBJZiBzdGVw
IGlzIHplcm8sIHRoZW4ganVtcCB0byB0aGUgc3RlcCBsYWJlbGVkIGRvbmUgcG9zaXRpb25pbmcg
YmVsb3cuCiAgICAgaWYgKCFzdGVwKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNDYsNyAr
MTU0LDcgQEAgdm9pZCBSZW5kZXJWVFRDdWU6OnBsYWNlQm94SW5EZWZhdWx0UG9zaXRpb24oTGF5
b3V0VW5pdCBwb3NpdGlvbiwgYm9vbCYgc3dpdGNoZWQKIAogYm9vbCBSZW5kZXJWVFRDdWU6Omlz
T3V0c2lkZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFyZWN0SXNXaXRoaW5Db250YWluZXIoYWJz
b2x1dGVDb250ZW50Qm94KCkpOworICAgIHJldHVybiAhcmVjdElzV2l0aGluQ29udGFpbmVyKGJh
Y2tkcm9wQm94KCkuYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSk7CiB9CiAKIGJvb2wgUmVuZGVy
VlRUQ3VlOjpyZWN0SXNXaXRoaW5Db250YWluZXIoY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3QK
QEAgLTE2MCwxOCArMTY4LDIwIEBAIGJvb2wgUmVuZGVyVlRUQ3VlOjppc092ZXJsYXBwaW5nKCkg
Y29uc3QKICAgICByZXR1cm4gb3ZlcmxhcHBpbmdPYmplY3QoKTsKIH0KIAotUmVuZGVyT2JqZWN0
KiBSZW5kZXJWVFRDdWU6Om92ZXJsYXBwaW5nT2JqZWN0KCkgY29uc3QKK1JlbmRlclZUVEN1ZSog
UmVuZGVyVlRUQ3VlOjpvdmVybGFwcGluZ09iamVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG92
ZXJsYXBwaW5nT2JqZWN0Rm9yUmVjdChhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsKKyAgICBy
ZXR1cm4gb3ZlcmxhcHBpbmdPYmplY3RGb3JSZWN0KGJhY2tkcm9wQm94KCkuYWJzb2x1dGVCb3Vu
ZGluZ0JveFJlY3QoKSk7CiB9CiAKLVJlbmRlck9iamVjdCogUmVuZGVyVlRUQ3VlOjpvdmVybGFw
cGluZ09iamVjdEZvclJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3QKK1JlbmRlclZUVEN1
ZSogUmVuZGVyVlRUQ3VlOjpvdmVybGFwcGluZ09iamVjdEZvclJlY3QoY29uc3QgSW50UmVjdCYg
cmVjdCkgY29uc3QKIHsKLSAgICBmb3IgKFJlbmRlck9iamVjdCogYm94ID0gcHJldmlvdXNTaWJs
aW5nKCk7IGJveDsgYm94ID0gYm94LT5wcmV2aW91c1NpYmxpbmcoKSkgewotICAgICAgICBJbnRS
ZWN0IGJveFJlY3QgPSBib3gtPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CisgICAgZm9yIChS
ZW5kZXJPYmplY3QqIHNpYmxpbmcgPSBwcmV2aW91c1NpYmxpbmcoKTsgc2libGluZzsgc2libGlu
ZyA9IHNpYmxpbmctPnByZXZpb3VzU2libGluZygpKSB7CisgICAgICAgIGF1dG8qIHByZXZpb3Vz
Q3VlID0gZG93bmNhc3Q8UmVuZGVyVlRUQ3VlPihzaWJsaW5nKTsKKyAgICAgICAgaWYgKCFwcmV2
aW91c0N1ZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChyZWN0LmludGVy
c2VjdHMoYm94UmVjdCkpCi0gICAgICAgICAgICByZXR1cm4gYm94OworICAgICAgICBpZiAocmVj
dC5pbnRlcnNlY3RzKHByZXZpb3VzQ3VlLT5iYWNrZHJvcEJveCgpLmFic29sdXRlQm91bmRpbmdC
b3hSZWN0KCkpKQorICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzQ3VlOwogICAgIH0KIAogICAg
IHJldHVybiAwOwpAQCAtMjQzLDcgKzI1Myw3IEBAIGJvb2wgUmVuZGVyVlRUQ3VlOjpzd2l0Y2hE
aXJlY3Rpb24oYm9vbCYgc3dpdGNoZWQsIExheW91dFVuaXQmIHN0ZXApCiB2b2lkIFJlbmRlclZU
VEN1ZTo6bW92ZUlmTmVjZXNzYXJ5VG9LZWVwV2l0aGluQ29udGFpbmVyKCkKIHsKICAgICBJbnRS
ZWN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluaW5nQmxvY2soKS0+YWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3QoKTsKLSAgICBJbnRSZWN0IGN1ZVJlY3QgPSBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgp
OworICAgIEludFJlY3QgY3VlUmVjdCA9IGJhY2tkcm9wQm94KCkuYWJzb2x1dGVCb3VuZGluZ0Jv
eFJlY3QoKTsKIAogICAgIGludCB0b3BPdmVyZmxvdyA9IGN1ZVJlY3QueSgpIC0gY29udGFpbmVy
UmVjdC55KCk7CiAgICAgaW50IGJvdHRvbU92ZXJmbG93ID0gY29udGFpbmVyUmVjdC5tYXhZKCkg
LSBjdWVSZWN0Lm1heFkoKTsKQEAgLTI3NCwxNSArMjg0LDE1IEBAIGJvb2wgUmVuZGVyVlRUQ3Vl
OjpmaW5kTm9uT3ZlcmxhcHBpbmdQb3NpdGlvbihpbnQmIG5ld1gsIGludCYgbmV3WSkgY29uc3QK
IHsKICAgICBuZXdYID0geCgpOwogICAgIG5ld1kgPSB5KCk7Ci0gICAgSW50UmVjdCBzcmNSZWN0
ID0gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKKyAgICBJbnRSZWN0IHNyY1JlY3QgPSBiYWNr
ZHJvcEJveCgpLmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CiAgICAgSW50UmVjdCBkZXN0UmVj
dCA9IHNyY1JlY3Q7CiAKICAgICAvLyBNb3ZlIHRoZSBib3ggdXAsIGxvb2tpbmcgZm9yIGEgbm9u
LW92ZXJsYXBwaW5nIHBvc2l0aW9uOgotICAgIHdoaWxlIChSZW5kZXJPYmplY3QqIGJveCA9IG92
ZXJsYXBwaW5nT2JqZWN0Rm9yUmVjdChkZXN0UmVjdCkpIHsKKyAgICB3aGlsZSAoUmVuZGVyVlRU
Q3VlKiBjdWUgPSBvdmVybGFwcGluZ09iamVjdEZvclJlY3QoZGVzdFJlY3QpKSB7CiAgICAgICAg
IGlmIChtX2N1ZS0+Z2V0V3JpdGluZ0RpcmVjdGlvbigpID09IFZUVEN1ZTo6SG9yaXpvbnRhbCkK
LSAgICAgICAgICAgIGRlc3RSZWN0LnNldFkoYm94LT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgp
LnkoKSAtIGRlc3RSZWN0LmhlaWdodCgpKTsKKyAgICAgICAgICAgIGRlc3RSZWN0LnNldFkoY3Vl
LT5iYWNrZHJvcEJveCgpLmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkueSgpIC0gZGVzdFJlY3Qu
aGVpZ2h0KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBkZXN0UmVjdC5zZXRYKGJveC0+
YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKS54KCkgLSBkZXN0UmVjdC53aWR0aCgpKTsKKyAgICAg
ICAgICAgIGRlc3RSZWN0LnNldFgoY3VlLT5iYWNrZHJvcEJveCgpLmFic29sdXRlQm91bmRpbmdC
b3hSZWN0KCkueCgpIC0gZGVzdFJlY3Qud2lkdGgoKSk7CiAgICAgfQogCiAgICAgaWYgKHJlY3RJ
c1dpdGhpbkNvbnRhaW5lcihkZXN0UmVjdCkpIHsKQEAgLTI5NCwxMSArMzA0LDExIEBAIGJvb2wg
UmVuZGVyVlRUQ3VlOjpmaW5kTm9uT3ZlcmxhcHBpbmdQb3NpdGlvbihpbnQmIG5ld1gsIGludCYg
bmV3WSkgY29uc3QKICAgICBkZXN0UmVjdCA9IHNyY1JlY3Q7CiAKICAgICAvLyBNb3ZlIHRoZSBi
b3ggZG93biwgbG9va2luZyBmb3IgYSBub24tb3ZlcmxhcHBpbmcgcG9zaXRpb246Ci0gICAgd2hp
bGUgKFJlbmRlck9iamVjdCogYm94ID0gb3ZlcmxhcHBpbmdPYmplY3RGb3JSZWN0KGRlc3RSZWN0
KSkgeworICAgIHdoaWxlIChSZW5kZXJWVFRDdWUqIGN1ZSA9IG92ZXJsYXBwaW5nT2JqZWN0Rm9y
UmVjdChkZXN0UmVjdCkpIHsKICAgICAgICAgaWYgKG1fY3VlLT5nZXRXcml0aW5nRGlyZWN0aW9u
KCkgPT0gVlRUQ3VlOjpIb3Jpem9udGFsKQotICAgICAgICAgICAgZGVzdFJlY3Quc2V0WShib3gt
PmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkubWF4WSgpKTsKKyAgICAgICAgICAgIGRlc3RSZWN0
LnNldFkoY3VlLT5iYWNrZHJvcEJveCgpLmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkubWF4WSgp
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZGVzdFJlY3Quc2V0WChib3gtPmFic29sdXRl
Qm91bmRpbmdCb3hSZWN0KCkubWF4WCgpKTsKKyAgICAgICAgICAgIGRlc3RSZWN0LnNldFgoY3Vl
LT5iYWNrZHJvcEJveCgpLmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkubWF4WCgpKTsKICAgICB9
CiAKICAgICBpZiAocmVjdElzV2l0aGluQ29udGFpbmVyKGRlc3RSZWN0KSkgewpAQCAtMzQ1LDEy
ICszNTUsNyBAQCB2b2lkIFJlbmRlclZUVEN1ZTo6cmVwb3NpdGlvbkdlbmVyaWNDdWUoKQogewog
ICAgIEFTU0VSVChmaXJzdENoaWxkKCkpOwogCi0gICAgLy8gZmlyc3RDaGlsZCgpIHJldHVybnMg
dGhlIHdyYXBwaW5nIChiYWNrZHJvcCkgPGRpdj4uIFRoZSBjdWUgb2JqZWN0IGlzCi0gICAgLy8g
dGhlIDxkaXY+J3MgZmlyc3QgY2hpbGQuCi0gICAgUmVuZGVyT2JqZWN0JiBmaXJzdENoaWxkID0g
KnRoaXMtPmZpcnN0Q2hpbGQoKTsKLSAgICBSZW5kZXJFbGVtZW50JiBiYWNrZHJvcEVsZW1lbnQg
PSBkb3duY2FzdDxSZW5kZXJFbGVtZW50PihmaXJzdENoaWxkKTsKLSAgICAKLSAgICBMZWdhY3lJ
bmxpbmVGbG93Qm94KiBmaXJzdExpbmVCb3ggPSBkb3duY2FzdDxSZW5kZXJJbmxpbmU+KCpiYWNr
ZHJvcEVsZW1lbnQuZmlyc3RDaGlsZCgpKS5maXJzdExpbmVCb3goKTsKKyAgICBMZWdhY3lJbmxp
bmVGbG93Qm94KiBmaXJzdExpbmVCb3ggPSBjdWVCb3goKS5maXJzdExpbmVCb3goKTsKICAgICBp
ZiAoZG93bmNhc3Q8VGV4dFRyYWNrQ3VlR2VuZXJpYz4oKm1fY3VlKS51c2VEZWZhdWx0UG9zaXRp
b24oKSAmJiBmaXJzdExpbmVCb3gpIHsKICAgICAgICAgTGF5b3V0VW5pdCBwYXJlbnRXaWR0aCA9
IGNvbnRhaW5pbmdCbG9jaygpLT5sb2dpY2FsV2lkdGgoKTsKICAgICAgICAgTGF5b3V0VW5pdCB3
aWR0aCB7IGZpcnN0TGluZUJveC0+d2lkdGgoKSB9OwpAQCAtMzg0LDYgKzM4OSwyMSBAQCB2b2lk
IFJlbmRlclZUVEN1ZTo6cmVwb3NpdGlvbkN1ZVNuYXBUb0xpbmVzTm90U2V0KCkKICAgICBzZXRZ
KHkpOwogfQogCitSZW5kZXJCbG9ja0Zsb3cmIFJlbmRlclZUVEN1ZTo6YmFja2Ryb3BCb3goKSBj
b25zdAoreworICAgIEFTU0VSVChmaXJzdENoaWxkKCkpOworCisgICAgLy8gZmlyc3RDaGlsZCgp
IHJldHVybnMgdGhlIHdyYXBwaW5nIChiYWNrZHJvcCkgPGRpdj4uIFRoZSBjdWUgb2JqZWN0IGlz
CisgICAgLy8gdGhlIDxkaXY+J3MgZmlyc3QgY2hpbGQuCisgICAgUmVuZGVyT2JqZWN0JiBmaXJz
dENoaWxkID0gKnRoaXMtPmZpcnN0Q2hpbGQoKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVy
QmxvY2tGbG93PihmaXJzdENoaWxkKTsKK30KKworUmVuZGVySW5saW5lJiBSZW5kZXJWVFRDdWU6
OmN1ZUJveCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlcklubGluZT4oKmJh
Y2tkcm9wQm94KCkuZmlyc3RDaGlsZCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRD
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuaAppbmRleCAyYzU1
N2I2ZGU2MDg1NjhkZjgxNmM0YWNiMzE5NzExOTU2YTk2NDI0Li42MWY5ZTgxNjY2M2I3OWYxNzY5
MjMwODMzZDU2YWRkMGQzYTZhOGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVlRUQ3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZU
VEN1ZS5oCkBAIC00MiwxMyArNDIsMTUgQEAgcHVibGljOgogICAgIFJlbmRlclZUVEN1ZShWVFRD
dWVCb3gmLCBSZW5kZXJTdHlsZSYmKTsKIAogcHJpdmF0ZToKKyAgICBib29sIGlzUmVuZGVyVlRU
Q3VlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorCiAgICAgdm9pZCBsYXlvdXQoKSBv
dmVycmlkZTsKIAogICAgIGJvb2wgaXNPdXRzaWRlKCkgY29uc3Q7CiAgICAgYm9vbCByZWN0SXNX
aXRoaW5Db250YWluZXIoY29uc3QgSW50UmVjdCYpIGNvbnN0OwogICAgIGJvb2wgaXNPdmVybGFw
cGluZygpIGNvbnN0OwotICAgIFJlbmRlck9iamVjdCogb3ZlcmxhcHBpbmdPYmplY3QoKSBjb25z
dDsKLSAgICBSZW5kZXJPYmplY3QqIG92ZXJsYXBwaW5nT2JqZWN0Rm9yUmVjdChjb25zdCBJbnRS
ZWN0JikgY29uc3Q7CisgICAgUmVuZGVyVlRUQ3VlKiBvdmVybGFwcGluZ09iamVjdCgpIGNvbnN0
OworICAgIFJlbmRlclZUVEN1ZSogb3ZlcmxhcHBpbmdPYmplY3RGb3JSZWN0KGNvbnN0IEludFJl
Y3QmKSBjb25zdDsKICAgICBib29sIHNob3VsZFN3aXRjaERpcmVjdGlvbihMZWdhY3lJbmxpbmVG
bG93Qm94KiwgTGF5b3V0VW5pdCkgY29uc3Q7CiAKICAgICB2b2lkIG1vdmVCb3hlc0J5U3RlcChM
YXlvdXRVbml0KTsKQEAgLTYyLDEwICs2NCwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVwb3Np
dGlvbkN1ZVNuYXBUb0xpbmVzTm90U2V0KCk7CiAgICAgdm9pZCByZXBvc2l0aW9uR2VuZXJpY0N1
ZSgpOwogCisgICAgUmVuZGVyQmxvY2tGbG93JiBiYWNrZHJvcEJveCgpIGNvbnN0OworICAgIFJl
bmRlcklubGluZSYgY3VlQm94KCkgY29uc3Q7CisKICAgICBWVFRDdWUqIG1fY3VlOwogICAgIEZs
b2F0UG9pbnQgbV9mYWxsYmFja1Bvc2l0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyVlRUQ3VlLCBp
c1JlbmRlclZUVEN1ZSgpKQorCiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDQyZTljMGQ2ODU4ZWM5MWMzMTljYjIzMzRjZTBiMjIx
NTMzMWZhNmMuLjk5OGNmYzU0YzNiZWFiODhlMzkyZTFkMDlmMDRkMGEwMTc1MDJmNGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTU0NSwxMCArNTQ1LDggQEAgdm9pZCBJ
bnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUoUGFnZSYgcGFnZSkKICAgICBwYWdlLm1h
aW5GcmFtZSgpLmxvYWRlcigpLmNsZWFyVGVzdGluZ092ZXJyaWRlcygpOwogICAgIHBhZ2UuYXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UoKS5zZXREZWZhdWx0T3JpZ2luUXVvdGEoQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6Om5vUXVvdGEoKSk7CiAjaWYgRU5BQkxFKFZJREVPKQotICAgIHBhZ2UuZ3Jv
dXAoKS5lbnN1cmVDYXB0aW9uUHJlZmVyZW5jZXMoKS5zZXRUZXN0aW5nTW9kZSh0cnVlKTsKICAg
ICBwYWdlLmdyb3VwKCkuZW5zdXJlQ2FwdGlvblByZWZlcmVuY2VzKCkuc2V0Q2FwdGlvbkRpc3Bs
YXlNb2RlKENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkZvcmNlZE9ubHkpOwogICAgIHBhZ2UuZ3Jv
dXAoKS5lbnN1cmVDYXB0aW9uUHJlZmVyZW5jZXMoKS5zZXRDYXB0aW9uc1N0eWxlU2hlZXRPdmVy
cmlkZShlbXB0eVN0cmluZygpKTsKLSAgICBwYWdlLmdyb3VwKCkuZW5zdXJlQ2FwdGlvblByZWZl
cmVuY2VzKCkuc2V0VGVzdGluZ01vZGUoZmFsc2UpOwogICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnJlc2V0SGF2ZUV2ZXJSZWdpc3RlcmVkQXNOb3dQbGF5
aW5nQXBwbGljYXRpb25Gb3JUZXN0aW5nKCk7CiAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyOjpzaGFyZWRNYW5hZ2VyKCkucmVzZXRSZXN0cmljdGlvbnMoKTsKICAgICBQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zZXRXaWxsSWdub3JlU3lzdGVtSW50
ZXJydXB0aW9ucyh0cnVlKTsKQEAgLTYyNCwxNCArNjIyLDE0IEBAIEludGVybmFsczo6SW50ZXJu
YWxzKERvY3VtZW50JiBkb2N1bWVudCkKICAgICAsIG1fb3JpZW50YXRpb25Ob3RpZmllcigwKQog
I2VuZGlmCiB7Ci0jaWYgRU5BQkxFKFZJREVPKQorI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpCiAgICAgaWYgKGRvY3VtZW50LnBhZ2UoKSkKLSAgICAgICAgZG9jdW1lbnQucGFn
ZSgpLT5ncm91cCgpLmVuc3VyZUNhcHRpb25QcmVmZXJlbmNlcygpLnNldFRlc3RpbmdNb2RlKHRy
dWUpOworICAgICAgICBkb2N1bWVudC5wYWdlKCktPnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyRW5hYmxlZCh0cnVlKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkKKyNpZiBFTkFCTEUoVklERU8pCiAgICAgaWYgKGRvY3VtZW50LnBhZ2UoKSkK
LSAgICAgICAgZG9jdW1lbnQucGFnZSgpLT5zZXRNb2NrTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ckVuYWJsZWQodHJ1ZSk7CisgICAgICAgIG1fdGVzdGluZ01vZGVUb2tlbiA9IGRvY3VtZW50LnBh
Z2UoKS0+Z3JvdXAoKS5lbnN1cmVDYXB0aW9uUHJlZmVyZW5jZXMoKS5jcmVhdGVUZXN0aW5nTW9k
ZVRva2VuKCkubW92ZVRvVW5pcXVlUHRyKCk7CiAjZW5kaWYKIAogICAgIGlmIChjb250ZXh0RG9j
dW1lbnQoKSAmJiBjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmgKaW5kZXggOGQzNDc1N2Y4ZWQ0ZGJhYzI0MzI5ZDYyY2FmNTQyNTk5ZmYzNGM4
ZC4uMjVlZTIyYWFkYmMwYzkxYWI4YjdjMjlhNTdiMjdhMWQwMTgwOWViNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCkBAIC01Niw2ICs1Niw3IEBAIGNsYXNzIEF1ZGlvVHJhY2s7CiBj
bGFzcyBCYXNlQXVkaW9Db250ZXh0OwogY2xhc3MgQmxvYjsKIGNsYXNzIENhY2hlU3RvcmFnZUNv
bm5lY3Rpb247CitjbGFzcyBDYXB0aW9uVXNlclByZWZlcmVuY2VzVGVzdGluZ01vZGVUb2tlbjsK
IGNsYXNzIERPTVBvaW50UmVhZE9ubHk7CiBjbGFzcyBET01SZWN0OwogY2xhc3MgRE9NUmVjdExp
c3Q7CkBAIC0xMjYyLDYgKzEyNjMsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNRURJQV9TRVNT
SU9OX0NPT1JESU5BVE9SKQogICAgIFJlZlB0cjxNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I+
IG1fbW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yOwogI2VuZGlmCisjaWYgRU5BQkxFKFZJREVP
KQorICAgIHN0ZDo6dW5pcXVlX3B0cjxDYXB0aW9uVXNlclByZWZlcmVuY2VzVGVzdGluZ01vZGVU
b2tlbj4gbV90ZXN0aW5nTW9kZVRva2VuOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggNjIxMGY1YTMzMTY3MzQ0NGNlMTM1MjNhYmMyMDMyMDNjMmNiNTQ5Zi4u
ZDQyMDI3MjQ4OTJmODJlMTRkOWMyN2MxYmE5ZjlkMGNjMzg0NmIzNyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIwIEBACisyMDIxLTEyLTA2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisg
ICAgICAgIFtWVFRdIEZpeCB2YXJpb3VzIGlzc3VlcyB3aXRoIGNvbXBsaWNhdGVkIHJlbmRlcmlu
ZyBvZiBWVFQgY3VlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMzOTAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAg
ICAgICogbWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L25vLXNuYXAtdG8tbGluZXMtb3Zlcmxh
cC52dHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zbmFw
LXRvLWxpbmVzLWlubGluZS1zdHlsZS52dHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3RyYWNr
L2NhcHRpb25zLXdlYnZ0dC9zbmFwLXRvLWxpbmVzLWxlZnQtYW5kLXJpZ2h0LnZ0dDogQWRkZWQu
CisgICAgICAgICogbWVkaWEvdHJhY2svdHJhY2std2VidnR0LW5vLXNuYXAtdG8tbGluZXMtb3Zl
cmxhcC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay13
ZWJ2dHQtbm8tc25hcC10by1saW5lcy1vdmVybGFwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1l
ZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRvLWxpbmVzLWlubGluZS1zdHlsZS1leHBlY3Rl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay13ZWJ2dHQtc25hcC10
by1saW5lcy1pbmxpbmUtc3R5bGUuaHRtbDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdHJhY2sv
dHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMtbGVmdC1yaWdodC1leHBlY3RlZC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay13ZWJ2dHQtc25hcC10by1saW5lcy1sZWZ0
LXJpZ2h0Lmh0bWw6IEFkZGVkLgorCiAyMDIxLTEyLTAzICBTZXJnaW8gVmlsbGFyIFNlbmluICA8
c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjc3MtZmxleGJveF0gQWNjb3VudCBmb3Ig
Y2FwdGlvbnMgd2hlbiBmbGV4aW5nIHRhYmxlcyB3aXRoIHNwZWNpZmllZCBzaXplcwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L25vLXNuYXAtdG8t
bGluZXMtb3ZlcmxhcC52dHQgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2
dHQvbm8tc25hcC10by1saW5lcy1vdmVybGFwLnZ0dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zN2Y2ZjQ0ZjRkOWE3
ZTEyZDBjNmVkZmRlMmJhZTgxNDRlOWJlMjg1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L25vLXNuYXAtdG8tbGluZXMtb3ZlcmxhcC52
dHQKQEAgLTAsMCArMSwzMyBAQAorV0VCVlRUCisKKzEKKzAwOjAwOjAwLjAwMCAtLT4gMDA6MDA6
MDAuNTAwIGFsaWduOmxlZnQgbGluZTowJQorTGVmdAorCisyCiswMDowMDowMC4wMDAgLS0+IDAw
OjAwOjAwLjUwMCBhbGlnbjpyaWdodCBsaW5lOjAlCitSaWdodAorCiszCiswMDowMDowMC4wMDAg
LS0+IDAwOjAwOjAwLjUwMCBhbGlnbjpsZWZ0IGxpbmU6MCUKK0JlbG93CisKKzQKKzAwOjAwOjAw
LjAwMCAtLT4gMDA6MDA6MDAuNTAwIGFsaWduOnJpZ2h0IGxpbmU6MCUKK0JlbG93CisKKzEKKzAw
OjAwOjAwLjAwMCAtLT4gMDA6MDA6MDAuNTAwIGFsaWduOmxlZnQgbGluZToxMDAlCitMZWZ0CisK
KzIKKzAwOjAwOjAwLjAwMCAtLT4gMDA6MDA6MDAuNTAwIGFsaWduOnJpZ2h0IGxpbmU6MTAwJQor
UmlnaHQKKworMworMDA6MDA6MDAuMDAwIC0tPiAwMDowMDowMC41MDAgYWxpZ246bGVmdCBsaW5l
OjEwMCUKK0Fib3ZlCisKKzQKKzAwOjAwOjAwLjAwMCAtLT4gMDA6MDA6MDAuNTAwIGFsaWduOnJp
Z2h0IGxpbmU6MTAwJQorQWJvdmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNr
L2NhcHRpb25zLXdlYnZ0dC9zbmFwLXRvLWxpbmVzLWlubGluZS1zdHlsZS52dHQgYi9MYXlvdXRU
ZXN0cy9tZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvc25hcC10by1saW5lcy1pbmxpbmUtc3R5
bGUudnR0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmNmYzU2NTZhNDFiODllY2E4MDE1MTE3NGE1NDgwMjQzZjY2MWYz
NTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9jYXB0aW9ucy13
ZWJ2dHQvc25hcC10by1saW5lcy1pbmxpbmUtc3R5bGUudnR0CkBAIC0wLDAgKzEsMjAgQEAKK1dF
QlZUVAorCitTVFlMRQorOjpjdWUoLmRvdWJsZUhlaWdodCkgeyBmb250LXNpemU6IDIwMCU7IGJh
Y2tncm91bmQtY29sb3I6IGJsYWNrIH0KKworMQorMDA6MDA6MDAuMDAwIC0tPiAwMDowMDowMC41
MDAgYWxpZ246bGVmdAorPGMuZG91YmxlSGVpZ2h0PkxlZnQ8L2M+CisKKzIKKzAwOjAwOjAwLjAw
MCAtLT4gMDA6MDA6MDAuNTAwIGFsaWduOnJpZ2h0IHBvc2l0aW9uOjEwMCUKKzxjLmRvdWJsZUhl
aWdodD5SaWdodDwvYz4KKworMworMDA6MDA6MDAuMDAwIC0tPiAwMDowMDowMC41MDAgYWxpZ246
bGVmdAorPGMuZG91YmxlSGVpZ2h0PkFib3ZlPC9jPgorCis0CiswMDowMDowMC4wMDAgLS0+IDAw
OjAwOjAwLjUwMCBhbGlnbjpyaWdodCBwb3NpdGlvbjoxMDAlCis8Yy5kb3VibGVIZWlnaHQ+QWJv
dmU8L2M+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2
dHQvc25hcC10by1saW5lcy1sZWZ0LWFuZC1yaWdodC52dHQgYi9MYXlvdXRUZXN0cy9tZWRpYS90
cmFjay9jYXB0aW9ucy13ZWJ2dHQvc25hcC10by1saW5lcy1sZWZ0LWFuZC1yaWdodC52dHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzA5NjllMGRkYjE1NmNiM2Y2NDE0NjcyZDMyNjE0YTljZTllMGJjZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zbmFw
LXRvLWxpbmVzLWxlZnQtYW5kLXJpZ2h0LnZ0dApAQCAtMCwwICsxLDE3IEBACitXRUJWVFQKKwor
MQorMDA6MDA6MDAuMDAwIC0tPiAwMDowMDowMC41MDAgYWxpZ246bGVmdAorTGVmdAorCisyCisw
MDowMDowMC4wMDAgLS0+IDAwOjAwOjAwLjUwMCBhbGlnbjpyaWdodCBwb3NpdGlvbjoxMDAlCitS
aWdodAorCiszCiswMDowMDowMC4wMDAgLS0+IDAwOjAwOjAwLjUwMCBhbGlnbjpsZWZ0CitBYm92
ZQorCis0CiswMDowMDowMC4wMDAgLS0+IDAwOjAwOjAwLjUwMCBhbGlnbjpyaWdodCBwb3NpdGlv
bjoxMDAlCitBYm92ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2st
d2VidnR0LW5vLXNuYXAtdG8tbGluZXMtb3ZlcmxhcC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVz
dHMvbWVkaWEvdHJhY2svdHJhY2std2VidnR0LW5vLXNuYXAtdG8tbGluZXMtb3ZlcmxhcC1leHBl
Y3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3N2I1NTM2NGUwOThlMDM1N2ExODFkODBkN2IzMDQzMDYx
YmYzMDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay13
ZWJ2dHQtbm8tc25hcC10by1saW5lcy1vdmVybGFwLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSw1
OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT50cmFjay13
ZWJ2dHQtbm8tc25hcC10by1saW5lcy1vdmVybGFwPC90aXRsZT4KKyAgICA8c3R5bGU+CisgICAg
ICAgIC52aWRlbyB7IAorICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAg
ICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICAgICAgd2lkdGg6IDMyMHB4OworICAg
ICAgICAgICAgaGVpZ2h0OiAyNDBweDsKKyAgICAgICAgfQorICAgICAgICBodG1sIHsgb3ZlcmZs
b3c6aGlkZGVuIH0KKyAgICAgICAgYm9keSB7IG1hcmdpbjowIH0KKyAgICAgICAgLmN1ZS1ib3gg
eworICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICAgICAgZm9udC1zaXpl
OiAxMnB4OworICAgICAgICB9CisgICAgICAgIC5jdWUgeworICAgICAgICAgICAgZm9udC1mYW1p
bHk6IEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFj
azsKKyAgICAgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+Cisg
ICAgPHNjcmlwdD52YXIgcmVxdWlyZVBpeGVsRHVtcCA9IHRydWU7PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIu
Li9tZWRpYS1maWxlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIHdpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCdsb2FkJywgYXN5bmMgZXZlbnQgPT4geworICAgICAgICBjb25zb2xlV3Jp
dGUoJ1JVTih2aWRlby5xdWVyeVNlbGVjdG9yKCJ0cmFjayIpLnNyYyA9ICJjYXB0aW9ucy13ZWJ2
dHQvbm8tc25hcC10by1saW5lcy1vdmVybGFwLnZ0dCIpJyk7CisgICAgICAgIGNvbnNvbGVXcml0
ZSgnUlVOKHZpZGVvLnRleHRUcmFja3NbMF0ubW9kZSA9ICJzaG93aW5nIiknKTsKKyAgICAgICAg
Y29uc29sZVdyaXRlKCdFVkVOVChsb2FkKScpOworICAgICAgICBjb25zb2xlV3JpdGUoJ1JVTih2
aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJ3M2MvdHJhY2svd2VidnR0L21lZGlh
L3doaXRlIikpJyk7CisgICAgICAgIGNvbnNvbGVXcml0ZSgnRVZFTlQoY2FucGxheXRocm91Z2gp
Jyk7CisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9KTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorICAgIDxkaXYgY2xhc3M9InZpZGVvIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY3Vl
LWJveCIgc3R5bGU9ImxlZnQ6MDsgdG9wOjA7IHRleHQtYWxpZ246IGxlZnQ7Ij4KKyAgICAgICAg
ICAgIDxzcGFuIGNsYXNzPSJjdWUiPkxlZnQ8L3NwYW4+PGJyPgorICAgICAgICAgICAgPHNwYW4g
Y2xhc3M9ImN1ZSI+QmVsb3c8L3NwYW4+CisgICAgICAgIDwvZGl2PgorICAgICAgICA8ZGl2IGNs
YXNzPSJjdWUtYm94IiBzdHlsZT0icmlnaHQ6MDsgdG9wOjA7IHRleHQtYWxpZ246IHJpZ2h0Ij4K
KyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjdWUiPlJpZ2h0PC9zcGFuPjxicj4KKyAgICAgICAg
ICAgIDxzcGFuIGNsYXNzPSJjdWUiPkJlbG93PC9zcGFuPgorICAgICAgICA8L2Rpdj4KKyAgICAg
ICAgPGRpdiBjbGFzcz0iY3VlLWJveCIgc3R5bGU9ImxlZnQ6MDsgYm90dG9tOjA7IHRleHQtYWxp
Z246IGxlZnQiPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImN1ZSI+QWJvdmU8L3NwYW4+PGJy
PgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImN1ZSI+TGVmdDwvc3Bhbj4KKyAgICAgICAgPC9k
aXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImN1ZS1ib3giIHN0eWxlPSJyaWdodDowOyBib3R0b206
MDsgdGV4dC1hbGlnbjogcmlnaHQiPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImN1ZSI+QWJv
dmU8L3NwYW4+PGJyPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImN1ZSI+UmlnaHQ8L3NwYW4+
CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3Ry
YWNrLXdlYnZ0dC1uby1zbmFwLXRvLWxpbmVzLW92ZXJsYXAuaHRtbCBiL0xheW91dFRlc3RzL21l
ZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1uby1zbmFwLXRvLWxpbmVzLW92ZXJsYXAuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xYWY0YjIwNmVhOTBjYjgwNzAxZTdjNmEyOTZmZjk3Njg1ZmIwNTAxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2std2VidnR0LW5vLXNuYXAt
dG8tbGluZXMtb3ZlcmxhcC5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+dHJhY2std2VidnR0LW5vLXNuYXAtdG8tbGluZXMt
b3ZlcmxhcDwvdGl0bGU+CisgICAgPHN0eWxlPgorICAgICAgICBodG1sIHsgb3ZlcmZsb3c6aGlk
ZGVuIH0KKyAgICAgICAgYm9keSB7IG1hcmdpbjowIH0KKyAgICAgICAgOjpjdWUgeworICAgICAg
ICAgICAgZm9udC1mYW1pbHk6IEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgICAgICBmb250LXNp
emU6IDEycHg7CisgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsKKyAgICAgICAg
ICAgIGNvbG9yOiBncmVlbjsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdD52
YXIgcmVxdWlyZVBpeGVsRHVtcCA9IHRydWU7PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4u
L3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9tZWRpYS1maWxl
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVy
KCdsb2FkJywgYXN5bmMgZXZlbnQgPT4geworICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisK
KyAgICAgICAgcnVuKGB2aWRlby5xdWVyeVNlbGVjdG9yKCJ0cmFjayIpLnNyYyA9ICJjYXB0aW9u
cy13ZWJ2dHQvbm8tc25hcC10by1saW5lcy1vdmVybGFwLnZ0dCJgKTsKKyAgICAgICAgcnVuKGB2
aWRlby50ZXh0VHJhY2tzWzBdLm1vZGUgPSAic2hvd2luZyJgKTsKKyAgICAgICAgYXdhaXQgd2Fp
dEZvcih2aWRlby5xdWVyeVNlbGVjdG9yKCd0cmFjaycpLCAnbG9hZCcpOworCisgICAgICAgIHJ1
bihgdmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAidzNjL3RyYWNrL3dlYnZ0dC9t
ZWRpYS93aGl0ZSIpYCk7CisgICAgICAgIGF3YWl0IHdhaXRGb3IodmlkZW8sICdjYW5wbGF5dGhy
b3VnaCcpOworCisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9KTsKKyAgICA8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorICAgIDx2aWRlbz4KKyAgICAgICAgPHRyYWNrIGlkPSJ0ZXN0VHJhY2si
IGtpbmQ9ImNhcHRpb25zIiBkZWZhdWx0PgorICAgIDwvdmlkZW8+Cis8L2JvZHk+Cis8L2h0bWw+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVk
aWEvdHJhY2svdHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMtaW5saW5lLXN0eWxlLWV4cGVjdGVk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay13ZWJ2dHQtc25hcC10by1saW5l
cy1pbmxpbmUtc3R5bGUtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ODk4ZTVmY2MxNGYzYjVh
NDcxMDE1MDdkYmE3ZDU1MzUzNzYxNjVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
bWVkaWEvdHJhY2svdHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMtaW5saW5lLXN0eWxlLWV4cGVj
dGVkLmh0bWwKQEAgLTAsMCArMSw1MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorICAgIDx0aXRsZT50cmFjay13ZWJ2dHQtc25hcC10by1saW5lcy1pbmxpbmUtc3R5bGU8L3Rp
dGxlPgorICAgIDxzdHlsZT4KKyAgICAgICAgLnZpZGVvIHsgCisgICAgICAgICAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICAg
ICAgICB3aWR0aDogMzIwcHg7CisgICAgICAgICAgICBoZWlnaHQ6IDI0MHB4OworICAgICAgICB9
CisgICAgICAgIGh0bWwgeyBvdmVyZmxvdzpoaWRkZW4gfQorICAgICAgICBib2R5IHsgbWFyZ2lu
OjAgfQorICAgICAgICAuY3VlLWJveCB7CisgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7
CisgICAgICAgIH0KKyAgICAgICAgLmN1ZSB7CisgICAgICAgICAgICBmb250LWZhbWlseTogQWhl
bSwgc2Fucy1zZXJpZjsKKyAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrOworICAg
ICAgICAgICAgY29sb3I6IGdyZWVuOworICAgICAgICAgICAgZm9udC1zaXplOiAyNHB4OworICAg
ICAgICB9CisgICAgPC9zdHlsZT4KKyAgICA8c2NyaXB0PnZhciByZXF1aXJlUGl4ZWxEdW1wID0g
dHJ1ZTs8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQ+CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBhc3luYyBldmVudCA9
PiB7CisgICAgICAgIGNvbnNvbGVXcml0ZSgnUlVOKHZpZGVvLnF1ZXJ5U2VsZWN0b3IoInRyYWNr
Iikuc3JjID0gImNhcHRpb25zLXdlYnZ0dC9zbmFwLXRvLWxpbmVzLWlubGluZS1zdHlsZS52dHQi
KScpOworICAgICAgICBjb25zb2xlV3JpdGUoJ1JVTih2aWRlby50ZXh0VHJhY2tzWzBdLm1vZGUg
PSAic2hvd2luZyIpJyk7CisgICAgICAgIGNvbnNvbGVXcml0ZSgnRVZFTlQobG9hZCknKTsKKyAg
ICAgICAgY29uc29sZVdyaXRlKCdSVU4odmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8i
LCAidzNjL3RyYWNrL3dlYnZ0dC9tZWRpYS93aGl0ZSIpKScpOworICAgICAgICBjb25zb2xlV3Jp
dGUoJ0VWRU5UKGNhbnBsYXl0aHJvdWdoKScpOworICAgICAgICBlbmRUZXN0KCk7CisgICAgfSk7
CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGNsYXNzPSJ2aWRlbyI+
CisgICAgICAgIDxkaXYgY2xhc3M9ImN1ZS1ib3giIHN0eWxlPSJsZWZ0OjA7IGJvdHRvbTowOyB0
ZXh0LWFsaWduOiBsZWZ0Ij4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjdWUiPkFib3ZlPC9z
cGFuPjxicj4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjdWUiPkxlZnQ8L3NwYW4+CisgICAg
ICAgIDwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJjdWUtYm94IiBzdHlsZT0icmlnaHQ6MDsg
Ym90dG9tOjA7IHRleHQtYWxpZ246IHJpZ2h0Ij4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJj
dWUiPkFib3ZlPC9zcGFuPjxicj4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjdWUiPlJpZ2h0
PC9zcGFuPgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90
cmFjay90cmFjay13ZWJ2dHQtc25hcC10by1saW5lcy1pbmxpbmUtc3R5bGUuaHRtbCBiL0xheW91
dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRvLWxpbmVzLWlubGluZS1zdHls
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE3YzFjMzM0NGMyM2RhMTkxZmM5MGI4NzQwNzk4MDQzM2RlMzRk
MzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay13ZWJ2
dHQtc25hcC10by1saW5lcy1pbmxpbmUtc3R5bGUuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPnRyYWNrLXdlYnZ0dC1zbmFw
LXRvLWxpbmVzLWlubGluZS1zdHlsZTwvdGl0bGU+CisgICAgPHN0eWxlPgorICAgICAgICBodG1s
IHsgb3ZlcmZsb3c6aGlkZGVuIH0KKyAgICAgICAgYm9keSB7IG1hcmdpbjowIH0KKyAgICAgICAg
OjpjdWUgeworICAgICAgICAgICAgZm9udC1mYW1pbHk6IEFoZW0sIHNhbnMtc2VyaWY7CisgICAg
ICAgICAgICBmb250LXNpemU6IDEycHg7CisgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBi
bGFjazsKKyAgICAgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+
CisgICAgPHNjcmlwdD52YXIgcmVxdWlyZVBpeGVsRHVtcCA9IHRydWU7PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSIuLi9tZWRpYS1maWxlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIHdpbmRvdy5h
ZGRFdmVudExpc3RlbmVyKCdsb2FkJywgYXN5bmMgZXZlbnQgPT4geworICAgICAgICBmaW5kTWVk
aWFFbGVtZW50KCk7CisKKyAgICAgICAgcnVuKGB2aWRlby5xdWVyeVNlbGVjdG9yKCJ0cmFjayIp
LnNyYyA9ICJjYXB0aW9ucy13ZWJ2dHQvc25hcC10by1saW5lcy1pbmxpbmUtc3R5bGUudnR0ImAp
OworICAgICAgICBydW4oYHZpZGVvLnRleHRUcmFja3NbMF0ubW9kZSA9ICJzaG93aW5nImApOwor
ICAgICAgICBhd2FpdCB3YWl0Rm9yKHZpZGVvLnF1ZXJ5U2VsZWN0b3IoJ3RyYWNrJyksICdsb2Fk
Jyk7CisKKyAgICAgICAgcnVuKGB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJ3
M2MvdHJhY2svd2VidnR0L21lZGlhL3doaXRlIilgKTsKKyAgICAgICAgYXdhaXQgd2FpdEZvcih2
aWRlbywgJ2NhbnBsYXl0aHJvdWdoJyk7CisKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0pOwor
ICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHZpZGVvPgorICAgICAgICA8dHJh
Y2sgaWQ9InRlc3RUcmFjayIgc3JjPSJjYXB0aW9ucy13ZWJ2dHQvc25hcC10by1saW5lcy1pbmxp
bmUtc3R5bGUudnR0IiBraW5kPSJjYXB0aW9ucyIgZGVmYXVsdD4KKyAgICA8L3ZpZGVvPgorPC9i
b2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRvLWxpbmVzLWxlZnQtcmln
aHQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1z
bmFwLXRvLWxpbmVzLWxlZnQtcmlnaHQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTRmYzBi
ZGY3MzE1ZGUwMTBiOTQ4M2VjNDkyYmMyNTRjOGRiODk5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMtbGVmdC1yaWdo
dC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsNTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKyAgICA8dGl0bGU+dHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMtbGVmdC1yaWdo
dDwvdGl0bGU+CisgICAgPHN0eWxlPgorICAgICAgICAudmlkZW8geyAKKyAgICAgICAgICAgIGRp
c3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAg
ICAgICAgICAgIHdpZHRoOiAzMjBweDsKKyAgICAgICAgICAgIGhlaWdodDogMjQwcHg7CisgICAg
ICAgIH0KKyAgICAgICAgaHRtbCB7IG92ZXJmbG93OmhpZGRlbiB9CisgICAgICAgIGJvZHkgeyBt
YXJnaW46MCB9CisgICAgICAgIC5jdWUtYm94IHsKKyAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKKyAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsKKyAgICAgICAgfQorICAgICAgICAu
Y3VlIHsKKyAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBBaGVtLCBzYW5zLXNlcmlmOworICAgICAg
ICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7CisgICAgICAgICAgICBjb2xvcjogZ3JlZW47
CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQ+dmFyIHJlcXVpcmVQaXhlbER1
bXAgPSB0cnVlOzwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0LmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vbWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdD4KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGFzeW5jIGV2
ZW50ID0+IHsKKyAgICAgICAgY29uc29sZVdyaXRlKCdSVU4odmlkZW8ucXVlcnlTZWxlY3Rvcigi
dHJhY2siKS5zcmMgPSAiY2FwdGlvbnMtd2VidnR0L3NuYXAtdG8tbGluZXMtbGVmdC1hbmQtcmln
aHQudnR0IiknKTsKKyAgICAgICAgY29uc29sZVdyaXRlKCdSVU4odmlkZW8udGV4dFRyYWNrc1sw
XS5tb2RlID0gInNob3dpbmciKScpOworICAgICAgICBjb25zb2xlV3JpdGUoJ0VWRU5UKGxvYWQp
Jyk7CisgICAgICAgIGNvbnNvbGVXcml0ZSgnUlVOKHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUo
InZpZGVvIiwgInczYy90cmFjay93ZWJ2dHQvbWVkaWEvd2hpdGUiKSknKTsKKyAgICAgICAgY29u
c29sZVdyaXRlKCdFVkVOVChjYW5wbGF5dGhyb3VnaCknKTsKKyAgICAgICAgZW5kVGVzdCgpOwor
ICAgIH0pOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBjbGFzcz0i
dmlkZW8iPgorICAgICAgICA8ZGl2IGNsYXNzPSJjdWUtYm94IiBzdHlsZT0ibGVmdDowOyBib3R0
b206MDsgdGV4dC1hbGlnbjogbGVmdCI+CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3VlIj5B
Ym92ZTwvc3Bhbj48YnI+CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3VlIj5MZWZ0PC9zcGFu
PgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY3VlLWJveCIgc3R5bGU9InJp
Z2h0OjA7IGJvdHRvbTowOyB0ZXh0LWFsaWduOiByaWdodCI+CisgICAgICAgICAgICA8c3BhbiBj
bGFzcz0iY3VlIj5BYm92ZTwvc3Bhbj48YnI+CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3Vl
Ij5SaWdodDwvc3Bhbj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
bWVkaWEvdHJhY2svdHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMtbGVmdC1yaWdodC5odG1sIGIv
TGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMtbGVmdC1y
aWdodC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5ODk3ZGZlNTMwMDdiMzQwMThmYmNmOGY1YjczNGJmMzdj
YzJiMWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay13
ZWJ2dHQtc25hcC10by1saW5lcy1sZWZ0LXJpZ2h0Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT50cmFjay13ZWJ2dHQtc25h
cC10by1saW5lcy1sZWZ0LXJpZ2h0PC90aXRsZT4KKyAgICA8c3R5bGU+CisgICAgICAgIGh0bWwg
eyBvdmVyZmxvdzpoaWRkZW4gfQorICAgICAgICBib2R5IHsgbWFyZ2luOjAgfQorICAgICAgICA6
OmN1ZSB7CisgICAgICAgICAgICBmb250LWZhbWlseTogQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAg
ICAgICAgIGZvbnQtc2l6ZTogMTJweDsKKyAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJs
YWNrOworICAgICAgICAgICAgY29sb3I6IGdyZWVuOworICAgICAgICB9CisgICAgPC9zdHlsZT4K
KyAgICA8c2NyaXB0PnZhciByZXF1aXJlUGl4ZWxEdW1wID0gdHJ1ZTs8L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
Ii4uL21lZGlhLWZpbGUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgd2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBhc3luYyBldmVudCA9PiB7CisgICAgICAgIGZpbmRNZWRp
YUVsZW1lbnQoKTsKKworICAgICAgICBydW4oYHZpZGVvLnF1ZXJ5U2VsZWN0b3IoInRyYWNrIiku
c3JjID0gImNhcHRpb25zLXdlYnZ0dC9zbmFwLXRvLWxpbmVzLWxlZnQtYW5kLXJpZ2h0LnZ0dCJg
KTsKKyAgICAgICAgcnVuKGB2aWRlby50ZXh0VHJhY2tzWzBdLm1vZGUgPSAic2hvd2luZyJgKTsK
KyAgICAgICAgYXdhaXQgd2FpdEZvcih2aWRlby5xdWVyeVNlbGVjdG9yKCd0cmFjaycpLCAnbG9h
ZCcpOworCisgICAgICAgIHJ1bihgdmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAi
dzNjL3RyYWNrL3dlYnZ0dC9tZWRpYS93aGl0ZSIpYCk7CisgICAgICAgIGF3YWl0IHdhaXRGb3Io
dmlkZW8sICdjYW5wbGF5dGhyb3VnaCcpOworCisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9KTsK
KyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDx2aWRlbz4KKyAgICAgICAgPHRy
YWNrIGlkPSJ0ZXN0VHJhY2siIGtpbmQ9ImNhcHRpb25zIiBkZWZhdWx0PgorICAgIDwvdmlkZW8+
Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>
<flag name="commit-queue"
          id="471713"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446385</attachid>
            <date>2021-12-08 10:46:33 -0800</date>
            <delta_ts>2021-12-08 15:01:08 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-233901-20211208104632.patch</filename>
            <type>text/plain</type>
            <size>48199</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDkwNjM1N2I0MDk4YjJj
MjA3N2ZjMzFmNmNmMTUzYjEyOTA0OWMwZS4uNjg5MjMwYWUwNjljYmJmNmViOTJjZGU0MWQyMGYy
ODFkYzdjNjMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIxLTEyLTA2ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtWVFRdIEZpeCB2YXJpb3Vz
IGlzc3VlcyB3aXRoIGNvbXBsaWNhdGVkIHJlbmRlcmluZyBvZiBWVFQgY3VlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzOTAxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgIFRlc3RzOiBtZWRpYS90cmFjay90
cmFjay13ZWJ2dHQtbm8tc25hcC10by1saW5lcy1vdmVybGFwLmh0bWwKKyAgICAgICAgICAgICAg
IG1lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRvLWxpbmVzLWlubGluZS1zdHlsZS5odG1s
CisgICAgICAgICAgICAgICBtZWRpYS90cmFjay90cmFjay13ZWJ2dHQtc25hcC10by1saW5lcy1s
ZWZ0LXJpZ2h0Lmh0bWwKKworICAgICAgICBXaGVuIHBvc2l0aW9uaW5nIFZUVCBjdWVzLCB0aGUg
c3BlYyByZXF1aXJlcyBVQXMgdG8gYXZvaWQgY29sbGlzaW9ucyBiZXR3ZWVuIGN1ZXMKKyAgICAg
ICAgYnkgZGV0ZWN0aW5nIHRoYXQgdHdvIGN1ZXMgb3ZlcmxhcCBlYWNoIG90aGVyLiBIb3dldmVy
LCBXZWJLaXQncyBpbXBsZW1lbnRhdGlvbgorICAgICAgICBsb29rcyBmb3IgY29sbGlzaW9ucyBi
ZXR3ZWVuIG5vbi1kaXNwbGF5aW5nIHBvcnRpb25zIG9mIHRoZSBjdWVzOyBuYW1lbHkgdGhlIAor
ICAgICAgICA6Oi13ZWJraXQtbWVkaWEtdGV4dC10cmFjay1kaXNwbGF5IGVsZW1lbnQsIHdoaWNo
IGlzIHVzZWQgdG8gcG9zaXRpb24gdGhlIGRpc3BsYXlpbmcKKyAgICAgICAgcG9ydGlvbiBvZiB0
aGUgY3VlLiBJbnN0ZWFkLCB0aGUgVUEgc2hvdWxkIGxvb2sgZm9yIGNvbGxpc2lvbnMgYmV0d2Vl
biB0aGUgCisgICAgICAgIDo6LXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWRpc3BsYXktYmFja2Ry
b3AgZWxlbWVudCwgd2hpY2ggaG9sZHMgdGhlIGJhY2tncm91bmQKKyAgICAgICAgb2YgdGhlIGN1
ZSwgaWYgcHJlc2VudC4KKworICAgICAgICBBZGQgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0byBy
ZXRyaWV2ZSB0aGUgYmFja2Ryb3AgZWxlbWVudCwgYW5kIGFub3RoZXIgdG8gcmV0cmlldmUKKyAg
ICAgICAgdGhlIGN1ZSBpdHNlbGYuCisKKyAgICAgICAgQWRkIGNhc3QgbWFjcm9zIGZvciBSZW5k
ZXJWVFRDdWUgdG8gYWxsb3cgZG93bmNhc3Q8PmluZy4gVXNlIHRoaXMgbWFjcm8gdG8gcmV0cmll
dmUKKyAgICAgICAgb3RoZXIgY3VlcydzIGJhY2tkcm9wIGVsZW1lbnRzIGZvciBjb2xsaXNpb24g
YXZvaWRhbmNlLgorCisgICAgICAgIFZUVEN1ZUJveDo6YXBwbHlDU1NQcm9wZXJ0aWVzKCkgaGFk
IGEgc2VjdGlvbiBmb3IgbW92aW5nIGN1ZXMgaW50byBwbGFjZSB0aGF0IGlzIGVudGlyZWx5Cisg
ICAgICAgIHVubmVlZGVkIGlmIFZUVEN1ZTo6Z2V0Q1NTUG9zaXRpb24oKSByZXR1cm5zIHRoZSBw
cmUtY2FsY3VsYXRlZCBtX2Rpc3BsYXlQb3NpdGlvbi4KKworICAgICAgICBSZW5kZXJWVFRDdWU6
OmluaXRpYWxpemVMYXlvdXRQYXJhbWV0ZXJzKCkgaXMgYSBjYXJlZnVsIGltcGxlbWVudGF0aW9u
IG9mIHRoZSBzcGVjaWZpY2F0aW9uLAorICAgICAgICBhY2N1cmF0ZWx5IGxheW91dCBvdXQgY3Vl
cycgaW5pdGlhbCBwb3NpdGlvbiBzbyB0aGF0IHRoZSB0ZXh0IHJ1biBpcyBleGFjdGx5IGF0IHRo
ZQorICAgICAgICBib3R0b20gb2YgdGhlIGNvbnRlbnQgYm94LiBIb3dldmVyLCBpZiB0aGUgY3Vl
IGhhcyBhIGJvcmRlciwgcGFkZGluZywgb3IgZXh0cmEgaGVpZ2h0LAorICAgICAgICB0aGlzIHdp
bGwgcmVzdWx0IGluIHRoZSBjdWUgYmVpbmcgcHVzaGVkIG91dHNpZGUgdGhlIGNvbnRlbnQgYm94
LiBUbyBhY2NvdW50IGZvciB0aGlzLAorICAgICAgICBhZGp1c3QgdGhlIGluaXRhbCBsYXlvdXQg
cGFyYW1ldGVyIGJ5IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGN1ZSB0ZXh0IHNpemUgYW5k
IHRoZQorICAgICAgICBiYWNrZHJvcCBlbGVtZW50IHNpemUuCisKKyAgICAgICAgUmVuZGVyVlRU
Q3VlOjpsYXlvdXQoKSB3aWxsIGNyZWF0ZSBhIExheW91dFN0YXRlTWFpbnRhaW5lciwgd2hpY2gg
bW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mCisgICAgICAgIGxheW91dCBtYWNoaW5lcnkgZHVyaW5n
IHRoZSBsYXlvdXQgaXRzZWxmLiBIb3dldmVyLCBjZXJ0YWluIGNoaWxkIHJlbmRlcmVycyBnZXQg
ZHJhbWF0aWNhbGx5CisgICAgICAgIGluY29ycmVjdCByZXN1bHRzIGZvciBhYnNvbHV0ZUJvdW5k
aW5nUmVjdCgpIHVubGVzcyB0aGUgbWFpbnRhaW5lciBleHBsaWNpdGx5IHNldHMgZGlzYWJsZVN0
YXRlLgorCisgICAgICAgICogaHRtbC90cmFjay9WVFRDdWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VlRUQ3VlQm94OjphcHBseUNTU1Byb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6VlRU
Q3VlOjpnZXRDU1NQb3NpdGlvbiBjb25zdCk6CisgICAgICAgICogaHRtbC90cmFjay9WVFRDdWUu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmlzUmVuZGVyVlRUQ3VlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVlRUQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZUVEN1ZTo6bGF5
b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZUVEN1ZTo6aW5pdGlhbGl6ZUxheW91dFBh
cmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVlRUQ3VlOjppc091dHNpZGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVlRUQ3VlOjpvdmVybGFwcGluZ09iamVjdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWVFRDdWU6Om92ZXJsYXBwaW5nT2JqZWN0
Rm9yUmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWVFRDdWU6Om1vdmVJZk5l
Y2Vzc2FyeVRvS2VlcFdpdGhpbkNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJW
VFRDdWU6OmZpbmROb25PdmVybGFwcGluZ1Bvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclZUVEN1ZTo6cmVwb3NpdGlvbkdlbmVyaWNDdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVlRUQ3VlOjpiYWNrZHJvcEJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJWVFRDdWU6OmN1ZUJveCBjb25zdCk6CisKIDIwMjEtMTItMDcgIEFudHRpIEtvaXZpc3Rv
ICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBtb3JlIHNwZWNpZmljIGtleXMgZm9y
IHBzZXVkby1jbGFzcyBpbnZhbGlkYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVlRUQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNw
cAppbmRleCA5NTdlYjhjNTgxNTEwM2YzNGU4ODEyMDcxMDQwMjZiNTMzOWQ2MDcyLi4wMDg4YmZh
ZTA5MzRjOWI0YWNmMGQwNDJlMTkyMDM1NDQ1MjBjMDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9WVFRDdWUuY3BwCkBAIC0xODYsMTQgKzE4NiwxNSBAQCB2b2lkIFZUVEN1ZUJveDo6YXBwbHlD
U1NQcm9wZXJ0aWVzKGNvbnN0IEludFNpemUmIHZpZGVvU2l6ZSkKICAgICAvLyB0aGUgJ3dyaXRp
bmctbW9kZScgcHJvcGVydHkgbXVzdCBiZSBzZXQgdG8gd3JpdGluZy1tb2RlCiAgICAgc2V0SW5s
aW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdyaXRpbmdNb2RlLCBjdWUtPmdldENTU1dyaXRp
bmdNb2RlKCksIGZhbHNlKTsKIAotICAgIGF1dG8gcG9zaXRpb24gPSBjdWUtPmdldENTU1Bvc2l0
aW9uKCk7CisgICAgYXV0byYgcG9zaXRpb24gPSBjdWUtPmdldENTU1Bvc2l0aW9uKCk7CiAKICAg
ICAvLyB0aGUgJ3RvcCcgcHJvcGVydHkgbXVzdCBiZSBzZXQgdG8gdG9wLAotICAgIHNldElubGlu
ZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUb3AsIHBvc2l0aW9uLnNlY29uZCwgQ1NTVW5pdFR5
cGU6OkNTU19QRVJDRU5UQUdFKTsKKyAgICBpZiAocG9zaXRpb24uc2Vjb25kKQorICAgICAgICBz
ZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VG9wLCAqcG9zaXRpb24uc2Vjb25kLCBD
U1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOwogCiAgICAgLy8gdGhlICdsZWZ0JyBwcm9wZXJ0
eSBtdXN0IGJlIHNldCB0byBsZWZ0Ci0gICAgaWYgKGN1ZS0+dmVydGljYWwoKSA9PSBob3Jpem9u
dGFsS2V5d29yZCgpKQotICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
TGVmdCwgcG9zaXRpb24uZmlyc3QsIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7CisgICAg
aWYgKGN1ZS0+dmVydGljYWwoKSA9PSBob3Jpem9udGFsS2V5d29yZCgpICYmIHBvc2l0aW9uLmZp
cnN0KQorICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5TGVmdCwgKnBv
c2l0aW9uLmZpcnN0LCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOwogICAgIGVsc2UgaWYg
KGN1ZS0+dmVydGljYWwoKSA9PSB2ZXJ0aWNhbEdyb3dpbmdSaWdodEtleXdvcmQoKSkgewogICAg
ICAgICAvLyBGSVhNRTogV2h5IHVzZSBjYWxjIHRvIGRvIHRoZSBtYXRoIGluc3RlYWQgb2YgZG9p
bmcgdGhlIHN1YnRyYWN0aW9uIGhlcmU/CiAgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHko
Q1NTUHJvcGVydHlMZWZ0LCBtYWtlU3RyaW5nKCJjYWxjKC0iLCB2aWRlb1NpemUud2lkdGgoKSwg
InB4IC0gIiwgY3VlLT5nZXRDU1NTaXplKCksICJweCkiKSk7CkBAIC0yMTksMTUgKzIyMCwxNSBA
QCB2b2lkIFZUVEN1ZUJveDo6YXBwbHlDU1NQcm9wZXJ0aWVzKGNvbnN0IEludFNpemUmIHZpZGVv
U2l6ZSkKICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwg
Q1NTVmFsdWVBdXRvKTsKICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eU1pbldpZHRoLCAibWluLWNvbnRlbnQiKTsKICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0
eShDU1NQcm9wZXJ0eU1heFdpZHRoLCBtYXhTaXplLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRB
R0UpOwotICAgICAgICBpZiAoKGFsaWdubWVudCA9PSBDU1NWYWx1ZU1pZGRsZSB8fCBhbGlnbm1l
bnQgPT0gQ1NTVmFsdWVDZW50ZXIpICYmIG11bHRpcGxpZXIgIT0gMS4wKQotICAgICAgICAgICAg
c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQsIHN0YXRpY19jYXN0PGRvdWJs
ZT4ocG9zaXRpb24uZmlyc3QgLSAobmV3Q3VlU2l6ZSAtIGN1ZS0+Z2V0Q1NTU2l6ZSgpKSAvIDIp
LCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOworICAgICAgICBpZiAoKGFsaWdubWVudCA9
PSBDU1NWYWx1ZU1pZGRsZSB8fCBhbGlnbm1lbnQgPT0gQ1NTVmFsdWVDZW50ZXIpICYmIG11bHRp
cGxpZXIgIT0gMS4wICYmIHBvc2l0aW9uLmZpcnN0KQorICAgICAgICAgICAgc2V0SW5saW5lU3R5
bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUxlZnQsIHN0YXRpY19jYXN0PGRvdWJsZT4oKnBvc2l0aW9u
LmZpcnN0IC0gKG5ld0N1ZVNpemUgLSBjdWUtPmdldENTU1NpemUoKSkgLyAyKSwgQ1NTVW5pdFR5
cGU6OkNTU19QRVJDRU5UQUdFKTsKICAgICB9IGVsc2UgewogICAgICAgICBzZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIENTU1ZhbHVlQXV0byk7CiAgICAgICAgIHNldElu
bGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQsIG5ld0N1ZVNpemUsIENTU1VuaXRU
eXBlOjpDU1NfUEVSQ0VOVEFHRSk7CiAgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NT
UHJvcGVydHlNaW5IZWlnaHQsICJtaW4tY29udGVudCIpOwogICAgICAgICBzZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5TWF4SGVpZ2h0LCBtYXhTaXplLCBDU1NVbml0VHlwZTo6Q1NT
X1BFUkNFTlRBR0UpOwotICAgICAgICBpZiAoKGFsaWdubWVudCA9PSBDU1NWYWx1ZU1pZGRsZSB8
fCBhbGlnbm1lbnQgPT0gQ1NTVmFsdWVDZW50ZXIpICYmIG11bHRpcGxpZXIgIT0gMS4wKQotICAg
ICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRvcCwgc3RhdGljX2Nh
c3Q8ZG91YmxlPihwb3NpdGlvbi5zZWNvbmQgLSAobmV3Q3VlU2l6ZSAtIGN1ZS0+Z2V0Q1NTU2l6
ZSgpKSAvIDIpLCBDU1NVbml0VHlwZTo6Q1NTX1BFUkNFTlRBR0UpOworICAgICAgICBpZiAoKGFs
aWdubWVudCA9PSBDU1NWYWx1ZU1pZGRsZSB8fCBhbGlnbm1lbnQgPT0gQ1NTVmFsdWVDZW50ZXIp
ICYmIG11bHRpcGxpZXIgIT0gMS4wICYmIHBvc2l0aW9uLnNlY29uZCkKKyAgICAgICAgICAgIHNl
dElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlUb3AsIHN0YXRpY19jYXN0PGRvdWJsZT4o
KnBvc2l0aW9uLnNlY29uZCAtIChuZXdDdWVTaXplIC0gY3VlLT5nZXRDU1NTaXplKCkpIC8gMiks
IENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7CiAgICAgfQogCiAgICAgLy8gVGhlICd0ZXh0
LWFsaWduJyBwcm9wZXJ0eSBvbiB0aGUgKHJvb3QpIExpc3Qgb2YgV2ViVlRUIE5vZGUgT2JqZWN0
cyBtdXN0CkBAIC0yMzYsMjEgKzIzNyw4IEBAIHZvaWQgVlRUQ3VlQm94OjphcHBseUNTU1Byb3Bl
cnRpZXMoY29uc3QgSW50U2l6ZSYgdmlkZW9TaXplKQogICAgIC8vIGFsaWdubWVudDoKICAgICBz
ZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBjdWUtPmdldENTU0Fs
aWdubWVudCgpKTsKICAgICAKLSAgICBpZiAoIWN1ZS0+c25hcFRvTGluZXMoKSkgewotICAgICAg
ICAvLyAxMC4xMy4xIFNldCB1cCB4IGFuZCB5OgotICAgICAgICAvLyBOb3RlOiB4IGFuZCB5IGFy
ZSBzZXQgdGhyb3VnaCB0aGUgQ1NTIGxlZnQgYW5kIHRvcCBhYm92ZS4KLQotICAgICAgICAvLyAx
MC4xMy4yIFBvc2l0aW9uIHRoZSBib3hlcyBpbiBib3hlcyBzdWNoIHRoYXQgdGhlIHBvaW50IHgl
IGFsb25nIHRoZQotICAgICAgICAvLyB3aWR0aCBvZiB0aGUgYm91bmRpbmcgYm94IG9mIHRoZSBi
b3hlcyBpbiBib3hlcyBpcyB4JSBvZiB0aGUgd2F5Ci0gICAgICAgIC8vIGFjcm9zcyB0aGUgd2lk
dGggb2YgdGhlIHZpZGVvJ3MgcmVuZGVyaW5nIGFyZWEsIGFuZCB0aGUgcG9pbnQgeSUKLSAgICAg
ICAgLy8gYWxvbmcgdGhlIGhlaWdodCBvZiB0aGUgYm91bmRpbmcgYm94IG9mIHRoZSBib3hlcyBp
biBib3hlcyBpcyB5JQotICAgICAgICAvLyBvZiB0aGUgd2F5IGFjcm9zcyB0aGUgaGVpZ2h0IG9m
IHRoZSB2aWRlbydzIHJlbmRlcmluZyBhcmVhLCB3aGlsZQotICAgICAgICAvLyBtYWludGFpbmlu
ZyB0aGUgcmVsYXRpdmUgcG9zaXRpb25zIG9mIHRoZSBib3hlcyBpbiBib3hlcyB0byBlYWNoCi0g
ICAgICAgIC8vIG90aGVyLgotICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3Bl
cnR5VHJhbnNmb3JtLCBtYWtlU3RyaW5nKCJ0cmFuc2xhdGUoIiwgLXBvc2l0aW9uLmZpcnN0LCAi
JSwgIiwgLXBvc2l0aW9uLnNlY29uZCwgIiUpIikpOwotCisgICAgaWYgKCFjdWUtPnNuYXBUb0xp
bmVzKCkpCiAgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlXaGl0ZVNw
YWNlLCBDU1NWYWx1ZVByZSk7Ci0gICAgfQogCiAgICAgLy8gTWFrZSBzdXJlIHNoYWRvdyBvciBz
dHJva2UgaXMgbm90IGNsaXBwZWQuCiAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eU92ZXJmbG93LCBDU1NWYWx1ZVZpc2libGUpOwpAQCAtMzg0LDI2ICszNzIsMjEgQEAgdm9p
ZCBWVFRDdWU6OnNldFNuYXBUb0xpbmVzKGJvb2wgdmFsdWUpCiAKIFZUVEN1ZTo6TGluZUFuZFBv
c2l0aW9uU2V0dGluZyBWVFRDdWU6OmxpbmUoKSBjb25zdAogewotICAgIGlmIChzdGQ6OmlzbmFu
KG1fbGluZVBvc2l0aW9uKSkKKyAgICBpZiAoIW1fbGluZVBvc2l0aW9uKQogICAgICAgICByZXR1
cm4gQXV0bzsKIAotICAgIHJldHVybiBtX2xpbmVQb3NpdGlvbjsKKyAgICByZXR1cm4gKm1fbGlu
ZVBvc2l0aW9uOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBWVFRDdWU6OnNldExpbmUoY29uc3Qg
TGluZUFuZFBvc2l0aW9uU2V0dGluZyYgcG9zaXRpb24pCiB7Ci0gICAgZG91YmxlIGxpbmVQb3Np
dGlvbiA9IDA7CisgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IGxpbmVQb3NpdGlvbjsKIAotICAg
IGlmIChzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPEF1dG9LZXl3b3JkPihwb3NpdGlvbikpIHsKLSAg
ICAgICAgaWYgKHN0ZDo6aXNuYW4obV9saW5lUG9zaXRpb24pKQotICAgICAgICAgICAgcmV0dXJu
IHsgfTsKLSAgICAgICAgbGluZVBvc2l0aW9uID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+
OjpxdWlldF9OYU4oKTsKLSAgICB9IGVsc2UgeworICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5h
dGl2ZTxBdXRvS2V5d29yZD4ocG9zaXRpb24pKQogICAgICAgICBsaW5lUG9zaXRpb24gPSBzdGQ6
OmdldDxkb3VibGU+KHBvc2l0aW9uKTsKIAotICAgICAgICBpZiAobV9saW5lUG9zaXRpb24gPT0g
bGluZVBvc2l0aW9uKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9CisgICAgaWYgKG1f
bGluZVBvc2l0aW9uID09IGxpbmVQb3NpdGlvbikKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAg
IHdpbGxDaGFuZ2UoKTsKICAgICBtX2xpbmVQb3NpdGlvbiA9IGxpbmVQb3NpdGlvbjsKQEAgLTQ1
Myw5ICs0MzYsOSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBWVFRDdWU6OnNldExpbmVBbGlnbihjb25z
dCBTdHJpbmcmIHZhbHVlKQogCiBWVFRDdWU6OkxpbmVBbmRQb3NpdGlvblNldHRpbmcgVlRUQ3Vl
Ojpwb3NpdGlvbigpIGNvbnN0CiB7Ci0gICAgaWYgKHRleHRQb3NpdGlvbklzQXV0bygpKQotICAg
ICAgICByZXR1cm4gQXV0bzsKLSAgICByZXR1cm4gbV90ZXh0UG9zaXRpb247CisgICAgaWYgKG1f
dGV4dFBvc2l0aW9uKQorICAgICAgICByZXR1cm4gKm1fdGV4dFBvc2l0aW9uOworICAgIHJldHVy
biBBdXRvOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBWVFRDdWU6OnNldFBvc2l0aW9uKGNvbnN0
IExpbmVBbmRQb3NpdGlvblNldHRpbmcmIHBvc2l0aW9uKQpAQCAtNDY1LDIzICs0NDgsMjAgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gVlRUQ3VlOjpzZXRQb3NpdGlvbihjb25zdCBMaW5lQW5kUG9zaXRp
b25TZXR0aW5nJiBwb3NpdGlvbikKICAgICAvLyBJbmRleFNpemVFcnJvciBleGNlcHRpb24gbXVz
dCBiZSB0aHJvd24uIE90aGVyd2lzZSwgdGhlIFdlYlZUVCBjdWUKICAgICAvLyBwb3NpdGlvbiBt
dXN0IGJlIHNldCB0byB0aGUgbmV3IHZhbHVlOyBpZiB0aGUgbmV3IHZhbHVlIGlzIHRoZSBzdHJp
bmcKICAgICAvLyAiYXV0byIsIHRoZW4gaXQgbXVzdCBiZSBpbnRlcnByZXRlZCBhcyB0aGUgc3Bl
Y2lhbCB2YWx1ZSBhdXRvLgotICAgIGRvdWJsZSB0ZXh0UG9zaXRpb24gPSAwOwotICAgIGlmIChz
dGQ6OmhvbGRzX2FsdGVybmF0aXZlPEF1dG9LZXl3b3JkPihwb3NpdGlvbikpIHsKLSAgICAgICAg
aWYgKHRleHRQb3NpdGlvbklzQXV0bygpKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAg
ICAgdGV4dFBvc2l0aW9uID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4o
KTsKLSAgICB9IGVsc2UgeworICAgIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB0ZXh0UG9zaXRpb247
CisKKyAgICAvLyBPdGhlcndpc2UsIHNldCB0aGUgdGV4dCB0cmFjayBjdWUgbGluZSBwb3NpdGlv
biB0byB0aGUgbmV3IHZhbHVlLgorICAgIGlmICghc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxBdXRv
S2V5d29yZD4ocG9zaXRpb24pKSB7CiAgICAgICAgIHRleHRQb3NpdGlvbiA9IHN0ZDo6Z2V0PGRv
dWJsZT4ocG9zaXRpb24pOwogICAgICAgICBpZiAoISh0ZXh0UG9zaXRpb24gPj0gMCAmJiB0ZXh0
UG9zaXRpb24gPD0gMTAwKSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbmRleFNp
emVFcnJvciB9OwotCi0gICAgICAgIC8vIE90aGVyd2lzZSwgc2V0IHRoZSB0ZXh0IHRyYWNrIGN1
ZSBsaW5lIHBvc2l0aW9uIHRvIHRoZSBuZXcgdmFsdWUuCi0gICAgICAgIGlmIChtX3RleHRQb3Np
dGlvbiA9PSB0ZXh0UG9zaXRpb24pCi0gICAgICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAor
ICAgIGlmIChtX3RleHRQb3NpdGlvbiA9PSB0ZXh0UG9zaXRpb24pCisgICAgICAgIHJldHVybiB7
IH07CisKICAgICB3aWxsQ2hhbmdlKCk7Ci0gICAgbV90ZXh0UG9zaXRpb24gPSB0ZXh0UG9zaXRp
b247CisgICAgbV90ZXh0UG9zaXRpb24gPSBXVEZNb3ZlKHRleHRQb3NpdGlvbik7CiAgICAgZGlk
Q2hhbmdlKCk7CiAKICAgICByZXR1cm4geyB9OwpAQCAtNzE0LDE0ICs2OTQsMTQgQEAgY29uc3Qg
U3RyaW5nJiBWVFRDdWU6OnJlZ2lvbklkKCkKICAgICByZXR1cm4gbV9yZWdpb24tPmlkKCk7CiB9
CiAKLWludCBWVFRDdWU6OmNhbGN1bGF0ZUNvbXB1dGVkTGluZVBvc2l0aW9uKCkKK2ludCBWVFRD
dWU6OmNhbGN1bGF0ZUNvbXB1dGVkTGluZVBvc2l0aW9uKCkgY29uc3QKIHsKICAgICAvLyBodHRw
Oi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90
aGUtdmlkZW8tZWxlbWVudC5odG1sI3RleHQtdHJhY2stY3VlLWNvbXB1dGVkLWxpbmUtcG9zaXRp
b24KIAogICAgIC8vIElmIHRoZSB0ZXh0IHRyYWNrIGN1ZSBsaW5lIHBvc2l0aW9uIGlzIG51bWVy
aWMsIHRoZW4gdGhhdCBpcyB0aGUgdGV4dAogICAgIC8vIHRyYWNrIGN1ZSBjb21wdXRlZCBsaW5l
IHBvc2l0aW9uLgotICAgIGlmICghc3RkOjppc25hbihtX2xpbmVQb3NpdGlvbikpCi0gICAgICAg
IHJldHVybiBtX2xpbmVQb3NpdGlvbjsKKyAgICBpZiAobV9saW5lUG9zaXRpb24pCisgICAgICAg
IHJldHVybiAqbV9saW5lUG9zaXRpb247CiAKICAgICAvLyBJZiB0aGUgdGV4dCB0cmFjayBjdWUg
c25hcC10by1saW5lcyBmbGFnIG9mIHRoZSB0ZXh0IHRyYWNrIGN1ZSBpcyBub3QKICAgICAvLyBz
ZXQsIHRoZSB0ZXh0IHRyYWNrIGN1ZSBjb21wdXRlZCBsaW5lIHBvc2l0aW9uIGlzIHRoZSB2YWx1
ZSAxMDA7CkBAIC03NTYsMTEgKzczNiw2IEBAIHN0YXRpYyBib29sIGlzQ3VlUGFyYWdyYXBoU2Vw
YXJhdG9yKFVDaGFyIGNoYXJhY3RlcikKICAgICByZXR1cm4gdV9jaGFyVHlwZShjaGFyYWN0ZXIp
ID09IFVfUEFSQUdSQVBIX1NFUEFSQVRPUjsKIH0KIAotYm9vbCBWVFRDdWU6OnRleHRQb3NpdGlv
bklzQXV0bygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN0ZDo6aXNuYW4obV90ZXh0UG9zaXRpb24p
OwotfQotCiB2b2lkIFZUVEN1ZTo6ZGV0ZXJtaW5lVGV4dERpcmVjdGlvbigpCiB7CiAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gcnRUYWcoTUFLRV9TVEFUSUNfU1RSSU5H
X0lNUEwoInJ0IikpOwpAQCAtODEwLDggKzc4NSw4IEBAIGRvdWJsZSBWVFRDdWU6OmNhbGN1bGF0
ZUNvbXB1dGVkVGV4dFBvc2l0aW9uKCkgY29uc3QKICAgICAKICAgICAvLyAxLiBJZiB0aGUgcG9z
aXRpb24gaXMgbnVtZXJpYywgdGhlbiByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBwb3NpdGlvbiBh
bmQKICAgICAvLyBhYm9ydCB0aGVzZSBzdGVwcy4gKE90aGVyd2lzZSwgdGhlIHBvc2l0aW9uIGlz
IHRoZSBzcGVjaWFsIHZhbHVlIGF1dG8uKQotICAgIGlmICghdGV4dFBvc2l0aW9uSXNBdXRvKCkp
Ci0gICAgICAgIHJldHVybiBtX3RleHRQb3NpdGlvbjsKKyAgICBpZiAobV90ZXh0UG9zaXRpb24p
CisgICAgICAgIHJldHVybiAqbV90ZXh0UG9zaXRpb247CiAgICAgCiAgICAgc3dpdGNoIChtX2N1
ZUFsaWdubWVudCkgewogICAgIGNhc2UgU3RhcnQ6CkBAIC05MjEsMTggKzg5NiwxOCBAQCB2b2lk
IFZUVEN1ZTo6Y2FsY3VsYXRlRGlzcGxheVBhcmFtZXRlcnMoKQogICAgIC8vIDEwLjkgRGV0ZXJt
aW5lIHRoZSB2YWx1ZSBvZiB3aGljaGV2ZXIgb2YgeC1wb3NpdGlvbiBvciB5LXBvc2l0aW9uIGlz
IG5vdAogICAgIC8vIHlldCBjYWxjdWxhdGVkIGZvciBjdWUgYXMgcGVyIHRoZSBhcHByb3ByaWF0
ZSBydWxlcyBmcm9tIHRoZSBmb2xsb3dpbmcKICAgICAvLyBsaXN0OgotICAgIGlmIChtX3NuYXBU
b0xpbmVzICYmIG1fZGlzcGxheVBvc2l0aW9uLnNlY29uZCA9PSB1bmRlZmluZWRQb3NpdGlvbiAm
JiBtX3dyaXRpbmdEaXJlY3Rpb24gPT0gSG9yaXpvbnRhbCkKKyAgICBpZiAobV9zbmFwVG9MaW5l
cyAmJiAhbV9kaXNwbGF5UG9zaXRpb24uc2Vjb25kICYmIG1fd3JpdGluZ0RpcmVjdGlvbiA9PSBI
b3Jpem9udGFsKQogICAgICAgICBtX2Rpc3BsYXlQb3NpdGlvbi5zZWNvbmQgPSAwOwogCi0gICAg
aWYgKCFtX3NuYXBUb0xpbmVzICYmIG1fZGlzcGxheVBvc2l0aW9uLnNlY29uZCA9PSB1bmRlZmlu
ZWRQb3NpdGlvbiAmJiBtX3dyaXRpbmdEaXJlY3Rpb24gPT0gSG9yaXpvbnRhbCkKLSAgICAgICAg
bV9kaXNwbGF5UG9zaXRpb24uc2Vjb25kID0gbV9jb21wdXRlZExpbmVQb3NpdGlvbjsKKyAgICBp
ZiAoIW1fc25hcFRvTGluZXMgJiYgIW1fZGlzcGxheVBvc2l0aW9uLnNlY29uZCAmJiBtX3dyaXRp
bmdEaXJlY3Rpb24gPT0gSG9yaXpvbnRhbCkKKyAgICAgICAgbV9kaXNwbGF5UG9zaXRpb24uc2Vj
b25kID0gKm1fY29tcHV0ZWRMaW5lUG9zaXRpb247CiAKLSAgICBpZiAobV9zbmFwVG9MaW5lcyAm
JiBtX2Rpc3BsYXlQb3NpdGlvbi5maXJzdCA9PSB1bmRlZmluZWRQb3NpdGlvbgorICAgIGlmICht
X3NuYXBUb0xpbmVzICYmICFtX2Rpc3BsYXlQb3NpdGlvbi5maXJzdAogICAgICAgICAmJiAobV93
cml0aW5nRGlyZWN0aW9uID09IFZlcnRpY2FsR3Jvd2luZ0xlZnQgfHwgbV93cml0aW5nRGlyZWN0
aW9uID09IFZlcnRpY2FsR3Jvd2luZ1JpZ2h0KSkKICAgICAgICAgbV9kaXNwbGF5UG9zaXRpb24u
Zmlyc3QgPSAwOwogCiAgICAgaWYgKCFtX3NuYXBUb0xpbmVzICYmIChtX3dyaXRpbmdEaXJlY3Rp
b24gPT0gVmVydGljYWxHcm93aW5nTGVmdCB8fCBtX3dyaXRpbmdEaXJlY3Rpb24gPT0gVmVydGlj
YWxHcm93aW5nUmlnaHQpKQotICAgICAgICBtX2Rpc3BsYXlQb3NpdGlvbi5maXJzdCA9IG1fY29t
cHV0ZWRMaW5lUG9zaXRpb247CisgICAgICAgIG1fZGlzcGxheVBvc2l0aW9uLmZpcnN0ID0gKm1f
Y29tcHV0ZWRMaW5lUG9zaXRpb247CiB9CiAgICAgCiB2b2lkIFZUVEN1ZTo6bWFya0Z1dHVyZUFu
ZFBhc3ROb2RlcyhDb250YWluZXJOb2RlKiByb290LCBjb25zdCBNZWRpYVRpbWUmIHByZXZpb3Vz
VGltZXN0YW1wLCBjb25zdCBNZWRpYVRpbWUmIG1vdmllVGltZSkKQEAgLTEwNzYsMzAgKzEwNTEs
MzEgQEAgc3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPiBWVFRDdWU6OmdldFBvc2l0aW9uQ29vcmRp
bmF0ZXMoKSBjb25zdAogICAgIHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4gY29vcmRpbmF0ZXM7
CiAKICAgICBhdXRvIHRleHRQb3NpdGlvbiA9IGNhbGN1bGF0ZUNvbXB1dGVkVGV4dFBvc2l0aW9u
KCk7CisgICAgYXV0byBjb21wdXRlZExpbmVQb3NpdGlvbiA9IG1fY29tcHV0ZWRMaW5lUG9zaXRp
b24gPyAqbV9jb21wdXRlZExpbmVQb3NpdGlvbiA6IGNhbGN1bGF0ZUNvbXB1dGVkTGluZVBvc2l0
aW9uKCk7CiAgICAgCiAgICAgaWYgKG1fd3JpdGluZ0RpcmVjdGlvbiA9PSBIb3Jpem9udGFsICYm
IG1fZGlzcGxheURpcmVjdGlvbiA9PSBDU1NWYWx1ZUx0cikgewogICAgICAgICBjb29yZGluYXRl
cy5maXJzdCA9IHRleHRQb3NpdGlvbjsKLSAgICAgICAgY29vcmRpbmF0ZXMuc2Vjb25kID0gbV9j
b21wdXRlZExpbmVQb3NpdGlvbjsKKyAgICAgICAgY29vcmRpbmF0ZXMuc2Vjb25kID0gY29tcHV0
ZWRMaW5lUG9zaXRpb247CiAKICAgICAgICAgcmV0dXJuIGNvb3JkaW5hdGVzOwogICAgIH0KIAog
ICAgIGlmIChtX3dyaXRpbmdEaXJlY3Rpb24gPT0gSG9yaXpvbnRhbCAmJiBtX2Rpc3BsYXlEaXJl
Y3Rpb24gPT0gQ1NTVmFsdWVSdGwpIHsKICAgICAgICAgY29vcmRpbmF0ZXMuZmlyc3QgPSAxMDAg
LSB0ZXh0UG9zaXRpb247Ci0gICAgICAgIGNvb3JkaW5hdGVzLnNlY29uZCA9IG1fY29tcHV0ZWRM
aW5lUG9zaXRpb247CisgICAgICAgIGNvb3JkaW5hdGVzLnNlY29uZCA9IGNvbXB1dGVkTGluZVBv
c2l0aW9uOwogCiAgICAgICAgIHJldHVybiBjb29yZGluYXRlczsKICAgICB9CiAKICAgICBpZiAo
bV93cml0aW5nRGlyZWN0aW9uID09IFZlcnRpY2FsR3Jvd2luZ0xlZnQpIHsKLSAgICAgICAgY29v
cmRpbmF0ZXMuZmlyc3QgPSAxMDAgLSBtX2NvbXB1dGVkTGluZVBvc2l0aW9uOworICAgICAgICBj
b29yZGluYXRlcy5maXJzdCA9IDEwMCAtICptX2NvbXB1dGVkTGluZVBvc2l0aW9uOwogICAgICAg
ICBjb29yZGluYXRlcy5zZWNvbmQgPSB0ZXh0UG9zaXRpb247CiAKICAgICAgICAgcmV0dXJuIGNv
b3JkaW5hdGVzOwogICAgIH0KIAogICAgIGlmIChtX3dyaXRpbmdEaXJlY3Rpb24gPT0gVmVydGlj
YWxHcm93aW5nUmlnaHQpIHsKLSAgICAgICAgY29vcmRpbmF0ZXMuZmlyc3QgPSBtX2NvbXB1dGVk
TGluZVBvc2l0aW9uOworICAgICAgICBjb29yZGluYXRlcy5maXJzdCA9IGNvbXB1dGVkTGluZVBv
c2l0aW9uOwogICAgICAgICBjb29yZGluYXRlcy5zZWNvbmQgPSB0ZXh0UG9zaXRpb247CiAKICAg
ICAgICAgcmV0dXJuIGNvb3JkaW5hdGVzOwpAQCAtMTMxOSwxNCArMTI5NSw2IEBAIGludCBWVFRD
dWU6OmdldENTU1NpemUoKSBjb25zdAogICAgIHJldHVybiBtX2Rpc3BsYXlTaXplOwogfQogCi1z
dGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+IFZUVEN1ZTo6Z2V0Q1NTUG9zaXRpb24oKSBjb25zdAot
ewotICAgIGlmICghbV9zbmFwVG9MaW5lcykKLSAgICAgICAgcmV0dXJuIGdldFBvc2l0aW9uQ29v
cmRpbmF0ZXMoKTsKLQotICAgIHJldHVybiBtX2Rpc3BsYXlQb3NpdGlvbjsKLX0KLQogYm9vbCBW
VFRDdWU6OmN1ZUNvbnRlbnRzTWF0Y2goY29uc3QgVGV4dFRyYWNrQ3VlJiBvdGhlclRleHRUcmFj
a0N1ZSkgY29uc3QKIHsKICAgICBhdXRvJiBvdGhlciA9IGRvd25jYXN0PFZUVEN1ZT4ob3RoZXJU
ZXh0VHJhY2tDdWUpOwpAQCAtMTM2MCwxMSArMTMyOCwxNCBAQCB2b2lkIFZUVEN1ZTo6dG9KU09O
KEpTT046Ok9iamVjdCYgb2JqZWN0KSBjb25zdAogCiAgICAgb2JqZWN0LnNldFN0cmluZygidmVy
dGljYWwiX3MsIHZlcnRpY2FsKCkpOwogICAgIG9iamVjdC5zZXRCb29sZWFuKCJzbmFwVG9MaW5l
cyJfcywgc25hcFRvTGluZXMoKSk7Ci0gICAgb2JqZWN0LnNldERvdWJsZSgibGluZSJfcywgbV9s
aW5lUG9zaXRpb24pOwotICAgIGlmICh0ZXh0UG9zaXRpb25Jc0F1dG8oKSkKLSAgICAgICAgb2Jq
ZWN0LnNldFN0cmluZygicG9zaXRpb24iX3MsICJhdXRvIl9zKTsKKyAgICBpZiAobV9saW5lUG9z
aXRpb24pCisgICAgICAgIG9iamVjdC5zZXRTdHJpbmcoImxpbmUiX3MsICJhdXRvIl9zKTsKICAg
ICBlbHNlCi0gICAgICAgIG9iamVjdC5zZXREb3VibGUoInBvc2l0aW9uIl9zLCBtX3RleHRQb3Np
dGlvbik7CisgICAgICAgIG9iamVjdC5zZXREb3VibGUoImxpbmUiX3MsICptX2xpbmVQb3NpdGlv
bik7CisgICAgaWYgKG1fdGV4dFBvc2l0aW9uKQorICAgICAgICBvYmplY3Quc2V0RG91YmxlKCJw
b3NpdGlvbiJfcywgKm1fdGV4dFBvc2l0aW9uKTsKKyAgICBlbHNlCisgICAgICAgIG9iamVjdC5z
ZXRTdHJpbmcoInBvc2l0aW9uIl9zLCAiYXV0byJfcyk7CiAgICAgb2JqZWN0LnNldEludGVnZXIo
InNpemUiX3MsIG1fY3VlU2l6ZSk7CiAgICAgb2JqZWN0LnNldFN0cmluZygiYWxpZ24iX3MsIGFs
aWduKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmgKaW5kZXggNzQ5NmMyMjkxZWMw
YzlkYWFhYzU2MjBmNTI5ZDIyNjE1MmQ4YmY1ZS4uYzkxYTQ5MDk2NjUwODMzNjRhMjg5OGYxMDhl
NTViNDA5ZmZmN2QwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRD
dWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5oCkBAIC0xMzYsMTAg
KzEzNiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVEaXNwbGF5VHJlZSgpIGZpbmFsOwog
ICAgIHZvaWQgbWFya0Z1dHVyZUFuZFBhc3ROb2RlcyhDb250YWluZXJOb2RlKiwgY29uc3QgTWVk
aWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJik7CiAKLSAgICBpbnQgY2FsY3VsYXRlQ29tcHV0ZWRM
aW5lUG9zaXRpb24oKTsKKyAgICBpbnQgY2FsY3VsYXRlQ29tcHV0ZWRMaW5lUG9zaXRpb24oKSBj
b25zdDsKICAgICBzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+IGdldFBvc2l0aW9uQ29vcmRpbmF0
ZXMoKSBjb25zdDsKIAotICAgIHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4gZ2V0Q1NTUG9zaXRp
b24oKSBjb25zdDsKKyAgICB1c2luZyBEaXNwbGF5UG9zaXRpb24gPSBzdGQ6OnBhaXI8c3RkOjpv
cHRpb25hbDxkb3VibGU+LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4+OworICAgIGNvbnN0IERpc3Bs
YXlQb3NpdGlvbiYgZ2V0Q1NTUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlQb3Np
dGlvbjsgfTsKIAogICAgIENTU1ZhbHVlSUQgZ2V0Q1NTQWxpZ25tZW50KCkgY29uc3Q7CiAgICAg
aW50IGdldENTU1NpemUoKSBjb25zdDsKQEAgLTIwNyw4ICsyMDgsNiBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBwYXJzZVNldHRpbmdzKGNvbnN0IFN0cmluZyYpOwogCi0gICAgYm9vbCB0ZXh0UG9z
aXRpb25Jc0F1dG8oKSBjb25zdDsKLQogICAgIHZvaWQgZGV0ZXJtaW5lVGV4dERpcmVjdGlvbigp
OwogICAgIHZvaWQgY2FsY3VsYXRlRGlzcGxheVBhcmFtZXRlcnMoKTsKIApAQCAtMjIzLDEzICsy
MjIsMTEgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIEN1ZVNldHRpbmcgc2V0dGluZ05hbWUoVlRU
U2Nhbm5lciYpOwogCi0gICAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgdW5kZWZpbmVkUG9zaXRp
b24gPSAtMTsKLQogICAgIFN0cmluZyBtX2NvbnRlbnQ7CiAgICAgU3RyaW5nIG1fc2V0dGluZ3M7
Ci0gICAgZG91YmxlIG1fbGluZVBvc2l0aW9uIHsgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+
OjpxdWlldF9OYU4oKSB9OwotICAgIGRvdWJsZSBtX2NvbXB1dGVkTGluZVBvc2l0aW9uIHsgc3Rk
OjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSB9OwotICAgIGRvdWJsZSBtX3Rl
eHRQb3NpdGlvbiB7IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkgfTsK
KyAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbV9saW5lUG9zaXRpb247CisgICAgc3RkOjpvcHRp
b25hbDxkb3VibGU+IG1fY29tcHV0ZWRMaW5lUG9zaXRpb247CisgICAgc3RkOjpvcHRpb25hbDxk
b3VibGU+IG1fdGV4dFBvc2l0aW9uOwogICAgIGludCBtX2N1ZVNpemUgeyAxMDAgfTsKIAogICAg
IFdyaXRpbmdEaXJlY3Rpb24gbV93cml0aW5nRGlyZWN0aW9uIHsgSG9yaXpvbnRhbCB9OwpAQCAt
MjQ1LDcgKzI0Miw3IEBAIHByaXZhdGU6CiAKICAgICBDU1NWYWx1ZUlEIG1fZGlzcGxheURpcmVj
dGlvbiB7IENTU1ZhbHVlTHRyIH07CiAgICAgaW50IG1fZGlzcGxheVNpemUgeyAwIH07Ci0gICAg
c3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gbV9kaXNwbGF5UG9zaXRpb247CisgICAgRGlzcGxheVBv
c2l0aW9uIG1fZGlzcGxheVBvc2l0aW9uOwogCiAgICAgTWVkaWFUaW1lIG1fb3JpZ2luYWxTdGFy
dFRpbWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMu
Y3BwCmluZGV4IDkzNTQxNzJjZjM0NjNhZjBjODY4YTc5NWU1MzZlYzg2NDdiMDE2ZmUuLjMzNGU2
NDI1NjIzNTMzNTQ2NWQ1ZTkxYmZjOGExNjFjYWMyMTY4M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcApAQCAtOTcsNyArOTcsNyBAQCBDYXB0
aW9uVXNlclByZWZlcmVuY2VzOjpDYXB0aW9uRGlzcGxheU1vZGUgQ2FwdGlvblVzZXJQcmVmZXJl
bmNlczo6Y2FwdGlvbkRpc3BsYQogdm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpzZXRDYXB0
aW9uRGlzcGxheU1vZGUoQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6Q2FwdGlvbkRpc3BsYXlNb2Rl
IG1vZGUpCiB7CiAgICAgbV9kaXNwbGF5TW9kZSA9IG1vZGU7Ci0gICAgaWYgKG1fdGVzdGluZ01v
ZGUgJiYgbW9kZSAhPSBBbHdheXNPbikgeworICAgIGlmICh0ZXN0aW5nTW9kZSgpICYmIG1vZGUg
IT0gQWx3YXlzT24pIHsKICAgICAgICAgc2V0VXNlclByZWZlcnNDYXB0aW9ucyhmYWxzZSk7CiAg
ICAgICAgIHNldFVzZXJQcmVmZXJzU3VidGl0bGVzKGZhbHNlKTsKICAgICB9CkBAIC0xNzYsNyAr
MTc2LDcgQEAgdm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpjYXB0aW9uUHJlZmVyZW5jZXND
aGFuZ2VkKCkKIFZlY3RvcjxTdHJpbmc+IENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnByZWZlcnJl
ZExhbmd1YWdlcygpIGNvbnN0CiB7CiAgICAgVmVjdG9yPFN0cmluZz4gbGFuZ3VhZ2VzID0gdXNl
clByZWZlcnJlZExhbmd1YWdlcyhTaG91bGRNaW5pbWl6ZUxhbmd1YWdlczo6Tm8pOwotICAgIGlm
IChtX3Rlc3RpbmdNb2RlICYmICFtX3VzZXJQcmVmZXJyZWRMYW5ndWFnZS5pc0VtcHR5KCkpCisg
ICAgaWYgKHRlc3RpbmdNb2RlKCkgJiYgIW1fdXNlclByZWZlcnJlZExhbmd1YWdlLmlzRW1wdHko
KSkKICAgICAgICAgbGFuZ3VhZ2VzLmluc2VydCgwLCBtX3VzZXJQcmVmZXJyZWRMYW5ndWFnZSk7
CiAKICAgICByZXR1cm4gbGFuZ3VhZ2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25V
c2VyUHJlZmVyZW5jZXMuaAppbmRleCBjYzUwMWY3OTE1MzE2ZTE0MDM5YzBkNzJmZjkxNDU0ZTMz
MDM1M2ZlLi43ZTY3ZWE0NzI3YWVjYWViNThmODM5MTY2NmJhM2RkYjJlYWJlZjY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaApAQCAtMzYsNiArMzYs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNUZXN0aW5nTW9kZVRva2VuOwogY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKIGNsYXNzIFBhZ2U7
CiBjbGFzcyBQYWdlR3JvdXA7CkBAIC05OCw4ICs5OSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRQcmltYXJ5QXVkaW9UcmFja0xhbmd1YWdlT3ZlcnJpZGUoY29uc3QgU3RyaW5nJiBsYW5ndWFn
ZSkgeyBtX3ByaW1hcnlBdWRpb1RyYWNrTGFuZ3VhZ2VPdmVycmlkZSA9IGxhbmd1YWdlOyAgfQog
ICAgIFN0cmluZyBwcmltYXJ5QXVkaW9UcmFja0xhbmd1YWdlT3ZlcnJpZGUoKSBjb25zdDsKIAot
ICAgIHZpcnR1YWwgYm9vbCB0ZXN0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGVzdGluZ01v
ZGU7IH0KLSAgICB2b2lkIHNldFRlc3RpbmdNb2RlKGJvb2wgb3ZlcnJpZGUpIHsgbV90ZXN0aW5n
TW9kZSA9IG92ZXJyaWRlOyB9CisgICAgdmlydHVhbCBib29sIHRlc3RpbmdNb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV90ZXN0aW5nTW9kZUNvdW50OyB9CisKKyAgICBmcmllbmQgY2xhc3MgQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc1Rlc3RpbmdNb2RlVG9rZW47CisgICAgVW5pcXVlUmVmPENhcHRpb25V
c2VyUHJlZmVyZW5jZXNUZXN0aW5nTW9kZVRva2VuPiBjcmVhdGVUZXN0aW5nTW9kZVRva2VuKCkg
eyByZXR1cm4gbWFrZVVuaXF1ZVJlZjxDYXB0aW9uVXNlclByZWZlcmVuY2VzVGVzdGluZ01vZGVU
b2tlbj4oKnRoaXMpOyB9CiAgICAgCiAgICAgUGFnZUdyb3VwJiBwYWdlR3JvdXAoKSBjb25zdCB7
IHJldHVybiBtX3BhZ2VHcm91cDsgfQogCkBAIC0xMTEsNiArMTE0LDE0IEBAIHByb3RlY3RlZDoK
ICAgICB2b2lkIGVuZEJsb2NraW5nTm90aWZpY2F0aW9ucygpOwogCiBwcml2YXRlOgorICAgIHZv
aWQgaW5jcmVtZW50VGVzdGluZ01vZGVDb3VudCgpIHsgKyttX3Rlc3RpbmdNb2RlQ291bnQ7IH0K
KyAgICB2b2lkIGRlY3JlbWVudFRlc3RpbmdNb2RlQ291bnQoKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKG1fdGVzdGluZ01vZGVDb3VudCk7CisgICAgICAgIGlmIChtX3Rlc3RpbmdNb2RlQ291bnQp
CisgICAgICAgICAgICAtLW1fdGVzdGluZ01vZGVDb3VudDsKKyAgICB9CisKICAgICB2b2lkIHRp
bWVyRmlyZWQoKTsKICAgICB2b2lkIG5vdGlmeSgpOwogICAgIFBhZ2UqIGN1cnJlbnRQYWdlKCkg
Y29uc3Q7CkBAIC0xMjMsOCArMTM0LDI1IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fY2FwdGlv
bnNTdHlsZVNoZWV0T3ZlcnJpZGU7CiAgICAgU3RyaW5nIG1fcHJpbWFyeUF1ZGlvVHJhY2tMYW5n
dWFnZU92ZXJyaWRlOwogICAgIHVuc2lnbmVkIG1fYmxvY2tOb3RpZmljYXRpb25zQ291bnRlciB7
IDAgfTsKLSAgICBib29sIG1fdGVzdGluZ01vZGUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXZl
UHJlZmVyZW5jZXMgeyBmYWxzZSB9OworICAgIHVuc2lnbmVkIG1fdGVzdGluZ01vZGVDb3VudCB7
IDAgfTsKK307CisKK2NsYXNzIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNUZXN0aW5nTW9kZVRva2Vu
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBDYXB0aW9uVXNl
clByZWZlcmVuY2VzVGVzdGluZ01vZGVUb2tlbihDYXB0aW9uVXNlclByZWZlcmVuY2VzJiBwYXJl
bnQpCisgICAgICAgIDogbV9wYXJlbnQocGFyZW50KQorICAgIHsKKyAgICAgICAgcGFyZW50Lmlu
Y3JlbWVudFRlc3RpbmdNb2RlQ291bnQoKTsKKyAgICB9CisgICAgfkNhcHRpb25Vc2VyUHJlZmVy
ZW5jZXNUZXN0aW5nTW9kZVRva2VuKCkKKyAgICB7CisgICAgICAgIGlmIChtX3BhcmVudCkKKyAg
ICAgICAgICAgIG1fcGFyZW50LT5kZWNyZW1lbnRUZXN0aW5nTW9kZUNvdW50KCk7CisgICAgfQor
cHJpdmF0ZToKKyAgICBXZWFrUHRyPENhcHRpb25Vc2VyUHJlZmVyZW5jZXM+IG1fcGFyZW50Owog
fTsKICAgICAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCA4
ZWJjZjI5NGZiNjdhNDViMmY0NzBmOWY3ZmQxYjcxNjViNjJlNGEzLi44NzIwODQwOGE2Yzk1Yzcy
YzZjZGJmZmMxZTEyZDkzNGQ5Yzg3ODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oCkBAIC0yNjksNiArMjY5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBp
c1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclNjcm9sbGJhclBhcnQoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlclZUVEN1ZSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBib29sIGlzRG9jdW1lbnRFbGVtZW50UmVuZGVyZXIo
KSBjb25zdCB7IHJldHVybiBkb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpID09ICZtX25vZGU7
IH0KICAgICBib29sIGlzQm9keSgpIGNvbnN0IHsgcmV0dXJuIG5vZGUoKSAmJiBub2RlKCktPmhh
c1RhZ05hbWUoSFRNTE5hbWVzOjpib2R5VGFnKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclZUVEN1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVlRUQ3VlLmNwcAppbmRleCA1YmFlOGVmZTdhOGZjODE2MjJiMjBlODhhN2ZlYjVhMmNi
NGZlZWM0Li4zMDcyODBmYzYzY2M4NDI3YmIwZjZhNDQ4NzE5MGFjM2VkMjRlNzg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmNwcApAQCAtNjAsNyArNjAsNyBAQCB2
b2lkIFJlbmRlclZUVEN1ZTo6bGF5b3V0KCkKICAgICBpZiAoIW1fY3VlLT5yZWdpb25JZCgpLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTGF5b3V0U3RhdGVNYWludGFpbmVyIHN0
YXRlUHVzaGVyKCp0aGlzLCBsb2NhdGlvbk9mZnNldCgpLCBoYXNUcmFuc2Zvcm0oKSB8fCBoYXNS
ZWZsZWN0aW9uKCkgfHwgc3R5bGUoKS5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKTsKKyAg
ICBMYXlvdXRTdGF0ZU1haW50YWluZXIgc3RhdGVQdXNoZXIoKnRoaXMsIGxvY2F0aW9uT2Zmc2V0
KCksIHRydWUpOwogCiAgICAgaWYgKG1fY3VlLT5jdWVUeXBlKCk9PSBUZXh0VHJhY2tDdWU6Oldl
YlZUVCkgewogICAgICAgICBpZiAobV9jdWUtPnNuYXBUb0xpbmVzKCkpCkBAIC03OSwxMiArNzks
NyBAQCBib29sIFJlbmRlclZUVEN1ZTo6aW5pdGlhbGl6ZUxheW91dFBhcmFtZXRlcnMoTGVnYWN5
SW5saW5lRmxvd0JveComIGZpcnN0TGluZUJveAogCiAgICAgUmVuZGVyQmxvY2sqIHBhcmVudEJs
b2NrID0gY29udGFpbmluZ0Jsb2NrKCk7CiAKLSAgICAvLyBmaXJzdENoaWxkKCkgcmV0dXJucyB0
aGUgd3JhcHBpbmcgKGJhY2tkcm9wKSA8ZGl2Pi4gVGhlIGN1ZSBvYmplY3QgaXMKLSAgICAvLyB0
aGUgPGRpdj4ncyBmaXJzdCBjaGlsZC4KLSAgICBSZW5kZXJPYmplY3QmIGZpcnN0Q2hpbGQgPSAq
dGhpcy0+Zmlyc3RDaGlsZCgpOwotICAgIFJlbmRlckVsZW1lbnQmIGJhY2tkcm9wRWxlbWVudCA9
IGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KGZpcnN0Q2hpbGQpOwotICAgIAotICAgIGZpcnN0TGlu
ZUJveCA9IGRvd25jYXN0PFJlbmRlcklubGluZT4oKmJhY2tkcm9wRWxlbWVudC5maXJzdENoaWxk
KCkpLmZpcnN0TGluZUJveCgpOworICAgIGZpcnN0TGluZUJveCA9IGN1ZUJveCgpLmZpcnN0TGlu
ZUJveCgpOwogICAgIGlmICghZmlyc3RMaW5lQm94KQogICAgICAgICBmaXJzdExpbmVCb3ggPSB0
aGlzLT5maXJzdFJvb3RCb3goKTsKIApAQCAtOTIsNiArODcsMjMgQEAgYm9vbCBSZW5kZXJWVFRD
dWU6OmluaXRpYWxpemVMYXlvdXRQYXJhbWV0ZXJzKExlZ2FjeUlubGluZUZsb3dCb3gqJiBmaXJz
dExpbmVCb3gKICAgICAvLyAgICBWZXJ0aWNhbDogTGV0IHN0ZXAgYmUgdGhlIHdpZHRoIG9mIHRo
ZSBmaXJzdCBsaW5lIGJveCBpbiBib3hlcy4KICAgICBzdGVwID0gbV9jdWUtPmdldFdyaXRpbmdE
aXJlY3Rpb24oKSA9PSBWVFRDdWU6Okhvcml6b250YWwgPyBmaXJzdExpbmVCb3gtPmhlaWdodCgp
IDogZmlyc3RMaW5lQm94LT53aWR0aCgpOwogCisgICAgLy8gTm90ZTogdGhlIHByZXZpb3VzIHJ1
bGVzIGluIGluaXRpYWxpemVMYXlvdXRQYXJhbWV0ZXJzKCkgb25seSBhY2NvdW50IGZvcgorICAg
IC8vIHRoZSBoZWlnaHQgb2YgdGhlIGxpbmUgYm94ZXMgY29udGFpbmVkIHdpdGhpbiB0aGUgY3Vl
LCBhbmQgbm90IHRoZSBjdWUncyBoZWlnaHQKKyAgICAvLyBub3IgaXRzIHBhZGRpbmcsIG5vciBp
dHMgYm9yZGVycy4gSWdub3JpbmcgdGhlc2Ugd2lsbCBsZWFkIHRvIGVycm9ycworICAgIC8vIGlu
IHRoZSBpbml0aWFsIHBsYWNlbWVudCBvZiBjdWVzLCBhcyB0aGUgcmVzdWx0aW5nIHBsYWNlbWVu
dCB3aWxsIHJlc3VsdCBpbgorICAgIC8vIHRoZSBjdWUgYWx3YXlzIGJlaW5nIHBhcnRpYWxseSBv
dXRzaWRlIGl0cyBjb250YWluaW5nIGJsb2NrLCByYXRoZXIgdGhhbiBhdAorICAgIC8vIGl0cyBp
bml0aWFsIHBvc2l0aW9uLiBDb3JyZWN0IHRoZSBpbml0aWFsIHBvc2l0aW9uIGJ5IHN1YnRyYWN0
aW5nIGZyb20KKyAgICAvLyBwb3NpdGlvbiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0aGUg
bG9naWNhbEhlaWdodCBvZiB0aGUgY3VlIGFuZCBpdHMKKyAgICAvLyBmaXJzdCBsaW5lIGJveC4K
KyAgICBhdXRvJiBiYWNrZHJvcEJveCA9IHRoaXMtPmJhY2tkcm9wQm94KCk7CisgICAgYXV0byBs
aW5lQm94SGVpZ2h0cyA9IGZpcnN0TGluZUJveC0+bG9naWNhbEhlaWdodCgpOworICAgIGZvciAo
YXV0byBuZXh0TGluZUJveCA9IGZpcnN0TGluZUJveC0+bmV4dExpbmVCb3goKTsgbmV4dExpbmVC
b3g7IG5leHRMaW5lQm94ID0gbmV4dExpbmVCb3gtPm5leHRMaW5lQm94KCkpCisgICAgICAgIGxp
bmVCb3hIZWlnaHRzICs9IG5leHRMaW5lQm94LT5sb2dpY2FsSGVpZ2h0KCk7CisKKyAgICBhdXRv
IGxvZ2ljYWxIZWlnaHREZWx0YSA9IGJhY2tkcm9wQm94LmxvZ2ljYWxIZWlnaHQoKSAtIGxpbmVC
b3hIZWlnaHRzOworICAgIGlmIChsb2dpY2FsSGVpZ2h0RGVsdGEgPiAwKQorICAgICAgICBzdGVw
ICs9IGxvZ2ljYWxIZWlnaHREZWx0YTsKKwogICAgIC8vIDIuIElmIHN0ZXAgaXMgemVybywgdGhl
biBqdW1wIHRvIHRoZSBzdGVwIGxhYmVsZWQgZG9uZSBwb3NpdGlvbmluZyBiZWxvdy4KICAgICBp
ZiAoIXN0ZXApCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE0Niw3ICsxNTgsNyBAQCB2b2lk
IFJlbmRlclZUVEN1ZTo6cGxhY2VCb3hJbkRlZmF1bHRQb3NpdGlvbihMYXlvdXRVbml0IHBvc2l0
aW9uLCBib29sJiBzd2l0Y2hlZAogCiBib29sIFJlbmRlclZUVEN1ZTo6aXNPdXRzaWRlKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gIXJlY3RJc1dpdGhpbkNvbnRhaW5lcihhYnNvbHV0ZUNvbnRlbnRC
b3goKSk7CisgICAgcmV0dXJuICFyZWN0SXNXaXRoaW5Db250YWluZXIoYmFja2Ryb3BCb3goKS5h
YnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpKTsKIH0KIAogYm9vbCBSZW5kZXJWVFRDdWU6OnJlY3RJ
c1dpdGhpbkNvbnRhaW5lcihjb25zdCBJbnRSZWN0JiByZWN0KSBjb25zdApAQCAtMTYwLDE4ICsx
NzIsMjAgQEAgYm9vbCBSZW5kZXJWVFRDdWU6OmlzT3ZlcmxhcHBpbmcoKSBjb25zdAogICAgIHJl
dHVybiBvdmVybGFwcGluZ09iamVjdCgpOwogfQogCi1SZW5kZXJPYmplY3QqIFJlbmRlclZUVEN1
ZTo6b3ZlcmxhcHBpbmdPYmplY3QoKSBjb25zdAorUmVuZGVyVlRUQ3VlKiBSZW5kZXJWVFRDdWU6
Om92ZXJsYXBwaW5nT2JqZWN0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gb3ZlcmxhcHBpbmdPYmpl
Y3RGb3JSZWN0KGFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpOworICAgIHJldHVybiBvdmVybGFw
cGluZ09iamVjdEZvclJlY3QoYmFja2Ryb3BCb3goKS5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgp
KTsKIH0KIAotUmVuZGVyT2JqZWN0KiBSZW5kZXJWVFRDdWU6Om92ZXJsYXBwaW5nT2JqZWN0Rm9y
UmVjdChjb25zdCBJbnRSZWN0JiByZWN0KSBjb25zdAorUmVuZGVyVlRUQ3VlKiBSZW5kZXJWVFRD
dWU6Om92ZXJsYXBwaW5nT2JqZWN0Rm9yUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KSBjb25zdAog
ewotICAgIGZvciAoUmVuZGVyT2JqZWN0KiBib3ggPSBwcmV2aW91c1NpYmxpbmcoKTsgYm94OyBi
b3ggPSBib3gtPnByZXZpb3VzU2libGluZygpKSB7Ci0gICAgICAgIEludFJlY3QgYm94UmVjdCA9
IGJveC0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKKyAgICBmb3IgKFJlbmRlck9iamVjdCog
c2libGluZyA9IHByZXZpb3VzU2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+
cHJldmlvdXNTaWJsaW5nKCkpIHsKKyAgICAgICAgYXV0byogcHJldmlvdXNDdWUgPSBkb3duY2Fz
dDxSZW5kZXJWVFRDdWU+KHNpYmxpbmcpOworICAgICAgICBpZiAoIXByZXZpb3VzQ3VlKQorICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKHJlY3QuaW50ZXJzZWN0cyhib3hSZWN0
KSkKLSAgICAgICAgICAgIHJldHVybiBib3g7CisgICAgICAgIGlmIChyZWN0LmludGVyc2VjdHMo
cHJldmlvdXNDdWUtPmJhY2tkcm9wQm94KCkuYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKSkpCisg
ICAgICAgICAgICByZXR1cm4gcHJldmlvdXNDdWU7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CkBA
IC0yNDMsNyArMjU3LDcgQEAgYm9vbCBSZW5kZXJWVFRDdWU6OnN3aXRjaERpcmVjdGlvbihib29s
JiBzd2l0Y2hlZCwgTGF5b3V0VW5pdCYgc3RlcCkKIHZvaWQgUmVuZGVyVlRUQ3VlOjptb3ZlSWZO
ZWNlc3NhcnlUb0tlZXBXaXRoaW5Db250YWluZXIoKQogewogICAgIEludFJlY3QgY29udGFpbmVy
UmVjdCA9IGNvbnRhaW5pbmdCbG9jaygpLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOwotICAg
IEludFJlY3QgY3VlUmVjdCA9IGFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CisgICAgSW50UmVj
dCBjdWVSZWN0ID0gYmFja2Ryb3BCb3goKS5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdCgpOwogCiAg
ICAgaW50IHRvcE92ZXJmbG93ID0gY3VlUmVjdC55KCkgLSBjb250YWluZXJSZWN0LnkoKTsKICAg
ICBpbnQgYm90dG9tT3ZlcmZsb3cgPSBjb250YWluZXJSZWN0Lm1heFkoKSAtIGN1ZVJlY3QubWF4
WSgpOwpAQCAtMjc0LDE1ICsyODgsMTUgQEAgYm9vbCBSZW5kZXJWVFRDdWU6OmZpbmROb25PdmVy
bGFwcGluZ1Bvc2l0aW9uKGludCYgbmV3WCwgaW50JiBuZXdZKSBjb25zdAogewogICAgIG5ld1gg
PSB4KCk7CiAgICAgbmV3WSA9IHkoKTsKLSAgICBJbnRSZWN0IHNyY1JlY3QgPSBhYnNvbHV0ZUJv
dW5kaW5nQm94UmVjdCgpOworICAgIEludFJlY3Qgc3JjUmVjdCA9IGJhY2tkcm9wQm94KCkuYWJz
b2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKICAgICBJbnRSZWN0IGRlc3RSZWN0ID0gc3JjUmVjdDsK
IAogICAgIC8vIE1vdmUgdGhlIGJveCB1cCwgbG9va2luZyBmb3IgYSBub24tb3ZlcmxhcHBpbmcg
cG9zaXRpb246Ci0gICAgd2hpbGUgKFJlbmRlck9iamVjdCogYm94ID0gb3ZlcmxhcHBpbmdPYmpl
Y3RGb3JSZWN0KGRlc3RSZWN0KSkgeworICAgIHdoaWxlIChSZW5kZXJWVFRDdWUqIGN1ZSA9IG92
ZXJsYXBwaW5nT2JqZWN0Rm9yUmVjdChkZXN0UmVjdCkpIHsKICAgICAgICAgaWYgKG1fY3VlLT5n
ZXRXcml0aW5nRGlyZWN0aW9uKCkgPT0gVlRUQ3VlOjpIb3Jpem9udGFsKQotICAgICAgICAgICAg
ZGVzdFJlY3Quc2V0WShib3gtPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkueSgpIC0gZGVzdFJl
Y3QuaGVpZ2h0KCkpOworICAgICAgICAgICAgZGVzdFJlY3Quc2V0WShjdWUtPmJhY2tkcm9wQm94
KCkuYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKS55KCkgLSBkZXN0UmVjdC5oZWlnaHQoKSk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRlc3RSZWN0LnNldFgoYm94LT5hYnNvbHV0ZUJvdW5k
aW5nQm94UmVjdCgpLngoKSAtIGRlc3RSZWN0LndpZHRoKCkpOworICAgICAgICAgICAgZGVzdFJl
Y3Quc2V0WChjdWUtPmJhY2tkcm9wQm94KCkuYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKS54KCkg
LSBkZXN0UmVjdC53aWR0aCgpKTsKICAgICB9CiAKICAgICBpZiAocmVjdElzV2l0aGluQ29udGFp
bmVyKGRlc3RSZWN0KSkgewpAQCAtMjk0LDExICszMDgsMTEgQEAgYm9vbCBSZW5kZXJWVFRDdWU6
OmZpbmROb25PdmVybGFwcGluZ1Bvc2l0aW9uKGludCYgbmV3WCwgaW50JiBuZXdZKSBjb25zdAog
ICAgIGRlc3RSZWN0ID0gc3JjUmVjdDsKIAogICAgIC8vIE1vdmUgdGhlIGJveCBkb3duLCBsb29r
aW5nIGZvciBhIG5vbi1vdmVybGFwcGluZyBwb3NpdGlvbjoKLSAgICB3aGlsZSAoUmVuZGVyT2Jq
ZWN0KiBib3ggPSBvdmVybGFwcGluZ09iamVjdEZvclJlY3QoZGVzdFJlY3QpKSB7CisgICAgd2hp
bGUgKFJlbmRlclZUVEN1ZSogY3VlID0gb3ZlcmxhcHBpbmdPYmplY3RGb3JSZWN0KGRlc3RSZWN0
KSkgewogICAgICAgICBpZiAobV9jdWUtPmdldFdyaXRpbmdEaXJlY3Rpb24oKSA9PSBWVFRDdWU6
Okhvcml6b250YWwpCi0gICAgICAgICAgICBkZXN0UmVjdC5zZXRZKGJveC0+YWJzb2x1dGVCb3Vu
ZGluZ0JveFJlY3QoKS5tYXhZKCkpOworICAgICAgICAgICAgZGVzdFJlY3Quc2V0WShjdWUtPmJh
Y2tkcm9wQm94KCkuYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKS5tYXhZKCkpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBkZXN0UmVjdC5zZXRYKGJveC0+YWJzb2x1dGVCb3VuZGluZ0JveFJl
Y3QoKS5tYXhYKCkpOworICAgICAgICAgICAgZGVzdFJlY3Quc2V0WChjdWUtPmJhY2tkcm9wQm94
KCkuYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKS5tYXhYKCkpOwogICAgIH0KIAogICAgIGlmIChy
ZWN0SXNXaXRoaW5Db250YWluZXIoZGVzdFJlY3QpKSB7CkBAIC0zNDUsMTIgKzM1OSw3IEBAIHZv
aWQgUmVuZGVyVlRUQ3VlOjpyZXBvc2l0aW9uR2VuZXJpY0N1ZSgpCiB7CiAgICAgQVNTRVJUKGZp
cnN0Q2hpbGQoKSk7CiAKLSAgICAvLyBmaXJzdENoaWxkKCkgcmV0dXJucyB0aGUgd3JhcHBpbmcg
KGJhY2tkcm9wKSA8ZGl2Pi4gVGhlIGN1ZSBvYmplY3QgaXMKLSAgICAvLyB0aGUgPGRpdj4ncyBm
aXJzdCBjaGlsZC4KLSAgICBSZW5kZXJPYmplY3QmIGZpcnN0Q2hpbGQgPSAqdGhpcy0+Zmlyc3RD
aGlsZCgpOwotICAgIFJlbmRlckVsZW1lbnQmIGJhY2tkcm9wRWxlbWVudCA9IGRvd25jYXN0PFJl
bmRlckVsZW1lbnQ+KGZpcnN0Q2hpbGQpOwotICAgIAotICAgIExlZ2FjeUlubGluZUZsb3dCb3gq
IGZpcnN0TGluZUJveCA9IGRvd25jYXN0PFJlbmRlcklubGluZT4oKmJhY2tkcm9wRWxlbWVudC5m
aXJzdENoaWxkKCkpLmZpcnN0TGluZUJveCgpOworICAgIExlZ2FjeUlubGluZUZsb3dCb3gqIGZp
cnN0TGluZUJveCA9IGN1ZUJveCgpLmZpcnN0TGluZUJveCgpOwogICAgIGlmIChkb3duY2FzdDxU
ZXh0VHJhY2tDdWVHZW5lcmljPigqbV9jdWUpLnVzZURlZmF1bHRQb3NpdGlvbigpICYmIGZpcnN0
TGluZUJveCkgewogICAgICAgICBMYXlvdXRVbml0IHBhcmVudFdpZHRoID0gY29udGFpbmluZ0Js
b2NrKCktPmxvZ2ljYWxXaWR0aCgpOwogICAgICAgICBMYXlvdXRVbml0IHdpZHRoIHsgZmlyc3RM
aW5lQm94LT53aWR0aCgpIH07CkBAIC0zODQsNiArMzkzLDIxIEBAIHZvaWQgUmVuZGVyVlRUQ3Vl
OjpyZXBvc2l0aW9uQ3VlU25hcFRvTGluZXNOb3RTZXQoKQogICAgIHNldFkoeSk7CiB9CiAKK1Jl
bmRlckJsb2NrRmxvdyYgUmVuZGVyVlRUQ3VlOjpiYWNrZHJvcEJveCgpIGNvbnN0Cit7CisgICAg
QVNTRVJUKGZpcnN0Q2hpbGQoKSk7CisKKyAgICAvLyBmaXJzdENoaWxkKCkgcmV0dXJucyB0aGUg
d3JhcHBpbmcgKGJhY2tkcm9wKSA8ZGl2Pi4gVGhlIGN1ZSBvYmplY3QgaXMKKyAgICAvLyB0aGUg
PGRpdj4ncyBmaXJzdCBjaGlsZC4KKyAgICBSZW5kZXJPYmplY3QmIGZpcnN0Q2hpbGQgPSAqdGhp
cy0+Zmlyc3RDaGlsZCgpOworICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KGZp
cnN0Q2hpbGQpOworfQorCitSZW5kZXJJbmxpbmUmIFJlbmRlclZUVEN1ZTo6Y3VlQm94KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVySW5saW5lPigqYmFja2Ryb3BCb3goKS5m
aXJzdENoaWxkKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZUVEN1ZS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZUVEN1ZS5oCmluZGV4IDJjNTU3YjZkZTYwODU2OGRm
ODE2YzRhY2IzMTk3MTE5NTZhOTY0MjQuLjYxZjllODE2NjYzYjc5ZjE3NjkyMzA4MzNkNTZhZGQw
ZDNhNmE4YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRD
dWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmgKQEAgLTQy
LDEzICs0MiwxNSBAQCBwdWJsaWM6CiAgICAgUmVuZGVyVlRUQ3VlKFZUVEN1ZUJveCYsIFJlbmRl
clN0eWxlJiYpOwogCiBwcml2YXRlOgorICAgIGJvb2wgaXNSZW5kZXJWVFRDdWUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiB0cnVlOyB9CisKICAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogCiAg
ICAgYm9vbCBpc091dHNpZGUoKSBjb25zdDsKICAgICBib29sIHJlY3RJc1dpdGhpbkNvbnRhaW5l
cihjb25zdCBJbnRSZWN0JikgY29uc3Q7CiAgICAgYm9vbCBpc092ZXJsYXBwaW5nKCkgY29uc3Q7
Ci0gICAgUmVuZGVyT2JqZWN0KiBvdmVybGFwcGluZ09iamVjdCgpIGNvbnN0OwotICAgIFJlbmRl
ck9iamVjdCogb3ZlcmxhcHBpbmdPYmplY3RGb3JSZWN0KGNvbnN0IEludFJlY3QmKSBjb25zdDsK
KyAgICBSZW5kZXJWVFRDdWUqIG92ZXJsYXBwaW5nT2JqZWN0KCkgY29uc3Q7CisgICAgUmVuZGVy
VlRUQ3VlKiBvdmVybGFwcGluZ09iamVjdEZvclJlY3QoY29uc3QgSW50UmVjdCYpIGNvbnN0Owog
ICAgIGJvb2wgc2hvdWxkU3dpdGNoRGlyZWN0aW9uKExlZ2FjeUlubGluZUZsb3dCb3gqLCBMYXlv
dXRVbml0KSBjb25zdDsKIAogICAgIHZvaWQgbW92ZUJveGVzQnlTdGVwKExheW91dFVuaXQpOwpA
QCAtNjIsMTAgKzY0LDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXBvc2l0aW9uQ3VlU25hcFRv
TGluZXNOb3RTZXQoKTsKICAgICB2b2lkIHJlcG9zaXRpb25HZW5lcmljQ3VlKCk7CiAKKyAgICBS
ZW5kZXJCbG9ja0Zsb3cmIGJhY2tkcm9wQm94KCkgY29uc3Q7CisgICAgUmVuZGVySW5saW5lJiBj
dWVCb3goKSBjb25zdDsKKwogICAgIFZUVEN1ZSogbV9jdWU7CiAgICAgRmxvYXRQb2ludCBtX2Zh
bGxiYWNrUG9zaXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfUkVOREVSX09CSkVDVChSZW5kZXJWVFRDdWUsIGlzUmVuZGVyVlRUQ3Vl
KCkpCisKICNlbmRpZiAvLyBFTkFCTEUoVklERU8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKaW5kZXggNDJlOWMwZDY4NThlYzkxYzMxOWNiMjMzNGNlMGIyMjE1MzMxZmE2Yy4uOTk4
Y2ZjNTRjM2JlYWI4OGUzOTJlMWQwOWYwNGQwYTAxNzUwMmY0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcApAQCAtNTQ1LDEwICs1NDUsOCBAQCB2b2lkIEludGVybmFsczo6cmVz
ZXRUb0NvbnNpc3RlbnRTdGF0ZShQYWdlJiBwYWdlKQogICAgIHBhZ2UubWFpbkZyYW1lKCkubG9h
ZGVyKCkuY2xlYXJUZXN0aW5nT3ZlcnJpZGVzKCk7CiAgICAgcGFnZS5hcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZSgpLnNldERlZmF1bHRPcmlnaW5RdW90YShBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
bm9RdW90YSgpKTsKICNpZiBFTkFCTEUoVklERU8pCi0gICAgcGFnZS5ncm91cCgpLmVuc3VyZUNh
cHRpb25QcmVmZXJlbmNlcygpLnNldFRlc3RpbmdNb2RlKHRydWUpOwogICAgIHBhZ2UuZ3JvdXAo
KS5lbnN1cmVDYXB0aW9uUHJlZmVyZW5jZXMoKS5zZXRDYXB0aW9uRGlzcGxheU1vZGUoQ2FwdGlv
blVzZXJQcmVmZXJlbmNlczo6Rm9yY2VkT25seSk7CiAgICAgcGFnZS5ncm91cCgpLmVuc3VyZUNh
cHRpb25QcmVmZXJlbmNlcygpLnNldENhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKGVtcHR5U3Ry
aW5nKCkpOwotICAgIHBhZ2UuZ3JvdXAoKS5lbnN1cmVDYXB0aW9uUHJlZmVyZW5jZXMoKS5zZXRU
ZXN0aW5nTW9kZShmYWxzZSk7CiAgICAgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFy
ZWRNYW5hZ2VyKCkucmVzZXRIYXZlRXZlclJlZ2lzdGVyZWRBc05vd1BsYXlpbmdBcHBsaWNhdGlv
bkZvclRlc3RpbmcoKTsKICAgICBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1h
bmFnZXIoKS5yZXNldFJlc3RyaWN0aW9ucygpOwogICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFu
YWdlcjo6c2hhcmVkTWFuYWdlcigpLnNldFdpbGxJZ25vcmVTeXN0ZW1JbnRlcnJ1cHRpb25zKHRy
dWUpOwpAQCAtNjI0LDE0ICs2MjIsMTQgQEAgSW50ZXJuYWxzOjpJbnRlcm5hbHMoRG9jdW1lbnQm
IGRvY3VtZW50KQogICAgICwgbV9vcmllbnRhdGlvbk5vdGlmaWVyKDApCiAjZW5kaWYKIHsKLSNp
ZiBFTkFCTEUoVklERU8pCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAg
ICBpZiAoZG9jdW1lbnQucGFnZSgpKQotICAgICAgICBkb2N1bWVudC5wYWdlKCktPmdyb3VwKCku
ZW5zdXJlQ2FwdGlvblByZWZlcmVuY2VzKCkuc2V0VGVzdGluZ01vZGUodHJ1ZSk7CisgICAgICAg
IGRvY3VtZW50LnBhZ2UoKS0+c2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJFbmFibGVk
KHRydWUpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQor
I2lmIEVOQUJMRShWSURFTykKICAgICBpZiAoZG9jdW1lbnQucGFnZSgpKQotICAgICAgICBkb2N1
bWVudC5wYWdlKCktPnNldE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyRW5hYmxlZCh0cnVl
KTsKKyAgICAgICAgbV90ZXN0aW5nTW9kZVRva2VuID0gZG9jdW1lbnQucGFnZSgpLT5ncm91cCgp
LmVuc3VyZUNhcHRpb25QcmVmZXJlbmNlcygpLmNyZWF0ZVRlc3RpbmdNb2RlVG9rZW4oKS5tb3Zl
VG9VbmlxdWVQdHIoKTsKICNlbmRpZgogCiAgICAgaWYgKGNvbnRleHREb2N1bWVudCgpICYmIGNv
bnRleHREb2N1bWVudCgpLT5mcmFtZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApp
bmRleCA4ZDM0NzU3ZjhlZDRkYmFjMjQzMjlkNjJjYWY1NDI1OTlmZjM0YzhkLi4yNWVlMjJhYWRi
YzBjOTFhYjhiN2MyOWE1N2IyN2ExZDAxODA5ZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgKQEAgLTU2LDYgKzU2LDcgQEAgY2xhc3MgQXVkaW9UcmFjazsKIGNsYXNzIEJhc2VBdWRp
b0NvbnRleHQ7CiBjbGFzcyBCbG9iOwogY2xhc3MgQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKK2Ns
YXNzIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNUZXN0aW5nTW9kZVRva2VuOwogY2xhc3MgRE9NUG9p
bnRSZWFkT25seTsKIGNsYXNzIERPTVJlY3Q7CiBjbGFzcyBET01SZWN0TGlzdDsKQEAgLTEyNjIs
NiArMTI2Myw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT05fQ09PUkRJTkFU
T1IpCiAgICAgUmVmUHRyPE1vY2tNZWRpYVNlc3Npb25Db29yZGluYXRvcj4gbV9tb2NrTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3I7CiAjZW5kaWYKKyNpZiBFTkFCTEUoVklERU8pCisgICAgc3RkOjp1
bmlxdWVfcHRyPENhcHRpb25Vc2VyUHJlZmVyZW5jZXNUZXN0aW5nTW9kZVRva2VuPiBtX3Rlc3Rp
bmdNb2RlVG9rZW47CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCA2MjEwZjVhMzMxNjczNDQ0Y2UxMzUyM2FiYzIwMzIwM2MyY2I1NDlmLi5kNDIwMjcyNDg5MmY4
MmUxNGQ5YzI3YzFiYTlmOWQwY2MzODQ2YjM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjEt
MTItMDYgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1ZUVF0g
Rml4IHZhcmlvdXMgaXNzdWVzIHdpdGggY29tcGxpY2F0ZWQgcmVuZGVyaW5nIG9mIFZUVCBjdWVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM5MDEK
KworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBtZWRpYS90
cmFjay9jYXB0aW9ucy13ZWJ2dHQvbm8tc25hcC10by1saW5lcy1vdmVybGFwLnZ0dDogQWRkZWQu
CisgICAgICAgICogbWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L3NuYXAtdG8tbGluZXMtaW5s
aW5lLXN0eWxlLnZ0dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdHJhY2svY2FwdGlvbnMtd2Vi
dnR0L3NuYXAtdG8tbGluZXMtbGVmdC1hbmQtcmlnaHQudnR0OiBBZGRlZC4KKyAgICAgICAgKiBt
ZWRpYS90cmFjay90cmFjay13ZWJ2dHQtbm8tc25hcC10by1saW5lcy1vdmVybGFwLWV4cGVjdGVk
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1uby1zbmFw
LXRvLWxpbmVzLW92ZXJsYXAuaHRtbDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdHJhY2svdHJh
Y2std2VidnR0LXNuYXAtdG8tbGluZXMtaW5saW5lLXN0eWxlLWV4cGVjdGVkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRvLWxpbmVzLWlubGlu
ZS1zdHlsZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay13ZWJ2dHQt
c25hcC10by1saW5lcy1sZWZ0LXJpZ2h0LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IG1lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRvLWxpbmVzLWxlZnQtcmlnaHQuaHRtbDog
QWRkZWQuCisKIDIwMjEtMTItMDMgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW2Nzcy1mbGV4Ym94XSBBY2NvdW50IGZvciBjYXB0aW9ucyB3aGVu
IGZsZXhpbmcgdGFibGVzIHdpdGggc3BlY2lmaWVkIHNpemVzCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9tZWRpYS90cmFjay9jYXB0aW9ucy13ZWJ2dHQvbm8tc25hcC10by1saW5lcy1vdmVybGFw
LnZ0dCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9uby1zbmFwLXRv
LWxpbmVzLW92ZXJsYXAudnR0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3ZjZmNDRmNGQ5YTdlMTJkMGM2ZWRmZGUy
YmFlODE0NGU5YmUyODUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFj
ay9jYXB0aW9ucy13ZWJ2dHQvbm8tc25hcC10by1saW5lcy1vdmVybGFwLnZ0dApAQCAtMCwwICsx
LDMzIEBACitXRUJWVFQKKworMQorMDA6MDA6MDAuMDAwIC0tPiAwMDowMDowMC41MDAgYWxpZ246
bGVmdCBsaW5lOjAlCitMZWZ0CisKKzIKKzAwOjAwOjAwLjAwMCAtLT4gMDA6MDA6MDAuNTAwIGFs
aWduOnJpZ2h0IGxpbmU6MCUKK1JpZ2h0CisKKzMKKzAwOjAwOjAwLjAwMCAtLT4gMDA6MDA6MDAu
NTAwIGFsaWduOmxlZnQgbGluZTowJQorQmVsb3cKKworNAorMDA6MDA6MDAuMDAwIC0tPiAwMDow
MDowMC41MDAgYWxpZ246cmlnaHQgbGluZTowJQorQmVsb3cKKworMQorMDA6MDA6MDAuMDAwIC0t
PiAwMDowMDowMC41MDAgYWxpZ246bGVmdCBsaW5lOjEwMCUKK0xlZnQKKworMgorMDA6MDA6MDAu
MDAwIC0tPiAwMDowMDowMC41MDAgYWxpZ246cmlnaHQgbGluZToxMDAlCitSaWdodAorCiszCisw
MDowMDowMC4wMDAgLS0+IDAwOjAwOjAwLjUwMCBhbGlnbjpsZWZ0IGxpbmU6MTAwJQorQWJvdmUK
KworNAorMDA6MDA6MDAuMDAwIC0tPiAwMDowMDowMC41MDAgYWxpZ246cmlnaHQgbGluZToxMDAl
CitBYm92ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2Vi
dnR0L3NuYXAtdG8tbGluZXMtaW5saW5lLXN0eWxlLnZ0dCBiL0xheW91dFRlc3RzL21lZGlhL3Ry
YWNrL2NhcHRpb25zLXdlYnZ0dC9zbmFwLXRvLWxpbmVzLWlubGluZS1zdHlsZS52dHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2ZjNTY1NmE0MWI4OWVjYTgwMTUxMTc0YTU0ODAyNDNmNjYxZjM1MQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zbmFwLXRv
LWxpbmVzLWlubGluZS1zdHlsZS52dHQKQEAgLTAsMCArMSwyMCBAQAorV0VCVlRUCisKK1NUWUxF
Cis6OmN1ZSguZG91YmxlSGVpZ2h0KSB7IGZvbnQtc2l6ZTogMjAwJTsgYmFja2dyb3VuZC1jb2xv
cjogYmxhY2sgfQorCisxCiswMDowMDowMC4wMDAgLS0+IDAwOjAwOjAwLjUwMCBhbGlnbjpsZWZ0
Cis8Yy5kb3VibGVIZWlnaHQ+TGVmdDwvYz4KKworMgorMDA6MDA6MDAuMDAwIC0tPiAwMDowMDow
MC41MDAgYWxpZ246cmlnaHQgcG9zaXRpb246MTAwJQorPGMuZG91YmxlSGVpZ2h0PlJpZ2h0PC9j
PgorCiszCiswMDowMDowMC4wMDAgLS0+IDAwOjAwOjAwLjUwMCBhbGlnbjpsZWZ0Cis8Yy5kb3Vi
bGVIZWlnaHQ+QWJvdmU8L2M+CisKKzQKKzAwOjAwOjAwLjAwMCAtLT4gMDA6MDA6MDAuNTAwIGFs
aWduOnJpZ2h0IHBvc2l0aW9uOjEwMCUKKzxjLmRvdWJsZUhlaWdodD5BYm92ZTwvYz4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRpb25zLXdlYnZ0dC9zbmFwLXRvLWxp
bmVzLWxlZnQtYW5kLXJpZ2h0LnZ0dCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL2NhcHRpb25z
LXdlYnZ0dC9zbmFwLXRvLWxpbmVzLWxlZnQtYW5kLXJpZ2h0LnZ0dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMDk2
OWUwZGRiMTU2Y2IzZjY0MTQ2NzJkMzI2MTRhOWNlOWUwYmNlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svY2FwdGlvbnMtd2VidnR0L3NuYXAtdG8tbGluZXMtbGVm
dC1hbmQtcmlnaHQudnR0CkBAIC0wLDAgKzEsMTcgQEAKK1dFQlZUVAorCisxCiswMDowMDowMC4w
MDAgLS0+IDAwOjAwOjAwLjUwMCBhbGlnbjpsZWZ0CitMZWZ0CisKKzIKKzAwOjAwOjAwLjAwMCAt
LT4gMDA6MDA6MDAuNTAwIGFsaWduOnJpZ2h0IHBvc2l0aW9uOjEwMCUKK1JpZ2h0CisKKzMKKzAw
OjAwOjAwLjAwMCAtLT4gMDA6MDA6MDAuNTAwIGFsaWduOmxlZnQKK0Fib3ZlCisKKzQKKzAwOjAw
OjAwLjAwMCAtLT4gMDA6MDA6MDAuNTAwIGFsaWduOnJpZ2h0IHBvc2l0aW9uOjEwMCUKK0Fib3Zl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay13ZWJ2dHQtbm8tc25h
cC10by1saW5lcy1vdmVybGFwLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFj
ay90cmFjay13ZWJ2dHQtbm8tc25hcC10by1saW5lcy1vdmVybGFwLWV4cGVjdGVkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjc3YjU1MzY0ZTA5OGUwMzU3YTE4MWQ4MGQ3YjMwNDMwNjFiZjMwMQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1uby1zbmFw
LXRvLWxpbmVzLW92ZXJsYXAtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDU4IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPnRyYWNrLXdlYnZ0dC1uby1zbmFw
LXRvLWxpbmVzLW92ZXJsYXA8L3RpdGxlPgorICAgIDxzdHlsZT4KKyAgICAgICAgLnZpZGVvIHsg
CisgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICBwb3NpdGlv
bjogcmVsYXRpdmU7CisgICAgICAgICAgICB3aWR0aDogMzIwcHg7CisgICAgICAgICAgICBoZWln
aHQ6IDI0MHB4OworICAgICAgICB9CisgICAgICAgIGh0bWwgeyBvdmVyZmxvdzpoaWRkZW4gfQor
ICAgICAgICBib2R5IHsgbWFyZ2luOjAgfQorICAgICAgICAuY3VlLWJveCB7CisgICAgICAgICAg
ICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgICAgICBmb250LXNpemU6IDEycHg7CisgICAg
ICAgIH0KKyAgICAgICAgLmN1ZSB7CisgICAgICAgICAgICBmb250LWZhbWlseTogQWhlbSwgc2Fu
cy1zZXJpZjsKKyAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrOworICAgICAgICAg
ICAgY29sb3I6IGdyZWVuOworICAgICAgICB9CisgICAgPC9zdHlsZT4KKyAgICA8c2NyaXB0PnZh
ciByZXF1aXJlUGl4ZWxEdW1wID0gdHJ1ZTs8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4v
dmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIo
J2xvYWQnLCBhc3luYyBldmVudCA9PiB7CisgICAgICAgIGNvbnNvbGVXcml0ZSgnUlVOKHZpZGVv
LnF1ZXJ5U2VsZWN0b3IoInRyYWNrIikuc3JjID0gImNhcHRpb25zLXdlYnZ0dC9uby1zbmFwLXRv
LWxpbmVzLW92ZXJsYXAudnR0IiknKTsKKyAgICAgICAgY29uc29sZVdyaXRlKCdSVU4odmlkZW8u
dGV4dFRyYWNrc1swXS5tb2RlID0gInNob3dpbmciKScpOworICAgICAgICBjb25zb2xlV3JpdGUo
J0VWRU5UKGxvYWQpJyk7CisgICAgICAgIGNvbnNvbGVXcml0ZSgnUlVOKHZpZGVvLnNyYyA9IGZp
bmRNZWRpYUZpbGUoInZpZGVvIiwgInczYy90cmFjay93ZWJ2dHQvbWVkaWEvd2hpdGUiKSknKTsK
KyAgICAgICAgY29uc29sZVdyaXRlKCdFVkVOVChjYW5wbGF5dGhyb3VnaCknKTsKKyAgICAgICAg
ZW5kVGVzdCgpOworICAgIH0pOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAg
PGRpdiBjbGFzcz0idmlkZW8iPgorICAgICAgICA8ZGl2IGNsYXNzPSJjdWUtYm94IiBzdHlsZT0i
bGVmdDowOyB0b3A6MDsgdGV4dC1hbGlnbjogbGVmdDsiPgorICAgICAgICAgICAgPHNwYW4gY2xh
c3M9ImN1ZSI+TGVmdDwvc3Bhbj48YnI+CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3VlIj5C
ZWxvdzwvc3Bhbj4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImN1ZS1ib3gi
IHN0eWxlPSJyaWdodDowOyB0b3A6MDsgdGV4dC1hbGlnbjogcmlnaHQiPgorICAgICAgICAgICAg
PHNwYW4gY2xhc3M9ImN1ZSI+UmlnaHQ8L3NwYW4+PGJyPgorICAgICAgICAgICAgPHNwYW4gY2xh
c3M9ImN1ZSI+QmVsb3c8L3NwYW4+CisgICAgICAgIDwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNz
PSJjdWUtYm94IiBzdHlsZT0ibGVmdDowOyBib3R0b206MDsgdGV4dC1hbGlnbjogbGVmdCI+Cisg
ICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3VlIj5BYm92ZTwvc3Bhbj48YnI+CisgICAgICAgICAg
ICA8c3BhbiBjbGFzcz0iY3VlIj5MZWZ0PC9zcGFuPgorICAgICAgICA8L2Rpdj4KKyAgICAgICAg
PGRpdiBjbGFzcz0iY3VlLWJveCIgc3R5bGU9InJpZ2h0OjA7IGJvdHRvbTowOyB0ZXh0LWFsaWdu
OiByaWdodCI+CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3VlIj5BYm92ZTwvc3Bhbj48YnI+
CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3VlIj5SaWdodDwvc3Bhbj4KKyAgICAgICAgPC9k
aXY+CisgICAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2std2VidnR0LW5v
LXNuYXAtdG8tbGluZXMtb3ZlcmxhcC5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJh
Y2std2VidnR0LW5vLXNuYXAtdG8tbGluZXMtb3ZlcmxhcC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhZjRi
MjA2ZWE5MGNiODA3MDFlN2M2YTI5NmZmOTc2ODVmYjA1MDEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay13ZWJ2dHQtbm8tc25hcC10by1saW5lcy1vdmVy
bGFwLmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorICAgIDx0aXRsZT50cmFjay13ZWJ2dHQtbm8tc25hcC10by1saW5lcy1vdmVybGFwPC90aXRs
ZT4KKyAgICA8c3R5bGU+CisgICAgICAgIGh0bWwgeyBvdmVyZmxvdzpoaWRkZW4gfQorICAgICAg
ICBib2R5IHsgbWFyZ2luOjAgfQorICAgICAgICA6OmN1ZSB7CisgICAgICAgICAgICBmb250LWZh
bWlseTogQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsKKyAg
ICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrOworICAgICAgICAgICAgY29sb3I6IGdy
ZWVuOworICAgICAgICB9CisgICAgPC9zdHlsZT4KKyAgICA8c2NyaXB0PnZhciByZXF1aXJlUGl4
ZWxEdW1wID0gdHJ1ZTs8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5q
cyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZpbGUuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQ+CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBhc3lu
YyBldmVudCA9PiB7CisgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKworICAgICAgICBydW4o
YHZpZGVvLnF1ZXJ5U2VsZWN0b3IoInRyYWNrIikuc3JjID0gImNhcHRpb25zLXdlYnZ0dC9uby1z
bmFwLXRvLWxpbmVzLW92ZXJsYXAudnR0ImApOworICAgICAgICBydW4oYHZpZGVvLnRleHRUcmFj
a3NbMF0ubW9kZSA9ICJzaG93aW5nImApOworICAgICAgICBhd2FpdCB3YWl0Rm9yKHZpZGVvLnF1
ZXJ5U2VsZWN0b3IoJ3RyYWNrJyksICdsb2FkJyk7CisKKyAgICAgICAgcnVuKGB2aWRlby5zcmMg
PSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJ3M2MvdHJhY2svd2VidnR0L21lZGlhL3doaXRlIilg
KTsKKyAgICAgICAgYXdhaXQgd2FpdEZvcih2aWRlbywgJ2NhbnBsYXl0aHJvdWdoJyk7CisKKyAg
ICAgICAgZW5kVGVzdCgpOworICAgIH0pOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
CisgICAgPHZpZGVvPgorICAgICAgICA8dHJhY2sgaWQ9InRlc3RUcmFjayIga2luZD0iY2FwdGlv
bnMiIGRlZmF1bHQ+CisgICAgPC92aWRlbz4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFj
ay13ZWJ2dHQtc25hcC10by1saW5lcy1pbmxpbmUtc3R5bGUtZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRvLWxpbmVzLWlubGluZS1zdHls
ZS1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4OThlNWZjYzE0ZjNiNWE0NzEwMTUwN2RiYTdk
NTUzNTM3NjE2NWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90
cmFjay13ZWJ2dHQtc25hcC10by1saW5lcy1pbmxpbmUtc3R5bGUtZXhwZWN0ZWQuaHRtbApAQCAt
MCwwICsxLDUwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxl
PnRyYWNrLXdlYnZ0dC1zbmFwLXRvLWxpbmVzLWlubGluZS1zdHlsZTwvdGl0bGU+CisgICAgPHN0
eWxlPgorICAgICAgICAudmlkZW8geyAKKyAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKKyAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgICAgICAgIHdpZHRoOiAz
MjBweDsKKyAgICAgICAgICAgIGhlaWdodDogMjQwcHg7CisgICAgICAgIH0KKyAgICAgICAgaHRt
bCB7IG92ZXJmbG93OmhpZGRlbiB9CisgICAgICAgIGJvZHkgeyBtYXJnaW46MCB9CisgICAgICAg
IC5jdWUtYm94IHsKKyAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgfQor
ICAgICAgICAuY3VlIHsKKyAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBBaGVtLCBzYW5zLXNlcmlm
OworICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7CisgICAgICAgICAgICBjb2xv
cjogZ3JlZW47CisgICAgICAgICAgICBmb250LXNpemU6IDI0cHg7CisgICAgICAgIH0KKyAgICA8
L3N0eWxlPgorICAgIDxzY3JpcHQ+dmFyIHJlcXVpcmVQaXhlbER1bXAgPSB0cnVlOzwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iLi4vbWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICB3
aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGFzeW5jIGV2ZW50ID0+IHsKKyAgICAgICAg
Y29uc29sZVdyaXRlKCdSVU4odmlkZW8ucXVlcnlTZWxlY3RvcigidHJhY2siKS5zcmMgPSAiY2Fw
dGlvbnMtd2VidnR0L3NuYXAtdG8tbGluZXMtaW5saW5lLXN0eWxlLnZ0dCIpJyk7CisgICAgICAg
IGNvbnNvbGVXcml0ZSgnUlVOKHZpZGVvLnRleHRUcmFja3NbMF0ubW9kZSA9ICJzaG93aW5nIikn
KTsKKyAgICAgICAgY29uc29sZVdyaXRlKCdFVkVOVChsb2FkKScpOworICAgICAgICBjb25zb2xl
V3JpdGUoJ1JVTih2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJ3M2MvdHJhY2sv
d2VidnR0L21lZGlhL3doaXRlIikpJyk7CisgICAgICAgIGNvbnNvbGVXcml0ZSgnRVZFTlQoY2Fu
cGxheXRocm91Z2gpJyk7CisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9KTsKKyAgICA8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxkaXYgY2xhc3M9InZpZGVvIj4KKyAgICAgICAgPGRp
diBjbGFzcz0iY3VlLWJveCIgc3R5bGU9ImxlZnQ6MDsgYm90dG9tOjA7IHRleHQtYWxpZ246IGxl
ZnQiPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImN1ZSI+QWJvdmU8L3NwYW4+PGJyPgorICAg
ICAgICAgICAgPHNwYW4gY2xhc3M9ImN1ZSI+TGVmdDwvc3Bhbj4KKyAgICAgICAgPC9kaXY+Cisg
ICAgICAgIDxkaXYgY2xhc3M9ImN1ZS1ib3giIHN0eWxlPSJyaWdodDowOyBib3R0b206MDsgdGV4
dC1hbGlnbjogcmlnaHQiPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImN1ZSI+QWJvdmU8L3Nw
YW4+PGJyPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImN1ZSI+UmlnaHQ8L3NwYW4+CisgICAg
ICAgIDwvZGl2PgorICAgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdl
YnZ0dC1zbmFwLXRvLWxpbmVzLWlubGluZS1zdHlsZS5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEv
dHJhY2svdHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMtaW5saW5lLXN0eWxlLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTdjMWMzMzQ0YzIzZGExOTFmYzkwYjg3NDA3OTgwNDMzZGUzNGQzNAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRvLWxp
bmVzLWlubGluZS1zdHlsZS5odG1sCkBAIC0wLDAgKzEsMzggQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+dHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMtaW5s
aW5lLXN0eWxlPC90aXRsZT4KKyAgICA8c3R5bGU+CisgICAgICAgIGh0bWwgeyBvdmVyZmxvdzpo
aWRkZW4gfQorICAgICAgICBib2R5IHsgbWFyZ2luOjAgfQorICAgICAgICA6OmN1ZSB7CisgICAg
ICAgICAgICBmb250LWZhbWlseTogQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAgICAgICAgIGZvbnQt
c2l6ZTogMTJweDsKKyAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrOworICAgICAg
ICAgICAgY29sb3I6IGdyZWVuOworICAgICAgICB9CisgICAgPC9zdHlsZT4KKyAgICA8c2NyaXB0
PnZhciByZXF1aXJlUGl4ZWxEdW1wID0gdHJ1ZTs8L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
Li4vdmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL21lZGlhLWZp
bGUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVu
ZXIoJ2xvYWQnLCBhc3luYyBldmVudCA9PiB7CisgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsK
KworICAgICAgICBydW4oYHZpZGVvLnF1ZXJ5U2VsZWN0b3IoInRyYWNrIikuc3JjID0gImNhcHRp
b25zLXdlYnZ0dC9zbmFwLXRvLWxpbmVzLWlubGluZS1zdHlsZS52dHQiYCk7CisgICAgICAgIHJ1
bihgdmlkZW8udGV4dFRyYWNrc1swXS5tb2RlID0gInNob3dpbmciYCk7CisgICAgICAgIGF3YWl0
IHdhaXRGb3IodmlkZW8ucXVlcnlTZWxlY3RvcigndHJhY2snKSwgJ2xvYWQnKTsKKworICAgICAg
ICBydW4oYHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgInczYy90cmFjay93ZWJ2
dHQvbWVkaWEvd2hpdGUiKWApOworICAgICAgICBhd2FpdCB3YWl0Rm9yKHZpZGVvLCAnY2FucGxh
eXRocm91Z2gnKTsKKworICAgICAgICBlbmRUZXN0KCk7CisgICAgfSk7CisgICAgPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8dmlkZW8+CisgICAgICAgIDx0cmFjayBpZD0idGVzdFRy
YWNrIiBzcmM9ImNhcHRpb25zLXdlYnZ0dC9zbmFwLXRvLWxpbmVzLWlubGluZS1zdHlsZS52dHQi
IGtpbmQ9ImNhcHRpb25zIiBkZWZhdWx0PgorICAgIDwvdmlkZW8+Cis8L2JvZHk+Cis8L2h0bWw+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVk
aWEvdHJhY2svdHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMtbGVmdC1yaWdodC1leHBlY3RlZC5o
dG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2std2VidnR0LXNuYXAtdG8tbGluZXMt
bGVmdC1yaWdodC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1NGZjMGJkZjczMTVkZTAxMGI5
NDgzZWM0OTJiYzI1NGM4ZGI4OTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRp
YS90cmFjay90cmFjay13ZWJ2dHQtc25hcC10by1saW5lcy1sZWZ0LXJpZ2h0LWV4cGVjdGVkLmh0
bWwKQEAgLTAsMCArMSw1MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAg
IDx0aXRsZT50cmFjay13ZWJ2dHQtc25hcC10by1saW5lcy1sZWZ0LXJpZ2h0PC90aXRsZT4KKyAg
ICA8c3R5bGU+CisgICAgICAgIC52aWRlbyB7IAorICAgICAgICAgICAgZGlzcGxheTogaW5saW5l
LWJsb2NrOworICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgICAgICAgd2lk
dGg6IDMyMHB4OworICAgICAgICAgICAgaGVpZ2h0OiAyNDBweDsKKyAgICAgICAgfQorICAgICAg
ICBodG1sIHsgb3ZlcmZsb3c6aGlkZGVuIH0KKyAgICAgICAgYm9keSB7IG1hcmdpbjowIH0KKyAg
ICAgICAgLmN1ZS1ib3ggeworICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAg
ICAgICAgZm9udC1zaXplOiAxMnB4OworICAgICAgICB9CisgICAgICAgIC5jdWUgeworICAgICAg
ICAgICAgZm9udC1mYW1pbHk6IEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgICAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiBibGFjazsKKyAgICAgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICAgICAgfQor
ICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdD52YXIgcmVxdWlyZVBpeGVsRHVtcCA9IHRydWU7PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSIuLi9tZWRpYS1maWxlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0Pgor
ICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgYXN5bmMgZXZlbnQgPT4geworICAg
ICAgICBjb25zb2xlV3JpdGUoJ1JVTih2aWRlby5xdWVyeVNlbGVjdG9yKCJ0cmFjayIpLnNyYyA9
ICJjYXB0aW9ucy13ZWJ2dHQvc25hcC10by1saW5lcy1sZWZ0LWFuZC1yaWdodC52dHQiKScpOwor
ICAgICAgICBjb25zb2xlV3JpdGUoJ1JVTih2aWRlby50ZXh0VHJhY2tzWzBdLm1vZGUgPSAic2hv
d2luZyIpJyk7CisgICAgICAgIGNvbnNvbGVXcml0ZSgnRVZFTlQobG9hZCknKTsKKyAgICAgICAg
Y29uc29sZVdyaXRlKCdSVU4odmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAidzNj
L3RyYWNrL3dlYnZ0dC9tZWRpYS93aGl0ZSIpKScpOworICAgICAgICBjb25zb2xlV3JpdGUoJ0VW
RU5UKGNhbnBsYXl0aHJvdWdoKScpOworICAgICAgICBlbmRUZXN0KCk7CisgICAgfSk7CisgICAg
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGNsYXNzPSJ2aWRlbyI+CisgICAg
ICAgIDxkaXYgY2xhc3M9ImN1ZS1ib3giIHN0eWxlPSJsZWZ0OjA7IGJvdHRvbTowOyB0ZXh0LWFs
aWduOiBsZWZ0Ij4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjdWUiPkFib3ZlPC9zcGFuPjxi
cj4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjdWUiPkxlZnQ8L3NwYW4+CisgICAgICAgIDwv
ZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJjdWUtYm94IiBzdHlsZT0icmlnaHQ6MDsgYm90dG9t
OjA7IHRleHQtYWxpZ246IHJpZ2h0Ij4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjdWUiPkFi
b3ZlPC9zcGFuPjxicj4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjdWUiPlJpZ2h0PC9zcGFu
PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay90
cmFjay13ZWJ2dHQtc25hcC10by1saW5lcy1sZWZ0LXJpZ2h0Lmh0bWwgYi9MYXlvdXRUZXN0cy9t
ZWRpYS90cmFjay90cmFjay13ZWJ2dHQtc25hcC10by1saW5lcy1sZWZ0LXJpZ2h0Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjk4OTdkZmU1MzAwN2IzNDAxOGZiY2Y4ZjViNzM0YmYzN2NjMmIxZgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLXdlYnZ0dC1zbmFwLXRv
LWxpbmVzLWxlZnQtcmlnaHQuaHRtbApAQCAtMCwwICsxLDM4IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPnRyYWNrLXdlYnZ0dC1zbmFwLXRvLWxpbmVzLWxl
ZnQtcmlnaHQ8L3RpdGxlPgorICAgIDxzdHlsZT4KKyAgICAgICAgaHRtbCB7IG92ZXJmbG93Omhp
ZGRlbiB9CisgICAgICAgIGJvZHkgeyBtYXJnaW46MCB9CisgICAgICAgIDo6Y3VlIHsKKyAgICAg
ICAgICAgIGZvbnQtZmFtaWx5OiBBaGVtLCBzYW5zLXNlcmlmOworICAgICAgICAgICAgZm9udC1z
aXplOiAxMnB4OworICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7CisgICAgICAg
ICAgICBjb2xvcjogZ3JlZW47CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQ+
dmFyIHJlcXVpcmVQaXhlbER1bXAgPSB0cnVlOzwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIu
Li92aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vbWVkaWEtZmls
ZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cignbG9hZCcsIGFzeW5jIGV2ZW50ID0+IHsKKyAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOwor
CisgICAgICAgIHJ1bihgdmlkZW8ucXVlcnlTZWxlY3RvcigidHJhY2siKS5zcmMgPSAiY2FwdGlv
bnMtd2VidnR0L3NuYXAtdG8tbGluZXMtbGVmdC1hbmQtcmlnaHQudnR0ImApOworICAgICAgICBy
dW4oYHZpZGVvLnRleHRUcmFja3NbMF0ubW9kZSA9ICJzaG93aW5nImApOworICAgICAgICBhd2Fp
dCB3YWl0Rm9yKHZpZGVvLnF1ZXJ5U2VsZWN0b3IoJ3RyYWNrJyksICdsb2FkJyk7CisKKyAgICAg
ICAgcnVuKGB2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJ3M2MvdHJhY2svd2Vi
dnR0L21lZGlhL3doaXRlIilgKTsKKyAgICAgICAgYXdhaXQgd2FpdEZvcih2aWRlbywgJ2NhbnBs
YXl0aHJvdWdoJyk7CisKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0pOworICAgIDwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHZpZGVvPgorICAgICAgICA8dHJhY2sgaWQ9InRlc3RU
cmFjayIga2luZD0iY2FwdGlvbnMiIGRlZmF1bHQ+CisgICAgPC92aWRlbz4KKzwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>