<?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>158189</bug_id>
          
          <creation_ts>2016-05-29 01:38:54 -0700</creation_ts>
          <short_desc>WebRTC: Add RTCRtpTransceiver interface and RTCPeerConnection.addTransceiver()</short_desc>
          <delta_ts>2016-06-02 10:25:47 -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>dino</cc>
    
    <cc>eric.carlson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1197468</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-05-29 01:38:54 -0700</bug_when>
    <thetext>The RTCRtpTransceiver interface represents a combination of an RTCRtpSender and an RTCRtpReceiver that share a common mid [1].

A transceiver is created locally via the RTCPeerConnection::addTransceiver() method [2].

[1] https://w3c.github.io/webrtc-pc/archives/20160513/webrtc.html#rtcrtptransceiver-interface
[2] https://w3c.github.io/webrtc-pc/archives/20160513/webrtc.html#dom-rtcpeerconnection-addtransceiver</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197600</commentid>
    <comment_count>1</comment_count>
      <attachid>280093</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-05-30 06:21:58 -0700</bug_when>
    <thetext>Created attachment 280093
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197615</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-05-30 07:24:41 -0700</bug_when>
    <thetext>Eric, I did a clean mac build with --media-stream --web-rtc but it didn&apos;t seem to build the stuff under the WEB_RTC flag. The patch has added the new files to the mac build (but not the generated JS-bindings).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197718</commentid>
    <comment_count>3</comment_count>
      <attachid>280093</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-30 21:07:58 -0700</bug_when>
    <thetext>Comment on attachment 280093
Proposed patch

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

&gt; Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp:265
&gt; +    RefPtr&lt;RealtimeMediaSource&gt; remoteSource = m_mediaEndpoint-&gt;createMutedRemoteSource(transceiverMid, sourceType);
&gt; +    RefPtr&lt;MediaStreamTrackPrivate&gt; remoteTrackPrivate = MediaStreamTrackPrivate::create(WTFMove(remoteSource), trackId);
&gt; +    Ref&lt;MediaStreamTrack&gt; remoteTrack = MediaStreamTrack::create(*m_client-&gt;scriptExecutionContext(), *remoteTrackPrivate);

Types should all be auto.

&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp:164
&gt; +    RefPtr&lt;RTCRtpSender&gt; sender = RTCRtpSender::create(WTFMove(track), Vector&lt;String&gt;(), *this);
&gt; +    RefPtr&lt;RTCRtpReceiver&gt; receiver = m_backend-&gt;createReceiver(transceiverMid, trackKind, trackId);
&gt; +    Ref&lt;RTCRtpTransceiver&gt; transceiver = RTCRtpTransceiver::create(WTFMove(sender), WTFMove(receiver));

Types should just be auto.

&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp:187
&gt; +    RefPtr&lt;RTCRtpSender&gt; sender = RTCRtpSender::create(kind, Vector&lt;String&gt;(), *this);
&gt; +    RefPtr&lt;RTCRtpReceiver&gt; receiver = m_backend-&gt;createReceiver(transceiverMid, kind, trackId);
&gt; +    Ref&lt;RTCRtpTransceiver&gt; transceiver = RTCRtpTransceiver::create(WTFMove(sender), WTFMove(receiver));

Types should just be auto.

&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.idl:69
&gt; +    [StrictTypeChecking, RaisesException] RTCRtpTransceiver addTransceiver(MediaStreamTrack track, optional Dictionary init);
&gt; +    [StrictTypeChecking, RaisesException] RTCRtpTransceiver addTransceiver(DOMString kind, optional Dictionary init);

New code should never use Dictionary. These dictionaries should defined.

dictionary RTCRtpTransceiverInit {
    boolean send = true;
    boolean receive = true;
    sequence&lt;MediaStream&gt; streams;
    sequence&lt;RTCRtpEncodingParameters&gt; sendEncodings;
};

If the bindings generator can’t handle this dictionary, we should fix it so it can handle it. Every single time we instead use the deprecated Dictionary, we add code we will need to later delete!

&gt; Source/WebCore/Modules/mediastream/RTCRtpTransceiver.cpp:98
&gt; +const String&amp; RTCRtpTransceiver::directionString() const
&gt; +{
&gt; +    switch (m_direction) {
&gt; +    case Direction::Sendrecv: return sendrecvString();
&gt; +    case Direction::Sendonly: return sendonlyString();
&gt; +    case Direction::Recvonly: return recvonlyString();
&gt; +    case Direction::Inactive: return inactiveString();
&gt; +    }
&gt; +
&gt; +    ASSERT_NOT_REACHED();
&gt; +    return emptyString();
&gt; +}
&gt; +
&gt; +static bool parseDirectionString(const String&amp; string, RTCRtpTransceiver::Direction&amp; outDirection)
&gt; +{
&gt; +    if (string == sendrecvString())
&gt; +        outDirection = RTCRtpTransceiver::Direction::Sendrecv;
&gt; +    else if (string == sendonlyString())
&gt; +        outDirection = RTCRtpTransceiver::Direction::Sendonly;
&gt; +    else if (string == recvonlyString())
&gt; +        outDirection = RTCRtpTransceiver::Direction::Recvonly;
&gt; +    else if (string == inactiveString())
&gt; +        outDirection = RTCRtpTransceiver::Direction::Inactive;
&gt; +    else
&gt; +        return false;
&gt; +
&gt; +    return true;
&gt; +}

Since bindings create functions like this for all enumerations, we should avoid writing this code ourselves if possible. What makes this necessary?

&gt; Source/WebCore/Modules/mediastream/RTCRtpTransceiver.cpp:110
&gt; +bool RTCRtpTransceiver::configureWithDictionary(const Dictionary&amp; dictionary)
&gt; +{
&gt; +    String direction;
&gt; +    if (dictionary.get(&quot;direction&quot;, direction)) {
&gt; +        if (!parseDirectionString(direction, m_direction))
&gt; +            return false;
&gt; +    }
&gt; +
&gt; +    // FIMXE: fix streams
&gt; +    return true;
&gt; +}

Since bindings create functions like this for dictionaries, we should avoid writing this code ourselves if possible. What makes this necessary? The bindings should convert dictionaries into structs and we should pass those around.

&gt; Source/WebCore/platform/mediastream/MediaEndpoint.h:82
&gt; +    virtual RefPtr&lt;RealtimeMediaSource&gt; createMutedRemoteSource(const String&amp; mid, RealtimeMediaSource::Type) = 0;

Should return Ref, not RefPtr. Caller can’t handle nullptr without crashing.

&gt; Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp:52
&gt;  RealtimeMediaSource::RealtimeMediaSource(const String&amp; id, Type type, const String&amp; name)
&gt; -    : m_id(id)
&gt; +    : m_muted(false)
&gt; +    , m_id(id)
&gt;      , m_type(type)
&gt;      , m_name(name)
&gt;      , m_stopped(false)
&gt; -    , m_muted(false)
&gt;      , m_readonly(false)
&gt;      , m_remote(false)
&gt;      , m_fitnessScore(0)

Most data members should be initialized in the header, not in the constructor, except for the ones where we are initializing from passed in values.

&gt; Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp:43
&gt;  RefPtr&lt;MockRealtimeAudioSource&gt; MockRealtimeAudioSource::create()

Return type should be Ref, not RefPtr.

&gt; Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp:48
&gt; +RefPtr&lt;MockRealtimeAudioSource&gt; MockRealtimeAudioSource::createMuted(const String&amp; name)

Return type should be Ref, not RefPtr.

&gt; Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp:52
&gt;  RefPtr&lt;MockRealtimeVideoSource&gt; MockRealtimeVideoSource::create()

Return type should be Ref, not RefPtr.

&gt; Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp:57
&gt; +RefPtr&lt;MockRealtimeVideoSource&gt; MockRealtimeVideoSource::createMuted(const String&amp; name)

Return type should be Ref, not RefPtr.

&gt; Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp:59
&gt; +    RefPtr&lt;MockRealtimeVideoSource&gt; source = adoptRef(new MockRealtimeVideoSource(name));

Should be Ref, not RefPtr.

&gt; Source/WebCore/platform/mock/MockRealtimeVideoSource.h:50
&gt;      static RefPtr&lt;MockRealtimeVideoSource&gt; create();
&gt; +    static RefPtr&lt;MockRealtimeVideoSource&gt; createMuted(const String&amp; name);

Return type should be Ref, not RefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197766</commentid>
    <comment_count>4</comment_count>
      <attachid>280140</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-05-31 05:39:04 -0700</bug_when>
    <thetext>Created attachment 280140
Updated patch

Addressed review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197769</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-05-31 05:55:40 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 280093 [details]
&gt; Proposed patch

Thanks for reviewing. See comments inline.
 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=280093&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/MediaEndpointPeerConnection.cpp:265
&gt; &gt; +    RefPtr&lt;RealtimeMediaSource&gt; remoteSource = m_mediaEndpoint-&gt;createMutedRemoteSource(transceiverMid, sourceType);
&gt; &gt; +    RefPtr&lt;MediaStreamTrackPrivate&gt; remoteTrackPrivate = MediaStreamTrackPrivate::create(WTFMove(remoteSource), trackId);
&gt; &gt; +    Ref&lt;MediaStreamTrack&gt; remoteTrack = MediaStreamTrack::create(*m_client-&gt;scriptExecutionContext(), *remoteTrackPrivate);
&gt; 
&gt; Types should all be auto.
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp:164
&gt; &gt; +    RefPtr&lt;RTCRtpSender&gt; sender = RTCRtpSender::create(WTFMove(track), Vector&lt;String&gt;(), *this);
&gt; &gt; +    RefPtr&lt;RTCRtpReceiver&gt; receiver = m_backend-&gt;createReceiver(transceiverMid, trackKind, trackId);
&gt; &gt; +    Ref&lt;RTCRtpTransceiver&gt; transceiver = RTCRtpTransceiver::create(WTFMove(sender), WTFMove(receiver));
&gt; 
&gt; Types should just be auto.
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp:187
&gt; &gt; +    RefPtr&lt;RTCRtpSender&gt; sender = RTCRtpSender::create(kind, Vector&lt;String&gt;(), *this);
&gt; &gt; +    RefPtr&lt;RTCRtpReceiver&gt; receiver = m_backend-&gt;createReceiver(transceiverMid, kind, trackId);
&gt; &gt; +    Ref&lt;RTCRtpTransceiver&gt; transceiver = RTCRtpTransceiver::create(WTFMove(sender), WTFMove(receiver));
&gt; 
&gt; Types should just be auto.

Fixed all above. I&apos;ve been thinking about when to use auto. I guess it&apos;s OK when there&apos;s obvious redundant information; like the above cases :).

&gt; &gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.idl:69
&gt; &gt; +    [StrictTypeChecking, RaisesException] RTCRtpTransceiver addTransceiver(MediaStreamTrack track, optional Dictionary init);
&gt; &gt; +    [StrictTypeChecking, RaisesException] RTCRtpTransceiver addTransceiver(DOMString kind, optional Dictionary init);
&gt; 
&gt; New code should never use Dictionary. These dictionaries should defined.
&gt; 
&gt; dictionary RTCRtpTransceiverInit {
&gt;     boolean send = true;
&gt;     boolean receive = true;
&gt;     sequence&lt;MediaStream&gt; streams;
&gt;     sequence&lt;RTCRtpEncodingParameters&gt; sendEncodings;
&gt; };
&gt; 
&gt; If the bindings generator can’t handle this dictionary, we should fix it so
&gt; it can handle it. Every single time we instead use the deprecated
&gt; Dictionary, we add code we will need to later delete!

Using dictionary from latest published editor&apos;s draft [1]. Not all members are supported yet. Should I add a FIXME+bug# for that?

[1] https://w3c.github.io/webrtc-pc/archives/20160513/webrtc.html#idl-def-rtcrtptransceiverinit

&gt; &gt; Source/WebCore/Modules/mediastream/RTCRtpTransceiver.cpp:98
&gt; &gt; +const String&amp; RTCRtpTransceiver::directionString() const
&gt; &gt; +{
&gt; &gt; +    switch (m_direction) {
&gt; &gt; +    case Direction::Sendrecv: return sendrecvString();
&gt; &gt; +    case Direction::Sendonly: return sendonlyString();
&gt; &gt; +    case Direction::Recvonly: return recvonlyString();
&gt; &gt; +    case Direction::Inactive: return inactiveString();
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    ASSERT_NOT_REACHED();
&gt; &gt; +    return emptyString();
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +static bool parseDirectionString(const String&amp; string, RTCRtpTransceiver::Direction&amp; outDirection)
&gt; &gt; +{
&gt; &gt; +    if (string == sendrecvString())
&gt; &gt; +        outDirection = RTCRtpTransceiver::Direction::Sendrecv;
&gt; &gt; +    else if (string == sendonlyString())
&gt; &gt; +        outDirection = RTCRtpTransceiver::Direction::Sendonly;
&gt; &gt; +    else if (string == recvonlyString())
&gt; &gt; +        outDirection = RTCRtpTransceiver::Direction::Recvonly;
&gt; &gt; +    else if (string == inactiveString())
&gt; &gt; +        outDirection = RTCRtpTransceiver::Direction::Inactive;
&gt; &gt; +    else
&gt; &gt; +        return false;
&gt; &gt; +
&gt; &gt; +    return true;
&gt; &gt; +}
&gt; 
&gt; Since bindings create functions like this for all enumerations, we should
&gt; avoid writing this code ourselves if possible. What makes this necessary?

Removed parseDirectionString() as part of moving to properly defined dictionary in idl. directionString() is used when the direction value is added to a PeerMediaDescription (which represents direction as a string). I guess there&apos;s no nice way to use the generated version from the binding?

&gt; &gt; Source/WebCore/Modules/mediastream/RTCRtpTransceiver.cpp:110
&gt; &gt; +bool RTCRtpTransceiver::configureWithDictionary(const Dictionary&amp; dictionary)
&gt; &gt; +{
&gt; &gt; +    String direction;
&gt; &gt; +    if (dictionary.get(&quot;direction&quot;, direction)) {
&gt; &gt; +        if (!parseDirectionString(direction, m_direction))
&gt; &gt; +            return false;
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    // FIMXE: fix streams
&gt; &gt; +    return true;
&gt; &gt; +}
&gt; 
&gt; Since bindings create functions like this for dictionaries, we should avoid
&gt; writing this code ourselves if possible. What makes this necessary? The
&gt; bindings should convert dictionaries into structs and we should pass those
&gt; around.

Replaced by defined dictionary in the idl.

&gt; &gt; Source/WebCore/platform/mediastream/MediaEndpoint.h:82
&gt; &gt; +    virtual RefPtr&lt;RealtimeMediaSource&gt; createMutedRemoteSource(const String&amp; mid, RealtimeMediaSource::Type) = 0;
&gt; 
&gt; Should return Ref, not RefPtr. Caller can’t handle nullptr without crashing.

True. Fixed.

&gt; &gt; Source/WebCore/platform/mediastream/RealtimeMediaSource.cpp:52
&gt; &gt;  RealtimeMediaSource::RealtimeMediaSource(const String&amp; id, Type type, const String&amp; name)
&gt; &gt; -    : m_id(id)
&gt; &gt; +    : m_muted(false)
&gt; &gt; +    , m_id(id)
&gt; &gt;      , m_type(type)
&gt; &gt;      , m_name(name)
&gt; &gt;      , m_stopped(false)
&gt; &gt; -    , m_muted(false)
&gt; &gt;      , m_readonly(false)
&gt; &gt;      , m_remote(false)
&gt; &gt;      , m_fitnessScore(0)
&gt; 
&gt; Most data members should be initialized in the header, not in the
&gt; constructor, except for the ones where we are initializing from passed in
&gt; values.

Fixed. Refactored the rest in this init list as well.

&gt; &gt; Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp:43
&gt; &gt;  RefPtr&lt;MockRealtimeAudioSource&gt; MockRealtimeAudioSource::create()
&gt; 
&gt; Return type should be Ref, not RefPtr.
&gt; 
&gt; &gt; Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp:48
&gt; &gt; +RefPtr&lt;MockRealtimeAudioSource&gt; MockRealtimeAudioSource::createMuted(const String&amp; name)
&gt; 
&gt; Return type should be Ref, not RefPtr.
&gt; 
&gt; &gt; Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp:52
&gt; &gt;  RefPtr&lt;MockRealtimeVideoSource&gt; MockRealtimeVideoSource::create()
&gt; 
&gt; Return type should be Ref, not RefPtr.
&gt; 
&gt; &gt; Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp:57
&gt; &gt; +RefPtr&lt;MockRealtimeVideoSource&gt; MockRealtimeVideoSource::createMuted(const String&amp; name)
&gt; 
&gt; Return type should be Ref, not RefPtr.
&gt; 
&gt; &gt; Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp:59
&gt; &gt; +    RefPtr&lt;MockRealtimeVideoSource&gt; source = adoptRef(new MockRealtimeVideoSource(name));
&gt; 
&gt; Should be Ref, not RefPtr.
&gt; 
&gt; &gt; Source/WebCore/platform/mock/MockRealtimeVideoSource.h:50
&gt; &gt;      static RefPtr&lt;MockRealtimeVideoSource&gt; create();
&gt; &gt; +    static RefPtr&lt;MockRealtimeVideoSource&gt; createMuted(const String&amp; name);
&gt; 
&gt; Return type should be Ref, not RefPtr.

Fixed all s/RefPtr/Ref/ above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197778</commentid>
    <comment_count>6</comment_count>
      <attachid>280145</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-05-31 06:56:49 -0700</bug_when>
    <thetext>Created attachment 280145
Updated patch

Fix mac build (caused by s/RefPtr/Ref/ changes).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197810</commentid>
    <comment_count>7</comment_count>
      <attachid>280093</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-31 10:00:19 -0700</bug_when>
    <thetext>Comment on attachment 280093
Proposed patch

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

Noticed a few more things while re-looking at this that we could refine later.

&gt;&gt;&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.idl:69
&gt;&gt;&gt; +    [StrictTypeChecking, RaisesException] RTCRtpTransceiver addTransceiver(DOMString kind, optional Dictionary init);
&gt;&gt; 
&gt;&gt; New code should never use Dictionary. These dictionaries should defined.
&gt;&gt; 
&gt;&gt; dictionary RTCRtpTransceiverInit {
&gt;&gt;     boolean send = true;
&gt;&gt;     boolean receive = true;
&gt;&gt;     sequence&lt;MediaStream&gt; streams;
&gt;&gt;     sequence&lt;RTCRtpEncodingParameters&gt; sendEncodings;
&gt;&gt; };
&gt;&gt; 
&gt;&gt; If the bindings generator can’t handle this dictionary, we should fix it so it can handle it. Every single time we instead use the deprecated Dictionary, we add code we will need to later delete!
&gt; 
&gt; Using dictionary from latest published editor&apos;s draft [1]. Not all members are supported yet. Should I add a FIXME+bug# for that?
&gt; 
&gt; [1] https://w3c.github.io/webrtc-pc/archives/20160513/webrtc.html#idl-def-rtcrtptransceiverinit

I don’t think we need a FIXME about each piece that is missing as we implement something new like this. Eventually it might have some value. but during development it’s probably OK to just do things a bit at a time.

&gt; Source/WebCore/Modules/mediastream/RTCRtpSender.cpp:58
&gt; +    if (track)
&gt; +        setTrack(WTFMove(track));

Not sure the if here is valuable.

&gt; Source/WebCore/Modules/mediastream/RTCRtpSenderReceiverBase.h:47
&gt;      virtual ~RTCRtpSenderReceiverBase() { }

It’s probably more elegant to write &quot;= default&quot; here instead of writing out an empty body.

&gt; Source/WebCore/Modules/mediastream/RTCRtpSenderReceiverBase.h:53
&gt; +    RTCRtpSenderReceiverBase()
&gt; +    { }

It’s probably more elegant to write &quot;= default&quot; here instead of writing out an empty body.

&gt;&gt;&gt; Source/WebCore/Modules/mediastream/RTCRtpTransceiver.cpp:98
&gt;&gt;&gt; +}
&gt;&gt; 
&gt;&gt; Since bindings create functions like this for all enumerations, we should avoid writing this code ourselves if possible. What makes this necessary?
&gt; 
&gt; Removed parseDirectionString() as part of moving to properly defined dictionary in idl. directionString() is used when the direction value is added to a PeerMediaDescription (which represents direction as a string). I guess there&apos;s no nice way to use the generated version from the binding?

Yes, at the moment there is no way to convert an enumeration into the string from the bindings, but if this pattern keeps recurring, I suppose we can add a way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197812</commentid>
    <comment_count>8</comment_count>
      <attachid>280145</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-31 10:10:01 -0700</bug_when>
    <thetext>Comment on attachment 280145
Updated patch

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

&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp:195
&gt; +    transceiver-&gt;setDirection(static_cast&lt;RTCRtpTransceiver::Direction&gt;(init.direction));

This typecast should not be needed. It’s currently only needed because we are defining the enum twice (see my other comments).

&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.h:67
&gt;      Vector&lt;RefPtr&lt;RTCRtpSender&gt;&gt; getSenders() const override { return m_senderSet; }
&gt;      Vector&lt;RefPtr&lt;RTCRtpReceiver&gt;&gt; getReceivers() const { return m_receiverSet; }

It’s expensive to have functions that return an existing Vector by copying it. We should not do that unless we have to.

&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.h:78
&gt; +    enum class RtpTransceiverDirection {
&gt; +        Sendrecv,
&gt; +        Sendonly,
&gt; +        Recvonly,
&gt; +        Inactive
&gt; +    };

Instead of re-defining this here, we should write this:

    using RtpTransceiverDirection = RTCRtpTransceiver::Direction;

&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.h:82
&gt; +    struct RtpTransceiverInit {
&gt; +        RtpTransceiverDirection direction;
&gt; +    };

Eventually, we probably also want to define this in RTCRtpTransceiver and use &quot;using&quot; to pull it in here with the appropriate name.

&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.idl:125
&gt; +enum RTCRtpTransceiverDirection {
&gt; +    &quot;sendrecv&quot;,
&gt; +    &quot;sendonly&quot;,
&gt; +    &quot;recvonly&quot;,
&gt; +    &quot;inactive&quot;
&gt; +};

Eventually we will make the bindings script smarter so we don’t have to repeat this in multiple IDL files. In the mean time we might want to comment so anyone modifying one knows they should modify the other.

&gt; Source/WebCore/Modules/mediastream/RTCRtpSender.h:60
&gt; +    bool isStopped() const { return m_client == nullptr; }

WebKit coding style says we write this !m_client rather than m_client == nullptr.

&gt; Source/WebCore/Modules/mediastream/RTCRtpTransceiver.cpp:80
&gt; +    return emptyString();

Maybe return inactiveString() here instead of emptyString()?

&gt; Source/WebCore/Modules/mediastream/RTCRtpTransceiver.h:52
&gt; +    enum class Direction {
&gt; +        Sendrecv,
&gt; +        Sendonly,
&gt; +        Recvonly,
&gt; +        Inactive
&gt; +    };

I find short enumerations like this really nice when writing out all on one line.

&gt; Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp:50
&gt; +    Ref&lt;MockRealtimeAudioSource&gt; source = adoptRef(*new MockRealtimeAudioSource(name));

I think auto works better here than writing the type a second time. I’d also omit the empty line below.

&gt; Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp:59
&gt; +    Ref&lt;MockRealtimeVideoSource&gt; source = adoptRef(*new MockRealtimeVideoSource(name));

I think auto works better here than writing the type a second time. I’d also omit the empty line below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198098</commentid>
    <comment_count>9</comment_count>
      <attachid>280223</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-06-01 01:30:09 -0700</bug_when>
    <thetext>Created attachment 280223
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198100</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-06-01 01:36:46 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 280093 [details]
&gt; Proposed patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=280093&amp;action=review
&gt; 
&gt; Noticed a few more things while re-looking at this that we could refine
&gt; later.
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.idl:69
&gt; &gt;&gt;&gt; +    [StrictTypeChecking, RaisesException] RTCRtpTransceiver addTransceiver(DOMString kind, optional Dictionary init);
&gt; &gt;&gt; 
&gt; &gt;&gt; New code should never use Dictionary. These dictionaries should defined.
&gt; &gt;&gt; 
&gt; &gt;&gt; dictionary RTCRtpTransceiverInit {
&gt; &gt;&gt;     boolean send = true;
&gt; &gt;&gt;     boolean receive = true;
&gt; &gt;&gt;     sequence&lt;MediaStream&gt; streams;
&gt; &gt;&gt;     sequence&lt;RTCRtpEncodingParameters&gt; sendEncodings;
&gt; &gt;&gt; };
&gt; &gt;&gt; 
&gt; &gt;&gt; If the bindings generator can’t handle this dictionary, we should fix it so it can handle it. Every single time we instead use the deprecated Dictionary, we add code we will need to later delete!
&gt; &gt; 
&gt; &gt; Using dictionary from latest published editor&apos;s draft [1]. Not all members are supported yet. Should I add a FIXME+bug# for that?
&gt; &gt; 
&gt; &gt; [1] https://w3c.github.io/webrtc-pc/archives/20160513/webrtc.html#idl-def-rtcrtptransceiverinit
&gt; 
&gt; I don’t think we need a FIXME about each piece that is missing as we
&gt; implement something new like this. Eventually it might have some value. but
&gt; during development it’s probably OK to just do things a bit at a time.
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/RTCRtpSender.cpp:58
&gt; &gt; +    if (track)
&gt; &gt; +        setTrack(WTFMove(track));
&gt; 
&gt; Not sure the if here is valuable.

Let&apos;s let setTrack() handle track being null

&gt; &gt; Source/WebCore/Modules/mediastream/RTCRtpSenderReceiverBase.h:47
&gt; &gt;      virtual ~RTCRtpSenderReceiverBase() { }
&gt; 
&gt; It’s probably more elegant to write &quot;= default&quot; here instead of writing out
&gt; an empty body.

Fixed.

&gt; &gt; Source/WebCore/Modules/mediastream/RTCRtpSenderReceiverBase.h:53
&gt; &gt; +    RTCRtpSenderReceiverBase()
&gt; &gt; +    { }
&gt; 
&gt; It’s probably more elegant to write &quot;= default&quot; here instead of writing out
&gt; an empty body.

Fixed.

&gt; &gt;&gt;&gt; Source/WebCore/Modules/mediastream/RTCRtpTransceiver.cpp:98
&gt; &gt;&gt;&gt; +}
&gt; &gt;&gt; 
&gt; &gt;&gt; Since bindings create functions like this for all enumerations, we should avoid writing this code ourselves if possible. What makes this necessary?
&gt; &gt; 
&gt; &gt; Removed parseDirectionString() as part of moving to properly defined dictionary in idl. directionString() is used when the direction value is added to a PeerMediaDescription (which represents direction as a string). I guess there&apos;s no nice way to use the generated version from the binding?
&gt; 
&gt; Yes, at the moment there is no way to convert an enumeration into the string
&gt; from the bindings, but if this pattern keeps recurring, I suppose we can add
&gt; a way.


(In reply to comment #8)
&gt; Comment on attachment 280145 [details]
&gt; Updated patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=280145&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp:195
&gt; &gt; +    transceiver-&gt;setDirection(static_cast&lt;RTCRtpTransceiver::Direction&gt;(init.direction));
&gt; 
&gt; This typecast should not be needed. It’s currently only needed because we
&gt; are defining the enum twice (see my other comments).

Agreed. See comments below.

&gt; &gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.h:67
&gt; &gt;      Vector&lt;RefPtr&lt;RTCRtpSender&gt;&gt; getSenders() const override { return m_senderSet; }
&gt; &gt;      Vector&lt;RefPtr&lt;RTCRtpReceiver&gt;&gt; getReceivers() const { return m_receiverSet; }
&gt; 
&gt; It’s expensive to have functions that return an existing Vector by copying
&gt; it. We should not do that unless we have to.

The separate fields for storing senders and receivers will be removed shortly since an RTCRtpTransceiver wraps these. They&apos;re kept for now to keep the size of this change smaller. The new versions will look into the m_transceiverSet to create the sender and receiver lists so there might be some optimizations to do there as well. These normally contain only a few elements. Sending and receiving 10 streams is quite a lot.

&gt; &gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.h:78
&gt; &gt; +    enum class RtpTransceiverDirection {
&gt; &gt; +        Sendrecv,
&gt; &gt; +        Sendonly,
&gt; &gt; +        Recvonly,
&gt; &gt; +        Inactive
&gt; &gt; +    };
&gt; 
&gt; Instead of re-defining this here, we should write this:
&gt; 
&gt;     using RtpTransceiverDirection = RTCRtpTransceiver::Direction;

This would be much nicer. However, applying this change makes the bindings generator generate duplicate conversion functions (jsStringWithCache, parse, convert) for the RTCRtpTransceiverDirection enum with the same C++ enum. I&apos;ll leave as is and file a new bug.

&gt; &gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.h:82
&gt; &gt; +    struct RtpTransceiverInit {
&gt; &gt; +        RtpTransceiverDirection direction;
&gt; &gt; +    };
&gt; 
&gt; Eventually, we probably also want to define this in RTCRtpTransceiver and
&gt; use &quot;using&quot; to pull it in here with the appropriate name.
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/RTCPeerConnection.idl:125
&gt; &gt; +enum RTCRtpTransceiverDirection {
&gt; &gt; +    &quot;sendrecv&quot;,
&gt; &gt; +    &quot;sendonly&quot;,
&gt; &gt; +    &quot;recvonly&quot;,
&gt; &gt; +    &quot;inactive&quot;
&gt; &gt; +};
&gt; 
&gt; Eventually we will make the bindings script smarter so we don’t have to
&gt; repeat this in multiple IDL files. In the mean time we might want to comment
&gt; so anyone modifying one knows they should modify the other.

Agreed. Adding comments.

&gt; &gt; Source/WebCore/Modules/mediastream/RTCRtpSender.h:60
&gt; &gt; +    bool isStopped() const { return m_client == nullptr; }
&gt; 
&gt; WebKit coding style says we write this !m_client rather than m_client ==
&gt; nullptr.

Fixed.

&gt; &gt; Source/WebCore/Modules/mediastream/RTCRtpTransceiver.cpp:80
&gt; &gt; +    return emptyString();
&gt; 
&gt; Maybe return inactiveString() here instead of emptyString()?

Fixed.

&gt; &gt; Source/WebCore/Modules/mediastream/RTCRtpTransceiver.h:52
&gt; &gt; +    enum class Direction {
&gt; &gt; +        Sendrecv,
&gt; &gt; +        Sendonly,
&gt; &gt; +        Recvonly,
&gt; &gt; +        Inactive
&gt; &gt; +    };
&gt; 
&gt; I find short enumerations like this really nice when writing out all on one
&gt; line.

The direction enums will likely never be extended so let&apos;s make them a one-liner.

&gt; &gt; Source/WebCore/platform/mock/MockRealtimeAudioSource.cpp:50
&gt; &gt; +    Ref&lt;MockRealtimeAudioSource&gt; source = adoptRef(*new MockRealtimeAudioSource(name));
&gt; 
&gt; I think auto works better here than writing the type a second time. I’d also
&gt; omit the empty line below.

Fixed.

&gt; &gt; Source/WebCore/platform/mock/MockRealtimeVideoSource.cpp:59
&gt; &gt; +    Ref&lt;MockRealtimeVideoSource&gt; source = adoptRef(*new MockRealtimeVideoSource(name));
&gt; 
&gt; I think auto works better here than writing the type a second time. I’d also
&gt; omit the empty line below.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198102</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-06-01 01:39:01 -0700</bug_when>
    <thetext>Bindings generator bug: https://bugs.webkit.org/show_bug.cgi?id=158254</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198117</commentid>
    <comment_count>12</comment_count>
      <attachid>280223</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-01 03:05:22 -0700</bug_when>
    <thetext>Comment on attachment 280223
Patch for landing

Clearing flags on attachment: 280223

Committed r201549: &lt;http://trac.webkit.org/changeset/201549&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280093</attachid>
            <date>2016-05-30 06:21:58 -0700</date>
            <delta_ts>2016-05-31 05:39:04 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>add-transceiver_0.patch</filename>
            <type>text/plain</type>
            <size>58547</size>
            <attacher name="Adam Bergkvist">adam.bergkvist</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlZmI5YTBmLi40ZDRkNzU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTYtMDUt
MzAgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgorCisgICAg
ICAgIFdlYlJUQzogQWRkIFJUQ1J0cFRyYW5zY2VpdmVyIGludGVyZmFjZSBhbmQgUlRDUGVlckNv
bm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MTg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkZWQgdGVzdCBmb3IgUlRDUGVlckNvbm5lY3Rpb24uYWRkVHJh
bnNjZWl2ZXIoKS4KKworICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rp
b24tYWRkVHJhbnNjZWl2ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWFkZFRyYW5zY2VpdmVyLmh0bWw6IEFkZGVkLgor
ICAgICAgICBUZXN0IGNyZWF0aW5nIHNldmVyYWwgUlRDUnRwVHJhbnNjZWl2ZXJzIHdpdGggdmFy
aW91cyBjb25maWd1cmF0aW9ucyBhbmQgaW5zcGVjdCB0aGUgcmVzdWx0LgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICBTa2lwIHRoZSBuZXcgdGVzdCBz
aW5jZSB0aGUgTWFjIHBvcnQgaXMgY3VycmVudGx5IG5vdCBidWlsZGluZyB3aXRoIFdlYlJUQyBz
dXBwb3J0LgorCiAyMDE2LTA1LTI1ICBTa2FjaGtvdiBPbGVrc2FuZHIgIDxnc2thY2hrb3ZAZ21h
aWwuY29tPgogCiAgICAgICAgIFtFU05leHRdIFN1cHBvcnQgdHJhaWxpbmcgY29tbWFzIGluIGZ1
bmN0aW9uIHBhcmFtIGxpc3RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWFkZFRyYW5zY2VpdmVyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tYWRkVHJhbnNjZWl2ZXIt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwMWU1ODIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uLWFkZFRyYW5zY2VpdmVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzNiBAQAor
VGVzdCBiYXNpYyBiZWhhdmlvciBvZiBSVENQZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBwYy5nZXRUcmFuc2NlaXZlcnMo
KS5sZW5ndGggaXMgMAorCisqKiogVGVzdCBhcmd1bWVudHMKKyoqKiAndHJhY2tPcktpbmQnIGFy
Z3VtZW50IGlzIG1hbmRhdG9yeQorUEFTUyBwYy5hZGRUcmFuc2NlaXZlcigpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgorUEFTUyBwYy5hZGRUcmFuc2Nl
aXZlcih7fSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KKyoqKiBCYWQg
dHlwZSBhcyBmaXJzdCBhcmd1bWVudAorUEFTUyBwYy5hZGRUcmFuc2NlaXZlcihudWxsKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBwYy5hZGRUcmFuc2NlaXZl
cihudWxsLCB7fSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1Mg
cGMuYWRkVHJhbnNjZWl2ZXIoc3RyZWFtKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBl
IGVycm9yLgorKioqIEJhZCB0cmFjayBraW5kCitQQVNTIHBjLmFkZFRyYW5zY2VpdmVyKCdmb28n
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorKioqIEJhZCBkaXJlY3Rp
b24gdmFsdWUKK1BBU1MgcGMuYWRkVHJhbnNjZWl2ZXIoImF1ZGlvIiwgeyJkaXJlY3Rpb24iOiAi
Zm9vIn0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCisKK1BBU1MgdHJh
bnNjZWl2ZXIgPSBwYy5hZGRUcmFuc2NlaXZlcigiYXVkaW8iKSBkaWQgbm90IHRocm93IGV4Y2Vw
dGlvbi4KK1BBU1MgcGMuZ2V0VHJhbnNjZWl2ZXJzKCkubGVuZ3RoIGlzIDEKK1BBU1MgcGMuZ2V0
VHJhbnNjZWl2ZXJzKCkuaW5jbHVkZXModHJhbnNjZWl2ZXIpIGlzIHRydWUKK1BBU1MgdHJhbnNj
ZWl2ZXIuZGlyZWN0aW9uIGlzICdzZW5kcmVjdicKK1BBU1MgdHJhbnNjZWl2ZXIubWlkIGlzIG51
bGwKK1BBU1MgdHJhbnNjZWl2ZXIuc3RvcHBlZCBpcyBmYWxzZQorKioqIENoZWNrIHNlbmRlcgor
UEFTUyB0cmFuc2NlaXZlci5zZW5kZXIgaXMgYW4gaW5zdGFuY2Ugb2YgUlRDUnRwU2VuZGVyCitQ
QVNTIHRyYW5zY2VpdmVyLnNlbmRlci50cmFjayBpcyBudWxsCisqKiogQ2hlY2sgcmVjZWl2ZXIK
K1BBU1MgdHJhbnNjZWl2ZXIucmVjZWl2ZXIgaXMgYW4gaW5zdGFuY2Ugb2YgUlRDUnRwUmVjZWl2
ZXIKK1BBU1MgdHJhbnNjZWl2ZXIucmVjZWl2ZXIudHJhY2sgaXMgYW4gaW5zdGFuY2Ugb2YgTWVk
aWFTdHJlYW1UcmFjaworUEFTUyB0cmFuc2NlaXZlci5yZWNlaXZlci50cmFjay5raW5kIGlzICdh
dWRpbycKKworUEFTUyB0cmFuc2NlaXZlciA9IHBjLmFkZFRyYW5zY2VpdmVyKCJ2aWRlbyIpIGRp
ZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBwYy5nZXRUcmFuc2NlaXZlcnMoKS5sZW5ndGgg
aXMgMgorUEFTUyBwYy5nZXRUcmFuc2NlaXZlcnMoKS5pbmNsdWRlcyh0cmFuc2NlaXZlcikgaXMg
dHJ1ZQorUEFTUyB0cmFuc2NlaXZlci5kaXJlY3Rpb24gaXMgJ3NlbmRyZWN2JworUEFTUyB0cmFu
c2NlaXZlci5taWQgaXMgbnVsbAorUEFTUyB0cmFuc2NlaXZlci5zdG9wcGVkIGlzIGZhbHNlCisq
KiogQ2hlY2sgc2VuZGVyCitQQVNTIHRyYW5zY2VpdmVyLnNlbmRlciBpcyBhbiBpbnN0YW5jZSBv
ZiBSVENSdHBTZW5kZXIKK1BBU1MgdHJhbnNjZWl2ZXIuc2VuZGVyLnRyYWNrIGlzIG51bGwKKyoq
KiBDaGVjayByZWNlaXZlcgorUEFTUyB0cmFuc2NlaXZlci5yZWNlaXZlciBpcyBhbiBpbnN0YW5j
ZSBvZiBSVENSdHBSZWNlaXZlcgorUEFTUyB0cmFuc2NlaXZlci5yZWNlaXZlci50cmFjayBpcyBh
biBpbnN0YW5jZSBvZiBNZWRpYVN0cmVhbVRyYWNrCitQQVNTIHRyYW5zY2VpdmVyLnJlY2VpdmVy
LnRyYWNrLmtpbmQgaXMgJ3ZpZGVvJworCitQQVNTIHRyYW5zY2VpdmVyID0gcGMuYWRkVHJhbnNj
ZWl2ZXIoYXVkaW9UcmFjaykgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIHBjLmdldFRy
YW5zY2VpdmVycygpLmxlbmd0aCBpcyAzCitQQVNTIHBjLmdldFRyYW5zY2VpdmVycygpLmluY2x1
ZGVzKHRyYW5zY2VpdmVyKSBpcyB0cnVlCitQQVNTIHRyYW5zY2VpdmVyLmRpcmVjdGlvbiBpcyAn
c2VuZHJlY3YnCitQQVNTIHRyYW5zY2VpdmVyLm1pZCBpcyBudWxsCitQQVNTIHRyYW5zY2VpdmVy
LnN0b3BwZWQgaXMgZmFsc2UKKyoqKiBDaGVjayBzZW5kZXIKK1BBU1MgdHJhbnNjZWl2ZXIuc2Vu
ZGVyIGlzIGFuIGluc3RhbmNlIG9mIFJUQ1J0cFNlbmRlcgorUEFTUyB0cmFuc2NlaXZlci5zZW5k
ZXIudHJhY2sgaXMgYXVkaW9UcmFjaworKioqIENoZWNrIHJlY2VpdmVyCitQQVNTIHRyYW5zY2Vp
dmVyLnJlY2VpdmVyIGlzIGFuIGluc3RhbmNlIG9mIFJUQ1J0cFJlY2VpdmVyCitQQVNTIHRyYW5z
Y2VpdmVyLnJlY2VpdmVyLnRyYWNrIGlzIGFuIGluc3RhbmNlIG9mIE1lZGlhU3RyZWFtVHJhY2sK
K1BBU1MgdHJhbnNjZWl2ZXIucmVjZWl2ZXIudHJhY2sua2luZCBpcyAnYXVkaW8nCisKK1BBU1Mg
dHJhbnNjZWl2ZXIgPSBwYy5hZGRUcmFuc2NlaXZlcih2aWRlb1RyYWNrKSBkaWQgbm90IHRocm93
IGV4Y2VwdGlvbi4KK1BBU1MgcGMuZ2V0VHJhbnNjZWl2ZXJzKCkubGVuZ3RoIGlzIDQKK1BBU1Mg
cGMuZ2V0VHJhbnNjZWl2ZXJzKCkuaW5jbHVkZXModHJhbnNjZWl2ZXIpIGlzIHRydWUKK1BBU1Mg
dHJhbnNjZWl2ZXIuZGlyZWN0aW9uIGlzICdzZW5kcmVjdicKK1BBU1MgdHJhbnNjZWl2ZXIubWlk
IGlzIG51bGwKK1BBU1MgdHJhbnNjZWl2ZXIuc3RvcHBlZCBpcyBmYWxzZQorKioqIENoZWNrIHNl
bmRlcgorUEFTUyB0cmFuc2NlaXZlci5zZW5kZXIgaXMgYW4gaW5zdGFuY2Ugb2YgUlRDUnRwU2Vu
ZGVyCitQQVNTIHRyYW5zY2VpdmVyLnNlbmRlci50cmFjayBpcyB2aWRlb1RyYWNrCisqKiogQ2hl
Y2sgcmVjZWl2ZXIKK1BBU1MgdHJhbnNjZWl2ZXIucmVjZWl2ZXIgaXMgYW4gaW5zdGFuY2Ugb2Yg
UlRDUnRwUmVjZWl2ZXIKK1BBU1MgdHJhbnNjZWl2ZXIucmVjZWl2ZXIudHJhY2sgaXMgYW4gaW5z
dGFuY2Ugb2YgTWVkaWFTdHJlYW1UcmFjaworUEFTUyB0cmFuc2NlaXZlci5yZWNlaXZlci50cmFj
ay5raW5kIGlzICd2aWRlbycKKworUEFTUyB0cmFuc2NlaXZlciA9IHBjLmFkZFRyYW5zY2VpdmVy
KCJhdWRpbyIsIHsiZGlyZWN0aW9uIjogInNlbmRyZWN2In0pIGRpZCBub3QgdGhyb3cgZXhjZXB0
aW9uLgorUEFTUyBwYy5nZXRUcmFuc2NlaXZlcnMoKS5sZW5ndGggaXMgNQorUEFTUyBwYy5nZXRU
cmFuc2NlaXZlcnMoKS5pbmNsdWRlcyh0cmFuc2NlaXZlcikgaXMgdHJ1ZQorUEFTUyB0cmFuc2Nl
aXZlci5kaXJlY3Rpb24gaXMgJ3NlbmRyZWN2JworUEFTUyB0cmFuc2NlaXZlci5taWQgaXMgbnVs
bAorUEFTUyB0cmFuc2NlaXZlci5zdG9wcGVkIGlzIGZhbHNlCisqKiogQ2hlY2sgc2VuZGVyCitQ
QVNTIHRyYW5zY2VpdmVyLnNlbmRlciBpcyBhbiBpbnN0YW5jZSBvZiBSVENSdHBTZW5kZXIKK1BB
U1MgdHJhbnNjZWl2ZXIuc2VuZGVyLnRyYWNrIGlzIG51bGwKKyoqKiBDaGVjayByZWNlaXZlcgor
UEFTUyB0cmFuc2NlaXZlci5yZWNlaXZlciBpcyBhbiBpbnN0YW5jZSBvZiBSVENSdHBSZWNlaXZl
cgorUEFTUyB0cmFuc2NlaXZlci5yZWNlaXZlci50cmFjayBpcyBhbiBpbnN0YW5jZSBvZiBNZWRp
YVN0cmVhbVRyYWNrCitQQVNTIHRyYW5zY2VpdmVyLnJlY2VpdmVyLnRyYWNrLmtpbmQgaXMgJ2F1
ZGlvJworCitQQVNTIHRyYW5zY2VpdmVyID0gcGMuYWRkVHJhbnNjZWl2ZXIoImF1ZGlvIiwgeyJk
aXJlY3Rpb24iOiAicmVjdm9ubHkifSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIHBj
LmdldFRyYW5zY2VpdmVycygpLmxlbmd0aCBpcyA2CitQQVNTIHBjLmdldFRyYW5zY2VpdmVycygp
LmluY2x1ZGVzKHRyYW5zY2VpdmVyKSBpcyB0cnVlCitQQVNTIHRyYW5zY2VpdmVyLmRpcmVjdGlv
biBpcyAncmVjdm9ubHknCitQQVNTIHRyYW5zY2VpdmVyLm1pZCBpcyBudWxsCitQQVNTIHRyYW5z
Y2VpdmVyLnN0b3BwZWQgaXMgZmFsc2UKKyoqKiBDaGVjayBzZW5kZXIKK1BBU1MgdHJhbnNjZWl2
ZXIuc2VuZGVyIGlzIGFuIGluc3RhbmNlIG9mIFJUQ1J0cFNlbmRlcgorUEFTUyB0cmFuc2NlaXZl
ci5zZW5kZXIudHJhY2sgaXMgbnVsbAorKioqIENoZWNrIHJlY2VpdmVyCitQQVNTIHRyYW5zY2Vp
dmVyLnJlY2VpdmVyIGlzIGFuIGluc3RhbmNlIG9mIFJUQ1J0cFJlY2VpdmVyCitQQVNTIHRyYW5z
Y2VpdmVyLnJlY2VpdmVyLnRyYWNrIGlzIGFuIGluc3RhbmNlIG9mIE1lZGlhU3RyZWFtVHJhY2sK
K1BBU1MgdHJhbnNjZWl2ZXIucmVjZWl2ZXIudHJhY2sua2luZCBpcyAnYXVkaW8nCisKK1BBU1Mg
dHJhbnNjZWl2ZXIgPSBwYy5hZGRUcmFuc2NlaXZlcigiYXVkaW8iLCB7ImRpcmVjdGlvbiI6ICJz
ZW5kb25seSJ9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgcGMuZ2V0VHJhbnNjZWl2
ZXJzKCkubGVuZ3RoIGlzIDcKK1BBU1MgcGMuZ2V0VHJhbnNjZWl2ZXJzKCkuaW5jbHVkZXModHJh
bnNjZWl2ZXIpIGlzIHRydWUKK1BBU1MgdHJhbnNjZWl2ZXIuZGlyZWN0aW9uIGlzICdzZW5kb25s
eScKK1BBU1MgdHJhbnNjZWl2ZXIubWlkIGlzIG51bGwKK1BBU1MgdHJhbnNjZWl2ZXIuc3RvcHBl
ZCBpcyBmYWxzZQorKioqIENoZWNrIHNlbmRlcgorUEFTUyB0cmFuc2NlaXZlci5zZW5kZXIgaXMg
YW4gaW5zdGFuY2Ugb2YgUlRDUnRwU2VuZGVyCitQQVNTIHRyYW5zY2VpdmVyLnNlbmRlci50cmFj
ayBpcyBudWxsCisqKiogQ2hlY2sgcmVjZWl2ZXIKK1BBU1MgdHJhbnNjZWl2ZXIucmVjZWl2ZXIg
aXMgYW4gaW5zdGFuY2Ugb2YgUlRDUnRwUmVjZWl2ZXIKK1BBU1MgdHJhbnNjZWl2ZXIucmVjZWl2
ZXIudHJhY2sgaXMgYW4gaW5zdGFuY2Ugb2YgTWVkaWFTdHJlYW1UcmFjaworUEFTUyB0cmFuc2Nl
aXZlci5yZWNlaXZlci50cmFjay5raW5kIGlzICdhdWRpbycKKworUEFTUyB0cmFuc2NlaXZlciA9
IHBjLmFkZFRyYW5zY2VpdmVyKCJhdWRpbyIsIHsiZGlyZWN0aW9uIjogImluYWN0aXZlIn0pIGRp
ZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBwYy5nZXRUcmFuc2NlaXZlcnMoKS5sZW5ndGgg
aXMgOAorUEFTUyBwYy5nZXRUcmFuc2NlaXZlcnMoKS5pbmNsdWRlcyh0cmFuc2NlaXZlcikgaXMg
dHJ1ZQorUEFTUyB0cmFuc2NlaXZlci5kaXJlY3Rpb24gaXMgJ2luYWN0aXZlJworUEFTUyB0cmFu
c2NlaXZlci5taWQgaXMgbnVsbAorUEFTUyB0cmFuc2NlaXZlci5zdG9wcGVkIGlzIGZhbHNlCisq
KiogQ2hlY2sgc2VuZGVyCitQQVNTIHRyYW5zY2VpdmVyLnNlbmRlciBpcyBhbiBpbnN0YW5jZSBv
ZiBSVENSdHBTZW5kZXIKK1BBU1MgdHJhbnNjZWl2ZXIuc2VuZGVyLnRyYWNrIGlzIG51bGwKKyoq
KiBDaGVjayByZWNlaXZlcgorUEFTUyB0cmFuc2NlaXZlci5yZWNlaXZlciBpcyBhbiBpbnN0YW5j
ZSBvZiBSVENSdHBSZWNlaXZlcgorUEFTUyB0cmFuc2NlaXZlci5yZWNlaXZlci50cmFjayBpcyBh
biBpbnN0YW5jZSBvZiBNZWRpYVN0cmVhbVRyYWNrCitQQVNTIHRyYW5zY2VpdmVyLnJlY2VpdmVy
LnRyYWNrLmtpbmQgaXMgJ2F1ZGlvJworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1hZGRUcmFuc2NlaXZlci5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1hZGRUcmFuc2NlaXZlci5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2ZDlkMjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWFkZFRy
YW5zY2VpdmVyLmh0bWwKQEAgLTAsMCArMSwxMjMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8
L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICB2YXIgc3Ry
ZWFtOworICAgICAgICAgICAgdmFyIGF1ZGlvVHJhY2s7CisgICAgICAgICAgICB2YXIgdmlkZW9U
cmFjazsKKyAgICAgICAgICAgIHZhciB0cmFuc2NlaXZlcjsKKyAgICAgICAgICAgIHZhciBleHBl
Y3RlZDsKKworICAgICAgICAgICAgZGVzY3JpcHRpb24oIlRlc3QgYmFzaWMgYmVoYXZpb3Igb2Yg
UlRDUGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIiKTsKKworICAgICAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0VXNlck1lZGlh
UGVybWlzc2lvbih0cnVlKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGRl
YnVnKCJUaGlzIHRlc3QgY2FuIG5vdCBiZSBydW4gd2l0aG91dCB0aGUgdGVzdFJ1bm5lciIpOwor
ICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB2YXIgcGMgPSBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oe2ljZVNlcnZlcnM6W3t1
cmxzOidzdHVuOmZvby5jb20nfV19KTsKKworICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2
aWNlcy5nZXRVc2VyTWVkaWEoeyAiYXVkaW8iOiB0cnVlLCAidmlkZW8iOiB0cnVlIH0pCisgICAg
ICAgICAgICAudGhlbihmdW5jdGlvbiAocykgeworICAgICAgICAgICAgICAgIHN0cmVhbSA9IHM7
CisgICAgICAgICAgICAgICAgYXVkaW9UcmFjayA9IHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBd
OworICAgICAgICAgICAgICAgIHZpZGVvVHJhY2sgPSBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVsw
XTsKKworICAgICAgICAgICAgICAgIHNob3VsZEJlKCJwYy5nZXRUcmFuc2NlaXZlcnMoKS5sZW5n
dGgiLCAiMCIpOworICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsKKworICAgICAgICAgICAgICAg
IGRlYnVnKCIqKiogVGVzdCBhcmd1bWVudHMiKTsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiKioq
ICd0cmFja09yS2luZCcgYXJndW1lbnQgaXMgbWFuZGF0b3J5Iik7CisgICAgICAgICAgICAgICAg
c2hvdWxkVGhyb3coInBjLmFkZFRyYW5zY2VpdmVyKCkiKTsKKyAgICAgICAgICAgICAgICBzaG91
bGRUaHJvdygicGMuYWRkVHJhbnNjZWl2ZXIoe30pIik7CisgICAgICAgICAgICAgICAgZGVidWco
IioqKiBCYWQgdHlwZSBhcyBmaXJzdCBhcmd1bWVudCIpOworICAgICAgICAgICAgICAgIHNob3Vs
ZFRocm93KCJwYy5hZGRUcmFuc2NlaXZlcihudWxsKSIpOworICAgICAgICAgICAgICAgIHNob3Vs
ZFRocm93KCJwYy5hZGRUcmFuc2NlaXZlcihudWxsLCB7fSkiKTsKKyAgICAgICAgICAgICAgICBz
aG91bGRUaHJvdygicGMuYWRkVHJhbnNjZWl2ZXIoc3RyZWFtKSIpOworICAgICAgICAgICAgICAg
IGRlYnVnKCIqKiogQmFkIHRyYWNrIGtpbmQiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRUaHJv
dygicGMuYWRkVHJhbnNjZWl2ZXIoJ2ZvbycpIik7CisgICAgICAgICAgICAgICAgZGVidWcoIioq
KiBCYWQgZGlyZWN0aW9uIHZhbHVlIik7CisgICAgICAgICAgICAgICAgc2hvdWxkVGhyb3coJ3Bj
LmFkZFRyYW5zY2VpdmVyKCJhdWRpbyIsIHsiZGlyZWN0aW9uIjogImZvbyJ9KScpOworICAgICAg
ICAgICAgICAgIGRlYnVnKCIiKTsKKworICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrVHJh
bnNjZXZpZXIoZXhwZWN0ZWRBcmcpIHsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBl
eHBlY3RlZEFyZzsKKworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgicGMuZ2V0VHJhbnNj
ZWl2ZXJzKCkubGVuZ3RoIiwgZXhwZWN0ZWQudHJhbnNjZWl2ZXJDb3VudCk7CisgICAgICAgICAg
ICAgICAgICAgIHNob3VsZEJlVHJ1ZSgicGMuZ2V0VHJhbnNjZWl2ZXJzKCkuaW5jbHVkZXModHJh
bnNjZWl2ZXIpIik7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJ0cmFuc2NlaXZlci5k
aXJlY3Rpb24iLCBleHBlY3RlZC5kaXJlY3Rpb24pOworICAgICAgICAgICAgICAgICAgICBzaG91
bGRCZU51bGwoInRyYW5zY2VpdmVyLm1pZCIpOworICAgICAgICAgICAgICAgICAgICBzaG91bGRC
ZUZhbHNlKCJ0cmFuc2NlaXZlci5zdG9wcGVkIik7CisKKyAgICAgICAgICAgICAgICAgICAgZGVi
dWcoIioqKiBDaGVjayBzZW5kZXIiKTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVUeXBl
KCJ0cmFuc2NlaXZlci5zZW5kZXIiLCAiUlRDUnRwU2VuZGVyIik7CisgICAgICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCJ0cmFuc2NlaXZlci5zZW5kZXIudHJhY2siLCBleHBlY3RlZC5zZW5kZXJU
cmFjayk7CisKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoIioqKiBDaGVjayByZWNlaXZlciIp
OworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZVR5cGUoInRyYW5zY2VpdmVyLnJlY2VpdmVy
IiwgIlJUQ1J0cFJlY2VpdmVyIik7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlVHlwZSgi
dHJhbnNjZWl2ZXIucmVjZWl2ZXIudHJhY2siLCAiTWVkaWFTdHJlYW1UcmFjayIpOworICAgICAg
ICAgICAgICAgICAgICBzaG91bGRCZSgidHJhbnNjZWl2ZXIucmVjZWl2ZXIudHJhY2sua2luZCIs
IGV4cGVjdGVkLnJlY2VpdmVyVHJhY2tUeXBlKTsKKyAgICAgICAgICAgICAgICAgICAgZGVidWco
IiIpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93
KCd0cmFuc2NlaXZlciA9IHBjLmFkZFRyYW5zY2VpdmVyKCJhdWRpbyIpJyk7CisgICAgICAgICAg
ICAgICAgY2hlY2tUcmFuc2Nldmllcih7CisgICAgICAgICAgICAgICAgICAgICJ0cmFuc2NlaXZl
ckNvdW50IjogIjEiLAorICAgICAgICAgICAgICAgICAgICAiZGlyZWN0aW9uIjogIidzZW5kcmVj
diciLAorICAgICAgICAgICAgICAgICAgICAic2VuZGVyVHJhY2siOiAibnVsbCIsCisgICAgICAg
ICAgICAgICAgICAgICJyZWNlaXZlclRyYWNrVHlwZSI6ICInYXVkaW8nIgorICAgICAgICAgICAg
ICAgIH0pOworCisgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coJ3RyYW5zY2VpdmVyID0g
cGMuYWRkVHJhbnNjZWl2ZXIoInZpZGVvIiknKTsKKyAgICAgICAgICAgICAgICBjaGVja1RyYW5z
Y2V2aWVyKHsKKyAgICAgICAgICAgICAgICAgICAgInRyYW5zY2VpdmVyQ291bnQiOiAiMiIsCisg
ICAgICAgICAgICAgICAgICAgICJkaXJlY3Rpb24iOiAiJ3NlbmRyZWN2JyIsCisgICAgICAgICAg
ICAgICAgICAgICJzZW5kZXJUcmFjayI6ICJudWxsIiwKKyAgICAgICAgICAgICAgICAgICAgInJl
Y2VpdmVyVHJhY2tUeXBlIjogIid2aWRlbyciCisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAg
ICAgICAgICAgICBzaG91bGROb3RUaHJvdygndHJhbnNjZWl2ZXIgPSBwYy5hZGRUcmFuc2NlaXZl
cihhdWRpb1RyYWNrKScpOworICAgICAgICAgICAgICAgIGNoZWNrVHJhbnNjZXZpZXIoeworICAg
ICAgICAgICAgICAgICAgICAidHJhbnNjZWl2ZXJDb3VudCI6ICIzIiwKKyAgICAgICAgICAgICAg
ICAgICAgImRpcmVjdGlvbiI6ICInc2VuZHJlY3YnIiwKKyAgICAgICAgICAgICAgICAgICAgInNl
bmRlclRyYWNrIjogImF1ZGlvVHJhY2siLAorICAgICAgICAgICAgICAgICAgICAicmVjZWl2ZXJU
cmFja1R5cGUiOiAiJ2F1ZGlvJyIKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
ICAgIHNob3VsZE5vdFRocm93KCd0cmFuc2NlaXZlciA9IHBjLmFkZFRyYW5zY2VpdmVyKHZpZGVv
VHJhY2spJyk7CisgICAgICAgICAgICAgICAgY2hlY2tUcmFuc2Nldmllcih7CisgICAgICAgICAg
ICAgICAgICAgICJ0cmFuc2NlaXZlckNvdW50IjogIjQiLAorICAgICAgICAgICAgICAgICAgICAi
ZGlyZWN0aW9uIjogIidzZW5kcmVjdiciLAorICAgICAgICAgICAgICAgICAgICAic2VuZGVyVHJh
Y2siOiAidmlkZW9UcmFjayIsCisgICAgICAgICAgICAgICAgICAgICJyZWNlaXZlclRyYWNrVHlw
ZSI6ICIndmlkZW8nIgorICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgWyJz
ZW5kcmVjdiIsICJyZWN2b25seSIsICJzZW5kb25seSIsICJpbmFjdGl2ZSJdLmZvckVhY2goZnVu
Y3Rpb24gKGRpcmVjdGlvbiwgaSkgeworICAgICAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJv
dyhgdHJhbnNjZWl2ZXIgPSBwYy5hZGRUcmFuc2NlaXZlcigiYXVkaW8iLCB7ImRpcmVjdGlvbiI6
ICIke2RpcmVjdGlvbn0ifSlgKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tUcmFuc2Nldmll
cih7CisgICAgICAgICAgICAgICAgICAgICAgICAidHJhbnNjZWl2ZXJDb3VudCI6IFN0cmluZyg1
ICsgaSksCisgICAgICAgICAgICAgICAgICAgICAgICAiZGlyZWN0aW9uIjogYCcke2RpcmVjdGlv
bn0nYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzZW5kZXJUcmFjayI6ICJudWxsIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICJyZWNlaXZlclRyYWNrVHlwZSI6ICInYXVkaW8nIgorICAg
ICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgfSkKKyAgICAgICAgICAgIC5jYXRjaChm
dW5jdGlvbiAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJFcnJvciBjYXVn
aHQgaW4gcHJvbWlzZSBjaGFpbjogIiArIGVycm9yKTsKKyAgICAgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICB3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CisgICAgICAgICAgICB3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKworICAgICAgICA8L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOTgxNDM4Mi4uMjAw
YTIxZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE4
Nyw2ICsxODcsNyBAQCBmYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWFkZC1yZW1v
dmVUcmFjay5odG1sCiBmYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWNsb3NlZC1z
dGF0ZS5odG1sCiBmYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLW92ZXJsb2FkZWQt
b3BlcmF0aW9ucy1wYXJhbXMuaHRtbAogZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlv
bi1vdmVybG9hZGVkLW9wZXJhdGlvbnMuaHRtbAorZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbi1hZGRUcmFuc2NlaXZlci5odG1sCiBmYXN0L21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRl
ci1yZXBsYWNlVHJhY2suaHRtbAogZmFzdC9tZWRpYXN0cmVhbS9SVENTZXNzaW9uRGVzY3JpcHRp
b24uaHRtbAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDA3Y2IzMmIuLmFkOGI5NmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CkBAIC0yMzUsNiArMjM1LDcgQEAgc2V0KFdlYkNvcmVfTk9OX1NWR19J
RExfRklMRVMKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbAog
ICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaWRsCiAgICAgTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBUcmFuc2NlaXZlci5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNj
cmlwdGlvbi5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVwb3J0LmlkbAog
ICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNSZXNwb25zZS5pZGwKQEAgLTkzMCw2ICs5
MzEsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVy
LmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcAorICAgIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENTZXNzaW9uRGVzY3JpcHRpb24uY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENTdGF0c1JlcG9ydC5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVzcG9u
c2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggNzUwZjkxOC4uODBhYTVmYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDk4IEBACisyMDE2LTA1LTMwICBBZGFtIEJlcmdrdmlzdCAgPGFkYW0uYmVyZ2t2aXN0QGVy
aWNzc29uLmNvbT4KKworICAgICAgICBXZWJSVEM6IEFkZCBSVENSdHBUcmFuc2NlaXZlciBpbnRl
cmZhY2UgYW5kIFJUQ1BlZXJDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKCkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODE4OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBSVENSdHBUcmFuc2NlaXZl
ciBpbnRlcmZhY2UgcmVwcmVzZW50cyBhIGNvbWJpbmF0aW9uIG9mIGFuIFJUQ1J0cFNlbmRlciBh
bmQgYW4KKyAgICAgICAgUlRDUnRwUmVjZWl2ZXIgdGhhdCBzaGFyZSBhIGNvbW1vbiBtaWQgWzFd
LgorCisgICAgICAgIFJUQ1BlZXJDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKCkgWzJdIGNyZWF0
ZXMgYW4gUlRDUnRwVHJhbnNjZWl2ZXIgb2JqZWN0LCBlaXRoZXIgZGlyZWN0bHkKKyAgICAgICAg
ZnJvbSBhIE1lZGlhU3RyZWFtVHJhY2sgWzNdLCBvciB3aXRoIGEgc3BlY2lmaWMgbWVkaWEgdHlw
ZSAoa2luZCkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaW50cm9kdWNlcyB0aGUgUlRDUnRwVHJh
bnNjZWl2ZXIgb2JqZWN0LCBmb2xsb3ctdXAgcGF0Y2hlcyB3aWxsIGludGVncmF0ZSBpdAorICAg
ICAgICBpbnRvIHRoZSBvZmZlci9hbnN3ZXIgbWFjaGluZXJ5LgorCisgICAgICAgIFsxXSBodHRw
czovL3czYy5naXRodWIuaW8vd2VicnRjLXBjL2FyY2hpdmVzLzIwMTYwNTEzL3dlYnJ0Yy5odG1s
I3J0Y3J0cHRyYW5zY2VpdmVyLWludGVyZmFjZQorICAgICAgICBbMl0gaHR0cHM6Ly93M2MuZ2l0
aHViLmlvL3dlYnJ0Yy1wYy9hcmNoaXZlcy8yMDE2MDUxMy93ZWJydGMuaHRtbCNkb20tcnRjcGVl
cmNvbm5lY3Rpb24tYWRkdHJhbnNjZWl2ZXIKKyAgICAgICAgWzNdIGh0dHA6Ly93M2MuZ2l0aHVi
LmlvL21lZGlhY2FwdHVyZS1tYWluL2FyY2hpdmVzLzIwMTYwNTEzL2dldHVzZXJtZWRpYS5odG1s
I21lZGlhc3RyZWFtdHJhY2sKKworICAgICAgICBUZXN0OiBmYXN0L21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLWFkZFRyYW5zY2VpdmVyLmh0bWwKKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25u
ZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlv
bjo6Y3JlYXRlT2ZmZXJUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5kcG9pbnRQZWVy
Q29ubmVjdGlvbjo6Y3JlYXRlUmVjZWl2ZXIpOgorICAgICAgICBBbiBSVENUcmFuc2NlaXZlciBh
bHdheXMgaGFzIGEgcmVjZWl2ZXIgKFJUQ1J0cFJlY2VpdmVyKSB3aXRoIGEgdHJhY2sgKE1lZGlh
U3RyZWFtVHJhY2spIHRoYXQKKyAgICAgICAgY2FuIGJlIHJlbmRlcmVkLiBCZWZvcmUgdGhhdCBy
ZW1vdGUgdHJhY2sgaXMgcmVjZWl2aW5nIGRhdGEgZnJvbSB0aGUgcmVtb3RlIHBlZXIsIGl0J3Mg
bXV0ZWQuCisgICAgICAgIGNyZWF0ZVJlY2VpdmVyKCkgdXNlcyBNZWRpYUVuZHBvbml0OjpjcmVh
dGVNdXRlZFJlbW90ZVNvdXJjZSgpIHRvIGNyZWF0ZSBhIHNvdXJjZSB0byByZXByZXNlbnQKKyAg
ICAgICAgZnV0dXJlIGluY29taW5nIG1lZGlhLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJD
b25uZWN0aW9uOjphZGRUcmFuc2NlaXZlcik6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29u
bmVjdGlvbjo6Y29tcGxldGVBZGRUcmFuc2NlaXZlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwU2VuZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNlbmRlcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNlbmRlcjo6UlRDUnRwU2VuZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1J0cFNlbmRlcjo6c2V0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
UlRDUnRwU2VuZGVyOjpyZXBsYWNlVHJhY2spOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwU2VuZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTZW5kZXI6OnRyYWNr
SWQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2VuZGVyOjp0cmFja0tpbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDUnRwU2VuZGVyOjpzZXRNZWRpYVN0cmVhbUlkcyk6CisgICAgICAgIChX
ZWJDb3JlOjpSVENSdHBTZW5kZXI6OmlzU3RvcHBlZCk6CisgICAgICAgIChXZWJDb3JlOjpSVENS
dHBTZW5kZXI6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBTZW5kZXJSZWNlaXZlckJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNl
bmRlclJlY2VpdmVyQmFzZTo6dHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2VuZGVy
UmVjZWl2ZXJCYXNlOjpSVENSdHBTZW5kZXJSZWNlaXZlckJhc2UpOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRD
UnRwVHJhbnNjZWl2ZXI6OmdldE5leHRNaWQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwVHJh
bnNjZWl2ZXI6OlJUQ1J0cFRyYW5zY2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFRy
YW5zY2VpdmVyOjpkaXJlY3Rpb25TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VEaXJl
Y3Rpb25TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwVHJhbnNjZWl2ZXI6OmNvbmZp
Z3VyZVdpdGhEaWN0aW9uYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFRyYW5zY2VpdmVy
OjpoYXNTZW5kaW5nRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFRyYW5zY2Vp
dmVyOjplbmFibGVTZW5kaW5nRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFRy
YW5zY2VpdmVyOjpkaXNhYmxlU2VuZGluZ0RpcmVjdGlvbik6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBUcmFuc2NlaXZlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlJUQ1J0cFRyYW5zY2VpdmVyOjp+UlRDUnRwVHJhbnNjZWl2ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6UlRDUnRwVHJhbnNjZWl2ZXI6OmRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSVENS
dHBUcmFuc2NlaXZlcjo6c2V0RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFRy
YW5zY2VpdmVyOjpwcm92aXNpb25hbE1pZCk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBUcmFu
c2NlaXZlcjo6c2V0UHJvdmlzaW9uYWxNaWQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwVHJh
bnNjZWl2ZXI6Om1pZCk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBUcmFuc2NlaXZlcjo6c2V0
TWlkKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFRyYW5zY2VpdmVyOjpzZW5kZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UlRDUnRwVHJhbnNjZWl2ZXI6OnJlY2VpdmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlJUQ1J0cFRyYW5zY2VpdmVyOjpzdG9wcGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJU
Q1J0cFRyYW5zY2VpdmVyOjpzdG9wKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFRyYW5zY2VpdmVyLmlkbDogQWRkZWQuCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRW5k
cG9pbnQuaDoKKyAgICAgICAgQWRkZWQgY3JlYXRlTXV0ZWRSZW1vdGVTb3VyY2UoKSB0aGF0IGNy
ZWF0ZXMgYSBtdXRlZCByZW1vdGUgc291cmNlIHRoYXQgd2lsbCBiZWNvbWUgdW5tdXRlZAorICAg
ICAgICB3aGVuIG1lZGlhIGFycml2ZXMgZnJvbSB0aGUgcmVtb3RlIHBlZXIuCisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpSZWFsdGltZU1lZGlhU291cmNlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmg6CisgICAgICAg
ICogcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFFbmRwb2ludC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrTWVkaWFFbmRwb2ludDo6Y3JlYXRlTXV0ZWRSZW1vdGVTb3VyY2UpOgorICAgICAgICAq
IHBsYXRmb3JtL21vY2svTW9ja01lZGlhRW5kcG9pbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tS
ZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0
aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZU11dGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFs
dGltZUF1ZGlvU291cmNlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZSk6CisgICAgICAgICogcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlTXV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2U6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmg6CisKIDIwMTYtMDUtMjggIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBUZW1wbGF0aXplIE5vbmNv
cHlhYmxlRnVuY3Rpb24gY2xhc3Mgc2ltaWxhcmx5IHRvIHN0ZDo6ZnVuY3Rpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJD
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFF
bmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcAppbmRleCBmMWViNjRlLi4wNzJjZWJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVy
Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uY3BwCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVk
ZSAiTWVkaWFFbmRwb2ludFNlc3Npb25Db25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiTWVkaWFT
dHJlYW1UcmFjay5oIgogI2luY2x1ZGUgIlJUQ09mZmVyQW5zd2VyT3B0aW9ucy5oIgotI2luY2x1
ZGUgIlJUQ1J0cFNlbmRlci5oIgorI2luY2x1ZGUgIlJUQ1J0cFRyYW5zY2VpdmVyLmgiCiAjaW5j
bHVkZSAiU0RQUHJvY2Vzc29yLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIE1lZGlhRW5k
cG9pbnRQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlT2ZmZXJUYXNrKFJUQ09mZmVyT3B0aW9ucyYsIFNl
c3Npb25EZXNjcgogICAgIC8vIEFkZCBtZWRpYSBkZXNjcmlwdGlvbnMgZm9yIHNlbmRlcnMuCiAg
ICAgZm9yIChhdXRvJiBzZW5kZXIgOiBzZW5kZXJzKSB7CiAgICAgICAgIFJlZlB0cjxQZWVyTWVk
aWFEZXNjcmlwdGlvbj4gbWVkaWFEZXNjcmlwdGlvbiA9IFBlZXJNZWRpYURlc2NyaXB0aW9uOjpj
cmVhdGUoKTsKLSAgICAgICAgTWVkaWFTdHJlYW1UcmFjayYgdHJhY2sgPSBzZW5kZXItPnRyYWNr
KCk7CisgICAgICAgIE1lZGlhU3RyZWFtVHJhY2smIHRyYWNrID0gKnNlbmRlci0+dHJhY2soKTsK
IAogICAgICAgICBtZWRpYURlc2NyaXB0aW9uLT5zZXRNZWRpYVN0cmVhbUlkKHNlbmRlci0+bWVk
aWFTdHJlYW1JZHMoKVswXSk7CiAgICAgICAgIG1lZGlhRGVzY3JpcHRpb24tPnNldE1lZGlhU3Ry
ZWFtVHJhY2tJZCh0cmFjay5pZCgpKTsKQEAgLTI1NSw2ICsyNTUsMTggQEAgdm9pZCBNZWRpYUVu
ZHBvaW50UGVlckNvbm5lY3Rpb246OmdldFN0YXRzKE1lZGlhU3RyZWFtVHJhY2sqLCBQZWVyQ29u
bmVjdGlvbjo6U3QKICAgICBwcm9taXNlLnJlamVjdChOT1RfU1VQUE9SVEVEX0VSUik7CiB9CiAK
K1JlZlB0cjxSVENSdHBSZWNlaXZlcj4gTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpjcmVh
dGVSZWNlaXZlcihjb25zdCBTdHJpbmcmIHRyYW5zY2VpdmVyTWlkLCBjb25zdCBTdHJpbmcmIHRy
YWNrS2luZCwgY29uc3QgU3RyaW5nJiB0cmFja0lkKQoreworICAgIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlR5cGUgc291cmNlVHlwZSA9IHRyYWNrS2luZCA9PSAiYXVkaW8iID8gUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VHlwZTo6QXVkaW8gOiBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpWaWRlbzsK
KworICAgIC8vIENyZWF0ZSBhIG11dGVkIHJlbW90ZSBzb3VyY2UgdGhhdCB3aWxsIGJlIHVubXV0
ZWQgb25jZSBtZWRpYSBzdGFydHMgYXJyaXZpbmcuCisgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFT
b3VyY2U+IHJlbW90ZVNvdXJjZSA9IG1fbWVkaWFFbmRwb2ludC0+Y3JlYXRlTXV0ZWRSZW1vdGVT
b3VyY2UodHJhbnNjZWl2ZXJNaWQsIHNvdXJjZVR5cGUpOworICAgIFJlZlB0cjxNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZT4gcmVtb3RlVHJhY2tQcml2YXRlID0gTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGU6OmNyZWF0ZShXVEZNb3ZlKHJlbW90ZVNvdXJjZSksIHRyYWNrSWQpOworICAgIFJlZjxNZWRp
YVN0cmVhbVRyYWNrPiByZW1vdGVUcmFjayA9IE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZSgqbV9j
bGllbnQtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnJlbW90ZVRyYWNrUHJpdmF0ZSk7CisK
KyAgICByZXR1cm4gUlRDUnRwUmVjZWl2ZXI6OmNyZWF0ZShXVEZNb3ZlKHJlbW90ZVRyYWNrKSk7
Cit9CisKIHZvaWQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpyZXBsYWNlVHJhY2soUlRD
UnRwU2VuZGVyJiBzZW5kZXIsIE1lZGlhU3RyZWFtVHJhY2smIHdpdGhUcmFjaywgUGVlckNvbm5l
Y3Rpb246OlZvaWRQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc2VuZGVy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFF
bmRwb2ludFBlZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5oCmluZGV4IDk2N2QwYzkuLmYyNTgyZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRw
b2ludFBlZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uaApAQCAtNjksNiArNjksNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGdldFN0YXRzKE1lZGlhU3RyZWFtVHJhY2sqLCBQZWVyQ29ubmVjdGlv
bjo6U3RhdHNQcm9taXNlJiYpIG92ZXJyaWRlOwogCisgICAgUmVmUHRyPFJUQ1J0cFJlY2VpdmVy
PiBjcmVhdGVSZWNlaXZlcihjb25zdCBTdHJpbmcmIHRyYW5zY2VpdmVyTWlkLCBjb25zdCBTdHJp
bmcmIHRyYWNrS2luZCwgY29uc3QgU3RyaW5nJiB0cmFja0lkKSBvdmVycmlkZTsKICAgICB2b2lk
IHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImLCBNZWRpYVN0cmVhbVRyYWNrJiwgUGVlckNvbm5l
Y3Rpb246OlZvaWRQcm9taXNlJiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzdG9wKCkgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJD
b25uZWN0aW9uQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Q
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAppbmRleCBiZmZmNDRlLi43YjNkYzY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rp
b25CYWNrZW5kLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgUlRDSWNlQ2FuZGlkYXRlOwogY2xh
c3MgUlRDT2ZmZXJPcHRpb25zOwogY2xhc3MgUlRDUnRwUmVjZWl2ZXI7CiBjbGFzcyBSVENSdHBT
ZW5kZXI7CitjbGFzcyBSVENSdHBUcmFuc2NlaXZlcjsKIGNsYXNzIFJUQ1Nlc3Npb25EZXNjcmlw
dGlvbjsKIGNsYXNzIFJUQ1N0YXRzUmVzcG9uc2U7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OwpAQCAtMTAzLDYgKzEwNCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRT
dGF0cyhNZWRpYVN0cmVhbVRyYWNrKiwgUGVlckNvbm5lY3Rpb246OlN0YXRzUHJvbWlzZSYmKSA9
IDA7CiAKKyAgICB2aXJ0dWFsIFJlZlB0cjxSVENSdHBSZWNlaXZlcj4gY3JlYXRlUmVjZWl2ZXIo
Y29uc3QgU3RyaW5nJiB0cmFuc2NlaXZlck1pZCwgY29uc3QgU3RyaW5nJiB0cmFja0tpbmQsIGNv
bnN0IFN0cmluZyYgdHJhY2tJZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXBsYWNlVHJhY2so
UlRDUnRwU2VuZGVyJiwgTWVkaWFTdHJlYW1UcmFjayYsIFBlZXJDb25uZWN0aW9uOjpWb2lkUHJv
bWlzZSYmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5j
cHAKaW5kZXggZTNjODE0Yi4uNjk5YmU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTQ5LDYgKzQ5
LDcgQEAKICNpbmNsdWRlICJSVENPZmZlckFuc3dlck9wdGlvbnMuaCIKICNpbmNsdWRlICJSVENT
ZXNzaW9uRGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJSVENUcmFja0V2ZW50LmgiCisjaW5jbHVk
ZSAiVVVJRC5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvQmFzZTY0Lmg+CiAKQEAgLTE0Nyw2ICsxNDgsNjEgQEAgdm9pZCBSVENQZWVyQ29ubmVjdGlv
bjo6cmVtb3ZlVHJhY2soUlRDUnRwU2VuZGVyJiBzZW5kZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ICAgIG1fYmFja2VuZC0+bWFya0FzTmVlZGluZ05lZ290aWF0aW9uKCk7CiB9CiAKK1JlZlB0cjxS
VENSdHBUcmFuc2NlaXZlcj4gUlRDUGVlckNvbm5lY3Rpb246OmFkZFRyYW5zY2VpdmVyKFJlZjxN
ZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBjb25zdCBEaWN0aW9uYXJ5JiBpbml0LCBFeGNlcHRp
b25Db2RlJiBlYykKK3sKKyAgICBpZiAobV9zaWduYWxpbmdTdGF0ZSA9PSBTaWduYWxpbmdTdGF0
ZTo6Q2xvc2VkKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKworICAgIFN0cmluZyB0cmFuc2NlaXZlck1pZCA9IFJUQ1J0
cFRyYW5zY2VpdmVyOjpnZXROZXh0TWlkKCk7CisgICAgY29uc3QgU3RyaW5nJiB0cmFja0tpbmQg
PSB0cmFjay0+a2luZCgpOworICAgIGNvbnN0IFN0cmluZyYgdHJhY2tJZCA9IHRyYWNrLT5pZCgp
OworCisgICAgUmVmUHRyPFJUQ1J0cFNlbmRlcj4gc2VuZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVh
dGUoV1RGTW92ZSh0cmFjayksIFZlY3RvcjxTdHJpbmc+KCksICp0aGlzKTsKKyAgICBSZWZQdHI8
UlRDUnRwUmVjZWl2ZXI+IHJlY2VpdmVyID0gbV9iYWNrZW5kLT5jcmVhdGVSZWNlaXZlcih0cmFu
c2NlaXZlck1pZCwgdHJhY2tLaW5kLCB0cmFja0lkKTsKKyAgICBSZWY8UlRDUnRwVHJhbnNjZWl2
ZXI+IHRyYW5zY2VpdmVyID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmNyZWF0ZShXVEZNb3ZlKHNlbmRl
ciksIFdURk1vdmUocmVjZWl2ZXIpKTsKKyAgICB0cmFuc2NlaXZlci0+c2V0UHJvdmlzaW9uYWxN
aWQodHJhbnNjZWl2ZXJNaWQpOworCisgICAgcmV0dXJuIGNvbXBsZXRlQWRkVHJhbnNjZWl2ZXIo
V1RGTW92ZSh0cmFuc2NlaXZlciksIGluaXQsIGVjKTsKK30KKworUmVmUHRyPFJUQ1J0cFRyYW5z
Y2VpdmVyPiBSVENQZWVyQ29ubmVjdGlvbjo6YWRkVHJhbnNjZWl2ZXIoY29uc3QgU3RyaW5nJiBr
aW5kLCBjb25zdCBEaWN0aW9uYXJ5JiBpbml0LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBp
ZiAobV9zaWduYWxpbmdTdGF0ZSA9PSBTaWduYWxpbmdTdGF0ZTo6Q2xvc2VkKSB7CisgICAgICAg
IGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0K
KworICAgIGlmIChraW5kICE9ICJhdWRpbyIgJiYga2luZCAhPSAidmlkZW8iKSB7CisgICAgICAg
IGVjID0gVHlwZUVycm9yOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBT
dHJpbmcgdHJhbnNjZWl2ZXJNaWQgPSBSVENSdHBUcmFuc2NlaXZlcjo6Z2V0TmV4dE1pZCgpOwor
ICAgIFN0cmluZyB0cmFja0lkID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOworCisgICAg
UmVmUHRyPFJUQ1J0cFNlbmRlcj4gc2VuZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUoa2luZCwg
VmVjdG9yPFN0cmluZz4oKSwgKnRoaXMpOworICAgIFJlZlB0cjxSVENSdHBSZWNlaXZlcj4gcmVj
ZWl2ZXIgPSBtX2JhY2tlbmQtPmNyZWF0ZVJlY2VpdmVyKHRyYW5zY2VpdmVyTWlkLCBraW5kLCB0
cmFja0lkKTsKKyAgICBSZWY8UlRDUnRwVHJhbnNjZWl2ZXI+IHRyYW5zY2VpdmVyID0gUlRDUnRw
VHJhbnNjZWl2ZXI6OmNyZWF0ZShXVEZNb3ZlKHNlbmRlciksIFdURk1vdmUocmVjZWl2ZXIpKTsK
KyAgICB0cmFuc2NlaXZlci0+c2V0UHJvdmlzaW9uYWxNaWQodHJhbnNjZWl2ZXJNaWQpOworCisg
ICAgcmV0dXJuIGNvbXBsZXRlQWRkVHJhbnNjZWl2ZXIoV1RGTW92ZSh0cmFuc2NlaXZlciksIGlu
aXQsIGVjKTsKK30KKworUmVmUHRyPFJUQ1J0cFRyYW5zY2VpdmVyPiBSVENQZWVyQ29ubmVjdGlv
bjo6Y29tcGxldGVBZGRUcmFuc2NlaXZlcihSZWY8UlRDUnRwVHJhbnNjZWl2ZXI+JiYgdHJhbnNj
ZWl2ZXIsIGNvbnN0IERpY3Rpb25hcnkmIGluaXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAg
IGlmICghdHJhbnNjZWl2ZXItPmNvbmZpZ3VyZVdpdGhEaWN0aW9uYXJ5KGluaXQpKSB7CisgICAg
ICAgIGVjID0gVHlwZUVycm9yOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAg
ICBtX3RyYW5zY2VpdmVyU2V0LmFwcGVuZCh0cmFuc2NlaXZlci5jb3B5UmVmKCkpOworICAgIG1f
YmFja2VuZC0+bWFya0FzTmVlZGluZ05lZ290aWF0aW9uKCk7CisKKyAgICByZXR1cm4gV1RGTW92
ZSh0cmFuc2NlaXZlcik7Cit9CisKIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnF1ZXVlZENyZWF0
ZU9mZmVyKGNvbnN0IERpY3Rpb25hcnkmIG9mZmVyT3B0aW9ucywgU2Vzc2lvbkRlc2NyaXB0aW9u
UHJvbWlzZSYmIHByb21pc2UpCiB7CiAgICAgaWYgKG1fc2lnbmFsaW5nU3RhdGUgPT0gU2lnbmFs
aW5nU3RhdGU6OkNsb3NlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCmluZGV4IDBjNTY1ZWQuLjhlNTlmODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uLmgKQEAgLTQxLDggKzQxLDcgQEAKIC8vIEZJWE1FOiBXb3JrYXJvdW5kIGZvciBi
aW5kaW5ncyBidWcgaHR0cDovL3dlYmtpdC5vcmcvYi8xNTAxMjEKICNpbmNsdWRlICJKU01lZGlh
U3RyZWFtLmgiCiAjaW5jbHVkZSAiUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgiCi0jaW5jbHVkZSAi
UlRDUnRwUmVjZWl2ZXIuaCIKLSNpbmNsdWRlICJSVENSdHBTZW5kZXIuaCIKKyNpbmNsdWRlICJS
VENSdHBUcmFuc2NlaXZlci5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTY2LDEw
ICs2NSwxNCBAQCBwdWJsaWM6CiAKICAgICBWZWN0b3I8UmVmUHRyPFJUQ1J0cFNlbmRlcj4+IGdl
dFNlbmRlcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3NlbmRlclNldDsgfQogICAgIFZl
Y3RvcjxSZWZQdHI8UlRDUnRwUmVjZWl2ZXI+PiBnZXRSZWNlaXZlcnMoKSBjb25zdCB7IHJldHVy
biBtX3JlY2VpdmVyU2V0OyB9CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxSVENSdHBUcmFuc2Nl
aXZlcj4+JiBnZXRUcmFuc2NlaXZlcnMoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zY2VpdmVyU2V0
OyB9CiAKICAgICBSZWZQdHI8UlRDUnRwU2VuZGVyPiBhZGRUcmFjayhSZWY8TWVkaWFTdHJlYW1U
cmFjaz4mJiwgVmVjdG9yPE1lZGlhU3RyZWFtKj4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lk
IHJlbW92ZVRyYWNrKFJUQ1J0cFNlbmRlciYsIEV4Y2VwdGlvbkNvZGUmKTsKIAorICAgIFJlZlB0
cjxSVENSdHBUcmFuc2NlaXZlcj4gYWRkVHJhbnNjZWl2ZXIoUmVmPE1lZGlhU3RyZWFtVHJhY2s+
JiYsIGNvbnN0IERpY3Rpb25hcnkmIGluaXQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBSZWZQdHI8
UlRDUnRwVHJhbnNjZWl2ZXI+IGFkZFRyYW5zY2VpdmVyKGNvbnN0IFN0cmluZyYga2luZCwgY29u
c3QgRGljdGlvbmFyeSYgaW5pdCwgRXhjZXB0aW9uQ29kZSYpOworCiAgICAgdm9pZCBxdWV1ZWRD
cmVhdGVPZmZlcihjb25zdCBEaWN0aW9uYXJ5JiBvZmZlck9wdGlvbnMsIFBlZXJDb25uZWN0aW9u
OjpTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNlJiYpOwogICAgIHZvaWQgcXVldWVkQ3JlYXRlQW5z
d2VyKGNvbnN0IERpY3Rpb25hcnkmIGFuc3dlck9wdGlvbnMsIFBlZXJDb25uZWN0aW9uOjpTZXNz
aW9uRGVzY3JpcHRpb25Qcm9taXNlJiYpOwogCkBAIC0xMDksNiArMTEyLDggQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBSVENQZWVyQ29ubmVjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
UmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+JiYsIEV4Y2VwdGlvbkNvZGUmKTsKIAorICAgIFJlZlB0
cjxSVENSdHBUcmFuc2NlaXZlcj4gY29tcGxldGVBZGRUcmFuc2NlaXZlcihSZWY8UlRDUnRwVHJh
bnNjZWl2ZXI+JiYsIGNvbnN0IERpY3Rpb25hcnkmIGluaXQsIEV4Y2VwdGlvbkNvZGUmKTsKKwog
ICAgIC8vIEV2ZW50VGFyZ2V0IGltcGxlbWVudGF0aW9uLgogICAgIHZvaWQgcmVmRXZlbnRUYXJn
ZXQoKSBvdmVycmlkZSB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3Zl
cnJpZGUgeyBkZXJlZigpOyB9CkBAIC0xNDAsNiArMTQ1LDcgQEAgcHJpdmF0ZToKIAogICAgIFZl
Y3RvcjxSZWZQdHI8UlRDUnRwU2VuZGVyPj4gbV9zZW5kZXJTZXQ7CiAgICAgVmVjdG9yPFJlZlB0
cjxSVENSdHBSZWNlaXZlcj4+IG1fcmVjZWl2ZXJTZXQ7CisgICAgVmVjdG9yPFJlZlB0cjxSVENS
dHBUcmFuc2NlaXZlcj4+IG1fdHJhbnNjZWl2ZXJTZXQ7CiAKICAgICBWZWN0b3I8UmVmUHRyPFJU
Q0RhdGFDaGFubmVsPj4gbV9kYXRhQ2hhbm5lbHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGwKaW5kZXggYjBh
ZGVhMy4uMTVmNDExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGwKQEAgLTYwLDEwICs2MCwxNCBAQAogCiAg
ICAgc2VxdWVuY2U8UlRDUnRwU2VuZGVyPiBnZXRTZW5kZXJzKCk7CiAgICAgc2VxdWVuY2U8UlRD
UnRwUmVjZWl2ZXI+IGdldFJlY2VpdmVycygpOworICAgIHNlcXVlbmNlPFJUQ1J0cFRyYW5zY2Vp
dmVyPiBnZXRUcmFuc2NlaXZlcnMoKTsKIAogICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNl
c0V4Y2VwdGlvbl0gUlRDUnRwU2VuZGVyIGFkZFRyYWNrKE1lZGlhU3RyZWFtVHJhY2sgdHJhY2ss
IE1lZGlhU3RyZWFtLi4uIHN0cmVhbXMpOwogICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNl
c0V4Y2VwdGlvbl0gdm9pZCByZW1vdmVUcmFjayhSVENSdHBTZW5kZXIgc2VuZGVyKTsKIAorICAg
IFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNlc0V4Y2VwdGlvbl0gUlRDUnRwVHJhbnNjZWl2ZXIg
YWRkVHJhbnNjZWl2ZXIoTWVkaWFTdHJlYW1UcmFjayB0cmFjaywgb3B0aW9uYWwgRGljdGlvbmFy
eSBpbml0KTsKKyAgICBbU3RyaWN0VHlwZUNoZWNraW5nLCBSYWlzZXNFeGNlcHRpb25dIFJUQ1J0
cFRyYW5zY2VpdmVyIGFkZFRyYW5zY2VpdmVyKERPTVN0cmluZyBraW5kLCBvcHRpb25hbCBEaWN0
aW9uYXJ5IGluaXQpOworCiAgICAgW0pTQnVpbHRpbl0gUHJvbWlzZSBzZXRMb2NhbERlc2NyaXB0
aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbik7CiAgICAgLy8gTGVnYWN5IHNp
Z25hdHVyZTogUHJvbWlzZSBzZXRMb2NhbERlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlv
biBkZXNjcmlwdGlvbgogICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWb2lkQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCmluZGV4IDE0Mzcy
ZDIuLjJlZjMxYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUnRwU2VuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFNlbmRlci5jcHAKQEAgLTM3LDI4ICszNyw1MCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVJUQ1J0cFNlbmRlcjo6UlRDUnRwU2VuZGVyKFJlZjxNZWRpYVN0cmVhbVRyYWNr
PiYmIHRyYWNrLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBSVENSdHBTZW5kZXJD
bGllbnQmIGNsaWVudCkKLSAgICA6IFJUQ1J0cFNlbmRlclJlY2VpdmVyQmFzZShXVEZNb3ZlKHRy
YWNrKSkKK1JlZjxSVENSdHBTZW5kZXI+IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKFJlZjxNZWRpYVN0
cmVhbVRyYWNrPiYmIHRyYWNrLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBSVENS
dHBTZW5kZXJDbGllbnQmIGNsaWVudCkKK3sKKyAgICBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCA9
IHRyYWNrLT5raW5kKCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDUnRwU2VuZGVyKFdU
Rk1vdmUodHJhY2spLCB0cmFja0tpbmQsIFdURk1vdmUobWVkaWFTdHJlYW1JZHMpLCBjbGllbnQp
KTsKK30KKworUmVmPFJUQ1J0cFNlbmRlcj4gUlRDUnRwU2VuZGVyOjpjcmVhdGUoY29uc3QgU3Ry
aW5nJiB0cmFja0tpbmQsIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMsIFJUQ1J0cFNl
bmRlckNsaWVudCYgY2xpZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ1J0cFNl
bmRlcihudWxscHRyLCB0cmFja0tpbmQsIFdURk1vdmUobWVkaWFTdHJlYW1JZHMpLCBjbGllbnQp
KTsKK30KKworUlRDUnRwU2VuZGVyOjpSVENSdHBTZW5kZXIoUmVmUHRyPE1lZGlhU3RyZWFtVHJh
Y2s+JiYgdHJhY2ssIGNvbnN0IFN0cmluZyYgdHJhY2tLaW5kLCBWZWN0b3I8U3RyaW5nPiYmIG1l
ZGlhU3RyZWFtSWRzLCBSVENSdHBTZW5kZXJDbGllbnQmIGNsaWVudCkKKyAgICA6IFJUQ1J0cFNl
bmRlclJlY2VpdmVyQmFzZSgpCisgICAgLCBtX3RyYWNrS2luZCh0cmFja0tpbmQpCiAgICAgLCBt
X21lZGlhU3RyZWFtSWRzKFdURk1vdmUobWVkaWFTdHJlYW1JZHMpKQogICAgICwgbV9jbGllbnQo
JmNsaWVudCkKIHsKLSAgICAvLyBUaGUgb3JpZ2luYWwgdHJhY2sgaWQgaXMgYWx3YXlzIHVzZWQg
aW4gbmVnb3RpYXRpb24gZXZlbiBpZiB0aGUgdHJhY2sgaXMgcmVwbGFjZWQuCi0gICAgbV90cmFj
a0lkID0gbV90cmFjay0+aWQoKTsKKyAgICBpZiAodHJhY2spCisgICAgICAgIHNldFRyYWNrKFdU
Rk1vdmUodHJhY2spKTsKK30KKwordm9pZCBSVENSdHBTZW5kZXI6OnNldFRyYWNrKFJlZlB0cjxN
ZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrKQoreworICAgIC8vIFNhdmUgdGhlIGlkIGZyb20gdGhl
IGZpcnN0IG5vbi1udWxsIHRyYWNrIHNldC4gVGhhdCBpZCB3aWxsIGJlIHVzZWQgdG8gbmVnb3Rp
YXRlIHRoZSBzZW5kZXIKKyAgICAvLyBldmVuIGlmIHRoZSB0cmFjayBpcyByZXBsYWNlZC4KKyAg
ICBpZiAoIW1fdHJhY2sgJiYgdHJhY2spCisgICAgICAgIG1fdHJhY2tJZCA9IHRyYWNrLT5pZCgp
OworCisgICAgbV90cmFjayA9IFdURk1vdmUodHJhY2spOwogfQogCi12b2lkIFJUQ1J0cFNlbmRl
cjo6cmVwbGFjZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2smIHdpdGhUcmFjaywgUGVlckNvbm5lY3Rp
b246OlZvaWRQcm9taXNlJiYgcHJvbWlzZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFJUQ1J0
cFNlbmRlcjo6cmVwbGFjZVRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHdpdGhUcmFjaywg
UGVlckNvbm5lY3Rpb246OlZvaWRQcm9taXNlJiYgcHJvbWlzZSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7Ci0gICAgaWYgKCFtX2NsaWVudCkgeworICAgIGlmIChpc1N0b3BwZWQoKSkgewogICAgICAg
ICBwcm9taXNlLnJlamVjdChJTlZBTElEX1NUQVRFX0VSUik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBpZiAobV90cmFjay0+a2luZCgpICE9IHdpdGhUcmFjay5raW5kKCkpIHsKKyAg
ICBpZiAobV90cmFja0tpbmQgIT0gd2l0aFRyYWNrLT5raW5kKCkpIHsKICAgICAgICAgZWMgPSBU
eXBlRXJyb3I7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2NsaWVudC0+cmVwbGFj
ZVRyYWNrKCp0aGlzLCB3aXRoVHJhY2ssIFdURk1vdmUocHJvbWlzZSkpOworICAgIG1fY2xpZW50
LT5yZXBsYWNlVHJhY2soKnRoaXMsIFdURk1vdmUod2l0aFRyYWNrKSwgV1RGTW92ZShwcm9taXNl
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5oCmluZGV4IDYwYjk5MjAuLmRhOWU1ZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2Vu
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5k
ZXIuaApAQCAtNDgsMjIgKzQ4LDI2IEBAIHB1YmxpYzoKIAogY2xhc3MgUlRDUnRwU2VuZGVyIDog
cHVibGljIFJUQ1J0cFNlbmRlclJlY2VpdmVyQmFzZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxSVENSdHBTZW5kZXI+IGNyZWF0ZShSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgVmVj
dG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgUlRDUnRwU2VuZGVyQ2xpZW50JiBjbGllbnQp
Ci0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSVENSdHBTZW5kZXIoV1RGTW92
ZSh0cmFjayksIFdURk1vdmUobWVkaWFTdHJlYW1JZHMpLCBjbGllbnQpKTsKLSAgICB9CisgICAg
c3RhdGljIFJlZjxSVENSdHBTZW5kZXI+IGNyZWF0ZShSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwg
VmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgUlRDUnRwU2VuZGVyQ2xpZW50Jik7Cisg
ICAgc3RhdGljIFJlZjxSVENSdHBTZW5kZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHRyYWNrS2lu
ZCwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgUlRDUnRwU2VuZGVyQ2xpZW50Jik7
CisKKyAgICBjb25zdCBTdHJpbmcmIHRyYWNrSWQoKSBjb25zdCB7IHJldHVybiBtX3RyYWNrSWQ7
IH0KKyAgICBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhY2tL
aW5kOyB9CiAKLSAgICBjb25zdCBTdHJpbmcmIHRyYWNrSWQoKSB7IHJldHVybiBtX3RyYWNrSWQ7
IH0KICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgbWVkaWFTdHJlYW1JZHMoKSBjb25zdCB7IHJl
dHVybiBtX21lZGlhU3RyZWFtSWRzOyB9CisgICAgdm9pZCBzZXRNZWRpYVN0cmVhbUlkcyhWZWN0
b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzKSB7IG1fbWVkaWFTdHJlYW1JZHMgPSBXVEZNb3Zl
KG1lZGlhU3RyZWFtSWRzKTsgfQogCisgICAgYm9vbCBpc1N0b3BwZWQoKSBjb25zdCB7IHJldHVy
biBtX2NsaWVudCA9PSBudWxscHRyOyB9CiAgICAgdm9pZCBzdG9wKCkgeyBtX2NsaWVudCA9IG51
bGxwdHI7IH0KKyAgICB2b2lkIHNldFRyYWNrKFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmKTsK
IAotICAgIHZvaWQgcmVwbGFjZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2smLCBQZWVyQ29ubmVjdGlv
bjo6Vm9pZFByb21pc2UmJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcmVwbGFjZVRyYWNr
KFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBQZWVyQ29ubmVjdGlvbjo6Vm9pZFByb21pc2UmJiwg
RXhjZXB0aW9uQ29kZSYpOwogCiBwcml2YXRlOgotICAgIFJUQ1J0cFNlbmRlcihSZWY8TWVkaWFT
dHJlYW1UcmFjaz4mJiwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgUlRDUnRwU2Vu
ZGVyQ2xpZW50Jik7CisgICAgUlRDUnRwU2VuZGVyKFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYm
LCBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlk
cywgUlRDUnRwU2VuZGVyQ2xpZW50Jik7CiAKICAgICBTdHJpbmcgbV90cmFja0lkOworICAgIFN0
cmluZyBtX3RyYWNrS2luZDsKICAgICBWZWN0b3I8U3RyaW5nPiBtX21lZGlhU3RyZWFtSWRzOwog
ICAgIFJUQ1J0cFNlbmRlckNsaWVudCogbV9jbGllbnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXJSZWNlaXZlckJhc2UuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyUmVjZWl2ZXJC
YXNlLmgKaW5kZXggMzljOWViYy4uZDUxMGRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXJSZWNlaXZlckJhc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlclJlY2VpdmVyQmFzZS5o
CkBAIC00NiwxNCArNDYsMTcgQEAgY2xhc3MgUlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlIDogcHVi
bGljIFJlZkNvdW50ZWQ8UlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlPiwgcHUKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5SVENSdHBTZW5kZXJSZWNlaXZlckJhc2UoKSB7IH0KIAotICAgIE1lZGlhU3Ry
ZWFtVHJhY2smIHRyYWNrKCkgeyByZXR1cm4gbV90cmFjazsgfQorICAgIE1lZGlhU3RyZWFtVHJh
Y2sqIHRyYWNrKCkgeyByZXR1cm4gbV90cmFjay5nZXQoKTsgfQogCiBwcm90ZWN0ZWQ6CisgICAg
UlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlKCkKKyAgICB7IH0KKwogICAgIFJUQ1J0cFNlbmRlclJl
Y2VpdmVyQmFzZShSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaykKICAgICAgICAgOiBtX3Ry
YWNrKFdURk1vdmUodHJhY2spKQogICAgIHsgfQogCi0gICAgUmVmPE1lZGlhU3RyZWFtVHJhY2s+
IG1fdHJhY2s7CisgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IG1fdHJhY2s7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmJmMzVhNzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVyLmNwcApAQCAtMCwwICsxLDEz
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
ICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBF
cmljc3NvbiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICog
ICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUlRDUnRwVHJhbnNjZWl2
ZXIuaCIKKworI2lmIEVOQUJMRShXRUJfUlRDKQorCisjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgor
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
KyNkZWZpbmUgU1RSSU5HX0ZVTkNUSU9OKG5hbWUpIFwKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5n
JiBuYW1lIyNTdHJpbmcoKSBcCisgICAgeyBcCisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxjb25zdCBTdHJpbmc+IG5hbWUgeyBBU0NJSUxpdGVyYWwoI25hbWUpIH07IFwKKyAgICAgICAg
cmV0dXJuIG5hbWU7IFwKKyAgICB9CisKK1NUUklOR19GVU5DVElPTihzZW5kcmVjdikKK1NUUklO
R19GVU5DVElPTihzZW5kb25seSkKK1NUUklOR19GVU5DVElPTihyZWN2b25seSkKK1NUUklOR19G
VU5DVElPTihpbmFjdGl2ZSkKKworUmVmPFJUQ1J0cFRyYW5zY2VpdmVyPiBSVENSdHBUcmFuc2Nl
aXZlcjo6Y3JlYXRlKFJlZlB0cjxSVENSdHBTZW5kZXI+JiYgc2VuZGVyLCBSZWZQdHI8UlRDUnRw
UmVjZWl2ZXI+JiYgcmVjZWl2ZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDUnRw
VHJhbnNjZWl2ZXIoV1RGTW92ZShzZW5kZXIpLCBXVEZNb3ZlKHJlY2VpdmVyKSkpOworfQorCitT
dHJpbmcgUlRDUnRwVHJhbnNjZWl2ZXI6OmdldE5leHRNaWQoKQoreworICAgIHN0YXRpYyB1bnNp
Z25lZCBtaWQgPSAwOworICAgIHJldHVybiBTdHJpbmc6Om51bWJlcigrK21pZCk7Cit9CisKK1JU
Q1J0cFRyYW5zY2VpdmVyOjpSVENSdHBUcmFuc2NlaXZlcihSZWZQdHI8UlRDUnRwU2VuZGVyPiYm
IHNlbmRlciwgUmVmUHRyPFJUQ1J0cFJlY2VpdmVyPiYmIHJlY2VpdmVyKQorICAgIDogbV9kaXJl
Y3Rpb24oRGlyZWN0aW9uOjpTZW5kcmVjdikKKyAgICAsIG1fc2VuZGVyKHNlbmRlcikKKyAgICAs
IG1fcmVjZWl2ZXIocmVjZWl2ZXIpCit7Cit9CisKK2NvbnN0IFN0cmluZyYgUlRDUnRwVHJhbnNj
ZWl2ZXI6OmRpcmVjdGlvblN0cmluZygpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX2RpcmVjdGlv
bikgeworICAgIGNhc2UgRGlyZWN0aW9uOjpTZW5kcmVjdjogcmV0dXJuIHNlbmRyZWN2U3RyaW5n
KCk7CisgICAgY2FzZSBEaXJlY3Rpb246OlNlbmRvbmx5OiByZXR1cm4gc2VuZG9ubHlTdHJpbmco
KTsKKyAgICBjYXNlIERpcmVjdGlvbjo6UmVjdm9ubHk6IHJldHVybiByZWN2b25seVN0cmluZygp
OworICAgIGNhc2UgRGlyZWN0aW9uOjpJbmFjdGl2ZTogcmV0dXJuIGluYWN0aXZlU3RyaW5nKCk7
CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7Cit9CisKK3N0YXRpYyBib29sIHBhcnNlRGlyZWN0aW9uU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nLCBSVENSdHBUcmFuc2NlaXZlcjo6RGlyZWN0aW9uJiBvdXREaXJlY3Rpb24pCit7
CisgICAgaWYgKHN0cmluZyA9PSBzZW5kcmVjdlN0cmluZygpKQorICAgICAgICBvdXREaXJlY3Rp
b24gPSBSVENSdHBUcmFuc2NlaXZlcjo6RGlyZWN0aW9uOjpTZW5kcmVjdjsKKyAgICBlbHNlIGlm
IChzdHJpbmcgPT0gc2VuZG9ubHlTdHJpbmcoKSkKKyAgICAgICAgb3V0RGlyZWN0aW9uID0gUlRD
UnRwVHJhbnNjZWl2ZXI6OkRpcmVjdGlvbjo6U2VuZG9ubHk7CisgICAgZWxzZSBpZiAoc3RyaW5n
ID09IHJlY3Zvbmx5U3RyaW5nKCkpCisgICAgICAgIG91dERpcmVjdGlvbiA9IFJUQ1J0cFRyYW5z
Y2VpdmVyOjpEaXJlY3Rpb246OlJlY3Zvbmx5OworICAgIGVsc2UgaWYgKHN0cmluZyA9PSBpbmFj
dGl2ZVN0cmluZygpKQorICAgICAgICBvdXREaXJlY3Rpb24gPSBSVENSdHBUcmFuc2NlaXZlcjo6
RGlyZWN0aW9uOjpJbmFjdGl2ZTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIFJUQ1J0cFRyYW5zY2VpdmVyOjpjb25maWd1cmVX
aXRoRGljdGlvbmFyeShjb25zdCBEaWN0aW9uYXJ5JiBkaWN0aW9uYXJ5KQoreworICAgIFN0cmlu
ZyBkaXJlY3Rpb247CisgICAgaWYgKGRpY3Rpb25hcnkuZ2V0KCJkaXJlY3Rpb24iLCBkaXJlY3Rp
b24pKSB7CisgICAgICAgIGlmICghcGFyc2VEaXJlY3Rpb25TdHJpbmcoZGlyZWN0aW9uLCBtX2Rp
cmVjdGlvbikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gRklN
WEU6IGZpeCBzdHJlYW1zCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgUlRDUnRwVHJhbnNj
ZWl2ZXI6Omhhc1NlbmRpbmdEaXJlY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX2RpcmVj
dGlvbiA9PSBEaXJlY3Rpb246OlNlbmRyZWN2IHx8IG1fZGlyZWN0aW9uID09IERpcmVjdGlvbjo6
U2VuZG9ubHk7Cit9CisKK3ZvaWQgUlRDUnRwVHJhbnNjZWl2ZXI6OmVuYWJsZVNlbmRpbmdEaXJl
Y3Rpb24oKQoreworICAgIGlmIChtX2RpcmVjdGlvbiA9PSBEaXJlY3Rpb246OlJlY3Zvbmx5KQor
ICAgICAgICBtX2RpcmVjdGlvbiA9IERpcmVjdGlvbjo6U2VuZHJlY3Y7CisgICAgZWxzZSBpZiAo
bV9kaXJlY3Rpb24gPT0gRGlyZWN0aW9uOjpJbmFjdGl2ZSkKKyAgICAgICAgbV9kaXJlY3Rpb24g
PSBEaXJlY3Rpb246OlNlbmRvbmx5OworfQorCit2b2lkIFJUQ1J0cFRyYW5zY2VpdmVyOjpkaXNh
YmxlU2VuZGluZ0RpcmVjdGlvbigpCit7CisgICAgaWYgKG1fZGlyZWN0aW9uID09IERpcmVjdGlv
bjo6U2VuZHJlY3YpCisgICAgICAgIG1fZGlyZWN0aW9uID0gRGlyZWN0aW9uOjpSZWN2b25seTsK
KyAgICBlbHNlIGlmIChtX2RpcmVjdGlvbiA9PSBEaXJlY3Rpb246OlNlbmRvbmx5KQorICAgICAg
ICBtX2RpcmVjdGlvbiA9IERpcmVjdGlvbjo6SW5hY3RpdmU7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2NlaXZlci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2NlaXZlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlZDYzOWMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVyLmgKQEAg
LTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgRXJpY3Nzb24gQUIuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhl
IG5hbWUgb2YgRXJpY3Nzb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAg
ICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
IHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBSVENSdHBUcmFuc2NlaXZlcl9oCisjZGVmaW5l
IFJUQ1J0cFRyYW5zY2VpdmVyX2gKKworI2lmIEVOQUJMRShXRUJfUlRDKQorCisjaW5jbHVkZSAi
UlRDUnRwUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJSVENSdHBTZW5kZXIuaCIKKyNpbmNsdWRlICJT
Y3JpcHRXcmFwcGFibGUuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBEaWN0aW9uYXJ5OworCitjbGFzcyBSVENSdHBUcmFuc2Nl
aXZlciA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ1J0cFRyYW5zY2VpdmVyPiwgcHVibGljIFNjcmlw
dFdyYXBwYWJsZSB7CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBEaXJlY3Rpb24geworICAgICAg
ICBTZW5kcmVjdiwKKyAgICAgICAgU2VuZG9ubHksCisgICAgICAgIFJlY3Zvbmx5LAorICAgICAg
ICBJbmFjdGl2ZQorICAgIH07CisKKyAgICBzdGF0aWMgUmVmPFJUQ1J0cFRyYW5zY2VpdmVyPiBj
cmVhdGUoUmVmUHRyPFJUQ1J0cFNlbmRlcj4mJiwgUmVmUHRyPFJUQ1J0cFJlY2VpdmVyPiYmKTsK
KyAgICB2aXJ0dWFsIH5SVENSdHBUcmFuc2NlaXZlcigpIHsgfQorCisgICAgYm9vbCBjb25maWd1
cmVXaXRoRGljdGlvbmFyeShjb25zdCBEaWN0aW9uYXJ5Jik7CisKKyAgICBib29sIGhhc1NlbmRp
bmdEaXJlY3Rpb24oKSBjb25zdDsKKyAgICB2b2lkIGVuYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsK
KyAgICB2b2lkIGRpc2FibGVTZW5kaW5nRGlyZWN0aW9uKCk7CisKKyAgICBjb25zdCBTdHJpbmcm
IGRpcmVjdGlvblN0cmluZygpIGNvbnN0OworICAgIERpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX2RpcmVjdGlvbjsgfQorICAgIHZvaWQgc2V0RGlyZWN0aW9uKERpcmVjdGlv
biBkaXJlY3Rpb24pIHsgbV9kaXJlY3Rpb24gPSBkaXJlY3Rpb247IH0KKworICAgIGNvbnN0IFN0
cmluZyYgcHJvdmlzaW9uYWxNaWQoKSBjb25zdCB7IHJldHVybiBtX3Byb3Zpc2lvbmFsTWlkOyB9
CisgICAgdm9pZCBzZXRQcm92aXNpb25hbE1pZChjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsTWlk
KSB7IG1fcHJvdmlzaW9uYWxNaWQgPSBwcm92aXNpb25hbE1pZDsgfQorCisgICAgY29uc3QgU3Ry
aW5nJiBtaWQoKSBjb25zdCB7IHJldHVybiBtX21pZDsgfQorICAgIHZvaWQgc2V0TWlkKGNvbnN0
IFN0cmluZyYgbWlkKSB7IG1fbWlkID0gbWlkOyB9CisKKyAgICBSVENSdHBTZW5kZXIqIHNlbmRl
cigpIGNvbnN0IHsgcmV0dXJuIG1fc2VuZGVyLmdldCgpOyB9CisgICAgUlRDUnRwUmVjZWl2ZXIq
IHJlY2VpdmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZWNlaXZlci5nZXQoKTsgfQorCisgICAgYm9v
bCBzdG9wcGVkKCkgY29uc3QgeyByZXR1cm4gbV9zdG9wcGVkOyB9CisgICAgdm9pZCBzdG9wKCkg
eyBtX3N0b3BwZWQgPSB0cnVlOyB9CisKKyAgICBzdGF0aWMgU3RyaW5nIGdldE5leHRNaWQoKTsK
KworcHJpdmF0ZToKKyAgICBSVENSdHBUcmFuc2NlaXZlcihSZWZQdHI8UlRDUnRwU2VuZGVyPiYm
LCBSZWZQdHI8UlRDUnRwUmVjZWl2ZXI+JiYpOworCisgICAgU3RyaW5nIG1fcHJvdmlzaW9uYWxN
aWQ7CisgICAgU3RyaW5nIG1fbWlkOworCisgICAgRGlyZWN0aW9uIG1fZGlyZWN0aW9uOworCisg
ICAgUmVmUHRyPFJUQ1J0cFNlbmRlcj4gbV9zZW5kZXI7CisgICAgUmVmUHRyPFJUQ1J0cFJlY2Vp
dmVyPiBtX3JlY2VpdmVyOworCisgICAgYm9vbCBtX3N0b3BwZWQgeyBmYWxzZSB9OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCisKKyNl
bmRpZiAvLyBSVENSdHBUcmFuc2NlaXZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVyLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuaWRsCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiNjNjYzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVyLmlkbApAQCAtMCww
ICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEVyaWNzc29uIEFCLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlz
CisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1XRUJfUlRDCitdIGludGVyZmFjZSBS
VENSdHBUcmFuc2NlaXZlciB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZz8gbWlk
OworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBSVENSdHBTZW5kZXIgc2VuZGVyOworICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBSVENSdHBSZWNlaXZlciByZWNlaXZlcjsKKyAgICByZWFkb25seSBhdHRy
aWJ1dGUgYm9vbGVhbiBzdG9wcGVkOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBSVENSdHBUcmFu
c2NlaXZlckRpcmVjdGlvbiBkaXJlY3Rpb247CisKKyAgICB2b2lkIHNldERpcmVjdGlvbihSVENS
dHBUcmFuc2NlaXZlckRpcmVjdGlvbiBkaXJlY3Rpb24pOworICAgIHZvaWQgc3RvcCgpOworfTsK
KworZW51bSBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbiB7CisgICAgInNlbmRyZWN2IiwKKyAg
ICAic2VuZG9ubHkiLAorICAgICJyZWN2b25seSIsCisgICAgImluYWN0aXZlIgorfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBm
MjlhNDRiLi5lNThiZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMzg3LDYgKzIzODcsOCBAQAogCQk1RTJDNDM3NDFCQ0Yw
RDc1MDAwMUUyQkMgLyogSlNSVENSdHBTZW5kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVFMkM0MzcwMUJDRjBENjkwMDAxRTJCQyAvKiBKU1JUQ1J0
cFNlbmRlci5oICovOyB9OwogCQk1RTJDNDM3QjFCQ0Y5QTU3MDAwMUUyQkMgLyogUlRDUGVlckNv
bm5lY3Rpb25CdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUUyQzQzNzYxQkNGOUEwQjAwMDFFMkJDIC8qIFJUQ1BlZXJDb25uZWN0aW9uQnVp
bHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1RTJDNDM3QzFCQ0Y5QTg0MDAwMUUyQkMgLyogUlRDUGVlckNvbm5lY3Rpb25JbnRlcm5hbHNC
dWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUUyQzQzNzkxQkNGOUEwQjAwMDFFMkJDIC8qIFJUQ1BlZXJDb25uZWN0aW9uSW50ZXJuYWxzQnVp
bHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk1RTVFMkIxMzFDRkMzRTcwMDAwQzBEODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUU1RTJCMTAxQ0ZDM0U0
QjAwMEMwRDg1IC8qIFJUQ1J0cFRyYW5zY2VpdmVyLmNwcCAqLzsgfTsKKwkJNUU1RTJCMTQxQ0ZD
M0U3NTAwMEMwRDg1IC8qIFJUQ1J0cFRyYW5zY2VpdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RTVFMkIxMTFDRkMzRTRCMDAwQzBEODUgLyogUlRD
UnRwVHJhbnNjZWl2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1RUEzRDZERjFDODU5RDdGMDAzMDBCQkIgLyogTW9ja01lZGlhRW5kcG9pbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVFQTNENkRF
MUM4NTlENTMwMDMwMEJCQiAvKiBNb2NrTWVkaWFFbmRwb2ludC5oICovOyB9OwogCQk1RUEzRDZF
MDFDODU5RDg0MDAzMDBCQkIgLyogTW9ja01lZGlhRW5kcG9pbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUVBM0Q2REQxQzg1OUQ1MzAwMzAwQkJC
IC8qIE1vY2tNZWRpYUVuZHBvaW50LmNwcCAqLzsgfTsKIAkJNUVBM0Q2RTMxQzg1OURDMTAwMzAw
QkJCIC8qIFNEUFByb2Nlc3Nvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1RUEzRDZFMTFDODU5REFBMDAzMDBCQkIgLyogU0RQUHJvY2Vzc29yLmNw
cCAqLzsgfTsKQEAgLTk5OTMsNiArOTk5NSw5IEBACiAJCTVFMkM0Mzc2MUJDRjlBMEIwMDAxRTJC
QyAvKiBSVENQZWVyQ29ubmVjdGlvbkJ1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJUQ1BlZXJDb25uZWN0aW9uQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUUyQzQzNzgxQkNGOUEwQjAwMDFFMkJDIC8qIFJUQ1BlZXJDb25uZWN0aW9u
SW50ZXJuYWxzQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUlRDUGVlckNvbm5lY3Rpb25JbnRlcm5hbHNCdWlsdGlucy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVFMkM0Mzc5MUJDRjlBMEIwMDAxRTJCQyAvKiBSVENQZWVyQ29ubmVj
dGlvbkludGVybmFsc0J1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJUQ1BlZXJDb25uZWN0aW9uSW50ZXJuYWxzQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNUU1RTJCMTAxQ0ZDM0U0QjAwMEMwRDg1IC8qIFJUQ1J0cFRyYW5zY2VpdmVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJUQ1J0cFRyYW5zY2Vp
dmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUU1RTJCMTExQ0ZDM0U0QjAw
MEMwRDg1IC8qIFJUQ1J0cFRyYW5zY2VpdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJUQ1J0cFRyYW5zY2VpdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVFNUUyQjEyMUNGQzNFNEIwMDBDMEQ4NSAvKiBSVENSdHBUcmFuc2NlaXZlci5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gUlRDUnRwVHJhbnNjZWl2ZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1RUEzRDZERDFDODU5RDUzMDAzMDBCQkIgLyogTW9ja01lZGlhRW5kcG9p
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja01lZGlhRW5k
cG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RUEzRDZERTFDODU5RDUz
MDAzMDBCQkIgLyogTW9ja01lZGlhRW5kcG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTW9ja01lZGlhRW5kcG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUVBM0Q2RTExQzg1OURBQTAwMzAwQkJCIC8qIFNEUFByb2Nlc3Nvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTRFBQcm9jZXNzb3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTU0NzQsNiArMTU0NzksOSBAQAogCQkJCTVFMkM0MzVBMUJD
RUUzMEQwMDAxRTJCQyAvKiBSVENSdHBTZW5kZXIuaCAqLywKIAkJCQk1RTJDNDM1QjFCQ0VFMzBE
MDAwMUUyQkMgLyogUlRDUnRwU2VuZGVyLmlkbCAqLywKIAkJCQk1RTJDNDM1RDFCQ0VFMzBEMDAw
MUUyQkMgLyogUlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlLmggKi8sCisJCQkJNUU1RTJCMTAxQ0ZD
M0U0QjAwMEMwRDg1IC8qIFJUQ1J0cFRyYW5zY2VpdmVyLmNwcCAqLywKKwkJCQk1RTVFMkIxMTFD
RkMzRTRCMDAwQzBEODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIuaCAqLywKKwkJCQk1RTVFMkIxMjFD
RkMzRTRCMDAwQzBEODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIuaWRsICovLAogCQkJCTA3MjIxQjdB
MTdDRUMzMjcwMDg0OEU1MSAvKiBSVENTZXNzaW9uRGVzY3JpcHRpb24uY3BwICovLAogCQkJCTA3
MjIxQjdCMTdDRUMzMjcwMDg0OEU1MSAvKiBSVENTZXNzaW9uRGVzY3JpcHRpb24uaCAqLywKIAkJ
CQkwNzIyMUI3QzE3Q0VDMzI3MDA4NDhFNTEgLyogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmlkbCAq
LywKQEAgLTI3MTg5LDYgKzI3MTk3LDcgQEAKIAkJCQk0RTE5NTkyMjBBMzlEQUJBMDAyMjBGRTUg
LyogTWVkaWFGZWF0dXJlTmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3QTZEMUVDMTQ5MTEz
NzcwMDA1MUQwQyAvKiBNZWRpYUZyYWdtZW50VVJJUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBOEVBODAwRTBBMTk1MTZFMDBBOEVGNUYgLyogTWVkaWFMaXN0LmggaW4gSGVhZGVycyAqLywK
KwkJCQk1RTVFMkIxNDFDRkMzRTc1MDAwQzBEODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTVFQkI4OTMxMUM3Nzc3RkYwMEM2NUQ0MSAvKiBNZWRpYVBheWxvYWQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTA3RTNERkQxMUE5RTc4NjUwMDc2NENBOCAvKiBNZWRpYVBs
YXliYWNrVGFyZ2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzkyMTY1NTFBQTU2MEFBMDBBM0Mw
NDkgLyogTWVkaWFQbGF5YmFja1RhcmdldENsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDk1
Miw2ICszMDk2MSw3IEBACiAJCQkJNDE3MjUzQUExMzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29u
dHJvbEVsZW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCURFQkNDREQ1MTY2NDZFQjIwMEE0
NTJFMSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0QyN0Y2RTcxNDU3NzBEMzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk1RTVFMkIxMzFDRkMzRTcwMDAwQzBEODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUYzQzNCRUExMzVDQUYzQzAwQjhDMUFDIC8qIE1lZGlh
Q29udHJvbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE1N0FGODExMkYxRkIwNDAwQThDNkY1
IC8qIE1lZGlhQ29udHJvbHNBcHBsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREFCNkQyODE3
QzdERTZDMDBDNjBCMzQgLyogTWVkaWFDb250cm9sc0hvc3QuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUVuZHBv
aW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50
LmgKaW5kZXggYzA5YjllYS4uMzlmNzgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnQuaApAQCAtMzQsNiArMzQsNyBAQAogI2lm
IEVOQUJMRShXRUJfUlRDKQogCiAjaW5jbHVkZSAiTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24u
aCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc4LDYgKzc5LDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIGFkZFJlbW90ZUNhbmRpZGF0ZShJY2VDYW5kaWRhdGUm
LCB1bnNpZ25lZCBtZGVzY0luZGV4LCBjb25zdCBTdHJpbmcmIHVmcmFnLCBjb25zdCBTdHJpbmcm
IHBhc3N3b3JkKSA9IDA7CiAKKyAgICB2aXJ0dWFsIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNl
PiBjcmVhdGVNdXRlZFJlbW90ZVNvdXJjZShjb25zdCBTdHJpbmcmIG1pZCwgUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VHlwZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXBsYWNlU2VuZFNvdXJjZShS
ZWFsdGltZU1lZGlhU291cmNlJiwgdW5zaWduZWQgbWRlc2NJbmRleCkgPSAwOwogCiAgICAgdmly
dHVhbCB2b2lkIHN0b3AoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCmluZGV4IDA0ZDA0NjUu
LjcxNDA1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCkBAIC00MiwxMSArNDIsMTEgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogUmVhbHRpbWVNZWRpYVNvdXJjZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZShjb25zdCBTdHJpbmcmIGlkLCBUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKLSAg
ICA6IG1faWQoaWQpCisgICAgOiBtX211dGVkKGZhbHNlKQorICAgICwgbV9pZChpZCkKICAgICAs
IG1fdHlwZSh0eXBlKQogICAgICwgbV9uYW1lKG5hbWUpCiAgICAgLCBtX3N0b3BwZWQoZmFsc2Up
Ci0gICAgLCBtX211dGVkKGZhbHNlKQogICAgICwgbV9yZWFkb25seShmYWxzZSkKICAgICAsIG1f
cmVtb3RlKGZhbHNlKQogICAgICwgbV9maXRuZXNzU2NvcmUoMCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaApp
bmRleCAyOWM4YTUxLi5jNDFkN2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCkBAIC0xMjAsNiArMTIw
LDggQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2UoY29uc3Qg
U3RyaW5nJiBpZCwgVHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAorICAgIGJvb2wgbV9tdXRl
ZDsKKwogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9pZDsKICAgICBTdHJpbmcgbV9wZXJzaXN0ZW50
SUQ7CkBAIC0xMjgsNyArMTMwLDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc3RvcHBlZDsKICAg
ICBWZWN0b3I8T2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKIAotICAgIGJvb2wgbV9tdXRlZDsKICAg
ICBib29sIG1fcmVhZG9ubHk7CiAgICAgYm9vbCBtX3JlbW90ZTsKICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRW5kcG9pbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFFbmRwb2ludC5jcHAKaW5kZXggNWEx
YmQzNS4uNGZkNjQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrTWVkaWFFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrTWVkaWFFbmRwb2ludC5jcHAKQEAgLTM0LDYgKzM0LDggQEAKICNpbmNsdWRlICJNb2NrTWVk
aWFFbmRwb2ludC5oIgogCiAjaW5jbHVkZSAiTWVkaWFQYXlsb2FkLmgiCisjaW5jbHVkZSAiTW9j
a1JlYWx0aW1lQXVkaW9Tb3VyY2UuaCIKKyNpbmNsdWRlICJNb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZS5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTE1Myw2ICsxNTUsMjAgQEAgdm9pZCBNb2NrTWVkaWFFbmRwb2ludDo6YWRkUmVtb3RlQ2Fu
ZGlkYXRlKEljZUNhbmRpZGF0ZSYgY2FuZGlkYXRlLCB1bnNpZ25lZCBtZGUKICAgICBVTlVTRURf
UEFSQU0ocGFzc3dvcmQpOwogfQogCitSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gTW9ja01l
ZGlhRW5kcG9pbnQ6OmNyZWF0ZU11dGVkUmVtb3RlU291cmNlKGNvbnN0IFN0cmluZyYsIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBj
YXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvOgorICAgICAgICByZXR1cm4gTW9ja1JlYWx0
aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZU11dGVkKCJyZW1vdGUgYXVkaW8iKTsKKyAgICBjYXNlIFJl
YWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvOgorICAgICAgICByZXR1cm4gTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2U6OmNyZWF0ZU11dGVkKCJyZW1vdGUgdmlkZW8iKTsKKyAgICBjYXNlIFJlYWx0aW1l
TWVkaWFTb3VyY2U6Ok5vbmU6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0K
KworICAgIHJldHVybiBudWxscHRyOworfQorCiB2b2lkIE1vY2tNZWRpYUVuZHBvaW50OjpyZXBs
YWNlU2VuZFNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlJiBuZXdTb3VyY2UsIHVuc2lnbmVkIG1k
ZXNjSW5kZXgpCiB7CiAgICAgVU5VU0VEX1BBUkFNKG5ld1NvdXJjZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVuZHBvaW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVuZHBvaW50LmgKaW5kZXggZGRjMjhlMC4u
MjU2MGRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVk
aWFFbmRwb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlh
RW5kcG9pbnQuaApAQCAtNTUsNiArNTUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZFJlbW90
ZUNhbmRpZGF0ZShJY2VDYW5kaWRhdGUmLCB1bnNpZ25lZCBtZGVzY0luZGV4LCBjb25zdCBTdHJp
bmcmIHVmcmFnLCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkKSBvdmVycmlkZTsKIAorICAgIFJlZlB0
cjxSZWFsdGltZU1lZGlhU291cmNlPiBjcmVhdGVNdXRlZFJlbW90ZVNvdXJjZShjb25zdCBTdHJp
bmcmIG1pZCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBy
ZXBsYWNlU2VuZFNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlJiwgdW5zaWduZWQgbWRlc2NJbmRl
eCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAK
aW5kZXggOWRmZDY1MS4uM2VlM2I2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKQEAgLTQyLDExICs0Miwx
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlZlB0cjxNb2NrUmVhbHRpbWVBdWRpb1NvdXJj
ZT4gTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZSgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlKE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjptb2Nr
QXVkaW9Tb3VyY2VOYW1lKCkpKTsKIH0KIAotTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6Ok1vY2tS
ZWFsdGltZUF1ZGlvU291cmNlKCkKLSAgICA6IE1vY2tSZWFsdGltZU1lZGlhU291cmNlKGNyZWF0
ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8sIG1vY2tB
dWRpb1NvdXJjZU5hbWUoKSkKK1JlZlB0cjxNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZT4gTW9ja1Jl
YWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZU11dGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAg
ICBSZWZQdHI8TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U+IHNvdXJjZSA9IGFkb3B0UmVmKG5ldyBN
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZShuYW1lKSk7CisgICAgc291cmNlLT5tX211dGVkID0gdHJ1
ZTsKKworICAgIHJldHVybiBzb3VyY2U7Cit9CisKK01vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpN
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZShjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgOiBNb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZShjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCksIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OkF1ZGlvLCBuYW1lKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmgKaW5kZXggNmVjY2M5MC4u
N2ViY2I3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9j
a1JlYWx0aW1lQXVkaW9Tb3VyY2UuaApAQCAtNDQsMTEgKzQ0LDEyIEBAIGNsYXNzIE1vY2tSZWFs
dGltZUF1ZGlvU291cmNlIDogcHVibGljIE1vY2tSZWFsdGltZU1lZGlhU291cmNlIHsKIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBSZWZQdHI8TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U+IGNyZWF0ZSgp
OworICAgIHN0YXRpYyBSZWZQdHI8TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U+IGNyZWF0ZU11dGVk
KGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICB2aXJ0dWFsIH5Nb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZSgpIHsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UoKTsK
KyAgICBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZShjb25zdCBTdHJpbmcmIG5hbWUgPSBBU0NJSUxp
dGVyYWwoIk1vY2sgYXVkaW8gZGV2aWNlIikpOwogCiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRl
U2V0dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJikgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2UuY3BwCmluZGV4IDI4Yjc2NzAuLmZjZWE1MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCkBAIC01MSwx
MiArNTEsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmICFQTEFURk9STShNQUMpICYmICFQ
TEFURk9STShJT1MpCiBSZWZQdHI8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U+IE1vY2tSZWFsdGlt
ZVZpZGVvU291cmNlOjpjcmVhdGUoKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2UoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZShNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6bW9ja1ZpZGVvU291cmNlTmFt
ZSgpKSk7Cit9CisKK1JlZlB0cjxNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZT4gTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2U6OmNyZWF0ZU11dGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBSZWZQ
dHI8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U+IHNvdXJjZSA9IGFkb3B0UmVmKG5ldyBNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZShuYW1lKSk7CisgICAgc291cmNlLT5tX211dGVkID0gdHJ1ZTsKKwor
ICAgIHJldHVybiBzb3VyY2U7CiB9CiAjZW5kaWYKIAotTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6
Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlKCkKLSAgICA6IE1vY2tSZWFsdGltZU1lZGlhU291cmNl
KGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8s
IG1vY2tWaWRlb1NvdXJjZU5hbWUoKSkKK01vY2tSZWFsdGltZVZpZGVvU291cmNlOjpNb2NrUmVh
bHRpbWVWaWRlb1NvdXJjZShjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgOiBNb2NrUmVhbHRpbWVN
ZWRpYVNvdXJjZShjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCksIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlZpZGVvLCBuYW1lKQogICAgICwgbV90aW1lcihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMs
ICZNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Z2VuZXJhdGVGcmFtZSkKIHsKICAgICBtX2Rhc2hX
aWR0aHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaAppbmRleCBhNWE1MmMx
Li45NjRmY2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tS
ZWFsdGltZVZpZGVvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oCkBAIC00Nyw2ICs0Nyw3IEBAIGNsYXNzIE1vY2tSZWFs
dGltZVZpZGVvU291cmNlIDogcHVibGljIE1vY2tSZWFsdGltZU1lZGlhU291cmNlIHsKIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBSZWZQdHI8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U+IGNyZWF0ZSgp
OworICAgIHN0YXRpYyBSZWZQdHI8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U+IGNyZWF0ZU11dGVk
KGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICB2aXJ0dWFsIH5Nb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZSgpIHsgfQogCkBAIC01Niw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZyYW1l
UmF0ZShmbG9hdCk7CiAKIHByb3RlY3RlZDoKLSAgICBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZSgp
OworICAgIE1vY2tSZWFsdGltZVZpZGVvU291cmNlKGNvbnN0IFN0cmluZyYgbmFtZSA9IEFTQ0lJ
TGl0ZXJhbCgiTW9jayB2aWRlbyBkZXZpY2UiKSk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVBs
YXRmb3JtTGF5ZXIoKSBjb25zdCB7IH0KIAogICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcigp
IGNvbnN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280140</attachid>
            <date>2016-05-31 05:39:04 -0700</date>
            <delta_ts>2016-05-31 06:56:49 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>add-transceiver_1.patch</filename>
            <type>text/plain</type>
            <size>59651</size>
            <attacher name="Adam Bergkvist">adam.bergkvist</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlZmI5YTBmLi5hY2IxZTMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTYtMDUt
MzEgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgorCisgICAg
ICAgIFdlYlJUQzogQWRkIFJUQ1J0cFRyYW5zY2VpdmVyIGludGVyZmFjZSBhbmQgUlRDUGVlckNv
bm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MTg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkZWQgdGVzdCBmb3IgUlRDUGVlckNvbm5lY3Rpb24uYWRkVHJh
bnNjZWl2ZXIoKS4KKworICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rp
b24tYWRkVHJhbnNjZWl2ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWFkZFRyYW5zY2VpdmVyLmh0bWw6IEFkZGVkLgor
ICAgICAgICBUZXN0IGNyZWF0aW5nIHNldmVyYWwgUlRDUnRwVHJhbnNjZWl2ZXJzIHdpdGggdmFy
aW91cyBjb25maWd1cmF0aW9ucyBhbmQgaW5zcGVjdCB0aGUgcmVzdWx0LgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICBTa2lwIHRoZSBuZXcgdGVzdCBz
aW5jZSB0aGUgTWFjIHBvcnQgY3VycmVudGx5IGRvZXNuJ3QgYnVpbGQgd2l0aCBXZWJSVEMgc3Vw
cG9ydC4KKwogMjAxNi0wNS0yNSAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdtYWls
LmNvbT4KIAogICAgICAgICBbRVNOZXh0XSBTdXBwb3J0IHRyYWlsaW5nIGNvbW1hcyBpbiBmdW5j
dGlvbiBwYXJhbSBsaXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbi1hZGRUcmFuc2NlaXZlci1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWFkZFRyYW5zY2VpdmVyLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDFlNTgyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbi1hZGRUcmFuc2NlaXZlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMzYgQEAKK1Rl
c3QgYmFzaWMgYmVoYXZpb3Igb2YgUlRDUGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIKKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgcGMuZ2V0VHJhbnNjZWl2ZXJzKCku
bGVuZ3RoIGlzIDAKKworKioqIFRlc3QgYXJndW1lbnRzCisqKiogJ3RyYWNrT3JLaW5kJyBhcmd1
bWVudCBpcyBtYW5kYXRvcnkKK1BBU1MgcGMuYWRkVHJhbnNjZWl2ZXIoKSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KK1BBU1MgcGMuYWRkVHJhbnNjZWl2
ZXIoe30pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCisqKiogQmFkIHR5
cGUgYXMgZmlyc3QgYXJndW1lbnQKK1BBU1MgcGMuYWRkVHJhbnNjZWl2ZXIobnVsbCkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgcGMuYWRkVHJhbnNjZWl2ZXIo
bnVsbCwge30pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIHBj
LmFkZFRyYW5zY2VpdmVyKHN0cmVhbSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBl
cnJvci4KKyoqKiBCYWQgdHJhY2sga2luZAorUEFTUyBwYy5hZGRUcmFuc2NlaXZlcignZm9vJykg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KKyoqKiBCYWQgZGlyZWN0aW9u
IHZhbHVlCitQQVNTIHBjLmFkZFRyYW5zY2VpdmVyKCJhdWRpbyIsIHsiZGlyZWN0aW9uIjogImZv
byJ9KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorCitQQVNTIHRyYW5z
Y2VpdmVyID0gcGMuYWRkVHJhbnNjZWl2ZXIoImF1ZGlvIikgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uCitQQVNTIHBjLmdldFRyYW5zY2VpdmVycygpLmxlbmd0aCBpcyAxCitQQVNTIHBjLmdldFRy
YW5zY2VpdmVycygpLmluY2x1ZGVzKHRyYW5zY2VpdmVyKSBpcyB0cnVlCitQQVNTIHRyYW5zY2Vp
dmVyLmRpcmVjdGlvbiBpcyAnc2VuZHJlY3YnCitQQVNTIHRyYW5zY2VpdmVyLm1pZCBpcyBudWxs
CitQQVNTIHRyYW5zY2VpdmVyLnN0b3BwZWQgaXMgZmFsc2UKKyoqKiBDaGVjayBzZW5kZXIKK1BB
U1MgdHJhbnNjZWl2ZXIuc2VuZGVyIGlzIGFuIGluc3RhbmNlIG9mIFJUQ1J0cFNlbmRlcgorUEFT
UyB0cmFuc2NlaXZlci5zZW5kZXIudHJhY2sgaXMgbnVsbAorKioqIENoZWNrIHJlY2VpdmVyCitQ
QVNTIHRyYW5zY2VpdmVyLnJlY2VpdmVyIGlzIGFuIGluc3RhbmNlIG9mIFJUQ1J0cFJlY2VpdmVy
CitQQVNTIHRyYW5zY2VpdmVyLnJlY2VpdmVyLnRyYWNrIGlzIGFuIGluc3RhbmNlIG9mIE1lZGlh
U3RyZWFtVHJhY2sKK1BBU1MgdHJhbnNjZWl2ZXIucmVjZWl2ZXIudHJhY2sua2luZCBpcyAnYXVk
aW8nCisKK1BBU1MgdHJhbnNjZWl2ZXIgPSBwYy5hZGRUcmFuc2NlaXZlcigidmlkZW8iKSBkaWQg
bm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgcGMuZ2V0VHJhbnNjZWl2ZXJzKCkubGVuZ3RoIGlz
IDIKK1BBU1MgcGMuZ2V0VHJhbnNjZWl2ZXJzKCkuaW5jbHVkZXModHJhbnNjZWl2ZXIpIGlzIHRy
dWUKK1BBU1MgdHJhbnNjZWl2ZXIuZGlyZWN0aW9uIGlzICdzZW5kcmVjdicKK1BBU1MgdHJhbnNj
ZWl2ZXIubWlkIGlzIG51bGwKK1BBU1MgdHJhbnNjZWl2ZXIuc3RvcHBlZCBpcyBmYWxzZQorKioq
IENoZWNrIHNlbmRlcgorUEFTUyB0cmFuc2NlaXZlci5zZW5kZXIgaXMgYW4gaW5zdGFuY2Ugb2Yg
UlRDUnRwU2VuZGVyCitQQVNTIHRyYW5zY2VpdmVyLnNlbmRlci50cmFjayBpcyBudWxsCisqKiog
Q2hlY2sgcmVjZWl2ZXIKK1BBU1MgdHJhbnNjZWl2ZXIucmVjZWl2ZXIgaXMgYW4gaW5zdGFuY2Ug
b2YgUlRDUnRwUmVjZWl2ZXIKK1BBU1MgdHJhbnNjZWl2ZXIucmVjZWl2ZXIudHJhY2sgaXMgYW4g
aW5zdGFuY2Ugb2YgTWVkaWFTdHJlYW1UcmFjaworUEFTUyB0cmFuc2NlaXZlci5yZWNlaXZlci50
cmFjay5raW5kIGlzICd2aWRlbycKKworUEFTUyB0cmFuc2NlaXZlciA9IHBjLmFkZFRyYW5zY2Vp
dmVyKGF1ZGlvVHJhY2spIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBwYy5nZXRUcmFu
c2NlaXZlcnMoKS5sZW5ndGggaXMgMworUEFTUyBwYy5nZXRUcmFuc2NlaXZlcnMoKS5pbmNsdWRl
cyh0cmFuc2NlaXZlcikgaXMgdHJ1ZQorUEFTUyB0cmFuc2NlaXZlci5kaXJlY3Rpb24gaXMgJ3Nl
bmRyZWN2JworUEFTUyB0cmFuc2NlaXZlci5taWQgaXMgbnVsbAorUEFTUyB0cmFuc2NlaXZlci5z
dG9wcGVkIGlzIGZhbHNlCisqKiogQ2hlY2sgc2VuZGVyCitQQVNTIHRyYW5zY2VpdmVyLnNlbmRl
ciBpcyBhbiBpbnN0YW5jZSBvZiBSVENSdHBTZW5kZXIKK1BBU1MgdHJhbnNjZWl2ZXIuc2VuZGVy
LnRyYWNrIGlzIGF1ZGlvVHJhY2sKKyoqKiBDaGVjayByZWNlaXZlcgorUEFTUyB0cmFuc2NlaXZl
ci5yZWNlaXZlciBpcyBhbiBpbnN0YW5jZSBvZiBSVENSdHBSZWNlaXZlcgorUEFTUyB0cmFuc2Nl
aXZlci5yZWNlaXZlci50cmFjayBpcyBhbiBpbnN0YW5jZSBvZiBNZWRpYVN0cmVhbVRyYWNrCitQ
QVNTIHRyYW5zY2VpdmVyLnJlY2VpdmVyLnRyYWNrLmtpbmQgaXMgJ2F1ZGlvJworCitQQVNTIHRy
YW5zY2VpdmVyID0gcGMuYWRkVHJhbnNjZWl2ZXIodmlkZW9UcmFjaykgZGlkIG5vdCB0aHJvdyBl
eGNlcHRpb24uCitQQVNTIHBjLmdldFRyYW5zY2VpdmVycygpLmxlbmd0aCBpcyA0CitQQVNTIHBj
LmdldFRyYW5zY2VpdmVycygpLmluY2x1ZGVzKHRyYW5zY2VpdmVyKSBpcyB0cnVlCitQQVNTIHRy
YW5zY2VpdmVyLmRpcmVjdGlvbiBpcyAnc2VuZHJlY3YnCitQQVNTIHRyYW5zY2VpdmVyLm1pZCBp
cyBudWxsCitQQVNTIHRyYW5zY2VpdmVyLnN0b3BwZWQgaXMgZmFsc2UKKyoqKiBDaGVjayBzZW5k
ZXIKK1BBU1MgdHJhbnNjZWl2ZXIuc2VuZGVyIGlzIGFuIGluc3RhbmNlIG9mIFJUQ1J0cFNlbmRl
cgorUEFTUyB0cmFuc2NlaXZlci5zZW5kZXIudHJhY2sgaXMgdmlkZW9UcmFjaworKioqIENoZWNr
IHJlY2VpdmVyCitQQVNTIHRyYW5zY2VpdmVyLnJlY2VpdmVyIGlzIGFuIGluc3RhbmNlIG9mIFJU
Q1J0cFJlY2VpdmVyCitQQVNTIHRyYW5zY2VpdmVyLnJlY2VpdmVyLnRyYWNrIGlzIGFuIGluc3Rh
bmNlIG9mIE1lZGlhU3RyZWFtVHJhY2sKK1BBU1MgdHJhbnNjZWl2ZXIucmVjZWl2ZXIudHJhY2su
a2luZCBpcyAndmlkZW8nCisKK1BBU1MgdHJhbnNjZWl2ZXIgPSBwYy5hZGRUcmFuc2NlaXZlcigi
YXVkaW8iLCB7ImRpcmVjdGlvbiI6ICJzZW5kcmVjdiJ9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlv
bi4KK1BBU1MgcGMuZ2V0VHJhbnNjZWl2ZXJzKCkubGVuZ3RoIGlzIDUKK1BBU1MgcGMuZ2V0VHJh
bnNjZWl2ZXJzKCkuaW5jbHVkZXModHJhbnNjZWl2ZXIpIGlzIHRydWUKK1BBU1MgdHJhbnNjZWl2
ZXIuZGlyZWN0aW9uIGlzICdzZW5kcmVjdicKK1BBU1MgdHJhbnNjZWl2ZXIubWlkIGlzIG51bGwK
K1BBU1MgdHJhbnNjZWl2ZXIuc3RvcHBlZCBpcyBmYWxzZQorKioqIENoZWNrIHNlbmRlcgorUEFT
UyB0cmFuc2NlaXZlci5zZW5kZXIgaXMgYW4gaW5zdGFuY2Ugb2YgUlRDUnRwU2VuZGVyCitQQVNT
IHRyYW5zY2VpdmVyLnNlbmRlci50cmFjayBpcyBudWxsCisqKiogQ2hlY2sgcmVjZWl2ZXIKK1BB
U1MgdHJhbnNjZWl2ZXIucmVjZWl2ZXIgaXMgYW4gaW5zdGFuY2Ugb2YgUlRDUnRwUmVjZWl2ZXIK
K1BBU1MgdHJhbnNjZWl2ZXIucmVjZWl2ZXIudHJhY2sgaXMgYW4gaW5zdGFuY2Ugb2YgTWVkaWFT
dHJlYW1UcmFjaworUEFTUyB0cmFuc2NlaXZlci5yZWNlaXZlci50cmFjay5raW5kIGlzICdhdWRp
bycKKworUEFTUyB0cmFuc2NlaXZlciA9IHBjLmFkZFRyYW5zY2VpdmVyKCJhdWRpbyIsIHsiZGly
ZWN0aW9uIjogInJlY3Zvbmx5In0pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBwYy5n
ZXRUcmFuc2NlaXZlcnMoKS5sZW5ndGggaXMgNgorUEFTUyBwYy5nZXRUcmFuc2NlaXZlcnMoKS5p
bmNsdWRlcyh0cmFuc2NlaXZlcikgaXMgdHJ1ZQorUEFTUyB0cmFuc2NlaXZlci5kaXJlY3Rpb24g
aXMgJ3JlY3Zvbmx5JworUEFTUyB0cmFuc2NlaXZlci5taWQgaXMgbnVsbAorUEFTUyB0cmFuc2Nl
aXZlci5zdG9wcGVkIGlzIGZhbHNlCisqKiogQ2hlY2sgc2VuZGVyCitQQVNTIHRyYW5zY2VpdmVy
LnNlbmRlciBpcyBhbiBpbnN0YW5jZSBvZiBSVENSdHBTZW5kZXIKK1BBU1MgdHJhbnNjZWl2ZXIu
c2VuZGVyLnRyYWNrIGlzIG51bGwKKyoqKiBDaGVjayByZWNlaXZlcgorUEFTUyB0cmFuc2NlaXZl
ci5yZWNlaXZlciBpcyBhbiBpbnN0YW5jZSBvZiBSVENSdHBSZWNlaXZlcgorUEFTUyB0cmFuc2Nl
aXZlci5yZWNlaXZlci50cmFjayBpcyBhbiBpbnN0YW5jZSBvZiBNZWRpYVN0cmVhbVRyYWNrCitQ
QVNTIHRyYW5zY2VpdmVyLnJlY2VpdmVyLnRyYWNrLmtpbmQgaXMgJ2F1ZGlvJworCitQQVNTIHRy
YW5zY2VpdmVyID0gcGMuYWRkVHJhbnNjZWl2ZXIoImF1ZGlvIiwgeyJkaXJlY3Rpb24iOiAic2Vu
ZG9ubHkifSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIHBjLmdldFRyYW5zY2VpdmVy
cygpLmxlbmd0aCBpcyA3CitQQVNTIHBjLmdldFRyYW5zY2VpdmVycygpLmluY2x1ZGVzKHRyYW5z
Y2VpdmVyKSBpcyB0cnVlCitQQVNTIHRyYW5zY2VpdmVyLmRpcmVjdGlvbiBpcyAnc2VuZG9ubHkn
CitQQVNTIHRyYW5zY2VpdmVyLm1pZCBpcyBudWxsCitQQVNTIHRyYW5zY2VpdmVyLnN0b3BwZWQg
aXMgZmFsc2UKKyoqKiBDaGVjayBzZW5kZXIKK1BBU1MgdHJhbnNjZWl2ZXIuc2VuZGVyIGlzIGFu
IGluc3RhbmNlIG9mIFJUQ1J0cFNlbmRlcgorUEFTUyB0cmFuc2NlaXZlci5zZW5kZXIudHJhY2sg
aXMgbnVsbAorKioqIENoZWNrIHJlY2VpdmVyCitQQVNTIHRyYW5zY2VpdmVyLnJlY2VpdmVyIGlz
IGFuIGluc3RhbmNlIG9mIFJUQ1J0cFJlY2VpdmVyCitQQVNTIHRyYW5zY2VpdmVyLnJlY2VpdmVy
LnRyYWNrIGlzIGFuIGluc3RhbmNlIG9mIE1lZGlhU3RyZWFtVHJhY2sKK1BBU1MgdHJhbnNjZWl2
ZXIucmVjZWl2ZXIudHJhY2sua2luZCBpcyAnYXVkaW8nCisKK1BBU1MgdHJhbnNjZWl2ZXIgPSBw
Yy5hZGRUcmFuc2NlaXZlcigiYXVkaW8iLCB7ImRpcmVjdGlvbiI6ICJpbmFjdGl2ZSJ9KSBkaWQg
bm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgcGMuZ2V0VHJhbnNjZWl2ZXJzKCkubGVuZ3RoIGlz
IDgKK1BBU1MgcGMuZ2V0VHJhbnNjZWl2ZXJzKCkuaW5jbHVkZXModHJhbnNjZWl2ZXIpIGlzIHRy
dWUKK1BBU1MgdHJhbnNjZWl2ZXIuZGlyZWN0aW9uIGlzICdpbmFjdGl2ZScKK1BBU1MgdHJhbnNj
ZWl2ZXIubWlkIGlzIG51bGwKK1BBU1MgdHJhbnNjZWl2ZXIuc3RvcHBlZCBpcyBmYWxzZQorKioq
IENoZWNrIHNlbmRlcgorUEFTUyB0cmFuc2NlaXZlci5zZW5kZXIgaXMgYW4gaW5zdGFuY2Ugb2Yg
UlRDUnRwU2VuZGVyCitQQVNTIHRyYW5zY2VpdmVyLnNlbmRlci50cmFjayBpcyBudWxsCisqKiog
Q2hlY2sgcmVjZWl2ZXIKK1BBU1MgdHJhbnNjZWl2ZXIucmVjZWl2ZXIgaXMgYW4gaW5zdGFuY2Ug
b2YgUlRDUnRwUmVjZWl2ZXIKK1BBU1MgdHJhbnNjZWl2ZXIucmVjZWl2ZXIudHJhY2sgaXMgYW4g
aW5zdGFuY2Ugb2YgTWVkaWFTdHJlYW1UcmFjaworUEFTUyB0cmFuc2NlaXZlci5yZWNlaXZlci50
cmFjay5raW5kIGlzICdhdWRpbycKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24tYWRkVHJhbnNjZWl2ZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tYWRkVHJhbnNjZWl2ZXIuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmQ5ZDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1hZGRUcmFu
c2NlaXZlci5odG1sCkBAIC0wLDAgKzEsMTIzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPC9o
ZWFkPgorICAgIDxib2R5PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgdmFyIHN0cmVh
bTsKKyAgICAgICAgICAgIHZhciBhdWRpb1RyYWNrOworICAgICAgICAgICAgdmFyIHZpZGVvVHJh
Y2s7CisgICAgICAgICAgICB2YXIgdHJhbnNjZWl2ZXI7CisgICAgICAgICAgICB2YXIgZXhwZWN0
ZWQ7CisKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0IGJhc2ljIGJlaGF2aW9yIG9mIFJU
Q1BlZXJDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyIik7CisKKyAgICAgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFVzZXJNZWRpYVBl
cm1pc3Npb24odHJ1ZSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBkZWJ1
ZygiVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdpdGhvdXQgdGhlIHRlc3RSdW5uZXIiKTsKKyAg
ICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmFyIHBjID0gbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJzOlt7dXJs
czonc3R1bjpmb28uY29tJ31dfSk7CisKKyAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYURldmlj
ZXMuZ2V0VXNlck1lZGlhKHsgImF1ZGlvIjogdHJ1ZSwgInZpZGVvIjogdHJ1ZSB9KQorICAgICAg
ICAgICAgLnRoZW4oZnVuY3Rpb24gKHMpIHsKKyAgICAgICAgICAgICAgICBzdHJlYW0gPSBzOwor
ICAgICAgICAgICAgICAgIGF1ZGlvVHJhY2sgPSBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXTsK
KyAgICAgICAgICAgICAgICB2aWRlb1RyYWNrID0gc3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF07
CisKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgicGMuZ2V0VHJhbnNjZWl2ZXJzKCkubGVuZ3Ro
IiwgIjAiKTsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiIik7CisKKyAgICAgICAgICAgICAgICBk
ZWJ1ZygiKioqIFRlc3QgYXJndW1lbnRzIik7CisgICAgICAgICAgICAgICAgZGVidWcoIioqKiAn
dHJhY2tPcktpbmQnIGFyZ3VtZW50IGlzIG1hbmRhdG9yeSIpOworICAgICAgICAgICAgICAgIHNo
b3VsZFRocm93KCJwYy5hZGRUcmFuc2NlaXZlcigpIik7CisgICAgICAgICAgICAgICAgc2hvdWxk
VGhyb3coInBjLmFkZFRyYW5zY2VpdmVyKHt9KSIpOworICAgICAgICAgICAgICAgIGRlYnVnKCIq
KiogQmFkIHR5cGUgYXMgZmlyc3QgYXJndW1lbnQiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRU
aHJvdygicGMuYWRkVHJhbnNjZWl2ZXIobnVsbCkiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRU
aHJvdygicGMuYWRkVHJhbnNjZWl2ZXIobnVsbCwge30pIik7CisgICAgICAgICAgICAgICAgc2hv
dWxkVGhyb3coInBjLmFkZFRyYW5zY2VpdmVyKHN0cmVhbSkiKTsKKyAgICAgICAgICAgICAgICBk
ZWJ1ZygiKioqIEJhZCB0cmFjayBraW5kIik7CisgICAgICAgICAgICAgICAgc2hvdWxkVGhyb3co
InBjLmFkZFRyYW5zY2VpdmVyKCdmb28nKSIpOworICAgICAgICAgICAgICAgIGRlYnVnKCIqKiog
QmFkIGRpcmVjdGlvbiB2YWx1ZSIpOworICAgICAgICAgICAgICAgIHNob3VsZFRocm93KCdwYy5h
ZGRUcmFuc2NlaXZlcigiYXVkaW8iLCB7ImRpcmVjdGlvbiI6ICJmb28ifSknKTsKKyAgICAgICAg
ICAgICAgICBkZWJ1ZygiIik7CisKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiBjaGVja1RyYW5z
Y2V2aWVyKGV4cGVjdGVkQXJnKSB7CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gZXhw
ZWN0ZWRBcmc7CisKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoInBjLmdldFRyYW5zY2Vp
dmVycygpLmxlbmd0aCIsIGV4cGVjdGVkLnRyYW5zY2VpdmVyQ291bnQpOworICAgICAgICAgICAg
ICAgICAgICBzaG91bGRCZVRydWUoInBjLmdldFRyYW5zY2VpdmVycygpLmluY2x1ZGVzKHRyYW5z
Y2VpdmVyKSIpOworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgidHJhbnNjZWl2ZXIuZGly
ZWN0aW9uIiwgZXhwZWN0ZWQuZGlyZWN0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxk
QmVOdWxsKCJ0cmFuc2NlaXZlci5taWQiKTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVG
YWxzZSgidHJhbnNjZWl2ZXIuc3RvcHBlZCIpOworCisgICAgICAgICAgICAgICAgICAgIGRlYnVn
KCIqKiogQ2hlY2sgc2VuZGVyIik7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlVHlwZSgi
dHJhbnNjZWl2ZXIuc2VuZGVyIiwgIlJUQ1J0cFNlbmRlciIpOworICAgICAgICAgICAgICAgICAg
ICBzaG91bGRCZSgidHJhbnNjZWl2ZXIuc2VuZGVyLnRyYWNrIiwgZXhwZWN0ZWQuc2VuZGVyVHJh
Y2spOworCisgICAgICAgICAgICAgICAgICAgIGRlYnVnKCIqKiogQ2hlY2sgcmVjZWl2ZXIiKTsK
KyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVUeXBlKCJ0cmFuc2NlaXZlci5yZWNlaXZlciIs
ICJSVENSdHBSZWNlaXZlciIpOworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZVR5cGUoInRy
YW5zY2VpdmVyLnJlY2VpdmVyLnRyYWNrIiwgIk1lZGlhU3RyZWFtVHJhY2siKTsKKyAgICAgICAg
ICAgICAgICAgICAgc2hvdWxkQmUoInRyYW5zY2VpdmVyLnJlY2VpdmVyLnRyYWNrLmtpbmQiLCBl
eHBlY3RlZC5yZWNlaXZlclRyYWNrVHlwZSk7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnKCIi
KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygn
dHJhbnNjZWl2ZXIgPSBwYy5hZGRUcmFuc2NlaXZlcigiYXVkaW8iKScpOworICAgICAgICAgICAg
ICAgIGNoZWNrVHJhbnNjZXZpZXIoeworICAgICAgICAgICAgICAgICAgICAidHJhbnNjZWl2ZXJD
b3VudCI6ICIxIiwKKyAgICAgICAgICAgICAgICAgICAgImRpcmVjdGlvbiI6ICInc2VuZHJlY3Yn
IiwKKyAgICAgICAgICAgICAgICAgICAgInNlbmRlclRyYWNrIjogIm51bGwiLAorICAgICAgICAg
ICAgICAgICAgICAicmVjZWl2ZXJUcmFja1R5cGUiOiAiJ2F1ZGlvJyIKKyAgICAgICAgICAgICAg
ICB9KTsKKworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCd0cmFuc2NlaXZlciA9IHBj
LmFkZFRyYW5zY2VpdmVyKCJ2aWRlbyIpJyk7CisgICAgICAgICAgICAgICAgY2hlY2tUcmFuc2Nl
dmllcih7CisgICAgICAgICAgICAgICAgICAgICJ0cmFuc2NlaXZlckNvdW50IjogIjIiLAorICAg
ICAgICAgICAgICAgICAgICAiZGlyZWN0aW9uIjogIidzZW5kcmVjdiciLAorICAgICAgICAgICAg
ICAgICAgICAic2VuZGVyVHJhY2siOiAibnVsbCIsCisgICAgICAgICAgICAgICAgICAgICJyZWNl
aXZlclRyYWNrVHlwZSI6ICIndmlkZW8nIgorICAgICAgICAgICAgICAgIH0pOworCisgICAgICAg
ICAgICAgICAgc2hvdWxkTm90VGhyb3coJ3RyYW5zY2VpdmVyID0gcGMuYWRkVHJhbnNjZWl2ZXIo
YXVkaW9UcmFjayknKTsKKyAgICAgICAgICAgICAgICBjaGVja1RyYW5zY2V2aWVyKHsKKyAgICAg
ICAgICAgICAgICAgICAgInRyYW5zY2VpdmVyQ291bnQiOiAiMyIsCisgICAgICAgICAgICAgICAg
ICAgICJkaXJlY3Rpb24iOiAiJ3NlbmRyZWN2JyIsCisgICAgICAgICAgICAgICAgICAgICJzZW5k
ZXJUcmFjayI6ICJhdWRpb1RyYWNrIiwKKyAgICAgICAgICAgICAgICAgICAgInJlY2VpdmVyVHJh
Y2tUeXBlIjogIidhdWRpbyciCisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAg
ICBzaG91bGROb3RUaHJvdygndHJhbnNjZWl2ZXIgPSBwYy5hZGRUcmFuc2NlaXZlcih2aWRlb1Ry
YWNrKScpOworICAgICAgICAgICAgICAgIGNoZWNrVHJhbnNjZXZpZXIoeworICAgICAgICAgICAg
ICAgICAgICAidHJhbnNjZWl2ZXJDb3VudCI6ICI0IiwKKyAgICAgICAgICAgICAgICAgICAgImRp
cmVjdGlvbiI6ICInc2VuZHJlY3YnIiwKKyAgICAgICAgICAgICAgICAgICAgInNlbmRlclRyYWNr
IjogInZpZGVvVHJhY2siLAorICAgICAgICAgICAgICAgICAgICAicmVjZWl2ZXJUcmFja1R5cGUi
OiAiJ3ZpZGVvJyIKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIFsic2Vu
ZHJlY3YiLCAicmVjdm9ubHkiLCAic2VuZG9ubHkiLCAiaW5hY3RpdmUiXS5mb3JFYWNoKGZ1bmN0
aW9uIChkaXJlY3Rpb24sIGkpIHsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3co
YHRyYW5zY2VpdmVyID0gcGMuYWRkVHJhbnNjZWl2ZXIoImF1ZGlvIiwgeyJkaXJlY3Rpb24iOiAi
JHtkaXJlY3Rpb259In0pYCk7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrVHJhbnNjZXZpZXIo
eworICAgICAgICAgICAgICAgICAgICAgICAgInRyYW5zY2VpdmVyQ291bnQiOiBTdHJpbmcoNSAr
IGkpLAorICAgICAgICAgICAgICAgICAgICAgICAgImRpcmVjdGlvbiI6IGAnJHtkaXJlY3Rpb259
J2AsCisgICAgICAgICAgICAgICAgICAgICAgICAic2VuZGVyVHJhY2siOiAibnVsbCIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAicmVjZWl2ZXJUcmFja1R5cGUiOiAiJ2F1ZGlvJyIKKyAgICAg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIH0pCisgICAgICAgICAgICAuY2F0Y2goZnVu
Y3Rpb24gKGVycm9yKSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiRXJyb3IgY2F1Z2h0
IGluIHByb21pc2UgY2hhaW46ICIgKyBlcnJvcik7CisgICAgICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworICAgICAgICAgICAgd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
CisKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDk4MTQzODIuLjIwMGEy
MWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25z
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xODcs
NiArMTg3LDcgQEAgZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1hZGQtcmVtb3Zl
VHJhY2suaHRtbAogZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1jbG9zZWQtc3Rh
dGUuaHRtbAogZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1vdmVybG9hZGVkLW9w
ZXJhdGlvbnMtcGFyYW1zLmh0bWwKIGZhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24t
b3ZlcmxvYWRlZC1vcGVyYXRpb25zLmh0bWwKK2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb24tYWRkVHJhbnNjZWl2ZXIuaHRtbAogZmFzdC9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIt
cmVwbGFjZVRyYWNrLmh0bWwKIGZhc3QvbWVkaWFzdHJlYW0vUlRDU2Vzc2lvbkRlc2NyaXB0aW9u
Lmh0bWwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAwN2NiMzJiLi5hZDhiOTZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtMjM1LDYgKzIzNSw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURM
X0ZJTEVTCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGwKICAg
ICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmlkbAogICAgIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwU2VuZGVyLmlkbAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
VHJhbnNjZWl2ZXIuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTZXNzaW9uRGVzY3Jp
cHRpb24uaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c1JlcG9ydC5pZGwKICAg
ICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVzcG9uc2UuaWRsCkBAIC05MzAsNiArOTMx
LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24uY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5j
cHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAKKyAgICBNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVyLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
U3RhdHNSZXBvcnQuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c1Jlc3BvbnNl
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDc1MGY5MTguLjJjNmIwMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw5OCBAQAorMjAxNi0wNS0zMSAgQWRhbSBCZXJna3Zpc3QgIDxhZGFtLmJlcmdrdmlzdEBlcmlj
c3Nvbi5jb20+CisKKyAgICAgICAgV2ViUlRDOiBBZGQgUlRDUnRwVHJhbnNjZWl2ZXIgaW50ZXJm
YWNlIGFuZCBSVENQZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcigpCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgxODkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgUlRDUnRwVHJhbnNjZWl2ZXIg
aW50ZXJmYWNlIHJlcHJlc2VudHMgYSBjb21iaW5hdGlvbiBvZiBhbiBSVENSdHBTZW5kZXIgYW5k
IGFuCisgICAgICAgIFJUQ1J0cFJlY2VpdmVyIHRoYXQgc2hhcmUgYSBjb21tb24gbWlkIFsxXS4K
KworICAgICAgICBSVENQZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcigpIFsyXSBjcmVhdGVz
IGFuIFJUQ1J0cFRyYW5zY2VpdmVyIG9iamVjdCwgZWl0aGVyIGRpcmVjdGx5CisgICAgICAgIGZy
b20gYSBNZWRpYVN0cmVhbVRyYWNrIFszXSwgb3Igd2l0aCBhIHNwZWNpZmljIG1lZGlhIHR5cGUg
KGtpbmQpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJvZHVjZXMgdGhlIFJUQ1J0cFRyYW5z
Y2VpdmVyIG9iamVjdCwgZm9sbG93LXVwIHBhdGNoZXMgd2lsbCBpbnRlZ3JhdGUgaXQKKyAgICAg
ICAgaW50byB0aGUgb2ZmZXIvYW5zd2VyIG1hY2hpbmVyeS4KKworICAgICAgICBbMV0gaHR0cHM6
Ly93M2MuZ2l0aHViLmlvL3dlYnJ0Yy1wYy9hcmNoaXZlcy8yMDE2MDUxMy93ZWJydGMuaHRtbCNy
dGNydHB0cmFuc2NlaXZlci1pbnRlcmZhY2UKKyAgICAgICAgWzJdIGh0dHBzOi8vdzNjLmdpdGh1
Yi5pby93ZWJydGMtcGMvYXJjaGl2ZXMvMjAxNjA1MTMvd2VicnRjLmh0bWwjZG9tLXJ0Y3BlZXJj
b25uZWN0aW9uLWFkZHRyYW5zY2VpdmVyCisgICAgICAgIFszXSBodHRwOi8vdzNjLmdpdGh1Yi5p
by9tZWRpYWNhcHR1cmUtbWFpbi9hcmNoaXZlcy8yMDE2MDUxMy9nZXR1c2VybWVkaWEuaHRtbCNt
ZWRpYXN0cmVhbXRyYWNrCisKKyAgICAgICAgVGVzdDogZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVy
Q29ubmVjdGlvbi1hZGRUcmFuc2NlaXZlci5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246
OmNyZWF0ZU9mZmVyVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVuZHBvaW50UGVlckNv
bm5lY3Rpb246OmNyZWF0ZVJlY2VpdmVyKToKKyAgICAgICAgQW4gUlRDVHJhbnNjZWl2ZXIgYWx3
YXlzIGhhcyBhIHJlY2VpdmVyIChSVENSdHBSZWNlaXZlcikgd2l0aCBhIHRyYWNrIChNZWRpYVN0
cmVhbVRyYWNrKSB0aGF0CisgICAgICAgIGNhbiBiZSByZW5kZXJlZC4gQmVmb3JlIHRoYXQgcmVt
b3RlIHRyYWNrIGlzIHJlY2VpdmluZyBkYXRhIGZyb20gdGhlIHJlbW90ZSBwZWVyLCBpdCdzIG11
dGVkLgorICAgICAgICBjcmVhdGVSZWNlaXZlcigpIHVzZXMgTWVkaWFFbmRwb25pdDo6Y3JlYXRl
TXV0ZWRSZW1vdGVTb3VyY2UoKSB0byBjcmVhdGUgYSBzb3VyY2UgdG8gcmVwcmVzZW50CisgICAg
ICAgIGZ1dHVyZSBpbmNvbWluZyBtZWRpYS4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29u
bmVjdGlvbjo6YWRkVHJhbnNjZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5l
Y3Rpb246OmNvbXBsZXRlQWRkVHJhbnNjZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVl
ckNvbm5lY3Rpb246OmFkZFJlY2VpdmVyKTogRGVsZXRlZC4KKyAgICAgICAgV2Ugbm93IGNyZWF0
ZSB0aGUgcmVjZWl2ZXIgZXhwbGljaXRseSB3aXRoIGNyZWF0ZVJlY2VpdmVyLgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbDoKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBT
ZW5kZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTZW5kZXI6OlJUQ1J0cFNl
bmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTZW5kZXI6OnNldFRyYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1J0cFNlbmRlcjo6cmVwbGFjZVRyYWNrKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRw
U2VuZGVyOjp0cmFja0lkKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNlbmRlcjo6dHJhY2tL
aW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNlbmRlcjo6c2V0TWVkaWFTdHJlYW1JZHMp
OgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2VuZGVyOjppc1N0b3BwZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UlRDUnRwU2VuZGVyOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlLmg6CisgICAgICAgIChXZWJD
b3JlOjpSVENSdHBTZW5kZXJSZWNlaXZlckJhc2U6OnRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ1J0cFNlbmRlclJlY2VpdmVyQmFzZTo6UlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVyLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1J0cFRyYW5zY2VpdmVyOjpnZXROZXh0TWlkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ1J0cFRyYW5zY2VpdmVyOjpSVENSdHBUcmFuc2NlaXZlcik6CisgICAgICAgIChXZWJD
b3JlOjpSVENSdHBUcmFuc2NlaXZlcjo6ZGlyZWN0aW9uU3RyaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ1J0cFRyYW5zY2VpdmVyOjpoYXNTZW5kaW5nRGlyZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlJUQ1J0cFRyYW5zY2VpdmVyOjplbmFibGVTZW5kaW5nRGlyZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1J0cFRyYW5zY2VpdmVyOjpkaXNhYmxlU2VuZGluZ0RpcmVjdGlvbik6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2NlaXZlci5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlclJl
Y2VpdmVyQmFzZS5oLgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwVHJhbnNjZWl2ZXI6On5SVENS
dHBUcmFuc2NlaXZlcik6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBUcmFuc2NlaXZlcjo6ZGly
ZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFRyYW5zY2VpdmVyOjpzZXREaXJlY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwVHJhbnNjZWl2ZXI6OnByb3Zpc2lvbmFsTWlk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFRyYW5zY2VpdmVyOjpzZXRQcm92aXNpb25hbE1p
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBUcmFuc2NlaXZlcjo6bWlkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1J0cFRyYW5zY2VpdmVyOjpzZXRNaWQpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDUnRwVHJhbnNjZWl2ZXI6OnNlbmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBUcmFu
c2NlaXZlcjo6cmVjZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwVHJhbnNjZWl2ZXI6
OnN0b3BwZWQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwVHJhbnNjZWl2ZXI6OnN0b3ApOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuaWRsOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlclJl
Y2VpdmVyQmFzZS5oLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50Lmg6CisgICAg
ICAgIEFkZGVkIGNyZWF0ZU11dGVkUmVtb3RlU291cmNlKCkgdGhhdCBjcmVhdGVzIGEgbXV0ZWQg
cmVtb3RlIHNvdXJjZSB0aGF0IHdpbGwgYmVjb21lIHVubXV0ZWQKKyAgICAgICAgd2hlbiBtZWRp
YSBhcnJpdmVzIGZyb20gdGhlIHJlbW90ZSBwZWVyLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZTo6UmVhbHRpbWVNZWRpYVNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oOgorICAgICAgICAqIHBs
YXRmb3JtL21vY2svTW9ja01lZGlhRW5kcG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a01lZGlhRW5kcG9pbnQ6OmNyZWF0ZU11dGVkUmVtb3RlU291cmNlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tb2NrL01vY2tNZWRpYUVuZHBvaW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1
ZGlvU291cmNlOjpjcmVhdGVNdXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFs
dGltZVZpZGVvU291cmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2U6OmNyZWF0ZU11dGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGlt
ZVZpZGVvU291cmNlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZSk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oOgorCiAyMDE2LTA1LTI4ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVGVtcGxhdGl6ZSBOb25jb3B5YWJs
ZUZ1bmN0aW9uIGNsYXNzIHNpbWlsYXJseSB0byBzdGQ6OmZ1bmN0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9p
bnRQZWVyQ29ubmVjdGlvbi5jcHAKaW5kZXggZjFlYjY0ZS4uZGM4NTFiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5l
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFF
bmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIk1l
ZGlhRW5kcG9pbnRTZXNzaW9uQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFt
VHJhY2suaCIKICNpbmNsdWRlICJSVENPZmZlckFuc3dlck9wdGlvbnMuaCIKLSNpbmNsdWRlICJS
VENSdHBTZW5kZXIuaCIKKyNpbmNsdWRlICJSVENSdHBUcmFuc2NlaXZlci5oIgogI2luY2x1ZGUg
IlNEUFByb2Nlc3Nvci5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQmFzZTY0Lmg+CkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBNZWRpYUVuZHBvaW50
UGVlckNvbm5lY3Rpb246OmNyZWF0ZU9mZmVyVGFzayhSVENPZmZlck9wdGlvbnMmLCBTZXNzaW9u
RGVzY3IKICAgICAvLyBBZGQgbWVkaWEgZGVzY3JpcHRpb25zIGZvciBzZW5kZXJzLgogICAgIGZv
ciAoYXV0byYgc2VuZGVyIDogc2VuZGVycykgewogICAgICAgICBSZWZQdHI8UGVlck1lZGlhRGVz
Y3JpcHRpb24+IG1lZGlhRGVzY3JpcHRpb24gPSBQZWVyTWVkaWFEZXNjcmlwdGlvbjo6Y3JlYXRl
KCk7Ci0gICAgICAgIE1lZGlhU3RyZWFtVHJhY2smIHRyYWNrID0gc2VuZGVyLT50cmFjaygpOwor
ICAgICAgICBNZWRpYVN0cmVhbVRyYWNrJiB0cmFjayA9ICpzZW5kZXItPnRyYWNrKCk7CiAKICAg
ICAgICAgbWVkaWFEZXNjcmlwdGlvbi0+c2V0TWVkaWFTdHJlYW1JZChzZW5kZXItPm1lZGlhU3Ry
ZWFtSWRzKClbMF0pOwogICAgICAgICBtZWRpYURlc2NyaXB0aW9uLT5zZXRNZWRpYVN0cmVhbVRy
YWNrSWQodHJhY2suaWQoKSk7CkBAIC0yNTUsNiArMjU1LDE4IEBAIHZvaWQgTWVkaWFFbmRwb2lu
dFBlZXJDb25uZWN0aW9uOjpnZXRTdGF0cyhNZWRpYVN0cmVhbVRyYWNrKiwgUGVlckNvbm5lY3Rp
b246OlN0CiAgICAgcHJvbWlzZS5yZWplY3QoTk9UX1NVUFBPUlRFRF9FUlIpOwogfQogCitSZWZQ
dHI8UlRDUnRwUmVjZWl2ZXI+IE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlUmVj
ZWl2ZXIoY29uc3QgU3RyaW5nJiB0cmFuc2NlaXZlck1pZCwgY29uc3QgU3RyaW5nJiB0cmFja0tp
bmQsIGNvbnN0IFN0cmluZyYgdHJhY2tJZCkKK3sKKyAgICBSZWFsdGltZU1lZGlhU291cmNlOjpU
eXBlIHNvdXJjZVR5cGUgPSB0cmFja0tpbmQgPT0gImF1ZGlvIiA/IFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6VmlkZW87CisKKyAg
ICAvLyBDcmVhdGUgYSBtdXRlZCByZW1vdGUgc291cmNlIHRoYXQgd2lsbCBiZSB1bm11dGVkIG9u
Y2UgbWVkaWEgc3RhcnRzIGFycml2aW5nLgorICAgIGF1dG8gcmVtb3RlU291cmNlID0gbV9tZWRp
YUVuZHBvaW50LT5jcmVhdGVNdXRlZFJlbW90ZVNvdXJjZSh0cmFuc2NlaXZlck1pZCwgc291cmNl
VHlwZSk7CisgICAgYXV0byByZW1vdGVUcmFja1ByaXZhdGUgPSBNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZTo6Y3JlYXRlKFdURk1vdmUocmVtb3RlU291cmNlKSwgdHJhY2tJZCk7CisgICAgYXV0byBy
ZW1vdGVUcmFjayA9IE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZSgqbV9jbGllbnQtPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgKnJlbW90ZVRyYWNrUHJpdmF0ZSk7CisKKyAgICByZXR1cm4gUlRD
UnRwUmVjZWl2ZXI6OmNyZWF0ZShXVEZNb3ZlKHJlbW90ZVRyYWNrKSk7Cit9CisKIHZvaWQgTWVk
aWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpyZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiBzZW5k
ZXIsIE1lZGlhU3RyZWFtVHJhY2smIHdpdGhUcmFjaywgUGVlckNvbm5lY3Rpb246OlZvaWRQcm9t
aXNlJiYgcHJvbWlzZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc2VuZGVyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25u
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9p
bnRQZWVyQ29ubmVjdGlvbi5oCmluZGV4IDk2N2QwYzkuLmYyNTgyZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBv
aW50UGVlckNvbm5lY3Rpb24uaApAQCAtNjksNiArNjksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGdldFN0YXRzKE1lZGlhU3RyZWFtVHJhY2sqLCBQZWVyQ29ubmVjdGlvbjo6U3RhdHNQcm9taXNl
JiYpIG92ZXJyaWRlOwogCisgICAgUmVmUHRyPFJUQ1J0cFJlY2VpdmVyPiBjcmVhdGVSZWNlaXZl
cihjb25zdCBTdHJpbmcmIHRyYW5zY2VpdmVyTWlkLCBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCwg
Y29uc3QgU3RyaW5nJiB0cmFja0lkKSBvdmVycmlkZTsKICAgICB2b2lkIHJlcGxhY2VUcmFjayhS
VENSdHBTZW5kZXImLCBNZWRpYVN0cmVhbVRyYWNrJiwgUGVlckNvbm5lY3Rpb246OlZvaWRQcm9t
aXNlJiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuaAppbmRleCBiZmZmNDRlLi5mNGIzN2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKQEAg
LTQ4LDYgKzQ4LDcgQEAgY2xhc3MgUlRDSWNlQ2FuZGlkYXRlOwogY2xhc3MgUlRDT2ZmZXJPcHRp
b25zOwogY2xhc3MgUlRDUnRwUmVjZWl2ZXI7CiBjbGFzcyBSVENSdHBTZW5kZXI7CitjbGFzcyBS
VENSdHBUcmFuc2NlaXZlcjsKIGNsYXNzIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjsKIGNsYXNzIFJU
Q1N0YXRzUmVzcG9uc2U7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwpAQCAtNjMsNyAr
NjQsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBWZWN0b3I8UmVmUHRyPFJUQ1J0cFNlbmRlcj4+
IGdldFNlbmRlcnMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpcmVFdmVudChFdmVu
dCYpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRSZWNlaXZlcihSVENSdHBSZWNlaXZlciYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2lnbmFsaW5nU3RhdGUoUGVlckNvbm5lY3Rpb25T
dGF0ZXM6OlNpZ25hbGluZ1N0YXRlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUljZUdh
dGhlcmluZ1N0YXRlKFBlZXJDb25uZWN0aW9uU3RhdGVzOjpJY2VHYXRoZXJpbmdTdGF0ZSkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVJY2VDb25uZWN0aW9uU3RhdGUoUGVlckNvbm5lY3Rp
b25TdGF0ZXM6OkljZUNvbm5lY3Rpb25TdGF0ZSkgPSAwOwpAQCAtMTAzLDYgKzEwMyw3IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRTdGF0cyhNZWRpYVN0cmVhbVRyYWNrKiwgUGVl
ckNvbm5lY3Rpb246OlN0YXRzUHJvbWlzZSYmKSA9IDA7CiAKKyAgICB2aXJ0dWFsIFJlZlB0cjxS
VENSdHBSZWNlaXZlcj4gY3JlYXRlUmVjZWl2ZXIoY29uc3QgU3RyaW5nJiB0cmFuc2NlaXZlck1p
ZCwgY29uc3QgU3RyaW5nJiB0cmFja0tpbmQsIGNvbnN0IFN0cmluZyYgdHJhY2tJZCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCByZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVyJiwgTWVkaWFTdHJlYW1U
cmFjayYsIFBlZXJDb25uZWN0aW9uOjpWb2lkUHJvbWlzZSYmKSA9IDA7CiAKICAgICB2aXJ0dWFs
IHZvaWQgc3RvcCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKaW5kZXggZTNjODE0Yi4uOGYyZWM5YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJSVENPZmZlckFu
c3dlck9wdGlvbnMuaCIKICNpbmNsdWRlICJSVENTZXNzaW9uRGVzY3JpcHRpb24uaCIKICNpbmNs
dWRlICJSVENUcmFja0V2ZW50LmgiCisjaW5jbHVkZSAiVVVJRC5oIgogI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAKQEAgLTE0Nyw2ICsx
NDgsNTggQEAgdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6cmVtb3ZlVHJhY2soUlRDUnRwU2VuZGVy
JiBzZW5kZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIG1fYmFja2VuZC0+bWFya0FzTmVlZGlu
Z05lZ290aWF0aW9uKCk7CiB9CiAKK1JlZlB0cjxSVENSdHBUcmFuc2NlaXZlcj4gUlRDUGVlckNv
bm5lY3Rpb246OmFkZFRyYW5zY2VpdmVyKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBj
b25zdCBSdHBUcmFuc2NlaXZlckluaXQmIGluaXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAg
IGlmIChtX3NpZ25hbGluZ1N0YXRlID09IFNpZ25hbGluZ1N0YXRlOjpDbG9zZWQpIHsKKyAgICAg
ICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorCisgICAgU3RyaW5nIHRyYW5zY2VpdmVyTWlkID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmdldE5l
eHRNaWQoKTsKKyAgICBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCA9IHRyYWNrLT5raW5kKCk7Cisg
ICAgY29uc3QgU3RyaW5nJiB0cmFja0lkID0gdHJhY2stPmlkKCk7CisKKyAgICBhdXRvIHNlbmRl
ciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKFdURk1vdmUodHJhY2spLCBWZWN0b3I8U3RyaW5nPigp
LCAqdGhpcyk7CisgICAgYXV0byByZWNlaXZlciA9IG1fYmFja2VuZC0+Y3JlYXRlUmVjZWl2ZXIo
dHJhbnNjZWl2ZXJNaWQsIHRyYWNrS2luZCwgdHJhY2tJZCk7CisgICAgYXV0byB0cmFuc2NlaXZl
ciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoV1RGTW92ZShzZW5kZXIpLCBXVEZNb3ZlKHJl
Y2VpdmVyKSk7CisgICAgdHJhbnNjZWl2ZXItPnNldFByb3Zpc2lvbmFsTWlkKHRyYW5zY2VpdmVy
TWlkKTsKKworICAgIHJldHVybiBjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNj
ZWl2ZXIpLCBpbml0KTsKK30KKworUmVmUHRyPFJUQ1J0cFRyYW5zY2VpdmVyPiBSVENQZWVyQ29u
bmVjdGlvbjo6YWRkVHJhbnNjZWl2ZXIoY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBSdHBUcmFu
c2NlaXZlckluaXQmIGluaXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChtX3NpZ25h
bGluZ1N0YXRlID09IFNpZ25hbGluZ1N0YXRlOjpDbG9zZWQpIHsKKyAgICAgICAgZWMgPSBJTlZB
TElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgaWYg
KGtpbmQgIT0gImF1ZGlvIiAmJiBraW5kICE9ICJ2aWRlbyIpIHsKKyAgICAgICAgZWMgPSBUeXBl
RXJyb3I7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIFN0cmluZyB0cmFu
c2NlaXZlck1pZCA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpnZXROZXh0TWlkKCk7CisgICAgU3RyaW5n
IHRyYWNrSWQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CisKKyAgICBhdXRvIHNlbmRl
ciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKGtpbmQsIFZlY3RvcjxTdHJpbmc+KCksICp0aGlzKTsK
KyAgICBhdXRvIHJlY2VpdmVyID0gbV9iYWNrZW5kLT5jcmVhdGVSZWNlaXZlcih0cmFuc2NlaXZl
ck1pZCwga2luZCwgdHJhY2tJZCk7CisgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5z
Y2VpdmVyOjpjcmVhdGUoV1RGTW92ZShzZW5kZXIpLCBXVEZNb3ZlKHJlY2VpdmVyKSk7CisgICAg
dHJhbnNjZWl2ZXItPnNldFByb3Zpc2lvbmFsTWlkKHRyYW5zY2VpdmVyTWlkKTsKKworICAgIHJl
dHVybiBjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpLCBpbml0KTsK
K30KKworUmVmUHRyPFJUQ1J0cFRyYW5zY2VpdmVyPiBSVENQZWVyQ29ubmVjdGlvbjo6Y29tcGxl
dGVBZGRUcmFuc2NlaXZlcihSZWY8UlRDUnRwVHJhbnNjZWl2ZXI+JiYgdHJhbnNjZWl2ZXIsIGNv
bnN0IFJ0cFRyYW5zY2VpdmVySW5pdCYgaW5pdCkKK3sKKyAgICB0cmFuc2NlaXZlci0+c2V0RGly
ZWN0aW9uKHN0YXRpY19jYXN0PFJUQ1J0cFRyYW5zY2VpdmVyOjpEaXJlY3Rpb24+KGluaXQuZGly
ZWN0aW9uKSk7CisKKyAgICBtX3RyYW5zY2VpdmVyU2V0LmFwcGVuZCh0cmFuc2NlaXZlci5jb3B5
UmVmKCkpOworICAgIG1fYmFja2VuZC0+bWFya0FzTmVlZGluZ05lZ290aWF0aW9uKCk7CisKKyAg
ICByZXR1cm4gV1RGTW92ZSh0cmFuc2NlaXZlcik7Cit9CisKIHZvaWQgUlRDUGVlckNvbm5lY3Rp
b246OnF1ZXVlZENyZWF0ZU9mZmVyKGNvbnN0IERpY3Rpb25hcnkmIG9mZmVyT3B0aW9ucywgU2Vz
c2lvbkRlc2NyaXB0aW9uUHJvbWlzZSYmIHByb21pc2UpCiB7CiAgICAgaWYgKG1fc2lnbmFsaW5n
U3RhdGUgPT0gU2lnbmFsaW5nU3RhdGU6OkNsb3NlZCkgewpAQCAtMzcxLDExICs0MjQsNiBAQCBi
b29sIFJUQ1BlZXJDb25uZWN0aW9uOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkg
Y29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUlRDUGVlckNvbm5lY3Rpb246OmFk
ZFJlY2VpdmVyKFJUQ1J0cFJlY2VpdmVyJiByZWNlaXZlcikKLXsKLSAgICBtX3JlY2VpdmVyU2V0
LmFwcGVuZCgmcmVjZWl2ZXIpOwotfQotCiB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpzZXRTaWdu
YWxpbmdTdGF0ZShTaWduYWxpbmdTdGF0ZSBuZXdTdGF0ZSkKIHsKICAgICBtX3NpZ25hbGluZ1N0
YXRlID0gbmV3U3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKaW5kZXggMGM1NjVlZC4uNjYyMmU1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb24uaApAQCAtNDEsOCArNDEsNyBAQAogLy8gRklYTUU6IFdvcmthcm91bmQgZm9yIGJpbmRp
bmdzIGJ1ZyBodHRwOi8vd2Via2l0Lm9yZy9iLzE1MDEyMQogI2luY2x1ZGUgIkpTTWVkaWFTdHJl
YW0uaCIKICNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCIKLSNpbmNsdWRlICJSVENS
dHBSZWNlaXZlci5oIgotI2luY2x1ZGUgIlJUQ1J0cFNlbmRlci5oIgorI2luY2x1ZGUgIlJUQ1J0
cFRyYW5zY2VpdmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNjYsMTAgKzY1
LDI1IEBAIHB1YmxpYzoKIAogICAgIFZlY3RvcjxSZWZQdHI8UlRDUnRwU2VuZGVyPj4gZ2V0U2Vu
ZGVycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2VuZGVyU2V0OyB9CiAgICAgVmVjdG9y
PFJlZlB0cjxSVENSdHBSZWNlaXZlcj4+IGdldFJlY2VpdmVycygpIGNvbnN0IHsgcmV0dXJuIG1f
cmVjZWl2ZXJTZXQ7IH0KKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFJUQ1J0cFRyYW5zY2VpdmVy
Pj4mIGdldFRyYW5zY2VpdmVycygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNjZWl2ZXJTZXQ7IH0K
IAogICAgIFJlZlB0cjxSVENSdHBTZW5kZXI+IGFkZFRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNr
PiYmLCBWZWN0b3I8TWVkaWFTdHJlYW0qPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgcmVt
b3ZlVHJhY2soUlRDUnRwU2VuZGVyJiwgRXhjZXB0aW9uQ29kZSYpOwogCisgICAgZW51bSBjbGFz
cyBSdHBUcmFuc2NlaXZlckRpcmVjdGlvbiB7CisgICAgICAgIFNlbmRyZWN2LAorICAgICAgICBT
ZW5kb25seSwKKyAgICAgICAgUmVjdm9ubHksCisgICAgICAgIEluYWN0aXZlCisgICAgfTsKKwor
ICAgIHN0cnVjdCBSdHBUcmFuc2NlaXZlckluaXQgeworICAgICAgICBSdHBUcmFuc2NlaXZlckRp
cmVjdGlvbiBkaXJlY3Rpb247CisgICAgfTsKKworICAgIFJlZlB0cjxSVENSdHBUcmFuc2NlaXZl
cj4gYWRkVHJhbnNjZWl2ZXIoUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIGNvbnN0IFJ0cFRyYW5z
Y2VpdmVySW5pdCYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBSZWZQdHI8UlRDUnRwVHJhbnNjZWl2
ZXI+IGFkZFRyYW5zY2VpdmVyKGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgUnRwVHJhbnNjZWl2
ZXJJbml0JiwgRXhjZXB0aW9uQ29kZSYpOworCiAgICAgdm9pZCBxdWV1ZWRDcmVhdGVPZmZlcihj
b25zdCBEaWN0aW9uYXJ5JiBvZmZlck9wdGlvbnMsIFBlZXJDb25uZWN0aW9uOjpTZXNzaW9uRGVz
Y3JpcHRpb25Qcm9taXNlJiYpOwogICAgIHZvaWQgcXVldWVkQ3JlYXRlQW5zd2VyKGNvbnN0IERp
Y3Rpb25hcnkmIGFuc3dlck9wdGlvbnMsIFBlZXJDb25uZWN0aW9uOjpTZXNzaW9uRGVzY3JpcHRp
b25Qcm9taXNlJiYpOwogCkBAIC0xMDksNiArMTIzLDggQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBSVENQZWVyQ29ubmVjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPFJUQ0Nv
bmZpZ3VyYXRpb24+JiYsIEV4Y2VwdGlvbkNvZGUmKTsKIAorICAgIFJlZlB0cjxSVENSdHBUcmFu
c2NlaXZlcj4gY29tcGxldGVBZGRUcmFuc2NlaXZlcihSZWY8UlRDUnRwVHJhbnNjZWl2ZXI+JiYs
IGNvbnN0IFJ0cFRyYW5zY2VpdmVySW5pdCYpOworCiAgICAgLy8gRXZlbnRUYXJnZXQgaW1wbGVt
ZW50YXRpb24uCiAgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0K
ICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KQEAgLTEx
OSw3ICsxMzUsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3Vz
cGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gUGVlckNvbm5lY3Rpb25CYWNrZW5k
Q2xpZW50Ci0gICAgdm9pZCBhZGRSZWNlaXZlcihSVENSdHBSZWNlaXZlciYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc2V0U2lnbmFsaW5nU3RhdGUoUGVlckNvbm5lY3Rpb25TdGF0ZXM6OlNpZ25hbGlu
Z1N0YXRlKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZUljZUdhdGhlcmluZ1N0YXRlKFBlZXJD
b25uZWN0aW9uU3RhdGVzOjpJY2VHYXRoZXJpbmdTdGF0ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB1
cGRhdGVJY2VDb25uZWN0aW9uU3RhdGUoUGVlckNvbm5lY3Rpb25TdGF0ZXM6OkljZUNvbm5lY3Rp
b25TdGF0ZSkgb3ZlcnJpZGU7CkBAIC0xNDAsNiArMTU1LDcgQEAgcHJpdmF0ZToKIAogICAgIFZl
Y3RvcjxSZWZQdHI8UlRDUnRwU2VuZGVyPj4gbV9zZW5kZXJTZXQ7CiAgICAgVmVjdG9yPFJlZlB0
cjxSVENSdHBSZWNlaXZlcj4+IG1fcmVjZWl2ZXJTZXQ7CisgICAgVmVjdG9yPFJlZlB0cjxSVENS
dHBUcmFuc2NlaXZlcj4+IG1fdHJhbnNjZWl2ZXJTZXQ7CiAKICAgICBWZWN0b3I8UmVmUHRyPFJU
Q0RhdGFDaGFubmVsPj4gbV9kYXRhQ2hhbm5lbHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGwKaW5kZXggYjBh
ZGVhMy4uOWRhN2U4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGwKQEAgLTYwLDEwICs2MCwxNCBAQAogCiAg
ICAgc2VxdWVuY2U8UlRDUnRwU2VuZGVyPiBnZXRTZW5kZXJzKCk7CiAgICAgc2VxdWVuY2U8UlRD
UnRwUmVjZWl2ZXI+IGdldFJlY2VpdmVycygpOworICAgIHNlcXVlbmNlPFJUQ1J0cFRyYW5zY2Vp
dmVyPiBnZXRUcmFuc2NlaXZlcnMoKTsKIAogICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNl
c0V4Y2VwdGlvbl0gUlRDUnRwU2VuZGVyIGFkZFRyYWNrKE1lZGlhU3RyZWFtVHJhY2sgdHJhY2ss
IE1lZGlhU3RyZWFtLi4uIHN0cmVhbXMpOwogICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNl
c0V4Y2VwdGlvbl0gdm9pZCByZW1vdmVUcmFjayhSVENSdHBTZW5kZXIgc2VuZGVyKTsKIAorICAg
IFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNlc0V4Y2VwdGlvbl0gUlRDUnRwVHJhbnNjZWl2ZXIg
YWRkVHJhbnNjZWl2ZXIoTWVkaWFTdHJlYW1UcmFjayB0cmFjaywgb3B0aW9uYWwgUlRDUnRwVHJh
bnNjZWl2ZXJJbml0IGluaXQpOworICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNlc0V4Y2Vw
dGlvbl0gUlRDUnRwVHJhbnNjZWl2ZXIgYWRkVHJhbnNjZWl2ZXIoRE9NU3RyaW5nIGtpbmQsIG9w
dGlvbmFsIFJUQ1J0cFRyYW5zY2VpdmVySW5pdCBpbml0KTsKKwogICAgIFtKU0J1aWx0aW5dIFBy
b21pc2Ugc2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24gZGVzY3JpcHRp
b24pOwogICAgIC8vIExlZ2FjeSBzaWduYXR1cmU6IFByb21pc2Ugc2V0TG9jYWxEZXNjcmlwdGlv
bihSVENTZXNzaW9uRGVzY3JpcHRpb24gZGVzY3JpcHRpb24KICAgICAvLyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVm9pZENhbGxiYWNrIHN1Y2Nlc3NDYWxs
YmFjaywKQEAgLTExMiwzICsxMTYsMTQgQEAKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9u
aWNlZ2F0aGVyaW5nc3RhdGVjaGFuZ2U7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmRh
dGFjaGFubmVsOwogfTsKKworZW51bSBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbiB7CisgICAg
InNlbmRyZWN2IiwKKyAgICAic2VuZG9ubHkiLAorICAgICJyZWN2b25seSIsCisgICAgImluYWN0
aXZlIgorfTsKKworZGljdGlvbmFyeSBSVENSdHBUcmFuc2NlaXZlckluaXQgeworICAgIFJUQ1J0
cFRyYW5zY2VpdmVyRGlyZWN0aW9uIGRpcmVjdGlvbiA9ICJzZW5kcmVjdiI7Cit9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCmlu
ZGV4IDE0MzcyZDIuLjJlZjMxYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAKQEAgLTM3LDI4ICszNyw1MCBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJUQ1J0cFNlbmRlcjo6UlRDUnRwU2VuZGVyKFJlZjxNZWRpYVN0
cmVhbVRyYWNrPiYmIHRyYWNrLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBSVENS
dHBTZW5kZXJDbGllbnQmIGNsaWVudCkKLSAgICA6IFJUQ1J0cFNlbmRlclJlY2VpdmVyQmFzZShX
VEZNb3ZlKHRyYWNrKSkKK1JlZjxSVENSdHBTZW5kZXI+IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKFJl
ZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFt
SWRzLCBSVENSdHBTZW5kZXJDbGllbnQmIGNsaWVudCkKK3sKKyAgICBjb25zdCBTdHJpbmcmIHRy
YWNrS2luZCA9IHRyYWNrLT5raW5kKCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDUnRw
U2VuZGVyKFdURk1vdmUodHJhY2spLCB0cmFja0tpbmQsIFdURk1vdmUobWVkaWFTdHJlYW1JZHMp
LCBjbGllbnQpKTsKK30KKworUmVmPFJUQ1J0cFNlbmRlcj4gUlRDUnRwU2VuZGVyOjpjcmVhdGUo
Y29uc3QgU3RyaW5nJiB0cmFja0tpbmQsIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMs
IFJUQ1J0cFNlbmRlckNsaWVudCYgY2xpZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFJUQ1J0cFNlbmRlcihudWxscHRyLCB0cmFja0tpbmQsIFdURk1vdmUobWVkaWFTdHJlYW1JZHMp
LCBjbGllbnQpKTsKK30KKworUlRDUnRwU2VuZGVyOjpSVENSdHBTZW5kZXIoUmVmUHRyPE1lZGlh
U3RyZWFtVHJhY2s+JiYgdHJhY2ssIGNvbnN0IFN0cmluZyYgdHJhY2tLaW5kLCBWZWN0b3I8U3Ry
aW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBSVENSdHBTZW5kZXJDbGllbnQmIGNsaWVudCkKKyAgICA6
IFJUQ1J0cFNlbmRlclJlY2VpdmVyQmFzZSgpCisgICAgLCBtX3RyYWNrS2luZCh0cmFja0tpbmQp
CiAgICAgLCBtX21lZGlhU3RyZWFtSWRzKFdURk1vdmUobWVkaWFTdHJlYW1JZHMpKQogICAgICwg
bV9jbGllbnQoJmNsaWVudCkKIHsKLSAgICAvLyBUaGUgb3JpZ2luYWwgdHJhY2sgaWQgaXMgYWx3
YXlzIHVzZWQgaW4gbmVnb3RpYXRpb24gZXZlbiBpZiB0aGUgdHJhY2sgaXMgcmVwbGFjZWQuCi0g
ICAgbV90cmFja0lkID0gbV90cmFjay0+aWQoKTsKKyAgICBpZiAodHJhY2spCisgICAgICAgIHNl
dFRyYWNrKFdURk1vdmUodHJhY2spKTsKK30KKwordm9pZCBSVENSdHBTZW5kZXI6OnNldFRyYWNr
KFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrKQoreworICAgIC8vIFNhdmUgdGhlIGlk
IGZyb20gdGhlIGZpcnN0IG5vbi1udWxsIHRyYWNrIHNldC4gVGhhdCBpZCB3aWxsIGJlIHVzZWQg
dG8gbmVnb3RpYXRlIHRoZSBzZW5kZXIKKyAgICAvLyBldmVuIGlmIHRoZSB0cmFjayBpcyByZXBs
YWNlZC4KKyAgICBpZiAoIW1fdHJhY2sgJiYgdHJhY2spCisgICAgICAgIG1fdHJhY2tJZCA9IHRy
YWNrLT5pZCgpOworCisgICAgbV90cmFjayA9IFdURk1vdmUodHJhY2spOwogfQogCi12b2lkIFJU
Q1J0cFNlbmRlcjo6cmVwbGFjZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2smIHdpdGhUcmFjaywgUGVl
ckNvbm5lY3Rpb246OlZvaWRQcm9taXNlJiYgcHJvbWlzZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit2
b2lkIFJUQ1J0cFNlbmRlcjo6cmVwbGFjZVRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHdp
dGhUcmFjaywgUGVlckNvbm5lY3Rpb246OlZvaWRQcm9taXNlJiYgcHJvbWlzZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7Ci0gICAgaWYgKCFtX2NsaWVudCkgeworICAgIGlmIChpc1N0b3BwZWQoKSkg
ewogICAgICAgICBwcm9taXNlLnJlamVjdChJTlZBTElEX1NUQVRFX0VSUik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBpZiAobV90cmFjay0+a2luZCgpICE9IHdpdGhUcmFjay5raW5k
KCkpIHsKKyAgICBpZiAobV90cmFja0tpbmQgIT0gd2l0aFRyYWNrLT5raW5kKCkpIHsKICAgICAg
ICAgZWMgPSBUeXBlRXJyb3I7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2NsaWVu
dC0+cmVwbGFjZVRyYWNrKCp0aGlzLCB3aXRoVHJhY2ssIFdURk1vdmUocHJvbWlzZSkpOworICAg
IG1fY2xpZW50LT5yZXBsYWNlVHJhY2soKnRoaXMsIFdURk1vdmUod2l0aFRyYWNrKSwgV1RGTW92
ZShwcm9taXNlKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5oCmluZGV4IDYwYjk5MjAu
LmRhOWU1ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwU2VuZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTZW5kZXIuaApAQCAtNDgsMjIgKzQ4LDI2IEBAIHB1YmxpYzoKIAogY2xhc3MgUlRDUnRw
U2VuZGVyIDogcHVibGljIFJUQ1J0cFNlbmRlclJlY2VpdmVyQmFzZSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxSVENSdHBTZW5kZXI+IGNyZWF0ZShSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0
cmFjaywgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgUlRDUnRwU2VuZGVyQ2xpZW50
JiBjbGllbnQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSVENSdHBTZW5k
ZXIoV1RGTW92ZSh0cmFjayksIFdURk1vdmUobWVkaWFTdHJlYW1JZHMpLCBjbGllbnQpKTsKLSAg
ICB9CisgICAgc3RhdGljIFJlZjxSVENSdHBTZW5kZXI+IGNyZWF0ZShSZWY8TWVkaWFTdHJlYW1U
cmFjaz4mJiwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgUlRDUnRwU2VuZGVyQ2xp
ZW50Jik7CisgICAgc3RhdGljIFJlZjxSVENSdHBTZW5kZXI+IGNyZWF0ZShjb25zdCBTdHJpbmcm
IHRyYWNrS2luZCwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgUlRDUnRwU2VuZGVy
Q2xpZW50Jik7CisKKyAgICBjb25zdCBTdHJpbmcmIHRyYWNrSWQoKSBjb25zdCB7IHJldHVybiBt
X3RyYWNrSWQ7IH0KKyAgICBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCgpIGNvbnN0IHsgcmV0dXJu
IG1fdHJhY2tLaW5kOyB9CiAKLSAgICBjb25zdCBTdHJpbmcmIHRyYWNrSWQoKSB7IHJldHVybiBt
X3RyYWNrSWQ7IH0KICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgbWVkaWFTdHJlYW1JZHMoKSBj
b25zdCB7IHJldHVybiBtX21lZGlhU3RyZWFtSWRzOyB9CisgICAgdm9pZCBzZXRNZWRpYVN0cmVh
bUlkcyhWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzKSB7IG1fbWVkaWFTdHJlYW1JZHMg
PSBXVEZNb3ZlKG1lZGlhU3RyZWFtSWRzKTsgfQogCisgICAgYm9vbCBpc1N0b3BwZWQoKSBjb25z
dCB7IHJldHVybiBtX2NsaWVudCA9PSBudWxscHRyOyB9CiAgICAgdm9pZCBzdG9wKCkgeyBtX2Ns
aWVudCA9IG51bGxwdHI7IH0KKyAgICB2b2lkIHNldFRyYWNrKFJlZlB0cjxNZWRpYVN0cmVhbVRy
YWNrPiYmKTsKIAotICAgIHZvaWQgcmVwbGFjZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2smLCBQZWVy
Q29ubmVjdGlvbjo6Vm9pZFByb21pc2UmJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcmVw
bGFjZVRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBQZWVyQ29ubmVjdGlvbjo6Vm9pZFBy
b21pc2UmJiwgRXhjZXB0aW9uQ29kZSYpOwogCiBwcml2YXRlOgotICAgIFJUQ1J0cFNlbmRlcihS
ZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywg
UlRDUnRwU2VuZGVyQ2xpZW50Jik7CisgICAgUlRDUnRwU2VuZGVyKFJlZlB0cjxNZWRpYVN0cmVh
bVRyYWNrPiYmLCBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCwgVmVjdG9yPFN0cmluZz4mJiBtZWRp
YVN0cmVhbUlkcywgUlRDUnRwU2VuZGVyQ2xpZW50Jik7CiAKICAgICBTdHJpbmcgbV90cmFja0lk
OworICAgIFN0cmluZyBtX3RyYWNrS2luZDsKICAgICBWZWN0b3I8U3RyaW5nPiBtX21lZGlhU3Ry
ZWFtSWRzOwogICAgIFJUQ1J0cFNlbmRlckNsaWVudCogbV9jbGllbnQ7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXJSZWNlaXZl
ckJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVy
UmVjZWl2ZXJCYXNlLmgKaW5kZXggMzljOWViYy4uZDUxMGRhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXJSZWNlaXZlckJhc2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlclJlY2Vp
dmVyQmFzZS5oCkBAIC00NiwxNCArNDYsMTcgQEAgY2xhc3MgUlRDUnRwU2VuZGVyUmVjZWl2ZXJC
YXNlIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlPiwgcHUKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5SVENSdHBTZW5kZXJSZWNlaXZlckJhc2UoKSB7IH0KIAotICAg
IE1lZGlhU3RyZWFtVHJhY2smIHRyYWNrKCkgeyByZXR1cm4gbV90cmFjazsgfQorICAgIE1lZGlh
U3RyZWFtVHJhY2sqIHRyYWNrKCkgeyByZXR1cm4gbV90cmFjay5nZXQoKTsgfQogCiBwcm90ZWN0
ZWQ6CisgICAgUlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlKCkKKyAgICB7IH0KKwogICAgIFJUQ1J0
cFNlbmRlclJlY2VpdmVyQmFzZShSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaykKICAgICAg
ICAgOiBtX3RyYWNrKFdURk1vdmUodHJhY2spKQogICAgIHsgfQogCi0gICAgUmVmPE1lZGlhU3Ry
ZWFtVHJhY2s+IG1fdHJhY2s7CisgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IG1fdHJhY2s7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjODQ4OGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVyLmNwcApAQCAt
MCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBFcmljc3NvbiBBQi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUg
bmFtZSBvZiBFcmljc3NvbiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAg
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20g
dGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUlRDUnRw
VHJhbnNjZWl2ZXIuaCIKKworI2lmIEVOQUJMRShXRUJfUlRDKQorCisjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2RlZmluZSBTVFJJTkdf
RlVOQ1RJT04obmFtZSkgXAorICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIG5hbWUjI1N0cmluZygp
IFwKKyAgICB7IFwKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4g
bmFtZSB7IEFTQ0lJTGl0ZXJhbCgjbmFtZSkgfTsgXAorICAgICAgICByZXR1cm4gbmFtZTsgXAor
ICAgIH0KKworU1RSSU5HX0ZVTkNUSU9OKHNlbmRyZWN2KQorU1RSSU5HX0ZVTkNUSU9OKHNlbmRv
bmx5KQorU1RSSU5HX0ZVTkNUSU9OKHJlY3Zvbmx5KQorU1RSSU5HX0ZVTkNUSU9OKGluYWN0aXZl
KQorCitSZWY8UlRDUnRwVHJhbnNjZWl2ZXI+IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoUmVm
UHRyPFJUQ1J0cFNlbmRlcj4mJiBzZW5kZXIsIFJlZlB0cjxSVENSdHBSZWNlaXZlcj4mJiByZWNl
aXZlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSVENSdHBUcmFuc2NlaXZlcihXVEZN
b3ZlKHNlbmRlciksIFdURk1vdmUocmVjZWl2ZXIpKSk7Cit9CisKK1N0cmluZyBSVENSdHBUcmFu
c2NlaXZlcjo6Z2V0TmV4dE1pZCgpCit7CisgICAgc3RhdGljIHVuc2lnbmVkIG1pZCA9IDA7Cisg
ICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKCsrbWlkKTsKK30KKworUlRDUnRwVHJhbnNjZWl2ZXI6
OlJUQ1J0cFRyYW5zY2VpdmVyKFJlZlB0cjxSVENSdHBTZW5kZXI+JiYgc2VuZGVyLCBSZWZQdHI8
UlRDUnRwUmVjZWl2ZXI+JiYgcmVjZWl2ZXIpCisgICAgOiBtX2RpcmVjdGlvbihEaXJlY3Rpb246
OlNlbmRyZWN2KQorICAgICwgbV9zZW5kZXIoc2VuZGVyKQorICAgICwgbV9yZWNlaXZlcihyZWNl
aXZlcikKK3sKK30KKworY29uc3QgU3RyaW5nJiBSVENSdHBUcmFuc2NlaXZlcjo6ZGlyZWN0aW9u
U3RyaW5nKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fZGlyZWN0aW9uKSB7CisgICAgY2FzZSBE
aXJlY3Rpb246OlNlbmRyZWN2OiByZXR1cm4gc2VuZHJlY3ZTdHJpbmcoKTsKKyAgICBjYXNlIERp
cmVjdGlvbjo6U2VuZG9ubHk6IHJldHVybiBzZW5kb25seVN0cmluZygpOworICAgIGNhc2UgRGly
ZWN0aW9uOjpSZWN2b25seTogcmV0dXJuIHJlY3Zvbmx5U3RyaW5nKCk7CisgICAgY2FzZSBEaXJl
Y3Rpb246OkluYWN0aXZlOiByZXR1cm4gaW5hY3RpdmVTdHJpbmcoKTsKKyAgICB9CisKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKK30KKworYm9v
bCBSVENSdHBUcmFuc2NlaXZlcjo6aGFzU2VuZGluZ0RpcmVjdGlvbigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fZGlyZWN0aW9uID09IERpcmVjdGlvbjo6U2VuZHJlY3YgfHwgbV9kaXJlY3Rpb24g
PT0gRGlyZWN0aW9uOjpTZW5kb25seTsKK30KKwordm9pZCBSVENSdHBUcmFuc2NlaXZlcjo6ZW5h
YmxlU2VuZGluZ0RpcmVjdGlvbigpCit7CisgICAgaWYgKG1fZGlyZWN0aW9uID09IERpcmVjdGlv
bjo6UmVjdm9ubHkpCisgICAgICAgIG1fZGlyZWN0aW9uID0gRGlyZWN0aW9uOjpTZW5kcmVjdjsK
KyAgICBlbHNlIGlmIChtX2RpcmVjdGlvbiA9PSBEaXJlY3Rpb246OkluYWN0aXZlKQorICAgICAg
ICBtX2RpcmVjdGlvbiA9IERpcmVjdGlvbjo6U2VuZG9ubHk7Cit9CisKK3ZvaWQgUlRDUnRwVHJh
bnNjZWl2ZXI6OmRpc2FibGVTZW5kaW5nRGlyZWN0aW9uKCkKK3sKKyAgICBpZiAobV9kaXJlY3Rp
b24gPT0gRGlyZWN0aW9uOjpTZW5kcmVjdikKKyAgICAgICAgbV9kaXJlY3Rpb24gPSBEaXJlY3Rp
b246OlJlY3Zvbmx5OworICAgIGVsc2UgaWYgKG1fZGlyZWN0aW9uID09IERpcmVjdGlvbjo6U2Vu
ZG9ubHkpCisgICAgICAgIG1fZGlyZWN0aW9uID0gRGlyZWN0aW9uOjpJbmFjdGl2ZTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2Vp
dmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2Vp
dmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDhkM2M1MwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJh
bnNjZWl2ZXIuaApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEVy
aWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAz
LiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRy
aWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUlRDUnRwVHJhbnNjZWl2
ZXJfaAorI2RlZmluZSBSVENSdHBUcmFuc2NlaXZlcl9oCisKKyNpZiBFTkFCTEUoV0VCX1JUQykK
KworI2luY2x1ZGUgIlJUQ1J0cFJlY2VpdmVyLmgiCisjaW5jbHVkZSAiUlRDUnRwU2VuZGVyLmgi
CisjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUlRDUnRwVHJhbnNjZWl2ZXIgOiBw
dWJsaWMgUmVmQ291bnRlZDxSVENSdHBUcmFuc2NlaXZlcj4sIHB1YmxpYyBTY3JpcHRXcmFwcGFi
bGUgeworcHVibGljOgorICAgIGVudW0gY2xhc3MgRGlyZWN0aW9uIHsKKyAgICAgICAgU2VuZHJl
Y3YsCisgICAgICAgIFNlbmRvbmx5LAorICAgICAgICBSZWN2b25seSwKKyAgICAgICAgSW5hY3Rp
dmUKKyAgICB9OworCisgICAgc3RhdGljIFJlZjxSVENSdHBUcmFuc2NlaXZlcj4gY3JlYXRlKFJl
ZlB0cjxSVENSdHBTZW5kZXI+JiYsIFJlZlB0cjxSVENSdHBSZWNlaXZlcj4mJik7CisgICAgdmly
dHVhbCB+UlRDUnRwVHJhbnNjZWl2ZXIoKSB7IH0KKworICAgIGJvb2wgaGFzU2VuZGluZ0RpcmVj
dGlvbigpIGNvbnN0OworICAgIHZvaWQgZW5hYmxlU2VuZGluZ0RpcmVjdGlvbigpOworICAgIHZv
aWQgZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsKKworICAgIGNvbnN0IFN0cmluZyYgZGlyZWN0
aW9uU3RyaW5nKCkgY29uc3Q7CisgICAgRGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fZGlyZWN0aW9uOyB9CisgICAgdm9pZCBzZXREaXJlY3Rpb24oRGlyZWN0aW9uIGRpcmVj
dGlvbikgeyBtX2RpcmVjdGlvbiA9IGRpcmVjdGlvbjsgfQorCisgICAgY29uc3QgU3RyaW5nJiBw
cm92aXNpb25hbE1pZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlzaW9uYWxNaWQ7IH0KKyAgICB2
b2lkIHNldFByb3Zpc2lvbmFsTWlkKGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxNaWQpIHsgbV9w
cm92aXNpb25hbE1pZCA9IHByb3Zpc2lvbmFsTWlkOyB9CisKKyAgICBjb25zdCBTdHJpbmcmIG1p
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWlkOyB9CisgICAgdm9pZCBzZXRNaWQoY29uc3QgU3RyaW5n
JiBtaWQpIHsgbV9taWQgPSBtaWQ7IH0KKworICAgIFJUQ1J0cFNlbmRlciogc2VuZGVyKCkgY29u
c3QgeyByZXR1cm4gbV9zZW5kZXIuZ2V0KCk7IH0KKyAgICBSVENSdHBSZWNlaXZlciogcmVjZWl2
ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlY2VpdmVyLmdldCgpOyB9CisKKyAgICBib29sIHN0b3Bw
ZWQoKSBjb25zdCB7IHJldHVybiBtX3N0b3BwZWQ7IH0KKyAgICB2b2lkIHN0b3AoKSB7IG1fc3Rv
cHBlZCA9IHRydWU7IH0KKworICAgIHN0YXRpYyBTdHJpbmcgZ2V0TmV4dE1pZCgpOworCitwcml2
YXRlOgorICAgIFJUQ1J0cFRyYW5zY2VpdmVyKFJlZlB0cjxSVENSdHBTZW5kZXI+JiYsIFJlZlB0
cjxSVENSdHBSZWNlaXZlcj4mJik7CisKKyAgICBTdHJpbmcgbV9wcm92aXNpb25hbE1pZDsKKyAg
ICBTdHJpbmcgbV9taWQ7CisKKyAgICBEaXJlY3Rpb24gbV9kaXJlY3Rpb247CisKKyAgICBSZWZQ
dHI8UlRDUnRwU2VuZGVyPiBtX3NlbmRlcjsKKyAgICBSZWZQdHI8UlRDUnRwUmVjZWl2ZXI+IG1f
cmVjZWl2ZXI7CisKKyAgICBib29sIG1fc3RvcHBlZCB7IGZhbHNlIH07Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JUQykKKworI2VuZGlmIC8v
IFJUQ1J0cFRyYW5zY2VpdmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2NlaXZlci5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMWI2M2NjNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuaWRsCkBAIC0wLDAgKzEsNDkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAg
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgRXJp
Y3Nzb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAg
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQl9SVEMKK10gaW50ZXJmYWNlIFJUQ1J0cFRy
YW5zY2VpdmVyIHsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBtaWQ7CisgICAg
cmVhZG9ubHkgYXR0cmlidXRlIFJUQ1J0cFNlbmRlciBzZW5kZXI7CisgICAgcmVhZG9ubHkgYXR0
cmlidXRlIFJUQ1J0cFJlY2VpdmVyIHJlY2VpdmVyOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBi
b29sZWFuIHN0b3BwZWQ7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFJUQ1J0cFRyYW5zY2VpdmVy
RGlyZWN0aW9uIGRpcmVjdGlvbjsKKworICAgIHZvaWQgc2V0RGlyZWN0aW9uKFJUQ1J0cFRyYW5z
Y2VpdmVyRGlyZWN0aW9uIGRpcmVjdGlvbik7CisgICAgdm9pZCBzdG9wKCk7Cit9OworCitlbnVt
IFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uIHsKKyAgICAic2VuZHJlY3YiLAorICAgICJzZW5k
b25seSIsCisgICAgInJlY3Zvbmx5IiwKKyAgICAiaW5hY3RpdmUiCit9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGYyOWE0NGIu
LmU1OGJmNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTIzODcsNiArMjM4Nyw4IEBACiAJCTVFMkM0Mzc0MUJDRjBENzUwMDAx
RTJCQyAvKiBKU1JUQ1J0cFNlbmRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUUyQzQzNzAxQkNGMEQ2OTAwMDFFMkJDIC8qIEpTUlRDUnRwU2VuZGVy
LmggKi87IH07CiAJCTVFMkM0MzdCMUJDRjlBNTcwMDAxRTJCQyAvKiBSVENQZWVyQ29ubmVjdGlv
bkJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1RTJDNDM3NjFCQ0Y5QTBCMDAwMUUyQkMgLyogUlRDUGVlckNvbm5lY3Rpb25CdWlsdGlucy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVFMkM0
MzdDMUJDRjlBODQwMDAxRTJCQyAvKiBSVENQZWVyQ29ubmVjdGlvbkludGVybmFsc0J1aWx0aW5z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RTJDNDM3
OTFCQ0Y5QTBCMDAwMUUyQkMgLyogUlRDUGVlckNvbm5lY3Rpb25JbnRlcm5hbHNCdWlsdGlucy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTVFNUUy
QjEzMUNGQzNFNzAwMDBDMEQ4NSAvKiBSVENSdHBUcmFuc2NlaXZlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RTVFMkIxMDFDRkMzRTRCMDAwQzBE
ODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIuY3BwICovOyB9OworCQk1RTVFMkIxNDFDRkMzRTc1MDAw
QzBEODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVFNUUyQjExMUNGQzNFNEIwMDBDMEQ4NSAvKiBSVENSdHBUcmFu
c2NlaXZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTVFQTNENkRGMUM4NTlEN0YwMDMwMEJCQiAvKiBNb2NrTWVkaWFFbmRwb2ludC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUVBM0Q2REUxQzg1OUQ1
MzAwMzAwQkJCIC8qIE1vY2tNZWRpYUVuZHBvaW50LmggKi87IH07CiAJCTVFQTNENkUwMUM4NTlE
ODQwMDMwMEJCQiAvKiBNb2NrTWVkaWFFbmRwb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RUEzRDZERDFDODU5RDUzMDAzMDBCQkIgLyogTW9j
a01lZGlhRW5kcG9pbnQuY3BwICovOyB9OwogCQk1RUEzRDZFMzFDODU5REMxMDAzMDBCQkIgLyog
U0RQUHJvY2Vzc29yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVFQTNENkUxMUM4NTlEQUEwMDMwMEJCQiAvKiBTRFBQcm9jZXNzb3IuY3BwICovOyB9
OwpAQCAtOTk5Myw2ICs5OTk1LDkgQEAKIAkJNUUyQzQzNzYxQkNGOUEwQjAwMDFFMkJDIC8qIFJU
Q1BlZXJDb25uZWN0aW9uQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUlRDUGVlckNvbm5lY3Rpb25CdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1RTJDNDM3ODFCQ0Y5QTBCMDAwMUUyQkMgLyogUlRDUGVlckNvbm5lY3Rpb25JbnRlcm5h
bHNCdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSVENQ
ZWVyQ29ubmVjdGlvbkludGVybmFsc0J1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUUyQzQzNzkxQkNGOUEwQjAwMDFFMkJDIC8qIFJUQ1BlZXJDb25uZWN0aW9uSW50
ZXJuYWxzQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDUGVl
ckNvbm5lY3Rpb25JbnRlcm5hbHNCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1RTVFMkIxMDFDRkMzRTRCMDAwQzBEODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUlRDUnRwVHJhbnNjZWl2ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1RTVFMkIxMTFDRkMzRTRCMDAwQzBEODUg
LyogUlRDUnRwVHJhbnNjZWl2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UlRDUnRwVHJhbnNjZWl2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUU1RTJC
MTIxQ0ZDM0U0QjAwMEMwRDg1IC8qIFJUQ1J0cFRyYW5zY2VpdmVyLmlkbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBSVENSdHBUcmFuc2NlaXZlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVFQTNENkREMUM4NTlENTMwMDMwMEJCQiAvKiBNb2NrTWVkaWFFbmRwb2ludC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2NrTWVkaWFFbmRwb2ludC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVFQTNENkRFMUM4NTlENTMwMDMwMEJC
QiAvKiBNb2NrTWVkaWFFbmRwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNb2NrTWVkaWFFbmRwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RUEz
RDZFMTFDODU5REFBMDAzMDBCQkIgLyogU0RQUHJvY2Vzc29yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNEUFByb2Nlc3Nvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNTQ3NCw2ICsxNTQ3OSw5IEBACiAJCQkJNUUyQzQzNUExQkNFRTMwRDAw
MDFFMkJDIC8qIFJUQ1J0cFNlbmRlci5oICovLAogCQkJCTVFMkM0MzVCMUJDRUUzMEQwMDAxRTJC
QyAvKiBSVENSdHBTZW5kZXIuaWRsICovLAogCQkJCTVFMkM0MzVEMUJDRUUzMEQwMDAxRTJCQyAv
KiBSVENSdHBTZW5kZXJSZWNlaXZlckJhc2UuaCAqLywKKwkJCQk1RTVFMkIxMDFDRkMzRTRCMDAw
QzBEODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIuY3BwICovLAorCQkJCTVFNUUyQjExMUNGQzNFNEIw
MDBDMEQ4NSAvKiBSVENSdHBUcmFuc2NlaXZlci5oICovLAorCQkJCTVFNUUyQjEyMUNGQzNFNEIw
MDBDMEQ4NSAvKiBSVENSdHBUcmFuc2NlaXZlci5pZGwgKi8sCiAJCQkJMDcyMjFCN0ExN0NFQzMy
NzAwODQ4RTUxIC8qIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbi5jcHAgKi8sCiAJCQkJMDcyMjFCN0Ix
N0NFQzMyNzAwODQ4RTUxIC8qIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbi5oICovLAogCQkJCTA3MjIx
QjdDMTdDRUMzMjcwMDg0OEU1MSAvKiBSVENTZXNzaW9uRGVzY3JpcHRpb24uaWRsICovLApAQCAt
MjcxODksNiArMjcxOTcsNyBAQAogCQkJCTRFMTk1OTIyMEEzOURBQkEwMDIyMEZFNSAvKiBNZWRp
YUZlYXR1cmVOYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdBNkQxRUMxNDkxMTM3NzAwMDUx
RDBDIC8qIE1lZGlhRnJhZ21lbnRVUklQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE4
MDBFMEExOTUxNkUwMEE4RUY1RiAvKiBNZWRpYUxpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTVF
NUUyQjE0MUNGQzNFNzUwMDBDMEQ4NSAvKiBSVENSdHBUcmFuc2NlaXZlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNUVCQjg5MzExQzc3NzdGRjAwQzY1RDQxIC8qIE1lZGlhUGF5bG9hZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDdFM0RGRDExQTlFNzg2NTAwNzY0Q0E4IC8qIE1lZGlhUGxheWJhY2tU
YXJnZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OTIxNjU1MUFBNTYwQUEwMEEzQzA0OSAvKiBN
ZWRpYVBsYXliYWNrVGFyZ2V0Q2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMwOTUyLDYgKzMw
OTYxLDcgQEAKIAkJCQk0MTcyNTNBQTEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxl
bWVudHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREVCQ0NERDUxNjY0NkVCMjAwQTQ1MkUxIC8q
IE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDI3RjZF
NzE0NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTVFNUUyQjEzMUNGQzNFNzAwMDBDMEQ4NSAvKiBSVENSdHBUcmFuc2NlaXZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxRjNDM0JFQTEzNUNBRjNDMDBCOEMxQUMgLyogTWVkaWFDb250cm9s
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTU3QUY4MTEyRjFGQjA0MDBBOEM2RjUgLyogTWVk
aWFDb250cm9sc0FwcGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQUI2RDI4MTdDN0RFNkMw
MEM2MEIzNCAvKiBNZWRpYUNvbnRyb2xzSG9zdC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnQuaAppbmRl
eCBjMDliOWVhLi4zZGM4N2U0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnQuaApAQCAtMzQsNiArMzQsNyBAQAogI2lmIEVOQUJM
RShXRUJfUlRDKQogCiAjaW5jbHVkZSAiTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24uaCIKKyNp
bmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc4LDYgKzc5LDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB2b2lkIGFkZFJlbW90ZUNhbmRpZGF0ZShJY2VDYW5kaWRhdGUmLCB1bnNp
Z25lZCBtZGVzY0luZGV4LCBjb25zdCBTdHJpbmcmIHVmcmFnLCBjb25zdCBTdHJpbmcmIHBhc3N3
b3JkKSA9IDA7CiAKKyAgICB2aXJ0dWFsIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiBjcmVhdGVN
dXRlZFJlbW90ZVNvdXJjZShjb25zdCBTdHJpbmcmIG1pZCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
VHlwZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXBsYWNlU2VuZFNvdXJjZShSZWFsdGltZU1l
ZGlhU291cmNlJiwgdW5zaWduZWQgbWRlc2NJbmRleCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lk
IHN0b3AoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCmluZGV4IDA0ZDA0NjUuLjIyNmFlZTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
TWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCkBAIC00NSwxMSArNDUsNiBAQCBSZWFsdGltZU1lZGlh
U291cmNlOjpSZWFsdGltZU1lZGlhU291cmNlKGNvbnN0IFN0cmluZyYgaWQsIFR5cGUgdHlwZSwg
Y29uc3QgU3RyaQogICAgIDogbV9pZChpZCkKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9u
YW1lKG5hbWUpCi0gICAgLCBtX3N0b3BwZWQoZmFsc2UpCi0gICAgLCBtX211dGVkKGZhbHNlKQot
ICAgICwgbV9yZWFkb25seShmYWxzZSkKLSAgICAsIG1fcmVtb3RlKGZhbHNlKQotICAgICwgbV9m
aXRuZXNzU2NvcmUoMCkKIHsKICAgICAvLyBGSVhNRSgxNDcyMDUpOiBOZWVkIHRvIGltcGxlbWVu
dCBmaXRuZXNzIHNjb3JlIGZvciBjb25zdHJhaW50cwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgKaW5kZXgg
MjljOGE1MS4uYzFmNWU5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaApAQCAtMTIwLDE5ICsxMjAsMjAg
QEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2UoY29uc3QgU3Ry
aW5nJiBpZCwgVHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAorICAgIGJvb2wgbV9tdXRlZCB7
IGZhbHNlIH07CisKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1faWQ7CiAgICAgU3RyaW5nIG1fcGVy
c2lzdGVudElEOwogICAgIFR5cGUgbV90eXBlOwogICAgIFN0cmluZyBtX25hbWU7Ci0gICAgYm9v
bCBtX3N0b3BwZWQ7CisgICAgYm9vbCBtX3N0b3BwZWQgeyBmYWxzZSB9OwogICAgIFZlY3RvcjxP
YnNlcnZlcio+IG1fb2JzZXJ2ZXJzOwogCi0gICAgYm9vbCBtX211dGVkOwotICAgIGJvb2wgbV9y
ZWFkb25seTsKLSAgICBib29sIG1fcmVtb3RlOworICAgIGJvb2wgbV9yZWFkb25seSB7IGZhbHNl
IH07CisgICAgYm9vbCBtX3JlbW90ZSB7IGZhbHNlIH07CiAgICAgCi0gICAgdW5zaWduZWQgbV9m
aXRuZXNzU2NvcmU7CisgICAgdW5zaWduZWQgbV9maXRuZXNzU2NvcmUgeyAwIH07CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja01lZGlhRW5kcG9pbnQuY3BwCmluZGV4IDVhMWJkMzUuLmQ2YmMxMWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRW5kcG9pbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRW5kcG9pbnQuY3BwCkBA
IC0zNCw2ICszNCw4IEBACiAjaW5jbHVkZSAiTW9ja01lZGlhRW5kcG9pbnQuaCIKIAogI2luY2x1
ZGUgIk1lZGlhUGF5bG9hZC5oIgorI2luY2x1ZGUgIk1vY2tSZWFsdGltZUF1ZGlvU291cmNlLmgi
CisjaW5jbHVkZSAiTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaCIKICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNTMsNiArMTU1LDE1IEBAIHZv
aWQgTW9ja01lZGlhRW5kcG9pbnQ6OmFkZFJlbW90ZUNhbmRpZGF0ZShJY2VDYW5kaWRhdGUmIGNh
bmRpZGF0ZSwgdW5zaWduZWQgbWRlCiAgICAgVU5VU0VEX1BBUkFNKHBhc3N3b3JkKTsKIH0KIAor
UmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+IE1vY2tNZWRpYUVuZHBvaW50OjpjcmVhdGVNdXRlZFJl
bW90ZVNvdXJjZShjb25zdCBTdHJpbmcmLCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUp
Cit7CisgICAgaWYgKHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8pCisgICAgICAg
IHJldHVybiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6Y3JlYXRlTXV0ZWQoInJlbW90ZSBhdWRp
byIpOworCisgICAgQVNTRVJUKHR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8pOwor
ICAgIHJldHVybiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlTXV0ZWQoInJlbW90ZSB2
aWRlbyIpOworfQorCiB2b2lkIE1vY2tNZWRpYUVuZHBvaW50OjpyZXBsYWNlU2VuZFNvdXJjZShS
ZWFsdGltZU1lZGlhU291cmNlJiBuZXdTb3VyY2UsIHVuc2lnbmVkIG1kZXNjSW5kZXgpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKG5ld1NvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVuZHBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL01vY2tNZWRpYUVuZHBvaW50LmgKaW5kZXggZGRjMjhlMC4uMTBjNmJiMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFFbmRwb2ludC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRW5kcG9pbnQuaApAQCAt
NTUsNiArNTUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZFJlbW90ZUNhbmRpZGF0ZShJY2VD
YW5kaWRhdGUmLCB1bnNpZ25lZCBtZGVzY0luZGV4LCBjb25zdCBTdHJpbmcmIHVmcmFnLCBjb25z
dCBTdHJpbmcmIHBhc3N3b3JkKSBvdmVycmlkZTsKIAorICAgIFJlZjxSZWFsdGltZU1lZGlhU291
cmNlPiBjcmVhdGVNdXRlZFJlbW90ZVNvdXJjZShjb25zdCBTdHJpbmcmIG1pZCwgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6VHlwZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXBsYWNlU2VuZFNvdXJjZShS
ZWFsdGltZU1lZGlhU291cmNlJiwgdW5zaWduZWQgbWRlc2NJbmRleCkgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKaW5kZXggOWRmZDY1MS4uMzBi
MjQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKQEAgLTQwLDEzICs0MCwyMSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVJlZlB0cjxNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZT4gTW9ja1JlYWx0aW1l
QXVkaW9Tb3VyY2U6OmNyZWF0ZSgpCitSZWY8TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U+IE1vY2tS
ZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGUoKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcg
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9j
a1JlYWx0aW1lQXVkaW9Tb3VyY2UoTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6Om1vY2tBdWRpb1Nv
dXJjZU5hbWUoKSkpOwogfQogCi1Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6TW9ja1JlYWx0aW1l
QXVkaW9Tb3VyY2UoKQotICAgIDogTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UoY3JlYXRlQ2Fub25p
Y2FsVVVJRFN0cmluZygpLCBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbywgbW9ja0F1ZGlvU291
cmNlTmFtZSgpKQorUmVmPE1vY2tSZWFsdGltZUF1ZGlvU291cmNlPiBNb2NrUmVhbHRpbWVBdWRp
b1NvdXJjZTo6Y3JlYXRlTXV0ZWQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIFJlZjxNb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZT4gc291cmNlID0gYWRvcHRSZWYoKm5ldyBNb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZShuYW1lKSk7CisgICAgc291cmNlLT5tX211dGVkID0gdHJ1ZTsKKworICAgIHJl
dHVybiBzb3VyY2U7Cit9CisKK01vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpNb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZShjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgOiBNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZShjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCksIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1
ZGlvLCBuYW1lKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmgKaW5kZXggNmVjY2M5MC4uMWY0ZTFmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2UuaApAQCAtNDMsMTIgKzQzLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlIDogcHVibGljIE1vY2tSZWFsdGltZU1lZGlhU291cmNl
IHsKIHB1YmxpYzoKIAotICAgIHN0YXRpYyBSZWZQdHI8TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U+
IGNyZWF0ZSgpOworICAgIHN0YXRpYyBSZWY8TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U+IGNyZWF0
ZSgpOworICAgIHN0YXRpYyBSZWY8TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U+IGNyZWF0ZU11dGVk
KGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICB2aXJ0dWFsIH5Nb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZSgpIHsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UoKTsK
KyAgICBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZShjb25zdCBTdHJpbmcmIG5hbWUgPSBBU0NJSUxp
dGVyYWwoIk1vY2sgYXVkaW8gZGV2aWNlIikpOwogCiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRl
U2V0dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdzJikgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3Vy
Y2UuY3BwCmluZGV4IDI4Yjc2NzAuLjg2NGJkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCkBAIC00OSwx
NCArNDksMjIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmICFQTEFURk9STShNQUMpICYm
ICFQTEFURk9STShJT1MpCi1SZWZQdHI8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U+IE1vY2tSZWFs
dGltZVZpZGVvU291cmNlOjpjcmVhdGUoKQorUmVmPE1vY2tSZWFsdGltZVZpZGVvU291cmNlPiBN
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IE1vY2tSZWFsdGltZVZpZGVvU291cmNlKCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IE1vY2tSZWFsdGltZVZpZGVvU291cmNlKE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjptb2NrVmlk
ZW9Tb3VyY2VOYW1lKCkpKTsKK30KKworUmVmPE1vY2tSZWFsdGltZVZpZGVvU291cmNlPiBNb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlTXV0ZWQoY29uc3QgU3RyaW5nJiBuYW1lKQorewor
ICAgIFJlZjxNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZT4gc291cmNlID0gYWRvcHRSZWYoKm5ldyBN
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZShuYW1lKSk7CisgICAgc291cmNlLT5tX211dGVkID0gdHJ1
ZTsKKworICAgIHJldHVybiBzb3VyY2U7CiB9CiAjZW5kaWYKIAotTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2U6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlKCkKLSAgICA6IE1vY2tSZWFsdGltZU1lZGlh
U291cmNlKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
VmlkZW8sIG1vY2tWaWRlb1NvdXJjZU5hbWUoKSkKK01vY2tSZWFsdGltZVZpZGVvU291cmNlOjpN
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZShjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgOiBNb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZShjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCksIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlZpZGVvLCBuYW1lKQogICAgICwgbV90aW1lcihSdW5Mb29wOjpjdXJyZW50KCks
IHRoaXMsICZNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Z2VuZXJhdGVGcmFtZSkKIHsKICAgICBt
X2Rhc2hXaWR0aHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuaAppbmRleCBh
NWE1MmMxLi5hZDAzZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oCkBAIC00Niw3ICs0Niw4IEBAIGNsYXNzIEdy
YXBoaWNzQ29udGV4dDsKIGNsYXNzIE1vY2tSZWFsdGltZVZpZGVvU291cmNlIDogcHVibGljIE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlIHsKIHB1YmxpYzoKIAotICAgIHN0YXRpYyBSZWZQdHI8TW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2U+IGNyZWF0ZSgpOworICAgIHN0YXRpYyBSZWY8TW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2U+IGNyZWF0ZSgpOworICAgIHN0YXRpYyBSZWY8TW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2U+IGNyZWF0ZU11dGVkKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICB2aXJ0dWFs
IH5Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZSgpIHsgfQogCkBAIC01Niw3ICs1Nyw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldEZyYW1lUmF0ZShmbG9hdCk7CiAKIHByb3RlY3RlZDoKLSAgICBNb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZSgpOworICAgIE1vY2tSZWFsdGltZVZpZGVvU291cmNlKGNvbnN0
IFN0cmluZyYgbmFtZSA9IEFTQ0lJTGl0ZXJhbCgiTW9jayB2aWRlbyBkZXZpY2UiKSk7CiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZVBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IH0KIAogICAgIEltYWdl
QnVmZmVyKiBpbWFnZUJ1ZmZlcigpIGNvbnN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280145</attachid>
            <date>2016-05-31 06:56:49 -0700</date>
            <delta_ts>2016-05-31 10:10:01 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>add-transceiver_2.patch</filename>
            <type>text/plain</type>
            <size>60362</size>
            <attacher name="Adam Bergkvist">adam.bergkvist</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlZmI5YTBmLi5hY2IxZTMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTYtMDUt
MzEgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgorCisgICAg
ICAgIFdlYlJUQzogQWRkIFJUQ1J0cFRyYW5zY2VpdmVyIGludGVyZmFjZSBhbmQgUlRDUGVlckNv
bm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MTg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkZWQgdGVzdCBmb3IgUlRDUGVlckNvbm5lY3Rpb24uYWRkVHJh
bnNjZWl2ZXIoKS4KKworICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rp
b24tYWRkVHJhbnNjZWl2ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWFkZFRyYW5zY2VpdmVyLmh0bWw6IEFkZGVkLgor
ICAgICAgICBUZXN0IGNyZWF0aW5nIHNldmVyYWwgUlRDUnRwVHJhbnNjZWl2ZXJzIHdpdGggdmFy
aW91cyBjb25maWd1cmF0aW9ucyBhbmQgaW5zcGVjdCB0aGUgcmVzdWx0LgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICBTa2lwIHRoZSBuZXcgdGVzdCBz
aW5jZSB0aGUgTWFjIHBvcnQgY3VycmVudGx5IGRvZXNuJ3QgYnVpbGQgd2l0aCBXZWJSVEMgc3Vw
cG9ydC4KKwogMjAxNi0wNS0yNSAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdtYWls
LmNvbT4KIAogICAgICAgICBbRVNOZXh0XSBTdXBwb3J0IHRyYWlsaW5nIGNvbW1hcyBpbiBmdW5j
dGlvbiBwYXJhbSBsaXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbi1hZGRUcmFuc2NlaXZlci1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWFkZFRyYW5zY2VpdmVyLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDFlNTgyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbi1hZGRUcmFuc2NlaXZlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMzYgQEAKK1Rl
c3QgYmFzaWMgYmVoYXZpb3Igb2YgUlRDUGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIKKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgcGMuZ2V0VHJhbnNjZWl2ZXJzKCku
bGVuZ3RoIGlzIDAKKworKioqIFRlc3QgYXJndW1lbnRzCisqKiogJ3RyYWNrT3JLaW5kJyBhcmd1
bWVudCBpcyBtYW5kYXRvcnkKK1BBU1MgcGMuYWRkVHJhbnNjZWl2ZXIoKSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KK1BBU1MgcGMuYWRkVHJhbnNjZWl2
ZXIoe30pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCisqKiogQmFkIHR5
cGUgYXMgZmlyc3QgYXJndW1lbnQKK1BBU1MgcGMuYWRkVHJhbnNjZWl2ZXIobnVsbCkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgcGMuYWRkVHJhbnNjZWl2ZXIo
bnVsbCwge30pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIHBj
LmFkZFRyYW5zY2VpdmVyKHN0cmVhbSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBl
cnJvci4KKyoqKiBCYWQgdHJhY2sga2luZAorUEFTUyBwYy5hZGRUcmFuc2NlaXZlcignZm9vJykg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KKyoqKiBCYWQgZGlyZWN0aW9u
IHZhbHVlCitQQVNTIHBjLmFkZFRyYW5zY2VpdmVyKCJhdWRpbyIsIHsiZGlyZWN0aW9uIjogImZv
byJ9KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorCitQQVNTIHRyYW5z
Y2VpdmVyID0gcGMuYWRkVHJhbnNjZWl2ZXIoImF1ZGlvIikgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uCitQQVNTIHBjLmdldFRyYW5zY2VpdmVycygpLmxlbmd0aCBpcyAxCitQQVNTIHBjLmdldFRy
YW5zY2VpdmVycygpLmluY2x1ZGVzKHRyYW5zY2VpdmVyKSBpcyB0cnVlCitQQVNTIHRyYW5zY2Vp
dmVyLmRpcmVjdGlvbiBpcyAnc2VuZHJlY3YnCitQQVNTIHRyYW5zY2VpdmVyLm1pZCBpcyBudWxs
CitQQVNTIHRyYW5zY2VpdmVyLnN0b3BwZWQgaXMgZmFsc2UKKyoqKiBDaGVjayBzZW5kZXIKK1BB
U1MgdHJhbnNjZWl2ZXIuc2VuZGVyIGlzIGFuIGluc3RhbmNlIG9mIFJUQ1J0cFNlbmRlcgorUEFT
UyB0cmFuc2NlaXZlci5zZW5kZXIudHJhY2sgaXMgbnVsbAorKioqIENoZWNrIHJlY2VpdmVyCitQ
QVNTIHRyYW5zY2VpdmVyLnJlY2VpdmVyIGlzIGFuIGluc3RhbmNlIG9mIFJUQ1J0cFJlY2VpdmVy
CitQQVNTIHRyYW5zY2VpdmVyLnJlY2VpdmVyLnRyYWNrIGlzIGFuIGluc3RhbmNlIG9mIE1lZGlh
U3RyZWFtVHJhY2sKK1BBU1MgdHJhbnNjZWl2ZXIucmVjZWl2ZXIudHJhY2sua2luZCBpcyAnYXVk
aW8nCisKK1BBU1MgdHJhbnNjZWl2ZXIgPSBwYy5hZGRUcmFuc2NlaXZlcigidmlkZW8iKSBkaWQg
bm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgcGMuZ2V0VHJhbnNjZWl2ZXJzKCkubGVuZ3RoIGlz
IDIKK1BBU1MgcGMuZ2V0VHJhbnNjZWl2ZXJzKCkuaW5jbHVkZXModHJhbnNjZWl2ZXIpIGlzIHRy
dWUKK1BBU1MgdHJhbnNjZWl2ZXIuZGlyZWN0aW9uIGlzICdzZW5kcmVjdicKK1BBU1MgdHJhbnNj
ZWl2ZXIubWlkIGlzIG51bGwKK1BBU1MgdHJhbnNjZWl2ZXIuc3RvcHBlZCBpcyBmYWxzZQorKioq
IENoZWNrIHNlbmRlcgorUEFTUyB0cmFuc2NlaXZlci5zZW5kZXIgaXMgYW4gaW5zdGFuY2Ugb2Yg
UlRDUnRwU2VuZGVyCitQQVNTIHRyYW5zY2VpdmVyLnNlbmRlci50cmFjayBpcyBudWxsCisqKiog
Q2hlY2sgcmVjZWl2ZXIKK1BBU1MgdHJhbnNjZWl2ZXIucmVjZWl2ZXIgaXMgYW4gaW5zdGFuY2Ug
b2YgUlRDUnRwUmVjZWl2ZXIKK1BBU1MgdHJhbnNjZWl2ZXIucmVjZWl2ZXIudHJhY2sgaXMgYW4g
aW5zdGFuY2Ugb2YgTWVkaWFTdHJlYW1UcmFjaworUEFTUyB0cmFuc2NlaXZlci5yZWNlaXZlci50
cmFjay5raW5kIGlzICd2aWRlbycKKworUEFTUyB0cmFuc2NlaXZlciA9IHBjLmFkZFRyYW5zY2Vp
dmVyKGF1ZGlvVHJhY2spIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBwYy5nZXRUcmFu
c2NlaXZlcnMoKS5sZW5ndGggaXMgMworUEFTUyBwYy5nZXRUcmFuc2NlaXZlcnMoKS5pbmNsdWRl
cyh0cmFuc2NlaXZlcikgaXMgdHJ1ZQorUEFTUyB0cmFuc2NlaXZlci5kaXJlY3Rpb24gaXMgJ3Nl
bmRyZWN2JworUEFTUyB0cmFuc2NlaXZlci5taWQgaXMgbnVsbAorUEFTUyB0cmFuc2NlaXZlci5z
dG9wcGVkIGlzIGZhbHNlCisqKiogQ2hlY2sgc2VuZGVyCitQQVNTIHRyYW5zY2VpdmVyLnNlbmRl
ciBpcyBhbiBpbnN0YW5jZSBvZiBSVENSdHBTZW5kZXIKK1BBU1MgdHJhbnNjZWl2ZXIuc2VuZGVy
LnRyYWNrIGlzIGF1ZGlvVHJhY2sKKyoqKiBDaGVjayByZWNlaXZlcgorUEFTUyB0cmFuc2NlaXZl
ci5yZWNlaXZlciBpcyBhbiBpbnN0YW5jZSBvZiBSVENSdHBSZWNlaXZlcgorUEFTUyB0cmFuc2Nl
aXZlci5yZWNlaXZlci50cmFjayBpcyBhbiBpbnN0YW5jZSBvZiBNZWRpYVN0cmVhbVRyYWNrCitQ
QVNTIHRyYW5zY2VpdmVyLnJlY2VpdmVyLnRyYWNrLmtpbmQgaXMgJ2F1ZGlvJworCitQQVNTIHRy
YW5zY2VpdmVyID0gcGMuYWRkVHJhbnNjZWl2ZXIodmlkZW9UcmFjaykgZGlkIG5vdCB0aHJvdyBl
eGNlcHRpb24uCitQQVNTIHBjLmdldFRyYW5zY2VpdmVycygpLmxlbmd0aCBpcyA0CitQQVNTIHBj
LmdldFRyYW5zY2VpdmVycygpLmluY2x1ZGVzKHRyYW5zY2VpdmVyKSBpcyB0cnVlCitQQVNTIHRy
YW5zY2VpdmVyLmRpcmVjdGlvbiBpcyAnc2VuZHJlY3YnCitQQVNTIHRyYW5zY2VpdmVyLm1pZCBp
cyBudWxsCitQQVNTIHRyYW5zY2VpdmVyLnN0b3BwZWQgaXMgZmFsc2UKKyoqKiBDaGVjayBzZW5k
ZXIKK1BBU1MgdHJhbnNjZWl2ZXIuc2VuZGVyIGlzIGFuIGluc3RhbmNlIG9mIFJUQ1J0cFNlbmRl
cgorUEFTUyB0cmFuc2NlaXZlci5zZW5kZXIudHJhY2sgaXMgdmlkZW9UcmFjaworKioqIENoZWNr
IHJlY2VpdmVyCitQQVNTIHRyYW5zY2VpdmVyLnJlY2VpdmVyIGlzIGFuIGluc3RhbmNlIG9mIFJU
Q1J0cFJlY2VpdmVyCitQQVNTIHRyYW5zY2VpdmVyLnJlY2VpdmVyLnRyYWNrIGlzIGFuIGluc3Rh
bmNlIG9mIE1lZGlhU3RyZWFtVHJhY2sKK1BBU1MgdHJhbnNjZWl2ZXIucmVjZWl2ZXIudHJhY2su
a2luZCBpcyAndmlkZW8nCisKK1BBU1MgdHJhbnNjZWl2ZXIgPSBwYy5hZGRUcmFuc2NlaXZlcigi
YXVkaW8iLCB7ImRpcmVjdGlvbiI6ICJzZW5kcmVjdiJ9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlv
bi4KK1BBU1MgcGMuZ2V0VHJhbnNjZWl2ZXJzKCkubGVuZ3RoIGlzIDUKK1BBU1MgcGMuZ2V0VHJh
bnNjZWl2ZXJzKCkuaW5jbHVkZXModHJhbnNjZWl2ZXIpIGlzIHRydWUKK1BBU1MgdHJhbnNjZWl2
ZXIuZGlyZWN0aW9uIGlzICdzZW5kcmVjdicKK1BBU1MgdHJhbnNjZWl2ZXIubWlkIGlzIG51bGwK
K1BBU1MgdHJhbnNjZWl2ZXIuc3RvcHBlZCBpcyBmYWxzZQorKioqIENoZWNrIHNlbmRlcgorUEFT
UyB0cmFuc2NlaXZlci5zZW5kZXIgaXMgYW4gaW5zdGFuY2Ugb2YgUlRDUnRwU2VuZGVyCitQQVNT
IHRyYW5zY2VpdmVyLnNlbmRlci50cmFjayBpcyBudWxsCisqKiogQ2hlY2sgcmVjZWl2ZXIKK1BB
U1MgdHJhbnNjZWl2ZXIucmVjZWl2ZXIgaXMgYW4gaW5zdGFuY2Ugb2YgUlRDUnRwUmVjZWl2ZXIK
K1BBU1MgdHJhbnNjZWl2ZXIucmVjZWl2ZXIudHJhY2sgaXMgYW4gaW5zdGFuY2Ugb2YgTWVkaWFT
dHJlYW1UcmFjaworUEFTUyB0cmFuc2NlaXZlci5yZWNlaXZlci50cmFjay5raW5kIGlzICdhdWRp
bycKKworUEFTUyB0cmFuc2NlaXZlciA9IHBjLmFkZFRyYW5zY2VpdmVyKCJhdWRpbyIsIHsiZGly
ZWN0aW9uIjogInJlY3Zvbmx5In0pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBwYy5n
ZXRUcmFuc2NlaXZlcnMoKS5sZW5ndGggaXMgNgorUEFTUyBwYy5nZXRUcmFuc2NlaXZlcnMoKS5p
bmNsdWRlcyh0cmFuc2NlaXZlcikgaXMgdHJ1ZQorUEFTUyB0cmFuc2NlaXZlci5kaXJlY3Rpb24g
aXMgJ3JlY3Zvbmx5JworUEFTUyB0cmFuc2NlaXZlci5taWQgaXMgbnVsbAorUEFTUyB0cmFuc2Nl
aXZlci5zdG9wcGVkIGlzIGZhbHNlCisqKiogQ2hlY2sgc2VuZGVyCitQQVNTIHRyYW5zY2VpdmVy
LnNlbmRlciBpcyBhbiBpbnN0YW5jZSBvZiBSVENSdHBTZW5kZXIKK1BBU1MgdHJhbnNjZWl2ZXIu
c2VuZGVyLnRyYWNrIGlzIG51bGwKKyoqKiBDaGVjayByZWNlaXZlcgorUEFTUyB0cmFuc2NlaXZl
ci5yZWNlaXZlciBpcyBhbiBpbnN0YW5jZSBvZiBSVENSdHBSZWNlaXZlcgorUEFTUyB0cmFuc2Nl
aXZlci5yZWNlaXZlci50cmFjayBpcyBhbiBpbnN0YW5jZSBvZiBNZWRpYVN0cmVhbVRyYWNrCitQ
QVNTIHRyYW5zY2VpdmVyLnJlY2VpdmVyLnRyYWNrLmtpbmQgaXMgJ2F1ZGlvJworCitQQVNTIHRy
YW5zY2VpdmVyID0gcGMuYWRkVHJhbnNjZWl2ZXIoImF1ZGlvIiwgeyJkaXJlY3Rpb24iOiAic2Vu
ZG9ubHkifSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIHBjLmdldFRyYW5zY2VpdmVy
cygpLmxlbmd0aCBpcyA3CitQQVNTIHBjLmdldFRyYW5zY2VpdmVycygpLmluY2x1ZGVzKHRyYW5z
Y2VpdmVyKSBpcyB0cnVlCitQQVNTIHRyYW5zY2VpdmVyLmRpcmVjdGlvbiBpcyAnc2VuZG9ubHkn
CitQQVNTIHRyYW5zY2VpdmVyLm1pZCBpcyBudWxsCitQQVNTIHRyYW5zY2VpdmVyLnN0b3BwZWQg
aXMgZmFsc2UKKyoqKiBDaGVjayBzZW5kZXIKK1BBU1MgdHJhbnNjZWl2ZXIuc2VuZGVyIGlzIGFu
IGluc3RhbmNlIG9mIFJUQ1J0cFNlbmRlcgorUEFTUyB0cmFuc2NlaXZlci5zZW5kZXIudHJhY2sg
aXMgbnVsbAorKioqIENoZWNrIHJlY2VpdmVyCitQQVNTIHRyYW5zY2VpdmVyLnJlY2VpdmVyIGlz
IGFuIGluc3RhbmNlIG9mIFJUQ1J0cFJlY2VpdmVyCitQQVNTIHRyYW5zY2VpdmVyLnJlY2VpdmVy
LnRyYWNrIGlzIGFuIGluc3RhbmNlIG9mIE1lZGlhU3RyZWFtVHJhY2sKK1BBU1MgdHJhbnNjZWl2
ZXIucmVjZWl2ZXIudHJhY2sua2luZCBpcyAnYXVkaW8nCisKK1BBU1MgdHJhbnNjZWl2ZXIgPSBw
Yy5hZGRUcmFuc2NlaXZlcigiYXVkaW8iLCB7ImRpcmVjdGlvbiI6ICJpbmFjdGl2ZSJ9KSBkaWQg
bm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgcGMuZ2V0VHJhbnNjZWl2ZXJzKCkubGVuZ3RoIGlz
IDgKK1BBU1MgcGMuZ2V0VHJhbnNjZWl2ZXJzKCkuaW5jbHVkZXModHJhbnNjZWl2ZXIpIGlzIHRy
dWUKK1BBU1MgdHJhbnNjZWl2ZXIuZGlyZWN0aW9uIGlzICdpbmFjdGl2ZScKK1BBU1MgdHJhbnNj
ZWl2ZXIubWlkIGlzIG51bGwKK1BBU1MgdHJhbnNjZWl2ZXIuc3RvcHBlZCBpcyBmYWxzZQorKioq
IENoZWNrIHNlbmRlcgorUEFTUyB0cmFuc2NlaXZlci5zZW5kZXIgaXMgYW4gaW5zdGFuY2Ugb2Yg
UlRDUnRwU2VuZGVyCitQQVNTIHRyYW5zY2VpdmVyLnNlbmRlci50cmFjayBpcyBudWxsCisqKiog
Q2hlY2sgcmVjZWl2ZXIKK1BBU1MgdHJhbnNjZWl2ZXIucmVjZWl2ZXIgaXMgYW4gaW5zdGFuY2Ug
b2YgUlRDUnRwUmVjZWl2ZXIKK1BBU1MgdHJhbnNjZWl2ZXIucmVjZWl2ZXIudHJhY2sgaXMgYW4g
aW5zdGFuY2Ugb2YgTWVkaWFTdHJlYW1UcmFjaworUEFTUyB0cmFuc2NlaXZlci5yZWNlaXZlci50
cmFjay5raW5kIGlzICdhdWRpbycKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24tYWRkVHJhbnNjZWl2ZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tYWRkVHJhbnNjZWl2ZXIuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmQ5ZDIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1hZGRUcmFu
c2NlaXZlci5odG1sCkBAIC0wLDAgKzEsMTIzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPC9o
ZWFkPgorICAgIDxib2R5PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgdmFyIHN0cmVh
bTsKKyAgICAgICAgICAgIHZhciBhdWRpb1RyYWNrOworICAgICAgICAgICAgdmFyIHZpZGVvVHJh
Y2s7CisgICAgICAgICAgICB2YXIgdHJhbnNjZWl2ZXI7CisgICAgICAgICAgICB2YXIgZXhwZWN0
ZWQ7CisKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0IGJhc2ljIGJlaGF2aW9yIG9mIFJU
Q1BlZXJDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyIik7CisKKyAgICAgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFVzZXJNZWRpYVBl
cm1pc3Npb24odHJ1ZSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBkZWJ1
ZygiVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdpdGhvdXQgdGhlIHRlc3RSdW5uZXIiKTsKKyAg
ICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmFyIHBjID0gbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJzOlt7dXJs
czonc3R1bjpmb28uY29tJ31dfSk7CisKKyAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYURldmlj
ZXMuZ2V0VXNlck1lZGlhKHsgImF1ZGlvIjogdHJ1ZSwgInZpZGVvIjogdHJ1ZSB9KQorICAgICAg
ICAgICAgLnRoZW4oZnVuY3Rpb24gKHMpIHsKKyAgICAgICAgICAgICAgICBzdHJlYW0gPSBzOwor
ICAgICAgICAgICAgICAgIGF1ZGlvVHJhY2sgPSBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXTsK
KyAgICAgICAgICAgICAgICB2aWRlb1RyYWNrID0gc3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF07
CisKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgicGMuZ2V0VHJhbnNjZWl2ZXJzKCkubGVuZ3Ro
IiwgIjAiKTsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiIik7CisKKyAgICAgICAgICAgICAgICBk
ZWJ1ZygiKioqIFRlc3QgYXJndW1lbnRzIik7CisgICAgICAgICAgICAgICAgZGVidWcoIioqKiAn
dHJhY2tPcktpbmQnIGFyZ3VtZW50IGlzIG1hbmRhdG9yeSIpOworICAgICAgICAgICAgICAgIHNo
b3VsZFRocm93KCJwYy5hZGRUcmFuc2NlaXZlcigpIik7CisgICAgICAgICAgICAgICAgc2hvdWxk
VGhyb3coInBjLmFkZFRyYW5zY2VpdmVyKHt9KSIpOworICAgICAgICAgICAgICAgIGRlYnVnKCIq
KiogQmFkIHR5cGUgYXMgZmlyc3QgYXJndW1lbnQiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRU
aHJvdygicGMuYWRkVHJhbnNjZWl2ZXIobnVsbCkiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRU
aHJvdygicGMuYWRkVHJhbnNjZWl2ZXIobnVsbCwge30pIik7CisgICAgICAgICAgICAgICAgc2hv
dWxkVGhyb3coInBjLmFkZFRyYW5zY2VpdmVyKHN0cmVhbSkiKTsKKyAgICAgICAgICAgICAgICBk
ZWJ1ZygiKioqIEJhZCB0cmFjayBraW5kIik7CisgICAgICAgICAgICAgICAgc2hvdWxkVGhyb3co
InBjLmFkZFRyYW5zY2VpdmVyKCdmb28nKSIpOworICAgICAgICAgICAgICAgIGRlYnVnKCIqKiog
QmFkIGRpcmVjdGlvbiB2YWx1ZSIpOworICAgICAgICAgICAgICAgIHNob3VsZFRocm93KCdwYy5h
ZGRUcmFuc2NlaXZlcigiYXVkaW8iLCB7ImRpcmVjdGlvbiI6ICJmb28ifSknKTsKKyAgICAgICAg
ICAgICAgICBkZWJ1ZygiIik7CisKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiBjaGVja1RyYW5z
Y2V2aWVyKGV4cGVjdGVkQXJnKSB7CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gZXhw
ZWN0ZWRBcmc7CisKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoInBjLmdldFRyYW5zY2Vp
dmVycygpLmxlbmd0aCIsIGV4cGVjdGVkLnRyYW5zY2VpdmVyQ291bnQpOworICAgICAgICAgICAg
ICAgICAgICBzaG91bGRCZVRydWUoInBjLmdldFRyYW5zY2VpdmVycygpLmluY2x1ZGVzKHRyYW5z
Y2VpdmVyKSIpOworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgidHJhbnNjZWl2ZXIuZGly
ZWN0aW9uIiwgZXhwZWN0ZWQuZGlyZWN0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxk
QmVOdWxsKCJ0cmFuc2NlaXZlci5taWQiKTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVG
YWxzZSgidHJhbnNjZWl2ZXIuc3RvcHBlZCIpOworCisgICAgICAgICAgICAgICAgICAgIGRlYnVn
KCIqKiogQ2hlY2sgc2VuZGVyIik7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlVHlwZSgi
dHJhbnNjZWl2ZXIuc2VuZGVyIiwgIlJUQ1J0cFNlbmRlciIpOworICAgICAgICAgICAgICAgICAg
ICBzaG91bGRCZSgidHJhbnNjZWl2ZXIuc2VuZGVyLnRyYWNrIiwgZXhwZWN0ZWQuc2VuZGVyVHJh
Y2spOworCisgICAgICAgICAgICAgICAgICAgIGRlYnVnKCIqKiogQ2hlY2sgcmVjZWl2ZXIiKTsK
KyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVUeXBlKCJ0cmFuc2NlaXZlci5yZWNlaXZlciIs
ICJSVENSdHBSZWNlaXZlciIpOworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZVR5cGUoInRy
YW5zY2VpdmVyLnJlY2VpdmVyLnRyYWNrIiwgIk1lZGlhU3RyZWFtVHJhY2siKTsKKyAgICAgICAg
ICAgICAgICAgICAgc2hvdWxkQmUoInRyYW5zY2VpdmVyLnJlY2VpdmVyLnRyYWNrLmtpbmQiLCBl
eHBlY3RlZC5yZWNlaXZlclRyYWNrVHlwZSk7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnKCIi
KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygn
dHJhbnNjZWl2ZXIgPSBwYy5hZGRUcmFuc2NlaXZlcigiYXVkaW8iKScpOworICAgICAgICAgICAg
ICAgIGNoZWNrVHJhbnNjZXZpZXIoeworICAgICAgICAgICAgICAgICAgICAidHJhbnNjZWl2ZXJD
b3VudCI6ICIxIiwKKyAgICAgICAgICAgICAgICAgICAgImRpcmVjdGlvbiI6ICInc2VuZHJlY3Yn
IiwKKyAgICAgICAgICAgICAgICAgICAgInNlbmRlclRyYWNrIjogIm51bGwiLAorICAgICAgICAg
ICAgICAgICAgICAicmVjZWl2ZXJUcmFja1R5cGUiOiAiJ2F1ZGlvJyIKKyAgICAgICAgICAgICAg
ICB9KTsKKworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCd0cmFuc2NlaXZlciA9IHBj
LmFkZFRyYW5zY2VpdmVyKCJ2aWRlbyIpJyk7CisgICAgICAgICAgICAgICAgY2hlY2tUcmFuc2Nl
dmllcih7CisgICAgICAgICAgICAgICAgICAgICJ0cmFuc2NlaXZlckNvdW50IjogIjIiLAorICAg
ICAgICAgICAgICAgICAgICAiZGlyZWN0aW9uIjogIidzZW5kcmVjdiciLAorICAgICAgICAgICAg
ICAgICAgICAic2VuZGVyVHJhY2siOiAibnVsbCIsCisgICAgICAgICAgICAgICAgICAgICJyZWNl
aXZlclRyYWNrVHlwZSI6ICIndmlkZW8nIgorICAgICAgICAgICAgICAgIH0pOworCisgICAgICAg
ICAgICAgICAgc2hvdWxkTm90VGhyb3coJ3RyYW5zY2VpdmVyID0gcGMuYWRkVHJhbnNjZWl2ZXIo
YXVkaW9UcmFjayknKTsKKyAgICAgICAgICAgICAgICBjaGVja1RyYW5zY2V2aWVyKHsKKyAgICAg
ICAgICAgICAgICAgICAgInRyYW5zY2VpdmVyQ291bnQiOiAiMyIsCisgICAgICAgICAgICAgICAg
ICAgICJkaXJlY3Rpb24iOiAiJ3NlbmRyZWN2JyIsCisgICAgICAgICAgICAgICAgICAgICJzZW5k
ZXJUcmFjayI6ICJhdWRpb1RyYWNrIiwKKyAgICAgICAgICAgICAgICAgICAgInJlY2VpdmVyVHJh
Y2tUeXBlIjogIidhdWRpbyciCisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAg
ICBzaG91bGROb3RUaHJvdygndHJhbnNjZWl2ZXIgPSBwYy5hZGRUcmFuc2NlaXZlcih2aWRlb1Ry
YWNrKScpOworICAgICAgICAgICAgICAgIGNoZWNrVHJhbnNjZXZpZXIoeworICAgICAgICAgICAg
ICAgICAgICAidHJhbnNjZWl2ZXJDb3VudCI6ICI0IiwKKyAgICAgICAgICAgICAgICAgICAgImRp
cmVjdGlvbiI6ICInc2VuZHJlY3YnIiwKKyAgICAgICAgICAgICAgICAgICAgInNlbmRlclRyYWNr
IjogInZpZGVvVHJhY2siLAorICAgICAgICAgICAgICAgICAgICAicmVjZWl2ZXJUcmFja1R5cGUi
OiAiJ3ZpZGVvJyIKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIFsic2Vu
ZHJlY3YiLCAicmVjdm9ubHkiLCAic2VuZG9ubHkiLCAiaW5hY3RpdmUiXS5mb3JFYWNoKGZ1bmN0
aW9uIChkaXJlY3Rpb24sIGkpIHsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3co
YHRyYW5zY2VpdmVyID0gcGMuYWRkVHJhbnNjZWl2ZXIoImF1ZGlvIiwgeyJkaXJlY3Rpb24iOiAi
JHtkaXJlY3Rpb259In0pYCk7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrVHJhbnNjZXZpZXIo
eworICAgICAgICAgICAgICAgICAgICAgICAgInRyYW5zY2VpdmVyQ291bnQiOiBTdHJpbmcoNSAr
IGkpLAorICAgICAgICAgICAgICAgICAgICAgICAgImRpcmVjdGlvbiI6IGAnJHtkaXJlY3Rpb259
J2AsCisgICAgICAgICAgICAgICAgICAgICAgICAic2VuZGVyVHJhY2siOiAibnVsbCIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAicmVjZWl2ZXJUcmFja1R5cGUiOiAiJ2F1ZGlvJyIKKyAgICAg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIH0pCisgICAgICAgICAgICAuY2F0Y2goZnVu
Y3Rpb24gKGVycm9yKSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiRXJyb3IgY2F1Z2h0
IGluIHByb21pc2UgY2hhaW46ICIgKyBlcnJvcik7CisgICAgICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworICAgICAgICAgICAgd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
CisKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDk4MTQzODIuLjIwMGEy
MWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25z
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xODcs
NiArMTg3LDcgQEAgZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1hZGQtcmVtb3Zl
VHJhY2suaHRtbAogZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1jbG9zZWQtc3Rh
dGUuaHRtbAogZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1vdmVybG9hZGVkLW9w
ZXJhdGlvbnMtcGFyYW1zLmh0bWwKIGZhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24t
b3ZlcmxvYWRlZC1vcGVyYXRpb25zLmh0bWwKK2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb24tYWRkVHJhbnNjZWl2ZXIuaHRtbAogZmFzdC9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIt
cmVwbGFjZVRyYWNrLmh0bWwKIGZhc3QvbWVkaWFzdHJlYW0vUlRDU2Vzc2lvbkRlc2NyaXB0aW9u
Lmh0bWwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAwN2NiMzJiLi5hZDhiOTZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtMjM1LDYgKzIzNSw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURM
X0ZJTEVTCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGwKICAg
ICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmlkbAogICAgIE1vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwU2VuZGVyLmlkbAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
VHJhbnNjZWl2ZXIuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTZXNzaW9uRGVzY3Jp
cHRpb24uaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c1JlcG9ydC5pZGwKICAg
ICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVzcG9uc2UuaWRsCkBAIC05MzAsNiArOTMx
LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24uY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5j
cHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAKKyAgICBNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVyLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
U3RhdHNSZXBvcnQuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c1Jlc3BvbnNl
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDc1MGY5MTguLjU1ZDE0OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMDEgQEAKKzIwMTYtMDUtMzEgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJp
Y3Nzb24uY29tPgorCisgICAgICAgIFdlYlJUQzogQWRkIFJUQ1J0cFRyYW5zY2VpdmVyIGludGVy
ZmFjZSBhbmQgUlRDUGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MTg5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIFJUQ1J0cFRyYW5zY2VpdmVy
IGludGVyZmFjZSByZXByZXNlbnRzIGEgY29tYmluYXRpb24gb2YgYW4gUlRDUnRwU2VuZGVyIGFu
ZCBhbgorICAgICAgICBSVENSdHBSZWNlaXZlciB0aGF0IHNoYXJlIGEgY29tbW9uIG1pZCBbMV0u
CisKKyAgICAgICAgUlRDUGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoKSBbMl0gY3JlYXRl
cyBhbiBSVENSdHBUcmFuc2NlaXZlciBvYmplY3QsIGVpdGhlciBkaXJlY3RseQorICAgICAgICBm
cm9tIGEgTWVkaWFTdHJlYW1UcmFjayBbM10sIG9yIHdpdGggYSBzcGVjaWZpYyBtZWRpYSB0eXBl
IChraW5kKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzIHRoZSBSVENSdHBUcmFu
c2NlaXZlciBvYmplY3QsIGZvbGxvdy11cCBwYXRjaGVzIHdpbGwgaW50ZWdyYXRlIGl0CisgICAg
ICAgIGludG8gdGhlIG9mZmVyL2Fuc3dlciBtYWNoaW5lcnkuCisKKyAgICAgICAgWzFdIGh0dHBz
Oi8vdzNjLmdpdGh1Yi5pby93ZWJydGMtcGMvYXJjaGl2ZXMvMjAxNjA1MTMvd2VicnRjLmh0bWwj
cnRjcnRwdHJhbnNjZWl2ZXItaW50ZXJmYWNlCisgICAgICAgIFsyXSBodHRwczovL3czYy5naXRo
dWIuaW8vd2VicnRjLXBjL2FyY2hpdmVzLzIwMTYwNTEzL3dlYnJ0Yy5odG1sI2RvbS1ydGNwZWVy
Y29ubmVjdGlvbi1hZGR0cmFuc2NlaXZlcgorICAgICAgICBbM10gaHR0cDovL3czYy5naXRodWIu
aW8vbWVkaWFjYXB0dXJlLW1haW4vYXJjaGl2ZXMvMjAxNjA1MTMvZ2V0dXNlcm1lZGlhLmh0bWwj
bWVkaWFzdHJlYW10cmFjaworCisgICAgICAgIFRlc3Q6IGZhc3QvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24tYWRkVHJhbnNjZWl2ZXIuaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5l
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9u
OjpjcmVhdGVPZmZlclRhc2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFBlZXJD
b25uZWN0aW9uOjpjcmVhdGVSZWNlaXZlcik6CisgICAgICAgIEFuIFJUQ1RyYW5zY2VpdmVyIGFs
d2F5cyBoYXMgYSByZWNlaXZlciAoUlRDUnRwUmVjZWl2ZXIpIHdpdGggYSB0cmFjayAoTWVkaWFT
dHJlYW1UcmFjaykgdGhhdAorICAgICAgICBjYW4gYmUgcmVuZGVyZWQuIEJlZm9yZSB0aGF0IHJl
bW90ZSB0cmFjayBpcyByZWNlaXZpbmcgZGF0YSBmcm9tIHRoZSByZW1vdGUgcGVlciwgaXQncyBt
dXRlZC4KKyAgICAgICAgY3JlYXRlUmVjZWl2ZXIoKSB1c2VzIE1lZGlhRW5kcG9uaXQ6OmNyZWF0
ZU11dGVkUmVtb3RlU291cmNlKCkgdG8gY3JlYXRlIGEgc291cmNlIHRvIHJlcHJlc2VudAorICAg
ICAgICBmdXR1cmUgaW5jb21pbmcgbWVkaWEuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNv
bm5lY3Rpb246OmFkZFRyYW5zY2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25u
ZWN0aW9uOjpjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1Bl
ZXJDb25uZWN0aW9uOjphZGRSZWNlaXZlcik6IERlbGV0ZWQuCisgICAgICAgIFdlIG5vdyBjcmVh
dGUgdGhlIHJlY2VpdmVyIGV4cGxpY2l0bHkgd2l0aCBjcmVhdGVSZWNlaXZlci4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGw6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRw
U2VuZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2VuZGVyOjpSVENSdHBT
ZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2VuZGVyOjpzZXRUcmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpSVENSdHBTZW5kZXI6OnJlcGxhY2VUcmFjayk6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0
cFNlbmRlcjo6dHJhY2tJZCk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTZW5kZXI6OnRyYWNr
S2luZCk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTZW5kZXI6OnNldE1lZGlhU3RyZWFtSWRz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNlbmRlcjo6aXNTdG9wcGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1J0cFNlbmRlcjo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlclJlY2VpdmVyQmFzZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlOjp0cmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpSVENSdHBTZW5kZXJSZWNlaXZlckJhc2U6OlJUQ1J0cFNlbmRlclJlY2VpdmVyQmFzZSk6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2NlaXZlci5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwVHJhbnNjZWl2ZXI6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpSVENSdHBUcmFuc2NlaXZlcjo6Z2V0TmV4dE1pZCk6CisgICAgICAgIChXZWJD
b3JlOjpSVENSdHBUcmFuc2NlaXZlcjo6UlRDUnRwVHJhbnNjZWl2ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDUnRwVHJhbnNjZWl2ZXI6OmRpcmVjdGlvblN0cmluZyk6CisgICAgICAgIChXZWJD
b3JlOjpSVENSdHBUcmFuc2NlaXZlcjo6aGFzU2VuZGluZ0RpcmVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpSVENSdHBUcmFuc2NlaXZlcjo6ZW5hYmxlU2VuZGluZ0RpcmVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpSVENSdHBUcmFuc2NlaXZlcjo6ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24p
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpSVENSdHBUcmFuc2NlaXZlcjo6flJUQ1J0cFRyYW5zY2Vp
dmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFRyYW5zY2VpdmVyOjpkaXJlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDUnRwVHJhbnNjZWl2ZXI6OnNldERpcmVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpSVENSdHBUcmFuc2NlaXZlcjo6cHJvdmlzaW9uYWxNaWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDUnRwVHJhbnNjZWl2ZXI6OnNldFByb3Zpc2lvbmFsTWlkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ1J0cFRyYW5zY2VpdmVyOjptaWQpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDUnRwVHJhbnNjZWl2ZXI6OnNldE1pZCk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBUcmFu
c2NlaXZlcjo6c2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFRyYW5zY2VpdmVyOjpy
ZWNlaXZlcik6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBUcmFuc2NlaXZlcjo6c3RvcHBlZCk6
CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBUcmFuc2NlaXZlcjo6c3RvcCk6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2NlaXZlci5pZGw6IEFkZGVkLgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50Lmg6CisgICAgICAgIEFkZGVkIGNyZWF0ZU11dGVk
UmVtb3RlU291cmNlKCkgdGhhdCBjcmVhdGVzIGEgbXV0ZWQgcmVtb3RlIHNvdXJjZSB0aGF0IHdp
bGwgYmVjb21lIHVubXV0ZWQKKyAgICAgICAgd2hlbiBtZWRpYSBhcnJpdmVzIGZyb20gdGhlIHJl
bW90ZSBwZWVyLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFT
b3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tS
ZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGUpOgorICAgICAgICBVc2UgUmVmIGluc3RlYWQgb2Yg
UmVmUHRyLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja01lZGlhRW5kcG9pbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhRW5kcG9pbnQ6OmNyZWF0ZU11dGVkUmVtb3RlU291
cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVuZHBvaW50Lmg6CisgICAg
ICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGVNdXRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2Up
OgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZU11dGVkKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oOgor
CiAyMDE2LTA1LTI4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
VGVtcGxhdGl6ZSBOb25jb3B5YWJsZUZ1bmN0aW9uIGNsYXNzIHNpbWlsYXJseSB0byBzdGQ6OmZ1
bmN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5jcHAKaW5kZXggZjFlYjY0ZS4u
ZGM4NTFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcApAQCAtMzcsNyAr
MzcsNyBAQAogI2luY2x1ZGUgIk1lZGlhRW5kcG9pbnRTZXNzaW9uQ29uZmlndXJhdGlvbi5oIgog
I2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2suaCIKICNpbmNsdWRlICJSVENPZmZlckFuc3dlck9w
dGlvbnMuaCIKLSNpbmNsdWRlICJSVENSdHBTZW5kZXIuaCIKKyNpbmNsdWRlICJSVENSdHBUcmFu
c2NlaXZlci5oIgogI2luY2x1ZGUgIlNEUFByb2Nlc3Nvci5oIgogI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CkBAIC0xMzcsNyArMTM3LDcg
QEAgdm9pZCBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OmNyZWF0ZU9mZmVyVGFzayhSVENP
ZmZlck9wdGlvbnMmLCBTZXNzaW9uRGVzY3IKICAgICAvLyBBZGQgbWVkaWEgZGVzY3JpcHRpb25z
IGZvciBzZW5kZXJzLgogICAgIGZvciAoYXV0byYgc2VuZGVyIDogc2VuZGVycykgewogICAgICAg
ICBSZWZQdHI8UGVlck1lZGlhRGVzY3JpcHRpb24+IG1lZGlhRGVzY3JpcHRpb24gPSBQZWVyTWVk
aWFEZXNjcmlwdGlvbjo6Y3JlYXRlKCk7Ci0gICAgICAgIE1lZGlhU3RyZWFtVHJhY2smIHRyYWNr
ID0gc2VuZGVyLT50cmFjaygpOworICAgICAgICBNZWRpYVN0cmVhbVRyYWNrJiB0cmFjayA9ICpz
ZW5kZXItPnRyYWNrKCk7CiAKICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi0+c2V0TWVkaWFTdHJl
YW1JZChzZW5kZXItPm1lZGlhU3RyZWFtSWRzKClbMF0pOwogICAgICAgICBtZWRpYURlc2NyaXB0
aW9uLT5zZXRNZWRpYVN0cmVhbVRyYWNrSWQodHJhY2suaWQoKSk7CkBAIC0yNTUsNiArMjU1LDE4
IEBAIHZvaWQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpnZXRTdGF0cyhNZWRpYVN0cmVh
bVRyYWNrKiwgUGVlckNvbm5lY3Rpb246OlN0CiAgICAgcHJvbWlzZS5yZWplY3QoTk9UX1NVUFBP
UlRFRF9FUlIpOwogfQogCitSZWZQdHI8UlRDUnRwUmVjZWl2ZXI+IE1lZGlhRW5kcG9pbnRQZWVy
Q29ubmVjdGlvbjo6Y3JlYXRlUmVjZWl2ZXIoY29uc3QgU3RyaW5nJiB0cmFuc2NlaXZlck1pZCwg
Y29uc3QgU3RyaW5nJiB0cmFja0tpbmQsIGNvbnN0IFN0cmluZyYgdHJhY2tJZCkKK3sKKyAgICBS
ZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIHNvdXJjZVR5cGUgPSB0cmFja0tpbmQgPT0gImF1ZGlv
IiA/IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VHlwZTo6VmlkZW87CisKKyAgICAvLyBDcmVhdGUgYSBtdXRlZCByZW1vdGUgc291cmNlIHRo
YXQgd2lsbCBiZSB1bm11dGVkIG9uY2UgbWVkaWEgc3RhcnRzIGFycml2aW5nLgorICAgIGF1dG8g
cmVtb3RlU291cmNlID0gbV9tZWRpYUVuZHBvaW50LT5jcmVhdGVNdXRlZFJlbW90ZVNvdXJjZSh0
cmFuc2NlaXZlck1pZCwgc291cmNlVHlwZSk7CisgICAgYXV0byByZW1vdGVUcmFja1ByaXZhdGUg
PSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y3JlYXRlKFdURk1vdmUocmVtb3RlU291cmNlKSwg
dHJhY2tJZCk7CisgICAgYXV0byByZW1vdGVUcmFjayA9IE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0
ZSgqbV9jbGllbnQtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnJlbW90ZVRyYWNrUHJpdmF0
ZSk7CisKKyAgICByZXR1cm4gUlRDUnRwUmVjZWl2ZXI6OmNyZWF0ZShXVEZNb3ZlKHJlbW90ZVRy
YWNrKSk7Cit9CisKIHZvaWQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpyZXBsYWNlVHJh
Y2soUlRDUnRwU2VuZGVyJiBzZW5kZXIsIE1lZGlhU3RyZWFtVHJhY2smIHdpdGhUcmFjaywgUGVl
ckNvbm5lY3Rpb246OlZvaWRQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICBVTlVTRURfUEFSQU0o
c2VuZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5oCmluZGV4IDk2N2QwYzkuLmYy
NTgyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uaApAQCAtNjksNiArNjksNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGdldFN0YXRzKE1lZGlhU3RyZWFtVHJhY2sqLCBQZWVyQ29u
bmVjdGlvbjo6U3RhdHNQcm9taXNlJiYpIG92ZXJyaWRlOwogCisgICAgUmVmUHRyPFJUQ1J0cFJl
Y2VpdmVyPiBjcmVhdGVSZWNlaXZlcihjb25zdCBTdHJpbmcmIHRyYW5zY2VpdmVyTWlkLCBjb25z
dCBTdHJpbmcmIHRyYWNrS2luZCwgY29uc3QgU3RyaW5nJiB0cmFja0lkKSBvdmVycmlkZTsKICAg
ICB2b2lkIHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImLCBNZWRpYVN0cmVhbVRyYWNrJiwgUGVl
ckNvbm5lY3Rpb246OlZvaWRQcm9taXNlJiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzdG9wKCkg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1BlZXJDb25uZWN0aW9uQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAppbmRleCBiZmZmNDRlLi5mNGIzN2Y4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9u
QmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNv
bm5lY3Rpb25CYWNrZW5kLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgUlRDSWNlQ2FuZGlkYXRl
OwogY2xhc3MgUlRDT2ZmZXJPcHRpb25zOwogY2xhc3MgUlRDUnRwUmVjZWl2ZXI7CiBjbGFzcyBS
VENSdHBTZW5kZXI7CitjbGFzcyBSVENSdHBUcmFuc2NlaXZlcjsKIGNsYXNzIFJUQ1Nlc3Npb25E
ZXNjcmlwdGlvbjsKIGNsYXNzIFJUQ1N0YXRzUmVzcG9uc2U7CiBjbGFzcyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OwpAQCAtNjMsNyArNjQsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBWZWN0b3I8
UmVmUHRyPFJUQ1J0cFNlbmRlcj4+IGdldFNlbmRlcnMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGZpcmVFdmVudChFdmVudCYpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRSZWNl
aXZlcihSVENSdHBSZWNlaXZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2lnbmFsaW5n
U3RhdGUoUGVlckNvbm5lY3Rpb25TdGF0ZXM6OlNpZ25hbGluZ1N0YXRlKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUljZUdhdGhlcmluZ1N0YXRlKFBlZXJDb25uZWN0aW9uU3RhdGVzOjpJ
Y2VHYXRoZXJpbmdTdGF0ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVJY2VDb25uZWN0
aW9uU3RhdGUoUGVlckNvbm5lY3Rpb25TdGF0ZXM6OkljZUNvbm5lY3Rpb25TdGF0ZSkgPSAwOwpA
QCAtMTAzLDYgKzEwMyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRTdGF0cyhN
ZWRpYVN0cmVhbVRyYWNrKiwgUGVlckNvbm5lY3Rpb246OlN0YXRzUHJvbWlzZSYmKSA9IDA7CiAK
KyAgICB2aXJ0dWFsIFJlZlB0cjxSVENSdHBSZWNlaXZlcj4gY3JlYXRlUmVjZWl2ZXIoY29uc3Qg
U3RyaW5nJiB0cmFuc2NlaXZlck1pZCwgY29uc3QgU3RyaW5nJiB0cmFja0tpbmQsIGNvbnN0IFN0
cmluZyYgdHJhY2tJZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXBsYWNlVHJhY2soUlRDUnRw
U2VuZGVyJiwgTWVkaWFTdHJlYW1UcmFjayYsIFBlZXJDb25uZWN0aW9uOjpWb2lkUHJvbWlzZSYm
KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKaW5k
ZXggZTNjODE0Yi4uOGYyZWM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAK
ICNpbmNsdWRlICJSVENPZmZlckFuc3dlck9wdGlvbnMuaCIKICNpbmNsdWRlICJSVENTZXNzaW9u
RGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJSVENUcmFja0V2ZW50LmgiCisjaW5jbHVkZSAiVVVJ
RC5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFz
ZTY0Lmg+CiAKQEAgLTE0Nyw2ICsxNDgsNTggQEAgdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6cmVt
b3ZlVHJhY2soUlRDUnRwU2VuZGVyJiBzZW5kZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIG1f
YmFja2VuZC0+bWFya0FzTmVlZGluZ05lZ290aWF0aW9uKCk7CiB9CiAKK1JlZlB0cjxSVENSdHBU
cmFuc2NlaXZlcj4gUlRDUGVlckNvbm5lY3Rpb246OmFkZFRyYW5zY2VpdmVyKFJlZjxNZWRpYVN0
cmVhbVRyYWNrPiYmIHRyYWNrLCBjb25zdCBSdHBUcmFuc2NlaXZlckluaXQmIGluaXQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQoreworICAgIGlmIChtX3NpZ25hbGluZ1N0YXRlID09IFNpZ25hbGluZ1N0
YXRlOjpDbG9zZWQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgU3RyaW5nIHRyYW5zY2VpdmVyTWlkID0gUlRD
UnRwVHJhbnNjZWl2ZXI6OmdldE5leHRNaWQoKTsKKyAgICBjb25zdCBTdHJpbmcmIHRyYWNrS2lu
ZCA9IHRyYWNrLT5raW5kKCk7CisgICAgY29uc3QgU3RyaW5nJiB0cmFja0lkID0gdHJhY2stPmlk
KCk7CisKKyAgICBhdXRvIHNlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKFdURk1vdmUodHJh
Y2spLCBWZWN0b3I8U3RyaW5nPigpLCAqdGhpcyk7CisgICAgYXV0byByZWNlaXZlciA9IG1fYmFj
a2VuZC0+Y3JlYXRlUmVjZWl2ZXIodHJhbnNjZWl2ZXJNaWQsIHRyYWNrS2luZCwgdHJhY2tJZCk7
CisgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoV1RGTW92
ZShzZW5kZXIpLCBXVEZNb3ZlKHJlY2VpdmVyKSk7CisgICAgdHJhbnNjZWl2ZXItPnNldFByb3Zp
c2lvbmFsTWlkKHRyYW5zY2VpdmVyTWlkKTsKKworICAgIHJldHVybiBjb21wbGV0ZUFkZFRyYW5z
Y2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpLCBpbml0KTsKK30KKworUmVmUHRyPFJUQ1J0cFRy
YW5zY2VpdmVyPiBSVENQZWVyQ29ubmVjdGlvbjo6YWRkVHJhbnNjZWl2ZXIoY29uc3QgU3RyaW5n
JiBraW5kLCBjb25zdCBSdHBUcmFuc2NlaXZlckluaXQmIGluaXQsIEV4Y2VwdGlvbkNvZGUmIGVj
KQoreworICAgIGlmIChtX3NpZ25hbGluZ1N0YXRlID09IFNpZ25hbGluZ1N0YXRlOjpDbG9zZWQp
IHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgfQorCisgICAgaWYgKGtpbmQgIT0gImF1ZGlvIiAmJiBraW5kICE9ICJ2aWRlbyIp
IHsKKyAgICAgICAgZWMgPSBUeXBlRXJyb3I7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKworICAgIFN0cmluZyB0cmFuc2NlaXZlck1pZCA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpnZXRO
ZXh0TWlkKCk7CisgICAgU3RyaW5nIHRyYWNrSWQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5n
KCk7CisKKyAgICBhdXRvIHNlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKGtpbmQsIFZlY3Rv
cjxTdHJpbmc+KCksICp0aGlzKTsKKyAgICBhdXRvIHJlY2VpdmVyID0gbV9iYWNrZW5kLT5jcmVh
dGVSZWNlaXZlcih0cmFuc2NlaXZlck1pZCwga2luZCwgdHJhY2tJZCk7CisgICAgYXV0byB0cmFu
c2NlaXZlciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoV1RGTW92ZShzZW5kZXIpLCBXVEZN
b3ZlKHJlY2VpdmVyKSk7CisgICAgdHJhbnNjZWl2ZXItPnNldFByb3Zpc2lvbmFsTWlkKHRyYW5z
Y2VpdmVyTWlkKTsKKworICAgIHJldHVybiBjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFdURk1vdmUo
dHJhbnNjZWl2ZXIpLCBpbml0KTsKK30KKworUmVmUHRyPFJUQ1J0cFRyYW5zY2VpdmVyPiBSVENQ
ZWVyQ29ubmVjdGlvbjo6Y29tcGxldGVBZGRUcmFuc2NlaXZlcihSZWY8UlRDUnRwVHJhbnNjZWl2
ZXI+JiYgdHJhbnNjZWl2ZXIsIGNvbnN0IFJ0cFRyYW5zY2VpdmVySW5pdCYgaW5pdCkKK3sKKyAg
ICB0cmFuc2NlaXZlci0+c2V0RGlyZWN0aW9uKHN0YXRpY19jYXN0PFJUQ1J0cFRyYW5zY2VpdmVy
OjpEaXJlY3Rpb24+KGluaXQuZGlyZWN0aW9uKSk7CisKKyAgICBtX3RyYW5zY2VpdmVyU2V0LmFw
cGVuZCh0cmFuc2NlaXZlci5jb3B5UmVmKCkpOworICAgIG1fYmFja2VuZC0+bWFya0FzTmVlZGlu
Z05lZ290aWF0aW9uKCk7CisKKyAgICByZXR1cm4gV1RGTW92ZSh0cmFuc2NlaXZlcik7Cit9CisK
IHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnF1ZXVlZENyZWF0ZU9mZmVyKGNvbnN0IERpY3Rpb25h
cnkmIG9mZmVyT3B0aW9ucywgU2Vzc2lvbkRlc2NyaXB0aW9uUHJvbWlzZSYmIHByb21pc2UpCiB7
CiAgICAgaWYgKG1fc2lnbmFsaW5nU3RhdGUgPT0gU2lnbmFsaW5nU3RhdGU6OkNsb3NlZCkgewpA
QCAtMzcxLDExICs0MjQsNiBAQCBib29sIFJUQ1BlZXJDb25uZWN0aW9uOjpjYW5TdXNwZW5kRm9y
RG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQg
UlRDUGVlckNvbm5lY3Rpb246OmFkZFJlY2VpdmVyKFJUQ1J0cFJlY2VpdmVyJiByZWNlaXZlcikK
LXsKLSAgICBtX3JlY2VpdmVyU2V0LmFwcGVuZCgmcmVjZWl2ZXIpOwotfQotCiB2b2lkIFJUQ1Bl
ZXJDb25uZWN0aW9uOjpzZXRTaWduYWxpbmdTdGF0ZShTaWduYWxpbmdTdGF0ZSBuZXdTdGF0ZSkK
IHsKICAgICBtX3NpZ25hbGluZ1N0YXRlID0gbmV3U3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKaW5kZXggMGM1
NjVlZC4uNjYyMmU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaApAQCAtNDEsOCArNDEsNyBAQAogLy8gRklYTUU6
IFdvcmthcm91bmQgZm9yIGJpbmRpbmdzIGJ1ZyBodHRwOi8vd2Via2l0Lm9yZy9iLzE1MDEyMQog
I2luY2x1ZGUgIkpTTWVkaWFTdHJlYW0uaCIKICNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbkJhY2tl
bmQuaCIKLSNpbmNsdWRlICJSVENSdHBSZWNlaXZlci5oIgotI2luY2x1ZGUgIlJUQ1J0cFNlbmRl
ci5oIgorI2luY2x1ZGUgIlJUQ1J0cFRyYW5zY2VpdmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3Jh
cHBhYmxlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgpAQCAtNjYsMTAgKzY1LDI1IEBAIHB1YmxpYzoKIAogICAgIFZlY3RvcjxSZWZQdHI8
UlRDUnRwU2VuZGVyPj4gZ2V0U2VuZGVycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2Vu
ZGVyU2V0OyB9CiAgICAgVmVjdG9yPFJlZlB0cjxSVENSdHBSZWNlaXZlcj4+IGdldFJlY2VpdmVy
cygpIGNvbnN0IHsgcmV0dXJuIG1fcmVjZWl2ZXJTZXQ7IH0KKyAgICBjb25zdCBWZWN0b3I8UmVm
UHRyPFJUQ1J0cFRyYW5zY2VpdmVyPj4mIGdldFRyYW5zY2VpdmVycygpIGNvbnN0IHsgcmV0dXJu
IG1fdHJhbnNjZWl2ZXJTZXQ7IH0KIAogICAgIFJlZlB0cjxSVENSdHBTZW5kZXI+IGFkZFRyYWNr
KFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBWZWN0b3I8TWVkaWFTdHJlYW0qPiwgRXhjZXB0aW9u
Q29kZSYpOwogICAgIHZvaWQgcmVtb3ZlVHJhY2soUlRDUnRwU2VuZGVyJiwgRXhjZXB0aW9uQ29k
ZSYpOwogCisgICAgZW51bSBjbGFzcyBSdHBUcmFuc2NlaXZlckRpcmVjdGlvbiB7CisgICAgICAg
IFNlbmRyZWN2LAorICAgICAgICBTZW5kb25seSwKKyAgICAgICAgUmVjdm9ubHksCisgICAgICAg
IEluYWN0aXZlCisgICAgfTsKKworICAgIHN0cnVjdCBSdHBUcmFuc2NlaXZlckluaXQgeworICAg
ICAgICBSdHBUcmFuc2NlaXZlckRpcmVjdGlvbiBkaXJlY3Rpb247CisgICAgfTsKKworICAgIFJl
ZlB0cjxSVENSdHBUcmFuc2NlaXZlcj4gYWRkVHJhbnNjZWl2ZXIoUmVmPE1lZGlhU3RyZWFtVHJh
Y2s+JiYsIGNvbnN0IFJ0cFRyYW5zY2VpdmVySW5pdCYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBS
ZWZQdHI8UlRDUnRwVHJhbnNjZWl2ZXI+IGFkZFRyYW5zY2VpdmVyKGNvbnN0IFN0cmluZyYga2lu
ZCwgY29uc3QgUnRwVHJhbnNjZWl2ZXJJbml0JiwgRXhjZXB0aW9uQ29kZSYpOworCiAgICAgdm9p
ZCBxdWV1ZWRDcmVhdGVPZmZlcihjb25zdCBEaWN0aW9uYXJ5JiBvZmZlck9wdGlvbnMsIFBlZXJD
b25uZWN0aW9uOjpTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNlJiYpOwogICAgIHZvaWQgcXVldWVk
Q3JlYXRlQW5zd2VyKGNvbnN0IERpY3Rpb25hcnkmIGFuc3dlck9wdGlvbnMsIFBlZXJDb25uZWN0
aW9uOjpTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNlJiYpOwogCkBAIC0xMDksNiArMTIzLDggQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBSVENQZWVyQ29ubmVjdGlvbihTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+JiYsIEV4Y2VwdGlvbkNvZGUmKTsKIAor
ICAgIFJlZlB0cjxSVENSdHBUcmFuc2NlaXZlcj4gY29tcGxldGVBZGRUcmFuc2NlaXZlcihSZWY8
UlRDUnRwVHJhbnNjZWl2ZXI+JiYsIGNvbnN0IFJ0cFRyYW5zY2VpdmVySW5pdCYpOworCiAgICAg
Ly8gRXZlbnRUYXJnZXQgaW1wbGVtZW50YXRpb24uCiAgICAgdm9pZCByZWZFdmVudFRhcmdldCgp
IG92ZXJyaWRlIHsgcmVmKCk7IH0KICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlk
ZSB7IGRlcmVmKCk7IH0KQEAgLTExOSw3ICsxMzUsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgY2Fu
U3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8g
UGVlckNvbm5lY3Rpb25CYWNrZW5kQ2xpZW50Ci0gICAgdm9pZCBhZGRSZWNlaXZlcihSVENSdHBS
ZWNlaXZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0U2lnbmFsaW5nU3RhdGUoUGVlckNvbm5l
Y3Rpb25TdGF0ZXM6OlNpZ25hbGluZ1N0YXRlKSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZUlj
ZUdhdGhlcmluZ1N0YXRlKFBlZXJDb25uZWN0aW9uU3RhdGVzOjpJY2VHYXRoZXJpbmdTdGF0ZSkg
b3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVJY2VDb25uZWN0aW9uU3RhdGUoUGVlckNvbm5lY3Rp
b25TdGF0ZXM6OkljZUNvbm5lY3Rpb25TdGF0ZSkgb3ZlcnJpZGU7CkBAIC0xNDAsNiArMTU1LDcg
QEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxSZWZQdHI8UlRDUnRwU2VuZGVyPj4gbV9zZW5kZXJT
ZXQ7CiAgICAgVmVjdG9yPFJlZlB0cjxSVENSdHBSZWNlaXZlcj4+IG1fcmVjZWl2ZXJTZXQ7Cisg
ICAgVmVjdG9yPFJlZlB0cjxSVENSdHBUcmFuc2NlaXZlcj4+IG1fdHJhbnNjZWl2ZXJTZXQ7CiAK
ICAgICBWZWN0b3I8UmVmUHRyPFJUQ0RhdGFDaGFubmVsPj4gbV9kYXRhQ2hhbm5lbHM7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbi5pZGwKaW5kZXggYjBhZGVhMy4uOWRhN2U4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGwKQEAg
LTYwLDEwICs2MCwxNCBAQAogCiAgICAgc2VxdWVuY2U8UlRDUnRwU2VuZGVyPiBnZXRTZW5kZXJz
KCk7CiAgICAgc2VxdWVuY2U8UlRDUnRwUmVjZWl2ZXI+IGdldFJlY2VpdmVycygpOworICAgIHNl
cXVlbmNlPFJUQ1J0cFRyYW5zY2VpdmVyPiBnZXRUcmFuc2NlaXZlcnMoKTsKIAogICAgIFtTdHJp
Y3RUeXBlQ2hlY2tpbmcsIFJhaXNlc0V4Y2VwdGlvbl0gUlRDUnRwU2VuZGVyIGFkZFRyYWNrKE1l
ZGlhU3RyZWFtVHJhY2sgdHJhY2ssIE1lZGlhU3RyZWFtLi4uIHN0cmVhbXMpOwogICAgIFtTdHJp
Y3RUeXBlQ2hlY2tpbmcsIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCByZW1vdmVUcmFjayhSVENSdHBT
ZW5kZXIgc2VuZGVyKTsKIAorICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNlc0V4Y2VwdGlv
bl0gUlRDUnRwVHJhbnNjZWl2ZXIgYWRkVHJhbnNjZWl2ZXIoTWVkaWFTdHJlYW1UcmFjayB0cmFj
aywgb3B0aW9uYWwgUlRDUnRwVHJhbnNjZWl2ZXJJbml0IGluaXQpOworICAgIFtTdHJpY3RUeXBl
Q2hlY2tpbmcsIFJhaXNlc0V4Y2VwdGlvbl0gUlRDUnRwVHJhbnNjZWl2ZXIgYWRkVHJhbnNjZWl2
ZXIoRE9NU3RyaW5nIGtpbmQsIG9wdGlvbmFsIFJUQ1J0cFRyYW5zY2VpdmVySW5pdCBpbml0KTsK
KwogICAgIFtKU0J1aWx0aW5dIFByb21pc2Ugc2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9u
RGVzY3JpcHRpb24gZGVzY3JpcHRpb24pOwogICAgIC8vIExlZ2FjeSBzaWduYXR1cmU6IFByb21p
c2Ugc2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24gZGVzY3JpcHRpb24K
ICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVm9p
ZENhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywKQEAgLTExMiwzICsxMTYsMTQgQEAKICAgICBhdHRy
aWJ1dGUgRXZlbnRIYW5kbGVyIG9uaWNlZ2F0aGVyaW5nc3RhdGVjaGFuZ2U7CiAgICAgYXR0cmli
dXRlIEV2ZW50SGFuZGxlciBvbmRhdGFjaGFubmVsOwogfTsKKworZW51bSBSVENSdHBUcmFuc2Nl
aXZlckRpcmVjdGlvbiB7CisgICAgInNlbmRyZWN2IiwKKyAgICAic2VuZG9ubHkiLAorICAgICJy
ZWN2b25seSIsCisgICAgImluYWN0aXZlIgorfTsKKworZGljdGlvbmFyeSBSVENSdHBUcmFuc2Nl
aXZlckluaXQgeworICAgIFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uIGRpcmVjdGlvbiA9ICJz
ZW5kcmVjdiI7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBTZW5kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBTZW5kZXIuY3BwCmluZGV4IDE0MzcyZDIuLjJlZjMxYTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAKQEAgLTM3
LDI4ICszNyw1MCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJUQ1J0cFNlbmRlcjo6UlRD
UnRwU2VuZGVyKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBWZWN0b3I8U3RyaW5nPiYm
IG1lZGlhU3RyZWFtSWRzLCBSVENSdHBTZW5kZXJDbGllbnQmIGNsaWVudCkKLSAgICA6IFJUQ1J0
cFNlbmRlclJlY2VpdmVyQmFzZShXVEZNb3ZlKHRyYWNrKSkKK1JlZjxSVENSdHBTZW5kZXI+IFJU
Q1J0cFNlbmRlcjo6Y3JlYXRlKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBWZWN0b3I8
U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBSVENSdHBTZW5kZXJDbGllbnQmIGNsaWVudCkKK3sK
KyAgICBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCA9IHRyYWNrLT5raW5kKCk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUlRDUnRwU2VuZGVyKFdURk1vdmUodHJhY2spLCB0cmFja0tpbmQsIFdU
Rk1vdmUobWVkaWFTdHJlYW1JZHMpLCBjbGllbnQpKTsKK30KKworUmVmPFJUQ1J0cFNlbmRlcj4g
UlRDUnRwU2VuZGVyOjpjcmVhdGUoY29uc3QgU3RyaW5nJiB0cmFja0tpbmQsIFZlY3RvcjxTdHJp
bmc+JiYgbWVkaWFTdHJlYW1JZHMsIFJUQ1J0cFNlbmRlckNsaWVudCYgY2xpZW50KQoreworICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ1J0cFNlbmRlcihudWxscHRyLCB0cmFja0tpbmQsIFdU
Rk1vdmUobWVkaWFTdHJlYW1JZHMpLCBjbGllbnQpKTsKK30KKworUlRDUnRwU2VuZGVyOjpSVENS
dHBTZW5kZXIoUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2ssIGNvbnN0IFN0cmluZyYg
dHJhY2tLaW5kLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBSVENSdHBTZW5kZXJD
bGllbnQmIGNsaWVudCkKKyAgICA6IFJUQ1J0cFNlbmRlclJlY2VpdmVyQmFzZSgpCisgICAgLCBt
X3RyYWNrS2luZCh0cmFja0tpbmQpCiAgICAgLCBtX21lZGlhU3RyZWFtSWRzKFdURk1vdmUobWVk
aWFTdHJlYW1JZHMpKQogICAgICwgbV9jbGllbnQoJmNsaWVudCkKIHsKLSAgICAvLyBUaGUgb3Jp
Z2luYWwgdHJhY2sgaWQgaXMgYWx3YXlzIHVzZWQgaW4gbmVnb3RpYXRpb24gZXZlbiBpZiB0aGUg
dHJhY2sgaXMgcmVwbGFjZWQuCi0gICAgbV90cmFja0lkID0gbV90cmFjay0+aWQoKTsKKyAgICBp
ZiAodHJhY2spCisgICAgICAgIHNldFRyYWNrKFdURk1vdmUodHJhY2spKTsKK30KKwordm9pZCBS
VENSdHBTZW5kZXI6OnNldFRyYWNrKFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrKQor
eworICAgIC8vIFNhdmUgdGhlIGlkIGZyb20gdGhlIGZpcnN0IG5vbi1udWxsIHRyYWNrIHNldC4g
VGhhdCBpZCB3aWxsIGJlIHVzZWQgdG8gbmVnb3RpYXRlIHRoZSBzZW5kZXIKKyAgICAvLyBldmVu
IGlmIHRoZSB0cmFjayBpcyByZXBsYWNlZC4KKyAgICBpZiAoIW1fdHJhY2sgJiYgdHJhY2spCisg
ICAgICAgIG1fdHJhY2tJZCA9IHRyYWNrLT5pZCgpOworCisgICAgbV90cmFjayA9IFdURk1vdmUo
dHJhY2spOwogfQogCi12b2lkIFJUQ1J0cFNlbmRlcjo6cmVwbGFjZVRyYWNrKE1lZGlhU3RyZWFt
VHJhY2smIHdpdGhUcmFjaywgUGVlckNvbm5lY3Rpb246OlZvaWRQcm9taXNlJiYgcHJvbWlzZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFJUQ1J0cFNlbmRlcjo6cmVwbGFjZVRyYWNrKFJlZjxN
ZWRpYVN0cmVhbVRyYWNrPiYmIHdpdGhUcmFjaywgUGVlckNvbm5lY3Rpb246OlZvaWRQcm9taXNl
JiYgcHJvbWlzZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKCFtX2NsaWVudCkgewor
ICAgIGlmIChpc1N0b3BwZWQoKSkgewogICAgICAgICBwcm9taXNlLnJlamVjdChJTlZBTElEX1NU
QVRFX0VSUik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV90cmFjay0+a2lu
ZCgpICE9IHdpdGhUcmFjay5raW5kKCkpIHsKKyAgICBpZiAobV90cmFja0tpbmQgIT0gd2l0aFRy
YWNrLT5raW5kKCkpIHsKICAgICAgICAgZWMgPSBUeXBlRXJyb3I7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBtX2NsaWVudC0+cmVwbGFjZVRyYWNrKCp0aGlzLCB3aXRoVHJhY2ssIFdU
Rk1vdmUocHJvbWlzZSkpOworICAgIG1fY2xpZW50LT5yZXBsYWNlVHJhY2soKnRoaXMsIFdURk1v
dmUod2l0aFRyYWNrKSwgV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU2VuZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNl
bmRlci5oCmluZGV4IDYwYjk5MjAuLmRhOWU1ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaApAQCAtNDgsMjIgKzQ4LDI2IEBAIHB1
YmxpYzoKIAogY2xhc3MgUlRDUnRwU2VuZGVyIDogcHVibGljIFJUQ1J0cFNlbmRlclJlY2VpdmVy
QmFzZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSVENSdHBTZW5kZXI+IGNyZWF0ZShSZWY8
TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlk
cywgUlRDUnRwU2VuZGVyQ2xpZW50JiBjbGllbnQpCi0gICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBSVENSdHBTZW5kZXIoV1RGTW92ZSh0cmFjayksIFdURk1vdmUobWVkaWFTdHJl
YW1JZHMpLCBjbGllbnQpKTsKLSAgICB9CisgICAgc3RhdGljIFJlZjxSVENSdHBTZW5kZXI+IGNy
ZWF0ZShSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVh
bUlkcywgUlRDUnRwU2VuZGVyQ2xpZW50Jik7CisgICAgc3RhdGljIFJlZjxSVENSdHBTZW5kZXI+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIHRyYWNrS2luZCwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0
cmVhbUlkcywgUlRDUnRwU2VuZGVyQ2xpZW50Jik7CisKKyAgICBjb25zdCBTdHJpbmcmIHRyYWNr
SWQoKSBjb25zdCB7IHJldHVybiBtX3RyYWNrSWQ7IH0KKyAgICBjb25zdCBTdHJpbmcmIHRyYWNr
S2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhY2tLaW5kOyB9CiAKLSAgICBjb25zdCBTdHJpbmcm
IHRyYWNrSWQoKSB7IHJldHVybiBtX3RyYWNrSWQ7IH0KICAgICBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgbWVkaWFTdHJlYW1JZHMoKSBjb25zdCB7IHJldHVybiBtX21lZGlhU3RyZWFtSWRzOyB9Cisg
ICAgdm9pZCBzZXRNZWRpYVN0cmVhbUlkcyhWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRz
KSB7IG1fbWVkaWFTdHJlYW1JZHMgPSBXVEZNb3ZlKG1lZGlhU3RyZWFtSWRzKTsgfQogCisgICAg
Ym9vbCBpc1N0b3BwZWQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudCA9PSBudWxscHRyOyB9CiAg
ICAgdm9pZCBzdG9wKCkgeyBtX2NsaWVudCA9IG51bGxwdHI7IH0KKyAgICB2b2lkIHNldFRyYWNr
KFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmKTsKIAotICAgIHZvaWQgcmVwbGFjZVRyYWNrKE1l
ZGlhU3RyZWFtVHJhY2smLCBQZWVyQ29ubmVjdGlvbjo6Vm9pZFByb21pc2UmJiwgRXhjZXB0aW9u
Q29kZSYpOworICAgIHZvaWQgcmVwbGFjZVRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBQ
ZWVyQ29ubmVjdGlvbjo6Vm9pZFByb21pc2UmJiwgRXhjZXB0aW9uQ29kZSYpOwogCiBwcml2YXRl
OgotICAgIFJUQ1J0cFNlbmRlcihSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgVmVjdG9yPFN0cmlu
Zz4mJiBtZWRpYVN0cmVhbUlkcywgUlRDUnRwU2VuZGVyQ2xpZW50Jik7CisgICAgUlRDUnRwU2Vu
ZGVyKFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCwg
VmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgUlRDUnRwU2VuZGVyQ2xpZW50Jik7CiAK
ICAgICBTdHJpbmcgbV90cmFja0lkOworICAgIFN0cmluZyBtX3RyYWNrS2luZDsKICAgICBWZWN0
b3I8U3RyaW5nPiBtX21lZGlhU3RyZWFtSWRzOwogICAgIFJUQ1J0cFNlbmRlckNsaWVudCogbV9j
bGllbnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBTZW5kZXJSZWNlaXZlckJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlLmgKaW5kZXggMzljOWViYy4uZDUxMGRh
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBT
ZW5kZXJSZWNlaXZlckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1J0cFNlbmRlclJlY2VpdmVyQmFzZS5oCkBAIC00NiwxNCArNDYsMTcgQEAgY2xhc3Mg
UlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDUnRwU2VuZGVy
UmVjZWl2ZXJCYXNlPiwgcHUKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SVENSdHBTZW5kZXJSZWNl
aXZlckJhc2UoKSB7IH0KIAotICAgIE1lZGlhU3RyZWFtVHJhY2smIHRyYWNrKCkgeyByZXR1cm4g
bV90cmFjazsgfQorICAgIE1lZGlhU3RyZWFtVHJhY2sqIHRyYWNrKCkgeyByZXR1cm4gbV90cmFj
ay5nZXQoKTsgfQogCiBwcm90ZWN0ZWQ6CisgICAgUlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlKCkK
KyAgICB7IH0KKwogICAgIFJUQ1J0cFNlbmRlclJlY2VpdmVyQmFzZShSZWY8TWVkaWFTdHJlYW1U
cmFjaz4mJiB0cmFjaykKICAgICAgICAgOiBtX3RyYWNrKFdURk1vdmUodHJhY2spKQogICAgIHsg
fQogCi0gICAgUmVmPE1lZGlhU3RyZWFtVHJhY2s+IG1fdHJhY2s7CisgICAgUmVmUHRyPE1lZGlh
U3RyZWFtVHJhY2s+IG1fdHJhY2s7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2Vp
dmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNj
ZWl2ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjODQ4OGIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFRyYW5zY2VpdmVyLmNwcApAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9u
LgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBFcmljc3NvbiBub3IgdGhlIG5hbWVzIG9mIGl0
cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiUlRDUnRwVHJhbnNjZWl2ZXIuaCIKKworI2lmIEVOQUJMRShXRUJfUlRD
KQorCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworI2RlZmluZSBTVFJJTkdfRlVOQ1RJT04obmFtZSkgXAorICAgIHN0YXRpYyBjb25zdCBT
dHJpbmcmIG5hbWUjI1N0cmluZygpIFwKKyAgICB7IFwKKyAgICAgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPGNvbnN0IFN0cmluZz4gbmFtZSB7IEFTQ0lJTGl0ZXJhbCgjbmFtZSkgfTsgXAorICAg
ICAgICByZXR1cm4gbmFtZTsgXAorICAgIH0KKworU1RSSU5HX0ZVTkNUSU9OKHNlbmRyZWN2KQor
U1RSSU5HX0ZVTkNUSU9OKHNlbmRvbmx5KQorU1RSSU5HX0ZVTkNUSU9OKHJlY3Zvbmx5KQorU1RS
SU5HX0ZVTkNUSU9OKGluYWN0aXZlKQorCitSZWY8UlRDUnRwVHJhbnNjZWl2ZXI+IFJUQ1J0cFRy
YW5zY2VpdmVyOjpjcmVhdGUoUmVmUHRyPFJUQ1J0cFNlbmRlcj4mJiBzZW5kZXIsIFJlZlB0cjxS
VENSdHBSZWNlaXZlcj4mJiByZWNlaXZlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBS
VENSdHBUcmFuc2NlaXZlcihXVEZNb3ZlKHNlbmRlciksIFdURk1vdmUocmVjZWl2ZXIpKSk7Cit9
CisKK1N0cmluZyBSVENSdHBUcmFuc2NlaXZlcjo6Z2V0TmV4dE1pZCgpCit7CisgICAgc3RhdGlj
IHVuc2lnbmVkIG1pZCA9IDA7CisgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKCsrbWlkKTsKK30K
KworUlRDUnRwVHJhbnNjZWl2ZXI6OlJUQ1J0cFRyYW5zY2VpdmVyKFJlZlB0cjxSVENSdHBTZW5k
ZXI+JiYgc2VuZGVyLCBSZWZQdHI8UlRDUnRwUmVjZWl2ZXI+JiYgcmVjZWl2ZXIpCisgICAgOiBt
X2RpcmVjdGlvbihEaXJlY3Rpb246OlNlbmRyZWN2KQorICAgICwgbV9zZW5kZXIoc2VuZGVyKQor
ICAgICwgbV9yZWNlaXZlcihyZWNlaXZlcikKK3sKK30KKworY29uc3QgU3RyaW5nJiBSVENSdHBU
cmFuc2NlaXZlcjo6ZGlyZWN0aW9uU3RyaW5nKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fZGly
ZWN0aW9uKSB7CisgICAgY2FzZSBEaXJlY3Rpb246OlNlbmRyZWN2OiByZXR1cm4gc2VuZHJlY3ZT
dHJpbmcoKTsKKyAgICBjYXNlIERpcmVjdGlvbjo6U2VuZG9ubHk6IHJldHVybiBzZW5kb25seVN0
cmluZygpOworICAgIGNhc2UgRGlyZWN0aW9uOjpSZWN2b25seTogcmV0dXJuIHJlY3Zvbmx5U3Ry
aW5nKCk7CisgICAgY2FzZSBEaXJlY3Rpb246OkluYWN0aXZlOiByZXR1cm4gaW5hY3RpdmVTdHJp
bmcoKTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKK30KKworYm9vbCBSVENSdHBUcmFuc2NlaXZlcjo6aGFzU2VuZGluZ0RpcmVj
dGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGlyZWN0aW9uID09IERpcmVjdGlvbjo6U2Vu
ZHJlY3YgfHwgbV9kaXJlY3Rpb24gPT0gRGlyZWN0aW9uOjpTZW5kb25seTsKK30KKwordm9pZCBS
VENSdHBUcmFuc2NlaXZlcjo6ZW5hYmxlU2VuZGluZ0RpcmVjdGlvbigpCit7CisgICAgaWYgKG1f
ZGlyZWN0aW9uID09IERpcmVjdGlvbjo6UmVjdm9ubHkpCisgICAgICAgIG1fZGlyZWN0aW9uID0g
RGlyZWN0aW9uOjpTZW5kcmVjdjsKKyAgICBlbHNlIGlmIChtX2RpcmVjdGlvbiA9PSBEaXJlY3Rp
b246OkluYWN0aXZlKQorICAgICAgICBtX2RpcmVjdGlvbiA9IERpcmVjdGlvbjo6U2VuZG9ubHk7
Cit9CisKK3ZvaWQgUlRDUnRwVHJhbnNjZWl2ZXI6OmRpc2FibGVTZW5kaW5nRGlyZWN0aW9uKCkK
K3sKKyAgICBpZiAobV9kaXJlY3Rpb24gPT0gRGlyZWN0aW9uOjpTZW5kcmVjdikKKyAgICAgICAg
bV9kaXJlY3Rpb24gPSBEaXJlY3Rpb246OlJlY3Zvbmx5OworICAgIGVsc2UgaWYgKG1fZGlyZWN0
aW9uID09IERpcmVjdGlvbjo6U2VuZG9ubHkpCisgICAgICAgIG1fZGlyZWN0aW9uID0gRGlyZWN0
aW9uOjpJbmFjdGl2ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZDhkM2M1MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuaApAQCAtMCwwICsxLDk3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAg
ICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0
aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgUlRDUnRwVHJhbnNjZWl2ZXJfaAorI2RlZmluZSBSVENSdHBUcmFuc2NlaXZlcl9oCisK
KyNpZiBFTkFCTEUoV0VCX1JUQykKKworI2luY2x1ZGUgIlJUQ1J0cFJlY2VpdmVyLmgiCisjaW5j
bHVkZSAiUlRDUnRwU2VuZGVyLmgiCisjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
UlRDUnRwVHJhbnNjZWl2ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxSVENSdHBUcmFuc2NlaXZlcj4s
IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUgeworcHVibGljOgorICAgIGVudW0gY2xhc3MgRGlyZWN0
aW9uIHsKKyAgICAgICAgU2VuZHJlY3YsCisgICAgICAgIFNlbmRvbmx5LAorICAgICAgICBSZWN2
b25seSwKKyAgICAgICAgSW5hY3RpdmUKKyAgICB9OworCisgICAgc3RhdGljIFJlZjxSVENSdHBU
cmFuc2NlaXZlcj4gY3JlYXRlKFJlZlB0cjxSVENSdHBTZW5kZXI+JiYsIFJlZlB0cjxSVENSdHBS
ZWNlaXZlcj4mJik7CisgICAgdmlydHVhbCB+UlRDUnRwVHJhbnNjZWl2ZXIoKSB7IH0KKworICAg
IGJvb2wgaGFzU2VuZGluZ0RpcmVjdGlvbigpIGNvbnN0OworICAgIHZvaWQgZW5hYmxlU2VuZGlu
Z0RpcmVjdGlvbigpOworICAgIHZvaWQgZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsKKworICAg
IGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uU3RyaW5nKCkgY29uc3Q7CisgICAgRGlyZWN0aW9uIGRp
cmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0aW9uOyB9CisgICAgdm9pZCBzZXREaXJl
Y3Rpb24oRGlyZWN0aW9uIGRpcmVjdGlvbikgeyBtX2RpcmVjdGlvbiA9IGRpcmVjdGlvbjsgfQor
CisgICAgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbE1pZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
dmlzaW9uYWxNaWQ7IH0KKyAgICB2b2lkIHNldFByb3Zpc2lvbmFsTWlkKGNvbnN0IFN0cmluZyYg
cHJvdmlzaW9uYWxNaWQpIHsgbV9wcm92aXNpb25hbE1pZCA9IHByb3Zpc2lvbmFsTWlkOyB9CisK
KyAgICBjb25zdCBTdHJpbmcmIG1pZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWlkOyB9CisgICAgdm9p
ZCBzZXRNaWQoY29uc3QgU3RyaW5nJiBtaWQpIHsgbV9taWQgPSBtaWQ7IH0KKworICAgIFJUQ1J0
cFNlbmRlciogc2VuZGVyKCkgY29uc3QgeyByZXR1cm4gbV9zZW5kZXIuZ2V0KCk7IH0KKyAgICBS
VENSdHBSZWNlaXZlciogcmVjZWl2ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlY2VpdmVyLmdldCgp
OyB9CisKKyAgICBib29sIHN0b3BwZWQoKSBjb25zdCB7IHJldHVybiBtX3N0b3BwZWQ7IH0KKyAg
ICB2b2lkIHN0b3AoKSB7IG1fc3RvcHBlZCA9IHRydWU7IH0KKworICAgIHN0YXRpYyBTdHJpbmcg
Z2V0TmV4dE1pZCgpOworCitwcml2YXRlOgorICAgIFJUQ1J0cFRyYW5zY2VpdmVyKFJlZlB0cjxS
VENSdHBTZW5kZXI+JiYsIFJlZlB0cjxSVENSdHBSZWNlaXZlcj4mJik7CisKKyAgICBTdHJpbmcg
bV9wcm92aXNpb25hbE1pZDsKKyAgICBTdHJpbmcgbV9taWQ7CisKKyAgICBEaXJlY3Rpb24gbV9k
aXJlY3Rpb247CisKKyAgICBSZWZQdHI8UlRDUnRwU2VuZGVyPiBtX3NlbmRlcjsKKyAgICBSZWZQ
dHI8UlRDUnRwUmVjZWl2ZXI+IG1fcmVjZWl2ZXI7CisKKyAgICBib29sIG1fc3RvcHBlZCB7IGZh
bHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0VCX1JUQykKKworI2VuZGlmIC8vIFJUQ1J0cFRyYW5zY2VpdmVyX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2NlaXZlci5pZGwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI2M2NjNwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2
ZXIuaWRsCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgRXJpY3Nz
b24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5l
aXRoZXIgdGhlIG5hbWUgb2YgRXJpY3Nzb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0
b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVdFQl9SVEMK
K10gaW50ZXJmYWNlIFJUQ1J0cFRyYW5zY2VpdmVyIHsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NU3RyaW5nPyBtaWQ7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFJUQ1J0cFNlbmRlciBzZW5k
ZXI7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFJUQ1J0cFJlY2VpdmVyIHJlY2VpdmVyOworICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHN0b3BwZWQ7CisgICAgcmVhZG9ubHkgYXR0cmli
dXRlIFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uIGRpcmVjdGlvbjsKKworICAgIHZvaWQgc2V0
RGlyZWN0aW9uKFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uIGRpcmVjdGlvbik7CisgICAgdm9p
ZCBzdG9wKCk7Cit9OworCitlbnVtIFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uIHsKKyAgICAi
c2VuZHJlY3YiLAorICAgICJzZW5kb25seSIsCisgICAgInJlY3Zvbmx5IiwKKyAgICAiaW5hY3Rp
dmUiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGYyOWE0NGIuLmU1OGJmNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIzODcsNiArMjM4Nyw4IEBACiAJ
CTVFMkM0Mzc0MUJDRjBENzUwMDAxRTJCQyAvKiBKU1JUQ1J0cFNlbmRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUUyQzQzNzAxQkNGMEQ2OTAwMDFF
MkJDIC8qIEpTUlRDUnRwU2VuZGVyLmggKi87IH07CiAJCTVFMkM0MzdCMUJDRjlBNTcwMDAxRTJC
QyAvKiBSVENQZWVyQ29ubmVjdGlvbkJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RTJDNDM3NjFCQ0Y5QTBCMDAwMUUyQkMgLyogUlRDUGVl
ckNvbm5lY3Rpb25CdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTVFMkM0MzdDMUJDRjlBODQwMDAxRTJCQyAvKiBSVENQZWVyQ29ubmVj
dGlvbkludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1RTJDNDM3OTFCQ0Y5QTBCMDAwMUUyQkMgLyogUlRDUGVlckNvbm5lY3Rp
b25JbnRlcm5hbHNCdWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTVFNUUyQjEzMUNGQzNFNzAwMDBDMEQ4NSAvKiBSVENSdHBUcmFuc2Nl
aXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
RTVFMkIxMDFDRkMzRTRCMDAwQzBEODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIuY3BwICovOyB9Owor
CQk1RTVFMkIxNDFDRkMzRTc1MDAwQzBEODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVFNUUyQjExMUNGQzNFNEIw
MDBDMEQ4NSAvKiBSVENSdHBUcmFuc2NlaXZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVFQTNENkRGMUM4NTlEN0YwMDMwMEJCQiAvKiBNb2Nr
TWVkaWFFbmRwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUVBM0Q2REUxQzg1OUQ1MzAwMzAwQkJCIC8qIE1vY2tNZWRpYUVuZHBvaW50LmggKi87
IH07CiAJCTVFQTNENkUwMUM4NTlEODQwMDMwMEJCQiAvKiBNb2NrTWVkaWFFbmRwb2ludC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RUEzRDZERDFD
ODU5RDUzMDAzMDBCQkIgLyogTW9ja01lZGlhRW5kcG9pbnQuY3BwICovOyB9OwogCQk1RUEzRDZF
MzFDODU5REMxMDAzMDBCQkIgLyogU0RQUHJvY2Vzc29yLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVFQTNENkUxMUM4NTlEQUEwMDMwMEJCQiAvKiBT
RFBQcm9jZXNzb3IuY3BwICovOyB9OwpAQCAtOTk5Myw2ICs5OTk1LDkgQEAKIAkJNUUyQzQzNzYx
QkNGOUEwQjAwMDFFMkJDIC8qIFJUQ1BlZXJDb25uZWN0aW9uQnVpbHRpbnMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDUGVlckNvbm5lY3Rpb25CdWlsdGlucy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RTJDNDM3ODFCQ0Y5QTBCMDAwMUUyQkMgLyogUlRD
UGVlckNvbm5lY3Rpb25JbnRlcm5hbHNCdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSVENQZWVyQ29ubmVjdGlvbkludGVybmFsc0J1aWx0aW5zLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUUyQzQzNzkxQkNGOUEwQjAwMDFFMkJDIC8q
IFJUQ1BlZXJDb25uZWN0aW9uSW50ZXJuYWxzQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUlRDUGVlckNvbm5lY3Rpb25JbnRlcm5hbHNCdWlsdGlucy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1RTVFMkIxMDFDRkMzRTRCMDAwQzBEODUgLyogUlRD
UnRwVHJhbnNjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UlRDUnRwVHJhbnNjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1RTVF
MkIxMTFDRkMzRTRCMDAwQzBEODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUlRDUnRwVHJhbnNjZWl2ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNUU1RTJCMTIxQ0ZDM0U0QjAwMEMwRDg1IC8qIFJUQ1J0cFRyYW5zY2Vp
dmVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSVENSdHBUcmFuc2NlaXZlci5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVFQTNENkREMUM4NTlENTMwMDMwMEJCQiAvKiBN
b2NrTWVkaWFFbmRwb2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNb2NrTWVkaWFFbmRwb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVF
QTNENkRFMUM4NTlENTMwMDMwMEJCQiAvKiBNb2NrTWVkaWFFbmRwb2ludC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrTWVkaWFFbmRwb2ludC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1RUEzRDZFMTFDODU5REFBMDAzMDBCQkIgLyogU0RQUHJvY2Vzc29y
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNEUFByb2Nlc3Nvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTQ3NCw2ICsxNTQ3OSw5IEBACiAJ
CQkJNUUyQzQzNUExQkNFRTMwRDAwMDFFMkJDIC8qIFJUQ1J0cFNlbmRlci5oICovLAogCQkJCTVF
MkM0MzVCMUJDRUUzMEQwMDAxRTJCQyAvKiBSVENSdHBTZW5kZXIuaWRsICovLAogCQkJCTVFMkM0
MzVEMUJDRUUzMEQwMDAxRTJCQyAvKiBSVENSdHBTZW5kZXJSZWNlaXZlckJhc2UuaCAqLywKKwkJ
CQk1RTVFMkIxMDFDRkMzRTRCMDAwQzBEODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIuY3BwICovLAor
CQkJCTVFNUUyQjExMUNGQzNFNEIwMDBDMEQ4NSAvKiBSVENSdHBUcmFuc2NlaXZlci5oICovLAor
CQkJCTVFNUUyQjEyMUNGQzNFNEIwMDBDMEQ4NSAvKiBSVENSdHBUcmFuc2NlaXZlci5pZGwgKi8s
CiAJCQkJMDcyMjFCN0ExN0NFQzMyNzAwODQ4RTUxIC8qIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbi5j
cHAgKi8sCiAJCQkJMDcyMjFCN0IxN0NFQzMyNzAwODQ4RTUxIC8qIFJUQ1Nlc3Npb25EZXNjcmlw
dGlvbi5oICovLAogCQkJCTA3MjIxQjdDMTdDRUMzMjcwMDg0OEU1MSAvKiBSVENTZXNzaW9uRGVz
Y3JpcHRpb24uaWRsICovLApAQCAtMjcxODksNiArMjcxOTcsNyBAQAogCQkJCTRFMTk1OTIyMEEz
OURBQkEwMDIyMEZFNSAvKiBNZWRpYUZlYXR1cmVOYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDdBNkQxRUMxNDkxMTM3NzAwMDUxRDBDIC8qIE1lZGlhRnJhZ21lbnRVUklQYXJzZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4RUE4MDBFMEExOTUxNkUwMEE4RUY1RiAvKiBNZWRpYUxpc3QuaCBp
biBIZWFkZXJzICovLAorCQkJCTVFNUUyQjE0MUNGQzNFNzUwMDBDMEQ4NSAvKiBSVENSdHBUcmFu
c2NlaXZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUVCQjg5MzExQzc3NzdGRjAwQzY1RDQxIC8q
IE1lZGlhUGF5bG9hZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdFM0RGRDExQTlFNzg2NTAwNzY0
Q0E4IC8qIE1lZGlhUGxheWJhY2tUYXJnZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OTIxNjU1
MUFBNTYwQUEwMEEzQzA0OSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0Q2xpZW50LmggaW4gSGVhZGVy
cyAqLywKQEAgLTMwOTUyLDYgKzMwOTYxLDcgQEAKIAkJCQk0MTcyNTNBQTEzNTRCQkJDMDAzNjBG
MkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREVCQ0NE
RDUxNjY0NkVCMjAwQTQ1MkUxIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlDRDI3RjZFNzE0NTc3MEQzMDA3ODIwN0QgLyogTWVkaWFDb250cm9sbGVy
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVFNUUyQjEzMUNGQzNFNzAwMDBDMEQ4NSAvKiBSVENS
dHBUcmFuc2NlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxRjNDM0JFQTEzNUNBRjNDMDBC
OEMxQUMgLyogTWVkaWFDb250cm9scy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTU3QUY4MTEy
RjFGQjA0MDBBOEM2RjUgLyogTWVkaWFDb250cm9sc0FwcGxlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUNEQUI2RDI4MTdDN0RFNkMwMEM2MEIzNCAvKiBNZWRpYUNvbnRyb2xzSG9zdC5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhRW5kcG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhRW5kcG9pbnQuaAppbmRleCBjMDliOWVhLi4zZGM4N2U0NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnQuaApAQCAtMzQs
NiArMzQsNyBAQAogI2lmIEVOQUJMRShXRUJfUlRDKQogCiAjaW5jbHVkZSAiTWVkaWFFbmRwb2lu
dENvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlLmgiCiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc4
LDYgKzc5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGFkZFJlbW90ZUNhbmRpZGF0
ZShJY2VDYW5kaWRhdGUmLCB1bnNpZ25lZCBtZGVzY0luZGV4LCBjb25zdCBTdHJpbmcmIHVmcmFn
LCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkKSA9IDA7CiAKKyAgICB2aXJ0dWFsIFJlZjxSZWFsdGlt
ZU1lZGlhU291cmNlPiBjcmVhdGVNdXRlZFJlbW90ZVNvdXJjZShjb25zdCBTdHJpbmcmIG1pZCwg
UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXBsYWNl
U2VuZFNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlJiwgdW5zaWduZWQgbWRlc2NJbmRleCkgPSAw
OwogCiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCmlu
ZGV4IDA0ZDA0NjUuLjIyNmFlZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCkBAIC00NSwxMSAr
NDUsNiBAQCBSZWFsdGltZU1lZGlhU291cmNlOjpSZWFsdGltZU1lZGlhU291cmNlKGNvbnN0IFN0
cmluZyYgaWQsIFR5cGUgdHlwZSwgY29uc3QgU3RyaQogICAgIDogbV9pZChpZCkKICAgICAsIG1f
dHlwZSh0eXBlKQogICAgICwgbV9uYW1lKG5hbWUpCi0gICAgLCBtX3N0b3BwZWQoZmFsc2UpCi0g
ICAgLCBtX211dGVkKGZhbHNlKQotICAgICwgbV9yZWFkb25seShmYWxzZSkKLSAgICAsIG1fcmVt
b3RlKGZhbHNlKQotICAgICwgbV9maXRuZXNzU2NvcmUoMCkKIHsKICAgICAvLyBGSVhNRSgxNDcy
MDUpOiBOZWVkIHRvIGltcGxlbWVudCBmaXRuZXNzIHNjb3JlIGZvciBjb25zdHJhaW50cwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1l
ZGlhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU1lZGlhU291cmNlLmgKaW5kZXggMjljOGE1MS4uYzFmNWU5OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2Uu
aApAQCAtMTIwLDE5ICsxMjAsMjAgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFJlYWx0aW1l
TWVkaWFTb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgVHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKTsK
IAorICAgIGJvb2wgbV9tdXRlZCB7IGZhbHNlIH07CisKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1f
aWQ7CiAgICAgU3RyaW5nIG1fcGVyc2lzdGVudElEOwogICAgIFR5cGUgbV90eXBlOwogICAgIFN0
cmluZyBtX25hbWU7Ci0gICAgYm9vbCBtX3N0b3BwZWQ7CisgICAgYm9vbCBtX3N0b3BwZWQgeyBm
YWxzZSB9OwogICAgIFZlY3RvcjxPYnNlcnZlcio+IG1fb2JzZXJ2ZXJzOwogCi0gICAgYm9vbCBt
X211dGVkOwotICAgIGJvb2wgbV9yZWFkb25seTsKLSAgICBib29sIG1fcmVtb3RlOworICAgIGJv
b2wgbV9yZWFkb25seSB7IGZhbHNlIH07CisgICAgYm9vbCBtX3JlbW90ZSB7IGZhbHNlIH07CiAg
ICAgCi0gICAgdW5zaWduZWQgbV9maXRuZXNzU2NvcmU7CisgICAgdW5zaWduZWQgbV9maXRuZXNz
U2NvcmUgeyAwIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMubW0KaW5kZXggYjk4NTI4My4uMjE2Y2QwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGlt
ZVZpZGVvU291cmNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbQpAQCAtNDQsOSArNDQsOSBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZT4g
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZSgpCitSZWY8TW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2U+IE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGUoKQogewotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMoKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMoKSk7CiB9CiAKIE1vY2tSZWFs
dGltZVZpZGVvU291cmNlTWFjOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVuZHBvaW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRW5kcG9pbnQuY3BwCmluZGV4
IDVhMWJkMzUuLmQ2YmMxMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja01lZGlhRW5kcG9pbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja01lZGlhRW5kcG9pbnQuY3BwCkBAIC0zNCw2ICszNCw4IEBACiAjaW5jbHVkZSAiTW9j
a01lZGlhRW5kcG9pbnQuaCIKIAogI2luY2x1ZGUgIk1lZGlhUGF5bG9hZC5oIgorI2luY2x1ZGUg
Ik1vY2tSZWFsdGltZUF1ZGlvU291cmNlLmgiCisjaW5jbHVkZSAiTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2UuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0xNTMsNiArMTU1LDE1IEBAIHZvaWQgTW9ja01lZGlhRW5kcG9pbnQ6OmFkZFJlbW90
ZUNhbmRpZGF0ZShJY2VDYW5kaWRhdGUmIGNhbmRpZGF0ZSwgdW5zaWduZWQgbWRlCiAgICAgVU5V
U0VEX1BBUkFNKHBhc3N3b3JkKTsKIH0KIAorUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+IE1vY2tN
ZWRpYUVuZHBvaW50OjpjcmVhdGVNdXRlZFJlbW90ZVNvdXJjZShjb25zdCBTdHJpbmcmLCBSZWFs
dGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUpCit7CisgICAgaWYgKHR5cGUgPT0gUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6QXVkaW8pCisgICAgICAgIHJldHVybiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJj
ZTo6Y3JlYXRlTXV0ZWQoInJlbW90ZSBhdWRpbyIpOworCisgICAgQVNTRVJUKHR5cGUgPT0gUmVh
bHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8pOworICAgIHJldHVybiBNb2NrUmVhbHRpbWVWaWRlb1Nv
dXJjZTo6Y3JlYXRlTXV0ZWQoInJlbW90ZSB2aWRlbyIpOworfQorCiB2b2lkIE1vY2tNZWRpYUVu
ZHBvaW50OjpyZXBsYWNlU2VuZFNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlJiBuZXdTb3VyY2Us
IHVuc2lnbmVkIG1kZXNjSW5kZXgpCiB7CiAgICAgVU5VU0VEX1BBUkFNKG5ld1NvdXJjZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVuZHBvaW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVuZHBvaW50LmgKaW5k
ZXggZGRjMjhlMC4uMTBjNmJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrTWVkaWFFbmRwb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svTW9ja01lZGlhRW5kcG9pbnQuaApAQCAtNTUsNiArNTUsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGFkZFJlbW90ZUNhbmRpZGF0ZShJY2VDYW5kaWRhdGUmLCB1bnNpZ25lZCBtZGVzY0luZGV4
LCBjb25zdCBTdHJpbmcmIHVmcmFnLCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkKSBvdmVycmlkZTsK
IAorICAgIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiBjcmVhdGVNdXRlZFJlbW90ZVNvdXJjZShj
b25zdCBTdHJpbmcmIG1pZCwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCByZXBsYWNlU2VuZFNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlJiwgdW5zaWduZWQg
bWRlc2NJbmRleCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZS5jcHAKaW5kZXggOWRmZDY1MS4uMzBiMjQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKQEAgLTQw
LDEzICs0MCwyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxNb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZT4gTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZSgpCitSZWY8TW9j
a1JlYWx0aW1lQXVkaW9Tb3VyY2U+IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGUoKQog
ewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UoKSk7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UoTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2U6Om1vY2tBdWRpb1NvdXJjZU5hbWUoKSkpOwogfQogCi1Nb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UoKQotICAgIDogTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2UoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCBSZWFsdGltZU1lZGlh
U291cmNlOjpBdWRpbywgbW9ja0F1ZGlvU291cmNlTmFtZSgpKQorUmVmPE1vY2tSZWFsdGltZUF1
ZGlvU291cmNlPiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6Y3JlYXRlTXV0ZWQoY29uc3QgU3Ry
aW5nJiBuYW1lKQoreworICAgIFJlZjxNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZT4gc291cmNlID0g
YWRvcHRSZWYoKm5ldyBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZShuYW1lKSk7CisgICAgc291cmNl
LT5tX211dGVkID0gdHJ1ZTsKKworICAgIHJldHVybiBzb3VyY2U7Cit9CisKK01vY2tSZWFsdGlt
ZUF1ZGlvU291cmNlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZShjb25zdCBTdHJpbmcmIG5hbWUp
CisgICAgOiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZShjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5n
KCksIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvLCBuYW1lKQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmgK
aW5kZXggNmVjY2M5MC4uMWY0ZTFmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaApAQCAtNDMsMTIgKzQzLDEzIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlIDogcHVi
bGljIE1vY2tSZWFsdGltZU1lZGlhU291cmNlIHsKIHB1YmxpYzoKIAotICAgIHN0YXRpYyBSZWZQ
dHI8TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U+IGNyZWF0ZSgpOworICAgIHN0YXRpYyBSZWY8TW9j
a1JlYWx0aW1lQXVkaW9Tb3VyY2U+IGNyZWF0ZSgpOworICAgIHN0YXRpYyBSZWY8TW9ja1JlYWx0
aW1lQXVkaW9Tb3VyY2U+IGNyZWF0ZU11dGVkKGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKICAgICB2
aXJ0dWFsIH5Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZSgpIHsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAg
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UoKTsKKyAgICBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZShj
b25zdCBTdHJpbmcmIG5hbWUgPSBBU0NJSUxpdGVyYWwoIk1vY2sgYXVkaW8gZGV2aWNlIikpOwog
CiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlU2V0dGluZ3MoUmVhbHRpbWVNZWRpYVNvdXJjZVNl
dHRpbmdzJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwCmluZGV4IDI4Yjc2NzAuLjg2NGJkNzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2UuY3BwCkBAIC00OSwxNCArNDksMjIgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogI2lmICFQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpCi1SZWZQdHI8TW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2U+IE1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGUoKQorUmVm
PE1vY2tSZWFsdGltZVZpZGVvU291cmNlPiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRl
KCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tSZWFsdGltZVZpZGVvU291cmNlKCkp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vY2tSZWFsdGltZVZpZGVvU291cmNlKE1vY2tS
ZWFsdGltZU1lZGlhU291cmNlOjptb2NrVmlkZW9Tb3VyY2VOYW1lKCkpKTsKK30KKworUmVmPE1v
Y2tSZWFsdGltZVZpZGVvU291cmNlPiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Y3JlYXRlTXV0
ZWQoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIFJlZjxNb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZT4gc291cmNlID0gYWRvcHRSZWYoKm5ldyBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZShuYW1lKSk7
CisgICAgc291cmNlLT5tX211dGVkID0gdHJ1ZTsKKworICAgIHJldHVybiBzb3VyY2U7CiB9CiAj
ZW5kaWYKIAotTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNl
KCkKLSAgICA6IE1vY2tSZWFsdGltZU1lZGlhU291cmNlKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJp
bmcoKSwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VmlkZW8sIG1vY2tWaWRlb1NvdXJjZU5hbWUoKSkK
K01vY2tSZWFsdGltZVZpZGVvU291cmNlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZShjb25zdCBT
dHJpbmcmIG5hbWUpCisgICAgOiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZShjcmVhdGVDYW5vbmlj
YWxVVUlEU3RyaW5nKCksIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvLCBuYW1lKQogICAgICwg
bV90aW1lcihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZNb2NrUmVhbHRpbWVWaWRlb1NvdXJj
ZTo6Z2VuZXJhdGVGcmFtZSkKIHsKICAgICBtX2Rhc2hXaWR0aHMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eSgyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1Jl
YWx0aW1lVmlkZW9Tb3VyY2UuaAppbmRleCBhNWE1MmMxLi5hZDAzZmRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5o
CkBAIC00Niw3ICs0Niw4IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIE1vY2tSZWFs
dGltZVZpZGVvU291cmNlIDogcHVibGljIE1vY2tSZWFsdGltZU1lZGlhU291cmNlIHsKIHB1Ymxp
YzoKIAotICAgIHN0YXRpYyBSZWZQdHI8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U+IGNyZWF0ZSgp
OworICAgIHN0YXRpYyBSZWY8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U+IGNyZWF0ZSgpOworICAg
IHN0YXRpYyBSZWY8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U+IGNyZWF0ZU11dGVkKGNvbnN0IFN0
cmluZyYgbmFtZSk7CiAKICAgICB2aXJ0dWFsIH5Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZSgpIHsg
fQogCkBAIC01Niw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZyYW1lUmF0ZShmbG9h
dCk7CiAKIHByb3RlY3RlZDoKLSAgICBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZSgpOworICAgIE1v
Y2tSZWFsdGltZVZpZGVvU291cmNlKGNvbnN0IFN0cmluZyYgbmFtZSA9IEFTQ0lJTGl0ZXJhbCgi
TW9jayB2aWRlbyBkZXZpY2UiKSk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVBsYXRmb3JtTGF5
ZXIoKSBjb25zdCB7IH0KIAogICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcigpIGNvbnN0Owo=
</data>
<flag name="review"
          id="304115"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280223</attachid>
            <date>2016-06-01 01:30:09 -0700</date>
            <delta_ts>2016-06-01 03:05:22 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>add-transceiver_3.patch</filename>
            <type>text/plain</type>
            <size>60464</size>
            <attacher name="Adam Bergkvist">adam.bergkvist</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlZmI5YTBmLi4wYmQ2NjNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTYtMDUt
MzEgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgorCisgICAg
ICAgIFdlYlJUQzogQWRkIFJUQ1J0cFRyYW5zY2VpdmVyIGludGVyZmFjZSBhbmQgUlRDUGVlckNv
bm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MTg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgQWRkZWQgdGVzdCBmb3IgUlRDUGVlckNvbm5lY3Rpb24uYWRkVHJhbnNj
ZWl2ZXIoKS4KKworICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24t
YWRkVHJhbnNjZWl2ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWFkZFRyYW5zY2VpdmVyLmh0bWw6IEFkZGVkLgorICAg
ICAgICBUZXN0IGNyZWF0aW5nIHNldmVyYWwgUlRDUnRwVHJhbnNjZWl2ZXJzIHdpdGggdmFyaW91
cyBjb25maWd1cmF0aW9ucyBhbmQgaW5zcGVjdCB0aGUgcmVzdWx0LgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICBTa2lwIHRoZSBuZXcgdGVzdCBzaW5j
ZSB0aGUgTWFjIHBvcnQgY3VycmVudGx5IGRvZXNuJ3QgYnVpbGQgd2l0aCBXZWJSVEMgc3VwcG9y
dC4KKwogMjAxNi0wNS0yNSAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdtYWlsLmNv
bT4KIAogICAgICAgICBbRVNOZXh0XSBTdXBwb3J0IHRyYWlsaW5nIGNvbW1hcyBpbiBmdW5jdGlv
biBwYXJhbSBsaXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi1hZGRUcmFuc2NlaXZlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWFkZFRyYW5zY2VpdmVyLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDFlNTgyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVj
dGlvbi1hZGRUcmFuc2NlaXZlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMzYgQEAKK1Rlc3Qg
YmFzaWMgYmVoYXZpb3Igb2YgUlRDUGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIKKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgcGMuZ2V0VHJhbnNjZWl2ZXJzKCkubGVu
Z3RoIGlzIDAKKworKioqIFRlc3QgYXJndW1lbnRzCisqKiogJ3RyYWNrT3JLaW5kJyBhcmd1bWVu
dCBpcyBtYW5kYXRvcnkKK1BBU1MgcGMuYWRkVHJhbnNjZWl2ZXIoKSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KK1BBU1MgcGMuYWRkVHJhbnNjZWl2ZXIo
e30pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCisqKiogQmFkIHR5cGUg
YXMgZmlyc3QgYXJndW1lbnQKK1BBU1MgcGMuYWRkVHJhbnNjZWl2ZXIobnVsbCkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgcGMuYWRkVHJhbnNjZWl2ZXIobnVs
bCwge30pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIHBjLmFk
ZFRyYW5zY2VpdmVyKHN0cmVhbSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJv
ci4KKyoqKiBCYWQgdHJhY2sga2luZAorUEFTUyBwYy5hZGRUcmFuc2NlaXZlcignZm9vJykgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KKyoqKiBCYWQgZGlyZWN0aW9uIHZh
bHVlCitQQVNTIHBjLmFkZFRyYW5zY2VpdmVyKCJhdWRpbyIsIHsiZGlyZWN0aW9uIjogImZvbyJ9
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorCitQQVNTIHRyYW5zY2Vp
dmVyID0gcGMuYWRkVHJhbnNjZWl2ZXIoImF1ZGlvIikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24u
CitQQVNTIHBjLmdldFRyYW5zY2VpdmVycygpLmxlbmd0aCBpcyAxCitQQVNTIHBjLmdldFRyYW5z
Y2VpdmVycygpLmluY2x1ZGVzKHRyYW5zY2VpdmVyKSBpcyB0cnVlCitQQVNTIHRyYW5zY2VpdmVy
LmRpcmVjdGlvbiBpcyAnc2VuZHJlY3YnCitQQVNTIHRyYW5zY2VpdmVyLm1pZCBpcyBudWxsCitQ
QVNTIHRyYW5zY2VpdmVyLnN0b3BwZWQgaXMgZmFsc2UKKyoqKiBDaGVjayBzZW5kZXIKK1BBU1Mg
dHJhbnNjZWl2ZXIuc2VuZGVyIGlzIGFuIGluc3RhbmNlIG9mIFJUQ1J0cFNlbmRlcgorUEFTUyB0
cmFuc2NlaXZlci5zZW5kZXIudHJhY2sgaXMgbnVsbAorKioqIENoZWNrIHJlY2VpdmVyCitQQVNT
IHRyYW5zY2VpdmVyLnJlY2VpdmVyIGlzIGFuIGluc3RhbmNlIG9mIFJUQ1J0cFJlY2VpdmVyCitQ
QVNTIHRyYW5zY2VpdmVyLnJlY2VpdmVyLnRyYWNrIGlzIGFuIGluc3RhbmNlIG9mIE1lZGlhU3Ry
ZWFtVHJhY2sKK1BBU1MgdHJhbnNjZWl2ZXIucmVjZWl2ZXIudHJhY2sua2luZCBpcyAnYXVkaW8n
CisKK1BBU1MgdHJhbnNjZWl2ZXIgPSBwYy5hZGRUcmFuc2NlaXZlcigidmlkZW8iKSBkaWQgbm90
IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgcGMuZ2V0VHJhbnNjZWl2ZXJzKCkubGVuZ3RoIGlzIDIK
K1BBU1MgcGMuZ2V0VHJhbnNjZWl2ZXJzKCkuaW5jbHVkZXModHJhbnNjZWl2ZXIpIGlzIHRydWUK
K1BBU1MgdHJhbnNjZWl2ZXIuZGlyZWN0aW9uIGlzICdzZW5kcmVjdicKK1BBU1MgdHJhbnNjZWl2
ZXIubWlkIGlzIG51bGwKK1BBU1MgdHJhbnNjZWl2ZXIuc3RvcHBlZCBpcyBmYWxzZQorKioqIENo
ZWNrIHNlbmRlcgorUEFTUyB0cmFuc2NlaXZlci5zZW5kZXIgaXMgYW4gaW5zdGFuY2Ugb2YgUlRD
UnRwU2VuZGVyCitQQVNTIHRyYW5zY2VpdmVyLnNlbmRlci50cmFjayBpcyBudWxsCisqKiogQ2hl
Y2sgcmVjZWl2ZXIKK1BBU1MgdHJhbnNjZWl2ZXIucmVjZWl2ZXIgaXMgYW4gaW5zdGFuY2Ugb2Yg
UlRDUnRwUmVjZWl2ZXIKK1BBU1MgdHJhbnNjZWl2ZXIucmVjZWl2ZXIudHJhY2sgaXMgYW4gaW5z
dGFuY2Ugb2YgTWVkaWFTdHJlYW1UcmFjaworUEFTUyB0cmFuc2NlaXZlci5yZWNlaXZlci50cmFj
ay5raW5kIGlzICd2aWRlbycKKworUEFTUyB0cmFuc2NlaXZlciA9IHBjLmFkZFRyYW5zY2VpdmVy
KGF1ZGlvVHJhY2spIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBwYy5nZXRUcmFuc2Nl
aXZlcnMoKS5sZW5ndGggaXMgMworUEFTUyBwYy5nZXRUcmFuc2NlaXZlcnMoKS5pbmNsdWRlcyh0
cmFuc2NlaXZlcikgaXMgdHJ1ZQorUEFTUyB0cmFuc2NlaXZlci5kaXJlY3Rpb24gaXMgJ3NlbmRy
ZWN2JworUEFTUyB0cmFuc2NlaXZlci5taWQgaXMgbnVsbAorUEFTUyB0cmFuc2NlaXZlci5zdG9w
cGVkIGlzIGZhbHNlCisqKiogQ2hlY2sgc2VuZGVyCitQQVNTIHRyYW5zY2VpdmVyLnNlbmRlciBp
cyBhbiBpbnN0YW5jZSBvZiBSVENSdHBTZW5kZXIKK1BBU1MgdHJhbnNjZWl2ZXIuc2VuZGVyLnRy
YWNrIGlzIGF1ZGlvVHJhY2sKKyoqKiBDaGVjayByZWNlaXZlcgorUEFTUyB0cmFuc2NlaXZlci5y
ZWNlaXZlciBpcyBhbiBpbnN0YW5jZSBvZiBSVENSdHBSZWNlaXZlcgorUEFTUyB0cmFuc2NlaXZl
ci5yZWNlaXZlci50cmFjayBpcyBhbiBpbnN0YW5jZSBvZiBNZWRpYVN0cmVhbVRyYWNrCitQQVNT
IHRyYW5zY2VpdmVyLnJlY2VpdmVyLnRyYWNrLmtpbmQgaXMgJ2F1ZGlvJworCitQQVNTIHRyYW5z
Y2VpdmVyID0gcGMuYWRkVHJhbnNjZWl2ZXIodmlkZW9UcmFjaykgZGlkIG5vdCB0aHJvdyBleGNl
cHRpb24uCitQQVNTIHBjLmdldFRyYW5zY2VpdmVycygpLmxlbmd0aCBpcyA0CitQQVNTIHBjLmdl
dFRyYW5zY2VpdmVycygpLmluY2x1ZGVzKHRyYW5zY2VpdmVyKSBpcyB0cnVlCitQQVNTIHRyYW5z
Y2VpdmVyLmRpcmVjdGlvbiBpcyAnc2VuZHJlY3YnCitQQVNTIHRyYW5zY2VpdmVyLm1pZCBpcyBu
dWxsCitQQVNTIHRyYW5zY2VpdmVyLnN0b3BwZWQgaXMgZmFsc2UKKyoqKiBDaGVjayBzZW5kZXIK
K1BBU1MgdHJhbnNjZWl2ZXIuc2VuZGVyIGlzIGFuIGluc3RhbmNlIG9mIFJUQ1J0cFNlbmRlcgor
UEFTUyB0cmFuc2NlaXZlci5zZW5kZXIudHJhY2sgaXMgdmlkZW9UcmFjaworKioqIENoZWNrIHJl
Y2VpdmVyCitQQVNTIHRyYW5zY2VpdmVyLnJlY2VpdmVyIGlzIGFuIGluc3RhbmNlIG9mIFJUQ1J0
cFJlY2VpdmVyCitQQVNTIHRyYW5zY2VpdmVyLnJlY2VpdmVyLnRyYWNrIGlzIGFuIGluc3RhbmNl
IG9mIE1lZGlhU3RyZWFtVHJhY2sKK1BBU1MgdHJhbnNjZWl2ZXIucmVjZWl2ZXIudHJhY2sua2lu
ZCBpcyAndmlkZW8nCisKK1BBU1MgdHJhbnNjZWl2ZXIgPSBwYy5hZGRUcmFuc2NlaXZlcigiYXVk
aW8iLCB7ImRpcmVjdGlvbiI6ICJzZW5kcmVjdiJ9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4K
K1BBU1MgcGMuZ2V0VHJhbnNjZWl2ZXJzKCkubGVuZ3RoIGlzIDUKK1BBU1MgcGMuZ2V0VHJhbnNj
ZWl2ZXJzKCkuaW5jbHVkZXModHJhbnNjZWl2ZXIpIGlzIHRydWUKK1BBU1MgdHJhbnNjZWl2ZXIu
ZGlyZWN0aW9uIGlzICdzZW5kcmVjdicKK1BBU1MgdHJhbnNjZWl2ZXIubWlkIGlzIG51bGwKK1BB
U1MgdHJhbnNjZWl2ZXIuc3RvcHBlZCBpcyBmYWxzZQorKioqIENoZWNrIHNlbmRlcgorUEFTUyB0
cmFuc2NlaXZlci5zZW5kZXIgaXMgYW4gaW5zdGFuY2Ugb2YgUlRDUnRwU2VuZGVyCitQQVNTIHRy
YW5zY2VpdmVyLnNlbmRlci50cmFjayBpcyBudWxsCisqKiogQ2hlY2sgcmVjZWl2ZXIKK1BBU1Mg
dHJhbnNjZWl2ZXIucmVjZWl2ZXIgaXMgYW4gaW5zdGFuY2Ugb2YgUlRDUnRwUmVjZWl2ZXIKK1BB
U1MgdHJhbnNjZWl2ZXIucmVjZWl2ZXIudHJhY2sgaXMgYW4gaW5zdGFuY2Ugb2YgTWVkaWFTdHJl
YW1UcmFjaworUEFTUyB0cmFuc2NlaXZlci5yZWNlaXZlci50cmFjay5raW5kIGlzICdhdWRpbycK
KworUEFTUyB0cmFuc2NlaXZlciA9IHBjLmFkZFRyYW5zY2VpdmVyKCJhdWRpbyIsIHsiZGlyZWN0
aW9uIjogInJlY3Zvbmx5In0pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBwYy5nZXRU
cmFuc2NlaXZlcnMoKS5sZW5ndGggaXMgNgorUEFTUyBwYy5nZXRUcmFuc2NlaXZlcnMoKS5pbmNs
dWRlcyh0cmFuc2NlaXZlcikgaXMgdHJ1ZQorUEFTUyB0cmFuc2NlaXZlci5kaXJlY3Rpb24gaXMg
J3JlY3Zvbmx5JworUEFTUyB0cmFuc2NlaXZlci5taWQgaXMgbnVsbAorUEFTUyB0cmFuc2NlaXZl
ci5zdG9wcGVkIGlzIGZhbHNlCisqKiogQ2hlY2sgc2VuZGVyCitQQVNTIHRyYW5zY2VpdmVyLnNl
bmRlciBpcyBhbiBpbnN0YW5jZSBvZiBSVENSdHBTZW5kZXIKK1BBU1MgdHJhbnNjZWl2ZXIuc2Vu
ZGVyLnRyYWNrIGlzIG51bGwKKyoqKiBDaGVjayByZWNlaXZlcgorUEFTUyB0cmFuc2NlaXZlci5y
ZWNlaXZlciBpcyBhbiBpbnN0YW5jZSBvZiBSVENSdHBSZWNlaXZlcgorUEFTUyB0cmFuc2NlaXZl
ci5yZWNlaXZlci50cmFjayBpcyBhbiBpbnN0YW5jZSBvZiBNZWRpYVN0cmVhbVRyYWNrCitQQVNT
IHRyYW5zY2VpdmVyLnJlY2VpdmVyLnRyYWNrLmtpbmQgaXMgJ2F1ZGlvJworCitQQVNTIHRyYW5z
Y2VpdmVyID0gcGMuYWRkVHJhbnNjZWl2ZXIoImF1ZGlvIiwgeyJkaXJlY3Rpb24iOiAic2VuZG9u
bHkifSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIHBjLmdldFRyYW5zY2VpdmVycygp
Lmxlbmd0aCBpcyA3CitQQVNTIHBjLmdldFRyYW5zY2VpdmVycygpLmluY2x1ZGVzKHRyYW5zY2Vp
dmVyKSBpcyB0cnVlCitQQVNTIHRyYW5zY2VpdmVyLmRpcmVjdGlvbiBpcyAnc2VuZG9ubHknCitQ
QVNTIHRyYW5zY2VpdmVyLm1pZCBpcyBudWxsCitQQVNTIHRyYW5zY2VpdmVyLnN0b3BwZWQgaXMg
ZmFsc2UKKyoqKiBDaGVjayBzZW5kZXIKK1BBU1MgdHJhbnNjZWl2ZXIuc2VuZGVyIGlzIGFuIGlu
c3RhbmNlIG9mIFJUQ1J0cFNlbmRlcgorUEFTUyB0cmFuc2NlaXZlci5zZW5kZXIudHJhY2sgaXMg
bnVsbAorKioqIENoZWNrIHJlY2VpdmVyCitQQVNTIHRyYW5zY2VpdmVyLnJlY2VpdmVyIGlzIGFu
IGluc3RhbmNlIG9mIFJUQ1J0cFJlY2VpdmVyCitQQVNTIHRyYW5zY2VpdmVyLnJlY2VpdmVyLnRy
YWNrIGlzIGFuIGluc3RhbmNlIG9mIE1lZGlhU3RyZWFtVHJhY2sKK1BBU1MgdHJhbnNjZWl2ZXIu
cmVjZWl2ZXIudHJhY2sua2luZCBpcyAnYXVkaW8nCisKK1BBU1MgdHJhbnNjZWl2ZXIgPSBwYy5h
ZGRUcmFuc2NlaXZlcigiYXVkaW8iLCB7ImRpcmVjdGlvbiI6ICJpbmFjdGl2ZSJ9KSBkaWQgbm90
IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgcGMuZ2V0VHJhbnNjZWl2ZXJzKCkubGVuZ3RoIGlzIDgK
K1BBU1MgcGMuZ2V0VHJhbnNjZWl2ZXJzKCkuaW5jbHVkZXModHJhbnNjZWl2ZXIpIGlzIHRydWUK
K1BBU1MgdHJhbnNjZWl2ZXIuZGlyZWN0aW9uIGlzICdpbmFjdGl2ZScKK1BBU1MgdHJhbnNjZWl2
ZXIubWlkIGlzIG51bGwKK1BBU1MgdHJhbnNjZWl2ZXIuc3RvcHBlZCBpcyBmYWxzZQorKioqIENo
ZWNrIHNlbmRlcgorUEFTUyB0cmFuc2NlaXZlci5zZW5kZXIgaXMgYW4gaW5zdGFuY2Ugb2YgUlRD
UnRwU2VuZGVyCitQQVNTIHRyYW5zY2VpdmVyLnNlbmRlci50cmFjayBpcyBudWxsCisqKiogQ2hl
Y2sgcmVjZWl2ZXIKK1BBU1MgdHJhbnNjZWl2ZXIucmVjZWl2ZXIgaXMgYW4gaW5zdGFuY2Ugb2Yg
UlRDUnRwUmVjZWl2ZXIKK1BBU1MgdHJhbnNjZWl2ZXIucmVjZWl2ZXIudHJhY2sgaXMgYW4gaW5z
dGFuY2Ugb2YgTWVkaWFTdHJlYW1UcmFjaworUEFTUyB0cmFuc2NlaXZlci5yZWNlaXZlci50cmFj
ay5raW5kIGlzICdhdWRpbycKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24tYWRkVHJhbnNjZWl2ZXIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tYWRkVHJhbnNjZWl2ZXIuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmQ5ZDIxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1hZGRUcmFuc2Nl
aXZlci5odG1sCkBAIC0wLDAgKzEsMTIzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lF
VEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPC9oZWFk
PgorICAgIDxib2R5PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgdmFyIHN0cmVhbTsK
KyAgICAgICAgICAgIHZhciBhdWRpb1RyYWNrOworICAgICAgICAgICAgdmFyIHZpZGVvVHJhY2s7
CisgICAgICAgICAgICB2YXIgdHJhbnNjZWl2ZXI7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWQ7
CisKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0IGJhc2ljIGJlaGF2aW9yIG9mIFJUQ1Bl
ZXJDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyIik7CisKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFVzZXJNZWRpYVBlcm1p
c3Npb24odHJ1ZSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBkZWJ1Zygi
VGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdpdGhvdXQgdGhlIHRlc3RSdW5uZXIiKTsKKyAgICAg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIHBjID0gbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKHtpY2VTZXJ2ZXJzOlt7dXJsczon
c3R1bjpmb28uY29tJ31dfSk7CisKKyAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMu
Z2V0VXNlck1lZGlhKHsgImF1ZGlvIjogdHJ1ZSwgInZpZGVvIjogdHJ1ZSB9KQorICAgICAgICAg
ICAgLnRoZW4oZnVuY3Rpb24gKHMpIHsKKyAgICAgICAgICAgICAgICBzdHJlYW0gPSBzOworICAg
ICAgICAgICAgICAgIGF1ZGlvVHJhY2sgPSBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXTsKKyAg
ICAgICAgICAgICAgICB2aWRlb1RyYWNrID0gc3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF07CisK
KyAgICAgICAgICAgICAgICBzaG91bGRCZSgicGMuZ2V0VHJhbnNjZWl2ZXJzKCkubGVuZ3RoIiwg
IjAiKTsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiIik7CisKKyAgICAgICAgICAgICAgICBkZWJ1
ZygiKioqIFRlc3QgYXJndW1lbnRzIik7CisgICAgICAgICAgICAgICAgZGVidWcoIioqKiAndHJh
Y2tPcktpbmQnIGFyZ3VtZW50IGlzIG1hbmRhdG9yeSIpOworICAgICAgICAgICAgICAgIHNob3Vs
ZFRocm93KCJwYy5hZGRUcmFuc2NlaXZlcigpIik7CisgICAgICAgICAgICAgICAgc2hvdWxkVGhy
b3coInBjLmFkZFRyYW5zY2VpdmVyKHt9KSIpOworICAgICAgICAgICAgICAgIGRlYnVnKCIqKiog
QmFkIHR5cGUgYXMgZmlyc3QgYXJndW1lbnQiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRUaHJv
dygicGMuYWRkVHJhbnNjZWl2ZXIobnVsbCkiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRUaHJv
dygicGMuYWRkVHJhbnNjZWl2ZXIobnVsbCwge30pIik7CisgICAgICAgICAgICAgICAgc2hvdWxk
VGhyb3coInBjLmFkZFRyYW5zY2VpdmVyKHN0cmVhbSkiKTsKKyAgICAgICAgICAgICAgICBkZWJ1
ZygiKioqIEJhZCB0cmFjayBraW5kIik7CisgICAgICAgICAgICAgICAgc2hvdWxkVGhyb3coInBj
LmFkZFRyYW5zY2VpdmVyKCdmb28nKSIpOworICAgICAgICAgICAgICAgIGRlYnVnKCIqKiogQmFk
IGRpcmVjdGlvbiB2YWx1ZSIpOworICAgICAgICAgICAgICAgIHNob3VsZFRocm93KCdwYy5hZGRU
cmFuc2NlaXZlcigiYXVkaW8iLCB7ImRpcmVjdGlvbiI6ICJmb28ifSknKTsKKyAgICAgICAgICAg
ICAgICBkZWJ1ZygiIik7CisKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiBjaGVja1RyYW5zY2V2
aWVyKGV4cGVjdGVkQXJnKSB7CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gZXhwZWN0
ZWRBcmc7CisKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoInBjLmdldFRyYW5zY2VpdmVy
cygpLmxlbmd0aCIsIGV4cGVjdGVkLnRyYW5zY2VpdmVyQ291bnQpOworICAgICAgICAgICAgICAg
ICAgICBzaG91bGRCZVRydWUoInBjLmdldFRyYW5zY2VpdmVycygpLmluY2x1ZGVzKHRyYW5zY2Vp
dmVyKSIpOworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgidHJhbnNjZWl2ZXIuZGlyZWN0
aW9uIiwgZXhwZWN0ZWQuZGlyZWN0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVO
dWxsKCJ0cmFuc2NlaXZlci5taWQiKTsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVGYWxz
ZSgidHJhbnNjZWl2ZXIuc3RvcHBlZCIpOworCisgICAgICAgICAgICAgICAgICAgIGRlYnVnKCIq
KiogQ2hlY2sgc2VuZGVyIik7CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlVHlwZSgidHJh
bnNjZWl2ZXIuc2VuZGVyIiwgIlJUQ1J0cFNlbmRlciIpOworICAgICAgICAgICAgICAgICAgICBz
aG91bGRCZSgidHJhbnNjZWl2ZXIuc2VuZGVyLnRyYWNrIiwgZXhwZWN0ZWQuc2VuZGVyVHJhY2sp
OworCisgICAgICAgICAgICAgICAgICAgIGRlYnVnKCIqKiogQ2hlY2sgcmVjZWl2ZXIiKTsKKyAg
ICAgICAgICAgICAgICAgICAgc2hvdWxkQmVUeXBlKCJ0cmFuc2NlaXZlci5yZWNlaXZlciIsICJS
VENSdHBSZWNlaXZlciIpOworICAgICAgICAgICAgICAgICAgICBzaG91bGRCZVR5cGUoInRyYW5z
Y2VpdmVyLnJlY2VpdmVyLnRyYWNrIiwgIk1lZGlhU3RyZWFtVHJhY2siKTsKKyAgICAgICAgICAg
ICAgICAgICAgc2hvdWxkQmUoInRyYW5zY2VpdmVyLnJlY2VpdmVyLnRyYWNrLmtpbmQiLCBleHBl
Y3RlZC5yZWNlaXZlclRyYWNrVHlwZSk7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnKCIiKTsK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygndHJh
bnNjZWl2ZXIgPSBwYy5hZGRUcmFuc2NlaXZlcigiYXVkaW8iKScpOworICAgICAgICAgICAgICAg
IGNoZWNrVHJhbnNjZXZpZXIoeworICAgICAgICAgICAgICAgICAgICAidHJhbnNjZWl2ZXJDb3Vu
dCI6ICIxIiwKKyAgICAgICAgICAgICAgICAgICAgImRpcmVjdGlvbiI6ICInc2VuZHJlY3YnIiwK
KyAgICAgICAgICAgICAgICAgICAgInNlbmRlclRyYWNrIjogIm51bGwiLAorICAgICAgICAgICAg
ICAgICAgICAicmVjZWl2ZXJUcmFja1R5cGUiOiAiJ2F1ZGlvJyIKKyAgICAgICAgICAgICAgICB9
KTsKKworICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCd0cmFuc2NlaXZlciA9IHBjLmFk
ZFRyYW5zY2VpdmVyKCJ2aWRlbyIpJyk7CisgICAgICAgICAgICAgICAgY2hlY2tUcmFuc2Nldmll
cih7CisgICAgICAgICAgICAgICAgICAgICJ0cmFuc2NlaXZlckNvdW50IjogIjIiLAorICAgICAg
ICAgICAgICAgICAgICAiZGlyZWN0aW9uIjogIidzZW5kcmVjdiciLAorICAgICAgICAgICAgICAg
ICAgICAic2VuZGVyVHJhY2siOiAibnVsbCIsCisgICAgICAgICAgICAgICAgICAgICJyZWNlaXZl
clRyYWNrVHlwZSI6ICIndmlkZW8nIgorICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAg
ICAgICAgc2hvdWxkTm90VGhyb3coJ3RyYW5zY2VpdmVyID0gcGMuYWRkVHJhbnNjZWl2ZXIoYXVk
aW9UcmFjayknKTsKKyAgICAgICAgICAgICAgICBjaGVja1RyYW5zY2V2aWVyKHsKKyAgICAgICAg
ICAgICAgICAgICAgInRyYW5zY2VpdmVyQ291bnQiOiAiMyIsCisgICAgICAgICAgICAgICAgICAg
ICJkaXJlY3Rpb24iOiAiJ3NlbmRyZWN2JyIsCisgICAgICAgICAgICAgICAgICAgICJzZW5kZXJU
cmFjayI6ICJhdWRpb1RyYWNrIiwKKyAgICAgICAgICAgICAgICAgICAgInJlY2VpdmVyVHJhY2tU
eXBlIjogIidhdWRpbyciCisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBz
aG91bGROb3RUaHJvdygndHJhbnNjZWl2ZXIgPSBwYy5hZGRUcmFuc2NlaXZlcih2aWRlb1RyYWNr
KScpOworICAgICAgICAgICAgICAgIGNoZWNrVHJhbnNjZXZpZXIoeworICAgICAgICAgICAgICAg
ICAgICAidHJhbnNjZWl2ZXJDb3VudCI6ICI0IiwKKyAgICAgICAgICAgICAgICAgICAgImRpcmVj
dGlvbiI6ICInc2VuZHJlY3YnIiwKKyAgICAgICAgICAgICAgICAgICAgInNlbmRlclRyYWNrIjog
InZpZGVvVHJhY2siLAorICAgICAgICAgICAgICAgICAgICAicmVjZWl2ZXJUcmFja1R5cGUiOiAi
J3ZpZGVvJyIKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIFsic2VuZHJl
Y3YiLCAicmVjdm9ubHkiLCAic2VuZG9ubHkiLCAiaW5hY3RpdmUiXS5mb3JFYWNoKGZ1bmN0aW9u
IChkaXJlY3Rpb24sIGkpIHsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coYHRy
YW5zY2VpdmVyID0gcGMuYWRkVHJhbnNjZWl2ZXIoImF1ZGlvIiwgeyJkaXJlY3Rpb24iOiAiJHtk
aXJlY3Rpb259In0pYCk7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrVHJhbnNjZXZpZXIoewor
ICAgICAgICAgICAgICAgICAgICAgICAgInRyYW5zY2VpdmVyQ291bnQiOiBTdHJpbmcoNSArIGkp
LAorICAgICAgICAgICAgICAgICAgICAgICAgImRpcmVjdGlvbiI6IGAnJHtkaXJlY3Rpb259J2As
CisgICAgICAgICAgICAgICAgICAgICAgICAic2VuZGVyVHJhY2siOiAibnVsbCIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAicmVjZWl2ZXJUcmFja1R5cGUiOiAiJ2F1ZGlvJyIKKyAgICAgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIH0pCisgICAgICAgICAgICAuY2F0Y2goZnVuY3Rp
b24gKGVycm9yKSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiRXJyb3IgY2F1Z2h0IGlu
IHByb21pc2UgY2hhaW46ICIgKyBlcnJvcik7CisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOworICAgICAgICAgICAgd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisK
KyAgICAgICAgPC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDk4MTQzODIuLjIwMGEyMWQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xODcsNiAr
MTg3LDcgQEAgZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1hZGQtcmVtb3ZlVHJh
Y2suaHRtbAogZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1jbG9zZWQtc3RhdGUu
aHRtbAogZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1vdmVybG9hZGVkLW9wZXJh
dGlvbnMtcGFyYW1zLmh0bWwKIGZhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tb3Zl
cmxvYWRlZC1vcGVyYXRpb25zLmh0bWwKK2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rp
b24tYWRkVHJhbnNjZWl2ZXIuaHRtbAogZmFzdC9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXItcmVw
bGFjZVRyYWNrLmh0bWwKIGZhc3QvbWVkaWFzdHJlYW0vUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmh0
bWwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAwN2NiMzJiLi5hZDhiOTZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtMjM1LDYgKzIzNSw3IEBAIHNldChXZWJDb3JlX05PTl9TVkdfSURMX0ZJ
TEVTCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGwKICAgICBN
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmlkbAogICAgIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwU2VuZGVyLmlkbAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJh
bnNjZWl2ZXIuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTZXNzaW9uRGVzY3JpcHRp
b24uaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c1JlcG9ydC5pZGwKICAgICBN
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVzcG9uc2UuaWRsCkBAIC05MzAsNiArOTMxLDcg
QEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNv
bm5lY3Rpb24uY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5jcHAK
ICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAKKyAgICBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVyLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3Rh
dHNSZXBvcnQuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c1Jlc3BvbnNlLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDc1MGY5MTguLjc1MGNjYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MDEgQEAKKzIwMTYtMDUtMzEgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nz
b24uY29tPgorCisgICAgICAgIFdlYlJUQzogQWRkIFJUQ1J0cFRyYW5zY2VpdmVyIGludGVyZmFj
ZSBhbmQgUlRDUGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MTg5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVGhlIFJUQ1J0cFRyYW5zY2VpdmVyIGludGVy
ZmFjZSByZXByZXNlbnRzIGEgY29tYmluYXRpb24gb2YgYW4gUlRDUnRwU2VuZGVyIGFuZCBhbgor
ICAgICAgICBSVENSdHBSZWNlaXZlciB0aGF0IHNoYXJlIGEgY29tbW9uIG1pZCBbMV0uCisKKyAg
ICAgICAgUlRDUGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoKSBbMl0gY3JlYXRlcyBhbiBS
VENSdHBUcmFuc2NlaXZlciBvYmplY3QsIGVpdGhlciBkaXJlY3RseQorICAgICAgICBmcm9tIGEg
TWVkaWFTdHJlYW1UcmFjayBbM10sIG9yIHdpdGggYSBzcGVjaWZpYyBtZWRpYSB0eXBlIChraW5k
KS4KKworICAgICAgICBUaGlzIGNoYW5nZSBpbnRyb2R1Y2VzIHRoZSBSVENSdHBUcmFuc2NlaXZl
ciBvYmplY3QsIGZvbGxvdy11cCBwYXRjaGVzIHdpbGwgaW50ZWdyYXRlIGl0CisgICAgICAgIGlu
dG8gdGhlIG9mZmVyL2Fuc3dlciBtYWNoaW5lcnkuCisKKyAgICAgICAgWzFdIGh0dHBzOi8vdzNj
LmdpdGh1Yi5pby93ZWJydGMtcGMvYXJjaGl2ZXMvMjAxNjA1MTMvd2VicnRjLmh0bWwjcnRjcnRw
dHJhbnNjZWl2ZXItaW50ZXJmYWNlCisgICAgICAgIFsyXSBodHRwczovL3czYy5naXRodWIuaW8v
d2VicnRjLXBjL2FyY2hpdmVzLzIwMTYwNTEzL3dlYnJ0Yy5odG1sI2RvbS1ydGNwZWVyY29ubmVj
dGlvbi1hZGR0cmFuc2NlaXZlcgorICAgICAgICBbM10gaHR0cDovL3czYy5naXRodWIuaW8vbWVk
aWFjYXB0dXJlLW1haW4vYXJjaGl2ZXMvMjAxNjA1MTMvZ2V0dXNlcm1lZGlhLmh0bWwjbWVkaWFz
dHJlYW10cmFjaworCisgICAgICAgIFRlc3Q6IGZhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb24tYWRkVHJhbnNjZWl2ZXIuaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpjcmVh
dGVPZmZlclRhc2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbmRwb2ludFBlZXJDb25uZWN0
aW9uOjpjcmVhdGVSZWNlaXZlcik6CisgICAgICAgIEFuIFJUQ1RyYW5zY2VpdmVyIGFsd2F5cyBo
YXMgYSByZWNlaXZlciAoUlRDUnRwUmVjZWl2ZXIpIHdpdGggYSB0cmFjayAoTWVkaWFTdHJlYW1U
cmFjaykgdGhhdAorICAgICAgICBjYW4gYmUgcmVuZGVyZWQuIEJlZm9yZSB0aGF0IHJlbW90ZSB0
cmFjayBpcyByZWNlaXZpbmcgZGF0YSBmcm9tIHRoZSByZW1vdGUgcGVlciwgaXQncyBtdXRlZC4K
KyAgICAgICAgY3JlYXRlUmVjZWl2ZXIoKSB1c2VzIE1lZGlhRW5kcG9uaXQ6OmNyZWF0ZU11dGVk
UmVtb3RlU291cmNlKCkgdG8gY3JlYXRlIGEgc291cmNlIHRvIHJlcHJlc2VudAorICAgICAgICBm
dXR1cmUgaW5jb21pbmcgbWVkaWEuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YUVuZHBvaW50UGVlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L1BlZXJDb25uZWN0aW9uQmFja2VuZC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rp
b246OmFkZFRyYW5zY2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9u
Ojpjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25u
ZWN0aW9uOjphZGRSZWNlaXZlcik6IERlbGV0ZWQuCisgICAgICAgIFdlIG5vdyBjcmVhdGUgdGhl
IHJlY2VpdmVyIGV4cGxpY2l0bHkgd2l0aCBjcmVhdGVSZWNlaXZlci4KKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2VuZGVy
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2VuZGVyOjpSVENSdHBTZW5kZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2VuZGVyOjpzZXRUcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpSVENSdHBTZW5kZXI6OnJlcGxhY2VUcmFjayk6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNlbmRl
cjo6dHJhY2tJZCk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTZW5kZXI6OnRyYWNrS2luZCk6
CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTZW5kZXI6OnNldE1lZGlhU3RyZWFtSWRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNlbmRlcjo6aXNTdG9wcGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ1J0cFNlbmRlcjo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNlbmRlclJlY2VpdmVyQmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6
UlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlOjp0cmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSVENS
dHBTZW5kZXJSZWNlaXZlckJhc2U6OlJUQ1J0cFNlbmRlclJlY2VpdmVyQmFzZSk6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2NlaXZlci5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UlRDUnRwVHJhbnNjZWl2ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpSVENSdHBUcmFuc2NlaXZlcjo6Z2V0TmV4dE1pZCk6CisgICAgICAgIChXZWJDb3JlOjpS
VENSdHBUcmFuc2NlaXZlcjo6UlRDUnRwVHJhbnNjZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDUnRwVHJhbnNjZWl2ZXI6OmRpcmVjdGlvblN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpS
VENSdHBUcmFuc2NlaXZlcjo6aGFzU2VuZGluZ0RpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpSVENSdHBUcmFuc2NlaXZlcjo6ZW5hYmxlU2VuZGluZ0RpcmVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpSVENSdHBUcmFuc2NlaXZlcjo6ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24pOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNjZWl2ZXIuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSVENSdHBUcmFuc2NlaXZlcjo6flJUQ1J0cFRyYW5zY2VpdmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFRyYW5zY2VpdmVyOjpkaXJlY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDUnRwVHJhbnNjZWl2ZXI6OnNldERpcmVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpSVENSdHBUcmFuc2NlaXZlcjo6cHJvdmlzaW9uYWxNaWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDUnRwVHJhbnNjZWl2ZXI6OnNldFByb3Zpc2lvbmFsTWlkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJUQ1J0cFRyYW5zY2VpdmVyOjptaWQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRw
VHJhbnNjZWl2ZXI6OnNldE1pZCk6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBUcmFuc2NlaXZl
cjo6c2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFRyYW5zY2VpdmVyOjpyZWNlaXZl
cik6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBUcmFuc2NlaXZlcjo6c3RvcHBlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSVENSdHBUcmFuc2NlaXZlcjo6c3RvcCk6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2NlaXZlci5pZGw6IEFkZGVkLgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYUVuZHBvaW50Lmg6CisgICAgICAgIEFkZGVkIGNyZWF0ZU11dGVkUmVtb3Rl
U291cmNlKCkgdGhhdCBjcmVhdGVzIGEgbXV0ZWQgcmVtb3RlIHNvdXJjZSB0aGF0IHdpbGwgYmVj
b21lIHVubXV0ZWQKKyAgICAgICAgd2hlbiBtZWRpYSBhcnJpdmVzIGZyb20gdGhlIHJlbW90ZSBw
ZWVyLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6UmVhbHRpbWVNZWRp
YVNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRp
bWVNZWRpYVNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2Nr
UmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGlt
ZVZpZGVvU291cmNlOjpjcmVhdGUpOgorICAgICAgICBVc2UgUmVmIGluc3RlYWQgb2YgUmVmUHRy
LgorICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja01lZGlhRW5kcG9pbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja01lZGlhRW5kcG9pbnQ6OmNyZWF0ZU11dGVkUmVtb3RlU291cmNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVuZHBvaW50Lmg6CisgICAgICAgICog
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGVNdXRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZU11dGVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oOgorCiAyMDE2
LTA1LTI4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVGVtcGxh
dGl6ZSBOb25jb3B5YWJsZUZ1bmN0aW9uIGNsYXNzIHNpbWlsYXJseSB0byBzdGQ6OmZ1bmN0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5k
cG9pbnRQZWVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5jcHAKaW5kZXggZjFlYjY0ZS4uZGM4NTFi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVu
ZHBvaW50UGVlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uLmNwcApAQCAtMzcsNyArMzcsNyBA
QAogI2luY2x1ZGUgIk1lZGlhRW5kcG9pbnRTZXNzaW9uQ29uZmlndXJhdGlvbi5oIgogI2luY2x1
ZGUgIk1lZGlhU3RyZWFtVHJhY2suaCIKICNpbmNsdWRlICJSVENPZmZlckFuc3dlck9wdGlvbnMu
aCIKLSNpbmNsdWRlICJSVENSdHBTZW5kZXIuaCIKKyNpbmNsdWRlICJSVENSdHBUcmFuc2NlaXZl
ci5oIgogI2luY2x1ZGUgIlNEUFByb2Nlc3Nvci5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CkBAIC0xMzcsNyArMTM3LDcgQEAgdm9p
ZCBNZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb246OmNyZWF0ZU9mZmVyVGFzayhSVENPZmZlck9w
dGlvbnMmLCBTZXNzaW9uRGVzY3IKICAgICAvLyBBZGQgbWVkaWEgZGVzY3JpcHRpb25zIGZvciBz
ZW5kZXJzLgogICAgIGZvciAoYXV0byYgc2VuZGVyIDogc2VuZGVycykgewogICAgICAgICBSZWZQ
dHI8UGVlck1lZGlhRGVzY3JpcHRpb24+IG1lZGlhRGVzY3JpcHRpb24gPSBQZWVyTWVkaWFEZXNj
cmlwdGlvbjo6Y3JlYXRlKCk7Ci0gICAgICAgIE1lZGlhU3RyZWFtVHJhY2smIHRyYWNrID0gc2Vu
ZGVyLT50cmFjaygpOworICAgICAgICBNZWRpYVN0cmVhbVRyYWNrJiB0cmFjayA9ICpzZW5kZXIt
PnRyYWNrKCk7CiAKICAgICAgICAgbWVkaWFEZXNjcmlwdGlvbi0+c2V0TWVkaWFTdHJlYW1JZChz
ZW5kZXItPm1lZGlhU3RyZWFtSWRzKClbMF0pOwogICAgICAgICBtZWRpYURlc2NyaXB0aW9uLT5z
ZXRNZWRpYVN0cmVhbVRyYWNrSWQodHJhY2suaWQoKSk7CkBAIC0yNTUsNiArMjU1LDE4IEBAIHZv
aWQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpnZXRTdGF0cyhNZWRpYVN0cmVhbVRyYWNr
KiwgUGVlckNvbm5lY3Rpb246OlN0CiAgICAgcHJvbWlzZS5yZWplY3QoTk9UX1NVUFBPUlRFRF9F
UlIpOwogfQogCitSZWZQdHI8UlRDUnRwUmVjZWl2ZXI+IE1lZGlhRW5kcG9pbnRQZWVyQ29ubmVj
dGlvbjo6Y3JlYXRlUmVjZWl2ZXIoY29uc3QgU3RyaW5nJiB0cmFuc2NlaXZlck1pZCwgY29uc3Qg
U3RyaW5nJiB0cmFja0tpbmQsIGNvbnN0IFN0cmluZyYgdHJhY2tJZCkKK3sKKyAgICBSZWFsdGlt
ZU1lZGlhU291cmNlOjpUeXBlIHNvdXJjZVR5cGUgPSB0cmFja0tpbmQgPT0gImF1ZGlvIiA/IFJl
YWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlw
ZTo6VmlkZW87CisKKyAgICAvLyBDcmVhdGUgYSBtdXRlZCByZW1vdGUgc291cmNlIHRoYXQgd2ls
bCBiZSB1bm11dGVkIG9uY2UgbWVkaWEgc3RhcnRzIGFycml2aW5nLgorICAgIGF1dG8gcmVtb3Rl
U291cmNlID0gbV9tZWRpYUVuZHBvaW50LT5jcmVhdGVNdXRlZFJlbW90ZVNvdXJjZSh0cmFuc2Nl
aXZlck1pZCwgc291cmNlVHlwZSk7CisgICAgYXV0byByZW1vdGVUcmFja1ByaXZhdGUgPSBNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y3JlYXRlKFdURk1vdmUocmVtb3RlU291cmNlKSwgdHJhY2tJ
ZCk7CisgICAgYXV0byByZW1vdGVUcmFjayA9IE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZSgqbV9j
bGllbnQtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnJlbW90ZVRyYWNrUHJpdmF0ZSk7CisK
KyAgICByZXR1cm4gUlRDUnRwUmVjZWl2ZXI6OmNyZWF0ZShXVEZNb3ZlKHJlbW90ZVRyYWNrKSk7
Cit9CisKIHZvaWQgTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9uOjpyZXBsYWNlVHJhY2soUlRD
UnRwU2VuZGVyJiBzZW5kZXIsIE1lZGlhU3RyZWFtVHJhY2smIHdpdGhUcmFjaywgUGVlckNvbm5l
Y3Rpb246OlZvaWRQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc2VuZGVy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFF
bmRwb2ludFBlZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhRW5kcG9pbnRQZWVyQ29ubmVjdGlvbi5oCmluZGV4IDk2N2QwYzkuLmYyNTgyZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRw
b2ludFBlZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYUVuZHBvaW50UGVlckNvbm5lY3Rpb24uaApAQCAtNjksNiArNjksNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGdldFN0YXRzKE1lZGlhU3RyZWFtVHJhY2sqLCBQZWVyQ29ubmVjdGlv
bjo6U3RhdHNQcm9taXNlJiYpIG92ZXJyaWRlOwogCisgICAgUmVmUHRyPFJUQ1J0cFJlY2VpdmVy
PiBjcmVhdGVSZWNlaXZlcihjb25zdCBTdHJpbmcmIHRyYW5zY2VpdmVyTWlkLCBjb25zdCBTdHJp
bmcmIHRyYWNrS2luZCwgY29uc3QgU3RyaW5nJiB0cmFja0lkKSBvdmVycmlkZTsKICAgICB2b2lk
IHJlcGxhY2VUcmFjayhSVENSdHBTZW5kZXImLCBNZWRpYVN0cmVhbVRyYWNrJiwgUGVlckNvbm5l
Y3Rpb246OlZvaWRQcm9taXNlJiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzdG9wKCkgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJD
b25uZWN0aW9uQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Q
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAppbmRleCBiZmZmNDRlLi5mNGIzN2Y4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rp
b25CYWNrZW5kLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgUlRDSWNlQ2FuZGlkYXRlOwogY2xh
c3MgUlRDT2ZmZXJPcHRpb25zOwogY2xhc3MgUlRDUnRwUmVjZWl2ZXI7CiBjbGFzcyBSVENSdHBT
ZW5kZXI7CitjbGFzcyBSVENSdHBUcmFuc2NlaXZlcjsKIGNsYXNzIFJUQ1Nlc3Npb25EZXNjcmlw
dGlvbjsKIGNsYXNzIFJUQ1N0YXRzUmVzcG9uc2U7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OwpAQCAtNjMsNyArNjQsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBWZWN0b3I8UmVmUHRy
PFJUQ1J0cFNlbmRlcj4+IGdldFNlbmRlcnMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGZpcmVFdmVudChFdmVudCYpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRSZWNlaXZlcihS
VENSdHBSZWNlaXZlciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2lnbmFsaW5nU3RhdGUo
UGVlckNvbm5lY3Rpb25TdGF0ZXM6OlNpZ25hbGluZ1N0YXRlKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUljZUdhdGhlcmluZ1N0YXRlKFBlZXJDb25uZWN0aW9uU3RhdGVzOjpJY2VHYXRo
ZXJpbmdTdGF0ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVJY2VDb25uZWN0aW9uU3Rh
dGUoUGVlckNvbm5lY3Rpb25TdGF0ZXM6OkljZUNvbm5lY3Rpb25TdGF0ZSkgPSAwOwpAQCAtMTAz
LDYgKzEwMyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRTdGF0cyhNZWRpYVN0
cmVhbVRyYWNrKiwgUGVlckNvbm5lY3Rpb246OlN0YXRzUHJvbWlzZSYmKSA9IDA7CiAKKyAgICB2
aXJ0dWFsIFJlZlB0cjxSVENSdHBSZWNlaXZlcj4gY3JlYXRlUmVjZWl2ZXIoY29uc3QgU3RyaW5n
JiB0cmFuc2NlaXZlck1pZCwgY29uc3QgU3RyaW5nJiB0cmFja0tpbmQsIGNvbnN0IFN0cmluZyYg
dHJhY2tJZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXBsYWNlVHJhY2soUlRDUnRwU2VuZGVy
JiwgTWVkaWFTdHJlYW1UcmFjayYsIFBlZXJDb25uZWN0aW9uOjpWb2lkUHJvbWlzZSYmKSA9IDA7
CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKaW5kZXggZTNj
ODE0Yi4uOGYyZWM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNs
dWRlICJSVENPZmZlckFuc3dlck9wdGlvbnMuaCIKICNpbmNsdWRlICJSVENTZXNzaW9uRGVzY3Jp
cHRpb24uaCIKICNpbmNsdWRlICJSVENUcmFja0V2ZW50LmgiCisjaW5jbHVkZSAiVVVJRC5oIgog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+
CiAKQEAgLTE0Nyw2ICsxNDgsNTggQEAgdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6cmVtb3ZlVHJh
Y2soUlRDUnRwU2VuZGVyJiBzZW5kZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIG1fYmFja2Vu
ZC0+bWFya0FzTmVlZGluZ05lZ290aWF0aW9uKCk7CiB9CiAKK1JlZlB0cjxSVENSdHBUcmFuc2Nl
aXZlcj4gUlRDUGVlckNvbm5lY3Rpb246OmFkZFRyYW5zY2VpdmVyKFJlZjxNZWRpYVN0cmVhbVRy
YWNrPiYmIHRyYWNrLCBjb25zdCBSdHBUcmFuc2NlaXZlckluaXQmIGluaXQsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQoreworICAgIGlmIChtX3NpZ25hbGluZ1N0YXRlID09IFNpZ25hbGluZ1N0YXRlOjpD
bG9zZWQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorCisgICAgU3RyaW5nIHRyYW5zY2VpdmVyTWlkID0gUlRDUnRwVHJh
bnNjZWl2ZXI6OmdldE5leHRNaWQoKTsKKyAgICBjb25zdCBTdHJpbmcmIHRyYWNrS2luZCA9IHRy
YWNrLT5raW5kKCk7CisgICAgY29uc3QgU3RyaW5nJiB0cmFja0lkID0gdHJhY2stPmlkKCk7CisK
KyAgICBhdXRvIHNlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKFdURk1vdmUodHJhY2spLCBW
ZWN0b3I8U3RyaW5nPigpLCAqdGhpcyk7CisgICAgYXV0byByZWNlaXZlciA9IG1fYmFja2VuZC0+
Y3JlYXRlUmVjZWl2ZXIodHJhbnNjZWl2ZXJNaWQsIHRyYWNrS2luZCwgdHJhY2tJZCk7CisgICAg
YXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoV1RGTW92ZShzZW5k
ZXIpLCBXVEZNb3ZlKHJlY2VpdmVyKSk7CisgICAgdHJhbnNjZWl2ZXItPnNldFByb3Zpc2lvbmFs
TWlkKHRyYW5zY2VpdmVyTWlkKTsKKworICAgIHJldHVybiBjb21wbGV0ZUFkZFRyYW5zY2VpdmVy
KFdURk1vdmUodHJhbnNjZWl2ZXIpLCBpbml0KTsKK30KKworUmVmUHRyPFJUQ1J0cFRyYW5zY2Vp
dmVyPiBSVENQZWVyQ29ubmVjdGlvbjo6YWRkVHJhbnNjZWl2ZXIoY29uc3QgU3RyaW5nJiBraW5k
LCBjb25zdCBSdHBUcmFuc2NlaXZlckluaXQmIGluaXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQorewor
ICAgIGlmIChtX3NpZ25hbGluZ1N0YXRlID09IFNpZ25hbGluZ1N0YXRlOjpDbG9zZWQpIHsKKyAg
ICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQorCisgICAgaWYgKGtpbmQgIT0gImF1ZGlvIiAmJiBraW5kICE9ICJ2aWRlbyIpIHsKKyAg
ICAgICAgZWMgPSBUeXBlRXJyb3I7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwor
ICAgIFN0cmluZyB0cmFuc2NlaXZlck1pZCA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpnZXROZXh0TWlk
KCk7CisgICAgU3RyaW5nIHRyYWNrSWQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CisK
KyAgICBhdXRvIHNlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKGtpbmQsIFZlY3RvcjxTdHJp
bmc+KCksICp0aGlzKTsKKyAgICBhdXRvIHJlY2VpdmVyID0gbV9iYWNrZW5kLT5jcmVhdGVSZWNl
aXZlcih0cmFuc2NlaXZlck1pZCwga2luZCwgdHJhY2tJZCk7CisgICAgYXV0byB0cmFuc2NlaXZl
ciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoV1RGTW92ZShzZW5kZXIpLCBXVEZNb3ZlKHJl
Y2VpdmVyKSk7CisgICAgdHJhbnNjZWl2ZXItPnNldFByb3Zpc2lvbmFsTWlkKHRyYW5zY2VpdmVy
TWlkKTsKKworICAgIHJldHVybiBjb21wbGV0ZUFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNj
ZWl2ZXIpLCBpbml0KTsKK30KKworUmVmUHRyPFJUQ1J0cFRyYW5zY2VpdmVyPiBSVENQZWVyQ29u
bmVjdGlvbjo6Y29tcGxldGVBZGRUcmFuc2NlaXZlcihSZWY8UlRDUnRwVHJhbnNjZWl2ZXI+JiYg
dHJhbnNjZWl2ZXIsIGNvbnN0IFJ0cFRyYW5zY2VpdmVySW5pdCYgaW5pdCkKK3sKKyAgICB0cmFu
c2NlaXZlci0+c2V0RGlyZWN0aW9uKHN0YXRpY19jYXN0PFJUQ1J0cFRyYW5zY2VpdmVyOjpEaXJl
Y3Rpb24+KGluaXQuZGlyZWN0aW9uKSk7CisKKyAgICBtX3RyYW5zY2VpdmVyU2V0LmFwcGVuZCh0
cmFuc2NlaXZlci5jb3B5UmVmKCkpOworICAgIG1fYmFja2VuZC0+bWFya0FzTmVlZGluZ05lZ290
aWF0aW9uKCk7CisKKyAgICByZXR1cm4gV1RGTW92ZSh0cmFuc2NlaXZlcik7Cit9CisKIHZvaWQg
UlRDUGVlckNvbm5lY3Rpb246OnF1ZXVlZENyZWF0ZU9mZmVyKGNvbnN0IERpY3Rpb25hcnkmIG9m
ZmVyT3B0aW9ucywgU2Vzc2lvbkRlc2NyaXB0aW9uUHJvbWlzZSYmIHByb21pc2UpCiB7CiAgICAg
aWYgKG1fc2lnbmFsaW5nU3RhdGUgPT0gU2lnbmFsaW5nU3RhdGU6OkNsb3NlZCkgewpAQCAtMzcx
LDExICs0MjQsNiBAQCBib29sIFJUQ1BlZXJDb25uZWN0aW9uOjpjYW5TdXNwZW5kRm9yRG9jdW1l
bnRTdXNwZW5zaW9uKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUlRDUGVl
ckNvbm5lY3Rpb246OmFkZFJlY2VpdmVyKFJUQ1J0cFJlY2VpdmVyJiByZWNlaXZlcikKLXsKLSAg
ICBtX3JlY2VpdmVyU2V0LmFwcGVuZCgmcmVjZWl2ZXIpOwotfQotCiB2b2lkIFJUQ1BlZXJDb25u
ZWN0aW9uOjpzZXRTaWduYWxpbmdTdGF0ZShTaWduYWxpbmdTdGF0ZSBuZXdTdGF0ZSkKIHsKICAg
ICBtX3NpZ25hbGluZ1N0YXRlID0gbmV3U3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKaW5kZXggMGM1NjVlZC4u
MDUzNmNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24uaApAQCAtNDEsOCArNDEsNyBAQAogLy8gRklYTUU6IFdvcmth
cm91bmQgZm9yIGJpbmRpbmdzIGJ1ZyBodHRwOi8vd2Via2l0Lm9yZy9iLzE1MDEyMQogI2luY2x1
ZGUgIkpTTWVkaWFTdHJlYW0uaCIKICNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCIK
LSNpbmNsdWRlICJSVENSdHBSZWNlaXZlci5oIgotI2luY2x1ZGUgIlJUQ1J0cFNlbmRlci5oIgor
I2luY2x1ZGUgIlJUQ1J0cFRyYW5zY2VpdmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxl
LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgpAQCAtNjYsMTAgKzY1LDIxIEBAIHB1YmxpYzoKIAogICAgIFZlY3RvcjxSZWZQdHI8UlRDUnRw
U2VuZGVyPj4gZ2V0U2VuZGVycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2VuZGVyU2V0
OyB9CiAgICAgVmVjdG9yPFJlZlB0cjxSVENSdHBSZWNlaXZlcj4+IGdldFJlY2VpdmVycygpIGNv
bnN0IHsgcmV0dXJuIG1fcmVjZWl2ZXJTZXQ7IH0KKyAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFJU
Q1J0cFRyYW5zY2VpdmVyPj4mIGdldFRyYW5zY2VpdmVycygpIGNvbnN0IHsgcmV0dXJuIG1fdHJh
bnNjZWl2ZXJTZXQ7IH0KIAogICAgIFJlZlB0cjxSVENSdHBTZW5kZXI+IGFkZFRyYWNrKFJlZjxN
ZWRpYVN0cmVhbVRyYWNrPiYmLCBWZWN0b3I8TWVkaWFTdHJlYW0qPiwgRXhjZXB0aW9uQ29kZSYp
OwogICAgIHZvaWQgcmVtb3ZlVHJhY2soUlRDUnRwU2VuZGVyJiwgRXhjZXB0aW9uQ29kZSYpOwog
CisgICAgLy8gVGhpcyBlbnVtIGlzIG1pcnJvcmVkIGluIFJUQ1J0cFRyYW5zY2VpdmVyLmgKKyAg
ICBlbnVtIGNsYXNzIFJ0cFRyYW5zY2VpdmVyRGlyZWN0aW9uIHsgU2VuZHJlY3YsIFNlbmRvbmx5
LCBSZWN2b25seSwgSW5hY3RpdmUgfTsKKworICAgIHN0cnVjdCBSdHBUcmFuc2NlaXZlckluaXQg
eworICAgICAgICBSdHBUcmFuc2NlaXZlckRpcmVjdGlvbiBkaXJlY3Rpb247CisgICAgfTsKKwor
ICAgIFJlZlB0cjxSVENSdHBUcmFuc2NlaXZlcj4gYWRkVHJhbnNjZWl2ZXIoUmVmPE1lZGlhU3Ry
ZWFtVHJhY2s+JiYsIGNvbnN0IFJ0cFRyYW5zY2VpdmVySW5pdCYsIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICBSZWZQdHI8UlRDUnRwVHJhbnNjZWl2ZXI+IGFkZFRyYW5zY2VpdmVyKGNvbnN0IFN0cmlu
ZyYga2luZCwgY29uc3QgUnRwVHJhbnNjZWl2ZXJJbml0JiwgRXhjZXB0aW9uQ29kZSYpOworCiAg
ICAgdm9pZCBxdWV1ZWRDcmVhdGVPZmZlcihjb25zdCBEaWN0aW9uYXJ5JiBvZmZlck9wdGlvbnMs
IFBlZXJDb25uZWN0aW9uOjpTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNlJiYpOwogICAgIHZvaWQg
cXVldWVkQ3JlYXRlQW5zd2VyKGNvbnN0IERpY3Rpb25hcnkmIGFuc3dlck9wdGlvbnMsIFBlZXJD
b25uZWN0aW9uOjpTZXNzaW9uRGVzY3JpcHRpb25Qcm9taXNlJiYpOwogCkBAIC0xMDksNiArMTE5
LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBSVENQZWVyQ29ubmVjdGlvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+JiYsIEV4Y2VwdGlvbkNvZGUm
KTsKIAorICAgIFJlZlB0cjxSVENSdHBUcmFuc2NlaXZlcj4gY29tcGxldGVBZGRUcmFuc2NlaXZl
cihSZWY8UlRDUnRwVHJhbnNjZWl2ZXI+JiYsIGNvbnN0IFJ0cFRyYW5zY2VpdmVySW5pdCYpOwor
CiAgICAgLy8gRXZlbnRUYXJnZXQgaW1wbGVtZW50YXRpb24uCiAgICAgdm9pZCByZWZFdmVudFRh
cmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBv
dmVycmlkZSB7IGRlcmVmKCk7IH0KQEAgLTExOSw3ICsxMzEsNiBAQCBwcml2YXRlOgogICAgIGJv
b2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgLy8gUGVlckNvbm5lY3Rpb25CYWNrZW5kQ2xpZW50Ci0gICAgdm9pZCBhZGRSZWNlaXZlcihS
VENSdHBSZWNlaXZlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0U2lnbmFsaW5nU3RhdGUoUGVl
ckNvbm5lY3Rpb25TdGF0ZXM6OlNpZ25hbGluZ1N0YXRlKSBvdmVycmlkZTsKICAgICB2b2lkIHVw
ZGF0ZUljZUdhdGhlcmluZ1N0YXRlKFBlZXJDb25uZWN0aW9uU3RhdGVzOjpJY2VHYXRoZXJpbmdT
dGF0ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVJY2VDb25uZWN0aW9uU3RhdGUoUGVlckNv
bm5lY3Rpb25TdGF0ZXM6OkljZUNvbm5lY3Rpb25TdGF0ZSkgb3ZlcnJpZGU7CkBAIC0xNDAsNiAr
MTUxLDcgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxSZWZQdHI8UlRDUnRwU2VuZGVyPj4gbV9z
ZW5kZXJTZXQ7CiAgICAgVmVjdG9yPFJlZlB0cjxSVENSdHBSZWNlaXZlcj4+IG1fcmVjZWl2ZXJT
ZXQ7CisgICAgVmVjdG9yPFJlZlB0cjxSVENSdHBUcmFuc2NlaXZlcj4+IG1fdHJhbnNjZWl2ZXJT
ZXQ7CiAKICAgICBWZWN0b3I8UmVmUHRyPFJUQ0RhdGFDaGFubmVsPj4gbV9kYXRhQ2hhbm5lbHM7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi5pZGwKaW5kZXggYjBhZGVhMy4uZjc3OTNlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5p
ZGwKQEAgLTYwLDEwICs2MCwxNCBAQAogCiAgICAgc2VxdWVuY2U8UlRDUnRwU2VuZGVyPiBnZXRT
ZW5kZXJzKCk7CiAgICAgc2VxdWVuY2U8UlRDUnRwUmVjZWl2ZXI+IGdldFJlY2VpdmVycygpOwor
ICAgIHNlcXVlbmNlPFJUQ1J0cFRyYW5zY2VpdmVyPiBnZXRUcmFuc2NlaXZlcnMoKTsKIAogICAg
IFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNlc0V4Y2VwdGlvbl0gUlRDUnRwU2VuZGVyIGFkZFRy
YWNrKE1lZGlhU3RyZWFtVHJhY2sgdHJhY2ssIE1lZGlhU3RyZWFtLi4uIHN0cmVhbXMpOwogICAg
IFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNlc0V4Y2VwdGlvbl0gdm9pZCByZW1vdmVUcmFjayhS
VENSdHBTZW5kZXIgc2VuZGVyKTsKIAorICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmcsIFJhaXNlc0V4
Y2VwdGlvbl0gUlRDUnRwVHJhbnNjZWl2ZXIgYWRkVHJhbnNjZWl2ZXIoTWVkaWFTdHJlYW1UcmFj
ayB0cmFjaywgb3B0aW9uYWwgUlRDUnRwVHJhbnNjZWl2ZXJJbml0IGluaXQpOworICAgIFtTdHJp
Y3RUeXBlQ2hlY2tpbmcsIFJhaXNlc0V4Y2VwdGlvbl0gUlRDUnRwVHJhbnNjZWl2ZXIgYWRkVHJh
bnNjZWl2ZXIoRE9NU3RyaW5nIGtpbmQsIG9wdGlvbmFsIFJUQ1J0cFRyYW5zY2VpdmVySW5pdCBp
bml0KTsKKwogICAgIFtKU0J1aWx0aW5dIFByb21pc2Ugc2V0TG9jYWxEZXNjcmlwdGlvbihSVENT
ZXNzaW9uRGVzY3JpcHRpb24gZGVzY3JpcHRpb24pOwogICAgIC8vIExlZ2FjeSBzaWduYXR1cmU6
IFByb21pc2Ugc2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24gZGVzY3Jp
cHRpb24KICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVm9pZENhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywKQEAgLTExMiwzICsxMTYsMTAgQEAKICAg
ICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uaWNlZ2F0aGVyaW5nc3RhdGVjaGFuZ2U7CiAgICAg
YXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmRhdGFjaGFubmVsOwogfTsKKworLy8gVGhpcyBlbnVt
IGlzIG1pcnJvcmVkIGluIFJUQ1J0cFRyYW5zY2VpdmVyLmlkbAorZW51bSBSVENSdHBUcmFuc2Nl
aXZlckRpcmVjdGlvbiB7ICJzZW5kcmVjdiIsICJzZW5kb25seSIsICJyZWN2b25seSIsICJpbmFj
dGl2ZSIgfTsKKworZGljdGlvbmFyeSBSVENSdHBUcmFuc2NlaXZlckluaXQgeworICAgIFJUQ1J0
cFRyYW5zY2VpdmVyRGlyZWN0aW9uIGRpcmVjdGlvbiA9ICJzZW5kcmVjdiI7Cit9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCmlu
ZGV4IDE0MzcyZDIuLjFhYWVkZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAKQEAgLTM3LDI4ICszNyw0OSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVJUQ1J0cFNlbmRlcjo6UlRDUnRwU2VuZGVyKFJlZjxNZWRpYVN0
cmVhbVRyYWNrPiYmIHRyYWNrLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBSVENS
dHBTZW5kZXJDbGllbnQmIGNsaWVudCkKLSAgICA6IFJUQ1J0cFNlbmRlclJlY2VpdmVyQmFzZShX
VEZNb3ZlKHRyYWNrKSkKK1JlZjxSVENSdHBTZW5kZXI+IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKFJl
ZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFt
SWRzLCBSVENSdHBTZW5kZXJDbGllbnQmIGNsaWVudCkKK3sKKyAgICBjb25zdCBTdHJpbmcmIHRy
YWNrS2luZCA9IHRyYWNrLT5raW5kKCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDUnRw
U2VuZGVyKFdURk1vdmUodHJhY2spLCB0cmFja0tpbmQsIFdURk1vdmUobWVkaWFTdHJlYW1JZHMp
LCBjbGllbnQpKTsKK30KKworUmVmPFJUQ1J0cFNlbmRlcj4gUlRDUnRwU2VuZGVyOjpjcmVhdGUo
Y29uc3QgU3RyaW5nJiB0cmFja0tpbmQsIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMs
IFJUQ1J0cFNlbmRlckNsaWVudCYgY2xpZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFJUQ1J0cFNlbmRlcihudWxscHRyLCB0cmFja0tpbmQsIFdURk1vdmUobWVkaWFTdHJlYW1JZHMp
LCBjbGllbnQpKTsKK30KKworUlRDUnRwU2VuZGVyOjpSVENSdHBTZW5kZXIoUmVmUHRyPE1lZGlh
U3RyZWFtVHJhY2s+JiYgdHJhY2ssIGNvbnN0IFN0cmluZyYgdHJhY2tLaW5kLCBWZWN0b3I8U3Ry
aW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBSVENSdHBTZW5kZXJDbGllbnQmIGNsaWVudCkKKyAgICA6
IFJUQ1J0cFNlbmRlclJlY2VpdmVyQmFzZSgpCisgICAgLCBtX3RyYWNrS2luZCh0cmFja0tpbmQp
CiAgICAgLCBtX21lZGlhU3RyZWFtSWRzKFdURk1vdmUobWVkaWFTdHJlYW1JZHMpKQogICAgICwg
bV9jbGllbnQoJmNsaWVudCkKIHsKLSAgICAvLyBUaGUgb3JpZ2luYWwgdHJhY2sgaWQgaXMgYWx3
YXlzIHVzZWQgaW4gbmVnb3RpYXRpb24gZXZlbiBpZiB0aGUgdHJhY2sgaXMgcmVwbGFjZWQuCi0g
ICAgbV90cmFja0lkID0gbV90cmFjay0+aWQoKTsKKyAgICBzZXRUcmFjayhXVEZNb3ZlKHRyYWNr
KSk7Cit9CisKK3ZvaWQgUlRDUnRwU2VuZGVyOjpzZXRUcmFjayhSZWZQdHI8TWVkaWFTdHJlYW1U
cmFjaz4mJiB0cmFjaykKK3sKKyAgICAvLyBTYXZlIHRoZSBpZCBmcm9tIHRoZSBmaXJzdCBub24t
bnVsbCB0cmFjayBzZXQuIFRoYXQgaWQgd2lsbCBiZSB1c2VkIHRvIG5lZ290aWF0ZSB0aGUgc2Vu
ZGVyCisgICAgLy8gZXZlbiBpZiB0aGUgdHJhY2sgaXMgcmVwbGFjZWQuCisgICAgaWYgKCFtX3Ry
YWNrICYmIHRyYWNrKQorICAgICAgICBtX3RyYWNrSWQgPSB0cmFjay0+aWQoKTsKKworICAgIG1f
dHJhY2sgPSBXVEZNb3ZlKHRyYWNrKTsKIH0KIAotdm9pZCBSVENSdHBTZW5kZXI6OnJlcGxhY2VU
cmFjayhNZWRpYVN0cmVhbVRyYWNrJiB3aXRoVHJhY2ssIFBlZXJDb25uZWN0aW9uOjpWb2lkUHJv
bWlzZSYmIHByb21pc2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQordm9pZCBSVENSdHBTZW5kZXI6OnJl
cGxhY2VUcmFjayhSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB3aXRoVHJhY2ssIFBlZXJDb25uZWN0
aW9uOjpWb2lkUHJvbWlzZSYmIHByb21pc2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlm
ICghbV9jbGllbnQpIHsKKyAgICBpZiAoaXNTdG9wcGVkKCkpIHsKICAgICAgICAgcHJvbWlzZS5y
ZWplY3QoSU5WQUxJRF9TVEFURV9FUlIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKG1fdHJhY2stPmtpbmQoKSAhPSB3aXRoVHJhY2sua2luZCgpKSB7CisgICAgaWYgKG1fdHJh
Y2tLaW5kICE9IHdpdGhUcmFjay0+a2luZCgpKSB7CiAgICAgICAgIGVjID0gVHlwZUVycm9yOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9jbGllbnQtPnJlcGxhY2VUcmFjaygqdGhp
cywgd2l0aFRyYWNrLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBtX2NsaWVudC0+cmVwbGFjZVRy
YWNrKCp0aGlzLCBXVEZNb3ZlKHdpdGhUcmFjayksIFdURk1vdmUocHJvbWlzZSkpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTZW5kZXIuaAppbmRleCA2MGI5OTIwLi45MTJkMGIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmgKQEAgLTQ4
LDIyICs0OCwyNiBAQCBwdWJsaWM6CiAKIGNsYXNzIFJUQ1J0cFNlbmRlciA6IHB1YmxpYyBSVENS
dHBTZW5kZXJSZWNlaXZlckJhc2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UlRDUnRwU2Vu
ZGVyPiBjcmVhdGUoUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2ssIFZlY3RvcjxTdHJpbmc+
JiYgbWVkaWFTdHJlYW1JZHMsIFJUQ1J0cFNlbmRlckNsaWVudCYgY2xpZW50KQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDUnRwU2VuZGVyKFdURk1vdmUodHJhY2spLCBX
VEZNb3ZlKG1lZGlhU3RyZWFtSWRzKSwgY2xpZW50KSk7Ci0gICAgfQorICAgIHN0YXRpYyBSZWY8
UlRDUnRwU2VuZGVyPiBjcmVhdGUoUmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYsIFZlY3RvcjxTdHJp
bmc+JiYgbWVkaWFTdHJlYW1JZHMsIFJUQ1J0cFNlbmRlckNsaWVudCYpOworICAgIHN0YXRpYyBS
ZWY8UlRDUnRwU2VuZGVyPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB0cmFja0tpbmQsIFZlY3RvcjxT
dHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMsIFJUQ1J0cFNlbmRlckNsaWVudCYpOworCisgICAgY29u
c3QgU3RyaW5nJiB0cmFja0lkKCkgY29uc3QgeyByZXR1cm4gbV90cmFja0lkOyB9CisgICAgY29u
c3QgU3RyaW5nJiB0cmFja0tpbmQoKSBjb25zdCB7IHJldHVybiBtX3RyYWNrS2luZDsgfQogCi0g
ICAgY29uc3QgU3RyaW5nJiB0cmFja0lkKCkgeyByZXR1cm4gbV90cmFja0lkOyB9CiAgICAgY29u
c3QgVmVjdG9yPFN0cmluZz4mIG1lZGlhU3RyZWFtSWRzKCkgY29uc3QgeyByZXR1cm4gbV9tZWRp
YVN0cmVhbUlkczsgfQorICAgIHZvaWQgc2V0TWVkaWFTdHJlYW1JZHMoVmVjdG9yPFN0cmluZz4m
JiBtZWRpYVN0cmVhbUlkcykgeyBtX21lZGlhU3RyZWFtSWRzID0gV1RGTW92ZShtZWRpYVN0cmVh
bUlkcyk7IH0KIAorICAgIGJvb2wgaXNTdG9wcGVkKCkgY29uc3QgeyByZXR1cm4gIW1fY2xpZW50
OyB9CiAgICAgdm9pZCBzdG9wKCkgeyBtX2NsaWVudCA9IG51bGxwdHI7IH0KKyAgICB2b2lkIHNl
dFRyYWNrKFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmKTsKIAotICAgIHZvaWQgcmVwbGFjZVRy
YWNrKE1lZGlhU3RyZWFtVHJhY2smLCBQZWVyQ29ubmVjdGlvbjo6Vm9pZFByb21pc2UmJiwgRXhj
ZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcmVwbGFjZVRyYWNrKFJlZjxNZWRpYVN0cmVhbVRyYWNr
PiYmLCBQZWVyQ29ubmVjdGlvbjo6Vm9pZFByb21pc2UmJiwgRXhjZXB0aW9uQ29kZSYpOwogCiBw
cml2YXRlOgotICAgIFJUQ1J0cFNlbmRlcihSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiwgVmVjdG9y
PFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgUlRDUnRwU2VuZGVyQ2xpZW50Jik7CisgICAgUlRD
UnRwU2VuZGVyKFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBjb25zdCBTdHJpbmcmIHRyYWNr
S2luZCwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgUlRDUnRwU2VuZGVyQ2xpZW50
Jik7CiAKICAgICBTdHJpbmcgbV90cmFja0lkOworICAgIFN0cmluZyBtX3RyYWNrS2luZDsKICAg
ICBWZWN0b3I8U3RyaW5nPiBtX21lZGlhU3RyZWFtSWRzOwogICAgIFJUQ1J0cFNlbmRlckNsaWVu
dCogbV9jbGllbnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBTZW5kZXJSZWNlaXZlckJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlLmgKaW5kZXggMzljOWViYy4u
NWZkNzUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTZW5kZXJSZWNlaXZlckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFNlbmRlclJlY2VpdmVyQmFzZS5oCkBAIC00NCwxNiArNDQsMTggQEAg
Y2xhc3MgTWVkaWFTdHJlYW1UcmFjazsKIAogY2xhc3MgUlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNl
IDogcHVibGljIFJlZkNvdW50ZWQ8UlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlPiwgcHVibGljIFNj
cmlwdFdyYXBwYWJsZSB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+UlRDUnRwU2VuZGVyUmVjZWl2
ZXJCYXNlKCkgeyB9CisgICAgdmlydHVhbCB+UlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlKCkgPSBk
ZWZhdWx0OwogCi0gICAgTWVkaWFTdHJlYW1UcmFjayYgdHJhY2soKSB7IHJldHVybiBtX3RyYWNr
OyB9CisgICAgTWVkaWFTdHJlYW1UcmFjayogdHJhY2soKSB7IHJldHVybiBtX3RyYWNrLmdldCgp
OyB9CiAKIHByb3RlY3RlZDoKKyAgICBSVENSdHBTZW5kZXJSZWNlaXZlckJhc2UoKSA9IGRlZmF1
bHQ7CisKICAgICBSVENSdHBTZW5kZXJSZWNlaXZlckJhc2UoUmVmPE1lZGlhU3RyZWFtVHJhY2s+
JiYgdHJhY2spCiAgICAgICAgIDogbV90cmFjayhXVEZNb3ZlKHRyYWNrKSkKICAgICB7IH0KIAot
ICAgIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiBtX3RyYWNrOworICAgIFJlZlB0cjxNZWRpYVN0cmVh
bVRyYWNrPiBtX3RyYWNrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFuc2NlaXZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjJiZDRkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBUcmFu
c2NlaXZlci5jcHAKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
RXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAq
IDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgRXJpY3Nzb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29u
dHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlJUQ1J0cFRyYW5zY2VpdmVyLmgiCisKKyNpZiBFTkFCTEUoV0VCX1JUQykKKwor
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
KyNkZWZpbmUgU1RSSU5HX0ZVTkNUSU9OKG5hbWUpIFwKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5n
JiBuYW1lIyNTdHJpbmcoKSBcCisgICAgeyBcCisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxjb25zdCBTdHJpbmc+IG5hbWUgeyBBU0NJSUxpdGVyYWwoI25hbWUpIH07IFwKKyAgICAgICAg
cmV0dXJuIG5hbWU7IFwKKyAgICB9CisKK1NUUklOR19GVU5DVElPTihzZW5kcmVjdikKK1NUUklO
R19GVU5DVElPTihzZW5kb25seSkKK1NUUklOR19GVU5DVElPTihyZWN2b25seSkKK1NUUklOR19G
VU5DVElPTihpbmFjdGl2ZSkKKworUmVmPFJUQ1J0cFRyYW5zY2VpdmVyPiBSVENSdHBUcmFuc2Nl
aXZlcjo6Y3JlYXRlKFJlZlB0cjxSVENSdHBTZW5kZXI+JiYgc2VuZGVyLCBSZWZQdHI8UlRDUnRw
UmVjZWl2ZXI+JiYgcmVjZWl2ZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDUnRw
VHJhbnNjZWl2ZXIoV1RGTW92ZShzZW5kZXIpLCBXVEZNb3ZlKHJlY2VpdmVyKSkpOworfQorCitT
dHJpbmcgUlRDUnRwVHJhbnNjZWl2ZXI6OmdldE5leHRNaWQoKQoreworICAgIHN0YXRpYyB1bnNp
Z25lZCBtaWQgPSAwOworICAgIHJldHVybiBTdHJpbmc6Om51bWJlcigrK21pZCk7Cit9CisKK1JU
Q1J0cFRyYW5zY2VpdmVyOjpSVENSdHBUcmFuc2NlaXZlcihSZWZQdHI8UlRDUnRwU2VuZGVyPiYm
IHNlbmRlciwgUmVmUHRyPFJUQ1J0cFJlY2VpdmVyPiYmIHJlY2VpdmVyKQorICAgIDogbV9kaXJl
Y3Rpb24oRGlyZWN0aW9uOjpTZW5kcmVjdikKKyAgICAsIG1fc2VuZGVyKHNlbmRlcikKKyAgICAs
IG1fcmVjZWl2ZXIocmVjZWl2ZXIpCit7Cit9CisKK2NvbnN0IFN0cmluZyYgUlRDUnRwVHJhbnNj
ZWl2ZXI6OmRpcmVjdGlvblN0cmluZygpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX2RpcmVjdGlv
bikgeworICAgIGNhc2UgRGlyZWN0aW9uOjpTZW5kcmVjdjogcmV0dXJuIHNlbmRyZWN2U3RyaW5n
KCk7CisgICAgY2FzZSBEaXJlY3Rpb246OlNlbmRvbmx5OiByZXR1cm4gc2VuZG9ubHlTdHJpbmco
KTsKKyAgICBjYXNlIERpcmVjdGlvbjo6UmVjdm9ubHk6IHJldHVybiByZWN2b25seVN0cmluZygp
OworICAgIGNhc2UgRGlyZWN0aW9uOjpJbmFjdGl2ZTogcmV0dXJuIGluYWN0aXZlU3RyaW5nKCk7
CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGluYWN0aXZl
U3RyaW5nKCk7Cit9CisKK2Jvb2wgUlRDUnRwVHJhbnNjZWl2ZXI6Omhhc1NlbmRpbmdEaXJlY3Rp
b24oKSBjb25zdAoreworICAgIHJldHVybiBtX2RpcmVjdGlvbiA9PSBEaXJlY3Rpb246OlNlbmRy
ZWN2IHx8IG1fZGlyZWN0aW9uID09IERpcmVjdGlvbjo6U2VuZG9ubHk7Cit9CisKK3ZvaWQgUlRD
UnRwVHJhbnNjZWl2ZXI6OmVuYWJsZVNlbmRpbmdEaXJlY3Rpb24oKQoreworICAgIGlmIChtX2Rp
cmVjdGlvbiA9PSBEaXJlY3Rpb246OlJlY3Zvbmx5KQorICAgICAgICBtX2RpcmVjdGlvbiA9IERp
cmVjdGlvbjo6U2VuZHJlY3Y7CisgICAgZWxzZSBpZiAobV9kaXJlY3Rpb24gPT0gRGlyZWN0aW9u
OjpJbmFjdGl2ZSkKKyAgICAgICAgbV9kaXJlY3Rpb24gPSBEaXJlY3Rpb246OlNlbmRvbmx5Owor
fQorCit2b2lkIFJUQ1J0cFRyYW5zY2VpdmVyOjpkaXNhYmxlU2VuZGluZ0RpcmVjdGlvbigpCit7
CisgICAgaWYgKG1fZGlyZWN0aW9uID09IERpcmVjdGlvbjo6U2VuZHJlY3YpCisgICAgICAgIG1f
ZGlyZWN0aW9uID0gRGlyZWN0aW9uOjpSZWN2b25seTsKKyAgICBlbHNlIGlmIChtX2RpcmVjdGlv
biA9PSBEaXJlY3Rpb246OlNlbmRvbmx5KQorICAgICAgICBtX2RpcmVjdGlvbiA9IERpcmVjdGlv
bjo6SW5hY3RpdmU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBUcmFuc2NlaXZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBUcmFuc2NlaXZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjFlZDRkZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2VpdmVyLmgKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAg
ZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBFcmljc3NvbiBub3IgdGhl
IG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFJUQ1J0cFRyYW5zY2VpdmVyX2gKKyNkZWZpbmUgUlRDUnRwVHJhbnNjZWl2ZXJfaAorCisj
aWYgRU5BQkxFKFdFQl9SVEMpCisKKyNpbmNsdWRlICJSVENSdHBSZWNlaXZlci5oIgorI2luY2x1
ZGUgIlJUQ1J0cFNlbmRlci5oIgorI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJU
Q1J0cFRyYW5zY2VpdmVyIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDUnRwVHJhbnNjZWl2ZXI+LCBw
dWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsKK3B1YmxpYzoKKyAgICAvLyBUaGlzIGVudW0gaXMgbWly
cm9yZWQgaW4gUlRDUGVlckNvbm5lY3Rpb24uaAorICAgIGVudW0gY2xhc3MgRGlyZWN0aW9uIHsg
U2VuZHJlY3YsIFNlbmRvbmx5LCBSZWN2b25seSwgSW5hY3RpdmUgfTsKKworICAgIHN0YXRpYyBS
ZWY8UlRDUnRwVHJhbnNjZWl2ZXI+IGNyZWF0ZShSZWZQdHI8UlRDUnRwU2VuZGVyPiYmLCBSZWZQ
dHI8UlRDUnRwUmVjZWl2ZXI+JiYpOworICAgIHZpcnR1YWwgflJUQ1J0cFRyYW5zY2VpdmVyKCkg
eyB9CisKKyAgICBib29sIGhhc1NlbmRpbmdEaXJlY3Rpb24oKSBjb25zdDsKKyAgICB2b2lkIGVu
YWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsKKyAgICB2b2lkIGRpc2FibGVTZW5kaW5nRGlyZWN0aW9u
KCk7CisKKyAgICBjb25zdCBTdHJpbmcmIGRpcmVjdGlvblN0cmluZygpIGNvbnN0OworICAgIERp
cmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdGlvbjsgfQorICAgIHZv
aWQgc2V0RGlyZWN0aW9uKERpcmVjdGlvbiBkaXJlY3Rpb24pIHsgbV9kaXJlY3Rpb24gPSBkaXJl
Y3Rpb247IH0KKworICAgIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxNaWQoKSBjb25zdCB7IHJl
dHVybiBtX3Byb3Zpc2lvbmFsTWlkOyB9CisgICAgdm9pZCBzZXRQcm92aXNpb25hbE1pZChjb25z
dCBTdHJpbmcmIHByb3Zpc2lvbmFsTWlkKSB7IG1fcHJvdmlzaW9uYWxNaWQgPSBwcm92aXNpb25h
bE1pZDsgfQorCisgICAgY29uc3QgU3RyaW5nJiBtaWQoKSBjb25zdCB7IHJldHVybiBtX21pZDsg
fQorICAgIHZvaWQgc2V0TWlkKGNvbnN0IFN0cmluZyYgbWlkKSB7IG1fbWlkID0gbWlkOyB9CisK
KyAgICBSVENSdHBTZW5kZXIqIHNlbmRlcigpIGNvbnN0IHsgcmV0dXJuIG1fc2VuZGVyLmdldCgp
OyB9CisgICAgUlRDUnRwUmVjZWl2ZXIqIHJlY2VpdmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZWNl
aXZlci5nZXQoKTsgfQorCisgICAgYm9vbCBzdG9wcGVkKCkgY29uc3QgeyByZXR1cm4gbV9zdG9w
cGVkOyB9CisgICAgdm9pZCBzdG9wKCkgeyBtX3N0b3BwZWQgPSB0cnVlOyB9CisKKyAgICBzdGF0
aWMgU3RyaW5nIGdldE5leHRNaWQoKTsKKworcHJpdmF0ZToKKyAgICBSVENSdHBUcmFuc2NlaXZl
cihSZWZQdHI8UlRDUnRwU2VuZGVyPiYmLCBSZWZQdHI8UlRDUnRwUmVjZWl2ZXI+JiYpOworCisg
ICAgU3RyaW5nIG1fcHJvdmlzaW9uYWxNaWQ7CisgICAgU3RyaW5nIG1fbWlkOworCisgICAgRGly
ZWN0aW9uIG1fZGlyZWN0aW9uOworCisgICAgUmVmUHRyPFJUQ1J0cFNlbmRlcj4gbV9zZW5kZXI7
CisgICAgUmVmUHRyPFJUQ1J0cFJlY2VpdmVyPiBtX3JlY2VpdmVyOworCisgICAgYm9vbCBtX3N0
b3BwZWQgeyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKFdFQl9SVEMpCisKKyNlbmRpZiAvLyBSVENSdHBUcmFuc2NlaXZlcl9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFRyYW5zY2Vp
dmVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwVHJhbnNj
ZWl2ZXIuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjNTQ0OWEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFRyYW5zY2VpdmVyLmlkbApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24u
CisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2YgaXRz
IGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25h
bD1XRUJfUlRDCitdIGludGVyZmFjZSBSVENSdHBUcmFuc2NlaXZlciB7CisgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZz8gbWlkOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBSVENSdHBT
ZW5kZXIgc2VuZGVyOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBSVENSdHBSZWNlaXZlciByZWNl
aXZlcjsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBzdG9wcGVkOworICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbiBkaXJlY3Rpb247CisKKyAg
ICB2b2lkIHNldERpcmVjdGlvbihSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbiBkaXJlY3Rpb24p
OworICAgIHZvaWQgc3RvcCgpOworfTsKKworLy8gVGhpcyBlbnVtIGlzIG1pcnJvcmVkIGluIFJU
Q1BlZXJDb25uZWN0aW9uLmlkbAorZW51bSBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbiB7ICJz
ZW5kcmVjdiIsICJzZW5kb25seSIsICJyZWN2b25seSIsICJpbmFjdGl2ZSIgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmMjlh
NDRiLi5lNThiZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0yMzg3LDYgKzIzODcsOCBAQAogCQk1RTJDNDM3NDFCQ0YwRDc1
MDAwMUUyQkMgLyogSlNSVENSdHBTZW5kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVFMkM0MzcwMUJDRjBENjkwMDAxRTJCQyAvKiBKU1JUQ1J0cFNl
bmRlci5oICovOyB9OwogCQk1RTJDNDM3QjFCQ0Y5QTU3MDAwMUUyQkMgLyogUlRDUGVlckNvbm5l
Y3Rpb25CdWlsdGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUUyQzQzNzYxQkNGOUEwQjAwMDFFMkJDIC8qIFJUQ1BlZXJDb25uZWN0aW9uQnVpbHRp
bnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
RTJDNDM3QzFCQ0Y5QTg0MDAwMUUyQkMgLyogUlRDUGVlckNvbm5lY3Rpb25JbnRlcm5hbHNCdWls
dGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUUy
QzQzNzkxQkNGOUEwQjAwMDFFMkJDIC8qIFJUQ1BlZXJDb25uZWN0aW9uSW50ZXJuYWxzQnVpbHRp
bnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1
RTVFMkIxMzFDRkMzRTcwMDAwQzBEODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUU1RTJCMTAxQ0ZDM0U0QjAw
MEMwRDg1IC8qIFJUQ1J0cFRyYW5zY2VpdmVyLmNwcCAqLzsgfTsKKwkJNUU1RTJCMTQxQ0ZDM0U3
NTAwMEMwRDg1IC8qIFJUQ1J0cFRyYW5zY2VpdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RTVFMkIxMTFDRkMzRTRCMDAwQzBEODUgLyogUlRDUnRw
VHJhbnNjZWl2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1RUEzRDZERjFDODU5RDdGMDAzMDBCQkIgLyogTW9ja01lZGlhRW5kcG9pbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVFQTNENkRFMUM4
NTlENTMwMDMwMEJCQiAvKiBNb2NrTWVkaWFFbmRwb2ludC5oICovOyB9OwogCQk1RUEzRDZFMDFD
ODU5RDg0MDAzMDBCQkIgLyogTW9ja01lZGlhRW5kcG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUVBM0Q2REQxQzg1OUQ1MzAwMzAwQkJCIC8q
IE1vY2tNZWRpYUVuZHBvaW50LmNwcCAqLzsgfTsKIAkJNUVBM0Q2RTMxQzg1OURDMTAwMzAwQkJC
IC8qIFNEUFByb2Nlc3Nvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1RUEzRDZFMTFDODU5REFBMDAzMDBCQkIgLyogU0RQUHJvY2Vzc29yLmNwcCAq
LzsgfTsKQEAgLTk5OTMsNiArOTk5NSw5IEBACiAJCTVFMkM0Mzc2MUJDRjlBMEIwMDAxRTJCQyAv
KiBSVENQZWVyQ29ubmVjdGlvbkJ1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJUQ1BlZXJDb25uZWN0aW9uQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUUyQzQzNzgxQkNGOUEwQjAwMDFFMkJDIC8qIFJUQ1BlZXJDb25uZWN0aW9uSW50
ZXJuYWxzQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UlRDUGVlckNvbm5lY3Rpb25JbnRlcm5hbHNCdWlsdGlucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTVFMkM0Mzc5MUJDRjlBMEIwMDAxRTJCQyAvKiBSVENQZWVyQ29ubmVjdGlv
bkludGVybmFsc0J1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJU
Q1BlZXJDb25uZWN0aW9uSW50ZXJuYWxzQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNUU1RTJCMTAxQ0ZDM0U0QjAwMEMwRDg1IC8qIFJUQ1J0cFRyYW5zY2VpdmVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJUQ1J0cFRyYW5zY2VpdmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUU1RTJCMTExQ0ZDM0U0QjAwMEMw
RDg1IC8qIFJUQ1J0cFRyYW5zY2VpdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJUQ1J0cFRyYW5zY2VpdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVF
NUUyQjEyMUNGQzNFNEIwMDBDMEQ4NSAvKiBSVENSdHBUcmFuc2NlaXZlci5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gUlRDUnRwVHJhbnNjZWl2ZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1RUEzRDZERDFDODU5RDUzMDAzMDBCQkIgLyogTW9ja01lZGlhRW5kcG9pbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja01lZGlhRW5kcG9p
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RUEzRDZERTFDODU5RDUzMDAz
MDBCQkIgLyogTW9ja01lZGlhRW5kcG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTW9ja01lZGlhRW5kcG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUVBM0Q2RTExQzg1OURBQTAwMzAwQkJCIC8qIFNEUFByb2Nlc3Nvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTRFBQcm9jZXNzb3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTU0NzQsNiArMTU0NzksOSBAQAogCQkJCTVFMkM0MzVBMUJDRUUz
MEQwMDAxRTJCQyAvKiBSVENSdHBTZW5kZXIuaCAqLywKIAkJCQk1RTJDNDM1QjFCQ0VFMzBEMDAw
MUUyQkMgLyogUlRDUnRwU2VuZGVyLmlkbCAqLywKIAkJCQk1RTJDNDM1RDFCQ0VFMzBEMDAwMUUy
QkMgLyogUlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlLmggKi8sCisJCQkJNUU1RTJCMTAxQ0ZDM0U0
QjAwMEMwRDg1IC8qIFJUQ1J0cFRyYW5zY2VpdmVyLmNwcCAqLywKKwkJCQk1RTVFMkIxMTFDRkMz
RTRCMDAwQzBEODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIuaCAqLywKKwkJCQk1RTVFMkIxMjFDRkMz
RTRCMDAwQzBEODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIuaWRsICovLAogCQkJCTA3MjIxQjdBMTdD
RUMzMjcwMDg0OEU1MSAvKiBSVENTZXNzaW9uRGVzY3JpcHRpb24uY3BwICovLAogCQkJCTA3MjIx
QjdCMTdDRUMzMjcwMDg0OEU1MSAvKiBSVENTZXNzaW9uRGVzY3JpcHRpb24uaCAqLywKIAkJCQkw
NzIyMUI3QzE3Q0VDMzI3MDA4NDhFNTEgLyogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmlkbCAqLywK
QEAgLTI3MTg5LDYgKzI3MTk3LDcgQEAKIAkJCQk0RTE5NTkyMjBBMzlEQUJBMDAyMjBGRTUgLyog
TWVkaWFGZWF0dXJlTmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3QTZEMUVDMTQ5MTEzNzcw
MDA1MUQwQyAvKiBNZWRpYUZyYWdtZW50VVJJUGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
OEVBODAwRTBBMTk1MTZFMDBBOEVGNUYgLyogTWVkaWFMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1RTVFMkIxNDFDRkMzRTc1MDAwQzBEODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTVFQkI4OTMxMUM3Nzc3RkYwMEM2NUQ0MSAvKiBNZWRpYVBheWxvYWQuaCBp
biBIZWFkZXJzICovLAogCQkJCTA3RTNERkQxMUE5RTc4NjUwMDc2NENBOCAvKiBNZWRpYVBsYXli
YWNrVGFyZ2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzkyMTY1NTFBQTU2MEFBMDBBM0MwNDkg
LyogTWVkaWFQbGF5YmFja1RhcmdldENsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDk1Miw2
ICszMDk2MSw3IEBACiAJCQkJNDE3MjUzQUExMzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJv
bEVsZW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCURFQkNDREQ1MTY2NDZFQjIwMEE0NTJF
MSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Qy
N0Y2RTcxNDU3NzBEMzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk1RTVFMkIxMzFDRkMzRTcwMDAwQzBEODUgLyogUlRDUnRwVHJhbnNjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUYzQzNCRUExMzVDQUYzQzAwQjhDMUFDIC8qIE1lZGlhQ29u
dHJvbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE1N0FGODExMkYxRkIwNDAwQThDNkY1IC8q
IE1lZGlhQ29udHJvbHNBcHBsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREFCNkQyODE3QzdE
RTZDMDBDNjBCMzQgLyogTWVkaWFDb250cm9sc0hvc3QuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50LmgK
aW5kZXggYzA5YjllYS4uM2RjODdlNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50LmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpZiBF
TkFCTEUoV0VCX1JUQykKIAogI2luY2x1ZGUgIk1lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9uLmgi
CisjaW5jbHVkZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03OCw2ICs3OSw3IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBhZGRSZW1vdGVDYW5kaWRhdGUoSWNlQ2FuZGlkYXRlJiwg
dW5zaWduZWQgbWRlc2NJbmRleCwgY29uc3QgU3RyaW5nJiB1ZnJhZywgY29uc3QgU3RyaW5nJiBw
YXNzd29yZCkgPSAwOwogCisgICAgdmlydHVhbCBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4gY3Jl
YXRlTXV0ZWRSZW1vdGVTb3VyY2UoY29uc3QgU3RyaW5nJiBtaWQsIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlR5cGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVwbGFjZVNlbmRTb3VyY2UoUmVhbHRp
bWVNZWRpYVNvdXJjZSYsIHVuc2lnbmVkIG1kZXNjSW5kZXgpID0gMDsKIAogICAgIHZpcnR1YWwg
dm9pZCBzdG9wKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAppbmRleCAwNGQwNDY1Li4yMjZh
ZWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZU1lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcApAQCAtNDUsMTEgKzQ1LDYgQEAgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6UmVhbHRpbWVNZWRpYVNvdXJjZShjb25zdCBTdHJpbmcmIGlkLCBUeXBlIHR5
cGUsIGNvbnN0IFN0cmkKICAgICA6IG1faWQoaWQpCiAgICAgLCBtX3R5cGUodHlwZSkKICAgICAs
IG1fbmFtZShuYW1lKQotICAgICwgbV9zdG9wcGVkKGZhbHNlKQotICAgICwgbV9tdXRlZChmYWxz
ZSkKLSAgICAsIG1fcmVhZG9ubHkoZmFsc2UpCi0gICAgLCBtX3JlbW90ZShmYWxzZSkKLSAgICAs
IG1fZml0bmVzc1Njb3JlKDApCiB7CiAgICAgLy8gRklYTUUoMTQ3MjA1KTogTmVlZCB0byBpbXBs
ZW1lbnQgZml0bmVzcyBzY29yZSBmb3IgY29uc3RyYWludHMKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCmlu
ZGV4IDI5YzhhNTEuLmMxZjVlOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgKQEAgLTEyMCwxOSArMTIw
LDIwIEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBSZWFsdGltZU1lZGlhU291cmNlKGNvbnN0
IFN0cmluZyYgaWQsIFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKKyAgICBib29sIG1fbXV0
ZWQgeyBmYWxzZSB9OworCiBwcml2YXRlOgogICAgIFN0cmluZyBtX2lkOwogICAgIFN0cmluZyBt
X3BlcnNpc3RlbnRJRDsKICAgICBUeXBlIG1fdHlwZTsKICAgICBTdHJpbmcgbV9uYW1lOwotICAg
IGJvb2wgbV9zdG9wcGVkOworICAgIGJvb2wgbV9zdG9wcGVkIHsgZmFsc2UgfTsKICAgICBWZWN0
b3I8T2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKIAotICAgIGJvb2wgbV9tdXRlZDsKLSAgICBib29s
IG1fcmVhZG9ubHk7Ci0gICAgYm9vbCBtX3JlbW90ZTsKKyAgICBib29sIG1fcmVhZG9ubHkgeyBm
YWxzZSB9OworICAgIGJvb2wgbV9yZW1vdGUgeyBmYWxzZSB9OwogICAgIAotICAgIHVuc2lnbmVk
IG1fZml0bmVzc1Njb3JlOworICAgIHVuc2lnbmVkIG1fZml0bmVzc1Njb3JlIHsgMCB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291cmNlTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZVZpZGVvU291
cmNlTWFjLm1tCmluZGV4IGI5ODUyODMuLjIxNmNkMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0
aW1lVmlkZW9Tb3VyY2VNYWMubW0KQEAgLTQ0LDkgKzQ0LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1SZWZQdHI8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U+IE1vY2tSZWFsdGltZVZpZGVv
U291cmNlOjpjcmVhdGUoKQorUmVmPE1vY2tSZWFsdGltZVZpZGVvU291cmNlPiBNb2NrUmVhbHRp
bWVWaWRlb1NvdXJjZTo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tS
ZWFsdGltZVZpZGVvU291cmNlTWFjKCkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1vY2tS
ZWFsdGltZVZpZGVvU291cmNlTWFjKCkpOwogfQogCiBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZU1h
Yzo6TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2VNYWMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFFbmRwb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVuZHBvaW50LmNwcAppbmRleCA1YTFiZDM1Li5kNmJjMTFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVuZHBv
aW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVuZHBv
aW50LmNwcApAQCAtMzQsNiArMzQsOCBAQAogI2luY2x1ZGUgIk1vY2tNZWRpYUVuZHBvaW50Lmgi
CiAKICNpbmNsdWRlICJNZWRpYVBheWxvYWQuaCIKKyNpbmNsdWRlICJNb2NrUmVhbHRpbWVBdWRp
b1NvdXJjZS5oIgorI2luY2x1ZGUgIk1vY2tSZWFsdGltZVZpZGVvU291cmNlLmgiCiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTUzLDYgKzE1
NSwxNSBAQCB2b2lkIE1vY2tNZWRpYUVuZHBvaW50OjphZGRSZW1vdGVDYW5kaWRhdGUoSWNlQ2Fu
ZGlkYXRlJiBjYW5kaWRhdGUsIHVuc2lnbmVkIG1kZQogICAgIFVOVVNFRF9QQVJBTShwYXNzd29y
ZCk7CiB9CiAKK1JlZjxSZWFsdGltZU1lZGlhU291cmNlPiBNb2NrTWVkaWFFbmRwb2ludDo6Y3Jl
YXRlTXV0ZWRSZW1vdGVTb3VyY2UoY29uc3QgU3RyaW5nJiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
VHlwZSB0eXBlKQoreworICAgIGlmICh0eXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlv
KQorICAgICAgICByZXR1cm4gTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZU11dGVkKCJy
ZW1vdGUgYXVkaW8iKTsKKworICAgIEFTU0VSVCh0eXBlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6
OlZpZGVvKTsKKyAgICByZXR1cm4gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6OmNyZWF0ZU11dGVk
KCJyZW1vdGUgdmlkZW8iKTsKK30KKwogdm9pZCBNb2NrTWVkaWFFbmRwb2ludDo6cmVwbGFjZVNl
bmRTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZSYgbmV3U291cmNlLCB1bnNpZ25lZCBtZGVzY0lu
ZGV4KQogewogICAgIFVOVVNFRF9QQVJBTShuZXdTb3VyY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFFbmRwb2ludC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrTWVkaWFFbmRwb2ludC5oCmluZGV4IGRkYzI4ZTAuLjEwYzZi
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja01lZGlhRW5k
cG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tNZWRpYUVuZHBv
aW50LmgKQEAgLTU1LDYgKzU1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRSZW1vdGVDYW5k
aWRhdGUoSWNlQ2FuZGlkYXRlJiwgdW5zaWduZWQgbWRlc2NJbmRleCwgY29uc3QgU3RyaW5nJiB1
ZnJhZywgY29uc3QgU3RyaW5nJiBwYXNzd29yZCkgb3ZlcnJpZGU7CiAKKyAgICBSZWY8UmVhbHRp
bWVNZWRpYVNvdXJjZT4gY3JlYXRlTXV0ZWRSZW1vdGVTb3VyY2UoY29uc3QgU3RyaW5nJiBtaWQs
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVwbGFjZVNl
bmRTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZSYsIHVuc2lnbmVkIG1kZXNjSW5kZXgpIG92ZXJy
aWRlOwogCiAgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwCmluZGV4IDlk
ZmQ2NTEuLjJlOTM2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwCkBAIC00MCwxMyArNDAsMjAgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWZQdHI8TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U+IE1v
Y2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGUoKQorUmVmPE1vY2tSZWFsdGltZUF1ZGlvU291
cmNlPiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlKCkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlKE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpt
b2NrQXVkaW9Tb3VyY2VOYW1lKCkpKTsKIH0KIAotTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6Ok1v
Y2tSZWFsdGltZUF1ZGlvU291cmNlKCkKLSAgICA6IE1vY2tSZWFsdGltZU1lZGlhU291cmNlKGNy
ZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8sIG1v
Y2tBdWRpb1NvdXJjZU5hbWUoKSkKK1JlZjxNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZT4gTW9ja1Jl
YWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZU11dGVkKGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAg
ICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVmKCpuZXcgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UobmFt
ZSkpOworICAgIHNvdXJjZS0+bV9tdXRlZCA9IHRydWU7CisgICAgcmV0dXJuIHNvdXJjZTsKK30K
KworTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlKGNvbnN0
IFN0cmluZyYgbmFtZSkKKyAgICA6IE1vY2tSZWFsdGltZU1lZGlhU291cmNlKGNyZWF0ZUNhbm9u
aWNhbFVVSURTdHJpbmcoKSwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8sIG5hbWUpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
QXVkaW9Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1l
QXVkaW9Tb3VyY2UuaAppbmRleCA2ZWNjYzkwLi4xZjRlMWY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oCkBAIC00
MywxMiArNDMsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2UgOiBwdWJsaWMgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UgewogcHVibGljOgogCi0g
ICAgc3RhdGljIFJlZlB0cjxNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZT4gY3JlYXRlKCk7CisgICAg
c3RhdGljIFJlZjxNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZT4gY3JlYXRlKCk7CisgICAgc3RhdGlj
IFJlZjxNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZT4gY3JlYXRlTXV0ZWQoY29uc3QgU3RyaW5nJiBu
YW1lKTsKIAogICAgIHZpcnR1YWwgfk1vY2tSZWFsdGltZUF1ZGlvU291cmNlKCkgeyB9CiAKIHBy
b3RlY3RlZDoKLSAgICBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZSgpOworICAgIE1vY2tSZWFsdGlt
ZUF1ZGlvU291cmNlKGNvbnN0IFN0cmluZyYgbmFtZSA9IEFTQ0lJTGl0ZXJhbCgiTW9jayBhdWRp
byBkZXZpY2UiKSk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVTZXR0aW5ncyhSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3MmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKaW5kZXggMjhi
NzY3MC4uZWYxNzBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5jcHAKQEAgLTQ5LDE0ICs0OSwyMSBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykK
LVJlZlB0cjxNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZT4gTW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U6
OmNyZWF0ZSgpCitSZWY8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U+IE1vY2tSZWFsdGltZVZpZGVv
U291cmNlOjpjcmVhdGUoKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTW9ja1JlYWx0aW1l
VmlkZW9Tb3VyY2UoKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9ja1JlYWx0aW1lVmlk
ZW9Tb3VyY2UoTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6Om1vY2tWaWRlb1NvdXJjZU5hbWUoKSkp
OworfQorCitSZWY8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U+IE1vY2tSZWFsdGltZVZpZGVvU291
cmNlOjpjcmVhdGVNdXRlZChjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgYXV0byBzb3VyY2Ug
PSBhZG9wdFJlZigqbmV3IE1vY2tSZWFsdGltZVZpZGVvU291cmNlKG5hbWUpKTsKKyAgICBzb3Vy
Y2UtPm1fbXV0ZWQgPSB0cnVlOworICAgIHJldHVybiBzb3VyY2U7CiB9CiAjZW5kaWYKIAotTW9j
a1JlYWx0aW1lVmlkZW9Tb3VyY2U6Ok1vY2tSZWFsdGltZVZpZGVvU291cmNlKCkKLSAgICA6IE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VmlkZW8sIG1vY2tWaWRlb1NvdXJjZU5hbWUoKSkKK01vY2tSZWFsdGlt
ZVZpZGVvU291cmNlOjpNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZShjb25zdCBTdHJpbmcmIG5hbWUp
CisgICAgOiBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZShjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5n
KCksIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvLCBuYW1lKQogICAgICwgbV90aW1lcihSdW5M
b29wOjpjdXJyZW50KCksIHRoaXMsICZNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZTo6Z2VuZXJhdGVG
cmFtZSkKIHsKICAgICBtX2Rhc2hXaWR0aHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lVmlkZW9T
b3VyY2UuaAppbmRleCBhNWE1MmMxLi5hZDAzZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZVZpZGVvU291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZS5oCkBAIC00Niw3ICs0
Niw4IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIE1vY2tSZWFsdGltZVZpZGVvU291
cmNlIDogcHVibGljIE1vY2tSZWFsdGltZU1lZGlhU291cmNlIHsKIHB1YmxpYzoKIAotICAgIHN0
YXRpYyBSZWZQdHI8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U+IGNyZWF0ZSgpOworICAgIHN0YXRp
YyBSZWY8TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U+IGNyZWF0ZSgpOworICAgIHN0YXRpYyBSZWY8
TW9ja1JlYWx0aW1lVmlkZW9Tb3VyY2U+IGNyZWF0ZU11dGVkKGNvbnN0IFN0cmluZyYgbmFtZSk7
CiAKICAgICB2aXJ0dWFsIH5Nb2NrUmVhbHRpbWVWaWRlb1NvdXJjZSgpIHsgfQogCkBAIC01Niw3
ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZyYW1lUmF0ZShmbG9hdCk7CiAKIHByb3Rl
Y3RlZDoKLSAgICBNb2NrUmVhbHRpbWVWaWRlb1NvdXJjZSgpOworICAgIE1vY2tSZWFsdGltZVZp
ZGVvU291cmNlKGNvbnN0IFN0cmluZyYgbmFtZSA9IEFTQ0lJTGl0ZXJhbCgiTW9jayB2aWRlbyBk
ZXZpY2UiKSk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7
IH0KIAogICAgIEltYWdlQnVmZmVyKiBpbWFnZUJ1ZmZlcigpIGNvbnN0Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>