<?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>123322</bug_id>
          
          <creation_ts>2013-10-24 23:29:44 -0700</creation_ts>
          <short_desc>[MSE] Add mock MediaSource classes for testing.</short_desc>
          <delta_ts>2013-11-07 09:56:59 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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>
          <dependson>123374</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rego+ews</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>943448</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-10-24 23:29:44 -0700</bug_when>
    <thetext>[MSE] Add mock MediaSource classes for testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945011</commentid>
    <comment_count>1</comment_count>
      <attachid>215524</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-10-30 10:53:40 -0700</bug_when>
    <thetext>Created attachment 215524
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946041</commentid>
    <comment_count>2</comment_count>
      <attachid>215524</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-11-01 14:52:05 -0700</bug_when>
    <thetext>Comment on attachment 215524
Patch

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

r=me with a few nits.

&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:1213
&gt; +void MediaPlayerFactorySupport::callRegisterMediaEngine(MediaEngineRegister registerMediaEngine)

&quot;callRegisterMediaEngine&quot; is an odd name for an externally visible method (even though that is what it does).

&gt; Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:206
&gt; +#if ENABLE(MEDIA_SOURCE)
&gt; +void MediaPlayerPrivateAVFoundation::load(const String&amp;, PassRefPtr&lt;HTMLMediaSource&gt;)
&gt; +{
&gt; +    m_networkState = MediaPlayer::FormatError;
&gt; +    m_player-&gt;networkStateChanged();
&gt; +}
&gt; +#endif

This was part of bug 123593.

&gt; Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:133
&gt; +    virtual void load(const String&amp;, PassRefPtr&lt;HTMLMediaSource&gt;);

Ditto.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:910
&gt; +#if ENABLE(MEDIA_SOURCE)
&gt; +    if (parameters.isMediaSource)
&gt; +        return MediaPlayer::IsNotSupported;
&gt; +#endif

Ditto.

&gt; Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.h:98
&gt; +    virtual void load(const String&amp;, PassRefPtr&lt;HTMLMediaSource&gt;);

Ditto.

&gt; Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:678
&gt; +#if ENABLE(MEDIA_SOURCE)
&gt; +void MediaPlayerPrivateQTKit::load(const String&amp;, PassRefPtr&lt;HTMLMediaSource&gt;)
&gt; +{
&gt; +    m_networkState = MediaPlayer::FormatError;
&gt; +    m_player-&gt;networkStateChanged();
&gt; +}
&gt; +#endif

Ditto.

&gt; Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:1481
&gt; +#if ENABLE(MEDIA_SOURCE)
&gt; +    if (parameters.isMediaSource)
&gt; +        return MediaPlayer::IsNotSupported;
&gt; +#endif

Ditto.

&gt; Source/WebCore/platform/mock/mediasource/MockBox.cpp:42
&gt; +MockBox::MockBox(ArrayBuffer* data)
&gt; +{
&gt; +    m_type = peekType(data);
&gt; +    m_length = peekLength(data);
&gt; +}

Should you check that data is big enough for a box?

&gt; Source/WebCore/platform/mock/mediasource/MockBox.cpp:63
&gt; +    RefPtr&lt;JSC::DataView&gt; view = JSC::DataView::create(data, 0, data-&gt;byteLength());
&gt; +    m_trackID = view-&gt;get&lt;int32_t&gt;(8, true);

Ditto.

&gt; Source/WebCore/platform/mock/mediasource/MockBox.cpp:83
&gt; +    RefPtr&lt;JSC::DataView&gt; view = JSC::DataView::create(data, 0, data-&gt;byteLength());

Ditto.

&gt; Source/WebCore/platform/mock/mediasource/MockBox.cpp:110
&gt; +    RefPtr&lt;JSC::DataView&gt; view = JSC::DataView::create(data, 0, data-&gt;byteLength());

Ditto.

&gt; Source/WebCore/platform/mock/mediasource/MockBox.h:70
&gt; +class MockTrackBox : public MockBox {

Can this be marked FINAL?

&gt; Source/WebCore/platform/mock/mediasource/MockBox.h:97
&gt; +class MockInitializationBox : public MockBox {

Ditto.

&gt; Source/WebCore/platform/mock/mediasource/MockBox.h:121
&gt; +class MockSampleBox : public MockBox {

Ditto.

&gt; Source/WebCore/platform/mock/mediasource/MockMediaPlayerMediaSource.h:38
&gt; +class MockMediaPlayerMediaSource : public MediaPlayerPrivateInterface {

Can this be marked FINAL?

&gt; Source/WebCore/platform/mock/mediasource/MockMediaPlayerMediaSource.h:72
&gt; +    // MediaPlayerPrivate Overrides
&gt; +    virtual void load(const String&amp; url) OVERRIDE;
&gt; +    virtual void load(const String&amp; url, PassRefPtr&lt;HTMLMediaSource&gt;) OVERRIDE;
&gt; +    virtual void cancelLoad() OVERRIDE;
&gt; +    virtual void play() OVERRIDE;
&gt; +    virtual void pause() OVERRIDE;
&gt; +    virtual IntSize naturalSize() const OVERRIDE;
&gt; +    virtual bool hasVideo() const OVERRIDE;
&gt; +    virtual bool hasAudio() const OVERRIDE;
&gt; +    virtual void setVisible(bool) OVERRIDE;
&gt; +    virtual bool seeking() const OVERRIDE;
&gt; +    virtual bool paused() const OVERRIDE;
&gt; +    virtual MediaPlayer::NetworkState networkState() const OVERRIDE;
&gt; +    virtual MediaPlayer::ReadyState readyState() const OVERRIDE;
&gt; +    virtual PassRefPtr&lt;TimeRanges&gt; buffered() const OVERRIDE;
&gt; +    virtual bool didLoadingProgress() const OVERRIDE;
&gt; +    virtual void setSize(const IntSize&amp;) OVERRIDE;
&gt; +    virtual void paint(GraphicsContext*, const IntRect&amp;) OVERRIDE;
&gt; +    virtual double currentTimeDouble() const OVERRIDE;
&gt; +    virtual double durationDouble() const OVERRIDE;
&gt; +    virtual void seekDouble(double time) OVERRIDE;
&gt; +
&gt; +    void advanceCurrentTime();
&gt; +    void updateDuration(double);
&gt; +    void setReadyState(MediaPlayer::ReadyState);

Can these be made private?

&gt; Source/WebCore/platform/mock/mediasource/MockMediaPlayerMediaSource.h:81
&gt; +    bool m_playing;

Nit: packing.

&gt; Source/WebCore/platform/mock/mediasource/MockMediaSourcePrivate.cpp:131
&gt; +    RefPtr&lt;MockSourceBufferPrivate&gt; sourceBuffer = prpSourceBuffer;
&gt; +    return sourceBuffer-&gt;hasAudio();

Nit: the local isn&apos;t necessary.

&gt; Source/WebCore/platform/mock/mediasource/MockMediaSourcePrivate.cpp:141
&gt; +    RefPtr&lt;MockSourceBufferPrivate&gt; sourceBuffer = prpSourceBuffer;

Ditto.

&gt; Source/WebCore/platform/mock/mediasource/MockMediaSourcePrivate.h:39
&gt; +class MockMediaSourcePrivate : public MediaSourcePrivate {

Can this be marked FINAL?

&gt; Source/WebCore/platform/mock/mediasource/MockMediaSourcePrivate.h:53
&gt; +    // MediaSourcePrivate Overrides
&gt; +    virtual AddStatus addSourceBuffer(const ContentType&amp;, RefPtr&lt;SourceBufferPrivate&gt;&amp;) OVERRIDE;
&gt; +    virtual double duration() OVERRIDE;
&gt; +    virtual void setDuration(double) OVERRIDE;
&gt; +    virtual void markEndOfStream(EndOfStreamStatus) OVERRIDE;
&gt; +    virtual void unmarkEndOfStream() OVERRIDE;
&gt; +    virtual MediaPlayer::ReadyState readyState() const OVERRIDE;
&gt; +    virtual void setReadyState(MediaPlayer::ReadyState) OVERRIDE;
&gt; +
&gt; +    const Vector&lt;MockSourceBufferPrivate*&gt;&amp; activeSourceBuffers() const { return m_activeSourceBuffers; }

Can these be made private?

&gt; Source/WebCore/platform/mock/mediasource/MockSourceBufferPrivate.cpp:44
&gt; +class MockMediaSample : public MediaSample {

FINAL?

&gt; Source/WebCore/platform/mock/mediasource/MockSourceBufferPrivate.cpp:46
&gt; +    static RefPtr&lt;MockMediaSample&gt; create(MockSampleBox box) { return adoptRef(new MockMediaSample(box)); }

const MockSampleBox&amp;

&gt; Source/WebCore/platform/mock/mediasource/MockSourceBufferPrivate.cpp:58
&gt; +    MockMediaSample(MockSampleBox box)

Ditto.

&gt; Source/WebCore/platform/mock/mediasource/MockSourceBufferPrivate.cpp:74
&gt; +class MockMediaDescription : public MediaDescription {

FINAL?

&gt; Source/WebCore/platform/mock/mediasource/MockSourceBufferPrivate.cpp:76
&gt; +    static RefPtr&lt;MockMediaDescription&gt; create(MockTrackBox box) { return adoptRef(new MockMediaDescription(box)); }

const MockTrackBox&amp;

&gt; Source/WebCore/platform/mock/mediasource/MockSourceBufferPrivate.cpp:85
&gt; +    MockMediaDescription(MockTrackBox box) : m_box(box) { }

Ditto.

&gt; Source/WebCore/platform/mock/mediasource/MockSourceBufferPrivate.cpp:143
&gt; +        MockTrackBox trackBox = *it;

MockTrackBox&amp;

&gt; Source/WebCore/platform/mock/mediasource/MockTracks.h:40
&gt; +    static RefPtr&lt;MockAudioTrackPrivate&gt; create(MockTrackBox box) { return adoptRef(new MockAudioTrackPrivate(box)); }

const MockTrackBox&amp;

&gt; Source/WebCore/platform/mock/mediasource/MockTracks.h:46
&gt; +    MockAudioTrackPrivate(MockTrackBox box)

Ditto.

&gt; Source/WebCore/platform/mock/mediasource/MockTracks.h:57
&gt; +    static RefPtr&lt;MockTextTrackPrivate&gt; create(MockTrackBox box) { return adoptRef(new MockTextTrackPrivate(box)); }

Ditto.

&gt; Source/WebCore/platform/mock/mediasource/MockTracks.h:63
&gt; +    MockTextTrackPrivate(MockTrackBox box)

Ditto.

&gt; Source/WebCore/platform/mock/mediasource/MockTracks.h:76
&gt; +    static RefPtr&lt;MockVideoTrackPrivate&gt; create(MockTrackBox box) { return adoptRef(new MockVideoTrackPrivate(box)); }

Ditto.

&gt; Source/WebCore/platform/mock/mediasource/MockTracks.h:82
&gt; +    MockVideoTrackPrivate(MockTrackBox box)

Ditto.

&gt; LayoutTests/ChangeLog:71
&gt; +

Four ChangeLog entries?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948279</commentid>
    <comment_count>3</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-11-07 08:52:50 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 215524 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=215524&amp;action=review
&gt; 
&gt; r=me with a few nits.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:1213
&gt; &gt; +void MediaPlayerFactorySupport::callRegisterMediaEngine(MediaEngineRegister registerMediaEngine)
&gt; 
&gt; &quot;callRegisterMediaEngine&quot; is an odd name for an externally visible method (even though that is what it does).

I agonized over this, but couldn&apos;t come up with another name with which I was happy.

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:206
&gt; &gt; +#if ENABLE(MEDIA_SOURCE)
&gt; &gt; +void MediaPlayerPrivateAVFoundation::load(const String&amp;, PassRefPtr&lt;HTMLMediaSource&gt;)
&gt; &gt; +{
&gt; &gt; +    m_networkState = MediaPlayer::FormatError;
&gt; &gt; +    m_player-&gt;networkStateChanged();
&gt; &gt; +}
&gt; &gt; +#endif
&gt; 
&gt; This was part of bug 123593.

Removed this and the following dittos.

&gt; &gt; Source/WebCore/platform/mock/mediasource/MockBox.cpp:42
&gt; &gt; +MockBox::MockBox(ArrayBuffer* data)
&gt; &gt; +{
&gt; &gt; +    m_type = peekType(data);
&gt; &gt; +    m_length = peekLength(data);
&gt; &gt; +}
&gt; 
&gt; Should you check that data is big enough for a box?

I added an ASSERT here (and the following dittos).

&gt; &gt; Source/WebCore/platform/mock/mediasource/MockBox.h:70
&gt; &gt; +class MockTrackBox : public MockBox {
&gt; 
&gt; Can this be marked FINAL?

Yes.  And the dittos as well.

&gt; &gt; Source/WebCore/platform/mock/mediasource/MockMediaPlayerMediaSource.h:38
&gt; &gt; +class MockMediaPlayerMediaSource : public MediaPlayerPrivateInterface {
&gt; 
&gt; Can this be marked FINAL?

No.  Marking it as final (somehow) breaks passing this class into Function objects.

&gt; &gt; Source/WebCore/platform/mock/mediasource/MockMediaPlayerMediaSource.h:72
&gt; &gt; +    // MediaPlayerPrivate Overrides
&gt; &gt; +    virtual void load(const String&amp; url) OVERRIDE;
&gt; &gt; +    virtual void load(const String&amp; url, PassRefPtr&lt;HTMLMediaSource&gt;) OVERRIDE;
&gt; &gt; +    virtual void cancelLoad() OVERRIDE;
&gt; &gt; +    virtual void play() OVERRIDE;
&gt; &gt; +    virtual void pause() OVERRIDE;
&gt; &gt; +    virtual IntSize naturalSize() const OVERRIDE;
&gt; &gt; +    virtual bool hasVideo() const OVERRIDE;
&gt; &gt; +    virtual bool hasAudio() const OVERRIDE;
&gt; &gt; +    virtual void setVisible(bool) OVERRIDE;
&gt; &gt; +    virtual bool seeking() const OVERRIDE;
&gt; &gt; +    virtual bool paused() const OVERRIDE;
&gt; &gt; +    virtual MediaPlayer::NetworkState networkState() const OVERRIDE;
&gt; &gt; +    virtual MediaPlayer::ReadyState readyState() const OVERRIDE;
&gt; &gt; +    virtual PassRefPtr&lt;TimeRanges&gt; buffered() const OVERRIDE;
&gt; &gt; +    virtual bool didLoadingProgress() const OVERRIDE;
&gt; &gt; +    virtual void setSize(const IntSize&amp;) OVERRIDE;
&gt; &gt; +    virtual void paint(GraphicsContext*, const IntRect&amp;) OVERRIDE;
&gt; &gt; +    virtual double currentTimeDouble() const OVERRIDE;
&gt; &gt; +    virtual double durationDouble() const OVERRIDE;
&gt; &gt; +    virtual void seekDouble(double time) OVERRIDE;
&gt; &gt; +
&gt; &gt; +    void advanceCurrentTime();
&gt; &gt; +    void updateDuration(double);
&gt; &gt; +    void setReadyState(MediaPlayer::ReadyState);
&gt; 
&gt; Can these be made private?

All except for readyState().

&gt; &gt; Source/WebCore/platform/mock/mediasource/MockMediaPlayerMediaSource.h:81
&gt; &gt; +    bool m_playing;
&gt; 
&gt; Nit: packing.

Sorted.

&gt; &gt; Source/WebCore/platform/mock/mediasource/MockMediaSourcePrivate.cpp:131
&gt; &gt; +    RefPtr&lt;MockSourceBufferPrivate&gt; sourceBuffer = prpSourceBuffer;
&gt; &gt; +    return sourceBuffer-&gt;hasAudio();
&gt; 
&gt; Nit: the local isn&apos;t necessary.

Removed.

&gt; &gt; Source/WebCore/platform/mock/mediasource/MockMediaSourcePrivate.cpp:141
&gt; &gt; +    RefPtr&lt;MockSourceBufferPrivate&gt; sourceBuffer = prpSourceBuffer;
&gt; 
&gt; Ditto.

Ditto.

&gt; &gt; Source/WebCore/platform/mock/mediasource/MockMediaSourcePrivate.h:39
&gt; &gt; +class MockMediaSourcePrivate : public MediaSourcePrivate {
&gt; 
&gt; Can this be marked FINAL?

Yes.

&gt; &gt; Source/WebCore/platform/mock/mediasource/MockMediaSourcePrivate.h:53
&gt; &gt; +    // MediaSourcePrivate Overrides
&gt; &gt; +    virtual AddStatus addSourceBuffer(const ContentType&amp;, RefPtr&lt;SourceBufferPrivate&gt;&amp;) OVERRIDE;
&gt; &gt; +    virtual double duration() OVERRIDE;
&gt; &gt; +    virtual void setDuration(double) OVERRIDE;
&gt; &gt; +    virtual void markEndOfStream(EndOfStreamStatus) OVERRIDE;
&gt; &gt; +    virtual void unmarkEndOfStream() OVERRIDE;
&gt; &gt; +    virtual MediaPlayer::ReadyState readyState() const OVERRIDE;
&gt; &gt; +    virtual void setReadyState(MediaPlayer::ReadyState) OVERRIDE;
&gt; &gt; +
&gt; &gt; +    const Vector&lt;MockSourceBufferPrivate*&gt;&amp; activeSourceBuffers() const { return m_activeSourceBuffers; }
&gt; 
&gt; Can these be made private?

Yes.

&gt; &gt; Source/WebCore/platform/mock/mediasource/MockSourceBufferPrivate.cpp:44
&gt; &gt; +class MockMediaSample : public MediaSample {
&gt; 
&gt; FINAL?

Yes.

&gt; &gt; Source/WebCore/platform/mock/mediasource/MockSourceBufferPrivate.cpp:46
&gt; &gt; +    static RefPtr&lt;MockMediaSample&gt; create(MockSampleBox box) { return adoptRef(new MockMediaSample(box)); }
&gt; 
&gt; const MockSampleBox&amp;

Yes.

&gt; &gt; Source/WebCore/platform/mock/mediasource/MockSourceBufferPrivate.cpp:58
&gt; &gt; +    MockMediaSample(MockSampleBox box)
&gt; 
&gt; Ditto.

Yes.

&gt; &gt; Source/WebCore/platform/mock/mediasource/MockSourceBufferPrivate.cpp:74
&gt; &gt; +class MockMediaDescription : public MediaDescription {
&gt; 
&gt; FINAL?

Yes.

&gt; &gt; Source/WebCore/platform/mock/mediasource/MockSourceBufferPrivate.cpp:76
&gt; &gt; +    static RefPtr&lt;MockMediaDescription&gt; create(MockTrackBox box) { return adoptRef(new MockMediaDescription(box)); }
&gt; 
&gt; const MockTrackBox&amp;

Yes.

&gt; &gt; Source/WebCore/platform/mock/mediasource/MockSourceBufferPrivate.cpp:85
&gt; &gt; +    MockMediaDescription(MockTrackBox box) : m_box(box) { }
&gt; 
&gt; Ditto.

Yes.

&gt; &gt; Source/WebCore/platform/mock/mediasource/MockSourceBufferPrivate.cpp:143
&gt; &gt; +        MockTrackBox trackBox = *it;
&gt; 
&gt; MockTrackBox&amp;

const MockTrackBox&amp;.

&gt; &gt; Source/WebCore/platform/mock/mediasource/MockTracks.h:40
&gt; &gt; +    static RefPtr&lt;MockAudioTrackPrivate&gt; create(MockTrackBox box) { return adoptRef(new MockAudioTrackPrivate(box)); }
&gt; 
&gt; const MockTrackBox&amp;

Ok.

&gt; &gt; Source/WebCore/platform/mock/mediasource/MockTracks.h:46
&gt; &gt; +    MockAudioTrackPrivate(MockTrackBox box)
&gt; 
&gt; Ditto.

Ok.

&gt; &gt; Source/WebCore/platform/mock/mediasource/MockTracks.h:57
&gt; &gt; +    static RefPtr&lt;MockTextTrackPrivate&gt; create(MockTrackBox box) { return adoptRef(new MockTextTrackPrivate(box)); }
&gt; 
&gt; Ditto.

Ok.

&gt; &gt; Source/WebCore/platform/mock/mediasource/MockTracks.h:63
&gt; &gt; +    MockTextTrackPrivate(MockTrackBox box)
&gt; 
&gt; Ditto.

Ok.

&gt; &gt; Source/WebCore/platform/mock/mediasource/MockTracks.h:76
&gt; &gt; +    static RefPtr&lt;MockVideoTrackPrivate&gt; create(MockTrackBox box) { return adoptRef(new MockVideoTrackPrivate(box)); }
&gt; 
&gt; Ditto.

Ok.

&gt; &gt; Source/WebCore/platform/mock/mediasource/MockTracks.h:82
&gt; &gt; +    MockVideoTrackPrivate(MockTrackBox box)
&gt; 
&gt; Ditto.

Ok.

&gt; &gt; LayoutTests/ChangeLog:71
&gt; &gt; +
&gt; 
&gt; Four ChangeLog entries?

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948280</commentid>
    <comment_count>4</comment_count>
      <attachid>216305</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-11-07 08:54:32 -0800</bug_when>
    <thetext>Created attachment 216305
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948286</commentid>
    <comment_count>5</comment_count>
      <attachid>216306</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-11-07 09:10:12 -0800</bug_when>
    <thetext>Created attachment 216306
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948297</commentid>
    <comment_count>6</comment_count>
      <attachid>216306</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-07 09:18:48 -0800</bug_when>
    <thetext>Comment on attachment 216306
Patch for landing

Attachment 216306 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/22748239</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948298</commentid>
    <comment_count>7</comment_count>
      <attachid>216306</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-07 09:21:02 -0800</bug_when>
    <thetext>Comment on attachment 216306
Patch for landing

Attachment 216306 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/22778214</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948299</commentid>
    <comment_count>8</comment_count>
      <attachid>216306</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-11-07 09:21:55 -0800</bug_when>
    <thetext>Comment on attachment 216306
Patch for landing

Attachment 216306 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/22778215</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948300</commentid>
    <comment_count>9</comment_count>
      <attachid>216309</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-11-07 09:27:41 -0800</bug_when>
    <thetext>Created attachment 216309
Patch for landing

Fixed the build error in Internals.cpp for ports which do not enable MEDIA_SOURCE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>948315</commentid>
    <comment_count>10</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-11-07 09:56:59 -0800</bug_when>
    <thetext>Committed r158853: &lt;http://trac.webkit.org/changeset/158853&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215524</attachid>
            <date>2013-10-30 10:53:40 -0700</date>
            <delta_ts>2013-11-01 14:52:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123322-20131030105339.patch</filename>
            <type>text/plain</type>
            <size>106076</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU4MjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGM1OTgxNjgzMGViNGZk
NjkzY2ZiMGFmMTQ2YjQzNGRlNTZiMjhjOS4uZDgxN2FlNzg0M2VkNGFhYTZiZGJjMDIyM2NhYWJj
MjJiMThlM2U4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NyBAQAorMjAxMy0xMC0zMCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbTVNFXSBBZGQgbW9jayBN
ZWRpYVNvdXJjZSBjbGFzc2VzIGZvciB0ZXN0aW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1z
b3VyY2UtYWRkc291cmNlYnVmZmVyLmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL21lZGlhLXNv
dXJjZS9tZWRpYS1zb3VyY2UtYXBwZW5kLWJ1ZmZlci5odG1sCisgICAgICAgICAgICAgICBtZWRp
YS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWNhbnBsYXl0aHJvdWdoLmh0bWwKKyAgICAgICAg
ICAgICAgIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtY2xvc2VkLmh0bWwKKyAgICAg
ICAgICAgICAgIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtcGxheS5odG1sCisgICAg
ICAgICAgICAgICBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXRyYWNrLWVuYWJsZWQu
aHRtbAorICAgICAgICAgICAgICAgbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS10cmFj
a3MuaHRtbAorCisKKyAgICAgICAgQWRkIG1vY2sgaW1wbGVtZW50YXRpb24gb2YgcGxhdGZvcm0g
TWVkaWFTb3VyY2UgY2xhc3NlcywgYWxsb3dpbmcgcG9ydHMgdG8gdGVzdCB0aGUKKyAgICAgICAg
TWVkaWFTb3VyY2UgQVBJIHdpdGhvdXQgaGF2aW5nIGEgcGxhdGZvcm0gaW1wbGVtZW50YXRpb24u
CisKKyAgICAgICAgVGhlIE1vY2tNZWRpYVNvdXJjZSB3aWxsIHN1cHBvcnQgYSBieXRlZm9ybWF0
IGRlZmluZWQgaW4gTW9ja0JveC5oOiBhIHNpbXBsZSBib3gtc3R5bGUgbWVkaWEKKyAgICAgICAg
Zm9ybWF0IHdpdGggYW4gaW5pdGlhbGl6YXRpb24gc2VnbWVudCBjb250YWluaW5nIGEgbnVtYmVy
IG9mIHRyYWNrcywgZm9sbG93ZWQgYnkgYSBsaXN0IG9mCisgICAgICAgIHNhbXBsZXMuCisKKyAg
ICAgICAgQWRkIGEgbWVhbnMgdG8gaW5zZXJ0IGEgbmV3IG1lZGlhIGVuZ2luZSBmYWN0b3J5IGF0
IHJ1bnRpbWUsIHNvIHRoZSBpbnRlcm5hbHMgb2JqZWN0IGNhbiBhZGQKKyAgICAgICAgYSBNb2Nr
TWVkaWFTb3VyY2VNZWRpYVBsYXllcjoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckZhY3RvcnlTdXBwb3J0
OjpjYWxsUmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OmluaXRpYWxpemVNb2NrTWVkaWFTb3VyY2UpOgorICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRs
OgorCisgICAgICAgIEZvciBub24tbWVkaWEtc291cmNlIHN1cHBvcnRpbmcgbWVkaWEgZW5naW5l
cywgZmFpbCBpbW1lZGlhdGVseSB3aGVuIGFza2VkIHRvIGxvYWQgYSBtZWRpYQorICAgICAgICBz
b3VyY2UsIHNvIHRoYXQgdGhlIE1vY2tNZWRpYVNvdXJjZU1lZGlhUGxheWVyIHdpbGwgYmUgaW5z
dGFudGlhdGVkIGFzIGEgZmFsbC1iYWNrOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpsb2FkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN1cHBvcnRzVHlwZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1t
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmxvYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnN1cHBvcnRzVHlwZSk6CisK
KyAgICAgICAgQWRkIG5ldyBmaWxlcyB0byB0aGUgcHJvamVjdDoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW46CisKKyAgICAgICAgVXBkYXRlIHRoZSBNZWRpYVNvdXJjZSBpbXBsZW1lbnRh
dGlvbjoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjptb25pdG9yU291cmNlQnVmZmVycyk6IEFkZCBh
IGxpbmsgdG8gdGhlIHNwZWMuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VC
dWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpidWZmZXJlZCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpzZXRUaW1lc3RhbXBPZmZzZXQp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6dmFsaWRhdGVJbml0aWFs
aXphdGlvblNlZ21lbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6
c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQpOiBEaXR0
by4gQWxzbywKKyAgICAgICAgICAgIGJyaW5nIHRoZSBpbXBsZW1lbnRhdGlvbiB1cCB0byBkYXRl
IHdpdGggcGFydCBvZiB0aGUgc3BlYy4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6
c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVTYW1wbGUpOiBSZW1vdmUgIlByZWRpY2F0ZSIg
ZnJvbQorICAgICAgICAgICAgU2FtcGxlSXNSYW5kb21BY2Nlc3NQcmVkaWNhdGUuCisKKyAgICAg
ICAgQWRkIHV0aWxpdHkgY2xhc3NlcyB0byBwYXJzZSBhbmQgcmVwcmVzZW50IHRoZSBieXRlc3Ry
ZWFtIHN1cHBvcnRlZCBieSB0aGUgTW9ja01lZGlhU291cmNlOgorICAgICAgICAqIHBsYXRmb3Jt
L21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
TW9ja0JveDo6TW9ja0JveCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQm94OjpwZWVrVHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQm94OjpwZWVrTGVuZ3RoKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tUcmFja0JveDo6TW9ja1RyYWNrQm94KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tU
cmFja0JveDo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrSW5pdGlhbGl6YXRpb25Cb3g6
Ok1vY2tJbml0aWFsaXphdGlvbkJveCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrSW5pdGlhbGl6
YXRpb25Cb3g6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NhbXBsZUJveDo6TW9ja1Nh
bXBsZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU2FtcGxlQm94Ojp0eXBlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpNb2NrQm94OjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0JveDo6
dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrVHJhY2tCb3g6OnRyYWNrSUQpOgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja1RyYWNrQm94Ojpjb2RlYyk6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
VHJhY2tCb3g6OmtpbmQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0luaXRpYWxpemF0aW9uQm94
OjpkdXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrSW5pdGlhbGl6YXRpb25Cb3g6OnRy
YWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU2FtcGxlQm94OjpwcmVzZW50YXRpb25UaW1l
c3RhbXApOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NhbXBsZUJveDo6ZGVjb2RlVGltZXN0YW1w
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTYW1wbGVCb3g6OmR1cmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tTYW1wbGVCb3g6OnRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a1NhbXBsZUJveDo6ZmxhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NhbXBsZUJveDo6aXNT
eW5jKToKKworICAgICAgICBBZGQgYSBNZWRpYVBsYXllclByaXZhdGUgaW1wbGVtZW50YXRpb24g
d2hpY2ggdXNlcyBNb2NrTWVkaWFTb3VyY2U6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUp
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjptaW1lVHlwZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpnZXRTdXBwb3J0ZWRUeXBlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6c3VwcG9ydHNUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpNb2NrTWVkaWFQbGF5ZXJN
ZWRpYVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJj
ZTo6fk1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tN
ZWRpYVBsYXllck1lZGlhU291cmNlOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRp
YVBsYXllck1lZGlhU291cmNlOjpjYW5jZWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tN
ZWRpYVBsYXllck1lZGlhU291cmNlOjpwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRp
YVBsYXllck1lZGlhU291cmNlOjpwYXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFQ
bGF5ZXJNZWRpYVNvdXJjZTo6bmF0dXJhbFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01l
ZGlhUGxheWVyTWVkaWFTb3VyY2U6Omhhc1ZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tN
ZWRpYVBsYXllck1lZGlhU291cmNlOjpoYXNBdWRpbyk6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
TWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6c2V0VmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6c2Vla2luZyk6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6cGF1c2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpuZXR3b3JrU3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlYWR5U3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmJ1ZmZlcmVkKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpkaWRMb2FkaW5nUHJvZ3Jlc3MpOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnNldFNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnBhaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpjdXJyZW50VGltZURv
dWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6ZHVy
YXRpb25Eb3VibGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3Vy
Y2U6OnNlZWtEb3VibGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFT
b3VyY2U6OmFkdmFuY2VDdXJyZW50VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFQ
bGF5ZXJNZWRpYVNvdXJjZTo6dXBkYXRlRHVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnNldFJlYWR5U3RhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuaDogQWRkZWQu
CisKKyAgICAgICAgQWRkIGEgbW9jayBpbXBsZW1lbnRhdGlvbiBvZiBNZWRpYVNvdXJjZVByaXZh
dGUsIHdoaWNoIHVzZXMgTW9ja1NvdXJjZUJ1ZmZlcjoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJjZVByaXZhdGUuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tNZWRpYVNvdXJjZVByaXZhdGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjpNb2NrTWVkaWFTb3VyY2VQcml2YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNvdXJjZVByaXZhdGU6On5Nb2NrTWVkaWFTb3VyY2VQ
cml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNvdXJjZVByaXZhdGU6OmFkZFNv
dXJjZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjpy
ZW1vdmVTb3VyY2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhU291cmNlUHJp
dmF0ZTo6ZHVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhU291cmNlUHJpdmF0
ZTo6c2V0RHVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhU291cmNlUHJpdmF0
ZTo6bWFya0VuZE9mU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNvdXJjZVBy
aXZhdGU6OnVubWFya0VuZE9mU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNv
dXJjZVByaXZhdGU6OnJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhU291
cmNlUHJpdmF0ZTo6c2V0UmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFT
b3VyY2VQcml2YXRlOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkQ2hhbmdlQWN0aXZlU3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGVIYXNBdWRpbyk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjpoYXNBdWRpbyk6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZUhhc1ZpZGVvKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tNZWRpYVNvdXJjZVByaXZhdGU6Omhhc1ZpZGVvKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJjZVByaXZhdGUuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjphY3RpdmVTb3VyY2VCdWZm
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNvdXJjZVByaXZhdGU6OnBsYXllcik6
CisKKyAgICAgICAgQWRkIGEgbW9jayBpbXBsZW1lbnRhdGlvbiBvZiBTb3VyY2VCdWZmZXJQcml2
YXRlLCB3aGljaCB1c2VzIE1vY2tCb3hlcyB0byBwYXJzZSB0aGUKKyAgICAgICAgYnl0ZXN0cmVh
bSBwcm92aWRlZCBieSBTb3VyY2VCdWZmZXI6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja01lZGlhU2FtcGxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01l
ZGlhU2FtcGxlOjp+TW9ja01lZGlhU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRp
YVNhbXBsZTo6TW9ja01lZGlhU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNh
bXBsZTo6cGxhdGZvcm1TYW1wbGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhRGVzY3Jp
cHRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFEZXNjcmlwdGlvbjo6
fk1vY2tNZWRpYURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYURlc2Ny
aXB0aW9uOjpNb2NrTWVkaWFEZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU291
cmNlQnVmZmVyUHJpdmF0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTb3VyY2VC
dWZmZXJQcml2YXRlOjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6fk1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpzZXRDbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZUluaXRpYWxpemF0
aW9uU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6
ZGlkUmVjZWl2ZVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZTo6YWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6
OnJlbW92ZWRGcm9tTWVkaWFTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1
ZmZlclByaXZhdGU6OnJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1
ZmZlclByaXZhdGU6OnNldFJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJj
ZUJ1ZmZlclByaXZhdGU6Omhhc1ZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTb3VyY2VC
dWZmZXJQcml2YXRlOjpoYXNBdWRpbyk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNv
dXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oOiBBZGRlZC4KKworICAgICAgICBDcmVhdGUg
bW9jayBpbXBsZW1lbnRhdGlvbnMgb2YgQXVkaW9UcmFja1ByaXZhdGUsIFZpZGVvVHJhY2tQcml2
YXRlLCBhbmQgVGV4dFRyYWNrUHJpdmF0ZQorICAgICAgICB3aGljaCB3cmFwIHRoZSBNb2NrVHJh
Y2tCb3ggY2xhc3M6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrVHJh
Y2tzLmNwcDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2Nr
VHJhY2tzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0F1ZGlvVHJhY2tQcml2YXRl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0F1ZGlvVHJhY2tQcml2YXRlOjp+TW9j
a0F1ZGlvVHJhY2tQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tBdWRpb1RyYWNrUHJp
dmF0ZTo6aWQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0F1ZGlvVHJhY2tQcml2YXRlOjpNb2Nr
QXVkaW9UcmFja1ByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1RleHRUcmFja1ByaXZh
dGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrVGV4dFRyYWNrUHJpdmF0ZTo6fk1v
Y2tUZXh0VHJhY2tQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tUZXh0VHJhY2tQcml2
YXRlOjppZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrVGV4dFRyYWNrUHJpdmF0ZTo6TW9ja1Rl
eHRUcmFja1ByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1ZpZGVvVHJhY2tQcml2YXRl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1ZpZGVvVHJhY2tQcml2YXRlOjp+TW9j
a1ZpZGVvVHJhY2tQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tWaWRlb1RyYWNrUHJp
dmF0ZTo6aWQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1ZpZGVvVHJhY2tQcml2YXRlOjpNb2Nr
VmlkZW9UcmFja1ByaXZhdGUpOgorCiAyMDEzLTEwLTI1ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgogCiAgICAgICAgIFtNU0VdIEFkZCBNZWRpYVNvdXJjZSBleHRlbnNpb25zIHRv
IEF1ZGlvVHJhY2ssIFZpZGVvVHJhY2ssIGFuZCBUZXh0VHJhY2suCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IDdjY2FkOWMx
ZDJiOWI2ODUwMTFhYzYwOWY3MWU2NTI4NmYzMDE5YTguLmZjZGE2YTUxNTcxZmVkZjk4OTMzMDA4
ZTVkNTZhNmE2ZWM5OGYzY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCkBAIC0zOTgsNiArMzk4LDcgQEAgdm9pZCBNZWRpYVNv
dXJjZTo6bW9uaXRvclNvdXJjZUJ1ZmZlcnMoKQogICAgIGRvdWJsZSBjdXJyZW50VGltZSA9IG1l
ZGlhRWxlbWVudCgpLT5jdXJyZW50VGltZSgpOwogCiAgICAgLy8gMi40LjQgU291cmNlQnVmZmVy
IE1vbml0b3JpbmcKKyAgICAvLyBodHRwczovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3
LWZpbGUvZGVmYXVsdC9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLmh0bWwjYnVmZmVyLW1vbml0
b3JpbmcKICAgICAvLyDihrMgSWYgYnVmZmVyZWQgZm9yIGFsbCBvYmplY3RzIGluIGFjdGl2ZVNv
dXJjZUJ1ZmZlcnMgZG8gbm90IGNvbnRhaW4gVGltZVJhbmdlcyBmb3IgdGhlIGN1cnJlbnQKICAg
ICAvLyBwbGF5YmFjayBwb3NpdGlvbjoKICAgICBhdXRvIGJlZ2luID0gbV9hY3RpdmVTb3VyY2VC
dWZmZXJzLT5iZWdpbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4IDM0MjZkNmM1ZDk4MmM0NmQ0ZmQxZDcwZTk3ZWUz
YjRkNzc4ZWM0YjMuLjMwZjhkMzVhNjliYjYzZWM4N2M4N2RiNjA0Yjg4ZmVlZTA3N2NmNzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZl
ci5jcHAKQEAgLTEwOCw2ICsxMDgsNyBAQCBTb3VyY2VCdWZmZXI6On5Tb3VyY2VCdWZmZXIoKQog
UGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBTb3VyY2VCdWZmZXI6OmJ1ZmZlcmVkKEV4Y2VwdGlvbkNv
ZGUmIGVjKSBjb25zdAogewogICAgIC8vIFNlY3Rpb24gMy4xIGJ1ZmZlcmVkIGF0dHJpYnV0ZSBz
dGVwcy4KKyAgICAvLyBodHRwczovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUv
ZGVmYXVsdC9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLmh0bWwjYXR0cmlidXRlcy0xCiAgICAg
Ly8gMS4gSWYgdGhpcyBvYmplY3QgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBzb3VyY2VCdWZm
ZXJzIGF0dHJpYnV0ZSBvZiB0aGUgcGFyZW50IG1lZGlhIHNvdXJjZSB0aGVuIHRocm93IGFuCiAg
ICAgLy8gICAgSU5WQUxJRF9TVEFURV9FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVw
cy4KICAgICBpZiAoaXNSZW1vdmVkKCkpIHsKQEAgLTEzMiw2ICsxMzMsNyBAQCBkb3VibGUgU291
cmNlQnVmZmVyOjp0aW1lc3RhbXBPZmZzZXQoKSBjb25zdAogdm9pZCBTb3VyY2VCdWZmZXI6OnNl
dFRpbWVzdGFtcE9mZnNldChkb3VibGUgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICAvLyBTZWN0aW9uIDMuMSB0aW1lc3RhbXBPZmZzZXQgYXR0cmlidXRlIHNldHRlciBzdGVwcy4K
KyAgICAvLyBodHRwczovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvZGVmYXVs
dC9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLmh0bWwjYXR0cmlidXRlcy0xCiAgICAgLy8gMS4g
SWYgdGhpcyBvYmplY3QgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBzb3VyY2VCdWZmZXJzIGF0
dHJpYnV0ZSBvZiB0aGUgcGFyZW50IG1lZGlhIHNvdXJjZSB0aGVuIHRocm93IGFuCiAgICAgLy8g
ICAgSU5WQUxJRF9TVEFURV9FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAg
ICBpZiAoaXNSZW1vdmVkKCkpIHsKQEAgLTM5MCw5ICszOTIsMTYgQEAgdm9pZCBTb3VyY2VCdWZm
ZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KFNv
dXJjZUJ1ZmYKICAgICBtX2FwcGVuZFN0YXRlID0gUGFyc2luZ0luaXRTZWdtZW50OwogCiAgICAg
Ly8gMy41LjcgSW5pdGlhbGl6YXRpb24gU2VnbWVudCBSZWNlaXZlZAorICAgIC8vIGh0dHBzOi8v
ZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9yYXctZmlsZS9kZWZhdWx0L21lZGlhLXNvdXJjZS9t
ZWRpYS1zb3VyY2UuaHRtbCNzb3VyY2VidWZmZXItaW5pdC1zZWdtZW50LXJlY2VpdmVkCiAgICAg
Ly8gMS4gVXBkYXRlIHRoZSBkdXJhdGlvbiBhdHRyaWJ1dGUgaWYgaXQgY3VycmVudGx5IGVxdWFs
cyBOYU46Ci0gICAgaWYgKHN0ZDo6aXNuYW4obV9zb3VyY2UtPmR1cmF0aW9uKCkpICYmIHNlZ21l
bnQuZHVyYXRpb24uaXNWYWxpZCgpKQotICAgICAgICBtX3NvdXJjZS0+c2V0RHVyYXRpb24oc2Vn
bWVudC5kdXJhdGlvbi50b0RvdWJsZSgpLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICBpZiAoc3Rk
Ojppc25hbihtX3NvdXJjZS0+ZHVyYXRpb24oKSkpIHsKKyAgICAgICAgLy8g4oazIElmIHRoZSBp
bml0aWFsaXphdGlvbiBzZWdtZW50IGNvbnRhaW5zIGEgZHVyYXRpb246CisgICAgICAgIC8vICAg
UnVuIHRoZSBkdXJhdGlvbiBjaGFuZ2UgYWxnb3JpdGhtIHdpdGggbmV3IGR1cmF0aW9uIHNldCB0
byB0aGUgZHVyYXRpb24gaW4gdGhlIGluaXRpYWxpemF0aW9uIHNlZ21lbnQuCisgICAgICAgIC8v
IOKGsyBPdGhlcndpc2U6CisgICAgICAgIC8vICAgUnVuIHRoZSBkdXJhdGlvbiBjaGFuZ2UgYWxn
b3JpdGhtIHdpdGggbmV3IGR1cmF0aW9uIHNldCB0byBwb3NpdGl2ZSBJbmZpbml0eS4KKyAgICAg
ICAgTWVkaWFUaW1lIG5ld0R1cmF0aW9uID0gc2VnbWVudC5kdXJhdGlvbi5pc1ZhbGlkKCkgPyBz
ZWdtZW50LmR1cmF0aW9uIDogTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpOworICAg
ICAgICBtX3NvdXJjZS0+c2V0RHVyYXRpb24obmV3RHVyYXRpb24udG9Eb3VibGUoKSwgSUdOT1JF
X0VYQ0VQVElPTik7CisgICAgfQogCiAgICAgLy8gMi4gSWYgdGhlIGluaXRpYWxpemF0aW9uIHNl
Z21lbnQgaGFzIG5vIGF1ZGlvLCB2aWRlbywgb3IgdGV4dCB0cmFja3MsIHRoZW4gcnVuIHRoZSBl
bmQgb2Ygc3RyZWFtCiAgICAgLy8gYWxnb3JpdGhtIHdpdGggdGhlIGVycm9yIHBhcmFtZXRlciBz
ZXQgdG8gImRlY29kZSIgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgpAQCAtNTYwLDYgKzU2OSw5IEBA
IHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxp
emF0aW9uU2VnbWVudChTb3VyY2VCdWZmCiAKIGJvb2wgU291cmNlQnVmZmVyOjp2YWxpZGF0ZUlu
aXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJbml0aWFsaXphdGlvblNlZ21lbnQmIHNlZ21lbnQp
CiB7CisgICAgLy8gMy41LjcgSW5pdGlhbGl6YXRpb24gU2VnbWVudCBSZWNlaXZlZCAoY3RkKQor
ICAgIC8vIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9yYXctZmlsZS9kZWZhdWx0
L21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UuaHRtbCNzb3VyY2VidWZmZXItaW5pdC1zZWdtZW50
LXJlY2VpdmVkCisKICAgICAvLyAzLjEuIFZlcmlmeSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMu
IElmIGFueSBvZiB0aGUgY2hlY2tzIGZhaWwgdGhlbiBydW4gdGhlIGVuZCBvZiBzdHJlYW0KICAg
ICAvLyBhbGdvcml0aG0gd2l0aCB0aGUgZXJyb3IgcGFyYW1ldGVyIHNldCB0byAiZGVjb2RlIiBh
bmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAgICAgLy8gICAqIFRoZSBudW1iZXIgb2YgYXVkaW8sIHZp
ZGVvLCBhbmQgdGV4dCB0cmFja3MgbWF0Y2ggd2hhdCB3YXMgaW4gdGhlIGZpcnN0IGluaXRpYWxp
emF0aW9uIHNlZ21lbnQuCkBAIC02NTYsNyArNjY4LDcgQEAgcHVibGljOgogICAgIH0KIH07CiAK
LWNsYXNzIFNhbXBsZUlzUmFuZG9tQWNjZXNzUHJlZGljYXRlIHsKK2NsYXNzIFNhbXBsZUlzUmFu
ZG9tQWNjZXNzIHsKIHB1YmxpYzoKICAgICBib29sIG9wZXJhdG9yKCkoc3RkOjpwYWlyPE1lZGlh
VGltZSwgUmVmUHRyPE1lZGlhU2FtcGxlPj4gdmFsdWUpCiAgICAgewpAQCAtODQyLDcgKzg1NCw3
IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVNhbXBs
ZShTb3VyY2VCdWZmZXJQcml2YXRlKiwgUGFzCiAgICAgICAgICAgICAvLyBPdGhlcndpc2U6IFJl
bW92ZSBhbGwgY29kZWQgZnJhbWVzIGJldHdlZW4gdGhlIGNvZGVkIGZyYW1lcyByZW1vdmVkIGlu
IHRoZSBwcmV2aW91cyBzdGVwCiAgICAgICAgICAgICAvLyBhbmQgdGhlIG5leHQgcmFuZG9tIGFj
Y2VzcyBwb2ludCBhZnRlciB0aG9zZSByZW1vdmVkIGZyYW1lcy4KICAgICAgICAgICAgIGF1dG8g
Zmlyc3RfaXRlciA9IHN0ZDo6dXBwZXJfYm91bmQodHJhY2tCdWZmZXIuc2FtcGxlcy5iZWdpbigp
LCB0cmFja0J1ZmZlci5zYW1wbGVzLmVuZCgpLCAqZXJhc2VkU2FtcGxlcy5iZWdpbigpLCBTYW1w
bGVMZXNzVGhhbkNvbXBhcmF0b3IoKSk7Ci0gICAgICAgICAgICBhdXRvIHNlY29uZF9pdGVyID0g
c3RkOjpmaW5kX2lmKGZpcnN0X2l0ZXIsIHRyYWNrQnVmZmVyLnNhbXBsZXMuZW5kKCksIFNhbXBs
ZUlzUmFuZG9tQWNjZXNzUHJlZGljYXRlKCkpOworICAgICAgICAgICAgYXV0byBzZWNvbmRfaXRl
ciA9IHN0ZDo6ZmluZF9pZihmaXJzdF9pdGVyLCB0cmFja0J1ZmZlci5zYW1wbGVzLmVuZCgpLCBT
YW1wbGVJc1JhbmRvbUFjY2VzcygpKTsKICAgICAgICAgICAgIGlmIChmaXJzdF9pdGVyICE9IHRy
YWNrQnVmZmVyLnNhbXBsZXMuZW5kKCkpIHsKICAgICAgICAgICAgICAgICB0cmFja0J1ZmZlci5z
YW1wbGVzLmVyYXNlKGZpcnN0X2l0ZXIsIHNlY29uZF9pdGVyKTsKICAgICAgICAgICAgICAgICBl
cmFzZWRTYW1wbGVzLmluc2VydChmaXJzdF9pdGVyLCBzZWNvbmRfaXRlcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCmluZGV4IDY3YmI1YTY3MGI0NmU4MDE3OTE5OGYyNTVlOTAwNmYxMTgzMmE1MTUuLmNm
NWYyNjQxOGIxNjY4MTE2OWZiOGUwZjVmMjgzMDA3NWJjNmJiNDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCkBAIC0yODk3LDMgKzI4OTcsMTEgQEAgX19aTjdXZWJDb3JlMTJXb3JrZXJUaHJlYWQxN3dv
cmtlclRocmVhZENvdW50RXYKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiBfX1pON1dlYkNvcmU5
UGFnZUdyb3VwMThjYXB0aW9uUHJlZmVyZW5jZXNFdgogI2VuZGlmCisKKyNpZiBFTkFCTEUoVklE
RU8pCitfX1pON1dlYkNvcmUyNU1lZGlhUGxheWVyRmFjdG9yeVN1cHBvcnQyM2NhbGxSZWdpc3Rl
ck1lZGlhRW5naW5lRVBGdlBGdlBGTjNXVEYxMFBhc3NPd25QdHJJTlNfMjdNZWRpYVBsYXllclBy
aXZhdGVJbnRlcmZhY2VFRUVQTlNfMTFNZWRpYVBsYXllckVFUEZ2Uk5TMV83SGFzaFNldElOUzFf
NlN0cmluZ0VOUzFfMTBTdHJpbmdIYXNoRU5TMV8xMEhhc2hUcmFpdHNJU0FfRUVFRUVQRk5TNV8x
MlN1cHBvcnRzVHlwZUVSS05TXzI4TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVyc0VFUEZ2Uk5T
MV82VmVjdG9ySVNBX0xtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUVFUEZ2dkVQRnZSS1NBX0VF
RQorI2VuZGlmCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorX19aTjdXZWJDb3JlMjZNb2Nr
TWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTE5cmVnaXN0ZXJNZWRpYUVuZ2luZUVQRnZQRk4zV1RGMTBQ
YXNzT3duUHRySU5TXzI3TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlRUVFUE5TXzExTWVkaWFQ
bGF5ZXJFRVBGdlJOUzFfN0hhc2hTZXRJTlMxXzZTdHJpbmdFTlMxXzEwU3RyaW5nSGFzaEVOUzFf
MTBIYXNoVHJhaXRzSVNBX0VFRUVFUEZOUzVfMTJTdXBwb3J0c1R5cGVFUktOU18yOE1lZGlhRW5n
aW5lU3VwcG9ydFBhcmFtZXRlcnNFRVBGdlJOUzFfNlZlY3RvcklTQV9MbTBFTlMxXzE1Q3Jhc2hP
bk92ZXJmbG93RUVFRVBGdnZFUEZ2UktTQV9FRQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjAzZGU5NjIyOTJiM2Zm
NTg4OTE4N2M4NjMzM2M1YWMwMWFiYmM5MC4uZTU0YWZjYzQ0NzUwYzMwNTRjMTVjNmNmNGRiMGQ4
MTdjYTQ1YTZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtNTM5Miw2ICs1MzkyLDE2IEBACiAJCUNERUUzOTM3MTc5NzQyNTkw
MDFENzU4MCAvKiBQdWJsaWNVUkxNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUUzOTM2MTc5NzQyNTkwMDFENzU4MCAvKiBQdWJsaWNV
UkxNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJQ0RFRjRGRDcxN0U4NUM4RjAwQUVFMjRCIC8qIEdyaWRM
ZW5ndGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
RUY0RkQ2MTdFODVDOEYwMEFFRTI0QiAvKiBHcmlkTGVuZ3RoLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RGMkIwMDQxODFGMDU5QzAwRjJCNDI0
IC8qIE1lZGlhRGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENERjJCMDAzMTgxRjA1OUMwMEYyQjQyNCAvKiBNZWRpYURlc2NyaXB0aW9u
LmggKi87IH07CisJCUNERjJCMDEwMTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrQm94LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjJCMDA2MTgyMDU0
MDYwMEYyQjQyNCAvKiBNb2NrQm94LmNwcCAqLzsgfTsKKwkJQ0RGMkIwMTExODIwNTQwNjAwRjJC
NDI0IC8qIE1vY2tCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENERjJCMDA3MTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrQm94LmggKi87IH07CisJCUNE
RjJCMDEyMTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREYyQjAwODE4
MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwICovOyB9Owor
CQlDREYyQjAxMzE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjJCMDA5
MTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5oICovOyB9Owor
CQlDREYyQjAxNDE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhU291cmNlUHJpdmF0ZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREYyQjAwQTE4
MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhU291cmNlUHJpdmF0ZS5jcHAgKi87IH07CisJCUNE
RjJCMDE1MTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFTb3VyY2VQcml2YXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREYyQjAwQjE4MjA1NDA2
MDBGMkI0MjQgLyogTW9ja01lZGlhU291cmNlUHJpdmF0ZS5oICovOyB9OworCQlDREYyQjAxNjE4
MjA1NDA3MDBGMkI0MjQgLyogTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGMkIwMEMxODIwNTQwNjAwRjJC
NDI0IC8qIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcCAqLzsgfTsKKwkJQ0RGMkIwMTcxODIw
NTQwNzAwRjJCNDI0IC8qIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREYyQjAwRDE4MjA1NDA2MDBGMkI0MjQg
LyogTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaCAqLzsgfTsKKwkJQ0RGMkIwMTgxODIwNTQwNzAw
RjJCNDI0IC8qIE1vY2tUcmFja3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RGMkIwMEUxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tUcmFja3MuY3Bw
ICovOyB9OworCQlDREYyQjAxOTE4MjA1NDA3MDBGMkI0MjQgLyogTW9ja1RyYWNrcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGMkIwMEYxODIwNTQw
NjAwRjJCNDI0IC8qIE1vY2tUcmFja3MuaCAqLzsgfTsKIAkJQ0RGNjVDQzgxNDVCMUU3NTAwQzRD
N0FBIC8qIE1lZGlhQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0QyN0Y2RTQxNDU3Njc4NzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNE
RjY1Q0NBMTQ1QjQ0ODgwMEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjY1Q0M5MTQ1QjQz
QTcwMEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTA1N0ZBNTEyMjA3MzExMDBBNDc2
RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDU3RkEzMTIyMDczMTEwMEE0NzZENSAvKiBEb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwICovOyB9OwpAQCAtMTIzODYsNiArMTIzOTYsMTYgQEAK
IAkJQ0RFRTM5MzgxNzk3NDI3NDAwMUQ3NTgwIC8qIFVSTFJlZ2lzdHJ5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFVSTFJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERUY0RkQ2
MTdFODVDOEYwMEFFRTI0QiAvKiBHcmlkTGVuZ3RoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEdyaWRMZW5ndGguaDsgcGF0aCA9IHN0eWxlL0dyaWRMZW5ndGguaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RGMkIwMDMxODFGMDU5QzAwRjJCNDI0IC8qIE1lZGlh
RGVzY3JpcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFEZXNj
cmlwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREYyQjAwNjE4MjA1NDA2
MDBGMkI0MjQgLyogTW9ja0JveC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNb2NrQm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RGMkIwMDcx
ODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tCb3guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTW9ja0JveC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREYyQjAwODE4
MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREYyQjAwOTE4MjA1NDA2MDBGMkI0
MjQgLyogTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RGMkIwMEExODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tNZWRpYVNvdXJj
ZVByaXZhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja01l
ZGlhU291cmNlUHJpdmF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERjJC
MDBCMTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFTb3VyY2VQcml2YXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tNZWRpYVNvdXJjZVByaXZhdGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RGMkIwMEMxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tT
b3VyY2VCdWZmZXJQcml2YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0RGMkIwMEQxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tTb3VyY2VCdWZmZXJQcml2
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERjJCMDBFMTgyMDU0MDYwMEYy
QjQyNCAvKiBNb2NrVHJhY2tzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE1vY2tUcmFja3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREYyQjAw
RjE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja1RyYWNrcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNb2NrVHJhY2tzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNE
RjY1Q0M5MTQ1QjQzQTcwMEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERjY1Q0NDMTQ1QjZBRkUwMEM0QzdBQSAv
KiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0UwNTdGQTMxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2Vy
Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTUwMDQsNiArMTUwMjQsNyBAQAogCQk1OUM3N0YxMDEwNTQ1OTFDMDA1MDYxMDQgLyogbW9jayAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0RGMkIwMDUx
ODIwNTNERjAwRjJCNDI0IC8qIG1lZGlhc291cmNlICovLAogCQkJCTA3QzU5QjYxMTdGNENGODcw
MDBGQkNCQiAvKiBNb2NrTWVkaWFTdHJlYW1DZW50ZXIuY3BwICovLAogCQkJCTA3QzU5QjYyMTdG
NENGODcwMDBGQkNCQiAvKiBNb2NrTWVkaWFTdHJlYW1DZW50ZXIuaCAqLywKIAkJCQk1OTMwOUEx
MDExRjRBRTU4MDAyNTA2MDMgLyogRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcCAqLywK
QEAgLTIwMDk4LDYgKzIwMTE5LDIzIEBACiAJCQluYW1lID0gTWVkaWFDb250cm9sczsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUNERjJCMDA1MTgyMDUzREYwMEYyQjQyNCAv
KiBtZWRpYXNvdXJjZSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJQ0RGMkIwMDYxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tCb3guY3BwICovLAorCQkJCUNE
RjJCMDA3MTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrQm94LmggKi8sCisJCQkJQ0RGMkIwMDgxODIw
NTQwNjAwRjJCNDI0IC8qIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcCAqLywKKwkJCQlD
REYyQjAwOTE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuaCAq
LywKKwkJCQlDREYyQjAwQTE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhU291cmNlUHJpdmF0
ZS5jcHAgKi8sCisJCQkJQ0RGMkIwMEIxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tNZWRpYVNvdXJj
ZVByaXZhdGUuaCAqLywKKwkJCQlDREYyQjAwQzE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja1NvdXJj
ZUJ1ZmZlclByaXZhdGUuY3BwICovLAorCQkJCUNERjJCMDBEMTgyMDU0MDYwMEYyQjQyNCAvKiBN
b2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oICovLAorCQkJCUNERjJCMDBFMTgyMDU0MDYwMEYyQjQy
NCAvKiBNb2NrVHJhY2tzLmNwcCAqLywKKwkJCQlDREYyQjAwRjE4MjA1NDA2MDBGMkI0MjQgLyog
TW9ja1RyYWNrcy5oICovLAorCQkJKTsKKwkJCXBhdGggPSBtZWRpYXNvdXJjZTsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUNFNzlENjg2MTdGMjIwRUQwMDgxNUMwMCAvKiBp
b3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjIxMTAs
NiArMjIxNDgsNyBAQAogCQkJCTg1QUNBOTg2MEE5QjUyMDMwMDY3MUU5MCAvKiBET01DaGFyYWN0
ZXJEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUU3MTE4RjBBQzVENTM1MDA1MzI3MEYgLyog
RE9NQ2hhcmFjdGVyRGF0YUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTA4OUNEOTBB
OThDNDI4MDBBMjc1QUEgLyogRE9NQ29tbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RGMkIw
MTUxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tNZWRpYVNvdXJjZVByaXZhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTA3OEUwOTM3MTdEMTZCMkMwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbURlc2NyaXB0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RTcxMTkwMEFDNUQ1MzUwMDUzMjcwRiAvKiBET01D
b21tZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMUEzN0FGMDk3QzcxNUYwMDE5
RjNEOCAvKiBET01Db3JlLmggaW4gSGVhZGVycyAqLywKQEAgLTIyNDIxLDYgKzIyNDYwLDcgQEAK
IAkJCQkwNzhFMDkxODE3RDE0RDFDMDA0MjBBQTEgLyogTWVkaWFTdHJlYW1UcmFjay5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOEFDODIyRkQxODBGQzAzMzAwRkI2NEQ1IC8qIFJlbmRlck5hbWVkRmxv
d0ZyYWdtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUQ3MTlEOTE4MTEwNkUwMDAxNkRDNTEg
LyogSURCSW5kZXguaCBpbiBIZWFkZXJzICovLAorCQkJCUNERjJCMDE5MTgyMDU0MDcwMEYyQjQy
NCAvKiBNb2NrVHJhY2tzLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTZGRTA4MjBFNkNDQzI4MDBC
RjYwODggLyogRE9NV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZUludGVybmFsLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0OTgzOTE1MDBGMUU3NkI0MDBDMjM3ODIgLyogRE9NV2ViS2l0Q1NTTWF0cml4Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0OTgzOTE1MjBGMUU3NkI0MDBDMjM3ODIgLyogRE9NV2ViS2l0
Q1NTTWF0cml4SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAtMjI0MzAsNiArMjI0NzAsNyBA
QAogCQkJCTMxNjExRTYzMEUxQzRFMTQwMEY2QTU3OSAvKiBET01XZWJLaXRDU1NUcmFuc2Zvcm1W
YWx1ZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkzRjJCMzNFQjE2NUFGMTU2MDBFMzk4
N0MgLyogRE9NV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzRjJC
MzNFRDE2NUFGMTU2MDBFMzk4N0MgLyogRE9NV2ViS2l0Q1NTVmlld3BvcnRSdWxlSW50ZXJuYWwu
aCBpbiBIZWFkZXJzICovLAorCQkJCUNERjJCMDE3MTgyMDU0MDcwMEYyQjQyNCAvKiBNb2NrU291
cmNlQnVmZmVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEExOTU5MzIxNDdFQTE2RTAw
RDFFQTYxIC8qIERPTVdlYktpdE5hbWVkRmxvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEExOTU5
MzQxNDdFQTE2RTAwRDFFQTYxIC8qIERPTVdlYktpdE5hbWVkRmxvd0ludGVybmFsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzMUMwRkY0QzBFNENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNp
dGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTIzOTY3LDYgKzI0MDA4LDcgQEAKIAkJCQk1
MTRDNzY3QTBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGVDbGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxNEM3NjdCMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZUlu
dGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUU0MTQzNDE2QTY1OTYzMDBDNjMzQzcgLyog
UmVzb3VyY2VIYW5kbGVUeXBlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RGMkIwMTExODIwNTQw
NjAwRjJCNDI0IC8qIE1vY2tCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NkQzNzNGMEFEQkE1
REUwMEE0NTU0RCAvKiBSZXNvdXJjZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDBBM0E3
MzExNDA1QTM5ODAwRkI4RUQzIC8qIFJlc291cmNlTG9hZGVyT3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFBRjUwMzYxNkYxMDBGNjAwOTVCMkU4IC8qIFJlc291cmNlTG9hZGVyVHlwZXMu
aCBpbiBIZWFkZXJzICovLApAQCAtMjQ1MjcsNiArMjQ1NjksNyBAQAogCQkJCUE4MjRCNDY1MEUy
RUYyRUEwMDgxQTdCNyAvKiBUZXh0UnVuLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NDhCMUI3QTBG
M0EyRjlCMDA0N0E5RTIgLyogVGV4dFNpemVBZGp1c3RtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMkMzREE0QjBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dFN0cmVhbS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQ0RGMkIwMTMxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tNZWRpYVBsYXllck1lZGlhU291
cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzU5RTk0MDE0RUYxQ0Y4MDAyNkEyREQgLyogVGV4
dFRyYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzU5RTk0MzE0RUYxQ0Y4MDAyNkEyREQgLyog
VGV4dFRyYWNrQ3VlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzFBOUVDMzE2OEZCQzU1MDAyNjI5
RjkgLyogVGV4dFRyYWNrQ3VlR2VuZXJpYy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTU5MSw2ICsy
NTYzNCw3IEBACiAJCQkJRDM1OUQ3OTIxMjlDQTNDMDAwMDZFNUQyIC8qIERPTUhUTUxEZXRhaWxz
RWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1QkE0RDBDMEFBNjg4NjgwMDg4MDUyRCAv
KiBET01IVE1MRGlyZWN0b3J5RWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1QkE0RDBF
MEFBNjg4NjgwMDg4MDUyRCAvKiBET01IVE1MRGl2RWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAor
CQkJCUNERjJCMDE0MTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFTb3VyY2VQcml2YXRlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTg1QkE0RDEwMEFBNjg4NjgwMDg4MDUyRCAvKiBET01IVE1M
RExpc3RFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVCQ0JDMTQwQUJCQTg3RDAwMzgx
MTYwIC8qIERPTUhUTUxEb2N1bWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1REYyRUVFMEFB
Mzg3Q0IwMEFENjRDNSAvKiBET01IVE1MRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLApAQCAtMjU2
OTQsNiArMjU3MzgsNyBAQAogCQkJCTMxQzBGRjRBMEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJL
aXRBbmltYXRpb25FdmVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUEyRThBRTQxMTZBNDk4Q0Yw
MDZCQjNBQSAvKiBET01XZWJLaXRDU1NGaWx0ZXJSdWxlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MzEwNjAzN0ExNDMyODFDRDAwQUJGNEJBIC8qIERPTVdlYktpdENTU0ZpbHRlclZhbHVlLm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJQ0RGMkIwMTAxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tCb3guY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUwN0UwRTZDQ0MyODAwQkY2MDg4IC8qIERPTVdlYktp
dENTU0tleWZyYW1lUnVsZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxNkZFMDgxMEU2Q0NDMjgw
MEJGNjA4OCAvKiBET01XZWJLaXRDU1NLZXlmcmFtZXNSdWxlLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDk4MzkxNTEwRjFFNzZCNDAwQzIzNzgyIC8qIERPTVdlYktpdENTU01hdHJpeC5tbSBpbiBT
b3VyY2VzICovLApAQCAtMjYwMjAsNiArMjYwNjUsNyBAQAogCQkJCUE4NzFEQzI5MEExNTIwNTcw
MEIxMkE2OCAvKiBIVE1MVGl0bGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0Iz
ODc3MTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MVG9rZW5pemVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTA3MDc1NjhCMTQyMjYyRDYwMDQxNDE2MSAvKiBIVE1MVHJhY2tFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUNERjJCMDEyMTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFQbGF5
ZXJNZWRpYVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdCMzcyNTEyMjg3MjE3MDBC
ODFGRjggLyogSFRNTFRyZWVCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlCN0U3OEJE
MTZGMTZDQzYwMDEyNjkxNCAvKiBIVE1MVHJlZUJ1aWxkZXJTaW11bGF0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQThFQTc5RjMwQTE5MTZERjAwQThFRjVGIC8qIEhUTUxVTGlzdEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzQxMSw2ICsyNzQ1Nyw3IEBACiAJCQkJNDMxQTMwODgx
M0I4Rjk3ODAwNzc5MUU0IC8qIFNWR0FuaW1hdGVkQm9vbGVhbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0M0E2MjVGOTEzQjMzMDQwMDBBQzk0QjggLyogU1ZHQW5pbWF0ZWRDb2xvci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3MUNDN0EyMDE1MkEwQkZFMDA5RUVBRjkgLyogU1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREYyQjAxNjE4MjA1NDA3MDBGMkI0
MjQgLyogTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDNG
NkZEOTYxM0JDRDBCMTAwMjI0MDUyIC8qIFNWR0FuaW1hdGVkSW50ZWdlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQTM1ODZFMTE1MjY0Rjk1MDAyMkE2NTkgLyogU1ZHQW5pbWF0ZWRJbnRlZ2Vy
T3B0aW9uYWxJbnRlZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCThBQzgyMkZDMTgwRkMwMzMw
MEZCNjRENSAvKiBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTI3NTM5LDYgKzI3NTg2LDcgQEAKIAkJCQk4NDc2QzlFRjExREY2QTU4MDA1NTVCMDIgLyogU1ZH
UGF0aFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E4MDBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHUGF0aFNlZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODQ3NkM5RTUxMURG
NkEwQjAwNTU1QjAyIC8qIFNWR1BhdGhTZWdMaXN0QnVpbGRlci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlDREYyQjAxODE4MjA1NDA3MDBGMkI0MjQgLyogTW9ja1RyYWNrcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwOEZGMTAyMDEyOTUwRjVBMDBGMDAyNzYgLyogU1ZHUGF0aFNlZ0xpc3RQcm9w
ZXJ0eVRlYXJPZmYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODRCNkI5NzcxMjBGMTNFNTAwQjhF
RkFGIC8qIFNWR1BhdGhTZWdMaXN0U291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0MTlE
MkI5MTIwRTBDNzYwMDE0MUY4RiAvKiBTVkdQYXRoU3RyaW5nQnVpbGRlci5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmNwcAppbmRleCBmZDMyZmYzOGIwYWI4YTlmMTNjN2MyODFkZTAyNTJlMmEyZDIwNjg4Li41ZWE4
MzQ4NDQ3YmZlNjYxNjBmZjQ0NTJmYTExMWFiOTA0ZTk2YmM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBAIC0xMjEwLDYgKzEyMTAs
MTEgQEAgc2l6ZV90IE1lZGlhUGxheWVyOjpleHRyYU1lbW9yeUNvc3QoKSBjb25zdAogICAgIHJl
dHVybiBtX3ByaXZhdGUtPmV4dHJhTWVtb3J5Q29zdCgpOwogfQogCit2b2lkIE1lZGlhUGxheWVy
RmFjdG9yeVN1cHBvcnQ6OmNhbGxSZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0
ZXIgcmVnaXN0ZXJNZWRpYUVuZ2luZSkKK3sKKyAgICByZWdpc3Rlck1lZGlhRW5naW5lKGFkZE1l
ZGlhRW5naW5lKTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IGU0MjU3ZDUzN2M5ZGM1NzA3NWEyMDA3YzJi
ZDNjOWNkOTYxZGQzZjguLjhlMjVlNmI1NjY3NTdlZWNlMzFlZjE4MGZjZDRlMzllMGE4M2QyMGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApA
QCAtNTQ1LDYgKzU0NSwxMiBAQCB0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUNsZWFyTWVkaWFD
YWNoZUZvclNpdGUpKGNvbnN0IFN0cmluZyYpOwogCiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2lu
ZVJlZ2lzdHJhcikoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIsIE1lZGlhRW5naW5lU3VwcG9ydGVk
VHlwZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlLAogICAgIE1lZGlhRW5naW5lR2V0U2l0ZXNJ
bk1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFy
TWVkaWFDYWNoZUZvclNpdGUpOwordHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVSZWdpc3Rlciko
TWVkaWFFbmdpbmVSZWdpc3RyYXIpOworCitjbGFzcyBNZWRpYVBsYXllckZhY3RvcnlTdXBwb3J0
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBjYWxsUmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRp
YUVuZ2luZVJlZ2lzdGVyKTsKK307CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAppbmRleCBmYWNhMDk2ZjM4YzUzZmY2
NTgwNTFjZjBjMGI4MDA3MWExNWYxOTg2Li4xYWViYjQ5Nzc3ZWRjZDE0NTVlNGM0ZjFhMDk2ZGZm
NDRlZGU2ZDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uLmNwcApAQCAtMTk3LDYgKzE5NywxNSBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbjo6bG9hZChjb25zdCBTdHJpbmcmIHVybCkKICAgICBzZXRQcmVs
b2FkKG1fcHJlbG9hZCk7CiB9CiAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQordm9pZCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmxvYWQoY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0
cjxIVE1MTWVkaWFTb3VyY2U+KQoreworICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6
OkZvcm1hdEVycm9yOworICAgIG1fcGxheWVyLT5uZXR3b3JrU3RhdGVDaGFuZ2VkKCk7Cit9Cisj
ZW5kaWYKKworCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6cGxheWFiaWxp
dHlLbm93bigpCiB7CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uOjpwbGF5YWJpbGl0eUtub3duKCVwKSIsIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oCmluZGV4IDE0NzU0MDFmMTJiY2Vl
NjYzZDYxNDQ2Zjc2Y2YwMGFlNGFmNGY5OGYuLjdkMTliZmZhMmU5YjdkNzQ4NWJhY2RkMTc1ZGY0
YWNlYzcwNTE5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uLmgKQEAgLTEzMCw3ICsxMzAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8g
TWVkaWFQbGF5ZXJQcml2YXRlUHJpdmF0ZUludGVyZmFjZSBvdmVycmlkZXMuCiAgICAgdmlydHVh
bCB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJiB1cmwpIE9WRVJSSURFOwogI2lmIEVOQUJMRShNRURJ
QV9TT1VSQ0UpCi0gICAgdmlydHVhbCB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0
cjxIVE1MTWVkaWFTb3VyY2U+KSB7IH07CisgICAgdmlydHVhbCB2b2lkIGxvYWQoY29uc3QgU3Ry
aW5nJiwgUGFzc1JlZlB0cjxIVE1MTWVkaWFTb3VyY2U+KTsKICNlbmRpZgogICAgIHZpcnR1YWwg
dm9pZCBjYW5jZWxMb2FkKCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCAzZjBi
YWE5NjJhOWNkYTVlM2ZhNDZmZTc5NTg3ODEwYmI1MjA1OTQ4Li5jM2NhY2I5Y2RlMjhjZThjYjVl
NTBhNDJlZDBhNDljYjc5NTgyZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTkwNCw2
ICs5MDQsMTEgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpzdXBwb3J0c1R5cGUoY29uc3QKICAgICAvLyAyLiBSZXR1cm4gIm1h
eWJlIiBvciAicHJvYmFibHkiIGFzIGFwcHJvcHJpYXRlIHBlciB0aGUgZXhpc3Rpbmcgc3BlY2lm
aWNhdGlvbiBvZiBjYW5QbGF5VHlwZSgpLgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU09V
UkNFKQorICAgIGlmIChwYXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UpCisgICAgICAgIHJldHVybiBN
ZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CisjZW5kaWYKKwogICAgIGlmICghbWltZVR5cGVD
YWNoZSgpLmNvbnRhaW5zKHBhcmFtZXRlcnMudHlwZSkpCiAgICAgICAgIHJldHVybiBNZWRpYVBs
YXllcjo6SXNOb3RTdXBwb3J0ZWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmgKaW5kZXgg
NDdkYjhhZjMwMTY5YjcwZjIwZDU4MTJiYTk5MWI2YzMxYTJiNTg0NS4uMjgyYmVhNjUxMjI1NzQw
ZjBmNGQzYWU3ZDQ3ODNmN2RjODYyODVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmgK
QEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGxvYWQoY29uc3QgU3Ry
aW5nJiB1cmwpOwogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgdmlydHVhbCB2b2lkIGxv
YWQoY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxIVE1MTWVkaWFTb3VyY2U+KSB7IH07CisgICAg
dmlydHVhbCB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxIVE1MTWVkaWFTb3Vy
Y2U+KTsKICNlbmRpZgogICAgIHZvaWQgY2FuY2VsTG9hZCgpOwogICAgIHZvaWQgbG9hZEludGVy
bmFsKGNvbnN0IFN0cmluZyYgdXJsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQppbmRl
eCA3Yjc0ZTdkZWVkMjc5ZmY4MTJkNjBlMzI4OTcxMjA3ZDk0NGMxMmU2Li5lOWU4NTI5NmM0MWEz
ODhhNjg3OTQyMjA0NGE2MjkxNTRkZTk3ZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0
Lm1tCkBAIC02NjksNiArNjY5LDE1IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6Omxv
YWRJbnRlcm5hbChjb25zdCBTdHJpbmcmIHVybCkKICAgICBbbV9vYmpjT2JzZXJ2ZXIuZ2V0KCkg
c2V0RGVsYXlDYWxsYmFja3M6Tk9dOwogfQogCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKK3Zv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmxvYWQoY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0
cjxIVE1MTWVkaWFTb3VyY2U+KQoreworICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6
OkZvcm1hdEVycm9yOworICAgIG1fcGxheWVyLT5uZXR3b3JrU3RhdGVDaGFuZ2VkKCk7Cit9Cisj
ZW5kaWYKKworCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpwcmVwYXJlVG9QbGF5KCkK
IHsKICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6cHJlcGFyZVRvUGxh
eSglcCkiLCB0aGlzKTsKQEAgLTE0NjYsNiArMTQ3NSwxMSBAQCBNZWRpYVBsYXllcjo6U3VwcG9y
dHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFF
bmdpbgogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOwogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAgIGlmIChwYXJhbWV0ZXJzLmlzTWVkaWFT
b3VyY2UpCisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CisjZW5k
aWYKKwogICAgIC8vIE9ubHkgcmV0dXJuICJJc1N1cHBvcnRlZCIgaWYgdGhlcmUgaXMgbm8gY29k
ZWNzIHBhcmFtZXRlciBmb3Igbm93IGFzIHRoZXJlIGlzIG5vIHdheSB0byBhc2sgUVQgaWYgaXQg
c3VwcG9ydHMgYW4KICAgICAvLyBleHRlbmRlZCBNSU1FIHR5cGUgeWV0LgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43ZjkzNmJjMWE4MTNhM2VhYzQyNmFkMGVkY2Y4MWEwMTdiYTE0NzdmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2Nr
Qm94LmNwcApAQCAtMCwwICsxLDEzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJNb2NrQm94LmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCisjaW5j
bHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvRGF0YVZpZXcu
aD4KKyNpbmNsdWRlIDxydW50aW1lL0ludDhBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNb2NrQm94OjpNb2NrQm94
KEFycmF5QnVmZmVyKiBkYXRhKQoreworICAgIG1fdHlwZSA9IHBlZWtUeXBlKGRhdGEpOworICAg
IG1fbGVuZ3RoID0gcGVla0xlbmd0aChkYXRhKTsKK30KKworU3RyaW5nIE1vY2tCb3g6OnBlZWtU
eXBlKEFycmF5QnVmZmVyKiBkYXRhKQoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAg
ICBSZWZQdHI8SW50OEFycmF5PiBhcnJheSA9IEpTQzo6SW50OEFycmF5OjpjcmVhdGUoZGF0YSwg
MCwgNCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyArK2kpCisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKGFycmF5LT5pdGVtKGkpKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwor
fQorCitzaXplX3QgTW9ja0JveDo6cGVla0xlbmd0aChBcnJheUJ1ZmZlciogZGF0YSkKK3sKKyAg
ICBSZWZQdHI8SlNDOjpEYXRhVmlldz4gdmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShkYXRh
LCAwLCBkYXRhLT5ieXRlTGVuZ3RoKCkpOworICAgIHJldHVybiB2aWV3LT5nZXQ8dWludDMyX3Q+
KDQsIHRydWUpOworfQorCitNb2NrVHJhY2tCb3g6Ok1vY2tUcmFja0JveChBcnJheUJ1ZmZlciog
ZGF0YSkKKyAgICA6IE1vY2tCb3goZGF0YSkKK3sKKyAgICBSZWZQdHI8SlNDOjpEYXRhVmlldz4g
dmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShkYXRhLCAwLCBkYXRhLT5ieXRlTGVuZ3RoKCkp
OworICAgIG1fdHJhY2tJRCA9IHZpZXctPmdldDxpbnQzMl90Pig4LCB0cnVlKTsKKworICAgIFN0
cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBSZWZQdHI8SW50OEFycmF5PiBhcnJheSA9IEpTQzo6
SW50OEFycmF5OjpjcmVhdGUoZGF0YSwgMTIsIDQpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
NDsgKytpKQorICAgICAgICBidWlsZGVyLmFwcGVuZChhcnJheS0+aXRlbShpKSk7CisgICAgbV9j
b2RlYyA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKKworICAgIG1fa2luZCA9IHN0YXRpY19jYXN0PFRy
YWNrS2luZD4odmlldy0+Z2V0PHVpbnQ4X3Q+KDE2LCB0cnVlKSk7Cit9CisKK2NvbnN0IFN0cmlu
ZyYgTW9ja1RyYWNrQm94Ojp0eXBlKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmlu
ZywgdHJhaywgKEFTQ0lJTGl0ZXJhbCgidHJhayIpKSk7CisgICAgcmV0dXJuIHRyYWs7Cit9CisK
K01vY2tJbml0aWFsaXphdGlvbkJveDo6TW9ja0luaXRpYWxpemF0aW9uQm94KEFycmF5QnVmZmVy
KiBkYXRhKQorICAgIDogTW9ja0JveChkYXRhKQoreworICAgIFJlZlB0cjxKU0M6OkRhdGFWaWV3
PiB2aWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGRhdGEsIDAsIGRhdGEtPmJ5dGVMZW5ndGgo
KSk7CisgICAgaW50MzJfdCB0aW1lVmFsdWUgPSB2aWV3LT5nZXQ8aW50MzJfdD4oOCwgdHJ1ZSk7
CisgICAgaW50MzJfdCB0aW1lU2NhbGUgPSB2aWV3LT5nZXQ8aW50MzJfdD4oMTIsIHRydWUpOwor
ICAgIG1fZHVyYXRpb24gPSBNZWRpYVRpbWUodGltZVZhbHVlLCB0aW1lU2NhbGUpOworICAgIAor
ICAgIHNpemVfdCBvZmZzZXQgPSAxNjsKKworICAgIHdoaWxlIChvZmZzZXQgPCBtX2xlbmd0aCkg
eworICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IHN1YkJ1ZmZlciA9IGRhdGEtPnNsaWNlKG9m
ZnNldCk7CisgICAgICAgIGlmIChNb2NrQm94OjpwZWVrVHlwZShzdWJCdWZmZXIuZ2V0KCkpICE9
IE1vY2tUcmFja0JveDo6dHlwZSgpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgTW9j
a1RyYWNrQm94IHRyYWNrQm94KHN1YkJ1ZmZlci5nZXQoKSk7CisgICAgICAgIG9mZnNldCArPSB0
cmFja0JveC5sZW5ndGgoKTsKKyAgICAgICAgbV90cmFja3MuYXBwZW5kKHRyYWNrQm94KTsKKyAg
ICB9Cit9CisKK2NvbnN0IFN0cmluZyYgTW9ja0luaXRpYWxpemF0aW9uQm94Ojp0eXBlKCkKK3sK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgaW5pdCwgKEFTQ0lJTGl0ZXJhbCgiaW5p
dCIpKSk7CisgICAgcmV0dXJuIGluaXQ7Cit9CisKK01vY2tTYW1wbGVCb3g6Ok1vY2tTYW1wbGVC
b3goQXJyYXlCdWZmZXIqIGRhdGEpCisgICAgOiBNb2NrQm94KGRhdGEpCit7CisgICAgUmVmUHRy
PEpTQzo6RGF0YVZpZXc+IHZpZXcgPSBKU0M6OkRhdGFWaWV3OjpjcmVhdGUoZGF0YSwgMCwgZGF0
YS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBpbnQzMl90IHRpbWVTY2FsZSA9IHZpZXctPmdldDxpbnQz
Ml90Pig4LCB0cnVlKTsKKworICAgIGludDMyX3QgdGltZVZhbHVlID0gdmlldy0+Z2V0PGludDMy
X3Q+KDEyLCB0cnVlKTsKKyAgICBtX3ByZXNlbnRhdGlvblRpbWVzdGFtcCA9IE1lZGlhVGltZSh0
aW1lVmFsdWUsIHRpbWVTY2FsZSk7CisKKyAgICB0aW1lVmFsdWUgPSB2aWV3LT5nZXQ8aW50MzJf
dD4oMTYsIHRydWUpOworICAgIG1fZGVjb2RlVGltZXN0YW1wID0gTWVkaWFUaW1lKHRpbWVWYWx1
ZSwgdGltZVNjYWxlKTsKKworICAgIHRpbWVWYWx1ZSA9IHZpZXctPmdldDxpbnQzMl90PigyMCwg
dHJ1ZSk7CisgICAgbV9kdXJhdGlvbiA9IE1lZGlhVGltZSh0aW1lVmFsdWUsIHRpbWVTY2FsZSk7
CisKKyAgICBtX3RyYWNrSUQgPSB2aWV3LT5nZXQ8aW50MzJfdD4oMjQsIHRydWUpOworICAgIG1f
ZmxhZ3MgPSB2aWV3LT5nZXQ8dWludDhfdD4oMjgsIHRydWUpOworfQorCitjb25zdCBTdHJpbmcm
IE1vY2tTYW1wbGVCb3g6OnR5cGUoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5n
LCBzbXBsLCAoQVNDSUlMaXRlcmFsKCJzbXBsIikpKTsKKyAgICByZXR1cm4gc21wbDsKK30KKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVk
aWFzb3VyY2UvTW9ja0JveC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNv
dXJjZS9Nb2NrQm94LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWQ0NDY0NjI5M2VmYjU0MDI4M2Y5NmYxODNjMzRl
Mzc0YjRjYjFmMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svbWVkaWFzb3VyY2UvTW9ja0JveC5oCkBAIC0wLDAgKzEsMTQ3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBNb2NrQm94X2gKKyNkZWZpbmUgTW9ja0JveF9oCisKKyNpZiBFTkFCTEUoTUVESUFfU09V
UkNFKQorCisjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEFycmF5QnVmZmVyOworfQorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEEgTW9ja0JveCByZXByZXNlbnRzIGEgSVNPLUJNRkYg
bGlrZSBkYXRhIHN0cnVjdHVyZS4gRGF0YSBpbiB0aGUKKy8vIHN0cnVjdHVyZSBpcyBsaXR0bGUt
ZW5kaWFuLiBUaGUgbGF5b3V0IG9mIHRoZSBkYXRhIHN0cnVjdHVyZSBhcyBmb2xsb3dzOgorLy8K
Ky8vIDQgYnl0ZXMgOiA0Q0MgOiBpZGVudGlmaWVyCisvLyA0IGJ5dGVzIDogdW5zaWduZWQgOiBs
ZW5ndGgKKy8vIAorY2xhc3MgTW9ja0JveCB7CitwdWJsaWM6CisgICAgc3RhdGljIFN0cmluZyBw
ZWVrVHlwZShKU0M6OkFycmF5QnVmZmVyKik7CisgICAgc3RhdGljIHNpemVfdCBwZWVrTGVuZ3Ro
KEpTQzo6QXJyYXlCdWZmZXIqKTsKKworICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVy
biBtX2xlbmd0aDsgfQorICAgIGNvbnN0IFN0cmluZyYgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZTsgfQorCitwcm90ZWN0ZWQ6CisgICAgTW9ja0JveChKU0M6OkFycmF5QnVmZmVyKik7CisK
KyAgICBzaXplX3QgbV9sZW5ndGg7CisgICAgU3RyaW5nIG1fdHlwZTsKK307CisKKy8vIEEgTW9j
a1RyYWNrQm94IGV4dGVuZHMgTW9ja0JveCBhbmQgZXhwZWN0cyB0aGUgZm9sbG93aW5nCisvLyBk
YXRhIHN0cnVjdHVyZToKKy8vCisvLyA0IGJ5dGVzIDogNENDIDogaWRlbnRpZmllciA9ICd0cmFr
JworLy8gNCBieXRlcyA6IHVuc2lnbmVkIDogbGVuZ3RoID0gMTcKKy8vIDQgYnl0ZXMgOiBzaWdu
ZWQgOiB0cmFjayBJRAorLy8gNCBieXRlcyA6IDRDQyA6IGNvZGVjCisvLyAxIGJ5dGUgIDogdW5z
aWduZWQgOiBraW5kCisvLyAKK2NsYXNzIE1vY2tUcmFja0JveCA6IHB1YmxpYyBNb2NrQm94IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiB0eXBlKCk7CisgICAgTW9ja1RyYWNr
Qm94KEpTQzo6QXJyYXlCdWZmZXIqKTsKKworICAgIGludDMyX3QgdHJhY2tJRCgpIGNvbnN0IHsg
cmV0dXJuIG1fdHJhY2tJRDsgfQorCisgICAgY29uc3QgU3RyaW5nJiBjb2RlYygpIGNvbnN0IHsg
cmV0dXJuIG1fY29kZWM7IH0KKworICAgIGVudW0gVHJhY2tLaW5kIHsgQXVkaW8sIFZpZGVvLCBU
ZXh0IH07CisgICAgVHJhY2tLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KKwor
cHJvdGVjdGVkOgorICAgIHVpbnQ4X3QgbV90cmFja0lEOworICAgIFN0cmluZyBtX2NvZGVjOwor
ICAgIFRyYWNrS2luZCBtX2tpbmQ7Cit9OworCisvLyBBIE1vY2tJbml0aWFsaXphdGlvbkJveCBl
eHRlbmRzIE1vY2tCb3ggYW5kIGNvbnRhaW5zIDAgb3IgbW9yZQorLy8gTW9ja1RyYWNrQm94ZXMu
IEl0IGV4cGVjdHMgdGhlIGZvbGxvd2luZyBkYXRhIHN0cnVjdHVyZToKKy8vCisvLyA0IGJ5dGVz
IDogNENDIDogaWRlbnRpZmllciA9ICdpbml0JworLy8gNCBieXRlcyA6IHVuc2lnbmVkIDogbGVu
Z3RoID0gMTYgKyAoMTMgKiBudW0gdHJhY2tzKQorLy8gNCBieXRlcyA6IHNpZ25lZCA6IGR1cmF0
aW9uIHRpbWUgdmFsdWUKKy8vIDQgYnl0ZXMgOiBzaWduZWQgOiBkdXJhdGlvbiB0aW1lIHNjYWxl
CisvLyBOIGJ5dGVzIDogTW9ja1RyYWNrQm94ZXMgOiB0cmFja3MKKy8vCitjbGFzcyBNb2NrSW5p
dGlhbGl6YXRpb25Cb3ggOiBwdWJsaWMgTW9ja0JveCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNv
bnN0IFN0cmluZyYgdHlwZSgpOworICAgIE1vY2tJbml0aWFsaXphdGlvbkJveChKU0M6OkFycmF5
QnVmZmVyKik7CisKKyAgICBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2R1
cmF0aW9uOyB9CisgICAgY29uc3QgVmVjdG9yPE1vY2tUcmFja0JveD4mIHRyYWNrcygpIGNvbnN0
IHsgcmV0dXJuIG1fdHJhY2tzOyB9CisKK3Byb3RlY3RlZDoKKyAgICBNZWRpYVRpbWUgbV9kdXJh
dGlvbjsKKyAgICBWZWN0b3I8TW9ja1RyYWNrQm94PiBtX3RyYWNrczsKK307CisKKy8vIEEgTW9j
a1NhbXBsZUJveCBleHRlbmRzIE1vY2tCb3ggYW5kIGV4cGVjdHMgdGhlIGZvbGxvd2luZyBkYXRh
IHN0cnVjdHVyZToKKy8vCisvLyA0IGJ5dGVzIDogNENDIDogaWRlbnRpZmllciA9ICdzbXBsJwor
Ly8gNCBieXRlcyA6IHVuc2lnbmVkIDogbGVuZ3RoID0gMjkKKy8vIDQgYnl0ZXMgOiBzaWduZWQg
OiB0aW1lIHNjYWxlCisvLyA0IGJ5dGVzIDogc2lnbmVkIDogcHJlc2VudGF0aW9uIHRpbWUgdmFs
dWUKKy8vIDQgYnl0ZXMgOiBzaWduZWQgOiBkZWNvZGUgdGltZSB2YWx1ZQorLy8gNCBieXRlcyA6
IHNpZ25lZCA6IGR1cmF0aW9uIHRpbWUgdmFsdWUKKy8vIDQgYnl0ZXMgOiBzaWduZWQgOiB0cmFj
ayBJRAorLy8gMSBieXRlICA6IHVuc2lnbmVkIDogZmxhZ3MKKy8vCitjbGFzcyBNb2NrU2FtcGxl
Qm94IDogcHVibGljIE1vY2tCb3ggeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBTdHJpbmcm
IHR5cGUoKTsKKyAgICBNb2NrU2FtcGxlQm94KEpTQzo6QXJyYXlCdWZmZXIqKTsKKworICAgIE1l
ZGlhVGltZSBwcmVzZW50YXRpb25UaW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3ByZXNlbnRh
dGlvblRpbWVzdGFtcDsgfQorICAgIE1lZGlhVGltZSBkZWNvZGVUaW1lc3RhbXAoKSBjb25zdCB7
IHJldHVybiBtX2RlY29kZVRpbWVzdGFtcDsgfQorICAgIE1lZGlhVGltZSBkdXJhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fZHVyYXRpb247IH0KKyAgICBpbnQzMl90IHRyYWNrSUQoKSBjb25zdCB7
IHJldHVybiBtX3RyYWNrSUQ7IH0KKyAgICB1aW50OF90IGZsYWdzKCkgY29uc3QgeyByZXR1cm4g
bV9mbGFnczsgfQorCisgICAgZW51bSB7IElzU3luYyA9IDEgPDwgMCB9OworICAgIGJvb2wgaXNT
eW5jKCkgY29uc3QgeyByZXR1cm4gbV9mbGFncyAmIElzU3luYzsgfQorCitwcm90ZWN0ZWQ6Cisg
ICAgTWVkaWFUaW1lIG1fcHJlc2VudGF0aW9uVGltZXN0YW1wOworICAgIE1lZGlhVGltZSBtX2Rl
Y29kZVRpbWVzdGFtcDsKKyAgICBNZWRpYVRpbWUgbV9kdXJhdGlvbjsKKyAgICBpbnQzMl90IG1f
dHJhY2tJRDsKKyAgICB1aW50OF90IG1fZmxhZ3M7Cit9OworCit9CisKKyNlbmRpZgorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2Uv
TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNWNkMTJjNzVjMmZhZmY0Yjg4NjM3MmJkYzI3NjNhMzEzNjA4MWRlNwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlh
UGxheWVyTWVkaWFTb3VyY2UuY3BwCkBAIC0wLDAgKzEsMjMyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmgiCisK
KyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNl
aG9sZGVyLmgiCisjaW5jbHVkZSAiSFRNTE1lZGlhU291cmNlLmgiCisjaW5jbHVkZSAiTWVkaWFQ
bGF5ZXIuaCIKKyNpbmNsdWRlICJNb2NrTWVkaWFTb3VyY2VQcml2YXRlLmgiCisjaW5jbHVkZSA8
d3RmL0Z1bmN0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIE1lZGlh
UGxheWVyIEVuaWduZSBTdXBwb3J0Cit2b2lkIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpy
ZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyIHJlZ2lzdHJhcikKK3sKKyAg
ICByZWdpc3RyYXIoY3JlYXRlLCBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCAwLCAw
LCAwKTsKK30KKworUGFzc093blB0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IE1vY2tN
ZWRpYVBsYXllck1lZGlhU291cmNlOjpjcmVhdGUoTWVkaWFQbGF5ZXIqIHBsYXllcikKK3sKKyAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlKHBsYXllcikp
OworfQorCitzdGF0aWMgSGFzaFNldDxTdHJpbmc+IG1pbWVUeXBlQ2FjaGUoKQoreworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxTdHJpbmc+LCBjYWNoZSwgKCkpOworICAgIHN0YXRp
YyBib29sIGlzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKKworICAgIGlmICghaXNJbml0aWFsaXplZCkg
eworICAgICAgICBpc0luaXRpYWxpemVkID0gdHJ1ZTsKKyAgICAgICAgY2FjaGUuYWRkKEFTQ0lJ
TGl0ZXJhbCgidmlkZW8vbW9jayIpKTsKKyAgICB9CisKKyAgICByZXR1cm4gY2FjaGU7Cit9CisK
K3ZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmdldFN1cHBvcnRlZFR5cGVzKEhhc2hT
ZXQ8U3RyaW5nPiYgc3VwcG9ydGVkVHlwZXMpCit7CisgICAgc3VwcG9ydGVkVHlwZXMgPSBtaW1l
VHlwZUNhY2hlKCk7Cit9CisKK01lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTW9ja01lZGlhUGxh
eWVyTWVkaWFTb3VyY2U6OnN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworICAgIGlmICghcGFyYW1ldGVycy5pc01lZGlhU291cmNl
KQorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOworCisgICAgaWYg
KCFtaW1lVHlwZUNhY2hlKCkuY29udGFpbnMocGFyYW1ldGVycy50eXBlKSkKKyAgICAgICAgcmV0
dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKKworICAgIGlmIChwYXJhbWV0ZXJzLmNv
ZGVjcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0
ZWQ7CisKKyAgICByZXR1cm4gcGFyYW1ldGVycy5jb2RlY3MgPT0gIm1vY2siID8gTWVkaWFQbGF5
ZXI6OklzU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkOworfQorCitNb2Nr
TWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UoTWVkaWFQ
bGF5ZXIqIHBsYXllcikKKyAgICA6IG1fcGxheWVyKHBsYXllcikKKyAgICAsIG1fcGxheWluZyhm
YWxzZSkKKyAgICAsIG1fY3VycmVudFRpbWUoMCkKKyAgICAsIG1fZHVyYXRpb24oMCkKKyAgICAs
IG1fcmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmcpCisgICAgLCBtX25ldHdvcmtT
dGF0ZShNZWRpYVBsYXllcjo6RW1wdHkpCit7Cit9CisKK01vY2tNZWRpYVBsYXllck1lZGlhU291
cmNlOjp+TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UoKQoreworfQorCit2b2lkIE1vY2tNZWRp
YVBsYXllck1lZGlhU291cmNlOjpsb2FkKGNvbnN0IFN0cmluZyYpCit7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmxvYWQo
Y29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxIVE1MTWVkaWFTb3VyY2U+IHNvdXJjZSkKK3sKKyAg
ICBtX21lZGlhU291cmNlID0gc291cmNlOworICAgIG1fbWVkaWFTb3VyY2VQcml2YXRlID0gTW9j
a01lZGlhU291cmNlUHJpdmF0ZTo6Y3JlYXRlKHRoaXMpOworICAgIG1fbWVkaWFTb3VyY2UtPnNl
dFByaXZhdGVBbmRPcGVuKCptX21lZGlhU291cmNlUHJpdmF0ZSk7Cit9CisKK3ZvaWQgTW9ja01l
ZGlhUGxheWVyTWVkaWFTb3VyY2U6OmNhbmNlbExvYWQoKQoreworfQorCit2b2lkIE1vY2tNZWRp
YVBsYXllck1lZGlhU291cmNlOjpwbGF5KCkKK3sKKyAgICBtX3BsYXlpbmcgPSAxOworICAgIGNh
bGxPbk1haW5UaHJlYWQoYmluZCgmTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmFkdmFuY2VD
dXJyZW50VGltZSwgdGhpcykpOworfQorCit2b2lkIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNl
OjpwYXVzZSgpCit7CisgICAgbV9wbGF5aW5nID0gMDsKK30KKworSW50U2l6ZSBNb2NrTWVkaWFQ
bGF5ZXJNZWRpYVNvdXJjZTo6bmF0dXJhbFNpemUoKSBjb25zdAoreworICAgIHJldHVybiBJbnRT
aXplKCk7Cit9CisKK2Jvb2wgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6Omhhc1ZpZGVvKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRpYVNvdXJjZVByaXZhdGUgPyBtX21lZGlhU291cmNl
UHJpdmF0ZS0+aGFzVmlkZW8oKSA6IGZhbHNlOworfQorCitib29sIE1vY2tNZWRpYVBsYXllck1l
ZGlhU291cmNlOjpoYXNBdWRpbygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWVkaWFTb3VyY2VQ
cml2YXRlID8gbV9tZWRpYVNvdXJjZVByaXZhdGUtPmhhc0F1ZGlvKCkgOiBmYWxzZTsKK30KKwor
dm9pZCBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6c2V0VmlzaWJsZShib29sKQoreworfQor
Citib29sIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpzZWVraW5nKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnBh
dXNlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX3BsYXlpbmc7Cit9CisKK01lZGlhUGxheWVy
OjpOZXR3b3JrU3RhdGUgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6Om5ldHdvcmtTdGF0ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbmV0d29ya1N0YXRlOworfQorCitNZWRpYVBsYXllcjo6
UmVhZHlTdGF0ZSBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6cmVhZHlTdGF0ZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fcmVhZHlTdGF0ZTsKK30KKworUGFzc1JlZlB0cjxUaW1lUmFuZ2Vz
PiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6YnVmZmVyZWQoKSBjb25zdAoreworICAgIHJl
dHVybiBtX21lZGlhU291cmNlID8gbV9tZWRpYVNvdXJjZS0+YnVmZmVyZWQoKSA6IFRpbWVSYW5n
ZXM6OmNyZWF0ZSgpOworfQorCitib29sIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpkaWRM
b2FkaW5nUHJvZ3Jlc3MoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBN
b2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6c2V0U2l6ZShjb25zdCBJbnRTaXplJikKK3sKK30K
Kwordm9pZCBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgSW50UmVjdCYpCit7Cit9CisKK2RvdWJsZSBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNv
dXJjZTo6Y3VycmVudFRpbWVEb3VibGUoKSBjb25zdAoreworICAgIHJldHVybiBtX2N1cnJlbnRU
aW1lOworfQorCitkb3VibGUgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmR1cmF0aW9uRG91
YmxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kdXJhdGlvbjsKK30KKwordm9pZCBNb2NrTWVk
aWFQbGF5ZXJNZWRpYVNvdXJjZTo6c2Vla0RvdWJsZShkb3VibGUgdGltZSkKK3sKKyAgICBtX2N1
cnJlbnRUaW1lID0gc3RkOjptaW4odGltZSwgbV9kdXJhdGlvbik7CisgICAgbV9wbGF5ZXItPnRp
bWVDaGFuZ2VkKCk7CisKKyAgICBpZiAobV9wbGF5aW5nKQorICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKGJpbmQoJk1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjphZHZhbmNlQ3VycmVudFRpbWUs
IHRoaXMpKTsKK30KKwordm9pZCBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6YWR2YW5jZUN1
cnJlbnRUaW1lKCkKK3sKKyAgICBSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQgPSB0aGlzLT5i
dWZmZXJlZCgpOworICAgIHNpemVfdCBwb3MgPSBidWZmZXJlZC0+ZmluZChtX2N1cnJlbnRUaW1l
KTsKKyAgICBpZiAocG9zID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2N1
cnJlbnRUaW1lID0gc3RkOjptaW4obV9kdXJhdGlvbiwgYnVmZmVyZWQtPmVuZChwb3MsIElHTk9S
RV9FWENFUFRJT04pKTsKKyAgICBtX3BsYXllci0+dGltZUNoYW5nZWQoKTsKK30KKwordm9pZCBN
b2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6dXBkYXRlRHVyYXRpb24oZG91YmxlIGR1cmF0aW9u
KQoreworICAgIGlmIChtX2R1cmF0aW9uID09IGR1cmF0aW9uKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2R1cmF0aW9uID0gZHVyYXRpb247CisgICAgbV9wbGF5ZXItPmR1cmF0aW9uQ2hhbmdl
ZCgpOworfQorCit2b2lkIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpzZXRSZWFkeVN0YXRl
KE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUpCit7CisgICAgaWYgKHJlYWR5U3Rh
dGUgPT0gbV9yZWFkeVN0YXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3JlYWR5U3RhdGUg
PSByZWFkeVN0YXRlOworICAgIG1fcGxheWVyLT5yZWFkeVN0YXRlQ2hhbmdlZCgpOworfQorCit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjc5YWU0Y2YwZTFjMjE3Zjg5N2U3MDdkMWNjYzljMWM1YWU3YmYxYjkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tN
ZWRpYVBsYXllck1lZGlhU291cmNlLmgKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5k
ZWYgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2VfaAorI2RlZmluZSBNb2NrTWVkaWFQbGF5ZXJN
ZWRpYVNvdXJjZV9oCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCisjaW5jbHVkZSAiTWVk
aWFQbGF5ZXJQcml2YXRlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFT
b3VyY2U7CitjbGFzcyBNb2NrTWVkaWFTb3VyY2VQcml2YXRlOworCitjbGFzcyBNb2NrTWVkaWFQ
bGF5ZXJNZWRpYVNvdXJjZSA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2Ugewor
cHVibGljOgorICAgIC8vIE1lZGlhUGxheWVyIEVuZ2luZSBTdXBwb3J0CisgICAgc3RhdGljIHZv
aWQgcmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhcik7CisgICAgc3RhdGlj
IFBhc3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGUoTWVkaWFQbGF5
ZXIqKTsKKyAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZz4m
IHR5cGVzKTsKKyAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5
cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYpOworCisgICAgdmlydHVhbCB+
TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UoKTsKKworICAgIC8vIE1lZGlhUGxheWVyUHJpdmF0
ZSBPdmVycmlkZXMKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZChjb25zdCBTdHJpbmcmIHVybCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJiB1cmwsIFBhc3NSZWZQ
dHI8SFRNTE1lZGlhU291cmNlPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbExv
YWQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGxheSgpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBwYXVzZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgSW50U2l6ZSBuYXR1cmFs
U2l6ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBoYXNWaWRlbygpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBoYXNBdWRpbygpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlKGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
Ym9vbCBzZWVraW5nKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHBhdXNlZCgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBu
ZXR3b3JrU3RhdGUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpS
ZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBw
YWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBkb3VibGUgY3VycmVudFRpbWVEb3VibGUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIGRvdWJsZSBkdXJhdGlvbkRvdWJsZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBzZWVrRG91YmxlKGRvdWJsZSB0aW1lKSBPVkVSUklERTsKKworICAgIHZvaWQgYWR2YW5j
ZUN1cnJlbnRUaW1lKCk7CisgICAgdm9pZCB1cGRhdGVEdXJhdGlvbihkb3VibGUpOworICAgIHZv
aWQgc2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSk7CisKK3ByaXZhdGU6Cisg
ICAgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UoTWVkaWFQbGF5ZXIqKTsKKworICAgIE1lZGlh
UGxheWVyKiBtX3BsYXllcjsKKyAgICBSZWZQdHI8SFRNTE1lZGlhU291cmNlPiBtX21lZGlhU291
cmNlOworICAgIFJlZlB0cjxNb2NrTWVkaWFTb3VyY2VQcml2YXRlPiBtX21lZGlhU291cmNlUHJp
dmF0ZTsKKworICAgIGJvb2wgbV9wbGF5aW5nOworICAgIGRvdWJsZSBtX2N1cnJlbnRUaW1lOwor
ICAgIGRvdWJsZSBtX2R1cmF0aW9uOworICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIG1fcmVh
ZHlTdGF0ZTsKKyAgICBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG1fbmV0d29ya1N0YXRlOwor
fTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NPVVJDRSkKKworI2VuZGlmIC8vIE1v
Y2tNZWRpYVBsYXllck1lZGlhU291cmNlX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhU291cmNlUHJp
dmF0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjNjOWM3ZDVlN2QyNTU5NmI3MzRhYTFkYmQ0NzI3Zjk3Nzk0
MTI2NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVk
aWFzb3VyY2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5jcHAKQEAgLTAsMCArMSwxNTMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9ja01lZGlhU291cmNlUHJp
dmF0ZS5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKworI2luY2x1ZGUgIkNvbnRlbnRU
eXBlLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCisjaW5jbHVkZSAi
TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRlICJNb2NrU291cmNlQnVmZmVy
UHJpdmF0ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZlB0cjxNb2NrTWVkaWFTb3Vy
Y2VQcml2YXRlPiBNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjpjcmVhdGUoTW9ja01lZGlhUGxheWVy
TWVkaWFTb3VyY2UqIHBhcmVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tNZWRp
YVNvdXJjZVByaXZhdGUocGFyZW50KSk7Cit9CisKK01vY2tNZWRpYVNvdXJjZVByaXZhdGU6Ok1v
Y2tNZWRpYVNvdXJjZVByaXZhdGUoTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UqIHBhcmVudCkK
KyAgICA6IG1fcGxheWVyKHBhcmVudCkKKyAgICAsIG1fZHVyYXRpb24oMCkKKyAgICAsIG1faXNF
bmRlZChmYWxzZSkKK3sKK30KKworTW9ja01lZGlhU291cmNlUHJpdmF0ZTo6fk1vY2tNZWRpYVNv
dXJjZVByaXZhdGUoKQoreworfQorCitNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1cyBNb2Nr
TWVkaWFTb3VyY2VQcml2YXRlOjphZGRTb3VyY2VCdWZmZXIoY29uc3QgQ29udGVudFR5cGUmIGNv
bnRlbnRUeXBlLCBSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZT4mIG91dFByaXZhdGUpCit7Cisg
ICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBwYXJhbWV0ZXJzOworICAgIHBhcmFtZXRl
cnMuaXNNZWRpYVNvdXJjZSA9IHRydWU7CisgICAgcGFyYW1ldGVycy50eXBlID0gY29udGVudFR5
cGUudHlwZSgpOworICAgIHBhcmFtZXRlcnMuY29kZWNzID0gY29udGVudFR5cGUucGFyYW1ldGVy
KEFTQ0lJTGl0ZXJhbCgiY29kZWNzIikpOworICAgIGlmIChNb2NrTWVkaWFQbGF5ZXJNZWRpYVNv
dXJjZTo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpID09IE1lZGlhUGxheWVyOjpJc05vdFN1cHBv
cnRlZCkKKyAgICAgICAgcmV0dXJuIE5vdFN1cHBvcnRlZDsKKworICAgIG1fc291cmNlQnVmZmVy
cy5hcHBlbmQoTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmNyZWF0ZSh0aGlzKSk7CisgICAgb3V0
UHJpdmF0ZSA9IG1fc291cmNlQnVmZmVycy5sYXN0KCk7CisKKyAgICByZXR1cm4gT2s7Cit9CisK
K3ZvaWQgTW9ja01lZGlhU291cmNlUHJpdmF0ZTo6cmVtb3ZlU291cmNlQnVmZmVyKFNvdXJjZUJ1
ZmZlclByaXZhdGUqIGJ1ZmZlcikKK3sKKyAgICBBU1NFUlQobV9zb3VyY2VCdWZmZXJzLmNvbnRh
aW5zKGJ1ZmZlcikpOworCisgICAgc2l6ZV90IHBvcyA9IG1fYWN0aXZlU291cmNlQnVmZmVycy5m
aW5kKGJ1ZmZlcik7CisgICAgaWYgKHBvcyAhPSBub3RGb3VuZCkKKyAgICAgICAgbV9hY3RpdmVT
b3VyY2VCdWZmZXJzLnJlbW92ZShwb3MpOworCisgICAgcG9zID0gbV9zb3VyY2VCdWZmZXJzLmZp
bmQoYnVmZmVyKTsKKyAgICBtX3NvdXJjZUJ1ZmZlcnMucmVtb3ZlKHBvcyk7Cit9CisKK2RvdWJs
ZSBNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjpkdXJhdGlvbigpCit7CisgICAgcmV0dXJuIG1fZHVy
YXRpb247Cit9CisKK3ZvaWQgTW9ja01lZGlhU291cmNlUHJpdmF0ZTo6c2V0RHVyYXRpb24oZG91
YmxlIGR1cmF0aW9uKQoreworICAgIGlmIChkdXJhdGlvbiA9PSBtX2R1cmF0aW9uKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2R1cmF0aW9uID0gZHVyYXRpb247CisgICAgbV9wbGF5ZXItPnVw
ZGF0ZUR1cmF0aW9uKGR1cmF0aW9uKTsKK30KKwordm9pZCBNb2NrTWVkaWFTb3VyY2VQcml2YXRl
OjptYXJrRW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1TdGF0dXMgc3RhdHVzKQoreworICAgIFVOVVNF
RF9QQVJBTShzdGF0dXMpOworICAgIG1faXNFbmRlZCA9IHRydWU7Cit9CisKK3ZvaWQgTW9ja01l
ZGlhU291cmNlUHJpdmF0ZTo6dW5tYXJrRW5kT2ZTdHJlYW0oKQoreworICAgIG1faXNFbmRlZCA9
IGZhbHNlOworfQorCitNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBNb2NrTWVkaWFTb3VyY2VQcml2
YXRlOjpyZWFkeVN0YXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wbGF5ZXItPnJlYWR5U3Rh
dGUoKTsKK30KKwordm9pZCBNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjpzZXRSZWFkeVN0YXRlKE1l
ZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUpCit7CisgICAgbV9wbGF5ZXItPnNldFJl
YWR5U3RhdGUocmVhZHlTdGF0ZSk7Cit9CisKK3ZvaWQgTW9ja01lZGlhU291cmNlUHJpdmF0ZTo6
c291cmNlQnVmZmVyUHJpdmF0ZURpZENoYW5nZUFjdGl2ZVN0YXRlKE1vY2tTb3VyY2VCdWZmZXJQ
cml2YXRlKiBidWZmZXIsIGJvb2wgYWN0aXZlKQoreworICAgIGlmIChhY3RpdmUgJiYgIW1fYWN0
aXZlU291cmNlQnVmZmVycy5jb250YWlucyhidWZmZXIpKQorICAgICAgICBtX2FjdGl2ZVNvdXJj
ZUJ1ZmZlcnMuYXBwZW5kKGJ1ZmZlcik7CisKKyAgICBpZiAoIWFjdGl2ZSkgeworICAgICAgICBz
aXplX3QgcG9zaXRpb24gPSBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMuZmluZChidWZmZXIpOworICAg
ICAgICBpZiAocG9zaXRpb24gIT0gbm90Rm91bmQpCisgICAgICAgICAgICBtX2FjdGl2ZVNvdXJj
ZUJ1ZmZlcnMucmVtb3ZlKHBvc2l0aW9uKTsKKyAgICB9Cit9CisKK3N0YXRpYyBib29sIE1vY2tT
b3VyY2VCdWZmZXJQcml2YXRlSGFzQXVkaW8oUGFzc1JlZlB0cjxNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZT4gcHJwU291cmNlQnVmZmVyKQoreworICAgIFJlZlB0cjxNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZT4gc291cmNlQnVmZmVyID0gcHJwU291cmNlQnVmZmVyOworICAgIHJldHVybiBzb3VyY2VC
dWZmZXItPmhhc0F1ZGlvKCk7Cit9CisKK2Jvb2wgTW9ja01lZGlhU291cmNlUHJpdmF0ZTo6aGFz
QXVkaW8oKSBjb25zdAoreworICAgIHJldHVybiBzdGQ6OmFueV9vZihtX2FjdGl2ZVNvdXJjZUJ1
ZmZlcnMuYmVnaW4oKSwgbV9hY3RpdmVTb3VyY2VCdWZmZXJzLmVuZCgpLCBNb2NrU291cmNlQnVm
ZmVyUHJpdmF0ZUhhc0F1ZGlvKTsKK30KKworc3RhdGljIGJvb2wgTW9ja1NvdXJjZUJ1ZmZlclBy
aXZhdGVIYXNWaWRlbyhQYXNzUmVmUHRyPE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlPiBwcnBTb3Vy
Y2VCdWZmZXIpCit7CisgICAgUmVmUHRyPE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlPiBzb3VyY2VC
dWZmZXIgPSBwcnBTb3VyY2VCdWZmZXI7CisgICAgcmV0dXJuIHNvdXJjZUJ1ZmZlci0+aGFzVmlk
ZW8oKTsKK30KKworYm9vbCBNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjpoYXNWaWRlbygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHN0ZDo6YW55X29mKG1fYWN0aXZlU291cmNlQnVmZmVycy5iZWdpbigp
LCBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMuZW5kKCksIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlSGFz
VmlkZW8pOworfQorCit9OworCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJjZVByaXZh
dGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41NTNlNDdlODk5NzljNzU0MjYyMTBiNzA1OWE4ODI3YTVmOTFhMDg0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNv
dXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgTW9ja01lZGlhU291cmNlUHJpdmF0ZV9oCisjZGVmaW5lIE1vY2tNZWRpYVNvdXJj
ZVByaXZhdGVfaAorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKworI2luY2x1ZGUgIk1lZGlh
U291cmNlUHJpdmF0ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1vY2tNZWRp
YVBsYXllck1lZGlhU291cmNlOworY2xhc3MgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU7CitjbGFz
cyBUaW1lUmFuZ2VzOworCitjbGFzcyBNb2NrTWVkaWFTb3VyY2VQcml2YXRlIDogcHVibGljIE1l
ZGlhU291cmNlUHJpdmF0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxNb2NrTWVkaWFT
b3VyY2VQcml2YXRlPiBjcmVhdGUoTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UqKTsKKyAgICB2
aXJ0dWFsIH5Nb2NrTWVkaWFTb3VyY2VQcml2YXRlKCk7CisKKyAgICAvLyBNZWRpYVNvdXJjZVBy
aXZhdGUgT3ZlcnJpZGVzCisgICAgdmlydHVhbCBBZGRTdGF0dXMgYWRkU291cmNlQnVmZmVyKGNv
bnN0IENvbnRlbnRUeXBlJiwgUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGU+JikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBkb3VibGUgZHVyYXRpb24oKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0RHVyYXRpb24oZG91YmxlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbWFya0Vu
ZE9mU3RyZWFtKEVuZE9mU3RyZWFtU3RhdHVzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
dW5tYXJrRW5kT2ZTdHJlYW0oKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpS
ZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSkgT1ZFUlJJREU7CisKKyAgICBj
b25zdCBWZWN0b3I8TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUqPiYgYWN0aXZlU291cmNlQnVmZmVy
cygpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlU291cmNlQnVmZmVyczsgfQorCisgICAgYm9vbCBo
YXNBdWRpbygpIGNvbnN0OworICAgIGJvb2wgaGFzVmlkZW8oKSBjb25zdDsKKworICAgIE1vY2tN
ZWRpYVBsYXllck1lZGlhU291cmNlKiBwbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXllcjsg
fQorCitwcml2YXRlOgorICAgIE1vY2tNZWRpYVNvdXJjZVByaXZhdGUoTW9ja01lZGlhUGxheWVy
TWVkaWFTb3VyY2UqKTsKKworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZENoYW5nZUFj
dGl2ZVN0YXRlKE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKiwgYm9vbCBhY3RpdmUpOworICAgIHZv
aWQgcmVtb3ZlU291cmNlQnVmZmVyKFNvdXJjZUJ1ZmZlclByaXZhdGUqKTsKKworICAgIGZyaWVu
ZCBjbGFzcyBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTsKKworICAgIE1vY2tNZWRpYVBsYXllck1l
ZGlhU291cmNlKiBtX3BsYXllcjsKKyAgICBkb3VibGUgbV9kdXJhdGlvbjsKKyAgICBWZWN0b3I8
UmVmUHRyPE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlPj4gbV9zb3VyY2VCdWZmZXJzOworICAgIFZl
Y3RvcjxNb2NrU291cmNlQnVmZmVyUHJpdmF0ZSo+IG1fYWN0aXZlU291cmNlQnVmZmVyczsKKyAg
ICBib29sIG1faXNFbmRlZDsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TT1VS
Q0UpCisKKyNlbmRpZiAvLyBNb2NrTWVkaWFTb3VyY2VQcml2YXRlX2gKKwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVy
UHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01v
Y2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMzg3ZjI5NjkyZGMzYThiOGU5
YTNlOWJlZWI5NTQwYzJlMmUwYWEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKQEAg
LTAsMCArMSwyMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaCIKKworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisK
KyNpbmNsdWRlICJNZWRpYURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIK
KyNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgorI2luY2x1ZGUgIk1vY2tCb3guaCIKKyNpbmNsdWRl
ICJNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5oIgorI2luY2x1ZGUgIk1vY2tNZWRpYVNvdXJj
ZVByaXZhdGUuaCIKKyNpbmNsdWRlICJNb2NrVHJhY2tzLmgiCisjaW5jbHVkZSAiU291cmNlQnVm
ZmVyUHJpdmF0ZUNsaWVudC5oIgorI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDxydW50aW1lL0Fy
cmF5QnVmZmVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTW9ja01lZGlhU2Ft
cGxlIDogcHVibGljIE1lZGlhU2FtcGxlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPE1v
Y2tNZWRpYVNhbXBsZT4gY3JlYXRlKE1vY2tTYW1wbGVCb3ggYm94KSB7IHJldHVybiBhZG9wdFJl
ZihuZXcgTW9ja01lZGlhU2FtcGxlKGJveCkpOyB9CisgICAgdmlydHVhbCB+TW9ja01lZGlhU2Ft
cGxlKCkgeyB9CisKKyAgICB2aXJ0dWFsIE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lKCkgY29u
c3QgT1ZFUlJJREUgeyByZXR1cm4gbV9ib3gucHJlc2VudGF0aW9uVGltZXN0YW1wKCk7IH0KKyAg
ICB2aXJ0dWFsIE1lZGlhVGltZSBkZWNvZGVUaW1lKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
bV9ib3guZGVjb2RlVGltZXN0YW1wKCk7IH0KKyAgICB2aXJ0dWFsIE1lZGlhVGltZSBkdXJhdGlv
bigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fYm94LmR1cmF0aW9uKCk7IH0KKyAgICB2aXJ0
dWFsIEF0b21pY1N0cmluZyB0cmFja0lEKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9pZDsg
fQorCisgICAgdmlydHVhbCBTYW1wbGVGbGFncyBmbGFncygpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIE5vbmU7IH0KKyAgICB2aXJ0dWFsIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2FtcGxlKCkg
T1ZFUlJJREU7CisKK3Byb3RlY3RlZDoKKyAgICBNb2NrTWVkaWFTYW1wbGUoTW9ja1NhbXBsZUJv
eCBib3gpCisgICAgICAgIDogbV9ib3goYm94KQorICAgICAgICAsIG1faWQoU3RyaW5nOjpmb3Jt
YXQoIiVkIiwgYm94LnRyYWNrSUQoKSkpCisgICAgeworICAgIH0KKworICAgIE1vY2tTYW1wbGVC
b3ggbV9ib3g7CisgICAgQXRvbWljU3RyaW5nIG1faWQ7Cit9OworCitQbGF0Zm9ybVNhbXBsZSBN
b2NrTWVkaWFTYW1wbGU6OnBsYXRmb3JtU2FtcGxlKCkKK3sKKyAgICBQbGF0Zm9ybVNhbXBsZSBz
YW1wbGUgPSB7IFBsYXRmb3JtU2FtcGxlOjpNb2NrU2FtcGxlQm94VHlwZSwgeyAmbV9ib3ggfSB9
OworICAgIHJldHVybiBzYW1wbGU7Cit9CisKK2NsYXNzIE1vY2tNZWRpYURlc2NyaXB0aW9uIDog
cHVibGljIE1lZGlhRGVzY3JpcHRpb24geworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8TW9j
a01lZGlhRGVzY3JpcHRpb24+IGNyZWF0ZShNb2NrVHJhY2tCb3ggYm94KSB7IHJldHVybiBhZG9w
dFJlZihuZXcgTW9ja01lZGlhRGVzY3JpcHRpb24oYm94KSk7IH0KKyAgICB2aXJ0dWFsIH5Nb2Nr
TWVkaWFEZXNjcmlwdGlvbigpIHsgfQorCisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgY29kZWMo
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2JveC5jb2RlYygpOyB9CisgICAgdmlydHVhbCBi
b29sIGlzVmlkZW8oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2JveC5raW5kKCkgPT0gTW9j
a1RyYWNrQm94OjpWaWRlbzsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlvKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gbV9ib3gua2luZCgpID09IE1vY2tUcmFja0JveDo6QXVkaW87IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaXNUZXh0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9ib3gua2lu
ZCgpID09IE1vY2tUcmFja0JveDo6VGV4dDsgfQorCitwcm90ZWN0ZWQ6CisgICAgTW9ja01lZGlh
RGVzY3JpcHRpb24oTW9ja1RyYWNrQm94IGJveCkgOiBtX2JveChib3gpIHsgfQorICAgIE1vY2tU
cmFja0JveCBtX2JveDsKK307CisKK1JlZlB0cjxNb2NrU291cmNlQnVmZmVyUHJpdmF0ZT4gTW9j
a1NvdXJjZUJ1ZmZlclByaXZhdGU6OmNyZWF0ZShNb2NrTWVkaWFTb3VyY2VQcml2YXRlKiBwYXJl
bnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZShw
YXJlbnQpKTsKK30KKworTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6Ok1vY2tTb3VyY2VCdWZmZXJQ
cml2YXRlKE1vY2tNZWRpYVNvdXJjZVByaXZhdGUqIHBhcmVudCkKKyAgICA6IG1fcGFyZW50KHBh
cmVudCkKKyAgICAsIG1fY2xpZW50KDApCit7Cit9CisKK01vY2tTb3VyY2VCdWZmZXJQcml2YXRl
Ojp+TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUoKQoreworfQorCit2b2lkIE1vY2tTb3VyY2VCdWZm
ZXJQcml2YXRlOjpzZXRDbGllbnQoU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCogY2xpZW50KQor
eworICAgIG1fY2xpZW50ID0gY2xpZW50OworfQorCit2b2lkIE1vY2tTb3VyY2VCdWZmZXJQcml2
YXRlOjphcHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQor
eworICAgIG1faW5wdXRCdWZmZXIuYXBwZW5kKGRhdGEsIGxlbmd0aCk7CisKKyAgICB3aGlsZSAo
bV9pbnB1dEJ1ZmZlci5zaXplKCkpIHsKKyAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZm
ZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG1faW5wdXRCdWZmZXIuZGF0YSgpLCBtX2lucHV0QnVm
ZmVyLnNpemUoKSk7CisgICAgICAgIHNpemVfdCBib3hMZW5ndGggPSBNb2NrQm94OjpwZWVrTGVu
Z3RoKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIGlmIChib3hMZW5ndGggPiBidWZmZXItPmJ5dGVM
ZW5ndGgoKSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIFN0cmluZyB0eXBlID0gTW9j
a0JveDo6cGVla1R5cGUoYnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKHR5cGUgPT0gTW9ja0lu
aXRpYWxpemF0aW9uQm94Ojp0eXBlKCkpIHsKKyAgICAgICAgICAgIE1vY2tJbml0aWFsaXphdGlv
bkJveCBpbml0Qm94ID0gTW9ja0luaXRpYWxpemF0aW9uQm94KGJ1ZmZlci5nZXQoKSk7CisgICAg
ICAgICAgICBkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGluaXRCb3gpOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKHR5cGUgPT0gTW9ja1NhbXBsZUJveDo6dHlwZSgpKSB7CisgICAg
ICAgICAgICBNb2NrU2FtcGxlQm94IHNhbXBsZUJveCA9IE1vY2tTYW1wbGVCb3goYnVmZmVyLmdl
dCgpKTsKKyAgICAgICAgICAgIGRpZFJlY2VpdmVTYW1wbGUoc2FtcGxlQm94KTsKKyAgICAgICAg
fQorCisgICAgICAgIG1faW5wdXRCdWZmZXIucmVtb3ZlKDAsIGJveExlbmd0aCk7CisgICAgfQor
fQorCit2b2lkIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlSW5pdGlhbGl6YXRp
b25TZWdtZW50KGNvbnN0IE1vY2tJbml0aWFsaXphdGlvbkJveCYgaW5pdEJveCkKK3sKKyAgICBp
ZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBTb3VyY2VCdWZmZXJQcml2YXRl
Q2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQgc2VnbWVudDsKKyAgICBzZWdtZW50LmR1cmF0
aW9uID0gaW5pdEJveC5kdXJhdGlvbigpOworCisgICAgZm9yIChhdXRvIGl0ID0gaW5pdEJveC50
cmFja3MoKS5iZWdpbigpOyBpdCAhPSBpbml0Qm94LnRyYWNrcygpLmVuZCgpOyArK2l0KSB7Cisg
ICAgICAgIE1vY2tUcmFja0JveCB0cmFja0JveCA9ICppdDsKKyAgICAgICAgaWYgKHRyYWNrQm94
LmtpbmQoKSA9PSBNb2NrVHJhY2tCb3g6OlZpZGVvKSB7CisgICAgICAgICAgICBTb3VyY2VCdWZm
ZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ6OlZpZGVvVHJhY2tJbmZvcm1h
dGlvbiBpbmZvOworICAgICAgICAgICAgaW5mby50cmFjayA9IE1vY2tWaWRlb1RyYWNrUHJpdmF0
ZTo6Y3JlYXRlKHRyYWNrQm94KTsKKyAgICAgICAgICAgIGluZm8uZGVzY3JpcHRpb24gPSBNb2Nr
TWVkaWFEZXNjcmlwdGlvbjo6Y3JlYXRlKHRyYWNrQm94KTsKKyAgICAgICAgICAgIHNlZ21lbnQu
dmlkZW9UcmFja3MuYXBwZW5kKGluZm8pOworICAgICAgICB9IGVsc2UgaWYgKHRyYWNrQm94Lmtp
bmQoKSA9PSBNb2NrVHJhY2tCb3g6OkF1ZGlvKSB7CisgICAgICAgICAgICBTb3VyY2VCdWZmZXJQ
cml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ6OkF1ZGlvVHJhY2tJbmZvcm1hdGlv
biBpbmZvOworICAgICAgICAgICAgaW5mby50cmFjayA9IE1vY2tBdWRpb1RyYWNrUHJpdmF0ZTo6
Y3JlYXRlKHRyYWNrQm94KTsKKyAgICAgICAgICAgIGluZm8uZGVzY3JpcHRpb24gPSBNb2NrTWVk
aWFEZXNjcmlwdGlvbjo6Y3JlYXRlKHRyYWNrQm94KTsKKyAgICAgICAgICAgIHNlZ21lbnQuYXVk
aW9UcmFja3MuYXBwZW5kKGluZm8pOworICAgICAgICB9IGVsc2UgaWYgKHRyYWNrQm94LmtpbmQo
KSA9PSBNb2NrVHJhY2tCb3g6OlRleHQpIHsKKyAgICAgICAgICAgIFNvdXJjZUJ1ZmZlclByaXZh
dGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDo6VGV4dFRyYWNrSW5mb3JtYXRpb24gaW5m
bzsKKyAgICAgICAgICAgIGluZm8udHJhY2sgPSBNb2NrVGV4dFRyYWNrUHJpdmF0ZTo6Y3JlYXRl
KHRyYWNrQm94KTsKKyAgICAgICAgICAgIGluZm8uZGVzY3JpcHRpb24gPSBNb2NrTWVkaWFEZXNj
cmlwdGlvbjo6Y3JlYXRlKHRyYWNrQm94KTsKKyAgICAgICAgICAgIHNlZ21lbnQudGV4dFRyYWNr
cy5hcHBlbmQoaW5mbyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX2NsaWVudC0+c291cmNl
QnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQodGhpcywgc2VnbWVu
dCk7Cit9CisKKwordm9pZCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZVNhbXBs
ZShjb25zdCBNb2NrU2FtcGxlQm94JiBzYW1wbGVCb3gpCit7CisgICAgaWYgKCFtX2NsaWVudCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRS
ZWNlaXZlU2FtcGxlKHRoaXMsIE1vY2tNZWRpYVNhbXBsZTo6Y3JlYXRlKHNhbXBsZUJveCkpOwor
fQorCit2b2lkIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjphYm9ydCgpCit7Cit9CisKK3ZvaWQg
TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OnJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKQoreworICAg
IG1fcGFyZW50LT5yZW1vdmVTb3VyY2VCdWZmZXIodGhpcyk7Cit9CisKK01lZGlhUGxheWVyOjpS
ZWFkeVN0YXRlIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpyZWFkeVN0YXRlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9wYXJlbnQtPnBsYXllcigpLT5yZWFkeVN0YXRlKCk7Cit9CisKK3ZvaWQg
TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5
U3RhdGUgcmVhZHlTdGF0ZSkKK3sKKyAgICBtX3BhcmVudC0+cGxheWVyKCktPnNldFJlYWR5U3Rh
dGUocmVhZHlTdGF0ZSk7Cit9CisKK2Jvb2wgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6Omhhc1Zp
ZGVvKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICByZXR1cm4gbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVIYXNWaWRlbyh0aGlz
KTsKK30KKworYm9vbCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6aGFzQXVkaW8oKSBjb25zdAor
eworICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVy
biBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUhhc0F1ZGlvKHRoaXMpOworfQorCit9CisK
KyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlh
c291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjU2YmJmOWM4NGFjMTMxYWRhODQ2NjNkZDA2M2Y3MGEyZGMzMGQzMAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1
ZmZlclByaXZhdGUuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBNb2NrU291
cmNlQnVmZmVyUHJpdmF0ZV9oCisjZGVmaW5lIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlX2gKKwor
I2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisKKyNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRl
LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+
CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVk
aW9UcmFja1ByaXZhdGU7CitjbGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOworY2xhc3MgTW9j
a0luaXRpYWxpemF0aW9uQm94OworY2xhc3MgTW9ja01lZGlhU291cmNlUHJpdmF0ZTsKK2NsYXNz
IE1vY2tTYW1wbGVCb3g7CitjbGFzcyBUaW1lUmFuZ2VzOworY2xhc3MgVmlkZW9UcmFja1ByaXZh
dGU7CisKK2NsYXNzIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlIDogcHVibGljIFNvdXJjZUJ1ZmZl
clByaXZhdGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8TW9ja1NvdXJjZUJ1ZmZlclBy
aXZhdGU+IGNyZWF0ZShNb2NrTWVkaWFTb3VyY2VQcml2YXRlKik7CisgICAgdmlydHVhbCB+TW9j
a1NvdXJjZUJ1ZmZlclByaXZhdGUoKTsKKworICAgIGJvb2wgaGFzVmlkZW8oKSBjb25zdDsKKyAg
ICBib29sIGhhc0F1ZGlvKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgTW9ja1Nv
dXJjZUJ1ZmZlclByaXZhdGUoTW9ja01lZGlhU291cmNlUHJpdmF0ZSopOworCisgICAgLy8gU291
cmNlQnVmZmVyUHJpdmF0ZSBvdmVycmlkZXMKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KFNv
dXJjZUJ1ZmZlclByaXZhdGVDbGllbnQqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBw
ZW5kKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGFib3J0KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJl
bW92ZWRGcm9tTWVkaWFTb3VyY2UoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIE1lZGlhUGxheWVy
OjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSkgT1ZFUlJJREU7CisKKyAg
ICB2b2lkIGRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoY29uc3QgTW9ja0luaXRpYWxp
emF0aW9uQm94Jik7CisgICAgdm9pZCBkaWRSZWNlaXZlU2FtcGxlKGNvbnN0IE1vY2tTYW1wbGVC
b3gmKTsKKworICAgIE1vY2tNZWRpYVNvdXJjZVByaXZhdGUqIG1fcGFyZW50OworICAgIFNvdXJj
ZUJ1ZmZlclByaXZhdGVDbGllbnQqIG1fY2xpZW50OworCisgICAgVmVjdG9yPGNoYXI+IG1faW5w
dXRCdWZmZXI7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU09VUkNFKSAmJiBV
U0UoQVZGT1VOREFUSU9OKQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrVHJhY2tzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1RyYWNrcy5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGY4
ODQwZDg0MDU0ZGUyODdhZDkwM2ZmNjQ5MzE1ZThhYTMzNmJmNQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1RyYWNrcy5jcHAK
QEAgLTAsMCArMSwyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJNb2NrVHJhY2tzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tUcmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
bWVkaWFzb3VyY2UvTW9ja1RyYWNrcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiNzg0Y2RjZDJiY2MzZjgxOWU4
NDc3MjRkZmM5OGQ1NTk5NTE0OTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tUcmFja3MuaApAQCAtMCwwICsxLDk1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBNb2NrVHJhY2tzX2gKKyNkZWZpbmUgTW9ja1RyYWNrc19oCisKKyNp
ZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCisjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGUuaCIK
KyNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSAiTW9ja0JveC5o
IgorI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgTW9ja0F1ZGlvVHJhY2tQcml2YXRlIDogcHVibGljIEF1ZGlvVHJhY2tQcml2YXRl
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPE1vY2tBdWRpb1RyYWNrUHJpdmF0ZT4gY3Jl
YXRlKE1vY2tUcmFja0JveCBib3gpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBNb2NrQXVkaW9UcmFj
a1ByaXZhdGUoYm94KSk7IH0KKyAgICB2aXJ0dWFsIH5Nb2NrQXVkaW9UcmFja1ByaXZhdGUoKSB7
IH0KKworICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsg
fQorCitwcm90ZWN0ZWQ6CisgICAgTW9ja0F1ZGlvVHJhY2tQcml2YXRlKE1vY2tUcmFja0JveCBi
b3gpCisgICAgICAgIDogbV9ib3goYm94KQorICAgICAgICAsIG1faWQoU3RyaW5nOjpmb3JtYXQo
IiVkIiwgYm94LnRyYWNrSUQoKSkpCisgICAgeworICAgIH0KKyAgICBNb2NrVHJhY2tCb3ggbV9i
b3g7CisgICAgQXRvbWljU3RyaW5nIG1faWQ7Cit9OworCitjbGFzcyBNb2NrVGV4dFRyYWNrUHJp
dmF0ZSA6IHB1YmxpYyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUmVmUHRyPE1vY2tUZXh0VHJhY2tQcml2YXRlPiBjcmVhdGUoTW9ja1RyYWNrQm94IGJveCkg
eyByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tUZXh0VHJhY2tQcml2YXRlKGJveCkpOyB9CisgICAg
dmlydHVhbCB+TW9ja1RleHRUcmFja1ByaXZhdGUoKSB7IH0KKworICAgIHZpcnR1YWwgQXRvbWlj
U3RyaW5nIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQorCitwcm90ZWN0ZWQ6CisgICAgTW9j
a1RleHRUcmFja1ByaXZhdGUoTW9ja1RyYWNrQm94IGJveCkKKyAgICAgICAgOiBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlKEluYmFuZFRleHRUcmFja1ByaXZhdGU6OkdlbmVyaWMpCisgICAgICAgICwg
bV9ib3goYm94KQorICAgICAgICAsIG1faWQoU3RyaW5nOjpmb3JtYXQoIiVkIiwgYm94LnRyYWNr
SUQoKSkpCisgICAgeworICAgIH0KKyAgICBNb2NrVHJhY2tCb3ggbV9ib3g7CisgICAgQXRvbWlj
U3RyaW5nIG1faWQ7Cit9OworCisKK2NsYXNzIE1vY2tWaWRlb1RyYWNrUHJpdmF0ZSA6IHB1Ymxp
YyBWaWRlb1RyYWNrUHJpdmF0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxNb2NrVmlk
ZW9UcmFja1ByaXZhdGU+IGNyZWF0ZShNb2NrVHJhY2tCb3ggYm94KSB7IHJldHVybiBhZG9wdFJl
ZihuZXcgTW9ja1ZpZGVvVHJhY2tQcml2YXRlKGJveCkpOyB9CisgICAgdmlydHVhbCB+TW9ja1Zp
ZGVvVHJhY2tQcml2YXRlKCkgeyB9CisKKyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBpZCgpIGNv
bnN0IHsgcmV0dXJuIG1faWQ7IH0KKworcHJvdGVjdGVkOgorICAgIE1vY2tWaWRlb1RyYWNrUHJp
dmF0ZShNb2NrVHJhY2tCb3ggYm94KQorICAgICAgICA6IG1fYm94KGJveCkKKyAgICAgICAgLCBt
X2lkKFN0cmluZzo6Zm9ybWF0KCIlZCIsIGJveC50cmFja0lEKCkpKQorICAgIHsKKyAgICB9Cisg
ICAgTW9ja1RyYWNrQm94IG1fYm94OworICAgIEF0b21pY1N0cmluZyBtX2lkOworfTsKKworfQor
CisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXgg
MzVlNTlhNWUwNGM1MmM3MTU2MjEyMTgxZmIyNzM0MjVhNzc0OWMxZS4uOWE0ZjdhNjkyZWM2NTkz
YWEzMWFiOGRkMzdiYzRhMWY1ZmQxY2E0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcApAQCAtNjksOCArNjksMTAgQEAKICNpbmNsdWRlICJMYW5ndWFnZS5oIgogI2luY2x1ZGUg
Ik1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk1hbGxvY1N0YXRpc3RpY3MuaCIKKyNpbmNsdWRlICJN
ZWRpYVBsYXllci5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiTWVtb3J5
SW5mby5oIgorI2luY2x1ZGUgIk1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmgiCiAjaW5jbHVk
ZSAiUGFnZS5oIgogI2luY2x1ZGUgIlByaW50Q29udGV4dC5oIgogI2luY2x1ZGUgIlBzZXVkb0Vs
ZW1lbnQuaCIKQEAgLTIxNTcsNCArMjE1OSwxMSBAQCBib29sIEludGVybmFsczo6aXNQbHVnaW5V
bmF2YWlsYWJpbGl0eUluZGljYXRvck9ic2N1cmVkKEVsZW1lbnQqIGVsZW1lbnQsIEV4Y2VwdAog
ICAgIHJldHVybiBlbWJlZC0+aXNSZXBsYWNlbWVudE9ic2N1cmVkKCk7CiB9CiAKKyNpZiBFTkFC
TEUoTUVESUFfU09VUkNFKQordm9pZCBJbnRlcm5hbHM6OmluaXRpYWxpemVNb2NrTWVkaWFTb3Vy
Y2UoKQoreworICAgIE1lZGlhUGxheWVyRmFjdG9yeVN1cHBvcnQ6OmNhbGxSZWdpc3Rlck1lZGlh
RW5naW5lKE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpyZWdpc3Rlck1lZGlhRW5naW5lKTsK
K30KKyNlbmRpZgorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCAwNTdhNjdm
MGJmNjkyNTRmODU4ZDA0MmZjNzVmMGEwODVkZGE4ZTA1Li41YjIwZWE2NmUxNDQ3YWViMjM0NzMw
NDk3MzExZDRmNGFlY2Y3NTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTMy
Myw2ICszMjMsMTAgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1BsdWdpblVuYXZhaWxhYmlsaXR5
SW5kaWNhdG9yT2JzY3VyZWQoRWxlbWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKIAorI2lmIEVOQUJM
RShNRURJQV9TT1VSQ0UpCisgICAgdm9pZCBpbml0aWFsaXplTW9ja01lZGlhU291cmNlKCk7Cisj
ZW5kaWYKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJbnRlcm5hbHMoRG9jdW1lbnQqKTsKICAg
ICBEb2N1bWVudCogY29udGV4dERvY3VtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5pZGwKaW5kZXggYzU3YzlkODc2M2VhMjNiYjkxOWNjMTExOWI1ZWMzNzA3ZWE0OWYw
ZC4uZmE2Y2RiMjVjNGY0NzRiN2EwZThiMGM5MjM4MWNjNGY3NTI5MmNjYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtMjcxLDQgKzI3MSw2IEBACiAgICAgW1JhaXNlc0V4
Y2VwdGlvbl0gYm9vbGVhbiBpc1BsdWdpblVuYXZhaWxhYmlsaXR5SW5kaWNhdG9yT2JzY3VyZWQo
RWxlbWVudCBlbGVtZW50KTsKIAogICAgIFtSYWlzZXNFeGNlcHRpb25dIENsaWVudFJlY3Qgc2Vs
ZWN0aW9uQm91bmRzKCk7CisgICAgCisgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NPVVJDRV0gdm9p
ZCBpbml0aWFsaXplTW9ja01lZGlhU291cmNlKCk7CiB9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGIxOWFmZjc0NmZlZDhi
ZTdkNTFlZjFlYzE4ZjM2NjkwYzkwNmUzMGYuLmExODVmYWIxMDJlMGY5ODg0ZTI1ZWIyZjgxMjUz
MDY0YzY4ZDhmNWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NCBAQAorMjAxMy0xMC0zMCAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbTVNFXSBBZGQgbW9jayBNZWRpYVNv
dXJjZSBjbGFzc2VzIGZvciB0ZXN0aW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWFkZHNv
dXJjZWJ1ZmZlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLXNv
dXJjZS9tZWRpYS1zb3VyY2UtYWRkc291cmNlYnVmZmVyLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtYXBwZW5kLWJ1ZmZlci1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtYXBw
ZW5kLWJ1ZmZlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1zb3VyY2UvbWVk
aWEtc291cmNlLWNhbnBsYXl0aHJvdWdoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
bWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1jYW5wbGF5dGhyb3VnaC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWNsb3NlZC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3Vy
Y2UtY2xvc2VkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRp
YS1zb3VyY2UtcGxheS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlh
LXNvdXJjZS9tZWRpYS1zb3VyY2UtcGxheS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9t
ZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXRyYWNrLWVuYWJsZWQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXRyYWNrLWVuYWJs
ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJj
ZS10cmFja3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1zb3Vy
Y2UvbWVkaWEtc291cmNlLXRyYWNrcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRp
YS1zb3VyY2UvbW9jay1tZWRpYS1zb3VyY2UuanM6IEFkZGVkLgorICAgICAgICAoc3RyaW5nVG9B
cnJheSk6CisgICAgICAgICguc2V0IHZhcik6CisgICAgICAgICogbWVkaWEvdmlkZW8tdGVzdC5q
czoKKyAgICAgICAgKHdhaXRGb3JFdmVudE9uKToKKworMjAxMy0xMC0yNSAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbTVNFXSBBZGQgTWVkaWFTb3VyY2UgZXh0
ZW5zaW9ucyB0byBBdWRpb1RyYWNrLCBWaWRlb1RyYWNrLCBhbmQgVGV4dFRyYWNrLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMzc0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtZWRpYS9tZWRpYS1z
b3VyY2UvbWVkaWEtc291cmNlLXRyYWNrLWVuYWJsZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXRyYWNrLWVuYWJsZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS10cmFj
a3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1zb3VyY2UvbWVk
aWEtc291cmNlLXRyYWNrcy5odG1sOiBBZGRlZC4KKworMjAxMy0xMC0yNCAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbTVNFXSBBZGQgbW9jayBNZWRpYVNvdXJj
ZSBjbGFzc2VzIGZvciB0ZXN0aW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTIzMzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWFkZHNvdXJj
ZWJ1ZmZlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLXNvdXJj
ZS9tZWRpYS1zb3VyY2UtYWRkc291cmNlYnVmZmVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1l
ZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtYXBwZW5kLWJ1ZmZlci1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtYXBwZW5k
LWJ1ZmZlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEt
c291cmNlLWNhbnBsYXl0aHJvdWdoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVk
aWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1jYW5wbGF5dGhyb3VnaC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWNsb3NlZC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Ut
Y2xvc2VkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1z
b3VyY2UtcGxheS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLXNv
dXJjZS9tZWRpYS1zb3VyY2UtcGxheS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRp
YS1zb3VyY2UvbW9jay1tZWRpYS1zb3VyY2UuanM6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3Zp
ZGVvLXRlc3QuanM6CisKKzIwMTMtMTAtMjUgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5j
b20+CisKKyAgICAgICAgW01TRV0gQWRkIE1lZGlhU291cmNlIGV4dGVuc2lvbnMgdG8gQXVkaW9U
cmFjaywgVmlkZW9UcmFjaywgYW5kIFRleHRUcmFjay4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzM3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJj
ZS10cmFjay1lbmFibGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVk
aWEtc291cmNlL21lZGlhLXNvdXJjZS10cmFjay1lbmFibGVkLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtdHJhY2tzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS10cmFja3Mu
aHRtbDogQWRkZWQuCisKIDIwMTMtMTAtMjkgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5j
b20+CiAKICAgICAgICAgW01TRV0gUmVtb3ZlIGxlZ2FjeSBNZWRpYSBTb3VyY2UgQVBJcyAoV2Vi
S2l0TWVkaWFTb3VyY2UsIFdlYktpdFNvdXJjZUJ1ZmZlciwgV2ViS2l0U291cmNlQnVmZmVyTGlz
dCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3Vy
Y2UtYWRkc291cmNlYnVmZmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlh
LXNvdXJjZS9tZWRpYS1zb3VyY2UtYWRkc291cmNlYnVmZmVyLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44MGJjODI0Y2Q4YmY2OTIyMDI2MDIwYjc4YTA5YzJlM2I0MTI1NDE2Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1hZGRz
b3VyY2VidWZmZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1RFU1Qoc291cmNlLmFk
ZFNvdXJjZUJ1ZmZlcigiaW52YWxpZCIpKSBUSFJPV1MoRE9NRXhjZXB0aW9uLk5PVF9TVVBQT1JU
RURfRVJSKSBPSworVEVTVChzb3VyY2UuYWRkU291cmNlQnVmZmVyKCIiKSkgVEhST1dTKERPTUV4
Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIpIE9LCitFWFBFQ1RFRCAoTWVkaWFTb3VyY2UuaXNU
eXBlU3VwcG9ydGVkKCJpbnZhbGlkIikgPT0gJ2ZhbHNlJykgT0sKK0VYUEVDVEVEIChNZWRpYVNv
dXJjZS5pc1R5cGVTdXBwb3J0ZWQoInZpZGVvL21vY2s7IGNvZGVjcz1tb2NrIikgPT0gJ3RydWUn
KSBPSworUlVOKHZpZGVvLnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoc291cmNlKSkKK0VWRU5U
KHNvdXJjZW9wZW4pCitSVU4oc291cmNlQnVmZmVyID0gc291cmNlLmFkZFNvdXJjZUJ1ZmZlcigi
dmlkZW8vbW9jazsgY29kZWNzPW1vY2siKSkKK0VYUEVDVEVEIChzb3VyY2Uuc291cmNlQnVmZmVy
c1swXSA9PSAnW29iamVjdCBTb3VyY2VCdWZmZXJdJykgT0sKK0VYUEVDVEVEIChzb3VyY2UuYWN0
aXZlU291cmNlQnVmZmVyc1swXSA9PSAnW29iamVjdCBTb3VyY2VCdWZmZXJdJykgT0sKK0VORCBP
RiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRp
YS1zb3VyY2UtYWRkc291cmNlYnVmZmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1z
b3VyY2UvbWVkaWEtc291cmNlLWFkZHNvdXJjZWJ1ZmZlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5NmM1
M2MxOTc2YWUyOTJmNzNmYzdmNjNjYzRhNjVmYjRiYzkwZGEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWFkZHNvdXJjZWJ1ZmZl
ci5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KyAgICA8dGl0bGU+bW9jay1tZWRpYS1zb3VyY2U8L3RpdGxlPgorICAgIDxzY3JpcHQgc3JjPSJt
b2NrLW1lZGlhLXNvdXJjZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3ZpZGVv
LXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgdmFyIHNvdXJjZTsKKyAgICB2
YXIgc291cmNlQnVmZmVyOworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGlu
dGVybmFscy5pbml0aWFsaXplTW9ja01lZGlhU291cmNlKCk7CisKKyAgICBmdW5jdGlvbiBydW5U
ZXN0KCkgeworICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisKKyAgICAgICAgc291cmNlID0g
bmV3IE1lZGlhU291cmNlKCk7CisgICAgICAgIHRlc3RET01FeGNlcHRpb24oJ3NvdXJjZS5hZGRT
b3VyY2VCdWZmZXIoImludmFsaWQiKScsICdET01FeGNlcHRpb24uTk9UX1NVUFBPUlRFRF9FUlIn
KTsKKyAgICAgICAgdGVzdERPTUV4Y2VwdGlvbignc291cmNlLmFkZFNvdXJjZUJ1ZmZlcigiIikn
LCAnRE9NRXhjZXB0aW9uLklOVkFMSURfQUNDRVNTX0VSUicpOworICAgICAgICB0ZXN0RXhwZWN0
ZWQoJ01lZGlhU291cmNlLmlzVHlwZVN1cHBvcnRlZCgiaW52YWxpZCIpJywgZmFsc2UpOworICAg
ICAgICB0ZXN0RXhwZWN0ZWQoJ01lZGlhU291cmNlLmlzVHlwZVN1cHBvcnRlZCgidmlkZW8vbW9j
azsgY29kZWNzPW1vY2siKScsIHRydWUpOworCisgICAgICAgIHdhaXRGb3JFdmVudCgnc291cmNl
b3BlbicsIHNvdXJjZU9wZW4sIGZhbHNlLCBmYWxzZSwgc291cmNlKTsKKyAgICAgICAgcnVuKCd2
aWRlby5zcmMgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKHNvdXJjZSknKTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBzb3VyY2VPcGVuKCkgeworICAgICAgICBydW4oJ3NvdXJjZUJ1ZmZlciA9IHNvdXJj
ZS5hZGRTb3VyY2VCdWZmZXIoInZpZGVvL21vY2s7IGNvZGVjcz1tb2NrIiknKTsKKyAgICAgICAg
dGVzdEV4cGVjdGVkKCdzb3VyY2Uuc291cmNlQnVmZmVyc1swXScsIHNvdXJjZUJ1ZmZlcik7Cisg
ICAgICAgIHRlc3RFeHBlY3RlZCgnc291cmNlLmFjdGl2ZVNvdXJjZUJ1ZmZlcnNbMF0nLCBzb3Vy
Y2VCdWZmZXIpOworICAgICAgICBlbmRUZXN0KCk7CisgICAgfQorICAgIAorICAgIDwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDx2aWRlbz48L3ZpZGVv
PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtYXBwZW5kLWJ1
ZmZlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEt
c291cmNlLWFwcGVuZC1idWZmZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyNmRjZWJiMWU4
YTBkZTkzMDY3MGU3MmI0YmU3NDAxZmM2NzBkNzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWFwcGVuZC1idWZmZXItZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1JVTih2aWRlby5zcmMgPSBVUkwuY3JlYXRlT2JqZWN0
VVJMKHNvdXJjZSkpCitFVkVOVChzb3VyY2VvcGVuKQorUlVOKHNvdXJjZUJ1ZmZlciA9IHNvdXJj
ZS5hZGRTb3VyY2VCdWZmZXIoInZpZGVvL21vY2s7IGNvZGVjcz1tb2NrIikpCitSVU4oc291cmNl
QnVmZmVyLmFwcGVuZEJ1ZmZlcihpbml0U2VnbWVudCkpCitFWFBFQ1RFRCAoc291cmNlQnVmZmVy
LnVwZGF0aW5nID09ICd0cnVlJykgT0sKK0VWRU5UKHVwZGF0ZXN0YXJ0KQorRVZFTlQodXBkYXRl
KQorRVZFTlQodXBkYXRlZW5kKQorRVhQRUNURUQgKHNvdXJjZUJ1ZmZlci51cGRhdGluZyA9PSAn
ZmFsc2UnKSBPSworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEv
bWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1hcHBlbmQtYnVmZmVyLmh0bWwgYi9MYXlvdXRUZXN0
cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWFwcGVuZC1idWZmZXIuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41ZWEyZmVjYzczN2I5ODQ5YzA0NTliZTRmMWYwYTFkODE1YzJlNjIwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1h
cHBlbmQtYnVmZmVyLmh0bWwKQEAgLTAsMCArMSw0NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorICAgIDx0aXRsZT5tb2NrLW1lZGlhLXNvdXJjZTwvdGl0bGU+CisgICAgPHNj
cmlwdCBzcmM9Im1vY2stbWVkaWEtc291cmNlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICB2YXIgc291
cmNlOworICAgIHZhciBzb3VyY2VCdWZmZXI7CisgICAgdmFyIGluaXRTZWdtZW50OworCisgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5pbml0aWFsaXplTW9ja01l
ZGlhU291cmNlKCk7CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBmaW5kTWVk
aWFFbGVtZW50KCk7CisKKyAgICAgICAgc291cmNlID0gbmV3IE1lZGlhU291cmNlKCk7CisgICAg
ICAgIHdhaXRGb3JFdmVudE9uKHNvdXJjZSwgJ3NvdXJjZW9wZW4nLCBzb3VyY2VPcGVuKTsKKyAg
ICAgICAgcnVuKCd2aWRlby5zcmMgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKHNvdXJjZSknKTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBzb3VyY2VPcGVuKCkgeworICAgICAgICBydW4oJ3NvdXJjZUJ1
ZmZlciA9IHNvdXJjZS5hZGRTb3VyY2VCdWZmZXIoInZpZGVvL21vY2s7IGNvZGVjcz1tb2NrIikn
KTsKKworICAgICAgICB3YWl0Rm9yRXZlbnRPbihzb3VyY2VCdWZmZXIsICd1cGRhdGVzdGFydCcp
OworICAgICAgICB3YWl0Rm9yRXZlbnRPbihzb3VyY2VCdWZmZXIsICd1cGRhdGUnKTsKKyAgICAg
ICAgd2FpdEZvckV2ZW50T24oc291cmNlQnVmZmVyLCAndXBkYXRlZW5kJywgdXBkYXRlRW5kKTsK
KyAgICAgICAgaW5pdFNlZ21lbnQgPSBtYWtlQUluaXQoMTAwLCBbbWFrZUFUcmFjaygxLCAnbW9j
aycsIFRSQUNLX0tJTkQuVklERU8pXSk7CisgICAgICAgIHJ1bignc291cmNlQnVmZmVyLmFwcGVu
ZEJ1ZmZlcihpbml0U2VnbWVudCknKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCdzb3VyY2VCdWZm
ZXIudXBkYXRpbmcnLCB0cnVlKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gdXBkYXRlRW5k
KCkgeworICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3NvdXJjZUJ1ZmZlci51cGRhdGluZycsIGZhbHNl
KTsKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0KKworICAgIDwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDx2aWRlbz48L3ZpZGVvPgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlh
LXNvdXJjZS1jYW5wbGF5dGhyb3VnaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9t
ZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWNhbnBsYXl0aHJvdWdoLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mN2IyMTM3OTIwMGMxNWFkMmIzYzgxMjQ5MjFkY2Q2OWNlMDlhNmVhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1j
YW5wbGF5dGhyb3VnaC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitSVU4odmlkZW8uc3Jj
ID0gVVJMLmNyZWF0ZU9iamVjdFVSTChzb3VyY2UpKQorRVZFTlQobG9hZGVkbWV0YWRhdGEpCitF
VkVOVChsb2FkZWRkYXRhKQorRVZFTlQoY2FucGxheSkKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQor
RU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNl
L21lZGlhLXNvdXJjZS1jYW5wbGF5dGhyb3VnaC5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVk
aWEtc291cmNlL21lZGlhLXNvdXJjZS1jYW5wbGF5dGhyb3VnaC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZl
OTFmNzZlZGJlMWUxNDFkZTBhYzk3YjZlNWUyMDE1MDU5ZGQ2MjIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWNhbnBsYXl0aHJv
dWdoLmh0bWwKQEAgLTAsMCArMSw1MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorICAgIDx0aXRsZT5tb2NrLW1lZGlhLXNvdXJjZTwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9
Im1vY2stbWVkaWEtc291cmNlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vdmlk
ZW8tdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICB2YXIgc291cmNlOworICAg
IHZhciBzb3VyY2VCdWZmZXI7CisKKyAgICB2YXIgcmVxdWVzdExlbmd0aCA9IDIwMDAwMDsKKyAg
ICB2YXIgbmV4dFJlcXVlc3QgPSAwOworICAgIHZhciB0b3RhbExlbmd0aCA9IDEwMDsKKworICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuaW5pdGlhbGl6ZU1vY2tN
ZWRpYVNvdXJjZSgpOworCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgZmluZE1l
ZGlhRWxlbWVudCgpOworICAgICAgICBzb3VyY2UgPSBuZXcgTWVkaWFTb3VyY2UoKTsKKyAgICAg
ICAgc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoJ3NvdXJjZW9wZW4nLCBzdGFydExvYWQpOworICAg
ICAgICB3YWl0Rm9yRXZlbnQoJ2xvYWRlZG1ldGFkYXRhJyk7CisgICAgICAgIHdhaXRGb3JFdmVu
dCgnbG9hZGVkZGF0YScpOworICAgICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXknKTsKKyAgICAg
ICAgd2FpdEZvckV2ZW50QW5kRW5kKCdjYW5wbGF5dGhyb3VnaCcpOworICAgICAgICBydW4oJ3Zp
ZGVvLnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoc291cmNlKScpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHN0YXJ0TG9hZCgpIHsKKyAgICAgICAgc291cmNlQnVmZmVyID0gc291cmNlLmFkZFNv
dXJjZUJ1ZmZlcigndmlkZW8vbW9jazsgY29kZWNzPSJtb2NrIicpOworICAgICAgICBzb3VyY2VC
dWZmZXIuYWRkRXZlbnRMaXN0ZW5lcigndXBkYXRlJywgc291cmNlVXBkYXRlZCk7CisgICAgICAg
IG5leHRSZXF1ZXN0ID0gMDsKKworICAgICAgICAvLyBNYWtlIGFuIGluaXQgc2VnbWVudCB3aXRo
IDEgdmlkZW8gdHJhY2sKKyAgICAgICAgdmFyIGluaXQgPSBtYWtlQUluaXQoMTAwLCBbbWFrZUFU
cmFjaygxLCAnbW9jaycsIFRSQUNLX0tJTkQuVklERU8pXSk7CisgICAgICAgIHNvdXJjZUJ1ZmZl
ci5hcHBlbmRCdWZmZXIoaW5pdCkKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzb3VyY2VVcGRhdGVk
KCkgeworICAgICAgICBzb3VyY2UuYWN0aXZlU291cmNlQnVmZmVycy5sZW5ndGg7CisgICAgICAg
IGlmIChuZXh0UmVxdWVzdCA8IHRvdGFsTGVuZ3RoKSB7CisgICAgICAgICAgICBzb3VyY2VCdWZm
ZXIuYXBwZW5kQnVmZmVyKG1ha2VBU2FtcGxlKG5leHRSZXF1ZXN0LCBuZXh0UmVxdWVzdCwgMSwg
MSwgMCkpOworICAgICAgICAgICAgKytuZXh0UmVxdWVzdDsKKyAgICAgICAgfQorICAgIH0KKyAg
ICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICA8dmlk
ZW8gY29udHJvbHMgd2lkdGg9OTYwIGhlaWdodD01MTA+PC92aWRlbz4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3Vy
Y2UtY2xvc2VkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9t
ZWRpYS1zb3VyY2UtY2xvc2VkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZmM5OGI1MWU0NmY4
MDlhMDY0ZmY4YmFmNTgwZWYyZDYxNWM3MzJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1jbG9zZWQtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNiBAQAorRVhQRUNURUQgKHNvdXJjZS5yZWFkeVN0YXRlID09ICdjbG9zZWQnKSBP
SworRVZFTlQoc291cmNlb3BlbikKK1JVTih2aWRlby5zcmMgPSAiIikKK0VWRU5UKHNvdXJjZWNs
b3NlKQorRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEt
c291cmNlL21lZGlhLXNvdXJjZS1jbG9zZWQuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlh
LXNvdXJjZS9tZWRpYS1zb3VyY2UtY2xvc2VkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjJjODIxZTg5YWJi
OTgyMTFlZDcxYTg2ODc4YzcxZmU5MzA4NTBmZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtY2xvc2VkLmh0bWwKQEAgLTAsMCAr
MSwzNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT5tb2Nr
LW1lZGlhLXNvdXJjZTwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9Im1vY2stbWVkaWEtc291cmNl
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdD4KKyAgICB2YXIgc291cmNlOworICAgIHZhciBzb3VyY2VCdWZmZXI7
CisgICAgdmFyIHNvdXJjZVRhZzsKKworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAg
ICBpbnRlcm5hbHMuaW5pdGlhbGl6ZU1vY2tNZWRpYVNvdXJjZSgpOworCisgICAgZnVuY3Rpb24g
cnVuVGVzdCgpIHsKKyAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOworCisgICAgICAgIHNvdXJj
ZSA9IG5ldyBNZWRpYVNvdXJjZSgpOworICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3NvdXJjZS5yZWFk
eVN0YXRlJywgJ2Nsb3NlZCcpOworCisgICAgICAgIHdhaXRGb3JFdmVudE9uKHNvdXJjZSwgJ3Nv
dXJjZW9wZW4nLCBzb3VyY2VPcGVuKTsKKyAgICAgICAgdmlkZW8uc3JjID0gVVJMLmNyZWF0ZU9i
amVjdFVSTChzb3VyY2UpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHNvdXJjZU9wZW4oKSB7Cisg
ICAgICAgIHdhaXRGb3JFdmVudE9uKHNvdXJjZSwgJ3NvdXJjZWNsb3NlJywgZW5kVGVzdCk7Cisg
ICAgICAgIHJ1bigndmlkZW8uc3JjID0gIiInKTsKKyAgICB9CisgICAgCisgICAgPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgPHZpZGVvPjwvdmlkZW8+
Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1wbGF5LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtcGxh
eS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDU5ZWMwNzI1ZTgyMmZiMmZiZWYxMTUwNDhiYTgz
ODViODI2YTYyZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNv
dXJjZS9tZWRpYS1zb3VyY2UtcGxheS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorRVhQ
RUNURUQgKHNvdXJjZS5yZWFkeVN0YXRlID09ICdjbG9zZWQnKSBPSworRVZFTlQoc291cmNlb3Bl
bikKK1JVTihzb3VyY2VCdWZmZXIgPSBzb3VyY2UuYWRkU291cmNlQnVmZmVyKCJ2aWRlby9tb2Nr
OyBjb2RlY3M9bW9jayIpKQorUlVOKHNvdXJjZUJ1ZmZlci5hcHBlbmRCdWZmZXIoaW5pdFNlZ21l
bnQpKQorRVZFTlQodXBkYXRlZW5kKQorUlVOKHNvdXJjZUJ1ZmZlci5hcHBlbmRCdWZmZXIoc2Ft
cGxlKSkKK0VWRU5UKHVwZGF0ZWVuZCkKK1JVTihzb3VyY2UuZHVyYXRpb24gPSAxKQorUlVOKHNv
dXJjZS5lbmRPZlN0cmVhbSgpKQorUlVOKHZpZGVvLnBsYXkoKSkKK0VWRU5UKGVuZGVkKQorRU5E
IE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21l
ZGlhLXNvdXJjZS1wbGF5Lmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVk
aWEtc291cmNlLXBsYXkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDEzZDAzODlkYTk4MmQ0NWZjMTgxNTk1
YWE3MDY0NjFmNjczOGVlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVk
aWEtc291cmNlL21lZGlhLXNvdXJjZS1wbGF5Lmh0bWwKQEAgLTAsMCArMSw1MSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT5tb2NrLW1lZGlhLXNvdXJjZTwv
dGl0bGU+CisgICAgPHNjcmlwdCBzcmM9Im1vY2stbWVkaWEtc291cmNlLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dD4KKyAgICB2YXIgc291cmNlOworICAgIHZhciBzb3VyY2VCdWZmZXI7CisgICAgdmFyIGluaXRT
ZWdtZW50OworICAgIHZhciBzYW1wbGU7CisKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAg
ICAgICAgaW50ZXJuYWxzLmluaXRpYWxpemVNb2NrTWVkaWFTb3VyY2UoKTsKKworICAgIGZ1bmN0
aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKworICAgICAgICBz
b3VyY2UgPSBuZXcgTWVkaWFTb3VyY2UoKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCdzb3VyY2Uu
cmVhZHlTdGF0ZScsICdjbG9zZWQnKTsKKworICAgICAgICB3YWl0Rm9yRXZlbnRPbihzb3VyY2Us
ICdzb3VyY2VvcGVuJywgc291cmNlT3Blbik7CisgICAgICAgIHZpZGVvLnNyYyA9IFVSTC5jcmVh
dGVPYmplY3RVUkwoc291cmNlKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzb3VyY2VPcGVuKCkg
eworICAgICAgICBydW4oJ3NvdXJjZUJ1ZmZlciA9IHNvdXJjZS5hZGRTb3VyY2VCdWZmZXIoInZp
ZGVvL21vY2s7IGNvZGVjcz1tb2NrIiknKTsKKyAgICAgICAgd2FpdEZvckV2ZW50T24oc291cmNl
QnVmZmVyLCAndXBkYXRlZW5kJywgbG9hZFNhbXBsZXMsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAg
aW5pdFNlZ21lbnQgPSBtYWtlQUluaXQoMTAwLCBbbWFrZUFUcmFjaygxLCAnbW9jaycsIFRSQUNL
X0tJTkRfVklERU8pXSk7CisgICAgICAgIHJ1bignc291cmNlQnVmZmVyLmFwcGVuZEJ1ZmZlcihp
bml0U2VnbWVudCknKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBsb2FkU2FtcGxlcygpIHsKKyAg
ICAgICAgc2FtcGxlID0gbWFrZUFTYW1wbGUoMCwgMCwgMTAsIDEsIDApOworICAgICAgICB3YWl0
Rm9yRXZlbnRPbihzb3VyY2VCdWZmZXIsICd1cGRhdGVlbmQnLCBwbGF5LCBmYWxzZSwgdHJ1ZSk7
CisgICAgICAgIHJ1bignc291cmNlQnVmZmVyLmFwcGVuZEJ1ZmZlcihzYW1wbGUpJyk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gcGxheSgpIHsKKyAgICAgICAgd2FpdEZvckV2ZW50KCdlbmRlZCcs
IGVuZFRlc3QpOworICAgICAgICBydW4oJ3NvdXJjZS5kdXJhdGlvbiA9IDEnKTsKKyAgICAgICAg
cnVuKCdzb3VyY2UuZW5kT2ZTdHJlYW0oKScpOworICAgICAgICBydW4oJ3ZpZGVvLnBsYXkoKScp
OworICAgIH0KKyAgICAKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVu
VGVzdCgpIj4KKyAgICA8dmlkZW8+PC92aWRlbz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtdHJhY2stZW5h
YmxlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEt
c291cmNlLXRyYWNrLWVuYWJsZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVkMzc4MDQwZTI2
ZTA1YzA5MzYyMjUwZTBjNjYwOTFmYmFjYjY5ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXRyYWNrLWVuYWJsZWQtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1JVTih2aWRlby5zcmMgPSBVUkwuY3JlYXRlT2JqZWN0
VVJMKHNvdXJjZSkpCitFVkVOVChzb3VyY2VvcGVuKQorUlVOKHNvdXJjZUJ1ZmZlciA9IHNvdXJj
ZS5hZGRTb3VyY2VCdWZmZXIoInZpZGVvL21vY2s7IGNvZGVjcz1tb2NrIikpCitSVU4oc291cmNl
QnVmZmVyLmFwcGVuZEJ1ZmZlcihpbml0U2VnbWVudCkpCitFWFBFQ1RFRCAoc291cmNlQnVmZmVy
LnVwZGF0aW5nID09ICd0cnVlJykgT0sKK0VWRU5UKHVwZGF0ZXN0YXJ0KQorRVZFTlQodXBkYXRl
KQorRVZFTlQodXBkYXRlZW5kKQorRVhQRUNURUQgKHNvdXJjZUJ1ZmZlci51cGRhdGluZyA9PSAn
ZmFsc2UnKSBPSworRVhQRUNURUQgKHNvdXJjZUJ1ZmZlci52aWRlb1RyYWNrcy5sZW5ndGggPT0g
JzEnKSBPSworRVhQRUNURUQgKHNvdXJjZUJ1ZmZlci52aWRlb1RyYWNrc1swXS5zZWxlY3RlZCA9
PSAndHJ1ZScpIE9LCitFWFBFQ1RFRCAoc291cmNlLmFjdGl2ZVNvdXJjZUJ1ZmZlcnMubGVuZ3Ro
ID09ICcxJykgT0sKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlh
L21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtdHJhY2stZW5hYmxlZC5odG1sIGIvTGF5b3V0VGVz
dHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS10cmFjay1lbmFibGVkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDAyODRiZTlmZDlhYzI4YzI5NmFkOGRkYzU2ZmM5M2NiMDMzMTc1MQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Ut
dHJhY2stZW5hYmxlZC5odG1sCkBAIC0wLDAgKzEsNDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+bW9jay1tZWRpYS1zb3VyY2U8L3RpdGxlPgorICAgIDxz
Y3JpcHQgc3JjPSJtb2NrLW1lZGlhLXNvdXJjZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgdmFyIHNv
dXJjZTsKKyAgICB2YXIgc291cmNlQnVmZmVyOworICAgIHZhciBpbml0U2VnbWVudDsKKworICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuaW5pdGlhbGl6ZU1vY2tN
ZWRpYVNvdXJjZSgpOworCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgZmluZE1l
ZGlhRWxlbWVudCgpOworCisgICAgICAgIHNvdXJjZSA9IG5ldyBNZWRpYVNvdXJjZSgpOworICAg
ICAgICB3YWl0Rm9yRXZlbnRPbihzb3VyY2UsICdzb3VyY2VvcGVuJywgc291cmNlT3Blbik7Cisg
ICAgICAgIHJ1bigndmlkZW8uc3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChzb3VyY2UpJyk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gc291cmNlT3BlbigpIHsKKyAgICAgICAgcnVuKCdzb3VyY2VC
dWZmZXIgPSBzb3VyY2UuYWRkU291cmNlQnVmZmVyKCJ2aWRlby9tb2NrOyBjb2RlY3M9bW9jayIp
Jyk7CisKKyAgICAgICAgd2FpdEZvckV2ZW50T24oc291cmNlQnVmZmVyLCAndXBkYXRlc3RhcnQn
KTsKKyAgICAgICAgd2FpdEZvckV2ZW50T24oc291cmNlQnVmZmVyLCAndXBkYXRlJyk7CisgICAg
ICAgIHdhaXRGb3JFdmVudE9uKHNvdXJjZUJ1ZmZlciwgJ3VwZGF0ZWVuZCcsIHVwZGF0ZUVuZCk7
CisgICAgICAgIGluaXRTZWdtZW50ID0gbWFrZUFJbml0KDEwMCwgWworICAgICAgICAgICAgbWFr
ZUFUcmFjaygxLCAnbW9jaycsIFRSQUNLX0tJTkQuVklERU8pLAorICAgICAgICBdKTsKKyAgICAg
ICAgcnVuKCdzb3VyY2VCdWZmZXIuYXBwZW5kQnVmZmVyKGluaXRTZWdtZW50KScpOworICAgICAg
ICB0ZXN0RXhwZWN0ZWQoJ3NvdXJjZUJ1ZmZlci51cGRhdGluZycsIHRydWUpOworICAgIH0KKyAg
ICAKKyAgICBmdW5jdGlvbiB1cGRhdGVFbmQoKSB7CisgICAgICAgIHRlc3RFeHBlY3RlZCgnc291
cmNlQnVmZmVyLnVwZGF0aW5nJywgZmFsc2UpOworICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3NvdXJj
ZUJ1ZmZlci52aWRlb1RyYWNrcy5sZW5ndGgnLCAxKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCdz
b3VyY2VCdWZmZXIudmlkZW9UcmFja3NbMF0uc2VsZWN0ZWQnLCB0cnVlKTsKKyAgICAgICAgdGVz
dEV4cGVjdGVkKCdzb3VyY2UuYWN0aXZlU291cmNlQnVmZmVycy5sZW5ndGgnLCAxKTsKKyAgICAg
ICAgZW5kVGVzdCgpOworICAgIH0KKworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25s
b2FkPSJydW5UZXN0KCkiPgorICAgIDx2aWRlbz48L3ZpZGVvPgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS10
cmFja3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlh
LXNvdXJjZS10cmFja3MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMyYjg5ZjgyN2NjODNhNTZh
ODUxNWYwMTM3OWNjMzg2ZGFjMzFkZmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9t
ZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXRyYWNrcy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxNCBAQAorUlVOKHZpZGVvLnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoc291cmNlKSkK
K0VWRU5UKHNvdXJjZW9wZW4pCitSVU4oc291cmNlQnVmZmVyID0gc291cmNlLmFkZFNvdXJjZUJ1
ZmZlcigidmlkZW8vbW9jazsgY29kZWNzPW1vY2siKSkKK1JVTihzb3VyY2VCdWZmZXIuYXBwZW5k
QnVmZmVyKGluaXRTZWdtZW50KSkKK0VYUEVDVEVEIChzb3VyY2VCdWZmZXIudXBkYXRpbmcgPT0g
J3RydWUnKSBPSworRVZFTlQodXBkYXRlc3RhcnQpCitFVkVOVCh1cGRhdGUpCitFVkVOVCh1cGRh
dGVlbmQpCitFWFBFQ1RFRCAoc291cmNlQnVmZmVyLnVwZGF0aW5nID09ICdmYWxzZScpIE9LCitF
WFBFQ1RFRCAoc291cmNlQnVmZmVyLnZpZGVvVHJhY2tzLmxlbmd0aCA9PSAnMScpIE9LCitFWFBF
Q1RFRCAoc291cmNlQnVmZmVyLmF1ZGlvVHJhY2tzLmxlbmd0aCA9PSAnMicpIE9LCitFWFBFQ1RF
RCAoc291cmNlQnVmZmVyLnRleHRUcmFja3MubGVuZ3RoID09ICczJykgT0sKK0VORCBPRiBURVNU
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3Vy
Y2UtdHJhY2tzLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291
cmNlLXRyYWNrcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkMWNjYmQ2Zjc4ZGU3OTNjYmY4MGJmNmYwYWY0
NjI1NTUxZmUxZWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1z
b3VyY2UvbWVkaWEtc291cmNlLXRyYWNrcy5odG1sCkBAIC0wLDAgKzEsNTQgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+bW9jay1tZWRpYS1zb3VyY2U8L3Rp
dGxlPgorICAgIDxzY3JpcHQgc3JjPSJtb2NrLW1lZGlhLXNvdXJjZS5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+
CisgICAgdmFyIHNvdXJjZTsKKyAgICB2YXIgc291cmNlQnVmZmVyOworICAgIHZhciBpbml0U2Vn
bWVudDsKKworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuaW5p
dGlhbGl6ZU1vY2tNZWRpYVNvdXJjZSgpOworCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAg
ICAgICAgZmluZE1lZGlhRWxlbWVudCgpOworCisgICAgICAgIHNvdXJjZSA9IG5ldyBNZWRpYVNv
dXJjZSgpOworICAgICAgICB3YWl0Rm9yRXZlbnRPbihzb3VyY2UsICdzb3VyY2VvcGVuJywgc291
cmNlT3Blbik7CisgICAgICAgIHJ1bigndmlkZW8uc3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChz
b3VyY2UpJyk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc291cmNlT3BlbigpIHsKKyAgICAgICAg
cnVuKCdzb3VyY2VCdWZmZXIgPSBzb3VyY2UuYWRkU291cmNlQnVmZmVyKCJ2aWRlby9tb2NrOyBj
b2RlY3M9bW9jayIpJyk7CisKKyAgICAgICAgd2FpdEZvckV2ZW50T24oc291cmNlQnVmZmVyLCAn
dXBkYXRlc3RhcnQnKTsKKyAgICAgICAgd2FpdEZvckV2ZW50T24oc291cmNlQnVmZmVyLCAndXBk
YXRlJyk7CisgICAgICAgIHdhaXRGb3JFdmVudE9uKHNvdXJjZUJ1ZmZlciwgJ3VwZGF0ZWVuZCcs
IHVwZGF0ZUVuZCk7CisgICAgICAgIGluaXRTZWdtZW50ID0gbWFrZUFJbml0KDEwMCwgWworICAg
ICAgICAgICAgbWFrZUFUcmFjaygxLCAnbW9jaycsIFRSQUNLX0tJTkQuVklERU8pLAorICAgICAg
ICAgICAgbWFrZUFUcmFjaygyLCAnbW9jaycsIFRSQUNLX0tJTkQuQVVESU8pLAorICAgICAgICAg
ICAgbWFrZUFUcmFjaygzLCAnbW9jaycsIFRSQUNLX0tJTkQuQVVESU8pLAorICAgICAgICAgICAg
bWFrZUFUcmFjayg0LCAnbW9jaycsIFRSQUNLX0tJTkQuVEVYVCksCisgICAgICAgICAgICBtYWtl
QVRyYWNrKDUsICdtb2NrJywgVFJBQ0tfS0lORC5URVhUKSwKKyAgICAgICAgICAgIG1ha2VBVHJh
Y2soNiwgJ21vY2snLCBUUkFDS19LSU5ELlRFWFQpLAorICAgICAgICBdKTsKKyAgICAgICAgcnVu
KCdzb3VyY2VCdWZmZXIuYXBwZW5kQnVmZmVyKGluaXRTZWdtZW50KScpOworICAgICAgICB0ZXN0
RXhwZWN0ZWQoJ3NvdXJjZUJ1ZmZlci51cGRhdGluZycsIHRydWUpOworICAgIH0KKyAgICAKKyAg
ICBmdW5jdGlvbiB1cGRhdGVFbmQoKSB7CisgICAgICAgIHRlc3RFeHBlY3RlZCgnc291cmNlQnVm
ZmVyLnVwZGF0aW5nJywgZmFsc2UpOworICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3NvdXJjZUJ1ZmZl
ci52aWRlb1RyYWNrcy5sZW5ndGgnLCAxKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCdzb3VyY2VC
dWZmZXIuYXVkaW9UcmFja3MubGVuZ3RoJywgMik7CisgICAgICAgIHRlc3RFeHBlY3RlZCgnc291
cmNlQnVmZmVyLnRleHRUcmFja3MubGVuZ3RoJywgMyk7CisgICAgICAgIGVuZFRlc3QoKTsKKyAg
ICB9CisKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4K
KyAgICA8dmlkZW8+PC92aWRlbz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tb2NrLW1lZGlhLXNvdXJjZS5qcyBiL0xheW91dFRl
c3RzL21lZGlhL21lZGlhLXNvdXJjZS9tb2NrLW1lZGlhLXNvdXJjZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
NTUyYzYwMGJiZDA2MGY5NmNjOGYzMmZkZWUzZGE1MTA3MTU0OWUxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21vY2stbWVkaWEtc291cmNlLmpzCkBA
IC0wLDAgKzEsNzIgQEAKK3ZhciBUUkFDS19LSU5EID0geworICAgIEFVRElPOiAwLAorICAgIFZJ
REVPOiAxLAorICAgIFRFWFQ6IDIsCit9OworCitmdW5jdGlvbiBzdHJpbmdUb0FycmF5KHN0cmlu
ZykgeworICAgIHJldHVybiBzdHJpbmcuc3BsaXQoIiIpLm1hcChmdW5jdGlvbihjKXsgcmV0dXJu
IGMuY2hhckNvZGVBdCgwKTsgfSk7Cit9CisKK2Z1bmN0aW9uIG1ha2VBU2FtcGxlKHByZXNlbnRh
dGlvblRpbWUsIGRlY29kZVRpbWUsIGR1cmF0aW9uLCB0cmFja0lELCBmbGFncykgeworICAgIHZh
ciBieXRlTGVuZ3RoID0gMjk7CisgICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihieXRl
TGVuZ3RoKTsKKyAgICB2YXIgYXJyYXkgPSBuZXcgVWludDhBcnJheShidWZmZXIpOworICAgIGFy
cmF5LnNldChzdHJpbmdUb0FycmF5KCdzbXBsJykpOworCisgICAgdmFyIHZpZXcgPSBuZXcgRGF0
YVZpZXcoYnVmZmVyKTsKKyAgICB2aWV3LnNldFVpbnQzMig0LCBieXRlTGVuZ3RoLCB0cnVlKTsK
KworICAgIHZhciB0aW1lU2NhbGUgPSAxMDAwOworICAgIHZpZXcuc2V0SW50MzIoOCwgdGltZVNj
YWxlLCB0cnVlKTsKKyAgICB2aWV3LnNldEludDMyKDEyLCBwcmVzZW50YXRpb25UaW1lICogdGlt
ZVNjYWxlLCB0cnVlKTsKKyAgICB2aWV3LnNldEludDMyKDE2LCBkZWNvZGVUaW1lICogdGltZVNj
YWxlLCB0cnVlKTsKKyAgICB2aWV3LnNldEludDMyKDIwLCBkdXJhdGlvbiAqIHRpbWVTY2FsZSwg
dHJ1ZSk7CisgICAgdmlldy5zZXRJbnQzMigyNCwgdHJhY2tJRCwgdHJ1ZSk7CisgICAgdmlldy5z
ZXRVaW50OCgyOCwgZmxhZ3MpOworCisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKworZnVuY3Rpb24g
bWFrZUFUcmFjayh0cmFja0lELCBjb2RlYywgZmxhZ3MpIHsKKyAgICB2YXIgYnl0ZUxlbmd0aCA9
IDE3OworICAgIHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoYnl0ZUxlbmd0aCk7CisgICAg
dmFyIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsKKyAgICBhcnJheS5zZXQoc3RyaW5n
VG9BcnJheSgndHJhaycpKTsKKworICAgIHZhciB2aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlcik7
CisgICAgdmlldy5zZXRVaW50MzIoNCwgYnl0ZUxlbmd0aCwgdHJ1ZSk7CisgICAgdmlldy5zZXRJ
bnQzMig4LCB0cmFja0lELCB0cnVlKTsKKworICAgIHZhciBjb2RlY0FycmF5ID0gbmV3IFVpbnQ4
QXJyYXkoYnVmZmVyLCAxMiwgNCk7CisgICAgY29kZWNBcnJheS5zZXQoc3RyaW5nVG9BcnJheShj
b2RlYykpOworCisgICAgdmlldy5zZXRVaW50OCgxNiwgZmxhZ3MsIHRydWUpOworCisgICAgcmV0
dXJuIGJ1ZmZlcjsKK30KKworZnVuY3Rpb24gbWFrZUFJbml0KGR1cmF0aW9uLCB0cmFja3MpIHsK
KyAgICB2YXIgYnl0ZUxlbmd0aCA9IDE2ICsgKDE3ICogdHJhY2tzLmxlbmd0aCk7CisgICAgdmFy
IGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihieXRlTGVuZ3RoKTsKKyAgICB2YXIgYXJyYXkgPSBu
ZXcgVWludDhBcnJheShidWZmZXIpOworICAgIGFycmF5LnNldChzdHJpbmdUb0FycmF5KCdpbml0
JykpOworCisgICAgdmFyIHZpZXcgPSBuZXcgRGF0YVZpZXcoYnVmZmVyKTsKKyAgICB2YXIgdGlt
ZVNjYWxlID0gMTAwMDsKKyAgICB2aWV3LnNldFVpbnQzMig0LCBieXRlTGVuZ3RoLCB0cnVlKTsK
KyAgICB2aWV3LnNldEludDMyKDgsIGR1cmF0aW9uICogdGltZVNjYWxlLCB0cnVlKTsKKyAgICB2
aWV3LnNldEludDMyKDEyLCB0aW1lU2NhbGUsIHRydWUpOworCisgICAgdmFyIG9mZnNldCA9IDE2
OworICAgIHRyYWNrcy5mb3JFYWNoKGZ1bmN0aW9uKHRyYWNrKXsKKyAgICAgICAgdmFyIHNvdXJj
ZUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkodHJhY2spOworICAgICAgICB2YXIgZGVzdEFycmF5ID0g
bmV3IFVpbnQ4QXJyYXkoYnVmZmVyLCBvZmZzZXQsIHNvdXJjZUFycmF5LmJ5dGVMZW5ndGgpOwor
ICAgICAgICBkZXN0QXJyYXkuc2V0KHNvdXJjZUFycmF5KTsKKyAgICAgICAgb2Zmc2V0ICs9IHNv
dXJjZUFycmF5LmJ5dGVMZW5ndGg7CisgICAgfSk7CisKKyAgICByZXR1cm4gYnVmZmVyOworfQor
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLXRlc3QuanMgYi9MYXlvdXRU
ZXN0cy9tZWRpYS92aWRlby10ZXN0LmpzCmluZGV4IDA1OTgzN2JmZDI3YzFmMTc4Y2ZiMmY4Mjg1
MDUyNmU0ZWZiMjBhYzMuLmNhYjNmZGZhMjdmMDA2MWE2NzVlMzVlZjJhZjNmNzhmOGY3ZTY2YmIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLXRlc3QuanMKKysrIGIvTGF5b3V0
VGVzdHMvbWVkaWEvdmlkZW8tdGVzdC5qcwpAQCAtMjAyLDYgKzIwMiwxMSBAQCBmdW5jdGlvbiB3
YWl0Rm9yRXZlbnRBbmRUZXN0KGV2ZW50TmFtZSwgdGVzdEZ1bmNTdHJpbmcsIGVuZGl0KQogICAg
IG1lZGlhRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgX2V2ZW50Q2FsbGJhY2ss
IHRydWUpOwogfQogCitmdW5jdGlvbiB3YWl0Rm9yRXZlbnRPbihlbGVtZW50LCBldmVudE5hbWUs
IGZ1bmMsIGVuZGl0LCBvbmVUaW1lT25seSkKK3sKKyAgICB3YWl0Rm9yRXZlbnQoZXZlbnROYW1l
LCBmdW5jLCBlbmRpdCwgb25lVGltZU9ubHksIGVsZW1lbnQpOworfQorCiBmdW5jdGlvbiB0ZXN0
RE9NRXhjZXB0aW9uKHRlc3RTdHJpbmcsIGV4Y2VwdGlvblN0cmluZykKIHsKICAgICB0cnkgewo=
</data>
<flag name="review"
          id="238273"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216305</attachid>
            <date>2013-11-07 08:54:32 -0800</date>
            <delta_ts>2013-11-07 09:04:22 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-123322-20131107085431.patch</filename>
            <type>text/plain</type>
            <size>100407</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU4ODIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTEzOTMwYzYyMjA1MTQ0
YzM4MDlhODQ5YWY4NWUxNTU3MjI4ZDgzNi4uYTljMmI2ZDFjMDMxMjM3OGQyODdmNmE5NDM5Yzhk
MWRlNGQ1ZjQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NyBAQAorMjAxMy0xMC0zMCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbTVNFXSBBZGQgbW9jayBN
ZWRpYVNvdXJjZSBjbGFzc2VzIGZvciB0ZXN0aW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1z
b3VyY2UtYWRkc291cmNlYnVmZmVyLmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL21lZGlhLXNv
dXJjZS9tZWRpYS1zb3VyY2UtYXBwZW5kLWJ1ZmZlci5odG1sCisgICAgICAgICAgICAgICBtZWRp
YS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWNhbnBsYXl0aHJvdWdoLmh0bWwKKyAgICAgICAg
ICAgICAgIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtY2xvc2VkLmh0bWwKKyAgICAg
ICAgICAgICAgIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtcGxheS5odG1sCisgICAg
ICAgICAgICAgICBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXRyYWNrLWVuYWJsZWQu
aHRtbAorICAgICAgICAgICAgICAgbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS10cmFj
a3MuaHRtbAorCisKKyAgICAgICAgQWRkIG1vY2sgaW1wbGVtZW50YXRpb24gb2YgcGxhdGZvcm0g
TWVkaWFTb3VyY2UgY2xhc3NlcywgYWxsb3dpbmcgcG9ydHMgdG8gdGVzdCB0aGUKKyAgICAgICAg
TWVkaWFTb3VyY2UgQVBJIHdpdGhvdXQgaGF2aW5nIGEgcGxhdGZvcm0gaW1wbGVtZW50YXRpb24u
CisKKyAgICAgICAgVGhlIE1vY2tNZWRpYVNvdXJjZSB3aWxsIHN1cHBvcnQgYSBieXRlZm9ybWF0
IGRlZmluZWQgaW4gTW9ja0JveC5oOiBhIHNpbXBsZSBib3gtc3R5bGUgbWVkaWEKKyAgICAgICAg
Zm9ybWF0IHdpdGggYW4gaW5pdGlhbGl6YXRpb24gc2VnbWVudCBjb250YWluaW5nIGEgbnVtYmVy
IG9mIHRyYWNrcywgZm9sbG93ZWQgYnkgYSBsaXN0IG9mCisgICAgICAgIHNhbXBsZXMuCisKKyAg
ICAgICAgQWRkIGEgbWVhbnMgdG8gaW5zZXJ0IGEgbmV3IG1lZGlhIGVuZ2luZSBmYWN0b3J5IGF0
IHJ1bnRpbWUsIHNvIHRoZSBpbnRlcm5hbHMgb2JqZWN0IGNhbiBhZGQKKyAgICAgICAgYSBNb2Nr
TWVkaWFTb3VyY2VNZWRpYVBsYXllcjoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckZhY3RvcnlTdXBwb3J0
OjpjYWxsUmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OmluaXRpYWxpemVNb2NrTWVkaWFTb3VyY2UpOgorICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRs
OgorCisgICAgICAgIEZvciBub24tbWVkaWEtc291cmNlIHN1cHBvcnRpbmcgbWVkaWEgZW5naW5l
cywgZmFpbCBpbW1lZGlhdGVseSB3aGVuIGFza2VkIHRvIGxvYWQgYSBtZWRpYQorICAgICAgICBz
b3VyY2UsIHNvIHRoYXQgdGhlIE1vY2tNZWRpYVNvdXJjZU1lZGlhUGxheWVyIHdpbGwgYmUgaW5z
dGFudGlhdGVkIGFzIGEgZmFsbC1iYWNrOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpsb2FkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN1cHBvcnRzVHlwZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1t
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmxvYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnN1cHBvcnRzVHlwZSk6CisK
KyAgICAgICAgQWRkIG5ldyBmaWxlcyB0byB0aGUgcHJvamVjdDoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW46CisKKyAgICAgICAgVXBkYXRlIHRoZSBNZWRpYVNvdXJjZSBpbXBsZW1lbnRh
dGlvbjoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjptb25pdG9yU291cmNlQnVmZmVycyk6IEFkZCBh
IGxpbmsgdG8gdGhlIHNwZWMuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VC
dWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpidWZmZXJlZCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpzZXRUaW1lc3RhbXBPZmZzZXQp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6dmFsaWRhdGVJbml0aWFs
aXphdGlvblNlZ21lbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6
c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQpOiBEaXR0
by4gQWxzbywKKyAgICAgICAgICAgIGJyaW5nIHRoZSBpbXBsZW1lbnRhdGlvbiB1cCB0byBkYXRl
IHdpdGggcGFydCBvZiB0aGUgc3BlYy4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6
c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVTYW1wbGUpOiBSZW1vdmUgIlByZWRpY2F0ZSIg
ZnJvbQorICAgICAgICAgICAgU2FtcGxlSXNSYW5kb21BY2Nlc3NQcmVkaWNhdGUuCisKKyAgICAg
ICAgQWRkIHV0aWxpdHkgY2xhc3NlcyB0byBwYXJzZSBhbmQgcmVwcmVzZW50IHRoZSBieXRlc3Ry
ZWFtIHN1cHBvcnRlZCBieSB0aGUgTW9ja01lZGlhU291cmNlOgorICAgICAgICAqIHBsYXRmb3Jt
L21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
TW9ja0JveDo6TW9ja0JveCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQm94OjpwZWVrVHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQm94OjpwZWVrTGVuZ3RoKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tUcmFja0JveDo6TW9ja1RyYWNrQm94KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tU
cmFja0JveDo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrSW5pdGlhbGl6YXRpb25Cb3g6
Ok1vY2tJbml0aWFsaXphdGlvbkJveCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrSW5pdGlhbGl6
YXRpb25Cb3g6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NhbXBsZUJveDo6TW9ja1Nh
bXBsZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU2FtcGxlQm94Ojp0eXBlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpNb2NrQm94OjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0JveDo6
dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrVHJhY2tCb3g6OnRyYWNrSUQpOgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja1RyYWNrQm94Ojpjb2RlYyk6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
VHJhY2tCb3g6OmtpbmQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0luaXRpYWxpemF0aW9uQm94
OjpkdXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrSW5pdGlhbGl6YXRpb25Cb3g6OnRy
YWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU2FtcGxlQm94OjpwcmVzZW50YXRpb25UaW1l
c3RhbXApOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NhbXBsZUJveDo6ZGVjb2RlVGltZXN0YW1w
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTYW1wbGVCb3g6OmR1cmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tTYW1wbGVCb3g6OnRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a1NhbXBsZUJveDo6ZmxhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NhbXBsZUJveDo6aXNT
eW5jKToKKworICAgICAgICBBZGQgYSBNZWRpYVBsYXllclByaXZhdGUgaW1wbGVtZW50YXRpb24g
d2hpY2ggdXNlcyBNb2NrTWVkaWFTb3VyY2U6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUp
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjptaW1lVHlwZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpnZXRTdXBwb3J0ZWRUeXBlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6c3VwcG9ydHNUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpNb2NrTWVkaWFQbGF5ZXJN
ZWRpYVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJj
ZTo6fk1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tN
ZWRpYVBsYXllck1lZGlhU291cmNlOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRp
YVBsYXllck1lZGlhU291cmNlOjpjYW5jZWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tN
ZWRpYVBsYXllck1lZGlhU291cmNlOjpwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRp
YVBsYXllck1lZGlhU291cmNlOjpwYXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFQ
bGF5ZXJNZWRpYVNvdXJjZTo6bmF0dXJhbFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01l
ZGlhUGxheWVyTWVkaWFTb3VyY2U6Omhhc1ZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tN
ZWRpYVBsYXllck1lZGlhU291cmNlOjpoYXNBdWRpbyk6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
TWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6c2V0VmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6c2Vla2luZyk6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6cGF1c2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpuZXR3b3JrU3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlYWR5U3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmJ1ZmZlcmVkKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpkaWRMb2FkaW5nUHJvZ3Jlc3MpOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnNldFNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnBhaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpjdXJyZW50VGltZURv
dWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6ZHVy
YXRpb25Eb3VibGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3Vy
Y2U6OnNlZWtEb3VibGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFT
b3VyY2U6OmFkdmFuY2VDdXJyZW50VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFQ
bGF5ZXJNZWRpYVNvdXJjZTo6dXBkYXRlRHVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnNldFJlYWR5U3RhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuaDogQWRkZWQu
CisKKyAgICAgICAgQWRkIGEgbW9jayBpbXBsZW1lbnRhdGlvbiBvZiBNZWRpYVNvdXJjZVByaXZh
dGUsIHdoaWNoIHVzZXMgTW9ja1NvdXJjZUJ1ZmZlcjoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJjZVByaXZhdGUuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tNZWRpYVNvdXJjZVByaXZhdGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjpNb2NrTWVkaWFTb3VyY2VQcml2YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNvdXJjZVByaXZhdGU6On5Nb2NrTWVkaWFTb3VyY2VQ
cml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNvdXJjZVByaXZhdGU6OmFkZFNv
dXJjZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjpy
ZW1vdmVTb3VyY2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhU291cmNlUHJp
dmF0ZTo6ZHVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhU291cmNlUHJpdmF0
ZTo6c2V0RHVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhU291cmNlUHJpdmF0
ZTo6bWFya0VuZE9mU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNvdXJjZVBy
aXZhdGU6OnVubWFya0VuZE9mU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNv
dXJjZVByaXZhdGU6OnJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhU291
cmNlUHJpdmF0ZTo6c2V0UmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFT
b3VyY2VQcml2YXRlOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkQ2hhbmdlQWN0aXZlU3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGVIYXNBdWRpbyk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjpoYXNBdWRpbyk6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZUhhc1ZpZGVvKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tNZWRpYVNvdXJjZVByaXZhdGU6Omhhc1ZpZGVvKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJjZVByaXZhdGUuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjphY3RpdmVTb3VyY2VCdWZm
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNvdXJjZVByaXZhdGU6OnBsYXllcik6
CisKKyAgICAgICAgQWRkIGEgbW9jayBpbXBsZW1lbnRhdGlvbiBvZiBTb3VyY2VCdWZmZXJQcml2
YXRlLCB3aGljaCB1c2VzIE1vY2tCb3hlcyB0byBwYXJzZSB0aGUKKyAgICAgICAgYnl0ZXN0cmVh
bSBwcm92aWRlZCBieSBTb3VyY2VCdWZmZXI6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja01lZGlhU2FtcGxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01l
ZGlhU2FtcGxlOjp+TW9ja01lZGlhU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRp
YVNhbXBsZTo6TW9ja01lZGlhU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNh
bXBsZTo6cGxhdGZvcm1TYW1wbGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhRGVzY3Jp
cHRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFEZXNjcmlwdGlvbjo6
fk1vY2tNZWRpYURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYURlc2Ny
aXB0aW9uOjpNb2NrTWVkaWFEZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU291
cmNlQnVmZmVyUHJpdmF0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTb3VyY2VC
dWZmZXJQcml2YXRlOjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6fk1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpzZXRDbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZUluaXRpYWxpemF0
aW9uU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6
ZGlkUmVjZWl2ZVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZTo6YWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6
OnJlbW92ZWRGcm9tTWVkaWFTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1
ZmZlclByaXZhdGU6OnJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1
ZmZlclByaXZhdGU6OnNldFJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJj
ZUJ1ZmZlclByaXZhdGU6Omhhc1ZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTb3VyY2VC
dWZmZXJQcml2YXRlOjpoYXNBdWRpbyk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNv
dXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oOiBBZGRlZC4KKworICAgICAgICBDcmVhdGUg
bW9jayBpbXBsZW1lbnRhdGlvbnMgb2YgQXVkaW9UcmFja1ByaXZhdGUsIFZpZGVvVHJhY2tQcml2
YXRlLCBhbmQgVGV4dFRyYWNrUHJpdmF0ZQorICAgICAgICB3aGljaCB3cmFwIHRoZSBNb2NrVHJh
Y2tCb3ggY2xhc3M6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrVHJh
Y2tzLmNwcDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2Nr
VHJhY2tzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0F1ZGlvVHJhY2tQcml2YXRl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0F1ZGlvVHJhY2tQcml2YXRlOjp+TW9j
a0F1ZGlvVHJhY2tQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tBdWRpb1RyYWNrUHJp
dmF0ZTo6aWQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0F1ZGlvVHJhY2tQcml2YXRlOjpNb2Nr
QXVkaW9UcmFja1ByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1RleHRUcmFja1ByaXZh
dGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrVGV4dFRyYWNrUHJpdmF0ZTo6fk1v
Y2tUZXh0VHJhY2tQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tUZXh0VHJhY2tQcml2
YXRlOjppZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrVGV4dFRyYWNrUHJpdmF0ZTo6TW9ja1Rl
eHRUcmFja1ByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1ZpZGVvVHJhY2tQcml2YXRl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1ZpZGVvVHJhY2tQcml2YXRlOjp+TW9j
a1ZpZGVvVHJhY2tQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tWaWRlb1RyYWNrUHJp
dmF0ZTo6aWQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1ZpZGVvVHJhY2tQcml2YXRlOjpNb2Nr
VmlkZW9UcmFja1ByaXZhdGUpOgorCiAyMDEzLTEwLTI1ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgogCiAgICAgICAgIFtNU0VdIEFkZCBNZWRpYVNvdXJjZSBleHRlbnNpb25zIHRv
IEF1ZGlvVHJhY2ssIFZpZGVvVHJhY2ssIGFuZCBUZXh0VHJhY2suCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IGQzMzQ0Mzdi
NjU4NGI4ZmE1NDVjNjRlMjQ5MGZjZjNjOWViOGFiYTcuLjZlZWYwYzllNDllMWU5ZTI0MWE3NWI2
NGVlMjNkYmMxNTBjMDIwYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCkBAIC0zOTgsNiArMzk4LDcgQEAgdm9pZCBNZWRpYVNv
dXJjZTo6bW9uaXRvclNvdXJjZUJ1ZmZlcnMoKQogICAgIGRvdWJsZSBjdXJyZW50VGltZSA9IG1l
ZGlhRWxlbWVudCgpLT5jdXJyZW50VGltZSgpOwogCiAgICAgLy8gMi40LjQgU291cmNlQnVmZmVy
IE1vbml0b3JpbmcKKyAgICAvLyBodHRwczovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3
LWZpbGUvZGVmYXVsdC9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLmh0bWwjYnVmZmVyLW1vbml0
b3JpbmcKICAgICAvLyDihrMgSWYgYnVmZmVyZWQgZm9yIGFsbCBvYmplY3RzIGluIGFjdGl2ZVNv
dXJjZUJ1ZmZlcnMgZG8gbm90IGNvbnRhaW4gVGltZVJhbmdlcyBmb3IgdGhlIGN1cnJlbnQKICAg
ICAvLyBwbGF5YmFjayBwb3NpdGlvbjoKICAgICBhdXRvIGJlZ2luID0gbV9hY3RpdmVTb3VyY2VC
dWZmZXJzLT5iZWdpbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4IDU3ZjNlMGJmMDc4YzM2ZGNhMWYzOTZkYzE0N2Yw
MmI5OTg2NjVjNDIuLmI2MDBlMDQ3YTIzOWYwNzc2NTEyYzNmM2FkMmE0MjE3OThmNzE0MGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZl
ci5jcHAKQEAgLTEwOCw2ICsxMDgsNyBAQCBTb3VyY2VCdWZmZXI6On5Tb3VyY2VCdWZmZXIoKQog
UGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBTb3VyY2VCdWZmZXI6OmJ1ZmZlcmVkKEV4Y2VwdGlvbkNv
ZGUmIGVjKSBjb25zdAogewogICAgIC8vIFNlY3Rpb24gMy4xIGJ1ZmZlcmVkIGF0dHJpYnV0ZSBz
dGVwcy4KKyAgICAvLyBodHRwczovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUv
ZGVmYXVsdC9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLmh0bWwjYXR0cmlidXRlcy0xCiAgICAg
Ly8gMS4gSWYgdGhpcyBvYmplY3QgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBzb3VyY2VCdWZm
ZXJzIGF0dHJpYnV0ZSBvZiB0aGUgcGFyZW50IG1lZGlhIHNvdXJjZSB0aGVuIHRocm93IGFuCiAg
ICAgLy8gICAgSU5WQUxJRF9TVEFURV9FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVw
cy4KICAgICBpZiAoaXNSZW1vdmVkKCkpIHsKQEAgLTEzMiw2ICsxMzMsNyBAQCBkb3VibGUgU291
cmNlQnVmZmVyOjp0aW1lc3RhbXBPZmZzZXQoKSBjb25zdAogdm9pZCBTb3VyY2VCdWZmZXI6OnNl
dFRpbWVzdGFtcE9mZnNldChkb3VibGUgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICAvLyBTZWN0aW9uIDMuMSB0aW1lc3RhbXBPZmZzZXQgYXR0cmlidXRlIHNldHRlciBzdGVwcy4K
KyAgICAvLyBodHRwczovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvZGVmYXVs
dC9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLmh0bWwjYXR0cmlidXRlcy0xCiAgICAgLy8gMS4g
SWYgdGhpcyBvYmplY3QgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBzb3VyY2VCdWZmZXJzIGF0
dHJpYnV0ZSBvZiB0aGUgcGFyZW50IG1lZGlhIHNvdXJjZSB0aGVuIHRocm93IGFuCiAgICAgLy8g
ICAgSU5WQUxJRF9TVEFURV9FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAg
ICBpZiAoaXNSZW1vdmVkKCkpIHsKQEAgLTM5MCw5ICszOTIsMTYgQEAgdm9pZCBTb3VyY2VCdWZm
ZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KFNv
dXJjZUJ1ZmYKICAgICBtX2FwcGVuZFN0YXRlID0gUGFyc2luZ0luaXRTZWdtZW50OwogCiAgICAg
Ly8gMy41LjcgSW5pdGlhbGl6YXRpb24gU2VnbWVudCBSZWNlaXZlZAorICAgIC8vIGh0dHBzOi8v
ZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9yYXctZmlsZS9kZWZhdWx0L21lZGlhLXNvdXJjZS9t
ZWRpYS1zb3VyY2UuaHRtbCNzb3VyY2VidWZmZXItaW5pdC1zZWdtZW50LXJlY2VpdmVkCiAgICAg
Ly8gMS4gVXBkYXRlIHRoZSBkdXJhdGlvbiBhdHRyaWJ1dGUgaWYgaXQgY3VycmVudGx5IGVxdWFs
cyBOYU46Ci0gICAgaWYgKHN0ZDo6aXNuYW4obV9zb3VyY2UtPmR1cmF0aW9uKCkpICYmIHNlZ21l
bnQuZHVyYXRpb24uaXNWYWxpZCgpKQotICAgICAgICBtX3NvdXJjZS0+c2V0RHVyYXRpb24oc2Vn
bWVudC5kdXJhdGlvbi50b0RvdWJsZSgpLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICBpZiAoc3Rk
Ojppc25hbihtX3NvdXJjZS0+ZHVyYXRpb24oKSkpIHsKKyAgICAgICAgLy8g4oazIElmIHRoZSBp
bml0aWFsaXphdGlvbiBzZWdtZW50IGNvbnRhaW5zIGEgZHVyYXRpb246CisgICAgICAgIC8vICAg
UnVuIHRoZSBkdXJhdGlvbiBjaGFuZ2UgYWxnb3JpdGhtIHdpdGggbmV3IGR1cmF0aW9uIHNldCB0
byB0aGUgZHVyYXRpb24gaW4gdGhlIGluaXRpYWxpemF0aW9uIHNlZ21lbnQuCisgICAgICAgIC8v
IOKGsyBPdGhlcndpc2U6CisgICAgICAgIC8vICAgUnVuIHRoZSBkdXJhdGlvbiBjaGFuZ2UgYWxn
b3JpdGhtIHdpdGggbmV3IGR1cmF0aW9uIHNldCB0byBwb3NpdGl2ZSBJbmZpbml0eS4KKyAgICAg
ICAgTWVkaWFUaW1lIG5ld0R1cmF0aW9uID0gc2VnbWVudC5kdXJhdGlvbi5pc1ZhbGlkKCkgPyBz
ZWdtZW50LmR1cmF0aW9uIDogTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpOworICAg
ICAgICBtX3NvdXJjZS0+c2V0RHVyYXRpb24obmV3RHVyYXRpb24udG9Eb3VibGUoKSwgSUdOT1JF
X0VYQ0VQVElPTik7CisgICAgfQogCiAgICAgLy8gMi4gSWYgdGhlIGluaXRpYWxpemF0aW9uIHNl
Z21lbnQgaGFzIG5vIGF1ZGlvLCB2aWRlbywgb3IgdGV4dCB0cmFja3MsIHRoZW4gcnVuIHRoZSBl
bmQgb2Ygc3RyZWFtCiAgICAgLy8gYWxnb3JpdGhtIHdpdGggdGhlIGVycm9yIHBhcmFtZXRlciBz
ZXQgdG8gImRlY29kZSIgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgpAQCAtNTYwLDYgKzU2OSw5IEBA
IHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxp
emF0aW9uU2VnbWVudChTb3VyY2VCdWZmCiAKIGJvb2wgU291cmNlQnVmZmVyOjp2YWxpZGF0ZUlu
aXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJbml0aWFsaXphdGlvblNlZ21lbnQmIHNlZ21lbnQp
CiB7CisgICAgLy8gMy41LjcgSW5pdGlhbGl6YXRpb24gU2VnbWVudCBSZWNlaXZlZCAoY3RkKQor
ICAgIC8vIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9yYXctZmlsZS9kZWZhdWx0
L21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UuaHRtbCNzb3VyY2VidWZmZXItaW5pdC1zZWdtZW50
LXJlY2VpdmVkCisKICAgICAvLyAzLjEuIFZlcmlmeSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMu
IElmIGFueSBvZiB0aGUgY2hlY2tzIGZhaWwgdGhlbiBydW4gdGhlIGVuZCBvZiBzdHJlYW0KICAg
ICAvLyBhbGdvcml0aG0gd2l0aCB0aGUgZXJyb3IgcGFyYW1ldGVyIHNldCB0byAiZGVjb2RlIiBh
bmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAgICAgLy8gICAqIFRoZSBudW1iZXIgb2YgYXVkaW8sIHZp
ZGVvLCBhbmQgdGV4dCB0cmFja3MgbWF0Y2ggd2hhdCB3YXMgaW4gdGhlIGZpcnN0IGluaXRpYWxp
emF0aW9uIHNlZ21lbnQuCkBAIC02NTYsNyArNjY4LDcgQEAgcHVibGljOgogICAgIH0KIH07CiAK
LWNsYXNzIFNhbXBsZUlzUmFuZG9tQWNjZXNzUHJlZGljYXRlIHsKK2NsYXNzIFNhbXBsZUlzUmFu
ZG9tQWNjZXNzIHsKIHB1YmxpYzoKICAgICBib29sIG9wZXJhdG9yKCkoc3RkOjpwYWlyPE1lZGlh
VGltZSwgUmVmUHRyPE1lZGlhU2FtcGxlPj4gdmFsdWUpCiAgICAgewpAQCAtODQyLDcgKzg1NCw3
IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVNhbXBs
ZShTb3VyY2VCdWZmZXJQcml2YXRlKiwgUGFzCiAgICAgICAgICAgICAvLyBPdGhlcndpc2U6IFJl
bW92ZSBhbGwgY29kZWQgZnJhbWVzIGJldHdlZW4gdGhlIGNvZGVkIGZyYW1lcyByZW1vdmVkIGlu
IHRoZSBwcmV2aW91cyBzdGVwCiAgICAgICAgICAgICAvLyBhbmQgdGhlIG5leHQgcmFuZG9tIGFj
Y2VzcyBwb2ludCBhZnRlciB0aG9zZSByZW1vdmVkIGZyYW1lcy4KICAgICAgICAgICAgIGF1dG8g
Zmlyc3RfaXRlciA9IHN0ZDo6dXBwZXJfYm91bmQodHJhY2tCdWZmZXIuc2FtcGxlcy5iZWdpbigp
LCB0cmFja0J1ZmZlci5zYW1wbGVzLmVuZCgpLCAqZXJhc2VkU2FtcGxlcy5iZWdpbigpLCBTYW1w
bGVMZXNzVGhhbkNvbXBhcmF0b3IoKSk7Ci0gICAgICAgICAgICBhdXRvIHNlY29uZF9pdGVyID0g
c3RkOjpmaW5kX2lmKGZpcnN0X2l0ZXIsIHRyYWNrQnVmZmVyLnNhbXBsZXMuZW5kKCksIFNhbXBs
ZUlzUmFuZG9tQWNjZXNzUHJlZGljYXRlKCkpOworICAgICAgICAgICAgYXV0byBzZWNvbmRfaXRl
ciA9IHN0ZDo6ZmluZF9pZihmaXJzdF9pdGVyLCB0cmFja0J1ZmZlci5zYW1wbGVzLmVuZCgpLCBT
YW1wbGVJc1JhbmRvbUFjY2VzcygpKTsKICAgICAgICAgICAgIGlmIChmaXJzdF9pdGVyICE9IHRy
YWNrQnVmZmVyLnNhbXBsZXMuZW5kKCkpIHsKICAgICAgICAgICAgICAgICB0cmFja0J1ZmZlci5z
YW1wbGVzLmVyYXNlKGZpcnN0X2l0ZXIsIHNlY29uZF9pdGVyKTsKICAgICAgICAgICAgICAgICBl
cmFzZWRTYW1wbGVzLmluc2VydChmaXJzdF9pdGVyLCBzZWNvbmRfaXRlcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCmluZGV4IDZiMDExYzM5OTVhNmI1ZWQ2ZjNjYWEzOTkxZmZlMDEyYjVhM2FjMWEuLjIw
OWE0NGUyOGMyNzVmYzBhNzU2Y2E0MWRlMTBiMDc3OTA2OTM3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCkBAIC0yODk3LDMgKzI4OTcsMTEgQEAgX19aTjdXZWJDb3JlMTJXb3JrZXJUaHJlYWQxN3dv
cmtlclRocmVhZENvdW50RXYKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiBfX1pON1dlYkNvcmU5
UGFnZUdyb3VwMThjYXB0aW9uUHJlZmVyZW5jZXNFdgogI2VuZGlmCisKKyNpZiBFTkFCTEUoVklE
RU8pCitfX1pON1dlYkNvcmUyNU1lZGlhUGxheWVyRmFjdG9yeVN1cHBvcnQyM2NhbGxSZWdpc3Rl
ck1lZGlhRW5naW5lRVBGdlBGdlBGTjNXVEYxMFBhc3NPd25QdHJJTlNfMjdNZWRpYVBsYXllclBy
aXZhdGVJbnRlcmZhY2VFRUVQTlNfMTFNZWRpYVBsYXllckVFUEZ2Uk5TMV83SGFzaFNldElOUzFf
NlN0cmluZ0VOUzFfMTBTdHJpbmdIYXNoRU5TMV8xMEhhc2hUcmFpdHNJU0FfRUVFRUVQRk5TNV8x
MlN1cHBvcnRzVHlwZUVSS05TXzI4TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVyc0VFUEZ2Uk5T
MV82VmVjdG9ySVNBX0xtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUVFUEZ2dkVQRnZSS1NBX0VF
RQorI2VuZGlmCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorX19aTjdXZWJDb3JlMjZNb2Nr
TWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTE5cmVnaXN0ZXJNZWRpYUVuZ2luZUVQRnZQRk4zV1RGMTBQ
YXNzT3duUHRySU5TXzI3TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlRUVFUE5TXzExTWVkaWFQ
bGF5ZXJFRVBGdlJOUzFfN0hhc2hTZXRJTlMxXzZTdHJpbmdFTlMxXzEwU3RyaW5nSGFzaEVOUzFf
MTBIYXNoVHJhaXRzSVNBX0VFRUVFUEZOUzVfMTJTdXBwb3J0c1R5cGVFUktOU18yOE1lZGlhRW5n
aW5lU3VwcG9ydFBhcmFtZXRlcnNFRVBGdlJOUzFfNlZlY3RvcklTQV9MbTBFTlMxXzE1Q3Jhc2hP
bk92ZXJmbG93RUVFRVBGdnZFUEZ2UktTQV9FRQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTUwM2ZjMThiZTNkZjQ3
OTUxMGM2YTA4NTdhMWEyNTgxMWUyNGQ4Yi4uOTk4OGNjYzM5YjM1ODgwYmJkODlhMTFhZWJmZGY2
YzFmZTVmNzAxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtNTQwMiw2ICs1NDAyLDE2IEBACiAJCUNERUUzOTM3MTc5NzQyNTkw
MDFENzU4MCAvKiBQdWJsaWNVUkxNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUUzOTM2MTc5NzQyNTkwMDFENzU4MCAvKiBQdWJsaWNV
UkxNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJQ0RFRjRGRDcxN0U4NUM4RjAwQUVFMjRCIC8qIEdyaWRM
ZW5ndGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
RUY0RkQ2MTdFODVDOEYwMEFFRTI0QiAvKiBHcmlkTGVuZ3RoLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0RGMkIwMDQxODFGMDU5QzAwRjJCNDI0
IC8qIE1lZGlhRGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENERjJCMDAzMTgxRjA1OUMwMEYyQjQyNCAvKiBNZWRpYURlc2NyaXB0aW9u
LmggKi87IH07CisJCUNERjJCMDEwMTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrQm94LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjJCMDA2MTgyMDU0
MDYwMEYyQjQyNCAvKiBNb2NrQm94LmNwcCAqLzsgfTsKKwkJQ0RGMkIwMTExODIwNTQwNjAwRjJC
NDI0IC8qIE1vY2tCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENERjJCMDA3MTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrQm94LmggKi87IH07CisJCUNE
RjJCMDEyMTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREYyQjAwODE4
MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwICovOyB9Owor
CQlDREYyQjAxMzE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjJCMDA5
MTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5oICovOyB9Owor
CQlDREYyQjAxNDE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhU291cmNlUHJpdmF0ZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREYyQjAwQTE4
MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhU291cmNlUHJpdmF0ZS5jcHAgKi87IH07CisJCUNE
RjJCMDE1MTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFTb3VyY2VQcml2YXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREYyQjAwQjE4MjA1NDA2
MDBGMkI0MjQgLyogTW9ja01lZGlhU291cmNlUHJpdmF0ZS5oICovOyB9OworCQlDREYyQjAxNjE4
MjA1NDA3MDBGMkI0MjQgLyogTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGMkIwMEMxODIwNTQwNjAwRjJC
NDI0IC8qIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcCAqLzsgfTsKKwkJQ0RGMkIwMTcxODIw
NTQwNzAwRjJCNDI0IC8qIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREYyQjAwRDE4MjA1NDA2MDBGMkI0MjQg
LyogTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaCAqLzsgfTsKKwkJQ0RGMkIwMTgxODIwNTQwNzAw
RjJCNDI0IC8qIE1vY2tUcmFja3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RGMkIwMEUxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tUcmFja3MuY3Bw
ICovOyB9OworCQlDREYyQjAxOTE4MjA1NDA3MDBGMkI0MjQgLyogTW9ja1RyYWNrcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGMkIwMEYxODIwNTQw
NjAwRjJCNDI0IC8qIE1vY2tUcmFja3MuaCAqLzsgfTsKIAkJQ0RGNjVDQzgxNDVCMUU3NTAwQzRD
N0FBIC8qIE1lZGlhQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0QyN0Y2RTQxNDU3Njc4NzAwNzgyMDdEIC8qIE1lZGlhQ29udHJvbGxl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNE
RjY1Q0NBMTQ1QjQ0ODgwMEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjY1Q0M5MTQ1QjQz
QTcwMEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTA1N0ZBNTEyMjA3MzExMDBBNDc2
RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDU3RkEzMTIyMDczMTEwMEE0NzZENSAvKiBEb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwICovOyB9OwpAQCAtMTI0NDgsNiArMTI0NTgsMTYgQEAK
IAkJQ0RFRTM5MzgxNzk3NDI3NDAwMUQ3NTgwIC8qIFVSTFJlZ2lzdHJ5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFVSTFJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERUY0RkQ2
MTdFODVDOEYwMEFFRTI0QiAvKiBHcmlkTGVuZ3RoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEdyaWRMZW5ndGguaDsgcGF0aCA9IHN0eWxlL0dyaWRMZW5ndGguaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RGMkIwMDMxODFGMDU5QzAwRjJCNDI0IC8qIE1lZGlh
RGVzY3JpcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFEZXNj
cmlwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREYyQjAwNjE4MjA1NDA2
MDBGMkI0MjQgLyogTW9ja0JveC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNb2NrQm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RGMkIwMDcx
ODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tCb3guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTW9ja0JveC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREYyQjAwODE4
MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREYyQjAwOTE4MjA1NDA2MDBGMkI0
MjQgLyogTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RGMkIwMEExODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tNZWRpYVNvdXJj
ZVByaXZhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja01l
ZGlhU291cmNlUHJpdmF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERjJC
MDBCMTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFTb3VyY2VQcml2YXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tNZWRpYVNvdXJjZVByaXZhdGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RGMkIwMEMxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tT
b3VyY2VCdWZmZXJQcml2YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0RGMkIwMEQxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tTb3VyY2VCdWZmZXJQcml2
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERjJCMDBFMTgyMDU0MDYwMEYy
QjQyNCAvKiBNb2NrVHJhY2tzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE1vY2tUcmFja3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREYyQjAw
RjE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja1RyYWNrcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNb2NrVHJhY2tzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNE
RjY1Q0M5MTQ1QjQzQTcwMEM0QzdBQSAvKiBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFDb250cm9sbGVySW50ZXJmYWNlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNERjY1Q0NDMTQ1QjZBRkUwMEM0QzdBQSAv
KiBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNIVE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0UwNTdGQTMxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2Vy
Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1
bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTUxMjIsNiArMTUxNDIsNyBAQAogCQk1OUM3N0YxMDEwNTQ1OTFDMDA1MDYxMDQgLyogbW9jayAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0RGMkIwMDUx
ODIwNTNERjAwRjJCNDI0IC8qIG1lZGlhc291cmNlICovLAogCQkJCTA3QzU5QjYxMTdGNENGODcw
MDBGQkNCQiAvKiBNb2NrTWVkaWFTdHJlYW1DZW50ZXIuY3BwICovLAogCQkJCTA3QzU5QjYyMTdG
NENGODcwMDBGQkNCQiAvKiBNb2NrTWVkaWFTdHJlYW1DZW50ZXIuaCAqLywKIAkJCQk1OTMwOUEx
MDExRjRBRTU4MDAyNTA2MDMgLyogRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmNwcCAqLywK
QEAgLTIwMjIyLDYgKzIwMjQzLDIzIEBACiAJCQluYW1lID0gTWVkaWFDb250cm9sczsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUNERjJCMDA1MTgyMDUzREYwMEYyQjQyNCAv
KiBtZWRpYXNvdXJjZSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJQ0RGMkIwMDYxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tCb3guY3BwICovLAorCQkJCUNE
RjJCMDA3MTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrQm94LmggKi8sCisJCQkJQ0RGMkIwMDgxODIw
NTQwNjAwRjJCNDI0IC8qIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcCAqLywKKwkJCQlD
REYyQjAwOTE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuaCAq
LywKKwkJCQlDREYyQjAwQTE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhU291cmNlUHJpdmF0
ZS5jcHAgKi8sCisJCQkJQ0RGMkIwMEIxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tNZWRpYVNvdXJj
ZVByaXZhdGUuaCAqLywKKwkJCQlDREYyQjAwQzE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja1NvdXJj
ZUJ1ZmZlclByaXZhdGUuY3BwICovLAorCQkJCUNERjJCMDBEMTgyMDU0MDYwMEYyQjQyNCAvKiBN
b2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oICovLAorCQkJCUNERjJCMDBFMTgyMDU0MDYwMEYyQjQy
NCAvKiBNb2NrVHJhY2tzLmNwcCAqLywKKwkJCQlDREYyQjAwRjE4MjA1NDA2MDBGMkI0MjQgLyog
TW9ja1RyYWNrcy5oICovLAorCQkJKTsKKwkJCXBhdGggPSBtZWRpYXNvdXJjZTsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUNFNzlENjg2MTdGMjIwRUQwMDgxNUMwMCAvKiBp
b3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjIzMTEs
NiArMjIzNDksNyBAQAogCQkJCTg1QUNBOTg2MEE5QjUyMDMwMDY3MUU5MCAvKiBET01DaGFyYWN0
ZXJEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUU3MTE4RjBBQzVENTM1MDA1MzI3MEYgLyog
RE9NQ2hhcmFjdGVyRGF0YUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTA4OUNEOTBB
OThDNDI4MDBBMjc1QUEgLyogRE9NQ29tbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RGMkIw
MTUxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tNZWRpYVNvdXJjZVByaXZhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTA3OEUwOTM3MTdEMTZCMkMwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbURlc2NyaXB0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RTcxMTkwMEFDNUQ1MzUwMDUzMjcwRiAvKiBET01D
b21tZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMUEzN0FGMDk3QzcxNUYwMDE5
RjNEOCAvKiBET01Db3JlLmggaW4gSGVhZGVycyAqLywKQEAgLTIyNjI0LDYgKzIyNjYzLDcgQEAK
IAkJCQkwNzhFMDkxODE3RDE0RDFDMDA0MjBBQTEgLyogTWVkaWFTdHJlYW1UcmFjay5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOEFDODIyRkQxODBGQzAzMzAwRkI2NEQ1IC8qIFJlbmRlck5hbWVkRmxv
d0ZyYWdtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUQ3MTlEOTE4MTEwNkUwMDAxNkRDNTEg
LyogSURCSW5kZXguaCBpbiBIZWFkZXJzICovLAorCQkJCUNERjJCMDE5MTgyMDU0MDcwMEYyQjQy
NCAvKiBNb2NrVHJhY2tzLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTZGRTA4MjBFNkNDQzI4MDBC
RjYwODggLyogRE9NV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZUludGVybmFsLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0OTgzOTE1MDBGMUU3NkI0MDBDMjM3ODIgLyogRE9NV2ViS2l0Q1NTTWF0cml4Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0OTgzOTE1MjBGMUU3NkI0MDBDMjM3ODIgLyogRE9NV2ViS2l0
Q1NTTWF0cml4SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLApAQCAtMjI2MzMsNiArMjI2NzMsNyBA
QAogCQkJCTMxNjExRTYzMEUxQzRFMTQwMEY2QTU3OSAvKiBET01XZWJLaXRDU1NUcmFuc2Zvcm1W
YWx1ZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkzRjJCMzNFQjE2NUFGMTU2MDBFMzk4
N0MgLyogRE9NV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzRjJC
MzNFRDE2NUFGMTU2MDBFMzk4N0MgLyogRE9NV2ViS2l0Q1NTVmlld3BvcnRSdWxlSW50ZXJuYWwu
aCBpbiBIZWFkZXJzICovLAorCQkJCUNERjJCMDE3MTgyMDU0MDcwMEYyQjQyNCAvKiBNb2NrU291
cmNlQnVmZmVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEExOTU5MzIxNDdFQTE2RTAw
RDFFQTYxIC8qIERPTVdlYktpdE5hbWVkRmxvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEExOTU5
MzQxNDdFQTE2RTAwRDFFQTYxIC8qIERPTVdlYktpdE5hbWVkRmxvd0ludGVybmFsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzMUMwRkY0QzBFNENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNp
dGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI0MTg1LDYgKzI0MjI2LDcgQEAKIAkJCQk1
MTRDNzY3QTBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGVDbGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxNEM3NjdCMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZUlu
dGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUU0MTQzNDE2QTY1OTYzMDBDNjMzQzcgLyog
UmVzb3VyY2VIYW5kbGVUeXBlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RGMkIwMTExODIwNTQw
NjAwRjJCNDI0IC8qIE1vY2tCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NkQzNzNGMEFEQkE1
REUwMEE0NTU0RCAvKiBSZXNvdXJjZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDBBM0E3
MzExNDA1QTM5ODAwRkI4RUQzIC8qIFJlc291cmNlTG9hZGVyT3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFBRjUwMzYxNkYxMDBGNjAwOTVCMkU4IC8qIFJlc291cmNlTG9hZGVyVHlwZXMu
aCBpbiBIZWFkZXJzICovLApAQCAtMjQ3NDksNiArMjQ3OTEsNyBAQAogCQkJCUE4MjRCNDY1MEUy
RUYyRUEwMDgxQTdCNyAvKiBUZXh0UnVuLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NDhCMUI3QTBG
M0EyRjlCMDA0N0E5RTIgLyogVGV4dFNpemVBZGp1c3RtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMkMzREE0QjBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dFN0cmVhbS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQ0RGMkIwMTMxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tNZWRpYVBsYXllck1lZGlhU291
cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzU5RTk0MDE0RUYxQ0Y4MDAyNkEyREQgLyogVGV4
dFRyYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzU5RTk0MzE0RUYxQ0Y4MDAyNkEyREQgLyog
VGV4dFRyYWNrQ3VlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzFBOUVDMzE2OEZCQzU1MDAyNjI5
RjkgLyogVGV4dFRyYWNrQ3VlR2VuZXJpYy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTgyMSw2ICsy
NTg2NCw3IEBACiAJCQkJRDM1OUQ3OTIxMjlDQTNDMDAwMDZFNUQyIC8qIERPTUhUTUxEZXRhaWxz
RWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1QkE0RDBDMEFBNjg4NjgwMDg4MDUyRCAv
KiBET01IVE1MRGlyZWN0b3J5RWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1QkE0RDBF
MEFBNjg4NjgwMDg4MDUyRCAvKiBET01IVE1MRGl2RWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAor
CQkJCUNERjJCMDE0MTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFTb3VyY2VQcml2YXRlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTg1QkE0RDEwMEFBNjg4NjgwMDg4MDUyRCAvKiBET01IVE1M
RExpc3RFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVCQ0JDMTQwQUJCQTg3RDAwMzgx
MTYwIC8qIERPTUhUTUxEb2N1bWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1REYyRUVFMEFB
Mzg3Q0IwMEFENjRDNSAvKiBET01IVE1MRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLApAQCAtMjU5
MjYsNiArMjU5NzAsNyBAQAogCQkJCTMxQzBGRjRBMEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJL
aXRBbmltYXRpb25FdmVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUEyRThBRTQxMTZBNDk4Q0Yw
MDZCQjNBQSAvKiBET01XZWJLaXRDU1NGaWx0ZXJSdWxlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MzEwNjAzN0ExNDMyODFDRDAwQUJGNEJBIC8qIERPTVdlYktpdENTU0ZpbHRlclZhbHVlLm1tIGlu
IFNvdXJjZXMgKi8sCisJCQkJQ0RGMkIwMTAxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tCb3guY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUwN0UwRTZDQ0MyODAwQkY2MDg4IC8qIERPTVdlYktp
dENTU0tleWZyYW1lUnVsZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxNkZFMDgxMEU2Q0NDMjgw
MEJGNjA4OCAvKiBET01XZWJLaXRDU1NLZXlmcmFtZXNSdWxlLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDk4MzkxNTEwRjFFNzZCNDAwQzIzNzgyIC8qIERPTVdlYktpdENTU01hdHJpeC5tbSBpbiBT
b3VyY2VzICovLApAQCAtMjYyNTQsNiArMjYyOTksNyBAQAogCQkJCUE4NzFEQzI5MEExNTIwNTcw
MEIxMkE2OCAvKiBIVE1MVGl0bGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0Iz
ODc3MTIyODgzRTkwMEI4MUZGOCAvKiBIVE1MVG9rZW5pemVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTA3MDc1NjhCMTQyMjYyRDYwMDQxNDE2MSAvKiBIVE1MVHJhY2tFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUNERjJCMDEyMTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFQbGF5
ZXJNZWRpYVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdCMzcyNTEyMjg3MjE3MDBC
ODFGRjggLyogSFRNTFRyZWVCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlCN0U3OEJE
MTZGMTZDQzYwMDEyNjkxNCAvKiBIVE1MVHJlZUJ1aWxkZXJTaW11bGF0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQThFQTc5RjMwQTE5MTZERjAwQThFRjVGIC8qIEhUTUxVTGlzdEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzY1Myw2ICsyNzY5OSw3IEBACiAJCQkJNDMxQTMwODgx
M0I4Rjk3ODAwNzc5MUU0IC8qIFNWR0FuaW1hdGVkQm9vbGVhbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0M0E2MjVGOTEzQjMzMDQwMDBBQzk0QjggLyogU1ZHQW5pbWF0ZWRDb2xvci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3MUNDN0EyMDE1MkEwQkZFMDA5RUVBRjkgLyogU1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREYyQjAxNjE4MjA1NDA3MDBGMkI0
MjQgLyogTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDNG
NkZEOTYxM0JDRDBCMTAwMjI0MDUyIC8qIFNWR0FuaW1hdGVkSW50ZWdlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQTM1ODZFMTE1MjY0Rjk1MDAyMkE2NTkgLyogU1ZHQW5pbWF0ZWRJbnRlZ2Vy
T3B0aW9uYWxJbnRlZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCThBQzgyMkZDMTgwRkMwMzMw
MEZCNjRENSAvKiBSZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTI3NzgyLDYgKzI3ODI5LDcgQEAKIAkJCQk4NDc2QzlFRjExREY2QTU4MDA1NTVCMDIgLyogU1ZH
UGF0aFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E4MDBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHUGF0aFNlZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODQ3NkM5RTUxMURG
NkEwQjAwNTU1QjAyIC8qIFNWR1BhdGhTZWdMaXN0QnVpbGRlci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlDREYyQjAxODE4MjA1NDA3MDBGMkI0MjQgLyogTW9ja1RyYWNrcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwOEZGMTAyMDEyOTUwRjVBMDBGMDAyNzYgLyogU1ZHUGF0aFNlZ0xpc3RQcm9w
ZXJ0eVRlYXJPZmYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODRCNkI5NzcxMjBGMTNFNTAwQjhF
RkFGIC8qIFNWR1BhdGhTZWdMaXN0U291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0MTlE
MkI5MTIwRTBDNzYwMDE0MUY4RiAvKiBTVkdQYXRoU3RyaW5nQnVpbGRlci5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDFhZWJi
ZGU5ZmJkMjMwMjljM2JmOTM2ZDZkOTJjOWRiMDU4MjJiNGEuLjRjMjQ5NTRiMjljZWE0ZDg4YTRk
NDBjNjZlMTYzOTZlNzdkNTA0NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcApAQCAtMTQzNyw4ICsxNDM3LDggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphdWRp
b1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFjayogdHJhY2spCiB7CiAgICAgaWYgKCFSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFi
bGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlRfVU5VU0VEKHRyYWNrLCBtX2F1ZGlv
VHJhY2tzLT5jb250YWlucyh0cmFjaykpOwotICAgIG1fYXVkaW9UcmFja3MtPnNjaGVkdWxlQ2hh
bmdlRXZlbnQoKTsKKyAgICBpZiAobV9hdWRpb1RyYWNrcyAmJiBtX2F1ZGlvVHJhY2tzLT5jb250
YWlucyh0cmFjaykpCisgICAgICAgIG1fYXVkaW9UcmFja3MtPnNjaGVkdWxlQ2hhbmdlRXZlbnQo
KTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0
VHJhY2sqIHRyYWNrKQpAQCAtMTQ3OCw4ICsxNDc4LDggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojp2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKFZpZGVvVHJhY2sqIHRyYWNrKQogewogICAgIGlm
ICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1Ry
YWNrRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUX1VOVVNFRCh0cmFjaywg
bV92aWRlb1RyYWNrcy0+Y29udGFpbnModHJhY2spKTsKLSAgICBtX3ZpZGVvVHJhY2tzLT5zY2hl
ZHVsZUNoYW5nZUV2ZW50KCk7CisgICAgaWYgKG1fdmlkZW9UcmFja3MgJiYgbV92aWRlb1RyYWNr
cy0+Y29udGFpbnModHJhY2spKQorICAgICAgICBtX3ZpZGVvVHJhY2tzLT5zY2hlZHVsZUNoYW5n
ZUV2ZW50KCk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrS2luZENoYW5n
ZWQoVGV4dFRyYWNrKiB0cmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA2ZWM3MWM4NmUxMDdhMGJkM2U0ZmE0ZDM5ZTBiOTY5
ZmM0MDk1NGI0Li5kNjRhYjM0YTU0OGJkYjQ1NGE2Zjc3YzI5NzRmYjBmZGMxNDEzYTQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBA
IC0xMjE1LDYgKzEyMTUsMTEgQEAgc2l6ZV90IE1lZGlhUGxheWVyOjpleHRyYU1lbW9yeUNvc3Qo
KSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUtPmV4dHJhTWVtb3J5Q29zdCgpOwogfQogCit2
b2lkIE1lZGlhUGxheWVyRmFjdG9yeVN1cHBvcnQ6OmNhbGxSZWdpc3Rlck1lZGlhRW5naW5lKE1l
ZGlhRW5naW5lUmVnaXN0ZXIgcmVnaXN0ZXJNZWRpYUVuZ2luZSkKK3sKKyAgICByZWdpc3Rlck1l
ZGlhRW5naW5lKGFkZE1lZGlhRW5naW5lKTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDJkODIzYmQ0YmVh
MmE5Njg0N2JlOWJlMzEzMzY4YzMwYTg4OWMwZmEuLjViMjIxYmJjNGQwMzczNDllNWZiYTM5MTZm
NWQwYzBkYmE2NTcyODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaApAQCAtNTQ5LDYgKzU0OSwxMiBAQCB0eXBlZGVmIHZvaWQgKCpNZWRpYUVu
Z2luZUNsZWFyTWVkaWFDYWNoZUZvclNpdGUpKGNvbnN0IFN0cmluZyYpOwogCiB0eXBlZGVmIHZv
aWQgKCpNZWRpYUVuZ2luZVJlZ2lzdHJhcikoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIsIE1lZGlh
RW5naW5lU3VwcG9ydGVkVHlwZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlLAogICAgIE1lZGlh
RW5naW5lR2V0U2l0ZXNJbk1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlLCBN
ZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZvclNpdGUpOwordHlwZWRlZiB2b2lkICgqTWVkaWFF
bmdpbmVSZWdpc3RlcikoTWVkaWFFbmdpbmVSZWdpc3RyYXIpOworCitjbGFzcyBNZWRpYVBsYXll
ckZhY3RvcnlTdXBwb3J0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBjYWxsUmVnaXN0ZXJN
ZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdGVyKTsKK307CiAKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjg2ZTgxYjQ5MzNlMzA0NjZkOThiMWEzOGRlYzI0OTg1OTEwMmRlYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja0Jv
eC5jcHAKQEAgLTAsMCArMSwxNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiTW9ja0JveC5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKworI2luY2x1
ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL0RhdGFWaWV3Lmg+
CisjaW5jbHVkZSA8cnVudGltZS9JbnQ4QXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTW9ja0JveDo6TW9ja0JveChB
cnJheUJ1ZmZlciogZGF0YSkKK3sKKyAgICBtX3R5cGUgPSBwZWVrVHlwZShkYXRhKTsKKyAgICBt
X2xlbmd0aCA9IHBlZWtMZW5ndGgoZGF0YSk7CisgICAgQVNTRVJUKG1fbGVuZ3RoID49IDgpOwor
fQorCitTdHJpbmcgTW9ja0JveDo6cGVla1R5cGUoQXJyYXlCdWZmZXIqIGRhdGEpCit7CisgICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIFJlZlB0cjxJbnQ4QXJyYXk+IGFycmF5ID0gSlND
OjpJbnQ4QXJyYXk6OmNyZWF0ZShkYXRhLCAwLCA0KTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IDQ7ICsraSkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoYXJyYXktPml0ZW0oaSkpOworICAgIHJl
dHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK3NpemVfdCBNb2NrQm94OjpwZWVrTGVuZ3Ro
KEFycmF5QnVmZmVyKiBkYXRhKQoreworICAgIFJlZlB0cjxKU0M6OkRhdGFWaWV3PiB2aWV3ID0g
SlNDOjpEYXRhVmlldzo6Y3JlYXRlKGRhdGEsIDAsIGRhdGEtPmJ5dGVMZW5ndGgoKSk7CisgICAg
cmV0dXJuIHZpZXctPmdldDx1aW50MzJfdD4oNCwgdHJ1ZSk7Cit9CisKK01vY2tUcmFja0JveDo6
TW9ja1RyYWNrQm94KEFycmF5QnVmZmVyKiBkYXRhKQorICAgIDogTW9ja0JveChkYXRhKQorewor
ICAgIEFTU0VSVChtX2xlbmd0aCA9PSAxNyk7CisKKyAgICBSZWZQdHI8SlNDOjpEYXRhVmlldz4g
dmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShkYXRhLCAwLCBkYXRhLT5ieXRlTGVuZ3RoKCkp
OworICAgIG1fdHJhY2tJRCA9IHZpZXctPmdldDxpbnQzMl90Pig4LCB0cnVlKTsKKworICAgIFN0
cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBSZWZQdHI8SW50OEFycmF5PiBhcnJheSA9IEpTQzo6
SW50OEFycmF5OjpjcmVhdGUoZGF0YSwgMTIsIDQpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
NDsgKytpKQorICAgICAgICBidWlsZGVyLmFwcGVuZChhcnJheS0+aXRlbShpKSk7CisgICAgbV9j
b2RlYyA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKKworICAgIG1fa2luZCA9IHN0YXRpY19jYXN0PFRy
YWNrS2luZD4odmlldy0+Z2V0PHVpbnQ4X3Q+KDE2LCB0cnVlKSk7Cit9CisKK2NvbnN0IFN0cmlu
ZyYgTW9ja1RyYWNrQm94Ojp0eXBlKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmlu
ZywgdHJhaywgKEFTQ0lJTGl0ZXJhbCgidHJhayIpKSk7CisgICAgcmV0dXJuIHRyYWs7Cit9CisK
K01vY2tJbml0aWFsaXphdGlvbkJveDo6TW9ja0luaXRpYWxpemF0aW9uQm94KEFycmF5QnVmZmVy
KiBkYXRhKQorICAgIDogTW9ja0JveChkYXRhKQoreworICAgIEFTU0VSVChtX2xlbmd0aCA+PSAx
Myk7CisKKyAgICBSZWZQdHI8SlNDOjpEYXRhVmlldz4gdmlldyA9IEpTQzo6RGF0YVZpZXc6OmNy
ZWF0ZShkYXRhLCAwLCBkYXRhLT5ieXRlTGVuZ3RoKCkpOworICAgIGludDMyX3QgdGltZVZhbHVl
ID0gdmlldy0+Z2V0PGludDMyX3Q+KDgsIHRydWUpOworICAgIGludDMyX3QgdGltZVNjYWxlID0g
dmlldy0+Z2V0PGludDMyX3Q+KDEyLCB0cnVlKTsKKyAgICBtX2R1cmF0aW9uID0gTWVkaWFUaW1l
KHRpbWVWYWx1ZSwgdGltZVNjYWxlKTsKKyAgICAKKyAgICBzaXplX3Qgb2Zmc2V0ID0gMTY7CisK
KyAgICB3aGlsZSAob2Zmc2V0IDwgbV9sZW5ndGgpIHsKKyAgICAgICAgUmVmUHRyPEFycmF5QnVm
ZmVyPiBzdWJCdWZmZXIgPSBkYXRhLT5zbGljZShvZmZzZXQpOworICAgICAgICBpZiAoTW9ja0Jv
eDo6cGVla1R5cGUoc3ViQnVmZmVyLmdldCgpKSAhPSBNb2NrVHJhY2tCb3g6OnR5cGUoKSkKKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIE1vY2tUcmFja0JveCB0cmFja0JveChzdWJCdWZm
ZXIuZ2V0KCkpOworICAgICAgICBvZmZzZXQgKz0gdHJhY2tCb3gubGVuZ3RoKCk7CisgICAgICAg
IG1fdHJhY2tzLmFwcGVuZCh0cmFja0JveCk7CisgICAgfQorfQorCitjb25zdCBTdHJpbmcmIE1v
Y2tJbml0aWFsaXphdGlvbkJveDo6dHlwZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIGluaXQsIChBU0NJSUxpdGVyYWwoImluaXQiKSkpOworICAgIHJldHVybiBpbml0Owor
fQorCitNb2NrU2FtcGxlQm94OjpNb2NrU2FtcGxlQm94KEFycmF5QnVmZmVyKiBkYXRhKQorICAg
IDogTW9ja0JveChkYXRhKQoreworICAgIEFTU0VSVChtX2xlbmd0aCA9PSAyOSk7CisKKyAgICBS
ZWZQdHI8SlNDOjpEYXRhVmlldz4gdmlldyA9IEpTQzo6RGF0YVZpZXc6OmNyZWF0ZShkYXRhLCAw
LCBkYXRhLT5ieXRlTGVuZ3RoKCkpOworICAgIGludDMyX3QgdGltZVNjYWxlID0gdmlldy0+Z2V0
PGludDMyX3Q+KDgsIHRydWUpOworCisgICAgaW50MzJfdCB0aW1lVmFsdWUgPSB2aWV3LT5nZXQ8
aW50MzJfdD4oMTIsIHRydWUpOworICAgIG1fcHJlc2VudGF0aW9uVGltZXN0YW1wID0gTWVkaWFU
aW1lKHRpbWVWYWx1ZSwgdGltZVNjYWxlKTsKKworICAgIHRpbWVWYWx1ZSA9IHZpZXctPmdldDxp
bnQzMl90PigxNiwgdHJ1ZSk7CisgICAgbV9kZWNvZGVUaW1lc3RhbXAgPSBNZWRpYVRpbWUodGlt
ZVZhbHVlLCB0aW1lU2NhbGUpOworCisgICAgdGltZVZhbHVlID0gdmlldy0+Z2V0PGludDMyX3Q+
KDIwLCB0cnVlKTsKKyAgICBtX2R1cmF0aW9uID0gTWVkaWFUaW1lKHRpbWVWYWx1ZSwgdGltZVNj
YWxlKTsKKworICAgIG1fdHJhY2tJRCA9IHZpZXctPmdldDxpbnQzMl90PigyNCwgdHJ1ZSk7Cisg
ICAgbV9mbGFncyA9IHZpZXctPmdldDx1aW50OF90PigyOCwgdHJ1ZSk7Cit9CisKK2NvbnN0IFN0
cmluZyYgTW9ja1NhbXBsZUJveDo6dHlwZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIHNtcGwsIChBU0NJSUxpdGVyYWwoInNtcGwiKSkpOworICAgIHJldHVybiBzbXBsOwor
fQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9tZWRpYXNvdXJjZS9Nb2NrQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tCb3guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZjBjMGQzY2UyMDg1MTJlNzI4NDY1MWRj
ZjdmODc3ZWYyODI1MDE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmgKQEAgLTAsMCArMSwxNDcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaWZuZGVmIE1vY2tCb3hfaAorI2RlZmluZSBNb2NrQm94X2gKKworI2lmIEVOQUJMRShNRURJ
QV9TT1VSQ0UpCisKKyNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgQXJyYXlCdWZmZXI7Cit9
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gQSBNb2NrQm94IHJlcHJlc2VudHMgYSBJU08t
Qk1GRiBsaWtlIGRhdGEgc3RydWN0dXJlLiBEYXRhIGluIHRoZQorLy8gc3RydWN0dXJlIGlzIGxp
dHRsZS1lbmRpYW4uIFRoZSBsYXlvdXQgb2YgdGhlIGRhdGEgc3RydWN0dXJlIGFzIGZvbGxvd3M6
CisvLworLy8gNCBieXRlcyA6IDRDQyA6IGlkZW50aWZpZXIKKy8vIDQgYnl0ZXMgOiB1bnNpZ25l
ZCA6IGxlbmd0aAorLy8gCitjbGFzcyBNb2NrQm94IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgU3Ry
aW5nIHBlZWtUeXBlKEpTQzo6QXJyYXlCdWZmZXIqKTsKKyAgICBzdGF0aWMgc2l6ZV90IHBlZWtM
ZW5ndGgoSlNDOjpBcnJheUJ1ZmZlciopOworCisgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fbGVuZ3RoOyB9CisgICAgY29uc3QgU3RyaW5nJiB0eXBlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlOyB9CisKK3Byb3RlY3RlZDoKKyAgICBNb2NrQm94KEpTQzo6QXJyYXlCdWZmZXIq
KTsKKworICAgIHNpemVfdCBtX2xlbmd0aDsKKyAgICBTdHJpbmcgbV90eXBlOworfTsKKworLy8g
QSBNb2NrVHJhY2tCb3ggZXh0ZW5kcyBNb2NrQm94IGFuZCBleHBlY3RzIHRoZSBmb2xsb3dpbmcK
Ky8vIGRhdGEgc3RydWN0dXJlOgorLy8KKy8vIDQgYnl0ZXMgOiA0Q0MgOiBpZGVudGlmaWVyID0g
J3RyYWsnCisvLyA0IGJ5dGVzIDogdW5zaWduZWQgOiBsZW5ndGggPSAxNworLy8gNCBieXRlcyA6
IHNpZ25lZCA6IHRyYWNrIElECisvLyA0IGJ5dGVzIDogNENDIDogY29kZWMKKy8vIDEgYnl0ZSAg
OiB1bnNpZ25lZCA6IGtpbmQKKy8vIAorY2xhc3MgTW9ja1RyYWNrQm94IEZJTkFMIDogcHVibGlj
IE1vY2tCb3ggeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIHR5cGUoKTsKKyAg
ICBNb2NrVHJhY2tCb3goSlNDOjpBcnJheUJ1ZmZlciopOworCisgICAgaW50MzJfdCB0cmFja0lE
KCkgY29uc3QgeyByZXR1cm4gbV90cmFja0lEOyB9CisKKyAgICBjb25zdCBTdHJpbmcmIGNvZGVj
KCkgY29uc3QgeyByZXR1cm4gbV9jb2RlYzsgfQorCisgICAgZW51bSBUcmFja0tpbmQgeyBBdWRp
bywgVmlkZW8sIFRleHQgfTsKKyAgICBUcmFja0tpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1f
a2luZDsgfQorCitwcm90ZWN0ZWQ6CisgICAgdWludDhfdCBtX3RyYWNrSUQ7CisgICAgU3RyaW5n
IG1fY29kZWM7CisgICAgVHJhY2tLaW5kIG1fa2luZDsKK307CisKKy8vIEEgTW9ja0luaXRpYWxp
emF0aW9uQm94IGV4dGVuZHMgTW9ja0JveCBhbmQgY29udGFpbnMgMCBvciBtb3JlCisvLyBNb2Nr
VHJhY2tCb3hlcy4gSXQgZXhwZWN0cyB0aGUgZm9sbG93aW5nIGRhdGEgc3RydWN0dXJlOgorLy8K
Ky8vIDQgYnl0ZXMgOiA0Q0MgOiBpZGVudGlmaWVyID0gJ2luaXQnCisvLyA0IGJ5dGVzIDogdW5z
aWduZWQgOiBsZW5ndGggPSAxNiArICgxMyAqIG51bSB0cmFja3MpCisvLyA0IGJ5dGVzIDogc2ln
bmVkIDogZHVyYXRpb24gdGltZSB2YWx1ZQorLy8gNCBieXRlcyA6IHNpZ25lZCA6IGR1cmF0aW9u
IHRpbWUgc2NhbGUKKy8vIE4gYnl0ZXMgOiBNb2NrVHJhY2tCb3hlcyA6IHRyYWNrcworLy8KK2Ns
YXNzIE1vY2tJbml0aWFsaXphdGlvbkJveCBGSU5BTCA6IHB1YmxpYyBNb2NrQm94IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nJiB0eXBlKCk7CisgICAgTW9ja0luaXRpYWxpemF0
aW9uQm94KEpTQzo6QXJyYXlCdWZmZXIqKTsKKworICAgIE1lZGlhVGltZSBkdXJhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fZHVyYXRpb247IH0KKyAgICBjb25zdCBWZWN0b3I8TW9ja1RyYWNrQm94
PiYgdHJhY2tzKCkgY29uc3QgeyByZXR1cm4gbV90cmFja3M7IH0KKworcHJvdGVjdGVkOgorICAg
IE1lZGlhVGltZSBtX2R1cmF0aW9uOworICAgIFZlY3RvcjxNb2NrVHJhY2tCb3g+IG1fdHJhY2tz
OworfTsKKworLy8gQSBNb2NrU2FtcGxlQm94IGV4dGVuZHMgTW9ja0JveCBhbmQgZXhwZWN0cyB0
aGUgZm9sbG93aW5nIGRhdGEgc3RydWN0dXJlOgorLy8KKy8vIDQgYnl0ZXMgOiA0Q0MgOiBpZGVu
dGlmaWVyID0gJ3NtcGwnCisvLyA0IGJ5dGVzIDogdW5zaWduZWQgOiBsZW5ndGggPSAyOQorLy8g
NCBieXRlcyA6IHNpZ25lZCA6IHRpbWUgc2NhbGUKKy8vIDQgYnl0ZXMgOiBzaWduZWQgOiBwcmVz
ZW50YXRpb24gdGltZSB2YWx1ZQorLy8gNCBieXRlcyA6IHNpZ25lZCA6IGRlY29kZSB0aW1lIHZh
bHVlCisvLyA0IGJ5dGVzIDogc2lnbmVkIDogZHVyYXRpb24gdGltZSB2YWx1ZQorLy8gNCBieXRl
cyA6IHNpZ25lZCA6IHRyYWNrIElECisvLyAxIGJ5dGUgIDogdW5zaWduZWQgOiBmbGFncworLy8K
K2NsYXNzIE1vY2tTYW1wbGVCb3ggRklOQUwgOiBwdWJsaWMgTW9ja0JveCB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNvbnN0IFN0cmluZyYgdHlwZSgpOworICAgIE1vY2tTYW1wbGVCb3goSlNDOjpB
cnJheUJ1ZmZlciopOworCisgICAgTWVkaWFUaW1lIHByZXNlbnRhdGlvblRpbWVzdGFtcCgpIGNv
bnN0IHsgcmV0dXJuIG1fcHJlc2VudGF0aW9uVGltZXN0YW1wOyB9CisgICAgTWVkaWFUaW1lIGRl
Y29kZVRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2RlVGltZXN0YW1wOyB9CisgICAg
TWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kdXJhdGlvbjsgfQorICAgIGlu
dDMyX3QgdHJhY2tJRCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhY2tJRDsgfQorICAgIHVpbnQ4X3Qg
ZmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzOyB9CisKKyAgICBlbnVtIHsgSXNTeW5jID0g
MSA8PCAwIH07CisgICAgYm9vbCBpc1N5bmMoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzICYgSXNT
eW5jOyB9CisKK3Byb3RlY3RlZDoKKyAgICBNZWRpYVRpbWUgbV9wcmVzZW50YXRpb25UaW1lc3Rh
bXA7CisgICAgTWVkaWFUaW1lIG1fZGVjb2RlVGltZXN0YW1wOworICAgIE1lZGlhVGltZSBtX2R1
cmF0aW9uOworICAgIGludDMyX3QgbV90cmFja0lEOworICAgIHVpbnQ4X3QgbV9mbGFnczsKK307
CisKK30KKworI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1l
ZGlhU291cmNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNmZkZjE0Yzc5OTU3NzI3NGU0NzFlMTI0ODE1ZGNi
NDQ0NGQ3ZWFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKQEAgLTAsMCArMSwy
MzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9ja01lZGlh
UGxheWVyTWVkaWFTb3VyY2UuaCIKKworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisKKyNpbmNs
dWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFTb3Vy
Y2UuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllci5oIgorI2luY2x1ZGUgIk1vY2tNZWRpYVNvdXJj
ZVByaXZhdGUuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9N
YWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworLy8gTWVkaWFQbGF5ZXIgRW5pZ25lIFN1cHBvcnQKK3ZvaWQgTW9ja01l
ZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdp
c3RyYXIgcmVnaXN0cmFyKQoreworICAgIHJlZ2lzdHJhcihjcmVhdGUsIGdldFN1cHBvcnRlZFR5
cGVzLCBzdXBwb3J0c1R5cGUsIDAsIDAsIDApOworfQorCitQYXNzT3duUHRyPE1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZT4gTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmNyZWF0ZShNZWRp
YVBsYXllciogcGxheWVyKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgTW9ja01lZGlhUGxh
eWVyTWVkaWFTb3VyY2UocGxheWVyKSk7Cit9CisKK3N0YXRpYyBIYXNoU2V0PFN0cmluZz4gbWlt
ZVR5cGVDYWNoZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PFN0cmluZz4s
IGNhY2hlLCAoKSk7CisgICAgc3RhdGljIGJvb2wgaXNJbml0aWFsaXplZCA9IGZhbHNlOworCisg
ICAgaWYgKCFpc0luaXRpYWxpemVkKSB7CisgICAgICAgIGlzSW5pdGlhbGl6ZWQgPSB0cnVlOwor
ICAgICAgICBjYWNoZS5hZGQoQVNDSUlMaXRlcmFsKCJ2aWRlby9tb2NrIikpOworICAgIH0KKwor
ICAgIHJldHVybiBjYWNoZTsKK30KKwordm9pZCBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6
Z2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmc+JiBzdXBwb3J0ZWRUeXBlcykKK3sKKyAg
ICBzdXBwb3J0ZWRUeXBlcyA9IG1pbWVUeXBlQ2FjaGUoKTsKK30KKworTWVkaWFQbGF5ZXI6OlN1
cHBvcnRzVHlwZSBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6c3VwcG9ydHNUeXBlKGNvbnN0
IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCit7CisgICAgaWYgKCFw
YXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UpCisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNO
b3RTdXBwb3J0ZWQ7CisKKyAgICBpZiAoIW1pbWVUeXBlQ2FjaGUoKS5jb250YWlucyhwYXJhbWV0
ZXJzLnR5cGUpKQorICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOwor
CisgICAgaWYgKHBhcmFtZXRlcnMuY29kZWNzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIE1l
ZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZDsKKworICAgIHJldHVybiBwYXJhbWV0ZXJzLmNvZGVj
cyA9PSAibW9jayIgPyBNZWRpYVBsYXllcjo6SXNTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6TWF5
QmVTdXBwb3J0ZWQ7Cit9CisKK01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpNb2NrTWVkaWFQ
bGF5ZXJNZWRpYVNvdXJjZShNZWRpYVBsYXllciogcGxheWVyKQorICAgIDogbV9wbGF5ZXIocGxh
eWVyKQorICAgICwgbV9jdXJyZW50VGltZSgwKQorICAgICwgbV9kdXJhdGlvbigwKQorICAgICwg
bV9yZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpIYXZlTm90aGluZykKKyAgICAsIG1fbmV0d29ya1N0
YXRlKE1lZGlhUGxheWVyOjpFbXB0eSkKKyAgICAsIG1fcGxheWluZyhmYWxzZSkKK3sKK30KKwor
TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6On5Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZSgp
Cit7Cit9CisKK3ZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmxvYWQoY29uc3QgU3Ry
aW5nJikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBNb2NrTWVkaWFQ
bGF5ZXJNZWRpYVNvdXJjZTo6bG9hZChjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPEhUTUxNZWRp
YVNvdXJjZT4gc291cmNlKQoreworICAgIG1fbWVkaWFTb3VyY2UgPSBzb3VyY2U7CisgICAgbV9t
ZWRpYVNvdXJjZVByaXZhdGUgPSBNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjpjcmVhdGUodGhpcyk7
CisgICAgbV9tZWRpYVNvdXJjZS0+c2V0UHJpdmF0ZUFuZE9wZW4oKm1fbWVkaWFTb3VyY2VQcml2
YXRlKTsKK30KKwordm9pZCBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6Y2FuY2VsTG9hZCgp
Cit7Cit9CisKK3ZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnBsYXkoKQoreworICAg
IG1fcGxheWluZyA9IDE7CisgICAgY2FsbE9uTWFpblRocmVhZChiaW5kKCZNb2NrTWVkaWFQbGF5
ZXJNZWRpYVNvdXJjZTo6YWR2YW5jZUN1cnJlbnRUaW1lLCB0aGlzKSk7Cit9CisKK3ZvaWQgTW9j
a01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnBhdXNlKCkKK3sKKyAgICBtX3BsYXlpbmcgPSAwOwor
fQorCitJbnRTaXplIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpuYXR1cmFsU2l6ZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIEludFNpemUoKTsKK30KKworYm9vbCBNb2NrTWVkaWFQbGF5ZXJN
ZWRpYVNvdXJjZTo6aGFzVmlkZW8oKSBjb25zdAoreworICAgIHJldHVybiBtX21lZGlhU291cmNl
UHJpdmF0ZSA/IG1fbWVkaWFTb3VyY2VQcml2YXRlLT5oYXNWaWRlbygpIDogZmFsc2U7Cit9CisK
K2Jvb2wgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6Omhhc0F1ZGlvKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9tZWRpYVNvdXJjZVByaXZhdGUgPyBtX21lZGlhU291cmNlUHJpdmF0ZS0+aGFz
QXVkaW8oKSA6IGZhbHNlOworfQorCit2b2lkIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpz
ZXRWaXNpYmxlKGJvb2wpCit7Cit9CisKK2Jvb2wgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6
OnNlZWtpbmcoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBNb2NrTWVk
aWFQbGF5ZXJNZWRpYVNvdXJjZTo6cGF1c2VkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fcGxh
eWluZzsKK30KKworTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBNb2NrTWVkaWFQbGF5ZXJNZWRp
YVNvdXJjZTo6bmV0d29ya1N0YXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9uZXR3b3JrU3Rh
dGU7Cit9CisKK01lZGlhUGxheWVyOjpSZWFkeVN0YXRlIE1vY2tNZWRpYVBsYXllck1lZGlhU291
cmNlOjpyZWFkeVN0YXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZWFkeVN0YXRlOworfQor
CitQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpidWZm
ZXJlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWVkaWFTb3VyY2UgPyBtX21lZGlhU291cmNl
LT5idWZmZXJlZCgpIDogVGltZVJhbmdlczo6Y3JlYXRlKCk7Cit9CisKK2Jvb2wgTW9ja01lZGlh
UGxheWVyTWVkaWFTb3VyY2U6OmRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCit2b2lkIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpzZXRTaXpl
KGNvbnN0IEludFNpemUmKQoreworfQorCit2b2lkIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNl
OjpwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JikKK3sKK30KKworZG91Ymxl
IE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpjdXJyZW50VGltZURvdWJsZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fY3VycmVudFRpbWU7Cit9CisKK2RvdWJsZSBNb2NrTWVkaWFQbGF5ZXJN
ZWRpYVNvdXJjZTo6ZHVyYXRpb25Eb3VibGUoKSBjb25zdAoreworICAgIHJldHVybiBtX2R1cmF0
aW9uOworfQorCit2b2lkIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpzZWVrRG91YmxlKGRv
dWJsZSB0aW1lKQoreworICAgIG1fY3VycmVudFRpbWUgPSBzdGQ6Om1pbih0aW1lLCBtX2R1cmF0
aW9uKTsKKyAgICBtX3BsYXllci0+dGltZUNoYW5nZWQoKTsKKworICAgIGlmIChtX3BsYXlpbmcp
CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoYmluZCgmTW9ja01lZGlhUGxheWVyTWVkaWFTb3Vy
Y2U6OmFkdmFuY2VDdXJyZW50VGltZSwgdGhpcykpOworfQorCit2b2lkIE1vY2tNZWRpYVBsYXll
ck1lZGlhU291cmNlOjphZHZhbmNlQ3VycmVudFRpbWUoKQoreworICAgIFJlZlB0cjxUaW1lUmFu
Z2VzPiBidWZmZXJlZCA9IHRoaXMtPmJ1ZmZlcmVkKCk7CisgICAgc2l6ZV90IHBvcyA9IGJ1ZmZl
cmVkLT5maW5kKG1fY3VycmVudFRpbWUpOworICAgIGlmIChwb3MgPT0gbm90Rm91bmQpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fY3VycmVudFRpbWUgPSBzdGQ6Om1pbihtX2R1cmF0aW9uLCBi
dWZmZXJlZC0+ZW5kKHBvcywgSUdOT1JFX0VYQ0VQVElPTikpOworICAgIG1fcGxheWVyLT50aW1l
Q2hhbmdlZCgpOworfQorCit2b2lkIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjp1cGRhdGVE
dXJhdGlvbihkb3VibGUgZHVyYXRpb24pCit7CisgICAgaWYgKG1fZHVyYXRpb24gPT0gZHVyYXRp
b24pCisgICAgICAgIHJldHVybjsKKworICAgIG1fZHVyYXRpb24gPSBkdXJhdGlvbjsKKyAgICBt
X3BsYXllci0+ZHVyYXRpb25DaGFuZ2VkKCk7Cit9CisKK3ZvaWQgTW9ja01lZGlhUGxheWVyTWVk
aWFTb3VyY2U6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0
ZSkKK3sKKyAgICBpZiAocmVhZHlTdGF0ZSA9PSBtX3JlYWR5U3RhdGUpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fcmVhZHlTdGF0ZSA9IHJlYWR5U3RhdGU7CisgICAgbV9wbGF5ZXItPnJlYWR5
U3RhdGVDaGFuZ2VkKCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBs
YXllck1lZGlhU291cmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjA2N2Q4YmUwODA5MzVmOTJhZTlhNmI5N2My
YjBkNmU4NTMwZDMwOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuaApAQCAtMCwwICsx
LDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZV9oCisj
ZGVmaW5lIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlX2gKKworI2lmIEVOQUJMRShNRURJQV9T
T1VSQ0UpCisKKyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBNZWRpYVNvdXJjZTsKK2NsYXNzIE1vY2tNZWRpYVNvdXJjZVByaXZh
dGU7CisKK2NsYXNzIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlIDogcHVibGljIE1lZGlhUGxh
eWVyUHJpdmF0ZUludGVyZmFjZSB7CitwdWJsaWM6CisgICAgLy8gTWVkaWFQbGF5ZXIgRW5naW5l
IFN1cHBvcnQKKyAgICBzdGF0aWMgdm9pZCByZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5l
UmVnaXN0cmFyKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxNZWRpYVBsYXllclByaXZhdGVJbnRl
cmZhY2U+IGNyZWF0ZShNZWRpYVBsYXllciopOworICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRl
ZFR5cGVzKEhhc2hTZXQ8U3RyaW5nPiYgdHlwZXMpOworICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6
U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0
ZXJzJik7CisKKyAgICB2aXJ0dWFsIH5Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZSgpOworCisg
ICAgdm9pZCBhZHZhbmNlQ3VycmVudFRpbWUoKTsKKyAgICB2b2lkIHVwZGF0ZUR1cmF0aW9uKGRv
dWJsZSk7CisKKyAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUo
KSBjb25zdCBPVkVSUklERTsKKyAgICB2b2lkIHNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJl
YWR5U3RhdGUpOworCitwcml2YXRlOgorICAgIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlKE1l
ZGlhUGxheWVyKik7CisKKyAgICAvLyBNZWRpYVBsYXllclByaXZhdGUgT3ZlcnJpZGVzCisgICAg
dmlydHVhbCB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJiB1cmwpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYgdXJsLCBQYXNzUmVmUHRyPEhUTUxNZWRpYVNvdXJj
ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxMb2FkKCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHBsYXkoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGF1c2Uo
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEludFNpemUgbmF0dXJhbFNpemUoKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVmlkZW8oKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIGJvb2wgaGFzQXVkaW8oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0VmlzaWJsZShib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2Vla2luZygpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBwYXVzZWQoKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZlcmVk
KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGRpZExvYWRpbmdQcm9ncmVzcygp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRTaXplKGNvbnN0IEludFNpemUm
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgSW50UmVjdCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgZG91YmxlIGN1cnJlbnRUaW1lRG91
YmxlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBkb3VibGUgZHVyYXRpb25Eb3VibGUo
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2Vla0RvdWJsZShkb3VibGUgdGlt
ZSkgT1ZFUlJJREU7CisKKyAgICBNZWRpYVBsYXllciogbV9wbGF5ZXI7CisgICAgUmVmUHRyPEhU
TUxNZWRpYVNvdXJjZT4gbV9tZWRpYVNvdXJjZTsKKyAgICBSZWZQdHI8TW9ja01lZGlhU291cmNl
UHJpdmF0ZT4gbV9tZWRpYVNvdXJjZVByaXZhdGU7CisKKyAgICBkb3VibGUgbV9jdXJyZW50VGlt
ZTsKKyAgICBkb3VibGUgbV9kdXJhdGlvbjsKKyAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBt
X3JlYWR5U3RhdGU7CisgICAgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBtX25ldHdvcmtTdGF0
ZTsKKyAgICBib29sIG1fcGxheWluZzsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TT1VSQ0UpCisKKyNlbmRpZiAvLyBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZV9oCisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01l
ZGlhU291cmNlUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlh
c291cmNlL01vY2tNZWRpYVNvdXJjZVByaXZhdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlMTQ4ZjU3ZmI5
ZTdlYzJiNThkY2NjZWZiOGM3ZDhhNWI3NTBiNjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJjZVByaXZhdGUu
Y3BwCkBAIC0wLDAgKzEsMTUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIk1vY2tNZWRpYVNvdXJjZVByaXZhdGUuaCIKKworI2lmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCisKKyNpbmNsdWRlICJDb250ZW50VHlwZS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQ
bGFjZWhvbGRlci5oIgorI2luY2x1ZGUgIk1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmgiCisj
aW5jbHVkZSAiTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitSZWZQdHI8TW9ja01lZGlhU291cmNlUHJpdmF0ZT4gTW9ja01lZGlhU291cmNlUHJpdmF0
ZTo6Y3JlYXRlKE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlKiBwYXJlbnQpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBNb2NrTWVkaWFTb3VyY2VQcml2YXRlKHBhcmVudCkpOworfQorCitN
b2NrTWVkaWFTb3VyY2VQcml2YXRlOjpNb2NrTWVkaWFTb3VyY2VQcml2YXRlKE1vY2tNZWRpYVBs
YXllck1lZGlhU291cmNlKiBwYXJlbnQpCisgICAgOiBtX3BsYXllcihwYXJlbnQpCisgICAgLCBt
X2R1cmF0aW9uKDApCisgICAgLCBtX2lzRW5kZWQoZmFsc2UpCit7Cit9CisKK01vY2tNZWRpYVNv
dXJjZVByaXZhdGU6On5Nb2NrTWVkaWFTb3VyY2VQcml2YXRlKCkKK3sKK30KKworTWVkaWFTb3Vy
Y2VQcml2YXRlOjpBZGRTdGF0dXMgTW9ja01lZGlhU291cmNlUHJpdmF0ZTo6YWRkU291cmNlQnVm
ZmVyKGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgUmVmUHRyPFNvdXJjZUJ1ZmZlclBy
aXZhdGU+JiBvdXRQcml2YXRlKQoreworICAgIE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMg
cGFyYW1ldGVyczsKKyAgICBwYXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UgPSB0cnVlOworICAgIHBh
cmFtZXRlcnMudHlwZSA9IGNvbnRlbnRUeXBlLnR5cGUoKTsKKyAgICBwYXJhbWV0ZXJzLmNvZGVj
cyA9IGNvbnRlbnRUeXBlLnBhcmFtZXRlcihBU0NJSUxpdGVyYWwoImNvZGVjcyIpKTsKKyAgICBp
ZiAoTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKSA9
PSBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQpCisgICAgICAgIHJldHVybiBOb3RTdXBwb3J0
ZWQ7CisKKyAgICBtX3NvdXJjZUJ1ZmZlcnMuYXBwZW5kKE1vY2tTb3VyY2VCdWZmZXJQcml2YXRl
OjpjcmVhdGUodGhpcykpOworICAgIG91dFByaXZhdGUgPSBtX3NvdXJjZUJ1ZmZlcnMubGFzdCgp
OworCisgICAgcmV0dXJuIE9rOworfQorCit2b2lkIE1vY2tNZWRpYVNvdXJjZVByaXZhdGU6OnJl
bW92ZVNvdXJjZUJ1ZmZlcihTb3VyY2VCdWZmZXJQcml2YXRlKiBidWZmZXIpCit7CisgICAgQVNT
RVJUKG1fc291cmNlQnVmZmVycy5jb250YWlucyhidWZmZXIpKTsKKworICAgIHNpemVfdCBwb3Mg
PSBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMuZmluZChidWZmZXIpOworICAgIGlmIChwb3MgIT0gbm90
Rm91bmQpCisgICAgICAgIG1fYWN0aXZlU291cmNlQnVmZmVycy5yZW1vdmUocG9zKTsKKworICAg
IHBvcyA9IG1fc291cmNlQnVmZmVycy5maW5kKGJ1ZmZlcik7CisgICAgbV9zb3VyY2VCdWZmZXJz
LnJlbW92ZShwb3MpOworfQorCitkb3VibGUgTW9ja01lZGlhU291cmNlUHJpdmF0ZTo6ZHVyYXRp
b24oKQoreworICAgIHJldHVybiBtX2R1cmF0aW9uOworfQorCit2b2lkIE1vY2tNZWRpYVNvdXJj
ZVByaXZhdGU6OnNldER1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikKK3sKKyAgICBpZiAoZHVyYXRp
b24gPT0gbV9kdXJhdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kdXJhdGlvbiA9IGR1
cmF0aW9uOworICAgIG1fcGxheWVyLT51cGRhdGVEdXJhdGlvbihkdXJhdGlvbik7Cit9CisKK3Zv
aWQgTW9ja01lZGlhU291cmNlUHJpdmF0ZTo6bWFya0VuZE9mU3RyZWFtKEVuZE9mU3RyZWFtU3Rh
dHVzIHN0YXR1cykKK3sKKyAgICBVTlVTRURfUEFSQU0oc3RhdHVzKTsKKyAgICBtX2lzRW5kZWQg
PSB0cnVlOworfQorCit2b2lkIE1vY2tNZWRpYVNvdXJjZVByaXZhdGU6OnVubWFya0VuZE9mU3Ry
ZWFtKCkKK3sKKyAgICBtX2lzRW5kZWQgPSBmYWxzZTsKK30KKworTWVkaWFQbGF5ZXI6OlJlYWR5
U3RhdGUgTW9ja01lZGlhU291cmNlUHJpdmF0ZTo6cmVhZHlTdGF0ZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcGxheWVyLT5yZWFkeVN0YXRlKCk7Cit9CisKK3ZvaWQgTW9ja01lZGlhU291cmNl
UHJpdmF0ZTo6c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRl
KQoreworICAgIG1fcGxheWVyLT5zZXRSZWFkeVN0YXRlKHJlYWR5U3RhdGUpOworfQorCit2b2lk
IE1vY2tNZWRpYVNvdXJjZVByaXZhdGU6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRDaGFuZ2VBY3Rp
dmVTdGF0ZShNb2NrU291cmNlQnVmZmVyUHJpdmF0ZSogYnVmZmVyLCBib29sIGFjdGl2ZSkKK3sK
KyAgICBpZiAoYWN0aXZlICYmICFtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMuY29udGFpbnMoYnVmZmVy
KSkKKyAgICAgICAgbV9hY3RpdmVTb3VyY2VCdWZmZXJzLmFwcGVuZChidWZmZXIpOworCisgICAg
aWYgKCFhY3RpdmUpIHsKKyAgICAgICAgc2l6ZV90IHBvc2l0aW9uID0gbV9hY3RpdmVTb3VyY2VC
dWZmZXJzLmZpbmQoYnVmZmVyKTsKKyAgICAgICAgaWYgKHBvc2l0aW9uICE9IG5vdEZvdW5kKQor
ICAgICAgICAgICAgbV9hY3RpdmVTb3VyY2VCdWZmZXJzLnJlbW92ZShwb3NpdGlvbik7CisgICAg
fQorfQorCitzdGF0aWMgYm9vbCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZUhhc0F1ZGlvKFBhc3NS
ZWZQdHI8TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU+IHBycFNvdXJjZUJ1ZmZlcikKK3sKKyAgICBy
ZXR1cm4gcHJwU291cmNlQnVmZmVyLT5oYXNBdWRpbygpOworfQorCitib29sIE1vY2tNZWRpYVNv
dXJjZVByaXZhdGU6Omhhc0F1ZGlvKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RkOjphbnlfb2Yo
bV9hY3RpdmVTb3VyY2VCdWZmZXJzLmJlZ2luKCksIG1fYWN0aXZlU291cmNlQnVmZmVycy5lbmQo
KSwgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGVIYXNBdWRpbyk7Cit9CisKK3N0YXRpYyBib29sIE1v
Y2tTb3VyY2VCdWZmZXJQcml2YXRlSGFzVmlkZW8oUGFzc1JlZlB0cjxNb2NrU291cmNlQnVmZmVy
UHJpdmF0ZT4gcHJwU291cmNlQnVmZmVyKQoreworICAgIHJldHVybiBwcnBTb3VyY2VCdWZmZXIt
Pmhhc1ZpZGVvKCk7Cit9CisKK2Jvb2wgTW9ja01lZGlhU291cmNlUHJpdmF0ZTo6aGFzVmlkZW8o
KSBjb25zdAoreworICAgIHJldHVybiBzdGQ6OmFueV9vZihtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMu
YmVnaW4oKSwgbV9hY3RpdmVTb3VyY2VCdWZmZXJzLmVuZCgpLCBNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZUhhc1ZpZGVvKTsKK30KKworfTsKKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3Vy
Y2VQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDY0MGRkNmUyOTEyMWJmZGVjMTczYmVmOTc2MDViMDcx
OGYxNzhjZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
bWVkaWFzb3VyY2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5oCkBAIC0wLDAgKzEsODAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVU
RVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRF
UiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIE1vY2tNZWRpYVNvdXJjZVByaXZhdGVfaAorI2RlZmluZSBNb2NrTWVk
aWFTb3VyY2VQcml2YXRlX2gKKworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisKKyNpbmNsdWRl
ICJNZWRpYVNvdXJjZVByaXZhdGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBN
b2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTsKK2NsYXNzIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRl
OworY2xhc3MgVGltZVJhbmdlczsKKworY2xhc3MgTW9ja01lZGlhU291cmNlUHJpdmF0ZSBGSU5B
TCA6IHB1YmxpYyBNZWRpYVNvdXJjZVByaXZhdGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWZQ
dHI8TW9ja01lZGlhU291cmNlUHJpdmF0ZT4gY3JlYXRlKE1vY2tNZWRpYVBsYXllck1lZGlhU291
cmNlKik7CisgICAgdmlydHVhbCB+TW9ja01lZGlhU291cmNlUHJpdmF0ZSgpOworCisgICAgY29u
c3QgVmVjdG9yPE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKj4mIGFjdGl2ZVNvdXJjZUJ1ZmZlcnMo
KSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnM7IH0KKworICAgIGJvb2wgaGFz
QXVkaW8oKSBjb25zdDsKKyAgICBib29sIGhhc1ZpZGVvKCkgY29uc3Q7CisKKyAgICBNb2NrTWVk
aWFQbGF5ZXJNZWRpYVNvdXJjZSogcGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5ZXI7IH0K
KworcHJpdmF0ZToKKyAgICBNb2NrTWVkaWFTb3VyY2VQcml2YXRlKE1vY2tNZWRpYVBsYXllck1l
ZGlhU291cmNlKik7CisKKyAgICAvLyBNZWRpYVNvdXJjZVByaXZhdGUgT3ZlcnJpZGVzCisgICAg
dmlydHVhbCBBZGRTdGF0dXMgYWRkU291cmNlQnVmZmVyKGNvbnN0IENvbnRlbnRUeXBlJiwgUmVm
UHRyPFNvdXJjZUJ1ZmZlclByaXZhdGU+JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBkb3VibGUg
ZHVyYXRpb24oKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RHVyYXRpb24oZG91Ymxl
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbWFya0VuZE9mU3RyZWFtKEVuZE9mU3RyZWFt
U3RhdHVzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdW5tYXJrRW5kT2ZTdHJlYW0oKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUo
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVhZHlTdGF0ZShNZWRpYVBs
YXllcjo6UmVhZHlTdGF0ZSkgT1ZFUlJJREU7CisKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZh
dGVEaWRDaGFuZ2VBY3RpdmVTdGF0ZShNb2NrU291cmNlQnVmZmVyUHJpdmF0ZSosIGJvb2wgYWN0
aXZlKTsKKyAgICB2b2lkIHJlbW92ZVNvdXJjZUJ1ZmZlcihTb3VyY2VCdWZmZXJQcml2YXRlKik7
CisKKyAgICBmcmllbmQgY2xhc3MgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU7CisKKyAgICBNb2Nr
TWVkaWFQbGF5ZXJNZWRpYVNvdXJjZSogbV9wbGF5ZXI7CisgICAgZG91YmxlIG1fZHVyYXRpb247
CisgICAgVmVjdG9yPFJlZlB0cjxNb2NrU291cmNlQnVmZmVyUHJpdmF0ZT4+IG1fc291cmNlQnVm
ZmVyczsKKyAgICBWZWN0b3I8TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUqPiBtX2FjdGl2ZVNvdXJj
ZUJ1ZmZlcnM7CisgICAgYm9vbCBtX2lzRW5kZWQ7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFC
TEUoTUVESUFfU09VUkNFKQorCisjZW5kaWYgLy8gTW9ja01lZGlhU291cmNlUHJpdmF0ZV9oCisK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9j
a1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9t
ZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmMzODZk
YzgzNGE3N2Y2NjdiZjkxNDYxYzhhOWMyOTY5N2M3ZGVjMAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclBy
aXZhdGUuY3BwCkBAIC0wLDAgKzEsMjEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIk1vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmgiCisKKyNpZiBFTkFCTEUoTUVE
SUFfU09VUkNFKQorCisjaW5jbHVkZSAiTWVkaWFEZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIk1l
ZGlhUGxheWVyLmgiCisjaW5jbHVkZSAiTWVkaWFTYW1wbGUuaCIKKyNpbmNsdWRlICJNb2NrQm94
LmgiCisjaW5jbHVkZSAiTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRlICJN
b2NrTWVkaWFTb3VyY2VQcml2YXRlLmgiCisjaW5jbHVkZSAiTW9ja1RyYWNrcy5oIgorI2luY2x1
ZGUgIlNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaCIKKyNpbmNsdWRlIDxtYXA+CisjaW5jbHVk
ZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IE1vY2tNZWRpYVNhbXBsZSBGSU5BTCA6IHB1YmxpYyBNZWRpYVNhbXBsZSB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZlB0cjxNb2NrTWVkaWFTYW1wbGU+IGNyZWF0ZShjb25zdCBNb2NrU2FtcGxl
Qm94JiBib3gpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBNb2NrTWVkaWFTYW1wbGUoYm94KSk7IH0K
KyAgICB2aXJ0dWFsIH5Nb2NrTWVkaWFTYW1wbGUoKSB7IH0KKworICAgIHZpcnR1YWwgTWVkaWFU
aW1lIHByZXNlbnRhdGlvblRpbWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2JveC5wcmVz
ZW50YXRpb25UaW1lc3RhbXAoKTsgfQorICAgIHZpcnR1YWwgTWVkaWFUaW1lIGRlY29kZVRpbWUo
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2JveC5kZWNvZGVUaW1lc3RhbXAoKTsgfQorICAg
IHZpcnR1YWwgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9i
b3guZHVyYXRpb24oKTsgfQorICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIHRyYWNrSUQoKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiBtX2lkOyB9CisKKyAgICB2aXJ0dWFsIFNhbXBsZUZsYWdzIGZs
YWdzKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gTm9uZTsgfQorICAgIHZpcnR1YWwgUGxhdGZv
cm1TYW1wbGUgcGxhdGZvcm1TYW1wbGUoKSBPVkVSUklERTsKKworcHJvdGVjdGVkOgorICAgIE1v
Y2tNZWRpYVNhbXBsZShjb25zdCBNb2NrU2FtcGxlQm94JiBib3gpCisgICAgICAgIDogbV9ib3go
Ym94KQorICAgICAgICAsIG1faWQoU3RyaW5nOjpmb3JtYXQoIiVkIiwgYm94LnRyYWNrSUQoKSkp
CisgICAgeworICAgIH0KKworICAgIE1vY2tTYW1wbGVCb3ggbV9ib3g7CisgICAgQXRvbWljU3Ry
aW5nIG1faWQ7Cit9OworCitQbGF0Zm9ybVNhbXBsZSBNb2NrTWVkaWFTYW1wbGU6OnBsYXRmb3Jt
U2FtcGxlKCkKK3sKKyAgICBQbGF0Zm9ybVNhbXBsZSBzYW1wbGUgPSB7IFBsYXRmb3JtU2FtcGxl
OjpNb2NrU2FtcGxlQm94VHlwZSwgeyAmbV9ib3ggfSB9OworICAgIHJldHVybiBzYW1wbGU7Cit9
CisKK2NsYXNzIE1vY2tNZWRpYURlc2NyaXB0aW9uIEZJTkFMIDogcHVibGljIE1lZGlhRGVzY3Jp
cHRpb24geworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8TW9ja01lZGlhRGVzY3JpcHRpb24+
IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gmIGJveCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1v
Y2tNZWRpYURlc2NyaXB0aW9uKGJveCkpOyB9CisgICAgdmlydHVhbCB+TW9ja01lZGlhRGVzY3Jp
cHRpb24oKSB7IH0KKworICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGNvZGVjKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gbV9ib3guY29kZWMoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1ZpZGVv
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9ib3gua2luZCgpID09IE1vY2tUcmFja0JveDo6
VmlkZW87IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNBdWRpbygpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIG1fYm94LmtpbmQoKSA9PSBNb2NrVHJhY2tCb3g6OkF1ZGlvOyB9CisgICAgdmlydHVhbCBi
b29sIGlzVGV4dCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fYm94LmtpbmQoKSA9PSBNb2Nr
VHJhY2tCb3g6OlRleHQ7IH0KKworcHJvdGVjdGVkOgorICAgIE1vY2tNZWRpYURlc2NyaXB0aW9u
KGNvbnN0IE1vY2tUcmFja0JveCYgYm94KSA6IG1fYm94KGJveCkgeyB9CisgICAgTW9ja1RyYWNr
Qm94IG1fYm94OworfTsKKworUmVmUHRyPE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlPiBNb2NrU291
cmNlQnVmZmVyUHJpdmF0ZTo6Y3JlYXRlKE1vY2tNZWRpYVNvdXJjZVByaXZhdGUqIHBhcmVudCkK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKHBhcmVu
dCkpOworfQorCitNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6TW9ja1NvdXJjZUJ1ZmZlclByaXZh
dGUoTW9ja01lZGlhU291cmNlUHJpdmF0ZSogcGFyZW50KQorICAgIDogbV9wYXJlbnQocGFyZW50
KQorICAgICwgbV9jbGllbnQoMCkKK3sKK30KKworTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6On5N
b2NrU291cmNlQnVmZmVyUHJpdmF0ZSgpCit7Cit9CisKK3ZvaWQgTW9ja1NvdXJjZUJ1ZmZlclBy
aXZhdGU6OnNldENsaWVudChTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50KiBjbGllbnQpCit7Cisg
ICAgbV9jbGllbnQgPSBjbGllbnQ7Cit9CisKK3ZvaWQgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6
OmFwcGVuZChjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCit7Cisg
ICAgbV9pbnB1dEJ1ZmZlci5hcHBlbmQoZGF0YSwgbGVuZ3RoKTsKKworICAgIHdoaWxlIChtX2lu
cHV0QnVmZmVyLnNpemUoKSkgeworICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9
IEFycmF5QnVmZmVyOjpjcmVhdGUobV9pbnB1dEJ1ZmZlci5kYXRhKCksIG1faW5wdXRCdWZmZXIu
c2l6ZSgpKTsKKyAgICAgICAgc2l6ZV90IGJveExlbmd0aCA9IE1vY2tCb3g6OnBlZWtMZW5ndGgo
YnVmZmVyLmdldCgpKTsKKyAgICAgICAgaWYgKGJveExlbmd0aCA+IGJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgU3RyaW5nIHR5cGUgPSBNb2NrQm94
OjpwZWVrVHlwZShidWZmZXIuZ2V0KCkpOworICAgICAgICBpZiAodHlwZSA9PSBNb2NrSW5pdGlh
bGl6YXRpb25Cb3g6OnR5cGUoKSkgeworICAgICAgICAgICAgTW9ja0luaXRpYWxpemF0aW9uQm94
IGluaXRCb3ggPSBNb2NrSW5pdGlhbGl6YXRpb25Cb3goYnVmZmVyLmdldCgpKTsKKyAgICAgICAg
ICAgIGRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoaW5pdEJveCk7CisgICAgICAgIH0K
KworICAgICAgICBpZiAodHlwZSA9PSBNb2NrU2FtcGxlQm94Ojp0eXBlKCkpIHsKKyAgICAgICAg
ICAgIE1vY2tTYW1wbGVCb3ggc2FtcGxlQm94ID0gTW9ja1NhbXBsZUJveChidWZmZXIuZ2V0KCkp
OworICAgICAgICAgICAgZGlkUmVjZWl2ZVNhbXBsZShzYW1wbGVCb3gpOworICAgICAgICB9CisK
KyAgICAgICAgbV9pbnB1dEJ1ZmZlci5yZW1vdmUoMCwgYm94TGVuZ3RoKTsKKyAgICB9Cit9CisK
K3ZvaWQgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNl
Z21lbnQoY29uc3QgTW9ja0luaXRpYWxpemF0aW9uQm94JiBpbml0Qm94KQoreworICAgIGlmICgh
bV9jbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGll
bnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudCBzZWdtZW50OworICAgIHNlZ21lbnQuZHVyYXRpb24g
PSBpbml0Qm94LmR1cmF0aW9uKCk7CisKKyAgICBmb3IgKGF1dG8gaXQgPSBpbml0Qm94LnRyYWNr
cygpLmJlZ2luKCk7IGl0ICE9IGluaXRCb3gudHJhY2tzKCkuZW5kKCk7ICsraXQpIHsKKyAgICAg
ICAgY29uc3QgTW9ja1RyYWNrQm94JiB0cmFja0JveCA9ICppdDsKKyAgICAgICAgaWYgKHRyYWNr
Qm94LmtpbmQoKSA9PSBNb2NrVHJhY2tCb3g6OlZpZGVvKSB7CisgICAgICAgICAgICBTb3VyY2VC
dWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ6OlZpZGVvVHJhY2tJbmZv
cm1hdGlvbiBpbmZvOworICAgICAgICAgICAgaW5mby50cmFjayA9IE1vY2tWaWRlb1RyYWNrUHJp
dmF0ZTo6Y3JlYXRlKHRyYWNrQm94KTsKKyAgICAgICAgICAgIGluZm8uZGVzY3JpcHRpb24gPSBN
b2NrTWVkaWFEZXNjcmlwdGlvbjo6Y3JlYXRlKHRyYWNrQm94KTsKKyAgICAgICAgICAgIHNlZ21l
bnQudmlkZW9UcmFja3MuYXBwZW5kKGluZm8pOworICAgICAgICB9IGVsc2UgaWYgKHRyYWNrQm94
LmtpbmQoKSA9PSBNb2NrVHJhY2tCb3g6OkF1ZGlvKSB7CisgICAgICAgICAgICBTb3VyY2VCdWZm
ZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ6OkF1ZGlvVHJhY2tJbmZvcm1h
dGlvbiBpbmZvOworICAgICAgICAgICAgaW5mby50cmFjayA9IE1vY2tBdWRpb1RyYWNrUHJpdmF0
ZTo6Y3JlYXRlKHRyYWNrQm94KTsKKyAgICAgICAgICAgIGluZm8uZGVzY3JpcHRpb24gPSBNb2Nr
TWVkaWFEZXNjcmlwdGlvbjo6Y3JlYXRlKHRyYWNrQm94KTsKKyAgICAgICAgICAgIHNlZ21lbnQu
YXVkaW9UcmFja3MuYXBwZW5kKGluZm8pOworICAgICAgICB9IGVsc2UgaWYgKHRyYWNrQm94Lmtp
bmQoKSA9PSBNb2NrVHJhY2tCb3g6OlRleHQpIHsKKyAgICAgICAgICAgIFNvdXJjZUJ1ZmZlclBy
aXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDo6VGV4dFRyYWNrSW5mb3JtYXRpb24g
aW5mbzsKKyAgICAgICAgICAgIGluZm8udHJhY2sgPSBNb2NrVGV4dFRyYWNrUHJpdmF0ZTo6Y3Jl
YXRlKHRyYWNrQm94KTsKKyAgICAgICAgICAgIGluZm8uZGVzY3JpcHRpb24gPSBNb2NrTWVkaWFE
ZXNjcmlwdGlvbjo6Y3JlYXRlKHRyYWNrQm94KTsKKyAgICAgICAgICAgIHNlZ21lbnQudGV4dFRy
YWNrcy5hcHBlbmQoaW5mbyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX2NsaWVudC0+c291
cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQodGhpcywgc2Vn
bWVudCk7Cit9CisKKwordm9pZCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZVNh
bXBsZShjb25zdCBNb2NrU2FtcGxlQm94JiBzYW1wbGVCb3gpCit7CisgICAgaWYgKCFtX2NsaWVu
dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVE
aWRSZWNlaXZlU2FtcGxlKHRoaXMsIE1vY2tNZWRpYVNhbXBsZTo6Y3JlYXRlKHNhbXBsZUJveCkp
OworfQorCit2b2lkIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjphYm9ydCgpCit7Cit9CisKK3Zv
aWQgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OnJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKQorewor
ICAgIG1fcGFyZW50LT5yZW1vdmVTb3VyY2VCdWZmZXIodGhpcyk7Cit9CisKK01lZGlhUGxheWVy
OjpSZWFkeVN0YXRlIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpyZWFkeVN0YXRlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9wYXJlbnQtPnBsYXllcigpLT5yZWFkeVN0YXRlKCk7Cit9CisKK3Zv
aWQgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJl
YWR5U3RhdGUgcmVhZHlTdGF0ZSkKK3sKKyAgICBtX3BhcmVudC0+cGxheWVyKCktPnNldFJlYWR5
U3RhdGUocmVhZHlTdGF0ZSk7Cit9CisKK2Jvb2wgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6Omhh
c1ZpZGVvKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICByZXR1cm4gbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVIYXNWaWRlbyh0
aGlzKTsKK30KKworYm9vbCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6aGFzQXVkaW8oKSBjb25z
dAoreworICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJl
dHVybiBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUhhc0F1ZGlvKHRoaXMpOworfQorCit9
CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjU2YmJmOWM4NGFjMTMxYWRhODQ2NjNkZDA2M2Y3MGEyZGMzMGQzMAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJj
ZUJ1ZmZlclByaXZhdGUuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBNb2Nr
U291cmNlQnVmZmVyUHJpdmF0ZV9oCisjZGVmaW5lIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlX2gK
KworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisKKyNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2
YXRlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTWVkaWFUaW1l
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
QXVkaW9UcmFja1ByaXZhdGU7CitjbGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlOworY2xhc3Mg
TW9ja0luaXRpYWxpemF0aW9uQm94OworY2xhc3MgTW9ja01lZGlhU291cmNlUHJpdmF0ZTsKK2Ns
YXNzIE1vY2tTYW1wbGVCb3g7CitjbGFzcyBUaW1lUmFuZ2VzOworY2xhc3MgVmlkZW9UcmFja1By
aXZhdGU7CisKK2NsYXNzIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlIDogcHVibGljIFNvdXJjZUJ1
ZmZlclByaXZhdGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8TW9ja1NvdXJjZUJ1ZmZl
clByaXZhdGU+IGNyZWF0ZShNb2NrTWVkaWFTb3VyY2VQcml2YXRlKik7CisgICAgdmlydHVhbCB+
TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUoKTsKKworICAgIGJvb2wgaGFzVmlkZW8oKSBjb25zdDsK
KyAgICBib29sIGhhc0F1ZGlvKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgTW9j
a1NvdXJjZUJ1ZmZlclByaXZhdGUoTW9ja01lZGlhU291cmNlUHJpdmF0ZSopOworCisgICAgLy8g
U291cmNlQnVmZmVyUHJpdmF0ZSBvdmVycmlkZXMKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50
KFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
YXBwZW5kKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGFib3J0KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIE1lZGlhUGxh
eWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSkgT1ZFUlJJREU7CisK
KyAgICB2b2lkIGRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoY29uc3QgTW9ja0luaXRp
YWxpemF0aW9uQm94Jik7CisgICAgdm9pZCBkaWRSZWNlaXZlU2FtcGxlKGNvbnN0IE1vY2tTYW1w
bGVCb3gmKTsKKworICAgIE1vY2tNZWRpYVNvdXJjZVByaXZhdGUqIG1fcGFyZW50OworICAgIFNv
dXJjZUJ1ZmZlclByaXZhdGVDbGllbnQqIG1fY2xpZW50OworCisgICAgVmVjdG9yPGNoYXI+IG1f
aW5wdXRCdWZmZXI7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU09VUkNFKSAm
JiBVU0UoQVZGT1VOREFUSU9OKQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrVHJhY2tzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1RyYWNrcy5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OGY4ODQwZDg0MDU0ZGUyODdhZDkwM2ZmNjQ5MzE1ZThhYTMzNmJmNQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1RyYWNrcy5j
cHAKQEAgLTAsMCArMSwyNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJNb2NrVHJhY2tzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL21lZGlhc291cmNlL01vY2tUcmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svbWVkaWFzb3VyY2UvTW9ja1RyYWNrcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmOGVkZWQ3NDUzN2NiNThm
YjQyMjI3NTdlMjFkYTM0YTg5MTAyNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tUcmFja3MuaApAQCAtMCwwICsxLDk1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2lmbmRlZiBNb2NrVHJhY2tzX2gKKyNkZWZpbmUgTW9ja1RyYWNrc19oCisK
KyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCisjaW5jbHVkZSAiQXVkaW9UcmFja1ByaXZhdGUu
aCIKKyNpbmNsdWRlICJJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSAiTW9ja0Jv
eC5oIgorI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgTW9ja0F1ZGlvVHJhY2tQcml2YXRlIDogcHVibGljIEF1ZGlvVHJhY2tQcml2
YXRlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPE1vY2tBdWRpb1RyYWNrUHJpdmF0ZT4g
Y3JlYXRlKGNvbnN0IE1vY2tUcmFja0JveCYgYm94KSB7IHJldHVybiBhZG9wdFJlZihuZXcgTW9j
a0F1ZGlvVHJhY2tQcml2YXRlKGJveCkpOyB9CisgICAgdmlydHVhbCB+TW9ja0F1ZGlvVHJhY2tQ
cml2YXRlKCkgeyB9CisKKyAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IHsgcmV0
dXJuIG1faWQ7IH0KKworcHJvdGVjdGVkOgorICAgIE1vY2tBdWRpb1RyYWNrUHJpdmF0ZShjb25z
dCBNb2NrVHJhY2tCb3gmIGJveCkKKyAgICAgICAgOiBtX2JveChib3gpCisgICAgICAgICwgbV9p
ZChTdHJpbmc6OmZvcm1hdCgiJWQiLCBib3gudHJhY2tJRCgpKSkKKyAgICB7CisgICAgfQorICAg
IE1vY2tUcmFja0JveCBtX2JveDsKKyAgICBBdG9taWNTdHJpbmcgbV9pZDsKK307CisKK2NsYXNz
IE1vY2tUZXh0VHJhY2tQcml2YXRlIDogcHVibGljIEluYmFuZFRleHRUcmFja1ByaXZhdGUgewor
cHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8TW9ja1RleHRUcmFja1ByaXZhdGU+IGNyZWF0ZShj
b25zdCBNb2NrVHJhY2tCb3gmIGJveCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tUZXh0VHJh
Y2tQcml2YXRlKGJveCkpOyB9CisgICAgdmlydHVhbCB+TW9ja1RleHRUcmFja1ByaXZhdGUoKSB7
IH0KKworICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsg
fQorCitwcm90ZWN0ZWQ6CisgICAgTW9ja1RleHRUcmFja1ByaXZhdGUoY29uc3QgTW9ja1RyYWNr
Qm94JiBib3gpCisgICAgICAgIDogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZShJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlOjpHZW5lcmljKQorICAgICAgICAsIG1fYm94KGJveCkKKyAgICAgICAgLCBtX2lk
KFN0cmluZzo6Zm9ybWF0KCIlZCIsIGJveC50cmFja0lEKCkpKQorICAgIHsKKyAgICB9CisgICAg
TW9ja1RyYWNrQm94IG1fYm94OworICAgIEF0b21pY1N0cmluZyBtX2lkOworfTsKKworCitjbGFz
cyBNb2NrVmlkZW9UcmFja1ByaXZhdGUgOiBwdWJsaWMgVmlkZW9UcmFja1ByaXZhdGUgeworcHVi
bGljOgorICAgIHN0YXRpYyBSZWZQdHI8TW9ja1ZpZGVvVHJhY2tQcml2YXRlPiBjcmVhdGUoY29u
c3QgTW9ja1RyYWNrQm94JiBib3gpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBNb2NrVmlkZW9UcmFj
a1ByaXZhdGUoYm94KSk7IH0KKyAgICB2aXJ0dWFsIH5Nb2NrVmlkZW9UcmFja1ByaXZhdGUoKSB7
IH0KKworICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsg
fQorCitwcm90ZWN0ZWQ6CisgICAgTW9ja1ZpZGVvVHJhY2tQcml2YXRlKGNvbnN0IE1vY2tUcmFj
a0JveCYgYm94KQorICAgICAgICA6IG1fYm94KGJveCkKKyAgICAgICAgLCBtX2lkKFN0cmluZzo6
Zm9ybWF0KCIlZCIsIGJveC50cmFja0lEKCkpKQorICAgIHsKKyAgICB9CisgICAgTW9ja1RyYWNr
Qm94IG1fYm94OworICAgIEF0b21pY1N0cmluZyBtX2lkOworfTsKKworfQorCisjZW5kaWYKKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggZWZiYjgxZDE3NDNj
NDlmM2ZjNzNkNWM2ZDJiMzQ3MzI0NWRlZjNmYi4uYzVmMjg4OTMxNzRmZDc4ZTNiNjc2NTE3ZWNm
N2U2ZTM3NWNlYjcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNzAs
OCArNzAsMTAgQEAKICNpbmNsdWRlICJMYW5ndWFnZS5oIgogI2luY2x1ZGUgIk1haW5GcmFtZS5o
IgogI2luY2x1ZGUgIk1hbGxvY1N0YXRpc3RpY3MuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllci5o
IgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiTWVtb3J5SW5mby5oIgorI2lu
Y2x1ZGUgIk1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgog
I2luY2x1ZGUgIlByaW50Q29udGV4dC5oIgogI2luY2x1ZGUgIlBzZXVkb0VsZW1lbnQuaCIKQEAg
LTIxNjcsNCArMjE2OSwxMSBAQCBib29sIEludGVybmFsczo6aXNQbHVnaW5VbmF2YWlsYWJpbGl0
eUluZGljYXRvck9ic2N1cmVkKEVsZW1lbnQqIGVsZW1lbnQsIEV4Y2VwdAogICAgIHJldHVybiBl
bWJlZC0+aXNSZXBsYWNlbWVudE9ic2N1cmVkKCk7CiB9CiAKKyNpZiBFTkFCTEUoTUVESUFfU09V
UkNFKQordm9pZCBJbnRlcm5hbHM6OmluaXRpYWxpemVNb2NrTWVkaWFTb3VyY2UoKQoreworICAg
IE1lZGlhUGxheWVyRmFjdG9yeVN1cHBvcnQ6OmNhbGxSZWdpc3Rlck1lZGlhRW5naW5lKE1vY2tN
ZWRpYVBsYXllck1lZGlhU291cmNlOjpyZWdpc3Rlck1lZGlhRW5naW5lKTsKK30KKyNlbmRpZgor
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA0OTVkY2I1NDg0OWRjYzc5Nzc1
ZTdjNzIxNWFhYTYzYzkyMzE1ZGUwLi5iODFmNWY1OGJjNWVhNzMxNDExNzU2ZmZlNzg2ZjQzZTJj
Y2FkNDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTMyNSw2ICszMjUsMTAg
QEAgcHVibGljOgogCiAgICAgYm9vbCBpc1BsdWdpblVuYXZhaWxhYmlsaXR5SW5kaWNhdG9yT2Jz
Y3VyZWQoRWxlbWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKIAorI2lmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCisgICAgdm9pZCBpbml0aWFsaXplTW9ja01lZGlhU291cmNlKCk7CisjZW5kaWYKKwogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBJbnRlcm5hbHMoRG9jdW1lbnQqKTsKICAgICBEb2N1bWVudCog
Y29udGV4dERvY3VtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwK
aW5kZXggYTdlYWU1OTc0MDBjNzhlMmE5NmQ1MDI5MzBhZDY2YjVjZWIzNTE5MS4uZjE4NDFkNjli
Y2YxZDhjZTJlNzNkOTBmMDllNTA0NmNkY2RiMmE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmlkbApAQCAtMjczLDQgKzI3Myw2IEBACiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gYm9v
bGVhbiBpc1BsdWdpblVuYXZhaWxhYmlsaXR5SW5kaWNhdG9yT2JzY3VyZWQoRWxlbWVudCBlbGVt
ZW50KTsKIAogICAgIFtSYWlzZXNFeGNlcHRpb25dIENsaWVudFJlY3Qgc2VsZWN0aW9uQm91bmRz
KCk7CisgICAgCisgICAgW0NvbmRpdGlvbmFsPU1FRElBX1NPVVJDRV0gdm9pZCBpbml0aWFsaXpl
TW9ja01lZGlhU291cmNlKCk7CiB9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGFkYWY3M2U1ZTUyZmEyMzJhMzY2MGFhZmJi
NDVmYWE5NTJjZDIxMGEuLmJkNzFmMTYyYjY3OTE0YmIyNDBkYWQ1NGM4MWM0ZTVmOGQ5MTljZWUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMy0xMC0yNCAgSmVyIE5vYmxlICA8amVyLm5vYmxl
QGFwcGxlLmNvbT4KKworICAgICAgICBbTVNFXSBBZGQgbW9jayBNZWRpYVNvdXJjZSBjbGFzc2Vz
IGZvciB0ZXN0aW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTIzMzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWFkZHNvdXJjZWJ1ZmZlci1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1z
b3VyY2UtYWRkc291cmNlYnVmZmVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlh
LXNvdXJjZS9tZWRpYS1zb3VyY2UtYXBwZW5kLWJ1ZmZlci1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtYXBwZW5kLWJ1ZmZlci5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWNh
bnBsYXl0aHJvdWdoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEt
c291cmNlL21lZGlhLXNvdXJjZS1jYW5wbGF5dGhyb3VnaC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWNsb3NlZC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtY2xvc2VkLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtcGxh
eS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRp
YS1zb3VyY2UtcGxheS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1zb3VyY2Uv
bW9jay1tZWRpYS1zb3VyY2UuanM6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3ZpZGVvLXRlc3Qu
anM6CisKIDIwMTMtMTEtMDYgIFZhbmkgSGVnZGUgIDx2YW5pLmhlZ2RlQHNhbXN1bmcuY29tPgog
CiAgICAgICAgIEFwcGxpZWQgYmFja2dyb3VuZCBjb2xvciBpcyBub3QgcmV0YWluZWQgYWZ0ZXIg
dHlwaW5nIGEgY2hhcmFjdGVycwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEt
c291cmNlL21lZGlhLXNvdXJjZS1hZGRzb3VyY2VidWZmZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1hZGRzb3VyY2VidWZmZXItZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiMzk2NGUwMDQ0YmMzZTM5NjE5ZTY5YzI1MDYxZjU5ZjU4
YjYxOWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2Uv
bWVkaWEtc291cmNlLWFkZHNvdXJjZWJ1ZmZlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBA
QAorCitURVNUKHNvdXJjZS5hZGRTb3VyY2VCdWZmZXIoImludmFsaWQiKSkgVEhST1dTKERPTUV4
Y2VwdGlvbi5OT1RfU1VQUE9SVEVEX0VSUikgT0sKK1RFU1Qoc291cmNlLmFkZFNvdXJjZUJ1ZmZl
cigiIikpIFRIUk9XUyhET01FeGNlcHRpb24uSU5WQUxJRF9BQ0NFU1NfRVJSKSBPSworRVhQRUNU
RUQgKE1lZGlhU291cmNlLmlzVHlwZVN1cHBvcnRlZCgiaW52YWxpZCIpID09ICdmYWxzZScpIE9L
CitFWFBFQ1RFRCAoTWVkaWFTb3VyY2UuaXNUeXBlU3VwcG9ydGVkKCJ2aWRlby9tb2NrOyBjb2Rl
Y3M9bW9jayIpID09ICd0cnVlJykgT0sKK1JVTih2aWRlby5zcmMgPSBVUkwuY3JlYXRlT2JqZWN0
VVJMKHNvdXJjZSkpCitFVkVOVChzb3VyY2VvcGVuKQorUlVOKHNvdXJjZUJ1ZmZlciA9IHNvdXJj
ZS5hZGRTb3VyY2VCdWZmZXIoInZpZGVvL21vY2s7IGNvZGVjcz1tb2NrIikpCitFWFBFQ1RFRCAo
c291cmNlLnNvdXJjZUJ1ZmZlcnNbMF0gPT0gJ1tvYmplY3QgU291cmNlQnVmZmVyXScpIE9LCitF
WFBFQ1RFRCAoc291cmNlLmFjdGl2ZVNvdXJjZUJ1ZmZlcnNbMF0gPT0gJ1tvYmplY3QgU291cmNl
QnVmZmVyXScpIE9LCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRp
YS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWFkZHNvdXJjZWJ1ZmZlci5odG1sIGIvTGF5b3V0
VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1hZGRzb3VyY2VidWZmZXIuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zOTZjNTNjMTk3NmFlMjkyZjczZmM3ZjYzY2M0YTY1ZmI0YmM5MGRhCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNv
dXJjZS1hZGRzb3VyY2VidWZmZXIuaHRtbApAQCAtMCwwICsxLDM5IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPm1vY2stbWVkaWEtc291cmNlPC90aXRsZT4K
KyAgICA8c2NyaXB0IHNyYz0ibW9jay1tZWRpYS1zb3VyY2UuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSIuLi92aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAg
IHZhciBzb3VyY2U7CisgICAgdmFyIHNvdXJjZUJ1ZmZlcjsKKworICAgIGlmICh3aW5kb3cuaW50
ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuaW5pdGlhbGl6ZU1vY2tNZWRpYVNvdXJjZSgpOwor
CisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOwor
CisgICAgICAgIHNvdXJjZSA9IG5ldyBNZWRpYVNvdXJjZSgpOworICAgICAgICB0ZXN0RE9NRXhj
ZXB0aW9uKCdzb3VyY2UuYWRkU291cmNlQnVmZmVyKCJpbnZhbGlkIiknLCAnRE9NRXhjZXB0aW9u
Lk5PVF9TVVBQT1JURURfRVJSJyk7CisgICAgICAgIHRlc3RET01FeGNlcHRpb24oJ3NvdXJjZS5h
ZGRTb3VyY2VCdWZmZXIoIiIpJywgJ0RPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlInKTsK
KyAgICAgICAgdGVzdEV4cGVjdGVkKCdNZWRpYVNvdXJjZS5pc1R5cGVTdXBwb3J0ZWQoImludmFs
aWQiKScsIGZhbHNlKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCdNZWRpYVNvdXJjZS5pc1R5cGVT
dXBwb3J0ZWQoInZpZGVvL21vY2s7IGNvZGVjcz1tb2NrIiknLCB0cnVlKTsKKworICAgICAgICB3
YWl0Rm9yRXZlbnQoJ3NvdXJjZW9wZW4nLCBzb3VyY2VPcGVuLCBmYWxzZSwgZmFsc2UsIHNvdXJj
ZSk7CisgICAgICAgIHJ1bigndmlkZW8uc3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChzb3VyY2Up
Jyk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc291cmNlT3BlbigpIHsKKyAgICAgICAgcnVuKCdz
b3VyY2VCdWZmZXIgPSBzb3VyY2UuYWRkU291cmNlQnVmZmVyKCJ2aWRlby9tb2NrOyBjb2RlY3M9
bW9jayIpJyk7CisgICAgICAgIHRlc3RFeHBlY3RlZCgnc291cmNlLnNvdXJjZUJ1ZmZlcnNbMF0n
LCBzb3VyY2VCdWZmZXIpOworICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3NvdXJjZS5hY3RpdmVTb3Vy
Y2VCdWZmZXJzWzBdJywgc291cmNlQnVmZmVyKTsKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0K
KyAgICAKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4K
KyAgICA8dmlkZW8+PC92aWRlbz4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVk
aWEtc291cmNlLWFwcGVuZC1idWZmZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEv
bWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1hcHBlbmQtYnVmZmVyLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wOWM2OThmNTFmNGQ2YTIwMGQwY2M2YjQ3YzEzMzIzZDk1NTQwNGFmCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1h
cHBlbmQtYnVmZmVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACisKK1JVTih2aWRlby5z
cmMgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKHNvdXJjZSkpCitFVkVOVChzb3VyY2VvcGVuKQorUlVO
KHNvdXJjZUJ1ZmZlciA9IHNvdXJjZS5hZGRTb3VyY2VCdWZmZXIoInZpZGVvL21vY2s7IGNvZGVj
cz1tb2NrIikpCitSVU4oc291cmNlQnVmZmVyLmFwcGVuZEJ1ZmZlcihpbml0U2VnbWVudCkpCitF
WFBFQ1RFRCAoc291cmNlQnVmZmVyLnVwZGF0aW5nID09ICd0cnVlJykgT0sKK0VWRU5UKHVwZGF0
ZXN0YXJ0KQorRVZFTlQodXBkYXRlKQorRVZFTlQodXBkYXRlZW5kKQorRVhQRUNURUQgKHNvdXJj
ZUJ1ZmZlci51cGRhdGluZyA9PSAnZmFsc2UnKSBPSworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1hcHBlbmQtYnVm
ZmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWFw
cGVuZC1idWZmZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZWEyZmVjYzczN2I5ODQ5YzA0NTliZTRmMWYw
YTFkODE1YzJlNjIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEt
c291cmNlL21lZGlhLXNvdXJjZS1hcHBlbmQtYnVmZmVyLmh0bWwKQEAgLTAsMCArMSw0NCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT5tb2NrLW1lZGlhLXNv
dXJjZTwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9Im1vY2stbWVkaWEtc291cmNlLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdD4KKyAgICB2YXIgc291cmNlOworICAgIHZhciBzb3VyY2VCdWZmZXI7CisgICAgdmFy
IGluaXRTZWdtZW50OworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGludGVy
bmFscy5pbml0aWFsaXplTW9ja01lZGlhU291cmNlKCk7CisKKyAgICBmdW5jdGlvbiBydW5UZXN0
KCkgeworICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisKKyAgICAgICAgc291cmNlID0gbmV3
IE1lZGlhU291cmNlKCk7CisgICAgICAgIHdhaXRGb3JFdmVudE9uKHNvdXJjZSwgJ3NvdXJjZW9w
ZW4nLCBzb3VyY2VPcGVuKTsKKyAgICAgICAgcnVuKCd2aWRlby5zcmMgPSBVUkwuY3JlYXRlT2Jq
ZWN0VVJMKHNvdXJjZSknKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzb3VyY2VPcGVuKCkgewor
ICAgICAgICBydW4oJ3NvdXJjZUJ1ZmZlciA9IHNvdXJjZS5hZGRTb3VyY2VCdWZmZXIoInZpZGVv
L21vY2s7IGNvZGVjcz1tb2NrIiknKTsKKworICAgICAgICB3YWl0Rm9yRXZlbnRPbihzb3VyY2VC
dWZmZXIsICd1cGRhdGVzdGFydCcpOworICAgICAgICB3YWl0Rm9yRXZlbnRPbihzb3VyY2VCdWZm
ZXIsICd1cGRhdGUnKTsKKyAgICAgICAgd2FpdEZvckV2ZW50T24oc291cmNlQnVmZmVyLCAndXBk
YXRlZW5kJywgdXBkYXRlRW5kKTsKKyAgICAgICAgaW5pdFNlZ21lbnQgPSBtYWtlQUluaXQoMTAw
LCBbbWFrZUFUcmFjaygxLCAnbW9jaycsIFRSQUNLX0tJTkQuVklERU8pXSk7CisgICAgICAgIHJ1
bignc291cmNlQnVmZmVyLmFwcGVuZEJ1ZmZlcihpbml0U2VnbWVudCknKTsKKyAgICAgICAgdGVz
dEV4cGVjdGVkKCdzb3VyY2VCdWZmZXIudXBkYXRpbmcnLCB0cnVlKTsKKyAgICB9CisgICAgCisg
ICAgZnVuY3Rpb24gdXBkYXRlRW5kKCkgeworICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3NvdXJjZUJ1
ZmZlci51cGRhdGluZycsIGZhbHNlKTsKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0KKworICAg
IDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDx2aWRl
bz48L3ZpZGVvPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVk
aWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1jYW5wbGF5dGhyb3VnaC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWNhbnBsYXl0aHJv
dWdoLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MmVjNTczNDEwMDFjNmIyZjg4OTFjYWQ4MmRl
YmIyNzBmMzQzMTRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEt
c291cmNlL21lZGlhLXNvdXJjZS1jYW5wbGF5dGhyb3VnaC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw4IEBACisKK1JVTih2aWRlby5zcmMgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKHNvdXJjZSkpCitF
VkVOVChsb2FkZWRtZXRhZGF0YSkKK0VWRU5UKGxvYWRlZGRhdGEpCitFVkVOVChjYW5wbGF5KQor
RVZFTlQoY2FucGxheXRocm91Z2gpCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWNhbnBsYXl0aHJvdWdoLmh0bWwg
Yi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWNhbnBsYXl0aHJv
dWdoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNmU5MWY3NmVkYmUxZTE0MWRlMGFjOTdiNmU1ZTIwMTUwNTlk
ZDYyMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9t
ZWRpYS1zb3VyY2UtY2FucGxheXRocm91Z2guaHRtbApAQCAtMCwwICsxLDUxIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPm1vY2stbWVkaWEtc291cmNlPC90
aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0ibW9jay1tZWRpYS1zb3VyY2UuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
PgorICAgIHZhciBzb3VyY2U7CisgICAgdmFyIHNvdXJjZUJ1ZmZlcjsKKworICAgIHZhciByZXF1
ZXN0TGVuZ3RoID0gMjAwMDAwOworICAgIHZhciBuZXh0UmVxdWVzdCA9IDA7CisgICAgdmFyIHRv
dGFsTGVuZ3RoID0gMTAwOworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGlu
dGVybmFscy5pbml0aWFsaXplTW9ja01lZGlhU291cmNlKCk7CisKKyAgICBmdW5jdGlvbiBydW5U
ZXN0KCkgeworICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisgICAgICAgIHNvdXJjZSA9IG5l
dyBNZWRpYVNvdXJjZSgpOworICAgICAgICBzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcignc291cmNl
b3BlbicsIHN0YXJ0TG9hZCk7CisgICAgICAgIHdhaXRGb3JFdmVudCgnbG9hZGVkbWV0YWRhdGEn
KTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCdsb2FkZWRkYXRhJyk7CisgICAgICAgIHdhaXRGb3JF
dmVudCgnY2FucGxheScpOworICAgICAgICB3YWl0Rm9yRXZlbnRBbmRFbmQoJ2NhbnBsYXl0aHJv
dWdoJyk7CisgICAgICAgIHJ1bigndmlkZW8uc3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChzb3Vy
Y2UpJyk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RhcnRMb2FkKCkgeworICAgICAgICBzb3Vy
Y2VCdWZmZXIgPSBzb3VyY2UuYWRkU291cmNlQnVmZmVyKCd2aWRlby9tb2NrOyBjb2RlY3M9Im1v
Y2siJyk7CisgICAgICAgIHNvdXJjZUJ1ZmZlci5hZGRFdmVudExpc3RlbmVyKCd1cGRhdGUnLCBz
b3VyY2VVcGRhdGVkKTsKKyAgICAgICAgbmV4dFJlcXVlc3QgPSAwOworCisgICAgICAgIC8vIE1h
a2UgYW4gaW5pdCBzZWdtZW50IHdpdGggMSB2aWRlbyB0cmFjaworICAgICAgICB2YXIgaW5pdCA9
IG1ha2VBSW5pdCgxMDAsIFttYWtlQVRyYWNrKDEsICdtb2NrJywgVFJBQ0tfS0lORC5WSURFTyld
KTsKKyAgICAgICAgc291cmNlQnVmZmVyLmFwcGVuZEJ1ZmZlcihpbml0KQorICAgIH0KKworICAg
IGZ1bmN0aW9uIHNvdXJjZVVwZGF0ZWQoKSB7CisgICAgICAgIHNvdXJjZS5hY3RpdmVTb3VyY2VC
dWZmZXJzLmxlbmd0aDsKKyAgICAgICAgaWYgKG5leHRSZXF1ZXN0IDwgdG90YWxMZW5ndGgpIHsK
KyAgICAgICAgICAgIHNvdXJjZUJ1ZmZlci5hcHBlbmRCdWZmZXIobWFrZUFTYW1wbGUobmV4dFJl
cXVlc3QsIG5leHRSZXF1ZXN0LCAxLCAxLCAwKSk7CisgICAgICAgICAgICArK25leHRSZXF1ZXN0
OworICAgICAgICB9CisgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCkiPgorICAgIDx2aWRlbyBjb250cm9scyB3aWR0aD05NjAgaGVpZ2h0PTUxMD48
L3ZpZGVvPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEv
bWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1jbG9zZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1jbG9zZWQtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmNkMzNlMTMxOTJkMzFlMmIzZmZmOWI1YTA5OTI1MzZhZTk4ZGM0Y2IKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNl
LWNsb3NlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACisKK0VYUEVDVEVEIChzb3VyY2Uu
cmVhZHlTdGF0ZSA9PSAnY2xvc2VkJykgT0sKK0VWRU5UKHNvdXJjZW9wZW4pCitSVU4odmlkZW8u
c3JjID0gIiIpCitFVkVOVChzb3VyY2VjbG9zZSkKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtY2xvc2VkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWNsb3NlZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjIyYzgyMWU4OWFiYjk4MjExZWQ3MWE4Njg3OGM3MWZlOTMwODUwZmYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291
cmNlLWNsb3NlZC5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKyAgICA8dGl0bGU+bW9jay1tZWRpYS1zb3VyY2U8L3RpdGxlPgorICAgIDxzY3Jp
cHQgc3JjPSJtb2NrLW1lZGlhLXNvdXJjZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgdmFyIHNvdXJj
ZTsKKyAgICB2YXIgc291cmNlQnVmZmVyOworICAgIHZhciBzb3VyY2VUYWc7CisKKyAgICBpZiAo
d2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLmluaXRpYWxpemVNb2NrTWVkaWFT
b3VyY2UoKTsKKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIGZpbmRNZWRpYUVs
ZW1lbnQoKTsKKworICAgICAgICBzb3VyY2UgPSBuZXcgTWVkaWFTb3VyY2UoKTsKKyAgICAgICAg
dGVzdEV4cGVjdGVkKCdzb3VyY2UucmVhZHlTdGF0ZScsICdjbG9zZWQnKTsKKworICAgICAgICB3
YWl0Rm9yRXZlbnRPbihzb3VyY2UsICdzb3VyY2VvcGVuJywgc291cmNlT3Blbik7CisgICAgICAg
IHZpZGVvLnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoc291cmNlKTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBzb3VyY2VPcGVuKCkgeworICAgICAgICB3YWl0Rm9yRXZlbnRPbihzb3VyY2UsICdz
b3VyY2VjbG9zZScsIGVuZFRlc3QpOworICAgICAgICBydW4oJ3ZpZGVvLnNyYyA9ICIiJyk7Cisg
ICAgfQorICAgIAorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgorICAgIDx2aWRlbz48L3ZpZGVvPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJj
ZS9tZWRpYS1zb3VyY2UtcGxheS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRp
YS1zb3VyY2UvbWVkaWEtc291cmNlLXBsYXktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5MmE5
YWY0MTAzMjVjOGVhNWI5Y2JlMDRiNzdlY2JhYTMyZTFhM2MKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXBsYXktZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTQgQEAKKworRVhQRUNURUQgKHNvdXJjZS5yZWFkeVN0YXRlID09ICdj
bG9zZWQnKSBPSworRVZFTlQoc291cmNlb3BlbikKK1JVTihzb3VyY2VCdWZmZXIgPSBzb3VyY2Uu
YWRkU291cmNlQnVmZmVyKCJ2aWRlby9tb2NrOyBjb2RlY3M9bW9jayIpKQorUlVOKHNvdXJjZUJ1
ZmZlci5hcHBlbmRCdWZmZXIoaW5pdFNlZ21lbnQpKQorRVZFTlQodXBkYXRlZW5kKQorUlVOKHNv
dXJjZUJ1ZmZlci5hcHBlbmRCdWZmZXIoc2FtcGxlKSkKK0VWRU5UKHVwZGF0ZWVuZCkKK1JVTihz
b3VyY2UuZHVyYXRpb24gPSAxKQorUlVOKHNvdXJjZS5lbmRPZlN0cmVhbSgpKQorUlVOKHZpZGVv
LnBsYXkoKSkKK0VWRU5UKGVuZGVkKQorRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1wbGF5Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXBsYXkuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45NjU3YWU0ZjgwZjdmZTI3YTI1NDA5N2U5ZTJhMDIxZjdhNTYwZWQyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1wbGF5Lmh0
bWwKQEAgLTAsMCArMSw1MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAg
IDx0aXRsZT5tb2NrLW1lZGlhLXNvdXJjZTwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9Im1vY2st
bWVkaWEtc291cmNlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVz
dC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICB2YXIgc291cmNlOworICAgIHZhciBz
b3VyY2VCdWZmZXI7CisgICAgdmFyIGluaXRTZWdtZW50OworICAgIHZhciBzYW1wbGU7CisKKyAg
ICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLmluaXRpYWxpemVNb2Nr
TWVkaWFTb3VyY2UoKTsKKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIGZpbmRN
ZWRpYUVsZW1lbnQoKTsKKworICAgICAgICBzb3VyY2UgPSBuZXcgTWVkaWFTb3VyY2UoKTsKKyAg
ICAgICAgdGVzdEV4cGVjdGVkKCdzb3VyY2UucmVhZHlTdGF0ZScsICdjbG9zZWQnKTsKKworICAg
ICAgICB3YWl0Rm9yRXZlbnRPbihzb3VyY2UsICdzb3VyY2VvcGVuJywgc291cmNlT3Blbik7Cisg
ICAgICAgIHZpZGVvLnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoc291cmNlKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBzb3VyY2VPcGVuKCkgeworICAgICAgICBydW4oJ3NvdXJjZUJ1ZmZlciA9
IHNvdXJjZS5hZGRTb3VyY2VCdWZmZXIoInZpZGVvL21vY2s7IGNvZGVjcz1tb2NrIiknKTsKKyAg
ICAgICAgd2FpdEZvckV2ZW50T24oc291cmNlQnVmZmVyLCAndXBkYXRlZW5kJywgbG9hZFNhbXBs
ZXMsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgaW5pdFNlZ21lbnQgPSBtYWtlQUluaXQoMTAwLCBb
bWFrZUFUcmFjaygxLCAnbW9jaycsIFRSQUNLX0tJTkQuVklERU8pXSk7CisgICAgICAgIHJ1bign
c291cmNlQnVmZmVyLmFwcGVuZEJ1ZmZlcihpbml0U2VnbWVudCknKTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBsb2FkU2FtcGxlcygpIHsKKyAgICAgICAgc2FtcGxlID0gbWFrZUFTYW1wbGUoMCwg
MCwgMTAsIDEsIDApOworICAgICAgICB3YWl0Rm9yRXZlbnRPbihzb3VyY2VCdWZmZXIsICd1cGRh
dGVlbmQnLCBwbGF5LCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIHJ1bignc291cmNlQnVmZmVyLmFw
cGVuZEJ1ZmZlcihzYW1wbGUpJyk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcGxheSgpIHsKKyAg
ICAgICAgd2FpdEZvckV2ZW50KCdlbmRlZCcsIGVuZFRlc3QpOworICAgICAgICBydW4oJ3NvdXJj
ZS5kdXJhdGlvbiA9IDEnKTsKKyAgICAgICAgcnVuKCdzb3VyY2UuZW5kT2ZTdHJlYW0oKScpOwor
ICAgICAgICBydW4oJ3ZpZGVvLnBsYXkoKScpOworICAgIH0KKyAgICAKKyAgICA8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICA8dmlkZW8+PC92aWRlbz4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNv
dXJjZS9tZWRpYS1zb3VyY2UtdHJhY2stZW5hYmxlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXRyYWNrLWVuYWJsZWQtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmQ3OGZhMDliYzA0NzBiZGZjMjk4YjYyMTIzYWQzMzVkYWY3YjlmNWUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEt
c291cmNlLXRyYWNrLWVuYWJsZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKKworUlVO
KHZpZGVvLnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoc291cmNlKSkKK0VWRU5UKHNvdXJjZW9w
ZW4pCitSVU4oc291cmNlQnVmZmVyID0gc291cmNlLmFkZFNvdXJjZUJ1ZmZlcigidmlkZW8vbW9j
azsgY29kZWNzPW1vY2siKSkKK1JVTihzb3VyY2VCdWZmZXIuYXBwZW5kQnVmZmVyKGluaXRTZWdt
ZW50KSkKK0VYUEVDVEVEIChzb3VyY2VCdWZmZXIudXBkYXRpbmcgPT0gJ3RydWUnKSBPSworRVZF
TlQodXBkYXRlc3RhcnQpCitFVkVOVCh1cGRhdGUpCitFVkVOVCh1cGRhdGVlbmQpCitFWFBFQ1RF
RCAoc291cmNlQnVmZmVyLnVwZGF0aW5nID09ICdmYWxzZScpIE9LCitFWFBFQ1RFRCAoc291cmNl
QnVmZmVyLnZpZGVvVHJhY2tzLmxlbmd0aCA9PSAnMScpIE9LCitFWFBFQ1RFRCAoc291cmNlQnVm
ZmVyLnZpZGVvVHJhY2tzWzBdLnNlbGVjdGVkID09ICd0cnVlJykgT0sKK0VYUEVDVEVEIChzb3Vy
Y2UuYWN0aXZlU291cmNlQnVmZmVycy5sZW5ndGggPT0gJzEnKSBPSworRU5EIE9GIFRFU1QKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS10
cmFjay1lbmFibGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEt
c291cmNlLXRyYWNrLWVuYWJsZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDI4NGJlOWZkOWFjMjhjMjk2
YWQ4ZGRjNTZmYzkzY2IwMzMxNzUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVk
aWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS10cmFjay1lbmFibGVkLmh0bWwKQEAgLTAsMCAr
MSw0OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT5tb2Nr
LW1lZGlhLXNvdXJjZTwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9Im1vY2stbWVkaWEtc291cmNl
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdD4KKyAgICB2YXIgc291cmNlOworICAgIHZhciBzb3VyY2VCdWZmZXI7
CisgICAgdmFyIGluaXRTZWdtZW50OworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAg
ICAgIGludGVybmFscy5pbml0aWFsaXplTW9ja01lZGlhU291cmNlKCk7CisKKyAgICBmdW5jdGlv
biBydW5UZXN0KCkgeworICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisKKyAgICAgICAgc291
cmNlID0gbmV3IE1lZGlhU291cmNlKCk7CisgICAgICAgIHdhaXRGb3JFdmVudE9uKHNvdXJjZSwg
J3NvdXJjZW9wZW4nLCBzb3VyY2VPcGVuKTsKKyAgICAgICAgcnVuKCd2aWRlby5zcmMgPSBVUkwu
Y3JlYXRlT2JqZWN0VVJMKHNvdXJjZSknKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzb3VyY2VP
cGVuKCkgeworICAgICAgICBydW4oJ3NvdXJjZUJ1ZmZlciA9IHNvdXJjZS5hZGRTb3VyY2VCdWZm
ZXIoInZpZGVvL21vY2s7IGNvZGVjcz1tb2NrIiknKTsKKworICAgICAgICB3YWl0Rm9yRXZlbnRP
bihzb3VyY2VCdWZmZXIsICd1cGRhdGVzdGFydCcpOworICAgICAgICB3YWl0Rm9yRXZlbnRPbihz
b3VyY2VCdWZmZXIsICd1cGRhdGUnKTsKKyAgICAgICAgd2FpdEZvckV2ZW50T24oc291cmNlQnVm
ZmVyLCAndXBkYXRlZW5kJywgdXBkYXRlRW5kKTsKKyAgICAgICAgaW5pdFNlZ21lbnQgPSBtYWtl
QUluaXQoMTAwLCBbCisgICAgICAgICAgICBtYWtlQVRyYWNrKDEsICdtb2NrJywgVFJBQ0tfS0lO
RC5WSURFTyksCisgICAgICAgIF0pOworICAgICAgICBydW4oJ3NvdXJjZUJ1ZmZlci5hcHBlbmRC
dWZmZXIoaW5pdFNlZ21lbnQpJyk7CisgICAgICAgIHRlc3RFeHBlY3RlZCgnc291cmNlQnVmZmVy
LnVwZGF0aW5nJywgdHJ1ZSk7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHVwZGF0ZUVuZCgp
IHsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCdzb3VyY2VCdWZmZXIudXBkYXRpbmcnLCBmYWxzZSk7
CisgICAgICAgIHRlc3RFeHBlY3RlZCgnc291cmNlQnVmZmVyLnZpZGVvVHJhY2tzLmxlbmd0aCcs
IDEpOworICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3NvdXJjZUJ1ZmZlci52aWRlb1RyYWNrc1swXS5z
ZWxlY3RlZCcsIHRydWUpOworICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3NvdXJjZS5hY3RpdmVTb3Vy
Y2VCdWZmZXJzLmxlbmd0aCcsIDEpOworICAgICAgICBlbmRUZXN0KCk7CisgICAgfQorCisgICAg
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgPHZpZGVv
PjwvdmlkZW8+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRp
YS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXRyYWNrcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXRyYWNrcy1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDIyNzIxOWIzZmYwZmY1MjdhYWZhZThlZjY1ZGY0ZTFkZTY1YTM1MgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3Vy
Y2UtdHJhY2tzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACisKK1JVTih2aWRlby5zcmMg
PSBVUkwuY3JlYXRlT2JqZWN0VVJMKHNvdXJjZSkpCitFVkVOVChzb3VyY2VvcGVuKQorUlVOKHNv
dXJjZUJ1ZmZlciA9IHNvdXJjZS5hZGRTb3VyY2VCdWZmZXIoInZpZGVvL21vY2s7IGNvZGVjcz1t
b2NrIikpCitSVU4oc291cmNlQnVmZmVyLmFwcGVuZEJ1ZmZlcihpbml0U2VnbWVudCkpCitFWFBF
Q1RFRCAoc291cmNlQnVmZmVyLnVwZGF0aW5nID09ICd0cnVlJykgT0sKK0VWRU5UKHVwZGF0ZXN0
YXJ0KQorRVZFTlQodXBkYXRlKQorRVZFTlQodXBkYXRlZW5kKQorRVhQRUNURUQgKHNvdXJjZUJ1
ZmZlci51cGRhdGluZyA9PSAnZmFsc2UnKSBPSworRVhQRUNURUQgKHNvdXJjZUJ1ZmZlci52aWRl
b1RyYWNrcy5sZW5ndGggPT0gJzEnKSBPSworRVhQRUNURUQgKHNvdXJjZUJ1ZmZlci5hdWRpb1Ry
YWNrcy5sZW5ndGggPT0gJzInKSBPSworRVhQRUNURUQgKHNvdXJjZUJ1ZmZlci50ZXh0VHJhY2tz
Lmxlbmd0aCA9PSAnMycpIE9LCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXRyYWNrcy5odG1sIGIvTGF5b3V0VGVz
dHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS10cmFja3MuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kZDFjY2JkNmY3OGRlNzkzY2JmODBiZjZmMGFmNDYyNTU1MWZlMWVmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS10cmFja3Mu
aHRtbApAQCAtMCwwICsxLDU0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cisg
ICAgPHRpdGxlPm1vY2stbWVkaWEtc291cmNlPC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0ibW9j
ay1tZWRpYS1zb3VyY2UuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10
ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIHZhciBzb3VyY2U7CisgICAgdmFy
IHNvdXJjZUJ1ZmZlcjsKKyAgICB2YXIgaW5pdFNlZ21lbnQ7CisKKyAgICBpZiAod2luZG93Lmlu
dGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLmluaXRpYWxpemVNb2NrTWVkaWFTb3VyY2UoKTsK
KworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsK
KworICAgICAgICBzb3VyY2UgPSBuZXcgTWVkaWFTb3VyY2UoKTsKKyAgICAgICAgd2FpdEZvckV2
ZW50T24oc291cmNlLCAnc291cmNlb3BlbicsIHNvdXJjZU9wZW4pOworICAgICAgICBydW4oJ3Zp
ZGVvLnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoc291cmNlKScpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHNvdXJjZU9wZW4oKSB7CisgICAgICAgIHJ1bignc291cmNlQnVmZmVyID0gc291cmNl
LmFkZFNvdXJjZUJ1ZmZlcigidmlkZW8vbW9jazsgY29kZWNzPW1vY2siKScpOworCisgICAgICAg
IHdhaXRGb3JFdmVudE9uKHNvdXJjZUJ1ZmZlciwgJ3VwZGF0ZXN0YXJ0Jyk7CisgICAgICAgIHdh
aXRGb3JFdmVudE9uKHNvdXJjZUJ1ZmZlciwgJ3VwZGF0ZScpOworICAgICAgICB3YWl0Rm9yRXZl
bnRPbihzb3VyY2VCdWZmZXIsICd1cGRhdGVlbmQnLCB1cGRhdGVFbmQpOworICAgICAgICBpbml0
U2VnbWVudCA9IG1ha2VBSW5pdCgxMDAsIFsKKyAgICAgICAgICAgIG1ha2VBVHJhY2soMSwgJ21v
Y2snLCBUUkFDS19LSU5ELlZJREVPKSwKKyAgICAgICAgICAgIG1ha2VBVHJhY2soMiwgJ21vY2sn
LCBUUkFDS19LSU5ELkFVRElPKSwKKyAgICAgICAgICAgIG1ha2VBVHJhY2soMywgJ21vY2snLCBU
UkFDS19LSU5ELkFVRElPKSwKKyAgICAgICAgICAgIG1ha2VBVHJhY2soNCwgJ21vY2snLCBUUkFD
S19LSU5ELlRFWFQpLAorICAgICAgICAgICAgbWFrZUFUcmFjayg1LCAnbW9jaycsIFRSQUNLX0tJ
TkQuVEVYVCksCisgICAgICAgICAgICBtYWtlQVRyYWNrKDYsICdtb2NrJywgVFJBQ0tfS0lORC5U
RVhUKSwKKyAgICAgICAgXSk7CisgICAgICAgIHJ1bignc291cmNlQnVmZmVyLmFwcGVuZEJ1ZmZl
cihpbml0U2VnbWVudCknKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCdzb3VyY2VCdWZmZXIudXBk
YXRpbmcnLCB0cnVlKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gdXBkYXRlRW5kKCkgewor
ICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3NvdXJjZUJ1ZmZlci51cGRhdGluZycsIGZhbHNlKTsKKyAg
ICAgICAgdGVzdEV4cGVjdGVkKCdzb3VyY2VCdWZmZXIudmlkZW9UcmFja3MubGVuZ3RoJywgMSk7
CisgICAgICAgIHRlc3RFeHBlY3RlZCgnc291cmNlQnVmZmVyLmF1ZGlvVHJhY2tzLmxlbmd0aCcs
IDIpOworICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3NvdXJjZUJ1ZmZlci50ZXh0VHJhY2tzLmxlbmd0
aCcsIDMpOworICAgICAgICBlbmRUZXN0KCk7CisgICAgfQorCisgICAgPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgPHZpZGVvPjwvdmlkZW8+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2Uv
bW9jay1tZWRpYS1zb3VyY2UuanMgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbW9j
ay1tZWRpYS1zb3VyY2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU1MmM2MDBiYmQwNjBmOTZjYzhmMzJmZGVl
M2RhNTEwNzE1NDllMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlh
LXNvdXJjZS9tb2NrLW1lZGlhLXNvdXJjZS5qcwpAQCAtMCwwICsxLDcyIEBACit2YXIgVFJBQ0tf
S0lORCA9IHsKKyAgICBBVURJTzogMCwKKyAgICBWSURFTzogMSwKKyAgICBURVhUOiAyLAorfTsK
KworZnVuY3Rpb24gc3RyaW5nVG9BcnJheShzdHJpbmcpIHsKKyAgICByZXR1cm4gc3RyaW5nLnNw
bGl0KCIiKS5tYXAoZnVuY3Rpb24oYyl7IHJldHVybiBjLmNoYXJDb2RlQXQoMCk7IH0pOworfQor
CitmdW5jdGlvbiBtYWtlQVNhbXBsZShwcmVzZW50YXRpb25UaW1lLCBkZWNvZGVUaW1lLCBkdXJh
dGlvbiwgdHJhY2tJRCwgZmxhZ3MpIHsKKyAgICB2YXIgYnl0ZUxlbmd0aCA9IDI5OworICAgIHZh
ciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoYnl0ZUxlbmd0aCk7CisgICAgdmFyIGFycmF5ID0g
bmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsKKyAgICBhcnJheS5zZXQoc3RyaW5nVG9BcnJheSgnc21w
bCcpKTsKKworICAgIHZhciB2aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlcik7CisgICAgdmlldy5z
ZXRVaW50MzIoNCwgYnl0ZUxlbmd0aCwgdHJ1ZSk7CisKKyAgICB2YXIgdGltZVNjYWxlID0gMTAw
MDsKKyAgICB2aWV3LnNldEludDMyKDgsIHRpbWVTY2FsZSwgdHJ1ZSk7CisgICAgdmlldy5zZXRJ
bnQzMigxMiwgcHJlc2VudGF0aW9uVGltZSAqIHRpbWVTY2FsZSwgdHJ1ZSk7CisgICAgdmlldy5z
ZXRJbnQzMigxNiwgZGVjb2RlVGltZSAqIHRpbWVTY2FsZSwgdHJ1ZSk7CisgICAgdmlldy5zZXRJ
bnQzMigyMCwgZHVyYXRpb24gKiB0aW1lU2NhbGUsIHRydWUpOworICAgIHZpZXcuc2V0SW50MzIo
MjQsIHRyYWNrSUQsIHRydWUpOworICAgIHZpZXcuc2V0VWludDgoMjgsIGZsYWdzKTsKKworICAg
IHJldHVybiBidWZmZXI7Cit9CisKK2Z1bmN0aW9uIG1ha2VBVHJhY2sodHJhY2tJRCwgY29kZWMs
IGZsYWdzKSB7CisgICAgdmFyIGJ5dGVMZW5ndGggPSAxNzsKKyAgICB2YXIgYnVmZmVyID0gbmV3
IEFycmF5QnVmZmVyKGJ5dGVMZW5ndGgpOworICAgIHZhciBhcnJheSA9IG5ldyBVaW50OEFycmF5
KGJ1ZmZlcik7CisgICAgYXJyYXkuc2V0KHN0cmluZ1RvQXJyYXkoJ3RyYWsnKSk7CisKKyAgICB2
YXIgdmlldyA9IG5ldyBEYXRhVmlldyhidWZmZXIpOworICAgIHZpZXcuc2V0VWludDMyKDQsIGJ5
dGVMZW5ndGgsIHRydWUpOworICAgIHZpZXcuc2V0SW50MzIoOCwgdHJhY2tJRCwgdHJ1ZSk7CisK
KyAgICB2YXIgY29kZWNBcnJheSA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlciwgMTIsIDQpOworICAg
IGNvZGVjQXJyYXkuc2V0KHN0cmluZ1RvQXJyYXkoY29kZWMpKTsKKworICAgIHZpZXcuc2V0VWlu
dDgoMTYsIGZsYWdzLCB0cnVlKTsKKworICAgIHJldHVybiBidWZmZXI7Cit9CisKK2Z1bmN0aW9u
IG1ha2VBSW5pdChkdXJhdGlvbiwgdHJhY2tzKSB7CisgICAgdmFyIGJ5dGVMZW5ndGggPSAxNiAr
ICgxNyAqIHRyYWNrcy5sZW5ndGgpOworICAgIHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIo
Ynl0ZUxlbmd0aCk7CisgICAgdmFyIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsKKyAg
ICBhcnJheS5zZXQoc3RyaW5nVG9BcnJheSgnaW5pdCcpKTsKKworICAgIHZhciB2aWV3ID0gbmV3
IERhdGFWaWV3KGJ1ZmZlcik7CisgICAgdmFyIHRpbWVTY2FsZSA9IDEwMDA7CisgICAgdmlldy5z
ZXRVaW50MzIoNCwgYnl0ZUxlbmd0aCwgdHJ1ZSk7CisgICAgdmlldy5zZXRJbnQzMig4LCBkdXJh
dGlvbiAqIHRpbWVTY2FsZSwgdHJ1ZSk7CisgICAgdmlldy5zZXRJbnQzMigxMiwgdGltZVNjYWxl
LCB0cnVlKTsKKworICAgIHZhciBvZmZzZXQgPSAxNjsKKyAgICB0cmFja3MuZm9yRWFjaChmdW5j
dGlvbih0cmFjayl7CisgICAgICAgIHZhciBzb3VyY2VBcnJheSA9IG5ldyBVaW50OEFycmF5KHRy
YWNrKTsKKyAgICAgICAgdmFyIGRlc3RBcnJheSA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlciwgb2Zm
c2V0LCBzb3VyY2VBcnJheS5ieXRlTGVuZ3RoKTsKKyAgICAgICAgZGVzdEFycmF5LnNldChzb3Vy
Y2VBcnJheSk7CisgICAgICAgIG9mZnNldCArPSBzb3VyY2VBcnJheS5ieXRlTGVuZ3RoOworICAg
IH0pOworCisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9tZWRpYS92aWRlby10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tdGVzdC5qcwpp
bmRleCAwNTk4MzdiZmQyN2MxZjE3OGNmYjJmODI4NTA1MjZlNGVmYjIwYWMzLi5jYWIzZmRmYTI3
ZjAwNjFhNjc1ZTM1ZWYyYWYzZjc4ZjhmN2U2NmJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9t
ZWRpYS92aWRlby10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLXRlc3QuanMK
QEAgLTIwMiw2ICsyMDIsMTEgQEAgZnVuY3Rpb24gd2FpdEZvckV2ZW50QW5kVGVzdChldmVudE5h
bWUsIHRlc3RGdW5jU3RyaW5nLCBlbmRpdCkKICAgICBtZWRpYUVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcihldmVudE5hbWUsIF9ldmVudENhbGxiYWNrLCB0cnVlKTsKIH0KIAorZnVuY3Rpb24gd2Fp
dEZvckV2ZW50T24oZWxlbWVudCwgZXZlbnROYW1lLCBmdW5jLCBlbmRpdCwgb25lVGltZU9ubHkp
Cit7CisgICAgd2FpdEZvckV2ZW50KGV2ZW50TmFtZSwgZnVuYywgZW5kaXQsIG9uZVRpbWVPbmx5
LCBlbGVtZW50KTsKK30KKwogZnVuY3Rpb24gdGVzdERPTUV4Y2VwdGlvbih0ZXN0U3RyaW5nLCBl
eGNlcHRpb25TdHJpbmcpCiB7CiAgICAgdHJ5IHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216306</attachid>
            <date>2013-11-07 09:10:12 -0800</date>
            <delta_ts>2013-11-07 09:27:33 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-123322-20131107091011.patch</filename>
            <type>text/plain</type>
            <size>100412</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU4ODQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjQ2N2VlYzE4OWU3NWM5
ODg0ODEyMjJjYThkOGZkZWFhMTA4ZWMxZS4uODQ5NTc1NTE0YzQ5MDAxODAzNTQ0YjIzOGM4OTVk
NTE1OGM4MTdhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NyBAQAorMjAxMy0xMC0zMCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbTVNFXSBBZGQgbW9jayBN
ZWRpYVNvdXJjZSBjbGFzc2VzIGZvciB0ZXN0aW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1z
b3VyY2UtYWRkc291cmNlYnVmZmVyLmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL21lZGlhLXNv
dXJjZS9tZWRpYS1zb3VyY2UtYXBwZW5kLWJ1ZmZlci5odG1sCisgICAgICAgICAgICAgICBtZWRp
YS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWNhbnBsYXl0aHJvdWdoLmh0bWwKKyAgICAgICAg
ICAgICAgIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtY2xvc2VkLmh0bWwKKyAgICAg
ICAgICAgICAgIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtcGxheS5odG1sCisgICAg
ICAgICAgICAgICBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXRyYWNrLWVuYWJsZWQu
aHRtbAorICAgICAgICAgICAgICAgbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS10cmFj
a3MuaHRtbAorCisKKyAgICAgICAgQWRkIG1vY2sgaW1wbGVtZW50YXRpb24gb2YgcGxhdGZvcm0g
TWVkaWFTb3VyY2UgY2xhc3NlcywgYWxsb3dpbmcgcG9ydHMgdG8gdGVzdCB0aGUKKyAgICAgICAg
TWVkaWFTb3VyY2UgQVBJIHdpdGhvdXQgaGF2aW5nIGEgcGxhdGZvcm0gaW1wbGVtZW50YXRpb24u
CisKKyAgICAgICAgVGhlIE1vY2tNZWRpYVNvdXJjZSB3aWxsIHN1cHBvcnQgYSBieXRlZm9ybWF0
IGRlZmluZWQgaW4gTW9ja0JveC5oOiBhIHNpbXBsZSBib3gtc3R5bGUgbWVkaWEKKyAgICAgICAg
Zm9ybWF0IHdpdGggYW4gaW5pdGlhbGl6YXRpb24gc2VnbWVudCBjb250YWluaW5nIGEgbnVtYmVy
IG9mIHRyYWNrcywgZm9sbG93ZWQgYnkgYSBsaXN0IG9mCisgICAgICAgIHNhbXBsZXMuCisKKyAg
ICAgICAgQWRkIGEgbWVhbnMgdG8gaW5zZXJ0IGEgbmV3IG1lZGlhIGVuZ2luZSBmYWN0b3J5IGF0
IHJ1bnRpbWUsIHNvIHRoZSBpbnRlcm5hbHMgb2JqZWN0IGNhbiBhZGQKKyAgICAgICAgYSBNb2Nr
TWVkaWFTb3VyY2VNZWRpYVBsYXllcjoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckZhY3RvcnlTdXBwb3J0
OjpjYWxsUmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OmluaXRpYWxpemVNb2NrTWVkaWFTb3VyY2UpOgorICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRs
OgorCisgICAgICAgIEZvciBub24tbWVkaWEtc291cmNlIHN1cHBvcnRpbmcgbWVkaWEgZW5naW5l
cywgZmFpbCBpbW1lZGlhdGVseSB3aGVuIGFza2VkIHRvIGxvYWQgYSBtZWRpYQorICAgICAgICBz
b3VyY2UsIHNvIHRoYXQgdGhlIE1vY2tNZWRpYVNvdXJjZU1lZGlhUGxheWVyIHdpbGwgYmUgaW5z
dGFudGlhdGVkIGFzIGEgZmFsbC1iYWNrOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpsb2FkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN1cHBvcnRzVHlwZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1t
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmxvYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnN1cHBvcnRzVHlwZSk6CisK
KyAgICAgICAgQWRkIG5ldyBmaWxlcyB0byB0aGUgcHJvamVjdDoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW46CisKKyAgICAgICAgVXBkYXRlIHRoZSBNZWRpYVNvdXJjZSBpbXBsZW1lbnRh
dGlvbjoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjptb25pdG9yU291cmNlQnVmZmVycyk6IEFkZCBh
IGxpbmsgdG8gdGhlIHNwZWMuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VC
dWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpidWZmZXJlZCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpzZXRUaW1lc3RhbXBPZmZzZXQp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6dmFsaWRhdGVJbml0aWFs
aXphdGlvblNlZ21lbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6
c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQpOiBEaXR0
by4gQWxzbywKKyAgICAgICAgICAgIGJyaW5nIHRoZSBpbXBsZW1lbnRhdGlvbiB1cCB0byBkYXRl
IHdpdGggcGFydCBvZiB0aGUgc3BlYy4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6
c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVTYW1wbGUpOiBSZW1vdmUgIlByZWRpY2F0ZSIg
ZnJvbQorICAgICAgICAgICAgU2FtcGxlSXNSYW5kb21BY2Nlc3NQcmVkaWNhdGUuCisKKyAgICAg
ICAgQWRkIHV0aWxpdHkgY2xhc3NlcyB0byBwYXJzZSBhbmQgcmVwcmVzZW50IHRoZSBieXRlc3Ry
ZWFtIHN1cHBvcnRlZCBieSB0aGUgTW9ja01lZGlhU291cmNlOgorICAgICAgICAqIHBsYXRmb3Jt
L21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
TW9ja0JveDo6TW9ja0JveCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQm94OjpwZWVrVHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQm94OjpwZWVrTGVuZ3RoKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tUcmFja0JveDo6TW9ja1RyYWNrQm94KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tU
cmFja0JveDo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrSW5pdGlhbGl6YXRpb25Cb3g6
Ok1vY2tJbml0aWFsaXphdGlvbkJveCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrSW5pdGlhbGl6
YXRpb25Cb3g6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NhbXBsZUJveDo6TW9ja1Nh
bXBsZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU2FtcGxlQm94Ojp0eXBlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpNb2NrQm94OjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0JveDo6
dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrVHJhY2tCb3g6OnRyYWNrSUQpOgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja1RyYWNrQm94Ojpjb2RlYyk6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
VHJhY2tCb3g6OmtpbmQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0luaXRpYWxpemF0aW9uQm94
OjpkdXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrSW5pdGlhbGl6YXRpb25Cb3g6OnRy
YWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU2FtcGxlQm94OjpwcmVzZW50YXRpb25UaW1l
c3RhbXApOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NhbXBsZUJveDo6ZGVjb2RlVGltZXN0YW1w
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTYW1wbGVCb3g6OmR1cmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tTYW1wbGVCb3g6OnRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a1NhbXBsZUJveDo6ZmxhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NhbXBsZUJveDo6aXNT
eW5jKToKKworICAgICAgICBBZGQgYSBNZWRpYVBsYXllclByaXZhdGUgaW1wbGVtZW50YXRpb24g
d2hpY2ggdXNlcyBNb2NrTWVkaWFTb3VyY2U6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUp
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjptaW1lVHlwZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpnZXRTdXBwb3J0ZWRUeXBlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6c3VwcG9ydHNUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpNb2NrTWVkaWFQbGF5ZXJN
ZWRpYVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJj
ZTo6fk1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tN
ZWRpYVBsYXllck1lZGlhU291cmNlOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRp
YVBsYXllck1lZGlhU291cmNlOjpjYW5jZWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tN
ZWRpYVBsYXllck1lZGlhU291cmNlOjpwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRp
YVBsYXllck1lZGlhU291cmNlOjpwYXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFQ
bGF5ZXJNZWRpYVNvdXJjZTo6bmF0dXJhbFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01l
ZGlhUGxheWVyTWVkaWFTb3VyY2U6Omhhc1ZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tN
ZWRpYVBsYXllck1lZGlhU291cmNlOjpoYXNBdWRpbyk6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
TWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6c2V0VmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6c2Vla2luZyk6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6cGF1c2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpuZXR3b3JrU3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlYWR5U3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmJ1ZmZlcmVkKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpkaWRMb2FkaW5nUHJvZ3Jlc3MpOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnNldFNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnBhaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpjdXJyZW50VGltZURv
dWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6ZHVy
YXRpb25Eb3VibGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3Vy
Y2U6OnNlZWtEb3VibGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFT
b3VyY2U6OmFkdmFuY2VDdXJyZW50VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFQ
bGF5ZXJNZWRpYVNvdXJjZTo6dXBkYXRlRHVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnNldFJlYWR5U3RhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuaDogQWRkZWQu
CisKKyAgICAgICAgQWRkIGEgbW9jayBpbXBsZW1lbnRhdGlvbiBvZiBNZWRpYVNvdXJjZVByaXZh
dGUsIHdoaWNoIHVzZXMgTW9ja1NvdXJjZUJ1ZmZlcjoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJjZVByaXZhdGUuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tNZWRpYVNvdXJjZVByaXZhdGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjpNb2NrTWVkaWFTb3VyY2VQcml2YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNvdXJjZVByaXZhdGU6On5Nb2NrTWVkaWFTb3VyY2VQ
cml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNvdXJjZVByaXZhdGU6OmFkZFNv
dXJjZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjpy
ZW1vdmVTb3VyY2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhU291cmNlUHJp
dmF0ZTo6ZHVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhU291cmNlUHJpdmF0
ZTo6c2V0RHVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhU291cmNlUHJpdmF0
ZTo6bWFya0VuZE9mU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNvdXJjZVBy
aXZhdGU6OnVubWFya0VuZE9mU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNv
dXJjZVByaXZhdGU6OnJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhU291
cmNlUHJpdmF0ZTo6c2V0UmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFT
b3VyY2VQcml2YXRlOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkQ2hhbmdlQWN0aXZlU3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGVIYXNBdWRpbyk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjpoYXNBdWRpbyk6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZUhhc1ZpZGVvKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tNZWRpYVNvdXJjZVByaXZhdGU6Omhhc1ZpZGVvKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJjZVByaXZhdGUuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjphY3RpdmVTb3VyY2VCdWZm
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNvdXJjZVByaXZhdGU6OnBsYXllcik6
CisKKyAgICAgICAgQWRkIGEgbW9jayBpbXBsZW1lbnRhdGlvbiBvZiBTb3VyY2VCdWZmZXJQcml2
YXRlLCB3aGljaCB1c2VzIE1vY2tCb3hlcyB0byBwYXJzZSB0aGUKKyAgICAgICAgYnl0ZXN0cmVh
bSBwcm92aWRlZCBieSBTb3VyY2VCdWZmZXI6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja01lZGlhU2FtcGxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01l
ZGlhU2FtcGxlOjp+TW9ja01lZGlhU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRp
YVNhbXBsZTo6TW9ja01lZGlhU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNh
bXBsZTo6cGxhdGZvcm1TYW1wbGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhRGVzY3Jp
cHRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFEZXNjcmlwdGlvbjo6
fk1vY2tNZWRpYURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYURlc2Ny
aXB0aW9uOjpNb2NrTWVkaWFEZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU291
cmNlQnVmZmVyUHJpdmF0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTb3VyY2VC
dWZmZXJQcml2YXRlOjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6fk1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpzZXRDbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZUluaXRpYWxpemF0
aW9uU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6
ZGlkUmVjZWl2ZVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZTo6YWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6
OnJlbW92ZWRGcm9tTWVkaWFTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1
ZmZlclByaXZhdGU6OnJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1
ZmZlclByaXZhdGU6OnNldFJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJj
ZUJ1ZmZlclByaXZhdGU6Omhhc1ZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTb3VyY2VC
dWZmZXJQcml2YXRlOjpoYXNBdWRpbyk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNv
dXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oOiBBZGRlZC4KKworICAgICAgICBDcmVhdGUg
bW9jayBpbXBsZW1lbnRhdGlvbnMgb2YgQXVkaW9UcmFja1ByaXZhdGUsIFZpZGVvVHJhY2tQcml2
YXRlLCBhbmQgVGV4dFRyYWNrUHJpdmF0ZQorICAgICAgICB3aGljaCB3cmFwIHRoZSBNb2NrVHJh
Y2tCb3ggY2xhc3M6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrVHJh
Y2tzLmNwcDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2Nr
VHJhY2tzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0F1ZGlvVHJhY2tQcml2YXRl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0F1ZGlvVHJhY2tQcml2YXRlOjp+TW9j
a0F1ZGlvVHJhY2tQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tBdWRpb1RyYWNrUHJp
dmF0ZTo6aWQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0F1ZGlvVHJhY2tQcml2YXRlOjpNb2Nr
QXVkaW9UcmFja1ByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1RleHRUcmFja1ByaXZh
dGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrVGV4dFRyYWNrUHJpdmF0ZTo6fk1v
Y2tUZXh0VHJhY2tQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tUZXh0VHJhY2tQcml2
YXRlOjppZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrVGV4dFRyYWNrUHJpdmF0ZTo6TW9ja1Rl
eHRUcmFja1ByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1ZpZGVvVHJhY2tQcml2YXRl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1ZpZGVvVHJhY2tQcml2YXRlOjp+TW9j
a1ZpZGVvVHJhY2tQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tWaWRlb1RyYWNrUHJp
dmF0ZTo6aWQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1ZpZGVvVHJhY2tQcml2YXRlOjpNb2Nr
VmlkZW9UcmFja1ByaXZhdGUpOgorCiAyMDEzLTExLTA3ICBUaGlhZ28gZGUgQmFycm9zIExhY2Vy
ZGEgIDx0aGlhZ28ubGFjZXJkYUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIENoYW5naW5nIE1l
ZGlhU3RyZWFtRGVzY3JpcHRvciB0byBNZWRpYVN0cmVhbVByaXZhdGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKaW5kZXggZDMzNDQz
N2I2NTg0YjhmYTU0NWM2NGUyNDkwZmNmM2M5ZWI4YWJhNy4uNmVlZjBjOWU0OWUxZTllMjQxYTc1
YjY0ZWUyM2RiYzE1MGMwMjBiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKQEAgLTM5OCw2ICszOTgsNyBAQCB2b2lkIE1lZGlh
U291cmNlOjptb25pdG9yU291cmNlQnVmZmVycygpCiAgICAgZG91YmxlIGN1cnJlbnRUaW1lID0g
bWVkaWFFbGVtZW50KCktPmN1cnJlbnRUaW1lKCk7CiAKICAgICAvLyAyLjQuNCBTb3VyY2VCdWZm
ZXIgTW9uaXRvcmluZworICAgIC8vIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9y
YXctZmlsZS9kZWZhdWx0L21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UuaHRtbCNidWZmZXItbW9u
aXRvcmluZwogICAgIC8vIOKGsyBJZiBidWZmZXJlZCBmb3IgYWxsIG9iamVjdHMgaW4gYWN0aXZl
U291cmNlQnVmZmVycyBkbyBub3QgY29udGFpbiBUaW1lUmFuZ2VzIGZvciB0aGUgY3VycmVudAog
ICAgIC8vIHBsYXliYWNrIHBvc2l0aW9uOgogICAgIGF1dG8gYmVnaW4gPSBtX2FjdGl2ZVNvdXJj
ZUJ1ZmZlcnMtPmJlZ2luKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5kZXggNTdmM2UwYmYwNzhjMzZkY2ExZjM5NmRjMTQ3
ZjAyYjk5ODY2NWM0Mi4uYjYwMGUwNDdhMjM5ZjA3NzY1MTJjM2YzYWQyYTQyMTc5OGY3MTQwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZm
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVm
ZmVyLmNwcApAQCAtMTA4LDYgKzEwOCw3IEBAIFNvdXJjZUJ1ZmZlcjo6flNvdXJjZUJ1ZmZlcigp
CiBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IFNvdXJjZUJ1ZmZlcjo6YnVmZmVyZWQoRXhjZXB0aW9u
Q29kZSYgZWMpIGNvbnN0CiB7CiAgICAgLy8gU2VjdGlvbiAzLjEgYnVmZmVyZWQgYXR0cmlidXRl
IHN0ZXBzLgorICAgIC8vIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9yYXctZmls
ZS9kZWZhdWx0L21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UuaHRtbCNhdHRyaWJ1dGVzLTEKICAg
ICAvLyAxLiBJZiB0aGlzIG9iamVjdCBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIHNvdXJjZUJ1
ZmZlcnMgYXR0cmlidXRlIG9mIHRoZSBwYXJlbnQgbWVkaWEgc291cmNlIHRoZW4gdGhyb3cgYW4K
ICAgICAvLyAgICBJTlZBTElEX1NUQVRFX0VSUiBleGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0
ZXBzLgogICAgIGlmIChpc1JlbW92ZWQoKSkgewpAQCAtMTMyLDYgKzEzMyw3IEBAIGRvdWJsZSBT
b3VyY2VCdWZmZXI6OnRpbWVzdGFtcE9mZnNldCgpIGNvbnN0CiB2b2lkIFNvdXJjZUJ1ZmZlcjo6
c2V0VGltZXN0YW1wT2Zmc2V0KGRvdWJsZSBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIC8vIFNlY3Rpb24gMy4xIHRpbWVzdGFtcE9mZnNldCBhdHRyaWJ1dGUgc2V0dGVyIHN0ZXBz
LgorICAgIC8vIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9yYXctZmlsZS9kZWZh
dWx0L21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UuaHRtbCNhdHRyaWJ1dGVzLTEKICAgICAvLyAx
LiBJZiB0aGlzIG9iamVjdCBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIHNvdXJjZUJ1ZmZlcnMg
YXR0cmlidXRlIG9mIHRoZSBwYXJlbnQgbWVkaWEgc291cmNlIHRoZW4gdGhyb3cgYW4KICAgICAv
LyAgICBJTlZBTElEX1NUQVRFX0VSUiBleGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgog
ICAgIGlmIChpc1JlbW92ZWQoKSkgewpAQCAtMzkwLDkgKzM5MiwxNiBAQCB2b2lkIFNvdXJjZUJ1
ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQo
U291cmNlQnVmZgogICAgIG1fYXBwZW5kU3RhdGUgPSBQYXJzaW5nSW5pdFNlZ21lbnQ7CiAKICAg
ICAvLyAzLjUuNyBJbml0aWFsaXphdGlvbiBTZWdtZW50IFJlY2VpdmVkCisgICAgLy8gaHR0cHM6
Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL2RlZmF1bHQvbWVkaWEtc291cmNl
L21lZGlhLXNvdXJjZS5odG1sI3NvdXJjZWJ1ZmZlci1pbml0LXNlZ21lbnQtcmVjZWl2ZWQKICAg
ICAvLyAxLiBVcGRhdGUgdGhlIGR1cmF0aW9uIGF0dHJpYnV0ZSBpZiBpdCBjdXJyZW50bHkgZXF1
YWxzIE5hTjoKLSAgICBpZiAoc3RkOjppc25hbihtX3NvdXJjZS0+ZHVyYXRpb24oKSkgJiYgc2Vn
bWVudC5kdXJhdGlvbi5pc1ZhbGlkKCkpCi0gICAgICAgIG1fc291cmNlLT5zZXREdXJhdGlvbihz
ZWdtZW50LmR1cmF0aW9uLnRvRG91YmxlKCksIElHTk9SRV9FWENFUFRJT04pOworICAgIGlmIChz
dGQ6OmlzbmFuKG1fc291cmNlLT5kdXJhdGlvbigpKSkgeworICAgICAgICAvLyDihrMgSWYgdGhl
IGluaXRpYWxpemF0aW9uIHNlZ21lbnQgY29udGFpbnMgYSBkdXJhdGlvbjoKKyAgICAgICAgLy8g
ICBSdW4gdGhlIGR1cmF0aW9uIGNoYW5nZSBhbGdvcml0aG0gd2l0aCBuZXcgZHVyYXRpb24gc2V0
IHRvIHRoZSBkdXJhdGlvbiBpbiB0aGUgaW5pdGlhbGl6YXRpb24gc2VnbWVudC4KKyAgICAgICAg
Ly8g4oazIE90aGVyd2lzZToKKyAgICAgICAgLy8gICBSdW4gdGhlIGR1cmF0aW9uIGNoYW5nZSBh
bGdvcml0aG0gd2l0aCBuZXcgZHVyYXRpb24gc2V0IHRvIHBvc2l0aXZlIEluZmluaXR5LgorICAg
ICAgICBNZWRpYVRpbWUgbmV3RHVyYXRpb24gPSBzZWdtZW50LmR1cmF0aW9uLmlzVmFsaWQoKSA/
IHNlZ21lbnQuZHVyYXRpb24gOiBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCk7Cisg
ICAgICAgIG1fc291cmNlLT5zZXREdXJhdGlvbihuZXdEdXJhdGlvbi50b0RvdWJsZSgpLCBJR05P
UkVfRVhDRVBUSU9OKTsKKyAgICB9CiAKICAgICAvLyAyLiBJZiB0aGUgaW5pdGlhbGl6YXRpb24g
c2VnbWVudCBoYXMgbm8gYXVkaW8sIHZpZGVvLCBvciB0ZXh0IHRyYWNrcywgdGhlbiBydW4gdGhl
IGVuZCBvZiBzdHJlYW0KICAgICAvLyBhbGdvcml0aG0gd2l0aCB0aGUgZXJyb3IgcGFyYW1ldGVy
IHNldCB0byAiZGVjb2RlIiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCkBAIC01NjAsNiArNTY5LDkg
QEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlh
bGl6YXRpb25TZWdtZW50KFNvdXJjZUJ1ZmYKIAogYm9vbCBTb3VyY2VCdWZmZXI6OnZhbGlkYXRl
SW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IEluaXRpYWxpemF0aW9uU2VnbWVudCYgc2VnbWVu
dCkKIHsKKyAgICAvLyAzLjUuNyBJbml0aWFsaXphdGlvbiBTZWdtZW50IFJlY2VpdmVkIChjdGQp
CisgICAgLy8gaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL2RlZmF1
bHQvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS5odG1sI3NvdXJjZWJ1ZmZlci1pbml0LXNlZ21l
bnQtcmVjZWl2ZWQKKwogICAgIC8vIDMuMS4gVmVyaWZ5IHRoZSBmb2xsb3dpbmcgcHJvcGVydGll
cy4gSWYgYW55IG9mIHRoZSBjaGVja3MgZmFpbCB0aGVuIHJ1biB0aGUgZW5kIG9mIHN0cmVhbQog
ICAgIC8vIGFsZ29yaXRobSB3aXRoIHRoZSBlcnJvciBwYXJhbWV0ZXIgc2V0IHRvICJkZWNvZGUi
IGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICAvLyAgICogVGhlIG51bWJlciBvZiBhdWRpbywg
dmlkZW8sIGFuZCB0ZXh0IHRyYWNrcyBtYXRjaCB3aGF0IHdhcyBpbiB0aGUgZmlyc3QgaW5pdGlh
bGl6YXRpb24gc2VnbWVudC4KQEAgLTY1Niw3ICs2NjgsNyBAQCBwdWJsaWM6CiAgICAgfQogfTsK
IAotY2xhc3MgU2FtcGxlSXNSYW5kb21BY2Nlc3NQcmVkaWNhdGUgeworY2xhc3MgU2FtcGxlSXNS
YW5kb21BY2Nlc3MgewogcHVibGljOgogICAgIGJvb2wgb3BlcmF0b3IoKShzdGQ6OnBhaXI8TWVk
aWFUaW1lLCBSZWZQdHI8TWVkaWFTYW1wbGU+PiB2YWx1ZSkKICAgICB7CkBAIC04NDIsNyArODU0
LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlU2Ft
cGxlKFNvdXJjZUJ1ZmZlclByaXZhdGUqLCBQYXMKICAgICAgICAgICAgIC8vIE90aGVyd2lzZTog
UmVtb3ZlIGFsbCBjb2RlZCBmcmFtZXMgYmV0d2VlbiB0aGUgY29kZWQgZnJhbWVzIHJlbW92ZWQg
aW4gdGhlIHByZXZpb3VzIHN0ZXAKICAgICAgICAgICAgIC8vIGFuZCB0aGUgbmV4dCByYW5kb20g
YWNjZXNzIHBvaW50IGFmdGVyIHRob3NlIHJlbW92ZWQgZnJhbWVzLgogICAgICAgICAgICAgYXV0
byBmaXJzdF9pdGVyID0gc3RkOjp1cHBlcl9ib3VuZCh0cmFja0J1ZmZlci5zYW1wbGVzLmJlZ2lu
KCksIHRyYWNrQnVmZmVyLnNhbXBsZXMuZW5kKCksICplcmFzZWRTYW1wbGVzLmJlZ2luKCksIFNh
bXBsZUxlc3NUaGFuQ29tcGFyYXRvcigpKTsKLSAgICAgICAgICAgIGF1dG8gc2Vjb25kX2l0ZXIg
PSBzdGQ6OmZpbmRfaWYoZmlyc3RfaXRlciwgdHJhY2tCdWZmZXIuc2FtcGxlcy5lbmQoKSwgU2Ft
cGxlSXNSYW5kb21BY2Nlc3NQcmVkaWNhdGUoKSk7CisgICAgICAgICAgICBhdXRvIHNlY29uZF9p
dGVyID0gc3RkOjpmaW5kX2lmKGZpcnN0X2l0ZXIsIHRyYWNrQnVmZmVyLnNhbXBsZXMuZW5kKCks
IFNhbXBsZUlzUmFuZG9tQWNjZXNzKCkpOwogICAgICAgICAgICAgaWYgKGZpcnN0X2l0ZXIgIT0g
dHJhY2tCdWZmZXIuc2FtcGxlcy5lbmQoKSkgewogICAgICAgICAgICAgICAgIHRyYWNrQnVmZmVy
LnNhbXBsZXMuZXJhc2UoZmlyc3RfaXRlciwgc2Vjb25kX2l0ZXIpOwogICAgICAgICAgICAgICAg
IGVyYXNlZFNhbXBsZXMuaW5zZXJ0KGZpcnN0X2l0ZXIsIHNlY29uZF9pdGVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KaW5kZXggNmIwMTFjMzk5NWE2YjVlZDZmM2NhYTM5OTFmZmUwMTJiNWEzYWMxYS4u
MjA5YTQ0ZTI4YzI3NWZjMGE3NTZjYTQxZGUxMGIwNzc5MDY5Mzc4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTI4OTcsMyArMjg5NywxMSBAQCBfX1pON1dlYkNvcmUxMldvcmtlclRocmVhZDE3
d29ya2VyVGhyZWFkQ291bnRFdgogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIF9fWk43V2ViQ29y
ZTlQYWdlR3JvdXAxOGNhcHRpb25QcmVmZXJlbmNlc0V2CiAjZW5kaWYKKworI2lmIEVOQUJMRShW
SURFTykKK19fWk43V2ViQ29yZTI1TWVkaWFQbGF5ZXJGYWN0b3J5U3VwcG9ydDIzY2FsbFJlZ2lz
dGVyTWVkaWFFbmdpbmVFUEZ2UEZ2UEZOM1dURjEwUGFzc093blB0cklOU18yN01lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZUVFRVBOU18xMU1lZGlhUGxheWVyRUVQRnZSTlMxXzdIYXNoU2V0SU5T
MV82U3RyaW5nRU5TMV8xMFN0cmluZ0hhc2hFTlMxXzEwSGFzaFRyYWl0c0lTQV9FRUVFRVBGTlM1
XzEyU3VwcG9ydHNUeXBlRVJLTlNfMjhNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzRUVQRnZS
TlMxXzZWZWN0b3JJU0FfTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRUVQRnZ2RVBGdlJLU0Ff
RUVFCisjZW5kaWYKKworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCitfX1pON1dlYkNvcmUyNk1v
Y2tNZWRpYVBsYXllck1lZGlhU291cmNlMTlyZWdpc3Rlck1lZGlhRW5naW5lRVBGdlBGTjNXVEYx
MFBhc3NPd25QdHJJTlNfMjdNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2VFRUVQTlNfMTFNZWRp
YVBsYXllckVFUEZ2Uk5TMV83SGFzaFNldElOUzFfNlN0cmluZ0VOUzFfMTBTdHJpbmdIYXNoRU5T
MV8xMEhhc2hUcmFpdHNJU0FfRUVFRUVQRk5TNV8xMlN1cHBvcnRzVHlwZUVSS05TXzI4TWVkaWFF
bmdpbmVTdXBwb3J0UGFyYW1ldGVyc0VFUEZ2Uk5TMV82VmVjdG9ySVNBX0xtMEVOUzFfMTVDcmFz
aE9uT3ZlcmZsb3dFRUVFUEZ2dkVQRnZSS1NBX0VFCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlN2U3ODM1NmJmZTNk
MGZiYzc1Y2Q3M2RjYWQ2ZDMzYzNjZThkYzM4Li5jNWRiZTM4MDdkZTFmZDlmNDAxM2M3OWZkNzJi
YjJiYmM0YTZhZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC01NDAyLDYgKzU0MDIsMTYgQEAKIAkJQ0RFRTM5MzcxNzk3NDI1
OTAwMUQ3NTgwIC8qIFB1YmxpY1VSTE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFRTM5MzYxNzk3NDI1OTAwMUQ3NTgwIC8qIFB1Ymxp
Y1VSTE1hbmFnZXIuY3BwICovOyB9OwogCQlDREVGNEZENzE3RTg1QzhGMDBBRUUyNEIgLyogR3Jp
ZExlbmd0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RFRjRGRDYxN0U4NUM4RjAwQUVFMjRCIC8qIEdyaWRMZW5ndGguaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDREYyQjAwNDE4MUYwNTlDMDBGMkI0
MjQgLyogTWVkaWFEZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RGMkIwMDMxODFGMDU5QzAwRjJCNDI0IC8qIE1lZGlhRGVzY3JpcHRp
b24uaCAqLzsgfTsKKwkJQ0RGMkIwMTAxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tCb3guY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGMkIwMDYxODIw
NTQwNjAwRjJCNDI0IC8qIE1vY2tCb3guY3BwICovOyB9OworCQlDREYyQjAxMTE4MjA1NDA2MDBG
MkI0MjQgLyogTW9ja0JveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RGMkIwMDcxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tCb3guaCAqLzsgfTsKKwkJ
Q0RGMkIwMTIxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjJCMDA4
MTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAgKi87IH07
CisJCUNERjJCMDEzMTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJj
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGMkIw
MDkxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmggKi87IH07
CisJCUNERjJCMDE0MTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFTb3VyY2VQcml2YXRlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjJCMDBB
MTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFTb3VyY2VQcml2YXRlLmNwcCAqLzsgfTsKKwkJ
Q0RGMkIwMTUxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tNZWRpYVNvdXJjZVByaXZhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjJCMDBCMTgyMDU0
MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFTb3VyY2VQcml2YXRlLmggKi87IH07CisJCUNERjJCMDE2
MTgyMDU0MDcwMEYyQjQyNCAvKiBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREYyQjAwQzE4MjA1NDA2MDBG
MkI0MjQgLyogTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwICovOyB9OworCQlDREYyQjAxNzE4
MjA1NDA3MDBGMkI0MjQgLyogTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjJCMDBEMTgyMDU0MDYwMEYyQjQy
NCAvKiBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oICovOyB9OworCQlDREYyQjAxODE4MjA1NDA3
MDBGMkI0MjQgLyogTW9ja1RyYWNrcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDREYyQjAwRTE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja1RyYWNrcy5j
cHAgKi87IH07CisJCUNERjJCMDE5MTgyMDU0MDcwMEYyQjQyNCAvKiBNb2NrVHJhY2tzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREYyQjAwRjE4MjA1
NDA2MDBGMkI0MjQgLyogTW9ja1RyYWNrcy5oICovOyB9OwogCQlDREY2NUNDODE0NUIxRTc1MDBD
NEM3QUEgLyogTWVkaWFDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDI3RjZFNDE0NTc2Nzg3MDA3ODIwN0QgLyogTWVkaWFDb250cm9s
bGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
Q0RGNjVDQ0ExNDVCNDQ4ODAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNjVDQzkxNDVC
NDNBNzAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMDU3RkE1MTIyMDczMTEwMEE0
NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UwNTdGQTMxMjIwNzMxMTAwQTQ3NkQ1IC8qIERv
Y3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgKi87IH07CkBAIC0xMjQ0OCw2ICsxMjQ1OCwxNiBA
QAogCQlDREVFMzkzODE3OTc0Mjc0MDAxRDc1ODAgLyogVVJMUmVnaXN0cnkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVVJMUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFRjRG
RDYxN0U4NUM4RjAwQUVFMjRCIC8qIEdyaWRMZW5ndGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gR3JpZExlbmd0aC5oOyBwYXRoID0gc3R5bGUvR3JpZExlbmd0aC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREYyQjAwMzE4MUYwNTlDMDBGMkI0MjQgLyogTWVk
aWFEZXNjcmlwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYURl
c2NyaXB0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERjJCMDA2MTgyMDU0
MDYwMEYyQjQyNCAvKiBNb2NrQm94LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1vY2tCb3guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREYyQjAw
NzE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja0JveC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNb2NrQm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERjJCMDA4
MTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJj
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERjJCMDA5MTgyMDU0MDYwMEYy
QjQyNCAvKiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDREYyQjAwQTE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhU291
cmNlUHJpdmF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2Nr
TWVkaWFTb3VyY2VQcml2YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RG
MkIwMEIxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tNZWRpYVNvdXJjZVByaXZhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja01lZGlhU291cmNlUHJpdmF0ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREYyQjAwQzE4MjA1NDA2MDBGMkI0MjQgLyogTW9j
a1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREYyQjAwRDE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja1NvdXJjZUJ1ZmZlclByaXZh
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja1NvdXJjZUJ1ZmZlclBy
aXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RGMkIwMEUxODIwNTQwNjAw
RjJCNDI0IC8qIE1vY2tUcmFja3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTW9ja1RyYWNrcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERjJC
MDBGMTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrVHJhY2tzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1vY2tUcmFja3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0RGNjVDQzkxNDVCNDNBNzAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RGNjVDQ0MxNDVCNkFGRTAwQzRDN0FB
IC8qIEpTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRTA1N0ZBMzEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERv
Y3VtZW50TWFya2VyQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xNTEyMiw2ICsxNTE0Miw3IEBACiAJCTU5Qzc3RjEwMTA1NDU5MUMwMDUwNjEwNCAvKiBtb2Nr
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDREYyQjAw
NTE4MjA1M0RGMDBGMkI0MjQgLyogbWVkaWFzb3VyY2UgKi8sCiAJCQkJMDdDNTlCNjExN0Y0Q0Y4
NzAwMEZCQ0JCIC8qIE1vY2tNZWRpYVN0cmVhbUNlbnRlci5jcHAgKi8sCiAJCQkJMDdDNTlCNjIx
N0Y0Q0Y4NzAwMEZCQ0JCIC8qIE1vY2tNZWRpYVN0cmVhbUNlbnRlci5oICovLAogCQkJCTU5MzA5
QTEwMTFGNEFFNTgwMDI1MDYwMyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwICov
LApAQCAtMjAyMjIsNiArMjAyNDMsMjMgQEAKIAkJCW5hbWUgPSBNZWRpYUNvbnRyb2xzOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQ0RGMkIwMDUxODIwNTNERjAwRjJCNDI0
IC8qIG1lZGlhc291cmNlICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9
ICgKKwkJCQlDREYyQjAwNjE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja0JveC5jcHAgKi8sCisJCQkJ
Q0RGMkIwMDcxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tCb3guaCAqLywKKwkJCQlDREYyQjAwODE4
MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwICovLAorCQkJ
CUNERjJCMDA5MTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5o
ICovLAorCQkJCUNERjJCMDBBMTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFTb3VyY2VQcml2
YXRlLmNwcCAqLywKKwkJCQlDREYyQjAwQjE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhU291
cmNlUHJpdmF0ZS5oICovLAorCQkJCUNERjJCMDBDMTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrU291
cmNlQnVmZmVyUHJpdmF0ZS5jcHAgKi8sCisJCQkJQ0RGMkIwMEQxODIwNTQwNjAwRjJCNDI0IC8q
IE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmggKi8sCisJCQkJQ0RGMkIwMEUxODIwNTQwNjAwRjJC
NDI0IC8qIE1vY2tUcmFja3MuY3BwICovLAorCQkJCUNERjJCMDBGMTgyMDU0MDYwMEYyQjQyNCAv
KiBNb2NrVHJhY2tzLmggKi8sCisJCQkpOworCQkJcGF0aCA9IG1lZGlhc291cmNlOworCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJQ0U3OUQ2ODYxN0YyMjBFRDAwODE1QzAwIC8q
IGlvcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yMjMx
Miw2ICsyMjM1MCw3IEBACiAJCQkJODVFNzExOEYwQUM1RDUzNTAwNTMyNzBGIC8qIERPTUNoYXJh
Y3RlckRhdGFJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwODlDRDkwQTk4QzQyODAw
QTI3NUFBIC8qIERPTUNvbW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTM3MTdEMTZC
MkMwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNE
RjJCMDE1MTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFTb3VyY2VQcml2YXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NUU3MTE5MDBBQzVENTM1MDA1MzI3MEYgLyogRE9NQ29tbWVudEludGVy
bmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzFBMzdBRjA5N0M3MTVGMDAxOUYzRDggLyogRE9N
Q29yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2MEQ2RTkwRDI4RDgzNDAwQjk5MThGIC8qIERP
TUNvcmVFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjI2MjQsNiArMjI2NjMsNyBAQAog
CQkJCTA3OEUwOTE4MTdEMTREMUMwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbVRyYWNrLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4QUM4MjJGRDE4MEZDMDMzMDBGQjY0RDUgLyogUmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRDcxOUQ5MTgxMTA2RTAwMDE2REM1MSAv
KiBJREJJbmRleC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RGMkIwMTkxODIwNTQwNzAwRjJCNDI0
IC8qIE1vY2tUcmFja3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNkZFMDgyMEU2Q0NDMjgwMEJG
NjA4OCAvKiBET01XZWJLaXRDU1NLZXlmcmFtZXNSdWxlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQ5ODM5MTUwMEYxRTc2QjQwMEMyMzc4MiAvKiBET01XZWJLaXRDU1NNYXRyaXguaCBp
biBIZWFkZXJzICovLAogCQkJCTQ5ODM5MTUyMEYxRTc2QjQwMEMyMzc4MiAvKiBET01XZWJLaXRD
U1NNYXRyaXhJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjYzMyw2ICsyMjY3Myw3IEBA
CiAJCQkJMzE2MTFFNjMwRTFDNEUxNDAwRjZBNTc5IC8qIERPTVdlYktpdENTU1RyYW5zZm9ybVZh
bHVlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTNGMkIzM0VCMTY1QUYxNTYwMEUzOTg3
QyAvKiBET01XZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTNGMkIz
M0VEMTY1QUYxNTYwMEUzOTg3QyAvKiBET01XZWJLaXRDU1NWaWV3cG9ydFJ1bGVJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQ0RGMkIwMTcxODIwNTQwNzAwRjJCNDI0IC8qIE1vY2tTb3Vy
Y2VCdWZmZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4QTE5NTkzMjE0N0VBMTZFMDBE
MUVBNjEgLyogRE9NV2ViS2l0TmFtZWRGbG93LmggaW4gSGVhZGVycyAqLywKIAkJCQk4QTE5NTkz
NDE0N0VBMTZFMDBEMUVBNjEgLyogRE9NV2ViS2l0TmFtZWRGbG93SW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTMxQzBGRjRDMEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRUcmFuc2l0
aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjQxODUsNiArMjQyMjYsNyBAQAogCQkJCTUx
NEM3NjdBMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZUNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTE0Qzc2N0IwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlSW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRTQxNDM0MTZBNjU5NjMwMEM2MzNDNyAvKiBS
ZXNvdXJjZUhhbmRsZVR5cGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREYyQjAxMTE4MjA1NDA2
MDBGMkI0MjQgLyogTW9ja0JveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU2RDM3M0YwQURCQTVE
RTAwQTQ1NTREIC8qIFJlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMEEzQTcz
MTE0MDVBMzk4MDBGQjhFRDMgLyogUmVzb3VyY2VMb2FkZXJPcHRpb25zLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MUFGNTAzNjE2RjEwMEY2MDA5NUIyRTggLyogUmVzb3VyY2VMb2FkZXJUeXBlcy5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNDc0OSw2ICsyNDc5MSw3IEBACiAJCQkJQTgyNEI0NjUwRTJF
RjJFQTAwODFBN0I3IC8qIFRleHRSdW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0OEIxQjdBMEYz
QTJGOUIwMDQ3QTlFMiAvKiBUZXh0U2l6ZUFkanVzdG1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyQzNEQTRCMEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0U3RyZWFtLmggaW4gSGVhZGVycyAqLywK
KwkJCQlDREYyQjAxMzE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhUGxheWVyTWVkaWFTb3Vy
Y2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NTlFOTQwMTRFRjFDRjgwMDI2QTJERCAvKiBUZXh0
VHJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NTlFOTQzMTRFRjFDRjgwMDI2QTJERCAvKiBU
ZXh0VHJhY2tDdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3MUE5RUMzMTY4RkJDNTUwMDI2MjlG
OSAvKiBUZXh0VHJhY2tDdWVHZW5lcmljLmggaW4gSGVhZGVycyAqLywKQEAgLTI1ODIxLDYgKzI1
ODY0LDcgQEAKIAkJCQlEMzU5RDc5MjEyOUNBM0MwMDAwNkU1RDIgLyogRE9NSFRNTERldGFpbHNF
bGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVCQTREMEMwQUE2ODg2ODAwODgwNTJEIC8q
IERPTUhUTUxEaXJlY3RvcnlFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVCQTREMEUw
QUE2ODg2ODAwODgwNTJEIC8qIERPTUhUTUxEaXZFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJ
CQkJQ0RGMkIwMTQxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tNZWRpYVNvdXJjZVByaXZhdGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJODVCQTREMTAwQUE2ODg2ODAwODgwNTJEIC8qIERPTUhUTUxE
TGlzdEVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NUJDQkMxNDBBQkJBODdEMDAzODEx
NjAgLyogRE9NSFRNTERvY3VtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVERjJFRUUwQUEz
ODdDQjAwQUQ2NEM1IC8qIERPTUhUTUxFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0yNTky
Niw2ICsyNTk3MCw3IEBACiAJCQkJMzFDMEZGNEEwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktp
dEFuaW1hdGlvbkV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTJFOEFFNDExNkE0OThDRjAw
NkJCM0FBIC8qIERPTVdlYktpdENTU0ZpbHRlclJ1bGUubW0gaW4gU291cmNlcyAqLywKIAkJCQkz
MTA2MDM3QTE0MzI4MUNEMDBBQkY0QkEgLyogRE9NV2ViS2l0Q1NTRmlsdGVyVmFsdWUubW0gaW4g
U291cmNlcyAqLywKKwkJCQlDREYyQjAxMDE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja0JveC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTA3RTBFNkNDQzI4MDBCRjYwODggLyogRE9NV2ViS2l0
Q1NTS2V5ZnJhbWVSdWxlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUwODEwRTZDQ0MyODAw
QkY2MDg4IC8qIERPTVdlYktpdENTU0tleWZyYW1lc1J1bGUubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk0OTgzOTE1MTBGMUU3NkI0MDBDMjM3ODIgLyogRE9NV2ViS2l0Q1NTTWF0cml4Lm1tIGluIFNv
dXJjZXMgKi8sCkBAIC0yNjI1NCw2ICsyNjI5OSw3IEBACiAJCQkJQTg3MURDMjkwQTE1MjA1NzAw
QjEyQTY4IC8qIEhUTUxUaXRsZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3QjM4
NzcxMjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxUb2tlbml6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMDcwNzU2OEIxNDIyNjJENjAwNDE0MTYxIC8qIEhUTUxUcmFja0VsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJQ0RGMkIwMTIxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tNZWRpYVBsYXll
ck1lZGlhU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0IzNzI1MTIyODcyMTcwMEI4
MUZGOCAvKiBIVE1MVHJlZUJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUI3RTc4QkQx
NkYxNkNDNjAwMTI2OTE0IC8qIEhUTUxUcmVlQnVpbGRlclNpbXVsYXRvci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBOEVBNzlGMzBBMTkxNkRGMDBBOEVGNUYgLyogSFRNTFVMaXN0RWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTI3NjUzLDYgKzI3Njk5LDcgQEAKIAkJCQk0MzFBMzA4ODEz
QjhGOTc4MDA3NzkxRTQgLyogU1ZHQW5pbWF0ZWRCb29sZWFuLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQzQTYyNUY5MTNCMzMwNDAwMEFDOTRCOCAvKiBTVkdBbmltYXRlZENvbG9yLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTcxQ0M3QTIwMTUyQTBCRkUwMDlFRUFGOSAvKiBTVkdBbmltYXRlZEVu
dW1lcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNERjJCMDE2MTgyMDU0MDcwMEYyQjQy
NCAvKiBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0M0Y2
RkQ5NjEzQkNEMEIxMDAyMjQwNTIgLyogU1ZHQW5pbWF0ZWRJbnRlZ2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBMzU4NkUxMTUyNjRGOTUwMDIyQTY1OSAvKiBTVkdBbmltYXRlZEludGVnZXJP
cHRpb25hbEludGVnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOEFDODIyRkMxODBGQzAzMzAw
RkI2NEQ1IC8qIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAt
Mjc3ODIsNiArMjc4MjksNyBAQAogCQkJCTg0NzZDOUVGMTFERjZBNTgwMDU1NUIwMiAvKiBTVkdQ
YXRoUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTgwMEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdQYXRoU2VnTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NDc2QzlFNTExREY2
QTBCMDA1NTVCMDIgLyogU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUNERjJCMDE4MTgyMDU0MDcwMEYyQjQyNCAvKiBNb2NrVHJhY2tzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTA4RkYxMDIwMTI5NTBGNUEwMEYwMDI3NiAvKiBTVkdQYXRoU2VnTGlzdFByb3Bl
cnR5VGVhck9mZi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NEI2Qjk3NzEyMEYxM0U1MDBCOEVG
QUYgLyogU1ZHUGF0aFNlZ0xpc3RTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODQxOUQy
QjkxMjBFMEM3NjAwMTQxRjhGIC8qIFNWR1BhdGhTdHJpbmdCdWlsZGVyLmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNTY1YTE1
OTY2Yzc0ZmU3NjRjMTEzYmZkMDZkMjM5NTJlOTc5NjMxOC4uZDE2OTRhODNjYmE2M2Y1OTliYjYz
MWNlY2Y0MjhjMjhhYTA3OGVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCkBAIC0xNDM3LDggKzE0MzcsOCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlv
VHJhY2tFbmFibGVkQ2hhbmdlZChBdWRpb1RyYWNrKiB0cmFjaykKIHsKICAgICBpZiAoIVJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIEFTU0VSVF9VTlVTRUQodHJhY2ssIG1fYXVkaW9U
cmFja3MtPmNvbnRhaW5zKHRyYWNrKSk7Ci0gICAgbV9hdWRpb1RyYWNrcy0+c2NoZWR1bGVDaGFu
Z2VFdmVudCgpOworICAgIGlmIChtX2F1ZGlvVHJhY2tzICYmIG1fYXVkaW9UcmFja3MtPmNvbnRh
aW5zKHRyYWNrKSkKKyAgICAgICAgbV9hdWRpb1RyYWNrcy0+c2NoZWR1bGVDaGFuZ2VFdmVudCgp
OwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRU
cmFjayogdHJhY2spCkBAIC0xNDc4LDggKzE0NzgsOCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFjayogdHJhY2spCiB7CiAgICAgaWYg
KCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJh
Y2tFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlRfVU5VU0VEKHRyYWNrLCBt
X3ZpZGVvVHJhY2tzLT5jb250YWlucyh0cmFjaykpOwotICAgIG1fdmlkZW9UcmFja3MtPnNjaGVk
dWxlQ2hhbmdlRXZlbnQoKTsKKyAgICBpZiAobV92aWRlb1RyYWNrcyAmJiBtX3ZpZGVvVHJhY2tz
LT5jb250YWlucyh0cmFjaykpCisgICAgICAgIG1fdmlkZW9UcmFja3MtPnNjaGVkdWxlQ2hhbmdl
RXZlbnQoKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tLaW5kQ2hhbmdl
ZChUZXh0VHJhY2sqIHRyYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDZlYzcxYzg2ZTEwN2EwYmQzZTRmYTRkMzllMGI5Njlm
YzQwOTU0YjQuLmQ2NGFiMzRhNTQ4YmRiNDU0YTZmNzdjMjk3NGZiMGZkYzE0MTNhNDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAg
LTEyMTUsNiArMTIxNSwxMSBAQCBzaXplX3QgTWVkaWFQbGF5ZXI6OmV4dHJhTWVtb3J5Q29zdCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+ZXh0cmFNZW1vcnlDb3N0KCk7CiB9CiAKK3Zv
aWQgTWVkaWFQbGF5ZXJGYWN0b3J5U3VwcG9ydDo6Y2FsbFJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVk
aWFFbmdpbmVSZWdpc3RlciByZWdpc3Rlck1lZGlhRW5naW5lKQoreworICAgIHJlZ2lzdGVyTWVk
aWFFbmdpbmUoYWRkTWVkaWFFbmdpbmUpOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggMmQ4MjNiZDRiZWEy
YTk2ODQ3YmU5YmUzMTMzNjhjMzBhODg5YzBmYS4uNWIyMjFiYmM0ZDAzNzM0OWU1ZmJhMzkxNmY1
ZDBjMGRiYTY1NzI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oCkBAIC01NDksNiArNTQ5LDEyIEBAIHR5cGVkZWYgdm9pZCAoKk1lZGlhRW5n
aW5lQ2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSkoY29uc3QgU3RyaW5nJik7CiAKIHR5cGVkZWYgdm9p
ZCAoKk1lZGlhRW5naW5lUmVnaXN0cmFyKShDcmVhdGVNZWRpYUVuZ2luZVBsYXllciwgTWVkaWFF
bmdpbmVTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUsCiAgICAgTWVkaWFF
bmdpbmVHZXRTaXRlc0luTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUsIE1l
ZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSk7Cit0eXBlZGVmIHZvaWQgKCpNZWRpYUVu
Z2luZVJlZ2lzdGVyKShNZWRpYUVuZ2luZVJlZ2lzdHJhcik7CisKK2NsYXNzIE1lZGlhUGxheWVy
RmFjdG9yeVN1cHBvcnQgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIGNhbGxSZWdpc3Rlck1l
ZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0ZXIpOworfTsKIAogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yODZlODFiNDkzM2UzMDQ2NmQ5OGIxYTM4ZGVjMjQ5ODU5MTAyZGVjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94
LmNwcApAQCAtMCwwICsxLDE0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJNb2NrQm94LmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCisjaW5jbHVk
ZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvRGF0YVZpZXcuaD4K
KyNpbmNsdWRlIDxydW50aW1lL0ludDhBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNb2NrQm94OjpNb2NrQm94KEFy
cmF5QnVmZmVyKiBkYXRhKQoreworICAgIG1fdHlwZSA9IHBlZWtUeXBlKGRhdGEpOworICAgIG1f
bGVuZ3RoID0gcGVla0xlbmd0aChkYXRhKTsKKyAgICBBU1NFUlQobV9sZW5ndGggPj0gOCk7Cit9
CisKK1N0cmluZyBNb2NrQm94OjpwZWVrVHlwZShBcnJheUJ1ZmZlciogZGF0YSkKK3sKKyAgICBT
dHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgUmVmUHRyPEludDhBcnJheT4gYXJyYXkgPSBKU0M6
OkludDhBcnJheTo6Y3JlYXRlKGRhdGEsIDAsIDQpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
NDsgKytpKQorICAgICAgICBidWlsZGVyLmFwcGVuZChhcnJheS0+aXRlbShpKSk7CisgICAgcmV0
dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworc2l6ZV90IE1vY2tCb3g6OnBlZWtMZW5ndGgo
QXJyYXlCdWZmZXIqIGRhdGEpCit7CisgICAgUmVmUHRyPEpTQzo6RGF0YVZpZXc+IHZpZXcgPSBK
U0M6OkRhdGFWaWV3OjpjcmVhdGUoZGF0YSwgMCwgZGF0YS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBy
ZXR1cm4gdmlldy0+Z2V0PHVpbnQzMl90Pig0LCB0cnVlKTsKK30KKworTW9ja1RyYWNrQm94OjpN
b2NrVHJhY2tCb3goQXJyYXlCdWZmZXIqIGRhdGEpCisgICAgOiBNb2NrQm94KGRhdGEpCit7Cisg
ICAgQVNTRVJUKG1fbGVuZ3RoID09IDE3KTsKKworICAgIFJlZlB0cjxKU0M6OkRhdGFWaWV3PiB2
aWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGRhdGEsIDAsIGRhdGEtPmJ5dGVMZW5ndGgoKSk7
CisgICAgbV90cmFja0lEID0gdmlldy0+Z2V0PGludDMyX3Q+KDgsIHRydWUpOworCisgICAgU3Ry
aW5nQnVpbGRlciBidWlsZGVyOworICAgIFJlZlB0cjxJbnQ4QXJyYXk+IGFycmF5ID0gSlNDOjpJ
bnQ4QXJyYXk6OmNyZWF0ZShkYXRhLCAxMiwgNCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0
OyArK2kpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGFycmF5LT5pdGVtKGkpKTsKKyAgICBtX2Nv
ZGVjID0gYnVpbGRlci50b1N0cmluZygpOworCisgICAgbV9raW5kID0gc3RhdGljX2Nhc3Q8VHJh
Y2tLaW5kPih2aWV3LT5nZXQ8dWludDhfdD4oMTYsIHRydWUpKTsKK30KKworY29uc3QgU3RyaW5n
JiBNb2NrVHJhY2tCb3g6OnR5cGUoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5n
LCB0cmFrLCAoQVNDSUlMaXRlcmFsKCJ0cmFrIikpKTsKKyAgICByZXR1cm4gdHJhazsKK30KKwor
TW9ja0luaXRpYWxpemF0aW9uQm94OjpNb2NrSW5pdGlhbGl6YXRpb25Cb3goQXJyYXlCdWZmZXIq
IGRhdGEpCisgICAgOiBNb2NrQm94KGRhdGEpCit7CisgICAgQVNTRVJUKG1fbGVuZ3RoID49IDEz
KTsKKworICAgIFJlZlB0cjxKU0M6OkRhdGFWaWV3PiB2aWV3ID0gSlNDOjpEYXRhVmlldzo6Y3Jl
YXRlKGRhdGEsIDAsIGRhdGEtPmJ5dGVMZW5ndGgoKSk7CisgICAgaW50MzJfdCB0aW1lVmFsdWUg
PSB2aWV3LT5nZXQ8aW50MzJfdD4oOCwgdHJ1ZSk7CisgICAgaW50MzJfdCB0aW1lU2NhbGUgPSB2
aWV3LT5nZXQ8aW50MzJfdD4oMTIsIHRydWUpOworICAgIG1fZHVyYXRpb24gPSBNZWRpYVRpbWUo
dGltZVZhbHVlLCB0aW1lU2NhbGUpOworICAgIAorICAgIHNpemVfdCBvZmZzZXQgPSAxNjsKKwor
ICAgIHdoaWxlIChvZmZzZXQgPCBtX2xlbmd0aCkgeworICAgICAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IHN1YkJ1ZmZlciA9IGRhdGEtPnNsaWNlKG9mZnNldCk7CisgICAgICAgIGlmIChNb2NrQm94
OjpwZWVrVHlwZShzdWJCdWZmZXIuZ2V0KCkpICE9IE1vY2tUcmFja0JveDo6dHlwZSgpKQorICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgTW9ja1RyYWNrQm94IHRyYWNrQm94KHN1YkJ1ZmZl
ci5nZXQoKSk7CisgICAgICAgIG9mZnNldCArPSB0cmFja0JveC5sZW5ndGgoKTsKKyAgICAgICAg
bV90cmFja3MuYXBwZW5kKHRyYWNrQm94KTsKKyAgICB9Cit9CisKK2NvbnN0IFN0cmluZyYgTW9j
a0luaXRpYWxpemF0aW9uQm94Ojp0eXBlKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgaW5pdCwgKEFTQ0lJTGl0ZXJhbCgiaW5pdCIpKSk7CisgICAgcmV0dXJuIGluaXQ7Cit9
CisKK01vY2tTYW1wbGVCb3g6Ok1vY2tTYW1wbGVCb3goQXJyYXlCdWZmZXIqIGRhdGEpCisgICAg
OiBNb2NrQm94KGRhdGEpCit7CisgICAgQVNTRVJUKG1fbGVuZ3RoID09IDI5KTsKKworICAgIFJl
ZlB0cjxKU0M6OkRhdGFWaWV3PiB2aWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGRhdGEsIDAs
IGRhdGEtPmJ5dGVMZW5ndGgoKSk7CisgICAgaW50MzJfdCB0aW1lU2NhbGUgPSB2aWV3LT5nZXQ8
aW50MzJfdD4oOCwgdHJ1ZSk7CisKKyAgICBpbnQzMl90IHRpbWVWYWx1ZSA9IHZpZXctPmdldDxp
bnQzMl90PigxMiwgdHJ1ZSk7CisgICAgbV9wcmVzZW50YXRpb25UaW1lc3RhbXAgPSBNZWRpYVRp
bWUodGltZVZhbHVlLCB0aW1lU2NhbGUpOworCisgICAgdGltZVZhbHVlID0gdmlldy0+Z2V0PGlu
dDMyX3Q+KDE2LCB0cnVlKTsKKyAgICBtX2RlY29kZVRpbWVzdGFtcCA9IE1lZGlhVGltZSh0aW1l
VmFsdWUsIHRpbWVTY2FsZSk7CisKKyAgICB0aW1lVmFsdWUgPSB2aWV3LT5nZXQ8aW50MzJfdD4o
MjAsIHRydWUpOworICAgIG1fZHVyYXRpb24gPSBNZWRpYVRpbWUodGltZVZhbHVlLCB0aW1lU2Nh
bGUpOworCisgICAgbV90cmFja0lEID0gdmlldy0+Z2V0PGludDMyX3Q+KDI0LCB0cnVlKTsKKyAg
ICBtX2ZsYWdzID0gdmlldy0+Z2V0PHVpbnQ4X3Q+KDI4LCB0cnVlKTsKK30KKworY29uc3QgU3Ry
aW5nJiBNb2NrU2FtcGxlQm94Ojp0eXBlKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgc21wbCwgKEFTQ0lJTGl0ZXJhbCgic21wbCIpKSk7CisgICAgcmV0dXJuIHNtcGw7Cit9
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVk
aWFzb3VyY2UvTW9ja0JveC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmMGMwZDNjZTIwODUxMmU3Mjg0NjUxZGNm
N2Y4NzdlZjI4MjUwMTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guaApAQCAtMCwwICsxLDE0NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgTW9ja0JveF9oCisjZGVmaW5lIE1vY2tCb3hfaAorCisjaWYgRU5BQkxFKE1FRElB
X1NPVVJDRSkKKworI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBBcnJheUJ1ZmZlcjsKK30K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBBIE1vY2tCb3ggcmVwcmVzZW50cyBhIElTTy1C
TUZGIGxpa2UgZGF0YSBzdHJ1Y3R1cmUuIERhdGEgaW4gdGhlCisvLyBzdHJ1Y3R1cmUgaXMgbGl0
dGxlLWVuZGlhbi4gVGhlIGxheW91dCBvZiB0aGUgZGF0YSBzdHJ1Y3R1cmUgYXMgZm9sbG93czoK
Ky8vCisvLyA0IGJ5dGVzIDogNENDIDogaWRlbnRpZmllcgorLy8gNCBieXRlcyA6IHVuc2lnbmVk
IDogbGVuZ3RoCisvLyAKK2NsYXNzIE1vY2tCb3ggeworcHVibGljOgorICAgIHN0YXRpYyBTdHJp
bmcgcGVla1R5cGUoSlNDOjpBcnJheUJ1ZmZlciopOworICAgIHN0YXRpYyBzaXplX3QgcGVla0xl
bmd0aChKU0M6OkFycmF5QnVmZmVyKik7CisKKyAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gbV9sZW5ndGg7IH0KKyAgICBjb25zdCBTdHJpbmcmIHR5cGUoKSBjb25zdCB7IHJldHVy
biBtX3R5cGU7IH0KKworcHJvdGVjdGVkOgorICAgIE1vY2tCb3goSlNDOjpBcnJheUJ1ZmZlciop
OworCisgICAgc2l6ZV90IG1fbGVuZ3RoOworICAgIFN0cmluZyBtX3R5cGU7Cit9OworCisvLyBB
IE1vY2tUcmFja0JveCBleHRlbmRzIE1vY2tCb3ggYW5kIGV4cGVjdHMgdGhlIGZvbGxvd2luZwor
Ly8gZGF0YSBzdHJ1Y3R1cmU6CisvLworLy8gNCBieXRlcyA6IDRDQyA6IGlkZW50aWZpZXIgPSAn
dHJhaycKKy8vIDQgYnl0ZXMgOiB1bnNpZ25lZCA6IGxlbmd0aCA9IDE3CisvLyA0IGJ5dGVzIDog
c2lnbmVkIDogdHJhY2sgSUQKKy8vIDQgYnl0ZXMgOiA0Q0MgOiBjb2RlYworLy8gMSBieXRlICA6
IHVuc2lnbmVkIDoga2luZAorLy8gCitjbGFzcyBNb2NrVHJhY2tCb3ggRklOQUwgOiBwdWJsaWMg
TW9ja0JveCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgdHlwZSgpOworICAg
IE1vY2tUcmFja0JveChKU0M6OkFycmF5QnVmZmVyKik7CisKKyAgICBpbnQzMl90IHRyYWNrSUQo
KSBjb25zdCB7IHJldHVybiBtX3RyYWNrSUQ7IH0KKworICAgIGNvbnN0IFN0cmluZyYgY29kZWMo
KSBjb25zdCB7IHJldHVybiBtX2NvZGVjOyB9CisKKyAgICBlbnVtIFRyYWNrS2luZCB7IEF1ZGlv
LCBWaWRlbywgVGV4dCB9OworICAgIFRyYWNrS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9r
aW5kOyB9CisKK3Byb3RlY3RlZDoKKyAgICB1aW50OF90IG1fdHJhY2tJRDsKKyAgICBTdHJpbmcg
bV9jb2RlYzsKKyAgICBUcmFja0tpbmQgbV9raW5kOworfTsKKworLy8gQSBNb2NrSW5pdGlhbGl6
YXRpb25Cb3ggZXh0ZW5kcyBNb2NrQm94IGFuZCBjb250YWlucyAwIG9yIG1vcmUKKy8vIE1vY2tU
cmFja0JveGVzLiBJdCBleHBlY3RzIHRoZSBmb2xsb3dpbmcgZGF0YSBzdHJ1Y3R1cmU6CisvLwor
Ly8gNCBieXRlcyA6IDRDQyA6IGlkZW50aWZpZXIgPSAnaW5pdCcKKy8vIDQgYnl0ZXMgOiB1bnNp
Z25lZCA6IGxlbmd0aCA9IDE2ICsgKDEzICogbnVtIHRyYWNrcykKKy8vIDQgYnl0ZXMgOiBzaWdu
ZWQgOiBkdXJhdGlvbiB0aW1lIHZhbHVlCisvLyA0IGJ5dGVzIDogc2lnbmVkIDogZHVyYXRpb24g
dGltZSBzY2FsZQorLy8gTiBieXRlcyA6IE1vY2tUcmFja0JveGVzIDogdHJhY2tzCisvLworY2xh
c3MgTW9ja0luaXRpYWxpemF0aW9uQm94IEZJTkFMIDogcHVibGljIE1vY2tCb3ggeworcHVibGlj
OgorICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIHR5cGUoKTsKKyAgICBNb2NrSW5pdGlhbGl6YXRp
b25Cb3goSlNDOjpBcnJheUJ1ZmZlciopOworCisgICAgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9kdXJhdGlvbjsgfQorICAgIGNvbnN0IFZlY3RvcjxNb2NrVHJhY2tCb3g+
JiB0cmFja3MoKSBjb25zdCB7IHJldHVybiBtX3RyYWNrczsgfQorCitwcm90ZWN0ZWQ6CisgICAg
TWVkaWFUaW1lIG1fZHVyYXRpb247CisgICAgVmVjdG9yPE1vY2tUcmFja0JveD4gbV90cmFja3M7
Cit9OworCisvLyBBIE1vY2tTYW1wbGVCb3ggZXh0ZW5kcyBNb2NrQm94IGFuZCBleHBlY3RzIHRo
ZSBmb2xsb3dpbmcgZGF0YSBzdHJ1Y3R1cmU6CisvLworLy8gNCBieXRlcyA6IDRDQyA6IGlkZW50
aWZpZXIgPSAnc21wbCcKKy8vIDQgYnl0ZXMgOiB1bnNpZ25lZCA6IGxlbmd0aCA9IDI5CisvLyA0
IGJ5dGVzIDogc2lnbmVkIDogdGltZSBzY2FsZQorLy8gNCBieXRlcyA6IHNpZ25lZCA6IHByZXNl
bnRhdGlvbiB0aW1lIHZhbHVlCisvLyA0IGJ5dGVzIDogc2lnbmVkIDogZGVjb2RlIHRpbWUgdmFs
dWUKKy8vIDQgYnl0ZXMgOiBzaWduZWQgOiBkdXJhdGlvbiB0aW1lIHZhbHVlCisvLyA0IGJ5dGVz
IDogc2lnbmVkIDogdHJhY2sgSUQKKy8vIDEgYnl0ZSAgOiB1bnNpZ25lZCA6IGZsYWdzCisvLwor
Y2xhc3MgTW9ja1NhbXBsZUJveCBGSU5BTCA6IHB1YmxpYyBNb2NrQm94IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgY29uc3QgU3RyaW5nJiB0eXBlKCk7CisgICAgTW9ja1NhbXBsZUJveChKU0M6OkFy
cmF5QnVmZmVyKik7CisKKyAgICBNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZXN0YW1wKCkgY29u
c3QgeyByZXR1cm4gbV9wcmVzZW50YXRpb25UaW1lc3RhbXA7IH0KKyAgICBNZWRpYVRpbWUgZGVj
b2RlVGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVUaW1lc3RhbXA7IH0KKyAgICBN
ZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2R1cmF0aW9uOyB9CisgICAgaW50
MzJfdCB0cmFja0lEKCkgY29uc3QgeyByZXR1cm4gbV90cmFja0lEOyB9CisgICAgdWludDhfdCBm
bGFncygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3M7IH0KKworICAgIGVudW0geyBJc1N5bmMgPSAx
IDw8IDAgfTsKKyAgICBib29sIGlzU3luYygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBJc1N5
bmM7IH0KKworcHJvdGVjdGVkOgorICAgIE1lZGlhVGltZSBtX3ByZXNlbnRhdGlvblRpbWVzdGFt
cDsKKyAgICBNZWRpYVRpbWUgbV9kZWNvZGVUaW1lc3RhbXA7CisgICAgTWVkaWFUaW1lIG1fZHVy
YXRpb247CisgICAgaW50MzJfdCBtX3RyYWNrSUQ7CisgICAgdWludDhfdCBtX2ZsYWdzOworfTsK
KworfQorCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVk
aWFTb3VyY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2ZmRmMTRjNzk5NTc3Mjc0ZTQ3MWUxMjQ4MTVkY2I0
NDQ0ZDdlYWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcApAQCAtMCwwICsxLDIz
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNb2NrTWVkaWFQ
bGF5ZXJNZWRpYVNvdXJjZS5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKworI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgorI2luY2x1ZGUgIkhUTUxNZWRpYVNvdXJj
ZS5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAiTW9ja01lZGlhU291cmNl
UHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCisvLyBNZWRpYVBsYXllciBFbmlnbmUgU3VwcG9ydAordm9pZCBNb2NrTWVk
aWFQbGF5ZXJNZWRpYVNvdXJjZTo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lz
dHJhciByZWdpc3RyYXIpCit7CisgICAgcmVnaXN0cmFyKGNyZWF0ZSwgZ2V0U3VwcG9ydGVkVHlw
ZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCk7Cit9CisKK1Bhc3NPd25QdHI8TWVkaWFQbGF5ZXJQ
cml2YXRlSW50ZXJmYWNlPiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6Y3JlYXRlKE1lZGlh
UGxheWVyKiBwbGF5ZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNb2NrTWVkaWFQbGF5
ZXJNZWRpYVNvdXJjZShwbGF5ZXIpKTsKK30KKworc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiBtaW1l
VHlwZUNhY2hlKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8U3RyaW5nPiwg
Y2FjaGUsICgpKTsKKyAgICBzdGF0aWMgYm9vbCBpc0luaXRpYWxpemVkID0gZmFsc2U7CisKKyAg
ICBpZiAoIWlzSW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgaXNJbml0aWFsaXplZCA9IHRydWU7Cisg
ICAgICAgIGNhY2hlLmFkZChBU0NJSUxpdGVyYWwoInZpZGVvL21vY2siKSk7CisgICAgfQorCisg
ICAgcmV0dXJuIGNhY2hlOworfQorCit2b2lkIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpn
ZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZz4mIHN1cHBvcnRlZFR5cGVzKQoreworICAg
IHN1cHBvcnRlZFR5cGVzID0gbWltZVR5cGVDYWNoZSgpOworfQorCitNZWRpYVBsYXllcjo6U3Vw
cG9ydHNUeXBlIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpzdXBwb3J0c1R5cGUoY29uc3Qg
TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICBpZiAoIXBh
cmFtZXRlcnMuaXNNZWRpYVNvdXJjZSkKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05v
dFN1cHBvcnRlZDsKKworICAgIGlmICghbWltZVR5cGVDYWNoZSgpLmNvbnRhaW5zKHBhcmFtZXRl
cnMudHlwZSkpCisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CisK
KyAgICBpZiAocGFyYW1ldGVycy5jb2RlY3MuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gTWVk
aWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkOworCisgICAgcmV0dXJuIHBhcmFtZXRlcnMuY29kZWNz
ID09ICJtb2NrIiA/IE1lZGlhUGxheWVyOjpJc1N1cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpNYXlC
ZVN1cHBvcnRlZDsKK30KKworTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6Ok1vY2tNZWRpYVBs
YXllck1lZGlhU291cmNlKE1lZGlhUGxheWVyKiBwbGF5ZXIpCisgICAgOiBtX3BsYXllcihwbGF5
ZXIpCisgICAgLCBtX2N1cnJlbnRUaW1lKDApCisgICAgLCBtX2R1cmF0aW9uKDApCisgICAgLCBt
X3JlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nKQorICAgICwgbV9uZXR3b3JrU3Rh
dGUoTWVkaWFQbGF5ZXI6OkVtcHR5KQorICAgICwgbV9wbGF5aW5nKGZhbHNlKQoreworfQorCitN
b2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6fk1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlKCkK
K3sKK30KKwordm9pZCBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6bG9hZChjb25zdCBTdHJp
bmcmKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIE1vY2tNZWRpYVBs
YXllck1lZGlhU291cmNlOjpsb2FkKGNvbnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8SFRNTE1lZGlh
U291cmNlPiBzb3VyY2UpCit7CisgICAgbV9tZWRpYVNvdXJjZSA9IHNvdXJjZTsKKyAgICBtX21l
ZGlhU291cmNlUHJpdmF0ZSA9IE1vY2tNZWRpYVNvdXJjZVByaXZhdGU6OmNyZWF0ZSh0aGlzKTsK
KyAgICBtX21lZGlhU291cmNlLT5zZXRQcml2YXRlQW5kT3BlbigqbV9tZWRpYVNvdXJjZVByaXZh
dGUpOworfQorCit2b2lkIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpjYW5jZWxMb2FkKCkK
K3sKK30KKwordm9pZCBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6cGxheSgpCit7CisgICAg
bV9wbGF5aW5nID0gMTsKKyAgICBjYWxsT25NYWluVGhyZWFkKGJpbmQoJk1vY2tNZWRpYVBsYXll
ck1lZGlhU291cmNlOjphZHZhbmNlQ3VycmVudFRpbWUsIHRoaXMpKTsKK30KKwordm9pZCBNb2Nr
TWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6cGF1c2UoKQoreworICAgIG1fcGxheWluZyA9IDA7Cit9
CisKK0ludFNpemUgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6Om5hdHVyYWxTaXplKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gSW50U2l6ZSgpOworfQorCitib29sIE1vY2tNZWRpYVBsYXllck1l
ZGlhU291cmNlOjpoYXNWaWRlbygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWVkaWFTb3VyY2VQ
cml2YXRlID8gbV9tZWRpYVNvdXJjZVByaXZhdGUtPmhhc1ZpZGVvKCkgOiBmYWxzZTsKK30KKwor
Ym9vbCBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6aGFzQXVkaW8oKSBjb25zdAoreworICAg
IHJldHVybiBtX21lZGlhU291cmNlUHJpdmF0ZSA/IG1fbWVkaWFTb3VyY2VQcml2YXRlLT5oYXNB
dWRpbygpIDogZmFsc2U7Cit9CisKK3ZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnNl
dFZpc2libGUoYm9vbCkKK3sKK30KKworYm9vbCBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6
c2Vla2luZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1vY2tNZWRp
YVBsYXllck1lZGlhU291cmNlOjpwYXVzZWQoKSBjb25zdAoreworICAgIHJldHVybiAhbV9wbGF5
aW5nOworfQorCitNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIE1vY2tNZWRpYVBsYXllck1lZGlh
U291cmNlOjpuZXR3b3JrU3RhdGUoKSBjb25zdAoreworICAgIHJldHVybiBtX25ldHdvcmtTdGF0
ZTsKK30KKworTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgTW9ja01lZGlhUGxheWVyTWVkaWFTb3Vy
Y2U6OnJlYWR5U3RhdGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3JlYWR5U3RhdGU7Cit9CisK
K1Bhc3NSZWZQdHI8VGltZVJhbmdlcz4gTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmJ1ZmZl
cmVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRpYVNvdXJjZSA/IG1fbWVkaWFTb3VyY2Ut
PmJ1ZmZlcmVkKCkgOiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKK30KKworYm9vbCBNb2NrTWVkaWFQ
bGF5ZXJNZWRpYVNvdXJjZTo6ZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3ZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnNldFNpemUo
Y29uc3QgSW50U2l6ZSYpCit7Cit9CisKK3ZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6
OnBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKQoreworfQorCitkb3VibGUg
TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmN1cnJlbnRUaW1lRG91YmxlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9jdXJyZW50VGltZTsKK30KKworZG91YmxlIE1vY2tNZWRpYVBsYXllck1l
ZGlhU291cmNlOjpkdXJhdGlvbkRvdWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZHVyYXRp
b247Cit9CisKK3ZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnNlZWtEb3VibGUoZG91
YmxlIHRpbWUpCit7CisgICAgbV9jdXJyZW50VGltZSA9IHN0ZDo6bWluKHRpbWUsIG1fZHVyYXRp
b24pOworICAgIG1fcGxheWVyLT50aW1lQ2hhbmdlZCgpOworCisgICAgaWYgKG1fcGxheWluZykK
KyAgICAgICAgY2FsbE9uTWFpblRocmVhZChiaW5kKCZNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJj
ZTo6YWR2YW5jZUN1cnJlbnRUaW1lLCB0aGlzKSk7Cit9CisKK3ZvaWQgTW9ja01lZGlhUGxheWVy
TWVkaWFTb3VyY2U6OmFkdmFuY2VDdXJyZW50VGltZSgpCit7CisgICAgUmVmUHRyPFRpbWVSYW5n
ZXM+IGJ1ZmZlcmVkID0gdGhpcy0+YnVmZmVyZWQoKTsKKyAgICBzaXplX3QgcG9zID0gYnVmZmVy
ZWQtPmZpbmQobV9jdXJyZW50VGltZSk7CisgICAgaWYgKHBvcyA9PSBub3RGb3VuZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9jdXJyZW50VGltZSA9IHN0ZDo6bWluKG1fZHVyYXRpb24sIGJ1
ZmZlcmVkLT5lbmQocG9zLCBJR05PUkVfRVhDRVBUSU9OKSk7CisgICAgbV9wbGF5ZXItPnRpbWVD
aGFuZ2VkKCk7Cit9CisKK3ZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnVwZGF0ZUR1
cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikKK3sKKyAgICBpZiAobV9kdXJhdGlvbiA9PSBkdXJhdGlv
bikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kdXJhdGlvbiA9IGR1cmF0aW9uOworICAgIG1f
cGxheWVyLT5kdXJhdGlvbkNoYW5nZWQoKTsKK30KKwordm9pZCBNb2NrTWVkaWFQbGF5ZXJNZWRp
YVNvdXJjZTo6c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRl
KQoreworICAgIGlmIChyZWFkeVN0YXRlID09IG1fcmVhZHlTdGF0ZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9yZWFkeVN0YXRlID0gcmVhZHlTdGF0ZTsKKyAgICBtX3BsYXllci0+cmVhZHlT
dGF0ZUNoYW5nZWQoKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxh
eWVyTWVkaWFTb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMDY3ZDhiZTA4MDkzNWY5MmFlOWE2Yjk3YzJi
MGQ2ZTg1MzBkMzA5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5oCkBAIC0wLDAgKzEs
OTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlX2gKKyNk
ZWZpbmUgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2VfaAorCisjaWYgRU5BQkxFKE1FRElBX1NP
VVJDRSkKKworI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZS5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIE1lZGlhU291cmNlOworY2xhc3MgTW9ja01lZGlhU291cmNlUHJpdmF0
ZTsKKworY2xhc3MgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UgOiBwdWJsaWMgTWVkaWFQbGF5
ZXJQcml2YXRlSW50ZXJmYWNlIHsKK3B1YmxpYzoKKyAgICAvLyBNZWRpYVBsYXllciBFbmdpbmUg
U3VwcG9ydAorICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVS
ZWdpc3RyYXIpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZT4gY3JlYXRlKE1lZGlhUGxheWVyKik7CisgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVk
VHlwZXMoSGFzaFNldDxTdHJpbmc+JiB0eXBlcyk7CisgICAgc3RhdGljIE1lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRl
cnMmKTsKKworICAgIHZpcnR1YWwgfk1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlKCk7CisKKyAg
ICB2b2lkIGFkdmFuY2VDdXJyZW50VGltZSgpOworICAgIHZvaWQgdXBkYXRlRHVyYXRpb24oZG91
YmxlKTsKKworICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZvaWQgc2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVh
ZHlTdGF0ZSk7CisKK3ByaXZhdGU6CisgICAgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UoTWVk
aWFQbGF5ZXIqKTsKKworICAgIC8vIE1lZGlhUGxheWVyUHJpdmF0ZSBPdmVycmlkZXMKKyAgICB2
aXJ0dWFsIHZvaWQgbG9hZChjb25zdCBTdHJpbmcmIHVybCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJiB1cmwsIFBhc3NSZWZQdHI8SFRNTE1lZGlhU291cmNl
PikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbExvYWQoKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGxheSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgSW50U2l6ZSBuYXR1cmFsU2l6ZSgpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgYm9vbCBoYXNWaWRlbygpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgYm9vbCBoYXNBdWRpbygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRWaXNpYmxlKGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzZWVraW5nKCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHBhdXNlZCgpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3JrU3RhdGUoKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQo
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBJbnRSZWN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBkb3VibGUgY3VycmVudFRpbWVEb3Vi
bGUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGRvdWJsZSBkdXJhdGlvbkRvdWJsZSgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZWVrRG91YmxlKGRvdWJsZSB0aW1l
KSBPVkVSUklERTsKKworICAgIE1lZGlhUGxheWVyKiBtX3BsYXllcjsKKyAgICBSZWZQdHI8SFRN
TE1lZGlhU291cmNlPiBtX21lZGlhU291cmNlOworICAgIFJlZlB0cjxNb2NrTWVkaWFTb3VyY2VQ
cml2YXRlPiBtX21lZGlhU291cmNlUHJpdmF0ZTsKKworICAgIGRvdWJsZSBtX2N1cnJlbnRUaW1l
OworICAgIGRvdWJsZSBtX2R1cmF0aW9uOworICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIG1f
cmVhZHlTdGF0ZTsKKyAgICBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG1fbmV0d29ya1N0YXRl
OworICAgIGJvb2wgbV9wbGF5aW5nOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NPVVJDRSkKKworI2VuZGlmIC8vIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlX2gKKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVk
aWFTb3VyY2VQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFz
b3VyY2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmUxNDhmNTdmYjll
N2VjMmI1OGRjY2NlZmI4YzdkOGE1Yjc1MGI2MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5j
cHAKQEAgLTAsMCArMSwxNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiTW9ja01lZGlhU291cmNlUHJpdmF0ZS5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJD
RSkKKworI2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBs
YWNlaG9sZGVyLmgiCisjaW5jbHVkZSAiTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuaCIKKyNp
bmNsdWRlICJNb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1JlZlB0cjxNb2NrTWVkaWFTb3VyY2VQcml2YXRlPiBNb2NrTWVkaWFTb3VyY2VQcml2YXRl
OjpjcmVhdGUoTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UqIHBhcmVudCkKK3sKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IE1vY2tNZWRpYVNvdXJjZVByaXZhdGUocGFyZW50KSk7Cit9CisKK01v
Y2tNZWRpYVNvdXJjZVByaXZhdGU6Ok1vY2tNZWRpYVNvdXJjZVByaXZhdGUoTW9ja01lZGlhUGxh
eWVyTWVkaWFTb3VyY2UqIHBhcmVudCkKKyAgICA6IG1fcGxheWVyKHBhcmVudCkKKyAgICAsIG1f
ZHVyYXRpb24oMCkKKyAgICAsIG1faXNFbmRlZChmYWxzZSkKK3sKK30KKworTW9ja01lZGlhU291
cmNlUHJpdmF0ZTo6fk1vY2tNZWRpYVNvdXJjZVByaXZhdGUoKQoreworfQorCitNZWRpYVNvdXJj
ZVByaXZhdGU6OkFkZFN0YXR1cyBNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjphZGRTb3VyY2VCdWZm
ZXIoY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlLCBSZWZQdHI8U291cmNlQnVmZmVyUHJp
dmF0ZT4mIG91dFByaXZhdGUpCit7CisgICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBw
YXJhbWV0ZXJzOworICAgIHBhcmFtZXRlcnMuaXNNZWRpYVNvdXJjZSA9IHRydWU7CisgICAgcGFy
YW1ldGVycy50eXBlID0gY29udGVudFR5cGUudHlwZSgpOworICAgIHBhcmFtZXRlcnMuY29kZWNz
ID0gY29udGVudFR5cGUucGFyYW1ldGVyKEFTQ0lJTGl0ZXJhbCgiY29kZWNzIikpOworICAgIGlm
IChNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpID09
IE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZCkKKyAgICAgICAgcmV0dXJuIE5vdFN1cHBvcnRl
ZDsKKworICAgIG1fc291cmNlQnVmZmVycy5hcHBlbmQoTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6
OmNyZWF0ZSh0aGlzKSk7CisgICAgb3V0UHJpdmF0ZSA9IG1fc291cmNlQnVmZmVycy5sYXN0KCk7
CisKKyAgICByZXR1cm4gT2s7Cit9CisKK3ZvaWQgTW9ja01lZGlhU291cmNlUHJpdmF0ZTo6cmVt
b3ZlU291cmNlQnVmZmVyKFNvdXJjZUJ1ZmZlclByaXZhdGUqIGJ1ZmZlcikKK3sKKyAgICBBU1NF
UlQobV9zb3VyY2VCdWZmZXJzLmNvbnRhaW5zKGJ1ZmZlcikpOworCisgICAgc2l6ZV90IHBvcyA9
IG1fYWN0aXZlU291cmNlQnVmZmVycy5maW5kKGJ1ZmZlcik7CisgICAgaWYgKHBvcyAhPSBub3RG
b3VuZCkKKyAgICAgICAgbV9hY3RpdmVTb3VyY2VCdWZmZXJzLnJlbW92ZShwb3MpOworCisgICAg
cG9zID0gbV9zb3VyY2VCdWZmZXJzLmZpbmQoYnVmZmVyKTsKKyAgICBtX3NvdXJjZUJ1ZmZlcnMu
cmVtb3ZlKHBvcyk7Cit9CisKK2RvdWJsZSBNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjpkdXJhdGlv
bigpCit7CisgICAgcmV0dXJuIG1fZHVyYXRpb247Cit9CisKK3ZvaWQgTW9ja01lZGlhU291cmNl
UHJpdmF0ZTo6c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQoreworICAgIGlmIChkdXJhdGlv
biA9PSBtX2R1cmF0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2R1cmF0aW9uID0gZHVy
YXRpb247CisgICAgbV9wbGF5ZXItPnVwZGF0ZUR1cmF0aW9uKGR1cmF0aW9uKTsKK30KKwordm9p
ZCBNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjptYXJrRW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1TdGF0
dXMgc3RhdHVzKQoreworICAgIFVOVVNFRF9QQVJBTShzdGF0dXMpOworICAgIG1faXNFbmRlZCA9
IHRydWU7Cit9CisKK3ZvaWQgTW9ja01lZGlhU291cmNlUHJpdmF0ZTo6dW5tYXJrRW5kT2ZTdHJl
YW0oKQoreworICAgIG1faXNFbmRlZCA9IGZhbHNlOworfQorCitNZWRpYVBsYXllcjo6UmVhZHlT
dGF0ZSBNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjpyZWFkeVN0YXRlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9wbGF5ZXItPnJlYWR5U3RhdGUoKTsKK30KKwordm9pZCBNb2NrTWVkaWFTb3VyY2VQ
cml2YXRlOjpzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUp
Cit7CisgICAgbV9wbGF5ZXItPnNldFJlYWR5U3RhdGUocmVhZHlTdGF0ZSk7Cit9CisKK3ZvaWQg
TW9ja01lZGlhU291cmNlUHJpdmF0ZTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZENoYW5nZUFjdGl2
ZVN0YXRlKE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKiBidWZmZXIsIGJvb2wgYWN0aXZlKQorewor
ICAgIGlmIChhY3RpdmUgJiYgIW1fYWN0aXZlU291cmNlQnVmZmVycy5jb250YWlucyhidWZmZXIp
KQorICAgICAgICBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMuYXBwZW5kKGJ1ZmZlcik7CisKKyAgICBp
ZiAoIWFjdGl2ZSkgeworICAgICAgICBzaXplX3QgcG9zaXRpb24gPSBtX2FjdGl2ZVNvdXJjZUJ1
ZmZlcnMuZmluZChidWZmZXIpOworICAgICAgICBpZiAocG9zaXRpb24gIT0gbm90Rm91bmQpCisg
ICAgICAgICAgICBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMucmVtb3ZlKHBvc2l0aW9uKTsKKyAgICB9
Cit9CisKK3N0YXRpYyBib29sIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlSGFzQXVkaW8oUGFzc1Jl
ZlB0cjxNb2NrU291cmNlQnVmZmVyUHJpdmF0ZT4gcHJwU291cmNlQnVmZmVyKQoreworICAgIHJl
dHVybiBwcnBTb3VyY2VCdWZmZXItPmhhc0F1ZGlvKCk7Cit9CisKK2Jvb2wgTW9ja01lZGlhU291
cmNlUHJpdmF0ZTo6aGFzQXVkaW8oKSBjb25zdAoreworICAgIHJldHVybiBzdGQ6OmFueV9vZiht
X2FjdGl2ZVNvdXJjZUJ1ZmZlcnMuYmVnaW4oKSwgbV9hY3RpdmVTb3VyY2VCdWZmZXJzLmVuZCgp
LCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZUhhc0F1ZGlvKTsKK30KKworc3RhdGljIGJvb2wgTW9j
a1NvdXJjZUJ1ZmZlclByaXZhdGVIYXNWaWRlbyhQYXNzUmVmUHRyPE1vY2tTb3VyY2VCdWZmZXJQ
cml2YXRlPiBwcnBTb3VyY2VCdWZmZXIpCit7CisgICAgcmV0dXJuIHBycFNvdXJjZUJ1ZmZlci0+
aGFzVmlkZW8oKTsKK30KKworYm9vbCBNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjpoYXNWaWRlbygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIHN0ZDo6YW55X29mKG1fYWN0aXZlU291cmNlQnVmZmVycy5i
ZWdpbigpLCBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMuZW5kKCksIE1vY2tTb3VyY2VCdWZmZXJQcml2
YXRlSGFzVmlkZW8pOworfQorCit9OworCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJj
ZVByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNjQwZGQ2ZTI5MTIxYmZkZWMxNzNiZWY5NzYwNWIwNzE4
ZjE3OGNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9t
ZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmgKQEAgLTAsMCArMSw4MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgTW9ja01lZGlhU291cmNlUHJpdmF0ZV9oCisjZGVmaW5lIE1vY2tNZWRp
YVNvdXJjZVByaXZhdGVfaAorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKworI2luY2x1ZGUg
Ik1lZGlhU291cmNlUHJpdmF0ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1v
Y2tNZWRpYVBsYXllck1lZGlhU291cmNlOworY2xhc3MgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU7
CitjbGFzcyBUaW1lUmFuZ2VzOworCitjbGFzcyBNb2NrTWVkaWFTb3VyY2VQcml2YXRlIEZJTkFM
IDogcHVibGljIE1lZGlhU291cmNlUHJpdmF0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0
cjxNb2NrTWVkaWFTb3VyY2VQcml2YXRlPiBjcmVhdGUoTW9ja01lZGlhUGxheWVyTWVkaWFTb3Vy
Y2UqKTsKKyAgICB2aXJ0dWFsIH5Nb2NrTWVkaWFTb3VyY2VQcml2YXRlKCk7CisKKyAgICBjb25z
dCBWZWN0b3I8TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUqPiYgYWN0aXZlU291cmNlQnVmZmVycygp
IGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlU291cmNlQnVmZmVyczsgfQorCisgICAgYm9vbCBoYXNB
dWRpbygpIGNvbnN0OworICAgIGJvb2wgaGFzVmlkZW8oKSBjb25zdDsKKworICAgIE1vY2tNZWRp
YVBsYXllck1lZGlhU291cmNlKiBwbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXllcjsgfQor
Citwcml2YXRlOgorICAgIE1vY2tNZWRpYVNvdXJjZVByaXZhdGUoTW9ja01lZGlhUGxheWVyTWVk
aWFTb3VyY2UqKTsKKworICAgIC8vIE1lZGlhU291cmNlUHJpdmF0ZSBPdmVycmlkZXMKKyAgICB2
aXJ0dWFsIEFkZFN0YXR1cyBhZGRTb3VyY2VCdWZmZXIoY29uc3QgQ29udGVudFR5cGUmLCBSZWZQ
dHI8U291cmNlQnVmZmVyUHJpdmF0ZT4mKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGRvdWJsZSBk
dXJhdGlvbigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXREdXJhdGlvbihkb3VibGUp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBtYXJrRW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1T
dGF0dXMpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1bm1hcmtFbmRPZlN0cmVhbSgpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRSZWFkeVN0YXRlKE1lZGlhUGxh
eWVyOjpSZWFkeVN0YXRlKSBPVkVSUklERTsKKworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0
ZURpZENoYW5nZUFjdGl2ZVN0YXRlKE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKiwgYm9vbCBhY3Rp
dmUpOworICAgIHZvaWQgcmVtb3ZlU291cmNlQnVmZmVyKFNvdXJjZUJ1ZmZlclByaXZhdGUqKTsK
KworICAgIGZyaWVuZCBjbGFzcyBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTsKKworICAgIE1vY2tN
ZWRpYVBsYXllck1lZGlhU291cmNlKiBtX3BsYXllcjsKKyAgICBkb3VibGUgbV9kdXJhdGlvbjsK
KyAgICBWZWN0b3I8UmVmUHRyPE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlPj4gbV9zb3VyY2VCdWZm
ZXJzOworICAgIFZlY3RvcjxNb2NrU291cmNlQnVmZmVyUHJpdmF0ZSo+IG1fYWN0aXZlU291cmNl
QnVmZmVyczsKKyAgICBib29sIG1faXNFbmRlZDsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TT1VSQ0UpCisKKyNlbmRpZiAvLyBNb2NrTWVkaWFTb3VyY2VQcml2YXRlX2gKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2Nr
U291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYzM4NmRj
ODM0YTc3ZjY2N2JmOTE0NjFjOGE5YzI5Njk3YzdkZWMwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJp
dmF0ZS5jcHAKQEAgLTAsMCArMSwyMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaCIKKworI2lmIEVOQUJMRShNRURJ
QV9TT1VSQ0UpCisKKyNpbmNsdWRlICJNZWRpYURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiTWVk
aWFQbGF5ZXIuaCIKKyNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgorI2luY2x1ZGUgIk1vY2tCb3gu
aCIKKyNpbmNsdWRlICJNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5oIgorI2luY2x1ZGUgIk1v
Y2tNZWRpYVNvdXJjZVByaXZhdGUuaCIKKyNpbmNsdWRlICJNb2NrVHJhY2tzLmgiCisjaW5jbHVk
ZSAiU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oIgorI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRl
IDxydW50aW1lL0FycmF5QnVmZmVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
TW9ja01lZGlhU2FtcGxlIEZJTkFMIDogcHVibGljIE1lZGlhU2FtcGxlIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmUHRyPE1vY2tNZWRpYVNhbXBsZT4gY3JlYXRlKGNvbnN0IE1vY2tTYW1wbGVC
b3gmIGJveCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tNZWRpYVNhbXBsZShib3gpKTsgfQor
ICAgIHZpcnR1YWwgfk1vY2tNZWRpYVNhbXBsZSgpIHsgfQorCisgICAgdmlydHVhbCBNZWRpYVRp
bWUgcHJlc2VudGF0aW9uVGltZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fYm94LnByZXNl
bnRhdGlvblRpbWVzdGFtcCgpOyB9CisgICAgdmlydHVhbCBNZWRpYVRpbWUgZGVjb2RlVGltZSgp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fYm94LmRlY29kZVRpbWVzdGFtcCgpOyB9CisgICAg
dmlydHVhbCBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2Jv
eC5kdXJhdGlvbigpOyB9CisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgdHJhY2tJRCgpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIG1faWQ7IH0KKworICAgIHZpcnR1YWwgU2FtcGxlRmxhZ3MgZmxh
Z3MoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBOb25lOyB9CisgICAgdmlydHVhbCBQbGF0Zm9y
bVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIE9WRVJSSURFOworCitwcm90ZWN0ZWQ6CisgICAgTW9j
a01lZGlhU2FtcGxlKGNvbnN0IE1vY2tTYW1wbGVCb3gmIGJveCkKKyAgICAgICAgOiBtX2JveChi
b3gpCisgICAgICAgICwgbV9pZChTdHJpbmc6OmZvcm1hdCgiJWQiLCBib3gudHJhY2tJRCgpKSkK
KyAgICB7CisgICAgfQorCisgICAgTW9ja1NhbXBsZUJveCBtX2JveDsKKyAgICBBdG9taWNTdHJp
bmcgbV9pZDsKK307CisKK1BsYXRmb3JtU2FtcGxlIE1vY2tNZWRpYVNhbXBsZTo6cGxhdGZvcm1T
YW1wbGUoKQoreworICAgIFBsYXRmb3JtU2FtcGxlIHNhbXBsZSA9IHsgUGxhdGZvcm1TYW1wbGU6
Ok1vY2tTYW1wbGVCb3hUeXBlLCB7ICZtX2JveCB9IH07CisgICAgcmV0dXJuIHNhbXBsZTsKK30K
KworY2xhc3MgTW9ja01lZGlhRGVzY3JpcHRpb24gRklOQUwgOiBwdWJsaWMgTWVkaWFEZXNjcmlw
dGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxNb2NrTWVkaWFEZXNjcmlwdGlvbj4g
Y3JlYXRlKGNvbnN0IE1vY2tUcmFja0JveCYgYm94KSB7IHJldHVybiBhZG9wdFJlZihuZXcgTW9j
a01lZGlhRGVzY3JpcHRpb24oYm94KSk7IH0KKyAgICB2aXJ0dWFsIH5Nb2NrTWVkaWFEZXNjcmlw
dGlvbigpIHsgfQorCisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgY29kZWMoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiBtX2JveC5jb2RlYygpOyB9CisgICAgdmlydHVhbCBib29sIGlzVmlkZW8o
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2JveC5raW5kKCkgPT0gTW9ja1RyYWNrQm94OjpW
aWRlbzsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlvKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gbV9ib3gua2luZCgpID09IE1vY2tUcmFja0JveDo6QXVkaW87IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNUZXh0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9ib3gua2luZCgpID09IE1vY2tU
cmFja0JveDo6VGV4dDsgfQorCitwcm90ZWN0ZWQ6CisgICAgTW9ja01lZGlhRGVzY3JpcHRpb24o
Y29uc3QgTW9ja1RyYWNrQm94JiBib3gpIDogbV9ib3goYm94KSB7IH0KKyAgICBNb2NrVHJhY2tC
b3ggbV9ib3g7Cit9OworCitSZWZQdHI8TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU+IE1vY2tTb3Vy
Y2VCdWZmZXJQcml2YXRlOjpjcmVhdGUoTW9ja01lZGlhU291cmNlUHJpdmF0ZSogcGFyZW50KQor
eworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUocGFyZW50
KSk7Cit9CisKK01vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpNb2NrU291cmNlQnVmZmVyUHJpdmF0
ZShNb2NrTWVkaWFTb3VyY2VQcml2YXRlKiBwYXJlbnQpCisgICAgOiBtX3BhcmVudChwYXJlbnQp
CisgICAgLCBtX2NsaWVudCgwKQoreworfQorCitNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6fk1v
Y2tTb3VyY2VCdWZmZXJQcml2YXRlKCkKK3sKK30KKwordm9pZCBNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZTo6c2V0Q2xpZW50KFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQqIGNsaWVudCkKK3sKKyAg
ICBtX2NsaWVudCA9IGNsaWVudDsKK30KKwordm9pZCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6
YXBwZW5kKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAg
ICBtX2lucHV0QnVmZmVyLmFwcGVuZChkYXRhLCBsZW5ndGgpOworCisgICAgd2hpbGUgKG1faW5w
dXRCdWZmZXIuc2l6ZSgpKSB7CisgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0g
QXJyYXlCdWZmZXI6OmNyZWF0ZShtX2lucHV0QnVmZmVyLmRhdGEoKSwgbV9pbnB1dEJ1ZmZlci5z
aXplKCkpOworICAgICAgICBzaXplX3QgYm94TGVuZ3RoID0gTW9ja0JveDo6cGVla0xlbmd0aChi
dWZmZXIuZ2V0KCkpOworICAgICAgICBpZiAoYm94TGVuZ3RoID4gYnVmZmVyLT5ieXRlTGVuZ3Ro
KCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBTdHJpbmcgdHlwZSA9IE1vY2tCb3g6
OnBlZWtUeXBlKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIGlmICh0eXBlID09IE1vY2tJbml0aWFs
aXphdGlvbkJveDo6dHlwZSgpKSB7CisgICAgICAgICAgICBNb2NrSW5pdGlhbGl6YXRpb25Cb3gg
aW5pdEJveCA9IE1vY2tJbml0aWFsaXphdGlvbkJveChidWZmZXIuZ2V0KCkpOworICAgICAgICAg
ICAgZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChpbml0Qm94KTsKKyAgICAgICAgfQor
CisgICAgICAgIGlmICh0eXBlID09IE1vY2tTYW1wbGVCb3g6OnR5cGUoKSkgeworICAgICAgICAg
ICAgTW9ja1NhbXBsZUJveCBzYW1wbGVCb3ggPSBNb2NrU2FtcGxlQm94KGJ1ZmZlci5nZXQoKSk7
CisgICAgICAgICAgICBkaWRSZWNlaXZlU2FtcGxlKHNhbXBsZUJveCk7CisgICAgICAgIH0KKwor
ICAgICAgICBtX2lucHV0QnVmZmVyLnJlbW92ZSgwLCBib3hMZW5ndGgpOworICAgIH0KK30KKwor
dm9pZCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2Vn
bWVudChjb25zdCBNb2NrSW5pdGlhbGl6YXRpb25Cb3gmIGluaXRCb3gpCit7CisgICAgaWYgKCFt
X2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVu
dDo6SW5pdGlhbGl6YXRpb25TZWdtZW50IHNlZ21lbnQ7CisgICAgc2VnbWVudC5kdXJhdGlvbiA9
IGluaXRCb3guZHVyYXRpb24oKTsKKworICAgIGZvciAoYXV0byBpdCA9IGluaXRCb3gudHJhY2tz
KCkuYmVnaW4oKTsgaXQgIT0gaW5pdEJveC50cmFja3MoKS5lbmQoKTsgKytpdCkgeworICAgICAg
ICBjb25zdCBNb2NrVHJhY2tCb3gmIHRyYWNrQm94ID0gKml0OworICAgICAgICBpZiAodHJhY2tC
b3gua2luZCgpID09IE1vY2tUcmFja0JveDo6VmlkZW8pIHsKKyAgICAgICAgICAgIFNvdXJjZUJ1
ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDo6VmlkZW9UcmFja0luZm9y
bWF0aW9uIGluZm87CisgICAgICAgICAgICBpbmZvLnRyYWNrID0gTW9ja1ZpZGVvVHJhY2tQcml2
YXRlOjpjcmVhdGUodHJhY2tCb3gpOworICAgICAgICAgICAgaW5mby5kZXNjcmlwdGlvbiA9IE1v
Y2tNZWRpYURlc2NyaXB0aW9uOjpjcmVhdGUodHJhY2tCb3gpOworICAgICAgICAgICAgc2VnbWVu
dC52aWRlb1RyYWNrcy5hcHBlbmQoaW5mbyk7CisgICAgICAgIH0gZWxzZSBpZiAodHJhY2tCb3gu
a2luZCgpID09IE1vY2tUcmFja0JveDo6QXVkaW8pIHsKKyAgICAgICAgICAgIFNvdXJjZUJ1ZmZl
clByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDo6QXVkaW9UcmFja0luZm9ybWF0
aW9uIGluZm87CisgICAgICAgICAgICBpbmZvLnRyYWNrID0gTW9ja0F1ZGlvVHJhY2tQcml2YXRl
OjpjcmVhdGUodHJhY2tCb3gpOworICAgICAgICAgICAgaW5mby5kZXNjcmlwdGlvbiA9IE1vY2tN
ZWRpYURlc2NyaXB0aW9uOjpjcmVhdGUodHJhY2tCb3gpOworICAgICAgICAgICAgc2VnbWVudC5h
dWRpb1RyYWNrcy5hcHBlbmQoaW5mbyk7CisgICAgICAgIH0gZWxzZSBpZiAodHJhY2tCb3gua2lu
ZCgpID09IE1vY2tUcmFja0JveDo6VGV4dCkgeworICAgICAgICAgICAgU291cmNlQnVmZmVyUHJp
dmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OjpUZXh0VHJhY2tJbmZvcm1hdGlvbiBp
bmZvOworICAgICAgICAgICAgaW5mby50cmFjayA9IE1vY2tUZXh0VHJhY2tQcml2YXRlOjpjcmVh
dGUodHJhY2tCb3gpOworICAgICAgICAgICAgaW5mby5kZXNjcmlwdGlvbiA9IE1vY2tNZWRpYURl
c2NyaXB0aW9uOjpjcmVhdGUodHJhY2tCb3gpOworICAgICAgICAgICAgc2VnbWVudC50ZXh0VHJh
Y2tzLmFwcGVuZChpbmZvKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1fY2xpZW50LT5zb3Vy
Y2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudCh0aGlzLCBzZWdt
ZW50KTsKK30KKworCit2b2lkIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlU2Ft
cGxlKGNvbnN0IE1vY2tTYW1wbGVCb3gmIHNhbXBsZUJveCkKK3sKKyAgICBpZiAoIW1fY2xpZW50
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZURp
ZFJlY2VpdmVTYW1wbGUodGhpcywgTW9ja01lZGlhU2FtcGxlOjpjcmVhdGUoc2FtcGxlQm94KSk7
Cit9CisKK3ZvaWQgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmFib3J0KCkKK3sKK30KKwordm9p
ZCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6cmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpCit7Cisg
ICAgbV9wYXJlbnQtPnJlbW92ZVNvdXJjZUJ1ZmZlcih0aGlzKTsKK30KKworTWVkaWFQbGF5ZXI6
OlJlYWR5U3RhdGUgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OnJlYWR5U3RhdGUoKSBjb25zdAor
eworICAgIHJldHVybiBtX3BhcmVudC0+cGxheWVyKCktPnJlYWR5U3RhdGUoKTsKK30KKwordm9p
ZCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVh
ZHlTdGF0ZSByZWFkeVN0YXRlKQoreworICAgIG1fcGFyZW50LT5wbGF5ZXIoKS0+c2V0UmVhZHlT
dGF0ZShyZWFkeVN0YXRlKTsKK30KKworYm9vbCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6aGFz
VmlkZW8oKSBjb25zdAoreworICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHJldHVybiBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUhhc1ZpZGVvKHRo
aXMpOworfQorCitib29sIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpoYXNBdWRpbygpIGNvbnN0
Cit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlSGFzQXVkaW8odGhpcyk7Cit9CisKK30K
KworI2VuZGlmCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVk
aWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yNTZiYmY5Yzg0YWMxMzFhZGE4NDY2M2RkMDYzZjcwYTJkYzMwZDMwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNl
QnVmZmVyUHJpdmF0ZS5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1vY2tT
b3VyY2VCdWZmZXJQcml2YXRlX2gKKyNkZWZpbmUgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGVfaAor
CisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKworI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclByaXZh
dGUuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBB
dWRpb1RyYWNrUHJpdmF0ZTsKK2NsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGU7CitjbGFzcyBN
b2NrSW5pdGlhbGl6YXRpb25Cb3g7CitjbGFzcyBNb2NrTWVkaWFTb3VyY2VQcml2YXRlOworY2xh
c3MgTW9ja1NhbXBsZUJveDsKK2NsYXNzIFRpbWVSYW5nZXM7CitjbGFzcyBWaWRlb1RyYWNrUHJp
dmF0ZTsKKworY2xhc3MgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUgOiBwdWJsaWMgU291cmNlQnVm
ZmVyUHJpdmF0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxNb2NrU291cmNlQnVmZmVy
UHJpdmF0ZT4gY3JlYXRlKE1vY2tNZWRpYVNvdXJjZVByaXZhdGUqKTsKKyAgICB2aXJ0dWFsIH5N
b2NrU291cmNlQnVmZmVyUHJpdmF0ZSgpOworCisgICAgYm9vbCBoYXNWaWRlbygpIGNvbnN0Owor
ICAgIGJvb2wgaGFzQXVkaW8oKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBNb2Nr
U291cmNlQnVmZmVyUHJpdmF0ZShNb2NrTWVkaWFTb3VyY2VQcml2YXRlKik7CisKKyAgICAvLyBT
b3VyY2VCdWZmZXJQcml2YXRlIG92ZXJyaWRlcworICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQo
U291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBh
cHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgTWVkaWFQbGF5
ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlKSBPVkVSUklERTsKKwor
ICAgIHZvaWQgZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBNb2NrSW5pdGlh
bGl6YXRpb25Cb3gmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTYW1wbGUoY29uc3QgTW9ja1NhbXBs
ZUJveCYpOworCisgICAgTW9ja01lZGlhU291cmNlUHJpdmF0ZSogbV9wYXJlbnQ7CisgICAgU291
cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCogbV9jbGllbnQ7CisKKyAgICBWZWN0b3I8Y2hhcj4gbV9p
bnB1dEJ1ZmZlcjsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TT1VSQ0UpICYm
IFVTRShBVkZPVU5EQVRJT04pCisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tUcmFja3MuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrVHJhY2tzLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
Zjg4NDBkODQwNTRkZTI4N2FkOTAzZmY2NDkzMTVlOGFhMzM2YmY1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrVHJhY2tzLmNw
cApAQCAtMCwwICsxLDI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIk1vY2tUcmFja3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svbWVkaWFzb3VyY2UvTW9ja1RyYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9tZWRpYXNvdXJjZS9Nb2NrVHJhY2tzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Y4ZWRlZDc0NTM3Y2I1OGZi
NDIyMjc1N2UyMWRhMzRhODkxMDI2YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1RyYWNrcy5oCkBAIC0wLDAgKzEsOTUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaWZuZGVmIE1vY2tUcmFja3NfaAorI2RlZmluZSBNb2NrVHJhY2tzX2gKKwor
I2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZS5o
IgorI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGUuaCIKKyNpbmNsdWRlICJNb2NrQm94
LmgiCisjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBNb2NrQXVkaW9UcmFja1ByaXZhdGUgOiBwdWJsaWMgQXVkaW9UcmFja1ByaXZh
dGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8TW9ja0F1ZGlvVHJhY2tQcml2YXRlPiBj
cmVhdGUoY29uc3QgTW9ja1RyYWNrQm94JiBib3gpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBNb2Nr
QXVkaW9UcmFja1ByaXZhdGUoYm94KSk7IH0KKyAgICB2aXJ0dWFsIH5Nb2NrQXVkaW9UcmFja1By
aXZhdGUoKSB7IH0KKworICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGlkKCkgY29uc3QgeyByZXR1
cm4gbV9pZDsgfQorCitwcm90ZWN0ZWQ6CisgICAgTW9ja0F1ZGlvVHJhY2tQcml2YXRlKGNvbnN0
IE1vY2tUcmFja0JveCYgYm94KQorICAgICAgICA6IG1fYm94KGJveCkKKyAgICAgICAgLCBtX2lk
KFN0cmluZzo6Zm9ybWF0KCIlZCIsIGJveC50cmFja0lEKCkpKQorICAgIHsKKyAgICB9CisgICAg
TW9ja1RyYWNrQm94IG1fYm94OworICAgIEF0b21pY1N0cmluZyBtX2lkOworfTsKKworY2xhc3Mg
TW9ja1RleHRUcmFja1ByaXZhdGUgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSB7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxNb2NrVGV4dFRyYWNrUHJpdmF0ZT4gY3JlYXRlKGNv
bnN0IE1vY2tUcmFja0JveCYgYm94KSB7IHJldHVybiBhZG9wdFJlZihuZXcgTW9ja1RleHRUcmFj
a1ByaXZhdGUoYm94KSk7IH0KKyAgICB2aXJ0dWFsIH5Nb2NrVGV4dFRyYWNrUHJpdmF0ZSgpIHsg
fQorCisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9
CisKK3Byb3RlY3RlZDoKKyAgICBNb2NrVGV4dFRyYWNrUHJpdmF0ZShjb25zdCBNb2NrVHJhY2tC
b3gmIGJveCkKKyAgICAgICAgOiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlKEluYmFuZFRleHRUcmFj
a1ByaXZhdGU6OkdlbmVyaWMpCisgICAgICAgICwgbV9ib3goYm94KQorICAgICAgICAsIG1faWQo
U3RyaW5nOjpmb3JtYXQoIiVkIiwgYm94LnRyYWNrSUQoKSkpCisgICAgeworICAgIH0KKyAgICBN
b2NrVHJhY2tCb3ggbV9ib3g7CisgICAgQXRvbWljU3RyaW5nIG1faWQ7Cit9OworCisKK2NsYXNz
IE1vY2tWaWRlb1RyYWNrUHJpdmF0ZSA6IHB1YmxpYyBWaWRlb1RyYWNrUHJpdmF0ZSB7CitwdWJs
aWM6CisgICAgc3RhdGljIFJlZlB0cjxNb2NrVmlkZW9UcmFja1ByaXZhdGU+IGNyZWF0ZShjb25z
dCBNb2NrVHJhY2tCb3gmIGJveCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tWaWRlb1RyYWNr
UHJpdmF0ZShib3gpKTsgfQorICAgIHZpcnR1YWwgfk1vY2tWaWRlb1RyYWNrUHJpdmF0ZSgpIHsg
fQorCisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9
CisKK3Byb3RlY3RlZDoKKyAgICBNb2NrVmlkZW9UcmFja1ByaXZhdGUoY29uc3QgTW9ja1RyYWNr
Qm94JiBib3gpCisgICAgICAgIDogbV9ib3goYm94KQorICAgICAgICAsIG1faWQoU3RyaW5nOjpm
b3JtYXQoIiVkIiwgYm94LnRyYWNrSUQoKSkpCisgICAgeworICAgIH0KKyAgICBNb2NrVHJhY2tC
b3ggbV9ib3g7CisgICAgQXRvbWljU3RyaW5nIG1faWQ7Cit9OworCit9CisKKyNlbmRpZgorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBlZmJiODFkMTc0M2M0
OWYzZmM3M2Q1YzZkMmIzNDczMjQ1ZGVmM2ZiLi5jNWYyODg5MzE3NGZkNzhlM2I2NzY1MTdlY2Y3
ZTZlMzc1Y2ViNzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC03MCw4
ICs3MCwxMCBAQAogI2luY2x1ZGUgIkxhbmd1YWdlLmgiCiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgi
CiAjaW5jbHVkZSAiTWFsbG9jU3RhdGlzdGljcy5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgi
CiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJNZW1vcnlJbmZvLmgiCisjaW5j
bHVkZSAiTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUHJpbnRDb250ZXh0LmgiCiAjaW5jbHVkZSAiUHNldWRvRWxlbWVudC5oIgpAQCAt
MjE2Nyw0ICsyMTY5LDExIEBAIGJvb2wgSW50ZXJuYWxzOjppc1BsdWdpblVuYXZhaWxhYmlsaXR5
SW5kaWNhdG9yT2JzY3VyZWQoRWxlbWVudCogZWxlbWVudCwgRXhjZXB0CiAgICAgcmV0dXJuIGVt
YmVkLT5pc1JlcGxhY2VtZW50T2JzY3VyZWQoKTsKIH0KIAorI2lmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCit2b2lkIEludGVybmFsczo6aW5pdGlhbGl6ZU1vY2tNZWRpYVNvdXJjZSgpCit7CisgICAg
TWVkaWFQbGF5ZXJGYWN0b3J5U3VwcG9ydDo6Y2FsbFJlZ2lzdGVyTWVkaWFFbmdpbmUoTW9ja01l
ZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOworfQorI2VuZGlmCisK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDQ5NWRjYjU0ODQ5ZGNjNzk3NzVl
N2M3MjE1YWFhNjNjOTIzMTVkZTAuLmI4MWY1ZjU4YmM1ZWE3MzE0MTE3NTZmZmU3ODZmNDNlMmNj
YWQ0M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMzI1LDYgKzMyNSwxMCBA
QCBwdWJsaWM6CiAKICAgICBib29sIGlzUGx1Z2luVW5hdmFpbGFiaWxpdHlJbmRpY2F0b3JPYnNj
dXJlZChFbGVtZW50KiwgRXhjZXB0aW9uQ29kZSYpOwogCisjaWYgRU5BQkxFKE1FRElBX1NPVVJD
RSkKKyAgICB2b2lkIGluaXRpYWxpemVNb2NrTWVkaWFTb3VyY2UoKTsKKyNlbmRpZgorCiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IEludGVybmFscyhEb2N1bWVudCopOwogICAgIERvY3VtZW50KiBj
b250ZXh0RG9jdW1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApp
bmRleCBhN2VhZTU5NzQwMGM3OGUyYTk2ZDUwMjkzMGFkNjZiNWNlYjM1MTkxLi5mMTg0MWQ2OWJj
ZjFkOGNlMmU3M2Q5MGYwOWU1MDQ2Y2RjZGIyYTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCkBAIC0yNzMsNCArMjczLDYgQEAKICAgICBbUmFpc2VzRXhjZXB0aW9uXSBib29s
ZWFuIGlzUGx1Z2luVW5hdmFpbGFiaWxpdHlJbmRpY2F0b3JPYnNjdXJlZChFbGVtZW50IGVsZW1l
bnQpOwogCiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gQ2xpZW50UmVjdCBzZWxlY3Rpb25Cb3VuZHMo
KTsKKyAgICAKKyAgICBbQ29uZGl0aW9uYWw9TUVESUFfU09VUkNFXSB2b2lkIGluaXRpYWxpemVN
b2NrTWVkaWFTb3VyY2UoKTsKIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTkwMjM0ZDAyY2I1Yjg1ODEwOGVmZDY2MDVh
OTQ3YzAyNTRiZmE1Zi4uYzE0N2E3YjAwNzc5ODdmMGI3MzYwOTE2YWRiOWQ1NTlmYzYwOTQ4ZiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEzLTEwLTI0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVA
YXBwbGUuY29tPgorCisgICAgICAgIFtNU0VdIEFkZCBtb2NrIE1lZGlhU291cmNlIGNsYXNzZXMg
Zm9yIHRlc3RpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjMzMjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtYWRkc291cmNlYnVmZmVyLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNv
dXJjZS1hZGRzb3VyY2VidWZmZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEt
c291cmNlL21lZGlhLXNvdXJjZS1hcHBlbmQtYnVmZmVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1hcHBlbmQtYnVmZmVyLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtY2Fu
cGxheXRocm91Z2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1z
b3VyY2UvbWVkaWEtc291cmNlLWNhbnBsYXl0aHJvdWdoLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtY2xvc2VkLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1jbG9zZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1wbGF5
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEtc291cmNlL21lZGlh
LXNvdXJjZS1wbGF5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLXNvdXJjZS9t
b2NrLW1lZGlhLXNvdXJjZS5qczogQWRkZWQuCisgICAgICAgICogbWVkaWEvdmlkZW8tdGVzdC5q
czoKKwogMjAxMy0xMS0wNyAgRGVuaXMgTm9taXlhbWEgIDxkLm5vbWl5YW1hQHNhbXN1bmcuY29t
PgogCiAgICAgICAgIFtHVEtdIEdseXBocyBpbiB2ZXJ0aWNhbCB0ZXh0IHRlc3RzIGFyZSByb3Rh
dGVkIDkwIGRlZ3JlZXMgY2xvY2t3aXNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9t
ZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWFkZHNvdXJjZWJ1ZmZlci1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWFkZHNvdXJjZWJ1ZmZl
ci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmIzOTY0ZTAwNDRiYzNlMzk2MTllNjljMjUwNjFm
NTlmNThiNjE5YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNv
dXJjZS9tZWRpYS1zb3VyY2UtYWRkc291cmNlYnVmZmVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDEyIEBACisKK1RFU1Qoc291cmNlLmFkZFNvdXJjZUJ1ZmZlcigiaW52YWxpZCIpKSBUSFJPV1Mo
RE9NRXhjZXB0aW9uLk5PVF9TVVBQT1JURURfRVJSKSBPSworVEVTVChzb3VyY2UuYWRkU291cmNl
QnVmZmVyKCIiKSkgVEhST1dTKERPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIpIE9LCitF
WFBFQ1RFRCAoTWVkaWFTb3VyY2UuaXNUeXBlU3VwcG9ydGVkKCJpbnZhbGlkIikgPT0gJ2ZhbHNl
JykgT0sKK0VYUEVDVEVEIChNZWRpYVNvdXJjZS5pc1R5cGVTdXBwb3J0ZWQoInZpZGVvL21vY2s7
IGNvZGVjcz1tb2NrIikgPT0gJ3RydWUnKSBPSworUlVOKHZpZGVvLnNyYyA9IFVSTC5jcmVhdGVP
YmplY3RVUkwoc291cmNlKSkKK0VWRU5UKHNvdXJjZW9wZW4pCitSVU4oc291cmNlQnVmZmVyID0g
c291cmNlLmFkZFNvdXJjZUJ1ZmZlcigidmlkZW8vbW9jazsgY29kZWNzPW1vY2siKSkKK0VYUEVD
VEVEIChzb3VyY2Uuc291cmNlQnVmZmVyc1swXSA9PSAnW29iamVjdCBTb3VyY2VCdWZmZXJdJykg
T0sKK0VYUEVDVEVEIChzb3VyY2UuYWN0aXZlU291cmNlQnVmZmVyc1swXSA9PSAnW29iamVjdCBT
b3VyY2VCdWZmZXJdJykgT0sKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtYWRkc291cmNlYnVmZmVyLmh0bWwgYi9M
YXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWFkZHNvdXJjZWJ1ZmZl
ci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjM5NmM1M2MxOTc2YWUyOTJmNzNmYzdmNjNjYzRhNjVmYjRiYzkw
ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVk
aWEtc291cmNlLWFkZHNvdXJjZWJ1ZmZlci5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+bW9jay1tZWRpYS1zb3VyY2U8L3Rp
dGxlPgorICAgIDxzY3JpcHQgc3JjPSJtb2NrLW1lZGlhLXNvdXJjZS5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+
CisgICAgdmFyIHNvdXJjZTsKKyAgICB2YXIgc291cmNlQnVmZmVyOworCisgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpCisgICAgICAgIGludGVybmFscy5pbml0aWFsaXplTW9ja01lZGlhU291cmNl
KCk7CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBmaW5kTWVkaWFFbGVtZW50
KCk7CisKKyAgICAgICAgc291cmNlID0gbmV3IE1lZGlhU291cmNlKCk7CisgICAgICAgIHRlc3RE
T01FeGNlcHRpb24oJ3NvdXJjZS5hZGRTb3VyY2VCdWZmZXIoImludmFsaWQiKScsICdET01FeGNl
cHRpb24uTk9UX1NVUFBPUlRFRF9FUlInKTsKKyAgICAgICAgdGVzdERPTUV4Y2VwdGlvbignc291
cmNlLmFkZFNvdXJjZUJ1ZmZlcigiIiknLCAnRE9NRXhjZXB0aW9uLklOVkFMSURfQUNDRVNTX0VS
UicpOworICAgICAgICB0ZXN0RXhwZWN0ZWQoJ01lZGlhU291cmNlLmlzVHlwZVN1cHBvcnRlZCgi
aW52YWxpZCIpJywgZmFsc2UpOworICAgICAgICB0ZXN0RXhwZWN0ZWQoJ01lZGlhU291cmNlLmlz
VHlwZVN1cHBvcnRlZCgidmlkZW8vbW9jazsgY29kZWNzPW1vY2siKScsIHRydWUpOworCisgICAg
ICAgIHdhaXRGb3JFdmVudCgnc291cmNlb3BlbicsIHNvdXJjZU9wZW4sIGZhbHNlLCBmYWxzZSwg
c291cmNlKTsKKyAgICAgICAgcnVuKCd2aWRlby5zcmMgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKHNv
dXJjZSknKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzb3VyY2VPcGVuKCkgeworICAgICAgICBy
dW4oJ3NvdXJjZUJ1ZmZlciA9IHNvdXJjZS5hZGRTb3VyY2VCdWZmZXIoInZpZGVvL21vY2s7IGNv
ZGVjcz1tb2NrIiknKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCdzb3VyY2Uuc291cmNlQnVmZmVy
c1swXScsIHNvdXJjZUJ1ZmZlcik7CisgICAgICAgIHRlc3RFeHBlY3RlZCgnc291cmNlLmFjdGl2
ZVNvdXJjZUJ1ZmZlcnNbMF0nLCBzb3VyY2VCdWZmZXIpOworICAgICAgICBlbmRUZXN0KCk7Cisg
ICAgfQorICAgIAorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgorICAgIDx2aWRlbz48L3ZpZGVvPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJj
ZS9tZWRpYS1zb3VyY2UtYXBwZW5kLWJ1ZmZlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9t
ZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWFwcGVuZC1idWZmZXItZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA5YzY5OGY1MWY0ZDZhMjAwZDBjYzZiNDdjMTMzMjNkOTU1NDA0YWYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291
cmNlLWFwcGVuZC1idWZmZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKKworUlVOKHZp
ZGVvLnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoc291cmNlKSkKK0VWRU5UKHNvdXJjZW9wZW4p
CitSVU4oc291cmNlQnVmZmVyID0gc291cmNlLmFkZFNvdXJjZUJ1ZmZlcigidmlkZW8vbW9jazsg
Y29kZWNzPW1vY2siKSkKK1JVTihzb3VyY2VCdWZmZXIuYXBwZW5kQnVmZmVyKGluaXRTZWdtZW50
KSkKK0VYUEVDVEVEIChzb3VyY2VCdWZmZXIudXBkYXRpbmcgPT0gJ3RydWUnKSBPSworRVZFTlQo
dXBkYXRlc3RhcnQpCitFVkVOVCh1cGRhdGUpCitFVkVOVCh1cGRhdGVlbmQpCitFWFBFQ1RFRCAo
c291cmNlQnVmZmVyLnVwZGF0aW5nID09ICdmYWxzZScpIE9LCitFTkQgT0YgVEVTVAorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWFwcGVu
ZC1idWZmZXIuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3Vy
Y2UtYXBwZW5kLWJ1ZmZlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlYTJmZWNjNzM3Yjk4NDljMDQ1OWJl
NGYxZjBhMWQ4MTVjMmU2MjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9t
ZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWFwcGVuZC1idWZmZXIuaHRtbApAQCAtMCwwICsxLDQ0
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPm1vY2stbWVk
aWEtc291cmNlPC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0ibW9jay1tZWRpYS1zb3VyY2UuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0LmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0PgorICAgIHZhciBzb3VyY2U7CisgICAgdmFyIHNvdXJjZUJ1ZmZlcjsKKyAg
ICB2YXIgaW5pdFNlZ21lbnQ7CisKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAg
aW50ZXJuYWxzLmluaXRpYWxpemVNb2NrTWVkaWFTb3VyY2UoKTsKKworICAgIGZ1bmN0aW9uIHJ1
blRlc3QoKSB7CisgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKworICAgICAgICBzb3VyY2Ug
PSBuZXcgTWVkaWFTb3VyY2UoKTsKKyAgICAgICAgd2FpdEZvckV2ZW50T24oc291cmNlLCAnc291
cmNlb3BlbicsIHNvdXJjZU9wZW4pOworICAgICAgICBydW4oJ3ZpZGVvLnNyYyA9IFVSTC5jcmVh
dGVPYmplY3RVUkwoc291cmNlKScpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHNvdXJjZU9wZW4o
KSB7CisgICAgICAgIHJ1bignc291cmNlQnVmZmVyID0gc291cmNlLmFkZFNvdXJjZUJ1ZmZlcigi
dmlkZW8vbW9jazsgY29kZWNzPW1vY2siKScpOworCisgICAgICAgIHdhaXRGb3JFdmVudE9uKHNv
dXJjZUJ1ZmZlciwgJ3VwZGF0ZXN0YXJ0Jyk7CisgICAgICAgIHdhaXRGb3JFdmVudE9uKHNvdXJj
ZUJ1ZmZlciwgJ3VwZGF0ZScpOworICAgICAgICB3YWl0Rm9yRXZlbnRPbihzb3VyY2VCdWZmZXIs
ICd1cGRhdGVlbmQnLCB1cGRhdGVFbmQpOworICAgICAgICBpbml0U2VnbWVudCA9IG1ha2VBSW5p
dCgxMDAsIFttYWtlQVRyYWNrKDEsICdtb2NrJywgVFJBQ0tfS0lORC5WSURFTyldKTsKKyAgICAg
ICAgcnVuKCdzb3VyY2VCdWZmZXIuYXBwZW5kQnVmZmVyKGluaXRTZWdtZW50KScpOworICAgICAg
ICB0ZXN0RXhwZWN0ZWQoJ3NvdXJjZUJ1ZmZlci51cGRhdGluZycsIHRydWUpOworICAgIH0KKyAg
ICAKKyAgICBmdW5jdGlvbiB1cGRhdGVFbmQoKSB7CisgICAgICAgIHRlc3RFeHBlY3RlZCgnc291
cmNlQnVmZmVyLnVwZGF0aW5nJywgZmFsc2UpOworICAgICAgICBlbmRUZXN0KCk7CisgICAgfQor
CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAg
PHZpZGVvPjwvdmlkZW8+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWNhbnBsYXl0aHJvdWdoLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtY2FucGxh
eXRocm91Z2gtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyZWM1NzM0MTAwMWM2YjJmODg5MWNh
ZDgyZGViYjI3MGYzNDMxNGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9t
ZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWNhbnBsYXl0aHJvdWdoLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDggQEAKKworUlVOKHZpZGVvLnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoc291cmNl
KSkKK0VWRU5UKGxvYWRlZG1ldGFkYXRhKQorRVZFTlQobG9hZGVkZGF0YSkKK0VWRU5UKGNhbnBs
YXkpCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtY2FucGxheXRocm91Z2gu
aHRtbCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtY2FucGxh
eXRocm91Z2guaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTkxZjc2ZWRiZTFlMTQxZGUwYWM5N2I2ZTVlMjAx
NTA1OWRkNjIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291
cmNlL21lZGlhLXNvdXJjZS1jYW5wbGF5dGhyb3VnaC5odG1sCkBAIC0wLDAgKzEsNTEgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+bW9jay1tZWRpYS1zb3Vy
Y2U8L3RpdGxlPgorICAgIDxzY3JpcHQgc3JjPSJtb2NrLW1lZGlhLXNvdXJjZS5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQ+CisgICAgdmFyIHNvdXJjZTsKKyAgICB2YXIgc291cmNlQnVmZmVyOworCisgICAgdmFy
IHJlcXVlc3RMZW5ndGggPSAyMDAwMDA7CisgICAgdmFyIG5leHRSZXF1ZXN0ID0gMDsKKyAgICB2
YXIgdG90YWxMZW5ndGggPSAxMDA7CisKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAg
ICAgaW50ZXJuYWxzLmluaXRpYWxpemVNb2NrTWVkaWFTb3VyY2UoKTsKKworICAgIGZ1bmN0aW9u
IHJ1blRlc3QoKSB7CisgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKyAgICAgICAgc291cmNl
ID0gbmV3IE1lZGlhU291cmNlKCk7CisgICAgICAgIHNvdXJjZS5hZGRFdmVudExpc3RlbmVyKCdz
b3VyY2VvcGVuJywgc3RhcnRMb2FkKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCdsb2FkZWRtZXRh
ZGF0YScpOworICAgICAgICB3YWl0Rm9yRXZlbnQoJ2xvYWRlZGRhdGEnKTsKKyAgICAgICAgd2Fp
dEZvckV2ZW50KCdjYW5wbGF5Jyk7CisgICAgICAgIHdhaXRGb3JFdmVudEFuZEVuZCgnY2FucGxh
eXRocm91Z2gnKTsKKyAgICAgICAgcnVuKCd2aWRlby5zcmMgPSBVUkwuY3JlYXRlT2JqZWN0VVJM
KHNvdXJjZSknKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGFydExvYWQoKSB7CisgICAgICAg
IHNvdXJjZUJ1ZmZlciA9IHNvdXJjZS5hZGRTb3VyY2VCdWZmZXIoJ3ZpZGVvL21vY2s7IGNvZGVj
cz0ibW9jayInKTsKKyAgICAgICAgc291cmNlQnVmZmVyLmFkZEV2ZW50TGlzdGVuZXIoJ3VwZGF0
ZScsIHNvdXJjZVVwZGF0ZWQpOworICAgICAgICBuZXh0UmVxdWVzdCA9IDA7CisKKyAgICAgICAg
Ly8gTWFrZSBhbiBpbml0IHNlZ21lbnQgd2l0aCAxIHZpZGVvIHRyYWNrCisgICAgICAgIHZhciBp
bml0ID0gbWFrZUFJbml0KDEwMCwgW21ha2VBVHJhY2soMSwgJ21vY2snLCBUUkFDS19LSU5ELlZJ
REVPKV0pOworICAgICAgICBzb3VyY2VCdWZmZXIuYXBwZW5kQnVmZmVyKGluaXQpCisgICAgfQor
CisgICAgZnVuY3Rpb24gc291cmNlVXBkYXRlZCgpIHsKKyAgICAgICAgc291cmNlLmFjdGl2ZVNv
dXJjZUJ1ZmZlcnMubGVuZ3RoOworICAgICAgICBpZiAobmV4dFJlcXVlc3QgPCB0b3RhbExlbmd0
aCkgeworICAgICAgICAgICAgc291cmNlQnVmZmVyLmFwcGVuZEJ1ZmZlcihtYWtlQVNhbXBsZShu
ZXh0UmVxdWVzdCwgbmV4dFJlcXVlc3QsIDEsIDEsIDApKTsKKyAgICAgICAgICAgICsrbmV4dFJl
cXVlc3Q7CisgICAgICAgIH0KKyAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBv
bmxvYWQ9InJ1blRlc3QoKSI+CisgICAgPHZpZGVvIGNvbnRyb2xzIHdpZHRoPTk2MCBoZWlnaHQ9
NTEwPjwvdmlkZW8+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9t
ZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWNsb3NlZC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWNsb3NlZC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uY2QzM2UxMzE5MmQzMWUyYjNmZmY5YjVhMDk5MjUzNmFlOThkYzRjYgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1z
b3VyY2UtY2xvc2VkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKKworRVhQRUNURUQgKHNv
dXJjZS5yZWFkeVN0YXRlID09ICdjbG9zZWQnKSBPSworRVZFTlQoc291cmNlb3BlbikKK1JVTih2
aWRlby5zcmMgPSAiIikKK0VWRU5UKHNvdXJjZWNsb3NlKQorRU5EIE9GIFRFU1QKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1jbG9zZWQu
aHRtbCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtY2xvc2Vk
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjJjODIxZTg5YWJiOTgyMTFlZDcxYTg2ODc4YzcxZmU5MzA4NTBm
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRp
YS1zb3VyY2UtY2xvc2VkLmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT5tb2NrLW1lZGlhLXNvdXJjZTwvdGl0bGU+CisgICAg
PHNjcmlwdCBzcmM9Im1vY2stbWVkaWEtc291cmNlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICB2YXIg
c291cmNlOworICAgIHZhciBzb3VyY2VCdWZmZXI7CisgICAgdmFyIHNvdXJjZVRhZzsKKworICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuaW5pdGlhbGl6ZU1vY2tN
ZWRpYVNvdXJjZSgpOworCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgZmluZE1l
ZGlhRWxlbWVudCgpOworCisgICAgICAgIHNvdXJjZSA9IG5ldyBNZWRpYVNvdXJjZSgpOworICAg
ICAgICB0ZXN0RXhwZWN0ZWQoJ3NvdXJjZS5yZWFkeVN0YXRlJywgJ2Nsb3NlZCcpOworCisgICAg
ICAgIHdhaXRGb3JFdmVudE9uKHNvdXJjZSwgJ3NvdXJjZW9wZW4nLCBzb3VyY2VPcGVuKTsKKyAg
ICAgICAgdmlkZW8uc3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChzb3VyY2UpOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHNvdXJjZU9wZW4oKSB7CisgICAgICAgIHdhaXRGb3JFdmVudE9uKHNvdXJj
ZSwgJ3NvdXJjZWNsb3NlJywgZW5kVGVzdCk7CisgICAgICAgIHJ1bigndmlkZW8uc3JjID0gIiIn
KTsKKyAgICB9CisgICAgCisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKSI+CisgICAgPHZpZGVvPjwvdmlkZW8+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEt
c291cmNlL21lZGlhLXNvdXJjZS1wbGF5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlh
L21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtcGxheS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTkyYTlhZjQxMDMyNWM4ZWE1YjljYmUwNGI3N2VjYmFhMzJlMWEzYwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtcGxheS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorCitFWFBFQ1RFRCAoc291cmNlLnJlYWR5U3RhdGUg
PT0gJ2Nsb3NlZCcpIE9LCitFVkVOVChzb3VyY2VvcGVuKQorUlVOKHNvdXJjZUJ1ZmZlciA9IHNv
dXJjZS5hZGRTb3VyY2VCdWZmZXIoInZpZGVvL21vY2s7IGNvZGVjcz1tb2NrIikpCitSVU4oc291
cmNlQnVmZmVyLmFwcGVuZEJ1ZmZlcihpbml0U2VnbWVudCkpCitFVkVOVCh1cGRhdGVlbmQpCitS
VU4oc291cmNlQnVmZmVyLmFwcGVuZEJ1ZmZlcihzYW1wbGUpKQorRVZFTlQodXBkYXRlZW5kKQor
UlVOKHNvdXJjZS5kdXJhdGlvbiA9IDEpCitSVU4oc291cmNlLmVuZE9mU3RyZWFtKCkpCitSVU4o
dmlkZW8ucGxheSgpKQorRVZFTlQoZW5kZWQpCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXBsYXkuaHRtbCBiL0xh
eW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtcGxheS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjk2NTdhZTRmODBmN2ZlMjdhMjU0MDk3ZTllMmEwMjFmN2E1NjBlZDIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXBs
YXkuaHRtbApAQCAtMCwwICsxLDUxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
CisgICAgPHRpdGxlPm1vY2stbWVkaWEtc291cmNlPC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0i
bW9jay1tZWRpYS1zb3VyY2UuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi92aWRl
by10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIHZhciBzb3VyY2U7CisgICAg
dmFyIHNvdXJjZUJ1ZmZlcjsKKyAgICB2YXIgaW5pdFNlZ21lbnQ7CisgICAgdmFyIHNhbXBsZTsK
KworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuaW5pdGlhbGl6
ZU1vY2tNZWRpYVNvdXJjZSgpOworCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAg
ZmluZE1lZGlhRWxlbWVudCgpOworCisgICAgICAgIHNvdXJjZSA9IG5ldyBNZWRpYVNvdXJjZSgp
OworICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3NvdXJjZS5yZWFkeVN0YXRlJywgJ2Nsb3NlZCcpOwor
CisgICAgICAgIHdhaXRGb3JFdmVudE9uKHNvdXJjZSwgJ3NvdXJjZW9wZW4nLCBzb3VyY2VPcGVu
KTsKKyAgICAgICAgdmlkZW8uc3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChzb3VyY2UpOworICAg
IH0KKworICAgIGZ1bmN0aW9uIHNvdXJjZU9wZW4oKSB7CisgICAgICAgIHJ1bignc291cmNlQnVm
ZmVyID0gc291cmNlLmFkZFNvdXJjZUJ1ZmZlcigidmlkZW8vbW9jazsgY29kZWNzPW1vY2siKScp
OworICAgICAgICB3YWl0Rm9yRXZlbnRPbihzb3VyY2VCdWZmZXIsICd1cGRhdGVlbmQnLCBsb2Fk
U2FtcGxlcywgZmFsc2UsIHRydWUpOworICAgICAgICBpbml0U2VnbWVudCA9IG1ha2VBSW5pdCgx
MDAsIFttYWtlQVRyYWNrKDEsICdtb2NrJywgVFJBQ0tfS0lORC5WSURFTyldKTsKKyAgICAgICAg
cnVuKCdzb3VyY2VCdWZmZXIuYXBwZW5kQnVmZmVyKGluaXRTZWdtZW50KScpOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIGxvYWRTYW1wbGVzKCkgeworICAgICAgICBzYW1wbGUgPSBtYWtlQVNhbXBs
ZSgwLCAwLCAxMCwgMSwgMCk7CisgICAgICAgIHdhaXRGb3JFdmVudE9uKHNvdXJjZUJ1ZmZlciwg
J3VwZGF0ZWVuZCcsIHBsYXksIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgcnVuKCdzb3VyY2VCdWZm
ZXIuYXBwZW5kQnVmZmVyKHNhbXBsZSknKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwbGF5KCkg
eworICAgICAgICB3YWl0Rm9yRXZlbnQoJ2VuZGVkJywgZW5kVGVzdCk7CisgICAgICAgIHJ1bign
c291cmNlLmR1cmF0aW9uID0gMScpOworICAgICAgICBydW4oJ3NvdXJjZS5lbmRPZlN0cmVhbSgp
Jyk7CisgICAgICAgIHJ1bigndmlkZW8ucGxheSgpJyk7CisgICAgfQorICAgIAorICAgIDwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDx2aWRlbz48L3Zp
ZGVvPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVk
aWEtc291cmNlL21lZGlhLXNvdXJjZS10cmFjay1lbmFibGVkLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtdHJhY2stZW5hYmxlZC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc4ZmEwOWJjMDQ3MGJkZmMyOThiNjIxMjNhZDMzNWRhZjdi
OWY1ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9t
ZWRpYS1zb3VyY2UtdHJhY2stZW5hYmxlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAor
CitSVU4odmlkZW8uc3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChzb3VyY2UpKQorRVZFTlQoc291
cmNlb3BlbikKK1JVTihzb3VyY2VCdWZmZXIgPSBzb3VyY2UuYWRkU291cmNlQnVmZmVyKCJ2aWRl
by9tb2NrOyBjb2RlY3M9bW9jayIpKQorUlVOKHNvdXJjZUJ1ZmZlci5hcHBlbmRCdWZmZXIoaW5p
dFNlZ21lbnQpKQorRVhQRUNURUQgKHNvdXJjZUJ1ZmZlci51cGRhdGluZyA9PSAndHJ1ZScpIE9L
CitFVkVOVCh1cGRhdGVzdGFydCkKK0VWRU5UKHVwZGF0ZSkKK0VWRU5UKHVwZGF0ZWVuZCkKK0VY
UEVDVEVEIChzb3VyY2VCdWZmZXIudXBkYXRpbmcgPT0gJ2ZhbHNlJykgT0sKK0VYUEVDVEVEIChz
b3VyY2VCdWZmZXIudmlkZW9UcmFja3MubGVuZ3RoID09ICcxJykgT0sKK0VYUEVDVEVEIChzb3Vy
Y2VCdWZmZXIudmlkZW9UcmFja3NbMF0uc2VsZWN0ZWQgPT0gJ3RydWUnKSBPSworRVhQRUNURUQg
KHNvdXJjZS5hY3RpdmVTb3VyY2VCdWZmZXJzLmxlbmd0aCA9PSAnMScpIE9LCitFTkQgT0YgVEVT
VAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291
cmNlLXRyYWNrLWVuYWJsZWQuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9t
ZWRpYS1zb3VyY2UtdHJhY2stZW5hYmxlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwMjg0YmU5ZmQ5YWMy
OGMyOTZhZDhkZGM1NmZjOTNjYjAzMzE3NTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXRyYWNrLWVuYWJsZWQuaHRtbApAQCAt
MCwwICsxLDQ5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxl
Pm1vY2stbWVkaWEtc291cmNlPC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0ibW9jay1tZWRpYS1z
b3VyY2UuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0LmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIHZhciBzb3VyY2U7CisgICAgdmFyIHNvdXJjZUJ1
ZmZlcjsKKyAgICB2YXIgaW5pdFNlZ21lbnQ7CisKKyAgICBpZiAod2luZG93LmludGVybmFscykK
KyAgICAgICAgaW50ZXJuYWxzLmluaXRpYWxpemVNb2NrTWVkaWFTb3VyY2UoKTsKKworICAgIGZ1
bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKworICAgICAg
ICBzb3VyY2UgPSBuZXcgTWVkaWFTb3VyY2UoKTsKKyAgICAgICAgd2FpdEZvckV2ZW50T24oc291
cmNlLCAnc291cmNlb3BlbicsIHNvdXJjZU9wZW4pOworICAgICAgICBydW4oJ3ZpZGVvLnNyYyA9
IFVSTC5jcmVhdGVPYmplY3RVUkwoc291cmNlKScpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHNv
dXJjZU9wZW4oKSB7CisgICAgICAgIHJ1bignc291cmNlQnVmZmVyID0gc291cmNlLmFkZFNvdXJj
ZUJ1ZmZlcigidmlkZW8vbW9jazsgY29kZWNzPW1vY2siKScpOworCisgICAgICAgIHdhaXRGb3JF
dmVudE9uKHNvdXJjZUJ1ZmZlciwgJ3VwZGF0ZXN0YXJ0Jyk7CisgICAgICAgIHdhaXRGb3JFdmVu
dE9uKHNvdXJjZUJ1ZmZlciwgJ3VwZGF0ZScpOworICAgICAgICB3YWl0Rm9yRXZlbnRPbihzb3Vy
Y2VCdWZmZXIsICd1cGRhdGVlbmQnLCB1cGRhdGVFbmQpOworICAgICAgICBpbml0U2VnbWVudCA9
IG1ha2VBSW5pdCgxMDAsIFsKKyAgICAgICAgICAgIG1ha2VBVHJhY2soMSwgJ21vY2snLCBUUkFD
S19LSU5ELlZJREVPKSwKKyAgICAgICAgXSk7CisgICAgICAgIHJ1bignc291cmNlQnVmZmVyLmFw
cGVuZEJ1ZmZlcihpbml0U2VnbWVudCknKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCdzb3VyY2VC
dWZmZXIudXBkYXRpbmcnLCB0cnVlKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gdXBkYXRl
RW5kKCkgeworICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3NvdXJjZUJ1ZmZlci51cGRhdGluZycsIGZh
bHNlKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCdzb3VyY2VCdWZmZXIudmlkZW9UcmFja3MubGVu
Z3RoJywgMSk7CisgICAgICAgIHRlc3RFeHBlY3RlZCgnc291cmNlQnVmZmVyLnZpZGVvVHJhY2tz
WzBdLnNlbGVjdGVkJywgdHJ1ZSk7CisgICAgICAgIHRlc3RFeHBlY3RlZCgnc291cmNlLmFjdGl2
ZVNvdXJjZUJ1ZmZlcnMubGVuZ3RoJywgMSk7CisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9CisK
KyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICA8
dmlkZW8+PC92aWRlbz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtdHJhY2tzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtdHJhY2tzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wMjI3MjE5YjNmZjBmZjUyN2FhZmFlOGVmNjVkZjRlMWRlNjVhMzUy
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlh
LXNvdXJjZS10cmFja3MtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKKworUlVOKHZpZGVv
LnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoc291cmNlKSkKK0VWRU5UKHNvdXJjZW9wZW4pCitS
VU4oc291cmNlQnVmZmVyID0gc291cmNlLmFkZFNvdXJjZUJ1ZmZlcigidmlkZW8vbW9jazsgY29k
ZWNzPW1vY2siKSkKK1JVTihzb3VyY2VCdWZmZXIuYXBwZW5kQnVmZmVyKGluaXRTZWdtZW50KSkK
K0VYUEVDVEVEIChzb3VyY2VCdWZmZXIudXBkYXRpbmcgPT0gJ3RydWUnKSBPSworRVZFTlQodXBk
YXRlc3RhcnQpCitFVkVOVCh1cGRhdGUpCitFVkVOVCh1cGRhdGVlbmQpCitFWFBFQ1RFRCAoc291
cmNlQnVmZmVyLnVwZGF0aW5nID09ICdmYWxzZScpIE9LCitFWFBFQ1RFRCAoc291cmNlQnVmZmVy
LnZpZGVvVHJhY2tzLmxlbmd0aCA9PSAnMScpIE9LCitFWFBFQ1RFRCAoc291cmNlQnVmZmVyLmF1
ZGlvVHJhY2tzLmxlbmd0aCA9PSAnMicpIE9LCitFWFBFQ1RFRCAoc291cmNlQnVmZmVyLnRleHRU
cmFja3MubGVuZ3RoID09ICczJykgT0sKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtdHJhY2tzLmh0bWwgYi9MYXlv
dXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXRyYWNrcy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmRkMWNjYmQ2Zjc4ZGU3OTNjYmY4MGJmNmYwYWY0NjI1NTUxZmUxZWYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXRy
YWNrcy5odG1sCkBAIC0wLDAgKzEsNTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKyAgICA8dGl0bGU+bW9jay1tZWRpYS1zb3VyY2U8L3RpdGxlPgorICAgIDxzY3JpcHQgc3Jj
PSJtb2NrLW1lZGlhLXNvdXJjZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Zp
ZGVvLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgdmFyIHNvdXJjZTsKKyAg
ICB2YXIgc291cmNlQnVmZmVyOworICAgIHZhciBpbml0U2VnbWVudDsKKworICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuaW5pdGlhbGl6ZU1vY2tNZWRpYVNvdXJj
ZSgpOworCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgZmluZE1lZGlhRWxlbWVu
dCgpOworCisgICAgICAgIHNvdXJjZSA9IG5ldyBNZWRpYVNvdXJjZSgpOworICAgICAgICB3YWl0
Rm9yRXZlbnRPbihzb3VyY2UsICdzb3VyY2VvcGVuJywgc291cmNlT3Blbik7CisgICAgICAgIHJ1
bigndmlkZW8uc3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChzb3VyY2UpJyk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gc291cmNlT3BlbigpIHsKKyAgICAgICAgcnVuKCdzb3VyY2VCdWZmZXIgPSBz
b3VyY2UuYWRkU291cmNlQnVmZmVyKCJ2aWRlby9tb2NrOyBjb2RlY3M9bW9jayIpJyk7CisKKyAg
ICAgICAgd2FpdEZvckV2ZW50T24oc291cmNlQnVmZmVyLCAndXBkYXRlc3RhcnQnKTsKKyAgICAg
ICAgd2FpdEZvckV2ZW50T24oc291cmNlQnVmZmVyLCAndXBkYXRlJyk7CisgICAgICAgIHdhaXRG
b3JFdmVudE9uKHNvdXJjZUJ1ZmZlciwgJ3VwZGF0ZWVuZCcsIHVwZGF0ZUVuZCk7CisgICAgICAg
IGluaXRTZWdtZW50ID0gbWFrZUFJbml0KDEwMCwgWworICAgICAgICAgICAgbWFrZUFUcmFjaygx
LCAnbW9jaycsIFRSQUNLX0tJTkQuVklERU8pLAorICAgICAgICAgICAgbWFrZUFUcmFjaygyLCAn
bW9jaycsIFRSQUNLX0tJTkQuQVVESU8pLAorICAgICAgICAgICAgbWFrZUFUcmFjaygzLCAnbW9j
aycsIFRSQUNLX0tJTkQuQVVESU8pLAorICAgICAgICAgICAgbWFrZUFUcmFjayg0LCAnbW9jaycs
IFRSQUNLX0tJTkQuVEVYVCksCisgICAgICAgICAgICBtYWtlQVRyYWNrKDUsICdtb2NrJywgVFJB
Q0tfS0lORC5URVhUKSwKKyAgICAgICAgICAgIG1ha2VBVHJhY2soNiwgJ21vY2snLCBUUkFDS19L
SU5ELlRFWFQpLAorICAgICAgICBdKTsKKyAgICAgICAgcnVuKCdzb3VyY2VCdWZmZXIuYXBwZW5k
QnVmZmVyKGluaXRTZWdtZW50KScpOworICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3NvdXJjZUJ1ZmZl
ci51cGRhdGluZycsIHRydWUpOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiB1cGRhdGVFbmQo
KSB7CisgICAgICAgIHRlc3RFeHBlY3RlZCgnc291cmNlQnVmZmVyLnVwZGF0aW5nJywgZmFsc2Up
OworICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3NvdXJjZUJ1ZmZlci52aWRlb1RyYWNrcy5sZW5ndGgn
LCAxKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCdzb3VyY2VCdWZmZXIuYXVkaW9UcmFja3MubGVu
Z3RoJywgMik7CisgICAgICAgIHRlc3RFeHBlY3RlZCgnc291cmNlQnVmZmVyLnRleHRUcmFja3Mu
bGVuZ3RoJywgMyk7CisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9CisKKyAgICA8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICA8dmlkZW8+PC92aWRlbz4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNv
dXJjZS9tb2NrLW1lZGlhLXNvdXJjZS5qcyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJj
ZS9tb2NrLW1lZGlhLXNvdXJjZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNTUyYzYwMGJiZDA2MGY5NmNjOGYz
MmZkZWUzZGE1MTA3MTU0OWUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEv
bWVkaWEtc291cmNlL21vY2stbWVkaWEtc291cmNlLmpzCkBAIC0wLDAgKzEsNzIgQEAKK3ZhciBU
UkFDS19LSU5EID0geworICAgIEFVRElPOiAwLAorICAgIFZJREVPOiAxLAorICAgIFRFWFQ6IDIs
Cit9OworCitmdW5jdGlvbiBzdHJpbmdUb0FycmF5KHN0cmluZykgeworICAgIHJldHVybiBzdHJp
bmcuc3BsaXQoIiIpLm1hcChmdW5jdGlvbihjKXsgcmV0dXJuIGMuY2hhckNvZGVBdCgwKTsgfSk7
Cit9CisKK2Z1bmN0aW9uIG1ha2VBU2FtcGxlKHByZXNlbnRhdGlvblRpbWUsIGRlY29kZVRpbWUs
IGR1cmF0aW9uLCB0cmFja0lELCBmbGFncykgeworICAgIHZhciBieXRlTGVuZ3RoID0gMjk7Cisg
ICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihieXRlTGVuZ3RoKTsKKyAgICB2YXIgYXJy
YXkgPSBuZXcgVWludDhBcnJheShidWZmZXIpOworICAgIGFycmF5LnNldChzdHJpbmdUb0FycmF5
KCdzbXBsJykpOworCisgICAgdmFyIHZpZXcgPSBuZXcgRGF0YVZpZXcoYnVmZmVyKTsKKyAgICB2
aWV3LnNldFVpbnQzMig0LCBieXRlTGVuZ3RoLCB0cnVlKTsKKworICAgIHZhciB0aW1lU2NhbGUg
PSAxMDAwOworICAgIHZpZXcuc2V0SW50MzIoOCwgdGltZVNjYWxlLCB0cnVlKTsKKyAgICB2aWV3
LnNldEludDMyKDEyLCBwcmVzZW50YXRpb25UaW1lICogdGltZVNjYWxlLCB0cnVlKTsKKyAgICB2
aWV3LnNldEludDMyKDE2LCBkZWNvZGVUaW1lICogdGltZVNjYWxlLCB0cnVlKTsKKyAgICB2aWV3
LnNldEludDMyKDIwLCBkdXJhdGlvbiAqIHRpbWVTY2FsZSwgdHJ1ZSk7CisgICAgdmlldy5zZXRJ
bnQzMigyNCwgdHJhY2tJRCwgdHJ1ZSk7CisgICAgdmlldy5zZXRVaW50OCgyOCwgZmxhZ3MpOwor
CisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKworZnVuY3Rpb24gbWFrZUFUcmFjayh0cmFja0lELCBj
b2RlYywgZmxhZ3MpIHsKKyAgICB2YXIgYnl0ZUxlbmd0aCA9IDE3OworICAgIHZhciBidWZmZXIg
PSBuZXcgQXJyYXlCdWZmZXIoYnl0ZUxlbmd0aCk7CisgICAgdmFyIGFycmF5ID0gbmV3IFVpbnQ4
QXJyYXkoYnVmZmVyKTsKKyAgICBhcnJheS5zZXQoc3RyaW5nVG9BcnJheSgndHJhaycpKTsKKwor
ICAgIHZhciB2aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlcik7CisgICAgdmlldy5zZXRVaW50MzIo
NCwgYnl0ZUxlbmd0aCwgdHJ1ZSk7CisgICAgdmlldy5zZXRJbnQzMig4LCB0cmFja0lELCB0cnVl
KTsKKworICAgIHZhciBjb2RlY0FycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyLCAxMiwgNCk7
CisgICAgY29kZWNBcnJheS5zZXQoc3RyaW5nVG9BcnJheShjb2RlYykpOworCisgICAgdmlldy5z
ZXRVaW50OCgxNiwgZmxhZ3MsIHRydWUpOworCisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKworZnVu
Y3Rpb24gbWFrZUFJbml0KGR1cmF0aW9uLCB0cmFja3MpIHsKKyAgICB2YXIgYnl0ZUxlbmd0aCA9
IDE2ICsgKDE3ICogdHJhY2tzLmxlbmd0aCk7CisgICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1
ZmZlcihieXRlTGVuZ3RoKTsKKyAgICB2YXIgYXJyYXkgPSBuZXcgVWludDhBcnJheShidWZmZXIp
OworICAgIGFycmF5LnNldChzdHJpbmdUb0FycmF5KCdpbml0JykpOworCisgICAgdmFyIHZpZXcg
PSBuZXcgRGF0YVZpZXcoYnVmZmVyKTsKKyAgICB2YXIgdGltZVNjYWxlID0gMTAwMDsKKyAgICB2
aWV3LnNldFVpbnQzMig0LCBieXRlTGVuZ3RoLCB0cnVlKTsKKyAgICB2aWV3LnNldEludDMyKDgs
IGR1cmF0aW9uICogdGltZVNjYWxlLCB0cnVlKTsKKyAgICB2aWV3LnNldEludDMyKDEyLCB0aW1l
U2NhbGUsIHRydWUpOworCisgICAgdmFyIG9mZnNldCA9IDE2OworICAgIHRyYWNrcy5mb3JFYWNo
KGZ1bmN0aW9uKHRyYWNrKXsKKyAgICAgICAgdmFyIHNvdXJjZUFycmF5ID0gbmV3IFVpbnQ4QXJy
YXkodHJhY2spOworICAgICAgICB2YXIgZGVzdEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVy
LCBvZmZzZXQsIHNvdXJjZUFycmF5LmJ5dGVMZW5ndGgpOworICAgICAgICBkZXN0QXJyYXkuc2V0
KHNvdXJjZUFycmF5KTsKKyAgICAgICAgb2Zmc2V0ICs9IHNvdXJjZUFycmF5LmJ5dGVMZW5ndGg7
CisgICAgfSk7CisKKyAgICByZXR1cm4gYnVmZmVyOworfQorCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL21lZGlhL3ZpZGVvLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby10ZXN0
LmpzCmluZGV4IDA1OTgzN2JmZDI3YzFmMTc4Y2ZiMmY4Mjg1MDUyNmU0ZWZiMjBhYzMuLmNhYjNm
ZGZhMjdmMDA2MWE2NzVlMzVlZjJhZjNmNzhmOGY3ZTY2YmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL21lZGlhL3ZpZGVvLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tdGVz
dC5qcwpAQCAtMjAyLDYgKzIwMiwxMSBAQCBmdW5jdGlvbiB3YWl0Rm9yRXZlbnRBbmRUZXN0KGV2
ZW50TmFtZSwgdGVzdEZ1bmNTdHJpbmcsIGVuZGl0KQogICAgIG1lZGlhRWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKGV2ZW50TmFtZSwgX2V2ZW50Q2FsbGJhY2ssIHRydWUpOwogfQogCitmdW5jdGlv
biB3YWl0Rm9yRXZlbnRPbihlbGVtZW50LCBldmVudE5hbWUsIGZ1bmMsIGVuZGl0LCBvbmVUaW1l
T25seSkKK3sKKyAgICB3YWl0Rm9yRXZlbnQoZXZlbnROYW1lLCBmdW5jLCBlbmRpdCwgb25lVGlt
ZU9ubHksIGVsZW1lbnQpOworfQorCiBmdW5jdGlvbiB0ZXN0RE9NRXhjZXB0aW9uKHRlc3RTdHJp
bmcsIGV4Y2VwdGlvblN0cmluZykKIHsKICAgICB0cnkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216309</attachid>
            <date>2013-11-07 09:27:41 -0800</date>
            <delta_ts>2013-11-07 09:27:41 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-123322-20131107092740.patch</filename>
            <type>text/plain</type>
            <size>100517</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU4ODQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjQ2N2VlYzE4OWU3NWM5
ODg0ODEyMjJjYThkOGZkZWFhMTA4ZWMxZS4uODQ5NTc1NTE0YzQ5MDAxODAzNTQ0YjIzOGM4OTVk
NTE1OGM4MTdhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NyBAQAorMjAxMy0xMC0zMCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbTVNFXSBBZGQgbW9jayBN
ZWRpYVNvdXJjZSBjbGFzc2VzIGZvciB0ZXN0aW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzMzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1z
b3VyY2UtYWRkc291cmNlYnVmZmVyLmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL21lZGlhLXNv
dXJjZS9tZWRpYS1zb3VyY2UtYXBwZW5kLWJ1ZmZlci5odG1sCisgICAgICAgICAgICAgICBtZWRp
YS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWNhbnBsYXl0aHJvdWdoLmh0bWwKKyAgICAgICAg
ICAgICAgIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtY2xvc2VkLmh0bWwKKyAgICAg
ICAgICAgICAgIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtcGxheS5odG1sCisgICAg
ICAgICAgICAgICBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXRyYWNrLWVuYWJsZWQu
aHRtbAorICAgICAgICAgICAgICAgbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS10cmFj
a3MuaHRtbAorCisKKyAgICAgICAgQWRkIG1vY2sgaW1wbGVtZW50YXRpb24gb2YgcGxhdGZvcm0g
TWVkaWFTb3VyY2UgY2xhc3NlcywgYWxsb3dpbmcgcG9ydHMgdG8gdGVzdCB0aGUKKyAgICAgICAg
TWVkaWFTb3VyY2UgQVBJIHdpdGhvdXQgaGF2aW5nIGEgcGxhdGZvcm0gaW1wbGVtZW50YXRpb24u
CisKKyAgICAgICAgVGhlIE1vY2tNZWRpYVNvdXJjZSB3aWxsIHN1cHBvcnQgYSBieXRlZm9ybWF0
IGRlZmluZWQgaW4gTW9ja0JveC5oOiBhIHNpbXBsZSBib3gtc3R5bGUgbWVkaWEKKyAgICAgICAg
Zm9ybWF0IHdpdGggYW4gaW5pdGlhbGl6YXRpb24gc2VnbWVudCBjb250YWluaW5nIGEgbnVtYmVy
IG9mIHRyYWNrcywgZm9sbG93ZWQgYnkgYSBsaXN0IG9mCisgICAgICAgIHNhbXBsZXMuCisKKyAg
ICAgICAgQWRkIGEgbWVhbnMgdG8gaW5zZXJ0IGEgbmV3IG1lZGlhIGVuZ2luZSBmYWN0b3J5IGF0
IHJ1bnRpbWUsIHNvIHRoZSBpbnRlcm5hbHMgb2JqZWN0IGNhbiBhZGQKKyAgICAgICAgYSBNb2Nr
TWVkaWFTb3VyY2VNZWRpYVBsYXllcjoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckZhY3RvcnlTdXBwb3J0
OjpjYWxsUmVnaXN0ZXJNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6OmluaXRpYWxpemVNb2NrTWVkaWFTb3VyY2UpOgorICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRs
OgorCisgICAgICAgIEZvciBub24tbWVkaWEtc291cmNlIHN1cHBvcnRpbmcgbWVkaWEgZW5naW5l
cywgZmFpbCBpbW1lZGlhdGVseSB3aGVuIGFza2VkIHRvIGxvYWQgYSBtZWRpYQorICAgICAgICBz
b3VyY2UsIHNvIHRoYXQgdGhlIE1vY2tNZWRpYVNvdXJjZU1lZGlhUGxheWVyIHdpbGwgYmUgaW5z
dGFudGlhdGVkIGFzIGEgZmFsbC1iYWNrOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpsb2FkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN1cHBvcnRzVHlwZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1t
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmxvYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnN1cHBvcnRzVHlwZSk6CisK
KyAgICAgICAgQWRkIG5ldyBmaWxlcyB0byB0aGUgcHJvamVjdDoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW46CisKKyAgICAgICAgVXBkYXRlIHRoZSBNZWRpYVNvdXJjZSBpbXBsZW1lbnRh
dGlvbjoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjptb25pdG9yU291cmNlQnVmZmVycyk6IEFkZCBh
IGxpbmsgdG8gdGhlIHNwZWMuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VC
dWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpidWZmZXJlZCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpzZXRUaW1lc3RhbXBPZmZzZXQp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6dmFsaWRhdGVJbml0aWFs
aXphdGlvblNlZ21lbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6
c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQpOiBEaXR0
by4gQWxzbywKKyAgICAgICAgICAgIGJyaW5nIHRoZSBpbXBsZW1lbnRhdGlvbiB1cCB0byBkYXRl
IHdpdGggcGFydCBvZiB0aGUgc3BlYy4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6
c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVTYW1wbGUpOiBSZW1vdmUgIlByZWRpY2F0ZSIg
ZnJvbQorICAgICAgICAgICAgU2FtcGxlSXNSYW5kb21BY2Nlc3NQcmVkaWNhdGUuCisKKyAgICAg
ICAgQWRkIHV0aWxpdHkgY2xhc3NlcyB0byBwYXJzZSBhbmQgcmVwcmVzZW50IHRoZSBieXRlc3Ry
ZWFtIHN1cHBvcnRlZCBieSB0aGUgTW9ja01lZGlhU291cmNlOgorICAgICAgICAqIHBsYXRmb3Jt
L21vY2svbWVkaWFzb3VyY2UvTW9ja0JveC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
TW9ja0JveDo6TW9ja0JveCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQm94OjpwZWVrVHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQm94OjpwZWVrTGVuZ3RoKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tUcmFja0JveDo6TW9ja1RyYWNrQm94KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tU
cmFja0JveDo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrSW5pdGlhbGl6YXRpb25Cb3g6
Ok1vY2tJbml0aWFsaXphdGlvbkJveCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrSW5pdGlhbGl6
YXRpb25Cb3g6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NhbXBsZUJveDo6TW9ja1Nh
bXBsZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU2FtcGxlQm94Ojp0eXBlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpNb2NrQm94OjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0JveDo6
dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrVHJhY2tCb3g6OnRyYWNrSUQpOgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja1RyYWNrQm94Ojpjb2RlYyk6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
VHJhY2tCb3g6OmtpbmQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0luaXRpYWxpemF0aW9uQm94
OjpkdXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrSW5pdGlhbGl6YXRpb25Cb3g6OnRy
YWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU2FtcGxlQm94OjpwcmVzZW50YXRpb25UaW1l
c3RhbXApOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NhbXBsZUJveDo6ZGVjb2RlVGltZXN0YW1w
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTYW1wbGVCb3g6OmR1cmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tTYW1wbGVCb3g6OnRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a1NhbXBsZUJveDo6ZmxhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NhbXBsZUJveDo6aXNT
eW5jKToKKworICAgICAgICBBZGQgYSBNZWRpYVBsYXllclByaXZhdGUgaW1wbGVtZW50YXRpb24g
d2hpY2ggdXNlcyBNb2NrTWVkaWFTb3VyY2U6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUp
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjptaW1lVHlwZUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpnZXRTdXBwb3J0ZWRUeXBlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6c3VwcG9ydHNUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpNb2NrTWVkaWFQbGF5ZXJN
ZWRpYVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJj
ZTo6fk1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tN
ZWRpYVBsYXllck1lZGlhU291cmNlOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRp
YVBsYXllck1lZGlhU291cmNlOjpjYW5jZWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tN
ZWRpYVBsYXllck1lZGlhU291cmNlOjpwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRp
YVBsYXllck1lZGlhU291cmNlOjpwYXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFQ
bGF5ZXJNZWRpYVNvdXJjZTo6bmF0dXJhbFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01l
ZGlhUGxheWVyTWVkaWFTb3VyY2U6Omhhc1ZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tN
ZWRpYVBsYXllck1lZGlhU291cmNlOjpoYXNBdWRpbyk6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
TWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6c2V0VmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6c2Vla2luZyk6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6cGF1c2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpuZXR3b3JrU3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnJlYWR5U3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmJ1ZmZlcmVkKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpkaWRMb2FkaW5nUHJvZ3Jlc3MpOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnNldFNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnBhaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpjdXJyZW50VGltZURv
dWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6ZHVy
YXRpb25Eb3VibGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3Vy
Y2U6OnNlZWtEb3VibGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFT
b3VyY2U6OmFkdmFuY2VDdXJyZW50VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFQ
bGF5ZXJNZWRpYVNvdXJjZTo6dXBkYXRlRHVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TW9j
a01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnNldFJlYWR5U3RhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuaDogQWRkZWQu
CisKKyAgICAgICAgQWRkIGEgbW9jayBpbXBsZW1lbnRhdGlvbiBvZiBNZWRpYVNvdXJjZVByaXZh
dGUsIHdoaWNoIHVzZXMgTW9ja1NvdXJjZUJ1ZmZlcjoKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJjZVByaXZhdGUuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tNZWRpYVNvdXJjZVByaXZhdGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjpNb2NrTWVkaWFTb3VyY2VQcml2YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNvdXJjZVByaXZhdGU6On5Nb2NrTWVkaWFTb3VyY2VQ
cml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNvdXJjZVByaXZhdGU6OmFkZFNv
dXJjZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjpy
ZW1vdmVTb3VyY2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhU291cmNlUHJp
dmF0ZTo6ZHVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhU291cmNlUHJpdmF0
ZTo6c2V0RHVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhU291cmNlUHJpdmF0
ZTo6bWFya0VuZE9mU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNvdXJjZVBy
aXZhdGU6OnVubWFya0VuZE9mU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNv
dXJjZVByaXZhdGU6OnJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhU291
cmNlUHJpdmF0ZTo6c2V0UmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFT
b3VyY2VQcml2YXRlOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkQ2hhbmdlQWN0aXZlU3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGVIYXNBdWRpbyk6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjpoYXNBdWRpbyk6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZUhhc1ZpZGVvKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1vY2tNZWRpYVNvdXJjZVByaXZhdGU6Omhhc1ZpZGVvKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJjZVByaXZhdGUuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjphY3RpdmVTb3VyY2VCdWZm
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNvdXJjZVByaXZhdGU6OnBsYXllcik6
CisKKyAgICAgICAgQWRkIGEgbW9jayBpbXBsZW1lbnRhdGlvbiBvZiBTb3VyY2VCdWZmZXJQcml2
YXRlLCB3aGljaCB1c2VzIE1vY2tCb3hlcyB0byBwYXJzZSB0aGUKKyAgICAgICAgYnl0ZXN0cmVh
bSBwcm92aWRlZCBieSBTb3VyY2VCdWZmZXI6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TW9ja01lZGlhU2FtcGxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01l
ZGlhU2FtcGxlOjp+TW9ja01lZGlhU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRp
YVNhbXBsZTo6TW9ja01lZGlhU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNh
bXBsZTo6cGxhdGZvcm1TYW1wbGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhRGVzY3Jp
cHRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFEZXNjcmlwdGlvbjo6
fk1vY2tNZWRpYURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYURlc2Ny
aXB0aW9uOjpNb2NrTWVkaWFEZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU291
cmNlQnVmZmVyUHJpdmF0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTb3VyY2VC
dWZmZXJQcml2YXRlOjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6fk1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpzZXRDbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZUluaXRpYWxpemF0
aW9uU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6
ZGlkUmVjZWl2ZVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZTo6YWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6
OnJlbW92ZWRGcm9tTWVkaWFTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1
ZmZlclByaXZhdGU6OnJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1
ZmZlclByaXZhdGU6OnNldFJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJj
ZUJ1ZmZlclByaXZhdGU6Omhhc1ZpZGVvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTb3VyY2VC
dWZmZXJQcml2YXRlOjpoYXNBdWRpbyk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNv
dXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oOiBBZGRlZC4KKworICAgICAgICBDcmVhdGUg
bW9jayBpbXBsZW1lbnRhdGlvbnMgb2YgQXVkaW9UcmFja1ByaXZhdGUsIFZpZGVvVHJhY2tQcml2
YXRlLCBhbmQgVGV4dFRyYWNrUHJpdmF0ZQorICAgICAgICB3aGljaCB3cmFwIHRoZSBNb2NrVHJh
Y2tCb3ggY2xhc3M6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrVHJh
Y2tzLmNwcDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2Nr
VHJhY2tzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TW9ja0F1ZGlvVHJhY2tQcml2YXRl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0F1ZGlvVHJhY2tQcml2YXRlOjp+TW9j
a0F1ZGlvVHJhY2tQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tBdWRpb1RyYWNrUHJp
dmF0ZTo6aWQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0F1ZGlvVHJhY2tQcml2YXRlOjpNb2Nr
QXVkaW9UcmFja1ByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1RleHRUcmFja1ByaXZh
dGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrVGV4dFRyYWNrUHJpdmF0ZTo6fk1v
Y2tUZXh0VHJhY2tQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tUZXh0VHJhY2tQcml2
YXRlOjppZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrVGV4dFRyYWNrUHJpdmF0ZTo6TW9ja1Rl
eHRUcmFja1ByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1ZpZGVvVHJhY2tQcml2YXRl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1ZpZGVvVHJhY2tQcml2YXRlOjp+TW9j
a1ZpZGVvVHJhY2tQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tWaWRlb1RyYWNrUHJp
dmF0ZTo6aWQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1ZpZGVvVHJhY2tQcml2YXRlOjpNb2Nr
VmlkZW9UcmFja1ByaXZhdGUpOgorCiAyMDEzLTExLTA3ICBUaGlhZ28gZGUgQmFycm9zIExhY2Vy
ZGEgIDx0aGlhZ28ubGFjZXJkYUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIENoYW5naW5nIE1l
ZGlhU3RyZWFtRGVzY3JpcHRvciB0byBNZWRpYVN0cmVhbVByaXZhdGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKaW5kZXggZDMzNDQz
N2I2NTg0YjhmYTU0NWM2NGUyNDkwZmNmM2M5ZWI4YWJhNy4uNmVlZjBjOWU0OWUxZTllMjQxYTc1
YjY0ZWUyM2RiYzE1MGMwMjBiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKQEAgLTM5OCw2ICszOTgsNyBAQCB2b2lkIE1lZGlh
U291cmNlOjptb25pdG9yU291cmNlQnVmZmVycygpCiAgICAgZG91YmxlIGN1cnJlbnRUaW1lID0g
bWVkaWFFbGVtZW50KCktPmN1cnJlbnRUaW1lKCk7CiAKICAgICAvLyAyLjQuNCBTb3VyY2VCdWZm
ZXIgTW9uaXRvcmluZworICAgIC8vIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9y
YXctZmlsZS9kZWZhdWx0L21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UuaHRtbCNidWZmZXItbW9u
aXRvcmluZwogICAgIC8vIOKGsyBJZiBidWZmZXJlZCBmb3IgYWxsIG9iamVjdHMgaW4gYWN0aXZl
U291cmNlQnVmZmVycyBkbyBub3QgY29udGFpbiBUaW1lUmFuZ2VzIGZvciB0aGUgY3VycmVudAog
ICAgIC8vIHBsYXliYWNrIHBvc2l0aW9uOgogICAgIGF1dG8gYmVnaW4gPSBtX2FjdGl2ZVNvdXJj
ZUJ1ZmZlcnMtPmJlZ2luKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5kZXggNTdmM2UwYmYwNzhjMzZkY2ExZjM5NmRjMTQ3
ZjAyYjk5ODY2NWM0Mi4uYjYwMGUwNDdhMjM5ZjA3NzY1MTJjM2YzYWQyYTQyMTc5OGY3MTQwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZm
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVm
ZmVyLmNwcApAQCAtMTA4LDYgKzEwOCw3IEBAIFNvdXJjZUJ1ZmZlcjo6flNvdXJjZUJ1ZmZlcigp
CiBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IFNvdXJjZUJ1ZmZlcjo6YnVmZmVyZWQoRXhjZXB0aW9u
Q29kZSYgZWMpIGNvbnN0CiB7CiAgICAgLy8gU2VjdGlvbiAzLjEgYnVmZmVyZWQgYXR0cmlidXRl
IHN0ZXBzLgorICAgIC8vIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9yYXctZmls
ZS9kZWZhdWx0L21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UuaHRtbCNhdHRyaWJ1dGVzLTEKICAg
ICAvLyAxLiBJZiB0aGlzIG9iamVjdCBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIHNvdXJjZUJ1
ZmZlcnMgYXR0cmlidXRlIG9mIHRoZSBwYXJlbnQgbWVkaWEgc291cmNlIHRoZW4gdGhyb3cgYW4K
ICAgICAvLyAgICBJTlZBTElEX1NUQVRFX0VSUiBleGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0
ZXBzLgogICAgIGlmIChpc1JlbW92ZWQoKSkgewpAQCAtMTMyLDYgKzEzMyw3IEBAIGRvdWJsZSBT
b3VyY2VCdWZmZXI6OnRpbWVzdGFtcE9mZnNldCgpIGNvbnN0CiB2b2lkIFNvdXJjZUJ1ZmZlcjo6
c2V0VGltZXN0YW1wT2Zmc2V0KGRvdWJsZSBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIC8vIFNlY3Rpb24gMy4xIHRpbWVzdGFtcE9mZnNldCBhdHRyaWJ1dGUgc2V0dGVyIHN0ZXBz
LgorICAgIC8vIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9yYXctZmlsZS9kZWZh
dWx0L21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UuaHRtbCNhdHRyaWJ1dGVzLTEKICAgICAvLyAx
LiBJZiB0aGlzIG9iamVjdCBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIHNvdXJjZUJ1ZmZlcnMg
YXR0cmlidXRlIG9mIHRoZSBwYXJlbnQgbWVkaWEgc291cmNlIHRoZW4gdGhyb3cgYW4KICAgICAv
LyAgICBJTlZBTElEX1NUQVRFX0VSUiBleGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgog
ICAgIGlmIChpc1JlbW92ZWQoKSkgewpAQCAtMzkwLDkgKzM5MiwxNiBAQCB2b2lkIFNvdXJjZUJ1
ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQo
U291cmNlQnVmZgogICAgIG1fYXBwZW5kU3RhdGUgPSBQYXJzaW5nSW5pdFNlZ21lbnQ7CiAKICAg
ICAvLyAzLjUuNyBJbml0aWFsaXphdGlvbiBTZWdtZW50IFJlY2VpdmVkCisgICAgLy8gaHR0cHM6
Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL2RlZmF1bHQvbWVkaWEtc291cmNl
L21lZGlhLXNvdXJjZS5odG1sI3NvdXJjZWJ1ZmZlci1pbml0LXNlZ21lbnQtcmVjZWl2ZWQKICAg
ICAvLyAxLiBVcGRhdGUgdGhlIGR1cmF0aW9uIGF0dHJpYnV0ZSBpZiBpdCBjdXJyZW50bHkgZXF1
YWxzIE5hTjoKLSAgICBpZiAoc3RkOjppc25hbihtX3NvdXJjZS0+ZHVyYXRpb24oKSkgJiYgc2Vn
bWVudC5kdXJhdGlvbi5pc1ZhbGlkKCkpCi0gICAgICAgIG1fc291cmNlLT5zZXREdXJhdGlvbihz
ZWdtZW50LmR1cmF0aW9uLnRvRG91YmxlKCksIElHTk9SRV9FWENFUFRJT04pOworICAgIGlmIChz
dGQ6OmlzbmFuKG1fc291cmNlLT5kdXJhdGlvbigpKSkgeworICAgICAgICAvLyDihrMgSWYgdGhl
IGluaXRpYWxpemF0aW9uIHNlZ21lbnQgY29udGFpbnMgYSBkdXJhdGlvbjoKKyAgICAgICAgLy8g
ICBSdW4gdGhlIGR1cmF0aW9uIGNoYW5nZSBhbGdvcml0aG0gd2l0aCBuZXcgZHVyYXRpb24gc2V0
IHRvIHRoZSBkdXJhdGlvbiBpbiB0aGUgaW5pdGlhbGl6YXRpb24gc2VnbWVudC4KKyAgICAgICAg
Ly8g4oazIE90aGVyd2lzZToKKyAgICAgICAgLy8gICBSdW4gdGhlIGR1cmF0aW9uIGNoYW5nZSBh
bGdvcml0aG0gd2l0aCBuZXcgZHVyYXRpb24gc2V0IHRvIHBvc2l0aXZlIEluZmluaXR5LgorICAg
ICAgICBNZWRpYVRpbWUgbmV3RHVyYXRpb24gPSBzZWdtZW50LmR1cmF0aW9uLmlzVmFsaWQoKSA/
IHNlZ21lbnQuZHVyYXRpb24gOiBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCk7Cisg
ICAgICAgIG1fc291cmNlLT5zZXREdXJhdGlvbihuZXdEdXJhdGlvbi50b0RvdWJsZSgpLCBJR05P
UkVfRVhDRVBUSU9OKTsKKyAgICB9CiAKICAgICAvLyAyLiBJZiB0aGUgaW5pdGlhbGl6YXRpb24g
c2VnbWVudCBoYXMgbm8gYXVkaW8sIHZpZGVvLCBvciB0ZXh0IHRyYWNrcywgdGhlbiBydW4gdGhl
IGVuZCBvZiBzdHJlYW0KICAgICAvLyBhbGdvcml0aG0gd2l0aCB0aGUgZXJyb3IgcGFyYW1ldGVy
IHNldCB0byAiZGVjb2RlIiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCkBAIC01NjAsNiArNTY5LDkg
QEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlh
bGl6YXRpb25TZWdtZW50KFNvdXJjZUJ1ZmYKIAogYm9vbCBTb3VyY2VCdWZmZXI6OnZhbGlkYXRl
SW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IEluaXRpYWxpemF0aW9uU2VnbWVudCYgc2VnbWVu
dCkKIHsKKyAgICAvLyAzLjUuNyBJbml0aWFsaXphdGlvbiBTZWdtZW50IFJlY2VpdmVkIChjdGQp
CisgICAgLy8gaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL2RlZmF1
bHQvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS5odG1sI3NvdXJjZWJ1ZmZlci1pbml0LXNlZ21l
bnQtcmVjZWl2ZWQKKwogICAgIC8vIDMuMS4gVmVyaWZ5IHRoZSBmb2xsb3dpbmcgcHJvcGVydGll
cy4gSWYgYW55IG9mIHRoZSBjaGVja3MgZmFpbCB0aGVuIHJ1biB0aGUgZW5kIG9mIHN0cmVhbQog
ICAgIC8vIGFsZ29yaXRobSB3aXRoIHRoZSBlcnJvciBwYXJhbWV0ZXIgc2V0IHRvICJkZWNvZGUi
IGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICAvLyAgICogVGhlIG51bWJlciBvZiBhdWRpbywg
dmlkZW8sIGFuZCB0ZXh0IHRyYWNrcyBtYXRjaCB3aGF0IHdhcyBpbiB0aGUgZmlyc3QgaW5pdGlh
bGl6YXRpb24gc2VnbWVudC4KQEAgLTY1Niw3ICs2NjgsNyBAQCBwdWJsaWM6CiAgICAgfQogfTsK
IAotY2xhc3MgU2FtcGxlSXNSYW5kb21BY2Nlc3NQcmVkaWNhdGUgeworY2xhc3MgU2FtcGxlSXNS
YW5kb21BY2Nlc3MgewogcHVibGljOgogICAgIGJvb2wgb3BlcmF0b3IoKShzdGQ6OnBhaXI8TWVk
aWFUaW1lLCBSZWZQdHI8TWVkaWFTYW1wbGU+PiB2YWx1ZSkKICAgICB7CkBAIC04NDIsNyArODU0
LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlU2Ft
cGxlKFNvdXJjZUJ1ZmZlclByaXZhdGUqLCBQYXMKICAgICAgICAgICAgIC8vIE90aGVyd2lzZTog
UmVtb3ZlIGFsbCBjb2RlZCBmcmFtZXMgYmV0d2VlbiB0aGUgY29kZWQgZnJhbWVzIHJlbW92ZWQg
aW4gdGhlIHByZXZpb3VzIHN0ZXAKICAgICAgICAgICAgIC8vIGFuZCB0aGUgbmV4dCByYW5kb20g
YWNjZXNzIHBvaW50IGFmdGVyIHRob3NlIHJlbW92ZWQgZnJhbWVzLgogICAgICAgICAgICAgYXV0
byBmaXJzdF9pdGVyID0gc3RkOjp1cHBlcl9ib3VuZCh0cmFja0J1ZmZlci5zYW1wbGVzLmJlZ2lu
KCksIHRyYWNrQnVmZmVyLnNhbXBsZXMuZW5kKCksICplcmFzZWRTYW1wbGVzLmJlZ2luKCksIFNh
bXBsZUxlc3NUaGFuQ29tcGFyYXRvcigpKTsKLSAgICAgICAgICAgIGF1dG8gc2Vjb25kX2l0ZXIg
PSBzdGQ6OmZpbmRfaWYoZmlyc3RfaXRlciwgdHJhY2tCdWZmZXIuc2FtcGxlcy5lbmQoKSwgU2Ft
cGxlSXNSYW5kb21BY2Nlc3NQcmVkaWNhdGUoKSk7CisgICAgICAgICAgICBhdXRvIHNlY29uZF9p
dGVyID0gc3RkOjpmaW5kX2lmKGZpcnN0X2l0ZXIsIHRyYWNrQnVmZmVyLnNhbXBsZXMuZW5kKCks
IFNhbXBsZUlzUmFuZG9tQWNjZXNzKCkpOwogICAgICAgICAgICAgaWYgKGZpcnN0X2l0ZXIgIT0g
dHJhY2tCdWZmZXIuc2FtcGxlcy5lbmQoKSkgewogICAgICAgICAgICAgICAgIHRyYWNrQnVmZmVy
LnNhbXBsZXMuZXJhc2UoZmlyc3RfaXRlciwgc2Vjb25kX2l0ZXIpOwogICAgICAgICAgICAgICAg
IGVyYXNlZFNhbXBsZXMuaW5zZXJ0KGZpcnN0X2l0ZXIsIHNlY29uZF9pdGVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KaW5kZXggNmIwMTFjMzk5NWE2YjVlZDZmM2NhYTM5OTFmZmUwMTJiNWEzYWMxYS4u
MjA5YTQ0ZTI4YzI3NWZjMGE3NTZjYTQxZGUxMGIwNzc5MDY5Mzc4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTI4OTcsMyArMjg5NywxMSBAQCBfX1pON1dlYkNvcmUxMldvcmtlclRocmVhZDE3
d29ya2VyVGhyZWFkQ291bnRFdgogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIF9fWk43V2ViQ29y
ZTlQYWdlR3JvdXAxOGNhcHRpb25QcmVmZXJlbmNlc0V2CiAjZW5kaWYKKworI2lmIEVOQUJMRShW
SURFTykKK19fWk43V2ViQ29yZTI1TWVkaWFQbGF5ZXJGYWN0b3J5U3VwcG9ydDIzY2FsbFJlZ2lz
dGVyTWVkaWFFbmdpbmVFUEZ2UEZ2UEZOM1dURjEwUGFzc093blB0cklOU18yN01lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZUVFRVBOU18xMU1lZGlhUGxheWVyRUVQRnZSTlMxXzdIYXNoU2V0SU5T
MV82U3RyaW5nRU5TMV8xMFN0cmluZ0hhc2hFTlMxXzEwSGFzaFRyYWl0c0lTQV9FRUVFRVBGTlM1
XzEyU3VwcG9ydHNUeXBlRVJLTlNfMjhNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzRUVQRnZS
TlMxXzZWZWN0b3JJU0FfTG0wRU5TMV8xNUNyYXNoT25PdmVyZmxvd0VFRUVQRnZ2RVBGdlJLU0Ff
RUVFCisjZW5kaWYKKworI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCitfX1pON1dlYkNvcmUyNk1v
Y2tNZWRpYVBsYXllck1lZGlhU291cmNlMTlyZWdpc3Rlck1lZGlhRW5naW5lRVBGdlBGTjNXVEYx
MFBhc3NPd25QdHJJTlNfMjdNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2VFRUVQTlNfMTFNZWRp
YVBsYXllckVFUEZ2Uk5TMV83SGFzaFNldElOUzFfNlN0cmluZ0VOUzFfMTBTdHJpbmdIYXNoRU5T
MV8xMEhhc2hUcmFpdHNJU0FfRUVFRUVQRk5TNV8xMlN1cHBvcnRzVHlwZUVSS05TXzI4TWVkaWFF
bmdpbmVTdXBwb3J0UGFyYW1ldGVyc0VFUEZ2Uk5TMV82VmVjdG9ySVNBX0xtMEVOUzFfMTVDcmFz
aE9uT3ZlcmZsb3dFRUVFUEZ2dkVQRnZSS1NBX0VFCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlN2U3ODM1NmJmZTNk
MGZiYzc1Y2Q3M2RjYWQ2ZDMzYzNjZThkYzM4Li5jNWRiZTM4MDdkZTFmZDlmNDAxM2M3OWZkNzJi
YjJiYmM0YTZhZWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC01NDAyLDYgKzU0MDIsMTYgQEAKIAkJQ0RFRTM5MzcxNzk3NDI1
OTAwMUQ3NTgwIC8qIFB1YmxpY1VSTE1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFRTM5MzYxNzk3NDI1OTAwMUQ3NTgwIC8qIFB1Ymxp
Y1VSTE1hbmFnZXIuY3BwICovOyB9OwogCQlDREVGNEZENzE3RTg1QzhGMDBBRUUyNEIgLyogR3Jp
ZExlbmd0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RFRjRGRDYxN0U4NUM4RjAwQUVFMjRCIC8qIEdyaWRMZW5ndGguaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDREYyQjAwNDE4MUYwNTlDMDBGMkI0
MjQgLyogTWVkaWFEZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RGMkIwMDMxODFGMDU5QzAwRjJCNDI0IC8qIE1lZGlhRGVzY3JpcHRp
b24uaCAqLzsgfTsKKwkJQ0RGMkIwMTAxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tCb3guY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGMkIwMDYxODIw
NTQwNjAwRjJCNDI0IC8qIE1vY2tCb3guY3BwICovOyB9OworCQlDREYyQjAxMTE4MjA1NDA2MDBG
MkI0MjQgLyogTW9ja0JveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RGMkIwMDcxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tCb3guaCAqLzsgfTsKKwkJ
Q0RGMkIwMTIxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjJCMDA4
MTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAgKi87IH07
CisJCUNERjJCMDEzMTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJj
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGMkIw
MDkxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmggKi87IH07
CisJCUNERjJCMDE0MTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFTb3VyY2VQcml2YXRlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjJCMDBB
MTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFTb3VyY2VQcml2YXRlLmNwcCAqLzsgfTsKKwkJ
Q0RGMkIwMTUxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tNZWRpYVNvdXJjZVByaXZhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjJCMDBCMTgyMDU0
MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFTb3VyY2VQcml2YXRlLmggKi87IH07CisJCUNERjJCMDE2
MTgyMDU0MDcwMEYyQjQyNCAvKiBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREYyQjAwQzE4MjA1NDA2MDBG
MkI0MjQgLyogTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwICovOyB9OworCQlDREYyQjAxNzE4
MjA1NDA3MDBGMkI0MjQgLyogTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERjJCMDBEMTgyMDU0MDYwMEYyQjQy
NCAvKiBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oICovOyB9OworCQlDREYyQjAxODE4MjA1NDA3
MDBGMkI0MjQgLyogTW9ja1RyYWNrcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDREYyQjAwRTE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja1RyYWNrcy5j
cHAgKi87IH07CisJCUNERjJCMDE5MTgyMDU0MDcwMEYyQjQyNCAvKiBNb2NrVHJhY2tzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREYyQjAwRjE4MjA1
NDA2MDBGMkI0MjQgLyogTW9ja1RyYWNrcy5oICovOyB9OwogCQlDREY2NUNDODE0NUIxRTc1MDBD
NEM3QUEgLyogTWVkaWFDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDI3RjZFNDE0NTc2Nzg3MDA3ODIwN0QgLyogTWVkaWFDb250cm9s
bGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
Q0RGNjVDQ0ExNDVCNDQ4ODAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RGNjVDQzkxNDVC
NDNBNzAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMDU3RkE1MTIyMDczMTEwMEE0
NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UwNTdGQTMxMjIwNzMxMTAwQTQ3NkQ1IC8qIERv
Y3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgKi87IH07CkBAIC0xMjQ0OCw2ICsxMjQ1OCwxNiBA
QAogCQlDREVFMzkzODE3OTc0Mjc0MDAxRDc1ODAgLyogVVJMUmVnaXN0cnkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVVJMUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFRjRG
RDYxN0U4NUM4RjAwQUVFMjRCIC8qIEdyaWRMZW5ndGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gR3JpZExlbmd0aC5oOyBwYXRoID0gc3R5bGUvR3JpZExlbmd0aC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREYyQjAwMzE4MUYwNTlDMDBGMkI0MjQgLyogTWVk
aWFEZXNjcmlwdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYURl
c2NyaXB0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERjJCMDA2MTgyMDU0
MDYwMEYyQjQyNCAvKiBNb2NrQm94LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1vY2tCb3guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREYyQjAw
NzE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja0JveC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNb2NrQm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERjJCMDA4
MTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJj
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERjJCMDA5MTgyMDU0MDYwMEYy
QjQyNCAvKiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDREYyQjAwQTE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhU291
cmNlUHJpdmF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2Nr
TWVkaWFTb3VyY2VQcml2YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RG
MkIwMEIxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tNZWRpYVNvdXJjZVByaXZhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja01lZGlhU291cmNlUHJpdmF0ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREYyQjAwQzE4MjA1NDA2MDBGMkI0MjQgLyogTW9j
a1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREYyQjAwRDE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja1NvdXJjZUJ1ZmZlclByaXZh
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja1NvdXJjZUJ1ZmZlclBy
aXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RGMkIwMEUxODIwNTQwNjAw
RjJCNDI0IC8qIE1vY2tUcmFja3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTW9ja1RyYWNrcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERjJC
MDBGMTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrVHJhY2tzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1vY2tUcmFja3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0RGNjVDQzkxNDVCNDNBNzAwQzRDN0FBIC8qIE1lZGlhQ29udHJvbGxlckludGVyZmFjZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUNvbnRyb2xsZXJJbnRlcmZhY2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RGNjVDQ0MxNDVCNkFGRTAwQzRDN0FB
IC8qIEpTSFRNTE1lZGlhRWxlbWVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0hUTUxNZWRpYUVsZW1lbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRTA1N0ZBMzEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERv
Y3VtZW50TWFya2VyQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xNTEyMiw2ICsxNTE0Miw3IEBACiAJCTU5Qzc3RjEwMTA1NDU5MUMwMDUwNjEwNCAvKiBtb2Nr
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDREYyQjAw
NTE4MjA1M0RGMDBGMkI0MjQgLyogbWVkaWFzb3VyY2UgKi8sCiAJCQkJMDdDNTlCNjExN0Y0Q0Y4
NzAwMEZCQ0JCIC8qIE1vY2tNZWRpYVN0cmVhbUNlbnRlci5jcHAgKi8sCiAJCQkJMDdDNTlCNjIx
N0Y0Q0Y4NzAwMEZCQ0JCIC8qIE1vY2tNZWRpYVN0cmVhbUNlbnRlci5oICovLAogCQkJCTU5MzA5
QTEwMTFGNEFFNTgwMDI1MDYwMyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwICov
LApAQCAtMjAyMjIsNiArMjAyNDMsMjMgQEAKIAkJCW5hbWUgPSBNZWRpYUNvbnRyb2xzOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQ0RGMkIwMDUxODIwNTNERjAwRjJCNDI0
IC8qIG1lZGlhc291cmNlICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9
ICgKKwkJCQlDREYyQjAwNjE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja0JveC5jcHAgKi8sCisJCQkJ
Q0RGMkIwMDcxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tCb3guaCAqLywKKwkJCQlDREYyQjAwODE4
MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwICovLAorCQkJ
CUNERjJCMDA5MTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5o
ICovLAorCQkJCUNERjJCMDBBMTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFTb3VyY2VQcml2
YXRlLmNwcCAqLywKKwkJCQlDREYyQjAwQjE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhU291
cmNlUHJpdmF0ZS5oICovLAorCQkJCUNERjJCMDBDMTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrU291
cmNlQnVmZmVyUHJpdmF0ZS5jcHAgKi8sCisJCQkJQ0RGMkIwMEQxODIwNTQwNjAwRjJCNDI0IC8q
IE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmggKi8sCisJCQkJQ0RGMkIwMEUxODIwNTQwNjAwRjJC
NDI0IC8qIE1vY2tUcmFja3MuY3BwICovLAorCQkJCUNERjJCMDBGMTgyMDU0MDYwMEYyQjQyNCAv
KiBNb2NrVHJhY2tzLmggKi8sCisJCQkpOworCQkJcGF0aCA9IG1lZGlhc291cmNlOworCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJQ0U3OUQ2ODYxN0YyMjBFRDAwODE1QzAwIC8q
IGlvcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yMjMx
Miw2ICsyMjM1MCw3IEBACiAJCQkJODVFNzExOEYwQUM1RDUzNTAwNTMyNzBGIC8qIERPTUNoYXJh
Y3RlckRhdGFJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwODlDRDkwQTk4QzQyODAw
QTI3NUFBIC8qIERPTUNvbW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTM3MTdEMTZC
MkMwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNE
RjJCMDE1MTgyMDU0MDYwMEYyQjQyNCAvKiBNb2NrTWVkaWFTb3VyY2VQcml2YXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NUU3MTE5MDBBQzVENTM1MDA1MzI3MEYgLyogRE9NQ29tbWVudEludGVy
bmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzFBMzdBRjA5N0M3MTVGMDAxOUYzRDggLyogRE9N
Q29yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2MEQ2RTkwRDI4RDgzNDAwQjk5MThGIC8qIERP
TUNvcmVFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjI2MjQsNiArMjI2NjMsNyBAQAog
CQkJCTA3OEUwOTE4MTdEMTREMUMwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbVRyYWNrLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4QUM4MjJGRDE4MEZDMDMzMDBGQjY0RDUgLyogUmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRDcxOUQ5MTgxMTA2RTAwMDE2REM1MSAv
KiBJREJJbmRleC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RGMkIwMTkxODIwNTQwNzAwRjJCNDI0
IC8qIE1vY2tUcmFja3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNkZFMDgyMEU2Q0NDMjgwMEJG
NjA4OCAvKiBET01XZWJLaXRDU1NLZXlmcmFtZXNSdWxlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQ5ODM5MTUwMEYxRTc2QjQwMEMyMzc4MiAvKiBET01XZWJLaXRDU1NNYXRyaXguaCBp
biBIZWFkZXJzICovLAogCQkJCTQ5ODM5MTUyMEYxRTc2QjQwMEMyMzc4MiAvKiBET01XZWJLaXRD
U1NNYXRyaXhJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjYzMyw2ICsyMjY3Myw3IEBA
CiAJCQkJMzE2MTFFNjMwRTFDNEUxNDAwRjZBNTc5IC8qIERPTVdlYktpdENTU1RyYW5zZm9ybVZh
bHVlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTNGMkIzM0VCMTY1QUYxNTYwMEUzOTg3
QyAvKiBET01XZWJLaXRDU1NWaWV3cG9ydFJ1bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTNGMkIz
M0VEMTY1QUYxNTYwMEUzOTg3QyAvKiBET01XZWJLaXRDU1NWaWV3cG9ydFJ1bGVJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQ0RGMkIwMTcxODIwNTQwNzAwRjJCNDI0IC8qIE1vY2tTb3Vy
Y2VCdWZmZXJQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4QTE5NTkzMjE0N0VBMTZFMDBE
MUVBNjEgLyogRE9NV2ViS2l0TmFtZWRGbG93LmggaW4gSGVhZGVycyAqLywKIAkJCQk4QTE5NTkz
NDE0N0VBMTZFMDBEMUVBNjEgLyogRE9NV2ViS2l0TmFtZWRGbG93SW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTMxQzBGRjRDMEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRUcmFuc2l0
aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjQxODUsNiArMjQyMjYsNyBAQAogCQkJCTUx
NEM3NjdBMENFOTIzQTEwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZUNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTE0Qzc2N0IwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlSW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRTQxNDM0MTZBNjU5NjMwMEM2MzNDNyAvKiBS
ZXNvdXJjZUhhbmRsZVR5cGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREYyQjAxMTE4MjA1NDA2
MDBGMkI0MjQgLyogTW9ja0JveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU2RDM3M0YwQURCQTVE
RTAwQTQ1NTREIC8qIFJlc291cmNlTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMEEzQTcz
MTE0MDVBMzk4MDBGQjhFRDMgLyogUmVzb3VyY2VMb2FkZXJPcHRpb25zLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MUFGNTAzNjE2RjEwMEY2MDA5NUIyRTggLyogUmVzb3VyY2VMb2FkZXJUeXBlcy5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNDc0OSw2ICsyNDc5MSw3IEBACiAJCQkJQTgyNEI0NjUwRTJF
RjJFQTAwODFBN0I3IC8qIFRleHRSdW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0OEIxQjdBMEYz
QTJGOUIwMDQ3QTlFMiAvKiBUZXh0U2l6ZUFkanVzdG1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUIyQzNEQTRCMEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0U3RyZWFtLmggaW4gSGVhZGVycyAqLywK
KwkJCQlDREYyQjAxMzE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja01lZGlhUGxheWVyTWVkaWFTb3Vy
Y2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NTlFOTQwMTRFRjFDRjgwMDI2QTJERCAvKiBUZXh0
VHJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NTlFOTQzMTRFRjFDRjgwMDI2QTJERCAvKiBU
ZXh0VHJhY2tDdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3MUE5RUMzMTY4RkJDNTUwMDI2MjlG
OSAvKiBUZXh0VHJhY2tDdWVHZW5lcmljLmggaW4gSGVhZGVycyAqLywKQEAgLTI1ODIxLDYgKzI1
ODY0LDcgQEAKIAkJCQlEMzU5RDc5MjEyOUNBM0MwMDAwNkU1RDIgLyogRE9NSFRNTERldGFpbHNF
bGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVCQTREMEMwQUE2ODg2ODAwODgwNTJEIC8q
IERPTUhUTUxEaXJlY3RvcnlFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVCQTREMEUw
QUE2ODg2ODAwODgwNTJEIC8qIERPTUhUTUxEaXZFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJ
CQkJQ0RGMkIwMTQxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tNZWRpYVNvdXJjZVByaXZhdGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJODVCQTREMTAwQUE2ODg2ODAwODgwNTJEIC8qIERPTUhUTUxE
TGlzdEVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NUJDQkMxNDBBQkJBODdEMDAzODEx
NjAgLyogRE9NSFRNTERvY3VtZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVERjJFRUUwQUEz
ODdDQjAwQUQ2NEM1IC8qIERPTUhUTUxFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0yNTky
Niw2ICsyNTk3MCw3IEBACiAJCQkJMzFDMEZGNEEwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktp
dEFuaW1hdGlvbkV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTJFOEFFNDExNkE0OThDRjAw
NkJCM0FBIC8qIERPTVdlYktpdENTU0ZpbHRlclJ1bGUubW0gaW4gU291cmNlcyAqLywKIAkJCQkz
MTA2MDM3QTE0MzI4MUNEMDBBQkY0QkEgLyogRE9NV2ViS2l0Q1NTRmlsdGVyVmFsdWUubW0gaW4g
U291cmNlcyAqLywKKwkJCQlDREYyQjAxMDE4MjA1NDA2MDBGMkI0MjQgLyogTW9ja0JveC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkzMTZGRTA3RTBFNkNDQzI4MDBCRjYwODggLyogRE9NV2ViS2l0
Q1NTS2V5ZnJhbWVSdWxlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUwODEwRTZDQ0MyODAw
QkY2MDg4IC8qIERPTVdlYktpdENTU0tleWZyYW1lc1J1bGUubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk0OTgzOTE1MTBGMUU3NkI0MDBDMjM3ODIgLyogRE9NV2ViS2l0Q1NTTWF0cml4Lm1tIGluIFNv
dXJjZXMgKi8sCkBAIC0yNjI1NCw2ICsyNjI5OSw3IEBACiAJCQkJQTg3MURDMjkwQTE1MjA1NzAw
QjEyQTY4IC8qIEhUTUxUaXRsZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3QjM4
NzcxMjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxUb2tlbml6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMDcwNzU2OEIxNDIyNjJENjAwNDE0MTYxIC8qIEhUTUxUcmFja0VsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJQ0RGMkIwMTIxODIwNTQwNjAwRjJCNDI0IC8qIE1vY2tNZWRpYVBsYXll
ck1lZGlhU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0IzNzI1MTIyODcyMTcwMEI4
MUZGOCAvKiBIVE1MVHJlZUJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOUI3RTc4QkQx
NkYxNkNDNjAwMTI2OTE0IC8qIEhUTUxUcmVlQnVpbGRlclNpbXVsYXRvci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBOEVBNzlGMzBBMTkxNkRGMDBBOEVGNUYgLyogSFRNTFVMaXN0RWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTI3NjUzLDYgKzI3Njk5LDcgQEAKIAkJCQk0MzFBMzA4ODEz
QjhGOTc4MDA3NzkxRTQgLyogU1ZHQW5pbWF0ZWRCb29sZWFuLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQzQTYyNUY5MTNCMzMwNDAwMEFDOTRCOCAvKiBTVkdBbmltYXRlZENvbG9yLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTcxQ0M3QTIwMTUyQTBCRkUwMDlFRUFGOSAvKiBTVkdBbmltYXRlZEVu
dW1lcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNERjJCMDE2MTgyMDU0MDcwMEYyQjQy
NCAvKiBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0M0Y2
RkQ5NjEzQkNEMEIxMDAyMjQwNTIgLyogU1ZHQW5pbWF0ZWRJbnRlZ2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBMzU4NkUxMTUyNjRGOTUwMDIyQTY1OSAvKiBTVkdBbmltYXRlZEludGVnZXJP
cHRpb25hbEludGVnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOEFDODIyRkMxODBGQzAzMzAw
RkI2NEQ1IC8qIFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAt
Mjc3ODIsNiArMjc4MjksNyBAQAogCQkJCTg0NzZDOUVGMTFERjZBNTgwMDU1NUIwMiAvKiBTVkdQ
YXRoUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTgwMEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdQYXRoU2VnTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NDc2QzlFNTExREY2
QTBCMDA1NTVCMDIgLyogU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUNERjJCMDE4MTgyMDU0MDcwMEYyQjQyNCAvKiBNb2NrVHJhY2tzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTA4RkYxMDIwMTI5NTBGNUEwMEYwMDI3NiAvKiBTVkdQYXRoU2VnTGlzdFByb3Bl
cnR5VGVhck9mZi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NEI2Qjk3NzEyMEYxM0U1MDBCOEVG
QUYgLyogU1ZHUGF0aFNlZ0xpc3RTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODQxOUQy
QjkxMjBFMEM3NjAwMTQxRjhGIC8qIFNWR1BhdGhTdHJpbmdCdWlsZGVyLmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNTY1YTE1
OTY2Yzc0ZmU3NjRjMTEzYmZkMDZkMjM5NTJlOTc5NjMxOC4uZDE2OTRhODNjYmE2M2Y1OTliYjYz
MWNlY2Y0MjhjMjhhYTA3OGVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCkBAIC0xNDM3LDggKzE0MzcsOCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlv
VHJhY2tFbmFibGVkQ2hhbmdlZChBdWRpb1RyYWNrKiB0cmFjaykKIHsKICAgICBpZiAoIVJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIEFTU0VSVF9VTlVTRUQodHJhY2ssIG1fYXVkaW9U
cmFja3MtPmNvbnRhaW5zKHRyYWNrKSk7Ci0gICAgbV9hdWRpb1RyYWNrcy0+c2NoZWR1bGVDaGFu
Z2VFdmVudCgpOworICAgIGlmIChtX2F1ZGlvVHJhY2tzICYmIG1fYXVkaW9UcmFja3MtPmNvbnRh
aW5zKHRyYWNrKSkKKyAgICAgICAgbV9hdWRpb1RyYWNrcy0+c2NoZWR1bGVDaGFuZ2VFdmVudCgp
OwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRU
cmFjayogdHJhY2spCkBAIC0xNDc4LDggKzE0NzgsOCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFjayogdHJhY2spCiB7CiAgICAgaWYg
KCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJh
Y2tFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlRfVU5VU0VEKHRyYWNrLCBt
X3ZpZGVvVHJhY2tzLT5jb250YWlucyh0cmFjaykpOwotICAgIG1fdmlkZW9UcmFja3MtPnNjaGVk
dWxlQ2hhbmdlRXZlbnQoKTsKKyAgICBpZiAobV92aWRlb1RyYWNrcyAmJiBtX3ZpZGVvVHJhY2tz
LT5jb250YWlucyh0cmFjaykpCisgICAgICAgIG1fdmlkZW9UcmFja3MtPnNjaGVkdWxlQ2hhbmdl
RXZlbnQoKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tLaW5kQ2hhbmdl
ZChUZXh0VHJhY2sqIHRyYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDZlYzcxYzg2ZTEwN2EwYmQzZTRmYTRkMzllMGI5Njlm
YzQwOTU0YjQuLmQ2NGFiMzRhNTQ4YmRiNDU0YTZmNzdjMjk3NGZiMGZkYzE0MTNhNDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAg
LTEyMTUsNiArMTIxNSwxMSBAQCBzaXplX3QgTWVkaWFQbGF5ZXI6OmV4dHJhTWVtb3J5Q29zdCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+ZXh0cmFNZW1vcnlDb3N0KCk7CiB9CiAKK3Zv
aWQgTWVkaWFQbGF5ZXJGYWN0b3J5U3VwcG9ydDo6Y2FsbFJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVk
aWFFbmdpbmVSZWdpc3RlciByZWdpc3Rlck1lZGlhRW5naW5lKQoreworICAgIHJlZ2lzdGVyTWVk
aWFFbmdpbmUoYWRkTWVkaWFFbmdpbmUpOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggMmQ4MjNiZDRiZWEy
YTk2ODQ3YmU5YmUzMTMzNjhjMzBhODg5YzBmYS4uNWIyMjFiYmM0ZDAzNzM0OWU1ZmJhMzkxNmY1
ZDBjMGRiYTY1NzI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oCkBAIC01NDksNiArNTQ5LDEyIEBAIHR5cGVkZWYgdm9pZCAoKk1lZGlhRW5n
aW5lQ2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSkoY29uc3QgU3RyaW5nJik7CiAKIHR5cGVkZWYgdm9p
ZCAoKk1lZGlhRW5naW5lUmVnaXN0cmFyKShDcmVhdGVNZWRpYUVuZ2luZVBsYXllciwgTWVkaWFF
bmdpbmVTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUsCiAgICAgTWVkaWFF
bmdpbmVHZXRTaXRlc0luTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUsIE1l
ZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSk7Cit0eXBlZGVmIHZvaWQgKCpNZWRpYUVu
Z2luZVJlZ2lzdGVyKShNZWRpYUVuZ2luZVJlZ2lzdHJhcik7CisKK2NsYXNzIE1lZGlhUGxheWVy
RmFjdG9yeVN1cHBvcnQgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIGNhbGxSZWdpc3Rlck1l
ZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0ZXIpOworfTsKIAogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yODZlODFiNDkzM2UzMDQ2NmQ5OGIxYTM4ZGVjMjQ5ODU5MTAyZGVjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrQm94
LmNwcApAQCAtMCwwICsxLDE0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJNb2NrQm94LmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorCisjaW5jbHVk
ZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvRGF0YVZpZXcuaD4K
KyNpbmNsdWRlIDxydW50aW1lL0ludDhBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNb2NrQm94OjpNb2NrQm94KEFy
cmF5QnVmZmVyKiBkYXRhKQoreworICAgIG1fdHlwZSA9IHBlZWtUeXBlKGRhdGEpOworICAgIG1f
bGVuZ3RoID0gcGVla0xlbmd0aChkYXRhKTsKKyAgICBBU1NFUlQobV9sZW5ndGggPj0gOCk7Cit9
CisKK1N0cmluZyBNb2NrQm94OjpwZWVrVHlwZShBcnJheUJ1ZmZlciogZGF0YSkKK3sKKyAgICBT
dHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgUmVmUHRyPEludDhBcnJheT4gYXJyYXkgPSBKU0M6
OkludDhBcnJheTo6Y3JlYXRlKGRhdGEsIDAsIDQpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
NDsgKytpKQorICAgICAgICBidWlsZGVyLmFwcGVuZChhcnJheS0+aXRlbShpKSk7CisgICAgcmV0
dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworc2l6ZV90IE1vY2tCb3g6OnBlZWtMZW5ndGgo
QXJyYXlCdWZmZXIqIGRhdGEpCit7CisgICAgUmVmUHRyPEpTQzo6RGF0YVZpZXc+IHZpZXcgPSBK
U0M6OkRhdGFWaWV3OjpjcmVhdGUoZGF0YSwgMCwgZGF0YS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBy
ZXR1cm4gdmlldy0+Z2V0PHVpbnQzMl90Pig0LCB0cnVlKTsKK30KKworTW9ja1RyYWNrQm94OjpN
b2NrVHJhY2tCb3goQXJyYXlCdWZmZXIqIGRhdGEpCisgICAgOiBNb2NrQm94KGRhdGEpCit7Cisg
ICAgQVNTRVJUKG1fbGVuZ3RoID09IDE3KTsKKworICAgIFJlZlB0cjxKU0M6OkRhdGFWaWV3PiB2
aWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGRhdGEsIDAsIGRhdGEtPmJ5dGVMZW5ndGgoKSk7
CisgICAgbV90cmFja0lEID0gdmlldy0+Z2V0PGludDMyX3Q+KDgsIHRydWUpOworCisgICAgU3Ry
aW5nQnVpbGRlciBidWlsZGVyOworICAgIFJlZlB0cjxJbnQ4QXJyYXk+IGFycmF5ID0gSlNDOjpJ
bnQ4QXJyYXk6OmNyZWF0ZShkYXRhLCAxMiwgNCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0
OyArK2kpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGFycmF5LT5pdGVtKGkpKTsKKyAgICBtX2Nv
ZGVjID0gYnVpbGRlci50b1N0cmluZygpOworCisgICAgbV9raW5kID0gc3RhdGljX2Nhc3Q8VHJh
Y2tLaW5kPih2aWV3LT5nZXQ8dWludDhfdD4oMTYsIHRydWUpKTsKK30KKworY29uc3QgU3RyaW5n
JiBNb2NrVHJhY2tCb3g6OnR5cGUoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5n
LCB0cmFrLCAoQVNDSUlMaXRlcmFsKCJ0cmFrIikpKTsKKyAgICByZXR1cm4gdHJhazsKK30KKwor
TW9ja0luaXRpYWxpemF0aW9uQm94OjpNb2NrSW5pdGlhbGl6YXRpb25Cb3goQXJyYXlCdWZmZXIq
IGRhdGEpCisgICAgOiBNb2NrQm94KGRhdGEpCit7CisgICAgQVNTRVJUKG1fbGVuZ3RoID49IDEz
KTsKKworICAgIFJlZlB0cjxKU0M6OkRhdGFWaWV3PiB2aWV3ID0gSlNDOjpEYXRhVmlldzo6Y3Jl
YXRlKGRhdGEsIDAsIGRhdGEtPmJ5dGVMZW5ndGgoKSk7CisgICAgaW50MzJfdCB0aW1lVmFsdWUg
PSB2aWV3LT5nZXQ8aW50MzJfdD4oOCwgdHJ1ZSk7CisgICAgaW50MzJfdCB0aW1lU2NhbGUgPSB2
aWV3LT5nZXQ8aW50MzJfdD4oMTIsIHRydWUpOworICAgIG1fZHVyYXRpb24gPSBNZWRpYVRpbWUo
dGltZVZhbHVlLCB0aW1lU2NhbGUpOworICAgIAorICAgIHNpemVfdCBvZmZzZXQgPSAxNjsKKwor
ICAgIHdoaWxlIChvZmZzZXQgPCBtX2xlbmd0aCkgeworICAgICAgICBSZWZQdHI8QXJyYXlCdWZm
ZXI+IHN1YkJ1ZmZlciA9IGRhdGEtPnNsaWNlKG9mZnNldCk7CisgICAgICAgIGlmIChNb2NrQm94
OjpwZWVrVHlwZShzdWJCdWZmZXIuZ2V0KCkpICE9IE1vY2tUcmFja0JveDo6dHlwZSgpKQorICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgTW9ja1RyYWNrQm94IHRyYWNrQm94KHN1YkJ1ZmZl
ci5nZXQoKSk7CisgICAgICAgIG9mZnNldCArPSB0cmFja0JveC5sZW5ndGgoKTsKKyAgICAgICAg
bV90cmFja3MuYXBwZW5kKHRyYWNrQm94KTsKKyAgICB9Cit9CisKK2NvbnN0IFN0cmluZyYgTW9j
a0luaXRpYWxpemF0aW9uQm94Ojp0eXBlKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgaW5pdCwgKEFTQ0lJTGl0ZXJhbCgiaW5pdCIpKSk7CisgICAgcmV0dXJuIGluaXQ7Cit9
CisKK01vY2tTYW1wbGVCb3g6Ok1vY2tTYW1wbGVCb3goQXJyYXlCdWZmZXIqIGRhdGEpCisgICAg
OiBNb2NrQm94KGRhdGEpCit7CisgICAgQVNTRVJUKG1fbGVuZ3RoID09IDI5KTsKKworICAgIFJl
ZlB0cjxKU0M6OkRhdGFWaWV3PiB2aWV3ID0gSlNDOjpEYXRhVmlldzo6Y3JlYXRlKGRhdGEsIDAs
IGRhdGEtPmJ5dGVMZW5ndGgoKSk7CisgICAgaW50MzJfdCB0aW1lU2NhbGUgPSB2aWV3LT5nZXQ8
aW50MzJfdD4oOCwgdHJ1ZSk7CisKKyAgICBpbnQzMl90IHRpbWVWYWx1ZSA9IHZpZXctPmdldDxp
bnQzMl90PigxMiwgdHJ1ZSk7CisgICAgbV9wcmVzZW50YXRpb25UaW1lc3RhbXAgPSBNZWRpYVRp
bWUodGltZVZhbHVlLCB0aW1lU2NhbGUpOworCisgICAgdGltZVZhbHVlID0gdmlldy0+Z2V0PGlu
dDMyX3Q+KDE2LCB0cnVlKTsKKyAgICBtX2RlY29kZVRpbWVzdGFtcCA9IE1lZGlhVGltZSh0aW1l
VmFsdWUsIHRpbWVTY2FsZSk7CisKKyAgICB0aW1lVmFsdWUgPSB2aWV3LT5nZXQ8aW50MzJfdD4o
MjAsIHRydWUpOworICAgIG1fZHVyYXRpb24gPSBNZWRpYVRpbWUodGltZVZhbHVlLCB0aW1lU2Nh
bGUpOworCisgICAgbV90cmFja0lEID0gdmlldy0+Z2V0PGludDMyX3Q+KDI0LCB0cnVlKTsKKyAg
ICBtX2ZsYWdzID0gdmlldy0+Z2V0PHVpbnQ4X3Q+KDI4LCB0cnVlKTsKK30KKworY29uc3QgU3Ry
aW5nJiBNb2NrU2FtcGxlQm94Ojp0eXBlKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgc21wbCwgKEFTQ0lJTGl0ZXJhbCgic21wbCIpKSk7CisgICAgcmV0dXJuIHNtcGw7Cit9
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVk
aWFzb3VyY2UvTW9ja0JveC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmMGMwZDNjZTIwODUxMmU3Mjg0NjUxZGNm
N2Y4NzdlZjI4MjUwMTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL21lZGlhc291cmNlL01vY2tCb3guaApAQCAtMCwwICsxLDE0NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgTW9ja0JveF9oCisjZGVmaW5lIE1vY2tCb3hfaAorCisjaWYgRU5BQkxFKE1FRElB
X1NPVVJDRSkKKworI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBBcnJheUJ1ZmZlcjsKK30K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBBIE1vY2tCb3ggcmVwcmVzZW50cyBhIElTTy1C
TUZGIGxpa2UgZGF0YSBzdHJ1Y3R1cmUuIERhdGEgaW4gdGhlCisvLyBzdHJ1Y3R1cmUgaXMgbGl0
dGxlLWVuZGlhbi4gVGhlIGxheW91dCBvZiB0aGUgZGF0YSBzdHJ1Y3R1cmUgYXMgZm9sbG93czoK
Ky8vCisvLyA0IGJ5dGVzIDogNENDIDogaWRlbnRpZmllcgorLy8gNCBieXRlcyA6IHVuc2lnbmVk
IDogbGVuZ3RoCisvLyAKK2NsYXNzIE1vY2tCb3ggeworcHVibGljOgorICAgIHN0YXRpYyBTdHJp
bmcgcGVla1R5cGUoSlNDOjpBcnJheUJ1ZmZlciopOworICAgIHN0YXRpYyBzaXplX3QgcGVla0xl
bmd0aChKU0M6OkFycmF5QnVmZmVyKik7CisKKyAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gbV9sZW5ndGg7IH0KKyAgICBjb25zdCBTdHJpbmcmIHR5cGUoKSBjb25zdCB7IHJldHVy
biBtX3R5cGU7IH0KKworcHJvdGVjdGVkOgorICAgIE1vY2tCb3goSlNDOjpBcnJheUJ1ZmZlciop
OworCisgICAgc2l6ZV90IG1fbGVuZ3RoOworICAgIFN0cmluZyBtX3R5cGU7Cit9OworCisvLyBB
IE1vY2tUcmFja0JveCBleHRlbmRzIE1vY2tCb3ggYW5kIGV4cGVjdHMgdGhlIGZvbGxvd2luZwor
Ly8gZGF0YSBzdHJ1Y3R1cmU6CisvLworLy8gNCBieXRlcyA6IDRDQyA6IGlkZW50aWZpZXIgPSAn
dHJhaycKKy8vIDQgYnl0ZXMgOiB1bnNpZ25lZCA6IGxlbmd0aCA9IDE3CisvLyA0IGJ5dGVzIDog
c2lnbmVkIDogdHJhY2sgSUQKKy8vIDQgYnl0ZXMgOiA0Q0MgOiBjb2RlYworLy8gMSBieXRlICA6
IHVuc2lnbmVkIDoga2luZAorLy8gCitjbGFzcyBNb2NrVHJhY2tCb3ggRklOQUwgOiBwdWJsaWMg
TW9ja0JveCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgdHlwZSgpOworICAg
IE1vY2tUcmFja0JveChKU0M6OkFycmF5QnVmZmVyKik7CisKKyAgICBpbnQzMl90IHRyYWNrSUQo
KSBjb25zdCB7IHJldHVybiBtX3RyYWNrSUQ7IH0KKworICAgIGNvbnN0IFN0cmluZyYgY29kZWMo
KSBjb25zdCB7IHJldHVybiBtX2NvZGVjOyB9CisKKyAgICBlbnVtIFRyYWNrS2luZCB7IEF1ZGlv
LCBWaWRlbywgVGV4dCB9OworICAgIFRyYWNrS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9r
aW5kOyB9CisKK3Byb3RlY3RlZDoKKyAgICB1aW50OF90IG1fdHJhY2tJRDsKKyAgICBTdHJpbmcg
bV9jb2RlYzsKKyAgICBUcmFja0tpbmQgbV9raW5kOworfTsKKworLy8gQSBNb2NrSW5pdGlhbGl6
YXRpb25Cb3ggZXh0ZW5kcyBNb2NrQm94IGFuZCBjb250YWlucyAwIG9yIG1vcmUKKy8vIE1vY2tU
cmFja0JveGVzLiBJdCBleHBlY3RzIHRoZSBmb2xsb3dpbmcgZGF0YSBzdHJ1Y3R1cmU6CisvLwor
Ly8gNCBieXRlcyA6IDRDQyA6IGlkZW50aWZpZXIgPSAnaW5pdCcKKy8vIDQgYnl0ZXMgOiB1bnNp
Z25lZCA6IGxlbmd0aCA9IDE2ICsgKDEzICogbnVtIHRyYWNrcykKKy8vIDQgYnl0ZXMgOiBzaWdu
ZWQgOiBkdXJhdGlvbiB0aW1lIHZhbHVlCisvLyA0IGJ5dGVzIDogc2lnbmVkIDogZHVyYXRpb24g
dGltZSBzY2FsZQorLy8gTiBieXRlcyA6IE1vY2tUcmFja0JveGVzIDogdHJhY2tzCisvLworY2xh
c3MgTW9ja0luaXRpYWxpemF0aW9uQm94IEZJTkFMIDogcHVibGljIE1vY2tCb3ggeworcHVibGlj
OgorICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIHR5cGUoKTsKKyAgICBNb2NrSW5pdGlhbGl6YXRp
b25Cb3goSlNDOjpBcnJheUJ1ZmZlciopOworCisgICAgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9kdXJhdGlvbjsgfQorICAgIGNvbnN0IFZlY3RvcjxNb2NrVHJhY2tCb3g+
JiB0cmFja3MoKSBjb25zdCB7IHJldHVybiBtX3RyYWNrczsgfQorCitwcm90ZWN0ZWQ6CisgICAg
TWVkaWFUaW1lIG1fZHVyYXRpb247CisgICAgVmVjdG9yPE1vY2tUcmFja0JveD4gbV90cmFja3M7
Cit9OworCisvLyBBIE1vY2tTYW1wbGVCb3ggZXh0ZW5kcyBNb2NrQm94IGFuZCBleHBlY3RzIHRo
ZSBmb2xsb3dpbmcgZGF0YSBzdHJ1Y3R1cmU6CisvLworLy8gNCBieXRlcyA6IDRDQyA6IGlkZW50
aWZpZXIgPSAnc21wbCcKKy8vIDQgYnl0ZXMgOiB1bnNpZ25lZCA6IGxlbmd0aCA9IDI5CisvLyA0
IGJ5dGVzIDogc2lnbmVkIDogdGltZSBzY2FsZQorLy8gNCBieXRlcyA6IHNpZ25lZCA6IHByZXNl
bnRhdGlvbiB0aW1lIHZhbHVlCisvLyA0IGJ5dGVzIDogc2lnbmVkIDogZGVjb2RlIHRpbWUgdmFs
dWUKKy8vIDQgYnl0ZXMgOiBzaWduZWQgOiBkdXJhdGlvbiB0aW1lIHZhbHVlCisvLyA0IGJ5dGVz
IDogc2lnbmVkIDogdHJhY2sgSUQKKy8vIDEgYnl0ZSAgOiB1bnNpZ25lZCA6IGZsYWdzCisvLwor
Y2xhc3MgTW9ja1NhbXBsZUJveCBGSU5BTCA6IHB1YmxpYyBNb2NrQm94IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgY29uc3QgU3RyaW5nJiB0eXBlKCk7CisgICAgTW9ja1NhbXBsZUJveChKU0M6OkFy
cmF5QnVmZmVyKik7CisKKyAgICBNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZXN0YW1wKCkgY29u
c3QgeyByZXR1cm4gbV9wcmVzZW50YXRpb25UaW1lc3RhbXA7IH0KKyAgICBNZWRpYVRpbWUgZGVj
b2RlVGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVUaW1lc3RhbXA7IH0KKyAgICBN
ZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2R1cmF0aW9uOyB9CisgICAgaW50
MzJfdCB0cmFja0lEKCkgY29uc3QgeyByZXR1cm4gbV90cmFja0lEOyB9CisgICAgdWludDhfdCBm
bGFncygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3M7IH0KKworICAgIGVudW0geyBJc1N5bmMgPSAx
IDw8IDAgfTsKKyAgICBib29sIGlzU3luYygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBJc1N5
bmM7IH0KKworcHJvdGVjdGVkOgorICAgIE1lZGlhVGltZSBtX3ByZXNlbnRhdGlvblRpbWVzdGFt
cDsKKyAgICBNZWRpYVRpbWUgbV9kZWNvZGVUaW1lc3RhbXA7CisgICAgTWVkaWFUaW1lIG1fZHVy
YXRpb247CisgICAgaW50MzJfdCBtX3RyYWNrSUQ7CisgICAgdWludDhfdCBtX2ZsYWdzOworfTsK
KworfQorCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVk
aWFTb3VyY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2ZmRmMTRjNzk5NTc3Mjc0ZTQ3MWUxMjQ4MTVkY2I0
NDQ0ZDdlYWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcApAQCAtMCwwICsxLDIz
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNb2NrTWVkaWFQ
bGF5ZXJNZWRpYVNvdXJjZS5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKworI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgorI2luY2x1ZGUgIkhUTUxNZWRpYVNvdXJj
ZS5oIgorI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAiTW9ja01lZGlhU291cmNl
UHJpdmF0ZS5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCisvLyBNZWRpYVBsYXllciBFbmlnbmUgU3VwcG9ydAordm9pZCBNb2NrTWVk
aWFQbGF5ZXJNZWRpYVNvdXJjZTo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lz
dHJhciByZWdpc3RyYXIpCit7CisgICAgcmVnaXN0cmFyKGNyZWF0ZSwgZ2V0U3VwcG9ydGVkVHlw
ZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCk7Cit9CisKK1Bhc3NPd25QdHI8TWVkaWFQbGF5ZXJQ
cml2YXRlSW50ZXJmYWNlPiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6Y3JlYXRlKE1lZGlh
UGxheWVyKiBwbGF5ZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNb2NrTWVkaWFQbGF5
ZXJNZWRpYVNvdXJjZShwbGF5ZXIpKTsKK30KKworc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiBtaW1l
VHlwZUNhY2hlKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8U3RyaW5nPiwg
Y2FjaGUsICgpKTsKKyAgICBzdGF0aWMgYm9vbCBpc0luaXRpYWxpemVkID0gZmFsc2U7CisKKyAg
ICBpZiAoIWlzSW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgaXNJbml0aWFsaXplZCA9IHRydWU7Cisg
ICAgICAgIGNhY2hlLmFkZChBU0NJSUxpdGVyYWwoInZpZGVvL21vY2siKSk7CisgICAgfQorCisg
ICAgcmV0dXJuIGNhY2hlOworfQorCit2b2lkIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpn
ZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZz4mIHN1cHBvcnRlZFR5cGVzKQoreworICAg
IHN1cHBvcnRlZFR5cGVzID0gbWltZVR5cGVDYWNoZSgpOworfQorCitNZWRpYVBsYXllcjo6U3Vw
cG9ydHNUeXBlIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpzdXBwb3J0c1R5cGUoY29uc3Qg
TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycykKK3sKKyAgICBpZiAoIXBh
cmFtZXRlcnMuaXNNZWRpYVNvdXJjZSkKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05v
dFN1cHBvcnRlZDsKKworICAgIGlmICghbWltZVR5cGVDYWNoZSgpLmNvbnRhaW5zKHBhcmFtZXRl
cnMudHlwZSkpCisgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CisK
KyAgICBpZiAocGFyYW1ldGVycy5jb2RlY3MuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gTWVk
aWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkOworCisgICAgcmV0dXJuIHBhcmFtZXRlcnMuY29kZWNz
ID09ICJtb2NrIiA/IE1lZGlhUGxheWVyOjpJc1N1cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpNYXlC
ZVN1cHBvcnRlZDsKK30KKworTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6Ok1vY2tNZWRpYVBs
YXllck1lZGlhU291cmNlKE1lZGlhUGxheWVyKiBwbGF5ZXIpCisgICAgOiBtX3BsYXllcihwbGF5
ZXIpCisgICAgLCBtX2N1cnJlbnRUaW1lKDApCisgICAgLCBtX2R1cmF0aW9uKDApCisgICAgLCBt
X3JlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nKQorICAgICwgbV9uZXR3b3JrU3Rh
dGUoTWVkaWFQbGF5ZXI6OkVtcHR5KQorICAgICwgbV9wbGF5aW5nKGZhbHNlKQoreworfQorCitN
b2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6fk1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlKCkK
K3sKK30KKwordm9pZCBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6bG9hZChjb25zdCBTdHJp
bmcmKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIE1vY2tNZWRpYVBs
YXllck1lZGlhU291cmNlOjpsb2FkKGNvbnN0IFN0cmluZyYsIFBhc3NSZWZQdHI8SFRNTE1lZGlh
U291cmNlPiBzb3VyY2UpCit7CisgICAgbV9tZWRpYVNvdXJjZSA9IHNvdXJjZTsKKyAgICBtX21l
ZGlhU291cmNlUHJpdmF0ZSA9IE1vY2tNZWRpYVNvdXJjZVByaXZhdGU6OmNyZWF0ZSh0aGlzKTsK
KyAgICBtX21lZGlhU291cmNlLT5zZXRQcml2YXRlQW5kT3BlbigqbV9tZWRpYVNvdXJjZVByaXZh
dGUpOworfQorCit2b2lkIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpjYW5jZWxMb2FkKCkK
K3sKK30KKwordm9pZCBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6cGxheSgpCit7CisgICAg
bV9wbGF5aW5nID0gMTsKKyAgICBjYWxsT25NYWluVGhyZWFkKGJpbmQoJk1vY2tNZWRpYVBsYXll
ck1lZGlhU291cmNlOjphZHZhbmNlQ3VycmVudFRpbWUsIHRoaXMpKTsKK30KKwordm9pZCBNb2Nr
TWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6cGF1c2UoKQoreworICAgIG1fcGxheWluZyA9IDA7Cit9
CisKK0ludFNpemUgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6Om5hdHVyYWxTaXplKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gSW50U2l6ZSgpOworfQorCitib29sIE1vY2tNZWRpYVBsYXllck1l
ZGlhU291cmNlOjpoYXNWaWRlbygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWVkaWFTb3VyY2VQ
cml2YXRlID8gbV9tZWRpYVNvdXJjZVByaXZhdGUtPmhhc1ZpZGVvKCkgOiBmYWxzZTsKK30KKwor
Ym9vbCBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6aGFzQXVkaW8oKSBjb25zdAoreworICAg
IHJldHVybiBtX21lZGlhU291cmNlUHJpdmF0ZSA/IG1fbWVkaWFTb3VyY2VQcml2YXRlLT5oYXNB
dWRpbygpIDogZmFsc2U7Cit9CisKK3ZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnNl
dFZpc2libGUoYm9vbCkKK3sKK30KKworYm9vbCBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6
c2Vla2luZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1vY2tNZWRp
YVBsYXllck1lZGlhU291cmNlOjpwYXVzZWQoKSBjb25zdAoreworICAgIHJldHVybiAhbV9wbGF5
aW5nOworfQorCitNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIE1vY2tNZWRpYVBsYXllck1lZGlh
U291cmNlOjpuZXR3b3JrU3RhdGUoKSBjb25zdAoreworICAgIHJldHVybiBtX25ldHdvcmtTdGF0
ZTsKK30KKworTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgTW9ja01lZGlhUGxheWVyTWVkaWFTb3Vy
Y2U6OnJlYWR5U3RhdGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3JlYWR5U3RhdGU7Cit9CisK
K1Bhc3NSZWZQdHI8VGltZVJhbmdlcz4gTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmJ1ZmZl
cmVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRpYVNvdXJjZSA/IG1fbWVkaWFTb3VyY2Ut
PmJ1ZmZlcmVkKCkgOiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKK30KKworYm9vbCBNb2NrTWVkaWFQ
bGF5ZXJNZWRpYVNvdXJjZTo6ZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3ZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnNldFNpemUo
Y29uc3QgSW50U2l6ZSYpCit7Cit9CisKK3ZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6
OnBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKQoreworfQorCitkb3VibGUg
TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmN1cnJlbnRUaW1lRG91YmxlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9jdXJyZW50VGltZTsKK30KKworZG91YmxlIE1vY2tNZWRpYVBsYXllck1l
ZGlhU291cmNlOjpkdXJhdGlvbkRvdWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZHVyYXRp
b247Cit9CisKK3ZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnNlZWtEb3VibGUoZG91
YmxlIHRpbWUpCit7CisgICAgbV9jdXJyZW50VGltZSA9IHN0ZDo6bWluKHRpbWUsIG1fZHVyYXRp
b24pOworICAgIG1fcGxheWVyLT50aW1lQ2hhbmdlZCgpOworCisgICAgaWYgKG1fcGxheWluZykK
KyAgICAgICAgY2FsbE9uTWFpblRocmVhZChiaW5kKCZNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJj
ZTo6YWR2YW5jZUN1cnJlbnRUaW1lLCB0aGlzKSk7Cit9CisKK3ZvaWQgTW9ja01lZGlhUGxheWVy
TWVkaWFTb3VyY2U6OmFkdmFuY2VDdXJyZW50VGltZSgpCit7CisgICAgUmVmUHRyPFRpbWVSYW5n
ZXM+IGJ1ZmZlcmVkID0gdGhpcy0+YnVmZmVyZWQoKTsKKyAgICBzaXplX3QgcG9zID0gYnVmZmVy
ZWQtPmZpbmQobV9jdXJyZW50VGltZSk7CisgICAgaWYgKHBvcyA9PSBub3RGb3VuZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9jdXJyZW50VGltZSA9IHN0ZDo6bWluKG1fZHVyYXRpb24sIGJ1
ZmZlcmVkLT5lbmQocG9zLCBJR05PUkVfRVhDRVBUSU9OKSk7CisgICAgbV9wbGF5ZXItPnRpbWVD
aGFuZ2VkKCk7Cit9CisKK3ZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnVwZGF0ZUR1
cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikKK3sKKyAgICBpZiAobV9kdXJhdGlvbiA9PSBkdXJhdGlv
bikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kdXJhdGlvbiA9IGR1cmF0aW9uOworICAgIG1f
cGxheWVyLT5kdXJhdGlvbkNoYW5nZWQoKTsKK30KKwordm9pZCBNb2NrTWVkaWFQbGF5ZXJNZWRp
YVNvdXJjZTo6c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRl
KQoreworICAgIGlmIChyZWFkeVN0YXRlID09IG1fcmVhZHlTdGF0ZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9yZWFkeVN0YXRlID0gcmVhZHlTdGF0ZTsKKyAgICBtX3BsYXllci0+cmVhZHlT
dGF0ZUNoYW5nZWQoKTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxh
eWVyTWVkaWFTb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMDY3ZDhiZTA4MDkzNWY5MmFlOWE2Yjk3YzJi
MGQ2ZTg1MzBkMzA5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5oCkBAIC0wLDAgKzEs
OTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlX2gKKyNk
ZWZpbmUgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2VfaAorCisjaWYgRU5BQkxFKE1FRElBX1NP
VVJDRSkKKworI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZS5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIE1lZGlhU291cmNlOworY2xhc3MgTW9ja01lZGlhU291cmNlUHJpdmF0
ZTsKKworY2xhc3MgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UgOiBwdWJsaWMgTWVkaWFQbGF5
ZXJQcml2YXRlSW50ZXJmYWNlIHsKK3B1YmxpYzoKKyAgICAvLyBNZWRpYVBsYXllciBFbmdpbmUg
U3VwcG9ydAorICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVS
ZWdpc3RyYXIpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZT4gY3JlYXRlKE1lZGlhUGxheWVyKik7CisgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVk
VHlwZXMoSGFzaFNldDxTdHJpbmc+JiB0eXBlcyk7CisgICAgc3RhdGljIE1lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRl
cnMmKTsKKworICAgIHZpcnR1YWwgfk1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlKCk7CisKKyAg
ICB2b2lkIGFkdmFuY2VDdXJyZW50VGltZSgpOworICAgIHZvaWQgdXBkYXRlRHVyYXRpb24oZG91
YmxlKTsKKworICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZvaWQgc2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVh
ZHlTdGF0ZSk7CisKK3ByaXZhdGU6CisgICAgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UoTWVk
aWFQbGF5ZXIqKTsKKworICAgIC8vIE1lZGlhUGxheWVyUHJpdmF0ZSBPdmVycmlkZXMKKyAgICB2
aXJ0dWFsIHZvaWQgbG9hZChjb25zdCBTdHJpbmcmIHVybCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJiB1cmwsIFBhc3NSZWZQdHI8SFRNTE1lZGlhU291cmNl
PikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbExvYWQoKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGxheSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgSW50U2l6ZSBuYXR1cmFsU2l6ZSgpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgYm9vbCBoYXNWaWRlbygpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgYm9vbCBoYXNBdWRpbygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRWaXNpYmxlKGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzZWVraW5nKCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHBhdXNlZCgpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3JrU3RhdGUoKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQo
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29uc3QgSW50U2l6ZSYp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBJbnRSZWN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBkb3VibGUgY3VycmVudFRpbWVEb3Vi
bGUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGRvdWJsZSBkdXJhdGlvbkRvdWJsZSgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZWVrRG91YmxlKGRvdWJsZSB0aW1l
KSBPVkVSUklERTsKKworICAgIE1lZGlhUGxheWVyKiBtX3BsYXllcjsKKyAgICBSZWZQdHI8SFRN
TE1lZGlhU291cmNlPiBtX21lZGlhU291cmNlOworICAgIFJlZlB0cjxNb2NrTWVkaWFTb3VyY2VQ
cml2YXRlPiBtX21lZGlhU291cmNlUHJpdmF0ZTsKKworICAgIGRvdWJsZSBtX2N1cnJlbnRUaW1l
OworICAgIGRvdWJsZSBtX2R1cmF0aW9uOworICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIG1f
cmVhZHlTdGF0ZTsKKyAgICBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG1fbmV0d29ya1N0YXRl
OworICAgIGJvb2wgbV9wbGF5aW5nOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NPVVJDRSkKKworI2VuZGlmIC8vIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlX2gKKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVk
aWFTb3VyY2VQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFz
b3VyY2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmUxNDhmNTdmYjll
N2VjMmI1OGRjY2NlZmI4YzdkOGE1Yjc1MGI2MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5j
cHAKQEAgLTAsMCArMSwxNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiTW9ja01lZGlhU291cmNlUHJpdmF0ZS5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJD
RSkKKworI2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBs
YWNlaG9sZGVyLmgiCisjaW5jbHVkZSAiTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuaCIKKyNp
bmNsdWRlICJNb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1JlZlB0cjxNb2NrTWVkaWFTb3VyY2VQcml2YXRlPiBNb2NrTWVkaWFTb3VyY2VQcml2YXRl
OjpjcmVhdGUoTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UqIHBhcmVudCkKK3sKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IE1vY2tNZWRpYVNvdXJjZVByaXZhdGUocGFyZW50KSk7Cit9CisKK01v
Y2tNZWRpYVNvdXJjZVByaXZhdGU6Ok1vY2tNZWRpYVNvdXJjZVByaXZhdGUoTW9ja01lZGlhUGxh
eWVyTWVkaWFTb3VyY2UqIHBhcmVudCkKKyAgICA6IG1fcGxheWVyKHBhcmVudCkKKyAgICAsIG1f
ZHVyYXRpb24oMCkKKyAgICAsIG1faXNFbmRlZChmYWxzZSkKK3sKK30KKworTW9ja01lZGlhU291
cmNlUHJpdmF0ZTo6fk1vY2tNZWRpYVNvdXJjZVByaXZhdGUoKQoreworfQorCitNZWRpYVNvdXJj
ZVByaXZhdGU6OkFkZFN0YXR1cyBNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjphZGRTb3VyY2VCdWZm
ZXIoY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlLCBSZWZQdHI8U291cmNlQnVmZmVyUHJp
dmF0ZT4mIG91dFByaXZhdGUpCit7CisgICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBw
YXJhbWV0ZXJzOworICAgIHBhcmFtZXRlcnMuaXNNZWRpYVNvdXJjZSA9IHRydWU7CisgICAgcGFy
YW1ldGVycy50eXBlID0gY29udGVudFR5cGUudHlwZSgpOworICAgIHBhcmFtZXRlcnMuY29kZWNz
ID0gY29udGVudFR5cGUucGFyYW1ldGVyKEFTQ0lJTGl0ZXJhbCgiY29kZWNzIikpOworICAgIGlm
IChNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpID09
IE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZCkKKyAgICAgICAgcmV0dXJuIE5vdFN1cHBvcnRl
ZDsKKworICAgIG1fc291cmNlQnVmZmVycy5hcHBlbmQoTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6
OmNyZWF0ZSh0aGlzKSk7CisgICAgb3V0UHJpdmF0ZSA9IG1fc291cmNlQnVmZmVycy5sYXN0KCk7
CisKKyAgICByZXR1cm4gT2s7Cit9CisKK3ZvaWQgTW9ja01lZGlhU291cmNlUHJpdmF0ZTo6cmVt
b3ZlU291cmNlQnVmZmVyKFNvdXJjZUJ1ZmZlclByaXZhdGUqIGJ1ZmZlcikKK3sKKyAgICBBU1NF
UlQobV9zb3VyY2VCdWZmZXJzLmNvbnRhaW5zKGJ1ZmZlcikpOworCisgICAgc2l6ZV90IHBvcyA9
IG1fYWN0aXZlU291cmNlQnVmZmVycy5maW5kKGJ1ZmZlcik7CisgICAgaWYgKHBvcyAhPSBub3RG
b3VuZCkKKyAgICAgICAgbV9hY3RpdmVTb3VyY2VCdWZmZXJzLnJlbW92ZShwb3MpOworCisgICAg
cG9zID0gbV9zb3VyY2VCdWZmZXJzLmZpbmQoYnVmZmVyKTsKKyAgICBtX3NvdXJjZUJ1ZmZlcnMu
cmVtb3ZlKHBvcyk7Cit9CisKK2RvdWJsZSBNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjpkdXJhdGlv
bigpCit7CisgICAgcmV0dXJuIG1fZHVyYXRpb247Cit9CisKK3ZvaWQgTW9ja01lZGlhU291cmNl
UHJpdmF0ZTo6c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQoreworICAgIGlmIChkdXJhdGlv
biA9PSBtX2R1cmF0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2R1cmF0aW9uID0gZHVy
YXRpb247CisgICAgbV9wbGF5ZXItPnVwZGF0ZUR1cmF0aW9uKGR1cmF0aW9uKTsKK30KKwordm9p
ZCBNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjptYXJrRW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1TdGF0
dXMgc3RhdHVzKQoreworICAgIFVOVVNFRF9QQVJBTShzdGF0dXMpOworICAgIG1faXNFbmRlZCA9
IHRydWU7Cit9CisKK3ZvaWQgTW9ja01lZGlhU291cmNlUHJpdmF0ZTo6dW5tYXJrRW5kT2ZTdHJl
YW0oKQoreworICAgIG1faXNFbmRlZCA9IGZhbHNlOworfQorCitNZWRpYVBsYXllcjo6UmVhZHlT
dGF0ZSBNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjpyZWFkeVN0YXRlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9wbGF5ZXItPnJlYWR5U3RhdGUoKTsKK30KKwordm9pZCBNb2NrTWVkaWFTb3VyY2VQ
cml2YXRlOjpzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUp
Cit7CisgICAgbV9wbGF5ZXItPnNldFJlYWR5U3RhdGUocmVhZHlTdGF0ZSk7Cit9CisKK3ZvaWQg
TW9ja01lZGlhU291cmNlUHJpdmF0ZTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZENoYW5nZUFjdGl2
ZVN0YXRlKE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKiBidWZmZXIsIGJvb2wgYWN0aXZlKQorewor
ICAgIGlmIChhY3RpdmUgJiYgIW1fYWN0aXZlU291cmNlQnVmZmVycy5jb250YWlucyhidWZmZXIp
KQorICAgICAgICBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMuYXBwZW5kKGJ1ZmZlcik7CisKKyAgICBp
ZiAoIWFjdGl2ZSkgeworICAgICAgICBzaXplX3QgcG9zaXRpb24gPSBtX2FjdGl2ZVNvdXJjZUJ1
ZmZlcnMuZmluZChidWZmZXIpOworICAgICAgICBpZiAocG9zaXRpb24gIT0gbm90Rm91bmQpCisg
ICAgICAgICAgICBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMucmVtb3ZlKHBvc2l0aW9uKTsKKyAgICB9
Cit9CisKK3N0YXRpYyBib29sIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlSGFzQXVkaW8oUGFzc1Jl
ZlB0cjxNb2NrU291cmNlQnVmZmVyUHJpdmF0ZT4gcHJwU291cmNlQnVmZmVyKQoreworICAgIHJl
dHVybiBwcnBTb3VyY2VCdWZmZXItPmhhc0F1ZGlvKCk7Cit9CisKK2Jvb2wgTW9ja01lZGlhU291
cmNlUHJpdmF0ZTo6aGFzQXVkaW8oKSBjb25zdAoreworICAgIHJldHVybiBzdGQ6OmFueV9vZiht
X2FjdGl2ZVNvdXJjZUJ1ZmZlcnMuYmVnaW4oKSwgbV9hY3RpdmVTb3VyY2VCdWZmZXJzLmVuZCgp
LCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZUhhc0F1ZGlvKTsKK30KKworc3RhdGljIGJvb2wgTW9j
a1NvdXJjZUJ1ZmZlclByaXZhdGVIYXNWaWRlbyhQYXNzUmVmUHRyPE1vY2tTb3VyY2VCdWZmZXJQ
cml2YXRlPiBwcnBTb3VyY2VCdWZmZXIpCit7CisgICAgcmV0dXJuIHBycFNvdXJjZUJ1ZmZlci0+
aGFzVmlkZW8oKTsKK30KKworYm9vbCBNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjpoYXNWaWRlbygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIHN0ZDo6YW55X29mKG1fYWN0aXZlU291cmNlQnVmZmVycy5i
ZWdpbigpLCBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMuZW5kKCksIE1vY2tTb3VyY2VCdWZmZXJQcml2
YXRlSGFzVmlkZW8pOworfQorCit9OworCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJj
ZVByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNjQwZGQ2ZTI5MTIxYmZkZWMxNzNiZWY5NzYwNWIwNzE4
ZjE3OGNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9t
ZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmgKQEAgLTAsMCArMSw4MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgTW9ja01lZGlhU291cmNlUHJpdmF0ZV9oCisjZGVmaW5lIE1vY2tNZWRp
YVNvdXJjZVByaXZhdGVfaAorCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKworI2luY2x1ZGUg
Ik1lZGlhU291cmNlUHJpdmF0ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1v
Y2tNZWRpYVBsYXllck1lZGlhU291cmNlOworY2xhc3MgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU7
CitjbGFzcyBUaW1lUmFuZ2VzOworCitjbGFzcyBNb2NrTWVkaWFTb3VyY2VQcml2YXRlIEZJTkFM
IDogcHVibGljIE1lZGlhU291cmNlUHJpdmF0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0
cjxNb2NrTWVkaWFTb3VyY2VQcml2YXRlPiBjcmVhdGUoTW9ja01lZGlhUGxheWVyTWVkaWFTb3Vy
Y2UqKTsKKyAgICB2aXJ0dWFsIH5Nb2NrTWVkaWFTb3VyY2VQcml2YXRlKCk7CisKKyAgICBjb25z
dCBWZWN0b3I8TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUqPiYgYWN0aXZlU291cmNlQnVmZmVycygp
IGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlU291cmNlQnVmZmVyczsgfQorCisgICAgYm9vbCBoYXNB
dWRpbygpIGNvbnN0OworICAgIGJvb2wgaGFzVmlkZW8oKSBjb25zdDsKKworICAgIE1vY2tNZWRp
YVBsYXllck1lZGlhU291cmNlKiBwbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXllcjsgfQor
Citwcml2YXRlOgorICAgIE1vY2tNZWRpYVNvdXJjZVByaXZhdGUoTW9ja01lZGlhUGxheWVyTWVk
aWFTb3VyY2UqKTsKKworICAgIC8vIE1lZGlhU291cmNlUHJpdmF0ZSBPdmVycmlkZXMKKyAgICB2
aXJ0dWFsIEFkZFN0YXR1cyBhZGRTb3VyY2VCdWZmZXIoY29uc3QgQ29udGVudFR5cGUmLCBSZWZQ
dHI8U291cmNlQnVmZmVyUHJpdmF0ZT4mKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGRvdWJsZSBk
dXJhdGlvbigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXREdXJhdGlvbihkb3VibGUp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBtYXJrRW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1T
dGF0dXMpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1bm1hcmtFbmRPZlN0cmVhbSgpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRSZWFkeVN0YXRlKE1lZGlhUGxh
eWVyOjpSZWFkeVN0YXRlKSBPVkVSUklERTsKKworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0
ZURpZENoYW5nZUFjdGl2ZVN0YXRlKE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKiwgYm9vbCBhY3Rp
dmUpOworICAgIHZvaWQgcmVtb3ZlU291cmNlQnVmZmVyKFNvdXJjZUJ1ZmZlclByaXZhdGUqKTsK
KworICAgIGZyaWVuZCBjbGFzcyBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTsKKworICAgIE1vY2tN
ZWRpYVBsYXllck1lZGlhU291cmNlKiBtX3BsYXllcjsKKyAgICBkb3VibGUgbV9kdXJhdGlvbjsK
KyAgICBWZWN0b3I8UmVmUHRyPE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlPj4gbV9zb3VyY2VCdWZm
ZXJzOworICAgIFZlY3RvcjxNb2NrU291cmNlQnVmZmVyUHJpdmF0ZSo+IG1fYWN0aXZlU291cmNl
QnVmZmVyczsKKyAgICBib29sIG1faXNFbmRlZDsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TT1VSQ0UpCisKKyNlbmRpZiAvLyBNb2NrTWVkaWFTb3VyY2VQcml2YXRlX2gKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2Nr
U291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYzM4NmRj
ODM0YTc3ZjY2N2JmOTE0NjFjOGE5YzI5Njk3YzdkZWMwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJp
dmF0ZS5jcHAKQEAgLTAsMCArMSwyMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaCIKKworI2lmIEVOQUJMRShNRURJ
QV9TT1VSQ0UpCisKKyNpbmNsdWRlICJNZWRpYURlc2NyaXB0aW9uLmgiCisjaW5jbHVkZSAiTWVk
aWFQbGF5ZXIuaCIKKyNpbmNsdWRlICJNZWRpYVNhbXBsZS5oIgorI2luY2x1ZGUgIk1vY2tCb3gu
aCIKKyNpbmNsdWRlICJNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5oIgorI2luY2x1ZGUgIk1v
Y2tNZWRpYVNvdXJjZVByaXZhdGUuaCIKKyNpbmNsdWRlICJNb2NrVHJhY2tzLmgiCisjaW5jbHVk
ZSAiU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oIgorI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRl
IDxydW50aW1lL0FycmF5QnVmZmVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
TW9ja01lZGlhU2FtcGxlIEZJTkFMIDogcHVibGljIE1lZGlhU2FtcGxlIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmUHRyPE1vY2tNZWRpYVNhbXBsZT4gY3JlYXRlKGNvbnN0IE1vY2tTYW1wbGVC
b3gmIGJveCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tNZWRpYVNhbXBsZShib3gpKTsgfQor
ICAgIHZpcnR1YWwgfk1vY2tNZWRpYVNhbXBsZSgpIHsgfQorCisgICAgdmlydHVhbCBNZWRpYVRp
bWUgcHJlc2VudGF0aW9uVGltZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fYm94LnByZXNl
bnRhdGlvblRpbWVzdGFtcCgpOyB9CisgICAgdmlydHVhbCBNZWRpYVRpbWUgZGVjb2RlVGltZSgp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fYm94LmRlY29kZVRpbWVzdGFtcCgpOyB9CisgICAg
dmlydHVhbCBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2Jv
eC5kdXJhdGlvbigpOyB9CisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgdHJhY2tJRCgpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIG1faWQ7IH0KKworICAgIHZpcnR1YWwgU2FtcGxlRmxhZ3MgZmxh
Z3MoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBOb25lOyB9CisgICAgdmlydHVhbCBQbGF0Zm9y
bVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIE9WRVJSSURFOworCitwcm90ZWN0ZWQ6CisgICAgTW9j
a01lZGlhU2FtcGxlKGNvbnN0IE1vY2tTYW1wbGVCb3gmIGJveCkKKyAgICAgICAgOiBtX2JveChi
b3gpCisgICAgICAgICwgbV9pZChTdHJpbmc6OmZvcm1hdCgiJWQiLCBib3gudHJhY2tJRCgpKSkK
KyAgICB7CisgICAgfQorCisgICAgTW9ja1NhbXBsZUJveCBtX2JveDsKKyAgICBBdG9taWNTdHJp
bmcgbV9pZDsKK307CisKK1BsYXRmb3JtU2FtcGxlIE1vY2tNZWRpYVNhbXBsZTo6cGxhdGZvcm1T
YW1wbGUoKQoreworICAgIFBsYXRmb3JtU2FtcGxlIHNhbXBsZSA9IHsgUGxhdGZvcm1TYW1wbGU6
Ok1vY2tTYW1wbGVCb3hUeXBlLCB7ICZtX2JveCB9IH07CisgICAgcmV0dXJuIHNhbXBsZTsKK30K
KworY2xhc3MgTW9ja01lZGlhRGVzY3JpcHRpb24gRklOQUwgOiBwdWJsaWMgTWVkaWFEZXNjcmlw
dGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxNb2NrTWVkaWFEZXNjcmlwdGlvbj4g
Y3JlYXRlKGNvbnN0IE1vY2tUcmFja0JveCYgYm94KSB7IHJldHVybiBhZG9wdFJlZihuZXcgTW9j
a01lZGlhRGVzY3JpcHRpb24oYm94KSk7IH0KKyAgICB2aXJ0dWFsIH5Nb2NrTWVkaWFEZXNjcmlw
dGlvbigpIHsgfQorCisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgY29kZWMoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiBtX2JveC5jb2RlYygpOyB9CisgICAgdmlydHVhbCBib29sIGlzVmlkZW8o
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2JveC5raW5kKCkgPT0gTW9ja1RyYWNrQm94OjpW
aWRlbzsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlvKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gbV9ib3gua2luZCgpID09IE1vY2tUcmFja0JveDo6QXVkaW87IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaXNUZXh0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9ib3gua2luZCgpID09IE1vY2tU
cmFja0JveDo6VGV4dDsgfQorCitwcm90ZWN0ZWQ6CisgICAgTW9ja01lZGlhRGVzY3JpcHRpb24o
Y29uc3QgTW9ja1RyYWNrQm94JiBib3gpIDogbV9ib3goYm94KSB7IH0KKyAgICBNb2NrVHJhY2tC
b3ggbV9ib3g7Cit9OworCitSZWZQdHI8TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU+IE1vY2tTb3Vy
Y2VCdWZmZXJQcml2YXRlOjpjcmVhdGUoTW9ja01lZGlhU291cmNlUHJpdmF0ZSogcGFyZW50KQor
eworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUocGFyZW50
KSk7Cit9CisKK01vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpNb2NrU291cmNlQnVmZmVyUHJpdmF0
ZShNb2NrTWVkaWFTb3VyY2VQcml2YXRlKiBwYXJlbnQpCisgICAgOiBtX3BhcmVudChwYXJlbnQp
CisgICAgLCBtX2NsaWVudCgwKQoreworfQorCitNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6fk1v
Y2tTb3VyY2VCdWZmZXJQcml2YXRlKCkKK3sKK30KKwordm9pZCBNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZTo6c2V0Q2xpZW50KFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQqIGNsaWVudCkKK3sKKyAg
ICBtX2NsaWVudCA9IGNsaWVudDsKK30KKwordm9pZCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6
YXBwZW5kKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKK3sKKyAg
ICBtX2lucHV0QnVmZmVyLmFwcGVuZChkYXRhLCBsZW5ndGgpOworCisgICAgd2hpbGUgKG1faW5w
dXRCdWZmZXIuc2l6ZSgpKSB7CisgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0g
QXJyYXlCdWZmZXI6OmNyZWF0ZShtX2lucHV0QnVmZmVyLmRhdGEoKSwgbV9pbnB1dEJ1ZmZlci5z
aXplKCkpOworICAgICAgICBzaXplX3QgYm94TGVuZ3RoID0gTW9ja0JveDo6cGVla0xlbmd0aChi
dWZmZXIuZ2V0KCkpOworICAgICAgICBpZiAoYm94TGVuZ3RoID4gYnVmZmVyLT5ieXRlTGVuZ3Ro
KCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBTdHJpbmcgdHlwZSA9IE1vY2tCb3g6
OnBlZWtUeXBlKGJ1ZmZlci5nZXQoKSk7CisgICAgICAgIGlmICh0eXBlID09IE1vY2tJbml0aWFs
aXphdGlvbkJveDo6dHlwZSgpKSB7CisgICAgICAgICAgICBNb2NrSW5pdGlhbGl6YXRpb25Cb3gg
aW5pdEJveCA9IE1vY2tJbml0aWFsaXphdGlvbkJveChidWZmZXIuZ2V0KCkpOworICAgICAgICAg
ICAgZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChpbml0Qm94KTsKKyAgICAgICAgfQor
CisgICAgICAgIGlmICh0eXBlID09IE1vY2tTYW1wbGVCb3g6OnR5cGUoKSkgeworICAgICAgICAg
ICAgTW9ja1NhbXBsZUJveCBzYW1wbGVCb3ggPSBNb2NrU2FtcGxlQm94KGJ1ZmZlci5nZXQoKSk7
CisgICAgICAgICAgICBkaWRSZWNlaXZlU2FtcGxlKHNhbXBsZUJveCk7CisgICAgICAgIH0KKwor
ICAgICAgICBtX2lucHV0QnVmZmVyLnJlbW92ZSgwLCBib3hMZW5ndGgpOworICAgIH0KK30KKwor
dm9pZCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2Vn
bWVudChjb25zdCBNb2NrSW5pdGlhbGl6YXRpb25Cb3gmIGluaXRCb3gpCit7CisgICAgaWYgKCFt
X2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVu
dDo6SW5pdGlhbGl6YXRpb25TZWdtZW50IHNlZ21lbnQ7CisgICAgc2VnbWVudC5kdXJhdGlvbiA9
IGluaXRCb3guZHVyYXRpb24oKTsKKworICAgIGZvciAoYXV0byBpdCA9IGluaXRCb3gudHJhY2tz
KCkuYmVnaW4oKTsgaXQgIT0gaW5pdEJveC50cmFja3MoKS5lbmQoKTsgKytpdCkgeworICAgICAg
ICBjb25zdCBNb2NrVHJhY2tCb3gmIHRyYWNrQm94ID0gKml0OworICAgICAgICBpZiAodHJhY2tC
b3gua2luZCgpID09IE1vY2tUcmFja0JveDo6VmlkZW8pIHsKKyAgICAgICAgICAgIFNvdXJjZUJ1
ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDo6VmlkZW9UcmFja0luZm9y
bWF0aW9uIGluZm87CisgICAgICAgICAgICBpbmZvLnRyYWNrID0gTW9ja1ZpZGVvVHJhY2tQcml2
YXRlOjpjcmVhdGUodHJhY2tCb3gpOworICAgICAgICAgICAgaW5mby5kZXNjcmlwdGlvbiA9IE1v
Y2tNZWRpYURlc2NyaXB0aW9uOjpjcmVhdGUodHJhY2tCb3gpOworICAgICAgICAgICAgc2VnbWVu
dC52aWRlb1RyYWNrcy5hcHBlbmQoaW5mbyk7CisgICAgICAgIH0gZWxzZSBpZiAodHJhY2tCb3gu
a2luZCgpID09IE1vY2tUcmFja0JveDo6QXVkaW8pIHsKKyAgICAgICAgICAgIFNvdXJjZUJ1ZmZl
clByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDo6QXVkaW9UcmFja0luZm9ybWF0
aW9uIGluZm87CisgICAgICAgICAgICBpbmZvLnRyYWNrID0gTW9ja0F1ZGlvVHJhY2tQcml2YXRl
OjpjcmVhdGUodHJhY2tCb3gpOworICAgICAgICAgICAgaW5mby5kZXNjcmlwdGlvbiA9IE1vY2tN
ZWRpYURlc2NyaXB0aW9uOjpjcmVhdGUodHJhY2tCb3gpOworICAgICAgICAgICAgc2VnbWVudC5h
dWRpb1RyYWNrcy5hcHBlbmQoaW5mbyk7CisgICAgICAgIH0gZWxzZSBpZiAodHJhY2tCb3gua2lu
ZCgpID09IE1vY2tUcmFja0JveDo6VGV4dCkgeworICAgICAgICAgICAgU291cmNlQnVmZmVyUHJp
dmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OjpUZXh0VHJhY2tJbmZvcm1hdGlvbiBp
bmZvOworICAgICAgICAgICAgaW5mby50cmFjayA9IE1vY2tUZXh0VHJhY2tQcml2YXRlOjpjcmVh
dGUodHJhY2tCb3gpOworICAgICAgICAgICAgaW5mby5kZXNjcmlwdGlvbiA9IE1vY2tNZWRpYURl
c2NyaXB0aW9uOjpjcmVhdGUodHJhY2tCb3gpOworICAgICAgICAgICAgc2VnbWVudC50ZXh0VHJh
Y2tzLmFwcGVuZChpbmZvKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1fY2xpZW50LT5zb3Vy
Y2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudCh0aGlzLCBzZWdt
ZW50KTsKK30KKworCit2b2lkIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlU2Ft
cGxlKGNvbnN0IE1vY2tTYW1wbGVCb3gmIHNhbXBsZUJveCkKK3sKKyAgICBpZiAoIW1fY2xpZW50
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZURp
ZFJlY2VpdmVTYW1wbGUodGhpcywgTW9ja01lZGlhU2FtcGxlOjpjcmVhdGUoc2FtcGxlQm94KSk7
Cit9CisKK3ZvaWQgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmFib3J0KCkKK3sKK30KKwordm9p
ZCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6cmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpCit7Cisg
ICAgbV9wYXJlbnQtPnJlbW92ZVNvdXJjZUJ1ZmZlcih0aGlzKTsKK30KKworTWVkaWFQbGF5ZXI6
OlJlYWR5U3RhdGUgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OnJlYWR5U3RhdGUoKSBjb25zdAor
eworICAgIHJldHVybiBtX3BhcmVudC0+cGxheWVyKCktPnJlYWR5U3RhdGUoKTsKK30KKwordm9p
ZCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVh
ZHlTdGF0ZSByZWFkeVN0YXRlKQoreworICAgIG1fcGFyZW50LT5wbGF5ZXIoKS0+c2V0UmVhZHlT
dGF0ZShyZWFkeVN0YXRlKTsKK30KKworYm9vbCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6aGFz
VmlkZW8oKSBjb25zdAoreworICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHJldHVybiBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUhhc1ZpZGVvKHRo
aXMpOworfQorCitib29sIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpoYXNBdWRpbygpIGNvbnN0
Cit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlSGFzQXVkaW8odGhpcyk7Cit9CisKK30K
KworI2VuZGlmCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVk
aWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yNTZiYmY5Yzg0YWMxMzFhZGE4NDY2M2RkMDYzZjcwYTJkYzMwZDMwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNl
QnVmZmVyUHJpdmF0ZS5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIE1vY2tT
b3VyY2VCdWZmZXJQcml2YXRlX2gKKyNkZWZpbmUgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGVfaAor
CisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKworI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclByaXZh
dGUuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBB
dWRpb1RyYWNrUHJpdmF0ZTsKK2NsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGU7CitjbGFzcyBN
b2NrSW5pdGlhbGl6YXRpb25Cb3g7CitjbGFzcyBNb2NrTWVkaWFTb3VyY2VQcml2YXRlOworY2xh
c3MgTW9ja1NhbXBsZUJveDsKK2NsYXNzIFRpbWVSYW5nZXM7CitjbGFzcyBWaWRlb1RyYWNrUHJp
dmF0ZTsKKworY2xhc3MgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUgOiBwdWJsaWMgU291cmNlQnVm
ZmVyUHJpdmF0ZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxNb2NrU291cmNlQnVmZmVy
UHJpdmF0ZT4gY3JlYXRlKE1vY2tNZWRpYVNvdXJjZVByaXZhdGUqKTsKKyAgICB2aXJ0dWFsIH5N
b2NrU291cmNlQnVmZmVyUHJpdmF0ZSgpOworCisgICAgYm9vbCBoYXNWaWRlbygpIGNvbnN0Owor
ICAgIGJvb2wgaGFzQXVkaW8oKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBNb2Nr
U291cmNlQnVmZmVyUHJpdmF0ZShNb2NrTWVkaWFTb3VyY2VQcml2YXRlKik7CisKKyAgICAvLyBT
b3VyY2VCdWZmZXJQcml2YXRlIG92ZXJyaWRlcworICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQo
U291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBh
cHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgTWVkaWFQbGF5
ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlKSBPVkVSUklERTsKKwor
ICAgIHZvaWQgZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBNb2NrSW5pdGlh
bGl6YXRpb25Cb3gmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTYW1wbGUoY29uc3QgTW9ja1NhbXBs
ZUJveCYpOworCisgICAgTW9ja01lZGlhU291cmNlUHJpdmF0ZSogbV9wYXJlbnQ7CisgICAgU291
cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCogbV9jbGllbnQ7CisKKyAgICBWZWN0b3I8Y2hhcj4gbV9p
bnB1dEJ1ZmZlcjsKK307CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TT1VSQ0UpICYm
IFVTRShBVkZPVU5EQVRJT04pCisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tUcmFja3MuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrVHJhY2tzLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
Zjg4NDBkODQwNTRkZTI4N2FkOTAzZmY2NDkzMTVlOGFhMzM2YmY1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrVHJhY2tzLmNw
cApAQCAtMCwwICsxLDI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIk1vY2tUcmFja3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svbWVkaWFzb3VyY2UvTW9ja1RyYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9tZWRpYXNvdXJjZS9Nb2NrVHJhY2tzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Y4ZWRlZDc0NTM3Y2I1OGZi
NDIyMjc1N2UyMWRhMzRhODkxMDI2YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1RyYWNrcy5oCkBAIC0wLDAgKzEsOTUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaWZuZGVmIE1vY2tUcmFja3NfaAorI2RlZmluZSBNb2NrVHJhY2tzX2gKKwor
I2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisKKyNpbmNsdWRlICJBdWRpb1RyYWNrUHJpdmF0ZS5o
IgorI2luY2x1ZGUgIkluYmFuZFRleHRUcmFja1ByaXZhdGUuaCIKKyNpbmNsdWRlICJNb2NrQm94
LmgiCisjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBNb2NrQXVkaW9UcmFja1ByaXZhdGUgOiBwdWJsaWMgQXVkaW9UcmFja1ByaXZh
dGUgeworcHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8TW9ja0F1ZGlvVHJhY2tQcml2YXRlPiBj
cmVhdGUoY29uc3QgTW9ja1RyYWNrQm94JiBib3gpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBNb2Nr
QXVkaW9UcmFja1ByaXZhdGUoYm94KSk7IH0KKyAgICB2aXJ0dWFsIH5Nb2NrQXVkaW9UcmFja1By
aXZhdGUoKSB7IH0KKworICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGlkKCkgY29uc3QgeyByZXR1
cm4gbV9pZDsgfQorCitwcm90ZWN0ZWQ6CisgICAgTW9ja0F1ZGlvVHJhY2tQcml2YXRlKGNvbnN0
IE1vY2tUcmFja0JveCYgYm94KQorICAgICAgICA6IG1fYm94KGJveCkKKyAgICAgICAgLCBtX2lk
KFN0cmluZzo6Zm9ybWF0KCIlZCIsIGJveC50cmFja0lEKCkpKQorICAgIHsKKyAgICB9CisgICAg
TW9ja1RyYWNrQm94IG1fYm94OworICAgIEF0b21pY1N0cmluZyBtX2lkOworfTsKKworY2xhc3Mg
TW9ja1RleHRUcmFja1ByaXZhdGUgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSB7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxNb2NrVGV4dFRyYWNrUHJpdmF0ZT4gY3JlYXRlKGNv
bnN0IE1vY2tUcmFja0JveCYgYm94KSB7IHJldHVybiBhZG9wdFJlZihuZXcgTW9ja1RleHRUcmFj
a1ByaXZhdGUoYm94KSk7IH0KKyAgICB2aXJ0dWFsIH5Nb2NrVGV4dFRyYWNrUHJpdmF0ZSgpIHsg
fQorCisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9
CisKK3Byb3RlY3RlZDoKKyAgICBNb2NrVGV4dFRyYWNrUHJpdmF0ZShjb25zdCBNb2NrVHJhY2tC
b3gmIGJveCkKKyAgICAgICAgOiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlKEluYmFuZFRleHRUcmFj
a1ByaXZhdGU6OkdlbmVyaWMpCisgICAgICAgICwgbV9ib3goYm94KQorICAgICAgICAsIG1faWQo
U3RyaW5nOjpmb3JtYXQoIiVkIiwgYm94LnRyYWNrSUQoKSkpCisgICAgeworICAgIH0KKyAgICBN
b2NrVHJhY2tCb3ggbV9ib3g7CisgICAgQXRvbWljU3RyaW5nIG1faWQ7Cit9OworCisKK2NsYXNz
IE1vY2tWaWRlb1RyYWNrUHJpdmF0ZSA6IHB1YmxpYyBWaWRlb1RyYWNrUHJpdmF0ZSB7CitwdWJs
aWM6CisgICAgc3RhdGljIFJlZlB0cjxNb2NrVmlkZW9UcmFja1ByaXZhdGU+IGNyZWF0ZShjb25z
dCBNb2NrVHJhY2tCb3gmIGJveCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tWaWRlb1RyYWNr
UHJpdmF0ZShib3gpKTsgfQorICAgIHZpcnR1YWwgfk1vY2tWaWRlb1RyYWNrUHJpdmF0ZSgpIHsg
fQorCisgICAgdmlydHVhbCBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9
CisKK3Byb3RlY3RlZDoKKyAgICBNb2NrVmlkZW9UcmFja1ByaXZhdGUoY29uc3QgTW9ja1RyYWNr
Qm94JiBib3gpCisgICAgICAgIDogbV9ib3goYm94KQorICAgICAgICAsIG1faWQoU3RyaW5nOjpm
b3JtYXQoIiVkIiwgYm94LnRyYWNrSUQoKSkpCisgICAgeworICAgIH0KKyAgICBNb2NrVHJhY2tC
b3ggbV9ib3g7CisgICAgQXRvbWljU3RyaW5nIG1faWQ7Cit9OworCit9CisKKyNlbmRpZgorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBlZmJiODFkMTc0M2M0
OWYzZmM3M2Q1YzZkMmIzNDczMjQ1ZGVmM2ZiLi5lM2FmMGYwZDc1MzQ3ZDFmZGY0MmE1MDQzZjcw
MmFlYjkwMzBiMWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC03MCw2
ICs3MCw3IEBACiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKICNpbmNsdWRlICJNYWluRnJhbWUuaCIK
ICNpbmNsdWRlICJNYWxsb2NTdGF0aXN0aWNzLmgiCisjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIK
ICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIk1lbW9yeUluZm8uaCIKICNpbmNs
dWRlICJQYWdlLmgiCkBAIC0xNTMsNiArMTU0LDEwIEBACiAjaW5jbHVkZSAiUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyTW9jay5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQor
I2luY2x1ZGUgIk1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmgiCisjZW5kaWYKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMjE2Nyw0ICsy
MTcyLDExIEBAIGJvb2wgSW50ZXJuYWxzOjppc1BsdWdpblVuYXZhaWxhYmlsaXR5SW5kaWNhdG9y
T2JzY3VyZWQoRWxlbWVudCogZWxlbWVudCwgRXhjZXB0CiAgICAgcmV0dXJuIGVtYmVkLT5pc1Jl
cGxhY2VtZW50T2JzY3VyZWQoKTsKIH0KIAorI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCit2b2lk
IEludGVybmFsczo6aW5pdGlhbGl6ZU1vY2tNZWRpYVNvdXJjZSgpCit7CisgICAgTWVkaWFQbGF5
ZXJGYWN0b3J5U3VwcG9ydDo6Y2FsbFJlZ2lzdGVyTWVkaWFFbmdpbmUoTW9ja01lZGlhUGxheWVy
TWVkaWFTb3VyY2U6OnJlZ2lzdGVyTWVkaWFFbmdpbmUpOworfQorI2VuZGlmCisKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDQ5NWRjYjU0ODQ5ZGNjNzk3NzVlN2M3MjE1YWFh
NjNjOTIzMTVkZTAuLmI4MWY1ZjU4YmM1ZWE3MzE0MTE3NTZmZmU3ODZmNDNlMmNjYWQ0M2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMzI1LDYgKzMyNSwxMCBAQCBwdWJsaWM6
CiAKICAgICBib29sIGlzUGx1Z2luVW5hdmFpbGFiaWxpdHlJbmRpY2F0b3JPYnNjdXJlZChFbGVt
ZW50KiwgRXhjZXB0aW9uQ29kZSYpOwogCisjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKKyAgICB2
b2lkIGluaXRpYWxpemVNb2NrTWVkaWFTb3VyY2UoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAg
IGV4cGxpY2l0IEludGVybmFscyhEb2N1bWVudCopOwogICAgIERvY3VtZW50KiBjb250ZXh0RG9j
dW1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBhN2Vh
ZTU5NzQwMGM3OGUyYTk2ZDUwMjkzMGFkNjZiNWNlYjM1MTkxLi5mMTg0MWQ2OWJjZjFkOGNlMmU3
M2Q5MGYwOWU1MDQ2Y2RjZGIyYTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRs
CkBAIC0yNzMsNCArMjczLDYgQEAKICAgICBbUmFpc2VzRXhjZXB0aW9uXSBib29sZWFuIGlzUGx1
Z2luVW5hdmFpbGFiaWxpdHlJbmRpY2F0b3JPYnNjdXJlZChFbGVtZW50IGVsZW1lbnQpOwogCiAg
ICAgW1JhaXNlc0V4Y2VwdGlvbl0gQ2xpZW50UmVjdCBzZWxlY3Rpb25Cb3VuZHMoKTsKKyAgICAK
KyAgICBbQ29uZGl0aW9uYWw9TUVESUFfU09VUkNFXSB2b2lkIGluaXRpYWxpemVNb2NrTWVkaWFT
b3VyY2UoKTsKIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTkwMjM0ZDAyY2I1Yjg1ODEwOGVmZDY2MDVhOTQ3YzAyNTRi
ZmE1Zi4uYzE0N2E3YjAwNzc5ODdmMGI3MzYwOTE2YWRiOWQ1NTlmYzYwOTQ4ZiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIzIEBACisyMDEzLTEwLTI0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29t
PgorCisgICAgICAgIFtNU0VdIEFkZCBtb2NrIE1lZGlhU291cmNlIGNsYXNzZXMgZm9yIHRlc3Rp
bmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjMz
MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1l
ZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtYWRkc291cmNlYnVmZmVyLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1hZGRz
b3VyY2VidWZmZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEtc291cmNlL21l
ZGlhLXNvdXJjZS1hcHBlbmQtYnVmZmVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
bWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1hcHBlbmQtYnVmZmVyLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtY2FucGxheXRocm91
Z2gtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9tZWRpYS1zb3VyY2UvbWVk
aWEtc291cmNlLWNhbnBsYXl0aHJvdWdoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21l
ZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtY2xvc2VkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1jbG9zZWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1wbGF5LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1w
bGF5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL21lZGlhLXNvdXJjZS9tb2NrLW1lZGlh
LXNvdXJjZS5qczogQWRkZWQuCisgICAgICAgICogbWVkaWEvdmlkZW8tdGVzdC5qczoKKwogMjAx
My0xMS0wNyAgRGVuaXMgTm9taXlhbWEgIDxkLm5vbWl5YW1hQHNhbXN1bmcuY29tPgogCiAgICAg
ICAgIFtHVEtdIEdseXBocyBpbiB2ZXJ0aWNhbCB0ZXh0IHRlc3RzIGFyZSByb3RhdGVkIDkwIGRl
Z3JlZXMgY2xvY2t3aXNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3Vy
Y2UvbWVkaWEtc291cmNlLWFkZHNvdXJjZWJ1ZmZlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWFkZHNvdXJjZWJ1ZmZlci1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYmIzOTY0ZTAwNDRiYzNlMzk2MTllNjljMjUwNjFmNTlmNThiNjE5
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRp
YS1zb3VyY2UtYWRkc291cmNlYnVmZmVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACisK
K1RFU1Qoc291cmNlLmFkZFNvdXJjZUJ1ZmZlcigiaW52YWxpZCIpKSBUSFJPV1MoRE9NRXhjZXB0
aW9uLk5PVF9TVVBQT1JURURfRVJSKSBPSworVEVTVChzb3VyY2UuYWRkU291cmNlQnVmZmVyKCIi
KSkgVEhST1dTKERPTUV4Y2VwdGlvbi5JTlZBTElEX0FDQ0VTU19FUlIpIE9LCitFWFBFQ1RFRCAo
TWVkaWFTb3VyY2UuaXNUeXBlU3VwcG9ydGVkKCJpbnZhbGlkIikgPT0gJ2ZhbHNlJykgT0sKK0VY
UEVDVEVEIChNZWRpYVNvdXJjZS5pc1R5cGVTdXBwb3J0ZWQoInZpZGVvL21vY2s7IGNvZGVjcz1t
b2NrIikgPT0gJ3RydWUnKSBPSworUlVOKHZpZGVvLnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwo
c291cmNlKSkKK0VWRU5UKHNvdXJjZW9wZW4pCitSVU4oc291cmNlQnVmZmVyID0gc291cmNlLmFk
ZFNvdXJjZUJ1ZmZlcigidmlkZW8vbW9jazsgY29kZWNzPW1vY2siKSkKK0VYUEVDVEVEIChzb3Vy
Y2Uuc291cmNlQnVmZmVyc1swXSA9PSAnW29iamVjdCBTb3VyY2VCdWZmZXJdJykgT0sKK0VYUEVD
VEVEIChzb3VyY2UuYWN0aXZlU291cmNlQnVmZmVyc1swXSA9PSAnW29iamVjdCBTb3VyY2VCdWZm
ZXJdJykgT0sKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21l
ZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtYWRkc291cmNlYnVmZmVyLmh0bWwgYi9MYXlvdXRUZXN0
cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWFkZHNvdXJjZWJ1ZmZlci5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjM5NmM1M2MxOTc2YWUyOTJmNzNmYzdmNjNjYzRhNjVmYjRiYzkwZGEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNl
LWFkZHNvdXJjZWJ1ZmZlci5odG1sCkBAIC0wLDAgKzEsMzkgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+bW9jay1tZWRpYS1zb3VyY2U8L3RpdGxlPgorICAg
IDxzY3JpcHQgc3JjPSJtb2NrLW1lZGlhLXNvdXJjZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgdmFy
IHNvdXJjZTsKKyAgICB2YXIgc291cmNlQnVmZmVyOworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMpCisgICAgICAgIGludGVybmFscy5pbml0aWFsaXplTW9ja01lZGlhU291cmNlKCk7CisKKyAg
ICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisKKyAg
ICAgICAgc291cmNlID0gbmV3IE1lZGlhU291cmNlKCk7CisgICAgICAgIHRlc3RET01FeGNlcHRp
b24oJ3NvdXJjZS5hZGRTb3VyY2VCdWZmZXIoImludmFsaWQiKScsICdET01FeGNlcHRpb24uTk9U
X1NVUFBPUlRFRF9FUlInKTsKKyAgICAgICAgdGVzdERPTUV4Y2VwdGlvbignc291cmNlLmFkZFNv
dXJjZUJ1ZmZlcigiIiknLCAnRE9NRXhjZXB0aW9uLklOVkFMSURfQUNDRVNTX0VSUicpOworICAg
ICAgICB0ZXN0RXhwZWN0ZWQoJ01lZGlhU291cmNlLmlzVHlwZVN1cHBvcnRlZCgiaW52YWxpZCIp
JywgZmFsc2UpOworICAgICAgICB0ZXN0RXhwZWN0ZWQoJ01lZGlhU291cmNlLmlzVHlwZVN1cHBv
cnRlZCgidmlkZW8vbW9jazsgY29kZWNzPW1vY2siKScsIHRydWUpOworCisgICAgICAgIHdhaXRG
b3JFdmVudCgnc291cmNlb3BlbicsIHNvdXJjZU9wZW4sIGZhbHNlLCBmYWxzZSwgc291cmNlKTsK
KyAgICAgICAgcnVuKCd2aWRlby5zcmMgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKHNvdXJjZSknKTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBzb3VyY2VPcGVuKCkgeworICAgICAgICBydW4oJ3NvdXJj
ZUJ1ZmZlciA9IHNvdXJjZS5hZGRTb3VyY2VCdWZmZXIoInZpZGVvL21vY2s7IGNvZGVjcz1tb2Nr
IiknKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCdzb3VyY2Uuc291cmNlQnVmZmVyc1swXScsIHNv
dXJjZUJ1ZmZlcik7CisgICAgICAgIHRlc3RFeHBlY3RlZCgnc291cmNlLmFjdGl2ZVNvdXJjZUJ1
ZmZlcnNbMF0nLCBzb3VyY2VCdWZmZXIpOworICAgICAgICBlbmRUZXN0KCk7CisgICAgfQorICAg
IAorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAg
IDx2aWRlbz48L3ZpZGVvPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1z
b3VyY2UtYXBwZW5kLWJ1ZmZlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRp
YS1zb3VyY2UvbWVkaWEtc291cmNlLWFwcGVuZC1idWZmZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA5YzY5OGY1MWY0ZDZhMjAwZDBjYzZiNDdjMTMzMjNkOTU1NDA0YWYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWFwcGVu
ZC1idWZmZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKKworUlVOKHZpZGVvLnNyYyA9
IFVSTC5jcmVhdGVPYmplY3RVUkwoc291cmNlKSkKK0VWRU5UKHNvdXJjZW9wZW4pCitSVU4oc291
cmNlQnVmZmVyID0gc291cmNlLmFkZFNvdXJjZUJ1ZmZlcigidmlkZW8vbW9jazsgY29kZWNzPW1v
Y2siKSkKK1JVTihzb3VyY2VCdWZmZXIuYXBwZW5kQnVmZmVyKGluaXRTZWdtZW50KSkKK0VYUEVD
VEVEIChzb3VyY2VCdWZmZXIudXBkYXRpbmcgPT0gJ3RydWUnKSBPSworRVZFTlQodXBkYXRlc3Rh
cnQpCitFVkVOVCh1cGRhdGUpCitFVkVOVCh1cGRhdGVlbmQpCitFWFBFQ1RFRCAoc291cmNlQnVm
ZmVyLnVwZGF0aW5nID09ICdmYWxzZScpIE9LCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWFwcGVuZC1idWZmZXIu
aHRtbCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtYXBwZW5k
LWJ1ZmZlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlYTJmZWNjNzM3Yjk4NDljMDQ1OWJlNGYxZjBhMWQ4
MTVjMmU2MjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3Vy
Y2UvbWVkaWEtc291cmNlLWFwcGVuZC1idWZmZXIuaHRtbApAQCAtMCwwICsxLDQ0IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPm1vY2stbWVkaWEtc291cmNl
PC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0ibW9jay1tZWRpYS1zb3VyY2UuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0PgorICAgIHZhciBzb3VyY2U7CisgICAgdmFyIHNvdXJjZUJ1ZmZlcjsKKyAgICB2YXIgaW5p
dFNlZ21lbnQ7CisKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxz
LmluaXRpYWxpemVNb2NrTWVkaWFTb3VyY2UoKTsKKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7
CisgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKworICAgICAgICBzb3VyY2UgPSBuZXcgTWVk
aWFTb3VyY2UoKTsKKyAgICAgICAgd2FpdEZvckV2ZW50T24oc291cmNlLCAnc291cmNlb3Blbics
IHNvdXJjZU9wZW4pOworICAgICAgICBydW4oJ3ZpZGVvLnNyYyA9IFVSTC5jcmVhdGVPYmplY3RV
Ukwoc291cmNlKScpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHNvdXJjZU9wZW4oKSB7CisgICAg
ICAgIHJ1bignc291cmNlQnVmZmVyID0gc291cmNlLmFkZFNvdXJjZUJ1ZmZlcigidmlkZW8vbW9j
azsgY29kZWNzPW1vY2siKScpOworCisgICAgICAgIHdhaXRGb3JFdmVudE9uKHNvdXJjZUJ1ZmZl
ciwgJ3VwZGF0ZXN0YXJ0Jyk7CisgICAgICAgIHdhaXRGb3JFdmVudE9uKHNvdXJjZUJ1ZmZlciwg
J3VwZGF0ZScpOworICAgICAgICB3YWl0Rm9yRXZlbnRPbihzb3VyY2VCdWZmZXIsICd1cGRhdGVl
bmQnLCB1cGRhdGVFbmQpOworICAgICAgICBpbml0U2VnbWVudCA9IG1ha2VBSW5pdCgxMDAsIFtt
YWtlQVRyYWNrKDEsICdtb2NrJywgVFJBQ0tfS0lORC5WSURFTyldKTsKKyAgICAgICAgcnVuKCdz
b3VyY2VCdWZmZXIuYXBwZW5kQnVmZmVyKGluaXRTZWdtZW50KScpOworICAgICAgICB0ZXN0RXhw
ZWN0ZWQoJ3NvdXJjZUJ1ZmZlci51cGRhdGluZycsIHRydWUpOworICAgIH0KKyAgICAKKyAgICBm
dW5jdGlvbiB1cGRhdGVFbmQoKSB7CisgICAgICAgIHRlc3RFeHBlY3RlZCgnc291cmNlQnVmZmVy
LnVwZGF0aW5nJywgZmFsc2UpOworICAgICAgICBlbmRUZXN0KCk7CisgICAgfQorCisgICAgPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgPHZpZGVvPjwv
dmlkZW8+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9t
ZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWNhbnBsYXl0aHJvdWdoLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtY2FucGxheXRocm91Z2gt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyZWM1NzM0MTAwMWM2YjJmODg5MWNhZDgyZGViYjI3
MGYzNDMxNGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3Vy
Y2UvbWVkaWEtc291cmNlLWNhbnBsYXl0aHJvdWdoLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDgg
QEAKKworUlVOKHZpZGVvLnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoc291cmNlKSkKK0VWRU5U
KGxvYWRlZG1ldGFkYXRhKQorRVZFTlQobG9hZGVkZGF0YSkKK0VWRU5UKGNhbnBsYXkpCitFVkVO
VChjYW5wbGF5dGhyb3VnaCkKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtY2FucGxheXRocm91Z2guaHRtbCBiL0xh
eW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtY2FucGxheXRocm91Z2gu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZTkxZjc2ZWRiZTFlMTQxZGUwYWM5N2I2ZTVlMjAxNTA1OWRkNjIy
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlh
LXNvdXJjZS1jYW5wbGF5dGhyb3VnaC5odG1sCkBAIC0wLDAgKzEsNTEgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+bW9jay1tZWRpYS1zb3VyY2U8L3RpdGxl
PgorICAgIDxzY3JpcHQgc3JjPSJtb2NrLW1lZGlhLXNvdXJjZS5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+Cisg
ICAgdmFyIHNvdXJjZTsKKyAgICB2YXIgc291cmNlQnVmZmVyOworCisgICAgdmFyIHJlcXVlc3RM
ZW5ndGggPSAyMDAwMDA7CisgICAgdmFyIG5leHRSZXF1ZXN0ID0gMDsKKyAgICB2YXIgdG90YWxM
ZW5ndGggPSAxMDA7CisKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJu
YWxzLmluaXRpYWxpemVNb2NrTWVkaWFTb3VyY2UoKTsKKworICAgIGZ1bmN0aW9uIHJ1blRlc3Qo
KSB7CisgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKyAgICAgICAgc291cmNlID0gbmV3IE1l
ZGlhU291cmNlKCk7CisgICAgICAgIHNvdXJjZS5hZGRFdmVudExpc3RlbmVyKCdzb3VyY2VvcGVu
Jywgc3RhcnRMb2FkKTsKKyAgICAgICAgd2FpdEZvckV2ZW50KCdsb2FkZWRtZXRhZGF0YScpOwor
ICAgICAgICB3YWl0Rm9yRXZlbnQoJ2xvYWRlZGRhdGEnKTsKKyAgICAgICAgd2FpdEZvckV2ZW50
KCdjYW5wbGF5Jyk7CisgICAgICAgIHdhaXRGb3JFdmVudEFuZEVuZCgnY2FucGxheXRocm91Z2gn
KTsKKyAgICAgICAgcnVuKCd2aWRlby5zcmMgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKHNvdXJjZSkn
KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzdGFydExvYWQoKSB7CisgICAgICAgIHNvdXJjZUJ1
ZmZlciA9IHNvdXJjZS5hZGRTb3VyY2VCdWZmZXIoJ3ZpZGVvL21vY2s7IGNvZGVjcz0ibW9jayIn
KTsKKyAgICAgICAgc291cmNlQnVmZmVyLmFkZEV2ZW50TGlzdGVuZXIoJ3VwZGF0ZScsIHNvdXJj
ZVVwZGF0ZWQpOworICAgICAgICBuZXh0UmVxdWVzdCA9IDA7CisKKyAgICAgICAgLy8gTWFrZSBh
biBpbml0IHNlZ21lbnQgd2l0aCAxIHZpZGVvIHRyYWNrCisgICAgICAgIHZhciBpbml0ID0gbWFr
ZUFJbml0KDEwMCwgW21ha2VBVHJhY2soMSwgJ21vY2snLCBUUkFDS19LSU5ELlZJREVPKV0pOwor
ICAgICAgICBzb3VyY2VCdWZmZXIuYXBwZW5kQnVmZmVyKGluaXQpCisgICAgfQorCisgICAgZnVu
Y3Rpb24gc291cmNlVXBkYXRlZCgpIHsKKyAgICAgICAgc291cmNlLmFjdGl2ZVNvdXJjZUJ1ZmZl
cnMubGVuZ3RoOworICAgICAgICBpZiAobmV4dFJlcXVlc3QgPCB0b3RhbExlbmd0aCkgeworICAg
ICAgICAgICAgc291cmNlQnVmZmVyLmFwcGVuZEJ1ZmZlcihtYWtlQVNhbXBsZShuZXh0UmVxdWVz
dCwgbmV4dFJlcXVlc3QsIDEsIDEsIDApKTsKKyAgICAgICAgICAgICsrbmV4dFJlcXVlc3Q7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKSI+CisgICAgPHZpZGVvIGNvbnRyb2xzIHdpZHRoPTk2MCBoZWlnaHQ9NTEwPjwvdmlk
ZW8+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRp
YS1zb3VyY2UvbWVkaWEtc291cmNlLWNsb3NlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9t
ZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWNsb3NlZC1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2QzM2UxMzE5MmQzMWUyYjNmZmY5YjVhMDk5MjUzNmFlOThkYzRjYgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtY2xv
c2VkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKKworRVhQRUNURUQgKHNvdXJjZS5yZWFk
eVN0YXRlID09ICdjbG9zZWQnKSBPSworRVZFTlQoc291cmNlb3BlbikKK1JVTih2aWRlby5zcmMg
PSAiIikKK0VWRU5UKHNvdXJjZWNsb3NlKQorRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1jbG9zZWQuaHRtbCBiL0xh
eW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtY2xvc2VkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjJjODIxZTg5YWJiOTgyMTFlZDcxYTg2ODc4YzcxZmU5MzA4NTBmZgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Ut
Y2xvc2VkLmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorICAgIDx0aXRsZT5tb2NrLW1lZGlhLXNvdXJjZTwvdGl0bGU+CisgICAgPHNjcmlwdCBz
cmM9Im1vY2stbWVkaWEtc291cmNlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4v
dmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICB2YXIgc291cmNlOwor
ICAgIHZhciBzb3VyY2VCdWZmZXI7CisgICAgdmFyIHNvdXJjZVRhZzsKKworICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuaW5pdGlhbGl6ZU1vY2tNZWRpYVNvdXJj
ZSgpOworCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgZmluZE1lZGlhRWxlbWVu
dCgpOworCisgICAgICAgIHNvdXJjZSA9IG5ldyBNZWRpYVNvdXJjZSgpOworICAgICAgICB0ZXN0
RXhwZWN0ZWQoJ3NvdXJjZS5yZWFkeVN0YXRlJywgJ2Nsb3NlZCcpOworCisgICAgICAgIHdhaXRG
b3JFdmVudE9uKHNvdXJjZSwgJ3NvdXJjZW9wZW4nLCBzb3VyY2VPcGVuKTsKKyAgICAgICAgdmlk
ZW8uc3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChzb3VyY2UpOworICAgIH0KKworICAgIGZ1bmN0
aW9uIHNvdXJjZU9wZW4oKSB7CisgICAgICAgIHdhaXRGb3JFdmVudE9uKHNvdXJjZSwgJ3NvdXJj
ZWNsb3NlJywgZW5kVGVzdCk7CisgICAgICAgIHJ1bigndmlkZW8uc3JjID0gIiInKTsKKyAgICB9
CisgICAgCisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+
CisgICAgPHZpZGVvPjwvdmlkZW8+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21l
ZGlhLXNvdXJjZS1wbGF5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNv
dXJjZS9tZWRpYS1zb3VyY2UtcGxheS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTkyYTlhZjQx
MDMyNWM4ZWE1YjljYmUwNGI3N2VjYmFhMzJlMWEzYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtcGxheS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxNCBAQAorCitFWFBFQ1RFRCAoc291cmNlLnJlYWR5U3RhdGUgPT0gJ2Nsb3Nl
ZCcpIE9LCitFVkVOVChzb3VyY2VvcGVuKQorUlVOKHNvdXJjZUJ1ZmZlciA9IHNvdXJjZS5hZGRT
b3VyY2VCdWZmZXIoInZpZGVvL21vY2s7IGNvZGVjcz1tb2NrIikpCitSVU4oc291cmNlQnVmZmVy
LmFwcGVuZEJ1ZmZlcihpbml0U2VnbWVudCkpCitFVkVOVCh1cGRhdGVlbmQpCitSVU4oc291cmNl
QnVmZmVyLmFwcGVuZEJ1ZmZlcihzYW1wbGUpKQorRVZFTlQodXBkYXRlZW5kKQorUlVOKHNvdXJj
ZS5kdXJhdGlvbiA9IDEpCitSVU4oc291cmNlLmVuZE9mU3RyZWFtKCkpCitSVU4odmlkZW8ucGxh
eSgpKQorRVZFTlQoZW5kZWQpCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXBsYXkuaHRtbCBiL0xheW91dFRlc3Rz
L21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtcGxheS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2
NTdhZTRmODBmN2ZlMjdhMjU0MDk3ZTllMmEwMjFmN2E1NjBlZDIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXBsYXkuaHRtbApA
QCAtMCwwICsxLDUxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRp
dGxlPm1vY2stbWVkaWEtc291cmNlPC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0ibW9jay1tZWRp
YS1zb3VyY2UuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIHZhciBzb3VyY2U7CisgICAgdmFyIHNvdXJj
ZUJ1ZmZlcjsKKyAgICB2YXIgaW5pdFNlZ21lbnQ7CisgICAgdmFyIHNhbXBsZTsKKworICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuaW5pdGlhbGl6ZU1vY2tNZWRp
YVNvdXJjZSgpOworCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgZmluZE1lZGlh
RWxlbWVudCgpOworCisgICAgICAgIHNvdXJjZSA9IG5ldyBNZWRpYVNvdXJjZSgpOworICAgICAg
ICB0ZXN0RXhwZWN0ZWQoJ3NvdXJjZS5yZWFkeVN0YXRlJywgJ2Nsb3NlZCcpOworCisgICAgICAg
IHdhaXRGb3JFdmVudE9uKHNvdXJjZSwgJ3NvdXJjZW9wZW4nLCBzb3VyY2VPcGVuKTsKKyAgICAg
ICAgdmlkZW8uc3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChzb3VyY2UpOworICAgIH0KKworICAg
IGZ1bmN0aW9uIHNvdXJjZU9wZW4oKSB7CisgICAgICAgIHJ1bignc291cmNlQnVmZmVyID0gc291
cmNlLmFkZFNvdXJjZUJ1ZmZlcigidmlkZW8vbW9jazsgY29kZWNzPW1vY2siKScpOworICAgICAg
ICB3YWl0Rm9yRXZlbnRPbihzb3VyY2VCdWZmZXIsICd1cGRhdGVlbmQnLCBsb2FkU2FtcGxlcywg
ZmFsc2UsIHRydWUpOworICAgICAgICBpbml0U2VnbWVudCA9IG1ha2VBSW5pdCgxMDAsIFttYWtl
QVRyYWNrKDEsICdtb2NrJywgVFJBQ0tfS0lORC5WSURFTyldKTsKKyAgICAgICAgcnVuKCdzb3Vy
Y2VCdWZmZXIuYXBwZW5kQnVmZmVyKGluaXRTZWdtZW50KScpOworICAgIH0KKworICAgIGZ1bmN0
aW9uIGxvYWRTYW1wbGVzKCkgeworICAgICAgICBzYW1wbGUgPSBtYWtlQVNhbXBsZSgwLCAwLCAx
MCwgMSwgMCk7CisgICAgICAgIHdhaXRGb3JFdmVudE9uKHNvdXJjZUJ1ZmZlciwgJ3VwZGF0ZWVu
ZCcsIHBsYXksIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgcnVuKCdzb3VyY2VCdWZmZXIuYXBwZW5k
QnVmZmVyKHNhbXBsZSknKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwbGF5KCkgeworICAgICAg
ICB3YWl0Rm9yRXZlbnQoJ2VuZGVkJywgZW5kVGVzdCk7CisgICAgICAgIHJ1bignc291cmNlLmR1
cmF0aW9uID0gMScpOworICAgICAgICBydW4oJ3NvdXJjZS5lbmRPZlN0cmVhbSgpJyk7CisgICAg
ICAgIHJ1bigndmlkZW8ucGxheSgpJyk7CisgICAgfQorICAgIAorICAgIDwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgIDx2aWRlbz48L3ZpZGVvPgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNl
L21lZGlhLXNvdXJjZS10cmFjay1lbmFibGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21l
ZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtdHJhY2stZW5hYmxlZC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDc4ZmEwOWJjMDQ3MGJkZmMyOThiNjIxMjNhZDMzNWRhZjdiOWY1ZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3Vy
Y2UtdHJhY2stZW5hYmxlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorCitSVU4odmlk
ZW8uc3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChzb3VyY2UpKQorRVZFTlQoc291cmNlb3BlbikK
K1JVTihzb3VyY2VCdWZmZXIgPSBzb3VyY2UuYWRkU291cmNlQnVmZmVyKCJ2aWRlby9tb2NrOyBj
b2RlY3M9bW9jayIpKQorUlVOKHNvdXJjZUJ1ZmZlci5hcHBlbmRCdWZmZXIoaW5pdFNlZ21lbnQp
KQorRVhQRUNURUQgKHNvdXJjZUJ1ZmZlci51cGRhdGluZyA9PSAndHJ1ZScpIE9LCitFVkVOVCh1
cGRhdGVzdGFydCkKK0VWRU5UKHVwZGF0ZSkKK0VWRU5UKHVwZGF0ZWVuZCkKK0VYUEVDVEVEIChz
b3VyY2VCdWZmZXIudXBkYXRpbmcgPT0gJ2ZhbHNlJykgT0sKK0VYUEVDVEVEIChzb3VyY2VCdWZm
ZXIudmlkZW9UcmFja3MubGVuZ3RoID09ICcxJykgT0sKK0VYUEVDVEVEIChzb3VyY2VCdWZmZXIu
dmlkZW9UcmFja3NbMF0uc2VsZWN0ZWQgPT0gJ3RydWUnKSBPSworRVhQRUNURUQgKHNvdXJjZS5h
Y3RpdmVTb3VyY2VCdWZmZXJzLmxlbmd0aCA9PSAnMScpIE9LCitFTkQgT0YgVEVTVAorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXRyYWNr
LWVuYWJsZWQuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3Vy
Y2UtdHJhY2stZW5hYmxlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwMjg0YmU5ZmQ5YWMyOGMyOTZhZDhk
ZGM1NmZjOTNjYjAzMzE3NTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9t
ZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXRyYWNrLWVuYWJsZWQuaHRtbApAQCAtMCwwICsxLDQ5
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPm1vY2stbWVk
aWEtc291cmNlPC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0ibW9jay1tZWRpYS1zb3VyY2UuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi92aWRlby10ZXN0LmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0PgorICAgIHZhciBzb3VyY2U7CisgICAgdmFyIHNvdXJjZUJ1ZmZlcjsKKyAg
ICB2YXIgaW5pdFNlZ21lbnQ7CisKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAg
aW50ZXJuYWxzLmluaXRpYWxpemVNb2NrTWVkaWFTb3VyY2UoKTsKKworICAgIGZ1bmN0aW9uIHJ1
blRlc3QoKSB7CisgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKworICAgICAgICBzb3VyY2Ug
PSBuZXcgTWVkaWFTb3VyY2UoKTsKKyAgICAgICAgd2FpdEZvckV2ZW50T24oc291cmNlLCAnc291
cmNlb3BlbicsIHNvdXJjZU9wZW4pOworICAgICAgICBydW4oJ3ZpZGVvLnNyYyA9IFVSTC5jcmVh
dGVPYmplY3RVUkwoc291cmNlKScpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHNvdXJjZU9wZW4o
KSB7CisgICAgICAgIHJ1bignc291cmNlQnVmZmVyID0gc291cmNlLmFkZFNvdXJjZUJ1ZmZlcigi
dmlkZW8vbW9jazsgY29kZWNzPW1vY2siKScpOworCisgICAgICAgIHdhaXRGb3JFdmVudE9uKHNv
dXJjZUJ1ZmZlciwgJ3VwZGF0ZXN0YXJ0Jyk7CisgICAgICAgIHdhaXRGb3JFdmVudE9uKHNvdXJj
ZUJ1ZmZlciwgJ3VwZGF0ZScpOworICAgICAgICB3YWl0Rm9yRXZlbnRPbihzb3VyY2VCdWZmZXIs
ICd1cGRhdGVlbmQnLCB1cGRhdGVFbmQpOworICAgICAgICBpbml0U2VnbWVudCA9IG1ha2VBSW5p
dCgxMDAsIFsKKyAgICAgICAgICAgIG1ha2VBVHJhY2soMSwgJ21vY2snLCBUUkFDS19LSU5ELlZJ
REVPKSwKKyAgICAgICAgXSk7CisgICAgICAgIHJ1bignc291cmNlQnVmZmVyLmFwcGVuZEJ1ZmZl
cihpbml0U2VnbWVudCknKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCdzb3VyY2VCdWZmZXIudXBk
YXRpbmcnLCB0cnVlKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gdXBkYXRlRW5kKCkgewor
ICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3NvdXJjZUJ1ZmZlci51cGRhdGluZycsIGZhbHNlKTsKKyAg
ICAgICAgdGVzdEV4cGVjdGVkKCdzb3VyY2VCdWZmZXIudmlkZW9UcmFja3MubGVuZ3RoJywgMSk7
CisgICAgICAgIHRlc3RFeHBlY3RlZCgnc291cmNlQnVmZmVyLnZpZGVvVHJhY2tzWzBdLnNlbGVj
dGVkJywgdHJ1ZSk7CisgICAgICAgIHRlc3RFeHBlY3RlZCgnc291cmNlLmFjdGl2ZVNvdXJjZUJ1
ZmZlcnMubGVuZ3RoJywgMSk7CisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9CisKKyAgICA8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICA8dmlkZW8+PC92
aWRlbz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21l
ZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtdHJhY2tzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtdHJhY2tzLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wMjI3MjE5YjNmZjBmZjUyN2FhZmFlOGVmNjVkZjRlMWRlNjVhMzUyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS10
cmFja3MtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKKworUlVOKHZpZGVvLnNyYyA9IFVS
TC5jcmVhdGVPYmplY3RVUkwoc291cmNlKSkKK0VWRU5UKHNvdXJjZW9wZW4pCitSVU4oc291cmNl
QnVmZmVyID0gc291cmNlLmFkZFNvdXJjZUJ1ZmZlcigidmlkZW8vbW9jazsgY29kZWNzPW1vY2si
KSkKK1JVTihzb3VyY2VCdWZmZXIuYXBwZW5kQnVmZmVyKGluaXRTZWdtZW50KSkKK0VYUEVDVEVE
IChzb3VyY2VCdWZmZXIudXBkYXRpbmcgPT0gJ3RydWUnKSBPSworRVZFTlQodXBkYXRlc3RhcnQp
CitFVkVOVCh1cGRhdGUpCitFVkVOVCh1cGRhdGVlbmQpCitFWFBFQ1RFRCAoc291cmNlQnVmZmVy
LnVwZGF0aW5nID09ICdmYWxzZScpIE9LCitFWFBFQ1RFRCAoc291cmNlQnVmZmVyLnZpZGVvVHJh
Y2tzLmxlbmd0aCA9PSAnMScpIE9LCitFWFBFQ1RFRCAoc291cmNlQnVmZmVyLmF1ZGlvVHJhY2tz
Lmxlbmd0aCA9PSAnMicpIE9LCitFWFBFQ1RFRCAoc291cmNlQnVmZmVyLnRleHRUcmFja3MubGVu
Z3RoID09ICczJykgT0sKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21l
ZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtdHJhY2tzLmh0bWwgYi9MYXlvdXRUZXN0cy9t
ZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXRyYWNrcy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRk
MWNjYmQ2Zjc4ZGU3OTNjYmY4MGJmNmYwYWY0NjI1NTUxZmUxZWYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXRyYWNrcy5odG1s
CkBAIC0wLDAgKzEsNTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8
dGl0bGU+bW9jay1tZWRpYS1zb3VyY2U8L3RpdGxlPgorICAgIDxzY3JpcHQgc3JjPSJtb2NrLW1l
ZGlhLXNvdXJjZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3ZpZGVvLXRlc3Qu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgdmFyIHNvdXJjZTsKKyAgICB2YXIgc291
cmNlQnVmZmVyOworICAgIHZhciBpbml0U2VnbWVudDsKKworICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKQorICAgICAgICBpbnRlcm5hbHMuaW5pdGlhbGl6ZU1vY2tNZWRpYVNvdXJjZSgpOworCisg
ICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOworCisg
ICAgICAgIHNvdXJjZSA9IG5ldyBNZWRpYVNvdXJjZSgpOworICAgICAgICB3YWl0Rm9yRXZlbnRP
bihzb3VyY2UsICdzb3VyY2VvcGVuJywgc291cmNlT3Blbik7CisgICAgICAgIHJ1bigndmlkZW8u
c3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChzb3VyY2UpJyk7CisgICAgfQorCisgICAgZnVuY3Rp
b24gc291cmNlT3BlbigpIHsKKyAgICAgICAgcnVuKCdzb3VyY2VCdWZmZXIgPSBzb3VyY2UuYWRk
U291cmNlQnVmZmVyKCJ2aWRlby9tb2NrOyBjb2RlY3M9bW9jayIpJyk7CisKKyAgICAgICAgd2Fp
dEZvckV2ZW50T24oc291cmNlQnVmZmVyLCAndXBkYXRlc3RhcnQnKTsKKyAgICAgICAgd2FpdEZv
ckV2ZW50T24oc291cmNlQnVmZmVyLCAndXBkYXRlJyk7CisgICAgICAgIHdhaXRGb3JFdmVudE9u
KHNvdXJjZUJ1ZmZlciwgJ3VwZGF0ZWVuZCcsIHVwZGF0ZUVuZCk7CisgICAgICAgIGluaXRTZWdt
ZW50ID0gbWFrZUFJbml0KDEwMCwgWworICAgICAgICAgICAgbWFrZUFUcmFjaygxLCAnbW9jaycs
IFRSQUNLX0tJTkQuVklERU8pLAorICAgICAgICAgICAgbWFrZUFUcmFjaygyLCAnbW9jaycsIFRS
QUNLX0tJTkQuQVVESU8pLAorICAgICAgICAgICAgbWFrZUFUcmFjaygzLCAnbW9jaycsIFRSQUNL
X0tJTkQuQVVESU8pLAorICAgICAgICAgICAgbWFrZUFUcmFjayg0LCAnbW9jaycsIFRSQUNLX0tJ
TkQuVEVYVCksCisgICAgICAgICAgICBtYWtlQVRyYWNrKDUsICdtb2NrJywgVFJBQ0tfS0lORC5U
RVhUKSwKKyAgICAgICAgICAgIG1ha2VBVHJhY2soNiwgJ21vY2snLCBUUkFDS19LSU5ELlRFWFQp
LAorICAgICAgICBdKTsKKyAgICAgICAgcnVuKCdzb3VyY2VCdWZmZXIuYXBwZW5kQnVmZmVyKGlu
aXRTZWdtZW50KScpOworICAgICAgICB0ZXN0RXhwZWN0ZWQoJ3NvdXJjZUJ1ZmZlci51cGRhdGlu
ZycsIHRydWUpOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiB1cGRhdGVFbmQoKSB7CisgICAg
ICAgIHRlc3RFeHBlY3RlZCgnc291cmNlQnVmZmVyLnVwZGF0aW5nJywgZmFsc2UpOworICAgICAg
ICB0ZXN0RXhwZWN0ZWQoJ3NvdXJjZUJ1ZmZlci52aWRlb1RyYWNrcy5sZW5ndGgnLCAxKTsKKyAg
ICAgICAgdGVzdEV4cGVjdGVkKCdzb3VyY2VCdWZmZXIuYXVkaW9UcmFja3MubGVuZ3RoJywgMik7
CisgICAgICAgIHRlc3RFeHBlY3RlZCgnc291cmNlQnVmZmVyLnRleHRUcmFja3MubGVuZ3RoJywg
Myk7CisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9CisKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICA8dmlkZW8+PC92aWRlbz4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tb2Nr
LW1lZGlhLXNvdXJjZS5qcyBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tb2NrLW1l
ZGlhLXNvdXJjZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNTUyYzYwMGJiZDA2MGY5NmNjOGYzMmZkZWUzZGE1
MTA3MTU0OWUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEtc291
cmNlL21vY2stbWVkaWEtc291cmNlLmpzCkBAIC0wLDAgKzEsNzIgQEAKK3ZhciBUUkFDS19LSU5E
ID0geworICAgIEFVRElPOiAwLAorICAgIFZJREVPOiAxLAorICAgIFRFWFQ6IDIsCit9OworCitm
dW5jdGlvbiBzdHJpbmdUb0FycmF5KHN0cmluZykgeworICAgIHJldHVybiBzdHJpbmcuc3BsaXQo
IiIpLm1hcChmdW5jdGlvbihjKXsgcmV0dXJuIGMuY2hhckNvZGVBdCgwKTsgfSk7Cit9CisKK2Z1
bmN0aW9uIG1ha2VBU2FtcGxlKHByZXNlbnRhdGlvblRpbWUsIGRlY29kZVRpbWUsIGR1cmF0aW9u
LCB0cmFja0lELCBmbGFncykgeworICAgIHZhciBieXRlTGVuZ3RoID0gMjk7CisgICAgdmFyIGJ1
ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihieXRlTGVuZ3RoKTsKKyAgICB2YXIgYXJyYXkgPSBuZXcg
VWludDhBcnJheShidWZmZXIpOworICAgIGFycmF5LnNldChzdHJpbmdUb0FycmF5KCdzbXBsJykp
OworCisgICAgdmFyIHZpZXcgPSBuZXcgRGF0YVZpZXcoYnVmZmVyKTsKKyAgICB2aWV3LnNldFVp
bnQzMig0LCBieXRlTGVuZ3RoLCB0cnVlKTsKKworICAgIHZhciB0aW1lU2NhbGUgPSAxMDAwOwor
ICAgIHZpZXcuc2V0SW50MzIoOCwgdGltZVNjYWxlLCB0cnVlKTsKKyAgICB2aWV3LnNldEludDMy
KDEyLCBwcmVzZW50YXRpb25UaW1lICogdGltZVNjYWxlLCB0cnVlKTsKKyAgICB2aWV3LnNldElu
dDMyKDE2LCBkZWNvZGVUaW1lICogdGltZVNjYWxlLCB0cnVlKTsKKyAgICB2aWV3LnNldEludDMy
KDIwLCBkdXJhdGlvbiAqIHRpbWVTY2FsZSwgdHJ1ZSk7CisgICAgdmlldy5zZXRJbnQzMigyNCwg
dHJhY2tJRCwgdHJ1ZSk7CisgICAgdmlldy5zZXRVaW50OCgyOCwgZmxhZ3MpOworCisgICAgcmV0
dXJuIGJ1ZmZlcjsKK30KKworZnVuY3Rpb24gbWFrZUFUcmFjayh0cmFja0lELCBjb2RlYywgZmxh
Z3MpIHsKKyAgICB2YXIgYnl0ZUxlbmd0aCA9IDE3OworICAgIHZhciBidWZmZXIgPSBuZXcgQXJy
YXlCdWZmZXIoYnl0ZUxlbmd0aCk7CisgICAgdmFyIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYnVm
ZmVyKTsKKyAgICBhcnJheS5zZXQoc3RyaW5nVG9BcnJheSgndHJhaycpKTsKKworICAgIHZhciB2
aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlcik7CisgICAgdmlldy5zZXRVaW50MzIoNCwgYnl0ZUxl
bmd0aCwgdHJ1ZSk7CisgICAgdmlldy5zZXRJbnQzMig4LCB0cmFja0lELCB0cnVlKTsKKworICAg
IHZhciBjb2RlY0FycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyLCAxMiwgNCk7CisgICAgY29k
ZWNBcnJheS5zZXQoc3RyaW5nVG9BcnJheShjb2RlYykpOworCisgICAgdmlldy5zZXRVaW50OCgx
NiwgZmxhZ3MsIHRydWUpOworCisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKworZnVuY3Rpb24gbWFr
ZUFJbml0KGR1cmF0aW9uLCB0cmFja3MpIHsKKyAgICB2YXIgYnl0ZUxlbmd0aCA9IDE2ICsgKDE3
ICogdHJhY2tzLmxlbmd0aCk7CisgICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihieXRl
TGVuZ3RoKTsKKyAgICB2YXIgYXJyYXkgPSBuZXcgVWludDhBcnJheShidWZmZXIpOworICAgIGFy
cmF5LnNldChzdHJpbmdUb0FycmF5KCdpbml0JykpOworCisgICAgdmFyIHZpZXcgPSBuZXcgRGF0
YVZpZXcoYnVmZmVyKTsKKyAgICB2YXIgdGltZVNjYWxlID0gMTAwMDsKKyAgICB2aWV3LnNldFVp
bnQzMig0LCBieXRlTGVuZ3RoLCB0cnVlKTsKKyAgICB2aWV3LnNldEludDMyKDgsIGR1cmF0aW9u
ICogdGltZVNjYWxlLCB0cnVlKTsKKyAgICB2aWV3LnNldEludDMyKDEyLCB0aW1lU2NhbGUsIHRy
dWUpOworCisgICAgdmFyIG9mZnNldCA9IDE2OworICAgIHRyYWNrcy5mb3JFYWNoKGZ1bmN0aW9u
KHRyYWNrKXsKKyAgICAgICAgdmFyIHNvdXJjZUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkodHJhY2sp
OworICAgICAgICB2YXIgZGVzdEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyLCBvZmZzZXQs
IHNvdXJjZUFycmF5LmJ5dGVMZW5ndGgpOworICAgICAgICBkZXN0QXJyYXkuc2V0KHNvdXJjZUFy
cmF5KTsKKyAgICAgICAgb2Zmc2V0ICs9IHNvdXJjZUFycmF5LmJ5dGVMZW5ndGg7CisgICAgfSk7
CisKKyAgICByZXR1cm4gYnVmZmVyOworfQorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21l
ZGlhL3ZpZGVvLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby10ZXN0LmpzCmluZGV4
IDA1OTgzN2JmZDI3YzFmMTc4Y2ZiMmY4Mjg1MDUyNmU0ZWZiMjBhYzMuLmNhYjNmZGZhMjdmMDA2
MWE2NzVlMzVlZjJhZjNmNzhmOGY3ZTY2YmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL21lZGlh
L3ZpZGVvLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tdGVzdC5qcwpAQCAt
MjAyLDYgKzIwMiwxMSBAQCBmdW5jdGlvbiB3YWl0Rm9yRXZlbnRBbmRUZXN0KGV2ZW50TmFtZSwg
dGVzdEZ1bmNTdHJpbmcsIGVuZGl0KQogICAgIG1lZGlhRWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KGV2ZW50TmFtZSwgX2V2ZW50Q2FsbGJhY2ssIHRydWUpOwogfQogCitmdW5jdGlvbiB3YWl0Rm9y
RXZlbnRPbihlbGVtZW50LCBldmVudE5hbWUsIGZ1bmMsIGVuZGl0LCBvbmVUaW1lT25seSkKK3sK
KyAgICB3YWl0Rm9yRXZlbnQoZXZlbnROYW1lLCBmdW5jLCBlbmRpdCwgb25lVGltZU9ubHksIGVs
ZW1lbnQpOworfQorCiBmdW5jdGlvbiB0ZXN0RE9NRXhjZXB0aW9uKHRlc3RTdHJpbmcsIGV4Y2Vw
dGlvblN0cmluZykKIHsKICAgICB0cnkgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>