<?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>158467</bug_id>
          
          <creation_ts>2016-06-07 01:18:20 -0700</creation_ts>
          <short_desc>WebRTC: Implement MediaEndpointPeerConnection::setRemoteDescription()</short_desc>
          <delta_ts>2016-06-09 10:08:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>143211</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Bergkvist">adam.bergkvist</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1199967</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-06-07 01:18:20 -0700</bug_when>
    <thetext>Implement the MediaEndponitPeerConnection implementation of RTCPeerConnection.setRemoteDescription [1].

[1] https://w3c.github.io/webrtc-pc/archives/20160513/webrtc.html#dom-rtcpeerconnection-setremotedescription</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200458</commentid>
    <comment_count>1</comment_count>
      <attachid>280807</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-06-08 08:59:57 -0700</bug_when>
    <thetext>Created attachment 280807
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200483</commentid>
    <comment_count>2</comment_count>
      <attachid>280807</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-06-08 10:15:44 -0700</bug_when>
    <thetext>Comment on attachment 280807
Proposed patch

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

&gt; LayoutTests/fast/mediastream/RTCTrackEvent-constructor.html:64
&gt; +                debug(&quot;Dictionary members receiver, track and transceiver are not nullable&quot;);
&gt; +                shouldThrow(&quot;new RTCTrackEvent(&apos;eventType&apos;, { receiver: null, track: track, transceiver: transceiver})&quot;);
&gt; +                shouldThrow(&quot;new RTCTrackEvent(&apos;eventType&apos;, { receiver: receiver, track: null, transceiver: transceiver})&quot;);
&gt; +                shouldThrow(&quot;new RTCTrackEvent(&apos;eventType&apos;, { receiver: receiver, track: track, transceiver: null})&quot;);
&gt; +                debug(&quot;&quot;);
&gt; +
&gt; +                debug(&quot;Dictionary members receiver, track and transceiver are required&quot;);
&gt; +                shouldThrow(&quot;new RTCTrackEvent(&apos;eventType&apos;, { track: track, transceiver: transceiver})&quot;);
&gt; +                shouldThrow(&quot;new RTCTrackEvent(&apos;eventType&apos;, { receiver: receiver, transceiver: transceiver})&quot;);
&gt; +                shouldThrow(&quot;new RTCTrackEvent(&apos;eventType&apos;, { receiver: receiver, track: track})&quot;);
&gt; +                debug(&quot;&quot;);

Please add a FIXME and a bug # about these failures.

&gt; Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp:389
&gt; +

Minor nit: I find the blank line here slightly distracting

&gt; Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp:401
&gt; +
&gt; +

Ditto.

&gt; Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp:412
&gt; +    for (unsigned i = 0; i &lt; mediaDescriptions.size(); ++i) {
&gt; +        PeerMediaDescription* mediaDescription = mediaDescriptions[i].get();

Nit: can you use a modern for loop here?

&gt; Source/WebCore/Modules/mediastream/RTCTrackEvent.idl:37
&gt; +   [InitializedByEventConstructor] readonly attribute MediaStream[] streams;

Can you use &quot;attribute sequence&lt;MediaStream&gt; streams&quot; instead?

&gt; Source/WebCore/platform/mock/MockMediaEndpoint.cpp:140
&gt; +        for (auto&amp; p : defaultPayloads) {

Nit: a single letter variable name in a modern for loop - such an anachronism :-)

Might as well spell out the variable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200544</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-06-08 12:45:58 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 280807 [details]
&gt; Proposed patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=280807&amp;action=review
&gt; 
&gt; &gt; LayoutTests/fast/mediastream/RTCTrackEvent-constructor.html:64
&gt; &gt; +                debug(&quot;Dictionary members receiver, track and transceiver are not nullable&quot;);
&gt; &gt; +                shouldThrow(&quot;new RTCTrackEvent(&apos;eventType&apos;, { receiver: null, track: track, transceiver: transceiver})&quot;);
&gt; &gt; +                shouldThrow(&quot;new RTCTrackEvent(&apos;eventType&apos;, { receiver: receiver, track: null, transceiver: transceiver})&quot;);
&gt; &gt; +                shouldThrow(&quot;new RTCTrackEvent(&apos;eventType&apos;, { receiver: receiver, track: track, transceiver: null})&quot;);
&gt; &gt; +                debug(&quot;&quot;);
&gt; &gt; +
&gt; &gt; +                debug(&quot;Dictionary members receiver, track and transceiver are required&quot;);
&gt; &gt; +                shouldThrow(&quot;new RTCTrackEvent(&apos;eventType&apos;, { track: track, transceiver: transceiver})&quot;);
&gt; &gt; +                shouldThrow(&quot;new RTCTrackEvent(&apos;eventType&apos;, { receiver: receiver, transceiver: transceiver})&quot;);
&gt; &gt; +                shouldThrow(&quot;new RTCTrackEvent(&apos;eventType&apos;, { receiver: receiver, track: track})&quot;);
&gt; &gt; +                debug(&quot;&quot;);
&gt; 
&gt; Please add a FIXME and a bug # about these failures.

Fixed.

Bug: https://bugs.webkit.org/show_bug.cgi?id=158536

&gt; &gt; Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp:389
&gt; &gt; +
&gt; 
&gt; Minor nit: I find the blank line here slightly distracting

Gone. :)

&gt; &gt; Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp:401
&gt; &gt; +
&gt; &gt; +
&gt; 
&gt; Ditto.

Fixed.

&gt; &gt; Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp:412
&gt; &gt; +    for (unsigned i = 0; i &lt; mediaDescriptions.size(); ++i) {
&gt; &gt; +        PeerMediaDescription* mediaDescription = mediaDescriptions[i].get();
&gt; 
&gt; Nit: can you use a modern for loop here?

True. Fixed.

&gt; &gt; Source/WebCore/Modules/mediastream/RTCTrackEvent.idl:37
&gt; &gt; +   [InitializedByEventConstructor] readonly attribute MediaStream[] streams;
&gt; 
&gt; Can you use &quot;attribute sequence&lt;MediaStream&gt; streams&quot; instead?

A sequence can&apos;t be an interface attribute [1].

[1] http://heycam.github.io/webidl/#idl-sequence

&gt; &gt; Source/WebCore/platform/mock/MockMediaEndpoint.cpp:140
&gt; &gt; +        for (auto&amp; p : defaultPayloads) {
&gt; 
&gt; Nit: a single letter variable name in a modern for loop - such an
&gt; anachronism :-)
&gt; 
&gt; Might as well spell out the variable.

Ops. :) Let&apos;s use payload since defaultPayload is taken.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200545</commentid>
    <comment_count>4</comment_count>
      <attachid>280824</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-06-08 12:47:15 -0700</bug_when>
    <thetext>Created attachment 280824
Updated patch

Thanks for reviewing; updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200729</commentid>
    <comment_count>5</comment_count>
      <attachid>280824</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-08 22:08:13 -0700</bug_when>
    <thetext>Comment on attachment 280824
Updated patch

Clearing flags on attachment: 280824

Committed r201851: &lt;http://trac.webkit.org/changeset/201851&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200730</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-08 22:08:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280807</attachid>
            <date>2016-06-08 08:59:57 -0700</date>
            <delta_ts>2016-06-08 12:47:15 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>mepc-set-remote_0.patch</filename>
            <type>text/plain</type>
            <size>52403</size>
            <attacher name="Adam Bergkvist">adam.bergkvist</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0MWRlM2M4Li5hNDY0ZWU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjUgQEAKIDIwMTYtMDYt
MDggIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgogCisgICAg
ICAgIFdlYlJUQzogSW1sZW1lbnQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpzZXRSZW1v
dGVEZXNjcmlwdGlvbigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTg0NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgdGVzdHMgZm9yIFJUQ1BlZXJDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0
aW9uKCkgYW5kIHRoZSBSVENUcmFja0V2ZW50IGNvbnN0cnVjdG9yLgorCisgICAgICAgICogZmFz
dC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1zZXRSZW1vdGVEZXNjcmlwdGlvbi1vZmZl
ci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24tc2V0UmVtb3RlRGVzY3JpcHRpb24tb2ZmZXIuaHRtbDogQWRkZWQuCisgICAg
ICAgIFZlcmlmeSB0aGUgZGVzY3JpcHRpb24gc2V0LCB0aGUgZXhwZWN0ZWQgUlRDUGVlckNvbm5l
Y3Rpb24gc3RhdGUgY2hhbmdlcyBhbmQgdGhhdCB0aGUKKyAgICAgICAgJ3RyYWNrJyBldmVudCBp
cyBmaXJlZCBiZWZvcmUgdGhlIHNldFJlbW90ZURlc2NyaXB0aW9uKCkgcHJvbWlzZSBmdWxmaWxs
cy4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL1JUQ1RyYWNrRXZlbnQtY29uc3RydWN0b3It
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL1JUQ1RyYWNr
RXZlbnQtY29uc3RydWN0b3IuaHRtbDogQWRkZWQuCisgICAgICAgIFRoaXMgdGVzdCBoYXMgc29t
ZSBleHBlY3RlZCBmYWlsdXJlcyBzaW5jZSB0aGUgYmluZGluZ3MgZ2VuZXJhdG9yIGRvbid0IHN1
cHBvcnQgJ3JlcXVpcmVkJworICAgICAgICBkaWN0aW9uYXJ5IG1lbWJlcnMgZm9yIGV2ZW50IGlu
aXQgZGljdGlvbmFyaWVzLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25z
OgorICAgICAgICBTa2lwIHRlc3RzIGZvciBtYWMgdGhhdCByZXF1aXJlIGJ1aWxkaW5nIHdpdGgg
V0VCX1JUQyBlbmFibGVkLgorCisyMDE2LTA2LTA4ICBBZGFtIEJlcmdrdmlzdCAgPGFkYW0uYmVy
Z2t2aXN0QGVyaWNzc29uLmNvbT4KKwogICAgICAgICBXZWJSVEM6IEltbGVtZW50IE1lZGlhRW5k
cG9pbnRQZWVyQ29ubmVjdGlvbjo6c2V0TG9jYWxEZXNjcmlwdGlvbigpCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgxOTAKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1zZXRSZW1vdGVE
ZXNjcmlwdGlvbi1vZmZlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXNldFJlbW90ZURlc2NyaXB0aW9uLW9mZmVyLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDYzNmM2Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlv
bi1zZXRSZW1vdGVEZXNjcmlwdGlvbi1vZmZlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2NSBA
QAorVGVzdCBSVENQZWVyQ29ubmVjdGlvbi5zZXRSZW1vdGVEZXNjcmlwdGlvbiBjYWxsZWQgd2l0
aCBhbiBSVENTZXNzaW9uRGVzY3JpcHRpb24gb2YgdHlwZSAnb2ZmZXInCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCisqKiogQ3JlYXRlIChyZW1vdGUpIG9mZmVyIHdpdGggYXVkaW8g
KHJlbW90ZU9mZmVyMSkKKyoqKiBEb25lLCBzdGFydCB0ZXN0aW5nIHdpdGggcmVtb3RlT2ZmZXIx
CitQQVNTIHBjLnNpZ25hbGluZ1N0YXRlIGlzICdzdGFibGUnCitQQVNTIHBjLnJlbW90ZURlc2Ny
aXB0aW9uIGlzIG51bGwKK1BBU1MgcGMucGVuZGluZ1JlbW90ZURlc2NyaXB0aW9uIGlzIG51bGwK
K1BBU1MgcGMuY3VycmVudFJlbW90ZURlc2NyaXB0aW9uIGlzIG51bGwKKworKioqICd0cmFjaycg
ZXZlbnQgbXVzdCBmaXJlIGJlZm9yZSBzZXRSZW1vdGVEZXNjcmlwdGlvbiBwcm9taXNlIGlzIGZ1
bGZpbGxlZAorKioqIENoZWNrIHRyYWNrIGV2ZW50IHByb3BlcnRpZXMKK1BBU1MgcGMuZ2V0UmVj
ZWl2ZXJzKCkuaW5jbHVkZXModHJhY2tFdmVudC5yZWNlaXZlcikgaXMgdHJ1ZQorUEFTUyBwYy5n
ZXRUcmFuc2NlaXZlcnMoKS5pbmNsdWRlcyh0cmFja0V2ZW50LnRyYW5zY2VpdmVyKSBpcyB0cnVl
CisqKiogUmVtb3RlIHRyYWNrIHNob3VsZCBiZSBtdXRlZCBpbml0aWFsbHkKK1BBU1MgdHJhY2tF
dmVudC50cmFjay5tdXRlZCBpcyB0cnVlCisqKiogUmVtb3RlIHRyYWNrIHByb3BlcnRpZXMgc2hv
dWxkIG1hdGNoIHRyYWNrIGFkZGVkIGF0IHJlbW90ZSBzaWRlIChyZW1vdGVQYykKK1BBU1MgdHJh
Y2tFdmVudC50cmFjay5raW5kIGlzIHJlbW90ZVBjQXVkaW9UcmFjay5raW5kCitQQVNTIHRyYWNr
RXZlbnQudHJhY2suaWQgaXMgcmVtb3RlUGNBdWRpb1RyYWNrLmlkCitQQVNTIHRyYWNrRXZlbnQu
dHJhY2subGFiZWwgaXMgJ3JlbW90ZSBhdWRpbycKKyoqKiBDaGVjayBsb2NhbCBhbmQgcmVtb3Rl
IHRyYW5zY2VpdmVycworUEFTUyB0cmFja0V2ZW50LnRyYW5zY2VpdmVyLm1pZCBpcyByZW1vdGVQ
Y0F1ZGlvVHJhbnNjZWl2ZXIubWlkCisKK1BBU1MgcmVtb3RlT2ZmZXIxIHNldCBhcyByZW1vdGUg
ZGVzY3JpcHRpb24KK1BBU1MgcGMuc2lnbmFsaW5nU3RhdGUgaXMgJ2hhdmUtcmVtb3RlLW9mZmVy
JworUEFTUyBwYy5yZW1vdGVEZXNjcmlwdGlvbiBpcyByZW1vdGVPZmZlcjEKK1BBU1MgcGMucGVu
ZGluZ1JlbW90ZURlc2NyaXB0aW9uIGlzIHJlbW90ZU9mZmVyMQorUEFTUyBwYy5jdXJyZW50UmVt
b3RlRGVzY3JpcHRpb24gaXMgbnVsbAorCitQQVNTIHJlbW90ZU9mZmVyMSBzZXQgYXMgcmVtb3Rl
IGRlc2NyaXB0aW9uIChhZ2FpbikKK1BBU1MgcGMuc2lnbmFsaW5nU3RhdGUgaXMgJ2hhdmUtcmVt
b3RlLW9mZmVyJworCisqKiogVHJ5IHNldHRpbmcgbG9jYWwgZGVzY3JpcHRpb25zIHdpdGggYmFk
IHR5cGVzIGZvciB0aGUgY3VycmVudCBzdGF0ZQorUEFTUyBwcm9taXNlIHBjLnNldFJlbW90ZURl
c2NyaXB0aW9uKG5ldyBSVENTZXNzaW9uRGVzY3JpcHRpb24oe3R5cGU6J2Fuc3dlcicsIHNkcDpy
ZW1vdGVPZmZlcjEuc2RwfSkpOyByZWplY3RlZCB3aXRoIEVycm9yOiBJbnZhbGlkU3RhdGVFcnJv
cjogRE9NIEV4Y2VwdGlvbiAxMQorUEFTUyBwcm9taXNlIHBjLnNldFJlbW90ZURlc2NyaXB0aW9u
KG5ldyBSVENTZXNzaW9uRGVzY3JpcHRpb24oe3R5cGU6J3ByYW5zd2VyJywgc2RwOnJlbW90ZU9m
ZmVyMS5zZHB9KSk7IHJlamVjdGVkIHdpdGggRXJyb3I6IEludmFsaWRTdGF0ZUVycm9yOiBET00g
RXhjZXB0aW9uIDExCisKKyoqKiBDcmVhdGUgKHJlbW90ZSkgb2ZmZXIgd2l0aCB2aWRlbyAocmVt
b3RlT2ZmZXIyKQorKioqIERvbmUsIHN0YXJ0IHRlc3Rpbmcgd2l0aCByZW1vdGVPZmZlcjIKK1BB
U1MgcGMuc2lnbmFsaW5nU3RhdGUgaXMgJ2hhdmUtcmVtb3RlLW9mZmVyJworCisqKiogJ3RyYWNr
JyBldmVudCBtdXN0IGZpcmUgYmVmb3JlIHNldFJlbW90ZURlc2NyaXB0aW9uIHByb21pc2UgaXMg
ZnVsZmlsbGVkCisqKiogQ2hlY2sgdHJhY2sgZXZlbnQgcHJvcGVydGllcworUEFTUyBwYy5nZXRS
ZWNlaXZlcnMoKS5pbmNsdWRlcyh0cmFja0V2ZW50LnJlY2VpdmVyKSBpcyB0cnVlCitQQVNTIHBj
LmdldFRyYW5zY2VpdmVycygpLmluY2x1ZGVzKHRyYWNrRXZlbnQudHJhbnNjZWl2ZXIpIGlzIHRy
dWUKKyoqKiBSZW1vdGUgdHJhY2sgc2hvdWxkIGJlIG11dGVkIGluaXRpYWxseQorUEFTUyB0cmFj
a0V2ZW50LnRyYWNrLm11dGVkIGlzIHRydWUKKyoqKiBSZW1vdGUgdHJhY2sgcHJvcGVydGllcyBz
aG91bGQgbWF0Y2ggdHJhY2sgYWRkZWQgYXQgcmVtb3RlIHNpZGUgKHJlbW90ZVBjKQorUEFTUyB0
cmFja0V2ZW50LnRyYWNrLmtpbmQgaXMgcmVtb3RlUGNWaWRlb1RyYWNrLmtpbmQKK1BBU1MgdHJh
Y2tFdmVudC50cmFjay5pZCBpcyByZW1vdGVQY1ZpZGVvVHJhY2suaWQKK1BBU1MgdHJhY2tFdmVu
dC50cmFjay5sYWJlbCBpcyAncmVtb3RlIHZpZGVvJworKioqIENoZWNrIGxvY2FsIGFuZCByZW1v
dGUgdHJhbnNjZWl2ZXJzCitQQVNTIHRyYWNrRXZlbnQudHJhbnNjZWl2ZXIubWlkIGlzIHJlbW90
ZVBjVmlkZW9UcmFuc2NlaXZlci5taWQKKworUEFTUyByZW1vdGVPZmZlcjIgc2V0IGFzIHJlbW90
ZSBkZXNjcmlwdGlvbgorUEFTUyBwYy5zaWduYWxpbmdTdGF0ZSBpcyAnaGF2ZS1yZW1vdGUtb2Zm
ZXInCitQQVNTIHBjLnJlbW90ZURlc2NyaXB0aW9uIGlzIHJlbW90ZU9mZmVyMgorUEFTUyBwYy5w
ZW5kaW5nUmVtb3RlRGVzY3JpcHRpb24gaXMgcmVtb3RlT2ZmZXIyCitQQVNTIHBjLmN1cnJlbnRS
ZW1vdGVEZXNjcmlwdGlvbiBpcyBudWxsCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXNldFJlbW90ZURlc2NyaXB0aW9uLW9mZmVyLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXNldFJlbW90
ZURlc2NyaXB0aW9uLW9mZmVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uZGRjZmZjYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24tc2V0UmVtb3RlRGVzY3JpcHRpb24tb2ZmZXIuaHRtbApAQCAt
MCwwICsxLDE2MCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3Byb21pc2UtdXRpbHMuanMiPjwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eT4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIHZhciBzdHJlYW07CisgICAgICAgICAg
ICB2YXIgcmVtb3RlUGNBdWRpb1RyYWNrOworICAgICAgICAgICAgdmFyIHJlbW90ZVBjVmlkZW9U
cmFjazsKKyAgICAgICAgICAgIHZhciByZW1vdGVQY0F1ZGlvVHJhbnNjZWl2ZXI7CisgICAgICAg
ICAgICB2YXIgcmVtb3RlUGNWaWRlb1RyYW5zY2VpdmVyOworCisgICAgICAgICAgICB2YXIgcmVt
b3RlT2ZmZXIxOworICAgICAgICAgICAgdmFyIHJlbW90ZU9mZmVyMjsKKworICAgICAgICAgICAg
dmFyIHRyYWNrRXZlbnQ7CisgICAgICAgICAgICB2YXIgbWVkaWFUeXBlcyA9IFsiQXVkaW8iLCAi
VmlkZW8iXTsKKworICAgICAgICAgICAgZGVzY3JpcHRpb24oIlRlc3QgUlRDUGVlckNvbm5lY3Rp
b24uc2V0UmVtb3RlRGVzY3JpcHRpb24gY2FsbGVkIHdpdGggYW4gUlRDU2Vzc2lvbkRlc2NyaXB0
aW9uIG9mIHR5cGUgJ29mZmVyJyIpOworCisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRVc2VyTWVkaWFQZXJtaXNzaW9uKHRy
dWUpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgZGVidWcoIlRoaXMgdGVz
dCBjYW4gbm90IGJlIHJ1biB3aXRob3V0IHRoZSB0ZXN0UnVubmVyIik7CisgICAgICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBwYyA9
IG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbe3VybHM6J3N0dW46Zm9v
LmNvbSd9XX0pOworICAgICAgICAgICAgdmFyIHJlbW90ZVBjID0gbmV3IHdlYmtpdFJUQ1BlZXJD
b25uZWN0aW9uKHtpY2VTZXJ2ZXJzOlt7dXJsczonc3R1bjpmb28uY29tJ31dfSk7CisKKyAgICAg
ICAgICAgIGZ1bmN0aW9uIHRlc3RSZW1vdGVUcmFjayhldnQsIG1lZGlhVHlwZSkgeworICAgICAg
ICAgICAgICAgIHRyYWNrRXZlbnQgPSBldnQ7CisgICAgICAgICAgICAgICAgdmFyIHJlbW90ZVBj
VHJhY2tOYW1lID0gYHJlbW90ZVBjJHttZWRpYVR5cGV9VHJhY2tgOworCisgICAgICAgICAgICAg
ICAgZGVidWcoIioqKiAndHJhY2snIGV2ZW50IG11c3QgZmlyZSBiZWZvcmUgc2V0UmVtb3RlRGVz
Y3JpcHRpb24gcHJvbWlzZSBpcyBmdWxmaWxsZWQiKTsKKworICAgICAgICAgICAgICAgIGRlYnVn
KCIqKiogQ2hlY2sgdHJhY2sgZXZlbnQgcHJvcGVydGllcyIpOworICAgICAgICAgICAgICAgIHNo
b3VsZEJlVHJ1ZSgicGMuZ2V0UmVjZWl2ZXJzKCkuaW5jbHVkZXModHJhY2tFdmVudC5yZWNlaXZl
cikiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZVRydWUoInBjLmdldFRyYW5zY2VpdmVycygp
LmluY2x1ZGVzKHRyYWNrRXZlbnQudHJhbnNjZWl2ZXIpIik7CisKKyAgICAgICAgICAgICAgICBk
ZWJ1ZygiKioqIFJlbW90ZSB0cmFjayBzaG91bGQgYmUgbXV0ZWQgaW5pdGlhbGx5Iik7CisgICAg
ICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0cmFja0V2ZW50LnRyYWNrLm11dGVkIik7CisKKyAg
ICAgICAgICAgICAgICBkZWJ1ZygiKioqIFJlbW90ZSB0cmFjayBwcm9wZXJ0aWVzIHNob3VsZCBt
YXRjaCB0cmFjayBhZGRlZCBhdCByZW1vdGUgc2lkZSAocmVtb3RlUGMpIik7CisgICAgICAgICAg
ICAgICAgc2hvdWxkQmUoInRyYWNrRXZlbnQudHJhY2sua2luZCIsIGAke3JlbW90ZVBjVHJhY2tO
YW1lfS5raW5kYCk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoInRyYWNrRXZlbnQudHJhY2su
aWQiLCBgJHtyZW1vdGVQY1RyYWNrTmFtZX0uaWRgKTsKKyAgICAgICAgICAgICAgICBzaG91bGRC
ZSgidHJhY2tFdmVudC50cmFjay5sYWJlbCIsIGAncmVtb3RlICR7bWVkaWFUeXBlLnRvTG9jYWxl
TG93ZXJDYXNlKCl9J2ApOworCisgICAgICAgICAgICAgICAgZGVidWcoIioqKiBDaGVjayBsb2Nh
bCBhbmQgcmVtb3RlIHRyYW5zY2VpdmVycyIpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJ0
cmFja0V2ZW50LnRyYW5zY2VpdmVyLm1pZCIsIGByZW1vdGVQYyR7bWVkaWFUeXBlfVRyYW5zY2Vp
dmVyLm1pZGApOworICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcGMub250cmFjayA9IGZ1bmN0aW9uIChldnQpIHsKKyAgICAgICAgICAgICAg
ICB0ZXN0UmVtb3RlVHJhY2soZXZ0LCBtZWRpYVR5cGVzLnNoaWZ0KCkpOworICAgICAgICAgICAg
fTsKKworICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoeyAi
YXVkaW8iOiB0cnVlLCAidmlkZW8iOiB0cnVlIH0pCisgICAgICAgICAgICAudGhlbihmdW5jdGlv
biAocykgeworICAgICAgICAgICAgICAgIHN0cmVhbSA9IHM7CisKKyAgICAgICAgICAgICAgICBy
ZW1vdGVQY0F1ZGlvVHJhY2sgPSBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXTsKKyAgICAgICAg
ICAgICAgICByZW1vdGVQY1ZpZGVvVHJhY2sgPSBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXTsK
KworICAgICAgICAgICAgICAgIGRlYnVnKCIqKiogQ3JlYXRlIChyZW1vdGUpIG9mZmVyIHdpdGgg
YXVkaW8gKHJlbW90ZU9mZmVyMSkiKTsKKyAgICAgICAgICAgICAgICByZW1vdGVQYy5hZGRUcmFj
ayhyZW1vdGVQY0F1ZGlvVHJhY2ssIHN0cmVhbSk7CisgICAgICAgICAgICAgICAgcmVtb3RlUGNB
dWRpb1RyYW5zY2VpdmVyID0gcmVtb3RlUGMuZ2V0VHJhbnNjZWl2ZXJzKClbMF07CisKKyAgICAg
ICAgICAgICAgICByZXR1cm4gcmVtb3RlUGMuY3JlYXRlT2ZmZXIoKTsKKyAgICAgICAgICAgIH0p
CisgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVtb3RlT2ZmZXJBcmcpIHsKKyAgICAgICAg
ICAgICAgICByZW1vdGVPZmZlcjEgPSByZW1vdGVPZmZlckFyZzsKKworICAgICAgICAgICAgICAg
IHJldHVybiByZW1vdGVQYy5zZXRMb2NhbERlc2NyaXB0aW9uKHJlbW90ZU9mZmVyMSk7CisgICAg
ICAgICAgICB9KQorICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkgeworCisgICAgICAgICAg
ICAgICAgZGVidWcoIioqKiBEb25lLCBzdGFydCB0ZXN0aW5nIHdpdGggcmVtb3RlT2ZmZXIxIik7
CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoInBjLnNpZ25hbGluZ1N0YXRlIiwgIidzdGFibGUn
Iik7CisKKyAgICAgICAgICAgICAgICBzaG91bGRCZU51bGwoInBjLnJlbW90ZURlc2NyaXB0aW9u
Iik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVOdWxsKCJwYy5wZW5kaW5nUmVtb3RlRGVzY3Jp
cHRpb24iKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZU51bGwoInBjLmN1cnJlbnRSZW1vdGVE
ZXNjcmlwdGlvbiIpOworICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsKKworICAgICAgICAgICAg
ICAgIHJldHVybiBwYy5zZXRSZW1vdGVEZXNjcmlwdGlvbihyZW1vdGVPZmZlcjEpOworICAgICAg
ICAgICAgfSkKKyAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJyZW1vdGVPZmZlcjEgc2V0IGFzIHJlbW90ZSBkZXNjcmlwdGlvbiIpOwor
CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoInBjLnNpZ25hbGluZ1N0YXRlIiwgIidoYXZlLXJl
bW90ZS1vZmZlciciKTsKKworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJwYy5yZW1vdGVEZXNj
cmlwdGlvbiIsICJyZW1vdGVPZmZlcjEiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgicGMu
cGVuZGluZ1JlbW90ZURlc2NyaXB0aW9uIiwgInJlbW90ZU9mZmVyMSIpOworICAgICAgICAgICAg
ICAgIHNob3VsZEJlTnVsbCgicGMuY3VycmVudFJlbW90ZURlc2NyaXB0aW9uIik7CisgICAgICAg
ICAgICAgICAgZGVidWcoIiIpOworCisgICAgICAgICAgICAgICAgcmV0dXJuIHBjLnNldFJlbW90
ZURlc2NyaXB0aW9uKHJlbW90ZU9mZmVyMSk7CisgICAgICAgICAgICB9KQorICAgICAgICAgICAg
LnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoInJlbW90ZU9m
ZmVyMSBzZXQgYXMgcmVtb3RlIGRlc2NyaXB0aW9uIChhZ2FpbikiKTsKKworICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCJwYy5zaWduYWxpbmdTdGF0ZSIsICInaGF2ZS1yZW1vdGUtb2ZmZXInIik7
CisgICAgICAgICAgICAgICAgZGVidWcoIiIpOworCisgICAgICAgICAgICAgICAgZGVidWcoIioq
KiBUcnkgc2V0dGluZyBsb2NhbCBkZXNjcmlwdGlvbnMgd2l0aCBiYWQgdHlwZXMgZm9yIHRoZSBj
dXJyZW50IHN0YXRlIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHByb21pc2VTaG91bGRSZWpl
Y3QoInBjLnNldFJlbW90ZURlc2NyaXB0aW9uKG5ldyBSVENTZXNzaW9uRGVzY3JpcHRpb24oe3R5
cGU6J2Fuc3dlcicsIHNkcDpyZW1vdGVPZmZlcjEuc2RwfSkpOyIpOworICAgICAgICAgICAgfSkK
KyAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
cHJvbWlzZVNob3VsZFJlamVjdCgicGMuc2V0UmVtb3RlRGVzY3JpcHRpb24obmV3IFJUQ1Nlc3Np
b25EZXNjcmlwdGlvbih7dHlwZToncHJhbnN3ZXInLCBzZHA6cmVtb3RlT2ZmZXIxLnNkcH0pKTsi
KTsKKyAgICAgICAgICAgIH0pCisgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgZGVidWcoIiIpOworCisgICAgICAgICAgICAgICAgZGVidWcoIioqKiBDcmVh
dGUgKHJlbW90ZSkgb2ZmZXIgd2l0aCB2aWRlbyAocmVtb3RlT2ZmZXIyKSIpOworICAgICAgICAg
ICAgICAgIHZhciBzZW5kZXIgPSByZW1vdGVQYy5hZGRUcmFjayhyZW1vdGVQY1ZpZGVvVHJhY2ss
IHN0cmVhbSk7CisgICAgICAgICAgICAgICAgLy8gT3JkZXIgb2YgdHJhbnNjZWl2ZXJzIGlzIHVu
ZGVmaW5lZCBzbyB3ZSBuZWVkIHRvIG1hdGNoIGl0IHdpdGggdGhlIHNlbmRlci4KKyAgICAgICAg
ICAgICAgICB2YXIgdHJhbnNjZWl2ZXJzID0gcmVtb3RlUGMuZ2V0VHJhbnNjZWl2ZXJzKCk7Cisg
ICAgICAgICAgICAgICAgcmVtb3RlUGNWaWRlb1RyYW5zY2VpdmVyID0gdHJhbnNjZWl2ZXJzWzFd
LnNlbmRlciA9PSBzZW5kZXIgPyB0cmFuc2NlaXZlcnNbMV0gOiB0cmFuc2NlaXZlcnNbMF07CisK
KyAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3RlUGMuY3JlYXRlT2ZmZXIoKTsKKyAgICAgICAg
ICAgIH0pCisgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVtb3RlT2ZmZXJBcmcpIHsKKyAg
ICAgICAgICAgICAgICByZW1vdGVPZmZlcjIgPSByZW1vdGVPZmZlckFyZzsKKworICAgICAgICAg
ICAgICAgIHJldHVybiByZW1vdGVQYy5zZXRMb2NhbERlc2NyaXB0aW9uKHJlbW90ZU9mZmVyMik7
CisgICAgICAgICAgICB9KQorICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICAgIGRlYnVnKCIqKiogRG9uZSwgc3RhcnQgdGVzdGluZyB3aXRoIHJlbW90ZU9mZmVy
MiIpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJwYy5zaWduYWxpbmdTdGF0ZSIsICInaGF2
ZS1yZW1vdGUtb2ZmZXInIik7CisgICAgICAgICAgICAgICAgZGVidWcoIiIpOworCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHBjLnNldFJlbW90ZURlc2NyaXB0aW9uKHJlbW90ZU9mZmVyMik7Cisg
ICAgICAgICAgICB9KQorICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoInJlbW90ZU9mZmVyMiBzZXQgYXMgcmVtb3RlIGRlc2NyaXB0aW9u
Iik7CisKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgicGMuc2lnbmFsaW5nU3RhdGUiLCAiJ2hh
dmUtcmVtb3RlLW9mZmVyJyIpOworCisgICAgICAgICAgICAgICAgc2hvdWxkQmUoInBjLnJlbW90
ZURlc2NyaXB0aW9uIiwgInJlbW90ZU9mZmVyMiIpOworICAgICAgICAgICAgICAgIHNob3VsZEJl
KCJwYy5wZW5kaW5nUmVtb3RlRGVzY3JpcHRpb24iLCAicmVtb3RlT2ZmZXIyIik7CisgICAgICAg
ICAgICAgICAgc2hvdWxkQmVOdWxsKCJwYy5jdXJyZW50UmVtb3RlRGVzY3JpcHRpb24iKTsKKyAg
ICAgICAgICAgICAgICBkZWJ1ZygiIik7CisKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKKyAgICAgICAgICAgIH0pCisgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiRXJyb3IgaW4gcHJvbWlzZSBjaGFpbjogIiAr
IGVycm9yKTsKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIH0p
OworCisgICAgICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgICAgICAg
ICB3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworICAgICAgICA8L3NjcmlwdD4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vUlRDVHJhY2tFdmVudC1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1RyYWNrRXZlbnQtY29uc3RydWN0b3ItZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5NDBjOTcKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1RyYWNrRXZl
bnQtY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzUgQEAKK1RoaXMgdGVzdHMg
dGhlIGNvbnN0cnVjdG9yIGZvciB0aGUgUlRDVHJhY2tFdmVudCBET00gY2xhc3MuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitldnQgPSBuZXcgUlRDVHJhY2tFdmVudCgnZXZlbnRU
eXBlJywgeyByZWNlaXZlcjogcmVjZWl2ZXIsIHRyYWNrOiB0cmFjaywgdHJhbnNjZWl2ZXI6IHRy
YW5zY2VpdmVyfSkKK1BBU1MgZXZ0LmJ1YmJsZXMgaXMgZmFsc2UKK1BBU1MgZXZ0LmNhbmNlbGFi
bGUgaXMgZmFsc2UKK1BBU1MgZXZ0LnJlY2VpdmVyIGlzIHJlY2VpdmVyCitQQVNTIGV2dC50cmFj
ayBpcyB0cmFjaworUEFTUyBldnQuc3RyZWFtcyBpcyBbXQorUEFTUyBldnQudHJhbnNjZWl2ZXIg
aXMgdHJhbnNjZWl2ZXIKKworUEFTUyBuZXcgUlRDVHJhY2tFdmVudCgnZXZlbnRUeXBlJywgeyBy
ZWNlaXZlcjogcmVjZWl2ZXIsIHRyYWNrOiB0cmFjaywgc3RyZWFtczogW10sIHRyYW5zY2VpdmVy
OiB0cmFuc2NlaXZlcn0pLnN0cmVhbXMgaXMgW10KK1BBU1MgbmV3IFJUQ1RyYWNrRXZlbnQoJ2V2
ZW50VHlwZScsIHsgcmVjZWl2ZXI6IHJlY2VpdmVyLCB0cmFjazogdHJhY2ssIHN0cmVhbXM6IFtz
dHJlYW1dLCB0cmFuc2NlaXZlcjogdHJhbnNjZWl2ZXJ9KS5zdHJlYW1zIGlzIFtzdHJlYW1dCisK
K1BBU1MgbmV3IFJUQ1RyYWNrRXZlbnQoJ2V2ZW50VHlwZScsIHsgcmVjZWl2ZXI6IHRyYWNrLCB0
cmFjazogdHJhY2ssIHN0cmVhbXM6IFtzdHJlYW0sIG51bGxdLCB0cmFuc2NlaXZlcjogdHJhbnNj
ZWl2ZXJ9KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBuZXcg
UlRDVHJhY2tFdmVudCgnZXZlbnRUeXBlJywgeyByZWNlaXZlcjogdHJhY2ssIHRyYWNrOiB0cmFj
aywgc3RyZWFtczogW251bGxdLCB0cmFuc2NlaXZlcjogdHJhbnNjZWl2ZXJ9KSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBuZXcgUlRDVHJhY2tFdmVudCgnZXZl
bnRUeXBlJywgeyByZWNlaXZlcjogdHJhY2ssIHRyYWNrOiB0cmFjaywgc3RyZWFtczogW3t9XSwg
dHJhbnNjZWl2ZXI6IHRyYW5zY2VpdmVyfSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlw
ZSBlcnJvci4KK1BBU1MgbmV3IFJUQ1RyYWNrRXZlbnQoJ2V2ZW50VHlwZScsIHsgcmVjZWl2ZXI6
IHRyYWNrLCB0cmFjazogdHJhY2ssIHN0cmVhbXM6IFsxXSwgdHJhbnNjZWl2ZXI6IHRyYW5zY2Vp
dmVyfSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KKworRGljdGlvbmFy
eSBtZW1iZXJzIHJlY2VpdmVyLCB0cmFjayBhbmQgdHJhbnNjZWl2ZXIgYXJlIG5vdCBudWxsYWJs
ZQorRkFJTCBuZXcgUlRDVHJhY2tFdmVudCgnZXZlbnRUeXBlJywgeyByZWNlaXZlcjogbnVsbCwg
dHJhY2s6IHRyYWNrLCB0cmFuc2NlaXZlcjogdHJhbnNjZWl2ZXJ9KSBzaG91bGQgdGhyb3cgYW4g
ZXhjZXB0aW9uLiBXYXMgW29iamVjdCBSVENUcmFja0V2ZW50XS4KK0ZBSUwgbmV3IFJUQ1RyYWNr
RXZlbnQoJ2V2ZW50VHlwZScsIHsgcmVjZWl2ZXI6IHJlY2VpdmVyLCB0cmFjazogbnVsbCwgdHJh
bnNjZWl2ZXI6IHRyYW5zY2VpdmVyfSkgc2hvdWxkIHRocm93IGFuIGV4Y2VwdGlvbi4gV2FzIFtv
YmplY3QgUlRDVHJhY2tFdmVudF0uCitGQUlMIG5ldyBSVENUcmFja0V2ZW50KCdldmVudFR5cGUn
LCB7IHJlY2VpdmVyOiByZWNlaXZlciwgdHJhY2s6IHRyYWNrLCB0cmFuc2NlaXZlcjogbnVsbH0p
IHNob3VsZCB0aHJvdyBhbiBleGNlcHRpb24uIFdhcyBbb2JqZWN0IFJUQ1RyYWNrRXZlbnRdLgor
CitEaWN0aW9uYXJ5IG1lbWJlcnMgcmVjZWl2ZXIsIHRyYWNrIGFuZCB0cmFuc2NlaXZlciBhcmUg
cmVxdWlyZWQKK0ZBSUwgbmV3IFJUQ1RyYWNrRXZlbnQoJ2V2ZW50VHlwZScsIHsgdHJhY2s6IHRy
YWNrLCB0cmFuc2NlaXZlcjogdHJhbnNjZWl2ZXJ9KSBzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9u
LiBXYXMgW29iamVjdCBSVENUcmFja0V2ZW50XS4KK0ZBSUwgbmV3IFJUQ1RyYWNrRXZlbnQoJ2V2
ZW50VHlwZScsIHsgcmVjZWl2ZXI6IHJlY2VpdmVyLCB0cmFuc2NlaXZlcjogdHJhbnNjZWl2ZXJ9
KSBzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9uLiBXYXMgW29iamVjdCBSVENUcmFja0V2ZW50XS4K
K0ZBSUwgbmV3IFJUQ1RyYWNrRXZlbnQoJ2V2ZW50VHlwZScsIHsgcmVjZWl2ZXI6IHJlY2VpdmVy
LCB0cmFjazogdHJhY2t9KSBzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9uLiBXYXMgW29iamVjdCBS
VENUcmFja0V2ZW50XS4KKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRD
VHJhY2tFdmVudC1jb25zdHJ1Y3Rvci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVh
bS9SVENUcmFja0V2ZW50LWNvbnN0cnVjdG9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNTBiMThhZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vUlRDVHJhY2tFdmVudC1jb25zdHJ1Y3Rvci5odG1sCkBAIC0wLDAgKzEsNzkg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9wcm9t
aXNlLXV0aWxzLmpzIj48L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAg
IDxzY3JpcHQ+CisgICAgICAgICAgICBsZXQgc3RyZWFtOworICAgICAgICAgICAgbGV0IHRyYWNr
OworICAgICAgICAgICAgbGV0IHJlY2VpdmVyOworICAgICAgICAgICAgbGV0IHRyYW5zY2VpdmVy
OworCisgICAgICAgICAgICBsZXQgZXZ0OworCisgICAgICAgICAgICBkZXNjcmlwdGlvbigiVGhp
cyB0ZXN0cyB0aGUgY29uc3RydWN0b3IgZm9yIHRoZSBSVENUcmFja0V2ZW50IERPTSBjbGFzcy4i
KTsKKworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0VXNlck1lZGlhUGVybWlzc2lvbih0cnVlKTsKKyAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgIGRlYnVnKCJUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0
aG91dCB0aGUgdGVzdFJ1bm5lciIpOworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjb25zdCBwYyA9IG5ldyB3ZWJraXRSVENQZWVy
Q29ubmVjdGlvbih7aWNlU2VydmVyczpbe3VybHM6J3N0dW46Zm9vLmNvbSd9XX0pOworCisgICAg
ICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7ICJhdWRpbyI6IHRy
dWUsICJ2aWRlbyI6IHRydWUgfSkKKyAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChzKSB7Cisg
ICAgICAgICAgICAgICAgc3RyZWFtID0gczsKKyAgICAgICAgICAgICAgICB0cmFjayA9IHN0cmVh
bS5nZXRBdWRpb1RyYWNrcygpWzBdOworICAgICAgICAgICAgICAgIHRyYW5zY2VpdmVyID0gcGMu
YWRkVHJhbnNjZWl2ZXIodHJhY2spOworICAgICAgICAgICAgICAgIHJlY2VpdmVyID0gdHJhbnNj
ZWl2ZXIucmVjZWl2ZXI7CisKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJldnQgPSBuZXcg
UlRDVHJhY2tFdmVudCgnZXZlbnRUeXBlJywgeyByZWNlaXZlcjogcmVjZWl2ZXIsIHRyYWNrOiB0
cmFjaywgdHJhbnNjZWl2ZXI6IHRyYW5zY2VpdmVyfSkiKTsKKworICAgICAgICAgICAgICAgIHNo
b3VsZEJlKCJldnQuYnViYmxlcyIsICJmYWxzZSIpOworICAgICAgICAgICAgICAgIHNob3VsZEJl
KCJldnQuY2FuY2VsYWJsZSIsICJmYWxzZSIpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJl
dnQucmVjZWl2ZXIiLCAicmVjZWl2ZXIiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgiZXZ0
LnRyYWNrIiwgInRyYWNrIik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoImV2dC5zdHJlYW1z
IiwgIltdIik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoImV2dC50cmFuc2NlaXZlciIsICJ0
cmFuc2NlaXZlciIpOworICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsKKworICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCJuZXcgUlRDVHJhY2tFdmVudCgnZXZlbnRUeXBlJywgeyByZWNlaXZlcjog
cmVjZWl2ZXIsIHRyYWNrOiB0cmFjaywgc3RyZWFtczogW10sIHRyYW5zY2VpdmVyOiB0cmFuc2Nl
aXZlcn0pLnN0cmVhbXMiLCAiW10iKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgibmV3IFJU
Q1RyYWNrRXZlbnQoJ2V2ZW50VHlwZScsIHsgcmVjZWl2ZXI6IHJlY2VpdmVyLCB0cmFjazogdHJh
Y2ssIHN0cmVhbXM6IFtzdHJlYW1dLCB0cmFuc2NlaXZlcjogdHJhbnNjZWl2ZXJ9KS5zdHJlYW1z
IiwgIltzdHJlYW1dIik7CisgICAgICAgICAgICAgICAgZGVidWcoIiIpOworCisgICAgICAgICAg
ICAgICAgc2hvdWxkVGhyb3coIm5ldyBSVENUcmFja0V2ZW50KCdldmVudFR5cGUnLCB7IHJlY2Vp
dmVyOiB0cmFjaywgdHJhY2s6IHRyYWNrLCBzdHJlYW1zOiBbc3RyZWFtLCBudWxsXSwgdHJhbnNj
ZWl2ZXI6IHRyYW5zY2VpdmVyfSkiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygibmV3
IFJUQ1RyYWNrRXZlbnQoJ2V2ZW50VHlwZScsIHsgcmVjZWl2ZXI6IHRyYWNrLCB0cmFjazogdHJh
Y2ssIHN0cmVhbXM6IFtudWxsXSwgdHJhbnNjZWl2ZXI6IHRyYW5zY2VpdmVyfSkiKTsKKyAgICAg
ICAgICAgICAgICBzaG91bGRUaHJvdygibmV3IFJUQ1RyYWNrRXZlbnQoJ2V2ZW50VHlwZScsIHsg
cmVjZWl2ZXI6IHRyYWNrLCB0cmFjazogdHJhY2ssIHN0cmVhbXM6IFt7fV0sIHRyYW5zY2VpdmVy
OiB0cmFuc2NlaXZlcn0pIik7CisgICAgICAgICAgICAgICAgc2hvdWxkVGhyb3coIm5ldyBSVENU
cmFja0V2ZW50KCdldmVudFR5cGUnLCB7IHJlY2VpdmVyOiB0cmFjaywgdHJhY2s6IHRyYWNrLCBz
dHJlYW1zOiBbMV0sIHRyYW5zY2VpdmVyOiB0cmFuc2NlaXZlcn0pIik7CisgICAgICAgICAgICAg
ICAgZGVidWcoIiIpOworCisgICAgICAgICAgICAgICAgZGVidWcoIkRpY3Rpb25hcnkgbWVtYmVy
cyByZWNlaXZlciwgdHJhY2sgYW5kIHRyYW5zY2VpdmVyIGFyZSBub3QgbnVsbGFibGUiKTsKKyAg
ICAgICAgICAgICAgICBzaG91bGRUaHJvdygibmV3IFJUQ1RyYWNrRXZlbnQoJ2V2ZW50VHlwZScs
IHsgcmVjZWl2ZXI6IG51bGwsIHRyYWNrOiB0cmFjaywgdHJhbnNjZWl2ZXI6IHRyYW5zY2VpdmVy
fSkiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygibmV3IFJUQ1RyYWNrRXZlbnQoJ2V2
ZW50VHlwZScsIHsgcmVjZWl2ZXI6IHJlY2VpdmVyLCB0cmFjazogbnVsbCwgdHJhbnNjZWl2ZXI6
IHRyYW5zY2VpdmVyfSkiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygibmV3IFJUQ1Ry
YWNrRXZlbnQoJ2V2ZW50VHlwZScsIHsgcmVjZWl2ZXI6IHJlY2VpdmVyLCB0cmFjazogdHJhY2ss
IHRyYW5zY2VpdmVyOiBudWxsfSkiKTsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiIik7CisKKyAg
ICAgICAgICAgICAgICBkZWJ1ZygiRGljdGlvbmFyeSBtZW1iZXJzIHJlY2VpdmVyLCB0cmFjayBh
bmQgdHJhbnNjZWl2ZXIgYXJlIHJlcXVpcmVkIik7CisgICAgICAgICAgICAgICAgc2hvdWxkVGhy
b3coIm5ldyBSVENUcmFja0V2ZW50KCdldmVudFR5cGUnLCB7IHRyYWNrOiB0cmFjaywgdHJhbnNj
ZWl2ZXI6IHRyYW5zY2VpdmVyfSkiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygibmV3
IFJUQ1RyYWNrRXZlbnQoJ2V2ZW50VHlwZScsIHsgcmVjZWl2ZXI6IHJlY2VpdmVyLCB0cmFuc2Nl
aXZlcjogdHJhbnNjZWl2ZXJ9KSIpOworICAgICAgICAgICAgICAgIHNob3VsZFRocm93KCJuZXcg
UlRDVHJhY2tFdmVudCgnZXZlbnRUeXBlJywgeyByZWNlaXZlcjogcmVjZWl2ZXIsIHRyYWNrOiB0
cmFja30pIik7CisgICAgICAgICAgICAgICAgZGVidWcoIiIpOworCisgICAgICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICB9KQorICAgICAgICAgICAgLmNhdGNoKGZ1bmN0
aW9uIChlcnJvcikgeworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkVycm9yIGNhdWdodCBp
biBwcm9taXNlIGNoYWluOiAiICsgZXJyb3IpOworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKyAgICAgICAgICAgIHdpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
CisgICAgICAgIDwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA1ODI3ZmE0Li5hNjA2NjE3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTkxLDYg
KzE5MSw4IEBAIGZhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tYWRkVHJhbnNjZWl2
ZXIuaHRtbAogZmFzdC9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXItcmVwbGFjZVRyYWNrLmh0bWwK
IGZhc3QvbWVkaWFzdHJlYW0vUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmh0bWwKIGZhc3QvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tc2V0TG9jYWxEZXNjcmlwdGlvbi1vZmZlci5odG1sCitm
YXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXNldFJlbW90ZURlc2NyaXB0aW9uLW9m
ZmVyLmh0bWwKK2Zhc3QvbWVkaWFzdHJlYW0vUlRDVHJhY2tFdmVudC1jb25zdHJ1Y3Rvci5odG1s
CiAKICMgQXNzZXJ0cyBpbiBkZWJ1Zy4KIFsgRGVidWcgXSBmYXN0L2ltYWdlcy9sYXJnZS1zaXpl
LWltYWdlLWNyYXNoLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3YjJlZmQ5Li5lZDRjOTFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNjAgQEAKIDIwMTYtMDYtMDggIEFkYW0gQmVyZ2t2aXN0
ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgogCisgICAgICAgIFdlYlJUQzogSW1sZW1l
bnQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpzZXRSZW1vdGVEZXNjcmlwdGlvbigpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg0NjcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQg
TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpzZXRSZW1vdGVEZXNjcmlwdGlvbigpIHdoaWNo
IHZlcmlmaWVzIGEKKyAgICAgICAgcmVtb3RlIG9mZmVyIG9yIGFuc3dlciwgY29uZmlndXJlcyB0
aGUgV2ViUlRDIGJhY2tlbmQgYW5kIGRpc3BhdGNoZXMgdGhlICd0cmFjaycgZXZlbnRzCisgICAg
ICAgIHRoYXQgcmVwcmVzZW50IHRoZSBpbmNvbWluZyBtZWRpYSBbMV0uCisKKyAgICAgICAgVGhp
cyBjaGFuZ2UgYWxzbyB1cGRhdGVzIHRoZSBSVENUcmFja0V2ZW50IFsyXSB3aXRoIGEgc3RyZWFt
cyBhbmQgYSB0cmFuc2NlaXZlciBhdHRyaWJ1dGUuCisKKyAgICAgICAgWzFdIGh0dHBzOi8vdzNj
LmdpdGh1Yi5pby93ZWJydGMtcGMvYXJjaGl2ZXMvMjAxNjA1MTMvd2VicnRjLmh0bWwjZG9tLXJ0
Y3BlZXJjb25uZWN0aW9uLXNldHJlbW90ZWRlc2NyaXB0aW9uCisgICAgICAgIFsyXSBodHRwczov
L3czYy5naXRodWIuaW8vd2VicnRjLXBjL2FyY2hpdmVzLzIwMTYwNTEzL3dlYnJ0Yy5odG1sI3J0
Y3RyYWNrZXZlbnQKKworICAgICAgICBUZXN0czogZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbi1zZXRSZW1vdGVEZXNjcmlwdGlvbi1vZmZlci5odG1sCisgICAgICAgICAgICAgICBm
YXN0L21lZGlhc3RyZWFtL1JUQ1RyYWNrRXZlbnQtY29uc3RydWN0b3IuaHRtbAorCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU291cmNlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6c2V0TG9jYWxEZXNjcmlwdGlvblRhc2spOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpzZXRSZW1vdGVEZXNj
cmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246
OnNldFJlbW90ZURlc2NyaXB0aW9uVGFzayk6CisgICAgICAgIEltcGxlbWVudGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpyZW1vdGVEZXNjcmlwdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OmN1cnJl
bnRSZW1vdGVEZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZHBvaW50UGVl
ckNvbm5lY3Rpb246OnBlbmRpbmdSZW1vdGVEZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OnJlbW90ZURlc2NyaXB0aW9uVHlwZVZhbGlk
Rm9yU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9u
OjppbnRlcm5hbFJlbW90ZURlc2NyaXB0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVy
Q29ubmVjdGlvbjo6YWRkVHJhbnNjZWl2ZXIpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFJlY2VpdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBSZWNlaXZlcjo6aXNEaXNw
YXRjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFJlY2VpdmVyOjpzZXREaXNwYXRjaGVk
KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1RyYWNrRXZlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UlRDVHJhY2tFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ1RyYWNrRXZlbnQ6OlJUQ1RyYWNrRXZlbnQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDVHJhY2tFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UlRDVHJhY2tFdmVudDo6
c3RyZWFtcyk6CisgICAgICAgIChXZWJDb3JlOjpSVENUcmFja0V2ZW50Ojp0cmFuc2NlaXZlcik6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENUcmFja0V2ZW50LmlkbDoKKyAgICAg
ICAgQWRkIHN0cmVhbXMgYW5kIHRyYW5zY2VpdmVyIGF0dHJpYnV0ZXMuCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRGljdGlvbmFy
eTo6Y29udmVydFZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFFbmRwb2ludC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrTWVkaWFFbmRwb2ludDo6ZmlsdGVyUGF5bG9hZHMpOgorICAgICAgICAoV2ViQ29yZTo6
TW9ja01lZGlhRW5kcG9pbnQ6OnVwZGF0ZVNlbmRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVuZHBvaW50Lmg6CisKKzIwMTYtMDYtMDggIEFkYW0gQmVy
Z2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgorCiAgICAgICAgIFdlYlJUQzog
SW1sZW1lbnQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpzZXRMb2NhbERlc2NyaXB0aW9u
KCkKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODE5
MAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
RW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5jcHAKaW5kZXggNzMzOTI0YS4uZTNh
ZDNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YUVuZHBvaW50UGVlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcApAQCAtMzMsMTMgKzMz
LDE0IEBACiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAjaW5jbHVkZSAiTWVkaWFFbmRwb2ludFBlZXJD
b25uZWN0aW9uLmgiCiAKLSNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkpTUlRDU2Vzc2lv
bkRlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFFbmRwb2ludFNlc3Npb25Db25maWd1cmF0
aW9uLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRy
YWNrLmgiCiAjaW5jbHVkZSAiUGVlck1lZGlhRGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJSVENP
ZmZlckFuc3dlck9wdGlvbnMuaCIKICNpbmNsdWRlICJSVENSdHBUcmFuc2NlaXZlci5oIgorI2lu
Y2x1ZGUgIlJUQ1RyYWNrRXZlbnQuaCIKICNpbmNsdWRlICJTRFBQcm9jZXNzb3IuaCIKICNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgpAQCAt
MjA5LDYgKzIxMCwyNiBAQCB2b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6Y3JlYXRl
QW5zd2VyKFJUQ0Fuc3dlck9wdGlvbnMmIG9wdGlvbnMsIFNlc3NpbwogICAgIHByb21pc2UucmVq
ZWN0KE5PVF9TVVBQT1JURURfRVJSKTsKIH0KIAorc3RhdGljIFJlYWx0aW1lTWVkaWFTb3VyY2VN
YXAgY3JlYXRlU291cmNlTWFwKGNvbnN0IE1lZGlhRGVzY3JpcHRpb25WZWN0b3ImIHJlbW90ZU1l
ZGlhRGVzY3JpcHRpb25zLCB1bnNpZ25lZCBsb2NhbE1lZGlhRGVzY3JpcHRpb25Db3VudCwgY29u
c3QgUnRwVHJhbnNjZWl2ZXJWZWN0b3ImIHRyYW5zY2VpdmVycykKK3sKKyAgICBSZWFsdGltZU1l
ZGlhU291cmNlTWFwIHNvdXJjZU1hcDsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBy
ZW1vdGVNZWRpYURlc2NyaXB0aW9ucy5zaXplKCkgJiYgaSA8IGxvY2FsTWVkaWFEZXNjcmlwdGlv
bkNvdW50OyArK2kpIHsKKyAgICAgICAgUGVlck1lZGlhRGVzY3JpcHRpb24mIHJlbW90ZU1lZGlh
RGVzY3JpcHRpb24gPSAqcmVtb3RlTWVkaWFEZXNjcmlwdGlvbnNbaV07CisgICAgICAgIGlmIChy
ZW1vdGVNZWRpYURlc2NyaXB0aW9uLnR5cGUoKSAhPSAiYXVkaW8iICYmIHJlbW90ZU1lZGlhRGVz
Y3JpcHRpb24udHlwZSgpICE9ICJ2aWRlbyIpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICBSVENSdHBUcmFuc2NlaXZlciogdHJhbnNjZWl2ZXIgPSBtYXRjaFRyYW5zY2VpdmVyQnlN
aWQodHJhbnNjZWl2ZXJzLCByZW1vdGVNZWRpYURlc2NyaXB0aW9uLm1pZCgpKTsKKyAgICAgICAg
aWYgKHRyYW5zY2VpdmVyKSB7CisgICAgICAgICAgICBpZiAodHJhbnNjZWl2ZXItPmhhc1NlbmRp
bmdEaXJlY3Rpb24oKSAmJiB0cmFuc2NlaXZlci0+c2VuZGVyKCktPnRyYWNrKCkpCisgICAgICAg
ICAgICAgICAgc291cmNlTWFwLnNldCh0cmFuc2NlaXZlci0+bWlkKCksICZ0cmFuc2NlaXZlci0+
c2VuZGVyKCktPnRyYWNrKCktPnNvdXJjZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgfQorCisgICAgcmV0dXJuIHNvdXJjZU1hcDsKK30KKwogdm9pZCBNZWRpYUVuZHBv
aW50UGVlckNvbm5lY3Rpb246OnNldExvY2FsRGVzY3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0
aW9uJiBkZXNjcmlwdGlvbiwgVm9pZFByb21pc2UmJiBwcm9taXNlKQogewogICAgIHJ1blRhc2so
W3RoaXMsIHByb3RlY3RlZERlc2NyaXB0aW9uID0gUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlv
bj4oJmRlc2NyaXB0aW9uKSwgcHJvdGVjdGVkUHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKCkg
bXV0YWJsZSB7CkBAIC0yNzAsNiArMjkxLDE2IEBAIHZvaWQgTWVkaWFFbmRwb2ludFBlZXJDb25u
ZWN0aW9uOjpzZXRMb2NhbERlc2NyaXB0aW9uVGFzayhSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyCiAg
ICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAoaW50ZXJuYWxSZW1vdGVEZXNjcmlwdGlvbigpKSB7
CisgICAgICAgIE1lZGlhRW5kcG9pbnRTZXNzaW9uQ29uZmlndXJhdGlvbiogcmVtb3RlQ29uZmln
dXJhdGlvbiA9IGludGVybmFsUmVtb3RlRGVzY3JpcHRpb24oKS0+Y29uZmlndXJhdGlvbigpOwor
ICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlTWFwIHNlbmRTb3VyY2VNYXAgPSBjcmVhdGVTb3Vy
Y2VNYXAocmVtb3RlQ29uZmlndXJhdGlvbi0+bWVkaWFEZXNjcmlwdGlvbnMoKSwgbWVkaWFEZXNj
cmlwdGlvbnMuc2l6ZSgpLCB0cmFuc2NlaXZlcnMpOworCisgICAgICAgIGlmIChtX21lZGlhRW5k
cG9pbnQtPnVwZGF0ZVNlbmRDb25maWd1cmF0aW9uKHJlbW90ZUNvbmZpZ3VyYXRpb24sIHNlbmRT
b3VyY2VNYXAsIGlzSW5pdGlhdG9yKSA9PSBNZWRpYUVuZHBvaW50OjpVcGRhdGVSZXN1bHQ6OkZh
aWxlZCkgeworICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoT3BlcmF0aW9uRXJyb3IsICJVbmFi
bGUgdG8gYXBwbHkgc2Vzc2lvbiBkZXNjcmlwdGlvbiIpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgfQorCiAgICAgaWYgKCFoYXNVbmFzc29jaWF0ZWRUcmFuc2NlaXZlcnMo
dHJhbnNjZWl2ZXJzKSkKICAgICAgICAgY2xlYXJOZWdvdGlhdGlvbk5lZWRlZFN0YXRlKCk7CiAK
QEAgLTI4NCw3ICszMTUsOSBAQCB2b2lkIE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6c2V0
TG9jYWxEZXNjcmlwdGlvblRhc2soUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcgogCiAgICAgY2FzZSBS
VENTZXNzaW9uRGVzY3JpcHRpb246OlNkcFR5cGU6OkFuc3dlcjoKICAgICAgICAgbV9jdXJyZW50
TG9jYWxEZXNjcmlwdGlvbiA9IG5ld0Rlc2NyaXB0aW9uOworICAgICAgICBtX2N1cnJlbnRSZW1v
dGVEZXNjcmlwdGlvbiA9IG1fcGVuZGluZ1JlbW90ZURlc2NyaXB0aW9uOwogICAgICAgICBtX3Bl
bmRpbmdMb2NhbERlc2NyaXB0aW9uID0gbnVsbHB0cjsKKyAgICAgICAgbV9wZW5kaW5nUmVtb3Rl
RGVzY3JpcHRpb24gPSBudWxscHRyOwogICAgICAgICBuZXdTaWduYWxpbmdTdGF0ZSA9IFNpZ25h
bGluZ1N0YXRlOjpTdGFibGU7CiAgICAgICAgIGJyZWFrOwogCkBAIC0zMzAsMzIgKzM2MywxNjcg
QEAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0
aW9uOjpwZW5kaW5nTG9jYWxEZXNjcmlwdGkKIAogdm9pZCBNZWRpYUVuZHBvaW50UGVlckNvbm5l
Y3Rpb246OnNldFJlbW90ZURlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYgZGVzY3Jp
cHRpb24sIFZvaWRQcm9taXNlJiYgcHJvbWlzZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3Jp
cHRpb24pOworICAgIHJ1blRhc2soW3RoaXMsIHByb3RlY3RlZERlc2NyaXB0aW9uID0gUmVmUHRy
PFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4oJmRlc2NyaXB0aW9uKSwgcHJvdGVjdGVkUHJvbWlzZSA9
IFdURk1vdmUocHJvbWlzZSldKCkgbXV0YWJsZSB7CisgICAgICAgIHNldFJlbW90ZURlc2NyaXB0
aW9uVGFzayhXVEZNb3ZlKHByb3RlY3RlZERlc2NyaXB0aW9uKSwgcHJvdGVjdGVkUHJvbWlzZSk7
CisgICAgfSk7Cit9CiAKLSAgICBub3RJbXBsZW1lbnRlZCgpOwordm9pZCBNZWRpYUVuZHBvaW50
UGVlckNvbm5lY3Rpb246OnNldFJlbW90ZURlc2NyaXB0aW9uVGFzayhSZWZQdHI8UlRDU2Vzc2lv
bkRlc2NyaXB0aW9uPiYmIGRlc2NyaXB0aW9uLCBWb2lkUHJvbWlzZSYgcHJvbWlzZSkKK3sKKyAg
ICBpZiAobV9jbGllbnQtPmludGVybmFsU2lnbmFsaW5nU3RhdGUoKSA9PSBTaWduYWxpbmdTdGF0
ZTo6Q2xvc2VkKQorICAgICAgICByZXR1cm47CiAKLSAgICBwcm9taXNlLnJlamVjdChOT1RfU1VQ
UE9SVEVEX0VSUik7CisgICAgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlIGV4Y2VwdGlvbjsKKyAg
ICBhdXRvIG5ld0Rlc2NyaXB0aW9uID0gTWVkaWFFbmRwb2ludFNlc3Npb25EZXNjcmlwdGlvbjo6
Y3JlYXRlKFdURk1vdmUoZGVzY3JpcHRpb24pLCAqbV9zZHBQcm9jZXNzb3IsIGV4Y2VwdGlvbik7
CisgICAgaWYgKGV4Y2VwdGlvbi5jb2RlKSB7CisgICAgICAgIHByb21pc2UucmVqZWN0KGV4Y2Vw
dGlvbi5jb2RlLCBleGNlcHRpb24ubWVzc2FnZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAoIXJlbW90ZURlc2NyaXB0aW9uVHlwZVZhbGlkRm9yU3RhdGUobmV3RGVzY3JpcHRp
b24tPnR5cGUoKSkpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoSU5WQUxJRF9TVEFURV9FUlIs
ICJEZXNjcmlwdGlvbiB0eXBlIGluY29tcGF0aWJsZSB3aXRoIGN1cnJlbnQgc2lnbmFsaW5nIHN0
YXRlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb25zdCBNZWRpYURlc2NyaXB0
aW9uVmVjdG9yJiBtZWRpYURlc2NyaXB0aW9ucyA9IG5ld0Rlc2NyaXB0aW9uLT5jb25maWd1cmF0
aW9uKCktPm1lZGlhRGVzY3JpcHRpb25zKCk7CisKKyAgICBmb3IgKGF1dG8mIG1lZGlhRGVzY3Jp
cHRpb24gOiBtZWRpYURlc2NyaXB0aW9ucykgeworICAgICAgICBpZiAobWVkaWFEZXNjcmlwdGlv
bi0+dHlwZSgpICE9ICJhdWRpbyIgJiYgbWVkaWFEZXNjcmlwdGlvbi0+dHlwZSgpICE9ICJ2aWRl
byIpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBtZWRpYURlc2NyaXB0aW9uLT5z
ZXRQYXlsb2FkcyhtX21lZGlhRW5kcG9pbnQtPmZpbHRlclBheWxvYWRzKG1lZGlhRGVzY3JpcHRp
b24tPnBheWxvYWRzKCksCisgICAgICAgICAgICBtZWRpYURlc2NyaXB0aW9uLT50eXBlKCkgPT0g
ImF1ZGlvIiA/IG1fZGVmYXVsdEF1ZGlvUGF5bG9hZHMgOiBtX2RlZmF1bHRWaWRlb1BheWxvYWRz
KSk7CisgICAgfQorCisgICAgYm9vbCBpc0luaXRpYXRvciA9IG5ld0Rlc2NyaXB0aW9uLT50eXBl
KCkgPT0gUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpTZHBUeXBlOjpBbnN3ZXI7CisgICAgY29uc3Qg
UnRwVHJhbnNjZWl2ZXJWZWN0b3ImIHRyYW5zY2VpdmVycyA9IG1fY2xpZW50LT5nZXRUcmFuc2Nl
aXZlcnMoKTsKKworCisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZU1hcCBzZW5kU291cmNlTWFwOwor
ICAgIGlmIChpbnRlcm5hbExvY2FsRGVzY3JpcHRpb24oKSkKKyAgICAgICAgc2VuZFNvdXJjZU1h
cCA9IGNyZWF0ZVNvdXJjZU1hcChtZWRpYURlc2NyaXB0aW9ucywgaW50ZXJuYWxMb2NhbERlc2Ny
aXB0aW9uKCktPmNvbmZpZ3VyYXRpb24oKS0+bWVkaWFEZXNjcmlwdGlvbnMoKS5zaXplKCksIHRy
YW5zY2VpdmVycyk7CisKKyAgICBpZiAobV9tZWRpYUVuZHBvaW50LT51cGRhdGVTZW5kQ29uZmln
dXJhdGlvbihuZXdEZXNjcmlwdGlvbi0+Y29uZmlndXJhdGlvbigpLCBzZW5kU291cmNlTWFwLCBp
c0luaXRpYXRvcikgPT0gTWVkaWFFbmRwb2ludDo6VXBkYXRlUmVzdWx0OjpGYWlsZWQpIHsKKyAg
ICAgICAgcHJvbWlzZS5yZWplY3QoT3BlcmF0aW9uRXJyb3IsICJVbmFibGUgdG8gYXBwbHkgc2Vz
c2lvbiBkZXNjcmlwdGlvbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1lZGlhRGVzY3JpcHRpb25zLnNpemUoKTsgKytpKSB7CisgICAg
ICAgIFBlZXJNZWRpYURlc2NyaXB0aW9uKiBtZWRpYURlc2NyaXB0aW9uID0gbWVkaWFEZXNjcmlw
dGlvbnNbaV0uZ2V0KCk7CisKKyAgICAgICAgUlRDUnRwVHJhbnNjZWl2ZXIqIHRyYW5zY2VpdmVy
ID0gbWF0Y2hUcmFuc2NlaXZlckJ5TWlkKHRyYW5zY2VpdmVycywgbWVkaWFEZXNjcmlwdGlvbi0+
bWlkKCkpOworICAgICAgICBpZiAoIXRyYW5zY2VpdmVyKSB7CisgICAgICAgICAgICBib29sIHJl
Y2VpdmVPbmx5RmxhZyA9IGZhbHNlOworCisgICAgICAgICAgICBpZiAobWVkaWFEZXNjcmlwdGlv
bi0+bW9kZSgpID09ICJzZW5kcmVjdiIgfHwgbWVkaWFEZXNjcmlwdGlvbi0+bW9kZSgpID09ICJy
ZWN2b25seSIpIHsKKyAgICAgICAgICAgICAgICAvLyBUcnkgdG8gbWF0Y2ggYW4gZXhpc3Rpbmcg
dHJhbnNjZWl2ZXIuCisgICAgICAgICAgICAgICAgdHJhbnNjZWl2ZXIgPSBtYXRjaFRyYW5zY2Vp
dmVyKHRyYW5zY2VpdmVycywgWyZtZWRpYURlc2NyaXB0aW9uXSAoUlRDUnRwVHJhbnNjZWl2ZXIm
IGN1cnJlbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFjdXJyZW50LnN0b3BwZWQo
KSAmJiBjdXJyZW50Lm1pZCgpLmlzTnVsbCgpICYmIGN1cnJlbnQuc2VuZGVyKCktPnRyYWNrS2lu
ZCgpID09IG1lZGlhRGVzY3JpcHRpb24tPnR5cGUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKwor
ICAgICAgICAgICAgICAgIGlmICh0cmFuc2NlaXZlcikKKyAgICAgICAgICAgICAgICAgICAgdHJh
bnNjZWl2ZXItPnNldE1pZChtZWRpYURlc2NyaXB0aW9uLT5taWQoKSk7CisgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICByZWNlaXZlT25seUZsYWcgPSB0cnVlOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIXRyYW5zY2VpdmVyKSB7CisgICAgICAgICAg
ICAgICAgYXV0byBzZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZShtZWRpYURlc2NyaXB0aW9u
LT50eXBlKCksIFZlY3RvcjxTdHJpbmc+KCksIG1fY2xpZW50LT5zZW5kZXJDbGllbnQoKSk7Cisg
ICAgICAgICAgICAgICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyKG1lZGlhRGVzY3Jp
cHRpb24tPm1pZCgpLCBtZWRpYURlc2NyaXB0aW9uLT50eXBlKCksIG1lZGlhRGVzY3JpcHRpb24t
Pm1lZGlhU3RyZWFtVHJhY2tJZCgpKTsKKworICAgICAgICAgICAgICAgIGF1dG8gbmV3VHJhbnNj
ZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKFdURk1vdmUoc2VuZGVyKSwgV1RGTW92
ZShyZWNlaXZlcikpOworICAgICAgICAgICAgICAgIG5ld1RyYW5zY2VpdmVyLT5zZXRNaWQobWVk
aWFEZXNjcmlwdGlvbi0+bWlkKCkpOworICAgICAgICAgICAgICAgIGlmIChyZWNlaXZlT25seUZs
YWcpCisgICAgICAgICAgICAgICAgICAgIG5ld1RyYW5zY2VpdmVyLT5kaXNhYmxlU2VuZGluZ0Rp
cmVjdGlvbigpOworCisgICAgICAgICAgICAgICAgdHJhbnNjZWl2ZXIgPSBuZXdUcmFuc2NlaXZl
ci5wdHIoKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+YWRkVHJhbnNjZWl2ZXIoV1RGTW92
ZShuZXdUcmFuc2NlaXZlcikpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
aWYgKG1lZGlhRGVzY3JpcHRpb24tPm1vZGUoKSA9PSAic2VuZHJlY3YiIHx8IG1lZGlhRGVzY3Jp
cHRpb24tPm1vZGUoKSA9PSAic2VuZG9ubHkiKSB7CisgICAgICAgICAgICBSVENSdHBSZWNlaXZl
ciYgcmVjZWl2ZXIgPSAqdHJhbnNjZWl2ZXItPnJlY2VpdmVyKCk7CisgICAgICAgICAgICBpZiAo
cmVjZWl2ZXIuaXNEaXNwYXRjaGVkKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICByZWNlaXZlci5zZXREaXNwYXRjaGVkKHRydWUpOworCisgICAgICAgICAgICBWZWN0
b3I8U3RyaW5nPiBtZWRpYVN0cmVhbUlkczsKKyAgICAgICAgICAgIGlmICghbWVkaWFEZXNjcmlw
dGlvbi0+bWVkaWFTdHJlYW1JZCgpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBtZWRpYVN0
cmVhbUlkcy5hcHBlbmQobWVkaWFEZXNjcmlwdGlvbi0+bWVkaWFTdHJlYW1JZCgpKTsKKworICAg
ICAgICAgICAgLy8gQSByZW1vdGUgdHJhY2sgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCAwLi4qIE1l
ZGlhU3RyZWFtcy4gV2UgY3JlYXRlIGEgbmV3IHN0cmVhbSBmb3IKKyAgICAgICAgICAgIC8vIGEg
dHJhY2sgaW4gY2FzZSBvZiBhbiB1bnJlY29nbml6ZWQgc3RyZWFtIGlkLCBvciBqdXN0IGFkZCB0
aGUgdHJhY2sgaWYgdGhlIHN0cmVhbQorICAgICAgICAgICAgLy8gYWxyZWFkeSBleGlzdHMuCisg
ICAgICAgICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPE1lZGlhU3RyZWFtPj4gdHJhY2tFdmVu
dE1lZGlhU3RyZWFtczsKKyAgICAgICAgICAgIGZvciAoYXV0byYgaWQgOiBtZWRpYVN0cmVhbUlk
cykgeworICAgICAgICAgICAgICAgIGlmIChtX3JlbW90ZVN0cmVhbU1hcC5jb250YWlucyhpZCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgUmVmUHRyPE1lZGlhU3RyZWFtPiBzdHJlYW0gPSBtX3Jl
bW90ZVN0cmVhbU1hcC5nZXQoaWQpOworICAgICAgICAgICAgICAgICAgICBzdHJlYW0tPmFkZFRy
YWNrKCpyZWNlaXZlci50cmFjaygpKTsKKyAgICAgICAgICAgICAgICAgICAgdHJhY2tFdmVudE1l
ZGlhU3RyZWFtcy5hZGQoaWQsIFdURk1vdmUoc3RyZWFtKSk7CisgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBuZXdTdHJlYW0gPSBNZWRpYVN0cmVhbTo6
Y3JlYXRlKCptX2NsaWVudC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBNZWRpYVN0cmVhbVRy
YWNrVmVjdG9yKHsgcmVjZWl2ZXIudHJhY2soKSB9KSk7CisgICAgICAgICAgICAgICAgICAgIG1f
cmVtb3RlU3RyZWFtTWFwLmFkZChpZCwgbmV3U3RyZWFtLmNvcHlSZWYoKSk7CisgICAgICAgICAg
ICAgICAgICAgIHRyYWNrRXZlbnRNZWRpYVN0cmVhbXMuYWRkKGlkLCBXVEZNb3ZlKG5ld1N0cmVh
bSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgVmVj
dG9yPFJlZlB0cjxNZWRpYVN0cmVhbT4+IHN0cmVhbXM7CisgICAgICAgICAgICBjb3B5VmFsdWVz
VG9WZWN0b3IodHJhY2tFdmVudE1lZGlhU3RyZWFtcywgc3RyZWFtcyk7CisKKyAgICAgICAgICAg
IG1fY2xpZW50LT5maXJlRXZlbnQoUlRDVHJhY2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS50
cmFja0V2ZW50LCBmYWxzZSwgZmFsc2UsCisgICAgICAgICAgICAgICAgJnJlY2VpdmVyLCByZWNl
aXZlci50cmFjaygpLCBXVEZNb3ZlKHN0cmVhbXMpLCB0cmFuc2NlaXZlcikpOworICAgICAgICB9
CisgICAgfQorCisgICAgU2lnbmFsaW5nU3RhdGUgbmV3U2lnbmFsaW5nU3RhdGU7CisKKyAgICAv
LyBVcGRhdGUgc3RhdGUgYW5kIGxvY2FsIGRlc2NyaXB0aW9ucyBhY2NvcmRpbmcgdG8gc2V0TG9j
YWwvUmVtb3RlRGVzY3JpcHRpb24gcHJvY2Vzc2luZyBtb2RlbAorICAgIHN3aXRjaCAobmV3RGVz
Y3JpcHRpb24tPnR5cGUoKSkgeworICAgIGNhc2UgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpTZHBU
eXBlOjpPZmZlcjoKKyAgICAgICAgbV9wZW5kaW5nUmVtb3RlRGVzY3JpcHRpb24gPSBuZXdEZXNj
cmlwdGlvbjsKKyAgICAgICAgbmV3U2lnbmFsaW5nU3RhdGUgPSBTaWduYWxpbmdTdGF0ZTo6SGF2
ZVJlbW90ZU9mZmVyOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgUlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uOjpTZHBUeXBlOjpBbnN3ZXI6CisgICAgICAgIG1fY3VycmVudFJlbW90ZURlc2NyaXB0
aW9uID0gbmV3RGVzY3JpcHRpb247CisgICAgICAgIG1fY3VycmVudExvY2FsRGVzY3JpcHRpb24g
PSBtX3BlbmRpbmdMb2NhbERlc2NyaXB0aW9uOworICAgICAgICBtX3BlbmRpbmdSZW1vdGVEZXNj
cmlwdGlvbiA9IG51bGxwdHI7CisgICAgICAgIG1fcGVuZGluZ0xvY2FsRGVzY3JpcHRpb24gPSBu
dWxscHRyOworICAgICAgICBuZXdTaWduYWxpbmdTdGF0ZSA9IFNpZ25hbGluZ1N0YXRlOjpTdGFi
bGU7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBSVENTZXNzaW9uRGVzY3JpcHRpb246OlNk
cFR5cGU6OlJvbGxiYWNrOgorICAgICAgICBtX3BlbmRpbmdSZW1vdGVEZXNjcmlwdGlvbiA9IG51
bGxwdHI7CisgICAgICAgIG5ld1NpZ25hbGluZ1N0YXRlID0gU2lnbmFsaW5nU3RhdGU6OlN0YWJs
ZTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjo6U2Rw
VHlwZTo6UHJhbnN3ZXI6CisgICAgICAgIG1fcGVuZGluZ1JlbW90ZURlc2NyaXB0aW9uID0gbmV3
RGVzY3JpcHRpb247CisgICAgICAgIG5ld1NpZ25hbGluZ1N0YXRlID0gU2lnbmFsaW5nU3RhdGU6
OkhhdmVSZW1vdGVQckFuc3dlcjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKG5l
d1NpZ25hbGluZ1N0YXRlICE9IG1fY2xpZW50LT5pbnRlcm5hbFNpZ25hbGluZ1N0YXRlKCkpIHsK
KyAgICAgICAgbV9jbGllbnQtPnNldFNpZ25hbGluZ1N0YXRlKG5ld1NpZ25hbGluZ1N0YXRlKTsK
KyAgICAgICAgbV9jbGllbnQtPmZpcmVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5z
aWduYWxpbmdzdGF0ZWNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICB9CisKKyAgICBw
cm9taXNlLnJlc29sdmUobnVsbHB0cik7CiB9CiAKIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRp
b24+IE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6cmVtb3RlRGVzY3JpcHRpb24oKSBjb25z
dAogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0KLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBy
ZXR1cm4gY3JlYXRlUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKGludGVybmFsUmVtb3RlRGVzY3JpcHRp
b24oKSk7CiB9CiAKIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IE1lZGlhRW5kcG9pbnRQ
ZWVyQ29ubmVjdGlvbjo6Y3VycmVudFJlbW90ZURlc2NyaXB0aW9uKCkgY29uc3QKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotCi0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGNyZWF0
ZVJUQ1Nlc3Npb25EZXNjcmlwdGlvbihtX2N1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbi5nZXQoKSk7
CiB9CiAKIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IE1lZGlhRW5kcG9pbnRQZWVyQ29u
bmVjdGlvbjo6cGVuZGluZ1JlbW90ZURlc2NyaXB0aW9uKCkgY29uc3QKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotCi0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGNyZWF0ZVJUQ1Nl
c3Npb25EZXNjcmlwdGlvbihtX3BlbmRpbmdSZW1vdGVEZXNjcmlwdGlvbi5nZXQoKSk7CiB9CiAK
IHZvaWQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpzZXRDb25maWd1cmF0aW9uKFJUQ0Nv
bmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCkBAIC00MzMsMTEgKzYwMSwzNSBAQCBib29sIE1l
ZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6bG9jYWxEZXNjcmlwdGlvblR5cGVWYWxpZEZvclN0
YXRlKFJUQ1Nlc3Npb25EZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBNZWRpYUVuZHBv
aW50UGVlckNvbm5lY3Rpb246OnJlbW90ZURlc2NyaXB0aW9uVHlwZVZhbGlkRm9yU3RhdGUoUlRD
U2Vzc2lvbkRlc2NyaXB0aW9uOjpTZHBUeXBlIHR5cGUpIGNvbnN0Cit7CisgICAgc3dpdGNoICht
X2NsaWVudC0+aW50ZXJuYWxTaWduYWxpbmdTdGF0ZSgpKSB7CisgICAgY2FzZSBTaWduYWxpbmdT
dGF0ZTo6U3RhYmxlOgorICAgICAgICByZXR1cm4gdHlwZSA9PSBSVENTZXNzaW9uRGVzY3JpcHRp
b246OlNkcFR5cGU6Ok9mZmVyOworICAgIGNhc2UgU2lnbmFsaW5nU3RhdGU6OkhhdmVMb2NhbE9m
ZmVyOgorICAgICAgICByZXR1cm4gdHlwZSA9PSBSVENTZXNzaW9uRGVzY3JpcHRpb246OlNkcFR5
cGU6OkFuc3dlciB8fCB0eXBlID09IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjo6U2RwVHlwZTo6UHJh
bnN3ZXI7CisgICAgY2FzZSBTaWduYWxpbmdTdGF0ZTo6SGF2ZVJlbW90ZU9mZmVyOgorICAgICAg
ICByZXR1cm4gdHlwZSA9PSBSVENTZXNzaW9uRGVzY3JpcHRpb246OlNkcFR5cGU6Ok9mZmVyOwor
ICAgIGNhc2UgU2lnbmFsaW5nU3RhdGU6OkhhdmVSZW1vdGVQckFuc3dlcjoKKyAgICAgICAgcmV0
dXJuIHR5cGUgPT0gUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpTZHBUeXBlOjpBbnN3ZXIgfHwgdHlw
ZSA9PSBSVENTZXNzaW9uRGVzY3JpcHRpb246OlNkcFR5cGU6OlByYW5zd2VyOworICAgIGRlZmF1
bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9OworCisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBNZWRpYUVuZHBvaW50U2Vzc2lvbkRlc2Ny
aXB0aW9uKiBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OmludGVybmFsTG9jYWxEZXNjcmlw
dGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGVuZGluZ0xvY2FsRGVzY3JpcHRpb24gPyBt
X3BlbmRpbmdMb2NhbERlc2NyaXB0aW9uLmdldCgpIDogbV9jdXJyZW50TG9jYWxEZXNjcmlwdGlv
bi5nZXQoKTsKIH0KIAorTWVkaWFFbmRwb2ludFNlc3Npb25EZXNjcmlwdGlvbiogTWVkaWFFbmRw
b2ludFBlZXJDb25uZWN0aW9uOjppbnRlcm5hbFJlbW90ZURlc2NyaXB0aW9uKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9wZW5kaW5nUmVtb3RlRGVzY3JpcHRpb24gPyBtX3BlbmRpbmdSZW1vdGVE
ZXNjcmlwdGlvbi5nZXQoKSA6IG1fY3VycmVudFJlbW90ZURlc2NyaXB0aW9uLmdldCgpOworfQor
CiBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rp
b246OmNyZWF0ZVJUQ1Nlc3Npb25EZXNjcmlwdGlvbihNZWRpYUVuZHBvaW50U2Vzc2lvbkRlc2Ny
aXB0aW9uKiBkZXNjcmlwdGlvbikgY29uc3QKIHsKICAgICByZXR1cm4gZGVzY3JpcHRpb24gPyBk
ZXNjcmlwdGlvbi0+dG9SVENTZXNzaW9uRGVzY3JpcHRpb24oKm1fc2RwUHJvY2Vzc29yKSA6IG51
bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uaAppbmRleCBlY2IyOTI5Li4zMTY5
YzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
RW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmgKQEAgLTQyLDYgKzQyLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBNZWRpYVN0cmVhbTsKIGNsYXNzIE1lZGlh
U3RyZWFtVHJhY2s7CiBjbGFzcyBQZWVyTWVkaWFEZXNjcmlwdGlvbjsKIGNsYXNzIFNEUFByb2Nl
c3NvcjsKQEAgLTg4LDEwICs4OSwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlT2ZmZXJU
YXNrKFJUQ09mZmVyT3B0aW9ucyYsIFBlZXJDb25uZWN0aW9uOjpTZXNzaW9uRGVzY3JpcHRpb25Q
cm9taXNlJik7CiAKICAgICB2b2lkIHNldExvY2FsRGVzY3JpcHRpb25UYXNrKFJlZlB0cjxSVENT
ZXNzaW9uRGVzY3JpcHRpb24+JiYsIFBlZXJDb25uZWN0aW9uOjpWb2lkUHJvbWlzZSYpOworICAg
IHZvaWQgc2V0UmVtb3RlRGVzY3JpcHRpb25UYXNrKFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRp
b24+JiYsIFBlZXJDb25uZWN0aW9uOjpWb2lkUHJvbWlzZSYpOwogCiAgICAgYm9vbCBsb2NhbERl
c2NyaXB0aW9uVHlwZVZhbGlkRm9yU3RhdGUoUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpTZHBUeXBl
KSBjb25zdDsKKyAgICBib29sIHJlbW90ZURlc2NyaXB0aW9uVHlwZVZhbGlkRm9yU3RhdGUoUlRD
U2Vzc2lvbkRlc2NyaXB0aW9uOjpTZHBUeXBlKSBjb25zdDsKIAogICAgIE1lZGlhRW5kcG9pbnRT
ZXNzaW9uRGVzY3JpcHRpb24qIGludGVybmFsTG9jYWxEZXNjcmlwdGlvbigpIGNvbnN0OworICAg
IE1lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb24qIGludGVybmFsUmVtb3RlRGVzY3JpcHRp
b24oKSBjb25zdDsKICAgICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBjcmVhdGVSVENT
ZXNzaW9uRGVzY3JpcHRpb24oTWVkaWFFbmRwb2ludFNlc3Npb25EZXNjcmlwdGlvbiopIGNvbnN0
OwogCiAgICAgLy8gTWVkaWFFbmRwb2ludENsaWVudApAQCAtMTIwLDYgKzEyNCwxMSBAQCBwcml2
YXRlOgogICAgIFJlZlB0cjxNZWRpYUVuZHBvaW50U2Vzc2lvbkRlc2NyaXB0aW9uPiBtX2N1cnJl
bnRMb2NhbERlc2NyaXB0aW9uOwogICAgIFJlZlB0cjxNZWRpYUVuZHBvaW50U2Vzc2lvbkRlc2Ny
aXB0aW9uPiBtX3BlbmRpbmdMb2NhbERlc2NyaXB0aW9uOwogCisgICAgUmVmUHRyPE1lZGlhRW5k
cG9pbnRTZXNzaW9uRGVzY3JpcHRpb24+IG1fY3VycmVudFJlbW90ZURlc2NyaXB0aW9uOworICAg
IFJlZlB0cjxNZWRpYUVuZHBvaW50U2Vzc2lvbkRlc2NyaXB0aW9uPiBtX3BlbmRpbmdSZW1vdGVE
ZXNjcmlwdGlvbjsKKworICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8TWVkaWFTdHJlYW0+PiBt
X3JlbW90ZVN0cmVhbU1hcDsKKwogICAgIGJvb2wgbV9uZWdvdGlhdGlvbk5lZWRlZCB7IGZhbHNl
IH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1BlZXJDb25uZWN0aW9uQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAppbmRleCAwMWY4N2I1Li40MDUzYjM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9u
QmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNv
bm5lY3Rpb25CYWNrZW5kLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgUlRDSWNlQ2FuZGlkYXRl
OwogY2xhc3MgUlRDT2ZmZXJPcHRpb25zOwogY2xhc3MgUlRDUnRwUmVjZWl2ZXI7CiBjbGFzcyBS
VENSdHBTZW5kZXI7CitjbGFzcyBSVENSdHBTZW5kZXJDbGllbnQ7CiBjbGFzcyBSVENSdHBUcmFu
c2NlaXZlcjsKIGNsYXNzIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjsKIGNsYXNzIFJUQ1N0YXRzUmVz
cG9uc2U7CkBAIC02Miw4ICs2MywxMCBAQCB0eXBlZGVmIERPTVByb21pc2U8UlRDU3RhdHNSZXNw
b25zZT4gU3RhdHNQcm9taXNlOwogY2xhc3MgUGVlckNvbm5lY3Rpb25CYWNrZW5kQ2xpZW50IHsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGNvbnN0IFZlY3RvcjxSZWZQdHI8UlRDUnRwVHJhbnNjZWl2
ZXI+PiYgZ2V0VHJhbnNjZWl2ZXJzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUlRDUnRwU2Vu
ZGVyQ2xpZW50JiBzZW5kZXJDbGllbnQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpcmVFdmVu
dChFdmVudCYpID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCBhZGRUcmFuc2NlaXZlcihSZWZQdHI8
UlRDUnRwVHJhbnNjZWl2ZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2lnbmFsaW5n
U3RhdGUoUGVlckNvbm5lY3Rpb25TdGF0ZXM6OlNpZ25hbGluZ1N0YXRlKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUljZUdhdGhlcmluZ1N0YXRlKFBlZXJDb25uZWN0aW9uU3RhdGVzOjpJ
Y2VHYXRoZXJpbmdTdGF0ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVJY2VDb25uZWN0
aW9uU3RhdGUoUGVlckNvbm5lY3Rpb25TdGF0ZXM6OkljZUNvbm5lY3Rpb25TdGF0ZSkgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uLmNwcAppbmRleCA0MjM0NWZkLi5mMzNiZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcApA
QCAtNDUyLDYgKzQ1MiwxMSBAQCBib29sIFJUQ1BlZXJDb25uZWN0aW9uOjpjYW5TdXNwZW5kRm9y
RG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQg
UlRDUGVlckNvbm5lY3Rpb246OmFkZFRyYW5zY2VpdmVyKFJlZlB0cjxSVENSdHBUcmFuc2NlaXZl
cj4mJiB0cmFuc2NlaXZlcikKK3sKKyAgICBtX3RyYW5zY2VpdmVyU2V0LT5hcHBlbmQoV1RGTW92
ZSh0cmFuc2NlaXZlcikpOworfQorCiB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpzZXRTaWduYWxp
bmdTdGF0ZShTaWduYWxpbmdTdGF0ZSBuZXdTdGF0ZSkKIHsKICAgICBtX3NpZ25hbGluZ1N0YXRl
ID0gbmV3U3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKaW5kZXggMjFkYTA2MC4uMDliMmE0NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rp
b24uaApAQCAtMTMxLDEyICsxMzEsMTQgQEAgcHJpdmF0ZToKICAgICBib29sIGNhblN1c3BlbmRG
b3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIFBlZXJDb25u
ZWN0aW9uQmFja2VuZENsaWVudAorICAgIHZvaWQgYWRkVHJhbnNjZWl2ZXIoUmVmUHRyPFJUQ1J0
cFRyYW5zY2VpdmVyPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFNpZ25hbGluZ1N0YXRlKFBl
ZXJDb25uZWN0aW9uU3RhdGVzOjpTaWduYWxpbmdTdGF0ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB1
cGRhdGVJY2VHYXRoZXJpbmdTdGF0ZShQZWVyQ29ubmVjdGlvblN0YXRlczo6SWNlR2F0aGVyaW5n
U3RhdGUpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlSWNlQ29ubmVjdGlvblN0YXRlKFBlZXJD
b25uZWN0aW9uU3RhdGVzOjpJY2VDb25uZWN0aW9uU3RhdGUpIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBzY2hlZHVsZU5lZ290aWF0aW9uTmVlZGVkRXZlbnQoKSBvdmVycmlkZTsKIAorICAgIFJUQ1J0
cFNlbmRlckNsaWVudCYgc2VuZGVyQ2xpZW50KCkgeyByZXR1cm4gKnRoaXM7IH0KICAgICB2b2lk
IGZpcmVFdmVudChFdmVudCYpIG92ZXJyaWRlOwogICAgIFBlZXJDb25uZWN0aW9uU3RhdGVzOjpT
aWduYWxpbmdTdGF0ZSBpbnRlcm5hbFNpZ25hbGluZ1N0YXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9zaWduYWxpbmdTdGF0ZTsgfQogICAgIFBlZXJDb25uZWN0aW9uU3RhdGVzOjpJY2VH
YXRoZXJpbmdTdGF0ZSBpbnRlcm5hbEljZUdhdGhlcmluZ1N0YXRlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9pY2VHYXRoZXJpbmdTdGF0ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5oCmluZGV4IGE3N2VhYzUuLmQ0NjU4
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
UmVjZWl2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFJlY2VpdmVyLmgKQEAgLTQ0LDggKzQ0LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUlRDUnRwUmVjZWl2ZXIoV1RGTW92ZSh0cmFjaykpKTsKICAgICB9CiAKKyAg
ICBib29sIGlzRGlzcGF0Y2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEaXNwYXRjaGVkOyB9Cisg
ICAgdm9pZCBzZXREaXNwYXRjaGVkKGJvb2wgaXNEaXNwYXRjaGVkKSB7IG1faXNEaXNwYXRjaGVk
ID0gaXNEaXNwYXRjaGVkOyB9CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgUlRDUnRwUmVjZWl2
ZXIoUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYpOworCisgICAgYm9vbCBtX2lzRGlzcGF0Y2hlZCB7
IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1RyYWNrRXZlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENUcmFja0V2ZW50LmNwcAppbmRleCAyYWJh
ZGQ2Li5hZDNlYjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1RyYWNrRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDVHJhY2tFdmVudC5jcHAKQEAgLTM0LDE0ICszNCwxNSBAQAogI2lmIEVOQUJMRShX
RUJfUlRDKQogCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFt
LmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFjay5oIgotI2luY2x1ZGUgIlJUQ1J0cFJlY2Vp
dmVyLmgiCisjaW5jbHVkZSAiUlRDUnRwVHJhbnNjZWl2ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1SZWY8UlRDVHJhY2tFdmVudD4gUlRDVHJhY2tFdmVudDo6Y3JlYXRlKGNvbnN0IEF0
b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRy
PFJUQ1J0cFJlY2VpdmVyPiYmIHJlY2VpdmVyLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiB0
cmFjaykKK1JlZjxSVENUcmFja0V2ZW50PiBSVENUcmFja0V2ZW50OjpjcmVhdGUoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8
UlRDUnRwUmVjZWl2ZXI+JiYgcmVjZWl2ZXIsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRy
YWNrLCBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtPj4mJiBzdHJlYW1zLCBSZWZQdHI8UlRDUnRw
VHJhbnNjZWl2ZXI+JiYgdHJhbnNjZWl2ZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UlRDVHJhY2tFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdURk1vdmUocmVjZWl2
ZXIpLCBXVEZNb3ZlKHRyYWNrKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ1RyYWNr
RXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHJlY2VpdmVyKSwgV1RG
TW92ZSh0cmFjayksIFdURk1vdmUoc3RyZWFtcyksIFdURk1vdmUodHJhbnNjZWl2ZXIpKSk7CiB9
CiAKIFJlZjxSVENUcmFja0V2ZW50PiBSVENUcmFja0V2ZW50OjpjcmVhdGVGb3JCaW5kaW5ncyhj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFJUQ1RyYWNrRXZlbnRJbml0JiBpbml0aWFs
aXplcikKQEAgLTQ5LDEwICs1MCwxMiBAQCBSZWY8UlRDVHJhY2tFdmVudD4gUlRDVHJhY2tFdmVu
dDo6Y3JlYXRlRm9yQmluZGluZ3MoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjbwogICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFJUQ1RyYWNrRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIpKTsKIH0K
IAotUlRDVHJhY2tFdmVudDo6UlRDVHJhY2tFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxSVENSdHBSZWNlaXZlcj4m
JiByZWNlaXZlciwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2spCitSVENUcmFja0V2
ZW50OjpSVENUcmFja0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFJUQ1J0cFJlY2VpdmVyPiYmIHJlY2VpdmVyLCBS
ZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVh
bT4+JiYgc3RyZWFtcywgUmVmUHRyPFJUQ1J0cFRyYW5zY2VpdmVyPiYmIHRyYW5zY2VpdmVyKQog
ICAgIDogRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlKQotICAgICwgbV9yZWNlaXZl
cihyZWNlaXZlcikKLSAgICAsIG1fdHJhY2sodHJhY2spCisgICAgLCBtX3JlY2VpdmVyKFdURk1v
dmUocmVjZWl2ZXIpKQorICAgICwgbV90cmFjayhXVEZNb3ZlKHRyYWNrKSkKKyAgICAsIG1fc3Ry
ZWFtcyhXVEZNb3ZlKHN0cmVhbXMpKQorICAgICwgbV90cmFuc2NlaXZlcihXVEZNb3ZlKHRyYW5z
Y2VpdmVyKSkKIHsKIH0KIApAQCAtNjAsNiArNjMsOCBAQCBSVENUcmFja0V2ZW50OjpSVENUcmFj
a0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgUlRDVHJhY2tFdmVudEluaXQm
CiAgICAgOiBFdmVudCh0eXBlLCBpbml0aWFsaXplcikKICAgICAsIG1fcmVjZWl2ZXIoaW5pdGlh
bGl6ZXIucmVjZWl2ZXIpCiAgICAgLCBtX3RyYWNrKGluaXRpYWxpemVyLnRyYWNrKQorICAgICwg
bV9zdHJlYW1zKGluaXRpYWxpemVyLnN0cmVhbXMpCisgICAgLCBtX3RyYW5zY2VpdmVyKGluaXRp
YWxpemVyLnRyYW5zY2VpdmVyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1RyYWNrRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDVHJhY2tFdmVudC5oCmluZGV4IDIzMjk4NzMuLmI4MGFlODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDVHJhY2tFdmVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDVHJhY2tFdmVu
dC5oCkBAIC0zOCwzMCArMzgsNDAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBN
ZWRpYVN0cmVhbTsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2s7CiBjbGFzcyBSVENSdHBSZWNlaXZl
cjsKK2NsYXNzIFJUQ1J0cFRyYW5zY2VpdmVyOworCit0eXBlZGVmIFZlY3RvcjxSZWZQdHI8TWVk
aWFTdHJlYW0+PiBNZWRpYVN0cmVhbUFycmF5OwogCiBzdHJ1Y3QgUlRDVHJhY2tFdmVudEluaXQg
OiBwdWJsaWMgRXZlbnRJbml0IHsKICAgICBSZWZQdHI8UlRDUnRwUmVjZWl2ZXI+IHJlY2VpdmVy
OwogICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiB0cmFjazsKKyAgICBNZWRpYVN0cmVhbUFy
cmF5IHN0cmVhbXM7CisgICAgUmVmUHRyPFJUQ1J0cFRyYW5zY2VpdmVyPiB0cmFuc2NlaXZlcjsK
IH07CiAKIGNsYXNzIFJUQ1RyYWNrRXZlbnQgOiBwdWJsaWMgRXZlbnQgewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8UlRDVHJhY2tFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFJUQ1J0cFJlY2VpdmVy
PiYmLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJik7CisgICAgc3RhdGljIFJlZjxSVENUcmFj
a0V2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwg
Ym9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8UlRDUnRwUmVjZWl2ZXI+JiYsIFJlZlB0cjxNZWRpYVN0
cmVhbVRyYWNrPiYmLCBNZWRpYVN0cmVhbUFycmF5JiYsIFJlZlB0cjxSVENSdHBUcmFuc2NlaXZl
cj4mJik7CiAgICAgc3RhdGljIFJlZjxSVENUcmFja0V2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncyhj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFJUQ1RyYWNrRXZlbnRJbml0Jik7CiAKICAg
ICBSVENSdHBSZWNlaXZlciogcmVjZWl2ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlY2VpdmVyLmdl
dCgpOyB9CiAgICAgTWVkaWFTdHJlYW1UcmFjayogdHJhY2soKSBjb25zdCAgeyByZXR1cm4gbV90
cmFjay5nZXQoKTsgfQorICAgIGNvbnN0IE1lZGlhU3RyZWFtQXJyYXkmIHN0cmVhbXMoKSBjb25z
dCAgeyByZXR1cm4gbV9zdHJlYW1zOyB9CisgICAgUlRDUnRwVHJhbnNjZWl2ZXIqIHRyYW5zY2Vp
dmVyKCkgY29uc3QgIHsgcmV0dXJuIG1fdHJhbnNjZWl2ZXIuZ2V0KCk7IH0KIAogICAgIHZpcnR1
YWwgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCB7IHJldHVybiBSVENUcmFj
a0V2ZW50SW50ZXJmYWNlVHlwZTsgfQogCiBwcml2YXRlOgotICAgIFJUQ1RyYWNrRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBS
ZWZQdHI8UlRDUnRwUmVjZWl2ZXI+JiYsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmKTsKKyAg
ICBSVENUcmFja0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUs
IGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFJUQ1J0cFJlY2VpdmVyPiYmLCBSZWZQdHI8TWVkaWFT
dHJlYW1UcmFjaz4mJiwgTWVkaWFTdHJlYW1BcnJheSYmLCBSZWZQdHI8UlRDUnRwVHJhbnNjZWl2
ZXI+JiYpOwogICAgIFJUQ1RyYWNrRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25z
dCBSVENUcmFja0V2ZW50SW5pdCYpOwogCiAgICAgUmVmUHRyPFJUQ1J0cFJlY2VpdmVyPiBtX3Jl
Y2VpdmVyOwogICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBtX3RyYWNrOworICAgIE1lZGlh
U3RyZWFtQXJyYXkgbV9zdHJlYW1zOworICAgIFJlZlB0cjxSVENSdHBUcmFuc2NlaXZlcj4gbV90
cmFuc2NlaXZlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDVHJhY2tFdmVudC5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1RyYWNrRXZlbnQuaWRsCmluZGV4IGQw
NTg5MDguLjMyY2E1YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDVHJhY2tFdmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENUcmFja0V2ZW50LmlkbApAQCAtMzQsNCArMzQsNiBAQAogXSBpbnRlcmZhY2Ug
UlRDVHJhY2tFdmVudCA6IEV2ZW50IHsKICAgIFtJbml0aWFsaXplZEJ5RXZlbnRDb25zdHJ1Y3Rv
cl0gcmVhZG9ubHkgYXR0cmlidXRlIFJUQ1J0cFJlY2VpdmVyIHJlY2VpdmVyOwogICAgW0luaXRp
YWxpemVkQnlFdmVudENvbnN0cnVjdG9yXSByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFTdHJlYW1U
cmFjayB0cmFjazsKKyAgIFtJbml0aWFsaXplZEJ5RXZlbnRDb25zdHJ1Y3Rvcl0gcmVhZG9ubHkg
YXR0cmlidXRlIE1lZGlhU3RyZWFtW10gc3RyZWFtczsKKyAgIFtJbml0aWFsaXplZEJ5RXZlbnRD
b25zdHJ1Y3Rvcl0gcmVhZG9ubHkgYXR0cmlidXRlIFJUQ1J0cFRyYW5zY2VpdmVyIHRyYW5zY2Vp
dmVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlv
bmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCmlu
ZGV4IGQwZGI0NDAuLjcyYjJhZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
aWN0aW9uYXJ5LmNwcApAQCAtNTksOCArNTksMTAgQEAKIAogI2lmIEVOQUJMRShXRUJfUlRDKQog
I2luY2x1ZGUgIkpTUlRDUnRwUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJKU1JUQ1J0cFRyYW5zY2Vp
dmVyLmgiCiAjZW5kaWYKIAorCiAjaWYgRU5BQkxFKEdBTUVQQUQpCiAjaW5jbHVkZSAiSlNHYW1l
cGFkLmgiCiAjZW5kaWYKQEAgLTI2Niw2ICsyNjgsMzUgQEAgdm9pZCBKU0RpY3Rpb25hcnk6OmNv
bnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgUmVmUHRyPFJU
Q1IKIHsKICAgICByZXN1bHQgPSBKU1JUQ1J0cFJlY2VpdmVyOjp0b1dyYXBwZWQodmFsdWUpOwog
fQorCit2b2lkIEpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpKU1ZhbHVlIHZhbHVlLCBSZWZQdHI8UlRDUnRwVHJhbnNjZWl2ZXI+JiByZXN1bHQpCit7Cisg
ICAgcmVzdWx0ID0gSlNSVENSdHBUcmFuc2NlaXZlcjo6dG9XcmFwcGVkKHZhbHVlKTsKK30KKwor
dm9pZCBKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
dmFsdWUsIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW0+PiYgcmVzdWx0KQoreworICAgIGlmICh2
YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICB1bnNpZ25l
ZCBsZW5ndGggPSAwOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0b0pTU2VxdWVuY2UoZXhlYywg
dmFsdWUsIGxlbmd0aCk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwIDsgaSA8IGxlbmd0aDsgKytpKSB7Cisg
ICAgICAgIEpTVmFsdWUgaXRlbVZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgaSk7CisgICAgICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBhdXRvIHN0cmVhbSA9IEpTTWVkaWFTdHJlYW06OnRvV3JhcHBlZChpdGVtVmFsdWUpOworICAg
ICAgICBpZiAoIXN0cmVhbSkgeworICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFR5
cGVFcnJvcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0
LmFwcGVuZChzdHJlYW0pOworICAgIH0KK30KICNlbmRpZgogCiAjaWYgRU5BQkxFKEZPTlRfTE9B
RF9FVkVOVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rp
b25hcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5oCmluZGV4
IDBjN2VhMDUuLjJmYmRlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRGljdGlvbmFyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlv
bmFyeS5oCkBAIC01Myw2ICs1Myw3IEBAIGNsYXNzIE1lZGlhS2V5RXJyb3I7CiBjbGFzcyBNZWRp
YVN0cmVhbTsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2s7CiBjbGFzcyBSVENSdHBSZWNlaXZlcjsK
K2NsYXNzIFJUQ1J0cFRyYW5zY2VpdmVyOwogY2xhc3MgTm9kZTsKIGNsYXNzIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTsKIGNsYXNzIFN0b3JhZ2U7CkBAIC0xNTIsNiArMTUzLDggQEAgcHJpdmF0ZToK
ICNlbmRpZgogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIHN0YXRpYyB2b2lkIGNvbnZlcnRWYWx1
ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgUmVmUHRyPFJUQ1J0cFJlY2VpdmVyPiYg
cmVzdWx0KTsKKyAgICBzdGF0aWMgdm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTVmFsdWUsIFJlZlB0cjxSVENSdHBUcmFuc2NlaXZlcj4mIHJlc3VsdCk7CisgICAgc3Rh
dGljIHZvaWQgY29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBWZWN0
b3I8UmVmUHRyPE1lZGlhU3RyZWFtPj4mIHJlc3VsdCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoRk9O
VF9MT0FEX0VWRU5UUykKICAgICBzdGF0aWMgdm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkpTVmFsdWUsIFJlZlB0cjxDU1NGb250RmFjZVJ1bGU+JiByZXN1bHQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2lu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludC5o
CmluZGV4IDNkYzg3ZTQ1Li5hZDk2ZTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludC5oCkBAIC01Niw2ICs1Niw4IEBAIHB1Ymxp
YzoKIH07CiAKIHR5cGVkZWYgc3RkOjp1bmlxdWVfcHRyPE1lZGlhRW5kcG9pbnQ+ICgqQ3JlYXRl
TWVkaWFFbmRwb2ludCkoTWVkaWFFbmRwb2ludENsaWVudCYpOwordHlwZWRlZiBWZWN0b3I8UmVm
UHRyPE1lZGlhUGF5bG9hZD4+IE1lZGlhUGF5bG9hZFZlY3RvcjsKK3R5cGVkZWYgSGFzaE1hcDxT
dHJpbmcsIFJlYWx0aW1lTWVkaWFTb3VyY2UqPiBSZWFsdGltZU1lZGlhU291cmNlTWFwOwogCiBj
bGFzcyBNZWRpYUVuZHBvaW50IHsKIHB1YmxpYzoKQEAgLTczLDkgKzc1LDEwIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVEdGxzSW5mbygpID0gMDsKICAgICB2aXJ0dWFsIFZl
Y3RvcjxSZWZQdHI8TWVkaWFQYXlsb2FkPj4gZ2V0RGVmYXVsdEF1ZGlvUGF5bG9hZHMoKSA9IDA7
CiAgICAgdmlydHVhbCBWZWN0b3I8UmVmUHRyPE1lZGlhUGF5bG9hZD4+IGdldERlZmF1bHRWaWRl
b1BheWxvYWRzKCkgPSAwOworICAgIHZpcnR1YWwgTWVkaWFQYXlsb2FkVmVjdG9yIGZpbHRlclBh
eWxvYWRzKGNvbnN0IE1lZGlhUGF5bG9hZFZlY3RvciYgcmVtb3RlUGF5bG9hZHMsIGNvbnN0IE1l
ZGlhUGF5bG9hZFZlY3RvciYgZGVmYXVsdFBheWxvYWRzKSA9IDA7CiAKICAgICB2aXJ0dWFsIFVw
ZGF0ZVJlc3VsdCB1cGRhdGVSZWNlaXZlQ29uZmlndXJhdGlvbihNZWRpYUVuZHBvaW50U2Vzc2lv
bkNvbmZpZ3VyYXRpb24qLCBib29sIGlzSW5pdGlhdG9yKSA9IDA7Ci0gICAgdmlydHVhbCBVcGRh
dGVSZXN1bHQgdXBkYXRlU2VuZENvbmZpZ3VyYXRpb24oTWVkaWFFbmRwb2ludFNlc3Npb25Db25m
aWd1cmF0aW9uKiwgYm9vbCBpc0luaXRpYXRvcikgPSAwOworICAgIHZpcnR1YWwgVXBkYXRlUmVz
dWx0IHVwZGF0ZVNlbmRDb25maWd1cmF0aW9uKE1lZGlhRW5kcG9pbnRTZXNzaW9uQ29uZmlndXJh
dGlvbiosIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VNYXAmLCBib29sIGlzSW5pdGlhdG9yKSA9
IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkUmVtb3RlQ2FuZGlkYXRlKEljZUNhbmRpZGF0ZSYs
IHVuc2lnbmVkIG1kZXNjSW5kZXgsIGNvbnN0IFN0cmluZyYgdWZyYWcsIGNvbnN0IFN0cmluZyYg
cGFzc3dvcmQpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9Nb2NrTWVkaWFFbmRwb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01v
Y2tNZWRpYUVuZHBvaW50LmNwcAppbmRleCBkNmJjMTFmLi5lYTZlNGU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVuZHBvaW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVuZHBvaW50LmNwcApAQCAtMTMx
LDYgKzEzMSwzMSBAQCBWZWN0b3I8UmVmUHRyPE1lZGlhUGF5bG9hZD4+IE1vY2tNZWRpYUVuZHBv
aW50OjpnZXREZWZhdWx0VmlkZW9QYXlsb2FkcygpCiAgICAgcmV0dXJuIHBheWxvYWRzOwogfQog
CitNZWRpYVBheWxvYWRWZWN0b3IgTW9ja01lZGlhRW5kcG9pbnQ6OmZpbHRlclBheWxvYWRzKGNv
bnN0IE1lZGlhUGF5bG9hZFZlY3RvciYgcmVtb3RlUGF5bG9hZHMsIGNvbnN0IE1lZGlhUGF5bG9h
ZFZlY3RvciYgZGVmYXVsdFBheWxvYWRzKQoreworICAgIE1lZGlhUGF5bG9hZFZlY3RvciBmaWx0
ZXJlZFBheWxvYWRzOworCisgICAgZm9yIChhdXRvJiByZW1vdGVQYXlsb2FkIDogcmVtb3RlUGF5
bG9hZHMpIHsKKyAgICAgICAgTWVkaWFQYXlsb2FkKiBkZWZhdWx0UGF5bG9hZCA9IG51bGxwdHI7
CisgICAgICAgIGZvciAoYXV0byYgcCA6IGRlZmF1bHRQYXlsb2FkcykgeworICAgICAgICAgICAg
aWYgKHAtPmVuY29kaW5nTmFtZSgpID09IHJlbW90ZVBheWxvYWQtPmVuY29kaW5nTmFtZSgpLmNv
bnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCkpIHsKKyAgICAgICAgICAgICAgICBkZWZhdWx0UGF5bG9h
ZCA9IHAuZ2V0KCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKCFkZWZhdWx0UGF5bG9hZCkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgIGlmIChkZWZhdWx0UGF5bG9hZC0+cGFyYW1ldGVycygpLmNvbnRhaW5zKCJw
YWNrZXRpemF0aW9uTW9kZSIpICYmIHJlbW90ZVBheWxvYWQtPnBhcmFtZXRlcnMoKS5jb250YWlu
cygicGFja2V0aXphdGlvbk1vZGUiKQorICAgICAgICAgICAgJiYgKGRlZmF1bHRQYXlsb2FkLT5w
YXJhbWV0ZXJzKCkuZ2V0KCJwYWNrZXRpemF0aW9uTW9kZSIpICE9IGRlZmF1bHRQYXlsb2FkLT5w
YXJhbWV0ZXJzKCkuZ2V0KCJwYWNrZXRpemF0aW9uTW9kZSIpKSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgIGZpbHRlcmVkUGF5bG9hZHMuYXBwZW5kKHJlbW90ZVBheWxvYWQpOwor
ICAgIH0KKworICAgIHJldHVybiBmaWx0ZXJlZFBheWxvYWRzOworfQorCiBNZWRpYUVuZHBvaW50
OjpVcGRhdGVSZXN1bHQgTW9ja01lZGlhRW5kcG9pbnQ6OnVwZGF0ZVJlY2VpdmVDb25maWd1cmF0
aW9uKE1lZGlhRW5kcG9pbnRTZXNzaW9uQ29uZmlndXJhdGlvbiogY29uZmlndXJhdGlvbiwgYm9v
bCBpc0luaXRpYXRvcikKIHsKICAgICBVTlVTRURfUEFSQU0oY29uZmlndXJhdGlvbik7CkBAIC0x
MzksOSArMTY0LDEwIEBAIE1lZGlhRW5kcG9pbnQ6OlVwZGF0ZVJlc3VsdCBNb2NrTWVkaWFFbmRw
b2ludDo6dXBkYXRlUmVjZWl2ZUNvbmZpZ3VyYXRpb24oTWVkaWFFCiAgICAgcmV0dXJuIFVwZGF0
ZVJlc3VsdDo6U3VjY2VzczsKIH0KIAotTWVkaWFFbmRwb2ludDo6VXBkYXRlUmVzdWx0IE1vY2tN
ZWRpYUVuZHBvaW50Ojp1cGRhdGVTZW5kQ29uZmlndXJhdGlvbihNZWRpYUVuZHBvaW50U2Vzc2lv
bkNvbmZpZ3VyYXRpb24qIGNvbmZpZ3VyYXRpb24sIGJvb2wgaXNJbml0aWF0b3IpCitNZWRpYUVu
ZHBvaW50OjpVcGRhdGVSZXN1bHQgTW9ja01lZGlhRW5kcG9pbnQ6OnVwZGF0ZVNlbmRDb25maWd1
cmF0aW9uKE1lZGlhRW5kcG9pbnRTZXNzaW9uQ29uZmlndXJhdGlvbiogY29uZmlndXJhdGlvbiwg
Y29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZU1hcCYgc2VuZFNvdXJjZU1hcCwgYm9vbCBpc0luaXRp
YXRvcikKIHsKICAgICBVTlVTRURfUEFSQU0oY29uZmlndXJhdGlvbik7CisgICAgVU5VU0VEX1BB
UkFNKHNlbmRTb3VyY2VNYXApOwogICAgIFVOVVNFRF9QQVJBTShpc0luaXRpYXRvcik7CiAKICAg
ICByZXR1cm4gVXBkYXRlUmVzdWx0OjpTdWNjZXNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFFbmRwb2ludC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrTWVkaWFFbmRwb2ludC5oCmluZGV4IDEwYzZiYjIuLjZkMTRhYzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRW5kcG9pbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVuZHBvaW50LmgK
QEAgLTQ5LDkgKzQ5LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGdlbmVyYXRlRHRsc0luZm8oKSBv
dmVycmlkZTsKICAgICBWZWN0b3I8UmVmUHRyPE1lZGlhUGF5bG9hZD4+IGdldERlZmF1bHRBdWRp
b1BheWxvYWRzKCkgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVBheWxvYWQ+PiBn
ZXREZWZhdWx0VmlkZW9QYXlsb2FkcygpIG92ZXJyaWRlOworICAgIE1lZGlhUGF5bG9hZFZlY3Rv
ciBmaWx0ZXJQYXlsb2Fkcyhjb25zdCBNZWRpYVBheWxvYWRWZWN0b3ImIHJlbW90ZVBheWxvYWRz
LCBjb25zdCBNZWRpYVBheWxvYWRWZWN0b3ImIGRlZmF1bHRQYXlsb2Fkcykgb3ZlcnJpZGU7CiAK
ICAgICBVcGRhdGVSZXN1bHQgdXBkYXRlUmVjZWl2ZUNvbmZpZ3VyYXRpb24oTWVkaWFFbmRwb2lu
dFNlc3Npb25Db25maWd1cmF0aW9uKiwgYm9vbCBpc0luaXRpYXRvcikgb3ZlcnJpZGU7Ci0gICAg
VXBkYXRlUmVzdWx0IHVwZGF0ZVNlbmRDb25maWd1cmF0aW9uKE1lZGlhRW5kcG9pbnRTZXNzaW9u
Q29uZmlndXJhdGlvbiosIGJvb2wgaXNJbml0aWF0b3IpIG92ZXJyaWRlOworICAgIFVwZGF0ZVJl
c3VsdCB1cGRhdGVTZW5kQ29uZmlndXJhdGlvbihNZWRpYUVuZHBvaW50U2Vzc2lvbkNvbmZpZ3Vy
YXRpb24qLCBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlTWFwJiwgYm9vbCBpc0luaXRpYXRvcikg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGFkZFJlbW90ZUNhbmRpZGF0ZShJY2VDYW5kaWRhdGUmLCB1
bnNpZ25lZCBtZGVzY0luZGV4LCBjb25zdCBTdHJpbmcmIHVmcmFnLCBjb25zdCBTdHJpbmcmIHBh
c3N3b3JkKSBvdmVycmlkZTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280824</attachid>
            <date>2016-06-08 12:47:15 -0700</date>
            <delta_ts>2016-06-08 22:08:13 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>mepc-set-remote_1.patch</filename>
            <type>text/plain</type>
            <size>52413</size>
            <attacher name="Adam Bergkvist">adam.bergkvist</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0MWRlM2M4Li5hNDY0ZWU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjUgQEAKIDIwMTYtMDYt
MDggIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgogCisgICAg
ICAgIFdlYlJUQzogSW1sZW1lbnQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpzZXRSZW1v
dGVEZXNjcmlwdGlvbigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTg0NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgdGVzdHMgZm9yIFJUQ1BlZXJDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0
aW9uKCkgYW5kIHRoZSBSVENUcmFja0V2ZW50IGNvbnN0cnVjdG9yLgorCisgICAgICAgICogZmFz
dC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1zZXRSZW1vdGVEZXNjcmlwdGlvbi1vZmZl
ci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24tc2V0UmVtb3RlRGVzY3JpcHRpb24tb2ZmZXIuaHRtbDogQWRkZWQuCisgICAg
ICAgIFZlcmlmeSB0aGUgZGVzY3JpcHRpb24gc2V0LCB0aGUgZXhwZWN0ZWQgUlRDUGVlckNvbm5l
Y3Rpb24gc3RhdGUgY2hhbmdlcyBhbmQgdGhhdCB0aGUKKyAgICAgICAgJ3RyYWNrJyBldmVudCBp
cyBmaXJlZCBiZWZvcmUgdGhlIHNldFJlbW90ZURlc2NyaXB0aW9uKCkgcHJvbWlzZSBmdWxmaWxs
cy4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL1JUQ1RyYWNrRXZlbnQtY29uc3RydWN0b3It
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL1JUQ1RyYWNr
RXZlbnQtY29uc3RydWN0b3IuaHRtbDogQWRkZWQuCisgICAgICAgIFRoaXMgdGVzdCBoYXMgc29t
ZSBleHBlY3RlZCBmYWlsdXJlcyBzaW5jZSB0aGUgYmluZGluZ3MgZ2VuZXJhdG9yIGRvbid0IHN1
cHBvcnQgJ3JlcXVpcmVkJworICAgICAgICBkaWN0aW9uYXJ5IG1lbWJlcnMgZm9yIGV2ZW50IGlu
aXQgZGljdGlvbmFyaWVzLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25z
OgorICAgICAgICBTa2lwIHRlc3RzIGZvciBtYWMgdGhhdCByZXF1aXJlIGJ1aWxkaW5nIHdpdGgg
V0VCX1JUQyBlbmFibGVkLgorCisyMDE2LTA2LTA4ICBBZGFtIEJlcmdrdmlzdCAgPGFkYW0uYmVy
Z2t2aXN0QGVyaWNzc29uLmNvbT4KKwogICAgICAgICBXZWJSVEM6IEltbGVtZW50IE1lZGlhRW5k
cG9pbnRQZWVyQ29ubmVjdGlvbjo6c2V0TG9jYWxEZXNjcmlwdGlvbigpCiAgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgxOTAKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1zZXRSZW1vdGVE
ZXNjcmlwdGlvbi1vZmZlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXNldFJlbW90ZURlc2NyaXB0aW9uLW9mZmVyLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDYzNmM2Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlv
bi1zZXRSZW1vdGVEZXNjcmlwdGlvbi1vZmZlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2NSBA
QAorVGVzdCBSVENQZWVyQ29ubmVjdGlvbi5zZXRSZW1vdGVEZXNjcmlwdGlvbiBjYWxsZWQgd2l0
aCBhbiBSVENTZXNzaW9uRGVzY3JpcHRpb24gb2YgdHlwZSAnb2ZmZXInCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCisqKiogQ3JlYXRlIChyZW1vdGUpIG9mZmVyIHdpdGggYXVkaW8g
KHJlbW90ZU9mZmVyMSkKKyoqKiBEb25lLCBzdGFydCB0ZXN0aW5nIHdpdGggcmVtb3RlT2ZmZXIx
CitQQVNTIHBjLnNpZ25hbGluZ1N0YXRlIGlzICdzdGFibGUnCitQQVNTIHBjLnJlbW90ZURlc2Ny
aXB0aW9uIGlzIG51bGwKK1BBU1MgcGMucGVuZGluZ1JlbW90ZURlc2NyaXB0aW9uIGlzIG51bGwK
K1BBU1MgcGMuY3VycmVudFJlbW90ZURlc2NyaXB0aW9uIGlzIG51bGwKKworKioqICd0cmFjaycg
ZXZlbnQgbXVzdCBmaXJlIGJlZm9yZSBzZXRSZW1vdGVEZXNjcmlwdGlvbiBwcm9taXNlIGlzIGZ1
bGZpbGxlZAorKioqIENoZWNrIHRyYWNrIGV2ZW50IHByb3BlcnRpZXMKK1BBU1MgcGMuZ2V0UmVj
ZWl2ZXJzKCkuaW5jbHVkZXModHJhY2tFdmVudC5yZWNlaXZlcikgaXMgdHJ1ZQorUEFTUyBwYy5n
ZXRUcmFuc2NlaXZlcnMoKS5pbmNsdWRlcyh0cmFja0V2ZW50LnRyYW5zY2VpdmVyKSBpcyB0cnVl
CisqKiogUmVtb3RlIHRyYWNrIHNob3VsZCBiZSBtdXRlZCBpbml0aWFsbHkKK1BBU1MgdHJhY2tF
dmVudC50cmFjay5tdXRlZCBpcyB0cnVlCisqKiogUmVtb3RlIHRyYWNrIHByb3BlcnRpZXMgc2hv
dWxkIG1hdGNoIHRyYWNrIGFkZGVkIGF0IHJlbW90ZSBzaWRlIChyZW1vdGVQYykKK1BBU1MgdHJh
Y2tFdmVudC50cmFjay5raW5kIGlzIHJlbW90ZVBjQXVkaW9UcmFjay5raW5kCitQQVNTIHRyYWNr
RXZlbnQudHJhY2suaWQgaXMgcmVtb3RlUGNBdWRpb1RyYWNrLmlkCitQQVNTIHRyYWNrRXZlbnQu
dHJhY2subGFiZWwgaXMgJ3JlbW90ZSBhdWRpbycKKyoqKiBDaGVjayBsb2NhbCBhbmQgcmVtb3Rl
IHRyYW5zY2VpdmVycworUEFTUyB0cmFja0V2ZW50LnRyYW5zY2VpdmVyLm1pZCBpcyByZW1vdGVQ
Y0F1ZGlvVHJhbnNjZWl2ZXIubWlkCisKK1BBU1MgcmVtb3RlT2ZmZXIxIHNldCBhcyByZW1vdGUg
ZGVzY3JpcHRpb24KK1BBU1MgcGMuc2lnbmFsaW5nU3RhdGUgaXMgJ2hhdmUtcmVtb3RlLW9mZmVy
JworUEFTUyBwYy5yZW1vdGVEZXNjcmlwdGlvbiBpcyByZW1vdGVPZmZlcjEKK1BBU1MgcGMucGVu
ZGluZ1JlbW90ZURlc2NyaXB0aW9uIGlzIHJlbW90ZU9mZmVyMQorUEFTUyBwYy5jdXJyZW50UmVt
b3RlRGVzY3JpcHRpb24gaXMgbnVsbAorCitQQVNTIHJlbW90ZU9mZmVyMSBzZXQgYXMgcmVtb3Rl
IGRlc2NyaXB0aW9uIChhZ2FpbikKK1BBU1MgcGMuc2lnbmFsaW5nU3RhdGUgaXMgJ2hhdmUtcmVt
b3RlLW9mZmVyJworCisqKiogVHJ5IHNldHRpbmcgbG9jYWwgZGVzY3JpcHRpb25zIHdpdGggYmFk
IHR5cGVzIGZvciB0aGUgY3VycmVudCBzdGF0ZQorUEFTUyBwcm9taXNlIHBjLnNldFJlbW90ZURl
c2NyaXB0aW9uKG5ldyBSVENTZXNzaW9uRGVzY3JpcHRpb24oe3R5cGU6J2Fuc3dlcicsIHNkcDpy
ZW1vdGVPZmZlcjEuc2RwfSkpOyByZWplY3RlZCB3aXRoIEVycm9yOiBJbnZhbGlkU3RhdGVFcnJv
cjogRE9NIEV4Y2VwdGlvbiAxMQorUEFTUyBwcm9taXNlIHBjLnNldFJlbW90ZURlc2NyaXB0aW9u
KG5ldyBSVENTZXNzaW9uRGVzY3JpcHRpb24oe3R5cGU6J3ByYW5zd2VyJywgc2RwOnJlbW90ZU9m
ZmVyMS5zZHB9KSk7IHJlamVjdGVkIHdpdGggRXJyb3I6IEludmFsaWRTdGF0ZUVycm9yOiBET00g
RXhjZXB0aW9uIDExCisKKyoqKiBDcmVhdGUgKHJlbW90ZSkgb2ZmZXIgd2l0aCB2aWRlbyAocmVt
b3RlT2ZmZXIyKQorKioqIERvbmUsIHN0YXJ0IHRlc3Rpbmcgd2l0aCByZW1vdGVPZmZlcjIKK1BB
U1MgcGMuc2lnbmFsaW5nU3RhdGUgaXMgJ2hhdmUtcmVtb3RlLW9mZmVyJworCisqKiogJ3RyYWNr
JyBldmVudCBtdXN0IGZpcmUgYmVmb3JlIHNldFJlbW90ZURlc2NyaXB0aW9uIHByb21pc2UgaXMg
ZnVsZmlsbGVkCisqKiogQ2hlY2sgdHJhY2sgZXZlbnQgcHJvcGVydGllcworUEFTUyBwYy5nZXRS
ZWNlaXZlcnMoKS5pbmNsdWRlcyh0cmFja0V2ZW50LnJlY2VpdmVyKSBpcyB0cnVlCitQQVNTIHBj
LmdldFRyYW5zY2VpdmVycygpLmluY2x1ZGVzKHRyYWNrRXZlbnQudHJhbnNjZWl2ZXIpIGlzIHRy
dWUKKyoqKiBSZW1vdGUgdHJhY2sgc2hvdWxkIGJlIG11dGVkIGluaXRpYWxseQorUEFTUyB0cmFj
a0V2ZW50LnRyYWNrLm11dGVkIGlzIHRydWUKKyoqKiBSZW1vdGUgdHJhY2sgcHJvcGVydGllcyBz
aG91bGQgbWF0Y2ggdHJhY2sgYWRkZWQgYXQgcmVtb3RlIHNpZGUgKHJlbW90ZVBjKQorUEFTUyB0
cmFja0V2ZW50LnRyYWNrLmtpbmQgaXMgcmVtb3RlUGNWaWRlb1RyYWNrLmtpbmQKK1BBU1MgdHJh
Y2tFdmVudC50cmFjay5pZCBpcyByZW1vdGVQY1ZpZGVvVHJhY2suaWQKK1BBU1MgdHJhY2tFdmVu
dC50cmFjay5sYWJlbCBpcyAncmVtb3RlIHZpZGVvJworKioqIENoZWNrIGxvY2FsIGFuZCByZW1v
dGUgdHJhbnNjZWl2ZXJzCitQQVNTIHRyYWNrRXZlbnQudHJhbnNjZWl2ZXIubWlkIGlzIHJlbW90
ZVBjVmlkZW9UcmFuc2NlaXZlci5taWQKKworUEFTUyByZW1vdGVPZmZlcjIgc2V0IGFzIHJlbW90
ZSBkZXNjcmlwdGlvbgorUEFTUyBwYy5zaWduYWxpbmdTdGF0ZSBpcyAnaGF2ZS1yZW1vdGUtb2Zm
ZXInCitQQVNTIHBjLnJlbW90ZURlc2NyaXB0aW9uIGlzIHJlbW90ZU9mZmVyMgorUEFTUyBwYy5w
ZW5kaW5nUmVtb3RlRGVzY3JpcHRpb24gaXMgcmVtb3RlT2ZmZXIyCitQQVNTIHBjLmN1cnJlbnRS
ZW1vdGVEZXNjcmlwdGlvbiBpcyBudWxsCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXNldFJlbW90ZURlc2NyaXB0aW9uLW9mZmVyLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXNldFJlbW90
ZURlc2NyaXB0aW9uLW9mZmVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uZGRjZmZjYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24tc2V0UmVtb3RlRGVzY3JpcHRpb24tb2ZmZXIuaHRtbApAQCAt
MCwwICsxLDE2MCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3Byb21pc2UtdXRpbHMuanMiPjwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eT4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIHZhciBzdHJlYW07CisgICAgICAgICAg
ICB2YXIgcmVtb3RlUGNBdWRpb1RyYWNrOworICAgICAgICAgICAgdmFyIHJlbW90ZVBjVmlkZW9U
cmFjazsKKyAgICAgICAgICAgIHZhciByZW1vdGVQY0F1ZGlvVHJhbnNjZWl2ZXI7CisgICAgICAg
ICAgICB2YXIgcmVtb3RlUGNWaWRlb1RyYW5zY2VpdmVyOworCisgICAgICAgICAgICB2YXIgcmVt
b3RlT2ZmZXIxOworICAgICAgICAgICAgdmFyIHJlbW90ZU9mZmVyMjsKKworICAgICAgICAgICAg
dmFyIHRyYWNrRXZlbnQ7CisgICAgICAgICAgICB2YXIgbWVkaWFUeXBlcyA9IFsiQXVkaW8iLCAi
VmlkZW8iXTsKKworICAgICAgICAgICAgZGVzY3JpcHRpb24oIlRlc3QgUlRDUGVlckNvbm5lY3Rp
b24uc2V0UmVtb3RlRGVzY3JpcHRpb24gY2FsbGVkIHdpdGggYW4gUlRDU2Vzc2lvbkRlc2NyaXB0
aW9uIG9mIHR5cGUgJ29mZmVyJyIpOworCisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRVc2VyTWVkaWFQZXJtaXNzaW9uKHRy
dWUpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgZGVidWcoIlRoaXMgdGVz
dCBjYW4gbm90IGJlIHJ1biB3aXRob3V0IHRoZSB0ZXN0UnVubmVyIik7CisgICAgICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciBwYyA9
IG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbih7aWNlU2VydmVyczpbe3VybHM6J3N0dW46Zm9v
LmNvbSd9XX0pOworICAgICAgICAgICAgdmFyIHJlbW90ZVBjID0gbmV3IHdlYmtpdFJUQ1BlZXJD
b25uZWN0aW9uKHtpY2VTZXJ2ZXJzOlt7dXJsczonc3R1bjpmb28uY29tJ31dfSk7CisKKyAgICAg
ICAgICAgIGZ1bmN0aW9uIHRlc3RSZW1vdGVUcmFjayhldnQsIG1lZGlhVHlwZSkgeworICAgICAg
ICAgICAgICAgIHRyYWNrRXZlbnQgPSBldnQ7CisgICAgICAgICAgICAgICAgdmFyIHJlbW90ZVBj
VHJhY2tOYW1lID0gYHJlbW90ZVBjJHttZWRpYVR5cGV9VHJhY2tgOworCisgICAgICAgICAgICAg
ICAgZGVidWcoIioqKiAndHJhY2snIGV2ZW50IG11c3QgZmlyZSBiZWZvcmUgc2V0UmVtb3RlRGVz
Y3JpcHRpb24gcHJvbWlzZSBpcyBmdWxmaWxsZWQiKTsKKworICAgICAgICAgICAgICAgIGRlYnVn
KCIqKiogQ2hlY2sgdHJhY2sgZXZlbnQgcHJvcGVydGllcyIpOworICAgICAgICAgICAgICAgIHNo
b3VsZEJlVHJ1ZSgicGMuZ2V0UmVjZWl2ZXJzKCkuaW5jbHVkZXModHJhY2tFdmVudC5yZWNlaXZl
cikiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZVRydWUoInBjLmdldFRyYW5zY2VpdmVycygp
LmluY2x1ZGVzKHRyYWNrRXZlbnQudHJhbnNjZWl2ZXIpIik7CisKKyAgICAgICAgICAgICAgICBk
ZWJ1ZygiKioqIFJlbW90ZSB0cmFjayBzaG91bGQgYmUgbXV0ZWQgaW5pdGlhbGx5Iik7CisgICAg
ICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0cmFja0V2ZW50LnRyYWNrLm11dGVkIik7CisKKyAg
ICAgICAgICAgICAgICBkZWJ1ZygiKioqIFJlbW90ZSB0cmFjayBwcm9wZXJ0aWVzIHNob3VsZCBt
YXRjaCB0cmFjayBhZGRlZCBhdCByZW1vdGUgc2lkZSAocmVtb3RlUGMpIik7CisgICAgICAgICAg
ICAgICAgc2hvdWxkQmUoInRyYWNrRXZlbnQudHJhY2sua2luZCIsIGAke3JlbW90ZVBjVHJhY2tO
YW1lfS5raW5kYCk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoInRyYWNrRXZlbnQudHJhY2su
aWQiLCBgJHtyZW1vdGVQY1RyYWNrTmFtZX0uaWRgKTsKKyAgICAgICAgICAgICAgICBzaG91bGRC
ZSgidHJhY2tFdmVudC50cmFjay5sYWJlbCIsIGAncmVtb3RlICR7bWVkaWFUeXBlLnRvTG9jYWxl
TG93ZXJDYXNlKCl9J2ApOworCisgICAgICAgICAgICAgICAgZGVidWcoIioqKiBDaGVjayBsb2Nh
bCBhbmQgcmVtb3RlIHRyYW5zY2VpdmVycyIpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJ0
cmFja0V2ZW50LnRyYW5zY2VpdmVyLm1pZCIsIGByZW1vdGVQYyR7bWVkaWFUeXBlfVRyYW5zY2Vp
dmVyLm1pZGApOworICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcGMub250cmFjayA9IGZ1bmN0aW9uIChldnQpIHsKKyAgICAgICAgICAgICAg
ICB0ZXN0UmVtb3RlVHJhY2soZXZ0LCBtZWRpYVR5cGVzLnNoaWZ0KCkpOworICAgICAgICAgICAg
fTsKKworICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoeyAi
YXVkaW8iOiB0cnVlLCAidmlkZW8iOiB0cnVlIH0pCisgICAgICAgICAgICAudGhlbihmdW5jdGlv
biAocykgeworICAgICAgICAgICAgICAgIHN0cmVhbSA9IHM7CisKKyAgICAgICAgICAgICAgICBy
ZW1vdGVQY0F1ZGlvVHJhY2sgPSBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXTsKKyAgICAgICAg
ICAgICAgICByZW1vdGVQY1ZpZGVvVHJhY2sgPSBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXTsK
KworICAgICAgICAgICAgICAgIGRlYnVnKCIqKiogQ3JlYXRlIChyZW1vdGUpIG9mZmVyIHdpdGgg
YXVkaW8gKHJlbW90ZU9mZmVyMSkiKTsKKyAgICAgICAgICAgICAgICByZW1vdGVQYy5hZGRUcmFj
ayhyZW1vdGVQY0F1ZGlvVHJhY2ssIHN0cmVhbSk7CisgICAgICAgICAgICAgICAgcmVtb3RlUGNB
dWRpb1RyYW5zY2VpdmVyID0gcmVtb3RlUGMuZ2V0VHJhbnNjZWl2ZXJzKClbMF07CisKKyAgICAg
ICAgICAgICAgICByZXR1cm4gcmVtb3RlUGMuY3JlYXRlT2ZmZXIoKTsKKyAgICAgICAgICAgIH0p
CisgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVtb3RlT2ZmZXJBcmcpIHsKKyAgICAgICAg
ICAgICAgICByZW1vdGVPZmZlcjEgPSByZW1vdGVPZmZlckFyZzsKKworICAgICAgICAgICAgICAg
IHJldHVybiByZW1vdGVQYy5zZXRMb2NhbERlc2NyaXB0aW9uKHJlbW90ZU9mZmVyMSk7CisgICAg
ICAgICAgICB9KQorICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkgeworCisgICAgICAgICAg
ICAgICAgZGVidWcoIioqKiBEb25lLCBzdGFydCB0ZXN0aW5nIHdpdGggcmVtb3RlT2ZmZXIxIik7
CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoInBjLnNpZ25hbGluZ1N0YXRlIiwgIidzdGFibGUn
Iik7CisKKyAgICAgICAgICAgICAgICBzaG91bGRCZU51bGwoInBjLnJlbW90ZURlc2NyaXB0aW9u
Iik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVOdWxsKCJwYy5wZW5kaW5nUmVtb3RlRGVzY3Jp
cHRpb24iKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZU51bGwoInBjLmN1cnJlbnRSZW1vdGVE
ZXNjcmlwdGlvbiIpOworICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsKKworICAgICAgICAgICAg
ICAgIHJldHVybiBwYy5zZXRSZW1vdGVEZXNjcmlwdGlvbihyZW1vdGVPZmZlcjEpOworICAgICAg
ICAgICAgfSkKKyAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJyZW1vdGVPZmZlcjEgc2V0IGFzIHJlbW90ZSBkZXNjcmlwdGlvbiIpOwor
CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoInBjLnNpZ25hbGluZ1N0YXRlIiwgIidoYXZlLXJl
bW90ZS1vZmZlciciKTsKKworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJwYy5yZW1vdGVEZXNj
cmlwdGlvbiIsICJyZW1vdGVPZmZlcjEiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgicGMu
cGVuZGluZ1JlbW90ZURlc2NyaXB0aW9uIiwgInJlbW90ZU9mZmVyMSIpOworICAgICAgICAgICAg
ICAgIHNob3VsZEJlTnVsbCgicGMuY3VycmVudFJlbW90ZURlc2NyaXB0aW9uIik7CisgICAgICAg
ICAgICAgICAgZGVidWcoIiIpOworCisgICAgICAgICAgICAgICAgcmV0dXJuIHBjLnNldFJlbW90
ZURlc2NyaXB0aW9uKHJlbW90ZU9mZmVyMSk7CisgICAgICAgICAgICB9KQorICAgICAgICAgICAg
LnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoInJlbW90ZU9m
ZmVyMSBzZXQgYXMgcmVtb3RlIGRlc2NyaXB0aW9uIChhZ2FpbikiKTsKKworICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCJwYy5zaWduYWxpbmdTdGF0ZSIsICInaGF2ZS1yZW1vdGUtb2ZmZXInIik7
CisgICAgICAgICAgICAgICAgZGVidWcoIiIpOworCisgICAgICAgICAgICAgICAgZGVidWcoIioq
KiBUcnkgc2V0dGluZyBsb2NhbCBkZXNjcmlwdGlvbnMgd2l0aCBiYWQgdHlwZXMgZm9yIHRoZSBj
dXJyZW50IHN0YXRlIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHByb21pc2VTaG91bGRSZWpl
Y3QoInBjLnNldFJlbW90ZURlc2NyaXB0aW9uKG5ldyBSVENTZXNzaW9uRGVzY3JpcHRpb24oe3R5
cGU6J2Fuc3dlcicsIHNkcDpyZW1vdGVPZmZlcjEuc2RwfSkpOyIpOworICAgICAgICAgICAgfSkK
KyAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g
cHJvbWlzZVNob3VsZFJlamVjdCgicGMuc2V0UmVtb3RlRGVzY3JpcHRpb24obmV3IFJUQ1Nlc3Np
b25EZXNjcmlwdGlvbih7dHlwZToncHJhbnN3ZXInLCBzZHA6cmVtb3RlT2ZmZXIxLnNkcH0pKTsi
KTsKKyAgICAgICAgICAgIH0pCisgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgZGVidWcoIiIpOworCisgICAgICAgICAgICAgICAgZGVidWcoIioqKiBDcmVh
dGUgKHJlbW90ZSkgb2ZmZXIgd2l0aCB2aWRlbyAocmVtb3RlT2ZmZXIyKSIpOworICAgICAgICAg
ICAgICAgIHZhciBzZW5kZXIgPSByZW1vdGVQYy5hZGRUcmFjayhyZW1vdGVQY1ZpZGVvVHJhY2ss
IHN0cmVhbSk7CisgICAgICAgICAgICAgICAgLy8gT3JkZXIgb2YgdHJhbnNjZWl2ZXJzIGlzIHVu
ZGVmaW5lZCBzbyB3ZSBuZWVkIHRvIG1hdGNoIGl0IHdpdGggdGhlIHNlbmRlci4KKyAgICAgICAg
ICAgICAgICB2YXIgdHJhbnNjZWl2ZXJzID0gcmVtb3RlUGMuZ2V0VHJhbnNjZWl2ZXJzKCk7Cisg
ICAgICAgICAgICAgICAgcmVtb3RlUGNWaWRlb1RyYW5zY2VpdmVyID0gdHJhbnNjZWl2ZXJzWzFd
LnNlbmRlciA9PSBzZW5kZXIgPyB0cmFuc2NlaXZlcnNbMV0gOiB0cmFuc2NlaXZlcnNbMF07CisK
KyAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3RlUGMuY3JlYXRlT2ZmZXIoKTsKKyAgICAgICAg
ICAgIH0pCisgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVtb3RlT2ZmZXJBcmcpIHsKKyAg
ICAgICAgICAgICAgICByZW1vdGVPZmZlcjIgPSByZW1vdGVPZmZlckFyZzsKKworICAgICAgICAg
ICAgICAgIHJldHVybiByZW1vdGVQYy5zZXRMb2NhbERlc2NyaXB0aW9uKHJlbW90ZU9mZmVyMik7
CisgICAgICAgICAgICB9KQorICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICAgIGRlYnVnKCIqKiogRG9uZSwgc3RhcnQgdGVzdGluZyB3aXRoIHJlbW90ZU9mZmVy
MiIpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJwYy5zaWduYWxpbmdTdGF0ZSIsICInaGF2
ZS1yZW1vdGUtb2ZmZXInIik7CisgICAgICAgICAgICAgICAgZGVidWcoIiIpOworCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHBjLnNldFJlbW90ZURlc2NyaXB0aW9uKHJlbW90ZU9mZmVyMik7Cisg
ICAgICAgICAgICB9KQorICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoInJlbW90ZU9mZmVyMiBzZXQgYXMgcmVtb3RlIGRlc2NyaXB0aW9u
Iik7CisKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgicGMuc2lnbmFsaW5nU3RhdGUiLCAiJ2hh
dmUtcmVtb3RlLW9mZmVyJyIpOworCisgICAgICAgICAgICAgICAgc2hvdWxkQmUoInBjLnJlbW90
ZURlc2NyaXB0aW9uIiwgInJlbW90ZU9mZmVyMiIpOworICAgICAgICAgICAgICAgIHNob3VsZEJl
KCJwYy5wZW5kaW5nUmVtb3RlRGVzY3JpcHRpb24iLCAicmVtb3RlT2ZmZXIyIik7CisgICAgICAg
ICAgICAgICAgc2hvdWxkQmVOdWxsKCJwYy5jdXJyZW50UmVtb3RlRGVzY3JpcHRpb24iKTsKKyAg
ICAgICAgICAgICAgICBkZWJ1ZygiIik7CisKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKKyAgICAgICAgICAgIH0pCisgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiRXJyb3IgaW4gcHJvbWlzZSBjaGFpbjogIiAr
IGVycm9yKTsKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIH0p
OworCisgICAgICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgICAgICAg
ICB3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworICAgICAgICA8L3NjcmlwdD4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vUlRDVHJhY2tFdmVudC1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1RyYWNrRXZlbnQtY29uc3RydWN0b3ItZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5NDBjOTcKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1RyYWNrRXZl
bnQtY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzUgQEAKK1RoaXMgdGVzdHMg
dGhlIGNvbnN0cnVjdG9yIGZvciB0aGUgUlRDVHJhY2tFdmVudCBET00gY2xhc3MuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitldnQgPSBuZXcgUlRDVHJhY2tFdmVudCgnZXZlbnRU
eXBlJywgeyByZWNlaXZlcjogcmVjZWl2ZXIsIHRyYWNrOiB0cmFjaywgdHJhbnNjZWl2ZXI6IHRy
YW5zY2VpdmVyfSkKK1BBU1MgZXZ0LmJ1YmJsZXMgaXMgZmFsc2UKK1BBU1MgZXZ0LmNhbmNlbGFi
bGUgaXMgZmFsc2UKK1BBU1MgZXZ0LnJlY2VpdmVyIGlzIHJlY2VpdmVyCitQQVNTIGV2dC50cmFj
ayBpcyB0cmFjaworUEFTUyBldnQuc3RyZWFtcyBpcyBbXQorUEFTUyBldnQudHJhbnNjZWl2ZXIg
aXMgdHJhbnNjZWl2ZXIKKworUEFTUyBuZXcgUlRDVHJhY2tFdmVudCgnZXZlbnRUeXBlJywgeyBy
ZWNlaXZlcjogcmVjZWl2ZXIsIHRyYWNrOiB0cmFjaywgc3RyZWFtczogW10sIHRyYW5zY2VpdmVy
OiB0cmFuc2NlaXZlcn0pLnN0cmVhbXMgaXMgW10KK1BBU1MgbmV3IFJUQ1RyYWNrRXZlbnQoJ2V2
ZW50VHlwZScsIHsgcmVjZWl2ZXI6IHJlY2VpdmVyLCB0cmFjazogdHJhY2ssIHN0cmVhbXM6IFtz
dHJlYW1dLCB0cmFuc2NlaXZlcjogdHJhbnNjZWl2ZXJ9KS5zdHJlYW1zIGlzIFtzdHJlYW1dCisK
K1BBU1MgbmV3IFJUQ1RyYWNrRXZlbnQoJ2V2ZW50VHlwZScsIHsgcmVjZWl2ZXI6IHRyYWNrLCB0
cmFjazogdHJhY2ssIHN0cmVhbXM6IFtzdHJlYW0sIG51bGxdLCB0cmFuc2NlaXZlcjogdHJhbnNj
ZWl2ZXJ9KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBuZXcg
UlRDVHJhY2tFdmVudCgnZXZlbnRUeXBlJywgeyByZWNlaXZlcjogdHJhY2ssIHRyYWNrOiB0cmFj
aywgc3RyZWFtczogW251bGxdLCB0cmFuc2NlaXZlcjogdHJhbnNjZWl2ZXJ9KSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBuZXcgUlRDVHJhY2tFdmVudCgnZXZl
bnRUeXBlJywgeyByZWNlaXZlcjogdHJhY2ssIHRyYWNrOiB0cmFjaywgc3RyZWFtczogW3t9XSwg
dHJhbnNjZWl2ZXI6IHRyYW5zY2VpdmVyfSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlw
ZSBlcnJvci4KK1BBU1MgbmV3IFJUQ1RyYWNrRXZlbnQoJ2V2ZW50VHlwZScsIHsgcmVjZWl2ZXI6
IHRyYWNrLCB0cmFjazogdHJhY2ssIHN0cmVhbXM6IFsxXSwgdHJhbnNjZWl2ZXI6IHRyYW5zY2Vp
dmVyfSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KKworRGljdGlvbmFy
eSBtZW1iZXJzIHJlY2VpdmVyLCB0cmFjayBhbmQgdHJhbnNjZWl2ZXIgYXJlIG5vdCBudWxsYWJs
ZQorRkFJTCBuZXcgUlRDVHJhY2tFdmVudCgnZXZlbnRUeXBlJywgeyByZWNlaXZlcjogbnVsbCwg
dHJhY2s6IHRyYWNrLCB0cmFuc2NlaXZlcjogdHJhbnNjZWl2ZXJ9KSBzaG91bGQgdGhyb3cgYW4g
ZXhjZXB0aW9uLiBXYXMgW29iamVjdCBSVENUcmFja0V2ZW50XS4KK0ZBSUwgbmV3IFJUQ1RyYWNr
RXZlbnQoJ2V2ZW50VHlwZScsIHsgcmVjZWl2ZXI6IHJlY2VpdmVyLCB0cmFjazogbnVsbCwgdHJh
bnNjZWl2ZXI6IHRyYW5zY2VpdmVyfSkgc2hvdWxkIHRocm93IGFuIGV4Y2VwdGlvbi4gV2FzIFtv
YmplY3QgUlRDVHJhY2tFdmVudF0uCitGQUlMIG5ldyBSVENUcmFja0V2ZW50KCdldmVudFR5cGUn
LCB7IHJlY2VpdmVyOiByZWNlaXZlciwgdHJhY2s6IHRyYWNrLCB0cmFuc2NlaXZlcjogbnVsbH0p
IHNob3VsZCB0aHJvdyBhbiBleGNlcHRpb24uIFdhcyBbb2JqZWN0IFJUQ1RyYWNrRXZlbnRdLgor
CitEaWN0aW9uYXJ5IG1lbWJlcnMgcmVjZWl2ZXIsIHRyYWNrIGFuZCB0cmFuc2NlaXZlciBhcmUg
cmVxdWlyZWQKK0ZBSUwgbmV3IFJUQ1RyYWNrRXZlbnQoJ2V2ZW50VHlwZScsIHsgdHJhY2s6IHRy
YWNrLCB0cmFuc2NlaXZlcjogdHJhbnNjZWl2ZXJ9KSBzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9u
LiBXYXMgW29iamVjdCBSVENUcmFja0V2ZW50XS4KK0ZBSUwgbmV3IFJUQ1RyYWNrRXZlbnQoJ2V2
ZW50VHlwZScsIHsgcmVjZWl2ZXI6IHJlY2VpdmVyLCB0cmFuc2NlaXZlcjogdHJhbnNjZWl2ZXJ9
KSBzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9uLiBXYXMgW29iamVjdCBSVENUcmFja0V2ZW50XS4K
K0ZBSUwgbmV3IFJUQ1RyYWNrRXZlbnQoJ2V2ZW50VHlwZScsIHsgcmVjZWl2ZXI6IHJlY2VpdmVy
LCB0cmFjazogdHJhY2t9KSBzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9uLiBXYXMgW29iamVjdCBS
VENUcmFja0V2ZW50XS4KKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRD
VHJhY2tFdmVudC1jb25zdHJ1Y3Rvci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVh
bS9SVENUcmFja0V2ZW50LWNvbnN0cnVjdG9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMDJiYzhlMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vUlRDVHJhY2tFdmVudC1jb25zdHJ1Y3Rvci5odG1sCkBAIC0wLDAgKzEsODAg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9wcm9t
aXNlLXV0aWxzLmpzIj48L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAg
IDxzY3JpcHQ+CisgICAgICAgICAgICBsZXQgc3RyZWFtOworICAgICAgICAgICAgbGV0IHRyYWNr
OworICAgICAgICAgICAgbGV0IHJlY2VpdmVyOworICAgICAgICAgICAgbGV0IHRyYW5zY2VpdmVy
OworCisgICAgICAgICAgICBsZXQgZXZ0OworCisgICAgICAgICAgICBkZXNjcmlwdGlvbigiVGhp
cyB0ZXN0cyB0aGUgY29uc3RydWN0b3IgZm9yIHRoZSBSVENUcmFja0V2ZW50IERPTSBjbGFzcy4i
KTsKKworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0VXNlck1lZGlhUGVybWlzc2lvbih0cnVlKTsKKyAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgIGRlYnVnKCJUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0
aG91dCB0aGUgdGVzdFJ1bm5lciIpOworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjb25zdCBwYyA9IG5ldyB3ZWJraXRSVENQZWVy
Q29ubmVjdGlvbih7aWNlU2VydmVyczpbe3VybHM6J3N0dW46Zm9vLmNvbSd9XX0pOworCisgICAg
ICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7ICJhdWRpbyI6IHRy
dWUsICJ2aWRlbyI6IHRydWUgfSkKKyAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChzKSB7Cisg
ICAgICAgICAgICAgICAgc3RyZWFtID0gczsKKyAgICAgICAgICAgICAgICB0cmFjayA9IHN0cmVh
bS5nZXRBdWRpb1RyYWNrcygpWzBdOworICAgICAgICAgICAgICAgIHRyYW5zY2VpdmVyID0gcGMu
YWRkVHJhbnNjZWl2ZXIodHJhY2spOworICAgICAgICAgICAgICAgIHJlY2VpdmVyID0gdHJhbnNj
ZWl2ZXIucmVjZWl2ZXI7CisKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJldnQgPSBuZXcg
UlRDVHJhY2tFdmVudCgnZXZlbnRUeXBlJywgeyByZWNlaXZlcjogcmVjZWl2ZXIsIHRyYWNrOiB0
cmFjaywgdHJhbnNjZWl2ZXI6IHRyYW5zY2VpdmVyfSkiKTsKKworICAgICAgICAgICAgICAgIHNo
b3VsZEJlKCJldnQuYnViYmxlcyIsICJmYWxzZSIpOworICAgICAgICAgICAgICAgIHNob3VsZEJl
KCJldnQuY2FuY2VsYWJsZSIsICJmYWxzZSIpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJl
dnQucmVjZWl2ZXIiLCAicmVjZWl2ZXIiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgiZXZ0
LnRyYWNrIiwgInRyYWNrIik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoImV2dC5zdHJlYW1z
IiwgIltdIik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoImV2dC50cmFuc2NlaXZlciIsICJ0
cmFuc2NlaXZlciIpOworICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsKKworICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCJuZXcgUlRDVHJhY2tFdmVudCgnZXZlbnRUeXBlJywgeyByZWNlaXZlcjog
cmVjZWl2ZXIsIHRyYWNrOiB0cmFjaywgc3RyZWFtczogW10sIHRyYW5zY2VpdmVyOiB0cmFuc2Nl
aXZlcn0pLnN0cmVhbXMiLCAiW10iKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgibmV3IFJU
Q1RyYWNrRXZlbnQoJ2V2ZW50VHlwZScsIHsgcmVjZWl2ZXI6IHJlY2VpdmVyLCB0cmFjazogdHJh
Y2ssIHN0cmVhbXM6IFtzdHJlYW1dLCB0cmFuc2NlaXZlcjogdHJhbnNjZWl2ZXJ9KS5zdHJlYW1z
IiwgIltzdHJlYW1dIik7CisgICAgICAgICAgICAgICAgZGVidWcoIiIpOworCisgICAgICAgICAg
ICAgICAgc2hvdWxkVGhyb3coIm5ldyBSVENUcmFja0V2ZW50KCdldmVudFR5cGUnLCB7IHJlY2Vp
dmVyOiB0cmFjaywgdHJhY2s6IHRyYWNrLCBzdHJlYW1zOiBbc3RyZWFtLCBudWxsXSwgdHJhbnNj
ZWl2ZXI6IHRyYW5zY2VpdmVyfSkiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygibmV3
IFJUQ1RyYWNrRXZlbnQoJ2V2ZW50VHlwZScsIHsgcmVjZWl2ZXI6IHRyYWNrLCB0cmFjazogdHJh
Y2ssIHN0cmVhbXM6IFtudWxsXSwgdHJhbnNjZWl2ZXI6IHRyYW5zY2VpdmVyfSkiKTsKKyAgICAg
ICAgICAgICAgICBzaG91bGRUaHJvdygibmV3IFJUQ1RyYWNrRXZlbnQoJ2V2ZW50VHlwZScsIHsg
cmVjZWl2ZXI6IHRyYWNrLCB0cmFjazogdHJhY2ssIHN0cmVhbXM6IFt7fV0sIHRyYW5zY2VpdmVy
OiB0cmFuc2NlaXZlcn0pIik7CisgICAgICAgICAgICAgICAgc2hvdWxkVGhyb3coIm5ldyBSVENU
cmFja0V2ZW50KCdldmVudFR5cGUnLCB7IHJlY2VpdmVyOiB0cmFjaywgdHJhY2s6IHRyYWNrLCBz
dHJlYW1zOiBbMV0sIHRyYW5zY2VpdmVyOiB0cmFuc2NlaXZlcn0pIik7CisgICAgICAgICAgICAg
ICAgZGVidWcoIiIpOworCisgICAgICAgICAgICAgICAgLy8gVGhlIHRlc3RzIGJlbG93IGFyZSBl
eHBlY3RlZCB0byBmYWlsIChidWc6IHdlYmtpdC5vcmcvYi8xNTg1MzYpCisgICAgICAgICAgICAg
ICAgZGVidWcoIkRpY3Rpb25hcnkgbWVtYmVycyByZWNlaXZlciwgdHJhY2sgYW5kIHRyYW5zY2Vp
dmVyIGFyZSBub3QgbnVsbGFibGUiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRUaHJvdygibmV3
IFJUQ1RyYWNrRXZlbnQoJ2V2ZW50VHlwZScsIHsgcmVjZWl2ZXI6IG51bGwsIHRyYWNrOiB0cmFj
aywgdHJhbnNjZWl2ZXI6IHRyYW5zY2VpdmVyfSkiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRU
aHJvdygibmV3IFJUQ1RyYWNrRXZlbnQoJ2V2ZW50VHlwZScsIHsgcmVjZWl2ZXI6IHJlY2VpdmVy
LCB0cmFjazogbnVsbCwgdHJhbnNjZWl2ZXI6IHRyYW5zY2VpdmVyfSkiKTsKKyAgICAgICAgICAg
ICAgICBzaG91bGRUaHJvdygibmV3IFJUQ1RyYWNrRXZlbnQoJ2V2ZW50VHlwZScsIHsgcmVjZWl2
ZXI6IHJlY2VpdmVyLCB0cmFjazogdHJhY2ssIHRyYW5zY2VpdmVyOiBudWxsfSkiKTsKKyAgICAg
ICAgICAgICAgICBkZWJ1ZygiIik7CisKKyAgICAgICAgICAgICAgICBkZWJ1ZygiRGljdGlvbmFy
eSBtZW1iZXJzIHJlY2VpdmVyLCB0cmFjayBhbmQgdHJhbnNjZWl2ZXIgYXJlIHJlcXVpcmVkIik7
CisgICAgICAgICAgICAgICAgc2hvdWxkVGhyb3coIm5ldyBSVENUcmFja0V2ZW50KCdldmVudFR5
cGUnLCB7IHRyYWNrOiB0cmFjaywgdHJhbnNjZWl2ZXI6IHRyYW5zY2VpdmVyfSkiKTsKKyAgICAg
ICAgICAgICAgICBzaG91bGRUaHJvdygibmV3IFJUQ1RyYWNrRXZlbnQoJ2V2ZW50VHlwZScsIHsg
cmVjZWl2ZXI6IHJlY2VpdmVyLCB0cmFuc2NlaXZlcjogdHJhbnNjZWl2ZXJ9KSIpOworICAgICAg
ICAgICAgICAgIHNob3VsZFRocm93KCJuZXcgUlRDVHJhY2tFdmVudCgnZXZlbnRUeXBlJywgeyBy
ZWNlaXZlcjogcmVjZWl2ZXIsIHRyYWNrOiB0cmFja30pIik7CisgICAgICAgICAgICAgICAgZGVi
dWcoIiIpOworCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICB9
KQorICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikgeworICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoIkVycm9yIGNhdWdodCBpbiBwcm9taXNlIGNoYWluOiAiICsgZXJyb3IpOwor
ICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgfSk7CisKKyAgICAg
ICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICAgICAgICAgIHdpbmRvdy5z
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCisgICAgICAgIDwvc2NyaXB0PgorICAgICAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0
aW9ucwppbmRleCA1ODI3ZmE0Li5hNjA2NjE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtMTkxLDYgKzE5MSw4IEBAIGZhc3QvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24tYWRkVHJhbnNjZWl2ZXIuaHRtbAogZmFzdC9tZWRpYXN0cmVhbS9SVENS
dHBTZW5kZXItcmVwbGFjZVRyYWNrLmh0bWwKIGZhc3QvbWVkaWFzdHJlYW0vUlRDU2Vzc2lvbkRl
c2NyaXB0aW9uLmh0bWwKIGZhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tc2V0TG9j
YWxEZXNjcmlwdGlvbi1vZmZlci5odG1sCitmYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLXNldFJlbW90ZURlc2NyaXB0aW9uLW9mZmVyLmh0bWwKK2Zhc3QvbWVkaWFzdHJlYW0vUlRD
VHJhY2tFdmVudC1jb25zdHJ1Y3Rvci5odG1sCiAKICMgQXNzZXJ0cyBpbiBkZWJ1Zy4KIFsgRGVi
dWcgXSBmYXN0L2ltYWdlcy9sYXJnZS1zaXplLWltYWdlLWNyYXNoLmh0bWwgWyBTa2lwIF0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCA3YjJlZmQ5Li5lZDRjOTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNjAgQEAK
IDIwMTYtMDYtMDggIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29t
PgogCisgICAgICAgIFdlYlJUQzogSW1sZW1lbnQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9u
OjpzZXRSZW1vdGVEZXNjcmlwdGlvbigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTg0NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpz
ZXRSZW1vdGVEZXNjcmlwdGlvbigpIHdoaWNoIHZlcmlmaWVzIGEKKyAgICAgICAgcmVtb3RlIG9m
ZmVyIG9yIGFuc3dlciwgY29uZmlndXJlcyB0aGUgV2ViUlRDIGJhY2tlbmQgYW5kIGRpc3BhdGNo
ZXMgdGhlICd0cmFjaycgZXZlbnRzCisgICAgICAgIHRoYXQgcmVwcmVzZW50IHRoZSBpbmNvbWlu
ZyBtZWRpYSBbMV0uCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYWxzbyB1cGRhdGVzIHRoZSBSVENU
cmFja0V2ZW50IFsyXSB3aXRoIGEgc3RyZWFtcyBhbmQgYSB0cmFuc2NlaXZlciBhdHRyaWJ1dGUu
CisKKyAgICAgICAgWzFdIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJydGMtcGMvYXJjaGl2ZXMv
MjAxNjA1MTMvd2VicnRjLmh0bWwjZG9tLXJ0Y3BlZXJjb25uZWN0aW9uLXNldHJlbW90ZWRlc2Ny
aXB0aW9uCisgICAgICAgIFsyXSBodHRwczovL3czYy5naXRodWIuaW8vd2VicnRjLXBjL2FyY2hp
dmVzLzIwMTYwNTEzL3dlYnJ0Yy5odG1sI3J0Y3RyYWNrZXZlbnQKKworICAgICAgICBUZXN0czog
ZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1zZXRSZW1vdGVEZXNjcmlwdGlvbi1v
ZmZlci5odG1sCisgICAgICAgICAgICAgICBmYXN0L21lZGlhc3RyZWFtL1JUQ1RyYWNrRXZlbnQt
Y29uc3RydWN0b3IuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVu
ZHBvaW50UGVlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU291cmNl
TWFwKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6c2V0
TG9jYWxEZXNjcmlwdGlvblRhc2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFBl
ZXJDb25uZWN0aW9uOjpzZXRSZW1vdGVEZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OnNldFJlbW90ZURlc2NyaXB0aW9uVGFzayk6Cisg
ICAgICAgIEltcGxlbWVudGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFBlZXJD
b25uZWN0aW9uOjpyZW1vdGVEZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVu
ZHBvaW50UGVlckNvbm5lY3Rpb246OmN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OnBlbmRpbmdSZW1vdGVEZXNj
cmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246
OnJlbW90ZURlc2NyaXB0aW9uVHlwZVZhbGlkRm9yU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjppbnRlcm5hbFJlbW90ZURlc2NyaXB0aW9uKToK
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlv
bi5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5k
Lmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6YWRkVHJhbnNjZWl2ZXIpOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaDoKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpSVENSdHBSZWNlaXZlcjo6aXNEaXNwYXRjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJU
Q1J0cFJlY2VpdmVyOjpzZXREaXNwYXRjaGVkKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1RyYWNrRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDVHJhY2tFdmVudDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1RyYWNrRXZlbnQ6OlJUQ1RyYWNrRXZlbnQp
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDVHJhY2tFdmVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDVHJhY2tFdmVudDo6c3RyZWFtcyk6CisgICAgICAgIChXZWJDb3JlOjpS
VENUcmFja0V2ZW50Ojp0cmFuc2NlaXZlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENUcmFja0V2ZW50LmlkbDoKKyAgICAgICAgQWRkIHN0cmVhbXMgYW5kIHRyYW5zY2VpdmVy
IGF0dHJpYnV0ZXMuCisgICAgICAgICogYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYUVuZHBvaW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFFbmRw
b2ludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFFbmRwb2ludDo6ZmlsdGVyUGF5
bG9hZHMpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhRW5kcG9pbnQ6OnVwZGF0ZVNlbmRD
b25maWd1cmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVuZHBvaW50
Lmg6CisKKzIwMTYtMDYtMDggIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nz
b24uY29tPgorCiAgICAgICAgIFdlYlJUQzogSW1sZW1lbnQgTWVkaWFFbmRwb2ludFBlZXJDb25u
ZWN0aW9uOjpzZXRMb2NhbERlc2NyaXB0aW9uKCkKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODE5MAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVj
dGlvbi5jcHAKaW5kZXggNzMzOTI0YS4uMGJmYmZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJD
b25uZWN0aW9uLmNwcApAQCAtMzMsMTMgKzMzLDE0IEBACiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAj
aW5jbHVkZSAiTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmgiCiAKLSNpbmNsdWRlICJFdmVu
dC5oIgogI2luY2x1ZGUgIkpTUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiTWVk
aWFFbmRwb2ludFNlc3Npb25Db25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW0u
aCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrLmgiCiAjaW5jbHVkZSAiUGVlck1lZGlhRGVz
Y3JpcHRpb24uaCIKICNpbmNsdWRlICJSVENPZmZlckFuc3dlck9wdGlvbnMuaCIKICNpbmNsdWRl
ICJSVENSdHBUcmFuc2NlaXZlci5oIgorI2luY2x1ZGUgIlJUQ1RyYWNrRXZlbnQuaCIKICNpbmNs
dWRlICJTRFBQcm9jZXNzb3IuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgpAQCAtMjA5LDYgKzIxMCwyNiBAQCB2b2lkIE1lZGlhRW5k
cG9pbnRQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlQW5zd2VyKFJUQ0Fuc3dlck9wdGlvbnMmIG9wdGlv
bnMsIFNlc3NpbwogICAgIHByb21pc2UucmVqZWN0KE5PVF9TVVBQT1JURURfRVJSKTsKIH0KIAor
c3RhdGljIFJlYWx0aW1lTWVkaWFTb3VyY2VNYXAgY3JlYXRlU291cmNlTWFwKGNvbnN0IE1lZGlh
RGVzY3JpcHRpb25WZWN0b3ImIHJlbW90ZU1lZGlhRGVzY3JpcHRpb25zLCB1bnNpZ25lZCBsb2Nh
bE1lZGlhRGVzY3JpcHRpb25Db3VudCwgY29uc3QgUnRwVHJhbnNjZWl2ZXJWZWN0b3ImIHRyYW5z
Y2VpdmVycykKK3sKKyAgICBSZWFsdGltZU1lZGlhU291cmNlTWFwIHNvdXJjZU1hcDsKKworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZW1vdGVNZWRpYURlc2NyaXB0aW9ucy5zaXplKCkg
JiYgaSA8IGxvY2FsTWVkaWFEZXNjcmlwdGlvbkNvdW50OyArK2kpIHsKKyAgICAgICAgUGVlck1l
ZGlhRGVzY3JpcHRpb24mIHJlbW90ZU1lZGlhRGVzY3JpcHRpb24gPSAqcmVtb3RlTWVkaWFEZXNj
cmlwdGlvbnNbaV07CisgICAgICAgIGlmIChyZW1vdGVNZWRpYURlc2NyaXB0aW9uLnR5cGUoKSAh
PSAiYXVkaW8iICYmIHJlbW90ZU1lZGlhRGVzY3JpcHRpb24udHlwZSgpICE9ICJ2aWRlbyIpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBSVENSdHBUcmFuc2NlaXZlciogdHJhbnNj
ZWl2ZXIgPSBtYXRjaFRyYW5zY2VpdmVyQnlNaWQodHJhbnNjZWl2ZXJzLCByZW1vdGVNZWRpYURl
c2NyaXB0aW9uLm1pZCgpKTsKKyAgICAgICAgaWYgKHRyYW5zY2VpdmVyKSB7CisgICAgICAgICAg
ICBpZiAodHJhbnNjZWl2ZXItPmhhc1NlbmRpbmdEaXJlY3Rpb24oKSAmJiB0cmFuc2NlaXZlci0+
c2VuZGVyKCktPnRyYWNrKCkpCisgICAgICAgICAgICAgICAgc291cmNlTWFwLnNldCh0cmFuc2Nl
aXZlci0+bWlkKCksICZ0cmFuc2NlaXZlci0+c2VuZGVyKCktPnRyYWNrKCktPnNvdXJjZSgpKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHNvdXJj
ZU1hcDsKK30KKwogdm9pZCBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OnNldExvY2FsRGVz
Y3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgVm9pZFByb21pc2Um
JiBwcm9taXNlKQogewogICAgIHJ1blRhc2soW3RoaXMsIHByb3RlY3RlZERlc2NyaXB0aW9uID0g
UmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4oJmRlc2NyaXB0aW9uKSwgcHJvdGVjdGVkUHJv
bWlzZSA9IFdURk1vdmUocHJvbWlzZSldKCkgbXV0YWJsZSB7CkBAIC0yNzAsNiArMjkxLDE2IEBA
IHZvaWQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpzZXRMb2NhbERlc2NyaXB0aW9uVGFz
ayhSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAoaW50
ZXJuYWxSZW1vdGVEZXNjcmlwdGlvbigpKSB7CisgICAgICAgIE1lZGlhRW5kcG9pbnRTZXNzaW9u
Q29uZmlndXJhdGlvbiogcmVtb3RlQ29uZmlndXJhdGlvbiA9IGludGVybmFsUmVtb3RlRGVzY3Jp
cHRpb24oKS0+Y29uZmlndXJhdGlvbigpOworICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlTWFw
IHNlbmRTb3VyY2VNYXAgPSBjcmVhdGVTb3VyY2VNYXAocmVtb3RlQ29uZmlndXJhdGlvbi0+bWVk
aWFEZXNjcmlwdGlvbnMoKSwgbWVkaWFEZXNjcmlwdGlvbnMuc2l6ZSgpLCB0cmFuc2NlaXZlcnMp
OworCisgICAgICAgIGlmIChtX21lZGlhRW5kcG9pbnQtPnVwZGF0ZVNlbmRDb25maWd1cmF0aW9u
KHJlbW90ZUNvbmZpZ3VyYXRpb24sIHNlbmRTb3VyY2VNYXAsIGlzSW5pdGlhdG9yKSA9PSBNZWRp
YUVuZHBvaW50OjpVcGRhdGVSZXN1bHQ6OkZhaWxlZCkgeworICAgICAgICAgICAgcHJvbWlzZS5y
ZWplY3QoT3BlcmF0aW9uRXJyb3IsICJVbmFibGUgdG8gYXBwbHkgc2Vzc2lvbiBkZXNjcmlwdGlv
biIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCiAgICAgaWYgKCFo
YXNVbmFzc29jaWF0ZWRUcmFuc2NlaXZlcnModHJhbnNjZWl2ZXJzKSkKICAgICAgICAgY2xlYXJO
ZWdvdGlhdGlvbk5lZWRlZFN0YXRlKCk7CiAKQEAgLTI4NCw3ICszMTUsOSBAQCB2b2lkIE1lZGlh
RW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6c2V0TG9jYWxEZXNjcmlwdGlvblRhc2soUmVmUHRyPFJU
Q1Nlc3Npb25EZXNjcgogCiAgICAgY2FzZSBSVENTZXNzaW9uRGVzY3JpcHRpb246OlNkcFR5cGU6
OkFuc3dlcjoKICAgICAgICAgbV9jdXJyZW50TG9jYWxEZXNjcmlwdGlvbiA9IG5ld0Rlc2NyaXB0
aW9uOworICAgICAgICBtX2N1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbiA9IG1fcGVuZGluZ1JlbW90
ZURlc2NyaXB0aW9uOwogICAgICAgICBtX3BlbmRpbmdMb2NhbERlc2NyaXB0aW9uID0gbnVsbHB0
cjsKKyAgICAgICAgbV9wZW5kaW5nUmVtb3RlRGVzY3JpcHRpb24gPSBudWxscHRyOwogICAgICAg
ICBuZXdTaWduYWxpbmdTdGF0ZSA9IFNpZ25hbGluZ1N0YXRlOjpTdGFibGU7CiAgICAgICAgIGJy
ZWFrOwogCkBAIC0zMzAsMzIgKzM2MywxNjMgQEAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlv
bj4gTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpwZW5kaW5nTG9jYWxEZXNjcmlwdGkKIAog
dm9pZCBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OnNldFJlbW90ZURlc2NyaXB0aW9uKFJU
Q1Nlc3Npb25EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIFZvaWRQcm9taXNlJiYgcHJvbWlzZSkK
IHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRpb24pOworICAgIHJ1blRhc2soW3RoaXMsIHBy
b3RlY3RlZERlc2NyaXB0aW9uID0gUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4oJmRlc2Ny
aXB0aW9uKSwgcHJvdGVjdGVkUHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKCkgbXV0YWJsZSB7
CisgICAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uVGFzayhXVEZNb3ZlKHByb3RlY3RlZERlc2Ny
aXB0aW9uKSwgcHJvdGVjdGVkUHJvbWlzZSk7CisgICAgfSk7Cit9CiAKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwordm9pZCBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OnNldFJlbW90ZURlc2Ny
aXB0aW9uVGFzayhSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiYmIGRlc2NyaXB0aW9uLCBW
b2lkUHJvbWlzZSYgcHJvbWlzZSkKK3sKKyAgICBpZiAobV9jbGllbnQtPmludGVybmFsU2lnbmFs
aW5nU3RhdGUoKSA9PSBTaWduYWxpbmdTdGF0ZTo6Q2xvc2VkKQorICAgICAgICByZXR1cm47CiAK
LSAgICBwcm9taXNlLnJlamVjdChOT1RfU1VQUE9SVEVEX0VSUik7CisgICAgRXhjZXB0aW9uQ29k
ZVdpdGhNZXNzYWdlIGV4Y2VwdGlvbjsKKyAgICBhdXRvIG5ld0Rlc2NyaXB0aW9uID0gTWVkaWFF
bmRwb2ludFNlc3Npb25EZXNjcmlwdGlvbjo6Y3JlYXRlKFdURk1vdmUoZGVzY3JpcHRpb24pLCAq
bV9zZHBQcm9jZXNzb3IsIGV4Y2VwdGlvbik7CisgICAgaWYgKGV4Y2VwdGlvbi5jb2RlKSB7Cisg
ICAgICAgIHByb21pc2UucmVqZWN0KGV4Y2VwdGlvbi5jb2RlLCBleGNlcHRpb24ubWVzc2FnZSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXJlbW90ZURlc2NyaXB0aW9uVHlw
ZVZhbGlkRm9yU3RhdGUobmV3RGVzY3JpcHRpb24tPnR5cGUoKSkpIHsKKyAgICAgICAgcHJvbWlz
ZS5yZWplY3QoSU5WQUxJRF9TVEFURV9FUlIsICJEZXNjcmlwdGlvbiB0eXBlIGluY29tcGF0aWJs
ZSB3aXRoIGN1cnJlbnQgc2lnbmFsaW5nIHN0YXRlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBjb25zdCBNZWRpYURlc2NyaXB0aW9uVmVjdG9yJiBtZWRpYURlc2NyaXB0aW9ucyA9
IG5ld0Rlc2NyaXB0aW9uLT5jb25maWd1cmF0aW9uKCktPm1lZGlhRGVzY3JpcHRpb25zKCk7Cisg
ICAgZm9yIChhdXRvJiBtZWRpYURlc2NyaXB0aW9uIDogbWVkaWFEZXNjcmlwdGlvbnMpIHsKKyAg
ICAgICAgaWYgKG1lZGlhRGVzY3JpcHRpb24tPnR5cGUoKSAhPSAiYXVkaW8iICYmIG1lZGlhRGVz
Y3JpcHRpb24tPnR5cGUoKSAhPSAidmlkZW8iKQorICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgbWVkaWFEZXNjcmlwdGlvbi0+c2V0UGF5bG9hZHMobV9tZWRpYUVuZHBvaW50LT5maWx0
ZXJQYXlsb2FkcyhtZWRpYURlc2NyaXB0aW9uLT5wYXlsb2FkcygpLAorICAgICAgICAgICAgbWVk
aWFEZXNjcmlwdGlvbi0+dHlwZSgpID09ICJhdWRpbyIgPyBtX2RlZmF1bHRBdWRpb1BheWxvYWRz
IDogbV9kZWZhdWx0VmlkZW9QYXlsb2FkcykpOworICAgIH0KKworICAgIGJvb2wgaXNJbml0aWF0
b3IgPSBuZXdEZXNjcmlwdGlvbi0+dHlwZSgpID09IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjo6U2Rw
VHlwZTo6QW5zd2VyOworICAgIGNvbnN0IFJ0cFRyYW5zY2VpdmVyVmVjdG9yJiB0cmFuc2NlaXZl
cnMgPSBtX2NsaWVudC0+Z2V0VHJhbnNjZWl2ZXJzKCk7CisKKyAgICBSZWFsdGltZU1lZGlhU291
cmNlTWFwIHNlbmRTb3VyY2VNYXA7CisgICAgaWYgKGludGVybmFsTG9jYWxEZXNjcmlwdGlvbigp
KQorICAgICAgICBzZW5kU291cmNlTWFwID0gY3JlYXRlU291cmNlTWFwKG1lZGlhRGVzY3JpcHRp
b25zLCBpbnRlcm5hbExvY2FsRGVzY3JpcHRpb24oKS0+Y29uZmlndXJhdGlvbigpLT5tZWRpYURl
c2NyaXB0aW9ucygpLnNpemUoKSwgdHJhbnNjZWl2ZXJzKTsKKworICAgIGlmIChtX21lZGlhRW5k
cG9pbnQtPnVwZGF0ZVNlbmRDb25maWd1cmF0aW9uKG5ld0Rlc2NyaXB0aW9uLT5jb25maWd1cmF0
aW9uKCksIHNlbmRTb3VyY2VNYXAsIGlzSW5pdGlhdG9yKSA9PSBNZWRpYUVuZHBvaW50OjpVcGRh
dGVSZXN1bHQ6OkZhaWxlZCkgeworICAgICAgICBwcm9taXNlLnJlamVjdChPcGVyYXRpb25FcnJv
ciwgIlVuYWJsZSB0byBhcHBseSBzZXNzaW9uIGRlc2NyaXB0aW9uIik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBmb3IgKGF1dG8gbWVkaWFEZXNjcmlwdGlvbiA6IG1lZGlhRGVzY3Jp
cHRpb25zKSB7CisgICAgICAgIFJUQ1J0cFRyYW5zY2VpdmVyKiB0cmFuc2NlaXZlciA9IG1hdGNo
VHJhbnNjZWl2ZXJCeU1pZCh0cmFuc2NlaXZlcnMsIG1lZGlhRGVzY3JpcHRpb24tPm1pZCgpKTsK
KyAgICAgICAgaWYgKCF0cmFuc2NlaXZlcikgeworICAgICAgICAgICAgYm9vbCByZWNlaXZlT25s
eUZsYWcgPSBmYWxzZTsKKworICAgICAgICAgICAgaWYgKG1lZGlhRGVzY3JpcHRpb24tPm1vZGUo
KSA9PSAic2VuZHJlY3YiIHx8IG1lZGlhRGVzY3JpcHRpb24tPm1vZGUoKSA9PSAicmVjdm9ubHki
KSB7CisgICAgICAgICAgICAgICAgLy8gVHJ5IHRvIG1hdGNoIGFuIGV4aXN0aW5nIHRyYW5zY2Vp
dmVyLgorICAgICAgICAgICAgICAgIHRyYW5zY2VpdmVyID0gbWF0Y2hUcmFuc2NlaXZlcih0cmFu
c2NlaXZlcnMsIFsmbWVkaWFEZXNjcmlwdGlvbl0gKFJUQ1J0cFRyYW5zY2VpdmVyJiBjdXJyZW50
KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAhY3VycmVudC5zdG9wcGVkKCkgJiYgY3Vy
cmVudC5taWQoKS5pc051bGwoKSAmJiBjdXJyZW50LnNlbmRlcigpLT50cmFja0tpbmQoKSA9PSBt
ZWRpYURlc2NyaXB0aW9uLT50eXBlKCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAg
ICAgICAgICBpZiAodHJhbnNjZWl2ZXIpCisgICAgICAgICAgICAgICAgICAgIHRyYW5zY2VpdmVy
LT5zZXRNaWQobWVkaWFEZXNjcmlwdGlvbi0+bWlkKCkpOworICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZU9ubHlGbGFnID0gdHJ1ZTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgaWYgKCF0cmFuc2NlaXZlcikgeworICAgICAgICAgICAgICAgIGF1
dG8gc2VuZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUobWVkaWFEZXNjcmlwdGlvbi0+dHlwZSgp
LCBWZWN0b3I8U3RyaW5nPigpLCBtX2NsaWVudC0+c2VuZGVyQ2xpZW50KCkpOworICAgICAgICAg
ICAgICAgIGF1dG8gcmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlcihtZWRpYURlc2NyaXB0aW9uLT5t
aWQoKSwgbWVkaWFEZXNjcmlwdGlvbi0+dHlwZSgpLCBtZWRpYURlc2NyaXB0aW9uLT5tZWRpYVN0
cmVhbVRyYWNrSWQoKSk7CisKKyAgICAgICAgICAgICAgICBhdXRvIG5ld1RyYW5zY2VpdmVyID0g
UlRDUnRwVHJhbnNjZWl2ZXI6OmNyZWF0ZShXVEZNb3ZlKHNlbmRlciksIFdURk1vdmUocmVjZWl2
ZXIpKTsKKyAgICAgICAgICAgICAgICBuZXdUcmFuc2NlaXZlci0+c2V0TWlkKG1lZGlhRGVzY3Jp
cHRpb24tPm1pZCgpKTsKKyAgICAgICAgICAgICAgICBpZiAocmVjZWl2ZU9ubHlGbGFnKQorICAg
ICAgICAgICAgICAgICAgICBuZXdUcmFuc2NlaXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24o
KTsKKworICAgICAgICAgICAgICAgIHRyYW5zY2VpdmVyID0gbmV3VHJhbnNjZWl2ZXIucHRyKCk7
CisgICAgICAgICAgICAgICAgbV9jbGllbnQtPmFkZFRyYW5zY2VpdmVyKFdURk1vdmUobmV3VHJh
bnNjZWl2ZXIpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChtZWRp
YURlc2NyaXB0aW9uLT5tb2RlKCkgPT0gInNlbmRyZWN2IiB8fCBtZWRpYURlc2NyaXB0aW9uLT5t
b2RlKCkgPT0gInNlbmRvbmx5IikgeworICAgICAgICAgICAgUlRDUnRwUmVjZWl2ZXImIHJlY2Vp
dmVyID0gKnRyYW5zY2VpdmVyLT5yZWNlaXZlcigpOworICAgICAgICAgICAgaWYgKHJlY2VpdmVy
LmlzRGlzcGF0Y2hlZCgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
cmVjZWl2ZXIuc2V0RGlzcGF0Y2hlZCh0cnVlKTsKKworICAgICAgICAgICAgVmVjdG9yPFN0cmlu
Zz4gbWVkaWFTdHJlYW1JZHM7CisgICAgICAgICAgICBpZiAoIW1lZGlhRGVzY3JpcHRpb24tPm1l
ZGlhU3RyZWFtSWQoKS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgbWVkaWFTdHJlYW1JZHMu
YXBwZW5kKG1lZGlhRGVzY3JpcHRpb24tPm1lZGlhU3RyZWFtSWQoKSk7CisKKyAgICAgICAgICAg
IC8vIEEgcmVtb3RlIHRyYWNrIGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggMC4uKiBNZWRpYVN0cmVh
bXMuIFdlIGNyZWF0ZSBhIG5ldyBzdHJlYW0gZm9yCisgICAgICAgICAgICAvLyBhIHRyYWNrIGlu
IGNhc2Ugb2YgYW4gdW5yZWNvZ25pemVkIHN0cmVhbSBpZCwgb3IganVzdCBhZGQgdGhlIHRyYWNr
IGlmIHRoZSBzdHJlYW0KKyAgICAgICAgICAgIC8vIGFscmVhZHkgZXhpc3RzLgorICAgICAgICAg
ICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxNZWRpYVN0cmVhbT4+IHRyYWNrRXZlbnRNZWRpYVN0
cmVhbXM7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGlkIDogbWVkaWFTdHJlYW1JZHMpIHsKKyAg
ICAgICAgICAgICAgICBpZiAobV9yZW1vdGVTdHJlYW1NYXAuY29udGFpbnMoaWQpKSB7CisgICAg
ICAgICAgICAgICAgICAgIFJlZlB0cjxNZWRpYVN0cmVhbT4gc3RyZWFtID0gbV9yZW1vdGVTdHJl
YW1NYXAuZ2V0KGlkKTsKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtLT5hZGRUcmFjaygqcmVj
ZWl2ZXIudHJhY2soKSk7CisgICAgICAgICAgICAgICAgICAgIHRyYWNrRXZlbnRNZWRpYVN0cmVh
bXMuYWRkKGlkLCBXVEZNb3ZlKHN0cmVhbSkpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgIGF1dG8gbmV3U3RyZWFtID0gTWVkaWFTdHJlYW06OmNyZWF0ZSgq
bV9jbGllbnQtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgTWVkaWFTdHJlYW1UcmFja1ZlY3Rv
cih7IHJlY2VpdmVyLnRyYWNrKCkgfSkpOworICAgICAgICAgICAgICAgICAgICBtX3JlbW90ZVN0
cmVhbU1hcC5hZGQoaWQsIG5ld1N0cmVhbS5jb3B5UmVmKCkpOworICAgICAgICAgICAgICAgICAg
ICB0cmFja0V2ZW50TWVkaWFTdHJlYW1zLmFkZChpZCwgV1RGTW92ZShuZXdTdHJlYW0pKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFZlY3RvcjxSZWZQ
dHI8TWVkaWFTdHJlYW0+PiBzdHJlYW1zOworICAgICAgICAgICAgY29weVZhbHVlc1RvVmVjdG9y
KHRyYWNrRXZlbnRNZWRpYVN0cmVhbXMsIHN0cmVhbXMpOworCisgICAgICAgICAgICBtX2NsaWVu
dC0+ZmlyZUV2ZW50KFJUQ1RyYWNrRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkudHJhY2tFdmVu
dCwgZmFsc2UsIGZhbHNlLAorICAgICAgICAgICAgICAgICZyZWNlaXZlciwgcmVjZWl2ZXIudHJh
Y2soKSwgV1RGTW92ZShzdHJlYW1zKSwgdHJhbnNjZWl2ZXIpKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIFNpZ25hbGluZ1N0YXRlIG5ld1NpZ25hbGluZ1N0YXRlOworCisgICAgLy8gVXBkYXRl
IHN0YXRlIGFuZCBsb2NhbCBkZXNjcmlwdGlvbnMgYWNjb3JkaW5nIHRvIHNldExvY2FsL1JlbW90
ZURlc2NyaXB0aW9uIHByb2Nlc3NpbmcgbW9kZWwKKyAgICBzd2l0Y2ggKG5ld0Rlc2NyaXB0aW9u
LT50eXBlKCkpIHsKKyAgICBjYXNlIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjo6U2RwVHlwZTo6T2Zm
ZXI6CisgICAgICAgIG1fcGVuZGluZ1JlbW90ZURlc2NyaXB0aW9uID0gbmV3RGVzY3JpcHRpb247
CisgICAgICAgIG5ld1NpZ25hbGluZ1N0YXRlID0gU2lnbmFsaW5nU3RhdGU6OkhhdmVSZW1vdGVP
ZmZlcjsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjo6
U2RwVHlwZTo6QW5zd2VyOgorICAgICAgICBtX2N1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbiA9IG5l
d0Rlc2NyaXB0aW9uOworICAgICAgICBtX2N1cnJlbnRMb2NhbERlc2NyaXB0aW9uID0gbV9wZW5k
aW5nTG9jYWxEZXNjcmlwdGlvbjsKKyAgICAgICAgbV9wZW5kaW5nUmVtb3RlRGVzY3JpcHRpb24g
PSBudWxscHRyOworICAgICAgICBtX3BlbmRpbmdMb2NhbERlc2NyaXB0aW9uID0gbnVsbHB0cjsK
KyAgICAgICAgbmV3U2lnbmFsaW5nU3RhdGUgPSBTaWduYWxpbmdTdGF0ZTo6U3RhYmxlOworICAg
ICAgICBicmVhazsKKworICAgIGNhc2UgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpTZHBUeXBlOjpS
b2xsYmFjazoKKyAgICAgICAgbV9wZW5kaW5nUmVtb3RlRGVzY3JpcHRpb24gPSBudWxscHRyOwor
ICAgICAgICBuZXdTaWduYWxpbmdTdGF0ZSA9IFNpZ25hbGluZ1N0YXRlOjpTdGFibGU7CisgICAg
ICAgIGJyZWFrOworCisgICAgY2FzZSBSVENTZXNzaW9uRGVzY3JpcHRpb246OlNkcFR5cGU6OlBy
YW5zd2VyOgorICAgICAgICBtX3BlbmRpbmdSZW1vdGVEZXNjcmlwdGlvbiA9IG5ld0Rlc2NyaXB0
aW9uOworICAgICAgICBuZXdTaWduYWxpbmdTdGF0ZSA9IFNpZ25hbGluZ1N0YXRlOjpIYXZlUmVt
b3RlUHJBbnN3ZXI7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmIChuZXdTaWduYWxp
bmdTdGF0ZSAhPSBtX2NsaWVudC0+aW50ZXJuYWxTaWduYWxpbmdTdGF0ZSgpKSB7CisgICAgICAg
IG1fY2xpZW50LT5zZXRTaWduYWxpbmdTdGF0ZShuZXdTaWduYWxpbmdTdGF0ZSk7CisgICAgICAg
IG1fY2xpZW50LT5maXJlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc2lnbmFsaW5n
c3RhdGVjaGFuZ2VFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgfQorCisgICAgcHJvbWlzZS5y
ZXNvbHZlKG51bGxwdHIpOwogfQogCiBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBNZWRp
YUVuZHBvaW50UGVlckNvbm5lY3Rpb246OnJlbW90ZURlc2NyaXB0aW9uKCkgY29uc3QKIHsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotCi0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGNy
ZWF0ZVJUQ1Nlc3Npb25EZXNjcmlwdGlvbihpbnRlcm5hbFJlbW90ZURlc2NyaXB0aW9uKCkpOwog
fQogCiBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBNZWRpYUVuZHBvaW50UGVlckNvbm5l
Y3Rpb246OmN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbigpIGNvbnN0CiB7Ci0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLQotICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBjcmVhdGVSVENTZXNz
aW9uRGVzY3JpcHRpb24obV9jdXJyZW50UmVtb3RlRGVzY3JpcHRpb24uZ2V0KCkpOwogfQogCiBS
ZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246
OnBlbmRpbmdSZW1vdGVEZXNjcmlwdGlvbigpIGNvbnN0CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLQotICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBjcmVhdGVSVENTZXNzaW9uRGVz
Y3JpcHRpb24obV9wZW5kaW5nUmVtb3RlRGVzY3JpcHRpb24uZ2V0KCkpOwogfQogCiB2b2lkIE1l
ZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6c2V0Q29uZmlndXJhdGlvbihSVENDb25maWd1cmF0
aW9uJiBjb25maWd1cmF0aW9uKQpAQCAtNDMzLDExICs1OTcsMzUgQEAgYm9vbCBNZWRpYUVuZHBv
aW50UGVlckNvbm5lY3Rpb246OmxvY2FsRGVzY3JpcHRpb25UeXBlVmFsaWRGb3JTdGF0ZShSVENT
ZXNzaW9uRGUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgTWVkaWFFbmRwb2ludFBlZXJD
b25uZWN0aW9uOjpyZW1vdGVEZXNjcmlwdGlvblR5cGVWYWxpZEZvclN0YXRlKFJUQ1Nlc3Npb25E
ZXNjcmlwdGlvbjo6U2RwVHlwZSB0eXBlKSBjb25zdAoreworICAgIHN3aXRjaCAobV9jbGllbnQt
PmludGVybmFsU2lnbmFsaW5nU3RhdGUoKSkgeworICAgIGNhc2UgU2lnbmFsaW5nU3RhdGU6OlN0
YWJsZToKKyAgICAgICAgcmV0dXJuIHR5cGUgPT0gUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpTZHBU
eXBlOjpPZmZlcjsKKyAgICBjYXNlIFNpZ25hbGluZ1N0YXRlOjpIYXZlTG9jYWxPZmZlcjoKKyAg
ICAgICAgcmV0dXJuIHR5cGUgPT0gUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpTZHBUeXBlOjpBbnN3
ZXIgfHwgdHlwZSA9PSBSVENTZXNzaW9uRGVzY3JpcHRpb246OlNkcFR5cGU6OlByYW5zd2VyOwor
ICAgIGNhc2UgU2lnbmFsaW5nU3RhdGU6OkhhdmVSZW1vdGVPZmZlcjoKKyAgICAgICAgcmV0dXJu
IHR5cGUgPT0gUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpTZHBUeXBlOjpPZmZlcjsKKyAgICBjYXNl
IFNpZ25hbGluZ1N0YXRlOjpIYXZlUmVtb3RlUHJBbnN3ZXI6CisgICAgICAgIHJldHVybiB0eXBl
ID09IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjo6U2RwVHlwZTo6QW5zd2VyIHx8IHR5cGUgPT0gUlRD
U2Vzc2lvbkRlc2NyaXB0aW9uOjpTZHBUeXBlOjpQcmFuc3dlcjsKKyAgICBkZWZhdWx0OgorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfTsKKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKwogTWVkaWFFbmRwb2ludFNlc3Npb25EZXNjcmlwdGlvbiog
TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjppbnRlcm5hbExvY2FsRGVzY3JpcHRpb24oKSBj
b25zdAogewogICAgIHJldHVybiBtX3BlbmRpbmdMb2NhbERlc2NyaXB0aW9uID8gbV9wZW5kaW5n
TG9jYWxEZXNjcmlwdGlvbi5nZXQoKSA6IG1fY3VycmVudExvY2FsRGVzY3JpcHRpb24uZ2V0KCk7
CiB9CiAKK01lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb24qIE1lZGlhRW5kcG9pbnRQZWVy
Q29ubmVjdGlvbjo6aW50ZXJuYWxSZW1vdGVEZXNjcmlwdGlvbigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fcGVuZGluZ1JlbW90ZURlc2NyaXB0aW9uID8gbV9wZW5kaW5nUmVtb3RlRGVzY3JpcHRp
b24uZ2V0KCkgOiBtX2N1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbi5nZXQoKTsKK30KKwogUmVmUHRy
PFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpjcmVh
dGVSVENTZXNzaW9uRGVzY3JpcHRpb24oTWVkaWFFbmRwb2ludFNlc3Npb25EZXNjcmlwdGlvbiog
ZGVzY3JpcHRpb24pIGNvbnN0CiB7CiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uID8gZGVzY3JpcHRp
b24tPnRvUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKCptX3NkcFByb2Nlc3NvcikgOiBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBv
aW50UGVlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmgKaW5kZXggZWNiMjkyOS4uMzE2OWM1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50
UGVlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5oCkBAIC00Miw2ICs0Miw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgTWVkaWFTdHJlYW07CiBjbGFzcyBNZWRpYVN0cmVhbVRy
YWNrOwogY2xhc3MgUGVlck1lZGlhRGVzY3JpcHRpb247CiBjbGFzcyBTRFBQcm9jZXNzb3I7CkBA
IC04OCwxMCArODksMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZU9mZmVyVGFzayhSVENP
ZmZlck9wdGlvbnMmLCBQZWVyQ29ubmVjdGlvbjo6U2Vzc2lvbkRlc2NyaXB0aW9uUHJvbWlzZSYp
OwogCiAgICAgdm9pZCBzZXRMb2NhbERlc2NyaXB0aW9uVGFzayhSZWZQdHI8UlRDU2Vzc2lvbkRl
c2NyaXB0aW9uPiYmLCBQZWVyQ29ubmVjdGlvbjo6Vm9pZFByb21pc2UmKTsKKyAgICB2b2lkIHNl
dFJlbW90ZURlc2NyaXB0aW9uVGFzayhSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiYmLCBQ
ZWVyQ29ubmVjdGlvbjo6Vm9pZFByb21pc2UmKTsKIAogICAgIGJvb2wgbG9jYWxEZXNjcmlwdGlv
blR5cGVWYWxpZEZvclN0YXRlKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjo6U2RwVHlwZSkgY29uc3Q7
CisgICAgYm9vbCByZW1vdGVEZXNjcmlwdGlvblR5cGVWYWxpZEZvclN0YXRlKFJUQ1Nlc3Npb25E
ZXNjcmlwdGlvbjo6U2RwVHlwZSkgY29uc3Q7CiAKICAgICBNZWRpYUVuZHBvaW50U2Vzc2lvbkRl
c2NyaXB0aW9uKiBpbnRlcm5hbExvY2FsRGVzY3JpcHRpb24oKSBjb25zdDsKKyAgICBNZWRpYUVu
ZHBvaW50U2Vzc2lvbkRlc2NyaXB0aW9uKiBpbnRlcm5hbFJlbW90ZURlc2NyaXB0aW9uKCkgY29u
c3Q7CiAgICAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gY3JlYXRlUlRDU2Vzc2lvbkRl
c2NyaXB0aW9uKE1lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb24qKSBjb25zdDsKIAogICAg
IC8vIE1lZGlhRW5kcG9pbnRDbGllbnQKQEAgLTEyMCw2ICsxMjQsMTEgQEAgcHJpdmF0ZToKICAg
ICBSZWZQdHI8TWVkaWFFbmRwb2ludFNlc3Npb25EZXNjcmlwdGlvbj4gbV9jdXJyZW50TG9jYWxE
ZXNjcmlwdGlvbjsKICAgICBSZWZQdHI8TWVkaWFFbmRwb2ludFNlc3Npb25EZXNjcmlwdGlvbj4g
bV9wZW5kaW5nTG9jYWxEZXNjcmlwdGlvbjsKIAorICAgIFJlZlB0cjxNZWRpYUVuZHBvaW50U2Vz
c2lvbkRlc2NyaXB0aW9uPiBtX2N1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbjsKKyAgICBSZWZQdHI8
TWVkaWFFbmRwb2ludFNlc3Npb25EZXNjcmlwdGlvbj4gbV9wZW5kaW5nUmVtb3RlRGVzY3JpcHRp
b247CisKKyAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPE1lZGlhU3RyZWFtPj4gbV9yZW1vdGVT
dHJlYW1NYXA7CisKICAgICBib29sIG1fbmVnb3RpYXRpb25OZWVkZWQgeyBmYWxzZSB9OwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29u
bmVjdGlvbkJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmgKaW5kZXggMDFmODdiNS4uNDA1M2IzNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9u
QmFja2VuZC5oCkBAIC00OCw2ICs0OCw3IEBAIGNsYXNzIFJUQ0ljZUNhbmRpZGF0ZTsKIGNsYXNz
IFJUQ09mZmVyT3B0aW9uczsKIGNsYXNzIFJUQ1J0cFJlY2VpdmVyOwogY2xhc3MgUlRDUnRwU2Vu
ZGVyOworY2xhc3MgUlRDUnRwU2VuZGVyQ2xpZW50OwogY2xhc3MgUlRDUnRwVHJhbnNjZWl2ZXI7
CiBjbGFzcyBSVENTZXNzaW9uRGVzY3JpcHRpb247CiBjbGFzcyBSVENTdGF0c1Jlc3BvbnNlOwpA
QCAtNjIsOCArNjMsMTAgQEAgdHlwZWRlZiBET01Qcm9taXNlPFJUQ1N0YXRzUmVzcG9uc2U+IFN0
YXRzUHJvbWlzZTsKIGNsYXNzIFBlZXJDb25uZWN0aW9uQmFja2VuZENsaWVudCB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCBjb25zdCBWZWN0b3I8UmVmUHRyPFJUQ1J0cFRyYW5zY2VpdmVyPj4mIGdl
dFRyYW5zY2VpdmVycygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJUQ1J0cFNlbmRlckNsaWVu
dCYgc2VuZGVyQ2xpZW50KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmaXJlRXZlbnQoRXZlbnQm
KSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgYWRkVHJhbnNjZWl2ZXIoUmVmUHRyPFJUQ1J0cFRy
YW5zY2VpdmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFNpZ25hbGluZ1N0YXRlKFBl
ZXJDb25uZWN0aW9uU3RhdGVzOjpTaWduYWxpbmdTdGF0ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVJY2VHYXRoZXJpbmdTdGF0ZShQZWVyQ29ubmVjdGlvblN0YXRlczo6SWNlR2F0aGVy
aW5nU3RhdGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlSWNlQ29ubmVjdGlvblN0YXRl
KFBlZXJDb25uZWN0aW9uU3RhdGVzOjpJY2VDb25uZWN0aW9uU3RhdGUpID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlv
bi5jcHAKaW5kZXggNDIzNDVmZC4uZjMzYmRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTQ1Miw2
ICs0NTIsMTEgQEAgYm9vbCBSVENQZWVyQ29ubmVjdGlvbjo6Y2FuU3VzcGVuZEZvckRvY3VtZW50
U3VzcGVuc2lvbigpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIFJUQ1BlZXJD
b25uZWN0aW9uOjphZGRUcmFuc2NlaXZlcihSZWZQdHI8UlRDUnRwVHJhbnNjZWl2ZXI+JiYgdHJh
bnNjZWl2ZXIpCit7CisgICAgbV90cmFuc2NlaXZlclNldC0+YXBwZW5kKFdURk1vdmUodHJhbnNj
ZWl2ZXIpKTsKK30KKwogdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6c2V0U2lnbmFsaW5nU3RhdGUo
U2lnbmFsaW5nU3RhdGUgbmV3U3RhdGUpCiB7CiAgICAgbV9zaWduYWxpbmdTdGF0ZSA9IG5ld1N0
YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi5oCmluZGV4IDIxZGEwNjAuLjA5YjJhNDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKQEAg
LTEzMSwxMiArMTMxLDE0IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1l
bnRTdXNwZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBQZWVyQ29ubmVjdGlvbkJh
Y2tlbmRDbGllbnQKKyAgICB2b2lkIGFkZFRyYW5zY2VpdmVyKFJlZlB0cjxSVENSdHBUcmFuc2Nl
aXZlcj4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRTaWduYWxpbmdTdGF0ZShQZWVyQ29ubmVj
dGlvblN0YXRlczo6U2lnbmFsaW5nU3RhdGUpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlSWNl
R2F0aGVyaW5nU3RhdGUoUGVlckNvbm5lY3Rpb25TdGF0ZXM6OkljZUdhdGhlcmluZ1N0YXRlKSBv
dmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZUljZUNvbm5lY3Rpb25TdGF0ZShQZWVyQ29ubmVjdGlv
blN0YXRlczo6SWNlQ29ubmVjdGlvblN0YXRlKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2NoZWR1
bGVOZWdvdGlhdGlvbk5lZWRlZEV2ZW50KCkgb3ZlcnJpZGU7CiAKKyAgICBSVENSdHBTZW5kZXJD
bGllbnQmIHNlbmRlckNsaWVudCgpIHsgcmV0dXJuICp0aGlzOyB9CiAgICAgdm9pZCBmaXJlRXZl
bnQoRXZlbnQmKSBvdmVycmlkZTsKICAgICBQZWVyQ29ubmVjdGlvblN0YXRlczo6U2lnbmFsaW5n
U3RhdGUgaW50ZXJuYWxTaWduYWxpbmdTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
c2lnbmFsaW5nU3RhdGU7IH0KICAgICBQZWVyQ29ubmVjdGlvblN0YXRlczo6SWNlR2F0aGVyaW5n
U3RhdGUgaW50ZXJuYWxJY2VHYXRoZXJpbmdTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1faWNlR2F0aGVyaW5nU3RhdGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaAppbmRleCBhNzdlYWM1Li5kNDY1ODYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZl
ci5oCkBAIC00NCw4ICs0NCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFJUQ1J0cFJlY2VpdmVyKFdURk1vdmUodHJhY2spKSk7CiAgICAgfQogCisgICAgYm9vbCBp
c0Rpc3BhdGNoZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRGlzcGF0Y2hlZDsgfQorICAgIHZvaWQg
c2V0RGlzcGF0Y2hlZChib29sIGlzRGlzcGF0Y2hlZCkgeyBtX2lzRGlzcGF0Y2hlZCA9IGlzRGlz
cGF0Y2hlZDsgfQorCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFJUQ1J0cFJlY2VpdmVyKFJlZjxN
ZWRpYVN0cmVhbVRyYWNrPiYmKTsKKworICAgIGJvb2wgbV9pc0Rpc3BhdGNoZWQgeyBmYWxzZSB9
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENUcmFja0V2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDVHJhY2tFdmVudC5jcHAKaW5kZXggMmFiYWRkNi4uYWQz
ZWI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENU
cmFja0V2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1RyYWNrRXZlbnQuY3BwCkBAIC0zNCwxNCArMzQsMTUgQEAKICNpZiBFTkFCTEUoV0VCX1JUQykK
IAogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbS5oIgogI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2suaCIKLSNpbmNsdWRlICJSVENSdHBSZWNlaXZlci5oIgor
I2luY2x1ZGUgIlJUQ1J0cFRyYW5zY2VpdmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
UmVmPFJUQ1RyYWNrRXZlbnQ+IFJUQ1RyYWNrRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxSVENSdHBS
ZWNlaXZlcj4mJiByZWNlaXZlciwgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2spCitS
ZWY8UlRDVHJhY2tFdmVudD4gUlRDVHJhY2tFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFJUQ1J0cFJl
Y2VpdmVyPiYmIHJlY2VpdmVyLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgVmVj
dG9yPFJlZlB0cjxNZWRpYVN0cmVhbT4+JiYgc3RyZWFtcywgUmVmUHRyPFJUQ1J0cFRyYW5zY2Vp
dmVyPiYmIHRyYW5zY2VpdmVyKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ1RyYWNr
RXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHJlY2VpdmVyKSwgV1RG
TW92ZSh0cmFjaykpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSVENUcmFja0V2ZW50KHR5
cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZShyZWNlaXZlciksIFdURk1vdmUodHJh
Y2spLCBXVEZNb3ZlKHN0cmVhbXMpLCBXVEZNb3ZlKHRyYW5zY2VpdmVyKSkpOwogfQogCiBSZWY8
UlRDVHJhY2tFdmVudD4gUlRDVHJhY2tFdmVudDo6Y3JlYXRlRm9yQmluZGluZ3MoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBjb25zdCBSVENUcmFja0V2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCkBA
IC00OSwxMCArNTAsMTIgQEAgUmVmPFJUQ1RyYWNrRXZlbnQ+IFJUQ1RyYWNrRXZlbnQ6OmNyZWF0
ZUZvckJpbmRpbmdzKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY28KICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBSVENUcmFja0V2ZW50KHR5cGUsIGluaXRpYWxpemVyKSk7CiB9CiAKLVJUQ1Ry
YWNrRXZlbnQ6OlJUQ1RyYWNrRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNh
bkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8UlRDUnRwUmVjZWl2ZXI+JiYgcmVjZWl2
ZXIsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrKQorUlRDVHJhY2tFdmVudDo6UlRD
VHJhY2tFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29s
IGNhbmNlbGFibGUsIFJlZlB0cjxSVENSdHBSZWNlaXZlcj4mJiByZWNlaXZlciwgUmVmUHRyPE1l
ZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2ssIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW0+PiYmIHN0
cmVhbXMsIFJlZlB0cjxSVENSdHBUcmFuc2NlaXZlcj4mJiB0cmFuc2NlaXZlcikKICAgICA6IEV2
ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSkKLSAgICAsIG1fcmVjZWl2ZXIocmVjZWl2
ZXIpCi0gICAgLCBtX3RyYWNrKHRyYWNrKQorICAgICwgbV9yZWNlaXZlcihXVEZNb3ZlKHJlY2Vp
dmVyKSkKKyAgICAsIG1fdHJhY2soV1RGTW92ZSh0cmFjaykpCisgICAgLCBtX3N0cmVhbXMoV1RG
TW92ZShzdHJlYW1zKSkKKyAgICAsIG1fdHJhbnNjZWl2ZXIoV1RGTW92ZSh0cmFuc2NlaXZlcikp
CiB7CiB9CiAKQEAgLTYwLDYgKzYzLDggQEAgUlRDVHJhY2tFdmVudDo6UlRDVHJhY2tFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFJUQ1RyYWNrRXZlbnRJbml0JgogICAgIDog
RXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIpCiAgICAgLCBtX3JlY2VpdmVyKGluaXRpYWxpemVyLnJl
Y2VpdmVyKQogICAgICwgbV90cmFjayhpbml0aWFsaXplci50cmFjaykKKyAgICAsIG1fc3RyZWFt
cyhpbml0aWFsaXplci5zdHJlYW1zKQorICAgICwgbV90cmFuc2NlaXZlcihpbml0aWFsaXplci50
cmFuc2NlaXZlcikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENUcmFja0V2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1RyYWNrRXZlbnQuaAppbmRleCAyMzI5ODczLi5iODBhZTgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1RyYWNrRXZlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1RyYWNrRXZlbnQuaApAQCAt
MzgsMzAgKzM4LDQwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgTWVkaWFTdHJl
YW07CiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrOwogY2xhc3MgUlRDUnRwUmVjZWl2ZXI7CitjbGFz
cyBSVENSdHBUcmFuc2NlaXZlcjsKKwordHlwZWRlZiBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFt
Pj4gTWVkaWFTdHJlYW1BcnJheTsKIAogc3RydWN0IFJUQ1RyYWNrRXZlbnRJbml0IDogcHVibGlj
IEV2ZW50SW5pdCB7CiAgICAgUmVmUHRyPFJUQ1J0cFJlY2VpdmVyPiByZWNlaXZlcjsKICAgICBS
ZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gdHJhY2s7CisgICAgTWVkaWFTdHJlYW1BcnJheSBzdHJl
YW1zOworICAgIFJlZlB0cjxSVENSdHBUcmFuc2NlaXZlcj4gdHJhbnNjZWl2ZXI7CiB9OwogCiBj
bGFzcyBSVENUcmFja0V2ZW50IDogcHVibGljIEV2ZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFJUQ1RyYWNrRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wg
Y2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFJlZlB0cjxSVENSdHBSZWNlaXZlcj4mJiwgUmVm
UHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYpOworICAgIHN0YXRpYyBSZWY8UlRDVHJhY2tFdmVudD4g
Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2Fu
Y2VsYWJsZSwgUmVmUHRyPFJUQ1J0cFJlY2VpdmVyPiYmLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFj
az4mJiwgTWVkaWFTdHJlYW1BcnJheSYmLCBSZWZQdHI8UlRDUnRwVHJhbnNjZWl2ZXI+JiYpOwog
ICAgIHN0YXRpYyBSZWY8UlRDVHJhY2tFdmVudD4gY3JlYXRlRm9yQmluZGluZ3MoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlLCBjb25zdCBSVENUcmFja0V2ZW50SW5pdCYpOwogCiAgICAgUlRDUnRw
UmVjZWl2ZXIqIHJlY2VpdmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZWNlaXZlci5nZXQoKTsgfQog
ICAgIE1lZGlhU3RyZWFtVHJhY2sqIHRyYWNrKCkgY29uc3QgIHsgcmV0dXJuIG1fdHJhY2suZ2V0
KCk7IH0KKyAgICBjb25zdCBNZWRpYVN0cmVhbUFycmF5JiBzdHJlYW1zKCkgY29uc3QgIHsgcmV0
dXJuIG1fc3RyZWFtczsgfQorICAgIFJUQ1J0cFRyYW5zY2VpdmVyKiB0cmFuc2NlaXZlcigpIGNv
bnN0ICB7IHJldHVybiBtX3RyYW5zY2VpdmVyLmdldCgpOyB9CiAKICAgICB2aXJ0dWFsIEV2ZW50
SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3QgeyByZXR1cm4gUlRDVHJhY2tFdmVudElu
dGVyZmFjZVR5cGU7IH0KIAogcHJpdmF0ZToKLSAgICBSVENUcmFja0V2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFJU
Q1J0cFJlY2VpdmVyPiYmLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJik7CisgICAgUlRDVHJh
Y2tFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNh
bmNlbGFibGUsIFJlZlB0cjxSVENSdHBSZWNlaXZlcj4mJiwgUmVmUHRyPE1lZGlhU3RyZWFtVHJh
Y2s+JiYsIE1lZGlhU3RyZWFtQXJyYXkmJiwgUmVmUHRyPFJUQ1J0cFRyYW5zY2VpdmVyPiYmKTsK
ICAgICBSVENUcmFja0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgUlRDVHJh
Y2tFdmVudEluaXQmKTsKIAogICAgIFJlZlB0cjxSVENSdHBSZWNlaXZlcj4gbV9yZWNlaXZlcjsK
ICAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gbV90cmFjazsKKyAgICBNZWRpYVN0cmVhbUFy
cmF5IG1fc3RyZWFtczsKKyAgICBSZWZQdHI8UlRDUnRwVHJhbnNjZWl2ZXI+IG1fdHJhbnNjZWl2
ZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1RyYWNrRXZlbnQuaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENUcmFja0V2ZW50LmlkbAppbmRleCBkMDU4OTA4Li4z
MmNhNWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1RyYWNrRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDVHJhY2tFdmVudC5pZGwKQEAgLTM0LDQgKzM0LDYgQEAKIF0gaW50ZXJmYWNlIFJUQ1RyYWNr
RXZlbnQgOiBFdmVudCB7CiAgICBbSW5pdGlhbGl6ZWRCeUV2ZW50Q29uc3RydWN0b3JdIHJlYWRv
bmx5IGF0dHJpYnV0ZSBSVENSdHBSZWNlaXZlciByZWNlaXZlcjsKICAgIFtJbml0aWFsaXplZEJ5
RXZlbnRDb25zdHJ1Y3Rvcl0gcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhU3RyZWFtVHJhY2sgdHJh
Y2s7CisgICBbSW5pdGlhbGl6ZWRCeUV2ZW50Q29uc3RydWN0b3JdIHJlYWRvbmx5IGF0dHJpYnV0
ZSBNZWRpYVN0cmVhbVtdIHN0cmVhbXM7CisgICBbSW5pdGlhbGl6ZWRCeUV2ZW50Q29uc3RydWN0
b3JdIHJlYWRvbmx5IGF0dHJpYnV0ZSBSVENSdHBUcmFuc2NlaXZlciB0cmFuc2NlaXZlcjsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAppbmRleCBkMGRi
NDQwLi43MmIyYWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Rp
Y3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFy
eS5jcHAKQEAgLTU5LDggKzU5LDEwIEBACiAKICNpZiBFTkFCTEUoV0VCX1JUQykKICNpbmNsdWRl
ICJKU1JUQ1J0cFJlY2VpdmVyLmgiCisjaW5jbHVkZSAiSlNSVENSdHBUcmFuc2NlaXZlci5oIgog
I2VuZGlmCiAKKwogI2lmIEVOQUJMRShHQU1FUEFEKQogI2luY2x1ZGUgIkpTR2FtZXBhZC5oIgog
I2VuZGlmCkBAIC0yNjYsNiArMjY4LDM1IEBAIHZvaWQgSlNEaWN0aW9uYXJ5Ojpjb252ZXJ0VmFs
dWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUgdmFsdWUsIFJlZlB0cjxSVENSCiB7CiAg
ICAgcmVzdWx0ID0gSlNSVENSdHBSZWNlaXZlcjo6dG9XcmFwcGVkKHZhbHVlKTsKIH0KKwordm9p
ZCBKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSB2YWx1ZSwgUmVmUHRyPFJUQ1J0cFRyYW5zY2VpdmVyPiYgcmVzdWx0KQoreworICAgIHJlc3Vs
dCA9IEpTUlRDUnRwVHJhbnNjZWl2ZXI6OnRvV3JhcHBlZCh2YWx1ZSk7Cit9CisKK3ZvaWQgSlNE
aWN0aW9uYXJ5Ojpjb252ZXJ0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBW
ZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtPj4mIHJlc3VsdCkKK3sKKyAgICBpZiAodmFsdWUuaXNV
bmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gMDsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gdG9KU1NlcXVlbmNlKGV4ZWMsIHZhbHVlLCBs
ZW5ndGgpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMCA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBK
U1ZhbHVlIGl0ZW1WYWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIGkpOworICAgICAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byBz
dHJlYW0gPSBKU01lZGlhU3RyZWFtOjp0b1dyYXBwZWQoaXRlbVZhbHVlKTsKKyAgICAgICAgaWYg
KCFzdHJlYW0pIHsKKyAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUeXBlRXJyb3Ip
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHJlc3VsdC5hcHBlbmQo
c3RyZWFtKTsKKyAgICB9Cit9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShGT05UX0xPQURfRVZFTlRT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuaAppbmRleCAwYzdlYTA1
Li4yZmJkZTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rp
b25hcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuaApA
QCAtNTMsNiArNTMsNyBAQCBjbGFzcyBNZWRpYUtleUVycm9yOwogY2xhc3MgTWVkaWFTdHJlYW07
CiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrOwogY2xhc3MgUlRDUnRwUmVjZWl2ZXI7CitjbGFzcyBS
VENSdHBUcmFuc2NlaXZlcjsKIGNsYXNzIE5vZGU7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFs
dWU7CiBjbGFzcyBTdG9yYWdlOwpAQCAtMTUyLDYgKzE1Myw4IEBAIHByaXZhdGU6CiAjZW5kaWYK
ICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICBzdGF0aWMgdm9pZCBjb252ZXJ0VmFsdWUoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIFJlZlB0cjxSVENSdHBSZWNlaXZlcj4mIHJlc3VsdCk7
CisgICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1Zh
bHVlLCBSZWZQdHI8UlRDUnRwVHJhbnNjZWl2ZXI+JiByZXN1bHQpOworICAgIHN0YXRpYyB2b2lk
IGNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgVmVjdG9yPFJlZlB0
cjxNZWRpYVN0cmVhbT4+JiByZXN1bHQpOwogI2VuZGlmCiAjaWYgRU5BQkxFKEZPTlRfTE9BRF9F
VkVOVFMpCiAgICAgc3RhdGljIHZvaWQgY29udmVydFZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpKU1ZhbHVlLCBSZWZQdHI8Q1NTRm9udEZhY2VSdWxlPiYgcmVzdWx0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnQuaAppbmRleCAz
ZGM4N2U0NS4uYWQ5NmU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFFbmRwb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhRW5kcG9pbnQuaApAQCAtNTYsNiArNTYsOCBAQCBwdWJsaWM6CiB9Owog
CiB0eXBlZGVmIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYUVuZHBvaW50PiAoKkNyZWF0ZU1lZGlhRW5k
cG9pbnQpKE1lZGlhRW5kcG9pbnRDbGllbnQmKTsKK3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxNZWRp
YVBheWxvYWQ+PiBNZWRpYVBheWxvYWRWZWN0b3I7Cit0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBS
ZWFsdGltZU1lZGlhU291cmNlKj4gUmVhbHRpbWVNZWRpYVNvdXJjZU1hcDsKIAogY2xhc3MgTWVk
aWFFbmRwb2ludCB7CiBwdWJsaWM6CkBAIC03Myw5ICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGdlbmVyYXRlRHRsc0luZm8oKSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8UmVm
UHRyPE1lZGlhUGF5bG9hZD4+IGdldERlZmF1bHRBdWRpb1BheWxvYWRzKCkgPSAwOwogICAgIHZp
cnR1YWwgVmVjdG9yPFJlZlB0cjxNZWRpYVBheWxvYWQ+PiBnZXREZWZhdWx0VmlkZW9QYXlsb2Fk
cygpID0gMDsKKyAgICB2aXJ0dWFsIE1lZGlhUGF5bG9hZFZlY3RvciBmaWx0ZXJQYXlsb2Fkcyhj
b25zdCBNZWRpYVBheWxvYWRWZWN0b3ImIHJlbW90ZVBheWxvYWRzLCBjb25zdCBNZWRpYVBheWxv
YWRWZWN0b3ImIGRlZmF1bHRQYXlsb2FkcykgPSAwOwogCiAgICAgdmlydHVhbCBVcGRhdGVSZXN1
bHQgdXBkYXRlUmVjZWl2ZUNvbmZpZ3VyYXRpb24oTWVkaWFFbmRwb2ludFNlc3Npb25Db25maWd1
cmF0aW9uKiwgYm9vbCBpc0luaXRpYXRvcikgPSAwOwotICAgIHZpcnR1YWwgVXBkYXRlUmVzdWx0
IHVwZGF0ZVNlbmRDb25maWd1cmF0aW9uKE1lZGlhRW5kcG9pbnRTZXNzaW9uQ29uZmlndXJhdGlv
biosIGJvb2wgaXNJbml0aWF0b3IpID0gMDsKKyAgICB2aXJ0dWFsIFVwZGF0ZVJlc3VsdCB1cGRh
dGVTZW5kQ29uZmlndXJhdGlvbihNZWRpYUVuZHBvaW50U2Vzc2lvbkNvbmZpZ3VyYXRpb24qLCBj
b25zdCBSZWFsdGltZU1lZGlhU291cmNlTWFwJiwgYm9vbCBpc0luaXRpYXRvcikgPSAwOwogCiAg
ICAgdmlydHVhbCB2b2lkIGFkZFJlbW90ZUNhbmRpZGF0ZShJY2VDYW5kaWRhdGUmLCB1bnNpZ25l
ZCBtZGVzY0luZGV4LCBjb25zdCBTdHJpbmcmIHVmcmFnLCBjb25zdCBTdHJpbmcmIHBhc3N3b3Jk
KSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01l
ZGlhRW5kcG9pbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFF
bmRwb2ludC5jcHAKaW5kZXggZDZiYzExZi4uNzk0OWY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFFbmRwb2ludC5jcHAKQEAgLTEzMSw2ICsxMzEs
MzEgQEAgVmVjdG9yPFJlZlB0cjxNZWRpYVBheWxvYWQ+PiBNb2NrTWVkaWFFbmRwb2ludDo6Z2V0
RGVmYXVsdFZpZGVvUGF5bG9hZHMoKQogICAgIHJldHVybiBwYXlsb2FkczsKIH0KIAorTWVkaWFQ
YXlsb2FkVmVjdG9yIE1vY2tNZWRpYUVuZHBvaW50OjpmaWx0ZXJQYXlsb2Fkcyhjb25zdCBNZWRp
YVBheWxvYWRWZWN0b3ImIHJlbW90ZVBheWxvYWRzLCBjb25zdCBNZWRpYVBheWxvYWRWZWN0b3Im
IGRlZmF1bHRQYXlsb2FkcykKK3sKKyAgICBNZWRpYVBheWxvYWRWZWN0b3IgZmlsdGVyZWRQYXls
b2FkczsKKworICAgIGZvciAoYXV0byYgcmVtb3RlUGF5bG9hZCA6IHJlbW90ZVBheWxvYWRzKSB7
CisgICAgICAgIE1lZGlhUGF5bG9hZCogZGVmYXVsdFBheWxvYWQgPSBudWxscHRyOworICAgICAg
ICBmb3IgKGF1dG8mIHBheWxvYWQgOiBkZWZhdWx0UGF5bG9hZHMpIHsKKyAgICAgICAgICAgIGlm
IChwYXlsb2FkLT5lbmNvZGluZ05hbWUoKSA9PSByZW1vdGVQYXlsb2FkLT5lbmNvZGluZ05hbWUo
KS5jb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpKSB7CisgICAgICAgICAgICAgICAgZGVmYXVsdFBh
eWxvYWQgPSBwYXlsb2FkLmdldCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGlmICghZGVmYXVsdFBheWxvYWQpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICBpZiAoZGVmYXVsdFBheWxvYWQtPnBhcmFtZXRlcnMoKS5j
b250YWlucygicGFja2V0aXphdGlvbk1vZGUiKSAmJiByZW1vdGVQYXlsb2FkLT5wYXJhbWV0ZXJz
KCkuY29udGFpbnMoInBhY2tldGl6YXRpb25Nb2RlIikKKyAgICAgICAgICAgICYmIChkZWZhdWx0
UGF5bG9hZC0+cGFyYW1ldGVycygpLmdldCgicGFja2V0aXphdGlvbk1vZGUiKSAhPSBkZWZhdWx0
UGF5bG9hZC0+cGFyYW1ldGVycygpLmdldCgicGFja2V0aXphdGlvbk1vZGUiKSkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICBmaWx0ZXJlZFBheWxvYWRzLmFwcGVuZChyZW1vdGVQ
YXlsb2FkKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmlsdGVyZWRQYXlsb2FkczsKK30KKwogTWVk
aWFFbmRwb2ludDo6VXBkYXRlUmVzdWx0IE1vY2tNZWRpYUVuZHBvaW50Ojp1cGRhdGVSZWNlaXZl
Q29uZmlndXJhdGlvbihNZWRpYUVuZHBvaW50U2Vzc2lvbkNvbmZpZ3VyYXRpb24qIGNvbmZpZ3Vy
YXRpb24sIGJvb2wgaXNJbml0aWF0b3IpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGNvbmZpZ3VyYXRp
b24pOwpAQCAtMTM5LDkgKzE2NCwxMCBAQCBNZWRpYUVuZHBvaW50OjpVcGRhdGVSZXN1bHQgTW9j
a01lZGlhRW5kcG9pbnQ6OnVwZGF0ZVJlY2VpdmVDb25maWd1cmF0aW9uKE1lZGlhRQogICAgIHJl
dHVybiBVcGRhdGVSZXN1bHQ6OlN1Y2Nlc3M7CiB9CiAKLU1lZGlhRW5kcG9pbnQ6OlVwZGF0ZVJl
c3VsdCBNb2NrTWVkaWFFbmRwb2ludDo6dXBkYXRlU2VuZENvbmZpZ3VyYXRpb24oTWVkaWFFbmRw
b2ludFNlc3Npb25Db25maWd1cmF0aW9uKiBjb25maWd1cmF0aW9uLCBib29sIGlzSW5pdGlhdG9y
KQorTWVkaWFFbmRwb2ludDo6VXBkYXRlUmVzdWx0IE1vY2tNZWRpYUVuZHBvaW50Ojp1cGRhdGVT
ZW5kQ29uZmlndXJhdGlvbihNZWRpYUVuZHBvaW50U2Vzc2lvbkNvbmZpZ3VyYXRpb24qIGNvbmZp
Z3VyYXRpb24sIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VNYXAmIHNlbmRTb3VyY2VNYXAsIGJv
b2wgaXNJbml0aWF0b3IpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGNvbmZpZ3VyYXRpb24pOworICAg
IFVOVVNFRF9QQVJBTShzZW5kU291cmNlTWFwKTsKICAgICBVTlVTRURfUEFSQU0oaXNJbml0aWF0
b3IpOwogCiAgICAgcmV0dXJuIFVwZGF0ZVJlc3VsdDo6U3VjY2VzczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRW5kcG9pbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRW5kcG9pbnQuaAppbmRleCAxMGM2YmIyLi42
ZDE0YWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRp
YUVuZHBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFF
bmRwb2ludC5oCkBAIC00OSw5ICs0OSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZW5lcmF0ZUR0
bHNJbmZvKCkgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVBheWxvYWQ+PiBnZXRE
ZWZhdWx0QXVkaW9QYXlsb2FkcygpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFQ
YXlsb2FkPj4gZ2V0RGVmYXVsdFZpZGVvUGF5bG9hZHMoKSBvdmVycmlkZTsKKyAgICBNZWRpYVBh
eWxvYWRWZWN0b3IgZmlsdGVyUGF5bG9hZHMoY29uc3QgTWVkaWFQYXlsb2FkVmVjdG9yJiByZW1v
dGVQYXlsb2FkcywgY29uc3QgTWVkaWFQYXlsb2FkVmVjdG9yJiBkZWZhdWx0UGF5bG9hZHMpIG92
ZXJyaWRlOwogCiAgICAgVXBkYXRlUmVzdWx0IHVwZGF0ZVJlY2VpdmVDb25maWd1cmF0aW9uKE1l
ZGlhRW5kcG9pbnRTZXNzaW9uQ29uZmlndXJhdGlvbiosIGJvb2wgaXNJbml0aWF0b3IpIG92ZXJy
aWRlOwotICAgIFVwZGF0ZVJlc3VsdCB1cGRhdGVTZW5kQ29uZmlndXJhdGlvbihNZWRpYUVuZHBv
aW50U2Vzc2lvbkNvbmZpZ3VyYXRpb24qLCBib29sIGlzSW5pdGlhdG9yKSBvdmVycmlkZTsKKyAg
ICBVcGRhdGVSZXN1bHQgdXBkYXRlU2VuZENvbmZpZ3VyYXRpb24oTWVkaWFFbmRwb2ludFNlc3Np
b25Db25maWd1cmF0aW9uKiwgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZU1hcCYsIGJvb2wgaXNJ
bml0aWF0b3IpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBhZGRSZW1vdGVDYW5kaWRhdGUoSWNlQ2Fu
ZGlkYXRlJiwgdW5zaWduZWQgbWRlc2NJbmRleCwgY29uc3QgU3RyaW5nJiB1ZnJhZywgY29uc3Qg
U3RyaW5nJiBwYXNzd29yZCkgb3ZlcnJpZGU7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>